summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 20:02:19 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:09:33 -0400
commitda66780a569712c23ae4f2996cfb4608a9f9d69d (patch)
tree217556029a78bc23ad4564720afc86de97228a04
parent615b22df4d423aded3613db7716943a2f389b047 (diff)
downloaddreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.gz
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.bz2
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.tar.xz
dreambuilder_modpack-da66780a569712c23ae4f2996cfb4608a9f9d69d.zip
copy all standard Dreambuilder mods in from the old subgame
(exactly as last supplied there, updates to these mods will follow later)
-rw-r--r--areas/LICENSE.txt502
-rw-r--r--areas/README.md104
-rw-r--r--areas/api.lua128
-rw-r--r--areas/chatcommands.lua404
-rw-r--r--areas/hud.lua46
-rw-r--r--areas/init.lua39
-rw-r--r--areas/interact.lua19
-rw-r--r--areas/internal.lua265
-rw-r--r--areas/legacy.lua138
-rw-r--r--areas/pos.lua255
-rw-r--r--areas/settings.lua43
-rw-r--r--areas/textures/areas_pos1.pngbin0 -> 142 bytes
-rw-r--r--areas/textures/areas_pos2.pngbin0 -> 157 bytes
-rw-r--r--bedrock/LICENSE.txt13
-rw-r--r--bedrock/depends.txt1
-rw-r--r--bedrock/init.lua41
-rw-r--r--bedrock/textures/bedrock_bedrock.pngbin0 -> 682 bytes
-rw-r--r--bedrock/textures/bedrock_deepstone.pngbin0 -> 373 bytes
-rw-r--r--bees/depends.txt1
-rw-r--r--bees/images/craft_bees_extractor.pngbin0 -> 966 bytes
-rw-r--r--bees/images/craft_bees_frame.pngbin0 -> 467 bytes
-rw-r--r--bees/images/craft_bees_grafting_tool.pngbin0 -> 485 bytes
-rw-r--r--bees/images/craft_bees_hive.pngbin0 -> 515 bytes
-rw-r--r--bees/images/craft_bees_smoker.pngbin0 -> 875 bytes
-rw-r--r--bees/images/screen_0.pngbin0 -> 298472 bytes
-rw-r--r--bees/init.lua804
-rw-r--r--bees/readme.txt53
-rw-r--r--bees/sounds/bees.1.oggbin0 -> 68509 bytes
-rw-r--r--bees/sounds/bees.2.oggbin0 -> 28042 bytes
-rw-r--r--bees/sounds/bees.3.oggbin0 -> 57883 bytes
-rw-r--r--bees/textures/bees_bottle_honey.pngbin0 -> 460 bytes
-rw-r--r--bees/textures/bees_comb.pngbin0 -> 628 bytes
-rw-r--r--bees/textures/bees_extractor.pngbin0 -> 366 bytes
-rw-r--r--bees/textures/bees_extractor_front.pngbin0 -> 445 bytes
-rw-r--r--bees/textures/bees_frame_empty.pngbin0 -> 642 bytes
-rw-r--r--bees/textures/bees_frame_full.pngbin0 -> 543 bytes
-rw-r--r--bees/textures/bees_grafting_tool.pngbin0 -> 200 bytes
-rw-r--r--bees/textures/bees_hive_artificial.pngbin0 -> 477 bytes
-rw-r--r--bees/textures/bees_hive_industrial.pngbin0 -> 346 bytes
-rw-r--r--bees/textures/bees_hive_wild.pngbin0 -> 465 bytes
-rw-r--r--bees/textures/bees_hive_wild_bottom.pngbin0 -> 582 bytes
-rw-r--r--bees/textures/bees_hive_wild_s.pngbin0 -> 135 bytes
-rw-r--r--bees/textures/bees_particle_bee.pngbin0 -> 200 bytes
-rw-r--r--bees/textures/bees_particle_bee_r.pngbin0 -> 202 bytes
-rw-r--r--bees/textures/bees_smoke_particle.pngbin0 -> 378 bytes
-rw-r--r--bees/textures/bees_smoker.pngbin0 -> 697 bytes
-rw-r--r--bees/textures/bees_strip.pngbin0 -> 336 bytes
-rw-r--r--bees/textures/bees_wax.pngbin0 -> 502 bytes
-rw-r--r--bees/textures/bees_wax_particle.pngbin0 -> 255 bytes
-rw-r--r--biome_lib/API.txt579
-rw-r--r--biome_lib/README.md30
-rw-r--r--biome_lib/depends.txt3
-rw-r--r--biome_lib/init.lua737
-rw-r--r--biome_lib/locale/de.txt5
-rw-r--r--biome_lib/locale/fr.txt5
-rw-r--r--biome_lib/locale/template.txt5
-rw-r--r--biome_lib/locale/tr.txt5
-rw-r--r--blox/depends.txt1
-rw-r--r--blox/init.lua592
-rw-r--r--blox/textures/Thumbs.dbbin0 -> 145920 bytes
-rw-r--r--blox/textures/blox_blackchecker.pngbin0 -> 589 bytes
-rw-r--r--blox/textures/blox_blackchecker_cobble.pngbin0 -> 612 bytes
-rw-r--r--blox/textures/blox_blackchecker_wood.pngbin0 -> 492 bytes
-rw-r--r--blox/textures/blox_blackcobble.pngbin0 -> 457 bytes
-rw-r--r--blox/textures/blox_blackcorner.pngbin0 -> 533 bytes
-rw-r--r--blox/textures/blox_blackcorner_cobble.pngbin0 -> 584 bytes
-rw-r--r--blox/textures/blox_blackcorner_wood.pngbin0 -> 488 bytes
-rw-r--r--blox/textures/blox_blackcross.pngbin0 -> 526 bytes
-rw-r--r--blox/textures/blox_blackcross_cobble.pngbin0 -> 608 bytes
-rw-r--r--blox/textures/blox_blackcross_wood.pngbin0 -> 471 bytes
-rw-r--r--blox/textures/blox_blackdiamond.pngbin0 -> 505 bytes
-rw-r--r--blox/textures/blox_blackdiamond_cobble.pngbin0 -> 597 bytes
-rw-r--r--blox/textures/blox_blackdiamond_wood.pngbin0 -> 498 bytes
-rw-r--r--blox/textures/blox_blackloop.pngbin0 -> 544 bytes
-rw-r--r--blox/textures/blox_blackloop_cobble.pngbin0 -> 607 bytes
-rw-r--r--blox/textures/blox_blackloop_wood.pngbin0 -> 480 bytes
-rw-r--r--blox/textures/blox_blackquarter.pngbin0 -> 515 bytes
-rw-r--r--blox/textures/blox_blackquarter_cobble.pngbin0 -> 596 bytes
-rw-r--r--blox/textures/blox_blackquarter_wood.pngbin0 -> 468 bytes
-rw-r--r--blox/textures/blox_blacksquare.pngbin0 -> 474 bytes
-rw-r--r--blox/textures/blox_blackstone.pngbin0 -> 416 bytes
-rw-r--r--blox/textures/blox_blackwood.pngbin0 -> 497 bytes
-rw-r--r--blox/textures/blox_bloodbane.pngbin0 -> 284 bytes
-rw-r--r--blox/textures/blox_bluechecker.pngbin0 -> 731 bytes
-rw-r--r--blox/textures/blox_bluechecker_cobble.pngbin0 -> 677 bytes
-rw-r--r--blox/textures/blox_bluechecker_wood.pngbin0 -> 656 bytes
-rw-r--r--blox/textures/blox_bluecobble.pngbin0 -> 561 bytes
-rw-r--r--blox/textures/blox_bluecorner.pngbin0 -> 724 bytes
-rw-r--r--blox/textures/blox_bluecorner_cobble.pngbin0 -> 654 bytes
-rw-r--r--blox/textures/blox_bluecorner_wood.pngbin0 -> 676 bytes
-rw-r--r--blox/textures/blox_bluecross.pngbin0 -> 661 bytes
-rw-r--r--blox/textures/blox_bluecross_cobble.pngbin0 -> 674 bytes
-rw-r--r--blox/textures/blox_bluecross_wood.pngbin0 -> 629 bytes
-rw-r--r--blox/textures/blox_bluediamond.pngbin0 -> 731 bytes
-rw-r--r--blox/textures/blox_bluediamond_cobble.pngbin0 -> 660 bytes
-rw-r--r--blox/textures/blox_bluediamond_wood.pngbin0 -> 699 bytes
-rw-r--r--blox/textures/blox_blueloop.pngbin0 -> 693 bytes
-rw-r--r--blox/textures/blox_blueloop_cobble.pngbin0 -> 666 bytes
-rw-r--r--blox/textures/blox_blueloop_wood.pngbin0 -> 600 bytes
-rw-r--r--blox/textures/blox_bluequarter.pngbin0 -> 699 bytes
-rw-r--r--blox/textures/blox_bluequarter_cobble.pngbin0 -> 663 bytes
-rw-r--r--blox/textures/blox_bluequarter_wood.pngbin0 -> 653 bytes
-rw-r--r--blox/textures/blox_bluesquare.pngbin0 -> 867 bytes
-rw-r--r--blox/textures/blox_bluestone.pngbin0 -> 766 bytes
-rw-r--r--blox/textures/blox_bluewood.pngbin0 -> 852 bytes
-rw-r--r--blox/textures/blox_cyanchecker.pngbin0 -> 779 bytes
-rw-r--r--blox/textures/blox_cyanchecker_cobble.pngbin0 -> 673 bytes
-rw-r--r--blox/textures/blox_cyanchecker_wood.pngbin0 -> 690 bytes
-rw-r--r--blox/textures/blox_cyancobble.pngbin0 -> 540 bytes
-rw-r--r--blox/textures/blox_cyancorner.pngbin0 -> 739 bytes
-rw-r--r--blox/textures/blox_cyancorner_cobble.pngbin0 -> 644 bytes
-rw-r--r--blox/textures/blox_cyancorner_wood.pngbin0 -> 726 bytes
-rw-r--r--blox/textures/blox_cyancross.pngbin0 -> 705 bytes
-rw-r--r--blox/textures/blox_cyancross_cobble.pngbin0 -> 669 bytes
-rw-r--r--blox/textures/blox_cyancross_wood.pngbin0 -> 659 bytes
-rw-r--r--blox/textures/blox_cyandiamond.pngbin0 -> 752 bytes
-rw-r--r--blox/textures/blox_cyandiamond_cobble.pngbin0 -> 654 bytes
-rw-r--r--blox/textures/blox_cyandiamond_wood.pngbin0 -> 725 bytes
-rw-r--r--blox/textures/blox_cyanloop.pngbin0 -> 713 bytes
-rw-r--r--blox/textures/blox_cyanloop_cobble.pngbin0 -> 661 bytes
-rw-r--r--blox/textures/blox_cyanloop_wood.pngbin0 -> 619 bytes
-rw-r--r--blox/textures/blox_cyanquarter.pngbin0 -> 691 bytes
-rw-r--r--blox/textures/blox_cyanquarter_cobble.pngbin0 -> 659 bytes
-rw-r--r--blox/textures/blox_cyanquarter_wood.pngbin0 -> 677 bytes
-rw-r--r--blox/textures/blox_cyansquare.pngbin0 -> 869 bytes
-rw-r--r--blox/textures/blox_cyanstone.pngbin0 -> 819 bytes
-rw-r--r--blox/textures/blox_cyanwood.pngbin0 -> 891 bytes
-rw-r--r--blox/textures/blox_glowdust.pngbin0 -> 332 bytes
-rw-r--r--blox/textures/blox_glowore.pngbin0 -> 299 bytes
-rw-r--r--blox/textures/blox_glowstone.pngbin0 -> 609 bytes
-rw-r--r--blox/textures/blox_greenchecker.pngbin0 -> 825 bytes
-rw-r--r--blox/textures/blox_greenchecker_cobble.pngbin0 -> 679 bytes
-rw-r--r--blox/textures/blox_greenchecker_wood.pngbin0 -> 657 bytes
-rw-r--r--blox/textures/blox_greencobble.pngbin0 -> 582 bytes
-rw-r--r--blox/textures/blox_greencorner.pngbin0 -> 724 bytes
-rw-r--r--blox/textures/blox_greencorner_cobble.pngbin0 -> 669 bytes
-rw-r--r--blox/textures/blox_greencorner_wood.pngbin0 -> 677 bytes
-rw-r--r--blox/textures/blox_greencross.pngbin0 -> 691 bytes
-rw-r--r--blox/textures/blox_greencross_cobble.pngbin0 -> 675 bytes
-rw-r--r--blox/textures/blox_greencross_wood.pngbin0 -> 629 bytes
-rw-r--r--blox/textures/blox_greendiamond.pngbin0 -> 717 bytes
-rw-r--r--blox/textures/blox_greendiamond_cobble.pngbin0 -> 669 bytes
-rw-r--r--blox/textures/blox_greendiamond_wood.pngbin0 -> 688 bytes
-rw-r--r--blox/textures/blox_greenloop.pngbin0 -> 707 bytes
-rw-r--r--blox/textures/blox_greenloop_cobble.pngbin0 -> 673 bytes
-rw-r--r--blox/textures/blox_greenloop_wood.pngbin0 -> 593 bytes
-rw-r--r--blox/textures/blox_greenquarter.pngbin0 -> 692 bytes
-rw-r--r--blox/textures/blox_greenquarter_cobble.pngbin0 -> 677 bytes
-rw-r--r--blox/textures/blox_greenquarter_wood.pngbin0 -> 652 bytes
-rw-r--r--blox/textures/blox_greensquare.pngbin0 -> 815 bytes
-rw-r--r--blox/textures/blox_greenstone.pngbin0 -> 757 bytes
-rw-r--r--blox/textures/blox_greenwood.pngbin0 -> 852 bytes
-rw-r--r--blox/textures/blox_orangechecker.pngbin0 -> 695 bytes
-rw-r--r--blox/textures/blox_orangechecker_cobble.pngbin0 -> 666 bytes
-rw-r--r--blox/textures/blox_orangechecker_wood.pngbin0 -> 674 bytes
-rw-r--r--blox/textures/blox_orangecobble.pngbin0 -> 541 bytes
-rw-r--r--blox/textures/blox_orangecorner.pngbin0 -> 713 bytes
-rw-r--r--blox/textures/blox_orangecorner_cobble.pngbin0 -> 638 bytes
-rw-r--r--blox/textures/blox_orangecorner_wood.pngbin0 -> 696 bytes
-rw-r--r--blox/textures/blox_orangecross.pngbin0 -> 610 bytes
-rw-r--r--blox/textures/blox_orangecross_cobble.pngbin0 -> 662 bytes
-rw-r--r--blox/textures/blox_orangecross_wood.pngbin0 -> 635 bytes
-rw-r--r--blox/textures/blox_orangediamond.pngbin0 -> 714 bytes
-rw-r--r--blox/textures/blox_orangediamond_cobble.pngbin0 -> 648 bytes
-rw-r--r--blox/textures/blox_orangediamond_wood.pngbin0 -> 708 bytes
-rw-r--r--blox/textures/blox_orangeloop.pngbin0 -> 675 bytes
-rw-r--r--blox/textures/blox_orangeloop_cobble.pngbin0 -> 655 bytes
-rw-r--r--blox/textures/blox_orangeloop_wood.pngbin0 -> 599 bytes
-rw-r--r--blox/textures/blox_orangequarter.pngbin0 -> 696 bytes
-rw-r--r--blox/textures/blox_orangequarter_cobble.pngbin0 -> 652 bytes
-rw-r--r--blox/textures/blox_orangequarter_wood.pngbin0 -> 672 bytes
-rw-r--r--blox/textures/blox_orangesquare.pngbin0 -> 842 bytes
-rw-r--r--blox/textures/blox_orangestone.pngbin0 -> 776 bytes
-rw-r--r--blox/textures/blox_orangewood.pngbin0 -> 872 bytes
-rw-r--r--blox/textures/blox_pinkchecker.pngbin0 -> 813 bytes
-rw-r--r--blox/textures/blox_pinkchecker_cobble.pngbin0 -> 646 bytes
-rw-r--r--blox/textures/blox_pinkchecker_wood.pngbin0 -> 657 bytes
-rw-r--r--blox/textures/blox_pinkcobble.pngbin0 -> 522 bytes
-rw-r--r--blox/textures/blox_pinkcorner.pngbin0 -> 724 bytes
-rw-r--r--blox/textures/blox_pinkcorner_cobble.pngbin0 -> 624 bytes
-rw-r--r--blox/textures/blox_pinkcorner_wood.pngbin0 -> 674 bytes
-rw-r--r--blox/textures/blox_pinkcross.pngbin0 -> 726 bytes
-rw-r--r--blox/textures/blox_pinkcross_cobble.pngbin0 -> 646 bytes
-rw-r--r--blox/textures/blox_pinkcross_wood.pngbin0 -> 601 bytes
-rw-r--r--blox/textures/blox_pinkdiamond.pngbin0 -> 700 bytes
-rw-r--r--blox/textures/blox_pinkdiamond_cobble.pngbin0 -> 629 bytes
-rw-r--r--blox/textures/blox_pinkdiamond_wood.pngbin0 -> 671 bytes
-rw-r--r--blox/textures/blox_pinkloop.pngbin0 -> 674 bytes
-rw-r--r--blox/textures/blox_pinkloop_cobble.pngbin0 -> 639 bytes
-rw-r--r--blox/textures/blox_pinkloop_wood.pngbin0 -> 583 bytes
-rw-r--r--blox/textures/blox_pinkquarter.pngbin0 -> 687 bytes
-rw-r--r--blox/textures/blox_pinkquarter_cobble.pngbin0 -> 635 bytes
-rw-r--r--blox/textures/blox_pinkquarter_wood.pngbin0 -> 639 bytes
-rw-r--r--blox/textures/blox_pinksquare.pngbin0 -> 784 bytes
-rw-r--r--blox/textures/blox_pinkstone.pngbin0 -> 717 bytes
-rw-r--r--blox/textures/blox_pinkwood.pngbin0 -> 831 bytes
-rw-r--r--blox/textures/blox_purplechecker.pngbin0 -> 786 bytes
-rw-r--r--blox/textures/blox_purplechecker_cobble.pngbin0 -> 666 bytes
-rw-r--r--blox/textures/blox_purplechecker_wood.pngbin0 -> 690 bytes
-rw-r--r--blox/textures/blox_purplecobble.pngbin0 -> 544 bytes
-rw-r--r--blox/textures/blox_purplecorner.pngbin0 -> 805 bytes
-rw-r--r--blox/textures/blox_purplecorner_cobble.pngbin0 -> 633 bytes
-rw-r--r--blox/textures/blox_purplecorner_wood.pngbin0 -> 708 bytes
-rw-r--r--blox/textures/blox_purplecross.pngbin0 -> 726 bytes
-rw-r--r--blox/textures/blox_purplecross_cobble.pngbin0 -> 667 bytes
-rw-r--r--blox/textures/blox_purplecross_wood.pngbin0 -> 646 bytes
-rw-r--r--blox/textures/blox_purplediamond.pngbin0 -> 801 bytes
-rw-r--r--blox/textures/blox_purplediamond_cobble.pngbin0 -> 649 bytes
-rw-r--r--blox/textures/blox_purplediamond_wood.pngbin0 -> 722 bytes
-rw-r--r--blox/textures/blox_purpleloop.pngbin0 -> 749 bytes
-rw-r--r--blox/textures/blox_purpleloop_cobble.pngbin0 -> 655 bytes
-rw-r--r--blox/textures/blox_purpleloop_wood.pngbin0 -> 614 bytes
-rw-r--r--blox/textures/blox_purplequarter.pngbin0 -> 772 bytes
-rw-r--r--blox/textures/blox_purplequarter_cobble.pngbin0 -> 652 bytes
-rw-r--r--blox/textures/blox_purplequarter_wood.pngbin0 -> 679 bytes
-rw-r--r--blox/textures/blox_purplesquare.pngbin0 -> 928 bytes
-rw-r--r--blox/textures/blox_purplestone.pngbin0 -> 873 bytes
-rw-r--r--blox/textures/blox_purplewood.pngbin0 -> 905 bytes
-rw-r--r--blox/textures/blox_redchecker.pngbin0 -> 743 bytes
-rw-r--r--blox/textures/blox_redchecker_cobble.pngbin0 -> 673 bytes
-rw-r--r--blox/textures/blox_redchecker_wood.pngbin0 -> 565 bytes
-rw-r--r--blox/textures/blox_redcobble.pngbin0 -> 543 bytes
-rw-r--r--blox/textures/blox_redcorner.pngbin0 -> 586 bytes
-rw-r--r--blox/textures/blox_redcorner_cobble.pngbin0 -> 647 bytes
-rw-r--r--blox/textures/blox_redcorner_wood.pngbin0 -> 559 bytes
-rw-r--r--blox/textures/blox_redcross.pngbin0 -> 673 bytes
-rw-r--r--blox/textures/blox_redcross_cobble.pngbin0 -> 652 bytes
-rw-r--r--blox/textures/blox_redcross_wood.pngbin0 -> 531 bytes
-rw-r--r--blox/textures/blox_reddiamond.pngbin0 -> 590 bytes
-rw-r--r--blox/textures/blox_reddiamond_cobble.pngbin0 -> 646 bytes
-rw-r--r--blox/textures/blox_reddiamond_wood.pngbin0 -> 564 bytes
-rw-r--r--blox/textures/blox_redloop.pngbin0 -> 601 bytes
-rw-r--r--blox/textures/blox_redloop_cobble.pngbin0 -> 649 bytes
-rw-r--r--blox/textures/blox_redloop_wood.pngbin0 -> 526 bytes
-rw-r--r--blox/textures/blox_redquarter.pngbin0 -> 575 bytes
-rw-r--r--blox/textures/blox_redquarter_cobble.pngbin0 -> 647 bytes
-rw-r--r--blox/textures/blox_redquarter_wood.pngbin0 -> 539 bytes
-rw-r--r--blox/textures/blox_redsquare.pngbin0 -> 580 bytes
-rw-r--r--blox/textures/blox_redstone.pngbin0 -> 530 bytes
-rw-r--r--blox/textures/blox_redwood.pngbin0 -> 648 bytes
-rw-r--r--blox/textures/blox_whitechecker.pngbin0 -> 680 bytes
-rw-r--r--blox/textures/blox_whitechecker_cobble.pngbin0 -> 625 bytes
-rw-r--r--blox/textures/blox_whitechecker_wood.pngbin0 -> 571 bytes
-rw-r--r--blox/textures/blox_whitecobble.pngbin0 -> 494 bytes
-rw-r--r--blox/textures/blox_whitecorner.pngbin0 -> 625 bytes
-rw-r--r--blox/textures/blox_whitecorner_cobble.pngbin0 -> 608 bytes
-rw-r--r--blox/textures/blox_whitecorner_wood.pngbin0 -> 603 bytes
-rw-r--r--blox/textures/blox_whitecross.pngbin0 -> 613 bytes
-rw-r--r--blox/textures/blox_whitecross_cobble.pngbin0 -> 624 bytes
-rw-r--r--blox/textures/blox_whitecross_wood.pngbin0 -> 553 bytes
-rw-r--r--blox/textures/blox_whitediamond.pngbin0 -> 598 bytes
-rw-r--r--blox/textures/blox_whitediamond_cobble.pngbin0 -> 611 bytes
-rw-r--r--blox/textures/blox_whitediamond_wood.pngbin0 -> 587 bytes
-rw-r--r--blox/textures/blox_whiteloop.pngbin0 -> 611 bytes
-rw-r--r--blox/textures/blox_whiteloop_cobble.pngbin0 -> 626 bytes
-rw-r--r--blox/textures/blox_whiteloop_wood.pngbin0 -> 533 bytes
-rw-r--r--blox/textures/blox_whitequarter.pngbin0 -> 599 bytes
-rw-r--r--blox/textures/blox_whitequarter_cobble.pngbin0 -> 617 bytes
-rw-r--r--blox/textures/blox_whitequarter_wood.pngbin0 -> 578 bytes
-rw-r--r--blox/textures/blox_whitesquare.pngbin0 -> 600 bytes
-rw-r--r--blox/textures/blox_whitestone.pngbin0 -> 564 bytes
-rw-r--r--blox/textures/blox_whitewood.pngbin0 -> 687 bytes
-rw-r--r--blox/textures/blox_yellowchecker.pngbin0 -> 719 bytes
-rw-r--r--blox/textures/blox_yellowchecker_cobble.pngbin0 -> 681 bytes
-rw-r--r--blox/textures/blox_yellowchecker_wood.pngbin0 -> 656 bytes
-rw-r--r--blox/textures/blox_yellowcobble.pngbin0 -> 557 bytes
-rw-r--r--blox/textures/blox_yellowcorner.pngbin0 -> 735 bytes
-rw-r--r--blox/textures/blox_yellowcorner_cobble.pngbin0 -> 654 bytes
-rw-r--r--blox/textures/blox_yellowcorner_wood.pngbin0 -> 687 bytes
-rw-r--r--blox/textures/blox_yellowcross.pngbin0 -> 648 bytes
-rw-r--r--blox/textures/blox_yellowcross_cobble.pngbin0 -> 665 bytes
-rw-r--r--blox/textures/blox_yellowcross_wood.pngbin0 -> 642 bytes
-rw-r--r--blox/textures/blox_yellowdiamond.pngbin0 -> 743 bytes
-rw-r--r--blox/textures/blox_yellowdiamond_cobble.pngbin0 -> 663 bytes
-rw-r--r--blox/textures/blox_yellowdiamond_wood.pngbin0 -> 701 bytes
-rw-r--r--blox/textures/blox_yellowloop.pngbin0 -> 705 bytes
-rw-r--r--blox/textures/blox_yellowloop_cobble.pngbin0 -> 668 bytes
-rw-r--r--blox/textures/blox_yellowloop_wood.pngbin0 -> 604 bytes
-rw-r--r--blox/textures/blox_yellowquarter.pngbin0 -> 712 bytes
-rw-r--r--blox/textures/blox_yellowquarter_cobble.pngbin0 -> 662 bytes
-rw-r--r--blox/textures/blox_yellowquarter_wood.pngbin0 -> 668 bytes
-rw-r--r--blox/textures/blox_yellowsquare.pngbin0 -> 841 bytes
-rw-r--r--blox/textures/blox_yellowstone.pngbin0 -> 767 bytes
-rw-r--r--blox/textures/blox_yellowwood.pngbin0 -> 858 bytes
-rw-r--r--bobblocks/blocks.lua844
-rw-r--r--bobblocks/depends.txt2
-rw-r--r--bobblocks/health.lua95
-rw-r--r--bobblocks/init.lua11
-rw-r--r--bobblocks/readme.txt53
-rw-r--r--bobblocks/sounds/bobblocks_glassblock.oggbin0 -> 15029 bytes
-rw-r--r--bobblocks/sounds/bobblocks_health.oggbin0 -> 8811 bytes
-rw-r--r--bobblocks/sounds/bobblocks_trap_fall.oggbin0 -> 12025 bytes
-rw-r--r--bobblocks/sounds/bobblocks_trap_fall_major.oggbin0 -> 23782 bytes
-rw-r--r--bobblocks/textures/bobblocks_blueblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_btm.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_btm_sides.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_greenblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_greyblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_health_off.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_health_on.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_health_one_sides.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_indigoblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_invbluepole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invgreenpole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invgreypole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invindigopole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invorangepole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invredpole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invvioletpole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invwhitepole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_invyellowpole.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_majorspike.pngbin0 -> 3190 bytes
-rw-r--r--bobblocks/textures/bobblocks_minorspike.pngbin0 -> 3190 bytes
-rw-r--r--bobblocks/textures/bobblocks_orangeblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_redblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_redblock_off.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_trap_set.pngbin0 -> 3211 bytes
-rw-r--r--bobblocks/textures/bobblocks_violetblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_whiteblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/textures/bobblocks_yellowblock.pngbin0 -> 3193 bytes
-rw-r--r--bobblocks/trap.lua0
-rw-r--r--campfire/depends.txt1
-rw-r--r--campfire/init.lua180
-rw-r--r--campfire/textures/CampFire.pngbin0 -> 992 bytes
-rw-r--r--campfire/textures/CampFire_off.pngbin0 -> 253 bytes
-rw-r--r--carbone_mobs/README.txt42
-rw-r--r--carbone_mobs/api.lua556
-rw-r--r--carbone_mobs/depends.txt1
-rw-r--r--carbone_mobs/init.lua796
-rw-r--r--carbone_mobs/models/mobs_dirt_monster.pngbin0 -> 4276 bytes
-rw-r--r--carbone_mobs/models/mobs_dungeon_master.pngbin0 -> 1812 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_dungeon_master.x2830
-rw-r--r--carbone_mobs/models/mobs_oerkki.pngbin0 -> 1640 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_oerkki.x3858
-rw-r--r--carbone_mobs/models/mobs_rat.pngbin0 -> 1841 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_rat.x699
-rw-r--r--carbone_mobs/models/mobs_rhino.pngbin0 -> 825 bytes
-rw-r--r--carbone_mobs/models/mobs_sand_monster.pngbin0 -> 1580 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_sand_monster.x8573
-rw-r--r--carbone_mobs/models/mobs_sheep.pngbin0 -> 2020 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_sheep.x7169
-rw-r--r--carbone_mobs/models/mobs_sheep_shaved.pngbin0 -> 2853 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_sheep_shaved.x4592
-rw-r--r--carbone_mobs/models/mobs_stone_monster.pngbin0 -> 3471 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_stone_monster.x2753
-rw-r--r--carbone_mobs/models/mobs_tree_monster.pngbin0 -> 2882 bytes
-rwxr-xr-xcarbone_mobs/models/mobs_tree_monster.x4009
-rw-r--r--carbone_mobs/sounds/hit.oggbin0 -> 6411 bytes
-rw-r--r--carbone_mobs/sounds/hit_death.oggbin0 -> 13129 bytes
-rw-r--r--carbone_mobs/sounds/mobs_bullet.oggbin0 -> 9265 bytes
-rw-r--r--carbone_mobs/sounds/mobs_fireball.oggbin0 -> 17144 bytes
-rw-r--r--carbone_mobs/sounds/mobs_fireball_explode.oggbin0 -> 26617 bytes
-rw-r--r--carbone_mobs/sounds/mobs_punch.oggbin0 -> 13681 bytes
-rw-r--r--carbone_mobs/sounds/player_damage.1.oggbin0 -> 4625 bytes
-rw-r--r--carbone_mobs/sounds/player_damage.2.oggbin0 -> 5072 bytes
-rw-r--r--carbone_mobs/sounds/player_death.oggbin0 -> 24274 bytes
-rw-r--r--carbone_mobs/sounds/player_falling_damage.oggbin0 -> 7851 bytes
-rw-r--r--carbone_mobs/textures/mobs_bullet.pngbin0 -> 159 bytes
-rw-r--r--carbone_mobs/textures/mobs_cooked_rat.pngbin0 -> 355 bytes
-rw-r--r--carbone_mobs/textures/mobs_fireball.pngbin0 -> 609 bytes
-rw-r--r--carbone_mobs/textures/mobs_meat.pngbin0 -> 511 bytes
-rw-r--r--carbone_mobs/textures/mobs_meat_raw.pngbin0 -> 518 bytes
-rw-r--r--carbone_mobs/textures/mobs_rat_inventory.pngbin0 -> 306 bytes
-rw-r--r--carts/README.txt25
-rw-r--r--carts/depends.txt1
-rw-r--r--carts/functions.lua56
-rw-r--r--carts/init.lua595
-rw-r--r--carts/models/cart.pngbin0 -> 422 bytes
-rw-r--r--carts/models/cart.x339
-rw-r--r--carts/textures/cart_bottom.pngbin0 -> 154 bytes
-rw-r--r--carts/textures/cart_side.pngbin0 -> 192 bytes
-rw-r--r--carts/textures/cart_top.pngbin0 -> 262 bytes
-rw-r--r--carts/textures/carts_rail_brk.pngbin0 -> 524 bytes
-rw-r--r--carts/textures/carts_rail_crossing_brk.pngbin0 -> 498 bytes
-rw-r--r--carts/textures/carts_rail_crossing_pwr.pngbin0 -> 604 bytes
-rw-r--r--carts/textures/carts_rail_curved_brk.pngbin0 -> 555 bytes
-rw-r--r--carts/textures/carts_rail_curved_pwr.pngbin0 -> 577 bytes
-rw-r--r--carts/textures/carts_rail_pwr.pngbin0 -> 533 bytes
-rw-r--r--carts/textures/carts_rail_t_junction_brk.pngbin0 -> 548 bytes
-rw-r--r--carts/textures/carts_rail_t_junction_pwr.pngbin0 -> 584 bytes
-rw-r--r--castle/LICENSE674
-rw-r--r--castle/README.txt35
-rw-r--r--castle/arrow.lua92
-rw-r--r--castle/arrowslit.lua133
-rw-r--r--castle/crossbow.lua48
-rw-r--r--castle/depends.txt8
-rw-r--r--castle/init.lua469
-rw-r--r--castle/jailbars.lua113
-rw-r--r--castle/murder_hole.lua50
-rw-r--r--castle/orbs.lua0
-rw-r--r--castle/pillars.lua103
-rw-r--r--castle/rope.lua121
-rw-r--r--castle/shields_decor.lua100
-rw-r--r--castle/sounds/throwing_sound.oggbin0 -> 11011 bytes
-rw-r--r--castle/tapestry.lua180
-rw-r--r--castle/textures/castle_arrow.pngbin0 -> 213 bytes
-rw-r--r--castle/textures/castle_arrow_2.pngbin0 -> 208 bytes
-rw-r--r--castle/textures/castle_arrow_back.pngbin0 -> 228 bytes
-rw-r--r--castle/textures/castle_arrow_front.pngbin0 -> 190 bytes
-rw-r--r--castle/textures/castle_battleaxe.pngbin0 -> 358 bytes
-rw-r--r--castle/textures/castle_broadsword.pngbin0 -> 75 bytes
-rw-r--r--castle/textures/castle_corner_stonewall1.pngbin0 -> 9720 bytes
-rw-r--r--castle/textures/castle_corner_stonewall2.pngbin0 -> 9726 bytes
-rw-r--r--castle/textures/castle_crate.pngbin0 -> 4447 bytes
-rw-r--r--castle/textures/castle_crate_top.pngbin0 -> 3720 bytes
-rw-r--r--castle/textures/castle_crossbow.pngbin0 -> 576 bytes
-rw-r--r--castle/textures/castle_day.pngbin0 -> 297 bytes
-rw-r--r--castle/textures/castle_dungeon_stone.pngbin0 -> 5596 bytes
-rw-r--r--castle/textures/castle_grey.pngbin0 -> 70 bytes
-rw-r--r--castle/textures/castle_hide.pngbin0 -> 9991 bytes
-rw-r--r--castle/textures/castle_ironbound_chest_back.pngbin0 -> 415 bytes
-rw-r--r--castle/textures/castle_ironbound_chest_front.pngbin0 -> 442 bytes
-rw-r--r--castle/textures/castle_ironbound_chest_side.pngbin0 -> 332 bytes
-rw-r--r--castle/textures/castle_ironbound_chest_top.pngbin0 -> 408 bytes
-rw-r--r--castle/textures/castle_jail_door_bottom.pngbin0 -> 524 bytes
-rw-r--r--castle/textures/castle_jail_door_inv.pngbin0 -> 3843 bytes
-rw-r--r--castle/textures/castle_jail_door_top.pngbin0 -> 532 bytes
-rw-r--r--castle/textures/castle_jailbars.pngbin0 -> 455 bytes
-rw-r--r--castle/textures/castle_jailbars_half.pngbin0 -> 526 bytes
-rw-r--r--castle/textures/castle_night.pngbin0 -> 308 bytes
-rw-r--r--castle/textures/castle_oak_door_bottom.pngbin0 -> 650 bytes
-rw-r--r--castle/textures/castle_oak_door_inv.pngbin0 -> 1038 bytes
-rw-r--r--castle/textures/castle_oak_door_top.pngbin0 -> 638 bytes
-rw-r--r--castle/textures/castle_pavement_brick.pngbin0 -> 10244 bytes
-rw-r--r--castle/textures/castle_ropebox_side_1.pngbin0 -> 445 bytes
-rw-r--r--castle/textures/castle_ropebox_side_2.pngbin0 -> 550 bytes
-rw-r--r--castle/textures/castle_ropebox_top.pngbin0 -> 550 bytes
-rw-r--r--castle/textures/castle_ropes.pngbin0 -> 286 bytes
-rw-r--r--castle/textures/castle_rubble.pngbin0 -> 7940 bytes
-rw-r--r--castle/textures/castle_shield_back.pngbin0 -> 7423 bytes
-rw-r--r--castle/textures/castle_shield_front.pngbin0 -> 2073 bytes
-rw-r--r--castle/textures/castle_shield_front_2.pngbin0 -> 3470 bytes
-rw-r--r--castle/textures/castle_shield_front_3.pngbin0 -> 3974 bytes
-rw-r--r--castle/textures/castle_shield_side.pngbin0 -> 200 bytes
-rw-r--r--castle/textures/castle_shield_side_2.pngbin0 -> 187 bytes
-rw-r--r--castle/textures/castle_shield_side_3.pngbin0 -> 252 bytes
-rw-r--r--castle/textures/castle_slate.pngbin0 -> 789 bytes
-rw-r--r--castle/textures/castle_space.pngbin0 -> 151 bytes
-rw-r--r--castle/textures/castle_steel.pngbin0 -> 2096 bytes
-rw-r--r--castle/textures/castle_stonewall.pngbin0 -> 8105 bytes
-rw-r--r--castle/textures/castle_straw_bale.pngbin0 -> 9561 bytes
-rw-r--r--castle/textures/castle_street_light.pngbin0 -> 1895 bytes
-rw-r--r--castle/textures/castle_workbench_1.pngbin0 -> 6244 bytes
-rw-r--r--castle/textures/castle_workbench_2.pngbin0 -> 6037 bytes
-rw-r--r--castle/textures/castle_workbench_top.pngbin0 -> 8226 bytes
-rw-r--r--castle/textures/door_jail.pngbin0 -> 70 bytes
-rw-r--r--castle/textures/door_oak.pngbin0 -> 70 bytes
-rw-r--r--castle/textures/door_papyrus.pngbin0 -> 70 bytes
-rw-r--r--castle/town_item.lua306
-rw-r--r--caverealms/README.md14
-rw-r--r--caverealms/config.lua45
-rw-r--r--caverealms/crafting.lua43
-rw-r--r--caverealms/depends.txt1
-rw-r--r--caverealms/falling_ice.lua210
-rw-r--r--caverealms/functions.lua378
-rw-r--r--caverealms/init.lua297
-rw-r--r--caverealms/nodes.lua325
-rw-r--r--caverealms/textures/Thumbs.dbbin0 -> 18944 bytes
-rw-r--r--caverealms/textures/caverealms_algae.pngbin0 -> 971 bytes
-rw-r--r--caverealms/textures/caverealms_algae_side.pngbin0 -> 528 bytes
-rw-r--r--caverealms/textures/caverealms_fungi.pngbin0 -> 249 bytes
-rw-r--r--caverealms/textures/caverealms_glow_crystal.pngbin0 -> 735 bytes
-rw-r--r--caverealms/textures/caverealms_glow_emerald.pngbin0 -> 714 bytes
-rw-r--r--caverealms/textures/caverealms_glow_emerald_ore.pngbin0 -> 686 bytes
-rw-r--r--caverealms/textures/caverealms_glow_gem.pngbin0 -> 436 bytes
-rw-r--r--caverealms/textures/caverealms_glow_mese.pngbin0 -> 756 bytes
-rw-r--r--caverealms/textures/caverealms_glow_ore.pngbin0 -> 664 bytes
-rw-r--r--caverealms/textures/caverealms_glow_worm.pngbin0 -> 318 bytes
-rw-r--r--caverealms/textures/caverealms_icicle_down.pngbin0 -> 260 bytes
-rw-r--r--caverealms/textures/caverealms_icicle_up.pngbin0 -> 249 bytes
-rw-r--r--caverealms/textures/caverealms_lichen.pngbin0 -> 925 bytes
-rw-r--r--caverealms/textures/caverealms_lichen_side.pngbin0 -> 533 bytes
-rw-r--r--caverealms/textures/caverealms_moss.pngbin0 -> 947 bytes
-rw-r--r--caverealms/textures/caverealms_moss_side.pngbin0 -> 519 bytes
-rw-r--r--caverealms/textures/caverealms_mushroom_cap.pngbin0 -> 307 bytes
-rw-r--r--caverealms/textures/caverealms_mushroom_cap_legacy.pngbin0 -> 317 bytes
-rw-r--r--caverealms/textures/caverealms_mushroom_gills.pngbin0 -> 221 bytes
-rw-r--r--caverealms/textures/caverealms_mushroom_stem.pngbin0 -> 451 bytes
-rw-r--r--caverealms/textures/caverealms_mycena.pngbin0 -> 356 bytes
-rw-r--r--caverealms/textures/caverealms_mycena_powder.pngbin0 -> 290 bytes
-rw-r--r--caverealms/textures/caverealms_thin_ice.pngbin0 -> 870 bytes
-rw-r--r--coloredwood/LICENSE240
-rw-r--r--coloredwood/README75
-rw-r--r--coloredwood/depends.txt3
-rw-r--r--coloredwood/fence.lua301
-rw-r--r--coloredwood/init.lua137
-rw-r--r--coloredwood/stick.lua152
-rw-r--r--coloredwood/textures/coloredwood_fence_aqua.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_aqua_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_black.pngbin0 -> 205 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_blue.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_blue_s50.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_cyan.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_cyan_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_aqua.pngbin0 -> 373 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_aqua_s50.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_blue.pngbin0 -> 356 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_blue_s50.pngbin0 -> 344 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_cyan.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_cyan_s50.pngbin0 -> 344 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_green.pngbin0 -> 356 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_green_s50.pngbin0 -> 344 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_lime.pngbin0 -> 373 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_lime_s50.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_magenta.pngbin0 -> 298 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_magenta_s50.pngbin0 -> 344 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_orange.pngbin0 -> 373 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_orange_s50.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_red.pngbin0 -> 356 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_red_s50.pngbin0 -> 344 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_redviolet.pngbin0 -> 373 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_redviolet_s50.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_skyblue.pngbin0 -> 373 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_skyblue_s50.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_violet.pngbin0 -> 373 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_violet_s50.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_yellow.pngbin0 -> 361 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_dark_yellow_s50.pngbin0 -> 344 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_darkgrey.pngbin0 -> 199 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_green.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_green_s50.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_grey.pngbin0 -> 208 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_aqua.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_blue.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_cyan.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_green.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_lime.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_magenta.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_orange.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_red.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_redviolet.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_skyblue.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_violet.pngbin0 -> 398 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_light_yellow.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_lightgrey.pngbin0 -> 217 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_lime.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_lime_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_magenta.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_magenta_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_aqua.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_aqua_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_blue.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_blue_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_cyan.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_cyan_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_green.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_green_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_lime.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_lime_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_magenta.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_magenta_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_orange.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_orange_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_red.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_red_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_redviolet.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_redviolet_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_skyblue.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_skyblue_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_violet.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_violet_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_yellow.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_medium_yellow_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_orange.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_orange_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_red.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_red_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_redviolet.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_redviolet_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_skyblue.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_skyblue_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_violet.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_violet_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_white.pngbin0 -> 214 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_yellow.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_yellow_s50.pngbin0 -> 399 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_aqua.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_aqua_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_black.pngbin0 -> 121 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_blue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_blue_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_cyan.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_cyan_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_aqua.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_aqua_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_blue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_blue_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_cyan.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_cyan_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_green.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_green_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_lime.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_lime_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_magenta.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_magenta_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_orange.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_orange_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_red.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_red_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_redviolet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_redviolet_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_skyblue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_skyblue_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_violet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_violet_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_yellow.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_dark_yellow_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_darkgrey.pngbin0 -> 121 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_green.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_green_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_grey.pngbin0 -> 121 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_aqua.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_blue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_cyan.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_green.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_lime.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_magenta.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_orange.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_red.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_redviolet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_skyblue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_violet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_light_yellow.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_lightgrey.pngbin0 -> 121 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_lime.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_lime_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_magenta.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_magenta_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_aqua.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_aqua_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_blue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_blue_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_cyan.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_cyan_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_green.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_green_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_lime.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_lime_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_magenta.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_magenta_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_orange.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_orange_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_red.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_red_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_redviolet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_redviolet_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_skyblue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_skyblue_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_violet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_violet_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_yellow.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_medium_yellow_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_orange.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_orange_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_red.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_red_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_redviolet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_redviolet_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_skyblue.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_skyblue_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_violet.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_violet_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_white.pngbin0 -> 121 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_yellow.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_stick_yellow_s50.pngbin0 -> 144 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_aqua.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_aqua_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_black.pngbin0 -> 160 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_blue.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_blue_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_cyan.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_cyan_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_aqua.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_aqua_s50.pngbin0 -> 251 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_blue.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_blue_s50.pngbin0 -> 231 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_cyan.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_cyan_s50.pngbin0 -> 231 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_green.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_green_s50.pngbin0 -> 231 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_lime.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_lime_s50.pngbin0 -> 251 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_magenta.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_magenta_s50.pngbin0 -> 231 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_orange.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_orange_s50.pngbin0 -> 251 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_red.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_red_s50.pngbin0 -> 231 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_redviolet.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_redviolet_s50.pngbin0 -> 251 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_skyblue.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_skyblue_s50.pngbin0 -> 251 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_violet.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_violet_s50.pngbin0 -> 251 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_yellow.pngbin0 -> 250 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_dark_yellow_s50.pngbin0 -> 231 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_darkgrey.pngbin0 -> 186 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_green.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_green_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_grey.pngbin0 -> 203 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_aqua.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_blue.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_cyan.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_green.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_lime.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_magenta.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_orange.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_red.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_redviolet.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_skyblue.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_violet.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_light_yellow.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_lightgrey.pngbin0 -> 193 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_lime.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_lime_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_magenta.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_magenta_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_aqua.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_aqua_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_blue.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_blue_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_cyan.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_cyan_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_green.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_green_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_lime.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_lime_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_magenta.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_magenta_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_orange.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_orange_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_red.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_red_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_redviolet.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_redviolet_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_skyblue.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_skyblue_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_violet.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_violet_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_yellow.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_medium_yellow_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_orange.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_orange_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_red.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_red_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_redviolet.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_redviolet_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_skyblue.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_skyblue_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_violet.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_violet_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_white.pngbin0 -> 174 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_yellow.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/textures/coloredwood_wood_yellow_s50.pngbin0 -> 260 bytes
-rw-r--r--coloredwood/wood.lua230
-rw-r--r--colormachine/README.md15
-rw-r--r--colormachine/depends.txt24
-rw-r--r--colormachine/init.lua2160
-rw-r--r--colormachine/paint_roller.lua62
-rw-r--r--colormachine/textures/colormachine_bottom.pngbin0 -> 2178 bytes
-rw-r--r--colormachine/textures/colormachine_front.pngbin0 -> 2431 bytes
-rw-r--r--colormachine/textures/colormachine_front_active.pngbin0 -> 2429 bytes
-rw-r--r--colormachine/textures/colormachine_side.pngbin0 -> 2229 bytes
-rw-r--r--colormachine/textures/colormachine_top.pngbin0 -> 2310 bytes
-rw-r--r--colormachine/textures/colormachine_top_active.pngbin0 -> 2303 bytes
-rw-r--r--colormachine/textures/paint_roller.pngbin0 -> 417 bytes
-rw-r--r--cottages/LICENSE675
-rw-r--r--cottages/README.md90
-rw-r--r--cottages/adaptions.lua104
-rw-r--r--cottages/alias.lua40
-rw-r--r--cottages/depends.txt8
-rw-r--r--cottages/init.lua71
-rw-r--r--cottages/locale/de.txt130
-rw-r--r--cottages/locale/template.txt129
-rw-r--r--cottages/models/cottages_barrel.obj543
-rw-r--r--cottages/models/cottages_barrel_closed.obj453
-rw-r--r--cottages/models/cottages_barrel_closed_lying.obj453
-rw-r--r--cottages/models/cottages_barrel_lying.obj543
-rw-r--r--cottages/models/cottages_handmill.obj376
-rw-r--r--cottages/models/cottages_tub.obj326
-rw-r--r--cottages/nodes_anvil.lua303
-rw-r--r--cottages/nodes_barrel.lua214
-rw-r--r--cottages/nodes_chests.lua61
-rw-r--r--cottages/nodes_doorlike.lua437
-rw-r--r--cottages/nodes_fences.lua159
-rw-r--r--cottages/nodes_furniture.lua599
-rw-r--r--cottages/nodes_historic.lua291
-rw-r--r--cottages/nodes_roof.lua222
-rw-r--r--cottages/nodes_straw.lua578
-rw-r--r--cottages/textures/cottages_barrel.pngbin0 -> 2668 bytes
-rw-r--r--cottages/textures/cottages_beds_bed_side.pngbin0 -> 536 bytes
-rw-r--r--cottages/textures/cottages_beds_bed_side_top_l.pngbin0 -> 500 bytes
-rw-r--r--cottages/textures/cottages_beds_bed_side_top_r.pngbin0 -> 502 bytes
-rw-r--r--cottages/textures/cottages_beds_bed_top_bottom.pngbin0 -> 633 bytes
-rw-r--r--cottages/textures/cottages_beds_bed_top_top.pngbin0 -> 605 bytes
-rw-r--r--cottages/textures/cottages_clay.pngbin0 -> 272 bytes
-rw-r--r--cottages/textures/cottages_darkage_straw.pngbin0 -> 852 bytes
-rw-r--r--cottages/textures/cottages_darkage_straw_bale.pngbin0 -> 827 bytes
-rw-r--r--cottages/textures/cottages_feldweg.pngbin0 -> 750 bytes
-rw-r--r--cottages/textures/cottages_glass_pane.pngbin0 -> 975 bytes
-rw-r--r--cottages/textures/cottages_homedecor_shingles_asphalt.pngbin0 -> 671 bytes
-rw-r--r--cottages/textures/cottages_homedecor_shingles_terracotta.pngbin0 -> 386 bytes
-rw-r--r--cottages/textures/cottages_homedecor_shingles_wood.pngbin0 -> 567 bytes
-rw-r--r--cottages/textures/cottages_junglewood.pngbin0 -> 254 bytes
-rw-r--r--cottages/textures/cottages_loam.pngbin0 -> 5743 bytes
-rw-r--r--cottages/textures/cottages_minimal_wood.pngbin0 -> 1400 bytes
-rw-r--r--cottages/textures/cottages_reet.pngbin0 -> 791 bytes
-rw-r--r--cottages/textures/cottages_slate.pngbin0 -> 8609 bytes
-rw-r--r--cottages/textures/cottages_sleepingmat.pngbin0 -> 135 bytes
-rw-r--r--cottages/textures/cottages_steel_block.pngbin0 -> 357 bytes
-rw-r--r--cottages/textures/cottages_stone.pngbin0 -> 233 bytes
-rw-r--r--cottages/textures/cottages_wagonwheel.pngbin0 -> 357 bytes
-rw-r--r--cottages/textures/cottages_wool.pngbin0 -> 306 bytes
-rw-r--r--cottages/textures/glooptest_tool_steelhammer.pngbin0 -> 184 bytes
-rw-r--r--currency/Money_Info.txt33
-rw-r--r--currency/README.md4
-rw-r--r--currency/barter.lua165
-rw-r--r--currency/crafting.lua71
-rw-r--r--currency/craftitems.lua26
-rw-r--r--currency/depends.txt1
-rw-r--r--currency/income.lua40
-rw-r--r--currency/init.lua20
-rw-r--r--currency/safe.lua103
-rw-r--r--currency/shop.lua195
-rw-r--r--currency/textures/barter_base.pngbin0 -> 734 bytes
-rw-r--r--currency/textures/barter_side.pngbin0 -> 1400 bytes
-rw-r--r--currency/textures/barter_top.pngbin0 -> 896 bytes
-rw-r--r--currency/textures/minegeld.pngbin0 -> 3563 bytes
-rw-r--r--currency/textures/minegeld_10.pngbin0 -> 3509 bytes
-rw-r--r--currency/textures/minegeld_5.pngbin0 -> 3365 bytes
-rw-r--r--currency/textures/minegeld_bundle.pngbin0 -> 5092 bytes
-rw-r--r--currency/textures/safe_front.pngbin0 -> 309 bytes
-rw-r--r--currency/textures/safe_side.pngbin0 -> 150 bytes
-rw-r--r--currency/textures/shop_front.pngbin0 -> 822 bytes
-rw-r--r--currency/textures/shop_side.pngbin0 -> 755 bytes
-rw-r--r--currency/textures/shop_top.pngbin0 -> 734 bytes
-rw-r--r--datastorage/README.md22
-rw-r--r--datastorage/depends.txt1
-rw-r--r--datastorage/init.lua98
-rw-r--r--digilines/LICENSE.txt188
-rw-r--r--digilines/README.md14
-rw-r--r--digilines/digilines/depends.txt1
-rw-r--r--digilines/digilines/init.lua25
-rw-r--r--digilines/digilines/internal.lua92
-rw-r--r--digilines/digilines/presetrules.lua15
-rw-r--r--digilines/digilines/textures/digiline_std.pngbin0 -> 446 bytes
-rw-r--r--digilines/digilines/textures/digiline_std_bump.pngbin0 -> 410 bytes
-rw-r--r--digilines/digilines/textures/digiline_std_inv.pngbin0 -> 196 bytes
-rw-r--r--digilines/digilines/textures/digiline_std_vertical.pngbin0 -> 378 bytes
-rw-r--r--digilines/digilines/util.lua67
-rw-r--r--digilines/digilines/wire_std.lua118
-rw-r--r--digilines/digilines/wires_common.lua88
-rw-r--r--digilines/digilines_inventory/README62
-rw-r--r--digilines/digilines_inventory/depends.txt1
-rw-r--r--digilines/digilines_inventory/init.lua143
-rw-r--r--digilines/digilines_lcd/characters282
-rw-r--r--digilines/digilines_lcd/init.lua227
-rw-r--r--digilines/digilines_lcd/textures/_0.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_1.pngbin0 -> 238 bytes
-rw-r--r--digilines/digilines_lcd/textures/_2.pngbin0 -> 235 bytes
-rw-r--r--digilines/digilines_lcd/textures/_3.pngbin0 -> 241 bytes
-rw-r--r--digilines/digilines_lcd/textures/_4.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_5.pngbin0 -> 237 bytes
-rw-r--r--digilines/digilines_lcd/textures/_6.pngbin0 -> 246 bytes
-rw-r--r--digilines/digilines_lcd/textures/_7.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_8.pngbin0 -> 235 bytes
-rw-r--r--digilines/digilines_lcd/textures/_9.pngbin0 -> 245 bytes
-rw-r--r--digilines/digilines_lcd/textures/_a.pngbin0 -> 238 bytes
-rw-r--r--digilines/digilines_lcd/textures/_a_.pngbin0 -> 251 bytes
-rw-r--r--digilines/digilines_lcd/textures/_am.pngbin0 -> 156 bytes
-rw-r--r--digilines/digilines_lcd/textures/_ap.pngbin0 -> 228 bytes
-rw-r--r--digilines/digilines_lcd/textures/_as.pngbin0 -> 238 bytes
-rw-r--r--digilines/digilines_lcd/textures/_at.pngbin0 -> 254 bytes
-rw-r--r--digilines/digilines_lcd/textures/_b.pngbin0 -> 249 bytes
-rw-r--r--digilines/digilines_lcd/textures/_b_.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_bl.pngbin0 -> 237 bytes
-rw-r--r--digilines/digilines_lcd/textures/_br.pngbin0 -> 237 bytes
-rw-r--r--digilines/digilines_lcd/textures/_c.pngbin0 -> 236 bytes
-rw-r--r--digilines/digilines_lcd/textures/_c_.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_ca.pngbin0 -> 231 bytes
-rw-r--r--digilines/digilines_lcd/textures/_cl.pngbin0 -> 233 bytes
-rw-r--r--digilines/digilines_lcd/textures/_cm.pngbin0 -> 226 bytes
-rw-r--r--digilines/digilines_lcd/textures/_co.pngbin0 -> 135 bytes
-rw-r--r--digilines/digilines_lcd/textures/_cr.pngbin0 -> 234 bytes
-rw-r--r--digilines/digilines_lcd/textures/_d.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_d_.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_dl.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_dt.pngbin0 -> 224 bytes
-rw-r--r--digilines/digilines_lcd/textures/_dv.pngbin0 -> 235 bytes
-rw-r--r--digilines/digilines_lcd/textures/_e.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_e_.pngbin0 -> 242 bytes
-rw-r--r--digilines/digilines_lcd/textures/_eq.pngbin0 -> 228 bytes
-rw-r--r--digilines/digilines_lcd/textures/_ex.pngbin0 -> 230 bytes
-rw-r--r--digilines/digilines_lcd/textures/_f.pngbin0 -> 244 bytes
-rw-r--r--digilines/digilines_lcd/textures/_f_.pngbin0 -> 246 bytes
-rw-r--r--digilines/digilines_lcd/textures/_g.pngbin0 -> 251 bytes
-rw-r--r--digilines/digilines_lcd/textures/_g_.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_gt.pngbin0 -> 228 bytes
-rw-r--r--digilines/digilines_lcd/textures/_h.pngbin0 -> 248 bytes
-rw-r--r--digilines/digilines_lcd/textures/_h_.pngbin0 -> 252 bytes
-rw-r--r--digilines/digilines_lcd/textures/_ha.pngbin0 -> 233 bytes
-rw-r--r--digilines/digilines_lcd/textures/_hs.pngbin0 -> 144 bytes
-rw-r--r--digilines/digilines_lcd/textures/_i.pngbin0 -> 237 bytes
-rw-r--r--digilines/digilines_lcd/textures/_i_.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_j.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_j_.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_k.pngbin0 -> 247 bytes
-rw-r--r--digilines/digilines_lcd/textures/_k_.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_l.pngbin0 -> 238 bytes
-rw-r--r--digilines/digilines_lcd/textures/_l_.pngbin0 -> 242 bytes
-rw-r--r--digilines/digilines_lcd/textures/_lt.pngbin0 -> 227 bytes
-rw-r--r--digilines/digilines_lcd/textures/_m.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_m_.pngbin0 -> 244 bytes
-rw-r--r--digilines/digilines_lcd/textures/_mn.pngbin0 -> 228 bytes
-rw-r--r--digilines/digilines_lcd/textures/_n.pngbin0 -> 248 bytes
-rw-r--r--digilines/digilines_lcd/textures/_n_.pngbin0 -> 252 bytes
-rw-r--r--digilines/digilines_lcd/textures/_o.pngbin0 -> 238 bytes
-rw-r--r--digilines/digilines_lcd/textures/_o_.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_p.pngbin0 -> 250 bytes
-rw-r--r--digilines/digilines_lcd/textures/_p_.pngbin0 -> 246 bytes
-rw-r--r--digilines/digilines_lcd/textures/_pr.pngbin0 -> 255 bytes
-rw-r--r--digilines/digilines_lcd/textures/_ps.pngbin0 -> 235 bytes
-rw-r--r--digilines/digilines_lcd/textures/_q.pngbin0 -> 251 bytes
-rw-r--r--digilines/digilines_lcd/textures/_q_.pngbin0 -> 242 bytes
-rw-r--r--digilines/digilines_lcd/textures/_qo.pngbin0 -> 232 bytes
-rw-r--r--digilines/digilines_lcd/textures/_qu.pngbin0 -> 233 bytes
-rw-r--r--digilines/digilines_lcd/textures/_r.pngbin0 -> 241 bytes
-rw-r--r--digilines/digilines_lcd/textures/_r_.pngbin0 -> 248 bytes
-rw-r--r--digilines/digilines_lcd/textures/_re.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_s.pngbin0 -> 239 bytes
-rw-r--r--digilines/digilines_lcd/textures/_s_.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_sl.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_sm.pngbin0 -> 227 bytes
-rw-r--r--digilines/digilines_lcd/textures/_sp.pngbin0 -> 215 bytes
-rw-r--r--digilines/digilines_lcd/textures/_sr.pngbin0 -> 236 bytes
-rw-r--r--digilines/digilines_lcd/textures/_t.pngbin0 -> 241 bytes
-rw-r--r--digilines/digilines_lcd/textures/_t_.pngbin0 -> 249 bytes
-rw-r--r--digilines/digilines_lcd/textures/_tl.pngbin0 -> 227 bytes
-rw-r--r--digilines/digilines_lcd/textures/_u.pngbin0 -> 240 bytes
-rw-r--r--digilines/digilines_lcd/textures/_u_.pngbin0 -> 252 bytes
-rw-r--r--digilines/digilines_lcd/textures/_un.pngbin0 -> 226 bytes
-rw-r--r--digilines/digilines_lcd/textures/_v.pngbin0 -> 249 bytes
-rw-r--r--digilines/digilines_lcd/textures/_v_.pngbin0 -> 246 bytes
-rw-r--r--digilines/digilines_lcd/textures/_vb.pngbin0 -> 229 bytes
-rw-r--r--digilines/digilines_lcd/textures/_w.pngbin0 -> 238 bytes
-rw-r--r--digilines/digilines_lcd/textures/_w_.pngbin0 -> 247 bytes
-rw-r--r--digilines/digilines_lcd/textures/_x.pngbin0 -> 241 bytes
-rw-r--r--digilines/digilines_lcd/textures/_x_.pngbin0 -> 246 bytes
-rw-r--r--digilines/digilines_lcd/textures/_y.pngbin0 -> 246 bytes
-rw-r--r--digilines/digilines_lcd/textures/_y_.pngbin0 -> 243 bytes
-rw-r--r--digilines/digilines_lcd/textures/_z.pngbin0 -> 233 bytes
-rw-r--r--digilines/digilines_lcd/textures/_z_.pngbin0 -> 235 bytes
-rw-r--r--digilines/digilines_lcd/textures/lcd_anyside.pngbin0 -> 142 bytes
-rw-r--r--digilines/digilines_lcd/textures/lcd_lcd.pngbin0 -> 189 bytes
-rw-r--r--digilines/digilines_lightsensor/depends.txt1
-rw-r--r--digilines/digilines_lightsensor/init.lua57
-rw-r--r--digilines/digilines_lightsensor/textures/digilines_lightsensor.pngbin0 -> 218 bytes
-rw-r--r--digilines/digilines_rtc/depends.txt1
-rw-r--r--digilines/digilines_rtc/init.lua53
-rw-r--r--digilines/digilines_rtc/textures/digilines_rtc.pngbin0 -> 248 bytes
-rw-r--r--digilines/modpack.txt0
-rw-r--r--display_blocks/README.txt4
-rw-r--r--display_blocks/config.lua6
-rw-r--r--display_blocks/depends.txt2
-rw-r--r--display_blocks/init.lua267
-rw-r--r--display_blocks/technic.lua40
-rw-r--r--display_blocks/textures/display_blocks_air_block.pngbin0 -> 211 bytes
-rw-r--r--display_blocks/textures/display_blocks_air_crystal.pngbin0 -> 238 bytes
-rw-r--r--display_blocks/textures/display_blocks_compressed_earth.pngbin0 -> 888 bytes
-rw-r--r--display_blocks/textures/display_blocks_earth_block.pngbin0 -> 498 bytes
-rw-r--r--display_blocks/textures/display_blocks_earth_crystal.pngbin0 -> 3134 bytes
-rw-r--r--display_blocks/textures/display_blocks_empty_display.pngbin0 -> 351 bytes
-rw-r--r--display_blocks/textures/display_blocks_fire_block.pngbin0 -> 185 bytes
-rw-r--r--display_blocks/textures/display_blocks_fire_crystal.pngbin0 -> 228 bytes
-rw-r--r--display_blocks/textures/display_blocks_glass_block.pngbin0 -> 157 bytes
-rw-r--r--display_blocks/textures/display_blocks_glass_crystal.pngbin0 -> 164 bytes
-rw-r--r--display_blocks/textures/display_blocks_industria_cube.pngbin0 -> 315 bytes
-rw-r--r--display_blocks/textures/display_blocks_mese_block.pngbin0 -> 260 bytes
-rw-r--r--display_blocks/textures/display_blocks_mese_crystal.pngbin0 -> 406 bytes
-rw-r--r--display_blocks/textures/display_blocks_mese_giver_block.pngbin0 -> 158 bytes
-rw-r--r--display_blocks/textures/display_blocks_metal_block.pngbin0 -> 359 bytes
-rw-r--r--display_blocks/textures/display_blocks_metal_crystal.pngbin0 -> 3244 bytes
-rw-r--r--display_blocks/textures/display_blocks_natura_cube.pngbin0 -> 289 bytes
-rw-r--r--display_blocks/textures/display_blocks_titanium_block.pngbin0 -> 268 bytes
-rw-r--r--display_blocks/textures/display_blocks_titanium_crystal.pngbin0 -> 3055 bytes
-rw-r--r--display_blocks/textures/display_blocks_universia_block.pngbin0 -> 325 bytes
-rw-r--r--display_blocks/textures/display_blocks_universia_crystal.pngbin0 -> 3031 bytes
-rw-r--r--display_blocks/textures/display_blocks_uranium_block.pngbin0 -> 260 bytes
-rw-r--r--display_blocks/textures/display_blocks_uranium_crystal.pngbin0 -> 1300 bytes
-rw-r--r--display_blocks/textures/display_blocks_water_block.pngbin0 -> 254 bytes
-rw-r--r--display_blocks/textures/display_blocks_water_crystal.pngbin0 -> 209 bytes
-rw-r--r--display_blocks/textures/uranium_block.pngbin0 -> 1190 bytes
-rw-r--r--display_blocks/textures/uranium_dust.pngbin0 -> 1283 bytes
-rw-r--r--display_blocks/textures/uranium_ore.pngbin0 -> 228 bytes
-rw-r--r--display_blocks/uranium.lua56
-rw-r--r--external_legacy/README.txt18
-rw-r--r--external_legacy/init.lua24
-rw-r--r--farming_plus/README.txt23
-rw-r--r--farming_plus/bananas.lua71
-rw-r--r--farming_plus/carrots.lua87
-rw-r--r--farming_plus/cocoa.lua81
-rw-r--r--farming_plus/depends.txt3
-rw-r--r--farming_plus/init.lua324
-rw-r--r--farming_plus/locale/de.txt50
-rw-r--r--farming_plus/locale/template.txt51
-rw-r--r--farming_plus/oranges.lua87
-rw-r--r--farming_plus/potatoes.lua77
-rw-r--r--farming_plus/pumpkin.lua480
-rw-r--r--farming_plus/rhubarb.lua70
-rw-r--r--farming_plus/strawberries.lua87
-rw-r--r--farming_plus/textures/farming_banana.pngbin0 -> 515 bytes
-rw-r--r--farming_plus/textures/farming_banana_leaves.pngbin0 -> 621 bytes
-rw-r--r--farming_plus/textures/farming_banana_sapling.pngbin0 -> 647 bytes
-rw-r--r--farming_plus/textures/farming_bread_pumpkin.pngbin0 -> 511 bytes
-rw-r--r--farming_plus/textures/farming_cake_mix_pumpkin.pngbin0 -> 343 bytes
-rw-r--r--farming_plus/textures/farming_carrot.pngbin0 -> 356 bytes
-rw-r--r--farming_plus/textures/farming_carrot_1.pngbin0 -> 137 bytes
-rw-r--r--farming_plus/textures/farming_carrot_2.pngbin0 -> 196 bytes
-rw-r--r--farming_plus/textures/farming_carrot_3.pngbin0 -> 274 bytes
-rw-r--r--farming_plus/textures/farming_carrot_4.pngbin0 -> 405 bytes
-rw-r--r--farming_plus/textures/farming_carrot_seed.pngbin0 -> 476 bytes
-rw-r--r--farming_plus/textures/farming_cocoa.pngbin0 -> 535 bytes
-rw-r--r--farming_plus/textures/farming_cocoa_bean.pngbin0 -> 184 bytes
-rw-r--r--farming_plus/textures/farming_cocoa_sapling.pngbin0 -> 644 bytes
-rw-r--r--farming_plus/textures/farming_orange.pngbin0 -> 544 bytes
-rw-r--r--farming_plus/textures/farming_orange_1.pngbin0 -> 108 bytes
-rw-r--r--farming_plus/textures/farming_orange_2.pngbin0 -> 193 bytes
-rw-r--r--farming_plus/textures/farming_orange_3.pngbin0 -> 451 bytes
-rw-r--r--farming_plus/textures/farming_orange_4.pngbin0 -> 460 bytes
-rw-r--r--farming_plus/textures/farming_orange_seed.pngbin0 -> 281 bytes
-rw-r--r--farming_plus/textures/farming_potato.pngbin0 -> 493 bytes
-rw-r--r--farming_plus/textures/farming_potato_1.pngbin0 -> 209 bytes
-rw-r--r--farming_plus/textures/farming_potato_2.pngbin0 -> 262 bytes
-rw-r--r--farming_plus/textures/farming_potato_3.pngbin0 -> 415 bytes
-rw-r--r--farming_plus/textures/farming_potato_seed.pngbin0 -> 221 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_big_side.pngbin0 -> 600 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_big_top.pngbin0 -> 600 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_big_top_corner.pngbin0 -> 289 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_big_top_side.pngbin0 -> 378 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_face.pngbin0 -> 622 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_face_light.pngbin0 -> 632 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_seed.pngbin0 -> 312 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_side.pngbin0 -> 627 bytes
-rw-r--r--farming_plus/textures/farming_pumpkin_top.pngbin0 -> 623 bytes
-rw-r--r--farming_plus/textures/farming_rhubarb.pngbin0 -> 502 bytes
-rw-r--r--farming_plus/textures/farming_rhubarb_1.pngbin0 -> 530 bytes
-rw-r--r--farming_plus/textures/farming_rhubarb_2.pngbin0 -> 365 bytes
-rw-r--r--farming_plus/textures/farming_rhubarb_3.pngbin0 -> 301 bytes
-rw-r--r--farming_plus/textures/farming_rhubarb_seed.pngbin0 -> 219 bytes
-rw-r--r--farming_plus/textures/farming_scarecrow_front.pngbin0 -> 634 bytes
-rw-r--r--farming_plus/textures/farming_scarecrow_front_light.pngbin0 -> 641 bytes
-rw-r--r--farming_plus/textures/farming_scarecrow_side.pngbin0 -> 613 bytes
-rw-r--r--farming_plus/textures/farming_scarecrow_top.pngbin0 -> 639 bytes
-rw-r--r--farming_plus/textures/farming_strawberry.pngbin0 -> 250 bytes
-rw-r--r--farming_plus/textures/farming_strawberry_1.pngbin0 -> 356 bytes
-rw-r--r--farming_plus/textures/farming_strawberry_2.pngbin0 -> 342 bytes
-rw-r--r--farming_plus/textures/farming_strawberry_3.pngbin0 -> 357 bytes
-rw-r--r--farming_plus/textures/farming_strawberry_4.pngbin0 -> 400 bytes
-rw-r--r--farming_plus/textures/farming_strawberry_seed.pngbin0 -> 212 bytes
-rw-r--r--farming_plus/textures/farming_tomato.pngbin0 -> 581 bytes
-rw-r--r--farming_plus/textures/farming_tomato_1.pngbin0 -> 482 bytes
-rw-r--r--farming_plus/textures/farming_tomato_2.pngbin0 -> 506 bytes
-rw-r--r--farming_plus/textures/farming_tomato_3.pngbin0 -> 578 bytes
-rw-r--r--farming_plus/textures/farming_tomato_4.pngbin0 -> 591 bytes
-rw-r--r--farming_plus/textures/farming_tomato_seed.pngbin0 -> 221 bytes
-rw-r--r--farming_plus/textures/farming_weed.pngbin0 -> 591 bytes
-rw-r--r--farming_plus/tomatoes.lua87
-rw-r--r--farming_plus/weed.lua44
-rw-r--r--framedglass/depends.txt2
-rw-r--r--framedglass/init.lua118
-rw-r--r--framedglass/textures/framedglass_blackglass.pngbin0 -> 346 bytes
-rw-r--r--framedglass/textures/framedglass_blueglass.pngbin0 -> 432 bytes
-rw-r--r--framedglass/textures/framedglass_brownglass.pngbin0 -> 403 bytes
-rw-r--r--framedglass/textures/framedglass_cyanglass.pngbin0 -> 442 bytes
-rw-r--r--framedglass/textures/framedglass_darkgreenglass.pngbin0 -> 414 bytes
-rw-r--r--framedglass/textures/framedglass_darkgreyglass.pngbin0 -> 436 bytes
-rw-r--r--framedglass/textures/framedglass_glass_face_clean.pngbin0 -> 926 bytes
-rw-r--r--framedglass/textures/framedglass_glass_face_streaks.pngbin0 -> 951 bytes
-rw-r--r--framedglass/textures/framedglass_greenglass.pngbin0 -> 445 bytes
-rw-r--r--framedglass/textures/framedglass_greyglass.pngbin0 -> 349 bytes
-rw-r--r--framedglass/textures/framedglass_orangeglass.pngbin0 -> 410 bytes
-rw-r--r--framedglass/textures/framedglass_pinkglass.pngbin0 -> 412 bytes
-rw-r--r--framedglass/textures/framedglass_redglass.pngbin0 -> 444 bytes
-rw-r--r--framedglass/textures/framedglass_steel_frame.pngbin0 -> 740 bytes
-rw-r--r--framedglass/textures/framedglass_violetglass.pngbin0 -> 418 bytes
-rw-r--r--framedglass/textures/framedglass_whiteglass.pngbin0 -> 348 bytes
-rw-r--r--framedglass/textures/framedglass_wooden_frame.pngbin0 -> 387 bytes
-rw-r--r--framedglass/textures/framedglass_yellowglass.pngbin0 -> 400 bytes
-rw-r--r--framedglass/textures/stained_glass_lime.pngbin0 -> 444 bytes
-rw-r--r--framedglass/textures/stained_glass_magenta.pngbin0 -> 313 bytes
-rw-r--r--gardening/README.txt75
-rw-r--r--gardening/init.lua168
-rw-r--r--gardening/textures/gardening_dandelions.pngbin0 -> 544 bytes
-rw-r--r--gardening/textures/gardening_geranium_shrub.pngbin0 -> 644 bytes
-rw-r--r--gardening/textures/gardening_packed_dirt.pngbin0 -> 3177 bytes
-rw-r--r--gardening/textures/gardening_rosebush.pngbin0 -> 1055 bytes
-rw-r--r--gardening/textures/gardening_tulip_shrub.pngbin0 -> 483 bytes
-rw-r--r--gardening/textures/gardening_violas.pngbin0 -> 421 bytes
-rw-r--r--give_initial_stuff/depends.txt2
-rw-r--r--give_initial_stuff/init.lua12
-rw-r--r--gloopblocks/LICENSE90
-rw-r--r--gloopblocks/README72
-rw-r--r--gloopblocks/crafts.lua367
-rw-r--r--gloopblocks/depends.txt10
-rw-r--r--gloopblocks/init.lua794
-rw-r--r--gloopblocks/locale/de.txt60
-rw-r--r--gloopblocks/locale/template.txt59
-rw-r--r--gloopblocks/textures/gloopblocks_basalt.pngbin0 -> 575 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cement.pngbin0 -> 344 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cement_axe.pngbin0 -> 187 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cement_pick.pngbin0 -> 211 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cement_shovel.pngbin0 -> 189 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cement_sword.pngbin0 -> 210 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cobble_road.pngbin0 -> 763 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_cobble_road_mossy.pngbin0 -> 828 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_evil_axe.pngbin0 -> 223 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_evil_block.pngbin0 -> 588 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_evil_pick.pngbin0 -> 194 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_evil_shovel.pngbin0 -> 204 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_evil_stick.pngbin0 -> 327 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_evil_sword.pngbin0 -> 221 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_oerkkiblock_front.pngbin0 -> 426 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_oerkkiblock_sides.pngbin0 -> 692 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_oerkkiblock_tb.pngbin0 -> 696 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_pavement.pngbin0 -> 206 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_pumice.pngbin0 -> 1072 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_rainbow_block.pngbin0 -> 141 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_scaffold.pngbin0 -> 190 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_stone_brick_mossy.pngbin0 -> 1091 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_stone_mossy.pngbin0 -> 708 bytes
-rw-r--r--gloopblocks/textures/gloopblocks_wet_cement.pngbin0 -> 366 bytes
-rw-r--r--glooptest/LICENSE.txt5
-rw-r--r--glooptest/README.txt21
-rw-r--r--glooptest/glooptest/compat_module/config.cfg5
-rw-r--r--glooptest/glooptest/compat_module/init.lua35
-rw-r--r--glooptest/glooptest/depends.txt1
-rw-r--r--glooptest/glooptest/general.cfg5
-rw-r--r--glooptest/glooptest/init.lua65
-rw-r--r--glooptest/glooptest/license.txt5
-rw-r--r--glooptest/glooptest/module.cfg21
-rw-r--r--glooptest/glooptest/ore_module/api.lua152
-rw-r--r--glooptest/glooptest/ore_module/init.lua630
-rw-r--r--glooptest/glooptest/othergen_module/init.lua374
-rw-r--r--glooptest/glooptest/parts_module/init.lua174
-rw-r--r--glooptest/glooptest/tech_module/init.lua87
-rw-r--r--glooptest/glooptest/textures/gloopores_akalin_block.pngbin0 -> 299 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_akalin_ingot.pngbin0 -> 218 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_akalin_lump.pngbin0 -> 274 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_alatro_block.pngbin0 -> 330 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_alatro_ingot.pngbin0 -> 197 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_alatro_lump.pngbin0 -> 239 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_arol_ingot.pngbin0 -> 200 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_arol_lump.pngbin0 -> 236 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_kalite_lump.pngbin0 -> 206 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_kalite_torch_animated.pngbin0 -> 1083 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_kalite_torch_on_ceiling_animated.pngbin0 -> 1157 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_kalite_torch_on_floor.pngbin0 -> 215 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_kalite_torch_on_floor_animated.pngbin0 -> 1082 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_mineral_akalin.pngbin0 -> 390 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_mineral_alatro.pngbin0 -> 236 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_mineral_arol.pngbin0 -> 276 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_mineral_kalite.pngbin0 -> 353 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_mineral_talinite.pngbin0 -> 315 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_talinite_block.pngbin0 -> 291 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_talinite_ingot.pngbin0 -> 198 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_talinite_lump.pngbin0 -> 294 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_alatroaxe.pngbin0 -> 134 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_alatropick.pngbin0 -> 195 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_alatroshovel.pngbin0 -> 144 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_alatrosword.pngbin0 -> 162 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_arolaxe.pngbin0 -> 113 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_arolpick.pngbin0 -> 172 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_arolshovel.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/gloopores_tool_arolsword.pngbin0 -> 143 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_akalin_crystal_glass.pngbin0 -> 212 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_alatro_crystal_glass.pngbin0 -> 221 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_amethyst_block.pngbin0 -> 848 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_arol_crystal_glass.pngbin0 -> 211 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_chainlink.pngbin0 -> 175 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_compressed_kalite.pngbin0 -> 317 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_crystal_glass.pngbin0 -> 201 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_emerald_block.pngbin0 -> 869 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_encrusting_upgrade.pngbin0 -> 545 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gem_amethyst.pngbin0 -> 219 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gem_emerald.pngbin0 -> 222 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gem_ruby.pngbin0 -> 204 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gem_sapphire.pngbin0 -> 222 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gem_topaz.pngbin0 -> 221 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_axe_amethyst.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_axe_diamond.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_axe_emerald.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_axe_ruby.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_axe_sapphire.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_axe_topaz.pngbin0 -> 126 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_hammer_amethyst.pngbin0 -> 190 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_hammer_diamond.pngbin0 -> 191 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_hammer_emerald.pngbin0 -> 191 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_hammer_ruby.pngbin0 -> 189 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_hammer_sapphire.pngbin0 -> 190 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_hammer_topaz.pngbin0 -> 189 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_amethyst.pngbin0 -> 224 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_diamond.pngbin0 -> 226 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_emerald.pngbin0 -> 224 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_ruby.pngbin0 -> 222 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_sapphire.pngbin0 -> 224 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_topaz.pngbin0 -> 224 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_pick_amethyst.pngbin0 -> 196 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_pick_diamond.pngbin0 -> 196 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_pick_emerald.pngbin0 -> 196 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_pick_ruby.pngbin0 -> 195 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_pick_sapphire.pngbin0 -> 194 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_pick_topaz.pngbin0 -> 195 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_shovel_amethyst.pngbin0 -> 143 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_shovel_diamond.pngbin0 -> 145 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_shovel_emerald.pngbin0 -> 144 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_shovel_ruby.pngbin0 -> 145 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_shovel_sapphire.pngbin0 -> 143 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_shovel_topaz.pngbin0 -> 145 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_sword_amethyst.pngbin0 -> 180 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_sword_diamond.pngbin0 -> 181 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_sword_emerald.pngbin0 -> 181 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_sword_ruby.pngbin0 -> 180 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_sword_sapphire.pngbin0 -> 180 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_gemoverlay_sword_topaz.pngbin0 -> 180 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_mineral_amethyst.pngbin0 -> 136 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_mineral_emerald.pngbin0 -> 135 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_mineral_ruby.pngbin0 -> 135 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_mineral_sapphire.pngbin0 -> 133 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_mineral_topaz.pngbin0 -> 135 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_reinforced_akalin_crystal_glass.pngbin0 -> 222 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_reinforced_crystal_glass.pngbin0 -> 217 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_ruby_block.pngbin0 -> 775 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_sapphire_block.pngbin0 -> 889 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_table_side.pngbin0 -> 214 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_table_tb.pngbin0 -> 222 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_talinite_crystal_glass.pngbin0 -> 210 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_alatrohammer.pngbin0 -> 190 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_alatrohandsaw.pngbin0 -> 256 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_arolhammer.pngbin0 -> 173 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_arolhandsaw.pngbin0 -> 226 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_bronzehammer.pngbin0 -> 183 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_bronzehandsaw.pngbin0 -> 234 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_diamondhammer.pngbin0 -> 180 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_diamondhandsaw.pngbin0 -> 233 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_goldhammer.pngbin0 -> 183 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_goldhandsaw.pngbin0 -> 234 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_mesehammer.pngbin0 -> 183 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_mesehandsaw.pngbin0 -> 232 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_silverhammer.pngbin0 -> 183 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_silverhandsaw.pngbin0 -> 234 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_steelhammer.pngbin0 -> 184 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_steelhandsaw.pngbin0 -> 221 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_stonehammer.pngbin0 -> 198 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_stonehandsaw.pngbin0 -> 237 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_woodhammer.pngbin0 -> 177 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_tool_woodhandsaw.pngbin0 -> 226 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_topaz_block.pngbin0 -> 835 bytes
-rw-r--r--glooptest/glooptest/textures/glooptest_upgrade_core.pngbin0 -> 457 bytes
-rw-r--r--glooptest/glooptest/tools_module/api.lua98
-rw-r--r--glooptest/glooptest/tools_module/init.lua237
-rw-r--r--glooptest/modpack.txt3
-rw-r--r--homedecor_modpack/LICENSE199
-rw-r--r--homedecor_modpack/README61
-rw-r--r--homedecor_modpack/building_blocks/depends.txt2
-rw-r--r--homedecor_modpack/building_blocks/init.lua616
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_Adobe.pngbin0 -> 260 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_BWtile.pngbin0 -> 568 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_Roofing.pngbin0 -> 324 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_brobble.pngbin0 -> 381 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_brobble_spread_inv.pngbin0 -> 9342 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_bwtile_inv.pngbin0 -> 6752 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_cast_iron.pngbin0 -> 195 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_cast_iron_fireplace.pngbin0 -> 261 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_grate.pngbin0 -> 581 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_grate2.pngbin0 -> 302 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_gravel_spread_inv.pngbin0 -> 7829 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_hardwood.pngbin0 -> 286 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_knife.pngbin0 -> 177 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_marble.pngbin0 -> 499 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_sglass.pngbin0 -> 280 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_sticks.pngbin0 -> 261 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_tar.pngbin0 -> 222 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_tar_base.pngbin0 -> 2592 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_tar_spread_inv.pngbin0 -> 3918 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_towel.pngbin0 -> 409 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_towel_inv.pngbin0 -> 6627 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/building_blocks_wglass.pngbin0 -> 502 bytes
-rw-r--r--homedecor_modpack/building_blocks/textures/technic_granite.pngbin0 -> 766 bytes
-rw-r--r--homedecor_modpack/chains/depends.txt1
-rw-r--r--homedecor_modpack/chains/init.lua178
-rw-r--r--homedecor_modpack/chains/models/chains.obj881
-rw-r--r--homedecor_modpack/chains/models/chains_chandelier.obj1621
-rw-r--r--homedecor_modpack/chains/models/top_chains.obj943
-rw-r--r--homedecor_modpack/chains/textures/chain_brass_inv.pngbin0 -> 1886 bytes
-rw-r--r--homedecor_modpack/chains/textures/chain_wrought_iron_inv.pngbin0 -> 1730 bytes
-rw-r--r--homedecor_modpack/chains/textures/chains_brass.pngbin0 -> 344 bytes
-rw-r--r--homedecor_modpack/chains/textures/chains_candle.pngbin0 -> 390 bytes
-rw-r--r--homedecor_modpack/chains/textures/chains_candle_flame.pngbin0 -> 1490 bytes
-rw-r--r--homedecor_modpack/chains/textures/chains_wrought_iron.pngbin0 -> 386 bytes
-rw-r--r--homedecor_modpack/chains/textures/top_chain_brass_inv.pngbin0 -> 2593 bytes
-rw-r--r--homedecor_modpack/chains/textures/top_chain_wrought_iron_inv.pngbin0 -> 2366 bytes
-rw-r--r--homedecor_modpack/computer/CHANGES.txt38
-rw-r--r--homedecor_modpack/computer/README.txt61
-rw-r--r--homedecor_modpack/computer/TODO.txt29
-rw-r--r--homedecor_modpack/computer/computers.lua337
-rw-r--r--homedecor_modpack/computer/depends.txt3
-rw-r--r--homedecor_modpack/computer/init.lua102
-rw-r--r--homedecor_modpack/computer/locale/es.txt6
-rw-r--r--homedecor_modpack/computer/miscitems.lua71
-rw-r--r--homedecor_modpack/computer/models/computer_laptop.obj124
-rw-r--r--homedecor_modpack/computer/models/computer_laptop_closed.obj138
-rw-r--r--homedecor_modpack/computer/models/computer_monitor.obj1618
-rw-r--r--homedecor_modpack/computer/models/computer_tower.obj33
-rw-r--r--homedecor_modpack/computer/models/tetris_arcade.obj143
-rw-r--r--homedecor_modpack/computer/recipes.lua143
-rw-r--r--homedecor_modpack/computer/tetris.lua282
-rw-r--r--homedecor_modpack/computer/textures/computer_ad128_inv.pngbin0 -> 2333 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_ad64_inv.pngbin0 -> 2243 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral128_bk.pngbin0 -> 313 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral128_bt.pngbin0 -> 313 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral128_ft.pngbin0 -> 1270 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral128_lt.pngbin0 -> 315 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral128_rt.pngbin0 -> 315 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral128_tp.pngbin0 -> 483 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral64_bk.pngbin0 -> 321 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral64_bt.pngbin0 -> 313 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral64_ft.pngbin0 -> 415 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral64_lt.pngbin0 -> 331 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral64_rt.pngbin0 -> 315 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_admiral64_tp.pngbin0 -> 461 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_black.pngbin0 -> 82 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_blue.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_computer_front_old.pngbin0 -> 122 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_computer_top_old.pngbin0 -> 129 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_cyan.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_green.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_laptop.pngbin0 -> 8667 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_laptop_inv.pngbin0 -> 2731 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_magenta.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_monitor_inv.pngbin0 -> 2736 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_orange.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_piepad_inv.pngbin0 -> 207 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_piepad_inv_off.pngbin0 -> 136 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_b.pngbin0 -> 170 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_bt.pngbin0 -> 154 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_f.pngbin0 -> 166 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_inv.pngbin0 -> 2435 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_l.pngbin0 -> 183 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_r.pngbin0 -> 182 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_printer_t.pngbin0 -> 204 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_ps1_inv.pngbin0 -> 2373 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_ps2_inv.pngbin0 -> 2391 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_red.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_b.pngbin0 -> 289 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_bt.pngbin0 -> 154 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_f.pngbin0 -> 1518 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_f_animated.pngbin0 -> 19905 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_inv.pngbin0 -> 1950 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_l.pngbin0 -> 260 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_r.pngbin0 -> 261 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_router_t.pngbin0 -> 146 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_bt.pngbin0 -> 67 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_f_off.pngbin0 -> 1279 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_f_on.pngbin0 -> 2441 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_inv.pngbin0 -> 3714 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_l.pngbin0 -> 129 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_r.pngbin0 -> 130 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_server_t.pngbin0 -> 67 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_bk.pngbin0 -> 118 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_bt.pngbin0 -> 139 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_ft.pngbin0 -> 182 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_ft_off.pngbin0 -> 140 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_lt.pngbin0 -> 157 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_rt.pngbin0 -> 161 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_shefriendSOO_tp.pngbin0 -> 241 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_bk.pngbin0 -> 401 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_bt.pngbin0 -> 494 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_ft.pngbin0 -> 249 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_ft_off.pngbin0 -> 144 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_lt.pngbin0 -> 549 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_rt.pngbin0 -> 138 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation2_tp.pngbin0 -> 523 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_bk.pngbin0 -> 297 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_bt.pngbin0 -> 484 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_ft.pngbin0 -> 262 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_lt.pngbin0 -> 202 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_rt.pngbin0 -> 311 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_tp.pngbin0 -> 316 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_slaystation_tp_off.pngbin0 -> 309 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_bk.pngbin0 -> 1292 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_bt.pngbin0 -> 298 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_ft.pngbin0 -> 1342 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_inv.pngbin0 -> 2335 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_lt.pngbin0 -> 416 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_rt.pngbin0 -> 145 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_specter_tp.pngbin0 -> 625 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_spectre_back.pngbin0 -> 1258 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_spectre_bottom.pngbin0 -> 167 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_spectre_front.pngbin0 -> 296 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_spectre_left.pngbin0 -> 324 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_spectre_right.pngbin0 -> 322 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_spectre_top.pngbin0 -> 350 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_tower.pngbin0 -> 14094 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_tower_inv.pngbin0 -> 1709 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_bk.pngbin0 -> 136 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_bt.pngbin0 -> 119 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_ft.pngbin0 -> 188 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_ft_off.pngbin0 -> 182 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_lt.pngbin0 -> 137 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_rt.pngbin0 -> 137 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wee_tp.pngbin0 -> 129 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_wii_inv.pngbin0 -> 2167 bytes
-rw-r--r--homedecor_modpack/computer/textures/computer_yellow.pngbin0 -> 114 bytes
-rw-r--r--homedecor_modpack/computer/textures/homedecor_plastic_base.pngbin0 -> 332 bytes
-rw-r--r--homedecor_modpack/computer/textures/homedecor_plastic_base_inv.pngbin0 -> 436 bytes
-rw-r--r--homedecor_modpack/computer/textures/homedecor_plastic_sheeting.pngbin0 -> 116 bytes
-rw-r--r--homedecor_modpack/computer/textures/monitor_display.pngbin0 -> 6421 bytes
-rw-r--r--homedecor_modpack/computer/textures/monitor_plastic.pngbin0 -> 164 bytes
-rw-r--r--homedecor_modpack/computer/textures/tetris_arcade.pngbin0 -> 9326 bytes
-rw-r--r--homedecor_modpack/fake_fire/depends.txt1
-rw-r--r--homedecor_modpack/fake_fire/init.lua235
-rw-r--r--homedecor_modpack/fake_fire/models/fancy_fire.obj133
-rw-r--r--homedecor_modpack/fake_fire/sounds/fire_extinguish.oggbin0 -> 8401 bytes
-rw-r--r--homedecor_modpack/fake_fire/sounds/fire_small.oggbin0 -> 43539 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/chimney_top.pngbin0 -> 113 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/embers_animated.pngbin0 -> 844 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/fake_fire_animated.pngbin0 -> 4671 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/fake_fire_embers.pngbin0 -> 214 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/fake_fire_inv.pngbin0 -> 640 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/fake_fire_logs.pngbin0 -> 2037 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/fancy_fire_inv.pngbin0 -> 526 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/flint_and_steel.pngbin0 -> 373 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/ice_fire_animated.pngbin0 -> 3117 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/ice_fire_inv.pngbin0 -> 409 bytes
-rw-r--r--homedecor_modpack/fake_fire/textures/smoke_particle.pngbin0 -> 358 bytes
-rw-r--r--homedecor_modpack/homedecor/bathroom_furniture.lua106
-rw-r--r--homedecor_modpack/homedecor/bathroom_sanitation.lua282
-rw-r--r--homedecor_modpack/homedecor/bedroom.lua209
-rw-r--r--homedecor_modpack/homedecor/books.lua173
-rw-r--r--homedecor_modpack/homedecor/climate-control.lua158
-rw-r--r--homedecor_modpack/homedecor/clocks.lua99
-rw-r--r--homedecor_modpack/homedecor/cobweb.lua167
-rw-r--r--homedecor_modpack/homedecor/copyright.txt18
-rw-r--r--homedecor_modpack/homedecor/crafts.lua3417
-rw-r--r--homedecor_modpack/homedecor/depends.txt12
-rw-r--r--homedecor_modpack/homedecor/doors_and_gates.lua641
-rw-r--r--homedecor_modpack/homedecor/electrics.lua78
-rw-r--r--homedecor_modpack/homedecor/electronics.lua157
-rw-r--r--homedecor_modpack/homedecor/exterior.lua398
-rw-r--r--homedecor_modpack/homedecor/fences.lua304
-rw-r--r--homedecor_modpack/homedecor/foyer.lua61
-rw-r--r--homedecor_modpack/homedecor/furniture.lua164
-rw-r--r--homedecor_modpack/homedecor/furniture_medieval.lua114
-rw-r--r--homedecor_modpack/homedecor/furniture_recipes.lua262
-rw-r--r--homedecor_modpack/homedecor/gastronomy.lua208
-rw-r--r--homedecor_modpack/homedecor/handlers/expansion.lua362
-rw-r--r--homedecor_modpack/homedecor/handlers/furnaces.lua279
-rw-r--r--homedecor_modpack/homedecor/handlers/init.lua22
-rw-r--r--homedecor_modpack/homedecor/handlers/inventory.lua173
-rw-r--r--homedecor_modpack/homedecor/handlers/nodeboxes.lua62
-rw-r--r--homedecor_modpack/homedecor/handlers/registration.lua95
-rw-r--r--homedecor_modpack/homedecor/handlers/sit.lua32
-rw-r--r--homedecor_modpack/homedecor/handlers/water_particles.lua115
-rw-r--r--homedecor_modpack/homedecor/init.lua134
-rw-r--r--homedecor_modpack/homedecor/kitchen_appliances.lua251
-rw-r--r--homedecor_modpack/homedecor/kitchen_furniture.lua152
-rw-r--r--homedecor_modpack/homedecor/laundry.lua61
-rw-r--r--homedecor_modpack/homedecor/lighting.lua557
-rw-r--r--homedecor_modpack/homedecor/listnodes.sh13
-rw-r--r--homedecor_modpack/homedecor/locale/de.txt221
-rw-r--r--homedecor_modpack/homedecor/locale/es.txt192
-rw-r--r--homedecor_modpack/homedecor/locale/fr.txt178
-rw-r--r--homedecor_modpack/homedecor/locale/pt.txt196
-rw-r--r--homedecor_modpack/homedecor/locale/template.txt230
-rw-r--r--homedecor_modpack/homedecor/misc-nodes.lua604
-rw-r--r--homedecor_modpack/homedecor/models/forniture_armchair.obj539
-rw-r--r--homedecor_modpack/homedecor/models/forniture_chains.obj930
-rw-r--r--homedecor_modpack/homedecor/models/forniture_torch.obj437
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_4_bottles.obj1957
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_ac.obj75
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_analog_clock.obj507
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_banister_diagonal_left.obj170
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_banister_diagonal_right.obj167
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_banister_horizontal.obj87
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_barbecue.obj362
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bathroom_faucet.obj993
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bathroom_set.obj898
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bathroom_sink.obj1087
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bed_extended.obj347
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bed_kingsize.obj528
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bed_regular.obj337
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bedroom_wardrobe.obj168
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_beer_mug.obj421
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_beer_taps.obj1198
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bench_large_1.obj354
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bench_large_2.obj646
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_book.obj240
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_book_open.obj419
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_bottle.obj594
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_calendar.obj68
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_candle_thick.obj165
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_candle_thin.obj165
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_candlestick.obj716
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_ceiling_lamp.obj2034
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_ceiling_lantern.obj208
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_chimney.obj72
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_coatrack.obj2235
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_coffeemaker.obj1852
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_copper_pans.obj456
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_cube.obj23
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_cutlery_set.obj678
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_dartboard.obj236
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_deckchair.obj410
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_desk.obj245
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_desk_fan.b3dbin0 -> 17773 bytes
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_desk_fan_uv.pngbin0 -> 165 bytes
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_desk_globe.obj1103
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_desk_lamp.obj1223
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_doghouse.obj325
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_closet.obj518
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_closet_right.obj518
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_fancy.obj112
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_fancy_right.obj112
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_japanese_closed.obj438
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_japanese_open.obj438
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_plain.obj35
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_plain_right.obj35
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_wood_glass.obj243
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_wood_glass_right.obj243
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea.obj114
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea_right.obj114
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_wrought_iron.obj88
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_door_wrought_iron_right.obj88
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_dvd_cabinet.obj137
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire.obj60
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire_corner.obj79
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_fence_chainlink.obj105
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_fence_chainlink_corner.obj162
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_filing_cabinet.obj56
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_fishtank.obj1506
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_flowerpot.obj910
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_grandfather_clock.obj390
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_ground_lantern.obj287
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_hanging_lantern.obj538
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_ironing_board.obj416
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_kitchen_chair.obj205
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_kitchen_faucet.obj572
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_kitchen_sink.obj104
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_medicine_cabinet.obj62
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_medicine_cabinet_open.obj100
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_office_chair_basic.obj970
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_office_chair_upscale.obj1956
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_oil_lamp.obj1705
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_oil_lamp_tabletop.obj610
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_openframe_bookshelf.obj644
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_painting.obj111
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_paper_towel.obj225
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_piano.obj318
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_picture_frame.obj135
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_plasma_ball.obj621
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_pool_table.obj5895
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_potted_plant.obj394
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_radiator.obj2458
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_refrigerator.obj464
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_round_pole.obj111
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_shower_head.obj390
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_shrubbery.obj117
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_skateboard.obj425
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_slope.obj26
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_slope_inner_corner.obj34
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_slope_outer_corner.obj24
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_small_rug.obj241
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_soda_machine.obj34
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_speaker_large.obj60
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_speaker_large_open.obj473
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_speaker_small.obj64
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_spiral_staircase.obj1440
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_sport_bench.obj703
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_standing_lamp.obj2429
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_table_lamp.obj2367
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_table_small_round.obj303
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_table_small_square.obj48
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_telephone.obj927
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_toilet_closed.obj1418
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_toilet_open.obj1755
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_toilet_paper.obj223
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_tool_cabinet.obj1589
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_towel_rod.obj198
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_trash_can.obj316
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_trash_can_green.obj822
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_trash_can_green_open.obj346
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_trophy.obj953
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_wall_japanese_bottom.obj319
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_wall_japanese_middle.obj382
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_wall_japanese_top.obj319
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_wall_lamp.obj341
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_wall_sconce.obj423
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_well.obj1949
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_window_shutter.obj223
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_windowblind_thick.obj426
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_windowblind_thin.obj428
-rw-r--r--homedecor_modpack/homedecor/models/homedecor_wine_rack.obj4925
-rw-r--r--homedecor_modpack/homedecor/office.lua118
-rw-r--r--homedecor_modpack/homedecor/roofing.lua318
-rw-r--r--homedecor_modpack/homedecor/shutters.lua52
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_book_close.oggbin0 -> 4132 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_door_close.oggbin0 -> 8901 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_door_open.oggbin0 -> 10164 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_doorbell.oggbin0 -> 14497 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_faucet.oggbin0 -> 19961 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_gate_open_close.oggbin0 -> 6894 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_shower.oggbin0 -> 29317 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_telephone_ringing.oggbin0 -> 33622 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_toilet_flush.oggbin0 -> 31972 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/homedecor_trash_all.oggbin0 -> 32753 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/insert_coin.oggbin0 -> 9497 bytes
-rw-r--r--homedecor_modpack/homedecor/sounds/toaster.oggbin0 -> 5820 bytes
-rw-r--r--homedecor_modpack/homedecor/tables.lua189
-rw-r--r--homedecor_modpack/homedecor/textures/3dforniture_taps_brass_inv.pngbin0 -> 5242 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/3dforniture_taps_inv.pngbin0 -> 2185 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/flowers_bonsai.pngbin0 -> 276 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/flowers_cactus.pngbin0 -> 178 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/forniture_chains_inv.pngbin0 -> 3569 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/forniture_coal.pngbin0 -> 239 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/forniture_marble_base_ducha_top.pngbin0 -> 778 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/forniture_marble_top_toilet.pngbin0 -> 801 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/forniture_torch_flame.pngbin0 -> 6313 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/forniture_torch_inv.pngbin0 -> 4115 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_4_bottles_brown_inv.pngbin0 -> 6211 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_4_bottles_green_inv.pngbin0 -> 6348 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_4_bottles_multi_inv.pngbin0 -> 8016 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ac.pngbin0 -> 178 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_alarm_clock_back.pngbin0 -> 146 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_alarm_clock_bottom.pngbin0 -> 109 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_alarm_clock_front.pngbin0 -> 133 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_alarm_clock_inv.pngbin0 -> 2848 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_alarm_clock_sides.pngbin0 -> 98 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_alarm_clock_top.pngbin0 -> 118 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_analog_clock_back.pngbin0 -> 88 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_analog_clock_face.pngbin0 -> 129 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_analog_clock_plastic_inv.pngbin0 -> 3660 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_analog_clock_wood_inv.pngbin0 -> 4967 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_banister_brass_inv.pngbin0 -> 3456 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_banister_white_dark_inv.pngbin0 -> 2815 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_banister_wood_inv.pngbin0 -> 3207 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_banister_wrought_iron_inv.pngbin0 -> 3136 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_barbecue_meat.pngbin0 -> 771 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_set_cup.pngbin0 -> 531 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_set_inv.pngbin0 -> 2469 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_set_mirror.pngbin0 -> 368 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothbrush.pngbin0 -> 205 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothpaste.pngbin0 -> 430 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_set_tray.pngbin0 -> 223 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_sink_inv.pngbin0 -> 4850 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_bg.pngbin0 -> 190 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_fg.pngbin0 -> 381 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bed_bottom.pngbin0 -> 240 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bed_frame.pngbin0 -> 471 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bed_inv.pngbin0 -> 5875 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_inv.pngbin0 -> 5752 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_overlay_inv.pngbin0 -> 1407 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bed_overlay_inv.pngbin0 -> 1260 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_beer_mug.pngbin0 -> 1300 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_beer_mug_inv.pngbin0 -> 5489 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_beertap_inv.pngbin0 -> 3917 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bench_large_1_inv.pngbin0 -> 6154 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bench_large_2_inv.pngbin0 -> 6581 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_blank_canvas.pngbin0 -> 2435 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_blanktile.pngbin0 -> 96 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_book_cover.pngbin0 -> 1899 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_book_cover_trim.pngbin0 -> 127 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_book_edges.pngbin0 -> 780 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_book_inv.pngbin0 -> 1103 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_book_pages.pngbin0 -> 1413 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_book_trim_inv.pngbin0 -> 2732 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_brown.pngbin0 -> 2220 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_brown2.pngbin0 -> 2220 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_brown3.pngbin0 -> 2220 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_brown4.pngbin0 -> 2219 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_brown_inv.pngbin0 -> 3149 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_green.pngbin0 -> 2242 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_bottle_green_inv.pngbin0 -> 3177 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_brass_ingot.pngbin0 -> 309 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_calendar.pngbin0 -> 295 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_calendar_inv.pngbin0 -> 2856 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_candle_flame.pngbin0 -> 1490 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_candle_inv.pngbin0 -> 1186 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_candle_sides.pngbin0 -> 390 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_candle_thin_inv.pngbin0 -> 794 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_candlestick_brass_inv.pngbin0 -> 2323 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_candlestick_wrought_iron_inv.pngbin0 -> 2091 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cardbox_big_sides.pngbin0 -> 204 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cardbox_big_tb.pngbin0 -> 206 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cardbox_sides.pngbin0 -> 165 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cardbox_tb.pngbin0 -> 170 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_bottom.pngbin0 -> 27988 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_inv.pngbin0 -> 3658 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_sides.pngbin0 -> 140 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_top.pngbin0 -> 24832 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_glass.pngbin0 -> 483 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_inv.pngbin0 -> 3450 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_lantern_inv.pngbin0 -> 2167 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_paint.pngbin0 -> 231 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_paint_roller.pngbin0 -> 210 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ceiling_tile.pngbin0 -> 282 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_chainlink_brass.pngbin0 -> 178 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_chainlink_steel.pngbin0 -> 175 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_chimney_tb.pngbin0 -> 178 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female1.pngbin0 -> 740 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female1_preview.pngbin0 -> 369 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female2.pngbin0 -> 2201 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female2_preview.pngbin0 -> 677 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female3.pngbin0 -> 935 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female3_preview.pngbin0 -> 447 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female4.pngbin0 -> 1198 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female4_preview.pngbin0 -> 591 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female5.pngbin0 -> 1219 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_female5_preview.pngbin0 -> 880 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male1.pngbin0 -> 1241 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male1_preview.pngbin0 -> 489 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male2.pngbin0 -> 1357 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male2_preview.pngbin0 -> 523 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male3.pngbin0 -> 2330 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male3_preview.pngbin0 -> 701 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male4.pngbin0 -> 2173 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male4_preview.pngbin0 -> 623 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male5.pngbin0 -> 916 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_clothes_male5_preview.pngbin0 -> 409 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coatrack_inv.pngbin0 -> 3360 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coatrack_wallmount_inv.pngbin0 -> 3704 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cobweb.pngbin0 -> 180 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cobweb_plantlike.pngbin0 -> 180 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cobweb_torchlike.pngbin0 -> 182 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coffeemaker_case.pngbin0 -> 812 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coffeemaker_cup.pngbin0 -> 319 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coffeemaker_decanter.pngbin0 -> 569 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coffeemaker_inv.pngbin0 -> 4192 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_coin.pngbin0 -> 331 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_copper_pans_inv.pngbin0 -> 3511 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_copper_strip.pngbin0 -> 326 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_copper_wire.pngbin0 -> 354 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_curtain.pngbin0 -> 465 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_curtain_open.pngbin0 -> 425 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_curtainrod_brass_inv.pngbin0 -> 2704 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_curtainrod_wood_inv.pngbin0 -> 1500 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_curtainrod_wrought_iron_inv.pngbin0 -> 1989 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cutlery_set.pngbin0 -> 3587 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_cutlery_set_inv.pngbin0 -> 5241 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dartboard.pngbin0 -> 1758 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dartboard_inv.pngbin0 -> 8294 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_deckchair.pngbin0 -> 314 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_deckchair_striped_blue.pngbin0 -> 355 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_drawers.pngbin0 -> 666 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_fan_body.pngbin0 -> 266 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_fan_inv.pngbin0 -> 2835 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_globe_inv.pngbin0 -> 6694 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_inv.pngbin0 -> 5103 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_lamp_metal_inv.pngbin0 -> 1422 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_desk_lamp_stem_inv.pngbin0 -> 1493 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_digital_clock_back.pngbin0 -> 131 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_digital_clock_edges.pngbin0 -> 72 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_digital_clock_front.pngbin0 -> 136 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_digital_clock_inv.pngbin0 -> 3465 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dishwasher_back.pngbin0 -> 353 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dishwasher_bottom.pngbin0 -> 345 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dishwasher_front.pngbin0 -> 117 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dishwasher_sides.pngbin0 -> 320 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dishwasher_top.pngbin0 -> 361 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_doghouse_inv.pngbin0 -> 4610 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_bedroom.pngbin0 -> 1725 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_bedroom_inv.pngbin0 -> 1341 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany.pngbin0 -> 3613 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany_inv.pngbin0 -> 1150 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_closet_oak.pngbin0 -> 3675 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_closet_oak_inv.pngbin0 -> 1230 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy.pngbin0 -> 1699 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_insert.pngbin0 -> 563 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_inv.pngbin0 -> 1410 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_glass.pngbin0 -> 731 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_glass_inv.pngbin0 -> 332 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_japanese_inv.pngbin0 -> 4005 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_insert.pngbin0 -> 305 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany.pngbin0 -> 4538 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany_inv.pngbin0 -> 2400 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak.pngbin0 -> 4780 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak_inv.pngbin0 -> 2400 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white.pngbin0 -> 1418 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white_inv.pngbin0 -> 1315 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_plain.pngbin0 -> 5683 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wood_plain_inv.pngbin0 -> 3305 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_woodglass2.pngbin0 -> 2290 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_woodglass2_inv.pngbin0 -> 1242 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_woodglass_inv.pngbin0 -> 1235 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea.pngbin0 -> 1649 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea_insert.pngbin0 -> 229 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron.pngbin0 -> 12050 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron_inv.pngbin0 -> 5522 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_doorbell.pngbin0 -> 167 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_doorbell_inv.pngbin0 -> 1483 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_drawer_small.pngbin0 -> 226 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dryer_back.pngbin0 -> 204 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dryer_bottom.pngbin0 -> 235 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dryer_front.pngbin0 -> 222 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dryer_sides.pngbin0 -> 193 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dryer_top.pngbin0 -> 202 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvd_player.pngbin0 -> 102 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_back.pngbin0 -> 268 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_front.pngbin0 -> 704 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdvcr_back.pngbin0 -> 170 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdvcr_bottom.pngbin0 -> 72 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdvcr_front.pngbin0 -> 147 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdvcr_inv.pngbin0 -> 2816 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdvcr_sides.pngbin0 -> 82 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_dvdvcr_top.pngbin0 -> 112 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_earth.pngbin0 -> 15871 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_embers.pngbin0 -> 1148 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fan_blades.pngbin0 -> 372 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_barbed_wire.pngbin0 -> 494 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_brass.pngbin0 -> 5001 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_front.pngbin0 -> 230 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_top.pngbin0 -> 243 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_fb.pngbin0 -> 218 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_sides.pngbin0 -> 228 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_tb.pngbin0 -> 214 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_sides.pngbin0 -> 2470 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_tb.pngbin0 -> 274 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_picket.pngbin0 -> 1939 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_picket_backside.pngbin0 -> 1855 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_picket_white.pngbin0 -> 550 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_picket_white_backside.pngbin0 -> 487 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside.pngbin0 -> 852 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside2.pngbin0 -> 852 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_front.pngbin0 -> 842 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_right.pngbin0 -> 832 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_tb.pngbin0 -> 262 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_front.pngbin0 -> 796 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_sides.pngbin0 -> 436 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_privacy_tb.pngbin0 -> 431 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron.pngbin0 -> 3789 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_fb.pngbin0 -> 2385 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_sides.pngbin0 -> 228 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_tb.pngbin0 -> 175 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_bottom.pngbin0 -> 675 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_front.pngbin0 -> 683 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_filter.pngbin0 -> 245 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes.pngbin0 -> 687 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes_lighted.pngbin0 -> 648 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel.pngbin0 -> 1611 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel_lighted.pngbin0 -> 1575 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_sides.pngbin0 -> 110 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_sides_lighted.pngbin0 -> 303 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top.pngbin0 -> 82 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top_lighted.pngbin0 -> 388 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flower_pot_black.pngbin0 -> 593 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flower_pot_green.pngbin0 -> 828 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flower_pot_terracotta.pngbin0 -> 1252 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flowerbox_bottom.pngbin0 -> 137 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flowerbox_inv.pngbin0 -> 4196 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flowerbox_sides.pngbin0 -> 112 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flowerbox_top.pngbin0 -> 317 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_flowerpot_small_inv.pngbin0 -> 816 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_edges.pngbin0 -> 260 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_fb.pngbin0 -> 351 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_fb.pngbin0 -> 237 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_lr.pngbin0 -> 241 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_tb.pngbin0 -> 243 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_picket_back.pngbin0 -> 1849 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_picket_front.pngbin0 -> 1956 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_back.pngbin0 -> 514 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_front.pngbin0 -> 556 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_black.pngbin0 -> 211 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_brass.pngbin0 -> 344 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_bright.pngbin0 -> 186 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold.pngbin0 -> 381 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold2.pngbin0 -> 372 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_lines_overlay.pngbin0 -> 83 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_metal_wrought_iron.pngbin0 -> 381 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_plastic_black.pngbin0 -> 217 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_quilted_paper.pngbin0 -> 333 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_terrycloth.pngbin0 -> 253 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_wood_boards_overlay.pngbin0 -> 98 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_wood_luxury.pngbin0 -> 1314 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_wood_old.pngbin0 -> 1104 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_wood_plain.pngbin0 -> 605 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_generic_wood_red.pngbin0 -> 997 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_face_clean.pngbin0 -> 96 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_large_edges.pngbin0 -> 257 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_large_inv.pngbin0 -> 2584 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_large_tb.pngbin0 -> 152 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round.pngbin0 -> 338 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round_inv.pngbin0 -> 4002 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square.pngbin0 -> 390 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square_inv.pngbin0 -> 4026 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides.pngbin0 -> 135 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides_ceiling.pngbin0 -> 138 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_tb.pngbin0 -> 140 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides.pngbin0 -> 350 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides_ceiling.pngbin0 -> 353 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_tb.pngbin0 -> 352 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_white_sides.pngbin0 -> 178 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_yellow_sides.pngbin0 -> 458 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_white_sides.pngbin0 -> 134 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_yellow_sides.pngbin0 -> 317 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_white_bottom.pngbin0 -> 119 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_white_top.pngbin0 -> 172 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_bottom.pngbin0 -> 455 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_top.pngbin0 -> 616 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face.pngbin0 -> 454 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face_edge.pngbin0 -> 172 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_inv.pngbin0 -> 2513 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ground_lantern_inv.pngbin0 -> 1292 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_hanging_lantern_inv.pngbin0 -> 2112 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_heater_back.pngbin0 -> 350 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_heater_front.pngbin0 -> 450 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_heater_inv.pngbin0 -> 3951 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_heater_sides.pngbin0 -> 347 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_heater_tb.pngbin0 -> 300 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_heating_element.pngbin0 -> 369 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_ic.pngbin0 -> 293 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_japanese_paper.pngbin0 -> 591 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_jpn_door_inv.pngbin0 -> 2494 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_bevel.pngbin0 -> 87 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front.pngbin0 -> 336 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front_half.pngbin0 -> 297 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top.pngbin0 -> 324 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_granite.pngbin0 -> 736 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_marble.pngbin0 -> 760 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_steel.pngbin0 -> 102 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_wood.pngbin0 -> 324 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_faucet_inv.pngbin0 -> 4609 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_kitchen_sink_top.pngbin0 -> 375 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_lattice.pngbin0 -> 783 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_large.pngbin0 -> 360 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_sides.pngbin0 -> 377 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_tb.pngbin0 -> 379 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_lattice_vegetal.pngbin0 -> 3077 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_light.pngbin0 -> 524 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_light_switch_back.pngbin0 -> 310 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_light_switch_edges.pngbin0 -> 175 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_light_switch_front.pngbin0 -> 142 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_light_switch_inv.pngbin0 -> 3147 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_marble.pngbin0 -> 818 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inside.pngbin0 -> 129 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inv.pngbin0 -> 5695 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_mirror.pngbin0 -> 126 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_microwave_front.pngbin0 -> 503 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_microwave_front_active.pngbin0 -> 611 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_microwave_top.pngbin0 -> 638 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_motor.pngbin0 -> 247 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_1_drawer_front.pngbin0 -> 892 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_2_drawer_front.pngbin0 -> 709 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_back.pngbin0 -> 549 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_lr.pngbin0 -> 681 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_tb.pngbin0 -> 658 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_1_drawer_front.pngbin0 -> 949 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_2_drawer_front.pngbin0 -> 731 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_back.pngbin0 -> 675 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_lr.pngbin0 -> 742 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_tb.pngbin0 -> 714 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_office_chair_basic.pngbin0 -> 5309 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_office_chair_upscale.pngbin0 -> 4558 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oil_extract.pngbin0 -> 1966 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oil_lamp_glass.pngbin0 -> 172 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oil_lamp_inv.pngbin0 -> 3830 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop.pngbin0 -> 784 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop_inv.pngbin0 -> 1288 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oil_lamp_wick.pngbin0 -> 170 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_openframe_bookshelf_books.pngbin0 -> 1018 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_outlet_back.pngbin0 -> 312 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_outlet_edges.pngbin0 -> 200 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_outlet_inv.pngbin0 -> 3906 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_bottom.pngbin0 -> 229 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_front.pngbin0 -> 431 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_front_active.pngbin0 -> 552 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_side.pngbin0 -> 224 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_steel_bottom.pngbin0 -> 229 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_steel_front.pngbin0 -> 415 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_steel_front_active.pngbin0 -> 518 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_steel_side.pngbin0 -> 171 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_steel_top.pngbin0 -> 270 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_oven_top.pngbin0 -> 173 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting1.pngbin0 -> 9123 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting10.pngbin0 -> 9038 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting11.pngbin0 -> 6779 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting12.pngbin0 -> 8922 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting13.pngbin0 -> 6264 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting14.pngbin0 -> 5304 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting15.pngbin0 -> 5343 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting16.pngbin0 -> 6368 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting17.pngbin0 -> 5741 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting18.pngbin0 -> 7218 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting19.pngbin0 -> 7925 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting2.pngbin0 -> 8266 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting20.pngbin0 -> 8526 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting3.pngbin0 -> 9868 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting4.pngbin0 -> 8410 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting5.pngbin0 -> 9083 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting6.pngbin0 -> 8832 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting7.pngbin0 -> 9445 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting8.pngbin0 -> 7524 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting9.pngbin0 -> 7360 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_painting_back.pngbin0 -> 2681 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_paper_towel_inv.pngbin0 -> 4236 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_paraffin.pngbin0 -> 345 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_piano_inv.pngbin0 -> 2258 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_piano_keys.pngbin0 -> 436 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_picture_frame1_inv.pngbin0 -> 5058 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_picture_frame2_inv.pngbin0 -> 5126 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_picture_frame_back.pngbin0 -> 172 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_picture_frame_image1.pngbin0 -> 10487 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_picture_frame_image2.pngbin0 -> 8635 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_plasma_ball_glass.pngbin0 -> 163 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_plasma_ball_inv.pngbin0 -> 6086 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_plasma_ball_streamers.pngbin0 -> 217697 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_plasma_storm.pngbin0 -> 221379 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_plastic_sheeting.pngbin0 -> 293 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_plastic_strips.pngbin0 -> 123 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pole_brass_inv.pngbin0 -> 2574 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pole_wrought_iron_inv.pngbin0 -> 1443 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_polished_copper.pngbin0 -> 1692 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pool_table_baize.pngbin0 -> 617 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pool_table_balls.pngbin0 -> 10367 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pool_table_cue.pngbin0 -> 1415 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pool_table_inv.pngbin0 -> 4322 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_pool_table_pockets.pngbin0 -> 1062 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_power_crystal.pngbin0 -> 817 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_projection_screen.pngbin0 -> 156 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_projection_screen_inv.pngbin0 -> 384 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_radiator_controls.pngbin0 -> 298 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_radiator_inv.pngbin0 -> 5768 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel.pngbin0 -> 2978 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel_inv.pngbin0 -> 3907 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_refrigerator_white.pngbin0 -> 1966 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_refrigerator_white_inv.pngbin0 -> 4157 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_roof_tile_terracotta.pngbin0 -> 748 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_rope_texture.pngbin0 -> 562 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_rug_large.pngbin0 -> 1079 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_rug_persian.pngbin0 -> 1111 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_rug_small.pngbin0 -> 1079 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt.pngbin0 -> 250 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt_inv.pngbin0 -> 1907 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_glass.pngbin0 -> 221 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta.pngbin0 -> 438 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta_inv.pngbin0 -> 2450 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_wood.pngbin0 -> 880 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shingles_wood_inv.pngbin0 -> 2388 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shower_head.pngbin0 -> 580 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shower_head_inv.pngbin0 -> 3958 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_green.pngbin0 -> 198 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_green_bottom.pngbin0 -> 767 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_red.pngbin0 -> 318 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_red_bottom.pngbin0 -> 865 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_roots.pngbin0 -> 668 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow.pngbin0 -> 313 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow_bottom.pngbin0 -> 876 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_brass_post.pngbin0 -> 506 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_back.pngbin0 -> 425 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_bottom.pngbin0 -> 158 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_front.pngbin0 -> 437 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_side.pngbin0 -> 312 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_top.pngbin0 -> 160 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post.pngbin0 -> 488 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_back.pngbin0 -> 423 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_bottom.pngbin0 -> 150 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_front.pngbin0 -> 438 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_side.pngbin0 -> 315 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_top.pngbin0 -> 151 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_silicon.pngbin0 -> 769 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_skateboard.pngbin0 -> 5339 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_skateboard_inv.pngbin0 -> 2392 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_skylight_frosted.pngbin0 -> 372 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_skylight_frosted_inv.pngbin0 -> 906 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_skylight_inv.pngbin0 -> 1468 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_soda_can.pngbin0 -> 177 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_soda_machine.pngbin0 -> 1398 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_speaker_driver.pngbin0 -> 302 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_speaker_driver_inv.pngbin0 -> 245 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_speaker_front.pngbin0 -> 92 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_speaker_open_front.pngbin0 -> 603 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_speaker_sides.pngbin0 -> 539 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_sport_bench_inv.pngbin0 -> 4627 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stained_glass.pngbin0 -> 1515 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_standing_lamp_foot_inv.pngbin0 -> 824 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_standing_lamp_top_inv.pngbin0 -> 785 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_steam.pngbin0 -> 129 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_steel_strip.pngbin0 -> 326 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_steel_wire.pngbin0 -> 321 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stereo_back.pngbin0 -> 163 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stereo_bottom.pngbin0 -> 170 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stereo_front.pngbin0 -> 183 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stereo_left.pngbin0 -> 123 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stereo_top.pngbin0 -> 115 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_stonepath_inv.pngbin0 -> 2801 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_swing_inv.pngbin0 -> 2475 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_swing_top.pngbin0 -> 359 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_swingrope_sides.pngbin0 -> 75 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_table_lamp_foot_inv.pngbin0 -> 984 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_table_lamp_top_inv.pngbin0 -> 2491 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_table_legs_brass.pngbin0 -> 351 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_table_legs_wrought_iron.pngbin0 -> 352 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_table_standing_lamp_lightbulb.pngbin0 -> 581 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_tatami.pngbin0 -> 1876 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_telephone_base.pngbin0 -> 209 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_telephone_cord.pngbin0 -> 300 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_telephone_dial.pngbin0 -> 305 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_telephone_handset.pngbin0 -> 320 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_telephone_inv.pngbin0 -> 4822 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_television_back.pngbin0 -> 162 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_television_bottom.pngbin0 -> 118 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_television_front.pngbin0 -> 571 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_television_front_animated.pngbin0 -> 2128 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_television_left.pngbin0 -> 121 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_television_top.pngbin0 -> 137 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_terracotta_base.pngbin0 -> 775 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_toaster_inv.pngbin0 -> 4118 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_toaster_sides.pngbin0 -> 358 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_toaster_toploaf.pngbin0 -> 946 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_toilet_paper_inv.pngbin0 -> 4153 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_drawers.pngbin0 -> 365 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_inv.pngbin0 -> 4549 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_misc.pngbin0 -> 1296 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_towel_rod_inv.pngbin0 -> 3492 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_trash_can.pngbin0 -> 831 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_trash_can_green_inv.pngbin0 -> 2193 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_trash_can_inv.pngbin0 -> 6379 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_trophy_inv.pngbin0 -> 5153 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_utility_table_edges.pngbin0 -> 708 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_utility_table_legs.pngbin0 -> 430 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_utility_table_legs_inv.pngbin0 -> 5050 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_utility_table_tb.pngbin0 -> 814 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_vcr.pngbin0 -> 124 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wall_lamp_inv.pngbin0 -> 1491 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wall_sconce_back.pngbin0 -> 801 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wall_sconce_inv.pngbin0 -> 4536 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wardrobe_doors.pngbin0 -> 668 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wardrobe_drawers.pngbin0 -> 683 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wardrobe_inv.pngbin0 -> 5893 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_washing_machine_back.pngbin0 -> 206 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_washing_machine_bottom.pngbin0 -> 230 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_washing_machine_front.pngbin0 -> 206 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_washing_machine_sides.pngbin0 -> 188 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_washing_machine_top.pngbin0 -> 221 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_water_particle.pngbin0 -> 118 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_welcome_mat_bottom.pngbin0 -> 528 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_welcome_mat_brown.pngbin0 -> 1170 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_welcome_mat_green.pngbin0 -> 1442 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_welcome_mat_grey.pngbin0 -> 667 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_well_inv.pngbin0 -> 4311 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_window_frame.pngbin0 -> 90 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_window_quartered.pngbin0 -> 108 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_window_shutter.pngbin0 -> 278 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_window_shutter_inv.pngbin0 -> 4871 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_window_sides.pngbin0 -> 443 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_windowblind_strings.pngbin0 -> 251 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_windowblind_thick_inv.pngbin0 -> 7008 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_windowblind_thin_inv.pngbin0 -> 7000 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_windowblinds.pngbin0 -> 288 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wine_rack_inv.pngbin0 -> 8195 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_large_edges.pngbin0 -> 708 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_large_inv.pngbin0 -> 4741 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_large_tb.pngbin0 -> 759 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round.pngbin0 -> 789 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round_inv.pngbin0 -> 5521 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square.pngbin0 -> 1022 bytes
-rw-r--r--homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square_inv.pngbin0 -> 4795 bytes
-rw-r--r--homedecor_modpack/homedecor/trash_cans.lua64
-rw-r--r--homedecor_modpack/homedecor/wardrobe.lua73
-rw-r--r--homedecor_modpack/homedecor/window_treatments.lua219
-rw-r--r--homedecor_modpack/homedecor_3d_extras/copyright.txt12
-rw-r--r--homedecor_modpack/homedecor_3d_extras/depends.txt3
-rw-r--r--homedecor_modpack/homedecor_3d_extras/init.lua92
-rw-r--r--homedecor_modpack/homedecor_3d_extras/models/3dbookshelf.obj696
-rw-r--r--homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle.obj216
-rw-r--r--homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle_steel.obj180
-rw-r--r--homedecor_modpack/homedecor_3d_extras/models/3dvessels_drink.obj204
-rw-r--r--homedecor_modpack/homedecor_3d_extras/models/3dvessels_shelf.obj1730
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_books.pngbin0 -> 776 bytes
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_inside_back.pngbin0 -> 181 bytes
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/3dvessels_drinking_glass_inv.pngbin0 -> 1580 bytes
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/3dvessels_glass_bottle_inv.pngbin0 -> 1838 bytes
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/3dvessels_shelf_glass.pngbin0 -> 195 bytes
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/3dvessels_steel_bottle_inv.pngbin0 -> 1909 bytes
-rw-r--r--homedecor_modpack/homedecor_3d_extras/textures/bottle_metal_bright.pngbin0 -> 200 bytes
-rw-r--r--homedecor_modpack/inbox/depends.txt1
-rw-r--r--homedecor_modpack/inbox/init.lua107
-rw-r--r--homedecor_modpack/inbox/models/inbox_mailbox.obj275
-rw-r--r--homedecor_modpack/inbox/textures/inbox_grey_metal.pngbin0 -> 152 bytes
-rw-r--r--homedecor_modpack/inbox/textures/inbox_red_metal.pngbin0 -> 319 bytes
-rw-r--r--homedecor_modpack/inbox/textures/inbox_white_metal.pngbin0 -> 156 bytes
-rw-r--r--homedecor_modpack/inbox/textures/mailbox_inv.pngbin0 -> 2916 bytes
-rw-r--r--homedecor_modpack/itemframes/depends.txt1
-rw-r--r--homedecor_modpack/itemframes/init.lua243
-rw-r--r--homedecor_modpack/itemframes/textures/itemframes_frame.pngbin0 -> 104 bytes
-rw-r--r--homedecor_modpack/itemframes/textures/itemframes_pedestal.pngbin0 -> 286 bytes
-rw-r--r--homedecor_modpack/lavalamp/README.txt42
-rw-r--r--homedecor_modpack/lavalamp/depends.txt2
-rw-r--r--homedecor_modpack/lavalamp/init.lua82
-rw-r--r--homedecor_modpack/lavalamp/models/lavalamp.obj550
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_blue.pngbin0 -> 5123 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_green.pngbin0 -> 5187 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_orange.pngbin0 -> 5262 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_red.pngbin0 -> 5380 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_violet.pngbin0 -> 5269 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_yellow.pngbin0 -> 5279 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_blue_inv.pngbin0 -> 2801 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_green_inv.pngbin0 -> 2825 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_off.pngbin0 -> 82 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_orange_inv.pngbin0 -> 2907 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_red_inv.pngbin0 -> 2884 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_violet_inv.pngbin0 -> 2894 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_lamp_yellow_inv.pngbin0 -> 2920 bytes
-rw-r--r--homedecor_modpack/lavalamp/textures/lavalamp_metal.pngbin0 -> 152 bytes
-rw-r--r--homedecor_modpack/lrfurn/README.txt85
-rw-r--r--homedecor_modpack/lrfurn/armchairs.lua59
-rw-r--r--homedecor_modpack/lrfurn/coffeetable.lua124
-rw-r--r--homedecor_modpack/lrfurn/depends.txt2
-rw-r--r--homedecor_modpack/lrfurn/endtable.lua50
-rw-r--r--homedecor_modpack/lrfurn/init.lua64
-rw-r--r--homedecor_modpack/lrfurn/longsofas.lua85
-rw-r--r--homedecor_modpack/lrfurn/models/lrfurn_armchair.obj575
-rw-r--r--homedecor_modpack/lrfurn/models/lrfurn_sofa_long.obj715
-rw-r--r--homedecor_modpack/lrfurn/models/lrfurn_sofa_short.obj595
-rw-r--r--homedecor_modpack/lrfurn/sofas.lua86
-rw-r--r--homedecor_modpack/lrfurn/textures/lrfurn_bg_white.pngbin0 -> 121 bytes
-rw-r--r--homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_back.pngbin0 -> 488 bytes
-rw-r--r--homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_front.pngbin0 -> 473 bytes
-rw-r--r--homedecor_modpack/lrfurn/textures/lrfurn_sofa_bottom.pngbin0 -> 642 bytes
-rw-r--r--homedecor_modpack/lrfurn/textures/lrfurn_sofa_overlay.pngbin0 -> 2855 bytes
-rw-r--r--homedecor_modpack/modpack.txt0
-rw-r--r--homedecor_modpack/plasmascreen/README.md16
-rw-r--r--homedecor_modpack/plasmascreen/depends.txt1
-rw-r--r--homedecor_modpack/plasmascreen/init.lua185
-rw-r--r--homedecor_modpack/plasmascreen/models/plasmascreen_tv.obj135
-rw-r--r--homedecor_modpack/plasmascreen/textures/plasmascreen_back.pngbin0 -> 232 bytes
-rw-r--r--homedecor_modpack/plasmascreen/textures/plasmascreen_case.pngbin0 -> 1118 bytes
-rw-r--r--homedecor_modpack/plasmascreen/textures/plasmascreen_case_off.pngbin0 -> 1118 bytes
-rw-r--r--homedecor_modpack/plasmascreen/textures/plasmascreen_screen_off.pngbin0 -> 324 bytes
-rw-r--r--homedecor_modpack/plasmascreen/textures/plasmascreen_tv_inv.pngbin0 -> 192 bytes
-rw-r--r--homedecor_modpack/plasmascreen/textures/plasmascreen_video.pngbin0 -> 21672 bytes
-rw-r--r--ilights/README.md4
-rw-r--r--ilights/depends.txt4
-rw-r--r--ilights/init.lua89
-rw-r--r--ilights/models/ilights_lamp.obj2287
-rw-r--r--ilights/textures/ilights_lamp_base.pngbin0 -> 1363 bytes
-rw-r--r--ilights/textures/ilights_lamp_bulb.pngbin0 -> 668 bytes
-rw-r--r--ilights/textures/ilights_lamp_bulb_base.pngbin0 -> 486 bytes
-rw-r--r--ilights/textures/ilights_lamp_cage.pngbin0 -> 425 bytes
-rw-r--r--ilights/textures/ilights_lamp_lens.pngbin0 -> 651 bytes
-rw-r--r--inventory_sorter/README9
-rw-r--r--inventory_sorter/depends.txt1
-rw-r--r--inventory_sorter/init.lua245
-rw-r--r--inventory_sorter/textures/inventory_sorter_wand.pngbin0 -> 192 bytes
l---------inventory_sorter/textures/inventory_sorter_wand_amount.png1
l---------inventory_sorter/textures/inventory_sorter_wand_wear.png1
l---------inventory_sorter/textures/inventory_sorter_wand_wise.png1
-rw-r--r--item_tweaks/init.lua3
-rw-r--r--item_tweaks/item_drop.lua314
-rw-r--r--item_tweaks/sounds/item_drop.oggbin0 -> 7367 bytes
-rw-r--r--item_tweaks/sounds/item_drop_pickup.1.oggbin0 -> 9981 bytes
-rw-r--r--item_tweaks/sounds/item_drop_pickup.2.oggbin0 -> 10477 bytes
-rw-r--r--item_tweaks/sounds/item_drop_pickup.3.oggbin0 -> 9586 bytes
-rw-r--r--item_tweaks/sounds/item_drop_pickup.4.oggbin0 -> 9696 bytes
-rw-r--r--jumping/README.md7
-rw-r--r--jumping/jumping/init.lua74
-rw-r--r--jumping/jumping/textures/jumping_cushion_sides.pngbin0 -> 284 bytes
-rw-r--r--jumping/jumping/textures/jumping_cushion_tb.pngbin0 -> 618 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_bottom.pngbin0 -> 451 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides.pngbin0 -> 216 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides_overlay1.pngbin0 -> 185 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides_overlay2.pngbin0 -> 188 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides_overlay3.pngbin0 -> 178 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides_overlay4.pngbin0 -> 180 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides_overlay5.pngbin0 -> 176 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_sides_overlay6.pngbin0 -> 171 bytes
-rw-r--r--jumping/jumping/textures/jumping_trampoline_top.pngbin0 -> 539 bytes
-rw-r--r--jumping/modpack.txt0
-rw-r--r--legacy/depends.txt2
-rw-r--r--legacy/init.lua107
-rw-r--r--legacy/textures/apple_iron.pngbin0 -> 189 bytes
-rw-r--r--legacy/textures/cooked_rat.pngbin0 -> 171 bytes
-rw-r--r--legacy/textures/dungeon_master.pngbin0 -> 5659 bytes
-rw-r--r--legacy/textures/fireball.pngbin0 -> 400 bytes
-rw-r--r--legacy/textures/firefly.pngbin0 -> 100 bytes
-rw-r--r--legacy/textures/oerkki1.pngbin0 -> 201 bytes
-rw-r--r--legacy/textures/oerkki1_damaged.pngbin0 -> 265 bytes
-rw-r--r--legacy/textures/rat.pngbin0 -> 891 bytes
-rw-r--r--locks/README.md36
-rw-r--r--locks/depends.txt2
-rw-r--r--locks/init.lua611
-rw-r--r--locks/liscence.txt19
-rw-r--r--locks/shared_locked_chest.lua137
-rw-r--r--locks/shared_locked_furnace.lua436
-rw-r--r--locks/shared_locked_sign_wall.lua77
-rw-r--r--locks/shared_locked_xdoors2.lua212
-rw-r--r--locks/textures/bg_shared_locked_chest.jpgbin0 -> 37350 bytes
-rw-r--r--locks/textures/bg_shared_locked_furnace.jpgbin0 -> 85516 bytes
-rw-r--r--locks/textures/bg_shared_locked_sign.jpgbin0 -> 71297 bytes
-rw-r--r--locks/textures/licence.txt88
-rw-r--r--locks/textures/locks_key16.pngbin0 -> 390 bytes
-rw-r--r--locks/textures/locks_key32.pngbin0 -> 726 bytes
-rw-r--r--locks/textures/locks_keychain16.pngbin0 -> 756 bytes
-rw-r--r--locks/textures/locks_keychain32.pngbin0 -> 1843 bytes
-rw-r--r--locks/textures/locks_lock16.pngbin0 -> 727 bytes
-rw-r--r--locks/textures/locks_lock32.pngbin0 -> 1906 bytes
-rw-r--r--locks/textures/locks_xdoors2_bottom_1.pngbin0 -> 227 bytes
-rw-r--r--locks/textures/locks_xdoors2_bottom_2.pngbin0 -> 230 bytes
-rw-r--r--locks/textures/locks_xdoors2_door.pngbin0 -> 266 bytes
-rw-r--r--locks/textures/xdoors2_bottom.pngbin0 -> 109 bytes
-rw-r--r--locks/textures/xdoors2_side.pngbin0 -> 109 bytes
-rw-r--r--locks/textures/xdoors2_top.pngbin0 -> 109 bytes
-rw-r--r--locks/textures/xdoors2_top_1.pngbin0 -> 144 bytes
-rw-r--r--locks/textures/xdoors2_top_2.pngbin0 -> 144 bytes
-rw-r--r--locks/textures/xdoors2locked_bottom_1.pngbin0 -> 227 bytes
-rw-r--r--locks/textures/xdoors2locked_bottom_2.pngbin0 -> 230 bytes
-rw-r--r--locks/textures/xdoors2locked_door.pngbin0 -> 266 bytes
-rw-r--r--maptools/LICENSE.md14
-rw-r--r--maptools/NODES.md45
-rw-r--r--maptools/README.md11
-rw-r--r--maptools/aliases.lua96
-rw-r--r--maptools/config.lua29
-rw-r--r--maptools/craftitems.lua47
-rw-r--r--maptools/default_nodes.lua389
-rw-r--r--maptools/depends.txt1
-rw-r--r--maptools/init.lua32
-rw-r--r--maptools/locale/es.txt39
-rw-r--r--maptools/locale/fr.txt47
-rw-r--r--maptools/nodes.lua429
-rw-r--r--maptools/textures/black.pngbin0 -> 67 bytes
-rw-r--r--maptools/textures/fire_basic_flame.pngbin0 -> 794 bytes
-rw-r--r--maptools/textures/fire_basic_flame_animated.pngbin0 -> 1233 bytes
-rw-r--r--maptools/textures/invisible.pngbin0 -> 68 bytes
-rw-r--r--maptools/textures/maptools_adminpick.pngbin0 -> 285 bytes
-rw-r--r--maptools/textures/maptools_adminpick_with_drops.pngbin0 -> 278 bytes
-rw-r--r--maptools/textures/maptools_copper_coin.pngbin0 -> 214 bytes
-rw-r--r--maptools/textures/maptools_gold_coin.pngbin0 -> 215 bytes
-rw-r--r--maptools/textures/maptools_grass_side_12.pngbin0 -> 561 bytes
-rw-r--r--maptools/textures/maptools_grass_side_4.pngbin0 -> 294 bytes
-rw-r--r--maptools/textures/maptools_grass_side_8.pngbin0 -> 466 bytes
-rw-r--r--maptools/textures/maptools_infinitefuel.pngbin0 -> 388 bytes
-rw-r--r--maptools/textures/maptools_silver_coin.pngbin0 -> 215 bytes
-rw-r--r--maptools/textures/maptools_smoke.pngbin0 -> 303 bytes
-rw-r--r--maptools/textures/maptools_superapple.pngbin0 -> 231 bytes
-rw-r--r--maptools/textures/white.pngbin0 -> 67 bytes
-rw-r--r--maptools/tools.lua61
-rw-r--r--markers/README.md3
-rw-r--r--markers/areas.lua865
-rw-r--r--markers/config.lua36
-rw-r--r--markers/depends.txt1
-rw-r--r--markers/init.lua536
-rw-r--r--markers/land_title_register.lua74
-rw-r--r--markers/marker_stone.lua24
-rw-r--r--markers/textures/compass_side_top.pngbin0 -> 684 bytes
-rw-r--r--markers/textures/markers_mark.pngbin0 -> 377 bytes
-rw-r--r--markers/textures/markers_stone.pngbin0 -> 793 bytes
-rw-r--r--markers/textures/markers_stone_side.pngbin0 -> 832 bytes
-rw-r--r--memorandum/depends.txt1
-rw-r--r--memorandum/init.lua361
-rw-r--r--memorandum/textures/alternates/memorandum_eraser.pngbin0 -> 469 bytes
-rw-r--r--memorandum/textures/memorandum_eraser.pngbin0 -> 510 bytes
-rw-r--r--memorandum/textures/memorandum_letter_empty.pngbin0 -> 379 bytes
-rw-r--r--memorandum/textures/memorandum_letter_text.pngbin0 -> 214 bytes
-rw-r--r--memorandum/textures/memorandum_letters.pngbin0 -> 235 bytes
-rw-r--r--memorandum/textures/memorandum_message.pngbin0 -> 332 bytes
-rw-r--r--mesecons/LICENSE.txt532
-rw-r--r--mesecons/README.md78
-rw-r--r--mesecons/documentation.json62
-rw-r--r--mesecons/mesecons/VERSION1
-rw-r--r--mesecons/mesecons/actionqueue.lua118
-rw-r--r--mesecons/mesecons/depends.txt1
-rw-r--r--mesecons/mesecons/doc/mesecon/description.html1
-rwxr-xr-xmesecons/mesecons/doc/mesecon/preview.pngbin0 -> 29946 bytes
-rw-r--r--mesecons/mesecons/doc/mesecon/recipe.pngbin0 -> 3932 bytes
-rw-r--r--mesecons/mesecons/init.lua139
-rw-r--r--mesecons/mesecons/internal.lua652
-rw-r--r--mesecons/mesecons/legacy.lua30
-rw-r--r--mesecons/mesecons/oldwires.lua38
-rw-r--r--mesecons/mesecons/presets.lua55
-rw-r--r--mesecons/mesecons/services.lua100
-rw-r--r--mesecons/mesecons/settings.lua15
-rw-r--r--mesecons/mesecons/textures/mesecons_wire_inv.pngbin0 -> 204 bytes
-rw-r--r--mesecons/mesecons/textures/mesecons_wire_off.pngbin0 -> 465 bytes
-rw-r--r--mesecons/mesecons/textures/mesecons_wire_on.pngbin0 -> 464 bytes
-rw-r--r--mesecons/mesecons/util.lua211
-rw-r--r--mesecons/mesecons/wires.lua250
-rw-r--r--mesecons/mesecons_alias/depends.txt1
-rw-r--r--mesecons/mesecons_alias/init.lua38
-rw-r--r--mesecons/mesecons_blinkyplant/depends.txt1
-rw-r--r--mesecons/mesecons_blinkyplant/doc/blinkyplant/description.html1
-rwxr-xr-xmesecons/mesecons_blinkyplant/doc/blinkyplant/preview.pngbin0 -> 66763 bytes
-rw-r--r--mesecons/mesecons_blinkyplant/doc/blinkyplant/recipe.pngbin0 -> 2922 bytes
-rw-r--r--mesecons/mesecons_blinkyplant/init.lua51
-rw-r--r--mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_off.pngbin0 -> 454 bytes
-rw-r--r--mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_on.pngbin0 -> 463 bytes
-rw-r--r--mesecons/mesecons_button/depends.txt2
-rw-r--r--mesecons/mesecons_button/doc/button/description.html1
-rw-r--r--mesecons/mesecons_button/doc/button/preview.pngbin0 -> 80160 bytes
-rw-r--r--mesecons/mesecons_button/doc/button/recipe.pngbin0 -> 8031 bytes
-rw-r--r--mesecons/mesecons_button/init.lua98
-rw-r--r--mesecons/mesecons_button/sounds/mesecons_button_pop.oggbin0 -> 6184 bytes
-rw-r--r--mesecons/mesecons_button/sounds/mesecons_button_push.oggbin0 -> 6982 bytes
-rw-r--r--mesecons/mesecons_button/textures/jeija_wall_button_off.pngbin0 -> 411 bytes
-rw-r--r--mesecons/mesecons_button/textures/jeija_wall_button_on.pngbin0 -> 449 bytes
-rw-r--r--mesecons/mesecons_button/textures/jeija_wall_button_sides.pngbin0 -> 434 bytes
-rw-r--r--mesecons/mesecons_commandblock/depends.txt1
-rw-r--r--mesecons/mesecons_commandblock/doc/commandblock/description.html1
-rw-r--r--mesecons/mesecons_commandblock/doc/commandblock/preview.pngbin0 -> 36480 bytes
-rw-r--r--mesecons/mesecons_commandblock/init.lua195
-rw-r--r--mesecons/mesecons_commandblock/textures/jeija_close_window.pngbin0 -> 323 bytes
-rw-r--r--mesecons/mesecons_commandblock/textures/jeija_commandblock_off.pngbin0 -> 282 bytes
-rw-r--r--mesecons/mesecons_commandblock/textures/jeija_commandblock_on.pngbin0 -> 278 bytes
-rw-r--r--mesecons/mesecons_delayer/depends.txt1
-rw-r--r--mesecons/mesecons_delayer/doc/delayer/description.html1
-rw-r--r--mesecons/mesecons_delayer/doc/delayer/preview.pngbin0 -> 62298 bytes
-rw-r--r--mesecons/mesecons_delayer/doc/delayer/recipe.pngbin0 -> 8495 bytes
-rw-r--r--mesecons/mesecons_delayer/init.lua179
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_bottom.pngbin0 -> 438 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_ends_off.pngbin0 -> 226 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_ends_on.pngbin0 -> 228 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_off_1.pngbin0 -> 562 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_off_2.pngbin0 -> 558 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_off_3.pngbin0 -> 561 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_off_4.pngbin0 -> 556 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_on_1.pngbin0 -> 635 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_on_2.pngbin0 -> 632 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_on_3.pngbin0 -> 635 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_on_4.pngbin0 -> 630 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_sides_off.pngbin0 -> 229 bytes
-rw-r--r--mesecons/mesecons_delayer/textures/mesecons_delayer_sides_on.pngbin0 -> 234 bytes
-rw-r--r--mesecons/mesecons_detector/depends.txt2
-rw-r--r--mesecons/mesecons_detector/doc/nodedetector/description.html6
-rw-r--r--mesecons/mesecons_detector/doc/nodedetector/preview.pngbin0 -> 49571 bytes
-rw-r--r--mesecons/mesecons_detector/doc/nodedetector/recipe.pngbin0 -> 10043 bytes
-rw-r--r--mesecons/mesecons_detector/doc/objectdetector/description.html3
-rw-r--r--mesecons/mesecons_detector/doc/objectdetector/preview.pngbin0 -> 85870 bytes
-rw-r--r--mesecons/mesecons_detector/doc/objectdetector/recipe.pngbin0 -> 9813 bytes
-rw-r--r--mesecons/mesecons_detector/init.lua272
-rw-r--r--mesecons/mesecons_detector/textures/jeija_node_detector_off.pngbin0 -> 717 bytes
-rw-r--r--mesecons/mesecons_detector/textures/jeija_node_detector_on.pngbin0 -> 727 bytes
-rw-r--r--mesecons/mesecons_detector/textures/jeija_object_detector_off.pngbin0 -> 712 bytes
-rw-r--r--mesecons/mesecons_detector/textures/jeija_object_detector_on.pngbin0 -> 735 bytes
-rw-r--r--mesecons/mesecons_doors/depends.txt2
-rw-r--r--mesecons/mesecons_doors/init.lua84
-rw-r--r--mesecons/mesecons_extrawires/corner.lua83
-rw-r--r--mesecons/mesecons_extrawires/crossover.lua176
-rw-r--r--mesecons/mesecons_extrawires/depends.txt2
-rw-r--r--mesecons/mesecons_extrawires/doc/corner/description.html1
-rw-r--r--mesecons/mesecons_extrawires/doc/corner/preview.pngbin0 -> 41643 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/corner/recipe.pngbin0 -> 3902 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/crossing/description.html1
-rw-r--r--mesecons/mesecons_extrawires/doc/crossing/preview.pngbin0 -> 62464 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/crossing/recipe.pngbin0 -> 3745 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/mese/description.html1
-rw-r--r--mesecons/mesecons_extrawires/doc/mese/preview.pngbin0 -> 30599 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/mese/recipe.pngbin0 -> 6266 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/tjunction/description.html1
-rw-r--r--mesecons/mesecons_extrawires/doc/tjunction/preview.pngbin0 -> 55089 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/tjunction/recipe.pngbin0 -> 3946 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/vertical/description.html1
-rw-r--r--mesecons/mesecons_extrawires/doc/vertical/preview.pngbin0 -> 13816 bytes
-rw-r--r--mesecons/mesecons_extrawires/doc/vertical/recipe.pngbin0 -> 3059 bytes
-rw-r--r--mesecons/mesecons_extrawires/init.lua5
-rw-r--r--mesecons/mesecons_extrawires/mesewire.lua30
-rw-r--r--mesecons/mesecons_extrawires/tjunction.lua84
-rw-r--r--mesecons/mesecons_extrawires/vertical.lua183
-rw-r--r--mesecons/mesecons_gates/depends.txt6
-rw-r--r--mesecons/mesecons_gates/doc/and/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/and/preview.pngbin0 -> 69906 bytes
-rw-r--r--mesecons/mesecons_gates/doc/and/recipe.pngbin0 -> 2732 bytes
-rw-r--r--mesecons/mesecons_gates/doc/diode/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/diode/preview.pngbin0 -> 72562 bytes
-rw-r--r--mesecons/mesecons_gates/doc/diode/recipe.pngbin0 -> 2058 bytes
-rw-r--r--mesecons/mesecons_gates/doc/nand/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/nand/preview.pngbin0 -> 63320 bytes
-rw-r--r--mesecons/mesecons_gates/doc/nand/recipe.pngbin0 -> 2733 bytes
-rw-r--r--mesecons/mesecons_gates/doc/nor/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/nor/preview.pngbin0 -> 27039 bytes
-rw-r--r--mesecons/mesecons_gates/doc/nor/recipe.pngbin0 -> 2468 bytes
-rw-r--r--mesecons/mesecons_gates/doc/not/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/not/preview.pngbin0 -> 70313 bytes
-rw-r--r--mesecons/mesecons_gates/doc/not/recipe.pngbin0 -> 2083 bytes
-rw-r--r--mesecons/mesecons_gates/doc/or/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/or/preview.pngbin0 -> 26286 bytes
-rw-r--r--mesecons/mesecons_gates/doc/or/recipe.pngbin0 -> 2417 bytes
-rw-r--r--mesecons/mesecons_gates/doc/xor/description.html1
-rw-r--r--mesecons/mesecons_gates/doc/xor/preview.pngbin0 -> 70940 bytes
-rw-r--r--mesecons/mesecons_gates/doc/xor/recipe.pngbin0 -> 2659 bytes
-rw-r--r--mesecons/mesecons_gates/init.lua134
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_and.pngbin0 -> 233 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_diode.pngbin0 -> 231 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_nand.pngbin0 -> 251 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_nor.pngbin0 -> 251 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_not.pngbin0 -> 241 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_off.pngbin0 -> 195 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_on.pngbin0 -> 195 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_or.pngbin0 -> 243 bytes
-rw-r--r--mesecons/mesecons_gates/textures/jeija_gate_xor.pngbin0 -> 245 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/depends.txt1
-rw-r--r--mesecons/mesecons_hydroturbine/doc/waterturbine/description.html1
-rw-r--r--mesecons/mesecons_hydroturbine/doc/waterturbine/preview.pngbin0 -> 33549 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/doc/waterturbine/recipe.pngbin0 -> 8200 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/init.lua92
-rw-r--r--mesecons/mesecons_hydroturbine/models/jeija_hydro_turbine.obj429
-rw-r--r--mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.pngbin0 -> 4884 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.pngbin0 -> 782 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.pngbin0 -> 758 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_top_bottom.pngbin0 -> 564 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.pngbin0 -> 820 bytes
-rw-r--r--mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.pngbin0 -> 496 bytes
-rw-r--r--mesecons/mesecons_insulated/depends.txt1
-rw-r--r--mesecons/mesecons_insulated/doc/insulated/description.html1
-rw-r--r--mesecons/mesecons_insulated/doc/insulated/preview.pngbin0 -> 44352 bytes
-rw-r--r--mesecons/mesecons_insulated/doc/insulated/recipe.pngbin0 -> 4679 bytes
-rw-r--r--mesecons/mesecons_insulated/init.lua80
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.pngbin0 -> 305 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.pngbin0 -> 270 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.pngbin0 -> 293 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.pngbin0 -> 209 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.pngbin0 -> 253 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.pngbin0 -> 196 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.pngbin0 -> 246 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.pngbin0 -> 252 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.pngbin0 -> 238 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.pngbin0 -> 261 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_off.pngbin0 -> 142 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_on.pngbin0 -> 126 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_off.pngbin0 -> 200 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_on.pngbin0 -> 169 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.pngbin0 -> 244 bytes
-rw-r--r--mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.pngbin0 -> 207 bytes
-rw-r--r--mesecons/mesecons_lamp/depends.txt1
-rw-r--r--mesecons/mesecons_lamp/doc/lamp/description.html1
-rw-r--r--mesecons/mesecons_lamp/doc/lamp/preview.pngbin0 -> 34959 bytes
-rw-r--r--mesecons/mesecons_lamp/doc/lamp/recipe.pngbin0 -> 4478 bytes
-rw-r--r--mesecons/mesecons_lamp/init.lua61
-rw-r--r--mesecons/mesecons_lamp/textures/jeija_meselamp.pngbin0 -> 260 bytes
-rw-r--r--mesecons/mesecons_lamp/textures/jeija_meselamp_off.pngbin0 -> 253 bytes
-rw-r--r--mesecons/mesecons_lamp/textures/jeija_meselamp_on.pngbin0 -> 307 bytes
-rw-r--r--mesecons/mesecons_lightstone/depends.txt2
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_blue/description.html1
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_blue/preview.pngbin0 -> 36865 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_blue/recipe.pngbin0 -> 4403 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_darkgrey/description.html1
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_darkgrey/preview.pngbin0 -> 43641 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_darkgrey/recipe.pngbin0 -> 4575 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_green/description.html1
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_green/preview.pngbin0 -> 48733 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_green/recipe.pngbin0 -> 4597 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_lightgrey/description.html1
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_lightgrey/preview.pngbin0 -> 45430 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_lightgrey/recipe.pngbin0 -> 4682 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_red/description.html1
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_red/preview.pngbin0 -> 32080 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_red/recipe.pngbin0 -> 4009 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_yellow/description.html1
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_yellow/preview.pngbin0 -> 28281 bytes
-rw-r--r--mesecons/mesecons_lightstone/doc/lightstone_yellow/recipe.pngbin0 -> 4550 bytes
-rw-r--r--mesecons/mesecons_lightstone/init.lua60
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_off.pngbin0 -> 260 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_on.pngbin0 -> 545 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.pngbin0 -> 447 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.pngbin0 -> 667 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_off.pngbin0 -> 452 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_on.pngbin0 -> 662 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_green_off.pngbin0 -> 446 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_green_on.pngbin0 -> 705 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_red_off.pngbin0 -> 408 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_red_on.pngbin0 -> 650 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_off.pngbin0 -> 291 bytes
-rw-r--r--mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_on.pngbin0 -> 486 bytes
-rw-r--r--mesecons/mesecons_luacontroller/depends.txt1
-rw-r--r--mesecons/mesecons_luacontroller/doc/luacontroller/description.html5
-rw-r--r--mesecons/mesecons_luacontroller/doc/luacontroller/preview.pngbin0 -> 67795 bytes
-rw-r--r--mesecons/mesecons_luacontroller/doc/luacontroller/recipe.pngbin0 -> 5560 bytes
-rw-r--r--mesecons/mesecons_luacontroller/init.lua642
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luac_background.pngbin0 -> 2016 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luac_runbutton.pngbin0 -> 4262 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.pngbin0 -> 3541 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.pngbin0 -> 3537 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.pngbin0 -> 3537 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.pngbin0 -> 3537 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.pngbin0 -> 8706 bytes
-rw-r--r--mesecons/mesecons_luacontroller/textures/jeija_luacontroller_top.pngbin0 -> 11913 bytes
-rw-r--r--mesecons/mesecons_materials/depends.txt1
-rw-r--r--mesecons/mesecons_materials/doc/fiber/description.html1
-rw-r--r--mesecons/mesecons_materials/doc/fiber/preview.pngbin0 -> 88352 bytes
-rw-r--r--mesecons/mesecons_materials/doc/fiber/recipe.pngbin0 -> 4684 bytes
-rw-r--r--mesecons/mesecons_materials/doc/glue/description.html1
-rw-r--r--mesecons/mesecons_materials/doc/glue/preview.pngbin0 -> 48478 bytes
-rw-r--r--mesecons/mesecons_materials/doc/glue/recipe.pngbin0 -> 4273 bytes
-rw-r--r--mesecons/mesecons_materials/doc/silicon/description.html1
-rw-r--r--mesecons/mesecons_materials/doc/silicon/preview.pngbin0 -> 52441 bytes
-rw-r--r--mesecons/mesecons_materials/doc/silicon/recipe.pngbin0 -> 11579 bytes
-rw-r--r--mesecons/mesecons_materials/init.lua41
-rw-r--r--mesecons/mesecons_materials/textures/mesecons_fiber.pngbin0 -> 592 bytes
-rw-r--r--mesecons/mesecons_materials/textures/mesecons_glue.pngbin0 -> 487 bytes
-rw-r--r--mesecons/mesecons_materials/textures/mesecons_silicon.pngbin0 -> 867 bytes
-rw-r--r--mesecons/mesecons_microcontroller/MeseconMicro.odtbin0 -> 825486 bytes
-rw-r--r--mesecons/mesecons_microcontroller/MeseconMicro.pdfbin0 -> 433175 bytes
-rw-r--r--mesecons/mesecons_microcontroller/depends.txt1
-rw-r--r--mesecons/mesecons_microcontroller/init.lua692
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_A.pngbin0 -> 1240 bytes
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_B.pngbin0 -> 1239 bytes
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_C.pngbin0 -> 1240 bytes
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_D.pngbin0 -> 1239 bytes
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_bottom.pngbin0 -> 550 bytes
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_sides.pngbin0 -> 613 bytes
-rw-r--r--mesecons/mesecons_microcontroller/textures/jeija_microcontroller_top.pngbin0 -> 1151 bytes
-rw-r--r--mesecons/mesecons_movestones/depends.txt3
-rw-r--r--mesecons/mesecons_movestones/doc/movestone/description.html1
-rw-r--r--mesecons/mesecons_movestones/doc/movestone/preview.pngbin0 -> 77702 bytes
-rw-r--r--mesecons/mesecons_movestones/doc/movestone/recipe.pngbin0 -> 14873 bytes
-rw-r--r--mesecons/mesecons_movestones/doc/movestone_sticky/description.html1
-rw-r--r--mesecons/mesecons_movestones/doc/movestone_sticky/preview.pngbin0 -> 82749 bytes
-rw-r--r--mesecons/mesecons_movestones/doc/movestone_sticky/recipe.pngbin0 -> 10190 bytes
-rw-r--r--mesecons/mesecons_movestones/init.lua156
-rw-r--r--mesecons/mesecons_movestones/textures/jeija_movestone_arrows.pngbin0 -> 344 bytes
-rw-r--r--mesecons/mesecons_movestones/textures/jeija_movestone_side.pngbin0 -> 466 bytes
-rw-r--r--mesecons/mesecons_movestones/textures/jeija_sticky_movestone.pngbin0 -> 742 bytes
-rw-r--r--mesecons/mesecons_mvps/depends.txt1
-rw-r--r--mesecons/mesecons_mvps/init.lua238
-rw-r--r--mesecons/mesecons_noteblock/depends.txt1
-rw-r--r--mesecons/mesecons_noteblock/doc/noteblock/description.html13
-rw-r--r--mesecons/mesecons_noteblock/doc/noteblock/preview.pngbin0 -> 118753 bytes
-rw-r--r--mesecons/mesecons_noteblock/doc/noteblock/recipe.pngbin0 -> 18182 bytes
-rw-r--r--mesecons/mesecons_noteblock/init.lua69
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a.oggbin0 -> 10808 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a2.oggbin0 -> 11735 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp.oggbin0 -> 10732 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp2.oggbin0 -> 11000 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b.oggbin0 -> 10282 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b2.oggbin0 -> 10045 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c.oggbin0 -> 11670 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c2.oggbin0 -> 16981 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_crash.oggbin0 -> 50320 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp.oggbin0 -> 11651 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp2.oggbin0 -> 17008 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d.oggbin0 -> 11175 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d2.oggbin0 -> 16678 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.oggbin0 -> 10882 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp2.oggbin0 -> 16145 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e.oggbin0 -> 10829 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e2.oggbin0 -> 15458 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f.oggbin0 -> 10990 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f2.oggbin0 -> 14917 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.oggbin0 -> 10509 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp2.oggbin0 -> 14139 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g.oggbin0 -> 10465 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g2.oggbin0 -> 13342 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.oggbin0 -> 10595 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp2.oggbin0 -> 12583 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_hihat.oggbin0 -> 5459 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_kick.oggbin0 -> 10361 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_litecrash.oggbin0 -> 30453 bytes
-rw-r--r--mesecons/mesecons_noteblock/sounds/mesecons_noteblock_snare.oggbin0 -> 9865 bytes
-rw-r--r--mesecons/mesecons_noteblock/textures/mesecons_noteblock.pngbin0 -> 889 bytes
-rw-r--r--mesecons/mesecons_pistons/depends.txt2
-rw-r--r--mesecons/mesecons_pistons/doc/piston/description.html1
-rw-r--r--mesecons/mesecons_pistons/doc/piston/preview.pngbin0 -> 112257 bytes
-rw-r--r--mesecons/mesecons_pistons/doc/piston/recipe.pngbin0 -> 23773 bytes
-rw-r--r--mesecons/mesecons_pistons/doc/piston_sticky/description.html1
-rw-r--r--mesecons/mesecons_pistons/doc/piston_sticky/preview.pngbin0 -> 101605 bytes
-rw-r--r--mesecons/mesecons_pistons/doc/piston_sticky/recipe.pngbin0 -> 14704 bytes
-rw-r--r--mesecons/mesecons_pistons/init.lua761
-rw-r--r--mesecons/mesecons_pistons/sounds/piston_extend.oggbin0 -> 7060 bytes
-rw-r--r--mesecons/mesecons_pistons/sounds/piston_retract.oggbin0 -> 7092 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_back.pngbin0 -> 763 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_bottom.pngbin0 -> 791 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_left.pngbin0 -> 790 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_on_front.pngbin0 -> 759 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_back.pngbin0 -> 781 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_bottom.pngbin0 -> 762 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front.pngbin0 -> 759 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.pngbin0 -> 738 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_left.pngbin0 -> 790 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_right.pngbin0 -> 802 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_pusher_top.pngbin0 -> 787 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_right.pngbin0 -> 786 bytes
-rw-r--r--mesecons/mesecons_pistons/textures/mesecons_piston_top.pngbin0 -> 790 bytes
-rw-r--r--mesecons/mesecons_powerplant/depends.txt1
-rw-r--r--mesecons/mesecons_powerplant/doc/powerplant/description.html1
-rw-r--r--mesecons/mesecons_powerplant/doc/powerplant/preview.pngbin0 -> 61931 bytes
-rw-r--r--mesecons/mesecons_powerplant/doc/powerplant/recipe.pngbin0 -> 2823 bytes
-rw-r--r--mesecons/mesecons_powerplant/init.lua31
-rw-r--r--mesecons/mesecons_powerplant/textures/jeija_power_plant.pngbin0 -> 437 bytes
-rw-r--r--mesecons/mesecons_pressureplates/depends.txt1
-rw-r--r--mesecons/mesecons_pressureplates/doc/pressureplate_stone/description.html1
-rw-r--r--mesecons/mesecons_pressureplates/doc/pressureplate_stone/preview.pngbin0 -> 55619 bytes
-rw-r--r--mesecons/mesecons_pressureplates/doc/pressureplate_stone/recipe.pngbin0 -> 8056 bytes
-rw-r--r--mesecons/mesecons_pressureplates/doc/pressureplate_wood/description.html1
-rw-r--r--mesecons/mesecons_pressureplates/doc/pressureplate_wood/preview.pngbin0 -> 63535 bytes
-rw-r--r--mesecons/mesecons_pressureplates/doc/pressureplate_wood/recipe.pngbin0 -> 7717 bytes
-rw-r--r--mesecons/mesecons_pressureplates/init.lua94
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.pngbin0 -> 604 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.pngbin0 -> 555 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.pngbin0 -> 292 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.pngbin0 -> 579 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.pngbin0 -> 336 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.pngbin0 -> 604 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.pngbin0 -> 716 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.pngbin0 -> 663 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.pngbin0 -> 295 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.pngbin0 -> 675 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.pngbin0 -> 336 bytes
-rw-r--r--mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.pngbin0 -> 716 bytes
-rw-r--r--mesecons/mesecons_random/depends.txt1
-rw-r--r--mesecons/mesecons_random/doc/ghoststone/description.html1
-rw-r--r--mesecons/mesecons_random/doc/ghoststone/preview.pngbin0 -> 37157 bytes
-rw-r--r--mesecons/mesecons_random/doc/ghoststone/recipe.pngbin0 -> 23947 bytes
-rw-r--r--mesecons/mesecons_random/doc/removestone/description.html1
-rw-r--r--mesecons/mesecons_random/doc/removestone/preview.pngbin0 -> 90400 bytes
-rw-r--r--mesecons/mesecons_random/doc/removestone/recipe.pngbin0 -> 23165 bytes
-rw-r--r--mesecons/mesecons_random/init.lua85
-rw-r--r--mesecons/mesecons_random/textures/jeija_ghoststone.pngbin0 -> 743 bytes
-rw-r--r--mesecons/mesecons_random/textures/jeija_ghoststone_inv.pngbin0 -> 777 bytes
-rw-r--r--mesecons/mesecons_random/textures/jeija_removestone.pngbin0 -> 743 bytes
-rw-r--r--mesecons/mesecons_random/textures/jeija_removestone_inv.pngbin0 -> 777 bytes
-rw-r--r--mesecons/mesecons_receiver/depends.txt1
-rw-r--r--mesecons/mesecons_receiver/init.lua158
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_bottom_off.pngbin0 -> 494 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_bottom_on.pngbin0 -> 239 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_fb_off.pngbin0 -> 494 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_fb_on.pngbin0 -> 239 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_lr_off.pngbin0 -> 494 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_lr_on.pngbin0 -> 239 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_top_off.pngbin0 -> 494 bytes
-rw-r--r--mesecons/mesecons_receiver/textures/receiver_top_on.pngbin0 -> 239 bytes
-rw-r--r--mesecons/mesecons_solarpanel/depends.txt2
-rw-r--r--mesecons/mesecons_solarpanel/doc/solarpanel/description.html1
-rw-r--r--mesecons/mesecons_solarpanel/doc/solarpanel/preview.pngbin0 -> 56933 bytes
-rw-r--r--mesecons/mesecons_solarpanel/doc/solarpanel/recipe.pngbin0 -> 3721 bytes
-rw-r--r--mesecons/mesecons_solarpanel/init.lua95
-rw-r--r--mesecons/mesecons_solarpanel/textures/jeija_solar_panel.pngbin0 -> 652 bytes
-rw-r--r--mesecons/mesecons_stickyblocks/depends.txt2
-rw-r--r--mesecons/mesecons_stickyblocks/init.lua16
-rw-r--r--mesecons/mesecons_switch/depends.txt1
-rw-r--r--mesecons/mesecons_switch/doc/switch/description.html1
-rw-r--r--mesecons/mesecons_switch/doc/switch/preview.pngbin0 -> 86195 bytes
-rw-r--r--mesecons/mesecons_switch/doc/switch/recipe.pngbin0 -> 12015 bytes
-rw-r--r--mesecons/mesecons_switch/init.lua35
-rw-r--r--mesecons/mesecons_switch/sounds/mesecons_switch.oggbin0 -> 6982 bytes
-rw-r--r--mesecons/mesecons_switch/textures/mesecons_switch_off.pngbin0 -> 598 bytes
-rw-r--r--mesecons/mesecons_switch/textures/mesecons_switch_on.pngbin0 -> 692 bytes
-rw-r--r--mesecons/mesecons_switch/textures/mesecons_switch_side.pngbin0 -> 553 bytes
-rw-r--r--mesecons/mesecons_torch/depends.txt1
-rw-r--r--mesecons/mesecons_torch/doc/torch/description.html1
-rw-r--r--mesecons/mesecons_torch/doc/torch/preview.pngbin0 -> 10142 bytes
-rw-r--r--mesecons/mesecons_torch/doc/torch/recipe.pngbin0 -> 2345 bytes
-rw-r--r--mesecons/mesecons_torch/init.lua118
-rw-r--r--mesecons/mesecons_torch/textures/jeija_torches_off.pngbin0 -> 219 bytes
-rw-r--r--mesecons/mesecons_torch/textures/jeija_torches_off_ceiling.pngbin0 -> 220 bytes
-rw-r--r--mesecons/mesecons_torch/textures/jeija_torches_off_side.pngbin0 -> 206 bytes
-rw-r--r--mesecons/mesecons_torch/textures/jeija_torches_on.pngbin0 -> 210 bytes
-rw-r--r--mesecons/mesecons_torch/textures/jeija_torches_on_ceiling.pngbin0 -> 220 bytes
-rw-r--r--mesecons/mesecons_torch/textures/jeija_torches_on_side.pngbin0 -> 197 bytes
-rw-r--r--mesecons/mesecons_walllever/depends.txt2
-rw-r--r--mesecons/mesecons_walllever/doc/walllever/description.html1
-rw-r--r--mesecons/mesecons_walllever/doc/walllever/preview.pngbin0 -> 79390 bytes
-rw-r--r--mesecons/mesecons_walllever/doc/walllever/recipe.pngbin0 -> 7268 bytes
-rw-r--r--mesecons/mesecons_walllever/init.lua61
-rw-r--r--mesecons/mesecons_walllever/models/jeija_wall_lever_off.obj216
-rw-r--r--mesecons/mesecons_walllever/models/jeija_wall_lever_on.obj216
-rw-r--r--mesecons/mesecons_walllever/sounds/mesecons_lever.oggbin0 -> 6982 bytes
-rw-r--r--mesecons/mesecons_walllever/textures/jeija_wall_lever_back_edges.pngbin0 -> 457 bytes
-rw-r--r--mesecons/mesecons_walllever/textures/jeija_wall_lever_front.pngbin0 -> 360 bytes
-rw-r--r--mesecons/mesecons_walllever/textures/jeija_wall_lever_front_bump.pngbin0 -> 252 bytes
-rw-r--r--mesecons/mesecons_walllever/textures/jeija_wall_lever_inv.pngbin0 -> 500 bytes
-rw-r--r--mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.pngbin0 -> 347 bytes
-rw-r--r--mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.pngbin0 -> 308 bytes
-rw-r--r--mesecons/modpack.txt1
-rw-r--r--misc_overrides/depends.txt8
-rw-r--r--misc_overrides/init.lua47
-rw-r--r--misc_overrides/textures/technic_chest_form_bg.pngbin0 -> 98978 bytes
-rw-r--r--moreblocks/LICENSE.md14
-rw-r--r--moreblocks/README.md11
-rw-r--r--moreblocks/aliases.lua78
-rw-r--r--moreblocks/circular_saw.lua414
-rw-r--r--moreblocks/config.lua29
-rw-r--r--moreblocks/crafting.lua469
-rw-r--r--moreblocks/depends.txt2
-rw-r--r--moreblocks/init.lua33
-rw-r--r--moreblocks/locale/de.txt67
-rw-r--r--moreblocks/locale/es.txt52
-rw-r--r--moreblocks/locale/fr.txt72
-rw-r--r--moreblocks/locale/template.txt64
-rw-r--r--moreblocks/models/moreblocks_slope.obj26
-rw-r--r--moreblocks/models/moreblocks_slope_cut.obj33
-rw-r--r--moreblocks/models/moreblocks_slope_half.obj28
-rw-r--r--moreblocks/models/moreblocks_slope_half_raised.obj32
-rw-r--r--moreblocks/models/moreblocks_slope_inner.obj35
-rw-r--r--moreblocks/models/moreblocks_slope_inner_cut.obj32
-rw-r--r--moreblocks/models/moreblocks_slope_inner_cut_half.obj34
-rw-r--r--moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj35
-rw-r--r--moreblocks/models/moreblocks_slope_inner_half.obj35
-rw-r--r--moreblocks/models/moreblocks_slope_inner_half_raised.obj38
-rw-r--r--moreblocks/models/moreblocks_slope_outer.obj25
-rw-r--r--moreblocks/models/moreblocks_slope_outer_cut.obj23
-rw-r--r--moreblocks/models/moreblocks_slope_outer_cut_half.obj24
-rw-r--r--moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj28
-rw-r--r--moreblocks/models/moreblocks_slope_outer_half.obj27
-rw-r--r--moreblocks/models/moreblocks_slope_outer_half_raised.obj34
-rw-r--r--moreblocks/nodes.lua372
-rw-r--r--moreblocks/ownership.lua41
-rw-r--r--moreblocks/redefinitions.lua100
-rw-r--r--moreblocks/stairsplus/API.md24
-rw-r--r--moreblocks/stairsplus/aliases.lua70
-rw-r--r--moreblocks/stairsplus/conversion.lua139
-rw-r--r--moreblocks/stairsplus/init.lua61
-rw-r--r--moreblocks/stairsplus/microblocks.lua138
-rw-r--r--moreblocks/stairsplus/panels.lua118
-rw-r--r--moreblocks/stairsplus/registrations.lua57
-rw-r--r--moreblocks/stairsplus/slabs.lua209
-rw-r--r--moreblocks/stairsplus/slopes.lua347
-rw-r--r--moreblocks/stairsplus/stairs.lua224
-rw-r--r--moreblocks/textures/default_brick.pngbin0 -> 716 bytes
-rw-r--r--moreblocks/textures/default_fence_overlay.pngbin0 -> 285 bytes
-rw-r--r--moreblocks/textures/invisible.pngbin0 -> 68 bytes
-rw-r--r--moreblocks/textures/moreblocks_cactus_brick.pngbin0 -> 718 bytes
-rw-r--r--moreblocks/textures/moreblocks_cactus_checker.pngbin0 -> 693 bytes
-rw-r--r--moreblocks/textures/moreblocks_circle_stone_bricks.pngbin0 -> 448 bytes
-rw-r--r--moreblocks/textures/moreblocks_circular_saw_bottom.pngbin0 -> 579 bytes
-rw-r--r--moreblocks/textures/moreblocks_circular_saw_side.pngbin0 -> 478 bytes
-rw-r--r--moreblocks/textures/moreblocks_circular_saw_top.pngbin0 -> 441 bytes
-rw-r--r--moreblocks/textures/moreblocks_clean_glass.pngbin0 -> 177 bytes
-rw-r--r--moreblocks/textures/moreblocks_clean_glass_detail.pngbin0 -> 96 bytes
-rw-r--r--moreblocks/textures/moreblocks_coal_checker.pngbin0 -> 744 bytes
-rw-r--r--moreblocks/textures/moreblocks_coal_glass.pngbin0 -> 155 bytes
-rw-r--r--moreblocks/textures/moreblocks_coal_glass_detail.pngbin0 -> 159 bytes
-rw-r--r--moreblocks/textures/moreblocks_coal_glass_stairsplus.pngbin0 -> 166 bytes
-rw-r--r--moreblocks/textures/moreblocks_coal_stone.pngbin0 -> 229 bytes
-rw-r--r--moreblocks/textures/moreblocks_coal_stone_bricks.pngbin0 -> 484 bytes
-rw-r--r--moreblocks/textures/moreblocks_cobble_compressed.pngbin0 -> 356 bytes
-rw-r--r--moreblocks/textures/moreblocks_empty_bookshelf.pngbin0 -> 219 bytes
-rw-r--r--moreblocks/textures/moreblocks_fence_jungle_wood.pngbin0 -> 204 bytes
-rw-r--r--moreblocks/textures/moreblocks_fence_wood.pngbin0 -> 480 bytes
-rw-r--r--moreblocks/textures/moreblocks_glass.pngbin0 -> 210 bytes
-rw-r--r--moreblocks/textures/moreblocks_glass_stairsplus.pngbin0 -> 215 bytes
-rw-r--r--moreblocks/textures/moreblocks_glow_glass.pngbin0 -> 157 bytes
-rw-r--r--moreblocks/textures/moreblocks_glow_glass_detail.pngbin0 -> 161 bytes
-rw-r--r--moreblocks/textures/moreblocks_glow_glass_stairsplus.pngbin0 -> 169 bytes
-rw-r--r--moreblocks/textures/moreblocks_grey_bricks.pngbin0 -> 725 bytes
-rw-r--r--moreblocks/textures/moreblocks_iron_checker.pngbin0 -> 850 bytes
-rw-r--r--moreblocks/textures/moreblocks_iron_glass.pngbin0 -> 158 bytes
-rw-r--r--moreblocks/textures/moreblocks_iron_glass_detail.pngbin0 -> 163 bytes
-rw-r--r--moreblocks/textures/moreblocks_iron_glass_stairsplus.pngbin0 -> 169 bytes
-rw-r--r--moreblocks/textures/moreblocks_iron_stone.pngbin0 -> 230 bytes
-rw-r--r--moreblocks/textures/moreblocks_iron_stone_bricks.pngbin0 -> 485 bytes
-rw-r--r--moreblocks/textures/moreblocks_junglestick.pngbin0 -> 122 bytes
-rw-r--r--moreblocks/textures/moreblocks_obsidian_glass_stairsplus.pngbin0 -> 144 bytes
-rw-r--r--moreblocks/textures/moreblocks_plankstone.pngbin0 -> 335 bytes
-rw-r--r--moreblocks/textures/moreblocks_plankstone_2.pngbin0 -> 354 bytes
-rw-r--r--moreblocks/textures/moreblocks_rope.pngbin0 -> 356 bytes
-rw-r--r--moreblocks/textures/moreblocks_split_stone_tile.pngbin0 -> 273 bytes
-rw-r--r--moreblocks/textures/moreblocks_split_stone_tile_alt.pngbin0 -> 306 bytes
-rw-r--r--moreblocks/textures/moreblocks_split_stone_tile_top.pngbin0 -> 279 bytes
-rw-r--r--moreblocks/textures/moreblocks_stone_tile.pngbin0 -> 271 bytes
-rw-r--r--moreblocks/textures/moreblocks_super_glow_glass.pngbin0 -> 154 bytes
-rw-r--r--moreblocks/textures/moreblocks_super_glow_glass_detail.pngbin0 -> 156 bytes
-rw-r--r--moreblocks/textures/moreblocks_super_glow_glass_stairsplus.pngbin0 -> 171 bytes
-rw-r--r--moreblocks/textures/moreblocks_sweeper.pngbin0 -> 310 bytes
-rw-r--r--moreblocks/textures/moreblocks_tar.pngbin0 -> 270 bytes
-rw-r--r--moreblocks/textures/moreblocks_trap_glass.pngbin0 -> 170 bytes
-rw-r--r--moreblocks/textures/moreblocks_trap_glow_glass.pngbin0 -> 170 bytes
-rw-r--r--moreblocks/textures/moreblocks_trap_stone.pngbin0 -> 333 bytes
-rw-r--r--moreblocks/textures/moreblocks_trap_super_glow_glass.pngbin0 -> 170 bytes
-rw-r--r--moreblocks/textures/moreblocks_tree_stairsplus.pngbin0 -> 311 bytes
-rw-r--r--moreblocks/textures/moreblocks_wood_tile.pngbin0 -> 396 bytes
-rw-r--r--moreblocks/textures/moreblocks_wood_tile_center.pngbin0 -> 288 bytes
-rw-r--r--moreblocks/textures/moreblocks_wood_tile_full.pngbin0 -> 436 bytes
-rw-r--r--moreblocks/textures/moreblocks_wood_tile_up.pngbin0 -> 289 bytes
-rw-r--r--moreores/LICENSE.md14
-rw-r--r--moreores/README.md11
-rw-r--r--moreores/_config.txt27
-rw-r--r--moreores/depends.txt2
-rw-r--r--moreores/init.lua365
-rw-r--r--moreores/locale/de.txt22
-rw-r--r--moreores/locale/es.txt21
-rw-r--r--moreores/locale/fr.txt21
-rw-r--r--moreores/locale/it.txt21
-rw-r--r--moreores/locale/tr.txt25
-rw-r--r--moreores/mg.lua53
-rw-r--r--moreores/textures/moreores_copper_rail.pngbin0 -> 269 bytes
-rw-r--r--moreores/textures/moreores_copper_rail_crossing.pngbin0 -> 249 bytes
-rw-r--r--moreores/textures/moreores_copper_rail_curved.pngbin0 -> 267 bytes
-rw-r--r--moreores/textures/moreores_copper_rail_t_junction.pngbin0 -> 260 bytes
-rw-r--r--moreores/textures/moreores_mineral_mithril.pngbin0 -> 141 bytes
-rw-r--r--moreores/textures/moreores_mineral_silver.pngbin0 -> 151 bytes
-rw-r--r--moreores/textures/moreores_mineral_tin.pngbin0 -> 171 bytes
-rw-r--r--moreores/textures/moreores_mithril_block.pngbin0 -> 228 bytes
-rw-r--r--moreores/textures/moreores_mithril_ingot.pngbin0 -> 210 bytes
-rw-r--r--moreores/textures/moreores_mithril_lump.pngbin0 -> 157 bytes
-rw-r--r--moreores/textures/moreores_silver_block.pngbin0 -> 265 bytes
-rw-r--r--moreores/textures/moreores_silver_ingot.pngbin0 -> 198 bytes
-rw-r--r--moreores/textures/moreores_silver_lump.pngbin0 -> 168 bytes
-rw-r--r--moreores/textures/moreores_tin_block.pngbin0 -> 274 bytes
-rw-r--r--moreores/textures/moreores_tin_ingot.pngbin0 -> 198 bytes
-rw-r--r--moreores/textures/moreores_tin_lump.pngbin0 -> 166 bytes
-rw-r--r--moreores/textures/moreores_tool_mithrilaxe.pngbin0 -> 180 bytes
-rw-r--r--moreores/textures/moreores_tool_mithrilhoe.pngbin0 -> 172 bytes
-rw-r--r--moreores/textures/moreores_tool_mithrilpick.pngbin0 -> 199 bytes
-rw-r--r--moreores/textures/moreores_tool_mithrilshovel.pngbin0 -> 195 bytes
-rw-r--r--moreores/textures/moreores_tool_mithrilsword.pngbin0 -> 169 bytes
-rw-r--r--moreores/textures/moreores_tool_silveraxe.pngbin0 -> 193 bytes
-rw-r--r--moreores/textures/moreores_tool_silverhoe.pngbin0 -> 175 bytes
-rw-r--r--moreores/textures/moreores_tool_silverpick.pngbin0 -> 196 bytes
-rw-r--r--moreores/textures/moreores_tool_silvershovel.pngbin0 -> 201 bytes
-rw-r--r--moreores/textures/moreores_tool_silversword.pngbin0 -> 169 bytes
-rw-r--r--moretrees/LICENSE392
-rw-r--r--moretrees/README.md11
-rw-r--r--moretrees/biome_defs.lua188
-rw-r--r--moretrees/crafts.lua151
-rw-r--r--moretrees/default_settings.txt68
-rw-r--r--moretrees/depends.txt6
-rw-r--r--moretrees/init.lua299
-rw-r--r--moretrees/locale/de.txt73
-rw-r--r--moretrees/locale/template.txt73
-rw-r--r--moretrees/node_defs.lua430
-rw-r--r--moretrees/saplings.lua93
-rw-r--r--moretrees/textures/moretrees_acorn.pngbin0 -> 417 bytes
-rw-r--r--moretrees/textures/moretrees_acorn_muffin.pngbin0 -> 782 bytes
-rw-r--r--moretrees/textures/moretrees_acorn_muffin_batter.pngbin0 -> 619 bytes
-rw-r--r--moretrees/textures/moretrees_apple_tree_leaves.pngbin0 -> 351 bytes
-rw-r--r--moretrees/textures/moretrees_apple_tree_sapling.pngbin0 -> 183 bytes
-rw-r--r--moretrees/textures/moretrees_apple_tree_trunk.pngbin0 -> 1066 bytes
-rw-r--r--moretrees/textures/moretrees_apple_tree_trunk_top.pngbin0 -> 503 bytes
-rw-r--r--moretrees/textures/moretrees_apple_tree_wood.pngbin0 -> 464 bytes
-rw-r--r--moretrees/textures/moretrees_beech_leaves.pngbin0 -> 201 bytes
-rw-r--r--moretrees/textures/moretrees_beech_sapling.pngbin0 -> 177 bytes
-rw-r--r--moretrees/textures/moretrees_beech_trunk.pngbin0 -> 980 bytes
-rw-r--r--moretrees/textures/moretrees_beech_trunk_top.pngbin0 -> 926 bytes
-rw-r--r--moretrees/textures/moretrees_beech_wood.pngbin0 -> 175 bytes
-rw-r--r--moretrees/textures/moretrees_birch_leaves.pngbin0 -> 459 bytes
-rw-r--r--moretrees/textures/moretrees_birch_sapling.pngbin0 -> 208 bytes
-rw-r--r--moretrees/textures/moretrees_birch_trunk.pngbin0 -> 975 bytes
-rw-r--r--moretrees/textures/moretrees_birch_trunk_top.pngbin0 -> 811 bytes
-rw-r--r--moretrees/textures/moretrees_birch_wood.pngbin0 -> 1075 bytes
-rw-r--r--moretrees/textures/moretrees_coconut.pngbin0 -> 963 bytes
-rw-r--r--moretrees/textures/moretrees_coconut_milk.pngbin0 -> 227 bytes
-rw-r--r--moretrees/textures/moretrees_coconut_milk_inv.pngbin0 -> 199 bytes
-rw-r--r--moretrees/textures/moretrees_fir_cone.pngbin0 -> 244 bytes
-rw-r--r--moretrees/textures/moretrees_fir_leaves.pngbin0 -> 205 bytes
-rw-r--r--moretrees/textures/moretrees_fir_leaves_bright.pngbin0 -> 205 bytes
-rw-r--r--moretrees/textures/moretrees_fir_nuts.pngbin0 -> 361 bytes
-rw-r--r--moretrees/textures/moretrees_fir_sapling.pngbin0 -> 166 bytes
-rw-r--r--moretrees/textures/moretrees_fir_trunk.pngbin0 -> 753 bytes
-rw-r--r--moretrees/textures/moretrees_fir_trunk_top.pngbin0 -> 924 bytes
-rw-r--r--moretrees/textures/moretrees_fir_wood.pngbin0 -> 1055 bytes
-rw-r--r--moretrees/textures/moretrees_jungletree_leaves_green.pngbin0 -> 201 bytes
-rw-r--r--moretrees/textures/moretrees_jungletree_leaves_red.pngbin0 -> 201 bytes
-rw-r--r--moretrees/textures/moretrees_jungletree_leaves_yellow.pngbin0 -> 201 bytes
-rw-r--r--moretrees/textures/moretrees_oak_leaves.pngbin0 -> 730 bytes
-rw-r--r--moretrees/textures/moretrees_oak_sapling.pngbin0 -> 172 bytes
-rw-r--r--moretrees/textures/moretrees_oak_trunk.pngbin0 -> 998 bytes
-rw-r--r--moretrees/textures/moretrees_oak_trunk_top.pngbin0 -> 519 bytes
-rw-r--r--moretrees/textures/moretrees_oak_wood.pngbin0 -> 618 bytes
-rw-r--r--moretrees/textures/moretrees_palm_leaves.pngbin0 -> 918 bytes
-rw-r--r--moretrees/textures/moretrees_palm_sapling.pngbin0 -> 122 bytes
-rw-r--r--moretrees/textures/moretrees_palm_trunk.pngbin0 -> 295 bytes
-rw-r--r--moretrees/textures/moretrees_palm_trunk_top.pngbin0 -> 400 bytes
-rw-r--r--moretrees/textures/moretrees_palm_wood.pngbin0 -> 598 bytes
-rw-r--r--moretrees/textures/moretrees_pine_cone.pngbin0 -> 315 bytes
-rw-r--r--moretrees/textures/moretrees_pine_nuts.pngbin0 -> 369 bytes
-rw-r--r--moretrees/textures/moretrees_raw_coconut.pngbin0 -> 466 bytes
-rw-r--r--moretrees/textures/moretrees_rubber_tree_leaves.pngbin0 -> 201 bytes
-rw-r--r--moretrees/textures/moretrees_rubber_tree_sapling.pngbin0 -> 151 bytes
-rw-r--r--moretrees/textures/moretrees_rubber_tree_trunk.pngbin0 -> 693 bytes
-rw-r--r--moretrees/textures/moretrees_rubber_tree_trunk_empty.pngbin0 -> 1107 bytes
-rw-r--r--moretrees/textures/moretrees_rubber_tree_trunk_top.pngbin0 -> 534 bytes
-rw-r--r--moretrees/textures/moretrees_rubber_tree_wood.pngbin0 -> 435 bytes
-rw-r--r--moretrees/textures/moretrees_sequoia_leaves.pngbin0 -> 205 bytes
-rw-r--r--moretrees/textures/moretrees_sequoia_sapling.pngbin0 -> 209 bytes
-rw-r--r--moretrees/textures/moretrees_sequoia_trunk.pngbin0 -> 621 bytes
-rw-r--r--moretrees/textures/moretrees_sequoia_trunk_top.pngbin0 -> 594 bytes
-rw-r--r--moretrees/textures/moretrees_sequoia_wood.pngbin0 -> 1037 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_cone.pngbin0 -> 496 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_leaves.pngbin0 -> 205 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_nuts.pngbin0 -> 365 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_sapling.pngbin0 -> 153 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_trunk.pngbin0 -> 753 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_trunk_top.pngbin0 -> 414 bytes
-rw-r--r--moretrees/textures/moretrees_spruce_wood.pngbin0 -> 536 bytes
-rw-r--r--moretrees/textures/moretrees_willow_leaves.pngbin0 -> 409 bytes
-rw-r--r--moretrees/textures/moretrees_willow_sapling.pngbin0 -> 168 bytes
-rw-r--r--moretrees/textures/moretrees_willow_trunk.pngbin0 -> 630 bytes
-rw-r--r--moretrees/textures/moretrees_willow_trunk_top.pngbin0 -> 513 bytes
-rw-r--r--moretrees/textures/moretrees_willow_wood.pngbin0 -> 565 bytes
-rw-r--r--moretrees/tree_biomes.txt34
-rw-r--r--moretrees/tree_models.lua246
-rw-r--r--nixie_tubes/LICENSE191
-rw-r--r--nixie_tubes/README.md33
-rw-r--r--nixie_tubes/depends.txt2
-rw-r--r--nixie_tubes/description.txt1
-rw-r--r--nixie_tubes/init.lua413
-rw-r--r--nixie_tubes/models/decatron.obj1225
-rw-r--r--nixie_tubes/models/nixie_tube.obj712
-rw-r--r--nixie_tubes/screenshot.pngbin0 -> 56166 bytes
-rw-r--r--nixie_tubes/textures/decatron_anode.pngbin0 -> 169 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_0.pngbin0 -> 190 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_1.pngbin0 -> 194 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_2.pngbin0 -> 196 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_3.pngbin0 -> 193 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_4.pngbin0 -> 199 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_5.pngbin0 -> 202 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_6.pngbin0 -> 202 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_7.pngbin0 -> 199 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_8.pngbin0 -> 199 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_9.pngbin0 -> 202 bytes
-rw-r--r--nixie_tubes/textures/decatron_cathode_pins.pngbin0 -> 231 bytes
-rw-r--r--nixie_tubes/textures/decatron_internals.pngbin0 -> 485 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_1.pngbin0 -> 272 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_10.pngbin0 -> 362 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_11.pngbin0 -> 858 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_12.pngbin0 -> 409 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_13.pngbin0 -> 863 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_14.pngbin0 -> 361 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_15.pngbin0 -> 797 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_2.pngbin0 -> 371 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_3.pngbin0 -> 408 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_4.pngbin0 -> 335 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_5.pngbin0 -> 402 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_6.pngbin0 -> 362 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_7.pngbin0 -> 817 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_8.pngbin0 -> 379 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_seg_9.pngbin0 -> 820 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_alnum_wires.pngbin0 -> 3390 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_anode.pngbin0 -> 606 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_backing.pngbin0 -> 2198 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_base.pngbin0 -> 1526 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_blank.pngbin0 -> 70 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_0.pngbin0 -> 925 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_1.pngbin0 -> 327 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_2.pngbin0 -> 712 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_3.pngbin0 -> 804 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_4.pngbin0 -> 620 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_5.pngbin0 -> 725 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_6.pngbin0 -> 956 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_7.pngbin0 -> 569 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_8.pngbin0 -> 1088 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_9.pngbin0 -> 942 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_colon.pngbin0 -> 242 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_off.pngbin0 -> 1318 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_cathode_period.pngbin0 -> 216 bytes
-rw-r--r--nixie_tubes/textures/nixie_tube_glass.pngbin0 -> 284 bytes
-rw-r--r--notice/init.lua53
-rw-r--r--pipeworks/LICENSE17
-rw-r--r--pipeworks/README22
-rw-r--r--pipeworks/autocrafter.lua368
-rw-r--r--pipeworks/autoplace_pipes.lua200
-rw-r--r--pipeworks/autoplace_tubes.lua122
-rw-r--r--pipeworks/changelog.txt93
-rw-r--r--pipeworks/common.lua157
-rw-r--r--pipeworks/compat.lua145
-rw-r--r--pipeworks/crafts.lua151
-rw-r--r--pipeworks/decorative_tubes.lua83
-rw-r--r--pipeworks/default_settings.txt22
-rw-r--r--pipeworks/depends.txt3
-rw-r--r--pipeworks/devices.lua572
-rw-r--r--pipeworks/filter-injector.lua239
-rw-r--r--pipeworks/flowing_logic.lua121
-rw-r--r--pipeworks/init.lua115
-rw-r--r--pipeworks/item_transport.lua286
-rw-r--r--pipeworks/legacy.lua59
-rw-r--r--pipeworks/luaentity.lua351
-rw-r--r--pipeworks/models.lua49
-rw-r--r--pipeworks/models/pipeworks_entry_panel.obj390
-rw-r--r--pipeworks/models/pipeworks_flow_sensor.obj390
-rw-r--r--pipeworks/models/pipeworks_fountainhead.obj352
-rw-r--r--pipeworks/models/pipeworks_pipe_10.obj891
-rw-r--r--pipeworks/models/pipeworks_pipe_2.obj392
-rw-r--r--pipeworks/models/pipeworks_pipe_3.obj354
-rw-r--r--pipeworks/models/pipeworks_pipe_4.obj478
-rw-r--r--pipeworks/models/pipeworks_pipe_5.obj542
-rw-r--r--pipeworks/models/pipeworks_pipe_6.obj499
-rw-r--r--pipeworks/models/pipeworks_pipe_7.obj629
-rw-r--r--pipeworks/models/pipeworks_pipe_8.obj631
-rw-r--r--pipeworks/models/pipeworks_pipe_9.obj759
-rw-r--r--pipeworks/models/pipeworks_pump.obj282
-rw-r--r--pipeworks/models/pipeworks_spigot.obj512
-rw-r--r--pipeworks/models/pipeworks_spigot_pouring.obj634
-rw-r--r--pipeworks/models/pipeworks_valve_off.obj458
-rw-r--r--pipeworks/models/pipeworks_valve_on.obj458
-rw-r--r--pipeworks/pipes.lua222
-rw-r--r--pipeworks/routing_tubes.lua119
-rw-r--r--pipeworks/signal_tubes.lua111
-rw-r--r--pipeworks/sorting_tubes.lua148
-rw-r--r--pipeworks/teleport_tube.lua242
-rw-r--r--pipeworks/textures/homedecor_oil_extract.pngbin0 -> 285 bytes
-rw-r--r--pipeworks/textures/homedecor_paraffin.pngbin0 -> 345 bytes
-rw-r--r--pipeworks/textures/homedecor_plastic_sheeting.pngbin0 -> 290 bytes
-rw-r--r--pipeworks/textures/pipeworks_accelerator_tube_end.pngbin0 -> 1229 bytes
-rw-r--r--pipeworks/textures/pipeworks_accelerator_tube_inv.pngbin0 -> 665 bytes
-rw-r--r--pipeworks/textures/pipeworks_accelerator_tube_noctr.pngbin0 -> 1032 bytes
-rw-r--r--pipeworks/textures/pipeworks_accelerator_tube_plain.pngbin0 -> 1195 bytes
-rw-r--r--pipeworks/textures/pipeworks_accelerator_tube_short.pngbin0 -> 661 bytes
-rw-r--r--pipeworks/textures/pipeworks_autocrafter.pngbin0 -> 140 bytes
-rw-r--r--pipeworks/textures/pipeworks_black.pngbin0 -> 83 bytes
-rw-r--r--pipeworks/textures/pipeworks_blue.pngbin0 -> 83 bytes
-rw-r--r--pipeworks/textures/pipeworks_button_interm.pngbin0 -> 5409 bytes
-rw-r--r--pipeworks/textures/pipeworks_button_off.pngbin0 -> 5979 bytes
-rw-r--r--pipeworks/textures/pipeworks_button_on.pngbin0 -> 6064 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_end.pngbin0 -> 2022 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_inv.pngbin0 -> 1239 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_noctr.pngbin0 -> 1630 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_on_end.pngbin0 -> 2188 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_on_noctr.pngbin0 -> 1739 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_on_plain.pngbin0 -> 2167 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_plain.pngbin0 -> 2169 bytes
-rw-r--r--pipeworks/textures/pipeworks_conductor_tube_short.pngbin0 -> 839 bytes
-rw-r--r--pipeworks/textures/pipeworks_crossing_tube_end.pngbin0 -> 1195 bytes
-rw-r--r--pipeworks/textures/pipeworks_crossing_tube_inv.pngbin0 -> 535 bytes
-rw-r--r--pipeworks/textures/pipeworks_crossing_tube_noctr.pngbin0 -> 1005 bytes
-rw-r--r--pipeworks/textures/pipeworks_crossing_tube_plain.pngbin0 -> 1219 bytes
-rw-r--r--pipeworks/textures/pipeworks_crossing_tube_short.pngbin0 -> 575 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_back.pngbin0 -> 275 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_bottom.pngbin0 -> 801 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_front_off.pngbin0 -> 669 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_front_on.pngbin0 -> 543 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_side.pngbin0 -> 823 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_side1.pngbin0 -> 823 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_side2.pngbin0 -> 823 bytes
-rw-r--r--pipeworks/textures/pipeworks_deployer_top.pngbin0 -> 800 bytes
-rw-r--r--pipeworks/textures/pipeworks_detector_tube_end.pngbin0 -> 1068 bytes
-rw-r--r--pipeworks/textures/pipeworks_detector_tube_inv.pngbin0 -> 795 bytes
-rw-r--r--pipeworks/textures/pipeworks_detector_tube_noctr.pngbin0 -> 892 bytes
-rw-r--r--pipeworks/textures/pipeworks_detector_tube_plain.pngbin0 -> 1551 bytes
-rw-r--r--pipeworks/textures/pipeworks_detector_tube_short.pngbin0 -> 526 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_back.pngbin0 -> 1744 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_bottom.pngbin0 -> 1600 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_front_off.pngbin0 -> 1989 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_front_on.pngbin0 -> 1932 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_side1.pngbin0 -> 1587 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_side2.pngbin0 -> 1597 bytes
-rw-r--r--pipeworks/textures/pipeworks_dispenser_top.pngbin0 -> 1575 bytes
-rw-r--r--pipeworks/textures/pipeworks_entry_panel.pngbin0 -> 4915 bytes
-rw-r--r--pipeworks/textures/pipeworks_filter_input.pngbin0 -> 190 bytes
-rw-r--r--pipeworks/textures/pipeworks_filter_output.pngbin0 -> 175 bytes
-rw-r--r--pipeworks/textures/pipeworks_filter_side.pngbin0 -> 190 bytes
-rw-r--r--pipeworks/textures/pipeworks_filter_top.pngbin0 -> 195 bytes
-rw-r--r--pipeworks/textures/pipeworks_flow_sensor_off.pngbin0 -> 3759 bytes
-rw-r--r--pipeworks/textures/pipeworks_flow_sensor_on.pngbin0 -> 4484 bytes
-rw-r--r--pipeworks/textures/pipeworks_fountainhead.pngbin0 -> 3218 bytes
-rw-r--r--pipeworks/textures/pipeworks_grating_sides.pngbin0 -> 4433 bytes
-rw-r--r--pipeworks/textures/pipeworks_grating_top.pngbin0 -> 4376 bytes
-rw-r--r--pipeworks/textures/pipeworks_green.pngbin0 -> 83 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_filter_input.pngbin0 -> 190 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_filter_output.pngbin0 -> 175 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_filter_side.pngbin0 -> 190 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_filter_top.pngbin0 -> 195 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_sand_tube_end.pngbin0 -> 1104 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_sand_tube_inv.pngbin0 -> 595 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_sand_tube_noctr.pngbin0 -> 912 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_sand_tube_plain.pngbin0 -> 1091 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_sand_tube_short.pngbin0 -> 554 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_end.pngbin0 -> 1229 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_inv.pngbin0 -> 665 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_noctr_1.pngbin0 -> 1098 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_noctr_2.pngbin0 -> 1102 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_noctr_3.pngbin0 -> 1102 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_noctr_4.pngbin0 -> 1102 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_noctr_5.pngbin0 -> 1102 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_noctr_6.pngbin0 -> 1102 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_plain_1.pngbin0 -> 1269 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_plain_2.pngbin0 -> 1273 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_plain_3.pngbin0 -> 1274 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_plain_4.pngbin0 -> 1269 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_plain_5.pngbin0 -> 1269 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_plain_6.pngbin0 -> 1274 bytes
-rw-r--r--pipeworks/textures/pipeworks_mese_tube_short.pngbin0 -> 661 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_back.pngbin0 -> 632 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_bottom_off.pngbin0 -> 637 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_bottom_on.pngbin0 -> 640 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_front_off.pngbin0 -> 587 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_front_on.pngbin0 -> 544 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_side1_off.pngbin0 -> 581 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_side1_on.pngbin0 -> 589 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_side2_off.pngbin0 -> 581 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_side2_on.pngbin0 -> 589 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_top_off.pngbin0 -> 637 bytes
-rw-r--r--pipeworks/textures/pipeworks_nodebreaker_top_on.pngbin0 -> 640 bytes
-rw-r--r--pipeworks/textures/pipeworks_one_way_tube_input.pngbin0 -> 349 bytes
-rw-r--r--pipeworks/textures/pipeworks_one_way_tube_output.pngbin0 -> 349 bytes
-rw-r--r--pipeworks/textures/pipeworks_one_way_tube_side.pngbin0 -> 859 bytes
-rw-r--r--pipeworks/textures/pipeworks_one_way_tube_top.pngbin0 -> 860 bytes
-rw-r--r--pipeworks/textures/pipeworks_pane_embedded_tube_ends.pngbin0 -> 1005 bytes
-rw-r--r--pipeworks/textures/pipeworks_pane_embedded_tube_sides.pngbin0 -> 1031 bytes
-rw-r--r--pipeworks/textures/pipeworks_pipe_3_empty.pngbin0 -> 2351 bytes
-rw-r--r--pipeworks/textures/pipeworks_pipe_3_loaded.pngbin0 -> 2389 bytes
-rw-r--r--pipeworks/textures/pipeworks_pipe_inv.pngbin0 -> 4104 bytes
-rw-r--r--pipeworks/textures/pipeworks_pipe_plain.pngbin0 -> 2343 bytes
-rw-r--r--pipeworks/textures/pipeworks_plastic_sheeting.pngbin0 -> 152 bytes
-rw-r--r--pipeworks/textures/pipeworks_pump_off.pngbin0 -> 25829 bytes
-rw-r--r--pipeworks/textures/pipeworks_pump_on.pngbin0 -> 26842 bytes
-rw-r--r--pipeworks/textures/pipeworks_red.pngbin0 -> 83 bytes
-rw-r--r--pipeworks/textures/pipeworks_sand_tube_end.pngbin0 -> 1158 bytes
-rw-r--r--pipeworks/textures/pipeworks_sand_tube_inv.pngbin0 -> 632 bytes
-rw-r--r--pipeworks/textures/pipeworks_sand_tube_noctr.pngbin0 -> 971 bytes
-rw-r--r--pipeworks/textures/pipeworks_sand_tube_plain.pngbin0 -> 1129 bytes
-rw-r--r--pipeworks/textures/pipeworks_sand_tube_short.pngbin0 -> 602 bytes
-rw-r--r--pipeworks/textures/pipeworks_spigot.pngbin0 -> 2463 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_back.pngbin0 -> 248 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_fittings.pngbin0 -> 285 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_0.pngbin0 -> 3770 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_1.pngbin0 -> 723 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_10.pngbin0 -> 270 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_2.pngbin0 -> 710 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_3.pngbin0 -> 700 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_4.pngbin0 -> 701 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_5.pngbin0 -> 281 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_6.pngbin0 -> 266 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_7.pngbin0 -> 265 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_8.pngbin0 -> 266 bytes
-rw-r--r--pipeworks/textures/pipeworks_storage_tank_front_9.pngbin0 -> 264 bytes
-rw-r--r--pipeworks/textures/pipeworks_teleport_tube_end.pngbin0 -> 1694 bytes
-rw-r--r--pipeworks/textures/pipeworks_teleport_tube_inv.pngbin0 -> 842 bytes
-rw-r--r--pipeworks/textures/pipeworks_teleport_tube_noctr.pngbin0 -> 1455 bytes
-rw-r--r--pipeworks/textures/pipeworks_teleport_tube_plain.pngbin0 -> 1682 bytes
-rw-r--r--pipeworks/textures/pipeworks_teleport_tube_short.pngbin0 -> 967 bytes
-rw-r--r--pipeworks/textures/pipeworks_testobject.pngbin0 -> 4012 bytes
-rw-r--r--pipeworks/textures/pipeworks_trashcan_bottom.pngbin0 -> 119 bytes
-rw-r--r--pipeworks/textures/pipeworks_trashcan_side.pngbin0 -> 89 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_connection_metallic.pngbin0 -> 161 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_connection_stony.pngbin0 -> 170 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_connection_wooden.pngbin0 -> 152 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_end.pngbin0 -> 1068 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_inv.pngbin0 -> 523 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_noctr.pngbin0 -> 892 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_plain.pngbin0 -> 1073 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_short.pngbin0 -> 526 bytes
-rw-r--r--pipeworks/textures/pipeworks_tube_transparent.pngbin0 -> 95 bytes
-rw-r--r--pipeworks/textures/pipeworks_valve.pngbin0 -> 5043 bytes
-rw-r--r--pipeworks/textures/pipeworks_white.pngbin0 -> 83 bytes
-rw-r--r--pipeworks/textures/pipeworks_yellow.pngbin0 -> 83 bytes
-rw-r--r--pipeworks/trashcan.lua49
-rw-r--r--pipeworks/tube_registration.lua240
-rw-r--r--pipeworks/vacuum_tubes.lua122
-rw-r--r--pipeworks/wielder.lua456
-rw-r--r--plantlife_modpack/3dmushrooms/depends.txt2
-rw-r--r--plantlife_modpack/3dmushrooms/init.lua68
-rw-r--r--plantlife_modpack/3dmushrooms/models/3dmushrooms.obj329
-rw-r--r--plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown.pngbin0 -> 5094 bytes
-rw-r--r--plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown_inv.pngbin0 -> 4266 bytes
-rw-r--r--plantlife_modpack/3dmushrooms/textures/3dmushrooms_red.pngbin0 -> 2731 bytes
-rw-r--r--plantlife_modpack/3dmushrooms/textures/3dmushrooms_red_inv.pngbin0 -> 5279 bytes
-rw-r--r--plantlife_modpack/LICENSE336
-rw-r--r--plantlife_modpack/README72
-rw-r--r--plantlife_modpack/along_shore/depends.txt3
-rw-r--r--plantlife_modpack/along_shore/init.lua9
-rw-r--r--plantlife_modpack/along_shore/textures/along_shore_seaweed_1Darker.pngbin0 -> 234 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/credit_textures.txt30
-rw-r--r--plantlife_modpack/along_shore/textures/old/LillyPad3x16.pngbin0 -> 439 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/MultiLilly16x.pngbin0 -> 305 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_empty.pngbin0 -> 74 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_lilypads_1.pngbin0 -> 305 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_lilypads_2.pngbin0 -> 382 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_lilypads_3.pngbin0 -> 314 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_lilypads_4.pngbin0 -> 209 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_pondscum_1.pngbin0 -> 543 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_seaweed_1.pngbin0 -> 222 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_seaweed_2.pngbin0 -> 224 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_seaweed_3.pngbin0 -> 226 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/along_shore_seaweed_4.pngbin0 -> 178 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/flowers_seaweed.pngbin0 -> 222 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/flowers_waterlily.pngbin0 -> 404 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/flowers_waterlily_22.5.pngbin0 -> 429 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/flowers_waterlily_45.pngbin0 -> 424 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/flowers_waterlily_67.5.pngbin0 -> 427 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/lillyPad5x16.pngbin0 -> 308 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/lillypad3Flower16x.pngbin0 -> 411 bytes
-rw-r--r--plantlife_modpack/along_shore/textures/old/pondscum16xc.pngbin0 -> 543 bytes
-rw-r--r--plantlife_modpack/bushes/depends.txt4
-rw-r--r--plantlife_modpack/bushes/init.lua257
-rw-r--r--plantlife_modpack/bushes/textures/bushes_branches_center_1.pngbin0 -> 305 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_branches_center_2.pngbin0 -> 305 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_branches_left_1.pngbin0 -> 577 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_branches_left_2.pngbin0 -> 598 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_branches_right_1.pngbin0 -> 592 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_branches_right_2.pngbin0 -> 632 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_leaves_1.pngbin0 -> 205 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_leaves_2.pngbin0 -> 205 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_youngtree2trunk.pngbin0 -> 1074 bytes
-rw-r--r--plantlife_modpack/bushes/textures/bushes_youngtree2trunk_inv.pngbin0 -> 872 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BlockBranch1.pngbin0 -> 73879 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BlockBranch1L.pngbin0 -> 34131 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BlockBranch1R.pngbin0 -> 40264 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranches1.pngbin0 -> 52878 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranches1sm.pngbin0 -> 609 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranches1sm2.pngbin0 -> 620 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranches1sm3.pngbin0 -> 396 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranches1sm4.pngbin0 -> 540 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranchesCenter.pngbin0 -> 285 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranchesSide1.pngbin0 -> 657 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/BushBranchesSide2.pngbin0 -> 693 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/blank.pngbin0 -> 83 bytes
-rw-r--r--plantlife_modpack/bushes/textures/old & unused/moretrees_pine_leaves3.pngbin0 -> 525 bytes
-rw-r--r--plantlife_modpack/bushes_classic/cooking.lua118
-rw-r--r--plantlife_modpack/bushes_classic/depends.txt3
-rw-r--r--plantlife_modpack/bushes_classic/image_credits.txt5
-rw-r--r--plantlife_modpack/bushes_classic/init.lua59
-rw-r--r--plantlife_modpack/bushes_classic/locale/de.txt43
-rw-r--r--plantlife_modpack/bushes_classic/locale/fr.txt43
-rw-r--r--plantlife_modpack/bushes_classic/locale/template.txt43
-rw-r--r--plantlife_modpack/bushes_classic/locale/tr.txt44
-rw-r--r--plantlife_modpack/bushes_classic/models/bushes_basket_empty.obj46
-rw-r--r--plantlife_modpack/bushes_classic/models/bushes_basket_full.obj330
-rw-r--r--plantlife_modpack/bushes_classic/models/bushes_bush.obj329
-rw-r--r--plantlife_modpack/bushes_classic/nodes.lua214
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket.pngbin0 -> 2956 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blackberry.pngbin0 -> 3631 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blueberry.pngbin0 -> 3627 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket_pie_gooseberry.pngbin0 -> 3645 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket_pie_mixed_berry.pngbin0 -> 3587 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket_pie_raspberry.pngbin0 -> 3610 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_basket_pie_strawberry.pngbin0 -> 3607 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blackberry.pngbin0 -> 1140 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_cooked.pngbin0 -> 601 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_raw.pngbin0 -> 612 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_slice.pngbin0 -> 341 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blueberry.pngbin0 -> 1615 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_cooked.pngbin0 -> 602 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_raw.pngbin0 -> 606 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_slice.pngbin0 -> 347 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_bush_blackberry.pngbin0 -> 9089 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_bush_blueberry.pngbin0 -> 9203 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_bush_fruitless.pngbin0 -> 7891 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_bush_gooseberry.pngbin0 -> 9275 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_bush_raspberry.pngbin0 -> 9226 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_bush_strawberry.pngbin0 -> 9137 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_gooseberry.pngbin0 -> 979 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_cooked.pngbin0 -> 607 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_raw.pngbin0 -> 597 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_slice.pngbin0 -> 348 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_cooked.pngbin0 -> 565 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_raw.pngbin0 -> 586 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_slice.pngbin0 -> 337 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_raspberry.pngbin0 -> 1360 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_cooked.pngbin0 -> 613 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_raw.pngbin0 -> 610 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_slice.pngbin0 -> 352 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_strawberry.pngbin0 -> 1961 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_cooked.pngbin0 -> 577 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_raw.pngbin0 -> 606 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_slice.pngbin0 -> 339 bytes
-rw-r--r--plantlife_modpack/bushes_classic/textures/bushes_sugar.pngbin0 -> 2077 bytes
-rw-r--r--plantlife_modpack/cavestuff/depends.txt2
-rw-r--r--plantlife_modpack/cavestuff/init.lua12
-rw-r--r--plantlife_modpack/cavestuff/mapgen.lua52
-rw-r--r--plantlife_modpack/cavestuff/models/cavestuff_pebble.obj279
-rw-r--r--plantlife_modpack/cavestuff/nodes.lua145
-rw-r--r--plantlife_modpack/cavestuff/textures/undergrowth_desert_pebble.pngbin0 -> 303 bytes
-rw-r--r--plantlife_modpack/cavestuff/textures/undergrowth_pebble.pngbin0 -> 362 bytes
-rw-r--r--plantlife_modpack/copyright.txt10
-rw-r--r--plantlife_modpack/dryplants/crafting.lua360
-rw-r--r--plantlife_modpack/dryplants/depends.txt3
-rw-r--r--plantlife_modpack/dryplants/init.lua203
-rw-r--r--plantlife_modpack/dryplants/juncus.lua133
-rw-r--r--plantlife_modpack/dryplants/meadowvariation.lua26
-rw-r--r--plantlife_modpack/dryplants/models/plantlike.obj28
-rw-r--r--plantlife_modpack/dryplants/moregrass.lua33
-rw-r--r--plantlife_modpack/dryplants/reed.lua380
-rw-r--r--plantlife_modpack/dryplants/reedmace.lua411
-rw-r--r--plantlife_modpack/dryplants/settings.txt52
-rw-r--r--plantlife_modpack/dryplants/textures/default_grass_1.pngbin0 -> 212 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/default_grass_2.pngbin0 -> 315 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/default_grass_3.pngbin0 -> 428 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/default_grass_4.pngbin0 -> 525 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/default_grass_5.pngbin0 -> 611 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_grass.pngbin0 -> 486 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_grass_short.pngbin0 -> 771 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_grass_short_side.pngbin0 -> 396 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_hay.pngbin0 -> 512 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_juncus_02.pngbin0 -> 670 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_juncus_03.pngbin0 -> 720 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_juncus_inv.pngbin0 -> 600 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reed.pngbin0 -> 685 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reed_wet.pngbin0 -> 672 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace.pngbin0 -> 615 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_bottom.pngbin0 -> 708 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_height_2.pngbin0 -> 1255 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3.pngbin0 -> 1893 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3_spikes.pngbin0 -> 2137 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_sapling.pngbin0 -> 455 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_spikes.pngbin0 -> 491 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_top.pngbin0 -> 329 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_reedmace_water.pngbin0 -> 588 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/dryplants_sickle.pngbin0 -> 147 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/big_pic_8.pngbin0 -> 1983 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/big_pic_9.pngbin0 -> 2178 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_cattailsG_m2.pngbin0 -> 1491 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_left.pngbin0 -> 352 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_right.pngbin0 -> 393 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_whole2.pngbin0 -> 621 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_left.pngbin0 -> 414 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_right.pngbin0 -> 387 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_whole2.pngbin0 -> 665 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_01.pngbin0 -> 362 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_02.pngbin0 -> 708 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_03.pngbin0 -> 1148 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_04.pngbin0 -> 1329 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_left.pngbin0 -> 122 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_right.pngbin0 -> 189 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_left.pngbin0 -> 185 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_right.pngbin0 -> 196 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_left.pngbin0 -> 102 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_right.pngbin0 -> 147 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/reedmace2.pngbin0 -> 2359 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/reedmace3.pngbin0 -> 2869 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/reedmace4.pngbin0 -> 2960 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/reedtest.pngbin0 -> 333 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/not_in_use/texturing.pngbin0 -> 3055 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old3.pngbin0 -> 823 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old4.pngbin0 -> 337 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_left_old.pngbin0 -> 371 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_right_old.pngbin0 -> 389 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_left_old.pngbin0 -> 414 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_right_old.pngbin0 -> 400 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_left_old2.pngbin0 -> 143 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_old4.pngbin0 -> 734 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_right_old2.pngbin0 -> 186 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_left_old2.pngbin0 -> 191 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_old8.pngbin0 -> 698 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_right_old2.pngbin0 -> 200 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_spikes_old3.pngbin0 -> 556 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_left_old2.pngbin0 -> 99 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_old3.pngbin0 -> 404 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_right_old2.pngbin0 -> 120 bytes
-rw-r--r--plantlife_modpack/dryplants/textures/old/dryplants_reedmace_water_old2.pngbin0 -> 569 bytes
-rw-r--r--plantlife_modpack/ferns/crafting.lua104
-rw-r--r--plantlife_modpack/ferns/depends.txt2
-rw-r--r--plantlife_modpack/ferns/fern.lua196
-rw-r--r--plantlife_modpack/ferns/gianttreefern.lua336
-rw-r--r--plantlife_modpack/ferns/horsetail.lua156
-rw-r--r--plantlife_modpack/ferns/init.lua69
-rw-r--r--plantlife_modpack/ferns/settings.lua43
-rw-r--r--plantlife_modpack/ferns/textures/ferns_5.pngbin0 -> 550 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_6.pngbin0 -> 666 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_7.pngbin0 -> 669 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_8.pngbin0 -> 510 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern.pngbin0 -> 362 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_big.pngbin0 -> 1170 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_mid.pngbin0 -> 699 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_tree.pngbin0 -> 1339 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_tree_giant.pngbin0 -> 3250 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_tree_inv.pngbin0 -> 391 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_tree_tl.pngbin0 -> 264 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_tree_tr.pngbin0 -> 256 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_trunk.pngbin0 -> 765 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_trunk_big.pngbin0 -> 684 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_trunk_big_top.pngbin0 -> 398 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fern_trunk_top.pngbin0 -> 233 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_ferntuber.pngbin0 -> 438 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_ferntuber_roasted.pngbin0 -> 428 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fiddlehead.pngbin0 -> 327 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_fiddlehead_roasted.pngbin0 -> 521 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_horsetail_01.pngbin0 -> 150 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_horsetail_02.pngbin0 -> 166 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_horsetail_03.pngbin0 -> 199 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_horsetail_04.pngbin0 -> 224 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_sapling_tree_fern.pngbin0 -> 168 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_sapling_tree_fern_giant.pngbin0 -> 224 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big.pngbin0 -> 560 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_cross.pngbin0 -> 724 bytes
-rw-r--r--plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_end.pngbin0 -> 456 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/archaeplantae_horsetails.pngbin0 -> 308 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/big picture 3.pngbin0 -> 1972 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_left.pngbin0 -> 640 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_right.pngbin0 -> 623 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_left.pngbin0 -> 393 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_right.pngbin0 -> 414 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_bl.pngbin0 -> 554 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_br.pngbin0 -> 544 bytes
-rw-r--r--plantlife_modpack/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.pngbin0 -> 681 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/archaeplantae_fern_old4.pngbin0 -> 368 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/comb.pngbin0 -> 112 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_5_old.pngbin0 -> 461 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_6_old.pngbin0 -> 700 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_7_old.pngbin0 -> 677 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_big_old.pngbin0 -> 1147 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_mid_old.pngbin0 -> 664 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_tree_old.pngbin0 -> 1294 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_old2.pngbin0 -> 669 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old.pngbin0 -> 814 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old2.pngbin0 -> 714 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_fern_trunk_top_old.pngbin0 -> 230 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_horsetail_01_old2.pngbin0 -> 177 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_horsetail_02_old2.pngbin0 -> 204 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_horsetail_03_old2.pngbin0 -> 251 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_horsetail_04_old2.pngbin0 -> 279 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.pngbin0 -> 712 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_end_old.pngbin0 -> 457 bytes
-rw-r--r--plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_old.pngbin0 -> 522 bytes
-rw-r--r--plantlife_modpack/ferns/treefern.lua228
-rw-r--r--plantlife_modpack/flowers_plus/depends.txt2
-rw-r--r--plantlife_modpack/flowers_plus/flowers-changelog.txt24
-rw-r--r--plantlife_modpack/flowers_plus/init.lua479
-rw-r--r--plantlife_modpack/flowers_plus/locale/de.txt13
-rw-r--r--plantlife_modpack/flowers_plus/locale/fr.txt13
-rw-r--r--plantlife_modpack/flowers_plus/locale/template.txt13
-rw-r--r--plantlife_modpack/flowers_plus/models/flowers_sunflower.obj73
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_seaweed.pngbin0 -> 234 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_seaweedLight.pngbin0 -> 222 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_seaweed_2.pngbin0 -> 224 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_seaweed_3.pngbin0 -> 226 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_seaweed_4.pngbin0 -> 178 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_sunflower.pngbin0 -> 811 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_sunflower_inv.pngbin0 -> 378 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily.pngbin0 -> 412 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_22.5.pngbin0 -> 409 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_45.pngbin0 -> 421 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_67.5.pngbin0 -> 435 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_1.pngbin0 -> 468 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_2.pngbin0 -> 472 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_3.pngbin0 -> 422 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_4.pngbin0 -> 219 bytes
-rw-r--r--plantlife_modpack/flowers_plus/textures/tr.txt14
-rw-r--r--plantlife_modpack/junglegrass/init.lua3
-rw-r--r--plantlife_modpack/modpack.txt0
-rw-r--r--plantlife_modpack/molehills/depends.txt2
-rw-r--r--plantlife_modpack/molehills/init.lua78
-rw-r--r--plantlife_modpack/molehills/models/molehill_molehill.obj197
-rw-r--r--plantlife_modpack/molehills/molehills_settings.txt6
-rw-r--r--plantlife_modpack/molehills/textures/molehills_dirt.pngbin0 -> 806 bytes
-rw-r--r--plantlife_modpack/molehills/textures/molehills_side.pngbin0 -> 308 bytes
-rw-r--r--plantlife_modpack/molehills/textures/old & unused/molehill_side.pngbin0 -> 110 bytes
-rw-r--r--plantlife_modpack/molehills/textures/old & unused/molehill_top.pngbin0 -> 162 bytes
-rw-r--r--plantlife_modpack/nature_classic/blossom.lua75
-rw-r--r--plantlife_modpack/nature_classic/config.lua6
-rw-r--r--plantlife_modpack/nature_classic/depends.txt2
-rw-r--r--plantlife_modpack/nature_classic/global_function.lua82
-rw-r--r--plantlife_modpack/nature_classic/init.lua41
-rw-r--r--plantlife_modpack/nature_classic/textures/nature_blossom.pngbin0 -> 115 bytes
-rw-r--r--plantlife_modpack/poisonivy/depends.txt2
-rw-r--r--plantlife_modpack/poisonivy/init.lua103
-rw-r--r--plantlife_modpack/poisonivy/locale/de.txt7
-rw-r--r--plantlife_modpack/poisonivy/locale/fr.txt7
-rw-r--r--plantlife_modpack/poisonivy/locale/template.txt7
-rw-r--r--plantlife_modpack/poisonivy/locale/tr.txt7
-rw-r--r--plantlife_modpack/poisonivy/textures/poisonivy_climbing.pngbin0 -> 228 bytes
-rw-r--r--plantlife_modpack/poisonivy/textures/poisonivy_seedling.pngbin0 -> 179 bytes
-rw-r--r--plantlife_modpack/poisonivy/textures/poisonivy_sproutling.pngbin0 -> 239 bytes
-rw-r--r--plantlife_modpack/trunks/crafting.lua133
-rw-r--r--plantlife_modpack/trunks/depends.txt6
-rw-r--r--plantlife_modpack/trunks/generating.lua554
-rw-r--r--plantlife_modpack/trunks/init.lua17
-rw-r--r--plantlife_modpack/trunks/nodes.lua368
-rw-r--r--plantlife_modpack/trunks/textures/credit_textures.txt34
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/comboSticks.pngbin0 -> 243 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/comboSticks_2.pngbin0 -> 363 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_root_mask_old.pngbin0 -> 135 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_1e.pngbin0 -> 136 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_1n.pngbin0 -> 147 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_2n.pngbin0 -> 142 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_3n.pngbin0 -> 138 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_4n.pngbin0 -> 152 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_5-8.pngbin0 -> 170 bytes
-rw-r--r--plantlife_modpack/trunks/textures/old & unused/trunks_twig_9-12.pngbin0 -> 200 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_moss.pngbin0 -> 199 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_moss_fungus.pngbin0 -> 230 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_root_mask.pngbin0 -> 191 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_1.pngbin0 -> 134 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_10.pngbin0 -> 149 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_11.pngbin0 -> 122 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_12.pngbin0 -> 115 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_13.pngbin0 -> 105 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_2.pngbin0 -> 141 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_3.pngbin0 -> 136 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_4.pngbin0 -> 126 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_5.pngbin0 -> 110 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_6.pngbin0 -> 74 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_7.pngbin0 -> 104 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_8.pngbin0 -> 118 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twig_9.pngbin0 -> 110 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twigs.pngbin0 -> 759 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twigs_corner.pngbin0 -> 641 bytes
-rw-r--r--plantlife_modpack/trunks/textures/trunks_twigs_top.pngbin0 -> 471 bytes
-rw-r--r--plantlife_modpack/trunks/trunks_settings.txt70
-rw-r--r--plantlife_modpack/vines/LICENSE.md4
-rw-r--r--plantlife_modpack/vines/README.md56
-rw-r--r--plantlife_modpack/vines/aliases.lua11
-rw-r--r--plantlife_modpack/vines/crafts.lua14
-rw-r--r--plantlife_modpack/vines/depends.txt3
-rw-r--r--plantlife_modpack/vines/functions.lua132
-rw-r--r--plantlife_modpack/vines/init.lua14
-rw-r--r--plantlife_modpack/vines/nodes.lua83
-rw-r--r--plantlife_modpack/vines/recipes.lua12
-rw-r--r--plantlife_modpack/vines/shear.lua15
-rw-r--r--plantlife_modpack/vines/textures/vines_item.pngbin0 -> 167 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_jungle_end.pngbin0 -> 497 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_jungle_middle.pngbin0 -> 481 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_root_end.pngbin0 -> 215 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_root_middle.pngbin0 -> 201 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_rope.pngbin0 -> 106 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_rope_end.pngbin0 -> 118 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_shears.pngbin0 -> 194 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_side_end.pngbin0 -> 247 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_side_middle.pngbin0 -> 225 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_vine_end.pngbin0 -> 364 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_vine_middle.pngbin0 -> 187 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_willow_end.pngbin0 -> 226 bytes
-rw-r--r--plantlife_modpack/vines/textures/vines_willow_middle.pngbin0 -> 196 bytes
-rw-r--r--plantlife_modpack/vines/vines.lua104
-rw-r--r--plantlife_modpack/woodsoils/depends.txt7
-rw-r--r--plantlife_modpack/woodsoils/generating.lua151
-rw-r--r--plantlife_modpack/woodsoils/init.lua29
-rw-r--r--plantlife_modpack/woodsoils/nodes.lua79
-rw-r--r--plantlife_modpack/woodsoils/textures/credit_textures.txt16
-rw-r--r--plantlife_modpack/woodsoils/textures/not in use/woodsoils.pngbin0 -> 110 bytes
-rw-r--r--plantlife_modpack/woodsoils/textures/woodsoils_ground.pngbin0 -> 693 bytes
-rw-r--r--plantlife_modpack/woodsoils/textures/woodsoils_ground_cover.pngbin0 -> 775 bytes
-rw-r--r--plantlife_modpack/woodsoils/textures/woodsoils_ground_cover2.pngbin0 -> 684 bytes
-rw-r--r--plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side.pngbin0 -> 353 bytes
-rw-r--r--plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side2.pngbin0 -> 325 bytes
-rw-r--r--plantlife_modpack/woodsoils/textures/woodsoils_ground_side.pngbin0 -> 368 bytes
-rw-r--r--plantlife_modpack/youngtrees/depends.txt2
-rw-r--r--plantlife_modpack/youngtrees/init.lua146
-rw-r--r--plantlife_modpack/youngtrees/textures/bamboo.pngbin0 -> 112 bytes
-rw-r--r--plantlife_modpack/youngtrees/textures/unused/sapling.pngbin0 -> 14617 bytes
-rw-r--r--plantlife_modpack/youngtrees/textures/unused/sapling16x.pngbin0 -> 1020 bytes
-rw-r--r--plantlife_modpack/youngtrees/textures/youngtree16xa.pngbin0 -> 420 bytes
-rw-r--r--plantlife_modpack/youngtrees/textures/youngtree16xb.pngbin0 -> 314 bytes
-rw-r--r--plantlife_modpack/youngtrees/textures/youngtree16xc.pngbin0 -> 142 bytes
-rw-r--r--plantlife_modpack/youngtrees/textures/youngtree2branch.pngbin0 -> 129 bytes
-rw-r--r--plasticbox/COPYING14
-rw-r--r--plasticbox/README.md28
-rw-r--r--plasticbox/depends.txt4
-rw-r--r--plasticbox/init.lua351
-rw-r--r--plasticbox/textures/plastic_powder.pngbin0 -> 234 bytes
-rw-r--r--plasticbox/textures/plasticbox.pngbin0 -> 499 bytes
-rw-r--r--plasticbox/textures/plasticbox_black.pngbin0 -> 453 bytes
-rw-r--r--plasticbox/textures/plasticbox_blue.pngbin0 -> 535 bytes
-rw-r--r--plasticbox/textures/plasticbox_brown.pngbin0 -> 463 bytes
-rw-r--r--plasticbox/textures/plasticbox_cyan.pngbin0 -> 513 bytes
-rw-r--r--plasticbox/textures/plasticbox_darkgreen.pngbin0 -> 431 bytes
-rw-r--r--plasticbox/textures/plasticbox_darkgrey.pngbin0 -> 430 bytes
-rw-r--r--plasticbox/textures/plasticbox_green.pngbin0 -> 486 bytes
-rw-r--r--plasticbox/textures/plasticbox_grey.pngbin0 -> 522 bytes
-rw-r--r--plasticbox/textures/plasticbox_magenta.pngbin0 -> 522 bytes
-rw-r--r--plasticbox/textures/plasticbox_orange.pngbin0 -> 512 bytes
-rw-r--r--plasticbox/textures/plasticbox_pink.pngbin0 -> 571 bytes
-rw-r--r--plasticbox/textures/plasticbox_red.pngbin0 -> 522 bytes
-rw-r--r--plasticbox/textures/plasticbox_violet.pngbin0 -> 539 bytes
-rw-r--r--plasticbox/textures/plasticbox_white.pngbin0 -> 441 bytes
-rw-r--r--plasticbox/textures/plasticbox_yellow.pngbin0 -> 517 bytes
-rw-r--r--player_textures/README.txt15
-rw-r--r--player_textures/depends.txt1
-rw-r--r--player_textures/init.lua27
-rw-r--r--player_textures/textures/player_Calinou.pngbin0 -> 2493 bytes
-rw-r--r--player_textures/textures/player_Evergreen.pngbin0 -> 8362 bytes
-rw-r--r--player_textures/textures/player_Jordach.pngbin0 -> 2955 bytes
-rw-r--r--player_textures/textures/player_PilzAdam.pngbin0 -> 879 bytes
-rw-r--r--player_textures/textures/player_PilzAdam_back.pngbin0 -> 152 bytes
-rw-r--r--player_textures/textures/player_ShadowNinja.pngbin0 -> 158 bytes
-rw-r--r--player_textures/textures/player_Sokomine.pngbin0 -> 2108 bytes
-rw-r--r--player_textures/textures/player_VanessaEzekowitz.pngbin0 -> 2678 bytes
-rw-r--r--player_textures/textures/player_Zeg9.pngbin0 -> 2704 bytes
-rw-r--r--player_textures/textures/player_cheapie.pngbin0 -> 679 bytes
-rw-r--r--player_textures/textures/player_crazyginger72.pngbin0 -> 60056 bytes
-rw-r--r--player_textures/textures/player_kaeza.pngbin0 -> 3773 bytes
-rw-r--r--player_textures/textures/player_oOChainLynxOo.pngbin0 -> 1071 bytes
-rw-r--r--player_textures/textures/player_playzooki.pngbin0 -> 627 bytes
-rw-r--r--player_textures/textures/player_sdzen.pngbin0 -> 2427 bytes
-rw-r--r--player_textures/textures/player_shadowzone.pngbin0 -> 274679 bytes
-rw-r--r--prefab/README.md0
-rw-r--r--prefab/crafting.lua167
-rw-r--r--prefab/depends.txt2
-rw-r--r--prefab/init.lua422
-rw-r--r--prefab/models/barge.obj822
-rw-r--r--prefab/other.lua169
-rw-r--r--prefab/textures/prefab_boat_inventory.pngbin0 -> 642 bytes
-rw-r--r--prefab/textures/prefab_concrete.pngbin0 -> 6659 bytes
-rw-r--r--prefab/textures/prefab_concrete_boat.pngbin0 -> 6562 bytes
-rw-r--r--prefab/textures/prefab_concrete_door.pngbin0 -> 3526 bytes
-rw-r--r--prefab/textures/prefab_concrete_door_bottom.pngbin0 -> 6719 bytes
-rw-r--r--prefab/textures/prefab_concrete_door_top.pngbin0 -> 5645 bytes
-rw-r--r--prefab/textures/prefab_concrete_grass.pngbin0 -> 5809 bytes
-rw-r--r--prefab/textures/prefab_concrete_grey.pngbin0 -> 70 bytes
-rw-r--r--prefab/textures/prefab_concrete_ladder.pngbin0 -> 2005 bytes
-rw-r--r--prefab/textures/prefab_concrete_wall.pngbin0 -> 6867 bytes
-rw-r--r--prefab/textures/prefab_concrete_window.pngbin0 -> 5257 bytes
-rw-r--r--prefab/textures/prefab_electric_fence.pngbin0 -> 109 bytes
-rw-r--r--prefab/textures/prefab_electric_fence_corner_side1.pngbin0 -> 1196 bytes
-rw-r--r--prefab/textures/prefab_electric_fence_corner_side2.pngbin0 -> 1191 bytes
-rw-r--r--prefab/textures/prefab_electric_fence_corner_top.pngbin0 -> 870 bytes
-rw-r--r--prefab/textures/prefab_electric_fence_end1.pngbin0 -> 4355 bytes
-rw-r--r--prefab/textures/prefab_electric_fence_end2.pngbin0 -> 5059 bytes
-rw-r--r--quartz/README.txt82
-rw-r--r--quartz/depends.txt3
-rw-r--r--quartz/init.lua190
-rw-r--r--quartz/settings.txt7
-rw-r--r--quartz/textures/quartz_block.pngbin0 -> 1166 bytes
-rw-r--r--quartz/textures/quartz_chiseled.pngbin0 -> 1166 bytes
-rw-r--r--quartz/textures/quartz_crystal_full.pngbin0 -> 1166 bytes
-rw-r--r--quartz/textures/quartz_crystal_piece.pngbin0 -> 206 bytes
-rw-r--r--quartz/textures/quartz_ore.pngbin0 -> 291 bytes
-rw-r--r--quartz/textures/quartz_pillar_side.pngbin0 -> 1166 bytes
-rw-r--r--quartz/textures/quartz_pillar_side_horizontal.pngbin0 -> 1166 bytes
-rw-r--r--quartz/textures/quartz_pillar_top.pngbin0 -> 1166 bytes
-rw-r--r--replacer/README.md45
-rw-r--r--replacer/check_owner.lua37
-rw-r--r--replacer/depends.txt2
-rw-r--r--replacer/init.lua238
-rw-r--r--replacer/inspect.lua412
-rw-r--r--replacer/textures/replacer_inspect.pngbin0 -> 594 bytes
-rw-r--r--replacer/textures/replacer_replacer.pngbin0 -> 461 bytes
-rw-r--r--signs_lib/_font/hdf_20.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/_font/hdf_21.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/hdf_22.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/hdf_23.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/_font/hdf_24.pngbin0 -> 112 bytes
-rw-r--r--signs_lib/_font/hdf_25.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/_font/hdf_26.pngbin0 -> 120 bytes
-rw-r--r--signs_lib/_font/hdf_27.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/_font/hdf_28.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/_font/hdf_29.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/_font/hdf_2a.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/_font/hdf_2b.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/_font/hdf_2c.pngbin0 -> 79 bytes
-rw-r--r--signs_lib/_font/hdf_2d.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/_font/hdf_2e.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/_font/hdf_2f.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/_font/hdf_30.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/_font/hdf_31.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/_font/hdf_32.pngbin0 -> 113 bytes
-rw-r--r--signs_lib/_font/hdf_33.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/_font/hdf_34.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/_font/hdf_35.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/_font/hdf_36.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/_font/hdf_37.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/_font/hdf_38.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/_font/hdf_39.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/_font/hdf_3a.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/_font/hdf_3b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/_font/hdf_3c.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/_font/hdf_3d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/_font/hdf_3e.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/_font/hdf_3f.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/_font/hdf_40.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/_font/hdf_41.pngbin0 -> 117 bytes
-rw-r--r--signs_lib/_font/hdf_42.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/_font/hdf_43.pngbin0 -> 113 bytes
-rw-r--r--signs_lib/_font/hdf_44.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/_font/hdf_45.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/_font/hdf_46.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/_font/hdf_47.pngbin0 -> 118 bytes
-rw-r--r--signs_lib/_font/hdf_48.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/_font/hdf_49.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/_font/hdf_4a.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/_font/hdf_4b.pngbin0 -> 114 bytes
-rw-r--r--signs_lib/_font/hdf_4c.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/hdf_4d.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/_font/hdf_4e.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/_font/hdf_4f.pngbin0 -> 116 bytes
-rw-r--r--signs_lib/_font/hdf_50.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/_font/hdf_51.pngbin0 -> 122 bytes
-rw-r--r--signs_lib/_font/hdf_52.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/_font/hdf_53.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/_font/hdf_54.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/_font/hdf_55.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/_font/hdf_56.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/_font/hdf_57.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/_font/hdf_58.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/_font/hdf_59.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/_font/hdf_5a.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/_font/hdf_5b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/_font/hdf_5c.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/_font/hdf_5d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/_font/hdf_5e.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/_font/hdf_5f.pngbin0 -> 76 bytes
-rw-r--r--signs_lib/_font/hdf_60.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/_font/hdf_61.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/_font/hdf_62.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/_font/hdf_63.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/_font/hdf_64.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/_font/hdf_65.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/_font/hdf_66.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/_font/hdf_67.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/_font/hdf_68.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/_font/hdf_69.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/hdf_6a.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/hdf_6b.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/_font/hdf_6c.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/_font/hdf_6d.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/_font/hdf_6e.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/_font/hdf_6f.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/_font/hdf_70.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/_font/hdf_71.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/_font/hdf_72.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/_font/hdf_73.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/_font/hdf_74.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/_font/hdf_75.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/_font/hdf_76.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/_font/hdf_77.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/_font/hdf_78.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/_font/hdf_79.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/_font/hdf_7a.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/_font/hdf_7b.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/_font/hdf_7c.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/_font/hdf_7d.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/_font/hdf_7e.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/_font/slc_0.pngbin0 -> 175 bytes
-rw-r--r--signs_lib/_font/slc_1.pngbin0 -> 81 bytes
-rw-r--r--signs_lib/_font/slc_2.pngbin0 -> 81 bytes
-rw-r--r--signs_lib/_font/slc_3.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/slc_4.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/slc_5.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/slc_6.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/slc_7.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/slc_8.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/slc_9.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/slc_A.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/_font/slc_B.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/slc_C.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/_font/slc_D.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/slc_E.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/_font/slc_F.pngbin0 -> 79 bytes
-rw-r--r--signs_lib/_font/slc_n.pngbin0 -> 81 bytes
-rw-r--r--signs_lib/copyright.txt8
-rw-r--r--signs_lib/depends.txt4
-rw-r--r--signs_lib/extra_fonts/10px/hdf_20.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_21.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_22.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_23.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_24.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_25.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_26.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_27.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_28.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_29.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_2a.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_2b.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_2c.pngbin0 -> 79 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_2d.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_2e.pngbin0 -> 76 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_2f.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_30.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_31.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_32.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_33.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_34.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_35.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_36.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_37.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_38.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_39.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_3a.pngbin0 -> 76 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_3b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_3c.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_3d.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_3e.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_3f.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_40.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_41.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_42.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_43.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_44.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_45.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_46.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_47.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_48.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_49.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_4a.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_4b.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_4c.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_4d.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_4e.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_4f.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_50.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_51.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_52.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_53.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_54.pngbin0 -> 81 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_55.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_56.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_57.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_58.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_59.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_5a.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_5b.pngbin0 -> 75 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_5c.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_5d.pngbin0 -> 75 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_5e.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_5f.pngbin0 -> 75 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_60.pngbin0 -> 76 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_61.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_62.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_63.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_64.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_65.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_66.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_67.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_68.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_69.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_6a.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_6b.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_6c.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_6d.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_6e.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_6f.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_70.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_71.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_72.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_73.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_74.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_75.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_76.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_77.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_78.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_79.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_7a.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_7b.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_7c.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_7d.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/10px/hdf_7e.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_0.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_1.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_2.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_3.pngbin0 -> 307 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_4.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_5.pngbin0 -> 307 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_6.pngbin0 -> 307 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_7.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_8.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_9.pngbin0 -> 307 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_A.pngbin0 -> 307 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_B.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_C.pngbin0 -> 307 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_D.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_E.pngbin0 -> 306 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_F.pngbin0 -> 305 bytes
-rw-r--r--signs_lib/extra_fonts/10px/slc_n.pngbin0 -> 305 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_20.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_21.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_22.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_23.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_24.pngbin0 -> 112 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_25.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_26.pngbin0 -> 120 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_27.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_28.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_29.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_2a.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_2b.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_2c.pngbin0 -> 79 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_2d.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_2e.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_2f.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_30.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_31.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_32.pngbin0 -> 113 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_33.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_34.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_35.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_36.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_37.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_38.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_39.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_3a.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_3b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_3c.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_3d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_3e.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_3f.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_40.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_41.pngbin0 -> 117 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_42.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_43.pngbin0 -> 113 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_44.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_45.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_46.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_47.pngbin0 -> 118 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_48.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_49.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_4a.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_4b.pngbin0 -> 114 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_4c.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_4d.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_4e.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_4f.pngbin0 -> 116 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_50.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_51.pngbin0 -> 122 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_52.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_53.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_54.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_55.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_56.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_57.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_58.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_59.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_5a.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_5b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_5c.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_5d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_5e.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_5f.pngbin0 -> 76 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_60.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_61.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_62.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_63.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_64.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_65.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_66.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_67.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_68.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_69.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_6a.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_6b.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_6c.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_6d.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_6e.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_6f.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_70.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_71.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_72.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_73.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_74.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_75.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_76.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_77.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_78.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_79.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_7a.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_7b.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_7c.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_7d.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/15px/hdf_7e.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_0.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_1.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_2.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_3.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_4.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_5.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_6.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_7.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_8.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_9.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_A.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_B.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_C.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_D.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_E.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_F.pngbin0 -> 317 bytes
-rw-r--r--signs_lib/extra_fonts/15px/slc_n.pngbin0 -> 317 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_20.pngbin0 -> 68 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_21.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_22.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_23.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_24.pngbin0 -> 139 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_25.pngbin0 -> 150 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_26.pngbin0 -> 141 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_27.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_28.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_29.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_2a.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_2b.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_2c.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_2d.pngbin0 -> 81 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_2e.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_2f.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_30.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_31.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_32.pngbin0 -> 132 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_33.pngbin0 -> 129 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_34.pngbin0 -> 118 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_35.pngbin0 -> 121 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_36.pngbin0 -> 132 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_37.pngbin0 -> 114 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_38.pngbin0 -> 118 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_39.pngbin0 -> 131 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_3a.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_3b.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_3c.pngbin0 -> 112 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_3d.pngbin0 -> 81 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_3e.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_3f.pngbin0 -> 122 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_40.pngbin0 -> 171 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_41.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_42.pngbin0 -> 117 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_43.pngbin0 -> 127 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_44.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_45.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_46.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_47.pngbin0 -> 141 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_48.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_49.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_4a.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_4b.pngbin0 -> 135 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_4c.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_4d.pngbin0 -> 136 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_4e.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_4f.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_50.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_51.pngbin0 -> 140 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_52.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_53.pngbin0 -> 141 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_54.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_55.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_56.pngbin0 -> 135 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_57.pngbin0 -> 138 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_58.pngbin0 -> 144 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_59.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_5a.pngbin0 -> 123 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_5b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_5c.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_5d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_5e.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_5f.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_60.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_61.pngbin0 -> 123 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_62.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_63.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_64.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_65.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_66.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_67.pngbin0 -> 124 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_68.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_69.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_6a.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_6b.pngbin0 -> 118 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_6c.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_6d.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_6e.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_6f.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_70.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_71.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_72.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_73.pngbin0 -> 121 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_74.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_75.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_76.pngbin0 -> 106 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_77.pngbin0 -> 131 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_78.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_79.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_7a.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_7b.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_7c.pngbin0 -> 68 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_7d.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/24px/hdf_7e.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_0.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_1.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_2.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_3.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_4.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_5.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_6.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_7.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_8.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_9.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_A.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_B.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_C.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_D.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_E.pngbin0 -> 340 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_F.pngbin0 -> 338 bytes
-rw-r--r--signs_lib/extra_fonts/24px/slc_n.pngbin0 -> 338 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_20.pngbin0 -> 68 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_21.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_22.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_23.pngbin0 -> 133 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_24.pngbin0 -> 160 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_25.pngbin0 -> 181 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_26.pngbin0 -> 162 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_27.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_28.pngbin0 -> 117 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_29.pngbin0 -> 114 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_2a.pngbin0 -> 119 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_2b.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_2c.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_2d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_2e.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_2f.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_30.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_31.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_32.pngbin0 -> 148 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_33.pngbin0 -> 149 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_34.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_35.pngbin0 -> 133 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_36.pngbin0 -> 146 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_37.pngbin0 -> 123 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_38.pngbin0 -> 146 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_39.pngbin0 -> 144 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_3a.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_3b.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_3c.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_3d.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_3e.pngbin0 -> 121 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_3f.pngbin0 -> 143 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_40.pngbin0 -> 201 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_41.pngbin0 -> 141 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_42.pngbin0 -> 121 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_43.pngbin0 -> 146 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_44.pngbin0 -> 133 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_45.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_46.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_47.pngbin0 -> 160 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_48.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_49.pngbin0 -> 79 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_4a.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_4b.pngbin0 -> 146 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_4c.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_4d.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_4e.pngbin0 -> 129 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_4f.pngbin0 -> 148 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_50.pngbin0 -> 122 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_51.pngbin0 -> 169 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_52.pngbin0 -> 119 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_53.pngbin0 -> 163 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_54.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_55.pngbin0 -> 119 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_56.pngbin0 -> 139 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_57.pngbin0 -> 151 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_58.pngbin0 -> 161 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_59.pngbin0 -> 135 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_5a.pngbin0 -> 132 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_5b.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_5c.pngbin0 -> 114 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_5d.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_5e.pngbin0 -> 116 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_5f.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_60.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_61.pngbin0 -> 133 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_62.pngbin0 -> 127 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_63.pngbin0 -> 126 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_64.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_65.pngbin0 -> 132 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_66.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_67.pngbin0 -> 137 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_68.pngbin0 -> 106 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_69.pngbin0 -> 86 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_6a.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_6b.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_6c.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_6d.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_6e.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_6f.pngbin0 -> 124 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_70.pngbin0 -> 126 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_71.pngbin0 -> 131 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_72.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_73.pngbin0 -> 136 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_74.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_75.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_76.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_77.pngbin0 -> 145 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_78.pngbin0 -> 141 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_79.pngbin0 -> 131 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_7a.pngbin0 -> 120 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_7b.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_7c.pngbin0 -> 68 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_7d.pngbin0 -> 106 bytes
-rw-r--r--signs_lib/extra_fonts/31px/hdf_7e.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_0.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_1.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_2.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_3.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_4.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_5.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_6.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_7.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_8.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_9.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_A.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_B.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_C.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_D.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_E.pngbin0 -> 357 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_F.pngbin0 -> 355 bytes
-rw-r--r--signs_lib/extra_fonts/31px/slc_n.pngbin0 -> 355 bytes
-rw-r--r--signs_lib/init.lua1090
-rw-r--r--signs_lib/locale/de.txt9
-rw-r--r--signs_lib/locale/template.txt9
-rw-r--r--signs_lib/textures/bg_signs_lib.jpgbin0 -> 82731 bytes
-rw-r--r--signs_lib/textures/hdf_20.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/textures/hdf_21.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/textures/hdf_22.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/textures/hdf_23.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/textures/hdf_24.pngbin0 -> 112 bytes
-rw-r--r--signs_lib/textures/hdf_25.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/textures/hdf_26.pngbin0 -> 120 bytes
-rw-r--r--signs_lib/textures/hdf_27.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/textures/hdf_28.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/textures/hdf_29.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/textures/hdf_2a.pngbin0 -> 90 bytes
-rw-r--r--signs_lib/textures/hdf_2b.pngbin0 -> 84 bytes
-rw-r--r--signs_lib/textures/hdf_2c.pngbin0 -> 79 bytes
-rw-r--r--signs_lib/textures/hdf_2d.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/textures/hdf_2e.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/textures/hdf_2f.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/textures/hdf_30.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/textures/hdf_31.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/textures/hdf_32.pngbin0 -> 113 bytes
-rw-r--r--signs_lib/textures/hdf_33.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/textures/hdf_34.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/textures/hdf_35.pngbin0 -> 109 bytes
-rw-r--r--signs_lib/textures/hdf_36.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/textures/hdf_37.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/textures/hdf_38.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/textures/hdf_39.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/textures/hdf_3a.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/textures/hdf_3b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/textures/hdf_3c.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/textures/hdf_3d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/textures/hdf_3e.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/textures/hdf_3f.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/textures/hdf_40.pngbin0 -> 128 bytes
-rw-r--r--signs_lib/textures/hdf_41.pngbin0 -> 117 bytes
-rw-r--r--signs_lib/textures/hdf_42.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/textures/hdf_43.pngbin0 -> 113 bytes
-rw-r--r--signs_lib/textures/hdf_44.pngbin0 -> 104 bytes
-rw-r--r--signs_lib/textures/hdf_45.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/textures/hdf_46.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/textures/hdf_47.pngbin0 -> 118 bytes
-rw-r--r--signs_lib/textures/hdf_48.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/textures/hdf_49.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/textures/hdf_4a.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/textures/hdf_4b.pngbin0 -> 114 bytes
-rw-r--r--signs_lib/textures/hdf_4c.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/textures/hdf_4d.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/textures/hdf_4e.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/textures/hdf_4f.pngbin0 -> 116 bytes
-rw-r--r--signs_lib/textures/hdf_50.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/textures/hdf_51.pngbin0 -> 122 bytes
-rw-r--r--signs_lib/textures/hdf_52.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/textures/hdf_53.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/textures/hdf_54.pngbin0 -> 85 bytes
-rw-r--r--signs_lib/textures/hdf_55.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/textures/hdf_56.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/textures/hdf_57.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/textures/hdf_58.pngbin0 -> 115 bytes
-rw-r--r--signs_lib/textures/hdf_59.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/textures/hdf_5a.pngbin0 -> 108 bytes
-rw-r--r--signs_lib/textures/hdf_5b.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/textures/hdf_5c.pngbin0 -> 94 bytes
-rw-r--r--signs_lib/textures/hdf_5d.pngbin0 -> 80 bytes
-rw-r--r--signs_lib/textures/hdf_5e.pngbin0 -> 96 bytes
-rw-r--r--signs_lib/textures/hdf_5f.pngbin0 -> 76 bytes
-rw-r--r--signs_lib/textures/hdf_60.pngbin0 -> 78 bytes
-rw-r--r--signs_lib/textures/hdf_61.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/textures/hdf_62.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/textures/hdf_63.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/textures/hdf_64.pngbin0 -> 105 bytes
-rw-r--r--signs_lib/textures/hdf_65.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/textures/hdf_66.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/textures/hdf_67.pngbin0 -> 101 bytes
-rw-r--r--signs_lib/textures/hdf_68.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/textures/hdf_69.pngbin0 -> 82 bytes
-rw-r--r--signs_lib/textures/hdf_6a.pngbin0 -> 83 bytes
-rw-r--r--signs_lib/textures/hdf_6b.pngbin0 -> 103 bytes
-rw-r--r--signs_lib/textures/hdf_6c.pngbin0 -> 77 bytes
-rw-r--r--signs_lib/textures/hdf_6d.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/textures/hdf_6e.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/textures/hdf_6f.pngbin0 -> 97 bytes
-rw-r--r--signs_lib/textures/hdf_70.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/textures/hdf_71.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/textures/hdf_72.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/textures/hdf_73.pngbin0 -> 100 bytes
-rw-r--r--signs_lib/textures/hdf_74.pngbin0 -> 92 bytes
-rw-r--r--signs_lib/textures/hdf_75.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/textures/hdf_76.pngbin0 -> 98 bytes
-rw-r--r--signs_lib/textures/hdf_77.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/textures/hdf_78.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/textures/hdf_79.pngbin0 -> 102 bytes
-rw-r--r--signs_lib/textures/hdf_7a.pngbin0 -> 95 bytes
-rw-r--r--signs_lib/textures/hdf_7b.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/textures/hdf_7c.pngbin0 -> 67 bytes
-rw-r--r--signs_lib/textures/hdf_7d.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/textures/hdf_7e.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/textures/signs_back.pngbin0 -> 280 bytes
-rw-r--r--signs_lib/textures/signs_blue_front.pngbin0 -> 175 bytes
-rw-r--r--signs_lib/textures/signs_blue_inv.pngbin0 -> 154 bytes
-rw-r--r--signs_lib/textures/signs_bottom.pngbin0 -> 129 bytes
-rw-r--r--signs_lib/textures/signs_brown_front.pngbin0 -> 175 bytes
-rw-r--r--signs_lib/textures/signs_brown_inv.pngbin0 -> 155 bytes
-rw-r--r--signs_lib/textures/signs_front.pngbin0 -> 365 bytes
-rw-r--r--signs_lib/textures/signs_green_front.pngbin0 -> 112 bytes
-rw-r--r--signs_lib/textures/signs_green_inv.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/textures/signs_hanging_back.pngbin0 -> 322 bytes
-rw-r--r--signs_lib/textures/signs_hanging_bottom.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/textures/signs_hanging_front.pngbin0 -> 412 bytes
-rw-r--r--signs_lib/textures/signs_hanging_side.pngbin0 -> 134 bytes
-rw-r--r--signs_lib/textures/signs_hanging_top.pngbin0 -> 125 bytes
-rw-r--r--signs_lib/textures/signs_locked_inv.pngbin0 -> 374 bytes
-rw-r--r--signs_lib/textures/signs_metal_back.pngbin0 -> 93 bytes
-rw-r--r--signs_lib/textures/signs_metal_sides.pngbin0 -> 87 bytes
-rw-r--r--signs_lib/textures/signs_metal_tb.pngbin0 -> 89 bytes
-rw-r--r--signs_lib/textures/signs_orange_front.pngbin0 -> 170 bytes
-rw-r--r--signs_lib/textures/signs_orange_inv.pngbin0 -> 141 bytes
-rw-r--r--signs_lib/textures/signs_post_back.pngbin0 -> 311 bytes
-rw-r--r--signs_lib/textures/signs_post_bottom.pngbin0 -> 131 bytes
-rw-r--r--signs_lib/textures/signs_post_front.pngbin0 -> 401 bytes
-rw-r--r--signs_lib/textures/signs_post_side.pngbin0 -> 204 bytes
-rw-r--r--signs_lib/textures/signs_post_top.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/textures/signs_red_front.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/textures/signs_red_inv.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/textures/signs_side.pngbin0 -> 157 bytes
-rw-r--r--signs_lib/textures/signs_top.pngbin0 -> 130 bytes
-rw-r--r--signs_lib/textures/signs_wall_sign.pngbin0 -> 537 bytes
-rw-r--r--signs_lib/textures/signs_wall_sign_locked.pngbin0 -> 509 bytes
-rw-r--r--signs_lib/textures/signs_white_black_front.pngbin0 -> 110 bytes
-rw-r--r--signs_lib/textures/signs_white_black_inv.pngbin0 -> 88 bytes
-rw-r--r--signs_lib/textures/signs_white_red_front.pngbin0 -> 107 bytes
-rw-r--r--signs_lib/textures/signs_white_red_inv.pngbin0 -> 91 bytes
-rw-r--r--signs_lib/textures/signs_yellow_front.pngbin0 -> 111 bytes
-rw-r--r--signs_lib/textures/signs_yellow_inv.pngbin0 -> 99 bytes
-rw-r--r--signs_lib/textures/slc_0.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_1.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_2.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_3.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_4.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_5.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_6.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_7.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_8.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_9.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_A.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_B.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_C.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_D.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_E.pngbin0 -> 319 bytes
-rw-r--r--signs_lib/textures/slc_F.pngbin0 -> 317 bytes
-rw-r--r--signs_lib/textures/slc_n.pngbin0 -> 317 bytes
-rw-r--r--spawn/init.lua67
-rw-r--r--stained_glass/LICENSE614
-rw-r--r--stained_glass/LICENSE.txt13
-rw-r--r--stained_glass/README.md195
-rw-r--r--stained_glass/changelog.txt119
-rw-r--r--stained_glass/colors.txt148
-rw-r--r--stained_glass/depends.txt3
-rw-r--r--stained_glass/init.lua356
-rw-r--r--stained_glass/settings.txt6
-rw-r--r--stained_glass/textures/stained_glass_aqua.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_aqua_s50.pngbin0 -> 685 bytes
-rw-r--r--stained_glass/textures/stained_glass_blue.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_blue_s50.pngbin0 -> 680 bytes
-rw-r--r--stained_glass/textures/stained_glass_cyan.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_cyan_s50.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_aqua.pngbin0 -> 585 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_aqua_s50.pngbin0 -> 558 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_blue.pngbin0 -> 544 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_blue_s50.pngbin0 -> 515 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_cyan.pngbin0 -> 552 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_cyan_s50.pngbin0 -> 515 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_green.pngbin0 -> 544 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_green_s50.pngbin0 -> 515 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_lime.pngbin0 -> 585 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_lime_s50.pngbin0 -> 558 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_magenta.pngbin0 -> 552 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_magenta_s50.pngbin0 -> 515 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_orange.pngbin0 -> 585 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_orange_s50.pngbin0 -> 558 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_red.pngbin0 -> 544 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_red_s50.pngbin0 -> 515 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_redviolet.pngbin0 -> 585 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_redviolet_s50.pngbin0 -> 558 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_skyblue.pngbin0 -> 585 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_skyblue_s50.pngbin0 -> 558 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_violet.pngbin0 -> 585 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_violet_s50.pngbin0 -> 558 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_yellow.pngbin0 -> 552 bytes
-rw-r--r--stained_glass/textures/stained_glass_dark_yellow_s50.pngbin0 -> 515 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_aqua.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_blue.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_cyan.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_green.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_lime.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_magenta.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_orange.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_red.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_redviolet.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_skyblue.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_violet.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_yellow.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_green.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_green_s50.pngbin0 -> 680 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_aqua.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_blue.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_cyan.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_green.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_lime.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_magenta.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_orange.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_red.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_redviolet.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_skyblue.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_violet.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_light_yellow.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_lime.pngbin0 -> 492 bytes
-rw-r--r--stained_glass/textures/stained_glass_lime_s50.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_magenta.pngbin0 -> 485 bytes
-rw-r--r--stained_glass/textures/stained_glass_magenta_s50.pngbin0 -> 705 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_aqua.pngbin0 -> 656 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_aqua_s50.pngbin0 -> 638 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_blue.pngbin0 -> 636 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_blue_s50.pngbin0 -> 593 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_cyan.pngbin0 -> 642 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_cyan_s50.pngbin0 -> 593 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_green.pngbin0 -> 636 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_green_s50.pngbin0 -> 593 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_lime.pngbin0 -> 656 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_lime_s50.pngbin0 -> 631 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_magenta.pngbin0 -> 642 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_magenta_s50.pngbin0 -> 593 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_orange.pngbin0 -> 656 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_orange_s50.pngbin0 -> 638 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_red.pngbin0 -> 636 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_red_s50.pngbin0 -> 593 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_redviolet.pngbin0 -> 656 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_redviolet_s50.pngbin0 -> 631 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_skyblue.pngbin0 -> 656 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_skyblue_s50.pngbin0 -> 631 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_violet.pngbin0 -> 656 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_violet_s50.pngbin0 -> 638 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_yellow.pngbin0 -> 642 bytes
-rw-r--r--stained_glass/textures/stained_glass_medium_yellow_s50.pngbin0 -> 593 bytes
-rw-r--r--stained_glass/textures/stained_glass_orange.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_orange_s50.pngbin0 -> 685 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_aqua.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_blue.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_cyan.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_green.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_lime.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_magenta.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_orange.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_red.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_redviolet.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_skyblue.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_violet.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastel_yellow.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_red.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_red_s50.pngbin0 -> 680 bytes
-rw-r--r--stained_glass/textures/stained_glass_redviolet.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_redviolet_s50.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_skyblue.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_skyblue_s50.pngbin0 -> 710 bytes
-rw-r--r--stained_glass/textures/stained_glass_violet.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_violet_s50.pngbin0 -> 685 bytes
-rw-r--r--stained_glass/textures/stained_glass_yellow.pngbin0 -> 701 bytes
-rw-r--r--stained_glass/textures/stained_glass_yellow_s50.pngbin0 -> 705 bytes
-rw-r--r--steel/README.txt13
-rw-r--r--steel/modpack.txt0
-rw-r--r--steel/steel/depends.txt5
-rw-r--r--steel/steel/init.lua322
-rw-r--r--steel/steel/recipes.pngbin0 -> 167430 bytes
-rw-r--r--steel/steel/rust.lua15
-rw-r--r--steel/steel/textures/corrugated_steel.pngbin0 -> 398 bytes
-rw-r--r--steel/steel/textures/gratehard.pngbin0 -> 761 bytes
-rw-r--r--steel/steel/textures/gratesoft.pngbin0 -> 696 bytes
-rw-r--r--steel/steel/textures/scrap.pngbin0 -> 509 bytes
-rw-r--r--steel/steel/textures/steel_rusted.pngbin0 -> 785 bytes
-rw-r--r--steel/steel/textures/steelplatehard.pngbin0 -> 3398 bytes
-rw-r--r--steel/steel/textures/steelplatesoft.pngbin0 -> 3114 bytes
-rw-r--r--steel/steel/textures/strut.pngbin0 -> 374 bytes
-rw-r--r--steel/steel/textures/worldgratehard.pngbin0 -> 911 bytes
-rw-r--r--steel/steel/textures/worldgratesoft.pngbin0 -> 745 bytes
-rw-r--r--streets/asphalt/depends.txt3
-rw-r--r--streets/asphalt/init.lua27
-rw-r--r--streets/asphaltstairs/depends.txt3
-rw-r--r--streets/asphaltstairs/init.lua244
-rw-r--r--streets/concretestairs/depends.txt4
-rw-r--r--streets/concretestairs/init.lua12
-rw-r--r--streets/constructionarea/depends.txt3
-rw-r--r--streets/constructionarea/init.lua70
-rw-r--r--streets/delineator/depends.txt2
-rw-r--r--streets/delineator/init.lua27
-rw-r--r--streets/description.txt1
-rw-r--r--streets/emergencyphone/depends.txt3
-rw-r--r--streets/emergencyphone/init.lua25
-rw-r--r--streets/infrastructure/README14
-rw-r--r--streets/infrastructure/advanced_aircraft_warning_light.lua55
-rw-r--r--streets/infrastructure/advanced_automatic_warning_device.lua464
-rw-r--r--streets/infrastructure/advanced_boom_barrier.lua508
-rw-r--r--streets/infrastructure/advanced_crosswalk_lighting.lua85
-rw-r--r--streets/infrastructure/advanced_crosswalk_safety_sign.lua85
-rw-r--r--streets/infrastructure/advanced_crosswalk_warning_light.lua124
-rw-r--r--streets/infrastructure/advanced_curve_chevron.lua85
-rw-r--r--streets/infrastructure/advanced_emergency_phone.lua107
-rw-r--r--streets/infrastructure/advanced_lane_control_lights.lua91
-rw-r--r--streets/infrastructure/advanced_road_signs.lua237
-rw-r--r--streets/infrastructure/advanced_traffic_lights_pedestrians.lua252
-rw-r--r--streets/infrastructure/advanced_warning_light.lua47
-rw-r--r--streets/infrastructure/crafts.lua443
-rw-r--r--streets/infrastructure/depends.txt8
-rw-r--r--streets/infrastructure/init.lua26
-rw-r--r--streets/infrastructure/nodes.lua1473
-rw-r--r--streets/infrastructure/nodes_extension.lua162
-rw-r--r--streets/infrastructure/settings.lua49
-rw-r--r--streets/infrastructure/sounds/infrastructure_automatic_warning_device.oggbin0 -> 90708 bytes
-rw-r--r--streets/infrastructure/sounds/infrastructure_boom_barrier.oggbin0 -> 35717 bytes
-rw-r--r--streets/infrastructure/sounds/infrastructure_ebell.oggbin0 -> 26398 bytes
-rw-r--r--streets/infrastructure/sounds/infrastructure_emergency_phone.oggbin0 -> 18073 bytes
-rw-r--r--streets/infrastructure/sounds/infrastructure_traffic_lights_1.oggbin0 -> 13500 bytes
-rw-r--r--streets/infrastructure/sounds/infrastructure_traffic_lights_2.oggbin0 -> 15454 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_aircraft_warning_light_side_anim.pngbin0 -> 550 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_aircraft_warning_light_top_anim.pngbin0 -> 701 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_anti_dazzling_panel_side.pngbin0 -> 960 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_anti_dazzling_panel_top_bottom.pngbin0 -> 652 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_asphalt.pngbin0 -> 731 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device.pngbin0 -> 8347 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_bottom.pngbin0 -> 450 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle.pngbin0 -> 1268 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_anim.pngbin0 -> 3429 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_off.pngbin0 -> 2259 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_side.pngbin0 -> 1048 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_anim.pngbin0 -> 795 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_off.pngbin0 -> 373 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_side.pngbin0 -> 389 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_anim.pngbin0 -> 822 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_off.pngbin0 -> 413 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_side.pngbin0 -> 362 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_side.pngbin0 -> 603 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_top.pngbin0 -> 2818 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_automatic_warning_device_top_side.pngbin0 -> 878 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_darkfirst.pngbin0 -> 762 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_lightfirst.pngbin0 -> 811 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_bottom_front_back.pngbin0 -> 315 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_left_right_bright.pngbin0 -> 600 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_top.pngbin0 -> 359 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_left.pngbin0 -> 550 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_right.pngbin0 -> 527 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_h_bottom.pngbin0 -> 558 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_h_front_back.pngbin0 -> 504 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_h_left.pngbin0 -> 566 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_h_right.pngbin0 -> 562 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_h_top.pngbin0 -> 549 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_v_bottom.pngbin0 -> 509 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_v_front_back.pngbin0 -> 573 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_v_left.pngbin0 -> 532 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_boom_barrier_v_right.pngbin0 -> 540 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_cable_barrier_terminal_back.pngbin0 -> 1217 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_cable_barrier_terminal_front.pngbin0 -> 1224 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_concrete.pngbin0 -> 732 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_corrugated_guide_rail_back.pngbin0 -> 1142 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_corrugated_guide_rail_front.pngbin0 -> 1135 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_corrugated_guide_rail_side.pngbin0 -> 1108 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_corrugated_sheet.pngbin0 -> 1166 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_lighting_back.pngbin0 -> 1019 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_lighting_bottom.pngbin0 -> 749 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_lighting_front.pngbin0 -> 1025 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_safety_sign.pngbin0 -> 703 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_front_back.pngbin0 -> 498 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_side.pngbin0 -> 348 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top.pngbin0 -> 479 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_front_back.pngbin0 -> 343 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_side.pngbin0 -> 199 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_warning_light_back.pngbin0 -> 460 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_anim.pngbin0 -> 1343 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_bright.pngbin0 -> 1021 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_dark.pngbin0 -> 606 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crowd_control_barricade_back.pngbin0 -> 1050 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_crowd_control_barricade_front.pngbin0 -> 1078 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_curve_chevron_left_bright.pngbin0 -> 960 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_curve_chevron_left_dark.pngbin0 -> 382 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_curve_chevron_right_bright.pngbin0 -> 988 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_curve_chevron_right_dark.pngbin0 -> 387 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_delineator_retroreflector_red.pngbin0 -> 736 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_delineator_retroreflector_yellow.pngbin0 -> 792 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_delineator_wrapper_left.pngbin0 -> 707 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_delineator_wrapper_right.pngbin0 -> 713 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_drainage_channel_grating.pngbin0 -> 1628 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_emergency_phone_bottom.pngbin0 -> 544 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_emergency_phone_front.pngbin0 -> 802 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_emergency_phone_side.pngbin0 -> 768 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_emergency_phone_top.pngbin0 -> 689 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_back.pngbin0 -> 1160 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_front.pngbin0 -> 865 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_fitch_barrel_bottom.pngbin0 -> 713 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_fitch_barrel_side.pngbin0 -> 979 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_fitch_barrel_top.pngbin0 -> 625 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_galvanized_steel.pngbin0 -> 1067 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_grid_paver_bottom.pngbin0 -> 1093 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_grid_paver_grass.pngbin0 -> 443 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_grid_paver_top.pngbin0 -> 1597 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_lane_control_lights_1.pngbin0 -> 1905 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_lane_control_lights_2.pngbin0 -> 4010 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_lane_control_lights_3.pngbin0 -> 4148 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_lane_control_lights_4.pngbin0 -> 4159 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_lane_control_lights_5.pngbin0 -> 4119 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_lane_control_lights_6.pngbin0 -> 4160 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_manhole_cover_side.pngbin0 -> 700 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_manhole_cover_top_bottom.pngbin0 -> 670 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_marker_bottom_side.pngbin0 -> 153 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_marker_side_red.pngbin0 -> 180 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_marker_side_yellow.pngbin0 -> 183 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_marker_top_red_yellow.pngbin0 -> 198 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_marker_top_yellow_yellow.pngbin0 -> 182 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_noise_barrier.pngbin0 -> 1524 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_razor_wire.pngbin0 -> 926 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_riffled_sheet.pngbin0 -> 2145 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_crosswalk_back.pngbin0 -> 604 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_crosswalk_front.pngbin0 -> 1158 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_retroreflective_surface.pngbin0 -> 175 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_right_of_way_back.pngbin0 -> 664 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_right_of_way_front.pngbin0 -> 820 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_stop_back.pngbin0 -> 693 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_stop_front.pngbin0 -> 1208 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_yield_back.pngbin0 -> 575 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_road_sign_yield_front.pngbin0 -> 742 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_cone_bottom.pngbin0 -> 752 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_cone_side.pngbin0 -> 371 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_cone_top.pngbin0 -> 609 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians.pngbin0 -> 1899 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_back.pngbin0 -> 495 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_1.pngbin0 -> 798 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_2.pngbin0 -> 798 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_3.pngbin0 -> 999 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_4.pngbin0 -> 999 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_back.pngbin0 -> 459 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_1.pngbin0 -> 938 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_2.pngbin0 -> 938 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_3.pngbin0 -> 693 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_4.pngbin0 -> 693 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_side.pngbin0 -> 568 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles.pngbin0 -> 3062 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_1.pngbin0 -> 851 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_2.pngbin0 -> 1264 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_3.pngbin0 -> 1518 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_4.pngbin0 -> 1264 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_1.pngbin0 -> 1382 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_2.pngbin0 -> 1612 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_3.pngbin0 -> 817 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_4.pngbin0 -> 1159 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_truss.pngbin0 -> 1328 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_warning_light_back.pngbin0 -> 481 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_warning_light_bottom.pngbin0 -> 269 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_warning_light_front_anim.pngbin0 -> 1219 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_warning_light_left.pngbin0 -> 247 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_warning_light_right.pngbin0 -> 236 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_warning_light_top.pngbin0 -> 250 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_wire_netting.pngbin0 -> 1030 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_back.pngbin0 -> 1134 bytes
-rw-r--r--streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_front.pngbin0 -> 1146 bytes
-rw-r--r--streets/labels/depends.txt4
-rw-r--r--streets/labels/init.lua355
-rw-r--r--streets/labels/textures/infrastructure_double_yellow_line.pngbin0 -> 270 bytes
-rw-r--r--streets/labels/textures/infrastructure_single_yellow_line.pngbin0 -> 231 bytes
-rw-r--r--streets/labels/textures/infrastructure_single_yellow_line_corner.pngbin0 -> 250 bytes
-rw-r--r--streets/labels/textures/infrastructure_solid_double_yellow_line_corner.pngbin0 -> 239 bytes
-rw-r--r--streets/labels/textures/infrastructure_solid_yellow_line_one_side.pngbin0 -> 272 bytes
-rw-r--r--streets/labels/textures/streets_arrow_alldirs.pngbin0 -> 7932 bytes
-rw-r--r--streets/labels/textures/streets_arrow_left.pngbin0 -> 7662 bytes
-rw-r--r--streets/labels/textures/streets_arrow_right.pngbin0 -> 7605 bytes
-rw-r--r--streets/labels/textures/streets_arrow_straight.pngbin0 -> 7564 bytes
-rw-r--r--streets/labels/textures/streets_arrow_straight_left.pngbin0 -> 7770 bytes
-rw-r--r--streets/labels/textures/streets_arrow_straight_right.pngbin0 -> 7719 bytes
-rw-r--r--streets/labels/textures/streets_asphalt_dashed_line.pngbin0 -> 7946 bytes
-rw-r--r--streets/labels/textures/streets_asphalt_outer_edge.pngbin0 -> 4526 bytes
-rw-r--r--streets/labels/textures/streets_asphalt_side.pngbin0 -> 3821 bytes
-rw-r--r--streets/labels/textures/streets_asphalt_side_r.pngbin0 -> 3812 bytes
-rw-r--r--streets/labels/textures/streets_asphalt_solid_line.pngbin0 -> 8003 bytes
-rw-r--r--streets/labels/textures/streets_parking.pngbin0 -> 6911 bytes
-rw-r--r--streets/labels/textures/streets_rw_arrow_left.pngbin0 -> 8954 bytes
-rw-r--r--streets/labels/textures/streets_rw_arrow_right.pngbin0 -> 8951 bytes
-rw-r--r--streets/labels/textures/streets_rw_arrow_straight.pngbin0 -> 8796 bytes
-rw-r--r--streets/labels/textures/streets_rw_arrow_straight_left.pngbin0 -> 9403 bytes
-rw-r--r--streets/labels/textures/streets_rw_arrow_straight_right.pngbin0 -> 9306 bytes
-rw-r--r--streets/labels/textures/streets_rw_asphalt_side.pngbin0 -> 4190 bytes
-rw-r--r--streets/labels/textures/streets_rw_cross.pngbin0 -> 2586 bytes
-rw-r--r--streets/labels/textures/streets_rw_dashed_line.pngbin0 -> 7944 bytes
-rw-r--r--streets/labels/textures/streets_rw_dashed_line_crossing.pngbin0 -> 3841 bytes
-rw-r--r--streets/labels/textures/streets_rw_dashed_line_curve.pngbin0 -> 3333 bytes
-rw-r--r--streets/labels/textures/streets_rw_dashed_line_tjunction.pngbin0 -> 4099 bytes
-rw-r--r--streets/labels/textures/streets_rw_outer_edge.pngbin0 -> 5169 bytes
-rw-r--r--streets/labels/textures/streets_rw_parking.pngbin0 -> 8571 bytes
-rw-r--r--streets/labels/textures/streets_rw_solid_line.pngbin0 -> 8058 bytes
-rw-r--r--streets/labels/textures/streets_rw_solid_line_crossing.pngbin0 -> 4005 bytes
-rw-r--r--streets/labels/textures/streets_rw_solid_line_curve.pngbin0 -> 3657 bytes
-rw-r--r--streets/labels/textures/streets_rw_solid_line_tjunction.pngbin0 -> 3702 bytes
-rw-r--r--streets/labels/textures/streets_rw_transparent.pngbin0 -> 3836 bytes
-rw-r--r--streets/license.txt60
-rw-r--r--streets/manholes/depends.txt2
-rw-r--r--streets/manholes/init.lua88
-rw-r--r--streets/modpack.txt1
-rw-r--r--streets/readme.txtbin0 -> 1720 bytes
-rw-r--r--streets/roadsigns/depends.txt2
-rw-r--r--streets/roadsigns/init.lua42
-rw-r--r--streets/roadsigns/signs.lua17
-rw-r--r--streets/roadsigns/workshop.lua158
-rw-r--r--streets/screenshot.pngbin0 -> 818904 bytes
-rw-r--r--streets/steelsupport/depends.txt2
-rw-r--r--streets/steelsupport/init.lua20
-rw-r--r--streets/streetlamps/depends.txt3
-rw-r--r--streets/streetlamps/init.lua128
-rw-r--r--streets/streetsawards/depends.txt2
-rw-r--r--streets/streetsawards/init.lua22
-rw-r--r--streets/streetsconcrete/depends.txt2
-rw-r--r--streets/streetsconcrete/init.lua156
-rw-r--r--streets/streetshotfix/depends.txt1
-rw-r--r--streets/streetshotfix/init.lua9
-rw-r--r--streets/streetsmod/depends.txt3
-rw-r--r--streets/streetsmod/forms.lua4
-rw-r--r--streets/streetsmod/forms/cmd_streets.smartfs1
-rw-r--r--streets/streetsmod/init.lua89
-rw-r--r--streets/streetsmod/libs/smartfs/README.md88
-rw-r--r--streets/streetsmod/libs/smartfs/api.md107
-rw-r--r--streets/streetsmod/libs/smartfs/depends.txt2
-rw-r--r--streets/streetsmod/libs/smartfs/example.lua66
-rw-r--r--streets/streetsmod/libs/smartfs/example.smartfs1
-rw-r--r--streets/streetsmod/libs/smartfs/init.lua2
-rw-r--r--streets/streetsmod/libs/smartfs/smartfs.lua760
-rw-r--r--streets/streetsmod/locale/de.txt59
-rw-r--r--streets/streetsmod/locale/template.txt.txt59
-rw-r--r--streets/streetsmod/nodeboxes/trafficlight.nbe19
-rw-r--r--streets/streetsmod/readme.txt1
-rw-r--r--streets/streetsmod/textures/streets_asphalt.pngbin0 -> 5993 bytes
-rw-r--r--streets/streetsmod/textures/streets_concrete.pngbin0 -> 7482 bytes
-rw-r--r--streets/streetsmod/textures/streets_delineator.pngbin0 -> 5674 bytes
-rw-r--r--streets/streetsmod/textures/streets_delineator_top.pngbin0 -> 184 bytes
-rw-r--r--streets/streetsmod/textures/streets_fence_bottom.pngbin0 -> 644 bytes
-rw-r--r--streets/streetsmod/textures/streets_fence_fromtop.pngbin0 -> 215 bytes
-rw-r--r--streets/streetsmod/textures/streets_fence_inv.pngbin0 -> 845 bytes
-rw-r--r--streets/streetsmod/textures/streets_fence_top.pngbin0 -> 441 bytes
-rw-r--r--streets/streetsmod/textures/streets_lampcontroller_bottom.pngbin0 -> 532 bytes
-rw-r--r--streets/streetsmod/textures/streets_lampcontroller_sides.pngbin0 -> 651 bytes
-rw-r--r--streets/streetsmod/textures/streets_lampcontroller_top.pngbin0 -> 688 bytes
-rw-r--r--streets/streetsmod/textures/streets_lamps_basi_inv.pngbin0 -> 4210 bytes
-rw-r--r--streets/streetsmod/textures/streets_lamps_basic_bottom.pngbin0 -> 3121 bytes
-rw-r--r--streets/streetsmod/textures/streets_lamps_basic_middle.pngbin0 -> 6634 bytes
-rw-r--r--streets/streetsmod/textures/streets_lamps_basic_top.pngbin0 -> 5112 bytes
-rw-r--r--streets/streetsmod/textures/streets_lamps_basic_top_top.pngbin0 -> 6359 bytes
-rw-r--r--streets/streetsmod/textures/streets_manhole.pngbin0 -> 10833 bytes
-rw-r--r--streets/streetsmod/textures/streets_manhole_advanced.pngbin0 -> 9205 bytes
-rw-r--r--streets/streetsmod/textures/streets_pole.pngbin0 -> 496 bytes
-rw-r--r--streets/streetsmod/textures/streets_pole_inv.pngbin0 -> 767 bytes
-rw-r--r--streets/streetsmod/textures/streets_rw_arrow_alldirs.pngbin0 -> 9866 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_back.pngbin0 -> 1808 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_construction.pngbin0 -> 4007 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_grasswalk.pngbin0 -> 21692 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_lava.pngbin0 -> 4453 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_mine.pngbin0 -> 2412 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_shop.pngbin0 -> 2664 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_water.pngbin0 -> 3730 bytes
-rw-r--r--streets/streetsmod/textures/streets_sign_workshop.pngbin0 -> 2320 bytes
-rw-r--r--streets/streetsmod/textures/streets_signworkshop_bottom.pngbin0 -> 1942 bytes
-rw-r--r--streets/streetsmod/textures/streets_signworkshop_front.pngbin0 -> 2138 bytes
-rw-r--r--streets/streetsmod/textures/streets_signworkshop_side.pngbin0 -> 1888 bytes
-rw-r--r--streets/streetsmod/textures/streets_signworkshop_top.pngbin0 -> 2026 bytes
-rw-r--r--streets/streetsmod/textures/streets_sos_bottom.pngbin0 -> 1961 bytes
-rw-r--r--streets/streetsmod/textures/streets_sos_front.pngbin0 -> 6989 bytes
-rw-r--r--streets/streetsmod/textures/streets_sos_side.pngbin0 -> 2529 bytes
-rw-r--r--streets/streetsmod/textures/streets_sos_top.pngbin0 -> 6980 bytes
-rw-r--r--streets/streetsmod/textures/streets_support.pngbin0 -> 6380 bytes
-rw-r--r--streets/streetspoles/depends.txt1
-rw-r--r--streets/streetspoles/init.lua191
-rw-r--r--streets/trafficlight/depends.txt4
-rw-r--r--streets/trafficlight/init.lua367
-rw-r--r--streets/trafficlight/old2new.lua58
-rw-r--r--streets/trafficlight/textures/streets_tl_bg.pngbin0 -> 750 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_flashred.pngbin0 -> 1170 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_green.pngbin0 -> 954 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_left_flashred.pngbin0 -> 1234 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_left_green.pngbin0 -> 976 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_left_off.pngbin0 -> 913 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_left_red.pngbin0 -> 941 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_left_warn.pngbin0 -> 1263 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_left_yellow.pngbin0 -> 988 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_off.pngbin0 -> 843 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_red.pngbin0 -> 942 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_right_flashred.pngbin0 -> 1243 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_right_green.pngbin0 -> 950 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_right_off.pngbin0 -> 892 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_right_red.pngbin0 -> 941 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_right_warn.pngbin0 -> 1240 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_right_yellow.pngbin0 -> 976 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_warn.pngbin0 -> 3683 bytes
-rw-r--r--streets/trafficlight/textures/streets_tl_yellow.pngbin0 -> 1003 bytes
-rw-r--r--streets/trafficlight/textures/streets_trafficlight_inv.pngbin0 -> 2772 bytes
-rw-r--r--streets/trafficlight/textures/streets_trafficlight_template.pngbin0 -> 320 bytes
-rw-r--r--technic/.mailmap4
-rw-r--r--technic/README.md23
-rw-r--r--technic/concrete/depends.txt3
-rw-r--r--technic/concrete/init.lua274
-rw-r--r--technic/concrete/locale/de.txt10
-rw-r--r--technic/concrete/locale/template.txt8
-rw-r--r--technic/concrete/locale/tr.txt7
-rw-r--r--technic/concrete/textures/technic_blast_resistant_concrete_block.pngbin0 -> 311 bytes
-rw-r--r--technic/concrete/textures/technic_concrete_block.pngbin0 -> 500 bytes
-rw-r--r--technic/concrete/textures/technic_rebar.pngbin0 -> 813 bytes
-rw-r--r--technic/concrete/textures/x32/technic_concrete_block.pngbin0 -> 2319 bytes
-rw-r--r--technic/concrete/textures/x32/technic_rebar.pngbin0 -> 813 bytes
-rw-r--r--technic/extranodes/depends.txt5
-rw-r--r--technic/extranodes/init.lua103
-rw-r--r--technic/extranodes/locale/de.txt9
-rw-r--r--technic/extranodes/locale/template.txt7
-rw-r--r--technic/extranodes/locale/tr.txt6
-rw-r--r--technic/manual.md1488
-rw-r--r--technic/modpack.txt1
-rw-r--r--technic/technic/README.md27
-rw-r--r--technic/technic/config.lua18
-rw-r--r--technic/technic/crafts.lua193
-rw-r--r--technic/technic/depends.txt8
-rw-r--r--technic/technic/helpers.lua67
-rw-r--r--technic/technic/init.lua54
-rw-r--r--technic/technic/items.lua221
-rw-r--r--technic/technic/legacy.lua38
-rw-r--r--technic/technic/locale/de.txt204
-rw-r--r--technic/technic/locale/es.txt197
-rw-r--r--technic/technic/locale/it.txt201
-rw-r--r--technic/technic/locale/template.txt211
-rw-r--r--technic/technic/machines/HV/battery_box.lua21
-rw-r--r--technic/technic/machines/HV/cables.lua12
-rw-r--r--technic/technic/machines/HV/forcefield.lua261
-rw-r--r--technic/technic/machines/HV/generator.lua13
-rw-r--r--technic/technic/machines/HV/init.lua18
-rw-r--r--technic/technic/machines/HV/nuclear_reactor.lua723
-rw-r--r--technic/technic/machines/HV/quarry.lua251
-rw-r--r--technic/technic/machines/HV/solar_array.lua14
-rw-r--r--technic/technic/machines/LV/alloy_furnace.lua14
-rw-r--r--technic/technic/machines/LV/battery_box.lua19
-rw-r--r--technic/technic/machines/LV/cables.lua14
-rw-r--r--technic/technic/machines/LV/cnc.lua237
-rw-r--r--technic/technic/machines/LV/cnc_api.lua369
-rw-r--r--technic/technic/machines/LV/cnc_nodes.lua91
-rw-r--r--technic/technic/machines/LV/compressor.lua13
-rw-r--r--technic/technic/machines/LV/electric_furnace.lua16
-rw-r--r--technic/technic/machines/LV/extractor.lua13
-rw-r--r--technic/technic/machines/LV/generator.lua18
-rw-r--r--technic/technic/machines/LV/geothermal.lua111
-rw-r--r--technic/technic/machines/LV/grinder.lua13
-rw-r--r--technic/technic/machines/LV/init.lua29
-rw-r--r--technic/technic/machines/LV/music_player.lua130
-rw-r--r--technic/technic/machines/LV/solar_array.lua18
-rw-r--r--technic/technic/machines/LV/solar_panel.lua67
-rw-r--r--technic/technic/machines/LV/water_mill.lua102
-rw-r--r--technic/technic/machines/MV/alloy_furnace.lua14
-rw-r--r--technic/technic/machines/MV/battery_box.lua22
-rw-r--r--technic/technic/machines/MV/cables.lua14
-rw-r--r--technic/technic/machines/MV/centrifuge.lua16
-rw-r--r--technic/technic/machines/MV/compressor.lua12
-rw-r--r--technic/technic/machines/MV/electric_furnace.lua18
-rw-r--r--technic/technic/machines/MV/extractor.lua12
-rw-r--r--technic/technic/machines/MV/generator.lua13
-rw-r--r--technic/technic/machines/MV/grinder.lua13
-rw-r--r--technic/technic/machines/MV/init.lua32
-rw-r--r--technic/technic/machines/MV/lighting.lua590
-rw-r--r--technic/technic/machines/MV/power_radiator.lua220
-rw-r--r--technic/technic/machines/MV/solar_array.lua14
-rw-r--r--technic/technic/machines/MV/tool_workshop.lua117
-rw-r--r--technic/technic/machines/MV/wind_mill.lua87
-rw-r--r--technic/technic/machines/init.lua14
-rw-r--r--technic/technic/machines/other/anchor.lua109
-rw-r--r--technic/technic/machines/other/coal_alloy_furnace.lua177
-rw-r--r--technic/technic/machines/other/coal_furnace.lua5
-rw-r--r--technic/technic/machines/other/constructor.lua189
-rw-r--r--technic/technic/machines/other/frames.lua928
-rw-r--r--technic/technic/machines/other/init.lua15
-rw-r--r--technic/technic/machines/other/injector.lua118
-rw-r--r--technic/technic/machines/register/alloy_furnace.lua10
-rw-r--r--technic/technic/machines/register/alloy_recipes.lua35
-rw-r--r--technic/technic/machines/register/battery_box.lua291
-rw-r--r--technic/technic/machines/register/cables.lua177
-rw-r--r--technic/technic/machines/register/centrifuge.lua8
-rw-r--r--technic/technic/machines/register/centrifuge_recipes.lua38
-rw-r--r--technic/technic/machines/register/common.lua214
-rw-r--r--technic/technic/machines/register/compressor.lua9
-rw-r--r--technic/technic/machines/register/compressor_recipes.lua34
-rw-r--r--technic/technic/machines/register/electric_furnace.lua9
-rw-r--r--technic/technic/machines/register/extractor.lua9
-rw-r--r--technic/technic/machines/register/extractor_recipes.lua59
-rw-r--r--technic/technic/machines/register/generator.lua173
-rw-r--r--technic/technic/machines/register/grinder.lua9
-rw-r--r--technic/technic/machines/register/grinder_recipes.lua161
-rw-r--r--technic/technic/machines/register/grindings.lua62
-rw-r--r--technic/technic/machines/register/init.lua33
-rw-r--r--technic/technic/machines/register/machine_base.lua197
-rw-r--r--technic/technic/machines/register/recipes.lua107
-rw-r--r--technic/technic/machines/register/solar_array.lua65
-rw-r--r--technic/technic/machines/supply_converter.lua80
-rw-r--r--technic/technic/machines/switching_station.lua404
-rw-r--r--technic/technic/models/technic_cylinder.obj238
-rw-r--r--technic/technic/models/technic_cylinder_horizontal.obj238
-rw-r--r--technic/technic/models/technic_innercorner.obj33
-rw-r--r--technic/technic/models/technic_innercorner_upsdown.obj33
-rw-r--r--technic/technic/models/technic_oblate_spheroid.obj300
-rw-r--r--technic/technic/models/technic_one_curved_edge.obj132
-rw-r--r--technic/technic/models/technic_outercorner.obj23
-rw-r--r--technic/technic/models/technic_outercorner_upsdown.obj23
-rw-r--r--technic/technic/models/technic_pyramid.obj24
-rw-r--r--technic/technic/models/technic_pyramid_spike.obj24
-rw-r--r--technic/technic/models/technic_slope.obj24
-rw-r--r--technic/technic/models/technic_slope_horizontal.obj24
-rw-r--r--technic/technic/models/technic_slope_upsdown.obj24
-rw-r--r--technic/technic/models/technic_sphere.obj1927
-rw-r--r--technic/technic/models/technic_two_curved_edge.obj207
-rw-r--r--technic/technic/register.lua58
-rw-r--r--technic/technic/sounds/chainsaw.oggbin0 -> 38174 bytes
-rw-r--r--technic/technic/sounds/item_drop_pickup.1.oggbin0 -> 9981 bytes
-rw-r--r--technic/technic/sounds/item_drop_pickup.2.oggbin0 -> 10477 bytes
-rw-r--r--technic/technic/sounds/item_drop_pickup.3.oggbin0 -> 9586 bytes
-rw-r--r--technic/technic/sounds/item_drop_pickup.4.oggbin0 -> 9696 bytes
-rw-r--r--technic/technic/sounds/mining_drill.oggbin0 -> 14499 bytes
-rw-r--r--technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.oggbin0 -> 31184 bytes
-rw-r--r--technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.oggbin0 -> 13059 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk1.0.oggbin0 -> 13465 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk1.1.oggbin0 -> 10281 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk2.0.oggbin0 -> 16766 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk2.1.oggbin0 -> 17725 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk2.2.oggbin0 -> 14627 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk3.1.oggbin0 -> 12162 bytes
-rw-r--r--technic/technic/sounds/technic_laser_mk3.2.oggbin0 -> 12040 bytes
-rw-r--r--technic/technic/sounds/technic_prospector_hit.oggbin0 -> 4698 bytes
-rw-r--r--technic/technic/sounds/technic_prospector_miss.oggbin0 -> 4481 bytes
-rw-r--r--technic/technic/sounds/technic_sonic_screwdriver.oggbin0 -> 29827 bytes
-rw-r--r--technic/technic/sounds/vacuumcleaner.oggbin0 -> 62768 bytes
-rw-r--r--technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.pngbin0 -> 26143 bytes
-rw-r--r--technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.pngbin0 -> 896 bytes
-rw-r--r--technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.pngbin0 -> 84243 bytes
-rw-r--r--technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.pngbin0 -> 2545 bytes
-rw-r--r--technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.pngbin0 -> 254444 bytes
-rw-r--r--technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.pngbin0 -> 8114 bytes
-rw-r--r--technic/technic/textures/power_meter.pngbin0 -> 463 bytes
-rw-r--r--technic/technic/textures/technic_acacia_grindings.pngbin0 -> 207 bytes
-rw-r--r--technic/technic/textures/technic_admin_anchor.pngbin0 -> 873 bytes
-rw-r--r--technic/technic/textures/technic_akalin_dust.pngbin0 -> 240 bytes
-rw-r--r--technic/technic/textures/technic_alatro_dust.pngbin0 -> 241 bytes
-rw-r--r--technic/technic/textures/technic_arol_dust.pngbin0 -> 227 bytes
-rw-r--r--technic/technic/textures/technic_battery.pngbin0 -> 247 bytes
-rw-r--r--technic/technic/textures/technic_battery_box_side.pngbin0 -> 576 bytes
-rw-r--r--technic/technic/textures/technic_battery_box_side8.pngbin0 -> 639 bytes
-rw-r--r--technic/technic/textures/technic_battery_box_side_mv.pngbin0 -> 587 bytes
-rw-r--r--technic/technic/textures/technic_battery_meter_fg.pngbin0 -> 260 bytes
-rw-r--r--technic/technic/textures/technic_battery_reload.pngbin0 -> 287 bytes
-rw-r--r--technic/technic/textures/technic_bronze_dust.pngbin0 -> 461 bytes
-rw-r--r--technic/technic/textures/technic_bucket_corium.pngbin0 -> 256 bytes
-rw-r--r--technic/technic/textures/technic_carbon_cloth.pngbin0 -> 169 bytes
-rw-r--r--technic/technic/textures/technic_carbon_plate.pngbin0 -> 162 bytes
-rw-r--r--technic/technic/textures/technic_carbon_steel_dust.pngbin0 -> 416 bytes
-rw-r--r--technic/technic/textures/technic_cast_iron_dust.pngbin0 -> 420 bytes
-rw-r--r--technic/technic/textures/technic_chainsaw.pngbin0 -> 529 bytes
-rw-r--r--technic/technic/textures/technic_chernobylite_block.pngbin0 -> 666 bytes
-rw-r--r--technic/technic/textures/technic_chromium_dust.pngbin0 -> 443 bytes
-rw-r--r--technic/technic/textures/technic_cnc_bottom.pngbin0 -> 2006 bytes
-rw-r--r--technic/technic/textures/technic_cnc_cylinder.pngbin0 -> 6047 bytes
-rw-r--r--technic/technic/textures/technic_cnc_cylinder_horizontal.pngbin0 -> 7130 bytes
-rw-r--r--technic/technic/textures/technic_cnc_element_cross.pngbin0 -> 4592 bytes
-rw-r--r--technic/technic/textures/technic_cnc_element_edge.pngbin0 -> 3898 bytes
-rw-r--r--technic/technic/textures/technic_cnc_element_end.pngbin0 -> 3563 bytes
-rw-r--r--technic/technic/textures/technic_cnc_element_straight.pngbin0 -> 4027 bytes
-rw-r--r--technic/technic/textures/technic_cnc_element_t.pngbin0 -> 4369 bytes
-rw-r--r--technic/technic/textures/technic_cnc_front.pngbin0 -> 2000 bytes
-rw-r--r--technic/technic/textures/technic_cnc_front_active.pngbin0 -> 2216 bytes
-rw-r--r--technic/technic/textures/technic_cnc_full.pngbin0 -> 997 bytes
-rw-r--r--technic/technic/textures/technic_cnc_half.pngbin0 -> 1564 bytes
-rw-r--r--technic/technic/textures/technic_cnc_milling_background.pngbin0 -> 78748 bytes
-rw-r--r--technic/technic/textures/technic_cnc_oblate_spheroid.pngbin0 -> 8915 bytes
-rw-r--r--technic/technic/textures/technic_cnc_onecurvededge.pngbin0 -> 8170 bytes
-rw-r--r--technic/technic/textures/technic_cnc_pyramid.pngbin0 -> 4790 bytes
-rw-r--r--technic/technic/textures/technic_cnc_side.pngbin0 -> 1922 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope.pngbin0 -> 6081 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope_edge.pngbin0 -> 5900 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope_edge_upsdwn.pngbin0 -> 4831 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope_inner_edge.pngbin0 -> 7412 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.pngbin0 -> 7404 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope_lying.pngbin0 -> 6815 bytes
-rw-r--r--technic/technic/textures/technic_cnc_slope_upsdwn.pngbin0 -> 5814 bytes
-rw-r--r--technic/technic/textures/technic_cnc_sphere.pngbin0 -> 5777 bytes
-rw-r--r--technic/technic/textures/technic_cnc_spike.pngbin0 -> 6392 bytes
-rw-r--r--technic/technic/textures/technic_cnc_stick.pngbin0 -> 2305 bytes
-rw-r--r--technic/technic/textures/technic_cnc_top.pngbin0 -> 2137 bytes
-rw-r--r--technic/technic/textures/technic_cnc_top_active.pngbin0 -> 2214 bytes
-rw-r--r--technic/technic/textures/technic_cnc_twocurvededge.pngbin0 -> 7119 bytes
-rw-r--r--technic/technic/textures/technic_coal_alloy_furnace_bottom.pngbin0 -> 677 bytes
-rw-r--r--technic/technic/textures/technic_coal_alloy_furnace_front.pngbin0 -> 681 bytes
-rw-r--r--technic/technic/textures/technic_coal_alloy_furnace_front_active.pngbin0 -> 697 bytes
-rw-r--r--technic/technic/textures/technic_coal_alloy_furnace_side.pngbin0 -> 596 bytes
-rw-r--r--technic/technic/textures/technic_coal_alloy_furnace_top.pngbin0 -> 596 bytes
-rw-r--r--technic/technic/textures/technic_coal_dust.pngbin0 -> 433 bytes
-rw-r--r--technic/technic/textures/technic_common_tree_grindings.pngbin0 -> 226 bytes
-rw-r--r--technic/technic/textures/technic_composite_plate.pngbin0 -> 165 bytes
-rw-r--r--technic/technic/textures/technic_constructor_back.pngbin0 -> 638 bytes
-rw-r--r--technic/technic/textures/technic_constructor_front_off.pngbin0 -> 635 bytes
-rw-r--r--technic/technic/textures/technic_constructor_front_on.pngbin0 -> 690 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_bottom_off.pngbin0 -> 638 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_bottom_on.pngbin0 -> 664 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_side1_off.pngbin0 -> 671 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_side1_on.pngbin0 -> 687 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_side2_off.pngbin0 -> 654 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_side2_on.pngbin0 -> 671 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_top_off.pngbin0 -> 626 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk1_top_on.pngbin0 -> 644 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_bottom_off.pngbin0 -> 665 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_bottom_on.pngbin0 -> 694 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_side1_off.pngbin0 -> 701 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_side1_on.pngbin0 -> 719 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_side2_off.pngbin0 -> 683 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_side2_on.pngbin0 -> 708 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_top_off.pngbin0 -> 654 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk2_top_on.pngbin0 -> 685 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_bottom_off.pngbin0 -> 700 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_bottom_on.pngbin0 -> 721 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_side1_off.pngbin0 -> 727 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_side1_on.pngbin0 -> 762 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_side2_off.pngbin0 -> 715 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_side2_on.pngbin0 -> 753 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_top_off.pngbin0 -> 687 bytes
-rw-r--r--technic/technic/textures/technic_constructor_mk3_top_on.pngbin0 -> 725 bytes
-rw-r--r--technic/technic/textures/technic_control_logic_unit.pngbin0 -> 652 bytes
-rw-r--r--technic/technic/textures/technic_copper_coil.pngbin0 -> 2447 bytes
-rw-r--r--technic/technic/textures/technic_copper_dust.pngbin0 -> 466 bytes
-rw-r--r--technic/technic/textures/technic_copper_plate.pngbin0 -> 174 bytes
-rw-r--r--technic/technic/textures/technic_corium_flowing_animated.pngbin0 -> 3278 bytes
-rw-r--r--technic/technic/textures/technic_corium_source_animated.pngbin0 -> 2954 bytes
-rw-r--r--technic/technic/textures/technic_deployer_back.pngbin0 -> 757 bytes
-rw-r--r--technic/technic/textures/technic_deployer_bottom.pngbin0 -> 835 bytes
-rw-r--r--technic/technic/textures/technic_deployer_front_off.pngbin0 -> 800 bytes
-rw-r--r--technic/technic/textures/technic_deployer_front_on.pngbin0 -> 719 bytes
-rw-r--r--technic/technic/textures/technic_deployer_side.pngbin0 -> 908 bytes
-rw-r--r--technic/technic/textures/technic_deployer_side1.pngbin0 -> 908 bytes
-rw-r--r--technic/technic/textures/technic_deployer_side2.pngbin0 -> 910 bytes
-rw-r--r--technic/technic/textures/technic_deployer_top.pngbin0 -> 842 bytes
-rw-r--r--technic/technic/textures/technic_diamond_block_blue.pngbin0 -> 651 bytes
-rw-r--r--technic/technic/textures/technic_diamond_block_green.pngbin0 -> 636 bytes
-rw-r--r--technic/technic/textures/technic_diamond_block_red.pngbin0 -> 651 bytes
-rw-r--r--technic/technic/textures/technic_diamond_drill_head.pngbin0 -> 978 bytes
-rw-r--r--technic/technic/textures/technic_doped_silicon_wafer.pngbin0 -> 331 bytes
-rw-r--r--technic/technic/textures/technic_fine_copper_wire.pngbin0 -> 501 bytes
-rw-r--r--technic/technic/textures/technic_fine_gold_wire.pngbin0 -> 474 bytes
-rw-r--r--technic/technic/textures/technic_fine_silver_wire.pngbin0 -> 546 bytes
-rw-r--r--technic/technic/textures/technic_flashlight.pngbin0 -> 679 bytes
-rw-r--r--technic/technic/textures/technic_forcefield_animated.pngbin0 -> 3274 bytes
-rw-r--r--technic/technic/textures/technic_forcefield_emitter_off.pngbin0 -> 204 bytes
-rw-r--r--technic/technic/textures/technic_forcefield_emitter_on.pngbin0 -> 204 bytes
-rw-r--r--technic/technic/textures/technic_frame.pngbin0 -> 32199 bytes
-rw-r--r--technic/technic/textures/technic_geothermal_side.pngbin0 -> 809 bytes
-rw-r--r--technic/technic/textures/technic_geothermal_top.pngbin0 -> 828 bytes
-rw-r--r--technic/technic/textures/technic_geothermal_top_active.pngbin0 -> 819 bytes
-rw-r--r--technic/technic/textures/technic_gold_dust.pngbin0 -> 468 bytes
-rw-r--r--technic/technic/textures/technic_graphite.pngbin0 -> 140 bytes
-rw-r--r--technic/technic/textures/technic_grinder_front.pngbin0 -> 777 bytes
-rw-r--r--technic/technic/textures/technic_grinder_side.pngbin0 -> 692 bytes
-rw-r--r--technic/technic/textures/technic_grinder_top.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.pngbin0 -> 255 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.pngbin0 -> 258 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.pngbin0 -> 261 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.pngbin0 -> 350 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.pngbin0 -> 353 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.pngbin0 -> 352 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.pngbin0 -> 264 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.pngbin0 -> 265 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.pngbin0 -> 475 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.pngbin0 -> 478 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.pngbin0 -> 225 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.pngbin0 -> 232 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.pngbin0 -> 335 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.pngbin0 -> 355 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_white_tb.pngbin0 -> 330 bytes
-rw-r--r--technic/technic/textures/technic_homedecor_glowlight_yellow_tb.pngbin0 -> 633 bytes
-rw-r--r--technic/technic/textures/technic_hv_battery_box_bottom.pngbin0 -> 653 bytes
-rw-r--r--technic/technic/textures/technic_hv_battery_box_side.pngbin0 -> 777 bytes
-rw-r--r--technic/technic/textures/technic_hv_battery_box_top.pngbin0 -> 792 bytes
-rw-r--r--technic/technic/textures/technic_hv_cable.pngbin0 -> 1705 bytes
-rw-r--r--technic/technic/textures/technic_hv_cable_wield.pngbin0 -> 601 bytes
-rw-r--r--technic/technic/textures/technic_hv_down_converter_bottom.pngbin0 -> 653 bytes
-rw-r--r--technic/technic/textures/technic_hv_down_converter_side.pngbin0 -> 609 bytes
-rw-r--r--technic/technic/textures/technic_hv_down_converter_top.pngbin0 -> 653 bytes
-rw-r--r--technic/technic/textures/technic_hv_generator_front.pngbin0 -> 450 bytes
-rw-r--r--technic/technic/textures/technic_hv_generator_front_active.pngbin0 -> 469 bytes
-rw-r--r--technic/technic/textures/technic_hv_generator_side.pngbin0 -> 357 bytes
-rw-r--r--technic/technic/textures/technic_hv_generator_top.pngbin0 -> 384 bytes
-rw-r--r--technic/technic/textures/technic_hv_grinder_bottom.pngbin0 -> 862 bytes
-rw-r--r--technic/technic/textures/technic_hv_grinder_front.pngbin0 -> 716 bytes
-rw-r--r--technic/technic/textures/technic_hv_grinder_front_active.pngbin0 -> 733 bytes
-rw-r--r--technic/technic/textures/technic_hv_grinder_side.pngbin0 -> 753 bytes
-rw-r--r--technic/technic/textures/technic_hv_grinder_side_tube.pngbin0 -> 791 bytes
-rw-r--r--technic/technic/textures/technic_hv_grinder_top.pngbin0 -> 616 bytes
-rw-r--r--technic/technic/textures/technic_hv_nuclear_reactor_core.pngbin0 -> 896 bytes
-rw-r--r--technic/technic/textures/technic_hv_solar_array_bottom.pngbin0 -> 574 bytes
-rw-r--r--technic/technic/textures/technic_hv_solar_array_side.pngbin0 -> 709 bytes
-rw-r--r--technic/technic/textures/technic_hv_solar_array_top.pngbin0 -> 777 bytes
-rw-r--r--technic/technic/textures/technic_hv_transformer.pngbin0 -> 1801 bytes
-rw-r--r--technic/technic/textures/technic_injector_bottom.pngbin0 -> 2667 bytes
-rw-r--r--technic/technic/textures/technic_injector_side.pngbin0 -> 2541 bytes
-rw-r--r--technic/technic/textures/technic_injector_top.pngbin0 -> 2633 bytes
-rw-r--r--technic/technic/textures/technic_kalite_dust.pngbin0 -> 191 bytes
-rw-r--r--technic/technic/textures/technic_laser_beam_mk1.pngbin0 -> 279 bytes
-rw-r--r--technic/technic/textures/technic_laser_beam_mk2.pngbin0 -> 638 bytes
-rw-r--r--technic/technic/textures/technic_laser_beam_mk3.pngbin0 -> 547 bytes
-rw-r--r--technic/technic/textures/technic_lava_can.pngbin0 -> 445 bytes
-rw-r--r--technic/technic/textures/technic_light.pngbin0 -> 246 bytes
-rw-r--r--technic/technic/textures/technic_lv_alloy_furnace_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_lv_alloy_furnace_front.pngbin0 -> 508 bytes
-rw-r--r--technic/technic/textures/technic_lv_alloy_furnace_front_active.pngbin0 -> 543 bytes
-rw-r--r--technic/technic/textures/technic_lv_alloy_furnace_side.pngbin0 -> 313 bytes
-rw-r--r--technic/technic/textures/technic_lv_alloy_furnace_top.pngbin0 -> 397 bytes
-rw-r--r--technic/technic/textures/technic_lv_battery_box_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_lv_battery_box_side.pngbin0 -> 594 bytes
-rw-r--r--technic/technic/textures/technic_lv_battery_box_top.pngbin0 -> 337 bytes
-rw-r--r--technic/technic/textures/technic_lv_cable.pngbin0 -> 504 bytes
-rw-r--r--technic/technic/textures/technic_lv_cable_wield.pngbin0 -> 655 bytes
-rw-r--r--technic/technic/textures/technic_lv_compressor_back.pngbin0 -> 2893 bytes
-rw-r--r--technic/technic/textures/technic_lv_compressor_bottom.pngbin0 -> 2865 bytes
-rw-r--r--technic/technic/textures/technic_lv_compressor_front.pngbin0 -> 2714 bytes
-rw-r--r--technic/technic/textures/technic_lv_compressor_front_active.pngbin0 -> 2743 bytes
-rw-r--r--technic/technic/textures/technic_lv_compressor_side.pngbin0 -> 2893 bytes
-rw-r--r--technic/technic/textures/technic_lv_compressor_top.pngbin0 -> 2940 bytes
-rw-r--r--technic/technic/textures/technic_lv_electric_furnace_bottom.pngbin0 -> 423 bytes
-rw-r--r--technic/technic/textures/technic_lv_electric_furnace_front.pngbin0 -> 443 bytes
-rw-r--r--technic/technic/textures/technic_lv_electric_furnace_front_active.pngbin0 -> 448 bytes
-rw-r--r--technic/technic/textures/technic_lv_electric_furnace_side.pngbin0 -> 399 bytes
-rw-r--r--technic/technic/textures/technic_lv_electric_furnace_top.pngbin0 -> 393 bytes
-rw-r--r--technic/technic/textures/technic_lv_extractor_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_lv_extractor_front.pngbin0 -> 745 bytes
-rw-r--r--technic/technic/textures/technic_lv_extractor_front_active.pngbin0 -> 770 bytes
-rw-r--r--technic/technic/textures/technic_lv_extractor_side.pngbin0 -> 683 bytes
-rw-r--r--technic/technic/textures/technic_lv_extractor_top.pngbin0 -> 544 bytes
-rw-r--r--technic/technic/textures/technic_lv_generator_front.pngbin0 -> 430 bytes
-rw-r--r--technic/technic/textures/technic_lv_generator_front_active.pngbin0 -> 454 bytes
-rw-r--r--technic/technic/textures/technic_lv_generator_side.pngbin0 -> 341 bytes
-rw-r--r--technic/technic/textures/technic_lv_generator_top.pngbin0 -> 388 bytes
-rw-r--r--technic/technic/textures/technic_lv_grinder_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_lv_grinder_front.pngbin0 -> 745 bytes
-rw-r--r--technic/technic/textures/technic_lv_grinder_front_active.pngbin0 -> 770 bytes
-rw-r--r--technic/technic/textures/technic_lv_grinder_side.pngbin0 -> 683 bytes
-rw-r--r--technic/technic/textures/technic_lv_grinder_top.pngbin0 -> 544 bytes
-rw-r--r--technic/technic/textures/technic_lv_solar_array_bottom.pngbin0 -> 579 bytes
-rw-r--r--technic/technic/textures/technic_lv_solar_array_side.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technic_lv_solar_array_top.pngbin0 -> 743 bytes
-rw-r--r--technic/technic/textures/technic_lv_transformer.pngbin0 -> 1821 bytes
-rw-r--r--technic/technic/textures/technic_machine_bottom.pngbin0 -> 572 bytes
-rw-r--r--technic/technic/textures/technic_machine_casing.pngbin0 -> 673 bytes
-rw-r--r--technic/technic/textures/technic_mining_drill.pngbin0 -> 2099 bytes
-rw-r--r--technic/technic/textures/technic_mining_drill_mk2.pngbin0 -> 1901 bytes
-rw-r--r--technic/technic/textures/technic_mining_drill_mk3.pngbin0 -> 1900 bytes
-rw-r--r--technic/technic/textures/technic_mining_laser_mk1.pngbin0 -> 216 bytes
-rw-r--r--technic/technic/textures/technic_mining_laser_mk2.pngbin0 -> 244 bytes
-rw-r--r--technic/technic/textures/technic_mining_laser_mk3.pngbin0 -> 312 bytes
-rw-r--r--technic/technic/textures/technic_mithril_dust.pngbin0 -> 467 bytes
-rw-r--r--technic/technic/textures/technic_mixed_metal_ingot.pngbin0 -> 426 bytes
-rw-r--r--technic/technic/textures/technic_motor.pngbin0 -> 2517 bytes
-rw-r--r--technic/technic/textures/technic_music_player_bottom.pngbin0 -> 744 bytes
-rw-r--r--technic/technic/textures/technic_music_player_side.pngbin0 -> 788 bytes
-rw-r--r--technic/technic/textures/technic_music_player_top.pngbin0 -> 916 bytes
-rw-r--r--technic/technic/textures/technic_mv_alloy_furnace_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_mv_alloy_furnace_front.pngbin0 -> 2670 bytes
-rw-r--r--technic/technic/textures/technic_mv_alloy_furnace_front_active.pngbin0 -> 2673 bytes
-rw-r--r--technic/technic/textures/technic_mv_alloy_furnace_side.pngbin0 -> 2503 bytes
-rw-r--r--technic/technic/textures/technic_mv_alloy_furnace_side_tube.pngbin0 -> 403 bytes
-rw-r--r--technic/technic/textures/technic_mv_alloy_furnace_top.pngbin0 -> 1929 bytes
-rw-r--r--technic/technic/textures/technic_mv_battery_box_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_mv_battery_box_side.pngbin0 -> 587 bytes
-rw-r--r--technic/technic/textures/technic_mv_battery_box_top.pngbin0 -> 337 bytes
-rw-r--r--technic/technic/textures/technic_mv_cable.pngbin0 -> 416 bytes
-rw-r--r--technic/technic/textures/technic_mv_cable_wield.pngbin0 -> 531 bytes
-rw-r--r--technic/technic/textures/technic_mv_centrifuge_bottom.pngbin0 -> 674 bytes
-rw-r--r--technic/technic/textures/technic_mv_centrifuge_front.pngbin0 -> 686 bytes
-rw-r--r--technic/technic/textures/technic_mv_centrifuge_front_active.pngbin0 -> 686 bytes
-rw-r--r--technic/technic/textures/technic_mv_centrifuge_side.pngbin0 -> 636 bytes
-rw-r--r--technic/technic/textures/technic_mv_centrifuge_top.pngbin0 -> 814 bytes
-rw-r--r--technic/technic/textures/technic_mv_compressor_back.pngbin0 -> 2893 bytes
-rw-r--r--technic/technic/textures/technic_mv_compressor_bottom.pngbin0 -> 2865 bytes
-rw-r--r--technic/technic/textures/technic_mv_compressor_front.pngbin0 -> 2714 bytes
-rw-r--r--technic/technic/textures/technic_mv_compressor_front_active.pngbin0 -> 2743 bytes
-rw-r--r--technic/technic/textures/technic_mv_compressor_side.pngbin0 -> 2893 bytes
-rw-r--r--technic/technic/textures/technic_mv_compressor_top.pngbin0 -> 2940 bytes
-rw-r--r--technic/technic/textures/technic_mv_down_converter_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_mv_down_converter_side.pngbin0 -> 670 bytes
-rw-r--r--technic/technic/textures/technic_mv_down_converter_top.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_mv_electric_furnace_bottom.pngbin0 -> 427 bytes
-rw-r--r--technic/technic/textures/technic_mv_electric_furnace_front.pngbin0 -> 535 bytes
-rw-r--r--technic/technic/textures/technic_mv_electric_furnace_front_active.pngbin0 -> 541 bytes
-rw-r--r--technic/technic/textures/technic_mv_electric_furnace_side.pngbin0 -> 421 bytes
-rw-r--r--technic/technic/textures/technic_mv_electric_furnace_side_tube.pngbin0 -> 2449 bytes
-rw-r--r--technic/technic/textures/technic_mv_electric_furnace_top.pngbin0 -> 1772 bytes
-rw-r--r--technic/technic/textures/technic_mv_extractor_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_mv_extractor_front.pngbin0 -> 749 bytes
-rw-r--r--technic/technic/textures/technic_mv_extractor_front_active.pngbin0 -> 778 bytes
-rw-r--r--technic/technic/textures/technic_mv_extractor_side.pngbin0 -> 726 bytes
-rw-r--r--technic/technic/textures/technic_mv_extractor_top.pngbin0 -> 542 bytes
-rw-r--r--technic/technic/textures/technic_mv_generator_front.pngbin0 -> 425 bytes
-rw-r--r--technic/technic/textures/technic_mv_generator_front_active.pngbin0 -> 440 bytes
-rw-r--r--technic/technic/textures/technic_mv_generator_side.pngbin0 -> 317 bytes
-rw-r--r--technic/technic/textures/technic_mv_generator_top.pngbin0 -> 322 bytes
-rw-r--r--technic/technic/textures/technic_mv_grinder_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_mv_grinder_front.pngbin0 -> 749 bytes
-rw-r--r--technic/technic/textures/technic_mv_grinder_front_active.pngbin0 -> 778 bytes
-rw-r--r--technic/technic/textures/technic_mv_grinder_side.pngbin0 -> 726 bytes
-rw-r--r--technic/technic/textures/technic_mv_grinder_side_tube.pngbin0 -> 739 bytes
-rw-r--r--technic/technic/textures/technic_mv_grinder_top.pngbin0 -> 542 bytes
-rw-r--r--technic/technic/textures/technic_mv_solar_array_bottom.pngbin0 -> 574 bytes
-rw-r--r--technic/technic/textures/technic_mv_solar_array_side.pngbin0 -> 628 bytes
-rw-r--r--technic/technic/textures/technic_mv_solar_array_top.pngbin0 -> 728 bytes
-rw-r--r--technic/technic/textures/technic_mv_transformer.pngbin0 -> 1748 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_back.pngbin0 -> 632 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_bottom.pngbin0 -> 38757 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_bottom_off.pngbin0 -> 556 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_bottom_on.pngbin0 -> 549 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_front_off.pngbin0 -> 653 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_front_on.pngbin0 -> 659 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side.pngbin0 -> 38136 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side1.pngbin0 -> 38291 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side1_off.pngbin0 -> 616 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side1_on.pngbin0 -> 610 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side2.pngbin0 -> 38195 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side2_off.pngbin0 -> 606 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_side2_on.pngbin0 -> 598 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_top.pngbin0 -> 38904 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_top_off.pngbin0 -> 556 bytes
-rw-r--r--technic/technic/textures/technic_nodebreaker_top_on.pngbin0 -> 558 bytes
-rw-r--r--technic/technic/textures/technic_power_meter.pngbin0 -> 209 bytes
-rw-r--r--technic/technic/textures/technic_power_meter0.pngbin0 -> 103 bytes
-rw-r--r--technic/technic/textures/technic_power_meter1.pngbin0 -> 193 bytes
-rw-r--r--technic/technic/textures/technic_power_meter2.pngbin0 -> 232 bytes
-rw-r--r--technic/technic/textures/technic_power_meter3.pngbin0 -> 255 bytes
-rw-r--r--technic/technic/textures/technic_power_meter4.pngbin0 -> 268 bytes
-rw-r--r--technic/technic/textures/technic_power_meter5.pngbin0 -> 275 bytes
-rw-r--r--technic/technic/textures/technic_power_meter6.pngbin0 -> 281 bytes
-rw-r--r--technic/technic/textures/technic_power_meter7.pngbin0 -> 298 bytes
-rw-r--r--technic/technic/textures/technic_power_meter8.pngbin0 -> 314 bytes
-rw-r--r--technic/technic/textures/technic_power_meter_bg.pngbin0 -> 278 bytes
-rw-r--r--technic/technic/textures/technic_power_meter_fg.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technic_prospector.pngbin0 -> 367 bytes
-rw-r--r--technic/technic/textures/technic_raw_latex.pngbin0 -> 484 bytes
-rw-r--r--technic/technic/textures/technic_rubber.pngbin0 -> 587 bytes
-rw-r--r--technic/technic/textures/technic_rubber_leaves.pngbin0 -> 444 bytes
-rw-r--r--technic/technic/textures/technic_rubber_sapling.pngbin0 -> 333 bytes
-rw-r--r--technic/technic/textures/technic_rubber_tree_empty.pngbin0 -> 835 bytes
-rw-r--r--technic/technic/textures/technic_rubber_tree_full.pngbin0 -> 808 bytes
-rw-r--r--technic/technic/textures/technic_rubber_tree_grindings.pngbin0 -> 252 bytes
-rw-r--r--technic/technic/textures/technic_sawdust.pngbin0 -> 229 bytes
-rw-r--r--technic/technic/textures/technic_screwdriver.pngbin0 -> 1001 bytes
-rw-r--r--technic/technic/textures/technic_silicon_wafer.pngbin0 -> 913 bytes
-rw-r--r--technic/technic/textures/technic_silver_dust.pngbin0 -> 420 bytes
-rw-r--r--technic/technic/textures/technic_solar_panel_bottom.pngbin0 -> 579 bytes
-rw-r--r--technic/technic/textures/technic_solar_panel_side.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technic_solar_panel_top.pngbin0 -> 569 bytes
-rw-r--r--technic/technic/textures/technic_sonic_screwdriver.pngbin0 -> 240 bytes
-rw-r--r--technic/technic/textures/technic_stainless_steel_dust.pngbin0 -> 445 bytes
-rw-r--r--technic/technic/textures/technic_stainless_steel_ingot.pngbin0 -> 310 bytes
-rw-r--r--technic/technic/textures/technic_supply_converter_bottom.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_supply_converter_side.pngbin0 -> 670 bytes
-rw-r--r--technic/technic/textures/technic_supply_converter_top.pngbin0 -> 738 bytes
-rw-r--r--technic/technic/textures/technic_talinite_dust.pngbin0 -> 226 bytes
-rw-r--r--technic/technic/textures/technic_tin_dust.pngbin0 -> 241 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode1.pngbin0 -> 361 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode2.pngbin0 -> 571 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode3.pngbin0 -> 622 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode4.pngbin0 -> 455 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode5.pngbin0 -> 535 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode6.pngbin0 -> 633 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode7.pngbin0 -> 481 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode8.pngbin0 -> 692 bytes
-rw-r--r--technic/technic/textures/technic_tool_mode9.pngbin0 -> 623 bytes
-rw-r--r--technic/technic/textures/technic_tree_tap.pngbin0 -> 1045 bytes
-rw-r--r--technic/technic/textures/technic_uranium_dust.pngbin0 -> 229 bytes
-rw-r--r--technic/technic/textures/technic_uranium_fuel.pngbin0 -> 158 bytes
-rw-r--r--technic/technic/textures/technic_vacuum.pngbin0 -> 705 bytes
-rw-r--r--technic/technic/textures/technic_water_can.pngbin0 -> 443 bytes
-rw-r--r--technic/technic/textures/technic_water_mill_side.pngbin0 -> 907 bytes
-rw-r--r--technic/technic/textures/technic_water_mill_top.pngbin0 -> 828 bytes
-rw-r--r--technic/technic/textures/technic_water_mill_top_active.pngbin0 -> 819 bytes
-rw-r--r--technic/technic/textures/technic_workshop_bottom.pngbin0 -> 744 bytes
-rw-r--r--technic/technic/textures/technic_workshop_side.pngbin0 -> 589 bytes
-rw-r--r--technic/technic/textures/technic_workshop_top.pngbin0 -> 555 bytes
-rw-r--r--technic/technic/textures/technic_wrought_iron_dust.pngbin0 -> 448 bytes
-rw-r--r--technic/technic/textures/technic_zinc_dust.pngbin0 -> 246 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_akalin_dust.pngbin0 -> 1156 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_alatro_dust.pngbin0 -> 1134 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_alloy_furnace_front.pngbin0 -> 2756 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_alloy_furnace_front_active.pngbin0 -> 2757 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_alloy_furnace_side.pngbin0 -> 2667 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_alloy_furnace_top.pngbin0 -> 2431 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_arol_dust.pngbin0 -> 1101 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_battery.pngbin0 -> 247 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_battery_box_bottom.pngbin0 -> 2046 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_battery_box_side0.pngbin0 -> 2313 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_battery_box_top.pngbin0 -> 2390 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_battery_reload.pngbin0 -> 8201 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_brass_dust.pngbin0 -> 1297 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_bronze_dust.pngbin0 -> 1304 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_carbon_steel_dust.pngbin0 -> 1228 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_cast_iron_dust.pngbin0 -> 1225 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_chainsaw.pngbin0 -> 17656 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_chromium_dust.pngbin0 -> 1162 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.pngbin0 -> 2957 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.pngbin0 -> 2802 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.pngbin0 -> 2953 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.pngbin0 -> 2667 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.pngbin0 -> 2431 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_coal_dust.pngbin0 -> 1077 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_back.pngbin0 -> 2094 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_front_off.pngbin0 -> 2677 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_front_on.pngbin0 -> 2627 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.pngbin0 -> 2272 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.pngbin0 -> 2308 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.pngbin0 -> 2327 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.pngbin0 -> 2342 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.pngbin0 -> 2326 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.pngbin0 -> 2338 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_top_off.pngbin0 -> 2292 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk1_top_on.pngbin0 -> 2319 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.pngbin0 -> 2281 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.pngbin0 -> 2316 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.pngbin0 -> 2339 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.pngbin0 -> 2355 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.pngbin0 -> 2338 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.pngbin0 -> 2354 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_top_off.pngbin0 -> 2307 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk2_top_on.pngbin0 -> 2329 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.pngbin0 -> 2286 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.pngbin0 -> 2318 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.pngbin0 -> 2378 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.pngbin0 -> 2402 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.pngbin0 -> 2313 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.pngbin0 -> 2338 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_top_off.pngbin0 -> 2313 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_constructor_mk3_top_on.pngbin0 -> 2338 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_control_logic_unit.pngbin0 -> 1494 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_copper_coil.pngbin0 -> 2447 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_copper_dust.pngbin0 -> 1252 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_back.pngbin0 -> 37128 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_bottom.pngbin0 -> 38757 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_front_off.pngbin0 -> 29441 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_front_on.pngbin0 -> 23351 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_side.pngbin0 -> 38136 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_side1.pngbin0 -> 38291 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_side2.pngbin0 -> 38195 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_deployer_top.pngbin0 -> 38904 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_diamond_block_blue.pngbin0 -> 3011 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_diamond_block_green.pngbin0 -> 3033 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_diamond_block_red.pngbin0 -> 2927 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_diamond_drill_head.pngbin0 -> 978 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_doped_silicon_wafer.pngbin0 -> 867 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_electric_furnace_bottom.pngbin0 -> 2876 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_electric_furnace_front.pngbin0 -> 2912 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_electric_furnace_front_active.pngbin0 -> 2912 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_electric_furnace_side.pngbin0 -> 2917 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_electric_furnace_top.pngbin0 -> 2957 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_fine_copper_wire.pngbin0 -> 1814 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_fine_gold_wire.pngbin0 -> 1864 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_fine_silver_wire.pngbin0 -> 2187 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_flashlight.pngbin0 -> 1901 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_generator_front.pngbin0 -> 430 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_generator_front_active.pngbin0 -> 454 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_generator_side.pngbin0 -> 341 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_generator_top.pngbin0 -> 388 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_geothermal_side.pngbin0 -> 809 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_geothermal_top.pngbin0 -> 828 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_geothermal_top_active.pngbin0 -> 819 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_gold_dust.pngbin0 -> 1285 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_grinder_front.pngbin0 -> 777 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_grinder_side.pngbin0 -> 692 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_grinder_top.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_grinder_bottom.pngbin0 -> 2957 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_grinder_front.pngbin0 -> 2295 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_grinder_front_active.pngbin0 -> 2337 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_grinder_side.pngbin0 -> 2497 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_grinder_side_tube.pngbin0 -> 2580 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_grinder_top.pngbin0 -> 1933 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.pngbin0 -> 2545 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_solar_array_bottom.pngbin0 -> 2019 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_solar_array_side.pngbin0 -> 1772 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_solar_array_top.pngbin0 -> 2855 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_hv_transformer.pngbin0 -> 1789 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_injector_bottom.pngbin0 -> 2667 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_injector_side.pngbin0 -> 2541 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_injector_top.pngbin0 -> 2633 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_kalite_dust.pngbin0 -> 809 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_laser_beam.pngbin0 -> 119 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lava_can.pngbin0 -> 1045 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_light.pngbin0 -> 246 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_grinder_bottom.pngbin0 -> 2957 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_grinder_front.pngbin0 -> 2389 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_grinder_front_active.pngbin0 -> 2416 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_grinder_side.pngbin0 -> 2687 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_grinder_top.pngbin0 -> 2439 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_solar_array_bottom.pngbin0 -> 2019 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_solar_array_side.pngbin0 -> 1772 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_solar_array_top.pngbin0 -> 2728 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_lv_transformer.pngbin0 -> 1809 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_machine_bottom.pngbin0 -> 2876 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mining_drill.pngbin0 -> 2099 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mining_laser_mk1.pngbin0 -> 358 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mithril_dust.pngbin0 -> 1289 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_motor.pngbin0 -> 2517 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_music_player_bottom.pngbin0 -> 744 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_music_player_side.pngbin0 -> 788 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_music_player_top.pngbin0 -> 916 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.pngbin0 -> 2957 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.pngbin0 -> 2670 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.pngbin0 -> 2673 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.pngbin0 -> 2503 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.pngbin0 -> 2559 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.pngbin0 -> 1929 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_battery_box_bottom.pngbin0 -> 2019 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_battery_box_side0.pngbin0 -> 2309 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_battery_box_top.pngbin0 -> 2390 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_cable_wield.pngbin0 -> 2996 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.pngbin0 -> 2876 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_electric_furnace_front.pngbin0 -> 2599 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.pngbin0 -> 2601 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_electric_furnace_side.pngbin0 -> 2414 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.pngbin0 -> 2449 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_electric_furnace_top.pngbin0 -> 1772 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_grinder_bottom.pngbin0 -> 2957 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_grinder_front.pngbin0 -> 2328 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_grinder_front_active.pngbin0 -> 2361 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_grinder_side.pngbin0 -> 2515 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_grinder_side_tube.pngbin0 -> 2613 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_grinder_top.pngbin0 -> 1981 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_solar_array_bottom.pngbin0 -> 2019 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_solar_array_side.pngbin0 -> 1772 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_solar_array_top.pngbin0 -> 2784 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_mv_transformer.pngbin0 -> 1748 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_back.pngbin0 -> 2803 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_bottom.pngbin0 -> 2900 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.pngbin0 -> 3066 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.pngbin0 -> 3070 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_front_off.pngbin0 -> 2788 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_front_on.pngbin0 -> 2856 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side.pngbin0 -> 2900 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side1.pngbin0 -> 2894 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side1_off.pngbin0 -> 3071 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side1_on.pngbin0 -> 3073 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side2.pngbin0 -> 2886 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side2_off.pngbin0 -> 3062 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_side2_on.pngbin0 -> 3069 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_top.pngbin0 -> 2908 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_top_off.pngbin0 -> 3053 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_nodebreaker_top_on.pngbin0 -> 3055 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter.pngbin0 -> 209 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter1.pngbin0 -> 271 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter2.pngbin0 -> 349 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter3.pngbin0 -> 395 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter4.pngbin0 -> 434 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter5.pngbin0 -> 452 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter6.pngbin0 -> 509 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter7.pngbin0 -> 576 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter8.pngbin0 -> 655 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter_bg.pngbin0 -> 278 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_power_meter_fg.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_raw_latex.pngbin0 -> 1625 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_rubber.pngbin0 -> 587 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_rubber_sapling.pngbin0 -> 333 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_rubber_tree_empty.pngbin0 -> 835 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_rubber_tree_full.pngbin0 -> 808 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_screwdriver.pngbin0 -> 1001 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_silicon_wafer.pngbin0 -> 913 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_silver_dust.pngbin0 -> 1295 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_solar_panel_bottom.pngbin0 -> 2046 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_solar_panel_side.pngbin0 -> 465 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_solar_panel_top.pngbin0 -> 569 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_sonic_screwdriver.pngbin0 -> 2064 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_stainless_steel_dust.pngbin0 -> 1145 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_talinite_dust.pngbin0 -> 1088 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_tin_dust.pngbin0 -> 1261 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_tree_tap.pngbin0 -> 1045 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_uranium_dust.pngbin0 -> 1112 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_water_can.pngbin0 -> 1041 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_water_mill_side.pngbin0 -> 907 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_water_mill_top.pngbin0 -> 828 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_water_mill_top_active.pngbin0 -> 819 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_workshop_bottom.pngbin0 -> 744 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_workshop_side.pngbin0 -> 589 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_workshop_top.pngbin0 -> 555 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_wrought_iron_dust.pngbin0 -> 1202 bytes
-rw-r--r--technic/technic/textures/technicx32/technic_zinc_dust.pngbin0 -> 1150 bytes
-rw-r--r--technic/technic/tools/cans.lua114
-rw-r--r--technic/technic/tools/chainsaw.lua366
-rw-r--r--technic/technic/tools/flashlight.lua123
-rw-r--r--technic/technic/tools/init.lua23
-rw-r--r--technic/technic/tools/mining_drill.lua419
-rw-r--r--technic/technic/tools/mining_lasers.lua178
-rw-r--r--technic/technic/tools/prospector.lua128
-rw-r--r--technic/technic/tools/sonic_screwdriver.lua98
-rw-r--r--technic/technic/tools/tree_tap.lua75
-rw-r--r--technic/technic/tools/vacuum.lua61
-rw-r--r--technic/technic_chests/README.md24
-rw-r--r--technic/technic_chests/common.lua71
-rw-r--r--technic/technic_chests/copper_chest.lua46
-rw-r--r--technic/technic_chests/depends.txt4
-rw-r--r--technic/technic_chests/gold_chest.lua57
-rw-r--r--technic/technic_chests/init.lua18
-rw-r--r--technic/technic_chests/iron_chest.lua53
-rw-r--r--technic/technic_chests/locale/de.txt41
-rw-r--r--technic/technic_chests/locale/template.txt39
-rw-r--r--technic/technic_chests/locale/tr.txt41
-rw-r--r--technic/technic_chests/mithril_chest.lua48
-rw-r--r--technic/technic_chests/register.lua303
-rw-r--r--technic/technic_chests/silver_chest.lua48
-rw-r--r--technic/technic_chests/textures/technic_checkmark_icon.pngbin0 -> 233 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_form_bg.pngbin0 -> 6404 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_black.pngbin0 -> 248 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_blue.pngbin0 -> 257 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_brown.pngbin0 -> 288 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_cyan.pngbin0 -> 259 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_dark_green.pngbin0 -> 269 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_dark_grey.pngbin0 -> 292 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_green.pngbin0 -> 278 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_grey.pngbin0 -> 299 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_magenta.pngbin0 -> 302 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_orange.pngbin0 -> 302 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_pink.pngbin0 -> 304 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_red.pngbin0 -> 262 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_violet.pngbin0 -> 287 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_white.pngbin0 -> 253 bytes
-rw-r--r--technic/technic_chests/textures/technic_chest_overlay_yellow.pngbin0 -> 274 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton0.pngbin0 -> 147 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton1.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton10.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton11.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton12.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton13.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton14.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton15.pngbin0 -> 3562 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton2.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton3.pngbin0 -> 140 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton4.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton5.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton6.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton7.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton8.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_colorbutton9.pngbin0 -> 148 bytes
-rw-r--r--technic/technic_chests/textures/technic_copper_chest_front.pngbin0 -> 607 bytes
-rw-r--r--technic/technic_chests/textures/technic_copper_chest_inventory.pngbin0 -> 7661 bytes
-rw-r--r--technic/technic_chests/textures/technic_copper_chest_lock_overlay.pngbin0 -> 160 bytes
-rw-r--r--technic/technic_chests/textures/technic_copper_chest_side.pngbin0 -> 570 bytes
-rw-r--r--technic/technic_chests/textures/technic_copper_chest_top.pngbin0 -> 557 bytes
-rw-r--r--technic/technic_chests/textures/technic_form_bg.pngbin0 -> 6404 bytes
-rw-r--r--technic/technic_chests/textures/technic_gold_chest_front.pngbin0 -> 687 bytes
-rw-r--r--technic/technic_chests/textures/technic_gold_chest_inventory.pngbin0 -> 9893 bytes
-rw-r--r--technic/technic_chests/textures/technic_gold_chest_lock_overlay.pngbin0 -> 204 bytes
-rw-r--r--technic/technic_chests/textures/technic_gold_chest_side.pngbin0 -> 743 bytes
-rw-r--r--technic/technic_chests/textures/technic_gold_chest_top.pngbin0 -> 729 bytes
-rw-r--r--technic/technic_chests/textures/technic_iron_chest_front.pngbin0 -> 750 bytes
-rw-r--r--technic/technic_chests/textures/technic_iron_chest_inventory.pngbin0 -> 7037 bytes
-rw-r--r--technic/technic_chests/textures/technic_iron_chest_lock_overlay.pngbin0 -> 153 bytes
-rw-r--r--technic/technic_chests/textures/technic_iron_chest_side.pngbin0 -> 746 bytes
-rw-r--r--technic/technic_chests/textures/technic_iron_chest_top.pngbin0 -> 860 bytes
-rw-r--r--technic/technic_chests/textures/technic_main_inventory.pngbin0 -> 7646 bytes
-rw-r--r--technic/technic_chests/textures/technic_mithril_chest_front.pngbin0 -> 770 bytes
-rw-r--r--technic/technic_chests/textures/technic_mithril_chest_inventory.pngbin0 -> 9893 bytes
-rw-r--r--technic/technic_chests/textures/technic_mithril_chest_lock_overlay.pngbin0 -> 155 bytes
-rw-r--r--technic/technic_chests/textures/technic_mithril_chest_side.pngbin0 -> 756 bytes
-rw-r--r--technic/technic_chests/textures/technic_mithril_chest_top.pngbin0 -> 775 bytes
-rw-r--r--technic/technic_chests/textures/technic_pencil_icon.pngbin0 -> 294 bytes
-rw-r--r--technic/technic_chests/textures/technic_silver_chest_front.pngbin0 -> 851 bytes
-rw-r--r--technic/technic_chests/textures/technic_silver_chest_inventory.pngbin0 -> 9163 bytes
-rw-r--r--technic/technic_chests/textures/technic_silver_chest_lock_overlay.pngbin0 -> 192 bytes
-rw-r--r--technic/technic_chests/textures/technic_silver_chest_side.pngbin0 -> 810 bytes
-rw-r--r--technic/technic_chests/textures/technic_silver_chest_top.pngbin0 -> 798 bytes
-rw-r--r--technic/technic_chests/textures/technic_wooden_chest_inventory.pngbin0 -> 5496 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_copper_chest_front.pngbin0 -> 2614 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_copper_chest_side.pngbin0 -> 2568 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_copper_chest_top.pngbin0 -> 2521 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_gold_chest_front.pngbin0 -> 2653 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_gold_chest_side.pngbin0 -> 2617 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_gold_chest_top.pngbin0 -> 2558 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_iron_chest_front.pngbin0 -> 2515 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_iron_chest_side.pngbin0 -> 2478 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_iron_chest_top.pngbin0 -> 2432 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_mithril_chest_front.pngbin0 -> 2656 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_mithril_chest_side.pngbin0 -> 2616 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_mithril_chest_top.pngbin0 -> 2558 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_silver_chest_front.pngbin0 -> 2241 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_silver_chest_side.pngbin0 -> 2146 bytes
-rw-r--r--technic/technic_chests/textures/x32/technic_silver_chest_top.pngbin0 -> 2226 bytes
-rw-r--r--technic/technic_chests/wooden_chest.lua51
-rw-r--r--technic/technic_worldgen/config.lua15
-rw-r--r--technic/technic_worldgen/crafts.lua198
-rw-r--r--technic/technic_worldgen/depends.txt3
-rw-r--r--technic/technic_worldgen/init.lua26
-rw-r--r--technic/technic_worldgen/locale/de.txt39
-rw-r--r--technic/technic_worldgen/locale/template.txt37
-rw-r--r--technic/technic_worldgen/locale/tr.txt38
-rw-r--r--technic/technic_worldgen/mg.lua90
-rw-r--r--technic/technic_worldgen/nodes.lua196
-rw-r--r--technic/technic_worldgen/oregen.lua191
-rw-r--r--technic/technic_worldgen/rubber.lua100
-rw-r--r--technic/technic_worldgen/textures/technic_brass_block.pngbin0 -> 649 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_brass_dust.pngbin0 -> 464 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_brass_ingot.pngbin0 -> 377 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_carbon_steel_block.pngbin0 -> 606 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_carbon_steel_ingot.pngbin0 -> 354 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_cast_iron_block.pngbin0 -> 606 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_cast_iron_ingot.pngbin0 -> 353 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_chromium_block.pngbin0 -> 611 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_chromium_ingot.pngbin0 -> 337 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_chromium_lump.pngbin0 -> 313 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_granite.pngbin0 -> 947 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_lead_block.pngbin0 -> 340 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_lead_dust.pngbin0 -> 232 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_lead_ingot.pngbin0 -> 248 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_lead_lump.pngbin0 -> 228 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_marble.pngbin0 -> 807 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_marble_bricks.pngbin0 -> 959 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_mineral_chromium.pngbin0 -> 887 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_mineral_lead.pngbin0 -> 290 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_mineral_sulfur.pngbin0 -> 237 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_mineral_uranium.pngbin0 -> 912 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_mineral_zinc.pngbin0 -> 891 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_rubber.pngbin0 -> 587 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_rubber_leaves.pngbin0 -> 444 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_rubber_sapling.pngbin0 -> 333 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_rubber_tree_empty.pngbin0 -> 835 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_rubber_tree_full.pngbin0 -> 808 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_rubber_tree_grindings.pngbin0 -> 252 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_stainless_steel_block.pngbin0 -> 589 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_sulfur_dust.pngbin0 -> 220 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_sulfur_lump.pngbin0 -> 172 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_uranium_block.pngbin0 -> 649 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_uranium_ingot.pngbin0 -> 300 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_uranium_lump.pngbin0 -> 352 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_wrought_iron_block.pngbin0 -> 572 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_wrought_iron_ingot.pngbin0 -> 334 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_zinc_block.pngbin0 -> 681 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_zinc_ingot.pngbin0 -> 341 bytes
-rw-r--r--technic/technic_worldgen/textures/technic_zinc_lump.pngbin0 -> 308 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_brass_ingot.pngbin0 -> 456 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_chromium_ingot.pngbin0 -> 242 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_chromium_lump.pngbin0 -> 213 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_concrete_block.pngbin0 -> 2319 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_granite.pngbin0 -> 947 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_marble.pngbin0 -> 807 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_marble_bricks.pngbin0 -> 959 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_mineral_chromium.pngbin0 -> 887 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_mineral_uranium.pngbin0 -> 912 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_mineral_zinc.pngbin0 -> 891 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_rebar.pngbin0 -> 813 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.pngbin0 -> 230 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_uranium.pngbin0 -> 213 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_zinc_ingot.pngbin0 -> 242 bytes
-rw-r--r--technic/technic_worldgen/textures/x32/technic_zinc_lump.pngbin0 -> 214 bytes
-rw-r--r--technic/wrench/depends.txt6
-rw-r--r--technic/wrench/init.lua162
-rw-r--r--technic/wrench/locale/de.txt7
-rw-r--r--technic/wrench/locale/template.txt5
-rw-r--r--technic/wrench/locale/tr.txt5
-rw-r--r--technic/wrench/support.lua73
-rw-r--r--technic/wrench/technic.lua343
-rw-r--r--technic/wrench/textures/technic_wrench.pngbin0 -> 249 bytes
-rw-r--r--teleport_request/README.md2
-rw-r--r--teleport_request/init.lua169
-rw-r--r--titanium/depends.txt1
-rw-r--r--titanium/init.lua420
-rw-r--r--titanium/textures/Thumbs.dbbin0 -> 18944 bytes
-rw-r--r--titanium/textures/sam_titanium.pngbin0 -> 472 bytes
-rw-r--r--titanium/textures/sam_titanium.xcfbin0 -> 1287 bytes
-rw-r--r--titanium/textures/titanium.pngbin0 -> 246 bytes
-rw-r--r--titanium/textures/titanium_axe.pngbin0 -> 236 bytes
-rw-r--r--titanium/textures/titanium_block.pngbin0 -> 285 bytes
-rw-r--r--titanium/textures/titanium_glass.pngbin0 -> 255 bytes
-rw-r--r--titanium/textures/titanium_pick.pngbin0 -> 359 bytes
-rw-r--r--titanium/textures/titanium_plate.pngbin0 -> 780 bytes
-rw-r--r--titanium/textures/titanium_shovel.pngbin0 -> 238 bytes
-rw-r--r--titanium/textures/titanium_sword.pngbin0 -> 318 bytes
-rw-r--r--titanium/textures/titanium_titanium.pngbin0 -> 364 bytes
-rw-r--r--titanium/textures/titanium_titanium_in_ground.pngbin0 -> 429 bytes
-rw-r--r--titanium/textures/titanium_tv_1.pngbin0 -> 422 bytes
-rw-r--r--titanium/textures/titanium_tv_2.pngbin0 -> 676 bytes
-rw-r--r--titanium/textures/tougher_titanium.pngbin0 -> 3055 bytes
-rw-r--r--travelnet/README.md11
-rw-r--r--travelnet/config.lua67
-rw-r--r--travelnet/doors.lua142
-rw-r--r--travelnet/elevator.lua112
-rw-r--r--travelnet/init.lua699
-rw-r--r--travelnet/models/travelnet.obj63
-rw-r--r--travelnet/models/travelnet_elevator.obj64
-rw-r--r--travelnet/restore_network_via_abm.lua24
-rw-r--r--travelnet/textures/travelnet_elevator_door_glass.pngbin0 -> 952 bytes
-rw-r--r--travelnet/textures/travelnet_elevator_front.pngbin0 -> 756 bytes
-rw-r--r--travelnet/textures/travelnet_elevator_inside_ceiling.pngbin0 -> 292 bytes
-rw-r--r--travelnet/textures/travelnet_elevator_inside_controls.pngbin0 -> 832 bytes
-rw-r--r--travelnet/textures/travelnet_elevator_inside_floor.pngbin0 -> 102 bytes
-rw-r--r--travelnet/textures/travelnet_elevator_inv.pngbin0 -> 4946 bytes
-rw-r--r--travelnet/textures/travelnet_elevator_sides_outside.pngbin0 -> 347 bytes
-rw-r--r--travelnet/textures/travelnet_flash.pngbin0 -> 1439 bytes
-rw-r--r--travelnet/textures/travelnet_inv.pngbin0 -> 5680 bytes
-rw-r--r--travelnet/textures/travelnet_travelnet_back.pngbin0 -> 533 bytes
-rw-r--r--travelnet/textures/travelnet_travelnet_front.pngbin0 -> 904 bytes
-rw-r--r--travelnet/textures/travelnet_travelnet_side.pngbin0 -> 731 bytes
-rw-r--r--travelnet/travelnet.lua99
-rw-r--r--ufos/README.txt8
-rw-r--r--ufos/modpack.txt0
-rw-r--r--ufos/ufos/depends.txt1
-rw-r--r--ufos/ufos/furnace.lua105
-rw-r--r--ufos/ufos/init.lua255
-rw-r--r--ufos/ufos/models/ufo.blendbin0 -> 520668 bytes
-rw-r--r--ufos/ufos/models/ufo.pngbin0 -> 5516 bytes
-rw-r--r--ufos/ufos/models/ufo.x2252
-rw-r--r--ufos/ufos/models/ufo_0.pngbin0 -> 5516 bytes
-rw-r--r--ufos/ufos/models/ufo_1.pngbin0 -> 5524 bytes
-rw-r--r--ufos/ufos/models/ufo_2.pngbin0 -> 5526 bytes
-rw-r--r--ufos/ufos/models/ufo_3.pngbin0 -> 5526 bytes
-rw-r--r--ufos/ufos/models/ufo_4.pngbin0 -> 5526 bytes
-rw-r--r--ufos/ufos/models/ufo_5.pngbin0 -> 5526 bytes
-rw-r--r--ufos/ufos/models/ufo_6.pngbin0 -> 5525 bytes
-rw-r--r--ufos/ufos/models/ufo_7.pngbin0 -> 5522 bytes
-rw-r--r--ufos/ufos/models/ufo_8.pngbin0 -> 5516 bytes
-rw-r--r--ufos/ufos/textures/ufos_box.pngbin0 -> 12312 bytes
-rw-r--r--ufos/ufos/textures/ufos_furnace_front.pngbin0 -> 216 bytes
-rw-r--r--ufos/ufos/textures/ufos_furnace_front_active.pngbin0 -> 298 bytes
-rw-r--r--ufos/ufos/textures/ufos_inventory.pngbin0 -> 53038 bytes
-rw-r--r--unified_inventory/README.md22
-rw-r--r--unified_inventory/api.lua226
-rw-r--r--unified_inventory/bags.lua218
-rw-r--r--unified_inventory/callbacks.lua189
-rw-r--r--unified_inventory/depends.txt4
-rw-r--r--unified_inventory/group.lua108
-rw-r--r--unified_inventory/image_credits.txt66
-rw-r--r--unified_inventory/init.lua69
-rw-r--r--unified_inventory/internal.lua339
-rw-r--r--unified_inventory/item_names.lua53
-rw-r--r--unified_inventory/locale/de.txt71
-rw-r--r--unified_inventory/locale/es.txt72
-rw-r--r--unified_inventory/locale/fr.txt72
-rw-r--r--unified_inventory/locale/pl.txt71
-rw-r--r--unified_inventory/locale/ru.txt76
-rw-r--r--unified_inventory/locale/template.txt72
-rw-r--r--unified_inventory/locale/tr.txt72
-rw-r--r--unified_inventory/register.lua497
-rw-r--r--unified_inventory/sounds/birds.oggbin0 -> 14797 bytes
-rw-r--r--unified_inventory/sounds/click.oggbin0 -> 4869 bytes
-rw-r--r--unified_inventory/sounds/dingdong.oggbin0 -> 27849 bytes
-rw-r--r--unified_inventory/sounds/electricity.oggbin0 -> 18175 bytes
-rw-r--r--unified_inventory/sounds/owl.oggbin0 -> 50950 bytes
-rw-r--r--unified_inventory/sounds/paperflip1.oggbin0 -> 19880 bytes
-rw-r--r--unified_inventory/sounds/paperflip2.oggbin0 -> 20582 bytes
-rw-r--r--unified_inventory/sounds/teleport.oggbin0 -> 59041 bytes
-rw-r--r--unified_inventory/sounds/trash.oggbin0 -> 33615 bytes
-rw-r--r--unified_inventory/sounds/trash_all.oggbin0 -> 32753 bytes
-rw-r--r--unified_inventory/textures/bags_large.pngbin0 -> 13705 bytes
-rw-r--r--unified_inventory/textures/bags_medium.pngbin0 -> 13084 bytes
-rw-r--r--unified_inventory/textures/bags_small.pngbin0 -> 10937 bytes
-rw-r--r--unified_inventory/textures/ui_1_icon.pngbin0 -> 688 bytes
-rw-r--r--unified_inventory/textures/ui_2_icon.pngbin0 -> 1386 bytes
-rw-r--r--unified_inventory/textures/ui_3_icon.pngbin0 -> 1839 bytes
-rw-r--r--unified_inventory/textures/ui_4_icon.pngbin0 -> 1111 bytes
-rw-r--r--unified_inventory/textures/ui_5_icon.pngbin0 -> 1464 bytes
-rw-r--r--unified_inventory/textures/ui_bags_icon.pngbin0 -> 13705 bytes
-rw-r--r--unified_inventory/textures/ui_bags_lg_form.pngbin0 -> 13920 bytes
-rw-r--r--unified_inventory/textures/ui_bags_main_form.pngbin0 -> 10390 bytes
-rw-r--r--unified_inventory/textures/ui_bags_med_form.pngbin0 -> 12230 bytes
-rw-r--r--unified_inventory/textures/ui_bags_sm_form.pngbin0 -> 10885 bytes
-rw-r--r--unified_inventory/textures/ui_blank_image.pngbin0 -> 143 bytes
-rw-r--r--unified_inventory/textures/ui_blue_icon_background.pngbin0 -> 4592 bytes
-rw-r--r--unified_inventory/textures/ui_circular_arrows_icon.pngbin0 -> 10771 bytes
-rw-r--r--unified_inventory/textures/ui_craft_icon.pngbin0 -> 17517 bytes
-rw-r--r--unified_inventory/textures/ui_craftgrid_icon.pngbin0 -> 680 bytes
-rw-r--r--unified_inventory/textures/ui_craftguide_form.pngbin0 -> 13755 bytes
-rw-r--r--unified_inventory/textures/ui_craftguide_icon.pngbin0 -> 17803 bytes
-rw-r--r--unified_inventory/textures/ui_crafting_form.pngbin0 -> 4356 bytes
-rw-r--r--unified_inventory/textures/ui_doubleleft_icon.pngbin0 -> 11010 bytes
-rw-r--r--unified_inventory/textures/ui_doubleright_icon.pngbin0 -> 11239 bytes
-rw-r--r--unified_inventory/textures/ui_form_bg.pngbin0 -> 6404 bytes
-rw-r--r--unified_inventory/textures/ui_gohome_icon.pngbin0 -> 17098 bytes
-rw-r--r--unified_inventory/textures/ui_green_icon_background.pngbin0 -> 5052 bytes
-rw-r--r--unified_inventory/textures/ui_group.pngbin0 -> 23875 bytes
-rw-r--r--unified_inventory/textures/ui_home_icon.pngbin0 -> 16114 bytes
-rw-r--r--unified_inventory/textures/ui_left_icon.pngbin0 -> 7828 bytes
-rw-r--r--unified_inventory/textures/ui_main_inventory.pngbin0 -> 7646 bytes
-rw-r--r--unified_inventory/textures/ui_misc_form.pngbin0 -> 9354 bytes
-rw-r--r--unified_inventory/textures/ui_moon_icon.pngbin0 -> 15255 bytes
-rw-r--r--unified_inventory/textures/ui_no.pngbin0 -> 7525 bytes
-rw-r--r--unified_inventory/textures/ui_off_icon.pngbin0 -> 7081 bytes
-rw-r--r--unified_inventory/textures/ui_ok_icon.pngbin0 -> 4685 bytes
-rw-r--r--unified_inventory/textures/ui_on_icon.pngbin0 -> 6838 bytes
-rw-r--r--unified_inventory/textures/ui_pencil_icon.pngbin0 -> 7890 bytes
-rw-r--r--unified_inventory/textures/ui_red_icon_background.pngbin0 -> 4584 bytes
-rw-r--r--unified_inventory/textures/ui_right_icon.pngbin0 -> 7946 bytes
-rw-r--r--unified_inventory/textures/ui_search_icon.pngbin0 -> 11830 bytes
-rw-r--r--unified_inventory/textures/ui_sethome_icon.pngbin0 -> 15395 bytes
-rw-r--r--unified_inventory/textures/ui_single_slot.pngbin0 -> 988 bytes
-rw-r--r--unified_inventory/textures/ui_skip_backward_icon.pngbin0 -> 9858 bytes
-rw-r--r--unified_inventory/textures/ui_skip_forward_icon.pngbin0 -> 9844 bytes
-rw-r--r--unified_inventory/textures/ui_sun_icon.pngbin0 -> 19783 bytes
-rw-r--r--unified_inventory/textures/ui_trash_icon.pngbin0 -> 15536 bytes
-rw-r--r--unified_inventory/textures/ui_waypoint_set_icon.pngbin0 -> 4842 bytes
-rw-r--r--unified_inventory/textures/ui_waypoints_icon.pngbin0 -> 15935 bytes
-rw-r--r--unified_inventory/textures/ui_xyz_icon.pngbin0 -> 2650 bytes
-rw-r--r--unified_inventory/textures/ui_xyz_off_icon.pngbin0 -> 10245 bytes
-rw-r--r--unified_inventory/textures/ui_xyz_on_icon.pngbin0 -> 2650 bytes
-rw-r--r--unified_inventory/waypoints.lua246
-rw-r--r--unifiedbricks/README.txt37
-rw-r--r--unifiedbricks/depends.txt4
-rw-r--r--unifiedbricks/init.lua915
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_aqua.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_aqua_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_black.pngbin0 -> 370 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_blue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_blue_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_cyan.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_cyan_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_aqua.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_aqua_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_blue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_blue_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_cyan.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_cyan_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_green.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_green_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_lime.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_lime_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_magenta.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_magenta_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_orange.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_orange_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_red.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_red_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_redviolet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_redviolet_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_skyblue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_skyblue_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_violet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_violet_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_yellow.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_dark_yellow_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_darkgrey.pngbin0 -> 370 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_green.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_green_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_grey.pngbin0 -> 370 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_aqua.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_blue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_cyan.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_green.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_lime.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_magenta.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_orange.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_red.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_redviolet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_skyblue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_violet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_light_yellow.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_lightgrey.pngbin0 -> 371 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_lime.pngbin0 -> 384 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_lime_s50.pngbin0 -> 384 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_magenta.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_magenta_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_aqua.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_aqua_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_blue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_blue_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_cyan.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_cyan_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_green.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_green_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_lime.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_lime_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_magenta.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_magenta_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_orange.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_orange_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_red.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_red_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_redviolet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_redviolet_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_skyblue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_skyblue_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_violet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_violet_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_yellow.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_medium_yellow_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_orange.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_orange_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_red.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_red_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_redviolet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_redviolet_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_skyblue.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_skyblue_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_violet.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_violet_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_white.pngbin0 -> 371 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_yellow.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brick_yellow_s50.pngbin0 -> 380 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_aqua.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_aqua_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_black.pngbin0 -> 404 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_blue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_blue_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_cyan.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_cyan_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_blue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_blue_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_green.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_green_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_lime.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_lime_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_orange.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_orange_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_red.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_red_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_violet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_violet_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_darkgrey.pngbin0 -> 408 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_green.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_green_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_grey.pngbin0 -> 405 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_aqua.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_blue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_cyan.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_green.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_lime.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_magenta.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_orange.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_red.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_redviolet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_skyblue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_violet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_light_yellow.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_lightgrey.pngbin0 -> 409 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_lime.pngbin0 -> 421 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_lime_s50.pngbin0 -> 427 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_magenta.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_magenta_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_blue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_blue_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_green.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_green_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_lime.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_lime_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_orange.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_orange_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_red.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_red_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_violet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_violet_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow_s50.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_orange.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_orange_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_red.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_red_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_redviolet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_redviolet_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_skyblue.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_skyblue_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_violet.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_violet_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_white.pngbin0 -> 406 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_yellow.pngbin0 -> 414 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock_yellow_s50.pngbin0 -> 423 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_aqua.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_aqua_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_black.pngbin0 -> 367 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_blue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_blue_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_cyan.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_cyan_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_aqua.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_aqua_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_blue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_blue_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_cyan.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_cyan_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_green.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_green_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_lime.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_lime_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_magenta.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_magenta_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_orange.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_orange_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_red.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_red_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_redviolet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_redviolet_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_skyblue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_skyblue_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_violet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_violet_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_yellow.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_dark_yellow_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_darkgrey.pngbin0 -> 367 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_green.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_green_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_grey.pngbin0 -> 367 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_aqua.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_blue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_cyan.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_green.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_lime.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_magenta.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_orange.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_red.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_redviolet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_skyblue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_violet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_light_yellow.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_lightgrey.pngbin0 -> 368 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_lime.pngbin0 -> 383 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_lime_s50.pngbin0 -> 383 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_magenta.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_magenta_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_aqua.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_aqua_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_blue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_blue_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_cyan.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_cyan_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_green.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_green_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_lime.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_lime_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_magenta.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_magenta_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_orange.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_orange_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_red.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_red_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_redviolet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_redviolet_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_skyblue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_skyblue_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_violet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_violet_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_yellow.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_medium_yellow_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_orange.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_orange_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_red.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_red_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_redviolet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_redviolet_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_skyblue.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_skyblue_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_violet.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_violet_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_white.pngbin0 -> 368 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_yellow.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clay_yellow_s50.pngbin0 -> 376 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_aqua.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_aqua_s50.pngbin0 -> 605 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_black.pngbin0 -> 405 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_blue.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_blue_s50.pngbin0 -> 605 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_cyan.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_cyan_s50.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua.pngbin0 -> 537 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua_s50.pngbin0 -> 517 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_blue.pngbin0 -> 505 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_blue_s50.pngbin0 -> 490 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan.pngbin0 -> 505 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan_s50.pngbin0 -> 490 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_green.pngbin0 -> 505 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_green_s50.pngbin0 -> 490 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_lime.pngbin0 -> 537 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_lime_s50.pngbin0 -> 517 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta.pngbin0 -> 505 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta_s50.pngbin0 -> 490 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_orange.pngbin0 -> 537 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_orange_s50.pngbin0 -> 517 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_red.pngbin0 -> 505 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_red_s50.pngbin0 -> 490 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet.pngbin0 -> 537 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet_s50.pngbin0 -> 517 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue.pngbin0 -> 537 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue_s50.pngbin0 -> 517 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_violet.pngbin0 -> 537 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_violet_s50.pngbin0 -> 517 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow.pngbin0 -> 505 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow_s50.pngbin0 -> 490 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_darkgrey.pngbin0 -> 452 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_green.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_green_s50.pngbin0 -> 605 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_grey.pngbin0 -> 476 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_aqua.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_blue.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_cyan.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_green.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_lime.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_magenta.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_orange.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_red.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_redviolet.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_skyblue.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_violet.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_light_yellow.pngbin0 -> 609 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_lightgrey.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_lime.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_lime_s50.pngbin0 -> 614 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_magenta.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_magenta_s50.pngbin0 -> 615 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua.pngbin0 -> 599 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua_s50.pngbin0 -> 568 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_blue.pngbin0 -> 574 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_blue_s50.pngbin0 -> 544 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan.pngbin0 -> 581 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan_s50.pngbin0 -> 544 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_green.pngbin0 -> 574 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_green_s50.pngbin0 -> 544 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_lime.pngbin0 -> 599 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_lime_s50.pngbin0 -> 568 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta.pngbin0 -> 581 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta_s50.pngbin0 -> 544 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_orange.pngbin0 -> 599 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_orange_s50.pngbin0 -> 568 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_red.pngbin0 -> 574 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_red_s50.pngbin0 -> 544 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet.pngbin0 -> 599 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet_s50.pngbin0 -> 568 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue.pngbin0 -> 599 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue_s50.pngbin0 -> 568 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_violet.pngbin0 -> 599 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_violet_s50.pngbin0 -> 568 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow.pngbin0 -> 581 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow_s50.pngbin0 -> 544 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_orange.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_orange_s50.pngbin0 -> 605 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_red.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_red_s50.pngbin0 -> 600 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_redviolet.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_redviolet_s50.pngbin0 -> 615 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_skyblue.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_skyblue_s50.pngbin0 -> 615 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_violet.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_violet_s50.pngbin0 -> 605 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_white.pngbin0 -> 314 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_yellow.pngbin0 -> 625 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock_yellow_s50.pngbin0 -> 615 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_aqua.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_blue.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_cyan.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_green.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_lime.pngbin0 -> 495 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_magenta.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_orange.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_red.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_redviolet.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_skyblue.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_violet.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_dark_yellow.pngbin0 -> 486 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_darkgrey.pngbin0 -> 428 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_grey.pngbin0 -> 439 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_aqua.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_blue.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_cyan.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_green.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_lime.pngbin0 -> 475 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_magenta.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_orange.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_red.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_redviolet.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_skyblue.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_violet.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_light_yellow.pngbin0 -> 484 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_lightgrey.pngbin0 -> 432 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_aqua.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_blue.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_cyan.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_green.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_lime.pngbin0 -> 506 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_magenta.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_orange.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_red.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_redviolet.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_skyblue.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_violet.pngbin0 -> 503 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_multicolor_medium_yellow.pngbin0 -> 503 bytes
-rw-r--r--unifieddyes/LICENSE282
-rw-r--r--unifieddyes/README248
-rw-r--r--unifieddyes/bottle_overlay.pngbin0 -> 292 bytes
-rw-r--r--unifieddyes/changelog.txt101
-rw-r--r--unifieddyes/colors.txt90
-rw-r--r--unifieddyes/depends.txt4
-rw-r--r--unifieddyes/gentextures-jpg.sh183
-rw-r--r--unifieddyes/gentextures.sh177
-rw-r--r--unifieddyes/init.lua375
-rw-r--r--unifieddyes/listcolors.sh79
-rw-r--r--unifieddyes/locale/de.txt74
-rw-r--r--unifieddyes/locale/template.txt87
-rw-r--r--unifieddyes/locale/tr.txt88
-rw-r--r--unifieddyes/textures/unifieddyes_aqua.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_aqua_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_blue_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_cyan_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_aqua.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_aqua_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_blue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_blue_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_cyan.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_cyan_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_green.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_green_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_lime.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_lime_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_magenta.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_magenta_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_orange.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_orange_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_red.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_red_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_redviolet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_redviolet_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_skyblue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_skyblue_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_violet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_violet_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_yellow.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_dark_yellow_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_darkgrey.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_green_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_aqua.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_blue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_cyan.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_green.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_lime.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_magenta.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_orange.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_red.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_redviolet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_skyblue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_violet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_light_yellow.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_lightgrey.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_lime.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_lime_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_magenta_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_aqua.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_aqua_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_blue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_blue_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_cyan.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_cyan_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_green.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_green_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_lime.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_lime_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_magenta.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_magenta_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_orange.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_orange_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_red.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_red_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_redviolet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_redviolet_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_skyblue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_skyblue_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_violet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_violet_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_yellow.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_medium_yellow_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_orange_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_red_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_redviolet.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_redviolet_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_skyblue.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_skyblue_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_violet_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_yellow_s50.pngbin0 -> 161 bytes
-rw-r--r--unifieddyes/unifieddyes_base.pngbin0 -> 89 bytes
-rw-r--r--usesdirt/README.md0
-rw-r--r--usesdirt/depends.txt1
-rw-r--r--usesdirt/init.lua605
-rw-r--r--usesdirt/textures/usesdirt_dirt_axe.pngbin0 -> 724 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_brick.pngbin0 -> 4274 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_chest.pngbin0 -> 500 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_cobble_stone.pngbin0 -> 7397 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_cobble_stone_fence.pngbin0 -> 6533 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_cobble_stone_ladder.pngbin0 -> 8930 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_cup.pngbin0 -> 952 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_fence.pngbin0 -> 2176 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_furnace_bottom.pngbin0 -> 3062 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_furnace_front.pngbin0 -> 2853 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_furnace_front_active.pngbin0 -> 4794 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_furnace_side.pngbin0 -> 3062 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_furnace_top.pngbin0 -> 3062 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_ladder.pngbin0 -> 2969 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_locked_chest.pngbin0 -> 948 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_pick.pngbin0 -> 1041 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_shovel.pngbin0 -> 773 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_stone.pngbin0 -> 1619 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_stone_fence.pngbin0 -> 1630 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_stone_ladder.pngbin0 -> 1909 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_sword.pngbin0 -> 896 bytes
-rw-r--r--usesdirt/textures/usesdirt_dirt_torch.pngbin0 -> 1103 bytes
-rw-r--r--windmill/README.md27
-rw-r--r--windmill/init.lua125
-rw-r--r--windmill/textures/windmill.pngbin0 -> 49819 bytes
-rw-r--r--windmill/textures/windmill_3blade_ccw.pngbin0 -> 113240 bytes
-rw-r--r--windmill/textures/windmill_3blade_cw.pngbin0 -> 114691 bytes
-rw-r--r--windmill/textures/windmill_3blade_inv.pngbin0 -> 2563 bytes
-rw-r--r--windmill/textures/windmill_4blade_inv.pngbin0 -> 2925 bytes
-rw-r--r--windmill/textures/windmill_farm_ccw.pngbin0 -> 361364 bytes
-rw-r--r--windmill/textures/windmill_farm_cw.pngbin0 -> 360857 bytes
-rw-r--r--windmill/textures/windmill_farm_inv.pngbin0 -> 5429 bytes
-rw-r--r--windmill/textures/windmill_inv.pngbin0 -> 4479 bytes
-rw-r--r--windmill/textures/windmill_reverse.pngbin0 -> 49902 bytes
-rw-r--r--windmill/textures/windmill_wooden_ccw.pngbin0 -> 245571 bytes
-rw-r--r--windmill/textures/windmill_wooden_ccw_with_sails.pngbin0 -> 223666 bytes
-rw-r--r--windmill/textures/windmill_wooden_cw.pngbin0 -> 245487 bytes
-rw-r--r--windmill/textures/windmill_wooden_cw_with_sails.pngbin0 -> 224233 bytes
-rw-r--r--windmill/textures/windmill_wooden_inv.pngbin0 -> 3732 bytes
-rw-r--r--windmill/textures/windmill_wooden_no_sails_inv.pngbin0 -> 3745 bytes
-rw-r--r--windmill_large/README.md8
-rw-r--r--windmill_large/depends.txt1
-rw-r--r--windmill_large/init.lua29
-rw-r--r--windmill_large/textures/windmill_3blade_304_ccw.pngbin0 -> 437099 bytes
-rw-r--r--windmill_large/textures/windmill_3blade_304_cw.pngbin0 -> 437723 bytes
-rw-r--r--windmill_large/textures/windmill_4blade_304_ccw.pngbin0 -> 641209 bytes
-rw-r--r--windmill_large/textures/windmill_4blade_304_cw.pngbin0 -> 643107 bytes
-rw-r--r--windmill_large/textures/windmill_wooden_ccw_304px.pngbin0 -> 572818 bytes
-rw-r--r--windmill_large/textures/windmill_wooden_ccw_with_sails_304px.pngbin0 -> 653832 bytes
-rw-r--r--windmill_large/textures/windmill_wooden_cw_304px.pngbin0 -> 573341 bytes
-rw-r--r--windmill_large/textures/windmill_wooden_cw_with_sails_304px.pngbin0 -> 652598 bytes
-rw-r--r--worldedit/ChatCommands.md382
-rw-r--r--worldedit/LICENSE.txt661
-rw-r--r--worldedit/README.md160
-rw-r--r--worldedit/Tutorial.md120
-rw-r--r--worldedit/WorldEdit API.md225
-rw-r--r--worldedit/config.ld12
-rw-r--r--worldedit/modpack.txt0
-rw-r--r--worldedit/worldedit/code.lua52
-rw-r--r--worldedit/worldedit/common.lua114
-rw-r--r--worldedit/worldedit/compatibility.lua74
-rw-r--r--worldedit/worldedit/init.lua44
-rw-r--r--worldedit/worldedit/manipulations.lua629
-rw-r--r--worldedit/worldedit/primitives.lua273
-rw-r--r--worldedit/worldedit/serialization.lua239
-rw-r--r--worldedit/worldedit/visualization.lua131
-rw-r--r--worldedit/worldedit_commands/depends.txt1
-rw-r--r--worldedit/worldedit_commands/init.lua1160
-rw-r--r--worldedit/worldedit_commands/mark.lua162
-rw-r--r--worldedit/worldedit_commands/safe.lua68
-rw-r--r--worldedit/worldedit_commands/textures/worldedit_cube.pngbin0 -> 147 bytes
-rw-r--r--worldedit/worldedit_commands/textures/worldedit_pos1.pngbin0 -> 142 bytes
-rw-r--r--worldedit/worldedit_commands/textures/worldedit_pos2.pngbin0 -> 157 bytes
-rw-r--r--worldedit/worldedit_gui/depends.txt5
-rw-r--r--worldedit/worldedit_gui/functionality.lua707
-rw-r--r--worldedit/worldedit_gui/init.lua249
-rw-r--r--worldedit/worldedit_gui/textures/inventory_plus_worldedit_gui.pngbin0 -> 25175 bytes
-rw-r--r--worldedit/worldedit_infinity/depends.txt1
-rw-r--r--worldedit/worldedit_infinity/init.lua103
-rw-r--r--worldedit/worldedit_limited/depends.txt1
-rw-r--r--worldedit/worldedit_limited/init.lua120
-rw-r--r--worldedit/worldedit_shortcommands/depends.txt1
-rw-r--r--worldedit/worldedit_shortcommands/init.lua50
-rw-r--r--xban2/bower.json15
-rw-r--r--xban2/dbimport.lua38
-rw-r--r--xban2/doc/API.md32
-rw-r--r--xban2/doc/dbformat.txt45
-rw-r--r--xban2/gui.lua90
-rw-r--r--xban2/importers/minetest.lua29
-rw-r--r--xban2/importers/v1.lua33
-rw-r--r--xban2/importers/v2.lua35
-rw-r--r--xban2/init.lua331
-rw-r--r--xban2/serialize.lua31
6453 files changed, 267406 insertions, 0 deletions
diff --git a/areas/LICENSE.txt b/areas/LICENSE.txt
new file mode 100644
index 0000000..4362b49
--- /dev/null
+++ b/areas/LICENSE.txt
@@ -0,0 +1,502 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/areas/README.md b/areas/README.md
new file mode 100644
index 0000000..bd6a54d
--- /dev/null
+++ b/areas/README.md
@@ -0,0 +1,104 @@
+Areas mod for Minetest 0.4.8+
+=============================
+
+
+Configuration
+-------------
+
+If you wish to specify configuration options, such as whether players are
+allowed to protect their own areas with the `protect` command (disabled by
+default), you should check config.lua and set the appropriate settings in your
+server's configuration file (probably `minetest.conf`).
+
+
+Tutorial
+--------
+
+To protect an area you must first set the corner positions of the area.
+In order to set the corner positions you can run:
+ * `/area_pos set` and punch the two corner nodes to set them.
+ * `/area_pos set1/set2` and punch only the first or second corner node to
+ set them one at a time.
+ * `/area_pos1/2` to set one of the positions to your current position.
+ * `/area_pos1/2 X Y Z` to set one of the positions to the specified
+ coordinates.
+
+Once you have set the border positions you can protect the area by running one
+of the following commands:
+ * `/set_owner <OwnerName> <AreaName>` -- If you have the `areas` privilege.
+ * `/protect <AreaName>` -- If you have the `areas` privilege or the server
+ administrator has enabled area self-protection.
+
+The area name is used only for informational purposes (so that you know what
+an area is for). It is not used for any other purpose.
+For example: `/set_owner SomePlayer Mese city`
+
+Now that you own an area you may want to add sub-owners to it. You can do this
+with the `add_owner` command. Anyone with an area can use the `add_owner`
+command on their areas. Before using the `add_owner` command you have to
+select the corners of the sub-area as you did for `set_owner`. If your markers
+are still around your original area and you want to grant access to your
+entire area you will not have to re-set them. You can also use `select_area` to
+place the markers at the corners of an existing area if you've reset your
+markers and want to grant access to a full area.
+The `add_owner` command expects three arguments:
+ 1. The ID number of the parent area (the area that you want to add a
+ sub-area to).
+ 2. The name of the player that will own the sub-area.
+ 3. The name of the sub-area. (can contain spaces)
+
+For example: `/add_owner 123 BobTheBuilder Diamond lighthouse`
+
+
+Commands
+--------
+
+ * `/protect <AreaName>` -- Protects an area for yourself. (if
+ self-protection is enabled)
+
+ * `/set_owner <OwnerName> <AreaName>` -- Protects an area for a specified
+ player. (requires the `areas` privilege)
+
+ * `/add_owner <ParentID> <OwnerName> <ChildName>` -- Grants another player
+ control over part (or all) of an area.
+
+ * `/rename_area <ID> <NewName>` -- Renames an existing area.
+
+ * `/list_areas` -- Lists all of the areas that you own, or all areas if you
+ have the `areas` privilege.
+
+ * `/find_areas <Regex>` -- Finds areas using a Lua regular expresion.
+ For example, to find castles:
+
+ /find_areas [Cc]astle
+
+ * `/remove_area <ID>` -- Removes an area that you own. Any sub-areas of that
+ area are made sub-areas of the removed area's parent, if it exists.
+ If the removed area has no parent it's sub-areas will have no parent.
+
+ * `/recursive_remove_areas <ID>` -- Removes an area and all sub-areas of it.
+
+ * `/change_owner <ID> <NewOwner>` -- Change the owner of an area.
+
+ * `/area_info` -- Returns information about area configuration and usage.
+
+ * `/select_area <ID>` -- Sets the area positions to those of an existing
+ area.
+
+ * `/area_pos {set,set1,set2,get}` -- Sets the area positions by punching
+ nodes or shows the current area positions.
+
+ * `/area_pos1 [X,Y,Z|X Y Z]` -- Sets area position one to your position or
+ the one supplied.
+
+ * `/area_pos2 [X,Y,Z|X Y Z]` -- Sets area position two to your position or
+ the one supplied.
+
+License
+-------
+
+Copyright (C) 2013 ShadowNinja
+
+Licensed under the GNU LGPL version 2.1 or later.
+See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt
+
diff --git a/areas/api.lua b/areas/api.lua
new file mode 100644
index 0000000..e8b9c7a
--- /dev/null
+++ b/areas/api.lua
@@ -0,0 +1,128 @@
+
+--- Returns a list of areas that include the provided position.
+function areas:getAreasAtPos(pos)
+ local res = {}
+ if self.store then
+ local a = self.store:get_areas_for_pos(pos, false, true)
+ for store_id, store_area in pairs(a) do
+ local id = tonumber(store_area.data)
+ res[id] = self.areas[id]
+ end
+ else
+ local px, py, pz = pos.x, pos.y, pos.z
+ for id, area in pairs(self.areas) do
+ local ap1, ap2 = area.pos1, area.pos2
+ if
+ (px >= ap1.x and px <= ap2.x) and
+ (py >= ap1.y and py <= ap2.y) and
+ (pz >= ap1.z and pz <= ap2.z) then
+ res[id] = area
+ end
+ end
+ end
+ return res
+end
+
+--- Returns areas that intersect with the passed area.
+function areas:getAreasIntersectingArea(pos1, pos2)
+ local res = {}
+ if self.store then
+ local a = self.store:get_areas_in_area(pos1, pos2,
+ true, false, true)
+ for store_id, store_area in pairs(a) do
+ local id = tonumber(store_area.data)
+ res[id] = self.areas[id]
+ end
+ else
+ self:sortPos(pos1, pos2)
+ local p1x, p1y, p1z = pos1.x, pos1.y, pos1.z
+ local p2x, p2y, p2z = pos2.x, pos2.y, pos2.z
+ for id, area in pairs(self.areas) do
+ local ap1, ap2 = area.pos1, area.pos2
+ if
+ (ap1.x <= p2x and ap2.x >= p1x) and
+ (ap1.y <= p2y and ap2.y >= p1y) and
+ (ap1.z <= p2z and ap2.z >= p1z) then
+ -- Found an intersecting area.
+ res[id] = area
+ end
+ end
+ end
+ return res
+end
+
+-- Checks if the area is unprotected or owned by you
+function areas:canInteract(pos, name)
+ if minetest.check_player_privs(name, self.adminPrivs) then
+ return true
+ end
+ local owned = false
+ for _, area in pairs(self:getAreasAtPos(pos)) do
+ if area.owner == name or area.open then
+ return true
+ else
+ owned = true
+ end
+ end
+ return not owned
+end
+
+-- Returns a table (list) of all players that own an area
+function areas:getNodeOwners(pos)
+ local owners = {}
+ for _, area in pairs(self:getAreasAtPos(pos)) do
+ table.insert(owners, area.owner)
+ end
+ return owners
+end
+
+--- Checks if the area intersects with an area that the player can't interact in.
+-- Note that this fails and returns false when the specified area is fully
+-- owned by the player, but with multiple protection zones, none of which
+-- cover the entire checked area.
+-- @param name (optional) Player name. If not specified checks for any intersecting areas.
+-- @param allow_open Whether open areas should be counted as if they didn't exist.
+-- @return Boolean indicating whether the player can interact in that area.
+-- @return Un-owned intersecting area ID, if found.
+function areas:canInteractInArea(pos1, pos2, name, allow_open)
+ if name and minetest.check_player_privs(name, self.adminPrivs) then
+ return true
+ end
+ self:sortPos(pos1, pos2)
+
+ -- Intersecting non-owned area ID, if found.
+ local blocking_area = nil
+
+ local areas = self:getAreasIntersectingArea(pos1, pos2)
+ for id, area in pairs(areas) do
+ -- First check for a fully enclosing owned area.
+ -- A little optimization: isAreaOwner isn't necessary
+ -- here since we're iterating over all relevant areas.
+ if area.owner == name and
+ self:isSubarea(pos1, pos2, id) then
+ return true
+ end
+
+ -- Then check for intersecting non-owned (blocking) areas.
+ -- We don't bother with this check if we've already found a
+ -- blocking area, as the check is somewhat expensive.
+ -- The area blocks if the area is closed or open areas aren't
+ -- acceptable to the caller, and the area isn't owned.
+ -- Note: We can't return directly here, because there might be
+ -- an exclosing owned area that we haven't gotten to yet.
+ if not blocking_area and
+ (not allow_open or not area.open) and
+ (not name or not self:isAreaOwner(id, name)) then
+ blocking_area = id
+ end
+ end
+
+ if blocking_area then
+ return false, blocking_area
+ end
+
+ -- There are no intersecting areas or they are only partially
+ -- intersecting areas and they are all owned by the player.
+ return true
+end
+
diff --git a/areas/chatcommands.lua b/areas/chatcommands.lua
new file mode 100644
index 0000000..d37634a
--- /dev/null
+++ b/areas/chatcommands.lua
@@ -0,0 +1,404 @@
+
+minetest.register_chatcommand("protect", {
+ params = "<AreaName>",
+ description = "Protect your own area",
+ privs = {[areas.config.self_protection_privilege]=true},
+ func = function(name, param)
+ if param == "" then
+ return false, "Invalid usage, see /help protect."
+ end
+ local pos1, pos2 = areas:getPos(name)
+ if not (pos1 and pos2) then
+ return false, "You need to select an area first."
+ end
+
+ minetest.log("action", "/protect invoked, owner="..name..
+ " AreaName="..param..
+ " StartPos="..minetest.pos_to_string(pos1)..
+ " EndPos=" ..minetest.pos_to_string(pos2))
+
+ local canAdd, errMsg = areas:canPlayerAddArea(pos1, pos2, name)
+ if not canAdd then
+ return false, "You can't protect that area: "..errMsg
+ end
+
+ local id = areas:add(name, param, pos1, pos2, nil)
+ areas:save()
+
+ return true, "Area protected. ID: "..id
+ end
+})
+
+
+minetest.register_chatcommand("set_owner", {
+ params = "<PlayerName> <AreaName>",
+ description = "Protect an area beetween two positions and give"
+ .." a player access to it without setting the parent of the"
+ .." area to any existing area",
+ privs = areas.adminPrivs,
+ func = function(name, param)
+ local ownerName, areaName = param:match('^(%S+)%s(.+)$')
+
+ if not ownerName then
+ return false, "Incorrect usage, see /help set_owner."
+ end
+
+ local pos1, pos2 = areas:getPos(name)
+ if not (pos1 and pos2) then
+ return false, "You need to select an area first."
+ end
+
+ if not areas:player_exists(ownerName) then
+ return false, "The player \""
+ ..ownerName.."\" does not exist."
+ end
+
+ minetest.log("action", name.." runs /set_owner. Owner = "..ownerName..
+ " AreaName = "..areaName..
+ " StartPos = "..minetest.pos_to_string(pos1)..
+ " EndPos = " ..minetest.pos_to_string(pos2))
+
+ local id = areas:add(ownerName, areaName, pos1, pos2, nil)
+ areas:save()
+
+ minetest.chat_send_player(ownerName,
+ "You have been granted control over area #"..
+ id..". Type /list_areas to show your areas.")
+ return true, "Area protected. ID: "..id
+ end
+})
+
+
+minetest.register_chatcommand("add_owner", {
+ params = "<ParentID> <Player> <AreaName>",
+ description = "Give a player access to a sub-area beetween two"
+ .." positions that have already been protected,"
+ .." Use set_owner if you don't want the parent to be set.",
+ func = function(name, param)
+ local pid, ownerName, areaName
+ = param:match('^(%d+) ([^ ]+) (.+)$')
+
+ if not pid then
+ minetest.chat_send_player(name, "Incorrect usage, see /help add_owner")
+ return
+ end
+
+ local pos1, pos2 = areas:getPos(name)
+ if not (pos1 and pos2) then
+ return false, "You need to select an area first."
+ end
+
+ if not areas:player_exists(ownerName) then
+ return false, "The player \""..ownerName.."\" does not exist."
+ end
+
+ minetest.log("action", name.." runs /add_owner. Owner = "..ownerName..
+ " AreaName = "..areaName.." ParentID = "..pid..
+ " StartPos = "..pos1.x..","..pos1.y..","..pos1.z..
+ " EndPos = " ..pos2.x..","..pos2.y..","..pos2.z)
+
+ -- Check if this new area is inside an area owned by the player
+ pid = tonumber(pid)
+ if (not areas:isAreaOwner(pid, name)) or
+ (not areas:isSubarea(pos1, pos2, pid)) then
+ return false, "You can't protect that area."
+ end
+
+ local id = areas:add(ownerName, areaName, pos1, pos2, pid)
+ areas:save()
+
+ minetest.chat_send_player(ownerName,
+ "You have been granted control over area #"..
+ id..". Type /list_areas to show your areas.")
+ return true, "Area protected. ID: "..id
+ end
+})
+
+
+minetest.register_chatcommand("rename_area", {
+ params = "<ID> <newName>",
+ description = "Rename a area that you own",
+ func = function(name, param)
+ local id, newName = param:match("^(%d+)%s(.+)$")
+ if not id then
+ return false, "Invalid usage, see /help rename_area."
+ end
+
+ id = tonumber(id)
+ if not id then
+ return false, "That area doesn't exist."
+ end
+
+ if not areas:isAreaOwner(id, name) then
+ return true, "You don't own that area."
+ end
+
+ areas.areas[id].name = newName
+ areas:save()
+ return true, "Area renamed."
+ end
+})
+
+
+minetest.register_chatcommand("find_areas", {
+ params = "<regexp>",
+ description = "Find areas using a Lua regular expression",
+ privs = areas.adminPrivs,
+ func = function(name, param)
+ if param == "" then
+ return false, "A regular expression is required."
+ end
+
+ -- Check expression for validity
+ local function testRegExp()
+ ("Test [1]: Player (0,0,0) (0,0,0)"):find(param)
+ end
+ if not pcall(testRegExp) then
+ return false, "Invalid regular expression."
+ end
+
+ local matches = {}
+ for id, area in pairs(areas.areas) do
+ local str = areas:toString(id)
+ if str:find(param) then
+ table.insert(matches, str)
+ end
+ end
+ if #matches > 0 then
+ return true, table.concat(matches, "\n")
+ else
+ return true, "No matches found."
+ end
+ end
+})
+
+
+minetest.register_chatcommand("list_areas", {
+ description = "List your areas, or all areas if you are an admin.",
+ func = function(name, param)
+ local admin = minetest.check_player_privs(name, areas.adminPrivs)
+ local areaStrings = {}
+ for id, area in pairs(areas.areas) do
+ if admin or areas:isAreaOwner(id, name) then
+ table.insert(areaStrings, areas:toString(id))
+ end
+ end
+ if #areaStrings == 0 then
+ return true, "No visible areas."
+ end
+ return true, table.concat(areaStrings, "\n")
+ end
+})
+
+
+minetest.register_chatcommand("recursive_remove_areas", {
+ params = "<id>",
+ description = "Recursively remove areas using an id",
+ func = function(name, param)
+ local id = tonumber(param)
+ if not id then
+ return false, "Invalid usage, see"
+ .." /help recursive_remove_areas"
+ end
+
+ if not areas:isAreaOwner(id, name) then
+ return false, "Area "..id.." does not exist or is"
+ .." not owned by you."
+ end
+
+ areas:remove(id, true)
+ areas:save()
+ return true, "Removed area "..id.." and it's sub areas."
+ end
+})
+
+
+minetest.register_chatcommand("remove_area", {
+ params = "<id>",
+ description = "Remove an area using an id",
+ func = function(name, param)
+ local id = tonumber(param)
+ if not id then
+ return false, "Invalid usage, see /help remove_area"
+ end
+
+ if not areas:isAreaOwner(id, name) then
+ return false, "Area "..id.." does not exist or"
+ .." is not owned by you."
+ end
+
+ areas:remove(id)
+ areas:save()
+ return true, "Removed area "..id
+ end
+})
+
+
+minetest.register_chatcommand("change_owner", {
+ params = "<ID> <NewOwner>",
+ description = "Change the owner of an area using it's ID",
+ func = function(name, param)
+ local id, newOwner = param:match("^(%d+)%s(%S+)$")
+ if not id then
+ return false, "Invalid usage, see"
+ .." /help change_owner."
+ end
+
+ if not areas:player_exists(newOwner) then
+ return false, "The player \""..newOwner
+ .."\" does not exist."
+ end
+
+ id = tonumber(id)
+ if not areas:isAreaOwner(id, name) then
+ return false, "Area "..id.." does not exist"
+ .." or is not owned by you."
+ end
+ areas.areas[id].owner = newOwner
+ areas:save()
+ minetest.chat_send_player(newOwner,
+ ("%s has given you control over the area %q (ID %d).")
+ :format(name, areas.areas[id].name, id))
+ return true, "Owner changed."
+ end
+})
+
+
+minetest.register_chatcommand("area_open", {
+ params = "<ID>",
+ description = "Toggle an area open (anyone can interact) or closed",
+ func = function(name, param)
+ local id = tonumber(param)
+ if not id then
+ return false, "Invalid usage, see /help area_open."
+ end
+
+ if not areas:isAreaOwner(id, name) then
+ return false, "Area "..id.." does not exist"
+ .." or is not owned by you."
+ end
+ local open = not areas.areas[id].open
+ -- Save false as nil to avoid inflating the DB.
+ areas.areas[id].open = open or nil
+ areas:save()
+ return true, ("Area %s."):format(open and "opened" or "closed")
+ end
+})
+
+
+minetest.register_chatcommand("move_area", {
+ params = "<ID>",
+ description = "Move (or resize) an area to the current positions.",
+ privs = areas.adminPrivs,
+ func = function(name, param)
+ local id = tonumber(param)
+ if not id then
+ return false, "Invalid usage, see /help move_area."
+ end
+
+ local area = areas.areas[id]
+ if not area then
+ return false, "Area does not exist."
+ end
+
+ local pos1, pos2 = areas:getPos(name)
+ if not pos1 then
+ return false, "You need to select an area first."
+ end
+
+ area.pos1 = pos1
+ area.pos2 = pos2
+ areas:save()
+ return true, "Area successfully moved."
+ end,
+})
+
+minetest.register_chatcommand("area_info", {
+ description = "Get information about area configuration and usage.",
+ func = function(name, param)
+ local lines = {}
+ local privs = minetest.get_player_privs(name)
+
+ -- Short (and fast to access) names
+ local cfg = areas.config
+ local self_prot = cfg.self_protection
+ local prot_priv = cfg.self_protection_privilege
+ local limit = cfg.self_protection_max_areas
+ local limit_high = cfg.self_protection_max_areas_high
+ local size_limit = cfg.self_protection_max_size
+ local size_limit_high = cfg.self_protection_max_size_high
+
+ local has_high_limit = privs.areas_high_limit
+ local has_prot_priv = not prot_priv or privs[prot_priv]
+ local can_prot = privs.areas or (self_prot and has_prot_priv)
+ local max_count = can_prot and
+ (has_high_limit and limit_high or limit) or 0
+ local max_size = has_high_limit and
+ size_limit_high or size_limit
+
+ -- Privilege information
+ local self_prot_line = ("Self protection is %sabled"):format(
+ self_prot and "en" or "dis")
+ if self_prot and prot_priv then
+ self_prot_line = self_prot_line..
+ (" %s have the neccessary privilege (%q).")
+ :format(
+ has_prot_priv and "and you" or
+ "but you don't",
+ prot_priv)
+ else
+ self_prot_line = self_prot_line.."."
+ end
+ table.insert(lines, self_prot_line)
+ if privs.areas then
+ table.insert(lines, "You are an area"..
+ " administrator (\"areas\" privilege).")
+ elseif has_high_limit then
+ table.insert(lines,
+ "You have extended area protection"..
+ " limits (\"areas_high_limit\" privilege).")
+ end
+
+ -- Area count
+ local area_num = 0
+ for id, area in pairs(areas.areas) do
+ if area.owner == name then
+ area_num = area_num + 1
+ end
+ end
+ local count_line = ("You have %d area%s"):format(
+ area_num, area_num == 1 and "" or "s")
+ if privs.areas then
+ count_line = count_line..
+ " and have no area protection limits."
+ elseif can_prot then
+ count_line = count_line..(", out of a maximum of %d.")
+ :format(max_count)
+ end
+ table.insert(lines, count_line)
+
+ -- Area size limits
+ local function size_info(str, size)
+ table.insert(lines, ("%s spanning up to %dx%dx%d.")
+ :format(str, size.x, size.y, size.z))
+ end
+ local function priv_limit_info(priv, max_count, max_size)
+ size_info(("Players with the %q privilege"..
+ " can protect up to %d areas"):format(
+ priv, max_count), max_size)
+ end
+ if self_prot then
+ if privs.areas then
+ priv_limit_info(prot_priv,
+ limit, size_limit)
+ priv_limit_info("areas_high_limit",
+ limit_high, size_limit_high)
+ elseif has_prot_priv then
+ size_info("You can protect areas", max_size)
+ end
+ end
+
+ return true, table.concat(lines, "\n")
+ end,
+})
+
diff --git a/areas/hud.lua b/areas/hud.lua
new file mode 100644
index 0000000..4908b92
--- /dev/null
+++ b/areas/hud.lua
@@ -0,0 +1,46 @@
+-- This is inspired by the landrush mod by Bremaweb
+
+areas.hud = {}
+
+minetest.register_globalstep(function(dtime)
+ for _, player in pairs(minetest.get_connected_players()) do
+ local name = player:get_player_name()
+ local pos = vector.round(player:getpos())
+ local areaStrings = {}
+ for id, area in pairs(areas:getAreasAtPos(pos)) do
+ table.insert(areaStrings, ("%s [%u] (%s%s)")
+ :format(area.name, id, area.owner,
+ area.open and ":open" or ""))
+ end
+ local areaString = "Areas:"
+ if #areaStrings > 0 then
+ areaString = areaString.."\n"..
+ table.concat(areaStrings, "\n")
+ end
+ local hud = areas.hud[name]
+ if not hud then
+ hud = {}
+ areas.hud[name] = hud
+ hud.areasId = player:hud_add({
+ hud_elem_type = "text",
+ name = "Areas",
+ number = 0xFFFFFF,
+ position = {x=0, y=1},
+ offset = {x=8, y=-8},
+ text = areaString,
+ scale = {x=200, y=60},
+ alignment = {x=1, y=-1},
+ })
+ hud.oldAreas = areaString
+ return
+ elseif hud.oldAreas ~= areaString then
+ player:hud_change(hud.areasId, "text", areaString)
+ hud.oldAreas = areaString
+ end
+ end
+end)
+
+minetest.register_on_leaveplayer(function(player)
+ areas.hud[player:get_player_name()] = nil
+end)
+
diff --git a/areas/init.lua b/areas/init.lua
new file mode 100644
index 0000000..2c10cdd
--- /dev/null
+++ b/areas/init.lua
@@ -0,0 +1,39 @@
+-- Areas mod by ShadowNinja
+-- Based on node_ownership
+-- License: LGPLv2+
+
+areas = {}
+
+areas.adminPrivs = {areas=true}
+areas.startTime = os.clock()
+
+areas.modpath = minetest.get_modpath("areas")
+dofile(areas.modpath.."/settings.lua")
+dofile(areas.modpath.."/api.lua")
+dofile(areas.modpath.."/internal.lua")
+dofile(areas.modpath.."/chatcommands.lua")
+dofile(areas.modpath.."/pos.lua")
+dofile(areas.modpath.."/interact.lua")
+dofile(areas.modpath.."/legacy.lua")
+dofile(areas.modpath.."/hud.lua")
+
+areas:load()
+
+minetest.register_privilege("areas", {
+ description = "Can administer areas."
+})
+minetest.register_privilege("areas_high_limit", {
+ description = "Can can more, bigger areas."
+})
+
+if not minetest.registered_privileges[areas.config.self_protection_privilege] then
+ minetest.register_privilege(areas.config.self_protection_privilege, {
+ description = "Can protect areas.",
+ })
+end
+
+if minetest.setting_getbool("log_mod") then
+ local diffTime = os.clock() - areas.startTime
+ minetest.log("action", "areas loaded in "..diffTime.."s.")
+end
+
diff --git a/areas/interact.lua b/areas/interact.lua
new file mode 100644
index 0000000..2e54800
--- /dev/null
+++ b/areas/interact.lua
@@ -0,0 +1,19 @@
+
+local old_is_protected = minetest.is_protected
+function minetest.is_protected(pos, name)
+ if not areas:canInteract(pos, name) then
+ return true
+ end
+ return old_is_protected(pos, name)
+end
+
+minetest.register_on_protection_violation(function(pos, name)
+ if not areas:canInteract(pos, name) then
+ local owners = areas:getNodeOwners(pos)
+ minetest.chat_send_player(name,
+ ("%s is protected by %s."):format(
+ minetest.pos_to_string(pos),
+ table.concat(owners, ", ")))
+ end
+end)
+
diff --git a/areas/internal.lua b/areas/internal.lua
new file mode 100644
index 0000000..ea94a27
--- /dev/null
+++ b/areas/internal.lua
@@ -0,0 +1,265 @@
+
+function areas:player_exists(name)
+ return minetest.auth_table[name] ~= nil
+end
+
+-- Save the areas table to a file
+function areas:save()
+ local datastr = minetest.serialize(self.areas)
+ if not datastr then
+ minetest.log("error", "[areas] Failed to serialize area data!")
+ return
+ end
+ local file, err = io.open(self.config.filename, "w")
+ if err then
+ return err
+ end
+ file:write(datastr)
+ file:close()
+end
+
+-- Load the areas table from the save file
+function areas:load()
+ local file, err = io.open(self.config.filename, "r")
+ if err then
+ self.areas = self.areas or {}
+ return err
+ end
+ self.areas = minetest.deserialize(file:read("*a"))
+ if type(self.areas) ~= "table" then
+ self.areas = {}
+ end
+ file:close()
+ self:populateStore()
+end
+
+--- Checks an AreaStore ID.
+-- Deletes the AreaStore (falling back to the iterative method)
+-- and prints an error message if the ID is invalid.
+-- @return Whether the ID was valid.
+function areas:checkAreaStoreId(sid)
+ if not sid then
+ minetest.log("error", "AreaStore failed to find an ID for an "
+ .."area! Falling back to iterative area checking.")
+ self.store = nil
+ self.store_ids = nil
+ end
+ return sid and true or false
+end
+
+-- Populates the AreaStore after loading, if needed.
+function areas:populateStore()
+ if not rawget(_G, "AreaStore") then
+ return
+ end
+ local store = AreaStore()
+ local store_ids = {}
+ for id, area in pairs(areas.areas) do
+ local sid = store:insert_area(area.pos1,
+ area.pos2, tostring(id))
+ if not self:checkAreaStoreId(sid) then
+ return
+ end
+ store_ids[id] = sid
+ end
+ self.store = store
+ self.store_ids = store_ids
+end
+
+-- Finds the first usable index in a table
+-- Eg: {[1]=false,[4]=true} -> 2
+local function findFirstUnusedIndex(t)
+ local i = 0
+ repeat i = i + 1
+ until t[i] == nil
+ return i
+end
+
+--- Add a area.
+-- @return The new area's ID.
+function areas:add(owner, name, pos1, pos2, parent)
+ local id = findFirstUnusedIndex(self.areas)
+ self.areas[id] = {
+ name = name,
+ pos1 = pos1,
+ pos2 = pos2,
+ owner = owner,
+ parent = parent
+ }
+ -- Add to AreaStore
+ if self.store then
+ local sid = self.store:insert_area(pos1, pos2, tostring(id))
+ if self:checkAreaStoreId(sid) then
+ self.store_ids[id] = sid
+ end
+ end
+ return id
+end
+
+--- Remove a area, and optionally it's children recursively.
+-- If a area is deleted non-recursively the children will
+-- have the removed area's parent as their new parent.
+function areas:remove(id, recurse)
+ if recurse then
+ -- Recursively find child entries and remove them
+ local cids = self:getChildren(id)
+ for _, cid in pairs(cids) do
+ self:remove(cid, true)
+ end
+ else
+ -- Update parents
+ local parent = self.areas[id].parent
+ local children = self:getChildren(id)
+ for _, cid in pairs(children) do
+ -- The subarea parent will be niled out if the
+ -- removed area does not have a parent
+ self.areas[cid].parent = parent
+
+ end
+ end
+
+ -- Remove main entry
+ self.areas[id] = nil
+
+ -- Remove from AreaStore
+ if self.store then
+ self.store:remove_area(self.store_ids[id])
+ self.store_ids[id] = nil
+ end
+end
+
+-- Checks if a area between two points is entirely contained by another area
+function areas:isSubarea(pos1, pos2, id)
+ local area = self.areas[id]
+ if not area then
+ return false
+ end
+ local p1, p2 = area.pos1, area.pos2
+ if (pos1.x >= p1.x and pos1.x <= p2.x) and
+ (pos2.x >= p1.x and pos2.x <= p2.x) and
+ (pos1.y >= p1.y and pos1.y <= p2.y) and
+ (pos2.y >= p1.y and pos2.y <= p2.y) and
+ (pos1.z >= p1.z and pos1.z <= p2.z) and
+ (pos2.z >= p1.z and pos2.z <= p2.z) then
+ return true
+ end
+end
+
+-- Returns a table (list) of children of an area given it's identifier
+function areas:getChildren(id)
+ local children = {}
+ for cid, area in pairs(self.areas) do
+ if area.parent and area.parent == id then
+ table.insert(children, cid)
+ end
+ end
+ return children
+end
+
+-- Checks if the user has sufficient privileges.
+-- If the player is not a administrator it also checks
+-- if the area intersects other areas that they do not own.
+-- Also checks the size of the area and if the user already
+-- has more than max_areas.
+function areas:canPlayerAddArea(pos1, pos2, name)
+ local privs = minetest.get_player_privs(name)
+ if privs.areas then
+ return true
+ end
+
+ -- Check self protection privilege, if it is enabled,
+ -- and if the area is too big.
+ if not self.config.self_protection or
+ not privs[areas.config.self_protection_privilege] then
+ return false, "Self protection is disabled or you do not have"
+ .." the necessary privilege."
+ end
+
+ local max_size = privs.areas_high_limit and
+ self.config.self_protection_max_size_high or
+ self.config.self_protection_max_size
+ if
+ (pos2.x - pos1.x) > max_size.x or
+ (pos2.y - pos1.y) > max_size.y or
+ (pos2.z - pos1.z) > max_size.z then
+ return false, "Area is too big."
+ end
+
+ -- Check number of areas the user has and make sure it not above the max
+ local count = 0
+ for _, area in pairs(self.areas) do
+ if area.owner == name then
+ count = count + 1
+ end
+ end
+ local max_areas = privs.areas_high_limit and
+ self.config.self_protection_max_areas_high or
+ self.config.self_protection_max_areas
+ if count >= max_areas then
+ return false, "You have reached the maximum amount of"
+ .." areas that you are allowed to protect."
+ end
+
+ -- Check intersecting areas
+ local can, id = self:canInteractInArea(pos1, pos2, name)
+ if not can then
+ local area = self.areas[id]
+ return false, ("The area intersects with %s [%u] (%s).")
+ :format(area.name, id, area.owner)
+ end
+
+ return true
+end
+
+-- Given a id returns a string in the format:
+-- "name [id]: owner (x1, y1, z1) (x2, y2, z2) -> children"
+function areas:toString(id)
+ local area = self.areas[id]
+ local message = ("%s [%d]: %s %s %s"):format(
+ area.name, id, area.owner,
+ minetest.pos_to_string(area.pos1),
+ minetest.pos_to_string(area.pos2))
+
+ local children = areas:getChildren(id)
+ if #children > 0 then
+ message = message.." -> "..table.concat(children, ", ")
+ end
+ return message
+end
+
+-- Re-order areas in table by their identifiers
+function areas:sort()
+ local sa = {}
+ for k, area in pairs(self.areas) do
+ if not area.parent then
+ table.insert(sa, area)
+ local newid = #sa
+ for _, subarea in pairs(self.areas) do
+ if subarea.parent == k then
+ subarea.parent = newid
+ table.insert(sa, subarea)
+ end
+ end
+ end
+ end
+ self.areas = sa
+end
+
+-- Checks if a player owns an area or a parent of it
+function areas:isAreaOwner(id, name)
+ local cur = self.areas[id]
+ if cur and minetest.check_player_privs(name, self.adminPrivs) then
+ return true
+ end
+ while cur do
+ if cur.owner == name then
+ return true
+ elseif cur.parent then
+ cur = self.areas[cur.parent]
+ else
+ return false
+ end
+ end
+ return false
+end
+
diff --git a/areas/legacy.lua b/areas/legacy.lua
new file mode 100644
index 0000000..83b3d27
--- /dev/null
+++ b/areas/legacy.lua
@@ -0,0 +1,138 @@
+-- This file contains functions to convert from
+-- the old areas format and other compatability code.
+
+minetest.register_chatcommand("legacy_load_areas", {
+ params = "<version>",
+ description = "Loads, converts, and saves the areas from"
+ .." a legacy save file.",
+ privs = {areas=true, server=true},
+ func = function(name, param)
+ minetest.chat_send_player(name, "Converting areas...")
+ local version = tonumber(param)
+ if version == 0 then
+ err = areas:node_ownership_load()
+ if err then
+ minetest.chat_send_player(name, "Error loading legacy file: "..err)
+ return
+ end
+ else
+ minetest.chat_send_player(name, "Invalid version number. (0 allowed)")
+ return
+ end
+ minetest.chat_send_player(name, "Legacy file loaded.")
+
+ for k, area in pairs(areas.areas) do
+ -- New position format
+ area.pos1 = {x=area.x1, y=area.y1, z=area.z1}
+ area.pos2 = {x=area.x2, y=area.y2, z=area.z2}
+
+ area.x1, area.y1, area.z1,
+ area.x2, area.y2, area.z2 =
+ nil, nil, nil, nil, nil, nil
+
+ -- Area positions sorting
+ areas:sortPos(area.pos1, area.pos2)
+
+ -- Add name
+ area.name = "unnamed"
+
+ -- Remove ID
+ area.id = nil
+ end
+ minetest.chat_send_player(name, "Table format updated.")
+
+ areas:save()
+ minetest.chat_send_player(name, "Converted areas saved. Done.")
+ end
+})
+
+function areas:node_ownership_load()
+ local filename = minetest.get_worldpath().."/owners.tbl"
+ tables, err = loadfile(filename)
+ if err then
+ return err
+ end
+
+ tables = tables()
+ for idx = 1, #tables do
+ local tolinkv, tolinki = {}, {}
+ for i, v in pairs(tables[idx]) do
+ if type(v) == "table" and tables[v[1]] then
+ table.insert(tolinkv, {i, tables[v[1]]})
+ end
+ if type(i) == "table" and tables[i[1]] then
+ table.insert(tolinki, {i, tables[i[1]]})
+ end
+ end
+ -- link values, first due to possible changes of indices
+ for _, v in ipairs(tolinkv) do
+ tables[idx][v[1]] = v[2]
+ end
+ -- link indices
+ for _, v in ipairs(tolinki) do
+ tables[idx][v[2]], tables[idx][v[1]] = tables[idx][v[1]], nil
+ end
+ end
+ self.areas = tables[1]
+end
+
+-- Returns the name of the first player that owns an area
+function areas.getNodeOwnerName(pos)
+ for id, area in pairs(areas:getAreasAtPos(pos)) do
+ return area.owner
+ end
+ return false
+end
+
+-- Checks if a node is owned by you
+function areas.isNodeOwner(pos, name)
+ if minetest.check_player_privs(name, areas.adminPrivs) then
+ return true
+ end
+ for id, area in pairs(areas:getAreasAtPos(pos)) do
+ if name == area.owner then
+ return true
+ end
+ end
+ return false
+end
+
+-- Checks if an area has an owner
+function areas.hasOwner(pos)
+ for id, area in pairs(areas:getAreasAtPos(pos)) do
+ return true
+ end
+ return false
+end
+
+IsPlayerNodeOwner = areas.isNodeOwner
+GetNodeOwnerName = areas.getNodeOwnerName
+HasOwner = areas.hasOwner
+
+-- This is entirely untested and may break in strange and new ways.
+if areas.config.legacy_table then
+ owner_defs = setmetatable({}, {
+ __index = function(table, key)
+ local a = rawget(areas.areas, key)
+ if not a then return a end
+ local b = {}
+ for k, v in pairs(a) do b[k] = v end
+ b.x1, b.y1, b.z1 = b.pos1.x, b.pos1.y, b.pos1.z
+ b.x2, b.y1, b.z2 = b.pos2.x, b.pos2.y, b.pos2.z
+ b.pos1, b.pos2 = nil, nil
+ b.id = key
+ return b
+ end,
+ __newindex = function(table, key, value)
+ local a = value
+ a.pos1, a.pos2 = {x=a.x1, y=a.y1, z=a.z1},
+ {x=a.x2, y=a.y2, z=a.z2}
+ a.x1, a.y1, a.z1, a.x2, a.y2, a.z2 =
+ nil, nil, nil, nil, nil, nil
+ a.name = a.name or "unnamed"
+ a.id = nil
+ return rawset(areas.areas, key, a)
+ end
+ })
+end
+
diff --git a/areas/pos.lua b/areas/pos.lua
new file mode 100644
index 0000000..8d3e6fe
--- /dev/null
+++ b/areas/pos.lua
@@ -0,0 +1,255 @@
+
+-- I could depend on WorldEdit for this, but you need to have the 'worldedit'
+-- permission to use those commands and you don't have
+-- /area_pos{1,2} [X Y Z|X,Y,Z].
+-- Since this is mostly copied from WorldEdit it is mostly
+-- licensed under the AGPL. (select_area is a exception)
+
+areas.marker1 = {}
+areas.marker2 = {}
+areas.set_pos = {}
+areas.pos1 = {}
+areas.pos2 = {}
+
+minetest.register_chatcommand("select_area", {
+ params = "<ID>",
+ description = "Select a area by id.",
+ func = function(name, param)
+ local id = tonumber(param)
+ if not id then
+ return false, "Invalid usage, see /help select_area."
+ end
+ if not areas.areas[id] then
+ return false, "The area "..id.." does not exist."
+ end
+
+ areas:setPos1(name, areas.areas[id].pos1)
+ areas:setPos2(name, areas.areas[id].pos2)
+ return true, "Area "..id.." selected."
+ end,
+})
+
+minetest.register_chatcommand("area_pos1", {
+ params = "[X Y Z|X,Y,Z]",
+ description = "Set area protection region position 1 to your"
+ .." location or the one specified",
+ privs = {},
+ func = function(name, param)
+ local pos = nil
+ local found, _, x, y, z = param:find(
+ "^(-?%d+)[, ](-?%d+)[, ](-?%d+)$")
+ if found then
+ pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)}
+ elseif param == "" then
+ local player = minetest.get_player_by_name(name)
+ if player then
+ pos = player:getpos()
+ else
+ return false, "Unable to get position."
+ end
+ else
+ return false, "Invalid usage, see /help area_pos1."
+ end
+ pos = vector.round(pos)
+ areas:setPos1(name, pos)
+ return true, "Area position 1 set to "
+ ..minetest.pos_to_string(pos)
+ end,
+})
+
+minetest.register_chatcommand("area_pos2", {
+ params = "[X Y Z|X,Y,Z]",
+ description = "Set area protection region position 2 to your"
+ .." location or the one specified",
+ func = function(name, param)
+ local pos = nil
+ local found, _, x, y, z = param:find(
+ "^(-?%d+)[, ](-?%d+)[, ](-?%d+)$")
+ if found then
+ pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)}
+ elseif param == "" then
+ local player = minetest.get_player_by_name(name)
+ if player then
+ pos = player:getpos()
+ else
+ return false, "Unable to get position."
+ end
+ else
+ return false, "Invalid usage, see /help area_pos2."
+ end
+ pos = vector.round(pos)
+ areas:setPos2(name, pos)
+ return true, "Area position 2 set to "
+ ..minetest.pos_to_string(pos)
+ end,
+})
+
+
+minetest.register_chatcommand("area_pos", {
+ params = "set/set1/set2/get",
+ description = "Set area protection region, position 1, or position 2"
+ .." by punching nodes, or display the region",
+ func = function(name, param)
+ if param == "set" then -- Set both area positions
+ areas.set_pos[name] = "pos1"
+ return true, "Select positions by punching two nodes."
+ elseif param == "set1" then -- Set area position 1
+ areas.set_pos[name] = "pos1only"
+ return true, "Select position 1 by punching a node."
+ elseif param == "set2" then -- Set area position 2
+ areas.set_pos[name] = "pos2"
+ return true, "Select position 2 by punching a node."
+ elseif param == "get" then -- Display current area positions
+ local pos1str, pos2str = "Position 1: ", "Position 2: "
+ if areas.pos1[name] then
+ pos1str = pos1str..minetest.pos_to_string(areas.pos1[name])
+ else
+ pos1str = pos1str.."<not set>"
+ end
+ if areas.pos2[name] then
+ pos2str = pos2str..minetest.pos_to_string(areas.pos2[name])
+ else
+ pos2str = pos2str.."<not set>"
+ end
+ return true, pos1str.."\n"..pos2str
+ else
+ return false, "Unknown subcommand: "..param
+ end
+ end,
+})
+
+function areas:getPos(playerName)
+ local pos1, pos2 = areas.pos1[playerName], areas.pos2[playerName]
+ if not (pos1 and pos2) then
+ return nil
+ end
+ -- Copy positions so that the area table doesn't contain multiple
+ -- references to the same position.
+ pos1, pos2 = vector.new(pos1), vector.new(pos2)
+ return areas:sortPos(pos1, pos2)
+end
+
+function areas:setPos1(playerName, pos)
+ areas.pos1[playerName] = pos
+ areas.markPos1(playerName)
+end
+
+function areas:setPos2(playerName, pos)
+ areas.pos2[playerName] = pos
+ areas.markPos2(playerName)
+end
+
+
+minetest.register_on_punchnode(function(pos, node, puncher)
+ local name = puncher:get_player_name()
+ -- Currently setting position
+ if name ~= "" and areas.set_pos[name] then
+ if areas.set_pos[name] == "pos1" then
+ areas.pos1[name] = pos
+ areas.markPos1(name)
+ areas.set_pos[name] = "pos2"
+ minetest.chat_send_player(name,
+ "Position 1 set to "
+ ..minetest.pos_to_string(pos))
+ elseif areas.set_pos[name] == "pos1only" then
+ areas.pos1[name] = pos
+ areas.markPos1(name)
+ areas.set_pos[name] = nil
+ minetest.chat_send_player(name,
+ "Position 1 set to "
+ ..minetest.pos_to_string(pos))
+ elseif areas.set_pos[name] == "pos2" then
+ areas.pos2[name] = pos
+ areas.markPos2(name)
+ areas.set_pos[name] = nil
+ minetest.chat_send_player(name,
+ "Position 2 set to "
+ ..minetest.pos_to_string(pos))
+ end
+ end
+end)
+
+-- Modifies positions `pos1` and `pos2` so that each component of `pos1`
+-- is less than or equal to its corresponding component of `pos2`,
+-- returning the two positions.
+function areas:sortPos(pos1, pos2)
+ if pos1.x > pos2.x then
+ pos2.x, pos1.x = pos1.x, pos2.x
+ end
+ if pos1.y > pos2.y then
+ pos2.y, pos1.y = pos1.y, pos2.y
+ end
+ if pos1.z > pos2.z then
+ pos2.z, pos1.z = pos1.z, pos2.z
+ end
+ return pos1, pos2
+end
+
+-- Marks area position 1
+areas.markPos1 = function(name)
+ local pos = areas.pos1[name]
+ if areas.marker1[name] ~= nil then -- Marker already exists
+ areas.marker1[name]:remove() -- Remove marker
+ areas.marker1[name] = nil
+ end
+ if pos ~= nil then -- Add marker
+ areas.marker1[name] = minetest.add_entity(pos, "areas:pos1")
+ areas.marker1[name]:get_luaentity().active = true
+ end
+end
+
+-- Marks area position 2
+areas.markPos2 = function(name)
+ local pos = areas.pos2[name]
+ if areas.marker2[name] ~= nil then -- Marker already exists
+ areas.marker2[name]:remove() -- Remove marker
+ areas.marker2[name] = nil
+ end
+ if pos ~= nil then -- Add marker
+ areas.marker2[name] = minetest.add_entity(pos, "areas:pos2")
+ areas.marker2[name]:get_luaentity().active = true
+ end
+end
+
+minetest.register_entity("areas:pos1", {
+ initial_properties = {
+ visual = "cube",
+ visual_size = {x=1.1, y=1.1},
+ textures = {"areas_pos1.png", "areas_pos1.png",
+ "areas_pos1.png", "areas_pos1.png",
+ "areas_pos1.png", "areas_pos1.png"},
+ collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
+ },
+ on_step = function(self, dtime)
+ if self.active == nil then
+ self.object:remove()
+ end
+ end,
+ on_punch = function(self, hitter)
+ self.object:remove()
+ local name = hitter:get_player_name()
+ areas.marker1[name] = nil
+ end,
+})
+
+minetest.register_entity("areas:pos2", {
+ initial_properties = {
+ visual = "cube",
+ visual_size = {x=1.1, y=1.1},
+ textures = {"areas_pos2.png", "areas_pos2.png",
+ "areas_pos2.png", "areas_pos2.png",
+ "areas_pos2.png", "areas_pos2.png"},
+ collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
+ },
+ on_step = function(self, dtime)
+ if self.active == nil then
+ self.object:remove()
+ end
+ end,
+ on_punch = function(self, hitter)
+ self.object:remove()
+ local name = hitter:get_player_name()
+ areas.marker2[name] = nil
+ end,
+})
+
diff --git a/areas/settings.lua b/areas/settings.lua
new file mode 100644
index 0000000..140a655
--- /dev/null
+++ b/areas/settings.lua
@@ -0,0 +1,43 @@
+local world_path = minetest.get_worldpath()
+
+areas.config = {}
+
+local function setting(tp, name, default)
+ local full_name = "areas."..name
+ local value
+ if tp == "boolean" then
+ value = minetest.setting_getbool(full_name)
+ elseif tp == "string" then
+ value = minetest.setting_get(full_name)
+ elseif tp == "position" then
+ value = minetest.setting_get_pos(full_name)
+ elseif tp == "number" then
+ value = tonumber(minetest.setting_get(full_name))
+ else
+ error("Invalid setting type!")
+ end
+ if value == nil then
+ value = default
+ end
+ areas.config[name] = value
+end
+
+--------------
+-- Settings --
+--------------
+
+setting("string", "filename", world_path.."/areas.dat")
+
+-- Allow players with a privilege create their own areas
+-- within the maximum size and number.
+setting("boolean", "self_protection", false)
+setting("string", "self_protection_privilege", "interact")
+setting("position", "self_protection_max_size", {x=64, y=128, z=64})
+setting("number", "self_protection_max_areas", 4)
+-- For players with the areas_high_limit privilege.
+setting("position", "self_protection_max_size_high", {x=512, y=512, z=512})
+setting("number", "self_protection_max_areas_high", 32)
+
+-- legacy_table (owner_defs) compatibility. Untested and has known issues.
+setting("boolean", "legacy_table", false)
+
diff --git a/areas/textures/areas_pos1.png b/areas/textures/areas_pos1.png
new file mode 100644
index 0000000..4c304aa
--- /dev/null
+++ b/areas/textures/areas_pos1.png
Binary files differ
diff --git a/areas/textures/areas_pos2.png b/areas/textures/areas_pos2.png
new file mode 100644
index 0000000..1502f16
--- /dev/null
+++ b/areas/textures/areas_pos2.png
Binary files differ
diff --git a/bedrock/LICENSE.txt b/bedrock/LICENSE.txt
new file mode 100644
index 0000000..726257d
--- /dev/null
+++ b/bedrock/LICENSE.txt
@@ -0,0 +1,13 @@
++---- zlib/libpng license ----+
+
+Copyright (c) 2013-2014 Calinou and contributors
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
diff --git a/bedrock/depends.txt b/bedrock/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/bedrock/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/bedrock/init.lua b/bedrock/init.lua
new file mode 100644
index 0000000..1f4bc1a
--- /dev/null
+++ b/bedrock/init.lua
@@ -0,0 +1,41 @@
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "bedrock:bedrock",
+ wherein = "default:stone",
+ clust_scarcity = 1 * 1 * 1,
+ clust_num_ores = 5,
+ clust_size = 2,
+ y_min = -30912, -- Engine changes can modify this value.
+ y_max = -30656, -- This ensures the bottom of the world is not even loaded.
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "bedrock:deepstone",
+ wherein = "default:stone",
+ clust_scarcity = 1 * 1 * 1,
+ clust_num_ores = 5,
+ clust_size = 2,
+ y_min = -30656,
+ y_max = -30000,
+})
+
+minetest.register_node("bedrock:bedrock", {
+ description = "Bedrock",
+ tiles = {"bedrock_bedrock.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = 1}, -- For Map Tools' admin pickaxe.
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("bedrock:deepstone", {
+ description = "Deepstone",
+ tiles = {"bedrock_deepstone.png"},
+ drop = "default:stone", -- Intended.
+ groups = {cracky = 1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+if minetest.setting_getbool("log_mods") then
+ minetest.log("action", "[bedrock] loaded.")
+end
diff --git a/bedrock/textures/bedrock_bedrock.png b/bedrock/textures/bedrock_bedrock.png
new file mode 100644
index 0000000..09495f0
--- /dev/null
+++ b/bedrock/textures/bedrock_bedrock.png
Binary files differ
diff --git a/bedrock/textures/bedrock_deepstone.png b/bedrock/textures/bedrock_deepstone.png
new file mode 100644
index 0000000..f2e1e3b
--- /dev/null
+++ b/bedrock/textures/bedrock_deepstone.png
Binary files differ
diff --git a/bees/depends.txt b/bees/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/bees/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/bees/images/craft_bees_extractor.png b/bees/images/craft_bees_extractor.png
new file mode 100644
index 0000000..5f93f88
--- /dev/null
+++ b/bees/images/craft_bees_extractor.png
Binary files differ
diff --git a/bees/images/craft_bees_frame.png b/bees/images/craft_bees_frame.png
new file mode 100644
index 0000000..0a955f6
--- /dev/null
+++ b/bees/images/craft_bees_frame.png
Binary files differ
diff --git a/bees/images/craft_bees_grafting_tool.png b/bees/images/craft_bees_grafting_tool.png
new file mode 100644
index 0000000..98bbec0
--- /dev/null
+++ b/bees/images/craft_bees_grafting_tool.png
Binary files differ
diff --git a/bees/images/craft_bees_hive.png b/bees/images/craft_bees_hive.png
new file mode 100644
index 0000000..782a0e8
--- /dev/null
+++ b/bees/images/craft_bees_hive.png
Binary files differ
diff --git a/bees/images/craft_bees_smoker.png b/bees/images/craft_bees_smoker.png
new file mode 100644
index 0000000..70b1104
--- /dev/null
+++ b/bees/images/craft_bees_smoker.png
Binary files differ
diff --git a/bees/images/screen_0.png b/bees/images/screen_0.png
new file mode 100644
index 0000000..b9c9373
--- /dev/null
+++ b/bees/images/screen_0.png
Binary files differ
diff --git a/bees/init.lua b/bees/init.lua
new file mode 100644
index 0000000..2c22f19
--- /dev/null
+++ b/bees/init.lua
@@ -0,0 +1,804 @@
+--Bees
+------
+--Author Bas080
+--Version 2.2
+--License WTFPL
+
+--VARIABLES
+ local bees = {}
+ local formspecs = {}
+
+--FUNCTIONS
+ function formspecs.hive_wild(pos, grafting)
+ local spos = pos.x .. ',' .. pos.y .. ',' ..pos.z
+ local formspec =
+ 'size[8,9]'..
+ 'list[nodemeta:'.. spos .. ';combs;1.5,3;5,1;]'..
+ 'list[current_player;main;0,5;8,4;]'
+ if grafting then
+ formspec = formspec..'list[nodemeta:'.. spos .. ';queen;3.5,1;1,1;]'
+ end
+ return formspec
+ end
+
+ function formspecs.hive_artificial(pos)
+ local spos = pos.x..','..pos.y..','..pos.z
+ local formspec =
+ 'size[8,9]'..
+ 'list[nodemeta:'..spos..';queen;3.5,1;1,1;]'..
+ 'list[nodemeta:'..spos..';frames;0,3;8,1;]'..
+ 'list[current_player;main;0,5;8,4;]'
+ return formspec
+ end
+
+ function bees.polinate_flower(pos, flower)
+ local spawn_pos = { x=pos.x+math.random(-3,3) , y=pos.y+math.random(-3,3) , z=pos.z+math.random(-3,3) }
+ local floor_pos = { x=spawn_pos.x , y=spawn_pos.y-1 , z=spawn_pos.z }
+ local spawn = minetest.get_node(spawn_pos).name
+ local floor = minetest.get_node(floor_pos).name
+ if floor == 'default:dirt_with_grass' and spawn == 'air' then
+ minetest.set_node(spawn_pos, {name=flower})
+ end
+ end
+
+--NODES
+ minetest.register_node('bees:extractor', {
+ description = 'honey extractor',
+ tiles = {"bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor_front.png"},
+ paramtype2 = "facedir",
+ groups = {choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1},
+ on_construct = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local pos = pos.x..','..pos.y..','..pos.z
+ inv:set_size('frames_filled' ,1)
+ inv:set_size('frames_emptied' ,1)
+ inv:set_size('bottles_empty' ,1)
+ inv:set_size('bottles_full' ,1)
+ inv:set_size('wax',1)
+ meta:set_string('formspec',
+ 'size[8,9]'..
+ --input
+ 'list[nodemeta:'..pos..';frames_filled;2,1;1,1;]'..
+ 'list[nodemeta:'..pos..';bottles_empty;2,3;1,1;]'..
+ --output
+ 'list[nodemeta:'..pos..';frames_emptied;5,0.5;1,1;]'..
+ 'list[nodemeta:'..pos..';wax;5,2;1,1;]'..
+ 'list[nodemeta:'..pos..';bottles_full;5,3.5;1,1;]'..
+ --player inventory
+ 'list[current_player;main;0,5;8,4;]'
+ )
+ end,
+ on_timer = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if not inv:contains_item('frames_filled','bees:frame_full') or not inv:contains_item('bottles_empty','vessels:glass_bottle') then
+ return
+ end
+ if inv:room_for_item('frames_emptied', 'bees:frame_empty')
+ and inv:room_for_item('wax','bees:wax')
+ and inv:room_for_item('bottles_full', 'bees:bottle_honey') then
+ --add to output
+ inv:add_item('frames_emptied', 'bees:frame_empty')
+ inv:add_item('wax', 'bees:wax')
+ inv:add_item('bottles_full', 'bees:bottle_honey')
+ --remove from input
+ inv:remove_item('bottles_empty','vessels:glass_bottle')
+ inv:remove_item('frames_filled','bees:frame_full')
+ local p = {x=pos.x+math.random()-0.5, y=pos.y+math.random()-0.5, z=pos.z+math.random()-0.5}
+ --wax flying all over the place
+ minetest.add_particle({
+ pos = {x=pos.x, y=pos.y, z=pos.z},
+ vel = {x=math.random(-4,4),y=math.random(8),z=math.random(-4,4)},
+ acc = {x=0,y=-6,z=0},
+ expirationtime = 2,
+ size = math.random(1,3),
+ collisiondetection = false,
+ texture = 'bees_wax_particle.png',
+ })
+ local timer = minetest.get_node_timer(pos)
+ timer:start(5)
+ else
+ local timer = minetest.get_node_timer(pos)
+ timer:start(1) -- Try again in 1 second
+ end
+ end,
+ tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer = minetest.get_node_timer(pos)
+ if stack:get_name() == "bees:frame_full" then
+ if inv:is_empty("frames_filled") then
+ timer:start(5)
+ end
+ return inv:add_item("frames_filled",stack)
+ elseif stack:get_name() == "vessels:glass_bottle" then
+ if inv:is_empty("bottles_empty") then
+ timer:start(5)
+ end
+ return inv:add_item("bottles_empty",stack)
+ end
+ return stack
+ end,
+ can_insert = function(pos,node,stack,direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if stack:get_name() == "bees:frame_full" then
+ return inv:room_for_item("frames_filled",stack)
+ elseif stack:get_name() == "vessels:glass_bottle" then
+ return inv:room_for_item("bottles_empty",stack)
+ end
+ return false
+ end,
+ input_inventory = {"frames_emptied", "bottles_full", "wax"},
+ connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1}
+ },
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local timer = minetest.get_node_timer(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if inv:get_stack(listname, 1):get_count() == stack:get_count() then -- inv was empty -> start the timer
+ timer:start(5) --create a honey bottle and empty frame and wax every 5 seconds
+ end
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if (listname == 'bottles_empty' and stack:get_name() == 'vessels:glass_bottle') or (listname == 'frames_filled' and stack:get_name() == 'bees:frame_full') then
+ return stack:get_count()
+ else
+ return 0
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ return 0
+ end,
+ })
+
+ minetest.register_node('bees:bees', {
+ description = 'flying bees',
+ drawtype = 'plantlike',
+ paramtype = 'light',
+ groups = { not_in_creative_inventory=1 },
+ tiles = {
+ {
+ name='bees_strip.png',
+ animation={type='vertical_frames', aspect_w=16,aspect_h=16, length=2.0}
+ }
+ },
+ damage_per_second = 1,
+ walkable = false,
+ buildable_to = true,
+ pointable = false,
+ on_punch = function(pos, node, puncher)
+ local health = puncher:get_hp()
+ puncher:set_hp(health-2)
+ end,
+ })
+
+ minetest.register_node('bees:hive_wild', {
+ description = 'wild bee hive',
+ tiles = {'bees_hive_wild.png','bees_hive_wild.png','bees_hive_wild.png', 'bees_hive_wild.png', 'bees_hive_wild_bottom.png'}, --Neuromancer's base texture
+ drawtype = 'nodebox',
+ paramtype = 'light',
+ paramtype2 = 'wallmounted',
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'bees:honey_comb'}, rarity = 5}
+ }
+ },
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,attached_node=1},
+ node_box = { --VanessaE's wild hive nodebox contribution
+ type = 'fixed',
+ fixed = {
+ {-0.250000,-0.500000,-0.250000,0.250000,0.375000,0.250000}, --NodeBox 2
+ {-0.312500,-0.375000,-0.312500,0.312500,0.250000,0.312500}, --NodeBox 4
+ {-0.375000,-0.250000,-0.375000,0.375000,0.125000,0.375000}, --NodeBox 5
+ {-0.062500,-0.500000,-0.062500,0.062500,0.500000,0.062500}, --NodeBox 6
+ }
+ },
+ on_timer = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer= minetest.get_node_timer(pos)
+ local rad = 10
+ local minp = {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}
+ local maxp = {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}
+ local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower')
+ if #flowers == 0 then
+ inv:set_stack('queen', 1, '')
+ meta:set_string('infotext', 'this colony died, not enough flowers in area')
+ return
+ end --not any flowers nearby The queen dies!
+ if #flowers < 3 then return end --requires 2 or more flowers before can make honey
+ local flower = flowers[math.random(#flowers)]
+ bees.polinate_flower(flower, minetest.get_node(flower).name)
+ local stacks = inv:get_list('combs')
+ for k, v in pairs(stacks) do
+ if inv:get_stack('combs', k):is_empty() then --then replace that with a full one and reset pro..
+ inv:set_stack('combs',k,'bees:honey_comb')
+ timer:start(1000/#flowers)
+ return
+ end
+ end
+ --what to do if all combs are filled
+ end,
+ on_construct = function(pos)
+ minetest.get_node(pos).param2 = 0
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer = minetest.get_node_timer(pos)
+ meta:set_int('agressive', 1)
+ timer:start(100+math.random(100))
+ inv:set_size('queen', 1)
+ inv:set_size('combs', 5)
+ inv:set_stack('queen', 1, 'bees:queen')
+ for i=1,math.random(3) do
+ inv:set_stack('combs', i, 'bees:honey_comb')
+ end
+ end,
+ on_punch = function(pos, node, puncher)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if inv:contains_item('queen','bees:queen') then
+ local health = puncher:get_hp()
+ puncher:set_hp(health-4)
+ end
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, taker)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer= minetest.get_node_timer(pos)
+ if listname == 'combs' and inv:contains_item('queen', 'bees:queen') then
+ local health = taker:get_hp()
+ timer:start(10)
+ taker:set_hp(health-2)
+ end
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, taker) --restart the colony by adding a queen
+ local timer = minetest.get_node_timer(pos)
+ if not timer:is_started() then
+ timer:start(10)
+ end
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if listname == 'queen' and stack:get_name() == 'bees:queen' then
+ return 1
+ else
+ return 0
+ end
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ 'bees:hive_artificial',
+ formspecs.hive_wild(pos, (itemstack:get_name() == 'bees:grafting_tool'))
+ )
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if meta:get_int('agressive') == 1 and inv:contains_item('queen', 'bees:queen') then
+ local health = clicker:get_hp()
+ clicker:set_hp(health-4)
+ else
+ meta:set_int('agressive', 1)
+ end
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if inv:is_empty('queen') and inv:is_empty('combs') then
+ return true
+ else
+ return false
+ end
+ end,
+ after_dig_node = function(pos, oldnode, oldmetadata, user)
+ local wielded if user:get_wielded_item() ~= nil then wielded = user:get_wielded_item() else return end
+ if 'bees:grafting_tool' == wielded:get_name() then
+ local inv = user:get_inventory()
+ if inv then
+ inv:add_item('main', ItemStack('bees:queen'))
+ end
+ end
+ end
+ })
+
+ minetest.register_node('bees:hive_artificial', {
+ description = 'bee hive',
+ tiles = {'default_wood.png','default_wood.png','default_wood.png', 'default_wood.png','default_wood.png','bees_hive_artificial.png'},
+ drawtype = 'nodebox',
+ paramtype = 'light',
+ paramtype2 = 'facedir',
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = 'fixed',
+ fixed = {
+ {-4/8, 2/8, -4/8, 4/8, 3/8, 4/8},
+ {-3/8, -4/8, -2/8, 3/8, 2/8, 3/8},
+ {-3/8, 0/8, -3/8, 3/8, 2/8, -2/8},
+ {-3/8, -4/8, -3/8, 3/8, -1/8, -2/8},
+ {-3/8, -1/8, -3/8, -1/8, 0/8, -2/8},
+ {1/8, -1/8, -3/8, 3/8, 0/8, -2/8},
+ }
+ },
+ on_construct = function(pos)
+ local timer = minetest.get_node_timer(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ meta:set_int('agressive', 1)
+ inv:set_size('queen', 1)
+ inv:set_size('frames', 8)
+ meta:set_string('infotext','requires queen bee to function')
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ 'bees:hive_artificial',
+ formspecs.hive_artificial(pos)
+ )
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if meta:get_int('agressive') == 1 and inv:contains_item('queen', 'bees:queen') then
+ local health = clicker:get_hp()
+ clicker:set_hp(health-4)
+ else
+ meta:set_int('agressive', 1)
+ end
+ end,
+ on_timer = function(pos,elapsed)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer = minetest.get_node_timer(pos)
+ if inv:contains_item('queen', 'bees:queen') then
+ if inv:contains_item('frames', 'bees:frame_empty') then
+ timer:start(30)
+ local rad = 10
+ local minp = {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}
+ local maxp = {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}
+ local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower')
+ local progress = meta:get_int('progress')
+ progress = progress + #flowers
+ meta:set_int('progress', progress)
+ if progress > 1000 then
+ local flower = flowers[math.random(#flowers)]
+ bees.polinate_flower(flower, minetest.get_node(flower).name)
+ local stacks = inv:get_list('frames')
+ for k, v in pairs(stacks) do
+ if inv:get_stack('frames', k):get_name() == 'bees:frame_empty' then
+ meta:set_int('progress', 0)
+ inv:set_stack('frames',k,'bees:frame_full')
+ return
+ end
+ end
+ else
+ meta:set_string('infotext', 'progress: '..progress..'+'..#flowers..'/1000')
+ end
+ else
+ meta:set_string('infotext', 'does not have empty frame(s)')
+ timer:stop()
+ end
+ end
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if listname == 'queen' then
+ local timer = minetest.get_node_timer(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string('infotext','requires queen bee to function')
+ timer:stop()
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local inv = minetest.get_meta(pos):get_inventory()
+ if from_list == to_list then
+ if inv:get_stack(to_list, to_index):is_empty() then
+ return 1
+ else
+ return 0
+ end
+ else
+ return 0
+ end
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer = minetest.get_node_timer(pos)
+ if listname == 'queen' or listname == 'frames' then
+ meta:set_string('queen', stack:get_name())
+ meta:set_string('infotext','queen is inserted, now for the empty frames');
+ if inv:contains_item('frames', 'bees:frame_empty') then
+ timer:start(30)
+ meta:set_string('infotext','bees are aclimating');
+ end
+ end
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not minetest.get_meta(pos):get_inventory():get_stack(listname, index):is_empty() then return 0 end
+ if listname == 'queen' then
+ if stack:get_name():match('bees:queen*') then
+ return 1
+ end
+ elseif listname == 'frames' then
+ if stack:get_name() == ('bees:frame_empty') then
+ return 1
+ end
+ end
+ return 0
+ end,
+ })
+
+--ABMS
+ minetest.register_abm({ --particles
+ nodenames = {'bees:hive_artificial', 'bees:hive_wild', 'bees:hive_industrial'},
+ interval = 10,
+ chance = 4,
+ action = function(pos)
+ minetest.add_particle({
+ pos = {x=pos.x, y=pos.y, z=pos.z},
+ vel = {x=(math.random()-0.5)*5,y=(math.random()-0.5)*5,z=(math.random()-0.5)*5},
+ acc = {x=math.random()-0.5,y=math.random()-0.5,z=math.random()-0.5},
+ expirationtime = math.random(2.5),
+ size = math.random(3),
+ collisiondetection = true,
+ texture = 'bees_particle_bee.png',
+ })
+ end,
+ })
+
+ minetest.register_abm({ --spawn abm. This should be changed to a more realistic type of spawning
+ nodenames = {'group:leaves'},
+ neighbors = {''},
+ interval = 1600,
+ chance = 20,
+ action = function(pos, node, _, _)
+ local p = {x=pos.x, y=pos.y-1, z=pos.z}
+ if minetest.get_node(p).walkable == false then return end
+ if (minetest.find_node_near(p, 5, 'group:flora') ~= nil and minetest.find_node_near(p, 40, 'bees:hive_wild') == nil) then
+ minetest.add_node(p, {name='bees:hive_wild'})
+ end
+ end,
+ })
+
+ minetest.register_abm({ --spawning bees around bee hive
+ nodenames = {'bees:hive_wild', 'bees:hive_artificial', 'bees:hive_industrial'},
+ neighbors = {'group:flowers', 'group:leaves'},
+ interval = 30,
+ chance = 4,
+ action = function(pos, node, _, _)
+ local p = {x=pos.x+math.random(-5,5), y=pos.y-math.random(0,3), z=pos.z+math.random(-5,5)}
+ if minetest.get_node(p).name == 'air' then
+ minetest.add_node(p, {name='bees:bees'})
+ end
+ end,
+ })
+
+ minetest.register_abm({ --remove bees
+ nodenames = {'bees:bees'},
+ interval = 30,
+ chance = 5,
+ action = function(pos, node, _, _)
+ minetest.remove_node(pos)
+ end,
+ })
+
+--ITEMS
+ minetest.register_craftitem('bees:frame_empty', {
+ description = 'empty hive frame',
+ inventory_image = 'bees_frame_empty.png',
+ stack_max = 24,
+ })
+
+ minetest.register_craftitem('bees:frame_full', {
+ description = 'filled hive frame',
+ inventory_image = 'bees_frame_full.png',
+ stack_max = 12,
+ })
+
+ minetest.register_craftitem('bees:bottle_honey', {
+ description = 'honey bottle',
+ inventory_image = 'bees_bottle_honey.png',
+ stack_max = 12,
+ on_use = minetest.item_eat(3, "vessels:glass_bottle"),
+ })
+
+ minetest.register_craftitem('bees:wax', {
+ description = 'bees wax',
+ inventory_image = 'bees_wax.png',
+ stack_max = 48,
+ })
+
+ minetest.register_craftitem('bees:honey_comb', {
+ description = 'honey comb',
+ inventory_image = 'bees_comb.png',
+ on_use = minetest.item_eat(2),
+ stack_max = 8,
+ })
+
+ minetest.register_craftitem('bees:queen', {
+ description = 'Queen Bee',
+ inventory_image = 'bees_particle_bee.png',
+ stack_max = 1,
+ })
+
+--CRAFTS
+ minetest.register_craft({
+ output = 'bees:extractor',
+ recipe = {
+ {'','default:steel_ingot',''},
+ {'default:steel_ingot','default:stick','default:steel_ingot'},
+ {'default:mese_crystal','default:steel_ingot','default:mese_crystal'},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'bees:smoker',
+ recipe = {
+ {'default:steel_ingot', 'wool:red', ''},
+ {'', 'default:torch', ''},
+ {'', 'default:steel_ingot',''},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'bees:hive_artificial',
+ recipe = {
+ {'group:wood','group:wood','group:wood'},
+ {'group:wood','default:stick','group:wood'},
+ {'group:wood','default:stick','group:wood'},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'bees:grafting_tool',
+ recipe = {
+ {'', '', 'default:steel_ingot'},
+ {'', 'default:stick', ''},
+ {'', '', ''},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'bees:frame_empty',
+ recipe = {
+ {'group:wood', 'group:wood', 'group:wood'},
+ {'default:stick', 'default:stick', 'default:stick'},
+ {'default:stick', 'default:stick', 'default:stick'},
+ }
+ })
+
+--TOOLS
+ minetest.register_tool('bees:smoker', {
+ description = 'smoker',
+ inventory_image = 'bees_smoker.png',
+ tool_capabilities = {
+ full_punch_interval = 3.0,
+ max_drop_level=0,
+ damage_groups = {fleshy=2},
+ },
+ on_use = function(tool, user, node)
+ if node then
+ local pos = node.under
+ if pos then
+ for i=1,6 do
+ minetest.add_particle({
+ pos = {x=pos.x+math.random()-0.5, y=pos.y, z=pos.z+math.random()-0.5},
+ vel = {x=0,y=0.5+math.random(),z=0},
+ acc = {x=0,y=0,z=0},
+ expirationtime = 2+math.random(2.5),
+ size = math.random(3),
+ collisiondetection = false,
+ texture = 'bees_smoke_particle.png',
+ })
+ end
+ --tool:add_wear(2)
+ local meta = minetest.get_meta(pos)
+ meta:set_int('agressive', 0)
+ return nil
+ end
+ end
+ end,
+ })
+
+ minetest.register_tool('bees:grafting_tool', {
+ description = 'grafting tool',
+ inventory_image = 'bees_grafting_tool.png',
+ tool_capabilities = {
+ full_punch_interval = 3.0,
+ max_drop_level=0,
+ damage_groups = {fleshy=2},
+ },
+ })
+
+--COMPATIBILTY --remove after all has been updated
+ --ALIASES
+ minetest.register_alias('bees:honey_extractor', 'bees:extractor')
+ --BACKWARDS COMPATIBILITY WITH OLDER VERSION
+ minetest.register_alias('bees:honey_bottle', 'bees:bottle_honey')
+ minetest.register_abm({
+ nodenames = {'bees:hive', 'bees:hive_artificial_inhabited'},
+ interval = 0,
+ chance = 1,
+ action = function(pos, node)
+ if node.name == 'bees:hive' then
+ minetest.set_node(pos, { name = 'bees:hive_wild' })
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ inv:set_stack('queen', 1, 'bees:queen')
+ end
+ if node.name == 'bees:hive_artificial_inhabited' then
+ minetest.set_node(pos, { name = 'bees:hive_artificial' })
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ inv:set_stack('queen', 1, 'bees:queen')
+ local timer = minetest.get_node_timer(pos)
+ timer:start(60)
+ end
+ end,
+ })
+
+ --PIPEWORKS
+ if minetest.get_modpath("pipeworks") then
+ minetest.register_node('bees:hive_industrial', {
+ description = 'industrial bee hive',
+ tiles = { 'bees_hive_industrial.png'},
+ paramtype2 = 'facedir',
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1},
+ sounds = default.node_sound_wood_defaults(),
+ tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if stack:get_name() ~= "bees:frame_empty" or stack:get_count() > 1 then
+ return stack
+ end
+ for i = 1, 8 do
+ if inv:get_stack("frames", i):is_empty() then
+ inv:set_stack("frames", i, stack)
+ local timer = minetest.get_node_timer(pos)
+ timer:start(30)
+ meta:set_string('infotext','bees are aclimating')
+ return ItemStack("")
+ end
+ end
+ return stack
+ end,
+ can_insert = function(pos,node,stack,direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if stack:get_name() ~= "bees:frame_empty" or stack:get_count() > 1 then
+ return false
+ end
+ for i = 1, 8 do
+ if inv:get_stack("frames", i):is_empty() then
+ return true
+ end
+ end
+ return false
+ end,
+ can_remove = function(pos,node,stack,direction)
+ if stack:get_name() == "bees:frame_full" then
+ return 1
+ else
+ return 0
+ end
+ end,
+ input_inventory = "frames",
+ connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1}
+ },
+ on_construct = function(pos)
+ local timer = minetest.get_node_timer(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ meta:set_int('agressive', 1)
+ inv:set_size('queen', 1)
+ inv:set_size('frames', 8)
+ meta:set_string('infotext','requires queen bee to function')
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ 'bees:hive_artificial',
+ formspecs.hive_artificial(pos)
+ )
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if meta:get_int('agressive') == 1 and inv:contains_item('queen', 'bees:queen') then
+ local health = clicker:get_hp()
+ clicker:set_hp(health-4)
+ else
+ meta:set_int('agressive', 1)
+ end
+ end,
+ on_timer = function(pos,elapsed)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer = minetest.get_node_timer(pos)
+ if inv:contains_item('queen', 'bees:queen') then
+ if inv:contains_item('frames', 'bees:frame_empty') then
+ timer:start(30)
+ local rad = 10
+ local minp = {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}
+ local maxp = {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}
+ local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower')
+ local progress = meta:get_int('progress')
+ progress = progress + #flowers
+ meta:set_int('progress', progress)
+ if progress > 1000 then
+ local flower = flowers[math.random(#flowers)]
+ bees.polinate_flower(flower, minetest.get_node(flower).name)
+ local stacks = inv:get_list('frames')
+ for k, v in pairs(stacks) do
+ if inv:get_stack('frames', k):get_name() == 'bees:frame_empty' then
+ meta:set_int('progress', 0)
+ inv:set_stack('frames',k,'bees:frame_full')
+ return
+ end
+ end
+ else
+ meta:set_string('infotext', 'progress: '..progress..'+'..#flowers..'/1000')
+ end
+ else
+ meta:set_string('infotext', 'does not have empty frame(s)')
+ timer:stop()
+ end
+ end
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if listname == 'queen' then
+ local timer = minetest.get_node_timer(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string('infotext','requires queen bee to function')
+ timer:stop()
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local inv = minetest.get_meta(pos):get_inventory()
+ if from_list == to_list then
+ if inv:get_stack(to_list, to_index):is_empty() then
+ return 1
+ else
+ return 0
+ end
+ else
+ return 0
+ end
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local timer = minetest.get_node_timer(pos)
+ if listname == 'queen' or listname == 'frames' then
+ meta:set_string('queen', stack:get_name())
+ meta:set_string('infotext','queen is inserted, now for the empty frames');
+ if inv:contains_item('frames', 'bees:frame_empty') then
+ timer:start(30)
+ meta:set_string('infotext','bees are aclimating');
+ end
+ end
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not minetest.get_meta(pos):get_inventory():get_stack(listname, index):is_empty() then return 0 end
+ if listname == 'queen' then
+ if stack:get_name():match('bees:queen*') then
+ return 1
+ end
+ elseif listname == 'frames' then
+ if stack:get_name() == ('bees:frame_empty') then
+ return 1
+ end
+ end
+ return 0
+ end,
+ })
+ minetest.register_craft({
+ output = 'bees:hive_industrial',
+ recipe = {
+ {'default:steel_ingot','homedecor:plastic_sheeting','default:steel_ingot'},
+ {'pipeworks:tube_1','bees:hive_artificial','pipeworks:tube_1'},
+ {'default:steel_ingot','homedecor:plastic_sheeting','default:steel_ingot'},
+ }
+ })
+ end
+
+print('[Mod]Bees Loaded!')
diff --git a/bees/readme.txt b/bees/readme.txt
new file mode 100644
index 0000000..4d69d43
--- /dev/null
+++ b/bees/readme.txt
@@ -0,0 +1,53 @@
+BEES MOD V2.2
+-------------
+
+FEATURES
+--------
+3.0
+- Pipeworks compatibility (Industrial beehive)
+- Get honey comb from full frame
+
+2.2.1
+- removed steel dependency temporarily
+- fixed the craft for the extractor (and added alias for)
+
+2.2
+- craft for extractor
+- extractor texture update
+- a craft for the smoker
+
+2.1
+- bees polinate flowers nearby, causing them to multiply
+- add formspec to wild and artificial hive when using grafting tool
+- smoke, flying wax and bee particles
+- smokers to calm down the bees before opening the hive
+- a centrifuge to extract the honey and from the filled frames
+- grab eatable honeycomb from wild hives
+- craft a grafting tool to extract queen bees from wild hives
+- craft artificial hives and frames
+
+1.0
+- spawn wild bee hives on tree leaves
+- use the queen bee to populate artificial hives
+- plant flowers near hives to increase their productivity
+- spawning bee colonies
+
+FUTURE
+------
+- more realistic spawning of wild bee hives
+
+CONTRIBUTORS
+------------
+- bas080
+- VanessaE (wild bee hive nodebox)
+- Neuromancer (textures for wild bee hive and inspiration for other textures)
+- Novatux (enabled pipeworks compatibility)
+
+FORUM
+-----
+https://forum.minetest.net/viewtopic.php?pid=102905
+
+LICENSE
+-------
+- codes is WTFPL
+- textures are CC BY-SA
diff --git a/bees/sounds/bees.1.ogg b/bees/sounds/bees.1.ogg
new file mode 100644
index 0000000..62adbfe
--- /dev/null
+++ b/bees/sounds/bees.1.ogg
Binary files differ
diff --git a/bees/sounds/bees.2.ogg b/bees/sounds/bees.2.ogg
new file mode 100644
index 0000000..4bab2a9
--- /dev/null
+++ b/bees/sounds/bees.2.ogg
Binary files differ
diff --git a/bees/sounds/bees.3.ogg b/bees/sounds/bees.3.ogg
new file mode 100644
index 0000000..f90d882
--- /dev/null
+++ b/bees/sounds/bees.3.ogg
Binary files differ
diff --git a/bees/textures/bees_bottle_honey.png b/bees/textures/bees_bottle_honey.png
new file mode 100644
index 0000000..d2690b4
--- /dev/null
+++ b/bees/textures/bees_bottle_honey.png
Binary files differ
diff --git a/bees/textures/bees_comb.png b/bees/textures/bees_comb.png
new file mode 100644
index 0000000..e11e5a6
--- /dev/null
+++ b/bees/textures/bees_comb.png
Binary files differ
diff --git a/bees/textures/bees_extractor.png b/bees/textures/bees_extractor.png
new file mode 100644
index 0000000..00551aa
--- /dev/null
+++ b/bees/textures/bees_extractor.png
Binary files differ
diff --git a/bees/textures/bees_extractor_front.png b/bees/textures/bees_extractor_front.png
new file mode 100644
index 0000000..c2d2be9
--- /dev/null
+++ b/bees/textures/bees_extractor_front.png
Binary files differ
diff --git a/bees/textures/bees_frame_empty.png b/bees/textures/bees_frame_empty.png
new file mode 100644
index 0000000..3ac446a
--- /dev/null
+++ b/bees/textures/bees_frame_empty.png
Binary files differ
diff --git a/bees/textures/bees_frame_full.png b/bees/textures/bees_frame_full.png
new file mode 100644
index 0000000..bb9fbe0
--- /dev/null
+++ b/bees/textures/bees_frame_full.png
Binary files differ
diff --git a/bees/textures/bees_grafting_tool.png b/bees/textures/bees_grafting_tool.png
new file mode 100644
index 0000000..c0da709
--- /dev/null
+++ b/bees/textures/bees_grafting_tool.png
Binary files differ
diff --git a/bees/textures/bees_hive_artificial.png b/bees/textures/bees_hive_artificial.png
new file mode 100644
index 0000000..782b7d8
--- /dev/null
+++ b/bees/textures/bees_hive_artificial.png
Binary files differ
diff --git a/bees/textures/bees_hive_industrial.png b/bees/textures/bees_hive_industrial.png
new file mode 100644
index 0000000..de82d09
--- /dev/null
+++ b/bees/textures/bees_hive_industrial.png
Binary files differ
diff --git a/bees/textures/bees_hive_wild.png b/bees/textures/bees_hive_wild.png
new file mode 100644
index 0000000..961a416
--- /dev/null
+++ b/bees/textures/bees_hive_wild.png
Binary files differ
diff --git a/bees/textures/bees_hive_wild_bottom.png b/bees/textures/bees_hive_wild_bottom.png
new file mode 100644
index 0000000..08efeaa
--- /dev/null
+++ b/bees/textures/bees_hive_wild_bottom.png
Binary files differ
diff --git a/bees/textures/bees_hive_wild_s.png b/bees/textures/bees_hive_wild_s.png
new file mode 100644
index 0000000..cb062af
--- /dev/null
+++ b/bees/textures/bees_hive_wild_s.png
Binary files differ
diff --git a/bees/textures/bees_particle_bee.png b/bees/textures/bees_particle_bee.png
new file mode 100644
index 0000000..f58c4dc
--- /dev/null
+++ b/bees/textures/bees_particle_bee.png
Binary files differ
diff --git a/bees/textures/bees_particle_bee_r.png b/bees/textures/bees_particle_bee_r.png
new file mode 100644
index 0000000..42a36ff
--- /dev/null
+++ b/bees/textures/bees_particle_bee_r.png
Binary files differ
diff --git a/bees/textures/bees_smoke_particle.png b/bees/textures/bees_smoke_particle.png
new file mode 100644
index 0000000..59e77a0
--- /dev/null
+++ b/bees/textures/bees_smoke_particle.png
Binary files differ
diff --git a/bees/textures/bees_smoker.png b/bees/textures/bees_smoker.png
new file mode 100644
index 0000000..b2886a3
--- /dev/null
+++ b/bees/textures/bees_smoker.png
Binary files differ
diff --git a/bees/textures/bees_strip.png b/bees/textures/bees_strip.png
new file mode 100644
index 0000000..1afe28e
--- /dev/null
+++ b/bees/textures/bees_strip.png
Binary files differ
diff --git a/bees/textures/bees_wax.png b/bees/textures/bees_wax.png
new file mode 100644
index 0000000..4891e06
--- /dev/null
+++ b/bees/textures/bees_wax.png
Binary files differ
diff --git a/bees/textures/bees_wax_particle.png b/bees/textures/bees_wax_particle.png
new file mode 100644
index 0000000..974fb09
--- /dev/null
+++ b/bees/textures/bees_wax_particle.png
Binary files differ
diff --git a/biome_lib/API.txt b/biome_lib/API.txt
new file mode 100644
index 0000000..73e310f
--- /dev/null
+++ b/biome_lib/API.txt
@@ -0,0 +1,579 @@
+This document describes the Plantlife mod API.
+
+Last revision: 2015-02-16
+
+
+=========
+Functions
+=========
+
+There are three main functions defined by the main "biome_lib" mod:
+
+spawn_on_surfaces()
+register_generate_plant()
+grow_plants()
+
+There are also several internal, helper functions that can be called if so
+desired, but they are not really intended for use by other mods and may change
+at any time. They are briefly described below these main functions, but see
+init.lua for details.
+
+Most functions in plants lib are declared locally to avoid namespace
+collisions with other mods. They are accessible via the "biome_lib" method,
+e.g. biome_lib:spawn_on_surfaces() and so forth.
+
+=====
+spawn_on_surfaces(biome)
+spawn_on_surfaces(sdelay, splant, sradius, schance, ssurface, savoid)
+
+This first function is an ABM-based spawner function originally created as
+part of Ironzorg's flowers mod. It has since been largely extended and
+expanded. There are two ways to call this function: You can either pass it
+several individual string and number parameters to use the legacy interface,
+or you can pass a single biome definition as a table, with all of your options
+spelled out nicely. This is the preferred method.
+
+When used with the legacy interface, you must specify the parameters exactly
+in order, with the first five being mandatory (even if some are set to nil),
+and the last one being optional:
+
+sdelay: The value passed to the ABM's interval parameter, in seconds.
+splant: The node name of the item to spawn (e.g.
+ "flowers:flower_rose"). A plant will of course only be
+ spawned if the node about to be replaced is air.
+sradius: Don't spawn within this many nodes of the avoid items
+ mentioned below. If set to nil, this check is skipped.
+schance: The value passed to the ABM's chance parameter, normally in
+ the 10-100 range (1-in-X chance of operating on a given node)
+ssurface: String with the name of the node on which to spawn the plant
+ in question, such as "default:sand" or
+ "default:dirt_with_grass". It is not recommended to put air,
+ stone, or plain dirt here if you can use some other node, as
+ doing so will cause the engine to process potentially large
+ numbers of such nodes when deciding when to execute the ABM
+ and where it should operate.
+savoid: Table with a list of groups and/or node names to avoid when
+ spawning the plant, such as {"group:flowers", "default:tree"}.
+
+When passed a table as the argument, and thus using the modern calling method,
+you must pass a number of arguments in the form of an ordinary keyed-value
+table. Below is a list of everything supported by this function:
+
+biome = {
+ spawn_plants = something, -- [*] String or table; see below.
+ spawn_delay = number, -- same as sdelay, above.
+ spawn_chance = number, -- same as schance, above.
+ spawn_surfaces = {table}, -- List of node names on which the plants
+ -- should be spawned. As with the single-node "ssurface"
+ -- option in the legacy API, you should not put stone, air,
+ -- etc. here.
+
+ ---- From here down are a number of optional parameters. You will
+ ---- most likely want to use at least some of these to limit how and
+ ---- where your objects are spawned.
+
+ avoid_nodes = {table}, -- same meaning as savoid, above
+ avoid_radius = num, -- same as sradius
+ seed_diff = num, -- The Perlin seed difference value passed to the
+ -- minetest.get_perlin() function. Used along with
+ -- the global Perlin controls below to create the
+ -- "biome" in which the plants will spawn. Defaults
+ -- to 0 if not provided.
+ light_min = num, -- Minimum amount of light necessary to make a plant
+ -- spawn. Defaults to 0.
+ light_max = num, -- Maximum amount of light needed to spawn. Defaults
+ -- to the engine's MAX_LIGHT value of 14.
+ neighbors = {table}, -- List of neighboring nodes that need to be
+ -- immediately next to the node the plant is about to
+ -- spawn on. Can also be a string with a single node
+ -- name. It is both passed to the ABM as the
+ -- "neighbors" parameter, and is used to manually
+ -- check the adjacent nodes. It only takes one of
+ -- these for the spawn routine to mark the target as
+ -- spawnable. Defaults to nil (ignored).
+ ncount = num, -- There must be at least this many of the above
+ -- neighbors in the eight spaces immediately
+ -- surrounding the node the plant is about to spawn on
+ -- for it to happen. If not provided, this check is
+ -- disabled.
+ facedir = num, -- The value passed to the param2 variable when adding
+ -- the node to the map. Defaults to 0. Be sure that
+ -- the value you use here (and the range thereof) is
+ -- appropriate for the type of node you're spawning.
+ random_facedir = {table}, -- If set, the table should contain two values.
+ -- If they're both provided, the spawned plant will be
+ -- given a random facedir value in the range specified
+ -- by these two numbers. Overrides the facedir
+ -- parameter above, if it exists. Use {0,3} if you
+ -- want the full range for wallmounted nodes, or {2,5}
+ -- for most everything else, or any other pair of
+ -- numbers appropriate for the node you want to spawn.
+ depth_max = num, -- If the object spawns on top of a water source, the
+ -- water must be at most this deep. Defaults to 1.
+ min_elevation = num, -- Surface must be at this altitude or higher to
+ -- spawn at all. Defaults to -31000...
+ max_elevation = num, -- ...but must be no higher than this altitude.
+ -- Defaults to +31000.
+ near_nodes = {table}, -- List of nodes that must be somewhere in the
+ -- vicinity in order for the plant to spawn. Can also
+ -- be a string with a single node name. If not
+ -- provided, this check is disabled.
+ near_nodes_size = num, -- How large of an area to check for the above
+ -- node. Specifically, this checks a flat, horizontal
+ -- area centered on the node to be spawned on.
+ -- Defaults to 0, but is ignored if the above
+ -- near_nodes value is not set.
+ near_nodes_vertical = num, -- Used with the size value above, this extends
+ -- the vertical range of the near nodes search.
+ -- Basically, this turns the flat region described
+ -- above into a cuboid region. The area to be checked
+ -- will extend this high and this low above/below the
+ -- target node, centered thereon. Defaults to 1 (only
+ -- check the layer above, the layer at, and the layer
+ -- below the target node), but is ignored if
+ -- near_nodes is not set.
+ near_nodes_count = num, -- How many of the above nodes must be within that
+ -- radius. Defaults to 1 but is ignored if near_nodes
+ -- isn't set. Bear in mind that the total area to be
+ -- checked is equal to:
+ -- (near_nodes_size^2)*near_nodes_vertical*2
+ -- For example, if size is 10 and vertical is 4, then
+ -- the area is (10^2)*8 = 800 nodes in size, so you'll
+ -- want to make sure you specify a value appropriate
+ -- for the size of the area being tested.
+ air_size = num, -- How large of an area to check for air above and
+ -- around the target. If omitted, only the space
+ -- above the target is checked. This does not check
+ -- for air at the sides or below the target.
+ air_count = num, -- How many of the surrounding nodes need to be air
+ -- for the above check to return true. If omitted,
+ -- only the space above the target is checked.
+ plantlife_limit = num, -- The value compared against the generic "plants
+ -- can grow here" Perlin noise layer. Smaller numbers
+ -- result in more abundant plants. Range of -1 to +1,
+ -- with values in the range of about 0 to 0.5 being
+ -- most useful. Defaults to 0.1.
+ temp_min = num, -- Minimum temperature needed for the desired object
+ -- to spawn. This is a 2d Perlin value, which has an
+ -- inverted range of +1 to -1. Larger values
+ -- represent *colder* temperatures, so this value is
+ -- actually the upper end of the desired Perlin range.
+ -- See the temperature map section at the bottom of
+ -- this document for details on how these values work.
+ -- Defaults to +1 (unlimited coldness).
+ temp_max = num, -- Maximum temperature/lower end of the Perlin range.
+ -- Defaults to -1 (unlimited heat).
+ humidity_min = num, -- Minimum humidity for the plant to spawn in. Like
+ -- the temperature map, this is a Perlin value where
+ -- lower numbers mean more humidity in the area.
+ -- Defaults to +1 (0% humidity).
+ humidity_max = num, -- Maximum humidity for the plant to spawn at.
+ -- Defaults to -1 (100% humidity).
+ verticals_list = {table}, -- List of nodes that should be considered to be
+ -- natural walls.
+ alt_wallnode = "string", -- If specified, this node will be substituted in
+ -- place of the plant(s) defined by spawn_plants
+ -- above, if the spawn target has one or more adjacent
+ -- walls. In such a case, the two above facedir
+ -- parameters will be ignored.
+ spawn_on_side = bool, -- Set this to true to immediately spawn the node on
+ -- one side of the target node rather than the top.
+ -- The code will search for an airspace to the side of
+ -- the target, then spawn the plant at the first one
+ -- found. The above facedir and random_facedir
+ -- parameters are ignored in this case. If the above
+ -- parameters for selecting generic wall nodes are
+ -- provided, this option is ignored. Important note:
+ -- the facedir values assigned by this option only
+ -- make sense with wallmounted nodes (nodes which
+ -- don't use facedir won't be affected).
+ choose_random_wall = bool, -- if set to true, and searching for walls is
+ -- being done, just pick any random wall if there is
+ -- one, rather than returning the first one.
+ spawn_on_bottom = bool, -- If set to true, spawn the object below the
+ -- target node instead of above it. The above
+ -- spawn_on_side variable takes precedence over this
+ -- one if both happen to be true. When using this
+ -- option with the random facedir function above, the
+ -- values given to the facedir parameter are for
+ -- regular nodes, not wallmounted.
+ spawn_replace_node = bool, -- If set to true, the target node itself is
+ -- replaced by the spawned object. Overrides the
+ -- spawn_on_bottom and spawn_on_side settings.
+}
+
+[*] spawn_plants must be either a table or a string. If it's a table, the
+values therein are treated as a list of nodenames to pick from randomly on
+each application of the ABM code. The more nodes you can pack into this
+parameter to avoid making too many calls to this function, the lower the CPU
+load will likely be.
+
+You can also specify a string containing the name of a function to execute.
+In this case, the function will be passed a single position parameter
+indicating where the function should place the desired object, and the checks
+for spawning on top vs. sides vs. bottom vs. replacing the target node will be
+skipped.
+
+By default, if a biome node, size, and count are not defined, the biome
+checking is disabled. Same holds true for the nneighbors bit above that.
+
+
+=====
+biome_lib:register_generate_plant(biome, nodes_or_function_or_treedef)
+
+To register an object to be spawned at mapgen time rather than via an ABM,
+call this function with two parameters: a table with your object's biome
+information, and a string, function, or table describing what to do if the
+engine finds a suitable surface node (see below).
+
+The biome table contains quite a number of options, though there are fewer
+here than are available in the ABM-based spawner, as some stuff doesn't make
+sense at map-generation time.
+
+biome = {
+ surface = something, -- What node(s). May be a string such as
+ -- "default:dirt_with_grass" or a table with
+ -- multiple such entries.
+
+ ---- Everything else is optional, but you'll definitely want to use
+ ---- some of these other fields to limit where and under what
+ ---- conditions the objects are spawned.
+
+ below_nodes = {table}, -- List of nodes that must be below the target
+ -- node. Useful in snow biomes to keep objects from
+ -- spawning in snow that's on the wrong surface for
+ -- that object.
+ avoid_nodes = {table}, -- List of nodes to avoid when spawning. Groups are
+ -- not supported here.
+ avoid_radius = num, -- How much distance to leave between the object to be
+ -- added and the objects to be avoided. If this or
+ -- the avoid_nodes value is nil/omitted, this check is
+ -- skipped. Avoid using excessively large radii.
+ rarity = num, -- How rare should this object be in its biome? Larger
+ -- values make objects more rare, via:
+ -- math.random(1,100) > this
+ max_count = num, -- The absolute maximum number of your object that
+ -- should be allowed to spawn in a 5x5x5 mapblock area
+ -- (80x80x80 nodes). Defaults to 5, but be sure you
+ -- set this to some reasonable value depending on your
+ -- object and its size if 5 is insufficient.
+ seed_diff = num, -- Perlin seed-diff value. Defaults to 0, which
+ -- causes the function to inherit the global value of
+ -- 329.
+ neighbors = {table}, -- What ground nodes must be right next to and at the
+ -- same elevation as the node to be spawned on.
+ ncount = num, -- At least this many of the above nodes must be next
+ -- to the node to spawn on. Any value greater than 8
+ -- will probably cause the code to never spawn
+ -- anything. Defaults to 0.
+ depth = num, -- How deep/thick of a layer the spawned-on node must
+ -- be. Typically used for water.
+ min_elevation = num, -- Minimum elevation in meters/nodes. Defaults to
+ -- -31000 (unlimited).
+ max_elevation = num, -- Max elevation. Defaults to +31000 (unlimited).
+ near_nodes = {table}, -- what nodes must be in the general vicinity of the
+ -- object being spawned.
+ near_nodes_size = num, -- how wide of a search area to look for the nodes
+ -- in that list.
+ near_nodes_vertical = num, -- How high/low of an area to search from the
+ -- target node.
+ near_nodes_count = num, -- at least this many of those nodes must be in
+ -- the area.
+ plantlife_limit = num, -- The value compared against the generic "plants
+ -- can grow here" Perlin noise layer. Smaller numbers
+ -- result in more abundant plants. Range of -1 to +1,
+ -- with values in the range of about 0 to 0.5 being
+ -- most useful. Defaults to 0.1.
+ temp_min = num, -- Coldest allowable temperature for a plant to spawn
+ -- (that is, the largest Perlin value).
+ temp_max = num, -- warmest allowable temperature to spawn a plant
+ -- (lowest Perlin value).
+ verticals_list = {table}, -- Same as with the spawn_on_surfaces function.
+ check_air = bool, -- Flag to tell the mapgen code to check for air above
+ -- the spawn target. Defaults to true if not
+ -- explicitly set to false. Set this to false VERY
+ -- SPARINGLY, as it will slow the map generator down.
+ delete_above = bool, -- Flag to tell the mapgen code to delete the two
+ -- nodes directly above the spawn target just before
+ -- adding the plant or tree. Useful when generating
+ -- in snow biomes. Defaults to false.
+ delete_above_surround = bool, -- Flag to tell the mapgen code to also
+ -- delete the five nodes surrounding the above space,
+ -- and the five nodes above those, resulting in a two-
+ -- node-deep cross-shaped empty region above/around
+ -- the spawn target. Useful when adding trees to snow
+ -- biomes. Defaults to false.
+ spawn_replace_node = bool, -- same as with the ABM spawner.
+ random_facedir = {table}, -- same as with the ABM spawner.
+}
+
+Regarding nodes_or_function_or_treedef, this must either be a string naming
+a node to spawn, a table with a list of nodes to choose from, a table with an
+L-Systems tree definition, or a function.
+
+If you specified a string, the code will attempt to determine whether that
+string specifies a valid node name. If it does, that node will be placed on
+top of the target position directly (unless one of the other mapgen options
+directs the code to do otherwise).
+
+If you specified a table and there is no "axiom" field, the code assumes that
+it is a list of nodes. Simply name one node per entry in the list, e.g.
+{"default:junglegrass", "default:dry_shrub"} and so on, for as many nodes as
+you want to list. A random node from the list will be chosen each time the
+code goes to place a node.
+
+If you specified a table, and there *is* an "axiom" field, the code assumes
+that this table contains an L-Systems tree definition, which will be passed
+directly to the engine's spawn_tree() function along with the position on
+which to spawn the tree.
+
+You can also supply a function to be directly executed, which is given the
+current node position (the usual "pos" table format) as its sole argument. It
+will be called in the form:
+
+ somefunction(pos)
+
+
+=====
+biome_lib:grow_plants(options)
+
+The third function, grow_plants() is used to turn the spawned nodes above
+into something else over time. This function has no return value, and accepts
+a biome definition table as the only parameter. These are defined like so:
+
+options = {
+ grow_plant = "string", -- Name of the node to be grown into something
+ -- else. This value is passed to the ABM as the
+ -- "nodenames" parameter, so it is the plants
+ -- themselves that are the ABM trigger, rather than
+ -- the ground they spawned on. A plant will only grow
+ -- if the node above it is air. Can also be a table,
+ -- but note that all nodes referenced therein will be
+ -- grown into the same object.
+ grow_delay = num, -- Passed as the ABM "interval" parameter, as with
+ -- spawning.
+ grow_chance = num, -- Passed as the ABM "chance" parameter.
+ grow_result = "string", -- Name of the node into which the grow_plant
+ -- node(s) should transform when the ABM executes.
+
+ ---- Everything from here down is optional.
+
+ dry_early_node = "string", -- This value is ignored except for jungle
+ -- grass (a corner case needed by that mod), where it
+ -- indicates which node the grass must be on in order
+ -- for it to turn from the short size to
+ -- "default:dry_shrub" instead of the medium size.
+ grow_nodes = {table}, -- One of these nodes must be under the plant in
+ -- order for it to grow at all. Normally this should
+ -- be the same as the list of surfaces passed to the
+ -- spawning ABM as the "nodenames" parameter. This is
+ -- so that the plant can be manually placed on
+ -- something like a flower pot or something without it
+ -- necessarily growing and perhaps dieing. Defaults
+ -- to "default:dirt_with_grass".
+ facedir = num, -- Same as with spawning a plant.
+ need_wall = bool, -- Set this to true if you the plant needs to grow
+ -- against a wall. Defaults to false.
+ verticals_list = {table}, -- same as with spawning a plant.
+ choose_random_wall = bool, -- same as with spawning a plant.
+ grow_vertically = bool, -- Set this to true if the plant needs to grow
+ -- vertically, as in climbing poison ivy. Defaults to
+ -- false.
+ height_limit = num, -- Set this to limit how tall the desired node can
+ -- grow. The mod will search straight down from the
+ -- position being spawned at to find a ground node,
+ -- set via the field below. Defaults to 5 nodes.
+ ground_nodes = {table}, -- What nodes should be treated as "the ground"
+ -- below a vertically-growing plant. Usually this
+ -- should be the same as the grow_nodes table, but
+ -- might also include, for example, water or some
+ -- other surrounding material. Defaults to
+ -- "default:dirt_with_grass".
+ grow_function = something, -- [*] see below.
+ seed_diff = num, -- [*] see below.
+}
+
+[*] grow_function can take one of three possible settings: it can be nil (or
+ not provided), a string, or a table.
+
+If it is not provided or it's set to nil, all of the regular growing code is
+executed normally, the value of seed_diff, if any, is ignored, and the node to
+be placed is assumed to be specified in the grow_result variable.
+
+If this value is set to a simple string, this is treated as the name of the
+function to use to grow the plant. In this case, all of the usual growing
+code is executeed, but then instead of a plant being simply added to the
+world, grow_result is ignored and the named function is executed and passed a
+few parmeters in the following general form:
+
+ somefunction(pos, perlin1, perlin2)
+
+These values represent the current position (the usual table), the Perlin
+noise value for that spot in the generic "plants can grow here" map for the
+seed_diff value above, the Perlin value for that same spot from the
+temperature map, and the detected neighboring wall face, if there was one (or
+nil if not). If seed_diff is not provided, it defaults to 0.
+
+If this variable is instead set to a table, it is treated an an L-Systems tree
+definition. All of the growing code is executed in the usual manner, then the
+tree described by that definition is spawned at the current position instead,
+and grow_result is ignored.
+
+
+=====
+find_adjacent_wall(pos, verticals, randomflag)
+
+Of the few helper functions, this one expects a position parameter and a table
+with the list of nodes that should be considered as walls. The code will
+search around the given position for a neighboring wall, returning the first
+one it finds as a facedir value, or nil if there are no adjacent walls.
+
+If randomflag is set to true, the function will just return the facedir of any
+random wall it finds adjacent to the target position. Defaults to false if
+not specified.
+
+=====
+is_node_loaded(pos)
+
+This acts as a wrapper for the minetest.get_node_or_nil(node_pos)
+function and accepts a single position parameter. Returns true if the node in
+question is already loaded, or false if not.
+
+
+=====
+dbg(string)
+
+This is a simple debug output function which takes one string parameter. It
+just checks if DEBUG is true and outputs the phrase "[Plantlife] " followed by
+the supplied string, via the print() function, if so.
+
+=====
+biome_lib:generate_tree(pos, treemodel)
+biome_lib:grow_tree(pos, treemodel)
+
+In the case of the growing code and the mapgen-based tree generator code,
+generating a tree is done via the above two calls, which in turn immediately
+call the usual spawn_tree() functions. This rerouting exists as a way for
+other mods to hook into biome_lib's tree-growing functions in general,
+perhaps to execute something extra whenever a tree is spawned.
+
+biome_lib:generate_tree(pos, treemodel) is called any time a tree is spawned
+at map generation time. 'pos' is the position of the block on which the tree
+is to be placed. 'treemodel' is the standard L-Systems tree definition table
+expected by the spawn_tree() function. Refer to the 'trunk' field in that
+table to derive the name of the tree being spawned.
+
+biome_lib:grow_tree(pos, treemodel) does the same sort of thing whenever a
+tree is spawned within the abm-based growing code, for example when growing a
+sapling into a tree.
+
+
+=====
+There are other, internal helper functions that are not meant for use by other
+mods. Don't rely on them, as they are subject to change without notice.
+
+
+===============
+Global Settings
+===============
+
+Set this to true if you want the mod to spam your console with debug info :-)
+
+ plantlife_debug = false
+
+
+======================
+Fertile Ground Mapping
+======================
+
+The mod uses Perlin noise to create "biomes" of the various plants, via the
+minetest.get_perlin() function. At present, there are three layers of
+Perlin noise used.
+
+The first one is for a "fertile ground" layer, which I tend to refer to as the
+generic "stuff can potentially grow here" layer. Its values are hard-coded:
+
+ biome_lib.plantlife_seed_diff = 329
+ perlin_octaves = 3
+ perlin_persistence = 0.6
+ perlin_scale = 100
+
+For more information on how Perlin noise is generated, you will need to search
+the web, as these default values were from that which is used by minetest_game
+to spawn jungle grass at mapgen time, and I'm still learning how Perlin noise
+works. ;-)
+
+
+===================
+Temperature Mapping
+===================
+
+The second Perlin layer is a temperature map, with values taken from
+SPlizard's Snow Biomes mod so that the two will be compatible, since that mod
+appears to be the standard now. Those values are:
+
+ temperature_seeddiff = 112
+ temperature_octaves = 3
+ temperature_persistence = 0.5
+ temperature_scale = 150
+
+The way Perlin values are used by this mod, in keeping with the snow mod's
+apparent methods, larger values returned by the Perlin function represent
+*colder* temperatures. In this mod, the following table gives a rough
+approximation of how temperature maps to these values, normalized to
+0.53 = 0 °C and +1.0 = -25 °C.
+
+Perlin Approx. Temperature
+-1.0 81 °C ( 178 °F)
+-0.75 68 °C ( 155 °F)
+-0.56 58 °C ( 136 °F)
+-0.5 55 °C ( 131 °F)
+-0.25 41 °C ( 107 °F)
+-0.18 38 °C ( 100 °F)
+ 0 28 °C ( 83 °F)
+ 0.13 21 °C ( 70 °F)
+ 0.25 15 °C ( 59 °F)
+ 0.5 2 °C ( 35 °F)
+ 0.53 0 °C ( 32 °F)
+ 0.75 -12 °C ( 11 °F)
+ 0.86 -18 °C ( 0 °F)
+ 1.0 -25 °C (- 13 °F)
+
+Included in this table are even 0.25 steps in Perlin values along with some
+common temperatures on both the Centigrade and Fahrenheit scales. Note that
+unless you're trying to model the Moon or perhaps Mercury in your mods/maps,
+you probably won't need to bother with Perlin values of less than -0.56 or so.
+
+
+================
+Humidity Mapping
+================
+
+Last but not least is a moisture/humidity map. Like the temperature map
+above, Perlin values can be tested to determine the approximate humidity of
+the *air* in the area. This humidity map is basically the perlin layer used
+for deserts.
+
+A value of +1.0 is very moist (basically a thick fog, if it could be seen), a
+value of roughly +0.25 represents the edge of a desert as usually seen in the
+game, and a value of -1.0 is as dry as a bone.
+
+This does not check for nearby water, just general air humidity, and that
+being the case, nearby ground does not affect the reported humidity of a
+region (because this isn't yet possible to calculate yet). Use the near_nodes
+and avoid_nodes parameters and their related options to check for water and
+such.
+
+The Perlin values use for this layer are:
+
+ humidity_seeddiff = 9130
+ humidity_octaves = 3
+ humidity_persistence = 0.5
+ humidity_scale = 250
+
+And this particular one is mapped slightly differently from the others:
+
+ noise3 = perlin3:get2d({x=p_top.x+150, y=p_top.z+50})
+
+(Note the +150 and +50 offsets)
+
diff --git a/biome_lib/README.md b/biome_lib/README.md
new file mode 100644
index 0000000..ce539d1
--- /dev/null
+++ b/biome_lib/README.md
@@ -0,0 +1,30 @@
+# Biome Lib
+
+This library's purpose is to allow other mods to add growing things to the map in a straightforward, simple manner. It contains all the core functions needed by mods and modpacks such as More Trees, Tiny Trees, Plantlife, and others.
+
+Spawning of plants is optionally sensitive to the amount of available light, elevation, nearness to other nodes, plant-to-plant density, water depth, and a whole host of controls.
+
+All objects spawned or generated using this mod use Perlin noise to stay within simple biomes, rather than just letting everything just spread around the map randomly.
+
+This library also features a basic temperature map, which should blend in nicely with SPlizard's Snow Biomes mod (the same Perlin settings are used, with the assumption that the edge of a snow biome is 0° Centigrade).
+
+Both mapgen-based spawning and ABM-based spawning is supported. Growing code is strictly ABM-based. L-system trees can be spawned at mapgen time via the engine's spawn_tree() function and are quite fast.
+
+It is primarily intended for mapgen v6, but it should work fine when used with mapgen v7.
+
+**Dependencies**: default from minetest_game
+
+**Recommends**: [Plantlife Modpack](https://github.com/VanessaE/plantlife_modpack),
+[More Trees](https://github.com/VanessaE/moretrees)
+
+**License**: WTFPL
+
+**API**: This mod supplies a small number of very powerful functions. They are, briefly:
+
+* biome_lib:register_generate_plant()
+* biome_lib:spawn_on_surfaces()
+* biome_lib:grow_plants()
+* biome_lib:find_valid_wall()
+* biome_lib:is_node_loaded()
+
+For a complete description of these functions as well as several of the internal variables within the mod, [read the API.txt document](https://raw.githubusercontent.com/VanessaE/biome_lib/master/API.txt) included in this package.
diff --git a/biome_lib/depends.txt b/biome_lib/depends.txt
new file mode 100644
index 0000000..c48fe0d
--- /dev/null
+++ b/biome_lib/depends.txt
@@ -0,0 +1,3 @@
+default
+intllib?
+
diff --git a/biome_lib/init.lua b/biome_lib/init.lua
new file mode 100644
index 0000000..01a17d2
--- /dev/null
+++ b/biome_lib/init.lua
@@ -0,0 +1,737 @@
+-- Plantlife library mod by Vanessa Ezekowitz
+--
+-- License: WTFPL
+--
+-- I got the temperature map idea from "hmmmm", values used for it came from
+-- Splizard's snow mod.
+--
+
+-- Various settings - most of these probably won't need to be changed
+
+biome_lib = {}
+
+plantslib = setmetatable({}, { __index=function(t,k) print("Use of deprecated function:", k) return biome_lib[k] end })
+
+biome_lib.blocklist_aircheck = {}
+biome_lib.blocklist_no_aircheck = {}
+
+biome_lib.surface_nodes_aircheck = {}
+biome_lib.surface_nodes_no_aircheck = {}
+
+biome_lib.surfaceslist_aircheck = {}
+biome_lib.surfaceslist_no_aircheck = {}
+
+biome_lib.actioncount_aircheck = {}
+biome_lib.actioncount_no_aircheck = {}
+
+biome_lib.actionslist_aircheck = {}
+biome_lib.actionslist_no_aircheck = {}
+
+biome_lib.modpath = minetest.get_modpath("biome_lib")
+
+biome_lib.total_no_aircheck_calls = 0
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+biome_lib.intllib = S
+
+local DEBUG = false --... except if you want to spam the console with debugging info :-)
+
+function biome_lib:dbg(msg)
+ if DEBUG then
+ print("[Plantlife] "..msg)
+ minetest.log("verbose", "[Plantlife] "..msg)
+ end
+end
+
+biome_lib.plantlife_seed_diff = 329 -- needs to be global so other mods can see it
+
+local perlin_octaves = 3
+local perlin_persistence = 0.6
+local perlin_scale = 100
+
+local temperature_seeddiff = 112
+local temperature_octaves = 3
+local temperature_persistence = 0.5
+local temperature_scale = 150
+
+local humidity_seeddiff = 9130
+local humidity_octaves = 3
+local humidity_persistence = 0.5
+local humidity_scale = 250
+
+local time_scale = 1
+local time_speed = tonumber(minetest.setting_get("time_speed"))
+
+if time_speed and time_speed > 0 then
+ time_scale = 72 / time_speed
+end
+
+--PerlinNoise(seed, octaves, persistence, scale)
+
+biome_lib.perlin_temperature = PerlinNoise(temperature_seeddiff, temperature_octaves, temperature_persistence, temperature_scale)
+biome_lib.perlin_humidity = PerlinNoise(humidity_seeddiff, humidity_octaves, humidity_persistence, humidity_scale)
+
+-- Local functions
+
+function biome_lib:is_node_loaded(node_pos)
+ local n = minetest.get_node_or_nil(node_pos)
+ if (not n) or (n.name == "ignore") then
+ return false
+ end
+ return true
+end
+
+function biome_lib:set_defaults(biome)
+ biome.seed_diff = biome.seed_diff or 0
+ biome.min_elevation = biome.min_elevation or -31000
+ biome.max_elevation = biome.max_elevation or 31000
+ biome.temp_min = biome.temp_min or 1
+ biome.temp_max = biome.temp_max or -1
+ biome.humidity_min = biome.humidity_min or 1
+ biome.humidity_max = biome.humidity_max or -1
+ biome.plantlife_limit = biome.plantlife_limit or 0.1
+ biome.near_nodes_vertical = biome.near_nodes_vertical or 1
+
+-- specific to on-generate
+
+ biome.neighbors = biome.neighbors or biome.surface
+ biome.near_nodes_size = biome.near_nodes_size or 0
+ biome.near_nodes_count = biome.near_nodes_count or 1
+ biome.rarity = biome.rarity or 50
+ biome.max_count = biome.max_count or 5
+ if biome.check_air ~= false then biome.check_air = true end
+
+-- specific to abm spawner
+ biome.seed_diff = biome.seed_diff or 0
+ biome.light_min = biome.light_min or 0
+ biome.light_max = biome.light_max or 15
+ biome.depth_max = biome.depth_max or 1
+ biome.facedir = biome.facedir or 0
+end
+
+local function search_table(t, s)
+ for i = 1, #t do
+ if t[i] == s then return true end
+ end
+ return false
+end
+
+-- register the list of surfaces to spawn stuff on, filtering out all duplicates.
+-- separate the items by air-checking or non-air-checking map eval methods
+
+function biome_lib:register_generate_plant(biomedef, nodes_or_function_or_model)
+
+ -- if calling code passes an undefined node for a surface or
+ -- as a node to be spawned, don't register an action for it.
+
+ if type(nodes_or_function_or_model) == "string"
+ and string.find(nodes_or_function_or_model, ":")
+ and not minetest.registered_nodes[nodes_or_function_or_model] then
+ biome_lib:dbg("Warning: Ignored registration for undefined spawn node: "..dump(nodes_or_function_or_model))
+ return
+ end
+
+ if type(nodes_or_function_or_model) == "string"
+ and not string.find(nodes_or_function_or_model, ":") then
+ biome_lib:dbg("Warning: Registered function call using deprecated string method: "..dump(nodes_or_function_or_model))
+ end
+
+ if biomedef.check_air == false then
+ biome_lib:dbg("Register no-air-check mapgen hook: "..dump(nodes_or_function_or_model))
+ biome_lib.actionslist_no_aircheck[#biome_lib.actionslist_no_aircheck + 1] = { biomedef, nodes_or_function_or_model }
+ local s = biomedef.surface
+ if type(s) == "string" then
+ if s and (string.find(s, "^group:") or minetest.registered_nodes[s]) then
+ if not search_table(biome_lib.surfaceslist_no_aircheck, s) then
+ biome_lib.surfaceslist_no_aircheck[#biome_lib.surfaceslist_no_aircheck + 1] = s
+ end
+ else
+ biome_lib:dbg("Warning: Ignored no-air-check registration for undefined surface node: "..dump(s))
+ end
+ else
+ for i = 1, #biomedef.surface do
+ local s = biomedef.surface[i]
+ if s and (string.find(s, "^group:") or minetest.registered_nodes[s]) then
+ if not search_table(biome_lib.surfaceslist_no_aircheck, s) then
+ biome_lib.surfaceslist_no_aircheck[#biome_lib.surfaceslist_no_aircheck + 1] = s
+ end
+ else
+ biome_lib:dbg("Warning: Ignored no-air-check registration for undefined surface node: "..dump(s))
+ end
+ end
+ end
+ else
+ biome_lib:dbg("Register with-air-checking mapgen hook: "..dump(nodes_or_function_or_model))
+ biome_lib.actionslist_aircheck[#biome_lib.actionslist_aircheck + 1] = { biomedef, nodes_or_function_or_model }
+ local s = biomedef.surface
+ if type(s) == "string" then
+ if s and (string.find(s, "^group:") or minetest.registered_nodes[s]) then
+ if not search_table(biome_lib.surfaceslist_aircheck, s) then
+ biome_lib.surfaceslist_aircheck[#biome_lib.surfaceslist_aircheck + 1] = s
+ end
+ else
+ biome_lib:dbg("Warning: Ignored with-air-checking registration for undefined surface node: "..dump(s))
+ end
+ else
+ for i = 1, #biomedef.surface do
+ local s = biomedef.surface[i]
+ if s and (string.find(s, "^group:") or minetest.registered_nodes[s]) then
+ if not search_table(biome_lib.surfaceslist_aircheck, s) then
+ biome_lib.surfaceslist_aircheck[#biome_lib.surfaceslist_aircheck + 1] = s
+ end
+ else
+ biome_lib:dbg("Warning: Ignored with-air-checking registration for undefined surface node: "..dump(s))
+ end
+ end
+ end
+ end
+end
+
+function biome_lib:populate_surfaces(biome, nodes_or_function_or_model, snodes, checkair)
+
+ biome_lib:set_defaults(biome)
+
+ -- filter stage 1 - find nodes from the supplied surfaces that are within the current biome.
+
+ local in_biome_nodes = {}
+ local perlin_fertile_area = minetest.get_perlin(biome.seed_diff, perlin_octaves, perlin_persistence, perlin_scale)
+
+ for i = 1, #snodes do
+ local pos = snodes[i]
+ local p_top = { x = pos.x, y = pos.y + 1, z = pos.z }
+ local noise1 = perlin_fertile_area:get2d({x=pos.x, y=pos.z})
+ local noise2 = biome_lib.perlin_temperature:get2d({x=pos.x, y=pos.z})
+ local noise3 = biome_lib.perlin_humidity:get2d({x=pos.x+150, y=pos.z+50})
+ local biome_surfaces_string = dump(biome.surface)
+ local surface_ok = false
+
+ if not biome.depth then
+ local dest_node = minetest.get_node(pos)
+ if string.find(biome_surfaces_string, dest_node.name) then
+ surface_ok = true
+ else
+ if string.find(biome_surfaces_string, "group:") then
+ for j = 1, #biome.surface do
+ if string.find(biome.surface[j], "^group:")
+ and minetest.get_item_group(dest_node.name, biome.surface[j]) then
+ surface_ok = true
+ break
+ end
+ end
+ end
+ end
+ elseif not string.find(biome_surfaces_string, minetest.get_node({ x = pos.x, y = pos.y-biome.depth-1, z = pos.z }).name) then
+ surface_ok = true
+ end
+
+ if surface_ok
+ and (not checkair or minetest.get_node(p_top).name == "air")
+ and pos.y >= biome.min_elevation
+ and pos.y <= biome.max_elevation
+ and noise1 > biome.plantlife_limit
+ and noise2 <= biome.temp_min
+ and noise2 >= biome.temp_max
+ and noise3 <= biome.humidity_min
+ and noise3 >= biome.humidity_max
+ and (not biome.ncount or #(minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, biome.neighbors)) > biome.ncount)
+ and (not biome.near_nodes or #(minetest.find_nodes_in_area({x=pos.x-biome.near_nodes_size, y=pos.y-biome.near_nodes_vertical, z=pos.z-biome.near_nodes_size}, {x=pos.x+biome.near_nodes_size, y=pos.y+biome.near_nodes_vertical, z=pos.z+biome.near_nodes_size}, biome.near_nodes)) >= biome.near_nodes_count)
+ and math.random(1,100) > biome.rarity
+ and (not biome.below_nodes or string.find(dump(biome.below_nodes), minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name) )
+ then
+ in_biome_nodes[#in_biome_nodes + 1] = pos
+ end
+ end
+
+ -- filter stage 2 - find places within that biome area to place the plants.
+
+ local num_in_biome_nodes = #in_biome_nodes
+
+ if num_in_biome_nodes > 0 then
+ for i = 1, math.min(biome.max_count, num_in_biome_nodes) do
+ local tries = 0
+ local spawned = false
+ while tries < 2 and not spawned do
+ local pos = in_biome_nodes[math.random(1, num_in_biome_nodes)]
+ if biome.spawn_replace_node then
+ pos.y = pos.y-1
+ end
+ local p_top = { x = pos.x, y = pos.y + 1, z = pos.z }
+
+ if not (biome.avoid_nodes and biome.avoid_radius and minetest.find_node_near(p_top, biome.avoid_radius + math.random(-1.5,2), biome.avoid_nodes)) then
+ if biome.delete_above then
+ minetest.remove_node(p_top)
+ minetest.remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z})
+ end
+
+ if biome.delete_above_surround then
+ minetest.remove_node({x=p_top.x-1, y=p_top.y, z=p_top.z})
+ minetest.remove_node({x=p_top.x+1, y=p_top.y, z=p_top.z})
+ minetest.remove_node({x=p_top.x, y=p_top.y, z=p_top.z-1})
+ minetest.remove_node({x=p_top.x, y=p_top.y, z=p_top.z+1})
+
+ minetest.remove_node({x=p_top.x-1, y=p_top.y+1, z=p_top.z})
+ minetest.remove_node({x=p_top.x+1, y=p_top.y+1, z=p_top.z})
+ minetest.remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z-1})
+ minetest.remove_node({x=p_top.x, y=p_top.y+1, z=p_top.z+1})
+ end
+
+ if biome.spawn_replace_node then
+ minetest.remove_node(pos)
+ end
+
+ local objtype = type(nodes_or_function_or_model)
+
+ if objtype == "table" then
+ if nodes_or_function_or_model.axiom then
+ biome_lib:generate_tree(pos, nodes_or_function_or_model)
+ spawned = true
+ else
+ local fdir = nil
+ if biome.random_facedir then
+ fdir = math.random(biome.random_facedir[1], biome.random_facedir[2])
+ end
+ minetest.set_node(p_top, { name = nodes_or_function_or_model[math.random(#nodes_or_function_or_model)], param2 = fdir })
+ spawned = true
+ end
+ elseif objtype == "string" and
+ minetest.registered_nodes[nodes_or_function_or_model] then
+ local fdir = nil
+ if biome.random_facedir then
+ fdir = math.random(biome.random_facedir[1], biome.random_facedir[2])
+ end
+ minetest.set_node(p_top, { name = nodes_or_function_or_model, param2 = fdir })
+ spawned = true
+ elseif objtype == "function" then
+ nodes_or_function_or_model(pos)
+ spawned = true
+ elseif objtype == "string" and pcall(loadstring(("return %s(...)"):
+ format(nodes_or_function_or_model)),pos) then
+ spawned = true
+ else
+ biome_lib:dbg("Warning: Ignored invalid definition for object "..dump(nodes_or_function_or_model).." that was pointed at {"..dump(pos).."}")
+ end
+ else
+ tries = tries + 1
+ end
+ end
+ end
+ end
+end
+
+-- Primary mapgen spawner, for mods that can work with air checking enabled on
+-- a surface during the initial map read stage.
+
+function biome_lib:generate_block_with_air_checking()
+ if #biome_lib.blocklist_aircheck > 0 then
+
+ local minp = biome_lib.blocklist_aircheck[1][1]
+ local maxp = biome_lib.blocklist_aircheck[1][2]
+
+ -- use the block hash as a unique key into the surface nodes
+ -- tables, so that we can write the tables thread-safely.
+
+ local blockhash = minetest.hash_node_position(minp)
+
+ if not biome_lib.surface_nodes_aircheck.blockhash then
+
+ if type(minetest.find_nodes_in_area_under_air) == "function" then -- use newer API call
+ biome_lib.surface_nodes_aircheck.blockhash =
+ minetest.find_nodes_in_area_under_air(minp, maxp, biome_lib.surfaceslist_aircheck)
+ else
+ local search_area = minetest.find_nodes_in_area(minp, maxp, biome_lib.surfaceslist_aircheck)
+
+ -- search the generated block for air-bounded surfaces the slow way.
+
+ biome_lib.surface_nodes_aircheck.blockhash = {}
+
+ for i = 1, #search_area do
+ local pos = search_area[i]
+ local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
+ if minetest.get_node(p_top).name == "air" then
+ biome_lib.surface_nodes_aircheck.blockhash[#biome_lib.surface_nodes_aircheck.blockhash + 1] = pos
+ end
+ end
+ end
+ biome_lib.actioncount_aircheck.blockhash = 1
+
+ else
+ if biome_lib.actioncount_aircheck.blockhash <= #biome_lib.actionslist_aircheck then
+ -- [1] is biome, [2] is node/function/model
+ biome_lib:populate_surfaces(
+ biome_lib.actionslist_aircheck[biome_lib.actioncount_aircheck.blockhash][1],
+ biome_lib.actionslist_aircheck[biome_lib.actioncount_aircheck.blockhash][2],
+ biome_lib.surface_nodes_aircheck.blockhash, true)
+ biome_lib.actioncount_aircheck.blockhash = biome_lib.actioncount_aircheck.blockhash + 1
+ else
+ if biome_lib.surface_nodes_aircheck.blockhash then
+ table.remove(biome_lib.blocklist_aircheck, 1)
+ biome_lib.surface_nodes_aircheck.blockhash = nil
+ end
+ end
+ end
+ end
+end
+
+-- Secondary mapgen spawner, for mods that require disabling of
+-- checking for air during the initial map read stage.
+
+function biome_lib:generate_block_no_aircheck()
+ if #biome_lib.blocklist_no_aircheck > 0 then
+
+ local minp = biome_lib.blocklist_no_aircheck[1][1]
+ local maxp = biome_lib.blocklist_no_aircheck[1][2]
+
+ local blockhash = minetest.hash_node_position(minp)
+
+ if not biome_lib.surface_nodes_no_aircheck.blockhash then
+
+ -- directly read the block to be searched into the chunk cache
+
+ biome_lib.surface_nodes_no_aircheck.blockhash =
+ minetest.find_nodes_in_area(minp, maxp, biome_lib.surfaceslist_no_aircheck)
+ biome_lib.actioncount_no_aircheck.blockhash = 1
+
+ else
+ if biome_lib.actioncount_no_aircheck.blockhash <= #biome_lib.actionslist_no_aircheck then
+ biome_lib:populate_surfaces(
+ biome_lib.actionslist_no_aircheck[biome_lib.actioncount_no_aircheck.blockhash][1],
+ biome_lib.actionslist_no_aircheck[biome_lib.actioncount_no_aircheck.blockhash][2],
+ biome_lib.surface_nodes_no_aircheck.blockhash, false)
+ biome_lib.actioncount_no_aircheck.blockhash = biome_lib.actioncount_no_aircheck.blockhash + 1
+ else
+ if biome_lib.surface_nodes_no_aircheck.blockhash then
+ table.remove(biome_lib.blocklist_no_aircheck, 1)
+ biome_lib.surface_nodes_no_aircheck.blockhash = nil
+ end
+ end
+ end
+ end
+end
+
+-- "Record" the chunks being generated by the core mapgen
+
+minetest.register_on_generated(function(minp, maxp, blockseed)
+ biome_lib.blocklist_aircheck[#biome_lib.blocklist_aircheck + 1] = { minp, maxp }
+end)
+
+minetest.register_on_generated(function(minp, maxp, blockseed)
+ biome_lib.blocklist_no_aircheck[#biome_lib.blocklist_no_aircheck + 1] = { minp, maxp }
+end)
+
+-- "Play" them back, populating them with new stuff in the process
+
+minetest.register_globalstep(function(dtime)
+ if dtime < 0.2 and -- don't attempt to populate if lag is already too high
+ (#biome_lib.blocklist_aircheck > 0 or #biome_lib.blocklist_no_aircheck > 0) then
+ biome_lib.globalstep_start_time = minetest.get_us_time()
+ biome_lib.globalstep_runtime = 0
+ while (#biome_lib.blocklist_aircheck > 0 or #biome_lib.blocklist_no_aircheck > 0)
+ and biome_lib.globalstep_runtime < 200000 do -- 0.2 seconds, in uS.
+ if #biome_lib.blocklist_aircheck > 0 then
+ biome_lib:generate_block_with_air_checking()
+ end
+ if #biome_lib.blocklist_no_aircheck > 0 then
+ biome_lib:generate_block_no_aircheck()
+ end
+ biome_lib.globalstep_runtime = minetest.get_us_time() - biome_lib.globalstep_start_time
+ end
+ end
+end)
+
+-- Play out the entire log all at once on shutdown
+-- to prevent unpopulated map areas
+
+minetest.register_on_shutdown(function()
+ print("[biome_lib] Stand by, playing out the rest of the aircheck mapblock log")
+ print("(there are "..#biome_lib.blocklist_aircheck.." entries)...")
+ while true do
+ biome_lib:generate_block_with_air_checking(0.1)
+ if #biome_lib.blocklist_aircheck == 0 then return end
+ end
+end)
+
+minetest.register_on_shutdown(function()
+ print("[biome_lib] Stand by, playing out the rest of the no-aircheck mapblock log")
+ print("(there are "..#biome_lib.blocklist_aircheck.." entries)...")
+ while true do
+ biome_lib:generate_block_no_aircheck(0.1)
+ if #biome_lib.blocklist_no_aircheck == 0 then return end
+ end
+end)
+
+-- The spawning ABM
+
+function biome_lib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa)
+
+ local biome = {}
+
+ if type(sd) ~= "table" then
+ biome.spawn_delay = sd -- old api expects ABM interval param here.
+ biome.spawn_plants = {sp}
+ biome.avoid_radius = sr
+ biome.spawn_chance = sc
+ biome.spawn_surfaces = {ss}
+ biome.avoid_nodes = sa
+ else
+ biome = sd
+ end
+
+ if biome.spawn_delay*time_scale >= 1 then
+ biome.interval = biome.spawn_delay*time_scale
+ else
+ biome.interval = 1
+ end
+
+ biome_lib:set_defaults(biome)
+ biome.spawn_plants_count = #(biome.spawn_plants)
+
+ minetest.register_abm({
+ nodenames = biome.spawn_surfaces,
+ interval = biome.interval,
+ chance = biome.spawn_chance,
+ neighbors = biome.neighbors,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local p_top = { x = pos.x, y = pos.y + 1, z = pos.z }
+ local n_top = minetest.get_node(p_top)
+ local perlin_fertile_area = minetest.get_perlin(biome.seed_diff, perlin_octaves, perlin_persistence, perlin_scale)
+ local noise1 = perlin_fertile_area:get2d({x=p_top.x, y=p_top.z})
+ local noise2 = biome_lib.perlin_temperature:get2d({x=p_top.x, y=p_top.z})
+ local noise3 = biome_lib.perlin_humidity:get2d({x=p_top.x+150, y=p_top.z+50})
+ if noise1 > biome.plantlife_limit
+ and noise2 <= biome.temp_min
+ and noise2 >= biome.temp_max
+ and noise3 <= biome.humidity_min
+ and noise3 >= biome.humidity_max
+ and biome_lib:is_node_loaded(p_top) then
+ local n_light = minetest.get_node_light(p_top, nil)
+ if not (biome.avoid_nodes and biome.avoid_radius and minetest.find_node_near(p_top, biome.avoid_radius + math.random(-1.5,2), biome.avoid_nodes))
+ and n_light >= biome.light_min
+ and n_light <= biome.light_max
+ and (not(biome.neighbors and biome.ncount) or #(minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, biome.neighbors)) > biome.ncount )
+ and (not(biome.near_nodes and biome.near_nodes_count and biome.near_nodes_size) or #(minetest.find_nodes_in_area({x=pos.x-biome.near_nodes_size, y=pos.y-biome.near_nodes_vertical, z=pos.z-biome.near_nodes_size}, {x=pos.x+biome.near_nodes_size, y=pos.y+biome.near_nodes_vertical, z=pos.z+biome.near_nodes_size}, biome.near_nodes)) >= biome.near_nodes_count)
+ and (not(biome.air_count and biome.air_size) or #(minetest.find_nodes_in_area({x=p_top.x-biome.air_size, y=p_top.y, z=p_top.z-biome.air_size}, {x=p_top.x+biome.air_size, y=p_top.y, z=p_top.z+biome.air_size}, "air")) >= biome.air_count)
+ and pos.y >= biome.min_elevation
+ and pos.y <= biome.max_elevation
+ then
+ local walldir = biome_lib:find_adjacent_wall(p_top, biome.verticals_list, biome.choose_random_wall)
+ if biome.alt_wallnode and walldir then
+ if n_top.name == "air" then
+ minetest.set_node(p_top, { name = biome.alt_wallnode, param2 = walldir })
+ end
+ else
+ local currentsurface = minetest.get_node(pos).name
+ if currentsurface ~= "default:water_source"
+ or (currentsurface == "default:water_source" and #(minetest.find_nodes_in_area({x=pos.x, y=pos.y-biome.depth_max-1, z=pos.z}, {x=pos.x, y=pos.y, z=pos.z}, {"default:dirt", "default:dirt_with_grass", "default:sand"})) > 0 )
+ then
+ local rnd = math.random(1, biome.spawn_plants_count)
+ local plant_to_spawn = biome.spawn_plants[rnd]
+ local fdir = biome.facedir
+ if biome.random_facedir then
+ fdir = math.random(biome.random_facedir[1],biome.random_facedir[2])
+ end
+ if type(biome.spawn_plants) == "string" then
+ assert(loadstring(biome.spawn_plants.."(...)"))(pos)
+ elseif not biome.spawn_on_side and not biome.spawn_on_bottom and not biome.spawn_replace_node then
+ if n_top.name == "air" then
+ minetest.set_node(p_top, { name = plant_to_spawn, param2 = fdir })
+ end
+ elseif biome.spawn_replace_node then
+ minetest.set_node(pos, { name = plant_to_spawn, param2 = fdir })
+
+ elseif biome.spawn_on_side then
+ local onside = biome_lib:find_open_side(pos)
+ if onside then
+ minetest.set_node(onside.newpos, { name = plant_to_spawn, param2 = onside.facedir })
+ end
+ elseif biome.spawn_on_bottom then
+ if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then
+ minetest.set_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = plant_to_spawn, param2 = fdir} )
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ })
+end
+
+-- The growing ABM
+
+function biome_lib:grow_plants(opts)
+
+ local options = opts
+
+ options.height_limit = options.height_limit or 5
+ options.ground_nodes = options.ground_nodes or { "default:dirt_with_grass" }
+ options.grow_nodes = options.grow_nodes or { "default:dirt_with_grass" }
+ options.seed_diff = options.seed_diff or 0
+
+ if options.grow_delay*time_scale >= 1 then
+ options.interval = options.grow_delay*time_scale
+ else
+ options.interval = 1
+ end
+
+ minetest.register_abm({
+ nodenames = { options.grow_plant },
+ interval = options.interval,
+ chance = options.grow_chance,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local p_top = {x=pos.x, y=pos.y+1, z=pos.z}
+ local p_bot = {x=pos.x, y=pos.y-1, z=pos.z}
+ local n_top = minetest.get_node(p_top)
+ local n_bot = minetest.get_node(p_bot)
+ local root_node = minetest.get_node({x=pos.x, y=pos.y-options.height_limit, z=pos.z})
+ local walldir = nil
+ if options.need_wall and options.verticals_list then
+ walldir = biome_lib:find_adjacent_wall(p_top, options.verticals_list, options.choose_random_wall)
+ end
+ if (n_top.name == "air" or n_top.name == "default:snow")
+ and (not options.need_wall or (options.need_wall and walldir)) then
+ -- corner case for changing short junglegrass
+ -- to dry shrub in desert
+ if n_bot.name == options.dry_early_node and options.grow_plant == "junglegrass:short" then
+ minetest.set_node(pos, { name = "default:dry_shrub" })
+
+ elseif options.grow_vertically and walldir then
+ if biome_lib:search_downward(pos, options.height_limit, options.ground_nodes) then
+ minetest.set_node(p_top, { name = options.grow_plant, param2 = walldir})
+ end
+
+ elseif not options.grow_result and not options.grow_function then
+ minetest.remove_node(pos)
+
+ else
+ biome_lib:replace_object(pos, options.grow_result, options.grow_function, options.facedir, options.seed_diff)
+ end
+ end
+ end
+ })
+end
+
+-- Function to decide how to replace a plant - either grow it, replace it with
+-- a tree, run a function, or die with an error.
+
+function biome_lib:replace_object(pos, replacement, grow_function, walldir, seeddiff)
+ local growtype = type(grow_function)
+ if growtype == "table" then
+ minetest.remove_node(pos)
+ biome_lib:grow_tree(pos, grow_function)
+ return
+ elseif growtype == "function" then
+ local perlin_fertile_area = minetest.get_perlin(seeddiff, perlin_octaves, perlin_persistence, perlin_scale)
+ local noise1 = perlin_fertile_area:get2d({x=pos.x, y=pos.z})
+ local noise2 = biome_lib.perlin_temperature:get2d({x=pos.x, y=pos.z})
+ grow_function(pos,noise1,noise2,walldir)
+ return
+ elseif growtype == "string" then
+ local perlin_fertile_area = minetest.get_perlin(seeddiff, perlin_octaves, perlin_persistence, perlin_scale)
+ local noise1 = perlin_fertile_area:get2d({x=pos.x, y=pos.z})
+ local noise2 = biome_lib.perlin_temperature:get2d({x=pos.x, y=pos.z})
+ assert(loadstring(grow_function.."(...)"))(pos,noise1,noise2,walldir)
+ return
+ elseif growtype == "nil" then
+ minetest.set_node(pos, { name = replacement, param2 = walldir})
+ return
+ elseif growtype ~= "nil" and growtype ~= "string" and growtype ~= "table" then
+ error("Invalid grow function "..dump(grow_function).." used on object at ("..dump(pos)..")")
+ end
+end
+
+-- function to decide if a node has a wall that's in verticals_list{}
+-- returns wall direction of valid node, or nil if invalid.
+
+function biome_lib:find_adjacent_wall(pos, verticals, randomflag)
+ local verts = dump(verticals)
+ if randomflag then
+ local walltab = {}
+
+ if string.find(verts, minetest.get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name) then walltab[#walltab + 1] = 3 end
+ if string.find(verts, minetest.get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name) then walltab[#walltab + 1] = 2 end
+ if string.find(verts, minetest.get_node({ x=pos.x , y=pos.y, z=pos.z-1 }).name) then walltab[#walltab + 1] = 5 end
+ if string.find(verts, minetest.get_node({ x=pos.x , y=pos.y, z=pos.z+1 }).name) then walltab[#walltab + 1] = 4 end
+
+ if #walltab > 0 then return walltab[math.random(1, #walltab)] end
+
+ else
+ if string.find(verts, minetest.get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name) then return 3 end
+ if string.find(verts, minetest.get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name) then return 2 end
+ if string.find(verts, minetest.get_node({ x=pos.x , y=pos.y, z=pos.z-1 }).name) then return 5 end
+ if string.find(verts, minetest.get_node({ x=pos.x , y=pos.y, z=pos.z+1 }).name) then return 4 end
+ end
+ return nil
+end
+
+-- Function to search downward from the given position, looking for the first
+-- node that matches the ground table. Returns the new position, or nil if
+-- height limit is exceeded before finding it.
+
+function biome_lib:search_downward(pos, heightlimit, ground)
+ for i = 0, heightlimit do
+ if string.find(dump(ground), minetest.get_node({x=pos.x, y=pos.y-i, z = pos.z}).name) then
+ return {x=pos.x, y=pos.y-i, z = pos.z}
+ end
+ end
+ return false
+end
+
+function biome_lib:find_open_side(pos)
+ if minetest.get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name == "air" then
+ return {newpos = { x=pos.x-1, y=pos.y, z=pos.z }, facedir = 2}
+ end
+ if minetest.get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name == "air" then
+ return {newpos = { x=pos.x+1, y=pos.y, z=pos.z }, facedir = 3}
+ end
+ if minetest.get_node({ x=pos.x, y=pos.y, z=pos.z-1 }).name == "air" then
+ return {newpos = { x=pos.x, y=pos.y, z=pos.z-1 }, facedir = 4}
+ end
+ if minetest.get_node({ x=pos.x, y=pos.y, z=pos.z+1 }).name == "air" then
+ return {newpos = { x=pos.x, y=pos.y, z=pos.z+1 }, facedir = 5}
+ end
+ return nil
+end
+
+-- spawn_tree() on generate is routed through here so that other mods can hook
+-- into it.
+
+function biome_lib:generate_tree(pos, nodes_or_function_or_model)
+ minetest.spawn_tree(pos, nodes_or_function_or_model)
+end
+
+-- and this one's for the call used in the growing code
+
+function biome_lib:grow_tree(pos, nodes_or_function_or_model)
+ minetest.spawn_tree(pos, nodes_or_function_or_model)
+end
+
+-- Check for infinite stacks
+
+if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
+ biome_lib.expect_infinite_stacks = false
+else
+ biome_lib.expect_infinite_stacks = true
+end
+
+-- read a field from a node's definition
+
+function biome_lib:get_nodedef_field(nodename, fieldname)
+ if not minetest.registered_nodes[nodename] then
+ return nil
+ end
+ return minetest.registered_nodes[nodename][fieldname]
+end
+
+print("[Biome Lib] Loaded")
+
+minetest.after(0, function()
+ print("[Biome Lib] Registered a total of "..(#biome_lib.surfaceslist_aircheck)+(#biome_lib.surfaceslist_no_aircheck).." surface types to be evaluated, spread")
+ print("[Biome Lib] across "..#biome_lib.actionslist_aircheck.." actions with air-checking and "..#biome_lib.actionslist_no_aircheck.." actions without.")
+end)
+
diff --git a/biome_lib/locale/de.txt b/biome_lib/locale/de.txt
new file mode 100644
index 0000000..2886786
--- /dev/null
+++ b/biome_lib/locale/de.txt
@@ -0,0 +1,5 @@
+# Translation by Xanthin
+
+someone = jemand
+Sorry, %s owns that spot. = Entschuldige, %s gehoert diese Stelle.
+[Plantlife Library] Loaded = [Plantlife Library] Geladen
diff --git a/biome_lib/locale/fr.txt b/biome_lib/locale/fr.txt
new file mode 100644
index 0000000..9070900
--- /dev/null
+++ b/biome_lib/locale/fr.txt
@@ -0,0 +1,5 @@
+# Template
+
+someone = quelqu'un
+Sorry, %s owns that spot. = Désolé, %s possède cet endroit.
+[Plantlife Library] Loaded = [Librairie Plantlife] Chargée.
diff --git a/biome_lib/locale/template.txt b/biome_lib/locale/template.txt
new file mode 100644
index 0000000..0f5fbbd
--- /dev/null
+++ b/biome_lib/locale/template.txt
@@ -0,0 +1,5 @@
+# Template
+
+someone =
+Sorry, %s owns that spot. =
+[Plantlife Library] Loaded =
diff --git a/biome_lib/locale/tr.txt b/biome_lib/locale/tr.txt
new file mode 100644
index 0000000..4b596f4
--- /dev/null
+++ b/biome_lib/locale/tr.txt
@@ -0,0 +1,5 @@
+# Turkish translation by mahmutelmas06
+
+someone = birisi
+Sorry, %s owns that spot. = Üzgünüm, buranın sahibi %s.
+[Plantlife Library] Loaded = [Plantlife Library] yüklendi
diff --git a/blox/depends.txt b/blox/depends.txt
new file mode 100644
index 0000000..562cf63
--- /dev/null
+++ b/blox/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/blox/init.lua b/blox/init.lua
new file mode 100644
index 0000000..16af8e4
--- /dev/null
+++ b/blox/init.lua
@@ -0,0 +1,592 @@
+--[[
+***********
+Blox
+by Sanchez
+
+modified mapgen
+by blert2112
+***********
+--]]
+
+-- Remove Blox from creative inventory if colormachine mod is installed
+
+local creative = 0
+
+if (minetest.get_modpath("colormachine")) then
+ creative = 1
+end
+
+-- Uncomment the line below to remove most nodes from creative inventory regardless of colormachine mod.
+
+-- local creative = 1
+
+-- Uncomment the line above and change value to 0 to keep nodes in creative inventory when colormachine is installed.
+
+local version = "0.7.2112"
+
+local DyeSub = ""
+
+local Material = ""
+
+local BloxColours = {
+ "pink",
+ "yellow",
+ "white",
+ "orange",
+ "purple",
+ "blue",
+ "cyan",
+ "red",
+ "green",
+ "black",
+}
+
+local UNIFIED = {
+ "magenta",
+ "yellow",
+ "white",
+ "orange",
+ "violet",
+ "blue",
+ "cyan",
+ "red",
+ "green",
+ "black",
+}
+
+local BuiltInDyes = {
+ "pink",
+ "yellow",
+ "white",
+ "orange",
+ "violet",
+ "blue",
+ "cyan",
+ "red",
+ "green",
+ "black",
+}
+
+local FuelBlox = {
+ "wood",
+ "diamond_wood",
+ "corner_wood",
+ "checker_wood",
+ "cross_wood",
+ "quarter_wood",
+ "loop_wood",
+}
+
+local NodeClass = {
+ "diamond",
+ "quarter",
+ "cross",
+ "checker",
+ "corner",
+ "loop",
+}
+
+local NodeMaterial = {
+ "",
+ "_wood",
+ "_cobble",
+}
+
+-- Nodes
+
+minetest.register_node("blox:glowstone", {
+ description = "Glowstone",
+ tiles = {"blox_glowstone.png"},
+ --inventory_image = "blox_glowstone.png",
+ light_propagates = true,
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 30 ,
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("blox:glowore", {
+ description = "Glow Ore",
+ tiles = {"default_stone.png^blox_glowore.png"},
+ --inventory_image = {"default_stone.png^blox_glowore.png"},
+ light_propagates = true,
+ paramtype = "light",
+ sunlight_propagates = false,
+ light_source = 12 ,
+ drop = {
+ max_items = 1,
+ items = {
+ {
+ items = {"blox:glowstone"},
+ rarity = 15,
+ },
+ {
+ items = {"blox:glowdust"},
+ }
+ }
+ },
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("blox:glowdust", {
+ description = "Glow Dust",
+ drawtype = "plantlike",
+ tiles = {"blox_glowdust.png"},
+ inventory_image = "blox_glowdust.png",
+ light_propagates = true,
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 8 ,
+ walkable = false,
+ groups = {cracky=3, snappy=3},
+ })
+
+
+for _, NClass in ipairs(NodeClass) do
+
+ for _, colour in ipairs(BloxColours) do
+ local cname = colour .. NClass
+
+ minetest.register_node('blox:' .. cname, {
+ description = colour .. " " .. NClass .. " stone block",
+ tiles = { 'blox_' .. cname .. '.png' },
+ --inventory_image = 'blox_' .. cname .. '.png',
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_stone_defaults(),
+ })
+
+ local sname = colour .. NClass .. '_cobble'
+
+ minetest.register_node('blox:' .. sname, {
+ description = colour .. " " .. NClass .. " cobble block",
+ tiles = { 'blox_' .. sname .. '.png' },
+ --inventory_image = 'blox_' .. sname .. '.png',
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_stone_defaults(),
+ })
+
+ local sname = colour .. NClass .. '_wood'
+
+ minetest.register_node('blox:' .. sname, {
+ description = colour .. " " .. NClass .. " wooden block",
+ tiles = { 'blox_' .. sname .. '.png' },
+ --inventory_image = 'blox_' .. sname .. '.png',
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_wood_defaults(),
+ })
+
+ end
+end
+
+ for _, colour in ipairs(BloxColours) do
+ local sname = colour .. 'square'
+
+ minetest.register_node('blox:' .. sname, {
+ description = colour .. " stone square",
+ tiles = { 'blox_' .. sname .. '.png' },
+ --inventory_image = 'blox_' .. sname .. '.png',
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_stone_defaults(),
+ })
+
+ local sname = colour .. 'stone'
+
+ minetest.register_node('blox:' .. sname, {
+ description = colour .. " stone",
+ tiles = { 'blox_' .. sname .. '.png' },
+ --inventory_image = 'blox_' .. sname .. '.png',
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_stone_defaults(),
+ })
+
+ local sname = colour .. 'wood'
+
+ minetest.register_node('blox:' .. sname, {
+ description = colour .. " wood",
+ tiles = { 'blox_' .. sname .. '.png' },
+ --inventory_image = 'blox_' .. sname .. '.png',
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_wood_defaults(),
+ })
+
+ local sname = colour .. 'cobble'
+
+ minetest.register_node('blox:' .. sname, {
+ description = colour .. " cobble",
+ tiles = { 'blox_' .. sname .. '.png' },
+ --inventory_image = 'blox_' .. sname .. '.png',
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_stone_defaults(),
+ })
+
+
+end
+
+-- Crafting
+
+minetest.register_craft({
+ output = 'blox:glowstone 2',
+ recipe = {
+ {'', 'blox:glowdust', ''},
+ {'blox:glowdust', 'default:stone', 'blox:glowdust'},
+ {'', 'blox:glowdust', ''},
+ }
+})
+
+
+for _, colour in ipairs(UNIFIED) do
+
+if colour == "magenta" then
+DyeSub = "pink" else if colour == "violet" then
+DyeSub = "purple" else
+DyeSub = colour
+end
+end
+
+for _, NMaterial in ipairs(NodeMaterial) do
+
+if NMaterial == "_cobble" then
+Material = "default:cobble" else if NMaterial == "_wood" then
+Material = "default:wood" else
+Material = "default:stone"
+end
+end
+--print(Material, 'unifieddyes:' .. colour)
+--print('unifieddyes:' .. colour, Material)
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
+ recipe = {
+ {Material, 'unifieddyes:' .. colour},
+ {'unifieddyes:' .. colour, Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
+ recipe = {
+ {'unifieddyes:' .. colour, Material},
+ {Material, 'unifieddyes:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'cross' .. NMaterial .. ' 4',
+ recipe = {
+ {Material, '', Material},
+ {'', 'unifieddyes:' .. colour, ''},
+ {Material, '', Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 6',
+ recipe = {
+ {Material, 'unifieddyes:' .. colour,Material},
+ {'unifieddyes:' .. colour, Material, 'unifieddyes:' .. colour},
+ {Material, 'unifieddyes:' .. colour,Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 8',
+ recipe = {
+ {'unifieddyes:' .. colour, Material, 'unifieddyes:' .. colour},
+ {Material, 'unifieddyes:' .. colour,Material},
+ {'unifieddyes:' .. colour, Material, 'unifieddyes:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'loop' .. NMaterial .. ' 6',
+ recipe = {
+ {Material, Material, Material},
+ {Material, 'unifieddyes:' .. colour, Material},
+ {Material, Material, Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'corner' .. NMaterial .. ' 4',
+ recipe = {
+ {'unifieddyes:' .. colour, '', 'unifieddyes:' .. colour},
+ {'', Material, ''},
+ {'unifieddyes:' .. colour, '', 'unifieddyes:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'diamond' .. NMaterial .. ' 6',
+ recipe = {
+ {Material, 'unifieddyes:' .. colour, Material},
+ {'unifieddyes:' .. colour, '', 'unifieddyes:' .. colour},
+ {Material, 'unifieddyes:' .. colour, Material},
+ }
+})
+
+end
+end
+
+for _, colour in ipairs(UNIFIED) do
+
+if colour == "magenta" then
+DyeSub = "pink" else if colour == "violet" then
+DyeSub = "purple" else
+DyeSub = colour
+end
+end
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'square 6',
+ recipe = {
+ {'unifieddyes:' .. colour, 'default:stone', 'default:stone'},
+ {'default:stone', 'unifieddyes:' .. colour, 'default:stone'},
+ {'default:stone', 'default:stone', 'unifieddyes:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'stone 4',
+ recipe = {
+ {'', 'default:stone', ''},
+ {'default:stone', 'unifieddyes:' .. colour, 'default:stone'},
+ {'', 'default:stone', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'wood 4',
+ recipe = {
+ {'', 'default:wood', ''},
+ {'default:wood', 'unifieddyes:' .. colour, 'default:wood'},
+ {'', 'default:wood', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'cobble 4',
+ recipe = {
+ {'', 'default:cobble', ''},
+ {'default:cobble', 'unifieddyes:' .. colour, 'default:cobble'},
+ {'', 'default:cobble', ''},
+ }
+})
+end
+
+
+for _, colour in ipairs(BuiltInDyes) do
+
+if colour == "violet" then
+DyeSub = "purple" else
+DyeSub = colour
+end
+
+for _, NMaterial in ipairs(NodeMaterial) do
+
+if NMaterial == "_cobble" then
+Material = "default:cobble" else if NMaterial == "_wood" then
+Material = "default:wood" else
+Material = "default:stone"
+end
+end
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
+ recipe = {
+ {Material, 'dye:' .. colour},
+ {'dye:' .. colour, Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
+ recipe = {
+ {'dye:' .. colour, Material},
+ {Material, 'dye:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'cross' .. NMaterial .. ' 4',
+ recipe = {
+ {Material, '', Material},
+ {'', 'dye:' .. colour, ''},
+ {Material, '', Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 6',
+ recipe = {
+ {Material, 'dye:' .. colour,Material},
+ {'dye:' .. colour, Material, 'dye:' .. colour},
+ {Material, 'dye:' .. colour,Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 8',
+ recipe = {
+ {'dye:' .. colour, Material, 'dye:' .. colour},
+ {Material, 'dye:' .. colour,Material},
+ {'dye:' .. colour, Material, 'dye:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'loop' .. NMaterial .. ' 6',
+ recipe = {
+ {Material, Material, Material},
+ {Material, 'dye:' .. colour, Material},
+ {Material, Material, Material},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'corner' .. NMaterial .. ' 4',
+ recipe = {
+ {'dye:' .. colour, '', 'dye:' .. colour},
+ {'', Material, ''},
+ {'dye:' .. colour, '', 'dye:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'diamond' .. NMaterial .. ' 6',
+ recipe = {
+ {Material, 'dye:' .. colour, Material},
+ {'dye:' .. colour, '', 'dye:' .. colour},
+ {Material, 'dye:' .. colour, Material},
+ }
+})
+
+end
+end
+
+for _, colour in ipairs(UNIFIED) do
+
+if colour == "magenta" then
+DyeSub = "pink" else if colour == "violet" then
+DyeSub = "purple" else
+DyeSub = colour
+end
+end
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'square 6',
+ recipe = {
+ {'dye:' .. colour, 'default:stone', 'default:stone'},
+ {'default:stone', 'dye:' .. colour, 'default:stone'},
+ {'default:stone', 'default:stone', 'dye:' .. colour},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'stone 4',
+ recipe = {
+ {'', 'default:stone', ''},
+ {'default:stone', 'dye:' .. colour, 'default:stone'},
+ {'', 'default:stone', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'wood 4',
+ recipe = {
+ {'', 'default:wood', ''},
+ {'default:wood', 'dye:' .. colour, 'default:wood'},
+ {'', 'default:wood', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'blox:' .. DyeSub ..'cobble 4',
+ recipe = {
+ {'', 'default:cobble', ''},
+ {'default:cobble', 'dye:' .. colour, 'default:cobble'},
+ {'', 'default:cobble', ''},
+ }
+})
+end
+
+--Fuel
+ for _, colour in ipairs(BloxColours) do
+
+ for _, blox in ipairs(FuelBlox) do
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "blox:" .. colour .. blox,
+ burntime = 7,
+})
+
+end
+end
+
+minetest.register_tool("blox:bloodbane", {
+ description = "Blood Bane",
+ inventory_image = "blox_bloodbane.png",
+ tool_capabilities = {
+ full_punch_interval = 0.2,
+ max_drop_level=1,
+ groupcaps={
+ fleshy={times={[1]=0.001, [2]=0.001, [3]=0.001}, uses=0, maxlevel=3},
+ snappy={times={[1]=0.01, [2]=0.01, [3]=0.01}, uses=0, maxlevel=3},
+ crumbly={times={[1]=0.01, [2]=0.01, [3]=0.01}, uses=0, maxlevel=3},
+ cracky={times={[1]=0.01, [2]=0.01, [3]=0.01}, uses=0, maxlevel=3},
+ choppy={times={[1]=0.01, [2]=0.01, [3]=0.01}, uses=0, maxlevel=3}
+ },
+ damage_groups = {fleshy=200},
+ }
+})
+
+local sea_level = 1
+
+minetest.register_on_mapgen_init(function(mapgen_params)
+ sea_level = mapgen_params.water_level
+end)
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "blox:glowore",
+ wherein = "default:stone",
+ clust_scarcity = 36 * 36 * 36,
+ clust_num_ores = 3,
+ clust_size = 2,
+ y_min = sea_level,
+ y_max = 31000,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "blox:glowore",
+ wherein = "default:stone",
+ clust_scarcity = 14 * 14 * 14,
+ clust_num_ores = 5,
+ clust_size = 3,
+ y_min = sea_level - 30,
+ y_max = sea_level + 20,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "blox:glowore",
+ wherein = "default:stone",
+ clust_scarcity = 36 * 36 * 36,
+ clust_num_ores = 3,
+ clust_size = 2,
+ y_min = -31000,
+ y_max = sea_level - 1,
+})
+
+print("Blox Mod [" ..version.. "] Loaded!")
diff --git a/blox/textures/Thumbs.db b/blox/textures/Thumbs.db
new file mode 100644
index 0000000..1abe13b
--- /dev/null
+++ b/blox/textures/Thumbs.db
Binary files differ
diff --git a/blox/textures/blox_blackchecker.png b/blox/textures/blox_blackchecker.png
new file mode 100644
index 0000000..3adca0b
--- /dev/null
+++ b/blox/textures/blox_blackchecker.png
Binary files differ
diff --git a/blox/textures/blox_blackchecker_cobble.png b/blox/textures/blox_blackchecker_cobble.png
new file mode 100644
index 0000000..d29b1ea
--- /dev/null
+++ b/blox/textures/blox_blackchecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blackchecker_wood.png b/blox/textures/blox_blackchecker_wood.png
new file mode 100644
index 0000000..1c9d6ed
--- /dev/null
+++ b/blox/textures/blox_blackchecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_blackcobble.png b/blox/textures/blox_blackcobble.png
new file mode 100644
index 0000000..10aceb8
--- /dev/null
+++ b/blox/textures/blox_blackcobble.png
Binary files differ
diff --git a/blox/textures/blox_blackcorner.png b/blox/textures/blox_blackcorner.png
new file mode 100644
index 0000000..67b61ed
--- /dev/null
+++ b/blox/textures/blox_blackcorner.png
Binary files differ
diff --git a/blox/textures/blox_blackcorner_cobble.png b/blox/textures/blox_blackcorner_cobble.png
new file mode 100644
index 0000000..2db1f3f
--- /dev/null
+++ b/blox/textures/blox_blackcorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blackcorner_wood.png b/blox/textures/blox_blackcorner_wood.png
new file mode 100644
index 0000000..3713448
--- /dev/null
+++ b/blox/textures/blox_blackcorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_blackcross.png b/blox/textures/blox_blackcross.png
new file mode 100644
index 0000000..d601b7c
--- /dev/null
+++ b/blox/textures/blox_blackcross.png
Binary files differ
diff --git a/blox/textures/blox_blackcross_cobble.png b/blox/textures/blox_blackcross_cobble.png
new file mode 100644
index 0000000..2fecb48
--- /dev/null
+++ b/blox/textures/blox_blackcross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blackcross_wood.png b/blox/textures/blox_blackcross_wood.png
new file mode 100644
index 0000000..494adf0
--- /dev/null
+++ b/blox/textures/blox_blackcross_wood.png
Binary files differ
diff --git a/blox/textures/blox_blackdiamond.png b/blox/textures/blox_blackdiamond.png
new file mode 100644
index 0000000..8185a4a
--- /dev/null
+++ b/blox/textures/blox_blackdiamond.png
Binary files differ
diff --git a/blox/textures/blox_blackdiamond_cobble.png b/blox/textures/blox_blackdiamond_cobble.png
new file mode 100644
index 0000000..706f7f1
--- /dev/null
+++ b/blox/textures/blox_blackdiamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blackdiamond_wood.png b/blox/textures/blox_blackdiamond_wood.png
new file mode 100644
index 0000000..c1450e4
--- /dev/null
+++ b/blox/textures/blox_blackdiamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_blackloop.png b/blox/textures/blox_blackloop.png
new file mode 100644
index 0000000..78219d4
--- /dev/null
+++ b/blox/textures/blox_blackloop.png
Binary files differ
diff --git a/blox/textures/blox_blackloop_cobble.png b/blox/textures/blox_blackloop_cobble.png
new file mode 100644
index 0000000..1921e7f
--- /dev/null
+++ b/blox/textures/blox_blackloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blackloop_wood.png b/blox/textures/blox_blackloop_wood.png
new file mode 100644
index 0000000..80c05b0
--- /dev/null
+++ b/blox/textures/blox_blackloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_blackquarter.png b/blox/textures/blox_blackquarter.png
new file mode 100644
index 0000000..899bce9
--- /dev/null
+++ b/blox/textures/blox_blackquarter.png
Binary files differ
diff --git a/blox/textures/blox_blackquarter_cobble.png b/blox/textures/blox_blackquarter_cobble.png
new file mode 100644
index 0000000..9e4852b
--- /dev/null
+++ b/blox/textures/blox_blackquarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blackquarter_wood.png b/blox/textures/blox_blackquarter_wood.png
new file mode 100644
index 0000000..35c7b65
--- /dev/null
+++ b/blox/textures/blox_blackquarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_blacksquare.png b/blox/textures/blox_blacksquare.png
new file mode 100644
index 0000000..bb3aef6
--- /dev/null
+++ b/blox/textures/blox_blacksquare.png
Binary files differ
diff --git a/blox/textures/blox_blackstone.png b/blox/textures/blox_blackstone.png
new file mode 100644
index 0000000..cbd4c5d
--- /dev/null
+++ b/blox/textures/blox_blackstone.png
Binary files differ
diff --git a/blox/textures/blox_blackwood.png b/blox/textures/blox_blackwood.png
new file mode 100644
index 0000000..b5e5404
--- /dev/null
+++ b/blox/textures/blox_blackwood.png
Binary files differ
diff --git a/blox/textures/blox_bloodbane.png b/blox/textures/blox_bloodbane.png
new file mode 100644
index 0000000..d823985
--- /dev/null
+++ b/blox/textures/blox_bloodbane.png
Binary files differ
diff --git a/blox/textures/blox_bluechecker.png b/blox/textures/blox_bluechecker.png
new file mode 100644
index 0000000..7ce673f
--- /dev/null
+++ b/blox/textures/blox_bluechecker.png
Binary files differ
diff --git a/blox/textures/blox_bluechecker_cobble.png b/blox/textures/blox_bluechecker_cobble.png
new file mode 100644
index 0000000..f24d7d6
--- /dev/null
+++ b/blox/textures/blox_bluechecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_bluechecker_wood.png b/blox/textures/blox_bluechecker_wood.png
new file mode 100644
index 0000000..6b5da07
--- /dev/null
+++ b/blox/textures/blox_bluechecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_bluecobble.png b/blox/textures/blox_bluecobble.png
new file mode 100644
index 0000000..2fe29a3
--- /dev/null
+++ b/blox/textures/blox_bluecobble.png
Binary files differ
diff --git a/blox/textures/blox_bluecorner.png b/blox/textures/blox_bluecorner.png
new file mode 100644
index 0000000..307d80a
--- /dev/null
+++ b/blox/textures/blox_bluecorner.png
Binary files differ
diff --git a/blox/textures/blox_bluecorner_cobble.png b/blox/textures/blox_bluecorner_cobble.png
new file mode 100644
index 0000000..4841b79
--- /dev/null
+++ b/blox/textures/blox_bluecorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_bluecorner_wood.png b/blox/textures/blox_bluecorner_wood.png
new file mode 100644
index 0000000..d03fbe3
--- /dev/null
+++ b/blox/textures/blox_bluecorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_bluecross.png b/blox/textures/blox_bluecross.png
new file mode 100644
index 0000000..90d28b8
--- /dev/null
+++ b/blox/textures/blox_bluecross.png
Binary files differ
diff --git a/blox/textures/blox_bluecross_cobble.png b/blox/textures/blox_bluecross_cobble.png
new file mode 100644
index 0000000..8db5445
--- /dev/null
+++ b/blox/textures/blox_bluecross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_bluecross_wood.png b/blox/textures/blox_bluecross_wood.png
new file mode 100644
index 0000000..418c035
--- /dev/null
+++ b/blox/textures/blox_bluecross_wood.png
Binary files differ
diff --git a/blox/textures/blox_bluediamond.png b/blox/textures/blox_bluediamond.png
new file mode 100644
index 0000000..3dc41c4
--- /dev/null
+++ b/blox/textures/blox_bluediamond.png
Binary files differ
diff --git a/blox/textures/blox_bluediamond_cobble.png b/blox/textures/blox_bluediamond_cobble.png
new file mode 100644
index 0000000..3fc5cbf
--- /dev/null
+++ b/blox/textures/blox_bluediamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_bluediamond_wood.png b/blox/textures/blox_bluediamond_wood.png
new file mode 100644
index 0000000..e4c795a
--- /dev/null
+++ b/blox/textures/blox_bluediamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_blueloop.png b/blox/textures/blox_blueloop.png
new file mode 100644
index 0000000..dd8562a
--- /dev/null
+++ b/blox/textures/blox_blueloop.png
Binary files differ
diff --git a/blox/textures/blox_blueloop_cobble.png b/blox/textures/blox_blueloop_cobble.png
new file mode 100644
index 0000000..4856ef1
--- /dev/null
+++ b/blox/textures/blox_blueloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_blueloop_wood.png b/blox/textures/blox_blueloop_wood.png
new file mode 100644
index 0000000..eeda09b
--- /dev/null
+++ b/blox/textures/blox_blueloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_bluequarter.png b/blox/textures/blox_bluequarter.png
new file mode 100644
index 0000000..c8604e1
--- /dev/null
+++ b/blox/textures/blox_bluequarter.png
Binary files differ
diff --git a/blox/textures/blox_bluequarter_cobble.png b/blox/textures/blox_bluequarter_cobble.png
new file mode 100644
index 0000000..e32043a
--- /dev/null
+++ b/blox/textures/blox_bluequarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_bluequarter_wood.png b/blox/textures/blox_bluequarter_wood.png
new file mode 100644
index 0000000..b3304e1
--- /dev/null
+++ b/blox/textures/blox_bluequarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_bluesquare.png b/blox/textures/blox_bluesquare.png
new file mode 100644
index 0000000..c02b0fc
--- /dev/null
+++ b/blox/textures/blox_bluesquare.png
Binary files differ
diff --git a/blox/textures/blox_bluestone.png b/blox/textures/blox_bluestone.png
new file mode 100644
index 0000000..83aa167
--- /dev/null
+++ b/blox/textures/blox_bluestone.png
Binary files differ
diff --git a/blox/textures/blox_bluewood.png b/blox/textures/blox_bluewood.png
new file mode 100644
index 0000000..2f2843b
--- /dev/null
+++ b/blox/textures/blox_bluewood.png
Binary files differ
diff --git a/blox/textures/blox_cyanchecker.png b/blox/textures/blox_cyanchecker.png
new file mode 100644
index 0000000..33456e1
--- /dev/null
+++ b/blox/textures/blox_cyanchecker.png
Binary files differ
diff --git a/blox/textures/blox_cyanchecker_cobble.png b/blox/textures/blox_cyanchecker_cobble.png
new file mode 100644
index 0000000..fedc4f8
--- /dev/null
+++ b/blox/textures/blox_cyanchecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_cyanchecker_wood.png b/blox/textures/blox_cyanchecker_wood.png
new file mode 100644
index 0000000..c38b32d
--- /dev/null
+++ b/blox/textures/blox_cyanchecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_cyancobble.png b/blox/textures/blox_cyancobble.png
new file mode 100644
index 0000000..8252155
--- /dev/null
+++ b/blox/textures/blox_cyancobble.png
Binary files differ
diff --git a/blox/textures/blox_cyancorner.png b/blox/textures/blox_cyancorner.png
new file mode 100644
index 0000000..ef25211
--- /dev/null
+++ b/blox/textures/blox_cyancorner.png
Binary files differ
diff --git a/blox/textures/blox_cyancorner_cobble.png b/blox/textures/blox_cyancorner_cobble.png
new file mode 100644
index 0000000..ad832d9
--- /dev/null
+++ b/blox/textures/blox_cyancorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_cyancorner_wood.png b/blox/textures/blox_cyancorner_wood.png
new file mode 100644
index 0000000..b848ec2
--- /dev/null
+++ b/blox/textures/blox_cyancorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_cyancross.png b/blox/textures/blox_cyancross.png
new file mode 100644
index 0000000..095d5db
--- /dev/null
+++ b/blox/textures/blox_cyancross.png
Binary files differ
diff --git a/blox/textures/blox_cyancross_cobble.png b/blox/textures/blox_cyancross_cobble.png
new file mode 100644
index 0000000..bb171ca
--- /dev/null
+++ b/blox/textures/blox_cyancross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_cyancross_wood.png b/blox/textures/blox_cyancross_wood.png
new file mode 100644
index 0000000..59dbf72
--- /dev/null
+++ b/blox/textures/blox_cyancross_wood.png
Binary files differ
diff --git a/blox/textures/blox_cyandiamond.png b/blox/textures/blox_cyandiamond.png
new file mode 100644
index 0000000..a5a6220
--- /dev/null
+++ b/blox/textures/blox_cyandiamond.png
Binary files differ
diff --git a/blox/textures/blox_cyandiamond_cobble.png b/blox/textures/blox_cyandiamond_cobble.png
new file mode 100644
index 0000000..3295340
--- /dev/null
+++ b/blox/textures/blox_cyandiamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_cyandiamond_wood.png b/blox/textures/blox_cyandiamond_wood.png
new file mode 100644
index 0000000..3e31751
--- /dev/null
+++ b/blox/textures/blox_cyandiamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_cyanloop.png b/blox/textures/blox_cyanloop.png
new file mode 100644
index 0000000..db68d88
--- /dev/null
+++ b/blox/textures/blox_cyanloop.png
Binary files differ
diff --git a/blox/textures/blox_cyanloop_cobble.png b/blox/textures/blox_cyanloop_cobble.png
new file mode 100644
index 0000000..0436a2e
--- /dev/null
+++ b/blox/textures/blox_cyanloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_cyanloop_wood.png b/blox/textures/blox_cyanloop_wood.png
new file mode 100644
index 0000000..553f435
--- /dev/null
+++ b/blox/textures/blox_cyanloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_cyanquarter.png b/blox/textures/blox_cyanquarter.png
new file mode 100644
index 0000000..3032587
--- /dev/null
+++ b/blox/textures/blox_cyanquarter.png
Binary files differ
diff --git a/blox/textures/blox_cyanquarter_cobble.png b/blox/textures/blox_cyanquarter_cobble.png
new file mode 100644
index 0000000..8914934
--- /dev/null
+++ b/blox/textures/blox_cyanquarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_cyanquarter_wood.png b/blox/textures/blox_cyanquarter_wood.png
new file mode 100644
index 0000000..0e6b942
--- /dev/null
+++ b/blox/textures/blox_cyanquarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_cyansquare.png b/blox/textures/blox_cyansquare.png
new file mode 100644
index 0000000..f70ee83
--- /dev/null
+++ b/blox/textures/blox_cyansquare.png
Binary files differ
diff --git a/blox/textures/blox_cyanstone.png b/blox/textures/blox_cyanstone.png
new file mode 100644
index 0000000..1f8f8fa
--- /dev/null
+++ b/blox/textures/blox_cyanstone.png
Binary files differ
diff --git a/blox/textures/blox_cyanwood.png b/blox/textures/blox_cyanwood.png
new file mode 100644
index 0000000..6b2cb75
--- /dev/null
+++ b/blox/textures/blox_cyanwood.png
Binary files differ
diff --git a/blox/textures/blox_glowdust.png b/blox/textures/blox_glowdust.png
new file mode 100644
index 0000000..2660e13
--- /dev/null
+++ b/blox/textures/blox_glowdust.png
Binary files differ
diff --git a/blox/textures/blox_glowore.png b/blox/textures/blox_glowore.png
new file mode 100644
index 0000000..7f22b51
--- /dev/null
+++ b/blox/textures/blox_glowore.png
Binary files differ
diff --git a/blox/textures/blox_glowstone.png b/blox/textures/blox_glowstone.png
new file mode 100644
index 0000000..32e9e7e
--- /dev/null
+++ b/blox/textures/blox_glowstone.png
Binary files differ
diff --git a/blox/textures/blox_greenchecker.png b/blox/textures/blox_greenchecker.png
new file mode 100644
index 0000000..2b324f8
--- /dev/null
+++ b/blox/textures/blox_greenchecker.png
Binary files differ
diff --git a/blox/textures/blox_greenchecker_cobble.png b/blox/textures/blox_greenchecker_cobble.png
new file mode 100644
index 0000000..3645912
--- /dev/null
+++ b/blox/textures/blox_greenchecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_greenchecker_wood.png b/blox/textures/blox_greenchecker_wood.png
new file mode 100644
index 0000000..60eaccb
--- /dev/null
+++ b/blox/textures/blox_greenchecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_greencobble.png b/blox/textures/blox_greencobble.png
new file mode 100644
index 0000000..a572c59
--- /dev/null
+++ b/blox/textures/blox_greencobble.png
Binary files differ
diff --git a/blox/textures/blox_greencorner.png b/blox/textures/blox_greencorner.png
new file mode 100644
index 0000000..cb9e20a
--- /dev/null
+++ b/blox/textures/blox_greencorner.png
Binary files differ
diff --git a/blox/textures/blox_greencorner_cobble.png b/blox/textures/blox_greencorner_cobble.png
new file mode 100644
index 0000000..19e4038
--- /dev/null
+++ b/blox/textures/blox_greencorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_greencorner_wood.png b/blox/textures/blox_greencorner_wood.png
new file mode 100644
index 0000000..09089ff
--- /dev/null
+++ b/blox/textures/blox_greencorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_greencross.png b/blox/textures/blox_greencross.png
new file mode 100644
index 0000000..e7e3266
--- /dev/null
+++ b/blox/textures/blox_greencross.png
Binary files differ
diff --git a/blox/textures/blox_greencross_cobble.png b/blox/textures/blox_greencross_cobble.png
new file mode 100644
index 0000000..332903d
--- /dev/null
+++ b/blox/textures/blox_greencross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_greencross_wood.png b/blox/textures/blox_greencross_wood.png
new file mode 100644
index 0000000..5daff0f
--- /dev/null
+++ b/blox/textures/blox_greencross_wood.png
Binary files differ
diff --git a/blox/textures/blox_greendiamond.png b/blox/textures/blox_greendiamond.png
new file mode 100644
index 0000000..7ab9955
--- /dev/null
+++ b/blox/textures/blox_greendiamond.png
Binary files differ
diff --git a/blox/textures/blox_greendiamond_cobble.png b/blox/textures/blox_greendiamond_cobble.png
new file mode 100644
index 0000000..4f459d5
--- /dev/null
+++ b/blox/textures/blox_greendiamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_greendiamond_wood.png b/blox/textures/blox_greendiamond_wood.png
new file mode 100644
index 0000000..391aaf2
--- /dev/null
+++ b/blox/textures/blox_greendiamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_greenloop.png b/blox/textures/blox_greenloop.png
new file mode 100644
index 0000000..e67bf77
--- /dev/null
+++ b/blox/textures/blox_greenloop.png
Binary files differ
diff --git a/blox/textures/blox_greenloop_cobble.png b/blox/textures/blox_greenloop_cobble.png
new file mode 100644
index 0000000..1de03d2
--- /dev/null
+++ b/blox/textures/blox_greenloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_greenloop_wood.png b/blox/textures/blox_greenloop_wood.png
new file mode 100644
index 0000000..7f55124
--- /dev/null
+++ b/blox/textures/blox_greenloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_greenquarter.png b/blox/textures/blox_greenquarter.png
new file mode 100644
index 0000000..8da4654
--- /dev/null
+++ b/blox/textures/blox_greenquarter.png
Binary files differ
diff --git a/blox/textures/blox_greenquarter_cobble.png b/blox/textures/blox_greenquarter_cobble.png
new file mode 100644
index 0000000..acb5d79
--- /dev/null
+++ b/blox/textures/blox_greenquarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_greenquarter_wood.png b/blox/textures/blox_greenquarter_wood.png
new file mode 100644
index 0000000..afb11d8
--- /dev/null
+++ b/blox/textures/blox_greenquarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_greensquare.png b/blox/textures/blox_greensquare.png
new file mode 100644
index 0000000..c69dc47
--- /dev/null
+++ b/blox/textures/blox_greensquare.png
Binary files differ
diff --git a/blox/textures/blox_greenstone.png b/blox/textures/blox_greenstone.png
new file mode 100644
index 0000000..5c9782d
--- /dev/null
+++ b/blox/textures/blox_greenstone.png
Binary files differ
diff --git a/blox/textures/blox_greenwood.png b/blox/textures/blox_greenwood.png
new file mode 100644
index 0000000..51b06fc
--- /dev/null
+++ b/blox/textures/blox_greenwood.png
Binary files differ
diff --git a/blox/textures/blox_orangechecker.png b/blox/textures/blox_orangechecker.png
new file mode 100644
index 0000000..a70b394
--- /dev/null
+++ b/blox/textures/blox_orangechecker.png
Binary files differ
diff --git a/blox/textures/blox_orangechecker_cobble.png b/blox/textures/blox_orangechecker_cobble.png
new file mode 100644
index 0000000..e784605
--- /dev/null
+++ b/blox/textures/blox_orangechecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_orangechecker_wood.png b/blox/textures/blox_orangechecker_wood.png
new file mode 100644
index 0000000..d154caf
--- /dev/null
+++ b/blox/textures/blox_orangechecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_orangecobble.png b/blox/textures/blox_orangecobble.png
new file mode 100644
index 0000000..603bdd8
--- /dev/null
+++ b/blox/textures/blox_orangecobble.png
Binary files differ
diff --git a/blox/textures/blox_orangecorner.png b/blox/textures/blox_orangecorner.png
new file mode 100644
index 0000000..0ea4109
--- /dev/null
+++ b/blox/textures/blox_orangecorner.png
Binary files differ
diff --git a/blox/textures/blox_orangecorner_cobble.png b/blox/textures/blox_orangecorner_cobble.png
new file mode 100644
index 0000000..faf77c6
--- /dev/null
+++ b/blox/textures/blox_orangecorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_orangecorner_wood.png b/blox/textures/blox_orangecorner_wood.png
new file mode 100644
index 0000000..4cf62a5
--- /dev/null
+++ b/blox/textures/blox_orangecorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_orangecross.png b/blox/textures/blox_orangecross.png
new file mode 100644
index 0000000..0e5e62a
--- /dev/null
+++ b/blox/textures/blox_orangecross.png
Binary files differ
diff --git a/blox/textures/blox_orangecross_cobble.png b/blox/textures/blox_orangecross_cobble.png
new file mode 100644
index 0000000..795ae5f
--- /dev/null
+++ b/blox/textures/blox_orangecross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_orangecross_wood.png b/blox/textures/blox_orangecross_wood.png
new file mode 100644
index 0000000..0061bd2
--- /dev/null
+++ b/blox/textures/blox_orangecross_wood.png
Binary files differ
diff --git a/blox/textures/blox_orangediamond.png b/blox/textures/blox_orangediamond.png
new file mode 100644
index 0000000..630f429
--- /dev/null
+++ b/blox/textures/blox_orangediamond.png
Binary files differ
diff --git a/blox/textures/blox_orangediamond_cobble.png b/blox/textures/blox_orangediamond_cobble.png
new file mode 100644
index 0000000..6a523e7
--- /dev/null
+++ b/blox/textures/blox_orangediamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_orangediamond_wood.png b/blox/textures/blox_orangediamond_wood.png
new file mode 100644
index 0000000..0856324
--- /dev/null
+++ b/blox/textures/blox_orangediamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_orangeloop.png b/blox/textures/blox_orangeloop.png
new file mode 100644
index 0000000..e8cadb1
--- /dev/null
+++ b/blox/textures/blox_orangeloop.png
Binary files differ
diff --git a/blox/textures/blox_orangeloop_cobble.png b/blox/textures/blox_orangeloop_cobble.png
new file mode 100644
index 0000000..001401f
--- /dev/null
+++ b/blox/textures/blox_orangeloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_orangeloop_wood.png b/blox/textures/blox_orangeloop_wood.png
new file mode 100644
index 0000000..b86d942
--- /dev/null
+++ b/blox/textures/blox_orangeloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_orangequarter.png b/blox/textures/blox_orangequarter.png
new file mode 100644
index 0000000..0094825
--- /dev/null
+++ b/blox/textures/blox_orangequarter.png
Binary files differ
diff --git a/blox/textures/blox_orangequarter_cobble.png b/blox/textures/blox_orangequarter_cobble.png
new file mode 100644
index 0000000..8c9c6c8
--- /dev/null
+++ b/blox/textures/blox_orangequarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_orangequarter_wood.png b/blox/textures/blox_orangequarter_wood.png
new file mode 100644
index 0000000..87988e6
--- /dev/null
+++ b/blox/textures/blox_orangequarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_orangesquare.png b/blox/textures/blox_orangesquare.png
new file mode 100644
index 0000000..5c83699
--- /dev/null
+++ b/blox/textures/blox_orangesquare.png
Binary files differ
diff --git a/blox/textures/blox_orangestone.png b/blox/textures/blox_orangestone.png
new file mode 100644
index 0000000..326c82a
--- /dev/null
+++ b/blox/textures/blox_orangestone.png
Binary files differ
diff --git a/blox/textures/blox_orangewood.png b/blox/textures/blox_orangewood.png
new file mode 100644
index 0000000..fe1c531
--- /dev/null
+++ b/blox/textures/blox_orangewood.png
Binary files differ
diff --git a/blox/textures/blox_pinkchecker.png b/blox/textures/blox_pinkchecker.png
new file mode 100644
index 0000000..6c67f3a
--- /dev/null
+++ b/blox/textures/blox_pinkchecker.png
Binary files differ
diff --git a/blox/textures/blox_pinkchecker_cobble.png b/blox/textures/blox_pinkchecker_cobble.png
new file mode 100644
index 0000000..d622419
--- /dev/null
+++ b/blox/textures/blox_pinkchecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkchecker_wood.png b/blox/textures/blox_pinkchecker_wood.png
new file mode 100644
index 0000000..fb890e3
--- /dev/null
+++ b/blox/textures/blox_pinkchecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_pinkcobble.png b/blox/textures/blox_pinkcobble.png
new file mode 100644
index 0000000..b5ef57d
--- /dev/null
+++ b/blox/textures/blox_pinkcobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkcorner.png b/blox/textures/blox_pinkcorner.png
new file mode 100644
index 0000000..70af179
--- /dev/null
+++ b/blox/textures/blox_pinkcorner.png
Binary files differ
diff --git a/blox/textures/blox_pinkcorner_cobble.png b/blox/textures/blox_pinkcorner_cobble.png
new file mode 100644
index 0000000..369e5bf
--- /dev/null
+++ b/blox/textures/blox_pinkcorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkcorner_wood.png b/blox/textures/blox_pinkcorner_wood.png
new file mode 100644
index 0000000..dc1f71e
--- /dev/null
+++ b/blox/textures/blox_pinkcorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_pinkcross.png b/blox/textures/blox_pinkcross.png
new file mode 100644
index 0000000..684d38f
--- /dev/null
+++ b/blox/textures/blox_pinkcross.png
Binary files differ
diff --git a/blox/textures/blox_pinkcross_cobble.png b/blox/textures/blox_pinkcross_cobble.png
new file mode 100644
index 0000000..e2889ad
--- /dev/null
+++ b/blox/textures/blox_pinkcross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkcross_wood.png b/blox/textures/blox_pinkcross_wood.png
new file mode 100644
index 0000000..90dcb46
--- /dev/null
+++ b/blox/textures/blox_pinkcross_wood.png
Binary files differ
diff --git a/blox/textures/blox_pinkdiamond.png b/blox/textures/blox_pinkdiamond.png
new file mode 100644
index 0000000..95562f0
--- /dev/null
+++ b/blox/textures/blox_pinkdiamond.png
Binary files differ
diff --git a/blox/textures/blox_pinkdiamond_cobble.png b/blox/textures/blox_pinkdiamond_cobble.png
new file mode 100644
index 0000000..60177e7
--- /dev/null
+++ b/blox/textures/blox_pinkdiamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkdiamond_wood.png b/blox/textures/blox_pinkdiamond_wood.png
new file mode 100644
index 0000000..2a0fef6
--- /dev/null
+++ b/blox/textures/blox_pinkdiamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_pinkloop.png b/blox/textures/blox_pinkloop.png
new file mode 100644
index 0000000..c81ab26
--- /dev/null
+++ b/blox/textures/blox_pinkloop.png
Binary files differ
diff --git a/blox/textures/blox_pinkloop_cobble.png b/blox/textures/blox_pinkloop_cobble.png
new file mode 100644
index 0000000..b740310
--- /dev/null
+++ b/blox/textures/blox_pinkloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkloop_wood.png b/blox/textures/blox_pinkloop_wood.png
new file mode 100644
index 0000000..03ca3e2
--- /dev/null
+++ b/blox/textures/blox_pinkloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_pinkquarter.png b/blox/textures/blox_pinkquarter.png
new file mode 100644
index 0000000..62b6dcb
--- /dev/null
+++ b/blox/textures/blox_pinkquarter.png
Binary files differ
diff --git a/blox/textures/blox_pinkquarter_cobble.png b/blox/textures/blox_pinkquarter_cobble.png
new file mode 100644
index 0000000..d2ec431
--- /dev/null
+++ b/blox/textures/blox_pinkquarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_pinkquarter_wood.png b/blox/textures/blox_pinkquarter_wood.png
new file mode 100644
index 0000000..40a93bb
--- /dev/null
+++ b/blox/textures/blox_pinkquarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_pinksquare.png b/blox/textures/blox_pinksquare.png
new file mode 100644
index 0000000..0e7e3ef
--- /dev/null
+++ b/blox/textures/blox_pinksquare.png
Binary files differ
diff --git a/blox/textures/blox_pinkstone.png b/blox/textures/blox_pinkstone.png
new file mode 100644
index 0000000..4372ff3
--- /dev/null
+++ b/blox/textures/blox_pinkstone.png
Binary files differ
diff --git a/blox/textures/blox_pinkwood.png b/blox/textures/blox_pinkwood.png
new file mode 100644
index 0000000..bb7341f
--- /dev/null
+++ b/blox/textures/blox_pinkwood.png
Binary files differ
diff --git a/blox/textures/blox_purplechecker.png b/blox/textures/blox_purplechecker.png
new file mode 100644
index 0000000..7af319f
--- /dev/null
+++ b/blox/textures/blox_purplechecker.png
Binary files differ
diff --git a/blox/textures/blox_purplechecker_cobble.png b/blox/textures/blox_purplechecker_cobble.png
new file mode 100644
index 0000000..ebd18c8
--- /dev/null
+++ b/blox/textures/blox_purplechecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_purplechecker_wood.png b/blox/textures/blox_purplechecker_wood.png
new file mode 100644
index 0000000..a652d0e
--- /dev/null
+++ b/blox/textures/blox_purplechecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_purplecobble.png b/blox/textures/blox_purplecobble.png
new file mode 100644
index 0000000..962e315
--- /dev/null
+++ b/blox/textures/blox_purplecobble.png
Binary files differ
diff --git a/blox/textures/blox_purplecorner.png b/blox/textures/blox_purplecorner.png
new file mode 100644
index 0000000..d9cdb65
--- /dev/null
+++ b/blox/textures/blox_purplecorner.png
Binary files differ
diff --git a/blox/textures/blox_purplecorner_cobble.png b/blox/textures/blox_purplecorner_cobble.png
new file mode 100644
index 0000000..baf852b
--- /dev/null
+++ b/blox/textures/blox_purplecorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_purplecorner_wood.png b/blox/textures/blox_purplecorner_wood.png
new file mode 100644
index 0000000..e5551ca
--- /dev/null
+++ b/blox/textures/blox_purplecorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_purplecross.png b/blox/textures/blox_purplecross.png
new file mode 100644
index 0000000..fdff831
--- /dev/null
+++ b/blox/textures/blox_purplecross.png
Binary files differ
diff --git a/blox/textures/blox_purplecross_cobble.png b/blox/textures/blox_purplecross_cobble.png
new file mode 100644
index 0000000..5a01a2f
--- /dev/null
+++ b/blox/textures/blox_purplecross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_purplecross_wood.png b/blox/textures/blox_purplecross_wood.png
new file mode 100644
index 0000000..a007249
--- /dev/null
+++ b/blox/textures/blox_purplecross_wood.png
Binary files differ
diff --git a/blox/textures/blox_purplediamond.png b/blox/textures/blox_purplediamond.png
new file mode 100644
index 0000000..496e177
--- /dev/null
+++ b/blox/textures/blox_purplediamond.png
Binary files differ
diff --git a/blox/textures/blox_purplediamond_cobble.png b/blox/textures/blox_purplediamond_cobble.png
new file mode 100644
index 0000000..7c5f519
--- /dev/null
+++ b/blox/textures/blox_purplediamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_purplediamond_wood.png b/blox/textures/blox_purplediamond_wood.png
new file mode 100644
index 0000000..120b5ac
--- /dev/null
+++ b/blox/textures/blox_purplediamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_purpleloop.png b/blox/textures/blox_purpleloop.png
new file mode 100644
index 0000000..04859ff
--- /dev/null
+++ b/blox/textures/blox_purpleloop.png
Binary files differ
diff --git a/blox/textures/blox_purpleloop_cobble.png b/blox/textures/blox_purpleloop_cobble.png
new file mode 100644
index 0000000..7f87abd
--- /dev/null
+++ b/blox/textures/blox_purpleloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_purpleloop_wood.png b/blox/textures/blox_purpleloop_wood.png
new file mode 100644
index 0000000..7fcc10c
--- /dev/null
+++ b/blox/textures/blox_purpleloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_purplequarter.png b/blox/textures/blox_purplequarter.png
new file mode 100644
index 0000000..8be82d8
--- /dev/null
+++ b/blox/textures/blox_purplequarter.png
Binary files differ
diff --git a/blox/textures/blox_purplequarter_cobble.png b/blox/textures/blox_purplequarter_cobble.png
new file mode 100644
index 0000000..dbf28a1
--- /dev/null
+++ b/blox/textures/blox_purplequarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_purplequarter_wood.png b/blox/textures/blox_purplequarter_wood.png
new file mode 100644
index 0000000..9bc7183
--- /dev/null
+++ b/blox/textures/blox_purplequarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_purplesquare.png b/blox/textures/blox_purplesquare.png
new file mode 100644
index 0000000..61e754c
--- /dev/null
+++ b/blox/textures/blox_purplesquare.png
Binary files differ
diff --git a/blox/textures/blox_purplestone.png b/blox/textures/blox_purplestone.png
new file mode 100644
index 0000000..4fdc9dd
--- /dev/null
+++ b/blox/textures/blox_purplestone.png
Binary files differ
diff --git a/blox/textures/blox_purplewood.png b/blox/textures/blox_purplewood.png
new file mode 100644
index 0000000..cd32bf3
--- /dev/null
+++ b/blox/textures/blox_purplewood.png
Binary files differ
diff --git a/blox/textures/blox_redchecker.png b/blox/textures/blox_redchecker.png
new file mode 100644
index 0000000..4efe64f
--- /dev/null
+++ b/blox/textures/blox_redchecker.png
Binary files differ
diff --git a/blox/textures/blox_redchecker_cobble.png b/blox/textures/blox_redchecker_cobble.png
new file mode 100644
index 0000000..9f83300
--- /dev/null
+++ b/blox/textures/blox_redchecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_redchecker_wood.png b/blox/textures/blox_redchecker_wood.png
new file mode 100644
index 0000000..212d6ac
--- /dev/null
+++ b/blox/textures/blox_redchecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_redcobble.png b/blox/textures/blox_redcobble.png
new file mode 100644
index 0000000..401eae8
--- /dev/null
+++ b/blox/textures/blox_redcobble.png
Binary files differ
diff --git a/blox/textures/blox_redcorner.png b/blox/textures/blox_redcorner.png
new file mode 100644
index 0000000..fe01dfe
--- /dev/null
+++ b/blox/textures/blox_redcorner.png
Binary files differ
diff --git a/blox/textures/blox_redcorner_cobble.png b/blox/textures/blox_redcorner_cobble.png
new file mode 100644
index 0000000..4f28e2b
--- /dev/null
+++ b/blox/textures/blox_redcorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_redcorner_wood.png b/blox/textures/blox_redcorner_wood.png
new file mode 100644
index 0000000..5755904
--- /dev/null
+++ b/blox/textures/blox_redcorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_redcross.png b/blox/textures/blox_redcross.png
new file mode 100644
index 0000000..e2f4bc2
--- /dev/null
+++ b/blox/textures/blox_redcross.png
Binary files differ
diff --git a/blox/textures/blox_redcross_cobble.png b/blox/textures/blox_redcross_cobble.png
new file mode 100644
index 0000000..d272b76
--- /dev/null
+++ b/blox/textures/blox_redcross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_redcross_wood.png b/blox/textures/blox_redcross_wood.png
new file mode 100644
index 0000000..872ad96
--- /dev/null
+++ b/blox/textures/blox_redcross_wood.png
Binary files differ
diff --git a/blox/textures/blox_reddiamond.png b/blox/textures/blox_reddiamond.png
new file mode 100644
index 0000000..517dd05
--- /dev/null
+++ b/blox/textures/blox_reddiamond.png
Binary files differ
diff --git a/blox/textures/blox_reddiamond_cobble.png b/blox/textures/blox_reddiamond_cobble.png
new file mode 100644
index 0000000..68d956d
--- /dev/null
+++ b/blox/textures/blox_reddiamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_reddiamond_wood.png b/blox/textures/blox_reddiamond_wood.png
new file mode 100644
index 0000000..f0bedcb
--- /dev/null
+++ b/blox/textures/blox_reddiamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_redloop.png b/blox/textures/blox_redloop.png
new file mode 100644
index 0000000..8d00bd5
--- /dev/null
+++ b/blox/textures/blox_redloop.png
Binary files differ
diff --git a/blox/textures/blox_redloop_cobble.png b/blox/textures/blox_redloop_cobble.png
new file mode 100644
index 0000000..e9eb97c
--- /dev/null
+++ b/blox/textures/blox_redloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_redloop_wood.png b/blox/textures/blox_redloop_wood.png
new file mode 100644
index 0000000..a9151c4
--- /dev/null
+++ b/blox/textures/blox_redloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_redquarter.png b/blox/textures/blox_redquarter.png
new file mode 100644
index 0000000..304db1b
--- /dev/null
+++ b/blox/textures/blox_redquarter.png
Binary files differ
diff --git a/blox/textures/blox_redquarter_cobble.png b/blox/textures/blox_redquarter_cobble.png
new file mode 100644
index 0000000..cdbee14
--- /dev/null
+++ b/blox/textures/blox_redquarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_redquarter_wood.png b/blox/textures/blox_redquarter_wood.png
new file mode 100644
index 0000000..bf6ab55
--- /dev/null
+++ b/blox/textures/blox_redquarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_redsquare.png b/blox/textures/blox_redsquare.png
new file mode 100644
index 0000000..a8bb878
--- /dev/null
+++ b/blox/textures/blox_redsquare.png
Binary files differ
diff --git a/blox/textures/blox_redstone.png b/blox/textures/blox_redstone.png
new file mode 100644
index 0000000..d20d3ff
--- /dev/null
+++ b/blox/textures/blox_redstone.png
Binary files differ
diff --git a/blox/textures/blox_redwood.png b/blox/textures/blox_redwood.png
new file mode 100644
index 0000000..eb68f3f
--- /dev/null
+++ b/blox/textures/blox_redwood.png
Binary files differ
diff --git a/blox/textures/blox_whitechecker.png b/blox/textures/blox_whitechecker.png
new file mode 100644
index 0000000..a2a5309
--- /dev/null
+++ b/blox/textures/blox_whitechecker.png
Binary files differ
diff --git a/blox/textures/blox_whitechecker_cobble.png b/blox/textures/blox_whitechecker_cobble.png
new file mode 100644
index 0000000..2644d39
--- /dev/null
+++ b/blox/textures/blox_whitechecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_whitechecker_wood.png b/blox/textures/blox_whitechecker_wood.png
new file mode 100644
index 0000000..0bde0c4
--- /dev/null
+++ b/blox/textures/blox_whitechecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_whitecobble.png b/blox/textures/blox_whitecobble.png
new file mode 100644
index 0000000..0b1ada6
--- /dev/null
+++ b/blox/textures/blox_whitecobble.png
Binary files differ
diff --git a/blox/textures/blox_whitecorner.png b/blox/textures/blox_whitecorner.png
new file mode 100644
index 0000000..0d50b54
--- /dev/null
+++ b/blox/textures/blox_whitecorner.png
Binary files differ
diff --git a/blox/textures/blox_whitecorner_cobble.png b/blox/textures/blox_whitecorner_cobble.png
new file mode 100644
index 0000000..28c45f6
--- /dev/null
+++ b/blox/textures/blox_whitecorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_whitecorner_wood.png b/blox/textures/blox_whitecorner_wood.png
new file mode 100644
index 0000000..8b581c3
--- /dev/null
+++ b/blox/textures/blox_whitecorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_whitecross.png b/blox/textures/blox_whitecross.png
new file mode 100644
index 0000000..d6e43ad
--- /dev/null
+++ b/blox/textures/blox_whitecross.png
Binary files differ
diff --git a/blox/textures/blox_whitecross_cobble.png b/blox/textures/blox_whitecross_cobble.png
new file mode 100644
index 0000000..59f7755
--- /dev/null
+++ b/blox/textures/blox_whitecross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_whitecross_wood.png b/blox/textures/blox_whitecross_wood.png
new file mode 100644
index 0000000..04bbed4
--- /dev/null
+++ b/blox/textures/blox_whitecross_wood.png
Binary files differ
diff --git a/blox/textures/blox_whitediamond.png b/blox/textures/blox_whitediamond.png
new file mode 100644
index 0000000..c48da11
--- /dev/null
+++ b/blox/textures/blox_whitediamond.png
Binary files differ
diff --git a/blox/textures/blox_whitediamond_cobble.png b/blox/textures/blox_whitediamond_cobble.png
new file mode 100644
index 0000000..ea9f5e8
--- /dev/null
+++ b/blox/textures/blox_whitediamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_whitediamond_wood.png b/blox/textures/blox_whitediamond_wood.png
new file mode 100644
index 0000000..df5560a
--- /dev/null
+++ b/blox/textures/blox_whitediamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_whiteloop.png b/blox/textures/blox_whiteloop.png
new file mode 100644
index 0000000..2ef5182
--- /dev/null
+++ b/blox/textures/blox_whiteloop.png
Binary files differ
diff --git a/blox/textures/blox_whiteloop_cobble.png b/blox/textures/blox_whiteloop_cobble.png
new file mode 100644
index 0000000..2e797b0
--- /dev/null
+++ b/blox/textures/blox_whiteloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_whiteloop_wood.png b/blox/textures/blox_whiteloop_wood.png
new file mode 100644
index 0000000..d118868
--- /dev/null
+++ b/blox/textures/blox_whiteloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_whitequarter.png b/blox/textures/blox_whitequarter.png
new file mode 100644
index 0000000..ea43c47
--- /dev/null
+++ b/blox/textures/blox_whitequarter.png
Binary files differ
diff --git a/blox/textures/blox_whitequarter_cobble.png b/blox/textures/blox_whitequarter_cobble.png
new file mode 100644
index 0000000..b62c700
--- /dev/null
+++ b/blox/textures/blox_whitequarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_whitequarter_wood.png b/blox/textures/blox_whitequarter_wood.png
new file mode 100644
index 0000000..075f0f6
--- /dev/null
+++ b/blox/textures/blox_whitequarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_whitesquare.png b/blox/textures/blox_whitesquare.png
new file mode 100644
index 0000000..3d4d9cc
--- /dev/null
+++ b/blox/textures/blox_whitesquare.png
Binary files differ
diff --git a/blox/textures/blox_whitestone.png b/blox/textures/blox_whitestone.png
new file mode 100644
index 0000000..eeeb97a
--- /dev/null
+++ b/blox/textures/blox_whitestone.png
Binary files differ
diff --git a/blox/textures/blox_whitewood.png b/blox/textures/blox_whitewood.png
new file mode 100644
index 0000000..cfdc1d3
--- /dev/null
+++ b/blox/textures/blox_whitewood.png
Binary files differ
diff --git a/blox/textures/blox_yellowchecker.png b/blox/textures/blox_yellowchecker.png
new file mode 100644
index 0000000..33dbb3b
--- /dev/null
+++ b/blox/textures/blox_yellowchecker.png
Binary files differ
diff --git a/blox/textures/blox_yellowchecker_cobble.png b/blox/textures/blox_yellowchecker_cobble.png
new file mode 100644
index 0000000..b413f54
--- /dev/null
+++ b/blox/textures/blox_yellowchecker_cobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowchecker_wood.png b/blox/textures/blox_yellowchecker_wood.png
new file mode 100644
index 0000000..ebf09c6
--- /dev/null
+++ b/blox/textures/blox_yellowchecker_wood.png
Binary files differ
diff --git a/blox/textures/blox_yellowcobble.png b/blox/textures/blox_yellowcobble.png
new file mode 100644
index 0000000..2653d26
--- /dev/null
+++ b/blox/textures/blox_yellowcobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowcorner.png b/blox/textures/blox_yellowcorner.png
new file mode 100644
index 0000000..c954194
--- /dev/null
+++ b/blox/textures/blox_yellowcorner.png
Binary files differ
diff --git a/blox/textures/blox_yellowcorner_cobble.png b/blox/textures/blox_yellowcorner_cobble.png
new file mode 100644
index 0000000..dde6171
--- /dev/null
+++ b/blox/textures/blox_yellowcorner_cobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowcorner_wood.png b/blox/textures/blox_yellowcorner_wood.png
new file mode 100644
index 0000000..bc908b2
--- /dev/null
+++ b/blox/textures/blox_yellowcorner_wood.png
Binary files differ
diff --git a/blox/textures/blox_yellowcross.png b/blox/textures/blox_yellowcross.png
new file mode 100644
index 0000000..4b19d36
--- /dev/null
+++ b/blox/textures/blox_yellowcross.png
Binary files differ
diff --git a/blox/textures/blox_yellowcross_cobble.png b/blox/textures/blox_yellowcross_cobble.png
new file mode 100644
index 0000000..f38dfc5
--- /dev/null
+++ b/blox/textures/blox_yellowcross_cobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowcross_wood.png b/blox/textures/blox_yellowcross_wood.png
new file mode 100644
index 0000000..67b4a85
--- /dev/null
+++ b/blox/textures/blox_yellowcross_wood.png
Binary files differ
diff --git a/blox/textures/blox_yellowdiamond.png b/blox/textures/blox_yellowdiamond.png
new file mode 100644
index 0000000..c979c5b
--- /dev/null
+++ b/blox/textures/blox_yellowdiamond.png
Binary files differ
diff --git a/blox/textures/blox_yellowdiamond_cobble.png b/blox/textures/blox_yellowdiamond_cobble.png
new file mode 100644
index 0000000..9e79b9a
--- /dev/null
+++ b/blox/textures/blox_yellowdiamond_cobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowdiamond_wood.png b/blox/textures/blox_yellowdiamond_wood.png
new file mode 100644
index 0000000..60178f6
--- /dev/null
+++ b/blox/textures/blox_yellowdiamond_wood.png
Binary files differ
diff --git a/blox/textures/blox_yellowloop.png b/blox/textures/blox_yellowloop.png
new file mode 100644
index 0000000..c3a9a7a
--- /dev/null
+++ b/blox/textures/blox_yellowloop.png
Binary files differ
diff --git a/blox/textures/blox_yellowloop_cobble.png b/blox/textures/blox_yellowloop_cobble.png
new file mode 100644
index 0000000..3a27128
--- /dev/null
+++ b/blox/textures/blox_yellowloop_cobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowloop_wood.png b/blox/textures/blox_yellowloop_wood.png
new file mode 100644
index 0000000..a5a3e92
--- /dev/null
+++ b/blox/textures/blox_yellowloop_wood.png
Binary files differ
diff --git a/blox/textures/blox_yellowquarter.png b/blox/textures/blox_yellowquarter.png
new file mode 100644
index 0000000..bfb8158
--- /dev/null
+++ b/blox/textures/blox_yellowquarter.png
Binary files differ
diff --git a/blox/textures/blox_yellowquarter_cobble.png b/blox/textures/blox_yellowquarter_cobble.png
new file mode 100644
index 0000000..e3aa29e
--- /dev/null
+++ b/blox/textures/blox_yellowquarter_cobble.png
Binary files differ
diff --git a/blox/textures/blox_yellowquarter_wood.png b/blox/textures/blox_yellowquarter_wood.png
new file mode 100644
index 0000000..5983884
--- /dev/null
+++ b/blox/textures/blox_yellowquarter_wood.png
Binary files differ
diff --git a/blox/textures/blox_yellowsquare.png b/blox/textures/blox_yellowsquare.png
new file mode 100644
index 0000000..85cfc62
--- /dev/null
+++ b/blox/textures/blox_yellowsquare.png
Binary files differ
diff --git a/blox/textures/blox_yellowstone.png b/blox/textures/blox_yellowstone.png
new file mode 100644
index 0000000..2978ac7
--- /dev/null
+++ b/blox/textures/blox_yellowstone.png
Binary files differ
diff --git a/blox/textures/blox_yellowwood.png b/blox/textures/blox_yellowwood.png
new file mode 100644
index 0000000..3e4a73f
--- /dev/null
+++ b/blox/textures/blox_yellowwood.png
Binary files differ
diff --git a/bobblocks/blocks.lua b/bobblocks/blocks.lua
new file mode 100644
index 0000000..652bc07
--- /dev/null
+++ b/bobblocks/blocks.lua
@@ -0,0 +1,844 @@
+-- BobBlocks mod by RabbiBob
+-- State Changes
+
+local update_bobblock = function (pos, node)
+ local nodename=""
+ local param2=""
+ --Switch Block State
+ if
+ -- Start Blocks
+ node.name == 'bobblocks:redblock_off' then nodename = 'bobblocks:redblock'
+ elseif node.name == 'bobblocks:redblock' then nodename = 'bobblocks:redblock_off'
+ elseif node.name == 'bobblocks:orangeblock_off' then nodename = 'bobblocks:orangeblock'
+ elseif node.name == 'bobblocks:orangeblock' then nodename = 'bobblocks:orangeblock_off'
+ elseif node.name == 'bobblocks:yellowblock_off' then nodename = 'bobblocks:yellowblock'
+ elseif node.name == 'bobblocks:yellowblock' then nodename = 'bobblocks:yellowblock_off'
+ elseif node.name == 'bobblocks:greenblock_off' then nodename = 'bobblocks:greenblock'
+ elseif node.name == 'bobblocks:greenblock' then nodename = 'bobblocks:greenblock_off'
+ elseif node.name == 'bobblocks:blueblock_off' then nodename = 'bobblocks:blueblock'
+ elseif node.name == 'bobblocks:blueblock' then nodename = 'bobblocks:blueblock_off'
+ elseif node.name == 'bobblocks:indigoblock_off' then nodename = 'bobblocks:indigoblock'
+ elseif node.name == 'bobblocks:indigoblock' then nodename = 'bobblocks:indigoblock_off'
+ elseif node.name == 'bobblocks:violetblock_off' then nodename = 'bobblocks:violetblock'
+ elseif node.name == 'bobblocks:violetblock' then nodename = 'bobblocks:violetblock_off'
+ elseif node.name == 'bobblocks:whiteblock_off' then nodename = 'bobblocks:whiteblock'
+ elseif node.name == 'bobblocks:whiteblock' then nodename = 'bobblocks:whiteblock_off'
+ -- Start Poles
+ elseif node.name == 'bobblocks:redpole_off' then nodename = 'bobblocks:redpole'
+ elseif node.name == 'bobblocks:redpole' then nodename = 'bobblocks:redpole_off'
+ elseif node.name == 'bobblocks:orangepole_off' then nodename = 'bobblocks:orangepole'
+ elseif node.name == 'bobblocks:orangepole' then nodename = 'bobblocks:orangepole_off'
+ elseif node.name == 'bobblocks:yellowpole_off' then nodename = 'bobblocks:yellowpole'
+ elseif node.name == 'bobblocks:yellowpole' then nodename = 'bobblocks:yellowpole_off'
+ elseif node.name == 'bobblocks:greenpole_off' then nodename = 'bobblocks:greenpole'
+ elseif node.name == 'bobblocks:greenpole' then nodename = 'bobblocks:greenpole_off'
+ elseif node.name == 'bobblocks:bluepole_off' then nodename = 'bobblocks:bluepole'
+ elseif node.name == 'bobblocks:bluepole' then nodename = 'bobblocks:bluepole_off'
+ elseif node.name == 'bobblocks:indigopole_off' then nodename = 'bobblocks:indigopole'
+ elseif node.name == 'bobblocks:indigopole' then nodename = 'bobblocks:indigopole_off'
+ elseif node.name == 'bobblocks:violetpole_off' then nodename = 'bobblocks:violetpole'
+ elseif node.name == 'bobblocks:violetpole' then nodename = 'bobblocks:violetpole_off'
+ elseif node.name == 'bobblocks:whitepole_off' then nodename = 'bobblocks:whitepole'
+ elseif node.name == 'bobblocks:whitepole' then nodename = 'bobblocks:whitepole_off'
+ end
+ minetest.add_node(pos, {name = nodename})
+ minetest.sound_play("bobblocks_glassblock",
+ {pos = pos, gain = 1.0, max_hear_distance = 32,})
+end
+
+
+-- Punch Blocks
+local on_bobblock_punched = function (pos, node, puncher)
+ if
+ -- Start Blocks
+ node.name == 'bobblocks:redblock_off' or node.name == 'bobblocks:redblock' or
+ node.name == 'bobblocks:orangeblock_off' or node.name == 'bobblocks:orangeblock' or
+ node.name == 'bobblocks:yellowblock_off' or node.name == 'bobblocks:yellowblock' or
+ node.name == 'bobblocks:greenblock_off' or node.name == 'bobblocks:greenblock' or
+ node.name == 'bobblocks:blueblock_off' or node.name == 'bobblocks:blueblock' or
+ node.name == 'bobblocks:indigoblock_off' or node.name == 'bobblocks:indigoblock' or
+ node.name == 'bobblocks:violetblock_off' or node.name == 'bobblocks:violetblock' or
+ node.name == 'bobblocks:whiteblock_off' or node.name == 'bobblocks:whiteblock' or
+ --Start Poles
+ node.name == 'bobblocks:redpole_off' or node.name == 'bobblocks:redpole' or
+ node.name == 'bobblocks:orangepole_off' or node.name == 'bobblocks:orangepole' or
+ node.name == 'bobblocks:yellowpole_off' or node.name == 'bobblocks:yellowpole' or
+ node.name == 'bobblocks:greenpole_off' or node.name == 'bobblocks:greenpole' or
+ node.name == 'bobblocks:bluepole_off' or node.name == 'bobblocks:bluepole' or
+ node.name == 'bobblocks:indigopole_off' or node.name == 'bobblocks:indigopole' or
+ node.name == 'bobblocks:violetpole_off' or node.name == 'bobblocks:violetpole' or
+ node.name == 'bobblocks:whitepole_off' or node.name == 'bobblocks:whitepole'
+ then
+ update_bobblock(pos, node)
+ end
+end
+
+minetest.register_on_punchnode(on_bobblock_punched)
+
+-- Nodes
+-- Misc Node
+
+minetest.register_node("bobblocks:btm", {
+ description = "Bobs TransMorgifier v5",
+ tiles = {"bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png",
+ "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm.png"},
+ inventory_image = "bobblocks_btm.png",
+ paramtype2 = "facedir",
+ material = minetest.digprop_dirtlike(1.0),
+ legacy_facedir_simple = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+
+})
+
+
+-- Start Block Nodes
+minetest.register_node("bobblocks:redblock", {
+ description = "Red Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_redblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_redblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:redblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:redblock_off", {
+ description = "Red Block",
+ tiles = {"bobblocks_redblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:redblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:redblock"
+ }}
+
+})
+
+minetest.register_node("bobblocks:orangeblock", {
+ description = "Orange Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_orangeblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_orangeblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:orangeblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:orangeblock_off", {
+ description = "Orange Block",
+ tiles = {"bobblocks_orangeblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:orangeblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:orangeblock"
+ }}
+
+})
+
+minetest.register_node("bobblocks:yellowblock", {
+ description = "Yellow Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_yellowblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_yellowblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:yellowblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:yellowblock_off", {
+ description = "Yellow Block",
+ tiles = {"bobblocks_yellowblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:yellowblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:yellowblock"
+ }}
+
+})
+
+minetest.register_node("bobblocks:greenblock", {
+ description = "Green Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_greenblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_greenblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:greenblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:greenblock_off", {
+ description = "Green Block",
+ tiles = {"bobblocks_greenblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:greenblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:greenblock"
+ }}
+
+})
+
+
+minetest.register_node("bobblocks:blueblock", {
+ description = "Blue Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_blueblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_blueblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:blueblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:blueblock_off", {
+ description = "Blue Block",
+ tiles = {"bobblocks_blueblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:blueblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:blueblock"
+ }}
+
+})
+
+minetest.register_node("bobblocks:indigoblock", {
+ description = "Indigo Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_indigoblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_indigoblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:indigoblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:indigoblock_off", {
+ description = "Indigo Block",
+ tiles = {"bobblocks_indigoblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:indigoblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:indigoblock"
+ }}
+
+})
+
+
+minetest.register_node("bobblocks:violetblock", {
+ description = "Violet Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_violetblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_violetblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:violetblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:violetblock_off", {
+ description = "Violet Block",
+ tiles = {"bobblocks_violetblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:violetblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:violetblock"
+ }}
+
+})
+
+minetest.register_node("bobblocks:whiteblock", {
+ description = "White Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_whiteblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_whiteblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:whiteblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:whiteblock_off", {
+ description = "White Block",
+ tiles = {"bobblocks_whiteblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:whiteblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:whiteblock"
+ }}
+
+})
+
+
+minetest.register_node("bobblocks:greyblock", {
+ description = "Grey Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_greyblock.png"},
+ inventory_image = minetest.inventorycube("bobblocks_greyblock.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:greyblock_off"
+ }}
+})
+
+minetest.register_node("bobblocks:greyblock_off", {
+ description = "Grey Block",
+ tiles = {"bobblocks_greyblock.png"},
+ is_ground_content = true,
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:greyblock',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:greyblock"
+ }}
+
+})
+
+
+-- Block Poles
+minetest.register_node("bobblocks:redpole", {
+ description = "Red Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_redblock.png"},
+ inventory_image = ("bobblocks_invredpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:redpole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:redpole_off", {
+ description = "Red Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_redblock.png"},
+ inventory_image = ("bobblocks_invredpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:redpole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:redpole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:orangepole", {
+ description = "Orange Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_orangeblock.png"},
+ inventory_image = ("bobblocks_invorangepole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:orangepole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:orangepole_off", {
+ description = "Orange Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_orangeblock.png"},
+ inventory_image = ("bobblocks_invorangepole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:orangepole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:orangepole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:yellowpole", {
+ description = "Yellow Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_yellowblock.png"},
+ inventory_image = ("bobblocks_invyellowpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:yellowpole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:yellowpole_off", {
+ description = "Yellow Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_yellowblock.png"},
+ inventory_image = ("bobblocks_invyellowpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:yellowpole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:yellowpole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:greenpole", {
+ description = "Green Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_greenblock.png"},
+ inventory_image = ("bobblocks_invgreenpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:greenpole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:greenpole_off", {
+ description = "Green Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_greenblock.png"},
+ inventory_image = ("bobblocks_invgreenpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:greenpole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:greenpole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:bluepole", {
+ description = "Blue Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_blueblock.png"},
+ inventory_image = ("bobblocks_invbluepole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:bluepole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:bluepole_off", {
+ description = "Blue Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_blueblock.png"},
+ inventory_image = ("bobblocks_invbluepole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:bluepole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:bluepole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:indigopole", {
+ description = "Indigo Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_indigoblock.png"},
+ inventory_image = ("bobblocks_invindigopole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:indigopole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:indigopole_off", {
+ description = "Indigo Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_indigoblock.png"},
+ inventory_image = ("bobblocks_invindigopole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:indigopole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:indigopole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:violetpole", {
+ description = "Violet Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_violetblock.png"},
+ inventory_image = ("bobblocks_invvioletpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:violetpole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:violetpole_off", {
+ description = "Violet Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_violetblock.png"},
+ inventory_image = ("bobblocks_invvioletpole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:violetpole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:violetpole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:whitepole", {
+ description = "White Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_whiteblock.png"},
+ inventory_image = ("bobblocks_invwhitepole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:whitepole_off"
+ }}
+})
+
+minetest.register_node("bobblocks:whitepole_off", {
+ description = "White Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_whiteblock.png"},
+ inventory_image = ("bobblocks_invwhitepole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:whitepole',
+ foo = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:whitepole"
+ }}
+
+})
+
+minetest.register_node("bobblocks:greypole", {
+ description = "Grey Pole",
+ drawtype = "fencelike",
+ tiles = {"bobblocks_greyblock.png"},
+ inventory_image = ("bobblocks_invgreypole.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ sounds = default.node_sound_glass_defaults(),
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ --light_source = LIGHT_MAX-0,
+})
+
+
+
+-- Crafts
+-- BTM
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:btm" 1',
+ recipe = {
+ {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:leaves" 1',
+ 'node "default:mese" 1','node "default:rat" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:greyblock" 2',
+ recipe = {
+ {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:cobble" 1'},
+ },
+})
+
+-- Red / Yellow / Blue / White
+-- Red / Yellow -> Orange
+-- Red / Blue -> Violet
+-- Blue / Yellow -> Green
+-- Red / Yellow / White -> Indigo
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:redblock" 2',
+ recipe = {
+ {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:brick" 1'},
+ },
+})
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:yellowblock" 2',
+ recipe = {
+ {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:sand" 1'},
+ },
+})
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:blueblock" 2',
+ recipe = {
+ {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:gravel" 1'},
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:whiteblock" 2',
+ recipe = {
+ {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:dirt" 1'},
+ },
+})
+
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:orangeblock" 2',
+ recipe = {
+ {'node "bobblocks:redblock" 1', 'node "bobblocks:yellowblock" 1'},
+
+ },
+})
+
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:violetblock" 2',
+ recipe = {
+ {'node "bobblocks:redblock" 1', 'node "bobblocks:blueblock" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:greenblock" 2',
+ recipe = {
+ {'node "bobblocks:blueblock" 1', 'node "bobblocks:yellowblock" 1'},
+
+ },
+})
+
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:indigoblock" 3',
+ recipe = {
+ {'node "bobblocks:redblock" 1', 'node "bobblocks:blueblock" 1', 'node "bobblocks:whiteblock" 1'},
+
+ },
+})
+
+-- Poles
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:redpole" 1',
+ recipe = {
+ {'node "bobblocks:redblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:yellowpole" 1',
+ recipe = {
+ {'node "bobblocks:yellowblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:bluepole" 1',
+ recipe = {
+ {'node "bobblocks:blueblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:whitepole" 1',
+ recipe = {
+ {'node "bobblocks:whiteblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:orangepole" 1',
+ recipe = {
+ {'node "bobblocks:orangeblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:violetpole" 1',
+ recipe = {
+ {'node "bobblocks:violetblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:greenpole" 1',
+ recipe = {
+ {'node "bobblocks:greenblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:indigopole" 1',
+ recipe = {
+ {'node "bobblocks:indigoblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:greypole" 1',
+ recipe = {
+ {'node "bobblocks:greyblock" 1', 'node "default:stick" 1'},
+
+ },
+})
+
+
+-- MESECON
+-- Add jeija to bobblocks\default.txt and paste the below in at the bottom of bobblocks\blocks.lua
+
diff --git a/bobblocks/depends.txt b/bobblocks/depends.txt
new file mode 100644
index 0000000..aca967d
--- /dev/null
+++ b/bobblocks/depends.txt
@@ -0,0 +1,2 @@
+default
+mesecons
diff --git a/bobblocks/health.lua b/bobblocks/health.lua
new file mode 100644
index 0000000..a26e552
--- /dev/null
+++ b/bobblocks/health.lua
@@ -0,0 +1,95 @@
+local is_healthpack = function(node)
+ if node.name == 'bobblocks:health_off' or node.name == 'health_on' then
+ return true
+ end
+ return false
+end
+
+local update_healthpack = function (pos, node)
+ local nodename=""
+ local param2=""
+ --Switch HealthPack State
+ if node.name == 'bobblocks:health_off' then
+ nodename = 'bobblocks:health_on'
+ elseif node.name == 'bobblocks:health_on' then
+ nodename = 'bobblocks:health_off'
+ end
+ minetest.add_node(pos, {name = nodename})
+end
+
+local toggle_healthpack = function (pos, node)
+ if not is_healthgate(node) then return end
+ update_healthpack (pos, node, state)
+end
+
+local on_healthpack_punched = function (pos, node, puncher)
+ if node.name == 'bobblocks:health_off' or node.name == 'bobblocks:health_on' then
+ update_healthpack(pos, node)
+ end
+end
+
+-- Healing Node
+
+minetest.register_node("bobblocks:health_off", {
+ description = "Health Pack 1 Off",
+ tiles = {"bobblocks_health_off.png"},
+ inventory_image = "bobblocks_health_off.png",
+ paramtype2 = "facedir",
+ legacy_facedir_simple = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ is_ground_content = true,
+ walkable = false,
+ climbable = false,
+ mesecons = {conductor={
+ state = mesecon.state.off,
+ onstate = "bobblocks:health_on"
+ }}
+})
+
+minetest.register_node("bobblocks:health_on", {
+ description = "Health Pack 1 On",
+ tiles = {"bobblocks_health_on.png"},
+ paramtype2 = "facedir",
+ legacy_facedir_simple = true,
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ is_ground_content = true,
+ walkable = false,
+ climbable = false,
+ drop = "bobblocks:health_off",
+ mesecons = {conductor={
+ state = mesecon.state.on,
+ offstate = "bobblocks:health_off"
+ }}
+})
+
+
+minetest.register_abm(
+ {nodenames = {"bobblocks:health_on"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local objs = minetest.get_objects_inside_radius(pos, 1)
+ for k, obj in pairs(objs) do
+ minetest.sound_play("bobblocks_health",
+ {pos = pos, gain = 1.0, max_hear_distance = 32,})
+ obj:set_hp(obj:get_hp()+10) -- give 10HP
+ minetest.remove_node(pos) -- remove the node after use
+ end
+ end,
+
+})
+
+--- Health
+
+minetest.register_craft({
+ output = 'NodeItem "bobblocks:health_off" 1',
+ recipe = {
+ {'node "default:dirt" 1', 'node "default:paper" 1', 'node "default:apple" 2'},
+
+ },
+})
+
+
+minetest.register_on_punchnode(on_healthpack_punched)
+
diff --git a/bobblocks/init.lua b/bobblocks/init.lua
new file mode 100644
index 0000000..3bcf03f
--- /dev/null
+++ b/bobblocks/init.lua
@@ -0,0 +1,11 @@
+print("[BobBlocks By minetest@rabbibob.com] Version 0.0.8 loading....")
+print("[BobBlocks] loading Blocks")
+dofile(minetest.get_modpath("bobblocks") .. "/blocks.lua")
+print("[BobBlocks] loaded Blocks")
+print("[BobBlocks] loading Health")
+dofile(minetest.get_modpath("bobblocks") .. "/health.lua")
+print("[BobBlocks] loaded Health")
+print("[BobBlocks] loading Traps")
+dofile(minetest.get_modpath("bobblocks") .. "/trap.lua")
+print("[BobBlocks] loaded Traps")
+print("[BobBlocks By minetest@rabbibob.com] Version 0.0.8 loaded!") \ No newline at end of file
diff --git a/bobblocks/readme.txt b/bobblocks/readme.txt
new file mode 100644
index 0000000..947ae5e
--- /dev/null
+++ b/bobblocks/readme.txt
@@ -0,0 +1,53 @@
+-- BobBlocks v0.0.8
+-- (Minetest 0.4.5 compatible 20130315)
+-- http://forum.minetest.net/viewtopic.php?id=1274
+--------------------------------------------------------------------------
+--------------------------------------------------------------------------
+-- Requirements: Mesecons --
+-- http://forum.minetest.net/viewtopic.php?id=628 --
+-- --
+-- Does not support jeija or older version of Mesecons --
+-- before 1/20/2013 --
+-- http://forum.minetest.net/viewtopic.php?pid=64976#p64976 --
+--------------------------------------------------------------------------
+--------------------------------------------------------------------------
+-- Colored Lit Blocks
+---- Default state = Solid lit block
+---- Secondary state (punch) = transparent unlit block
+---- Mesecons activation [CONDUCTOR]
+-- Colored Lit Poles
+---- Default state = Solid lit block
+---- Secondary state (punch) = unlit block
+---- Mesecons activation [CONDUCTOR]
+-- Health Kit
+---- Default state = health kit inactive
+---- Secondary state (punch) = health kit active +10HP when walked through
+---- Mesecons activation [CONDUCTOR]
+-- Trap
+---- Default Grass (walkable off)
+---- Spike Minor (1HP per hit)
+------ Spikes can be 'set' and activated when walked over
+---- Spike Major (100HP per hit)
+------ Spikes can be 'set' and activated when walked over
+
+# [ATTRIBUTION]
+# Unless otherwise noted, all graphics & sounds
+# created by Rabbi Bob
+# Licensed under the GPLv2/later
+
+# [GRAPHICS]
+# minor & major spikes by Death Dealer
+# License: WTFPL
+# http://minetest.net/forum/viewtopic.php?id=1582
+
+# [SOUNDS]
+# bobblocks_glass
+ # Author: Ch0cchi
+ # http://www.freesound.org/people/Ch0cchi/sounds/15285/
+ # Edited by rabbibob
+# bobblocks_trap_fall & bobblocks_trap_fall_major
+ # Author: Rock Savage
+ # http://www.freesound.org/people/Rock%20Savage/sounds/65924/#
+ # Edited by rabbibob
+# bobblocks_health
+ # http://hamsterrepublic.com/ohrrpgce/Free_Sound_Effects.html \ No newline at end of file
diff --git a/bobblocks/sounds/bobblocks_glassblock.ogg b/bobblocks/sounds/bobblocks_glassblock.ogg
new file mode 100644
index 0000000..d60859f
--- /dev/null
+++ b/bobblocks/sounds/bobblocks_glassblock.ogg
Binary files differ
diff --git a/bobblocks/sounds/bobblocks_health.ogg b/bobblocks/sounds/bobblocks_health.ogg
new file mode 100644
index 0000000..4a0148b
--- /dev/null
+++ b/bobblocks/sounds/bobblocks_health.ogg
Binary files differ
diff --git a/bobblocks/sounds/bobblocks_trap_fall.ogg b/bobblocks/sounds/bobblocks_trap_fall.ogg
new file mode 100644
index 0000000..a49efb3
--- /dev/null
+++ b/bobblocks/sounds/bobblocks_trap_fall.ogg
Binary files differ
diff --git a/bobblocks/sounds/bobblocks_trap_fall_major.ogg b/bobblocks/sounds/bobblocks_trap_fall_major.ogg
new file mode 100644
index 0000000..b6bdea6
--- /dev/null
+++ b/bobblocks/sounds/bobblocks_trap_fall_major.ogg
Binary files differ
diff --git a/bobblocks/textures/bobblocks_blueblock.png b/bobblocks/textures/bobblocks_blueblock.png
new file mode 100644
index 0000000..df5d835
--- /dev/null
+++ b/bobblocks/textures/bobblocks_blueblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_btm.png b/bobblocks/textures/bobblocks_btm.png
new file mode 100644
index 0000000..7e14d08
--- /dev/null
+++ b/bobblocks/textures/bobblocks_btm.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_btm_sides.png b/bobblocks/textures/bobblocks_btm_sides.png
new file mode 100644
index 0000000..0e1ca0d
--- /dev/null
+++ b/bobblocks/textures/bobblocks_btm_sides.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_greenblock.png b/bobblocks/textures/bobblocks_greenblock.png
new file mode 100644
index 0000000..0acebc5
--- /dev/null
+++ b/bobblocks/textures/bobblocks_greenblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_greyblock.png b/bobblocks/textures/bobblocks_greyblock.png
new file mode 100644
index 0000000..c372878
--- /dev/null
+++ b/bobblocks/textures/bobblocks_greyblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_health_off.png b/bobblocks/textures/bobblocks_health_off.png
new file mode 100644
index 0000000..9f9aaac
--- /dev/null
+++ b/bobblocks/textures/bobblocks_health_off.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_health_on.png b/bobblocks/textures/bobblocks_health_on.png
new file mode 100644
index 0000000..ec808c9
--- /dev/null
+++ b/bobblocks/textures/bobblocks_health_on.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_health_one_sides.png b/bobblocks/textures/bobblocks_health_one_sides.png
new file mode 100644
index 0000000..ac24409
--- /dev/null
+++ b/bobblocks/textures/bobblocks_health_one_sides.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_indigoblock.png b/bobblocks/textures/bobblocks_indigoblock.png
new file mode 100644
index 0000000..0dbf7fd
--- /dev/null
+++ b/bobblocks/textures/bobblocks_indigoblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invbluepole.png b/bobblocks/textures/bobblocks_invbluepole.png
new file mode 100644
index 0000000..e60d3eb
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invbluepole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invgreenpole.png b/bobblocks/textures/bobblocks_invgreenpole.png
new file mode 100644
index 0000000..72b83c7
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invgreenpole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invgreypole.png b/bobblocks/textures/bobblocks_invgreypole.png
new file mode 100644
index 0000000..e9ad643
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invgreypole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invindigopole.png b/bobblocks/textures/bobblocks_invindigopole.png
new file mode 100644
index 0000000..8650912
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invindigopole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invorangepole.png b/bobblocks/textures/bobblocks_invorangepole.png
new file mode 100644
index 0000000..4f8cb97
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invorangepole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invredpole.png b/bobblocks/textures/bobblocks_invredpole.png
new file mode 100644
index 0000000..a6c9a65
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invredpole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invvioletpole.png b/bobblocks/textures/bobblocks_invvioletpole.png
new file mode 100644
index 0000000..3eeb60a
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invvioletpole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invwhitepole.png b/bobblocks/textures/bobblocks_invwhitepole.png
new file mode 100644
index 0000000..3f35401
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invwhitepole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_invyellowpole.png b/bobblocks/textures/bobblocks_invyellowpole.png
new file mode 100644
index 0000000..2b5c1ee
--- /dev/null
+++ b/bobblocks/textures/bobblocks_invyellowpole.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_majorspike.png b/bobblocks/textures/bobblocks_majorspike.png
new file mode 100644
index 0000000..159ddc3
--- /dev/null
+++ b/bobblocks/textures/bobblocks_majorspike.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_minorspike.png b/bobblocks/textures/bobblocks_minorspike.png
new file mode 100644
index 0000000..fd2e9f3
--- /dev/null
+++ b/bobblocks/textures/bobblocks_minorspike.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_orangeblock.png b/bobblocks/textures/bobblocks_orangeblock.png
new file mode 100644
index 0000000..40e34f9
--- /dev/null
+++ b/bobblocks/textures/bobblocks_orangeblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_redblock.png b/bobblocks/textures/bobblocks_redblock.png
new file mode 100644
index 0000000..096d3f1
--- /dev/null
+++ b/bobblocks/textures/bobblocks_redblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_redblock_off.png b/bobblocks/textures/bobblocks_redblock_off.png
new file mode 100644
index 0000000..ca0bc5c
--- /dev/null
+++ b/bobblocks/textures/bobblocks_redblock_off.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_trap_set.png b/bobblocks/textures/bobblocks_trap_set.png
new file mode 100644
index 0000000..55d1cf9
--- /dev/null
+++ b/bobblocks/textures/bobblocks_trap_set.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_violetblock.png b/bobblocks/textures/bobblocks_violetblock.png
new file mode 100644
index 0000000..c1a98ca
--- /dev/null
+++ b/bobblocks/textures/bobblocks_violetblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_whiteblock.png b/bobblocks/textures/bobblocks_whiteblock.png
new file mode 100644
index 0000000..857fa47
--- /dev/null
+++ b/bobblocks/textures/bobblocks_whiteblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_yellowblock.png b/bobblocks/textures/bobblocks_yellowblock.png
new file mode 100644
index 0000000..975ffe8
--- /dev/null
+++ b/bobblocks/textures/bobblocks_yellowblock.png
Binary files differ
diff --git a/bobblocks/trap.lua b/bobblocks/trap.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/bobblocks/trap.lua
diff --git a/campfire/depends.txt b/campfire/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/campfire/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/campfire/init.lua b/campfire/init.lua
new file mode 100644
index 0000000..9834ce1
--- /dev/null
+++ b/campfire/init.lua
@@ -0,0 +1,180 @@
+minetest.register_craft({
+ output = "campfire:campfire",
+ recipe = {{'', 'default:stick', ''}, {'default:stick', '', 'default:stick'}}
+})
+
+
+minetest.register_node("campfire:campfire", {
+ description = "Camp Fire",
+ drawtype = "plantlike",
+ tiles = {"CampFire_off.png"},
+ walkable=false,
+ sunlight_propogates=true,
+ paramtype="light",
+ paramtype2 = "facedir",
+ groups = {oddly_breakable_by_hand=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Campfire")
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ elseif not inv:is_empty("dst") then
+ return false
+ elseif not inv:is_empty("src") then
+ return false
+ end
+ return true
+ end,
+})
+
+minetest.register_node("campfire:campfire_active", {
+ description = "Campfire Active",
+ drawtype = "plantlike",
+ tiles = {{name="CampFire.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}},
+ light_source = 8,
+ paramtype="light",
+ walkable=false,
+ drop = "campfire:campfire",
+ groups = {cracky=2, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", default.furnace_inactive_formspec)
+ meta:set_string("infotext", "Furnace");
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ elseif not inv:is_empty("dst") then
+ return false
+ elseif not inv:is_empty("src") then
+ return false
+ end
+ return true
+ end,
+})
+
+function hacky_swap_node(pos,name)
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local meta0 = meta:to_table()
+ if node.name == name then
+ return
+ end
+ node.name = name
+ local meta0 = meta:to_table()
+ minetest.set_node(pos,node)
+ meta = minetest.get_meta(pos)
+ meta:from_table(meta0)
+end
+
+minetest.register_abm({
+ nodenames = {"campfire:campfire","campfire:campfire_active"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ for i, name in ipairs({
+ "fuel_totaltime",
+ "fuel_time",
+ "src_totaltime",
+ "src_time"
+ }) do
+ if meta:get_string(name) == "" then
+ meta:set_float(name, 0.0)
+ end
+ end
+
+ local inv = meta:get_inventory()
+
+ local srclist = inv:get_list("src")
+ local cooked = nil
+
+ if srclist then
+ cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+
+ local was_active = false
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ was_active = true
+ meta:set_float("fuel_time", meta:get_float("fuel_time") + 0.25)
+ meta:set_float("src_time", meta:get_float("src_time") + 0.25)
+ if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
+ -- check if there's room for output in "dst" list
+ if inv:room_for_item("dst",cooked.item) then
+ -- Put result in "dst" list
+ inv:add_item("dst", cooked.item)
+ -- take stuff from "src" list
+ srcstack = inv:get_stack("src", 1)
+ srcstack:take_item()
+ inv:set_stack("src", 1, srcstack)
+ else
+ print("Could not insert '"..cooked.item:to_string().."'")
+ end
+ meta:set_string("src_time", 0)
+ end
+ end
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ local percent = math.floor(meta:get_float("fuel_time") /
+ meta:get_float("fuel_totaltime") * 100)
+ meta:set_string("infotext","Furnace active: "..percent.."%")
+ hacky_swap_node(pos,"campfire:campfire_active")
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
+ (100-percent)..":default_furnace_fire_fg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;1,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]")
+ return
+ end
+
+ local fuel = nil
+ local cooked = nil
+ local fuellist = inv:get_list("fuel")
+ local srclist = inv:get_list("src")
+
+ if srclist then
+ cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+ if fuellist then
+ fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
+ end
+
+ if fuel.time <= 0 then
+ meta:set_string("infotext","Put more wood on the fire!")
+ hacky_swap_node(pos,"campfire:campfire")
+ meta:set_string("formspec", default.furnace_inactive_formspec)
+ return
+ end
+
+
+
+ meta:set_string("fuel_totaltime", fuel.time)
+ meta:set_string("fuel_time", 0)
+
+ local stack = inv:get_stack("fuel", 1)
+ stack:take_item()
+ inv:set_stack("fuel", 1, stack)
+ end,
+})
diff --git a/campfire/textures/CampFire.png b/campfire/textures/CampFire.png
new file mode 100644
index 0000000..85f8451
--- /dev/null
+++ b/campfire/textures/CampFire.png
Binary files differ
diff --git a/campfire/textures/CampFire_off.png b/campfire/textures/CampFire_off.png
new file mode 100644
index 0000000..cc3f980
--- /dev/null
+++ b/campfire/textures/CampFire_off.png
Binary files differ
diff --git a/carbone_mobs/README.txt b/carbone_mobs/README.txt
new file mode 100644
index 0000000..a74e6ff
--- /dev/null
+++ b/carbone_mobs/README.txt
@@ -0,0 +1,42 @@
+=== MOBS-MOD for MINETEST-C55 ===
+by PilzAdam
+
+Inroduction:
+This mod adds some basic hostile and friendly mobs to the game.
+
+How to install:
+Unzip the archive an place it in minetest-base-directory/mods/minetest/
+if you have a windows client or a linux run-in-place client. If you have
+a linux system-wide instalation place it in ~/.minetest/mods/minetest/.
+If you want to install this mod only in one world create the folder
+worldmods/ in your worlddirectory.
+For further information or help see:
+http://wiki.minetest.com/wiki/Installing_Mods
+
+How to use the mod:
+See https://github.com/PilzAdam/mobs/wiki
+
+For developers:
+The API documentation is moved to https://github.com/PilzAdam/mobs/wiki/API
+
+License:
+Sourcecode: WTFPL (see below)
+Grahpics: WTFPL (see below)
+Models: WTFPL (by Pavel_S, see below)
+
+See also:
+http://minetest.net/
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/carbone_mobs/api.lua b/carbone_mobs/api.lua
new file mode 100644
index 0000000..227b0c0
--- /dev/null
+++ b/carbone_mobs/api.lua
@@ -0,0 +1,556 @@
+local monster_damage = minetest.setting_get("monster_damage_factor") or 1.0
+
+carbone_mobs = {}
+
+function carbone_mobs:register_mob(name, def)
+ minetest.register_entity(name, {
+ hp_max = def.hp_max,
+ physical = true,
+ collisionbox = def.collisionbox,
+ collide_with_objects = def.collide_with_objects,
+ visual = def.visual,
+ visual_size = def.visual_size,
+ mesh = def.mesh,
+ textures = def.textures,
+ makes_footstep_sound = def.makes_footstep_sound,
+ view_range = def.view_range,
+ walk_velocity = def.walk_velocity,
+ run_velocity = def.run_velocity,
+ damage = def.damage,
+ light_damage = def.light_damage,
+ water_damage = def.water_damage,
+ lava_damage = def.lava_damage,
+ disable_fall_damage = def.disable_fall_damage,
+ drops = def.drops,
+ armor = def.armor,
+ drawtype = def.drawtype,
+ on_rightclick = def.on_rightclick,
+ type = def.type,
+ attack_type = def.attack_type,
+ arrow = def.arrow,
+ shoot_interval = def.shoot_interval,
+ sounds = def.sounds,
+ animation = def.animation,
+ follow = def.follow,
+ jump = def.jump or true,
+
+ timer = 0,
+ env_damage_timer = 0, -- only if state = "attack"
+ attack = {player = nil, dist = nil},
+ state = "stand",
+ v_start = false,
+ old_y = nil,
+ lifetimer = 600,
+ tamed = false,
+
+ set_velocity = function(self, v)
+ local yaw = self.object:getyaw()
+ if self.drawtype == "side" then
+ yaw = yaw+(math.pi/2)
+ end
+ local x = math.sin(yaw) * -v
+ local z = math.cos(yaw) * v
+ self.object:setvelocity({x =x, y = self.object:getvelocity().y, z =z})
+ end,
+
+ get_velocity = function(self)
+ local v = self.object:getvelocity()
+ return (v.x^ 2 + v.z^ 2) ^ (0.5)
+ end,
+
+ set_animation = function(self, type)
+ if not self.animation then
+ return
+ end
+ if not self.animation.current then
+ self.animation.current = ""
+ end
+ if type == "stand" and self.animation.current ~= "stand" then
+ if
+ self.animation.stand_start
+ and self.animation.stand_end
+ and self.animation.speed_normal
+ then
+ self.object:set_animation(
+ {x = self.animation.stand_start,y = self.animation.stand_end},
+ self.animation.speed_normal, 0
+ )
+ self.animation.current = "stand"
+ end
+ elseif type == "walk" and self.animation.current ~= "walk" then
+ if
+ self.animation.walk_start
+ and self.animation.walk_end
+ and self.animation.speed_normal
+ then
+ self.object:set_animation(
+ {x = self.animation.walk_start,y = self.animation.walk_end},
+ self.animation.speed_normal, 0
+ )
+ self.animation.current = "walk"
+ end
+ elseif type == "run" and self.animation.current ~= "run" then
+ if
+ self.animation.run_start
+ and self.animation.run_end
+ and self.animation.speed_run
+ then
+ self.object:set_animation(
+ {x = self.animation.run_start,y = self.animation.run_end},
+ self.animation.speed_run, 0
+ )
+ self.animation.current = "run"
+ end
+ elseif type == "punch" and self.animation.current ~= "punch" then
+ if
+ self.animation.punch_start
+ and self.animation.punch_end
+ and self.animation.speed_normal
+ then
+ self.object:set_animation(
+ {x = self.animation.punch_start,y = self.animation.punch_end},
+ self.animation.speed_normal, 0
+ )
+ self.animation.current = "punch"
+ end
+ end
+ end,
+
+ on_step = function(self, dtime)
+
+
+ self.lifetimer = self.lifetimer - dtime
+ if self.lifetimer <= 0 and not self.tamed then
+ local player_count = 0
+ for _,obj in ipairs(minetest.get_objects_inside_radius(self.object:getpos(), 12)) do
+ if obj:is_player() then
+ player_count = player_count + 1
+ end
+ end
+ if player_count == 0 and self.state ~= "attack" then
+ local pos = self.object:getpos()
+ local hp = self.object:get_hp()
+ minetest.log("action", "A mob with " .. tostring(hp) .. " HP despawned at " .. minetest.pos_to_string(pos) .. ".")
+ self.object:remove()
+ return
+ end
+ end
+
+ if self.object:getvelocity().y > 0.1 then
+ local yaw = self.object:getyaw()
+ if self.drawtype == "side" then
+ yaw = yaw+(math.pi/2)
+ end
+ local x = math.sin(yaw) * -2
+ local z = math.cos(yaw) * 2
+ if minetest.get_item_group(minetest.get_node(self.object:getpos()).name, "water") ~= 0 then
+ self.object:setacceleration({x = x, y = 1.5, z = z})
+ else
+ self.object:setacceleration({x = x, y = -14.5, z = z})
+ end
+ else
+ if minetest.get_item_group(minetest.get_node(self.object:getpos()).name, "water") ~= 0 then
+ self.object:setacceleration({x = 0, y = 1.5, z = 0})
+ else
+ self.object:setacceleration({x = 0, y = -14.5, z = 0})
+ end
+ end
+
+ --[[
+ if self.disable_fall_damage and self.object:getvelocity().y == 0 then
+ if not self.old_y then
+ self.old_y = self.object:getpos().y
+ else
+ local d = self.old_y - self.object:getpos().y
+ if d > 5 then
+ local damage = d-5
+ self.object:set_hp(self.object:get_hp()-damage)
+ minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
+ if self.object:get_hp() == 0 then
+ minetest.sound_play("player_death", {object = self.object, gain = 0.4})
+ self.object:remove()
+ end
+ end
+ self.old_y = self.object:getpos().y
+ end
+ end
+ --]]
+
+ self.timer = self.timer + dtime
+ if self.state ~= "attack" then
+ if self.timer < 0.9 then return end
+ self.timer = 0
+ end
+
+-- if self.sounds and self.sounds.random and math.random(1, 100) <= 1 then
+-- minetest.sound_play(self.sounds.random, {object = self.object})
+-- end
+
+ local do_env_damage = function(self)
+ local pos = self.object:getpos()
+ local n = minetest.get_node(pos)
+
+ if self.light_damage and self.light_damage ~= 0
+ and pos.y > 0
+ and minetest.get_node_light(pos)
+ and minetest.get_node_light(pos) > 4
+ and minetest.get_timeofday() > 0.2
+ and minetest.get_timeofday() < 0.8
+ then
+ self.object:set_hp(self.object:get_hp()-self.light_damage)
+ minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
+ if self.object:get_hp() <= 0 then
+ minetest.sound_play("player_death", {object = self.object, gain = 0.4})
+ self.object:remove()
+ end
+ end
+
+ if self.water_damage and self.water_damage ~= 0 and
+ minetest.get_item_group(n.name, "water") ~= 0
+ then
+ self.object:set_hp(self.object:get_hp()-self.water_damage)
+ minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
+ if self.object:get_hp() <= 0 then
+ minetest.sound_play("player_death", {object = self.object, gain = 0.4})
+ self.object:remove()
+ end
+ end
+
+ if self.lava_damage and self.lava_damage ~= 0 and
+ minetest.get_item_group(n.name, "lava") ~= 0
+ then
+ self.object:set_hp(self.object:get_hp()-self.lava_damage)
+ minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
+ if self.object:get_hp() <= 0 then
+ minetest.sound_play("player_death", {object = self.object, gain = 0.4})
+ self.object:remove()
+ end
+ end
+ end
+
+ self.env_damage_timer = self.env_damage_timer + dtime
+ if self.state == "attack" and self.env_damage_timer > 0.9 then
+ self.env_damage_timer = 0
+ do_env_damage(self)
+ elseif self.state ~= "attack" then
+ do_env_damage(self)
+ end
+
+ if self.type == "monster" then
+ for _,player in pairs(minetest.get_connected_players()) do
+ local s = self.object:getpos()
+ local p = player:getpos()
+ local dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5
+ if dist <= self.view_range then
+ self.state = "attack"
+ self.attack.player = player
+ end
+ end
+ end
+
+ if self.follow ~= "" and not self.following then
+ for _,player in pairs(minetest.get_connected_players()) do
+ local s = self.object:getpos()
+ local p = player:getpos()
+ local dist = ((p.x -s.x) ^ 2 + (p.y -s.y) ^ 2 + (p.z -s.z) ^ 2) ^ 0.5
+ if self.view_range and dist < self.view_range then
+ self.following = player
+ end
+ end
+ end
+
+ if self.following and self.following:is_player() then
+ if self.following:get_wielded_item():get_name() ~= self.follow then
+ self.following = nil
+ else
+ local s = self.object:getpos()
+ local p = self.following:getpos()
+ local dist = ((p.x -s.x) ^ 2 + (p.y -s.y) ^ 2 + (p.z -s.z) ^ 2) ^ 0.5
+ if dist > self.view_range then
+ self.following = nil
+ self.v_start = false
+ else
+ local vec = {x = p.x -s.x, y = p.y -s.y, z = p.z -s.z}
+ local yaw = math.atan(vec.z/vec.x)+math.pi/2
+ if self.drawtype == "side" then
+ yaw = yaw+(math.pi/2)
+ end
+ if p.x > s.x then
+ yaw = yaw+math.pi
+ end
+ self.object:setyaw(yaw)
+ if dist > 2 then
+ if not self.v_start then
+ self.v_start = true
+ self.set_velocity(self, self.walk_velocity)
+ else
+ if self.get_velocity(self) <= 0.38 and self.object:getvelocity().y == 0 then
+ local v = self.object:getvelocity()
+ v.y = 8
+ self.object:setvelocity(v)
+ end
+ self.set_velocity(self, self.walk_velocity)
+ end
+ self:set_animation("walk")
+ else
+ self.v_start = false
+ self.set_velocity(self, 0)
+ self:set_animation("stand")
+ end
+ return
+ end
+ end
+ end
+
+ if self.state == "stand" then
+ if math.random(1, 4) == 1 then
+ self.object:setyaw(self.object:getyaw()+((math.random(0,360)- 14.50)/180*math.pi))
+ end
+ self.set_velocity(self, 0)
+ self.set_animation(self, "stand")
+ if math.random(1, 100) <= 50 then
+ self.set_velocity(self, self.walk_velocity)
+ self.state = "walk"
+ self.set_animation(self, "walk")
+ end
+ elseif self.state == "walk" then
+ if math.random(1, 100) <= 30 then
+ self.object:setyaw(self.object:getyaw()+((math.random(0,360)- 14.50)/180*math.pi))
+ end
+ if self.get_velocity(self) <= 0.38 and self.object:getvelocity().y == 0 then
+ local v = self.object:getvelocity()
+ v.y = 8
+ self.object:setvelocity(v)
+ end
+ self:set_animation("walk")
+ self.set_velocity(self, self.walk_velocity)
+ if math.random(1, 100) <= 30 then
+ self.set_velocity(self, 0)
+ self.state = "stand"
+ self:set_animation("stand")
+ end
+ elseif self.state == "attack" and self.attack_type == "dogfight" then
+ if not self.attack.player or not self.attack.player:is_player() then
+ self.state = "stand"
+ self:set_animation("stand")
+ return
+ end
+ local s = self.object:getpos()
+ local p = self.attack.player:getpos()
+ local dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5
+ if dist > self.view_range or self.attack.player:get_hp() <= 0 then
+ self.state = "stand"
+ self.v_start = false
+ self.set_velocity(self, 0)
+ self.attack = {player = nil, dist = nil}
+ self:set_animation("stand")
+ return
+ else
+ self.attack.dist = dist
+ end
+
+ local vec = {x = p.x -s.x, y = p.y -s.y, z = p.z -s.z}
+ local yaw = math.atan(vec.z/vec.x)+math.pi/2
+ if self.drawtype == "side" then
+ yaw = yaw+(math.pi/2)
+ end
+ if p.x > s.x then
+ yaw = yaw+math.pi
+ end
+ self.object:setyaw(yaw)
+ if self.attack.dist > 2 then
+ if not self.v_start then
+ self.v_start = true
+ self.set_velocity(self, self.run_velocity)
+ else
+ if self.get_velocity(self) <= 1.58 and self.object:getvelocity().y == 0 then
+ local v = self.object:getvelocity()
+ v.y = 8
+ self.object:setvelocity(v)
+ end
+ self.set_velocity(self, self.run_velocity)
+ end
+ self:set_animation("run")
+ else
+ self.set_velocity(self, 0)
+ self:set_animation("punch")
+ self.v_start = false
+ if self.timer > 0.9 then
+ self.timer = 0
+ minetest.sound_play("mobs_punch", {object = self.object, gain = 1})
+ self.attack.player:punch(self.object, monster_damage, {
+ full_punch_interval = 0.9,
+ damage_groups = {fleshy = self.damage}
+ }, vec)
+ end
+ end
+ elseif self.state == "attack" and self.attack_type == "shoot" then
+ if not self.attack.player or not self.attack.player:is_player() then
+ self.state = "stand"
+ self:set_animation("stand")
+ return
+ end
+ local s = self.object:getpos()
+ local p = self.attack.player:getpos()
+ local dist = ((p.x -s.x) ^ 2 + (p.y -s.y) ^ 2 + (p.z -s.z) ^ 2) ^ 0.5
+ if dist > self.view_range or self.attack.player:get_hp() <= 0 then
+ self.state = "stand"
+ self.v_start = false
+ self.set_velocity(self, 0)
+ self.attack = {player = nil, dist = nil}
+ self:set_animation("stand")
+ return
+ else
+ self.attack.dist = dist
+ end
+
+ local vec = {x = p.x -s.x, y = p.y -s.y, z = p.z -s.z}
+ local yaw = math.atan(vec.z/vec.x)+math.pi/2
+ if self.drawtype == "side" then
+ yaw = yaw+(math.pi/2)
+ end
+ if p.x > s.x then
+ yaw = yaw+math.pi
+ end
+ self.object:setyaw(yaw)
+ self.set_velocity(self, 0)
+
+ if self.timer > self.shoot_interval and math.random(1, 100) <= 60 then
+ self.timer = 0
+
+ self:set_animation("punch")
+
+ if self.sounds and self.sounds.attack then
+ minetest.sound_play(self.sounds.attack, {object = self.object})
+ end
+
+ local p = self.object:getpos()
+ p.y = p.y + (self.collisionbox[2]+self.collisionbox[5])/2
+ local obj = minetest.add_entity(p, self.arrow)
+ local amount = (vec.x^ 2+vec.y^ 2+vec.z^ 2) ^ 0.5
+ local v = obj:get_luaentity().velocity
+ vec.y = vec.y+0
+ vec.x = vec.x*v/amount
+ vec.y = vec.y*v/amount
+ vec.z = vec.z*v/amount
+ obj:setvelocity(vec)
+ end
+ end
+ end,
+
+ on_activate = function(self, staticdata, dtime_s)
+ self.object:set_armor_groups({fleshy = self.armor})
+ self.object:setacceleration({x = 0, y = -14.5, z = 0})
+ self.state = "stand"
+ self.object:setvelocity({x = 0, y = self.object:getvelocity().y, z = 0})
+ self.object:setyaw(math.random(1, 360) / 180 * math.pi)
+ self.lifetimer = 600 - dtime_s
+ if staticdata then
+ local tmp = minetest.deserialize(staticdata)
+ if tmp and tmp.lifetimer then
+ self.lifetimer = tmp.lifetimer - dtime_s
+ end
+ if tmp and tmp.tamed then
+ self.tamed = tmp.tamed
+ end
+ end
+ if self.lifetimer <= 0 and not self.tamed then
+ local pos = self.object:getpos()
+ local hp = self.object:get_hp()
+ minetest.log("action", "A mob with " .. tostring(hp) .. " HP despawned at " .. minetest.pos_to_string(pos) .. " on activation.")
+ self.object:remove()
+ end
+ end,
+
+ get_staticdata = function(self)
+ local tmp = {
+ lifetimer = self.lifetimer,
+ tamed = self.tamed,
+ }
+ return minetest.serialize(tmp)
+ end,
+
+ on_punch = function(self, hitter)
+ local hp = self.object:get_hp()
+ if hp >= 1 then
+ minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
+ minetest.sound_play("hit", {pos = hitter:getpos(), gain = 0.4})
+ end
+ local y = self.object:getvelocity().y
+ if y <= 0 then
+ self.object:setvelocity({x = 0, y = y + 4.5, z = 0})
+ end
+ if hp <= 0 then
+ if hitter and hitter:is_player() and hitter:get_inventory() then
+ local pos = self.object:getpos()
+ minetest.sound_play("player_death", {object = self.object, gain = 0.4})
+ minetest.sound_play("hit_death", {pos = hitter:getpos(), gain = 0.4})
+ for _,drop in ipairs(self.drops) do
+ if math.random(1, drop.chance) == 1 then
+ hitter:get_inventory():add_item("main", ItemStack(drop.name .. " " .. math.random(drop.min, drop.max)))
+ end
+ end
+ end
+ end
+ end,
+
+ })
+end
+
+carbone_mobs.spawning_mobs = {}
+function carbone_mobs:register_spawn(name, description, nodes, max_light, min_light, chance, active_object_count, max_height, spawn_func)
+ carbone_mobs.spawning_mobs[name] = true
+ minetest.register_abm({
+ nodenames = nodes,
+ neighbors = {"air"},
+ interval = 2,
+ chance = chance,
+ action = function(pos, node, _, active_object_count_wider)
+ -- local players = #minetest.get_connected_players()
+ -- if players == 0 then return end
+ if active_object_count_wider > active_object_count then return end
+ if not carbone_mobs.spawning_mobs[name] then return end
+ pos.y = pos.y + 1
+ if minetest.get_node(pos).name ~= "air" then return end
+ if pos.y > max_height then return end
+ if not minetest.get_node_light(pos) then return end
+ if minetest.get_node_light(pos) > max_light then return end
+ if minetest.get_node_light(pos) < min_light then return end
+ if spawn_func and not spawn_func(pos, node) then return end
+ minetest.log("action", "Spawned " .. description .. " at " .. minetest.pos_to_string(pos) .. ".")
+ minetest.add_entity(pos, name)
+ if name ~= "carbone_mobs:rat" then return end
+ minetest.add_entity(pos, "carbone_mobs:rat") -- Rats spawn in pairs.
+ end
+ })
+end
+
+function carbone_mobs:register_arrow(name, def)
+ minetest.register_entity(name, {
+ physical = false,
+ collisionbox = {0, 0, 0, 0, 0, 0},
+ visual = def.visual,
+ visual_size = def.visual_size,
+ textures = def.textures,
+ velocity = def.velocity,
+ hit_player = def.hit_player,
+ hit_node = def.hit_node,
+
+ on_step = function(self, dtime)
+ local pos = self.object:getpos()
+ if minetest.registered_nodes[minetest.get_node(self.object:getpos()).name].walkable then
+ self.hit_node(self, pos, node)
+ self.object:remove()
+ return
+ end
+ pos.y = pos.y - 1
+ for _,player in pairs(minetest.get_objects_inside_radius(pos, 1)) do
+ if player:is_player() then
+ self.hit_player(self, player)
+ self.object:remove()
+ return
+ end
+ end
+ end
+ })
+end
diff --git a/carbone_mobs/depends.txt b/carbone_mobs/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/carbone_mobs/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/carbone_mobs/init.lua b/carbone_mobs/init.lua
new file mode 100644
index 0000000..a57fb4b
--- /dev/null
+++ b/carbone_mobs/init.lua
@@ -0,0 +1,796 @@
+dofile(minetest.get_modpath("carbone_mobs").."/api.lua")
+
+-- Ensure the correct active_block_range value is used (for performance and spawning):
+minetest.setting_set("active_block_range", 1)
+
+carbone_mobs:register_mob("carbone_mobs:dirt_monster", {
+ type = "monster",
+ hp_max = 15,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
+ visual = "mesh",
+ mesh = "mobs_stone_monster.x",
+ textures = {"mobs_dirt_monster.png"},
+ visual_size = {x = 3, y = 2.6},
+ makes_footstep_sound = true,
+ view_range = 16,
+ walk_velocity = 1.1,
+ run_velocity = 2,
+ on_rightclick = nil,
+ damage = 2,
+ drops = {
+ name = "default:dirt",
+ chance = 1,
+ min = 4,
+ max = 4,
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 2,
+-- max = 2,},
+ },
+ armor = 100,
+ drawtype = "front",
+ lava_damage = 8,
+ light_damage = 1,
+ attack_type = "dogfight",
+ animation = {
+ speed_normal = 18,
+ speed_run = 50,
+ stand_start = 0,
+ stand_end = 14,
+ walk_start = 15,
+ walk_end = 38,
+ run_start = 40,
+ run_end = 63,
+ punch_start = 40,
+ punch_end = 63,
+ },
+})
+
+minetest.register_craftitem("carbone_mobs:dirt_monster", {
+ description = "Dirt Monster",
+ inventory_image = "mobs_dirt_monster.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:dirt_monster")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a dirt monster at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_mob("carbone_mobs:stone_monster", {
+ type = "monster",
+ hp_max = 20,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
+ visual = "mesh",
+ mesh = "mobs_stone_monster.x",
+ textures = {"mobs_stone_monster.png"},
+ visual_size = {x = 3, y = 2.6},
+ makes_footstep_sound = true,
+ view_range = 16,
+ walk_velocity = 0.4,
+ run_velocity = 1.7,
+ damage = 4,
+ drops = {
+ {name = "default:stone",
+ chance = 1,
+ min = 4,
+ max = 4,},
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 3,
+-- max = 3,},
+ },
+ armor = 80,
+ drawtype = "front",
+ light_damage = 1,
+ attack_type = "dogfight",
+ animation = {
+ speed_normal = 8,
+ speed_run = 40,
+ stand_start = 0,
+ stand_end = 14,
+ walk_start = 15,
+ walk_end = 38,
+ run_start = 40,
+ run_end = 63,
+ punch_start = 40,
+ punch_end = 63,
+ }
+})
+
+minetest.register_craftitem("carbone_mobs:stone_monster", {
+ description = "Stone Monster",
+ inventory_image = "mobs_stone_monster.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:stone_monster")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a stone monster at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_mob("carbone_mobs:sand_monster", {
+ type = "monster",
+ hp_max = 10,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
+ visual = "mesh",
+ mesh = "mobs_sand_monster.x",
+ textures = {"mobs_sand_monster.png"},
+ visual_size = {x =8,y =8},
+ makes_footstep_sound = true,
+ view_range = 16,
+ walk_velocity = 1.8,
+ run_velocity = 3,
+ damage = 1,
+ drops = {
+ {name = "default:sand",
+ chance = 1,
+ min = 4,
+ max = 4,},
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 3,
+-- max = 3,},
+ },
+ armor = 100,
+ drawtype = "front",
+ lava_damage = 8,
+ light_damage = 1,
+ attack_type = "dogfight",
+ animation = {
+ speed_normal = 35,
+ speed_run = 45,
+ stand_start = 0,
+ stand_end = 39,
+ walk_start = 41,
+ walk_end = 72,
+ run_start = 74,
+ run_end = 105,
+ punch_start = 74,
+ punch_end = 105,
+ },
+})
+
+minetest.register_craftitem("carbone_mobs:sand_monster", {
+ description = "Sand Monster",
+ inventory_image = "mobs_sand_monster.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:sand_monster")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a sand monster at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_mob("carbone_mobs:sheep", {
+ type = "animal",
+ hp_max = 8,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
+ textures = {"mobs_sheep.png"},
+ visual = "mesh",
+ mesh = "mobs_sheep.x",
+ makes_footstep_sound = true,
+ walk_velocity = 1,
+ armor = 100,
+ drops = {
+ {name = "carbone_mobs:meat_raw",
+ chance = 1,
+ min = 2,
+ max = 2,},
+-- {name = "maptools:copper_coin",
+-- chance = 1,
+-- min = 5,
+-- max = 5,},
+ },
+ drawtype = "front",
+ water_damage = 1,
+ lava_damage = 8,
+ animation = {
+ speed_normal = 17,
+ stand_start = 0,
+ stand_end = 80,
+ walk_start = 81,
+ walk_end = 100,
+ },
+ follow = "farming:wheat",
+ view_range = 8,
+ on_rightclick = function(self, clicker)
+ local item = clicker:get_wielded_item()
+ if item:get_name() == "farming:wheat" then
+ if not self.tamed then
+ if not minetest.setting_getbool("creative_mode") then
+ item:take_item()
+ clicker:set_wielded_item(item)
+ end
+ self.tamed = true
+ self.object:set_hp(self.object:get_hp() + 3)
+ if self.object:get_hp() > 15 then self.object:set_hp(15) end
+ else
+ if not minetest.setting_getbool("creative_mode") and self.naked then
+ item:take_item()
+ clicker:set_wielded_item(item)
+ end
+ self.food = (self.food or 0) + 1
+ if self.food >= 8 then
+ self.food = 0
+ self.naked = false
+ self.object:set_properties({
+ textures = {"mobs_sheep.png"},
+ mesh = "mobs_sheep.x",
+ })
+ end
+ self.object:set_hp(self.object:get_hp() + 3)
+ if self.object:get_hp() > 15 then self.object:set_hp(15) return end
+ if not self.naked then
+ item:take_item()
+ clicker:set_wielded_item(item)
+ end
+ end
+ return
+ end
+ if clicker:get_inventory() and not self.naked then
+ self.naked = true
+ if minetest.registered_items["wool:white"] then
+ clicker:get_inventory():add_item("main", ItemStack("wool:white 2"))
+-- clicker:get_inventory():add_item("main", ItemStack("maptools:copper_coin"))
+ minetest.sound_play("default_snow_footstep", {object = self.object, gain = 0.3,})
+ end
+ self.object:set_properties({
+ textures = {"mobs_sheep_shaved.png"},
+ mesh = "mobs_sheep_shaved.x",
+ })
+ end
+ end,
+})
+
+minetest.register_craftitem("carbone_mobs:sheep", {
+ description = "Sheep",
+ inventory_image = "mobs_sheep.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:sheep")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a sheep at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+minetest.register_craftitem("carbone_mobs:meat_raw", {
+ description = "Raw Meat",
+ inventory_image = "mobs_meat_raw.png",
+})
+
+minetest.register_craftitem("carbone_mobs:meat", {
+ description = "Meat",
+ inventory_image = "mobs_meat.png",
+ on_use = minetest.item_eat(6),
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "carbone_mobs:meat",
+ recipe = "carbone_mobs:meat_raw",
+ cooktime = 25,
+})
+
+carbone_mobs:register_mob("carbone_mobs:rat", {
+ type = "animal",
+ hp_max = 1,
+ collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.35, 0.25},
+ collide_with_objects = false,
+ visual = "mesh",
+ mesh = "mobs_rat.x",
+ textures = {"mobs_rat.png"},
+ makes_footstep_sound = false,
+ walk_velocity = 0.8,
+ armor = 200,
+ drops = {
+ {name = "carbone_mobs:rat",
+ chance = 1,
+ min = 1,
+ max = 1,},
+ },
+ drawtype = "front",
+ water_damage = 1,
+ lava_damage = 8,
+ follow = "default:scorched_stuff",
+ view_range = 5,
+})
+
+minetest.register_craftitem("carbone_mobs:rat", {
+ description = "Rat",
+ inventory_image = "mobs_rat_inventory.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:rat")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a rat at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+minetest.register_craftitem("carbone_mobs:rat_cooked", {
+ description = "Cooked Rat",
+ inventory_image = "mobs_cooked_rat.png",
+ on_use = minetest.item_eat(3),
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "carbone_mobs:rat_cooked",
+ recipe = "carbone_mobs:rat",
+ cooktime = 15,
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "default:scorched_stuff",
+ recipe = "carbone_mobs:rat_cooked",
+ cooktime = 10,
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "dye:black",
+ recipe = {"default:scorched_stuff"},
+})
+
+carbone_mobs:register_mob("carbone_mobs:oerkki", {
+ type = "monster",
+ hp_max = 20,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
+ visual = "mesh",
+ mesh = "mobs_oerkki.x",
+ textures = {"mobs_oerkki.png"},
+ visual_size = {x =5, y =5},
+ makes_footstep_sound = false,
+ view_range = 16,
+ walk_velocity = 0.5,
+ run_velocity = 2.25,
+ damage = 3,
+ drops = {
+ {name = "default:obsidian",
+ chance = 1,
+ min = 4,
+ max = 4,},
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 5,
+-- max = 5,},
+ },
+ armor = 100,
+ drawtype = "front",
+ lava_damage = 8,
+ light_damage = 1,
+ attack_type = "dogfight",
+ animation = {
+ stand_start = 0,
+ stand_end = 23,
+ walk_start = 24,
+ walk_end = 36,
+ run_start = 37,
+ run_end = 49,
+ punch_start = 37,
+ punch_end = 49,
+ speed_normal = 10,
+ speed_run = 18,
+ },
+})
+
+minetest.register_craftitem("carbone_mobs:oerkki", {
+ description = "Oerkki",
+ inventory_image = "mobs_oerkki.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:oerkki")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed an oerkki at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_mob("carbone_mobs:tree_monster", {
+ type = "monster",
+ hp_max = 40,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
+ visual = "mesh",
+ mesh = "mobs_tree_monster.x",
+ textures = {"mobs_tree_monster.png"},
+ visual_size = {x = 4.5,y = 4.5},
+ makes_footstep_sound = true,
+ view_range = 16,
+ walk_velocity = 0,
+ run_velocity = 1.6,
+ damage = 5,
+ drops = {
+ {name = "default:sapling",
+ chance = 1,
+ min = 4,
+ max = 4,},
+ {name = "default:junglesapling",
+ chance = 1,
+ min = 4,
+ max = 4,},
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 6,
+-- max = 6,},
+ },
+ armor = 80,
+ drawtype = "front",
+ lava_damage = 8,
+ light_damage = 1,
+ disable_fall_damage = true,
+ attack_type = "dogfight",
+ animation = {
+ speed_normal = 8,
+ speed_run = 20,
+ stand_start = 0,
+ stand_end = 24,
+ walk_start = 25,
+ walk_end = 47,
+ run_start = 48,
+ run_end = 62,
+ punch_start = 48,
+ punch_end = 62,
+ },
+})
+
+minetest.register_craftitem("carbone_mobs:tree_monster", {
+ description = "Tree Monster",
+ inventory_image = "mobs_tree_monster.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:tree_monster")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a tree monster at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_mob("carbone_mobs:trooper", {
+ type = "monster",
+ hp_max = 20,
+ collisionbox = {-0.3, -1.0, -0.3, 0.3, 0.8, 0.3},
+ visual = "mesh",
+ mesh = "character.x",
+ textures = {"character.png"},
+ visual_size = {x = 1, y = 1},
+ makes_footstep_sound = true,
+ view_range = 8,
+ lava_damage = 8,
+ walk_velocity = 1,
+ run_velocity = 3,
+ damage = 1,
+ drops = {
+ {name = "carbone_mobs:trooper",
+ chance = 1,
+ min = 1,
+ max = 1,},
+ },
+ armor = 100,
+ drawtype = "front",
+ attack_type = "dogfight",
+ animation = {
+ speed_normal = 15,
+ speed_run = 30,
+ stand_start = 0,
+ stand_end = 40,
+ walk_start = 168,
+ walk_end = 187,
+ run_start = 168,
+ run_end = 187,
+ punch_start = 189,
+ punch_end = 198,
+ }
+})
+
+minetest.register_craftitem("carbone_mobs:trooper", {
+ description = "Trooper",
+ inventory_image = "player.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ pointed_thing.above.y = pointed_thing.above.y + 0.5
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:trooper")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a trooper at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_mob("carbone_mobs:dungeon_master", {
+ type = "monster",
+ hp_max = 35,
+ collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.6, 0.7},
+ visual = "mesh",
+ mesh = "mobs_dungeon_master.x",
+ textures = {"mobs_dungeon_master.png"},
+ visual_size = {x =8, y =8},
+ makes_footstep_sound = true,
+ view_range = 12,
+ walk_velocity = 0.4,
+ run_velocity = 2,
+ damage = 8,
+ drops = {
+ {name = "default:mese_crystal",
+ chance = 1,
+ min = 1,
+ max = 1,},
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 8,
+-- max = 8,},
+ },
+ armor = 60,
+ drawtype = "front",
+ lava_damage = 8,
+ light_damage = 200,
+ on_rightclick = nil,
+ attack_type = "shoot",
+ arrow = "carbone_mobs:fireball",
+ shoot_interval = 2.5,
+ sounds = {
+ attack = "mobs_fireball",
+ },
+ animation = {
+ stand_start = 0,
+ stand_end = 19,
+ walk_start = 20,
+ walk_end = 35,
+ punch_start = 36,
+ punch_end = 48,
+ speed_normal = 8,
+ speed_run = 5,
+ },
+})
+
+minetest.register_craftitem("carbone_mobs:dungeon_master", {
+ description = "Dungeon Master",
+ inventory_image = "mobs_dungeon_master.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:dungeon_master")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a dungeon master at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_arrow("carbone_mobs:fireball", {
+ visual = "sprite",
+ visual_size = {x = 1, y = 1},
+ textures = {"mobs_fireball.png"},
+ velocity = 8,
+ hit_player = function(self, player)
+ local s = self.object:getpos()
+ local p = player:getpos()
+ local vec = {x = s.x - p.x, y = s.y - p.y, z = s.z - p.z}
+ player:punch(self.object, 1.0, {
+ full_punch_interval = 1.0,
+ damage_groups = {fleshy = 8},
+ }, vec)
+ local pos = self.object:getpos()
+ for dx = -1, 1 do
+ for dy = -1, 1 do
+ for dz = -1, 1 do
+ local p = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}
+ local n = minetest.get_node(pos).name
+ if n ~= "bedrock:bedrock"
+ and n ~= "default:chest_locked"
+ and n ~= "bones:bones"
+ and n ~= "default:chest"
+ and n ~= "default:furnace" then
+ minetest.dig_node(p)
+ end
+ minetest.sound_play("mobs_fireball_explode", {
+ pos = pos,
+ gain = 0.1,
+ max_hear_distance = 48})
+ end
+ end
+ end
+ end,
+ hit_node = function(self, pos, node)
+ for dx = -1, 1 do
+ for dy = -2, 1 do
+ for dz = -1, 1 do
+ local p = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}
+ local n = minetest.get_node(pos).name
+ if n ~= "bedrock:bedrock"
+ and n ~= "default:chest_locked"
+ and n ~= "bones:bones"
+ and n ~= "default:chest"
+ and n ~= "default:furnace" then
+ minetest.dig_node(p)
+ end
+ minetest.sound_play("mobs_fireball_explode", {
+ pos = pos,
+ gain = 0.1,
+ max_hear_distance = 48})
+ end
+ end
+ end
+ end
+})
+
+carbone_mobs:register_mob("carbone_mobs:rhino", {
+ type = "monster",
+ hp_max = 22,
+ collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
+ visual = "mesh",
+ mesh = "mobs_sand_monster.x",
+ textures = {"mobs_rhino.png"},
+ visual_size = {x = 8, y = 8},
+ makes_footstep_sound = true,
+ view_range = 12,
+ walk_velocity = 1.2,
+ run_velocity = 2,
+ damage = 2,
+ drops = {
+ {name = "default:steel_ingot",
+ chance = 1,
+ min = 10,
+ max = 10,},
+-- {name = "maptools:silver_coin",
+-- chance = 1,
+-- min = 12,
+-- max = 12,},
+ },
+ armor = 60,
+ drawtype = "front",
+ lava_damage = 8,
+ light_damage = 1,
+ on_rightclick = nil,
+ attack_type = "shoot",
+ arrow = "carbone_mobs:bullet",
+ shoot_interval = 0.5,
+ sounds = {
+ attack = "mobs_bullet",
+ },
+ animation = {
+ speed_normal = 25,
+ speed_run = 45,
+ stand_start = 0,
+ stand_end = 39,
+ walk_start = 41,
+ walk_end = 72,
+ run_start = 74,
+ run_end = 105,
+ punch_start = 74,
+ punch_end = 105,
+ },
+})
+
+minetest.register_craftitem("carbone_mobs:rhino", {
+ description = "Rhino",
+ inventory_image = "mobs_rhino.png",
+ wield_scale = {x = 1.25, y = 1.25, z = 2.5},
+ groups = {not_in_creative_inventory = 1},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.above then
+ minetest.add_entity(pointed_thing.above, "carbone_mobs:rhino")
+ if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end
+ minetest.log("action", placer:get_player_name() .. " placed a rhino at " .. minetest.pos_to_string(pointed_thing.above) .. ".")
+ end
+ return itemstack
+ end,
+})
+
+carbone_mobs:register_arrow("carbone_mobs:bullet", {
+ visual = "sprite",
+ visual_size = {x = 0.75, y = 0.75},
+ textures = {"mobs_bullet.png"},
+ velocity = 15,
+ hit_player = function(self, player)
+ local s = self.object:getpos()
+ local p = player:getpos()
+ local vec = {x =s.x-p.x, y =s.y-p.y, z =s.z-p.z}
+ player:punch(self.object, 1.0, {
+ full_punch_interval= 1.0,
+ damage_groups = {fleshy = 2},
+ }, vec)
+ local pos = self.object:getpos()
+ for dx = -1, 1 do
+ for dy = -1, 1 do
+ for dz = -1, 1 do
+ local p = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}
+ local n = minetest.get_node(pos).name
+ end
+ end
+ end
+ end,
+ hit_node = function(self, pos, node)
+ for dx = -1, 1 do
+ for dy = -2, 1 do
+ for dz = -1, 1 do
+ local p = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}
+ local n = minetest.get_node(pos).name
+ end
+ end
+ end
+ end
+})
+
+-- carbone_mobs:register_spawn(name, description, nodes, max_light, min_light, chance, active_object_count, max_height)
+
+if not minetest.setting_getbool("creative_mode") then -- Disable all mob spawning in creative mode.
+ if minetest.setting_getbool("spawn_friendly_mobs") ~= false then -- “If nil or true thenâ€
+ local rn = {"default:stone", "default:leaves", "default:jungleleaves", "default:cactus"}
+ local sn = {"default:dirt_with_grass"}
+
+ carbone_mobs:register_spawn("carbone_mobs:rat", "two rats", rn, 16, -1, 7500, 6, 100)
+ carbone_mobs:register_spawn("carbone_mobs:sheep", "a sheep", sn, 16, 8, 20000, 2, 100)
+ end
+ if minetest.setting_getbool("spawn_hostile_mobs") ~= false then -- “If nil or true thenâ€
+ local mn = {"default:stone", "default:desert_stone", "default:cobble", "default:mossycobble"}
+
+ carbone_mobs:register_spawn("carbone_mobs:dirt_monster", "a dirt monster", mn, 1, -1, 25000, 6, 0)
+ carbone_mobs:register_spawn("carbone_mobs:stone_monster", "a stone monster", mn, 1, -1, 25000, 4, 0)
+ carbone_mobs:register_spawn("carbone_mobs:sand_monster", "a sand monster", mn, 1, -1, 25000, 4, 0)
+ carbone_mobs:register_spawn("carbone_mobs:oerkki", "an oerkki", mn, 1, -1, 25000, 4, 0)
+ carbone_mobs:register_spawn("carbone_mobs:tree_monster", "a tree monster", mn, 1, -1, 25000, 2, 0)
+
+ carbone_mobs:register_spawn("carbone_mobs:trooper", "a trooper", mn, 1, -1, 50000, 2, 0)
+ carbone_mobs:register_spawn("carbone_mobs:dungeon_master", "a dungeon master", mn, 1, -1, 50000, 2, -50)
+ carbone_mobs:register_spawn("carbone_mobs:rhino", "a rhino", mn, 1, -1, 50000, 2, 0)
+ end
+end
+
+minetest.register_alias("mobs:dirt_monster", "carbone_mobs:dirt_monster")
+minetest.register_alias("mobs:stone_monster", "carbone_mobs:stone_monster")
+minetest.register_alias("mobs:sand_monster", "carbone_mobs:sand_monster")
+minetest.register_alias("mobs:tree_monster", "carbone_mobs:tree_monster")
+minetest.register_alias("mobs:oerkki", "carbone_mobs:oerkki")
+minetest.register_alias("mobs:dungeon_master", "carbone_mobs:dungeon_master")
+minetest.register_alias("mobs:rhino", "carbone_mobs:rhino")
+minetest.register_alias("mobs:trooper", "carbone_mobs:trooper")
+
+minetest.register_alias("mobs:sheep", "carbone_mobs:sheep")
+minetest.register_alias("mobs:rat", "carbone_mobs:rat")
+minetest.register_alias("mobs:rat_cooked", "carbone_mobs:rat_cooked")
+minetest.register_alias("mobs:meat_raw", "carbone_mobs:meat_raw")
+minetest.register_alias("mobs:meat", "carbone_mobs:meat")
+
+if minetest.setting_getbool("log_mods") then
+ minetest.log("action", "Carbone: [mobs] loaded.")
+end
diff --git a/carbone_mobs/models/mobs_dirt_monster.png b/carbone_mobs/models/mobs_dirt_monster.png
new file mode 100644
index 0000000..9324985
--- /dev/null
+++ b/carbone_mobs/models/mobs_dirt_monster.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_dungeon_master.png b/carbone_mobs/models/mobs_dungeon_master.png
new file mode 100644
index 0000000..0cb0bf8
--- /dev/null
+++ b/carbone_mobs/models/mobs_dungeon_master.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_dungeon_master.x b/carbone_mobs/models/mobs_dungeon_master.x
new file mode 100755
index 0000000..613536a
--- /dev/null
+++ b/carbone_mobs/models/mobs_dungeon_master.x
@@ -0,0 +1,2830 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature_root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ 0.013544,-0.083633, 1.540002, 1.000000;;
+ }
+ Frame Armature_Bone_001 {
+ FrameTransformMatrix {
+ 0.996330, 0.085600, 0.000000, 0.000000,
+ 0.085600,-0.996329,-0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.692679, 1.523193, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_001
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ 0.996330,-0.085600, 0.000000, 0.000000,
+ -0.085600,-0.996329,-0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ -0.714786, 1.523193, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_Bone_003 {
+ FrameTransformMatrix {
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ 0.449504,-0.650638, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_003
+ Frame Armature_Bone_004 {
+ FrameTransformMatrix {
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ -0.478980,-0.650638, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_004
+ Frame Armature_Bone_005 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 1.402718,-0.262646, 1.000000;;
+ }
+ } //End of Armature_Bone_005
+ } //End of Armature_root
+ Frame Cube_004 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Mesh { //Cube_010 Mesh
+ 144;
+ 0.318756; 0.789709; 3.232342;,
+ 0.318756;-0.016418; 3.232342;,
+ 0.318756;-0.016418; 3.887055;,
+ 0.318756; 0.789709; 3.887055;,
+ 0.318756;-0.016418; 3.232342;,
+ -0.348305;-0.016418; 3.232342;,
+ -0.348305;-0.016418; 3.887055;,
+ 0.318756;-0.016418; 3.887055;,
+ -0.348305;-0.016418; 3.232342;,
+ -0.348305; 0.789709; 3.232342;,
+ -0.348305; 0.789709; 3.887055;,
+ -0.348305;-0.016418; 3.887055;,
+ -0.348305; 0.789709; 3.232342;,
+ 0.318756; 0.789709; 3.232342;,
+ 0.318756; 0.789709; 3.887055;,
+ -0.348305; 0.789709; 3.887055;,
+ -0.348305; 0.789709; 3.232342;,
+ -0.348305;-0.016418; 3.232342;,
+ 0.318756;-0.016418; 3.232342;,
+ 0.318756; 0.789709; 3.232342;,
+ 0.318756; 0.789709; 3.887055;,
+ 0.318756;-0.016418; 3.887055;,
+ -0.348305;-0.016418; 3.887055;,
+ -0.348305; 0.789709; 3.887055;,
+ -0.705105; 0.178616; 1.633796;,
+ -0.705105;-0.325428; 1.633796;,
+ -0.705105;-0.325428; 3.633796;,
+ -0.705105; 0.178616; 3.633796;,
+ -0.705105;-0.325428; 1.633796;,
+ -1.047768;-0.325428; 1.633796;,
+ -1.047768;-0.325428; 3.633796;,
+ -0.705105;-0.325428; 3.633796;,
+ -1.047768;-0.325428; 1.633796;,
+ -1.047768; 0.178616; 1.633796;,
+ -1.047768; 0.178616; 3.633796;,
+ -1.047768;-0.325428; 3.633796;,
+ -1.047768; 0.178616; 1.633796;,
+ -0.705105; 0.178616; 1.633796;,
+ -0.705105; 0.178616; 3.633796;,
+ -1.047768; 0.178616; 3.633796;,
+ -1.047768; 0.178616; 1.633796;,
+ -1.047768;-0.325428; 1.633796;,
+ -0.705105;-0.325428; 1.633796;,
+ -0.705105; 0.178616; 1.633796;,
+ -0.705105; 0.178616; 3.633796;,
+ -0.705105;-0.325428; 3.633796;,
+ -1.047768;-0.325428; 3.633796;,
+ -1.047768; 0.178616; 3.633796;,
+ 0.677945;-0.325428; 3.633796;,
+ 0.677945;-0.325429; 1.633796;,
+ 0.677945; 0.178616; 1.633796;,
+ 0.677945; 0.178616; 3.633796;,
+ 1.020608;-0.325428; 3.633796;,
+ 1.020608;-0.325429; 1.633796;,
+ 0.677945;-0.325429; 1.633796;,
+ 0.677945;-0.325428; 3.633796;,
+ 1.020608; 0.178616; 3.633796;,
+ 1.020608; 0.178616; 1.633796;,
+ 1.020608;-0.325429; 1.633796;,
+ 1.020608;-0.325428; 3.633796;,
+ 0.677945; 0.178616; 3.633796;,
+ 0.677945; 0.178616; 1.633796;,
+ 1.020608; 0.178616; 1.633796;,
+ 1.020608; 0.178616; 3.633796;,
+ 0.677945;-0.325429; 1.633796;,
+ 1.020608;-0.325429; 1.633796;,
+ 1.020608; 0.178616; 1.633796;,
+ 0.677945; 0.178616; 1.633796;,
+ 1.020608;-0.325428; 3.633796;,
+ 0.677945;-0.325428; 3.633796;,
+ 0.677945; 0.178616; 3.633796;,
+ 1.020608; 0.178616; 3.633796;,
+ 0.301218;-0.337135; 1.403617;,
+ 0.301218;-0.337135; 0.551304;,
+ 0.301218; 0.166909; 0.551303;,
+ 0.301218; 0.166909; 1.403617;,
+ 0.643881;-0.337135; 1.403617;,
+ 0.643881;-0.337135; 0.551304;,
+ 0.301218;-0.337135; 0.551304;,
+ 0.301218;-0.337135; 1.403617;,
+ 0.643881; 0.166909; 1.403617;,
+ 0.643881; 0.166909; 0.551303;,
+ 0.643881;-0.337135; 0.551304;,
+ 0.643881;-0.337135; 1.403617;,
+ 0.301218; 0.166909; 1.403617;,
+ 0.301218; 0.166909; 0.551303;,
+ 0.643881; 0.166909; 0.551303;,
+ 0.643881; 0.166909; 1.403617;,
+ 0.301218;-0.337135; 0.551304;,
+ 0.643881;-0.337135; 0.551304;,
+ 0.643881; 0.166909; 0.551303;,
+ 0.301218; 0.166909; 0.551303;,
+ 0.643881;-0.337135; 1.403617;,
+ 0.301218;-0.337135; 1.403617;,
+ 0.301218; 0.166909; 1.403617;,
+ 0.643881; 0.166909; 1.403617;,
+ -0.284914; 0.166909; 1.403617;,
+ -0.284914; 0.166909; 0.551303;,
+ -0.284914;-0.337135; 0.551304;,
+ -0.284914;-0.337135; 1.403617;,
+ -0.627577; 0.166909; 1.403617;,
+ -0.627577; 0.166909; 0.551303;,
+ -0.284914; 0.166909; 0.551303;,
+ -0.284914; 0.166909; 1.403617;,
+ -0.627577;-0.337135; 1.403617;,
+ -0.627577;-0.337135; 0.551304;,
+ -0.627577; 0.166909; 0.551303;,
+ -0.627577; 0.166909; 1.403617;,
+ -0.284914;-0.337135; 1.403617;,
+ -0.284914;-0.337135; 0.551304;,
+ -0.627577;-0.337135; 0.551304;,
+ -0.627577;-0.337135; 1.403617;,
+ -0.284914; 0.166909; 0.551303;,
+ -0.627577; 0.166909; 0.551303;,
+ -0.627577;-0.337135; 0.551304;,
+ -0.284914;-0.337135; 0.551304;,
+ -0.627577; 0.166909; 1.403617;,
+ -0.284914; 0.166909; 1.403617;,
+ -0.284914;-0.337135; 1.403617;,
+ -0.627577;-0.337135; 1.403617;,
+ 0.665053; 0.418757; 1.363851;,
+ 0.665052;-0.399357; 1.363851;,
+ 0.665052;-0.399357; 3.791156;,
+ 0.665053; 0.418757; 3.791156;,
+ 0.665052;-0.399357; 1.363851;,
+ -0.694601;-0.399357; 1.363851;,
+ -0.694601;-0.399357; 3.791156;,
+ 0.665052;-0.399357; 3.791156;,
+ -0.694601;-0.399357; 1.363851;,
+ -0.694601; 0.418757; 1.363851;,
+ -0.694601; 0.418757; 3.791156;,
+ -0.694601;-0.399357; 3.791156;,
+ -0.694601; 0.418757; 1.363851;,
+ 0.665053; 0.418757; 1.363851;,
+ 0.665053; 0.418757; 3.791156;,
+ -0.694601; 0.418757; 3.791156;,
+ -0.694601; 0.418757; 1.363851;,
+ -0.694601;-0.399357; 1.363851;,
+ 0.665052;-0.399357; 1.363851;,
+ 0.665053; 0.418757; 1.363851;,
+ 0.665053; 0.418757; 3.791156;,
+ 0.665052;-0.399357; 3.791156;,
+ -0.694601;-0.399357; 3.791156;,
+ -0.694601; 0.418757; 3.791156;;
+ 36;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;;
+ MeshNormals { //Cube_010 Normals
+ 144;
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ -0.000000;-0.000000; 1.000000;,
+ -0.000000;-0.000000; 1.000000;,
+ -0.000000;-0.000000; 1.000000;,
+ -0.000000;-0.000000; 1.000000;;
+ 36;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;;
+ } //End of Cube_010 Normals
+ MeshMaterialList { //Cube_010 Material List
+ 1;
+ 36;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material {
+ 0.640000; 0.640000; 0.640000; 1.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_010 Material List
+ MeshTextureCoords { //Cube_010 UV Coordinates
+ 144;
+ 0.387426; 0.459860;,
+ 0.094289; 0.459861;,
+ 0.094288; 0.286103;,
+ 0.387425; 0.286102;,
+ 0.059786; 0.262016;,
+ 0.418026; 0.261439;,
+ 0.418026; 0.433032;,
+ 0.059786; 0.433610;,
+ 0.389470; 0.458599;,
+ 0.095582; 0.458598;,
+ 0.094832; 0.288305;,
+ 0.388720; 0.288306;,
+ 0.417249; 0.254044;,
+ 0.059948; 0.254044;,
+ 0.059948; 0.055927;,
+ 0.417249; 0.055927;,
+ 0.419848; 0.262019;,
+ 0.419848; 0.457484;,
+ 0.059357; 0.457485;,
+ 0.059357; 0.262019;,
+ 0.058928; 0.455355;,
+ 0.058928; 0.259888;,
+ 0.419832; 0.259888;,
+ 0.419832; 0.455355;,
+ 0.202332; 0.663934;,
+ 0.202332; 0.543673;,
+ 0.822669; 0.543673;,
+ 0.822669; 0.663933;,
+ 0.202981; 0.662859;,
+ 0.202981; 0.542598;,
+ 0.823317; 0.542598;,
+ 0.823317; 0.662858;,
+ 0.000739; 0.691902;,
+ 0.000739; 0.542773;,
+ 0.728975; 0.542773;,
+ 0.728975; 0.691902;,
+ 0.030510; 0.562226;,
+ 0.030510; 0.441965;,
+ 0.650847; 0.441965;,
+ 0.650847; 0.562226;,
+ 0.033201; 0.715150;,
+ 0.033201; 0.564904;,
+ 0.228521; 0.564904;,
+ 0.228521; 0.715150;,
+ 0.430636; 0.539772;,
+ 0.430636; 0.688205;,
+ 0.237674; 0.688205;,
+ 0.237674; 0.539772;,
+ 0.822669; 0.543673;,
+ 0.202332; 0.543673;,
+ 0.202332; 0.663934;,
+ 0.822669; 0.663933;,
+ 0.823317; 0.542598;,
+ 0.202981; 0.542598;,
+ 0.202981; 0.662859;,
+ 0.823317; 0.662858;,
+ 0.728975; 0.542773;,
+ 0.000739; 0.542773;,
+ 0.000739; 0.691902;,
+ 0.728975; 0.691902;,
+ 0.650847; 0.441965;,
+ 0.030510; 0.441965;,
+ 0.030510; 0.562226;,
+ 0.650847; 0.562226;,
+ 0.228521; 0.564904;,
+ 0.033201; 0.564904;,
+ 0.033201; 0.715150;,
+ 0.228521; 0.715150;,
+ 0.237674; 0.688205;,
+ 0.430636; 0.688205;,
+ 0.430636; 0.539772;,
+ 0.237674; 0.539772;,
+ 0.748471; 0.491562;,
+ 0.747890; 0.636872;,
+ 0.866287; 0.636872;,
+ 0.866868; 0.491562;,
+ 0.873832; 0.491802;,
+ 0.873832; 0.636858;,
+ 0.962763; 0.636858;,
+ 0.962763; 0.491802;,
+ 0.747989; 0.490711;,
+ 0.747989; 0.636113;,
+ 0.865800; 0.636482;,
+ 0.865800; 0.491080;,
+ 0.616586; 0.490156;,
+ 0.616586; 0.639542;,
+ 0.741276; 0.639912;,
+ 0.741276; 0.490526;,
+ 0.865800; 0.740186;,
+ 0.865800; 0.640286;,
+ 0.745723; 0.640286;,
+ 0.745723; 0.740186;,
+ 0.866661; 0.488915;,
+ 0.866661; 0.387572;,
+ 0.746584; 0.387572;,
+ 0.746584; 0.488915;,
+ 0.736344; 0.489306;,
+ 0.736344; 0.642007;,
+ 0.865321; 0.642007;,
+ 0.865321; 0.489306;,
+ 0.866972; 0.489546;,
+ 0.866972; 0.642541;,
+ 0.966818; 0.642541;,
+ 0.966818; 0.489546;,
+ 0.735819; 0.488455;,
+ 0.735819; 0.642172;,
+ 0.864157; 0.642541;,
+ 0.864157; 0.488825;,
+ 0.607233; 0.488825;,
+ 0.607233; 0.638211;,
+ 0.732937; 0.638580;,
+ 0.732937; 0.489194;,
+ 0.864157; 0.742441;,
+ 0.864157; 0.642541;,
+ 0.733349; 0.642541;,
+ 0.733349; 0.742441;,
+ 0.865096; 0.486660;,
+ 0.865096; 0.385316;,
+ 0.734288; 0.385316;,
+ 0.734288; 0.486660;,
+ 0.707025; 0.460657;,
+ 0.520830; 0.459733;,
+ 0.520830; 0.042592;,
+ 0.707025; 0.043516;,
+ 0.998302; 0.458761;,
+ 0.521381; 0.458761;,
+ 0.521381; 0.041735;,
+ 0.998302; 0.041735;,
+ 0.996909; 0.458865;,
+ 0.809286; 0.458288;,
+ 0.809287; 0.043455;,
+ 0.996911; 0.044033;,
+ 0.997038; 0.458464;,
+ 0.521559; 0.458463;,
+ 0.521559; 0.043516;,
+ 0.997039; 0.043516;,
+ 0.995549; 0.309499;,
+ 0.995549; 0.458510;,
+ 0.518634; 0.458509;,
+ 0.518634; 0.309498;,
+ 0.520935; 0.199387;,
+ 0.520935; 0.040936;,
+ 0.996415; 0.040936;,
+ 0.996415; 0.199387;;
+ } //End of Cube_010 UV Coordinates
+ XSkinMeshHeader {
+ 6;
+ 18;
+ 6;
+ }
+ SkinWeights {
+ "Armature_Bone_003";
+ 72;
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119;
+ 0.000128,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000050,
+ 0.000000,
+ 0.000000,
+ 0.000128,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000050,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000050,
+ 0.000128,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 0.999758,
+ 1.000000,
+ 0.997048,
+ 0.990071,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.990071,
+ 0.997048,
+ 1.000000,
+ 0.999758,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.990071,
+ 1.000000,
+ 0.999758,
+ 0.997048,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000;
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000001, 1.000000, 0.000000,
+ -0.000000,-1.000000, 0.000001, 0.000000,
+ -0.463048, 1.430443, 0.083633, 1.000000;;
+ } //End of Armature_Bone_003 Skin Weights
+ SkinWeights {
+ "Armature_root";
+ 78;
+ 49,
+ 50,
+ 54,
+ 61,
+ 64,
+ 67,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143;
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000018,
+ 0.009929,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.009929,
+ 0.000018,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.009929,
+ 0.000000,
+ 0.000000,
+ 0.000018,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ -0.013544,-2.081081,-0.083634, 1.000000;;
+ } //End of Armature_root Skin Weights
+ SkinWeights {
+ "Armature_Bone_004";
+ 72;
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119;
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000242,
+ 0.000000,
+ 0.002934,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.002934,
+ 0.000000,
+ 0.000242,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000242,
+ 0.002934,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 0.998068,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 0.999920,
+ 0.999974,
+ 0.999999,
+ 0.998068,
+ 0.999999,
+ 1.000000,
+ 0.999974,
+ 0.999920,
+ 1.000000,
+ 0.999999,
+ 0.999974,
+ 1.000000,
+ 0.998068,
+ 1.000000,
+ 0.999999,
+ 0.999920;
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000001, 1.000000, 0.000000,
+ -0.000000,-1.000000, 0.000001, 0.000000,
+ 0.465436, 1.430442, 0.083633, 1.000000;;
+ } //End of Armature_Bone_004 Skin Weights
+ SkinWeights {
+ "Armature_Bone_002";
+ 72;
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.001932,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000080,
+ 0.000026,
+ 0.000001,
+ 0.001932,
+ 0.000001,
+ 0.000000,
+ 0.000026,
+ 0.000080,
+ 0.000000,
+ 0.000001,
+ 0.000026,
+ 0.000000,
+ 0.001932,
+ 0.000000,
+ 0.000001,
+ 0.000080;
+ 0.996330,-0.085600, 0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ -0.085600,-0.996330, 0.000000, 0.000000,
+ 1.007194, 3.531019, 0.083633, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ SkinWeights {
+ "Armature_Bone_005";
+ 48;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000004,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000004,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000004;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ -0.013544,-0.179013,-3.483799, 1.000000;;
+ } //End of Armature_Bone_005 Skin Weights
+ SkinWeights {
+ "Armature_Bone_001";
+ 48;
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95;
+ 0.999872,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999950,
+ 1.000000,
+ 1.000000,
+ 0.999872,
+ 0.999996,
+ 0.999999,
+ 1.000000,
+ 0.999950,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 0.999996,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 0.999950,
+ 0.999872,
+ 1.000000,
+ 0.999996,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000;
+ 0.996330, 0.085600, 0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ 0.085600,-0.996330, 0.000000, 0.000000,
+ -1.012157, 3.530593, 0.083633, 1.000000;;
+ } //End of Armature_Bone_001 Skin Weights
+ } //End of Cube_010 Mesh
+ } //End of Cube_004
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; 0.000000, 0.000000, 0.000000;;,
+ 1;3; 0.000000, 0.000000, 0.000000;;,
+ 2;3; 0.000000, 0.000000, 0.000000;;,
+ 3;3; 0.000000, 0.000000, 0.000000;;,
+ 4;3; 0.000000, 0.000000, 0.000000;;,
+ 5;3; 0.000000, 0.000000, 0.000000;;,
+ 6;3; 0.000000, 0.000000, 0.000000;;,
+ 7;3; 0.000000, 0.000000, 0.000000;;,
+ 8;3; 0.000000, 0.000000, 0.000000;;,
+ 9;3; 0.000000, 0.000000, 0.000000;;,
+ 10;3; 0.000000, 0.000000, 0.000000;;,
+ 11;3; 0.000000, 0.000000, 0.000000;;,
+ 12;3; 0.000000, 0.000000, 0.000000;;,
+ 13;3; 0.000000, 0.000000, 0.000000;;,
+ 14;3; 0.000000, 0.000000, 0.000000;;,
+ 15;3; 0.000000, 0.000000, 0.000000;;,
+ 16;3; 0.000000, 0.000000, 0.000000;;,
+ 17;3; 0.000000, 0.000000, 0.000000;;,
+ 18;3; 0.000000, 0.000000, 0.000000;;,
+ 19;3; 0.000000, 0.000000, 0.000000;;,
+ 20;3; 0.000000, 0.000000, 0.000000;;,
+ 21;3; 0.000000, 0.000000, 0.000000;;,
+ 22;3; 0.000000, 0.000000, 0.000000;;,
+ 23;3; 0.000000, 0.000000, 0.000000;;,
+ 24;3; 0.000000, 0.000000, 0.000000;;,
+ 25;3; 0.000000, 0.000000, 0.000000;;,
+ 26;3; 0.000000, 0.000000, 0.000000;;,
+ 27;3; 0.000000, 0.000000, 0.000000;;,
+ 28;3; 0.000000, 0.000000, 0.000000;;,
+ 29;3; 0.000000, 0.000000, 0.000000;;,
+ 30;3; 0.000000, 0.000000, 0.000000;;,
+ 31;3; 0.000000, 0.000000, 0.000000;;,
+ 32;3; 0.000000, 0.000000, 0.000000;;,
+ 33;3; 0.000000, 0.000000, 0.000000;;,
+ 34;3; 0.000000, 0.000000, 0.000000;;,
+ 35;3; 0.000000, 0.000000, 0.000000;;,
+ 36;3; 0.000000, 0.000000, 0.000000;;,
+ 37;3; 0.000000, 0.000000, 0.000000;;,
+ 38;3; 0.000000, 0.000000, 0.000000;;,
+ 39;3; 0.000000, 0.000000, 0.000000;;,
+ 40;3; 0.000000, 0.000000, 0.000000;;,
+ 41;3; 0.000000, 0.000000, 0.000000;;,
+ 42;3; 0.000000, 0.000000, 0.000000;;,
+ 43;3; 0.000000, 0.000000, 0.000000;;,
+ 44;3; 0.000000, 0.000000, 0.000000;;,
+ 45;3; 0.000000, 0.000000, 0.000000;;,
+ 46;3; 0.000000, 0.000000, 0.000000;;,
+ 47;3; 0.000000, 0.000000, 0.000000;;,
+ 48;3; 0.000000, 0.000000, 0.000000;;,
+ 49;3; 0.000000, 0.000000, 0.000000;;,
+ 50;3; 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_root}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; 0.013544,-0.083633, 1.540002;;,
+ 1;3; 0.013544,-0.083633, 1.540002;;,
+ 2;3; 0.013544,-0.083633, 1.540002;;,
+ 3;3; 0.013544,-0.083633, 1.540002;;,
+ 4;3; 0.013544,-0.083633, 1.540002;;,
+ 5;3; 0.013544,-0.083633, 1.540002;;,
+ 6;3; 0.013544,-0.083633, 1.540002;;,
+ 7;3; 0.013544,-0.083633, 1.540002;;,
+ 8;3; 0.013544,-0.083633, 1.540002;;,
+ 9;3; 0.013544,-0.083633, 1.540002;;,
+ 10;3; 0.013544,-0.083633, 1.540002;;,
+ 11;3; 0.013544,-0.083633, 1.540002;;,
+ 12;3; 0.013544,-0.083633, 1.540002;;,
+ 13;3; 0.013544,-0.083633, 1.540002;;,
+ 14;3; 0.013544,-0.083633, 1.540002;;,
+ 15;3; 0.013544,-0.083633, 1.540002;;,
+ 16;3; 0.013544,-0.083633, 1.540002;;,
+ 17;3; 0.013544,-0.083633, 1.540002;;,
+ 18;3; 0.013544,-0.083633, 1.540002;;,
+ 19;3; 0.013544,-0.083633, 1.540002;;,
+ 20;3; 0.013544,-0.083633, 1.540002;;,
+ 21;3; 0.013544,-0.083633, 1.540002;;,
+ 22;3; 0.013544,-0.083633, 1.540002;;,
+ 23;3; 0.013544,-0.083633, 1.540002;;,
+ 24;3; 0.013544,-0.083633, 1.540002;;,
+ 25;3; 0.013544,-0.083633, 1.540002;;,
+ 26;3; 0.013544,-0.083633, 1.540002;;,
+ 27;3; 0.013544,-0.083633, 1.540002;;,
+ 28;3; 0.013544,-0.083633, 1.540002;;,
+ 29;3; 0.013544,-0.083633, 1.540002;;,
+ 30;3; 0.013544,-0.083633, 1.540002;;,
+ 31;3; 0.013544,-0.083633, 1.540002;;,
+ 32;3; 0.013544,-0.083633, 1.540002;;,
+ 33;3; 0.013544,-0.083633, 1.540002;;,
+ 34;3; 0.013544,-0.083633, 1.540002;;,
+ 35;3; 0.013544,-0.083633, 1.540002;;,
+ 36;3; 0.013544,-0.083633, 1.540002;;,
+ 37;3; 0.013544,-0.083633, 1.540002;;,
+ 38;3; 0.013544,-0.083633, 1.540002;;,
+ 39;3; 0.013544,-0.083633, 1.540002;;,
+ 40;3; 0.013544,-0.083633, 1.540002;;,
+ 41;3; 0.013544,-0.083633, 1.540002;;,
+ 42;3; 0.013544,-0.083633, 1.540002;;,
+ 43;3; 0.013544,-0.083633, 1.540002;;,
+ 44;3; 0.013544,-0.083633, 1.540002;;,
+ 45;3; 0.013544,-0.083633, 1.540002;;,
+ 46;3; 0.013544,-0.083633, 1.540002;;,
+ 47;3; 0.013544,-0.083633, 1.540002;;,
+ 48;3; 0.013544,-0.083633, 1.540002;;,
+ 49;3; 0.013544,-0.083633, 1.540002;;,
+ 50;3; 0.013544,-0.083633, 1.540002;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 1;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 2;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 3;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 4;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 5;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 6;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 7;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 8;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 9;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 10;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 11;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 12;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 13;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 14;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 15;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 16;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 17;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 18;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 19;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 20;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 21;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 22;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 23;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 24;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 25;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 26;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 27;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 28;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 29;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 30;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 31;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 32;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 33;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 34;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 35;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 36;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 37;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 38;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 39;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 40;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 41;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 42;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 43;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 44;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 45;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 46;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 47;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 48;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 49;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 50;4; -0.707107, 0.707107, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_001}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; 0.692679, 1.523193, 0.000000;;,
+ 1;3; 0.692679, 1.523193, 0.000000;;,
+ 2;3; 0.692679, 1.523193, 0.000000;;,
+ 3;3; 0.692679, 1.523193, 0.000000;;,
+ 4;3; 0.692679, 1.523193, 0.000000;;,
+ 5;3; 0.692679, 1.523193, 0.000000;;,
+ 6;3; 0.692679, 1.523193, 0.000000;;,
+ 7;3; 0.692679, 1.523193, 0.000000;;,
+ 8;3; 0.692679, 1.523193, 0.000000;;,
+ 9;3; 0.692679, 1.523193, 0.000000;;,
+ 10;3; 0.692679, 1.523193, 0.000000;;,
+ 11;3; 0.692679, 1.523193, 0.000000;;,
+ 12;3; 0.692679, 1.523193, 0.000000;;,
+ 13;3; 0.692679, 1.523193, 0.000000;;,
+ 14;3; 0.692679, 1.523193, 0.000000;;,
+ 15;3; 0.692679, 1.523193, 0.000000;;,
+ 16;3; 0.692679, 1.523193, 0.000000;;,
+ 17;3; 0.692679, 1.523193, 0.000000;;,
+ 18;3; 0.692679, 1.523193, 0.000000;;,
+ 19;3; 0.692679, 1.523193, 0.000000;;,
+ 20;3; 0.692679, 1.523193, 0.000000;;,
+ 21;3; 0.692679, 1.523193, 0.000000;;,
+ 22;3; 0.692679, 1.523193, 0.000000;;,
+ 23;3; 0.692679, 1.523193, 0.000000;;,
+ 24;3; 0.692679, 1.523193, 0.000000;;,
+ 25;3; 0.692679, 1.523193, 0.000000;;,
+ 26;3; 0.692679, 1.523193, 0.000000;;,
+ 27;3; 0.692679, 1.523193, 0.000000;;,
+ 28;3; 0.692679, 1.523193, 0.000000;;,
+ 29;3; 0.692679, 1.523193, 0.000000;;,
+ 30;3; 0.692679, 1.523193, 0.000000;;,
+ 31;3; 0.692679, 1.523193, 0.000000;;,
+ 32;3; 0.692679, 1.523193, 0.000000;;,
+ 33;3; 0.692679, 1.523193, 0.000000;;,
+ 34;3; 0.692679, 1.523193, 0.000000;;,
+ 35;3; 0.692679, 1.523193, 0.000000;;,
+ 36;3; 0.692679, 1.523193, 0.000000;;,
+ 37;3; 0.692679, 1.523193, 0.000000;;,
+ 38;3; 0.692679, 1.523193, 0.000000;;,
+ 39;3; 0.692679, 1.523193, 0.000000;;,
+ 40;3; 0.692679, 1.523193, 0.000000;;,
+ 41;3; 0.692679, 1.523193, 0.000000;;,
+ 42;3; 0.692679, 1.523193, 0.000000;;,
+ 43;3; 0.692679, 1.523193, 0.000000;;,
+ 44;3; 0.692679, 1.523193, 0.000000;;,
+ 45;3; 0.692679, 1.523193, 0.000000;;,
+ 46;3; 0.692679, 1.523193, 0.000000;;,
+ 47;3; 0.692679, 1.523193, 0.000000;;,
+ 48;3; 0.692679, 1.523193, 0.000000;;,
+ 49;3; 0.692679, 1.523193, 0.000000;;,
+ 50;3; 0.692679, 1.523193, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -0.000000, 0.999054, 0.043483, 0.000000;;,
+ 1;4; -0.000000, 0.999054, 0.043483, 0.000000;;,
+ 2;4; -0.002786, 0.998997, 0.043893,-0.000311;;,
+ 3;4; -0.010065, 0.998846, 0.045127,-0.000920;;,
+ 4;4; -0.017323, 0.998682, 0.047110,-0.001040;;,
+ 5;4; -0.020088, 0.998523, 0.049636,-0.000842;;,
+ 6;4; -0.018689, 0.998359, 0.052361,-0.000658;;,
+ 7;4; -0.014500, 0.998211, 0.054887,-0.000453;;,
+ 8;4; -0.008418, 0.998097, 0.056873,-0.000262;;,
+ 9;4; -0.002308, 0.998029, 0.058110,-0.000095;;,
+ 10;4; 0.002359, 0.998007, 0.058522, 0.000050;;,
+ 11;4; 0.006399, 0.998054, 0.058190, 0.000214;;,
+ 12;4; 0.010483, 0.998189, 0.057189, 0.000409;;,
+ 13;4; 0.013328, 0.998365, 0.055560, 0.000560;;,
+ 14;4; 0.014240, 0.998526, 0.053427, 0.000611;;,
+ 15;4; 0.013361, 0.998670, 0.051008, 0.000573;;,
+ 16;4; 0.010801, 0.998803, 0.048589, 0.000463;;,
+ 17;4; 0.007120, 0.998914, 0.046454, 0.000305;;,
+ 18;4; 0.003440, 0.998994, 0.044821, 0.000148;;,
+ 19;4; 0.000880, 0.999040, 0.043816, 0.000038;;,
+ 20;4; -0.000000, 0.999054, 0.043483, 0.000000;;,
+ 21;4; 0.018035, 0.997872, 0.043432, 0.000785;;,
+ 22;4; 0.065205, 0.994781, 0.043298, 0.002838;;,
+ 23;4; 0.112371, 0.991689, 0.043163, 0.004891;;,
+ 24;4; 0.130403, 0.990507, 0.043111, 0.005676;;,
+ 25;4; 0.121352, 0.990507, 0.043111, 0.005282;;,
+ 26;4; 0.094337, 0.990507, 0.043111, 0.004106;;,
+ 27;4; 0.051808, 0.990507, 0.043111, 0.002255;;,
+ 28;4; -0.000000, 0.990507, 0.043111, 0.000000;;,
+ 29;4; -0.051808, 0.990507, 0.043111,-0.002255;;,
+ 30;4; -0.094338, 0.990507, 0.043111,-0.004106;;,
+ 31;4; -0.121352, 0.990507, 0.043111,-0.005282;;,
+ 32;4; -0.130403, 0.990507, 0.043111,-0.005676;;,
+ 33;4; -0.126687, 0.991693, 0.043073,-0.005509;;,
+ 34;4; -0.108005, 0.994795, 0.042975,-0.004685;;,
+ 35;4; -0.065065, 0.997896, 0.042877,-0.002811;;,
+ 36;4; -0.000000, 0.999082, 0.042839, 0.000000;;,
+ 37;4; 0.120436, 0.986490, 0.042299, 0.005178;;,
+ 38;4; 0.276464, 0.957580, 0.041060, 0.011891;;,
+ 39;4; 0.341430, 0.938931, 0.040260, 0.014640;;,
+ 40;4; 0.341438, 0.934855, 0.008219, 0.003024;;,
+ 41;4; 0.340581, 0.936196,-0.059903,-0.021794;;,
+ 42;4; 0.340108, 0.935297,-0.091824,-0.033391;;,
+ 43;4; 0.340866, 0.926626,-0.010721,-0.004014;;,
+ 44;4; 0.339248, 0.913310, 0.162947, 0.058982;;,
+ 45;4; 0.330009, 0.907523, 0.244160, 0.088785;;,
+ 46;4; 0.275994, 0.920184, 0.216318, 0.076868;;,
+ 47;4; 0.157556, 0.953297, 0.143541, 0.044720;;,
+ 48;4; 0.043241, 0.986416, 0.070721, 0.012386;;,
+ 49;4; -0.000000, 0.999082, 0.042839, 0.000000;;,
+ 50;4; -0.000000, 0.999082, 0.042839, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; -0.714786, 1.523193, 0.000000;;,
+ 1;3; -0.714786, 1.523193, 0.000000;;,
+ 2;3; -0.714786, 1.523193, 0.000000;;,
+ 3;3; -0.714786, 1.523193, 0.000000;;,
+ 4;3; -0.714786, 1.523193, 0.000000;;,
+ 5;3; -0.714786, 1.523193, 0.000000;;,
+ 6;3; -0.714786, 1.523193, 0.000000;;,
+ 7;3; -0.714786, 1.523193, 0.000000;;,
+ 8;3; -0.714786, 1.523193, 0.000000;;,
+ 9;3; -0.714786, 1.523193, 0.000000;;,
+ 10;3; -0.714786, 1.523193, 0.000000;;,
+ 11;3; -0.714786, 1.523193, 0.000000;;,
+ 12;3; -0.714786, 1.523193, 0.000000;;,
+ 13;3; -0.714786, 1.523193, 0.000000;;,
+ 14;3; -0.714786, 1.523193, 0.000000;;,
+ 15;3; -0.714786, 1.523193, 0.000000;;,
+ 16;3; -0.714786, 1.523193, 0.000000;;,
+ 17;3; -0.714786, 1.523193, 0.000000;;,
+ 18;3; -0.714786, 1.523193, 0.000000;;,
+ 19;3; -0.714786, 1.523193, 0.000000;;,
+ 20;3; -0.714786, 1.523193, 0.000000;;,
+ 21;3; -0.714786, 1.523193, 0.000000;;,
+ 22;3; -0.714786, 1.523193, 0.000000;;,
+ 23;3; -0.714786, 1.523193, 0.000000;;,
+ 24;3; -0.714786, 1.523193, 0.000000;;,
+ 25;3; -0.714786, 1.523193, 0.000000;;,
+ 26;3; -0.714786, 1.523193, 0.000000;;,
+ 27;3; -0.714786, 1.523193, 0.000000;;,
+ 28;3; -0.714786, 1.523193, 0.000000;;,
+ 29;3; -0.714786, 1.523193, 0.000000;;,
+ 30;3; -0.714786, 1.523193, 0.000000;;,
+ 31;3; -0.714786, 1.523193, 0.000000;;,
+ 32;3; -0.714786, 1.523193, 0.000000;;,
+ 33;3; -0.714786, 1.523193, 0.000000;;,
+ 34;3; -0.714786, 1.523193, 0.000000;;,
+ 35;3; -0.714786, 1.523193, 0.000000;;,
+ 36;3; -0.714786, 1.523193, 0.000000;;,
+ 37;3; -0.714786, 1.523193, 0.000000;;,
+ 38;3; -0.714786, 1.523193, 0.000000;;,
+ 39;3; -0.714786, 1.523193, 0.000000;;,
+ 40;3; -0.714786, 1.523193, 0.000000;;,
+ 41;3; -0.714786, 1.523193, 0.000000;;,
+ 42;3; -0.714786, 1.523193, 0.000000;;,
+ 43;3; -0.714786, 1.523193, 0.000000;;,
+ 44;3; -0.714786, 1.523193, 0.000000;;,
+ 45;3; -0.714786, 1.523193, 0.000000;;,
+ 46;3; -0.714786, 1.523193, 0.000000;;,
+ 47;3; -0.714786, 1.523193, 0.000000;;,
+ 48;3; -0.714786, 1.523193, 0.000000;;,
+ 49;3; -0.714786, 1.523193, 0.000000;;,
+ 50;3; -0.714786, 1.523193, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -0.000000, 0.999110,-0.042196, 0.000000;;,
+ 1;4; -0.000000, 0.999110,-0.042196, 0.000000;;,
+ 2;4; 0.000704, 0.999095,-0.042530,-0.000030;;,
+ 3;4; 0.002688, 0.999050,-0.043530,-0.000115;;,
+ 4;4; 0.005236, 0.998976,-0.045136,-0.000224;;,
+ 5;4; 0.007220, 0.998879,-0.047179,-0.000310;;,
+ 6;4; 0.007924, 0.998770,-0.049383,-0.000340;;,
+ 7;4; 0.006508, 0.998640,-0.051425,-0.000298;;,
+ 8;4; 0.002376, 0.998489,-0.053027,-0.000169;;,
+ 9;4; -0.002908, 0.998369,-0.054024, 0.000011;;,
+ 10;4; -0.007235, 0.998326,-0.054356, 0.000183;;,
+ 11;4; -0.011320, 0.998359,-0.054088, 0.000391;;,
+ 12;4; -0.015247, 0.998449,-0.053278, 0.000624;;,
+ 13;4; -0.016679, 0.998551,-0.051959, 0.000715;;,
+ 14;4; -0.015923, 0.998656,-0.050234, 0.000683;;,
+ 15;4; -0.013685, 0.998770,-0.048279, 0.000587;;,
+ 16;4; -0.010274, 0.998882,-0.046323, 0.000441;;,
+ 17;4; -0.006406, 0.998979,-0.044597, 0.000275;;,
+ 18;4; -0.002996, 0.999051,-0.043278, 0.000128;;,
+ 19;4; -0.000757, 0.999095,-0.042466, 0.000032;;,
+ 20;4; -0.000000, 0.999110,-0.042196, 0.000000;;,
+ 21;4; -0.018036, 0.997928,-0.042146, 0.000762;;,
+ 22;4; -0.065209, 0.994836,-0.042014, 0.002754;;,
+ 23;4; -0.112377, 0.991744,-0.041884, 0.004746;;,
+ 24;4; -0.130410, 0.990562,-0.041835, 0.005508;;,
+ 25;4; -0.121359, 0.990562,-0.041835, 0.005126;;,
+ 26;4; -0.094343, 0.990562,-0.041835, 0.003985;;,
+ 27;4; -0.051811, 0.990562,-0.041835, 0.002188;;,
+ 28;4; -0.000000, 0.990562,-0.041835, 0.000000;;,
+ 29;4; 0.051811, 0.990562,-0.041835,-0.002188;;,
+ 30;4; 0.094343, 0.990562,-0.041835,-0.003984;;,
+ 31;4; 0.121359, 0.990562,-0.041835,-0.005125;;,
+ 32;4; 0.130410, 0.990562,-0.041835,-0.005508;;,
+ 33;4; 0.112382, 0.991740,-0.041974,-0.004746;;,
+ 34;4; 0.065231, 0.994822,-0.042337,-0.002753;;,
+ 35;4; 0.018053, 0.997904,-0.042701,-0.000761;;,
+ 36;4; -0.000000, 0.999082,-0.042839, 0.000000;;,
+ 37;4; 0.083385, 0.985795,-0.042270,-0.003592;;,
+ 38;4; 0.261893, 0.955695,-0.040979,-0.011274;;,
+ 39;4; 0.345980, 0.937264,-0.040189,-0.014835;;,
+ 40;4; 0.346156, 0.933706,-0.010684,-0.003973;;,
+ 41;4; 0.345424, 0.934834, 0.052066, 0.019224;;,
+ 42;4; 0.344990, 0.934584, 0.081436, 0.030061;;,
+ 43;4; 0.345701, 0.928801, 0.012686, 0.004769;;,
+ 44;4; 0.344806, 0.919766,-0.134517,-0.049452;;,
+ 45;4; 0.338064, 0.915821,-0.203345,-0.075062;;,
+ 46;4; 0.285075, 0.927335,-0.181147,-0.064951;;,
+ 47;4; 0.163548, 0.957448,-0.123111,-0.037771;;,
+ 48;4; 0.045024, 0.987565,-0.065056,-0.010458;;,
+ 49;4; -0.000000, 0.999082,-0.042839, 0.000000;;,
+ 50;4; -0.000000, 0.999082,-0.042839, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_003}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; 0.449504,-0.650638, 0.000000;;,
+ 1;3; 0.449504,-0.650638, 0.000000;;,
+ 2;3; 0.449504,-0.650638, 0.000000;;,
+ 3;3; 0.449504,-0.650638, 0.000000;;,
+ 4;3; 0.449504,-0.650638, 0.000000;;,
+ 5;3; 0.449504,-0.650638, 0.000000;;,
+ 6;3; 0.449504,-0.650638, 0.000000;;,
+ 7;3; 0.449504,-0.650638, 0.000000;;,
+ 8;3; 0.449504,-0.650638, 0.000000;;,
+ 9;3; 0.449504,-0.650638, 0.000000;;,
+ 10;3; 0.449504,-0.650638, 0.000000;;,
+ 11;3; 0.449504,-0.650638, 0.000000;;,
+ 12;3; 0.449504,-0.650638, 0.000000;;,
+ 13;3; 0.449504,-0.650638, 0.000000;;,
+ 14;3; 0.449504,-0.650638, 0.000000;;,
+ 15;3; 0.449504,-0.650638, 0.000000;;,
+ 16;3; 0.449504,-0.650638, 0.000000;;,
+ 17;3; 0.449504,-0.650638, 0.000000;;,
+ 18;3; 0.449504,-0.650638, 0.000000;;,
+ 19;3; 0.449504,-0.650638, 0.000000;;,
+ 20;3; 0.449504,-0.650638, 0.000000;;,
+ 21;3; 0.449504,-0.650638, 0.000000;;,
+ 22;3; 0.449504,-0.650638, 0.000000;;,
+ 23;3; 0.449504,-0.650638, 0.000000;;,
+ 24;3; 0.449504,-0.650638, 0.000000;;,
+ 25;3; 0.449504,-0.650638, 0.000000;;,
+ 26;3; 0.449504,-0.650638, 0.000000;;,
+ 27;3; 0.449504,-0.650638, 0.000000;;,
+ 28;3; 0.449504,-0.650638, 0.000000;;,
+ 29;3; 0.449504,-0.650638, 0.000000;;,
+ 30;3; 0.449504,-0.650638, 0.000000;;,
+ 31;3; 0.449504,-0.650638, 0.000000;;,
+ 32;3; 0.449504,-0.650638, 0.000000;;,
+ 33;3; 0.449504,-0.650638, 0.000000;;,
+ 34;3; 0.449504,-0.650638, 0.000000;;,
+ 35;3; 0.449504,-0.650638, 0.000000;;,
+ 36;3; 0.449504,-0.650638, 0.000000;;,
+ 37;3; 0.449504,-0.650638, 0.000000;;,
+ 38;3; 0.449504,-0.650638, 0.000000;;,
+ 39;3; 0.449504,-0.650638, 0.000000;;,
+ 40;3; 0.449504,-0.650638, 0.000000;;,
+ 41;3; 0.449504,-0.650638, 0.000000;;,
+ 42;3; 0.449504,-0.650638, 0.000000;;,
+ 43;3; 0.449504,-0.650638, 0.000000;;,
+ 44;3; 0.449504,-0.650638, 0.000000;;,
+ 45;3; 0.449504,-0.650638, 0.000000;;,
+ 46;3; 0.449504,-0.650638, 0.000000;;,
+ 47;3; 0.449504,-0.650638, 0.000000;;,
+ 48;3; 0.449504,-0.650638, 0.000000;;,
+ 49;3; 0.449504,-0.650638, 0.000000;;,
+ 50;3; 0.449504,-0.650638, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 21;4; -0.018053, 0.998817,-0.000000,-0.000000;;,
+ 22;4; -0.065268, 0.995722,-0.000000,-0.000000;;,
+ 23;4; -0.112478, 0.992628,-0.000000,-0.000000;;,
+ 24;4; -0.130527, 0.991445,-0.000000,-0.000000;;,
+ 25;4; -0.121468, 0.991445,-0.000000,-0.000000;;,
+ 26;4; -0.094427, 0.991445,-0.000000,-0.000000;;,
+ 27;4; -0.051857, 0.991445,-0.000000,-0.000000;;,
+ 28;4; -0.000000, 0.991445,-0.000000,-0.000000;;,
+ 29;4; 0.051857, 0.991445,-0.000000,-0.000000;;,
+ 30;4; 0.094426, 0.991445,-0.000000,-0.000000;;,
+ 31;4; 0.121467, 0.991445,-0.000000,-0.000000;;,
+ 32;4; 0.130526, 0.991445,-0.000000,-0.000000;;,
+ 33;4; 0.112480, 0.992628,-0.000000,-0.000000;;,
+ 34;4; 0.065279, 0.995722,-0.000000,-0.000000;;,
+ 35;4; 0.018062, 0.998817,-0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000,-0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_004}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; -0.478980,-0.650638, 0.000000;;,
+ 1;3; -0.478980,-0.650638, 0.000000;;,
+ 2;3; -0.478980,-0.650638, 0.000000;;,
+ 3;3; -0.478980,-0.650638, 0.000000;;,
+ 4;3; -0.478980,-0.650638, 0.000000;;,
+ 5;3; -0.478980,-0.650638, 0.000000;;,
+ 6;3; -0.478980,-0.650638, 0.000000;;,
+ 7;3; -0.478980,-0.650638, 0.000000;;,
+ 8;3; -0.478980,-0.650638, 0.000000;;,
+ 9;3; -0.478980,-0.650638, 0.000000;;,
+ 10;3; -0.478980,-0.650638, 0.000000;;,
+ 11;3; -0.478980,-0.650638, 0.000000;;,
+ 12;3; -0.478980,-0.650638, 0.000000;;,
+ 13;3; -0.478980,-0.650638, 0.000000;;,
+ 14;3; -0.478980,-0.650638, 0.000000;;,
+ 15;3; -0.478980,-0.650638, 0.000000;;,
+ 16;3; -0.478980,-0.650638, 0.000000;;,
+ 17;3; -0.478980,-0.650638, 0.000000;;,
+ 18;3; -0.478980,-0.650638, 0.000000;;,
+ 19;3; -0.478980,-0.650638, 0.000000;;,
+ 20;3; -0.478980,-0.650638, 0.000000;;,
+ 21;3; -0.478980,-0.650638, 0.000000;;,
+ 22;3; -0.478980,-0.650638, 0.000000;;,
+ 23;3; -0.478980,-0.650638, 0.000000;;,
+ 24;3; -0.478980,-0.650638, 0.000000;;,
+ 25;3; -0.478980,-0.650638, 0.000000;;,
+ 26;3; -0.478980,-0.650638, 0.000000;;,
+ 27;3; -0.478980,-0.650638, 0.000000;;,
+ 28;3; -0.478980,-0.650638, 0.000000;;,
+ 29;3; -0.478980,-0.650638, 0.000000;;,
+ 30;3; -0.478980,-0.650638, 0.000000;;,
+ 31;3; -0.478980,-0.650638, 0.000000;;,
+ 32;3; -0.478980,-0.650638, 0.000000;;,
+ 33;3; -0.478980,-0.650638, 0.000000;;,
+ 34;3; -0.478980,-0.650638, 0.000000;;,
+ 35;3; -0.478980,-0.650638, 0.000000;;,
+ 36;3; -0.478980,-0.650638, 0.000000;;,
+ 37;3; -0.478980,-0.650638, 0.000000;;,
+ 38;3; -0.478980,-0.650638, 0.000000;;,
+ 39;3; -0.478980,-0.650638, 0.000000;;,
+ 40;3; -0.478980,-0.650638, 0.000000;;,
+ 41;3; -0.478980,-0.650638, 0.000000;;,
+ 42;3; -0.478980,-0.650638, 0.000000;;,
+ 43;3; -0.478980,-0.650638, 0.000000;;,
+ 44;3; -0.478980,-0.650638, 0.000000;;,
+ 45;3; -0.478980,-0.650638, 0.000000;;,
+ 46;3; -0.478980,-0.650638, 0.000000;;,
+ 47;3; -0.478980,-0.650638, 0.000000;;,
+ 48;3; -0.478980,-0.650638, 0.000000;;,
+ 49;3; -0.478980,-0.650638, 0.000000;;,
+ 50;3; -0.478980,-0.650638, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 21;4; 0.018052, 0.998817,-0.000000,-0.000000;;,
+ 22;4; 0.065267, 0.995722,-0.000000,-0.000000;;,
+ 23;4; 0.112477, 0.992628,-0.000000,-0.000000;;,
+ 24;4; 0.130526, 0.991445,-0.000000,-0.000000;;,
+ 25;4; 0.121467, 0.991445,-0.000000,-0.000000;;,
+ 26;4; 0.094426, 0.991445,-0.000000,-0.000000;;,
+ 27;4; 0.051856, 0.991445,-0.000000,-0.000000;;,
+ 28;4; -0.000000, 0.991445,-0.000000,-0.000000;;,
+ 29;4; -0.051857, 0.991445,-0.000000,-0.000000;;,
+ 30;4; -0.094427, 0.991445,-0.000000,-0.000000;;,
+ 31;4; -0.121468, 0.991445,-0.000000,-0.000000;;,
+ 32;4; -0.130527, 0.991445,-0.000000,-0.000000;;,
+ 33;4; -0.112481, 0.992628,-0.000000,-0.000000;;,
+ 34;4; -0.065280, 0.995722,-0.000000,-0.000000;;,
+ 35;4; -0.018062, 0.998817,-0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000,-0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_005}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; 0.000000, 1.402718,-0.262646;;,
+ 1;3; 0.000000, 1.402718,-0.262646;;,
+ 2;3; 0.000000, 1.402718,-0.262646;;,
+ 3;3; 0.000000, 1.402718,-0.262646;;,
+ 4;3; 0.000000, 1.402718,-0.262646;;,
+ 5;3; 0.000000, 1.402718,-0.262646;;,
+ 6;3; 0.000000, 1.402718,-0.262646;;,
+ 7;3; 0.000000, 1.402718,-0.262646;;,
+ 8;3; 0.000000, 1.402718,-0.262646;;,
+ 9;3; 0.000000, 1.402718,-0.262646;;,
+ 10;3; 0.000000, 1.402718,-0.262646;;,
+ 11;3; 0.000000, 1.402718,-0.262646;;,
+ 12;3; 0.000000, 1.402718,-0.262646;;,
+ 13;3; 0.000000, 1.402718,-0.262646;;,
+ 14;3; 0.000000, 1.402718,-0.262646;;,
+ 15;3; 0.000000, 1.402718,-0.262646;;,
+ 16;3; 0.000000, 1.402718,-0.262646;;,
+ 17;3; 0.000000, 1.402718,-0.262646;;,
+ 18;3; 0.000000, 1.402718,-0.262646;;,
+ 19;3; 0.000000, 1.402718,-0.262646;;,
+ 20;3; 0.000000, 1.402718,-0.262646;;,
+ 21;3; 0.000000, 1.402718,-0.262646;;,
+ 22;3; 0.000000, 1.402718,-0.262646;;,
+ 23;3; 0.000000, 1.402718,-0.262646;;,
+ 24;3; 0.000000, 1.402718,-0.262646;;,
+ 25;3; 0.000000, 1.402718,-0.262646;;,
+ 26;3; 0.000000, 1.402718,-0.262646;;,
+ 27;3; 0.000000, 1.402718,-0.262646;;,
+ 28;3; 0.000000, 1.402718,-0.262646;;,
+ 29;3; 0.000000, 1.402718,-0.262646;;,
+ 30;3; 0.000000, 1.402718,-0.262646;;,
+ 31;3; 0.000000, 1.402718,-0.262646;;,
+ 32;3; 0.000000, 1.402718,-0.262646;;,
+ 33;3; 0.000000, 1.402718,-0.262646;;,
+ 34;3; 0.000000, 1.402718,-0.262646;;,
+ 35;3; 0.000000, 1.402718,-0.262646;;,
+ 36;3; 0.000000, 1.402718,-0.262646;;,
+ 37;3; 0.000000, 1.402718,-0.262646;;,
+ 38;3; 0.000000, 1.402718,-0.262646;;,
+ 39;3; 0.000000, 1.402718,-0.262646;;,
+ 40;3; 0.000000, 1.402718,-0.262646;;,
+ 41;3; 0.000000, 1.402718,-0.262646;;,
+ 42;3; 0.000000, 1.402718,-0.262646;;,
+ 43;3; 0.000000, 1.402718,-0.262646;;,
+ 44;3; 0.000000, 1.402718,-0.262646;;,
+ 45;3; 0.000000, 1.402718,-0.262646;;,
+ 46;3; 0.000000, 1.402718,-0.262646;;,
+ 47;3; 0.000000, 1.402718,-0.262646;;,
+ 48;3; 0.000000, 1.402718,-0.262646;;,
+ 49;3; 0.000000, 1.402718,-0.262646;;,
+ 50;3; 0.000000, 1.402718,-0.262646;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 1;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 2;4; -0.706531,-0.707666,-0.000000, 0.000000;;,
+ 3;4; -0.704805,-0.709343,-0.000000, 0.000000;;,
+ 4;4; -0.702032,-0.712035,-0.000000, 0.000000;;,
+ 5;4; -0.698505,-0.715460,-0.000000, 0.000000;;,
+ 6;4; -0.694700,-0.719156,-0.000000, 0.000000;;,
+ 7;4; -0.691173,-0.722581,-0.000000, 0.000000;;,
+ 8;4; -0.688400,-0.725274,-0.000000, 0.000000;;,
+ 9;4; -0.686673,-0.726951,-0.000000, 0.000000;;,
+ 10;4; -0.686098,-0.727509,-0.000000, 0.000000;;,
+ 11;4; -0.686563,-0.727057,-0.000000, 0.000000;;,
+ 12;4; -0.687965,-0.725696,-0.000000, 0.000000;;,
+ 13;4; -0.690244,-0.723483,-0.000000, 0.000000;;,
+ 14;4; -0.693225,-0.720588,-0.000000, 0.000000;;,
+ 15;4; -0.696602,-0.717308,-0.000000, 0.000000;;,
+ 16;4; -0.699979,-0.714029,-0.000000, 0.000000;;,
+ 17;4; -0.702960,-0.711134,-0.000000, 0.000000;;,
+ 18;4; -0.705239,-0.708920,-0.000000, 0.000000;;,
+ 19;4; -0.706641,-0.707559,-0.000000, 0.000000;;,
+ 20;4; -0.707107,-0.707107,-0.000000, 0.000000;;,
+ 21;4; -0.706907,-0.706907,-0.006243, 0.006243;;,
+ 22;4; -0.706386,-0.706385,-0.022573, 0.022573;;,
+ 23;4; -0.705864,-0.705864,-0.038903, 0.038903;;,
+ 24;4; -0.705664,-0.705664,-0.045146, 0.045146;;,
+ 25;4; -0.705665,-0.705665,-0.042301, 0.042301;;,
+ 26;4; -0.705672,-0.705672,-0.033810, 0.033810;;,
+ 27;4; -0.705691,-0.705691,-0.020443, 0.020443;;,
+ 28;4; -0.705730,-0.705730,-0.004159, 0.004159;;,
+ 29;4; -0.705794,-0.705794, 0.012125,-0.012125;;,
+ 30;4; -0.705887,-0.705887, 0.025492,-0.025492;;,
+ 31;4; -0.706006,-0.706006, 0.033983,-0.033983;;,
+ 32;4; -0.706147,-0.706147, 0.036828,-0.036828;;,
+ 33;4; -0.706376,-0.706376, 0.031735,-0.031735;;,
+ 34;4; -0.706715,-0.706715, 0.018415,-0.018415;;,
+ 35;4; -0.707004,-0.707004, 0.005093,-0.005093;;,
+ 36;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 37;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 38;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 39;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 40;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 41;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 42;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 43;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 44;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 45;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 46;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 47;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 48;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 49;4; -0.707107,-0.707107, 0.000000, 0.000000;;,
+ 50;4; -0.707107,-0.707107, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Cube_004}
+ AnimationKey { //Position
+ 2;
+ 51;
+ 0;3; 0.000000, 0.000000, 0.000000;;,
+ 1;3; 0.000000, 0.000000, 0.000000;;,
+ 2;3; 0.000000, 0.000000, 0.000000;;,
+ 3;3; 0.000000, 0.000000, 0.000000;;,
+ 4;3; 0.000000, 0.000000, 0.000000;;,
+ 5;3; 0.000000, 0.000000, 0.000000;;,
+ 6;3; 0.000000, 0.000000, 0.000000;;,
+ 7;3; 0.000000, 0.000000, 0.000000;;,
+ 8;3; 0.000000, 0.000000, 0.000000;;,
+ 9;3; 0.000000, 0.000000, 0.000000;;,
+ 10;3; 0.000000, 0.000000, 0.000000;;,
+ 11;3; 0.000000, 0.000000, 0.000000;;,
+ 12;3; 0.000000, 0.000000, 0.000000;;,
+ 13;3; 0.000000, 0.000000, 0.000000;;,
+ 14;3; 0.000000, 0.000000, 0.000000;;,
+ 15;3; 0.000000, 0.000000, 0.000000;;,
+ 16;3; 0.000000, 0.000000, 0.000000;;,
+ 17;3; 0.000000, 0.000000, 0.000000;;,
+ 18;3; 0.000000, 0.000000, 0.000000;;,
+ 19;3; 0.000000, 0.000000, 0.000000;;,
+ 20;3; 0.000000, 0.000000, 0.000000;;,
+ 21;3; 0.000000, 0.000000, 0.000000;;,
+ 22;3; 0.000000, 0.000000, 0.000000;;,
+ 23;3; 0.000000, 0.000000, 0.000000;;,
+ 24;3; 0.000000, 0.000000, 0.000000;;,
+ 25;3; 0.000000, 0.000000, 0.000000;;,
+ 26;3; 0.000000, 0.000000, 0.000000;;,
+ 27;3; 0.000000, 0.000000, 0.000000;;,
+ 28;3; 0.000000, 0.000000, 0.000000;;,
+ 29;3; 0.000000, 0.000000, 0.000000;;,
+ 30;3; 0.000000, 0.000000, 0.000000;;,
+ 31;3; 0.000000, 0.000000, 0.000000;;,
+ 32;3; 0.000000, 0.000000, 0.000000;;,
+ 33;3; 0.000000, 0.000000, 0.000000;;,
+ 34;3; 0.000000, 0.000000, 0.000000;;,
+ 35;3; 0.000000, 0.000000, 0.000000;;,
+ 36;3; 0.000000, 0.000000, 0.000000;;,
+ 37;3; 0.000000, 0.000000, 0.000000;;,
+ 38;3; 0.000000, 0.000000, 0.000000;;,
+ 39;3; 0.000000, 0.000000, 0.000000;;,
+ 40;3; 0.000000, 0.000000, 0.000000;;,
+ 41;3; 0.000000, 0.000000, 0.000000;;,
+ 42;3; 0.000000, 0.000000, 0.000000;;,
+ 43;3; 0.000000, 0.000000, 0.000000;;,
+ 44;3; 0.000000, 0.000000, 0.000000;;,
+ 45;3; 0.000000, 0.000000, 0.000000;;,
+ 46;3; 0.000000, 0.000000, 0.000000;;,
+ 47;3; 0.000000, 0.000000, 0.000000;;,
+ 48;3; 0.000000, 0.000000, 0.000000;;,
+ 49;3; 0.000000, 0.000000, 0.000000;;,
+ 50;3; 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 51;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 51;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/models/mobs_oerkki.png b/carbone_mobs/models/mobs_oerkki.png
new file mode 100644
index 0000000..e353a58
--- /dev/null
+++ b/carbone_mobs/models/mobs_oerkki.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_oerkki.x b/carbone_mobs/models/mobs_oerkki.x
new file mode 100755
index 0000000..93f1701
--- /dev/null
+++ b/carbone_mobs/models/mobs_oerkki.x
@@ -0,0 +1,3858 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.004457,-0.009078, 0.009382, 1.000000;;
+ }
+ Frame Armature_root {
+ FrameTransformMatrix {
+ -1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000,-0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature_Right_Hand {
+ FrameTransformMatrix {
+ 0.986046,-0.166475, 0.000000, 0.000000,
+ -0.166475,-0.986046,-0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ -0.290493, 2.355259, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Right_Hand
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ 0.984885, 0.173207, 0.000000, 0.000000,
+ 0.173208,-0.984885,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 0.259914, 2.347614, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_back {
+ FrameTransformMatrix {
+ 0.999771, 0.021400,-0.000000, 0.000000,
+ 0.021400,-0.999771,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -0.013083, 2.483388,-0.152575, 1.000000;;
+ }
+ } //End of Armature_back
+ Frame Armature_root_001 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000, 1.000000, 0.000000,
+ 0.108388, 3.011908,-0.000000, 1.000000;;
+ }
+ } //End of Armature_root_001
+ Frame Armature_root_002 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000, 1.000000, 0.000000,
+ -0.157125, 2.995103,-0.000000, 1.000000;;
+ }
+ } //End of Armature_root_002
+ } //End of Armature_root
+ Frame Plane {
+ FrameTransformMatrix {
+ 0.800000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ -0.006223, 0.000000,-0.013009, 1.000000;;
+ }
+ Mesh { //Plane_009 Mesh
+ 328;
+ -0.264941;-0.186165; 3.341238;,
+ -0.103393;-0.186165; 3.341238;,
+ -0.103393;-0.186165; 3.179691;,
+ -0.264941;-0.186165; 3.179691;,
+ -0.240167;-0.190033; 2.271265;,
+ 0.225248;-0.190033; 2.271265;,
+ 0.225248;-0.190033; 2.500485;,
+ -0.240167;-0.190033; 2.500485;,
+ -0.240167;-0.190033; 2.271265;,
+ -0.240167; 0.208188; 2.271265;,
+ 0.225248; 0.208188; 2.271265;,
+ 0.225248;-0.190033; 2.271265;,
+ 0.225248;-0.190033; 2.271265;,
+ 0.225248; 0.208188; 2.271265;,
+ 0.225248; 0.208188; 2.500485;,
+ 0.225248;-0.190033; 2.500485;,
+ -0.240167; 0.208188; 2.271265;,
+ -0.240167;-0.190033; 2.271265;,
+ -0.240167;-0.190033; 2.500485;,
+ -0.240167; 0.208188; 2.500485;,
+ 0.225248; 0.208188; 2.271265;,
+ -0.240167; 0.208188; 2.271265;,
+ -0.240167; 0.208188; 2.500485;,
+ 0.225248; 0.208188; 2.500485;,
+ -0.343863;-0.278758; 0.009591;,
+ -0.343863; 0.296914; 0.009591;,
+ -0.343863; 0.296914; 2.500485;,
+ -0.343863;-0.278758; 2.500485;,
+ -0.343863; 0.296914; 0.009591;,
+ 0.328944; 0.296914; 0.009591;,
+ 0.328944; 0.296914; 2.500485;,
+ -0.343863; 0.296914; 2.500485;,
+ 0.328944; 0.296914; 0.009591;,
+ 0.328944;-0.278758; 0.009591;,
+ 0.328944;-0.278758; 2.500485;,
+ 0.328944; 0.296914; 2.500485;,
+ 0.328944;-0.278758; 0.009591;,
+ -0.343863;-0.278758; 0.009591;,
+ -0.343863;-0.278758; 2.500485;,
+ 0.328944;-0.278758; 2.500485;,
+ -0.240167;-0.190033; 2.500485;,
+ 0.225248;-0.190033; 2.500485;,
+ 0.328944;-0.278758; 2.500485;,
+ -0.343863;-0.278758; 2.500485;,
+ -0.343863;-0.278758; 0.009591;,
+ 0.328944;-0.278758; 0.009591;,
+ 0.328944; 0.296914; 0.009591;,
+ -0.343863; 0.296914; 0.009591;,
+ 0.225248; 0.208188; 2.500485;,
+ -0.240167; 0.208188; 2.500485;,
+ -0.343863; 0.296914; 2.500485;,
+ 0.328944; 0.296914; 2.500485;,
+ -0.240167; 0.208188; 2.500485;,
+ -0.240167;-0.190033; 2.500485;,
+ -0.343863;-0.278758; 2.500485;,
+ -0.343863; 0.296914; 2.500485;,
+ 0.225248;-0.190033; 2.500485;,
+ 0.225248; 0.208188; 2.500485;,
+ 0.328944; 0.296914; 2.500485;,
+ 0.328944;-0.278758; 2.500485;,
+ 0.066079;-0.186165; 3.341238;,
+ 0.227626;-0.186165; 3.341238;,
+ 0.227626;-0.186165; 3.179691;,
+ 0.066079;-0.186165; 3.179691;,
+ -0.756877;-0.170174; 1.267350;,
+ -0.756877; 0.188330; 1.267350;,
+ -0.756877; 0.188330; 2.204780;,
+ -0.756877;-0.170174; 2.204780;,
+ -0.756877; 0.188330; 1.267350;,
+ -0.398373; 0.188330; 1.267350;,
+ -0.398373; 0.188330; 2.204780;,
+ -0.756877; 0.188330; 2.204780;,
+ -0.398373; 0.188330; 1.267350;,
+ -0.398373;-0.170174; 1.267350;,
+ -0.398373;-0.170174; 2.204780;,
+ -0.398373; 0.188330; 2.204780;,
+ -0.398373;-0.170174; 1.267350;,
+ -0.756877;-0.170174; 1.267350;,
+ -0.756877;-0.170174; 2.204780;,
+ -0.398373;-0.170174; 2.204780;,
+ -0.398373;-0.170174; 1.267350;,
+ -0.398373; 0.188330; 1.267350;,
+ -0.756877; 0.188330; 1.267350;,
+ -0.756877;-0.170174; 1.267350;,
+ -0.810406;-0.223703; 2.204780;,
+ -0.344844;-0.223703; 2.204780;,
+ -0.398373;-0.170174; 2.204780;,
+ -0.756877;-0.170174; 2.204780;,
+ -0.810406;-0.223703; 2.495205;,
+ -0.344844;-0.223703; 2.495205;,
+ -0.344844;-0.223703; 2.204780;,
+ -0.810406;-0.223703; 2.204780;,
+ -0.344844; 0.241859; 2.204780;,
+ -0.810406; 0.241859; 2.204780;,
+ -0.756877; 0.188330; 2.204780;,
+ -0.398373; 0.188330; 2.204780;,
+ -0.810406; 0.241859; 2.204780;,
+ -0.810406;-0.223703; 2.204780;,
+ -0.756877;-0.170174; 2.204780;,
+ -0.756877; 0.188330; 2.204780;,
+ -0.344844;-0.223703; 2.204780;,
+ -0.344844; 0.241859; 2.204780;,
+ -0.398373; 0.188330; 2.204780;,
+ -0.398373;-0.170174; 2.204780;,
+ -0.810406;-0.223703; 2.495205;,
+ -0.810406; 0.241859; 2.495205;,
+ -0.344844; 0.241859; 2.495205;,
+ -0.344844;-0.223703; 2.495205;,
+ -0.344844;-0.223703; 2.495205;,
+ -0.344844; 0.241859; 2.495205;,
+ -0.344844; 0.241859; 2.204780;,
+ -0.344844;-0.223703; 2.204780;,
+ -0.810406; 0.241859; 2.495205;,
+ -0.810406;-0.223703; 2.495205;,
+ -0.810406;-0.223703; 2.204780;,
+ -0.810406; 0.241859; 2.204780;,
+ -0.344844; 0.241859; 2.495205;,
+ -0.810406; 0.241859; 2.495205;,
+ -0.810406; 0.241859; 2.204780;,
+ -0.344844; 0.241859; 2.204780;,
+ 0.748465;-0.170174; 1.267350;,
+ 0.748465; 0.188330; 1.267350;,
+ 0.389960; 0.188330; 1.267350;,
+ 0.389960;-0.170174; 1.267350;,
+ 0.748465;-0.170174; 1.267350;,
+ 0.389960;-0.170174; 1.267350;,
+ 0.389960;-0.170174; 2.204780;,
+ 0.748465;-0.170174; 2.204780;,
+ 0.748465; 0.188330; 1.267350;,
+ 0.748465;-0.170174; 1.267350;,
+ 0.748465;-0.170174; 2.204780;,
+ 0.748465; 0.188330; 2.204780;,
+ 0.389960; 0.188330; 1.267350;,
+ 0.748465; 0.188330; 1.267350;,
+ 0.748465; 0.188330; 2.204780;,
+ 0.389960; 0.188330; 2.204780;,
+ 0.801994; 0.241859; 2.495205;,
+ 0.336431; 0.241859; 2.495205;,
+ 0.336431; 0.241859; 2.204780;,
+ 0.801994; 0.241859; 2.204780;,
+ 0.336431; 0.241859; 2.495205;,
+ 0.336431;-0.223703; 2.495205;,
+ 0.336431;-0.223703; 2.204780;,
+ 0.336431; 0.241859; 2.204780;,
+ 0.801994;-0.223703; 2.495205;,
+ 0.801994; 0.241859; 2.495205;,
+ 0.801994; 0.241859; 2.204780;,
+ 0.801994;-0.223703; 2.204780;,
+ 0.389960;-0.170174; 1.267350;,
+ 0.389960; 0.188330; 1.267350;,
+ 0.389960; 0.188330; 2.204780;,
+ 0.389960;-0.170174; 2.204780;,
+ 0.336431;-0.223703; 2.495205;,
+ 0.336431; 0.241859; 2.495205;,
+ 0.801994; 0.241859; 2.495205;,
+ 0.801994;-0.223703; 2.495205;,
+ 0.801994;-0.223703; 2.204780;,
+ 0.801994; 0.241859; 2.204780;,
+ 0.748465; 0.188330; 2.204780;,
+ 0.748465;-0.170174; 2.204780;,
+ 0.336431; 0.241859; 2.204780;,
+ 0.336431;-0.223703; 2.204780;,
+ 0.389960;-0.170174; 2.204780;,
+ 0.389960; 0.188330; 2.204780;,
+ 0.801994; 0.241859; 2.204780;,
+ 0.336431; 0.241859; 2.204780;,
+ 0.389960; 0.188330; 2.204780;,
+ 0.748465; 0.188330; 2.204780;,
+ 0.336431;-0.223703; 2.495205;,
+ 0.801994;-0.223703; 2.495205;,
+ 0.801994;-0.223703; 2.204780;,
+ 0.336431;-0.223703; 2.204780;,
+ 0.336431;-0.223703; 2.204780;,
+ 0.801994;-0.223703; 2.204780;,
+ 0.748465;-0.170174; 2.204780;,
+ 0.389960;-0.170174; 2.204780;,
+ -1.003181;-0.315065; 0.315260;,
+ -1.003181; 0.351327; 0.315260;,
+ -1.003181; 0.351327; 2.746741;,
+ -1.003181;-0.315065; 2.746741;,
+ -1.003181; 0.351327; 0.315260;,
+ -0.791421; 0.351327; 0.315260;,
+ -0.791421; 0.351327; 2.563308;,
+ -1.003181; 0.351327; 2.746741;,
+ -0.791421; 0.351327; 0.315260;,
+ -0.791421;-0.315065; 0.315260;,
+ -0.791421;-0.315065; 2.563308;,
+ -0.791421; 0.351327; 2.563308;,
+ -0.791421;-0.315065; 0.315260;,
+ -1.003181;-0.315065; 0.315260;,
+ -1.003181;-0.315065; 2.746741;,
+ -0.791421;-0.315065; 2.563308;,
+ -0.791421;-0.315065; 0.315260;,
+ -0.791421; 0.351327; 0.315260;,
+ -1.003181; 0.351327; 0.315260;,
+ -1.003181;-0.315065; 0.315260;,
+ -0.514026;-0.315065; 2.746741;,
+ -0.302267;-0.315065; 2.563308;,
+ -0.791421;-0.315065; 2.563308;,
+ -1.003181;-0.315065; 2.746741;,
+ -0.514026;-0.315065; 3.804539;,
+ -0.302267;-0.315065; 3.587476;,
+ -0.302267;-0.315065; 2.563308;,
+ -0.514026;-0.315065; 2.746741;,
+ -0.514026; 0.351327; 2.746741;,
+ -0.514026;-0.315065; 2.746741;,
+ -1.003181;-0.315065; 2.746741;,
+ -1.003181; 0.351327; 2.746741;,
+ -0.302267;-0.315065; 2.563308;,
+ -0.302267; 0.351327; 2.563308;,
+ -0.791421; 0.351327; 2.563308;,
+ -0.791421;-0.315065; 2.563308;,
+ -0.302267; 0.351327; 2.563308;,
+ -0.514026; 0.351327; 2.746741;,
+ -1.003181; 0.351327; 2.746741;,
+ -0.791421; 0.351327; 2.563308;,
+ 0.522487;-0.315065; 3.804539;,
+ 0.306120;-0.315065; 3.587476;,
+ -0.302267;-0.315065; 3.587476;,
+ -0.514026;-0.315065; 3.804539;,
+ -0.514026; 0.351327; 3.804539;,
+ -0.514026;-0.315065; 3.804539;,
+ -0.514026;-0.315065; 2.746741;,
+ -0.514026; 0.351327; 2.746741;,
+ -0.302267; 0.351327; 3.587476;,
+ -0.514026; 0.351327; 3.804539;,
+ -0.514026; 0.351327; 2.746741;,
+ -0.302267; 0.351327; 2.563308;,
+ -0.302267;-0.315065; 3.587476;,
+ -0.302267; 0.351327; 3.587476;,
+ -0.302267; 0.351327; 2.563308;,
+ -0.302267;-0.315065; 2.563308;,
+ 0.522487;-0.315065; 2.747673;,
+ 0.306120;-0.315065; 2.564813;,
+ 0.306120;-0.315065; 3.587476;,
+ 0.522487;-0.315065; 3.804539;,
+ 0.522487; 0.351327; 3.804539;,
+ 0.522487;-0.315065; 3.804539;,
+ -0.514026;-0.315065; 3.804539;,
+ -0.514026; 0.351327; 3.804539;,
+ 0.306120; 0.351327; 3.587476;,
+ 0.522487; 0.351327; 3.804539;,
+ -0.514026; 0.351327; 3.804539;,
+ -0.302267; 0.351327; 3.587476;,
+ 0.306120;-0.315065; 3.587476;,
+ 0.306120; 0.351327; 3.587476;,
+ -0.302267; 0.351327; 3.587476;,
+ -0.302267;-0.315065; 3.587476;,
+ 1.002260;-0.315065; 2.747673;,
+ 0.805352;-0.315065; 2.564813;,
+ 0.306120;-0.315065; 2.564813;,
+ 0.522487;-0.315065; 2.747673;,
+ 0.306120;-0.315065; 2.564813;,
+ 0.306120; 0.351327; 2.564813;,
+ 0.306120; 0.351327; 3.587476;,
+ 0.306120;-0.315065; 3.587476;,
+ 0.522487; 0.351327; 2.747673;,
+ 0.522487;-0.315065; 2.747673;,
+ 0.522487;-0.315065; 3.804539;,
+ 0.522487; 0.351327; 3.804539;,
+ 0.306120; 0.351327; 2.564813;,
+ 0.522487; 0.351327; 2.747673;,
+ 0.522487; 0.351327; 3.804539;,
+ 0.306120; 0.351327; 3.587476;,
+ 1.002260;-0.315065; 0.313008;,
+ 0.805352;-0.315065; 0.312940;,
+ 0.805352;-0.315065; 2.564813;,
+ 1.002260;-0.315065; 2.747673;,
+ 1.002260; 0.351327; 2.747673;,
+ 1.002260;-0.315065; 2.747673;,
+ 0.522487;-0.315065; 2.747673;,
+ 0.522487; 0.351327; 2.747673;,
+ 0.805352; 0.351327; 2.564813;,
+ 1.002260; 0.351327; 2.747673;,
+ 0.522487; 0.351327; 2.747673;,
+ 0.306120; 0.351327; 2.564813;,
+ 0.805352;-0.315065; 2.564813;,
+ 0.805352; 0.351327; 2.564813;,
+ 0.306120; 0.351327; 2.564813;,
+ 0.306120;-0.315065; 2.564813;,
+ 1.002260;-0.315065; 0.313008;,
+ 1.002260; 0.351327; 0.313008;,
+ 0.805352; 0.351327; 0.312940;,
+ 0.805352;-0.315065; 0.312940;,
+ 0.805352; 0.351327; 0.312940;,
+ 1.002260; 0.351327; 0.313008;,
+ 1.002260; 0.351327; 2.747673;,
+ 0.805352; 0.351327; 2.564813;,
+ 0.805352;-0.315065; 0.312940;,
+ 0.805352; 0.351327; 0.312940;,
+ 0.805352; 0.351327; 2.564813;,
+ 0.805352;-0.315065; 2.564813;,
+ 1.002260; 0.351327; 0.313008;,
+ 1.002260;-0.315065; 0.313008;,
+ 1.002260;-0.315065; 2.747673;,
+ 1.002260; 0.351327; 2.747673;,
+ 0.306120; 0.351327; 3.587476;,
+ -0.302267; 0.351327; 3.587476;,
+ -0.302267; 0.351327; 2.563308;,
+ 0.306120; 0.351327; 2.564813;,
+ -0.302267; 0.351327; 0.328521;,
+ 0.306120; 0.351327; 0.330025;,
+ 0.306120; 0.351327; 2.564813;,
+ -0.302267; 0.351327; 2.563308;,
+ 0.805352; 0.351327; 0.312940;,
+ 0.805352; 0.351327; 2.564813;,
+ 0.306120; 0.351327; 2.564813;,
+ 0.306120; 0.351327; 0.330025;,
+ -0.302267; 0.351327; 2.563308;,
+ -0.791421; 0.351327; 2.563308;,
+ -0.791421; 0.351327; 0.315260;,
+ -0.302267; 0.351327; 0.328521;,
+ -0.306120; 0.294175; 3.587476;,
+ 0.302267; 0.294175; 3.587476;,
+ 0.302267; 0.294175; 2.563308;,
+ -0.306120; 0.294175; 2.564813;,
+ 0.302267; 0.294175; 0.328521;,
+ -0.306120; 0.294175; 0.330025;,
+ -0.306120; 0.294175; 2.564813;,
+ 0.302267; 0.294175; 2.563308;,
+ -0.805353; 0.294175; 0.312940;,
+ -0.805353; 0.294175; 2.564813;,
+ -0.306120; 0.294175; 2.564813;,
+ -0.306120; 0.294175; 0.330025;,
+ 0.302267; 0.294175; 2.563308;,
+ 0.791421; 0.294175; 2.563308;,
+ 0.791421; 0.294175; 0.315260;,
+ 0.302267; 0.294175; 0.328521;;
+ 82;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;;
+ MeshNormals { //Plane_009 Normals
+ 328;
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000344; 0.000000;-1.000000;,
+ 0.000344; 0.000000;-1.000000;,
+ 0.000344; 0.000000;-1.000000;,
+ 0.000344; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;;
+ 82;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;;
+ } //End of Plane_009 Normals
+ MeshMaterialList { //Plane_009 Material List
+ 1;
+ 82;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material {
+ 0.640000; 0.640000; 0.640000; 1.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Plane_009 Material List
+ MeshTextureCoords { //Plane_009 UV Coordinates
+ 328;
+ 0.590104; 0.824304;,
+ 0.684339; 0.824304;,
+ 0.684339; 0.918540;,
+ 0.590104; 0.918540;,
+ 0.083084; 0.002736;,
+ 0.083084; 0.002736;,
+ 0.083084; 0.002736;,
+ 0.083084; 0.002736;,
+ 0.125368; 0.490119;,
+ 0.220998; 0.490119;,
+ 0.220998; 0.601885;,
+ 0.125368; 0.601885;,
+ 0.220998; 0.574180;,
+ 0.125368; 0.574180;,
+ 0.125368; 0.519134;,
+ 0.220998; 0.519134;,
+ 0.147080; 0.595536;,
+ 0.147080; 0.499906;,
+ 0.202125; 0.499906;,
+ 0.202125; 0.595536;,
+ 0.146076; 0.601885;,
+ 0.146076; 0.490119;,
+ 0.201122; 0.490119;,
+ 0.201122; 0.601885;,
+ 0.829089; 0.044516;,
+ 0.983477; 0.044516;,
+ 0.983477; 0.762585;,
+ 0.829089; 0.762585;,
+ 0.813932; 0.043009;,
+ 0.994371; 0.043009;,
+ 0.994371; 0.761078;,
+ 0.813932; 0.761078;,
+ 0.827629; 0.043009;,
+ 0.982018; 0.043009;,
+ 0.982018; 0.761078;,
+ 0.827629; 0.761078;,
+ 0.988587; 0.818148;,
+ 0.815138; 0.818148;,
+ 0.815138; 0.115436;,
+ 0.988587; 0.115436;,
+ 0.184396; 0.491532;,
+ 0.184396; 0.603298;,
+ 0.163090; 0.628199;,
+ 0.163090; 0.466630;,
+ 0.746600; 0.513391;,
+ 0.746600; 0.778189;,
+ 0.520031; 0.778190;,
+ 0.520031; 0.513391;,
+ 0.163222; 0.602319;,
+ 0.163222; 0.490553;,
+ 0.184529; 0.465652;,
+ 0.184529; 0.627221;,
+ 0.161564; 0.595141;,
+ 0.161564; 0.499511;,
+ 0.186466; 0.478204;,
+ 0.186466; 0.616447;,
+ 0.186336; 0.500163;,
+ 0.186336; 0.595793;,
+ 0.161434; 0.617100;,
+ 0.161434; 0.478857;,
+ 0.590103; 0.824304;,
+ 0.684339; 0.824304;,
+ 0.684339; 0.918539;,
+ 0.590104; 0.918540;,
+ 0.700007; 0.967919;,
+ 0.700007; 0.858136;,
+ 0.987072; 0.858136;,
+ 0.987072; 0.967919;,
+ 0.700007; 0.969657;,
+ 0.700007; 0.859874;,
+ 0.987072; 0.859874;,
+ 0.987072; 0.969657;,
+ 0.700007; 0.967792;,
+ 0.700007; 0.858009;,
+ 0.987072; 0.858009;,
+ 0.987072; 0.967792;,
+ 0.700007; 0.969530;,
+ 0.700007; 0.859747;,
+ 0.987072; 0.859747;,
+ 0.987072; 0.969530;,
+ 0.897067; 0.969657;,
+ 0.787284; 0.969657;,
+ 0.787284; 0.859874;,
+ 0.897067; 0.859874;,
+ 0.866803; 0.495976;,
+ 0.937974; 0.495976;,
+ 0.929684; 0.506969;,
+ 0.874959; 0.506955;,
+ 0.868177; 0.493911;,
+ 0.939769; 0.493911;,
+ 0.939769; 0.553131;,
+ 0.868177; 0.553131;,
+ 0.938927; 0.549502;,
+ 0.867756; 0.549502;,
+ 0.876047; 0.538508;,
+ 0.930772; 0.538522;,
+ 0.938937; 0.548225;,
+ 0.867766; 0.548225;,
+ 0.876057; 0.537231;,
+ 0.930782; 0.537245;,
+ 0.868729; 0.496859;,
+ 0.939900; 0.496859;,
+ 0.931610; 0.507852;,
+ 0.876885; 0.507838;,
+ 0.867766; 0.571553;,
+ 0.867766; 0.476620;,
+ 0.939358; 0.476620;,
+ 0.939358; 0.571553;,
+ 0.867766; 0.493911;,
+ 0.939358; 0.493911;,
+ 0.939358; 0.553131;,
+ 0.867766; 0.553131;,
+ 0.882070; 0.572285;,
+ 0.882070; 0.477352;,
+ 0.926730; 0.477352;,
+ 0.926730; 0.572285;,
+ 0.939769; 0.551122;,
+ 0.868177; 0.551122;,
+ 0.868177; 0.491902;,
+ 0.939769; 0.491902;,
+ 0.897067; 0.969657;,
+ 0.787284; 0.969657;,
+ 0.787284; 0.859874;,
+ 0.897067; 0.859874;,
+ 0.700007; 0.969530;,
+ 0.700007; 0.859747;,
+ 0.987072; 0.859747;,
+ 0.987072; 0.969530;,
+ 0.700007; 0.967792;,
+ 0.700007; 0.858009;,
+ 0.987072; 0.858009;,
+ 0.987072; 0.967792;,
+ 0.700007; 0.969657;,
+ 0.700007; 0.859874;,
+ 0.987072; 0.859874;,
+ 0.987072; 0.969657;,
+ 0.939769; 0.551122;,
+ 0.868177; 0.551122;,
+ 0.868177; 0.491902;,
+ 0.939769; 0.491902;,
+ 0.882070; 0.572285;,
+ 0.882070; 0.477352;,
+ 0.926730; 0.477352;,
+ 0.926730; 0.572285;,
+ 0.867766; 0.493911;,
+ 0.939358; 0.493911;,
+ 0.939358; 0.553131;,
+ 0.867766; 0.553131;,
+ 0.700007; 0.967919;,
+ 0.700007; 0.858136;,
+ 0.987072; 0.858136;,
+ 0.987072; 0.967919;,
+ 0.867766; 0.571553;,
+ 0.867766; 0.476620;,
+ 0.939358; 0.476620;,
+ 0.939358; 0.571553;,
+ 0.868729; 0.496859;,
+ 0.939900; 0.496859;,
+ 0.931610; 0.507852;,
+ 0.876885; 0.507838;,
+ 0.938937; 0.548225;,
+ 0.867766; 0.548225;,
+ 0.876057; 0.537231;,
+ 0.930782; 0.537245;,
+ 0.938927; 0.549502;,
+ 0.867756; 0.549502;,
+ 0.876047; 0.538508;,
+ 0.930772; 0.538522;,
+ 0.868177; 0.493911;,
+ 0.939769; 0.493911;,
+ 0.939769; 0.553131;,
+ 0.868177; 0.553131;,
+ 0.866803; 0.495976;,
+ 0.937974; 0.495976;,
+ 0.929684; 0.506969;,
+ 0.874959; 0.506955;,
+ 0.103963; 0.380808;,
+ 0.103963; 0.203072;,
+ 0.752472; 0.203072;,
+ 0.752472; 0.380808;,
+ 0.100685; 0.369755;,
+ 0.098221; 0.303170;,
+ 0.606799; 0.303124;,
+ 0.650386; 0.369755;,
+ 0.117449; 0.202819;,
+ 0.117449; 0.025083;,
+ 0.717034; 0.025083;,
+ 0.717034; 0.202819;,
+ 0.102377; 0.617822;,
+ 0.104464; 0.552160;,
+ 0.661450; 0.550091;,
+ 0.603217; 0.617823;,
+ 0.679364; 0.385480;,
+ 0.679364; 0.563216;,
+ 0.622885; 0.563216;,
+ 0.622885; 0.385480;,
+ 0.676160; 0.130421;,
+ 0.676159; 0.205144;,
+ 0.590739; 0.106532;,
+ 0.590739; 0.031810;,
+ 0.448501; 0.692908;,
+ 0.390608; 0.749388;,
+ 0.117449; 0.749388;,
+ 0.166373; 0.692908;,
+ 0.548351; 0.171150;,
+ 0.726087; 0.171150;,
+ 0.726087; 0.301614;,
+ 0.548351; 0.301614;,
+ 0.641753; 0.371055;,
+ 0.641753; 0.548791;,
+ 0.511288; 0.548791;,
+ 0.511288; 0.371055;,
+ 0.729588; 0.563216;,
+ 0.680664; 0.506737;,
+ 0.680664; 0.376272;,
+ 0.729588; 0.432751;,
+ 0.737833; 0.317205;,
+ 0.679940; 0.259497;,
+ 0.679940; 0.097232;,
+ 0.737833; 0.040753;,
+ 0.383486; 0.028454;,
+ 0.383486; 0.206190;,
+ 0.101357; 0.206190;,
+ 0.101357; 0.028454;,
+ 0.375536; 0.684708;,
+ 0.433430; 0.741188;,
+ 0.151301; 0.741188;,
+ 0.102377; 0.684709;,
+ 0.375537; 0.371055;,
+ 0.375537; 0.548791;,
+ 0.102377; 0.548791;,
+ 0.102377; 0.371055;,
+ 0.166220; 0.691608;,
+ 0.117449; 0.633900;,
+ 0.390207; 0.633900;,
+ 0.448100; 0.691608;,
+ 0.315381; 0.303860;,
+ 0.137645; 0.303860;,
+ 0.137645; 0.027408;,
+ 0.315381; 0.027408;,
+ 0.785280; 0.376460;,
+ 0.727387; 0.434168;,
+ 0.727387; 0.157716;,
+ 0.785280; 0.214195;,
+ 0.534337; 0.385480;,
+ 0.534337; 0.563216;,
+ 0.372072; 0.563216;,
+ 0.372072; 0.385480;,
+ 0.711585; 0.735744;,
+ 0.662796; 0.683243;,
+ 0.662750; 0.550091;,
+ 0.711541; 0.607782;,
+ 0.316681; 0.205144;,
+ 0.316681; 0.027408;,
+ 0.589439; 0.027408;,
+ 0.589439; 0.205144;,
+ 0.088891; 0.563216;,
+ 0.088891; 0.385480;,
+ 0.370772; 0.385480;,
+ 0.370772; 0.563216;,
+ 0.316681; 0.303860;,
+ 0.365452; 0.246152;,
+ 0.647332; 0.246152;,
+ 0.589439; 0.303860;,
+ 0.105206; 0.683409;,
+ 0.102377; 0.619185;,
+ 0.593508; 0.619123;,
+ 0.635692; 0.683409;,
+ 0.548351; 0.028454;,
+ 0.726087; 0.028454;,
+ 0.726087; 0.156416;,
+ 0.548351; 0.156416;,
+ 0.621585; 0.487177;,
+ 0.618235; 0.558770;,
+ 0.535637; 0.461037;,
+ 0.535637; 0.385480;,
+ 0.509988; 0.371055;,
+ 0.509988; 0.548791;,
+ 0.376836; 0.548791;,
+ 0.376836; 0.371055;,
+ 0.695570; 0.371055;,
+ 0.695570; 0.548791;,
+ 0.643053; 0.548791;,
+ 0.643053; 0.371055;,
+ 0.136796; 0.384180;,
+ 0.139107; 0.321101;,
+ 0.678640; 0.318505;,
+ 0.618236; 0.384180;,
+ 0.103963; 0.559844;,
+ 0.103963; 0.382108;,
+ 0.704568; 0.382108;,
+ 0.704568; 0.559844;,
+ 0.103963; 0.201772;,
+ 0.103963; 0.024037;,
+ 0.753321; 0.024036;,
+ 0.753321; 0.201773;,
+ 0.547051; 0.301614;,
+ 0.384786; 0.301614;,
+ 0.384786; 0.028454;,
+ 0.547051; 0.028856;,
+ 0.117449; 0.366384;,
+ 0.117850; 0.204119;,
+ 0.713898; 0.204119;,
+ 0.713497; 0.366384;,
+ 0.117449; 0.500836;,
+ 0.718053; 0.500836;,
+ 0.718053; 0.367684;,
+ 0.122006; 0.367684;,
+ 0.717033; 0.502136;,
+ 0.717033; 0.632601;,
+ 0.117449; 0.632601;,
+ 0.120986; 0.502136;,
+ 0.547051; 0.291078;,
+ 0.384786; 0.291078;,
+ 0.384786; 0.017919;,
+ 0.547051; 0.018320;,
+ 0.117449; 0.355848;,
+ 0.117850; 0.193583;,
+ 0.713898; 0.193583;,
+ 0.713497; 0.355848;,
+ 0.117449; 0.490300;,
+ 0.718053; 0.490300;,
+ 0.718053; 0.357148;,
+ 0.122006; 0.357148;,
+ 0.717033; 0.491600;,
+ 0.717033; 0.622065;,
+ 0.117449; 0.622065;,
+ 0.120986; 0.491601;;
+ } //End of Plane_009 UV Coordinates
+ XSkinMeshHeader {
+ 3;
+ 9;
+ 6;
+ }
+ SkinWeights {
+ "Armature_back";
+ 319;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 65,
+ 66,
+ 67,
+ 68,
+ 70,
+ 71,
+ 74,
+ 75,
+ 78,
+ 79,
+ 82,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 263,
+ 264,
+ 265,
+ 266,
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 280,
+ 281,
+ 282,
+ 283,
+ 284,
+ 285,
+ 286,
+ 287,
+ 288,
+ 289,
+ 290,
+ 291,
+ 292,
+ 293,
+ 294,
+ 295,
+ 296,
+ 297,
+ 298,
+ 299,
+ 300,
+ 301,
+ 302,
+ 303,
+ 304,
+ 305,
+ 306,
+ 307,
+ 308,
+ 309,
+ 310,
+ 311,
+ 312,
+ 313,
+ 314,
+ 315,
+ 316,
+ 317,
+ 318,
+ 319,
+ 320,
+ 321,
+ 322,
+ 323,
+ 324,
+ 325,
+ 326,
+ 327;
+ 0.000021,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000037,
+ 0.004535,
+ 0.000000,
+ 0.000001,
+ 0.000037,
+ 0.000000,
+ 0.000000,
+ 0.004535,
+ 0.004535,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000037,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000039,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000039,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000039,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000039,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000011,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000011,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000011,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.799817, 0.017120,-0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.021400,-0.999771, 0.000000, 0.000000,
+ -0.046566, 2.495971,-0.152575, 1.000000;;
+ } //End of Armature_back Skin Weights
+ SkinWeights {
+ "Armature_Bone_002";
+ 124;
+ 5,
+ 6,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 20,
+ 23,
+ 30,
+ 34,
+ 35,
+ 39,
+ 41,
+ 42,
+ 48,
+ 51,
+ 56,
+ 57,
+ 58,
+ 59,
+ 69,
+ 72,
+ 73,
+ 76,
+ 80,
+ 81,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 232,
+ 233,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 256,
+ 257,
+ 260,
+ 261,
+ 266,
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 286,
+ 287,
+ 290,
+ 291,
+ 294,
+ 295,
+ 299,
+ 302,
+ 305,
+ 306,
+ 314,
+ 319,
+ 324,
+ 325;
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000;
+ 0.787908, 0.138566,-0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ 0.173208,-0.984885, 0.000000, 0.000000,
+ -0.670992, 2.278846,-0.000000, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ SkinWeights {
+ "Armature_Right_Hand";
+ 56;
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999989,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999989,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999989,
+ 1.000000,
+ 1.000000;
+ 0.788837,-0.133180, 0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ -0.166475,-0.986046, 0.000000, 0.000000,
+ 0.674561, 2.287896,-0.000000, 1.000000;;
+ } //End of Armature_Right_Hand Skin Weights
+ SkinWeights {
+ "Armature_root_001";
+ 4;
+ 60,
+ 61,
+ 62,
+ 63;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.800000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ -0.114611,-3.024917,-0.000000, 1.000000;;
+ } //End of Armature_root_001 Skin Weights
+ SkinWeights {
+ "Armature_root_002";
+ 4;
+ 0,
+ 1,
+ 2,
+ 3;
+ 0.999979,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.800000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.150902,-3.008112,-0.000000, 1.000000;;
+ } //End of Armature_root_002 Skin Weights
+ SkinWeights {
+ "Armature_root";
+ 64;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63;
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.999963,
+ 0.995465,
+ 1.000000,
+ 0.999999,
+ 0.999963,
+ 1.000000,
+ 1.000000,
+ 0.995465,
+ 0.995465,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999963,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999961,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999961,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 0.999961,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 0.999961,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000;
+ 0.800000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ -0.006223,-0.013009,-0.000000, 1.000000;;
+ } //End of Armature_root Skin Weights
+ } //End of Plane_009 Mesh
+ } //End of Plane
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; 0.004457,-0.009078, 0.009382;;,
+ 1;3; 0.004457,-0.009078, 0.009382;;,
+ 2;3; 0.004457,-0.009078, 0.009382;;,
+ 3;3; 0.004457,-0.009078, 0.009382;;,
+ 4;3; 0.004457,-0.009078, 0.009382;;,
+ 5;3; 0.004457,-0.009078, 0.009382;;,
+ 6;3; 0.004457,-0.009078, 0.009382;;,
+ 7;3; 0.004457,-0.009078, 0.009382;;,
+ 8;3; 0.004457,-0.009078, 0.009382;;,
+ 9;3; 0.004457,-0.009078, 0.009382;;,
+ 10;3; 0.004457,-0.009078, 0.009382;;,
+ 11;3; 0.004457,-0.009078, 0.009382;;,
+ 12;3; 0.004457,-0.009078, 0.009382;;,
+ 13;3; 0.004457,-0.009078, 0.009382;;,
+ 14;3; 0.004457,-0.009078, 0.009382;;,
+ 15;3; 0.004457,-0.009078, 0.009382;;,
+ 16;3; 0.004457,-0.009078, 0.009382;;,
+ 17;3; 0.004457,-0.009078, 0.009382;;,
+ 18;3; 0.004457,-0.009078, 0.009382;;,
+ 19;3; 0.004457,-0.009078, 0.009382;;,
+ 20;3; 0.004457,-0.009078, 0.009382;;,
+ 21;3; 0.004457,-0.009078, 0.009382;;,
+ 22;3; 0.004457,-0.009078, 0.009382;;,
+ 23;3; 0.004457,-0.009078, 0.009382;;,
+ 24;3; 0.004457,-0.009078, 0.009382;;,
+ 25;3; 0.004457,-0.009078, 0.009382;;,
+ 26;3; 0.004457,-0.009078, 0.009382;;,
+ 27;3; 0.004457,-0.009078, 0.009382;;,
+ 28;3; 0.004457,-0.009078, 0.009382;;,
+ 29;3; 0.004457,-0.009078, 0.009382;;,
+ 30;3; 0.004457,-0.009078, 0.009382;;,
+ 31;3; 0.004457,-0.009078, 0.009382;;,
+ 32;3; 0.004457,-0.009078, 0.009382;;,
+ 33;3; 0.004457,-0.009078, 0.009382;;,
+ 34;3; 0.004457,-0.009078, 0.009382;;,
+ 35;3; 0.004457,-0.009078, 0.009382;;,
+ 36;3; 0.004457,-0.009078, 0.009382;;,
+ 37;3; 0.004457,-0.009078, 0.009382;;,
+ 38;3; 0.004457,-0.009078, 0.009382;;,
+ 39;3; 0.004457,-0.009078, 0.009382;;,
+ 40;3; 0.004457,-0.009078, 0.009382;;,
+ 41;3; 0.004457,-0.009078, 0.009382;;,
+ 42;3; 0.004457,-0.009078, 0.009382;;,
+ 43;3; 0.004457,-0.009078, 0.009382;;,
+ 44;3; 0.004457,-0.009078, 0.009382;;,
+ 45;3; 0.004457,-0.009078, 0.009382;;,
+ 46;3; 0.004457,-0.009078, 0.009382;;,
+ 47;3; 0.004457,-0.009078, 0.009382;;,
+ 48;3; 0.004457,-0.009078, 0.009382;;,
+ 49;3; 0.004457,-0.009078, 0.009382;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_root}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; 0.000000, 0.000000, 0.000000;;,
+ 1;3; 0.000000, 0.000000, 0.067862;;,
+ 2;3; 0.000000, 0.000000, 0.137716;;,
+ 3;3; 0.000000, 0.000000, 0.196372;;,
+ 4;3; 0.000000, 0.000000, 0.236159;;,
+ 5;3; 0.000000, 0.000000, 0.250800;;,
+ 6;3; 0.000000,-0.000000, 0.242481;;,
+ 7;3; 0.000000,-0.000000, 0.217369;;,
+ 8;3; 0.000000,-0.000000, 0.175960;;,
+ 9;3; 0.000000,-0.000000, 0.120071;;,
+ 10;3; 0.000000,-0.000000, 0.053144;;,
+ 11;3; 0.000000,-0.000000,-0.019800;;,
+ 12;3; 0.000000,-0.000000,-0.092744;;,
+ 13;3; 0.000000, 0.000000,-0.159671;;,
+ 14;3; 0.000000, 0.000000,-0.215560;;,
+ 15;3; 0.000000, 0.000000,-0.256968;;,
+ 16;3; 0.000000, 0.000000,-0.282081;;,
+ 17;3; 0.000000, 0.000000,-0.290400;;,
+ 18;3; 0.000000,-0.000000,-0.277947;;,
+ 19;3; 0.000000,-0.000000,-0.244260;;,
+ 20;3; 0.000000,-0.000000,-0.194118;;,
+ 21;3; 0.000000,-0.000000,-0.132041;;,
+ 22;3; 0.000000,-0.000000,-0.063637;;,
+ 23;3; 0.000000, 0.000000, 0.000000;;,
+ 24;3; 0.000000, 0.000000, 0.000000;;,
+ 25;3; 0.000000, 0.000000, 0.000000;;,
+ 26;3; 0.000000, 0.000000, 0.000000;;,
+ 27;3; 0.000000, 0.000000, 0.000000;;,
+ 28;3; 0.000000, 0.000000, 0.000000;;,
+ 29;3; 0.000000, 0.000000, 0.000000;;,
+ 30;3; 0.000000, 0.000000, 0.000000;;,
+ 31;3; 0.000000, 0.000000, 0.000000;;,
+ 32;3; 0.000000, 0.000000, 0.000000;;,
+ 33;3; 0.000000, 0.000000, 0.000000;;,
+ 34;3; 0.000000, 0.000000, 0.000000;;,
+ 35;3; 0.000000, 0.000000, 0.000000;;,
+ 36;3; 0.000000, 0.000000, 0.000000;;,
+ 37;3; 0.000000, 0.000000, 0.000000;;,
+ 38;3; 0.000000, 0.000000, 0.000000;;,
+ 39;3; 0.000000, 0.000000, 0.000000;;,
+ 40;3; 0.000000, 0.000000, 0.000000;;,
+ 41;3; 0.000000, 0.000000, 0.000000;;,
+ 42;3; 0.000000, 0.000000, 0.000000;;,
+ 43;3; 0.000000, 0.000000, 0.000000;;,
+ 44;3; 0.000000, 0.000000, 0.000000;;,
+ 45;3; 0.000000, 0.000000, 0.000000;;,
+ 46;3; 0.000000, 0.000000, 0.000000;;,
+ 47;3; 0.000000, 0.000000, 0.000000;;,
+ 48;3; 0.000000, 0.000000, 0.000000;;,
+ 49;3; 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 1;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 2;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 3;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 4;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 5;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 6;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 7;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 8;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 9;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 10;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 11;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 12;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 13;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 14;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 15;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 16;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 17;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 18;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 19;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 20;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 21;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 22;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 23;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 24;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 25;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 26;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 27;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 28;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 29;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 30;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 31;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 32;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 33;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 34;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 35;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 36;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 37;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 38;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 39;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 40;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 41;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 42;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 43;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 44;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 45;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 46;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 47;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 48;4; -0.000000, 0.000000, 0.726457, 0.687212;;,
+ 49;4; -0.000000, 0.000000, 0.726457, 0.687212;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Right_Hand}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; -0.290493, 2.355259, 0.000000;;,
+ 1;3; -0.290493, 2.355259, 0.000000;;,
+ 2;3; -0.290493, 2.355259, 0.000000;;,
+ 3;3; -0.290493, 2.355259, 0.000000;;,
+ 4;3; -0.290493, 2.355259, 0.000000;;,
+ 5;3; -0.290493, 2.355259, 0.000000;;,
+ 6;3; -0.290493, 2.355259, 0.000000;;,
+ 7;3; -0.290493, 2.355259, 0.000000;;,
+ 8;3; -0.290493, 2.355259, 0.000000;;,
+ 9;3; -0.290493, 2.355259, 0.000000;;,
+ 10;3; -0.290493, 2.355259, 0.000000;;,
+ 11;3; -0.290493, 2.355259, 0.000000;;,
+ 12;3; -0.290493, 2.355259, 0.000000;;,
+ 13;3; -0.290493, 2.355259, 0.000000;;,
+ 14;3; -0.290493, 2.355259, 0.000000;;,
+ 15;3; -0.290493, 2.355259, 0.000000;;,
+ 16;3; -0.290493, 2.355259, 0.000000;;,
+ 17;3; -0.290493, 2.355259, 0.000000;;,
+ 18;3; -0.290493, 2.355259, 0.000000;;,
+ 19;3; -0.290493, 2.355259, 0.000000;;,
+ 20;3; -0.290493, 2.355259, 0.000000;;,
+ 21;3; -0.290493, 2.355259, 0.000000;;,
+ 22;3; -0.290493, 2.355259, 0.000000;;,
+ 23;3; -0.290493, 2.355259, 0.000000;;,
+ 24;3; -0.290496, 2.355064,-0.001203;;,
+ 25;3; -0.290496, 2.355064,-0.001203;;,
+ 26;3; -0.290496, 2.355064,-0.001203;;,
+ 27;3; -0.290496, 2.355064,-0.001203;;,
+ 28;3; -0.290496, 2.355064,-0.001203;;,
+ 29;3; -0.290496, 2.355064,-0.001203;;,
+ 30;3; -0.290496, 2.355064,-0.001203;;,
+ 31;3; -0.290496, 2.355064,-0.001203;;,
+ 32;3; -0.290496, 2.355064,-0.001203;;,
+ 33;3; -0.290496, 2.355064,-0.001203;;,
+ 34;3; -0.290496, 2.355064,-0.001203;;,
+ 35;3; -0.290496, 2.355064,-0.001203;;,
+ 36;3; -0.290496, 2.355064,-0.001203;;,
+ 37;3; -0.290496, 2.355065,-0.001203;;,
+ 38;3; -0.290496, 2.355065,-0.001203;;,
+ 39;3; -0.290496, 2.355065,-0.001203;;,
+ 40;3; -0.290496, 2.355065,-0.001203;;,
+ 41;3; -0.290496, 2.355065,-0.001203;;,
+ 42;3; -0.290496, 2.355065,-0.001203;;,
+ 43;3; -0.290496, 2.355065,-0.001203;;,
+ 44;3; -0.290496, 2.355065,-0.001203;;,
+ 45;3; -0.290496, 2.355065,-0.001203;;,
+ 46;3; -0.290496, 2.355065,-0.001203;;,
+ 47;3; -0.290496, 2.355065,-0.001203;;,
+ 48;3; -0.290496, 2.355065,-0.001203;;,
+ 49;3; -0.290496, 2.355065,-0.001203;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 1;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 2;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 3;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 4;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 5;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 6;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 7;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 8;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 9;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 10;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 11;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 12;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 13;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 14;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 15;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 16;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 17;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 18;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 19;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 20;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 21;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 22;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 23;4; -0.000000, 0.996505,-0.083529, 0.000000;;,
+ 24;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 25;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 26;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 27;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 28;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 29;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 30;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 31;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 32;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 33;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 34;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 35;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 36;4; -0.159024, 0.983765,-0.082462, 0.010852;;,
+ 37;4; -0.703772, 0.706324,-0.059206, 0.048025;;,
+ 38;4; -0.697387, 0.712289,-0.059561, 0.047525;;,
+ 39;4; -0.684270, 0.724913,-0.060311, 0.046411;;,
+ 40;4; -0.678183, 0.730801,-0.060660, 0.045887;;,
+ 41;4; -0.681625, 0.727351,-0.060437, 0.046175;;,
+ 42;4; -0.691644, 0.717311,-0.059789, 0.047016;;,
+ 43;4; -0.706047, 0.702877,-0.058857, 0.048224;;,
+ 44;4; -0.720450, 0.688444,-0.057925, 0.049433;;,
+ 45;4; -0.730469, 0.678404,-0.057277, 0.050273;;,
+ 46;4; -0.733911, 0.674954,-0.057055, 0.050562;;,
+ 47;4; -0.726631, 0.682531,-0.057574, 0.049950;;,
+ 48;4; -0.711052, 0.698746,-0.058686, 0.048638;;,
+ 49;4; -0.703772, 0.706324,-0.059206, 0.048025;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; 0.259914, 2.347614, 0.000000;;,
+ 1;3; 0.259914, 2.347614, 0.000000;;,
+ 2;3; 0.259914, 2.347614, 0.000000;;,
+ 3;3; 0.259914, 2.347614, 0.000000;;,
+ 4;3; 0.259914, 2.347614, 0.000000;;,
+ 5;3; 0.259914, 2.347614, 0.000000;;,
+ 6;3; 0.259914, 2.347614, 0.000000;;,
+ 7;3; 0.259914, 2.347614, 0.000000;;,
+ 8;3; 0.259914, 2.347614, 0.000000;;,
+ 9;3; 0.259914, 2.347614, 0.000000;;,
+ 10;3; 0.259914, 2.347614, 0.000000;;,
+ 11;3; 0.259914, 2.347614, 0.000000;;,
+ 12;3; 0.259914, 2.347614, 0.000000;;,
+ 13;3; 0.259914, 2.347614, 0.000000;;,
+ 14;3; 0.259914, 2.347614, 0.000000;;,
+ 15;3; 0.259914, 2.347614, 0.000000;;,
+ 16;3; 0.259914, 2.347614, 0.000000;;,
+ 17;3; 0.259914, 2.347614, 0.000000;;,
+ 18;3; 0.259914, 2.347614, 0.000000;;,
+ 19;3; 0.259914, 2.347614, 0.000000;;,
+ 20;3; 0.259914, 2.347614, 0.000000;;,
+ 21;3; 0.259914, 2.347614, 0.000000;;,
+ 22;3; 0.259914, 2.347614, 0.000000;;,
+ 23;3; 0.259914, 2.347614, 0.000000;;,
+ 24;3; 0.259911, 2.347808, 0.001203;;,
+ 25;3; 0.259911, 2.347808, 0.001203;;,
+ 26;3; 0.259911, 2.347808, 0.001203;;,
+ 27;3; 0.259911, 2.347808, 0.001203;;,
+ 28;3; 0.259911, 2.347808, 0.001203;;,
+ 29;3; 0.259911, 2.347808, 0.001203;;,
+ 30;3; 0.259911, 2.347808, 0.001203;;,
+ 31;3; 0.259911, 2.347808, 0.001203;;,
+ 32;3; 0.259911, 2.347808, 0.001203;;,
+ 33;3; 0.259911, 2.347808, 0.001203;;,
+ 34;3; 0.259911, 2.347808, 0.001203;;,
+ 35;3; 0.259911, 2.347808, 0.001203;;,
+ 36;3; 0.259911, 2.347808, 0.001203;;,
+ 37;3; 0.259911, 2.347809, 0.001203;;,
+ 38;3; 0.259911, 2.347809, 0.001203;;,
+ 39;3; 0.259911, 2.347809, 0.001203;;,
+ 40;3; 0.259911, 2.347809, 0.001203;;,
+ 41;3; 0.259911, 2.347809, 0.001203;;,
+ 42;3; 0.259911, 2.347809, 0.001203;;,
+ 43;3; 0.259911, 2.347809, 0.001203;;,
+ 44;3; 0.259911, 2.347809, 0.001203;;,
+ 45;3; 0.259911, 2.347809, 0.001203;;,
+ 46;3; 0.259911, 2.347809, 0.001203;;,
+ 47;3; 0.259911, 2.347809, 0.001203;;,
+ 48;3; 0.259911, 2.347809, 0.001203;;,
+ 49;3; 0.259911, 2.347809, 0.001203;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 1;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 2;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 3;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 4;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 5;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 6;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 7;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 8;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 9;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 10;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 11;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 12;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 13;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 14;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 15;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 16;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 17;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 18;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 19;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 20;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 21;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 22;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 23;4; -0.000000, 0.996214, 0.086933, 0.000000;;,
+ 24;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 25;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 26;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 27;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 28;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 29;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 30;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 31;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 32;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 33;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 34;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 35;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 36;4; -0.158993, 0.983478, 0.085821,-0.011298;;,
+ 37;4; -0.694552, 0.715031, 0.062396,-0.049354;;,
+ 38;4; -0.692475, 0.716912, 0.062529,-0.049186;;,
+ 39;4; -0.688216, 0.720832, 0.062807,-0.048826;;,
+ 40;4; -0.683196, 0.725494, 0.063136,-0.048391;;,
+ 41;4; -0.678075, 0.730271, 0.063474,-0.047942;;,
+ 42;4; -0.673260, 0.734774, 0.063792,-0.047517;;,
+ 43;4; -0.669052, 0.738712, 0.064070,-0.047145;;,
+ 44;4; -0.665715, 0.741833, 0.064291,-0.046850;;,
+ 45;4; -0.663506, 0.743896, 0.064436,-0.046656;;,
+ 46;4; -0.662702, 0.744646, 0.064489,-0.046585;;,
+ 47;4; -0.670395, 0.737492, 0.063984,-0.047254;;,
+ 48;4; -0.686858, 0.722185, 0.062902,-0.048685;;,
+ 49;4; -0.694552, 0.715031, 0.062396,-0.049354;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_back}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; -0.013083, 2.483388,-0.152575;;,
+ 1;3; -0.013083, 2.483388,-0.152575;;,
+ 2;3; -0.013083, 2.483388,-0.152575;;,
+ 3;3; -0.013083, 2.483388,-0.152575;;,
+ 4;3; -0.013083, 2.483388,-0.152575;;,
+ 5;3; -0.013083, 2.483388,-0.152575;;,
+ 6;3; -0.013083, 2.483388,-0.152575;;,
+ 7;3; -0.013083, 2.483388,-0.152575;;,
+ 8;3; -0.013083, 2.483388,-0.152575;;,
+ 9;3; -0.013083, 2.483388,-0.152575;;,
+ 10;3; -0.013083, 2.483388,-0.152575;;,
+ 11;3; -0.013083, 2.483388,-0.152575;;,
+ 12;3; -0.013083, 2.483388,-0.152575;;,
+ 13;3; -0.013083, 2.483388,-0.152575;;,
+ 14;3; -0.013083, 2.483388,-0.152575;;,
+ 15;3; -0.013083, 2.483388,-0.152575;;,
+ 16;3; -0.013083, 2.483388,-0.152575;;,
+ 17;3; -0.013083, 2.483388,-0.152575;;,
+ 18;3; -0.013083, 2.483388,-0.152575;;,
+ 19;3; -0.013083, 2.483388,-0.152575;;,
+ 20;3; -0.013083, 2.483388,-0.152575;;,
+ 21;3; -0.013083, 2.483388,-0.152575;;,
+ 22;3; -0.013083, 2.483388,-0.152575;;,
+ 23;3; -0.013083, 2.483388,-0.152575;;,
+ 24;3; -0.013083, 2.483388,-0.152575;;,
+ 25;3; -0.013083, 2.483388,-0.152575;;,
+ 26;3; -0.013083, 2.483388,-0.152575;;,
+ 27;3; -0.013083, 2.483388,-0.152575;;,
+ 28;3; -0.013083, 2.483388,-0.152575;;,
+ 29;3; -0.013083, 2.483388,-0.152575;;,
+ 30;3; -0.013083, 2.483388,-0.152575;;,
+ 31;3; -0.013083, 2.483388,-0.152575;;,
+ 32;3; -0.013083, 2.483388,-0.152575;;,
+ 33;3; -0.013083, 2.483388,-0.152575;;,
+ 34;3; -0.013083, 2.483388,-0.152575;;,
+ 35;3; -0.013083, 2.483388,-0.152575;;,
+ 36;3; -0.013083, 2.483388,-0.152575;;,
+ 37;3; -0.013083, 2.483388,-0.152575;;,
+ 38;3; -0.013083, 2.483388,-0.152575;;,
+ 39;3; -0.013083, 2.483388,-0.152575;;,
+ 40;3; -0.013083, 2.483388,-0.152575;;,
+ 41;3; -0.013083, 2.483388,-0.152575;;,
+ 42;3; -0.013083, 2.483388,-0.152575;;,
+ 43;3; -0.013083, 2.483388,-0.152575;;,
+ 44;3; -0.013083, 2.483388,-0.152575;;,
+ 45;3; -0.013083, 2.483388,-0.152575;;,
+ 46;3; -0.013083, 2.483388,-0.152575;;,
+ 47;3; -0.013083, 2.483388,-0.152575;;,
+ 48;3; -0.013083, 2.483388,-0.152575;;,
+ 49;3; -0.013083, 2.483388,-0.152575;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 1;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 2;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 3;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 4;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 5;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 6;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 7;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 8;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 9;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 10;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 11;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 12;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 13;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 14;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 15;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 16;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 17;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 18;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 19;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 20;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 21;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 22;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 23;4; -0.000000, 0.999943, 0.010701,-0.000000;;,
+ 24;4; 0.130519, 0.991388, 0.010609, 0.001397;;,
+ 25;4; 0.168031, 0.986326, 0.010555, 0.001797;;,
+ 26;4; 0.192937, 0.982312, 0.010512, 0.002064;;,
+ 27;4; 0.207254, 0.979400, 0.010481, 0.002218;;,
+ 28;4; 0.213957, 0.977524, 0.010461, 0.002290;;,
+ 29;4; 0.216150, 0.976531, 0.010450, 0.002313;;,
+ 30;4; 0.216427, 0.976240, 0.010447, 0.002316;;,
+ 31;4; 0.216150, 0.976619, 0.010451, 0.002313;;,
+ 32;4; 0.213954, 0.977830, 0.010464, 0.002290;;,
+ 33;4; 0.207242, 0.979956, 0.010487, 0.002218;;,
+ 34;4; 0.192910, 0.983007, 0.010520, 0.002064;;,
+ 35;4; 0.167995, 0.986883, 0.010561, 0.001797;;,
+ 36;4; 0.130519, 0.991388, 0.010609, 0.001397;;,
+ 37;4; 0.056614, 0.998339, 0.010684, 0.000606;;,
+ 38;4; 0.058708, 0.998193, 0.010682, 0.000628;;,
+ 39;4; 0.063994, 0.997824, 0.010678, 0.000685;;,
+ 40;4; 0.070663, 0.997358, 0.010673, 0.000756;;,
+ 41;4; 0.076873, 0.996924, 0.010669, 0.000823;;,
+ 42;4; 0.081185, 0.996623, 0.010665, 0.000869;;,
+ 43;4; 0.082728, 0.996515, 0.010664, 0.000885;;,
+ 44;4; 0.081115, 0.996515, 0.010664, 0.000903;;,
+ 45;4; 0.076422, 0.996515, 0.010664, 0.000953;;,
+ 46;4; 0.069674, 0.996515, 0.010664, 0.001025;;,
+ 47;4; 0.062927, 0.996515, 0.010664, 0.001097;;,
+ 48;4; 0.058233, 0.996515, 0.010664, 0.001147;;,
+ 49;4; 0.056620, 0.996515, 0.010664, 0.001165;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_root_001}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; 0.108388, 3.011908,-0.000000;;,
+ 1;3; 0.108388, 3.011908,-0.000000;;,
+ 2;3; 0.108388, 3.011908,-0.000000;;,
+ 3;3; 0.108388, 3.011908,-0.000000;;,
+ 4;3; 0.108388, 3.011908,-0.000000;;,
+ 5;3; 0.108388, 3.011908,-0.000000;;,
+ 6;3; 0.108388, 3.011908,-0.000000;;,
+ 7;3; 0.108388, 3.011908,-0.000000;;,
+ 8;3; 0.108388, 3.011908,-0.000000;;,
+ 9;3; 0.108388, 3.011908,-0.000000;;,
+ 10;3; 0.108388, 3.011908,-0.000000;;,
+ 11;3; 0.108388, 3.011908,-0.000000;;,
+ 12;3; 0.108388, 3.011908,-0.000000;;,
+ 13;3; 0.108388, 3.011908,-0.000000;;,
+ 14;3; 0.108388, 3.011908,-0.000000;;,
+ 15;3; 0.108388, 3.011908,-0.000000;;,
+ 16;3; 0.108388, 3.011908,-0.000000;;,
+ 17;3; 0.108388, 3.011908,-0.000000;;,
+ 18;3; 0.108388, 3.011908,-0.000000;;,
+ 19;3; 0.108388, 3.011908,-0.000000;;,
+ 20;3; 0.108388, 3.011908,-0.000000;;,
+ 21;3; 0.108388, 3.011908,-0.000000;;,
+ 22;3; 0.108388, 3.011908,-0.000000;;,
+ 23;3; 0.108388, 3.011908,-0.000000;;,
+ 24;3; 0.108388, 3.011908,-0.000000;;,
+ 25;3; 0.108388, 3.011908,-0.000000;;,
+ 26;3; 0.108388, 3.011908,-0.000000;;,
+ 27;3; 0.108388, 3.011908,-0.000000;;,
+ 28;3; 0.108388, 3.011908,-0.000000;;,
+ 29;3; 0.108388, 3.011908,-0.000000;;,
+ 30;3; 0.108388, 3.011908,-0.000000;;,
+ 31;3; 0.108388, 3.011908,-0.000000;;,
+ 32;3; 0.108388, 3.011908,-0.000000;;,
+ 33;3; 0.108388, 3.011908,-0.000000;;,
+ 34;3; 0.108388, 3.011908,-0.000000;;,
+ 35;3; 0.108388, 3.011908,-0.000000;;,
+ 36;3; 0.108388, 3.011908,-0.000000;;,
+ 37;3; 0.108388, 3.011908,-0.000000;;,
+ 38;3; 0.111282, 3.014802, 0.002893;;,
+ 39;3; 0.102914, 3.006433,-0.005475;;,
+ 40;3; 0.100667, 3.004187,-0.007722;;,
+ 41;3; 0.117499, 3.021019, 0.009111;;,
+ 42;3; 0.107302, 3.010822,-0.001086;;,
+ 43;3; 0.105187, 3.008707,-0.003202;;,
+ 44;3; 0.101925, 3.005445,-0.006463;;,
+ 45;3; 0.116975, 3.020495, 0.008586;;,
+ 46;3; 0.110424, 3.013944, 0.002036;;,
+ 47;3; 0.119450, 3.022970, 0.011062;;,
+ 48;3; 0.118807, 3.022327, 0.010418;;,
+ 49;3; 0.108388, 3.011908,-0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_root_002}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; -0.157125, 2.995103,-0.000000;;,
+ 1;3; -0.157125, 2.995103,-0.000000;;,
+ 2;3; -0.157125, 2.995103,-0.000000;;,
+ 3;3; -0.157125, 2.995103,-0.000000;;,
+ 4;3; -0.157125, 2.995103,-0.000000;;,
+ 5;3; -0.157125, 2.995103,-0.000000;;,
+ 6;3; -0.157125, 2.995103,-0.000000;;,
+ 7;3; -0.157125, 2.995103,-0.000000;;,
+ 8;3; -0.157125, 2.995103,-0.000000;;,
+ 9;3; -0.157125, 2.995103,-0.000000;;,
+ 10;3; -0.157125, 2.995103,-0.000000;;,
+ 11;3; -0.157125, 2.995103,-0.000000;;,
+ 12;3; -0.157125, 2.995103,-0.000000;;,
+ 13;3; -0.157125, 2.995103,-0.000000;;,
+ 14;3; -0.157125, 2.995103,-0.000000;;,
+ 15;3; -0.157125, 2.995103,-0.000000;;,
+ 16;3; -0.157125, 2.995103,-0.000000;;,
+ 17;3; -0.157125, 2.995103,-0.000000;;,
+ 18;3; -0.157125, 2.995103,-0.000000;;,
+ 19;3; -0.157125, 2.995103,-0.000000;;,
+ 20;3; -0.157125, 2.995103,-0.000000;;,
+ 21;3; -0.157125, 2.995103,-0.000000;;,
+ 22;3; -0.157125, 2.995103,-0.000000;;,
+ 23;3; -0.157125, 2.995103,-0.000000;;,
+ 24;3; -0.157125, 2.995103,-0.000000;;,
+ 25;3; -0.157125, 2.995103,-0.000000;;,
+ 26;3; -0.157125, 2.995103,-0.000000;;,
+ 27;3; -0.157125, 2.995103,-0.000000;;,
+ 28;3; -0.157125, 2.995103,-0.000000;;,
+ 29;3; -0.157125, 2.995103,-0.000000;;,
+ 30;3; -0.157125, 2.995103,-0.000000;;,
+ 31;3; -0.157125, 2.995103,-0.000000;;,
+ 32;3; -0.157125, 2.995103,-0.000000;;,
+ 33;3; -0.157125, 2.995103,-0.000000;;,
+ 34;3; -0.157125, 2.995103,-0.000000;;,
+ 35;3; -0.157125, 2.995103,-0.000000;;,
+ 36;3; -0.157125, 2.995103,-0.000000;;,
+ 37;3; -0.157125, 2.995103,-0.000000;;,
+ 38;3; -0.154231, 2.998278,-0.000000;;,
+ 39;3; -0.162599, 2.996521,-0.000000;;,
+ 40;3; -0.164846, 2.997358,-0.000000;;,
+ 41;3; -0.148014, 3.013568,-0.000000;;,
+ 42;3; -0.158211, 2.983142,-0.000000;;,
+ 43;3; -0.160326, 2.976145,-0.000000;;,
+ 44;3; -0.163588, 2.992257,-0.000000;;,
+ 45;3; -0.148538, 2.988948,-0.000000;;,
+ 46;3; -0.155088, 2.985346,-0.000000;;,
+ 47;3; -0.146063, 2.997540,-0.000000;;,
+ 48;3; -0.146706, 2.989561,-0.000000;;,
+ 49;3; -0.157125, 2.995103,-0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Plane}
+ AnimationKey { //Position
+ 2;
+ 50;
+ 0;3; -0.006223, 0.000000,-0.013009;;,
+ 1;3; -0.006223, 0.000000,-0.013009;;,
+ 2;3; -0.006223, 0.000000,-0.013009;;,
+ 3;3; -0.006223, 0.000000,-0.013009;;,
+ 4;3; -0.006223, 0.000000,-0.013009;;,
+ 5;3; -0.006223, 0.000000,-0.013009;;,
+ 6;3; -0.006223, 0.000000,-0.013009;;,
+ 7;3; -0.006223, 0.000000,-0.013009;;,
+ 8;3; -0.006223, 0.000000,-0.013009;;,
+ 9;3; -0.006223, 0.000000,-0.013009;;,
+ 10;3; -0.006223, 0.000000,-0.013009;;,
+ 11;3; -0.006223, 0.000000,-0.013009;;,
+ 12;3; -0.006223, 0.000000,-0.013009;;,
+ 13;3; -0.006223, 0.000000,-0.013009;;,
+ 14;3; -0.006223, 0.000000,-0.013009;;,
+ 15;3; -0.006223, 0.000000,-0.013009;;,
+ 16;3; -0.006223, 0.000000,-0.013009;;,
+ 17;3; -0.006223, 0.000000,-0.013009;;,
+ 18;3; -0.006223, 0.000000,-0.013009;;,
+ 19;3; -0.006223, 0.000000,-0.013009;;,
+ 20;3; -0.006223, 0.000000,-0.013009;;,
+ 21;3; -0.006223, 0.000000,-0.013009;;,
+ 22;3; -0.006223, 0.000000,-0.013009;;,
+ 23;3; -0.006223, 0.000000,-0.013009;;,
+ 24;3; -0.006223, 0.000000,-0.013009;;,
+ 25;3; -0.006223, 0.000000,-0.013009;;,
+ 26;3; -0.006223, 0.000000,-0.013009;;,
+ 27;3; -0.006223, 0.000000,-0.013009;;,
+ 28;3; -0.006223, 0.000000,-0.013009;;,
+ 29;3; -0.006223, 0.000000,-0.013009;;,
+ 30;3; -0.006223, 0.000000,-0.013009;;,
+ 31;3; -0.006223, 0.000000,-0.013009;;,
+ 32;3; -0.006223, 0.000000,-0.013009;;,
+ 33;3; -0.006223, 0.000000,-0.013009;;,
+ 34;3; -0.006223, 0.000000,-0.013009;;,
+ 35;3; -0.006223, 0.000000,-0.013009;;,
+ 36;3; -0.006223, 0.000000,-0.013009;;,
+ 37;3; -0.006223, 0.000000,-0.013009;;,
+ 38;3; -0.006223, 0.000000,-0.013009;;,
+ 39;3; -0.006223, 0.000000,-0.013009;;,
+ 40;3; -0.006223, 0.000000,-0.013009;;,
+ 41;3; -0.006223, 0.000000,-0.013009;;,
+ 42;3; -0.006223, 0.000000,-0.013009;;,
+ 43;3; -0.006223, 0.000000,-0.013009;;,
+ 44;3; -0.006223, 0.000000,-0.013009;;,
+ 45;3; -0.006223, 0.000000,-0.013009;;,
+ 46;3; -0.006223, 0.000000,-0.013009;;,
+ 47;3; -0.006223, 0.000000,-0.013009;;,
+ 48;3; -0.006223, 0.000000,-0.013009;;,
+ 49;3; -0.006223, 0.000000,-0.013009;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 50;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 50;
+ 0;3; 0.800000, 1.000000, 1.000000;;,
+ 1;3; 0.800000, 1.000000, 1.000000;;,
+ 2;3; 0.800000, 1.000000, 1.000000;;,
+ 3;3; 0.800000, 1.000000, 1.000000;;,
+ 4;3; 0.800000, 1.000000, 1.000000;;,
+ 5;3; 0.800000, 1.000000, 1.000000;;,
+ 6;3; 0.800000, 1.000000, 1.000000;;,
+ 7;3; 0.800000, 1.000000, 1.000000;;,
+ 8;3; 0.800000, 1.000000, 1.000000;;,
+ 9;3; 0.800000, 1.000000, 1.000000;;,
+ 10;3; 0.800000, 1.000000, 1.000000;;,
+ 11;3; 0.800000, 1.000000, 1.000000;;,
+ 12;3; 0.800000, 1.000000, 1.000000;;,
+ 13;3; 0.800000, 1.000000, 1.000000;;,
+ 14;3; 0.800000, 1.000000, 1.000000;;,
+ 15;3; 0.800000, 1.000000, 1.000000;;,
+ 16;3; 0.800000, 1.000000, 1.000000;;,
+ 17;3; 0.800000, 1.000000, 1.000000;;,
+ 18;3; 0.800000, 1.000000, 1.000000;;,
+ 19;3; 0.800000, 1.000000, 1.000000;;,
+ 20;3; 0.800000, 1.000000, 1.000000;;,
+ 21;3; 0.800000, 1.000000, 1.000000;;,
+ 22;3; 0.800000, 1.000000, 1.000000;;,
+ 23;3; 0.800000, 1.000000, 1.000000;;,
+ 24;3; 0.800000, 1.000000, 1.000000;;,
+ 25;3; 0.800000, 1.000000, 1.000000;;,
+ 26;3; 0.800000, 1.000000, 1.000000;;,
+ 27;3; 0.800000, 1.000000, 1.000000;;,
+ 28;3; 0.800000, 1.000000, 1.000000;;,
+ 29;3; 0.800000, 1.000000, 1.000000;;,
+ 30;3; 0.800000, 1.000000, 1.000000;;,
+ 31;3; 0.800000, 1.000000, 1.000000;;,
+ 32;3; 0.800000, 1.000000, 1.000000;;,
+ 33;3; 0.800000, 1.000000, 1.000000;;,
+ 34;3; 0.800000, 1.000000, 1.000000;;,
+ 35;3; 0.800000, 1.000000, 1.000000;;,
+ 36;3; 0.800000, 1.000000, 1.000000;;,
+ 37;3; 0.800000, 1.000000, 1.000000;;,
+ 38;3; 0.800000, 1.000000, 1.000000;;,
+ 39;3; 0.800000, 1.000000, 1.000000;;,
+ 40;3; 0.800000, 1.000000, 1.000000;;,
+ 41;3; 0.800000, 1.000000, 1.000000;;,
+ 42;3; 0.800000, 1.000000, 1.000000;;,
+ 43;3; 0.800000, 1.000000, 1.000000;;,
+ 44;3; 0.800000, 1.000000, 1.000000;;,
+ 45;3; 0.800000, 1.000000, 1.000000;;,
+ 46;3; 0.800000, 1.000000, 1.000000;;,
+ 47;3; 0.800000, 1.000000, 1.000000;;,
+ 48;3; 0.800000, 1.000000, 1.000000;;,
+ 49;3; 0.800000, 1.000000, 1.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/models/mobs_rat.png b/carbone_mobs/models/mobs_rat.png
new file mode 100644
index 0000000..9e9e43b
--- /dev/null
+++ b/carbone_mobs/models/mobs_rat.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_rat.x b/carbone_mobs/models/mobs_rat.x
new file mode 100755
index 0000000..f5a69bd
--- /dev/null
+++ b/carbone_mobs/models/mobs_rat.x
@@ -0,0 +1,699 @@
+xof 0303txt 0032
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Cube_004 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.000000,-0.000000, 1.000000;;
+ }
+ Mesh { //Cube_005 Mesh
+ 176;
+ 0.336296; 1.101631; 1.340231;,
+ 1.524099; 1.101631; 1.348138;,
+ 1.516191; 1.101631; 2.535941;,
+ 0.328389; 1.101631; 2.528034;,
+ 0.328389; 1.101631; 2.528034;,
+ 0.336296; 1.101631; 1.340231;,
+ 0.336296; 1.101631; 1.340231;,
+ 0.328389; 1.101631; 2.528034;,
+ 1.524099; 1.101631; 1.348138;,
+ 1.516191; 1.101631; 2.535941;,
+ 1.516191; 1.101631; 2.535941;,
+ 1.524099; 1.101631; 1.348138;,
+ 1.516191; 1.101631; 2.535941;,
+ 0.328389; 1.101631; 2.528034;,
+ 0.328389; 1.101631; 2.528034;,
+ 1.516191; 1.101631; 2.535941;,
+ 0.336296; 1.101631; 1.340231;,
+ 1.524099; 1.101631; 1.348138;,
+ 1.524099; 1.101631; 1.348138;,
+ 0.336296; 1.101631; 1.340231;,
+ -1.564649; 0.817637; 1.334045;,
+ -1.564649; 1.101631; 1.334045;,
+ -1.596119; 1.101631; 2.521457;,
+ -1.596119; 0.817637; 2.521457;,
+ -1.564649; 1.101631; 1.334045;,
+ -0.377237; 1.101631; 1.365515;,
+ -0.408707; 1.101631; 2.552927;,
+ -1.596119; 1.101631; 2.521457;,
+ -0.377237; 1.101631; 1.365515;,
+ -0.377237; 0.817638; 1.365515;,
+ -0.408707; 0.817638; 2.552928;,
+ -0.408707; 1.101631; 2.552927;,
+ -0.377237; 0.817638; 1.365515;,
+ -1.564649; 0.817637; 1.334045;,
+ -1.596119; 0.817637; 2.521457;,
+ -0.408707; 0.817638; 2.552928;,
+ -0.377237; 0.817638; 1.365515;,
+ -0.377237; 1.101631; 1.365515;,
+ -1.564649; 1.101631; 1.334045;,
+ -1.564649; 0.817637; 1.334045;,
+ -1.596119; 0.817637; 2.521457;,
+ -1.596119; 1.101631; 2.521457;,
+ -0.408707; 1.101631; 2.552927;,
+ -0.408707; 0.817638; 2.552928;,
+ 0.336296; 0.817638; 1.340231;,
+ 0.336296; 1.101631; 1.340231;,
+ 0.328389; 1.101631; 2.528034;,
+ 0.328389; 0.817638; 2.528034;,
+ 1.524099; 1.101631; 1.348138;,
+ 1.524099; 0.817637; 1.348139;,
+ 1.516192; 0.817637; 2.535942;,
+ 1.516191; 1.101631; 2.535941;,
+ 1.524099; 0.817637; 1.348139;,
+ 0.336296; 0.817638; 1.340231;,
+ 0.328389; 0.817638; 2.528034;,
+ 1.516192; 0.817637; 2.535942;,
+ 1.524099; 0.817637; 1.348139;,
+ 1.524099; 1.101631; 1.348138;,
+ 0.336296; 1.101631; 1.340231;,
+ 0.336296; 0.817638; 1.340231;,
+ 0.328389; 0.817638; 2.528034;,
+ 0.328389; 1.101631; 2.528034;,
+ 1.516191; 1.101631; 2.535941;,
+ 1.516192; 0.817637; 2.535942;,
+ -0.117394;-5.732621; 0.182654;,
+ -0.186090;-2.477838; 0.265415;,
+ -0.186090;-2.477838; 0.668304;,
+ -0.117394;-5.732621; 0.448150;,
+ -0.186090;-2.477838; 0.265415;,
+ 0.216799;-2.477838; 0.265415;,
+ 0.216799;-2.477838; 0.668304;,
+ -0.186090;-2.477838; 0.668304;,
+ 0.216799;-2.477838; 0.265415;,
+ 0.148102;-5.732621; 0.182654;,
+ 0.148102;-5.732621; 0.448150;,
+ 0.216799;-2.477838; 0.668304;,
+ 0.148102;-5.732621; 0.182654;,
+ -0.117394;-5.732621; 0.182654;,
+ -0.117394;-5.732621; 0.448150;,
+ 0.148102;-5.732621; 0.448150;,
+ 0.148102;-5.732621; 0.182654;,
+ 0.216799;-2.477838; 0.265415;,
+ -0.186090;-2.477838; 0.265415;,
+ -0.117394;-5.732621; 0.182654;,
+ -0.117394;-5.732621; 0.448150;,
+ -0.186090;-2.477838; 0.668304;,
+ 0.216799;-2.477838; 0.668304;,
+ 0.148102;-5.732621; 0.448150;,
+ -0.933130;-2.573576; 0.130200;,
+ -0.933130; 0.667430; 0.130200;,
+ -0.933130; 0.667430; 2.038438;,
+ -0.933130;-2.573576; 2.038438;,
+ -0.933130; 0.667430; 0.130200;,
+ 0.963839; 0.667430; 0.130200;,
+ 0.963839; 0.667430; 2.038438;,
+ -0.933130; 0.667430; 2.038438;,
+ 0.963839; 0.667430; 0.130200;,
+ 0.963839;-2.573576; 0.130200;,
+ 0.963839;-2.573576; 2.038438;,
+ 0.963839; 0.667430; 2.038438;,
+ 0.963839;-2.573576; 0.130200;,
+ -0.933130;-2.573576; 0.130200;,
+ -0.933130;-2.573576; 2.038438;,
+ 0.963839;-2.573576; 2.038438;,
+ 0.963839;-2.573576; 0.130200;,
+ 0.963839; 0.667430; 0.130200;,
+ -0.933130; 0.667430; 0.130200;,
+ -0.933130;-2.573576; 0.130200;,
+ -0.933130;-2.573576; 2.038438;,
+ -0.933130; 0.667430; 2.038438;,
+ 0.963839; 0.667430; 2.038438;,
+ 0.963839;-2.573576; 2.038438;,
+ -0.694354; 0.619175; 0.175005;,
+ -0.469990; 2.744857; 0.240792;,
+ -0.469990; 2.744857; 1.874725;,
+ -0.694354; 0.619175; 1.814122;,
+ 0.015354; 2.744857; 0.240792;,
+ 0.500698; 2.744857; 0.240792;,
+ 0.500698; 2.744857; 1.874725;,
+ 0.015354; 2.744857; 1.874725;,
+ 0.500698; 2.744857; 0.240792;,
+ 0.725062; 0.619175; 0.175005;,
+ 0.725062; 0.619175; 1.814122;,
+ 0.500698; 2.744857; 1.874725;,
+ 0.015354; 0.619175; 0.175005;,
+ -0.694354; 0.619175; 0.175005;,
+ -0.694354; 0.619175; 1.814122;,
+ 0.015354; 0.619175; 1.814122;,
+ 0.725062; 0.619175; 0.175005;,
+ 0.500698; 2.744857; 0.240792;,
+ 0.015354; 2.744857; 0.240792;,
+ 0.015354; 0.619175; 0.175005;,
+ -0.694354; 0.619175; 1.814122;,
+ -0.469990; 2.744857; 1.874725;,
+ 0.015354; 2.744857; 1.874725;,
+ 0.015354; 0.619175; 1.814122;,
+ -0.281961; 2.574486; 0.745273;,
+ -0.281961; 3.169116; 0.745273;,
+ -0.281961; 3.169116; 1.339903;,
+ -0.281961; 2.574486; 1.339903;,
+ -0.281961; 3.169116; 0.745273;,
+ 0.312669; 3.169116; 0.745273;,
+ 0.312669; 3.169116; 1.339903;,
+ -0.281961; 3.169116; 1.339903;,
+ 0.312669; 3.169116; 0.745273;,
+ 0.312669; 2.574486; 0.745273;,
+ 0.312669; 2.574486; 1.339903;,
+ 0.312669; 3.169116; 1.339903;,
+ 0.312669; 2.574486; 0.745273;,
+ -0.281961; 2.574486; 0.745273;,
+ -0.281961; 2.574486; 1.339903;,
+ 0.312669; 2.574486; 1.339903;,
+ 0.312669; 2.574486; 0.745273;,
+ 0.312669; 3.169116; 0.745273;,
+ -0.281961; 3.169116; 0.745273;,
+ -0.281961; 2.574486; 0.745273;,
+ -0.281961; 2.574486; 1.339903;,
+ -0.281961; 3.169116; 1.339903;,
+ 0.312669; 3.169116; 1.339903;,
+ 0.312669; 2.574486; 1.339903;,
+ -0.469990; 2.744857; 0.240792;,
+ 0.015354; 2.744857; 0.240792;,
+ 0.015354; 2.744857; 1.874725;,
+ -0.469990; 2.744857; 1.874725;,
+ 0.725062; 0.619175; 0.175005;,
+ 0.015354; 0.619175; 0.175005;,
+ 0.015354; 0.619175; 1.814122;,
+ 0.725062; 0.619175; 1.814122;,
+ 0.015354; 0.619175; 0.175005;,
+ 0.015354; 2.744857; 0.240792;,
+ -0.469990; 2.744857; 0.240792;,
+ -0.694354; 0.619175; 0.175005;,
+ 0.015354; 0.619175; 1.814122;,
+ 0.015354; 2.744857; 1.874725;,
+ 0.500698; 2.744857; 1.874725;,
+ 0.725062; 0.619175; 1.814122;;
+ 44;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;;
+ MeshNormals { //Cube_005 Normals
+ 176;
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ -0.999649; 0.000000;-0.026494;,
+ -0.999649; 0.000000;-0.026494;,
+ -0.999649; 0.000000;-0.026494;,
+ -0.999649; 0.000000;-0.026494;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.999649; 0.000001; 0.026494;,
+ 0.999649; 0.000001; 0.026494;,
+ 0.999649; 0.000001; 0.026494;,
+ 0.999649; 0.000001; 0.026494;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.026494; 0.000000;-0.999649;,
+ 0.026494; 0.000000;-0.999649;,
+ 0.026494; 0.000000;-0.999649;,
+ 0.026494; 0.000000;-0.999649;,
+ -0.026494; 0.000000; 0.999649;,
+ -0.026494; 0.000000; 0.999649;,
+ -0.026494; 0.000000; 0.999649;,
+ -0.026494; 0.000000; 0.999649;,
+ -0.999978;-0.000000;-0.006657;,
+ -0.999978;-0.000000;-0.006657;,
+ -0.999978;-0.000000;-0.006657;,
+ -0.999978;-0.000000;-0.006657;,
+ 0.999978; 0.000001; 0.006657;,
+ 0.999978; 0.000001; 0.006657;,
+ 0.999978; 0.000001; 0.006657;,
+ 0.999978; 0.000001; 0.006657;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ 0.006657; 0.000000;-0.999978;,
+ 0.006657; 0.000000;-0.999978;,
+ 0.006657; 0.000000;-0.999978;,
+ 0.006657; 0.000000;-0.999978;,
+ -0.006657; 0.000000; 0.999978;,
+ -0.006657; 0.000000; 0.999978;,
+ -0.006657; 0.000000; 0.999978;,
+ -0.006657; 0.000000; 0.999978;,
+ -0.999777;-0.021102; 0.000000;,
+ -0.999777;-0.021102; 0.000000;,
+ -0.999777;-0.021102; 0.000000;,
+ -0.999777;-0.021102; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.999777;-0.021102; 0.000000;,
+ 0.999777;-0.021102; 0.000000;,
+ 0.999777;-0.021102; 0.000000;,
+ 0.999777;-0.021102; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.025419;-0.999677;,
+ 0.000000; 0.025419;-0.999677;,
+ 0.000000; 0.025419;-0.999677;,
+ 0.000000; 0.025419;-0.999677;,
+ 0.000000;-0.067486; 0.997720;,
+ 0.000000;-0.067486; 0.997720;,
+ 0.000000;-0.067486; 0.997720;,
+ 0.000000;-0.067486; 0.997720;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.994476; 0.104966; 0.000000;,
+ -0.994476; 0.104966; 0.000000;,
+ -0.994476; 0.104966; 0.000000;,
+ -0.994476; 0.104966; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.994476; 0.104966; 0.000000;,
+ 0.994476; 0.104966; 0.000000;,
+ 0.994476; 0.104966; 0.000000;,
+ 0.994476; 0.104966; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000;-0.028498; 0.999594;,
+ 0.000000;-0.028498; 0.999594;,
+ 0.000000;-0.028498; 0.999594;,
+ 0.000000;-0.028498; 0.999594;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000; 0.030934;-0.999521;,
+ 0.000000;-0.028498; 0.999594;,
+ 0.000000;-0.028498; 0.999594;,
+ 0.000000;-0.028498; 0.999594;,
+ 0.000000;-0.028498; 0.999594;;
+ 44;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;;
+ } //End of Cube_005 Normals
+ MeshMaterialList { //Cube_005 Material List
+ 1;
+ 44;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material_001 {
+ 0.640000; 0.640000; 0.640000; 1.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_005 Material List
+ MeshTextureCoords { //Cube_005 UV Coordinates
+ 176;
+ 0.635817; 0.275819;,
+ 0.635817; 0.046728;,
+ 0.864908; 0.046728;,
+ 0.864908; 0.275819;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.864346; 0.986031;,
+ 0.783570; 0.986031;,
+ 0.783570; 0.648180;,
+ 0.864346; 0.648180;,
+ 0.635817; 0.274669;,
+ 0.635817; 0.045578;,
+ 0.864908; 0.045578;,
+ 0.864908; 0.274669;,
+ 0.863901; 0.987104;,
+ 0.783126; 0.987104;,
+ 0.783126; 0.649254;,
+ 0.863901; 0.649254;,
+ 0.991231; 0.987104;,
+ 0.653381; 0.987104;,
+ 0.653381; 0.649254;,
+ 0.991232; 0.649254;,
+ 0.991232; 0.777658;,
+ 0.991232; 0.858433;,
+ 0.653381; 0.858433;,
+ 0.653381; 0.777658;,
+ 0.655529; 0.859063;,
+ 0.655529; 0.778288;,
+ 0.993379; 0.778288;,
+ 0.993379; 0.859063;,
+ 0.335443; 0.861158;,
+ 0.265926; 0.861158;,
+ 0.265926; 0.570397;,
+ 0.335443; 0.570397;,
+ 0.334205; 0.859816;,
+ 0.264688; 0.859816;,
+ 0.264688; 0.569055;,
+ 0.334205; 0.569055;,
+ 0.444367; 0.858474;,
+ 0.153606; 0.858474;,
+ 0.153606; 0.567713;,
+ 0.444367; 0.567713;,
+ 0.333996; 0.859816;,
+ 0.264479; 0.859816;,
+ 0.264479; 0.569055;,
+ 0.333996; 0.569055;,
+ 0.264228; 0.568595;,
+ 0.333745; 0.568595;,
+ 0.333745; 0.859357;,
+ 0.264228; 0.859357;,
+ 0.910309; 0.067094;,
+ 0.990888; 0.067068;,
+ 0.991634; 0.077574;,
+ 0.911094; 0.077574;,
+ 0.910309; 0.024149;,
+ 0.921538; 0.024149;,
+ 0.921538; 0.035379;,
+ 0.910309; 0.035379;,
+ 0.990708; 0.067037;,
+ 0.910309; 0.067041;,
+ 0.910896; 0.056534;,
+ 0.991418; 0.056534;,
+ 0.928966; 0.035379;,
+ 0.921565; 0.035379;,
+ 0.921565; 0.027979;,
+ 0.928966; 0.027979;,
+ 0.910595; 0.035408;,
+ 0.990869; 0.035406;,
+ 0.990583; 0.045937;,
+ 0.910309; 0.045939;,
+ 0.910597; 0.045966;,
+ 0.990951; 0.045966;,
+ 0.990662; 0.056507;,
+ 0.910309; 0.056507;,
+ 0.461795; 0.725720;,
+ 0.002369; 0.725720;,
+ 0.002369; 0.455219;,
+ 0.461795; 0.455219;,
+ 0.728915; 0.630399;,
+ 0.460011; 0.630399;,
+ 0.460011; 0.359898;,
+ 0.728915; 0.359898;,
+ 0.459622; 0.999805;,
+ 0.000195; 0.999805;,
+ 0.000195; 0.729304;,
+ 0.459622; 0.729304;,
+ 0.990155; 1.001469;,
+ 0.721251; 1.001469;,
+ 0.721251; 0.730968;,
+ 0.990155; 0.730968;,
+ 0.000987; 0.351616;,
+ 0.460413; 0.351616;,
+ 0.460413; 0.620520;,
+ 0.000987; 0.620520;,
+ 0.728915; 0.540378;,
+ 0.728915; 0.999805;,
+ 0.460011; 0.999805;,
+ 0.460011; 0.540378;,
+ 0.006594; 0.353635;,
+ 0.507556; 0.369053;,
+ 0.507556; 0.596553;,
+ 0.006594; 0.737794;,
+ 0.752538; 0.533913;,
+ 0.752538; 0.647662;,
+ 0.525038; 0.647662;,
+ 0.525038; 0.533913;,
+ 0.509703; 0.731028;,
+ 0.008741; 0.746446;,
+ 0.008741; 0.362287;,
+ 0.509703; 0.503529;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.003201; 0.349292;,
+ 0.501634; 0.401876;,
+ 0.501634; 0.515626;,
+ 0.003201; 0.515626;,
+ 0.529333; 0.186216;,
+ 0.171158; 0.150188;,
+ 0.171083; 0.071516;,
+ 0.529224; 0.071176;,
+ 0.636995; 0.428681;,
+ 0.636995; 0.545208;,
+ 0.520468; 0.545208;,
+ 0.520468; 0.428681;,
+ 0.340480; 0.361873;,
+ 0.452832; 0.361873;,
+ 0.452832; 0.474224;,
+ 0.340480; 0.474224;,
+ 0.453577; 0.475130;,
+ 0.341226; 0.475130;,
+ 0.341226; 0.362779;,
+ 0.453577; 0.362779;,
+ 0.453737; 0.472732;,
+ 0.341386; 0.472732;,
+ 0.341386; 0.360381;,
+ 0.453737; 0.360381;,
+ 0.454483; 0.362033;,
+ 0.454483; 0.474384;,
+ 0.342132; 0.474384;,
+ 0.342132; 0.362033;,
+ 0.342132; 0.472732;,
+ 0.342132; 0.360381;,
+ 0.454483; 0.360381;,
+ 0.454483; 0.472732;,
+ 0.752538; 0.420163;,
+ 0.752538; 0.533913;,
+ 0.525038; 0.533913;,
+ 0.525038; 0.420163;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.003201; 0.515626;,
+ 0.501634; 0.515626;,
+ 0.501634; 0.629375;,
+ 0.003201; 0.681959;,
+ 0.529223; 0.070318;,
+ 0.171082; 0.070658;,
+ 0.171157; 0.149330;,
+ 0.529332; 0.185358;;
+ } //End of Cube_005 UV Coordinates
+ } //End of Cube_005 Mesh
+ } //End of Cube_004
+} //End of Root Frame
diff --git a/carbone_mobs/models/mobs_rhino.png b/carbone_mobs/models/mobs_rhino.png
new file mode 100644
index 0000000..54df482
--- /dev/null
+++ b/carbone_mobs/models/mobs_rhino.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_sand_monster.png b/carbone_mobs/models/mobs_sand_monster.png
new file mode 100644
index 0000000..30a3511
--- /dev/null
+++ b/carbone_mobs/models/mobs_sand_monster.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_sand_monster.x b/carbone_mobs/models/mobs_sand_monster.x
new file mode 100755
index 0000000..52750d8
--- /dev/null
+++ b/carbone_mobs/models/mobs_sand_monster.x
@@ -0,0 +1,8573 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature_Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.001246, 1.000000;;
+ }
+ Frame Armature_Body {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.855036, 0.000000, 1.000000;;
+ }
+ Frame Armature_Bone_001 {
+ FrameTransformMatrix {
+ 0.995733, 0.092285,-0.000000, 0.000000,
+ 0.092285,-0.995732,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 0.225856, 0.800000, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_001
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ 0.995624,-0.093449,-0.000000, 0.000000,
+ -0.093449,-0.995624,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -0.238835, 0.800000, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_Bone_003 {
+ FrameTransformMatrix {
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ -0.144872, 0.061513, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_003
+ Frame Armature_Bone_004 {
+ FrameTransformMatrix {
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ 0.135398, 0.070410, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_004
+ Frame Armature_Bone_005 {
+ FrameTransformMatrix {
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.999976,-0.006964, 0.000000,
+ 0.000000, 0.006964, 0.999976, 0.000000,
+ -0.002513, 0.866015, 0.122502, 1.000000;;
+ }
+ Frame Armature_Bone_006 {
+ FrameTransformMatrix {
+ 0.101367,-0.994825,-0.006928, 0.000000,
+ 0.000001, 0.006964,-0.999976, 0.000000,
+ 0.994849, 0.101365, 0.000707, 0.000000,
+ -0.000000, 0.306782, 0.000000, 1.000000;;
+ }
+ Frame Armature_Bone_007 {
+ FrameTransformMatrix {
+ 0.101366, 0.000001, 0.994849, 0.000000,
+ 0.570623, 0.819152,-0.058142, 0.000000,
+ -0.814932, 0.573577, 0.083034, 0.000000,
+ 0.078315, 0.084604,-0.007980, 1.000000;;
+ }
+ } //End of Armature_Bone_007
+ } //End of Armature_Bone_006
+ } //End of Armature_Bone_005
+ Frame Armature_Body_001 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 0.187946,-0.206990, 1.000000;;
+ }
+ } //End of Armature_Body_001
+ Frame Armature_Body_002 {
+ FrameTransformMatrix {
+ 1.000000,-0.000000, 0.000000, 0.000000,
+ 0.000000,-1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 0.185728, 0.203380, 1.000000;;
+ }
+ } //End of Armature_Body_002
+ } //End of Armature_Body
+ Frame Armature_IK_Right_Leg {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ 0.135398, 0.015523, 0.000000, 1.000000;;
+ }
+ } //End of Armature_IK_Right_Leg
+ Frame Armature_IK_Left_Leg {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ -0.148583, 0.015523, 0.000000, 1.000000;;
+ }
+ } //End of Armature_IK_Left_Leg
+ Frame Armature_IK_Left_Hand {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ -0.316097, 0.754556, 0.000000, 1.000000;;
+ }
+ } //End of Armature_IK_Left_Hand
+ Frame Armature_IK_Right_hand {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000001, 0.000000,
+ -0.000000, 0.000001,-1.000000, 0.000000,
+ 0.304691, 0.744702, 0.000000, 1.000000;;
+ }
+ } //End of Armature_IK_Right_hand
+ Frame Armature_IK_head {
+ FrameTransformMatrix {
+ 1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.999976,-0.006964, 0.000000,
+ 0.000000, 0.006964, 0.999976, 0.000000,
+ -0.002513, 2.032632,-0.710142, 1.000000;;
+ }
+ } //End of Armature_IK_head
+ } //End of Armature_Root
+ Frame Sand_monster {
+ FrameTransformMatrix {
+ 0.746845, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.740784, 0.000000, 0.000000,
+ 0.000000, 0.000000, 0.740784, 0.000000,
+ -0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Mesh { //Cube_000 Mesh
+ 332;
+ -0.320902;-0.288770; 0.936493;,
+ -0.317184;-0.213477; 0.936493;,
+ -0.317184;-0.213477; 1.431149;,
+ -0.320902;-0.288770; 1.431149;,
+ -0.317184;-0.213477; 0.936493;,
+ -0.106107;-0.213477; 0.936493;,
+ -0.106107;-0.213477; 1.431149;,
+ -0.317184;-0.213477; 1.431149;,
+ -0.106107;-0.213477; 0.936493;,
+ -0.109825;-0.288770; 0.936493;,
+ -0.109825;-0.288770; 1.431149;,
+ -0.106107;-0.213477; 1.431149;,
+ -0.109825;-0.288770; 0.936493;,
+ -0.320902;-0.288770; 0.936493;,
+ -0.320902;-0.288770; 1.431149;,
+ -0.109825;-0.288770; 1.431149;,
+ -0.109825;-0.288770; 0.936493;,
+ -0.106107;-0.213477; 0.936493;,
+ -0.317184;-0.213477; 0.936493;,
+ -0.320902;-0.288770; 0.936493;,
+ -0.320902;-0.288770; 1.431149;,
+ -0.317184;-0.213477; 1.431149;,
+ -0.106107;-0.213477; 1.431149;,
+ -0.109825;-0.288770; 1.431149;,
+ 0.083499;-0.288770; 0.936493;,
+ 0.081037;-0.213477; 0.936493;,
+ 0.081037;-0.213477; 1.431149;,
+ 0.083499;-0.288770; 1.431149;,
+ 0.081037;-0.213477; 0.936493;,
+ 0.297651;-0.213477; 0.936493;,
+ 0.297651;-0.213477; 1.431149;,
+ 0.081037;-0.213477; 1.431149;,
+ 0.297651;-0.213477; 0.936493;,
+ 0.300113;-0.288770; 0.936493;,
+ 0.300113;-0.288770; 1.431149;,
+ 0.297651;-0.213477; 1.431149;,
+ 0.300113;-0.288770; 0.936493;,
+ 0.083499;-0.288770; 0.936493;,
+ 0.083499;-0.288770; 1.431149;,
+ 0.300113;-0.288770; 1.431149;,
+ 0.300113;-0.288770; 0.936493;,
+ 0.297651;-0.213477; 0.936493;,
+ 0.081037;-0.213477; 0.936493;,
+ 0.083499;-0.288770; 0.936493;,
+ 0.083499;-0.288770; 1.431149;,
+ 0.081037;-0.213477; 1.431149;,
+ 0.297651;-0.213477; 1.431149;,
+ 0.300113;-0.288770; 1.431149;,
+ -0.167631;-0.323303; 0.771836;,
+ -0.168232;-0.248010; 0.771836;,
+ -0.168232;-0.248010; 1.438394;,
+ -0.167631;-0.323303; 1.438394;,
+ -0.168232;-0.248010; 0.771836;,
+ 0.149701;-0.248010; 0.771836;,
+ 0.149701;-0.248010; 1.438394;,
+ -0.168232;-0.248010; 1.438394;,
+ 0.149701;-0.248010; 0.771836;,
+ 0.150301;-0.323303; 0.771836;,
+ 0.150301;-0.323303; 1.438394;,
+ 0.149701;-0.248010; 1.438394;,
+ 0.150301;-0.323303; 0.771836;,
+ -0.167631;-0.323303; 0.771836;,
+ -0.167631;-0.323303; 1.438394;,
+ 0.150301;-0.323303; 1.438394;,
+ 0.150301;-0.323303; 0.771836;,
+ 0.149701;-0.248010; 0.771836;,
+ -0.168232;-0.248010; 0.771836;,
+ -0.167631;-0.323303; 0.771836;,
+ -0.167631;-0.323303; 1.438394;,
+ -0.168232;-0.248010; 1.438394;,
+ 0.149701;-0.248010; 1.438394;,
+ 0.150301;-0.323303; 1.438394;,
+ 0.299315;-0.086578; 0.978290;,
+ 0.299315; 0.101043; 0.978290;,
+ 0.299315; 0.101043; 2.336183;,
+ 0.299315;-0.086578; 2.336183;,
+ 0.299315; 0.101043; 0.978290;,
+ 0.485414; 0.101043; 0.978290;,
+ 0.485414; 0.101043; 2.336183;,
+ 0.299315; 0.101043; 2.336183;,
+ 0.485414; 0.101043; 0.978290;,
+ 0.485414;-0.086578; 0.978290;,
+ 0.485414;-0.086578; 2.336183;,
+ 0.485414; 0.101043; 2.336183;,
+ 0.485414;-0.086578; 0.978290;,
+ 0.299315;-0.086578; 0.978290;,
+ 0.299315;-0.086578; 2.336183;,
+ 0.485414;-0.086578; 2.336183;,
+ 0.485414;-0.086578; 0.978290;,
+ 0.485414; 0.101043; 0.978290;,
+ 0.299315; 0.101043; 0.978290;,
+ 0.299315;-0.086578; 0.978290;,
+ 0.299315;-0.086578; 2.336183;,
+ 0.299315; 0.101043; 2.336183;,
+ 0.485414; 0.101043; 2.336183;,
+ 0.485414;-0.086578; 2.336183;,
+ 0.299346; 0.342641; 3.011453;,
+ 0.299346;-0.285110; 3.011453;,
+ -0.323311;-0.285110; 3.011453;,
+ -0.323311; 0.342641; 3.011453;,
+ 0.299346; 0.342641; 2.590401;,
+ 0.299346;-0.285110; 2.590401;,
+ 0.299346;-0.285110; 3.011453;,
+ 0.299346; 0.342641; 3.011453;,
+ 0.299346;-0.285110; 2.590401;,
+ -0.323311;-0.285110; 2.590401;,
+ -0.323311;-0.285110; 3.011453;,
+ 0.299346;-0.285110; 3.011453;,
+ -0.323311;-0.285110; 2.590401;,
+ -0.323311; 0.342641; 2.590401;,
+ -0.323311; 0.342641; 3.011453;,
+ -0.323311;-0.285110; 3.011453;,
+ -0.323311; 0.342641; 2.590401;,
+ 0.299346; 0.342641; 2.590401;,
+ 0.299346; 0.342641; 3.011453;,
+ -0.323311; 0.342641; 3.011453;,
+ 0.299346; 0.342641; 2.590401;,
+ -0.323311; 0.342641; 2.590401;,
+ -0.323311;-0.285110; 2.590401;,
+ 0.299346;-0.285110; 2.590401;,
+ 0.222447; 0.335658; 2.376415;,
+ 0.222447;-0.063423; 2.376415;,
+ 0.222447;-0.063423; 2.583114;,
+ 0.222447; 0.335658; 2.583114;,
+ 0.222447;-0.063423; 2.376415;,
+ -0.245101;-0.063423; 2.376415;,
+ -0.245101;-0.063423; 2.583114;,
+ 0.222447;-0.063423; 2.583114;,
+ -0.245101;-0.063423; 2.376415;,
+ -0.245101; 0.335658; 2.376415;,
+ -0.245101; 0.335658; 2.583114;,
+ -0.245101;-0.063423; 2.583114;,
+ -0.245101; 0.335658; 2.376415;,
+ 0.222447; 0.335658; 2.376415;,
+ 0.222447; 0.335658; 2.583114;,
+ -0.245101; 0.335658; 2.583114;,
+ -0.245101; 0.335658; 2.376415;,
+ -0.245101;-0.063423; 2.376415;,
+ 0.222447;-0.063423; 2.376415;,
+ 0.222447; 0.335658; 2.376415;,
+ -0.322044; 0.107436; 0.978290;,
+ -0.322043;-0.080185; 0.978290;,
+ -0.322043;-0.080185; 2.336183;,
+ -0.322044; 0.107436; 2.336183;,
+ -0.322043;-0.080185; 0.978290;,
+ -0.508142;-0.080185; 0.978290;,
+ -0.508142;-0.080185; 2.336183;,
+ -0.322043;-0.080185; 2.336183;,
+ -0.508142;-0.080185; 0.978290;,
+ -0.508142; 0.107436; 0.978290;,
+ -0.508142; 0.107436; 2.336183;,
+ -0.508142;-0.080185; 2.336183;,
+ -0.508142; 0.107436; 0.978290;,
+ -0.322044; 0.107436; 0.978290;,
+ -0.322044; 0.107436; 2.336183;,
+ -0.508142; 0.107436; 2.336183;,
+ -0.508142; 0.107436; 0.978290;,
+ -0.508142;-0.080185; 0.978290;,
+ -0.322043;-0.080185; 0.978290;,
+ -0.322044; 0.107436; 0.978290;,
+ -0.322044; 0.107436; 2.336183;,
+ -0.322043;-0.080185; 2.336183;,
+ -0.508142;-0.080185; 2.336183;,
+ -0.508142; 0.107436; 2.336183;,
+ 0.292988; 0.271646; 1.259217;,
+ 0.292988;-0.244395; 1.259217;,
+ 0.292988;-0.244395; 2.334600;,
+ 0.292988; 0.271646; 2.334600;,
+ 0.292988;-0.244395; 1.259217;,
+ -0.316111;-0.244395; 1.259217;,
+ -0.316111;-0.244395; 2.334600;,
+ 0.292988;-0.244395; 2.334600;,
+ -0.316111;-0.244395; 1.259217;,
+ -0.316111; 0.271646; 1.259217;,
+ -0.316111; 0.271646; 2.334600;,
+ -0.316111;-0.244395; 2.334600;,
+ -0.316111; 0.271646; 1.259217;,
+ 0.292988; 0.271646; 1.259217;,
+ 0.292988; 0.271646; 2.334600;,
+ -0.316111; 0.271646; 2.334600;,
+ -0.316111; 0.271646; 1.259217;,
+ -0.316111;-0.244395; 1.259217;,
+ 0.292988;-0.244395; 1.259217;,
+ 0.292988; 0.271646; 1.259217;,
+ 0.292988; 0.271646; 2.334600;,
+ 0.292988;-0.244395; 2.334600;,
+ -0.316111;-0.244395; 2.334600;,
+ -0.316111; 0.271646; 2.334600;,
+ 0.302371; 0.292906; 0.936493;,
+ 0.298653; 0.217613; 0.936493;,
+ 0.298653; 0.217613; 1.431149;,
+ 0.302371; 0.292906; 1.431149;,
+ 0.298653; 0.217613; 0.936493;,
+ 0.087576; 0.217613; 0.936493;,
+ 0.087576; 0.217613; 1.431149;,
+ 0.298653; 0.217613; 1.431149;,
+ 0.087576; 0.217613; 0.936493;,
+ 0.091294; 0.292906; 0.936493;,
+ 0.091294; 0.292906; 1.431149;,
+ 0.087576; 0.217613; 1.431149;,
+ 0.091294; 0.292906; 0.936493;,
+ 0.302371; 0.292906; 0.936493;,
+ 0.302371; 0.292906; 1.431149;,
+ 0.091294; 0.292906; 1.431149;,
+ 0.091294; 0.292906; 0.936493;,
+ 0.087576; 0.217613; 0.936493;,
+ 0.298653; 0.217613; 0.936493;,
+ 0.302371; 0.292906; 0.936493;,
+ 0.302371; 0.292906; 1.431149;,
+ 0.298653; 0.217613; 1.431149;,
+ 0.087576; 0.217613; 1.431149;,
+ 0.091294; 0.292906; 1.431149;,
+ -0.102030; 0.292906; 0.936493;,
+ -0.099568; 0.217613; 0.936493;,
+ -0.099568; 0.217613; 1.431149;,
+ -0.102030; 0.292906; 1.431149;,
+ -0.099568; 0.217613; 0.936493;,
+ -0.316183; 0.217613; 0.936493;,
+ -0.316183; 0.217613; 1.431149;,
+ -0.099568; 0.217613; 1.431149;,
+ -0.316183; 0.217613; 0.936493;,
+ -0.318644; 0.292906; 0.936493;,
+ -0.318644; 0.292906; 1.431149;,
+ -0.316183; 0.217613; 1.431149;,
+ -0.318644; 0.292906; 0.936493;,
+ -0.102030; 0.292906; 0.936493;,
+ -0.102030; 0.292906; 1.431149;,
+ -0.318644; 0.292906; 1.431149;,
+ -0.318644; 0.292906; 0.936493;,
+ -0.316183; 0.217613; 0.936493;,
+ -0.099568; 0.217613; 0.936493;,
+ -0.102030; 0.292906; 0.936493;,
+ -0.102030; 0.292906; 1.431149;,
+ -0.099568; 0.217613; 1.431149;,
+ -0.316183; 0.217613; 1.431149;,
+ -0.318644; 0.292906; 1.431149;,
+ 0.149100; 0.327439; 0.771836;,
+ 0.149701; 0.252146; 0.771836;,
+ 0.149701; 0.252146; 1.438394;,
+ 0.149100; 0.327439; 1.438394;,
+ 0.149701; 0.252146; 0.771836;,
+ -0.168232; 0.252146; 0.771836;,
+ -0.168232; 0.252146; 1.438394;,
+ 0.149701; 0.252146; 1.438394;,
+ -0.168232; 0.252146; 0.771836;,
+ -0.168833; 0.327439; 0.771836;,
+ -0.168833; 0.327439; 1.438394;,
+ -0.168232; 0.252146; 1.438394;,
+ -0.168833; 0.327439; 0.771836;,
+ 0.149100; 0.327439; 0.771836;,
+ 0.149100; 0.327439; 1.438394;,
+ -0.168833; 0.327439; 1.438394;,
+ -0.168833; 0.327439; 0.771836;,
+ -0.168232; 0.252146; 0.771836;,
+ 0.149701; 0.252146; 0.771836;,
+ 0.149100; 0.327439; 0.771836;,
+ 0.149100; 0.327439; 1.438394;,
+ 0.149701; 0.252146; 1.438394;,
+ -0.168232; 0.252146; 1.438394;,
+ -0.168833; 0.327439; 1.438394;,
+ 0.103285;-0.086578;-0.135133;,
+ 0.103285; 0.101043;-0.135133;,
+ 0.103285; 0.101043; 1.222760;,
+ 0.103285;-0.086578; 1.222760;,
+ 0.103285; 0.101043;-0.135133;,
+ 0.289383; 0.101043;-0.135133;,
+ 0.289383; 0.101043; 1.222760;,
+ 0.103285; 0.101043; 1.222760;,
+ 0.289383; 0.101043;-0.135133;,
+ 0.289383;-0.086578;-0.135133;,
+ 0.289383;-0.086578; 1.222760;,
+ 0.289383; 0.101043; 1.222760;,
+ 0.289383;-0.086578;-0.135133;,
+ 0.103285;-0.086578;-0.135133;,
+ 0.103285;-0.086578; 1.222760;,
+ 0.289383;-0.086578; 1.222760;,
+ 0.289383;-0.086578;-0.135133;,
+ 0.289383; 0.101043;-0.135133;,
+ 0.103285; 0.101043;-0.135133;,
+ 0.103285;-0.086578;-0.135133;,
+ 0.103285;-0.086578; 1.222760;,
+ 0.103285; 0.101043; 1.222760;,
+ 0.289383; 0.101043; 1.222760;,
+ 0.289383;-0.086578; 1.222760;,
+ -0.095249; 0.107436;-0.115250;,
+ -0.095249;-0.080185;-0.115250;,
+ -0.095249;-0.080185; 1.242642;,
+ -0.095249; 0.107436; 1.242642;,
+ -0.095249;-0.080185;-0.115250;,
+ -0.281348;-0.080185;-0.115250;,
+ -0.281348;-0.080185; 1.242642;,
+ -0.095249;-0.080185; 1.242642;,
+ -0.281348;-0.080185;-0.115250;,
+ -0.281348; 0.107436;-0.115250;,
+ -0.281348; 0.107436; 1.242642;,
+ -0.281348;-0.080185; 1.242642;,
+ -0.281348; 0.107436;-0.115250;,
+ -0.095249; 0.107436;-0.115250;,
+ -0.095249; 0.107436; 1.242642;,
+ -0.281348; 0.107436; 1.242642;,
+ -0.281348; 0.107436;-0.115250;,
+ -0.281348;-0.080185;-0.115250;,
+ -0.095249;-0.080185;-0.115250;,
+ -0.095249; 0.107436;-0.115250;,
+ -0.095249; 0.107436; 1.242642;,
+ -0.095249;-0.080185; 1.242642;,
+ -0.281348;-0.080185; 1.242642;,
+ -0.281348; 0.107436; 1.242642;,
+ 0.038491;-0.113120; 2.301639;,
+ 0.038491;-0.214044; 2.301639;,
+ 0.038491;-0.214044; 2.635183;,
+ 0.038491;-0.113120; 2.635183;,
+ 0.038491;-0.214044; 2.301639;,
+ -0.061613;-0.214044; 2.301639;,
+ -0.061613;-0.214044; 2.635183;,
+ 0.038491;-0.214044; 2.635183;,
+ -0.061613;-0.214044; 2.301639;,
+ -0.061614;-0.113120; 2.301639;,
+ -0.061614;-0.113120; 2.635183;,
+ -0.061613;-0.214044; 2.635183;,
+ -0.061614;-0.113120; 2.301639;,
+ 0.038491;-0.113120; 2.301639;,
+ 0.038491;-0.113120; 2.635183;,
+ -0.061614;-0.113120; 2.635183;,
+ -0.061614;-0.113120; 2.301639;,
+ -0.061613;-0.214044; 2.301639;,
+ 0.038491;-0.214044; 2.301639;,
+ 0.038491;-0.113120; 2.301639;,
+ 0.038491;-0.113120; 2.635183;,
+ 0.038491;-0.214044; 2.635183;,
+ -0.061613;-0.214044; 2.635183;,
+ -0.061614;-0.113120; 2.635183;;
+ 83;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;;
+ MeshNormals { //Cube_000 Normals
+ 332;
+ -0.998783; 0.049315;-0.000000;,
+ -0.998783; 0.049315;-0.000000;,
+ -0.998783; 0.049315;-0.000000;,
+ -0.998783; 0.049315;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.998783;-0.049314; 0.000000;,
+ 0.998783;-0.049314; 0.000000;,
+ 0.998783;-0.049314; 0.000000;,
+ 0.998783;-0.049314; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.999466; 0.032675; 0.000000;,
+ 0.999466; 0.032675; 0.000000;,
+ 0.999466; 0.032675; 0.000000;,
+ 0.999466; 0.032675; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.999968; 0.007979; 0.000000;,
+ 0.999968; 0.007979; 0.000000;,
+ 0.999968; 0.007979; 0.000000;,
+ 0.999968; 0.007979; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.998783;-0.049314;-0.000000;,
+ 0.998783;-0.049314;-0.000000;,
+ 0.998783;-0.049314;-0.000000;,
+ 0.998783;-0.049314;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ -0.998783; 0.049314; 0.000000;,
+ -0.998783; 0.049314; 0.000000;,
+ -0.998783; 0.049314; 0.000000;,
+ -0.998783; 0.049314; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.999466; 0.032676; 0.000000;,
+ 0.999466; 0.032676; 0.000000;,
+ 0.999466; 0.032676; 0.000000;,
+ 0.999466; 0.032676; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.999466;-0.032675; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.999968; 0.007979;-0.000000;,
+ 0.999968; 0.007979;-0.000000;,
+ 0.999968; 0.007979;-0.000000;,
+ 0.999968; 0.007979;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.999968;-0.007979; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;;
+ 83;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;;
+ } //End of Cube_000 Normals
+ MeshMaterialList { //Cube_000 Material List
+ 1;
+ 1;
+ 0;;
+ Material Default_Material {
+ 0.800000; 0.800000; 0.800000; 0.800000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_000 Material List
+ MeshTextureCoords { //Cube_000 UV Coordinates
+ 332;
+ 0.750000; 0.812500;,
+ 0.734375; 0.812500;,
+ 0.734375; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.812500;,
+ 0.796875; 0.812500;,
+ 0.796875; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.812500; 0.812500;,
+ 0.796875; 0.812500;,
+ 0.796875; 0.625000;,
+ 0.812500; 0.625000;,
+ 0.796875; 0.812500;,
+ 0.750000; 0.812500;,
+ 0.750000; 0.625000;,
+ 0.796875; 0.625000;,
+ 0.796875; 0.812500;,
+ 0.796875; 0.843750;,
+ 0.750000; 0.843750;,
+ 0.750000; 0.812500;,
+ 0.750000; 0.593750;,
+ 0.750000; 0.625000;,
+ 0.796875; 0.625000;,
+ 0.796875; 0.593750;,
+ 0.921875; 0.812500;,
+ 0.906250; 0.812500;,
+ 0.906250; 0.625000;,
+ 0.921875; 0.625000;,
+ 0.921875; 0.812500;,
+ 0.968750; 0.812500;,
+ 0.968750; 0.625000;,
+ 0.921875; 0.625000;,
+ 0.984375; 0.812500;,
+ 0.968750; 0.812500;,
+ 0.968750; 0.625000;,
+ 0.984375; 0.625000;,
+ 0.968750; 0.812500;,
+ 0.921875; 0.812500;,
+ 0.921875; 0.625000;,
+ 0.968750; 0.625000;,
+ 0.968750; 0.812500;,
+ 0.968750; 0.843750;,
+ 0.921875; 0.843750;,
+ 0.921875; 0.812500;,
+ 0.921875; 0.593750;,
+ 0.921875; 0.625000;,
+ 0.968750; 0.625000;,
+ 0.968750; 0.593750;,
+ 0.828125; 0.812500;,
+ 0.812500; 0.812500;,
+ 0.812500; 0.562500;,
+ 0.828125; 0.562500;,
+ 0.890625; 0.812500;,
+ 0.828125; 0.812500;,
+ 0.828125; 0.562500;,
+ 0.890625; 0.562500;,
+ 0.906250; 0.812500;,
+ 0.890625; 0.812500;,
+ 0.890625; 0.562500;,
+ 0.906250; 0.562500;,
+ 0.890625; 0.812500;,
+ 0.828125; 0.812500;,
+ 0.828125; 0.562500;,
+ 0.890625; 0.562500;,
+ 0.890625; 0.812500;,
+ 0.890625; 0.843750;,
+ 0.828125; 0.843750;,
+ 0.828125; 0.812500;,
+ 0.828125; 0.531250;,
+ 0.828125; 0.562500;,
+ 0.890625; 0.562500;,
+ 0.890625; 0.531250;,
+ 0.703125; 0.187500;,
+ 0.703125; 0.250000;,
+ 0.515625; 0.250000;,
+ 0.515625; 0.187500;,
+ 0.703125; 0.125000;,
+ 0.703125; 0.187500;,
+ 0.515625; 0.187500;,
+ 0.515625; 0.125000;,
+ 0.703125; 0.062500;,
+ 0.703125; 0.125000;,
+ 0.515625; 0.125000;,
+ 0.515625; 0.062500;,
+ 0.703125; 0.000000;,
+ 0.703125; 0.062500;,
+ 0.515625; 0.062500;,
+ 0.515625; 0.000000;,
+ 0.703125; 0.125000;,
+ 0.734375; 0.125000;,
+ 0.734375; 0.187500;,
+ 0.703125; 0.187500;,
+ 0.734375; 0.250000;,
+ 0.703125; 0.250000;,
+ 0.703125; 0.187500;,
+ 0.734375; 0.187500;,
+ 0.250000; 0.437500;,
+ 0.250000; 0.187500;,
+ 0.375000; 0.187500;,
+ 0.375000; 0.437500;,
+ 0.375000; 0.000000;,
+ 0.500000; 0.000000;,
+ 0.500000; 0.187500;,
+ 0.375000; 0.187500;,
+ 0.250000; 0.000000;,
+ 0.375000; 0.000000;,
+ 0.375000; 0.187500;,
+ 0.250000; 0.187500;,
+ 0.250000; 0.187500;,
+ 0.125000; 0.187500;,
+ 0.125000; 0.000000;,
+ 0.250000; 0.000000;,
+ 0.125000; 0.187500;,
+ 0.000000; 0.187500;,
+ 0.000000; 0.000000;,
+ 0.125000; 0.000000;,
+ 0.375000; 0.437500;,
+ 0.375000; 0.187500;,
+ 0.500000; 0.187500;,
+ 0.500000; 0.437500;,
+ 0.078125; 0.250000;,
+ 0.000000; 0.250000;,
+ 0.000000; 0.187500;,
+ 0.078125; 0.187500;,
+ 0.078125; 0.375000;,
+ 0.171875; 0.375000;,
+ 0.171875; 0.437500;,
+ 0.078125; 0.437500;,
+ 0.250000; 0.250000;,
+ 0.171875; 0.250000;,
+ 0.171875; 0.187500;,
+ 0.250000; 0.187500;,
+ 0.171875; 0.250000;,
+ 0.078125; 0.250000;,
+ 0.078125; 0.187500;,
+ 0.171875; 0.187500;,
+ 0.078125; 0.250000;,
+ 0.171875; 0.250000;,
+ 0.171875; 0.375000;,
+ 0.078125; 0.375000;,
+ 0.734375; 0.250000;,
+ 0.734375; 0.187500;,
+ 0.921875; 0.187500;,
+ 0.921875; 0.250000;,
+ 0.734375; 0.062500;,
+ 0.734375; 0.000000;,
+ 0.921875; 0.000000;,
+ 0.921875; 0.062500;,
+ 0.734375; 0.125000;,
+ 0.734375; 0.062500;,
+ 0.921875; 0.062500;,
+ 0.921875; 0.125000;,
+ 0.734375; 0.187500;,
+ 0.734375; 0.125000;,
+ 0.921875; 0.125000;,
+ 0.921875; 0.187500;,
+ 0.734375; 0.062500;,
+ 0.703125; 0.062500;,
+ 0.703125; 0.000000;,
+ 0.734375; 0.000000;,
+ 0.703125; 0.062500;,
+ 0.734375; 0.062500;,
+ 0.734375; 0.125000;,
+ 0.703125; 0.125000;,
+ 0.109375; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.625000;,
+ 0.109375; 0.625000;,
+ 0.234375; 1.000000;,
+ 0.109375; 1.000000;,
+ 0.109375; 0.625000;,
+ 0.234375; 0.625000;,
+ 0.234375; 1.000000;,
+ 0.343750; 1.000000;,
+ 0.343750; 0.625000;,
+ 0.234375; 0.625000;,
+ 0.468750; 1.000000;,
+ 0.343750; 1.000000;,
+ 0.343750; 0.625000;,
+ 0.468750; 0.625000;,
+ 0.468750; 0.437500;,
+ 0.468750; 0.625000;,
+ 0.343750; 0.625000;,
+ 0.343750; 0.437500;,
+ 0.109375; 0.625000;,
+ 0.109375; 0.437500;,
+ 0.234375; 0.437500;,
+ 0.234375; 0.625000;,
+ 0.500000; 0.812500;,
+ 0.484375; 0.812500;,
+ 0.484375; 0.625000;,
+ 0.500000; 0.625000;,
+ 0.500000; 0.812500;,
+ 0.546875; 0.812500;,
+ 0.546875; 0.625000;,
+ 0.500000; 0.625000;,
+ 0.562500; 0.812500;,
+ 0.546875; 0.812500;,
+ 0.546875; 0.625000;,
+ 0.562500; 0.625000;,
+ 0.546875; 0.812500;,
+ 0.500000; 0.812500;,
+ 0.500000; 0.625000;,
+ 0.546875; 0.625000;,
+ 0.546875; 0.843750;,
+ 0.546875; 0.812500;,
+ 0.500000; 0.812500;,
+ 0.500000; 0.843750;,
+ 0.500000; 0.625000;,
+ 0.500000; 0.593750;,
+ 0.546875; 0.593750;,
+ 0.546875; 0.625000;,
+ 0.671875; 0.812500;,
+ 0.656250; 0.812500;,
+ 0.656250; 0.625000;,
+ 0.671875; 0.625000;,
+ 0.671875; 0.812500;,
+ 0.718750; 0.812500;,
+ 0.718750; 0.625000;,
+ 0.671875; 0.625000;,
+ 0.734375; 0.812500;,
+ 0.718750; 0.812500;,
+ 0.718750; 0.625000;,
+ 0.734375; 0.625000;,
+ 0.718750; 0.812500;,
+ 0.671875; 0.812500;,
+ 0.671875; 0.625000;,
+ 0.718750; 0.625000;,
+ 0.718750; 0.843750;,
+ 0.718750; 0.812500;,
+ 0.671875; 0.812500;,
+ 0.671875; 0.843750;,
+ 0.671875; 0.625000;,
+ 0.671875; 0.593750;,
+ 0.718750; 0.593750;,
+ 0.718750; 0.625000;,
+ 0.578125; 0.812500;,
+ 0.562500; 0.812500;,
+ 0.562500; 0.562500;,
+ 0.578125; 0.562500;,
+ 0.640625; 0.812500;,
+ 0.578125; 0.812500;,
+ 0.578125; 0.562500;,
+ 0.640625; 0.562500;,
+ 0.656250; 0.812500;,
+ 0.640625; 0.812500;,
+ 0.640625; 0.562500;,
+ 0.656250; 0.562500;,
+ 0.640625; 0.812500;,
+ 0.578125; 0.812500;,
+ 0.578125; 0.562500;,
+ 0.640625; 0.562500;,
+ 0.640625; 0.843750;,
+ 0.640625; 0.812500;,
+ 0.578125; 0.812500;,
+ 0.578125; 0.843750;,
+ 0.578125; 0.562500;,
+ 0.578125; 0.531250;,
+ 0.640625; 0.531250;,
+ 0.640625; 0.562500;,
+ 0.703125; 0.437500;,
+ 0.703125; 0.500000;,
+ 0.515625; 0.500000;,
+ 0.515625; 0.437500;,
+ 0.703125; 0.375000;,
+ 0.703125; 0.437500;,
+ 0.515625; 0.437500;,
+ 0.515625; 0.375000;,
+ 0.703125; 0.312500;,
+ 0.703125; 0.375000;,
+ 0.515625; 0.375000;,
+ 0.515625; 0.312500;,
+ 0.703125; 0.250000;,
+ 0.703125; 0.312500;,
+ 0.515625; 0.312500;,
+ 0.515625; 0.250000;,
+ 0.734375; 0.312500;,
+ 0.734375; 0.375000;,
+ 0.703125; 0.375000;,
+ 0.703125; 0.312500;,
+ 0.703125; 0.312500;,
+ 0.703125; 0.250000;,
+ 0.734375; 0.250000;,
+ 0.734375; 0.312500;,
+ 0.734375; 0.312500;,
+ 0.734375; 0.250000;,
+ 0.921875; 0.250000;,
+ 0.921875; 0.312500;,
+ 0.734375; 0.500000;,
+ 0.734375; 0.437500;,
+ 0.921875; 0.437500;,
+ 0.921875; 0.500000;,
+ 0.734375; 0.437500;,
+ 0.734375; 0.375000;,
+ 0.921875; 0.375000;,
+ 0.921875; 0.437500;,
+ 0.734375; 0.375000;,
+ 0.734375; 0.312500;,
+ 0.921875; 0.312500;,
+ 0.921875; 0.375000;,
+ 0.734375; 0.437500;,
+ 0.734375; 0.500000;,
+ 0.703125; 0.500000;,
+ 0.703125; 0.437500;,
+ 0.703125; 0.437500;,
+ 0.703125; 0.375000;,
+ 0.734375; 0.375000;,
+ 0.734375; 0.437500;,
+ 0.046875; 0.250000;,
+ 0.062500; 0.250000;,
+ 0.062500; 0.375000;,
+ 0.046875; 0.375000;,
+ 0.031250; 0.250000;,
+ 0.046875; 0.250000;,
+ 0.046875; 0.375000;,
+ 0.031250; 0.375000;,
+ 0.015625; 0.250000;,
+ 0.031250; 0.250000;,
+ 0.031250; 0.375000;,
+ 0.015625; 0.375000;,
+ 0.000000; 0.250000;,
+ 0.015625; 0.250000;,
+ 0.015625; 0.375000;,
+ 0.000000; 0.375000;,
+ 0.062500; 0.281250;,
+ 0.062500; 0.250000;,
+ 0.078125; 0.250000;,
+ 0.078125; 0.281250;,
+ 0.078125; 0.281250;,
+ 0.078125; 0.312500;,
+ 0.062500; 0.312500;,
+ 0.062500; 0.281250;;
+ } //End of Cube_000 UV Coordinates
+ XSkinMeshHeader {
+ 2;
+ 6;
+ 10;
+ }
+ SkinWeights {
+ "Armature_Body";
+ 168;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259;
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000001,
+ 0.000000,
+ 0.000134,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000134,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000001,
+ 0.000000,
+ 0.000134,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000;
+ 0.746845, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-0.740784, 0.000000,
+ 0.000000, 0.740784, 0.000000, 0.000000,
+ -0.000000,-0.856282,-0.000000, 1.000000;;
+ } //End of Armature_Body Skin Weights
+ SkinWeights {
+ "Armature_Bone_001";
+ 24;
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95;
+ 1.000000,
+ 0.999144,
+ 0.999987,
+ 1.000000,
+ 0.999144,
+ 1.000000,
+ 1.000000,
+ 0.999987,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999144,
+ 1.000000,
+ 1.000000,
+ 0.999987,
+ 1.000000,
+ 1.000000;
+ 0.743658, 0.068922,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.740784, 0.000000,
+ 0.068363,-0.737623, 0.000000, 0.000000,
+ -0.377741, 1.628371,-0.000000, 1.000000;;
+ } //End of Armature_Bone_001 Skin Weights
+ SkinWeights {
+ "Armature_Bone_002";
+ 48;
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163;
+ 0.000000,
+ 0.000856,
+ 0.000013,
+ 0.000000,
+ 0.000856,
+ 0.000000,
+ 0.000000,
+ 0.000013,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000856,
+ 0.000000,
+ 0.000000,
+ 0.000013,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.743577,-0.069792,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.740784, 0.000000,
+ -0.069226,-0.737543, 0.000000, 0.000000,
+ 0.392568, 1.626715,-0.000001, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ SkinWeights {
+ "Armature_Bone_003";
+ 24;
+ 284,
+ 285,
+ 286,
+ 287,
+ 288,
+ 289,
+ 290,
+ 291,
+ 292,
+ 293,
+ 294,
+ 295,
+ 296,
+ 297,
+ 298,
+ 299,
+ 300,
+ 301,
+ 302,
+ 303,
+ 304,
+ 305,
+ 306,
+ 307;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.746845,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.740784, 0.000000,
+ -0.000000,-0.740784, 0.000000, 0.000000,
+ 0.144872, 0.917795,-0.000000, 1.000000;;
+ } //End of Armature_Bone_003 Skin Weights
+ SkinWeights {
+ "Armature_Bone_004";
+ 24;
+ 260,
+ 261,
+ 262,
+ 263,
+ 264,
+ 265,
+ 266,
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 280,
+ 281,
+ 282,
+ 283;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.746845,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.740784, 0.000000,
+ -0.000000,-0.740784, 0.000000, 0.000000,
+ -0.135397, 0.926692,-0.000000, 1.000000;;
+ } //End of Armature_Bone_004 Skin Weights
+ SkinWeights {
+ "Armature_Bone_005";
+ 39;
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 131,
+ 133,
+ 134,
+ 137,
+ 138,
+ 139,
+ 308,
+ 309,
+ 310,
+ 311,
+ 312,
+ 313,
+ 314,
+ 315,
+ 316,
+ 317,
+ 318,
+ 319,
+ 320,
+ 321,
+ 322,
+ 323,
+ 324,
+ 325,
+ 326,
+ 327,
+ 328,
+ 329,
+ 330,
+ 331;
+ 0.088015,
+ 0.374496,
+ 0.207032,
+ 0.066484,
+ 0.374496,
+ 0.074593,
+ 0.049815,
+ 0.207032,
+ 0.074593,
+ 0.049815,
+ 0.088015,
+ 0.066484,
+ 0.074593,
+ 0.374496,
+ 0.088015,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.746845, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.005159,-0.740766, 0.000000,
+ -0.000000, 0.740766, 0.005159, 0.000000,
+ 0.002514,-1.721402,-0.134493, 1.000000;;
+ } //End of Armature_Bone_005 Skin Weights
+ SkinWeights {
+ "Armature_Body_001";
+ 72;
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259;
+ 0.999999,
+ 1.000000,
+ 0.999866,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999866,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 0.999866,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.746845,-0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.740784, 0.000000,
+ 0.000000,-0.740784, 0.000000, 0.000000,
+ -0.000000, 1.044227,-0.206990, 1.000000;;
+ } //End of Armature_Body_001 Skin Weights
+ SkinWeights {
+ "Armature_Body_002";
+ 72;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999999,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.746845, 0.000000, 0.000000, 0.000000,
+ -0.000000, 0.000000, 0.740784, 0.000000,
+ -0.000000,-0.740784, 0.000000, 0.000000,
+ -0.000000, 1.042009, 0.203380, 1.000000;;
+ } //End of Armature_Body_002 Skin Weights
+ SkinWeights {
+ "Armature_Bone_006";
+ 24;
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.075705, 0.000000, 0.742998, 0.000000,
+ -0.000000, 0.740784,-0.000000, 0.000000,
+ -0.736968, 0.000000, 0.075091, 0.000000,
+ 2.018875, 0.120365,-0.203181, 1.000000;;
+ } //End of Armature_Bone_006 Skin Weights
+ SkinWeights {
+ "Armature_Bone_007";
+ 20;
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139;
+ 0.911985,
+ 0.625504,
+ 0.792968,
+ 0.933516,
+ 0.625504,
+ 0.925407,
+ 0.950185,
+ 0.792968,
+ 0.925407,
+ 1.000000,
+ 1.000000,
+ 0.950185,
+ 1.000000,
+ 0.911985,
+ 0.933516,
+ 1.000000,
+ 1.000000,
+ 0.925407,
+ 0.625504,
+ 0.911985;
+ 0.746845, 0.000000,-0.000001, 0.000000,
+ -0.000000, 0.606815, 0.424897, 0.000000,
+ 0.000001,-0.424897, 0.606815, 0.000000,
+ 0.002511, 1.147970,-1.577121, 1.000000;;
+ } //End of Armature_Bone_007 Skin Weights
+ } //End of Cube_000 Mesh
+ } //End of Sand_monster
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.000000, 0.000000, 0.000000;;,
+ 1;3; 0.000000, 0.000000, 0.000000;;,
+ 2;3; 0.000000, 0.000000, 0.000000;;,
+ 3;3; 0.000000, 0.000000, 0.000000;;,
+ 4;3; 0.000000, 0.000000, 0.000000;;,
+ 5;3; 0.000000, 0.000000, 0.000000;;,
+ 6;3; 0.000000, 0.000000, 0.000000;;,
+ 7;3; 0.000000, 0.000000, 0.000000;;,
+ 8;3; 0.000000, 0.000000, 0.000000;;,
+ 9;3; 0.000000, 0.000000, 0.000000;;,
+ 10;3; 0.000000, 0.000000, 0.000000;;,
+ 11;3; 0.000000, 0.000000, 0.000000;;,
+ 12;3; 0.000000, 0.000000, 0.000000;;,
+ 13;3; 0.000000, 0.000000, 0.000000;;,
+ 14;3; 0.000000, 0.000000, 0.000000;;,
+ 15;3; 0.000000, 0.000000, 0.000000;;,
+ 16;3; 0.000000, 0.000000, 0.000000;;,
+ 17;3; 0.000000, 0.000000, 0.000000;;,
+ 18;3; 0.000000, 0.000000, 0.000000;;,
+ 19;3; 0.000000, 0.000000, 0.000000;;,
+ 20;3; 0.000000, 0.000000, 0.000000;;,
+ 21;3; 0.000000, 0.000000, 0.000000;;,
+ 22;3; 0.000000, 0.000000, 0.000000;;,
+ 23;3; 0.000000, 0.000000, 0.000000;;,
+ 24;3; 0.000000, 0.000000, 0.000000;;,
+ 25;3; 0.000000, 0.000000, 0.000000;;,
+ 26;3; 0.000000, 0.000000, 0.000000;;,
+ 27;3; 0.000000, 0.000000, 0.000000;;,
+ 28;3; 0.000000, 0.000000, 0.000000;;,
+ 29;3; 0.000000, 0.000000, 0.000000;;,
+ 30;3; 0.000000, 0.000000, 0.000000;;,
+ 31;3; 0.000000, 0.000000, 0.000000;;,
+ 32;3; 0.000000, 0.000000, 0.000000;;,
+ 33;3; 0.000000, 0.000000, 0.000000;;,
+ 34;3; 0.000000, 0.000000, 0.000000;;,
+ 35;3; 0.000000, 0.000000, 0.000000;;,
+ 36;3; 0.000000, 0.000000, 0.000000;;,
+ 37;3; 0.000000, 0.000000, 0.000000;;,
+ 38;3; 0.000000, 0.000000, 0.000000;;,
+ 39;3; 0.000000, 0.000000, 0.000000;;,
+ 40;3; 0.000000, 0.000000, 0.000000;;,
+ 41;3; 0.000000, 0.000000, 0.000000;;,
+ 42;3; 0.000000, 0.000000, 0.000000;;,
+ 43;3; 0.000000, 0.000000, 0.000000;;,
+ 44;3; 0.000000, 0.000000, 0.000000;;,
+ 45;3; 0.000000, 0.000000, 0.000000;;,
+ 46;3; 0.000000, 0.000000, 0.000000;;,
+ 47;3; 0.000000, 0.000000, 0.000000;;,
+ 48;3; 0.000000, 0.000000, 0.000000;;,
+ 49;3; 0.000000, 0.000000, 0.000000;;,
+ 50;3; 0.000000, 0.000000, 0.000000;;,
+ 51;3; 0.000000, 0.000000, 0.000000;;,
+ 52;3; 0.000000, 0.000000, 0.000000;;,
+ 53;3; 0.000000, 0.000000, 0.000000;;,
+ 54;3; 0.000000, 0.000000, 0.000000;;,
+ 55;3; 0.000000, 0.000000, 0.000000;;,
+ 56;3; 0.000000, 0.000000, 0.000000;;,
+ 57;3; 0.000000, 0.000000, 0.000000;;,
+ 58;3; 0.000000, 0.000000, 0.000000;;,
+ 59;3; 0.000000, 0.000000, 0.000000;;,
+ 60;3; 0.000000, 0.000000, 0.000000;;,
+ 61;3; 0.000000, 0.000000, 0.000000;;,
+ 62;3; 0.000000, 0.000000, 0.000000;;,
+ 63;3; 0.000000, 0.000000, 0.000000;;,
+ 64;3; 0.000000, 0.000000, 0.000000;;,
+ 65;3; 0.000000, 0.000000, 0.000000;;,
+ 66;3; 0.000000, 0.000000, 0.000000;;,
+ 67;3; 0.000000, 0.000000, 0.000000;;,
+ 68;3; 0.000000, 0.000000, 0.000000;;,
+ 69;3; 0.000000, 0.000000, 0.000000;;,
+ 70;3; 0.000000, 0.000000, 0.000000;;,
+ 71;3; 0.000000, 0.000000, 0.000000;;,
+ 72;3; 0.000000, 0.000000, 0.000000;;,
+ 73;3; 0.000000, 0.000000, 0.000000;;,
+ 74;3; 0.000000, 0.000000, 0.000000;;,
+ 75;3; 0.000000, 0.000000, 0.000000;;,
+ 76;3; 0.000000, 0.000000, 0.000000;;,
+ 77;3; 0.000000, 0.000000, 0.000000;;,
+ 78;3; 0.000000, 0.000000, 0.000000;;,
+ 79;3; 0.000000, 0.000000, 0.000000;;,
+ 80;3; 0.000000, 0.000000, 0.000000;;,
+ 81;3; 0.000000, 0.000000, 0.000000;;,
+ 82;3; 0.000000, 0.000000, 0.000000;;,
+ 83;3; 0.000000, 0.000000, 0.000000;;,
+ 84;3; 0.000000, 0.000000, 0.000000;;,
+ 85;3; 0.000000, 0.000000, 0.000000;;,
+ 86;3; 0.000000, 0.000000, 0.000000;;,
+ 87;3; 0.000000, 0.000000, 0.000000;;,
+ 88;3; 0.000000, 0.000000, 0.000000;;,
+ 89;3; 0.000000, 0.000000, 0.000000;;,
+ 90;3; 0.000000, 0.000000, 0.000000;;,
+ 91;3; 0.000000, 0.000000, 0.000000;;,
+ 92;3; 0.000000, 0.000000, 0.000000;;,
+ 93;3; 0.000000, 0.000000, 0.000000;;,
+ 94;3; 0.000000, 0.000000, 0.000000;;,
+ 95;3; 0.000000, 0.000000, 0.000000;;,
+ 96;3; 0.000000, 0.000000, 0.000000;;,
+ 97;3; 0.000000, 0.000000, 0.000000;;,
+ 98;3; 0.000000, 0.000000, 0.000000;;,
+ 99;3; 0.000000, 0.000000, 0.000000;;,
+ 100;3; 0.000000, 0.000000, 0.000000;;,
+ 101;3; 0.000000, 0.000000, 0.000000;;,
+ 102;3; 0.000000, 0.000000, 0.000000;;,
+ 103;3; 0.000000, 0.000000, 0.000000;;,
+ 104;3; 0.000000, 0.000000, 0.000000;;,
+ 105;3; 0.000000, 0.000000, 0.000000;;,
+ 106;3; 0.000000, 0.000000, 0.000000;;,
+ 107;3; 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 101;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 102;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 103;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 104;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 105;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 106;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 107;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Root}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.000000, 0.000000, 0.001246;;,
+ 1;3; 0.000000, 0.000000, 0.001246;;,
+ 2;3; 0.000000, 0.000000, 0.001246;;,
+ 3;3; 0.000000, 0.000000, 0.001246;;,
+ 4;3; 0.000000, 0.000000, 0.001246;;,
+ 5;3; 0.000000, 0.000000, 0.001246;;,
+ 6;3; 0.000000, 0.000000, 0.001246;;,
+ 7;3; 0.000000, 0.000000, 0.001246;;,
+ 8;3; 0.000000, 0.000000, 0.001246;;,
+ 9;3; 0.000000, 0.000000, 0.001246;;,
+ 10;3; 0.000000, 0.000000, 0.001246;;,
+ 11;3; 0.000000, 0.000000, 0.001246;;,
+ 12;3; 0.000000, 0.000000, 0.001246;;,
+ 13;3; 0.000000, 0.000000, 0.001246;;,
+ 14;3; 0.000000, 0.000000, 0.001246;;,
+ 15;3; 0.000000, 0.000000, 0.001246;;,
+ 16;3; 0.000000, 0.000000, 0.001246;;,
+ 17;3; 0.000000, 0.000000, 0.001246;;,
+ 18;3; 0.000000, 0.000000, 0.001246;;,
+ 19;3; 0.000000, 0.000000, 0.001246;;,
+ 20;3; 0.000000, 0.000000, 0.001246;;,
+ 21;3; 0.000000, 0.000000, 0.001246;;,
+ 22;3; 0.000000, 0.000000, 0.001246;;,
+ 23;3; 0.000000, 0.000000, 0.001246;;,
+ 24;3; 0.000000, 0.000000, 0.001246;;,
+ 25;3; 0.000000, 0.000000, 0.001246;;,
+ 26;3; 0.000000, 0.000000, 0.001246;;,
+ 27;3; 0.000000, 0.000000, 0.001246;;,
+ 28;3; 0.000000, 0.000000, 0.001246;;,
+ 29;3; 0.000000, 0.000000, 0.001246;;,
+ 30;3; 0.000000, 0.000000, 0.001246;;,
+ 31;3; 0.000000, 0.000000, 0.001246;;,
+ 32;3; 0.000000, 0.000000, 0.001246;;,
+ 33;3; 0.000000, 0.000000, 0.001246;;,
+ 34;3; 0.000000, 0.000000, 0.001246;;,
+ 35;3; 0.000000, 0.000000, 0.001246;;,
+ 36;3; 0.000000, 0.000000, 0.001246;;,
+ 37;3; 0.000000, 0.000000, 0.001246;;,
+ 38;3; 0.000000, 0.000000, 0.001246;;,
+ 39;3; 0.000000, 0.000000, 0.001246;;,
+ 40;3; 0.000000, 0.000000, 0.001246;;,
+ 41;3; 0.000000, 0.000000, 0.001246;;,
+ 42;3; 0.000000, 0.000000, 0.001246;;,
+ 43;3; 0.000000, 0.000000, 0.001246;;,
+ 44;3; 0.000000, 0.000000, 0.001246;;,
+ 45;3; 0.000000, 0.000000, 0.001246;;,
+ 46;3; 0.000000, 0.000000, 0.001246;;,
+ 47;3; 0.000000, 0.000000, 0.001246;;,
+ 48;3; 0.000000, 0.000000, 0.001246;;,
+ 49;3; 0.000000, 0.000000, 0.001246;;,
+ 50;3; 0.000000, 0.000000, 0.001246;;,
+ 51;3; 0.000000, 0.000000, 0.001246;;,
+ 52;3; 0.000000, 0.000000, 0.001246;;,
+ 53;3; 0.000000, 0.000000, 0.001246;;,
+ 54;3; 0.000000, 0.000000, 0.001246;;,
+ 55;3; 0.000000, 0.000000, 0.001246;;,
+ 56;3; 0.000000, 0.000000, 0.001246;;,
+ 57;3; 0.000000, 0.000000, 0.001246;;,
+ 58;3; 0.000000, 0.000000, 0.001246;;,
+ 59;3; 0.000000, 0.000000, 0.001246;;,
+ 60;3; 0.000000, 0.000000, 0.001246;;,
+ 61;3; 0.000000, 0.000000, 0.001246;;,
+ 62;3; 0.000000, 0.000000, 0.001246;;,
+ 63;3; 0.000000, 0.000000, 0.001246;;,
+ 64;3; 0.000000, 0.000000, 0.001246;;,
+ 65;3; 0.000000, 0.000000, 0.001246;;,
+ 66;3; 0.000000, 0.000000, 0.001246;;,
+ 67;3; 0.000000, 0.000000, 0.001246;;,
+ 68;3; 0.000000, 0.000000, 0.001246;;,
+ 69;3; 0.000000, 0.000000, 0.001246;;,
+ 70;3; 0.000000, 0.000000, 0.001246;;,
+ 71;3; 0.000000, 0.000000, 0.001246;;,
+ 72;3; 0.000000, 0.000000, 0.001246;;,
+ 73;3; 0.000000, 0.000000, 0.001246;;,
+ 74;3; 0.000000, 0.000000, 0.001246;;,
+ 75;3; 0.000000,-0.000000,-0.008573;;,
+ 76;3; 0.000000,-0.000000,-0.037880;;,
+ 77;3; 0.000000,-0.000000,-0.084018;;,
+ 78;3; 0.000000,-0.000000,-0.140222;;,
+ 79;3; 0.000000,-0.000000,-0.196425;;,
+ 80;3; 0.000000,-0.000000,-0.242563;;,
+ 81;3; 0.000000,-0.000000,-0.271870;;,
+ 82;3; 0.000000,-0.000000,-0.281689;;,
+ 83;3; 0.000000,-0.000000,-0.271870;;,
+ 84;3; 0.000000,-0.000000,-0.242563;;,
+ 85;3; 0.000000,-0.000000,-0.196425;;,
+ 86;3; 0.000000,-0.000000,-0.140222;;,
+ 87;3; 0.000000,-0.000000,-0.084018;;,
+ 88;3; 0.000000,-0.000000,-0.037880;;,
+ 89;3; 0.000000,-0.000000,-0.008573;;,
+ 90;3; 0.000000,-0.000000, 0.001246;;,
+ 91;3; 0.000000,-0.000000,-0.008567;;,
+ 92;3; 0.000000,-0.000000,-0.037842;;,
+ 93;3; 0.000000,-0.000000,-0.083914;;,
+ 94;3; 0.000000,-0.000000,-0.140052;;,
+ 95;3; 0.000000,-0.000000,-0.196244;;,
+ 96;3; 0.000000,-0.000000,-0.242440;;,
+ 97;3; 0.000000,-0.000000,-0.271830;;,
+ 98;3; 0.000000,-0.000000,-0.281689;;,
+ 99;3; 0.000000,-0.000000,-0.271755;;,
+ 100;3; 0.000000,-0.000000,-0.241887;;,
+ 101;3; 0.000000,-0.000000,-0.194722;;,
+ 102;3; 0.000000,-0.000000,-0.137587;;,
+ 103;3; 0.000000,-0.000000,-0.081320;;,
+ 104;3; 0.000000,-0.000000,-0.036105;;,
+ 105;3; 0.000000,-0.000000,-0.008005;;,
+ 106;3; 0.000000, 0.000000, 0.001246;;,
+ 107;3; 0.000000, 0.000000, 0.001246;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 1;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 2;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 3;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 4;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 5;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 6;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 7;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 8;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 9;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 10;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 11;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 12;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 13;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 14;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 15;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 16;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 17;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 18;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 19;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 20;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 21;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 22;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 23;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 24;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 25;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 26;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 27;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 28;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 29;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 30;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 31;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 32;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 33;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 34;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 35;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 36;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 37;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 38;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 39;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 40;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 41;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 42;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 43;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 44;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 45;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 46;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 47;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 48;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 49;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 50;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 51;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 52;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 53;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 54;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 55;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 56;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 57;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 58;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 59;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 60;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 61;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 62;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 63;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 64;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 65;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 66;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 67;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 68;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 69;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 70;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 71;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 72;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 73;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 74;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 75;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 76;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 77;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 78;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 79;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 80;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 81;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 82;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 83;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 84;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 85;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 86;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 87;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 88;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 89;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 90;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 91;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 92;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 93;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 94;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 95;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 96;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 97;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 98;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 99;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 100;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 101;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 102;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 103;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 104;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 105;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 106;4; -0.707107, 0.707107, 0.000000, 0.000000;;,
+ 107;4; -0.707107, 0.707107, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_IK_Right_Leg}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.135398, 0.015523, 0.000000;;,
+ 1;3; 0.135398, 0.015523, 0.000000;;,
+ 2;3; 0.135398, 0.015523, 0.000000;;,
+ 3;3; 0.135398, 0.015523, 0.000000;;,
+ 4;3; 0.135398, 0.015523, 0.000000;;,
+ 5;3; 0.135398, 0.015523, 0.000000;;,
+ 6;3; 0.135398, 0.015523, 0.000000;;,
+ 7;3; 0.135398, 0.015523, 0.000000;;,
+ 8;3; 0.135398, 0.015523, 0.000000;;,
+ 9;3; 0.135398, 0.015523, 0.000000;;,
+ 10;3; 0.135398, 0.015523, 0.000000;;,
+ 11;3; 0.135398, 0.015523, 0.000000;;,
+ 12;3; 0.135398, 0.015523, 0.000000;;,
+ 13;3; 0.135398, 0.015523, 0.000000;;,
+ 14;3; 0.135398, 0.015523, 0.000000;;,
+ 15;3; 0.135398, 0.015523, 0.000000;;,
+ 16;3; 0.135398, 0.015523, 0.000000;;,
+ 17;3; 0.135398, 0.015523, 0.000000;;,
+ 18;3; 0.135398, 0.015523, 0.000000;;,
+ 19;3; 0.135398, 0.015523, 0.000000;;,
+ 20;3; 0.135398, 0.015523, 0.000000;;,
+ 21;3; 0.135398, 0.015523, 0.000000;;,
+ 22;3; 0.135398, 0.015523, 0.000000;;,
+ 23;3; 0.135398, 0.015523, 0.000000;;,
+ 24;3; 0.135398, 0.015523, 0.000000;;,
+ 25;3; 0.135398, 0.015523, 0.000000;;,
+ 26;3; 0.135398, 0.015523, 0.000000;;,
+ 27;3; 0.135398, 0.015523, 0.000000;;,
+ 28;3; 0.135398, 0.015523, 0.000000;;,
+ 29;3; 0.135398, 0.015523, 0.000000;;,
+ 30;3; 0.135398, 0.015523, 0.000000;;,
+ 31;3; 0.135398, 0.015523, 0.000000;;,
+ 32;3; 0.135398, 0.015523, 0.000000;;,
+ 33;3; 0.135398, 0.015523, 0.000000;;,
+ 34;3; 0.135398, 0.015523, 0.000000;;,
+ 35;3; 0.135398, 0.015523, 0.000000;;,
+ 36;3; 0.135398, 0.015523, 0.000000;;,
+ 37;3; 0.135398, 0.015523, 0.000000;;,
+ 38;3; 0.135398, 0.015523, 0.000000;;,
+ 39;3; 0.135398, 0.015523, 0.000000;;,
+ 40;3; 0.135398, 0.015523, 0.000000;;,
+ 41;3; 0.135398, 0.015523, 0.000000;;,
+ 42;3; 0.135398, 0.015523, 0.087189;;,
+ 43;3; 0.135398, 0.015523, 0.162188;;,
+ 44;3; 0.135398, 0.015523, 0.222434;;,
+ 45;3; 0.135398, 0.015523, 0.266237;;,
+ 46;3; 0.135398, 0.015523, 0.293922;;,
+ 47;3; 0.135398, 0.015523, 0.308311;;,
+ 48;3; 0.135398, 0.015523, 0.313815;;,
+ 49;3; 0.135398, 0.015523, 0.314835;;,
+ 50;3; 0.135398, 0.015523, 0.309148;;,
+ 51;3; 0.135398, 0.015523, 0.290771;;,
+ 52;3; 0.135398, 0.015523, 0.258454;;,
+ 53;3; 0.135398, 0.015523, 0.213080;;,
+ 54;3; 0.135398, 0.015523, 0.158686;;,
+ 55;3; 0.135398, 0.015523, 0.101401;;,
+ 56;3; 0.135398, 0.015523, 0.046755;;,
+ 57;3; 0.135398, 0.015523,-0.001999;;,
+ 58;3; 0.135398, 0.015523,-0.051857;;,
+ 59;3; 0.135398, 0.015523,-0.106460;;,
+ 60;3; 0.135398, 0.015523,-0.154925;;,
+ 61;3; 0.135398, 0.015523,-0.206693;;,
+ 62;3; 0.135398, 0.015523,-0.268486;;,
+ 63;3; 0.135398, 0.015523,-0.311509;;,
+ 64;3; 0.135398, 0.015523,-0.330121;;,
+ 65;3; 0.135398, 0.015523,-0.334719;;,
+ 66;3; 0.135398, 0.015523,-0.332228;;,
+ 67;3; 0.135398, 0.015523,-0.322988;;,
+ 68;3; 0.135398, 0.015523,-0.303845;;,
+ 69;3; 0.135398, 0.015523,-0.271522;;,
+ 70;3; 0.135398, 0.015523,-0.223860;;,
+ 71;3; 0.135398, 0.015523,-0.160993;;,
+ 72;3; 0.135398, 0.015523,-0.085268;;,
+ 73;3; 0.135398, 0.015523, 0.000000;;,
+ 74;3; 0.135398, 0.015523, 0.000000;;,
+ 75;3; 0.135398, 0.021308, 0.095588;;,
+ 76;3; 0.135398, 0.038571, 0.206502;;,
+ 77;3; 0.135398, 0.065746, 0.326063;;,
+ 78;3; 0.135398, 0.098852, 0.443345;;,
+ 79;3; 0.135398, 0.131970, 0.545509;;,
+ 80;3; 0.135398, 0.159170, 0.622083;;,
+ 81;3; 0.135398, 0.176457, 0.667861;;,
+ 82;3; 0.135398, 0.182252, 0.682612;;,
+ 83;3; 0.135398, 0.181203, 0.666972;;,
+ 84;3; 0.135398, 0.177911, 0.618550;;,
+ 85;3; 0.135398, 0.172332, 0.537822;;,
+ 86;3; 0.135398, 0.164785, 0.430589;;,
+ 87;3; 0.135398, 0.155990, 0.308211;;,
+ 88;3; 0.135398, 0.146856, 0.184430;;,
+ 89;3; 0.135398, 0.138160, 0.070810;;,
+ 90;3; 0.135398, 0.130378,-0.025691;;,
+ 91;3; 0.135398, 0.122923,-0.121019;;,
+ 92;3; 0.135398, 0.115040,-0.231131;;,
+ 93;3; 0.135398, 0.106791,-0.349520;;,
+ 94;3; 0.135398, 0.098329,-0.465728;;,
+ 95;3; 0.135398, 0.089877,-0.567400;;,
+ 96;3; 0.135398, 0.081658,-0.644145;;,
+ 97;3; 0.135398, 0.073821,-0.690390;;,
+ 98;3; 0.135398, 0.066422,-0.705393;;,
+ 99;3; 0.135398, 0.058693,-0.689356;;,
+ 100;3; 0.135398, 0.050027,-0.639602;;,
+ 101;3; 0.135398, 0.040924,-0.556855;;,
+ 102;3; 0.135398, 0.032220,-0.447937;;,
+ 103;3; 0.135398, 0.024869,-0.325462;;,
+ 104;3; 0.135398, 0.019552,-0.203592;;,
+ 105;3; 0.135398, 0.016483,-0.093171;;,
+ 106;3; 0.135398, 0.015523, 0.000000;;,
+ 107;3; 0.152259, 0.021305, 0.053347;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 82;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 83;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 84;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 85;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 86;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 87;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 88;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 89;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 91;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 92;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 93;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 94;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 95;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 96;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 97;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 98;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 99;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_IK_Left_Leg}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.148583, 0.015523, 0.000000;;,
+ 1;3; -0.148583, 0.015523, 0.000000;;,
+ 2;3; -0.148583, 0.015523, 0.000000;;,
+ 3;3; -0.148583, 0.015523, 0.000000;;,
+ 4;3; -0.148583, 0.015523, 0.000000;;,
+ 5;3; -0.148583, 0.015523, 0.000000;;,
+ 6;3; -0.148583, 0.015523, 0.000000;;,
+ 7;3; -0.148583, 0.015523, 0.000000;;,
+ 8;3; -0.148583, 0.015523, 0.000000;;,
+ 9;3; -0.148583, 0.015523, 0.000000;;,
+ 10;3; -0.148583, 0.015523, 0.000000;;,
+ 11;3; -0.148583, 0.015523, 0.000000;;,
+ 12;3; -0.148583, 0.015523, 0.000000;;,
+ 13;3; -0.148583, 0.015523, 0.000000;;,
+ 14;3; -0.148583, 0.015523, 0.000000;;,
+ 15;3; -0.148583, 0.015523, 0.000000;;,
+ 16;3; -0.148583, 0.015523, 0.000000;;,
+ 17;3; -0.148583, 0.015523, 0.000000;;,
+ 18;3; -0.148583, 0.015523, 0.000000;;,
+ 19;3; -0.148583, 0.015523, 0.000000;;,
+ 20;3; -0.148583, 0.015523, 0.000000;;,
+ 21;3; -0.148583, 0.015523, 0.000000;;,
+ 22;3; -0.148583, 0.015523, 0.000000;;,
+ 23;3; -0.148583, 0.015523, 0.000000;;,
+ 24;3; -0.148583, 0.015523, 0.000000;;,
+ 25;3; -0.148583, 0.015523, 0.000000;;,
+ 26;3; -0.148583, 0.015523, 0.000000;;,
+ 27;3; -0.148583, 0.015523, 0.000000;;,
+ 28;3; -0.148583, 0.015523, 0.000000;;,
+ 29;3; -0.148583, 0.015523, 0.000000;;,
+ 30;3; -0.148583, 0.015523, 0.000000;;,
+ 31;3; -0.148583, 0.015523, 0.000000;;,
+ 32;3; -0.148583, 0.015523, 0.000000;;,
+ 33;3; -0.148583, 0.015523, 0.000000;;,
+ 34;3; -0.148583, 0.015523, 0.000000;;,
+ 35;3; -0.148583, 0.015523, 0.000000;;,
+ 36;3; -0.148583, 0.015523, 0.000000;;,
+ 37;3; -0.148583, 0.015523, 0.000000;;,
+ 38;3; -0.148583, 0.015523, 0.000000;;,
+ 39;3; -0.148583, 0.015523, 0.000000;;,
+ 40;3; -0.148583, 0.015523, 0.000000;;,
+ 41;3; -0.148583, 0.015523, 0.000000;;,
+ 42;3; -0.148583, 0.015523,-0.090308;;,
+ 43;3; -0.148583, 0.015523,-0.169272;;,
+ 44;3; -0.148583, 0.015523,-0.234146;;,
+ 45;3; -0.148583, 0.015523,-0.282853;;,
+ 46;3; -0.148583, 0.015523,-0.315143;;,
+ 47;3; -0.148583, 0.015523,-0.333217;;,
+ 48;3; -0.148583, 0.015523,-0.341039;;,
+ 49;3; -0.148583, 0.015523,-0.342830;;,
+ 50;3; -0.148583, 0.015523,-0.336980;;,
+ 51;3; -0.148583, 0.015523,-0.318078;;,
+ 52;3; -0.148583, 0.015523,-0.284836;;,
+ 53;3; -0.148583, 0.015523,-0.238166;;,
+ 54;3; -0.148583, 0.015523,-0.182217;;,
+ 55;3; -0.148583, 0.015523,-0.123293;;,
+ 56;3; -0.148583, 0.015523,-0.067082;;,
+ 57;3; -0.148583, 0.015523,-0.016933;;,
+ 58;3; -0.148583, 0.015523, 0.034348;;,
+ 59;3; -0.148583, 0.015523, 0.090509;;,
+ 60;3; -0.148583, 0.015523, 0.140371;;,
+ 61;3; -0.148583, 0.015523, 0.193625;;,
+ 62;3; -0.148583, 0.015523, 0.257180;;,
+ 63;3; -0.148583, 0.015523, 0.301524;;,
+ 64;3; -0.148583, 0.015523, 0.320745;;,
+ 65;3; -0.148583, 0.015523, 0.325497;;,
+ 66;3; -0.148583, 0.015523, 0.323525;;,
+ 67;3; -0.148583, 0.015523, 0.315809;;,
+ 68;3; -0.148583, 0.015523, 0.299009;;,
+ 69;3; -0.148583, 0.015523, 0.269414;;,
+ 70;3; -0.148583, 0.015523, 0.224199;;,
+ 71;3; -0.148583, 0.015523, 0.162782;;,
+ 72;3; -0.148583, 0.015523, 0.087006;;,
+ 73;3; -0.148583, 0.015523, 0.000000;;,
+ 74;3; -0.148583, 0.015523, 0.000000;;,
+ 75;3; -0.148583, 0.019677,-0.099088;;,
+ 76;3; -0.148583, 0.032074,-0.215379;;,
+ 77;3; -0.148583, 0.051589,-0.341752;;,
+ 78;3; -0.148583, 0.075362,-0.466453;;,
+ 79;3; -0.148583, 0.099140,-0.575568;;,
+ 80;3; -0.148583, 0.118665,-0.657638;;,
+ 81;3; -0.148583, 0.131070,-0.706840;;,
+ 82;3; -0.148583, 0.135227,-0.722727;;,
+ 83;3; -0.148583, 0.134475,-0.707252;;,
+ 84;3; -0.148583, 0.132113,-0.659277;;,
+ 85;3; -0.148583, 0.128109,-0.579134;;,
+ 86;3; -0.148583, 0.122691,-0.472371;;,
+ 87;3; -0.148583, 0.116377,-0.350035;;,
+ 88;3; -0.148583, 0.109818,-0.225621;;,
+ 89;3; -0.148583, 0.103574,-0.110588;;,
+ 90;3; -0.148583, 0.097987,-0.011924;;,
+ 91;3; -0.148583, 0.092634, 0.086791;;,
+ 92;3; -0.148583, 0.086975, 0.201930;;,
+ 93;3; -0.148583, 0.081052, 0.326595;;,
+ 94;3; -0.148583, 0.074976, 0.449630;;,
+ 95;3; -0.148583, 0.068908, 0.557766;;,
+ 96;3; -0.148583, 0.063007, 0.639718;;,
+ 97;3; -0.148583, 0.057380, 0.689273;;,
+ 98;3; -0.148583, 0.052068, 0.705393;;,
+ 99;3; -0.148583, 0.046518, 0.689573;;,
+ 100;3; -0.148583, 0.040296, 0.640453;;,
+ 101;3; -0.148583, 0.033760, 0.558641;;,
+ 102;3; -0.148583, 0.027511, 0.450678;;,
+ 103;3; -0.148583, 0.022233, 0.328767;;,
+ 104;3; -0.148583, 0.018415, 0.206706;;,
+ 105;3; -0.148583, 0.016213, 0.095177;;,
+ 106;3; -0.148583, 0.015523, 0.000000;;,
+ 107;3; -0.156161, 0.012832,-0.060350;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 82;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 83;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 84;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 85;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 86;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 87;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 88;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 89;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 91;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 92;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 93;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 94;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 95;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 96;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 97;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 98;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 99;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_IK_Left_Hand}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.316097, 0.754556, 0.000000;;,
+ 1;3; -0.316097, 0.754556,-0.000553;;,
+ 2;3; -0.316097, 0.754556,-0.002272;;,
+ 3;3; -0.316097, 0.754556,-0.005193;;,
+ 4;3; -0.316097, 0.754556,-0.009241;;,
+ 5;3; -0.316097, 0.754556,-0.014196;;,
+ 6;3; -0.316097, 0.754556,-0.019709;;,
+ 7;3; -0.316097, 0.754556,-0.025373;;,
+ 8;3; -0.316097, 0.754556,-0.030822;;,
+ 9;3; -0.316097, 0.754556,-0.035797;;,
+ 10;3; -0.316097, 0.754556,-0.040148;;,
+ 11;3; -0.316097, 0.754556,-0.044499;;,
+ 12;3; -0.316097, 0.754556,-0.049474;;,
+ 13;3; -0.316097, 0.754556,-0.054923;;,
+ 14;3; -0.316097, 0.754556,-0.060587;;,
+ 15;3; -0.316097, 0.754556,-0.066100;;,
+ 16;3; -0.316097, 0.754556,-0.071055;;,
+ 17;3; -0.316097, 0.754556,-0.075103;;,
+ 18;3; -0.316097, 0.754556,-0.078023;;,
+ 19;3; -0.316097, 0.754556,-0.079743;;,
+ 20;3; -0.316097, 0.754556,-0.080296;;,
+ 21;3; -0.316097, 0.754556,-0.080289;;,
+ 22;3; -0.316097, 0.754556,-0.080236;;,
+ 23;3; -0.316097, 0.754556,-0.080073;;,
+ 24;3; -0.316097, 0.754556,-0.079720;;,
+ 25;3; -0.316097, 0.754556,-0.079093;;,
+ 26;3; -0.316097, 0.754556,-0.078123;;,
+ 27;3; -0.316097, 0.754556,-0.076777;;,
+ 28;3; -0.316097, 0.754556,-0.075061;;,
+ 29;3; -0.316097, 0.754556,-0.073009;;,
+ 30;3; -0.316097, 0.754556,-0.070670;;,
+ 31;3; -0.316097, 0.754556,-0.067890;;,
+ 32;3; -0.316097, 0.754556,-0.064517;;,
+ 33;3; -0.316097, 0.754556,-0.060592;;,
+ 34;3; -0.316097, 0.754556,-0.056133;;,
+ 35;3; -0.316097, 0.754556,-0.051142;;,
+ 36;3; -0.316097, 0.754556,-0.045596;;,
+ 37;3; -0.316097, 0.754556,-0.039444;;,
+ 38;3; -0.316097, 0.754556,-0.032578;;,
+ 39;3; -0.316097, 0.754556,-0.024774;;,
+ 40;3; -0.316097, 0.754556,-0.015466;;,
+ 41;3; -0.316097, 0.754556, 0.000000;;,
+ 42;3; -0.316097, 0.754556, 0.059460;;,
+ 43;3; -0.316097, 0.754556, 0.141717;;,
+ 44;3; -0.316097, 0.754556, 0.230109;;,
+ 45;3; -0.316097, 0.754556, 0.314858;;,
+ 46;3; -0.316097, 0.754556, 0.389209;;,
+ 47;3; -0.316097, 0.754556, 0.447871;;,
+ 48;3; -0.316097, 0.754556, 0.486247;;,
+ 49;3; -0.316097, 0.754556, 0.500000;;,
+ 50;3; -0.316097, 0.754556, 0.489995;;,
+ 51;3; -0.316097, 0.754556, 0.458566;;,
+ 52;3; -0.316097, 0.754556, 0.405218;;,
+ 53;3; -0.316097, 0.754556, 0.332884;;,
+ 54;3; -0.316097, 0.754556, 0.248325;;,
+ 55;3; -0.316097, 0.754556, 0.160156;;,
+ 56;3; -0.316097, 0.754556, 0.075835;;,
+ 57;3; -0.316097, 0.754556, 0.000000;;,
+ 58;3; -0.316097, 0.754556,-0.077935;;,
+ 59;3; -0.316097, 0.754556,-0.162805;;,
+ 60;3; -0.316097, 0.754556,-0.236963;;,
+ 61;3; -0.316097, 0.754556,-0.307531;;,
+ 62;3; -0.316097, 0.754556,-0.382085;;,
+ 63;3; -0.316097, 0.754556,-0.446637;;,
+ 64;3; -0.316097, 0.754556,-0.487225;;,
+ 65;3; -0.316097, 0.754556,-0.500000;;,
+ 66;3; -0.316097, 0.754556,-0.484078;;,
+ 67;3; -0.316097, 0.754556,-0.440649;;,
+ 68;3; -0.316097, 0.754556,-0.375753;;,
+ 69;3; -0.316097, 0.754556,-0.295300;;,
+ 70;3; -0.316097, 0.754556,-0.205809;;,
+ 71;3; -0.316097, 0.754556,-0.115669;;,
+ 72;3; -0.316097, 0.754556,-0.038027;;,
+ 73;3; -0.316097, 0.754556, 0.000000;;,
+ 74;3; -0.280185, 1.779512,-1.040664;;,
+ 75;3; -0.280185, 1.791992,-1.040664;;,
+ 76;3; -0.280185, 1.829242,-1.040664;;,
+ 77;3; -0.280185, 1.887885,-1.040664;;,
+ 78;3; -0.280185, 1.959322,-1.040664;;,
+ 79;3; -0.280185, 2.030761,-1.040664;;,
+ 80;3; -0.280185, 2.089408,-1.040664;;,
+ 81;3; -0.280185, 2.126663,-1.040664;;,
+ 82;3; -0.280185, 2.139145,-1.040664;;,
+ 83;3; -0.280185, 2.127405,-1.040664;;,
+ 84;3; -0.280185, 2.092366,-1.040664;;,
+ 85;3; -0.280185, 2.037206,-1.040664;;,
+ 86;3; -0.280185, 1.970016,-1.040664;;,
+ 87;3; -0.280185, 1.902828,-1.040664;;,
+ 88;3; -0.280185, 1.847672,-1.040664;;,
+ 89;3; -0.280185, 1.812637,-1.040664;;,
+ 90;3; -0.280185, 1.800899,-1.040664;;,
+ 91;3; -0.280185, 1.811608,-1.040664;;,
+ 92;3; -0.280185, 1.843557,-1.040664;;,
+ 93;3; -0.280185, 1.893841,-1.040664;;,
+ 94;3; -0.280185, 1.955109,-1.040664;;,
+ 95;3; -0.280185, 2.016426,-1.040664;;,
+ 96;3; -0.280185, 2.066823,-1.040664;;,
+ 97;3; -0.280185, 2.098878,-1.040664;;,
+ 98;3; -0.280185, 2.109629,-1.040664;;,
+ 99;3; -0.280185, 2.098046,-1.040664;;,
+ 100;3; -0.280185, 2.063213,-1.040664;;,
+ 101;3; -0.280185, 2.008193,-1.040664;;,
+ 102;3; -0.280185, 1.941528,-1.040664;;,
+ 103;3; -0.280185, 1.875865,-1.040664;;,
+ 104;3; -0.280185, 1.823099,-1.040664;;,
+ 105;3; -0.280185, 1.790307,-1.040664;;,
+ 106;3; -0.280185, 1.779512,-1.040664;;,
+ 107;3; -0.296230, 1.779106,-1.035724;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 82;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 83;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 84;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 85;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 86;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 87;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 88;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 89;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 91;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 92;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 93;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 94;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 95;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 96;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 97;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 98;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 99;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_IK_Right_hand}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.304691, 0.744702, 0.000000;;,
+ 1;3; 0.304691, 0.744702,-0.000157;;,
+ 2;3; 0.304691, 0.744702,-0.000649;;,
+ 3;3; 0.304691, 0.744702,-0.001493;;,
+ 4;3; 0.304691, 0.744702,-0.002680;;,
+ 5;3; 0.304691, 0.744702,-0.004156;;,
+ 6;3; 0.304691, 0.744702,-0.005831;;,
+ 7;3; 0.304691, 0.744702,-0.007595;;,
+ 8;3; 0.304691, 0.744702,-0.009345;;,
+ 9;3; 0.304691, 0.744702,-0.011001;;,
+ 10;3; 0.304691, 0.744702,-0.012516;;,
+ 11;3; 0.304691, 0.744702,-0.014113;;,
+ 12;3; 0.304691, 0.744702,-0.016015;;,
+ 13;3; 0.304691, 0.744702,-0.018164;;,
+ 14;3; 0.304691, 0.744702,-0.020452;;,
+ 15;3; 0.304691, 0.744702,-0.022720;;,
+ 16;3; 0.304691, 0.744702,-0.024788;;,
+ 17;3; 0.304691, 0.744702,-0.026497;;,
+ 18;3; 0.304691, 0.744702,-0.027742;;,
+ 19;3; 0.304691, 0.744702,-0.028480;;,
+ 20;3; 0.304691, 0.744702,-0.028719;;,
+ 21;3; 0.304691, 0.744702,-0.028537;;,
+ 22;3; 0.304691, 0.744702,-0.027970;;,
+ 23;3; 0.304691, 0.744702,-0.027003;;,
+ 24;3; 0.304691, 0.744702,-0.025658;;,
+ 25;3; 0.304691, 0.744702,-0.024003;;,
+ 26;3; 0.304691, 0.744702,-0.022149;;,
+ 27;3; 0.304691, 0.744702,-0.020229;;,
+ 28;3; 0.304691, 0.744702,-0.018363;;,
+ 29;3; 0.304691, 0.744702,-0.016638;;,
+ 30;3; 0.304691, 0.744702,-0.015105;;,
+ 31;3; 0.304691, 0.744702,-0.013623;;,
+ 32;3; 0.304691, 0.744702,-0.012053;;,
+ 33;3; 0.304691, 0.744702,-0.010419;;,
+ 34;3; 0.304691, 0.744702,-0.008746;;,
+ 35;3; 0.304691, 0.744702,-0.007059;;,
+ 36;3; 0.304691, 0.744702,-0.005387;;,
+ 37;3; 0.304691, 0.744702,-0.003770;;,
+ 38;3; 0.304691, 0.744702,-0.002265;;,
+ 39;3; 0.304691, 0.744702,-0.000977;;,
+ 40;3; 0.304691, 0.744702,-0.000156;;,
+ 41;3; 0.304691, 0.744702, 0.000000;;,
+ 42;3; 0.304691, 0.744702,-0.033814;;,
+ 43;3; 0.304691, 0.744702,-0.108158;;,
+ 44;3; 0.304691, 0.744702,-0.198239;;,
+ 45;3; 0.304691, 0.744702,-0.289641;;,
+ 46;3; 0.304691, 0.744702,-0.372553;;,
+ 47;3; 0.304691, 0.744702,-0.439437;;,
+ 48;3; 0.304691, 0.744702,-0.483890;;,
+ 49;3; 0.304691, 0.744702,-0.500000;;,
+ 50;3; 0.304691, 0.744702,-0.489994;;,
+ 51;3; 0.304691, 0.744702,-0.458565;;,
+ 52;3; 0.304691, 0.744702,-0.405217;;,
+ 53;3; 0.304691, 0.744702,-0.332884;;,
+ 54;3; 0.304691, 0.744702,-0.248324;;,
+ 55;3; 0.304691, 0.744702,-0.160156;;,
+ 56;3; 0.304691, 0.744702,-0.075834;;,
+ 57;3; 0.304691, 0.744702, 0.000000;;,
+ 58;3; 0.304691, 0.744702, 0.077935;;,
+ 59;3; 0.304691, 0.744702, 0.162806;;,
+ 60;3; 0.304691, 0.744702, 0.236963;;,
+ 61;3; 0.304691, 0.744702, 0.307532;;,
+ 62;3; 0.304691, 0.744702, 0.382086;;,
+ 63;3; 0.304691, 0.744702, 0.446638;;,
+ 64;3; 0.304691, 0.744702, 0.487225;;,
+ 65;3; 0.304691, 0.744702, 0.500000;;,
+ 66;3; 0.304691, 0.744702, 0.499392;;,
+ 67;3; 0.304691, 0.744702, 0.495075;;,
+ 68;3; 0.304691, 0.744702, 0.482976;;,
+ 69;3; 0.304691, 0.744702, 0.458109;;,
+ 70;3; 0.304691, 0.744702, 0.413662;;,
+ 71;3; 0.304691, 0.744702, 0.339134;;,
+ 72;3; 0.304691, 0.744702, 0.215665;;,
+ 73;3; 0.304691, 0.744702, 0.000000;;,
+ 74;3; 0.340603, 1.781662,-1.045200;;,
+ 75;3; 0.340603, 1.791563,-1.045200;;,
+ 76;3; 0.340603, 1.821117,-1.045200;;,
+ 77;3; 0.340603, 1.867644,-1.045200;;,
+ 78;3; 0.340603, 1.924320,-1.045200;;,
+ 79;3; 0.340603, 1.980997,-1.045200;;,
+ 80;3; 0.340603, 2.027524,-1.045200;;,
+ 81;3; 0.340603, 2.057079,-1.045200;;,
+ 82;3; 0.340603, 2.066980,-1.045200;;,
+ 83;3; 0.340603, 2.059355,-1.045200;;,
+ 84;3; 0.340603, 2.036595,-1.045200;;,
+ 85;3; 0.340603, 2.000763,-1.045200;;,
+ 86;3; 0.340603, 1.957116,-1.045200;;,
+ 87;3; 0.340603, 1.913468,-1.045200;;,
+ 88;3; 0.340603, 1.877638,-1.045200;;,
+ 89;3; 0.340603, 1.854878,-1.045200;;,
+ 90;3; 0.340603, 1.847253,-1.045200;;,
+ 91;3; 0.340603, 1.856014,-1.045200;;,
+ 92;3; 0.340603, 1.882160,-1.045200;;,
+ 93;3; 0.340603, 1.923317,-1.045200;;,
+ 94;3; 0.340603, 1.973458,-1.045200;;,
+ 95;3; 0.340603, 2.023617,-1.045200;;,
+ 96;3; 0.340603, 2.064815,-1.045200;;,
+ 97;3; 0.340603, 2.090999,-1.045200;;,
+ 98;3; 0.340603, 2.099775,-1.045200;;,
+ 99;3; 0.340603, 2.088636,-1.045200;;,
+ 100;3; 0.340603, 2.055114,-1.045200;;,
+ 101;3; 0.340603, 2.002126,-1.045200;;,
+ 102;3; 0.340603, 1.937877,-1.045200;;,
+ 103;3; 0.340603, 1.874564,-1.045200;;,
+ 104;3; 0.340603, 1.823682,-1.045200;;,
+ 105;3; 0.340603, 1.792067,-1.045200;;,
+ 106;3; 0.340603, 1.781662,-1.045200;;,
+ 107;3; 0.347242, 1.784378,-1.046669;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 82;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 83;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 84;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 85;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 86;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 87;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 88;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 89;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 91;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 92;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 93;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 94;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 95;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 96;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 97;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 98;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 99;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Body}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.000000, 0.855036, 0.000000;;,
+ 1;3; 0.000000, 0.855036, 0.000000;;,
+ 2;3; 0.000000, 0.855036, 0.000000;;,
+ 3;3; 0.000000, 0.855036, 0.000000;;,
+ 4;3; 0.000000, 0.855036, 0.000000;;,
+ 5;3; 0.000000, 0.855036, 0.000000;;,
+ 6;3; 0.000000, 0.855036, 0.000000;;,
+ 7;3; 0.000000, 0.855036, 0.000000;;,
+ 8;3; 0.000000, 0.855036, 0.000000;;,
+ 9;3; 0.000000, 0.855036, 0.000000;;,
+ 10;3; 0.000000, 0.855036, 0.000000;;,
+ 11;3; 0.000000, 0.855036, 0.000000;;,
+ 12;3; 0.000000, 0.855036, 0.000000;;,
+ 13;3; 0.000000, 0.855036, 0.000000;;,
+ 14;3; 0.000000, 0.855036, 0.000000;;,
+ 15;3; 0.000000, 0.855036, 0.000000;;,
+ 16;3; 0.000000, 0.855036, 0.000000;;,
+ 17;3; 0.000000, 0.855036, 0.000000;;,
+ 18;3; 0.000000, 0.855036, 0.000000;;,
+ 19;3; 0.000000, 0.855036, 0.000000;;,
+ 20;3; 0.000000, 0.855036, 0.000000;;,
+ 21;3; 0.000000, 0.855036, 0.000000;;,
+ 22;3; 0.000000, 0.855036, 0.000000;;,
+ 23;3; 0.000000, 0.855036, 0.000000;;,
+ 24;3; 0.000000, 0.855036, 0.000000;;,
+ 25;3; 0.000000, 0.855036, 0.000000;;,
+ 26;3; 0.000000, 0.855036, 0.000000;;,
+ 27;3; 0.000000, 0.855036, 0.000000;;,
+ 28;3; 0.000000, 0.855036, 0.000000;;,
+ 29;3; 0.000000, 0.855036, 0.000000;;,
+ 30;3; 0.000000, 0.855036, 0.000000;;,
+ 31;3; 0.000000, 0.855036, 0.000000;;,
+ 32;3; 0.000000, 0.855036, 0.000000;;,
+ 33;3; 0.000000, 0.855036, 0.000000;;,
+ 34;3; 0.000000, 0.855036, 0.000000;;,
+ 35;3; 0.000000, 0.855036, 0.000000;;,
+ 36;3; 0.000000, 0.855036, 0.000000;;,
+ 37;3; 0.000000, 0.855036, 0.000000;;,
+ 38;3; 0.000000, 0.855036, 0.000000;;,
+ 39;3; 0.000000, 0.855036, 0.000000;;,
+ 40;3; 0.000000, 0.855036, 0.000000;;,
+ 41;3; 0.000000, 0.855036, 0.000000;;,
+ 42;3; 0.000000, 0.855036, 0.000000;;,
+ 43;3; 0.000000, 0.855036, 0.000000;;,
+ 44;3; 0.000000, 0.855036, 0.000000;;,
+ 45;3; 0.000000, 0.855036, 0.000000;;,
+ 46;3; 0.000000, 0.855036, 0.000000;;,
+ 47;3; 0.000000, 0.855036, 0.000000;;,
+ 48;3; 0.000000, 0.855036, 0.000000;;,
+ 49;3; 0.000000, 0.855036, 0.000000;;,
+ 50;3; 0.000000, 0.855036, 0.000000;;,
+ 51;3; 0.000000, 0.855036, 0.000000;;,
+ 52;3; 0.000000, 0.855036, 0.000000;;,
+ 53;3; 0.000000, 0.855036, 0.000000;;,
+ 54;3; 0.000000, 0.855036, 0.000000;;,
+ 55;3; 0.000000, 0.855036, 0.000000;;,
+ 56;3; 0.000000, 0.855036, 0.000000;;,
+ 57;3; 0.000000, 0.855036, 0.000000;;,
+ 58;3; 0.000000, 0.855036, 0.000000;;,
+ 59;3; 0.000000, 0.855036, 0.000000;;,
+ 60;3; 0.000000, 0.855036, 0.000000;;,
+ 61;3; 0.000000, 0.855036, 0.000000;;,
+ 62;3; 0.000000, 0.855036, 0.000000;;,
+ 63;3; 0.000000, 0.855036, 0.000000;;,
+ 64;3; 0.000000, 0.855036, 0.000000;;,
+ 65;3; 0.000000, 0.855036, 0.000000;;,
+ 66;3; 0.000000, 0.855036, 0.000000;;,
+ 67;3; 0.000000, 0.855036, 0.000000;;,
+ 68;3; 0.000000, 0.855036, 0.000000;;,
+ 69;3; 0.000000, 0.855036, 0.000000;;,
+ 70;3; 0.000000, 0.855036, 0.000000;;,
+ 71;3; 0.000000, 0.855036, 0.000000;;,
+ 72;3; 0.000000, 0.855036, 0.000000;;,
+ 73;3; 0.000000, 0.855036, 0.000000;;,
+ 74;3; 0.000000, 1.033846, 0.000000;;,
+ 75;3; 0.000000, 1.033846, 0.000000;;,
+ 76;3; 0.000000, 1.033846, 0.000000;;,
+ 77;3; 0.000000, 1.033846, 0.000000;;,
+ 78;3; 0.000000, 1.033846, 0.000000;;,
+ 79;3; 0.000000, 1.033846, 0.000000;;,
+ 80;3; 0.000000, 1.033846, 0.000000;;,
+ 81;3; 0.000000, 1.033846, 0.000000;;,
+ 82;3; 0.000000, 1.033846, 0.000000;;,
+ 83;3; 0.000000, 1.033846, 0.000000;;,
+ 84;3; 0.000000, 1.033846, 0.000000;;,
+ 85;3; 0.000000, 1.033846, 0.000000;;,
+ 86;3; 0.000000, 1.033846, 0.000000;;,
+ 87;3; 0.000000, 1.033846, 0.000000;;,
+ 88;3; 0.000000, 1.033846, 0.000000;;,
+ 89;3; 0.000000, 1.033846, 0.000000;;,
+ 90;3; 0.000000, 1.033846, 0.000000;;,
+ 91;3; 0.000000, 1.033846, 0.000000;;,
+ 92;3; 0.000000, 1.033846, 0.000000;;,
+ 93;3; 0.000000, 1.033846, 0.000000;;,
+ 94;3; 0.000000, 1.033846, 0.000000;;,
+ 95;3; 0.000000, 1.033846, 0.000000;;,
+ 96;3; 0.000000, 1.033846, 0.000000;;,
+ 97;3; 0.000000, 1.033846, 0.000000;;,
+ 98;3; 0.000000, 1.033846, 0.000000;;,
+ 99;3; 0.000000, 1.033846, 0.000000;;,
+ 100;3; 0.000000, 1.033846, 0.000000;;,
+ 101;3; 0.000000, 1.033846, 0.000000;;,
+ 102;3; 0.000000, 1.033846, 0.000000;;,
+ 103;3; 0.000000, 1.033846, 0.000000;;,
+ 104;3; 0.000000, 1.033846, 0.000000;;,
+ 105;3; 0.000000, 1.033846, 0.000000;;,
+ 106;3; 0.000000, 1.033846, 0.000000;;,
+ 107;3; 0.000000, 1.033846, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000,-0.000000, 0.000000, 0.000000;;,
+ 74;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 75;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 76;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 77;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 78;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 79;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 80;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 81;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 82;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 83;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 84;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 85;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 86;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 87;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 88;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 89;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 90;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 91;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 92;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 93;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 94;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 95;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 96;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 97;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 98;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 99;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 100;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 101;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 102;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 103;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 104;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 105;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 106;4; -0.998689,-0.051182,-0.000000, 0.000000;;,
+ 107;4; -0.998689,-0.051182,-0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_001}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.225856, 0.800000, 0.000000;;,
+ 1;3; 0.225856, 0.800000, 0.000000;;,
+ 2;3; 0.225856, 0.800000, 0.000000;;,
+ 3;3; 0.225856, 0.800000, 0.000000;;,
+ 4;3; 0.225856, 0.800000, 0.000000;;,
+ 5;3; 0.225856, 0.800000, 0.000000;;,
+ 6;3; 0.225856, 0.800000, 0.000000;;,
+ 7;3; 0.225856, 0.800000, 0.000000;;,
+ 8;3; 0.225856, 0.800000, 0.000000;;,
+ 9;3; 0.225856, 0.800000, 0.000000;;,
+ 10;3; 0.225856, 0.800000, 0.000000;;,
+ 11;3; 0.225856, 0.800000, 0.000000;;,
+ 12;3; 0.225856, 0.800000, 0.000000;;,
+ 13;3; 0.225856, 0.800000, 0.000000;;,
+ 14;3; 0.225856, 0.800000, 0.000000;;,
+ 15;3; 0.225856, 0.800000, 0.000000;;,
+ 16;3; 0.225856, 0.800000, 0.000000;;,
+ 17;3; 0.225856, 0.800000, 0.000000;;,
+ 18;3; 0.225856, 0.800000, 0.000000;;,
+ 19;3; 0.225856, 0.800000, 0.000000;;,
+ 20;3; 0.225856, 0.800000, 0.000000;;,
+ 21;3; 0.225856, 0.800000, 0.000000;;,
+ 22;3; 0.225856, 0.800000, 0.000000;;,
+ 23;3; 0.225856, 0.800000, 0.000000;;,
+ 24;3; 0.225856, 0.800000, 0.000000;;,
+ 25;3; 0.225856, 0.800000, 0.000000;;,
+ 26;3; 0.225856, 0.800000, 0.000000;;,
+ 27;3; 0.225856, 0.800000, 0.000000;;,
+ 28;3; 0.225856, 0.800000, 0.000000;;,
+ 29;3; 0.225856, 0.800000, 0.000000;;,
+ 30;3; 0.225856, 0.800000, 0.000000;;,
+ 31;3; 0.225856, 0.800000, 0.000000;;,
+ 32;3; 0.225856, 0.800000, 0.000000;;,
+ 33;3; 0.225856, 0.800000, 0.000000;;,
+ 34;3; 0.225856, 0.800000, 0.000000;;,
+ 35;3; 0.225856, 0.800000, 0.000000;;,
+ 36;3; 0.225856, 0.800000, 0.000000;;,
+ 37;3; 0.225856, 0.800000, 0.000000;;,
+ 38;3; 0.225856, 0.800000, 0.000000;;,
+ 39;3; 0.225856, 0.800000, 0.000000;;,
+ 40;3; 0.225856, 0.800000, 0.000000;;,
+ 41;3; 0.225856, 0.800000, 0.000000;;,
+ 42;3; 0.225856, 0.800000, 0.000000;;,
+ 43;3; 0.225856, 0.800000, 0.000000;;,
+ 44;3; 0.225856, 0.800000, 0.000000;;,
+ 45;3; 0.225856, 0.800000, 0.000000;;,
+ 46;3; 0.225856, 0.800000, 0.000000;;,
+ 47;3; 0.225856, 0.800000, 0.000000;;,
+ 48;3; 0.225856, 0.800000, 0.000000;;,
+ 49;3; 0.225856, 0.800000, 0.000000;;,
+ 50;3; 0.225856, 0.800000, 0.000000;;,
+ 51;3; 0.225856, 0.800000, 0.000000;;,
+ 52;3; 0.225856, 0.800000, 0.000000;;,
+ 53;3; 0.225856, 0.800000, 0.000000;;,
+ 54;3; 0.225856, 0.800000, 0.000000;;,
+ 55;3; 0.225856, 0.800000, 0.000000;;,
+ 56;3; 0.225856, 0.800000, 0.000000;;,
+ 57;3; 0.225856, 0.800000, 0.000000;;,
+ 58;3; 0.225856, 0.800000, 0.000000;;,
+ 59;3; 0.225856, 0.800000, 0.000000;;,
+ 60;3; 0.225856, 0.800000, 0.000000;;,
+ 61;3; 0.225856, 0.800000, 0.000000;;,
+ 62;3; 0.225856, 0.800000, 0.000000;;,
+ 63;3; 0.225856, 0.800000, 0.000000;;,
+ 64;3; 0.225856, 0.800000, 0.000000;;,
+ 65;3; 0.225856, 0.800000, 0.000000;;,
+ 66;3; 0.225856, 0.800000, 0.000000;;,
+ 67;3; 0.225856, 0.800000, 0.000000;;,
+ 68;3; 0.225856, 0.800000, 0.000000;;,
+ 69;3; 0.225856, 0.800000, 0.000000;;,
+ 70;3; 0.225856, 0.800000, 0.000000;;,
+ 71;3; 0.225856, 0.800000, 0.000000;;,
+ 72;3; 0.225856, 0.800000, 0.000000;;,
+ 73;3; 0.225856, 0.800000, 0.000000;;,
+ 74;3; 0.225856, 0.800000, 0.000000;;,
+ 75;3; 0.225856, 0.800000, 0.000000;;,
+ 76;3; 0.225856, 0.800000, 0.000000;;,
+ 77;3; 0.225856, 0.800000, 0.000000;;,
+ 78;3; 0.225856, 0.800000, 0.000000;;,
+ 79;3; 0.225856, 0.800000, 0.000000;;,
+ 80;3; 0.225856, 0.800000, 0.000000;;,
+ 81;3; 0.225856, 0.800000, 0.000000;;,
+ 82;3; 0.225856, 0.800000, 0.000000;;,
+ 83;3; 0.225856, 0.800000, 0.000000;;,
+ 84;3; 0.225856, 0.800000, 0.000000;;,
+ 85;3; 0.225856, 0.800000, 0.000000;;,
+ 86;3; 0.225856, 0.800000, 0.000000;;,
+ 87;3; 0.225856, 0.800000, 0.000000;;,
+ 88;3; 0.225856, 0.800000, 0.000000;;,
+ 89;3; 0.225856, 0.800000, 0.000000;;,
+ 90;3; 0.225856, 0.800000, 0.000000;;,
+ 91;3; 0.225856, 0.800000, 0.000000;;,
+ 92;3; 0.225856, 0.800000, 0.000000;;,
+ 93;3; 0.225856, 0.800000, 0.000000;;,
+ 94;3; 0.225856, 0.800000, 0.000000;;,
+ 95;3; 0.225856, 0.800000, 0.000000;;,
+ 96;3; 0.225856, 0.800000, 0.000000;;,
+ 97;3; 0.225856, 0.800000, 0.000000;;,
+ 98;3; 0.225856, 0.800000, 0.000000;;,
+ 99;3; 0.225856, 0.800000, 0.000000;;,
+ 100;3; 0.225856, 0.800000, 0.000000;;,
+ 101;3; 0.225856, 0.800000, 0.000000;;,
+ 102;3; 0.225856, 0.800000, 0.000000;;,
+ 103;3; 0.225856, 0.800000, 0.000000;;,
+ 104;3; 0.225856, 0.800000, 0.000000;;,
+ 105;3; 0.225856, 0.800000, 0.000000;;,
+ 106;3; 0.225856, 0.800000, 0.000000;;,
+ 107;3; 0.225856, 0.800000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 1;4; 0.000113, 0.998932, 0.046192, 0.000005;;,
+ 2;4; 0.000463, 0.998931, 0.046192, 0.000021;;,
+ 3;4; 0.001052, 0.998930, 0.046191, 0.000049;;,
+ 4;4; 0.001861, 0.998928, 0.046191, 0.000086;;,
+ 5;4; 0.002839, 0.998925, 0.046191, 0.000131;;,
+ 6;4; 0.003910, 0.998921, 0.046191, 0.000181;;,
+ 7;4; 0.004990, 0.998917, 0.046191, 0.000231;;,
+ 8;4; 0.006002, 0.998912, 0.046191, 0.000277;;,
+ 9;4; 0.006897, 0.998908, 0.046190, 0.000319;;,
+ 10;4; 0.007645, 0.998903, 0.046190, 0.000353;;,
+ 11;4; 0.008353, 0.998898, 0.046190, 0.000386;;,
+ 12;4; 0.009124, 0.998891, 0.046190, 0.000422;;,
+ 13;4; 0.009935, 0.998884, 0.046189, 0.000459;;,
+ 14;4; 0.010752, 0.998875, 0.046189, 0.000497;;,
+ 15;4; 0.011526, 0.998866, 0.046189, 0.000533;;,
+ 16;4; 0.012206, 0.998858, 0.046188, 0.000564;;,
+ 17;4; 0.012752, 0.998851, 0.046188, 0.000590;;,
+ 18;4; 0.013140, 0.998846, 0.046188, 0.000608;;,
+ 19;4; 0.013366, 0.998843, 0.046187, 0.000618;;,
+ 20;4; 0.013438, 0.998842, 0.046187, 0.000621;;,
+ 21;4; 0.013396, 0.998843, 0.046187, 0.000619;;,
+ 22;4; 0.013259, 0.998845, 0.046188, 0.000613;;,
+ 23;4; 0.013015, 0.998849, 0.046188, 0.000602;;,
+ 24;4; 0.012659, 0.998854, 0.046188, 0.000585;;,
+ 25;4; 0.012193, 0.998861, 0.046188, 0.000564;;,
+ 26;4; 0.011633, 0.998868, 0.046189, 0.000538;;,
+ 27;4; 0.011006, 0.998875, 0.046189, 0.000509;;,
+ 28;4; 0.010339, 0.998881, 0.046189, 0.000478;;,
+ 29;4; 0.009657, 0.998887, 0.046189, 0.000447;;,
+ 30;4; 0.008979, 0.998892, 0.046190, 0.000415;;,
+ 31;4; 0.008235, 0.998897, 0.046190, 0.000381;;,
+ 32;4; 0.007367, 0.998902, 0.046190, 0.000341;;,
+ 33;4; 0.006405, 0.998906, 0.046190, 0.000296;;,
+ 34;4; 0.005374, 0.998911, 0.046191, 0.000248;;,
+ 35;4; 0.004301, 0.998916, 0.046191, 0.000199;;,
+ 36;4; 0.003216, 0.998920, 0.046191, 0.000149;;,
+ 37;4; 0.002157, 0.998924, 0.046191, 0.000100;;,
+ 38;4; 0.001180, 0.998928, 0.046191, 0.000055;;,
+ 39;4; 0.000383, 0.998931, 0.046192, 0.000018;;,
+ 40;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 41;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 42;4; 0.016411, 0.996908, 0.046098, 0.000759;;,
+ 43;4; 0.052503, 0.992456, 0.045892, 0.002427;;,
+ 44;4; 0.096241, 0.987060, 0.045643, 0.004450;;,
+ 45;4; 0.140624, 0.981585, 0.045389, 0.006502;;,
+ 46;4; 0.180886, 0.976618, 0.045160, 0.008364;;,
+ 47;4; 0.213365, 0.972611, 0.044974, 0.009866;;,
+ 48;4; 0.234951, 0.969948, 0.044851, 0.010864;;,
+ 49;4; 0.242773, 0.968983, 0.044807, 0.011226;;,
+ 50;4; 0.234348, 0.970022, 0.044855, 0.010836;;,
+ 51;4; 0.209203, 0.973124, 0.044998, 0.009674;;,
+ 52;4; 0.169616, 0.978008, 0.045224, 0.007843;;,
+ 53;4; 0.121393, 0.983958, 0.045499, 0.005613;;,
+ 54;4; 0.073168, 0.989907, 0.045774, 0.003383;;,
+ 55;4; 0.033576, 0.994791, 0.046000, 0.001552;;,
+ 56;4; 0.008426, 0.997893, 0.046144, 0.000389;;,
+ 57;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 58;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 59;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 60;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 61;4; -0.021739, 0.996233, 0.046067,-0.001004;;,
+ 62;4; -0.082955, 0.988627, 0.045715,-0.003834;;,
+ 63;4; -0.161536, 0.978863, 0.045264,-0.007469;;,
+ 64;4; -0.222735, 0.971258, 0.044912,-0.010299;;,
+ 65;4; -0.244464, 0.968558, 0.044787,-0.011304;;,
+ 66;4; -0.244163, 0.969535, 0.044832,-0.011290;;,
+ 67;4; -0.242008, 0.972228, 0.044957,-0.011186;;,
+ 68;4; -0.235917, 0.976278, 0.045144,-0.010887;;,
+ 69;4; -0.223338, 0.981298, 0.045376,-0.010263;;,
+ 70;4; -0.200843, 0.986838, 0.045632,-0.009147;;,
+ 71;4; -0.163332, 0.992312, 0.045885,-0.007310;;,
+ 72;4; -0.102212, 0.996851, 0.046095,-0.004424;;,
+ 73;4; -0.000000, 0.998933, 0.046192,-0.000000;;,
+ 74;4; 0.726097, 0.686039, 0.031723, 0.033575;;,
+ 75;4; 0.765734, 0.638365, 0.029519, 0.035296;;,
+ 76;4; 0.789482, 0.608852, 0.028154, 0.036416;;,
+ 77;4; 0.804069, 0.590470, 0.027304, 0.037129;;,
+ 78;4; 0.812819, 0.579387, 0.026791, 0.037561;;,
+ 79;4; 0.817712, 0.573190, 0.026505, 0.037803;;,
+ 80;4; 0.820080, 0.570202, 0.026367, 0.037919;;,
+ 81;4; 0.820918, 0.569151, 0.026318, 0.037960;;,
+ 82;4; 0.821035, 0.569006, 0.026311, 0.037965;;,
+ 83;4; 0.818160, 0.572615, 0.026478, 0.037832;;,
+ 84;4; 0.809580, 0.583387, 0.026976, 0.037436;;,
+ 85;4; 0.796072, 0.600345, 0.027761, 0.036811;;,
+ 86;4; 0.779617, 0.621003, 0.028716, 0.036050;;,
+ 87;4; 0.763162, 0.641661, 0.029671, 0.035289;;,
+ 88;4; 0.749653, 0.658620, 0.030455, 0.034665;;,
+ 89;4; 0.741073, 0.669392, 0.030953, 0.034268;;,
+ 90;4; 0.738198, 0.673000, 0.031120, 0.034135;;,
+ 91;4; 0.741328, 0.669018, 0.030936, 0.034280;;,
+ 92;4; 0.750670, 0.657133, 0.030386, 0.034712;;,
+ 93;4; 0.765376, 0.638421, 0.029521, 0.035392;;,
+ 94;4; 0.783291, 0.615627, 0.028467, 0.036220;;,
+ 95;4; 0.801206, 0.592833, 0.027413, 0.037048;;,
+ 96;4; 0.815912, 0.574122, 0.026548, 0.037729;;,
+ 97;4; 0.825254, 0.562236, 0.025998, 0.038160;;,
+ 98;4; 0.828383, 0.558254, 0.025814, 0.038305;;,
+ 99;4; 0.824723, 0.562805, 0.026025, 0.038136;;,
+ 100;4; 0.813799, 0.576388, 0.026653, 0.037631;;,
+ 101;4; 0.796600, 0.597771, 0.027642, 0.036835;;,
+ 102;4; 0.775650, 0.623820, 0.028846, 0.035867;;,
+ 103;4; 0.754698, 0.649870, 0.030051, 0.034898;;,
+ 104;4; 0.737498, 0.671257, 0.031040, 0.034102;;,
+ 105;4; 0.726572, 0.684843, 0.031668, 0.033597;;,
+ 106;4; 0.722912, 0.689395, 0.031878, 0.033428;;,
+ 107;4; 0.722912, 0.689395, 0.031878, 0.033428;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 0.999999;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.238835, 0.800000, 0.000000;;,
+ 1;3; -0.238835, 0.800000, 0.000000;;,
+ 2;3; -0.238835, 0.800000, 0.000000;;,
+ 3;3; -0.238835, 0.800000, 0.000000;;,
+ 4;3; -0.238835, 0.800000, 0.000000;;,
+ 5;3; -0.238835, 0.800000, 0.000000;;,
+ 6;3; -0.238835, 0.800000, 0.000000;;,
+ 7;3; -0.238835, 0.800000, 0.000000;;,
+ 8;3; -0.238835, 0.800000, 0.000000;;,
+ 9;3; -0.238835, 0.800000, 0.000000;;,
+ 10;3; -0.238835, 0.800000, 0.000000;;,
+ 11;3; -0.238835, 0.800000, 0.000000;;,
+ 12;3; -0.238835, 0.800000, 0.000000;;,
+ 13;3; -0.238835, 0.800000, 0.000000;;,
+ 14;3; -0.238835, 0.800000, 0.000000;;,
+ 15;3; -0.238835, 0.800000, 0.000000;;,
+ 16;3; -0.238835, 0.800000, 0.000000;;,
+ 17;3; -0.238835, 0.800000, 0.000000;;,
+ 18;3; -0.238835, 0.800000, 0.000000;;,
+ 19;3; -0.238835, 0.800000, 0.000000;;,
+ 20;3; -0.238835, 0.800000, 0.000000;;,
+ 21;3; -0.238835, 0.800000, 0.000000;;,
+ 22;3; -0.238835, 0.800000, 0.000000;;,
+ 23;3; -0.238835, 0.800000, 0.000000;;,
+ 24;3; -0.238835, 0.800000, 0.000000;;,
+ 25;3; -0.238835, 0.800000, 0.000000;;,
+ 26;3; -0.238835, 0.800000, 0.000000;;,
+ 27;3; -0.238835, 0.800000, 0.000000;;,
+ 28;3; -0.238835, 0.800000, 0.000000;;,
+ 29;3; -0.238835, 0.800000, 0.000000;;,
+ 30;3; -0.238835, 0.800000, 0.000000;;,
+ 31;3; -0.238835, 0.800000, 0.000000;;,
+ 32;3; -0.238835, 0.800000, 0.000000;;,
+ 33;3; -0.238835, 0.800000, 0.000000;;,
+ 34;3; -0.238835, 0.800000, 0.000000;;,
+ 35;3; -0.238835, 0.800000, 0.000000;;,
+ 36;3; -0.238835, 0.800000, 0.000000;;,
+ 37;3; -0.238835, 0.800000, 0.000000;;,
+ 38;3; -0.238835, 0.800000, 0.000000;;,
+ 39;3; -0.238835, 0.800000, 0.000000;;,
+ 40;3; -0.238835, 0.800000, 0.000000;;,
+ 41;3; -0.238835, 0.800000, 0.000000;;,
+ 42;3; -0.238835, 0.800000, 0.000000;;,
+ 43;3; -0.238835, 0.800000, 0.000000;;,
+ 44;3; -0.238835, 0.800000, 0.000000;;,
+ 45;3; -0.238835, 0.800000, 0.000000;;,
+ 46;3; -0.238835, 0.800000, 0.000000;;,
+ 47;3; -0.238835, 0.800000, 0.000000;;,
+ 48;3; -0.238835, 0.800000, 0.000000;;,
+ 49;3; -0.238835, 0.800000, 0.000000;;,
+ 50;3; -0.238835, 0.800000, 0.000000;;,
+ 51;3; -0.238835, 0.800000, 0.000000;;,
+ 52;3; -0.238835, 0.800000, 0.000000;;,
+ 53;3; -0.238835, 0.800000, 0.000000;;,
+ 54;3; -0.238835, 0.800000, 0.000000;;,
+ 55;3; -0.238835, 0.800000, 0.000000;;,
+ 56;3; -0.238835, 0.800000, 0.000000;;,
+ 57;3; -0.238835, 0.800000, 0.000000;;,
+ 58;3; -0.238835, 0.800000, 0.000000;;,
+ 59;3; -0.238835, 0.800000, 0.000000;;,
+ 60;3; -0.238835, 0.800000, 0.000000;;,
+ 61;3; -0.238835, 0.800000, 0.000000;;,
+ 62;3; -0.238835, 0.800000, 0.000000;;,
+ 63;3; -0.238835, 0.800000, 0.000000;;,
+ 64;3; -0.238835, 0.800000, 0.000000;;,
+ 65;3; -0.238835, 0.800000, 0.000000;;,
+ 66;3; -0.238835, 0.800000, 0.000000;;,
+ 67;3; -0.238835, 0.800000, 0.000000;;,
+ 68;3; -0.238835, 0.800000, 0.000000;;,
+ 69;3; -0.238835, 0.800000, 0.000000;;,
+ 70;3; -0.238835, 0.800000, 0.000000;;,
+ 71;3; -0.238835, 0.800000, 0.000000;;,
+ 72;3; -0.238835, 0.800000, 0.000000;;,
+ 73;3; -0.238835, 0.800000, 0.000000;;,
+ 74;3; -0.238835, 0.800000, 0.000000;;,
+ 75;3; -0.238835, 0.800000, 0.000000;;,
+ 76;3; -0.238835, 0.800000, 0.000000;;,
+ 77;3; -0.238835, 0.800000, 0.000000;;,
+ 78;3; -0.238835, 0.800000, 0.000000;;,
+ 79;3; -0.238835, 0.800000, 0.000000;;,
+ 80;3; -0.238835, 0.800000, 0.000000;;,
+ 81;3; -0.238835, 0.800000, 0.000000;;,
+ 82;3; -0.238835, 0.800000, 0.000000;;,
+ 83;3; -0.238835, 0.800000, 0.000000;;,
+ 84;3; -0.238835, 0.800000, 0.000000;;,
+ 85;3; -0.238835, 0.800000, 0.000000;;,
+ 86;3; -0.238835, 0.800000, 0.000000;;,
+ 87;3; -0.238835, 0.800000, 0.000000;;,
+ 88;3; -0.238835, 0.800000, 0.000000;;,
+ 89;3; -0.238835, 0.800000, 0.000000;;,
+ 90;3; -0.238835, 0.800000, 0.000000;;,
+ 91;3; -0.238835, 0.800000, 0.000000;;,
+ 92;3; -0.238835, 0.800000, 0.000000;;,
+ 93;3; -0.238835, 0.800000, 0.000000;;,
+ 94;3; -0.238835, 0.800000, 0.000000;;,
+ 95;3; -0.238835, 0.800000, 0.000000;;,
+ 96;3; -0.238835, 0.800000, 0.000000;;,
+ 97;3; -0.238835, 0.800000, 0.000000;;,
+ 98;3; -0.238835, 0.800000, 0.000000;;,
+ 99;3; -0.238835, 0.800000, 0.000000;;,
+ 100;3; -0.238835, 0.800000, 0.000000;;,
+ 101;3; -0.238835, 0.800000, 0.000000;;,
+ 102;3; -0.238835, 0.800000, 0.000000;;,
+ 103;3; -0.238835, 0.800000, 0.000000;;,
+ 104;3; -0.238835, 0.800000, 0.000000;;,
+ 105;3; -0.238835, 0.800000, 0.000000;;,
+ 106;3; -0.238835, 0.800000, 0.000000;;,
+ 107;3; -0.238835, 0.800000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 1;4; 0.000396, 0.998902,-0.046776,-0.000019;;,
+ 2;4; 0.001620, 0.998891,-0.046775,-0.000076;;,
+ 3;4; 0.003679, 0.998871,-0.046774,-0.000172;;,
+ 4;4; 0.006500, 0.998842,-0.046773,-0.000304;;,
+ 5;4; 0.009901, 0.998805,-0.046771,-0.000464;;,
+ 6;4; 0.013615, 0.998761,-0.046769,-0.000638;;,
+ 7;4; 0.017338, 0.998712,-0.046767,-0.000812;;,
+ 8;4; 0.020809, 0.998661,-0.046764,-0.000975;;,
+ 9;4; 0.023851, 0.998609,-0.046762,-0.001117;;,
+ 10;4; 0.026368, 0.998557,-0.046760,-0.001235;;,
+ 11;4; 0.028711, 0.998499,-0.046757,-0.001345;;,
+ 12;4; 0.031226, 0.998427,-0.046754,-0.001462;;,
+ 13;4; 0.033841, 0.998341,-0.046750,-0.001585;;,
+ 14;4; 0.036445, 0.998248,-0.046745,-0.001707;;,
+ 15;4; 0.038889, 0.998154,-0.046741,-0.001821;;,
+ 16;4; 0.041022, 0.998067,-0.046737,-0.001921;;,
+ 17;4; 0.042723, 0.997994,-0.046733,-0.002001;;,
+ 18;4; 0.043926, 0.997941,-0.046731,-0.002057;;,
+ 19;4; 0.044623, 0.997909,-0.046729,-0.002090;;,
+ 20;4; 0.044845, 0.997898,-0.046729,-0.002100;;,
+ 21;4; 0.044841, 0.997899,-0.046729,-0.002100;;,
+ 22;4; 0.044817, 0.997900,-0.046729,-0.002099;;,
+ 23;4; 0.044742, 0.997905,-0.046729,-0.002095;;,
+ 24;4; 0.044579, 0.997913,-0.046729,-0.002088;;,
+ 25;4; 0.044290, 0.997926,-0.046730,-0.002074;;,
+ 26;4; 0.043842, 0.997946,-0.046731,-0.002053;;,
+ 27;4; 0.043222, 0.997973,-0.046732,-0.002024;;,
+ 28;4; 0.042430, 0.998006,-0.046734,-0.001987;;,
+ 29;4; 0.041484, 0.998044,-0.046736,-0.001943;;,
+ 30;4; 0.040405, 0.998088,-0.046738,-0.001892;;,
+ 31;4; 0.039231, 0.998138,-0.046740,-0.001837;;,
+ 32;4; 0.037955, 0.998194,-0.046743,-0.001777;;,
+ 33;4; 0.036535, 0.998257,-0.046746,-0.001711;;,
+ 34;4; 0.034919, 0.998325,-0.046749,-0.001635;;,
+ 35;4; 0.033044, 0.998398,-0.046752,-0.001547;;,
+ 36;4; 0.030822, 0.998476,-0.046756,-0.001443;;,
+ 37;4; 0.028124, 0.998556,-0.046760,-0.001317;;,
+ 38;4; 0.024742, 0.998640,-0.046763,-0.001159;;,
+ 39;4; 0.020284, 0.998725,-0.046767,-0.000950;;,
+ 40;4; 0.013794, 0.998810,-0.046771,-0.000646;;,
+ 41;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 42;4; -0.031189, 0.996841,-0.046679, 0.001460;;,
+ 43;4; -0.072145, 0.992300,-0.046467, 0.003378;;,
+ 44;4; -0.115348, 0.986796,-0.046209, 0.005401;;,
+ 45;4; -0.156373, 0.981211,-0.045947, 0.007322;;,
+ 46;4; -0.192148, 0.976145,-0.045710, 0.008998;;,
+ 47;4; -0.220256, 0.972058,-0.045519, 0.010314;;,
+ 48;4; -0.238588, 0.969342,-0.045392, 0.011172;;,
+ 49;4; -0.245143, 0.968358,-0.045346, 0.011479;;,
+ 50;4; -0.236636, 0.969418,-0.045395, 0.011081;;,
+ 51;4; -0.211245, 0.972582,-0.045543, 0.009892;;,
+ 52;4; -0.171272, 0.977564,-0.045777, 0.008020;;,
+ 53;4; -0.122578, 0.983632,-0.046061, 0.005739;;,
+ 54;4; -0.073882, 0.989700,-0.046345, 0.003459;;,
+ 55;4; -0.033905, 0.994681,-0.046578, 0.001587;;,
+ 56;4; -0.008509, 0.997845,-0.046726, 0.000398;;,
+ 57;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 58;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 59;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 60;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 61;4; 0.021615, 0.996236,-0.046651,-0.001011;;,
+ 62;4; 0.082482, 0.988719,-0.046299,-0.003861;;,
+ 63;4; 0.160618, 0.979066,-0.045847,-0.007521;;,
+ 64;4; 0.221468, 0.971548,-0.045495,-0.010371;;,
+ 65;4; 0.243074, 0.968879,-0.045370,-0.011383;;,
+ 66;4; 0.235291, 0.969846,-0.045415,-0.011014;;,
+ 67;4; 0.213947, 0.972508,-0.045540,-0.009989;;,
+ 68;4; 0.181951, 0.976512,-0.045727,-0.008442;;,
+ 69;4; 0.142284, 0.981474,-0.045960,-0.006525;;,
+ 70;4; 0.098338, 0.986951,-0.046216,-0.004421;;,
+ 71;4; 0.054509, 0.992362,-0.046470,-0.002372;;,
+ 72;4; 0.017496, 0.996849,-0.046680,-0.000720;;,
+ 73;4; -0.000000, 0.998905,-0.046776,-0.000000;;,
+ 74;4; 0.721174, 0.691173,-0.032366,-0.033771;;,
+ 75;4; 0.763079, 0.641077,-0.030020,-0.035614;;,
+ 76;4; 0.788198, 0.610058,-0.028567,-0.036814;;,
+ 77;4; 0.803629, 0.590736,-0.027662,-0.037576;;,
+ 78;4; 0.812887, 0.579085,-0.027117,-0.038040;;,
+ 79;4; 0.818063, 0.572572,-0.026812,-0.038299;;,
+ 80;4; 0.820568, 0.569430,-0.026665,-0.038423;;,
+ 81;4; 0.821455, 0.568326,-0.026613,-0.038466;;,
+ 82;4; 0.821578, 0.568173,-0.026606,-0.038472;;,
+ 83;4; 0.818731, 0.571759,-0.026774,-0.038339;;,
+ 84;4; 0.810231, 0.582463,-0.027275,-0.037941;;,
+ 85;4; 0.796849, 0.599314,-0.028064,-0.037314;;,
+ 86;4; 0.780548, 0.619842,-0.029025,-0.036551;;,
+ 87;4; 0.764247, 0.640369,-0.029987,-0.035788;;,
+ 88;4; 0.750865, 0.657220,-0.030776,-0.035161;;,
+ 89;4; 0.742365, 0.667924,-0.031277,-0.034763;;,
+ 90;4; 0.739518, 0.671510,-0.031445,-0.034630;;,
+ 91;4; 0.742645, 0.667513,-0.031258,-0.034776;;,
+ 92;4; 0.751981, 0.655582,-0.030699,-0.035213;;,
+ 93;4; 0.766679, 0.636798,-0.029819,-0.035901;;,
+ 94;4; 0.784583, 0.613917,-0.028748,-0.036740;;,
+ 95;4; 0.802487, 0.591036,-0.027676,-0.037578;;,
+ 96;4; 0.817184, 0.572253,-0.026797,-0.038266;;,
+ 97;4; 0.826520, 0.560322,-0.026238,-0.038704;;,
+ 98;4; 0.829648, 0.556324,-0.026051,-0.038850;;,
+ 99;4; 0.825855, 0.561033,-0.026272,-0.038673;;,
+ 100;4; 0.814535, 0.575088,-0.026930,-0.038142;;,
+ 101;4; 0.796714, 0.597215,-0.027966,-0.037308;;,
+ 102;4; 0.775005, 0.624169,-0.029228,-0.036291;;,
+ 103;4; 0.753296, 0.651125,-0.030490,-0.035275;;,
+ 104;4; 0.735473, 0.673255,-0.031527,-0.034440;;,
+ 105;4; 0.724152, 0.687313,-0.032185,-0.033910;;,
+ 106;4; 0.720358, 0.692023,-0.032405,-0.033732;;,
+ 107;4; 0.720358, 0.692023,-0.032405,-0.033732;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_003}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.144872, 0.061513, 0.000000;;,
+ 1;3; -0.144872, 0.061513, 0.000000;;,
+ 2;3; -0.144872, 0.061513, 0.000000;;,
+ 3;3; -0.144872, 0.061513, 0.000000;;,
+ 4;3; -0.144872, 0.061513, 0.000000;;,
+ 5;3; -0.144872, 0.061513, 0.000000;;,
+ 6;3; -0.144872, 0.061513, 0.000000;;,
+ 7;3; -0.144872, 0.061513, 0.000000;;,
+ 8;3; -0.144872, 0.061513, 0.000000;;,
+ 9;3; -0.144872, 0.061513, 0.000000;;,
+ 10;3; -0.144872, 0.061513, 0.000000;;,
+ 11;3; -0.144872, 0.061513, 0.000000;;,
+ 12;3; -0.144872, 0.061513, 0.000000;;,
+ 13;3; -0.144872, 0.061513, 0.000000;;,
+ 14;3; -0.144872, 0.061513, 0.000000;;,
+ 15;3; -0.144872, 0.061513, 0.000000;;,
+ 16;3; -0.144872, 0.061513, 0.000000;;,
+ 17;3; -0.144872, 0.061513, 0.000000;;,
+ 18;3; -0.144872, 0.061513, 0.000000;;,
+ 19;3; -0.144872, 0.061513, 0.000000;;,
+ 20;3; -0.144872, 0.061513, 0.000000;;,
+ 21;3; -0.144872, 0.061513, 0.000000;;,
+ 22;3; -0.144872, 0.061513, 0.000000;;,
+ 23;3; -0.144872, 0.061513, 0.000000;;,
+ 24;3; -0.144872, 0.061513, 0.000000;;,
+ 25;3; -0.144872, 0.061513, 0.000000;;,
+ 26;3; -0.144872, 0.061513, 0.000000;;,
+ 27;3; -0.144872, 0.061513, 0.000000;;,
+ 28;3; -0.144872, 0.061513, 0.000000;;,
+ 29;3; -0.144872, 0.061513, 0.000000;;,
+ 30;3; -0.144872, 0.061513, 0.000000;;,
+ 31;3; -0.144872, 0.061513, 0.000000;;,
+ 32;3; -0.144872, 0.061513, 0.000000;;,
+ 33;3; -0.144872, 0.061513, 0.000000;;,
+ 34;3; -0.144872, 0.061513, 0.000000;;,
+ 35;3; -0.144872, 0.061513, 0.000000;;,
+ 36;3; -0.144872, 0.061513, 0.000000;;,
+ 37;3; -0.144872, 0.061513, 0.000000;;,
+ 38;3; -0.144872, 0.061513, 0.000000;;,
+ 39;3; -0.144872, 0.061513, 0.000000;;,
+ 40;3; -0.144872, 0.061513, 0.000000;;,
+ 41;3; -0.144872, 0.061513, 0.000000;;,
+ 42;3; -0.144872, 0.061513, 0.000000;;,
+ 43;3; -0.144872, 0.061513, 0.000000;;,
+ 44;3; -0.144872, 0.061513, 0.000000;;,
+ 45;3; -0.144872, 0.061513, 0.000000;;,
+ 46;3; -0.144872, 0.061513, 0.000000;;,
+ 47;3; -0.144872, 0.061513, 0.000000;;,
+ 48;3; -0.144872, 0.061513, 0.000000;;,
+ 49;3; -0.144872, 0.061513, 0.000000;;,
+ 50;3; -0.144872, 0.061513, 0.000000;;,
+ 51;3; -0.144872, 0.061513, 0.000000;;,
+ 52;3; -0.144872, 0.061513, 0.000000;;,
+ 53;3; -0.144872, 0.061513, 0.000000;;,
+ 54;3; -0.144872, 0.061513, 0.000000;;,
+ 55;3; -0.144872, 0.061513, 0.000000;;,
+ 56;3; -0.144872, 0.061513, 0.000000;;,
+ 57;3; -0.144872, 0.061513, 0.000000;;,
+ 58;3; -0.144872, 0.061513, 0.000000;;,
+ 59;3; -0.144872, 0.061513, 0.000000;;,
+ 60;3; -0.144872, 0.061513, 0.000000;;,
+ 61;3; -0.144872, 0.061513, 0.000000;;,
+ 62;3; -0.144872, 0.061513, 0.000000;;,
+ 63;3; -0.144872, 0.061513, 0.000000;;,
+ 64;3; -0.144872, 0.061513, 0.000000;;,
+ 65;3; -0.144872, 0.061513, 0.000000;;,
+ 66;3; -0.144872, 0.061513, 0.000000;;,
+ 67;3; -0.144872, 0.061513, 0.000000;;,
+ 68;3; -0.144872, 0.061513, 0.000000;;,
+ 69;3; -0.144872, 0.061513, 0.000000;;,
+ 70;3; -0.144872, 0.061513, 0.000000;;,
+ 71;3; -0.144872, 0.061513, 0.000000;;,
+ 72;3; -0.144872, 0.061513, 0.000000;;,
+ 73;3; -0.144872, 0.061513, 0.000000;;,
+ 74;3; -0.144872, 0.061513, 0.000000;;,
+ 75;3; -0.144872, 0.061513, 0.000000;;,
+ 76;3; -0.144872, 0.061513, 0.000000;;,
+ 77;3; -0.144872, 0.061513, 0.000000;;,
+ 78;3; -0.144872, 0.061513, 0.000000;;,
+ 79;3; -0.144872, 0.061513, 0.000000;;,
+ 80;3; -0.144872, 0.061513, 0.000000;;,
+ 81;3; -0.144872, 0.061513, 0.000000;;,
+ 82;3; -0.144872, 0.061513, 0.000000;;,
+ 83;3; -0.144872, 0.061513, 0.000000;;,
+ 84;3; -0.144872, 0.061513, 0.000000;;,
+ 85;3; -0.144872, 0.061513, 0.000000;;,
+ 86;3; -0.144872, 0.061513, 0.000000;;,
+ 87;3; -0.144872, 0.061513, 0.000000;;,
+ 88;3; -0.144872, 0.061513, 0.000000;;,
+ 89;3; -0.144872, 0.061513, 0.000000;;,
+ 90;3; -0.144872, 0.061513, 0.000000;;,
+ 91;3; -0.144872, 0.061513, 0.000000;;,
+ 92;3; -0.144872, 0.061513, 0.000000;;,
+ 93;3; -0.144872, 0.061513, 0.000000;;,
+ 94;3; -0.144872, 0.061513, 0.000000;;,
+ 95;3; -0.144872, 0.061513, 0.000000;;,
+ 96;3; -0.144872, 0.061513, 0.000000;;,
+ 97;3; -0.144872, 0.061513, 0.000000;;,
+ 98;3; -0.144872, 0.061513, 0.000000;;,
+ 99;3; -0.144872, 0.061513, 0.000000;;,
+ 100;3; -0.144872, 0.061513, 0.000000;;,
+ 101;3; -0.144872, 0.061513, 0.000000;;,
+ 102;3; -0.144872, 0.061513, 0.000000;;,
+ 103;3; -0.144872, 0.061513, 0.000000;;,
+ 104;3; -0.144872, 0.061513, 0.000000;;,
+ 105;3; -0.144872, 0.061513, 0.000000;;,
+ 106;3; -0.144872, 0.061513, 0.000000;;,
+ 107;3; -0.144872, 0.061513, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 42;4; 0.012248, 0.998881,-0.000000,-0.000000;;,
+ 43;4; 0.039184, 0.996421,-0.000000,-0.000000;;,
+ 44;4; 0.071828, 0.993438,-0.000000,-0.000000;;,
+ 45;4; 0.104954, 0.990412,-0.000000,-0.000000;;,
+ 46;4; 0.135005, 0.987667,-0.000000,-0.000000;;,
+ 47;4; 0.159246, 0.985452,-0.000000,-0.000000;;,
+ 48;4; 0.175357, 0.983980,-0.000000,-0.000000;;,
+ 49;4; 0.181195, 0.983447,-0.000000,-0.000000;;,
+ 50;4; 0.174908, 0.984022,-0.000000,-0.000000;;,
+ 51;4; 0.156139, 0.985736,-0.000000,-0.000000;;,
+ 52;4; 0.126593, 0.988435,-0.000000,-0.000000;;,
+ 53;4; 0.090600, 0.991724,-0.000000,-0.000000;;,
+ 54;4; 0.054607, 0.995012,-0.000000,-0.000000;;,
+ 55;4; 0.025058, 0.997711,-0.000000,-0.000000;;,
+ 56;4; 0.006288, 0.999426,-0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 61;4; -0.015047, 0.998718,-0.000000,-0.000000;;,
+ 62;4; -0.057422, 0.995106,-0.000000,-0.000000;;,
+ 63;4; -0.111826, 0.990469,-0.000000,-0.000000;;,
+ 64;4; -0.154196, 0.986857,-0.000000,-0.000000;;,
+ 65;4; -0.169240, 0.985575,-0.000000,-0.000000;;,
+ 66;4; -0.166047, 0.986040,-0.000000,-0.000000;;,
+ 67;4; -0.156832, 0.987322,-0.000000,-0.000000;;,
+ 68;4; -0.142082, 0.989252,-0.000000,-0.000000;;,
+ 69;4; -0.122229, 0.991645,-0.000000,-0.000000;;,
+ 70;4; -0.097673, 0.994282,-0.000000,-0.000000;;,
+ 71;4; -0.068804, 0.996881,-0.000000,-0.000000;;,
+ 72;4; -0.036052, 0.999025,-0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 74;4; 0.053673, 0.998559,-0.000000,-0.000000;;,
+ 75;4; 0.106079, 0.991342,-0.000000,-0.000000;;,
+ 76;4; 0.163098, 0.980061,-0.000000,-0.000000;;,
+ 77;4; 0.218649, 0.967459,-0.000000,-0.000000;;,
+ 78;4; 0.269086, 0.955138,-0.000000,-0.000000;;,
+ 79;4; 0.311807, 0.944200,-0.000000,-0.000000;;,
+ 80;4; 0.344689, 0.935502,-0.000000,-0.000000;;,
+ 81;4; 0.365809, 0.929779,-0.000000,-0.000000;;,
+ 82;4; 0.373278, 0.927719,-0.000000,-0.000000;;,
+ 83;4; 0.365966, 0.930188,-0.000000,-0.000000;;,
+ 84;4; 0.343286, 0.937556,-0.000000,-0.000000;;,
+ 85;4; 0.305474, 0.949156,-0.000000,-0.000000;;,
+ 86;4; 0.255428, 0.963286,-0.000000,-0.000000;;,
+ 87;4; 0.198768, 0.977416,-0.000000,-0.000000;;,
+ 88;4; 0.142120, 0.989015,-0.000000,-0.000000;;,
+ 89;4; 0.090827, 0.996384,-0.000000,-0.000000;;,
+ 90;4; 0.047904, 0.998852,-0.000000,-0.000000;;,
+ 91;4; 0.006316, 0.997886,-0.000000,-0.000000;;,
+ 92;4; -0.040994, 0.995002,-0.000000,-0.000000;;,
+ 93;4; -0.091373, 0.990461,-0.000000,-0.000000;;,
+ 94;4; -0.140400, 0.984931,-0.000000,-0.000000;;,
+ 95;4; -0.182814, 0.979400,-0.000000,-0.000000;;,
+ 96;4; -0.214363, 0.974859,-0.000000,-0.000000;;,
+ 97;4; -0.233064, 0.971975,-0.000000,-0.000000;;,
+ 98;4; -0.239043, 0.971009,-0.000000,-0.000000;;,
+ 99;4; -0.229083, 0.971975,-0.000000,-0.000000;;,
+ 100;4; -0.199358, 0.974859,-0.000000,-0.000000;;,
+ 101;4; -0.152566, 0.979398,-0.000000,-0.000000;;,
+ 102;4; -0.095562, 0.984928,-0.000000,-0.000000;;,
+ 103;4; -0.038544, 0.990458,-0.000000,-0.000000;;,
+ 104;4; 0.008280, 0.994997,-0.000000,-0.000000;;,
+ 105;4; 0.038035, 0.997881,-0.000000,-0.000000;;,
+ 106;4; 0.048007, 0.998847,-0.000000,-0.000000;;,
+ 107;4; 0.048007, 0.998847,-0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_004}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.135398, 0.070410, 0.000000;;,
+ 1;3; 0.135398, 0.070410, 0.000000;;,
+ 2;3; 0.135398, 0.070410, 0.000000;;,
+ 3;3; 0.135398, 0.070410, 0.000000;;,
+ 4;3; 0.135398, 0.070410, 0.000000;;,
+ 5;3; 0.135398, 0.070410, 0.000000;;,
+ 6;3; 0.135398, 0.070410, 0.000000;;,
+ 7;3; 0.135398, 0.070410, 0.000000;;,
+ 8;3; 0.135398, 0.070410, 0.000000;;,
+ 9;3; 0.135398, 0.070410, 0.000000;;,
+ 10;3; 0.135398, 0.070410, 0.000000;;,
+ 11;3; 0.135398, 0.070410, 0.000000;;,
+ 12;3; 0.135398, 0.070410, 0.000000;;,
+ 13;3; 0.135398, 0.070410, 0.000000;;,
+ 14;3; 0.135398, 0.070410, 0.000000;;,
+ 15;3; 0.135398, 0.070410, 0.000000;;,
+ 16;3; 0.135398, 0.070410, 0.000000;;,
+ 17;3; 0.135398, 0.070410, 0.000000;;,
+ 18;3; 0.135398, 0.070410, 0.000000;;,
+ 19;3; 0.135398, 0.070410, 0.000000;;,
+ 20;3; 0.135398, 0.070410, 0.000000;;,
+ 21;3; 0.135398, 0.070410, 0.000000;;,
+ 22;3; 0.135398, 0.070410, 0.000000;;,
+ 23;3; 0.135398, 0.070410, 0.000000;;,
+ 24;3; 0.135398, 0.070410, 0.000000;;,
+ 25;3; 0.135398, 0.070410, 0.000000;;,
+ 26;3; 0.135398, 0.070410, 0.000000;;,
+ 27;3; 0.135398, 0.070410, 0.000000;;,
+ 28;3; 0.135398, 0.070410, 0.000000;;,
+ 29;3; 0.135398, 0.070410, 0.000000;;,
+ 30;3; 0.135398, 0.070410, 0.000000;;,
+ 31;3; 0.135398, 0.070410, 0.000000;;,
+ 32;3; 0.135398, 0.070410, 0.000000;;,
+ 33;3; 0.135398, 0.070410, 0.000000;;,
+ 34;3; 0.135398, 0.070410, 0.000000;;,
+ 35;3; 0.135398, 0.070410, 0.000000;;,
+ 36;3; 0.135398, 0.070410, 0.000000;;,
+ 37;3; 0.135398, 0.070410, 0.000000;;,
+ 38;3; 0.135398, 0.070410, 0.000000;;,
+ 39;3; 0.135398, 0.070410, 0.000000;;,
+ 40;3; 0.135398, 0.070410, 0.000000;;,
+ 41;3; 0.135398, 0.070410, 0.000000;;,
+ 42;3; 0.135398, 0.070410, 0.000000;;,
+ 43;3; 0.135398, 0.070410, 0.000000;;,
+ 44;3; 0.135398, 0.070410, 0.000000;;,
+ 45;3; 0.135398, 0.070410, 0.000000;;,
+ 46;3; 0.135398, 0.070410, 0.000000;;,
+ 47;3; 0.135398, 0.070410, 0.000000;;,
+ 48;3; 0.135398, 0.070410, 0.000000;;,
+ 49;3; 0.135398, 0.070410, 0.000000;;,
+ 50;3; 0.135398, 0.070410, 0.000000;;,
+ 51;3; 0.135398, 0.070410, 0.000000;;,
+ 52;3; 0.135398, 0.070410, 0.000000;;,
+ 53;3; 0.135398, 0.070410, 0.000000;;,
+ 54;3; 0.135398, 0.070410, 0.000000;;,
+ 55;3; 0.135398, 0.070410, 0.000000;;,
+ 56;3; 0.135398, 0.070410, 0.000000;;,
+ 57;3; 0.135398, 0.070410, 0.000000;;,
+ 58;3; 0.135398, 0.070410, 0.000000;;,
+ 59;3; 0.135398, 0.070410, 0.000000;;,
+ 60;3; 0.135398, 0.070410, 0.000000;;,
+ 61;3; 0.135398, 0.070410, 0.000000;;,
+ 62;3; 0.135398, 0.070410, 0.000000;;,
+ 63;3; 0.135398, 0.070410, 0.000000;;,
+ 64;3; 0.135398, 0.070410, 0.000000;;,
+ 65;3; 0.135398, 0.070410, 0.000000;;,
+ 66;3; 0.135398, 0.070410, 0.000000;;,
+ 67;3; 0.135398, 0.070410, 0.000000;;,
+ 68;3; 0.135398, 0.070410, 0.000000;;,
+ 69;3; 0.135398, 0.070410, 0.000000;;,
+ 70;3; 0.135398, 0.070410, 0.000000;;,
+ 71;3; 0.135398, 0.070410, 0.000000;;,
+ 72;3; 0.135398, 0.070410, 0.000000;;,
+ 73;3; 0.135398, 0.070410, 0.000000;;,
+ 74;3; 0.135398, 0.070410, 0.000000;;,
+ 75;3; 0.135398, 0.070410, 0.000000;;,
+ 76;3; 0.135398, 0.070410, 0.000000;;,
+ 77;3; 0.135398, 0.070410, 0.000000;;,
+ 78;3; 0.135398, 0.070410, 0.000000;;,
+ 79;3; 0.135398, 0.070410, 0.000000;;,
+ 80;3; 0.135398, 0.070410, 0.000000;;,
+ 81;3; 0.135398, 0.070410, 0.000000;;,
+ 82;3; 0.135398, 0.070410, 0.000000;;,
+ 83;3; 0.135398, 0.070410, 0.000000;;,
+ 84;3; 0.135398, 0.070410, 0.000000;;,
+ 85;3; 0.135398, 0.070410, 0.000000;;,
+ 86;3; 0.135398, 0.070410, 0.000000;;,
+ 87;3; 0.135398, 0.070410, 0.000000;;,
+ 88;3; 0.135398, 0.070410, 0.000000;;,
+ 89;3; 0.135398, 0.070410, 0.000000;;,
+ 90;3; 0.135398, 0.070410, 0.000000;;,
+ 91;3; 0.135398, 0.070410, 0.000000;;,
+ 92;3; 0.135398, 0.070411, 0.000000;;,
+ 93;3; 0.135398, 0.070410, 0.000000;;,
+ 94;3; 0.135398, 0.070410, 0.000000;;,
+ 95;3; 0.135398, 0.070410, 0.000000;;,
+ 96;3; 0.135398, 0.070410, 0.000000;;,
+ 97;3; 0.135398, 0.070410, 0.000000;;,
+ 98;3; 0.135398, 0.070410, 0.000000;;,
+ 99;3; 0.135398, 0.070410, 0.000000;;,
+ 100;3; 0.135398, 0.070410, 0.000000;;,
+ 101;3; 0.135398, 0.070410, 0.000000;;,
+ 102;3; 0.135398, 0.070410, 0.000000;;,
+ 103;3; 0.135398, 0.070410, 0.000000;;,
+ 104;3; 0.135398, 0.070410, 0.000000;;,
+ 105;3; 0.135398, 0.070410, 0.000000;;,
+ 106;3; 0.135398, 0.070410, 0.000000;;,
+ 107;3; 0.135398, 0.070410, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 42;4; -0.011497, 0.999015,-0.000000,-0.000000;;,
+ 43;4; -0.036781, 0.996849,-0.000000,-0.000000;;,
+ 44;4; -0.067423, 0.994224,-0.000000,-0.000000;;,
+ 45;4; -0.098518, 0.991561,-0.000000,-0.000000;;,
+ 46;4; -0.126725, 0.989144,-0.000000,-0.000000;;,
+ 47;4; -0.149480, 0.987195,-0.000000,-0.000000;;,
+ 48;4; -0.164603, 0.985899,-0.000000,-0.000000;;,
+ 49;4; -0.170083, 0.985430,-0.000000,-0.000000;;,
+ 50;4; -0.164181, 0.985935,-0.000000,-0.000000;;,
+ 51;4; -0.146564, 0.987445,-0.000000,-0.000000;;,
+ 52;4; -0.118829, 0.989821,-0.000000,-0.000000;;,
+ 53;4; -0.085044, 0.992715,-0.000000,-0.000000;;,
+ 54;4; -0.051258, 0.995609,-0.000000,-0.000000;;,
+ 55;4; -0.023522, 0.997985,-0.000000,-0.000000;;,
+ 56;4; -0.005903, 0.999494,-0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 61;4; 0.015161, 0.998698,-0.000000,-0.000000;;,
+ 62;4; 0.057858, 0.995031,-0.000000,-0.000000;;,
+ 63;4; 0.112676, 0.990322,-0.000000,-0.000000;;,
+ 64;4; 0.155368, 0.986655,-0.000000,-0.000000;;,
+ 65;4; 0.170525, 0.985353,-0.000000,-0.000000;;,
+ 66;4; 0.165031, 0.985825,-0.000000,-0.000000;;,
+ 67;4; 0.149868, 0.987128,-0.000000,-0.000000;;,
+ 68;4; 0.127055, 0.989087,-0.000000,-0.000000;;,
+ 69;4; 0.098775, 0.991516,-0.000000,-0.000000;;,
+ 70;4; 0.067600, 0.994194,-0.000000,-0.000000;;,
+ 71;4; 0.036878, 0.996833,-0.000000,-0.000000;;,
+ 72;4; 0.011527, 0.999010,-0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 74;4; 0.055475, 0.998460,-0.000000,-0.000000;;,
+ 75;4; 0.034281, 0.994439,-0.000000,-0.000000;;,
+ 76;4; -0.012328, 0.989066,-0.000000,-0.000000;;,
+ 77;4; -0.068815, 0.983361,-0.000000,-0.000000;;,
+ 78;4; -0.126137, 0.977927,-0.000000,-0.000000;;,
+ 79;4; -0.178136, 0.973177,-0.000000,-0.000000;;,
+ 80;4; -0.220084, 0.969440,-0.000000,-0.000000;;,
+ 81;4; -0.247962, 0.967001,-0.000000,-0.000000;;,
+ 82;4; -0.258065, 0.966128,-0.000000,-0.000000;;,
+ 83;4; -0.251248, 0.967264,-0.000000,-0.000000;;,
+ 84;4; -0.230090, 0.970657,-0.000000,-0.000000;;,
+ 85;4; -0.194778, 0.975997,-0.000000,-0.000000;;,
+ 86;4; -0.147975, 0.982503,-0.000000,-0.000000;;,
+ 87;4; -0.094886, 0.989009,-0.000000,-0.000000;;,
+ 88;4; -0.041671, 0.994350,-0.000000,-0.000000;;,
+ 89;4; 0.006683, 0.997742,-0.000000,-0.000000;;,
+ 90;4; 0.047348, 0.998878,-0.000000,-0.000000;;,
+ 91;4; 0.087012, 0.997046,-0.000000,-0.000000;;,
+ 92;4; 0.132380, 0.991576,-0.000000,-0.000000;;,
+ 93;4; 0.180897, 0.982965,-0.000000,-0.000000;;,
+ 94;4; 0.228266, 0.972475,-0.000000,-0.000000;;,
+ 95;4; 0.269349, 0.961985,-0.000000,-0.000000;;,
+ 96;4; 0.299967, 0.953373,-0.000000,-0.000000;;,
+ 97;4; 0.318143, 0.947904,-0.000000,-0.000000;;,
+ 98;4; 0.323959, 0.946071,-0.000000,-0.000000;;,
+ 99;4; 0.314574, 0.947893,-0.000000,-0.000000;;,
+ 100;4; 0.286565, 0.953331,-0.000000,-0.000000;;,
+ 101;4; 0.242473, 0.961891,-0.000000,-0.000000;;,
+ 102;4; 0.188759, 0.972320,-0.000000,-0.000000;;,
+ 103;4; 0.135032, 0.982748,-0.000000,-0.000000;;,
+ 104;4; 0.090913, 0.991309,-0.000000,-0.000000;;,
+ 105;4; 0.062878, 0.996747,-0.000000,-0.000000;;,
+ 106;4; 0.053483, 0.998569,-0.000000,-0.000000;;,
+ 107;4; 0.053483, 0.998569,-0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_005}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.002513, 0.866015, 0.122502;;,
+ 1;3; -0.002513, 0.866015, 0.122502;;,
+ 2;3; -0.002513, 0.866015, 0.122502;;,
+ 3;3; -0.002513, 0.866015, 0.122502;;,
+ 4;3; -0.002513, 0.866015, 0.122502;;,
+ 5;3; -0.002513, 0.866015, 0.122502;;,
+ 6;3; -0.002513, 0.866015, 0.122502;;,
+ 7;3; -0.002513, 0.866015, 0.122502;;,
+ 8;3; -0.002513, 0.866015, 0.122502;;,
+ 9;3; -0.002513, 0.866015, 0.122502;;,
+ 10;3; -0.002513, 0.866015, 0.122502;;,
+ 11;3; -0.002513, 0.866015, 0.122502;;,
+ 12;3; -0.002513, 0.866015, 0.122502;;,
+ 13;3; -0.002513, 0.866015, 0.122502;;,
+ 14;3; -0.002513, 0.866015, 0.122502;;,
+ 15;3; -0.002513, 0.866015, 0.122502;;,
+ 16;3; -0.002513, 0.866015, 0.122502;;,
+ 17;3; -0.002513, 0.866015, 0.122502;;,
+ 18;3; -0.002513, 0.866015, 0.122502;;,
+ 19;3; -0.002513, 0.866015, 0.122502;;,
+ 20;3; -0.002513, 0.866015, 0.122502;;,
+ 21;3; -0.002513, 0.866015, 0.122502;;,
+ 22;3; -0.002513, 0.866015, 0.122502;;,
+ 23;3; -0.002513, 0.866015, 0.122502;;,
+ 24;3; -0.002513, 0.866015, 0.122502;;,
+ 25;3; -0.002513, 0.866015, 0.122502;;,
+ 26;3; -0.002513, 0.866015, 0.122502;;,
+ 27;3; -0.002513, 0.866015, 0.122502;;,
+ 28;3; -0.002513, 0.866015, 0.122502;;,
+ 29;3; -0.002513, 0.866015, 0.122502;;,
+ 30;3; -0.002513, 0.866015, 0.122502;;,
+ 31;3; -0.002513, 0.866015, 0.122502;;,
+ 32;3; -0.002513, 0.866015, 0.122502;;,
+ 33;3; -0.002513, 0.866015, 0.122502;;,
+ 34;3; -0.002513, 0.866015, 0.122502;;,
+ 35;3; -0.002513, 0.866015, 0.122502;;,
+ 36;3; -0.002513, 0.866015, 0.122502;;,
+ 37;3; -0.002513, 0.866015, 0.122502;;,
+ 38;3; -0.002513, 0.866015, 0.122502;;,
+ 39;3; -0.002513, 0.866015, 0.122502;;,
+ 40;3; -0.002513, 0.866015, 0.122502;;,
+ 41;3; -0.002513, 0.866015, 0.122502;;,
+ 42;3; -0.002513, 0.866015, 0.122502;;,
+ 43;3; -0.002513, 0.866015, 0.122502;;,
+ 44;3; -0.002513, 0.866015, 0.122502;;,
+ 45;3; -0.002513, 0.866015, 0.122502;;,
+ 46;3; -0.002513, 0.866015, 0.122502;;,
+ 47;3; -0.002513, 0.866015, 0.122502;;,
+ 48;3; -0.002513, 0.866015, 0.122502;;,
+ 49;3; -0.002513, 0.866015, 0.122502;;,
+ 50;3; -0.002513, 0.866015, 0.122502;;,
+ 51;3; -0.002513, 0.866015, 0.122502;;,
+ 52;3; -0.002513, 0.866015, 0.122502;;,
+ 53;3; -0.002513, 0.866015, 0.122502;;,
+ 54;3; -0.002513, 0.866015, 0.122502;;,
+ 55;3; -0.002513, 0.866015, 0.122502;;,
+ 56;3; -0.002513, 0.866015, 0.122502;;,
+ 57;3; -0.002513, 0.866015, 0.122502;;,
+ 58;3; -0.002513, 0.866015, 0.122502;;,
+ 59;3; -0.002513, 0.866015, 0.122502;;,
+ 60;3; -0.002513, 0.866015, 0.122502;;,
+ 61;3; -0.002513, 0.866015, 0.122502;;,
+ 62;3; -0.002513, 0.866015, 0.122502;;,
+ 63;3; -0.002513, 0.866015, 0.122502;;,
+ 64;3; -0.002513, 0.866015, 0.122502;;,
+ 65;3; -0.002513, 0.866015, 0.122502;;,
+ 66;3; -0.002513, 0.866015, 0.122502;;,
+ 67;3; -0.002513, 0.866015, 0.122502;;,
+ 68;3; -0.002513, 0.866015, 0.122502;;,
+ 69;3; -0.002513, 0.866015, 0.122502;;,
+ 70;3; -0.002513, 0.866015, 0.122502;;,
+ 71;3; -0.002513, 0.866015, 0.122502;;,
+ 72;3; -0.002513, 0.866015, 0.122502;;,
+ 73;3; -0.002513, 0.866015, 0.122502;;,
+ 74;3; -0.002513, 0.866015, 0.122502;;,
+ 75;3; -0.002513, 0.866015, 0.122502;;,
+ 76;3; -0.002513, 0.866015, 0.122502;;,
+ 77;3; -0.002513, 0.866015, 0.122502;;,
+ 78;3; -0.002513, 0.866015, 0.122502;;,
+ 79;3; -0.002513, 0.866015, 0.122502;;,
+ 80;3; -0.002513, 0.866015, 0.122502;;,
+ 81;3; -0.002513, 0.866015, 0.122502;;,
+ 82;3; -0.002513, 0.866015, 0.122502;;,
+ 83;3; -0.002513, 0.866015, 0.122502;;,
+ 84;3; -0.002513, 0.866015, 0.122502;;,
+ 85;3; -0.002513, 0.866015, 0.122502;;,
+ 86;3; -0.002513, 0.866015, 0.122502;;,
+ 87;3; -0.002513, 0.866015, 0.122502;;,
+ 88;3; -0.002513, 0.866015, 0.122502;;,
+ 89;3; -0.002513, 0.866015, 0.122502;;,
+ 90;3; -0.002513, 0.866015, 0.122502;;,
+ 91;3; -0.002513, 0.866015, 0.122502;;,
+ 92;3; -0.002513, 0.866015, 0.122502;;,
+ 93;3; -0.002513, 0.866015, 0.122502;;,
+ 94;3; -0.002513, 0.866015, 0.122502;;,
+ 95;3; -0.002513, 0.866015, 0.122502;;,
+ 96;3; -0.002513, 0.866015, 0.122502;;,
+ 97;3; -0.002513, 0.866015, 0.122502;;,
+ 98;3; -0.002513, 0.866015, 0.122502;;,
+ 99;3; -0.002513, 0.866015, 0.122502;;,
+ 100;3; -0.002513, 0.866015, 0.122502;;,
+ 101;3; -0.002513, 0.866015, 0.122502;;,
+ 102;3; -0.002513, 0.866015, 0.122502;;,
+ 103;3; -0.002513, 0.866015, 0.122502;;,
+ 104;3; -0.002513, 0.866015, 0.122502;;,
+ 105;3; -0.002513, 0.866015, 0.122502;;,
+ 106;3; -0.002513, 0.866015, 0.122502;;,
+ 107;3; -0.002513, 0.866015, 0.122502;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 1;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 2;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 3;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 4;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 5;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 6;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 7;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 8;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 9;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 10;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 11;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 12;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 13;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 14;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 15;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 16;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 17;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 18;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 19;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 20;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 21;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 22;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 23;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 24;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 25;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 26;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 27;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 28;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 29;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 30;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 31;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 32;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 33;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 34;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 35;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 36;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 37;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 38;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 39;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 40;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 41;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 42;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 43;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 44;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 45;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 46;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 47;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 48;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 49;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 50;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 51;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 52;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 53;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 54;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 55;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 56;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 57;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 58;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 59;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 60;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 61;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 62;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 63;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 64;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 65;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 66;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 67;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 68;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 69;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 70;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 71;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 72;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 73;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 74;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 75;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 76;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 77;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 78;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 79;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 80;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 81;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 82;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 83;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 84;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 85;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 86;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 87;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 88;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 89;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 90;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 91;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 92;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 93;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 94;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 95;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 96;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 97;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 98;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 99;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 100;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 101;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 102;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 103;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 104;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 105;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 106;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 107;4; -0.999935,-0.004138, 0.000565,-0.000851;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Body_001}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.000000, 0.187946,-0.206990;;,
+ 1;3; 0.000000, 0.187946,-0.206990;;,
+ 2;3; 0.000000, 0.187946,-0.206990;;,
+ 3;3; 0.000000, 0.187946,-0.206990;;,
+ 4;3; 0.000000, 0.187946,-0.206990;;,
+ 5;3; 0.000000, 0.187946,-0.206990;;,
+ 6;3; 0.000000, 0.187946,-0.206990;;,
+ 7;3; 0.000000, 0.187946,-0.206990;;,
+ 8;3; 0.000000, 0.187946,-0.206990;;,
+ 9;3; 0.000000, 0.187946,-0.206990;;,
+ 10;3; 0.000000, 0.187946,-0.206990;;,
+ 11;3; 0.000000, 0.187946,-0.206990;;,
+ 12;3; 0.000000, 0.187946,-0.206990;;,
+ 13;3; 0.000000, 0.187946,-0.206990;;,
+ 14;3; 0.000000, 0.187946,-0.206990;;,
+ 15;3; 0.000000, 0.187946,-0.206990;;,
+ 16;3; 0.000000, 0.187946,-0.206990;;,
+ 17;3; 0.000000, 0.187946,-0.206990;;,
+ 18;3; 0.000000, 0.187946,-0.206990;;,
+ 19;3; 0.000000, 0.187946,-0.206990;;,
+ 20;3; 0.000000, 0.187946,-0.206990;;,
+ 21;3; 0.000000, 0.187946,-0.206990;;,
+ 22;3; 0.000000, 0.187946,-0.206990;;,
+ 23;3; 0.000000, 0.187946,-0.206990;;,
+ 24;3; 0.000000, 0.187946,-0.206990;;,
+ 25;3; 0.000000, 0.187946,-0.206990;;,
+ 26;3; 0.000000, 0.187946,-0.206990;;,
+ 27;3; 0.000000, 0.187946,-0.206990;;,
+ 28;3; 0.000000, 0.187946,-0.206990;;,
+ 29;3; 0.000000, 0.187946,-0.206990;;,
+ 30;3; 0.000000, 0.187946,-0.206990;;,
+ 31;3; 0.000000, 0.187946,-0.206990;;,
+ 32;3; 0.000000, 0.187946,-0.206990;;,
+ 33;3; 0.000000, 0.187946,-0.206990;;,
+ 34;3; 0.000000, 0.187946,-0.206990;;,
+ 35;3; 0.000000, 0.187946,-0.206990;;,
+ 36;3; 0.000000, 0.187946,-0.206990;;,
+ 37;3; 0.000000, 0.187946,-0.206990;;,
+ 38;3; 0.000000, 0.187946,-0.206990;;,
+ 39;3; 0.000000, 0.187946,-0.206990;;,
+ 40;3; 0.000000, 0.187946,-0.206990;;,
+ 41;3; 0.000000, 0.187946,-0.206990;;,
+ 42;3; 0.000000, 0.187946,-0.206990;;,
+ 43;3; 0.000000, 0.187946,-0.206990;;,
+ 44;3; 0.000000, 0.187946,-0.206990;;,
+ 45;3; 0.000000, 0.187946,-0.206990;;,
+ 46;3; 0.000000, 0.187946,-0.206990;;,
+ 47;3; 0.000000, 0.187946,-0.206990;;,
+ 48;3; 0.000000, 0.187946,-0.206990;;,
+ 49;3; 0.000000, 0.187946,-0.206990;;,
+ 50;3; 0.000000, 0.187946,-0.206990;;,
+ 51;3; 0.000000, 0.187946,-0.206990;;,
+ 52;3; 0.000000, 0.187946,-0.206990;;,
+ 53;3; 0.000000, 0.187946,-0.206990;;,
+ 54;3; 0.000000, 0.187946,-0.206990;;,
+ 55;3; 0.000000, 0.187946,-0.206990;;,
+ 56;3; 0.000000, 0.187946,-0.206990;;,
+ 57;3; 0.000000, 0.187946,-0.206990;;,
+ 58;3; 0.000000, 0.187946,-0.206990;;,
+ 59;3; 0.000000, 0.187946,-0.206990;;,
+ 60;3; 0.000000, 0.187946,-0.206990;;,
+ 61;3; 0.000000, 0.187946,-0.206990;;,
+ 62;3; 0.000000, 0.187946,-0.206990;;,
+ 63;3; 0.000000, 0.187946,-0.206990;;,
+ 64;3; 0.000000, 0.187946,-0.206990;;,
+ 65;3; 0.000000, 0.187946,-0.206990;;,
+ 66;3; 0.000000, 0.187946,-0.206990;;,
+ 67;3; 0.000000, 0.187946,-0.206990;;,
+ 68;3; 0.000000, 0.187946,-0.206990;;,
+ 69;3; 0.000000, 0.187946,-0.206990;;,
+ 70;3; 0.000000, 0.187946,-0.206990;;,
+ 71;3; 0.000000, 0.187946,-0.206990;;,
+ 72;3; 0.000000, 0.187946,-0.206990;;,
+ 73;3; 0.000000, 0.187946,-0.206990;;,
+ 74;3; 0.000000, 0.187946,-0.206990;;,
+ 75;3; 0.000000, 0.187946,-0.206990;;,
+ 76;3; 0.000000, 0.187946,-0.206990;;,
+ 77;3; 0.000000, 0.187946,-0.206990;;,
+ 78;3; 0.000000, 0.187946,-0.206990;;,
+ 79;3; 0.000000, 0.187946,-0.206990;;,
+ 80;3; 0.000000, 0.187946,-0.206990;;,
+ 81;3; 0.000000, 0.187946,-0.206990;;,
+ 82;3; 0.000000, 0.187946,-0.206990;;,
+ 83;3; 0.000000, 0.187946,-0.206990;;,
+ 84;3; 0.000000, 0.187946,-0.206990;;,
+ 85;3; 0.000000, 0.187946,-0.206990;;,
+ 86;3; 0.000000, 0.187946,-0.206990;;,
+ 87;3; 0.000000, 0.187946,-0.206990;;,
+ 88;3; 0.000000, 0.187946,-0.206990;;,
+ 89;3; 0.000000, 0.187946,-0.206990;;,
+ 90;3; 0.000000, 0.187946,-0.206990;;,
+ 91;3; 0.000000, 0.187946,-0.206990;;,
+ 92;3; 0.000000, 0.187946,-0.206990;;,
+ 93;3; 0.000000, 0.187946,-0.206990;;,
+ 94;3; 0.000000, 0.187946,-0.206990;;,
+ 95;3; 0.000000, 0.187946,-0.206990;;,
+ 96;3; 0.000000, 0.187946,-0.206990;;,
+ 97;3; 0.000000, 0.187946,-0.206990;;,
+ 98;3; 0.000000, 0.187946,-0.206990;;,
+ 99;3; 0.000000, 0.187946,-0.206990;;,
+ 100;3; 0.000000, 0.187946,-0.206990;;,
+ 101;3; 0.000000, 0.187946,-0.206990;;,
+ 102;3; 0.000000, 0.187946,-0.206990;;,
+ 103;3; 0.000000, 0.187946,-0.206990;;,
+ 104;3; 0.000000, 0.187946,-0.206990;;,
+ 105;3; 0.000000, 0.187946,-0.206990;;,
+ 106;3; 0.000000, 0.187946,-0.206990;;,
+ 107;3; 0.000000, 0.187946,-0.206990;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 58;4; 0.001880, 0.999959, 0.000000,-0.000000;;,
+ 59;4; 0.007192, 0.999844, 0.000000,-0.000000;;,
+ 60;4; 0.013047, 0.999717, 0.000000,-0.000000;;,
+ 61;4; 0.019463, 0.999578, 0.000000,-0.000000;;,
+ 62;4; 0.027724, 0.999400, 0.000000,-0.000000;;,
+ 63;4; 0.035868, 0.999223, 0.000000,-0.000000;;,
+ 64;4; 0.041445, 0.999102, 0.000000,-0.000000;;,
+ 65;4; 0.043294, 0.999062, 0.000000,-0.000000;;,
+ 66;4; 0.041899, 0.999093, 0.000000,-0.000000;;,
+ 67;4; 0.038050, 0.999176, 0.000000,-0.000000;;,
+ 68;4; 0.032257, 0.999301, 0.000000,-0.000000;;,
+ 69;4; 0.025077, 0.999457, 0.000000,-0.000000;;,
+ 70;4; 0.017162, 0.999628, 0.000000,-0.000000;;,
+ 71;4; 0.009362, 0.999797, 0.000000,-0.000000;;,
+ 72;4; 0.002926, 0.999937, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 75;4; 0.015626, 0.998169, 0.000000,-0.000000;;,
+ 76;4; 0.049991, 0.994143, 0.000000,-0.000000;;,
+ 77;4; 0.091638, 0.989263, 0.000000,-0.000000;;,
+ 78;4; 0.133898, 0.984312, 0.000000,-0.000000;;,
+ 79;4; 0.172235, 0.979820, 0.000000,-0.000000;;,
+ 80;4; 0.203160, 0.976196, 0.000000,-0.000000;;,
+ 81;4; 0.223714, 0.973788, 0.000000,-0.000000;;,
+ 82;4; 0.231162, 0.972915, 0.000000,-0.000000;;,
+ 83;4; 0.223140, 0.973855, 0.000000,-0.000000;;,
+ 84;4; 0.199196, 0.976661, 0.000000,-0.000000;;,
+ 85;4; 0.161500, 0.981077, 0.000000,-0.000000;;,
+ 86;4; 0.115581, 0.986458, 0.000000,-0.000000;;,
+ 87;4; 0.069662, 0.991838, 0.000000,-0.000000;;,
+ 88;4; 0.031966, 0.996255, 0.000000,-0.000000;;,
+ 89;4; 0.008022, 0.999060, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 91;4; 0.006839, 0.999319, 0.000000,-0.000000;;,
+ 92;4; 0.027254, 0.997288, 0.000000,-0.000000;;,
+ 93;4; 0.059392, 0.994089, 0.000000,-0.000000;;,
+ 94;4; 0.098542, 0.990193, 0.000000,-0.000000;;,
+ 95;4; 0.137691, 0.986297, 0.000000,-0.000000;;,
+ 96;4; 0.169830, 0.983099, 0.000000,-0.000000;;,
+ 97;4; 0.190244, 0.981067, 0.000000,-0.000000;;,
+ 98;4; 0.197083, 0.980387, 0.000000,-0.000000;;,
+ 99;4; 0.190245, 0.981067, 0.000000,-0.000000;;,
+ 100;4; 0.169833, 0.983099, 0.000000,-0.000000;;,
+ 101;4; 0.137700, 0.986297, 0.000000,-0.000000;;,
+ 102;4; 0.098556, 0.990193, 0.000000,-0.000000;;,
+ 103;4; 0.059407, 0.994089, 0.000000,-0.000000;;,
+ 104;4; 0.027264, 0.997288, 0.000000,-0.000000;;,
+ 105;4; 0.006842, 0.999319, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Body_002}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.000000, 0.185728, 0.203380;;,
+ 1;3; 0.000000, 0.185728, 0.203380;;,
+ 2;3; 0.000000, 0.185728, 0.203380;;,
+ 3;3; 0.000000, 0.185728, 0.203380;;,
+ 4;3; 0.000000, 0.185728, 0.203380;;,
+ 5;3; 0.000000, 0.185728, 0.203380;;,
+ 6;3; 0.000000, 0.185728, 0.203380;;,
+ 7;3; 0.000000, 0.185728, 0.203380;;,
+ 8;3; 0.000000, 0.185728, 0.203380;;,
+ 9;3; 0.000000, 0.185728, 0.203380;;,
+ 10;3; 0.000000, 0.185728, 0.203380;;,
+ 11;3; 0.000000, 0.185728, 0.203380;;,
+ 12;3; 0.000000, 0.185728, 0.203380;;,
+ 13;3; 0.000000, 0.185728, 0.203380;;,
+ 14;3; 0.000000, 0.185728, 0.203380;;,
+ 15;3; 0.000000, 0.185728, 0.203380;;,
+ 16;3; 0.000000, 0.185728, 0.203380;;,
+ 17;3; 0.000000, 0.185728, 0.203380;;,
+ 18;3; 0.000000, 0.185728, 0.203380;;,
+ 19;3; 0.000000, 0.185728, 0.203380;;,
+ 20;3; 0.000000, 0.185728, 0.203380;;,
+ 21;3; 0.000000, 0.185728, 0.203380;;,
+ 22;3; 0.000000, 0.185728, 0.203380;;,
+ 23;3; 0.000000, 0.185728, 0.203380;;,
+ 24;3; 0.000000, 0.185728, 0.203380;;,
+ 25;3; 0.000000, 0.185728, 0.203380;;,
+ 26;3; 0.000000, 0.185728, 0.203380;;,
+ 27;3; 0.000000, 0.185728, 0.203380;;,
+ 28;3; 0.000000, 0.185728, 0.203380;;,
+ 29;3; 0.000000, 0.185728, 0.203380;;,
+ 30;3; 0.000000, 0.185728, 0.203380;;,
+ 31;3; 0.000000, 0.185728, 0.203380;;,
+ 32;3; 0.000000, 0.185728, 0.203380;;,
+ 33;3; 0.000000, 0.185728, 0.203380;;,
+ 34;3; 0.000000, 0.185728, 0.203380;;,
+ 35;3; 0.000000, 0.185728, 0.203380;;,
+ 36;3; 0.000000, 0.185728, 0.203380;;,
+ 37;3; 0.000000, 0.185728, 0.203380;;,
+ 38;3; 0.000000, 0.185728, 0.203380;;,
+ 39;3; 0.000000, 0.185728, 0.203380;;,
+ 40;3; 0.000000, 0.185728, 0.203380;;,
+ 41;3; 0.000000, 0.185728, 0.203380;;,
+ 42;3; 0.000000, 0.185728, 0.203380;;,
+ 43;3; 0.000000, 0.185728, 0.203380;;,
+ 44;3; 0.000000, 0.185728, 0.203380;;,
+ 45;3; 0.000000, 0.185728, 0.203380;;,
+ 46;3; 0.000000, 0.185728, 0.203380;;,
+ 47;3; 0.000000, 0.185728, 0.203380;;,
+ 48;3; 0.000000, 0.185728, 0.203380;;,
+ 49;3; 0.000000, 0.185728, 0.203380;;,
+ 50;3; 0.000000, 0.185728, 0.203380;;,
+ 51;3; 0.000000, 0.185728, 0.203380;;,
+ 52;3; 0.000000, 0.185728, 0.203380;;,
+ 53;3; 0.000000, 0.185728, 0.203380;;,
+ 54;3; 0.000000, 0.185728, 0.203380;;,
+ 55;3; 0.000000, 0.185728, 0.203380;;,
+ 56;3; 0.000000, 0.185728, 0.203380;;,
+ 57;3; 0.000000, 0.185728, 0.203380;;,
+ 58;3; 0.000000, 0.185728, 0.203380;;,
+ 59;3; 0.000000, 0.185728, 0.203380;;,
+ 60;3; 0.000000, 0.185728, 0.203380;;,
+ 61;3; 0.000000, 0.185728, 0.203380;;,
+ 62;3; 0.000000, 0.185728, 0.203380;;,
+ 63;3; 0.000000, 0.185728, 0.203380;;,
+ 64;3; 0.000000, 0.185728, 0.203380;;,
+ 65;3; 0.000000, 0.185728, 0.203380;;,
+ 66;3; 0.000000, 0.185728, 0.203380;;,
+ 67;3; 0.000000, 0.185728, 0.203380;;,
+ 68;3; 0.000000, 0.185728, 0.203380;;,
+ 69;3; 0.000000, 0.185728, 0.203380;;,
+ 70;3; 0.000000, 0.185728, 0.203380;;,
+ 71;3; 0.000000, 0.185728, 0.203380;;,
+ 72;3; 0.000000, 0.185728, 0.203380;;,
+ 73;3; 0.000000, 0.185728, 0.203380;;,
+ 74;3; 0.000000, 0.185728, 0.203380;;,
+ 75;3; 0.000000, 0.185728, 0.203380;;,
+ 76;3; 0.000000, 0.185728, 0.203380;;,
+ 77;3; 0.000000, 0.185728, 0.203380;;,
+ 78;3; 0.000000, 0.185728, 0.203380;;,
+ 79;3; 0.000000, 0.185728, 0.203380;;,
+ 80;3; 0.000000, 0.185727, 0.203380;;,
+ 81;3; 0.000000, 0.185728, 0.203380;;,
+ 82;3; 0.000000, 0.185728, 0.203380;;,
+ 83;3; 0.000000, 0.185728, 0.203380;;,
+ 84;3; 0.000000, 0.185727, 0.203380;;,
+ 85;3; 0.000000, 0.185728, 0.203380;;,
+ 86;3; 0.000000, 0.185728, 0.203380;;,
+ 87;3; 0.000000, 0.185728, 0.203380;;,
+ 88;3; 0.000000, 0.185728, 0.203380;;,
+ 89;3; 0.000000, 0.185728, 0.203380;;,
+ 90;3; 0.000000, 0.185728, 0.203380;;,
+ 91;3; 0.000000, 0.185728, 0.203380;;,
+ 92;3; 0.000000, 0.185728, 0.203380;;,
+ 93;3; 0.000000, 0.185728, 0.203380;;,
+ 94;3; 0.000000, 0.185728, 0.203380;;,
+ 95;3; 0.000000, 0.185728, 0.203380;;,
+ 96;3; 0.000000, 0.185728, 0.203380;;,
+ 97;3; 0.000000, 0.185728, 0.203380;;,
+ 98;3; 0.000000, 0.185728, 0.203380;;,
+ 99;3; 0.000000, 0.185728, 0.203380;;,
+ 100;3; 0.000000, 0.185728, 0.203380;;,
+ 101;3; 0.000000, 0.185728, 0.203380;;,
+ 102;3; 0.000000, 0.185728, 0.203380;;,
+ 103;3; 0.000000, 0.185728, 0.203380;;,
+ 104;3; 0.000000, 0.185728, 0.203380;;,
+ 105;3; 0.000000, 0.185728, 0.203380;;,
+ 106;3; 0.000000, 0.185728, 0.203380;;,
+ 107;3; 0.000000, 0.185728, 0.203380;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 41;4; -0.000000, 1.000000,-0.000000, 0.000000;;,
+ 42;4; -0.004277, 0.999865, 0.000000, 0.000000;;,
+ 43;4; -0.013685, 0.999567, 0.000000, 0.000000;;,
+ 44;4; -0.025085, 0.999205, 0.000000, 0.000000;;,
+ 45;4; -0.036655, 0.998839, 0.000000, 0.000000;;,
+ 46;4; -0.047150, 0.998507, 0.000000, 0.000000;;,
+ 47;4; -0.055616, 0.998239, 0.000000, 0.000000;;,
+ 48;4; -0.061243, 0.998060, 0.000000, 0.000000;;,
+ 49;4; -0.063282, 0.997996, 0.000000, 0.000000;;,
+ 50;4; -0.061086, 0.998065, 0.000000, 0.000000;;,
+ 51;4; -0.054531, 0.998273, 0.000000, 0.000000;;,
+ 52;4; -0.044212, 0.998600, 0.000000, 0.000000;;,
+ 53;4; -0.031641, 0.998998, 0.000000, 0.000000;;,
+ 54;4; -0.019070, 0.999396, 0.000000, 0.000000;;,
+ 55;4; -0.008751, 0.999723, 0.000000, 0.000000;;,
+ 56;4; -0.002196, 0.999930, 0.000000, 0.000000;;,
+ 57;4; -0.000000, 1.000000,-0.000000, 0.000000;;,
+ 58;4; -0.002423, 0.999932, 0.000000, 0.000000;;,
+ 59;4; -0.009268, 0.999741, 0.000000, 0.000000;;,
+ 60;4; -0.016812, 0.999531, 0.000000, 0.000000;;,
+ 61;4; -0.025079, 0.999300, 0.000000, 0.000000;;,
+ 62;4; -0.035723, 0.999003, 0.000000, 0.000000;;,
+ 63;4; -0.046218, 0.998710, 0.000000, 0.000000;;,
+ 64;4; -0.053403, 0.998509, 0.000000, 0.000000;;,
+ 65;4; -0.055786, 0.998443, 0.000000, 0.000000;;,
+ 66;4; -0.053989, 0.998493, 0.000000, 0.000000;;,
+ 67;4; -0.049029, 0.998631, 0.000000, 0.000000;;,
+ 68;4; -0.041565, 0.998840, 0.000000, 0.000000;;,
+ 69;4; -0.032313, 0.999098, 0.000000, 0.000000;;,
+ 70;4; -0.022114, 0.999383, 0.000000, 0.000000;;,
+ 71;4; -0.012064, 0.999663, 0.000000, 0.000000;;,
+ 72;4; -0.003771, 0.999895, 0.000000, 0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 75;4; -0.007476, 0.999644, 0.000000, 0.000000;;,
+ 76;4; -0.023917, 0.998849, 0.000000, 0.000000;;,
+ 77;4; -0.043843, 0.997862, 0.000000, 0.000000;;,
+ 78;4; -0.064063, 0.996828, 0.000000, 0.000000;;,
+ 79;4; -0.082406, 0.995842, 0.000000, 0.000000;;,
+ 80;4; -0.097203, 0.994979, 0.000000, 0.000000;;,
+ 81;4; -0.107038, 0.994301, 0.000000, 0.000000;;,
+ 82;4; -0.110602, 0.993865, 0.000000, 0.000000;;,
+ 83;4; -0.102646, 0.993617, 0.000000, 0.000000;;,
+ 84;4; -0.078897, 0.993470, 0.000000, 0.000000;;,
+ 85;4; -0.041511, 0.993409, 0.000000, 0.000000;;,
+ 86;4; 0.004030, 0.993400,-0.000000, 0.000000;;,
+ 87;4; 0.049571, 0.993391,-0.000000, 0.000000;;,
+ 88;4; 0.086957, 0.993330,-0.000000, 0.000000;;,
+ 89;4; 0.110704, 0.993182,-0.000000, 0.000000;;,
+ 90;4; 0.118660, 0.992935,-0.000000, 0.000000;;,
+ 91;4; 0.108565, 0.992415,-0.000000, 0.000000;;,
+ 92;4; 0.078432, 0.991462,-0.000000, 0.000000;;,
+ 93;4; 0.030993, 0.990149,-0.000000, 0.000000;;,
+ 94;4; -0.026794, 0.988645, 0.000000, 0.000000;;,
+ 95;4; -0.084582, 0.987193, 0.000000, 0.000000;;,
+ 96;4; -0.132021, 0.986026, 0.000000, 0.000000;;,
+ 97;4; -0.162155, 0.985296, 0.000000, 0.000000;;,
+ 98;4; -0.172251, 0.985053, 0.000000, 0.000000;;,
+ 99;4; -0.166274, 0.985572, 0.000000, 0.000000;;,
+ 100;4; -0.148433, 0.987120, 0.000000, 0.000000;;,
+ 101;4; -0.120347, 0.989557, 0.000000, 0.000000;;,
+ 102;4; -0.086134, 0.992527, 0.000000, 0.000000;;,
+ 103;4; -0.051918, 0.995496, 0.000000, 0.000000;;,
+ 104;4; -0.023827, 0.997933, 0.000000, 0.000000;;,
+ 105;4; -0.005980, 0.999481, 0.000000, 0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000, 0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_IK_head}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.002513, 2.032632,-0.710142;;,
+ 1;3; 0.003029, 2.032632,-0.710205;;,
+ 2;3; 0.019705, 2.032632,-0.710394;;,
+ 3;3; 0.046815, 2.032632,-0.710702;;,
+ 4;3; 0.082268, 2.032632,-0.711105;;,
+ 5;3; 0.122426, 2.032632,-0.711561;;,
+ 6;3; 0.162579, 2.032632,-0.712017;;,
+ 7;3; 0.198022, 2.032632,-0.712420;;,
+ 8;3; 0.225121, 2.032632,-0.712728;;,
+ 9;3; 0.241788, 2.032632,-0.712917;;,
+ 10;3; 0.247326, 2.032632,-0.712980;;,
+ 11;3; 0.244145, 2.032632,-0.712714;;,
+ 12;3; 0.234264, 2.032632,-0.711886;;,
+ 13;3; 0.217479, 2.032632,-0.710481;;,
+ 14;3; 0.194218, 2.032632,-0.708534;;,
+ 15;3; 0.165740, 2.032632,-0.706149;;,
+ 16;3; 0.134057, 2.032632,-0.703497;;,
+ 17;3; 0.101506, 2.032632,-0.700772;;,
+ 18;3; 0.070184, 2.032632,-0.698150;;,
+ 19;3; 0.041593, 2.032632,-0.695756;;,
+ 20;3; 0.016584, 2.032632,-0.693663;;,
+ 21;3; -0.008426, 2.032632,-0.691569;;,
+ 22;3; -0.037016, 2.032632,-0.689175;;,
+ 23;3; -0.068338, 2.032632,-0.686553;;,
+ 24;3; -0.100890, 2.032632,-0.683828;;,
+ 25;3; -0.132572, 2.032632,-0.681176;;,
+ 26;3; -0.161050, 2.032632,-0.678791;;,
+ 27;3; -0.184311, 2.032632,-0.676844;;,
+ 28;3; -0.201096, 2.032632,-0.675439;;,
+ 29;3; -0.210978, 2.032632,-0.674611;;,
+ 30;3; -0.214159, 2.032632,-0.674345;;,
+ 31;3; -0.209825, 2.032632,-0.675078;;,
+ 32;3; -0.197888, 2.032632,-0.677097;;,
+ 33;3; -0.179747, 2.032632,-0.680165;;,
+ 34;3; -0.156637, 2.032632,-0.684074;;,
+ 35;3; -0.129732, 2.032632,-0.688625;;,
+ 36;3; -0.100266, 2.032632,-0.693608;;,
+ 37;3; -0.069709, 2.032632,-0.698777;;,
+ 38;3; -0.040113, 2.032632,-0.703782;;,
+ 39;3; -0.014989, 2.032632,-0.708032;;,
+ 40;3; -0.002513, 2.032632,-0.710142;;,
+ 41;3; -0.002513, 2.032632,-0.710142;;,
+ 42;3; -0.008930, 2.032632,-0.710142;;,
+ 43;3; -0.023043, 2.032632,-0.710142;;,
+ 44;3; -0.040147, 2.032632,-0.710142;;,
+ 45;3; -0.057504, 2.032632,-0.710142;;,
+ 46;3; -0.073249, 2.032632,-0.710142;;,
+ 47;3; -0.085951, 2.032632,-0.710142;;,
+ 48;3; -0.094393, 2.032632,-0.710142;;,
+ 49;3; -0.097452, 2.032632,-0.710142;;,
+ 50;3; -0.095389, 2.032632,-0.710092;;,
+ 51;3; -0.088904, 2.032632,-0.709935;;,
+ 52;3; -0.077889, 2.032632,-0.709668;;,
+ 53;3; -0.062950, 2.032632,-0.709307;;,
+ 54;3; -0.045489, 2.032632,-0.708884;;,
+ 55;3; -0.027292, 2.032632,-0.708443;;,
+ 56;3; -0.009895, 2.032632,-0.708022;;,
+ 57;3; 0.005751, 2.032632,-0.707643;;,
+ 58;3; 0.021832, 2.032632,-0.707254;;,
+ 59;3; 0.039347, 2.032632,-0.706830;;,
+ 60;3; 0.054648, 2.032632,-0.706460;;,
+ 61;3; 0.069212, 2.032632,-0.706107;;,
+ 62;3; 0.084604, 2.032632,-0.705735;;,
+ 63;3; 0.097938, 2.032632,-0.705412;;,
+ 64;3; 0.106319, 2.032632,-0.705209;;,
+ 65;3; 0.108954, 2.032632,-0.705145;;,
+ 66;3; 0.105086, 2.032632,-0.705318;;,
+ 67;3; 0.093540, 2.032632,-0.705836;;,
+ 68;3; 0.075363, 2.032632,-0.706651;;,
+ 69;3; 0.053221, 2.032632,-0.707643;;,
+ 70;3; 0.031078, 2.032632,-0.708636;;,
+ 71;3; 0.012901, 2.032632,-0.709451;;,
+ 72;3; 0.001355, 2.032632,-0.709968;;,
+ 73;3; -0.002513, 2.032632,-0.710142;;,
+ 74;3; -0.002513, 1.936344,-1.928771;;,
+ 75;3; -0.002513, 1.945240,-1.927712;;,
+ 76;3; -0.002513, 1.971791,-1.924551;;,
+ 77;3; -0.002513, 2.013590,-1.919574;;,
+ 78;3; -0.002513, 2.064508,-1.913512;;,
+ 79;3; -0.002513, 2.115429,-1.907449;;,
+ 80;3; -0.002513, 2.157234,-1.902473;;,
+ 81;3; -0.002513, 2.183791,-1.899312;;,
+ 82;3; -0.002513, 2.192689,-1.898253;;,
+ 83;3; -0.002513, 2.179227,-1.899748;;,
+ 84;3; -0.002513, 2.139049,-1.904208;;,
+ 85;3; -0.002513, 2.075801,-1.911230;;,
+ 86;3; -0.002513, 1.998762,-1.919784;;,
+ 87;3; -0.002513, 1.921726,-1.928343;;,
+ 88;3; -0.002513, 1.858487,-1.935375;;,
+ 89;3; -0.002513, 1.818318,-1.939846;;,
+ 90;3; -0.002513, 1.804860,-1.941345;;,
+ 91;3; -0.002513, 1.818518,-1.925309;;,
+ 92;3; -0.002513, 1.859243,-1.877552;;,
+ 93;3; -0.002513, 1.923315,-1.802499;;,
+ 94;3; -0.002513, 2.001404,-1.711082;;,
+ 95;3; -0.002513, 2.079635,-1.619478;;,
+ 96;3; -0.002513, 2.144034,-1.543998;;,
+ 97;3; -0.002513, 2.185064,-1.495840;;,
+ 98;3; -0.002513, 2.198845,-1.479644;;,
+ 99;3; -0.002513, 2.189593,-1.495524;;,
+ 100;3; -0.002513, 2.161810,-1.543163;;,
+ 101;3; -0.002513, 2.118002,-1.618187;;,
+ 102;3; -0.002513, 2.065008,-1.708839;;,
+ 103;3; -0.002513, 2.012862,-1.797974;;,
+ 104;3; -0.002513, 1.970968,-1.869573;;,
+ 105;3; -0.002513, 1.944924,-1.914098;;,
+ 106;3; -0.002513, 1.936344,-1.928771;;,
+ 107;3; -0.015253, 1.944273,-1.915417;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 1;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 2;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 3;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 4;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 5;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 6;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 7;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 8;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 9;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 10;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 11;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 12;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 13;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 14;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 15;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 16;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 17;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 18;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 19;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 20;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 21;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 22;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 23;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 24;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 25;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 26;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 27;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 28;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 29;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 30;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 31;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 32;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 33;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 34;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 35;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 36;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 37;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 38;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 39;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 40;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 41;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 42;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 43;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 44;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 45;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 46;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 47;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 48;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 49;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 50;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 51;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 52;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 53;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 54;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 55;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 56;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 57;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 58;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 59;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 60;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 61;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 62;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 63;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 64;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 65;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 66;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 67;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 68;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 69;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 70;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 71;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 72;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 73;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 74;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 75;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 76;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 77;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 78;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 79;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 80;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 81;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 82;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 83;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 84;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 85;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 86;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 87;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 88;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 89;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 90;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 91;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 92;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 93;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 94;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 95;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 96;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 97;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 98;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 99;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 100;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 101;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 102;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 103;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 104;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 105;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 106;4; -0.999994,-0.003482, 0.000000,-0.000000;;,
+ 107;4; -0.999994,-0.003482, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_006}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.000000, 0.306782, 0.000000;;,
+ 1;3; -0.000000, 0.306782, 0.000000;;,
+ 2;3; -0.000000, 0.306782, 0.000000;;,
+ 3;3; -0.000000, 0.306782, 0.000000;;,
+ 4;3; -0.000000, 0.306782, 0.000000;;,
+ 5;3; -0.000000, 0.306782, 0.000000;;,
+ 6;3; -0.000000, 0.306782, 0.000000;;,
+ 7;3; -0.000000, 0.306782, 0.000000;;,
+ 8;3; -0.000000, 0.306782, 0.000000;;,
+ 9;3; -0.000000, 0.306782, 0.000000;;,
+ 10;3; -0.000000, 0.306782, 0.000000;;,
+ 11;3; -0.000000, 0.306782, 0.000000;;,
+ 12;3; -0.000000, 0.306782, 0.000000;;,
+ 13;3; -0.000000, 0.306782, 0.000000;;,
+ 14;3; -0.000000, 0.306782, 0.000000;;,
+ 15;3; -0.000000, 0.306782, 0.000000;;,
+ 16;3; -0.000000, 0.306782, 0.000000;;,
+ 17;3; -0.000000, 0.306782, 0.000000;;,
+ 18;3; -0.000000, 0.306782, 0.000000;;,
+ 19;3; -0.000000, 0.306782, 0.000000;;,
+ 20;3; -0.000000, 0.306782, 0.000000;;,
+ 21;3; -0.000000, 0.306782, 0.000000;;,
+ 22;3; -0.000000, 0.306782, 0.000000;;,
+ 23;3; -0.000000, 0.306782, 0.000000;;,
+ 24;3; -0.000000, 0.306782, 0.000000;;,
+ 25;3; -0.000000, 0.306782, 0.000000;;,
+ 26;3; -0.000000, 0.306782, 0.000000;;,
+ 27;3; -0.000000, 0.306782, 0.000000;;,
+ 28;3; -0.000000, 0.306782, 0.000000;;,
+ 29;3; -0.000000, 0.306782, 0.000000;;,
+ 30;3; -0.000000, 0.306782, 0.000000;;,
+ 31;3; -0.000000, 0.306782, 0.000000;;,
+ 32;3; -0.000000, 0.306782, 0.000000;;,
+ 33;3; -0.000000, 0.306782, 0.000000;;,
+ 34;3; -0.000000, 0.306782, 0.000000;;,
+ 35;3; -0.000000, 0.306782, 0.000000;;,
+ 36;3; -0.000000, 0.306782, 0.000000;;,
+ 37;3; -0.000000, 0.306782, 0.000000;;,
+ 38;3; -0.000000, 0.306782, 0.000000;;,
+ 39;3; -0.000000, 0.306782, 0.000000;;,
+ 40;3; -0.000000, 0.306782, 0.000000;;,
+ 41;3; -0.000000, 0.306782, 0.000000;;,
+ 42;3; -0.000000, 0.306782, 0.000000;;,
+ 43;3; -0.000000, 0.306782, 0.000000;;,
+ 44;3; -0.000000, 0.306782, 0.000000;;,
+ 45;3; -0.000000, 0.306782, 0.000000;;,
+ 46;3; -0.000000, 0.306782, 0.000000;;,
+ 47;3; -0.000000, 0.306782, 0.000000;;,
+ 48;3; -0.000000, 0.306782, 0.000000;;,
+ 49;3; -0.000000, 0.306782, 0.000000;;,
+ 50;3; -0.000000, 0.306782, 0.000000;;,
+ 51;3; -0.000000, 0.306782, 0.000000;;,
+ 52;3; -0.000000, 0.306782, 0.000000;;,
+ 53;3; -0.000000, 0.306782, 0.000000;;,
+ 54;3; -0.000000, 0.306782, 0.000000;;,
+ 55;3; -0.000000, 0.306782, 0.000000;;,
+ 56;3; -0.000000, 0.306782, 0.000000;;,
+ 57;3; -0.000000, 0.306782, 0.000000;;,
+ 58;3; -0.000000, 0.306782, 0.000000;;,
+ 59;3; -0.000000, 0.306782, 0.000000;;,
+ 60;3; -0.000000, 0.306782, 0.000000;;,
+ 61;3; -0.000000, 0.306782, 0.000000;;,
+ 62;3; -0.000000, 0.306782, 0.000000;;,
+ 63;3; -0.000000, 0.306782, 0.000000;;,
+ 64;3; -0.000000, 0.306782, 0.000000;;,
+ 65;3; -0.000000, 0.306782, 0.000000;;,
+ 66;3; -0.000000, 0.306782, 0.000000;;,
+ 67;3; -0.000000, 0.306782, 0.000000;;,
+ 68;3; -0.000000, 0.306782, 0.000000;;,
+ 69;3; -0.000000, 0.306782, 0.000000;;,
+ 70;3; -0.000000, 0.306782, 0.000000;;,
+ 71;3; -0.000000, 0.306782, 0.000000;;,
+ 72;3; -0.000000, 0.306782, 0.000000;;,
+ 73;3; -0.000000, 0.306782, 0.000000;;,
+ 74;3; 0.000000, 0.306782,-0.000000;;,
+ 75;3; 0.000000, 0.306782,-0.000000;;,
+ 76;3; 0.000000, 0.306782,-0.000000;;,
+ 77;3; 0.000000, 0.306782, 0.000000;;,
+ 78;3; 0.000000, 0.306782,-0.000000;;,
+ 79;3; 0.000000, 0.306782,-0.000000;;,
+ 80;3; 0.000000, 0.306782,-0.000000;;,
+ 81;3; 0.000000, 0.306782,-0.000000;;,
+ 82;3; 0.000000, 0.306782,-0.000000;;,
+ 83;3; 0.000000, 0.306782,-0.000000;;,
+ 84;3; 0.000000, 0.306782,-0.000000;;,
+ 85;3; 0.000000, 0.306782,-0.000000;;,
+ 86;3; 0.000000, 0.306782,-0.000000;;,
+ 87;3; 0.000000, 0.306782, 0.000000;;,
+ 88;3; 0.000000, 0.306782, 0.000000;;,
+ 89;3; 0.000000, 0.306782,-0.000000;;,
+ 90;3; 0.000000, 0.306782,-0.000000;;,
+ 91;3; 0.000000, 0.306782, 0.000000;;,
+ 92;3; 0.000000, 0.306782,-0.000000;;,
+ 93;3; 0.000000, 0.306782,-0.000000;;,
+ 94;3; 0.000000, 0.306782,-0.000000;;,
+ 95;3; 0.000000, 0.306782,-0.000000;;,
+ 96;3; 0.000000, 0.306782, 0.000000;;,
+ 97;3; 0.000000, 0.306782,-0.000000;;,
+ 98;3; 0.000000, 0.306782,-0.000000;;,
+ 99;3; 0.000000, 0.306782, 0.000000;;,
+ 100;3; 0.000000, 0.306782, 0.000000;;,
+ 101;3; 0.000000, 0.306782, 0.000000;;,
+ 102;3; 0.000000, 0.306782, 0.000000;;,
+ 103;3; 0.000000, 0.306782,-0.000000;;,
+ 104;3; 0.000000, 0.306782,-0.000000;;,
+ 105;3; 0.000000, 0.306782,-0.000000;;,
+ 106;3; 0.000000, 0.306782,-0.000000;;,
+ 107;3; -0.000000, 0.306782,-0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 1;4; -0.527614,-0.521697, 0.474320,-0.473524;;,
+ 2;4; -0.530802,-0.518079, 0.470380,-0.477122;;,
+ 3;4; -0.535985,-0.512196, 0.463975,-0.482972;;,
+ 4;4; -0.542764,-0.504502, 0.455598,-0.490624;;,
+ 5;4; -0.550443,-0.495786, 0.446109,-0.499292;;,
+ 6;4; -0.558122,-0.487070, 0.436619,-0.507959;;,
+ 7;4; -0.564900,-0.479376, 0.428242,-0.515611;;,
+ 8;4; -0.570083,-0.473494, 0.421838,-0.521461;;,
+ 9;4; -0.573270,-0.469876, 0.417899,-0.525058;;,
+ 10;4; -0.574329,-0.468674, 0.416590,-0.526254;;,
+ 11;4; -0.573665,-0.469478, 0.417462,-0.525499;;,
+ 12;4; -0.571604,-0.471962, 0.420154,-0.523156;;,
+ 13;4; -0.568105,-0.476149, 0.424694,-0.519183;;,
+ 14;4; -0.563262,-0.481894, 0.430929,-0.513690;;,
+ 15;4; -0.557341,-0.488840, 0.438472,-0.506982;;,
+ 16;4; -0.550765,-0.496445, 0.446740,-0.499544;;,
+ 17;4; -0.544025,-0.504100, 0.455074,-0.491936;;,
+ 18;4; -0.537558,-0.511276, 0.462901,-0.484654;;,
+ 19;4; -0.531676,-0.517607, 0.469822,-0.478052;;,
+ 20;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 21;4; -0.521480,-0.527910, 0.481147,-0.466682;;,
+ 22;4; -0.515742,-0.533392, 0.487201,-0.460317;;,
+ 23;4; -0.509507,-0.539187, 0.493617,-0.453419;;,
+ 24;4; -0.503070,-0.545036, 0.500108,-0.446312;;,
+ 25;4; -0.496839,-0.550595, 0.506286,-0.439444;;,
+ 26;4; -0.491262,-0.555494, 0.511740,-0.433305;;,
+ 27;4; -0.486723,-0.559433, 0.516130,-0.428313;;,
+ 28;4; -0.483456,-0.562239, 0.519260,-0.424724;;,
+ 29;4; -0.481538,-0.563874, 0.521085,-0.422618;;,
+ 30;4; -0.480921,-0.564396, 0.521669,-0.421941;;,
+ 31;4; -0.481856,-0.563546, 0.520726,-0.422973;;,
+ 32;4; -0.484429,-0.561206, 0.518129,-0.425815;;,
+ 33;4; -0.488341,-0.557649, 0.514183,-0.430133;;,
+ 34;4; -0.493324,-0.553118, 0.509156,-0.435635;;,
+ 35;4; -0.499125,-0.547843, 0.503303,-0.442041;;,
+ 36;4; -0.505478,-0.542065, 0.496893,-0.449056;;,
+ 37;4; -0.512066,-0.536074, 0.490246,-0.456331;;,
+ 38;4; -0.518448,-0.530272, 0.483808,-0.463377;;,
+ 39;4; -0.523865,-0.525346, 0.478343,-0.469358;;,
+ 40;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 41;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 42;4; -0.524850,-0.524520, 0.477419,-0.470438;;,
+ 43;4; -0.521100,-0.528085, 0.481358,-0.466281;;,
+ 44;4; -0.516557,-0.532405, 0.486132,-0.461244;;,
+ 45;4; -0.511945,-0.536789, 0.490976,-0.456131;;,
+ 46;4; -0.507763,-0.540766, 0.495370,-0.451494;;,
+ 47;4; -0.504388,-0.543974, 0.498915,-0.447753;;,
+ 48;4; -0.502146,-0.546106, 0.501270,-0.445267;;,
+ 49;4; -0.501333,-0.546878, 0.502124,-0.444366;;,
+ 50;4; -0.502208,-0.546046, 0.501205,-0.445336;;,
+ 51;4; -0.504821,-0.543562, 0.498460,-0.448232;;,
+ 52;4; -0.508934,-0.539652, 0.494140,-0.452792;;,
+ 53;4; -0.513944,-0.534889, 0.488876,-0.458347;;,
+ 54;4; -0.518954,-0.530126, 0.483613,-0.463901;;,
+ 55;4; -0.523067,-0.526216, 0.479293,-0.468461;;,
+ 56;4; -0.525679,-0.523732, 0.476548,-0.471358;;,
+ 57;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 58;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 59;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 60;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 61;4; -0.528979,-0.520291, 0.472777,-0.475049;;,
+ 62;4; -0.535807,-0.512944, 0.464744,-0.482712;;,
+ 63;4; -0.544574,-0.503511, 0.454430,-0.492552;;,
+ 64;4; -0.551403,-0.496165, 0.446398,-0.500216;;,
+ 65;4; -0.553827,-0.493556, 0.443546,-0.502936;;,
+ 66;4; -0.552948,-0.494502, 0.444580,-0.501950;;,
+ 67;4; -0.550523,-0.497111, 0.447433,-0.499228;;,
+ 68;4; -0.546874,-0.501037, 0.451725,-0.495133;;,
+ 69;4; -0.542351,-0.505903, 0.457046,-0.490057;;,
+ 70;4; -0.537365,-0.511268, 0.462911,-0.484461;;,
+ 71;4; -0.532452,-0.516554, 0.468691,-0.478947;;,
+ 72;4; -0.528398,-0.520916, 0.473460,-0.474397;;,
+ 73;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 74;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 75;4; -0.528282,-0.521070, 0.477189,-0.470676;;,
+ 76;4; -0.532082,-0.517047, 0.480621,-0.467041;;,
+ 77;4; -0.536687,-0.512171, 0.484781,-0.462637;;,
+ 78;4; -0.541360,-0.507223, 0.489002,-0.458168;;,
+ 79;4; -0.545599,-0.502735, 0.492831,-0.454113;;,
+ 80;4; -0.549019,-0.499114, 0.495920,-0.450843;;,
+ 81;4; -0.551291,-0.496707, 0.497973,-0.448669;;,
+ 82;4; -0.552115,-0.495835, 0.498717,-0.447881;;,
+ 83;4; -0.550457,-0.497520, 0.497219,-0.449403;;,
+ 84;4; -0.545507,-0.502547, 0.492748,-0.453943;;,
+ 85;4; -0.537714,-0.510461, 0.485709,-0.461092;;,
+ 86;4; -0.528222,-0.520101, 0.477135,-0.469800;;,
+ 87;4; -0.518730,-0.529742, 0.468560,-0.478509;;,
+ 88;4; -0.510937,-0.537656, 0.461522,-0.485657;;,
+ 89;4; -0.505987,-0.542683, 0.457051,-0.490198;;,
+ 90;4; -0.504329,-0.544367, 0.455553,-0.491720;;,
+ 91;4; -0.505971,-0.542702, 0.457035,-0.490215;;,
+ 92;4; -0.510870,-0.537730, 0.461461,-0.485724;;,
+ 93;4; -0.518584,-0.529904, 0.468429,-0.478655;;,
+ 94;4; -0.527981,-0.520369, 0.476917,-0.470042;;,
+ 95;4; -0.537378,-0.510835, 0.485405,-0.461430;;,
+ 96;4; -0.545092,-0.503008, 0.492373,-0.454360;;,
+ 97;4; -0.549992,-0.498037, 0.496799,-0.449870;;,
+ 98;4; -0.551633,-0.496371, 0.498282,-0.448365;;,
+ 99;4; -0.550763,-0.497292, 0.497496,-0.449197;;,
+ 100;4; -0.548165,-0.500040, 0.495150,-0.451679;;,
+ 101;4; -0.544076,-0.504366, 0.491455,-0.455586;;,
+ 102;4; -0.539094,-0.509635, 0.486955,-0.460346;;,
+ 103;4; -0.534112,-0.514905, 0.482455,-0.465107;;,
+ 104;4; -0.530023,-0.519231, 0.478761,-0.469014;;,
+ 105;4; -0.527425,-0.521979, 0.476415,-0.471496;;,
+ 106;4; -0.526554,-0.522900, 0.475629,-0.472328;;,
+ 107;4; -0.526554,-0.522900, 0.475629,-0.472328;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_007}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; 0.078315, 0.084604,-0.007980;;,
+ 1;3; 0.078315, 0.084604,-0.007980;;,
+ 2;3; 0.078315, 0.084604,-0.007980;;,
+ 3;3; 0.078315, 0.084604,-0.007980;;,
+ 4;3; 0.078315, 0.084604,-0.007980;;,
+ 5;3; 0.078315, 0.084604,-0.007980;;,
+ 6;3; 0.078315, 0.084604,-0.007980;;,
+ 7;3; 0.078315, 0.084604,-0.007980;;,
+ 8;3; 0.078315, 0.084604,-0.007980;;,
+ 9;3; 0.078315, 0.084604,-0.007980;;,
+ 10;3; 0.078315, 0.084604,-0.007980;;,
+ 11;3; 0.078315, 0.084604,-0.007980;;,
+ 12;3; 0.078315, 0.084604,-0.007980;;,
+ 13;3; 0.078315, 0.084604,-0.007980;;,
+ 14;3; 0.078315, 0.084604,-0.007980;;,
+ 15;3; 0.078315, 0.084604,-0.007980;;,
+ 16;3; 0.078315, 0.084604,-0.007980;;,
+ 17;3; 0.078315, 0.084604,-0.007980;;,
+ 18;3; 0.078315, 0.084604,-0.007980;;,
+ 19;3; 0.078315, 0.084604,-0.007980;;,
+ 20;3; 0.078315, 0.084604,-0.007980;;,
+ 21;3; 0.078316, 0.084604,-0.007980;;,
+ 22;3; 0.078315, 0.084604,-0.007980;;,
+ 23;3; 0.078315, 0.084604,-0.007980;;,
+ 24;3; 0.078315, 0.084604,-0.007980;;,
+ 25;3; 0.078316, 0.084604,-0.007980;;,
+ 26;3; 0.078316, 0.084604,-0.007980;;,
+ 27;3; 0.078315, 0.084604,-0.007980;;,
+ 28;3; 0.078315, 0.084604,-0.007980;;,
+ 29;3; 0.078315, 0.084604,-0.007980;;,
+ 30;3; 0.078315, 0.084604,-0.007980;;,
+ 31;3; 0.078315, 0.084604,-0.007980;;,
+ 32;3; 0.078315, 0.084604,-0.007980;;,
+ 33;3; 0.078315, 0.084604,-0.007980;;,
+ 34;3; 0.078315, 0.084604,-0.007980;;,
+ 35;3; 0.078315, 0.084604,-0.007980;;,
+ 36;3; 0.078315, 0.084604,-0.007980;;,
+ 37;3; 0.078315, 0.084604,-0.007980;;,
+ 38;3; 0.078315, 0.084604,-0.007980;;,
+ 39;3; 0.078316, 0.084604,-0.007980;;,
+ 40;3; 0.078315, 0.084604,-0.007980;;,
+ 41;3; 0.078315, 0.084604,-0.007980;;,
+ 42;3; 0.078315, 0.084604,-0.007980;;,
+ 43;3; 0.078316, 0.084604,-0.007980;;,
+ 44;3; 0.078315, 0.084604,-0.007980;;,
+ 45;3; 0.078315, 0.084604,-0.007980;;,
+ 46;3; 0.078315, 0.084604,-0.007980;;,
+ 47;3; 0.078315, 0.084604,-0.007980;;,
+ 48;3; 0.078315, 0.084604,-0.007980;;,
+ 49;3; 0.078315, 0.084604,-0.007980;;,
+ 50;3; 0.078315, 0.084604,-0.007980;;,
+ 51;3; 0.078315, 0.084604,-0.007980;;,
+ 52;3; 0.078315, 0.084604,-0.007980;;,
+ 53;3; 0.078315, 0.084604,-0.007980;;,
+ 54;3; 0.078316, 0.084604,-0.007980;;,
+ 55;3; 0.078316, 0.084604,-0.007980;;,
+ 56;3; 0.078315, 0.084604,-0.007980;;,
+ 57;3; 0.078315, 0.084604,-0.007980;;,
+ 58;3; 0.078315, 0.084604,-0.007980;;,
+ 59;3; 0.078315, 0.084604,-0.007980;;,
+ 60;3; 0.078315, 0.084604,-0.007980;;,
+ 61;3; 0.078315, 0.084604,-0.007980;;,
+ 62;3; 0.078315, 0.084604,-0.007980;;,
+ 63;3; 0.078316, 0.084604,-0.007980;;,
+ 64;3; 0.078315, 0.084604,-0.007980;;,
+ 65;3; 0.078315, 0.084604,-0.007980;;,
+ 66;3; 0.078315, 0.084604,-0.007980;;,
+ 67;3; 0.078315, 0.084604,-0.007980;;,
+ 68;3; 0.078315, 0.084604,-0.007980;;,
+ 69;3; 0.078315, 0.084604,-0.007980;;,
+ 70;3; 0.078315, 0.084604,-0.007980;;,
+ 71;3; 0.078315, 0.084604,-0.007980;;,
+ 72;3; 0.078315, 0.084604,-0.007980;;,
+ 73;3; 0.078315, 0.084604,-0.007980;;,
+ 74;3; 0.078315, 0.084604,-0.007980;;,
+ 75;3; 0.078315, 0.084604,-0.007980;;,
+ 76;3; 0.078315, 0.084604,-0.007980;;,
+ 77;3; 0.078316, 0.084604,-0.007980;;,
+ 78;3; 0.078315, 0.084604,-0.007980;;,
+ 79;3; 0.078315, 0.084604,-0.007980;;,
+ 80;3; 0.078315, 0.084604,-0.007980;;,
+ 81;3; 0.078315, 0.084604,-0.007980;;,
+ 82;3; 0.078315, 0.084604,-0.007980;;,
+ 83;3; 0.078315, 0.084604,-0.007980;;,
+ 84;3; 0.078315, 0.084604,-0.007980;;,
+ 85;3; 0.078315, 0.084604,-0.007980;;,
+ 86;3; 0.078316, 0.084604,-0.007980;;,
+ 87;3; 0.078316, 0.084604,-0.007980;;,
+ 88;3; 0.078316, 0.084604,-0.007980;;,
+ 89;3; 0.078315, 0.084604,-0.007980;;,
+ 90;3; 0.078315, 0.084604,-0.007980;;,
+ 91;3; 0.078315, 0.084604,-0.007980;;,
+ 92;3; 0.078315, 0.084604,-0.007980;;,
+ 93;3; 0.078315, 0.084604,-0.007980;;,
+ 94;3; 0.078315, 0.084604,-0.007980;;,
+ 95;3; 0.078316, 0.084604,-0.007980;;,
+ 96;3; 0.078315, 0.084604,-0.007980;;,
+ 97;3; 0.078315, 0.084604,-0.007980;;,
+ 98;3; 0.078315, 0.084604,-0.007980;;,
+ 99;3; 0.078315, 0.084604,-0.007980;;,
+ 100;3; 0.078315, 0.084604,-0.007980;;,
+ 101;3; 0.078315, 0.084604,-0.007980;;,
+ 102;3; 0.078315, 0.084604,-0.007980;;,
+ 103;3; 0.078316, 0.084604,-0.007980;;,
+ 104;3; 0.078315, 0.084604,-0.007980;;,
+ 105;3; 0.078315, 0.084604,-0.007980;;,
+ 106;3; 0.078315, 0.084604,-0.007980;;,
+ 107;3; 0.078315, 0.084604,-0.007980;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 1;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 2;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 3;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 4;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 5;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 6;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 7;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 8;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 9;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 10;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 11;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 12;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 13;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 14;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 15;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 16;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 17;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 18;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 19;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 20;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 21;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 22;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 23;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 24;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 25;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 26;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 27;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 28;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 29;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 30;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 31;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 32;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 33;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 34;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 35;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 36;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 37;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 38;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 39;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 40;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 41;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 42;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 43;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 44;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 45;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 46;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 47;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 48;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 49;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 50;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 51;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 52;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 53;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 54;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 55;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 56;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 57;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 58;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 59;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 60;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 61;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 62;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 63;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 64;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 65;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 66;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 67;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 68;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 69;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 70;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 71;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 72;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 73;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 74;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 75;4; -0.706230,-0.227278,-0.637929,-0.205297;;,
+ 76;4; -0.702922,-0.236361,-0.634941,-0.213502;;,
+ 77;4; -0.698913,-0.247369,-0.631319,-0.223445;;,
+ 78;4; -0.694845,-0.258540,-0.627644,-0.233535;;,
+ 79;4; -0.691154,-0.268673,-0.624311,-0.242689;;,
+ 80;4; -0.688177,-0.276848,-0.621622,-0.250073;;,
+ 81;4; -0.686199,-0.282281,-0.619834,-0.254980;;,
+ 82;4; -0.685482,-0.284249,-0.619187,-0.256758;;,
+ 83;4; -0.686254,-0.282129,-0.619884,-0.254843;;,
+ 84;4; -0.688559,-0.275800,-0.621966,-0.249126;;,
+ 85;4; -0.692188,-0.265836,-0.625244,-0.240126;;,
+ 86;4; -0.696608,-0.253699,-0.629237,-0.229162;;,
+ 87;4; -0.701028,-0.241561,-0.633230,-0.218199;;,
+ 88;4; -0.704657,-0.231598,-0.636508,-0.209199;;,
+ 89;4; -0.706962,-0.225269,-0.638590,-0.203482;;,
+ 90;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 91;4; -0.706658,-0.225928,-0.638315,-0.204078;;,
+ 92;4; -0.703445,-0.234227,-0.635412,-0.211573;;,
+ 93;4; -0.698386,-0.247291,-0.630843,-0.223374;;,
+ 94;4; -0.692224,-0.263205,-0.625277,-0.237749;;,
+ 95;4; -0.686062,-0.279119,-0.619711,-0.252124;;,
+ 96;4; -0.681003,-0.292183,-0.615141,-0.263925;;,
+ 97;4; -0.677790,-0.300481,-0.612239,-0.271420;;,
+ 98;4; -0.676713,-0.303261,-0.611266,-0.273932;;,
+ 99;4; -0.677790,-0.300481,-0.612239,-0.271420;;,
+ 100;4; -0.681003,-0.292183,-0.615141,-0.263925;;,
+ 101;4; -0.686062,-0.279119,-0.619711,-0.252124;;,
+ 102;4; -0.692224,-0.263205,-0.625277,-0.237749;;,
+ 103;4; -0.698386,-0.247291,-0.630843,-0.223374;;,
+ 104;4; -0.703445,-0.234227,-0.635412,-0.211573;;,
+ 105;4; -0.706658,-0.225928,-0.638315,-0.204078;;,
+ 106;4; -0.707734,-0.223148,-0.639287,-0.201567;;,
+ 107;4; -0.707120,-0.224647,-0.638732,-0.202920;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Sand_monster}
+ AnimationKey { //Position
+ 2;
+ 108;
+ 0;3; -0.000000, 0.000000, 0.000000;;,
+ 1;3; -0.000000, 0.000000, 0.000000;;,
+ 2;3; -0.000000, 0.000000, 0.000000;;,
+ 3;3; -0.000000, 0.000000, 0.000000;;,
+ 4;3; -0.000000, 0.000000, 0.000000;;,
+ 5;3; -0.000000, 0.000000, 0.000000;;,
+ 6;3; -0.000000, 0.000000, 0.000000;;,
+ 7;3; -0.000000, 0.000000, 0.000000;;,
+ 8;3; -0.000000, 0.000000, 0.000000;;,
+ 9;3; -0.000000, 0.000000, 0.000000;;,
+ 10;3; -0.000000, 0.000000, 0.000000;;,
+ 11;3; -0.000000, 0.000000, 0.000000;;,
+ 12;3; -0.000000, 0.000000, 0.000000;;,
+ 13;3; -0.000000, 0.000000, 0.000000;;,
+ 14;3; -0.000000, 0.000000, 0.000000;;,
+ 15;3; -0.000000, 0.000000, 0.000000;;,
+ 16;3; -0.000000, 0.000000, 0.000000;;,
+ 17;3; -0.000000, 0.000000, 0.000000;;,
+ 18;3; -0.000000, 0.000000, 0.000000;;,
+ 19;3; -0.000000, 0.000000, 0.000000;;,
+ 20;3; -0.000000, 0.000000, 0.000000;;,
+ 21;3; -0.000000, 0.000000, 0.000000;;,
+ 22;3; -0.000000, 0.000000, 0.000000;;,
+ 23;3; -0.000000, 0.000000, 0.000000;;,
+ 24;3; -0.000000, 0.000000, 0.000000;;,
+ 25;3; -0.000000, 0.000000, 0.000000;;,
+ 26;3; -0.000000, 0.000000, 0.000000;;,
+ 27;3; -0.000000, 0.000000, 0.000000;;,
+ 28;3; -0.000000, 0.000000, 0.000000;;,
+ 29;3; -0.000000, 0.000000, 0.000000;;,
+ 30;3; -0.000000, 0.000000, 0.000000;;,
+ 31;3; -0.000000, 0.000000, 0.000000;;,
+ 32;3; -0.000000, 0.000000, 0.000000;;,
+ 33;3; -0.000000, 0.000000, 0.000000;;,
+ 34;3; -0.000000, 0.000000, 0.000000;;,
+ 35;3; -0.000000, 0.000000, 0.000000;;,
+ 36;3; -0.000000, 0.000000, 0.000000;;,
+ 37;3; -0.000000, 0.000000, 0.000000;;,
+ 38;3; -0.000000, 0.000000, 0.000000;;,
+ 39;3; -0.000000, 0.000000, 0.000000;;,
+ 40;3; -0.000000, 0.000000, 0.000000;;,
+ 41;3; -0.000000, 0.000000, 0.000000;;,
+ 42;3; -0.000000, 0.000000, 0.000000;;,
+ 43;3; -0.000000, 0.000000, 0.000000;;,
+ 44;3; -0.000000, 0.000000, 0.000000;;,
+ 45;3; -0.000000, 0.000000, 0.000000;;,
+ 46;3; -0.000000, 0.000000, 0.000000;;,
+ 47;3; -0.000000, 0.000000, 0.000000;;,
+ 48;3; -0.000000, 0.000000, 0.000000;;,
+ 49;3; -0.000000, 0.000000, 0.000000;;,
+ 50;3; -0.000000, 0.000000, 0.000000;;,
+ 51;3; -0.000000, 0.000000, 0.000000;;,
+ 52;3; -0.000000, 0.000000, 0.000000;;,
+ 53;3; -0.000000, 0.000000, 0.000000;;,
+ 54;3; -0.000000, 0.000000, 0.000000;;,
+ 55;3; -0.000000, 0.000000, 0.000000;;,
+ 56;3; -0.000000, 0.000000, 0.000000;;,
+ 57;3; -0.000000, 0.000000, 0.000000;;,
+ 58;3; -0.000000, 0.000000, 0.000000;;,
+ 59;3; -0.000000, 0.000000, 0.000000;;,
+ 60;3; -0.000000, 0.000000, 0.000000;;,
+ 61;3; -0.000000, 0.000000, 0.000000;;,
+ 62;3; -0.000000, 0.000000, 0.000000;;,
+ 63;3; -0.000000, 0.000000, 0.000000;;,
+ 64;3; -0.000000, 0.000000, 0.000000;;,
+ 65;3; -0.000000, 0.000000, 0.000000;;,
+ 66;3; -0.000000, 0.000000, 0.000000;;,
+ 67;3; -0.000000, 0.000000, 0.000000;;,
+ 68;3; -0.000000, 0.000000, 0.000000;;,
+ 69;3; -0.000000, 0.000000, 0.000000;;,
+ 70;3; -0.000000, 0.000000, 0.000000;;,
+ 71;3; -0.000000, 0.000000, 0.000000;;,
+ 72;3; -0.000000, 0.000000, 0.000000;;,
+ 73;3; -0.000000, 0.000000, 0.000000;;,
+ 74;3; -0.000000, 0.000000, 0.000000;;,
+ 75;3; -0.000000, 0.000000, 0.000000;;,
+ 76;3; -0.000000, 0.000000, 0.000000;;,
+ 77;3; -0.000000, 0.000000, 0.000000;;,
+ 78;3; -0.000000, 0.000000, 0.000000;;,
+ 79;3; -0.000000, 0.000000, 0.000000;;,
+ 80;3; -0.000000, 0.000000, 0.000000;;,
+ 81;3; -0.000000, 0.000000, 0.000000;;,
+ 82;3; -0.000000, 0.000000, 0.000000;;,
+ 83;3; -0.000000, 0.000000, 0.000000;;,
+ 84;3; -0.000000, 0.000000, 0.000000;;,
+ 85;3; -0.000000, 0.000000, 0.000000;;,
+ 86;3; -0.000000, 0.000000, 0.000000;;,
+ 87;3; -0.000000, 0.000000, 0.000000;;,
+ 88;3; -0.000000, 0.000000, 0.000000;;,
+ 89;3; -0.000000, 0.000000, 0.000000;;,
+ 90;3; -0.000000, 0.000000, 0.000000;;,
+ 91;3; -0.000000, 0.000000, 0.000000;;,
+ 92;3; -0.000000, 0.000000, 0.000000;;,
+ 93;3; -0.000000, 0.000000, 0.000000;;,
+ 94;3; -0.000000, 0.000000, 0.000000;;,
+ 95;3; -0.000000, 0.000000, 0.000000;;,
+ 96;3; -0.000000, 0.000000, 0.000000;;,
+ 97;3; -0.000000, 0.000000, 0.000000;;,
+ 98;3; -0.000000, 0.000000, 0.000000;;,
+ 99;3; -0.000000, 0.000000, 0.000000;;,
+ 100;3; -0.000000, 0.000000, 0.000000;;,
+ 101;3; -0.000000, 0.000000, 0.000000;;,
+ 102;3; -0.000000, 0.000000, 0.000000;;,
+ 103;3; -0.000000, 0.000000, 0.000000;;,
+ 104;3; -0.000000, 0.000000, 0.000000;;,
+ 105;3; -0.000000, 0.000000, 0.000000;;,
+ 106;3; -0.000000, 0.000000, 0.000000;;,
+ 107;3; -0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 108;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 101;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 102;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 103;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 104;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 105;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 106;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 107;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 108;
+ 0;3; 0.746845, 0.740784, 0.740784;;,
+ 1;3; 0.746845, 0.740784, 0.740784;;,
+ 2;3; 0.746845, 0.740784, 0.740784;;,
+ 3;3; 0.746845, 0.740784, 0.740784;;,
+ 4;3; 0.746845, 0.740784, 0.740784;;,
+ 5;3; 0.746845, 0.740784, 0.740784;;,
+ 6;3; 0.746845, 0.740784, 0.740784;;,
+ 7;3; 0.746845, 0.740784, 0.740784;;,
+ 8;3; 0.746845, 0.740784, 0.740784;;,
+ 9;3; 0.746845, 0.740784, 0.740784;;,
+ 10;3; 0.746845, 0.740784, 0.740784;;,
+ 11;3; 0.746845, 0.740784, 0.740784;;,
+ 12;3; 0.746845, 0.740784, 0.740784;;,
+ 13;3; 0.746845, 0.740784, 0.740784;;,
+ 14;3; 0.746845, 0.740784, 0.740784;;,
+ 15;3; 0.746845, 0.740784, 0.740784;;,
+ 16;3; 0.746845, 0.740784, 0.740784;;,
+ 17;3; 0.746845, 0.740784, 0.740784;;,
+ 18;3; 0.746845, 0.740784, 0.740784;;,
+ 19;3; 0.746845, 0.740784, 0.740784;;,
+ 20;3; 0.746845, 0.740784, 0.740784;;,
+ 21;3; 0.746845, 0.740784, 0.740784;;,
+ 22;3; 0.746845, 0.740784, 0.740784;;,
+ 23;3; 0.746845, 0.740784, 0.740784;;,
+ 24;3; 0.746845, 0.740784, 0.740784;;,
+ 25;3; 0.746845, 0.740784, 0.740784;;,
+ 26;3; 0.746845, 0.740784, 0.740784;;,
+ 27;3; 0.746845, 0.740784, 0.740784;;,
+ 28;3; 0.746845, 0.740784, 0.740784;;,
+ 29;3; 0.746845, 0.740784, 0.740784;;,
+ 30;3; 0.746845, 0.740784, 0.740784;;,
+ 31;3; 0.746845, 0.740784, 0.740784;;,
+ 32;3; 0.746845, 0.740784, 0.740784;;,
+ 33;3; 0.746845, 0.740784, 0.740784;;,
+ 34;3; 0.746845, 0.740784, 0.740784;;,
+ 35;3; 0.746845, 0.740784, 0.740784;;,
+ 36;3; 0.746845, 0.740784, 0.740784;;,
+ 37;3; 0.746845, 0.740784, 0.740784;;,
+ 38;3; 0.746845, 0.740784, 0.740784;;,
+ 39;3; 0.746845, 0.740784, 0.740784;;,
+ 40;3; 0.746845, 0.740784, 0.740784;;,
+ 41;3; 0.746845, 0.740784, 0.740784;;,
+ 42;3; 0.746845, 0.740784, 0.740784;;,
+ 43;3; 0.746845, 0.740784, 0.740784;;,
+ 44;3; 0.746845, 0.740784, 0.740784;;,
+ 45;3; 0.746845, 0.740784, 0.740784;;,
+ 46;3; 0.746845, 0.740784, 0.740784;;,
+ 47;3; 0.746845, 0.740784, 0.740784;;,
+ 48;3; 0.746845, 0.740784, 0.740784;;,
+ 49;3; 0.746845, 0.740784, 0.740784;;,
+ 50;3; 0.746845, 0.740784, 0.740784;;,
+ 51;3; 0.746845, 0.740784, 0.740784;;,
+ 52;3; 0.746845, 0.740784, 0.740784;;,
+ 53;3; 0.746845, 0.740784, 0.740784;;,
+ 54;3; 0.746845, 0.740784, 0.740784;;,
+ 55;3; 0.746845, 0.740784, 0.740784;;,
+ 56;3; 0.746845, 0.740784, 0.740784;;,
+ 57;3; 0.746845, 0.740784, 0.740784;;,
+ 58;3; 0.746845, 0.740784, 0.740784;;,
+ 59;3; 0.746845, 0.740784, 0.740784;;,
+ 60;3; 0.746845, 0.740784, 0.740784;;,
+ 61;3; 0.746845, 0.740784, 0.740784;;,
+ 62;3; 0.746845, 0.740784, 0.740784;;,
+ 63;3; 0.746845, 0.740784, 0.740784;;,
+ 64;3; 0.746845, 0.740784, 0.740784;;,
+ 65;3; 0.746845, 0.740784, 0.740784;;,
+ 66;3; 0.746845, 0.740784, 0.740784;;,
+ 67;3; 0.746845, 0.740784, 0.740784;;,
+ 68;3; 0.746845, 0.740784, 0.740784;;,
+ 69;3; 0.746845, 0.740784, 0.740784;;,
+ 70;3; 0.746845, 0.740784, 0.740784;;,
+ 71;3; 0.746845, 0.740784, 0.740784;;,
+ 72;3; 0.746845, 0.740784, 0.740784;;,
+ 73;3; 0.746845, 0.740784, 0.740784;;,
+ 74;3; 0.746845, 0.740784, 0.740784;;,
+ 75;3; 0.746845, 0.740784, 0.740784;;,
+ 76;3; 0.746845, 0.740784, 0.740784;;,
+ 77;3; 0.746845, 0.740784, 0.740784;;,
+ 78;3; 0.746845, 0.740784, 0.740784;;,
+ 79;3; 0.746845, 0.740784, 0.740784;;,
+ 80;3; 0.746845, 0.740784, 0.740784;;,
+ 81;3; 0.746845, 0.740784, 0.740784;;,
+ 82;3; 0.746845, 0.740784, 0.740784;;,
+ 83;3; 0.746845, 0.740784, 0.740784;;,
+ 84;3; 0.746845, 0.740784, 0.740784;;,
+ 85;3; 0.746845, 0.740784, 0.740784;;,
+ 86;3; 0.746845, 0.740784, 0.740784;;,
+ 87;3; 0.746845, 0.740784, 0.740784;;,
+ 88;3; 0.746845, 0.740784, 0.740784;;,
+ 89;3; 0.746845, 0.740784, 0.740784;;,
+ 90;3; 0.746845, 0.740784, 0.740784;;,
+ 91;3; 0.746845, 0.740784, 0.740784;;,
+ 92;3; 0.746845, 0.740784, 0.740784;;,
+ 93;3; 0.746845, 0.740784, 0.740784;;,
+ 94;3; 0.746845, 0.740784, 0.740784;;,
+ 95;3; 0.746845, 0.740784, 0.740784;;,
+ 96;3; 0.746845, 0.740784, 0.740784;;,
+ 97;3; 0.746845, 0.740784, 0.740784;;,
+ 98;3; 0.746845, 0.740784, 0.740784;;,
+ 99;3; 0.746845, 0.740784, 0.740784;;,
+ 100;3; 0.746845, 0.740784, 0.740784;;,
+ 101;3; 0.746845, 0.740784, 0.740784;;,
+ 102;3; 0.746845, 0.740784, 0.740784;;,
+ 103;3; 0.746845, 0.740784, 0.740784;;,
+ 104;3; 0.746845, 0.740784, 0.740784;;,
+ 105;3; 0.746845, 0.740784, 0.740784;;,
+ 106;3; 0.746845, 0.740784, 0.740784;;,
+ 107;3; 0.746845, 0.740784, 0.740784;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/models/mobs_sheep.png b/carbone_mobs/models/mobs_sheep.png
new file mode 100644
index 0000000..96731f7
--- /dev/null
+++ b/carbone_mobs/models/mobs_sheep.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_sheep.x b/carbone_mobs/models/mobs_sheep.x
new file mode 100755
index 0000000..04a1dad
--- /dev/null
+++ b/carbone_mobs/models/mobs_sheep.x
@@ -0,0 +1,7169 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.020581, 0.043608, 0.162447, 1.000000;;
+ }
+ Frame Armature_Root {
+ FrameTransformMatrix {
+ -1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000,-0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.030899,-0.009276, 5.987902, 1.000000;;
+ }
+ Frame Armature_Bone_001 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 1.460671,-0.139217, 4.073730, 1.000000;;
+ }
+ } //End of Armature_Bone_001
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 1.460671,-0.139216,-3.633328, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_Bone_003 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -1.438651,-0.139217, 4.073730, 1.000000;;
+ }
+ } //End of Armature_Bone_003
+ Frame Armature_RR_leg {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -1.438651,-0.139216,-3.633328, 1.000000;;
+ }
+ } //End of Armature_RR_leg
+ Frame Armature_Head {
+ FrameTransformMatrix {
+ -1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000,-0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ -0.000000, 4.052525, 3.788038, 1.000000;;
+ }
+ } //End of Armature_Head
+ } //End of Armature_Root
+ Frame sheep {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.000000,-0.000000, 1.000000;;
+ }
+ Mesh { //Cube_000 Mesh
+ 500;
+ 1.998222; 2.998158; 8.227857;,
+ 1.998223; 2.998159;12.113163;,
+ 1.998224; 6.883465;12.113163;,
+ 1.998224; 6.883465; 8.227857;,
+ 1.998223; 2.998159;12.113163;,
+ 1.998222; 2.998158; 8.227857;,
+ -1.887084; 2.998160; 8.227857;,
+ -1.887085; 2.998161;12.113163;,
+ 1.998222; 2.998158; 8.227857;,
+ 1.998224; 6.883465; 8.227857;,
+ -1.887082; 6.883466; 8.227857;,
+ -1.887084; 2.998160; 8.227857;,
+ -1.887081; 6.883467;12.113163;,
+ 1.998224; 6.883465;12.113163;,
+ 1.998223; 2.998159;12.113163;,
+ -1.887085; 2.998161;12.113163;,
+ -1.887082; 6.883466; 8.227857;,
+ -1.887081; 6.883467;12.113163;,
+ -1.887085; 2.998161;12.113163;,
+ -1.887084; 2.998160; 8.227857;,
+ -1.568521; 6.883467;11.794603;,
+ 1.679665; 6.883465;11.794603;,
+ 1.998224; 6.883465;12.113163;,
+ -1.887081; 6.883467;12.113163;,
+ -1.568521; 7.249873;11.794603;,
+ 1.679665; 7.249870;11.794603;,
+ 1.679665; 6.883465;11.794603;,
+ -1.568521; 6.883467;11.794603;,
+ -1.568522; 6.883466; 8.546416;,
+ -1.568521; 6.883467;11.794603;,
+ -1.887081; 6.883467;12.113163;,
+ -1.887082; 6.883466; 8.227857;,
+ 1.679665; 6.883465;11.794603;,
+ 1.679664; 6.883465; 8.546416;,
+ 1.998224; 6.883465; 8.227857;,
+ 1.998224; 6.883465;12.113163;,
+ 1.679664; 6.883465; 8.546416;,
+ -1.568522; 6.883466; 8.546416;,
+ -1.887082; 6.883466; 8.227857;,
+ 1.998224; 6.883465; 8.227857;,
+ -0.939442; 7.249872;10.610328;,
+ 1.050586; 7.249870;10.610328;,
+ 1.679665; 7.249870;11.794603;,
+ -1.568521; 7.249873;11.794603;,
+ -1.568522; 7.249871; 8.546416;,
+ -1.568521; 7.249873;11.794603;,
+ -1.568521; 6.883467;11.794603;,
+ -1.568522; 6.883466; 8.546416;,
+ 1.679665; 7.249870; 8.546416;,
+ -1.568522; 7.249871; 8.546416;,
+ -1.568522; 6.883466; 8.546416;,
+ 1.679664; 6.883465; 8.546416;,
+ 1.679665; 7.249870;11.794603;,
+ 1.679665; 7.249870; 8.546416;,
+ 1.679664; 6.883465; 8.546416;,
+ 1.679665; 6.883465;11.794603;,
+ -0.939441; 7.625868;10.610328;,
+ 1.050586; 7.625866;10.610328;,
+ 1.050586; 7.249870;10.610328;,
+ -0.939442; 7.249872;10.610328;,
+ 1.050586; 7.249870;10.610328;,
+ 1.050585; 7.249870; 8.689556;,
+ 1.679665; 7.249870; 8.546416;,
+ 1.679665; 7.249870;11.794603;,
+ -0.939442; 7.249871; 8.689556;,
+ -0.939442; 7.249872;10.610328;,
+ -1.568521; 7.249873;11.794603;,
+ -1.568522; 7.249871; 8.546416;,
+ 1.050585; 7.249870; 8.689556;,
+ -0.939442; 7.249871; 8.689556;,
+ -1.568522; 7.249871; 8.546416;,
+ 1.679665; 7.249870; 8.546416;,
+ 1.050586; 7.625866; 8.689556;,
+ 1.050586; 7.625866;10.610328;,
+ -0.939441; 7.625868;10.610328;,
+ -0.939442; 7.625867; 8.689556;,
+ 1.050586; 7.625866;10.610328;,
+ 1.050586; 7.625866; 8.689556;,
+ 1.050585; 7.249870; 8.689556;,
+ 1.050586; 7.249870;10.610328;,
+ -0.939442; 7.625867; 8.689556;,
+ -0.939441; 7.625868;10.610328;,
+ -0.939442; 7.249872;10.610328;,
+ -0.939442; 7.249871; 8.689556;,
+ 1.050586; 7.625866; 8.689556;,
+ -0.939442; 7.625867; 8.689556;,
+ -0.939442; 7.249871; 8.689556;,
+ 1.050585; 7.249870; 8.689556;,
+ -0.605994; 3.121706;-0.078749;,
+ -2.241733; 3.121707;-0.078749;,
+ -2.241733; 3.121707; 0.786420;,
+ -0.605994; 3.121706; 0.786420;,
+ -2.241732; 5.023183;-0.078749;,
+ -0.605994; 5.023182;-0.078749;,
+ -0.605994; 5.023182; 0.786420;,
+ -2.241732; 5.023183; 0.786420;,
+ -0.605994; 5.023182;-0.078749;,
+ -0.605994; 3.121706;-0.078749;,
+ -0.605994; 3.121706; 0.786420;,
+ -0.605994; 5.023182; 0.786420;,
+ -0.605994; 3.121706;-0.078749;,
+ -0.605994; 5.023182;-0.078749;,
+ -2.241732; 5.023183;-0.078749;,
+ -2.241733; 3.121707;-0.078749;,
+ -0.600140; 5.030460; 4.316999;,
+ -0.600140; 5.030460; 5.986964;,
+ -2.247585; 5.030461; 5.986964;,
+ -2.247585; 5.030461; 4.317000;,
+ -2.247585; 2.982151; 5.986965;,
+ -0.600140; 2.982150; 5.986964;,
+ -0.600141; 2.982150; 4.317000;,
+ -2.247586; 2.982151; 4.317000;,
+ -2.247585; 5.030461; 5.986964;,
+ -2.247585; 2.982151; 5.986965;,
+ -2.247586; 2.982151; 4.317000;,
+ -2.247585; 5.030461; 4.317000;,
+ -0.600140; 5.030460; 5.986964;,
+ -0.600140; 2.982150; 5.986964;,
+ -2.247585; 2.982151; 5.986965;,
+ -2.247585; 5.030461; 5.986964;,
+ -0.600140; 5.030460; 4.316999;,
+ -0.600141; 2.982150; 4.317000;,
+ -0.600140; 2.982150; 5.986964;,
+ -0.600140; 5.030460; 5.986964;,
+ -0.802528; 4.778826; 4.317000;,
+ -0.802529; 3.233785; 4.317000;,
+ -0.600141; 2.982150; 4.317000;,
+ -0.600140; 5.030460; 4.316999;,
+ -2.241732; 5.023183; 0.786420;,
+ -0.605994; 5.023182; 0.786420;,
+ -0.802529; 4.778825; 0.786420;,
+ -2.045197; 4.778826; 0.786420;,
+ -0.605994; 3.121706; 0.786420;,
+ -2.241733; 3.121707; 0.786420;,
+ -2.045198; 3.233785; 0.786420;,
+ -0.802529; 3.233784; 0.786420;,
+ -2.241733; 3.121707; 0.786420;,
+ -2.241732; 5.023183; 0.786420;,
+ -2.045197; 4.778826; 0.786420;,
+ -2.045198; 3.233785; 0.786420;,
+ -2.241733; 3.121707;-0.078749;,
+ -2.241732; 5.023183;-0.078749;,
+ -2.241732; 5.023183; 0.786420;,
+ -2.241733; 3.121707; 0.786420;,
+ -2.045197; 4.778826; 0.786420;,
+ -0.802529; 4.778825; 0.786420;,
+ -0.802528; 4.778826; 4.317000;,
+ -2.045197; 4.778826; 4.317000;,
+ -0.802529; 4.778825; 0.786420;,
+ -0.802529; 3.233784; 0.786420;,
+ -0.802529; 3.233785; 4.317000;,
+ -0.802528; 4.778826; 4.317000;,
+ -0.802529; 3.233784; 0.786420;,
+ -2.045198; 3.233785; 0.786420;,
+ -2.045197; 3.233785; 4.317000;,
+ -0.802529; 3.233785; 4.317000;,
+ -0.605994; 5.023182; 0.786420;,
+ -0.605994; 3.121706; 0.786420;,
+ -0.802529; 3.233784; 0.786420;,
+ -0.802529; 4.778825; 0.786420;,
+ -2.045197; 4.778826; 4.317000;,
+ -0.802528; 4.778826; 4.317000;,
+ -0.600140; 5.030460; 4.316999;,
+ -2.247585; 5.030461; 4.317000;,
+ -2.045197; 3.233785; 4.317000;,
+ -2.045197; 4.778826; 4.317000;,
+ -2.247585; 5.030461; 4.317000;,
+ -2.247586; 2.982151; 4.317000;,
+ -0.802529; 3.233785; 4.317000;,
+ -2.045197; 3.233785; 4.317000;,
+ -2.247586; 2.982151; 4.317000;,
+ -0.600141; 2.982150; 4.317000;,
+ -2.045198; 3.233785; 0.786420;,
+ -2.045197; 4.778826; 0.786420;,
+ -2.045197; 4.778826; 4.317000;,
+ -2.045197; 3.233785; 4.317000;,
+ 2.289855; 3.121706;-0.078749;,
+ 0.654117; 3.121706;-0.078749;,
+ 0.654117; 3.121706; 0.786420;,
+ 2.289855; 3.121706; 0.786420;,
+ 0.654118; 5.023182;-0.078749;,
+ 2.289856; 5.023181;-0.078749;,
+ 2.289856; 5.023181; 0.786420;,
+ 0.654118; 5.023182; 0.786420;,
+ 2.289856; 5.023181;-0.078749;,
+ 2.289855; 3.121706;-0.078749;,
+ 2.289855; 3.121706; 0.786420;,
+ 2.289856; 5.023181; 0.786420;,
+ 2.289855; 3.121706;-0.078749;,
+ 2.289856; 5.023181;-0.078749;,
+ 0.654118; 5.023182;-0.078749;,
+ 0.654117; 3.121706;-0.078749;,
+ 2.295710; 5.030459; 4.316999;,
+ 2.295710; 5.030459; 5.986964;,
+ 0.648265; 5.030460; 5.986964;,
+ 0.648265; 5.030460; 4.317000;,
+ 0.648265; 2.982150; 5.986965;,
+ 2.295710; 2.982149; 5.986964;,
+ 2.295709; 2.982149; 4.317000;,
+ 0.648264; 2.982150; 4.317000;,
+ 0.648265; 5.030460; 5.986964;,
+ 0.648265; 2.982150; 5.986965;,
+ 0.648264; 2.982150; 4.317000;,
+ 0.648265; 5.030460; 4.317000;,
+ 2.295710; 5.030459; 5.986964;,
+ 2.295710; 2.982149; 5.986964;,
+ 0.648265; 2.982150; 5.986965;,
+ 0.648265; 5.030460; 5.986964;,
+ 2.295710; 5.030459; 4.316999;,
+ 2.295709; 2.982149; 4.317000;,
+ 2.295710; 2.982149; 5.986964;,
+ 2.295710; 5.030459; 5.986964;,
+ 2.093321; 4.778825; 4.317000;,
+ 2.093321; 3.233784; 4.317000;,
+ 2.295709; 2.982149; 4.317000;,
+ 2.295710; 5.030459; 4.316999;,
+ 0.654118; 5.023182; 0.786420;,
+ 2.289856; 5.023181; 0.786420;,
+ 2.093321; 4.778824; 0.786420;,
+ 0.850653; 4.778825; 0.786420;,
+ 2.289855; 3.121706; 0.786420;,
+ 0.654117; 3.121706; 0.786420;,
+ 0.850652; 3.233784; 0.786420;,
+ 2.093320; 3.233783; 0.786420;,
+ 0.654117; 3.121706; 0.786420;,
+ 0.654118; 5.023182; 0.786420;,
+ 0.850653; 4.778825; 0.786420;,
+ 0.850652; 3.233784; 0.786420;,
+ 0.654117; 3.121706;-0.078749;,
+ 0.654118; 5.023182;-0.078749;,
+ 0.654118; 5.023182; 0.786420;,
+ 0.654117; 3.121706; 0.786420;,
+ 0.850653; 4.778825; 0.786420;,
+ 2.093321; 4.778824; 0.786420;,
+ 2.093321; 4.778825; 4.317000;,
+ 0.850653; 4.778825; 4.317000;,
+ 2.093321; 4.778824; 0.786420;,
+ 2.093320; 3.233783; 0.786420;,
+ 2.093321; 3.233784; 4.317000;,
+ 2.093321; 4.778825; 4.317000;,
+ 2.093320; 3.233783; 0.786420;,
+ 0.850652; 3.233784; 0.786420;,
+ 0.850652; 3.233784; 4.317000;,
+ 2.093321; 3.233784; 4.317000;,
+ 2.289856; 5.023181; 0.786420;,
+ 2.289855; 3.121706; 0.786420;,
+ 2.093320; 3.233783; 0.786420;,
+ 2.093321; 4.778824; 0.786420;,
+ 0.850653; 4.778825; 4.317000;,
+ 2.093321; 4.778825; 4.317000;,
+ 2.295710; 5.030459; 4.316999;,
+ 0.648265; 5.030460; 4.317000;,
+ 0.850652; 3.233784; 4.317000;,
+ 0.850653; 4.778825; 4.317000;,
+ 0.648265; 5.030460; 4.317000;,
+ 0.648264; 2.982150; 4.317000;,
+ 2.093321; 3.233784; 4.317000;,
+ 0.850652; 3.233784; 4.317000;,
+ 0.648264; 2.982150; 4.317000;,
+ 2.295709; 2.982149; 4.317000;,
+ 0.850652; 3.233784; 0.786420;,
+ 0.850653; 4.778825; 0.786420;,
+ 0.850653; 4.778825; 4.317000;,
+ 0.850652; 3.233784; 4.317000;,
+ -0.605996;-4.554652;-0.078749;,
+ -2.241735;-4.554652;-0.078749;,
+ -2.241735;-4.554652; 0.786420;,
+ -0.605996;-4.554652; 0.786420;,
+ -2.241734;-2.653176;-0.078749;,
+ -0.605996;-2.653177;-0.078749;,
+ -0.605996;-2.653177; 0.786420;,
+ -2.241734;-2.653176; 0.786420;,
+ -0.605996;-2.653177;-0.078749;,
+ -0.605996;-4.554652;-0.078749;,
+ -0.605996;-4.554652; 0.786420;,
+ -0.605996;-2.653177; 0.786420;,
+ -0.605996;-4.554652;-0.078749;,
+ -0.605996;-2.653177;-0.078749;,
+ -2.241734;-2.653176;-0.078749;,
+ -2.241735;-4.554652;-0.078749;,
+ -0.600143;-2.645899; 4.316999;,
+ -0.600142;-2.645899; 5.986964;,
+ -2.247587;-2.645898; 5.986964;,
+ -2.247587;-2.645898; 4.317000;,
+ -2.247587;-4.694208; 5.986965;,
+ -0.600143;-4.694209; 5.986964;,
+ -0.600143;-4.694209; 4.317000;,
+ -2.247588;-4.694208; 4.317000;,
+ -2.247587;-2.645898; 5.986964;,
+ -2.247587;-4.694208; 5.986965;,
+ -2.247588;-4.694208; 4.317000;,
+ -2.247587;-2.645898; 4.317000;,
+ -0.600142;-2.645899; 5.986964;,
+ -0.600143;-4.694209; 5.986964;,
+ -2.247587;-4.694208; 5.986965;,
+ -2.247587;-2.645898; 5.986964;,
+ -0.600143;-2.645899; 4.316999;,
+ -0.600143;-4.694209; 4.317000;,
+ -0.600143;-4.694209; 5.986964;,
+ -0.600142;-2.645899; 5.986964;,
+ -0.802531;-2.897533; 4.317000;,
+ -0.802531;-4.442574; 4.317000;,
+ -0.600143;-4.694209; 4.317000;,
+ -0.600143;-2.645899; 4.316999;,
+ -2.241734;-2.653176; 0.786420;,
+ -0.605996;-2.653177; 0.786420;,
+ -0.802531;-2.897534; 0.786420;,
+ -2.045199;-2.897533; 0.786420;,
+ -0.605996;-4.554652; 0.786420;,
+ -2.241735;-4.554652; 0.786420;,
+ -2.045200;-4.442574; 0.786420;,
+ -0.802532;-4.442575; 0.786420;,
+ -2.241735;-4.554652; 0.786420;,
+ -2.241734;-2.653176; 0.786420;,
+ -2.045199;-2.897533; 0.786420;,
+ -2.045200;-4.442574; 0.786420;,
+ -2.241735;-4.554652;-0.078749;,
+ -2.241734;-2.653176;-0.078749;,
+ -2.241734;-2.653176; 0.786420;,
+ -2.241735;-4.554652; 0.786420;,
+ -2.045199;-2.897533; 0.786420;,
+ -0.802531;-2.897534; 0.786420;,
+ -0.802531;-2.897533; 4.317000;,
+ -2.045199;-2.897533; 4.317000;,
+ -0.802531;-2.897534; 0.786420;,
+ -0.802532;-4.442575; 0.786420;,
+ -0.802531;-4.442574; 4.317000;,
+ -0.802531;-2.897533; 4.317000;,
+ -0.802532;-4.442575; 0.786420;,
+ -2.045200;-4.442574; 0.786420;,
+ -2.045200;-4.442574; 4.317000;,
+ -0.802531;-4.442574; 4.317000;,
+ -0.605996;-2.653177; 0.786420;,
+ -0.605996;-4.554652; 0.786420;,
+ -0.802532;-4.442575; 0.786420;,
+ -0.802531;-2.897534; 0.786420;,
+ -2.045199;-2.897533; 4.317000;,
+ -0.802531;-2.897533; 4.317000;,
+ -0.600143;-2.645899; 4.316999;,
+ -2.247587;-2.645898; 4.317000;,
+ -2.045200;-4.442574; 4.317000;,
+ -2.045199;-2.897533; 4.317000;,
+ -2.247587;-2.645898; 4.317000;,
+ -2.247588;-4.694208; 4.317000;,
+ -0.802531;-4.442574; 4.317000;,
+ -2.045200;-4.442574; 4.317000;,
+ -2.247588;-4.694208; 4.317000;,
+ -0.600143;-4.694209; 4.317000;,
+ -2.045200;-4.442574; 0.786420;,
+ -2.045199;-2.897533; 0.786420;,
+ -2.045199;-2.897533; 4.317000;,
+ -2.045200;-4.442574; 4.317000;,
+ 2.289853;-4.554653;-0.078749;,
+ 0.654114;-4.554653;-0.078749;,
+ 0.654114;-4.554653; 0.786420;,
+ 2.289853;-4.554653; 0.786420;,
+ 0.654115;-2.653177;-0.078749;,
+ 2.289853;-2.653177;-0.078749;,
+ 2.289853;-2.653177; 0.786420;,
+ 0.654115;-2.653177; 0.786420;,
+ 2.289853;-2.653177;-0.078749;,
+ 2.289853;-4.554653;-0.078749;,
+ 2.289853;-4.554653; 0.786420;,
+ 2.289853;-2.653177; 0.786420;,
+ 2.289853;-4.554653;-0.078749;,
+ 2.289853;-2.653177;-0.078749;,
+ 0.654115;-2.653177;-0.078749;,
+ 0.654114;-4.554653;-0.078749;,
+ 2.295707;-2.645900; 4.316999;,
+ 2.295707;-2.645900; 5.986964;,
+ 0.648262;-2.645899; 5.986964;,
+ 0.648262;-2.645899; 4.317000;,
+ 0.648262;-4.694209; 5.986965;,
+ 2.295707;-4.694210; 5.986964;,
+ 2.295706;-4.694210; 4.317000;,
+ 0.648261;-4.694209; 4.317000;,
+ 0.648262;-2.645899; 5.986964;,
+ 0.648262;-4.694209; 5.986965;,
+ 0.648261;-4.694209; 4.317000;,
+ 0.648262;-2.645899; 4.317000;,
+ 2.295707;-2.645900; 5.986964;,
+ 2.295707;-4.694210; 5.986964;,
+ 0.648262;-4.694209; 5.986965;,
+ 0.648262;-2.645899; 5.986964;,
+ 2.295707;-2.645900; 4.316999;,
+ 2.295706;-4.694210; 4.317000;,
+ 2.295707;-4.694210; 5.986964;,
+ 2.295707;-2.645900; 5.986964;,
+ 2.093318;-2.897534; 4.317000;,
+ 2.093318;-4.442575; 4.317000;,
+ 2.295706;-4.694210; 4.317000;,
+ 2.295707;-2.645900; 4.316999;,
+ 0.654115;-2.653177; 0.786420;,
+ 2.289853;-2.653177; 0.786420;,
+ 2.093318;-2.897534; 0.786420;,
+ 0.850650;-2.897534; 0.786420;,
+ 2.289853;-4.554653; 0.786420;,
+ 0.654114;-4.554653; 0.786420;,
+ 0.850649;-4.442575; 0.786420;,
+ 2.093318;-4.442575; 0.786420;,
+ 0.654114;-4.554653; 0.786420;,
+ 0.654115;-2.653177; 0.786420;,
+ 0.850650;-2.897534; 0.786420;,
+ 0.850649;-4.442575; 0.786420;,
+ 0.654114;-4.554653;-0.078749;,
+ 0.654115;-2.653177;-0.078749;,
+ 0.654115;-2.653177; 0.786420;,
+ 0.654114;-4.554653; 0.786420;,
+ 0.850650;-2.897534; 0.786420;,
+ 2.093318;-2.897534; 0.786420;,
+ 2.093318;-2.897534; 4.317000;,
+ 0.850650;-2.897534; 4.317000;,
+ 2.093318;-2.897534; 0.786420;,
+ 2.093318;-4.442575; 0.786420;,
+ 2.093318;-4.442575; 4.317000;,
+ 2.093318;-2.897534; 4.317000;,
+ 2.093318;-4.442575; 0.786420;,
+ 0.850649;-4.442575; 0.786420;,
+ 0.850650;-4.442575; 4.317000;,
+ 2.093318;-4.442575; 4.317000;,
+ 2.289853;-2.653177; 0.786420;,
+ 2.289853;-4.554653; 0.786420;,
+ 2.093318;-4.442575; 0.786420;,
+ 2.093318;-2.897534; 0.786420;,
+ 0.850650;-2.897534; 4.317000;,
+ 2.093318;-2.897534; 4.317000;,
+ 2.295707;-2.645900; 4.316999;,
+ 0.648262;-2.645899; 4.317000;,
+ 0.850650;-4.442575; 4.317000;,
+ 0.850650;-2.897534; 4.317000;,
+ 0.648262;-2.645899; 4.317000;,
+ 0.648261;-4.694209; 4.317000;,
+ 2.093318;-4.442575; 4.317000;,
+ 0.850650;-4.442575; 4.317000;,
+ 0.648261;-4.694209; 4.317000;,
+ 2.295706;-4.694210; 4.317000;,
+ 0.850649;-4.442575; 0.786420;,
+ 0.850650;-2.897534; 0.786420;,
+ 0.850650;-2.897534; 4.317000;,
+ 0.850650;-4.442575; 4.317000;,
+ 2.755566;-5.423599; 5.058936;,
+ 2.755570; 5.376402; 5.058936;,
+ -2.644430; 5.376405; 5.058936;,
+ -2.644433;-5.423595; 5.058936;,
+ -2.644428; 5.376408;10.458936;,
+ 2.755571; 5.376401;10.458936;,
+ 2.755567;-5.423597;10.458936;,
+ -2.644435;-5.423593;10.458936;,
+ -2.644430; 5.376405; 5.058936;,
+ -2.644428; 5.376408;10.458936;,
+ -2.644435;-5.423593;10.458936;,
+ -2.644433;-5.423595; 5.058936;,
+ 2.755570; 5.376402; 5.058936;,
+ 2.755571; 5.376401;10.458936;,
+ -2.644428; 5.376408;10.458936;,
+ -2.644430; 5.376405; 5.058936;,
+ 2.755566;-5.423599; 5.058936;,
+ 2.755567;-5.423597;10.458936;,
+ 2.755571; 5.376401;10.458936;,
+ 2.755570; 5.376402; 5.058936;,
+ 0.457788;-5.423596; 9.828822;,
+ -0.346656;-5.423596; 9.828822;,
+ -2.644435;-5.423593;10.458936;,
+ 2.755567;-5.423597;10.458936;,
+ -0.346656;-6.180264; 9.828822;,
+ -0.346656;-6.180264; 7.673504;,
+ -0.346656;-5.423596; 7.673504;,
+ -0.346656;-5.423596; 9.828822;,
+ 0.457788;-6.180264; 9.828822;,
+ 0.457788;-6.180264; 7.673504;,
+ -0.346656;-6.180264; 7.673504;,
+ -0.346656;-6.180264; 9.828822;,
+ 0.457788;-5.423596; 7.673504;,
+ 0.457788;-5.423596; 9.828822;,
+ 2.755567;-5.423597;10.458936;,
+ 2.755566;-5.423599; 5.058936;,
+ -0.346656;-5.423596; 9.828822;,
+ -0.346656;-5.423596; 7.673504;,
+ -2.644433;-5.423595; 5.058936;,
+ -2.644435;-5.423593;10.458936;,
+ -0.346656;-5.423596; 7.673504;,
+ 0.457788;-5.423596; 7.673504;,
+ 2.755566;-5.423599; 5.058936;,
+ -2.644433;-5.423595; 5.058936;,
+ -0.346656;-6.180264; 7.673504;,
+ 0.457788;-6.180264; 7.673504;,
+ 0.457788;-5.423596; 7.673504;,
+ -0.346656;-5.423596; 7.673504;,
+ 0.457788;-6.180264; 7.673504;,
+ 0.457788;-6.180264; 9.828822;,
+ 0.457788;-5.423596; 9.828822;,
+ 0.457788;-5.423596; 7.673504;,
+ 0.457788;-6.180264; 9.828822;,
+ -0.346656;-6.180264; 9.828822;,
+ -0.346656;-5.423596; 9.828822;,
+ 0.457788;-5.423596; 9.828822;,
+ -0.600140; 2.982150; 5.986964;,
+ -2.247585; 2.982151; 5.986965;,
+ -2.247585; 2.982151; 5.986965;,
+ -0.600140; 2.982150; 5.986964;;
+ 125;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;,
+ 4;332;333;334;335;,
+ 4;336;337;338;339;,
+ 4;340;341;342;343;,
+ 4;344;345;346;347;,
+ 4;348;349;350;351;,
+ 4;352;353;354;355;,
+ 4;356;357;358;359;,
+ 4;360;361;362;363;,
+ 4;364;365;366;367;,
+ 4;368;369;370;371;,
+ 4;372;373;374;375;,
+ 4;376;377;378;379;,
+ 4;380;381;382;383;,
+ 4;384;385;386;387;,
+ 4;388;389;390;391;,
+ 4;392;393;394;395;,
+ 4;396;397;398;399;,
+ 4;400;401;402;403;,
+ 4;404;405;406;407;,
+ 4;408;409;410;411;,
+ 4;412;413;414;415;,
+ 4;416;417;418;419;,
+ 4;420;421;422;423;,
+ 4;424;425;426;427;,
+ 4;428;429;430;431;,
+ 4;432;433;434;435;,
+ 4;436;437;438;439;,
+ 4;440;441;442;443;,
+ 4;444;445;446;447;,
+ 4;448;449;450;451;,
+ 4;452;453;454;455;,
+ 4;456;457;458;459;,
+ 4;460;461;462;463;,
+ 4;464;465;466;467;,
+ 4;468;469;470;471;,
+ 4;472;473;474;475;,
+ 4;476;477;478;479;,
+ 4;480;481;482;483;,
+ 4;484;485;486;487;,
+ 4;488;489;490;491;,
+ 4;492;493;494;495;,
+ 4;496;497;498;499;;
+ MeshNormals { //Cube_000 Normals
+ 500;
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ 0.000001; 1.000000; 0.000000;,
+ 0.000001; 1.000000; 0.000000;,
+ 0.000001; 1.000000; 0.000000;,
+ 0.000001; 1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ 1.000000;-0.000001;-0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ -0.000001;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000;-0.000001;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -1.000000; 0.000001; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000001;-1.000000; 0.000002;,
+ -0.000001;-1.000000; 0.000002;,
+ -0.000001;-1.000000; 0.000002;,
+ -0.000001;-1.000000; 0.000002;,
+ -1.000000; 0.000001;-0.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ -1.000000; 0.000001;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ -0.000001;-1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 1.000000;-0.000001; 0.000000;,
+ 1.000000;-0.000001; 0.000000;,
+ 1.000000;-0.000001; 0.000000;,
+ 1.000000;-0.000001; 0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000; 0.000000;;
+ 125;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;,
+ 4;332;333;334;335;,
+ 4;336;337;338;339;,
+ 4;340;341;342;343;,
+ 4;344;345;346;347;,
+ 4;348;349;350;351;,
+ 4;352;353;354;355;,
+ 4;356;357;358;359;,
+ 4;360;361;362;363;,
+ 4;364;365;366;367;,
+ 4;368;369;370;371;,
+ 4;372;373;374;375;,
+ 4;376;377;378;379;,
+ 4;380;381;382;383;,
+ 4;384;385;386;387;,
+ 4;388;389;390;391;,
+ 4;392;393;394;395;,
+ 4;396;397;398;399;,
+ 4;400;401;402;403;,
+ 4;404;405;406;407;,
+ 4;408;409;410;411;,
+ 4;412;413;414;415;,
+ 4;416;417;418;419;,
+ 4;420;421;422;423;,
+ 4;424;425;426;427;,
+ 4;428;429;430;431;,
+ 4;432;433;434;435;,
+ 4;436;437;438;439;,
+ 4;440;441;442;443;,
+ 4;444;445;446;447;,
+ 4;448;449;450;451;,
+ 4;452;453;454;455;,
+ 4;456;457;458;459;,
+ 4;460;461;462;463;,
+ 4;464;465;466;467;,
+ 4;468;469;470;471;,
+ 4;472;473;474;475;,
+ 4;476;477;478;479;,
+ 4;480;481;482;483;,
+ 4;484;485;486;487;,
+ 4;488;489;490;491;,
+ 4;492;493;494;495;,
+ 4;496;497;498;499;;
+ } //End of Cube_000 Normals
+ MeshMaterialList { //Cube_000 Material List
+ 1;
+ 125;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material {
+ 0.800000; 0.800000; 0.800000; 1.000000;;
+ 96.078431;
+ 0.000000; 0.000000; 0.000000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_000 Material List
+ MeshTextureCoords { //Cube_000 UV Coordinates
+ 500;
+ 0.775469; 0.249479;,
+ 0.775469; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.249479;,
+ 0.770791; 0.254677;,
+ 0.770791; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.254677;,
+ 0.776860; 0.247933;,
+ 0.776860; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.247933;,
+ 1.000000; 0.248886;,
+ 0.776003; 0.248886;,
+ 0.776003; 0.000000;,
+ 1.000000; 0.000000;,
+ 0.775469; 0.249479;,
+ 0.775469; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.249479;,
+ 0.508558; 0.128375;,
+ 0.416040; 0.128375;,
+ 0.399617; 0.101116;,
+ 0.521949; 0.101116;,
+ 0.774010; 0.541452;,
+ 0.428653; 0.541418;,
+ 0.409241; 0.502401;,
+ 0.788614; 0.502401;,
+ 0.508558; 0.323334;,
+ 0.508558; 0.128375;,
+ 0.521949; 0.101116;,
+ 0.521949; 0.350594;,
+ 0.170686; 0.040386;,
+ 0.170686; 0.289871;,
+ 0.128073; 0.289868;,
+ 0.128073; 0.040389;,
+ 0.535799; 0.248602;,
+ 0.665009; 0.248602;,
+ 0.660053; 0.275862;,
+ 0.537722; 0.275862;,
+ 0.717535; 0.651074;,
+ 0.480501; 0.651074;,
+ 0.403272; 0.516724;,
+ 0.800974; 0.515687;,
+ 0.819048; 0.797658;,
+ 0.818677; 0.592455;,
+ 0.785562; 0.595942;,
+ 0.785562; 0.806196;,
+ 0.445849; 0.717935;,
+ 0.757626; 0.715741;,
+ 0.759700; 0.650149;,
+ 0.451988; 0.650149;,
+ 0.385327; 0.564976;,
+ 0.385327; 0.831711;,
+ 0.411585; 0.834122;,
+ 0.411585; 0.566052;,
+ 0.641769; 0.799233;,
+ 0.559004; 0.799233;,
+ 0.531170; 0.783727;,
+ 0.669603; 0.783727;,
+ 0.480501; 0.651074;,
+ 0.480501; 0.866680;,
+ 0.402917; 0.885928;,
+ 0.403272; 0.516724;,
+ 0.717535; 0.866680;,
+ 0.717535; 0.651074;,
+ 0.800974; 0.515687;,
+ 0.800796; 0.879372;,
+ 0.445862; 0.690313;,
+ 0.757393; 0.690313;,
+ 0.757626; 0.715741;,
+ 0.445849; 0.717935;,
+ 0.530532; 0.825974;,
+ 0.530532; 0.725803;,
+ 0.672472; 0.725803;,
+ 0.672472; 0.825974;,
+ 0.546001; 0.748997;,
+ 0.546001; 0.824503;,
+ 0.529045; 0.825838;,
+ 0.529045; 0.747662;,
+ 0.654435; 0.833521;,
+ 0.654435; 0.728251;,
+ 0.669955; 0.728605;,
+ 0.669954; 0.835122;,
+ 0.531146; 0.813612;,
+ 0.671345; 0.813612;,
+ 0.670462; 0.829118;,
+ 0.532029; 0.829118;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.757152; 0.213729;,
+ 0.757313; 0.027004;,
+ 0.808940; 0.027564;,
+ 0.808778; 0.214289;,
+ 0.873128; 0.028261;,
+ 0.924754; 0.028821;,
+ 0.924592; 0.215546;,
+ 0.872966; 0.214986;,
+ 0.808940; 0.027564;,
+ 0.873128; 0.028261;,
+ 0.872966; 0.214986;,
+ 0.808778; 0.214289;,
+ 0.760353; 0.210258;,
+ 0.760551; 0.026773;,
+ 0.812177; 0.027222;,
+ 0.811979; 0.210707;,
+ 0.757152; 0.213729;,
+ 0.692963; 0.213032;,
+ 0.693125; 0.026307;,
+ 0.757313; 0.027004;,
+ 0.757120; 0.249836;,
+ 0.692932; 0.249139;,
+ 0.692963; 0.213032;,
+ 0.757152; 0.213729;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.388392;,
+ 0.146405; 0.389084;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.389140;,
+ 0.170183; 0.389999;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.389943;,
+ 0.148204; 0.390635;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.808747; 0.250397;,
+ 0.757120; 0.249836;,
+ 0.757152; 0.213729;,
+ 0.808778; 0.214289;,
+ 0.872935; 0.251093;,
+ 0.808747; 0.250397;,
+ 0.808778; 0.214289;,
+ 0.872966; 0.214986;,
+ 0.924561; 0.251654;,
+ 0.872935; 0.251093;,
+ 0.872966; 0.214986;,
+ 0.924592; 0.215546;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.389084;,
+ 0.170310; 0.389943;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.757152; 0.213729;,
+ 0.757313; 0.027004;,
+ 0.808940; 0.027564;,
+ 0.808778; 0.214289;,
+ 0.873128; 0.028261;,
+ 0.924754; 0.028821;,
+ 0.924592; 0.215546;,
+ 0.872966; 0.214986;,
+ 0.808940; 0.027564;,
+ 0.873128; 0.028261;,
+ 0.872966; 0.214986;,
+ 0.808778; 0.214289;,
+ 0.760353; 0.210258;,
+ 0.760551; 0.026773;,
+ 0.812177; 0.027222;,
+ 0.811979; 0.210707;,
+ 0.757152; 0.213729;,
+ 0.692963; 0.213032;,
+ 0.693125; 0.026307;,
+ 0.757313; 0.027004;,
+ 0.757120; 0.249836;,
+ 0.692932; 0.249139;,
+ 0.692963; 0.213032;,
+ 0.757152; 0.213729;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.388392;,
+ 0.146405; 0.389084;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.389140;,
+ 0.170183; 0.389999;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.389943;,
+ 0.148204; 0.390635;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.808747; 0.250397;,
+ 0.757120; 0.249836;,
+ 0.757152; 0.213729;,
+ 0.808778; 0.214289;,
+ 0.872935; 0.251093;,
+ 0.808747; 0.250397;,
+ 0.808778; 0.214289;,
+ 0.872966; 0.214986;,
+ 0.924561; 0.251654;,
+ 0.872935; 0.251093;,
+ 0.872966; 0.214986;,
+ 0.924592; 0.215546;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.389084;,
+ 0.170310; 0.389943;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.757152; 0.213729;,
+ 0.757313; 0.027004;,
+ 0.808940; 0.027564;,
+ 0.808778; 0.214289;,
+ 0.873128; 0.028261;,
+ 0.924754; 0.028821;,
+ 0.924592; 0.215546;,
+ 0.872966; 0.214986;,
+ 0.808940; 0.027564;,
+ 0.873128; 0.028261;,
+ 0.872966; 0.214986;,
+ 0.808778; 0.214289;,
+ 0.760353; 0.210258;,
+ 0.760551; 0.026773;,
+ 0.812177; 0.027222;,
+ 0.811979; 0.210707;,
+ 0.757152; 0.213729;,
+ 0.692963; 0.213032;,
+ 0.693125; 0.026307;,
+ 0.757313; 0.027004;,
+ 0.757120; 0.249836;,
+ 0.692932; 0.249139;,
+ 0.692963; 0.213032;,
+ 0.757152; 0.213729;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.388392;,
+ 0.146405; 0.389084;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.389140;,
+ 0.170183; 0.389999;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.389943;,
+ 0.148204; 0.390635;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.808747; 0.250397;,
+ 0.757120; 0.249836;,
+ 0.757152; 0.213729;,
+ 0.808778; 0.214289;,
+ 0.872935; 0.251093;,
+ 0.808747; 0.250397;,
+ 0.808778; 0.214289;,
+ 0.872966; 0.214986;,
+ 0.924561; 0.251654;,
+ 0.872935; 0.251093;,
+ 0.872966; 0.214986;,
+ 0.924592; 0.215546;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.389084;,
+ 0.170310; 0.389943;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.757152; 0.213729;,
+ 0.757313; 0.027004;,
+ 0.808940; 0.027564;,
+ 0.808778; 0.214289;,
+ 0.873128; 0.028261;,
+ 0.924754; 0.028821;,
+ 0.924592; 0.215546;,
+ 0.872966; 0.214986;,
+ 0.808940; 0.027564;,
+ 0.873128; 0.028261;,
+ 0.872966; 0.214986;,
+ 0.808778; 0.214289;,
+ 0.760353; 0.210258;,
+ 0.760551; 0.026773;,
+ 0.812177; 0.027222;,
+ 0.811979; 0.210707;,
+ 0.757152; 0.213729;,
+ 0.692963; 0.213032;,
+ 0.693125; 0.026307;,
+ 0.757313; 0.027004;,
+ 0.757120; 0.249836;,
+ 0.692932; 0.249139;,
+ 0.692963; 0.213032;,
+ 0.757152; 0.213729;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.388392;,
+ 0.146405; 0.389084;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.389140;,
+ 0.170183; 0.389999;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.389943;,
+ 0.148204; 0.390635;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.808747; 0.250397;,
+ 0.757120; 0.249836;,
+ 0.757152; 0.213729;,
+ 0.808778; 0.214289;,
+ 0.872935; 0.251093;,
+ 0.808747; 0.250397;,
+ 0.808778; 0.214289;,
+ 0.872966; 0.214986;,
+ 0.924561; 0.251654;,
+ 0.872935; 0.251093;,
+ 0.872966; 0.214986;,
+ 0.924592; 0.215546;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.389084;,
+ 0.170310; 0.389943;,
+ 0.162385; 0.009221;,
+ 0.924369; 0.009221;,
+ 0.924369; 0.340664;,
+ 0.162385; 0.340664;,
+ 0.162385; 0.375513;,
+ 0.162385; 0.044070;,
+ 0.920960; 0.044069;,
+ 0.920960; 0.375513;,
+ 0.162385; 0.341696;,
+ 0.162385; 0.040128;,
+ 0.811969; 0.040128;,
+ 0.811969; 0.341696;,
+ 0.420022; 0.481351;,
+ 0.420022; 0.016910;,
+ 0.838019; 0.016910;,
+ 0.838019; 0.481351;,
+ 0.893638; 0.009221;,
+ 0.893639; 0.340665;,
+ 0.162386; 0.340666;,
+ 0.162385; 0.009222;,
+ 0.784518; 0.096296;,
+ 0.836709; 0.096296;,
+ 0.985785; 0.049700;,
+ 0.635442; 0.049700;,
+ 0.846809; 0.124222;,
+ 0.847350; 0.300681;,
+ 0.785401; 0.300871;,
+ 0.784859; 0.124412;,
+ 0.655966; 0.300669;,
+ 0.656507; 0.124210;,
+ 0.722368; 0.124412;,
+ 0.721827; 0.300871;,
+ 0.784518; 0.255678;,
+ 0.784518; 0.096296;,
+ 0.635442; 0.049700;,
+ 0.635442; 0.449020;,
+ 0.836709; 0.096296;,
+ 0.836709; 0.255678;,
+ 0.985785; 0.449020;,
+ 0.985785; 0.049700;,
+ 0.836709; 0.255678;,
+ 0.784518; 0.255678;,
+ 0.635442; 0.449020;,
+ 0.985785; 0.449020;,
+ 0.784859; 0.124032;,
+ 0.785061; 0.058171;,
+ 0.847011; 0.058361;,
+ 0.846809; 0.124222;,
+ 0.722368; 0.300681;,
+ 0.722910; 0.124222;,
+ 0.784859; 0.124412;,
+ 0.784318; 0.300871;,
+ 0.784657; 0.058171;,
+ 0.784859; 0.124032;,
+ 0.722910; 0.124222;,
+ 0.722708; 0.058361;,
+ 0.560714; 0.056620;,
+ 0.713255; 0.056620;,
+ 0.713255; 0.056620;,
+ 0.560714; 0.056620;;
+ } //End of Cube_000 UV Coordinates
+ XSkinMeshHeader {
+ 2;
+ 6;
+ 6;
+ }
+ SkinWeights {
+ "Armature_RR_leg";
+ 88;
+ 352,
+ 353,
+ 354,
+ 355,
+ 356,
+ 357,
+ 358,
+ 359,
+ 360,
+ 361,
+ 362,
+ 363,
+ 364,
+ 365,
+ 366,
+ 367,
+ 368,
+ 369,
+ 370,
+ 371,
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395,
+ 396,
+ 397,
+ 398,
+ 399,
+ 400,
+ 401,
+ 402,
+ 403,
+ 404,
+ 405,
+ 406,
+ 407,
+ 408,
+ 409,
+ 410,
+ 411,
+ 412,
+ 413,
+ 414,
+ 415,
+ 416,
+ 417,
+ 418,
+ 419,
+ 420,
+ 421,
+ 422,
+ 423,
+ 424,
+ 425,
+ 426,
+ 427,
+ 428,
+ 429,
+ 430,
+ 431,
+ 432,
+ 433,
+ 434,
+ 435,
+ 436,
+ 437,
+ 438,
+ 439;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ 1.469550, 5.848685,-3.642604, 1.000000;;
+ } //End of Armature_RR_leg Skin Weights
+ SkinWeights {
+ "Armature_Bone_001";
+ 88;
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ -1.429771, 5.848686, 4.064455, 1.000000;;
+ } //End of Armature_Bone_001 Skin Weights
+ SkinWeights {
+ "Armature_Head";
+ 94;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 444,
+ 445,
+ 449,
+ 453,
+ 454,
+ 458;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000003,
+ 0.000000,
+ 0.000003,
+ 0.000000,
+ 0.000003;
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ -0.030900,-3.778762,-10.040427, 1.000000;;
+ } //End of Armature_Head Skin Weights
+ SkinWeights {
+ "Armature_Root";
+ 59;
+ 197,
+ 205,
+ 210,
+ 440,
+ 441,
+ 442,
+ 443,
+ 444,
+ 445,
+ 446,
+ 447,
+ 448,
+ 449,
+ 450,
+ 451,
+ 452,
+ 453,
+ 454,
+ 455,
+ 456,
+ 457,
+ 458,
+ 459,
+ 460,
+ 461,
+ 462,
+ 463,
+ 464,
+ 465,
+ 466,
+ 467,
+ 468,
+ 469,
+ 470,
+ 471,
+ 472,
+ 473,
+ 474,
+ 475,
+ 476,
+ 477,
+ 478,
+ 479,
+ 480,
+ 481,
+ 482,
+ 483,
+ 484,
+ 485,
+ 486,
+ 487,
+ 488,
+ 489,
+ 490,
+ 491,
+ 492,
+ 493,
+ 494,
+ 495;
+ 0.502081,
+ 0.502081,
+ 0.502081,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999997,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999997,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999997,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000, 0.000000, 0.000000,
+ 0.000000,-0.000000, 1.000000, 0.000000,
+ -0.000000, 1.000000, 0.000000, 0.000000,
+ 0.030899,-5.987902, 0.009275, 1.000000;;
+ } //End of Armature_Root Skin Weights
+ SkinWeights {
+ "Armature_Bone_002";
+ 88;
+ 264,
+ 265,
+ 266,
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 280,
+ 281,
+ 282,
+ 283,
+ 284,
+ 285,
+ 286,
+ 287,
+ 288,
+ 289,
+ 290,
+ 291,
+ 292,
+ 293,
+ 294,
+ 295,
+ 296,
+ 297,
+ 298,
+ 299,
+ 300,
+ 301,
+ 302,
+ 303,
+ 304,
+ 305,
+ 306,
+ 307,
+ 308,
+ 309,
+ 310,
+ 311,
+ 312,
+ 313,
+ 314,
+ 315,
+ 316,
+ 317,
+ 318,
+ 319,
+ 320,
+ 321,
+ 322,
+ 323,
+ 324,
+ 325,
+ 326,
+ 327,
+ 328,
+ 329,
+ 330,
+ 331,
+ 332,
+ 333,
+ 334,
+ 335,
+ 336,
+ 337,
+ 338,
+ 339,
+ 340,
+ 341,
+ 342,
+ 343,
+ 344,
+ 345,
+ 346,
+ 347,
+ 348,
+ 349,
+ 350,
+ 351;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.993587,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.993587,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.993587,
+ 1.000000,
+ 1.000000,
+ 0.993587,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ -1.429772, 5.848685,-3.642603, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ SkinWeights {
+ "Armature_Bone_003";
+ 107;
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 263,
+ 268,
+ 271,
+ 278,
+ 283,
+ 291,
+ 304,
+ 307,
+ 311,
+ 313,
+ 314,
+ 317,
+ 318,
+ 320,
+ 325,
+ 328,
+ 334,
+ 339,
+ 342,
+ 349;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.497919,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.497919,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.497919,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.006413,
+ 0.006413,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.006413,
+ 0.006413,
+ 0.000000;
+ -1.000000, 0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ 1.469550, 5.848685, 4.064454, 1.000000;;
+ } //End of Armature_Bone_003 Skin Weights
+ } //End of Cube_000 Mesh
+ } //End of sheep
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; 0.020581, 0.043608, 0.162447;;,
+ 1;3; 0.020581, 0.043608, 0.162447;;,
+ 2;3; 0.020581, 0.043608, 0.162447;;,
+ 3;3; 0.020581, 0.043608, 0.162447;;,
+ 4;3; 0.020581, 0.043608, 0.162447;;,
+ 5;3; 0.020581, 0.043608, 0.162447;;,
+ 6;3; 0.020581, 0.043608, 0.162447;;,
+ 7;3; 0.020581, 0.043608, 0.162447;;,
+ 8;3; 0.020581, 0.043608, 0.162447;;,
+ 9;3; 0.020581, 0.043608, 0.162447;;,
+ 10;3; 0.020581, 0.043608, 0.162447;;,
+ 11;3; 0.020581, 0.043608, 0.162447;;,
+ 12;3; 0.020581, 0.043608, 0.162447;;,
+ 13;3; 0.020581, 0.043608, 0.162447;;,
+ 14;3; 0.020581, 0.043608, 0.162447;;,
+ 15;3; 0.020581, 0.043608, 0.162447;;,
+ 16;3; 0.020581, 0.043608, 0.162447;;,
+ 17;3; 0.020581, 0.043608, 0.162447;;,
+ 18;3; 0.020581, 0.043608, 0.162447;;,
+ 19;3; 0.020581, 0.043608, 0.162447;;,
+ 20;3; 0.020581, 0.043608, 0.162447;;,
+ 21;3; 0.020581, 0.043608, 0.162447;;,
+ 22;3; 0.020581, 0.043608, 0.162447;;,
+ 23;3; 0.020581, 0.043608, 0.162447;;,
+ 24;3; 0.020581, 0.043608, 0.162447;;,
+ 25;3; 0.020581, 0.043608, 0.162447;;,
+ 26;3; 0.020581, 0.043608, 0.162447;;,
+ 27;3; 0.020581, 0.043608, 0.162447;;,
+ 28;3; 0.020581, 0.043608, 0.162447;;,
+ 29;3; 0.020581, 0.043608, 0.162447;;,
+ 30;3; 0.020581, 0.043608, 0.162447;;,
+ 31;3; 0.020581, 0.043608, 0.162447;;,
+ 32;3; 0.020581, 0.043608, 0.162447;;,
+ 33;3; 0.020581, 0.043608, 0.162447;;,
+ 34;3; 0.020581, 0.043608, 0.162447;;,
+ 35;3; 0.020581, 0.043608, 0.162447;;,
+ 36;3; 0.020581, 0.043608, 0.162447;;,
+ 37;3; 0.020581, 0.043608, 0.162447;;,
+ 38;3; 0.020581, 0.043608, 0.162447;;,
+ 39;3; 0.020581, 0.043608, 0.162447;;,
+ 40;3; 0.020581, 0.043608, 0.162447;;,
+ 41;3; 0.020581, 0.043608, 0.162447;;,
+ 42;3; 0.020581, 0.043608, 0.162447;;,
+ 43;3; 0.020581, 0.043608, 0.162447;;,
+ 44;3; 0.020581, 0.043608, 0.162447;;,
+ 45;3; 0.020581, 0.043608, 0.162447;;,
+ 46;3; 0.020581, 0.043608, 0.162447;;,
+ 47;3; 0.020581, 0.043608, 0.162447;;,
+ 48;3; 0.020581, 0.043608, 0.162447;;,
+ 49;3; 0.020581, 0.043608, 0.162447;;,
+ 50;3; 0.020581, 0.043608, 0.162447;;,
+ 51;3; 0.020581, 0.043608, 0.162447;;,
+ 52;3; 0.020581, 0.043608, 0.162447;;,
+ 53;3; 0.020581, 0.043608, 0.162447;;,
+ 54;3; 0.020581, 0.043608, 0.162447;;,
+ 55;3; 0.020581, 0.043608, 0.162447;;,
+ 56;3; 0.020581, 0.043608, 0.162447;;,
+ 57;3; 0.020581, 0.043608, 0.162447;;,
+ 58;3; 0.020581, 0.043608, 0.162447;;,
+ 59;3; 0.020581, 0.043608, 0.162447;;,
+ 60;3; 0.020581, 0.043608, 0.162447;;,
+ 61;3; 0.020581, 0.043608, 0.162447;;,
+ 62;3; 0.020581, 0.043608, 0.162447;;,
+ 63;3; 0.020581, 0.043608, 0.162447;;,
+ 64;3; 0.020581, 0.043608, 0.162447;;,
+ 65;3; 0.020581, 0.043608, 0.162447;;,
+ 66;3; 0.020581, 0.043608, 0.162447;;,
+ 67;3; 0.020581, 0.043608, 0.162447;;,
+ 68;3; 0.020581, 0.043608, 0.162447;;,
+ 69;3; 0.020581, 0.043608, 0.162447;;,
+ 70;3; 0.020581, 0.043608, 0.162447;;,
+ 71;3; 0.020581, 0.043608, 0.162447;;,
+ 72;3; 0.020581, 0.043608, 0.162447;;,
+ 73;3; 0.020581, 0.043608, 0.162447;;,
+ 74;3; 0.020581, 0.043608, 0.162447;;,
+ 75;3; 0.020581, 0.043608, 0.162447;;,
+ 76;3; 0.020581, 0.043608, 0.162447;;,
+ 77;3; 0.020581, 0.043608, 0.162447;;,
+ 78;3; 0.020581, 0.043608, 0.162447;;,
+ 79;3; 0.020581, 0.043608, 0.162447;;,
+ 80;3; 0.020581, 0.043608, 0.162447;;,
+ 81;3; 0.020581, 0.043608, 0.162447;;,
+ 82;3; 0.020581, 0.043608, 0.162447;;,
+ 83;3; 0.020581, 0.043608, 0.162447;;,
+ 84;3; 0.020581, 0.043608, 0.162447;;,
+ 85;3; 0.020581, 0.043608, 0.162447;;,
+ 86;3; 0.020581, 0.043608, 0.162447;;,
+ 87;3; 0.020581, 0.043608, 0.162447;;,
+ 88;3; 0.020581, 0.043608, 0.162447;;,
+ 89;3; 0.020581, 0.043608, 0.162447;;,
+ 90;3; 0.020581, 0.043608, 0.162447;;,
+ 91;3; 0.020581, 0.043608, 0.162447;;,
+ 92;3; 0.020581, 0.043608, 0.162447;;,
+ 93;3; 0.020581, 0.043608, 0.162447;;,
+ 94;3; 0.020581, 0.043608, 0.162447;;,
+ 95;3; 0.020581, 0.043608, 0.162447;;,
+ 96;3; 0.020581, 0.043608, 0.162447;;,
+ 97;3; 0.020581, 0.043608, 0.162447;;,
+ 98;3; 0.020581, 0.043608, 0.162447;;,
+ 99;3; 0.020581, 0.043608, 0.162447;;,
+ 100;3; 0.020581, 0.043608, 0.162447;;,
+ 101;3; 0.020581, 0.043608, 0.162447;;,
+ 102;3; 0.020581, 0.043608, 0.162447;;,
+ 103;3; 0.020581, 0.043608, 0.162447;;,
+ 104;3; 0.020581, 0.043608, 0.162447;;,
+ 105;3; 0.020581, 0.043608, 0.162447;;,
+ 106;3; 0.020581, 0.043608, 0.162447;;,
+ 107;3; 0.020581, 0.043608, 0.162447;;,
+ 108;3; 0.020581, 0.043608, 0.162447;;,
+ 109;3; 0.020581, 0.043608, 0.162447;;,
+ 110;3; 0.020581, 0.043608, 0.162447;;,
+ 111;3; 0.020581, 0.043608, 0.162447;;,
+ 112;3; 0.020581, 0.043608, 0.162447;;,
+ 113;3; 0.020581, 0.043608, 0.162447;;,
+ 114;3; 0.020581, 0.043608, 0.162447;;,
+ 115;3; 0.020581, 0.043608, 0.162447;;,
+ 116;3; 0.020581, 0.043608, 0.162447;;,
+ 117;3; 0.020581, 0.043608, 0.162447;;,
+ 118;3; 0.020581, 0.043608, 0.162447;;,
+ 119;3; 0.020581, 0.043608, 0.162447;;,
+ 120;3; 0.020581, 0.043608, 0.162447;;,
+ 121;3; 0.020581, 0.043608, 0.162447;;,
+ 122;3; 0.020581, 0.043608, 0.162447;;,
+ 123;3; 0.020581, 0.043608, 0.162447;;,
+ 124;3; 0.020581, 0.043608, 0.162447;;,
+ 125;3; 0.020581, 0.043608, 0.162447;;,
+ 126;3; 0.020581, 0.043608, 0.162447;;,
+ 127;3; 0.020581, 0.043608, 0.162447;;,
+ 128;3; 0.020581, 0.043608, 0.162447;;,
+ 129;3; 0.020581, 0.043608, 0.162447;;,
+ 130;3; 0.020581, 0.043608, 0.162447;;,
+ 131;3; 0.020581, 0.043608, 0.162447;;,
+ 132;3; 0.020581, 0.043608, 0.162447;;,
+ 133;3; 0.020581, 0.043608, 0.162447;;,
+ 134;3; 0.020581, 0.043608, 0.162447;;,
+ 135;3; 0.020581, 0.043608, 0.162447;;,
+ 136;3; 0.020581, 0.043608, 0.162447;;,
+ 137;3; 0.020581, 0.043608, 0.162447;;,
+ 138;3; 0.020581, 0.043608, 0.162447;;,
+ 139;3; 0.020581, 0.043608, 0.162447;;,
+ 140;3; 0.020581, 0.043608, 0.162447;;,
+ 141;3; 0.020581, 0.043608, 0.162447;;,
+ 142;3; 0.020581, 0.043608, 0.162447;;,
+ 143;3; 0.020581, 0.043608, 0.162447;;,
+ 144;3; 0.020581, 0.043608, 0.162447;;,
+ 145;3; 0.020581, 0.043608, 0.162447;;,
+ 146;3; 0.020581, 0.043608, 0.162447;;,
+ 147;3; 0.020581, 0.043608, 0.162447;;,
+ 148;3; 0.020581, 0.043608, 0.162447;;,
+ 149;3; 0.020581, 0.043608, 0.162447;;,
+ 150;3; 0.020581, 0.043608, 0.162447;;,
+ 151;3; 0.020581, 0.043608, 0.162447;;,
+ 152;3; 0.020581, 0.043608, 0.162447;;,
+ 153;3; 0.020581, 0.043608, 0.162447;;,
+ 154;3; 0.020581, 0.043608, 0.162447;;,
+ 155;3; 0.020581, 0.043608, 0.162447;;,
+ 156;3; 0.020581, 0.043608, 0.162447;;,
+ 157;3; 0.020581, 0.043608, 0.162447;;,
+ 158;3; 0.020581, 0.043608, 0.162447;;,
+ 159;3; 0.020581, 0.043608, 0.162447;;,
+ 160;3; 0.020581, 0.043608, 0.162447;;,
+ 161;3; 0.020581, 0.043608, 0.162447;;,
+ 162;3; 0.020581, 0.043608, 0.162447;;,
+ 163;3; 0.020581, 0.043608, 0.162447;;,
+ 164;3; 0.020581, 0.043608, 0.162447;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 101;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 102;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 103;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 104;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 105;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 106;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 107;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 108;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 109;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 110;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 111;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 112;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 113;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 114;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 115;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 116;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 117;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 118;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 119;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 120;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 121;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 122;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 123;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 124;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 125;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 126;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 127;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 128;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 129;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 130;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 131;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 132;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 133;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 134;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 135;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 136;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 137;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 138;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 139;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 140;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 141;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 142;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 143;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 144;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 145;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 146;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 147;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 148;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 149;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 150;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 151;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 152;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 153;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 154;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 155;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 156;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 157;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 158;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 159;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 160;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 161;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 162;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 163;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 164;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Root}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; 0.030899,-0.009276, 5.987902;;,
+ 1;3; 0.030899,-0.009276, 5.987902;;,
+ 2;3; 0.030899,-0.009276, 5.987902;;,
+ 3;3; 0.030899,-0.009276, 5.987902;;,
+ 4;3; 0.030899,-0.009276, 5.987902;;,
+ 5;3; 0.030899,-0.009276, 5.987902;;,
+ 6;3; 0.030899,-0.009276, 5.987902;;,
+ 7;3; 0.030899,-0.009276, 5.987902;;,
+ 8;3; 0.030899,-0.009276, 5.987902;;,
+ 9;3; 0.030899,-0.009276, 5.987902;;,
+ 10;3; 0.030899,-0.009276, 5.987902;;,
+ 11;3; 0.030899,-0.009276, 5.987902;;,
+ 12;3; 0.030899,-0.009276, 5.987902;;,
+ 13;3; 0.030899,-0.009276, 5.987902;;,
+ 14;3; 0.030899,-0.009276, 5.987902;;,
+ 15;3; 0.030899,-0.009276, 5.987902;;,
+ 16;3; 0.030899,-0.009276, 5.987902;;,
+ 17;3; 0.030899,-0.009276, 5.987902;;,
+ 18;3; 0.030899,-0.009276, 5.987902;;,
+ 19;3; 0.030899,-0.009276, 5.987902;;,
+ 20;3; 0.030899,-0.009276, 5.987902;;,
+ 21;3; 0.030899,-0.009276, 5.987902;;,
+ 22;3; 0.030899,-0.009276, 5.987902;;,
+ 23;3; 0.030899,-0.009276, 5.987902;;,
+ 24;3; 0.030899,-0.009276, 5.987902;;,
+ 25;3; 0.030899,-0.009276, 5.987902;;,
+ 26;3; 0.030899,-0.009276, 5.987902;;,
+ 27;3; 0.030899,-0.009276, 5.987902;;,
+ 28;3; 0.030899,-0.009276, 5.987902;;,
+ 29;3; 0.030899,-0.009276, 5.987902;;,
+ 30;3; 0.030899,-0.009276, 5.987902;;,
+ 31;3; 0.030899,-0.009276, 5.987902;;,
+ 32;3; 0.030899,-0.009276, 5.987902;;,
+ 33;3; 0.030899,-0.009276, 5.987902;;,
+ 34;3; 0.030899,-0.009276, 5.987902;;,
+ 35;3; 0.030899,-0.009276, 5.987902;;,
+ 36;3; 0.030899,-0.009276, 5.987902;;,
+ 37;3; 0.030899,-0.009276, 5.987902;;,
+ 38;3; 0.030899,-0.009276, 5.987902;;,
+ 39;3; 0.030899,-0.009276, 5.987902;;,
+ 40;3; 0.030899,-0.009276, 5.987902;;,
+ 41;3; 0.030899,-0.009276, 5.987902;;,
+ 42;3; 0.030899,-0.009276, 5.987902;;,
+ 43;3; 0.030899,-0.009276, 5.987902;;,
+ 44;3; 0.030899,-0.009276, 5.987902;;,
+ 45;3; 0.030899,-0.009276, 5.987902;;,
+ 46;3; 0.030899,-0.009276, 5.987902;;,
+ 47;3; 0.030899,-0.009276, 5.987902;;,
+ 48;3; 0.030899,-0.009276, 5.987902;;,
+ 49;3; 0.030899,-0.009276, 5.987902;;,
+ 50;3; 0.030899,-0.009276, 5.987902;;,
+ 51;3; 0.030899,-0.009276, 5.987902;;,
+ 52;3; 0.030899,-0.009276, 5.987902;;,
+ 53;3; 0.030899,-0.009276, 5.987902;;,
+ 54;3; 0.030899,-0.009276, 5.987902;;,
+ 55;3; 0.030899,-0.009276, 5.987902;;,
+ 56;3; 0.030899,-0.009276, 5.987902;;,
+ 57;3; 0.030899,-0.009276, 5.987902;;,
+ 58;3; 0.030899,-0.009276, 5.987902;;,
+ 59;3; 0.030899,-0.009276, 5.987902;;,
+ 60;3; 0.030899,-0.009276, 5.987902;;,
+ 61;3; 0.030899,-0.009276, 5.987902;;,
+ 62;3; 0.030899,-0.009276, 5.987902;;,
+ 63;3; 0.030899,-0.009276, 5.987902;;,
+ 64;3; 0.030899,-0.009276, 5.987902;;,
+ 65;3; 0.030899,-0.009276, 5.987902;;,
+ 66;3; 0.030899,-0.009276, 5.987902;;,
+ 67;3; 0.030899,-0.009276, 5.987902;;,
+ 68;3; 0.030899,-0.009276, 5.987902;;,
+ 69;3; 0.030899,-0.009276, 5.987902;;,
+ 70;3; 0.030899,-0.009276, 5.987902;;,
+ 71;3; 0.030899,-0.009276, 5.987902;;,
+ 72;3; 0.030899,-0.009276, 5.987902;;,
+ 73;3; 0.030899,-0.009276, 5.987902;;,
+ 74;3; 0.030899,-0.009276, 5.987902;;,
+ 75;3; 0.030899,-0.009276, 5.987902;;,
+ 76;3; 0.030899,-0.009276, 5.987902;;,
+ 77;3; 0.030899,-0.009276, 5.987902;;,
+ 78;3; 0.030899,-0.009276, 5.987902;;,
+ 79;3; 0.030899,-0.009276, 5.987902;;,
+ 80;3; 0.030899,-0.009276, 5.987902;;,
+ 81;3; 0.030899,-0.009276, 5.987902;;,
+ 82;3; 0.030899,-0.009276, 5.987902;;,
+ 83;3; 0.030899,-0.009276, 5.987902;;,
+ 84;3; 0.030899,-0.009276, 5.987902;;,
+ 85;3; 0.030899,-0.009276, 5.987902;;,
+ 86;3; 0.030899,-0.009276, 5.987902;;,
+ 87;3; 0.030899,-0.009276, 5.987902;;,
+ 88;3; 0.030899,-0.009276, 5.987902;;,
+ 89;3; 0.030899,-0.009276, 5.987902;;,
+ 90;3; 0.030899,-0.009276, 5.987902;;,
+ 91;3; 0.030899,-0.009276, 5.987902;;,
+ 92;3; 0.030899,-0.009276, 5.987902;;,
+ 93;3; 0.030899,-0.009276, 5.987902;;,
+ 94;3; 0.030899,-0.009276, 5.987902;;,
+ 95;3; 0.030899,-0.009276, 5.987902;;,
+ 96;3; 0.030899,-0.009276, 5.987902;;,
+ 97;3; 0.030899,-0.009276, 5.987902;;,
+ 98;3; 0.030899,-0.009276, 5.987902;;,
+ 99;3; 0.030899,-0.009276, 5.987902;;,
+ 100;3; 0.030899,-0.009276, 5.987902;;,
+ 101;3; 0.030899,-0.009276, 5.987902;;,
+ 102;3; 0.030899,-0.009276, 5.987902;;,
+ 103;3; 0.030899,-0.009276, 5.987902;;,
+ 104;3; 0.030899,-0.009276, 5.987902;;,
+ 105;3; 0.030899,-0.009276, 5.987902;;,
+ 106;3; 0.030899,-0.009276, 5.987902;;,
+ 107;3; 0.030899,-0.009276, 5.987902;;,
+ 108;3; 0.030899,-0.009276, 5.987902;;,
+ 109;3; 0.030899,-0.009276, 5.987902;;,
+ 110;3; 0.030899,-0.009276, 5.987902;;,
+ 111;3; 0.030899,-0.009276, 5.987902;;,
+ 112;3; 0.030899,-0.009276, 5.987902;;,
+ 113;3; 0.030899,-0.009276, 5.987902;;,
+ 114;3; 0.030899,-0.009276, 5.987902;;,
+ 115;3; 0.030899,-0.009276, 5.987902;;,
+ 116;3; 0.030899,-0.009276, 5.987902;;,
+ 117;3; 0.030899,-0.009276, 5.987902;;,
+ 118;3; 0.030899,-0.009276, 5.987902;;,
+ 119;3; 0.030899,-0.009276, 5.987902;;,
+ 120;3; 0.030899,-0.009276, 5.987902;;,
+ 121;3; 0.030899,-0.009276, 5.987902;;,
+ 122;3; 0.030899,-0.009276, 5.987902;;,
+ 123;3; 0.030899,-0.009276, 5.987902;;,
+ 124;3; 0.030899,-0.009276, 5.987902;;,
+ 125;3; 0.030899,-0.009276, 5.987902;;,
+ 126;3; 0.030899,-0.009276, 5.987902;;,
+ 127;3; 0.030899,-0.009276, 5.987902;;,
+ 128;3; 0.030899,-0.009276, 5.987902;;,
+ 129;3; 0.030899,-0.009276, 5.987902;;,
+ 130;3; 0.030899,-0.009276, 5.987902;;,
+ 131;3; 0.030899,-0.009276, 5.987902;;,
+ 132;3; 0.030899,-0.009276, 5.987902;;,
+ 133;3; 0.030899,-0.009276, 5.987902;;,
+ 134;3; 0.030899,-0.009276, 5.987902;;,
+ 135;3; 0.030899,-0.009276, 5.987902;;,
+ 136;3; 0.030899,-0.009276, 5.987902;;,
+ 137;3; 0.030899,-0.009276, 5.987902;;,
+ 138;3; 0.030899,-0.009276, 5.987902;;,
+ 139;3; 0.030899,-0.009276, 5.987902;;,
+ 140;3; 0.030899,-0.009276, 5.987902;;,
+ 141;3; 0.030899,-0.009276, 5.987902;;,
+ 142;3; 0.030899,-0.009276, 5.987902;;,
+ 143;3; 0.030899,-0.009276, 5.987902;;,
+ 144;3; 0.030899,-0.009276, 5.987902;;,
+ 145;3; 0.030899,-0.009276, 5.987902;;,
+ 146;3; 0.030899,-0.009276, 5.987902;;,
+ 147;3; 0.030899,-0.009276, 5.987902;;,
+ 148;3; 0.030899,-0.009276, 5.987902;;,
+ 149;3; 0.030899,-0.009276, 5.987902;;,
+ 150;3; 0.030899,-0.009276, 5.987902;;,
+ 151;3; 0.030899,-0.009276, 5.987902;;,
+ 152;3; 0.030899,-0.009276, 5.987902;;,
+ 153;3; 0.030899,-0.009276, 5.987902;;,
+ 154;3; 0.030899,-0.009276, 5.987902;;,
+ 155;3; 0.030899,-0.009276, 5.987902;;,
+ 156;3; 0.030899,-0.009276, 5.987902;;,
+ 157;3; 0.030899,-0.009276, 5.987902;;,
+ 158;3; 0.030899,-0.009276, 5.987902;;,
+ 159;3; 0.030899,-0.009276, 5.987902;;,
+ 160;3; 0.030899,-0.009276, 5.987902;;,
+ 161;3; 0.030899,-0.009276, 5.987902;;,
+ 162;3; 0.030899,-0.009276, 5.987902;;,
+ 163;3; 0.030899,-0.009276, 5.987902;;,
+ 164;3; 0.030899,-0.009276, 5.987902;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 1;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 2;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 3;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 4;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 5;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 6;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 7;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 8;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 9;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 10;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 11;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 12;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 13;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 14;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 15;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 16;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 17;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 18;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 19;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 20;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 21;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 22;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 23;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 24;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 25;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 26;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 27;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 28;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 29;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 30;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 31;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 32;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 33;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 34;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 35;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 36;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 37;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 38;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 39;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 40;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 41;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 42;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 43;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 44;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 45;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 46;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 47;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 48;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 49;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 50;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 51;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 52;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 53;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 54;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 55;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 56;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 57;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 58;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 59;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 60;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 61;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 62;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 63;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 64;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 65;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 66;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 67;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 68;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 69;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 70;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 71;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 72;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 73;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 74;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 75;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 76;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 77;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 78;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 79;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 80;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 81;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 82;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 83;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 84;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 85;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 86;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 87;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 88;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 89;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 90;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 91;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 92;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 93;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 94;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 95;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 96;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 97;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 98;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 99;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 100;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 101;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 102;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 103;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 104;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 105;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 106;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 107;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 108;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 109;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 110;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 111;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 112;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 113;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 114;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 115;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 116;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 117;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 118;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 119;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 120;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 121;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 122;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 123;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 124;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 125;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 126;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 127;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 128;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 129;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 130;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 131;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 132;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 133;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 134;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 135;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 136;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 137;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 138;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 139;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 140;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 141;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 142;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 143;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 144;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 145;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 146;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 147;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 148;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 149;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 150;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 151;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 152;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 153;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 154;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 155;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 156;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 157;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 158;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 159;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 160;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 161;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 162;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 163;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 164;4; 0.000000, 0.000000, 0.707107, 0.707107;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_001}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; 1.460671,-0.139217, 4.073730;;,
+ 1;3; 1.460671,-0.139217, 4.073730;;,
+ 2;3; 1.460671,-0.139217, 4.073730;;,
+ 3;3; 1.460671,-0.139217, 4.073730;;,
+ 4;3; 1.460671,-0.139217, 4.073730;;,
+ 5;3; 1.460671,-0.139217, 4.073730;;,
+ 6;3; 1.460671,-0.139217, 4.073730;;,
+ 7;3; 1.460671,-0.139217, 4.073730;;,
+ 8;3; 1.460671,-0.139217, 4.073730;;,
+ 9;3; 1.460671,-0.139217, 4.073730;;,
+ 10;3; 1.460671,-0.139217, 4.073730;;,
+ 11;3; 1.460671,-0.139217, 4.073730;;,
+ 12;3; 1.460671,-0.139217, 4.073730;;,
+ 13;3; 1.460671,-0.139217, 4.073730;;,
+ 14;3; 1.460671,-0.139217, 4.073730;;,
+ 15;3; 1.460671,-0.139217, 4.073730;;,
+ 16;3; 1.460671,-0.139217, 4.073730;;,
+ 17;3; 1.460671,-0.139217, 4.073730;;,
+ 18;3; 1.460671,-0.139217, 4.073730;;,
+ 19;3; 1.460671,-0.139217, 4.073730;;,
+ 20;3; 1.460671,-0.139217, 4.073730;;,
+ 21;3; 1.460671,-0.139217, 4.073730;;,
+ 22;3; 1.460671,-0.139217, 4.073730;;,
+ 23;3; 1.460671,-0.139217, 4.073730;;,
+ 24;3; 1.460671,-0.139217, 4.073730;;,
+ 25;3; 1.460671,-0.139217, 4.073730;;,
+ 26;3; 1.460671,-0.139217, 4.073730;;,
+ 27;3; 1.460671,-0.139217, 4.073730;;,
+ 28;3; 1.460671,-0.139217, 4.073730;;,
+ 29;3; 1.460671,-0.139217, 4.073730;;,
+ 30;3; 1.460671,-0.139217, 4.073730;;,
+ 31;3; 1.460671,-0.139217, 4.073730;;,
+ 32;3; 1.460671,-0.139217, 4.073730;;,
+ 33;3; 1.460671,-0.139217, 4.073730;;,
+ 34;3; 1.460671,-0.139217, 4.073730;;,
+ 35;3; 1.460671,-0.139217, 4.073730;;,
+ 36;3; 1.460671,-0.139217, 4.073730;;,
+ 37;3; 1.460671,-0.139217, 4.073730;;,
+ 38;3; 1.460671,-0.139217, 4.073730;;,
+ 39;3; 1.460671,-0.139217, 4.073730;;,
+ 40;3; 1.460671,-0.139217, 4.073730;;,
+ 41;3; 1.460671,-0.139217, 4.073730;;,
+ 42;3; 1.460671,-0.139217, 4.073730;;,
+ 43;3; 1.460671,-0.139217, 4.073730;;,
+ 44;3; 1.460671,-0.139217, 4.073730;;,
+ 45;3; 1.460671,-0.139217, 4.073730;;,
+ 46;3; 1.460671,-0.139217, 4.073730;;,
+ 47;3; 1.460671,-0.139217, 4.073730;;,
+ 48;3; 1.460671,-0.139217, 4.073730;;,
+ 49;3; 1.460671,-0.139217, 4.073730;;,
+ 50;3; 1.460671,-0.139217, 4.073730;;,
+ 51;3; 1.460671,-0.139217, 4.073730;;,
+ 52;3; 1.460671,-0.139217, 4.073730;;,
+ 53;3; 1.460671,-0.139217, 4.073730;;,
+ 54;3; 1.460671,-0.139217, 4.073730;;,
+ 55;3; 1.460671,-0.139217, 4.073730;;,
+ 56;3; 1.460671,-0.139217, 4.073730;;,
+ 57;3; 1.460671,-0.139217, 4.073730;;,
+ 58;3; 1.460671,-0.139217, 4.073730;;,
+ 59;3; 1.460671,-0.139217, 4.073730;;,
+ 60;3; 1.460671,-0.139217, 4.073730;;,
+ 61;3; 1.460671,-0.139217, 4.073730;;,
+ 62;3; 1.460671,-0.139217, 4.073730;;,
+ 63;3; 1.460671,-0.139217, 4.073730;;,
+ 64;3; 1.460671,-0.139217, 4.073730;;,
+ 65;3; 1.460671,-0.139217, 4.073730;;,
+ 66;3; 1.460671,-0.139217, 4.073730;;,
+ 67;3; 1.460671,-0.139217, 4.073730;;,
+ 68;3; 1.460671,-0.139217, 4.073730;;,
+ 69;3; 1.460671,-0.139217, 4.073730;;,
+ 70;3; 1.460671,-0.139217, 4.073730;;,
+ 71;3; 1.460671,-0.139217, 4.073730;;,
+ 72;3; 1.460671,-0.139217, 4.073730;;,
+ 73;3; 1.460671,-0.139217, 4.073730;;,
+ 74;3; 1.460671,-0.139217, 4.073730;;,
+ 75;3; 1.460671,-0.139217, 4.073730;;,
+ 76;3; 1.460671,-0.139217, 4.073730;;,
+ 77;3; 1.460671,-0.139217, 4.073730;;,
+ 78;3; 1.460671,-0.139217, 4.073730;;,
+ 79;3; 1.460671,-0.139217, 4.073730;;,
+ 80;3; 1.460671,-0.139217, 4.073730;;,
+ 81;3; 1.460671,-0.139217, 4.073730;;,
+ 82;3; 1.460671,-0.139217, 4.073730;;,
+ 83;3; 1.460671,-0.139217, 4.073730;;,
+ 84;3; 1.460671,-0.139217, 4.073730;;,
+ 85;3; 1.460671,-0.139217, 4.073730;;,
+ 86;3; 1.460671,-0.139217, 4.073730;;,
+ 87;3; 1.460671,-0.139217, 4.073730;;,
+ 88;3; 1.460671,-0.139217, 4.073730;;,
+ 89;3; 1.460671,-0.139217, 4.073730;;,
+ 90;3; 1.460671,-0.139217, 4.073730;;,
+ 91;3; 1.460671,-0.139217, 4.073730;;,
+ 92;3; 1.460671,-0.139217, 4.073730;;,
+ 93;3; 1.460671,-0.139217, 4.073730;;,
+ 94;3; 1.460671,-0.139217, 4.073730;;,
+ 95;3; 1.460671,-0.139217, 4.073730;;,
+ 96;3; 1.460671,-0.139217, 4.073730;;,
+ 97;3; 1.460671,-0.139217, 4.073730;;,
+ 98;3; 1.460671,-0.139217, 4.073730;;,
+ 99;3; 1.460671,-0.139217, 4.073730;;,
+ 100;3; 1.460671,-0.139217, 4.073730;;,
+ 101;3; 1.460671,-0.139217, 4.073730;;,
+ 102;3; 1.460671,-0.139217, 4.073730;;,
+ 103;3; 1.460671,-0.139217, 4.073730;;,
+ 104;3; 1.460671,-0.139217, 4.073730;;,
+ 105;3; 1.460671,-0.139217, 4.073730;;,
+ 106;3; 1.460671,-0.139217, 4.073730;;,
+ 107;3; 1.460671,-0.139217, 4.073730;;,
+ 108;3; 1.460671,-0.139217, 4.073730;;,
+ 109;3; 1.460671,-0.139217, 4.073730;;,
+ 110;3; 1.460671,-0.139217, 4.073730;;,
+ 111;3; 1.460671,-0.139217, 4.073730;;,
+ 112;3; 1.460671,-0.139217, 4.073730;;,
+ 113;3; 1.460671,-0.139217, 4.073730;;,
+ 114;3; 1.460671,-0.139217, 4.073730;;,
+ 115;3; 1.460671,-0.139217, 4.073730;;,
+ 116;3; 1.460671,-0.139217, 4.073730;;,
+ 117;3; 1.460671,-0.139217, 4.073730;;,
+ 118;3; 1.460671,-0.139217, 4.073730;;,
+ 119;3; 1.460671,-0.139217, 4.073730;;,
+ 120;3; 1.460671,-0.139217, 4.073730;;,
+ 121;3; 1.460671,-0.139217, 4.073730;;,
+ 122;3; 1.460671,-0.139217, 4.073730;;,
+ 123;3; 1.460671,-0.139217, 4.073730;;,
+ 124;3; 1.460671,-0.139217, 4.073730;;,
+ 125;3; 1.460671,-0.139217, 4.073730;;,
+ 126;3; 1.460671,-0.139217, 4.073730;;,
+ 127;3; 1.460671,-0.139217, 4.073730;;,
+ 128;3; 1.460671,-0.139217, 4.073730;;,
+ 129;3; 1.460671,-0.139217, 4.073730;;,
+ 130;3; 1.460671,-0.139217, 4.073730;;,
+ 131;3; 1.460671,-0.139217, 4.073730;;,
+ 132;3; 1.460671,-0.139217, 4.073730;;,
+ 133;3; 1.460671,-0.139217, 4.073730;;,
+ 134;3; 1.460671,-0.139217, 4.073730;;,
+ 135;3; 1.460671,-0.139217, 4.073730;;,
+ 136;3; 1.460671,-0.139217, 4.073730;;,
+ 137;3; 1.460671,-0.139217, 4.073730;;,
+ 138;3; 1.460671,-0.139217, 4.073730;;,
+ 139;3; 1.460671,-0.139217, 4.073730;;,
+ 140;3; 1.460671,-0.139217, 4.073730;;,
+ 141;3; 1.460671,-0.139217, 4.073730;;,
+ 142;3; 1.460671,-0.139217, 4.073730;;,
+ 143;3; 1.460671,-0.139217, 4.073730;;,
+ 144;3; 1.460671,-0.139217, 4.073730;;,
+ 145;3; 1.460671,-0.139217, 4.073730;;,
+ 146;3; 1.460671,-0.139217, 4.073730;;,
+ 147;3; 1.460671,-0.139217, 4.073730;;,
+ 148;3; 1.460671,-0.139217, 4.073730;;,
+ 149;3; 1.460671,-0.139217, 4.073730;;,
+ 150;3; 1.460671,-0.139217, 4.073730;;,
+ 151;3; 1.460671,-0.139217, 4.073730;;,
+ 152;3; 1.460671,-0.139217, 4.073730;;,
+ 153;3; 1.460671,-0.139217, 4.073730;;,
+ 154;3; 1.460671,-0.139217, 4.073730;;,
+ 155;3; 1.460671,-0.139217, 4.073730;;,
+ 156;3; 1.460671,-0.139217, 4.073730;;,
+ 157;3; 1.460671,-0.139217, 4.073730;;,
+ 158;3; 1.460671,-0.139217, 4.073730;;,
+ 159;3; 1.460671,-0.139217, 4.073730;;,
+ 160;3; 1.460671,-0.139217, 4.073730;;,
+ 161;3; 1.460671,-0.139217, 4.073730;;,
+ 162;3; 1.460671,-0.139217, 4.073730;;,
+ 163;3; 1.460671,-0.139217, 4.073730;;,
+ 164;3; 1.460671,-0.139217, 4.073730;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 82;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 83;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 84;4; -0.235816, 0.968955,-0.000000,-0.000000;;,
+ 85;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 86;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 87;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 88;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 89;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926,-0.000000,-0.000000;;,
+ 91;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 92;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 93;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 94;4; 0.247343, 0.965926, 0.000000,-0.000000;;,
+ 95;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 96;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 97;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 98;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 99;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 108;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 109;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 110;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 111;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 112;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 113;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 114;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 115;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 116;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 117;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 118;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 119;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 120;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 121;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 122;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 123;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 124;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 125;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 126;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 127;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 128;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 129;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 130;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 131;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 132;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 133;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 134;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 135;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 136;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 137;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 138;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 139;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 140;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 141;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 142;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 143;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 144;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 145;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 146;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 147;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 148;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 149;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 150;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 151;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 152;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 153;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 154;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 155;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 156;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 157;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 158;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 159;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 160;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 161;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 162;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 163;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 164;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; 1.460671,-0.139216,-3.633328;;,
+ 1;3; 1.460671,-0.139216,-3.633328;;,
+ 2;3; 1.460671,-0.139216,-3.633328;;,
+ 3;3; 1.460671,-0.139216,-3.633328;;,
+ 4;3; 1.460671,-0.139216,-3.633328;;,
+ 5;3; 1.460671,-0.139216,-3.633328;;,
+ 6;3; 1.460671,-0.139216,-3.633328;;,
+ 7;3; 1.460671,-0.139216,-3.633328;;,
+ 8;3; 1.460671,-0.139216,-3.633328;;,
+ 9;3; 1.460671,-0.139216,-3.633328;;,
+ 10;3; 1.460671,-0.139216,-3.633328;;,
+ 11;3; 1.460671,-0.139216,-3.633328;;,
+ 12;3; 1.460671,-0.139216,-3.633328;;,
+ 13;3; 1.460671,-0.139216,-3.633328;;,
+ 14;3; 1.460671,-0.139216,-3.633328;;,
+ 15;3; 1.460671,-0.139216,-3.633328;;,
+ 16;3; 1.460671,-0.139216,-3.633328;;,
+ 17;3; 1.460671,-0.139216,-3.633328;;,
+ 18;3; 1.460671,-0.139216,-3.633328;;,
+ 19;3; 1.460671,-0.139216,-3.633328;;,
+ 20;3; 1.460671,-0.139216,-3.633328;;,
+ 21;3; 1.460671,-0.139216,-3.633328;;,
+ 22;3; 1.460671,-0.139216,-3.633328;;,
+ 23;3; 1.460671,-0.139216,-3.633328;;,
+ 24;3; 1.460671,-0.139216,-3.633328;;,
+ 25;3; 1.460671,-0.139216,-3.633328;;,
+ 26;3; 1.460671,-0.139216,-3.633328;;,
+ 27;3; 1.460671,-0.139216,-3.633328;;,
+ 28;3; 1.460671,-0.139216,-3.633328;;,
+ 29;3; 1.460671,-0.139216,-3.633328;;,
+ 30;3; 1.460671,-0.139216,-3.633328;;,
+ 31;3; 1.460671,-0.139216,-3.633328;;,
+ 32;3; 1.460671,-0.139216,-3.633328;;,
+ 33;3; 1.460671,-0.139216,-3.633328;;,
+ 34;3; 1.460671,-0.139216,-3.633328;;,
+ 35;3; 1.460671,-0.139216,-3.633328;;,
+ 36;3; 1.460671,-0.139216,-3.633328;;,
+ 37;3; 1.460671,-0.139216,-3.633328;;,
+ 38;3; 1.460671,-0.139216,-3.633328;;,
+ 39;3; 1.460671,-0.139216,-3.633328;;,
+ 40;3; 1.460671,-0.139216,-3.633328;;,
+ 41;3; 1.460671,-0.139216,-3.633328;;,
+ 42;3; 1.460671,-0.139216,-3.633328;;,
+ 43;3; 1.460671,-0.139216,-3.633328;;,
+ 44;3; 1.460671,-0.139216,-3.633328;;,
+ 45;3; 1.460671,-0.139216,-3.633328;;,
+ 46;3; 1.460671,-0.139216,-3.633328;;,
+ 47;3; 1.460671,-0.139216,-3.633328;;,
+ 48;3; 1.460671,-0.139216,-3.633328;;,
+ 49;3; 1.460671,-0.139216,-3.633328;;,
+ 50;3; 1.460671,-0.139216,-3.633328;;,
+ 51;3; 1.460671,-0.139216,-3.633328;;,
+ 52;3; 1.460671,-0.139216,-3.633328;;,
+ 53;3; 1.460671,-0.139216,-3.633328;;,
+ 54;3; 1.460671,-0.139216,-3.633328;;,
+ 55;3; 1.460671,-0.139216,-3.633328;;,
+ 56;3; 1.460671,-0.139216,-3.633328;;,
+ 57;3; 1.460671,-0.139216,-3.633328;;,
+ 58;3; 1.460671,-0.139216,-3.633328;;,
+ 59;3; 1.460671,-0.139216,-3.633328;;,
+ 60;3; 1.460671,-0.139216,-3.633328;;,
+ 61;3; 1.460671,-0.139216,-3.633328;;,
+ 62;3; 1.460671,-0.139216,-3.633328;;,
+ 63;3; 1.460671,-0.139216,-3.633328;;,
+ 64;3; 1.460671,-0.139216,-3.633328;;,
+ 65;3; 1.460671,-0.139216,-3.633328;;,
+ 66;3; 1.460671,-0.139216,-3.633328;;,
+ 67;3; 1.460671,-0.139216,-3.633328;;,
+ 68;3; 1.460671,-0.139216,-3.633328;;,
+ 69;3; 1.460671,-0.139216,-3.633328;;,
+ 70;3; 1.460671,-0.139216,-3.633328;;,
+ 71;3; 1.460671,-0.139216,-3.633328;;,
+ 72;3; 1.460671,-0.139216,-3.633328;;,
+ 73;3; 1.460671,-0.139216,-3.633328;;,
+ 74;3; 1.460671,-0.139216,-3.633328;;,
+ 75;3; 1.460671,-0.139216,-3.633328;;,
+ 76;3; 1.460671,-0.139216,-3.633328;;,
+ 77;3; 1.460671,-0.139216,-3.633328;;,
+ 78;3; 1.460671,-0.139216,-3.633328;;,
+ 79;3; 1.460671,-0.139216,-3.633328;;,
+ 80;3; 1.460671,-0.139216,-3.633328;;,
+ 81;3; 1.460671,-0.139216,-3.633328;;,
+ 82;3; 1.460671,-0.139216,-3.633328;;,
+ 83;3; 1.460671,-0.139216,-3.633328;;,
+ 84;3; 1.460671,-0.139216,-3.633328;;,
+ 85;3; 1.460671,-0.139216,-3.633328;;,
+ 86;3; 1.460671,-0.139216,-3.633328;;,
+ 87;3; 1.460671,-0.139216,-3.633328;;,
+ 88;3; 1.460671,-0.139216,-3.633328;;,
+ 89;3; 1.460671,-0.139216,-3.633328;;,
+ 90;3; 1.460671,-0.139216,-3.633328;;,
+ 91;3; 1.460671,-0.139216,-3.633328;;,
+ 92;3; 1.460671,-0.139216,-3.633328;;,
+ 93;3; 1.460671,-0.139216,-3.633328;;,
+ 94;3; 1.460671,-0.139216,-3.633328;;,
+ 95;3; 1.460671,-0.139216,-3.633328;;,
+ 96;3; 1.460671,-0.139216,-3.633328;;,
+ 97;3; 1.460671,-0.139216,-3.633328;;,
+ 98;3; 1.460671,-0.139216,-3.633328;;,
+ 99;3; 1.460671,-0.139216,-3.633328;;,
+ 100;3; 1.460671,-0.139216,-3.633328;;,
+ 101;3; 1.460671,-0.139216,-3.633328;;,
+ 102;3; 1.460671,-0.139216,-3.633328;;,
+ 103;3; 1.460671,-0.139216,-3.633328;;,
+ 104;3; 1.460671,-0.139216,-3.633328;;,
+ 105;3; 1.460671,-0.139216,-3.633328;;,
+ 106;3; 1.460671,-0.139216,-3.633328;;,
+ 107;3; 1.460671,-0.139216,-3.633328;;,
+ 108;3; 1.460671,-0.139216,-3.633328;;,
+ 109;3; 1.460671,-0.139216,-3.633328;;,
+ 110;3; 1.460671,-0.139216,-3.633328;;,
+ 111;3; 1.460671,-0.139216,-3.633328;;,
+ 112;3; 1.460671,-0.139216,-3.633328;;,
+ 113;3; 1.460671,-0.139216,-3.633328;;,
+ 114;3; 1.460671,-0.139216,-3.633328;;,
+ 115;3; 1.460671,-0.139216,-3.633328;;,
+ 116;3; 1.460671,-0.139216,-3.633328;;,
+ 117;3; 1.460671,-0.139216,-3.633328;;,
+ 118;3; 1.460671,-0.139216,-3.633328;;,
+ 119;3; 1.460671,-0.139216,-3.633328;;,
+ 120;3; 1.460671,-0.139216,-3.633328;;,
+ 121;3; 1.460671,-0.139216,-3.633328;;,
+ 122;3; 1.460671,-0.139216,-3.633328;;,
+ 123;3; 1.460671,-0.139216,-3.633328;;,
+ 124;3; 1.460671,-0.139216,-3.633328;;,
+ 125;3; 1.460671,-0.139216,-3.633328;;,
+ 126;3; 1.460671,-0.139216,-3.633328;;,
+ 127;3; 1.460671,-0.139216,-3.633328;;,
+ 128;3; 1.460671,-0.139216,-3.633328;;,
+ 129;3; 1.460671,-0.139216,-3.633328;;,
+ 130;3; 1.460671,-0.139216,-3.633328;;,
+ 131;3; 1.460671,-0.139216,-3.633328;;,
+ 132;3; 1.460671,-0.139216,-3.633328;;,
+ 133;3; 1.460671,-0.139216,-3.633328;;,
+ 134;3; 1.460671,-0.139216,-3.633328;;,
+ 135;3; 1.460671,-0.139216,-3.633328;;,
+ 136;3; 1.460671,-0.139216,-3.633328;;,
+ 137;3; 1.460671,-0.139216,-3.633328;;,
+ 138;3; 1.460671,-0.139216,-3.633328;;,
+ 139;3; 1.460671,-0.139216,-3.633328;;,
+ 140;3; 1.460671,-0.139216,-3.633328;;,
+ 141;3; 1.460671,-0.139216,-3.633328;;,
+ 142;3; 1.460671,-0.139216,-3.633328;;,
+ 143;3; 1.460671,-0.139216,-3.633328;;,
+ 144;3; 1.460671,-0.139216,-3.633328;;,
+ 145;3; 1.460671,-0.139216,-3.633328;;,
+ 146;3; 1.460671,-0.139216,-3.633328;;,
+ 147;3; 1.460671,-0.139216,-3.633328;;,
+ 148;3; 1.460671,-0.139216,-3.633328;;,
+ 149;3; 1.460671,-0.139216,-3.633328;;,
+ 150;3; 1.460671,-0.139216,-3.633328;;,
+ 151;3; 1.460671,-0.139216,-3.633328;;,
+ 152;3; 1.460671,-0.139216,-3.633328;;,
+ 153;3; 1.460671,-0.139216,-3.633328;;,
+ 154;3; 1.460671,-0.139216,-3.633328;;,
+ 155;3; 1.460671,-0.139216,-3.633328;;,
+ 156;3; 1.460671,-0.139216,-3.633328;;,
+ 157;3; 1.460671,-0.139216,-3.633328;;,
+ 158;3; 1.460671,-0.139216,-3.633328;;,
+ 159;3; 1.460671,-0.139216,-3.633328;;,
+ 160;3; 1.460671,-0.139216,-3.633328;;,
+ 161;3; 1.460671,-0.139216,-3.633328;;,
+ 162;3; 1.460671,-0.139216,-3.633328;;,
+ 163;3; 1.460671,-0.139216,-3.633328;;,
+ 164;3; 1.460671,-0.139216,-3.633328;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 81;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 82;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 83;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 84;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 85;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 86;4; 0.247343, 0.965926, 0.000000,-0.000000;;,
+ 87;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 88;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 89;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926,-0.000000,-0.000000;;,
+ 91;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 92;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 93;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 94;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 95;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 96;4; -0.235816, 0.968955,-0.000000,-0.000000;;,
+ 97;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 98;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 99;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 108;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 109;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 110;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 111;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 112;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 113;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 114;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 115;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 116;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 117;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 118;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 119;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 120;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 121;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 122;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 123;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 124;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 125;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 126;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 127;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 128;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 129;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 130;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 131;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 132;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 133;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 134;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 135;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 136;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 137;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 138;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 139;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 140;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 141;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 142;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 143;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 144;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 145;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 146;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 147;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 148;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 149;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 150;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 151;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 152;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 153;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 154;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 155;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 156;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 157;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 158;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 159;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 160;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 161;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 162;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 163;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 164;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_003}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; -1.438651,-0.139217, 4.073730;;,
+ 1;3; -1.438651,-0.139217, 4.073730;;,
+ 2;3; -1.438651,-0.139217, 4.073730;;,
+ 3;3; -1.438651,-0.139217, 4.073730;;,
+ 4;3; -1.438651,-0.139217, 4.073730;;,
+ 5;3; -1.438651,-0.139217, 4.073730;;,
+ 6;3; -1.438651,-0.139217, 4.073730;;,
+ 7;3; -1.438651,-0.139217, 4.073730;;,
+ 8;3; -1.438651,-0.139217, 4.073730;;,
+ 9;3; -1.438651,-0.139217, 4.073730;;,
+ 10;3; -1.438651,-0.139217, 4.073730;;,
+ 11;3; -1.438651,-0.139217, 4.073730;;,
+ 12;3; -1.438651,-0.139217, 4.073730;;,
+ 13;3; -1.438651,-0.139217, 4.073730;;,
+ 14;3; -1.438651,-0.139217, 4.073730;;,
+ 15;3; -1.438651,-0.139217, 4.073730;;,
+ 16;3; -1.438651,-0.139217, 4.073730;;,
+ 17;3; -1.438651,-0.139217, 4.073730;;,
+ 18;3; -1.438651,-0.139217, 4.073730;;,
+ 19;3; -1.438651,-0.139217, 4.073730;;,
+ 20;3; -1.438651,-0.139217, 4.073730;;,
+ 21;3; -1.438651,-0.139217, 4.073730;;,
+ 22;3; -1.438651,-0.139217, 4.073730;;,
+ 23;3; -1.438651,-0.139217, 4.073730;;,
+ 24;3; -1.438651,-0.139217, 4.073730;;,
+ 25;3; -1.438651,-0.139217, 4.073730;;,
+ 26;3; -1.438651,-0.139217, 4.073730;;,
+ 27;3; -1.438651,-0.139217, 4.073730;;,
+ 28;3; -1.438651,-0.139217, 4.073730;;,
+ 29;3; -1.438651,-0.139217, 4.073730;;,
+ 30;3; -1.438651,-0.139217, 4.073730;;,
+ 31;3; -1.438651,-0.139217, 4.073730;;,
+ 32;3; -1.438651,-0.139217, 4.073730;;,
+ 33;3; -1.438651,-0.139217, 4.073730;;,
+ 34;3; -1.438651,-0.139217, 4.073730;;,
+ 35;3; -1.438651,-0.139217, 4.073730;;,
+ 36;3; -1.438651,-0.139217, 4.073730;;,
+ 37;3; -1.438651,-0.139217, 4.073730;;,
+ 38;3; -1.438651,-0.139217, 4.073730;;,
+ 39;3; -1.438651,-0.139217, 4.073730;;,
+ 40;3; -1.438651,-0.139217, 4.073730;;,
+ 41;3; -1.438651,-0.139217, 4.073730;;,
+ 42;3; -1.438651,-0.139217, 4.073730;;,
+ 43;3; -1.438651,-0.139217, 4.073730;;,
+ 44;3; -1.438651,-0.139217, 4.073730;;,
+ 45;3; -1.438651,-0.139217, 4.073730;;,
+ 46;3; -1.438651,-0.139217, 4.073730;;,
+ 47;3; -1.438651,-0.139217, 4.073730;;,
+ 48;3; -1.438651,-0.139217, 4.073730;;,
+ 49;3; -1.438651,-0.139217, 4.073730;;,
+ 50;3; -1.438651,-0.139217, 4.073730;;,
+ 51;3; -1.438651,-0.139217, 4.073730;;,
+ 52;3; -1.438651,-0.139217, 4.073730;;,
+ 53;3; -1.438651,-0.139217, 4.073730;;,
+ 54;3; -1.438651,-0.139217, 4.073730;;,
+ 55;3; -1.438651,-0.139217, 4.073730;;,
+ 56;3; -1.438651,-0.139217, 4.073730;;,
+ 57;3; -1.438651,-0.139217, 4.073730;;,
+ 58;3; -1.438651,-0.139217, 4.073730;;,
+ 59;3; -1.438651,-0.139217, 4.073730;;,
+ 60;3; -1.438651,-0.139217, 4.073730;;,
+ 61;3; -1.438651,-0.139217, 4.073730;;,
+ 62;3; -1.438651,-0.139217, 4.073730;;,
+ 63;3; -1.438651,-0.139217, 4.073730;;,
+ 64;3; -1.438651,-0.139217, 4.073730;;,
+ 65;3; -1.438651,-0.139217, 4.073730;;,
+ 66;3; -1.438651,-0.139217, 4.073730;;,
+ 67;3; -1.438651,-0.139217, 4.073730;;,
+ 68;3; -1.438651,-0.139217, 4.073730;;,
+ 69;3; -1.438651,-0.139217, 4.073730;;,
+ 70;3; -1.438651,-0.139217, 4.073730;;,
+ 71;3; -1.438651,-0.139217, 4.073730;;,
+ 72;3; -1.438651,-0.139217, 4.073730;;,
+ 73;3; -1.438651,-0.139217, 4.073730;;,
+ 74;3; -1.438651,-0.139217, 4.073730;;,
+ 75;3; -1.438651,-0.139217, 4.073730;;,
+ 76;3; -1.438651,-0.139217, 4.073730;;,
+ 77;3; -1.438651,-0.139217, 4.073730;;,
+ 78;3; -1.438651,-0.139217, 4.073730;;,
+ 79;3; -1.438651,-0.139217, 4.073730;;,
+ 80;3; -1.438651,-0.139217, 4.073730;;,
+ 81;3; -1.438651,-0.139217, 4.073730;;,
+ 82;3; -1.438651,-0.139217, 4.073730;;,
+ 83;3; -1.438651,-0.139217, 4.073730;;,
+ 84;3; -1.438651,-0.139217, 4.073730;;,
+ 85;3; -1.438651,-0.139217, 4.073730;;,
+ 86;3; -1.438651,-0.139217, 4.073730;;,
+ 87;3; -1.438651,-0.139217, 4.073730;;,
+ 88;3; -1.438651,-0.139217, 4.073730;;,
+ 89;3; -1.438651,-0.139217, 4.073730;;,
+ 90;3; -1.438651,-0.139217, 4.073730;;,
+ 91;3; -1.438651,-0.139217, 4.073730;;,
+ 92;3; -1.438651,-0.139217, 4.073730;;,
+ 93;3; -1.438651,-0.139217, 4.073730;;,
+ 94;3; -1.438651,-0.139217, 4.073730;;,
+ 95;3; -1.438651,-0.139217, 4.073730;;,
+ 96;3; -1.438651,-0.139217, 4.073730;;,
+ 97;3; -1.438651,-0.139217, 4.073730;;,
+ 98;3; -1.438651,-0.139217, 4.073730;;,
+ 99;3; -1.438651,-0.139217, 4.073730;;,
+ 100;3; -1.438651,-0.139217, 4.073730;;,
+ 101;3; -1.438651,-0.139217, 4.073730;;,
+ 102;3; -1.438651,-0.139217, 4.073730;;,
+ 103;3; -1.438651,-0.139217, 4.073730;;,
+ 104;3; -1.438651,-0.139217, 4.073730;;,
+ 105;3; -1.438651,-0.139217, 4.073730;;,
+ 106;3; -1.438651,-0.139217, 4.073730;;,
+ 107;3; -1.438651,-0.139217, 4.073730;;,
+ 108;3; -1.438651,-0.139217, 4.073730;;,
+ 109;3; -1.438651,-0.139217, 4.073730;;,
+ 110;3; -1.438651,-0.139217, 4.073730;;,
+ 111;3; -1.438651,-0.139217, 4.073730;;,
+ 112;3; -1.438651,-0.139217, 4.073730;;,
+ 113;3; -1.438651,-0.139217, 4.073730;;,
+ 114;3; -1.438651,-0.139217, 4.073730;;,
+ 115;3; -1.438651,-0.139217, 4.073730;;,
+ 116;3; -1.438651,-0.139217, 4.073730;;,
+ 117;3; -1.438651,-0.139217, 4.073730;;,
+ 118;3; -1.438651,-0.139217, 4.073730;;,
+ 119;3; -1.438651,-0.139217, 4.073730;;,
+ 120;3; -1.438651,-0.139217, 4.073730;;,
+ 121;3; -1.438651,-0.139217, 4.073730;;,
+ 122;3; -1.438651,-0.139217, 4.073730;;,
+ 123;3; -1.438651,-0.139217, 4.073730;;,
+ 124;3; -1.438651,-0.139217, 4.073730;;,
+ 125;3; -1.438651,-0.139217, 4.073730;;,
+ 126;3; -1.438651,-0.139217, 4.073730;;,
+ 127;3; -1.438651,-0.139217, 4.073730;;,
+ 128;3; -1.438651,-0.139217, 4.073730;;,
+ 129;3; -1.438651,-0.139217, 4.073730;;,
+ 130;3; -1.438651,-0.139217, 4.073730;;,
+ 131;3; -1.438651,-0.139217, 4.073730;;,
+ 132;3; -1.438651,-0.139217, 4.073730;;,
+ 133;3; -1.438651,-0.139217, 4.073730;;,
+ 134;3; -1.438651,-0.139217, 4.073730;;,
+ 135;3; -1.438651,-0.139217, 4.073730;;,
+ 136;3; -1.438651,-0.139217, 4.073730;;,
+ 137;3; -1.438651,-0.139217, 4.073730;;,
+ 138;3; -1.438651,-0.139217, 4.073730;;,
+ 139;3; -1.438651,-0.139217, 4.073730;;,
+ 140;3; -1.438651,-0.139217, 4.073730;;,
+ 141;3; -1.438651,-0.139217, 4.073730;;,
+ 142;3; -1.438651,-0.139217, 4.073730;;,
+ 143;3; -1.438651,-0.139217, 4.073730;;,
+ 144;3; -1.438651,-0.139217, 4.073730;;,
+ 145;3; -1.438651,-0.139217, 4.073730;;,
+ 146;3; -1.438651,-0.139217, 4.073730;;,
+ 147;3; -1.438651,-0.139217, 4.073730;;,
+ 148;3; -1.438651,-0.139217, 4.073730;;,
+ 149;3; -1.438651,-0.139217, 4.073730;;,
+ 150;3; -1.438651,-0.139217, 4.073730;;,
+ 151;3; -1.438651,-0.139217, 4.073730;;,
+ 152;3; -1.438651,-0.139217, 4.073730;;,
+ 153;3; -1.438651,-0.139217, 4.073730;;,
+ 154;3; -1.438651,-0.139217, 4.073730;;,
+ 155;3; -1.438651,-0.139217, 4.073730;;,
+ 156;3; -1.438651,-0.139217, 4.073730;;,
+ 157;3; -1.438651,-0.139217, 4.073730;;,
+ 158;3; -1.438651,-0.139217, 4.073730;;,
+ 159;3; -1.438651,-0.139217, 4.073730;;,
+ 160;3; -1.438651,-0.139217, 4.073730;;,
+ 161;3; -1.438651,-0.139217, 4.073730;;,
+ 162;3; -1.438651,-0.139217, 4.073730;;,
+ 163;3; -1.438651,-0.139217, 4.073730;;,
+ 164;3; -1.438651,-0.139217, 4.073730;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; 0.000000, 1.000000,-0.000000,-0.000000;;,
+ 81;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 82;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 83;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 84;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 85;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 86;4; 0.247344, 0.965926, 0.000000,-0.000000;;,
+ 87;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 88;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 89;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926, 0.000000,-0.000000;;,
+ 91;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 92;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 93;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 94;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 95;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 96;4; -0.235815, 0.968955,-0.000000,-0.000000;;,
+ 97;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 98;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 99;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 108;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 109;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 110;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 111;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 112;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 113;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 114;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 115;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 116;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 117;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 118;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 119;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 120;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 121;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 122;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 123;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 124;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 125;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 126;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 127;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 128;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 129;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 130;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 131;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 132;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 133;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 134;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 135;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 136;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 137;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 138;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 139;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 140;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 141;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 142;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 143;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 144;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 145;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 146;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 147;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 148;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 149;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 150;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 151;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 152;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 153;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 154;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 155;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 156;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 157;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 158;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 159;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 160;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 161;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 162;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 163;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 164;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_RR_leg}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; -1.438651,-0.139216,-3.633328;;,
+ 1;3; -1.438651,-0.139216,-3.633328;;,
+ 2;3; -1.438651,-0.139216,-3.633328;;,
+ 3;3; -1.438651,-0.139216,-3.633328;;,
+ 4;3; -1.438651,-0.139216,-3.633328;;,
+ 5;3; -1.438651,-0.139216,-3.633328;;,
+ 6;3; -1.438651,-0.139216,-3.633328;;,
+ 7;3; -1.438651,-0.139216,-3.633328;;,
+ 8;3; -1.438651,-0.139216,-3.633328;;,
+ 9;3; -1.438651,-0.139216,-3.633328;;,
+ 10;3; -1.438651,-0.139216,-3.633328;;,
+ 11;3; -1.438651,-0.139216,-3.633328;;,
+ 12;3; -1.438651,-0.139216,-3.633328;;,
+ 13;3; -1.438651,-0.139216,-3.633328;;,
+ 14;3; -1.438651,-0.139216,-3.633328;;,
+ 15;3; -1.438651,-0.139216,-3.633328;;,
+ 16;3; -1.438651,-0.139216,-3.633328;;,
+ 17;3; -1.438651,-0.139216,-3.633328;;,
+ 18;3; -1.438651,-0.139216,-3.633328;;,
+ 19;3; -1.438651,-0.139216,-3.633328;;,
+ 20;3; -1.438651,-0.139216,-3.633328;;,
+ 21;3; -1.438651,-0.139216,-3.633328;;,
+ 22;3; -1.438651,-0.139216,-3.633328;;,
+ 23;3; -1.438651,-0.139216,-3.633328;;,
+ 24;3; -1.438651,-0.139216,-3.633328;;,
+ 25;3; -1.438651,-0.139216,-3.633328;;,
+ 26;3; -1.438651,-0.139216,-3.633328;;,
+ 27;3; -1.438651,-0.139216,-3.633328;;,
+ 28;3; -1.438651,-0.139216,-3.633328;;,
+ 29;3; -1.438651,-0.139216,-3.633328;;,
+ 30;3; -1.438651,-0.139216,-3.633328;;,
+ 31;3; -1.438651,-0.139216,-3.633328;;,
+ 32;3; -1.438651,-0.139216,-3.633328;;,
+ 33;3; -1.438651,-0.139216,-3.633328;;,
+ 34;3; -1.438651,-0.139216,-3.633328;;,
+ 35;3; -1.438651,-0.139216,-3.633328;;,
+ 36;3; -1.438651,-0.139216,-3.633328;;,
+ 37;3; -1.438651,-0.139216,-3.633328;;,
+ 38;3; -1.438651,-0.139216,-3.633328;;,
+ 39;3; -1.438651,-0.139216,-3.633328;;,
+ 40;3; -1.438651,-0.139216,-3.633328;;,
+ 41;3; -1.438651,-0.139216,-3.633328;;,
+ 42;3; -1.438651,-0.139216,-3.633328;;,
+ 43;3; -1.438651,-0.139216,-3.633328;;,
+ 44;3; -1.438651,-0.139216,-3.633328;;,
+ 45;3; -1.438651,-0.139216,-3.633328;;,
+ 46;3; -1.438651,-0.139216,-3.633328;;,
+ 47;3; -1.438651,-0.139216,-3.633328;;,
+ 48;3; -1.438651,-0.139216,-3.633328;;,
+ 49;3; -1.438651,-0.139216,-3.633328;;,
+ 50;3; -1.438651,-0.139216,-3.633328;;,
+ 51;3; -1.438651,-0.139216,-3.633328;;,
+ 52;3; -1.438651,-0.139216,-3.633328;;,
+ 53;3; -1.438651,-0.139216,-3.633328;;,
+ 54;3; -1.438651,-0.139216,-3.633328;;,
+ 55;3; -1.438651,-0.139216,-3.633328;;,
+ 56;3; -1.438651,-0.139216,-3.633328;;,
+ 57;3; -1.438651,-0.139216,-3.633328;;,
+ 58;3; -1.438651,-0.139216,-3.633328;;,
+ 59;3; -1.438651,-0.139216,-3.633328;;,
+ 60;3; -1.438651,-0.139216,-3.633328;;,
+ 61;3; -1.438651,-0.139216,-3.633328;;,
+ 62;3; -1.438651,-0.139216,-3.633328;;,
+ 63;3; -1.438651,-0.139216,-3.633328;;,
+ 64;3; -1.438651,-0.139216,-3.633328;;,
+ 65;3; -1.438651,-0.139216,-3.633328;;,
+ 66;3; -1.438651,-0.139216,-3.633328;;,
+ 67;3; -1.438651,-0.139216,-3.633328;;,
+ 68;3; -1.438651,-0.139216,-3.633328;;,
+ 69;3; -1.438651,-0.139216,-3.633328;;,
+ 70;3; -1.438651,-0.139216,-3.633328;;,
+ 71;3; -1.438651,-0.139216,-3.633328;;,
+ 72;3; -1.438651,-0.139216,-3.633328;;,
+ 73;3; -1.438651,-0.139216,-3.633328;;,
+ 74;3; -1.438651,-0.139216,-3.633328;;,
+ 75;3; -1.438651,-0.139216,-3.633328;;,
+ 76;3; -1.438651,-0.139216,-3.633328;;,
+ 77;3; -1.438651,-0.139216,-3.633328;;,
+ 78;3; -1.438651,-0.139216,-3.633328;;,
+ 79;3; -1.438651,-0.139216,-3.633328;;,
+ 80;3; -1.438651,-0.139216,-3.633328;;,
+ 81;3; -1.438651,-0.139216,-3.633328;;,
+ 82;3; -1.438651,-0.139216,-3.633328;;,
+ 83;3; -1.438651,-0.139216,-3.633328;;,
+ 84;3; -1.438651,-0.139216,-3.633328;;,
+ 85;3; -1.438651,-0.139216,-3.633328;;,
+ 86;3; -1.438651,-0.139216,-3.633328;;,
+ 87;3; -1.438651,-0.139216,-3.633328;;,
+ 88;3; -1.438651,-0.139216,-3.633328;;,
+ 89;3; -1.438651,-0.139216,-3.633328;;,
+ 90;3; -1.438651,-0.139216,-3.633328;;,
+ 91;3; -1.438651,-0.139216,-3.633328;;,
+ 92;3; -1.438651,-0.139216,-3.633328;;,
+ 93;3; -1.438651,-0.139216,-3.633328;;,
+ 94;3; -1.438651,-0.139216,-3.633328;;,
+ 95;3; -1.438651,-0.139216,-3.633328;;,
+ 96;3; -1.438651,-0.139216,-3.633328;;,
+ 97;3; -1.438651,-0.139216,-3.633328;;,
+ 98;3; -1.438651,-0.139216,-3.633328;;,
+ 99;3; -1.438651,-0.139216,-3.633328;;,
+ 100;3; -1.438651,-0.139216,-3.633328;;,
+ 101;3; -1.438651,-0.139216,-3.633328;;,
+ 102;3; -1.438651,-0.139216,-3.633328;;,
+ 103;3; -1.438651,-0.139216,-3.633328;;,
+ 104;3; -1.438651,-0.139216,-3.633328;;,
+ 105;3; -1.438651,-0.139216,-3.633328;;,
+ 106;3; -1.438651,-0.139216,-3.633328;;,
+ 107;3; -1.438651,-0.139216,-3.633328;;,
+ 108;3; -1.438651,-0.139216,-3.633328;;,
+ 109;3; -1.438651,-0.139216,-3.633328;;,
+ 110;3; -1.438651,-0.139216,-3.633328;;,
+ 111;3; -1.438651,-0.139216,-3.633328;;,
+ 112;3; -1.438651,-0.139216,-3.633328;;,
+ 113;3; -1.438651,-0.139216,-3.633328;;,
+ 114;3; -1.438651,-0.139216,-3.633328;;,
+ 115;3; -1.438651,-0.139216,-3.633328;;,
+ 116;3; -1.438651,-0.139216,-3.633328;;,
+ 117;3; -1.438651,-0.139216,-3.633328;;,
+ 118;3; -1.438651,-0.139216,-3.633328;;,
+ 119;3; -1.438651,-0.139216,-3.633328;;,
+ 120;3; -1.438651,-0.139216,-3.633328;;,
+ 121;3; -1.438651,-0.139216,-3.633328;;,
+ 122;3; -1.438651,-0.139216,-3.633328;;,
+ 123;3; -1.438651,-0.139216,-3.633328;;,
+ 124;3; -1.438651,-0.139216,-3.633328;;,
+ 125;3; -1.438651,-0.139216,-3.633328;;,
+ 126;3; -1.438651,-0.139216,-3.633328;;,
+ 127;3; -1.438651,-0.139216,-3.633328;;,
+ 128;3; -1.438651,-0.139216,-3.633328;;,
+ 129;3; -1.438651,-0.139216,-3.633328;;,
+ 130;3; -1.438651,-0.139216,-3.633328;;,
+ 131;3; -1.438651,-0.139216,-3.633328;;,
+ 132;3; -1.438651,-0.139216,-3.633328;;,
+ 133;3; -1.438651,-0.139216,-3.633328;;,
+ 134;3; -1.438651,-0.139216,-3.633328;;,
+ 135;3; -1.438651,-0.139216,-3.633328;;,
+ 136;3; -1.438651,-0.139216,-3.633328;;,
+ 137;3; -1.438651,-0.139216,-3.633328;;,
+ 138;3; -1.438651,-0.139216,-3.633328;;,
+ 139;3; -1.438651,-0.139216,-3.633328;;,
+ 140;3; -1.438651,-0.139216,-3.633328;;,
+ 141;3; -1.438651,-0.139216,-3.633328;;,
+ 142;3; -1.438651,-0.139216,-3.633328;;,
+ 143;3; -1.438651,-0.139216,-3.633328;;,
+ 144;3; -1.438651,-0.139216,-3.633328;;,
+ 145;3; -1.438651,-0.139216,-3.633328;;,
+ 146;3; -1.438651,-0.139216,-3.633328;;,
+ 147;3; -1.438651,-0.139216,-3.633328;;,
+ 148;3; -1.438651,-0.139216,-3.633328;;,
+ 149;3; -1.438651,-0.139216,-3.633328;;,
+ 150;3; -1.438651,-0.139216,-3.633328;;,
+ 151;3; -1.438651,-0.139216,-3.633328;;,
+ 152;3; -1.438651,-0.139216,-3.633328;;,
+ 153;3; -1.438651,-0.139216,-3.633328;;,
+ 154;3; -1.438651,-0.139216,-3.633328;;,
+ 155;3; -1.438651,-0.139216,-3.633328;;,
+ 156;3; -1.438651,-0.139216,-3.633328;;,
+ 157;3; -1.438651,-0.139216,-3.633328;;,
+ 158;3; -1.438651,-0.139216,-3.633328;;,
+ 159;3; -1.438651,-0.139216,-3.633328;;,
+ 160;3; -1.438651,-0.139216,-3.633328;;,
+ 161;3; -1.438651,-0.139216,-3.633328;;,
+ 162;3; -1.438651,-0.139216,-3.633328;;,
+ 163;3; -1.438651,-0.139216,-3.633328;;,
+ 164;3; -1.438651,-0.139216,-3.633328;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 82;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 83;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 84;4; -0.235816, 0.968955,-0.000000,-0.000000;;,
+ 85;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 86;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 87;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 88;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 89;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926,-0.000000,-0.000000;;,
+ 91;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 92;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 93;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 94;4; 0.247343, 0.965926, 0.000000,-0.000000;;,
+ 95;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 96;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 97;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 98;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 99;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 101;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 102;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 103;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 104;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 105;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 106;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 107;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 108;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 109;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 110;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 111;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 112;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 113;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 114;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 115;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 116;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 117;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 118;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 119;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 120;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 121;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 122;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 123;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 124;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 125;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 126;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 127;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 128;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 129;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 130;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 131;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 132;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 133;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 134;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 135;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 136;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 137;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 138;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 139;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 140;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 141;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 142;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 143;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 144;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 145;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 146;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 147;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 148;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 149;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 150;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 151;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 152;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 153;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 154;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 155;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 156;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 157;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 158;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 159;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 160;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 161;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 162;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 163;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 164;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Head}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; -0.000000, 4.052525, 3.788038;;,
+ 1;3; -0.000000, 4.052525, 3.788038;;,
+ 2;3; -0.000000, 4.052525, 3.788038;;,
+ 3;3; -0.000000, 4.052525, 3.788038;;,
+ 4;3; -0.000000, 4.052525, 3.788038;;,
+ 5;3; -0.000000, 4.052525, 3.788038;;,
+ 6;3; -0.000000, 4.052525, 3.788038;;,
+ 7;3; -0.000000, 4.052525, 3.788038;;,
+ 8;3; -0.000000, 4.052525, 3.788038;;,
+ 9;3; -0.000000, 4.052525, 3.788038;;,
+ 10;3; -0.000000, 4.052525, 3.788038;;,
+ 11;3; -0.000000, 4.052525, 3.788038;;,
+ 12;3; -0.000000, 4.052525, 3.788038;;,
+ 13;3; -0.000000, 4.052525, 3.788038;;,
+ 14;3; -0.000000, 4.052525, 3.788038;;,
+ 15;3; -0.000000, 4.052525, 3.788038;;,
+ 16;3; -0.000000, 4.052525, 3.788038;;,
+ 17;3; -0.000000, 4.052525, 3.788038;;,
+ 18;3; -0.000000, 4.052525, 3.788038;;,
+ 19;3; -0.000000, 4.052525, 3.788038;;,
+ 20;3; -0.000000, 4.052525, 3.788038;;,
+ 21;3; -0.000000, 4.052525, 3.788038;;,
+ 22;3; -0.000000, 4.052525, 3.788038;;,
+ 23;3; -0.000000, 4.052525, 3.788038;;,
+ 24;3; -0.000000, 4.052525, 3.788038;;,
+ 25;3; -0.000000, 4.052525, 3.788038;;,
+ 26;3; -0.000000, 4.052525, 3.788038;;,
+ 27;3; -0.000000, 4.052525, 3.788038;;,
+ 28;3; -0.000000, 4.052525, 3.788038;;,
+ 29;3; -0.000000, 4.052525, 3.788038;;,
+ 30;3; -0.000000, 4.052525, 3.788038;;,
+ 31;3; -0.000000, 4.052525, 3.788038;;,
+ 32;3; -0.000000, 4.052525, 3.788038;;,
+ 33;3; -0.000000, 4.052525, 3.788038;;,
+ 34;3; -0.000000, 4.052525, 3.788038;;,
+ 35;3; -0.000000, 4.052525, 3.788038;;,
+ 36;3; -0.000000, 4.052525, 3.788038;;,
+ 37;3; -0.000000, 4.052525, 3.788038;;,
+ 38;3; -0.000000, 4.052525, 3.788038;;,
+ 39;3; -0.000000, 4.052525, 3.788038;;,
+ 40;3; -0.000000, 4.052525, 3.788038;;,
+ 41;3; -0.000000, 4.052525, 3.788038;;,
+ 42;3; -0.000000, 4.052525, 3.788038;;,
+ 43;3; -0.000000, 4.052525, 3.788038;;,
+ 44;3; -0.000000, 4.052525, 3.788038;;,
+ 45;3; -0.000000, 4.052525, 3.788038;;,
+ 46;3; -0.000000, 4.052525, 3.788038;;,
+ 47;3; -0.000000, 4.052525, 3.788038;;,
+ 48;3; -0.000000, 4.052525, 3.788038;;,
+ 49;3; -0.000000, 4.052525, 3.788038;;,
+ 50;3; -0.000000, 4.052525, 3.788038;;,
+ 51;3; -0.000000, 4.052525, 3.788038;;,
+ 52;3; -0.000000, 4.052525, 3.788038;;,
+ 53;3; -0.000000, 4.052525, 3.788038;;,
+ 54;3; -0.000000, 4.052525, 3.788038;;,
+ 55;3; -0.000000, 4.052525, 3.788038;;,
+ 56;3; -0.000000, 4.052525, 3.788038;;,
+ 57;3; -0.000000, 4.052525, 3.788038;;,
+ 58;3; -0.000000, 4.052525, 3.788038;;,
+ 59;3; -0.000000, 4.052525, 3.788038;;,
+ 60;3; -0.000000, 4.052525, 3.788038;;,
+ 61;3; -0.000000, 4.052525, 3.788038;;,
+ 62;3; -0.000000, 4.052525, 3.788038;;,
+ 63;3; -0.000000, 4.052525, 3.788038;;,
+ 64;3; -0.000000, 4.052525, 3.788038;;,
+ 65;3; -0.000000, 4.052525, 3.788038;;,
+ 66;3; -0.000000, 4.052525, 3.788038;;,
+ 67;3; -0.000000, 4.052525, 3.788038;;,
+ 68;3; -0.000000, 4.052525, 3.788038;;,
+ 69;3; -0.000000, 4.052525, 3.788038;;,
+ 70;3; -0.000000, 4.052525, 3.788038;;,
+ 71;3; -0.000000, 4.052525, 3.788038;;,
+ 72;3; -0.000000, 4.052525, 3.788038;;,
+ 73;3; -0.000000, 4.052525, 3.788038;;,
+ 74;3; -0.000000, 4.052525, 3.788038;;,
+ 75;3; -0.000000, 4.052525, 3.788038;;,
+ 76;3; -0.000000, 4.052525, 3.788038;;,
+ 77;3; -0.000000, 4.052525, 3.788038;;,
+ 78;3; -0.000000, 4.052525, 3.788038;;,
+ 79;3; -0.000000, 4.052525, 3.788038;;,
+ 80;3; -0.000000, 4.052525, 3.788038;;,
+ 81;3; -0.000000, 4.052525, 3.788038;;,
+ 82;3; -0.000000, 4.052525, 3.788038;;,
+ 83;3; -0.000000, 4.052525, 3.788038;;,
+ 84;3; -0.000000, 4.052525, 3.788038;;,
+ 85;3; -0.000000, 4.052525, 3.788038;;,
+ 86;3; -0.000000, 4.052525, 3.788038;;,
+ 87;3; -0.000000, 4.052525, 3.788038;;,
+ 88;3; -0.000000, 4.052525, 3.788038;;,
+ 89;3; -0.000000, 4.052525, 3.788038;;,
+ 90;3; -0.000000, 4.052525, 3.788038;;,
+ 91;3; -0.000000, 4.052525, 3.788038;;,
+ 92;3; -0.000000, 4.052525, 3.788038;;,
+ 93;3; -0.000000, 4.052525, 3.788038;;,
+ 94;3; -0.000000, 4.052525, 3.788038;;,
+ 95;3; -0.000000, 4.052525, 3.788038;;,
+ 96;3; -0.000000, 4.052525, 3.788038;;,
+ 97;3; -0.000000, 4.052525, 3.788038;;,
+ 98;3; -0.000000, 4.052525, 3.788038;;,
+ 99;3; -0.000000, 4.052525, 3.788038;;,
+ 100;3; -0.000000, 4.052525, 3.788038;;,
+ 101;3; -0.000000, 4.052525, 3.788038;;,
+ 102;3; -0.000000, 4.052525, 3.788038;;,
+ 103;3; -0.000000, 4.052525, 3.788038;;,
+ 104;3; -0.000000, 4.052525, 3.788038;;,
+ 105;3; -0.000000, 4.052525, 3.788038;;,
+ 106;3; -0.000000, 4.052525, 3.788038;;,
+ 107;3; -0.000000, 4.052525, 3.788038;;,
+ 108;3; -0.000000, 4.052525, 3.788038;;,
+ 109;3; -0.000000, 4.052525, 3.788038;;,
+ 110;3; -0.000000, 4.052525, 3.788038;;,
+ 111;3; -0.000000, 4.052525, 3.788038;;,
+ 112;3; -0.000000, 4.052525, 3.788038;;,
+ 113;3; -0.000000, 4.052525, 3.788038;;,
+ 114;3; -0.000000, 4.052525, 3.788038;;,
+ 115;3; -0.000000, 4.052525, 3.788038;;,
+ 116;3; -0.000000, 4.052525, 3.788038;;,
+ 117;3; -0.000000, 4.052525, 3.788038;;,
+ 118;3; -0.000000, 4.052525, 3.788038;;,
+ 119;3; -0.000000, 4.052525, 3.788038;;,
+ 120;3; -0.000000, 4.052525, 3.788038;;,
+ 121;3; -0.000000, 4.052525, 3.788038;;,
+ 122;3; -0.000000, 4.052525, 3.788038;;,
+ 123;3; -0.000000, 4.052525, 3.788038;;,
+ 124;3; -0.000000, 4.052525, 3.788038;;,
+ 125;3; -0.000000, 4.052525, 3.788038;;,
+ 126;3; -0.000000, 4.052525, 3.788038;;,
+ 127;3; -0.000000, 4.052525, 3.788038;;,
+ 128;3; -0.000000, 4.052525, 3.788038;;,
+ 129;3; -0.000000, 4.052525, 3.788038;;,
+ 130;3; -0.000000, 4.052525, 3.788038;;,
+ 131;3; -0.000000, 4.052525, 3.788038;;,
+ 132;3; -0.000000, 4.052525, 3.788038;;,
+ 133;3; -0.000000, 4.052525, 3.788038;;,
+ 134;3; -0.000000, 4.052525, 3.788038;;,
+ 135;3; -0.000000, 4.052525, 3.788038;;,
+ 136;3; -0.000000, 4.052525, 3.788038;;,
+ 137;3; -0.000000, 4.052525, 3.788038;;,
+ 138;3; -0.000000, 4.052525, 3.788038;;,
+ 139;3; -0.000000, 4.052525, 3.788038;;,
+ 140;3; -0.000000, 4.052525, 3.788038;;,
+ 141;3; -0.000000, 4.052525, 3.788038;;,
+ 142;3; -0.000000, 4.052525, 3.788038;;,
+ 143;3; -0.000000, 4.052525, 3.788038;;,
+ 144;3; -0.000000, 4.052525, 3.788038;;,
+ 145;3; -0.000000, 4.052525, 3.788038;;,
+ 146;3; -0.000000, 4.052525, 3.788038;;,
+ 147;3; -0.000000, 4.052525, 3.788038;;,
+ 148;3; -0.000000, 4.052525, 3.788038;;,
+ 149;3; -0.000000, 4.052525, 3.788038;;,
+ 150;3; -0.000000, 4.052525, 3.788038;;,
+ 151;3; -0.000000, 4.052525, 3.788038;;,
+ 152;3; -0.000000, 4.052525, 3.788038;;,
+ 153;3; -0.000000, 4.052525, 3.788038;;,
+ 154;3; -0.000000, 4.052525, 3.788038;;,
+ 155;3; -0.000000, 4.052525, 3.788038;;,
+ 156;3; -0.000000, 4.052525, 3.788038;;,
+ 157;3; -0.000000, 4.052525, 3.788038;;,
+ 158;3; -0.000000, 4.052525, 3.788038;;,
+ 159;3; -0.000000, 4.052525, 3.788038;;,
+ 160;3; -0.000000, 4.052525, 3.788038;;,
+ 161;3; -0.000000, 4.052525, 3.788038;;,
+ 162;3; -0.000000, 4.052525, 3.788038;;,
+ 163;3; -0.000000, 4.052525, 3.788038;;,
+ 164;3; -0.000000, 4.052525, 3.788038;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 1;4; 0.000000, 0.000000, 0.706989, 0.707223;;,
+ 2;4; 0.000000, 0.000000, 0.706631, 0.707576;;,
+ 3;4; 0.000000, 0.000000, 0.706034, 0.708164;;,
+ 4;4; 0.000000, 0.000000, 0.705202, 0.708983;;,
+ 5;4; 0.000000, 0.000000, 0.704147, 0.710022;;,
+ 6;4; 0.000000, 0.000000, 0.702890, 0.711259;;,
+ 7;4; 0.000000, 0.000000, 0.701461, 0.712663;;,
+ 8;4; 0.000000, 0.000000, 0.699901, 0.714196;;,
+ 9;4; 0.000000, 0.000000, 0.698257, 0.715808;;,
+ 10;4; 0.000000, 0.000000, 0.696584, 0.717447;;,
+ 11;4; 0.000000, 0.000000, 0.694937, 0.719057;;,
+ 12;4; 0.000000, 0.000000, 0.693372, 0.720585;;,
+ 13;4; 0.000000, 0.000000, 0.691936, 0.721982;;,
+ 14;4; 0.000000, 0.000000, 0.690669, 0.723209;;,
+ 15;4; 0.000000, 0.000000, 0.689603, 0.724237;;,
+ 16;4; 0.000000, 0.000000, 0.688758, 0.725043;;,
+ 17;4; 0.000000, 0.000000, 0.688146, 0.725617;;,
+ 18;4; 0.000000, 0.000000, 0.687773, 0.725954;;,
+ 19;4; 0.000000, 0.000000, 0.687638, 0.726054;;,
+ 20;4; 0.000000, 0.000000, 0.687896, 0.725759;;,
+ 21;4; 0.000000, 0.000000, 0.688709, 0.724905;;,
+ 22;4; 0.000000, 0.000000, 0.690081, 0.723488;;,
+ 23;4; 0.000000, 0.000000, 0.692002, 0.721519;;,
+ 24;4; 0.000000, 0.000000, 0.694448, 0.719020;;,
+ 25;4; 0.000000, 0.000000, 0.697377, 0.716035;;,
+ 26;4; 0.000000, 0.000000, 0.700729, 0.712626;;,
+ 27;4; 0.000000, 0.000000, 0.704421, 0.708875;;,
+ 28;4; 0.000000, 0.000000, 0.708352, 0.704885;;,
+ 29;4; 0.000000, 0.000000, 0.712408, 0.700772;;,
+ 30;4; 0.000000, 0.000000, 0.716464, 0.696660;;,
+ 31;4; 0.000000, 0.000000, 0.720399, 0.692673;;,
+ 32;4; 0.000000, 0.000000, 0.724097, 0.688928;;,
+ 33;4; 0.000000, 0.000000, 0.727457, 0.685527;;,
+ 34;4; 0.000000, 0.000000, 0.730396, 0.682552;;,
+ 35;4; 0.000000, 0.000000, 0.732854, 0.680065;;,
+ 36;4; 0.000000, 0.000000, 0.734788, 0.678108;;,
+ 37;4; 0.000000, 0.000000, 0.736174, 0.676706;;,
+ 38;4; 0.000000, 0.000000, 0.737003, 0.675868;;,
+ 39;4; 0.000000, 0.000000, 0.737277, 0.675590;;,
+ 40;4; 0.000000, 0.000000, 0.737111, 0.675764;;,
+ 41;4; 0.000000, 0.000000, 0.736609, 0.676289;;,
+ 42;4; 0.000000, 0.000000, 0.735768, 0.677167;;,
+ 43;4; 0.000000, 0.000000, 0.734596, 0.678392;;,
+ 44;4; 0.000000, 0.000000, 0.733105, 0.679949;;,
+ 45;4; 0.000000, 0.000000, 0.731323, 0.681811;;,
+ 46;4; 0.000000, 0.000000, 0.729285, 0.683939;;,
+ 47;4; 0.000000, 0.000000, 0.727042, 0.686283;;,
+ 48;4; 0.000000, 0.000000, 0.724654, 0.688777;;,
+ 49;4; 0.000000, 0.000000, 0.722192, 0.691349;;,
+ 50;4; 0.000000, 0.000000, 0.719730, 0.693920;;,
+ 51;4; 0.000000, 0.000000, 0.717343, 0.696414;;,
+ 52;4; 0.000000, 0.000000, 0.715099, 0.698758;;,
+ 53;4; 0.000000, 0.000000, 0.713062, 0.700886;;,
+ 54;4; 0.000000, 0.000000, 0.711279, 0.702749;;,
+ 55;4; 0.000000, 0.000000, 0.709789, 0.704305;;,
+ 56;4; 0.000000, 0.000000, 0.708616, 0.705530;;,
+ 57;4; 0.000000, 0.000000, 0.707776, 0.706408;;,
+ 58;4; 0.000000, 0.000000, 0.707273, 0.706933;;,
+ 59;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 60;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 61;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 62;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 63;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 64;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 65;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 66;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 67;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 68;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 69;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 70;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 71;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 72;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 73;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 74;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 75;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 76;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 77;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 78;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 79;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 80;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 81;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 82;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 83;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 84;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 85;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 86;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 87;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 88;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 89;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 90;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 91;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 92;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 93;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 94;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 95;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 96;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 97;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 98;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 99;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 100;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 101;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 102;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 103;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 104;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 105;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 106;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 107;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 108;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 109;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 110;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 111;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 112;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 113;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 114;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 115;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 116;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 117;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 118;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 119;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 120;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 121;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 122;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 123;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 124;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 125;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 126;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 127;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 128;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 129;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 130;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 131;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 132;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 133;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 134;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 135;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 136;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 137;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 138;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 139;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 140;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 141;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 142;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 143;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 144;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 145;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 146;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 147;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 148;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 149;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 150;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 151;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 152;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 153;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 154;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 155;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 156;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 157;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 158;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 159;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 160;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 161;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 162;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 163;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 164;4; 0.000000, 0.000000, 0.707107, 0.707107;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {sheep}
+ AnimationKey { //Position
+ 2;
+ 165;
+ 0;3; 0.000000, 0.000000,-0.000000;;,
+ 1;3; 0.000000, 0.000000,-0.000000;;,
+ 2;3; 0.000000, 0.000000,-0.000000;;,
+ 3;3; 0.000000, 0.000000,-0.000000;;,
+ 4;3; 0.000000, 0.000000,-0.000000;;,
+ 5;3; 0.000000, 0.000000,-0.000000;;,
+ 6;3; 0.000000, 0.000000,-0.000000;;,
+ 7;3; 0.000000, 0.000000,-0.000000;;,
+ 8;3; 0.000000, 0.000000,-0.000000;;,
+ 9;3; 0.000000, 0.000000,-0.000000;;,
+ 10;3; 0.000000, 0.000000,-0.000000;;,
+ 11;3; 0.000000, 0.000000,-0.000000;;,
+ 12;3; 0.000000, 0.000000,-0.000000;;,
+ 13;3; 0.000000, 0.000000,-0.000000;;,
+ 14;3; 0.000000, 0.000000,-0.000000;;,
+ 15;3; 0.000000, 0.000000,-0.000000;;,
+ 16;3; 0.000000, 0.000000,-0.000000;;,
+ 17;3; 0.000000, 0.000000,-0.000000;;,
+ 18;3; 0.000000, 0.000000,-0.000000;;,
+ 19;3; 0.000000, 0.000000,-0.000000;;,
+ 20;3; 0.000000, 0.000000,-0.000000;;,
+ 21;3; 0.000000, 0.000000,-0.000000;;,
+ 22;3; 0.000000, 0.000000,-0.000000;;,
+ 23;3; 0.000000, 0.000000,-0.000000;;,
+ 24;3; 0.000000, 0.000000,-0.000000;;,
+ 25;3; 0.000000, 0.000000,-0.000000;;,
+ 26;3; 0.000000, 0.000000,-0.000000;;,
+ 27;3; 0.000000, 0.000000,-0.000000;;,
+ 28;3; 0.000000, 0.000000,-0.000000;;,
+ 29;3; 0.000000, 0.000000,-0.000000;;,
+ 30;3; 0.000000, 0.000000,-0.000000;;,
+ 31;3; 0.000000, 0.000000,-0.000000;;,
+ 32;3; 0.000000, 0.000000,-0.000000;;,
+ 33;3; 0.000000, 0.000000,-0.000000;;,
+ 34;3; 0.000000, 0.000000,-0.000000;;,
+ 35;3; 0.000000, 0.000000,-0.000000;;,
+ 36;3; 0.000000, 0.000000,-0.000000;;,
+ 37;3; 0.000000, 0.000000,-0.000000;;,
+ 38;3; 0.000000, 0.000000,-0.000000;;,
+ 39;3; 0.000000, 0.000000,-0.000000;;,
+ 40;3; 0.000000, 0.000000,-0.000000;;,
+ 41;3; 0.000000, 0.000000,-0.000000;;,
+ 42;3; 0.000000, 0.000000,-0.000000;;,
+ 43;3; 0.000000, 0.000000,-0.000000;;,
+ 44;3; 0.000000, 0.000000,-0.000000;;,
+ 45;3; 0.000000, 0.000000,-0.000000;;,
+ 46;3; 0.000000, 0.000000,-0.000000;;,
+ 47;3; 0.000000, 0.000000,-0.000000;;,
+ 48;3; 0.000000, 0.000000,-0.000000;;,
+ 49;3; 0.000000, 0.000000,-0.000000;;,
+ 50;3; 0.000000, 0.000000,-0.000000;;,
+ 51;3; 0.000000, 0.000000,-0.000000;;,
+ 52;3; 0.000000, 0.000000,-0.000000;;,
+ 53;3; 0.000000, 0.000000,-0.000000;;,
+ 54;3; 0.000000, 0.000000,-0.000000;;,
+ 55;3; 0.000000, 0.000000,-0.000000;;,
+ 56;3; 0.000000, 0.000000,-0.000000;;,
+ 57;3; 0.000000, 0.000000,-0.000000;;,
+ 58;3; 0.000000, 0.000000,-0.000000;;,
+ 59;3; 0.000000, 0.000000,-0.000000;;,
+ 60;3; 0.000000, 0.000000,-0.000000;;,
+ 61;3; 0.000000, 0.000000,-0.000000;;,
+ 62;3; 0.000000, 0.000000,-0.000000;;,
+ 63;3; 0.000000, 0.000000,-0.000000;;,
+ 64;3; 0.000000, 0.000000,-0.000000;;,
+ 65;3; 0.000000, 0.000000,-0.000000;;,
+ 66;3; 0.000000, 0.000000,-0.000000;;,
+ 67;3; 0.000000, 0.000000,-0.000000;;,
+ 68;3; 0.000000, 0.000000,-0.000000;;,
+ 69;3; 0.000000, 0.000000,-0.000000;;,
+ 70;3; 0.000000, 0.000000,-0.000000;;,
+ 71;3; 0.000000, 0.000000,-0.000000;;,
+ 72;3; 0.000000, 0.000000,-0.000000;;,
+ 73;3; 0.000000, 0.000000,-0.000000;;,
+ 74;3; 0.000000, 0.000000,-0.000000;;,
+ 75;3; 0.000000, 0.000000,-0.000000;;,
+ 76;3; 0.000000, 0.000000,-0.000000;;,
+ 77;3; 0.000000, 0.000000,-0.000000;;,
+ 78;3; 0.000000, 0.000000,-0.000000;;,
+ 79;3; 0.000000, 0.000000,-0.000000;;,
+ 80;3; 0.000000, 0.000000,-0.000000;;,
+ 81;3; 0.000000, 0.000000,-0.000000;;,
+ 82;3; 0.000000, 0.000000,-0.000000;;,
+ 83;3; 0.000000, 0.000000,-0.000000;;,
+ 84;3; 0.000000, 0.000000,-0.000000;;,
+ 85;3; 0.000000, 0.000000,-0.000000;;,
+ 86;3; 0.000000, 0.000000,-0.000000;;,
+ 87;3; 0.000000, 0.000000,-0.000000;;,
+ 88;3; 0.000000, 0.000000,-0.000000;;,
+ 89;3; 0.000000, 0.000000,-0.000000;;,
+ 90;3; 0.000000, 0.000000,-0.000000;;,
+ 91;3; 0.000000, 0.000000,-0.000000;;,
+ 92;3; 0.000000, 0.000000,-0.000000;;,
+ 93;3; 0.000000, 0.000000,-0.000000;;,
+ 94;3; 0.000000, 0.000000,-0.000000;;,
+ 95;3; 0.000000, 0.000000,-0.000000;;,
+ 96;3; 0.000000, 0.000000,-0.000000;;,
+ 97;3; 0.000000, 0.000000,-0.000000;;,
+ 98;3; 0.000000, 0.000000,-0.000000;;,
+ 99;3; 0.000000, 0.000000,-0.000000;;,
+ 100;3; 0.000000, 0.000000,-0.000000;;,
+ 101;3; 0.000000, 0.000000,-0.000000;;,
+ 102;3; 0.000000, 0.000000,-0.000000;;,
+ 103;3; 0.000000, 0.000000,-0.000000;;,
+ 104;3; 0.000000, 0.000000,-0.000000;;,
+ 105;3; 0.000000, 0.000000,-0.000000;;,
+ 106;3; 0.000000, 0.000000,-0.000000;;,
+ 107;3; 0.000000, 0.000000,-0.000000;;,
+ 108;3; 0.000000, 0.000000,-0.000000;;,
+ 109;3; 0.000000, 0.000000,-0.000000;;,
+ 110;3; 0.000000, 0.000000,-0.000000;;,
+ 111;3; 0.000000, 0.000000,-0.000000;;,
+ 112;3; 0.000000, 0.000000,-0.000000;;,
+ 113;3; 0.000000, 0.000000,-0.000000;;,
+ 114;3; 0.000000, 0.000000,-0.000000;;,
+ 115;3; 0.000000, 0.000000,-0.000000;;,
+ 116;3; 0.000000, 0.000000,-0.000000;;,
+ 117;3; 0.000000, 0.000000,-0.000000;;,
+ 118;3; 0.000000, 0.000000,-0.000000;;,
+ 119;3; 0.000000, 0.000000,-0.000000;;,
+ 120;3; 0.000000, 0.000000,-0.000000;;,
+ 121;3; 0.000000, 0.000000,-0.000000;;,
+ 122;3; 0.000000, 0.000000,-0.000000;;,
+ 123;3; 0.000000, 0.000000,-0.000000;;,
+ 124;3; 0.000000, 0.000000,-0.000000;;,
+ 125;3; 0.000000, 0.000000,-0.000000;;,
+ 126;3; 0.000000, 0.000000,-0.000000;;,
+ 127;3; 0.000000, 0.000000,-0.000000;;,
+ 128;3; 0.000000, 0.000000,-0.000000;;,
+ 129;3; 0.000000, 0.000000,-0.000000;;,
+ 130;3; 0.000000, 0.000000,-0.000000;;,
+ 131;3; 0.000000, 0.000000,-0.000000;;,
+ 132;3; 0.000000, 0.000000,-0.000000;;,
+ 133;3; 0.000000, 0.000000,-0.000000;;,
+ 134;3; 0.000000, 0.000000,-0.000000;;,
+ 135;3; 0.000000, 0.000000,-0.000000;;,
+ 136;3; 0.000000, 0.000000,-0.000000;;,
+ 137;3; 0.000000, 0.000000,-0.000000;;,
+ 138;3; 0.000000, 0.000000,-0.000000;;,
+ 139;3; 0.000000, 0.000000,-0.000000;;,
+ 140;3; 0.000000, 0.000000,-0.000000;;,
+ 141;3; 0.000000, 0.000000,-0.000000;;,
+ 142;3; 0.000000, 0.000000,-0.000000;;,
+ 143;3; 0.000000, 0.000000,-0.000000;;,
+ 144;3; 0.000000, 0.000000,-0.000000;;,
+ 145;3; 0.000000, 0.000000,-0.000000;;,
+ 146;3; 0.000000, 0.000000,-0.000000;;,
+ 147;3; 0.000000, 0.000000,-0.000000;;,
+ 148;3; 0.000000, 0.000000,-0.000000;;,
+ 149;3; 0.000000, 0.000000,-0.000000;;,
+ 150;3; 0.000000, 0.000000,-0.000000;;,
+ 151;3; 0.000000, 0.000000,-0.000000;;,
+ 152;3; 0.000000, 0.000000,-0.000000;;,
+ 153;3; 0.000000, 0.000000,-0.000000;;,
+ 154;3; 0.000000, 0.000000,-0.000000;;,
+ 155;3; 0.000000, 0.000000,-0.000000;;,
+ 156;3; 0.000000, 0.000000,-0.000000;;,
+ 157;3; 0.000000, 0.000000,-0.000000;;,
+ 158;3; 0.000000, 0.000000,-0.000000;;,
+ 159;3; 0.000000, 0.000000,-0.000000;;,
+ 160;3; 0.000000, 0.000000,-0.000000;;,
+ 161;3; 0.000000, 0.000000,-0.000000;;,
+ 162;3; 0.000000, 0.000000,-0.000000;;,
+ 163;3; 0.000000, 0.000000,-0.000000;;,
+ 164;3; 0.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 165;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 101;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 102;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 103;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 104;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 105;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 106;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 107;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 108;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 109;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 110;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 111;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 112;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 113;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 114;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 115;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 116;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 117;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 118;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 119;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 120;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 121;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 122;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 123;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 124;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 125;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 126;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 127;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 128;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 129;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 130;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 131;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 132;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 133;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 134;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 135;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 136;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 137;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 138;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 139;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 140;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 141;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 142;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 143;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 144;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 145;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 146;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 147;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 148;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 149;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 150;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 151;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 152;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 153;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 154;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 155;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 156;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 157;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 158;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 159;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 160;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 161;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 162;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 163;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 164;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 165;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;,
+ 101;3; 1.000000, 1.000000, 1.000000;;,
+ 102;3; 1.000000, 1.000000, 1.000000;;,
+ 103;3; 1.000000, 1.000000, 1.000000;;,
+ 104;3; 1.000000, 1.000000, 1.000000;;,
+ 105;3; 1.000000, 1.000000, 1.000000;;,
+ 106;3; 1.000000, 1.000000, 1.000000;;,
+ 107;3; 1.000000, 1.000000, 1.000000;;,
+ 108;3; 1.000000, 1.000000, 1.000000;;,
+ 109;3; 1.000000, 1.000000, 1.000000;;,
+ 110;3; 1.000000, 1.000000, 1.000000;;,
+ 111;3; 1.000000, 1.000000, 1.000000;;,
+ 112;3; 1.000000, 1.000000, 1.000000;;,
+ 113;3; 1.000000, 1.000000, 1.000000;;,
+ 114;3; 1.000000, 1.000000, 1.000000;;,
+ 115;3; 1.000000, 1.000000, 1.000000;;,
+ 116;3; 1.000000, 1.000000, 1.000000;;,
+ 117;3; 1.000000, 1.000000, 1.000000;;,
+ 118;3; 1.000000, 1.000000, 1.000000;;,
+ 119;3; 1.000000, 1.000000, 1.000000;;,
+ 120;3; 1.000000, 1.000000, 1.000000;;,
+ 121;3; 1.000000, 1.000000, 1.000000;;,
+ 122;3; 1.000000, 1.000000, 1.000000;;,
+ 123;3; 1.000000, 1.000000, 1.000000;;,
+ 124;3; 1.000000, 1.000000, 1.000000;;,
+ 125;3; 1.000000, 1.000000, 1.000000;;,
+ 126;3; 1.000000, 1.000000, 1.000000;;,
+ 127;3; 1.000000, 1.000000, 1.000000;;,
+ 128;3; 1.000000, 1.000000, 1.000000;;,
+ 129;3; 1.000000, 1.000000, 1.000000;;,
+ 130;3; 1.000000, 1.000000, 1.000000;;,
+ 131;3; 1.000000, 1.000000, 1.000000;;,
+ 132;3; 1.000000, 1.000000, 1.000000;;,
+ 133;3; 1.000000, 1.000000, 1.000000;;,
+ 134;3; 1.000000, 1.000000, 1.000000;;,
+ 135;3; 1.000000, 1.000000, 1.000000;;,
+ 136;3; 1.000000, 1.000000, 1.000000;;,
+ 137;3; 1.000000, 1.000000, 1.000000;;,
+ 138;3; 1.000000, 1.000000, 1.000000;;,
+ 139;3; 1.000000, 1.000000, 1.000000;;,
+ 140;3; 1.000000, 1.000000, 1.000000;;,
+ 141;3; 1.000000, 1.000000, 1.000000;;,
+ 142;3; 1.000000, 1.000000, 1.000000;;,
+ 143;3; 1.000000, 1.000000, 1.000000;;,
+ 144;3; 1.000000, 1.000000, 1.000000;;,
+ 145;3; 1.000000, 1.000000, 1.000000;;,
+ 146;3; 1.000000, 1.000000, 1.000000;;,
+ 147;3; 1.000000, 1.000000, 1.000000;;,
+ 148;3; 1.000000, 1.000000, 1.000000;;,
+ 149;3; 1.000000, 1.000000, 1.000000;;,
+ 150;3; 1.000000, 1.000000, 1.000000;;,
+ 151;3; 1.000000, 1.000000, 1.000000;;,
+ 152;3; 1.000000, 1.000000, 1.000000;;,
+ 153;3; 1.000000, 1.000000, 1.000000;;,
+ 154;3; 1.000000, 1.000000, 1.000000;;,
+ 155;3; 1.000000, 1.000000, 1.000000;;,
+ 156;3; 1.000000, 1.000000, 1.000000;;,
+ 157;3; 1.000000, 1.000000, 1.000000;;,
+ 158;3; 1.000000, 1.000000, 1.000000;;,
+ 159;3; 1.000000, 1.000000, 1.000000;;,
+ 160;3; 1.000000, 1.000000, 1.000000;;,
+ 161;3; 1.000000, 1.000000, 1.000000;;,
+ 162;3; 1.000000, 1.000000, 1.000000;;,
+ 163;3; 1.000000, 1.000000, 1.000000;;,
+ 164;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/models/mobs_sheep_shaved.png b/carbone_mobs/models/mobs_sheep_shaved.png
new file mode 100644
index 0000000..d2f878c
--- /dev/null
+++ b/carbone_mobs/models/mobs_sheep_shaved.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_sheep_shaved.x b/carbone_mobs/models/mobs_sheep_shaved.x
new file mode 100755
index 0000000..fa7e17c
--- /dev/null
+++ b/carbone_mobs/models/mobs_sheep_shaved.x
@@ -0,0 +1,4592 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.041567, 0.000010, 6.045322, 1.000000;;
+ }
+ Frame Armature_Root {
+ FrameTransformMatrix {
+ -1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000,-0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.009913, 0.034322, 0.105027, 1.000000;;
+ }
+ Frame Armature_Bone_001 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 1.460671,-0.139217, 4.073730, 1.000000;;
+ }
+ } //End of Armature_Bone_001
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ 1.460671,-0.139216,-3.633328, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_Bone_003 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -1.438650,-0.139217, 4.073730, 1.000000;;
+ }
+ } //End of Armature_Bone_003
+ Frame Armature_RR_leg {
+ FrameTransformMatrix {
+ 1.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -1.438651,-0.139216,-3.633328, 1.000000;;
+ }
+ } //End of Armature_RR_leg
+ Frame Armature_Head {
+ FrameTransformMatrix {
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ -0.000000,-0.000000, 1.000000, 0.000000,
+ -0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 4.052526, 3.788038, 1.000000;;
+ }
+ } //End of Armature_Head
+ } //End of Armature_Root
+ Frame sheep_shaved {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Mesh { //Cube_001 Mesh
+ 320;
+ -1.589511; 7.293469; 5.911728;,
+ 1.658676; 7.293468; 5.911728;,
+ 1.658676; 3.771371; 5.911728;,
+ -1.589511; 3.771372; 5.911728;,
+ -1.589511; 3.771372; 5.911728;,
+ 1.658676; 3.771371; 5.911728;,
+ 1.658675; 3.771371; 2.663541;,
+ -1.589511; 3.771370; 2.663541;,
+ -0.960432; 7.293468; 4.727453;,
+ 1.029595; 7.293468; 4.727453;,
+ 1.658676; 7.293468; 5.911728;,
+ -1.589511; 7.293469; 5.911728;,
+ -1.589512; 7.293468; 2.663541;,
+ -1.589511; 7.293469; 5.911728;,
+ -1.589511; 3.771372; 5.911728;,
+ -1.589511; 3.771370; 2.663541;,
+ 1.658675; 7.293468; 2.663541;,
+ -1.589512; 7.293468; 2.663541;,
+ -1.589511; 3.771370; 2.663541;,
+ 1.658675; 3.771371; 2.663541;,
+ 1.658676; 7.293468; 5.911728;,
+ 1.658675; 7.293468; 2.663541;,
+ 1.658675; 3.771371; 2.663541;,
+ 1.658676; 3.771371; 5.911728;,
+ -0.960432; 7.669465; 4.727453;,
+ 1.029595; 7.669464; 4.727453;,
+ 1.029595; 7.293468; 4.727453;,
+ -0.960432; 7.293468; 4.727453;,
+ 1.029595; 7.293468; 4.727453;,
+ 1.029595; 7.293468; 2.806681;,
+ 1.658675; 7.293468; 2.663541;,
+ 1.658676; 7.293468; 5.911728;,
+ -0.960432; 7.293468; 2.806681;,
+ -0.960432; 7.293468; 4.727453;,
+ -1.589511; 7.293469; 5.911728;,
+ -1.589512; 7.293468; 2.663541;,
+ 1.029595; 7.293468; 2.806681;,
+ -0.960432; 7.293468; 2.806681;,
+ -1.589512; 7.293468; 2.663541;,
+ 1.658675; 7.293468; 2.663541;,
+ 1.029595; 7.669464; 2.806681;,
+ 1.029595; 7.669464; 4.727453;,
+ -0.960432; 7.669465; 4.727453;,
+ -0.960432; 7.669463; 2.806681;,
+ 1.029595; 7.669464; 4.727453;,
+ 1.029595; 7.669464; 2.806681;,
+ 1.029595; 7.293468; 2.806681;,
+ 1.029595; 7.293468; 4.727453;,
+ -0.960432; 7.669463; 2.806681;,
+ -0.960432; 7.669465; 4.727453;,
+ -0.960432; 7.293468; 4.727453;,
+ -0.960432; 7.293468; 2.806681;,
+ 1.029595; 7.669464; 2.806681;,
+ -0.960432; 7.669463; 2.806681;,
+ -0.960432; 7.293468; 2.806681;,
+ 1.029595; 7.293468; 2.806681;,
+ -0.626982; 3.165303;-5.961625;,
+ -2.262721; 3.165303;-5.961625;,
+ -2.262721; 3.165303;-5.096455;,
+ -0.626982; 3.165303;-5.096455;,
+ -2.262721; 5.066779;-5.961625;,
+ -0.626983; 5.066779;-5.961625;,
+ -0.626983; 5.066779;-5.096455;,
+ -2.262721; 5.066779;-5.096455;,
+ -0.626983; 5.066779;-5.961625;,
+ -0.626982; 3.165303;-5.961625;,
+ -0.626982; 3.165303;-5.096455;,
+ -0.626983; 5.066779;-5.096455;,
+ -0.626982; 3.165303;-5.961625;,
+ -0.626983; 5.066779;-5.961625;,
+ -2.262721; 5.066779;-5.961625;,
+ -2.262721; 3.165303;-5.961625;,
+ -2.262721; 5.066779;-5.096455;,
+ -0.626983; 5.066779;-5.096455;,
+ -0.823518; 4.822422;-5.096455;,
+ -2.066185; 4.822422;-5.096455;,
+ -0.626982; 3.165303;-5.096455;,
+ -2.262721; 3.165303;-5.096455;,
+ -2.066185; 3.277381;-5.096455;,
+ -0.823517; 3.277381;-5.096455;,
+ -2.262721; 3.165303;-5.096455;,
+ -2.262721; 5.066779;-5.096455;,
+ -2.066185; 4.822422;-5.096455;,
+ -2.066185; 3.277381;-5.096455;,
+ -2.262721; 3.165303;-5.961625;,
+ -2.262721; 5.066779;-5.961625;,
+ -2.262721; 5.066779;-5.096455;,
+ -2.262721; 3.165303;-5.096455;,
+ -2.066185; 4.822422;-5.096455;,
+ -0.823518; 4.822422;-5.096455;,
+ -0.823517; 4.822423;-0.488248;,
+ -2.066185; 4.822422;-0.488248;,
+ -0.823518; 4.822422;-5.096455;,
+ -0.823517; 3.277381;-5.096455;,
+ -0.823517; 3.277381;-0.488248;,
+ -0.823517; 4.822423;-0.488248;,
+ -0.823517; 3.277381;-5.096455;,
+ -2.066185; 3.277381;-5.096455;,
+ -2.066185; 3.277381;-0.488248;,
+ -0.823517; 3.277381;-0.488248;,
+ -0.626983; 5.066779;-5.096455;,
+ -0.626982; 3.165303;-5.096455;,
+ -0.823517; 3.277381;-5.096455;,
+ -0.823518; 4.822422;-5.096455;,
+ -2.066185; 3.277381;-5.096455;,
+ -2.066185; 4.822422;-5.096455;,
+ -2.066185; 4.822422;-0.488248;,
+ -2.066185; 3.277381;-0.488248;,
+ 2.268868; 3.165304;-5.961625;,
+ 0.633129; 3.165304;-5.961625;,
+ 0.633129; 3.165304;-5.096455;,
+ 2.268868; 3.165304;-5.096455;,
+ 0.633129; 5.066779;-5.961625;,
+ 2.268867; 5.066780;-5.961625;,
+ 2.268867; 5.066780;-5.096455;,
+ 0.633129; 5.066779;-5.096455;,
+ 2.268867; 5.066780;-5.961625;,
+ 2.268868; 3.165304;-5.961625;,
+ 2.268868; 3.165304;-5.096455;,
+ 2.268867; 5.066780;-5.096455;,
+ 2.268868; 3.165304;-5.961625;,
+ 2.268867; 5.066780;-5.961625;,
+ 0.633129; 5.066779;-5.961625;,
+ 0.633129; 3.165304;-5.961625;,
+ 0.633129; 5.066779;-5.096455;,
+ 2.268867; 5.066780;-5.096455;,
+ 2.072332; 4.822423;-5.096455;,
+ 0.829664; 4.822423;-5.096455;,
+ 2.268868; 3.165304;-5.096455;,
+ 0.633129; 3.165304;-5.096455;,
+ 0.829664; 3.277381;-5.096455;,
+ 2.072332; 3.277381;-5.096455;,
+ 0.633129; 3.165304;-5.096455;,
+ 0.633129; 5.066779;-5.096455;,
+ 0.829664; 4.822423;-5.096455;,
+ 0.829664; 3.277381;-5.096455;,
+ 0.633129; 3.165304;-5.961625;,
+ 0.633129; 5.066779;-5.961625;,
+ 0.633129; 5.066779;-5.096455;,
+ 0.633129; 3.165304;-5.096455;,
+ 0.829664; 4.822423;-5.096455;,
+ 2.072332; 4.822423;-5.096455;,
+ 2.072332; 4.822423;-0.492027;,
+ 0.829664; 4.822423;-0.492027;,
+ 2.072332; 4.822423;-5.096455;,
+ 2.072332; 3.277381;-5.096455;,
+ 2.072333; 3.277382;-0.492027;,
+ 2.072332; 4.822423;-0.492027;,
+ 2.072332; 3.277381;-5.096455;,
+ 0.829664; 3.277381;-5.096455;,
+ 0.829664; 3.277382;-0.492027;,
+ 2.072333; 3.277382;-0.492027;,
+ 2.268867; 5.066780;-5.096455;,
+ 2.268868; 3.165304;-5.096455;,
+ 2.072332; 3.277381;-5.096455;,
+ 2.072332; 4.822423;-5.096455;,
+ 0.829664; 3.277381;-5.096455;,
+ 0.829664; 4.822423;-5.096455;,
+ 0.829664; 4.822423;-0.492027;,
+ 0.829664; 3.277382;-0.492027;,
+ -0.626981;-4.511055;-5.961625;,
+ -2.262720;-4.511055;-5.961625;,
+ -2.262720;-4.511055;-5.096455;,
+ -0.626981;-4.511055;-5.096455;,
+ -2.262720;-2.609579;-5.961625;,
+ -0.626981;-2.609579;-5.961625;,
+ -0.626981;-2.609579;-5.096455;,
+ -2.262720;-2.609579;-5.096455;,
+ -0.626981;-2.609579;-5.961625;,
+ -0.626981;-4.511055;-5.961625;,
+ -0.626981;-4.511055;-5.096455;,
+ -0.626981;-2.609579;-5.096455;,
+ -0.626981;-4.511055;-5.961625;,
+ -0.626981;-2.609579;-5.961625;,
+ -2.262720;-2.609579;-5.961625;,
+ -2.262720;-4.511055;-5.961625;,
+ -2.262720;-2.609579;-5.096455;,
+ -0.626981;-2.609579;-5.096455;,
+ -0.823516;-2.853936;-5.096455;,
+ -2.066185;-2.853936;-5.096455;,
+ -0.626981;-4.511055;-5.096455;,
+ -2.262720;-4.511055;-5.096455;,
+ -2.066185;-4.398977;-5.096455;,
+ -0.823516;-4.398977;-5.096455;,
+ -2.262720;-4.511055;-5.096455;,
+ -2.262720;-2.609579;-5.096455;,
+ -2.066185;-2.853936;-5.096455;,
+ -2.066185;-4.398977;-5.096455;,
+ -2.262720;-4.511055;-5.961625;,
+ -2.262720;-2.609579;-5.961625;,
+ -2.262720;-2.609579;-5.096455;,
+ -2.262720;-4.511055;-5.096455;,
+ -2.066185;-2.853936;-5.096455;,
+ -0.823516;-2.853936;-5.096455;,
+ -0.823516;-2.853936;-0.317499;,
+ -2.066184;-2.853936;-0.317498;,
+ -0.823516;-2.853936;-5.096455;,
+ -0.823516;-4.398977;-5.096455;,
+ -0.823516;-4.398976;-0.317498;,
+ -0.823516;-2.853936;-0.317499;,
+ -0.823516;-4.398977;-5.096455;,
+ -2.066185;-4.398977;-5.096455;,
+ -2.066185;-4.398977;-0.317498;,
+ -0.823516;-4.398976;-0.317498;,
+ -0.626981;-2.609579;-5.096455;,
+ -0.626981;-4.511055;-5.096455;,
+ -0.823516;-4.398977;-5.096455;,
+ -0.823516;-2.853936;-5.096455;,
+ -2.066185;-4.398977;-5.096455;,
+ -2.066185;-2.853936;-5.096455;,
+ -2.066184;-2.853936;-0.317498;,
+ -2.066185;-4.398977;-0.317498;,
+ 2.268869;-4.511054;-5.961625;,
+ 0.633130;-4.511054;-5.961625;,
+ 0.633130;-4.511054;-5.096455;,
+ 2.268869;-4.511054;-5.096455;,
+ 0.633130;-2.609579;-5.961625;,
+ 2.268868;-2.609579;-5.961625;,
+ 2.268868;-2.609579;-5.096455;,
+ 0.633130;-2.609579;-5.096455;,
+ 2.268868;-2.609579;-5.961625;,
+ 2.268869;-4.511054;-5.961625;,
+ 2.268869;-4.511054;-5.096455;,
+ 2.268868;-2.609579;-5.096455;,
+ 2.268869;-4.511054;-5.961625;,
+ 2.268868;-2.609579;-5.961625;,
+ 0.633130;-2.609579;-5.961625;,
+ 0.633130;-4.511054;-5.961625;,
+ 0.633130;-2.609579;-5.096455;,
+ 2.268868;-2.609579;-5.096455;,
+ 2.072333;-2.853936;-5.096455;,
+ 0.829665;-2.853936;-5.096455;,
+ 2.268869;-4.511054;-5.096455;,
+ 0.633130;-4.511054;-5.096455;,
+ 0.829665;-4.398976;-5.096455;,
+ 2.072333;-4.398976;-5.096455;,
+ 0.633130;-4.511054;-5.096455;,
+ 0.633130;-2.609579;-5.096455;,
+ 0.829665;-2.853936;-5.096455;,
+ 0.829665;-4.398976;-5.096455;,
+ 0.633130;-4.511054;-5.961625;,
+ 0.633130;-2.609579;-5.961625;,
+ 0.633130;-2.609579;-5.096455;,
+ 0.633130;-4.511054;-5.096455;,
+ 0.829665;-2.853936;-5.096455;,
+ 2.072333;-2.853936;-5.096455;,
+ 2.072333;-2.853935;-0.317499;,
+ 0.829665;-2.853936;-0.317498;,
+ 2.072333;-2.853936;-5.096455;,
+ 2.072333;-4.398976;-5.096455;,
+ 2.072334;-4.398976;-0.317498;,
+ 2.072333;-2.853935;-0.317499;,
+ 2.072333;-4.398976;-5.096455;,
+ 0.829665;-4.398976;-5.096455;,
+ 0.829665;-4.398976;-0.317498;,
+ 2.072334;-4.398976;-0.317498;,
+ 2.268868;-2.609579;-5.096455;,
+ 2.268869;-4.511054;-5.096455;,
+ 2.072333;-4.398976;-5.096455;,
+ 2.072333;-2.853936;-5.096455;,
+ 0.829665;-4.398976;-5.096455;,
+ 0.829665;-2.853936;-5.096455;,
+ 0.829665;-2.853936;-0.317498;,
+ 0.829665;-4.398976;-0.317498;,
+ 2.599581;-5.109999;-0.688940;,
+ 2.599581; 5.150001;-0.688940;,
+ -2.530419; 5.150001;-0.688940;,
+ -2.530417;-5.109998;-0.688940;,
+ -2.530417; 5.150004; 4.441061;,
+ 2.599582; 5.150000; 4.441061;,
+ 2.599583;-5.109997; 4.441061;,
+ -2.530419;-5.109996; 4.441061;,
+ -2.530419; 5.150001;-0.688940;,
+ -2.530417; 5.150004; 4.441061;,
+ -2.530419;-5.109996; 4.441061;,
+ -2.530417;-5.109998;-0.688940;,
+ 2.599581; 5.150001;-0.688940;,
+ 2.599582; 5.150000; 4.441061;,
+ -2.530417; 5.150004; 4.441061;,
+ -2.530419; 5.150001;-0.688940;,
+ 2.599581;-5.109999;-0.688940;,
+ 2.599583;-5.109997; 4.441061;,
+ 2.599582; 5.150000; 4.441061;,
+ 2.599581; 5.150001;-0.688940;,
+ 0.416693;-5.109998; 3.970571;,
+ -0.347529;-5.109998; 3.970571;,
+ -2.530419;-5.109996; 4.441061;,
+ 2.599583;-5.109997; 4.441061;,
+ -0.367640;-5.677753; 3.945947;,
+ -0.367640;-5.677753; 1.790629;,
+ -0.347529;-5.109998; 1.794900;,
+ -0.347529;-5.109998; 3.970571;,
+ 0.436804;-5.677753; 3.945947;,
+ 0.436804;-5.677753; 1.790629;,
+ -0.367640;-5.677753; 1.790629;,
+ -0.367640;-5.677753; 3.945947;,
+ 0.416693;-5.109998; 1.794900;,
+ 0.416693;-5.109998; 3.970571;,
+ 2.599583;-5.109997; 4.441061;,
+ 2.599581;-5.109999;-0.688940;,
+ -0.347529;-5.109998; 3.970571;,
+ -0.347529;-5.109998; 1.794900;,
+ -2.530417;-5.109998;-0.688940;,
+ -2.530419;-5.109996; 4.441061;,
+ -0.347529;-5.109998; 1.794900;,
+ 0.416693;-5.109998; 1.794900;,
+ 2.599581;-5.109999;-0.688940;,
+ -2.530417;-5.109998;-0.688940;,
+ -0.367640;-5.677753; 1.790629;,
+ 0.436804;-5.677753; 1.790629;,
+ 0.416693;-5.109998; 1.794900;,
+ -0.347529;-5.109998; 1.794900;,
+ 0.436804;-5.677753; 1.790629;,
+ 0.436804;-5.677753; 3.945947;,
+ 0.416693;-5.109998; 3.970571;,
+ 0.416693;-5.109998; 1.794900;,
+ 0.436804;-5.677753; 3.945947;,
+ -0.367640;-5.677753; 3.945947;,
+ -0.347529;-5.109998; 3.970571;,
+ 0.416693;-5.109998; 3.970571;;
+ 80;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;;
+ MeshNormals { //Cube_001 Normals
+ 320;
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ 1.000000; 0.000001; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 0.000001; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000003;,
+ -0.000000;-1.000000; 0.000003;,
+ -0.000000;-1.000000; 0.000003;,
+ -0.000000;-1.000000; 0.000003;,
+ -0.999373; 0.035400; 0.000000;,
+ -0.999373; 0.035400; 0.000000;,
+ -0.999373; 0.035400; 0.000000;,
+ -0.999373; 0.035400; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.007523;-0.999972;,
+ 0.000000; 0.007523;-0.999972;,
+ 0.000000; 0.007523;-0.999972;,
+ 0.000000; 0.007523;-0.999972;,
+ 0.999373; 0.035399; 0.000000;,
+ 0.999373; 0.035399; 0.000000;,
+ 0.999373; 0.035399; 0.000000;,
+ 0.999373; 0.035399; 0.000000;,
+ 0.000000;-0.043330; 0.999061;,
+ 0.000000;-0.043330; 0.999061;,
+ 0.000000;-0.043330; 0.999061;,
+ 0.000000;-0.043330; 0.999061;;
+ 80;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;;
+ } //End of Cube_001 Normals
+ MeshMaterialList { //Cube_001 Material List
+ 1;
+ 80;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material_001 {
+ 0.640000; 0.640000; 0.640000; 1.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_001 Material List
+ MeshTextureCoords { //Cube_001 UV Coordinates
+ 320;
+ 0.456156; 0.334515;,
+ 0.218669; 0.335171;,
+ 0.216366; 0.574968;,
+ 0.455972; 0.573345;,
+ 0.408216; 0.351143;,
+ 0.183578; 0.351001;,
+ 0.185676; 0.587688;,
+ 0.420802; 0.569856;,
+ 0.717535; 0.651074;,
+ 0.480501; 0.651074;,
+ 0.403272; 0.516724;,
+ 0.800974; 0.515687;,
+ 0.450682; 0.562762;,
+ 0.460334; 0.300755;,
+ 0.197762; 0.296263;,
+ 0.191022; 0.562698;,
+ 0.185157; 0.320064;,
+ 0.429207; 0.331311;,
+ 0.437982; 0.548381;,
+ 0.181381; 0.566213;,
+ 0.438858; 0.311515;,
+ 0.216936; 0.306473;,
+ 0.219333; 0.568550;,
+ 0.435630; 0.574569;,
+ 0.641769; 0.799233;,
+ 0.559004; 0.799233;,
+ 0.531170; 0.783727;,
+ 0.669603; 0.783727;,
+ 0.480501; 0.651074;,
+ 0.480501; 0.866680;,
+ 0.402917; 0.885928;,
+ 0.403272; 0.516724;,
+ 0.717535; 0.866680;,
+ 0.717535; 0.651074;,
+ 0.800974; 0.515687;,
+ 0.800796; 0.879372;,
+ 0.445862; 0.690313;,
+ 0.757393; 0.690313;,
+ 0.757626; 0.715741;,
+ 0.445849; 0.717935;,
+ 0.530532; 0.825974;,
+ 0.530532; 0.725803;,
+ 0.672472; 0.725803;,
+ 0.672472; 0.825974;,
+ 0.546001; 0.748997;,
+ 0.546001; 0.824503;,
+ 0.529045; 0.825838;,
+ 0.529045; 0.747662;,
+ 0.654435; 0.833521;,
+ 0.654435; 0.728251;,
+ 0.669955; 0.728605;,
+ 0.669954; 0.835122;,
+ 0.531146; 0.813612;,
+ 0.671345; 0.813612;,
+ 0.670462; 0.829118;,
+ 0.532029; 0.829118;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.248281;,
+ 0.146405; 0.248972;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.249028;,
+ 0.170183; 0.249888;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.249832;,
+ 0.148204; 0.250523;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.248972;,
+ 0.170310; 0.249832;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.247136;,
+ 0.146405; 0.247827;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.247883;,
+ 0.170183; 0.248743;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.248687;,
+ 0.148204; 0.249378;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.247827;,
+ 0.170310; 0.248687;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.247136;,
+ 0.146405; 0.247827;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.247883;,
+ 0.170183; 0.248743;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.248687;,
+ 0.148204; 0.249378;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.247827;,
+ 0.170310; 0.248687;,
+ 0.163824; 0.970678;,
+ 0.025445; 0.971241;,
+ 0.025078; 0.812645;,
+ 0.163457; 0.812082;,
+ 0.163457; 0.971241;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.163824; 0.812645;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.197495; 0.970678;,
+ 0.025445; 0.971378;,
+ 0.197553; 0.995579;,
+ 0.025502; 0.996279;,
+ 0.025078; 0.812782;,
+ 0.197128; 0.812082;,
+ 0.025078; 0.995579;,
+ 0.025502; 0.812082;,
+ 0.046123; 0.834214;,
+ 0.045801; 0.973616;,
+ 0.197553; 0.812782;,
+ 0.197128; 0.996279;,
+ 0.176507; 0.974147;,
+ 0.176830; 0.834745;,
+ 0.197128; 0.996279;,
+ 0.025078; 0.995579;,
+ 0.045801; 0.973616;,
+ 0.176507; 0.974147;,
+ 0.197128; 0.971378;,
+ 0.025078; 0.970678;,
+ 0.025445; 0.812082;,
+ 0.197495; 0.812783;,
+ 0.145802; 0.800348;,
+ 0.037973; 0.799657;,
+ 0.038577; 0.247136;,
+ 0.146405; 0.247827;,
+ 0.169580; 0.801264;,
+ 0.035513; 0.800404;,
+ 0.036117; 0.247883;,
+ 0.170183; 0.248743;,
+ 0.147602; 0.801900;,
+ 0.039773; 0.801209;,
+ 0.040375; 0.248687;,
+ 0.148204; 0.249378;,
+ 0.025502; 0.812082;,
+ 0.197553; 0.812782;,
+ 0.176830; 0.834745;,
+ 0.046123; 0.834214;,
+ 0.169708; 0.801209;,
+ 0.035640; 0.800348;,
+ 0.036243; 0.247827;,
+ 0.170310; 0.248687;,
+ 0.162385; 0.009221;,
+ 0.924369; 0.009221;,
+ 0.924369; 0.340664;,
+ 0.162385; 0.340664;,
+ 0.162385; 0.375513;,
+ 0.162385; 0.044070;,
+ 0.920960; 0.044069;,
+ 0.920960; 0.375513;,
+ 0.173123; 0.401349;,
+ 0.173123; 0.016267;,
+ 0.822706; 0.016267;,
+ 0.822707; 0.401349;,
+ 0.420022; 0.481351;,
+ 0.420022; 0.016910;,
+ 0.838019; 0.016910;,
+ 0.838019; 0.481351;,
+ 0.893638; 0.009221;,
+ 0.893639; 0.340665;,
+ 0.162386; 0.340666;,
+ 0.162385; 0.009222;,
+ 0.593392; 0.089138;,
+ 0.645583; 0.089138;,
+ 0.794659; 0.042542;,
+ 0.444316; 0.042542;,
+ 0.649241; 0.097975;,
+ 0.649782; 0.274434;,
+ 0.587832; 0.274624;,
+ 0.587291; 0.098165;,
+ 0.458398; 0.274422;,
+ 0.458939; 0.097963;,
+ 0.524800; 0.098165;,
+ 0.524259; 0.274624;,
+ 0.593392; 0.248520;,
+ 0.593392; 0.089138;,
+ 0.444316; 0.042542;,
+ 0.444316; 0.441862;,
+ 0.645583; 0.089138;,
+ 0.645583; 0.248520;,
+ 0.794659; 0.441862;,
+ 0.794659; 0.042542;,
+ 0.645583; 0.248520;,
+ 0.593392; 0.248520;,
+ 0.444316; 0.441862;,
+ 0.794659; 0.441862;,
+ 0.587291; 0.097785;,
+ 0.587493; 0.031924;,
+ 0.649443; 0.032114;,
+ 0.649241; 0.097975;,
+ 0.524800; 0.274434;,
+ 0.525341; 0.097975;,
+ 0.587291; 0.098165;,
+ 0.586750; 0.274624;,
+ 0.587089; 0.031924;,
+ 0.587291; 0.097785;,
+ 0.525341; 0.097975;,
+ 0.525140; 0.032114;;
+ } //End of Cube_001 UV Coordinates
+ XSkinMeshHeader {
+ 2;
+ 6;
+ 6;
+ }
+ SkinWeights {
+ "Armature_RR_leg";
+ 52;
+ 212,
+ 213,
+ 214,
+ 215,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 263;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ 1.448563,-0.034190,-3.599006, 1.000000;;
+ } //End of Armature_RR_leg Skin Weights
+ SkinWeights {
+ "Armature_Bone_001";
+ 52;
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ -1.450758,-0.034190, 4.108053, 1.000000;;
+ } //End of Armature_Bone_001 Skin Weights
+ SkinWeights {
+ "Armature_Head";
+ 62;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 268,
+ 269,
+ 273,
+ 277,
+ 278,
+ 282;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000003,
+ 0.000000,
+ 0.000003,
+ 0.000000,
+ 0.000003;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000, 1.000000,-0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ -0.009912,-3.822360,-4.157553, 1.000000;;
+ } //End of Armature_Head Skin Weights
+ SkinWeights {
+ "Armature_Bone_003";
+ 67;
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 164,
+ 167,
+ 174,
+ 176,
+ 179,
+ 183,
+ 185,
+ 186,
+ 189,
+ 190,
+ 192,
+ 197,
+ 200,
+ 206,
+ 209;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000;
+ -1.000000, 0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ -0.000000,-1.000000,-0.000000, 0.000000,
+ 1.448564,-0.034190, 4.108052, 1.000000;;
+ } //End of Armature_Bone_003 Skin Weights
+ SkinWeights {
+ "Armature_Bone_002";
+ 52;
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000000, 0.000000,
+ -1.450759,-0.034190,-3.599006, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ SkinWeights {
+ "Armature_Root";
+ 56;
+ 264,
+ 265,
+ 266,
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 280,
+ 281,
+ 282,
+ 283,
+ 284,
+ 285,
+ 286,
+ 287,
+ 288,
+ 289,
+ 290,
+ 291,
+ 292,
+ 293,
+ 294,
+ 295,
+ 296,
+ 297,
+ 298,
+ 299,
+ 300,
+ 301,
+ 302,
+ 303,
+ 304,
+ 305,
+ 306,
+ 307,
+ 308,
+ 309,
+ 310,
+ 311,
+ 312,
+ 313,
+ 314,
+ 315,
+ 316,
+ 317,
+ 318,
+ 319;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999997,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999997,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 0.999997,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ -1.000000,-0.000000, 0.000000, 0.000000,
+ 0.000000,-0.000000, 1.000000, 0.000000,
+ -0.000000, 1.000000, 0.000000, 0.000000,
+ 0.009913,-0.105027,-0.034322, 1.000000;;
+ } //End of Armature_Root Skin Weights
+ } //End of Cube_001 Mesh
+ } //End of sheep_shaved
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; 0.041567, 0.000010, 6.045322;;,
+ 1;3; 0.041567, 0.000010, 6.045322;;,
+ 2;3; 0.041567, 0.000010, 6.045322;;,
+ 3;3; 0.041567, 0.000010, 6.045322;;,
+ 4;3; 0.041567, 0.000010, 6.045322;;,
+ 5;3; 0.041567, 0.000010, 6.045322;;,
+ 6;3; 0.041567, 0.000010, 6.045322;;,
+ 7;3; 0.041567, 0.000010, 6.045322;;,
+ 8;3; 0.041567, 0.000010, 6.045322;;,
+ 9;3; 0.041567, 0.000010, 6.045322;;,
+ 10;3; 0.041567, 0.000010, 6.045322;;,
+ 11;3; 0.041567, 0.000010, 6.045322;;,
+ 12;3; 0.041567, 0.000010, 6.045322;;,
+ 13;3; 0.041567, 0.000010, 6.045322;;,
+ 14;3; 0.041567, 0.000010, 6.045322;;,
+ 15;3; 0.041567, 0.000010, 6.045322;;,
+ 16;3; 0.041567, 0.000010, 6.045322;;,
+ 17;3; 0.041567, 0.000010, 6.045322;;,
+ 18;3; 0.041567, 0.000010, 6.045322;;,
+ 19;3; 0.041567, 0.000010, 6.045322;;,
+ 20;3; 0.041567, 0.000010, 6.045322;;,
+ 21;3; 0.041567, 0.000010, 6.045322;;,
+ 22;3; 0.041567, 0.000010, 6.045322;;,
+ 23;3; 0.041567, 0.000010, 6.045322;;,
+ 24;3; 0.041567, 0.000010, 6.045322;;,
+ 25;3; 0.041567, 0.000010, 6.045322;;,
+ 26;3; 0.041567, 0.000010, 6.045322;;,
+ 27;3; 0.041567, 0.000010, 6.045322;;,
+ 28;3; 0.041567, 0.000010, 6.045322;;,
+ 29;3; 0.041567, 0.000010, 6.045322;;,
+ 30;3; 0.041567, 0.000010, 6.045322;;,
+ 31;3; 0.041567, 0.000010, 6.045322;;,
+ 32;3; 0.041567, 0.000010, 6.045322;;,
+ 33;3; 0.041567, 0.000010, 6.045322;;,
+ 34;3; 0.041567, 0.000010, 6.045322;;,
+ 35;3; 0.041567, 0.000010, 6.045322;;,
+ 36;3; 0.041567, 0.000010, 6.045322;;,
+ 37;3; 0.041567, 0.000010, 6.045322;;,
+ 38;3; 0.041567, 0.000010, 6.045322;;,
+ 39;3; 0.041567, 0.000010, 6.045322;;,
+ 40;3; 0.041567, 0.000010, 6.045322;;,
+ 41;3; 0.041567, 0.000010, 6.045322;;,
+ 42;3; 0.041567, 0.000010, 6.045322;;,
+ 43;3; 0.041567, 0.000010, 6.045322;;,
+ 44;3; 0.041567, 0.000010, 6.045322;;,
+ 45;3; 0.041567, 0.000010, 6.045322;;,
+ 46;3; 0.041567, 0.000010, 6.045322;;,
+ 47;3; 0.041567, 0.000010, 6.045322;;,
+ 48;3; 0.041567, 0.000010, 6.045322;;,
+ 49;3; 0.041567, 0.000010, 6.045322;;,
+ 50;3; 0.041567, 0.000010, 6.045322;;,
+ 51;3; 0.041567, 0.000010, 6.045322;;,
+ 52;3; 0.041567, 0.000010, 6.045322;;,
+ 53;3; 0.041567, 0.000010, 6.045322;;,
+ 54;3; 0.041567, 0.000010, 6.045322;;,
+ 55;3; 0.041567, 0.000010, 6.045322;;,
+ 56;3; 0.041567, 0.000010, 6.045322;;,
+ 57;3; 0.041567, 0.000010, 6.045322;;,
+ 58;3; 0.041567, 0.000010, 6.045322;;,
+ 59;3; 0.041567, 0.000010, 6.045322;;,
+ 60;3; 0.041567, 0.000010, 6.045322;;,
+ 61;3; 0.041567, 0.000010, 6.045322;;,
+ 62;3; 0.041567, 0.000010, 6.045322;;,
+ 63;3; 0.041567, 0.000010, 6.045322;;,
+ 64;3; 0.041567, 0.000010, 6.045322;;,
+ 65;3; 0.041567, 0.000010, 6.045322;;,
+ 66;3; 0.041567, 0.000010, 6.045322;;,
+ 67;3; 0.041567, 0.000010, 6.045322;;,
+ 68;3; 0.041567, 0.000010, 6.045322;;,
+ 69;3; 0.041567, 0.000010, 6.045322;;,
+ 70;3; 0.041567, 0.000010, 6.045322;;,
+ 71;3; 0.041567, 0.000010, 6.045322;;,
+ 72;3; 0.041567, 0.000010, 6.045322;;,
+ 73;3; 0.041567, 0.000010, 6.045322;;,
+ 74;3; 0.041567, 0.000010, 6.045322;;,
+ 75;3; 0.041567, 0.000010, 6.045322;;,
+ 76;3; 0.041567, 0.000010, 6.045322;;,
+ 77;3; 0.041567, 0.000010, 6.045322;;,
+ 78;3; 0.041567, 0.000010, 6.045322;;,
+ 79;3; 0.041567, 0.000010, 6.045322;;,
+ 80;3; 0.041567, 0.000010, 6.045322;;,
+ 81;3; 0.041567, 0.000010, 6.045322;;,
+ 82;3; 0.041567, 0.000010, 6.045322;;,
+ 83;3; 0.041567, 0.000010, 6.045322;;,
+ 84;3; 0.041567, 0.000010, 6.045322;;,
+ 85;3; 0.041567, 0.000010, 6.045322;;,
+ 86;3; 0.041567, 0.000010, 6.045322;;,
+ 87;3; 0.041567, 0.000010, 6.045322;;,
+ 88;3; 0.041567, 0.000010, 6.045322;;,
+ 89;3; 0.041567, 0.000010, 6.045322;;,
+ 90;3; 0.041567, 0.000010, 6.045322;;,
+ 91;3; 0.041567, 0.000010, 6.045322;;,
+ 92;3; 0.041567, 0.000010, 6.045322;;,
+ 93;3; 0.041567, 0.000010, 6.045322;;,
+ 94;3; 0.041567, 0.000010, 6.045322;;,
+ 95;3; 0.041567, 0.000010, 6.045322;;,
+ 96;3; 0.041567, 0.000010, 6.045322;;,
+ 97;3; 0.041567, 0.000010, 6.045322;;,
+ 98;3; 0.041567, 0.000010, 6.045322;;,
+ 99;3; 0.041567, 0.000010, 6.045322;;,
+ 100;3; 0.041567, 0.000010, 6.045322;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Root}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; 0.009913, 0.034322, 0.105027;;,
+ 1;3; 0.009913, 0.034322, 0.105027;;,
+ 2;3; 0.009913, 0.034322, 0.105027;;,
+ 3;3; 0.009913, 0.034322, 0.105027;;,
+ 4;3; 0.009913, 0.034322, 0.105027;;,
+ 5;3; 0.009913, 0.034322, 0.105027;;,
+ 6;3; 0.009913, 0.034322, 0.105027;;,
+ 7;3; 0.009913, 0.034322, 0.105027;;,
+ 8;3; 0.009913, 0.034322, 0.105027;;,
+ 9;3; 0.009913, 0.034322, 0.105027;;,
+ 10;3; 0.009913, 0.034322, 0.105027;;,
+ 11;3; 0.009913, 0.034322, 0.105027;;,
+ 12;3; 0.009913, 0.034322, 0.105027;;,
+ 13;3; 0.009913, 0.034322, 0.105027;;,
+ 14;3; 0.009913, 0.034322, 0.105027;;,
+ 15;3; 0.009913, 0.034322, 0.105027;;,
+ 16;3; 0.009913, 0.034322, 0.105027;;,
+ 17;3; 0.009913, 0.034322, 0.105027;;,
+ 18;3; 0.009913, 0.034322, 0.105027;;,
+ 19;3; 0.009913, 0.034322, 0.105027;;,
+ 20;3; 0.009913, 0.034322, 0.105027;;,
+ 21;3; 0.009913, 0.034322, 0.105027;;,
+ 22;3; 0.009913, 0.034322, 0.105027;;,
+ 23;3; 0.009913, 0.034322, 0.105027;;,
+ 24;3; 0.009913, 0.034322, 0.105027;;,
+ 25;3; 0.009913, 0.034322, 0.105027;;,
+ 26;3; 0.009913, 0.034322, 0.105027;;,
+ 27;3; 0.009913, 0.034322, 0.105027;;,
+ 28;3; 0.009913, 0.034322, 0.105027;;,
+ 29;3; 0.009913, 0.034322, 0.105027;;,
+ 30;3; 0.009913, 0.034322, 0.105027;;,
+ 31;3; 0.009913, 0.034322, 0.105027;;,
+ 32;3; 0.009913, 0.034322, 0.105027;;,
+ 33;3; 0.009913, 0.034322, 0.105027;;,
+ 34;3; 0.009913, 0.034322, 0.105027;;,
+ 35;3; 0.009913, 0.034322, 0.105027;;,
+ 36;3; 0.009913, 0.034322, 0.105027;;,
+ 37;3; 0.009913, 0.034322, 0.105027;;,
+ 38;3; 0.009913, 0.034322, 0.105027;;,
+ 39;3; 0.009913, 0.034322, 0.105027;;,
+ 40;3; 0.009913, 0.034322, 0.105027;;,
+ 41;3; 0.009913, 0.034322, 0.105027;;,
+ 42;3; 0.009913, 0.034322, 0.105027;;,
+ 43;3; 0.009913, 0.034322, 0.105027;;,
+ 44;3; 0.009913, 0.034322, 0.105027;;,
+ 45;3; 0.009913, 0.034322, 0.105027;;,
+ 46;3; 0.009913, 0.034322, 0.105027;;,
+ 47;3; 0.009913, 0.034322, 0.105027;;,
+ 48;3; 0.009913, 0.034322, 0.105027;;,
+ 49;3; 0.009913, 0.034322, 0.105027;;,
+ 50;3; 0.009913, 0.034322, 0.105027;;,
+ 51;3; 0.009913, 0.034322, 0.105027;;,
+ 52;3; 0.009913, 0.034322, 0.105027;;,
+ 53;3; 0.009913, 0.034322, 0.105027;;,
+ 54;3; 0.009913, 0.034322, 0.105027;;,
+ 55;3; 0.009913, 0.034322, 0.105027;;,
+ 56;3; 0.009913, 0.034322, 0.105027;;,
+ 57;3; 0.009913, 0.034322, 0.105027;;,
+ 58;3; 0.009913, 0.034322, 0.105027;;,
+ 59;3; 0.009913, 0.034322, 0.105027;;,
+ 60;3; 0.009913, 0.034322, 0.105027;;,
+ 61;3; 0.009913, 0.034322, 0.105027;;,
+ 62;3; 0.009913, 0.034322, 0.105027;;,
+ 63;3; 0.009913, 0.034322, 0.105027;;,
+ 64;3; 0.009913, 0.034322, 0.105027;;,
+ 65;3; 0.009913, 0.034322, 0.105027;;,
+ 66;3; 0.009913, 0.034322, 0.105027;;,
+ 67;3; 0.009913, 0.034322, 0.105027;;,
+ 68;3; 0.009913, 0.034322, 0.105027;;,
+ 69;3; 0.009913, 0.034322, 0.105027;;,
+ 70;3; 0.009913, 0.034322, 0.105027;;,
+ 71;3; 0.009913, 0.034322, 0.105027;;,
+ 72;3; 0.009913, 0.034322, 0.105027;;,
+ 73;3; 0.009913, 0.034322, 0.105027;;,
+ 74;3; 0.009913, 0.034322, 0.105027;;,
+ 75;3; 0.009913, 0.034322, 0.105027;;,
+ 76;3; 0.009913, 0.034322, 0.105027;;,
+ 77;3; 0.009913, 0.034322, 0.105027;;,
+ 78;3; 0.009913, 0.034322, 0.105027;;,
+ 79;3; 0.009913, 0.034322, 0.105027;;,
+ 80;3; 0.009913, 0.034322, 0.105027;;,
+ 81;3; 0.009913, 0.034322, 0.105027;;,
+ 82;3; 0.009913, 0.034322, 0.105027;;,
+ 83;3; 0.009913, 0.034322, 0.105027;;,
+ 84;3; 0.009913, 0.034322, 0.105027;;,
+ 85;3; 0.009913, 0.034322, 0.105027;;,
+ 86;3; 0.009913, 0.034322, 0.105027;;,
+ 87;3; 0.009913, 0.034322, 0.105027;;,
+ 88;3; 0.009913, 0.034322, 0.105027;;,
+ 89;3; 0.009913, 0.034322, 0.105027;;,
+ 90;3; 0.009913, 0.034322, 0.105027;;,
+ 91;3; 0.009913, 0.034322, 0.105027;;,
+ 92;3; 0.009913, 0.034322, 0.105027;;,
+ 93;3; 0.009913, 0.034322, 0.105027;;,
+ 94;3; 0.009913, 0.034322, 0.105027;;,
+ 95;3; 0.009913, 0.034322, 0.105027;;,
+ 96;3; 0.009913, 0.034322, 0.105027;;,
+ 97;3; 0.009913, 0.034322, 0.105027;;,
+ 98;3; 0.009913, 0.034322, 0.105027;;,
+ 99;3; 0.009913, 0.034322, 0.105027;;,
+ 100;3; 0.009913, 0.034322, 0.105027;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 1;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 2;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 3;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 4;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 5;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 6;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 7;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 8;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 9;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 10;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 11;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 12;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 13;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 14;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 15;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 16;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 17;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 18;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 19;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 20;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 21;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 22;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 23;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 24;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 25;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 26;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 27;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 28;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 29;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 30;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 31;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 32;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 33;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 34;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 35;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 36;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 37;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 38;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 39;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 40;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 41;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 42;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 43;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 44;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 45;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 46;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 47;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 48;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 49;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 50;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 51;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 52;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 53;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 54;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 55;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 56;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 57;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 58;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 59;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 60;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 61;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 62;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 63;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 64;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 65;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 66;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 67;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 68;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 69;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 70;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 71;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 72;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 73;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 74;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 75;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 76;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 77;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 78;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 79;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 80;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 81;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 82;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 83;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 84;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 85;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 86;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 87;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 88;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 89;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 90;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 91;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 92;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 93;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 94;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 95;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 96;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 97;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 98;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 99;4; 0.000000, 0.000000, 0.707107, 0.707107;;,
+ 100;4; 0.000000, 0.000000, 0.707107, 0.707107;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_001}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; 1.460671,-0.139217, 4.073730;;,
+ 1;3; 1.460671,-0.139217, 4.073730;;,
+ 2;3; 1.460671,-0.139217, 4.073730;;,
+ 3;3; 1.460671,-0.139217, 4.073730;;,
+ 4;3; 1.460671,-0.139217, 4.073730;;,
+ 5;3; 1.460671,-0.139217, 4.073730;;,
+ 6;3; 1.460671,-0.139217, 4.073730;;,
+ 7;3; 1.460671,-0.139217, 4.073730;;,
+ 8;3; 1.460671,-0.139217, 4.073730;;,
+ 9;3; 1.460671,-0.139217, 4.073730;;,
+ 10;3; 1.460671,-0.139217, 4.073730;;,
+ 11;3; 1.460671,-0.139217, 4.073730;;,
+ 12;3; 1.460671,-0.139217, 4.073730;;,
+ 13;3; 1.460671,-0.139217, 4.073730;;,
+ 14;3; 1.460671,-0.139217, 4.073730;;,
+ 15;3; 1.460671,-0.139217, 4.073730;;,
+ 16;3; 1.460671,-0.139217, 4.073730;;,
+ 17;3; 1.460671,-0.139217, 4.073730;;,
+ 18;3; 1.460671,-0.139217, 4.073730;;,
+ 19;3; 1.460671,-0.139217, 4.073730;;,
+ 20;3; 1.460671,-0.139217, 4.073730;;,
+ 21;3; 1.460671,-0.139217, 4.073730;;,
+ 22;3; 1.460671,-0.139217, 4.073730;;,
+ 23;3; 1.460671,-0.139217, 4.073730;;,
+ 24;3; 1.460671,-0.139217, 4.073730;;,
+ 25;3; 1.460671,-0.139217, 4.073730;;,
+ 26;3; 1.460671,-0.139217, 4.073730;;,
+ 27;3; 1.460671,-0.139217, 4.073730;;,
+ 28;3; 1.460671,-0.139217, 4.073730;;,
+ 29;3; 1.460671,-0.139217, 4.073730;;,
+ 30;3; 1.460671,-0.139217, 4.073730;;,
+ 31;3; 1.460671,-0.139217, 4.073730;;,
+ 32;3; 1.460671,-0.139217, 4.073730;;,
+ 33;3; 1.460671,-0.139217, 4.073730;;,
+ 34;3; 1.460671,-0.139217, 4.073730;;,
+ 35;3; 1.460671,-0.139217, 4.073730;;,
+ 36;3; 1.460671,-0.139217, 4.073730;;,
+ 37;3; 1.460671,-0.139217, 4.073730;;,
+ 38;3; 1.460671,-0.139217, 4.073730;;,
+ 39;3; 1.460671,-0.139217, 4.073730;;,
+ 40;3; 1.460671,-0.139217, 4.073730;;,
+ 41;3; 1.460671,-0.139217, 4.073730;;,
+ 42;3; 1.460671,-0.139217, 4.073730;;,
+ 43;3; 1.460671,-0.139217, 4.073730;;,
+ 44;3; 1.460671,-0.139217, 4.073730;;,
+ 45;3; 1.460671,-0.139217, 4.073730;;,
+ 46;3; 1.460671,-0.139217, 4.073730;;,
+ 47;3; 1.460671,-0.139217, 4.073730;;,
+ 48;3; 1.460671,-0.139217, 4.073730;;,
+ 49;3; 1.460671,-0.139217, 4.073730;;,
+ 50;3; 1.460671,-0.139217, 4.073730;;,
+ 51;3; 1.460671,-0.139217, 4.073730;;,
+ 52;3; 1.460671,-0.139217, 4.073730;;,
+ 53;3; 1.460671,-0.139217, 4.073730;;,
+ 54;3; 1.460671,-0.139217, 4.073730;;,
+ 55;3; 1.460671,-0.139217, 4.073730;;,
+ 56;3; 1.460671,-0.139217, 4.073730;;,
+ 57;3; 1.460671,-0.139217, 4.073730;;,
+ 58;3; 1.460671,-0.139217, 4.073730;;,
+ 59;3; 1.460671,-0.139217, 4.073730;;,
+ 60;3; 1.460671,-0.139217, 4.073730;;,
+ 61;3; 1.460671,-0.139217, 4.073730;;,
+ 62;3; 1.460671,-0.139217, 4.073730;;,
+ 63;3; 1.460671,-0.139217, 4.073730;;,
+ 64;3; 1.460671,-0.139217, 4.073730;;,
+ 65;3; 1.460671,-0.139217, 4.073730;;,
+ 66;3; 1.460671,-0.139217, 4.073730;;,
+ 67;3; 1.460671,-0.139217, 4.073730;;,
+ 68;3; 1.460671,-0.139217, 4.073730;;,
+ 69;3; 1.460671,-0.139217, 4.073730;;,
+ 70;3; 1.460671,-0.139217, 4.073730;;,
+ 71;3; 1.460671,-0.139217, 4.073730;;,
+ 72;3; 1.460671,-0.139217, 4.073730;;,
+ 73;3; 1.460671,-0.139217, 4.073730;;,
+ 74;3; 1.460671,-0.139217, 4.073730;;,
+ 75;3; 1.460671,-0.139217, 4.073730;;,
+ 76;3; 1.460671,-0.139217, 4.073730;;,
+ 77;3; 1.460671,-0.139217, 4.073730;;,
+ 78;3; 1.460671,-0.139217, 4.073730;;,
+ 79;3; 1.460671,-0.139217, 4.073730;;,
+ 80;3; 1.460671,-0.139217, 4.073730;;,
+ 81;3; 1.460671,-0.139217, 4.073730;;,
+ 82;3; 1.460671,-0.139217, 4.073730;;,
+ 83;3; 1.460671,-0.139217, 4.073730;;,
+ 84;3; 1.460671,-0.139217, 4.073730;;,
+ 85;3; 1.460671,-0.139217, 4.073730;;,
+ 86;3; 1.460671,-0.139217, 4.073730;;,
+ 87;3; 1.460671,-0.139217, 4.073730;;,
+ 88;3; 1.460671,-0.139217, 4.073730;;,
+ 89;3; 1.460671,-0.139217, 4.073730;;,
+ 90;3; 1.460671,-0.139217, 4.073730;;,
+ 91;3; 1.460671,-0.139217, 4.073730;;,
+ 92;3; 1.460671,-0.139217, 4.073730;;,
+ 93;3; 1.460671,-0.139217, 4.073730;;,
+ 94;3; 1.460671,-0.139217, 4.073730;;,
+ 95;3; 1.460671,-0.139217, 4.073730;;,
+ 96;3; 1.460671,-0.139217, 4.073730;;,
+ 97;3; 1.460671,-0.139217, 4.073730;;,
+ 98;3; 1.460671,-0.139217, 4.073730;;,
+ 99;3; 1.460671,-0.139217, 4.073730;;,
+ 100;3; 1.460671,-0.139217, 4.073730;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 82;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 83;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 84;4; -0.235816, 0.968955,-0.000000,-0.000000;;,
+ 85;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 86;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 87;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 88;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 89;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926,-0.000000,-0.000000;;,
+ 91;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 92;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 93;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 94;4; 0.247343, 0.965926, 0.000000,-0.000000;;,
+ 95;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 96;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 97;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 98;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 99;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; 1.460671,-0.139216,-3.633328;;,
+ 1;3; 1.460671,-0.139216,-3.633328;;,
+ 2;3; 1.460671,-0.139216,-3.633328;;,
+ 3;3; 1.460671,-0.139216,-3.633328;;,
+ 4;3; 1.460671,-0.139216,-3.633328;;,
+ 5;3; 1.460671,-0.139216,-3.633328;;,
+ 6;3; 1.460671,-0.139216,-3.633328;;,
+ 7;3; 1.460671,-0.139216,-3.633328;;,
+ 8;3; 1.460671,-0.139216,-3.633328;;,
+ 9;3; 1.460671,-0.139216,-3.633328;;,
+ 10;3; 1.460671,-0.139216,-3.633328;;,
+ 11;3; 1.460671,-0.139216,-3.633328;;,
+ 12;3; 1.460671,-0.139216,-3.633328;;,
+ 13;3; 1.460671,-0.139216,-3.633328;;,
+ 14;3; 1.460671,-0.139216,-3.633328;;,
+ 15;3; 1.460671,-0.139216,-3.633328;;,
+ 16;3; 1.460671,-0.139216,-3.633328;;,
+ 17;3; 1.460671,-0.139216,-3.633328;;,
+ 18;3; 1.460671,-0.139216,-3.633328;;,
+ 19;3; 1.460671,-0.139216,-3.633328;;,
+ 20;3; 1.460671,-0.139216,-3.633328;;,
+ 21;3; 1.460671,-0.139216,-3.633328;;,
+ 22;3; 1.460671,-0.139216,-3.633328;;,
+ 23;3; 1.460671,-0.139216,-3.633328;;,
+ 24;3; 1.460671,-0.139216,-3.633328;;,
+ 25;3; 1.460671,-0.139216,-3.633328;;,
+ 26;3; 1.460671,-0.139216,-3.633328;;,
+ 27;3; 1.460671,-0.139216,-3.633328;;,
+ 28;3; 1.460671,-0.139216,-3.633328;;,
+ 29;3; 1.460671,-0.139216,-3.633328;;,
+ 30;3; 1.460671,-0.139216,-3.633328;;,
+ 31;3; 1.460671,-0.139216,-3.633328;;,
+ 32;3; 1.460671,-0.139216,-3.633328;;,
+ 33;3; 1.460671,-0.139216,-3.633328;;,
+ 34;3; 1.460671,-0.139216,-3.633328;;,
+ 35;3; 1.460671,-0.139216,-3.633328;;,
+ 36;3; 1.460671,-0.139216,-3.633328;;,
+ 37;3; 1.460671,-0.139216,-3.633328;;,
+ 38;3; 1.460671,-0.139216,-3.633328;;,
+ 39;3; 1.460671,-0.139216,-3.633328;;,
+ 40;3; 1.460671,-0.139216,-3.633328;;,
+ 41;3; 1.460671,-0.139216,-3.633328;;,
+ 42;3; 1.460671,-0.139216,-3.633328;;,
+ 43;3; 1.460671,-0.139216,-3.633328;;,
+ 44;3; 1.460671,-0.139216,-3.633328;;,
+ 45;3; 1.460671,-0.139216,-3.633328;;,
+ 46;3; 1.460671,-0.139216,-3.633328;;,
+ 47;3; 1.460671,-0.139216,-3.633328;;,
+ 48;3; 1.460671,-0.139216,-3.633328;;,
+ 49;3; 1.460671,-0.139216,-3.633328;;,
+ 50;3; 1.460671,-0.139216,-3.633328;;,
+ 51;3; 1.460671,-0.139216,-3.633328;;,
+ 52;3; 1.460671,-0.139216,-3.633328;;,
+ 53;3; 1.460671,-0.139216,-3.633328;;,
+ 54;3; 1.460671,-0.139216,-3.633328;;,
+ 55;3; 1.460671,-0.139216,-3.633328;;,
+ 56;3; 1.460671,-0.139216,-3.633328;;,
+ 57;3; 1.460671,-0.139216,-3.633328;;,
+ 58;3; 1.460671,-0.139216,-3.633328;;,
+ 59;3; 1.460671,-0.139216,-3.633328;;,
+ 60;3; 1.460671,-0.139216,-3.633328;;,
+ 61;3; 1.460671,-0.139216,-3.633328;;,
+ 62;3; 1.460671,-0.139216,-3.633328;;,
+ 63;3; 1.460671,-0.139216,-3.633328;;,
+ 64;3; 1.460671,-0.139216,-3.633328;;,
+ 65;3; 1.460671,-0.139216,-3.633328;;,
+ 66;3; 1.460671,-0.139216,-3.633328;;,
+ 67;3; 1.460671,-0.139216,-3.633328;;,
+ 68;3; 1.460671,-0.139216,-3.633328;;,
+ 69;3; 1.460671,-0.139216,-3.633328;;,
+ 70;3; 1.460671,-0.139216,-3.633328;;,
+ 71;3; 1.460671,-0.139216,-3.633328;;,
+ 72;3; 1.460671,-0.139216,-3.633328;;,
+ 73;3; 1.460671,-0.139216,-3.633328;;,
+ 74;3; 1.460671,-0.139216,-3.633328;;,
+ 75;3; 1.460671,-0.139216,-3.633328;;,
+ 76;3; 1.460671,-0.139216,-3.633328;;,
+ 77;3; 1.460671,-0.139216,-3.633328;;,
+ 78;3; 1.460671,-0.139216,-3.633328;;,
+ 79;3; 1.460671,-0.139216,-3.633328;;,
+ 80;3; 1.460671,-0.139216,-3.633328;;,
+ 81;3; 1.460671,-0.139216,-3.633328;;,
+ 82;3; 1.460671,-0.139216,-3.633328;;,
+ 83;3; 1.460671,-0.139216,-3.633328;;,
+ 84;3; 1.460671,-0.139216,-3.633328;;,
+ 85;3; 1.460671,-0.139216,-3.633328;;,
+ 86;3; 1.460671,-0.139216,-3.633328;;,
+ 87;3; 1.460671,-0.139216,-3.633328;;,
+ 88;3; 1.460671,-0.139216,-3.633328;;,
+ 89;3; 1.460671,-0.139216,-3.633328;;,
+ 90;3; 1.460671,-0.139216,-3.633328;;,
+ 91;3; 1.460671,-0.139216,-3.633328;;,
+ 92;3; 1.460671,-0.139216,-3.633328;;,
+ 93;3; 1.460671,-0.139216,-3.633328;;,
+ 94;3; 1.460671,-0.139216,-3.633328;;,
+ 95;3; 1.460671,-0.139216,-3.633328;;,
+ 96;3; 1.460671,-0.139216,-3.633328;;,
+ 97;3; 1.460671,-0.139216,-3.633328;;,
+ 98;3; 1.460671,-0.139216,-3.633328;;,
+ 99;3; 1.460671,-0.139216,-3.633328;;,
+ 100;3; 1.460671,-0.139216,-3.633328;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000,-0.000000,-0.000000;;,
+ 81;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 82;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 83;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 84;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 85;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 86;4; 0.247343, 0.965926, 0.000000,-0.000000;;,
+ 87;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 88;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 89;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926,-0.000000,-0.000000;;,
+ 91;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 92;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 93;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 94;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 95;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 96;4; -0.235816, 0.968955,-0.000000,-0.000000;;,
+ 97;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 98;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 99;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_003}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; -1.438650,-0.139217, 4.073730;;,
+ 1;3; -1.438650,-0.139217, 4.073730;;,
+ 2;3; -1.438650,-0.139217, 4.073730;;,
+ 3;3; -1.438650,-0.139217, 4.073730;;,
+ 4;3; -1.438650,-0.139217, 4.073730;;,
+ 5;3; -1.438650,-0.139217, 4.073730;;,
+ 6;3; -1.438650,-0.139217, 4.073730;;,
+ 7;3; -1.438650,-0.139217, 4.073730;;,
+ 8;3; -1.438650,-0.139217, 4.073730;;,
+ 9;3; -1.438650,-0.139217, 4.073730;;,
+ 10;3; -1.438650,-0.139217, 4.073730;;,
+ 11;3; -1.438650,-0.139217, 4.073730;;,
+ 12;3; -1.438650,-0.139217, 4.073730;;,
+ 13;3; -1.438650,-0.139217, 4.073730;;,
+ 14;3; -1.438650,-0.139217, 4.073730;;,
+ 15;3; -1.438650,-0.139217, 4.073730;;,
+ 16;3; -1.438650,-0.139217, 4.073730;;,
+ 17;3; -1.438650,-0.139217, 4.073730;;,
+ 18;3; -1.438650,-0.139217, 4.073730;;,
+ 19;3; -1.438650,-0.139217, 4.073730;;,
+ 20;3; -1.438650,-0.139217, 4.073730;;,
+ 21;3; -1.438650,-0.139217, 4.073730;;,
+ 22;3; -1.438650,-0.139217, 4.073730;;,
+ 23;3; -1.438650,-0.139217, 4.073730;;,
+ 24;3; -1.438650,-0.139217, 4.073730;;,
+ 25;3; -1.438650,-0.139217, 4.073730;;,
+ 26;3; -1.438650,-0.139217, 4.073730;;,
+ 27;3; -1.438650,-0.139217, 4.073730;;,
+ 28;3; -1.438650,-0.139217, 4.073730;;,
+ 29;3; -1.438650,-0.139217, 4.073730;;,
+ 30;3; -1.438650,-0.139217, 4.073730;;,
+ 31;3; -1.438650,-0.139217, 4.073730;;,
+ 32;3; -1.438650,-0.139217, 4.073730;;,
+ 33;3; -1.438650,-0.139217, 4.073730;;,
+ 34;3; -1.438650,-0.139217, 4.073730;;,
+ 35;3; -1.438650,-0.139217, 4.073730;;,
+ 36;3; -1.438650,-0.139217, 4.073730;;,
+ 37;3; -1.438650,-0.139217, 4.073730;;,
+ 38;3; -1.438650,-0.139217, 4.073730;;,
+ 39;3; -1.438650,-0.139217, 4.073730;;,
+ 40;3; -1.438650,-0.139217, 4.073730;;,
+ 41;3; -1.438650,-0.139217, 4.073730;;,
+ 42;3; -1.438650,-0.139217, 4.073730;;,
+ 43;3; -1.438650,-0.139217, 4.073730;;,
+ 44;3; -1.438650,-0.139217, 4.073730;;,
+ 45;3; -1.438650,-0.139217, 4.073730;;,
+ 46;3; -1.438650,-0.139217, 4.073730;;,
+ 47;3; -1.438650,-0.139217, 4.073730;;,
+ 48;3; -1.438650,-0.139217, 4.073730;;,
+ 49;3; -1.438650,-0.139217, 4.073730;;,
+ 50;3; -1.438650,-0.139217, 4.073730;;,
+ 51;3; -1.438650,-0.139217, 4.073730;;,
+ 52;3; -1.438650,-0.139217, 4.073730;;,
+ 53;3; -1.438650,-0.139217, 4.073730;;,
+ 54;3; -1.438650,-0.139217, 4.073730;;,
+ 55;3; -1.438650,-0.139217, 4.073730;;,
+ 56;3; -1.438650,-0.139217, 4.073730;;,
+ 57;3; -1.438650,-0.139217, 4.073730;;,
+ 58;3; -1.438650,-0.139217, 4.073730;;,
+ 59;3; -1.438650,-0.139217, 4.073730;;,
+ 60;3; -1.438650,-0.139217, 4.073730;;,
+ 61;3; -1.438650,-0.139217, 4.073730;;,
+ 62;3; -1.438650,-0.139217, 4.073730;;,
+ 63;3; -1.438650,-0.139217, 4.073730;;,
+ 64;3; -1.438650,-0.139217, 4.073730;;,
+ 65;3; -1.438650,-0.139217, 4.073730;;,
+ 66;3; -1.438650,-0.139217, 4.073730;;,
+ 67;3; -1.438650,-0.139217, 4.073730;;,
+ 68;3; -1.438650,-0.139217, 4.073730;;,
+ 69;3; -1.438650,-0.139217, 4.073730;;,
+ 70;3; -1.438650,-0.139217, 4.073730;;,
+ 71;3; -1.438650,-0.139217, 4.073730;;,
+ 72;3; -1.438650,-0.139217, 4.073730;;,
+ 73;3; -1.438650,-0.139217, 4.073730;;,
+ 74;3; -1.438650,-0.139217, 4.073730;;,
+ 75;3; -1.438650,-0.139217, 4.073730;;,
+ 76;3; -1.438650,-0.139217, 4.073730;;,
+ 77;3; -1.438650,-0.139217, 4.073730;;,
+ 78;3; -1.438650,-0.139217, 4.073730;;,
+ 79;3; -1.438650,-0.139217, 4.073730;;,
+ 80;3; -1.438650,-0.139217, 4.073730;;,
+ 81;3; -1.438650,-0.139217, 4.073730;;,
+ 82;3; -1.438650,-0.139217, 4.073730;;,
+ 83;3; -1.438650,-0.139217, 4.073730;;,
+ 84;3; -1.438650,-0.139217, 4.073730;;,
+ 85;3; -1.438650,-0.139217, 4.073730;;,
+ 86;3; -1.438650,-0.139217, 4.073730;;,
+ 87;3; -1.438650,-0.139217, 4.073730;;,
+ 88;3; -1.438650,-0.139217, 4.073730;;,
+ 89;3; -1.438650,-0.139217, 4.073730;;,
+ 90;3; -1.438650,-0.139217, 4.073730;;,
+ 91;3; -1.438650,-0.139217, 4.073730;;,
+ 92;3; -1.438650,-0.139217, 4.073730;;,
+ 93;3; -1.438650,-0.139217, 4.073730;;,
+ 94;3; -1.438650,-0.139217, 4.073730;;,
+ 95;3; -1.438650,-0.139217, 4.073730;;,
+ 96;3; -1.438650,-0.139217, 4.073730;;,
+ 97;3; -1.438650,-0.139217, 4.073730;;,
+ 98;3; -1.438650,-0.139217, 4.073730;;,
+ 99;3; -1.438650,-0.139217, 4.073730;;,
+ 100;3; -1.438650,-0.139217, 4.073730;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; 0.000000, 1.000000,-0.000000,-0.000000;;,
+ 81;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 82;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 83;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 84;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 85;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 86;4; 0.247344, 0.965926, 0.000000,-0.000000;;,
+ 87;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 88;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 89;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926, 0.000000,-0.000000;;,
+ 91;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 92;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 93;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 94;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 95;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 96;4; -0.235815, 0.968955,-0.000000,-0.000000;;,
+ 97;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 98;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 99;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_RR_leg}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; -1.438651,-0.139216,-3.633328;;,
+ 1;3; -1.438651,-0.139216,-3.633328;;,
+ 2;3; -1.438651,-0.139216,-3.633328;;,
+ 3;3; -1.438651,-0.139216,-3.633328;;,
+ 4;3; -1.438651,-0.139216,-3.633328;;,
+ 5;3; -1.438651,-0.139216,-3.633328;;,
+ 6;3; -1.438651,-0.139216,-3.633328;;,
+ 7;3; -1.438651,-0.139216,-3.633328;;,
+ 8;3; -1.438651,-0.139216,-3.633328;;,
+ 9;3; -1.438651,-0.139216,-3.633328;;,
+ 10;3; -1.438651,-0.139216,-3.633328;;,
+ 11;3; -1.438651,-0.139216,-3.633328;;,
+ 12;3; -1.438651,-0.139216,-3.633328;;,
+ 13;3; -1.438651,-0.139216,-3.633328;;,
+ 14;3; -1.438651,-0.139216,-3.633328;;,
+ 15;3; -1.438651,-0.139216,-3.633328;;,
+ 16;3; -1.438651,-0.139216,-3.633328;;,
+ 17;3; -1.438651,-0.139216,-3.633328;;,
+ 18;3; -1.438651,-0.139216,-3.633328;;,
+ 19;3; -1.438651,-0.139216,-3.633328;;,
+ 20;3; -1.438651,-0.139216,-3.633328;;,
+ 21;3; -1.438651,-0.139216,-3.633328;;,
+ 22;3; -1.438651,-0.139216,-3.633328;;,
+ 23;3; -1.438651,-0.139216,-3.633328;;,
+ 24;3; -1.438651,-0.139216,-3.633328;;,
+ 25;3; -1.438651,-0.139216,-3.633328;;,
+ 26;3; -1.438651,-0.139216,-3.633328;;,
+ 27;3; -1.438651,-0.139216,-3.633328;;,
+ 28;3; -1.438651,-0.139216,-3.633328;;,
+ 29;3; -1.438651,-0.139216,-3.633328;;,
+ 30;3; -1.438651,-0.139216,-3.633328;;,
+ 31;3; -1.438651,-0.139216,-3.633328;;,
+ 32;3; -1.438651,-0.139216,-3.633328;;,
+ 33;3; -1.438651,-0.139216,-3.633328;;,
+ 34;3; -1.438651,-0.139216,-3.633328;;,
+ 35;3; -1.438651,-0.139216,-3.633328;;,
+ 36;3; -1.438651,-0.139216,-3.633328;;,
+ 37;3; -1.438651,-0.139216,-3.633328;;,
+ 38;3; -1.438651,-0.139216,-3.633328;;,
+ 39;3; -1.438651,-0.139216,-3.633328;;,
+ 40;3; -1.438651,-0.139216,-3.633328;;,
+ 41;3; -1.438651,-0.139216,-3.633328;;,
+ 42;3; -1.438651,-0.139216,-3.633328;;,
+ 43;3; -1.438651,-0.139216,-3.633328;;,
+ 44;3; -1.438651,-0.139216,-3.633328;;,
+ 45;3; -1.438651,-0.139216,-3.633328;;,
+ 46;3; -1.438651,-0.139216,-3.633328;;,
+ 47;3; -1.438651,-0.139216,-3.633328;;,
+ 48;3; -1.438651,-0.139216,-3.633328;;,
+ 49;3; -1.438651,-0.139216,-3.633328;;,
+ 50;3; -1.438651,-0.139216,-3.633328;;,
+ 51;3; -1.438651,-0.139216,-3.633328;;,
+ 52;3; -1.438651,-0.139216,-3.633328;;,
+ 53;3; -1.438651,-0.139216,-3.633328;;,
+ 54;3; -1.438651,-0.139216,-3.633328;;,
+ 55;3; -1.438651,-0.139216,-3.633328;;,
+ 56;3; -1.438651,-0.139216,-3.633328;;,
+ 57;3; -1.438651,-0.139216,-3.633328;;,
+ 58;3; -1.438651,-0.139216,-3.633328;;,
+ 59;3; -1.438651,-0.139216,-3.633328;;,
+ 60;3; -1.438651,-0.139216,-3.633328;;,
+ 61;3; -1.438651,-0.139216,-3.633328;;,
+ 62;3; -1.438651,-0.139216,-3.633328;;,
+ 63;3; -1.438651,-0.139216,-3.633328;;,
+ 64;3; -1.438651,-0.139216,-3.633328;;,
+ 65;3; -1.438651,-0.139216,-3.633328;;,
+ 66;3; -1.438651,-0.139216,-3.633328;;,
+ 67;3; -1.438651,-0.139216,-3.633328;;,
+ 68;3; -1.438651,-0.139216,-3.633328;;,
+ 69;3; -1.438651,-0.139216,-3.633328;;,
+ 70;3; -1.438651,-0.139216,-3.633328;;,
+ 71;3; -1.438651,-0.139216,-3.633328;;,
+ 72;3; -1.438651,-0.139216,-3.633328;;,
+ 73;3; -1.438651,-0.139216,-3.633328;;,
+ 74;3; -1.438651,-0.139216,-3.633328;;,
+ 75;3; -1.438651,-0.139216,-3.633328;;,
+ 76;3; -1.438651,-0.139216,-3.633328;;,
+ 77;3; -1.438651,-0.139216,-3.633328;;,
+ 78;3; -1.438651,-0.139216,-3.633328;;,
+ 79;3; -1.438651,-0.139216,-3.633328;;,
+ 80;3; -1.438651,-0.139216,-3.633328;;,
+ 81;3; -1.438651,-0.139216,-3.633328;;,
+ 82;3; -1.438651,-0.139216,-3.633328;;,
+ 83;3; -1.438651,-0.139216,-3.633328;;,
+ 84;3; -1.438651,-0.139216,-3.633328;;,
+ 85;3; -1.438651,-0.139216,-3.633328;;,
+ 86;3; -1.438651,-0.139216,-3.633328;;,
+ 87;3; -1.438651,-0.139216,-3.633328;;,
+ 88;3; -1.438651,-0.139216,-3.633328;;,
+ 89;3; -1.438651,-0.139216,-3.633328;;,
+ 90;3; -1.438651,-0.139216,-3.633328;;,
+ 91;3; -1.438651,-0.139216,-3.633328;;,
+ 92;3; -1.438651,-0.139216,-3.633328;;,
+ 93;3; -1.438651,-0.139216,-3.633328;;,
+ 94;3; -1.438651,-0.139216,-3.633328;;,
+ 95;3; -1.438651,-0.139216,-3.633328;;,
+ 96;3; -1.438651,-0.139216,-3.633328;;,
+ 97;3; -1.438651,-0.139216,-3.633328;;,
+ 98;3; -1.438651,-0.139216,-3.633328;;,
+ 99;3; -1.438651,-0.139216,-3.633328;;,
+ 100;3; -1.438651,-0.139216,-3.633328;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 1;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 2;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 3;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 4;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 5;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 6;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 7;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 8;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 9;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 10;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 11;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 12;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 13;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 14;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 15;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 16;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 17;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 18;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 19;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 20;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 21;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 22;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 23;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 24;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 25;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 26;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 27;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 28;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 29;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 30;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 31;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 32;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 33;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 34;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 35;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 36;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 37;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 38;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 39;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 40;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 41;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 42;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 43;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 44;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 45;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 46;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 47;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 48;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 49;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 50;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 51;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 52;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 53;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 54;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 55;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 56;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 57;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 58;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 59;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 60;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 61;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 62;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 63;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 64;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 65;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 66;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 67;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 68;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 69;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 70;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 71;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 72;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 73;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 74;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 75;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 76;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 77;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 78;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 79;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 80;4; -0.000000, 1.000000, 0.000000,-0.000000;;,
+ 81;4; -0.023017, 0.996971,-0.000000,-0.000000;;,
+ 82;4; -0.087830, 0.988440,-0.000000,-0.000000;;,
+ 83;4; -0.171026, 0.977486,-0.000000,-0.000000;;,
+ 84;4; -0.235816, 0.968955,-0.000000,-0.000000;;,
+ 85;4; -0.258819, 0.965926,-0.000000,-0.000000;;,
+ 86;4; -0.247344, 0.965926,-0.000000,-0.000000;;,
+ 87;4; -0.212807, 0.965926,-0.000000,-0.000000;;,
+ 88;4; -0.156652, 0.965926,-0.000000,-0.000000;;,
+ 89;4; -0.083204, 0.965926,-0.000000,-0.000000;;,
+ 90;4; -0.000000, 0.965926,-0.000000,-0.000000;;,
+ 91;4; 0.083204, 0.965926, 0.000000,-0.000000;;,
+ 92;4; 0.156652, 0.965926, 0.000000,-0.000000;;,
+ 93;4; 0.212807, 0.965926, 0.000000,-0.000000;;,
+ 94;4; 0.247343, 0.965926, 0.000000,-0.000000;;,
+ 95;4; 0.258819, 0.965926, 0.000000,-0.000000;;,
+ 96;4; 0.235815, 0.968955, 0.000000,-0.000000;;,
+ 97;4; 0.171026, 0.977486, 0.000000,-0.000000;;,
+ 98;4; 0.087830, 0.988440, 0.000000,-0.000000;;,
+ 99;4; 0.023017, 0.996971, 0.000000,-0.000000;;,
+ 100;4; -0.000000, 1.000000, 0.000000,-0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Head}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; 0.000000, 4.052526, 3.788038;;,
+ 1;3; 0.000000, 4.052526, 3.788038;;,
+ 2;3; 0.000000, 4.052526, 3.788038;;,
+ 3;3; 0.000000, 4.052526, 3.788038;;,
+ 4;3; 0.000000, 4.052526, 3.788038;;,
+ 5;3; 0.000000, 4.052526, 3.788038;;,
+ 6;3; 0.000000, 4.052526, 3.788038;;,
+ 7;3; 0.000000, 4.052526, 3.788038;;,
+ 8;3; 0.000000, 4.052526, 3.788038;;,
+ 9;3; 0.000000, 4.052526, 3.788038;;,
+ 10;3; 0.000000, 4.052526, 3.788038;;,
+ 11;3; 0.000000, 4.052526, 3.788038;;,
+ 12;3; 0.000000, 4.052526, 3.788038;;,
+ 13;3; 0.000000, 4.052526, 3.788038;;,
+ 14;3; 0.000000, 4.052526, 3.788038;;,
+ 15;3; 0.000000, 4.052526, 3.788038;;,
+ 16;3; 0.000000, 4.052526, 3.788038;;,
+ 17;3; 0.000000, 4.052526, 3.788038;;,
+ 18;3; 0.000000, 4.052526, 3.788038;;,
+ 19;3; 0.000000, 4.052526, 3.788038;;,
+ 20;3; 0.000000, 4.052526, 3.788038;;,
+ 21;3; 0.000000, 4.052526, 3.788038;;,
+ 22;3; 0.000000, 4.052526, 3.788038;;,
+ 23;3; 0.000000, 4.052526, 3.788038;;,
+ 24;3; 0.000000, 4.052526, 3.788038;;,
+ 25;3; 0.000000, 4.052526, 3.788038;;,
+ 26;3; 0.000000, 4.052526, 3.788038;;,
+ 27;3; 0.000000, 4.052526, 3.788038;;,
+ 28;3; 0.000000, 4.052526, 3.788038;;,
+ 29;3; 0.000000, 4.052526, 3.788038;;,
+ 30;3; 0.000000, 4.052526, 3.788038;;,
+ 31;3; 0.000000, 4.052526, 3.788038;;,
+ 32;3; 0.000000, 4.052526, 3.788038;;,
+ 33;3; 0.000000, 4.052526, 3.788038;;,
+ 34;3; 0.000000, 4.052526, 3.788038;;,
+ 35;3; 0.000000, 4.052526, 3.788038;;,
+ 36;3; 0.000000, 4.052526, 3.788038;;,
+ 37;3; 0.000000, 4.052526, 3.788038;;,
+ 38;3; 0.000000, 4.052526, 3.788038;;,
+ 39;3; 0.000000, 4.052526, 3.788038;;,
+ 40;3; 0.000000, 4.052526, 3.788038;;,
+ 41;3; 0.000000, 4.052526, 3.788038;;,
+ 42;3; 0.000000, 4.052526, 3.788038;;,
+ 43;3; 0.000000, 4.052526, 3.788038;;,
+ 44;3; 0.000000, 4.052526, 3.788038;;,
+ 45;3; 0.000000, 4.052526, 3.788038;;,
+ 46;3; 0.000000, 4.052526, 3.788038;;,
+ 47;3; 0.000000, 4.052526, 3.788038;;,
+ 48;3; 0.000000, 4.052526, 3.788038;;,
+ 49;3; 0.000000, 4.052526, 3.788038;;,
+ 50;3; 0.000000, 4.052526, 3.788038;;,
+ 51;3; 0.000000, 4.052526, 3.788038;;,
+ 52;3; 0.000000, 4.052526, 3.788038;;,
+ 53;3; 0.000000, 4.052526, 3.788038;;,
+ 54;3; 0.000000, 4.052526, 3.788038;;,
+ 55;3; 0.000000, 4.052526, 3.788038;;,
+ 56;3; 0.000000, 4.052526, 3.788038;;,
+ 57;3; 0.000000, 4.052526, 3.788038;;,
+ 58;3; 0.000000, 4.052526, 3.788038;;,
+ 59;3; 0.000000, 4.052526, 3.788038;;,
+ 60;3; 0.000000, 4.052526, 3.788038;;,
+ 61;3; 0.000000, 4.052526, 3.788038;;,
+ 62;3; 0.000000, 4.052526, 3.788038;;,
+ 63;3; 0.000000, 4.052526, 3.788038;;,
+ 64;3; 0.000000, 4.052526, 3.788038;;,
+ 65;3; 0.000000, 4.052526, 3.788038;;,
+ 66;3; 0.000000, 4.052526, 3.788038;;,
+ 67;3; 0.000000, 4.052526, 3.788038;;,
+ 68;3; 0.000000, 4.052526, 3.788038;;,
+ 69;3; 0.000000, 4.052526, 3.788038;;,
+ 70;3; 0.000000, 4.052526, 3.788038;;,
+ 71;3; 0.000000, 4.052526, 3.788038;;,
+ 72;3; 0.000000, 4.052526, 3.788038;;,
+ 73;3; 0.000000, 4.052526, 3.788038;;,
+ 74;3; 0.000000, 4.052526, 3.788038;;,
+ 75;3; 0.000000, 4.052526, 3.788038;;,
+ 76;3; 0.000000, 4.052526, 3.788038;;,
+ 77;3; 0.000000, 4.052526, 3.788038;;,
+ 78;3; 0.000000, 4.052526, 3.788038;;,
+ 79;3; 0.000000, 4.052526, 3.788038;;,
+ 80;3; 0.000000, 4.052526, 3.788038;;,
+ 81;3; 0.000000, 4.052526, 3.788038;;,
+ 82;3; 0.000000, 4.052526, 3.788038;;,
+ 83;3; 0.000000, 4.052526, 3.788038;;,
+ 84;3; 0.000000, 4.052526, 3.788038;;,
+ 85;3; 0.000000, 4.052526, 3.788038;;,
+ 86;3; 0.000000, 4.052526, 3.788038;;,
+ 87;3; 0.000000, 4.052526, 3.788038;;,
+ 88;3; 0.000000, 4.052526, 3.788038;;,
+ 89;3; 0.000000, 4.052526, 3.788038;;,
+ 90;3; 0.000000, 4.052526, 3.788038;;,
+ 91;3; 0.000000, 4.052526, 3.788038;;,
+ 92;3; 0.000000, 4.052526, 3.788038;;,
+ 93;3; 0.000000, 4.052526, 3.788038;;,
+ 94;3; 0.000000, 4.052526, 3.788038;;,
+ 95;3; 0.000000, 4.052526, 3.788038;;,
+ 96;3; 0.000000, 4.052526, 3.788038;;,
+ 97;3; 0.000000, 4.052526, 3.788038;;,
+ 98;3; 0.000000, 4.052526, 3.788038;;,
+ 99;3; 0.000000, 4.052526, 3.788038;;,
+ 100;3; 0.000000, 4.052526, 3.788038;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 1;4; -0.000000,-0.000000, 0.706989, 0.707223;;,
+ 2;4; -0.000000,-0.000000, 0.706631, 0.707576;;,
+ 3;4; -0.000000,-0.000000, 0.706034, 0.708164;;,
+ 4;4; -0.000000,-0.000000, 0.705202, 0.708983;;,
+ 5;4; -0.000000,-0.000000, 0.704147, 0.710022;;,
+ 6;4; -0.000000,-0.000000, 0.702890, 0.711259;;,
+ 7;4; -0.000000,-0.000000, 0.701461, 0.712663;;,
+ 8;4; -0.000000,-0.000000, 0.699901, 0.714196;;,
+ 9;4; -0.000000,-0.000000, 0.698257, 0.715808;;,
+ 10;4; -0.000000,-0.000000, 0.696584, 0.717447;;,
+ 11;4; -0.000000,-0.000000, 0.694937, 0.719057;;,
+ 12;4; -0.000000,-0.000000, 0.693372, 0.720585;;,
+ 13;4; -0.000000,-0.000000, 0.691936, 0.721982;;,
+ 14;4; -0.000000,-0.000000, 0.690669, 0.723209;;,
+ 15;4; -0.000000,-0.000000, 0.689603, 0.724237;;,
+ 16;4; -0.000000,-0.000000, 0.688758, 0.725043;;,
+ 17;4; -0.000000,-0.000000, 0.688146, 0.725617;;,
+ 18;4; -0.000000,-0.000000, 0.687773, 0.725954;;,
+ 19;4; -0.000000,-0.000000, 0.687638, 0.726054;;,
+ 20;4; -0.000000,-0.000000, 0.687896, 0.725759;;,
+ 21;4; -0.000000,-0.000000, 0.688709, 0.724905;;,
+ 22;4; -0.000000,-0.000000, 0.690081, 0.723488;;,
+ 23;4; -0.000000,-0.000000, 0.692002, 0.721519;;,
+ 24;4; -0.000000,-0.000000, 0.694448, 0.719020;;,
+ 25;4; -0.000000,-0.000000, 0.697377, 0.716035;;,
+ 26;4; -0.000000,-0.000000, 0.700729, 0.712626;;,
+ 27;4; -0.000000,-0.000000, 0.704421, 0.708875;;,
+ 28;4; -0.000000,-0.000000, 0.708352, 0.704885;;,
+ 29;4; -0.000000,-0.000000, 0.712408, 0.700772;;,
+ 30;4; -0.000000,-0.000000, 0.716464, 0.696660;;,
+ 31;4; -0.000000,-0.000000, 0.720399, 0.692673;;,
+ 32;4; -0.000000,-0.000000, 0.724097, 0.688928;;,
+ 33;4; -0.000000,-0.000000, 0.727457, 0.685527;;,
+ 34;4; -0.000000,-0.000000, 0.730396, 0.682552;;,
+ 35;4; -0.000000,-0.000000, 0.732854, 0.680065;;,
+ 36;4; -0.000000,-0.000000, 0.734788, 0.678108;;,
+ 37;4; -0.000000,-0.000000, 0.736174, 0.676706;;,
+ 38;4; -0.000000,-0.000000, 0.737003, 0.675868;;,
+ 39;4; -0.000000,-0.000000, 0.737277, 0.675590;;,
+ 40;4; -0.000000,-0.000000, 0.737111, 0.675764;;,
+ 41;4; -0.000000,-0.000000, 0.736609, 0.676289;;,
+ 42;4; -0.000000,-0.000000, 0.735768, 0.677167;;,
+ 43;4; -0.000000,-0.000000, 0.734596, 0.678392;;,
+ 44;4; -0.000000,-0.000000, 0.733105, 0.679949;;,
+ 45;4; -0.000000,-0.000000, 0.731323, 0.681811;;,
+ 46;4; -0.000000,-0.000000, 0.729285, 0.683939;;,
+ 47;4; -0.000000,-0.000000, 0.727042, 0.686283;;,
+ 48;4; -0.000000,-0.000000, 0.724654, 0.688777;;,
+ 49;4; -0.000000,-0.000000, 0.722192, 0.691349;;,
+ 50;4; -0.000000,-0.000000, 0.719730, 0.693920;;,
+ 51;4; -0.000000,-0.000000, 0.717343, 0.696414;;,
+ 52;4; -0.000000,-0.000000, 0.715099, 0.698758;;,
+ 53;4; -0.000000,-0.000000, 0.713062, 0.700886;;,
+ 54;4; -0.000000,-0.000000, 0.711279, 0.702749;;,
+ 55;4; -0.000000,-0.000000, 0.709789, 0.704305;;,
+ 56;4; -0.000000,-0.000000, 0.708616, 0.705530;;,
+ 57;4; -0.000000,-0.000000, 0.707776, 0.706408;;,
+ 58;4; -0.000000,-0.000000, 0.707273, 0.706933;;,
+ 59;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 60;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 61;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 62;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 63;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 64;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 65;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 66;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 67;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 68;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 69;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 70;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 71;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 72;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 73;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 74;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 75;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 76;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 77;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 78;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 79;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 80;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 81;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 82;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 83;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 84;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 85;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 86;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 87;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 88;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 89;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 90;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 91;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 92;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 93;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 94;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 95;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 96;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 97;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 98;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 99;4; -0.000000,-0.000000, 0.707107, 0.707107;;,
+ 100;4; -0.000000,-0.000000, 0.707107, 0.707107;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {sheep_shaved}
+ AnimationKey { //Position
+ 2;
+ 101;
+ 0;3; 0.000000, 0.000000, 0.000000;;,
+ 1;3; 0.000000, 0.000000, 0.000000;;,
+ 2;3; 0.000000, 0.000000, 0.000000;;,
+ 3;3; 0.000000, 0.000000, 0.000000;;,
+ 4;3; 0.000000, 0.000000, 0.000000;;,
+ 5;3; 0.000000, 0.000000, 0.000000;;,
+ 6;3; 0.000000, 0.000000, 0.000000;;,
+ 7;3; 0.000000, 0.000000, 0.000000;;,
+ 8;3; 0.000000, 0.000000, 0.000000;;,
+ 9;3; 0.000000, 0.000000, 0.000000;;,
+ 10;3; 0.000000, 0.000000, 0.000000;;,
+ 11;3; 0.000000, 0.000000, 0.000000;;,
+ 12;3; 0.000000, 0.000000, 0.000000;;,
+ 13;3; 0.000000, 0.000000, 0.000000;;,
+ 14;3; 0.000000, 0.000000, 0.000000;;,
+ 15;3; 0.000000, 0.000000, 0.000000;;,
+ 16;3; 0.000000, 0.000000, 0.000000;;,
+ 17;3; 0.000000, 0.000000, 0.000000;;,
+ 18;3; 0.000000, 0.000000, 0.000000;;,
+ 19;3; 0.000000, 0.000000, 0.000000;;,
+ 20;3; 0.000000, 0.000000, 0.000000;;,
+ 21;3; 0.000000, 0.000000, 0.000000;;,
+ 22;3; 0.000000, 0.000000, 0.000000;;,
+ 23;3; 0.000000, 0.000000, 0.000000;;,
+ 24;3; 0.000000, 0.000000, 0.000000;;,
+ 25;3; 0.000000, 0.000000, 0.000000;;,
+ 26;3; 0.000000, 0.000000, 0.000000;;,
+ 27;3; 0.000000, 0.000000, 0.000000;;,
+ 28;3; 0.000000, 0.000000, 0.000000;;,
+ 29;3; 0.000000, 0.000000, 0.000000;;,
+ 30;3; 0.000000, 0.000000, 0.000000;;,
+ 31;3; 0.000000, 0.000000, 0.000000;;,
+ 32;3; 0.000000, 0.000000, 0.000000;;,
+ 33;3; 0.000000, 0.000000, 0.000000;;,
+ 34;3; 0.000000, 0.000000, 0.000000;;,
+ 35;3; 0.000000, 0.000000, 0.000000;;,
+ 36;3; 0.000000, 0.000000, 0.000000;;,
+ 37;3; 0.000000, 0.000000, 0.000000;;,
+ 38;3; 0.000000, 0.000000, 0.000000;;,
+ 39;3; 0.000000, 0.000000, 0.000000;;,
+ 40;3; 0.000000, 0.000000, 0.000000;;,
+ 41;3; 0.000000, 0.000000, 0.000000;;,
+ 42;3; 0.000000, 0.000000, 0.000000;;,
+ 43;3; 0.000000, 0.000000, 0.000000;;,
+ 44;3; 0.000000, 0.000000, 0.000000;;,
+ 45;3; 0.000000, 0.000000, 0.000000;;,
+ 46;3; 0.000000, 0.000000, 0.000000;;,
+ 47;3; 0.000000, 0.000000, 0.000000;;,
+ 48;3; 0.000000, 0.000000, 0.000000;;,
+ 49;3; 0.000000, 0.000000, 0.000000;;,
+ 50;3; 0.000000, 0.000000, 0.000000;;,
+ 51;3; 0.000000, 0.000000, 0.000000;;,
+ 52;3; 0.000000, 0.000000, 0.000000;;,
+ 53;3; 0.000000, 0.000000, 0.000000;;,
+ 54;3; 0.000000, 0.000000, 0.000000;;,
+ 55;3; 0.000000, 0.000000, 0.000000;;,
+ 56;3; 0.000000, 0.000000, 0.000000;;,
+ 57;3; 0.000000, 0.000000, 0.000000;;,
+ 58;3; 0.000000, 0.000000, 0.000000;;,
+ 59;3; 0.000000, 0.000000, 0.000000;;,
+ 60;3; 0.000000, 0.000000, 0.000000;;,
+ 61;3; 0.000000, 0.000000, 0.000000;;,
+ 62;3; 0.000000, 0.000000, 0.000000;;,
+ 63;3; 0.000000, 0.000000, 0.000000;;,
+ 64;3; 0.000000, 0.000000, 0.000000;;,
+ 65;3; 0.000000, 0.000000, 0.000000;;,
+ 66;3; 0.000000, 0.000000, 0.000000;;,
+ 67;3; 0.000000, 0.000000, 0.000000;;,
+ 68;3; 0.000000, 0.000000, 0.000000;;,
+ 69;3; 0.000000, 0.000000, 0.000000;;,
+ 70;3; 0.000000, 0.000000, 0.000000;;,
+ 71;3; 0.000000, 0.000000, 0.000000;;,
+ 72;3; 0.000000, 0.000000, 0.000000;;,
+ 73;3; 0.000000, 0.000000, 0.000000;;,
+ 74;3; 0.000000, 0.000000, 0.000000;;,
+ 75;3; 0.000000, 0.000000, 0.000000;;,
+ 76;3; 0.000000, 0.000000, 0.000000;;,
+ 77;3; 0.000000, 0.000000, 0.000000;;,
+ 78;3; 0.000000, 0.000000, 0.000000;;,
+ 79;3; 0.000000, 0.000000, 0.000000;;,
+ 80;3; 0.000000, 0.000000, 0.000000;;,
+ 81;3; 0.000000, 0.000000, 0.000000;;,
+ 82;3; 0.000000, 0.000000, 0.000000;;,
+ 83;3; 0.000000, 0.000000, 0.000000;;,
+ 84;3; 0.000000, 0.000000, 0.000000;;,
+ 85;3; 0.000000, 0.000000, 0.000000;;,
+ 86;3; 0.000000, 0.000000, 0.000000;;,
+ 87;3; 0.000000, 0.000000, 0.000000;;,
+ 88;3; 0.000000, 0.000000, 0.000000;;,
+ 89;3; 0.000000, 0.000000, 0.000000;;,
+ 90;3; 0.000000, 0.000000, 0.000000;;,
+ 91;3; 0.000000, 0.000000, 0.000000;;,
+ 92;3; 0.000000, 0.000000, 0.000000;;,
+ 93;3; 0.000000, 0.000000, 0.000000;;,
+ 94;3; 0.000000, 0.000000, 0.000000;;,
+ 95;3; 0.000000, 0.000000, 0.000000;;,
+ 96;3; 0.000000, 0.000000, 0.000000;;,
+ 97;3; 0.000000, 0.000000, 0.000000;;,
+ 98;3; 0.000000, 0.000000, 0.000000;;,
+ 99;3; 0.000000, 0.000000, 0.000000;;,
+ 100;3; 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 101;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 66;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 67;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 68;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 69;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 70;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 71;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 72;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 73;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 74;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 75;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 76;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 77;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 78;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 79;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 80;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 81;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 82;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 83;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 84;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 85;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 86;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 87;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 88;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 89;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 90;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 91;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 92;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 93;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 94;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 95;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 96;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 97;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 98;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 99;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 100;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 101;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;,
+ 66;3; 1.000000, 1.000000, 1.000000;;,
+ 67;3; 1.000000, 1.000000, 1.000000;;,
+ 68;3; 1.000000, 1.000000, 1.000000;;,
+ 69;3; 1.000000, 1.000000, 1.000000;;,
+ 70;3; 1.000000, 1.000000, 1.000000;;,
+ 71;3; 1.000000, 1.000000, 1.000000;;,
+ 72;3; 1.000000, 1.000000, 1.000000;;,
+ 73;3; 1.000000, 1.000000, 1.000000;;,
+ 74;3; 1.000000, 1.000000, 1.000000;;,
+ 75;3; 1.000000, 1.000000, 1.000000;;,
+ 76;3; 1.000000, 1.000000, 1.000000;;,
+ 77;3; 1.000000, 1.000000, 1.000000;;,
+ 78;3; 1.000000, 1.000000, 1.000000;;,
+ 79;3; 1.000000, 1.000000, 1.000000;;,
+ 80;3; 1.000000, 1.000000, 1.000000;;,
+ 81;3; 1.000000, 1.000000, 1.000000;;,
+ 82;3; 1.000000, 1.000000, 1.000000;;,
+ 83;3; 1.000000, 1.000000, 1.000000;;,
+ 84;3; 1.000000, 1.000000, 1.000000;;,
+ 85;3; 1.000000, 1.000000, 1.000000;;,
+ 86;3; 1.000000, 1.000000, 1.000000;;,
+ 87;3; 1.000000, 1.000000, 1.000000;;,
+ 88;3; 1.000000, 1.000000, 1.000000;;,
+ 89;3; 1.000000, 1.000000, 1.000000;;,
+ 90;3; 1.000000, 1.000000, 1.000000;;,
+ 91;3; 1.000000, 1.000000, 1.000000;;,
+ 92;3; 1.000000, 1.000000, 1.000000;;,
+ 93;3; 1.000000, 1.000000, 1.000000;;,
+ 94;3; 1.000000, 1.000000, 1.000000;;,
+ 95;3; 1.000000, 1.000000, 1.000000;;,
+ 96;3; 1.000000, 1.000000, 1.000000;;,
+ 97;3; 1.000000, 1.000000, 1.000000;;,
+ 98;3; 1.000000, 1.000000, 1.000000;;,
+ 99;3; 1.000000, 1.000000, 1.000000;;,
+ 100;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/models/mobs_stone_monster.png b/carbone_mobs/models/mobs_stone_monster.png
new file mode 100644
index 0000000..6e5b70d
--- /dev/null
+++ b/carbone_mobs/models/mobs_stone_monster.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_stone_monster.x b/carbone_mobs/models/mobs_stone_monster.x
new file mode 100755
index 0000000..ad0c6d8
--- /dev/null
+++ b/carbone_mobs/models/mobs_stone_monster.x
@@ -0,0 +1,2753 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.019749, 0.002151, 3.487330, 1.000000;;
+ }
+ Frame Armature_Root {
+ FrameTransformMatrix {
+ 0.999981,-0.000000,-0.006250, 0.000000,
+ 0.006250, 0.000000, 0.999981, 0.000000,
+ -0.000000,-1.000000, 0.000000, 0.000000,
+ -0.013160,-0.000000,-0.231382, 1.000000;;
+ }
+ Frame Armature_Bone_001 {
+ FrameTransformMatrix {
+ 0.992969, 0.003712,-0.118316, 0.000000,
+ -0.118209,-0.021667,-0.992752, 0.000000,
+ -0.006249, 0.999758,-0.021075, 0.000000,
+ -0.777564, 2.195408, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_001
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ 0.986605, 0.002728, 0.163107, 0.000000,
+ 0.163010, 0.021813,-0.986383, 0.000000,
+ -0.006249, 0.999758, 0.021076, 0.000000,
+ 0.734794, 2.204861, 0.000000, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_Bone_003 {
+ FrameTransformMatrix {
+ 0.999979, 0.006415,-0.000010, 0.000000,
+ 0.006403,-0.997984, 0.063140, 0.000000,
+ 0.000395,-0.063139,-0.998005, 0.000000,
+ 0.287642,-0.253263, 0.000001, 1.000000;;
+ }
+ } //End of Armature_Bone_003
+ Frame Armature_Bone_004 {
+ FrameTransformMatrix {
+ 0.999979, 0.006415, 0.000010, 0.000000,
+ 0.006403,-0.997984,-0.063141, 0.000000,
+ -0.000395, 0.063139,-0.998005, 0.000000,
+ -0.421866,-0.257697, 0.000001, 1.000000;;
+ }
+ } //End of Armature_Bone_004
+ } //End of Armature_Root
+ Frame Cube_003 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000,-0.000000, 1.000000, 0.000000,
+ -0.019749,-0.002151,-3.487330, 1.000000;;
+ }
+ Mesh { //Cube_000 Mesh
+ 192;
+ -0.137080; 0.268539; 0.030404;,
+ -0.137080;-0.268539; 0.030404;,
+ -0.137080;-0.268539; 3.018199;,
+ -0.137080; 0.268539; 3.018199;,
+ -0.137080;-0.268539; 0.030404;,
+ -0.674158;-0.268539; 0.030404;,
+ -0.674158;-0.268539; 3.018199;,
+ -0.137080;-0.268539; 3.018199;,
+ -0.674158;-0.268539; 0.030404;,
+ -0.674158; 0.268539; 0.030404;,
+ -0.674157; 0.268539; 3.018199;,
+ -0.674158;-0.268539; 3.018199;,
+ -0.674158; 0.268539; 0.030404;,
+ -0.137080; 0.268539; 0.030404;,
+ -0.137080; 0.268539; 3.018199;,
+ -0.674157; 0.268539; 3.018199;,
+ -0.674158; 0.268539; 0.030404;,
+ -0.674158;-0.268539; 0.030404;,
+ -0.137080;-0.268539; 0.030404;,
+ -0.137080; 0.268539; 0.030404;,
+ -0.137080; 0.268539; 3.018199;,
+ -0.137080;-0.268539; 3.018199;,
+ -0.674158;-0.268539; 3.018199;,
+ -0.674157; 0.268539; 3.018199;,
+ 0.588564; 0.268539; 3.018199;,
+ 0.588564;-0.268539; 3.018199;,
+ 0.051486;-0.268539; 3.018199;,
+ 0.051486; 0.268539; 3.018199;,
+ 0.051486; 0.268539; 0.030404;,
+ 0.051486;-0.268539; 0.030404;,
+ 0.588564;-0.268539; 0.030404;,
+ 0.588564; 0.268539; 0.030404;,
+ 0.051486; 0.268539; 0.030404;,
+ 0.588564; 0.268539; 0.030404;,
+ 0.588564; 0.268539; 3.018199;,
+ 0.051486; 0.268539; 3.018199;,
+ 0.051486;-0.268539; 0.030404;,
+ 0.051486; 0.268539; 0.030404;,
+ 0.051486; 0.268539; 3.018199;,
+ 0.051486;-0.268539; 3.018199;,
+ 0.588564;-0.268539; 0.030404;,
+ 0.051486;-0.268539; 0.030404;,
+ 0.051486;-0.268539; 3.018199;,
+ 0.588564;-0.268539; 3.018199;,
+ 0.588564; 0.268539; 0.030404;,
+ 0.588564;-0.268539; 0.030404;,
+ 0.588564;-0.268539; 3.018199;,
+ 0.588564; 0.268539; 3.018199;,
+ 0.814262;-0.268539; 5.580909;,
+ 1.351340;-0.268539; 5.580909;,
+ 1.351340;-0.268538; 3.042300;,
+ 0.814262;-0.268538; 3.042300;,
+ 0.814262;-0.268538; 3.042300;,
+ 1.351340;-0.268538; 3.042300;,
+ 1.351340; 0.268540; 3.042300;,
+ 0.814262; 0.268540; 3.042300;,
+ 0.814262; 0.268539; 5.580909;,
+ 1.351340; 0.268539; 5.580909;,
+ 1.351340;-0.268539; 5.580909;,
+ 0.814262;-0.268539; 5.580909;,
+ 0.814262; 0.268539; 5.580909;,
+ 0.814262;-0.268539; 5.580909;,
+ 0.814262;-0.268538; 3.042300;,
+ 0.814262; 0.268540; 3.042300;,
+ 1.351340; 0.268539; 5.580909;,
+ 0.814262; 0.268539; 5.580909;,
+ 0.814262; 0.268540; 3.042300;,
+ 1.351340; 0.268540; 3.042300;,
+ 1.351340;-0.268539; 5.580909;,
+ 1.351340; 0.268539; 5.580909;,
+ 1.351340; 0.268540; 3.042300;,
+ 1.351340;-0.268538; 3.042300;,
+ -0.793544; 0.268540; 3.042300;,
+ -0.793544;-0.268538; 3.042300;,
+ -0.793544;-0.268538; 5.580909;,
+ -0.793544; 0.268540; 5.580909;,
+ -0.793544;-0.268538; 3.042300;,
+ -1.330622;-0.268538; 3.042300;,
+ -1.330622;-0.268538; 5.580909;,
+ -0.793544;-0.268538; 5.580909;,
+ -1.330622;-0.268538; 3.042300;,
+ -1.330622; 0.268540; 3.042300;,
+ -1.330622; 0.268540; 5.580909;,
+ -1.330622;-0.268538; 5.580909;,
+ -1.330622; 0.268540; 3.042300;,
+ -0.793544; 0.268540; 3.042300;,
+ -0.793544; 0.268540; 5.580909;,
+ -1.330622; 0.268540; 5.580909;,
+ -1.330622; 0.268540; 3.042300;,
+ -1.330622;-0.268538; 3.042300;,
+ -0.793544;-0.268538; 3.042300;,
+ -0.793544; 0.268540; 3.042300;,
+ -0.793544; 0.268540; 5.580909;,
+ -0.793544;-0.268538; 5.580909;,
+ -1.330622;-0.268538; 5.580909;,
+ -1.330622; 0.268540; 5.580909;,
+ 0.723870; 0.449627; 4.785883;,
+ 0.723870;-0.388245; 4.785883;,
+ 0.723870;-0.388245; 5.594183;,
+ 0.723870; 0.449627; 5.594183;,
+ 0.723870;-0.388245; 4.785883;,
+ -0.723870;-0.388244; 4.785883;,
+ -0.723870;-0.388244; 5.594183;,
+ 0.723870;-0.388245; 5.594183;,
+ -0.723870;-0.388244; 4.785883;,
+ -0.723870; 0.449627; 4.785883;,
+ -0.723870; 0.449627; 5.594183;,
+ -0.723870;-0.388244; 5.594183;,
+ -0.723870; 0.449627; 4.785883;,
+ 0.723870; 0.449627; 4.785883;,
+ 0.723870; 0.449627; 5.594183;,
+ -0.723870; 0.449627; 5.594183;,
+ -0.723870; 0.449627; 4.785883;,
+ -0.723870;-0.388244; 4.785883;,
+ 0.723870;-0.388245; 4.785883;,
+ 0.723870; 0.449627; 4.785883;,
+ 0.723870; 0.449627; 5.594183;,
+ 0.723870;-0.388245; 5.594183;,
+ -0.723870;-0.388244; 5.594183;,
+ -0.723870; 0.449627; 5.594183;,
+ 0.543860; 0.421971; 4.056024;,
+ 0.543860;-0.421971; 4.056024;,
+ 0.543860;-0.421971; 4.737846;,
+ 0.543860; 0.421971; 4.737846;,
+ 0.543860;-0.421971; 4.056024;,
+ -0.543860;-0.421971; 4.056024;,
+ -0.543860;-0.421971; 4.737846;,
+ 0.543860;-0.421971; 4.737846;,
+ -0.543860;-0.421971; 4.056024;,
+ -0.543860; 0.421971; 4.056024;,
+ -0.543860; 0.421971; 4.737846;,
+ -0.543860;-0.421971; 4.737846;,
+ -0.543860; 0.421971; 4.056024;,
+ 0.543860; 0.421971; 4.056024;,
+ 0.543860; 0.421971; 4.737846;,
+ -0.543860; 0.421971; 4.737846;,
+ -0.543860; 0.421971; 4.056024;,
+ -0.543860;-0.421971; 4.056024;,
+ 0.543860;-0.421971; 4.056024;,
+ 0.543860; 0.421971; 4.056024;,
+ 0.543860; 0.421971; 4.737846;,
+ 0.543860;-0.421971; 4.737846;,
+ -0.543860;-0.421971; 4.737846;,
+ -0.543860; 0.421971; 4.737846;,
+ 0.722887; 0.385108; 3.087850;,
+ 0.722887;-0.385109; 3.087850;,
+ 0.722887;-0.385109; 3.994113;,
+ 0.722887; 0.385108; 3.994113;,
+ 0.722887;-0.385109; 3.087850;,
+ -0.722887;-0.385108; 3.087850;,
+ -0.722887;-0.385108; 3.994113;,
+ 0.722887;-0.385109; 3.994113;,
+ -0.722887;-0.385108; 3.087850;,
+ -0.722887; 0.385109; 3.087850;,
+ -0.722887; 0.385109; 3.994113;,
+ -0.722887;-0.385108; 3.994113;,
+ -0.722887; 0.385109; 3.087850;,
+ 0.722887; 0.385108; 3.087850;,
+ 0.722887; 0.385108; 3.994113;,
+ -0.722887; 0.385109; 3.994113;,
+ -0.722887; 0.385109; 3.087850;,
+ -0.722887;-0.385108; 3.087850;,
+ 0.722887;-0.385109; 3.087850;,
+ 0.722887; 0.385108; 3.087850;,
+ 0.722887; 0.385108; 3.994113;,
+ 0.722887;-0.385109; 3.994113;,
+ -0.722887;-0.385108; 3.994113;,
+ -0.722887; 0.385109; 3.994113;,
+ 0.698014; 0.682134; 5.657978;,
+ 0.698014;-0.713894; 5.657978;,
+ 0.698014;-0.713894; 6.662416;,
+ 0.698014; 0.682134; 6.662416;,
+ 0.698014;-0.713894; 5.657978;,
+ -0.698014;-0.713894; 5.657978;,
+ -0.698014;-0.713894; 6.662416;,
+ 0.698014;-0.713894; 6.662416;,
+ -0.698014;-0.713894; 5.657978;,
+ -0.698014; 0.682134; 5.657978;,
+ -0.698014; 0.682134; 6.662416;,
+ -0.698014;-0.713894; 6.662416;,
+ -0.698014; 0.682134; 5.657978;,
+ 0.698014; 0.682134; 5.657978;,
+ 0.698014; 0.682134; 6.662416;,
+ -0.698014; 0.682134; 6.662416;,
+ -0.698014; 0.682134; 5.657978;,
+ -0.698014;-0.713894; 5.657978;,
+ 0.698014;-0.713894; 5.657978;,
+ 0.698014; 0.682134; 5.657978;,
+ 0.698014; 0.682134; 6.662416;,
+ 0.698014;-0.713894; 6.662416;,
+ -0.698014;-0.713894; 6.662416;,
+ -0.698014; 0.682134; 6.662416;;
+ 48;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;;
+ MeshNormals { //Cube_000 Normals
+ 192;
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ -0.000000;-0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ 1.000000;-0.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;;
+ 48;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;;
+ } //End of Cube_000 Normals
+ MeshMaterialList { //Cube_000 Material List
+ 1;
+ 48;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material_002 {
+ 0.640000; 0.640000; 0.640000; 1.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_000 Material List
+ MeshTextureCoords { //Cube_000 UV Coordinates
+ 192;
+ 0.359375; 0.250000;,
+ 0.359375; 0.375000;,
+ 0.656250; 0.375000;,
+ 0.656250; 0.250000;,
+ 0.359375; 0.500000;,
+ 0.359375; 0.375000;,
+ 0.656250; 0.375000;,
+ 0.656250; 0.500000;,
+ 0.359375; 0.125000;,
+ 0.359375; 0.000000;,
+ 0.656250; 0.000000;,
+ 0.656250; 0.125000;,
+ 0.359375; 0.125000;,
+ 0.359375; 0.250000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.125000;,
+ 0.359375; 0.000000;,
+ 0.359375; 0.125000;,
+ 0.296875; 0.125000;,
+ 0.296875; 0.000000;,
+ 0.359375; 0.125000;,
+ 0.359375; 0.250000;,
+ 0.296875; 0.250000;,
+ 0.296875; 0.125000;,
+ 0.359375; 0.250000;,
+ 0.359375; 0.125000;,
+ 0.296875; 0.125000;,
+ 0.296875; 0.250000;,
+ 0.359375; 0.125000;,
+ 0.359375; 0.000000;,
+ 0.296875; 0.000000;,
+ 0.296875; 0.125000;,
+ 0.359375; 0.250000;,
+ 0.359375; 0.125000;,
+ 0.656250; 0.125000;,
+ 0.656250; 0.250000;,
+ 0.359375; 0.375000;,
+ 0.359375; 0.250000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.375000;,
+ 0.359375; 0.375000;,
+ 0.359375; 0.500000;,
+ 0.656250; 0.500000;,
+ 0.656250; 0.375000;,
+ 0.359375; 0.000000;,
+ 0.359375; 0.125000;,
+ 0.656250; 0.125000;,
+ 0.656250; 0.000000;,
+ 0.000000; 0.125000;,
+ 0.000000; 0.250000;,
+ 0.296875; 0.250000;,
+ 0.296875; 0.125000;,
+ 0.359375; 0.250000;,
+ 0.359375; 0.375000;,
+ 0.296875; 0.375000;,
+ 0.296875; 0.250000;,
+ 0.359375; 0.375000;,
+ 0.359375; 0.500000;,
+ 0.296875; 0.500000;,
+ 0.296875; 0.375000;,
+ 0.000000; 0.000000;,
+ 0.000000; 0.125000;,
+ 0.296875; 0.125000;,
+ 0.296875; 0.000000;,
+ 0.000000; 0.500000;,
+ 0.000000; 0.375000;,
+ 0.296875; 0.375000;,
+ 0.296875; 0.500000;,
+ 0.000000; 0.250000;,
+ 0.000000; 0.375000;,
+ 0.296875; 0.375000;,
+ 0.296875; 0.250000;,
+ 0.296875; 0.000000;,
+ 0.296875; 0.125000;,
+ 0.000000; 0.125000;,
+ 0.000000; 0.000000;,
+ 0.296875; 0.125000;,
+ 0.296875; 0.250000;,
+ 0.000000; 0.250000;,
+ 0.000000; 0.125000;,
+ 0.296875; 0.250000;,
+ 0.296875; 0.375000;,
+ 0.000000; 0.375000;,
+ 0.000000; 0.250000;,
+ 0.296875; 0.500000;,
+ 0.296875; 0.375000;,
+ 0.000000; 0.375000;,
+ 0.000000; 0.500000;,
+ 0.296875; 0.375000;,
+ 0.296875; 0.250000;,
+ 0.359375; 0.250000;,
+ 0.359375; 0.375000;,
+ 0.359375; 0.375000;,
+ 0.296875; 0.375000;,
+ 0.296875; 0.500000;,
+ 0.359375; 0.500000;,
+ 0.187500; 0.750000;,
+ 0.125000; 0.750000;,
+ 0.125000; 0.625000;,
+ 0.187500; 0.625000;,
+ 0.125000; 0.750000;,
+ 0.000000; 0.750000;,
+ 0.000000; 0.625000;,
+ 0.125000; 0.625000;,
+ 0.187500; 0.625000;,
+ 0.125000; 0.625000;,
+ 0.125000; 0.500000;,
+ 0.187500; 0.500000;,
+ 0.312500; 0.750000;,
+ 0.187500; 0.750000;,
+ 0.187500; 0.625000;,
+ 0.312500; 0.625000;,
+ 0.125000; 0.500000;,
+ 0.125000; 0.625000;,
+ 0.000000; 0.625000;,
+ 0.000000; 0.500000;,
+ 0.187500; 0.625000;,
+ 0.187500; 0.500000;,
+ 0.312500; 0.500000;,
+ 0.312500; 0.625000;,
+ 0.312500; 0.875000;,
+ 0.312500; 0.718750;,
+ 0.375000; 0.718750;,
+ 0.375000; 0.875000;,
+ 0.312500; 0.718750;,
+ 0.312500; 0.500000;,
+ 0.375000; 0.500000;,
+ 0.375000; 0.718750;,
+ 0.375000; 0.875000;,
+ 0.375000; 0.718750;,
+ 0.437500; 0.718750;,
+ 0.437500; 0.875000;,
+ 0.312500; 1.000000;,
+ 0.312500; 0.875000;,
+ 0.375000; 0.875000;,
+ 0.375000; 1.000000;,
+ 0.437500; 0.718750;,
+ 0.375000; 0.718750;,
+ 0.375000; 0.500000;,
+ 0.437500; 0.500000;,
+ 0.375000; 0.875000;,
+ 0.437500; 0.875000;,
+ 0.437500; 1.000000;,
+ 0.375000; 1.000000;,
+ 0.187500; 1.000000;,
+ 0.125000; 1.000000;,
+ 0.125000; 0.875000;,
+ 0.187500; 0.875000;,
+ 0.125000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.875000;,
+ 0.125000; 0.875000;,
+ 0.187500; 0.875000;,
+ 0.125000; 0.875000;,
+ 0.125000; 0.750000;,
+ 0.187500; 0.750000;,
+ 0.312500; 1.000000;,
+ 0.187500; 1.000000;,
+ 0.187500; 0.875000;,
+ 0.312500; 0.875000;,
+ 0.125000; 0.750000;,
+ 0.125000; 0.875000;,
+ 0.000000; 0.875000;,
+ 0.000000; 0.750000;,
+ 0.187500; 0.875000;,
+ 0.187500; 0.750000;,
+ 0.312500; 0.750000;,
+ 0.312500; 0.875000;,
+ 0.656250; 0.000000;,
+ 0.656250; 0.250000;,
+ 0.750000; 0.250000;,
+ 0.750000; 0.000000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.500000;,
+ 0.750000; 0.500000;,
+ 0.750000; 0.250000;,
+ 0.656250; 0.500000;,
+ 0.656250; 0.750000;,
+ 0.750000; 0.750000;,
+ 0.750000; 0.500000;,
+ 0.656250; 0.750000;,
+ 0.656250; 1.000000;,
+ 0.750000; 1.000000;,
+ 0.750000; 0.750000;,
+ 0.656250; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.500000; 1.000000;,
+ 0.656250; 1.000000;,
+ 0.500000; 0.750000;,
+ 0.656250; 0.750000;,
+ 0.656250; 0.500000;,
+ 0.500000; 0.500000;;
+ } //End of Cube_000 UV Coordinates
+ XSkinMeshHeader {
+ 2;
+ 6;
+ 5;
+ }
+ SkinWeights {
+ "Armature_Bone_003";
+ 24;
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000165, 0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000165,-1.000000, 0.000000, 0.000000,
+ -0.293140, 3.021661,-0.002151, 1.000000;;
+ } //End of Armature_Bone_003 Skin Weights
+ SkinWeights {
+ "Armature_Root";
+ 100;
+ 72,
+ 73,
+ 74,
+ 75,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191;
+ 0.000012,
+ 0.000000,
+ 0.000000,
+ 0.000009,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.999980, 0.006250, 0.000000, 0.000000,
+ -0.000000, 0.000000,-1.000000, 0.000000,
+ -0.006250, 0.999980, 0.000000, 0.000000,
+ 0.013893,-3.276741, 0.002150, 1.000000;;
+ } //End of Armature_Root Skin Weights
+ SkinWeights {
+ "Armature_Bone_004";
+ 24;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000165, 0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000165,-1.000000, 0.000000, 0.000000,
+ 0.416382, 3.021777,-0.002151, 1.000000;;
+ } //End of Armature_Bone_004 Skin Weights
+ SkinWeights {
+ "Armature_Bone_001";
+ 24;
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95;
+ 0.999988,
+ 1.000000,
+ 1.000000,
+ 0.999991,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.992973,-0.118342, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ -0.118342,-0.992973, 0.000000, 0.000000,
+ 1.400077, 5.348889,-0.002152, 1.000000;;
+ } //End of Armature_Bone_001 Skin Weights
+ SkinWeights {
+ "Armature_Bone_002";
+ 24;
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 0.986602, 0.163144, 0.000000, 0.000000,
+ -0.000000, 0.000000, 1.000000, 0.000000,
+ 0.163144,-0.986602, 0.000000, 0.000000,
+ -1.638568, 5.280413,-0.002152, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ } //End of Cube_000 Mesh
+ } //End of Cube_003
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; 0.019749, 0.002151, 3.487330;;,
+ 1;3; 0.019749, 0.002151, 3.487330;;,
+ 2;3; 0.019749, 0.002151, 3.487330;;,
+ 3;3; 0.019749, 0.002151, 3.487330;;,
+ 4;3; 0.019749, 0.002151, 3.487330;;,
+ 5;3; 0.019749, 0.002151, 3.487330;;,
+ 6;3; 0.019749, 0.002151, 3.487330;;,
+ 7;3; 0.019749, 0.002151, 3.487330;;,
+ 8;3; 0.019749, 0.002151, 3.487330;;,
+ 9;3; 0.019749, 0.002151, 3.487330;;,
+ 10;3; 0.019749, 0.002151, 3.487330;;,
+ 11;3; 0.019749, 0.002151, 3.487330;;,
+ 12;3; 0.019749, 0.002151, 3.487330;;,
+ 13;3; 0.019749, 0.002151, 3.487330;;,
+ 14;3; 0.019749, 0.002151, 3.487330;;,
+ 15;3; 0.019749, 0.002151, 3.487330;;,
+ 16;3; 0.019749, 0.002151, 3.487330;;,
+ 17;3; 0.019749, 0.002151, 3.487330;;,
+ 18;3; 0.019749, 0.002151, 3.487330;;,
+ 19;3; 0.019749, 0.002151, 3.487330;;,
+ 20;3; 0.019749, 0.002151, 3.487330;;,
+ 21;3; 0.019749, 0.002151, 3.487330;;,
+ 22;3; 0.019749, 0.002151, 3.487330;;,
+ 23;3; 0.019749, 0.002151, 3.487330;;,
+ 24;3; 0.019749, 0.002151, 3.487330;;,
+ 25;3; 0.019749, 0.002151, 3.487330;;,
+ 26;3; 0.019749, 0.002151, 3.487330;;,
+ 27;3; 0.019749, 0.002151, 3.487330;;,
+ 28;3; 0.019749, 0.002151, 3.487330;;,
+ 29;3; 0.019749, 0.002151, 3.487330;;,
+ 30;3; 0.019749, 0.002151, 3.487330;;,
+ 31;3; 0.019749, 0.002151, 3.487330;;,
+ 32;3; 0.019749, 0.002151, 3.487330;;,
+ 33;3; 0.019749, 0.002151, 3.487330;;,
+ 34;3; 0.019749, 0.002151, 3.487330;;,
+ 35;3; 0.019749, 0.002151, 3.487330;;,
+ 36;3; 0.019749, 0.002151, 3.487330;;,
+ 37;3; 0.019749, 0.002151, 3.487330;;,
+ 38;3; 0.019749, 0.002151, 3.487330;;,
+ 39;3; 0.019749, 0.002151, 3.487330;;,
+ 40;3; 0.019749, 0.002151, 3.487330;;,
+ 41;3; 0.019749, 0.002151, 3.487330;;,
+ 42;3; 0.019749, 0.002151, 3.487330;;,
+ 43;3; 0.019749, 0.002151, 3.487330;;,
+ 44;3; 0.019749, 0.002151, 3.487330;;,
+ 45;3; 0.019749, 0.002151, 3.487330;;,
+ 46;3; 0.019749, 0.002151, 3.487330;;,
+ 47;3; 0.019749, 0.002151, 3.487330;;,
+ 48;3; 0.019749, 0.002151, 3.487330;;,
+ 49;3; 0.019749, 0.002151, 3.487330;;,
+ 50;3; 0.019749, 0.002151, 3.487330;;,
+ 51;3; 0.019749, 0.002151, 3.487330;;,
+ 52;3; 0.019749, 0.002151, 3.487330;;,
+ 53;3; 0.019749, 0.002151, 3.487330;;,
+ 54;3; 0.019749, 0.002151, 3.487330;;,
+ 55;3; 0.019749, 0.002151, 3.487330;;,
+ 56;3; 0.019749, 0.002151, 3.487330;;,
+ 57;3; 0.019749, 0.002151, 3.487330;;,
+ 58;3; 0.019749, 0.002151, 3.487330;;,
+ 59;3; 0.019749, 0.002151, 3.487330;;,
+ 60;3; 0.019749, 0.002151, 3.487330;;,
+ 61;3; 0.019749, 0.002151, 3.487330;;,
+ 62;3; 0.019749, 0.002151, 3.487330;;,
+ 63;3; 0.019749, 0.002151, 3.487330;;,
+ 64;3; 0.019749, 0.002151, 3.487330;;,
+ 65;3; 0.019749, 0.002151, 3.487330;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Root}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; -0.013160,-0.000000,-0.210566;;,
+ 1;3; -0.013160,-0.000000,-0.210566;;,
+ 2;3; -0.013160,-0.000000,-0.210566;;,
+ 3;3; -0.013160,-0.000000,-0.210566;;,
+ 4;3; -0.013160,-0.000000,-0.210566;;,
+ 5;3; -0.013160,-0.000000,-0.210566;;,
+ 6;3; -0.013160,-0.000000,-0.210566;;,
+ 7;3; -0.013160,-0.000000,-0.210566;;,
+ 8;3; -0.013160,-0.000000,-0.210566;;,
+ 9;3; -0.013160,-0.000000,-0.210566;;,
+ 10;3; -0.013160,-0.000000,-0.210566;;,
+ 11;3; -0.013160,-0.000000,-0.210566;;,
+ 12;3; -0.013160,-0.000000,-0.210566;;,
+ 13;3; -0.013160,-0.000000,-0.210566;;,
+ 14;3; -0.013160,-0.000000,-0.210566;;,
+ 15;3; -0.013160,-0.000000,-0.210566;;,
+ 16;3; -0.013160,-0.000000,-0.215889;;,
+ 17;3; -0.013160,-0.000000,-0.231380;;,
+ 18;3; -0.013160,-0.000000,-0.253650;;,
+ 19;3; -0.013160,-0.000000,-0.275918;;,
+ 20;3; -0.013160,-0.000000,-0.291409;;,
+ 21;3; -0.013160,-0.000000,-0.296732;;,
+ 22;3; -0.013160,-0.000000,-0.291409;;,
+ 23;3; -0.013160,-0.000000,-0.275918;;,
+ 24;3; -0.013160,-0.000000,-0.253649;;,
+ 25;3; -0.013160,-0.000000,-0.231380;;,
+ 26;3; -0.013160,-0.000000,-0.215889;;,
+ 27;3; -0.013160,-0.000000,-0.210566;;,
+ 28;3; -0.013160,-0.000000,-0.215889;;,
+ 29;3; -0.013160,-0.000000,-0.231380;;,
+ 30;3; -0.013160,-0.000000,-0.253649;;,
+ 31;3; -0.013160,-0.000000,-0.275918;;,
+ 32;3; -0.013160,-0.000000,-0.291409;;,
+ 33;3; -0.013160,-0.000000,-0.296732;;,
+ 34;3; -0.013160,-0.000000,-0.291639;;,
+ 35;3; -0.013160,-0.000000,-0.277407;;,
+ 36;3; -0.013160,-0.000000,-0.256912;;,
+ 37;3; -0.013160,-0.000000,-0.234908;;,
+ 38;3; -0.013160,-0.000000,-0.217469;;,
+ 39;3; -0.013160,-0.000000,-0.210566;;,
+ 40;3; -0.013160,-0.000000,-0.210566;;,
+ 41;3; -0.013160,-0.000000,-0.217469;;,
+ 42;3; -0.013160,-0.000000,-0.234908;;,
+ 43;3; -0.013160,-0.000000,-0.256912;;,
+ 44;3; -0.013160,-0.000000,-0.277407;;,
+ 45;3; -0.013160,-0.000000,-0.291639;;,
+ 46;3; -0.013160,-0.000000,-0.296732;;,
+ 47;3; -0.013160,-0.000000,-0.291409;;,
+ 48;3; -0.013160,-0.000000,-0.275918;;,
+ 49;3; -0.013160,-0.000000,-0.253649;;,
+ 50;3; -0.013160,-0.000000,-0.231380;;,
+ 51;3; -0.013160,-0.000000,-0.215889;;,
+ 52;3; -0.013160,-0.000000,-0.210566;;,
+ 53;3; -0.013160,-0.000000,-0.215889;;,
+ 54;3; -0.013160,-0.000000,-0.231380;;,
+ 55;3; -0.013160,-0.000000,-0.253649;;,
+ 56;3; -0.013160,-0.000000,-0.275918;;,
+ 57;3; -0.013160,-0.000000,-0.291409;;,
+ 58;3; -0.013160,-0.000000,-0.296732;;,
+ 59;3; -0.013160,-0.000000,-0.291409;;,
+ 60;3; -0.013160,-0.000000,-0.275919;;,
+ 61;3; -0.013160,-0.000000,-0.253651;;,
+ 62;3; -0.013160,-0.000000,-0.231382;;,
+ 63;3; -0.013160,-0.000000,-0.215890;;,
+ 64;3; -0.013160,-0.000000,-0.210566;;,
+ 65;3; -0.013160,-0.000000,-0.210566;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 1;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 2;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 3;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 4;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 5;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 6;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 7;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 8;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 9;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 10;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 11;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 12;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 13;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 14;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 15;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 16;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 17;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 18;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 19;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 20;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 21;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 22;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 23;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 24;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 25;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 26;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 27;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 28;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 29;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 30;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 31;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 32;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 33;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 34;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 35;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 36;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 37;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 38;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 39;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 40;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 41;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 42;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 43;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 44;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 45;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 46;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 47;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 48;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 49;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 50;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 51;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 52;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 53;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 54;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 55;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 56;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 57;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 58;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 59;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 60;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 61;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 62;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 63;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 64;4; -0.707103, 0.707103, 0.002210,-0.002210;;,
+ 65;4; -0.707103, 0.707103, 0.002210,-0.002210;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_001}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; -0.777564, 2.195408, 0.000000;;,
+ 1;3; -0.777564, 2.195408, 0.000000;;,
+ 2;3; -0.777564, 2.195408, 0.000000;;,
+ 3;3; -0.777564, 2.195408, 0.000000;;,
+ 4;3; -0.777564, 2.195408, 0.000000;;,
+ 5;3; -0.777564, 2.195408, 0.000000;;,
+ 6;3; -0.777564, 2.195408, 0.000000;;,
+ 7;3; -0.777564, 2.195408, 0.000000;;,
+ 8;3; -0.777564, 2.195408, 0.000000;;,
+ 9;3; -0.777564, 2.195408, 0.000000;;,
+ 10;3; -0.777564, 2.195408, 0.000000;;,
+ 11;3; -0.777564, 2.195408, 0.000000;;,
+ 12;3; -0.777564, 2.195408, 0.000000;;,
+ 13;3; -0.777564, 2.195408, 0.000000;;,
+ 14;3; -0.777564, 2.195408, 0.000000;;,
+ 15;3; -0.777564, 2.195408, 0.000000;;,
+ 16;3; -0.777564, 2.195408, 0.000000;;,
+ 17;3; -0.777564, 2.195408, 0.000000;;,
+ 18;3; -0.777564, 2.195408, 0.000000;;,
+ 19;3; -0.777564, 2.195408, 0.000000;;,
+ 20;3; -0.777564, 2.195408, 0.000000;;,
+ 21;3; -0.777564, 2.195408, 0.000000;;,
+ 22;3; -0.777564, 2.195408, 0.000000;;,
+ 23;3; -0.777564, 2.195408, 0.000000;;,
+ 24;3; -0.777564, 2.195408, 0.000000;;,
+ 25;3; -0.777564, 2.195408, 0.000000;;,
+ 26;3; -0.777564, 2.195408, 0.000000;;,
+ 27;3; -0.777564, 2.195408, 0.000000;;,
+ 28;3; -0.777564, 2.195408, 0.000000;;,
+ 29;3; -0.777564, 2.195408, 0.000000;;,
+ 30;3; -0.777564, 2.195408, 0.000000;;,
+ 31;3; -0.777564, 2.195408, 0.000000;;,
+ 32;3; -0.777564, 2.195408, 0.000000;;,
+ 33;3; -0.777564, 2.195408, 0.000000;;,
+ 34;3; -0.777564, 2.195408, 0.000000;;,
+ 35;3; -0.777564, 2.195408, 0.000000;;,
+ 36;3; -0.777564, 2.195408, 0.000000;;,
+ 37;3; -0.777564, 2.195408, 0.000000;;,
+ 38;3; -0.777564, 2.195408, 0.000000;;,
+ 39;3; -0.777564, 2.195408, 0.000000;;,
+ 40;3; -0.777564, 2.195408, 0.000000;;,
+ 41;3; -0.777564, 2.195408, 0.000000;;,
+ 42;3; -0.777564, 2.195408, 0.000000;;,
+ 43;3; -0.777564, 2.195408, 0.000000;;,
+ 44;3; -0.777564, 2.195408, 0.000000;;,
+ 45;3; -0.777564, 2.195408, 0.000000;;,
+ 46;3; -0.777564, 2.195408, 0.000000;;,
+ 47;3; -0.777564, 2.195408, 0.000000;;,
+ 48;3; -0.777564, 2.195408, 0.000000;;,
+ 49;3; -0.777564, 2.195408, 0.000000;;,
+ 50;3; -0.777564, 2.195408, 0.000000;;,
+ 51;3; -0.777564, 2.195408, 0.000000;;,
+ 52;3; -0.777564, 2.195408, 0.000000;;,
+ 53;3; -0.777564, 2.195408, 0.000000;;,
+ 54;3; -0.777564, 2.195408, 0.000000;;,
+ 55;3; -0.777564, 2.195408, 0.000000;;,
+ 56;3; -0.777564, 2.195408, 0.000000;;,
+ 57;3; -0.777564, 2.195408, 0.000000;;,
+ 58;3; -0.777564, 2.195408, 0.000000;;,
+ 59;3; -0.777564, 2.195408, 0.000000;;,
+ 60;3; -0.777564, 2.195408, 0.000000;;,
+ 61;3; -0.777564, 2.195408, 0.000000;;,
+ 62;3; -0.777564, 2.195408, 0.000000;;,
+ 63;3; -0.777564, 2.195408, 0.000000;;,
+ 64;3; -0.777564, 2.195408, 0.000000;;,
+ 65;3; -0.777564, 2.195408, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 1;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 2;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 3;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 4;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 5;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 6;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 7;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 8;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 9;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 10;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 11;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 12;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 13;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 14;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 15;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 16;4; 0.008050, 0.997895,-0.056126,-0.000503;;,
+ 17;4; 0.031475, 0.996359,-0.056039,-0.001967;;,
+ 18;4; 0.065143, 0.994151,-0.055915,-0.004072;;,
+ 19;4; 0.098808, 0.991944,-0.055791,-0.006177;;,
+ 20;4; 0.122225, 0.990408,-0.055705,-0.007641;;,
+ 21;4; 0.130272, 0.989881,-0.055675,-0.008144;;,
+ 22;4; 0.126267, 0.989881,-0.055675,-0.007894;;,
+ 23;4; 0.114177, 0.989881,-0.055675,-0.007138;;,
+ 24;4; 0.094243, 0.989881,-0.055675,-0.005892;;,
+ 25;4; 0.067337, 0.989881,-0.055675,-0.004210;;,
+ 26;4; 0.035117, 0.989881,-0.055675,-0.002195;;,
+ 27;4; -0.000000, 0.989881,-0.055675, 0.000000;;,
+ 28;4; -0.035117, 0.989881,-0.055675, 0.002195;;,
+ 29;4; -0.067337, 0.989881,-0.055675, 0.004210;;,
+ 30;4; -0.094243, 0.989881,-0.055675, 0.005892;;,
+ 31;4; -0.114178, 0.989881,-0.055675, 0.007138;;,
+ 32;4; -0.126267, 0.989881,-0.055675, 0.007894;;,
+ 33;4; -0.130272, 0.989881,-0.055675, 0.008144;;,
+ 34;4; -0.129860, 0.990384,-0.055703, 0.008117;;,
+ 35;4; -0.126652, 0.991789,-0.055782, 0.007902;;,
+ 36;4; -0.116937, 0.993812,-0.055896, 0.007240;;,
+ 37;4; -0.096055, 0.995991,-0.056019, 0.005833;;,
+ 38;4; -0.058763, 0.997728,-0.056116, 0.003444;;,
+ 39;4; -0.000000, 0.998422,-0.056155, 0.000000;;,
+ 40;4; 0.705729, 0.705991,-0.039708,-0.044120;;,
+ 41;4; 0.719292, 0.692185,-0.038931,-0.044917;;,
+ 42;4; 0.727918, 0.683078,-0.038419,-0.045469;;,
+ 43;4; 0.732753, 0.677864,-0.038126,-0.045794;;,
+ 44;4; 0.735003, 0.675425,-0.037989,-0.045946;;,
+ 45;4; 0.735745, 0.674626,-0.037944,-0.045996;;,
+ 46;4; 0.735841, 0.674524,-0.037938,-0.046002;;,
+ 47;4; 0.734894, 0.675471,-0.037991,-0.045943;;,
+ 48;4; 0.732038, 0.678329,-0.038152,-0.045765;;,
+ 49;4; 0.727327, 0.683041,-0.038417,-0.045470;;,
+ 50;4; 0.720969, 0.689402,-0.038775,-0.045073;;,
+ 51;4; 0.713355, 0.697018,-0.039203,-0.044597;;,
+ 52;4; 0.705057, 0.705319,-0.039670,-0.044078;;,
+ 53;4; 0.696759, 0.713621,-0.040137,-0.043559;;,
+ 54;4; 0.689146, 0.721237,-0.040565,-0.043083;;,
+ 55;4; 0.682788, 0.727597,-0.040923,-0.042686;;,
+ 56;4; 0.678077, 0.732310,-0.041188,-0.042391;;,
+ 57;4; 0.675220, 0.735168,-0.041349,-0.042212;;,
+ 58;4; 0.674274, 0.736114,-0.041402,-0.042153;;,
+ 59;4; 0.676217, 0.734253,-0.041297,-0.042275;;,
+ 60;4; 0.681872, 0.728838,-0.040993,-0.042628;;,
+ 61;4; 0.690001, 0.721053,-0.040555,-0.043137;;,
+ 62;4; 0.698131, 0.713268,-0.040117,-0.043645;;,
+ 63;4; 0.703786, 0.707852,-0.039813,-0.043998;;,
+ 64;4; 0.705729, 0.705991,-0.039708,-0.044120;;,
+ 65;4; 0.705729, 0.705991,-0.039708,-0.044120;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; 0.734794, 2.204861, 0.000000;;,
+ 1;3; 0.734794, 2.204861, 0.000000;;,
+ 2;3; 0.734794, 2.204861, 0.000000;;,
+ 3;3; 0.734794, 2.204861, 0.000000;;,
+ 4;3; 0.734794, 2.204861, 0.000000;;,
+ 5;3; 0.734794, 2.204861, 0.000000;;,
+ 6;3; 0.734794, 2.204861, 0.000000;;,
+ 7;3; 0.734794, 2.204861, 0.000000;;,
+ 8;3; 0.734794, 2.204861, 0.000000;;,
+ 9;3; 0.734794, 2.204861, 0.000000;;,
+ 10;3; 0.734794, 2.204861, 0.000000;;,
+ 11;3; 0.734794, 2.204861, 0.000000;;,
+ 12;3; 0.734794, 2.204861, 0.000000;;,
+ 13;3; 0.734794, 2.204861, 0.000000;;,
+ 14;3; 0.734794, 2.204861, 0.000000;;,
+ 15;3; 0.734794, 2.204861, 0.000000;;,
+ 16;3; 0.734794, 2.204861, 0.000000;;,
+ 17;3; 0.734794, 2.204861, 0.000000;;,
+ 18;3; 0.734794, 2.204861, 0.000000;;,
+ 19;3; 0.734794, 2.204861, 0.000000;;,
+ 20;3; 0.734794, 2.204861, 0.000000;;,
+ 21;3; 0.734794, 2.204861, 0.000000;;,
+ 22;3; 0.734794, 2.204861, 0.000000;;,
+ 23;3; 0.734794, 2.204861, 0.000000;;,
+ 24;3; 0.734794, 2.204861, 0.000000;;,
+ 25;3; 0.734794, 2.204861, 0.000000;;,
+ 26;3; 0.734794, 2.204861, 0.000000;;,
+ 27;3; 0.734794, 2.204861, 0.000000;;,
+ 28;3; 0.734794, 2.204861, 0.000000;;,
+ 29;3; 0.734794, 2.204861, 0.000000;;,
+ 30;3; 0.734794, 2.204861, 0.000000;;,
+ 31;3; 0.734794, 2.204861, 0.000000;;,
+ 32;3; 0.734794, 2.204861, 0.000000;;,
+ 33;3; 0.734794, 2.204861, 0.000000;;,
+ 34;3; 0.734794, 2.204861, 0.000000;;,
+ 35;3; 0.734794, 2.204861, 0.000000;;,
+ 36;3; 0.734794, 2.204861, 0.000000;;,
+ 37;3; 0.734794, 2.204861, 0.000000;;,
+ 38;3; 0.734794, 2.204861, 0.000000;;,
+ 39;3; 0.734794, 2.204861, 0.000000;;,
+ 40;3; 0.734794, 2.204861, 0.000000;;,
+ 41;3; 0.734794, 2.204861, 0.000000;;,
+ 42;3; 0.734794, 2.204861, 0.000000;;,
+ 43;3; 0.734794, 2.204861, 0.000000;;,
+ 44;3; 0.734794, 2.204861, 0.000000;;,
+ 45;3; 0.734794, 2.204861, 0.000000;;,
+ 46;3; 0.734794, 2.204861, 0.000000;;,
+ 47;3; 0.734794, 2.204861, 0.000000;;,
+ 48;3; 0.734794, 2.204861, 0.000000;;,
+ 49;3; 0.734794, 2.204861, 0.000000;;,
+ 50;3; 0.734794, 2.204861, 0.000000;;,
+ 51;3; 0.734794, 2.204861, 0.000000;;,
+ 52;3; 0.734794, 2.204861, 0.000000;;,
+ 53;3; 0.734794, 2.204861, 0.000000;;,
+ 54;3; 0.734794, 2.204861, 0.000000;;,
+ 55;3; 0.734794, 2.204861, 0.000000;;,
+ 56;3; 0.734794, 2.204861, 0.000000;;,
+ 57;3; 0.734794, 2.204861, 0.000000;;,
+ 58;3; 0.734794, 2.204861, 0.000000;;,
+ 59;3; 0.734794, 2.204861, 0.000000;;,
+ 60;3; 0.734794, 2.204861, 0.000000;;,
+ 61;3; 0.734794, 2.204861, 0.000000;;,
+ 62;3; 0.734794, 2.204861, 0.000000;;,
+ 63;3; 0.734794, 2.204861, 0.000000;;,
+ 64;3; 0.734794, 2.204861, 0.000000;;,
+ 65;3; 0.734794, 2.204861, 0.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 1;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 2;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 3;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 4;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 5;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 6;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 7;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 8;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 9;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 10;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 11;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 12;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 13;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 14;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 15;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 16;4; -0.008041, 0.995858, 0.084916,-0.000635;;,
+ 17;4; -0.031438, 0.994325, 0.084785,-0.002482;;,
+ 18;4; -0.065068, 0.992122, 0.084597,-0.005138;;,
+ 19;4; -0.098693, 0.989919, 0.084409,-0.007794;;,
+ 20;4; -0.122084, 0.988387, 0.084279,-0.009642;;,
+ 21;4; -0.130121, 0.987860, 0.084234,-0.010276;;,
+ 22;4; -0.126121, 0.987860, 0.084234,-0.009961;;,
+ 23;4; -0.114046, 0.987860, 0.084234,-0.009007;;,
+ 24;4; -0.094134, 0.987860, 0.084234,-0.007434;;,
+ 25;4; -0.067259, 0.987860, 0.084234,-0.005312;;,
+ 26;4; -0.035076, 0.987860, 0.084234,-0.002770;;,
+ 27;4; -0.000000, 0.987860, 0.084234, 0.000000;;,
+ 28;4; 0.035076, 0.987860, 0.084234, 0.002770;;,
+ 29;4; 0.067259, 0.987860, 0.084234, 0.005312;;,
+ 30;4; 0.094134, 0.987860, 0.084234, 0.007434;;,
+ 31;4; 0.114045, 0.987860, 0.084234, 0.009007;;,
+ 32;4; 0.126121, 0.987860, 0.084234, 0.009961;;,
+ 33;4; 0.130121, 0.987860, 0.084234, 0.010277;;,
+ 34;4; 0.122514, 0.988363, 0.084277, 0.009662;;,
+ 35;4; 0.101466, 0.989765, 0.084396, 0.007929;;,
+ 36;4; 0.071176, 0.991784, 0.084568, 0.005432;;,
+ 37;4; 0.038174, 0.993958, 0.084754, 0.002789;;,
+ 38;4; 0.011162, 0.995692, 0.084902, 0.000764;;,
+ 39;4; -0.000000, 0.996384, 0.084961, 0.000000;;,
+ 40;4; 0.704912, 0.704550, 0.060076, 0.055671;;,
+ 41;4; 0.702208, 0.706991, 0.060284, 0.055488;;,
+ 42;4; 0.695679, 0.713106, 0.060806, 0.054999;;,
+ 43;4; 0.687713, 0.720774, 0.061460, 0.054361;;,
+ 44;4; 0.680406, 0.727894, 0.062067, 0.053757;;,
+ 45;4; 0.675329, 0.732839, 0.062488, 0.053338;;,
+ 46;4; 0.673493, 0.734612, 0.062640, 0.053190;;,
+ 47;4; 0.674438, 0.733667, 0.062559, 0.053265;;,
+ 48;4; 0.677292, 0.730815, 0.062316, 0.053490;;,
+ 49;4; 0.681997, 0.726112, 0.061915, 0.053862;;,
+ 50;4; 0.688347, 0.719765, 0.061374, 0.054363;;,
+ 51;4; 0.695952, 0.712164, 0.060726, 0.054964;;,
+ 52;4; 0.704241, 0.703880, 0.060019, 0.055618;;,
+ 53;4; 0.712529, 0.695595, 0.059313, 0.056273;;,
+ 54;4; 0.720134, 0.687995, 0.058665, 0.056874;;,
+ 55;4; 0.726485, 0.681647, 0.058123, 0.057375;;,
+ 56;4; 0.731190, 0.676944, 0.057722, 0.057747;;,
+ 57;4; 0.734043, 0.674092, 0.057479, 0.057972;;,
+ 58;4; 0.734989, 0.673148, 0.057399, 0.058047;;,
+ 59;4; 0.733131, 0.675087, 0.057564, 0.057900;;,
+ 60;4; 0.727724, 0.680733, 0.058045, 0.057473;;,
+ 61;4; 0.719950, 0.688849, 0.058737, 0.056859;;,
+ 62;4; 0.712177, 0.696965, 0.059430, 0.056245;;,
+ 63;4; 0.706770, 0.702610, 0.059911, 0.055818;;,
+ 64;4; 0.704912, 0.704550, 0.060076, 0.055671;;,
+ 65;4; 0.704912, 0.704550, 0.060076, 0.055671;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_003}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; 0.287642,-0.253263, 0.000001;;,
+ 1;3; 0.287642,-0.253263, 0.000001;;,
+ 2;3; 0.287642,-0.253263, 0.000001;;,
+ 3;3; 0.287642,-0.253263, 0.000001;;,
+ 4;3; 0.287642,-0.253263, 0.000001;;,
+ 5;3; 0.287642,-0.253263, 0.000001;;,
+ 6;3; 0.287642,-0.253263, 0.000001;;,
+ 7;3; 0.287642,-0.253263, 0.000001;;,
+ 8;3; 0.287642,-0.253263, 0.000001;;,
+ 9;3; 0.287642,-0.253263, 0.000001;;,
+ 10;3; 0.287642,-0.253263, 0.000001;;,
+ 11;3; 0.287642,-0.253263, 0.000001;;,
+ 12;3; 0.287642,-0.253263, 0.000001;;,
+ 13;3; 0.287642,-0.253263, 0.000001;;,
+ 14;3; 0.287642,-0.253263, 0.000001;;,
+ 15;3; 0.287642,-0.253263, 0.000001;;,
+ 16;3; 0.287642,-0.253263, 0.000001;;,
+ 17;3; 0.287642,-0.253262, 0.000001;;,
+ 18;3; 0.287642,-0.253262, 0.000001;;,
+ 19;3; 0.287642,-0.253262, 0.000001;;,
+ 20;3; 0.287642,-0.253263, 0.000001;;,
+ 21;3; 0.287642,-0.253262, 0.000001;;,
+ 22;3; 0.287642,-0.253263, 0.000001;;,
+ 23;3; 0.287642,-0.253262, 0.000001;;,
+ 24;3; 0.287642,-0.253262, 0.000001;;,
+ 25;3; 0.287642,-0.253263, 0.000001;;,
+ 26;3; 0.287642,-0.253263, 0.000001;;,
+ 27;3; 0.287642,-0.253263, 0.000001;;,
+ 28;3; 0.287642,-0.253263, 0.000001;;,
+ 29;3; 0.287642,-0.253263, 0.000001;;,
+ 30;3; 0.287642,-0.253263, 0.000001;;,
+ 31;3; 0.287642,-0.253262, 0.000001;;,
+ 32;3; 0.287642,-0.253263, 0.000001;;,
+ 33;3; 0.287642,-0.253262, 0.000001;;,
+ 34;3; 0.287642,-0.253262, 0.000001;;,
+ 35;3; 0.287642,-0.253262, 0.000001;;,
+ 36;3; 0.287642,-0.253262, 0.000001;;,
+ 37;3; 0.287642,-0.253263, 0.000001;;,
+ 38;3; 0.287642,-0.253262, 0.000001;;,
+ 39;3; 0.287642,-0.253263, 0.000001;;,
+ 40;3; 0.287642,-0.253263, 0.000001;;,
+ 41;3; 0.287642,-0.253263, 0.000001;;,
+ 42;3; 0.287642,-0.253263, 0.000001;;,
+ 43;3; 0.287642,-0.253262, 0.000001;;,
+ 44;3; 0.287642,-0.253263, 0.000001;;,
+ 45;3; 0.287642,-0.253263, 0.000001;;,
+ 46;3; 0.287642,-0.253262, 0.000001;;,
+ 47;3; 0.287642,-0.253263, 0.000001;;,
+ 48;3; 0.287642,-0.253262, 0.000001;;,
+ 49;3; 0.287642,-0.253262, 0.000001;;,
+ 50;3; 0.287642,-0.253263, 0.000001;;,
+ 51;3; 0.287642,-0.253263, 0.000001;;,
+ 52;3; 0.287642,-0.253263, 0.000001;;,
+ 53;3; 0.287642,-0.253263, 0.000001;;,
+ 54;3; 0.287642,-0.253263, 0.000001;;,
+ 55;3; 0.287642,-0.253263, 0.000001;;,
+ 56;3; 0.287642,-0.253262, 0.000001;;,
+ 57;3; 0.287642,-0.253263, 0.000001;;,
+ 58;3; 0.287642,-0.253262, 0.000001;;,
+ 59;3; 0.287642,-0.253262, 0.000001;;,
+ 60;3; 0.287642,-0.253263, 0.000001;;,
+ 61;3; 0.287642,-0.253262, 0.000001;;,
+ 62;3; 0.287642,-0.253263, 0.000001;;,
+ 63;3; 0.287642,-0.253263, 0.000001;;,
+ 64;3; 0.287642,-0.253263, 0.000001;;,
+ 65;3; 0.287642,-0.253263, 0.000001;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 1;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 2;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 3;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 4;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 5;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 6;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 7;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 8;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 9;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 10;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 11;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 12;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 13;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 14;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 15;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 16;4; 0.008066, 0.999466, 0.003206,-0.000025;;,
+ 17;4; 0.031536, 0.997928, 0.003201,-0.000096;;,
+ 18;4; 0.065270, 0.995717, 0.003194,-0.000199;;,
+ 19;4; 0.099000, 0.993506, 0.003187,-0.000301;;,
+ 20;4; 0.122463, 0.991968, 0.003182,-0.000373;;,
+ 21;4; 0.130525, 0.991440, 0.003180,-0.000397;;,
+ 22;4; 0.126513, 0.991440, 0.003180,-0.000385;;,
+ 23;4; 0.114400, 0.991440, 0.003180,-0.000348;;,
+ 24;4; 0.094426, 0.991440, 0.003180,-0.000287;;,
+ 25;4; 0.067468, 0.991440, 0.003180,-0.000205;;,
+ 26;4; 0.035185, 0.991440, 0.003180,-0.000107;;,
+ 27;4; -0.000000, 0.991440, 0.003180, 0.000000;;,
+ 28;4; -0.035185, 0.991440, 0.003180, 0.000107;;,
+ 29;4; -0.067468, 0.991440, 0.003180, 0.000205;;,
+ 30;4; -0.094426, 0.991440, 0.003180, 0.000287;;,
+ 31;4; -0.114400, 0.991440, 0.003180, 0.000348;;,
+ 32;4; -0.126513, 0.991440, 0.003180, 0.000385;;,
+ 33;4; -0.130526, 0.991440, 0.003180, 0.000397;;,
+ 34;4; -0.122811, 0.991945, 0.003182, 0.000374;;,
+ 35;4; -0.101252, 0.993358, 0.003186, 0.000308;;,
+ 36;4; -0.070207, 0.995393, 0.003193, 0.000214;;,
+ 37;4; -0.036874, 0.997578, 0.003200, 0.000112;;,
+ 38;4; -0.010457, 0.999310, 0.003205, 0.000032;;,
+ 39;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 40;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 41;4; 0.010456, 0.999310, 0.003205,-0.000032;;,
+ 42;4; 0.036874, 0.997578, 0.003200,-0.000112;;,
+ 43;4; 0.070207, 0.995393, 0.003193,-0.000214;;,
+ 44;4; 0.101252, 0.993359, 0.003186,-0.000308;;,
+ 45;4; 0.122811, 0.991945, 0.003182,-0.000374;;,
+ 46;4; 0.130525, 0.991440, 0.003180,-0.000397;;,
+ 47;4; 0.126513, 0.991440, 0.003180,-0.000385;;,
+ 48;4; 0.114400, 0.991440, 0.003180,-0.000348;;,
+ 49;4; 0.094426, 0.991440, 0.003180,-0.000287;;,
+ 50;4; 0.067468, 0.991440, 0.003180,-0.000205;;,
+ 51;4; 0.035185, 0.991440, 0.003180,-0.000107;;,
+ 52;4; -0.000000, 0.991440, 0.003180, 0.000000;;,
+ 53;4; -0.035185, 0.991440, 0.003180, 0.000107;;,
+ 54;4; -0.067468, 0.991440, 0.003180, 0.000205;;,
+ 55;4; -0.094426, 0.991440, 0.003180, 0.000287;;,
+ 56;4; -0.114400, 0.991440, 0.003180, 0.000348;;,
+ 57;4; -0.126513, 0.991440, 0.003180, 0.000385;;,
+ 58;4; -0.130526, 0.991440, 0.003180, 0.000397;;,
+ 59;4; -0.122463, 0.991968, 0.003182, 0.000373;;,
+ 60;4; -0.099000, 0.993506, 0.003187, 0.000301;;,
+ 61;4; -0.065270, 0.995717, 0.003194, 0.000199;;,
+ 62;4; -0.031536, 0.997928, 0.003201, 0.000096;;,
+ 63;4; -0.008066, 0.999466, 0.003206, 0.000025;;,
+ 64;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 65;4; -0.000000, 0.999995, 0.003208, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_004}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; -0.421866,-0.257697, 0.000001;;,
+ 1;3; -0.421866,-0.257697, 0.000001;;,
+ 2;3; -0.421866,-0.257697, 0.000001;;,
+ 3;3; -0.421866,-0.257697, 0.000001;;,
+ 4;3; -0.421866,-0.257697, 0.000001;;,
+ 5;3; -0.421866,-0.257697, 0.000001;;,
+ 6;3; -0.421866,-0.257697, 0.000001;;,
+ 7;3; -0.421866,-0.257697, 0.000001;;,
+ 8;3; -0.421866,-0.257697, 0.000001;;,
+ 9;3; -0.421866,-0.257697, 0.000001;;,
+ 10;3; -0.421866,-0.257697, 0.000001;;,
+ 11;3; -0.421866,-0.257697, 0.000001;;,
+ 12;3; -0.421866,-0.257697, 0.000001;;,
+ 13;3; -0.421866,-0.257697, 0.000001;;,
+ 14;3; -0.421866,-0.257697, 0.000001;;,
+ 15;3; -0.421866,-0.257697, 0.000001;;,
+ 16;3; -0.421866,-0.257697, 0.000001;;,
+ 17;3; -0.421866,-0.257697, 0.000001;;,
+ 18;3; -0.421866,-0.257697, 0.000001;;,
+ 19;3; -0.421866,-0.257697, 0.000001;;,
+ 20;3; -0.421866,-0.257697, 0.000001;;,
+ 21;3; -0.421866,-0.257697, 0.000001;;,
+ 22;3; -0.421866,-0.257697, 0.000001;;,
+ 23;3; -0.421866,-0.257697, 0.000001;;,
+ 24;3; -0.421866,-0.257697, 0.000001;;,
+ 25;3; -0.421866,-0.257697, 0.000001;;,
+ 26;3; -0.421866,-0.257697, 0.000001;;,
+ 27;3; -0.421866,-0.257697, 0.000001;;,
+ 28;3; -0.421866,-0.257697, 0.000001;;,
+ 29;3; -0.421866,-0.257697, 0.000001;;,
+ 30;3; -0.421866,-0.257697, 0.000001;;,
+ 31;3; -0.421866,-0.257697, 0.000001;;,
+ 32;3; -0.421866,-0.257697, 0.000001;;,
+ 33;3; -0.421866,-0.257697, 0.000001;;,
+ 34;3; -0.421866,-0.257697, 0.000001;;,
+ 35;3; -0.421866,-0.257697, 0.000001;;,
+ 36;3; -0.421866,-0.257697, 0.000001;;,
+ 37;3; -0.421866,-0.257697, 0.000001;;,
+ 38;3; -0.421866,-0.257697, 0.000001;;,
+ 39;3; -0.421866,-0.257697, 0.000001;;,
+ 40;3; -0.421866,-0.257697, 0.000001;;,
+ 41;3; -0.421866,-0.257697, 0.000001;;,
+ 42;3; -0.421866,-0.257697, 0.000001;;,
+ 43;3; -0.421866,-0.257697, 0.000001;;,
+ 44;3; -0.421866,-0.257697, 0.000001;;,
+ 45;3; -0.421866,-0.257697, 0.000001;;,
+ 46;3; -0.421866,-0.257697, 0.000001;;,
+ 47;3; -0.421866,-0.257697, 0.000001;;,
+ 48;3; -0.421866,-0.257697, 0.000001;;,
+ 49;3; -0.421866,-0.257697, 0.000001;;,
+ 50;3; -0.421866,-0.257697, 0.000001;;,
+ 51;3; -0.421866,-0.257697, 0.000001;;,
+ 52;3; -0.421866,-0.257697, 0.000001;;,
+ 53;3; -0.421866,-0.257697, 0.000001;;,
+ 54;3; -0.421866,-0.257697, 0.000001;;,
+ 55;3; -0.421866,-0.257697, 0.000001;;,
+ 56;3; -0.421866,-0.257697, 0.000001;;,
+ 57;3; -0.421866,-0.257697, 0.000001;;,
+ 58;3; -0.421866,-0.257697, 0.000001;;,
+ 59;3; -0.421866,-0.257697, 0.000001;;,
+ 60;3; -0.421866,-0.257697, 0.000001;;,
+ 61;3; -0.421866,-0.257697, 0.000001;;,
+ 62;3; -0.421866,-0.257697, 0.000001;;,
+ 63;3; -0.421866,-0.257697, 0.000001;;,
+ 64;3; -0.421866,-0.257697, 0.000001;;,
+ 65;3; -0.421866,-0.257697, 0.000001;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 1;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 2;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 3;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 4;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 5;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 6;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 7;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 8;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 9;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 10;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 11;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 12;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 13;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 14;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 15;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 16;4; -0.008066, 0.999466, 0.003206, 0.000025;;,
+ 17;4; -0.031536, 0.997928, 0.003201, 0.000096;;,
+ 18;4; -0.065270, 0.995717, 0.003194, 0.000199;;,
+ 19;4; -0.099000, 0.993506, 0.003187, 0.000301;;,
+ 20;4; -0.122463, 0.991968, 0.003182, 0.000373;;,
+ 21;4; -0.130526, 0.991440, 0.003180, 0.000397;;,
+ 22;4; -0.126513, 0.991440, 0.003180, 0.000385;;,
+ 23;4; -0.114400, 0.991440, 0.003180, 0.000348;;,
+ 24;4; -0.094426, 0.991440, 0.003180, 0.000287;;,
+ 25;4; -0.067468, 0.991440, 0.003180, 0.000205;;,
+ 26;4; -0.035185, 0.991440, 0.003180, 0.000107;;,
+ 27;4; -0.000000, 0.991440, 0.003180, 0.000000;;,
+ 28;4; 0.035185, 0.991440, 0.003180,-0.000107;;,
+ 29;4; 0.067468, 0.991440, 0.003180,-0.000205;;,
+ 30;4; 0.094426, 0.991440, 0.003180,-0.000287;;,
+ 31;4; 0.114400, 0.991440, 0.003180,-0.000348;;,
+ 32;4; 0.126513, 0.991440, 0.003180,-0.000385;;,
+ 33;4; 0.130526, 0.991440, 0.003180,-0.000397;;,
+ 34;4; 0.122811, 0.991945, 0.003182,-0.000374;;,
+ 35;4; 0.101252, 0.993359, 0.003186,-0.000308;;,
+ 36;4; 0.070207, 0.995393, 0.003193,-0.000214;;,
+ 37;4; 0.036874, 0.997578, 0.003200,-0.000112;;,
+ 38;4; 0.010456, 0.999310, 0.003205,-0.000032;;,
+ 39;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 40;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 41;4; -0.010457, 0.999310, 0.003205, 0.000032;;,
+ 42;4; -0.036874, 0.997578, 0.003200, 0.000112;;,
+ 43;4; -0.070207, 0.995393, 0.003193, 0.000214;;,
+ 44;4; -0.101252, 0.993358, 0.003186, 0.000308;;,
+ 45;4; -0.122811, 0.991945, 0.003182, 0.000374;;,
+ 46;4; -0.130526, 0.991440, 0.003180, 0.000397;;,
+ 47;4; -0.126513, 0.991440, 0.003180, 0.000385;;,
+ 48;4; -0.114400, 0.991440, 0.003180, 0.000348;;,
+ 49;4; -0.094426, 0.991440, 0.003180, 0.000287;;,
+ 50;4; -0.067468, 0.991440, 0.003180, 0.000205;;,
+ 51;4; -0.035185, 0.991440, 0.003180, 0.000107;;,
+ 52;4; -0.000000, 0.991440, 0.003180, 0.000000;;,
+ 53;4; 0.035185, 0.991440, 0.003180,-0.000107;;,
+ 54;4; 0.067468, 0.991440, 0.003180,-0.000205;;,
+ 55;4; 0.094426, 0.991440, 0.003180,-0.000287;;,
+ 56;4; 0.114400, 0.991440, 0.003180,-0.000348;;,
+ 57;4; 0.126513, 0.991440, 0.003180,-0.000385;;,
+ 58;4; 0.130526, 0.991440, 0.003180,-0.000397;;,
+ 59;4; 0.122463, 0.991968, 0.003182,-0.000373;;,
+ 60;4; 0.099000, 0.993506, 0.003187,-0.000301;;,
+ 61;4; 0.065270, 0.995717, 0.003194,-0.000199;;,
+ 62;4; 0.031536, 0.997928, 0.003201,-0.000096;;,
+ 63;4; 0.008066, 0.999466, 0.003206,-0.000025;;,
+ 64;4; -0.000000, 0.999995, 0.003208, 0.000000;;,
+ 65;4; -0.000000, 0.999995, 0.003208, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Cube_003}
+ AnimationKey { //Position
+ 2;
+ 66;
+ 0;3; -0.019749,-0.002151,-3.487330;;,
+ 1;3; -0.019749,-0.002151,-3.487330;;,
+ 2;3; -0.019749,-0.002151,-3.487330;;,
+ 3;3; -0.019749,-0.002151,-3.487330;;,
+ 4;3; -0.019749,-0.002151,-3.487330;;,
+ 5;3; -0.019749,-0.002151,-3.487330;;,
+ 6;3; -0.019749,-0.002151,-3.487330;;,
+ 7;3; -0.019749,-0.002151,-3.487330;;,
+ 8;3; -0.019749,-0.002151,-3.487330;;,
+ 9;3; -0.019749,-0.002151,-3.487330;;,
+ 10;3; -0.019749,-0.002151,-3.487330;;,
+ 11;3; -0.019749,-0.002151,-3.487330;;,
+ 12;3; -0.019749,-0.002151,-3.487330;;,
+ 13;3; -0.019749,-0.002151,-3.487330;;,
+ 14;3; -0.019749,-0.002151,-3.487330;;,
+ 15;3; -0.019749,-0.002151,-3.487330;;,
+ 16;3; -0.019749,-0.002151,-3.487330;;,
+ 17;3; -0.019749,-0.002151,-3.487330;;,
+ 18;3; -0.019749,-0.002151,-3.487330;;,
+ 19;3; -0.019749,-0.002151,-3.487330;;,
+ 20;3; -0.019749,-0.002151,-3.487330;;,
+ 21;3; -0.019749,-0.002151,-3.487330;;,
+ 22;3; -0.019749,-0.002151,-3.487330;;,
+ 23;3; -0.019749,-0.002151,-3.487330;;,
+ 24;3; -0.019749,-0.002151,-3.487330;;,
+ 25;3; -0.019749,-0.002151,-3.487330;;,
+ 26;3; -0.019749,-0.002151,-3.487330;;,
+ 27;3; -0.019749,-0.002151,-3.487330;;,
+ 28;3; -0.019749,-0.002151,-3.487330;;,
+ 29;3; -0.019749,-0.002151,-3.487330;;,
+ 30;3; -0.019749,-0.002151,-3.487330;;,
+ 31;3; -0.019749,-0.002151,-3.487330;;,
+ 32;3; -0.019749,-0.002151,-3.487330;;,
+ 33;3; -0.019749,-0.002151,-3.487330;;,
+ 34;3; -0.019749,-0.002151,-3.487330;;,
+ 35;3; -0.019749,-0.002151,-3.487330;;,
+ 36;3; -0.019749,-0.002151,-3.487330;;,
+ 37;3; -0.019749,-0.002151,-3.487330;;,
+ 38;3; -0.019749,-0.002151,-3.487330;;,
+ 39;3; -0.019749,-0.002151,-3.487330;;,
+ 40;3; -0.019749,-0.002151,-3.487330;;,
+ 41;3; -0.019749,-0.002151,-3.487330;;,
+ 42;3; -0.019749,-0.002151,-3.487330;;,
+ 43;3; -0.019749,-0.002151,-3.487330;;,
+ 44;3; -0.019749,-0.002151,-3.487330;;,
+ 45;3; -0.019749,-0.002151,-3.487330;;,
+ 46;3; -0.019749,-0.002151,-3.487330;;,
+ 47;3; -0.019749,-0.002151,-3.487330;;,
+ 48;3; -0.019749,-0.002151,-3.487330;;,
+ 49;3; -0.019749,-0.002151,-3.487330;;,
+ 50;3; -0.019749,-0.002151,-3.487330;;,
+ 51;3; -0.019749,-0.002151,-3.487330;;,
+ 52;3; -0.019749,-0.002151,-3.487330;;,
+ 53;3; -0.019749,-0.002151,-3.487330;;,
+ 54;3; -0.019749,-0.002151,-3.487330;;,
+ 55;3; -0.019749,-0.002151,-3.487330;;,
+ 56;3; -0.019749,-0.002151,-3.487330;;,
+ 57;3; -0.019749,-0.002151,-3.487330;;,
+ 58;3; -0.019749,-0.002151,-3.487330;;,
+ 59;3; -0.019749,-0.002151,-3.487330;;,
+ 60;3; -0.019749,-0.002151,-3.487330;;,
+ 61;3; -0.019749,-0.002151,-3.487330;;,
+ 62;3; -0.019749,-0.002151,-3.487330;;,
+ 63;3; -0.019749,-0.002151,-3.487330;;,
+ 64;3; -0.019749,-0.002151,-3.487330;;,
+ 65;3; -0.019749,-0.002151,-3.487330;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 66;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 64;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 65;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 66;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;,
+ 64;3; 1.000000, 1.000000, 1.000000;;,
+ 65;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/models/mobs_tree_monster.png b/carbone_mobs/models/mobs_tree_monster.png
new file mode 100644
index 0000000..061ef94
--- /dev/null
+++ b/carbone_mobs/models/mobs_tree_monster.png
Binary files differ
diff --git a/carbone_mobs/models/mobs_tree_monster.x b/carbone_mobs/models/mobs_tree_monster.x
new file mode 100755
index 0000000..57c681d
--- /dev/null
+++ b/carbone_mobs/models/mobs_tree_monster.x
@@ -0,0 +1,4009 @@
+xof 0303txt 0032
+
+template XSkinMeshHeader {
+ <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
+ WORD nMaxSkinWeightsPerVertex;
+ WORD nMaxSkinWeightsPerFace;
+ WORD nBones;
+}
+
+template SkinWeights {
+ <6f0d123b-bad2-4167-a0d0-80224f25fabb>
+ STRING transformNodeName;
+ DWORD nWeights;
+ array DWORD vertexIndices[nWeights];
+ array float weights[nWeights];
+ Matrix4x4 matrixOffset;
+}
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Armature {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.003210,-0.035207, 1.015033, 1.000000;;
+ }
+ Frame Armature_root {
+ FrameTransformMatrix {
+ -1.000000, 0.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000,-0.000000,-0.189446, 1.000000;;
+ }
+ Frame Armature_Bone_001 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ -0.000000, 0.376699, 0.433080, 1.000000;;
+ }
+ } //End of Armature_Bone_001
+ Frame Armature_Bone_002 {
+ FrameTransformMatrix {
+ -0.234777, 0.000000,-0.972049, 0.000000,
+ 0.687342,-0.707107,-0.166012, 0.000000,
+ -0.687343,-0.707106, 0.166012, 0.000000,
+ 0.305704,-0.008069, 0.509506, 1.000000;;
+ }
+ } //End of Armature_Bone_002
+ Frame Armature_Bone_003 {
+ FrameTransformMatrix {
+ 0.707093,-0.004414, 0.707107, 0.000000,
+ -0.504404,-0.703972, 0.500000, 0.000000,
+ 0.495577,-0.710214,-0.500000, 0.000000,
+ -0.299335,-0.008069, 0.509506, 1.000000;;
+ }
+ } //End of Armature_Bone_003
+ Frame Armature_Bone_004 {
+ FrameTransformMatrix {
+ -0.223872,-0.000000, 0.974619, 0.000000,
+ 0.689160,-0.707106, 0.158302, 0.000000,
+ 0.689159, 0.707107, 0.158302, 0.000000,
+ 0.305704,-0.008069,-0.057320, 1.000000;;
+ }
+ } //End of Armature_Bone_004
+ Frame Armature_Bone_005 {
+ FrameTransformMatrix {
+ 0.707093,-0.004414,-0.707107, 0.000000,
+ -0.504404,-0.703971,-0.500000, 0.000000,
+ -0.495576, 0.710215,-0.500000, 0.000000,
+ -0.299335,-0.008069,-0.057320, 1.000000;;
+ }
+ } //End of Armature_Bone_005
+ } //End of Armature_root
+ Frame Cube_005 {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ -0.003210, 0.035207,-1.015033, 1.000000;;
+ }
+ Mesh { //Cube_020 Mesh
+ 396;
+ -0.698333; 0.388762;-0.235020;,
+ 0.039704;-0.349276;-0.235020;,
+ 0.039704;-0.349276; 0.968695;,
+ -0.698333; 0.388761; 0.968695;,
+ 0.039704;-0.349276;-0.235020;,
+ -0.698333; 0.388761;-0.235020;,
+ -0.698333; 0.388761; 0.968695;,
+ 0.039704;-0.349276; 0.968695;,
+ 0.039704; 0.388761;-0.235020;,
+ -0.698333;-0.349276;-0.235020;,
+ -0.698333;-0.349276; 0.968695;,
+ 0.039704; 0.388761; 0.968695;,
+ -0.698333;-0.349276;-0.235020;,
+ 0.039704; 0.388761;-0.235020;,
+ 0.039704; 0.388761; 0.968695;,
+ -0.698333;-0.349276; 0.968695;,
+ -0.666674;-0.178368;-0.310436;,
+ 0.071363;-0.916405;-0.310436;,
+ 0.071363;-0.916405; 0.893279;,
+ -0.666674;-0.178368; 0.893279;,
+ 0.071363;-0.916405;-0.310436;,
+ -0.666674;-0.178368;-0.310436;,
+ -0.666674;-0.178368; 0.893279;,
+ 0.071363;-0.916405; 0.893279;,
+ 0.071363;-0.178368;-0.310436;,
+ -0.666674;-0.916405;-0.310436;,
+ -0.666674;-0.916405; 0.893279;,
+ 0.071363;-0.178368; 0.893279;,
+ -0.666674;-0.916405;-0.310436;,
+ 0.071363;-0.178368;-0.310436;,
+ 0.071363;-0.178368; 0.893279;,
+ -0.666674;-0.916405; 0.893279;,
+ -0.102420;-0.182496;-0.129728;,
+ 0.635618;-0.920533;-0.129728;,
+ 0.635617;-0.920533; 1.073987;,
+ -0.102420;-0.182496; 1.073987;,
+ 0.635618;-0.920533;-0.129728;,
+ -0.102420;-0.182496;-0.129728;,
+ -0.102420;-0.182496; 1.073987;,
+ 0.635618;-0.920533; 1.073987;,
+ 0.635618;-0.182496;-0.129728;,
+ -0.102420;-0.920533;-0.129728;,
+ -0.102420;-0.920533; 1.073987;,
+ 0.635618;-0.182496; 1.073987;,
+ -0.102420;-0.920533;-0.129728;,
+ 0.635618;-0.182496;-0.129728;,
+ 0.635618;-0.182496; 1.073987;,
+ -0.102420;-0.920533; 1.073987;,
+ -0.089112; 0.390430;-0.176739;,
+ 0.648926;-0.347607;-0.176739;,
+ 0.648925;-0.347607; 1.026976;,
+ -0.089112; 0.390430; 1.026976;,
+ 0.648926;-0.347607;-0.176739;,
+ -0.089112; 0.390430;-0.176739;,
+ -0.089112; 0.390430; 1.026976;,
+ 0.648926;-0.347607; 1.026976;,
+ 0.648926; 0.390430;-0.176739;,
+ -0.089112;-0.347607;-0.176739;,
+ -0.089112;-0.347607; 1.026976;,
+ 0.648926; 0.390430; 1.026976;,
+ -0.089112;-0.347607;-0.176739;,
+ 0.648926; 0.390430;-0.176739;,
+ 0.648926; 0.390430; 1.026976;,
+ -0.089112;-0.347607; 1.026976;,
+ 0.226582; 0.413095; 2.965844;,
+ -0.178494;-0.255726; 2.274475;,
+ -0.895898; 0.614223; 1.853227;,
+ -0.490822; 1.283045; 2.544595;,
+ -0.178494;-0.255726; 2.274475;,
+ 0.226582; 0.413095; 2.965844;,
+ -0.490822; 1.283045; 2.544595;,
+ -0.895898; 0.614224; 1.853227;,
+ -0.342818;-0.056461; 2.965843;,
+ 0.390906; 0.213830; 2.274476;,
+ -0.326498; 1.083779; 1.853227;,
+ -1.060222; 0.813489; 2.544595;,
+ 0.390906; 0.213830; 2.274476;,
+ -0.342818;-0.056461; 2.965843;,
+ -1.060222; 0.813489; 2.544595;,
+ -0.326498; 1.083779; 1.853227;,
+ 0.538129;-0.026167; 2.965844;,
+ -0.237751; 0.070879; 2.274476;,
+ 0.263923; 1.080732; 1.853227;,
+ 1.039804; 0.983687; 2.544595;,
+ -0.237751; 0.070879; 2.274476;,
+ 0.538129;-0.026167; 2.965844;,
+ 1.039804; 0.983687; 2.544595;,
+ 0.263923; 1.080732; 1.853227;,
+ -0.122841; 0.302190; 2.965844;,
+ 0.423219;-0.257477; 2.274476;,
+ 0.924893; 0.752376; 1.853227;,
+ 0.378834; 1.312043; 2.544595;,
+ 0.423219;-0.257477; 2.274476;,
+ -0.122841; 0.302190; 2.965844;,
+ 0.378834; 1.312043; 2.544595;,
+ 0.924893; 0.752376; 1.853227;,
+ -0.452051;-0.303906; 2.707328;,
+ 0.323830;-0.206860; 3.398696;,
+ -0.177845; 0.802993; 3.819944;,
+ -0.953725; 0.705948; 3.128576;,
+ 0.323830;-0.206860; 3.398696;,
+ -0.452051;-0.303906; 2.707328;,
+ -0.953725; 0.705948; 3.128576;,
+ -0.177845; 0.802993; 3.819944;,
+ 0.208919; 0.024451; 2.707328;,
+ -0.337140;-0.535217; 3.398695;,
+ -0.838815; 0.474637; 3.819944;,
+ -0.292755; 1.034304; 3.128576;,
+ -0.337140;-0.535217; 3.398695;,
+ 0.208919; 0.024451; 2.707328;,
+ -0.292755; 1.034304; 3.128576;,
+ -0.838815; 0.474637; 3.819944;,
+ -0.140504; 0.135356; 2.707328;,
+ 0.264572;-0.533466; 3.398696;,
+ 0.981976; 0.336484; 3.819944;,
+ 0.576900; 1.005305; 3.128576;,
+ 0.264572;-0.533466; 3.398696;,
+ -0.140504; 0.135356; 2.707328;,
+ 0.576900; 1.005305; 3.128576;,
+ 0.981976; 0.336484; 3.819944;,
+ 0.428896;-0.334200; 2.707328;,
+ -0.304828;-0.063910; 3.398695;,
+ 0.412576; 0.806040; 3.819944;,
+ 1.146301; 0.535749; 3.128576;,
+ -0.304828;-0.063910; 3.398695;,
+ 0.428896;-0.334200; 2.707328;,
+ 1.146301; 0.535749; 3.128576;,
+ 0.412576; 0.806040; 3.819944;,
+ -0.302501; 0.103625; 3.405081;,
+ 0.435537;-0.393769; 3.950332;,
+ 0.435537; 0.495518; 4.761565;,
+ -0.302501; 0.992912; 4.216314;,
+ 0.435537;-0.393769; 3.950332;,
+ -0.302501; 0.103625; 3.405081;,
+ -0.302501; 0.992912; 4.216314;,
+ 0.435537; 0.495518; 4.761565;,
+ 0.435537; 0.103625; 3.405081;,
+ -0.302501;-0.393769; 3.950331;,
+ -0.302501; 0.495518; 4.761565;,
+ 0.435537; 0.992911; 4.216314;,
+ -0.302501;-0.393769; 3.950331;,
+ 0.435537; 0.103625; 3.405081;,
+ 0.435537; 0.992911; 4.216314;,
+ -0.302501; 0.495518; 4.761565;,
+ -0.102694; 0.415625; 3.502965;,
+ -0.102694;-0.628117; 3.502965;,
+ -0.908686;-0.628117; 4.397006;,
+ -0.908686; 0.415625; 4.397006;,
+ -0.102694;-0.628117; 3.502965;,
+ -0.102694; 0.415625; 3.502965;,
+ -0.908686; 0.415625; 4.397006;,
+ -0.908686;-0.628117; 4.397006;,
+ 0.284917;-0.106246; 3.852403;,
+ -0.490306;-0.106246; 3.153527;,
+ -1.296297;-0.106246; 4.047568;,
+ -0.521074;-0.106246; 4.746444;,
+ -0.490306;-0.106246; 3.153527;,
+ 0.284917;-0.106246; 3.852403;,
+ -0.521074;-0.106246; 4.746444;,
+ -1.296297;-0.106246; 4.047568;,
+ 0.249779; 0.415625; 3.501722;,
+ 0.249779;-0.628117; 3.501721;,
+ 0.723046;-0.628117; 4.608496;,
+ 0.723046; 0.415625; 4.608496;,
+ 0.249779;-0.628117; 3.501721;,
+ 0.249779; 0.415625; 3.501722;,
+ 0.723046; 0.415625; 4.608496;,
+ 0.723046;-0.628117; 4.608496;,
+ 0.729621;-0.106246; 3.296537;,
+ -0.230063;-0.106246; 3.706906;,
+ 0.243203;-0.106246; 4.813681;,
+ 1.202888;-0.106246; 4.403311;,
+ -0.230063;-0.106246; 3.706906;,
+ 0.729621;-0.106246; 3.296537;,
+ 1.202888;-0.106246; 4.403311;,
+ 0.243203;-0.106246; 4.813681;,
+ -0.356476; 0.081197; 3.794902;,
+ 0.381561;-0.656840; 3.794902;,
+ 0.381561;-0.656840; 4.998618;,
+ -0.356476; 0.081197; 4.998618;,
+ 0.381561;-0.656840; 3.794902;,
+ -0.356476; 0.081197; 3.794902;,
+ -0.356476; 0.081197; 4.998618;,
+ 0.381561;-0.656840; 4.998618;,
+ 0.381561; 0.081197; 3.794902;,
+ -0.356476;-0.656840; 3.794902;,
+ -0.356476;-0.656840; 4.998617;,
+ 0.381561; 0.081197; 4.998618;,
+ -0.356476;-0.656840; 3.794902;,
+ 0.381561; 0.081197; 3.794902;,
+ 0.381561; 0.081197; 4.998618;,
+ -0.356476;-0.656840; 4.998617;,
+ 0.404418;-0.274915; 2.000674;,
+ 0.404418;-0.671309; 2.000674;,
+ 0.404418;-0.671309; 2.966957;,
+ 0.404418;-0.274915; 2.966957;,
+ 0.404418;-0.671309; 2.000674;,
+ -0.404418;-0.671309; 2.000674;,
+ -0.404418;-0.671309; 2.966957;,
+ 0.404418;-0.671309; 2.966957;,
+ -0.404418;-0.671309; 2.000674;,
+ -0.404418;-0.274915; 2.000674;,
+ -0.404418;-0.274915; 2.966957;,
+ -0.404418;-0.671309; 2.966957;,
+ -0.404418;-0.671309; 2.966957;,
+ -0.404418;-0.671309; 2.000674;,
+ 0.404418;-0.671309; 2.000674;,
+ 0.404418;-0.671309; 2.966957;,
+ 0.404418;-0.671309; 2.966957;,
+ 0.404418;-0.671309; 2.000674;,
+ 0.404418;-0.274915; 2.000674;,
+ 0.404418;-0.274915; 2.966957;,
+ -0.404418;-0.274915; 2.966957;,
+ -0.404418;-0.274915; 2.000674;,
+ -0.404418;-0.671309; 2.000674;,
+ -0.404418;-0.671309; 2.966957;,
+ -0.400414;-0.659994; 2.846577;,
+ -0.400414; 0.119126; 2.846577;,
+ -0.400414; 0.119126; 3.812860;,
+ -0.400414;-0.659994; 3.812860;,
+ -0.400414; 0.119126; 2.846577;,
+ 0.400414; 0.119126; 2.846577;,
+ 0.400414; 0.119126; 3.812860;,
+ -0.400414; 0.119126; 3.812860;,
+ 0.400414; 0.119126; 2.846577;,
+ 0.400414;-0.659994; 2.846577;,
+ 0.400414;-0.659994; 3.812860;,
+ 0.400414; 0.119126; 3.812860;,
+ 0.400414;-0.659994; 2.846577;,
+ -0.400414;-0.659994; 2.846577;,
+ -0.400414;-0.659994; 3.812860;,
+ 0.400414;-0.659994; 3.812860;,
+ -0.400414;-0.659994; 3.812860;,
+ -0.400414; 0.119126; 3.812860;,
+ 0.400414; 0.119126; 3.812860;,
+ 0.400414;-0.659994; 3.812860;,
+ -0.400414;-0.263600; 1.882061;,
+ -0.400414; 0.119126; 1.882061;,
+ -0.400414; 0.119126; 2.848344;,
+ -0.400414;-0.263600; 2.848344;,
+ -0.400414; 0.119126; 1.882061;,
+ 0.400414; 0.119126; 1.882061;,
+ 0.400414; 0.119126; 2.848344;,
+ -0.400414; 0.119126; 2.848344;,
+ 0.400414; 0.119126; 1.882061;,
+ 0.400414;-0.263600; 1.882061;,
+ 0.400414;-0.263600; 2.848344;,
+ 0.400414; 0.119126; 2.848344;,
+ -0.452774;-0.710935; 0.935603;,
+ -0.452774; 0.170067; 0.935603;,
+ -0.452774; 0.170067; 2.028242;,
+ -0.452774;-0.710935; 2.028242;,
+ -0.452774; 0.170067; 0.935603;,
+ 0.452774; 0.170067; 0.935603;,
+ 0.452774; 0.170067; 2.028242;,
+ -0.452774; 0.170067; 2.028242;,
+ 0.452774; 0.170067; 0.935603;,
+ 0.452774;-0.710935; 0.935603;,
+ 0.452774;-0.710935; 2.028242;,
+ 0.452774; 0.170067; 2.028242;,
+ 0.452774;-0.710935; 0.935603;,
+ -0.452774;-0.710935; 0.935603;,
+ -0.452774;-0.710935; 2.028242;,
+ 0.452774;-0.710935; 2.028242;,
+ -0.452774;-0.710935; 2.028242;,
+ -0.452774; 0.170067; 2.028242;,
+ 0.452774; 0.170067; 2.028242;,
+ 0.452774;-0.710935; 2.028242;,
+ -0.400414; 0.119126; 3.022741;,
+ -0.400414;-0.659994; 3.022741;,
+ 0.400414;-0.659994; 3.022741;,
+ 0.400414; 0.119126; 3.022741;,
+ -0.452774;-0.710935; 0.935603;,
+ 0.452774;-0.710935; 0.935603;,
+ 0.452774; 0.170067; 0.935603;,
+ -0.452774; 0.170067; 0.935603;,
+ -0.400414;-0.266082; 2.848344;,
+ -0.400414;-0.266082; 1.882061;,
+ -0.400414;-0.263600; 1.882061;,
+ -0.400414;-0.263600; 2.848344;,
+ 0.400414;-0.266082; 2.848344;,
+ 0.400414;-0.266082; 1.882061;,
+ -0.400414;-0.266082; 1.882061;,
+ -0.400414;-0.266082; 2.848344;,
+ 0.400414;-0.263600; 2.848344;,
+ 0.400414;-0.263600; 1.882061;,
+ 0.400414;-0.266082; 1.882061;,
+ 0.400414;-0.266082; 2.848344;,
+ -0.391039;-0.271441; 3.810754;,
+ -0.391039;-0.271441; 2.844472;,
+ -0.400414;-0.659994; 2.846577;,
+ -0.400414;-0.659994; 3.812860;,
+ 0.409790;-0.271441; 3.810754;,
+ 0.409790;-0.271441; 2.844472;,
+ -0.391039;-0.271441; 2.844472;,
+ -0.391039;-0.271441; 3.810754;,
+ 0.400414;-0.659994; 3.812860;,
+ 0.400414;-0.659994; 2.846577;,
+ 0.409790;-0.271441; 2.844472;,
+ 0.409790;-0.271441; 3.810754;,
+ 0.133916;-0.391466;-0.146526;,
+ 0.433240;-0.391466;-0.146526;,
+ 0.433240;-0.391466; 1.070661;,
+ 0.133916;-0.391466; 1.070661;,
+ 0.433240;-0.391466;-0.146526;,
+ 0.433240;-0.690790;-0.146526;,
+ 0.433240;-0.690790; 1.070661;,
+ 0.433240;-0.391466; 1.070661;,
+ 0.433240;-0.690790;-0.146526;,
+ 0.133916;-0.690790;-0.146526;,
+ 0.133916;-0.690790; 1.070661;,
+ 0.433240;-0.690790; 1.070661;,
+ 0.133916;-0.690790;-0.146526;,
+ 0.133916;-0.391466;-0.146526;,
+ 0.133916;-0.391466; 1.070661;,
+ 0.133916;-0.690790; 1.070661;,
+ 0.133916;-0.690790;-0.146526;,
+ 0.433240;-0.690790;-0.146526;,
+ 0.433240;-0.391466;-0.146526;,
+ 0.133916;-0.391466;-0.146526;,
+ 0.133916;-0.391466; 1.070661;,
+ 0.433240;-0.391466; 1.070661;,
+ 0.433240;-0.690790; 1.070661;,
+ 0.133916;-0.690790; 1.070661;,
+ 0.141919;-0.135520;-0.146526;,
+ 0.141919; 0.163804;-0.146526;,
+ 0.141919; 0.163804; 1.070661;,
+ 0.141919;-0.135520; 1.070661;,
+ 0.141919; 0.163804;-0.146526;,
+ 0.441243; 0.163804;-0.146526;,
+ 0.441242; 0.163804; 1.070661;,
+ 0.141919; 0.163804; 1.070661;,
+ 0.441243; 0.163804;-0.146526;,
+ 0.441243;-0.135520;-0.146526;,
+ 0.441243;-0.135520; 1.070661;,
+ 0.441242; 0.163804; 1.070661;,
+ 0.441243;-0.135520;-0.146526;,
+ 0.141919;-0.135520;-0.146526;,
+ 0.141919;-0.135520; 1.070661;,
+ 0.441243;-0.135520; 1.070661;,
+ 0.441243;-0.135520;-0.146526;,
+ 0.441243; 0.163804;-0.146526;,
+ 0.141919; 0.163804;-0.146526;,
+ 0.141919;-0.135520;-0.146526;,
+ 0.141919;-0.135520; 1.070661;,
+ 0.141919; 0.163804; 1.070661;,
+ 0.441242; 0.163804; 1.070661;,
+ 0.441243;-0.135520; 1.070661;,
+ -0.158719;-0.383464;-0.146526;,
+ -0.158719;-0.682787;-0.146526;,
+ -0.158719;-0.682787; 1.070661;,
+ -0.158719;-0.383464; 1.070661;,
+ -0.158719;-0.682787;-0.146526;,
+ -0.458043;-0.682787;-0.146526;,
+ -0.458042;-0.682787; 1.070661;,
+ -0.158719;-0.682787; 1.070661;,
+ -0.458043;-0.682787;-0.146526;,
+ -0.458043;-0.383464;-0.146526;,
+ -0.458043;-0.383464; 1.070661;,
+ -0.458042;-0.682787; 1.070661;,
+ -0.458043;-0.383464;-0.146526;,
+ -0.158719;-0.383464;-0.146526;,
+ -0.158719;-0.383464; 1.070661;,
+ -0.458043;-0.383464; 1.070661;,
+ -0.458043;-0.383464;-0.146526;,
+ -0.458043;-0.682787;-0.146526;,
+ -0.158719;-0.682787;-0.146526;,
+ -0.158719;-0.383464;-0.146526;,
+ -0.158719;-0.383464; 1.070661;,
+ -0.158719;-0.682787; 1.070661;,
+ -0.458042;-0.682787; 1.070661;,
+ -0.458043;-0.383464; 1.070661;,
+ -0.150716;-0.127518;-0.146526;,
+ -0.450040;-0.127518;-0.146526;,
+ -0.450040;-0.127518; 1.070661;,
+ -0.150716;-0.127518; 1.070661;,
+ -0.450040;-0.127518;-0.146526;,
+ -0.450040; 0.171806;-0.146526;,
+ -0.450040; 0.171806; 1.070661;,
+ -0.450040;-0.127518; 1.070661;,
+ -0.450040; 0.171806;-0.146526;,
+ -0.150716; 0.171806;-0.146526;,
+ -0.150716; 0.171806; 1.070661;,
+ -0.450040; 0.171806; 1.070661;,
+ -0.150716; 0.171806;-0.146526;,
+ -0.150716;-0.127518;-0.146526;,
+ -0.150716;-0.127518; 1.070661;,
+ -0.150716; 0.171806; 1.070661;,
+ -0.150716; 0.171806;-0.146526;,
+ -0.450040; 0.171806;-0.146526;,
+ -0.450040;-0.127518;-0.146526;,
+ -0.150716;-0.127518;-0.146526;,
+ -0.150716;-0.127518; 1.070661;,
+ -0.450040;-0.127518; 1.070661;,
+ -0.450040; 0.171806; 1.070661;,
+ -0.150716; 0.171806; 1.070661;;
+ 99;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;,
+ 4;332;333;334;335;,
+ 4;336;337;338;339;,
+ 4;340;341;342;343;,
+ 4;344;345;346;347;,
+ 4;348;349;350;351;,
+ 4;352;353;354;355;,
+ 4;356;357;358;359;,
+ 4;360;361;362;363;,
+ 4;364;365;366;367;,
+ 4;368;369;370;371;,
+ 4;372;373;374;375;,
+ 4;376;377;378;379;,
+ 4;380;381;382;383;,
+ 4;384;385;386;387;,
+ 4;388;389;390;391;,
+ 4;392;393;394;395;;
+ MeshNormals { //Cube_020 Normals
+ 396;
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.702975;-0.258963; 0.662393;,
+ -0.702975;-0.258963; 0.662393;,
+ -0.702975;-0.258963; 0.662393;,
+ -0.702975;-0.258963; 0.662393;,
+ 0.702974; 0.258963;-0.662393;,
+ 0.702974; 0.258963;-0.662393;,
+ 0.702974; 0.258963;-0.662393;,
+ 0.702974; 0.258963;-0.662393;,
+ -0.388099;-0.640791;-0.662394;,
+ -0.388099;-0.640791;-0.662394;,
+ -0.388099;-0.640791;-0.662394;,
+ -0.388099;-0.640791;-0.662394;,
+ 0.388099; 0.640791; 0.662394;,
+ 0.388099; 0.640791; 0.662394;,
+ 0.388099; 0.640791; 0.662394;,
+ 0.388099; 0.640791; 0.662394;,
+ -0.523175; 0.536212; 0.662394;,
+ -0.523175; 0.536212; 0.662394;,
+ -0.523175; 0.536212; 0.662394;,
+ -0.523175; 0.536212; 0.662394;,
+ 0.523174;-0.536212;-0.662394;,
+ 0.523174;-0.536212;-0.662394;,
+ 0.523174;-0.536212;-0.662394;,
+ 0.523174;-0.536212;-0.662394;,
+ -0.743364; 0.092978;-0.662394;,
+ -0.743364; 0.092978;-0.662394;,
+ -0.743364; 0.092978;-0.662394;,
+ -0.743364; 0.092978;-0.662394;,
+ 0.743364;-0.092978; 0.662393;,
+ 0.743364;-0.092978; 0.662393;,
+ 0.743364;-0.092978; 0.662393;,
+ 0.743364;-0.092978; 0.662393;,
+ 0.523175; 0.536212;-0.662393;,
+ 0.523175; 0.536212;-0.662393;,
+ 0.523175; 0.536212;-0.662393;,
+ 0.523175; 0.536212;-0.662393;,
+ -0.523175;-0.536212; 0.662394;,
+ -0.523175;-0.536212; 0.662394;,
+ -0.523175;-0.536212; 0.662394;,
+ -0.523175;-0.536212; 0.662394;,
+ 0.743364; 0.092978; 0.662394;,
+ 0.743364; 0.092978; 0.662394;,
+ 0.743364; 0.092978; 0.662394;,
+ 0.743364; 0.092978; 0.662394;,
+ -0.743364;-0.092978;-0.662394;,
+ -0.743364;-0.092978;-0.662394;,
+ -0.743364;-0.092978;-0.662394;,
+ -0.743364;-0.092978;-0.662394;,
+ 0.702975;-0.258963;-0.662393;,
+ 0.702975;-0.258963;-0.662393;,
+ 0.702975;-0.258963;-0.662393;,
+ 0.702975;-0.258963;-0.662393;,
+ -0.702974; 0.258963; 0.662394;,
+ -0.702974; 0.258963; 0.662394;,
+ -0.702974; 0.258963; 0.662394;,
+ -0.702974; 0.258963; 0.662394;,
+ 0.388099;-0.640792; 0.662394;,
+ 0.388099;-0.640792; 0.662394;,
+ 0.388099;-0.640792; 0.662394;,
+ 0.388099;-0.640792; 0.662394;,
+ -0.388099; 0.640792;-0.662394;,
+ -0.388099; 0.640792;-0.662394;,
+ -0.388099; 0.640792;-0.662394;,
+ -0.388099; 0.640792;-0.662394;,
+ 0.707107; 0.476548;-0.522400;,
+ 0.707107; 0.476548;-0.522400;,
+ 0.707107; 0.476548;-0.522400;,
+ 0.707107; 0.476548;-0.522400;,
+ -0.707107;-0.476548; 0.522400;,
+ -0.707107;-0.476548; 0.522400;,
+ -0.707107;-0.476548; 0.522400;,
+ -0.707107;-0.476548; 0.522400;,
+ 0.707107;-0.476549; 0.522400;,
+ 0.707107;-0.476549; 0.522400;,
+ 0.707107;-0.476549; 0.522400;,
+ 0.707107;-0.476549; 0.522400;,
+ -0.707107; 0.476549;-0.522400;,
+ -0.707107; 0.476549;-0.522400;,
+ -0.707107; 0.476549;-0.522400;,
+ -0.707107; 0.476549;-0.522400;,
+ 0.742734;-0.000000; 0.669586;,
+ 0.742734;-0.000000; 0.669586;,
+ 0.742734;-0.000000; 0.669586;,
+ 0.742734;-0.000000; 0.669586;,
+ -0.742734; 0.000000;-0.669586;,
+ -0.742734; 0.000000;-0.669586;,
+ -0.742734; 0.000000;-0.669586;,
+ -0.742734; 0.000000;-0.669586;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.919465;-0.000000;-0.393171;,
+ 0.919465;-0.000000;-0.393171;,
+ 0.919465;-0.000000;-0.393171;,
+ 0.919465;-0.000000;-0.393171;,
+ -0.919465;-0.000000; 0.393172;,
+ -0.919465;-0.000000; 0.393172;,
+ -0.919465;-0.000000; 0.393172;,
+ -0.919465;-0.000000; 0.393172;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ 0.707107; 0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ -0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ 0.707107;-0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ -0.707107; 0.707107; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.999709;-0.024122; 0.000000;,
+ 0.999709;-0.024122; 0.000000;,
+ 0.999709;-0.024122; 0.000000;,
+ 0.999709;-0.024122; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.999709; 0.024122; 0.000000;,
+ -0.999709; 0.024122; 0.000000;,
+ -0.999709; 0.024122; 0.000000;,
+ -0.999709; 0.024122; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ 0.000000;-1.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -1.000000;-0.000000;-0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;;
+ 99;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;,
+ 4;332;333;334;335;,
+ 4;336;337;338;339;,
+ 4;340;341;342;343;,
+ 4;344;345;346;347;,
+ 4;348;349;350;351;,
+ 4;352;353;354;355;,
+ 4;356;357;358;359;,
+ 4;360;361;362;363;,
+ 4;364;365;366;367;,
+ 4;368;369;370;371;,
+ 4;372;373;374;375;,
+ 4;376;377;378;379;,
+ 4;380;381;382;383;,
+ 4;384;385;386;387;,
+ 4;388;389;390;391;,
+ 4;392;393;394;395;;
+ } //End of Cube_020 Normals
+ MeshMaterialList { //Cube_020 Material List
+ 1;
+ 1;
+ 0;;
+ Material Default_Material {
+ 0.800000; 0.800000; 0.800000; 0.800000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_020 Material List
+ MeshTextureCoords { //Cube_020 UV Coordinates
+ 396;
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.004311; 0.997873;,
+ 0.215553; 0.997873;,
+ 0.215553; 0.725464;,
+ 0.004311; 0.725464;,
+ 0.234926; 0.999800;,
+ 0.000200; 0.999800;,
+ 0.000200; 0.729576;,
+ 0.234926; 0.729576;,
+ 0.238056; 0.999800;,
+ 0.520057; 0.999800;,
+ 0.520056; 0.675133;,
+ 0.238056; 0.675133;,
+ 0.513453; 0.999512;,
+ 0.243229; 0.999512;,
+ 0.243229; 0.671943;,
+ 0.513453; 0.671943;,
+ 0.306607; 0.667855;,
+ 0.472407; 0.667855;,
+ 0.472407; 0.338749;,
+ 0.306607; 0.338749;,
+ 0.664431; 0.667855;,
+ 0.343449; 0.667855;,
+ 0.343449; 0.334991;,
+ 0.664431; 0.334991;,
+ 0.469977; 0.660865;,
+ 0.304177; 0.660865;,
+ 0.304177; 0.335341;,
+ 0.469977; 0.335341;,
+ 0.343449; 0.334991;,
+ 0.343449; 0.667855;,
+ 0.664431; 0.667855;,
+ 0.664431; 0.334991;,
+ 0.472407; 0.338749;,
+ 0.472407; 0.667855;,
+ 0.306607; 0.667855;,
+ 0.306607; 0.338749;,
+ 0.304177; 0.335341;,
+ 0.304177; 0.660865;,
+ 0.469977; 0.660865;,
+ 0.469977; 0.335341;,
+ 0.001890; 0.339551;,
+ 0.329664; 0.339551;,
+ 0.329664; 0.670730;,
+ 0.001890; 0.670730;,
+ 0.335222; 0.330358;,
+ 0.002264; 0.330358;,
+ 0.002265; 0.004421;,
+ 0.335222; 0.004421;,
+ 0.327917; 0.335697;,
+ 0.001890; 0.335697;,
+ 0.001890; 0.665529;,
+ 0.327917; 0.665529;,
+ 0.662024; 0.329090;,
+ 0.344359; 0.329090;,
+ 0.346595; 0.004762;,
+ 0.664261; 0.004762;,
+ 0.679193; 0.338611;,
+ 0.998453; 0.338611;,
+ 0.998453; 0.665780;,
+ 0.679193; 0.665780;,
+ 0.326857; 0.333405;,
+ 0.187547; 0.333426;,
+ 0.187494; 0.002442;,
+ 0.326804; 0.002421;,
+ 0.001477; 0.001367;,
+ 0.328143; 0.001323;,
+ 0.328196; 0.333202;,
+ 0.001530; 0.333246;,
+ 0.134182; 0.333469;,
+ 0.000240; 0.333490;,
+ 0.000187; 0.002506;,
+ 0.134129; 0.002486;,
+ 0.328582; 0.329763;,
+ 0.001252; 0.329763;,
+ 0.001252; 0.002494;,
+ 0.328582; 0.002494;,
+ 0.330483; 0.331867;,
+ 0.001487; 0.331866;,
+ 0.001487; 0.001126;,
+ 0.330483; 0.001126;,
+ 0.329421; 0.328859;,
+ 0.003210; 0.328859;,
+ 0.003210; 0.002709;,
+ 0.329421; 0.002709;,
+ 0.328413; 0.332297;,
+ 0.001672; 0.332297;,
+ 0.001672; 0.002642;,
+ 0.328413; 0.002642;,
+ 0.673230; 0.999736;,
+ 0.673230; 0.669819;,
+ 1.000041; 0.669819;,
+ 1.000041; 0.999736;,
+ 0.676706; 0.996359;,
+ 0.676706; 0.671731;,
+ 1.001974; 0.671731;,
+ 1.001974; 0.996359;,
+ 0.678604; 0.337458;,
+ 1.000197; 0.337458;,
+ 1.000197; 0.667940;,
+ 0.678604; 0.667940;,
+ 0.187494; 0.002442;,
+ 0.187547; 0.333426;,
+ 0.326857; 0.333405;,
+ 0.326804; 0.002421;,
+ 0.999939; 0.999484;,
+ 0.999886; 0.667605;,
+ 0.673221; 0.667649;,
+ 0.673273; 0.999528;,
+ 0.000187; 0.002506;,
+ 0.000240; 0.333490;,
+ 0.134182; 0.333469;,
+ 0.134129; 0.002486;,
+ 0.160145; 0.670730;,
+ 0.160145; 0.339551;,
+ 0.001890; 0.339551;,
+ 0.001890; 0.670730;,
+ 0.668546; 0.665242;,
+ 0.668546; 0.991178;,
+ 1.001503; 0.991178;,
+ 1.001504; 0.665242;,
+ 0.001890; 0.665529;,
+ 0.001890; 0.335697;,
+ 0.160145; 0.335697;,
+ 0.160145; 0.665529;,
+ 0.832705; 0.338036;,
+ 0.750766; 0.338036;,
+ 0.750766; 0.004838;,
+ 0.832705; 0.004838;,
+ 0.996985; 0.338036;,
+ 0.915047; 0.338036;,
+ 0.915047; 0.004838;,
+ 0.996985; 0.004838;,
+ 0.750564; 0.338036;,
+ 0.668626; 0.338036;,
+ 0.668626; 0.004838;,
+ 0.750564; 0.004838;,
+ 0.914845; 0.338036;,
+ 0.832907; 0.338036;,
+ 0.832907; 0.004838;,
+ 0.914845; 0.004838;,
+ 0.671692; 0.335852;,
+ 0.671692; 0.253914;,
+ 0.753631; 0.253914;,
+ 0.753630; 0.335852;,
+ 0.669508; 0.254853;,
+ 0.751446; 0.254853;,
+ 0.751446; 0.336791;,
+ 0.669508; 0.336791;,
+ 0.832705; 0.338036;,
+ 0.750766; 0.338036;,
+ 0.750766; 0.004838;,
+ 0.832705; 0.004838;,
+ 0.996985; 0.338036;,
+ 0.915047; 0.338036;,
+ 0.915047; 0.004838;,
+ 0.996985; 0.004838;,
+ 0.750564; 0.338036;,
+ 0.668626; 0.338036;,
+ 0.668626; 0.004838;,
+ 0.750564; 0.004838;,
+ 0.914845; 0.338036;,
+ 0.832907; 0.338036;,
+ 0.832907; 0.004838;,
+ 0.914845; 0.004838;,
+ 0.671692; 0.335852;,
+ 0.671692; 0.253914;,
+ 0.753631; 0.253914;,
+ 0.753630; 0.335852;,
+ 0.669508; 0.254853;,
+ 0.751446; 0.254853;,
+ 0.751446; 0.336791;,
+ 0.669508; 0.336791;,
+ 0.832705; 0.338036;,
+ 0.750766; 0.338036;,
+ 0.750766; 0.004838;,
+ 0.832705; 0.004838;,
+ 0.996985; 0.338036;,
+ 0.915047; 0.338036;,
+ 0.915047; 0.004838;,
+ 0.996985; 0.004838;,
+ 0.750564; 0.338036;,
+ 0.668626; 0.338036;,
+ 0.668626; 0.004838;,
+ 0.750564; 0.004838;,
+ 0.914845; 0.338036;,
+ 0.832907; 0.338036;,
+ 0.832907; 0.004838;,
+ 0.914845; 0.004838;,
+ 0.671692; 0.335852;,
+ 0.671692; 0.253914;,
+ 0.753631; 0.253914;,
+ 0.753630; 0.335852;,
+ 0.669508; 0.254853;,
+ 0.751446; 0.254853;,
+ 0.751446; 0.336791;,
+ 0.669508; 0.336791;,
+ 0.832705; 0.338036;,
+ 0.750766; 0.338036;,
+ 0.750766; 0.004838;,
+ 0.832705; 0.004838;,
+ 0.996985; 0.338036;,
+ 0.915047; 0.338036;,
+ 0.915047; 0.004838;,
+ 0.996985; 0.004838;,
+ 0.750564; 0.338036;,
+ 0.668626; 0.338036;,
+ 0.668626; 0.004838;,
+ 0.750564; 0.004838;,
+ 0.914845; 0.338036;,
+ 0.832907; 0.338036;,
+ 0.832907; 0.004838;,
+ 0.914845; 0.004838;,
+ 0.671692; 0.335852;,
+ 0.671692; 0.253914;,
+ 0.753631; 0.253914;,
+ 0.753630; 0.335852;,
+ 0.669508; 0.254853;,
+ 0.751446; 0.254853;,
+ 0.751446; 0.336791;,
+ 0.669508; 0.336791;;
+ } //End of Cube_020 UV Coordinates
+ XSkinMeshHeader {
+ 2;
+ 6;
+ 6;
+ }
+ SkinWeights {
+ "Armature_Bone_002";
+ 40;
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 300,
+ 301,
+ 302,
+ 303,
+ 304,
+ 305,
+ 306,
+ 307,
+ 308,
+ 309,
+ 310,
+ 311,
+ 312,
+ 313,
+ 314,
+ 315,
+ 316,
+ 317,
+ 318,
+ 319,
+ 320,
+ 321,
+ 322,
+ 323;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000, 0.000001, 1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000001, 0.000000,
+ -0.308914, 1.006964, 0.544713, 1.000000;;
+ } //End of Armature_Bone_002 Skin Weights
+ SkinWeights {
+ "Armature_Bone_003";
+ 40;
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 348,
+ 349,
+ 350,
+ 351,
+ 352,
+ 353,
+ 354,
+ 355,
+ 356,
+ 357,
+ 358,
+ 359,
+ 360,
+ 361,
+ 362,
+ 363,
+ 364,
+ 365,
+ 366,
+ 367,
+ 368,
+ 369,
+ 370,
+ 371;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000, 0.000001, 1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000001, 0.000000,
+ 0.296125, 1.006964, 0.544713, 1.000000;;
+ } //End of Armature_Bone_003 Skin Weights
+ SkinWeights {
+ "Armature_Bone_004";
+ 40;
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 324,
+ 325,
+ 326,
+ 327,
+ 328,
+ 329,
+ 330,
+ 331,
+ 332,
+ 333,
+ 334,
+ 335,
+ 336,
+ 337,
+ 338,
+ 339,
+ 340,
+ 341,
+ 342,
+ 343,
+ 344,
+ 345,
+ 346,
+ 347;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000, 0.000001, 1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000001, 0.000000,
+ -0.308914, 1.006964,-0.022113, 1.000000;;
+ } //End of Armature_Bone_004 Skin Weights
+ SkinWeights {
+ "Armature_Bone_005";
+ 40;
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 372,
+ 373,
+ 374,
+ 375,
+ 376,
+ 377,
+ 378,
+ 379,
+ 380,
+ 381,
+ 382,
+ 383,
+ 384,
+ 385,
+ 386,
+ 387,
+ 388,
+ 389,
+ 390,
+ 391,
+ 392,
+ 393,
+ 394,
+ 395;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ -0.000000, 0.000001, 1.000000, 0.000000,
+ 0.000000,-1.000000, 0.000001, 0.000000,
+ 0.296125, 1.006964,-0.022113, 1.000000;;
+ } //End of Armature_Bone_005 Skin Weights
+ SkinWeights {
+ "Armature_root";
+ 216;
+ 51,
+ 54,
+ 58,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 101,
+ 102,
+ 103,
+ 104,
+ 105,
+ 106,
+ 107,
+ 108,
+ 109,
+ 110,
+ 111,
+ 112,
+ 113,
+ 114,
+ 115,
+ 116,
+ 117,
+ 118,
+ 119,
+ 120,
+ 121,
+ 122,
+ 123,
+ 124,
+ 125,
+ 126,
+ 127,
+ 128,
+ 129,
+ 130,
+ 131,
+ 132,
+ 133,
+ 134,
+ 135,
+ 136,
+ 137,
+ 138,
+ 139,
+ 140,
+ 141,
+ 142,
+ 143,
+ 144,
+ 145,
+ 146,
+ 147,
+ 148,
+ 149,
+ 150,
+ 151,
+ 152,
+ 153,
+ 154,
+ 155,
+ 156,
+ 157,
+ 158,
+ 159,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 174,
+ 175,
+ 176,
+ 177,
+ 178,
+ 179,
+ 180,
+ 181,
+ 182,
+ 183,
+ 184,
+ 185,
+ 186,
+ 187,
+ 188,
+ 189,
+ 190,
+ 191,
+ 216,
+ 217,
+ 218,
+ 219,
+ 220,
+ 221,
+ 222,
+ 223,
+ 224,
+ 225,
+ 226,
+ 227,
+ 228,
+ 229,
+ 230,
+ 231,
+ 232,
+ 233,
+ 234,
+ 235,
+ 236,
+ 237,
+ 238,
+ 239,
+ 240,
+ 241,
+ 242,
+ 243,
+ 244,
+ 245,
+ 246,
+ 247,
+ 248,
+ 249,
+ 250,
+ 251,
+ 252,
+ 253,
+ 254,
+ 255,
+ 256,
+ 257,
+ 258,
+ 259,
+ 260,
+ 261,
+ 262,
+ 263,
+ 264,
+ 265,
+ 266,
+ 267,
+ 268,
+ 269,
+ 270,
+ 271,
+ 272,
+ 273,
+ 274,
+ 275,
+ 276,
+ 277,
+ 278,
+ 279,
+ 280,
+ 281,
+ 282,
+ 283,
+ 284,
+ 285,
+ 286,
+ 287,
+ 288,
+ 289,
+ 290,
+ 291,
+ 292,
+ 293,
+ 294,
+ 295,
+ 296,
+ 297,
+ 298,
+ 299;
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 0.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ -0.003210,-1.015033,-0.035207, 1.000000;;
+ } //End of Armature_root Skin Weights
+ SkinWeights {
+ "Armature_Bone_001";
+ 24;
+ 192,
+ 193,
+ 194,
+ 195,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 210,
+ 211,
+ 212,
+ 213,
+ 214,
+ 215;
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000,
+ 1.000000;
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,-1.000000, 0.000000,
+ 0.000000, 1.000000, 0.000000, 0.000000,
+ -0.003210,-1.958306,-0.468288, 1.000000;;
+ } //End of Armature_Bone_001 Skin Weights
+ } //End of Cube_020 Mesh
+ } //End of Cube_005
+ } //End of Armature
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Armature}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; 0.003210,-0.035207, 1.015033;;,
+ 1;3; 0.003210,-0.035207, 1.015033;;,
+ 2;3; 0.003210,-0.035207, 1.015033;;,
+ 3;3; 0.003210,-0.035207, 1.015033;;,
+ 4;3; 0.003210,-0.035207, 1.015033;;,
+ 5;3; 0.003210,-0.035207, 1.015033;;,
+ 6;3; 0.003210,-0.035207, 1.015033;;,
+ 7;3; 0.003210,-0.035207, 1.015033;;,
+ 8;3; 0.003210,-0.035207, 1.015033;;,
+ 9;3; 0.003210,-0.035207, 1.015033;;,
+ 10;3; 0.003210,-0.035207, 1.015033;;,
+ 11;3; 0.003210,-0.035207, 1.015033;;,
+ 12;3; 0.003210,-0.035207, 1.015033;;,
+ 13;3; 0.003210,-0.035207, 1.015033;;,
+ 14;3; 0.003210,-0.035207, 1.015033;;,
+ 15;3; 0.003210,-0.035207, 1.015033;;,
+ 16;3; 0.003210,-0.035207, 1.015033;;,
+ 17;3; 0.003210,-0.035207, 1.015033;;,
+ 18;3; 0.003210,-0.035207, 1.015033;;,
+ 19;3; 0.003210,-0.035207, 1.015033;;,
+ 20;3; 0.003210,-0.035207, 1.015033;;,
+ 21;3; 0.003210,-0.035207, 1.015033;;,
+ 22;3; 0.003210,-0.035207, 1.015033;;,
+ 23;3; 0.003210,-0.035207, 1.015033;;,
+ 24;3; 0.003210,-0.035207, 1.015033;;,
+ 25;3; 0.003210,-0.035207, 1.015033;;,
+ 26;3; 0.003210,-0.035207, 1.015033;;,
+ 27;3; 0.003210,-0.035207, 1.015033;;,
+ 28;3; 0.003210,-0.035207, 1.015033;;,
+ 29;3; 0.003210,-0.035207, 1.015033;;,
+ 30;3; 0.003210,-0.035207, 1.015033;;,
+ 31;3; 0.003210,-0.035207, 1.015033;;,
+ 32;3; 0.003210,-0.035207, 1.015033;;,
+ 33;3; 0.003210,-0.035207, 1.015033;;,
+ 34;3; 0.003210,-0.035207, 1.015033;;,
+ 35;3; 0.003210,-0.035207, 1.015033;;,
+ 36;3; 0.003210,-0.035207, 1.015033;;,
+ 37;3; 0.003210,-0.035207, 1.015033;;,
+ 38;3; 0.003210,-0.035207, 1.015033;;,
+ 39;3; 0.003210,-0.035207, 1.015033;;,
+ 40;3; 0.003210,-0.035207, 1.015033;;,
+ 41;3; 0.003210,-0.035207, 1.015033;;,
+ 42;3; 0.003210,-0.035207, 1.015033;;,
+ 43;3; 0.003210,-0.035207, 1.015033;;,
+ 44;3; 0.003210,-0.035207, 1.015033;;,
+ 45;3; 0.003210,-0.035207, 1.015033;;,
+ 46;3; 0.003210,-0.035207, 1.015033;;,
+ 47;3; 0.003210,-0.035207, 1.015033;;,
+ 48;3; 0.003210,-0.035207, 1.015033;;,
+ 49;3; 0.003210,-0.035207, 1.015033;;,
+ 50;3; 0.003210,-0.035207, 1.015033;;,
+ 51;3; 0.003210,-0.035207, 1.015033;;,
+ 52;3; 0.003210,-0.035207, 1.015033;;,
+ 53;3; 0.003210,-0.035207, 1.015033;;,
+ 54;3; 0.003210,-0.035207, 1.015033;;,
+ 55;3; 0.003210,-0.035207, 1.015033;;,
+ 56;3; 0.003210,-0.035207, 1.015033;;,
+ 57;3; 0.003210,-0.035207, 1.015033;;,
+ 58;3; 0.003210,-0.035207, 1.015033;;,
+ 59;3; 0.003210,-0.035207, 1.015033;;,
+ 60;3; 0.003210,-0.035207, 1.015033;;,
+ 61;3; 0.003210,-0.035207, 1.015033;;,
+ 62;3; 0.003210,-0.035207, 1.015033;;,
+ 63;3; 0.003210,-0.035207, 1.015033;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_root}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; 0.000000,-0.000000,-0.189446;;,
+ 1;3; 0.000000,-0.000000,-0.189446;;,
+ 2;3; 0.000000,-0.000000,-0.189446;;,
+ 3;3; 0.000000,-0.000000,-0.189446;;,
+ 4;3; 0.000000,-0.000000,-0.189446;;,
+ 5;3; 0.000000,-0.000000,-0.189446;;,
+ 6;3; 0.000000,-0.000000,-0.189446;;,
+ 7;3; 0.000000,-0.000000,-0.189446;;,
+ 8;3; 0.000000,-0.000000,-0.189446;;,
+ 9;3; 0.000000,-0.000000,-0.189446;;,
+ 10;3; 0.000000,-0.000000,-0.189446;;,
+ 11;3; 0.000000,-0.000000,-0.189446;;,
+ 12;3; 0.000000,-0.000000,-0.189446;;,
+ 13;3; 0.000000,-0.000000,-0.189446;;,
+ 14;3; 0.000000,-0.000000,-0.189446;;,
+ 15;3; 0.000000,-0.000000,-0.189446;;,
+ 16;3; 0.000000,-0.000000,-0.189446;;,
+ 17;3; 0.000000,-0.000000,-0.189446;;,
+ 18;3; 0.000000,-0.000000,-0.189446;;,
+ 19;3; 0.000000,-0.000000,-0.189446;;,
+ 20;3; 0.000000,-0.000000,-0.189446;;,
+ 21;3; 0.000000,-0.000000,-0.189446;;,
+ 22;3; 0.000000,-0.000000,-0.189446;;,
+ 23;3; 0.000000,-0.000000,-0.189446;;,
+ 24;3; 0.000000,-0.000000,-0.189446;;,
+ 25;3; 0.000000,-0.000000,-0.189446;;,
+ 26;3; 0.000000,-0.000000,-0.189446;;,
+ 27;3; 0.000000,-0.000000,-0.189446;;,
+ 28;3; 0.000000,-0.000000,-0.189446;;,
+ 29;3; 0.000000,-0.000000,-0.189446;;,
+ 30;3; 0.000000,-0.000000,-0.189446;;,
+ 31;3; 0.000000,-0.000000,-0.189446;;,
+ 32;3; 0.000000,-0.000000,-0.189446;;,
+ 33;3; 0.000000,-0.000000,-0.189446;;,
+ 34;3; 0.000000,-0.000000,-0.189446;;,
+ 35;3; 0.000000,-0.000000,-0.189446;;,
+ 36;3; 0.000000,-0.000000,-0.189446;;,
+ 37;3; 0.000000,-0.000000,-0.189446;;,
+ 38;3; 0.000000,-0.000000,-0.189446;;,
+ 39;3; 0.000000,-0.000000,-0.189446;;,
+ 40;3; 0.000000,-0.000000,-0.189446;;,
+ 41;3; 0.000000,-0.000000,-0.189446;;,
+ 42;3; 0.000000,-0.000000,-0.189446;;,
+ 43;3; 0.000000,-0.000000,-0.189446;;,
+ 44;3; 0.000000,-0.000000,-0.189446;;,
+ 45;3; 0.000000,-0.000000,-0.189446;;,
+ 46;3; 0.000000,-0.000000,-0.189446;;,
+ 47;3; 0.000000,-0.000000,-0.189446;;,
+ 48;3; 0.000000,-0.000000,-0.189446;;,
+ 49;3; 0.000000,-0.000000,-0.189446;;,
+ 50;3; 0.000000,-0.000000,-0.189446;;,
+ 51;3; 0.000000,-0.000000,-0.189446;;,
+ 52;3; 0.000000,-0.000000,-0.189446;;,
+ 53;3; 0.000000,-0.000000,-0.189446;;,
+ 54;3; 0.000000,-0.000000,-0.189446;;,
+ 55;3; 0.000000,-0.000000,-0.189446;;,
+ 56;3; 0.000000,-0.000000,-0.189446;;,
+ 57;3; 0.000000,-0.000000,-0.189446;;,
+ 58;3; 0.000000,-0.000000,-0.189446;;,
+ 59;3; 0.000000,-0.000000,-0.189446;;,
+ 60;3; 0.000000,-0.000000,-0.189446;;,
+ 61;3; 0.000000,-0.000000,-0.189446;;,
+ 62;3; 0.000000,-0.000000,-0.189446;;,
+ 63;3; 0.000000,-0.000000,-0.189446;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 1;4; -0.000000, 0.000000, 0.707107, 0.707107;;,
+ 2;4; -0.001256,-0.001256, 0.707097, 0.707097;;,
+ 3;4; -0.004793,-0.004793, 0.707069, 0.707069;;,
+ 4;4; -0.009335,-0.009335, 0.707030, 0.707030;;,
+ 5;4; -0.012873,-0.012873, 0.706992, 0.706992;;,
+ 6;4; -0.014129,-0.014129, 0.706966, 0.706966;;,
+ 7;4; -0.013710,-0.013710, 0.706947, 0.706947;;,
+ 8;4; -0.012446,-0.012446, 0.706929, 0.706929;;,
+ 9;4; -0.010363,-0.010363, 0.706912, 0.706912;;,
+ 10;4; -0.007551,-0.007551, 0.706896, 0.706896;;,
+ 11;4; -0.004183,-0.004183, 0.706883, 0.706883;;,
+ 12;4; -0.000513,-0.000513, 0.706871, 0.706871;;,
+ 13;4; 0.003158, 0.003158, 0.706862, 0.706862;;,
+ 14;4; 0.006525, 0.006525, 0.706855, 0.706855;;,
+ 15;4; 0.009337, 0.009337, 0.706850, 0.706850;;,
+ 16;4; 0.011421, 0.011421, 0.706847, 0.706846;;,
+ 17;4; 0.012684, 0.012684, 0.706845, 0.706845;;,
+ 18;4; 0.013103, 0.013103, 0.706844, 0.706844;;,
+ 19;4; 0.012294, 0.012294, 0.706844, 0.706844;;,
+ 20;4; 0.009938, 0.009938, 0.706844, 0.706844;;,
+ 21;4; 0.006551, 0.006552, 0.706844, 0.706844;;,
+ 22;4; 0.003165, 0.003165, 0.706844, 0.706844;;,
+ 23;4; 0.000809, 0.000809, 0.706844, 0.706844;;,
+ 24;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 25;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 26;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 27;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 28;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 29;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 30;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 31;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 32;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 33;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 34;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 35;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 36;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 37;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 38;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 39;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 40;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 41;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 42;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 43;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 44;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 45;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 46;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 47;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 48;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 49;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 50;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 51;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 52;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 53;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 54;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 55;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 56;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 57;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 58;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 59;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 60;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 61;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 62;4; -0.000000, 0.000000, 0.706844, 0.706844;;,
+ 63;4; -0.000000, 0.000000, 0.706844, 0.706844;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_001}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; 0.000000, 0.943273, 0.433080;;,
+ 1;3; 0.000000, 0.943273, 0.433080;;,
+ 2;3; 0.000000, 0.943273, 0.433080;;,
+ 3;3; -0.000000, 0.943273, 0.433080;;,
+ 4;3; 0.000000, 0.943273, 0.433080;;,
+ 5;3; -0.000000, 0.943273, 0.433080;;,
+ 6;3; 0.000000, 0.943273, 0.433080;;,
+ 7;3; -0.000000, 0.943273, 0.433080;;,
+ 8;3; -0.000000, 0.943273, 0.433080;;,
+ 9;3; -0.000000, 0.943273, 0.433080;;,
+ 10;3; 0.000000, 0.943273, 0.433080;;,
+ 11;3; -0.000000, 0.943273, 0.433080;;,
+ 12;3; -0.000000, 0.943273, 0.433080;;,
+ 13;3; -0.000000, 0.943273, 0.433080;;,
+ 14;3; -0.000000, 0.943273, 0.433080;;,
+ 15;3; 0.000000, 0.943273, 0.433080;;,
+ 16;3; 0.000000, 0.943273, 0.433080;;,
+ 17;3; -0.000000, 0.943273, 0.433080;;,
+ 18;3; 0.000000, 0.943273, 0.433080;;,
+ 19;3; 0.000000, 0.943273, 0.433080;;,
+ 20;3; -0.000000, 0.943273, 0.433080;;,
+ 21;3; -0.000000, 0.943273, 0.433080;;,
+ 22;3; -0.000000, 0.943273, 0.433080;;,
+ 23;3; -0.000000, 0.943273, 0.433080;;,
+ 24;3; 0.000000, 0.943273, 0.433080;;,
+ 25;3; 0.000000, 0.943273, 0.433080;;,
+ 26;3; 0.000000, 0.943273, 0.433080;;,
+ 27;3; 0.000000, 0.943273, 0.433080;;,
+ 28;3; 0.000000, 0.943273, 0.433080;;,
+ 29;3; 0.000000, 0.943273, 0.433080;;,
+ 30;3; 0.000000, 0.943273, 0.433080;;,
+ 31;3; 0.000000, 0.943273, 0.433080;;,
+ 32;3; 0.000000, 0.943273, 0.433080;;,
+ 33;3; 0.000000, 0.943273, 0.433080;;,
+ 34;3; 0.000000, 0.943273, 0.433080;;,
+ 35;3; 0.000000, 0.943273, 0.433080;;,
+ 36;3; 0.000000, 0.943273, 0.433080;;,
+ 37;3; 0.000000, 0.943273, 0.433080;;,
+ 38;3; 0.000000, 0.943273, 0.433080;;,
+ 39;3; 0.000000, 0.943273, 0.433080;;,
+ 40;3; 0.000000, 0.943273, 0.433080;;,
+ 41;3; 0.000000, 0.943273, 0.433080;;,
+ 42;3; 0.000000, 0.943273, 0.433080;;,
+ 43;3; 0.000000, 0.943273, 0.433080;;,
+ 44;3; 0.000000, 0.943273, 0.433080;;,
+ 45;3; 0.000000, 0.943273, 0.433080;;,
+ 46;3; 0.000000, 0.943273, 0.433080;;,
+ 47;3; 0.000000, 0.943273, 0.433080;;,
+ 48;3; -0.000000, 0.376699, 0.433080;;,
+ 49;3; 0.000000, 0.298801, 0.433080;;,
+ 50;3; -0.000000, 0.250242, 0.433080;;,
+ 51;3; -0.000000, 0.221263, 0.433080;;,
+ 52;3; -0.000000, 0.205343, 0.433080;;,
+ 53;3; -0.000000, 0.197838, 0.433080;;,
+ 54;3; -0.000000, 0.195269, 0.433080;;,
+ 55;3; -0.000000, 0.194923, 0.433080;;,
+ 56;3; -0.000000, 0.203169, 0.433080;;,
+ 57;3; -0.000000, 0.227559, 0.433080;;,
+ 58;3; 0.000000, 0.264720, 0.433080;;,
+ 59;3; 0.000000, 0.306874, 0.433080;;,
+ 60;3; -0.000000, 0.344046, 0.433080;;,
+ 61;3; -0.000000, 0.368448, 0.433080;;,
+ 62;3; -0.000000, 0.376699, 0.433080;;,
+ 63;3; -0.000000, 0.376699, 0.433080;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_002}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; 0.305704,-0.008069, 0.509506;;,
+ 1;3; 0.305704,-0.008069, 0.509506;;,
+ 2;3; 0.305704,-0.008069, 0.509506;;,
+ 3;3; 0.305704,-0.008069, 0.509506;;,
+ 4;3; 0.305704,-0.008069, 0.509506;;,
+ 5;3; 0.305704,-0.008069, 0.509506;;,
+ 6;3; 0.305704,-0.008069, 0.509506;;,
+ 7;3; 0.305704,-0.008069, 0.509506;;,
+ 8;3; 0.305704,-0.008069, 0.509506;;,
+ 9;3; 0.305704,-0.008069, 0.509506;;,
+ 10;3; 0.305704,-0.008069, 0.509506;;,
+ 11;3; 0.305704,-0.008069, 0.509506;;,
+ 12;3; 0.305704,-0.008069, 0.509506;;,
+ 13;3; 0.305704,-0.008069, 0.509506;;,
+ 14;3; 0.305704,-0.008069, 0.509506;;,
+ 15;3; 0.305704,-0.008069, 0.509506;;,
+ 16;3; 0.305704,-0.008069, 0.509506;;,
+ 17;3; 0.305704,-0.008069, 0.509506;;,
+ 18;3; 0.305704,-0.008069, 0.509506;;,
+ 19;3; 0.305704,-0.008069, 0.509506;;,
+ 20;3; 0.305704,-0.008069, 0.509506;;,
+ 21;3; 0.305704,-0.008069, 0.509506;;,
+ 22;3; 0.305704,-0.008069, 0.509506;;,
+ 23;3; 0.305704,-0.008069, 0.509506;;,
+ 24;3; 0.305704,-0.008069, 0.509506;;,
+ 25;3; 0.305704,-0.008069, 0.509506;;,
+ 26;3; 0.305704,-0.008069, 0.509506;;,
+ 27;3; 0.305704,-0.008069, 0.509506;;,
+ 28;3; 0.305704,-0.008069, 0.509506;;,
+ 29;3; 0.305704,-0.008069, 0.509506;;,
+ 30;3; 0.305704,-0.008069, 0.509506;;,
+ 31;3; 0.305704,-0.008069, 0.509506;;,
+ 32;3; 0.305704,-0.008069, 0.509506;;,
+ 33;3; 0.305704,-0.008069, 0.509506;;,
+ 34;3; 0.305704,-0.008069, 0.509506;;,
+ 35;3; 0.305704,-0.008069, 0.509506;;,
+ 36;3; 0.305704,-0.008069, 0.509506;;,
+ 37;3; 0.305704,-0.008069, 0.509506;;,
+ 38;3; 0.305704,-0.008069, 0.509506;;,
+ 39;3; 0.305704,-0.008069, 0.509506;;,
+ 40;3; 0.305704,-0.008069, 0.509506;;,
+ 41;3; 0.305704,-0.008069, 0.509506;;,
+ 42;3; 0.305704,-0.008069, 0.509506;;,
+ 43;3; 0.305704,-0.008069, 0.509506;;,
+ 44;3; 0.305704,-0.008069, 0.509506;;,
+ 45;3; 0.305704,-0.008069, 0.509506;;,
+ 46;3; 0.305704,-0.008069, 0.509506;;,
+ 47;3; 0.305704,-0.008069, 0.509506;;,
+ 48;3; 0.305704,-0.008069, 0.509506;;,
+ 49;3; 0.305704,-0.008069, 0.509506;;,
+ 50;3; 0.305704,-0.008069, 0.509506;;,
+ 51;3; 0.305704,-0.008069, 0.509506;;,
+ 52;3; 0.305704,-0.008069, 0.509506;;,
+ 53;3; 0.305704,-0.008069, 0.509506;;,
+ 54;3; 0.305704,-0.008069, 0.509506;;,
+ 55;3; 0.305704,-0.008069, 0.509506;;,
+ 56;3; 0.305704,-0.008069, 0.509506;;,
+ 57;3; 0.305704,-0.008069, 0.509506;;,
+ 58;3; 0.305704,-0.008069, 0.509506;;,
+ 59;3; 0.305704,-0.008069, 0.509506;;,
+ 60;3; 0.305704,-0.008069, 0.509506;;,
+ 61;3; 0.305704,-0.008069, 0.509506;;,
+ 62;3; 0.305704,-0.008069, 0.509506;;,
+ 63;3; 0.305704,-0.008069, 0.509506;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; -0.353554, 0.853553, 0.146446,-0.353554;;,
+ 1;4; -0.353554, 0.853553, 0.146446,-0.353554;;,
+ 2;4; -0.354246, 0.853245, 0.148133,-0.352846;;,
+ 3;4; -0.356195, 0.852375, 0.152883,-0.350853;;,
+ 4;4; -0.358698, 0.851259, 0.158982,-0.348293;;,
+ 5;4; -0.360647, 0.850389, 0.163732,-0.346300;;,
+ 6;4; -0.361339, 0.850080, 0.165418,-0.345593;;,
+ 7;4; -0.361034, 0.850201, 0.164685,-0.345894;;,
+ 8;4; -0.360112, 0.850566, 0.162472,-0.346804;;,
+ 9;4; -0.358593, 0.851168, 0.158822,-0.348304;;,
+ 10;4; -0.356541, 0.851981, 0.153896,-0.350329;;,
+ 11;4; -0.354085, 0.852954, 0.147998,-0.352754;;,
+ 12;4; -0.351408, 0.854014, 0.141569,-0.355397;;,
+ 13;4; -0.348731, 0.855074, 0.135140,-0.358039;;,
+ 14;4; -0.346274, 0.856047, 0.129241,-0.360464;;,
+ 15;4; -0.344223, 0.856859, 0.124315,-0.362489;;,
+ 16;4; -0.342703, 0.857461, 0.120666,-0.363989;;,
+ 17;4; -0.341782, 0.857826, 0.118453,-0.364899;;,
+ 18;4; -0.341476, 0.857947, 0.117719,-0.365201;;,
+ 19;4; -0.342190, 0.857933, 0.117812,-0.364515;;,
+ 20;4; -0.344184, 0.857822, 0.118545,-0.362604;;,
+ 21;4; -0.347054, 0.857481, 0.120786,-0.359853;;,
+ 22;4; -0.350138, 0.856752, 0.125571,-0.356884;;,
+ 23;4; -0.352584, 0.855480, 0.133899,-0.354507;;,
+ 24;4; -0.353554, 0.853553, 0.146446,-0.353554;;,
+ 25;4; -0.236711, 0.571471, 0.300689,-0.725930;;,
+ 26;4; -0.239958, 0.579385, 0.296309,-0.715181;;,
+ 27;4; -0.248828, 0.600935, 0.284350,-0.685992;;,
+ 28;4; -0.261873, 0.632536, 0.266769,-0.643301;;,
+ 29;4; -0.277554, 0.670429, 0.245643,-0.592218;;,
+ 30;4; -0.294358, 0.710963, 0.223010,-0.537657;;,
+ 31;4; -0.310901, 0.750824, 0.200732,-0.484054;;,
+ 32;4; -0.326002, 0.787189, 0.180399,-0.435175;;,
+ 33;4; -0.338709, 0.817789, 0.163289,-0.394045;;,
+ 34;4; -0.348305, 0.840907, 0.150367,-0.362961;;,
+ 35;4; -0.354286, 0.855325, 0.142312,-0.343564;;,
+ 36;4; -0.356327, 0.860248, 0.139563,-0.336936;;,
+ 37;4; -0.354235, 0.855200, 0.142381,-0.343736;;,
+ 38;4; -0.347919, 0.839956, 0.150888,-0.364263;;,
+ 39;4; -0.337521, 0.814865, 0.164894,-0.398046;;,
+ 40;4; -0.323558, 0.781175, 0.183700,-0.443403;;,
+ 41;4; -0.307020, 0.741269, 0.205976,-0.497130;;,
+ 42;4; -0.289351, 0.698626, 0.229776,-0.554553;;,
+ 43;4; -0.272258, 0.657360, 0.252800,-0.610138;;,
+ 44;4; -0.257395, 0.621463, 0.272823,-0.658513;;,
+ 45;4; -0.246060, 0.594075, 0.288093,-0.695437;;,
+ 46;4; -0.239056, 0.577142, 0.297530,-0.718277;;,
+ 47;4; -0.236711, 0.571471, 0.300689,-0.725930;;,
+ 48;4; -0.236711, 0.571471, 0.300689,-0.725930;;,
+ 49;4; -0.243308, 0.587520, 0.291792,-0.704168;;,
+ 50;4; -0.261054, 0.630533, 0.267874,-0.646029;;,
+ 51;4; -0.285725, 0.690132, 0.234639,-0.565704;;,
+ 52;4; -0.312134, 0.753789, 0.199073,-0.480072;;,
+ 53;4; -0.335178, 0.809286, 0.168043,-0.405474;;,
+ 54;4; -0.350782, 0.846876, 0.147031,-0.354932;;,
+ 55;4; -0.356327, 0.860248, 0.139563,-0.336936;;,
+ 56;4; -0.350909, 0.847172, 0.146861,-0.354547;;,
+ 57;4; -0.334837, 0.808388, 0.168509,-0.406767;;,
+ 58;4; -0.310303, 0.749191, 0.201554,-0.486466;;,
+ 59;4; -0.282492, 0.682066, 0.239015,-0.576860;;,
+ 60;4; -0.258051, 0.623045, 0.271939,-0.656385;;,
+ 61;4; -0.242085, 0.584463, 0.293449,-0.708403;;,
+ 62;4; -0.236711, 0.571471, 0.300689,-0.725930;;,
+ 63;4; -0.236711, 0.571471, 0.300689,-0.725930;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_003}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; -0.299335,-0.008069, 0.509506;;,
+ 1;3; -0.299335,-0.008069, 0.509506;;,
+ 2;3; -0.299335,-0.008069, 0.509506;;,
+ 3;3; -0.299335,-0.008069, 0.509506;;,
+ 4;3; -0.299335,-0.008069, 0.509506;;,
+ 5;3; -0.299335,-0.008069, 0.509506;;,
+ 6;3; -0.299335,-0.008069, 0.509506;;,
+ 7;3; -0.299335,-0.008069, 0.509506;;,
+ 8;3; -0.299335,-0.008069, 0.509506;;,
+ 9;3; -0.299335,-0.008069, 0.509506;;,
+ 10;3; -0.299335,-0.008069, 0.509506;;,
+ 11;3; -0.299335,-0.008069, 0.509506;;,
+ 12;3; -0.299335,-0.008069, 0.509506;;,
+ 13;3; -0.299335,-0.008069, 0.509506;;,
+ 14;3; -0.299335,-0.008069, 0.509506;;,
+ 15;3; -0.299335,-0.008069, 0.509506;;,
+ 16;3; -0.299335,-0.008069, 0.509506;;,
+ 17;3; -0.299335,-0.008069, 0.509506;;,
+ 18;3; -0.299335,-0.008069, 0.509506;;,
+ 19;3; -0.299335,-0.008069, 0.509506;;,
+ 20;3; -0.299335,-0.008069, 0.509506;;,
+ 21;3; -0.299335,-0.008069, 0.509506;;,
+ 22;3; -0.299335,-0.008069, 0.509506;;,
+ 23;3; -0.299335,-0.008069, 0.509506;;,
+ 24;3; -0.299335,-0.008069, 0.509506;;,
+ 25;3; -0.299335,-0.008069, 0.509506;;,
+ 26;3; -0.299335,-0.008069, 0.509506;;,
+ 27;3; -0.299335,-0.008069, 0.509506;;,
+ 28;3; -0.299335,-0.008069, 0.509506;;,
+ 29;3; -0.299335,-0.008069, 0.509506;;,
+ 30;3; -0.299335,-0.008069, 0.509506;;,
+ 31;3; -0.299335,-0.008069, 0.509506;;,
+ 32;3; -0.299335,-0.008069, 0.509506;;,
+ 33;3; -0.299335,-0.008069, 0.509506;;,
+ 34;3; -0.299335,-0.008069, 0.509506;;,
+ 35;3; -0.299335,-0.008069, 0.509506;;,
+ 36;3; -0.299335,-0.008069, 0.509506;;,
+ 37;3; -0.299335,-0.008069, 0.509506;;,
+ 38;3; -0.299335,-0.008069, 0.509506;;,
+ 39;3; -0.299335,-0.008069, 0.509506;;,
+ 40;3; -0.299335,-0.008069, 0.509506;;,
+ 41;3; -0.299335,-0.008069, 0.509506;;,
+ 42;3; -0.299335,-0.008069, 0.509506;;,
+ 43;3; -0.299335,-0.008069, 0.509506;;,
+ 44;3; -0.299335,-0.008069, 0.509506;;,
+ 45;3; -0.299335,-0.008069, 0.509506;;,
+ 46;3; -0.299335,-0.008069, 0.509506;;,
+ 47;3; -0.299335,-0.008069, 0.509506;;,
+ 48;3; -0.299335,-0.008069, 0.509506;;,
+ 49;3; -0.299335,-0.008069, 0.509506;;,
+ 50;3; -0.299335,-0.008069, 0.509506;;,
+ 51;3; -0.299335,-0.008069, 0.509506;;,
+ 52;3; -0.299335,-0.008069, 0.509506;;,
+ 53;3; -0.299335,-0.008069, 0.509506;;,
+ 54;3; -0.299335,-0.008069, 0.509506;;,
+ 55;3; -0.299335,-0.008069, 0.509506;;,
+ 56;3; -0.299335,-0.008069, 0.509506;;,
+ 57;3; -0.299335,-0.008069, 0.509506;;,
+ 58;3; -0.299335,-0.008069, 0.509506;;,
+ 59;3; -0.299335,-0.008069, 0.509506;;,
+ 60;3; -0.299335,-0.008069, 0.509506;;,
+ 61;3; -0.299335,-0.008069, 0.509506;;,
+ 62;3; -0.299335,-0.008069, 0.509506;;,
+ 63;3; -0.299335,-0.008069, 0.509506;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 1;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 2;4; -0.353695, 0.853458,-0.146813, 0.353386;;,
+ 3;4; -0.350989, 0.854488,-0.140344, 0.356028;;,
+ 4;4; -0.347515, 0.855811,-0.132039, 0.359420;;,
+ 5;4; -0.344809, 0.856841,-0.125570, 0.362062;;,
+ 6;4; -0.343848, 0.857207,-0.123274, 0.363000;;,
+ 7;4; -0.344100, 0.857104,-0.123882, 0.362749;;,
+ 8;4; -0.344861, 0.856793,-0.125716, 0.361991;;,
+ 9;4; -0.346117, 0.856281,-0.128741, 0.360741;;,
+ 10;4; -0.347811, 0.855589,-0.132824, 0.359054;;,
+ 11;4; -0.349839, 0.854761,-0.137712, 0.357034;;,
+ 12;4; -0.352050, 0.853858,-0.143041, 0.354833;;,
+ 13;4; -0.354261, 0.852956,-0.148370, 0.352631;;,
+ 14;4; -0.356290, 0.852128,-0.153259, 0.350611;;,
+ 15;4; -0.357984, 0.851436,-0.157341, 0.348924;;,
+ 16;4; -0.359239, 0.850924,-0.160366, 0.347674;;,
+ 17;4; -0.360000, 0.850613,-0.162201, 0.346916;;,
+ 18;4; -0.360253, 0.850510,-0.162808, 0.346665;;,
+ 19;4; -0.359922, 0.850663,-0.161999, 0.347007;;,
+ 20;4; -0.358997, 0.851089,-0.159736, 0.347962;;,
+ 21;4; -0.357666, 0.851703,-0.156478, 0.349338;;,
+ 22;4; -0.356237, 0.852363,-0.152979, 0.350815;;,
+ 23;4; -0.355104, 0.852885,-0.150207, 0.351985;;,
+ 24;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 25;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 26;4; -0.351227, 0.844927,-0.153464, 0.362954;;,
+ 27;4; -0.341855, 0.822614,-0.165365, 0.391661;;,
+ 28;4; -0.328063, 0.789780,-0.182879, 0.433897;;,
+ 29;4; -0.311476, 0.750298,-0.203942, 0.484681;;,
+ 30;4; -0.293695, 0.707977,-0.226521, 0.539113;;,
+ 31;4; -0.276185, 0.666304,-0.248756, 0.592710;;,
+ 32;4; -0.260201, 0.628264,-0.269053, 0.641634;;,
+ 33;4; -0.246751, 0.596253,-0.286132, 0.682803;;,
+ 34;4; -0.236594, 0.572079,-0.299030, 0.713893;;,
+ 35;4; -0.230264, 0.557014,-0.307068, 0.733269;;,
+ 36;4; -0.228105, 0.551875,-0.309810, 0.739879;;,
+ 37;4; -0.230318, 0.557141,-0.307000, 0.733106;;,
+ 38;4; -0.237000, 0.573040,-0.298515, 0.712662;;,
+ 39;4; -0.248001, 0.599211,-0.284546, 0.679014;;,
+ 40;4; -0.262773, 0.634351,-0.265789, 0.633839;;,
+ 41;4; -0.280270, 0.675973,-0.243573, 0.580328;;,
+ 42;4; -0.298964, 0.720452,-0.219836, 0.523135;;,
+ 43;4; -0.317048, 0.763495,-0.196872, 0.467774;;,
+ 44;4; -0.332772, 0.800940,-0.176902, 0.419593;;,
+ 45;4; -0.344764, 0.829511,-0.161673, 0.382818;;,
+ 46;4; -0.352175, 0.847175,-0.152261, 0.360070;;,
+ 47;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 48;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 49;4; -0.347687, 0.836498,-0.157959, 0.373797;;,
+ 50;4; -0.328927, 0.791839,-0.181782, 0.431248;;,
+ 51;4; -0.302829, 0.729719,-0.214922, 0.511149;;,
+ 52;4; -0.274880, 0.663199,-0.250413, 0.596704;;,
+ 53;4; -0.250488, 0.605147,-0.281387, 0.671365;;,
+ 54;4; -0.233972, 0.565840,-0.302359, 0.721917;;,
+ 55;4; -0.228105, 0.551875,-0.309810, 0.739879;;,
+ 56;4; -0.233837, 0.565514,-0.302531, 0.722339;;,
+ 57;4; -0.250841, 0.605967,-0.280940, 0.670328;;,
+ 58;4; -0.276796, 0.667711,-0.247983, 0.590948;;,
+ 59;4; -0.306220, 0.737725,-0.210621, 0.500917;;,
+ 60;4; -0.332078, 0.799290,-0.177784, 0.421713;;,
+ 61;4; -0.348970, 0.839538,-0.156330, 0.369904;;,
+ 62;4; -0.354656, 0.853092,-0.149110, 0.352448;;,
+ 63;4; -0.354656, 0.853092,-0.149110, 0.352448;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_004}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; 0.305704,-0.008069,-0.057320;;,
+ 1;3; 0.305704,-0.008069,-0.057320;;,
+ 2;3; 0.305704,-0.008069,-0.057320;;,
+ 3;3; 0.305704,-0.008069,-0.057320;;,
+ 4;3; 0.305704,-0.008069,-0.057320;;,
+ 5;3; 0.305704,-0.008069,-0.057320;;,
+ 6;3; 0.305704,-0.008069,-0.057320;;,
+ 7;3; 0.305704,-0.008069,-0.057320;;,
+ 8;3; 0.305704,-0.008069,-0.057320;;,
+ 9;3; 0.305704,-0.008069,-0.057320;;,
+ 10;3; 0.305704,-0.008069,-0.057320;;,
+ 11;3; 0.305704,-0.008069,-0.057320;;,
+ 12;3; 0.305704,-0.008069,-0.057320;;,
+ 13;3; 0.305704,-0.008069,-0.057320;;,
+ 14;3; 0.305704,-0.008069,-0.057320;;,
+ 15;3; 0.305704,-0.008069,-0.057320;;,
+ 16;3; 0.305704,-0.008069,-0.057320;;,
+ 17;3; 0.305704,-0.008069,-0.057320;;,
+ 18;3; 0.305704,-0.008069,-0.057320;;,
+ 19;3; 0.305704,-0.008069,-0.057320;;,
+ 20;3; 0.305704,-0.008069,-0.057320;;,
+ 21;3; 0.305704,-0.008069,-0.057320;;,
+ 22;3; 0.305704,-0.008069,-0.057320;;,
+ 23;3; 0.305704,-0.008069,-0.057320;;,
+ 24;3; 0.305704,-0.008069,-0.057320;;,
+ 25;3; 0.305704,-0.008069,-0.057320;;,
+ 26;3; 0.305704,-0.008069,-0.057320;;,
+ 27;3; 0.305704,-0.008069,-0.057320;;,
+ 28;3; 0.305704,-0.008069,-0.057320;;,
+ 29;3; 0.305704,-0.008069,-0.057320;;,
+ 30;3; 0.305704,-0.008069,-0.057320;;,
+ 31;3; 0.305704,-0.008069,-0.057320;;,
+ 32;3; 0.305704,-0.008069,-0.057320;;,
+ 33;3; 0.305704,-0.008069,-0.057320;;,
+ 34;3; 0.305704,-0.008069,-0.057320;;,
+ 35;3; 0.305704,-0.008069,-0.057320;;,
+ 36;3; 0.305704,-0.008069,-0.057320;;,
+ 37;3; 0.305704,-0.008069,-0.057320;;,
+ 38;3; 0.305704,-0.008069,-0.057320;;,
+ 39;3; 0.305704,-0.008069,-0.057320;;,
+ 40;3; 0.305704,-0.008069,-0.057320;;,
+ 41;3; 0.305704,-0.008069,-0.057320;;,
+ 42;3; 0.305704,-0.008069,-0.057320;;,
+ 43;3; 0.305704,-0.008069,-0.057320;;,
+ 44;3; 0.305704,-0.008069,-0.057320;;,
+ 45;3; 0.305704,-0.008069,-0.057320;;,
+ 46;3; 0.305704,-0.008069,-0.057320;;,
+ 47;3; 0.305704,-0.008069,-0.057320;;,
+ 48;3; 0.305704,-0.008069,-0.057320;;,
+ 49;3; 0.305704,-0.008069,-0.057320;;,
+ 50;3; 0.305704,-0.008069,-0.057320;;,
+ 51;3; 0.305704,-0.008069,-0.057320;;,
+ 52;3; 0.305704,-0.008069,-0.057320;;,
+ 53;3; 0.305704,-0.008069,-0.057320;;,
+ 54;3; 0.305704,-0.008069,-0.057320;;,
+ 55;3; 0.305704,-0.008069,-0.057320;;,
+ 56;3; 0.305704,-0.008069,-0.057320;;,
+ 57;3; 0.305704,-0.008069,-0.057320;;,
+ 58;3; 0.305704,-0.008069,-0.057320;;,
+ 59;3; 0.305704,-0.008069,-0.057320;;,
+ 60;3; 0.305704,-0.008069,-0.057320;;,
+ 61;3; 0.305704,-0.008069,-0.057320;;,
+ 62;3; 0.305704,-0.008069,-0.057320;;,
+ 63;3; 0.305704,-0.008069,-0.057320;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; 0.353553, 0.853553, 0.146447, 0.353553;;,
+ 1;4; 0.353553, 0.853553, 0.146447, 0.353553;;,
+ 2;4; 0.354245, 0.853245, 0.148133, 0.352846;;,
+ 3;4; 0.356195, 0.852375, 0.152883, 0.350853;;,
+ 4;4; 0.358697, 0.851259, 0.158982, 0.348293;;,
+ 5;4; 0.360647, 0.850389, 0.163732, 0.346300;;,
+ 6;4; 0.361339, 0.850081, 0.165419, 0.345592;;,
+ 7;4; 0.361033, 0.850201, 0.164685, 0.345894;;,
+ 8;4; 0.360112, 0.850567, 0.162472, 0.346804;;,
+ 9;4; 0.358592, 0.851168, 0.158823, 0.348304;;,
+ 10;4; 0.356541, 0.851981, 0.153897, 0.350329;;,
+ 11;4; 0.354085, 0.852954, 0.147998, 0.352754;;,
+ 12;4; 0.351407, 0.854014, 0.141569, 0.355396;;,
+ 13;4; 0.348730, 0.855074, 0.135140, 0.358039;;,
+ 14;4; 0.346274, 0.856047, 0.129242, 0.360464;;,
+ 15;4; 0.344223, 0.856860, 0.124316, 0.362489;;,
+ 16;4; 0.342703, 0.857462, 0.120667, 0.363989;;,
+ 17;4; 0.341781, 0.857827, 0.118453, 0.364899;;,
+ 18;4; 0.341476, 0.857948, 0.117720, 0.365200;;,
+ 19;4; 0.342189, 0.857933, 0.117813, 0.364514;;,
+ 20;4; 0.344183, 0.857822, 0.118546, 0.362603;;,
+ 21;4; 0.347054, 0.857481, 0.120786, 0.359852;;,
+ 22;4; 0.350137, 0.856752, 0.125572, 0.356884;;,
+ 23;4; 0.352584, 0.855480, 0.133900, 0.354507;;,
+ 24;4; 0.353553, 0.853553, 0.146447, 0.353553;;,
+ 25;4; 0.238392, 0.575529, 0.299360, 0.722717;;,
+ 26;4; 0.241500, 0.583104, 0.295246, 0.712619;;,
+ 27;4; 0.249991, 0.603731, 0.284012, 0.685200;;,
+ 28;4; 0.262479, 0.633980, 0.267498, 0.645099;;,
+ 29;4; 0.277490, 0.670255, 0.247654, 0.597116;;,
+ 30;4; 0.293577, 0.709059, 0.226395, 0.545868;;,
+ 31;4; 0.309414, 0.747220, 0.205469, 0.495519;;,
+ 32;4; 0.323870, 0.782034, 0.186370, 0.449608;;,
+ 33;4; 0.336035, 0.811330, 0.170299, 0.410975;;,
+ 34;4; 0.345221, 0.833462, 0.158160, 0.381779;;,
+ 35;4; 0.350947, 0.847265, 0.150594, 0.363559;;,
+ 36;4; 0.352901, 0.851978, 0.148013, 0.357333;;,
+ 37;4; 0.350898, 0.847144, 0.150659, 0.363721;;,
+ 38;4; 0.344852, 0.832552, 0.158650, 0.383003;;,
+ 39;4; 0.334898, 0.808530, 0.171806, 0.414740;;,
+ 40;4; 0.321531, 0.776276, 0.189472, 0.457350;;,
+ 41;4; 0.305698, 0.738072, 0.210396, 0.507823;;,
+ 42;4; 0.288783, 0.697248, 0.232752, 0.561765;;,
+ 43;4; 0.272420, 0.657744, 0.254379, 0.613976;;,
+ 44;4; 0.258192, 0.623381, 0.273186, 0.659411;;,
+ 45;4; 0.247341, 0.597165, 0.287528, 0.694086;;,
+ 46;4; 0.240636, 0.580957, 0.296392, 0.715532;;,
+ 47;4; 0.238392, 0.575529, 0.299360, 0.722717;;,
+ 48;4; 0.238392, 0.575529, 0.299360, 0.722717;;,
+ 49;4; 0.244707, 0.590890, 0.291003, 0.702274;;,
+ 50;4; 0.261695, 0.632064, 0.268536, 0.647662;;,
+ 51;4; 0.285312, 0.689117, 0.237318, 0.572212;;,
+ 52;4; 0.310594, 0.750059, 0.203910, 0.491779;;,
+ 53;4; 0.332655, 0.803189, 0.174764, 0.421710;;,
+ 54;4; 0.347592, 0.839177, 0.155027, 0.374237;;,
+ 55;4; 0.352901, 0.851978, 0.148013, 0.357333;;,
+ 56;4; 0.347714, 0.839459, 0.154867, 0.373876;;,
+ 57;4; 0.332328, 0.802329, 0.175202, 0.422933;;,
+ 58;4; 0.308842, 0.745656, 0.206242, 0.497805;;,
+ 59;4; 0.282217, 0.681395, 0.241431, 0.582718;;,
+ 60;4; 0.258820, 0.624895, 0.272356, 0.657411;;,
+ 61;4; 0.243535, 0.587964, 0.292560, 0.706261;;,
+ 62;4; 0.238392, 0.575529, 0.299360, 0.722717;;,
+ 63;4; 0.238392, 0.575529, 0.299360, 0.722717;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Armature_Bone_005}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; -0.299335,-0.008069,-0.057320;;,
+ 1;3; -0.299335,-0.008069,-0.057320;;,
+ 2;3; -0.299335,-0.008069,-0.057320;;,
+ 3;3; -0.299335,-0.008069,-0.057320;;,
+ 4;3; -0.299335,-0.008069,-0.057320;;,
+ 5;3; -0.299335,-0.008069,-0.057320;;,
+ 6;3; -0.299335,-0.008069,-0.057320;;,
+ 7;3; -0.299335,-0.008069,-0.057320;;,
+ 8;3; -0.299335,-0.008069,-0.057320;;,
+ 9;3; -0.299335,-0.008069,-0.057320;;,
+ 10;3; -0.299335,-0.008069,-0.057320;;,
+ 11;3; -0.299335,-0.008069,-0.057320;;,
+ 12;3; -0.299335,-0.008069,-0.057320;;,
+ 13;3; -0.299335,-0.008069,-0.057320;;,
+ 14;3; -0.299335,-0.008069,-0.057320;;,
+ 15;3; -0.299335,-0.008069,-0.057320;;,
+ 16;3; -0.299335,-0.008069,-0.057320;;,
+ 17;3; -0.299335,-0.008069,-0.057320;;,
+ 18;3; -0.299335,-0.008069,-0.057320;;,
+ 19;3; -0.299335,-0.008069,-0.057320;;,
+ 20;3; -0.299335,-0.008069,-0.057320;;,
+ 21;3; -0.299335,-0.008069,-0.057320;;,
+ 22;3; -0.299335,-0.008069,-0.057320;;,
+ 23;3; -0.299335,-0.008069,-0.057320;;,
+ 24;3; -0.299335,-0.008069,-0.057320;;,
+ 25;3; -0.299335,-0.008069,-0.057320;;,
+ 26;3; -0.299335,-0.008069,-0.057320;;,
+ 27;3; -0.299335,-0.008069,-0.057320;;,
+ 28;3; -0.299335,-0.008069,-0.057320;;,
+ 29;3; -0.299335,-0.008069,-0.057320;;,
+ 30;3; -0.299335,-0.008069,-0.057320;;,
+ 31;3; -0.299335,-0.008069,-0.057320;;,
+ 32;3; -0.299335,-0.008069,-0.057320;;,
+ 33;3; -0.299335,-0.008069,-0.057320;;,
+ 34;3; -0.299335,-0.008069,-0.057320;;,
+ 35;3; -0.299335,-0.008069,-0.057320;;,
+ 36;3; -0.299335,-0.008069,-0.057320;;,
+ 37;3; -0.299335,-0.008069,-0.057320;;,
+ 38;3; -0.299335,-0.008069,-0.057320;;,
+ 39;3; -0.299335,-0.008069,-0.057320;;,
+ 40;3; -0.299335,-0.008069,-0.057320;;,
+ 41;3; -0.299335,-0.008069,-0.057320;;,
+ 42;3; -0.299335,-0.008069,-0.057320;;,
+ 43;3; -0.299335,-0.008069,-0.057320;;,
+ 44;3; -0.299335,-0.008069,-0.057320;;,
+ 45;3; -0.299335,-0.008069,-0.057320;;,
+ 46;3; -0.299335,-0.008069,-0.057320;;,
+ 47;3; -0.299335,-0.008069,-0.057320;;,
+ 48;3; -0.299335,-0.008069,-0.057320;;,
+ 49;3; -0.299335,-0.008069,-0.057320;;,
+ 50;3; -0.299335,-0.008069,-0.057320;;,
+ 51;3; -0.299335,-0.008069,-0.057320;;,
+ 52;3; -0.299335,-0.008069,-0.057320;;,
+ 53;3; -0.299335,-0.008069,-0.057320;;,
+ 54;3; -0.299335,-0.008069,-0.057320;;,
+ 55;3; -0.299335,-0.008069,-0.057320;;,
+ 56;3; -0.299335,-0.008069,-0.057320;;,
+ 57;3; -0.299335,-0.008069,-0.057320;;,
+ 58;3; -0.299335,-0.008069,-0.057320;;,
+ 59;3; -0.299335,-0.008069,-0.057320;;,
+ 60;3; -0.299335,-0.008069,-0.057320;;,
+ 61;3; -0.299335,-0.008069,-0.057320;;,
+ 62;3; -0.299335,-0.008069,-0.057320;;,
+ 63;3; -0.299335,-0.008069,-0.057320;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 1;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 2;4; 0.353694, 0.853458,-0.146814,-0.353386;;,
+ 3;4; 0.350988, 0.854488,-0.140345,-0.356028;;,
+ 4;4; 0.347514, 0.855811,-0.132040,-0.359420;;,
+ 5;4; 0.344808, 0.856841,-0.125571,-0.362062;;,
+ 6;4; 0.343847, 0.857207,-0.123275,-0.363000;;,
+ 7;4; 0.344100, 0.857104,-0.123882,-0.362748;;,
+ 8;4; 0.344861, 0.856793,-0.125717,-0.361991;;,
+ 9;4; 0.346116, 0.856281,-0.128742,-0.360741;;,
+ 10;4; 0.347810, 0.855589,-0.132824,-0.359054;;,
+ 11;4; 0.349839, 0.854761,-0.137713,-0.357034;;,
+ 12;4; 0.352050, 0.853859,-0.143042,-0.354832;;,
+ 13;4; 0.354261, 0.852956,-0.148370,-0.352631;;,
+ 14;4; 0.356289, 0.852128,-0.153259,-0.350610;;,
+ 15;4; 0.357983, 0.851437,-0.157342,-0.348924;;,
+ 16;4; 0.359239, 0.850924,-0.160367,-0.347674;;,
+ 17;4; 0.360000, 0.850614,-0.162201,-0.346916;;,
+ 18;4; 0.360252, 0.850511,-0.162809,-0.346665;;,
+ 19;4; 0.359921, 0.850663,-0.161999,-0.347007;;,
+ 20;4; 0.358997, 0.851090,-0.159737,-0.347962;;,
+ 21;4; 0.357665, 0.851704,-0.156478,-0.349337;;,
+ 22;4; 0.356236, 0.852363,-0.152980,-0.350814;;,
+ 23;4; 0.355103, 0.852885,-0.150208,-0.351985;;,
+ 24;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 25;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 26;4; 0.351252, 0.844989,-0.153446,-0.362907;;,
+ 27;4; 0.341950, 0.822843,-0.165295,-0.391489;;,
+ 28;4; 0.328261, 0.790255,-0.182733,-0.433541;;,
+ 29;4; 0.311798, 0.751069,-0.203705,-0.484104;;,
+ 30;4; 0.294150, 0.709066,-0.226186,-0.538298;;,
+ 31;4; 0.276771, 0.667705,-0.248324,-0.591661;;,
+ 32;4; 0.260907, 0.629950,-0.268532,-0.640371;;,
+ 33;4; 0.247557, 0.598179,-0.285538,-0.681361;;,
+ 34;4; 0.237476, 0.574186,-0.298380,-0.712316;;,
+ 35;4; 0.231193, 0.559234,-0.306382,-0.731607;;,
+ 36;4; 0.229050, 0.554134,-0.309112,-0.738188;;,
+ 37;4; 0.231246, 0.559361,-0.306315,-0.731445;;,
+ 38;4; 0.237879, 0.575141,-0.297867,-0.711090;;,
+ 39;4; 0.248797, 0.601116,-0.283959,-0.677588;;,
+ 40;4; 0.263459, 0.635992,-0.265283,-0.632610;;,
+ 41;4; 0.280825, 0.677303,-0.243163,-0.579332;;,
+ 42;4; 0.299379, 0.721448,-0.219529,-0.522388;;,
+ 43;4; 0.317328, 0.764168,-0.196665,-0.467268;;,
+ 44;4; 0.332935, 0.801333,-0.176782,-0.419298;;,
+ 45;4; 0.344837, 0.829688,-0.161619,-0.382684;;,
+ 46;4; 0.352192, 0.847220,-0.152248,-0.360036;;,
+ 47;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 48;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 49;4; 0.347738, 0.836623,-0.157922,-0.373704;;,
+ 50;4; 0.329119, 0.792298,-0.181641,-0.430903;;,
+ 51;4; 0.303216, 0.730645,-0.214637,-0.510456;;,
+ 52;4; 0.275476, 0.664623,-0.249974,-0.595638;;,
+ 53;4; 0.251266, 0.607006,-0.280813,-0.669973;;,
+ 54;4; 0.234874, 0.567995,-0.301694,-0.720304;;,
+ 55;4; 0.229050, 0.554134,-0.309112,-0.738188;;,
+ 56;4; 0.234739, 0.567671,-0.301866,-0.720724;;,
+ 57;4; 0.251616, 0.607821,-0.280368,-0.668940;;,
+ 58;4; 0.277378, 0.669102,-0.247554,-0.589906;;,
+ 59;4; 0.306582, 0.738592,-0.210354,-0.500267;;,
+ 60;4; 0.332246, 0.799695,-0.177660,-0.421409;;,
+ 61;4; 0.349012, 0.839640,-0.156300,-0.369827;;,
+ 62;4; 0.354655, 0.853092,-0.149110,-0.352448;;,
+ 63;4; 0.354655, 0.853092,-0.149110,-0.352448;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+ Animation {
+ {Cube_005}
+ AnimationKey { //Position
+ 2;
+ 64;
+ 0;3; -0.003210, 0.035207,-1.015033;;,
+ 1;3; -0.003210, 0.035207,-1.015033;;,
+ 2;3; -0.003210, 0.035207,-1.015033;;,
+ 3;3; -0.003210, 0.035207,-1.015033;;,
+ 4;3; -0.003210, 0.035207,-1.015033;;,
+ 5;3; -0.003210, 0.035207,-1.015033;;,
+ 6;3; -0.003210, 0.035207,-1.015033;;,
+ 7;3; -0.003210, 0.035207,-1.015033;;,
+ 8;3; -0.003210, 0.035207,-1.015033;;,
+ 9;3; -0.003210, 0.035207,-1.015033;;,
+ 10;3; -0.003210, 0.035207,-1.015033;;,
+ 11;3; -0.003210, 0.035207,-1.015033;;,
+ 12;3; -0.003210, 0.035207,-1.015033;;,
+ 13;3; -0.003210, 0.035207,-1.015033;;,
+ 14;3; -0.003210, 0.035207,-1.015033;;,
+ 15;3; -0.003210, 0.035207,-1.015033;;,
+ 16;3; -0.003210, 0.035207,-1.015033;;,
+ 17;3; -0.003210, 0.035207,-1.015033;;,
+ 18;3; -0.003210, 0.035207,-1.015033;;,
+ 19;3; -0.003210, 0.035207,-1.015033;;,
+ 20;3; -0.003210, 0.035207,-1.015033;;,
+ 21;3; -0.003210, 0.035207,-1.015033;;,
+ 22;3; -0.003210, 0.035207,-1.015033;;,
+ 23;3; -0.003210, 0.035207,-1.015033;;,
+ 24;3; -0.003210, 0.035207,-1.015033;;,
+ 25;3; -0.003210, 0.035207,-1.015033;;,
+ 26;3; -0.003210, 0.035207,-1.015033;;,
+ 27;3; -0.003210, 0.035207,-1.015033;;,
+ 28;3; -0.003210, 0.035207,-1.015033;;,
+ 29;3; -0.003210, 0.035207,-1.015033;;,
+ 30;3; -0.003210, 0.035207,-1.015033;;,
+ 31;3; -0.003210, 0.035207,-1.015033;;,
+ 32;3; -0.003210, 0.035207,-1.015033;;,
+ 33;3; -0.003210, 0.035207,-1.015033;;,
+ 34;3; -0.003210, 0.035207,-1.015033;;,
+ 35;3; -0.003210, 0.035207,-1.015033;;,
+ 36;3; -0.003210, 0.035207,-1.015033;;,
+ 37;3; -0.003210, 0.035207,-1.015033;;,
+ 38;3; -0.003210, 0.035207,-1.015033;;,
+ 39;3; -0.003210, 0.035207,-1.015033;;,
+ 40;3; -0.003210, 0.035207,-1.015033;;,
+ 41;3; -0.003210, 0.035207,-1.015033;;,
+ 42;3; -0.003210, 0.035207,-1.015033;;,
+ 43;3; -0.003210, 0.035207,-1.015033;;,
+ 44;3; -0.003210, 0.035207,-1.015033;;,
+ 45;3; -0.003210, 0.035207,-1.015033;;,
+ 46;3; -0.003210, 0.035207,-1.015033;;,
+ 47;3; -0.003210, 0.035207,-1.015033;;,
+ 48;3; -0.003210, 0.035207,-1.015033;;,
+ 49;3; -0.003210, 0.035207,-1.015033;;,
+ 50;3; -0.003210, 0.035207,-1.015033;;,
+ 51;3; -0.003210, 0.035207,-1.015033;;,
+ 52;3; -0.003210, 0.035207,-1.015033;;,
+ 53;3; -0.003210, 0.035207,-1.015033;;,
+ 54;3; -0.003210, 0.035207,-1.015033;;,
+ 55;3; -0.003210, 0.035207,-1.015033;;,
+ 56;3; -0.003210, 0.035207,-1.015033;;,
+ 57;3; -0.003210, 0.035207,-1.015033;;,
+ 58;3; -0.003210, 0.035207,-1.015033;;,
+ 59;3; -0.003210, 0.035207,-1.015033;;,
+ 60;3; -0.003210, 0.035207,-1.015033;;,
+ 61;3; -0.003210, 0.035207,-1.015033;;,
+ 62;3; -0.003210, 0.035207,-1.015033;;,
+ 63;3; -0.003210, 0.035207,-1.015033;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 64;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 2;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 3;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 4;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 5;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 6;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 7;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 8;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 9;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 10;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 11;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 12;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 13;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 14;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 15;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 16;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 17;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 18;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 19;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 20;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 21;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 22;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 23;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 24;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 25;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 26;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 27;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 28;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 29;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 30;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 31;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 32;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 33;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 34;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 35;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 36;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 37;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 38;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 39;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 40;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 41;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 42;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 43;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 44;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 45;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 46;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 47;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 48;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 49;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 50;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 51;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 52;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 53;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 54;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 55;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 56;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 57;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 58;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 59;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 60;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 61;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 62;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 63;4; -1.000000, 0.000000, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 64;
+ 0;3; 1.000000, 1.000000, 1.000000;;,
+ 1;3; 1.000000, 1.000000, 1.000000;;,
+ 2;3; 1.000000, 1.000000, 1.000000;;,
+ 3;3; 1.000000, 1.000000, 1.000000;;,
+ 4;3; 1.000000, 1.000000, 1.000000;;,
+ 5;3; 1.000000, 1.000000, 1.000000;;,
+ 6;3; 1.000000, 1.000000, 1.000000;;,
+ 7;3; 1.000000, 1.000000, 1.000000;;,
+ 8;3; 1.000000, 1.000000, 1.000000;;,
+ 9;3; 1.000000, 1.000000, 1.000000;;,
+ 10;3; 1.000000, 1.000000, 1.000000;;,
+ 11;3; 1.000000, 1.000000, 1.000000;;,
+ 12;3; 1.000000, 1.000000, 1.000000;;,
+ 13;3; 1.000000, 1.000000, 1.000000;;,
+ 14;3; 1.000000, 1.000000, 1.000000;;,
+ 15;3; 1.000000, 1.000000, 1.000000;;,
+ 16;3; 1.000000, 1.000000, 1.000000;;,
+ 17;3; 1.000000, 1.000000, 1.000000;;,
+ 18;3; 1.000000, 1.000000, 1.000000;;,
+ 19;3; 1.000000, 1.000000, 1.000000;;,
+ 20;3; 1.000000, 1.000000, 1.000000;;,
+ 21;3; 1.000000, 1.000000, 1.000000;;,
+ 22;3; 1.000000, 1.000000, 1.000000;;,
+ 23;3; 1.000000, 1.000000, 1.000000;;,
+ 24;3; 1.000000, 1.000000, 1.000000;;,
+ 25;3; 1.000000, 1.000000, 1.000000;;,
+ 26;3; 1.000000, 1.000000, 1.000000;;,
+ 27;3; 1.000000, 1.000000, 1.000000;;,
+ 28;3; 1.000000, 1.000000, 1.000000;;,
+ 29;3; 1.000000, 1.000000, 1.000000;;,
+ 30;3; 1.000000, 1.000000, 1.000000;;,
+ 31;3; 1.000000, 1.000000, 1.000000;;,
+ 32;3; 1.000000, 1.000000, 1.000000;;,
+ 33;3; 1.000000, 1.000000, 1.000000;;,
+ 34;3; 1.000000, 1.000000, 1.000000;;,
+ 35;3; 1.000000, 1.000000, 1.000000;;,
+ 36;3; 1.000000, 1.000000, 1.000000;;,
+ 37;3; 1.000000, 1.000000, 1.000000;;,
+ 38;3; 1.000000, 1.000000, 1.000000;;,
+ 39;3; 1.000000, 1.000000, 1.000000;;,
+ 40;3; 1.000000, 1.000000, 1.000000;;,
+ 41;3; 1.000000, 1.000000, 1.000000;;,
+ 42;3; 1.000000, 1.000000, 1.000000;;,
+ 43;3; 1.000000, 1.000000, 1.000000;;,
+ 44;3; 1.000000, 1.000000, 1.000000;;,
+ 45;3; 1.000000, 1.000000, 1.000000;;,
+ 46;3; 1.000000, 1.000000, 1.000000;;,
+ 47;3; 1.000000, 1.000000, 1.000000;;,
+ 48;3; 1.000000, 1.000000, 1.000000;;,
+ 49;3; 1.000000, 1.000000, 1.000000;;,
+ 50;3; 1.000000, 1.000000, 1.000000;;,
+ 51;3; 1.000000, 1.000000, 1.000000;;,
+ 52;3; 1.000000, 1.000000, 1.000000;;,
+ 53;3; 1.000000, 1.000000, 1.000000;;,
+ 54;3; 1.000000, 1.000000, 1.000000;;,
+ 55;3; 1.000000, 1.000000, 1.000000;;,
+ 56;3; 1.000000, 1.000000, 1.000000;;,
+ 57;3; 1.000000, 1.000000, 1.000000;;,
+ 58;3; 1.000000, 1.000000, 1.000000;;,
+ 59;3; 1.000000, 1.000000, 1.000000;;,
+ 60;3; 1.000000, 1.000000, 1.000000;;,
+ 61;3; 1.000000, 1.000000, 1.000000;;,
+ 62;3; 1.000000, 1.000000, 1.000000;;,
+ 63;3; 1.000000, 1.000000, 1.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carbone_mobs/sounds/hit.ogg b/carbone_mobs/sounds/hit.ogg
new file mode 100644
index 0000000..d9a6a17
--- /dev/null
+++ b/carbone_mobs/sounds/hit.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/hit_death.ogg b/carbone_mobs/sounds/hit_death.ogg
new file mode 100644
index 0000000..a73e00e
--- /dev/null
+++ b/carbone_mobs/sounds/hit_death.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/mobs_bullet.ogg b/carbone_mobs/sounds/mobs_bullet.ogg
new file mode 100644
index 0000000..43948c5
--- /dev/null
+++ b/carbone_mobs/sounds/mobs_bullet.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/mobs_fireball.ogg b/carbone_mobs/sounds/mobs_fireball.ogg
new file mode 100644
index 0000000..9570ce1
--- /dev/null
+++ b/carbone_mobs/sounds/mobs_fireball.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/mobs_fireball_explode.ogg b/carbone_mobs/sounds/mobs_fireball_explode.ogg
new file mode 100644
index 0000000..323140e
--- /dev/null
+++ b/carbone_mobs/sounds/mobs_fireball_explode.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/mobs_punch.ogg b/carbone_mobs/sounds/mobs_punch.ogg
new file mode 100644
index 0000000..9e32401
--- /dev/null
+++ b/carbone_mobs/sounds/mobs_punch.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/player_damage.1.ogg b/carbone_mobs/sounds/player_damage.1.ogg
new file mode 100644
index 0000000..974f575
--- /dev/null
+++ b/carbone_mobs/sounds/player_damage.1.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/player_damage.2.ogg b/carbone_mobs/sounds/player_damage.2.ogg
new file mode 100644
index 0000000..a713c12
--- /dev/null
+++ b/carbone_mobs/sounds/player_damage.2.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/player_death.ogg b/carbone_mobs/sounds/player_death.ogg
new file mode 100644
index 0000000..260964b
--- /dev/null
+++ b/carbone_mobs/sounds/player_death.ogg
Binary files differ
diff --git a/carbone_mobs/sounds/player_falling_damage.ogg b/carbone_mobs/sounds/player_falling_damage.ogg
new file mode 100644
index 0000000..c051401
--- /dev/null
+++ b/carbone_mobs/sounds/player_falling_damage.ogg
Binary files differ
diff --git a/carbone_mobs/textures/mobs_bullet.png b/carbone_mobs/textures/mobs_bullet.png
new file mode 100644
index 0000000..8e8dae7
--- /dev/null
+++ b/carbone_mobs/textures/mobs_bullet.png
Binary files differ
diff --git a/carbone_mobs/textures/mobs_cooked_rat.png b/carbone_mobs/textures/mobs_cooked_rat.png
new file mode 100644
index 0000000..e41bee4
--- /dev/null
+++ b/carbone_mobs/textures/mobs_cooked_rat.png
Binary files differ
diff --git a/carbone_mobs/textures/mobs_fireball.png b/carbone_mobs/textures/mobs_fireball.png
new file mode 100644
index 0000000..09a5008
--- /dev/null
+++ b/carbone_mobs/textures/mobs_fireball.png
Binary files differ
diff --git a/carbone_mobs/textures/mobs_meat.png b/carbone_mobs/textures/mobs_meat.png
new file mode 100644
index 0000000..9814b00
--- /dev/null
+++ b/carbone_mobs/textures/mobs_meat.png
Binary files differ
diff --git a/carbone_mobs/textures/mobs_meat_raw.png b/carbone_mobs/textures/mobs_meat_raw.png
new file mode 100644
index 0000000..f4e5182
--- /dev/null
+++ b/carbone_mobs/textures/mobs_meat_raw.png
Binary files differ
diff --git a/carbone_mobs/textures/mobs_rat_inventory.png b/carbone_mobs/textures/mobs_rat_inventory.png
new file mode 100644
index 0000000..776a252
--- /dev/null
+++ b/carbone_mobs/textures/mobs_rat_inventory.png
Binary files differ
diff --git a/carts/README.txt b/carts/README.txt
new file mode 100644
index 0000000..58673ce
--- /dev/null
+++ b/carts/README.txt
@@ -0,0 +1,25 @@
+Minetest 0.4 mod: carts
+=======================
+by PilzAdam
+
+License of source code:
+-----------------------
+WTFPL
+
+License of media (textures, sounds and models):
+-----------------------------------------------
+CC-0
+
+Authors of media files:
+-----------------------
+kddekadenz:
+ cart_bottom.png
+ cart_side.png
+ cart_top.png
+
+Zeg9:
+ cart.x
+ cart.png
+
+rarkenin:
+ cart_rail_*.png
diff --git a/carts/depends.txt b/carts/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/carts/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/carts/functions.lua b/carts/functions.lua
new file mode 100644
index 0000000..8a7da47
--- /dev/null
+++ b/carts/functions.lua
@@ -0,0 +1,56 @@
+
+--
+-- Helper functions
+--
+
+cart_func = {}
+
+function cart_func:get_sign(z)
+ if z == 0 then
+ return 0
+ else
+ return z/math.abs(z)
+ end
+end
+
+-- Returns the velocity as a unit vector
+-- The smaller part of the vector will be turned to 0
+function cart_func:velocity_to_dir(v)
+ if math.abs(v.x) > math.abs(v.z) then
+ return {x=cart_func:get_sign(v.x), y=cart_func:get_sign(v.y), z=0}
+ else
+ return {x=0, y=cart_func:get_sign(v.y), z=cart_func:get_sign(v.z)}
+ end
+end
+
+function cart_func:is_rail(p)
+ local nn = minetest.env:get_node(p).name
+ return minetest.get_item_group(nn, "rail") ~= 0
+end
+
+function cart_func:is_int(z)
+ z = math.abs(z)
+ return math.abs(math.floor(z+0.5)-z) <= 0.1
+end
+
+cart_func.v3 = {}
+
+function cart_func.v3:add(v1, v2)
+ return {x=v1.x+v2.x, y=v1.y+v2.y, z=v1.z+v2.z}
+end
+
+function cart_func.v3:copy(v)
+ return {x=v.x, y=v.y, z=v.z}
+end
+
+function cart_func.v3:round(v)
+ return {
+ x = math.floor(v.x+0.5),
+ y = math.floor(v.y+0.5),
+ z = math.floor(v.z+0.5),
+ }
+end
+
+function cart_func.v3:equal(v1, v2)
+ return v1.x == v2.x and v1.y == v2.y and v1.z == v2.z
+end
diff --git a/carts/init.lua b/carts/init.lua
new file mode 100644
index 0000000..a372203
--- /dev/null
+++ b/carts/init.lua
@@ -0,0 +1,595 @@
+
+dofile(minetest.get_modpath("carts").."/functions.lua")
+
+--
+-- Cart entity
+--
+
+local cart = {
+ physical = false,
+ collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
+ visual = "mesh",
+ mesh = "cart.x",
+ visual_size = {x=1, y=1},
+ textures = {"cart.png"},
+
+ driver = nil,
+ velocity = {x=0, y=0, z=0},
+ old_pos = nil,
+ old_velocity = nil,
+ pre_stop_dir = nil,
+ MAX_V = 8, -- Limit of the velocity
+}
+
+function cart:on_rightclick(clicker)
+ if not clicker or not clicker:is_player() then
+ return
+ end
+ if self.driver and clicker == self.driver then
+ self.driver = nil
+ clicker:set_detach()
+ elseif not self.driver then
+ self.driver = clicker
+ clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
+ end
+end
+
+function cart:on_activate(staticdata, dtime_s)
+ self.object:set_armor_groups({immortal=1})
+ if staticdata then
+ local tmp = minetest.deserialize(staticdata)
+ if tmp then
+ self.velocity = tmp.velocity
+ end
+ if tmp and tmp.pre_stop_dir then
+ self.pre_stop_dir = tmp.pre_stop_dir
+ end
+ end
+ self.old_pos = self.object:getpos()
+ self.old_velocity = self.velocity
+end
+
+function cart:get_staticdata()
+ return minetest.serialize({
+ velocity = self.velocity,
+ pre_stop_dir = self.pre_stop_dir,
+ })
+end
+
+-- Remove the cart if holding a tool or accelerate it
+function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
+ if not puncher or not puncher:is_player() then
+ return
+ end
+
+ if puncher:get_player_control().sneak then
+ self.object:remove()
+ local inv = puncher:get_inventory()
+ if minetest.setting_getbool("creative_mode") then
+ if not inv:contains_item("main", "carts:cart") then
+ inv:add_item("main", "carts:cart")
+ end
+ else
+ inv:add_item("main", "carts:cart")
+ end
+ return
+ end
+
+ if puncher == self.driver then
+ return
+ end
+
+ local d = cart_func:velocity_to_dir(direction)
+ local s = self.velocity
+ if time_from_last_punch > tool_capabilities.full_punch_interval then
+ time_from_last_punch = tool_capabilities.full_punch_interval
+ end
+ local f = 4*(time_from_last_punch/tool_capabilities.full_punch_interval)
+ local v = {x=s.x+d.x*f, y=s.y, z=s.z+d.z*f}
+ if math.abs(v.x) < 6 and math.abs(v.z) < 6 then
+ self.velocity = v
+ else
+ if math.abs(self.velocity.x) < 6 and math.abs(v.x) >= 6 then
+ self.velocity.x = 6*cart_func:get_sign(self.velocity.x)
+ end
+ if math.abs(self.velocity.z) < 6 and math.abs(v.z) >= 6 then
+ self.velocity.z = 6*cart_func:get_sign(self.velocity.z)
+ end
+ end
+end
+
+-- Returns the direction as a unit vector
+function cart:get_rail_direction(pos, dir)
+ local d = cart_func.v3:copy(dir)
+
+ -- Check front
+ d.y = 0
+ local p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+
+ -- Check downhill
+ d.y = -1
+ p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+
+ -- Check uphill
+ d.y = 1
+ p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+ d.y = 0
+
+ -- Check left and right
+ local view_dir
+ local other_dir
+ local a
+
+ if d.x == 0 and d.z ~= 0 then
+ view_dir = "z"
+ other_dir = "x"
+ if d.z < 0 then
+ a = {1, -1}
+ else
+ a = {-1, 1}
+ end
+ elseif d.z == 0 and d.x ~= 0 then
+ view_dir = "x"
+ other_dir = "z"
+ if d.x > 0 then
+ a = {1, -1}
+ else
+ a = {-1, 1}
+ end
+ else
+ return {x=0, y=0, z=0}
+ end
+
+ d[view_dir] = 0
+ d[other_dir] = a[1]
+ p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+ d.y = -1
+ p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+ d.y = 0
+ d[other_dir] = a[2]
+ p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+ d.y = -1
+ p = cart_func.v3:add(cart_func.v3:copy(pos), d)
+ if cart_func:is_rail(p) then
+ return d
+ end
+ d.y = 0
+
+ return {x=0, y=0, z=0}
+end
+
+function cart:calc_rail_direction(pos, vel)
+ local velocity = cart_func.v3:copy(vel)
+ local p = cart_func.v3:copy(pos)
+ if cart_func:is_int(p.x) and cart_func:is_int(p.z) then
+
+ local dir = cart_func:velocity_to_dir(velocity)
+ local dir_old = cart_func.v3:copy(dir)
+
+ dir = self:get_rail_direction(cart_func.v3:round(p), dir)
+
+ local v = math.max(math.abs(velocity.x), math.abs(velocity.z))
+ velocity = {
+ x = v * dir.x,
+ y = v * dir.y,
+ z = v * dir.z,
+ }
+
+ if cart_func.v3:equal(velocity, {x=0, y=0, z=0}) and not cart_func:is_rail(p) then
+
+ -- First try this HACK
+ -- Move the cart on the rail if above or under it
+ if cart_func:is_rail(cart_func.v3:add(p, {x=0, y=1, z=0})) and vel.y >= 0 then
+ p = cart_func.v3:add(p, {x=0, y=1, z=0})
+ return self:calc_rail_direction(p, vel)
+ end
+ if cart_func:is_rail(cart_func.v3:add(p, {x=0, y=-1, z=0})) and vel.y <= 0 then
+ p = cart_func.v3:add(p, {x=0, y=-1, z=0})
+ return self:calc_rail_direction(p, vel)
+ end
+ -- Now the HACK gets really dirty
+ if cart_func:is_rail(cart_func.v3:add(p, {x=0, y=2, z=0})) and vel.y >= 0 then
+ p = cart_func.v3:add(p, {x=0, y=1, z=0})
+ return self:calc_rail_direction(p, vel)
+ end
+ if cart_func:is_rail(cart_func.v3:add(p, {x=0, y=-2, z=0})) and vel.y <= 0 then
+ p = cart_func.v3:add(p, {x=0, y=-1, z=0})
+ return self:calc_rail_direction(p, vel)
+ end
+
+ return {x=0, y=0, z=0}, p
+ end
+
+ if not cart_func.v3:equal(dir, dir_old) then
+ return velocity, cart_func.v3:round(p)
+ end
+
+ end
+ return velocity, p
+end
+
+function cart:on_step(dtime)
+
+ local pos = self.object:getpos()
+ local dir = cart_func:velocity_to_dir(self.velocity)
+
+ if not cart_func.v3:equal(self.velocity, {x=0,y=0,z=0}) then
+ self.pre_stop_dir = cart_func:velocity_to_dir(self.velocity)
+ end
+
+ -- Stop the cart if the velocity is nearly 0
+ -- Only if on a flat railway
+ if dir.y == 0 then
+ if math.abs(self.velocity.x) < 0.1 and math.abs(self.velocity.z) < 0.1 then
+ -- Start the cart if powered from mesecons
+ local a = tonumber(minetest.env:get_meta(pos):get_string("cart_acceleration"))
+ if a and a ~= 0 then
+ if self.pre_stop_dir and cart_func.v3:equal(self:get_rail_direction(self.object:getpos(), self.pre_stop_dir), self.pre_stop_dir) then
+ self.velocity = {
+ x = self.pre_stop_dir.x * 0.2,
+ y = self.pre_stop_dir.y * 0.2,
+ z = self.pre_stop_dir.z * 0.2,
+ }
+ self.old_velocity = self.velocity
+ return
+ end
+ for _,y in ipairs({0,-1,1}) do
+ for _,z in ipairs({1,-1}) do
+ if cart_func.v3:equal(self:get_rail_direction(self.object:getpos(), {x=0, y=y, z=z}), {x=0, y=y, z=z}) then
+ self.velocity = {
+ x = 0,
+ y = 0.2*y,
+ z = 0.2*z,
+ }
+ self.old_velocity = self.velocity
+ return
+ end
+ end
+ for _,x in ipairs({1,-1}) do
+ if cart_func.v3:equal(self:get_rail_direction(self.object:getpos(), {x=x, y=y, z=0}), {x=x, y=y, z=0}) then
+ self.velocity = {
+ x = 0.2*x,
+ y = 0.2*y,
+ z = 0,
+ }
+ self.old_velocity = self.velocity
+ return
+ end
+ end
+ end
+ end
+
+ self.velocity = {x=0, y=0, z=0}
+ self.object:setvelocity(self.velocity)
+ self.old_velocity = self.velocity
+ self.old_pos = self.object:getpos()
+ return
+ end
+ end
+
+ --
+ -- Set the new moving direction
+ --
+
+ -- Recalcualte the rails that are passed since the last server step
+ local old_dir = cart_func:velocity_to_dir(self.old_velocity)
+ if old_dir.x ~= 0 then
+ local sign = cart_func:get_sign(pos.x-self.old_pos.x)
+ while true do
+ if sign ~= cart_func:get_sign(pos.x-self.old_pos.x) or pos.x == self.old_pos.x then
+ break
+ end
+ self.old_pos.x = self.old_pos.x + cart_func:get_sign(pos.x-self.old_pos.x)*0.1
+ self.old_pos.y = self.old_pos.y + cart_func:get_sign(pos.x-self.old_pos.x)*0.1*old_dir.y
+ self.old_velocity, self.old_pos = self:calc_rail_direction(self.old_pos, self.old_velocity)
+ old_dir = cart_func:velocity_to_dir(self.old_velocity)
+ if not cart_func.v3:equal(cart_func:velocity_to_dir(self.old_velocity), dir) then
+ self.velocity = self.old_velocity
+ pos = self.old_pos
+ self.object:setpos(self.old_pos)
+ break
+ end
+ end
+ elseif old_dir.z ~= 0 then
+ local sign = cart_func:get_sign(pos.z-self.old_pos.z)
+ while true do
+ if sign ~= cart_func:get_sign(pos.z-self.old_pos.z) or pos.z == self.old_pos.z then
+ break
+ end
+ self.old_pos.z = self.old_pos.z + cart_func:get_sign(pos.z-self.old_pos.z)*0.1
+ self.old_pos.y = self.old_pos.y + cart_func:get_sign(pos.z-self.old_pos.z)*0.1*old_dir.y
+ self.old_velocity, self.old_pos = self:calc_rail_direction(self.old_pos, self.old_velocity)
+ old_dir = cart_func:velocity_to_dir(self.old_velocity)
+ if not cart_func.v3:equal(cart_func:velocity_to_dir(self.old_velocity), dir) then
+ self.velocity = self.old_velocity
+ pos = self.old_pos
+ self.object:setpos(self.old_pos)
+ break
+ end
+ end
+ end
+
+ -- Calculate the new step
+ self.velocity, pos = self:calc_rail_direction(pos, self.velocity)
+ self.object:setpos(pos)
+ dir = cart_func:velocity_to_dir(self.velocity)
+
+ -- Accelerate or decelerate the cart according to the pitch and acceleration of the rail node
+ local a = tonumber(minetest.env:get_meta(pos):get_string("cart_acceleration"))
+ if not a then
+ a = 0
+ end
+ if self.velocity.y < 0 then
+ self.velocity = {
+ x = self.velocity.x + (a+0.13)*cart_func:get_sign(self.velocity.x),
+ y = self.velocity.y + (a+0.13)*cart_func:get_sign(self.velocity.y),
+ z = self.velocity.z + (a+0.13)*cart_func:get_sign(self.velocity.z),
+ }
+ elseif self.velocity.y > 0 then
+ self.velocity = {
+ x = self.velocity.x + (a-0.1)*cart_func:get_sign(self.velocity.x),
+ y = self.velocity.y + (a-0.1)*cart_func:get_sign(self.velocity.y),
+ z = self.velocity.z + (a-0.1)*cart_func:get_sign(self.velocity.z),
+ }
+ else
+ self.velocity = {
+ x = self.velocity.x + (a-0.03)*cart_func:get_sign(self.velocity.x),
+ y = self.velocity.y + (a-0.03)*cart_func:get_sign(self.velocity.y),
+ z = self.velocity.z + (a-0.03)*cart_func:get_sign(self.velocity.z),
+ }
+
+ -- Place the cart exactly on top of the rail
+ if cart_func:is_rail(cart_func.v3:round(pos)) then
+ self.object:setpos({x=pos.x, y=math.floor(pos.y+0.5), z=pos.z})
+ pos = self.object:getpos()
+ end
+ end
+
+ -- Dont switch moving direction
+ -- Only if on flat railway
+ if dir.y == 0 then
+ if cart_func:get_sign(dir.x) ~= cart_func:get_sign(self.velocity.x) then
+ self.velocity.x = 0
+ end
+ if cart_func:get_sign(dir.y) ~= cart_func:get_sign(self.velocity.y) then
+ self.velocity.y = 0
+ end
+ if cart_func:get_sign(dir.z) ~= cart_func:get_sign(self.velocity.z) then
+ self.velocity.z = 0
+ end
+ end
+
+ -- Allow only one moving direction (multiply the other one with 0)
+ dir = cart_func:velocity_to_dir(self.velocity)
+ self.velocity = {
+ x = math.abs(self.velocity.x) * dir.x,
+ y = self.velocity.y,
+ z = math.abs(self.velocity.z) * dir.z,
+ }
+
+ -- Move cart exactly on the rail
+ if dir.x ~= 0 and not cart_func:is_int(pos.z) then
+ pos.z = math.floor(0.5+pos.z)
+ self.object:setpos(pos)
+ elseif dir.z ~= 0 and not cart_func:is_int(pos.x) then
+ pos.x = math.floor(0.5+pos.x)
+ self.object:setpos(pos)
+ end
+
+ -- Limit the velocity
+ if math.abs(self.velocity.x) > self.MAX_V then
+ self.velocity.x = self.MAX_V*cart_func:get_sign(self.velocity.x)
+ end
+ if math.abs(self.velocity.y) > self.MAX_V then
+ self.velocity.y = self.MAX_V*cart_func:get_sign(self.velocity.y)
+ end
+ if math.abs(self.velocity.z) > self.MAX_V then
+ self.velocity.z = self.MAX_V*cart_func:get_sign(self.velocity.z)
+ end
+
+ self.object:setvelocity(self.velocity)
+
+ self.old_pos = self.object:getpos()
+ self.old_velocity = cart_func.v3:copy(self.velocity)
+
+ if dir.x < 0 then
+ self.object:setyaw(math.pi/2)
+ elseif dir.x > 0 then
+ self.object:setyaw(3*math.pi/2)
+ elseif dir.z < 0 then
+ self.object:setyaw(math.pi)
+ elseif dir.z > 0 then
+ self.object:setyaw(0)
+ end
+
+ if dir.y == -1 then
+ self.object:set_animation({x=1, y=1}, 1, 0)
+ elseif dir.y == 1 then
+ self.object:set_animation({x=2, y=2}, 1, 0)
+ else
+ self.object:set_animation({x=0, y=0}, 1, 0)
+ end
+
+end
+
+minetest.register_entity("carts:cart", cart)
+
+
+minetest.register_craftitem("carts:cart", {
+ description = "Minecart",
+ inventory_image = minetest.inventorycube("cart_top.png", "cart_side.png", "cart_side.png"),
+ wield_image = "cart_side.png",
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if not pointed_thing.type == "node" then
+ return
+ end
+ if cart_func:is_rail(pointed_thing.under) then
+ minetest.env:add_entity(pointed_thing.under, "carts:cart")
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+ elseif cart_func:is_rail(pointed_thing.above) then
+ minetest.env:add_entity(pointed_thing.above, "carts:cart")
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+ end
+ end,
+})
+
+minetest.register_craft({
+ output = "carts:cart",
+ recipe = {
+ {"", "", ""},
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ },
+})
+
+--
+-- Mesecon support
+--
+
+minetest.register_node(":default:rail", {
+ description = "Rail",
+ drawtype = "raillike",
+ tiles = {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
+ inventory_image = "default_rail.png",
+ wield_image = "default_rail.png",
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {bendy=2,snappy=1,dig_immediate=2,attached_node=1,rail=1,connect_to_raillike=1},
+})
+
+minetest.register_node("carts:powerrail", {
+ description = "Powered Rail",
+ drawtype = "raillike",
+ tiles = {"carts_rail_pwr.png", "carts_rail_curved_pwr.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"},
+ inventory_image = "carts_rail_pwr.png",
+ wield_image = "carts_rail_pwr.png",
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {bendy=2,snappy=1,dig_immediate=2,attached_node=1,rail=1,connect_to_raillike=1},
+
+ after_place_node = function(pos, placer, itemstack)
+ if not mesecon then
+ minetest.env:get_meta(pos):set_string("cart_acceleration", "0.5")
+ end
+ end,
+
+ mesecons = {
+ effector = {
+ action_on = function(pos, node)
+ minetest.env:get_meta(pos):set_string("cart_acceleration", "0.5")
+ end,
+
+ action_off = function(pos, node)
+ minetest.env:get_meta(pos):set_string("cart_acceleration", "0")
+ end,
+ },
+ },
+})
+
+minetest.register_node("carts:brakerail", {
+ description = "Brake Rail",
+ drawtype = "raillike",
+ tiles = {"carts_rail_brk.png", "carts_rail_curved_brk.png", "carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png"},
+ inventory_image = "carts_rail_brk.png",
+ wield_image = "carts_rail_brk.png",
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {bendy=2,snappy=1,dig_immediate=2,attached_node=1,rail=1,connect_to_raillike=1},
+
+ after_place_node = function(pos, placer, itemstack)
+ if not mesecon then
+ minetest.env:get_meta(pos):set_string("cart_acceleration", "-0.2")
+ end
+ end,
+
+ mesecons = {
+ effector = {
+ action_on = function(pos, node)
+ minetest.env:get_meta(pos):set_string("cart_acceleration", "-0.2")
+ end,
+
+ action_off = function(pos, node)
+ minetest.env:get_meta(pos):set_string("cart_acceleration", "0")
+ end,
+ },
+ },
+})
+
+minetest.register_craft({
+ output = "carts:powerrail 2",
+ recipe = {
+ {"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot"},
+ {"default:steel_ingot", "default:stick", "default:steel_ingot"},
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ }
+})
+
+minetest.register_craft({
+ output = "carts:powerrail 2",
+ recipe = {
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ {"default:steel_ingot", "default:stick", "default:steel_ingot"},
+ {"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot"},
+ }
+})
+
+minetest.register_craft({
+ output = "carts:brakerail 2",
+ recipe = {
+ {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"},
+ {"default:steel_ingot", "default:stick", "default:steel_ingot"},
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ }
+})
+
+minetest.register_craft({
+ output = "carts:brakerail 2",
+ recipe = {
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ {"default:steel_ingot", "default:stick", "default:steel_ingot"},
+ {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"},
+ }
+})
diff --git a/carts/models/cart.png b/carts/models/cart.png
new file mode 100644
index 0000000..1f9f568
--- /dev/null
+++ b/carts/models/cart.png
Binary files differ
diff --git a/carts/models/cart.x b/carts/models/cart.x
new file mode 100644
index 0000000..3325aaf
--- /dev/null
+++ b/carts/models/cart.x
@@ -0,0 +1,339 @@
+xof 0303txt 0032
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Cube {
+ FrameTransformMatrix {
+ 5.000000, 0.000000,-0.000000, 0.000000,
+ -0.000000, 3.535534, 3.535534, 0.000000,
+ 0.000000,-3.535534, 3.535534, 0.000000,
+ 0.000000,-3.000000, 3.000000, 1.000000;;
+ }
+ Mesh { //Cube_001 Mesh
+ 72;
+ -1.000000; 1.000000;-1.000000;,
+ -1.000000;-1.000000;-1.000000;,
+ 1.000000;-1.000000;-1.000000;,
+ 1.000000; 1.000000;-1.000000;,
+ -0.833334;-1.000000; 1.000000;,
+ -1.000000;-1.000000; 1.000000;,
+ -1.000000;-0.833333; 1.000000;,
+ -0.833334;-0.833333; 1.000000;,
+ -1.000000;-1.000000;-1.000000;,
+ -1.000000;-1.000000; 1.000000;,
+ 0.999999;-1.000001; 1.000000;,
+ 1.000000;-1.000000;-1.000000;,
+ 0.999999;-1.000001; 1.000000;,
+ 0.833332;-1.000000; 1.000000;,
+ 0.833333;-0.833334; 1.000000;,
+ 1.000000;-0.833334; 1.000000;,
+ 0.833332;-1.000000; 1.000000;,
+ -0.833334;-1.000000; 1.000000;,
+ -0.833334;-0.833333; 1.000000;,
+ 0.833333;-0.833334; 1.000000;,
+ 1.000000; 0.833333; 1.000000;,
+ 0.833334; 0.833333; 1.000000;,
+ 0.833334; 1.000000; 1.000000;,
+ 1.000000; 0.999999; 1.000000;,
+ 1.000000;-0.833334; 1.000000;,
+ 0.833333;-0.833334; 1.000000;,
+ 0.833334; 0.833333; 1.000000;,
+ 1.000000; 0.833333; 1.000000;,
+ 0.833334; 0.833333; 1.000000;,
+ -0.833333; 0.833333; 1.000000;,
+ -0.833333; 1.000000; 1.000000;,
+ 0.833334; 1.000000; 1.000000;,
+ 0.833334; 0.833333;-0.800000;,
+ -0.833333; 0.833333;-0.800000;,
+ -0.833333; 0.833333; 1.000000;,
+ 0.833334; 0.833333; 1.000000;,
+ -0.833333; 0.833333; 1.000000;,
+ -1.000000; 0.833333; 1.000000;,
+ -1.000000; 1.000000; 1.000000;,
+ -0.833333; 1.000000; 1.000000;,
+ -0.833334;-0.833333; 1.000000;,
+ -1.000000;-0.833333; 1.000000;,
+ -1.000000; 0.833333; 1.000000;,
+ -0.833333; 0.833333; 1.000000;,
+ 0.833333;-0.833334;-0.800000;,
+ -0.833334;-0.833333;-0.800000;,
+ -0.833333; 0.833333;-0.800000;,
+ 0.833334; 0.833333;-0.800000;,
+ -0.833333; 0.833333;-0.800000;,
+ -0.833334;-0.833333;-0.800000;,
+ -0.833334;-0.833333; 1.000000;,
+ -0.833333; 0.833333; 1.000000;,
+ -0.833334;-0.833333;-0.800000;,
+ 0.833333;-0.833334;-0.800000;,
+ 0.833333;-0.833334; 1.000000;,
+ -0.833334;-0.833333; 1.000000;,
+ 0.833333;-0.833334;-0.800000;,
+ 0.833334; 0.833333;-0.800000;,
+ 0.833334; 0.833333; 1.000000;,
+ 0.833333;-0.833334; 1.000000;,
+ -1.000000; 1.000000;-1.000000;,
+ -1.000000; 1.000000; 1.000000;,
+ -1.000000;-1.000000; 1.000000;,
+ -1.000000;-1.000000;-1.000000;,
+ -1.000000; 1.000000; 1.000000;,
+ -1.000000; 1.000000;-1.000000;,
+ 1.000000; 1.000000;-1.000000;,
+ 1.000000; 0.999999; 1.000000;,
+ 1.000000;-1.000000;-1.000000;,
+ 0.999999;-1.000001; 1.000000;,
+ 1.000000; 0.999999; 1.000000;,
+ 1.000000; 1.000000;-1.000000;;
+ 18;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;;
+ MeshNormals { //Cube_001 Normals
+ 72;
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ -0.000000;-1.000000; 0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 0.000000; 1.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;,
+ 1.000000;-0.000000; 0.000000;;
+ 18;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;;
+ } //End of Cube_001 Normals
+ MeshMaterialList { //Cube_001 Material List
+ 1;
+ 18;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material {
+ 0.640000; 0.640000; 0.640000; 1.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ TextureFilename {"cart.png";}
+ }
+ } //End of Cube_001 Material List
+ MeshTextureCoords { //Cube_001 UV Coordinates
+ 72;
+ 0.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.031250; 0.500000;,
+ -0.000000; 0.500000;,
+ -0.000000; 0.468750;,
+ 0.031250; 0.468750;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.500000;,
+ 0.468750; 0.468750;,
+ 0.500000; 0.468750;,
+ 0.500000; 0.500000;,
+ 0.468750; 0.500000;,
+ 0.031250; 0.468750;,
+ 0.468750; 0.468750;,
+ 0.468750; 0.500000;,
+ 0.031250; 0.500000;,
+ 0.468750; 0.000000;,
+ 0.500000; 0.000000;,
+ 0.500000; 0.031250;,
+ 0.468750; 0.031250;,
+ 0.468750; 0.031250;,
+ 0.500000; 0.031250;,
+ 0.500000; 0.468750;,
+ 0.468750; 0.468750;,
+ 0.468750; 0.031250;,
+ 0.031250; 0.031250;,
+ 0.031250; 0.000000;,
+ 0.468750; 0.000000;,
+ 1.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 0.031250; 0.031250;,
+ 0.000000; 0.031250;,
+ 0.000000; 0.000000;,
+ 0.031250; 0.000000;,
+ 0.031250; 0.468750;,
+ -0.000000; 0.468750;,
+ 0.000000; 0.031250;,
+ 0.031250; 0.031250;,
+ 0.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 1.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.500000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 0.500000;;
+ } //End of Cube_001 UV Coordinates
+ } //End of Cube_001 Mesh
+ } //End of Cube
+} //End of Root Frame
+AnimationSet {
+ Animation {
+ {Cube}
+ AnimationKey { //Position
+ 2;
+ 4;
+ 0;3; 0.000000, 0.000000, 0.000000;;,
+ 1;3; 0.000000, 3.000000, 3.000000;;,
+ 2;3; 0.000000,-3.000000, 3.000000;;,
+ 3;3; 0.000000,-3.000000, 3.000000;;;
+ }
+ AnimationKey { //Rotation
+ 0;
+ 4;
+ 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;,
+ 1;4; -0.923880,-0.382683,-0.000000, 0.000000;;,
+ 2;4; -0.923880, 0.382683, 0.000000, 0.000000;;,
+ 3;4; -0.923880, 0.382683, 0.000000, 0.000000;;;
+ }
+ AnimationKey { //Scale
+ 1;
+ 4;
+ 0;3; 5.000000, 5.000000, 5.000000;;,
+ 1;3; 5.000000, 5.000000, 5.000000;;,
+ 2;3; 5.000000, 5.000000, 5.000000;;,
+ 3;3; 5.000000, 5.000000, 5.000000;;;
+ }
+ }
+} //End of AnimationSet
diff --git a/carts/textures/cart_bottom.png b/carts/textures/cart_bottom.png
new file mode 100644
index 0000000..f84b1ae
--- /dev/null
+++ b/carts/textures/cart_bottom.png
Binary files differ
diff --git a/carts/textures/cart_side.png b/carts/textures/cart_side.png
new file mode 100644
index 0000000..79f6c32
--- /dev/null
+++ b/carts/textures/cart_side.png
Binary files differ
diff --git a/carts/textures/cart_top.png b/carts/textures/cart_top.png
new file mode 100644
index 0000000..8140fc7
--- /dev/null
+++ b/carts/textures/cart_top.png
Binary files differ
diff --git a/carts/textures/carts_rail_brk.png b/carts/textures/carts_rail_brk.png
new file mode 100644
index 0000000..f3e0ff9
--- /dev/null
+++ b/carts/textures/carts_rail_brk.png
Binary files differ
diff --git a/carts/textures/carts_rail_crossing_brk.png b/carts/textures/carts_rail_crossing_brk.png
new file mode 100644
index 0000000..3ace508
--- /dev/null
+++ b/carts/textures/carts_rail_crossing_brk.png
Binary files differ
diff --git a/carts/textures/carts_rail_crossing_pwr.png b/carts/textures/carts_rail_crossing_pwr.png
new file mode 100644
index 0000000..d63f133
--- /dev/null
+++ b/carts/textures/carts_rail_crossing_pwr.png
Binary files differ
diff --git a/carts/textures/carts_rail_curved_brk.png b/carts/textures/carts_rail_curved_brk.png
new file mode 100644
index 0000000..5a84918
--- /dev/null
+++ b/carts/textures/carts_rail_curved_brk.png
Binary files differ
diff --git a/carts/textures/carts_rail_curved_pwr.png b/carts/textures/carts_rail_curved_pwr.png
new file mode 100644
index 0000000..e2ac67a
--- /dev/null
+++ b/carts/textures/carts_rail_curved_pwr.png
Binary files differ
diff --git a/carts/textures/carts_rail_pwr.png b/carts/textures/carts_rail_pwr.png
new file mode 100644
index 0000000..95f33f6
--- /dev/null
+++ b/carts/textures/carts_rail_pwr.png
Binary files differ
diff --git a/carts/textures/carts_rail_t_junction_brk.png b/carts/textures/carts_rail_t_junction_brk.png
new file mode 100644
index 0000000..0c2c1cb
--- /dev/null
+++ b/carts/textures/carts_rail_t_junction_brk.png
Binary files differ
diff --git a/carts/textures/carts_rail_t_junction_pwr.png b/carts/textures/carts_rail_t_junction_pwr.png
new file mode 100644
index 0000000..7f97fc7
--- /dev/null
+++ b/carts/textures/carts_rail_t_junction_pwr.png
Binary files differ
diff --git a/castle/LICENSE b/castle/LICENSE
new file mode 100644
index 0000000..ef7e7ef
--- /dev/null
+++ b/castle/LICENSE
@@ -0,0 +1,674 @@
+GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {one line to give the program's name and a brief idea of what it does.}
+ Copyright (C) {year} {name of author}
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ {project} Copyright (C) {year} {fullname}
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/castle/README.txt b/castle/README.txt
new file mode 100644
index 0000000..9dc3b4a
--- /dev/null
+++ b/castle/README.txt
@@ -0,0 +1,35 @@
+=-=-=-=-=-=-=-=-=-=
+
+Castles Mod
+by: Philipbenr And DanDuncombe
+
+=-=-=-=-=-=-=-=-=-=
+
+Licence: GPLv3
+
+see: LICENSE
+
+=-=-=-=-=-=-=-=-=-=
+
+This is a mod all about creating castles and castle dungeons. Many of the nodes are used for the outer-walls or dungeons.
+
+=-=-=-=-=-=-=-=-=-=
+
+Contains as of now:
+
+--Walls, Corner-walls,
+--Castlestone Stairs, Slabs, and Pillars
+--Jailbars
+--Hides
+--Arrowslits
+--Rubble (for between walls)
+--Doors
+--and more!
+
+=-=-=-=-=-=-=-=-=-=
+" Although crossbows have been removed, along with arrows, the code is still there.
+ To get the crossbows back, look in init.lua. You will see at the top some lines
+ with dofile in them. Copy and paste two more of these lines, and change them to
+ crossbow.lua and arrow.lua to get them back. "
+
+I, (philipbenr) will take a look at the arrows and crossbows, and see about this.
diff --git a/castle/arrow.lua b/castle/arrow.lua
new file mode 100644
index 0000000..c135f5f
--- /dev/null
+++ b/castle/arrow.lua
@@ -0,0 +1,92 @@
+minetest.register_craftitem("castle:arrow", {
+ description = "Arrow",
+ inventory_image = "castle_arrow.png",
+})
+
+minetest.register_node("castle:arrow_box", {
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ -- Shaft
+ {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17},
+ --Spitze
+ {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17},
+ {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17},
+ --Federn
+ {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17},
+ {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17},
+ {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17},
+ {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17},
+
+ {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17},
+ {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17},
+ {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17},
+ {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17},
+ }
+ },
+ tiles = {"castle_arrow.png", "castle_arrow.png", "castle_arrow_back.png", "castle_arrow_front.png", "castle_arrow_2.png", "castle_arrow.png"},
+ groups = {not_in_creative_inventory=1},
+})
+
+local castle_ARROW_ENTITY={
+ physical = false,
+ timer=0,
+ visual = "wielditem",
+ visual_size = {x=0.1, y=0.1},
+ textures = {"castle:arrow_box"},
+ lastpos={},
+ collisionbox = {0,0,0,0,0,0},
+}
+
+castle_ARROW_ENTITY.on_step = function(self, dtime)
+ self.timer=self.timer+dtime
+ local pos = self.object:getpos()
+ local node = minetest.get_node(pos)
+
+ if self.timer>0.2 then
+ local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
+ for k, obj in pairs(objs) do
+ if obj:get_luaentity() ~= nil then
+ if obj:get_luaentity().name ~= "castle:arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then
+ local damage = 3
+ obj:punch(self.object, 1.0, {
+ full_punch_interval=1.0,
+ groupcaps={
+ fleshy={times={[1]=1/(damage-2), [2]=1/(damage-1), [3]=1/damage}},
+ snappy={times={[1]=1/(damage-2), [2]=1/(damage-1), [3]=1/damage}},
+ }
+ }, nil)
+ self.object:remove()
+ end
+ else
+ local damage = 3
+ obj:punch(self.object, 1.0, {
+ full_punch_interval=1.0,
+ groupcaps={
+ fleshy={times={[1]=1/(damage-2), [2]=1/(damage-1), [3]=1/damage}},
+ snappy={times={[1]=1/(damage-2), [2]=1/(damage-1), [3]=1/damage}},
+ }
+ }, nil)
+ self.object:remove()
+ end
+ end
+ end
+
+ if self.lastpos.x~=nil then
+ if node.name ~= "air" then
+ minetest.add_item(self.lastpos, 'castle:arrow')
+ self.object:remove()
+ end
+ end
+ self.lastpos={x=pos.x, y=pos.y, z=pos.z}
+end
+
+minetest.register_entity("castle:arrow_entity", castle_ARROW_ENTITY)
+
+minetest.register_craft({
+ output = 'castle:arrow 16',
+ recipe = {
+ {'default:stick', 'default:stick', 'default:steel_ingot'},
+ }
+})
diff --git a/castle/arrowslit.lua b/castle/arrowslit.lua
new file mode 100644
index 0000000..76cabb7
--- /dev/null
+++ b/castle/arrowslit.lua
@@ -0,0 +1,133 @@
+minetest.register_alias("castle:arrowslit", "castle:arrowslit_stonewall")
+minetest.register_alias("castle:arrowslit_hole", "castle:arrowslit_stonewall_hole")
+minetest.register_alias("castle:arrowslit", "castle:arrowslit_stonewall_cross")
+
+local arrowslit = {}
+
+arrowslit.types = {
+ {"stonewall", "Stonewall", "castle_stonewall", "castle:stonewall"},
+ {"cobble", "Cobble", "default_cobble", "default:cobble"},
+ {"stonebrick", "Stonebrick", "default_stone_brick", "default:stonebrick"},
+ {"sandstonebrick", "Sandstone Brick", "default_sandstone_brick", "default:sandstonebrick"},
+ {"desertstonebrick", "Desert Stone Brick", "default_desert_stone_brick", "default:desert_stonebrick"},
+ {"stone", "Stone", "default_stone", "default:stone"},
+ {"sandstone", "Sandstone", "default_sandstone", "default:sandstone"},
+ {"desertstone", "Desert Stone", "default_desert_stone", "default:desert_stone"},
+}
+
+for _, row in ipairs(arrowslit.types) do
+ local name = row[1]
+ local desc = row[2]
+ local tile = row[3]
+ local craft_material = row[4]
+ -- Node Definition
+ minetest.register_node("castle:arrowslit_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Arrowslit",
+ tiles = {tile..".png"},
+ groups = {cracky=3},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.375000,-0.500000,-0.062500,0.375000,-0.312500},
+ {0.062500,-0.375000,-0.500000,0.500000,0.375000,-0.312500},
+ {-0.500000,0.375000,-0.500000,0.500000,0.500000,-0.312500},
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.375000,-0.312500},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.312500},
+ },
+ },
+ })
+ minetest.register_node("castle:arrowslit_"..name.."_cross", {
+ drawtype = "nodebox",
+ description = desc.." Arrowslit with Cross",
+ tiles = {tile..".png"},
+ groups = {cracky=3},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.125000,-0.500000,-0.062500,0.375000,-0.312500},
+ {0.062500,-0.125000,-0.500000,0.500000,0.375000,-0.312500},
+ {-0.500000,0.375000,-0.500000,0.500000,0.500000,-0.312500},
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.375000,-0.312500},
+ {0.062500,-0.375000,-0.500000,0.500000,-0.250000,-0.312500},
+ {-0.500000,-0.375000,-0.500000,-0.062500,-0.250000,-0.312500},
+ {-0.500000,-0.250000,-0.500000,-0.187500,-0.125000,-0.312500},
+ {0.187500,-0.250000,-0.500000,0.500000,-0.125000,-0.312500},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.312500},
+ },
+ },
+ })
+ minetest.register_node("castle:arrowslit_"..name.."_hole", {
+ drawtype = "nodebox",
+ description = desc.." Arrowslit with Hole",
+ tiles = {tile..".png"},
+ groups = {cracky=3},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.375000,-0.500000,-0.125000,0.375000,-0.312500},
+ {0.125000,-0.375000,-0.500000,0.500000,0.375000,-0.312500},
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.375000,-0.312500},
+ {0.062500,-0.125000,-0.500000,0.125000,0.375000,-0.312500},
+ {-0.125000,-0.125000,-0.500000,-0.062500,0.375000,-0.312500},
+ {-0.500000,0.375000,-0.500000,0.500000,0.500000,-0.312500},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.312500},
+ },
+ },
+ })
+ if craft_material then
+ --Choose craft material
+ minetest.register_craft({
+ output = "castle:arrowslit_"..name.." 6",
+ recipe = {
+ {craft_material,"", craft_material},
+ {craft_material,"", craft_material},
+ {craft_material,"", craft_material} },
+ })
+ end
+ if craft_material then
+ minetest.register_craft({
+ output = "castle:arrowslit_"..name.."_cross",
+ recipe = {
+ {"castle:arrowslit_"..name} },
+ })
+ end
+ if craft_material then
+ minetest.register_craft({
+ output = "castle:arrowslit_"..name.."_hole",
+ recipe = {
+ {"castle:arrowslit_"..name.."_cross"} },
+ })
+ end
+ if craft_material then
+ minetest.register_craft({
+ output = "castle:arrowslit_"..name,
+ recipe = {
+ {"castle:arrowslit_"..name.."_hole"} },
+ })
+ end
+end
diff --git a/castle/crossbow.lua b/castle/crossbow.lua
new file mode 100644
index 0000000..f0ecda4
--- /dev/null
+++ b/castle/crossbow.lua
@@ -0,0 +1,48 @@
+arrows = {
+ {"castle:arrow", "castle:arrow_entity"},
+}
+
+local castle_shoot_arrow = function(itemstack, player)
+ for _,arrow in ipairs(arrows) do
+ if player:get_inventory():get_stack("main", player:get_wield_index()+1):get_name() == arrow[1] then
+ if not minetest.setting_getbool("creative_mode") then
+ player:get_inventory():remove_item("main", arrow[1])
+ end
+ local playerpos = player:getpos()
+ local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2])
+ local dir = player:get_look_dir()
+ obj:setvelocity({x=dir.x*19, y=dir.y*19, z=dir.z*19})
+ obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3})
+ obj:setyaw(player:get_look_yaw()+math.pi)
+ minetest.sound_play("castle_sound", {pos=playerpos})
+ if obj:get_luaentity().player == "" then
+ obj:get_luaentity().player = player
+ end
+ obj:get_luaentity().node = player:get_inventory():get_stack("main", 1):get_name()
+ return true
+ end
+ end
+ return false
+end
+minetest.register_tool("castle:crossbow", {
+ description = "Crossbow",
+ inventory_image = "castle_crossbow.png",
+ stack_max = 1,
+ on_use = function(itemstack, user, pointed_thing)
+ if castle_shoot_arrow(item, user, pointed_thing) then
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:add_wear(65535/200)
+ end
+ end
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = 'castle:crossbow',
+ recipe = {
+ {'default:steel_ingot', 'default:stick', 'default:steel_ingot'},
+ {'farming:string', 'farming:string', 'farming:string'},
+ {'', 'default:stick', ''},
+ }
+})
diff --git a/castle/depends.txt b/castle/depends.txt
new file mode 100644
index 0000000..433156d
--- /dev/null
+++ b/castle/depends.txt
@@ -0,0 +1,8 @@
+default
+stairs
+doors
+farming
+building_blocks?
+asphalt?
+streets?
+moreblocks?
diff --git a/castle/init.lua b/castle/init.lua
new file mode 100644
index 0000000..7814df4
--- /dev/null
+++ b/castle/init.lua
@@ -0,0 +1,469 @@
+dofile(minetest.get_modpath("castle").."/pillars.lua")
+dofile(minetest.get_modpath("castle").."/arrowslit.lua")
+dofile(minetest.get_modpath("castle").."/tapestry.lua")
+dofile(minetest.get_modpath("castle").."/jailbars.lua")
+dofile(minetest.get_modpath("castle").."/town_item.lua")
+dofile(minetest.get_modpath("castle").."/shields_decor.lua")
+dofile(minetest.get_modpath("castle").."/murder_hole.lua")
+dofile(minetest.get_modpath("castle").."/orbs.lua")
+dofile(minetest.get_modpath("castle").."/rope.lua")
+
+minetest.register_node("castle:stonewall", {
+ description = "Castle Wall",
+ drawtype = "normal",
+ tiles = {"castle_stonewall.png"},
+ paramtype = light,
+ drop = "castle:stonewall",
+ groups = {cracky=3},
+
+})
+
+minetest.register_node("castle:rubble", {
+ description = "Castle Rubble",
+ drawtype = "normal",
+ tiles = {"castle_rubble.png"},
+ paramtype = light,
+ groups = {crumbly=3,falling_node=1},
+})
+
+minetest.register_craft({
+ output = "castle:stonewall",
+ recipe = {
+ {"default:cobble"},
+ {"default:desert_stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "castle:rubble",
+ recipe = {
+ {"castle:stonewall"},
+ }
+})
+
+minetest.register_craft({
+ output = "castle:rubble 2",
+ recipe = {
+ {"default:gravel"},
+ {"default:desert_stone"},
+ }
+})
+
+minetest.register_node("castle:stonewall_corner", {
+ drawtype = "normal",
+ paramtype = light,
+ paramtype2 = "facedir",
+ description = "Castle Corner",
+ tiles = {"castle_stonewall.png",
+ "castle_stonewall.png",
+ "castle_corner_stonewall1.png",
+ "castle_stonewall.png",
+ "castle_stonewall.png",
+ "castle_corner_stonewall2.png"},
+ groups = {cracky=3},
+})
+
+minetest.register_craft({
+ output = "castle:stonewall_corner",
+ recipe = {
+ {"", "castle:stonewall"},
+ {"castle:stonewall", "default:sandstone"},
+ }
+})
+
+minetest.register_node("castle:roofslate", {
+ drawtype = "raillike",
+ description = "Roof Slates",
+ inventory_image = "castle_slate.png",
+ paramtype = "light",
+ walkable = false,
+ tiles = {'castle_slate.png'},
+ climbable = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {cracky=3,attached_node=1},
+})
+
+minetest.register_node("castle:hides", {
+ drawtype = "signlike",
+ description = "Hides",
+ inventory_image = "castle_hide.png",
+ paramtype = "light",
+ walkable = false,
+ tiles = {'castle_hide.png'},
+ climbable = true,
+ paramtype2 = "wallmounted",
+ legacy_wallmounted = true,
+ groups = {dig_immediate=2},
+ selection_box = {
+ type = "wallmounted",
+ },
+})
+
+
+minetest.register_craft({
+ output = "castle:hides",
+ recipe = {
+ {"wool:white"},
+ {"bucket:bucket_water"},
+ }
+})
+
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "castle:hides 6",
+ recipe = { "wool:white" , "bucket:bucket_water" },
+ replacements = {
+ { 'bucket:bucket_water', 'bucket:bucket_empty' }
+ }
+} )
+
+local mod_building_blocks = minetest.get_modpath("building_blocks")
+local mod_streets = minetest.get_modpath("streets") or minetest.get_modpath("asphalt")
+
+if mod_building_blocks then
+ minetest.register_craft( {
+ output = "castle:roofslate 4",
+ recipe = {
+ { "building_blocks:Tar" , "default:gravel" },
+ { "default:gravel", "building_blocks:Tar" }
+ }
+ })
+
+ minetest.register_craft( {
+ output = "castle:roofslate 4",
+ recipe = {
+ { "default:gravel", "building_blocks:Tar" },
+ { "building_blocks:Tar" , "default:gravel" }
+ }
+ })
+end
+
+if mod_streets then
+ minetest.register_craft( {
+ output = "castle:roofslate 4",
+ recipe = {
+ { "streets:asphalt" , "default:gravel" },
+ { "default:gravel", "streets:asphalt" }
+ }
+ })
+
+ minetest.register_craft( {
+ output = "castle:roofslate 4",
+ recipe = {
+ { "default:gravel", "streets:asphalt" },
+ { "streets:asphalt" , "default:gravel" }
+ }
+ })
+end
+
+if not (mod_building_blocks or mod_streets) then
+ minetest.register_craft({
+ type = "cooking",
+ output = "castle:roofslate",
+ recipe = "default:gravel",
+ })
+
+end
+
+stairs.register_stair_and_slab("stonewall", "castle:stonewall",
+ {cracky=3},
+ {"castle_stonewall.png"},
+ "Castle Wall Stair",
+ "Castle Wall Slab",
+ default.node_sound_stone_defaults())
+
+minetest.register_craft({
+ output = "castle:stairs 4",
+ recipe = {
+ {"castle:stonewall","",""},
+ {"castle:stonewall","castle:stonewall",""},
+ {"castle:stonewall","castle:stonewall","castle:stonewall"},
+ }
+})
+
+minetest.register_craft({
+ output = "stairs:stair_stonewall 4",
+ recipe = {
+ {"","","castle:stonewall"},
+ {"","castle:stonewall","castle:stonewall"},
+ {"castle:stonewall","castle:stonewall","castle:stonewall"},
+ }
+})
+
+minetest.register_craft({
+ output = "stairs:slab_stonewall 6",
+ recipe = {
+ {"castle:stonewall","castle:stonewall","castle:stonewall"},
+ }
+})
+
+doors.register_door("castle:oak_door", {
+ description = "Oak Door",
+ inventory_image = "castle_oak_door_inv.png",
+ groups = {choppy=2,door=1},
+ tiles_bottom = {"castle_oak_door_bottom.png", "door_oak.png"},
+ tiles_top = {"castle_oak_door_top.png", "door_oak.png"},
+ only_placer_can_open = true,
+})
+
+doors.register_door("castle:jail_door", {
+ description = "Jail Door",
+ inventory_image = "castle_jail_door_inv.png",
+ groups = {cracky=2,door=1},
+ tiles_bottom = {"castle_jail_door_bottom.png", "door_jail.png"},
+ tiles_top = {"castle_jail_door_top.png", "door_jail.png"},
+ only_placer_can_open = true,
+})
+
+minetest.register_craft({
+ output = "castle:oak_door",
+ recipe = {
+ {"default:tree", "default:tree"},
+ {"default:tree", "default:tree"},
+ {"default:tree", "default:tree"}
+ }
+})
+
+minetest.register_craft({
+ output = "castle:jail_door",
+ recipe = {
+ {"castle:jailbars", "castle:jailbars"},
+ {"castle:jailbars", "castle:jailbars"},
+ {"castle:jailbars", "castle:jailbars"}
+ }
+})
+
+function default.get_ironbound_chest_formspec(pos)
+ local spos = pos.x .. "," .. pos.y .. "," ..pos.z
+ local formspec =
+ "size[8,9]"..
+ "list[nodemeta:".. spos .. ";main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]"
+ return formspec
+end
+
+local function has_ironbound_chest_privilege(meta, player)
+ if player:get_player_name() ~= meta:get_string("owner") then
+ return false
+ end
+ return true
+end
+
+minetest.register_node("castle:ironbound_chest",{
+ drawtype = "nodebox",
+ description = "Ironbound Chest",
+ tiles = {"castle_ironbound_chest_top.png",
+ "castle_ironbound_chest_top.png",
+ "castle_ironbound_chest_side.png",
+ "castle_ironbound_chest_side.png",
+ "castle_ironbound_chest_back.png",
+ "castle_ironbound_chest_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.312500,0.500000,-0.062500,0.312500},
+ {-0.500000,-0.062500,-0.250000,0.500000,0.000000,0.250000},
+ {-0.500000,0.000000,-0.187500,0.500000,0.062500,0.187500},
+ {-0.500000,0.062500,-0.062500,0.500000,0.125000,0.062500},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.500000,-0.400000,0.5,0.200000,0.4},
+
+ },
+ },
+ sounds = default.node_sound_wood_defaults(),
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name() or "")
+ meta:set_string("infotext", "Ironbound Chest (owned by "..
+ meta:get_string("owner")..")")
+ end,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Ironbound Chest")
+ meta:set_string("owner", "")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main") and has_ironbound_chest_privilege(meta, player)
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if not has_ironbound_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not has_ironbound_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not has_ironbound_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in locked chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to locked chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from locked chest at "..minetest.pos_to_string(pos))
+ end,
+ on_rightclick = function(pos, node, clicker)
+ local meta = minetest.get_meta(pos)
+ if has_ironbound_chest_privilege(meta, clicker) then
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ "castle:ironbound_chest",
+ default.get_ironbound_chest_formspec(pos)
+ )
+ end
+ end,
+})
+
+minetest.register_craft({
+ output = "castle:ironbound_chest",
+ recipe = {
+ {"default:wood", "default:steel_ingot","default:wood"},
+ {"default:wood", "default:steel_ingot","default:wood"}
+ }
+})
+
+minetest.register_tool("castle:battleaxe", {
+ description = "Battleaxe",
+ inventory_image = "castle_battleaxe.png",
+ tool_capabilities = {
+ full_punch_interval = 2.0,
+ max_drop_level=1,
+ groupcaps={
+ choppy={times={[1]=2.10, [2]=0.90, [3]=0.50}, uses=20, maxlevel=3},
+ snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=20, maxlevel=3},
+ },
+ damage_groups = {fleshy=7},
+ },
+})
+minetest.register_craft({
+ output = "castle:battleaxe",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
+ {"default:steel_ingot", "default:stick","default:steel_ingot"},
+ {"", "default:stick",""}
+ }
+})
+
+if minetest.get_modpath("moreblocks") then
+
+ stairsplus:register_all("castle", "dungeon_stone", "castle:dungeon_stone", {
+ description = "Dungeon Stone",
+ tiles = {"castle_dungeon_stone.png"},
+ groups = {cracky=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("castle", "pavement_brick", "castle:pavement_brick", {
+ description = "Pavement Brick",
+ tiles = {"castle_pavement_brick.png"},
+ groups = {cracky=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("castle", "stonewall", "castle:stonewall", {
+ description = "Stone Wall",
+ tiles = {"castle_stonewall.png"},
+ groups = {cracky=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("castle", "rubble", "castle:rubble", {
+ description = "Rubble",
+ tiles = {"castle_rubble.png"},
+ groups = {cracky=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+ end
+
+stairs.register_stair_and_slab("dungeon_stone", "castle:dungeon_stone",
+ {cracky=3},
+ {"castle_dungeon_stone.png"},
+ "Dungeon Stone Stair",
+ "Dungeon Stone Slab",
+ default.node_sound_stone_defaults())
+
+stairs.register_stair_and_slab("castle_pavement_brick", "castle:pavement_brick",
+ {cracky=3},
+ {"castle_pavement_brick.png"},
+ "Castle Pavement Stair",
+ "Castle Pavement Slab",
+ default.node_sound_stone_defaults())
+
+minetest.register_craft({
+ output = "stairs:slab_dungeon_stone 6",
+ recipe = {
+ {"castle:dungeon_stone","castle:dungeon_stone","castle:dungeon_stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "stairs:slab_pavement_brick 6",
+ recipe = {
+ {"castle:pavement_brick","castle:pavement_brick","castle:pavement_brick"},
+ }
+})
+
+minetest.register_craft({
+ output = "stairs:stair_dungeon_stone 4",
+ recipe = {
+ {"","","castle:dungeon_stone"},
+ {"","castle:dungeon_stone","castle:dungeon_stone"},
+ {"castle:dungeon_stone","castle:dungeon_stone","castle:dungeon_stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "stairs:stair_pavement_brick 4",
+ recipe = {
+ {"","","castle:pavement_brick"},
+ {"","castle:pavement_brick","castle:pavement_brick"},
+ {"castle:pavement_brick","castle:pavement_brick","castle:pavement_brick"},
+ }
+})
diff --git a/castle/jailbars.lua b/castle/jailbars.lua
new file mode 100644
index 0000000..2bc6d66
--- /dev/null
+++ b/castle/jailbars.lua
@@ -0,0 +1,113 @@
+-- xjailbarss mod by xyz
+
+local function rshift(x, by)
+ return math.floor(x / 2 ^ by)
+end
+
+local directions = {
+ {x = 1, y = 0, z = 0},
+ {x = 0, y = 0, z = 1},
+ {x = -1, y = 0, z = 0},
+ {x = 0, y = 0, z = -1},
+}
+
+local function update_jailbars(pos)
+ if minetest.get_node(pos).name:find("castle:jailbars") == nil then
+ return
+ end
+ local sum = 0
+ for i = 1, 4 do
+ local node = minetest.get_node({x = pos.x + directions[i].x, y = pos.y + directions[i].y, z = pos.z + directions[i].z})
+ if minetest.registered_nodes[node.name].walkable ~= false then
+ sum = sum + 2 ^ (i - 1)
+ end
+ end
+ if sum == 0 then
+ sum = 15
+ end
+ minetest.add_node(pos, {name = "castle:jailbars_"..sum})
+end
+
+local function update_nearby(pos)
+ for i = 1,4 do
+ update_jailbars({x = pos.x + directions[i].x, y = pos.y + directions[i].y, z = pos.z + directions[i].z})
+ end
+end
+
+local half_blocks = {
+ {0, -0.5, -0.06, 0.5, 0.5, 0.06},
+ {-0.06, -0.5, 0, 0.06, 0.5, 0.5},
+ {-0.5, -0.5, -0.06, 0, 0.5, 0.06},
+ {-0.06, -0.5, -0.5, 0.06, 0.5, 0}
+}
+
+local full_blocks = {
+ {-0.5, -0.5, -0.06, 0.5, 0.5, 0.06},
+ {-0.06, -0.5, -0.5, 0.06, 0.5, 0.5}
+}
+
+for i = 1, 15 do
+ local need = {}
+ local cnt = 0
+ for j = 1, 4 do
+ if rshift(i, j - 1) % 2 == 1 then
+ need[j] = true
+ cnt = cnt + 1
+ end
+ end
+ local take = {}
+ if need[1] == true and need[3] == true then
+ need[1] = nil
+ need[3] = nil
+ table.insert(take, full_blocks[1])
+ end
+ if need[2] == true and need[4] == true then
+ need[2] = nil
+ need[4] = nil
+ table.insert(take, full_blocks[2])
+ end
+ for k in pairs(need) do
+ table.insert(take, half_blocks[k])
+ end
+ local texture = "castle_jailbars.png"
+ if cnt == 1 then
+ texture = "castle_jailbars.png"
+ end
+ minetest.register_node("castle:jailbars_"..i, {
+ drawtype = "nodebox",
+ tiles = {"castle_grey.png", "castle_grey.png", texture},
+ paramtype = "light",
+ groups = {cracky=2},
+ drop = "castle:jailbars",
+ node_box = {
+ type = "fixed",
+ fixed = take
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = take
+ }
+ })
+end
+
+minetest.register_node("castle:jailbars", {
+ description = "Jailbars",
+ tiles = {"castle_space.png"},
+ inventory_image = "castle_jailbars.png",
+ wield_image = "castle_jailbars.png",
+ node_placement_prediction = "",
+ on_construct = update_jailbars
+})
+
+minetest.register_on_placenode(update_nearby)
+minetest.register_on_dignode(update_nearby)
+
+minetest.register_craft({
+ output = "castle:jailbars 12",
+ recipe = {
+ {"default:steel_ingot","","default:steel_ingot"},
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
+ {"default:steel_ingot","","default:steel_ingot"},
+ }
+})
+
diff --git a/castle/murder_hole.lua b/castle/murder_hole.lua
new file mode 100644
index 0000000..cf2fab6
--- /dev/null
+++ b/castle/murder_hole.lua
@@ -0,0 +1,50 @@
+local hole = {}
+
+hole.types = {
+ {"stonewall", "Stonewall", "castle_stonewall", "castle:stonewall"},
+ {"cobble", "Cobble", "default_cobble", "default:cobble"},
+ {"stonebrick", "Stonebrick", "default_stone_brick", "default:stonebrick"},
+ {"sandstonebrick", "Sandstone Brick", "default_sandstone_brick", "default:sandstonebrick"},
+ {"desertstonebrick", "Desert Stone Brick", "default_desert_stone_brick", "default:desert_stonebrick"},
+ {"stone", "Stone", "default_stone", "default:stone"},
+ {"sandstone", "Sandstone", "default_sandstone", "default:sandstone"},
+ {"desertstone", "Desert Stone", "default_desert_stone", "default:desert_stone"},
+}
+
+for _, row in ipairs(hole.types) do
+ local name = row[1]
+ local desc = row[2]
+ local tile = row[3]
+ local craft_material = row[4]
+ -- Node Definition
+ minetest.register_node("castle:hole_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Murder Hole",
+ tiles = {tile..".png"},
+ groups = {cracky=3},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-8/16,-8/16,-8/16,-4/16,8/16,8/16},
+ {4/16,-8/16,-8/16,8/16,8/16,8/16},
+ {-4/16,-8/16,-8/16,4/16,8/16,-4/16},
+ {-4/16,-8/16,8/16,4/16,8/16,4/16},
+
+ },
+ },
+ })
+ if craft_material then
+ --Choose craft material
+ minetest.register_craft({
+ output = "castle:hole_"..name.." 4",
+ recipe = {
+ {"",craft_material, "" },
+ {craft_material,"", craft_material},
+ {"",craft_material, ""} },
+ })
+ end
+end
+
diff --git a/castle/orbs.lua b/castle/orbs.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/castle/orbs.lua
diff --git a/castle/pillars.lua b/castle/pillars.lua
new file mode 100644
index 0000000..4024390
--- /dev/null
+++ b/castle/pillars.lua
@@ -0,0 +1,103 @@
+minetest.register_alias("castle:pillars_bottom", "castle:pillars_stonewall_bottom")
+minetest.register_alias("castle:pillars_top", "castle:pillars_stonewall_top")
+minetest.register_alias("castle:pillars_middle", "castle:pillars_stonewall_middle")
+
+local pillar = {}
+
+pillar.types = {
+ {"stonewall", "Stonewall", "castle_stonewall", "castle:stonewall"},
+ {"cobble", "Cobble", "default_cobble", "default:cobble"},
+ {"stonebrick", "Stonebrick", "default_stone_brick", "default:stonebrick"},
+ {"sandstonebrick", "Sandstone Brick", "default_sandstone_brick", "default:sandstonebrick"},
+ {"desertstonebrick", "Desert Stone Brick", "default_desert_stone_brick", "default:desert_stonebrick"},
+ {"stone", "Stone", "default_stone", "default:stone"},
+ {"sandstone", "Sandstone", "default_sandstone", "default:sandstone"},
+ {"desertstone", "Desert Stone", "default_desert_stone", "default:desert_stone"},
+}
+
+for _, row in ipairs(pillar.types) do
+ local name = row[1]
+ local desc = row[2]
+ local tile = row[3]
+ local craft_material = row[4]
+ -- Node Definition
+ minetest.register_node("castle:pillars_"..name.."_bottom", {
+ drawtype = "nodebox",
+ description = desc.." Pillar Base",
+ tiles = {tile..".png"},
+ groups = {cracky=3,attached_node=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.375000,0.500000},
+ {-0.375000,-0.375000,-0.375000,0.375000,-0.125000,0.375000},
+ {-0.250000,-0.125000,-0.250000,0.250000,0.500000,0.250000},
+ },
+ },
+ })
+ minetest.register_node("castle:pillars_"..name.."_top", {
+ drawtype = "nodebox",
+ description = desc.." Pillar Top",
+ tiles = {tile..".png"},
+ groups = {cracky=3,attached_node=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.312500,-0.500000,0.500000,0.500000,0.500000},
+ {-0.375000,0.062500,-0.375000,0.375000,0.312500,0.375000},
+ {-0.250000,-0.500000,-0.250000,0.250000,0.062500,0.250000},
+ },
+ },
+ })
+ minetest.register_node("castle:pillars_"..name.."_middle", {
+ drawtype = "nodebox",
+ description = desc.." Pillar Middle",
+ tiles = {tile..".png"},
+ groups = {cracky=3,attached_node=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.250000,-0.500000,-0.250000,0.250000,0.500000,0.250000},
+ },
+ },
+ })
+ if craft_material then
+ --Choose craft material
+ minetest.register_craft({
+ output = "castle:pillars_"..name.."_bottom 4",
+ recipe = {
+ {"",craft_material,""},
+ {"",craft_material,""},
+ {craft_material,craft_material,craft_material} },
+ })
+ end
+ if craft_material then
+ --Choose craft material
+ minetest.register_craft({
+ output = "castle:pillars_"..name.."_top 4",
+ recipe = {
+ {craft_material,craft_material,craft_material},
+ {"",craft_material,""},
+ {"",craft_material,""} },
+ })
+ end
+ if craft_material then
+ --Choose craft material
+ minetest.register_craft({
+ output = "castle:pillars_"..name.."_middle 4",
+ recipe = {
+ {craft_material,craft_material},
+ {craft_material,craft_material},
+ {craft_material,craft_material} },
+ })
+ end
+end
diff --git a/castle/rope.lua b/castle/rope.lua
new file mode 100644
index 0000000..23ebea8
--- /dev/null
+++ b/castle/rope.lua
@@ -0,0 +1,121 @@
+minetest.register_node("castle:ropes",{
+ description = "Rope",
+ drawtype = "nodebox",
+ sunlight_propagates = true,
+ tiles = {"castle_ropes.png"},
+ groups = {choppy=3,snappy=3,oddly_breakable_by_hand=3,flammable=1},
+ paramtype = "light",
+ climbable = true,
+ walkable = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
+ },
+ },
+})
+
+minetest.register_craft({
+ output = "castle:ropes",
+ recipe = {
+ {"farming:string"},
+ {"farming:string"},
+ {"farming:string"},
+ }
+})
+
+minetest.register_node("castle:box_rope", {
+ description = "Rope from Ropebox",
+ drawtype = "nodebox",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"castle_ropes.png"},
+ groups = {not_in_creative_inventory=1},
+ climbable = true,
+ walkable = false,
+ diggable = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
+ },
+ },
+ after_destruct = function(pos,oldnode)
+ local node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
+ if node.name == "castle:box_rope" then
+ minetest.remove_node({x=pos.x,y=pos.y-1,z=pos.z})
+ end
+ end,
+})
+
+minetest.register_node("castle:ropebox", {
+ description = "Ropebox",
+ drawtype = "nodebox",
+ sunlight_propagates = true,
+ tiles = {"castle_ropebox_top.png",
+ "castle_ropebox_top.png",
+ "castle_ropebox_side_1.png",
+ "castle_ropebox_side_1.png",
+ "castle_ropebox_side_2.png",
+ "castle_ropebox_side_2.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {choppy=3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-2/16, -2/16, -4/16, 2/16, 2/16, 4/16},
+ {-2/16, -4/16, -2/16, 2/16, 4/16, 2/16},
+ {-2/16, -3/16, -3/16, 2/16, 3/16, 3/16},
+ {-3/16, -2/16, -2/16, -2/16, 8/16, 2/16},
+ {2/16, -2/16, -2/16, 3/16, 8/16, 2/16},
+ {-1/16, -8/16, -1/16, 1/16, -4/16, 1/16},
+ },
+ },
+ after_destruct = function(pos,oldnode)
+ local node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
+ if node.name == "castle:box_rope" then
+ minetest.remove_node({x=pos.x,y=pos.y-1,z=pos.z})
+ end
+ end,
+})
+
+minetest.register_abm({
+ nodenames = {"castle:ropebox"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node)
+ if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= 'air' then return end
+ minetest.add_node({x=pos.x,y=pos.y-1,z=pos.z}, {name="castle:box_rope"})
+ end
+})
+
+minetest.register_abm({
+ nodenames = {"castle:box_rope"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node)
+ if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= 'air' then return end
+ minetest.add_node({x=pos.x,y=pos.y-1,z=pos.z}, {name="castle:box_rope"})
+ end
+})
+
+minetest.register_craft({
+ output = "castle:ropebox",
+ recipe = {
+ {"default:wood"},
+ {"castle:ropes"},
+ }
+})
diff --git a/castle/shields_decor.lua b/castle/shields_decor.lua
new file mode 100644
index 0000000..0772f41
--- /dev/null
+++ b/castle/shields_decor.lua
@@ -0,0 +1,100 @@
+minetest.register_node("castle:shield",{
+ description = "Mounted Shield",
+ tiles = {"castle_shield_side.png", "castle_shield_side.png", "castle_shield_side.png", "castle_shield_side.png", "castle_shield_back.png", "castle_shield_front.png"},
+ drawtype="nodebox",
+ paramtype2 = "facedir",
+ paramtype = "light",
+ groups={cracky=3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.125000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
+ {-0.437500,-0.312500,0.375000,0.425000,0.500000,0.500000}, --NodeBox 2
+ {-0.312500,-0.437500,0.375000,0.312500,0.500000,0.500000}, --NodeBox 3
+ {-0.187500,-0.500000,0.375000,0.187500,0.500000,0.500000}, --NodeBox 4
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
+ },
+ },
+})
+
+
+minetest.register_craft({
+ output = "castle:shield",
+ recipe = {
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
+ {"dye:red", "default:steel_ingot","dye:blue"},
+ }
+})
+
+minetest.register_node("castle:shield_2",{
+ description = "Mounted Shield",
+ tiles = {"castle_shield_side_2.png", "castle_shield_side_2.png", "castle_shield_side_2.png", "castle_shield_side_2.png", "castle_shield_back.png", "castle_shield_front_2.png"},
+ drawtype="nodebox",
+ paramtype2 = "facedir",
+ paramtype = "light",
+ groups={cracky=3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.125000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
+ {-0.437500,-0.312500,0.375000,0.425000,0.500000,0.500000}, --NodeBox 2
+ {-0.312500,-0.437500,0.375000,0.312500,0.500000,0.500000}, --NodeBox 3
+ {-0.187500,-0.500000,0.375000,0.187500,0.500000,0.500000}, --NodeBox 4
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
+ },
+ },
+})
+
+minetest.register_craft({
+ output = "castle:shield_2",
+ recipe = {
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
+ {"dye:cyan", "default:steel_ingot","dye:yellow"},
+ }
+})
+
+minetest.register_node("castle:shield_3",{
+ description = "Mounted Shield",
+ tiles = {"castle_shield_side_3.png", "castle_shield_side_3.png", "castle_shield_side_3.png", "castle_shield_side_3.png", "castle_shield_back.png", "castle_shield_front_3.png"},
+ drawtype="nodebox",
+ paramtype2 = "facedir",
+ paramtype = "light",
+ groups={cracky=3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.125000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
+ {-0.437500,-0.312500,0.375000,0.425000,0.500000,0.500000}, --NodeBox 2
+ {-0.312500,-0.437500,0.375000,0.312500,0.500000,0.500000}, --NodeBox 3
+ {-0.187500,-0.500000,0.375000,0.187500,0.500000,0.500000}, --NodeBox 4
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
+ },
+ },
+})
+
+minetest.register_craft({
+ output = "castle:shield_3",
+ recipe = {
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
+ {"dye:grey", "default:steel_ingot","dye:green"},
+ }
+})
+
diff --git a/castle/sounds/throwing_sound.ogg b/castle/sounds/throwing_sound.ogg
new file mode 100644
index 0000000..c8911e5
--- /dev/null
+++ b/castle/sounds/throwing_sound.ogg
Binary files differ
diff --git a/castle/tapestry.lua b/castle/tapestry.lua
new file mode 100644
index 0000000..845fb7a
--- /dev/null
+++ b/castle/tapestry.lua
@@ -0,0 +1,180 @@
+local tapestry = {}
+
+minetest.register_node("castle:tapestry_top", {
+ drawtype = "nodebox",
+ description = "Tapestry Top",
+ tiles = {"default_wood.png"},
+ sunlight_propagates = true,
+ groups = {flammable=3,oddly_breakable_by_hand=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.600000,-0.500000,0.375000,0.600000,-0.375000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.600000,-0.500000,0.375000,0.600000,-0.375000,0.500000},
+ },
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:tapestry_top',
+ recipe = {'default:stick'},
+})
+
+tapestry.colours = {
+ {"white", "White", "white"},
+ {"grey", "Grey", "grey"},
+ {"black", "Black", "black"},
+ {"red", "Red", "red"},
+ {"yellow", "Yellow", "yellow"},
+ {"green", "Green", "green"},
+ {"cyan", "Cyan", "cyan"},
+ {"blue", "Blue", "blue"},
+ {"magenta", "Magenta", "magenta"},
+ {"orange", "Orange", "orange"},
+ {"violet", "Violet", "violet"},
+ {"dark_grey", "Dark Grey", "dark_grey"},
+ {"dark_green", "Dark Green", "dark_green"},
+ {"pink", "Pink", "pink"},
+ {"brown", "Brown", "brown"},
+}
+
+for _, row in ipairs(tapestry.colours) do
+ local name = row[1]
+ local desc = row[2]
+ local craft_color_group = row[3]
+ -- Node Definition
+ minetest.register_node("castle:tapestry_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Tapestry",
+ tiles = {"wool_"..name..".png"},
+ groups = {oddly_breakable_by_hand=3,flammable=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,0.437500,-0.187500,-0.375000,0.500000},
+ {0.187500,-0.500000,0.437500,0.312500,-0.375000,0.500000},
+ {-0.375000,-0.375000,0.437500,-0.125000,-0.250000,0.500000},
+ {0.125000,-0.375000,0.437500,0.375000,-0.250000,0.500000},
+ {-0.437500,-0.250000,0.437500,-0.062500,-0.125000,0.500000},
+ {0.062500,-0.250000,0.437500,0.437500,-0.125000,0.500000},
+ {-0.500000,-0.125000,0.437500,0.000000,0.000000,0.500000},
+ {0.000000,-0.125000,0.437500,0.500000,0.000000,0.500000},
+ {-0.500000,0.000000,0.437500,0.500000,1.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.437500,0.500000,1.500000,0.500000},
+ },
+ },
+ })
+ if craft_color_group then
+ -- Crafting from wool and a stick
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:tapestry_'..name,
+ recipe = {'wool:'..craft_color_group, 'default:stick'},
+ })
+ end
+end
+
+for _, row in ipairs(tapestry.colours) do
+ local name = row[1]
+ local desc = row[2]
+ local craft_color_group = row[3]
+ -- Node Definition
+ minetest.register_node("castle:long_tapestry_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Tapestry (Long)",
+ tiles = {"wool_"..name..".png"},
+ groups = {oddly_breakable_by_hand=3,flammable=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,0.437500,-0.187500,-0.375000,0.500000},
+ {0.187500,-0.500000,0.437500,0.312500,-0.375000,0.500000},
+ {-0.375000,-0.375000,0.437500,-0.125000,-0.250000,0.500000},
+ {0.125000,-0.375000,0.437500,0.375000,-0.250000,0.500000},
+ {-0.437500,-0.250000,0.437500,-0.062500,-0.125000,0.500000},
+ {0.062500,-0.250000,0.437500,0.437500,-0.125000,0.500000},
+ {-0.500000,-0.125000,0.437500,0.000000,0.000000,0.500000},
+ {0.000000,-0.125000,0.437500,0.500000,0.000000,0.500000},
+ {-0.500000,0.000000,0.437500,0.500000,2.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.437500,0.500000,2.500000,0.500000},
+ },
+ },
+ })
+ if craft_color_group then
+ -- Crafting from normal tapestry and wool
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:long_tapestry_'..name,
+ recipe = {'wool:'..craft_color_group, 'castle:tapestry_'..name},
+ })
+ end
+end
+
+for _, row in ipairs(tapestry.colours) do
+ local name = row[1]
+ local desc = row[2]
+ local craft_color_group = row[3]
+ -- Node Definition
+ minetest.register_node("castle:very_long_tapestry_"..name, {
+ drawtype = "nodebox",
+ description = desc.." Tapestry (Very Long)",
+ tiles = {"wool_"..name..".png"},
+ groups = {oddly_breakable_by_hand=3,flammable=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,0.437500,-0.187500,-0.375000,0.500000},
+ {0.187500,-0.500000,0.437500,0.312500,-0.375000,0.500000},
+ {-0.375000,-0.375000,0.437500,-0.125000,-0.250000,0.500000},
+ {0.125000,-0.375000,0.437500,0.375000,-0.250000,0.500000},
+ {-0.437500,-0.250000,0.437500,-0.062500,-0.125000,0.500000},
+ {0.062500,-0.250000,0.437500,0.437500,-0.125000,0.500000},
+ {-0.500000,-0.125000,0.437500,0.000000,0.000000,0.500000},
+ {0.000000,-0.125000,0.437500,0.500000,0.000000,0.500000},
+ {-0.500000,0.000000,0.437500,0.500000,3.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,0.437500,0.500000,3.500000,0.500000},
+ },
+ },
+ })
+ if craft_color_group then
+ -- Crafting from long tapestry and wool
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'castle:very_long_tapestry_'..name,
+ recipe = {'wool:'..craft_color_group, 'castle:long_tapestry_'..name},
+ })
+ end
+end
diff --git a/castle/textures/castle_arrow.png b/castle/textures/castle_arrow.png
new file mode 100644
index 0000000..9b72ee9
--- /dev/null
+++ b/castle/textures/castle_arrow.png
Binary files differ
diff --git a/castle/textures/castle_arrow_2.png b/castle/textures/castle_arrow_2.png
new file mode 100644
index 0000000..b5980d0
--- /dev/null
+++ b/castle/textures/castle_arrow_2.png
Binary files differ
diff --git a/castle/textures/castle_arrow_back.png b/castle/textures/castle_arrow_back.png
new file mode 100644
index 0000000..d680d88
--- /dev/null
+++ b/castle/textures/castle_arrow_back.png
Binary files differ
diff --git a/castle/textures/castle_arrow_front.png b/castle/textures/castle_arrow_front.png
new file mode 100644
index 0000000..828a486
--- /dev/null
+++ b/castle/textures/castle_arrow_front.png
Binary files differ
diff --git a/castle/textures/castle_battleaxe.png b/castle/textures/castle_battleaxe.png
new file mode 100644
index 0000000..4f7f738
--- /dev/null
+++ b/castle/textures/castle_battleaxe.png
Binary files differ
diff --git a/castle/textures/castle_broadsword.png b/castle/textures/castle_broadsword.png
new file mode 100644
index 0000000..4d7beb8
--- /dev/null
+++ b/castle/textures/castle_broadsword.png
Binary files differ
diff --git a/castle/textures/castle_corner_stonewall1.png b/castle/textures/castle_corner_stonewall1.png
new file mode 100644
index 0000000..22ba91f
--- /dev/null
+++ b/castle/textures/castle_corner_stonewall1.png
Binary files differ
diff --git a/castle/textures/castle_corner_stonewall2.png b/castle/textures/castle_corner_stonewall2.png
new file mode 100644
index 0000000..0693427
--- /dev/null
+++ b/castle/textures/castle_corner_stonewall2.png
Binary files differ
diff --git a/castle/textures/castle_crate.png b/castle/textures/castle_crate.png
new file mode 100644
index 0000000..4aca511
--- /dev/null
+++ b/castle/textures/castle_crate.png
Binary files differ
diff --git a/castle/textures/castle_crate_top.png b/castle/textures/castle_crate_top.png
new file mode 100644
index 0000000..1de0365
--- /dev/null
+++ b/castle/textures/castle_crate_top.png
Binary files differ
diff --git a/castle/textures/castle_crossbow.png b/castle/textures/castle_crossbow.png
new file mode 100644
index 0000000..e14c45c
--- /dev/null
+++ b/castle/textures/castle_crossbow.png
Binary files differ
diff --git a/castle/textures/castle_day.png b/castle/textures/castle_day.png
new file mode 100644
index 0000000..6487fb6
--- /dev/null
+++ b/castle/textures/castle_day.png
Binary files differ
diff --git a/castle/textures/castle_dungeon_stone.png b/castle/textures/castle_dungeon_stone.png
new file mode 100644
index 0000000..10c5c47
--- /dev/null
+++ b/castle/textures/castle_dungeon_stone.png
Binary files differ
diff --git a/castle/textures/castle_grey.png b/castle/textures/castle_grey.png
new file mode 100644
index 0000000..8e77900
--- /dev/null
+++ b/castle/textures/castle_grey.png
Binary files differ
diff --git a/castle/textures/castle_hide.png b/castle/textures/castle_hide.png
new file mode 100644
index 0000000..8abc259
--- /dev/null
+++ b/castle/textures/castle_hide.png
Binary files differ
diff --git a/castle/textures/castle_ironbound_chest_back.png b/castle/textures/castle_ironbound_chest_back.png
new file mode 100644
index 0000000..52d0ae4
--- /dev/null
+++ b/castle/textures/castle_ironbound_chest_back.png
Binary files differ
diff --git a/castle/textures/castle_ironbound_chest_front.png b/castle/textures/castle_ironbound_chest_front.png
new file mode 100644
index 0000000..8151300
--- /dev/null
+++ b/castle/textures/castle_ironbound_chest_front.png
Binary files differ
diff --git a/castle/textures/castle_ironbound_chest_side.png b/castle/textures/castle_ironbound_chest_side.png
new file mode 100644
index 0000000..f38ba39
--- /dev/null
+++ b/castle/textures/castle_ironbound_chest_side.png
Binary files differ
diff --git a/castle/textures/castle_ironbound_chest_top.png b/castle/textures/castle_ironbound_chest_top.png
new file mode 100644
index 0000000..fff7da0
--- /dev/null
+++ b/castle/textures/castle_ironbound_chest_top.png
Binary files differ
diff --git a/castle/textures/castle_jail_door_bottom.png b/castle/textures/castle_jail_door_bottom.png
new file mode 100644
index 0000000..5e42083
--- /dev/null
+++ b/castle/textures/castle_jail_door_bottom.png
Binary files differ
diff --git a/castle/textures/castle_jail_door_inv.png b/castle/textures/castle_jail_door_inv.png
new file mode 100644
index 0000000..50a502d
--- /dev/null
+++ b/castle/textures/castle_jail_door_inv.png
Binary files differ
diff --git a/castle/textures/castle_jail_door_top.png b/castle/textures/castle_jail_door_top.png
new file mode 100644
index 0000000..7f27979
--- /dev/null
+++ b/castle/textures/castle_jail_door_top.png
Binary files differ
diff --git a/castle/textures/castle_jailbars.png b/castle/textures/castle_jailbars.png
new file mode 100644
index 0000000..79421ac
--- /dev/null
+++ b/castle/textures/castle_jailbars.png
Binary files differ
diff --git a/castle/textures/castle_jailbars_half.png b/castle/textures/castle_jailbars_half.png
new file mode 100644
index 0000000..376428c
--- /dev/null
+++ b/castle/textures/castle_jailbars_half.png
Binary files differ
diff --git a/castle/textures/castle_night.png b/castle/textures/castle_night.png
new file mode 100644
index 0000000..f1516a7
--- /dev/null
+++ b/castle/textures/castle_night.png
Binary files differ
diff --git a/castle/textures/castle_oak_door_bottom.png b/castle/textures/castle_oak_door_bottom.png
new file mode 100644
index 0000000..b2c1df3
--- /dev/null
+++ b/castle/textures/castle_oak_door_bottom.png
Binary files differ
diff --git a/castle/textures/castle_oak_door_inv.png b/castle/textures/castle_oak_door_inv.png
new file mode 100644
index 0000000..d1966db
--- /dev/null
+++ b/castle/textures/castle_oak_door_inv.png
Binary files differ
diff --git a/castle/textures/castle_oak_door_top.png b/castle/textures/castle_oak_door_top.png
new file mode 100644
index 0000000..37b9d42
--- /dev/null
+++ b/castle/textures/castle_oak_door_top.png
Binary files differ
diff --git a/castle/textures/castle_pavement_brick.png b/castle/textures/castle_pavement_brick.png
new file mode 100644
index 0000000..0d06f6b
--- /dev/null
+++ b/castle/textures/castle_pavement_brick.png
Binary files differ
diff --git a/castle/textures/castle_ropebox_side_1.png b/castle/textures/castle_ropebox_side_1.png
new file mode 100644
index 0000000..75da619
--- /dev/null
+++ b/castle/textures/castle_ropebox_side_1.png
Binary files differ
diff --git a/castle/textures/castle_ropebox_side_2.png b/castle/textures/castle_ropebox_side_2.png
new file mode 100644
index 0000000..f3bbe53
--- /dev/null
+++ b/castle/textures/castle_ropebox_side_2.png
Binary files differ
diff --git a/castle/textures/castle_ropebox_top.png b/castle/textures/castle_ropebox_top.png
new file mode 100644
index 0000000..a6eb2ef
--- /dev/null
+++ b/castle/textures/castle_ropebox_top.png
Binary files differ
diff --git a/castle/textures/castle_ropes.png b/castle/textures/castle_ropes.png
new file mode 100644
index 0000000..0df712e
--- /dev/null
+++ b/castle/textures/castle_ropes.png
Binary files differ
diff --git a/castle/textures/castle_rubble.png b/castle/textures/castle_rubble.png
new file mode 100644
index 0000000..a16c5da
--- /dev/null
+++ b/castle/textures/castle_rubble.png
Binary files differ
diff --git a/castle/textures/castle_shield_back.png b/castle/textures/castle_shield_back.png
new file mode 100644
index 0000000..91ce914
--- /dev/null
+++ b/castle/textures/castle_shield_back.png
Binary files differ
diff --git a/castle/textures/castle_shield_front.png b/castle/textures/castle_shield_front.png
new file mode 100644
index 0000000..194754a
--- /dev/null
+++ b/castle/textures/castle_shield_front.png
Binary files differ
diff --git a/castle/textures/castle_shield_front_2.png b/castle/textures/castle_shield_front_2.png
new file mode 100644
index 0000000..65f38b7
--- /dev/null
+++ b/castle/textures/castle_shield_front_2.png
Binary files differ
diff --git a/castle/textures/castle_shield_front_3.png b/castle/textures/castle_shield_front_3.png
new file mode 100644
index 0000000..4b0cdc1
--- /dev/null
+++ b/castle/textures/castle_shield_front_3.png
Binary files differ
diff --git a/castle/textures/castle_shield_side.png b/castle/textures/castle_shield_side.png
new file mode 100644
index 0000000..706fecc
--- /dev/null
+++ b/castle/textures/castle_shield_side.png
Binary files differ
diff --git a/castle/textures/castle_shield_side_2.png b/castle/textures/castle_shield_side_2.png
new file mode 100644
index 0000000..a33cd65
--- /dev/null
+++ b/castle/textures/castle_shield_side_2.png
Binary files differ
diff --git a/castle/textures/castle_shield_side_3.png b/castle/textures/castle_shield_side_3.png
new file mode 100644
index 0000000..d412952
--- /dev/null
+++ b/castle/textures/castle_shield_side_3.png
Binary files differ
diff --git a/castle/textures/castle_slate.png b/castle/textures/castle_slate.png
new file mode 100644
index 0000000..f8d7f82
--- /dev/null
+++ b/castle/textures/castle_slate.png
Binary files differ
diff --git a/castle/textures/castle_space.png b/castle/textures/castle_space.png
new file mode 100644
index 0000000..c2e8752
--- /dev/null
+++ b/castle/textures/castle_space.png
Binary files differ
diff --git a/castle/textures/castle_steel.png b/castle/textures/castle_steel.png
new file mode 100644
index 0000000..d0e39f3
--- /dev/null
+++ b/castle/textures/castle_steel.png
Binary files differ
diff --git a/castle/textures/castle_stonewall.png b/castle/textures/castle_stonewall.png
new file mode 100644
index 0000000..5edf86b
--- /dev/null
+++ b/castle/textures/castle_stonewall.png
Binary files differ
diff --git a/castle/textures/castle_straw_bale.png b/castle/textures/castle_straw_bale.png
new file mode 100644
index 0000000..8403e2a
--- /dev/null
+++ b/castle/textures/castle_straw_bale.png
Binary files differ
diff --git a/castle/textures/castle_street_light.png b/castle/textures/castle_street_light.png
new file mode 100644
index 0000000..81ad148
--- /dev/null
+++ b/castle/textures/castle_street_light.png
Binary files differ
diff --git a/castle/textures/castle_workbench_1.png b/castle/textures/castle_workbench_1.png
new file mode 100644
index 0000000..af945b5
--- /dev/null
+++ b/castle/textures/castle_workbench_1.png
Binary files differ
diff --git a/castle/textures/castle_workbench_2.png b/castle/textures/castle_workbench_2.png
new file mode 100644
index 0000000..008a285
--- /dev/null
+++ b/castle/textures/castle_workbench_2.png
Binary files differ
diff --git a/castle/textures/castle_workbench_top.png b/castle/textures/castle_workbench_top.png
new file mode 100644
index 0000000..90e9227
--- /dev/null
+++ b/castle/textures/castle_workbench_top.png
Binary files differ
diff --git a/castle/textures/door_jail.png b/castle/textures/door_jail.png
new file mode 100644
index 0000000..dd09de7
--- /dev/null
+++ b/castle/textures/door_jail.png
Binary files differ
diff --git a/castle/textures/door_oak.png b/castle/textures/door_oak.png
new file mode 100644
index 0000000..cbd49e4
--- /dev/null
+++ b/castle/textures/door_oak.png
Binary files differ
diff --git a/castle/textures/door_papyrus.png b/castle/textures/door_papyrus.png
new file mode 100644
index 0000000..4a633ae
--- /dev/null
+++ b/castle/textures/door_papyrus.png
Binary files differ
diff --git a/castle/town_item.lua b/castle/town_item.lua
new file mode 100644
index 0000000..64db0e8
--- /dev/null
+++ b/castle/town_item.lua
@@ -0,0 +1,306 @@
+minetest.register_alias("darkage:box", "castle:crate")
+minetest.register_alias("cottages:straw", "farming:straw")
+minetest.register_alias("castle:straw", "farming:straw")
+minetest.register_alias("darkage:straw", "farming:straw")
+minetest.register_alias("cottages:straw_bale", "castle:bound_straw")
+minetest.register_alias("darkage:straw_bale", "castle:bound_straw")
+minetest.register_alias("darkage:lamp", "castle:street_light")
+
+minetest.register_node("castle:anvil",{
+ drawtype = "nodebox",
+ description = "Anvil",
+ tiles = {"castle_steel.png"},
+ groups = {cracky=2,falling_node=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.250000,0.500000},
+ {-0.187500,-0.500000,-0.375000,0.187500,0.312500,0.375000},
+ {-0.375000,-0.500000,-0.437500,0.375000,-0.125000,0.437500},
+ {-0.500000,0.312500,-0.500000,0.500000,0.500000,0.500000},
+ {-0.375000,0.187500,-0.437500,0.375000,0.425000,0.437500},
+ },
+ },
+})
+
+minetest.register_craft({
+ output = "castle:anvil",
+ recipe = {
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
+ {"","default:steel_ingot", ""},
+ {"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
+ }
+})
+
+minetest.register_node("castle:workbench",{
+ description = "Workbench",
+ tiles = {"castle_workbench_top.png", "default_wood.png", "castle_workbench_1.png", "castle_workbench_1.png", "castle_workbench_2.png", "castle_workbench_2.png"},
+ paramtype2 = "facedir",
+ paramtype = "light",
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=2},
+ drawtype = "normal",
+ on_construct = function ( pos )
+ local meta = minetest.get_meta( pos )
+ meta:set_string( 'formspec', 'size[10,10;]' ..
+ 'label[1,0;Source Material]' ..
+ 'list[context;src;1,1;2,4;]' ..
+ 'label[4,0;Recipe to Use]' ..
+ 'list[context;rec;4,1;3,3;]' ..
+ 'label[7.5,0;Craft Output]' ..
+ 'list[context;dst;8,1;1,4;]' ..
+ 'list[current_player;main;1,6;8,4;]' )
+ meta:set_string( 'infotext', 'Workbench' )
+ local inv = meta:get_inventory()
+ inv:set_size( 'src', 2 * 4 )
+ inv:set_size( 'rec', 3 * 3 )
+ inv:set_size( 'dst', 1 * 4 )
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in workbench at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to workbench at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from workbench at "..minetest.pos_to_string(pos))
+ end,
+})
+local get_recipe = function ( inv )
+ local result, needed, input
+ needed = inv:get_list( 'rec' )
+
+ result, input = minetest.get_craft_result( {
+ method = 'normal',
+ width = 3,
+ items = needed
+ } )
+
+ local totalneed = {}
+
+ if result.item:is_empty() then
+ result = nil
+ else
+ result = result.item
+ for _, item in ipairs( needed ) do
+ if item ~= nil and not item:is_empty() and not inv:contains_item( 'src', item ) then
+ result = nil
+ break
+ end
+ if item ~= nil and not item:is_empty() then
+ if totalneed[item:get_name()] == nil then
+ totalneed[item:get_name()] = 1
+ else
+ totalneed[item:get_name()] = totalneed[item:get_name()] + 1
+ end
+ end
+ end
+ for name, number in pairs( totalneed ) do
+ local totallist = inv:get_list( 'src' )
+ for i, srcitem in pairs( totallist ) do
+ if srcitem:get_name() == name then
+ local taken = srcitem:take_item( number )
+ number = number - taken:get_count()
+ totallist[i] = srcitem
+ end
+ if number <= 0 then
+ break
+ end
+ end
+ if number > 0 then
+ result = nil
+ break
+ end
+ end
+ end
+
+ return needed, input, result
+end
+
+minetest.register_abm( {
+ nodenames = { 'castle:workbench' },
+ interval = 5,
+ chance = 1,
+ action = function ( pos, node )
+ local meta = minetest.get_meta( pos )
+ local inv = meta:get_inventory()
+ local cresult, newinput, needed
+ if not inv:is_empty( 'src' ) then
+ -- Check for a valid recipe and sufficient resources to craft it
+ needed, newinput, result = get_recipe( inv )
+ if result ~= nil and inv:room_for_item( 'dst', result ) then
+ inv:add_item( 'dst', result )
+ for i, item in pairs( needed ) do
+ if item ~= nil and item ~= '' then
+ inv:remove_item( 'src', ItemStack( item ) )
+ end
+ if newinput[i] ~= nil and not newinput[i]:is_empty() then
+ inv:add_item( 'src', newinput[i] )
+ end
+ end
+ end
+ end
+ end
+} )
+
+
+local function has_locked_chest_privilege(meta, player)
+ if player:get_player_name() ~= meta:get_string("owner") then
+ return false
+ end
+ return true
+end
+
+
+minetest.register_craft({
+ output = "castle:workbench",
+ recipe = {
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
+ {"default:wood", "default:wood","default:steel_ingot"},
+ {"default:tree", "default:tree","default:steel_ingot"},
+ }
+})
+
+minetest.register_node("castle:dungeon_stone", {
+ description = "Dungeon Stone",
+ drawtype = "normal",
+ tiles = {"castle_dungeon_stone.png"},
+ groups = {cracky=2},
+ paramtype = "light",
+})
+
+minetest.register_craft({
+ output = "castle:dungeon_stone",
+ recipe = {
+ {"default:stonebrick", "default:obsidian"},
+ }
+})
+
+minetest.register_craft({
+ output = "castle:dungeon_stone",
+ recipe = {
+ {"default:stonebrick"},
+ {"default:obsidian"},
+
+ }
+})
+
+minetest.register_node("castle:crate", {
+ description = "Crate",
+ drawtype = "normal",
+ tiles = {"castle_crate_top.png","castle_crate_top.png","castle_crate.png","castle_crate.png","castle_crate.png","castle_crate.png"},
+ groups = {choppy=3},
+ paramtype = "light",
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "list[current_name;main;0,1;8,4;]"..
+ "list[current_player;main;0,5;8,4;]")
+ meta:set_string("infotext", "Crate")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*3)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in crate at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to crate at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from crate at "..minetest.pos_to_string(pos))
+ end,
+})
+
+local function has_locked_chest_privilege(meta, player)
+ if player:get_player_name() ~= meta:get_string("owner") then
+ return false
+ end
+ return true
+end
+
+minetest.register_craft({
+ output = "castle:crate",
+ recipe = {
+ {"default:wood", "default:wood", "default:wood"},
+ {"default:wood", "default:steel_ingot", "default:wood"},
+ }
+})
+
+minetest.register_node("castle:bound_straw", {
+ description = "Bound Straw",
+ drawtype = "normal",
+ tiles = {"castle_straw_bale.png"},
+ groups = {choppy=4, flammable=1, oddly_breakable_by_hand=3},
+ paramtype = "light",
+})
+
+minetest.register_craft({
+ output = "castle:bound_straw",
+ recipe = {
+ {"castle:straw", "castle:ropes"},
+ }
+})
+
+stairs.register_stair_and_slab("straw", "farming:straw",
+ {choppy=3, flammable=1, oddly_breakable_by_hand=3},
+ {"farming_straw.png"},
+ "Castle Straw Stair",
+ "Castle Straw Slab",
+ default.node_sound_leaves_defaults()
+)
+
+minetest.register_node("castle:pavement", {
+ description = "Paving Stone",
+ drawtype = "normal",
+ tiles = {"castle_pavement_brick.png"},
+ groups = {cracky=2},
+ paramtype = "light",
+})
+
+minetest.register_craft({
+ output = "castle:pavement 4",
+ recipe = {
+ {"default:stone", "default:cobble"},
+ {"default:cobble", "default:stone"},
+ }
+})
+
+
+minetest.register_node("castle:light",{
+ drawtype = "glasslike",
+ description = "Light Block",
+ sunlight_propagates = true,
+ light_source = 14,
+ tiles = {"castle_street_light.png"},
+ groups = {cracky=2},
+ paramtype = "light",
+})
+
+minetest.register_craft({
+ output = "castle:light",
+ recipe = {
+ {"default:stick", "default:glass", "default:stick"},
+ {"default:glass", "default:torch", "default:glass"},
+ {"default:stick", "default:glass", "default:stick"},
+ }
+})
+
+
diff --git a/caverealms/README.md b/caverealms/README.md
new file mode 100644
index 0000000..87edf5f
--- /dev/null
+++ b/caverealms/README.md
@@ -0,0 +1,14 @@
+minetest-caverealms
+===================
+
+A mod for Minetest to add underground realms
+
+For more information, view the official forum topic at:
+https://forum.minetest.net/viewtopic.php?f=9&t=9522
+
+Contributors:
+HeroOfTheWinds - everything
+|
+Zeno- - additional ideas and fine tuning
+
+Licensed under the WTFPL
diff --git a/caverealms/config.lua b/caverealms/config.lua
new file mode 100644
index 0000000..15b23d0
--- /dev/null
+++ b/caverealms/config.lua
@@ -0,0 +1,45 @@
+
+local CONFIG_FILE_PREFIX = "caverealms."
+
+caverealms.config = {}
+
+-- This function based on kaeza/minetest-irc/config.lua and used under the
+-- terms of BSD 2-clause license.
+local function setting(stype, name, default)
+ local value
+ if stype == "bool" then
+ value = minetest.setting_getbool(CONFIG_FILE_PREFIX..name)
+ elseif stype == "string" then
+ value = minetest.setting_get(CONFIG_FILE_PREFIX..name)
+ elseif stype == "number" then
+ value = tonumber(minetest.setting_get(CONFIG_FILE_PREFIX..name))
+ end
+ if value == nil then
+ value = default
+ end
+ caverealms.config[name] = value
+end
+
+--generation settings
+setting("number", "ymin", -33000) --bottom realm limit
+setting("number", "ymax", -700) --top realm limit
+setting("number", "tcave", 0.5) --cave threshold
+
+--falling icicles
+setting("bool", "falling_icicles", true) --enable/disable falling icicles
+setting("number", "fallcha", 0.33) --chance of icicles falling when dug
+
+--decoration chances
+setting("number", "stagcha", 0.002) --chance of stalagmites
+setting("number", "stalcha", 0.003) --chance of stalactites
+setting("number", "h_lag", 15) --max height for stalagmites
+setting("number", "h_lac", 20) --...stalactites
+setting("number", "crystal", 0.007) --chance of glow crystal formations
+setting("number", "h_cry", 9) --max height of glow crystals
+setting("number", "h_clac", 13) --max height of glow crystal stalactites
+setting("number", "gemcha", 0.03) --chance of small glow gems
+setting("number", "mushcha", 0.04) --chance of mushrooms
+setting("number", "myccha", 0.03) --chance of mycena mushrooms
+setting("number", "wormcha", 0.02) --chance of glow worms
+setting("number", "giantcha", 0.001) --chance of giant mushrooms
+setting("number", "icicha", 0.035) --chance of icicles
diff --git a/caverealms/crafting.lua b/caverealms/crafting.lua
new file mode 100644
index 0000000..e78da6e
--- /dev/null
+++ b/caverealms/crafting.lua
@@ -0,0 +1,43 @@
+--CaveRealms crafting.lua
+
+--CRAFT ITEMS--
+
+--mycena powder
+minetest.register_craftitem("caverealms:mycena_powder", {
+ description = "Mycena Powder",
+ inventory_image = "caverealms_mycena_powder.png",
+})
+
+--CRAFT RECIPES--
+
+--mycena powder
+minetest.register_craft({
+ output = "caverealms:mycena_powder",
+ type = "shapeless",
+ recipe = {"caverealms:mycena"}
+})
+
+
+--glow mese block
+minetest.register_craft({
+ output = "caverealms:glow_mese",
+ recipe = {
+ {"default:mese_crystal_fragment","default:mese_crystal_fragment","default:mese_crystal_fragment"},
+ {"default:mese_crystal_fragment","caverealms:mycena_powder","default:mese_crystal_fragment"},
+ {"default:mese_crystal_fragment","default:mese_crystal_fragment","default:mese_crystal_fragment"}
+ }
+})
+
+--reverse craft for glow mese
+minetest.register_craft({
+ output = "default:mese_crystal_fragment 8",
+ type = "shapeless",
+ recipe = {"caverealms:glow_mese"}
+})
+
+--thin ice to water
+minetest.register_craft({
+ output = "default:water_source",
+ type = "shapeless",
+ recipe = {"caverealms:thin_ice"}
+}) \ No newline at end of file
diff --git a/caverealms/depends.txt b/caverealms/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/caverealms/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/caverealms/falling_ice.lua b/caverealms/falling_ice.lua
new file mode 100644
index 0000000..4e04b5f
--- /dev/null
+++ b/caverealms/falling_ice.lua
@@ -0,0 +1,210 @@
+-- CaveRealms: falling icicles
+-- borrowed from base MineTest game's falling.lua
+
+--
+-- Falling ice
+--
+
+minetest.register_entity("caverealms:falling_ice", {
+ initial_properties = {
+ physical = true,
+ collide_with_objects = false,
+ collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
+ visual = "wielditem",
+ textures = {},
+ visual_size = {x=0.667, y=0.667},
+ },
+
+ node = {},
+
+ set_node = function(self, node)
+ self.node = node
+ local stack = ItemStack(node.name)
+ local itemtable = stack:to_table()
+ local itemname = nil
+ if itemtable then
+ itemname = stack:to_table().name
+ end
+ local item_texture = nil
+ local item_type = ""
+ if minetest.registered_items[itemname] then
+ item_texture = minetest.registered_items[itemname].inventory_image
+ item_type = minetest.registered_items[itemname].type
+ end
+ prop = {
+ is_visible = true,
+ textures = {node.name},
+ }
+ self.object:set_properties(prop)
+ end,
+
+ get_staticdata = function(self)
+ return self.node.name
+ end,
+
+ on_activate = function(self, staticdata)
+ self.object:set_armor_groups({immortal=1})
+ --self.object:setacceleration({x=0, y=-10, z=0})
+ self:set_node({name=staticdata})
+ end,
+
+ on_step = function(self, dtime)
+ -- Set gravity
+ self.object:setacceleration({x=0, y=-10, z=0})
+ -- Destroy when collides to ground or just move
+ local pos = self.object:getpos()
+ local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point
+ local bcn = minetest.get_node(bcp)
+ local bcd = minetest.registered_nodes[bcn.name]
+ --check for players next to this and hurt them >:D
+ local all_objects = minetest.get_objects_inside_radius(pos, 1)
+ local _,obj
+ for _,obj in ipairs(all_objects) do
+ if obj:is_player() then
+ obj:set_hp(obj:get_hp() - 8)
+ end
+ end
+ -- Note: walkable is in the node definition, not in item groups
+ if not bcd or
+ (bcd.walkable or
+ (minetest.get_item_group(self.node.name, "float") ~= 0 and
+ bcd.liquidtype ~= "none")) then
+ if bcd and bcd.leveled and
+ bcn.name == self.node.name then
+ local addlevel = self.node.level
+ if addlevel == nil or addlevel <= 0 then
+ addlevel = bcd.leveled
+ end
+ if minetest.add_node_level(bcp, addlevel) == 0 then
+ self.object:remove()
+ return
+ end
+ elseif bcd and bcd.buildable_to and
+ (minetest.get_item_group(self.node.name, "float") == 0 or
+ bcd.liquidtype == "none") then
+ minetest.remove_node(bcp)
+ return
+ end
+ local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
+ -- Check what's here
+ local n2 = minetest.get_node(np)
+ -- remove node and replace it with it's drops
+ local drops = minetest.get_node_drops(n2.name, "")
+ minetest.remove_node(np)
+ local _, dropped_item
+ for _, dropped_item in ipairs(drops) do
+ minetest.add_item(np, dropped_item)
+ end
+ -- Run script hook
+ local _, callback
+ for _, callback in ipairs(minetest.registered_on_dignodes) do
+ callback(np, n2, nil)
+ end
+ -- remove entity
+ --minetest.add_node(np, self.node)
+ self.object:remove()
+ caverealms:nodeupdate(np)
+ else
+ -- Do nothing
+ end
+ end
+})
+
+function caverealms:spawn_falling_node(p, node)
+ obj = minetest.add_entity(p, "caverealms:falling_ice")
+ obj:get_luaentity():set_node(node)
+end
+
+function caverealms:drop_attached_node(p)
+ local nn = minetest.get_node(p).name
+ minetest.remove_node(p)
+ for _,item in ipairs(minetest.get_node_drops(nn, "")) do
+ local pos = {
+ x = p.x + math.random()/2 - 0.25,
+ y = p.y + math.random()/2 - 0.25,
+ z = p.z + math.random()/2 - 0.25,
+ }
+ minetest.add_item(pos, item)
+ end
+end
+
+function caverealms:check_attached_node(p, n)
+ local def = minetest.registered_nodes[n.name]
+ local d = {x=0, y=0, z=0}
+ if def.paramtype2 == "wallmounted" then
+ if n.param2 == 0 then
+ d.y = 1
+ elseif n.param2 == 1 then
+ d.y = -1
+ elseif n.param2 == 2 then
+ d.x = 1
+ elseif n.param2 == 3 then
+ d.x = -1
+ elseif n.param2 == 4 then
+ d.z = 1
+ elseif n.param2 == 5 then
+ d.z = -1
+ end
+ else
+ d.y = -1
+ end
+ local p2 = {x=p.x+d.x, y=p.y+d.y, z=p.z+d.z}
+ local nn = minetest.get_node(p2).name
+ local def2 = minetest.registered_nodes[nn]
+ if def2 and not def2.walkable then
+ return false
+ end
+ return true
+end
+
+--
+-- Some common functions
+--
+
+function caverealms:nodeupdate_single(p, delay)
+ n = minetest.get_node(p)
+ if minetest.get_item_group(n.name, "falling_node") ~= 0 then
+ p_bottom = {x=p.x, y=p.y-1, z=p.z}
+ n_bottom = minetest.get_node(p_bottom)
+ -- Note: walkable is in the node definition, not in item groups
+ if minetest.registered_nodes[n_bottom.name] and
+ (minetest.get_item_group(n.name, "float") == 0 or
+ minetest.registered_nodes[n_bottom.name].liquidtype == "none") and
+ (n.name ~= n_bottom.name or (minetest.registered_nodes[n_bottom.name].leveled and
+ minetest.get_node_level(p_bottom) < minetest.get_node_max_level(p_bottom))) and
+ (not minetest.registered_nodes[n_bottom.name].walkable or
+ minetest.registered_nodes[n_bottom.name].buildable_to) then
+ if delay then
+ minetest.after(0.1, caverealms.nodeupdate_single, {x=p.x, y=p.y, z=p.z}, false)
+ else
+ n.level = minetest.env:get_node_level(p)
+ minetest.remove_node(p)
+ caverealms:spawn_falling_node(p, n)
+ caverealms:nodeupdate(p)
+ end
+ end
+ end
+
+ if minetest.get_item_group(n.name, "attached_node") ~= 0 then
+ if not check_attached_node(p, n) then
+ caverealms:drop_attached_node(p)
+ caverealms:nodeupdate(p)
+ end
+ end
+end
+
+function caverealms:nodeupdate(p, delay)
+ -- Round p to prevent falling entities to get stuck
+ p.x = math.floor(p.x+0.5)
+ p.y = math.floor(p.y+0.5)
+ p.z = math.floor(p.z+0.5)
+
+ for x = -1,1 do
+ for y = -1,1 do
+ for z = -1,1 do
+ caverealms:nodeupdate_single({x=p.x+x, y=p.y+y, z=p.z+z}, delay or not (x==0 and y==0 and z==0))
+ end
+ end
+ end
+end
+
diff --git a/caverealms/functions.lua b/caverealms/functions.lua
new file mode 100644
index 0000000..6c62a93
--- /dev/null
+++ b/caverealms/functions.lua
@@ -0,0 +1,378 @@
+--CaveRealms functions.lua
+
+--FUNCTIONS--
+
+local H_LAG = caverealms.config.h_lag --15 --max height for stalagmites
+local H_LAC = caverealms.config.h_lac --20 --...stalactites
+local H_CRY = caverealms.config.h_cry --9 --max height of glow crystals
+local H_CLAC = caverealms.config.h_clac --13 --max height of glow crystal stalactites
+
+function caverealms:above_solid(x,y,z,area,data)
+ local c_air = minetest.get_content_id("air")
+ local ai = area:index(x,y+1,z-3)
+ if data[ai] == c_air then
+ return false
+ else
+ return true
+ end
+end
+function caverealms:below_solid(x,y,z,area,data)
+ local c_air = minetest.get_content_id("air")
+ local ai = area:index(x,y-1,z-3)
+ if data[ai] == c_air then
+ return false
+ else
+ return true
+ end
+end
+
+--stalagmite spawner
+function caverealms:stalagmite(x,y,z, area, data)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ --contest ids
+ local c_stone = minetest.get_content_id("default:stone")
+
+ local top = math.random(6,H_LAG) --grab a random height for the stalagmite
+ for j = 0, top do --y
+ for k = -3, 3 do
+ for l = -3, 3 do
+ if j == 0 then
+ if k*k + l*l <= 9 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = c_stone
+ end
+ elseif j <= top/5 then
+ if k*k + l*l <= 4 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = c_stone
+ end
+ elseif j <= top/5 * 3 then
+ if k*k + l*l <= 1 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = c_stone
+ end
+ else
+ local vi = area:index(x, y+j, z-3)
+ data[vi] = c_stone
+ end
+ end
+ end
+ end
+end
+
+--stalactite spawner
+function caverealms:stalactite(x,y,z, area, data)
+
+ if not caverealms:above_solid(x,y,z,area,data) then
+ return
+ end
+
+ --contest ids
+ local c_stone = minetest.get_content_id("default:stone")--("caverealms:limestone")
+
+ local bot = math.random(-H_LAC, -6) --grab a random height for the stalagmite
+ for j = bot, 0 do --y
+ for k = -3, 3 do
+ for l = -3, 3 do
+ if j >= -1 then
+ if k*k + l*l <= 9 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = c_stone
+ end
+ elseif j >= bot/5 then
+ if k*k + l*l <= 4 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = c_stone
+ end
+ elseif j >= bot/5 * 3 then
+ if k*k + l*l <= 1 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = c_stone
+ end
+ else
+ local vi = area:index(x, y+j, z-3)
+ data[vi] = c_stone
+ end
+ end
+ end
+ end
+end
+
+--glowing crystal stalagmite spawner
+function caverealms:crystal_stalagmite(x,y,z, area, data, biome)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ --contest ids
+ local c_stone = minetest.get_content_id("default:stone")
+ local c_crystal = minetest.get_content_id("caverealms:glow_crystal")
+ local c_crystore = minetest.get_content_id("caverealms:glow_ore")
+ local c_emerald = minetest.get_content_id("caverealms:glow_emerald")
+ local c_emore = minetest.get_content_id("caverealms:glow_emerald_ore")
+ local c_mesecry = minetest.get_content_id("caverealms:glow_mese")
+ local c_meseore = minetest.get_content_id("default:stone_with_mese")
+ local c_ice = minetest.get_content_id("default:ice")
+ local c_thinice = minetest.get_content_id("caverealms:thin_ice")
+
+ --for randomness
+ local mode = 1
+ if math.random(15) == 1 then
+ mode = 2
+ end
+ if biome == 3 then
+ if math.random(25) == 1 then
+ mode = 2
+ else
+ mode = 1
+ end
+ end
+ if biome == 4 or biome == 5 then
+ if math.random(3) == 1 then
+ mode = 2
+ end
+ end
+
+ local stalids = {
+ { {c_crystore, c_crystal}, {c_emore, c_emerald} },
+ { {c_emore, c_emerald}, {c_crystore, c_crystal} },
+ { {c_emore, c_emerald}, {c_meseore, c_mesecry} },
+ { {c_ice, c_thinice}, {c_crystore, c_crystal}}
+ }
+
+ local nid_a
+ local nid_b
+ local nid_s = c_stone --stone base, will be rewritten to ice in certain biomes
+
+ if biome > 3 then
+ if mode == 1 then
+ nid_a = c_ice
+ nid_b = c_thinice
+ nid_s = c_ice
+ else
+ nid_a = c_crystore
+ nid_b = c_crystal
+ end
+ elseif mode == 1 then
+ nid_a = stalids[biome][1][1]
+ nid_b = stalids[biome][1][2]
+ else
+ nid_a = stalids[biome][2][1]
+ nid_b = stalids[biome][2][2]
+ end
+
+ local top = math.random(5,H_CRY) --grab a random height for the stalagmite
+ for j = 0, top do --y
+ for k = -3, 3 do
+ for l = -3, 3 do
+ if j == 0 then
+ if k*k + l*l <= 9 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_s
+ end
+ elseif j <= top/5 then
+ if k*k + l*l <= 4 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_a
+ end
+ elseif j <= top/5 * 3 then
+ if k*k + l*l <= 1 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_b
+ end
+ else
+ local vi = area:index(x, y+j, z-3)
+ data[vi] = nid_b
+ end
+ end
+ end
+ end
+end
+
+--crystal stalactite spawner
+function caverealms:crystal_stalactite(x,y,z, area, data, biome)
+
+ if not caverealms:above_solid(x,y,z,area,data) then
+ return
+ end
+
+ --contest ids
+ local c_stone = minetest.get_content_id("default:stone")
+ local c_crystore = minetest.get_content_id("caverealms:glow_ore")
+ local c_crystal = minetest.get_content_id("caverealms:glow_crystal")
+ local c_emerald = minetest.get_content_id("caverealms:glow_emerald")
+ local c_emore = minetest.get_content_id("caverealms:glow_emerald_ore")
+ local c_mesecry = minetest.get_content_id("caverealms:glow_mese")
+ local c_meseore = minetest.get_content_id("default:stone_with_mese")
+ local c_ice = minetest.get_content_id("default:ice")
+ local c_thinice = minetest.get_content_id("caverealms:hanging_thin_ice")
+
+ --for randomness
+ local mode = 1
+ if math.random(15) == 1 then
+ mode = 2
+ end
+ if biome == 3 then
+ if math.random(25) == 1 then
+ mode = 2
+ else
+ mode = 1
+ end
+ end
+ if biome == 4 or biome == 5 then
+ if math.random(3) == 1 then
+ mode = 2
+ end
+ end
+
+ local stalids = {
+ { {c_crystore, c_crystal}, {c_emore, c_emerald} },
+ { {c_emore, c_emerald}, {c_crystore, c_crystal} },
+ { {c_emore, c_emerald}, {c_meseore, c_mesecry} },
+ { {c_ice, c_thinice}, {c_crystore, c_crystal}}
+ }
+
+ local nid_a
+ local nid_b
+ local nid_s = c_stone --stone base, will be rewritten to ice in certain biomes
+
+ if biome > 3 then
+ if mode == 1 then
+ nid_a = c_ice
+ nid_b = c_thinice
+ nid_s = c_ice
+ else
+ nid_a = c_crystore
+ nid_b = c_crystal
+ end
+ elseif mode == 1 then
+ nid_a = stalids[biome][1][1]
+ nid_b = stalids[biome][1][2]
+ else
+ nid_a = stalids[biome][2][1]
+ nid_b = stalids[biome][2][2]
+ end
+
+ local bot = math.random(-H_CLAC, -6) --grab a random height for the stalagmite
+ for j = bot, 0 do --y
+ for k = -3, 3 do
+ for l = -3, 3 do
+ if j >= -1 then
+ if k*k + l*l <= 9 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_s
+ end
+ elseif j >= bot/5 then
+ if k*k + l*l <= 4 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_a
+ end
+ elseif j >= bot/5 * 3 then
+ if k*k + l*l <= 1 then
+ local vi = area:index(x+k, y+j, z+l-3)
+ data[vi] = nid_b
+ end
+ else
+ local vi = area:index(x, y+j, z-3)
+ data[vi] = nid_b
+ end
+ end
+ end
+ end
+end
+
+--function to create giant 'shrooms
+function caverealms:giant_shroom(x, y, z, area, data)
+
+ if not caverealms:below_solid(x,y,z,area,data) then
+ return
+ end
+
+ --as usual, grab the content ID's
+ local c_stem = minetest.get_content_id("caverealms:mushroom_stem")
+ local c_cap = minetest.get_content_id("caverealms:mushroom_cap")
+ local c_gills = minetest.get_content_id("caverealms:mushroom_gills")
+
+ z = z - 5
+ --cap
+ for k = -5, 5 do
+ for l = -5, 5 do
+ if k*k + l*l <= 25 then
+ local vi = area:index(x+k, y+5, z+l)
+ data[vi] = c_cap
+ end
+ if k*k + l*l <= 16 then
+ local vi = area:index(x+k, y+6, z+l)
+ data[vi] = c_cap
+ vi = area:index(x+k, y+5, z+l)
+ data[vi] = c_gills
+ end
+ if k*k + l*l <= 9 then
+ local vi = area:index(x+k, y+7, z+l)
+ data[vi] = c_cap
+ end
+ if k*k + l*l <= 4 then
+ local vi = area:index(x+k, y+8, z+l)
+ data[vi] = c_cap
+ end
+ end
+ end
+ --stem
+ for j = 0, 5 do
+ for k = -1,1 do
+ local vi = area:index(x+k, y+j, z)
+ data[vi] = c_stem
+ if k == 0 then
+ local ai = area:index(x, y+j, z+1)
+ data[ai] = c_stem
+ ai = area:index(x, y+j, z-1)
+ data[ai] = c_stem
+ end
+ end
+ end
+end
+
+function caverealms:legacy_giant_shroom(x, y, z, area, data) --leftovers :P
+ --as usual, grab the content ID's
+ local c_stem = minetest.get_content_id("caverealms:mushroom_stem")
+ local c_cap = minetest.get_content_id("caverealms:mushroom_cap")
+
+ z = z - 4
+ --cap
+ for k = -4, 4 do
+ for l = -4, 4 do
+ if k*k + l*l <= 16 then
+ local vi = area:index(x+k, y+5, z+l)
+ data[vi] = c_cap
+ end
+ if k*k + l*l <= 9 then
+ local vi = area:index(x+k, y+4, z+l)
+ data[vi] = c_cap
+ vi = area:index(x+k, y+6, z+l)
+ data[vi] = c_cap
+ end
+ if k*k + l*l <= 4 then
+ local vi = area:index(x+k, y+7, z+l)
+ data[vi] = c_cap
+ end
+ end
+ end
+ --stem
+ for j = 0, 4 do
+ for k = -1,1 do
+ local vi = area:index(x+k, y+j, z)
+ data[vi] = c_stem
+ if k == 0 then
+ local ai = area:index(x, y+j, z+1)
+ data[ai] = c_stem
+ ai = area:index(x, y+j, z-1)
+ data[ai] = c_stem
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/caverealms/init.lua b/caverealms/init.lua
new file mode 100644
index 0000000..c13671b
--- /dev/null
+++ b/caverealms/init.lua
@@ -0,0 +1,297 @@
+-- caverealms v.0.3 by HeroOfTheWinds
+-- original cave code modified from paramat's subterrain
+-- For Minetest 0.4.8 stable
+-- Depends default
+-- License: code WTFPL
+
+
+caverealms = {} --create a container for functions and constants
+
+--grab a shorthand for the filepath of the mod
+local modpath = minetest.get_modpath(minetest.get_current_modname())
+
+--load companion lua files
+dofile(modpath.."/config.lua") --configuration file; holds various constants
+dofile(modpath.."/crafting.lua") --crafting recipes
+dofile(modpath.."/nodes.lua") --node definitions
+dofile(modpath.."/functions.lua") --function definitions
+
+if caverealms.config.falling_icicles == true then
+ dofile(modpath.."/falling_ice.lua") --complicated function for falling icicles
+ print("[caverealms] falling icicles enabled.")
+end
+
+-- Parameters
+
+local YMIN = caverealms.config.ymin -- Approximate realm limits.
+local YMAX = caverealms.config.ymax
+local TCAVE = caverealms.config.tcave --0.5 -- Cave threshold. 1 = small rare caves, 0.5 = 1/3rd ground volume, 0 = 1/2 ground volume
+local BLEND = 128 -- Cave blend distance near YMIN, YMAX
+
+local STAGCHA = caverealms.config.stagcha --0.002 --chance of stalagmites
+local STALCHA = caverealms.config.stalcha --0.003 --chance of stalactites
+local CRYSTAL = caverealms.config.crystal --0.007 --chance of glow crystal formations
+local GEMCHA = caverealms.config.gemcha --0.03 --chance of small glow gems
+local MUSHCHA = caverealms.config.mushcha --0.04 --chance of mushrooms
+local MYCCHA = caverealms.config.myccha --0.03 --chance of mycena mushrooms
+local WORMCHA = caverealms.config.wormcha --0.03 --chance of glow worms
+local GIANTCHA = caverealms.config.giantcha --0.001 -- chance of giant mushrooms
+local ICICHA = caverealms.config.icicha --0.035 -- chance of icicles
+
+-- 3D noise for caves
+
+local np_cave = {
+ offset = 0,
+ scale = 1,
+ spread = {x=512, y=256, z=512}, -- squashed 2:1
+ seed = 59033,
+ octaves = 6,
+ persist = 0.63
+}
+
+-- 3D noise for wave
+
+local np_wave = {
+ offset = 0,
+ scale = 1,
+ spread = {x=256, y=256, z=256},
+ seed = -400000000089,
+ octaves = 3,
+ persist = 0.67
+}
+
+-- 2D noise for biome
+
+local np_biome = {
+ offset = 0,
+ scale = 1,
+ spread = {x=250, y=250, z=250},
+ seed = 9130,
+ octaves = 3,
+ persist = 0.5
+}
+
+-- Stuff
+
+subterrain = {}
+
+local yblmin = YMIN + BLEND * 1.5
+local yblmax = YMAX - BLEND * 1.5
+
+-- On generated function
+
+minetest.register_on_generated(function(minp, maxp, seed)
+ --if out of range of caverealms limits
+ if minp.y > YMAX or maxp.y < YMIN then
+ return --quit; otherwise, you'd have stalagmites all over the place
+ end
+
+ --easy reference to commonly used values
+ local t1 = os.clock()
+ local x1 = maxp.x
+ local y1 = maxp.y
+ local z1 = maxp.z
+ local x0 = minp.x
+ local y0 = minp.y
+ local z0 = minp.z
+
+ print ("[caverealms] chunk minp ("..x0.." "..y0.." "..z0..")") --tell people you are generating a chunk
+
+ local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
+ local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
+ local data = vm:get_data()
+
+ --grab content IDs
+ local c_air = minetest.get_content_id("air")
+ local c_stone = minetest.get_content_id("default:stone")
+ local c_water = minetest.get_content_id("default:water_source")
+ local c_lava = minetest.get_content_id("default:lava_source")
+ local c_ice = minetest.get_content_id("default:ice")
+ local c_thinice = minetest.get_content_id("caverealms:thin_ice")
+ local c_crystal = minetest.get_content_id("caverealms:glow_crystal")
+ local c_gem1 = minetest.get_content_id("caverealms:glow_gem")
+ local c_gem2 = minetest.get_content_id("caverealms:glow_gem_2")
+ local c_gem3 = minetest.get_content_id("caverealms:glow_gem_3")
+ local c_gem4 = minetest.get_content_id("caverealms:glow_gem_4")
+ local c_gem5 = minetest.get_content_id("caverealms:glow_gem_5")
+ local c_moss = minetest.get_content_id("caverealms:stone_with_moss")
+ local c_lichen = minetest.get_content_id("caverealms:stone_with_lichen")
+ local c_algae = minetest.get_content_id("caverealms:stone_with_algae")
+ local c_fungus = minetest.get_content_id("caverealms:fungus")
+ local c_mycena = minetest.get_content_id("caverealms:mycena")
+ local c_worm = minetest.get_content_id("caverealms:glow_worm")
+ local c_iciu = minetest.get_content_id("caverealms:icicle_up")
+ local c_icid = minetest.get_content_id("caverealms:icicle_down")
+
+ --mandatory values
+ local sidelen = x1 - x0 + 1 --length of a mapblock
+ local chulens = {x=sidelen, y=sidelen, z=sidelen} --table of chunk edges
+ local minposxyz = {x=x0, y=y0, z=z0} --bottom corner
+ local minposxz = {x=x0, y=z0} --2D bottom corner
+
+ local nvals_cave = minetest.get_perlin_map(np_cave, chulens):get3dMap_flat(minposxyz) --cave noise for structure
+ local nvals_wave = minetest.get_perlin_map(np_wave, chulens):get3dMap_flat(minposxyz) --wavy structure of cavern ceilings and floors
+ local nvals_biome = minetest.get_perlin_map(np_biome, chulens):get2dMap_flat({x=x0+150, y=z0+50}) --2D noise for biomes (will be 3D humidity/temp later)
+
+ local nixyz = 1 --3D node index
+ local nixz = 1 --2D node index
+ local nixyz2 = 1 --second 3D index for second loop
+
+ for z = z0, z1 do -- for each xy plane progressing northwards
+ --structure loop
+ for y = y0, y1 do -- for each x row progressing upwards
+ local tcave --declare variable
+ --determine the overal cave threshold
+ if y < yblmin then
+ tcave = TCAVE + ((yblmin - y) / BLEND) ^ 2
+ elseif y > yblmax then
+ tcave = TCAVE + ((y - yblmax) / BLEND) ^ 2
+ else
+ tcave = TCAVE
+ end
+ local vi = area:index(x0, y, z) --current node index
+ for x = x0, x1 do -- for each node do
+ if (nvals_cave[nixyz] + nvals_wave[nixyz])/2 > tcave then --if node falls within cave threshold
+ data[vi] = c_air --hollow it out to make the cave
+ end
+ --increment indices
+ nixyz = nixyz + 1
+ vi = vi + 1
+ end
+ end
+
+ --decoration loop
+ for y = y0, y1 do -- for each x row progressing upwards
+ local tcave --same as above
+ if y < yblmin then
+ tcave = TCAVE + ((yblmin - y) / BLEND) ^ 2
+ elseif y > yblmax then
+ tcave = TCAVE + ((y - yblmax) / BLEND) ^ 2
+ else
+ tcave = TCAVE
+ end
+ local vi = area:index(x0, y, z)
+ for x = x0, x1 do -- for each node do
+
+ --determine biome
+ local biome = false --preliminary declaration
+ n_biome = nvals_biome[nixz] --make an easier reference to the noise
+ --compare noise values to determine a biome
+ if n_biome >= 0 and n_biome < 0.5 then
+ biome = 1 --moss
+ elseif n_biome <= -0.5 then
+ biome = 2 --fungal
+ elseif n_biome >= 0.5 then
+ if n_biome >= 0.7 then
+ biome = 5 --deep glaciated
+ else
+ biome = 4 --glaciated
+ end
+ else
+ biome = 3 --algae
+ end
+
+ if math.floor(((nvals_cave[nixyz2] + nvals_wave[nixyz2])/2)*100) == math.floor(tcave*100) then
+ --ceiling
+ local ai = area:index(x,y+1,z) --above index
+ if data[ai] == c_stone and data[vi] == c_air then --ceiling
+ if math.random() < ICICHA and (biome == 4 or biome == 5) then
+ data[vi] = c_icid
+ end
+ if math.random() < WORMCHA then
+ data[vi] = c_worm
+ local bi = area:index(x,y-1,z)
+ data[bi] = c_worm
+ if math.random(2) == 1 then
+ local bbi = area:index(x,y-2,z)
+ data[bbi] = c_worm
+ if math.random(2) ==1 then
+ local bbbi = area:index(x,y-3,z)
+ data[bbbi] = c_worm
+ end
+ end
+ end
+ if math.random() < STALCHA then
+ caverealms:stalactite(x,y,z, area, data)
+ end
+ if math.random() < CRYSTAL then
+ caverealms:crystal_stalactite(x,y,z, area, data, biome)
+ end
+ end
+ --ground
+ local bi = area:index(x,y-1,z) --below index
+ if data[bi] == c_stone and data[vi] == c_air then --ground
+ local ai = area:index(x,y+1,z)
+ --place floor material, add plants/decorations
+ if biome == 1 then
+ data[vi] = c_moss
+ if math.random() < GEMCHA then
+ -- gems of random size
+ local gems = { c_gem1, c_gem2, c_gem3, c_gem4, c_gem5 }
+ local gidx = math.random(1, 12)
+ if gidx > 5 then
+ gidx = 1
+ end
+ data[ai] = gems[gidx]
+ end
+ elseif biome == 2 then
+ data[vi] = c_lichen
+ if math.random() < MUSHCHA then --mushrooms
+ data[ai] = c_fungus
+ end
+ if math.random() < MYCCHA then --mycena mushrooms
+ data[ai] = c_mycena
+ end
+ if math.random() < GIANTCHA then --giant mushrooms
+ caverealms:giant_shroom(x, y, z, area, data)
+ end
+ elseif biome == 3 then
+ data[vi] = c_algae
+ elseif biome == 4 then
+ data[vi] = c_thinice
+ local bi = area:index(x,y-1,z)
+ data[bi] = c_thinice
+ if math.random() < ICICHA then --if glaciated, place icicles
+ data[ai] = c_iciu
+ end
+ elseif biome == 5 then
+ data[vi] = c_ice
+ local bi = area:index(x,y-1,z)
+ data[bi] = c_ice
+ if math.random() < ICICHA then --if glaciated, place icicles
+ data[ai] = c_iciu
+ end
+ end
+
+ if math.random() < STAGCHA then
+ caverealms:stalagmite(x,y,z, area, data)
+ end
+ if math.random() < CRYSTAL then
+ caverealms:crystal_stalagmite(x,y,z, area, data, biome)
+ end
+ end
+
+ end
+ nixyz2 = nixyz2 + 1
+ nixz = nixz + 1
+ vi = vi + 1
+ end
+ nixz = nixz - sidelen --shift the 2D index back
+ end
+ nixz = nixz + sidelen --shift the 2D index up a layer
+ end
+
+ --send data back to voxelmanip
+ vm:set_data(data)
+ --calc lighting
+ vm:set_lighting({day=0, night=0})
+ vm:calc_lighting()
+ --write it to world
+ vm:write_to_map(data)
+
+ local chugent = math.ceil((os.clock() - t1) * 1000) --grab how long it took
+ print ("[caverealms] "..chugent.." ms") --tell people how long
+end)
+
+
+print("[caverealms] loaded!")
diff --git a/caverealms/nodes.lua b/caverealms/nodes.lua
new file mode 100644
index 0000000..7588234
--- /dev/null
+++ b/caverealms/nodes.lua
@@ -0,0 +1,325 @@
+-- CaveRealms nodes.lua
+
+--NODES--
+
+local FALLING_ICICLES = caverealms.config.falling_icicles --true --toggle to turn on or off falling icicles in glaciated biome
+local FALLCHA = caverealms.config.fallcha --0.33 --chance of causing the structure to fall
+
+
+--glowing crystal
+minetest.register_node("caverealms:glow_crystal", {
+ description = "Glow Crystal",
+ tiles = {"caverealms_glow_crystal.png"},
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 13,
+ paramtype = "light",
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+})
+
+--glowing emerald
+minetest.register_node("caverealms:glow_emerald", {
+ description = "Glow Emerald",
+ tiles = {"caverealms_glow_emerald.png"},
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 13,
+ paramtype = "light",
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+})
+
+--glowing mese crystal blocks
+minetest.register_node("caverealms:glow_mese", {
+ description = "Mese Crystal Block",
+ tiles = {"caverealms_glow_mese.png"},
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 13,
+ paramtype = "light",
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+})
+
+--embedded crystal
+minetest.register_node("caverealms:glow_ore", {
+ description = "Glow Crystal Ore",
+ tiles = {"caverealms_glow_ore.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 10,
+ paramtype = "light",
+})
+
+--embedded emerald
+minetest.register_node("caverealms:glow_emerald_ore", {
+ description = "Glow Emerald Ore",
+ tiles = {"caverealms_glow_emerald_ore.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 10,
+ paramtype = "light",
+})
+
+--thin (transparent) ice
+minetest.register_node("caverealms:thin_ice", {
+ description = "Thin Ice",
+ tiles = {"caverealms_thin_ice.png"},
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+ freezemelt = "default:water_source",
+ paramtype = "light",
+})
+
+--alternate version for stalactites
+minetest.register_node("caverealms:hanging_thin_ice", {
+ description = "Thin Ice",
+ tiles = {"caverealms_thin_ice.png"},
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+ use_texture_alpha = true,
+ drawtype = "glasslike",
+ sunlight_propagates = true,
+ drop = "caverealms:thin_ice",
+ freezemelt = "default:water_flowing",
+ paramtype = "light",
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ if FALLING_ICICLES then
+ if math.random() <= FALLCHA then
+ obj = minetest.add_entity(pos, "caverealms:falling_ice")
+ obj:get_luaentity():set_node(oldnode)
+ for y = -13, 13 do
+ for x = -3, 3 do
+ for z = -3, 3 do
+ local npos = {x=pos.x+x, y=pos.y+y, z=pos.z+z}
+ if minetest.get_node(npos).name == "caverealms:hanging_thin_ice" then
+ nobj = minetest.add_entity(npos, "caverealms:falling_ice")
+ nobj:get_luaentity():set_node(oldnode)
+ minetest.remove_node(npos)
+ end
+ end
+ end
+ end
+ minetest.remove_node(pos)
+ else
+ return 1
+ end
+ else
+ return 1
+ end
+ end,
+})
+
+--glowing crystal gem
+local glow_gem_size = { 1.0, 1.2, 1.4, 1.6, 1.7 }
+
+for i in ipairs(glow_gem_size) do
+ if i == 1 then
+ nodename = "caverealms:glow_gem"
+ else
+ nodename = "caverealms:glow_gem_"..i
+ end
+
+ vs = glow_gem_size[i]
+
+ minetest.register_node(nodename, {
+ description = "Glow Gem",
+ tiles = {"caverealms_glow_gem.png"},
+ inventory_image = "caverealms_glow_gem.png",
+ wield_image = "caverealms_glow_gem.png",
+ is_ground_content = true,
+ groups = {cracky=3, oddly_breakable_by_hand=1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 11,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = vs,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5*vs, -0.5*vs, -0.5*vs, 0.5*vs, -5/16*vs, 0.5*vs},
+ }
+ })
+end
+
+--upward pointing icicle
+minetest.register_node("caverealms:icicle_up", {
+ description = "Icicle",
+ tiles = {"caverealms_icicle_up.png"},
+ inventory_image = "caverealms_icicle_up.png",
+ wield_image = "caverealms_icicle_up.png",
+ is_ground_content = true,
+ groups = {cracky=3, oddly_breakable_by_hand=1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 8,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ },
+})
+
+--downward pointing icicle
+minetest.register_node("caverealms:icicle_down", {
+ description = "Icicle",
+ tiles = {"caverealms_icicle_down.png"},
+ inventory_image = "caverealms_icicle_down.png",
+ wield_image = "caverealms_icicle_down.png",
+ is_ground_content = true,
+ groups = {cracky=3, oddly_breakable_by_hand=1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 8,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ },
+})
+
+--cave mossy cobble - bluish?
+minetest.register_node("caverealms:stone_with_moss", {
+ description = "Cave Stone with Moss",
+ tiles = {"default_cobble.png^caverealms_moss.png", "default_cobble.png", "default_cobble.png^caverealms_moss_side.png"},
+ is_ground_content = true,
+ groups = {crumbly=3},
+ drop = 'default:cobble',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+})
+
+--cave lichen-covered cobble - purple-ish
+minetest.register_node("caverealms:stone_with_lichen", {
+ description = "Cave Stone with Lichen",
+ tiles = {"default_cobble.png^caverealms_lichen.png", "default_cobble.png", "default_cobble.png^caverealms_lichen_side.png"},
+ is_ground_content = true,
+ groups = {crumbly=3},
+ drop = 'default:cobble',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+})
+
+--cave algae-covered cobble - yellow-ish
+minetest.register_node("caverealms:stone_with_algae", {
+ description = "Cave Stone with Algae",
+ tiles = {"default_cobble.png^caverealms_algae.png", "default_cobble.png", "default_cobble.png^caverealms_algae_side.png"},
+ is_ground_content = true,
+ groups = {crumbly=3},
+ drop = 'default:cobble',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+})
+
+--glow worms
+minetest.register_node("caverealms:glow_worm", {
+ description = "Glow Worms",
+ tiles = {"caverealms_glow_worm.png"},
+ inventory_image = "caverealms_glow_worm.png",
+ wield_image = "caverealms_glow_worm.png",
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand=3},
+ light_source = 9,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.5, 0.5},
+ },
+})
+
+--cave plants go here
+
+--glowing fungi
+minetest.register_node("caverealms:fungus", {
+ description = "Glowing Fungus",
+ tiles = {"caverealms_fungi.png"},
+ inventory_image = "caverealms_fungi.png",
+ wield_image = "caverealms_fungi.png",
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand=3},
+ light_source = 5,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ },
+})
+
+--mycena mushroom
+minetest.register_node("caverealms:mycena", {
+ description = "Mycena Mushroom",
+ tiles = {"caverealms_mycena.png"},
+ inventory_image = "caverealms_mycena.png",
+ wield_image = "caverealms_mycena.png",
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand=3},
+ light_source = 6,
+ paramtype = "light",
+ drawtype = "plantlike",
+ walkable = false,
+ buildable_to = true,
+ visual_scale = 1.0,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
+ },
+})
+
+--giant mushroom
+--stem
+minetest.register_node("caverealms:mushroom_stem", {
+ description = "Giant Mushroom Stem",
+ tiles = {"caverealms_mushroom_stem.png"},
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand=1},
+})
+
+--cap
+minetest.register_node("caverealms:mushroom_cap", {
+ description = "Giant Mushroom Cap",
+ tiles = {"caverealms_mushroom_cap.png"},
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand=1},
+})
+
+--gills
+minetest.register_node("caverealms:mushroom_gills", {
+ description = "Giant Mushroom Gills",
+ tiles = {"caverealms_mushroom_gills.png"},
+ is_ground_content = true,
+ groups = {oddly_breakable_by_hand=1},
+ drawtype = "plantlike",
+ paramtype = "light",
+})
diff --git a/caverealms/textures/Thumbs.db b/caverealms/textures/Thumbs.db
new file mode 100644
index 0000000..277f856
--- /dev/null
+++ b/caverealms/textures/Thumbs.db
Binary files differ
diff --git a/caverealms/textures/caverealms_algae.png b/caverealms/textures/caverealms_algae.png
new file mode 100644
index 0000000..da130aa
--- /dev/null
+++ b/caverealms/textures/caverealms_algae.png
Binary files differ
diff --git a/caverealms/textures/caverealms_algae_side.png b/caverealms/textures/caverealms_algae_side.png
new file mode 100644
index 0000000..c857c65
--- /dev/null
+++ b/caverealms/textures/caverealms_algae_side.png
Binary files differ
diff --git a/caverealms/textures/caverealms_fungi.png b/caverealms/textures/caverealms_fungi.png
new file mode 100644
index 0000000..2785308
--- /dev/null
+++ b/caverealms/textures/caverealms_fungi.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_crystal.png b/caverealms/textures/caverealms_glow_crystal.png
new file mode 100644
index 0000000..63ebb5c
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_crystal.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_emerald.png b/caverealms/textures/caverealms_glow_emerald.png
new file mode 100644
index 0000000..6d5c157
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_emerald.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_emerald_ore.png b/caverealms/textures/caverealms_glow_emerald_ore.png
new file mode 100644
index 0000000..0e008a7
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_emerald_ore.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_gem.png b/caverealms/textures/caverealms_glow_gem.png
new file mode 100644
index 0000000..a18de24
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_gem.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_mese.png b/caverealms/textures/caverealms_glow_mese.png
new file mode 100644
index 0000000..f48fbe0
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_mese.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_ore.png b/caverealms/textures/caverealms_glow_ore.png
new file mode 100644
index 0000000..4ce9165
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_ore.png
Binary files differ
diff --git a/caverealms/textures/caverealms_glow_worm.png b/caverealms/textures/caverealms_glow_worm.png
new file mode 100644
index 0000000..37d8966
--- /dev/null
+++ b/caverealms/textures/caverealms_glow_worm.png
Binary files differ
diff --git a/caverealms/textures/caverealms_icicle_down.png b/caverealms/textures/caverealms_icicle_down.png
new file mode 100644
index 0000000..2663c7a
--- /dev/null
+++ b/caverealms/textures/caverealms_icicle_down.png
Binary files differ
diff --git a/caverealms/textures/caverealms_icicle_up.png b/caverealms/textures/caverealms_icicle_up.png
new file mode 100644
index 0000000..ff9ee25
--- /dev/null
+++ b/caverealms/textures/caverealms_icicle_up.png
Binary files differ
diff --git a/caverealms/textures/caverealms_lichen.png b/caverealms/textures/caverealms_lichen.png
new file mode 100644
index 0000000..f38fe76
--- /dev/null
+++ b/caverealms/textures/caverealms_lichen.png
Binary files differ
diff --git a/caverealms/textures/caverealms_lichen_side.png b/caverealms/textures/caverealms_lichen_side.png
new file mode 100644
index 0000000..024de44
--- /dev/null
+++ b/caverealms/textures/caverealms_lichen_side.png
Binary files differ
diff --git a/caverealms/textures/caverealms_moss.png b/caverealms/textures/caverealms_moss.png
new file mode 100644
index 0000000..2d8a27b
--- /dev/null
+++ b/caverealms/textures/caverealms_moss.png
Binary files differ
diff --git a/caverealms/textures/caverealms_moss_side.png b/caverealms/textures/caverealms_moss_side.png
new file mode 100644
index 0000000..277bb54
--- /dev/null
+++ b/caverealms/textures/caverealms_moss_side.png
Binary files differ
diff --git a/caverealms/textures/caverealms_mushroom_cap.png b/caverealms/textures/caverealms_mushroom_cap.png
new file mode 100644
index 0000000..0514fff
--- /dev/null
+++ b/caverealms/textures/caverealms_mushroom_cap.png
Binary files differ
diff --git a/caverealms/textures/caverealms_mushroom_cap_legacy.png b/caverealms/textures/caverealms_mushroom_cap_legacy.png
new file mode 100644
index 0000000..7967ee9
--- /dev/null
+++ b/caverealms/textures/caverealms_mushroom_cap_legacy.png
Binary files differ
diff --git a/caverealms/textures/caverealms_mushroom_gills.png b/caverealms/textures/caverealms_mushroom_gills.png
new file mode 100644
index 0000000..92b28a8
--- /dev/null
+++ b/caverealms/textures/caverealms_mushroom_gills.png
Binary files differ
diff --git a/caverealms/textures/caverealms_mushroom_stem.png b/caverealms/textures/caverealms_mushroom_stem.png
new file mode 100644
index 0000000..d4e5601
--- /dev/null
+++ b/caverealms/textures/caverealms_mushroom_stem.png
Binary files differ
diff --git a/caverealms/textures/caverealms_mycena.png b/caverealms/textures/caverealms_mycena.png
new file mode 100644
index 0000000..7ab3ad8
--- /dev/null
+++ b/caverealms/textures/caverealms_mycena.png
Binary files differ
diff --git a/caverealms/textures/caverealms_mycena_powder.png b/caverealms/textures/caverealms_mycena_powder.png
new file mode 100644
index 0000000..22e3537
--- /dev/null
+++ b/caverealms/textures/caverealms_mycena_powder.png
Binary files differ
diff --git a/caverealms/textures/caverealms_thin_ice.png b/caverealms/textures/caverealms_thin_ice.png
new file mode 100644
index 0000000..0d0820f
--- /dev/null
+++ b/caverealms/textures/caverealms_thin_ice.png
Binary files differ
diff --git a/coloredwood/LICENSE b/coloredwood/LICENSE
new file mode 100644
index 0000000..72ed5e0
--- /dev/null
+++ b/coloredwood/LICENSE
@@ -0,0 +1,240 @@
+For the code:
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+----------
+
+For the textures:
+
+Creative Commons Legal Code
+
+Attribution-ShareAlike 2.0
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
+ "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
+ "Licensor" means the individual or entity that offers the Work under the terms of this License.
+ "Original Author" means the individual or entity who created the Work.
+ "Work" means the copyrightable work of authorship offered under the terms of this License.
+ "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+ "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+ to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
+ to create and reproduce Derivative Works;
+ to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
+ to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
+
+ For the avoidance of doubt, where the work is a musical composition:
+ Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
+ Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
+ Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested.
+ You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
+ If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+ Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+ If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+ This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at http://creativecommons.org/.
+
diff --git a/coloredwood/README b/coloredwood/README
new file mode 100644
index 0000000..ad05b71
--- /dev/null
+++ b/coloredwood/README
@@ -0,0 +1,75 @@
+Vanessa's Colored Woods mod
+===========================
+
+This mod provides a multitude of colors of wood, sticks, and fences to
+Minetest, as per the palette outlined by my Unified Dyes mod.
+
+Requires unifieddyes and flowers if you want to craft the various items. If
+you don't have (or don't want to use) those two mods, you can also use /giveme
+to get the items you want.
+
+Objects and their texture files are named using the same scheme as UnifiedDyes:
+
+coloredwood:wood_red
+coloredwood:stick_dark_green
+coloredwood:fence_medium_blue_s50
+
+And so on.
+
+
+Crafting
+========
+
+Colored wood blocks
+-------------------
+
+Place two regular wood blocks and one portion of the desired dye color
+into the crafting grid, in any position. Yields two colored wood blocks. Use
+these directly to build with, or craft them into sticks.
+
+
+Colored sticks
+--------------
+
+Just drop a colored wood block into the crafting grid as you would with an
+uncolored wood block. Yields 4 sticks of the same color as the wood block.
+
+While you cannot directly dye uncolored sticks, you can use them to craft
+colored fences.
+
+
+Colored fences
+--------------
+
+Lay out six of the above colored sticks (must be all the same color) in the
+usual two-row fence-crafting pattern. Yields two colored fenceposts).
+
+ ---- ---- ----
+CStick CStick CStick
+CStick CStick CStick
+
+OR: Lay out six regular sticks in the usual fence-crafting pattern, plus one
+portion of the desired dye color in the upper left corner of the grid (yields
+two colored fenceposts):
+
+ Dye --- ---
+Stick Stick Stick
+Stick Stick Stick
+
+OR: Place two regular wooden fenceposts into the crafting grid along with one
+portion of the desired dye color, in any position. Yields two colored
+fenceposts.
+
+
+Ladders
+-------
+
+Finally, if you find yourself short on uncolored sticks to make ladders out of,
+and you have a surplus of one or more colors, you can craft them into regular,
+uncolored ladders. Place any colored sticks you want, in any combination, into
+the crafting grid in the standard ladder pattern. Yields two colored ladders
+(to try to make up for the wasted dye).
+
+CStick ---- CStick
+CStick CStick CStick
+CStick ---- CStick
diff --git a/coloredwood/depends.txt b/coloredwood/depends.txt
new file mode 100644
index 0000000..f727feb
--- /dev/null
+++ b/coloredwood/depends.txt
@@ -0,0 +1,3 @@
+default
+unifieddyes
+moreblocks?
diff --git a/coloredwood/fence.lua b/coloredwood/fence.lua
new file mode 100644
index 0000000..fd6c312
--- /dev/null
+++ b/coloredwood/fence.lua
@@ -0,0 +1,301 @@
+-- Fences portion of Colored Wood mod by Vanessa Ezekowitz ~~ 2012-07-17
+-- based on my unified dyes modding template.
+--
+-- License: WTFPL
+
+local colored_block_modname = "coloredwood"
+local colored_block_description = "Wooden Fence"
+local neutral_block = "default:fence_wood"
+local colored_block_sunlight = "false"
+local colored_block_walkable = "true"
+local colored_block_groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1}
+local colored_block_sound = "default.node_sound_wood_defaults()"
+
+for shade = 1, 3 do
+
+ local shadename = coloredwood.shades[shade]
+ local shadename2 = coloredwood.shades2[shade]
+
+ for hue = 1, 12 do
+
+ local huename = coloredwood.hues[hue]
+ local huename2 = coloredwood.hues2[hue]
+
+ local colorname = colored_block_modname..":fence_"..shadename..huename
+ local pngnameinv = colored_block_modname.."_fence_"..shadename..huename..".png"
+ local pngname = colored_block_modname.."_wood_"..shadename..huename..".png"
+ local nodedesc = shadename2..huename2..colored_block_description
+ local stickname = colored_block_modname..":stick_"..shadename..huename
+
+ local s50colorname = colored_block_modname..":fence_"..shadename..huename.."_s50"
+ local s50pngname = colored_block_modname.."_wood_"..shadename..huename.."_s50.png"
+ local s50pngnameinv = colored_block_modname.."_fence_"..shadename..huename.."_s50.png"
+ local s50nodedesc = shadename2..huename2..colored_block_description.." (50% Saturation)"
+ local s50stickname = colored_block_modname..":stick_"..shadename..huename.."_s50"
+
+ minetest.register_node(colorname, {
+ drawtype = "fencelike",
+ description = nodedesc,
+ tiles = { pngname },
+ inventory_image = pngnameinv,
+ wield_image = pngnameinv,
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ })
+
+ minetest.register_node(s50colorname, {
+ drawtype = "fencelike",
+ description = s50nodedesc,
+ tiles = { s50pngname },
+ inventory_image = s50pngnameinv,
+ wield_image = s50pngnameinv,
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = s50colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft({
+ output = colorname.." 2" ,
+ recipe = {
+ {stickname, stickname, stickname },
+ {stickname, stickname, stickname }
+ }
+ })
+
+ minetest.register_craft({
+ output = s50colorname.." 2",
+ recipe = {
+ {s50stickname, s50stickname, s50stickname },
+ {s50stickname, s50stickname, s50stickname }
+ }
+ })
+
+ minetest.register_craft({
+ output = colorname.." 2",
+ recipe = {
+ { "unifieddyes:"..shadename..huename, "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+ })
+
+ minetest.register_craft({
+ output = s50colorname.." 2",
+ recipe = {
+ { "unifieddyes:"..shadename..huename.."_s50", "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ "unifieddyes:"..shadename..huename
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ "unifieddyes:"..shadename..huename.."_s50"
+ },
+ })
+
+ end
+end
+
+-- Generate the "light" shades separately, since they don"t have a low-sat version.
+
+for hue = 1, 12 do
+ local huename = coloredwood.hues[hue]
+ local huename2 = coloredwood.hues2[hue]
+ local colorname = colored_block_modname..":fence_light_"..huename
+ local pngname = colored_block_modname.."_wood_light_"..huename..".png"
+ local pngnameinv = colored_block_modname.."_fence_light_"..huename..".png"
+ local nodedesc = "Light "..huename2..colored_block_description
+ local stickname = colored_block_modname..":stick_light_"..huename
+
+ minetest.register_node(colorname, {
+ drawtype = "fencelike",
+ description = nodedesc,
+ tiles = { pngname },
+ inventory_image = pngnameinv,
+ wield_image = pngnameinv,
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft({
+ output = colorname.." 2",
+ recipe = {
+ {stickname, stickname, stickname },
+ {stickname, stickname, stickname }
+ }
+ })
+
+ minetest.register_craft({
+ output = colorname.." 2",
+ recipe = {
+ { "unifieddyes:light_"..huename, "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ "unifieddyes:light_"..huename
+ },
+ })
+end
+
+-- extra recipes for default dye colors.
+
+for _, color in ipairs(coloredwood.default_hues) do
+ minetest.register_craft({
+ output = "coloredwood:fence_"..color.." 2",
+ recipe = {
+ { "dye:"..color, "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+ })
+end
+
+minetest.register_craft({
+ output = "coloredwood:fence_light_red 2",
+ recipe = {
+ { "dye:pink", "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+})
+
+minetest.register_craft({
+ output = "coloredwood:fence_dark_orange 2",
+ recipe = {
+ { "dye:brown", "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+})
+
+-- ============================================================
+-- The 5 levels of greyscale.
+--
+-- Oficially these are 0, 25, 50, 75, and 100% relative to white,
+-- but in practice, they"re actually 7.5%, 25%, 50%, 75%, and 95%.
+-- (otherwise black and white would wash out).
+
+for grey = 1,5 do
+
+ local greyname = coloredwood.greys[grey]
+ local greyname2 = coloredwood.greys2[grey]
+ local greyname3 = coloredwood.greys3[grey]
+
+ local greyshadename = colored_block_modname..":fence_"..greyname
+ local pngname = colored_block_modname.."_wood_"..greyname..".png"
+ local pngnameinv = colored_block_modname.."_fence_"..greyname..".png"
+ local nodedesc = greyname2..colored_block_description
+ local stickname = colored_block_modname..":stick_"..greyname
+
+ minetest.register_node(greyshadename, {
+ drawtype = "fencelike",
+ description = nodedesc,
+ tiles = { pngname },
+ inventory_image = pngnameinv,
+ wield_image = pngnameinv,
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = greyshadename,
+ burntime = 7,
+ })
+
+ minetest.register_craft({
+ output = greyshadename.." 2",
+ recipe = {
+ {stickname, stickname, stickname },
+ {stickname, stickname, stickname }
+ }
+ })
+
+ minetest.register_craft({
+ output = greyshadename.." 2",
+ recipe = {
+ { greyname3, "", "" },
+ {"group:stick", "group:stick", "group:stick"},
+ {"group:stick", "group:stick", "group:stick"},
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = greyshadename.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ greyname3
+ },
+ })
+
+end
diff --git a/coloredwood/init.lua b/coloredwood/init.lua
new file mode 100644
index 0000000..23dfa15
--- /dev/null
+++ b/coloredwood/init.lua
@@ -0,0 +1,137 @@
+-- Colored Wood mod by Vanessa Ezekowitz
+-- based on my unifieddyes template.
+--
+-- License: WTFPL
+--
+-- This mod provides 89 colors of wood, fences, and sticks, and enough
+-- cross-compatible recipes to make everything fit together naturally.
+--
+-- Colored wood is crafted by putting two regular wood blocks into the
+-- grid along with one dye color, in any order and position. The result
+-- is two colored wood blocks.
+--
+-- Colored sticks are crafted from colored wood blocks only - one colored
+-- wood block in any position yields 4 colored sticks as usual.
+--
+-- Uncolored sticks cannot be dyed separately, but they can still be used
+-- to build colored wooden fences. These are crafted either by placing six
+-- plain, uncolored sticks into the crafting grid in the usual manner, plus
+-- one portion of dye in the upper-left corner of the grid
+-- (D = dye, S = uncolored stick):
+--
+-- D - -
+-- S S S
+-- S S S
+--
+-- You can also craft a colored fence by using colored sticks derived from
+-- colored wood. Just place six of them in the same manner as with plain
+-- fences (CS = colored stick):
+--
+-- -- -- --
+-- CS CS CS
+-- CS CS CS
+--
+-- If you find yourself with too many colors of sticks and not enough,
+-- ladders, you can use any color (as long as they"re all the same) to
+-- create a ladder, but it"ll always result in a plain, uncolored ladder.
+-- This practice isn"t recommended of course, since it wastes dye.
+--
+-- All materials are flammable and can be used as fuel.
+
+-- Hues are on a 30 degree spacing starting at red = 0 degrees.
+-- "s50" in a file/item name means "saturation: 50%".
+-- Texture brightness levels for the colors are 100%, 66% ("medium"),
+-- and 33% ("dark").
+
+coloredwood = {}
+
+coloredwood.shades = {
+ "dark_",
+ "medium_",
+ "" -- represents "no special shade name", e.g. full.
+}
+
+coloredwood.shades2 = {
+ "Dark ",
+ "Medium ",
+ "" -- represents "no special shade name", e.g. full.
+}
+
+coloredwood.default_hues = {
+ "white",
+ "grey",
+ "dark_grey",
+ "black",
+ "violet",
+ "blue",
+ "cyan",
+ "dark_green",
+ "green",
+ "yellow",
+ "orange",
+ "red",
+ "magenta"
+}
+
+coloredwood.hues = {
+ "red",
+ "orange",
+ "yellow",
+ "lime",
+ "green",
+ "aqua",
+ "cyan",
+ "skyblue",
+ "blue",
+ "violet",
+ "magenta",
+ "redviolet"
+}
+
+coloredwood.hues2 = {
+ "Red ",
+ "Orange ",
+ "Yellow ",
+ "Lime ",
+ "Green ",
+ "Aqua ",
+ "Cyan ",
+ "Sky Blue ",
+ "Blue ",
+ "Violet ",
+ "Magenta ",
+ "Red-violet "
+}
+
+coloredwood.greys = {
+ "black",
+ "darkgrey",
+ "grey",
+ "lightgrey",
+ "white"
+}
+
+coloredwood.greys2 = {
+ "Black ",
+ "Dark Grey ",
+ "Medium Grey ",
+ "Light Grey ",
+ "White "
+}
+
+coloredwood.greys3 = {
+ "dye:black",
+ "dye:dark_grey",
+ "dye:grey",
+ "dye:light_grey",
+ "dye:white"
+}
+
+-- All of the actual code is contained in separate lua files:
+
+dofile(minetest.get_modpath("coloredwood").."/wood.lua")
+dofile(minetest.get_modpath("coloredwood").."/fence.lua")
+dofile(minetest.get_modpath("coloredwood").."/stick.lua")
+
+print("[Colored Wood] Loaded!")
+
diff --git a/coloredwood/stick.lua b/coloredwood/stick.lua
new file mode 100644
index 0000000..11347e2
--- /dev/null
+++ b/coloredwood/stick.lua
@@ -0,0 +1,152 @@
+-- Sticks portion of Colored Wood mod by Vanessa Ezekowitz ~~ 2012-07-17
+-- based on my unified dyes modding template.
+--
+-- License: WTFPL
+
+local colored_block_modname = "coloredwood"
+local colored_block_description = "Stick"
+
+for shade = 1, 3 do
+
+ local shadename = coloredwood.shades[shade]
+ local shadename2 = coloredwood.shades2[shade]
+
+ for hue = 1, 12 do
+
+ local huename = coloredwood.hues[hue]
+ local huename2 = coloredwood.hues2[hue]
+
+ local colorname = colored_block_modname..":stick_"..shadename..huename
+ local pngname = colored_block_modname.."_stick_"..shadename..huename..".png"
+ local itemdesc = shadename2..huename2..colored_block_description
+ local woodname = colored_block_modname..":wood_"..shadename..huename
+ local s50colorname = colored_block_modname..":stick_"..shadename..huename.."_s50"
+ local s50pngname = colored_block_modname.."_stick_"..shadename..huename.."_s50.png"
+ local s50itemdesc = shadename2..huename2..colored_block_description.." (50% Saturation)"
+ local s50woodname = colored_block_modname..":wood_"..shadename..huename.."_s50"
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = s50colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craftitem(colorname, {
+ description = itemdesc,
+ inventory_image = pngname,
+ groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
+ })
+
+ minetest.register_craftitem(s50colorname, {
+ description = s50itemdesc,
+ inventory_image = s50pngname,
+ groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 4",
+ recipe = {
+ woodname
+ }
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = s50colorname.." 4",
+ recipe = {
+ s50woodname
+ }
+ })
+
+ end
+end
+
+-- Generate the "light" shades separately, since they don"t have a low-sat version.
+
+for hue = 1, 12 do
+ local huename = coloredwood.hues[hue]
+ local huename2 = coloredwood.hues2[hue]
+ local colorname = colored_block_modname..":stick_light_"..huename
+ local pngname = colored_block_modname.."_stick_light_"..huename..".png"
+ local itemdesc = "Light "..huename2..colored_block_description
+ local woodname = colored_block_modname..":wood_light_"..huename
+
+ minetest.register_craftitem(colorname, {
+ description = itemdesc,
+ inventory_image = pngname,
+ groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 4",
+ recipe = {
+ woodname
+ }
+ })
+end
+
+
+-- ============================================================
+-- The 5 levels of greyscale.
+--
+-- Oficially these are 0, 25, 50, 75, and 100% relative to white,
+-- but in practice, they"re actually 7.5%, 25%, 50%, 75%, and 95%.
+-- (otherwise black and white would wash out).
+
+for grey = 1,5 do
+
+ local greyname = coloredwood.greys[grey]
+ local greyname2 = coloredwood.greys2[grey]
+
+ local greyshadename = colored_block_modname..":stick_"..greyname
+ local pngname = colored_block_modname.."_stick_"..greyname..".png"
+ local itemdesc = greyname2..colored_block_description
+ local greywoodname = colored_block_modname..":wood_"..greyname
+
+ minetest.register_craftitem(greyshadename, {
+ description = itemdesc,
+ inventory_image = pngname,
+ groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = greyshadename,
+ burntime = 7,
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = greyshadename.." 4",
+ recipe = {
+ greywoodname
+ }
+ })
+
+end
+
+-- ====================================================================
+-- This recipe causes all colored sticks to be usable to craft ladders.
+
+minetest.register_craft({
+ output = "default:ladder 2" ,
+ recipe = {
+ {"group:coloredsticks", "" , "group:coloredsticks" },
+ {"group:coloredsticks", "group:coloredsticks", "group:coloredsticks" },
+ {"group:coloredsticks", "" , "group:coloredsticks" }
+ }
+})
diff --git a/coloredwood/textures/coloredwood_fence_aqua.png b/coloredwood/textures/coloredwood_fence_aqua.png
new file mode 100644
index 0000000..8390a58
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_aqua_s50.png b/coloredwood/textures/coloredwood_fence_aqua_s50.png
new file mode 100644
index 0000000..c00f793
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_black.png b/coloredwood/textures/coloredwood_fence_black.png
new file mode 100644
index 0000000..1db08d4
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_black.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_blue.png b/coloredwood/textures/coloredwood_fence_blue.png
new file mode 100644
index 0000000..98bf09e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_blue_s50.png b/coloredwood/textures/coloredwood_fence_blue_s50.png
new file mode 100644
index 0000000..1c906cf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_cyan.png b/coloredwood/textures/coloredwood_fence_cyan.png
new file mode 100644
index 0000000..4460f99
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_cyan_s50.png b/coloredwood/textures/coloredwood_fence_cyan_s50.png
new file mode 100644
index 0000000..708464f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_aqua.png b/coloredwood/textures/coloredwood_fence_dark_aqua.png
new file mode 100644
index 0000000..ac28745
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_aqua_s50.png b/coloredwood/textures/coloredwood_fence_dark_aqua_s50.png
new file mode 100644
index 0000000..bb185f0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_blue.png b/coloredwood/textures/coloredwood_fence_dark_blue.png
new file mode 100644
index 0000000..2f96ef4
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_blue_s50.png b/coloredwood/textures/coloredwood_fence_dark_blue_s50.png
new file mode 100644
index 0000000..3b917f1
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_cyan.png b/coloredwood/textures/coloredwood_fence_dark_cyan.png
new file mode 100644
index 0000000..7f7b521
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_cyan_s50.png b/coloredwood/textures/coloredwood_fence_dark_cyan_s50.png
new file mode 100644
index 0000000..eecc11d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_green.png b/coloredwood/textures/coloredwood_fence_dark_green.png
new file mode 100644
index 0000000..7065988
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_green_s50.png b/coloredwood/textures/coloredwood_fence_dark_green_s50.png
new file mode 100644
index 0000000..db8bd2d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_lime.png b/coloredwood/textures/coloredwood_fence_dark_lime.png
new file mode 100644
index 0000000..36718e3
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_lime_s50.png b/coloredwood/textures/coloredwood_fence_dark_lime_s50.png
new file mode 100644
index 0000000..33a45bf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_magenta.png b/coloredwood/textures/coloredwood_fence_dark_magenta.png
new file mode 100644
index 0000000..7bb9dd4
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_magenta_s50.png b/coloredwood/textures/coloredwood_fence_dark_magenta_s50.png
new file mode 100644
index 0000000..9995464
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_orange.png b/coloredwood/textures/coloredwood_fence_dark_orange.png
new file mode 100644
index 0000000..7c1f042
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_orange_s50.png b/coloredwood/textures/coloredwood_fence_dark_orange_s50.png
new file mode 100644
index 0000000..84e67e6
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_red.png b/coloredwood/textures/coloredwood_fence_dark_red.png
new file mode 100644
index 0000000..8d77a03
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_red_s50.png b/coloredwood/textures/coloredwood_fence_dark_red_s50.png
new file mode 100644
index 0000000..ddbec1c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_redviolet.png b/coloredwood/textures/coloredwood_fence_dark_redviolet.png
new file mode 100644
index 0000000..41a7d04
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_redviolet_s50.png b/coloredwood/textures/coloredwood_fence_dark_redviolet_s50.png
new file mode 100644
index 0000000..6e09d79
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_skyblue.png b/coloredwood/textures/coloredwood_fence_dark_skyblue.png
new file mode 100644
index 0000000..2e3bf4e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_skyblue_s50.png b/coloredwood/textures/coloredwood_fence_dark_skyblue_s50.png
new file mode 100644
index 0000000..490ab05
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_violet.png b/coloredwood/textures/coloredwood_fence_dark_violet.png
new file mode 100644
index 0000000..960db34
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_violet_s50.png b/coloredwood/textures/coloredwood_fence_dark_violet_s50.png
new file mode 100644
index 0000000..54bb1fc
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_yellow.png b/coloredwood/textures/coloredwood_fence_dark_yellow.png
new file mode 100644
index 0000000..d201993
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_dark_yellow_s50.png b/coloredwood/textures/coloredwood_fence_dark_yellow_s50.png
new file mode 100644
index 0000000..6818b93
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_dark_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_darkgrey.png b/coloredwood/textures/coloredwood_fence_darkgrey.png
new file mode 100644
index 0000000..677160b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_darkgrey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_green.png b/coloredwood/textures/coloredwood_fence_green.png
new file mode 100644
index 0000000..af15169
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_green_s50.png b/coloredwood/textures/coloredwood_fence_green_s50.png
new file mode 100644
index 0000000..bf3781d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_grey.png b/coloredwood/textures/coloredwood_fence_grey.png
new file mode 100644
index 0000000..eb3bf79
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_grey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_aqua.png b/coloredwood/textures/coloredwood_fence_light_aqua.png
new file mode 100644
index 0000000..c704a47
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_blue.png b/coloredwood/textures/coloredwood_fence_light_blue.png
new file mode 100644
index 0000000..501e23d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_cyan.png b/coloredwood/textures/coloredwood_fence_light_cyan.png
new file mode 100644
index 0000000..45c9e2a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_green.png b/coloredwood/textures/coloredwood_fence_light_green.png
new file mode 100644
index 0000000..ce2cdd3
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_lime.png b/coloredwood/textures/coloredwood_fence_light_lime.png
new file mode 100644
index 0000000..d816e8c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_magenta.png b/coloredwood/textures/coloredwood_fence_light_magenta.png
new file mode 100644
index 0000000..1e79216
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_orange.png b/coloredwood/textures/coloredwood_fence_light_orange.png
new file mode 100644
index 0000000..dba6738
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_red.png b/coloredwood/textures/coloredwood_fence_light_red.png
new file mode 100644
index 0000000..bc7a122
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_redviolet.png b/coloredwood/textures/coloredwood_fence_light_redviolet.png
new file mode 100644
index 0000000..12845e6
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_skyblue.png b/coloredwood/textures/coloredwood_fence_light_skyblue.png
new file mode 100644
index 0000000..560523a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_violet.png b/coloredwood/textures/coloredwood_fence_light_violet.png
new file mode 100644
index 0000000..4295800
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_light_yellow.png b/coloredwood/textures/coloredwood_fence_light_yellow.png
new file mode 100644
index 0000000..d3b4a20
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_light_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_lightgrey.png b/coloredwood/textures/coloredwood_fence_lightgrey.png
new file mode 100644
index 0000000..277e446
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_lightgrey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_lime.png b/coloredwood/textures/coloredwood_fence_lime.png
new file mode 100644
index 0000000..e8e5ff5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_lime_s50.png b/coloredwood/textures/coloredwood_fence_lime_s50.png
new file mode 100644
index 0000000..d86aa41
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_magenta.png b/coloredwood/textures/coloredwood_fence_magenta.png
new file mode 100644
index 0000000..9d90aaa
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_magenta_s50.png b/coloredwood/textures/coloredwood_fence_magenta_s50.png
new file mode 100644
index 0000000..fba622a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_aqua.png b/coloredwood/textures/coloredwood_fence_medium_aqua.png
new file mode 100644
index 0000000..d916ab2
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_aqua_s50.png b/coloredwood/textures/coloredwood_fence_medium_aqua_s50.png
new file mode 100644
index 0000000..d608b6c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_blue.png b/coloredwood/textures/coloredwood_fence_medium_blue.png
new file mode 100644
index 0000000..6ba0c83
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_blue_s50.png b/coloredwood/textures/coloredwood_fence_medium_blue_s50.png
new file mode 100644
index 0000000..7ea0c1a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_cyan.png b/coloredwood/textures/coloredwood_fence_medium_cyan.png
new file mode 100644
index 0000000..ad01a05
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_cyan_s50.png b/coloredwood/textures/coloredwood_fence_medium_cyan_s50.png
new file mode 100644
index 0000000..7139a26
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_green.png b/coloredwood/textures/coloredwood_fence_medium_green.png
new file mode 100644
index 0000000..c1ea9fa
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_green_s50.png b/coloredwood/textures/coloredwood_fence_medium_green_s50.png
new file mode 100644
index 0000000..b8e4c21
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_lime.png b/coloredwood/textures/coloredwood_fence_medium_lime.png
new file mode 100644
index 0000000..5654641
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_lime_s50.png b/coloredwood/textures/coloredwood_fence_medium_lime_s50.png
new file mode 100644
index 0000000..b186579
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_magenta.png b/coloredwood/textures/coloredwood_fence_medium_magenta.png
new file mode 100644
index 0000000..4449a65
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_magenta_s50.png b/coloredwood/textures/coloredwood_fence_medium_magenta_s50.png
new file mode 100644
index 0000000..89dc36a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_orange.png b/coloredwood/textures/coloredwood_fence_medium_orange.png
new file mode 100644
index 0000000..5c90092
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_orange_s50.png b/coloredwood/textures/coloredwood_fence_medium_orange_s50.png
new file mode 100644
index 0000000..20a94b6
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_red.png b/coloredwood/textures/coloredwood_fence_medium_red.png
new file mode 100644
index 0000000..4ed5982
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_red_s50.png b/coloredwood/textures/coloredwood_fence_medium_red_s50.png
new file mode 100644
index 0000000..d295f46
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_redviolet.png b/coloredwood/textures/coloredwood_fence_medium_redviolet.png
new file mode 100644
index 0000000..3953a77
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_redviolet_s50.png b/coloredwood/textures/coloredwood_fence_medium_redviolet_s50.png
new file mode 100644
index 0000000..333a0a3
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_skyblue.png b/coloredwood/textures/coloredwood_fence_medium_skyblue.png
new file mode 100644
index 0000000..82377d0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_skyblue_s50.png b/coloredwood/textures/coloredwood_fence_medium_skyblue_s50.png
new file mode 100644
index 0000000..c5b5e36
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_violet.png b/coloredwood/textures/coloredwood_fence_medium_violet.png
new file mode 100644
index 0000000..c24b5d5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_violet_s50.png b/coloredwood/textures/coloredwood_fence_medium_violet_s50.png
new file mode 100644
index 0000000..c125bc7
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_yellow.png b/coloredwood/textures/coloredwood_fence_medium_yellow.png
new file mode 100644
index 0000000..4afcb56
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_medium_yellow_s50.png b/coloredwood/textures/coloredwood_fence_medium_yellow_s50.png
new file mode 100644
index 0000000..001bb30
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_medium_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_orange.png b/coloredwood/textures/coloredwood_fence_orange.png
new file mode 100644
index 0000000..5797279
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_orange_s50.png b/coloredwood/textures/coloredwood_fence_orange_s50.png
new file mode 100644
index 0000000..6976697
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_red.png b/coloredwood/textures/coloredwood_fence_red.png
new file mode 100644
index 0000000..d3a7a7f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_red_s50.png b/coloredwood/textures/coloredwood_fence_red_s50.png
new file mode 100644
index 0000000..4dd5df1
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_redviolet.png b/coloredwood/textures/coloredwood_fence_redviolet.png
new file mode 100644
index 0000000..3eb49b8
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_redviolet_s50.png b/coloredwood/textures/coloredwood_fence_redviolet_s50.png
new file mode 100644
index 0000000..c7b10af
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_skyblue.png b/coloredwood/textures/coloredwood_fence_skyblue.png
new file mode 100644
index 0000000..7bf31a2
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_skyblue_s50.png b/coloredwood/textures/coloredwood_fence_skyblue_s50.png
new file mode 100644
index 0000000..fcde0ca
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_violet.png b/coloredwood/textures/coloredwood_fence_violet.png
new file mode 100644
index 0000000..6938266
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_violet_s50.png b/coloredwood/textures/coloredwood_fence_violet_s50.png
new file mode 100644
index 0000000..be1cdd8
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_white.png b/coloredwood/textures/coloredwood_fence_white.png
new file mode 100644
index 0000000..eaf7ee2
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_white.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_yellow.png b/coloredwood/textures/coloredwood_fence_yellow.png
new file mode 100644
index 0000000..c8e3207
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_yellow_s50.png b/coloredwood/textures/coloredwood_fence_yellow_s50.png
new file mode 100644
index 0000000..b554746
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_aqua.png b/coloredwood/textures/coloredwood_stick_aqua.png
new file mode 100644
index 0000000..e399751
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_aqua_s50.png b/coloredwood/textures/coloredwood_stick_aqua_s50.png
new file mode 100644
index 0000000..d42e346
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_black.png b/coloredwood/textures/coloredwood_stick_black.png
new file mode 100644
index 0000000..6e43719
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_black.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_blue.png b/coloredwood/textures/coloredwood_stick_blue.png
new file mode 100644
index 0000000..a0cf8da
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_blue_s50.png b/coloredwood/textures/coloredwood_stick_blue_s50.png
new file mode 100644
index 0000000..49c6b2e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_cyan.png b/coloredwood/textures/coloredwood_stick_cyan.png
new file mode 100644
index 0000000..e8b6e44
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_cyan_s50.png b/coloredwood/textures/coloredwood_stick_cyan_s50.png
new file mode 100644
index 0000000..7abb6ae
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_aqua.png b/coloredwood/textures/coloredwood_stick_dark_aqua.png
new file mode 100644
index 0000000..9f70b5e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_aqua_s50.png b/coloredwood/textures/coloredwood_stick_dark_aqua_s50.png
new file mode 100644
index 0000000..9833e64
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_blue.png b/coloredwood/textures/coloredwood_stick_dark_blue.png
new file mode 100644
index 0000000..ea9eb17
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_blue_s50.png b/coloredwood/textures/coloredwood_stick_dark_blue_s50.png
new file mode 100644
index 0000000..eb5367e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_cyan.png b/coloredwood/textures/coloredwood_stick_dark_cyan.png
new file mode 100644
index 0000000..146fcee
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_cyan_s50.png b/coloredwood/textures/coloredwood_stick_dark_cyan_s50.png
new file mode 100644
index 0000000..1ee57e3
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_green.png b/coloredwood/textures/coloredwood_stick_dark_green.png
new file mode 100644
index 0000000..566c41b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_green_s50.png b/coloredwood/textures/coloredwood_stick_dark_green_s50.png
new file mode 100644
index 0000000..e79a711
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_lime.png b/coloredwood/textures/coloredwood_stick_dark_lime.png
new file mode 100644
index 0000000..8455a2e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_lime_s50.png b/coloredwood/textures/coloredwood_stick_dark_lime_s50.png
new file mode 100644
index 0000000..d80362f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_magenta.png b/coloredwood/textures/coloredwood_stick_dark_magenta.png
new file mode 100644
index 0000000..77798d8
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_magenta_s50.png b/coloredwood/textures/coloredwood_stick_dark_magenta_s50.png
new file mode 100644
index 0000000..50ad19c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_orange.png b/coloredwood/textures/coloredwood_stick_dark_orange.png
new file mode 100644
index 0000000..5844e85
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_orange_s50.png b/coloredwood/textures/coloredwood_stick_dark_orange_s50.png
new file mode 100644
index 0000000..7799337
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_red.png b/coloredwood/textures/coloredwood_stick_dark_red.png
new file mode 100644
index 0000000..70c4cc7
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_red_s50.png b/coloredwood/textures/coloredwood_stick_dark_red_s50.png
new file mode 100644
index 0000000..ae86d6b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_redviolet.png b/coloredwood/textures/coloredwood_stick_dark_redviolet.png
new file mode 100644
index 0000000..df30c35
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_redviolet_s50.png b/coloredwood/textures/coloredwood_stick_dark_redviolet_s50.png
new file mode 100644
index 0000000..d8b0d7b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_skyblue.png b/coloredwood/textures/coloredwood_stick_dark_skyblue.png
new file mode 100644
index 0000000..99f4d71
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_skyblue_s50.png b/coloredwood/textures/coloredwood_stick_dark_skyblue_s50.png
new file mode 100644
index 0000000..176a124
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_violet.png b/coloredwood/textures/coloredwood_stick_dark_violet.png
new file mode 100644
index 0000000..bb0178e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_violet_s50.png b/coloredwood/textures/coloredwood_stick_dark_violet_s50.png
new file mode 100644
index 0000000..98683c0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_yellow.png b/coloredwood/textures/coloredwood_stick_dark_yellow.png
new file mode 100644
index 0000000..7970a2a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_dark_yellow_s50.png b/coloredwood/textures/coloredwood_stick_dark_yellow_s50.png
new file mode 100644
index 0000000..f8d9cf9
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_dark_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_darkgrey.png b/coloredwood/textures/coloredwood_stick_darkgrey.png
new file mode 100644
index 0000000..4cffd88
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_darkgrey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_green.png b/coloredwood/textures/coloredwood_stick_green.png
new file mode 100644
index 0000000..c0d0bf1
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_green_s50.png b/coloredwood/textures/coloredwood_stick_green_s50.png
new file mode 100644
index 0000000..481d7e0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_grey.png b/coloredwood/textures/coloredwood_stick_grey.png
new file mode 100644
index 0000000..31b7dac
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_grey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_aqua.png b/coloredwood/textures/coloredwood_stick_light_aqua.png
new file mode 100644
index 0000000..c060911
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_blue.png b/coloredwood/textures/coloredwood_stick_light_blue.png
new file mode 100644
index 0000000..e3082b7
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_cyan.png b/coloredwood/textures/coloredwood_stick_light_cyan.png
new file mode 100644
index 0000000..5367988
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_green.png b/coloredwood/textures/coloredwood_stick_light_green.png
new file mode 100644
index 0000000..7aab5e4
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_lime.png b/coloredwood/textures/coloredwood_stick_light_lime.png
new file mode 100644
index 0000000..28407fe
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_magenta.png b/coloredwood/textures/coloredwood_stick_light_magenta.png
new file mode 100644
index 0000000..42320bf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_orange.png b/coloredwood/textures/coloredwood_stick_light_orange.png
new file mode 100644
index 0000000..6be1b76
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_red.png b/coloredwood/textures/coloredwood_stick_light_red.png
new file mode 100644
index 0000000..3d7a853
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_redviolet.png b/coloredwood/textures/coloredwood_stick_light_redviolet.png
new file mode 100644
index 0000000..55d186d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_skyblue.png b/coloredwood/textures/coloredwood_stick_light_skyblue.png
new file mode 100644
index 0000000..efb8861
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_violet.png b/coloredwood/textures/coloredwood_stick_light_violet.png
new file mode 100644
index 0000000..db8a966
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_light_yellow.png b/coloredwood/textures/coloredwood_stick_light_yellow.png
new file mode 100644
index 0000000..e55b459
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_light_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_lightgrey.png b/coloredwood/textures/coloredwood_stick_lightgrey.png
new file mode 100644
index 0000000..ca0ae82
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_lightgrey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_lime.png b/coloredwood/textures/coloredwood_stick_lime.png
new file mode 100644
index 0000000..3abbe06
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_lime_s50.png b/coloredwood/textures/coloredwood_stick_lime_s50.png
new file mode 100644
index 0000000..afc3e68
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_magenta.png b/coloredwood/textures/coloredwood_stick_magenta.png
new file mode 100644
index 0000000..e038a01
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_magenta_s50.png b/coloredwood/textures/coloredwood_stick_magenta_s50.png
new file mode 100644
index 0000000..51a38ba
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_aqua.png b/coloredwood/textures/coloredwood_stick_medium_aqua.png
new file mode 100644
index 0000000..defdbd9
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_aqua_s50.png b/coloredwood/textures/coloredwood_stick_medium_aqua_s50.png
new file mode 100644
index 0000000..8ae3ddd
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_blue.png b/coloredwood/textures/coloredwood_stick_medium_blue.png
new file mode 100644
index 0000000..0410e7b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_blue_s50.png b/coloredwood/textures/coloredwood_stick_medium_blue_s50.png
new file mode 100644
index 0000000..50b33e3
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_cyan.png b/coloredwood/textures/coloredwood_stick_medium_cyan.png
new file mode 100644
index 0000000..b363047
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_cyan_s50.png b/coloredwood/textures/coloredwood_stick_medium_cyan_s50.png
new file mode 100644
index 0000000..a71e5c8
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_green.png b/coloredwood/textures/coloredwood_stick_medium_green.png
new file mode 100644
index 0000000..7224760
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_green_s50.png b/coloredwood/textures/coloredwood_stick_medium_green_s50.png
new file mode 100644
index 0000000..2733bba
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_lime.png b/coloredwood/textures/coloredwood_stick_medium_lime.png
new file mode 100644
index 0000000..5ea9bc8
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_lime_s50.png b/coloredwood/textures/coloredwood_stick_medium_lime_s50.png
new file mode 100644
index 0000000..f2a5eb9
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_magenta.png b/coloredwood/textures/coloredwood_stick_medium_magenta.png
new file mode 100644
index 0000000..8b38351
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_magenta_s50.png b/coloredwood/textures/coloredwood_stick_medium_magenta_s50.png
new file mode 100644
index 0000000..344f6c1
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_orange.png b/coloredwood/textures/coloredwood_stick_medium_orange.png
new file mode 100644
index 0000000..97c3a43
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_orange_s50.png b/coloredwood/textures/coloredwood_stick_medium_orange_s50.png
new file mode 100644
index 0000000..7530c5b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_red.png b/coloredwood/textures/coloredwood_stick_medium_red.png
new file mode 100644
index 0000000..a39b8c8
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_red_s50.png b/coloredwood/textures/coloredwood_stick_medium_red_s50.png
new file mode 100644
index 0000000..87a234d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_redviolet.png b/coloredwood/textures/coloredwood_stick_medium_redviolet.png
new file mode 100644
index 0000000..f5c728c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_redviolet_s50.png b/coloredwood/textures/coloredwood_stick_medium_redviolet_s50.png
new file mode 100644
index 0000000..10e87b9
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_skyblue.png b/coloredwood/textures/coloredwood_stick_medium_skyblue.png
new file mode 100644
index 0000000..e5e6e0a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_skyblue_s50.png b/coloredwood/textures/coloredwood_stick_medium_skyblue_s50.png
new file mode 100644
index 0000000..63d554f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_violet.png b/coloredwood/textures/coloredwood_stick_medium_violet.png
new file mode 100644
index 0000000..0c5afb1
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_violet_s50.png b/coloredwood/textures/coloredwood_stick_medium_violet_s50.png
new file mode 100644
index 0000000..34513a5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_yellow.png b/coloredwood/textures/coloredwood_stick_medium_yellow.png
new file mode 100644
index 0000000..d1bee2c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_medium_yellow_s50.png b/coloredwood/textures/coloredwood_stick_medium_yellow_s50.png
new file mode 100644
index 0000000..813f1d5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_medium_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_orange.png b/coloredwood/textures/coloredwood_stick_orange.png
new file mode 100644
index 0000000..7e0e140
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_orange_s50.png b/coloredwood/textures/coloredwood_stick_orange_s50.png
new file mode 100644
index 0000000..34a3c1e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_red.png b/coloredwood/textures/coloredwood_stick_red.png
new file mode 100644
index 0000000..5502812
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_red_s50.png b/coloredwood/textures/coloredwood_stick_red_s50.png
new file mode 100644
index 0000000..6777634
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_redviolet.png b/coloredwood/textures/coloredwood_stick_redviolet.png
new file mode 100644
index 0000000..aa20e2a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_redviolet_s50.png b/coloredwood/textures/coloredwood_stick_redviolet_s50.png
new file mode 100644
index 0000000..403f246
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_skyblue.png b/coloredwood/textures/coloredwood_stick_skyblue.png
new file mode 100644
index 0000000..3721331
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_skyblue_s50.png b/coloredwood/textures/coloredwood_stick_skyblue_s50.png
new file mode 100644
index 0000000..53f2524
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_violet.png b/coloredwood/textures/coloredwood_stick_violet.png
new file mode 100644
index 0000000..ea5bb64
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_violet_s50.png b/coloredwood/textures/coloredwood_stick_violet_s50.png
new file mode 100644
index 0000000..3eb6e5a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_white.png b/coloredwood/textures/coloredwood_stick_white.png
new file mode 100644
index 0000000..a0dbd4d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_white.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_yellow.png b/coloredwood/textures/coloredwood_stick_yellow.png
new file mode 100644
index 0000000..1459422
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_stick_yellow_s50.png b/coloredwood/textures/coloredwood_stick_yellow_s50.png
new file mode 100644
index 0000000..6b0d403
--- /dev/null
+++ b/coloredwood/textures/coloredwood_stick_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_aqua.png b/coloredwood/textures/coloredwood_wood_aqua.png
new file mode 100644
index 0000000..632caa1
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_aqua_s50.png b/coloredwood/textures/coloredwood_wood_aqua_s50.png
new file mode 100644
index 0000000..e28e8ca
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_black.png b/coloredwood/textures/coloredwood_wood_black.png
new file mode 100644
index 0000000..19ea436
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_black.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_blue.png b/coloredwood/textures/coloredwood_wood_blue.png
new file mode 100644
index 0000000..8e8f317
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_blue_s50.png b/coloredwood/textures/coloredwood_wood_blue_s50.png
new file mode 100644
index 0000000..27cd94e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_cyan.png b/coloredwood/textures/coloredwood_wood_cyan.png
new file mode 100644
index 0000000..225876f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_cyan_s50.png b/coloredwood/textures/coloredwood_wood_cyan_s50.png
new file mode 100644
index 0000000..46e0f30
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_aqua.png b/coloredwood/textures/coloredwood_wood_dark_aqua.png
new file mode 100644
index 0000000..416577d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_aqua_s50.png b/coloredwood/textures/coloredwood_wood_dark_aqua_s50.png
new file mode 100644
index 0000000..9ce25a0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_blue.png b/coloredwood/textures/coloredwood_wood_dark_blue.png
new file mode 100644
index 0000000..b320d09
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_blue_s50.png b/coloredwood/textures/coloredwood_wood_dark_blue_s50.png
new file mode 100644
index 0000000..cec9f39
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_cyan.png b/coloredwood/textures/coloredwood_wood_dark_cyan.png
new file mode 100644
index 0000000..f724265
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_cyan_s50.png b/coloredwood/textures/coloredwood_wood_dark_cyan_s50.png
new file mode 100644
index 0000000..caf6dbc
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_green.png b/coloredwood/textures/coloredwood_wood_dark_green.png
new file mode 100644
index 0000000..f969f3f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_green_s50.png b/coloredwood/textures/coloredwood_wood_dark_green_s50.png
new file mode 100644
index 0000000..06e1414
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_lime.png b/coloredwood/textures/coloredwood_wood_dark_lime.png
new file mode 100644
index 0000000..0cdc58d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_lime_s50.png b/coloredwood/textures/coloredwood_wood_dark_lime_s50.png
new file mode 100644
index 0000000..16092b6
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_magenta.png b/coloredwood/textures/coloredwood_wood_dark_magenta.png
new file mode 100644
index 0000000..a40e38e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_magenta_s50.png b/coloredwood/textures/coloredwood_wood_dark_magenta_s50.png
new file mode 100644
index 0000000..06b911d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_orange.png b/coloredwood/textures/coloredwood_wood_dark_orange.png
new file mode 100644
index 0000000..65eac9b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_orange_s50.png b/coloredwood/textures/coloredwood_wood_dark_orange_s50.png
new file mode 100644
index 0000000..88b835d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_red.png b/coloredwood/textures/coloredwood_wood_dark_red.png
new file mode 100644
index 0000000..48ae7d0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_red_s50.png b/coloredwood/textures/coloredwood_wood_dark_red_s50.png
new file mode 100644
index 0000000..2cefa95
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_redviolet.png b/coloredwood/textures/coloredwood_wood_dark_redviolet.png
new file mode 100644
index 0000000..d1dbed0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_redviolet_s50.png b/coloredwood/textures/coloredwood_wood_dark_redviolet_s50.png
new file mode 100644
index 0000000..6dd808c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_skyblue.png b/coloredwood/textures/coloredwood_wood_dark_skyblue.png
new file mode 100644
index 0000000..4fcf6fe
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_skyblue_s50.png b/coloredwood/textures/coloredwood_wood_dark_skyblue_s50.png
new file mode 100644
index 0000000..ece0c55
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_violet.png b/coloredwood/textures/coloredwood_wood_dark_violet.png
new file mode 100644
index 0000000..058a4a0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_violet_s50.png b/coloredwood/textures/coloredwood_wood_dark_violet_s50.png
new file mode 100644
index 0000000..8ced5f6
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_yellow.png b/coloredwood/textures/coloredwood_wood_dark_yellow.png
new file mode 100644
index 0000000..a6b567d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_dark_yellow_s50.png b/coloredwood/textures/coloredwood_wood_dark_yellow_s50.png
new file mode 100644
index 0000000..e99435f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_dark_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_darkgrey.png b/coloredwood/textures/coloredwood_wood_darkgrey.png
new file mode 100644
index 0000000..d592672
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_darkgrey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_green.png b/coloredwood/textures/coloredwood_wood_green.png
new file mode 100644
index 0000000..4148808
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_green_s50.png b/coloredwood/textures/coloredwood_wood_green_s50.png
new file mode 100644
index 0000000..15faf85
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_grey.png b/coloredwood/textures/coloredwood_wood_grey.png
new file mode 100644
index 0000000..c1f9daf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_grey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_aqua.png b/coloredwood/textures/coloredwood_wood_light_aqua.png
new file mode 100644
index 0000000..f206f38
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_blue.png b/coloredwood/textures/coloredwood_wood_light_blue.png
new file mode 100644
index 0000000..230252a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_cyan.png b/coloredwood/textures/coloredwood_wood_light_cyan.png
new file mode 100644
index 0000000..dac4ad4
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_green.png b/coloredwood/textures/coloredwood_wood_light_green.png
new file mode 100644
index 0000000..e22a9aa
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_lime.png b/coloredwood/textures/coloredwood_wood_light_lime.png
new file mode 100644
index 0000000..d752ea5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_magenta.png b/coloredwood/textures/coloredwood_wood_light_magenta.png
new file mode 100644
index 0000000..d22e003
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_orange.png b/coloredwood/textures/coloredwood_wood_light_orange.png
new file mode 100644
index 0000000..35df06c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_red.png b/coloredwood/textures/coloredwood_wood_light_red.png
new file mode 100644
index 0000000..aa2cf83
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_redviolet.png b/coloredwood/textures/coloredwood_wood_light_redviolet.png
new file mode 100644
index 0000000..a1b37be
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_skyblue.png b/coloredwood/textures/coloredwood_wood_light_skyblue.png
new file mode 100644
index 0000000..6d3177b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_violet.png b/coloredwood/textures/coloredwood_wood_light_violet.png
new file mode 100644
index 0000000..18a792e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_light_yellow.png b/coloredwood/textures/coloredwood_wood_light_yellow.png
new file mode 100644
index 0000000..811ca19
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_light_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_lightgrey.png b/coloredwood/textures/coloredwood_wood_lightgrey.png
new file mode 100644
index 0000000..3ee024e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_lightgrey.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_lime.png b/coloredwood/textures/coloredwood_wood_lime.png
new file mode 100644
index 0000000..e16de3a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_lime_s50.png b/coloredwood/textures/coloredwood_wood_lime_s50.png
new file mode 100644
index 0000000..6fd7ee9
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_magenta.png b/coloredwood/textures/coloredwood_wood_magenta.png
new file mode 100644
index 0000000..863b518
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_magenta_s50.png b/coloredwood/textures/coloredwood_wood_magenta_s50.png
new file mode 100644
index 0000000..3bbc82c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_aqua.png b/coloredwood/textures/coloredwood_wood_medium_aqua.png
new file mode 100644
index 0000000..130143c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_aqua.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_aqua_s50.png b/coloredwood/textures/coloredwood_wood_medium_aqua_s50.png
new file mode 100644
index 0000000..d56446c
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_aqua_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_blue.png b/coloredwood/textures/coloredwood_wood_medium_blue.png
new file mode 100644
index 0000000..8712828
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_blue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_blue_s50.png b/coloredwood/textures/coloredwood_wood_medium_blue_s50.png
new file mode 100644
index 0000000..fe8a0ef
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_blue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_cyan.png b/coloredwood/textures/coloredwood_wood_medium_cyan.png
new file mode 100644
index 0000000..3e9889f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_cyan.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_cyan_s50.png b/coloredwood/textures/coloredwood_wood_medium_cyan_s50.png
new file mode 100644
index 0000000..425f4cf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_cyan_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_green.png b/coloredwood/textures/coloredwood_wood_medium_green.png
new file mode 100644
index 0000000..9d6467f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_green.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_green_s50.png b/coloredwood/textures/coloredwood_wood_medium_green_s50.png
new file mode 100644
index 0000000..093463f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_green_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_lime.png b/coloredwood/textures/coloredwood_wood_medium_lime.png
new file mode 100644
index 0000000..d6004ba
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_lime.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_lime_s50.png b/coloredwood/textures/coloredwood_wood_medium_lime_s50.png
new file mode 100644
index 0000000..9b26b63
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_lime_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_magenta.png b/coloredwood/textures/coloredwood_wood_medium_magenta.png
new file mode 100644
index 0000000..8fecd47
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_magenta.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_magenta_s50.png b/coloredwood/textures/coloredwood_wood_medium_magenta_s50.png
new file mode 100644
index 0000000..9aafccf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_magenta_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_orange.png b/coloredwood/textures/coloredwood_wood_medium_orange.png
new file mode 100644
index 0000000..ad97f3b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_orange_s50.png b/coloredwood/textures/coloredwood_wood_medium_orange_s50.png
new file mode 100644
index 0000000..619dfaf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_red.png b/coloredwood/textures/coloredwood_wood_medium_red.png
new file mode 100644
index 0000000..f976b68
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_red_s50.png b/coloredwood/textures/coloredwood_wood_medium_red_s50.png
new file mode 100644
index 0000000..de2ee7d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_redviolet.png b/coloredwood/textures/coloredwood_wood_medium_redviolet.png
new file mode 100644
index 0000000..9913e3b
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_redviolet_s50.png b/coloredwood/textures/coloredwood_wood_medium_redviolet_s50.png
new file mode 100644
index 0000000..fb185de
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_skyblue.png b/coloredwood/textures/coloredwood_wood_medium_skyblue.png
new file mode 100644
index 0000000..9747641
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_skyblue_s50.png b/coloredwood/textures/coloredwood_wood_medium_skyblue_s50.png
new file mode 100644
index 0000000..18285da
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_violet.png b/coloredwood/textures/coloredwood_wood_medium_violet.png
new file mode 100644
index 0000000..5a66a75
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_violet_s50.png b/coloredwood/textures/coloredwood_wood_medium_violet_s50.png
new file mode 100644
index 0000000..993aba0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_yellow.png b/coloredwood/textures/coloredwood_wood_medium_yellow.png
new file mode 100644
index 0000000..97e594a
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_medium_yellow_s50.png b/coloredwood/textures/coloredwood_wood_medium_yellow_s50.png
new file mode 100644
index 0000000..d35fbbf
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_medium_yellow_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_orange.png b/coloredwood/textures/coloredwood_wood_orange.png
new file mode 100644
index 0000000..4550ef5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_orange.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_orange_s50.png b/coloredwood/textures/coloredwood_wood_orange_s50.png
new file mode 100644
index 0000000..93cb5c0
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_orange_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_red.png b/coloredwood/textures/coloredwood_wood_red.png
new file mode 100644
index 0000000..f78da0e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_red.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_red_s50.png b/coloredwood/textures/coloredwood_wood_red_s50.png
new file mode 100644
index 0000000..a77fada
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_red_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_redviolet.png b/coloredwood/textures/coloredwood_wood_redviolet.png
new file mode 100644
index 0000000..bd5b24f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_redviolet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_redviolet_s50.png b/coloredwood/textures/coloredwood_wood_redviolet_s50.png
new file mode 100644
index 0000000..7aa1499
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_redviolet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_skyblue.png b/coloredwood/textures/coloredwood_wood_skyblue.png
new file mode 100644
index 0000000..518a619
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_skyblue.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_skyblue_s50.png b/coloredwood/textures/coloredwood_wood_skyblue_s50.png
new file mode 100644
index 0000000..b7a924f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_skyblue_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_violet.png b/coloredwood/textures/coloredwood_wood_violet.png
new file mode 100644
index 0000000..9cb82fe
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_violet.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_violet_s50.png b/coloredwood/textures/coloredwood_wood_violet_s50.png
new file mode 100644
index 0000000..3b16a8d
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_violet_s50.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_white.png b/coloredwood/textures/coloredwood_wood_white.png
new file mode 100644
index 0000000..4fd926f
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_white.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_yellow.png b/coloredwood/textures/coloredwood_wood_yellow.png
new file mode 100644
index 0000000..c9a801e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_yellow.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_wood_yellow_s50.png b/coloredwood/textures/coloredwood_wood_yellow_s50.png
new file mode 100644
index 0000000..ca8f3ce
--- /dev/null
+++ b/coloredwood/textures/coloredwood_wood_yellow_s50.png
Binary files differ
diff --git a/coloredwood/wood.lua b/coloredwood/wood.lua
new file mode 100644
index 0000000..8fd4d01
--- /dev/null
+++ b/coloredwood/wood.lua
@@ -0,0 +1,230 @@
+-- Woods portion of Colored Wood mod by Vanessa Ezekowitz ~~ 2012-07-17
+-- based on my unified dyes modding template.
+--
+-- License: WTFPL
+
+coloredwood.enable_stairsplus = true
+
+if minetest.setting_getbool("coloredwood_enable_stairsplus") == false or not minetest.get_modpath("moreblocks") then
+ coloredwood.enable_stairsplus = false
+end
+
+local colored_block_modname = "coloredwood"
+local colored_block_description = "Wood Planks"
+local neutral_block = "default:wood"
+local colored_block_sunlight = "false"
+local colored_block_walkable = "true"
+local colored_block_groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1}
+local colored_block_sound = "default.node_sound_wood_defaults()"
+
+for shade = 1, 3 do
+
+ local shadename = coloredwood.shades[shade]
+ local shadename2 = coloredwood.shades2[shade]
+
+ for hue = 1, 12 do
+
+ local huename = coloredwood.hues[hue]
+ local huename2 = coloredwood.hues2[hue]
+
+ local colorname = colored_block_modname..":wood_"..shadename..huename
+ local pngname = colored_block_modname.."_wood_"..shadename..huename..".png"
+ local nodedesc = shadename2..huename2..colored_block_description
+ local s50colorname = colored_block_modname..":wood_"..shadename..huename.."_s50"
+ local s50pngname = colored_block_modname.."_wood_"..shadename..huename.."_s50.png"
+ local s50nodedesc = shadename2..huename2..colored_block_description.." (50% Saturation)"
+
+ minetest.register_node(colorname, {
+ description = nodedesc,
+ tiles = { pngname },
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound
+ })
+
+ minetest.register_node(s50colorname, {
+ description = s50nodedesc,
+ tiles = { s50pngname },
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound
+ })
+
+ if coloredwood.enable_stairsplus then
+
+-- stairsplus:register_all(modname, subname, recipeitem, {fields})
+
+ stairsplus:register_all(
+ "coloredwood",
+ "wood_"..shadename..huename,
+ colorname,
+ {
+ groups = colored_block_groups,
+ tiles = { pngname },
+ description = nodedesc,
+ drop = "wood_"..shadename..huename,
+ }
+ )
+
+ stairsplus:register_all(
+ "coloredwood",
+ "wood_"..shadename..huename.."_s50",
+ s50colorname,
+ {
+ groups = colored_block_groups,
+ tiles = { s50pngname },
+ description = s50nodedesc,
+ drop = "wood_"..shadename..huename.."_s50",
+ }
+ )
+ end
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = s50colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ "unifieddyes:"..shadename..huename
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = s50colorname.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ "unifieddyes:"..shadename..huename.."_s50"
+ },
+ })
+
+ end
+end
+
+-- Generate the "light" shades separately, since they don"t have a low-sat version.
+
+for hue = 1, 12 do
+
+ local huename = coloredwood.hues[hue]
+ local huename2 = coloredwood.hues2[hue]
+ local colorname = colored_block_modname..":wood_light_"..huename
+ local pngname = colored_block_modname.."_wood_light_"..huename..".png"
+ local nodedesc = "Light "..huename2..colored_block_description
+
+ minetest.register_node(colorname, {
+ description = nodedesc,
+ tiles = { pngname },
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound
+ })
+
+ if coloredwood.enable_stairsplus then
+ stairsplus:register_all(
+ "coloredwood",
+ "wood_light_"..huename,
+ colorname,
+ {
+ groups = colored_block_groups,
+ tiles = { pngname },
+ description = nodedesc,
+ drop = "wood_light_"..huename,
+ }
+ )
+ end
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = colorname,
+ burntime = 7,
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = colorname.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ "unifieddyes:light_"..huename
+ },
+ })
+end
+
+
+-- ============================================================
+-- The 5 levels of greyscale.
+--
+-- Oficially these are 0, 25, 50, 75, and 100% relative to white,
+-- but in practice, they"re actually 7.5%, 25%, 50%, 75%, and 95%.
+-- (otherwise black and white would wash out).
+
+for grey = 1,5 do
+
+ local greyname = coloredwood.greys[grey]
+ local greyname2 = coloredwood.greys2[grey]
+ local greyname3 = coloredwood.greys3[grey]
+
+ local greyshadename = colored_block_modname..":wood_"..greyname
+ local pngname = colored_block_modname.."_wood_"..greyname..".png"
+ local nodedesc = greyname2..colored_block_description
+
+ minetest.register_node(greyshadename, {
+ description = nodedesc,
+ tiles = { pngname },
+ sunlight_propagates = colored_block_sunlight,
+ paramtype = "light",
+ walkable = colored_block_walkable,
+ groups = colored_block_groups,
+ sounds = colored_block_sound
+ })
+
+ if coloredwood.enable_stairsplus then
+ stairsplus:register_all(
+ "coloredwood",
+ "wood_"..greyname,
+ greyshadename,
+ {
+ groups = colored_block_groups,
+ tiles = { pngname },
+ description = nodedesc,
+ drop = "wood_"..greyname,
+ }
+ )
+ end
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = greyshadename,
+ burntime = 7,
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = greyshadename.." 2",
+ recipe = {
+ neutral_block,
+ neutral_block,
+ greyname3
+ },
+ })
+
+end
diff --git a/colormachine/README.md b/colormachine/README.md
new file mode 100644
index 0000000..3a58ac7
--- /dev/null
+++ b/colormachine/README.md
@@ -0,0 +1,15 @@
+If any menu shows something unexpected, please go to another menu page
+and come back from there. This ought to update the first menu page.
+
+depends on: dye
+
+supports:
+unifieddyes
+coloredwood
+unifiedbricks
+stained_glass
+cotton
+wool
+flags
+blox
+
diff --git a/colormachine/depends.txt b/colormachine/depends.txt
new file mode 100644
index 0000000..deb2ecc
--- /dev/null
+++ b/colormachine/depends.txt
@@ -0,0 +1,24 @@
+dye
+default?
+unifieddyes?
+coloredwood?
+unifiedbricks?
+stained_glass?
+cotton?
+wool?
+flags?
+blox?
+homedecor?
+plasticbox?
+kerova?
+hardenedclay?
+clstone?
+colorcubes?
+colouredstonebricks?
+lavalamp?
+myroofs?
+mydeck?
+mycorners?
+mymulch?
+clothing?
+cblocks?
diff --git a/colormachine/init.lua b/colormachine/init.lua
new file mode 100644
index 0000000..13ee5db
--- /dev/null
+++ b/colormachine/init.lua
@@ -0,0 +1,2160 @@
+
+--[[
+ color chooser for unifieddyes
+
+ Copyright (C) 2013 Sokomine
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+--]]
+
+
+
+-- Version 0.6
+
+-- Changelog:
+-- 28.09.15 Added support for cblocks: https://forum.minetest.net/viewtopic.php?f=9&t=13303&view=unread#p192497
+-- 23.05.15 As all dyes can be crafted into other dyes, only white dye is consumed - provided the
+-- other dyes needed for the crafting chain are stored.
+-- 22.05.15 Added support for new homedecor meshnodes.
+-- Added support for nodes that use composed textures (by settig composed=1)
+-- Added support for myroofs: https://forum.minetest.net/viewtopic.php?f=11&t=11416&p=172034
+-- Added support for mydeck: https://forum.minetest.net/viewtopic.php?f=9&t=11729
+-- Added support for mycorners: https://forum.minetest.net/viewtopic.php?f=11&t=11363
+-- Added support for mymulch: https://forum.minetest.net/viewtopic.php?f=9&t=11780
+-- Added support for clothing: https://forum.minetest.net/viewtopic.php?f=9&t=11362&p=179077
+-- Added better handling of diffrent pages for all those blocks in the blocktype menu.
+-- 17.09.14 Added a modified version of Krocks paintroller from his paint_roller mod.
+-- Added additional storage area for dyes (works like a chest for now)
+-- 03.09.14 Added a second block type menu.
+-- Updated dependency list.
+-- Added support for homedecor kitchen chairs, beds and bathroom tiles. Changed sorting order of blocks.
+-- 11.06.14 Added support for clstone; see https://forum.minetest.net/viewtopic.php?f=9&t=9257
+-- Changed dye source for white dye from stone to clay as stone can now be colored.
+-- Added support for colorcubes; see https://forum.minetest.net/viewtopic.php?f=9&t=9486
+-- Updated support for new sea modpack; see https://forum.minetest.net/viewtopic.php?f=11&t=4627
+-- Adjusted support for hardenedclay; see https://forum.minetest.net/viewtopic.php?f=9&t=8232
+-- Added support for new blox blocks; see https://forum.minetest.net/viewtopic.php?id=1960#p24748
+-- Made the formspec a bit wider in order to account for all the new blocks.
+-- 12.03.14 Added support for colouredstonebricks. See https://forum.minetest.net/viewtopic.php?f=9&t=8784
+-- Modified support for hardenedclay due to progress in that mod.
+-- 13.02.14 Added support for chests and locked chests from the kerova mod.
+-- Added support for hardenedclay mod (to a degree; that mod needs to be fixed first)
+-- Added optional obj_postfix support where blocknames are like MODNAME:PREFIX_COLOR_POSTFIX
+-- 01.01.14 Added support for plasticbox mod
+-- 25.08.13 Added support for framedglass from technic.
+-- Added support for shells_dye (lightglass) from the sea mod.
+-- 24.08.13 Changed mainmenu so that it hopefully gets more intuitive.
+-- Added support for coloredblocks (two-colored blocks).
+-- Changed name of superglowglass to super_glow_glass for current moreblocks.
+-- Added config option for new stained_glass version.
+-- 02.08.13 In creative mode, no dyes are consumed, and an entire stack can be painted at once.
+-- Added some more labels in the main menu to make it easier to understand.
+-- 22.07.13 Added textures provided by Vanessae
+-- fixed a bug concerning normal dyes (when unifieddyes is not installed)
+
+-- adds a function to check ownership of a node; taken from VanessaEs homedecor mod
+colormachine = {};
+
+colormachine.colors = {
+ "red",
+ "orange",
+ "yellow",
+ "lime",
+ "green",
+ "aqua",
+ "cyan",
+ "skyblue",
+ "blue",
+ "violet",
+ "magenta",
+ "redviolet"
+}
+
+
+-- set this to 0 if you're using that branch of stained_glass where the node names correspond to those of unified_dyes
+local stained_glass_exception = 0;
+
+-- the names of suitable sources of that color (note: this does not work by group!);
+-- you can add your own color sources here if you want
+colormachine.basic_dye_sources = { "flowers:rose", "flowers:tulip", "flowers:dandelion_yellow",
+ "", "default:cactus", "", "", "", -- no lime, no aqua, no cyan, no skyblue
+ "flowers:geranium", "flowers:viola", "", "", -- no magenta, no redviolet
+ "default:clay_lump", "", "", "", "default:coal_lump" };
+
+-- if flowers is not installed
+colormachine.alternate_basic_dye_sources = {
+ "default:apple", "default:desert_stone", "default:sand",
+ "", "default:cactus", "", "", "",
+ "default:leaves", "", "", "" ,
+ "default:clay_lump", "", "", "", "default:coal_lump" };
+
+
+
+colormachine.dye_mixes = { red = {}, -- base color
+ orange = {1,3}, -- red + yellow
+ yellow = {}, -- base color
+ lime = {3,5}, -- yellow + green
+ green = {3,9}, -- yellow + blue
+ aqua = {5,7}, -- green + cyan
+ cyan = {5,9}, -- green + blue
+ skyblue = {7,9}, -- cyan + blue
+ blue = {}, -- base color
+ violet = {9,11}, -- blue + magenta
+ magenta = {9,1}, -- blue + red
+ redviolet = {11,1}, -- magenta + red
+
+ white = {}, -- base color
+ lightgrey = {13,15}, -- white + grey
+ grey = {13,17}, -- black + white
+ darkgrey = {15,17}, -- grey + black
+ black = {}, -- base color
+ }
+
+
+
+-- construct the formspec for the color selector
+colormachine.prefixes = { 'light_', '', 'medium_', 'dark_' };
+
+-- grey colors are named slightly different
+colormachine.grey_names = { 'white', 'lightgrey', 'grey', 'darkgrey', 'black' };
+
+
+-- practical for handling of the dyes
+colormachine.colors_and_greys = {};
+for i,v in ipairs( colormachine.colors ) do
+ colormachine.colors_and_greys[ i ] = v;
+end
+for i,v in ipairs( colormachine.grey_names ) do
+ colormachine.colors_and_greys[ #colormachine.colors + i ] = v;
+end
+
+-- defines the order in which blocks are shown
+-- nr: the diffrent block types need to be ordered by some system; the number defines that order
+-- modname: some mods define more than one type of colored blocks; the modname is needed
+-- for checking if the mod is installed and for creating colored blocks
+-- shades: some mods (or parts thereof) do not support all possible shades
+-- grey_shades: some mods support only some shades of grey (or none at all)
+-- u: if set to 1, use full unifieddyes-colors; if set to 0, use only normal dye/wool colors
+-- descr: short description of nodes of that type for the main menu
+-- block: unpainted basic block
+-- add: item names are formed by <modname>:<add><colorname> (with colorname beeing variable)
+-- names for the textures are formed by <index><colorname><png> mostly (see colormachine.translate_color_name(..))
+
+colormachine.data = {
+-- the dyes as such
+ unifieddyes_ = { nr=1, modname='unifieddyes', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="ufdye", block="dye:white", add="", p=1 },
+
+-- coloredwood: sticks not supported (they are only craftitems)
+ coloredwood_wood_ = { nr=2, modname='coloredwood', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="planks", block="default:wood", add="wood_", p=2 },
+ coloredwood_fence_ = { nr=3, modname='coloredwood', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="fence", block="default:fence_wood", add="fence_", p=2},
+
+-- unifiedbricks: clay lumps and bricks not supported (they are only craftitems)
+ unifiedbricks_clayblock_ = { nr=4, modname='unifiedbricks', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="clay", block="default:clay", add="clayblock_",p=1 },
+ unifiedbricks_brickblock_ = { nr=5, modname='unifiedbricks', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="brick", block="default:brick", add="brickblock_",p=1},
+ -- the multicolored bricks come in fewer intensities (only 3 shades) and support only 3 insted of 5 shades of grey
+ unifiedbricks_multicolor_ = { nr=6, modname='unifiedbricks', shades={1,0,0,0,1,0,1,0}, grey_shades={0,1,1,1,0}, u=1, descr="mbrick", block="default:brick", add="multicolor_",p=1},
+
+ hardenedclay_ = { nr=3.5, modname='hardenedclay', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="hclay", block="hardenedclay:hardened_clay_white", add="hardened_clay_", p=16},
+ colouredstonebricks_ = { nr=3.6, modname='colouredstonebricks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="cbrick", block="default:stonebrick", add="", p=1},
+
+ clstone_stone_ = { nr=3.7, modname='clstone', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="clstone",block="default:stone", add="", p=1, obj_postfix='_stone' },
+
+ colorcubes_1_ = { nr=3.8, modname='colorcubes', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="ccubes",block="default:stone", add="", p=1, obj_postfix='_single' },
+ colorcubes_4_ = { nr=3.9, modname='colorcubes', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="ccube4",block="default:stone", add="", p=1, obj_postfix='_tiled' },
+ colorcubes_inward_ = { nr=3.91,modname='colorcubes', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="ccubei",block="default:stone", add="", p=1, obj_postfix='_inward' },
+ colorcubes_window_ = { nr=3.93,modname='colorcubes', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="ccubew",block="default:stone", add="", p=1, obj_postfix='_window' },
+
+
+-- stained_glass: has a "faint" and "pastel" version as well (which are kind of additional shades used only by this mod)
+
+ -- no shades of grey for the glass
+ stained_glass_ = { nr=7, modname='stained_glass', shades={1,0,1,1,1,1,1,1}, grey_shades={0,0,0,0,0}, u=1, descr="glass", block="moreblocks:super_glow_glass", add="",p=2},
+ stained_glass_faint_ = { nr=8, modname='stained_glass', shades={0,0,1,0,0,0,0,0}, grey_shades={0,0,0,0,0}, u=1, descr="fglass", block="moreblocks:super_glow_glass", add="",p=2},
+ stained_glass_pastel_ = { nr=9, modname='stained_glass', shades={0,0,1,0,0,0,0,0}, grey_shades={0,0,0,0,0}, u=1, descr="pglass", block="moreblocks:super_glow_glass", add="",p=2},
+
+ -- use 9.5 to insert it between stained glass and cotton
+ framedglass_ = { nr=9.5, modname='framedglass', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="fglass", block="framedglass:steel_framed_obsidian_glass", add="steel_framed_obsidian_glass",p=1},
+
+-- sea-modpack
+ shells_dye_ = { nr=9.6, modname='shells_dye', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="lglass", block="shells_dye:whitelightglass", add="",p=1 },
+-- TODO shells_dye:whitelightglass
+ seaglass_seaglass_ = {nr=9.61, modname='seaglass', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="seagls", block="seaglass:seaglass", add="seaglass_", p=1},
+ seacobble_seacobble_ = {nr=9.62, modname='seacobble', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=1, descr="seacob", block="seacobble:seacobble", add="seacobble_", p=1},
+ seastone_seastone_ = {nr=9.63, modname='seastone', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=1, descr="seasto", block="seastone:seastone", add="seastone_", p=1},
+ seastonebrick_seastonebrick_={nr=9.64,modname='seastonebrick',shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=1, descr="seastb", block="seastonebrick:seastonebrick", add="seastonebrick_", p=1},
+ seagravel_seagravel_ = {nr=9.65, modname='seagravel', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=1, descr="seagrv", block="seagravel:seagravel", add="seagravel_", p=1},
+
+-- cotton:
+ cotton_ = { nr=10, modname='cotton', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="cotton", block="cotton:white", add="", p=8 },
+
+-- normal wool (from minetest_gmae) - does not support all colors from unifieddyes
+ wool_ = { nr=11, modname='wool', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="wool", block="wool:white", add="", p=16 },
+
+-- normal dye mod (from minetest_game) - supports as many colors as the wool mod
+ dye_ = { nr=12, modname='dye', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="dye", block="dye:white", add="", p=1 },
+
+-- beds_bed_top_top_ = { nr=13, modname='beds', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,1,0,1}, u=0, descr="beds", block="beds:bed_white", add="bed_bottom_",p=1},
+
+ lrfurn_armchair_front_ = { nr=14, modname='lrfurn', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,1,0,1}, u=0, descr="armchair",block="lrfurn:armchair_white", add="armchair_",p=1, composed=1 },
+ lrfurn_sofa_right_front_ = { nr=15, modname='lrfurn', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,1,0,1}, u=0, descr="sofa", block="lrfurn:longsofa_white", add="sofa_right_",p=1, composed=1 },
+ lrfurn_longsofa_middle_front_= { nr=16, modname='lrfurn', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,1,0,1}, u=0, descr="longsofa",block="lrfurn:sofa_white", add="longsofa_right_",p=1, composed=1 },
+
+
+ -- grey variants do not seem to exist, even though the textures arethere (perhaps nobody wants a grey flag!)
+ flags_ = { nr=17, modname='flags', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=1, descr="flags", block="flags:white", add="", p=3 },
+
+ blox_stone_ = { nr=18, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SnBlox", block="default:stone", add="stone", p=2 },
+ blox_quarter_ = { nr=19, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="S4Blox", block="default:stone", add="quarter", p=4 },
+ blox_checker_ = { nr=20, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="S8Blox", block="default:stone", add="checker", p=4 },
+ blox_diamond_ = { nr=21, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SDBlox", block="default:stone", add="diamond", p=3},
+ blox_cross_ = { nr=22, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SXBlox", block="default:stone", add="cross", p=6 },
+ blox_square_ = { nr=23, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SQBlox", block="default:stone", add="square", p=4 },
+ blox_loop_ = { nr=24, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SLBlox", block="default:stone", add="loop", p=4 },
+ blox_corner_ = { nr=25, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SCBlox", block="default:stone", add="corner", p=6 },
+
+ blox_wood_ = { nr=26, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="WnBlox", block="default:wood", add="wood", p=2 },
+ blox_quarter_wood_ = { nr=27, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="W4Blox", block="default:wood", add="quarter_wood",p=4 },
+ blox_checker_wood_ = { nr=28, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="W8Blox", block="default:wood", add="checker_wood",p=4},
+ blox_diamond_wood_ = { nr=29, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="WDBlox", block="default:wood", add="diamond_wood",p=4},
+ blox_cross_wood_ = { nr=29.1, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="WXBlox", block="default:wood", add="cross_wood",p=4},
+ blox_loop_wood_ = { nr=29.3, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="WLBlox", block="default:wood", add="loop_wood",p=4},
+ blox_corner_wood_ = { nr=29.4, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="WCBlox", block="default:wood", add="corner_wood",p=4},
+
+ blox_cobble_ = { nr=30, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="CnBlox", block="default:cobble", add="cobble",p=2 },
+ blox_quarter_cobble_ = { nr=30.1, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="C4Blox", block="default:cobble", add="quarter_cobble",p=4 },
+ blox_checker_cobble_ = { nr=30.2, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="C8Blox", block="default:cobble", add="checker_cobble",p=4},
+ blox_diamond_cobble_ = { nr=30.3, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="CDBlox", block="default:cobble", add="diamond_cobble",p=4},
+ blox_cross_cobble_ = { nr=30.4, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="CXBlox", block="default:cobble", add="cross_cobble",p=4},
+ blox_loop_cobble_ = { nr=30.6, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="CLBlox", block="default:cobble", add="loop_cobble",p=4},
+ blox_corner_cobble_ = { nr=30.7, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="CCBlox", block="default:cobble", add="corner_cobble",p=4},
+
+ homedecor_window_shutter_ = { nr=16.1, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="homedec", block="homedecor:shutter_oak", add="shutter_",p=16,composed=1},
+ forniture_armchair_top_ = { nr=16.2, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={0,0,0,0,1}, u=0, descr="armchair", block="homedecor:armchair_black", add="armchair_",p=1,composed=1},
+ forniture_kitchen_chair_sides_ = {nr=16.3, modname='homedecor',shades={1,0,1,0,0,0,1,0}, grey_shades={0,0,0,0,1}, u=0, descr="kchair", block="homedecor:chair", add="chair_",p=1,composed=1},
+ homedecor_bed_ = {nr=16.4, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,1,1,1,1}, u=0, descr="hbed", block="homedecor:bed_darkgrey_regular", add="bed_",p=1, obj_postfix='_regular', composed=1},
+ homedecor_bed_kingsize_ = {nr=16.45, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,1,1,1,1}, u=0, descr="hbedk", block="homedecor:bed_darkgrey_kingsize", add="bed_",p=1, obj_postfix='_kingsize', composed=1},
+ homedecor_bathroom_tiles_ = {nr=16.5, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,1,1,1,1}, u=0, descr="htiles", block="homedecor:tiles_1", add="tiles_",p=1,composed=1},
+ homedecor_curtain_ = { nr=16.6, modname='homedecor', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,0}, u=0, descr="curtain", block="homedecor:curtain_white", add="curtain_",composed=1},
+
+ homedecor_curtain_open_ = { nr=16.61, modname='homedecor', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,0}, u=0, descr="ocurtain", block="homedecor:curtain_open_white", add="curtain_open_", composed=1},
+
+ homedecor_desk_lamp_ = { nr=16.62, modname='homedecor', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,0}, u=0, descr="dlamp", block="homedecor:desk_lamp_blue", add="desk_lamp_", composed=1},
+ homedecor_table_lamp_ = { nr=16.63, modname='homedecor', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,0}, u=0, descr="tlamp", block="homedecor:table_lamp_white_off", add="table_lamp_", composed=1, obj_postfix='_off'},
+ homedecor_standing_lamp_ = { nr=16.64, modname='homedecor', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,0}, u=0, descr="slamp", block="homedecor:standing_lamp_white_off", add="standing_lamp_", composed=1, obj_postfix='_off'},
+
+ lavalamp_ = { nr=16.644, modname='lavalamp', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,0}, u=0, descr="lavalamp", block="lavalamp:blue", add="", composed=1},
+
+ homedecor_table_ = { nr=16,645,modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,0,0}, u=0, descr="htable", block="homedecor:table", add="table_", composed=1},
+ homedecor_book_ = { nr=16.65, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,0,0}, u=0, descr="hbook", block="default:book", add="book_", composed=1},
+ homedecor_bottle_ = { nr=16.66, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,0}, u=0, descr="hbottle", block="vessels:glass_bottle", add="bottle_", composed=1},
+ homedecor_welcome_mat_ = { nr=16.67, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,0,0}, u=0, descr="hwmat", block="homedecor:welcome_mat_grey", add="welcome_mat_", composed=1},
+
+
+ plasticbox_ = { nr=16.7, modname='plasticbox', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="plastic", block="plasticbox:plasticbox", add="plasticbox_",p=16},
+
+
+ kerova_chest_front_ = { nr=16.8, modname='kerova', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="kerova", block="default:chest", add="chest_",p=16},
+ kerova_chest_lock_ = { nr=16.9, modname='kerova', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="kerolo", block="default:chest_locked", add="chest_", obj_postfix='_locked',p=16},
+
+ coloredblocks_red_ = { nr=34, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_red", block="coloredblocks:white_white", add="red_",p=1},
+ coloredblocks_yellow_ = { nr=35, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_yel", block="coloredblocks:white_white", add="yellow_",p=1},
+ coloredblocks_green_ = { nr=36, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_gre", block="coloredblocks:white_white", add="green_",p=1},
+ coloredblocks_cyan_ = { nr=37, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_cya", block="coloredblocks:white_white", add="cyan_",p=1},
+ coloredblocks_blue_ = { nr=38, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_blu", block="coloredblocks:white_white", add="blue_",p=1},
+ coloredblocks_magenta_ = { nr=39, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_mag", block="coloredblocks:white_white", add="magenta_",p=1},
+ coloredblocks_brown_ = { nr=40, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_bro", block="coloredblocks:white_white", add="brown_",p=1},
+ coloredblocks_white_ = { nr=41, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_whi", block="coloredblocks:white_white", add="white_",p=1},
+ coloredblocks_black_ = { nr=42, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_bla", block="coloredblocks:white_white", add="black_",p=1},
+
+
+--[[
+ coloredblocks_red_ = { nr=34, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_red", block="coloredblocks:red", add="red_",p=1},
+ coloredblocks_yellow_ = { nr=35, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_yel", block="coloredblocks:yellow", add="yellow_",p=1},
+ coloredblocks_green_ = { nr=36, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_gre", block="coloredblocks:green", add="green_",p=1},
+ coloredblocks_cyan_ = { nr=37, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_cya", block="coloredblocks:cyan", add="cyan_",p=1},
+ coloredblocks_blue_ = { nr=38, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_blu", block="coloredblocks:blue", add="blue_",p=1},
+ coloredblocks_magenta_ = { nr=39, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_mag", block="coloredblocks:magenta", add="magenta_",p=1},
+ coloredblocks_brown_ = { nr=40, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_bro", block="coloredblocks:brown", add="brown_",p=1},
+ coloredblocks_white_ = { nr=41, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_whi", block="coloredblocks:white", add="",p=1},
+ coloredblocks_black_ = { nr=42, modname='coloredblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,1}, u=0, descr="cb_bla", block="coloredblocks:black", add="black_",p=1},
+--]]
+
+ clothing_inv_hat_ = { nr=43, modname='clothing', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="clhat", block="clothing:hat_white", add="hat_",p=1},
+ clothing_inv_shirt_ = { nr=44, modname='clothing', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="clshirt", block="clothing:shirt_white", add="shirt_",p=1},
+ clothing_inv_pants_ = { nr=45, modname='clothing', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="clpants", block="clothing:pants_white", add="pants_",p=1},
+ clothing_inv_cape_ = { nr=46, modname='clothing', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="clcape", block="clothing:cape_white", add="cape_",p=1},
+
+ cblocks_wood_ = { nr=2.01,modname='cblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="cblwo", block="default:wood", add="wood_",p=1, composed=1},
+ cblocks_stonebrick_ = { nr=2.02,modname='cblocks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="cblsb", block="default:stonebrick", add="stonebrick_",p=1, composed=1},
+}
+
+
+local mydeck_names = {'deck_boards','deck_beam',
+ 'deck_joists','deck_joists_side','deck_joists_end','deck_joists_side_end','deck_joists_endr','deck_joists_side_endr',
+ 'beam','beam_wbracket',
+ 'joists_beam','joists_beam_wbracket','joists_side_beam','joists_side_beam_wbracket',
+ 'deck_joists_beam','deck_joists_beam_wbracket','deck_joists_side_beam','deck_joists_side_beam_wbracket',
+ 'joists','joists_side','joists_end','joists_side_end','joists_endr','joists_side_endr',
+ 'lattice','pile_wpost','post',
+ 'rail','rail_corner','rail_icorner',
+ 'stairs','stairsb','stairs_ocorner','stairs_icorner','stairs_railr','stairs_raill','stairs_railr_end','stairs_raill_end'};
+for i,v in ipairs( mydeck_names ) do
+ colormachine.data[ v..'s_' ] = {
+ nr= 47.0 + 1/100*i,
+ modname='mydeck',
+ shades={1,0,1,0,0,0,1,0},
+ grey_shades={1,1,1,1,1},
+ u=0,
+ descr="myd"..tostring(i),
+ block="mydeck:"..v,
+ add=v.."s_",
+ composed=1,
+ p=1};
+end
+mydeck_names = nil;
+
+
+local myroofs_names = {'', '_bundle', '_icorner','_ocorner',
+ '_round_bundle', '_round_long', '_round_long_icorner', '_round_long_ocorner',
+ '_long', '_long_icorner', '_long_ocorner'};
+for i,v in ipairs( myroofs_names ) do
+ colormachine.data[ 'myroofs'..v..'_' ] = {
+ nr= 48.0 + 1/100*i,
+ modname='myroofs',
+ shades={1,0,1,0,0,0,1,0},
+ grey_shades={1,1,1,1,1},
+ u=0,
+ descr="myr"..tostring(i),
+ block="myroofs:asphalt_shingle_grey"..v,
+ add='asphalt_shingle_',
+ obj_postfix=v,
+ composed=1,
+ p=1};
+end
+myroof_names = nil;
+
+
+
+local mycorner_names = {'wood','stone','stonebrick'}
+local mycorner_materials = {
+ 'default_sandstone','default_clay','default_cobble','default_stone',
+ 'default_desert_stone','default_wood','default_pinewood','default_brick',
+ 'default_desert_cobble','default_junglewood','default_mossycobble',
+ 'default_sandstone_brick','default_desert_stone_brick','default_stone_brick'};
+for i,v in ipairs( mycorner_names ) do
+ colormachine.data[ 'corners_'..v..'_' ] = {
+ nr= 49.0 + 1/100*i,
+ modname='mycorners',
+ shades={1,0,1,0,0,0,1,0},
+ grey_shades={1,1,1,1,1},
+ u=0,
+ descr="myc"..v,
+ block="mycorners:corner_"..v..'_white',
+ add='corner_'..v..'_',
+ p=1};
+ for j,m in ipairs( mycorner_materials ) do
+ colormachine.data[ 'cornerblock_'..m..'_'..v..'_' ] = {
+ nr= 49.5 + 1/100*i + 1/1000*j,
+ modname='mycorners',
+ shades={1,0,1,0,0,0,1,0},
+ grey_shades={1,1,1,1,1},
+ u=0,
+ descr="myc"..tostring(j)..v,
+ block="mycorners:cornerblock_"..m..'_'..v..'_white',
+ add='cornerblock_'..m..'_'..v..'_',
+ composed=1,
+ p=1};
+ end
+end
+mycorner_materials = nil;
+mycorner_names = nil;
+
+colormachine.data[ 'mymulch_' ] = {
+ nr= 50,
+ modname='mymulch',
+ shades={1,0,1,0,0,0,1,0},
+ grey_shades={1,1,1,1,1},
+ u=0,
+ descr="mymulch",
+ block="mymulch:mulch_tan",
+ add='mulch_',
+ composed=1,
+ p=1};
+
+
+
+colormachine.ordered = {}
+
+
+-- the function that creates the color chooser based on the textures of the nodes offered (texture names have to start with m_prefix)
+colormachine.generate_form = function( m_prefix )
+
+ local form = "size["..tostring( #colormachine.colors+2 )..",10]".."label[5,0;Select a color:]"..
+ "label[5,8.2;Select a color or]"..
+ "button[7,8.2;2,1;abort;abort selection]"..
+ "label[0.3,1;light]";
+
+ -- not all mods offer all shades (and some offer even more)
+ local supported = colormachine.data[ m_prefix ].shades;
+
+ if( supported[2]==0 ) then
+ form = form..
+ "label[0.3,2;normal]"..
+ "label[0.3,4;medium]"..
+ "label[0.3,6;dark]";
+ else
+ form = form..
+ "label[0.3,3;normal]"..
+ "label[0.3,5;medium]"..
+ "label[0.3,7;dark]";
+ end
+
+ for x,basecolor in ipairs( colormachine.colors ) do
+ local p_offset = 1;
+
+ form = form.."label["..tostring(x)..",0.5;"..tostring( basecolor ).."]";
+
+
+ for y,pre in ipairs( colormachine.prefixes ) do
+
+ if( supported[ y * 2-1 ]==1 ) then
+ form = form..colormachine.print_color_image( nil, m_prefix, tostring( pre )..tostring( basecolor ), x, y*2-1, -1, x, p_offset, 0 );
+ end
+
+ p_offset = p_offset + 1;
+
+ -- these only exist in unifieddyes and need no translation
+ if( supported[ y * 2 ]==1 ) then
+ form = form..colormachine.print_color_image( nil, m_prefix, tostring( pre )..tostring( basecolor )..'_s50', x, y*2, -1, x, p_offset, 0 );
+ end
+
+ -- the first row does not always hold all colors
+ if( y >1 or supported[ y * 2 ]==1) then
+ p_offset = p_offset + 1;
+ end
+ end
+ end
+
+ -- shades of grey
+ form = form.. "label[" ..tostring( #colormachine.colors+1 )..",0.5;grey]";
+ for i,gname in ipairs( colormachine.grey_names ) do
+ if( colormachine.data[ m_prefix ].grey_shades[ i ]==1 ) then
+
+ form = form..colormachine.print_color_image( nil, m_prefix, gname, -1, -1, i, tostring( #colormachine.colors+1 ), tostring( i+1 ), 0 );
+ end
+ end
+ return form;
+end
+
+
+
+colormachine.decode_color_name = function( meta, new_color )
+
+ -- decode the color codes
+ local liste = new_color:split( "_" );
+ if( #liste < 1 or #liste > 3 ) then
+ liste = {'white'};
+ end
+ -- perhaps it's one of the grey colors?
+ for i,v in ipairs( colormachine.grey_names ) do
+ if( v == liste[1] ) then
+ if( meta ) then
+ meta:set_string('selected_shade', -1 ); -- grey-shade
+ meta:set_string('selected_grey_shade', i );
+ meta:set_string('selected_color', -1 ); -- we selected grey
+ meta:set_string('selected_name', new_color );
+ return new_color;
+ else
+ return { s=-1, g=i, c=-1 };
+ end
+ end
+ end
+
+ if( #liste < 1 ) then
+ if( meta ) then
+ return meta:get_string('selected_name');
+ else
+ return nil;
+ end
+ end
+
+ local selected_shade = 2; -- if no other shade is selected, use plain color
+ local vgl = liste[1]..'_';
+ for i,v in ipairs( colormachine.prefixes ) do
+ if( v == vgl or v== liste[1]) then
+ selected_shade = i;
+ table.remove( liste, 1 ); -- this one has been done
+ end
+ end
+
+ if( #liste < 1 ) then
+ if( meta ) then
+ return meta:get_string('selected_name');
+ else
+ return nil;
+ end
+ end
+
+ local selected_color = -1;
+ for i,v in ipairs( colormachine.colors ) do
+ if( v == liste[1] ) then
+ selected_color = i;
+ table.remove( liste, 1 ); -- the color has been selected
+ end
+ end
+
+ -- the color was not found! error! keep the old color
+ if( selected_color == -1 ) then
+ if( meta ) then
+ return meta:get_string('selected_name');
+ else
+ return nil;
+ end
+ end
+
+ if( #liste > 0 and liste[1]=='s50') then
+ selected_shade = selected_shade * 2;
+ else
+ selected_shade = selected_shade * 2 - 1;
+ end
+
+ if( meta ) then
+ meta:set_string('selected_shade', selected_shade ); -- grey-shade
+ meta:set_string('selected_grey_shade', -1 );
+ meta:set_string('selected_color', selected_color ); -- we selected grey
+ meta:set_string('selected_name', new_color );
+ return new_color;
+ else
+ return { s=selected_shade, g=-1, c= selected_color };
+ end
+end
+
+
+
+-- returns "" if the item does not exist;
+-- wrapper for colormachine.translate_color_name(..)
+
+colormachine.print_color_image = function( meta, k, new_color, c, s, g, pos_x, pos_y, change_link )
+
+
+ local translated_node_name = colormachine.translate_color_name( meta, k, new_color, c, s, g, 1 );
+
+ local translated_color = colormachine.translate_color_name( meta, k, new_color, c, s, g, 0 );
+ if( not( translated_color )) then
+ if( translated_node_name and minetest.registered_items[ translated_node_name ] ) then
+ if( minetest.registered_items[ translated_node_name ].inventory_image ) then
+ translated_color = minetest.registered_items[ translated_node_name ].inventory_image;
+ elseif( minetest.registered_items[ translated_node_name ].wield_image ) then
+ translated_color = minetest.registered_items[ translated_node_name ].wield_image;
+ end
+ end
+ end
+ if( not( translated_color )) then
+ return "";
+ end
+
+-- local translated_node_name = colormachine.translate_color_name( meta, k, new_color, c, s, g, 1 );
+ if( not( translated_node_name )) then
+ return "";
+ end
+
+ -- a node or craftitem of that name does not exist
+ if( not( minetest.registered_items[ translated_node_name ])
+ and not( minetest.registered_craftitems[ translated_node_name ])) then
+
+--print("NOT FOUND: "..tostring( translated_node_name ).." image_button["..tostring(pos_x)..","..tostring(pos_y)..";1,1;"..translated_color..";"..tostring(link).."; ]");
+ return "";
+ end
+ -- switch to the color selector for that blocktype
+ local link = new_color;
+ if( change_link==1 ) then
+ link = k;
+ end
+
+ if( colormachine.data[ k ].composed ) then
+ return "item_image_button["..tostring(pos_x)..","..tostring(pos_y)..";1,1;"..translated_node_name..";"..tostring(link).."; ]";
+ else
+ return "image_button["..tostring(pos_x)..","..tostring(pos_y)..";1,1;"..translated_color..";"..tostring(link).."; ]";
+ end
+end
+
+
+-- returns the translated name of the color if necessary (wool/normal dye is named differently than unifieddyes);
+-- either meta or c, s and g together need to be given
+-- mode==0: return texture name
+-- mode==1: return object name for itemstacks etc
+colormachine.translate_color_name = function( meta, k, new_color, c, s, g, as_obj_name )
+
+ if( meta ~= nil ) then
+ c = tonumber(meta:get_string('selected_color'));
+ s = tonumber(meta:get_string('selected_shade'));
+ g = tonumber(meta:get_string('selected_grey_shade'));
+ end
+
+
+ -- is this special shade supported at all?
+ if( ( g > 0 and colormachine.data[k].grey_shades[ g ] ~= 1 )
+ or ( g == -1 and colormachine.data[k].shades[ s ] ~= 1 )) then
+ return nil;
+ end
+
+ local k_orig = k;
+ -- unifieddyes_ does not supply all colors
+ if( k == 'unifieddyes_'
+ and ( (g==-1 and s==3 and (as_obj_name==1 or not(c==4 or c==6 or c==8 or c==12 or c==13 )))
+ or (g==-1 and s==1 and c==1 ) -- pink
+ or (g==-1 and s==7 and c==5 ) -- dark brown
+ or g==1 or g==3 or g==4 or g==5 )) then
+ k = 'dye_';
+ end
+
+ if( k=='homedecor_bathroom_tiles_' and as_obj_name==1 ) then
+ if( g==1 or new_color==colormachine.grey_names[1]) then
+ return 'homedecor:tiles_1';
+ elseif( g==3 or new_color==colormachine.grey_names[3]) then
+ return 'homedecor:tiles_2';
+ elseif( g==4 or new_color==colormachine.grey_names[4]) then
+ return 'homedecor:tiles_4';
+ elseif( g==5 or new_color==colormachine.grey_names[5]) then
+ return 'homedecor:tiles_3';
+ elseif( new_color == 'dark_orange' ) then
+ return 'homedecor:tiles_tan';
+ end
+ end
+
+ if( colormachine.data[k].modname=='myroofs' and as_obj_name==1 ) then
+ if( g==5 or new_color == 'black' ) then
+ return "myroofs:asphalt_shingle_hd_asphalt"..(colormachine.data[k].postfix or '');
+ elseif( new_color=='orange') then
+ return "myroofs:asphalt_shingle_hd_terracotta"..(colormachine.data[k].postfix or '');
+ elseif( new_color=='dark_orange') then
+ return "myroofs:asphalt_shingle_hd_wood"..(colormachine.data[k].postfix or '');
+ end
+ end
+
+ if( (k=='homedecor_book_' or k=='homedecor_bottle_' or k=='homedecor_welcome_mat_' ) and as_obj_name==1) then
+ if( new_color == 'dark_orange' ) then
+ new_color = 'brown';
+ return 'homedecor:'..colormachine.data[k].add..'brown'..(colormachine.data[k].postfix or '');
+ end
+ end
+
+ if( k=='homedecor_table_' and as_obj_name==1 and new_color=='dark_orange' ) then
+ return 'homedecor:'..colormachine.data[k].add..'mahogany'..(colormachine.data[k].postfix or '');
+ end
+
+ if( k=='homedecor_bed_' and as_obj_name==1 and g==4 ) then
+ return 'homedecor:bed_darkgrey_regular';
+ end
+
+ -- this does break the namescheme...
+ if( k=='unifieddyes_' and g==2 and as_obj_name==1 ) then
+ return 'dye:light_grey';
+ end
+
+ -- beds and sofas are available in less colors
+ if( g==-1
+ and (c==7 or c==11)
+ and (k=='beds_bed_top_top_' or k=='lrfurn_sofa_right_front_' or k=='lrfurn_armchair_front_' or k=='lrfurn_longsofa_middle_front_' )) then
+
+ return nil;
+ end
+
+ -- blox has its own naming scheme - but at least the colors supported are of a simple kind (no shades, no lower saturation)
+ if( colormachine.data[k].modname == 'blox' ) then
+
+ local color_used = "";
+ if( s==1 and c==1 ) then
+ color_used = 'pink'; -- in blox, this is called "pink"; normally "light_red"
+ elseif( g>-1 ) then
+ color_used = colormachine.grey_names[ g ];
+ elseif( s ~= 3 ) then
+ return nil; -- only normal saturation supported
+ elseif( c==10 ) then
+ color_used = 'purple'; -- purple and violet are not the same, but what shall we do?
+ elseif( c==4 or c==6 or c==8 or c>10 ) then
+ return nil; -- these colors are not supported
+ elseif( c > 0 ) then
+ color_used = colormachine.colors[ c ];
+ end
+
+ if( as_obj_name == 1 ) then
+ return 'blox:'..( color_used )..( colormachine.data[k].add );
+ else
+ return 'blox_'..( color_used )..( colormachine.data[k].add )..'.png';
+ end
+ end
+
+
+ local postfix = '.png';
+ local prefix = k;
+ -- we want the object name, i.e. default:brick, and not default_brick.png (all with colors inserted...):
+ if( as_obj_name == 1 ) then
+ postfix = '';
+
+ prefix = colormachine.data[ k ].modname..":"..colormachine.data[ k ].add;
+
+ -- stained_glass needs an exception here because it uses a slightly different naming scheme
+ if( colormachine.data[ k ].modname == 'stained_glass' and stained_glass_exception==1) then
+
+ if( g>0 ) then
+ return nil; -- no grey values for them
+ end
+ local h_trans = {yellow=1, lime=2, green=3, aqua=4, cyan=5, skyblue=6, blue=7, violet=8, magenta=9, redviolet=10, red=11,orange=12};
+
+ local h = h_trans[ colormachine.colors[c] ];
+
+ local b = "";
+ local sat = "";
+
+ if( k == 'stained_glass_' ) then
+ prefix = "stained_glass:"..(colormachine.colors[c]).."_";
+ if( s==1 or s==2) then b = "8"; -- light
+ elseif( s==3 or s==4) then b = "5"; -- normal
+ elseif( s==5 or s==6) then b = "4"; -- medium
+ elseif( s==7 or s==8) then b = "3"; -- dark
+ end
+ prefix = prefix.."_";
+
+ sat = "7";
+ if( s==2 or s==4 or s==6 or s==8 ) then -- saturation
+ sat = "6";
+ end
+ if( s==1 ) then
+ sat = "";
+ end
+ return "stained_glass:" .. (h) .. "_" .. (b) .. "_" .. (sat);
+
+ elseif( k == 'stained_glass_faint_' ) then
+ return "stained_glass:"..(h).."_91";
+
+ elseif( k == 'stained_glass_pastel_' ) then
+ return "stained_glass:"..(h).."_9";
+ end
+ end
+ end
+
+ -- homedecors names are slightly different....
+ if( k == 'homedecor_window_shutter_' ) then
+
+ if( s==1 and new_color=='light_blue' ) then -- only light blue is supported
+ return prefix..'light_blue'..postfix;
+
+ elseif( new_color=='dark_green' ) then
+ return prefix..'forest_green'..postfix;
+
+ -- no more light colors, no more cyan or mangenta available; no normal green or blue
+ elseif( s==1 or c==7 or c==11 or c==5 or c==9 ) then
+ return nil;
+
+ elseif( new_color=='dark_orange' ) then
+ return prefix..'mahogany'..postfix;
+
+ elseif( new_color=='orange' ) then
+ return prefix..'oak'..postfix;
+
+ end
+ end
+
+ if( k=='cotton_' and new_color=='grey') then
+ new_color = 'mediumgrey';
+ end
+
+
+ if( k=='framedglass_' and as_obj_name ~= 1) then
+ postfix = 'glass.png';
+ end
+
+ if( k=='shells_dye_' ) then
+ if( as_obj_name == 1 ) then
+ postfix = 'lightglass';
+ else
+ postfix = 'lightglass.png';
+ end
+ end
+
+
+ if( k=='homedecor_bed_' ) then
+ if( as_obj_name == 1 ) then
+ --postfix = '_foot';
+ else
+ postfix = '_inv.png';
+ end
+ end
+
+ -- those have split textures...
+ if( colormachine.data[k].modname == 'coloredblocks') then
+
+
+
+ -- we are looking for the image name
+ if( prefix==k ) then
+
+ if( new_color == 'dark_orange') then
+ new_color = 'brown';
+ end
+
+ -- show the top of the blocks in the individual formspec
+ if( not(meta) ) then
+ return 'coloredblocks_'..new_color..postfix;
+ end
+ -- show the side view in the main menu
+ return string.sub(k, 1, string.len( k )-1)..'half'..postfix;
+-- TODO
+
+--[[
+
+ if( new_color == 'dark_orange') then
+ new_color = 'brown';
+ end
+
+ return 'coloredblocks_'..new_color..postfix;
+
+ elseif( new_color..'_' == colormachine.data[k].add ) then
+
+ prefix = 'coloredblocks:';
+--]]
+ end
+
+ end
+
+ if( colormachine.data[k].modname == 'plasticbox'
+ and new_color == 'dark_green') then
+ return prefix..'darkgreen'..postfix;
+ end
+
+ -- some mods need additional data be added after the color name
+ if( as_obj_name == 1 and colormachine.data[k].obj_postfix ) then
+ postfix = (colormachine.data[k].obj_postfix) ..postfix;
+ end
+
+ -- normal dyes (also used for wool) use a diffrent naming scheme
+ if( colormachine.data[k].u == 0) then
+ if( new_color == 'darkgrey' and k ~= 'framedglass_') then
+ return prefix..'dark_grey'..postfix;
+ elseif( new_color == 'dark_orange' ) then
+ return prefix..'brown'..postfix;
+ elseif( new_color == 'dark_green' ) then
+ return prefix..new_color..postfix;
+ elseif( new_color == 'light_red' ) then
+ return prefix..'pink'..postfix;
+ -- lime, aqua, skyblue and redviolet do not exist as standard wool/dye colors
+ elseif( g == -1 and (c==4 or c==6 or c==8 or c==12) and k_orig ~= 'unifieddyes_') then
+ return nil;
+ -- all other colors of normal dye/wool exist only in normal shade
+ elseif( g == -1 and s~= 3 and k_orig ~= 'unifieddyes_') then
+ return nil;
+ -- colors that are the same in both systems and need no special treatment
+ else
+ return prefix..new_color..postfix;
+ end
+ end
+
+ return prefix..new_color..postfix;
+end
+
+
+-- if a block is inserted, the name of its color is very intresting (for removing color or for setting that color)
+-- (kind of the inverse of translate_color_name)
+colormachine.get_color_from_blockname = function( mod_name, block_name )
+
+ local bname = mod_name..":"..block_name;
+ local found = {};
+ for k,v in pairs( colormachine.data ) do
+ if( mod_name == v.modname ) then
+ table.insert( found, k );
+ end
+ end
+
+ if( #found < 1 ) then
+ return { error_code ="Sorry, this block is not supported by the spray booth.",
+ found_name = "",
+ blocktype = ""};
+ end
+
+ -- another case of special treatment needed; at least the color is given in the tiles
+ if( mod_name =='stained_glass' and stained_glass_exception==1) then
+
+ local original_node = minetest.registered_items[ bname ];
+ if( original_node ~= nil ) then
+ local tile = original_node.tiles[1];
+ local liste2 = string.split( tile, "%.");
+ block_name = liste2[1];
+ end
+ end
+
+ -- this mod does not seperate modname and objectname well enough :-( Naming scheme:- steel_framed_obsidian_glassCOLOR
+ if( mod_name =='framedglass' ) then
+ block_name = string.sub( block_name, 28 );
+ end
+
+ if( mod_name =='shells_dye' ) then
+ block_name = string.sub( block_name, 1, string.len( block_name )-string.len( 'lightglass') );
+ end
+
+ -- blox uses its own naming scheme
+ if( mod_name =='blox' ) then
+ -- the color can be found in the description
+ local original_node = minetest.registered_items[ bname ];
+ if( original_node ~= nil ) then
+
+ local bloxdescr = original_node.description;
+ -- bloxparts[1] will be filled with the name of the color:
+ local bloxparts = string.split( bloxdescr, " ");
+ -- now extract the blocktype information
+ if( bloxparts ~= nil and #bloxparts > 0 ) then
+
+ -- we split with the color name
+ local found_name = bloxparts[1];
+ local blocktype = 'blox_'..string.sub( block_name, string.len( found_name )+1 )..'_';
+
+ -- handle pink and purple
+ if( found_name == 'pink' ) then
+ found_name = 'light_red';
+ elseif( found_name == 'purple' ) then
+ found_name = 'violet';
+ end
+
+ return { error_code = nil,
+ found_name = found_name, -- the name of the color
+ blocktype = blocktype }; -- the blocktype
+ end
+ end
+ -- if this point is reached, the decoding of the blox-block-name has failed
+ return { error_code = "Error: Failed to decode color of this blox-block.",
+ found_name = "",
+ blocktype = "" };
+
+ end
+
+ -- homedecors names are slightly different....
+ if( mod_name == 'homedecor' ) then
+
+ -- change the blockname to the expected color
+ if( block_name == 'shutter_forest_green' ) then
+ block_name = 'shutter_dark_green';
+
+ elseif( block_name == 'shutter_mahogany' ) then
+ block_name = 'shutter_dark_orange';
+
+ -- this is the default, unpainted one..which can also be considered as "orange" in the menu
+-- elseif( blockname == 'shutter_oak' ) then
+-- block_name = 'shutter_orange';
+ end
+ end
+
+ if( mod_name == 'plasticbox' and block_name == 'plasticbox_darkgreen' ) then
+ block_name = 'plasticbox_dark_green';
+ end
+
+ -- even cotton needs an exception...
+ if( mod_name == 'cotton' and block_name=='mediumgrey' ) then
+ block_name = 'grey';
+ end
+
+
+
+ local blocktype = '';
+ -- some mods may have a postfix to their modname (which is pretty annoying)
+ for _,k in ipairs( found ) do
+ if( colormachine.data[k].obj_postfix ) then
+
+ local l = string.len( colormachine.data[k].obj_postfix);
+ if( string.len( block_name ) > l
+ and string.sub( block_name, -1*l ) == colormachine.data[k].obj_postfix ) then
+
+ block_name = string.sub( block_name, 1, (-1*l)-1 );
+ blocktype = k;
+ end
+ end
+ end
+
+ -- try to analyze the name of this color; this works only if the block follows the color scheme
+ local liste = string.split( block_name, "_" );
+ local curr_index = #liste;
+
+ -- handle some special wool- and dye color names
+ -- dark_grey <-> darkgrey
+ if( #liste > 1 and liste[ curr_index ]=='grey' and liste[ curr_index - 1 ] == 'dark' ) then
+ curr_index = curr_index - 1;
+ liste[ curr_index ] = 'darkgrey';
+
+ -- brown <=> dark_orange
+ elseif( #liste > 0 and liste[ curr_index ]=='brown' ) then
+ liste[ curr_index ] = 'dark';
+ table.insert( liste, 'orange' );
+ curr_index = curr_index + 1;
+
+ -- pink <=> light_red
+ elseif( #liste > 0 and liste[ curr_index ]=='pink' ) then
+ liste[ curr_index ] = 'light';
+ table.insert( liste, 'red' );
+ curr_index = curr_index + 1;
+ end
+
+ -- find out the saturation - either "s50" or omitted
+ local sat = 0;
+ if( curr_index > 1 and liste[ curr_index ] == "s50" ) then
+ sat = 1;
+ curr_index = curr_index - 1;
+ end
+
+ -- the next value will be the color
+ local c = 0;
+ if( curr_index > 0 ) then
+ for i,v in ipairs( colormachine.colors ) do
+ if( c==0 and curr_index > 0 and v == liste[ curr_index ] ) then
+ c = i;
+ curr_index = curr_index - 1;
+ end
+ end
+ end
+
+ local g = -1;
+ -- perhaps we are dealing with a grey value
+ if( curr_index > 0 and c==0 ) then
+ for i,v in ipairs(colormachine.grey_names ) do
+ if( g==-1 and curr_index > 0 and v == liste[ curr_index ] ) then
+ g = i;
+ c = -1;
+ curr_index = curr_index - 1;
+ end
+ end
+ end
+
+ -- determine the real shade; 3 stands for normal
+ local s = 3;
+ if( curr_index > 0 and g==-1 and c~=0) then
+ if( liste[ curr_index ] == 'light' ) then
+ s = 1;
+ curr_index = curr_index - 1;
+ elseif( liste[ curr_index ] == 'medium' ) then
+ s = 5;
+ curr_index = curr_index - 1;
+ elseif( liste[ curr_index ] == 'dark' ) then
+ s = 7;
+ curr_index = curr_index - 1;
+ end
+ end
+
+ local found_name = "";
+ if( g ~= -1 ) then
+ found_name = colormachine.grey_names[ g ];
+ elseif( c > 0 ) then
+
+ found_name = colormachine.prefixes[ math.floor((s+1)/2) ] .. colormachine.colors[ c ];
+
+ if( sat==1 ) then
+ s = s+1;
+ found_name = found_name.."_s50";
+ end
+ end
+
+ -- for blocks that do not follow the naming scheme - the color cannot be decoded
+ if( g==-1 and c==0 ) then
+ return { error_code ="This is a colored block: "..tostring( bname )..".",
+ found_name = "",
+ blocktype = ""};
+ end
+
+ -- identify the block type/subname
+ local add = "";
+
+ if( curr_index > 0 ) then
+
+ for k,v in pairs( colormachine.data ) do
+ -- prefix and postfix have to fit
+ if( curr_index > 0 and add=="" and mod_name == v.modname and (liste[ curr_index ].."_") == v.add
+ -- if a postfix exists, we did check for that before and set blocktype accordingly
+ and( not( blocktype ) or blocktype=='' or blocktype==k)) then
+ add = v.add;
+ blocktype = k;
+ curr_index = curr_index - 1;
+ end
+ end
+ end
+
+ if( not( blocktype ) or blocktype == '' ) then
+ blocktype = found[1];
+ end
+
+ if( curr_index > 0 and #liste>0 and liste[1]=='chair' and blocktype == 'homedecor_bed_' ) then
+ return { error_code = nil,
+ found_name = found_name,
+ blocktype = 'forniture_kitchen_chair_sides_'};
+ end
+
+ if( curr_index > 0 ) then
+ local k_help = '';
+ for i=1, curr_index do
+ k_help = k_help..liste[i]..'_';
+ end
+ if( colormachine.data[ k_help ]) then
+ blocktype = k_help;
+ else
+ print( 'colormachine: ERROR: leftover name parts for '..tostring( bname )..": "..minetest.serialize( liste ));
+ end
+ end
+
+ return { error_code = nil,
+ found_name = found_name,
+ blocktype = blocktype};
+end
+
+
+
+-- if the player has selected a color, show all blocks in that color
+colormachine.blocktype_menu = function( meta, new_color, page )
+
+ page = tonumber( page );
+ local per_line = 13;
+ local anz_lines = 3;
+ local per_page = anz_lines * per_line;
+ local start_at_offset = per_page * page;
+
+ new_color = colormachine.decode_color_name( meta, new_color );
+
+ -- keep the same size as with the color selector
+ local form = "size["..tostring( #colormachine.colors+2 )..",10]".."label[5,0;Select a blocktype:]"..
+ "label[0.2,1.2;name]"..
+ "label[0.2,2.2;unpainted]"..
+ "label[0.2,3.2;colored]"..
+ "button[1,0.5;4,1;dye_management;Manage stored dyes]"..
+ "button[5,0.5;4,1;main_menu;Back to main menu]";
+ local x = 1;
+ local y = 2;
+
+ for i,k in ipairs( colormachine.ordered ) do
+
+ -- only installed mods are of intrest
+ if( k ~= nil and colormachine.data[ k ].installed == 1 and i > start_at_offset and i <= (start_at_offset + per_page)) then
+
+ -- that particular mod may not offer this color
+ form = form.."button["..tostring(x)..","..tostring(y-0.8).. ";1,1;"..k..";"..colormachine.data[k].descr.."]"..
+ "item_image["..tostring(x)..","..tostring(y )..";1,1;"..colormachine.data[k].block.."]";
+
+ local button = colormachine.print_color_image( meta, k, new_color, nil, nil, nil, tostring(x), tostring(y+1), 1);-- translated_color as return value for button
+ if( button ~= "" ) then
+ form = form..button;
+ else
+ form = form.."button[".. tostring(x)..","..tostring(y+1)..";1,1;"..k..";n/a]";
+ end
+
+ x = x+1;
+ if( x>per_line ) then
+ x = 1;
+ y = y+anz_lines;
+ if( y < 2+anz_lines*3 ) then
+ form = form..
+ "label[0.2,"..tostring(y-1)..".2;name]"..
+ "label[0.2,"..tostring(y )..".2;unpainted]"..
+ "label[0.2,"..tostring(y+1)..".2;colored]";
+ end
+ end
+ end
+ end
+ if( #colormachine.ordered > per_page ) then
+ local max_page_nr = math.ceil( #colormachine.ordered/per_page );
+ -- add page number
+ form = form.."field[20,20;0.1,0.1;page;;"..math.floor( start_at_offset/(3*13) ).."]"..
+ "label[10.2,0.5;"..tostring( page+1 ).."/"..tostring( max_page_nr ).."]";
+ if( page and page>0 ) then
+ form = form..
+ "button[9.0,0.5;0.5,0.5;first_page;"..minetest.formspec_escape("1|<").."]"..
+ "button[9.6,0.5;0.5,0.5;prev_page;"..tostring(page)..minetest.formspec_escape("<").."]";
+ end
+ if( not( page ) or page+1 < max_page_nr ) then
+ form = form..
+ "button[10.8,0.5;0.5,0.5;next_page;"..minetest.formspec_escape(">")..tostring( math.min( page+2, max_page_nr )).."]"..
+ "button[11.4,0.5;0.5,0.5;last_page;"..minetest.formspec_escape(">|")..tostring( max_page_nr ).."]";
+ end
+ end
+ return form;
+end
+
+
+
+-- this function tries to figure out which block type was inserted and how the color can be decoded
+colormachine.main_menu_formspec = function( pos, option )
+
+ local i = 0;
+ local k = 0;
+ local v = 0;
+
+ local form = "size[14.5,9]"..
+ "list[current_player;main;1,5;8,4;]"..
+-- TODO
+-- "label[3,0.2;Spray booth main menu]"..
+ "button[6.5,0.25;3,1;dye_management;Manage stored dyes]"..
+ "button[6.5,0.75;3,1;blocktype_menu;Show supported blocks]"..
+
+ "label[3,0.0;1. Input - Insert material to paint:]"..
+ "list[current_name;input;4.5,0.5;1,1;]"..
+
+ "label[9.3,-0.5;Additional storage for dyes:]"..
+ "list[current_name;extrastore;9.3,0;5,9]";
+
+ if( minetest.setting_getbool("creative_mode") ) then
+ form = form.."label[0.5,0.25;CREATIVE MODE:]".."label[0.5,0.75;no dyes or input consumed]";
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory();
+
+ -- display the name of the color the machine is set to
+ form = form.."label[1.0,4.3;Current painting color:]"..
+ "label[3.5,4.3;"..(meta:get_string('selected_name') or "?" ).."]"..
+ -- display the owner name
+ "label[7,4.3;Owner: "..(meta:get_string('owner') or "?" ).."]";
+
+ if( inv:is_empty( "input" )) then
+ form = form.."label[2.2,3.0;Insert block to be analyzed.]";
+ return form;
+ end
+
+ local stack = inv:get_stack( "input", 1);
+ local bname = stack:get_name();
+ -- lets find out if this block is one of the unpainted basic blocks calling for paint
+ local found = {};
+ for k,v in pairs( colormachine.data ) do
+ if( bname == v.block and colormachine.data[ k ].installed==1) then
+ table.insert( found, k );
+ end
+ end
+
+ -- make sure all output fields are empty
+ for i = 1, inv:get_size( "output" ) do
+ inv:set_stack( "output", i, "" );
+ end
+
+ local anz_blocks = stack:get_count();
+
+ -- a block that can be colored
+ if( #found > 0 ) then
+
+ local out_offset = 3.5-math.floor( #found / 2 );
+ if( out_offset < 0 ) then
+ out_offset = 0;
+ end
+
+ local anz_found = 0;
+ local p_values = {}; -- how many blocks can be colored with one pigment?
+ for i,v in ipairs( found ) do
+ if( i <= inv:get_size( "output" )) then
+
+ -- offer the description-link
+ form = form.."button["..tostring(out_offset+i)..","..tostring(1.45)..";1,1;"..v..";"..colormachine.data[v].descr.."]";
+
+ -- when clicking here, the color selection menu for that blocktype is presented
+ local button = colormachine.print_color_image( meta, v, meta:get_string('selected_name'), nil, nil, nil, tostring(out_offset+i), tostring(2.0),1 );
+
+ if( button ~= "" ) then
+
+ local block_name = colormachine.translate_color_name( meta, v, meta:get_string('selected_name'), nil, nil, nil, 1 );
+ -- one pigment is enough for factor blocks:
+ local factor = colormachine.data[ v ].p;
+ if( not( factor )) then
+ factor = 1.0;
+ end
+ -- how many of these blocks can we actually paint?
+
+ local can_be_painted = 0;
+ if( not( minetest.setting_getbool("creative_mode") )) then
+ can_be_painted = colormachine.calc_dyes_needed( meta, inv, math.ceil( anz_blocks / factor ), 0 );
+ else
+ can_be_painted = 99; -- an entire stack can be painted in creative mode
+ end
+ inv:set_stack( "output", i, block_name.." "..tostring( math.min( can_be_painted * factor, anz_blocks )));
+
+ p_values[ i ] = factor;
+
+ form = form..button;
+ else
+ inv:set_stack( "output", i, "" );
+
+-- form = form.."button[" ..tostring(2+i)..","..tostring(2.5)..";1,1;"..v..";"..colormachine.data[v].descr.."]";
+ form = form.."button[".. tostring(out_offset+i)..","..tostring(2.0)..";1,1;"..v..";n/a]";
+ end
+ anz_found = anz_found + 1;
+ end
+ end
+ -- so that we can determine the factor when taking blocks from the output slots
+ meta:set_string('p_values', minetest.serialize( p_values ));
+
+ -- this color was not supported
+ if( anz_found == 0 ) then
+ form = form.."label[2.2,3.0;Block is not available in that color.]";
+ return form;
+ end
+
+ form = form.."label[3.0,1.2;2. Select color for any style:]"..
+ "label[3.0,2.9;3. Take output (determines style):]"..
+ "list[current_name;output;"..tostring(out_offset+1)..",3.5;"..tostring( anz_found )..",1;]";
+ return form;
+ end -- end of handling of blocks that can be colored
+
+
+ -- get the modname
+ local parts = string.split(bname,":");
+ if( #parts < 2 ) then
+ form = form.."label[2.2,3.0;ERROR! Failed to analyze the name of this node: "..tostring(bname).."]";
+ return form;
+ end
+
+
+ -- it may be a dye source
+ for i,v in ipairs( colormachine.basic_dye_sources ) do
+ -- we have found the right color!
+ if( bname == v ) then
+ form = form.."label[2.2,3.0;This is a dye source.]"..
+ "button[6,3.0;3,1;turn_into_dye;Add to internal dye storage]";
+ return form;
+ end
+ end
+
+
+ -- it is possible that we are dealing with an already painted block - in that case we have to dertermie the color
+ local found_color_data = colormachine.get_color_from_blockname( parts[1], parts[2] );
+ if( found_color_data.error_code ~= nil ) then
+ form = form.."label[2.2,3.0;"..found_color_data.error_code..".]";
+ return form;
+ end
+
+ -- the previous analyse was necessary in order to determine which block we ought to use
+ if( option == 'remove_paint' ) then
+ -- actually remove the paint from the
+ inv:set_stack( "input", 1, colormachine.data[ found_color_data.blocktype ].block.." "..tostring( anz_blocks ));
+ -- update display (we changed the input!)
+ return colormachine.main_menu_formspec(pos, "analyze");
+ end
+
+
+ if( option == 'adapt_color' ) then
+ -- actually change the color
+ colormachine.decode_color_name( meta, found_color_data.found_name );
+ -- default color changed - update the menu
+ return colormachine.main_menu_formspec(pos, "analyze");
+ end
+
+ -- print color name; select as input color / remove paint
+ form = form.."label[2.2,3.0;This is: "..tostring( found_color_data.found_name )..".]"..
+ "button[6,3.5;3,1;remove_paint;Remove paint]";
+
+ if( found_color_data.found_name ~= meta:get_string( 'selected_name' )) then
+ form = form.."button[6,2.6;3,1;adapt_color;Set as new color]";
+ else
+ form = form.."label[5.5,2.0;This is the selected color.]";
+ end
+
+ return form;
+end
+
+
+-- returns a list of all blocks that can be created by applying dye_node_name to the basic node of old_node_name
+colormachine.get_node_name_painted = function( old_node_name, dye_node_name )
+ local possible_blocks = {};
+ local unpainted_block = "";
+ local old_dye = "";
+ for k,v in pairs( colormachine.data ) do
+ if( old_node_name == v.block and colormachine.data[ k ].installed==1) then
+ table.insert( possible_blocks, k );
+ unpainted_block = old_node_name;
+ end
+ end
+
+ if( unpainted_block == "" ) then
+ local parts = string.split(old_node_name,":");
+ if( #parts < 2 ) then
+ return;
+ end
+ found_color_data_block = colormachine.get_color_from_blockname( parts[1], parts[2] );
+ if( found_color_data_block.error_code ~= nil ) then
+ return;
+ end
+ unpainted_block = colormachine.data[ found_color_data_block.blocktype ].block;
+ old_dye = found_color_data_block.found_name;
+
+ -- figure out how the dye this block was painted with was called
+ local cdata = colormachine.decode_color_name( nil, old_dye );
+ if( cdata ) then
+ old_dye = colormachine.translate_color_name( nil, 'unifieddyes_', old_dye, cdata.c, cdata.s, cdata.g, 1 );
+ if( not( old_dye ) or old_dye == '' ) then
+ old_dye = colormachine.translate_color_name( nil, 'dye_', old_dye, cdata.c, cdata.s, cdata.g, 1 );
+ end
+ else
+ old_dye = '';
+ end
+ end
+ if( unpainted_block ~= "" and #possible_blocks < 1 ) then
+ for k,v in pairs( colormachine.data ) do
+ if( unpainted_block == v.block and colormachine.data[ k ].installed==1) then
+ table.insert( possible_blocks, k );
+ end
+ end
+ end
+
+ -- remove paint
+ if( not( dye_node_name ) or dye_node_name == "") then
+ return {possible={unpainted_block},old_dye = old_dye};
+ end
+
+ -- decode dye name
+ parts = string.split(dye_node_name,":");
+ if( #parts < 2 ) then
+ return;
+ end
+ local found_color_data_color = colormachine.get_color_from_blockname( parts[1], parts[2] );
+
+ if( found_color_data_color.error_code ~= nil ) then
+ return;
+ end
+ local dye_name = found_color_data_color.found_name;
+
+ local cdata = colormachine.decode_color_name( nil, dye_name );
+ if( not( cdata )) then
+ return;
+ end
+
+ -- find out for which block types/patterns this unpainted block is the basic one
+ local found = {};
+ for _,k in ipairs( possible_blocks ) do
+
+ local new_block_name = colormachine.translate_color_name( nil, k, dye_name, cdata.c, cdata.s, cdata.g, 1 );
+ table.insert( found, new_block_name );
+ end
+ if( #found < 1 ) then
+ return;
+ end
+ return { possible=found, old_dye = old_dye };
+end
+
+
+colormachine.check_owner = function( pos, player )
+ -- only the owner can put something in
+ local meta = minetest.env:get_meta(pos);
+
+ if( meta:get_string('owner') ~= player:get_player_name() ) then
+ minetest.chat_send_player( player:get_player_name(),
+ "This spray booth belongs to "..tostring( meta:get_string("owner"))..
+ ". If you want to use one, build your own!");
+ return 0;
+ end
+ return 1;
+end
+
+
+colormachine.allow_inventory_access = function(pos, listname, index, stack, player, mode)
+
+ -- only specific slots accept input or output
+ if( (mode=="put" and listname ~= "input" and listname ~= "refill" and listname ~= "dyes" )
+ or (mode=="take" and listname ~= "input" and listname ~= "refill" and listname ~= "dyes" and listname ~= "output" and listname ~= "paintless" )) then
+
+ if( listname == "extrastore" ) then
+ local parts = string.split(stack:get_name(),":");
+ if( #parts > 1 and (parts[1]=='unifieddyes' or parts[1]=='dye')) then
+ return stack:get_count();
+ end
+ end
+ return 0;
+ end
+
+ local stack_name = stack:get_name();
+ -- the dyes are a bit special - they accept only powder of the correct name
+ if( listname == "dyes"
+ and stack_name ~= ("dye:".. colormachine.colors_and_greys[ index ])
+ and stack_name ~= ("unifieddyes:"..colormachine.colors_and_greys[ index ])
+ and (stack_name ~= "dye:light_grey" or colormachine.colors_and_greys[ index ]~="lightgrey" )
+ and (stack_name ~= "dye:dark_grey" or colormachine.colors_and_greys[ index ]~="darkgrey" )
+ ) then
+
+ minetest.chat_send_player( player:get_player_name(), 'You can only store dye powders of the correct color here.');
+ return 0;
+ end
+
+ if( not( colormachine.check_owner( pos, player ))) then
+ return 0;
+ end
+
+ -- let's check if that type of input is allowed here
+ if( listname == "refill" ) then
+ local str = stack:get_name();
+ for i,v in ipairs( colormachine.basic_dye_sources ) do
+ if( str == v and v ~= "") then
+ return stack:get_count();
+ end
+ end
+ minetest.chat_send_player( player:get_player_name(), 'Please insert dye sources as listed below here (usually plants)!');
+ return 0;
+ end
+
+ return stack:get_count();
+end
+
+
+colormachine.on_metadata_inventory_put = function( pos, listname, index, stack, player )
+
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory();
+
+ -- nothing to do if onnly a dye was inserted
+ if( listname == "dyes" ) then
+ return;
+ end
+
+ -- an unprocessed color pigment was inserted
+ if( listname == "refill" ) then
+ local str = stack:get_name();
+ for i,v in ipairs( colormachine.basic_dye_sources ) do
+ -- we have found the right color!
+ if( str == v ) then
+ local count = stack:get_count();
+
+ -- how much free space do we have in the destination stack?
+ local dye_stack = inv:get_stack( "dyes", i);
+ local free = math.floor(dye_stack:get_free_space()/4);
+ if( free < 1 ) then
+ minetest.chat_send_player( player:get_player_name(), 'Sorry, the storage for that dye is already full.');
+ return 0;
+ end
+ if( count < free ) then
+ free = count;
+ end
+
+ -- consume the inserted material - no more than the input slot can handle
+ inv:remove_item(listname, stack:get_name().." "..tostring( free ));
+
+ color_name = colormachine.colors_and_greys[ i ];
+ -- add four times that much to the storage
+ if( i==4 or i==6 or i==8 or i==12 or i==14 ) then
+
+ if( colormachine.data[ 'unifieddyes_' ].installed == 0 ) then
+ minetest.chat_send_player( player:get_player_name(), 'Sorry, this color requires unifieddyes (which is not installed).');
+ return 0;
+ end
+ inv:set_stack( "dyes", i, ("unifieddyes:"..color_name).." "..tostring( free*4 + dye_stack:get_count()) );
+ else
+ inv:set_stack( "dyes", i, ("dye:" ..color_name).." "..tostring( free*4 + dye_stack:get_count()) );
+ end
+ end
+ end
+ minetest.chat_send_player( player:get_player_name(), 'Please insert dye sources as listed below here (usually plants)!');
+ return 0;
+ end
+
+ if( listname == "input" ) then
+ -- update the main menu accordingly
+ meta:set_string( 'formspec', colormachine.main_menu_formspec( pos, "analyze" ));
+ return;
+ end
+end
+
+
+colormachine.on_metadata_inventory_take = function( pos, listname, index, stack, player )
+
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory();
+
+
+ if( listname == "output" ) then
+
+ -- in creative mode, no pigments are consumed
+ if( minetest.setting_getbool("creative_mode") ) then
+ -- update the main menu
+ meta:set_string( 'formspec', colormachine.main_menu_formspec( pos, "analyze" ));
+ return;
+ end
+
+ -- consume color for painted blocks
+ local str = meta:get_string( 'p_values' );
+ local p = 1; -- color more than one block with one pigment
+ if( str and str ~= "" ) then
+ local p_values = minetest.deserialize( str );
+ if( index and p_values[ index ] ) then
+ p = p_values[ index ];
+ end
+ end
+
+ local amount_needed = math.ceil( stack:get_count() / p );
+ local amount_done = colormachine.calc_dyes_needed( meta, inv, amount_needed, 1 );
+--print( ' NEEDED: '..tostring( amount_needed )..' DONE: '..tostring( amount_done )); -- TODO
+ if( amount_done > amount_needed ) then
+-- TODO: leftover color - how to handle?
+ end
+
+ -- calculate how much was taken
+ local anz_taken = stack:get_count();
+ local anz_present = inv:get_stack("input",1):get_count();
+ anz_present = anz_present - anz_taken;
+ if( anz_present <= 0 ) then
+ inv:set_stack( "input", 1, "" ); -- everything used up
+ else
+ inv:set_stack( "input", 1, inv:get_stack("input",1):get_name().." "..tostring( anz_present ));
+ end
+
+ -- the main menu needs to be updated as well
+ meta:set_string( 'formspec', colormachine.main_menu_formspec( pos, "analyze" ));
+ return;
+ end
+
+
+ if( listname == "input" ) then
+ -- update the main menu accordingly
+ meta:set_string( 'formspec', colormachine.main_menu_formspec( pos, "analyze" ));
+ return;
+ end
+end
+
+
+-- calculate which dyes are needed
+colormachine.calc_dyes_needed = function( meta, inv, amount_needed, do_consume )
+
+ local form = "";
+
+ -- display the name of the currently selected color
+ form = form.."label[8,0.2;"..( meta:get_string( "selected_name" ) or "?" ).."]";
+
+ local s = tonumber(meta:get_string('selected_shade' ));
+ local g = tonumber(meta:get_string('selected_grey_shade' ));
+ local c = tonumber(meta:get_string('selected_color' ));
+
+
+ local needed = {};
+ -- we are dealing with a grey value
+ if( g > -1 ) then
+ needed[ colormachine.grey_names[ g ]] = 1;
+
+ -- we are dealing with a normal color
+ else
+ -- one pigment of the selected color (to get started)
+ needed[ colormachine.colors[ c ]] = 1;
+ -- handle saturation
+ if( s==1 ) then needed[ "white" ]=1; -- light
+-- elseif( s==3 ) then -- normal color - no changes needed
+ elseif( s==4 ) then needed[ "white" ]=2; needed[ "black" ] =1; -- normal, low saturation
+ elseif( s==5 ) then needed[ "black" ] =1; -- medium dark
+ elseif( s==6 ) then needed[ "white" ]=1; needed[ "black" ] =1; -- medium dark, low saturation
+ elseif( s==7 ) then needed[ "black" ] =2; -- dark
+ elseif( s==8 ) then needed[ "white" ]=1; needed[ "black" ] =2; -- dark, low saturation
+ end
+ end
+
+ local anz_pigments = 0;
+ for i,v in pairs( needed ) do
+ anz_pigments = anz_pigments + v;
+ end
+
+
+ -- n: portions of *mixtures* needed
+ local n = 1;
+ -- if the colors are to be consumed, we need to calculate how many we actually need
+ -- (one mixutre consists of anz_pigments pigments each)
+ if( amount_needed > 0) then
+ n = math.ceil( amount_needed / anz_pigments );
+
+ local min_found = 10000; -- high number that cannot be reached
+ -- now we need to check how many pigments of each color we have
+ for i,v in ipairs( colormachine.colors_and_greys ) do
+
+ if( needed[ v ] and needed[ v ]> 0 ) then
+
+ -- find out how many blocks of this type we can actually color
+ local stack = inv:get_stack( "dyes", i );
+ local found = math.floor( stack:get_count() / needed[ v ]);
+ if( found < min_found ) then
+ min_found = found; -- save the new minimum
+ end
+ end
+ end
+
+ -- we do not have enough pigments
+ if( min_found < n ) then
+ n = min_found;
+ end
+ end
+
+ local need_white = math.ceil( amount_needed / anz_pigments );
+ -- the machine does have the required colors stored
+ if( n > 0 ) then
+ local stack_white= inv:get_stack( "dyes", 13 );
+ local anz_white = stack_white:get_count();
+
+ n = math.min( anz_white, need_white );
+ end
+
+
+ -- return how many *could* be colored
+ if( amount_needed > 0 and do_consume ~= 1 ) then
+ return n*anz_pigments;
+ end
+
+ needed = {};
+ needed[ "white" ] = n;
+
+ for i,v in ipairs( colormachine.colors_and_greys ) do
+
+ if( needed[ v ] and needed[ v ]> 0 ) then
+
+ -- show how many pigments of this color are needed for the selected mixture
+ -- normal color
+ if( i <= #colormachine.colors ) then
+ form = form.."label["..tostring(i+0.2)..",2.2;" ..needed[ v ].."x]"..
+ "label["..tostring(i+0.2)..",0.6;" ..needed[ v ].."x]";
+ -- grey value
+ else
+ form = form.."label[11.3,"..tostring(i-#colormachine.colors+4.2)..";"..needed[ v ].."x]"..
+ "label[13.3,"..tostring(i-#colormachine.colors+4.2)..";"..needed[ v ].."x]";
+ end
+
+ -- actually consume the color pigment
+ if( amount_needed > 0 and n > 0 ) then
+ local stack = inv:get_stack( "dyes", i );
+ local found = stack:get_count();
+ --print( ' CONSUMED '..math.floor( n * needed[ v ] )..' of '..tostring( stack:get_name()));
+ if( found > math.floor( n * needed[ v ] )) then
+ inv:set_stack( "dyes", i, stack:get_name()..' '..tostring( math.max( 1, found - math.floor( n * needed[ v ] ))));
+ else
+ inv:set_stack( "dyes", i, "" );
+ end
+ end
+ end
+ end
+
+
+ -- in case pigments where consumed, return how many blocks where colored successfully
+ if( amount_needed > 0 and n > 0 ) then
+--print('Successfully colored: '..tostring( n*anz_pigments ));
+ return n*anz_pigments;
+ end
+
+ -- else return the formspec addition with the information how many of which pigment is needed
+ return form;
+end
+
+
+-- this adds the name of the current color and the amount of needed dyes to the formspec
+colormachine.get_individual_dye_management_formspec = function( meta, inv )
+
+ local form = colormachine.dye_management_formspec;
+
+ -- just add information how many pigments of each color are needed
+ form = form .. colormachine.calc_dyes_needed( meta, inv, 0, 0 )
+ return form;
+end
+
+
+-- mix two colors
+colormachine.mix_colors = function( inv, i, sender )
+
+ local farbe = colormachine.colors_and_greys[ i ];
+ local mix = colormachine.dye_mixes[ farbe ];
+ -- in case the color cannot be mixed
+ if( not( mix ) or #mix < 2 ) then
+ return;
+ end
+
+ local stack1 = inv:get_stack( "dyes", mix[1] );
+ local stack2 = inv:get_stack( "dyes", mix[2] );
+ local stack3 = inv:get_stack( "dyes", i );
+
+
+ if( stack3:get_free_space() > 1 -- we need space for two
+ and stack1:get_count() > 0
+ and stack2:get_count() > 0 ) then
+
+ inv:set_stack( "dyes", mix[1], stack1:get_name()..' '..( stack1:get_count()-1));
+ inv:set_stack( "dyes", mix[2], stack2:get_name()..' '..( stack2:get_count()-1));
+
+ -- handle light/dark grey
+ if( farbe=='lightgrey' ) then
+ farbe = 'light_grey';
+ elseif( farbe=='darkgrey' ) then
+ farbe = 'dark_grey';
+ end
+
+ -- dye or unifieddyes?
+ local name = 'dye:'..farbe;
+ if( not( minetest.registered_craftitems[ name ])) then
+ name = 'unifieddyes:'..farbe;
+ end
+
+ -- print errormessage or add the mixed dye pigment
+ if( not( minetest.registered_craftitems[ name ])) then
+ minetest.chat_send_player( sender:get_player_name(), '[colormachine] ERROR: color '..tostring( farbe )..' could not be mixed (craftitem '..tostring(name)..' not found)');
+ else
+ inv:set_stack( "dyes", i, name..' '..( stack3:get_count() + 2 )); -- two pigments mixed -> we get two pigments result
+ end
+
+ elseif( stack3:get_free_space() > 1 ) then
+ minetest.chat_send_player( sender:get_player_name(), 'Need '..colormachine.colors_and_greys[ mix[1] ]..' and '..
+ colormachine.colors_and_greys[ mix[2] ]..' in order to mix '..farbe..'.');
+ end
+end
+
+
+-- this generates the formspec for all supported mods and the general colormachine.dye_management_formspec
+colormachine.init = function()
+ local liste = {};
+ -- create formspecs for all machines
+ for k,v in pairs( colormachine.data ) do
+
+ if( minetest.get_modpath( colormachine.data[ k ].modname ) ~= nil ) then
+
+ -- generate the formspec for that machine
+ colormachine.data[ k ].formspec = colormachine.generate_form( k );
+ -- remember that the mod is installed
+ colormachine.data[ k ].installed = 1;
+ -- this is helpful for getting an ordered list later
+-- liste[ colormachine.data[ k ].nr ] = k;
+ table.insert( liste, k );
+ else
+ -- the mod is not installed
+ colormachine.data[ k ].installed = 0;
+ end
+ end
+
+ table.sort( liste, function(a,b) return colormachine.data[a].nr < colormachine.data[b].nr end);
+ colormachine.ordered = liste;
+
+ -- if no flowers are present, take dye sources from default (so we only have to depend on dyes)
+ if( minetest.get_modpath( "flowers") == nil ) then
+ for i,v in ipairs( colormachine.alternate_basic_dye_sources ) do
+ colormachine.basic_dye_sources[ i ] = colormachine.alternate_basic_dye_sources[ i ];
+ end
+ end
+
+ local form = "size[14,10]"..
+ "list[current_player;main;1,5;8,4;]"..
+ "label[1,0.2;"..minetest.formspec_escape('Insert dye sources here -->').."]"..
+ "list[current_name;refill;4,0;1,1;]"..
+ "label[6,0.2;Selected color:]"..
+ "label[0.1,1;sources:]"..
+ "label[0.1,2;dyes:]"..
+ "label[0.1,3;storage:]"..
+ "button[1,4;4,1;main_menu;Back to main menu]"..
+ "button[5,4;4,1;blocktype_menu;Show supported blocks]"..
+ "list[current_name;dyes;1,3;"..tostring(#colormachine.colors)..",1;]".. -- normal colors
+
+ -- remaining fields of the dyes inventory: grey colors, arranged vertically
+ -- (not enough space for the "dyes" label)
+ "label[0.1,0.6;need:]"..
+ "label[9.3,4.5;need:]"..
+ "label[10,4.5;sources:]"..
+ "label[12,4.5;storage:]"..
+ "list[current_name;dyes;12,5;1,"..tostring(#colormachine.grey_names)..";"..tostring(#colormachine.colors).."]";
+
+ local needed = {};
+
+ -- align colors horizontal
+ for i,k in ipairs( colormachine.colors ) do
+
+ local prefix = 'dye:';
+ if( i==4 or i==6 or i==8 or i==12 or i==14 ) then
+ if( colormachine.data[ 'unifieddyes_' ].installed == 1 ) then
+ prefix = 'unifieddyes:';
+ else
+ prefix = "";
+ end
+ end
+
+ if( prefix ~= "" ) then
+
+ local source = colormachine.basic_dye_sources[ i ];
+ if( source ~= "" ) then
+ form = form.."item_image["..tostring(i)..",1;1,1;"..source.."]";
+
+ -- even those colors may be additionally mixed
+ if( #colormachine.dye_mixes[ colormachine.colors_and_greys[ i ] ] == 2 ) then
+ form = form.. "button["..tostring(i-0.1)..",1.9;0.8,0.2;mix_"..colormachine.colors_and_greys[ i ]..";mix]";
+ end
+
+ -- a color that can be mixed
+ elseif( #colormachine.dye_mixes[ colormachine.colors_and_greys[ i ] ] == 2 ) then
+
+ local mixes = colormachine.dye_mixes[ colormachine.colors_and_greys[ i ] ];
+
+ local source1 = 'dye:'..colormachine.colors_and_greys[ mixes[1] ];
+ local source2 = 'dye:'..colormachine.colors_and_greys[ mixes[2] ];
+
+ form = form.."item_image["..tostring(i )..",1.0;1,1;"..source1.."]"..
+ "item_image["..tostring(i+0.3)..",1.3;1,1;"..source2.."]"..
+ "button["..tostring(i-0.1)..",1.9;0.8,0.2;mix_"..colormachine.colors_and_greys[ i ]..";mix]";
+ end
+
+ form = form.. "item_image["..tostring(i)..",2;1,1;"..tostring( prefix..colormachine.colors[ i ] ).."]"..
+ "label["..tostring(i)..",3.6;" ..tostring( colormachine.colors_and_greys[ i ] ).."]";
+ else
+ form = form.."label["..tostring(i+0.2)..",3;n/a]";
+ end
+ end
+
+ -- align grey-values vertical
+ for i,k in ipairs( colormachine.grey_names ) do
+
+ if( i ~= 2 or colormachine.data[ 'unifieddyes_' ].installed == 1 ) then
+
+ local source = colormachine.basic_dye_sources[ #colormachine.colors + i ];
+ if( source and source ~= "" ) then
+ form = form.."item_image[10,"..tostring(i+4)..";1,1;"..source.."]";
+
+ elseif( #colormachine.dye_mixes[ colormachine.colors_and_greys[ #colormachine.colors + i ] ] == 2 ) then
+
+ local mixes = colormachine.dye_mixes[ colormachine.colors_and_greys[ #colormachine.colors + i ] ];
+
+ local source1 = 'dye:'..colormachine.colors_and_greys[ mixes[1] ];
+ local source2 = 'dye:'..colormachine.colors_and_greys[ mixes[2] ];
+
+ form = form.."item_image[10.0,"..tostring(i+4.0)..";1,1;"..source1.."]"..
+ "item_image[10.3,"..tostring(i+4.3)..";1,1;"..source2.."]"..
+ "button[9.8," ..tostring(i+4.9)..";0.8,0.2;mix_"..colormachine.colors_and_greys[ #colormachine.colors + i ]..";mix]";
+ end
+
+ local dye_name = 'dye:'..k;
+
+ -- lightgrey exists only in unifieddyes
+ if( i== 2 ) then
+ if( colormachine.data[ 'unifieddyes_' ].installed == 1 ) then
+ dye_name = 'unifieddyes:lightgrey_paint'; --'unifieddyes:'..k;
+ else
+ dye_name = '';
+ end
+
+ -- darkgrey is called slightly diffrent
+ elseif( i==4 ) then
+ dye_name = 'dye:dark_grey';
+ end
+
+ if( dye_name ~= "" ) then
+ form = form.. "item_image[11,"..tostring(i+4)..";1,1;"..tostring( dye_name ).."]"..
+ "label[ 12.9,"..tostring(i+4)..";" ..tostring( colormachine.colors_and_greys[ #colormachine.colors + i ] ).."]";
+ end
+ else
+ form = form.."label[12.2,"..tostring(i+4)..";n/a]";
+ end
+ end
+
+
+ colormachine.dye_management_formspec = form;
+
+end
+
+
+
+-- delay initialization so that modules are hopefully loaded
+minetest.after( 0, colormachine.init );
+
+
+-- flowers: 6 basic colors + black + white
+-- unifieddyes: dye pulver
+-- coloredwood: wood, fence - skip sticks!
+-- unifiedbricks: clay blocks, brick blocks (skip individual clay lumps and bricks!)
+-- multicolor: 3 shades, usual amount of colors
+-- cotton: (by jordach) probably the same as coloredwood
+--
+-- stained_glass: 9 shades/intensities
+
+
+minetest.register_node("colormachine:colormachine", {
+ description = "spray booth",
+
+ tiles = {
+ "colormachine_top.png",
+ "colormachine_bottom.png",
+ "colormachine_side.png",
+ "colormachine_side.png",
+ "colormachine_side.png",
+ "colormachine_front.png",
+ },
+
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ legacy_facedir_simple = true,
+
+ on_construct = function(pos)
+
+ local meta = minetest.env:get_meta(pos);
+
+ meta:set_string('selected_shade', 3 ); -- grey-shade
+ meta:set_string('selected_grey_shade', 1 );
+ meta:set_string('selected_color', -1 ); -- we selected grey
+ meta:set_string('selected_name', 'white' );
+
+ meta:set_string('owner', '' ); -- protect input from getting stolen
+
+ local inv = meta:get_inventory();
+ inv:set_size("input", 1); -- input slot for blocks that are to be painted
+ inv:set_size("refill", 1); -- input slot for plants and other sources of dye pigments
+ inv:set_size("output", 14); -- output slot for painted blocks - up to 8 alternate coloring schems supported (blox has 8 for stone!)
+ inv:set_size("paintless", 1); -- output slot for blocks with paint scratched off
+ inv:set_size("dyes", 18); -- internal storage for the dye powders
+ inv:set_size("extrastore",5*9); -- additional storage for dyes
+
+ --meta:set_string( 'formspec', colormachine.blocktype_menu( meta, 'white' ));
+ meta:set_string( 'formspec', colormachine.main_menu_formspec(pos, "analyze") );
+ end,
+
+ after_place_node = function(pos, placer)
+ local meta = minetest.env:get_meta(pos);
+
+ meta:set_string( "owner", ( placer:get_player_name() or "" ));
+ meta:set_string( "infotext", "Spray booth (owned by "..( meta:get_string( "owner" ) or "" )..")");
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+
+ if( not( colormachine.check_owner( pos, sender ))) then
+ return 0;
+ end
+
+ -- remember the page we where at
+ if( not( fields.page )) then
+ fields.page = 0;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ for k,v in pairs( fields ) do
+ if( k == 'main_menu' ) then
+ meta:set_string( 'formspec', colormachine.main_menu_formspec(pos, "analyze") );
+ return;
+ elseif( k == 'remove_paint' ) then
+ meta:set_string( 'formspec', colormachine.main_menu_formspec(pos, "remove_paint") );
+ return;
+ elseif( k == 'adapt_color' ) then
+ meta:set_string( 'formspec', colormachine.main_menu_formspec(pos, "adapt_color") );
+ return;
+
+ elseif( k == 'turn_into_dye' ) then
+ local inv = meta:get_inventory();
+
+ local stack = inv:get_stack( 'input', 1 );
+ -- move into refill slot
+ inv:set_stack( 'refill', 1, stack );
+ -- empty input slot
+ inv:set_stack( 'input', 1, '' );
+ -- process the dye
+ colormachine.on_metadata_inventory_put( pos, 'refill', 1, stack, sender )
+ -- call dye management forpsec to show result
+ meta:set_string( 'formspec', colormachine.get_individual_dye_management_formspec( meta, inv ));
+ return;
+
+ elseif( k == 'dye_management' ) then
+ local inv = meta:get_inventory();
+
+ meta:set_string( 'formspec', colormachine.get_individual_dye_management_formspec( meta, inv ));
+ return;
+ elseif( colormachine.data[ k ] ) then
+ -- remember the page we where at
+ meta:set_string( 'formspec', colormachine.data[ k ].formspec..
+ "field[20,20;0.1,0.1;page;;"..tostring(fields.page).."]" );
+ return;
+ elseif( k=='key_escape') then
+ -- nothing to do
+ else
+ local inv = meta:get_inventory();
+
+ -- perhaps we ought to mix colors
+ for i,f in ipairs( colormachine.colors_and_greys ) do
+ if( k==("mix_"..f )) then
+ colormachine.mix_colors( inv, i, sender );
+
+ local inv = meta:get_inventory();
+ meta:set_string( 'formspec', colormachine.get_individual_dye_management_formspec( meta, inv ));
+
+ return; -- formspec remains the dye-management one
+ end
+ end
+
+ -- if no input is present, show the block selection menu
+ if( k=="blocktype_menu" or inv:is_empty( "input" )
+ or k=='first_page' or k=='prev_page' or k=='next_page' or k=='last_page') then
+ if( not( fields.page ) or k=='first_page') then
+ fields.page = 0;
+ elseif( k=='prev_page') then
+ fields.page = math.max(0,fields.page-1);
+ elseif( k=='next_page') then
+ fields.page = math.min(fields.page+1, math.ceil(#colormachine.ordered/(3*13)-1));
+ elseif( k=='last_page') then
+ fields.page = math.ceil(#colormachine.ordered/(3*13)-1);
+ end
+
+ meta:set_string( 'formspec', colormachine.blocktype_menu( meta, k, fields.page ));
+
+ else
+
+ -- else set the selected color and go back to the main menu
+ colormachine.decode_color_name( meta, k );
+ meta:set_string( 'formspec', colormachine.main_menu_formspec(pos, "analyze")..
+ "field[20,20;0.1,0.1;page;;"..tostring(fields.page).."]" );
+ end
+ end
+ end
+ end,
+
+ -- there is no point in moving inventory around
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ return 0;
+ end,
+
+
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ return colormachine.allow_inventory_access(pos, listname, index, stack, player, "put" );
+ end,
+
+
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ return colormachine.allow_inventory_access(pos, listname, index, stack, player, "take" );
+ end,
+
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ return colormachine.on_metadata_inventory_put( pos, listname, index, stack, player );
+ end,
+
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ return colormachine.on_metadata_inventory_take( pos, listname, index, stack, player );
+ end,
+
+ can_dig = function(pos,player)
+
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory()
+
+ if( not( colormachine.check_owner( pos, player ))) then
+ return 0;
+ end
+
+ if( not( inv:is_empty("input"))
+ or not( inv:is_empty("refill"))) then
+ minetest.chat_send_player( player:get_player_name(), "Please remove the material in the input- and/or refill slot first!");
+ meta:set_string( 'formspec', colormachine.blocktype_menu( meta, meta:get_string('selected_name'), 0));
+ return false;
+ end
+ if( not( inv:is_empty("dyes"))) then
+ minetest.chat_send_player( player:get_player_name(), "Please remove the stored dyes first!");
+ meta:set_string( 'formspec', colormachine.blocktype_menu( meta, meta:get_string('selected_name'), 0 ));
+ return false;
+ end
+
+ return true
+ end
+})
+
+minetest.register_craft({
+ output = 'colormachine:colormachine',
+ recipe = {
+ { 'default:gold_ingot', 'default:glass', 'default:gold_ingot', },
+ { 'default:mese', 'default:glass', 'default:mese' },
+ { 'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot' }
+ }
+})
+
+dofile( minetest.get_modpath('colormachine')..'/paint_roller.lua');
diff --git a/colormachine/paint_roller.lua b/colormachine/paint_roller.lua
new file mode 100644
index 0000000..4214e65
--- /dev/null
+++ b/colormachine/paint_roller.lua
@@ -0,0 +1,62 @@
+-- This is based upon the paint_roller mod by Krock.
+
+minetest.register_tool("colormachine:paint_roller", {
+ description = "Paint roller",
+ inventory_image = "paint_roller.png",
+ on_use = function(itemstack, placer, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return
+ end
+ local idx = placer:get_wield_index() + 1
+ if idx > 7 then --copied from explorer tools moo-ha-ha
+ return
+ end
+ if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then
+ minetest.record_protection_violation(pointed_thing.under, placer:get_player_name())
+ return
+ end
+ local node = minetest.get_node(pointed_thing.under);
+ local node_name = node.name
+
+ local inv = placer:get_inventory()
+ local stack = inv:get_stack("main", idx) --dye
+ local stack_name = stack:get_name()
+
+ local res = colormachine.get_node_name_painted( node_name, stack_name );
+
+ if( not( res) or not( res.possible ) or #res.possible < 1 or (#res.possible==1 and res.possible[1]==node_name)) then
+ return;
+ end
+ local index = 1;
+ for i,v in ipairs( res.possible ) do
+ if( v==node_name and i < #res.possible and #res.possible[i+1]) then
+ index = i+1;
+ end
+ end
+
+ -- return the old dye
+ if( res.old_dye and res.old_dye ~= stack_name ) then
+ inv:add_item( 'main', res.old_dye..' 1' );
+ end
+
+ -- consume one dye
+ if( stack_name and stack_name ~= '' and (not(res.old_dye) or res.old_dye~=stack_name)) then
+ inv:remove_item( 'main', stack_name..' 1');
+ end
+
+ -- paint the node
+ minetest.set_node(pointed_thing.under, {name=res.possible[ index ], param2=node.param2})
+
+ --itemstack:add_wear( 65535 / 30 );
+ return itemstack
+ end
+})
+
+minetest.register_craft({
+ output = "colormachine:paint_roller",
+ recipe = {
+ {"wool:white", "wool:white", "default:steel_ingot"},
+ {"", "default:steel_ingot", ""},
+ {"", "default:steel_ingot", ""},
+ }
+})
diff --git a/colormachine/textures/colormachine_bottom.png b/colormachine/textures/colormachine_bottom.png
new file mode 100644
index 0000000..7c429f9
--- /dev/null
+++ b/colormachine/textures/colormachine_bottom.png
Binary files differ
diff --git a/colormachine/textures/colormachine_front.png b/colormachine/textures/colormachine_front.png
new file mode 100644
index 0000000..7a4dadb
--- /dev/null
+++ b/colormachine/textures/colormachine_front.png
Binary files differ
diff --git a/colormachine/textures/colormachine_front_active.png b/colormachine/textures/colormachine_front_active.png
new file mode 100644
index 0000000..745095a
--- /dev/null
+++ b/colormachine/textures/colormachine_front_active.png
Binary files differ
diff --git a/colormachine/textures/colormachine_side.png b/colormachine/textures/colormachine_side.png
new file mode 100644
index 0000000..cdcc981
--- /dev/null
+++ b/colormachine/textures/colormachine_side.png
Binary files differ
diff --git a/colormachine/textures/colormachine_top.png b/colormachine/textures/colormachine_top.png
new file mode 100644
index 0000000..3de0266
--- /dev/null
+++ b/colormachine/textures/colormachine_top.png
Binary files differ
diff --git a/colormachine/textures/colormachine_top_active.png b/colormachine/textures/colormachine_top_active.png
new file mode 100644
index 0000000..8eded03
--- /dev/null
+++ b/colormachine/textures/colormachine_top_active.png
Binary files differ
diff --git a/colormachine/textures/paint_roller.png b/colormachine/textures/paint_roller.png
new file mode 100644
index 0000000..45b9b28
--- /dev/null
+++ b/colormachine/textures/paint_roller.png
Binary files differ
diff --git a/cottages/LICENSE b/cottages/LICENSE
new file mode 100644
index 0000000..733c072
--- /dev/null
+++ b/cottages/LICENSE
@@ -0,0 +1,675 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {one line to give the program's name and a brief idea of what it does.}
+ Copyright (C) {year} {name of author}
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ {project} Copyright (C) {year} {fullname}
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/cottages/README.md b/cottages/README.md
new file mode 100644
index 0000000..c3ecb2d
--- /dev/null
+++ b/cottages/README.md
@@ -0,0 +1,90 @@
+Contains nodes for building medieval houses.
+
+This used to be part of my random_buildings modpack, found under
+ https://github.com/Sokomine/random_buildings
+It is now its own mod as all other mods in the modpack have been
+superseded by newer versions.
+
+For more information about this mod, please refer to
+ https://forum.minetest.net/viewtopic.php?id=5120
+The thread introduces the nodes, shows crafting receipes and provides a place
+to discuss about the mod.
+
+Special functions:
+* Window shutters use an abm to automaticly close at night and open at day.
+* The treshing place can be used to seperate harvested wheat into wheat seeds
+ and straw. The straw is useful for roofing purposes, straw bales etc.
+* The handmill turns wheat seeds into flour.
+* With anvil and hammer, tools can be repaired.
+* The barrels do not yet have any further functionality. They may be used for
+ brewing in the future. Until then, punching makes them rotate and switch from
+ standing to lying on the ground.
+
+Liscence of this mod: GPLv3
+Autor: Sokomine
+
+---
+--- Textures and media:
+---
+VanessaE (CC-by-SA 3.0):
+ cottages_waonwheel.png
+ cottages_homedecor_shingles_asphalt.png
+ cottages_homedecor_shingles_terracotta.png
+ cottages_homedecor_shingles_wood.png
+ cottages_sleepingmat.png
+ cottages_barrel.png
+
+CC-by-SA; done by GloopMaster (CC-by-SA):
+ glooptest_tool_steelhammer.png
+
+badger436 (created for this mod; CC BY-SA 3.0):
+ cottages_feldweg.png
+
+Some textures are taken from
+ https://github.com/minetest/minetest_game
+and renamed (default_NAME.png -> cottages_NAME.png)
+
+Cisoun's WTFPL texture pack:
+ cottages_stone.png (for anvil and handmill)
+ cottages_wool.png
+
+Zeg9 (CC BY-SA 3.0):
+ cottages_steel_block.png (for steel hatch and stovepipie)
+
+MasterGollum (WTFPL, darkage mod):
+ cottages_darkage_straw_bale.png
+ cottages_darkage_straw.png
+ cottages_reet.png (straw texture changed in color)
+
+Sokomine (CC-by-SA 3.0):
+ cottages_glass_pane.png (modification of default_glass.png)
+ cottages_loam.png (part of a real loam wall)
+
+Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
+Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
+http://creativecommons.org/licenses/by-sa/3.0/
+ cottages_clay.png (washing place, stairs and slab)
+From the supplied minimal game:
+ cottages_minimal_wood.png
+
+PilzAdam (WTFPL; default and beds mod):
+ cottages_junglewood.png
+ cottages_beds_bed_side.png
+ cottages_beds_bed_side_top_l.png
+ cottages_beds_bed_side_top_r.png
+ cottages_beds_bed_top_bottom.png
+ cottages_beds_bed_top_top.png
+
+Derived from Universal schema.jpg by Stefanie Lindener, which can be found here: http://de.wikipedia.org/w/index.php?title=Datei:Universal_schema.jpg&filetimestamp=20060510110309& The texture is CC-by-sa 2.0/de.
+ cottages_slate.png
+
+Textures not provided but used (need to be supplied by a default mod):
+ default_wood.png
+ default_tree.png
+ default_dirt.png
+ default_grass_side.png
+ default_chest_top.png
+ default_chest_side.png
+ default_chest_front.png
+ default_stick.png
+ farming_wheat.png
diff --git a/cottages/adaptions.lua b/cottages/adaptions.lua
new file mode 100644
index 0000000..24782cd
--- /dev/null
+++ b/cottages/adaptions.lua
@@ -0,0 +1,104 @@
+-- some games may not have the default nodes;
+-- change this so that craft receipes work!
+
+-- used for: anvil, hammer, barrel, steel hatch, stove pipe, wagon wheel, handmill.
+cottages.craftitem_steel = "default:steel_ingot";
+-- used for: hammer, wood+steel hatch, fence gate, bed, table, bench, shelf,
+-- washing place, wagon wheel, glass pane, flat wood, handmill,
+-- operating the treshing floor.
+cottages.craftitem_stick = "group:stick";
+-- used for: treshing floor, handmill, slate roof, vertical slate
+cottages.craftitem_stone = "default:stone";
+-- used for: window shutter, half door, half door inverted, fence gate,
+-- bed, bench, shelf, roof connector, vertical slate
+cottages.craftitem_wood = "group:wood";
+-- used for: half door
+cottages.craftitem_door = "doors:door_wood";
+-- used for: small fence
+cottages.craftitem_fence = "default:fence_wood";
+-- used for: bed (head+foot), wool for tents
+cottages.craftitem_wool = "wool:white";
+-- used for: washing place, loam
+cottages.craftitem_clay = "default:clay";
+-- used for: wagon wheel
+cottages.craftitem_iron = "default:iron_lump";
+-- used for: dirt road, brown roof (if no homedecor is installed)
+cottages.craftitem_dirt = "default:dirt";
+-- used for: loam
+cottages.craftitem_sand = "default:sand";
+-- used for: glass pane
+cottages.craftitem_glass = "default:glass";
+-- used for: reet roof, reet block
+cottages.craftitem_papyrus = "default:papyrus";
+-- used for: black roof (if no homedecor is installed)
+cottages.craftitem_coal_lump = "default:coal_lump";
+-- used for: red roof (if no homedecor is installed)
+cottages.craftitem_clay_brick = "default:clay_brick";
+-- used for: treshing floor
+cottages.craftitem_junglewood = "default:junglewood";
+cottages.craftitem_chest_locked = "default:chest_locked";
+-- used for: hatch, table
+cottages.craftitem_slab_wood = "stairs:slab_wood";
+
+-- texture used for fence gate and bed posts
+cottages.texture_furniture = "default_wood.png";
+-- texture for the side of roof nodes
+cottages.texture_roof_sides = "default_wood.png";
+-- if the default wood node does not exist, use an alternate wood texture
+-- (which is also used for furnitures and doors in this mod)
+if( not( minetest.registered_nodes['default:wood'])) then
+ cottages.texture_roof_sides = "cottages_minimal_wood.png";
+ cottages.texture_furniture = "cottages_minimal_wood.png";
+end
+
+cottages.texture_chest = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"};
+
+-- the treshing floor produces wheat seeds
+cottages.craftitem_seed_wheat = "farming:seed_wheat";
+cottages.texture_wheat_seed = "farming_wheat_seed.png";
+cottages.texture_stick = "default_stick.png";
+
+-- texture for roofs where the tree bark is the main roof texture
+cottages.textures_roof_wood = "default_tree.png";
+if( not( minetest.registered_nodes["default:tree"])) then
+ -- realtest has diffrent barks; the spruce one seems to be the most fitting
+ if( minetest.registered_nodes["trees:spruce_log" ]) then
+ cottages.textures_roof_wood = "trees_spruce_trunk.png";
+
+ -- this is also an indicator that we are dealing with realtest;
+ cottages.craftitem_steel = "metals:pig_iron_ingot";
+ -- stone exists, but is hard to obtain; chiseled stone is more suitable
+ cottages.craftitem_stone = "default:stone_flat";
+ -- there are far more diffrent wood tpyes
+ cottages.craftitem_wood = "group:planks";
+ cottages.craftitem_door = "doors:door_birch";
+ cottages.craftitem_fence = "group:fence";
+ cottages.craftitem_clay = "grounds:clay_lump";
+ cottages.craftitem_iron = "group:plank"; -- iron lumps would be too specific
+ cottages.craftitem_coal_lump = "minerals:charcoal";
+ cottages.craftitem_junglewood = "trees:chestnut_planks";
+ cottages.craftitem_slab_wood = "group:plank";
+
+ cottages.texture_chest = { "spruce_chest_top.png", "spruce_chest_top.png", "spruce_chest_side.png",
+ "spruce_chest_side.png", "spruce_chest_side.png", "spruce_chest_front.png"};
+
+ -- wheat is called spelt in RealTest
+ cottages.craftitem_seed_wheat = 'farming:seed_spelt';
+ cottages.texture_wheat_seed = 'farming_spelt_seed.png';
+ cottages.texture_stick = 'trees_maple_stick.png';
+ else
+ -- does not look so well in this case as it's no bark; but what else shall we do?
+ cottages.textures_roof_wood = "cottages_minimal_wood.png";
+ end
+end
+
+if( minetest.get_modpath("moreblocks")
+ and minetest.registered_nodes[ "moreblocks:slab_wood" ]) then
+ cottages.craftitem_slab_wood = "moreblocks:slab_wood";
+end
+
+if( not( minetest.registered_nodes["wool:white"])) then
+ cottages.craftitem_wool = "cottages:wool";
+end
+
diff --git a/cottages/alias.lua b/cottages/alias.lua
new file mode 100644
index 0000000..8600a92
--- /dev/null
+++ b/cottages/alias.lua
@@ -0,0 +1,40 @@
+
+minetest.register_alias("random_buildings:roof", "cottages:roof_wood");
+minetest.register_alias("random_buildings:roof_connector", "cottages:roof_connector_wood");
+minetest.register_alias("random_buildings:roof_flat", "cottages:roof_flat_wood");
+minetest.register_alias("random_buildings:roof_wood", "cottages:roof_wood");
+minetest.register_alias("random_buildings:roof_connector_wood", "cottages:roof_connector_wood");
+minetest.register_alias("random_buildings:roof_flat_wood", "cottages:roof_flat_wood");
+minetest.register_alias("random_buildings:roof_straw", "cottages:roof_straw");
+minetest.register_alias("random_buildings:roof_connector_straw", "cottages:roof_connector_straw");
+minetest.register_alias("random_buildings:roof_flat_straw", "cottages:roof_flat_straw");
+minetest.register_alias("random_buildings:barrel", "cottages:barrel");
+minetest.register_alias("random_buildings:barrel_open", "cottages:barrel_open");
+minetest.register_alias("random_buildings:barrel_lying", "cottages:barrel_lying");
+minetest.register_alias("random_buildings:barrel_lying_open", "cottages:barrel_lying_open");
+minetest.register_alias("random_buildings:tub", "cottages:tub");
+minetest.register_alias("random_buildings:window_shutter_open", "cottages:window_shutter_open");
+minetest.register_alias("random_buildings:window_shutter_closed", "cottages:window_shutter_closed");
+minetest.register_alias("random_buildings:half_door", "cottages:half_door");
+minetest.register_alias("random_buildings:half_door_inverted", "cottages:half_door_inverted");
+minetest.register_alias("random_buildings:gate_closed", "cottages:gate_closed");
+minetest.register_alias("random_buildings:gate_open", "cottages:gate_open");
+minetest.register_alias("random_buildings:bed_foot", "cottages:bed_foot");
+minetest.register_alias("random_buildings:bed_head", "cottages:bed_head");
+minetest.register_alias("random_buildings:sleeping_mat", "cottages:sleeping_mat");
+minetest.register_alias("random_buildings:loam", "cottages:loam");
+minetest.register_alias("random_buildings:bench", "cottages:bench");
+minetest.register_alias("random_buildings:table", "cottages:table");
+minetest.register_alias("random_buildings:shelf", "cottages:shelf");
+minetest.register_alias("random_buildings:stovepipe", "cottages:stovepipe");
+minetest.register_alias("random_buildings:washing", "cottages:washing");
+minetest.register_alias("random_buildings:wagon_wheel", "cottages:wagon_wheel");
+minetest.register_alias("random_buildings:feldweg", "cottages:feldweg");
+minetest.register_alias("random_buildings:straw_ground", "cottages:straw_ground");
+minetest.register_alias("random_buildings:glass_pane", "cottages:glass_pane");
+minetest.register_alias("random_buildings:straw_mat", "cottages:straw_mat");
+minetest.register_alias("random_buildings:straw_bale", "cottages:straw_bale");
+minetest.register_alias("random_buildings:straw", "cottages:straw");
+minetest.register_alias("random_buildings:chest_private", "cottages:chest_private");
+minetest.register_alias("random_buildings:chest_work", "cottages:chest_work");
+minetest.register_alias("random_buildings:chest_storage", "cottages:chest_storage");
diff --git a/cottages/depends.txt b/cottages/depends.txt
new file mode 100644
index 0000000..e10338b
--- /dev/null
+++ b/cottages/depends.txt
@@ -0,0 +1,8 @@
+default?
+farming
+stairs?
+homedecor?
+intllib?
+trees?
+wool?
+moreblocks?
diff --git a/cottages/init.lua b/cottages/init.lua
new file mode 100644
index 0000000..af0cb16
--- /dev/null
+++ b/cottages/init.lua
@@ -0,0 +1,71 @@
+
+-- Version: 2.2
+-- Autor: Sokomine
+-- License: GPLv3
+--
+-- Modified:
+-- 27.07.15 Moved into its own repository.
+-- Made sure textures and craft receipe indigrents are available or can be replaced.
+-- Took care of "unregistered globals" warnings.
+-- 23.01.14 Added conversion receipes in case of installed castle-mod (has its own anvil)
+-- 23.01.14 Added hammer and anvil as decoration and for repairing tools.
+-- Added hatches (wood and steel).
+-- Changed the texture of the fence/handrail.
+-- 17.01.13 Added alternate receipe for fences in case of interference due to xfences
+-- 14.01.13 Added alternate receipes for roof parts in case homedecor is not installed.
+-- Added receipe for stove pipe, tub and barrel.
+-- Added stairs/slabs for dirt road, loam and clay
+-- Added fence_small, fence_corner and fence_end, which are useful as handrails and fences
+-- If two or more window shutters are placed above each other, they will now all close/open simultaneously.
+-- Added threshing floor.
+-- Added hand-driven mill.
+
+cottages = {}
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+if minetest.get_modpath( "intllib" ) and intllib then
+ cottages.S = intllib.Getter()
+else
+ cottages.S = function(s) return s end
+end
+
+--cottages.config_use_mesh_barrel = false;
+--cottages.config_use_mesh_handmill = true;
+
+-- set alternate crafting materials and textures where needed
+-- (i.e. in combination with realtest)
+dofile(minetest.get_modpath("cottages").."/adaptions.lua");
+
+-- add to this table what you want the handmill to convert;
+-- add a stack size if you want a higher yield
+cottages.handmill_product = {};
+cottages.handmill_product[ cottages.craftitem_seed_wheat ] = 'farming:flour 1';
+--[[ some examples:
+cottages.handmill_product[ 'default:cobble' ] = 'default:gravel';
+cottages.handmill_product[ 'default:gravel' ] = 'default:sand';
+cottages.handmill_product[ 'default:sand' ] = 'default:dirt 2';
+cottages.handmill_product[ 'flowers:rose' ] = 'dye:red 6';
+cottages.handmill_product[ 'default:cactus' ] = 'dye:green 6';
+cottages.handmill_product[ 'default:coal_lump'] = 'dye:black 6';
+--]]
+-- process that many inputs per turn
+cottages.handmill_max_per_turn = 20;
+cottages.handmill_min_per_turn = 0;
+
+
+-- uncomment parts you do not want
+dofile(minetest.get_modpath("cottages").."/nodes_furniture.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_historic.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_straw.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_anvil.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_doorlike.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_fences.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_roof.lua");
+dofile(minetest.get_modpath("cottages").."/nodes_barrel.lua");
+--dofile(minetest.get_modpath("cottages").."/nodes_chests.lua");
+
+-- this is only required and useful if you run versions of the random_buildings mod where the nodes where defined inside that mod
+dofile(minetest.get_modpath("cottages").."/alias.lua");
+
+-- variable no longer needed
+cottages.S = nil;
diff --git a/cottages/locale/de.txt b/cottages/locale/de.txt
new file mode 100644
index 0000000..9677a3b
--- /dev/null
+++ b/cottages/locale/de.txt
@@ -0,0 +1,130 @@
+# Translation by Xanthin
+
+### alias.lua ###
+
+### init.lua ###
+
+### nodes_anvil.lua ###
+Steel hammer for repairing tools on the anvil = Stahlhammer um Werkzeuge auf dem Amboss zu reparieren
+anvil = Amboss
+Anvil = Amboss
+The workpiece slot is for damaged tools only. = Das Werkstueckfeld gilt nur fuer beschaedigtes Werkzeug.
+Your tool has been repaired successfully. = Dein Werkzeug wurde erfolgreich repariert.
+Your workpiece improves. = Dein Werkstueck verbessert sich.
+Anvil (owned by %s) = Amboss (gehoert %s)
+Workpiece: = Werkstueck
+Optional = Moegliche
+storage for = Aufbewahrung fuer
+your hammer = deinen Hammer
+Owner: %s = Besitzer: %s
+Punch anvil with hammer to = Schlage mit dem Hammer auf den Amboss um
+repair tool in workpiece-slot. = das Werkzeug im Werkstueckfeld zu reparieren.
+
+### nodes_barrel.lua ###
+Pour: = Eingiessen
+Fill: = Ausgiessen
+barrel (closed) = Fass (geschlossen)
+barrel (open) = Fass (offen)
+barrel (closed), lying somewhere = Liegendes Fass (geschlossen)
+barrel (opened), lying somewhere = Liegendes Fass (offen)
+tub = Bottich
+
+### nodes_chests.lua ###
+private NPC chest = Private NSC-Truhe
+chest for work utils and kitchens = NSC-Truhe fuer Arbeitsutensilien und Kuechen
+storage chest = NSC-Lagertruhe
+
+### nodes_doorlike.lua ###
+opened window shutters = Offene Fensterlaeden
+closed window shutters = Geschlossene Fensterlaeden
+half door = Kloentuer
+half door inverted = Umgekehrte Kloentuer
+closed fence gate = Geschlossenes Zauntor
+opened fence gate = Offenes Zauntor
+wooden hatch = Holzfalltuer
+metal hatch = Metallfalltuer
+
+### nodes_fences.lua ###
+small fence = Kleiner Zaun
+small fence corner = Kleiner Zaun (Ecke)
+small fence end = Kleiner Zaun (Ende)
+
+### nodes_furniture.lua ###
+Bed (foot region) = Bett (Fussende)
+Bed (head region) = Bett (Kopfende)
+sleeping mat = Schlafmatte
+simple wooden bench = Einfache Holzbank
+table = Tisch
+open storage shelf = Offenes Lagerregal
+open storage shelf (in use) = Offenes Lagerregal (in Gebrauch)
+open storage shelf (empty) = Offenes Lagerregal (leer)
+stovepipe = Ofenrohr
+washing place = Waschplatz
+Sorry. This washing place is out of water. Please place it above water! = Entschuldige, dieser Waschplatz hat kein Wasser mehr. Bitte platziere ihn ueber Wasser!
+You feel much cleaner after some washing. = Nach einer kleinen Waesche fuehlst du dich nun sauberer.
+
+### nodes_historic.lua ###
+wagon wheel = Wagenrad
+dirt road = Feldweg
+loam = Lehm
+Dirt Road Stairs = Feldwegtreppe
+Dirt Road, half height = Feldwegstufe
+Loam Stairs = Lehmtreppe
+Loam Slab = Lehmstufe
+Clay Stairs = Tontreppe
+Clay Slab = Tonstufe
+straw ground for animals = Strohboden fuer Tiere
+simple glass pane = Einfache Fensterscheibe
+
+### nodes_roof.lua ###
+Roof straw = Strohdach
+Roof wood = Holzdach
+Roof black = Schwarzes Dach
+Roof red = Rotes Dach
+Roof brown = Braunes Dach
+Roof reet = Reetdach
+Roof slate = Schieferdach
+Roof connector straw = Strohdachverbinder
+Roof connector wood = Holzdachverbinder
+Roof connector black = Schwarzer Dachverbinder
+Roof connector red = Roter Dachverbinder
+Roof connector brown = Brauner Dachverbinder
+Roof connector reet = Reet-Dachverbinder
+Roof connector slate = Schiefer-Dachverbinder
+Roof (flat) straw = Strohdach (flach)
+Roof (flat) wood = Holzdach (flach)
+Roof (flat) black = Schwarzes Dach (flach)
+Roof (flat) red = Rotes Dach (flach)
+Roof (flat) brown = Braunes Dach (flach)
+Roof (flat) reet = Reetdach (flach)
+Roof (flat) slate = Schieferdach (flach)
+Vertical Slate = Vertikaler Schiefer
+Reet for thatching = Reet
+
+
+### nodes_straw.lua ###
+layer of straw = Strohschicht
+straw bale = Strohballen
+straw = Stroh
+threshing floor = Dreschboden
+Threshing floor = Dreschboden
+Threshing floor (owned by %s) = Dreschboden (gehoert %s)
+Harvested wheat: = Geernteter Weizen
+Straw: = Stroh
+Seeds: = Koerner
+Owner: %s = Besitzer: %s
+Punch threshing floor with a stick = Schlage mit einem Stock auf den Dreschboden
+to get straw and seeds from wheat. = um Stroh und Koerner vom Weizen zu bekommen.
+You have threshed %s wheat (%s are left). = Du hast %s Weizenaehren gedroschen (%s bleiben uebrig).
+You have threshed the last %s wheat. = Du hast die letzten %s Weizenaehren gedroschen.
+mill, powered by punching = Muehle, durch Schlagen antreiben
+Mill, powered by punching = Muehle, durch Schlagen antreiben
+Mill, powered by punching (owned by %s) = Muehle, durch Schlagen antreiben (gehoert %s)
+Wheat seeds: = Weizenkoerner
+Flour: = Mehl
+Mill = Muehle
+Owner: %s = Besitzer: %s
+Punch this hand-driven mill = Schlage auf diese handbetriebene Muehle
+to convert wheat seeds into flour. = um Weizenkoerner in Mehl umzuwandeln.
+You have grinded %s wheat seeds (%s are left). = Du hast %s Weizenkoerner gemahlen (%s bleiben uebrig).
+You have grinded the last %s wheat seeds. = Du hast die letzten %s Weizenkoerner gemahlen.
diff --git a/cottages/locale/template.txt b/cottages/locale/template.txt
new file mode 100644
index 0000000..cbc6990
--- /dev/null
+++ b/cottages/locale/template.txt
@@ -0,0 +1,129 @@
+# Template
+
+### alias.lua ###
+
+### init.lua ###
+
+### nodes_anvil.lua ###
+Steel hammer for repairing tools on the anvil =
+anvil =
+Anvil =
+The workpiece slot is for damaged tools only. =
+Your tool has been repaired successfully. =
+Your workpiece improves. =
+Anvil (owned by %s) =
+Workpiece: =
+Optional =
+storage for =
+your hammer =
+Owner: %s =
+Punch anvil with hammer to =
+repair tool in workpiece-slot. =
+
+### nodes_barrel.lua ###
+Pour: =
+Fill: =
+barrel (closed) =
+barrel (open) =
+barrel (closed), lying somewhere =
+barrel (opened), lying somewhere =
+tub =
+
+### nodes_chests.lua ###
+private NPC chest =
+chest for work utils and kitchens =
+storage chest =
+
+### nodes_doorlike.lua ###
+opened window shutters =
+closed window shutters =
+half door =
+half door inverted =
+closed fence gate =
+opened fence gate =
+wooden hatch =
+metal hatch =
+
+### nodes_fences.lua ###
+small fence =
+small fence corner =
+small fence end =
+
+### nodes_furniture.lua ###
+Bed (foot region) =
+Bed (head region) =
+sleeping mat =
+simple wooden bench =
+table =
+open storage shelf =
+open storage shelf (in use) =
+open storage shelf (empty) =
+stovepipe =
+washing place =
+Sorry. This washing place is out of water. Please place it above water! =
+You feel much cleaner after some washing. =
+
+### nodes_historic.lua ###
+wagon wheel =
+dirt road =
+loam =
+Dirt Road Stairs =
+Dirt Road, half height =
+Loam Stairs =
+Loam Slab =
+Clay Stairs =
+Clay Slab =
+straw ground for animals =
+simple glass pane =
+
+### nodes_roof.lua ###
+Roof straw =
+Roof wood =
+Roof black =
+Roof red =
+Roof brown =
+Roof reet =
+Roof slate =
+Roof connector straw =
+Roof connector wood =
+Roof connector black =
+Roof connector red =
+Roof connector brown =
+Roof connector reet =
+Roof connector slate =
+Roof (flat) straw =
+Roof (flat) wood =
+Roof (flat) black =
+Roof (flat) red =
+Roof (flat) brown =
+Roof (flat) reet =
+Roof (flat) slate =
+Vertical Slate =
+Reet for thatching =
+
+### nodes_straw.lua ###
+layer of straw =
+straw bale =
+straw =
+threshing floor =
+Threshing floor =
+Threshing floor (owned by %s) =
+Harvested wheat: =
+Straw: =
+Seeds: =
+Owner: %s =
+Punch threshing floor with a stick =
+to get straw and seeds from wheat. =
+You have threshed %s wheat (%s are left). =
+You have threshed the last %s wheat. =
+mill, powered by punching =
+Mill, powered by punching =
+Mill, powered by punching (owned by %s) =
+Wheat seeds: =
+Flour: =
+Mill =
+Owner: %s =
+Punch this hand-driven mill =
+to convert wheat seeds into flour. =
+You have grinded %s wheat seeds (%s are left). =
+You have grinded the last %s wheat seeds. =
diff --git a/cottages/models/cottages_barrel.obj b/cottages/models/cottages_barrel.obj
new file mode 100644
index 0000000..41258c3
--- /dev/null
+++ b/cottages/models/cottages_barrel.obj
@@ -0,0 +1,543 @@
+# Blender v2.69 (sub 0) OBJ File: 'barrel.blend'
+# www.blender.org
+o Cylinder
+v 0.092835 -0.500001 -0.466712
+v 0.092835 0.500000 -0.466712
+v 0.264371 -0.500001 -0.395660
+v 0.264371 0.500000 -0.395660
+v 0.395660 -0.500001 -0.264371
+v 0.395660 0.500000 -0.264371
+v 0.466712 -0.500001 -0.092835
+v 0.466712 0.500000 -0.092835
+v 0.466712 -0.500001 0.092835
+v 0.466712 0.500000 0.092835
+v 0.395660 -0.500001 0.264371
+v 0.395660 0.500000 0.264371
+v 0.264371 -0.500001 0.395660
+v 0.264371 0.500000 0.395660
+v 0.092835 -0.500001 0.466712
+v 0.092835 0.500000 0.466712
+v -0.092835 -0.500001 0.466712
+v -0.092835 0.500000 0.466712
+v -0.264371 -0.500001 0.395660
+v -0.264371 0.500000 0.395660
+v -0.395660 -0.500001 0.264371
+v -0.395660 0.500000 0.264371
+v -0.466712 -0.500001 0.092835
+v -0.466712 0.500000 0.092835
+v -0.466712 -0.500001 -0.092835
+v -0.466712 0.500000 -0.092835
+v -0.395660 -0.500001 -0.264371
+v -0.395660 0.500000 -0.264371
+v -0.264371 -0.500001 -0.395660
+v -0.264371 0.500000 -0.395660
+v -0.092835 -0.500001 -0.466713
+v -0.092835 0.500000 -0.466713
+v 0.095930 0.413334 -0.482270
+v 0.273184 -0.413334 -0.408849
+v 0.408849 -0.413334 -0.273184
+v 0.482270 -0.413334 -0.095929
+v 0.482270 -0.413334 0.095930
+v 0.408849 -0.413334 0.273184
+v 0.273184 -0.413334 0.408849
+v 0.095929 -0.413334 0.482270
+v -0.095929 -0.413334 0.482270
+v -0.273184 -0.413334 0.408849
+v -0.408849 -0.413334 0.273184
+v -0.482270 -0.413334 0.095929
+v -0.482270 -0.413334 -0.095930
+v -0.408849 -0.413334 -0.273184
+v -0.273184 -0.413334 -0.408849
+v -0.095929 -0.413334 -0.482270
+v 0.095930 -0.413334 -0.482270
+v 0.273184 0.413334 -0.408849
+v 0.408849 0.413334 -0.273184
+v 0.482270 0.413334 -0.095929
+v 0.482270 0.413334 0.095930
+v 0.408849 0.413334 0.273184
+v 0.273184 0.413334 0.408849
+v 0.095929 0.413334 0.482270
+v -0.095929 0.413334 0.482270
+v -0.273184 0.413334 0.408849
+v -0.408849 0.413334 0.273184
+v -0.482270 0.413334 0.095929
+v -0.482270 0.413334 -0.095930
+v -0.408849 0.413334 -0.273184
+v -0.273184 0.413334 -0.408849
+v -0.095929 0.413334 -0.482270
+v 0.099128 0.114830 -0.498352
+v 0.282294 -0.114831 -0.422482
+v 0.422482 -0.114831 -0.282294
+v 0.498352 -0.114831 -0.099128
+v 0.498352 -0.114831 0.099128
+v 0.422482 -0.114831 0.282294
+v 0.282294 -0.114831 0.422482
+v 0.099128 -0.114831 0.498352
+v -0.099128 -0.114831 0.498352
+v -0.282294 -0.114831 0.422482
+v -0.422482 -0.114831 0.282294
+v -0.498352 -0.114831 0.099128
+v -0.498352 -0.114831 -0.099128
+v -0.422482 -0.114831 -0.282294
+v -0.282293 -0.114831 -0.422482
+v -0.099128 -0.114831 -0.498352
+v 0.099128 -0.114831 -0.498352
+v 0.282294 0.114830 -0.422482
+v 0.422482 0.114830 -0.282294
+v 0.498352 0.114830 -0.099128
+v 0.498352 0.114830 0.099128
+v 0.422482 0.114830 0.282294
+v 0.282294 0.114830 0.422482
+v 0.099128 0.114830 0.498352
+v -0.099128 0.114830 0.498352
+v -0.282294 0.114830 0.422482
+v -0.422482 0.114830 0.282294
+v -0.498352 0.114830 0.099128
+v -0.498352 0.114830 -0.099128
+v -0.422482 0.114830 -0.282294
+v -0.282293 0.114830 -0.422482
+v -0.099128 0.114830 -0.498352
+v 0.083551 -0.500001 -0.420041
+v 0.083551 0.500000 -0.420041
+v 0.237934 -0.500001 -0.356094
+v 0.237934 0.500000 -0.356094
+v 0.356094 -0.500001 -0.237934
+v 0.356094 0.500000 -0.237934
+v 0.420041 -0.500001 -0.083551
+v 0.420041 0.500000 -0.083551
+v 0.420041 -0.500001 0.083551
+v 0.420041 0.500000 0.083551
+v 0.356094 -0.500001 0.237934
+v 0.356094 0.500000 0.237934
+v 0.237934 -0.500001 0.356094
+v 0.237934 0.500000 0.356094
+v 0.083551 -0.500001 0.420041
+v 0.083551 0.500000 0.420041
+v -0.083551 -0.500001 0.420041
+v -0.083551 0.500000 0.420041
+v -0.237934 -0.500001 0.356094
+v -0.237934 0.500000 0.356094
+v -0.356094 -0.500001 0.237934
+v -0.356094 0.500000 0.237934
+v -0.420041 -0.500001 0.083551
+v -0.420041 0.500000 0.083551
+v -0.420041 -0.500001 -0.083551
+v -0.420041 0.500000 -0.083551
+v -0.356094 -0.500001 -0.237934
+v -0.356094 0.500000 -0.237934
+v -0.237934 -0.500001 -0.356094
+v -0.237934 0.500000 -0.356094
+v -0.083551 -0.500001 -0.420041
+v -0.083551 0.500000 -0.420041
+v 0.086337 0.413334 -0.434043
+v 0.245866 -0.413335 -0.367964
+v 0.367964 -0.413335 -0.245866
+v 0.434043 -0.413335 -0.086336
+v 0.434043 -0.413335 0.086337
+v 0.367964 -0.413335 0.245866
+v 0.245866 -0.413335 0.367964
+v 0.086337 -0.413335 0.434043
+v -0.086336 -0.413335 0.434043
+v -0.245866 -0.413335 0.367964
+v -0.367964 -0.413335 0.245866
+v -0.434043 -0.413335 0.086337
+v -0.434043 -0.413335 -0.086337
+v -0.367964 -0.413335 -0.245866
+v -0.245865 -0.413335 -0.367964
+v -0.086336 -0.413335 -0.434043
+v 0.086337 -0.413335 -0.434043
+v 0.245866 0.413334 -0.367964
+v 0.367964 0.413334 -0.245866
+v 0.434043 0.413334 -0.086336
+v 0.434043 0.413334 0.086337
+v 0.367964 0.413334 0.245866
+v 0.245866 0.413334 0.367964
+v 0.086337 0.413334 0.434043
+v -0.086336 0.413334 0.434043
+v -0.245866 0.413334 0.367964
+v -0.367964 0.413334 0.245866
+v -0.434043 0.413334 0.086337
+v -0.434043 0.413334 -0.086337
+v -0.367964 0.413334 -0.245866
+v -0.245865 0.413334 -0.367964
+v -0.086336 0.413334 -0.434043
+v 0.089216 0.114830 -0.448517
+v 0.254064 -0.114831 -0.380234
+v 0.380234 -0.114831 -0.254064
+v 0.448517 -0.114831 -0.089215
+v 0.448517 -0.114831 0.089216
+v 0.380234 -0.114831 0.254064
+v 0.254064 -0.114831 0.380234
+v 0.089216 -0.114831 0.448517
+v -0.089215 -0.114831 0.448517
+v -0.254064 -0.114831 0.380234
+v -0.380234 -0.114831 0.254064
+v -0.448517 -0.114831 0.089216
+v -0.448517 -0.114831 -0.089216
+v -0.380234 -0.114831 -0.254064
+v -0.254064 -0.114831 -0.380234
+v -0.089215 -0.114831 -0.448517
+v 0.089216 -0.114831 -0.448517
+v 0.254064 0.114830 -0.380234
+v 0.380234 0.114830 -0.254064
+v 0.448517 0.114830 -0.089215
+v 0.448517 0.114830 0.089216
+v 0.380234 0.114830 0.254064
+v 0.254064 0.114830 0.380234
+v 0.089216 0.114830 0.448517
+v -0.089215 0.114830 0.448517
+v -0.254064 0.114830 0.380234
+v -0.380234 0.114830 0.254064
+v -0.448517 0.114830 0.089216
+v -0.448517 0.114830 -0.089216
+v -0.380234 0.114830 -0.254064
+v -0.254064 0.114830 -0.380234
+v -0.089215 0.114830 -0.448517
+v 0.087776 -0.352645 -0.441280
+v -0.087776 -0.352645 -0.441280
+v -0.249965 -0.352645 -0.374099
+v -0.374099 -0.352645 -0.249965
+v -0.441280 -0.352645 -0.087776
+v -0.441280 -0.352645 0.087776
+v -0.374099 -0.352645 0.249965
+v -0.249965 -0.352645 0.374099
+v -0.087776 -0.352645 0.441280
+v 0.087776 -0.352645 0.441280
+v 0.249965 -0.352645 0.374099
+v 0.374099 -0.352645 0.249965
+v 0.441280 -0.352645 0.087776
+v 0.441280 -0.352645 -0.087776
+v 0.374099 -0.352645 -0.249965
+v 0.249965 -0.352645 -0.374099
+v 0.000000 -0.352645 0.000000
+v -0.000000 -0.413334 0.000000
+vt 0.211538 0.442308
+vt 0.211538 0.467949
+vt 0.108974 0.467949
+vt 0.108974 0.442308
+vt 0.314103 0.442308
+vt 0.314103 0.467949
+vt 0.416667 0.442308
+vt 0.416667 0.467949
+vt 0.006410 0.467949
+vt 0.006410 0.442308
+vt 0.211792 0.993590
+vt 0.117562 0.954728
+vt 0.262789 0.738327
+vt 0.211538 0.006410
+vt 0.108974 0.006410
+vt 0.108974 0.032051
+vt 0.211538 0.032051
+vt 0.314103 0.006410
+vt 0.314103 0.032051
+vt 0.416667 0.006410
+vt 0.416667 0.032051
+vt 0.006410 0.006410
+vt 0.006410 0.032051
+vt 0.211361 0.993526
+vt 0.117394 0.954505
+vt 0.262040 0.737637
+vt 0.045447 0.882467
+vt 0.006475 0.788381
+vt 0.006410 0.686569
+vt 0.045263 0.592532
+vt 0.117118 0.520586
+vt 0.204627 0.488094
+vt 0.312719 0.481748
+vt 0.406687 0.520769
+vt 0.478633 0.592807
+vt 0.517605 0.686893
+vt 0.517670 0.788705
+vt 0.478816 0.882742
+vt 0.406962 0.954687
+vt 0.313044 0.993590
+vt 0.045441 0.882922
+vt 0.006410 0.789102
+vt 0.006410 0.687551
+vt 0.045442 0.593732
+vt 0.117562 0.521925
+vt 0.211793 0.483064
+vt 0.313787 0.483064
+vt 0.408016 0.521926
+vt 0.480136 0.593732
+vt 0.519168 0.687551
+vt 0.519168 0.789103
+vt 0.480136 0.882922
+vt 0.408016 0.954728
+vt 0.313786 0.993590
+vt 0.416667 0.397436
+vt 0.314103 0.397436
+vt 0.211538 0.397436
+vt 0.108974 0.397436
+vt 0.006410 0.397436
+vt 0.314103 0.185897
+vt 0.314103 0.282051
+vt 0.211538 0.282051
+vt 0.211538 0.185897
+vt 0.108974 0.282051
+vt 0.108974 0.185897
+vt 0.006410 0.282051
+vt 0.006410 0.185897
+vt 0.416667 0.185897
+vt 0.416667 0.282051
+vt 0.416667 0.076923
+vt 0.314103 0.076923
+vt 0.211538 0.076923
+vt 0.108974 0.076923
+vt 0.006410 0.076923
+vt 0.429487 0.397436
+vt 0.532051 0.397436
+vt 0.532051 0.442308
+vt 0.429487 0.442308
+vt 0.634615 0.397436
+vt 0.634615 0.442308
+vt 0.737179 0.397436
+vt 0.737179 0.442308
+vt 0.839744 0.397436
+vt 0.839744 0.442308
+vt 0.532051 0.185897
+vt 0.634615 0.185897
+vt 0.634615 0.282051
+vt 0.532051 0.282051
+vt 0.737179 0.185897
+vt 0.737179 0.282051
+vt 0.839744 0.185897
+vt 0.839744 0.282051
+vt 0.429487 0.185897
+vt 0.429487 0.282051
+vt 0.429487 0.032051
+vt 0.532051 0.032051
+vt 0.532051 0.076923
+vt 0.429487 0.076923
+vt 0.634615 0.032051
+vt 0.634615 0.076923
+vt 0.737179 0.032051
+vt 0.737179 0.076923
+vt 0.839744 0.032051
+vt 0.839744 0.076923
+s off
+f 14/1 110/2 112/3 16/4
+f 12/5 108/6 110/2 14/1
+f 10/7 106/8 108/6 12/5
+f 8/4 104/3 106/9 10/10
+f 6/1 102/2 104/3 8/4
+f 4/5 100/6 102/2 6/1
+f 2/7 98/8 100/6 4/5
+f 32/4 128/3 98/9 2/10
+f 30/1 126/2 128/3 32/4
+f 28/5 124/6 126/2 30/1
+f 26/7 122/8 124/6 28/5
+f 24/4 120/3 122/9 26/10
+f 22/1 118/2 120/3 24/4
+f 20/5 116/6 118/2 22/1
+f 18/7 114/8 116/6 20/5
+f 16/4 112/3 114/9 18/10
+f 145/11 130/12 210/13
+f 13/14 15/15 111/16 109/17
+f 11/18 13/14 109/17 107/19
+f 9/20 11/18 107/19 105/21
+f 7/15 9/22 105/23 103/16
+f 5/14 7/15 103/16 101/17
+f 3/18 5/14 101/17 99/19
+f 1/20 3/18 99/19 97/21
+f 31/15 1/22 97/23 127/16
+f 29/14 31/15 127/16 125/17
+f 27/18 29/14 125/17 123/19
+f 25/20 27/18 123/19 121/21
+f 23/15 25/22 121/23 119/16
+f 21/14 23/15 119/16 117/17
+f 19/18 21/14 117/17 115/19
+f 17/20 19/18 115/19 113/21
+f 15/15 17/22 113/23 111/16
+f 194/24 195/25 209/26
+f 195/25 196/27 209/26
+f 196/27 197/28 209/26
+f 197/28 198/29 209/26
+f 198/29 199/30 209/26
+f 199/30 200/31 209/26
+f 200/31 201/32 209/26
+f 201/32 202/33 209/26
+f 202/33 203/34 209/26
+f 203/34 204/35 209/26
+f 204/35 205/36 209/26
+f 205/36 206/37 209/26
+f 206/37 207/38 209/26
+f 207/38 208/39 209/26
+f 208/39 193/40 209/26
+f 193/40 194/24 209/26
+f 130/12 131/41 210/13
+f 131/41 132/42 210/13
+f 132/42 133/43 210/13
+f 133/43 134/44 210/13
+f 134/44 135/45 210/13
+f 135/45 136/46 210/13
+f 136/46 137/47 210/13
+f 137/47 138/48 210/13
+f 138/48 139/49 210/13
+f 139/49 140/50 210/13
+f 140/50 141/51 210/13
+f 141/51 142/52 210/13
+f 142/52 143/53 210/13
+f 143/53 144/54 210/13
+f 144/54 145/11 210/13
+s 1
+f 33/55 2/7 4/5 50/56
+f 50/56 4/5 6/1 51/57
+f 51/57 6/1 8/4 52/58
+f 52/58 8/4 10/10 53/59
+f 53/55 10/7 12/5 54/56
+f 54/56 12/5 14/1 55/57
+f 55/57 14/1 16/4 56/58
+f 56/58 16/4 18/10 57/59
+f 57/55 18/7 20/5 58/56
+f 58/56 20/5 22/1 59/57
+f 59/57 22/1 24/4 60/58
+f 60/58 24/4 26/10 61/59
+f 61/55 26/7 28/5 62/56
+f 62/56 28/5 30/1 63/57
+f 64/58 32/4 2/10 33/59
+f 63/57 30/1 32/4 64/58
+f 66/60 82/61 83/62 67/63
+f 67/63 83/62 84/64 68/65
+f 68/65 84/64 85/66 69/67
+f 69/68 85/69 86/61 70/60
+f 70/60 86/61 87/62 71/63
+f 71/63 87/62 88/64 72/65
+f 72/65 88/64 89/66 73/67
+f 73/68 89/69 90/61 74/60
+f 74/60 90/61 91/62 75/63
+f 75/63 91/62 92/64 76/65
+f 76/65 92/64 93/66 77/67
+f 77/68 93/69 94/61 78/60
+f 78/60 94/61 95/62 79/63
+f 80/65 96/64 65/66 81/67
+f 79/63 95/62 96/64 80/65
+f 65/69 33/55 50/56 82/61
+f 82/61 50/56 51/57 83/62
+f 83/62 51/57 52/58 84/64
+f 84/64 52/58 53/59 85/66
+f 85/69 53/55 54/56 86/61
+f 86/61 54/56 55/57 87/62
+f 87/62 55/57 56/58 88/64
+f 88/64 56/58 57/59 89/66
+f 89/69 57/55 58/56 90/61
+f 90/61 58/56 59/57 91/62
+f 91/62 59/57 60/58 92/64
+f 92/64 60/58 61/59 93/66
+f 93/69 61/55 62/56 94/61
+f 94/61 62/56 63/57 95/62
+f 96/64 64/58 33/59 65/66
+f 95/62 63/57 64/58 96/64
+f 1/21 49/70 34/71 3/19
+f 3/19 34/71 35/72 5/17
+f 5/17 35/72 36/73 7/16
+f 7/16 36/73 37/74 9/23
+f 9/21 37/70 38/71 11/19
+f 11/19 38/71 39/72 13/17
+f 13/17 39/72 40/73 15/16
+f 15/16 40/73 41/74 17/23
+f 17/21 41/70 42/71 19/19
+f 19/19 42/71 43/72 21/17
+f 21/17 43/72 44/73 23/16
+f 23/16 44/73 45/74 25/23
+f 25/21 45/70 46/71 27/19
+f 27/19 46/71 47/72 29/17
+f 31/16 48/73 49/74 1/23
+f 29/17 47/72 48/73 31/16
+f 49/70 81/68 66/60 34/71
+f 34/71 66/60 67/63 35/72
+f 35/72 67/63 68/65 36/73
+f 36/73 68/65 69/67 37/74
+f 37/70 69/68 70/60 38/71
+f 38/71 70/60 71/63 39/72
+f 39/72 71/63 72/65 40/73
+f 40/73 72/65 73/67 41/74
+f 41/70 73/68 74/60 42/71
+f 42/71 74/60 75/63 43/72
+f 43/72 75/63 76/65 44/73
+f 44/73 76/65 77/67 45/74
+f 45/70 77/68 78/60 46/71
+f 46/71 78/60 79/63 47/72
+f 48/73 80/65 81/67 49/74
+f 47/72 79/63 80/65 48/73
+f 65/69 82/61 66/60 81/68
+f 129/75 146/76 100/77 98/78
+f 146/76 147/79 102/80 100/77
+f 147/79 148/81 104/82 102/80
+f 148/81 149/83 106/84 104/82
+f 149/75 150/76 108/77 106/78
+f 150/76 151/79 110/80 108/77
+f 151/79 152/81 112/82 110/80
+f 152/81 153/83 114/84 112/82
+f 153/75 154/76 116/77 114/78
+f 154/76 155/79 118/80 116/77
+f 155/79 156/81 120/82 118/80
+f 156/81 157/83 122/84 120/82
+f 157/75 158/76 124/77 122/78
+f 158/76 159/79 126/80 124/77
+f 160/81 129/83 98/84 128/82
+f 159/79 160/81 128/82 126/80
+f 162/85 163/86 179/87 178/88
+f 163/86 164/89 180/90 179/87
+f 164/89 165/91 181/92 180/90
+f 165/93 166/85 182/88 181/94
+f 166/85 167/86 183/87 182/88
+f 167/86 168/89 184/90 183/87
+f 168/89 169/91 185/92 184/90
+f 169/93 170/85 186/88 185/94
+f 170/85 171/86 187/87 186/88
+f 171/86 172/89 188/90 187/87
+f 172/89 173/91 189/92 188/90
+f 173/93 174/85 190/88 189/94
+f 174/85 175/86 191/87 190/88
+f 176/89 177/91 161/92 192/90
+f 175/86 176/89 192/90 191/87
+f 161/94 178/88 146/76 129/75
+f 178/88 179/87 147/79 146/76
+f 179/87 180/90 148/81 147/79
+f 180/90 181/92 149/83 148/81
+f 181/94 182/88 150/76 149/75
+f 182/88 183/87 151/79 150/76
+f 183/87 184/90 152/81 151/79
+f 184/90 185/92 153/83 152/81
+f 185/94 186/88 154/76 153/75
+f 186/88 187/87 155/79 154/76
+f 187/87 188/90 156/81 155/79
+f 188/90 189/92 157/83 156/81
+f 189/94 190/88 158/76 157/75
+f 190/88 191/87 159/79 158/76
+f 192/90 161/92 129/83 160/81
+f 191/87 192/90 160/81 159/79
+f 97/95 99/96 130/97 145/98
+f 99/96 101/99 131/100 130/97
+f 101/99 103/101 132/102 131/100
+f 103/101 105/103 133/104 132/102
+f 105/95 107/96 134/97 133/98
+f 107/96 109/99 135/100 134/97
+f 109/99 111/101 136/102 135/100
+f 111/101 113/103 137/104 136/102
+f 113/95 115/96 138/97 137/98
+f 115/96 117/99 139/100 138/97
+f 117/99 119/101 140/102 139/100
+f 119/101 121/103 141/104 140/102
+f 121/95 123/96 142/97 141/98
+f 123/96 125/99 143/100 142/97
+f 127/101 97/103 145/104 144/102
+f 125/99 127/101 144/102 143/100
+f 193/98 208/97 162/85 177/93
+f 208/97 207/100 163/86 162/85
+f 207/100 206/102 164/89 163/86
+f 206/102 205/104 165/91 164/89
+f 205/98 204/97 166/85 165/93
+f 204/97 203/100 167/86 166/85
+f 203/100 202/102 168/89 167/86
+f 202/102 201/104 169/91 168/89
+f 201/98 200/97 170/85 169/93
+f 200/97 199/100 171/86 170/85
+f 199/100 198/102 172/89 171/86
+f 198/102 197/104 173/91 172/89
+f 197/98 196/97 174/85 173/93
+f 196/97 195/100 175/86 174/85
+f 194/102 193/104 177/91 176/89
+f 195/100 194/102 176/89 175/86
+f 161/94 177/93 162/85 178/88
diff --git a/cottages/models/cottages_barrel_closed.obj b/cottages/models/cottages_barrel_closed.obj
new file mode 100644
index 0000000..f2ab55a
--- /dev/null
+++ b/cottages/models/cottages_barrel_closed.obj
@@ -0,0 +1,453 @@
+# Blender v2.69 (sub 0) OBJ File: 'barrel-closed.blend'
+# www.blender.org
+o Cylinder
+v 0.092835 -0.500001 -0.466712
+v 0.092835 0.500000 -0.466712
+v 0.264371 -0.500001 -0.395660
+v 0.264371 0.500000 -0.395660
+v 0.395660 -0.500001 -0.264371
+v 0.395660 0.500000 -0.264371
+v 0.466712 -0.500001 -0.092835
+v 0.466712 0.500000 -0.092835
+v 0.466712 -0.500001 0.092835
+v 0.466712 0.500000 0.092835
+v 0.395660 -0.500001 0.264371
+v 0.395660 0.500000 0.264371
+v 0.264371 -0.500001 0.395660
+v 0.264371 0.500000 0.395660
+v 0.092835 -0.500001 0.466712
+v 0.092835 0.500000 0.466712
+v -0.092835 -0.500001 0.466712
+v -0.092835 0.500000 0.466712
+v -0.264371 -0.500001 0.395660
+v -0.264371 0.500000 0.395660
+v -0.395660 -0.500001 0.264371
+v -0.395660 0.500000 0.264371
+v -0.466712 -0.500001 0.092835
+v -0.466712 0.500000 0.092835
+v -0.466712 -0.500001 -0.092835
+v -0.466712 0.500000 -0.092835
+v -0.395660 -0.500001 -0.264371
+v -0.395660 0.500000 -0.264371
+v -0.264371 -0.500001 -0.395660
+v -0.264371 0.500000 -0.395660
+v -0.092835 -0.500001 -0.466713
+v -0.092835 0.500000 -0.466713
+v 0.095930 0.413334 -0.482270
+v 0.273184 -0.413334 -0.408849
+v 0.408849 -0.413334 -0.273184
+v 0.482270 -0.413334 -0.095929
+v 0.482270 -0.413334 0.095930
+v 0.408849 -0.413334 0.273184
+v 0.273184 -0.413334 0.408849
+v 0.095929 -0.413334 0.482270
+v -0.095929 -0.413334 0.482270
+v -0.273184 -0.413334 0.408849
+v -0.408849 -0.413334 0.273184
+v -0.482270 -0.413334 0.095929
+v -0.482270 -0.413334 -0.095930
+v -0.408849 -0.413334 -0.273184
+v -0.273184 -0.413334 -0.408849
+v -0.095929 -0.413334 -0.482270
+v 0.095930 -0.413334 -0.482270
+v 0.273184 0.413334 -0.408849
+v 0.408849 0.413334 -0.273184
+v 0.482270 0.413334 -0.095929
+v 0.482270 0.413334 0.095930
+v 0.408849 0.413334 0.273184
+v 0.273184 0.413334 0.408849
+v 0.095929 0.413334 0.482270
+v -0.095929 0.413334 0.482270
+v -0.273184 0.413334 0.408849
+v -0.408849 0.413334 0.273184
+v -0.482270 0.413334 0.095929
+v -0.482270 0.413334 -0.095930
+v -0.408849 0.413334 -0.273184
+v -0.273184 0.413334 -0.408849
+v -0.095929 0.413334 -0.482270
+v 0.099128 0.114830 -0.498352
+v 0.282294 -0.114831 -0.422482
+v 0.422482 -0.114831 -0.282294
+v 0.498352 -0.114831 -0.099128
+v 0.498352 -0.114831 0.099128
+v 0.422482 -0.114831 0.282294
+v 0.282294 -0.114831 0.422482
+v 0.099128 -0.114831 0.498352
+v -0.099128 -0.114831 0.498352
+v -0.282294 -0.114831 0.422482
+v -0.422482 -0.114831 0.282294
+v -0.498352 -0.114831 0.099128
+v -0.498352 -0.114831 -0.099128
+v -0.422482 -0.114831 -0.282294
+v -0.282293 -0.114831 -0.422482
+v -0.099128 -0.114831 -0.498352
+v 0.099128 -0.114831 -0.498352
+v 0.282294 0.114830 -0.422482
+v 0.422482 0.114830 -0.282294
+v 0.498352 0.114830 -0.099128
+v 0.498352 0.114830 0.099128
+v 0.422482 0.114830 0.282294
+v 0.282294 0.114830 0.422482
+v 0.099128 0.114830 0.498352
+v -0.099128 0.114830 0.498352
+v -0.282294 0.114830 0.422482
+v -0.422482 0.114830 0.282294
+v -0.498352 0.114830 0.099128
+v -0.498352 0.114830 -0.099128
+v -0.422482 0.114830 -0.282294
+v -0.282293 0.114830 -0.422482
+v -0.099128 0.114830 -0.498352
+v 0.083551 -0.500001 -0.420041
+v 0.083551 0.500000 -0.420041
+v 0.237934 -0.500001 -0.356094
+v 0.237934 0.500000 -0.356094
+v 0.356094 -0.500001 -0.237934
+v 0.356094 0.500000 -0.237934
+v 0.420041 -0.500001 -0.083551
+v 0.420041 0.500000 -0.083551
+v 0.420041 -0.500001 0.083551
+v 0.420041 0.500000 0.083551
+v 0.356094 -0.500001 0.237934
+v 0.356094 0.500000 0.237934
+v 0.237934 -0.500001 0.356094
+v 0.237934 0.500000 0.356094
+v 0.083551 -0.500001 0.420041
+v 0.083551 0.500000 0.420041
+v -0.083551 -0.500001 0.420041
+v -0.083551 0.500000 0.420041
+v -0.237934 -0.500001 0.356094
+v -0.237934 0.500000 0.356094
+v -0.356094 -0.500001 0.237934
+v -0.356094 0.500000 0.237934
+v -0.420041 -0.500001 0.083551
+v -0.420041 0.500000 0.083551
+v -0.420041 -0.500001 -0.083551
+v -0.420041 0.500000 -0.083551
+v -0.356094 -0.500001 -0.237934
+v -0.356094 0.500000 -0.237934
+v -0.237934 -0.500001 -0.356094
+v -0.237934 0.500000 -0.356094
+v -0.083551 -0.500001 -0.420041
+v -0.083551 0.500000 -0.420041
+v 0.086337 0.413334 -0.434043
+v 0.245866 -0.413335 -0.367964
+v 0.367964 -0.413335 -0.245866
+v 0.434043 -0.413335 -0.086336
+v 0.434043 -0.413335 0.086337
+v 0.367964 -0.413335 0.245866
+v 0.245866 -0.413335 0.367964
+v 0.086337 -0.413335 0.434043
+v -0.086336 -0.413335 0.434043
+v -0.245866 -0.413335 0.367964
+v -0.367964 -0.413335 0.245866
+v -0.434043 -0.413335 0.086337
+v -0.434043 -0.413335 -0.086337
+v -0.367964 -0.413335 -0.245866
+v -0.245865 -0.413335 -0.367964
+v -0.086336 -0.413335 -0.434043
+v 0.086337 -0.413335 -0.434043
+v 0.245866 0.413334 -0.367964
+v 0.367964 0.413334 -0.245866
+v 0.434043 0.413334 -0.086336
+v 0.434043 0.413334 0.086337
+v 0.367964 0.413334 0.245866
+v 0.245866 0.413334 0.367964
+v 0.086337 0.413334 0.434043
+v -0.086336 0.413334 0.434043
+v -0.245866 0.413334 0.367964
+v -0.367964 0.413334 0.245866
+v -0.434043 0.413334 0.086337
+v -0.434043 0.413334 -0.086337
+v -0.367964 0.413334 -0.245866
+v -0.245865 0.413334 -0.367964
+v -0.086336 0.413334 -0.434043
+v 0.087776 0.428605 -0.441280
+v -0.087776 0.428605 -0.441280
+v -0.249965 0.428605 -0.374099
+v -0.374099 0.428605 -0.249965
+v -0.441280 0.428605 -0.087776
+v -0.441280 0.428605 0.087776
+v -0.374099 0.428605 0.249965
+v -0.249965 0.428605 0.374099
+v -0.087776 0.428605 0.441280
+v 0.087776 0.428605 0.441280
+v 0.249965 0.428605 0.374099
+v 0.374099 0.428605 0.249965
+v 0.441280 0.428605 0.087776
+v 0.441280 0.428605 -0.087776
+v 0.374099 0.428605 -0.249965
+v 0.249965 0.428605 -0.374099
+v 0.000000 0.428605 0.000000
+v -0.000000 -0.413334 0.000000
+vt 0.211538 0.442308
+vt 0.211538 0.467949
+vt 0.108974 0.467949
+vt 0.108974 0.442308
+vt 0.314103 0.442308
+vt 0.314103 0.467949
+vt 0.416667 0.442308
+vt 0.416667 0.467949
+vt 0.006410 0.467949
+vt 0.006410 0.442308
+vt 0.211792 0.993590
+vt 0.117562 0.954728
+vt 0.262789 0.738327
+vt 0.211538 0.006410
+vt 0.108974 0.006410
+vt 0.108974 0.032051
+vt 0.211538 0.032051
+vt 0.314103 0.006410
+vt 0.314103 0.032051
+vt 0.416667 0.006410
+vt 0.416667 0.032051
+vt 0.006410 0.006410
+vt 0.006410 0.032051
+vt 0.211361 0.993526
+vt 0.117394 0.954505
+vt 0.262040 0.737637
+vt 0.045447 0.882467
+vt 0.006475 0.788381
+vt 0.006410 0.686569
+vt 0.045263 0.592532
+vt 0.117118 0.520586
+vt 0.204627 0.488094
+vt 0.312719 0.481748
+vt 0.406687 0.520769
+vt 0.478633 0.592807
+vt 0.517605 0.686893
+vt 0.517670 0.788705
+vt 0.478816 0.882742
+vt 0.406962 0.954687
+vt 0.313044 0.993590
+vt 0.045441 0.882922
+vt 0.006410 0.789102
+vt 0.006410 0.687551
+vt 0.045442 0.593732
+vt 0.117562 0.521925
+vt 0.211793 0.483064
+vt 0.313787 0.483064
+vt 0.408016 0.521926
+vt 0.480136 0.593732
+vt 0.519168 0.687551
+vt 0.519168 0.789103
+vt 0.480136 0.882922
+vt 0.408016 0.954728
+vt 0.313786 0.993590
+vt 0.416667 0.397436
+vt 0.314103 0.397436
+vt 0.211538 0.397436
+vt 0.108974 0.397436
+vt 0.006410 0.397436
+vt 0.314103 0.185897
+vt 0.314103 0.282051
+vt 0.211538 0.282051
+vt 0.211538 0.185897
+vt 0.108974 0.282051
+vt 0.108974 0.185897
+vt 0.006410 0.282051
+vt 0.006410 0.185897
+vt 0.416667 0.185897
+vt 0.416667 0.282051
+vt 0.416667 0.076923
+vt 0.314103 0.076923
+vt 0.211538 0.076923
+vt 0.108974 0.076923
+vt 0.006410 0.076923
+vt 0.429487 0.397436
+vt 0.532051 0.397436
+vt 0.532051 0.442308
+vt 0.429487 0.442308
+vt 0.634615 0.397436
+vt 0.634615 0.442308
+vt 0.737179 0.397436
+vt 0.737179 0.442308
+vt 0.839744 0.397436
+vt 0.839744 0.442308
+vt 0.429487 0.032051
+vt 0.532051 0.032051
+vt 0.532051 0.076923
+vt 0.429487 0.076923
+vt 0.634615 0.032051
+vt 0.634615 0.076923
+vt 0.737179 0.032051
+vt 0.737179 0.076923
+vt 0.839744 0.032051
+vt 0.839744 0.076923
+s off
+f 14/1 110/2 112/3 16/4
+f 12/5 108/6 110/2 14/1
+f 10/7 106/8 108/6 12/5
+f 8/4 104/3 106/9 10/10
+f 6/1 102/2 104/3 8/4
+f 4/5 100/6 102/2 6/1
+f 2/7 98/8 100/6 4/5
+f 32/4 128/3 98/9 2/10
+f 30/1 126/2 128/3 32/4
+f 28/5 124/6 126/2 30/1
+f 26/7 122/8 124/6 28/5
+f 24/4 120/3 122/9 26/10
+f 22/1 118/2 120/3 24/4
+f 20/5 116/6 118/2 22/1
+f 18/7 114/8 116/6 20/5
+f 16/4 112/3 114/9 18/10
+f 145/11 130/12 178/13
+f 13/14 15/15 111/16 109/17
+f 11/18 13/14 109/17 107/19
+f 9/20 11/18 107/19 105/21
+f 7/15 9/22 105/23 103/16
+f 5/14 7/15 103/16 101/17
+f 3/18 5/14 101/17 99/19
+f 1/20 3/18 99/19 97/21
+f 31/15 1/22 97/23 127/16
+f 29/14 31/15 127/16 125/17
+f 27/18 29/14 125/17 123/19
+f 25/20 27/18 123/19 121/21
+f 23/15 25/22 121/23 119/16
+f 21/14 23/15 119/16 117/17
+f 19/18 21/14 117/17 115/19
+f 17/20 19/18 115/19 113/21
+f 15/15 17/22 113/23 111/16
+f 162/24 163/25 177/26
+f 163/25 164/27 177/26
+f 164/27 165/28 177/26
+f 165/28 166/29 177/26
+f 166/29 167/30 177/26
+f 167/30 168/31 177/26
+f 168/31 169/32 177/26
+f 169/32 170/33 177/26
+f 170/33 171/34 177/26
+f 171/34 172/35 177/26
+f 172/35 173/36 177/26
+f 173/36 174/37 177/26
+f 174/37 175/38 177/26
+f 175/38 176/39 177/26
+f 176/39 161/40 177/26
+f 161/40 162/24 177/26
+f 130/12 131/41 178/13
+f 131/41 132/42 178/13
+f 132/42 133/43 178/13
+f 133/43 134/44 178/13
+f 134/44 135/45 178/13
+f 135/45 136/46 178/13
+f 136/46 137/47 178/13
+f 137/47 138/48 178/13
+f 138/48 139/49 178/13
+f 139/49 140/50 178/13
+f 140/50 141/51 178/13
+f 141/51 142/52 178/13
+f 142/52 143/53 178/13
+f 143/53 144/54 178/13
+f 144/54 145/11 178/13
+s 1
+f 33/55 2/7 4/5 50/56
+f 50/56 4/5 6/1 51/57
+f 51/57 6/1 8/4 52/58
+f 52/58 8/4 10/10 53/59
+f 53/55 10/7 12/5 54/56
+f 54/56 12/5 14/1 55/57
+f 55/57 14/1 16/4 56/58
+f 56/58 16/4 18/10 57/59
+f 57/55 18/7 20/5 58/56
+f 58/56 20/5 22/1 59/57
+f 59/57 22/1 24/4 60/58
+f 60/58 24/4 26/10 61/59
+f 61/55 26/7 28/5 62/56
+f 62/56 28/5 30/1 63/57
+f 64/58 32/4 2/10 33/59
+f 63/57 30/1 32/4 64/58
+f 66/60 82/61 83/62 67/63
+f 67/63 83/62 84/64 68/65
+f 68/65 84/64 85/66 69/67
+f 69/68 85/69 86/61 70/60
+f 70/60 86/61 87/62 71/63
+f 71/63 87/62 88/64 72/65
+f 72/65 88/64 89/66 73/67
+f 73/68 89/69 90/61 74/60
+f 74/60 90/61 91/62 75/63
+f 75/63 91/62 92/64 76/65
+f 76/65 92/64 93/66 77/67
+f 77/68 93/69 94/61 78/60
+f 78/60 94/61 95/62 79/63
+f 80/65 96/64 65/66 81/67
+f 79/63 95/62 96/64 80/65
+f 65/69 33/55 50/56 82/61
+f 82/61 50/56 51/57 83/62
+f 83/62 51/57 52/58 84/64
+f 84/64 52/58 53/59 85/66
+f 85/69 53/55 54/56 86/61
+f 86/61 54/56 55/57 87/62
+f 87/62 55/57 56/58 88/64
+f 88/64 56/58 57/59 89/66
+f 89/69 57/55 58/56 90/61
+f 90/61 58/56 59/57 91/62
+f 91/62 59/57 60/58 92/64
+f 92/64 60/58 61/59 93/66
+f 93/69 61/55 62/56 94/61
+f 94/61 62/56 63/57 95/62
+f 96/64 64/58 33/59 65/66
+f 95/62 63/57 64/58 96/64
+f 1/21 49/70 34/71 3/19
+f 3/19 34/71 35/72 5/17
+f 5/17 35/72 36/73 7/16
+f 7/16 36/73 37/74 9/23
+f 9/21 37/70 38/71 11/19
+f 11/19 38/71 39/72 13/17
+f 13/17 39/72 40/73 15/16
+f 15/16 40/73 41/74 17/23
+f 17/21 41/70 42/71 19/19
+f 19/19 42/71 43/72 21/17
+f 21/17 43/72 44/73 23/16
+f 23/16 44/73 45/74 25/23
+f 25/21 45/70 46/71 27/19
+f 27/19 46/71 47/72 29/17
+f 31/16 48/73 49/74 1/23
+f 29/17 47/72 48/73 31/16
+f 49/70 81/68 66/60 34/71
+f 34/71 66/60 67/63 35/72
+f 35/72 67/63 68/65 36/73
+f 36/73 68/65 69/67 37/74
+f 37/70 69/68 70/60 38/71
+f 38/71 70/60 71/63 39/72
+f 39/72 71/63 72/65 40/73
+f 40/73 72/65 73/67 41/74
+f 41/70 73/68 74/60 42/71
+f 42/71 74/60 75/63 43/72
+f 43/72 75/63 76/65 44/73
+f 44/73 76/65 77/67 45/74
+f 45/70 77/68 78/60 46/71
+f 46/71 78/60 79/63 47/72
+f 48/73 80/65 81/67 49/74
+f 47/72 79/63 80/65 48/73
+f 65/69 82/61 66/60 81/68
+f 129/75 146/76 100/77 98/78
+f 146/76 147/79 102/80 100/77
+f 147/79 148/81 104/82 102/80
+f 148/81 149/83 106/84 104/82
+f 149/75 150/76 108/77 106/78
+f 150/76 151/79 110/80 108/77
+f 151/79 152/81 112/82 110/80
+f 152/81 153/83 114/84 112/82
+f 153/75 154/76 116/77 114/78
+f 154/76 155/79 118/80 116/77
+f 155/79 156/81 120/82 118/80
+f 156/81 157/83 122/84 120/82
+f 157/75 158/76 124/77 122/78
+f 158/76 159/79 126/80 124/77
+f 160/81 129/83 98/84 128/82
+f 159/79 160/81 128/82 126/80
+f 97/85 99/86 130/87 145/88
+f 99/86 101/89 131/90 130/87
+f 101/89 103/91 132/92 131/90
+f 103/91 105/93 133/94 132/92
+f 105/85 107/86 134/87 133/88
+f 107/86 109/89 135/90 134/87
+f 109/89 111/91 136/92 135/90
+f 111/91 113/93 137/94 136/92
+f 113/85 115/86 138/87 137/88
+f 115/86 117/89 139/90 138/87
+f 117/89 119/91 140/92 139/90
+f 119/91 121/93 141/94 140/92
+f 121/85 123/86 142/87 141/88
+f 123/86 125/89 143/90 142/87
+f 127/91 97/93 145/94 144/92
+f 125/89 127/91 144/92 143/90
diff --git a/cottages/models/cottages_barrel_closed_lying.obj b/cottages/models/cottages_barrel_closed_lying.obj
new file mode 100644
index 0000000..ae22045
--- /dev/null
+++ b/cottages/models/cottages_barrel_closed_lying.obj
@@ -0,0 +1,453 @@
+# Blender v2.69 (sub 0) OBJ File: 'barrel-closed.blend'
+# www.blender.org
+o Cylinder
+v 0.500001 0.092835 -0.466712
+v -0.500000 0.092835 -0.466712
+v 0.500001 0.264371 -0.395660
+v -0.500000 0.264371 -0.395660
+v 0.500001 0.395660 -0.264371
+v -0.500000 0.395660 -0.264371
+v 0.500001 0.466712 -0.092835
+v -0.500000 0.466713 -0.092835
+v 0.500001 0.466712 0.092835
+v -0.500000 0.466713 0.092835
+v 0.500001 0.395660 0.264371
+v -0.500000 0.395660 0.264371
+v 0.500001 0.264371 0.395660
+v -0.500000 0.264371 0.395660
+v 0.500001 0.092835 0.466712
+v -0.500000 0.092835 0.466712
+v 0.500001 -0.092835 0.466712
+v -0.500000 -0.092835 0.466712
+v 0.500001 -0.264371 0.395660
+v -0.500000 -0.264371 0.395660
+v 0.500001 -0.395660 0.264372
+v -0.500000 -0.395660 0.264371
+v 0.500001 -0.466713 0.092835
+v -0.500000 -0.466712 0.092835
+v 0.500001 -0.466713 -0.092835
+v -0.500000 -0.466712 -0.092835
+v 0.500001 -0.395660 -0.264371
+v -0.500000 -0.395660 -0.264372
+v 0.500001 -0.264371 -0.395660
+v -0.500000 -0.264371 -0.395660
+v 0.500001 -0.092835 -0.466712
+v -0.500000 -0.092835 -0.466713
+v -0.413334 0.095930 -0.482270
+v 0.413335 0.273184 -0.408849
+v 0.413335 0.408849 -0.273184
+v 0.413335 0.482270 -0.095929
+v 0.413335 0.482270 0.095930
+v 0.413335 0.408849 0.273184
+v 0.413334 0.273184 0.408849
+v 0.413334 0.095929 0.482270
+v 0.413334 -0.095930 0.482270
+v 0.413334 -0.273184 0.408849
+v 0.413334 -0.408849 0.273184
+v 0.413334 -0.482270 0.095930
+v 0.413334 -0.482270 -0.095929
+v 0.413334 -0.408849 -0.273184
+v 0.413334 -0.273184 -0.408849
+v 0.413334 -0.095929 -0.482270
+v 0.413335 0.095929 -0.482270
+v -0.413334 0.273184 -0.408849
+v -0.413334 0.408849 -0.273184
+v -0.413334 0.482270 -0.095929
+v -0.413334 0.482270 0.095929
+v -0.413334 0.408849 0.273184
+v -0.413334 0.273184 0.408849
+v -0.413334 0.095930 0.482270
+v -0.413334 -0.095929 0.482270
+v -0.413334 -0.273184 0.408849
+v -0.413334 -0.408849 0.273184
+v -0.413334 -0.482270 0.095929
+v -0.413334 -0.482270 -0.095930
+v -0.413334 -0.408849 -0.273184
+v -0.413334 -0.273184 -0.408849
+v -0.413334 -0.095929 -0.482270
+v -0.114830 0.099128 -0.498352
+v 0.114831 0.282294 -0.422482
+v 0.114831 0.422482 -0.282294
+v 0.114831 0.498352 -0.099128
+v 0.114831 0.498352 0.099128
+v 0.114831 0.422482 0.282294
+v 0.114831 0.282294 0.422482
+v 0.114831 0.099128 0.498352
+v 0.114831 -0.099128 0.498352
+v 0.114831 -0.282294 0.422482
+v 0.114831 -0.422482 0.282294
+v 0.114831 -0.498352 0.099128
+v 0.114831 -0.498352 -0.099128
+v 0.114831 -0.422482 -0.282294
+v 0.114831 -0.282293 -0.422482
+v 0.114831 -0.099128 -0.498352
+v 0.114831 0.099128 -0.498352
+v -0.114830 0.282294 -0.422482
+v -0.114830 0.422482 -0.282294
+v -0.114830 0.498352 -0.099128
+v -0.114830 0.498352 0.099128
+v -0.114830 0.422482 0.282294
+v -0.114830 0.282294 0.422482
+v -0.114830 0.099128 0.498352
+v -0.114830 -0.099128 0.498352
+v -0.114830 -0.282293 0.422482
+v -0.114830 -0.422482 0.282294
+v -0.114830 -0.498352 0.099128
+v -0.114830 -0.498352 -0.099128
+v -0.114830 -0.422482 -0.282294
+v -0.114830 -0.282293 -0.422482
+v -0.114830 -0.099128 -0.498352
+v 0.500001 0.083551 -0.420041
+v -0.500000 0.083552 -0.420041
+v 0.500001 0.237934 -0.356094
+v -0.500000 0.237934 -0.356094
+v 0.500001 0.356094 -0.237934
+v -0.500000 0.356094 -0.237934
+v 0.500001 0.420041 -0.083551
+v -0.500000 0.420041 -0.083551
+v 0.500001 0.420041 0.083552
+v -0.500000 0.420041 0.083551
+v 0.500001 0.356094 0.237934
+v -0.500000 0.356094 0.237934
+v 0.500001 0.237934 0.356094
+v -0.500000 0.237934 0.356094
+v 0.500001 0.083551 0.420041
+v -0.500000 0.083551 0.420041
+v 0.500001 -0.083551 0.420041
+v -0.500000 -0.083551 0.420041
+v 0.500001 -0.237934 0.356094
+v -0.500000 -0.237934 0.356094
+v 0.500001 -0.356094 0.237934
+v -0.500000 -0.356094 0.237934
+v 0.500001 -0.420041 0.083551
+v -0.500000 -0.420041 0.083551
+v 0.500001 -0.420041 -0.083551
+v -0.500000 -0.420041 -0.083552
+v 0.500001 -0.356094 -0.237934
+v -0.500000 -0.356094 -0.237934
+v 0.500001 -0.237934 -0.356094
+v -0.500000 -0.237934 -0.356094
+v 0.500001 -0.083551 -0.420041
+v -0.500000 -0.083551 -0.420041
+v -0.413334 0.086337 -0.434043
+v 0.413335 0.245866 -0.367964
+v 0.413335 0.367964 -0.245866
+v 0.413335 0.434043 -0.086336
+v 0.413335 0.434043 0.086337
+v 0.413335 0.367964 0.245866
+v 0.413335 0.245866 0.367964
+v 0.413334 0.086336 0.434043
+v 0.413334 -0.086337 0.434043
+v 0.413334 -0.245866 0.367964
+v 0.413334 -0.367964 0.245866
+v 0.413334 -0.434043 0.086337
+v 0.413334 -0.434043 -0.086337
+v 0.413334 -0.367964 -0.245866
+v 0.413335 -0.245865 -0.367964
+v 0.413335 -0.086336 -0.434043
+v 0.413335 0.086336 -0.434043
+v -0.413334 0.245866 -0.367964
+v -0.413334 0.367964 -0.245866
+v -0.413334 0.434043 -0.086337
+v -0.413334 0.434043 0.086337
+v -0.413334 0.367964 0.245866
+v -0.413334 0.245866 0.367964
+v -0.413334 0.086337 0.434043
+v -0.413334 -0.086336 0.434043
+v -0.413334 -0.245865 0.367964
+v -0.413334 -0.367964 0.245866
+v -0.413334 -0.434043 0.086337
+v -0.413334 -0.434043 -0.086337
+v -0.413334 -0.367964 -0.245866
+v -0.413334 -0.245865 -0.367964
+v -0.413334 -0.086336 -0.434043
+v -0.428605 0.087776 -0.441280
+v -0.428605 -0.087776 -0.441280
+v -0.428605 -0.249965 -0.374099
+v -0.428605 -0.374099 -0.249965
+v -0.428605 -0.441280 -0.087776
+v -0.428605 -0.441280 0.087776
+v -0.428605 -0.374099 0.249965
+v -0.428605 -0.249965 0.374099
+v -0.428605 -0.087776 0.441280
+v -0.428605 0.087776 0.441280
+v -0.428605 0.249965 0.374099
+v -0.428605 0.374099 0.249965
+v -0.428605 0.441280 0.087776
+v -0.428605 0.441280 -0.087776
+v -0.428605 0.374099 -0.249965
+v -0.428605 0.249965 -0.374099
+v -0.428605 0.000000 -0.000000
+v 0.413334 -0.000000 0.000000
+vt 0.211538 0.442308
+vt 0.211538 0.467949
+vt 0.108974 0.467949
+vt 0.108974 0.442308
+vt 0.314103 0.442308
+vt 0.314103 0.467949
+vt 0.416667 0.442308
+vt 0.416667 0.467949
+vt 0.006410 0.467949
+vt 0.006410 0.442308
+vt 0.211792 0.993590
+vt 0.117562 0.954728
+vt 0.262789 0.738327
+vt 0.211538 0.006410
+vt 0.108974 0.006410
+vt 0.108974 0.032051
+vt 0.211538 0.032051
+vt 0.314103 0.006410
+vt 0.314103 0.032051
+vt 0.416667 0.006410
+vt 0.416667 0.032051
+vt 0.006410 0.006410
+vt 0.006410 0.032051
+vt 0.211361 0.993526
+vt 0.117394 0.954505
+vt 0.262040 0.737637
+vt 0.045447 0.882467
+vt 0.006475 0.788381
+vt 0.006410 0.686569
+vt 0.045263 0.592532
+vt 0.117118 0.520586
+vt 0.204627 0.488094
+vt 0.312719 0.481748
+vt 0.406687 0.520769
+vt 0.478633 0.592807
+vt 0.517605 0.686893
+vt 0.517670 0.788705
+vt 0.478816 0.882742
+vt 0.406962 0.954687
+vt 0.313044 0.993590
+vt 0.045441 0.882922
+vt 0.006410 0.789102
+vt 0.006410 0.687551
+vt 0.045442 0.593732
+vt 0.117562 0.521925
+vt 0.211793 0.483064
+vt 0.313787 0.483064
+vt 0.408016 0.521926
+vt 0.480136 0.593732
+vt 0.519168 0.687551
+vt 0.519168 0.789103
+vt 0.480136 0.882922
+vt 0.408016 0.954728
+vt 0.313786 0.993590
+vt 0.416667 0.397436
+vt 0.314103 0.397436
+vt 0.211538 0.397436
+vt 0.108974 0.397436
+vt 0.006410 0.397436
+vt 0.314103 0.185897
+vt 0.314103 0.282051
+vt 0.211538 0.282051
+vt 0.211538 0.185897
+vt 0.108974 0.282051
+vt 0.108974 0.185897
+vt 0.006410 0.282051
+vt 0.006410 0.185897
+vt 0.416667 0.185897
+vt 0.416667 0.282051
+vt 0.416667 0.076923
+vt 0.314103 0.076923
+vt 0.211538 0.076923
+vt 0.108974 0.076923
+vt 0.006410 0.076923
+vt 0.429487 0.397436
+vt 0.532051 0.397436
+vt 0.532051 0.442308
+vt 0.429487 0.442308
+vt 0.634615 0.397436
+vt 0.634615 0.442308
+vt 0.737179 0.397436
+vt 0.737179 0.442308
+vt 0.839744 0.397436
+vt 0.839744 0.442308
+vt 0.429487 0.032051
+vt 0.532051 0.032051
+vt 0.532051 0.076923
+vt 0.429487 0.076923
+vt 0.634615 0.032051
+vt 0.634615 0.076923
+vt 0.737179 0.032051
+vt 0.737179 0.076923
+vt 0.839744 0.032051
+vt 0.839744 0.076923
+s off
+f 14/1 110/2 112/3 16/4
+f 12/5 108/6 110/2 14/1
+f 10/7 106/8 108/6 12/5
+f 8/4 104/3 106/9 10/10
+f 6/1 102/2 104/3 8/4
+f 4/5 100/6 102/2 6/1
+f 2/7 98/8 100/6 4/5
+f 32/4 128/3 98/9 2/10
+f 30/1 126/2 128/3 32/4
+f 28/5 124/6 126/2 30/1
+f 26/7 122/8 124/6 28/5
+f 24/4 120/3 122/9 26/10
+f 22/1 118/2 120/3 24/4
+f 20/5 116/6 118/2 22/1
+f 18/7 114/8 116/6 20/5
+f 16/4 112/3 114/9 18/10
+f 145/11 130/12 178/13
+f 13/14 15/15 111/16 109/17
+f 11/18 13/14 109/17 107/19
+f 9/20 11/18 107/19 105/21
+f 7/15 9/22 105/23 103/16
+f 5/14 7/15 103/16 101/17
+f 3/18 5/14 101/17 99/19
+f 1/20 3/18 99/19 97/21
+f 31/15 1/22 97/23 127/16
+f 29/14 31/15 127/16 125/17
+f 27/18 29/14 125/17 123/19
+f 25/20 27/18 123/19 121/21
+f 23/15 25/22 121/23 119/16
+f 21/14 23/15 119/16 117/17
+f 19/18 21/14 117/17 115/19
+f 17/20 19/18 115/19 113/21
+f 15/15 17/22 113/23 111/16
+f 162/24 163/25 177/26
+f 163/25 164/27 177/26
+f 164/27 165/28 177/26
+f 165/28 166/29 177/26
+f 166/29 167/30 177/26
+f 167/30 168/31 177/26
+f 168/31 169/32 177/26
+f 169/32 170/33 177/26
+f 170/33 171/34 177/26
+f 171/34 172/35 177/26
+f 172/35 173/36 177/26
+f 173/36 174/37 177/26
+f 174/37 175/38 177/26
+f 175/38 176/39 177/26
+f 176/39 161/40 177/26
+f 161/40 162/24 177/26
+f 130/12 131/41 178/13
+f 131/41 132/42 178/13
+f 132/42 133/43 178/13
+f 133/43 134/44 178/13
+f 134/44 135/45 178/13
+f 135/45 136/46 178/13
+f 136/46 137/47 178/13
+f 137/47 138/48 178/13
+f 138/48 139/49 178/13
+f 139/49 140/50 178/13
+f 140/50 141/51 178/13
+f 141/51 142/52 178/13
+f 142/52 143/53 178/13
+f 143/53 144/54 178/13
+f 144/54 145/11 178/13
+s 1
+f 33/55 2/7 4/5 50/56
+f 50/56 4/5 6/1 51/57
+f 51/57 6/1 8/4 52/58
+f 52/58 8/4 10/10 53/59
+f 53/55 10/7 12/5 54/56
+f 54/56 12/5 14/1 55/57
+f 55/57 14/1 16/4 56/58
+f 56/58 16/4 18/10 57/59
+f 57/55 18/7 20/5 58/56
+f 58/56 20/5 22/1 59/57
+f 59/57 22/1 24/4 60/58
+f 60/58 24/4 26/10 61/59
+f 61/55 26/7 28/5 62/56
+f 62/56 28/5 30/1 63/57
+f 64/58 32/4 2/10 33/59
+f 63/57 30/1 32/4 64/58
+f 66/60 82/61 83/62 67/63
+f 67/63 83/62 84/64 68/65
+f 68/65 84/64 85/66 69/67
+f 69/68 85/69 86/61 70/60
+f 70/60 86/61 87/62 71/63
+f 71/63 87/62 88/64 72/65
+f 72/65 88/64 89/66 73/67
+f 73/68 89/69 90/61 74/60
+f 74/60 90/61 91/62 75/63
+f 75/63 91/62 92/64 76/65
+f 76/65 92/64 93/66 77/67
+f 77/68 93/69 94/61 78/60
+f 78/60 94/61 95/62 79/63
+f 80/65 96/64 65/66 81/67
+f 79/63 95/62 96/64 80/65
+f 65/69 33/55 50/56 82/61
+f 82/61 50/56 51/57 83/62
+f 83/62 51/57 52/58 84/64
+f 84/64 52/58 53/59 85/66
+f 85/69 53/55 54/56 86/61
+f 86/61 54/56 55/57 87/62
+f 87/62 55/57 56/58 88/64
+f 88/64 56/58 57/59 89/66
+f 89/69 57/55 58/56 90/61
+f 90/61 58/56 59/57 91/62
+f 91/62 59/57 60/58 92/64
+f 92/64 60/58 61/59 93/66
+f 93/69 61/55 62/56 94/61
+f 94/61 62/56 63/57 95/62
+f 96/64 64/58 33/59 65/66
+f 95/62 63/57 64/58 96/64
+f 1/21 49/70 34/71 3/19
+f 3/19 34/71 35/72 5/17
+f 5/17 35/72 36/73 7/16
+f 7/16 36/73 37/74 9/23
+f 9/21 37/70 38/71 11/19
+f 11/19 38/71 39/72 13/17
+f 13/17 39/72 40/73 15/16
+f 15/16 40/73 41/74 17/23
+f 17/21 41/70 42/71 19/19
+f 19/19 42/71 43/72 21/17
+f 21/17 43/72 44/73 23/16
+f 23/16 44/73 45/74 25/23
+f 25/21 45/70 46/71 27/19
+f 27/19 46/71 47/72 29/17
+f 31/16 48/73 49/74 1/23
+f 29/17 47/72 48/73 31/16
+f 49/70 81/68 66/60 34/71
+f 34/71 66/60 67/63 35/72
+f 35/72 67/63 68/65 36/73
+f 36/73 68/65 69/67 37/74
+f 37/70 69/68 70/60 38/71
+f 38/71 70/60 71/63 39/72
+f 39/72 71/63 72/65 40/73
+f 40/73 72/65 73/67 41/74
+f 41/70 73/68 74/60 42/71
+f 42/71 74/60 75/63 43/72
+f 43/72 75/63 76/65 44/73
+f 44/73 76/65 77/67 45/74
+f 45/70 77/68 78/60 46/71
+f 46/71 78/60 79/63 47/72
+f 48/73 80/65 81/67 49/74
+f 47/72 79/63 80/65 48/73
+f 65/69 82/61 66/60 81/68
+f 129/75 146/76 100/77 98/78
+f 146/76 147/79 102/80 100/77
+f 147/79 148/81 104/82 102/80
+f 148/81 149/83 106/84 104/82
+f 149/75 150/76 108/77 106/78
+f 150/76 151/79 110/80 108/77
+f 151/79 152/81 112/82 110/80
+f 152/81 153/83 114/84 112/82
+f 153/75 154/76 116/77 114/78
+f 154/76 155/79 118/80 116/77
+f 155/79 156/81 120/82 118/80
+f 156/81 157/83 122/84 120/82
+f 157/75 158/76 124/77 122/78
+f 158/76 159/79 126/80 124/77
+f 160/81 129/83 98/84 128/82
+f 159/79 160/81 128/82 126/80
+f 97/85 99/86 130/87 145/88
+f 99/86 101/89 131/90 130/87
+f 101/89 103/91 132/92 131/90
+f 103/91 105/93 133/94 132/92
+f 105/85 107/86 134/87 133/88
+f 107/86 109/89 135/90 134/87
+f 109/89 111/91 136/92 135/90
+f 111/91 113/93 137/94 136/92
+f 113/85 115/86 138/87 137/88
+f 115/86 117/89 139/90 138/87
+f 117/89 119/91 140/92 139/90
+f 119/91 121/93 141/94 140/92
+f 121/85 123/86 142/87 141/88
+f 123/86 125/89 143/90 142/87
+f 127/91 97/93 145/94 144/92
+f 125/89 127/91 144/92 143/90
diff --git a/cottages/models/cottages_barrel_lying.obj b/cottages/models/cottages_barrel_lying.obj
new file mode 100644
index 0000000..dadb7b1
--- /dev/null
+++ b/cottages/models/cottages_barrel_lying.obj
@@ -0,0 +1,543 @@
+# Blender v2.69 (sub 0) OBJ File: 'barrel.blend'
+# www.blender.org
+o Cylinder
+v 0.500001 0.092835 -0.466712
+v -0.500000 0.092835 -0.466712
+v 0.500001 0.264371 -0.395660
+v -0.500000 0.264371 -0.395660
+v 0.500001 0.395660 -0.264371
+v -0.500000 0.395660 -0.264371
+v 0.500001 0.466712 -0.092835
+v -0.500000 0.466713 -0.092835
+v 0.500001 0.466712 0.092835
+v -0.500000 0.466713 0.092835
+v 0.500001 0.395660 0.264371
+v -0.500000 0.395660 0.264371
+v 0.500001 0.264371 0.395660
+v -0.500000 0.264371 0.395660
+v 0.500001 0.092835 0.466712
+v -0.500000 0.092835 0.466712
+v 0.500001 -0.092835 0.466712
+v -0.500000 -0.092835 0.466712
+v 0.500001 -0.264371 0.395660
+v -0.500000 -0.264371 0.395660
+v 0.500001 -0.395660 0.264372
+v -0.500000 -0.395660 0.264371
+v 0.500001 -0.466713 0.092835
+v -0.500000 -0.466712 0.092835
+v 0.500001 -0.466713 -0.092835
+v -0.500000 -0.466712 -0.092835
+v 0.500001 -0.395660 -0.264371
+v -0.500000 -0.395660 -0.264372
+v 0.500001 -0.264371 -0.395660
+v -0.500000 -0.264371 -0.395660
+v 0.500001 -0.092835 -0.466712
+v -0.500000 -0.092835 -0.466713
+v -0.413334 0.095930 -0.482270
+v 0.413335 0.273184 -0.408849
+v 0.413335 0.408849 -0.273184
+v 0.413335 0.482270 -0.095929
+v 0.413335 0.482270 0.095930
+v 0.413334 0.408849 0.273184
+v 0.413334 0.273184 0.408849
+v 0.413334 0.095929 0.482270
+v 0.413334 -0.095930 0.482270
+v 0.413334 -0.273184 0.408849
+v 0.413334 -0.408849 0.273184
+v 0.413334 -0.482270 0.095930
+v 0.413334 -0.482270 -0.095929
+v 0.413334 -0.408849 -0.273184
+v 0.413334 -0.273184 -0.408849
+v 0.413335 -0.095929 -0.482270
+v 0.413335 0.095929 -0.482270
+v -0.413334 0.273184 -0.408849
+v -0.413334 0.408849 -0.273184
+v -0.413334 0.482270 -0.095929
+v -0.413334 0.482270 0.095929
+v -0.413334 0.408849 0.273184
+v -0.413334 0.273184 0.408849
+v -0.413334 0.095930 0.482270
+v -0.413334 -0.095929 0.482270
+v -0.413334 -0.273184 0.408849
+v -0.413334 -0.408849 0.273184
+v -0.413334 -0.482270 0.095929
+v -0.413334 -0.482270 -0.095930
+v -0.413334 -0.408849 -0.273184
+v -0.413334 -0.273184 -0.408849
+v -0.413334 -0.095929 -0.482270
+v -0.114830 0.099128 -0.498352
+v 0.114831 0.282294 -0.422482
+v 0.114831 0.422482 -0.282293
+v 0.114831 0.498352 -0.099128
+v 0.114831 0.498352 0.099128
+v 0.114831 0.422482 0.282294
+v 0.114831 0.282294 0.422482
+v 0.114831 0.099128 0.498352
+v 0.114831 -0.099128 0.498352
+v 0.114831 -0.282294 0.422482
+v 0.114831 -0.422482 0.282294
+v 0.114831 -0.498352 0.099128
+v 0.114831 -0.498352 -0.099128
+v 0.114831 -0.422482 -0.282294
+v 0.114831 -0.282293 -0.422482
+v 0.114831 -0.099128 -0.498352
+v 0.114831 0.099128 -0.498352
+v -0.114830 0.282294 -0.422482
+v -0.114830 0.422482 -0.282294
+v -0.114830 0.498352 -0.099128
+v -0.114830 0.498352 0.099128
+v -0.114830 0.422482 0.282294
+v -0.114830 0.282294 0.422482
+v -0.114830 0.099128 0.498352
+v -0.114830 -0.099128 0.498352
+v -0.114830 -0.282293 0.422482
+v -0.114830 -0.422482 0.282294
+v -0.114830 -0.498352 0.099128
+v -0.114830 -0.498352 -0.099128
+v -0.114830 -0.422482 -0.282294
+v -0.114830 -0.282293 -0.422482
+v -0.114830 -0.099128 -0.498352
+v 0.500001 0.083551 -0.420041
+v -0.500000 0.083552 -0.420041
+v 0.500001 0.237934 -0.356094
+v -0.500000 0.237934 -0.356094
+v 0.500001 0.356094 -0.237934
+v -0.500000 0.356094 -0.237934
+v 0.500001 0.420041 -0.083551
+v -0.500000 0.420041 -0.083551
+v 0.500001 0.420041 0.083552
+v -0.500000 0.420041 0.083551
+v 0.500001 0.356094 0.237934
+v -0.500000 0.356094 0.237934
+v 0.500001 0.237934 0.356094
+v -0.500000 0.237934 0.356094
+v 0.500001 0.083551 0.420041
+v -0.500000 0.083551 0.420041
+v 0.500001 -0.083551 0.420041
+v -0.500000 -0.083551 0.420041
+v 0.500001 -0.237934 0.356094
+v -0.500000 -0.237934 0.356094
+v 0.500001 -0.356094 0.237934
+v -0.500000 -0.356094 0.237934
+v 0.500001 -0.420041 0.083551
+v -0.500000 -0.420041 0.083551
+v 0.500001 -0.420041 -0.083551
+v -0.500000 -0.420041 -0.083552
+v 0.500001 -0.356094 -0.237934
+v -0.500000 -0.356094 -0.237934
+v 0.500001 -0.237934 -0.356094
+v -0.500000 -0.237934 -0.356094
+v 0.500001 -0.083551 -0.420041
+v -0.500000 -0.083551 -0.420041
+v -0.413334 0.086337 -0.434043
+v 0.413335 0.245866 -0.367964
+v 0.413335 0.367964 -0.245865
+v 0.413335 0.434043 -0.086336
+v 0.413335 0.434043 0.086337
+v 0.413335 0.367964 0.245866
+v 0.413335 0.245866 0.367964
+v 0.413334 0.086336 0.434043
+v 0.413334 -0.086337 0.434043
+v 0.413334 -0.245866 0.367964
+v 0.413334 -0.367964 0.245866
+v 0.413334 -0.434043 0.086337
+v 0.413334 -0.434043 -0.086337
+v 0.413334 -0.367964 -0.245866
+v 0.413335 -0.245865 -0.367964
+v 0.413335 -0.086336 -0.434043
+v 0.413335 0.086336 -0.434043
+v -0.413334 0.245866 -0.367964
+v -0.413334 0.367964 -0.245866
+v -0.413334 0.434043 -0.086337
+v -0.413334 0.434043 0.086337
+v -0.413334 0.367964 0.245866
+v -0.413334 0.245866 0.367964
+v -0.413334 0.086337 0.434043
+v -0.413334 -0.086336 0.434043
+v -0.413334 -0.245865 0.367964
+v -0.413334 -0.367964 0.245866
+v -0.413334 -0.434043 0.086337
+v -0.413334 -0.434043 -0.086337
+v -0.413334 -0.367964 -0.245866
+v -0.413334 -0.245865 -0.367964
+v -0.413334 -0.086336 -0.434043
+v -0.114830 0.089216 -0.448517
+v 0.114831 0.254064 -0.380234
+v 0.114831 0.380234 -0.254064
+v 0.114831 0.448517 -0.089215
+v 0.114831 0.448517 0.089216
+v 0.114831 0.380234 0.254064
+v 0.114831 0.254064 0.380234
+v 0.114831 0.089215 0.448517
+v 0.114831 -0.089215 0.448517
+v 0.114831 -0.254064 0.380234
+v 0.114831 -0.380234 0.254064
+v 0.114831 -0.448517 0.089216
+v 0.114831 -0.448517 -0.089216
+v 0.114831 -0.380234 -0.254064
+v 0.114831 -0.254064 -0.380234
+v 0.114831 -0.089215 -0.448517
+v 0.114831 0.089216 -0.448517
+v -0.114830 0.254064 -0.380234
+v -0.114830 0.380234 -0.254064
+v -0.114830 0.448517 -0.089215
+v -0.114830 0.448517 0.089216
+v -0.114830 0.380234 0.254064
+v -0.114830 0.254064 0.380234
+v -0.114830 0.089216 0.448517
+v -0.114830 -0.089215 0.448517
+v -0.114830 -0.254064 0.380234
+v -0.114830 -0.380234 0.254064
+v -0.114830 -0.448517 0.089216
+v -0.114830 -0.448517 -0.089216
+v -0.114830 -0.380234 -0.254064
+v -0.114830 -0.254064 -0.380234
+v -0.114830 -0.089215 -0.448517
+v 0.352645 0.087776 -0.441280
+v 0.352645 -0.087776 -0.441280
+v 0.352645 -0.249965 -0.374099
+v 0.352645 -0.374099 -0.249965
+v 0.352645 -0.441280 -0.087776
+v 0.352645 -0.441280 0.087776
+v 0.352645 -0.374099 0.249965
+v 0.352645 -0.249965 0.374099
+v 0.352645 -0.087776 0.441280
+v 0.352645 0.087776 0.441280
+v 0.352645 0.249965 0.374099
+v 0.352645 0.374099 0.249965
+v 0.352645 0.441280 0.087776
+v 0.352645 0.441280 -0.087776
+v 0.352645 0.374099 -0.249965
+v 0.352645 0.249965 -0.374099
+v 0.352645 -0.000000 0.000000
+v 0.413334 -0.000000 0.000000
+vt 0.211538 0.442308
+vt 0.211538 0.467949
+vt 0.108974 0.467949
+vt 0.108974 0.442308
+vt 0.314103 0.442308
+vt 0.314103 0.467949
+vt 0.416667 0.442308
+vt 0.416667 0.467949
+vt 0.006410 0.467949
+vt 0.006410 0.442308
+vt 0.211792 0.993590
+vt 0.117562 0.954728
+vt 0.262789 0.738327
+vt 0.211538 0.006410
+vt 0.108974 0.006410
+vt 0.108974 0.032051
+vt 0.211538 0.032051
+vt 0.314103 0.006410
+vt 0.314103 0.032051
+vt 0.416667 0.006410
+vt 0.416667 0.032051
+vt 0.006410 0.006410
+vt 0.006410 0.032051
+vt 0.211361 0.993526
+vt 0.117394 0.954505
+vt 0.262040 0.737637
+vt 0.045447 0.882467
+vt 0.006475 0.788381
+vt 0.006410 0.686569
+vt 0.045263 0.592532
+vt 0.117118 0.520586
+vt 0.204627 0.488094
+vt 0.312719 0.481748
+vt 0.406687 0.520769
+vt 0.478633 0.592807
+vt 0.517605 0.686893
+vt 0.517670 0.788705
+vt 0.478816 0.882742
+vt 0.406962 0.954687
+vt 0.313044 0.993590
+vt 0.045441 0.882922
+vt 0.006410 0.789102
+vt 0.006410 0.687551
+vt 0.045442 0.593732
+vt 0.117562 0.521925
+vt 0.211793 0.483064
+vt 0.313787 0.483064
+vt 0.408016 0.521926
+vt 0.480136 0.593732
+vt 0.519168 0.687551
+vt 0.519168 0.789103
+vt 0.480136 0.882922
+vt 0.408016 0.954728
+vt 0.313786 0.993590
+vt 0.416667 0.397436
+vt 0.314103 0.397436
+vt 0.211538 0.397436
+vt 0.108974 0.397436
+vt 0.006410 0.397436
+vt 0.314103 0.185897
+vt 0.314103 0.282051
+vt 0.211538 0.282051
+vt 0.211538 0.185897
+vt 0.108974 0.282051
+vt 0.108974 0.185897
+vt 0.006410 0.282051
+vt 0.006410 0.185897
+vt 0.416667 0.185897
+vt 0.416667 0.282051
+vt 0.416667 0.076923
+vt 0.314103 0.076923
+vt 0.211538 0.076923
+vt 0.108974 0.076923
+vt 0.006410 0.076923
+vt 0.429487 0.397436
+vt 0.532051 0.397436
+vt 0.532051 0.442308
+vt 0.429487 0.442308
+vt 0.634615 0.397436
+vt 0.634615 0.442308
+vt 0.737179 0.397436
+vt 0.737179 0.442308
+vt 0.839744 0.397436
+vt 0.839744 0.442308
+vt 0.532051 0.185897
+vt 0.634615 0.185897
+vt 0.634615 0.282051
+vt 0.532051 0.282051
+vt 0.737179 0.185897
+vt 0.737179 0.282051
+vt 0.839744 0.185897
+vt 0.839744 0.282051
+vt 0.429487 0.185897
+vt 0.429487 0.282051
+vt 0.429487 0.032051
+vt 0.532051 0.032051
+vt 0.532051 0.076923
+vt 0.429487 0.076923
+vt 0.634615 0.032051
+vt 0.634615 0.076923
+vt 0.737179 0.032051
+vt 0.737179 0.076923
+vt 0.839744 0.032051
+vt 0.839744 0.076923
+s off
+f 14/1 110/2 112/3 16/4
+f 12/5 108/6 110/2 14/1
+f 10/7 106/8 108/6 12/5
+f 8/4 104/3 106/9 10/10
+f 6/1 102/2 104/3 8/4
+f 4/5 100/6 102/2 6/1
+f 2/7 98/8 100/6 4/5
+f 32/4 128/3 98/9 2/10
+f 30/1 126/2 128/3 32/4
+f 28/5 124/6 126/2 30/1
+f 26/7 122/8 124/6 28/5
+f 24/4 120/3 122/9 26/10
+f 22/1 118/2 120/3 24/4
+f 20/5 116/6 118/2 22/1
+f 18/7 114/8 116/6 20/5
+f 16/4 112/3 114/9 18/10
+f 145/11 130/12 210/13
+f 13/14 15/15 111/16 109/17
+f 11/18 13/14 109/17 107/19
+f 9/20 11/18 107/19 105/21
+f 7/15 9/22 105/23 103/16
+f 5/14 7/15 103/16 101/17
+f 3/18 5/14 101/17 99/19
+f 1/20 3/18 99/19 97/21
+f 31/15 1/22 97/23 127/16
+f 29/14 31/15 127/16 125/17
+f 27/18 29/14 125/17 123/19
+f 25/20 27/18 123/19 121/21
+f 23/15 25/22 121/23 119/16
+f 21/14 23/15 119/16 117/17
+f 19/18 21/14 117/17 115/19
+f 17/20 19/18 115/19 113/21
+f 15/15 17/22 113/23 111/16
+f 194/24 195/25 209/26
+f 195/25 196/27 209/26
+f 196/27 197/28 209/26
+f 197/28 198/29 209/26
+f 198/29 199/30 209/26
+f 199/30 200/31 209/26
+f 200/31 201/32 209/26
+f 201/32 202/33 209/26
+f 202/33 203/34 209/26
+f 203/34 204/35 209/26
+f 204/35 205/36 209/26
+f 205/36 206/37 209/26
+f 206/37 207/38 209/26
+f 207/38 208/39 209/26
+f 208/39 193/40 209/26
+f 193/40 194/24 209/26
+f 130/12 131/41 210/13
+f 131/41 132/42 210/13
+f 132/42 133/43 210/13
+f 133/43 134/44 210/13
+f 134/44 135/45 210/13
+f 135/45 136/46 210/13
+f 136/46 137/47 210/13
+f 137/47 138/48 210/13
+f 138/48 139/49 210/13
+f 139/49 140/50 210/13
+f 140/50 141/51 210/13
+f 141/51 142/52 210/13
+f 142/52 143/53 210/13
+f 143/53 144/54 210/13
+f 144/54 145/11 210/13
+s 1
+f 33/55 2/7 4/5 50/56
+f 50/56 4/5 6/1 51/57
+f 51/57 6/1 8/4 52/58
+f 52/58 8/4 10/10 53/59
+f 53/55 10/7 12/5 54/56
+f 54/56 12/5 14/1 55/57
+f 55/57 14/1 16/4 56/58
+f 56/58 16/4 18/10 57/59
+f 57/55 18/7 20/5 58/56
+f 58/56 20/5 22/1 59/57
+f 59/57 22/1 24/4 60/58
+f 60/58 24/4 26/10 61/59
+f 61/55 26/7 28/5 62/56
+f 62/56 28/5 30/1 63/57
+f 64/58 32/4 2/10 33/59
+f 63/57 30/1 32/4 64/58
+f 66/60 82/61 83/62 67/63
+f 67/63 83/62 84/64 68/65
+f 68/65 84/64 85/66 69/67
+f 69/68 85/69 86/61 70/60
+f 70/60 86/61 87/62 71/63
+f 71/63 87/62 88/64 72/65
+f 72/65 88/64 89/66 73/67
+f 73/68 89/69 90/61 74/60
+f 74/60 90/61 91/62 75/63
+f 75/63 91/62 92/64 76/65
+f 76/65 92/64 93/66 77/67
+f 77/68 93/69 94/61 78/60
+f 78/60 94/61 95/62 79/63
+f 80/65 96/64 65/66 81/67
+f 79/63 95/62 96/64 80/65
+f 65/69 33/55 50/56 82/61
+f 82/61 50/56 51/57 83/62
+f 83/62 51/57 52/58 84/64
+f 84/64 52/58 53/59 85/66
+f 85/69 53/55 54/56 86/61
+f 86/61 54/56 55/57 87/62
+f 87/62 55/57 56/58 88/64
+f 88/64 56/58 57/59 89/66
+f 89/69 57/55 58/56 90/61
+f 90/61 58/56 59/57 91/62
+f 91/62 59/57 60/58 92/64
+f 92/64 60/58 61/59 93/66
+f 93/69 61/55 62/56 94/61
+f 94/61 62/56 63/57 95/62
+f 96/64 64/58 33/59 65/66
+f 95/62 63/57 64/58 96/64
+f 1/21 49/70 34/71 3/19
+f 3/19 34/71 35/72 5/17
+f 5/17 35/72 36/73 7/16
+f 7/16 36/73 37/74 9/23
+f 9/21 37/70 38/71 11/19
+f 11/19 38/71 39/72 13/17
+f 13/17 39/72 40/73 15/16
+f 15/16 40/73 41/74 17/23
+f 17/21 41/70 42/71 19/19
+f 19/19 42/71 43/72 21/17
+f 21/17 43/72 44/73 23/16
+f 23/16 44/73 45/74 25/23
+f 25/21 45/70 46/71 27/19
+f 27/19 46/71 47/72 29/17
+f 31/16 48/73 49/74 1/23
+f 29/17 47/72 48/73 31/16
+f 49/70 81/68 66/60 34/71
+f 34/71 66/60 67/63 35/72
+f 35/72 67/63 68/65 36/73
+f 36/73 68/65 69/67 37/74
+f 37/70 69/68 70/60 38/71
+f 38/71 70/60 71/63 39/72
+f 39/72 71/63 72/65 40/73
+f 40/73 72/65 73/67 41/74
+f 41/70 73/68 74/60 42/71
+f 42/71 74/60 75/63 43/72
+f 43/72 75/63 76/65 44/73
+f 44/73 76/65 77/67 45/74
+f 45/70 77/68 78/60 46/71
+f 46/71 78/60 79/63 47/72
+f 48/73 80/65 81/67 49/74
+f 47/72 79/63 80/65 48/73
+f 65/69 82/61 66/60 81/68
+f 129/75 146/76 100/77 98/78
+f 146/76 147/79 102/80 100/77
+f 147/79 148/81 104/82 102/80
+f 148/81 149/83 106/84 104/82
+f 149/75 150/76 108/77 106/78
+f 150/76 151/79 110/80 108/77
+f 151/79 152/81 112/82 110/80
+f 152/81 153/83 114/84 112/82
+f 153/75 154/76 116/77 114/78
+f 154/76 155/79 118/80 116/77
+f 155/79 156/81 120/82 118/80
+f 156/81 157/83 122/84 120/82
+f 157/75 158/76 124/77 122/78
+f 158/76 159/79 126/80 124/77
+f 160/81 129/83 98/84 128/82
+f 159/79 160/81 128/82 126/80
+f 162/85 163/86 179/87 178/88
+f 163/86 164/89 180/90 179/87
+f 164/89 165/91 181/92 180/90
+f 165/93 166/85 182/88 181/94
+f 166/85 167/86 183/87 182/88
+f 167/86 168/89 184/90 183/87
+f 168/89 169/91 185/92 184/90
+f 169/93 170/85 186/88 185/94
+f 170/85 171/86 187/87 186/88
+f 171/86 172/89 188/90 187/87
+f 172/89 173/91 189/92 188/90
+f 173/93 174/85 190/88 189/94
+f 174/85 175/86 191/87 190/88
+f 176/89 177/91 161/92 192/90
+f 175/86 176/89 192/90 191/87
+f 161/94 178/88 146/76 129/75
+f 178/88 179/87 147/79 146/76
+f 179/87 180/90 148/81 147/79
+f 180/90 181/92 149/83 148/81
+f 181/94 182/88 150/76 149/75
+f 182/88 183/87 151/79 150/76
+f 183/87 184/90 152/81 151/79
+f 184/90 185/92 153/83 152/81
+f 185/94 186/88 154/76 153/75
+f 186/88 187/87 155/79 154/76
+f 187/87 188/90 156/81 155/79
+f 188/90 189/92 157/83 156/81
+f 189/94 190/88 158/76 157/75
+f 190/88 191/87 159/79 158/76
+f 192/90 161/92 129/83 160/81
+f 191/87 192/90 160/81 159/79
+f 97/95 99/96 130/97 145/98
+f 99/96 101/99 131/100 130/97
+f 101/99 103/101 132/102 131/100
+f 103/101 105/103 133/104 132/102
+f 105/95 107/96 134/97 133/98
+f 107/96 109/99 135/100 134/97
+f 109/99 111/101 136/102 135/100
+f 111/101 113/103 137/104 136/102
+f 113/95 115/96 138/97 137/98
+f 115/96 117/99 139/100 138/97
+f 117/99 119/101 140/102 139/100
+f 119/101 121/103 141/104 140/102
+f 121/95 123/96 142/97 141/98
+f 123/96 125/99 143/100 142/97
+f 127/101 97/103 145/104 144/102
+f 125/99 127/101 144/102 143/100
+f 193/98 208/97 162/85 177/93
+f 208/97 207/100 163/86 162/85
+f 207/100 206/102 164/89 163/86
+f 206/102 205/104 165/91 164/89
+f 205/98 204/97 166/85 165/93
+f 204/97 203/100 167/86 166/85
+f 203/100 202/102 168/89 167/86
+f 202/102 201/104 169/91 168/89
+f 201/98 200/97 170/85 169/93
+f 200/97 199/100 171/86 170/85
+f 199/100 198/102 172/89 171/86
+f 198/102 197/104 173/91 172/89
+f 197/98 196/97 174/85 173/93
+f 196/97 195/100 175/86 174/85
+f 194/102 193/104 177/91 176/89
+f 195/100 194/102 176/89 175/86
+f 161/94 177/93 162/85 178/88
diff --git a/cottages/models/cottages_handmill.obj b/cottages/models/cottages_handmill.obj
new file mode 100644
index 0000000..d7ba999
--- /dev/null
+++ b/cottages/models/cottages_handmill.obj
@@ -0,0 +1,376 @@
+# Blender v2.69 (sub 0) OBJ File: 'handmill.blend'
+# www.blender.org
+o Cylinder.002
+v -0.047835 -0.281250 0.115485
+v -0.047835 -0.250000 0.115485
+v -0.115485 -0.281250 0.047835
+v -0.115485 -0.250000 0.047835
+v -0.115485 -0.281250 -0.047835
+v -0.115485 -0.250000 -0.047835
+v -0.047835 -0.281250 -0.115485
+v -0.047835 -0.250000 -0.115485
+v 0.047835 -0.281250 -0.115485
+v 0.047835 -0.250000 -0.115485
+v 0.115485 -0.281250 -0.047835
+v 0.115485 -0.250000 -0.047835
+v 0.115485 -0.281250 0.047835
+v 0.115485 -0.250000 0.047835
+v 0.047835 -0.281250 0.115485
+v 0.047835 -0.250000 0.115485
+v -0.047835 -0.062500 0.115485
+v -0.047835 0.000000 0.115485
+v -0.115485 -0.062500 0.047835
+v -0.115485 0.000000 0.047835
+v -0.115485 -0.062500 -0.047835
+v -0.115485 0.000000 -0.047835
+v -0.047835 -0.062500 -0.115485
+v -0.047835 0.000000 -0.115485
+v 0.047835 -0.062500 -0.115485
+v 0.047835 0.000000 -0.115485
+v 0.115485 -0.062500 -0.047835
+v 0.115485 0.000000 -0.047835
+v 0.115485 -0.062500 0.047835
+v 0.115485 0.000000 0.047835
+v 0.047835 -0.062500 0.115485
+v 0.047835 0.000000 0.115485
+v 0.272957 -0.062500 -0.239132
+v 0.272957 0.187500 -0.239132
+v 0.239133 -0.062500 -0.272957
+v 0.239133 0.187500 -0.272957
+v 0.239133 -0.062500 -0.320793
+v 0.239133 0.187500 -0.320793
+v 0.272957 -0.062500 -0.354617
+v 0.272957 0.187500 -0.354617
+v 0.320793 -0.062500 -0.354617
+v 0.320793 0.187500 -0.354617
+v 0.354618 -0.062500 -0.320793
+v 0.354618 0.187500 -0.320793
+v 0.354618 -0.062500 -0.272957
+v 0.354618 0.187500 -0.272957
+v 0.320793 -0.062500 -0.239132
+v 0.320793 0.187500 -0.239132
+v 0.272957 0.187500 -0.239132
+v 0.239133 0.187500 -0.272957
+v 0.239133 0.187500 -0.320793
+v 0.272957 0.187500 -0.354617
+v 0.320793 0.187500 -0.354617
+v 0.354618 0.187500 -0.320793
+v 0.354618 0.187500 -0.272957
+v 0.320793 0.187500 -0.239132
+v -0.097545 -0.062500 0.490393
+v -0.097545 -0.250000 0.490393
+v -0.097545 -0.500000 0.490393
+v -0.097545 -0.281250 0.490393
+v -0.277785 -0.500000 0.415735
+v -0.277785 -0.281250 0.415735
+v -0.415735 -0.500000 0.277785
+v -0.415735 -0.281250 0.277785
+v -0.490393 -0.500000 0.097545
+v -0.490393 -0.281250 0.097545
+v -0.490393 -0.500000 -0.097545
+v -0.490393 -0.281250 -0.097545
+v -0.415735 -0.500000 -0.277785
+v -0.415735 -0.281250 -0.277785
+v -0.277785 -0.500000 -0.415735
+v -0.277785 -0.281250 -0.415735
+v -0.097545 -0.500000 -0.490393
+v -0.097545 -0.281250 -0.490393
+v 0.097545 -0.500000 -0.490393
+v 0.097545 -0.281250 -0.490393
+v 0.277785 -0.500000 -0.415735
+v 0.277785 -0.281250 -0.415735
+v 0.415735 -0.500000 -0.277785
+v 0.415735 -0.281250 -0.277785
+v 0.490393 -0.500000 -0.097545
+v 0.490393 -0.281250 -0.097545
+v 0.490393 -0.500000 0.097545
+v 0.490393 -0.281250 0.097545
+v 0.415735 -0.500000 0.277785
+v 0.415735 -0.281250 0.277785
+v 0.277785 -0.500000 0.415735
+v 0.277785 -0.281250 0.415735
+v 0.097545 -0.500000 0.490393
+v 0.097545 -0.281250 0.490393
+v -0.277785 -0.250000 0.415735
+v -0.277785 -0.062500 0.415735
+v -0.415735 -0.250000 0.277785
+v -0.415735 -0.062500 0.277785
+v -0.490393 -0.250000 0.097545
+v -0.490393 -0.062500 0.097545
+v -0.490393 -0.250000 -0.097545
+v -0.490393 -0.062500 -0.097545
+v -0.415735 -0.250000 -0.277785
+v -0.415735 -0.062500 -0.277785
+v -0.277785 -0.250000 -0.415735
+v -0.277785 -0.062500 -0.415735
+v -0.097545 -0.250000 -0.490393
+v -0.097545 -0.062500 -0.490393
+v 0.097545 -0.250000 -0.490393
+v 0.097545 -0.062500 -0.490393
+v 0.277785 -0.250000 -0.415735
+v 0.277785 -0.062500 -0.415735
+v 0.415735 -0.250000 -0.277785
+v 0.415735 -0.062500 -0.277785
+v 0.490393 -0.250000 -0.097545
+v 0.490393 -0.062500 -0.097545
+v 0.490393 -0.250000 0.097545
+v 0.490393 -0.062500 0.097545
+v 0.415735 -0.250000 0.277785
+v 0.415735 -0.062500 0.277785
+v 0.277785 -0.250000 0.415735
+v 0.277785 -0.062500 0.415735
+v 0.097545 -0.250000 0.490393
+v 0.097545 -0.062500 0.490393
+v 0.296875 0.187500 -0.296875
+v -0.000000 -0.250000 0.000000
+v 0.000000 -0.281250 0.000000
+v 0.000000 -0.062500 0.000000
+v -0.000000 -0.500000 0.000000
+v -0.047835 0.000000 0.115485
+v -0.115485 0.000000 0.047835
+v -0.115485 0.000000 -0.047835
+v -0.047835 0.000000 -0.115485
+v 0.047835 0.000000 -0.115485
+v 0.115485 0.000000 -0.047835
+v 0.115485 0.000000 0.047835
+v 0.047835 0.000000 0.115485
+v 0.000000 0.000000 -0.000000
+vt 0.500000 0.812500
+vt 0.500000 0.875000
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.250000 0.875000
+vt 0.250000 0.812500
+vt 0.125000 0.875000
+vt 0.125000 0.812500
+vt 0.000000 0.875000
+vt 0.000000 0.812500
+vt 1.000000 0.812500
+vt 1.000000 0.875000
+vt 0.875000 0.875000
+vt 0.875000 0.812500
+vt 0.750000 0.875000
+vt 0.750000 0.812500
+vt 0.625000 0.812500
+vt 0.625000 0.875000
+vt 0.500000 0.937500
+vt 0.500000 1.000000
+vt 0.375000 1.000000
+vt 0.375000 0.937500
+vt 0.250000 1.000000
+vt 0.250000 0.937500
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.937500
+vt 0.750000 1.000000
+vt 0.750000 0.937500
+vt 0.625000 0.937500
+vt 0.625000 1.000000
+vt 0.125000 0.963388
+vt 0.088388 1.000000
+vt 0.062500 0.937500
+vt 0.250000 0.437500
+vt 0.250000 0.750000
+vt 0.187500 0.750000
+vt 0.187500 0.437500
+vt 0.125000 0.750000
+vt 0.125000 0.437500
+vt 0.062500 0.750000
+vt 0.062500 0.437500
+vt 0.000000 0.750000
+vt 0.000000 0.437500
+vt 0.500000 0.437500
+vt 0.500000 0.750000
+vt 0.437500 0.750000
+vt 0.437500 0.437500
+vt 0.375000 0.750000
+vt 0.375000 0.437500
+vt 0.312500 0.437500
+vt 0.312500 0.750000
+vt 0.599456 1.000000
+vt 0.783227 0.923879
+vt 0.500000 0.500000
+vt 0.750000 0.250000
+vt 0.750000 0.437500
+vt 0.500000 0.250000
+vt 0.000000 0.250000
+vt 0.000000 0.000000
+vt 0.250000 0.000000
+vt 0.250000 0.250000
+vt 1.000000 0.250000
+vt 1.000000 0.437500
+vt 0.500000 0.000000
+vt 0.750000 0.000000
+vt 1.000000 0.000000
+vt 0.036612 1.000000
+vt 0.000000 0.963388
+vt 0.000000 0.911612
+vt 0.036612 0.875000
+vt 0.088388 0.875000
+vt 0.125000 0.911612
+vt 0.923880 0.783227
+vt 1.000000 0.599456
+vt 1.000000 0.400544
+vt 0.923880 0.216773
+vt 0.783227 0.076120
+vt 0.599456 -0.000000
+vt 0.400544 -0.000000
+vt 0.216773 0.076120
+vt 0.076121 0.216773
+vt 0.000000 0.400544
+vt 0.000000 0.599456
+vt 0.076121 0.783227
+vt 0.216773 0.923880
+vt 0.400544 1.000000
+vt 0.076120 0.783227
+vt 0.076120 0.216773
+vt 0.551777 0.375000
+vt 0.625000 0.448223
+vt 0.625000 0.551777
+vt 0.551777 0.625000
+vt 0.448223 0.625000
+vt 0.375000 0.551777
+vt 0.375000 0.448223
+vt 0.448223 0.375000
+s off
+f 1/1 2/2 4/3 3/4
+f 3/4 4/3 6/5 5/6
+f 5/6 6/5 8/7 7/8
+f 7/8 8/7 10/9 9/10
+f 9/11 10/12 12/13 11/14
+f 11/14 12/13 14/15 13/16
+f 15/17 16/18 2/2 1/1
+f 13/16 14/15 16/18 15/17
+f 17/19 18/20 20/21 19/22
+f 19/22 20/21 22/23 21/24
+f 21/24 22/23 24/25 23/26
+f 23/26 24/25 26/27 25/28
+f 25/29 26/30 28/31 27/32
+f 27/32 28/31 30/33 29/34
+f 31/35 32/36 18/20 17/19
+f 29/34 30/33 32/36 31/35
+f 50/37 49/38 121/39
+f 33/40 34/41 36/42 35/43
+f 35/43 36/42 38/44 37/45
+f 37/45 38/44 40/46 39/47
+f 39/47 40/46 42/48 41/49
+f 41/50 42/51 44/52 43/53
+f 43/53 44/52 46/54 45/55
+f 47/56 48/57 34/41 33/40
+f 45/55 46/54 48/57 47/56
+f 58/58 91/59 122/60
+f 115/61 116/62 118/50 117/63
+f 59/64 60/65 62/66 61/67
+f 113/68 114/69 116/62 115/61
+f 61/67 62/66 64/70 63/63
+f 111/67 112/40 114/49 113/64
+f 63/63 64/70 66/71 65/61
+f 109/63 110/50 112/40 111/67
+f 65/61 66/71 68/72 67/68
+f 107/61 108/62 110/50 109/63
+f 67/64 68/65 70/66 69/67
+f 105/68 106/69 108/62 107/61
+f 69/67 70/66 72/70 71/63
+f 103/67 104/40 106/49 105/64
+f 71/63 72/70 74/71 73/61
+f 101/63 102/50 104/40 103/67
+f 73/61 74/71 76/72 75/68
+f 99/61 100/62 102/50 101/63
+f 75/64 76/65 78/66 77/67
+f 97/68 98/69 100/62 99/61
+f 77/67 78/66 80/70 79/63
+f 95/67 96/40 98/49 97/64
+f 79/63 80/70 82/71 81/61
+f 62/59 60/58 123/60
+f 93/63 94/50 96/40 95/67
+f 81/61 82/71 84/72 83/68
+f 117/63 118/50 120/40 119/67
+f 91/61 92/62 94/50 93/63
+f 83/64 84/65 86/66 85/67
+f 119/67 120/40 57/49 58/64
+f 58/68 57/69 92/62 91/61
+f 85/67 86/66 88/70 87/63
+f 92/59 57/58 124/60
+f 89/61 90/71 60/72 59/68
+f 87/63 88/70 90/71 89/61
+f 59/58 61/59 125/60
+f 49/38 56/73 121/39
+f 56/73 55/74 121/39
+f 55/74 54/75 121/39
+f 54/75 53/76 121/39
+f 53/76 52/77 121/39
+f 52/77 51/78 121/39
+f 51/78 50/37 121/39
+f 91/59 93/79 122/60
+f 93/79 95/80 122/60
+f 95/80 97/81 122/60
+f 97/81 99/82 122/60
+f 99/82 101/83 122/60
+f 101/83 103/84 122/60
+f 103/84 105/85 122/60
+f 105/85 107/86 122/60
+f 107/86 109/87 122/60
+f 109/87 111/88 122/60
+f 111/88 113/89 122/60
+f 113/89 115/90 122/60
+f 115/90 117/91 122/60
+f 117/91 119/92 122/60
+f 119/92 58/58 122/60
+f 60/58 90/92 123/60
+f 90/92 88/91 123/60
+f 88/91 86/90 123/60
+f 86/90 84/89 123/60
+f 84/89 82/88 123/60
+f 82/88 80/87 123/60
+f 80/87 78/86 123/60
+f 78/86 76/85 123/60
+f 76/85 74/84 123/60
+f 74/84 72/83 123/60
+f 72/83 70/82 123/60
+f 70/82 68/81 123/60
+f 68/81 66/80 123/60
+f 66/80 64/79 123/60
+f 64/79 62/59 123/60
+f 57/58 120/92 124/60
+f 120/92 118/91 124/60
+f 118/91 116/93 124/60
+f 116/93 114/89 124/60
+f 114/89 112/88 124/60
+f 112/88 110/94 124/60
+f 110/94 108/86 124/60
+f 108/86 106/85 124/60
+f 106/85 104/84 124/60
+f 104/84 102/83 124/60
+f 102/83 100/82 124/60
+f 100/82 98/81 124/60
+f 98/81 96/80 124/60
+f 96/80 94/79 124/60
+f 94/79 92/59 124/60
+f 61/59 63/79 125/60
+f 63/79 65/80 125/60
+f 65/80 67/81 125/60
+f 67/81 69/82 125/60
+f 69/82 71/83 125/60
+f 71/83 73/84 125/60
+f 73/84 75/85 125/60
+f 75/85 77/86 125/60
+f 77/86 79/94 125/60
+f 79/94 81/88 125/60
+f 81/88 83/89 125/60
+f 83/89 85/93 125/60
+f 85/93 87/91 125/60
+f 87/91 89/92 125/60
+f 89/92 59/58 125/60
+f 127/95 126/96 134/60
+f 126/96 133/97 134/60
+f 133/97 132/98 134/60
+f 132/98 131/99 134/60
+f 131/99 130/100 134/60
+f 130/100 129/101 134/60
+f 129/101 128/102 134/60
+f 134/60 128/102 127/95
diff --git a/cottages/models/cottages_tub.obj b/cottages/models/cottages_tub.obj
new file mode 100644
index 0000000..6e3b04b
--- /dev/null
+++ b/cottages/models/cottages_tub.obj
@@ -0,0 +1,326 @@
+# Blender v2.69 (sub 0) OBJ File: 'cottages-tub.blend'
+# www.blender.org
+o Cylinder
+v 0.092835 -0.500001 -0.466712
+v 0.264371 -0.500001 -0.395660
+v 0.395660 -0.500001 -0.264371
+v 0.466712 -0.500001 -0.092835
+v 0.466712 -0.500001 0.092835
+v 0.395660 -0.500001 0.264371
+v 0.264371 -0.500001 0.395660
+v 0.092835 -0.500001 0.466712
+v -0.092835 -0.500001 0.466712
+v -0.264371 -0.500001 0.395660
+v -0.395660 -0.500001 0.264371
+v -0.466712 -0.500001 0.092835
+v -0.466712 -0.500001 -0.092835
+v -0.395660 -0.500001 -0.264371
+v -0.264371 -0.500001 -0.395660
+v -0.092835 -0.500001 -0.466713
+v 0.273184 -0.413334 -0.408849
+v 0.408849 -0.413334 -0.273184
+v 0.482270 -0.413334 -0.095929
+v 0.482270 -0.413334 0.095930
+v 0.408849 -0.413334 0.273184
+v 0.273184 -0.413334 0.408849
+v 0.095929 -0.413334 0.482270
+v -0.095929 -0.413334 0.482270
+v -0.273184 -0.413334 0.408849
+v -0.408849 -0.413334 0.273184
+v -0.482270 -0.413334 0.095929
+v -0.482270 -0.413334 -0.095930
+v -0.408849 -0.413334 -0.273184
+v -0.273184 -0.413334 -0.408849
+v -0.095929 -0.413334 -0.482270
+v 0.095930 -0.413334 -0.482270
+v 0.282294 -0.114831 -0.422482
+v 0.422482 -0.114831 -0.282294
+v 0.498352 -0.114831 -0.099128
+v 0.498352 -0.114831 0.099128
+v 0.422482 -0.114831 0.282294
+v 0.282294 -0.114831 0.422482
+v 0.099128 -0.114831 0.498352
+v -0.099128 -0.114831 0.498352
+v -0.282294 -0.114831 0.422482
+v -0.422482 -0.114831 0.282294
+v -0.498352 -0.114831 0.099128
+v -0.498352 -0.114831 -0.099128
+v -0.422482 -0.114831 -0.282294
+v -0.282293 -0.114831 -0.422482
+v -0.099128 -0.114831 -0.498352
+v 0.099128 -0.114831 -0.498352
+v 0.083551 -0.500001 -0.420041
+v 0.237934 -0.500001 -0.356094
+v 0.356094 -0.500001 -0.237934
+v 0.420041 -0.500001 -0.083551
+v 0.420041 -0.500001 0.083551
+v 0.356094 -0.500001 0.237934
+v 0.237934 -0.500001 0.356094
+v 0.083551 -0.500001 0.420041
+v -0.083551 -0.500001 0.420041
+v -0.237934 -0.500001 0.356094
+v -0.356094 -0.500001 0.237934
+v -0.420041 -0.500001 0.083551
+v -0.420041 -0.500001 -0.083551
+v -0.356094 -0.500001 -0.237934
+v -0.237934 -0.500001 -0.356094
+v -0.083551 -0.500001 -0.420041
+v 0.245866 -0.413335 -0.367964
+v 0.367964 -0.413335 -0.245866
+v 0.434043 -0.413335 -0.086336
+v 0.434043 -0.413335 0.086337
+v 0.367964 -0.413335 0.245866
+v 0.245866 -0.413335 0.367964
+v 0.086337 -0.413335 0.434043
+v -0.086336 -0.413335 0.434043
+v -0.245866 -0.413335 0.367964
+v -0.367964 -0.413335 0.245866
+v -0.434043 -0.413335 0.086337
+v -0.434043 -0.413335 -0.086337
+v -0.367964 -0.413335 -0.245866
+v -0.245865 -0.413335 -0.367964
+v -0.086336 -0.413335 -0.434043
+v 0.086337 -0.413335 -0.434043
+v 0.254064 -0.114831 -0.380234
+v 0.380234 -0.114831 -0.254064
+v 0.448517 -0.114831 -0.089215
+v 0.448517 -0.114831 0.089216
+v 0.380234 -0.114831 0.254064
+v 0.254064 -0.114831 0.380234
+v 0.089216 -0.114831 0.448517
+v -0.089215 -0.114831 0.448517
+v -0.254064 -0.114831 0.380234
+v -0.380234 -0.114831 0.254064
+v -0.448517 -0.114831 0.089216
+v -0.448517 -0.114831 -0.089216
+v -0.380234 -0.114831 -0.254064
+v -0.254064 -0.114831 -0.380234
+v -0.089215 -0.114831 -0.448517
+v 0.089216 -0.114831 -0.448517
+v 0.087776 -0.352645 -0.441280
+v -0.087776 -0.352645 -0.441280
+v -0.249965 -0.352645 -0.374099
+v -0.374099 -0.352645 -0.249965
+v -0.441280 -0.352645 -0.087776
+v -0.441280 -0.352645 0.087776
+v -0.374099 -0.352645 0.249965
+v -0.249965 -0.352645 0.374099
+v -0.087776 -0.352645 0.441280
+v 0.087776 -0.352645 0.441280
+v 0.249965 -0.352645 0.374099
+v 0.374099 -0.352645 0.249965
+v 0.441280 -0.352645 0.087776
+v 0.441280 -0.352645 -0.087776
+v 0.374099 -0.352645 -0.249965
+v 0.249965 -0.352645 -0.374099
+v 0.000000 -0.352645 0.000000
+v -0.000000 -0.413334 0.000000
+vt 0.211792 0.993590
+vt 0.117562 0.954728
+vt 0.262789 0.738327
+vt 0.211538 0.006410
+vt 0.108974 0.006410
+vt 0.108974 0.032051
+vt 0.211538 0.032051
+vt 0.314103 0.006410
+vt 0.314103 0.032051
+vt 0.416667 0.006410
+vt 0.416667 0.032051
+vt 0.006410 0.006410
+vt 0.006410 0.032051
+vt 0.211361 0.993526
+vt 0.117394 0.954505
+vt 0.262040 0.737637
+vt 0.045447 0.882467
+vt 0.006475 0.788381
+vt 0.006410 0.686569
+vt 0.045263 0.592532
+vt 0.117118 0.520586
+vt 0.204627 0.488094
+vt 0.312719 0.481748
+vt 0.406687 0.520769
+vt 0.478633 0.592807
+vt 0.517605 0.686893
+vt 0.517670 0.788705
+vt 0.478816 0.882742
+vt 0.406962 0.954687
+vt 0.313044 0.993590
+vt 0.045441 0.882922
+vt 0.006410 0.789102
+vt 0.006410 0.687551
+vt 0.045442 0.593732
+vt 0.117562 0.521925
+vt 0.211793 0.483064
+vt 0.313787 0.483064
+vt 0.408016 0.521926
+vt 0.480136 0.593732
+vt 0.519168 0.687551
+vt 0.519168 0.789103
+vt 0.480136 0.882922
+vt 0.408016 0.954728
+vt 0.313786 0.993590
+vt 0.211538 0.442308
+vt 0.211538 0.467949
+vt 0.108974 0.467949
+vt 0.108974 0.442308
+vt 0.314103 0.442308
+vt 0.314103 0.467949
+vt 0.416667 0.442308
+vt 0.416667 0.467949
+vt 0.006410 0.467949
+vt 0.006410 0.442308
+vt 0.416667 0.076923
+vt 0.314103 0.076923
+vt 0.211538 0.076923
+vt 0.108974 0.076923
+vt 0.006410 0.076923
+vt 0.416667 0.185897
+vt 0.314103 0.185897
+vt 0.211538 0.185897
+vt 0.108974 0.185897
+vt 0.006410 0.185897
+vt 0.429487 0.032051
+vt 0.532051 0.032051
+vt 0.532051 0.076923
+vt 0.429487 0.076923
+vt 0.634615 0.032051
+vt 0.634615 0.076923
+vt 0.737179 0.032051
+vt 0.737179 0.076923
+vt 0.839744 0.032051
+vt 0.839744 0.076923
+vt 0.532051 0.185897
+vt 0.429487 0.185897
+vt 0.634615 0.185897
+vt 0.737179 0.185897
+vt 0.839744 0.185897
+s off
+f 80/1 65/2 114/3
+f 7/4 8/5 56/6 55/7
+f 6/8 7/4 55/7 54/9
+f 5/10 6/8 54/9 53/11
+f 4/5 5/12 53/13 52/6
+f 3/4 4/5 52/6 51/7
+f 2/8 3/4 51/7 50/9
+f 1/10 2/8 50/9 49/11
+f 16/5 1/12 49/13 64/6
+f 15/4 16/5 64/6 63/7
+f 14/8 15/4 63/7 62/9
+f 13/10 14/8 62/9 61/11
+f 12/5 13/12 61/13 60/6
+f 11/4 12/5 60/6 59/7
+f 10/8 11/4 59/7 58/9
+f 9/10 10/8 58/9 57/11
+f 8/5 9/12 57/13 56/6
+f 98/14 99/15 113/16
+f 99/15 100/17 113/16
+f 100/17 101/18 113/16
+f 101/18 102/19 113/16
+f 102/19 103/20 113/16
+f 103/20 104/21 113/16
+f 104/21 105/22 113/16
+f 105/22 106/23 113/16
+f 106/23 107/24 113/16
+f 107/24 108/25 113/16
+f 108/25 109/26 113/16
+f 109/26 110/27 113/16
+f 110/27 111/28 113/16
+f 111/28 112/29 113/16
+f 112/29 97/30 113/16
+f 97/30 98/14 113/16
+f 65/2 66/31 114/3
+f 66/31 67/32 114/3
+f 67/32 68/33 114/3
+f 68/33 69/34 114/3
+f 69/34 70/35 114/3
+f 70/35 71/36 114/3
+f 71/36 72/37 114/3
+f 72/37 73/38 114/3
+f 73/38 74/39 114/3
+f 74/39 75/40 114/3
+f 75/40 76/41 114/3
+f 76/41 77/42 114/3
+f 77/42 78/43 114/3
+f 78/43 79/44 114/3
+f 79/44 80/1 114/3
+f 38/45 86/46 87/47 39/48
+f 37/49 85/50 86/46 38/45
+f 36/51 84/52 85/50 37/49
+f 35/48 83/47 84/53 36/54
+f 34/45 82/46 83/47 35/48
+f 33/49 81/50 82/46 34/45
+f 48/51 96/52 81/50 33/49
+f 47/48 95/47 96/53 48/54
+f 46/45 94/46 95/47 47/48
+f 45/49 93/50 94/46 46/45
+f 44/51 92/52 93/50 45/49
+f 43/48 91/47 92/53 44/54
+f 42/45 90/46 91/47 43/48
+f 41/49 89/50 90/46 42/45
+f 40/51 88/52 89/50 41/49
+f 39/48 87/47 88/53 40/54
+s 1
+f 1/11 32/55 17/56 2/9
+f 2/9 17/56 18/57 3/7
+f 3/7 18/57 19/58 4/6
+f 4/6 19/58 20/59 5/13
+f 5/11 20/55 21/56 6/9
+f 6/9 21/56 22/57 7/7
+f 7/7 22/57 23/58 8/6
+f 8/6 23/58 24/59 9/13
+f 9/11 24/55 25/56 10/9
+f 10/9 25/56 26/57 11/7
+f 11/7 26/57 27/58 12/6
+f 12/6 27/58 28/59 13/13
+f 13/11 28/55 29/56 14/9
+f 14/9 29/56 30/57 15/7
+f 16/6 31/58 32/59 1/13
+f 15/7 30/57 31/58 16/6
+f 32/55 48/60 33/61 17/56
+f 17/56 33/61 34/62 18/57
+f 18/57 34/62 35/63 19/58
+f 19/58 35/63 36/64 20/59
+f 20/55 36/60 37/61 21/56
+f 21/56 37/61 38/62 22/57
+f 22/57 38/62 39/63 23/58
+f 23/58 39/63 40/64 24/59
+f 24/55 40/60 41/61 25/56
+f 25/56 41/61 42/62 26/57
+f 26/57 42/62 43/63 27/58
+f 27/58 43/63 44/64 28/59
+f 28/55 44/60 45/61 29/56
+f 29/56 45/61 46/62 30/57
+f 31/58 47/63 48/64 32/59
+f 30/57 46/62 47/63 31/58
+f 49/65 50/66 65/67 80/68
+f 50/66 51/69 66/70 65/67
+f 51/69 52/71 67/72 66/70
+f 52/71 53/73 68/74 67/72
+f 53/65 54/66 69/67 68/68
+f 54/66 55/69 70/70 69/67
+f 55/69 56/71 71/72 70/70
+f 56/71 57/73 72/74 71/72
+f 57/65 58/66 73/67 72/68
+f 58/66 59/69 74/70 73/67
+f 59/69 60/71 75/72 74/70
+f 60/71 61/73 76/74 75/72
+f 61/65 62/66 77/67 76/68
+f 62/66 63/69 78/70 77/67
+f 64/71 49/73 80/74 79/72
+f 63/69 64/71 79/72 78/70
+f 97/68 112/67 81/75 96/76
+f 112/67 111/70 82/77 81/75
+f 111/70 110/72 83/78 82/77
+f 110/72 109/74 84/79 83/78
+f 109/68 108/67 85/75 84/76
+f 108/67 107/70 86/77 85/75
+f 107/70 106/72 87/78 86/77
+f 106/72 105/74 88/79 87/78
+f 105/68 104/67 89/75 88/76
+f 104/67 103/70 90/77 89/75
+f 103/70 102/72 91/78 90/77
+f 102/72 101/74 92/79 91/78
+f 101/68 100/67 93/75 92/76
+f 100/67 99/70 94/77 93/75
+f 98/72 97/74 96/79 95/78
+f 99/70 98/72 95/78 94/77
diff --git a/cottages/nodes_anvil.lua b/cottages/nodes_anvil.lua
new file mode 100644
index 0000000..4a6f060
--- /dev/null
+++ b/cottages/nodes_anvil.lua
@@ -0,0 +1,303 @@
+---------------------------------------------------------------------------------------
+-- simple anvil that can be used to repair tools
+---------------------------------------------------------------------------------------
+-- * can be used to repair tools
+-- * the hammer gets dammaged a bit at each repair step
+---------------------------------------------------------------------------------------
+-- License of the hammer picture: CC-by-SA; done by GloopMaster; source:
+-- https://github.com/GloopMaster/glooptest/blob/master/glooptest/textures/glooptest_tool_steelhammer.png
+
+local S = cottages.S
+
+-- the hammer for the anvil
+minetest.register_tool("cottages:hammer", {
+ description = S("Steel hammer for repairing tools on the anvil"),
+ image = "glooptest_tool_steelhammer.png",
+ inventory_image = "glooptest_tool_steelhammer.png",
+
+ tool_capabilities = {
+ full_punch_interval = 0.8,
+ max_drop_level=1,
+ groupcaps={
+ -- about equal to a stone pick (it's not intended as a tool)
+ cracky={times={[2]=2.00, [3]=1.20}, uses=30, maxlevel=1},
+ },
+ damage_groups = {fleshy=6},
+ }
+})
+
+
+local cottages_anvil_formspec =
+ "size[8,8]"..
+ "image[7,3;1,1;glooptest_tool_steelhammer.png]"..
+-- "list[current_name;sample;0,0.5;1,1;]"..
+ "list[current_name;input;2.5,1.5;1,1;]"..
+-- "list[current_name;material;5,0;3,3;]"..
+ "list[current_name;hammer;5,3;1,1;]"..
+-- "label[0.0,0.0;Sample:]"..
+-- "label[0.0,1.0;(Receipe)]"..
+ "label[2.5,1.0;"..S("Workpiece:").."]"..
+-- "label[6.0,-0.5;Materials:]"..
+ "label[6.0,2.7;"..S("Optional").."]"..
+ "label[6.0,3.0;"..S("storage for").."]"..
+ "label[6.0,3.3;"..S("your hammer").."]"..
+
+ "label[0,-0.5;"..S("Anvil").."]"..
+ "label[0,3.0;"..S("Punch anvil with hammer to").."]"..
+ "label[0,3.3;"..S("repair tool in workpiece-slot.").."]"..
+ "list[current_player;main;0,4;8,4;]";
+
+
+minetest.register_node("cottages:anvil", {
+ drawtype = "nodebox",
+ description = S("anvil"),
+ tiles = {"cottages_stone.png"}, -- TODO default_steel_block.png, default_obsidian.png are also nice
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ -- the nodebox model comes from realtest
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.3,0.5,-0.4,0.3},
+ {-0.35,-0.4,-0.25,0.35,-0.3,0.25},
+ {-0.3,-0.3,-0.15,0.3,-0.1,0.15},
+ {-0.35,-0.1,-0.2,0.35,0.1,0.2},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.3,0.5,-0.4,0.3},
+ {-0.35,-0.4,-0.25,0.35,-0.3,0.25},
+ {-0.3,-0.3,-0.15,0.3,-0.1,0.15},
+ {-0.35,-0.1,-0.2,0.35,0.1,0.2},
+ }
+ },
+ on_construct = function(pos)
+
+ local meta = minetest.get_meta(pos);
+ meta:set_string("infotext", S("Anvil"));
+ local inv = meta:get_inventory();
+ inv:set_size("input", 1);
+-- inv:set_size("material", 9);
+-- inv:set_size("sample", 1);
+ inv:set_size("hammer", 1);
+ meta:set_string("formspec", cottages_anvil_formspec );
+ end,
+
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("owner", placer:get_player_name() or "");
+ meta:set_string("infotext", S("Anvil (owned by %s)"):format((meta:get_string("owner") or "")));
+ meta:set_string("formspec",
+ cottages_anvil_formspec,
+ "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string('owner') or "").."]");
+ end,
+
+ can_dig = function(pos,player)
+
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory();
+ local owner = meta:get_string('owner');
+
+ if( not( inv:is_empty("input"))
+-- or not( inv:is_empty("material"))
+-- or not( inv:is_empty("sample"))
+ or not( inv:is_empty("hammer"))
+ or not( player )
+ or ( owner and owner ~= '' and player:get_player_name() ~= owner )) then
+
+ return false;
+ end
+ return true;
+ end,
+
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if( player and player:get_player_name() ~= meta:get_string('owner' ) and from_list~="input") then
+ return 0
+ end
+ return count;
+ end,
+
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if( player and player:get_player_name() ~= meta:get_string('owner' ) and listname~="input") then
+ return 0;
+ end
+ if( listname=='hammer' and stack and stack:get_name() ~= 'cottages:hammer') then
+ return 0;
+ end
+ if( listname=='input'
+ and( stack:get_wear() == 0
+ or stack:get_name() == "technic:water_can"
+ or stack:get_name() == "technic:lava_can" )) then
+
+ minetest.chat_send_player( player:get_player_name(),
+ S('The workpiece slot is for damaged tools only.'));
+ return 0;
+ end
+ return stack:get_count()
+ end,
+
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if( player and player:get_player_name() ~= meta:get_string('owner' ) and listname~="input") then
+ return 0
+ end
+ return stack:get_count()
+ end,
+
+
+ on_punch = function(pos, node, puncher)
+ if( not( pos ) or not( node ) or not( puncher )) then
+ return;
+ end
+ -- only punching with the hammer is supposed to work
+ local wielded = puncher:get_wielded_item();
+ if( not( wielded ) or not( wielded:get_name() ) or wielded:get_name() ~= 'cottages:hammer') then
+ return;
+ end
+ local name = puncher:get_player_name();
+
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory();
+
+ local input = inv:get_stack('input',1);
+
+ -- only tools can be repaired
+ if( not( input )
+ or input:is_empty()
+ or input:get_name() == "technic:water_can"
+ or input:get_name() == "technic:lava_can" ) then
+
+ meta:set_string("formspec",
+ cottages_anvil_formspec,
+ "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string('owner') or "").."]");
+ return;
+ end
+
+ -- 65535 is max damage
+ local damage_state = 40-math.floor(input:get_wear()/1638);
+
+ local tool_name = input:get_name();
+ local hud_image = "";
+ if( tool_name
+ and minetest.registered_items[ tool_name ] ) then
+ if( minetest.registered_items[ tool_name ].inventory_image ) then
+ hud_image = minetest.registered_items[ tool_name ].inventory_image;
+ elseif( minetest.registered_items[ tool_name ].textures
+ and type(minetest.registered_items[ tool_name ].textures)=='table') then
+ hud_image = minetest.registered_items[ tool_name ].textures[1];
+ elseif( minetest.registered_items[ tool_name ].textures
+ and type(minetest.registered_items[ tool_name ].textures)=='string') then
+ hud_image = minetest.registered_items[ tool_name ].textures;
+ end
+ end
+
+ local hud1 = puncher:hud_add({
+ hud_elem_type = "image",
+ scale = {x = 15, y = 15},
+ text = hud_image,
+ position = {x = 0.5, y = 0.5},
+ alignment = {x = 0, y = 0}
+ });
+ local hud2 = nil;
+ local hud3 = nil;
+ if( input:get_wear()>0 ) then
+ hud2 = puncher:hud_add({
+ hud_elem_type = "statbar",
+ text = "default_cloud.png^[colorize:#ff0000:256",
+ number = 40,
+ direction = 0, -- left to right
+ position = {x=0.5, y=0.65},
+ alignment = {x = 0, y = 0},
+ offset = {x = -320, y = 0},
+ size = {x=32, y=32},
+ })
+ hud3 = puncher:hud_add({
+ hud_elem_type = "statbar",
+ text = "default_cloud.png^[colorize:#00ff00:256",
+ number = damage_state,
+ direction = 0, -- left to right
+ position = {x=0.5, y=0.65},
+ alignment = {x = 0, y = 0},
+ offset = {x = -320, y = 0},
+ size = {x=32, y=32},
+ });
+ end
+ minetest.after(2, function()
+ if( puncher ) then
+ puncher:hud_remove(hud1);
+ puncher:hud_remove(hud2);
+ puncher:hud_remove(hud3);
+ end
+ end)
+
+ -- tell the player when the job is done
+ if( input:get_wear() == 0 ) then
+-- minetest.chat_send_player( puncher:get_player_name(),
+-- S('Your tool has been repaired successfully.'));
+ return;
+ end
+
+ -- do the actual repair
+ input:add_wear( -5000 ); -- equals to what technic toolshop does in 5 seconds
+ inv:set_stack("input", 1, input)
+
+ -- damage the hammer slightly
+ wielded:add_wear( 100 );
+ puncher:set_wielded_item( wielded );
+
+ -- do not spam too much
+-- if( math.random( 1,5 )==1 ) then
+-- minetest.chat_send_player( puncher:get_player_name(),
+-- S('Your workpiece improves.'));
+-- end
+ end,
+ is_ground_content = false,
+})
+
+
+
+---------------------------------------------------------------------------------------
+-- crafting receipes
+---------------------------------------------------------------------------------------
+minetest.register_craft({
+ output = "cottages:anvil",
+ recipe = {
+ {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel},
+ {'', cottages.craftitem_steel,'' },
+ {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel} },
+})
+
+
+-- the castle-mod has an anvil as well - with the same receipe. convert the two into each other
+if ( minetest.get_modpath("castle") ~= nil ) then
+
+ minetest.register_craft({
+ output = "cottages:anvil",
+ recipe = {
+ {'castle:anvil'},
+ },
+ })
+
+ minetest.register_craft({
+ output = "castle:anvil",
+ recipe = {
+ {'cottages:anvil'},
+ },
+ })
+end
+
+
+
+minetest.register_craft({
+ output = "cottages:hammer",
+ recipe = {
+ {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel},
+ {cottages.craftitem_steel,cottages.craftitem_steel,cottages.craftitem_steel},
+ {'', cottages.craftitem_stick, '' } }
+})
+
diff --git a/cottages/nodes_barrel.lua b/cottages/nodes_barrel.lua
new file mode 100644
index 0000000..4c84983
--- /dev/null
+++ b/cottages/nodes_barrel.lua
@@ -0,0 +1,214 @@
+
+---------------------------------------------------------------------
+-- a barrel and a tub - plus a function that makes 'round' objects
+---------------------------------------------------------------------
+-- IMPORTANT NOTE: The barrel requires a lot of nodeboxes. That may be
+-- too much for weak hardware!
+---------------------------------------------------------------------
+-- Functionality: right-click to open/close a barrel;
+-- punch a barrel to change between vertical/horizontal
+---------------------------------------------------------------------
+-- Changelog:
+-- 24.03.13 Can no longer be opended/closed on rightclick because that is now used for a formspec;
+-- instead, it can be filled with liquids.
+-- Filled barrels will always be closed, while empty barrels will always be open.
+
+-- pipes: table with the following entries for each pipe-part:
+-- f: radius factor; if 1, it will have a radius of half a nodebox and fill the entire nodebox
+-- h1, h2: height at witch the nodebox shall start and end; usually -0.5 and 0.5 for a full nodebox
+-- b: make a horizontal part/shelf
+-- horizontal: if 1, then x and y coordinates will be swapped
+
+-- TODO: option so that it works without nodeboxes
+
+local S = cottages.S
+
+barrel = {};
+
+-- prepare formspec
+barrel.on_construct = function( pos )
+
+ local meta = minetest.get_meta(pos);
+ local percent = math.random( 1, 100 ); -- TODO: show real filling
+
+ meta:set_string( 'formspec',
+ "size[8,9]"..
+ "image[2.6,2;2,3;default_sandstone.png^[lowpart:"..
+ (100-percent)..":default_desert_stone.png]".. -- TODO: better images
+ "label[2.2,0;"..S("Pour:").."]"..
+ "list[current_name;input;3,0.5;1,1;]"..
+ "label[5,3.3;"..S("Fill:").."]"..
+ "list[current_name;output;5,3.8;1,1;]"..
+ "list[current_player;main;0,5;8,4;]");
+
+
+ meta:set_string( 'liquid_type', '' ); -- which liquid is in the barrel?
+ meta:set_int( 'liquid_level', 0 ); -- how much of the liquid is in there?
+
+ local inv = meta:get_inventory()
+ inv:set_size("input", 1); -- to fill in new liquid
+ inv:set_size("output", 1); -- to extract liquid
+end
+
+
+-- can only be digged if there are no more vessels/buckets in any of the slots
+-- TODO: allow digging of a filled barrel? this would disallow stacking of them
+barrel.can_dig = function( pos, player )
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+
+ return ( inv:is_empty('input')
+ and inv:is_empty('output'));
+end
+
+
+-- the barrel received input; either a new liquid that is to be poured in or a vessel that is to be filled
+barrel.on_metadata_inventory_put = function( pos, listname, index, stack, player )
+end
+
+
+-- right-click to open/close barrel; punch to switch between horizontal/vertical position
+ minetest.register_node("cottages:barrel", {
+ description = S("barrel (closed)"),
+ paramtype = "light",
+ drawtype = "mesh",
+ mesh = "cottages_barrel_closed.obj",
+ tiles = {"cottages_barrel.png" },
+ groups = { tree = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2
+ },
+ drop = "cottages:barrel",
+-- on_rightclick = function(pos, node, puncher)
+-- minetest.add_node(pos, {name = "cottages:barrel_open", param2 = node.param2})
+-- end,
+-- TODO: on_rightclick is no longer available - maybe open if empty and closed if full?
+ on_punch = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "cottages:barrel_lying", param2 = node.param2})
+ end,
+
+ on_construct = function( pos )
+ return barrel.on_construct( pos );
+ end,
+ can_dig = function(pos,player)
+ return barrel.can_dig( pos, player );
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ return barrel.on_metadata_inventory_put( pos, listname, index, stack, player );
+ end,
+ is_ground_content = false,
+
+ })
+
+ -- this barrel is opened at the top
+ minetest.register_node("cottages:barrel_open", {
+ description = S("barrel (open)"),
+ paramtype = "light",
+ drawtype = "mesh",
+ mesh = "cottages_barrel.obj",
+ tiles = {"cottages_barrel.png" },
+ groups = { tree = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, not_in_creative_inventory=1,
+ },
+ drop = "cottages:barrel",
+-- on_rightclick = function(pos, node, puncher)
+-- minetest.add_node(pos, {name = "cottages:barrel", param2 = node.param2})
+-- end,
+ on_punch = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "cottages:barrel_lying_open", param2 = node.param2})
+ end,
+ is_ground_content = false,
+ })
+
+ -- horizontal barrel
+ minetest.register_node("cottages:barrel_lying", {
+ description = S("barrel (closed), lying somewhere"),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "mesh",
+ mesh = "cottages_barrel_closed_lying.obj",
+ tiles = {"cottages_barrel.png" },
+ groups = { tree = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, not_in_creative_inventory=1,
+ },
+ drop = "cottages:barrel",
+ on_rightclick = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "cottages:barrel_lying_open", param2 = node.param2})
+ end,
+ on_punch = function(pos, node, puncher)
+ if( node.param2 < 4 ) then
+ minetest.add_node(pos, {name = "cottages:barrel_lying", param2 = (node.param2+1)})
+ else
+ minetest.add_node(pos, {name = "cottages:barrel", param2 = 0})
+ end
+ end,
+ is_ground_content = false,
+ })
+
+ -- horizontal barrel, open
+ minetest.register_node("cottages:barrel_lying_open", {
+ description = S("barrel (opened), lying somewhere"),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "mesh",
+ mesh = "cottages_barrel_lying.obj",
+ tiles = {"cottages_barrel.png" },
+ groups = { tree = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, not_in_creative_inventory=1,
+ },
+ drop = "cottages:barrel",
+ on_rightclick = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "cottages:barrel_lying", param2 = node.param2})
+ end,
+ on_punch = function(pos, node, puncher)
+ if( node.param2 < 4 ) then
+ minetest.add_node(pos, {name = "cottages:barrel_lying_open", param2 = (node.param2+1)})
+ else
+ minetest.add_node(pos, {name = "cottages:barrel_open", param2 = 0})
+ end
+ end,
+ is_ground_content = false,
+
+ })
+
+ -- let's hope "tub" is the correct english word for "bottich"
+ minetest.register_node("cottages:tub", {
+ description = S("tub"),
+ paramtype = "light",
+ drawtype = "mesh",
+ mesh = "cottages_tub.obj",
+ tiles = {"cottages_barrel.png" },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5,-0.1, 0.5},
+ }},
+ collision_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5,-0.1, 0.5},
+ }},
+ groups = { tree = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2
+ },
+ is_ground_content = false,
+ })
+
+
+minetest.register_craft({
+ output = "cottages:barrel",
+ recipe = {
+ {cottages.craftitem_wood, "", cottages.craftitem_wood },
+ {cottages.craftitem_steel, "", cottages.craftitem_steel},
+ {cottages.craftitem_wood, cottages.craftitem_wood, cottages.craftitem_wood },
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:tub 2",
+ recipe = {
+ {"cottages:barrel"},
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:barrel",
+ recipe = {
+ {"cottages:tub"},
+ {"cottages:tub"},
+ },
+})
diff --git a/cottages/nodes_chests.lua b/cottages/nodes_chests.lua
new file mode 100644
index 0000000..c099749
--- /dev/null
+++ b/cottages/nodes_chests.lua
@@ -0,0 +1,61 @@
+
+-- TODO: make these chests as chests and indicate that they are owned by npc
+-- TODO: add bags (not for carrying around but for decoration)
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = cottages.S
+
+cottages_chests = {}
+-- uses default.chest_formspec for now
+cottages_chests.on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",default.chest_formspec)
+-- meta:set_string("infotext", "Chest")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end
+
+cottages_chests.can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end
+
+-- the chests do not need receipes since they are only placeholders and not intended to be built by players
+-- (they are later on supposed to be filled with diffrent items by fill_chest.lua)
+minetest.register_node("cottages:chest_private", {
+ description = S("private NPC chest"),
+ infotext = "chest containing the possesions of one of the inhabitants",
+ tiles = cottages.texture_chest,
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ on_construct = cottages_chests.on_construct,
+ can_dig = cottages_chests.can_dig,
+ is_ground_content = false,
+})
+
+minetest.register_node("cottages:chest_work", {
+ description = S("chest for work utils and kitchens"),
+ infotext = "everything the inhabitant needs for his work",
+ tiles = cottages.texture_chest,
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ on_construct = cottages_chests.on_construct,
+ can_dig = cottages_chests.can_dig,
+ is_ground_content = false,
+})
+
+minetest.register_node("cottages:chest_storage", {
+ description = S("storage chest"),
+ infotext = "stored food reserves",
+ tiles = cottages.texture_chest,
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ on_construct = cottages_chests.on_construct,
+ can_dig = cottages_chests.can_dig,
+ is_ground_content = false,
+})
+
diff --git a/cottages/nodes_doorlike.lua b/cottages/nodes_doorlike.lua
new file mode 100644
index 0000000..d989c05
--- /dev/null
+++ b/cottages/nodes_doorlike.lua
@@ -0,0 +1,437 @@
+
+-----------------------------------------------------------------------------------------------------------
+-- These nodes are all like doors in a way:
+-- * window shutters (they open on right-click and when it turns day; they close at night)
+-- * a half-door where the top part can be opened seperately from the bottom part
+-- * a gate that drops to the floor when opened
+--
+-----------------------------------------------------------------------------------------------------------
+-- IMPORTANT NOTICE: If you have a very slow computer, it might be wise to increase the rate at which the
+-- abm that opens/closes the window shutters is called. Anything less than 10 minutes
+-- (600 seconds) ought to be ok.
+-----------------------------------------------------------------------------------------------------------
+local S = cottages.S
+
+-----------------------------------------------------------------------------------------------------------
+-- small window shutters for single-node-windows; they open at day and close at night if the abm is working
+-----------------------------------------------------------------------------------------------------------
+
+-- propagate shutting/closing of window shutters to window shutters below/above this one
+cottages_window_sutter_operate = function( pos, old_node_state_name, new_node_state_name )
+
+ local offsets = {-1,1,-2,2,-3,3};
+ local stop_up = 0;
+ local stop_down = 0;
+
+ for i,v in ipairs(offsets) do
+
+ local node = minetest.get_node_or_nil( {x=pos.x, y=(pos.y+v), z=pos.z } );
+ if( node and node.name and node.name==old_node_state_name
+ and ( (v > 0 and stop_up == 0 )
+ or (v < 0 and stop_down == 0 ))) then
+
+ minetest.swap_node({x=pos.x, y=(pos.y+v), z=pos.z }, {name = new_node_state_name, param2 = node.param2})
+
+ -- found a diffrent node - no need to search further up
+ elseif( v > 0 and stop_up == 0 ) then
+ stop_up = 1;
+
+ elseif( v < 0 and stop_down == 0 ) then
+ stop_down = 1;
+ end
+ end
+end
+
+-- window shutters - they cover half a node to each side
+minetest.register_node("cottages:window_shutter_open", {
+ description = S("opened window shutters"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ -- larger than one node but slightly smaller than a half node so that wallmounted torches pose no problem
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.90, -0.5, 0.4, -0.45, 0.5, 0.5},
+ { 0.45, -0.5, 0.4, 0.9, 0.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.9, -0.5, 0.4, 0.9, 0.5, 0.5},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ minetest.swap_node(pos, {name = "cottages:window_shutter_closed", param2 = node.param2})
+ cottages_window_sutter_operate( pos, "cottages:window_shutter_open", "cottages:window_shutter_closed" );
+ end,
+ is_ground_content = false,
+})
+
+minetest.register_node("cottages:window_shutter_closed", {
+ description = S("closed window shutters"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, -0.05, 0.5, 0.5},
+ { 0.05, -0.5, 0.4, 0.5, 0.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ minetest.swap_node(pos, {name = "cottages:window_shutter_open", param2 = node.param2})
+ cottages_window_sutter_operate( pos, "cottages:window_shutter_closed", "cottages:window_shutter_open" );
+ end,
+ is_ground_content = false,
+ drop = "cottages:window_shutter_open",
+})
+
+
+-- open shutters in the morning
+minetest.register_abm({
+ nodenames = {"cottages:window_shutter_closed"},
+ interval = 20, -- change this to 600 if your machine is too slow
+ chance = 3, -- not all people wake up at the same time!
+ action = function(pos)
+
+ -- at this time, sleeping in a bed is not possible
+ if( not(minetest.get_timeofday() < 0.2 or minetest.get_timeofday() > 0.805)) then
+ local old_node = minetest.get_node( pos );
+ minetest.swap_node(pos, {name = "cottages:window_shutter_open", param2 = old_node.param2})
+ cottages_window_sutter_operate( pos, "cottages:window_shutter_closed", "cottages:window_shutter_open" );
+ end
+ end
+})
+
+
+-- close them at night
+minetest.register_abm({
+ nodenames = {"cottages:window_shutter_open"},
+ interval = 20, -- change this to 600 if your machine is too slow
+ chance = 2,
+ action = function(pos)
+
+ -- same time at which sleeping is allowed in beds
+ if( minetest.get_timeofday() < 0.2 or minetest.get_timeofday() > 0.805) then
+ local old_node = minetest.get_node( pos );
+ minetest.swap_node(pos, {name = "cottages:window_shutter_closed", param2 = old_node.param2})
+ cottages_window_sutter_operate( pos, "cottages:window_shutter_open", "cottages:window_shutter_closed" );
+ end
+ end
+})
+
+
+------------------------------------------------------------------------------------------------------------------------------
+-- a half door; can be combined to a full door where the upper part can be operated seperately; usually found in barns/stables
+------------------------------------------------------------------------------------------------------------------------------
+minetest.register_node("cottages:half_door", {
+ description = S("half door"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, 0.48, 0.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, 0.48, 0.5, 0.5},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ local node2 = minetest.get_node( {x=pos.x,y=(pos.y+1),z=pos.z});
+
+ local param2 = node.param2;
+ if( param2%4 == 1) then param2 = param2+1; --2;
+ elseif( param2%4 == 2) then param2 = param2-1; --1;
+ elseif( param2%4 == 3) then param2 = param2-3; --0;
+ elseif( param2%4 == 0) then param2 = param2+3; --3;
+ end;
+ minetest.swap_node(pos, {name = "cottages:half_door", param2 = param2})
+ -- if the node above consists of a door of the same type, open it as well
+ -- Note: doors beneath this one are not opened! It is a special feature of these doors that they can be opend partly
+ if( node2 ~= nil and node2.name == node.name and node2.param2==node.param2) then
+ minetest.swap_node( {x=pos.x,y=(pos.y+1),z=pos.z}, {name = "cottages:half_door", param2 = param2})
+ end
+ end,
+ is_ground_content = false,
+})
+
+
+
+minetest.register_node("cottages:half_door_inverted", {
+ description = S("half door inverted"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.48, 0.5, -0.4},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.48, 0.5, -0.4},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ local node2 = minetest.get_node( {x=pos.x,y=(pos.y+1),z=pos.z});
+
+ local param2 = node.param2;
+ if( param2%4 == 1) then param2 = param2-1; --0;
+ elseif( param2%4 == 0) then param2 = param2+1; --1;
+ elseif( param2%4 == 2) then param2 = param2+1; --3;
+ elseif( param2%4 == 3) then param2 = param2-1; --2;
+ end;
+ minetest.swap_node(pos, {name = "cottages:half_door_inverted", param2 = param2})
+ -- open upper parts of this door (if there are any)
+ if( node2 ~= nil and node2.name == node.name and node2.param2==node.param2) then
+ minetest.swap_node( {x=pos.x,y=(pos.y+1),z=pos.z}, {name = "cottages:half_door_inverted", param2 = param2})
+ end
+ end,
+ is_ground_content = false,
+})
+
+
+
+
+------------------------------------------------------------------------------------------------------------------------------
+-- this gate for fences solves the "where to store the opened gate" problem by dropping it to the floor in optened state
+------------------------------------------------------------------------------------------------------------------------------
+minetest.register_node("cottages:gate_closed", {
+ description = S("closed fence gate"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {cottages.texture_furniture},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.85, -0.25, -0.02, 0.85, -0.05, 0.02},
+ { -0.85, 0.15, -0.02, 0.85, 0.35, 0.02},
+
+ { -0.80, -0.05, -0.02, -0.60, 0.15, 0.02},
+ { 0.60, -0.05, -0.02, 0.80, 0.15, 0.02},
+ { -0.15, -0.05, -0.02, 0.15, 0.15, 0.02},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.85, -0.25, -0.1, 0.85, 0.35, 0.1},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ minetest.swap_node(pos, {name = "cottages:gate_open", param2 = node.param2})
+ end,
+ is_ground_content = false,
+})
+
+
+minetest.register_node("cottages:gate_open", {
+ description = S("opened fence gate"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {cottages.texture_furniture},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "cottages:gate_closed",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.85, -0.5, -0.25, 0.85, -0.46, -0.05},
+ { -0.85, -0.5, 0.15, 0.85, -0.46, 0.35},
+
+ { -0.80, -0.5, -0.05, -0.60, -0.46, 0.15},
+ { 0.60, -0.5, -0.05, 0.80, -0.46, 0.15},
+ { -0.15, -0.5, -0.05, 0.15, -0.46, 0.15},
+
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.85, -0.5, -0.25, 0.85, -0.3, 0.35},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ minetest.swap_node(pos, {name = "cottages:gate_closed", param2 = node.param2})
+ end,
+ is_ground_content = false,
+ drop = "cottages:gate_closed",
+})
+
+
+
+-----------------------------------------------------------------------------------------------------------
+-- a hatch; nodebox definition taken from realtest
+-----------------------------------------------------------------------------------------------------------
+
+-- hatches rotate around their axis
+-- old facedir: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
+new_facedirs = { 10,19, 4,13, 2,18,22,14,20,16, 0,12,11, 3, 7,21, 9,23, 5, 1, 8,15, 6,17};
+
+
+cottages.register_hatch = function( nodename, description, texture, receipe_item )
+
+ minetest.register_node( nodename, {
+ description = S(description), -- not that there are any other...
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = { texture },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.49, -0.55, -0.49, -0.3, -0.45, 0.45},
+-- {-0.5, -0.55, 0.3, 0.3, -0.45, 0.5},
+ {0.3, -0.55, -0.3, 0.49, -0.45, 0.45},
+ {0.49, -0.55, -0.49, -0.3, -0.45, -0.3},
+ {-0.075, -0.55, -0.3, 0.075, -0.45, 0.3},
+ {-0.3, -0.55, -0.075, -0.075, -0.45, 0.075},
+ {0.075, -0.55, -0.075, 0.3, -0.45, 0.075},
+
+ {-0.3, -0.55, 0.3, 0.3, -0.45, 0.45},
+
+ -- hinges
+ {-0.45,-0.530, 0.45, -0.15,-0.470, 0.525},
+ { 0.15,-0.530, 0.45, 0.45,-0.470, 0.525},
+
+ -- handle
+ {-0.05,-0.60,-0.35, 0.05,-0.40,-0.45},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.55, -0.5, 0.5, -0.45, 0.5},
+ },
+ on_rightclick = function(pos, node, puncher)
+
+ minetest.swap_node(pos, {name = node.name, param2 = new_facedirs[ node.param2+1 ]})
+ end,
+ is_ground_content = false,
+ on_place = minetest.rotate_node,
+ })
+
+ minetest.register_craft({
+ output = nodename,
+ recipe = {
+ { '', '', receipe_item },
+ { receipe_item, cottages.craftitem_stick, '' },
+ { '', '', '' },
+ }
+ })
+end
+
+
+-- further alternate hatch materials: wood, tree, copper_block
+cottages.register_hatch( 'cottages:hatch_wood', 'wooden hatch', 'cottages_minimal_wood.png', cottages.craftitem_slab_wood );
+cottages.register_hatch( 'cottages:hatch_steel', 'metal hatch', 'cottages_steel_block.png', cottages.craftitem_steel );
+
+
+
+
+-----------------------------------------------------------------------------------------------------------
+-- and now the crafting receipes:
+-----------------------------------------------------------------------------------------------------------
+
+-- transform opend and closed shutters into each other for convenience
+minetest.register_craft({
+ output = "cottages:window_shutter_open",
+ recipe = {
+ {"cottages:window_shutter_closed" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:window_shutter_closed",
+ recipe = {
+ {"cottages:window_shutter_open" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:window_shutter_open",
+ recipe = {
+ {cottages.craftitem_wood, "", cottages.craftitem_wood },
+ }
+})
+
+-- transform one half door into another
+minetest.register_craft({
+ output = "cottages:half_door",
+ recipe = {
+ {"cottages:half_door_inverted" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:half_door_inverted",
+ recipe = {
+ {"cottages:half_door" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:half_door 2",
+ recipe = {
+ {"", cottages.craftitem_wood, "" },
+ {"", cottages.craftitem_door, "" },
+ }
+})
+
+
+-- transform open and closed versions into into another for convenience
+minetest.register_craft({
+ output = "cottages:gate_closed",
+ recipe = {
+ {"cottages:gate_open" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:gate_open",
+ recipe = {
+ {"cottages:gate_closed"},
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:gate_closed",
+ recipe = {
+ {cottages.craftitem_stick, cottages.craftitem_stick, cottages.craftitem_wood },
+ }
+})
+
diff --git a/cottages/nodes_fences.lua b/cottages/nodes_fences.lua
new file mode 100644
index 0000000..0a4a26f
--- /dev/null
+++ b/cottages/nodes_fences.lua
@@ -0,0 +1,159 @@
+-- 22.01.13 Changed texture to that of the wood from the minimal development game
+
+local S = cottages.S
+
+minetest.register_node("cottages:fence_small", {
+ description = S("small fence"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.45, -0.35, 0.46, 0.45, -0.20, 0.50},
+ { -0.45, 0.00, 0.46, 0.45, 0.15, 0.50},
+ { -0.45, 0.35, 0.46, 0.45, 0.50, 0.50},
+
+ { -0.50, -0.50, 0.46, -0.45, 0.50, 0.50},
+ { 0.45, -0.50, 0.46, 0.50, 0.50, 0.50},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.50, -0.50, 0.4, 0.50, 0.50, 0.5},
+ },
+ },
+ is_ground_content = false,
+})
+
+
+minetest.register_node("cottages:fence_corner", {
+ description = S("small fence corner"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.45, -0.35, 0.46, 0.45, -0.20, 0.50},
+ { -0.45, 0.00, 0.46, 0.45, 0.15, 0.50},
+ { -0.45, 0.35, 0.46, 0.45, 0.50, 0.50},
+
+ { -0.50, -0.50, 0.46, -0.45, 0.50, 0.50},
+ { 0.45, -0.50, 0.46, 0.50, 0.50, 0.50},
+
+ { 0.46, -0.35, -0.45, 0.50, -0.20, 0.45},
+ { 0.46, 0.00, -0.45, 0.50, 0.15, 0.45},
+ { 0.46, 0.35, -0.45, 0.50, 0.50, 0.45},
+
+ { 0.46, -0.50, -0.50, 0.50, 0.50, -0.45},
+ { 0.46, -0.50, 0.45, 0.50, 0.50, 0.50},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.50, -0.50,-0.5, 0.50, 0.50, 0.5},
+ },
+ },
+ is_ground_content = false,
+})
+
+
+minetest.register_node("cottages:fence_end", {
+ description = S("small fence end"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.45, -0.35, 0.46, 0.45, -0.20, 0.50},
+ { -0.45, 0.00, 0.46, 0.45, 0.15, 0.50},
+ { -0.45, 0.35, 0.46, 0.45, 0.50, 0.50},
+
+ { -0.50, -0.50, 0.46, -0.45, 0.50, 0.50},
+ { 0.45, -0.50, 0.46, 0.50, 0.50, 0.50},
+
+ { 0.46, -0.35, -0.45, 0.50, -0.20, 0.45},
+ { 0.46, 0.00, -0.45, 0.50, 0.15, 0.45},
+ { 0.46, 0.35, -0.45, 0.50, 0.50, 0.45},
+
+ { 0.46, -0.50, -0.50, 0.50, 0.50, -0.45},
+ { 0.46, -0.50, 0.45, 0.50, 0.50, 0.50},
+
+ { -0.50, -0.35, -0.45, -0.46, -0.20, 0.45},
+ { -0.50, 0.00, -0.45, -0.46, 0.15, 0.45},
+ { -0.50, 0.35, -0.45, -0.46, 0.50, 0.45},
+
+ { -0.50, -0.50, -0.50, -0.46, 0.50, -0.45},
+ { -0.50, -0.50, 0.45, -0.46, 0.50, 0.50},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.50, -0.50,-0.5, 0.50, 0.50, 0.5},
+ },
+ },
+ is_ground_content = false,
+})
+
+minetest.register_craft({
+ output = "cottages:fence_small 3",
+ recipe = {
+ {cottages.craftitem_fence, cottages.craftitem_fence},
+ }
+})
+
+-- xfences can be configured to replace normal fences - which makes them uncraftable
+if ( minetest.get_modpath("xfences") ~= nil ) then
+ minetest.register_craft({
+ output = "cottages:fence_small 3",
+ recipe = {
+ {"xfences:fence","xfences:fence" },
+ }
+ })
+end
+
+minetest.register_craft({
+ output = "cottages:fence_corner",
+ recipe = {
+ {"cottages:fence_small","cottages:fence_small" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:fence_small 2",
+ recipe = {
+ {"cottages:fence_corner" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:fence_end",
+ recipe = {
+ {"cottages:fence_small","cottages:fence_small", "cottages:fence_small" },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:fence_small 3",
+ recipe = {
+ {"cottages:fence_end" },
+ }
+})
+
+
+
+
diff --git a/cottages/nodes_furniture.lua b/cottages/nodes_furniture.lua
new file mode 100644
index 0000000..0be9b6e
--- /dev/null
+++ b/cottages/nodes_furniture.lua
@@ -0,0 +1,599 @@
+---------------------------------------------------------------------------------------
+-- furniture
+---------------------------------------------------------------------------------------
+-- contains:
+-- * a bed seperated into foot and head reagion so that it can be placed manually; it has
+-- no other functionality than decoration!
+-- * a sleeping mat - mostly for NPC that cannot afford a bet yet
+-- * bench - if you don't have 3dforniture:chair, then this is the next best thing
+-- * table - very simple one
+-- * shelf - for stroring things; this one is 3d
+-- * stovepipe - so that the smoke from the furnace can get away
+-- * washing place - put it over a water source and you can 'wash' yourshelf
+---------------------------------------------------------------------------------------
+-- TODO: change the textures of the bed (make the clothing white, foot path not entirely covered with cloth)
+
+local S = cottages.S
+
+-- a bed without functionality - just decoration
+minetest.register_node("cottages:bed_foot", {
+ description = S("Bed (foot region)"),
+ drawtype = "nodebox",
+ tiles = {"cottages_beds_bed_top_bottom.png", cottages.texture_furniture, "cottages_beds_bed_side.png", "cottages_beds_bed_side.png", "cottages_beds_bed_side.png", "cottages_beds_bed_side.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ -- bed
+ {-0.5, 0.0, -0.5, 0.5, 0.3, 0.5},
+
+ -- stützen
+ {-0.5, -0.5, -0.5, -0.4, 0.5, -0.4},
+ { 0.4,-0.5, -0.5, 0.5, 0.5, -0.4},
+
+ -- Querstrebe
+ {-0.4, 0.3, -0.5, 0.4, 0.5, -0.4}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.3, 0.5},
+ }
+ },
+ is_ground_content = false,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ return cottages.sleep_in_bed( pos, node, clicker, itemstack, pointed_thing );
+ end
+})
+
+-- the bed is split up in two parts to avoid destruction of blocks on placement
+minetest.register_node("cottages:bed_head", {
+ description = S("Bed (head region)"),
+ drawtype = "nodebox",
+ tiles = {"cottages_beds_bed_top_top.png", cottages.texture_furniture, "cottages_beds_bed_side_top_r.png", "cottages_beds_bed_side_top_l.png", cottages.texture_furniture, "cottages_beds_bed_side.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ -- bed
+ {-0.5, 0.0, -0.5, 0.5, 0.3, 0.5},
+
+ -- stützen
+ {-0.5,-0.5, 0.4, -0.4, 0.5, 0.5},
+ { 0.4,-0.5, 0.4, 0.5, 0.5, 0.5},
+
+ -- Querstrebe
+ {-0.4, 0.3, 0.4, 0.4, 0.5, 0.5}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.3, 0.5},
+ }
+ },
+ is_ground_content = false,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ return cottages.sleep_in_bed( pos, node, clicker, itemstack, pointed_thing );
+ end
+})
+
+
+-- the basic version of a bed - a sleeping mat
+-- to facilitate upgrade path straw mat -> sleeping mat -> bed, this uses a nodebox
+minetest.register_node("cottages:sleeping_mat", {
+ description = S("sleeping mat"),
+ drawtype = 'nodebox',
+ tiles = { 'cottages_sleepingmat.png' }, -- done by VanessaE
+ wield_image = 'cottages_sleepingmat.png',
+ inventory_image = 'cottages_sleepingmat.png',
+ sunlight_propagates = true,
+ paramtype = 'light',
+ paramtype2 = "facedir",
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "wallmounted",
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.48, -0.5,-0.48, 0.48, -0.45, 0.48},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.48, -0.5,-0.48, 0.48, -0.25, 0.48},
+ }
+ },
+ is_ground_content = false,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ return cottages.sleep_in_bed( pos, node, clicker, itemstack, pointed_thing );
+ end
+})
+
+
+
+-- furniture; possible replacement: 3dforniture:chair
+minetest.register_node("cottages:bench", {
+ drawtype = "nodebox",
+ description = S("simple wooden bench"),
+ tiles = {"cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ -- sitting area
+ {-0.5, -0.15, 0.1, 0.5, -0.05, 0.5},
+
+ -- stützen
+ {-0.4, -0.5, 0.2, -0.3, -0.15, 0.4},
+ { 0.3, -0.5, 0.2, 0.4, -0.15, 0.4},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0, 0.5, 0, 0.5},
+ }
+ },
+ is_ground_content = false,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ return cottages.sit_on_bench( pos, node, clicker, itemstack, pointed_thing );
+ end,
+})
+
+
+-- a simple table; possible replacement: 3dforniture:table
+local cottages_table_def = {
+ description = S("table"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.1, -0.5, -0.1, 0.1, 0.3, 0.1},
+ { -0.5, 0.3, -0.5, 0.5, 0.4, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, 0.4, 0.5},
+ },
+ },
+ is_ground_content = false,
+}
+
+
+-- search for the workbench in AdventureTest
+local workbench = minetest.registered_nodes[ "workbench:3x3"];
+if( workbench ) then
+ cottages_table_def.tiles = {workbench.tiles[1], cottages_table_def.tiles[1]};
+ cottages_table_def.on_rightclick = workbench.on_rightclick;
+end
+-- search for the workbench from RealTEst
+workbench = minetest.registered_nodes[ "workbench:work_bench_birch"];
+if( workbench ) then
+ cottages_table_def.tiles = {workbench.tiles[1], cottages_table_def.tiles[1]};
+ cottages_table_def.on_construct = workbench.on_construct;
+ cottages_table_def.can_dig = workbench.can_dig;
+ cottages_table_def.on_metadata_inventory_take = workbench.on_metadata_inventory_take;
+ cottages_table_def.on_metadata_inventory_move = workbench.on_metadata_inventory_move;
+ cottages_table_def.on_metadata_inventory_put = workbench.on_metadata_inventory_put;
+end
+
+minetest.register_node("cottages:table", cottages_table_def );
+
+-- looks better than two slabs impersonating a shelf; also more 3d than a bookshelf
+-- the infotext shows if it's empty or not
+minetest.register_node("cottages:shelf", {
+ description = S("open storage shelf"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+
+ { -0.5, -0.5, -0.3, -0.4, 0.5, 0.5},
+ { 0.4, -0.5, -0.3, 0.5, 0.5, 0.5},
+
+ { -0.5, -0.2, -0.3, 0.5, -0.1, 0.5},
+ { -0.5, 0.3, -0.3, 0.5, 0.4, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ },
+ },
+
+ on_construct = function(pos)
+
+ local meta = minetest.get_meta(pos);
+
+ meta:set_string("formspec",
+ "size[8,8]"..
+ "list[current_name;main;0,0;8,3;]"..
+ "list[current_player;main;0,4;8,4;]")
+ meta:set_string("infotext", S("open storage shelf"))
+ local inv = meta:get_inventory();
+ inv:set_size("main", 24);
+ end,
+
+ can_dig = function( pos,player )
+ local meta = minetest.get_meta( pos );
+ local inv = meta:get_inventory();
+ return inv:is_empty("main");
+ end,
+
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta( pos );
+ meta:set_string('infotext', S('open storage shelf (in use)'));
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta( pos );
+ local inv = meta:get_inventory();
+ if( inv:is_empty("main")) then
+ meta:set_string('infotext', S('open storage shelf (empty)'));
+ end
+ end,
+ is_ground_content = false,
+
+
+})
+
+-- so that the smoke from a furnace can get out of a building
+minetest.register_node("cottages:stovepipe", {
+ description = S("stovepipe"),
+ drawtype = "nodebox",
+ tiles = {"cottages_steel_block.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { 0.20, -0.5, 0.20, 0.45, 0.5, 0.45},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { 0.20, -0.5, 0.20, 0.45, 0.5, 0.45},
+ },
+ },
+ is_ground_content = false,
+})
+
+
+-- this washing place can be put over a water source (it is open at the bottom)
+minetest.register_node("cottages:washing", {
+ description = S("washing place"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_clay.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, -0.2, -0.2},
+
+ { -0.5, -0.5, -0.2, -0.4, 0.2, 0.5},
+ { 0.4, -0.5, -0.2, 0.5, 0.2, 0.5},
+
+ { -0.4, -0.5, 0.4, 0.4, 0.2, 0.5},
+ { -0.4, -0.5, -0.2, 0.4, 0.2, -0.1},
+
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, 0.2, 0.5},
+ },
+ },
+ on_rightclick = function(pos, node, player)
+ -- works only with water beneath
+ local node_under = minetest.get_node( {x=pos.x, y=(pos.y-1), z=pos.z} );
+ if( not( node_under ) or node_under.name == "ignore" or (node_under.name ~= 'default:water_source' and node_under.name ~= 'default:water_flowing')) then
+ minetest.chat_send_player( player:get_player_name(), S("Sorry. This washing place is out of water. Please place it above water!"));
+ else
+ minetest.chat_send_player( player:get_player_name(), S("You feel much cleaner after some washing."));
+ end
+ end,
+ is_ground_content = false,
+
+})
+
+
+---------------------------------------------------------------------------------------
+-- functions for sitting or sleeping
+---------------------------------------------------------------------------------------
+
+cottages.allow_sit = function( player )
+ -- no check possible
+ if( not( player.get_player_velocity )) then
+ return true;
+ end
+ local velo = player:get_player_velocity();
+ if( not( velo )) then
+ return false;
+ end
+ local max_velo = 0.0001;
+ if( math.abs(velo.x) < max_velo
+ and math.abs(velo.y) < max_velo
+ and math.abs(velo.z) < max_velo ) then
+ return true;
+ end
+ return false;
+end
+
+cottages.sit_on_bench = function( pos, node, clicker, itemstack, pointed_thing )
+ if( not( clicker ) or not( default.player_get_animation ) or not( cottages.allow_sit( clicker ))) then
+ return;
+ end
+
+ local animation = default.player_get_animation( clicker );
+ local pname = clicker:get_player_name();
+
+ if( animation and animation.animation=="sit") then
+ default.player_attached[pname] = false
+ clicker:setpos({x=pos.x,y=pos.y-0.5,z=pos.z})
+ clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
+ clicker:set_physics_override(1, 1, 1)
+ default.player_set_animation(clicker, "stand", 30)
+ else
+ -- the bench is not centered; prevent the player from sitting on air
+ local p2 = {x=pos.x, y=pos.y, z=pos.z};
+ if not( node ) or node.param2 == 0 then
+ p2.z = p2.z+0.3;
+ elseif node.param2 == 1 then
+ p2.x = p2.x+0.3;
+ elseif node.param2 == 2 then
+ p2.z = p2.z-0.3;
+ elseif node.param2 == 3 then
+ p2.x = p2.x-0.3;
+ end
+
+ clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0})
+ clicker:setpos( p2 )
+ default.player_set_animation(clicker, "sit", 30)
+ clicker:set_physics_override(0, 0, 0)
+ default.player_attached[pname] = true
+ end
+end
+
+cottages.sleep_in_bed = function( pos, node, clicker, itemstack, pointed_thing )
+ if( not( clicker ) or not( node ) or not( node.name ) or not( pos ) or not( cottages.allow_sit( clicker))) then
+ return;
+ end
+
+ local animation = default.player_get_animation( clicker );
+ local pname = clicker:get_player_name();
+
+ local place_name = 'place';
+ -- if only one node is present, the player can only sit;
+ -- sleeping requires a bed head+foot or two sleeping mats
+ local allow_sleep = false;
+ local new_animation = 'sit';
+
+ -- let players get back up
+ if( animation and animation.animation=="lay" ) then
+ default.player_attached[pname] = false
+ clicker:setpos({x=pos.x,y=pos.y-0.5,z=pos.z})
+ clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
+ clicker:set_physics_override(1, 1, 1)
+ default.player_set_animation(clicker, "stand", 30)
+ minetest.chat_send_player( pname, 'That was enough sleep for now. You stand up again.');
+ return;
+ end
+
+ local second_node_pos = {x=pos.x, y=pos.y, z=pos.z};
+ -- the node that will contain the head of the player
+ local p = {x=pos.x, y=pos.y, z=pos.z};
+ -- the player's head is pointing in this direction
+ local dir = node.param2;
+ -- it would be odd to sleep in half a bed
+ if( node.name=='cottages:bed_head' ) then
+ if( node.param2==0 ) then
+ second_node_pos.z = pos.z-1;
+ elseif( node.param2==1) then
+ second_node_pos.x = pos.x-1;
+ elseif( node.param2==2) then
+ second_node_pos.z = pos.z+1;
+ elseif( node.param2==3) then
+ second_node_pos.x = pos.x+1;
+ end
+ local node2 = minetest.get_node( second_node_pos );
+ if( not( node2 ) or not( node2.param2 ) or not( node.param2 )
+ or node2.name ~= 'cottages:bed_foot'
+ or node2.param2 ~= node.param2 ) then
+ allow_sleep = false;
+ else
+ allow_sleep = true;
+ end
+ place_name = 'bed';
+
+ -- if the player clicked on the foot of the bed, locate the head
+ elseif( node.name=='cottages:bed_foot' ) then
+ if( node.param2==2 ) then
+ second_node_pos.z = pos.z-1;
+ elseif( node.param2==3) then
+ second_node_pos.x = pos.x-1;
+ elseif( node.param2==0) then
+ second_node_pos.z = pos.z+1;
+ elseif( node.param2==1) then
+ second_node_pos.x = pos.x+1;
+ end
+ local node2 = minetest.get_node( second_node_pos );
+ if( not( node2 ) or not( node2.param2 ) or not( node.param2 )
+ or node2.name ~= 'cottages:bed_head'
+ or node2.param2 ~= node.param2 ) then
+ allow_sleep = false;
+ else
+ allow_sleep = true;
+ end
+ if( allow_sleep==true ) then
+ p = {x=second_node_pos.x, y=second_node_pos.y, z=second_node_pos.z};
+ end
+ place_name = 'bed';
+
+ elseif( node.name=='cottages:sleeping_mat' or node.name=='cottages:straw_mat') then
+ place_name = 'mat';
+ dir = node.param2;
+ allow_sleep = false;
+ -- search for a second mat right next to this one
+ local offset = {{x=0,z=-1}, {x=-1,z=0}, {x=0,z=1}, {x=1,z=0}};
+ for i,off in ipairs( offset ) do
+ node2 = minetest.get_node( {x=pos.x+off.x, y=pos.y, z=pos.z+off.z} );
+ if( node2.name == 'cottages:sleeping_mat' or node2.name=='cottages:straw_mat' ) then
+ -- if a second mat is found, sleeping is possible
+ allow_sleep = true;
+ dir = i-1;
+ end
+ end
+ end
+
+ -- set the right height for the bed
+ if( place_name=='bed' ) then
+ p.y = p.y+0.4;
+ end
+ if( allow_sleep==true ) then
+ -- set the right position (middle of the bed)
+ if( dir==0 ) then
+ p.z = p.z-0.5;
+ elseif( dir==1 ) then
+ p.x = p.x-0.5;
+ elseif( dir==2 ) then
+ p.z = p.z+0.5;
+ elseif( dir==3 ) then
+ p.x = p.x+0.5;
+ end
+ end
+
+ if( default.player_attached[pname] and animation.animation=="sit") then
+ -- just changing the animation...
+ if( allow_sleep==true ) then
+ default.player_set_animation(clicker, "lay", 30)
+ clicker:set_eye_offset({x=0,y=-14,z=2}, {x=0,y=0,z=0})
+ minetest.chat_send_player( pname, 'You lie down and take a nap. A right-click will wake you up.');
+ return;
+ -- no sleeping on this place
+ else
+ default.player_attached[pname] = false
+ clicker:setpos({x=pos.x,y=pos.y-0.5,z=pos.z})
+ clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
+ clicker:set_physics_override(1, 1, 1)
+ default.player_set_animation(clicker, "stand", 30)
+ minetest.chat_send_player( pname, 'That was enough sitting around for now. You stand up again.');
+ return;
+ end
+ end
+
+
+ clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0})
+ clicker:setpos( p );
+ default.player_set_animation(clicker, new_animation, 30)
+ clicker:set_physics_override(0, 0, 0)
+ default.player_attached[pname] = true
+
+ if( allow_sleep==true) then
+ minetest.chat_send_player( pname, 'Aaah! What a comftable '..place_name..'. A second right-click will let you sleep.');
+ else
+ minetest.chat_send_player( pname, 'Comftable, but not good enough for a nap. Right-click again if you want to get back up.');
+ end
+end
+
+---------------------------------------------------------------------------------------
+-- crafting receipes
+---------------------------------------------------------------------------------------
+minetest.register_craft({
+ output = "cottages:bed_foot",
+ recipe = {
+ {cottages.craftitem_wool, "", "", },
+ {cottages.craftitem_wood, "", "", },
+ {cottages.craftitem_stick, "", "", }
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:bed_head",
+ recipe = {
+ {"", "", cottages.craftitem_wool, },
+ {"", cottages.craftitem_stick, cottages.craftitem_wood, },
+ {"", "", cottages.craftitem_stick, }
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:sleeping_mat 3",
+ recipe = {
+ {"cottages:wool_tent", "cottages:straw_mat","cottages:straw_mat" }
+ }
+})
+
+
+minetest.register_craft({
+ output = "cottages:table",
+ recipe = {
+ {"", cottages.craftitem_slab_wood, "", },
+ {"", cottages.craftitem_stick, "" }
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:bench",
+ recipe = {
+ {"", cottages.craftitem_wood, "", },
+ {cottages.craftitem_stick, "", cottages.craftitem_stick, }
+ }
+})
+
+
+minetest.register_craft({
+ output = "cottages:shelf",
+ recipe = {
+ {cottages.craftitem_stick, cottages.craftitem_wood, cottages.craftitem_stick, },
+ {cottages.craftitem_stick, cottages.craftitem_wood, cottages.craftitem_stick, },
+ {cottages.craftitem_stick, "", cottages.craftitem_stick}
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:washing 2",
+ recipe = {
+ {cottages.craftitem_stick, },
+ {cottages.craftitem_clay, },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:stovepipe 2",
+ recipe = {
+ {cottages.craftitem_steel, '', cottages.craftitem_steel},
+ }
+})
diff --git a/cottages/nodes_historic.lua b/cottages/nodes_historic.lua
new file mode 100644
index 0000000..0a81d23
--- /dev/null
+++ b/cottages/nodes_historic.lua
@@ -0,0 +1,291 @@
+---------------------------------------------------------------------------------------
+-- decoration and building material
+---------------------------------------------------------------------------------------
+-- * includes a wagon wheel that can be used as decoration on walls or to build (stationary) wagons
+-- * dirt road - those are more natural in small old villages than cobble roads
+-- * loam - no, old buildings are usually not built out of clay; loam was used
+-- * straw - useful material for roofs
+-- * glass pane - an improvement compared to fence posts as windows :-)
+---------------------------------------------------------------------------------------
+
+local S = cottages.S
+
+-- can be used to buid real stationary wagons or attached to walls as decoration
+minetest.register_node("cottages:wagon_wheel", {
+ description = S("wagon wheel"),
+ drawtype = "signlike",
+ tiles = {"cottages_wagonwheel.png"}, -- done by VanessaE!
+ inventory_image = "cottages_wagonwheel.png",
+ wield_image = "cottages_wagonwheel.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "wallmounted",
+ },
+ groups = {choppy=2,dig_immediate=2,attached_node=1},
+ legacy_wallmounted = true,
+ sounds = default.node_sound_defaults(),
+ is_ground_content = false,
+})
+
+
+-- a nice dirt road for small villages or paths to fields
+minetest.register_node("cottages:feldweg", {
+ description = S("dirt road"),
+ tiles = {"cottages_feldweg.png","default_dirt.png", "default_dirt.png^default_grass_side.png"},
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults,
+ is_ground_content = false,
+})
+
+
+-- people didn't use clay for houses; they did build with loam
+minetest.register_node("cottages:loam", {
+ description = S("loam"),
+ tiles = {"cottages_loam.png"},
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults,
+ is_ground_content = false,
+})
+
+-- create stairs if possible
+if( minetest.get_modpath("stairs") and stairs and stairs.register_stair_and_slab) then
+ stairs.register_stair_and_slab("feldweg", "cottages:feldweg",
+ {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ {"cottages_feldweg.png","default_dirt.png", "default_grass.png","default_grass.png","cottages_feldweg.png","cottages_feldweg.png"},
+ S("Dirt Road Stairs"),
+ S("Dirt Road, half height"),
+ default.node_sound_dirt_defaults())
+
+ stairs.register_stair_and_slab("loam", "cottages:loam",
+ {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ {"cottages_loam.png"},
+ S("Loam Stairs"),
+ S("Loam Slab"),
+ default.node_sound_dirt_defaults())
+
+ if( minetest.registered_nodes["default:clay"]) then
+ stairs.register_stair_and_slab("clay", "default:clay",
+ {crumbly=3},
+ {"cottages_clay.png"},
+ S("Clay Stairs"),
+ S("Clay Slab"),
+ default.node_sound_dirt_defaults())
+ end
+end
+
+
+-- straw is a common material for places where animals are kept indoors
+-- right now, this block mostly serves as a placeholder
+minetest.register_node("cottages:straw_ground", {
+ description = S("straw ground for animals"),
+ tiles = {"cottages_darkage_straw.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png","cottages_loam.png"},
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults,
+ is_ground_content = false,
+})
+
+
+-- note: these houses look good with a single fence pile as window! the glass pane is the version for 'richer' inhabitants
+minetest.register_node("cottages:glass_pane", {
+ description = S("simple glass pane (centered)"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_glass_pane.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.05, 0.5, 0.5, 0.05},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.05, 0.5, 0.5, 0.05},
+ },
+ },
+ is_ground_content = false,
+})
+
+
+minetest.register_node("cottages:glass_pane_side", {
+ description = S("simple glass pane"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_glass_pane.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.40, 0.5, 0.5, -0.50},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.40, 0.5, 0.5, -0.50},
+ },
+ },
+ is_ground_content = false,
+})
+
+
+---------------------------------------------------------------------------------------
+-- a very small wooden slab
+---------------------------------------------------------------------------------------
+minetest.register_node("cottages:wood_flat", {
+ description = S("flat wooden planks"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_minimal_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.50, 0.5, -0.5+1/16, 0.50},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.50, 0.5, -0.5+1/16, 0.50},
+ },
+ },
+ is_ground_content = false,
+ on_place = minetest.rotate_node,
+})
+
+---------------------------------------------------------------------------------------
+-- useful for building tents
+---------------------------------------------------------------------------------------
+minetest.register_node("cottages:wool_tent", {
+ description = S("wool for tents"),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"cottages_wool.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.50, 0.5, -0.5+1/16, 0.50},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.50, 0.5, -0.5+1/16, 0.50},
+ },
+ },
+ is_ground_content = false,
+ on_place = minetest.rotate_node,
+})
+
+-- a fallback for cases in which there is no wool
+minetest.register_node("cottages:wool", {
+ description = "Wool",
+ tiles = {"cottages_wool.png"},
+ is_ground_content = false,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
+})
+
+
+---------------------------------------------------------------------------------------
+-- crafting receipes
+---------------------------------------------------------------------------------------
+minetest.register_craft({
+ output = "cottages:wagon_wheel 3",
+ recipe = {
+ {cottages.craftitem_iron, cottages.craftitem_stick, cottages.craftitem_iron },
+ {cottages.craftitem_stick, cottages.craftitem_steel, cottages.craftitem_stick },
+ {cottages.craftitem_iron, cottages.craftitem_stick, cottages.craftitem_iron }
+ }
+})
+
+-- run a wagon wheel over dirt :-)
+minetest.register_craft({
+ output = "cottages:feldweg 4",
+ recipe = {
+ {"", "cottages:wagon_wheel", "" },
+ {cottages.craftitem_dirt,cottages.craftitem_dirt,cottages.craftitem_dirt }
+ },
+ replacements = { {'cottages:wagon_wheel', 'cottages:wagon_wheel'}, }
+})
+
+minetest.register_craft({
+ output = "cottages:loam 4",
+ recipe = {
+ {cottages.craftitem_sand},
+ {cottages.craftitem_clay}
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:straw_ground 2",
+ recipe = {
+ {"cottages:straw_mat" },
+ {"cottages:loam"}
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:glass_pane 4",
+ recipe = {
+ {cottages.craftitem_stick, cottages.craftitem_stick, cottages.craftitem_stick },
+ {cottages.craftitem_stick, cottages.craftitem_glass, cottages.craftitem_stick },
+ {cottages.craftitem_stick, cottages.craftitem_stick, cottages.craftitem_stick }
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:glass_pane_side",
+ recipe = {
+ {"cottages:glass_pane"},
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:glass_pane",
+ recipe = {
+ {"cottages:glass_pane_side"},
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:wood_flat 16",
+ recipe = {
+ {cottages.craftitem_stick, "farming:string",cottages.craftitem_stick },
+ {cottages.craftitem_stick, "", cottages.craftitem_stick },
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:wool_tent 2",
+ recipe = {
+ {"farming:string", "farming:string"},
+ {"",cottages.craftitem_stick}
+ }
+})
+
+minetest.register_craft({
+ output = "cottages:wool",
+ recipe = {
+ {"cottages:wool_tent", "cottages:wool_tent"}
+ }
+})
diff --git a/cottages/nodes_roof.lua b/cottages/nodes_roof.lua
new file mode 100644
index 0000000..11174d8
--- /dev/null
+++ b/cottages/nodes_roof.lua
@@ -0,0 +1,222 @@
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = cottages.S
+
+---------------------------------------------------------------------------------------
+-- roof parts
+---------------------------------------------------------------------------------------
+-- a better roof than the normal stairs; can be replaced by stairs:stair_wood
+
+
+-- create the three basic roof parts plus receipes for them;
+cottages.register_roof = function( name, tiles, basic_material, homedecor_alternative )
+
+ minetest.register_node("cottages:roof_"..name, {
+ description = S("Roof "..name),
+ drawtype = "nodebox",
+ --tiles = {cottages.textures_roof_wood,cottages.texture_roof_sides,cottages.texture_roof_sides,cottages.texture_roof_sides,cottages.texture_roof_sides,cottages.textures_roof_wood},
+ tiles = tiles,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ is_ground_content = false,
+ })
+
+ -- a better roof than the normal stairs; this one is for usage directly on top of walls (it has the form of a stair)
+ minetest.register_node("cottages:roof_connector_"..name, {
+ description = S("Roof connector "..name),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = tiles,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ is_ground_content = false,
+ })
+
+ -- this one is the slab version of the above roof
+ minetest.register_node("cottages:roof_flat_"..name, {
+ description = S("Roof (flat) "..name),
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ -- this one is from all sides - except from the underside - of the given material
+ tiles = { tiles[1], tiles[2], tiles[1], tiles[1], tiles[1], tiles[1] };
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ },
+ is_ground_content = false,
+ })
+
+
+ if( not( homedecor_alternative )
+ or ( minetest.get_modpath("homedecor") ~= nil )) then
+
+ minetest.register_craft({
+ output = "cottages:roof_"..name.." 6",
+ recipe = {
+ {'', '', basic_material },
+ {'', basic_material, '' },
+ {basic_material, '', '' }
+ }
+ })
+ end
+
+ -- make those roof parts that use homedecor craftable without that mod
+ if( homedecor_alternative ) then
+ basic_material = 'cottages:roof_wood';
+
+ minetest.register_craft({
+ output = "cottages:roof_"..name.." 3",
+ recipe = {
+ {homedecor_alternative, '', basic_material },
+ {'', basic_material, '' },
+ {basic_material, '', '' }
+ }
+ })
+ end
+
+
+ minetest.register_craft({
+ output = "cottages:roof_connector_"..name,
+ recipe = {
+ {'cottages:roof_'..name },
+ {cottages.craftitem_wood },
+ }
+ })
+
+ minetest.register_craft({
+ output = "cottages:roof_flat_"..name..' 2',
+ recipe = {
+ {'cottages:roof_'..name, 'cottages:roof_'..name },
+ }
+ })
+
+ -- convert flat roofs back to normal roofs
+ minetest.register_craft({
+ output = "cottages:roof_"..name,
+ recipe = {
+ {"cottages:roof_flat_"..name, "cottages:roof_flat_"..name }
+ }
+ })
+
+end -- of cottages.register_roof( name, tiles, basic_material )
+
+
+
+
+---------------------------------------------------------------------------------------
+-- add the diffrent roof types
+---------------------------------------------------------------------------------------
+cottages.register_roof( 'straw',
+ {"cottages_darkage_straw.png","cottages_darkage_straw.png",
+ "cottages_darkage_straw.png","cottages_darkage_straw.png",
+ "cottages_darkage_straw.png","cottages_darkage_straw.png"},
+ 'cottages:straw_mat', nil );
+cottages.register_roof( 'reet',
+ {"cottages_reet.png","cottages_reet.png",
+ "cottages_reet.png","cottages_reet.png",
+ "cottages_reet.png","cottages_reet.png"},
+ cottages.craftitem_papyrus, nil );
+cottages.register_roof( 'wood',
+ {cottages.textures_roof_wood, cottages.texture_roof_sides,
+ cottages.texture_roof_sides, cottages.texture_roof_sides,
+ cottages.texture_roof_sides, cottages.textures_roof_wood},
+ cottages.craftitem_wood, nil);
+cottages.register_roof( 'black',
+ {"cottages_homedecor_shingles_asphalt.png", cottages.texture_roof_sides,
+ cottages.texture_roof_sides, cottages.texture_roof_sides,
+ cottages.texture_roof_sides, "cottages_homedecor_shingles_asphalt.png"},
+ 'homedecor:shingles_asphalt', cottages.craftitem_coal_lump);
+cottages.register_roof( 'red',
+ {"cottages_homedecor_shingles_terracotta.png", cottages.texture_roof_sides,
+ cottages.texture_roof_sides, cottages.texture_roof_sides,
+ cottages.texture_roof_sides, "cottages_homedecor_shingles_terracotta.png"},
+ 'homedecor:shingles_terracotta', cottages.craftitem_clay_brick);
+cottages.register_roof( 'brown',
+ {"cottages_homedecor_shingles_wood.png", cottages.texture_roof_sides,
+ cottages.texture_roof_sides, cottages.texture_roof_sides,
+ cottages.texture_roof_sides, "cottages_homedecor_shingles_wood.png"},
+ 'homedecor:shingles_wood', cottages.craftitem_dirt);
+cottages.register_roof( 'slate',
+ {"cottages_slate.png", cottages.texture_roof_sides,
+ "cottages_slate.png", "cottages_slate.png",
+ cottages.texture_roof_sides,"cottages_slate.png"},
+ cottages.craftitem_stone, nil);
+
+
+---------------------------------------------------------------------------------------
+-- slate roofs are sometimes on vertical fronts of houses
+---------------------------------------------------------------------------------------
+minetest.register_node("cottages:slate_vertical", {
+ description = S("Vertical Slate"),
+ tiles = {"cottages_slate.png",cottages.texture_roof_sides,"cottages_slate.png","cottages_slate.png",cottages.texture_roof_sides,"cottages_slate.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=2, stone=1},
+ sounds = default.node_sound_stone_defaults(),
+ is_ground_content = false,
+})
+
+
+minetest.register_craft({
+ output = "cottages:slate_vertical",
+ recipe = { {cottages.craftitem_stone, cottages.craftitem_wood, '' }
+ }
+});
+
+---------------------------------------------------------------------------------------
+-- Reed might also be needed as a full block
+---------------------------------------------------------------------------------------
+minetest.register_node("cottages:reet", {
+ description = S("Reet for thatching"),
+ tiles = {"cottages_reet.png"},
+ groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ is_ground_content = false,
+})
+
+
+minetest.register_craft({
+ output = "cottages:reet",
+ recipe = { {cottages.craftitem_papyrus,cottages.craftitem_papyrus},
+ {cottages.craftitem_papyrus,cottages.craftitem_papyrus},
+ },
+})
diff --git a/cottages/nodes_straw.lua b/cottages/nodes_straw.lua
new file mode 100644
index 0000000..a26b728
--- /dev/null
+++ b/cottages/nodes_straw.lua
@@ -0,0 +1,578 @@
+---------------------------------------------------------------------------------------
+-- straw - a very basic material
+---------------------------------------------------------------------------------------
+-- * straw mat - for animals and very poor NPC; also basis for other straw things
+-- * straw bale - well, just a good source for building and decoration
+
+local S = cottages.S
+
+local cottages_can_use = function( meta, player )
+ if( not( player) or not( meta )) then
+ return false;
+ end
+ local pname = player:get_player_name();
+ local owner = meta:get_string('owner' );
+ if( not(owner) or owner=="" or owner==pname ) then
+ return true;
+ end
+ return false;
+end
+
+
+-- an even simpler from of bed - usually for animals
+-- it is a nodebox and not wallmounted because that makes it easier to replace beds with straw mats
+minetest.register_node("cottages:straw_mat", {
+ description = S("layer of straw"),
+ drawtype = 'nodebox',
+ tiles = { 'cottages_darkage_straw.png' }, -- done by VanessaE
+ wield_image = 'cottages_darkage_straw.png',
+ inventory_image = 'cottages_darkage_straw.png',
+ sunlight_propagates = true,
+ paramtype = 'light',
+ paramtype2 = "facedir",
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.48, -0.5,-0.48, 0.48, -0.45, 0.48},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.48, -0.5,-0.48, 0.48, -0.25, 0.48},
+ }
+ },
+ is_ground_content = false,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ return cottages.sleep_in_bed( pos, node, clicker, itemstack, pointed_thing );
+ end
+})
+
+-- straw bales are a must for farming environments; if you for some reason do not have the darkage mod installed, this here gets you a straw bale
+minetest.register_node("cottages:straw_bale", {
+ drawtype = "nodebox",
+ description = S("straw bale"),
+ tiles = {"cottages_darkage_straw_bale.png"},
+ paramtype = "light",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ -- the bale is slightly smaller than a full node
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.45, -0.5,-0.45, 0.45, 0.45, 0.45},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.45, -0.5,-0.45, 0.45, 0.45, 0.45},
+ }
+ },
+ is_ground_content = false,
+})
+
+-- just straw
+minetest.register_node("cottages:straw", {
+ drawtype = "normal",
+ description = S("straw"),
+ tiles = {"cottages_darkage_straw.png"},
+ groups = {snappy=3,choppy=3,oddly_breakable_by_hand=3,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ -- the bale is slightly smaller than a full node
+ is_ground_content = false,
+})
+
+
+local cottages_formspec_treshing_floor =
+ "size[8,8]"..
+ "image[1.5,0;1,1;"..cottages.texture_stick.."]"..
+ "image[0,1;1,1;farming_wheat.png]"..
+ "list[current_name;harvest;1,1;2,1;]"..
+ "list[current_name;straw;5,0;2,2;]"..
+ "list[current_name;seeds;5,2;2,2;]"..
+ "label[1,0.5;"..S("Harvested wheat:").."]"..
+ "label[4,0.0;"..S("Straw:").."]"..
+ "label[4,2.0;"..S("Seeds:").."]"..
+ "label[0,-0.5;"..S("Threshing floor").."]"..
+ "label[0,2.5;"..S("Punch threshing floor with a stick").."]"..
+ "label[0,3.0;"..S("to get straw and seeds from wheat.").."]"..
+ "list[current_player;main;0,4;8,4;]";
+
+minetest.register_node("cottages:threshing_floor", {
+ drawtype = "nodebox",
+ description = S("threshing floor"),
+-- TODO: stone also looks pretty well for this
+ tiles = {"cottages_junglewood.png^farming_wheat.png","cottages_junglewood.png","cottages_junglewood.png^"..cottages.texture_stick},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ is_ground_content = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.50, -0.5,-0.50, 0.50, -0.40, 0.50},
+
+ {-0.50, -0.4,-0.50,-0.45, -0.20, 0.50},
+ { 0.45, -0.4,-0.50, 0.50, -0.20, 0.50},
+
+ {-0.45, -0.4,-0.50, 0.45, -0.20,-0.45},
+ {-0.45, -0.4, 0.45, 0.45, -0.20, 0.50},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.50, -0.5,-0.50, 0.50, -0.20, 0.50},
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("infotext", S("Threshing floor"));
+ local inv = meta:get_inventory();
+ inv:set_size("harvest", 2);
+ inv:set_size("straw", 4);
+ inv:set_size("seeds", 4);
+ meta:set_string("formspec", cottages_formspec_treshing_floor );
+ end,
+
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("owner", placer:get_player_name() or "");
+ meta:set_string("infotext", S("Threshing floor (owned by %s)"):format(meta:get_string("owner") or ""));
+ meta:set_string("formspec",
+ cottages_formspec_treshing_floor..
+ "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string("owner") or "").."]" );
+ end,
+
+ can_dig = function(pos,player)
+
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory();
+ local owner = meta:get_string('owner');
+
+ if( not( inv:is_empty("harvest"))
+ or not( inv:is_empty("straw"))
+ or not( inv:is_empty("seeds"))
+ or not( player )
+ or ( owner and owner ~= '' and player:get_player_name() ~= owner )) then
+
+ return false;
+ end
+ return true;
+ end,
+
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if( not( cottages_can_use( meta, player ))) then
+ return 0
+ end
+ return count;
+ end,
+
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ -- only accept input the threshing floor can use/process
+ if( listname=='straw'
+ or listname=='seeds'
+ or (listname=='harvest' and stack and stack:get_name() ~= 'farming:wheat' )) then
+ return 0;
+ end
+
+ if( not( cottages_can_use( meta, player ))) then
+ return 0
+ end
+ return stack:get_count()
+ end,
+
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if( not( cottages_can_use( meta, player ))) then
+ return 0
+ end
+ return stack:get_count()
+ end,
+
+
+ on_punch = function(pos, node, puncher)
+ if( not( pos ) or not( node ) or not( puncher )) then
+ return;
+ end
+ -- only punching with a normal stick is supposed to work
+ local wielded = puncher:get_wielded_item();
+ if( not( wielded )
+ or not( wielded:get_name() )
+ or not( minetest.registered_items[ wielded:get_name() ])
+ or not( minetest.registered_items[ wielded:get_name() ].groups )
+ or not( minetest.registered_items[ wielded:get_name() ].groups.stick )) then
+ return;
+ end
+ local name = puncher:get_player_name();
+
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory();
+
+ local input = inv:get_list('harvest');
+ -- we have two input slots
+ local stack1 = inv:get_stack( 'harvest', 1);
+ local stack2 = inv:get_stack( 'harvest', 2);
+
+ if( ( stack1:is_empty() and stack2:is_empty())
+ or( not( stack1:is_empty()) and stack1:get_name() ~= 'farming:wheat')
+ or( not( stack2:is_empty()) and stack2:get_name() ~= 'farming:wheat')) then
+
+-- minetest.chat_send_player( name, 'One of the input slots contains something else than wheat, or there is no wheat at all.');
+ -- update the formspec
+ meta:set_string("formspec",
+ cottages_formspec_treshing_floor..
+ "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string("owner") or "").."]" );
+ return;
+ end
+
+ -- on average, process 25 wheat at each punch (10..40 are possible)
+ local anz_wheat = 10 + math.random( 0, 30 );
+ -- we already made sure there is only wheat inside
+ local found_wheat = stack1:get_count() + stack2:get_count();
+
+ -- do not process more wheat than present in the input slots
+ if( found_wheat < anz_wheat ) then
+ anz_wheat = found_wheat;
+ end
+
+ local overlay1 = "^farming_wheat.png";
+ local overlay2 = "^cottages_darkage_straw.png";
+ local overlay3 = "^"..cottages.texture_wheat_seed;
+
+ -- this can be enlarged by a multiplicator if desired
+ local anz_straw = anz_wheat;
+ local anz_seeds = anz_wheat;
+
+ if( inv:room_for_item('straw','cottages:straw_mat '..tostring( anz_straw ))
+ and inv:room_for_item('seeds',cottages.craftitem_seed_wheat..' '..tostring( anz_seeds ))) then
+
+ -- the player gets two kind of output
+ inv:add_item("straw",'cottages:straw_mat '..tostring( anz_straw ));
+ inv:add_item("seeds",cottages.craftitem_seed_wheat..' '..tostring( anz_seeds ));
+ -- consume the wheat
+ inv:remove_item("harvest", 'farming:wheat '..tostring( anz_wheat ));
+
+ local anz_left = found_wheat - anz_wheat;
+ if( anz_left > 0 ) then
+-- minetest.chat_send_player( name, S('You have threshed %s wheat (%s are left).'):format(anz_wheat,anz_left));
+ else
+-- minetest.chat_send_player( name, S('You have threshed the last %s wheat.'):format(anz_wheat));
+ overlay1 = "";
+ end
+ end
+
+ local hud0 = puncher:hud_add({
+ hud_elem_type = "image",
+ scale = {x = 38, y = 38},
+ text = "cottages_junglewood.png^[colorize:#888888:128",
+ position = {x = 0.5, y = 0.5},
+ alignment = {x = 0, y = 0}
+ });
+
+ local hud1 = puncher:hud_add({
+ hud_elem_type = "image",
+ scale = {x = 15, y = 15},
+ text = "cottages_junglewood.png"..overlay1,
+ position = {x = 0.4, y = 0.5},
+ alignment = {x = 0, y = 0}
+ });
+ local hud2 = puncher:hud_add({
+ hud_elem_type = "image",
+ scale = {x = 15, y = 15},
+ text = "cottages_junglewood.png"..overlay2,
+ position = {x = 0.6, y = 0.35},
+ alignment = {x = 0, y = 0}
+ });
+ local hud3 = puncher:hud_add({
+ hud_elem_type = "image",
+ scale = {x = 15, y = 15},
+ text = "cottages_junglewood.png"..overlay3,
+ position = {x = 0.6, y = 0.65},
+ alignment = {x = 0, y = 0}
+ });
+
+ local hud4 = puncher:hud_add({
+ hud_elem_type = "text",
+ text = tostring( found_wheat-anz_wheat ),
+ number = 0x00CC00,
+ alignment = {x = 0, y = 0},
+ scale = {x = 100, y = 100}, -- bounding rectangle of the text
+ position = {x = 0.4, y = 0.5},
+ });
+ if( not( anz_straw )) then
+ anz_straw = "0";
+ end
+ if( not( anz_seed )) then
+ anz_seed = "0";
+ end
+ local hud5 = puncher:hud_add({
+ hud_elem_type = "text",
+ text = '+ '..tostring( anz_straw )..' straw',
+ number = 0x00CC00,
+ alignment = {x = 0, y = 0},
+ scale = {x = 100, y = 100}, -- bounding rectangle of the text
+ position = {x = 0.6, y = 0.35},
+ });
+ local hud6 = puncher:hud_add({
+ hud_elem_type = "text",
+ text = '+ '..tostring( anz_seed )..' seeds',
+ number = 0x00CC00,
+ alignment = {x = 0, y = 0},
+ scale = {x = 100, y = 100}, -- bounding rectangle of the text
+ position = {x = 0.6, y = 0.65},
+ });
+
+
+
+ minetest.after(2, function()
+ if( puncher ) then
+ puncher:hud_remove(hud1);
+ puncher:hud_remove(hud2);
+ puncher:hud_remove(hud3);
+ puncher:hud_remove(hud4);
+ puncher:hud_remove(hud5);
+ puncher:hud_remove(hud6);
+ puncher:hud_remove(hud0);
+ end
+ end)
+ end,
+})
+
+
+local cottages_handmill_formspec = "size[8,8]"..
+ "image[0,1;1,1;"..cottages.texture_wheat_seed.."]"..
+ "list[current_name;seeds;1,1;1,1;]"..
+ "list[current_name;flour;5,1;2,2;]"..
+ "label[0,0.5;"..S("Wheat seeds:").."]"..
+ "label[4,0.5;"..S("Flour:").."]"..
+ "label[0,-0.3;"..S("Mill").."]"..
+ "label[0,2.5;"..S("Punch this hand-driven mill").."]"..
+ "label[0,3.0;"..S("to convert wheat seeds into flour.").."]"..
+ "list[current_player;main;0,4;8,4;]";
+
+minetest.register_node("cottages:handmill", {
+ description = S("mill, powered by punching"),
+ drawtype = "mesh",
+ mesh = "cottages_handmill.obj",
+ tiles = {"cottages_stone.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ is_ground_content = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.50, -0.5,-0.50, 0.50, 0.25, 0.50},
+ }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {
+ {-0.50, -0.5,-0.50, 0.50, 0.25, 0.50},
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("infotext", S("Mill, powered by punching"));
+ local inv = meta:get_inventory();
+ inv:set_size("seeds", 1);
+ inv:set_size("flour", 4);
+ meta:set_string("formspec", cottages_handmill_formspec );
+ end,
+
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("owner", placer:get_player_name() or "");
+ meta:set_string("infotext", S("Mill, powered by punching (owned by %s)"):format(meta:get_string("owner") or ""));
+ meta:set_string("formspec",
+ cottages_handmill_formspec..
+ "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string('owner') or "").."]" );
+ end,
+
+ can_dig = function(pos,player)
+
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory();
+ local owner = meta:get_string('owner');
+
+ if( not( inv:is_empty("flour"))
+ or not( inv:is_empty("seeds"))
+ or not( player )
+ or ( owner and owner ~= '' and player:get_player_name() ~= owner )) then
+
+ return false;
+ end
+ return true;
+ end,
+
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if( not( cottages_can_use( meta, player ))) then
+ return 0
+ end
+ return count;
+ end,
+
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ -- only accept input the threshing floor can use/process
+ if( listname=='flour'
+ or (listname=='seeds' and stack and not( cottages.handmill_product[ stack:get_name()] ))) then
+ return 0;
+ end
+
+ if( not( cottages_can_use( meta, player ))) then
+ return 0
+ end
+ return stack:get_count()
+ end,
+
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if( not( cottages_can_use( meta, player ))) then
+ return 0
+ end
+ return stack:get_count()
+ end,
+
+ -- this code is very similar to the threshing floor; except that it has only one input- and output-slot
+ -- and does not require the usage of a stick
+ on_punch = function(pos, node, puncher)
+ if( not( pos ) or not( node ) or not( puncher )) then
+ return;
+ end
+ local name = puncher:get_player_name();
+
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory();
+
+ local input = inv:get_list('seeds');
+ local stack1 = inv:get_stack( 'seeds', 1);
+
+ if( ( stack1:is_empty())
+ or( not( stack1:is_empty())
+ and not( cottages.handmill_product[ stack1:get_name() ] ))) then
+
+ if not( stack1:is_empty() ) then
+ minetest.chat_send_player(name,"Nothing happens...")
+ end
+ -- update the formspec
+ meta:set_string("formspec",
+ cottages_handmill_formspec..
+ "label[2.5,-0.5;"..S("Owner: %s"):format(meta:get_string('owner') or "").."]" );
+ return;
+ end
+
+ -- turning the mill is a slow process; 1-21 flour are generated per turn
+ local anz = 1 + math.random( cottages.handmill_min_per_turn, cottages.handmill_max_per_turn );
+ -- we already made sure there is only wheat inside
+ local found = stack1:get_count();
+
+ -- do not process more wheat than present in the input slots
+ if( found < anz ) then
+ anz = found;
+ end
+
+ local product_stack = ItemStack( cottages.handmill_product[ stack1:get_name() ]);
+ local anz_result = anz;
+ -- items that produce more
+ if( product_stack:get_count()> 1 ) then
+ anz_result = anz * product_stack:get_count();
+ end
+
+ if( inv:room_for_item('flour', product_stack:get_name()..' '..tostring( anz_result ))) then
+
+ inv:add_item( 'flour', product_stack:get_name()..' '..tostring( anz_result ));
+ inv:remove_item( 'seeds', stack1:get_name()..' '..tostring( anz ));
+
+ local anz_left = found - anz;
+ if( anz_left > 0 ) then
+ minetest.chat_send_player( name, S('You have ground a %s (%s are left).'):format(stack1:get_definition().description,(anz_left)));
+ else
+ minetest.chat_send_player( name, S('You have ground the last %s.'):format(stack1:get_definition().description));
+ end
+
+ -- if the version of MT is recent enough, rotate the mill a bit
+ if( minetest.swap_node ) then
+ node.param2 = node.param2 + 1;
+ if( node.param2 > 3 ) then
+ node.param2 = 0;
+ end
+ minetest.swap_node( pos, node );
+ end
+ end
+ end,
+})
+
+
+
+
+---------------------------------------------------------------------------------------
+-- crafting receipes
+---------------------------------------------------------------------------------------
+-- this returns corn as well
+-- the replacements work only if the replaced slot gets empty...
+minetest.register_craft({
+ output = "cottages:straw_mat 6",
+ recipe = {
+ {cottages.craftitem_stone,'',''},
+ {"farming:wheat", "farming:wheat", "farming:wheat", },
+ },
+ replacements = {{ cottages.craftitem_stone, cottages.craftitem_seed_wheat.." 3" }},
+})
+
+-- this is a better way to get straw mats
+minetest.register_craft({
+ output = "cottages:threshing_floor",
+ recipe = {
+ {cottages.craftitem_junglewood, cottages.craftitem_chest_locked, cottages.craftitem_junglewood, },
+ {cottages.craftitem_junglewood, cottages.craftitem_stone, cottages.craftitem_junglewood, },
+ },
+})
+
+-- and a way to turn wheat seeds into flour
+minetest.register_craft({
+ output = "cottages:handmill",
+ recipe = {
+ {cottages.craftitem_stick, cottages.craftitem_stone, "", },
+ {"", cottages.craftitem_steel, "", },
+ {"", cottages.craftitem_stone, "", },
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:straw_bale",
+ recipe = {
+ {"cottages:straw_mat"},
+ {"cottages:straw_mat"},
+ {"cottages:straw_mat"},
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:straw",
+ recipe = {
+ {"cottages:straw_bale"},
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:straw_bale",
+ recipe = {
+ {"cottages:straw"},
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:straw_mat 3",
+ recipe = {
+ {"cottages:straw_bale"},
+ },
+})
diff --git a/cottages/textures/cottages_barrel.png b/cottages/textures/cottages_barrel.png
new file mode 100644
index 0000000..174c5d7
--- /dev/null
+++ b/cottages/textures/cottages_barrel.png
Binary files differ
diff --git a/cottages/textures/cottages_beds_bed_side.png b/cottages/textures/cottages_beds_bed_side.png
new file mode 100644
index 0000000..c9e79e2
--- /dev/null
+++ b/cottages/textures/cottages_beds_bed_side.png
Binary files differ
diff --git a/cottages/textures/cottages_beds_bed_side_top_l.png b/cottages/textures/cottages_beds_bed_side_top_l.png
new file mode 100644
index 0000000..4b8dc66
--- /dev/null
+++ b/cottages/textures/cottages_beds_bed_side_top_l.png
Binary files differ
diff --git a/cottages/textures/cottages_beds_bed_side_top_r.png b/cottages/textures/cottages_beds_bed_side_top_r.png
new file mode 100644
index 0000000..daae624
--- /dev/null
+++ b/cottages/textures/cottages_beds_bed_side_top_r.png
Binary files differ
diff --git a/cottages/textures/cottages_beds_bed_top_bottom.png b/cottages/textures/cottages_beds_bed_top_bottom.png
new file mode 100644
index 0000000..2639dd2
--- /dev/null
+++ b/cottages/textures/cottages_beds_bed_top_bottom.png
Binary files differ
diff --git a/cottages/textures/cottages_beds_bed_top_top.png b/cottages/textures/cottages_beds_bed_top_top.png
new file mode 100644
index 0000000..fc46ee1
--- /dev/null
+++ b/cottages/textures/cottages_beds_bed_top_top.png
Binary files differ
diff --git a/cottages/textures/cottages_clay.png b/cottages/textures/cottages_clay.png
new file mode 100644
index 0000000..76e5a40
--- /dev/null
+++ b/cottages/textures/cottages_clay.png
Binary files differ
diff --git a/cottages/textures/cottages_darkage_straw.png b/cottages/textures/cottages_darkage_straw.png
new file mode 100644
index 0000000..9817316
--- /dev/null
+++ b/cottages/textures/cottages_darkage_straw.png
Binary files differ
diff --git a/cottages/textures/cottages_darkage_straw_bale.png b/cottages/textures/cottages_darkage_straw_bale.png
new file mode 100644
index 0000000..f607c2f
--- /dev/null
+++ b/cottages/textures/cottages_darkage_straw_bale.png
Binary files differ
diff --git a/cottages/textures/cottages_feldweg.png b/cottages/textures/cottages_feldweg.png
new file mode 100644
index 0000000..65456a8
--- /dev/null
+++ b/cottages/textures/cottages_feldweg.png
Binary files differ
diff --git a/cottages/textures/cottages_glass_pane.png b/cottages/textures/cottages_glass_pane.png
new file mode 100644
index 0000000..f07912e
--- /dev/null
+++ b/cottages/textures/cottages_glass_pane.png
Binary files differ
diff --git a/cottages/textures/cottages_homedecor_shingles_asphalt.png b/cottages/textures/cottages_homedecor_shingles_asphalt.png
new file mode 100644
index 0000000..057546c
--- /dev/null
+++ b/cottages/textures/cottages_homedecor_shingles_asphalt.png
Binary files differ
diff --git a/cottages/textures/cottages_homedecor_shingles_terracotta.png b/cottages/textures/cottages_homedecor_shingles_terracotta.png
new file mode 100644
index 0000000..3f42cca
--- /dev/null
+++ b/cottages/textures/cottages_homedecor_shingles_terracotta.png
Binary files differ
diff --git a/cottages/textures/cottages_homedecor_shingles_wood.png b/cottages/textures/cottages_homedecor_shingles_wood.png
new file mode 100644
index 0000000..b982747
--- /dev/null
+++ b/cottages/textures/cottages_homedecor_shingles_wood.png
Binary files differ
diff --git a/cottages/textures/cottages_junglewood.png b/cottages/textures/cottages_junglewood.png
new file mode 100644
index 0000000..2507706
--- /dev/null
+++ b/cottages/textures/cottages_junglewood.png
Binary files differ
diff --git a/cottages/textures/cottages_loam.png b/cottages/textures/cottages_loam.png
new file mode 100644
index 0000000..bdf058f
--- /dev/null
+++ b/cottages/textures/cottages_loam.png
Binary files differ
diff --git a/cottages/textures/cottages_minimal_wood.png b/cottages/textures/cottages_minimal_wood.png
new file mode 100644
index 0000000..57c1d7c
--- /dev/null
+++ b/cottages/textures/cottages_minimal_wood.png
Binary files differ
diff --git a/cottages/textures/cottages_reet.png b/cottages/textures/cottages_reet.png
new file mode 100644
index 0000000..67a4bdd
--- /dev/null
+++ b/cottages/textures/cottages_reet.png
Binary files differ
diff --git a/cottages/textures/cottages_slate.png b/cottages/textures/cottages_slate.png
new file mode 100644
index 0000000..f85f162
--- /dev/null
+++ b/cottages/textures/cottages_slate.png
Binary files differ
diff --git a/cottages/textures/cottages_sleepingmat.png b/cottages/textures/cottages_sleepingmat.png
new file mode 100644
index 0000000..5721a5b
--- /dev/null
+++ b/cottages/textures/cottages_sleepingmat.png
Binary files differ
diff --git a/cottages/textures/cottages_steel_block.png b/cottages/textures/cottages_steel_block.png
new file mode 100644
index 0000000..7f49f61
--- /dev/null
+++ b/cottages/textures/cottages_steel_block.png
Binary files differ
diff --git a/cottages/textures/cottages_stone.png b/cottages/textures/cottages_stone.png
new file mode 100644
index 0000000..63cb7c4
--- /dev/null
+++ b/cottages/textures/cottages_stone.png
Binary files differ
diff --git a/cottages/textures/cottages_wagonwheel.png b/cottages/textures/cottages_wagonwheel.png
new file mode 100644
index 0000000..6175bba
--- /dev/null
+++ b/cottages/textures/cottages_wagonwheel.png
Binary files differ
diff --git a/cottages/textures/cottages_wool.png b/cottages/textures/cottages_wool.png
new file mode 100644
index 0000000..2bbb9cf
--- /dev/null
+++ b/cottages/textures/cottages_wool.png
Binary files differ
diff --git a/cottages/textures/glooptest_tool_steelhammer.png b/cottages/textures/glooptest_tool_steelhammer.png
new file mode 100644
index 0000000..b662a71
--- /dev/null
+++ b/cottages/textures/glooptest_tool_steelhammer.png
Binary files differ
diff --git a/currency/Money_Info.txt b/currency/Money_Info.txt
new file mode 100644
index 0000000..722d2b9
--- /dev/null
+++ b/currency/Money_Info.txt
@@ -0,0 +1,33 @@
+Mine-Geld
+---------
+
+They have no recipe.
+A good starting amount is about 250Mg on a server
+
+You currently get a basic income of 1 Minegeld per day,
+so long as you dig at least one node in that day
+and have an empty inventory slot for the money to go in.
+
+Lump Conversion
+
+Coal Lump ~1Mg
+Iron Lump ~4Mg
+Copper Lump ~4Mg
+Gold Lump ~5Mg
+Mese Crystal ~40Mg
+Diamond ~50Mg
+
+Ingot Conversion
+
+Steel Ingot ~5Mg
+Copper Ingot ~5Mg
+Gold Ingot ~6Mg
+
+Block Conversion
+
+Coal Block ~9Mg
+Steel Block ~45Mg
+Copper Block ~45Mg
+Gold Block ~54Mg
+Mese Block ~360Mg
+Diamond Block ~450Mg
diff --git a/currency/README.md b/currency/README.md
new file mode 100644
index 0000000..f4471a7
--- /dev/null
+++ b/currency/README.md
@@ -0,0 +1,4 @@
+currency
+========
+
+Repo for Currency Mod
diff --git a/currency/barter.lua b/currency/barter.lua
new file mode 100644
index 0000000..dad2e4a
--- /dev/null
+++ b/currency/barter.lua
@@ -0,0 +1,165 @@
+barter = {}
+
+barter.chest = {}
+barter.chest.formspec = {
+ main = "size[8,9]"..
+ "list[current_name;pl1;0,0;3,4;]"..
+ "list[current_name;pl2;5,0;3,4;]"..
+ "list[current_player;main;0,5;8,4;]",
+ pl1 = {
+ start = "button[3,1;1,1;pl1_start;Start]",
+ player = function(name) return "label[3,0;"..name.."]" end,
+ accept1 = "button[3,1;1,1;pl1_accept1;Confirm]"..
+ "button[3,2;1,1;pl1_cancel;Cancel]",
+ accept2 = "button[3,1;1,1;pl1_accept2;Exchange]"..
+ "button[3,2;1,1;pl1_cancel;Cancel]",
+ },
+ pl2 = {
+ start = "button[4,1;1,1;pl2_start;Start]",
+ player = function(name) return "label[4,0;"..name.."]" end,
+ accept1 = "button[4,1;1,1;pl2_accept1;Confirm]"..
+ "button[4,2;1,1;pl2_cancel;Cancel]",
+ accept2 = "button[4,1;1,1;pl2_accept2;Exchange]"..
+ "button[4,2;1,1;pl2_cancel;Cancel]",
+ },
+}
+
+barter.chest.check_privilege = function(listname,playername,meta)
+ if listname == "pl1" then
+ if playername ~= meta:get_string("pl1") then
+ return false
+ elseif meta:get_int("pl1step") ~= 1 then
+ return false
+ end
+ end
+ if listname == "pl2" then
+ if playername ~= meta:get_string("pl2") then
+ return false
+ elseif meta:get_int("pl2step") ~= 1 then
+ return false
+ end
+ end
+ return true
+end
+
+barter.chest.update_formspec = function(meta)
+ formspec = barter.chest.formspec.main
+ pl_formspec = function (n)
+ if meta:get_int(n.."step")==0 then
+ formspec = formspec .. barter.chest.formspec[n].start
+ else
+ formspec = formspec .. barter.chest.formspec[n].player(meta:get_string(n))
+ if meta:get_int(n.."step") == 1 then
+ formspec = formspec .. barter.chest.formspec[n].accept1
+ elseif meta:get_int(n.."step") == 2 then
+ formspec = formspec .. barter.chest.formspec[n].accept2
+ end
+ end
+ end
+ pl_formspec("pl1") pl_formspec("pl2")
+ meta:set_string("formspec",formspec)
+end
+
+barter.chest.give_inventory = function(inv,list,playername)
+ player = minetest.get_player_by_name(playername)
+ if player then
+ for k,v in ipairs(inv:get_list(list)) do
+ player:get_inventory():add_item("main",v)
+ inv:remove_item(list,v)
+ end
+ end
+end
+
+barter.chest.cancel = function(meta)
+ barter.chest.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl1"))
+ barter.chest.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl2"))
+ meta:set_string("pl1","")
+ meta:set_string("pl2","")
+ meta:set_int("pl1step",0)
+ meta:set_int("pl2step",0)
+end
+
+barter.chest.exchange = function(meta)
+ barter.chest.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl2"))
+ barter.chest.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl1"))
+ meta:set_string("pl1","")
+ meta:set_string("pl2","")
+ meta:set_int("pl1step",0)
+ meta:set_int("pl2step",0)
+end
+
+minetest.register_node("currency:barter", {
+ drawtype = "nodebox",
+ description = "Barter Table",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"barter_top.png",
+ "barter_base.png",
+ "barter_side.png"},
+ inventory_image = "barter_top.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.312500,-0.500000,0.500000,0.500000,0.500000},
+ {-0.437500,-0.500000,-0.437500,-0.250000,0.500000,-0.250000},
+ {-0.437500,-0.500000,0.250000,-0.250000,0.500000,0.437500},
+ {0.250000,-0.500000,-0.437500,0.437500,0.500000,-0.250000},
+ {0.250000,-0.500000,0.250000,0.437500,0.500000,0.447500},
+ },
+ },
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Barter Table")
+ meta:set_string("pl1","")
+ meta:set_string("pl2","")
+ barter.chest.update_formspec(meta)
+ local inv = meta:get_inventory()
+ inv:set_size("pl1", 3*4)
+ inv:set_size("pl2", 3*4)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ pl_receive_fields = function(n)
+ if fields[n.."_start"] and meta:get_string(n) == "" then
+ meta:set_string(n,sender:get_player_name())
+ end
+ if meta:get_string(n) == "" then
+ meta:set_int(n.."step",0)
+ elseif meta:get_int(n.."step")==0 then
+ meta:set_int(n.."step",1)
+ end
+ if sender:get_player_name() == meta:get_string(n) then
+ if meta:get_int(n.."step")==1 and fields[n.."_accept1"] then
+ meta:set_int(n.."step",2)
+ end
+ if meta:get_int(n.."step")==2 and fields[n.."_accept2"] then
+ meta:set_int(n.."step",3)
+ if n == "pl1" and meta:get_int("pl2step") == 3 then barter.chest.exchange(meta) end
+ if n == "pl2" and meta:get_int("pl1step") == 3 then barter.chest.exchange(meta) end
+ end
+ if fields[n.."_cancel"] then barter.chest.cancel(meta) end
+ end
+ end
+ pl_receive_fields("pl1") pl_receive_fields("pl2")
+ -- End
+ barter.chest.update_formspec(meta)
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if not barter.chest.check_privilege(from_list,player:get_player_name(),meta) then return 0 end
+ if not barter.chest.check_privilege(to_list,player:get_player_name(),meta) then return 0 end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not barter.chest.check_privilege(listname,player:get_player_name(),meta) then return 0 end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not barter.chest.check_privilege(listname,player:get_player_name(),meta) then return 0 end
+ return stack:get_count()
+ end,
+})
diff --git a/currency/crafting.lua b/currency/crafting.lua
new file mode 100644
index 0000000..33a9553
--- /dev/null
+++ b/currency/crafting.lua
@@ -0,0 +1,71 @@
+minetest.register_craft({
+ output = 'currency:safe',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'currency:shop',
+ recipe = {
+ {'default:sign_wall'},
+ {'default:chest_locked'},
+ }
+})
+
+minetest.register_craft({
+ output = 'currency:barter',
+ recipe = {
+ {'default:sign_wall'},
+ {'default:chest'},
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "currency:minegeld_5",
+ recipe = {"currency:minegeld", "currency:minegeld", "currency:minegeld", "currency:minegeld", "currency:minegeld"},
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "currency:minegeld_10",
+ recipe = {"currency:minegeld_5", "currency:minegeld_5"},
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "currency:minegeld_5 2",
+ recipe = {"currency:minegeld_10"},
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "currency:minegeld 5",
+ recipe = {"currency:minegeld_5"},
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "currency:minegeld_bundle",
+ recipe = {
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld",
+ "group:minegeld"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "currency:minegeld_bundle",
+ burntime = 1,
+})
+
diff --git a/currency/craftitems.lua b/currency/craftitems.lua
new file mode 100644
index 0000000..47ad953
--- /dev/null
+++ b/currency/craftitems.lua
@@ -0,0 +1,26 @@
+minetest.register_craftitem("currency:minegeld", {
+ description = "1 MineGeld Note",
+ inventory_image = "minegeld.png",
+ stack_max = 30000,
+ groups = {minegeld = 1}
+})
+
+minetest.register_craftitem("currency:minegeld_5", {
+ description = "5 MineGeld Note",
+ inventory_image = "minegeld_5.png",
+ stack_max = 30000,
+ groups = {minegeld = 1}
+})
+
+minetest.register_craftitem("currency:minegeld_10", {
+ description = "10 MineGeld Note",
+ inventory_image = "minegeld_10.png",
+ stack_max = 30000,
+ groups = {minegeld = 1}
+})
+
+minetest.register_craftitem("currency:minegeld_bundle", {
+ description = "Bundle of random Minegeld notes",
+ inventory_image = "minegeld_bundle.png",
+ stack_max = 30000,
+})
diff --git a/currency/depends.txt b/currency/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/currency/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/currency/income.lua b/currency/income.lua
new file mode 100644
index 0000000..5aa6fbc
--- /dev/null
+++ b/currency/income.lua
@@ -0,0 +1,40 @@
+players_income = {}
+
+local timer = 0
+minetest.register_globalstep(function(dtime)
+ timer = timer + dtime;
+ if timer >= 720 then --720 for one day
+ timer = 0
+ for _,player in ipairs(minetest.get_connected_players()) do
+ local name = player:get_player_name()
+ if players_income[name] == nil then
+ players_income[name] = 0
+ end
+ players_income[name] = 1
+ print("[Currency] basic income for "..name.."")
+ end
+ end
+end)
+
+earn_income = function(player)
+ if not player or player.is_fake_player then return end
+ local name = player:get_player_name()
+ if players_income[name] == nil then
+ players_income[name] = 0
+ end
+ if players_income[name] > 0 then
+ count = players_income[name]
+ local inv = player:get_inventory()
+ inv:add_item("main", {name="currency:minegeld_5", count=count})
+ players_income[name] = 0
+ print("[Currency] added basic income for "..name.." to inventory")
+ end
+end
+
+minetest.register_on_dignode(function(pos, oldnode, digger)
+ earn_income(digger)
+end)
+
+minetest.register_on_placenode(function(pos, node, placer)
+ earn_income(placer)
+end)
diff --git a/currency/init.lua b/currency/init.lua
new file mode 100644
index 0000000..0c94994
--- /dev/null
+++ b/currency/init.lua
@@ -0,0 +1,20 @@
+print(" Currency mod loading... ")
+local modpath = minetest.get_modpath("currency")
+
+dofile(modpath.."/craftitems.lua")
+print("[Currency] Craft_items Loaded!")
+dofile(modpath.."/shop.lua")
+print("[Currency] Shop Loaded!")
+dofile(modpath.."/barter.lua")
+print("[Currency] Barter Loaded!")
+dofile(modpath.."/safe.lua")
+print("[Currency] Safe Loaded!")
+dofile(modpath.."/crafting.lua")
+print("[Currency] Crafting Loaded!")
+
+if minetest.setting_getbool("creative_mode") then
+ print("[Currency] Creative mode in use, skipping basic income.")
+else
+ dofile(modpath.."/income.lua")
+ print("[Currency] Income Loaded!")
+end
diff --git a/currency/safe.lua b/currency/safe.lua
new file mode 100644
index 0000000..428711f
--- /dev/null
+++ b/currency/safe.lua
@@ -0,0 +1,103 @@
+function default.get_safe_formspec(pos)
+ local spos = pos.x .. "," .. pos.y .. "," ..pos.z
+ local formspec =
+ "size[8,9]"..
+ "list[nodemeta:".. spos .. ";main;1,1;6,2;]"..
+ "list[current_player;main;0,5;8,4;]"
+ return formspec
+end
+
+local function has_safe_privilege(meta, player)
+ if not player or player:get_player_name() ~= meta:get_string("owner") then
+ return false
+ end
+ return true
+end
+
+minetest.register_node("currency:safe", {
+ description = "Safe",
+ inventory_image = "safe_front.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"safe_side.png",
+ "safe_side.png",
+ "safe_side.png",
+ "safe_side.png",
+ "safe_side.png",
+ "safe_front.png",},
+ is_ground_content = false,
+ groups = {cracky=1},
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name() or "")
+ meta:set_string("infotext", "Safe (owned by "..
+ meta:get_string("owner")..")")
+ end,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Safe")
+ meta:set_string("owner", "")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 6*2)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main") and has_safe_privilege(meta, player)
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if not has_safe_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a safe belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not has_safe_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a safe belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not has_safe_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a safe belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in safe at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to safe at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from safe at "..minetest.pos_to_string(pos))
+ end,
+ on_rightclick = function(pos, node, clicker)
+ local meta = minetest.get_meta(pos)
+ if has_safe_privilege(meta, clicker) then
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ "currency:safe",
+ default.get_safe_formspec(pos)
+ )
+ end
+ end,
+})
diff --git a/currency/shop.lua b/currency/shop.lua
new file mode 100644
index 0000000..08bfac7
--- /dev/null
+++ b/currency/shop.lua
@@ -0,0 +1,195 @@
+default.shop = {}
+default.shop.current_shop = {}
+default.shop.formspec = {
+ customer = function(pos)
+ local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z
+ local formspec = "size[8,9.5]"..
+ "label[0,0;Customer gives (pay here !)]"..
+ "list[current_player;customer_gives;0,0.5;3,2;]"..
+ "label[0,2.5;Customer gets]"..
+ "list[current_player;customer_gets;0,3;3,2;]"..
+ "label[5,0;Owner wants]"..
+ "list["..list_name..";owner_wants;5,0.5;3,2;]"..
+ "label[5,2.5;Owner gives]"..
+ "list["..list_name..";owner_gives;5,3;3,2;]"..
+ "list[current_player;main;0,5.5;8,4;]"..
+ "button[3,2;2,1;exchange;Exchange]"
+ return formspec
+ end,
+ owner = function(pos)
+ local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z
+ local formspec = "size[8,9.5]"..
+ "label[0,0;Customers gave:]"..
+ "list["..list_name..";customers_gave;0,0.5;3,2;]"..
+ "label[0,2.5;Your stock:]"..
+ "list["..list_name..";stock;0,3;3,2;]"..
+ "label[5,0;You want:]"..
+ "list["..list_name..";owner_wants;5,0.5;3,2;]"..
+ "label[5,2.5;In exchange, you give:]"..
+ "list["..list_name..";owner_gives;5,3;3,2;]"..
+ "label[0,5;Owner, Use(E)+Place(RMB) for customer interface]"..
+ "list[current_player;main;0,5.5;8,4;]"
+ return formspec
+ end,
+}
+
+default.shop.check_privilege = function(listname,playername,meta)
+ --[[if listname == "pl1" then
+ if playername ~= meta:get_string("pl1") then
+ return false
+ elseif meta:get_int("pl1step") ~= 1 then
+ return false
+ end
+ end
+ if listname == "pl2" then
+ if playername ~= meta:get_string("pl2") then
+ return false
+ elseif meta:get_int("pl2step") ~= 1 then
+ return false
+ end
+ end]]
+ return true
+end
+
+
+default.shop.give_inventory = function(inv,list,playername)
+ player = minetest.get_player_by_name(playername)
+ if player then
+ for k,v in ipairs(inv:get_list(list)) do
+ player:get_inventory():add_item("main",v)
+ inv:remove_item(list,v)
+ end
+ end
+end
+
+default.shop.cancel = function(meta)
+ --[[default.shop.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl1"))
+ default.shop.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl2"))
+ meta:set_string("pl1","")
+ meta:set_string("pl2","")
+ meta:set_int("pl1step",0)
+ meta:set_int("pl2step",0)]]
+end
+
+default.shop.exchange = function(meta)
+ --[[default.shop.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl2"))
+ default.shop.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl1"))
+ meta:set_string("pl1","")
+ meta:set_string("pl2","")
+ meta:set_int("pl1step",0)
+ meta:set_int("pl2step",0)]]
+end
+
+minetest.register_node("currency:shop", {
+ description = "Shop",
+ paramtype2 = "facedir",
+ tiles = {"shop_top.png",
+ "shop_top.png",
+ "shop_side.png",
+ "shop_side.png",
+ "shop_side.png",
+ "shop_front.png"},
+ inventory_image = "shop_front.png",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ after_place_node = function(pos, placer, itemstack)
+ local owner = placer:get_player_name()
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Exchange shop (owned by "..owner..")")
+ meta:set_string("owner",owner)
+ --[[meta:set_string("pl1","")
+ meta:set_string("pl2","")]]
+ local inv = meta:get_inventory()
+ inv:set_size("customers_gave", 3*2)
+ inv:set_size("stock", 3*2)
+ inv:set_size("owner_wants", 3*2)
+ inv:set_size("owner_gives", 3*2)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ clicker:get_inventory():set_size("customer_gives", 3*2)
+ clicker:get_inventory():set_size("customer_gets", 3*2)
+ default.shop.current_shop[clicker:get_player_name()] = pos
+ local meta = minetest.get_meta(pos)
+ if clicker:get_player_name() == meta:get_string("owner") and not clicker:get_player_control().aux1 then
+ minetest.show_formspec(clicker:get_player_name(),"currency:shop_formspec",default.shop.formspec.owner(pos))
+ else
+ minetest.show_formspec(clicker:get_player_name(),"currency:shop_formspec",default.shop.formspec.customer(pos))
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") then return 0 end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") then return 0 end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") then return 0 end
+ return stack:get_count()
+ end,
+ can_dig = function(pos, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:is_empty("stock") and inv:is_empty("customers_gave") and inv:is_empty("owner_wants") and inv:is_empty("owner_gives")
+ end
+})
+
+minetest.register_on_player_receive_fields(function(sender, formname, fields)
+ if formname == "currency:shop_formspec" and fields.exchange ~= nil and fields.exchange ~= "" then
+ local name = sender:get_player_name()
+ local pos = default.shop.current_shop[name]
+ local meta = minetest.get_meta(pos)
+ if meta:get_string("owner") == name then
+ minetest.chat_send_player(name,"This is your own shop, you can't exchange to yourself !")
+ else
+ local minv = meta:get_inventory()
+ local pinv = sender:get_inventory()
+ local invlist_tostring = function(invlist)
+ local out = {}
+ for i, item in pairs(invlist) do
+ out[i] = item:to_string()
+ end
+ return out
+ end
+ local wants = minv:get_list("owner_wants")
+ local gives = minv:get_list("owner_gives")
+ if wants == nil or gives == nil then return end -- do not crash the server
+ -- Check if we can exchange
+ local can_exchange = true
+ local owners_fault = false
+ for i, item in pairs(wants) do
+ if not pinv:contains_item("customer_gives",item) then
+ can_exchange = false
+ end
+ end
+ for i, item in pairs(gives) do
+ if not minv:contains_item("stock",item) then
+ can_exchange = false
+ owners_fault = true
+ end
+ end
+ if can_exchange then
+ for i, item in pairs(wants) do
+ pinv:remove_item("customer_gives",item)
+ minv:add_item("customers_gave",item)
+ end
+ for i, item in pairs(gives) do
+ minv:remove_item("stock",item)
+ pinv:add_item("customer_gets",item)
+ end
+ minetest.chat_send_player(name,"Exchanged!")
+ else
+ if owners_fault then
+ minetest.chat_send_player(name,"Exchange can not be done, contact the shop owner.")
+ else
+ minetest.chat_send_player(name,"Exchange can not be done, check if you put all items !")
+ end
+ end
+ end
+ end
+end)
+
diff --git a/currency/textures/barter_base.png b/currency/textures/barter_base.png
new file mode 100644
index 0000000..b4e2599
--- /dev/null
+++ b/currency/textures/barter_base.png
Binary files differ
diff --git a/currency/textures/barter_side.png b/currency/textures/barter_side.png
new file mode 100644
index 0000000..57c1d7c
--- /dev/null
+++ b/currency/textures/barter_side.png
Binary files differ
diff --git a/currency/textures/barter_top.png b/currency/textures/barter_top.png
new file mode 100644
index 0000000..8ce9256
--- /dev/null
+++ b/currency/textures/barter_top.png
Binary files differ
diff --git a/currency/textures/minegeld.png b/currency/textures/minegeld.png
new file mode 100644
index 0000000..79e36ff
--- /dev/null
+++ b/currency/textures/minegeld.png
Binary files differ
diff --git a/currency/textures/minegeld_10.png b/currency/textures/minegeld_10.png
new file mode 100644
index 0000000..acdb05e
--- /dev/null
+++ b/currency/textures/minegeld_10.png
Binary files differ
diff --git a/currency/textures/minegeld_5.png b/currency/textures/minegeld_5.png
new file mode 100644
index 0000000..5c66ac6
--- /dev/null
+++ b/currency/textures/minegeld_5.png
Binary files differ
diff --git a/currency/textures/minegeld_bundle.png b/currency/textures/minegeld_bundle.png
new file mode 100644
index 0000000..c6b339d
--- /dev/null
+++ b/currency/textures/minegeld_bundle.png
Binary files differ
diff --git a/currency/textures/safe_front.png b/currency/textures/safe_front.png
new file mode 100644
index 0000000..0d4c007
--- /dev/null
+++ b/currency/textures/safe_front.png
Binary files differ
diff --git a/currency/textures/safe_side.png b/currency/textures/safe_side.png
new file mode 100644
index 0000000..1ec4c1f
--- /dev/null
+++ b/currency/textures/safe_side.png
Binary files differ
diff --git a/currency/textures/shop_front.png b/currency/textures/shop_front.png
new file mode 100644
index 0000000..29d0065
--- /dev/null
+++ b/currency/textures/shop_front.png
Binary files differ
diff --git a/currency/textures/shop_side.png b/currency/textures/shop_side.png
new file mode 100644
index 0000000..712364c
--- /dev/null
+++ b/currency/textures/shop_side.png
Binary files differ
diff --git a/currency/textures/shop_top.png b/currency/textures/shop_top.png
new file mode 100644
index 0000000..b4e2599
--- /dev/null
+++ b/currency/textures/shop_top.png
Binary files differ
diff --git a/datastorage/README.md b/datastorage/README.md
new file mode 100644
index 0000000..b15b07a
--- /dev/null
+++ b/datastorage/README.md
@@ -0,0 +1,22 @@
+datastorage
+===========
+
+Helper mod to manage players data.
+All the mods can acces a single file (container) and easily have the data saved/loaded for them.
+
+Usage
+-----
+
+ local data = datastorage.get(id, ...)
+
+Returns a reference to a data container. The id is normally a player name.
+Following arguments are keys to recurse into, normally only one, a string
+describing the type of data, is used. If the container doesn't exist it will
+be created, otherwise it will contain all previously stored data. The table
+can store any data. Player's containers will be saved to disk when the player
+leaves, and all references to the player's data should be dropped. All of the
+containers will be saved on server shutdown. To forcibly save a container's
+data use:
+
+ datastorage.save(id)
+
diff --git a/datastorage/depends.txt b/datastorage/depends.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/datastorage/depends.txt
@@ -0,0 +1 @@
+
diff --git a/datastorage/init.lua b/datastorage/init.lua
new file mode 100644
index 0000000..30677fc
--- /dev/null
+++ b/datastorage/init.lua
@@ -0,0 +1,98 @@
+datastorage = {data = {}}
+
+local DIR_DELIM = DIR_DELIM or "/"
+local data_path = minetest.get_worldpath()..DIR_DELIM.."datastorage"..DIR_DELIM
+
+function datastorage.save(id)
+ local data = datastorage.data[id]
+ -- Check if the container is empty
+ if not data or not next(data) then return end
+ for _, sub_data in pairs(data) do
+ if not next(sub_data) then return end
+ end
+
+ local file = io.open(data_path..id, "w")
+ if not file then
+ -- Most likely the data directory doesn't exist, create it
+ -- and try again.
+ if minetest.mkdir then
+ minetest.mkdir(data_path)
+ else
+ -- Using os.execute like this is not very platform
+ -- independent or safe, but most platforms name their
+ -- directory creation utility mkdir, the data path is
+ -- unlikely to contain special characters, and the
+ -- data path is only mutable by the admin.
+ os.execute('mkdir "'..data_path..'"')
+ end
+ file = io.open(data_path..id, "w")
+ if not file then return end
+ end
+
+ local datastr = minetest.serialize(data)
+ if not datastr then return end
+
+ file:write(datastr)
+ file:close()
+ return true
+end
+
+function datastorage.load(id)
+ local file = io.open(data_path..id, "r")
+ if not file then return end
+
+ local data = minetest.deserialize(file:read("*all"))
+ datastorage.data[id] = data
+
+ file:close()
+ return data
+end
+
+-- Compatability
+function datastorage.get_container(player, id)
+ return datastorage.get(player:get_player_name(), id)
+end
+
+-- Retrieves a value from the data storage
+function datastorage.get(id, ...)
+ local last = datastorage.data[id]
+ if last == nil then last = datastorage.load(id) end
+ if last == nil then
+ last = {}
+ datastorage.data[id] = last
+ end
+ local cur = last
+ for _, sub_id in ipairs({...}) do
+ last = cur
+ cur = cur[sub_id]
+ if cur == nil then
+ cur = {}
+ last[sub_id] = cur
+ end
+ end
+ return cur
+end
+
+-- Saves a container and reomves it from memory
+function datastorage.finish(id)
+ datastorage.save(id)
+ datastorage.data[id] = nil
+end
+
+-- Compatability
+function datastorage.save_container(player)
+ return datastorage.save(player:get_player_name())
+end
+
+minetest.register_on_leaveplayer(function(player)
+ local player_name = player:get_player_name()
+ datastorage.save(player_name)
+ datastorage.data[player_name] = nil
+end)
+
+minetest.register_on_shutdown(function()
+ for id in pairs(datastorage.data) do
+ datastorage.save(id)
+ end
+end)
+
diff --git a/digilines/LICENSE.txt b/digilines/LICENSE.txt
new file mode 100644
index 0000000..9569df7
--- /dev/null
+++ b/digilines/LICENSE.txt
@@ -0,0 +1,188 @@
+The LGPLv3 applies to all code in this project.
+The WTFPL applies to textures and any other content in this project which is not source code.
+
+=============================================================
+
+GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+
+=============================================================
+
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/digilines/README.md b/digilines/README.md
new file mode 100644
index 0000000..3d57f52
--- /dev/null
+++ b/digilines/README.md
@@ -0,0 +1,14 @@
+Digilines
+==========
+- The minetest counterpart for bus systems like i2c, SPI, RS232, USB -
+
+
+This mod adds digiline wires, an RTC (Real Time Clock), a light sensor as well as an LCD Screen.
+Can be used together with the luacontroller from mesecons. See the luacontroller manual for more information.
+
+Send "GET" to RTC or light sensor to retrieve Data, send any text to LCD to display it.
+Select channel by right-clicking items.
+
+License:
+ Code: LGPL
+ Textures: WTFPL
diff --git a/digilines/digilines/depends.txt b/digilines/digilines/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/digilines/digilines/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/digilines/digilines/init.lua b/digilines/digilines/init.lua
new file mode 100644
index 0000000..92f916d
--- /dev/null
+++ b/digilines/digilines/init.lua
@@ -0,0 +1,25 @@
+digiline = {}
+dofile(minetest.get_modpath("digilines").."/presetrules.lua")
+dofile(minetest.get_modpath("digilines").."/util.lua")
+dofile(minetest.get_modpath("digilines").."/internal.lua")
+dofile(minetest.get_modpath("digilines").."/wires_common.lua")
+dofile(minetest.get_modpath("digilines").."/wire_std.lua")
+
+function digiline:receptor_send(pos, rules, channel, msg)
+ local checked = {}
+ checked[tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z)] = true -- exclude itself
+ for _,rule in ipairs(rules) do
+ if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then
+ digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked)
+ end
+ end
+end
+
+minetest.register_craft({
+ output = 'digilines:wire_std_00000000 2',
+ recipe = {
+ {'mesecons_materials:fiber', 'mesecons_materials:fiber', 'mesecons_materials:fiber'},
+ {'mesecons_insulated:insulated_off', 'mesecons_insulated:insulated_off', 'default:gold_ingot'},
+ {'mesecons_materials:fiber', 'mesecons_materials:fiber', 'mesecons_materials:fiber'},
+ }
+}) \ No newline at end of file
diff --git a/digilines/digilines/internal.lua b/digilines/digilines/internal.lua
new file mode 100644
index 0000000..f29cc8d
--- /dev/null
+++ b/digilines/digilines/internal.lua
@@ -0,0 +1,92 @@
+function digiline:getspec(node)
+ if not minetest.registered_nodes[node.name] then return false end
+ return minetest.registered_nodes[node.name].digiline
+end
+
+function digiline:importrules(spec, node)
+ if type(spec) == 'function' then
+ return spec(node)
+ elseif spec then
+ return spec
+ else
+ return digiline.rules.default
+ end
+end
+
+function digiline:getAnyInputRules(pos)
+ local node = minetest.get_node(pos)
+ local spec = digiline:getspec(node)
+ if not spec then return end
+
+ if spec.wire then
+ return digiline:importrules(spec.wire.rules, node)
+ end
+ if spec.effector then
+ return digiline:importrules(spec.effector.rules, node)
+ end
+
+ return rules
+end
+
+function digiline:getAnyOutputRules(pos)
+ local node = minetest.get_node(pos)
+ local spec = digiline:getspec(node)
+ if not spec then return end
+
+ if spec.wire then
+ return digiline:importrules(spec.wire.rules, node)
+ end
+ if spec.receptor then
+ return digiline:importrules(spec.receptor.rules, node)
+ end
+end
+
+function digiline:rules_link(output, input)
+ local outputrules = digiline:getAnyOutputRules(output)
+ local inputrules = digiline:getAnyInputRules (input)
+
+ if not outputrules or not inputrules then return false end
+
+
+ for _, orule in ipairs(outputrules) do
+ if digiline:cmpPos(digiline:addPosRule(output, orule), input) then
+ for _, irule in ipairs(inputrules) do
+ if digiline:cmpPos(digiline:addPosRule(input, irule), output) then
+ return true
+ end
+ end
+ end
+ end
+ return false
+end
+
+function digiline:rules_link_anydir(output, input)
+ return digiline:rules_link(output, input)
+ or digiline:rules_link(input, output)
+end
+
+function digiline:transmit(pos, channel, msg, checked)
+ local checkedid = tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z)
+ if checked[checkedid] then return end
+ checked[checkedid] = true
+
+ local node = minetest.get_node(pos)
+ local spec = digiline:getspec(node)
+ if not spec then return end
+
+
+ -- Effector actions --> Receive
+ if spec.effector then
+ spec.effector.action(pos, node, channel, msg)
+ end
+
+ -- Cable actions --> Transmit
+ if spec.wire then
+ local rules = digiline:importrules(spec.wire.rules, node)
+ for _,rule in ipairs(rules) do
+ if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then
+ digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked)
+ end
+ end
+ end
+end
diff --git a/digilines/digilines/presetrules.lua b/digilines/digilines/presetrules.lua
new file mode 100644
index 0000000..8d5e35b
--- /dev/null
+++ b/digilines/digilines/presetrules.lua
@@ -0,0 +1,15 @@
+digiline.rules = {}
+
+digiline.rules.default =
+{{x=0, y=0, z=-1},
+{x=1, y=0, z=0},
+{x=-1, y=0, z=0},
+{x=0, y=0, z=1},
+{x=1, y=1, z=0},
+{x=1, y=-1, z=0},
+{x=-1, y=1, z=0},
+{x=-1, y=-1, z=0},
+{x=0, y=1, z=1},
+{x=0, y=-1, z=1},
+{x=0, y=1, z=-1},
+{x=0, y=-1, z=-1}}
diff --git a/digilines/digilines/textures/digiline_std.png b/digilines/digilines/textures/digiline_std.png
new file mode 100644
index 0000000..721797c
--- /dev/null
+++ b/digilines/digilines/textures/digiline_std.png
Binary files differ
diff --git a/digilines/digilines/textures/digiline_std_bump.png b/digilines/digilines/textures/digiline_std_bump.png
new file mode 100644
index 0000000..068a4a9
--- /dev/null
+++ b/digilines/digilines/textures/digiline_std_bump.png
Binary files differ
diff --git a/digilines/digilines/textures/digiline_std_inv.png b/digilines/digilines/textures/digiline_std_inv.png
new file mode 100644
index 0000000..f66f6c7
--- /dev/null
+++ b/digilines/digilines/textures/digiline_std_inv.png
Binary files differ
diff --git a/digilines/digilines/textures/digiline_std_vertical.png b/digilines/digilines/textures/digiline_std_vertical.png
new file mode 100644
index 0000000..1de0ead
--- /dev/null
+++ b/digilines/digilines/textures/digiline_std_vertical.png
Binary files differ
diff --git a/digilines/digilines/util.lua b/digilines/digilines/util.lua
new file mode 100644
index 0000000..d138d63
--- /dev/null
+++ b/digilines/digilines/util.lua
@@ -0,0 +1,67 @@
+function digiline:addPosRule(p, r)
+ return {x = p.x + r.x, y = p.y + r.y, z = p.z + r.z}
+end
+
+function digiline:cmpPos(p1, p2)
+ return (p1.x == p2.x and p1.y == p2.y and p1.z == p2.z)
+end
+
+--Rules rotation Functions:
+function digiline:rotate_rules_right(rules)
+ local nr={}
+ for i, rule in ipairs(rules) do
+ nr[i]={}
+ nr[i].z=rule.x
+ nr[i].x=-rule.z
+ nr[i].y=rule.y
+ end
+ return nr
+end
+
+function digiline:rotate_rules_left(rules)
+ local nr={}
+ for i, rule in ipairs(rules) do
+ nr[i]={}
+ nr[i].z=-rules[i].x
+ nr[i].x=rules[i].z
+ nr[i].y=rules[i].y
+ end
+ return nr
+end
+
+function digiline:rotate_rules_down(rules)
+ local nr={}
+ for i, rule in ipairs(rules) do
+ nr[i]={}
+ nr[i].y=rule.x
+ nr[i].x=-rule.y
+ nr[i].z=rule.z
+ end
+ return nr
+end
+
+function digiline:rotate_rules_up(rules)
+ local nr={}
+ for i, rule in ipairs(rules) do
+ nr[i]={}
+ nr[i].y=-rule.x
+ nr[i].x=rule.y
+ nr[i].z=rule.z
+ end
+ return nr
+end
+
+function digiline:tablecopy(table) -- deep table copy
+ if type(table) ~= "table" then return table end -- no need to copy
+ local newtable = {}
+
+ for idx, item in pairs(table) do
+ if type(item) == "table" then
+ newtable[idx] = digiline:tablecopy(item)
+ else
+ newtable[idx] = item
+ end
+ end
+
+ return newtable
+end
diff --git a/digilines/digilines/wire_std.lua b/digilines/digilines/wire_std.lua
new file mode 100644
index 0000000..71bbd0f
--- /dev/null
+++ b/digilines/digilines/wire_std.lua
@@ -0,0 +1,118 @@
+-- naming scheme: wire:(xp)(zp)(xm)(zm)_on/off
+-- The conditions in brackets define whether there is a digiline at that place or not
+-- 1 = there is one; 0 = there is none
+-- y always means y+
+
+box_center = {-1/16, -.5, -1/16, 1/16, -.5+1/16, 1/16}
+box_bump1 = { -2/16, -8/16, -2/16, 2/16, -13/32, 2/16 }
+box_bump2 = { -3/32, -13/32, -3/32, 3/32, -12/32, 3/32 }
+
+box_xp = {1/16, -.5, -1/16, 8/16, -.5+1/16, 1/16}
+box_zp = {-1/16, -.5, 1/16, 1/16, -.5+1/16, 8/16}
+box_xm = {-8/16, -.5, -1/16, -1/16, -.5+1/16, 1/16}
+box_zm = {-1/16, -.5, -8/16, 1/16, -.5+1/16, -1/16}
+
+box_xpy = {.5-1/16, -.5+1/16, -1/16, .5, .4999+1/16, 1/16}
+box_zpy = {-1/16, -.5+1/16, .5-1/16, 1/16, .4999+1/16, .5}
+box_xmy = {-.5, -.5+1/16, -1/16, -.5+1/16, .4999+1/16, 1/16}
+box_zmy = {-1/16, -.5+1/16, -.5, 1/16, .4999+1/16, -.5+1/16}
+
+for xp=0, 1 do
+for zp=0, 1 do
+for xm=0, 1 do
+for zm=0, 1 do
+for xpy=0, 1 do
+for zpy=0, 1 do
+for xmy=0, 1 do
+for zmy=0, 1 do
+ if (xpy == 1 and xp == 0) or (zpy == 1 and zp == 0)
+ or (xmy == 1 and xm == 0) or (zmy == 1 and zm == 0) then break end
+
+ local groups
+ local nodeid = tostring(xp )..tostring(zp )..tostring(xm )..tostring(zm )..
+ tostring(xpy)..tostring(zpy)..tostring(xmy)..tostring(zmy)
+
+ if nodeid == "00000000" then
+ groups = {dig_immediate = 3}
+ wiredesc = "Digiline"
+ else
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1}
+ end
+
+ local nodebox = {}
+ local adjx = false
+ local adjz = false
+ if xp == 1 then table.insert(nodebox, box_xp) adjx = true end
+ if zp == 1 then table.insert(nodebox, box_zp) adjz = true end
+ if xm == 1 then table.insert(nodebox, box_xm) adjx = true end
+ if zm == 1 then table.insert(nodebox, box_zm) adjz = true end
+ if xpy == 1 then table.insert(nodebox, box_xpy) end
+ if zpy == 1 then table.insert(nodebox, box_zpy) end
+ if xmy == 1 then table.insert(nodebox, box_xmy) end
+ if zmy == 1 then table.insert(nodebox, box_zmy) end
+
+ if adjx and adjz and (xp + zp + xm + zm > 2) then
+ table.insert(nodebox, box_bump1)
+ table.insert(nodebox, box_bump2)
+ tiles = {
+ "digiline_std_bump.png",
+ "digiline_std_bump.png",
+ "digiline_std_vertical.png",
+ "digiline_std_vertical.png",
+ "digiline_std_vertical.png",
+ "digiline_std_vertical.png"
+ }
+ else
+ table.insert(nodebox, box_center)
+ tiles = {
+ "digiline_std.png",
+ "digiline_std.png",
+ "digiline_std_vertical.png",
+ "digiline_std_vertical.png",
+ "digiline_std_vertical.png",
+ "digiline_std_vertical.png"
+ }
+ end
+
+ if nodeid == "00000000" then
+ nodebox = {-8/16, -.5, -1/16, 8/16, -.5+1/16, 1/16}
+ end
+
+ minetest.register_node("digilines:wire_std_"..nodeid, {
+ description = wiredesc,
+ drawtype = "nodebox",
+ tiles = tiles,
+ inventory_image = "digiline_std_inv.png",
+ wield_image = "digiline_std_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ digiline =
+ {
+ wire =
+ {
+ basename = "digilines:wire_std_",
+ use_autoconnect = true
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-.5, -.5, -.5, .5, -.5+1/16, .5}
+ },
+ node_box = {
+ type = "fixed",
+ fixed = nodebox
+ },
+ groups = groups,
+ walkable = false,
+ stack_max = 99,
+ drop = "digilines:wire_std_00000000"
+ })
+end
+end
+end
+end
+end
+end
+end
+end
diff --git a/digilines/digilines/wires_common.lua b/digilines/digilines/wires_common.lua
new file mode 100644
index 0000000..c5f761b
--- /dev/null
+++ b/digilines/digilines/wires_common.lua
@@ -0,0 +1,88 @@
+minetest.register_on_placenode(function(pos, node)
+ if minetest.registered_nodes[node.name].digiline then
+ digiline:update_autoconnect(pos)
+ end
+end)
+
+minetest.register_on_dignode(function(pos, node)
+ if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].digiline then
+-- need to make sure that node exists (unknown nodes!)
+ digiline:update_autoconnect(pos)
+ end
+end)
+
+function digiline:update_autoconnect(pos, secondcall)
+ local xppos = {x=pos.x+1, y=pos.y, z=pos.z}
+ local zppos = {x=pos.x, y=pos.y, z=pos.z+1}
+ local xmpos = {x=pos.x-1, y=pos.y, z=pos.z}
+ local zmpos = {x=pos.x, y=pos.y, z=pos.z-1}
+ local xpympos = {x=pos.x+1, y=pos.y-1, z=pos.z}
+ local zpympos = {x=pos.x, y=pos.y-1, z=pos.z+1}
+ local xmympos = {x=pos.x-1, y=pos.y-1, z=pos.z}
+ local zmympos = {x=pos.x, y=pos.y-1, z=pos.z-1}
+ local xpypos = {x=pos.x+1, y=pos.y+1, z=pos.z}
+ local zpypos = {x=pos.x, y=pos.y+1, z=pos.z+1}
+ local xmypos = {x=pos.x-1, y=pos.y+1, z=pos.z}
+ local zmypos = {x=pos.x, y=pos.y+1, z=pos.z-1}
+
+ if secondcall == nil then
+ digiline:update_autoconnect(xppos, true)
+ digiline:update_autoconnect(zppos, true)
+ digiline:update_autoconnect(xmpos, true)
+ digiline:update_autoconnect(zmpos, true)
+
+ digiline:update_autoconnect(xpypos, true)
+ digiline:update_autoconnect(zpypos, true)
+ digiline:update_autoconnect(xmypos, true)
+ digiline:update_autoconnect(zmypos, true)
+
+ digiline:update_autoconnect(xpympos, true)
+ digiline:update_autoconnect(zpympos, true)
+ digiline:update_autoconnect(xmympos, true)
+ digiline:update_autoconnect(zmympos, true)
+ end
+
+ local def = minetest.registered_nodes[minetest.get_node(pos).name]
+ local digilinespec = def and def.digiline
+ if not (digilinespec and digilinespec.wire and
+ digilinespec.wire.use_autoconnect) then
+ return nil
+ end
+
+ local zmg = digiline:rules_link_anydir(pos, zmpos)
+ local zmymg = digiline:rules_link_anydir(pos, zmympos)
+ local xmg = digiline:rules_link_anydir(pos, xmpos)
+ local xmymg = digiline:rules_link_anydir(pos, xmympos)
+ local zpg = digiline:rules_link_anydir(pos, zppos)
+ local zpymg = digiline:rules_link_anydir(pos, zpympos)
+ local xpg = digiline:rules_link_anydir(pos, xppos)
+ local xpymg = digiline:rules_link_anydir(pos, xpympos)
+
+
+ local xpyg = digiline:rules_link_anydir(pos, xpypos)
+ local zpyg = digiline:rules_link_anydir(pos, zpypos)
+ local xmyg = digiline:rules_link_anydir(pos, xmypos)
+ local zmyg = digiline:rules_link_anydir(pos, zmypos)
+
+ local zm, xm, zp, xp, xpy, zpy, xmy, zmy
+ if zmg or zmymg then zm = 1 else zm = 0 end
+ if xmg or xmymg then xm = 1 else xm = 0 end
+ if zpg or zpymg then zp = 1 else zp = 0 end
+ if xpg or xpymg then xp = 1 else xp = 0 end
+
+ if xpyg then xpy = 1 else xpy = 0 end
+ if zpyg then zpy = 1 else zpy = 0 end
+ if xmyg then xmy = 1 else xmy = 0 end
+ if zmyg then zmy = 1 else zmy = 0 end
+
+ if xpy == 1 then xp = 1 end
+ if zpy == 1 then zp = 1 end
+ if xmy == 1 then xm = 1 end
+ if zmy == 1 then zm = 1 end
+
+ local nodeid = tostring(xp )..tostring(zp )..tostring(xm )..tostring(zm )..
+ tostring(xpy)..tostring(zpy)..tostring(xmy)..tostring(zmy)
+
+
+ minetest.set_node(pos, {name = digilinespec.wire.basename..nodeid})
+end
diff --git a/digilines/digilines_inventory/README b/digilines/digilines_inventory/README
new file mode 100644
index 0000000..a88115f
--- /dev/null
+++ b/digilines/digilines_inventory/README
@@ -0,0 +1,62 @@
+Basic idea: place this chest down at the end of a pipeline. Feed stuff into it. Attach a luacontroller to it with a digiline in between. Program the luacontroller to turn on a wire to stop the pipeline when the chest is full. Don't put more than one kind of item down the pipeline into the chest, unless you want weird tricksy behavior.
+
+...[F]===[C]--{L}
+ |__________|
+ [B]
+F: filter
+B: blinky plant
+C: digiline chest
+L: luacontroller
+==: pipe
+__: mesecons
+--: digiline
+
+Make sure you use mem in the luacontroller to keep the mesecon wire on indefinitely after the chest signals full. When it signals "take" someone took an item out and you can start the pipeline up again.
+This may be a bad idea if they only take half a stack or something. Oh well.
+
+When you put something in, you get a "put" to indicate it's OK (sort of (still buggy)) and can fit inside the chest. When you get a "lost", that means it won't fit inside the chest, and will bounce, possibly popping out. When you get a "overflow" that means you tried to add something to a chest that just filled up, and the stack will bounce. When you get a "full" that means the chest just filled up.
+
+"Filled up" for all intents and purposes, means taking the type of whatever just went into the chest, and seeing if at least 1 of that type can be added to the chest. If it cannot, then it's filled up. That means a chest full of stacks of 30 copper and one spot of 98 gold, and you add one gold to that, it will say it's full. Add 30 copper to it, and it won't.
+
+Generally you'll be working with full stacks in pipeworks. Even the non-mese filters will accumulate items in a chest, and not spread them out into multiple stacks. And generally your destination chests will each have one of any kind of item. So all you have to worry about is when you've got 99 everywhere, and one space possibly free. A mese filter can fail on that in fact, for instance if you have room for 45 gold, and it tries to push a stack of 50 gold. All 50 will bounce! The code for chests isn't smart enough to add the 45 and bounce the leftover 5. So only use mese filters when you're sure a full stack has accumulated for the filter to push, and there are no partial stacks at the destination.
+
+For some reason when an "overflow" happens, when it checks if the stack can fit inside the chest, the answer is yes it can fit! Then it doesn't. Sort of buggy.
+
+itemstack - the qualified name, a space, then the amount. If the space and amount are ommitted, that represents just 1.
+
+examples: "default:chest 33" "default:coal" "default:axe_diamond"
+
+bounce
+ - when an item cannot enter the destination container it will travel back up the tube it came from, going along alternate routes if they exist, but otherwise popping out of the tube.
+
+popping out
+ - the little thingy travelling through the tube disappears, and an entity of the item appears, as if it was just dropped. This entity can expire, losing your items permanently!
+
+
+The messages are:
+
+
+put <itemstack>
+ - this means that the inventory claimed it could fit that stack of items inside it. Inventories lie. But with the above caveats this is quite usable.
+lost <itemstack>
+ - the stack couldn't fit in the chest and bounces.
+full <itemstack> <count>
+ - the chest has been filled. The itemstack is what filled it. count is what's leftover.
+ until chests can suck up part of a stack and not bounce the whole stack, that count will
+ always be 0
+overflow <itemstack> <count>
+ - generally this is the same as lost, except that the "put" event happened, meaning that the
+ itemstack was allowed in the chest.
+ - this will happen with two stacks in rapid succession, the first filling the chest, and the
+ second bouncing. the <count> in this case will be the amount of the second.
+ - overflow can't happen with two different kinds of items, you'll get a put, maybe full, then lost for the second kind
+
+Tricky situation:
+if you have a blank spot and put say 82 torches down your pipeline, followed by 99 coal, the 82 torches will go in the chest, and the chest will see that 1 more torch can fit since that would only go to 83. Since 1 more torch can fit, no "full" message will fire off. Then when the coal hits the chest, the "fail" message will fire and the coal will bounce out. The chest couldn't predict that coal would be coming next, so it couldn't know that the chest is full, for coal, while not full for torches.
+
+TODO:
+ - make chest.lua a mixin that gets both default and locked chests
+ - digiline aware furnaces
+ - digiline aware technic machines, grinders, alloy furnaces, etc
+ - the pipes going into the chests don't snap to the pipe holes in the digiline chests. They still act fine as pipeworks destinations though.
+ - digiline chests seem to be immune to filters. But it's late and I'm shipping this. Someone else can figure out why the chests aren't acting like pipeworks chests, despite cloning the pipeworks chest's object. Oh who am I kidding. I'll do it myself I guess, once I've lost hope of aid again.
diff --git a/digilines/digilines_inventory/depends.txt b/digilines/digilines_inventory/depends.txt
new file mode 100644
index 0000000..da1d119
--- /dev/null
+++ b/digilines/digilines_inventory/depends.txt
@@ -0,0 +1 @@
+digilines
diff --git a/digilines/digilines_inventory/init.lua b/digilines/digilines_inventory/init.lua
new file mode 100644
index 0000000..89aaabc
--- /dev/null
+++ b/digilines/digilines_inventory/init.lua
@@ -0,0 +1,143 @@
+local function sendMessage(pos, msg, channel)
+ if channel == nil then
+ channel = minetest.get_meta(pos):get_string("channel")
+ end
+ digiline:receptor_send(pos,digiline.rules.default,channel,msg)
+end
+
+local function maybeString(stack)
+ if type(stack)=='string' then return stack
+ elseif type(stack)=='table' then return dump(stack)
+ else return stack:to_string()
+ end
+end
+
+local function can_insert(pos, stack)
+ local can = minetest.get_meta(pos):get_inventory():room_for_item("main", stack)
+ if can then
+ sendMessage(pos,"put "..maybeString(stack))
+ else
+ -- overflow and lost means that items are gonna be out as entities :/
+ sendMessage(pos,"lost "..maybeString(stack))
+ end
+ return can
+end
+
+local tubeconn = minetest.get_modpath("pipeworks") and "^pipeworks_tube_connection_wooden.png" or ""
+local tubescan = minetest.get_modpath("pipeworks") and function(pos) pipeworks.scan_for_tube_objects(pos) end or nil
+
+minetest.register_node("digilines_inventory:chest", {
+ description = "Digiline Chest",
+ tiles = {
+ "default_chest_top.png"..tubeconn,
+ "default_chest_top.png"..tubeconn,
+ "default_chest_side.png"..tubeconn,
+ "default_chest_side.png"..tubeconn,
+ "default_chest_side.png"..tubeconn,
+ "default_chest_front.png",
+ },
+ paramtype2 = "facedir",
+ legacy_facedir_simple = true,
+ groups = {choppy=2, oddly_breakable_by_hand=2, tubedevice=1, tubedevice_receiver=1},
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", "Digiline Chest")
+ meta:set_string("formspec", "size[8,10]"..
+ ((default and default.gui_bg) or "")..
+ ((default and default.gui_bg_img) or "")..
+ ((default and default.gui_slots) or "")..
+ "label[0,0;Digiline Chest]"..
+ "list[current_name;main;0,1;8,4;]"..
+ "field[2,5.5;5,1;channel;Channel;${channel}]"..
+ ((default and default.get_hotbar_bg) and default.get_hotbar_bg(0,6) or "")..
+ "list[current_player;main;0,6;8,4;]")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+ after_place_node = tubescan,
+ after_dig_node = tubescan,
+ can_dig = function(pos, player)
+ return minetest.get_meta(pos):get_inventory():is_empty("main")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if fields.channel ~= nil then
+ minetest.get_meta(pos):set_string("channel",fields.channel)
+ end
+ end,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos,node,channel,msg) end
+ }
+ },
+ tube = {
+ connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1},
+ connects = function(i,param2)
+ return not pipeworks.connects.facingFront(i,param2)
+ end,
+ input_inventory = "main",
+ can_insert = function(pos, node, stack, direction)
+ return can_insert(pos, stack)
+ end,
+ insert_object = function(pos, node, stack, direction)
+ local inv = minetest.get_meta(pos):get_inventory()
+ local leftover = inv:add_item("main", stack)
+ local count = leftover:get_count()
+ if count == 0 then
+ local derpstack = stack:get_name()..' 1'
+ if not inv:room_for_item("main", derpstack) then
+ -- when you can't put a single more of whatever you just put,
+ -- you'll get a put for it, then a full
+ sendMessage(pos,"full "..maybeString(stack)..' '..tostring(count))
+ end
+ else
+ -- this happens when the chest has received two stacks in a row and
+ -- filled up exactly with the first one.
+ -- You get a put for the first stack, a put for the second
+ -- and then a overflow with the first in stack and the second in leftover
+ -- and NO full?
+ sendMessage(pos,"overflow "..maybeString(stack)..' '..tostring(count))
+ end
+ return leftover
+ end,
+ },
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not can_insert(pos, stack) then
+ sendMessage(pos,"uoverflow "..maybeString(stack))
+ end
+ return stack:get_count()
+ end,
+ on_metadata_inventory_move = function(pos, fromlistname, fromindex, tolistname, toindex, count, player)
+ minetest.log("action", player:get_player_name().." moves stuff in chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local channel = minetest.get_meta(pos):get_string("channel")
+ local send = function(msg)
+ sendMessage(pos,msg,channel)
+ end
+ -- direction is only for furnaces
+ -- as the item has already been put, can_insert should return false if the chest is now full.
+ local derpstack = stack:get_name()..' 1'
+ if can_insert(pos,derpstack) then
+ send("uput "..maybeString(stack))
+ else
+ send("ufull "..maybeString(stack))
+ end
+ minetest.log("action", player:get_player_name().." puts stuff into chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local inv = minetest.get_meta(pos):get_inventory()
+ if inv:is_empty(listname) then
+ sendMessage(pos, "empty", channel)
+ end
+ sendMessage(pos,"utake "..maybeString(stack))
+ minetest.log("action", player:get_player_name().." takes stuff from chest at "..minetest.pos_to_string(pos))
+ end
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "digilines_inventory:chest",
+ recipe = {"default:chest", "digilines:wire_std_00000000"}
+})
diff --git a/digilines/digilines_lcd/characters b/digilines/digilines_lcd/characters
new file mode 100644
index 0000000..b36eea4
--- /dev/null
+++ b/digilines/digilines_lcd/characters
@@ -0,0 +1,282 @@
+A
+_a_
+7
+B
+_b_
+5
+C
+_c_
+6
+D
+_d_
+6
+E
+_e_
+5
+F
+_f_
+5
+G
+_g_
+6
+H
+_h_
+6
+I
+_i_
+1
+J
+_j_
+4
+K
+_k_
+5
+L
+_l_
+4
+M
+_m_
+7
+N
+_n_
+6
+O
+_o_
+6
+P
+_p_
+5
+Q
+_q_
+7
+R
+_r_
+5
+S
+_s_
+5
+T
+_t_
+5
+U
+_u_
+6
+V
+_v_
+7
+W
+_w_
+9
+X
+_x_
+5
+Y
+_y_
+7
+Z
+_z_
+5
+a
+_a
+5
+b
+_b
+5
+c
+_c
+4
+d
+_d
+5
+e
+_e
+4
+f
+_f
+4
+g
+_g
+5
+h
+_h
+5
+i
+_i
+1
+j
+_j
+1
+k
+_k
+4
+l
+_l
+1
+m
+_m
+7
+n
+_n
+5
+o
+_o
+5
+p
+_p
+5
+q
+_q
+5
+r
+_r
+3
+s
+_s
+4
+t
+_t
+3
+u
+_u
+4
+v
+_v
+5
+w
+_w
+7
+x
+_x
+5
+y
+_y
+4
+z
+_z
+4
+
+_sp
+2
+0
+_0
+4
+1
+_1
+2
+2
+_2
+4
+3
+_3
+4
+4
+_4
+4
+5
+_5
+4
+6
+_6
+4
+7
+_7
+4
+8
+_8
+4
+9
+_9
+4
+(
+_bl
+2
+)
+_br
+2
+{
+_cl
+3
+}
+_cr
+3
+[
+_sl
+2
+]
+_sr
+2
+'
+_ap
+1
+!
+_ex
+1
+?
+_qu
+4
+@
+_at
+5
+#
+_hs
+5
+$
+_dl
+4
+%
+_pr
+5
+^
+_ca
+3
+&
+_am
+5
+*
+_as
+3
+_
+_un
+3
++
+_ps
+3
+-
+_mn
+3
+=
+_eq
+3
+;
+_sm
+1
+:
+_co
+1
+,
+_cm
+2
+"
+_qo
+3
+/
+_dv
+5
+~
+_tl
+4
+<
+_lt
+3
+>
+_gt
+3
+\
+_re
+5
+|
+_vb
+1
+.
+_dt
+1
diff --git a/digilines/digilines_lcd/init.lua b/digilines/digilines_lcd/init.lua
new file mode 100644
index 0000000..ade3fca
--- /dev/null
+++ b/digilines/digilines_lcd/init.lua
@@ -0,0 +1,227 @@
+--* parts are currently not possible because you cannot set the pitch of an entity from lua
+
+-- Font: 04.jp.org
+
+-- load characters map
+local chars_file = io.open(minetest.get_modpath("digilines_lcd").."/characters", "r")
+local charmap = {}
+local max_chars = 12
+if not chars_file then
+ print("[digilines_lcd] E: character map file not found")
+else
+ while true do
+ local char = chars_file:read("*l")
+ if char == nil then
+ break
+ end
+ local img = chars_file:read("*l")
+ chars_file:read("*l")
+ charmap[char] = img
+ end
+end
+
+local lcds = {
+ -- on ceiling
+ --* [0] = {delta = {x = 0, y = 0.4, z = 0}, pitch = math.pi / -2},
+ -- on ground
+ --* [1] = {delta = {x = 0, y =-0.4, z = 0}, pitch = math.pi / 2},
+ -- sides
+ [2] = {delta = {x = 0.4, y = 0, z = 0}, yaw = math.pi / -2},
+ [3] = {delta = {x = -0.4, y = 0, z = 0}, yaw = math.pi / 2},
+ [4] = {delta = {x = 0, y = 0, z = 0.4}, yaw = 0},
+ [5] = {delta = {x = 0, y = 0, z = -0.4}, yaw = math.pi},
+}
+
+local reset_meta = function(pos)
+ minetest.get_meta(pos):set_string("formspec", "field[channel;Channel;${channel}]")
+end
+
+local clearscreen = function(pos)
+ local objects = minetest.get_objects_inside_radius(pos, 0.5)
+ for _, o in ipairs(objects) do
+ local o_entity = o:get_luaentity()
+ if o_entity and o_entity.name == "digilines_lcd:text" then
+ o:remove()
+ end
+ end
+end
+
+local prepare_writing = function(pos)
+ local lcd_info = lcds[minetest.get_node(pos).param2]
+ if lcd_info == nil then return end
+ local text = minetest.add_entity(
+ {x = pos.x + lcd_info.delta.x,
+ y = pos.y + lcd_info.delta.y,
+ z = pos.z + lcd_info.delta.z}, "digilines_lcd:text")
+ text:setyaw(lcd_info.yaw or 0)
+ --* text:setpitch(lcd_info.yaw or 0)
+ return text
+end
+
+local on_digiline_receive = function(pos, node, channel, msg)
+ local meta = minetest.get_meta(pos)
+ local setchan = meta:get_string("channel")
+ if setchan ~= channel then return end
+
+ meta:set_string("text", msg)
+ meta:set_string("infotext", msg)
+ clearscreen(pos)
+ if msg ~= "" then
+ prepare_writing(pos)
+ end
+end
+
+local lcd_box = {
+ type = "wallmounted",
+ wall_top = {-8/16, 7/16, -8/16, 8/16, 8/16, 8/16}
+}
+
+minetest.register_node("digilines_lcd:lcd", {
+ drawtype = "nodebox",
+ description = "Digiline LCD",
+ inventory_image = "lcd_lcd.png",
+ wield_image = "lcd_lcd.png",
+ tiles = {"lcd_anyside.png"},
+
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "wallmounted",
+ node_box = lcd_box,
+ selection_box = lcd_box,
+ groups = {choppy = 3, dig_immediate = 2},
+
+ after_place_node = function (pos, placer, itemstack)
+ local param2 = minetest.get_node(pos).param2
+ if param2 == 0 or param2 == 1 then
+ minetest.add_node(pos, {name = "digilines_lcd:lcd", param2 = 3})
+ end
+ prepare_writing (pos)
+ end,
+
+ on_construct = function(pos)
+ reset_meta(pos)
+ end,
+
+ on_destruct = function(pos)
+ clearscreen(pos)
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+
+ digiline =
+ {
+ receptor = {},
+ effector = {
+ action = on_digiline_receive
+ },
+ },
+
+ light_source = 6,
+})
+
+minetest.register_entity("digilines_lcd:text", {
+ collisionbox = { 0, 0, 0, 0, 0, 0 },
+ visual = "upright_sprite",
+ textures = {},
+
+ on_activate = function(self)
+ local meta = minetest.get_meta(self.object:getpos())
+ local text = meta:get_string("text")
+ self.object:set_properties({textures={generate_texture(create_lines(text))}})
+ end
+})
+
+-- CONSTANTS
+local LCD_WITH = 100
+local LCD_PADDING = 8
+
+local LINE_LENGTH = 12
+local NUMBER_OF_LINES = 5
+
+local LINE_HEIGHT = 14
+local CHAR_WIDTH = 5
+
+create_lines = function(text)
+ local line = ""
+ local line_num = 1
+ local tab = {}
+ for word in string.gmatch(text, "%S+") do
+ if string.len(line)+string.len(word) < LINE_LENGTH and word ~= "|" then
+ if line ~= "" then
+ line = line.." "..word
+ else
+ line = word
+ end
+ else
+ table.insert(tab, line)
+ if word ~= "|" then
+ line = word
+ else
+ line = ""
+ end
+ line_num = line_num+1
+ if line_num > NUMBER_OF_LINES then
+ return tab
+ end
+ end
+ end
+ table.insert(tab, line)
+ return tab
+end
+
+generate_texture = function(lines)
+ local texture = "[combine:"..LCD_WITH.."x"..LCD_WITH
+ local ypos = 16
+ for i = 1, #lines do
+ texture = texture..generate_line(lines[i], ypos)
+ ypos = ypos + LINE_HEIGHT
+ end
+ return texture
+end
+
+generate_line = function(s, ypos)
+ local i = 1
+ local parsed = {}
+ local width = 0
+ local chars = 0
+ while chars < max_chars and i <= #s do
+ local file = nil
+ if charmap[s:sub(i, i)] ~= nil then
+ file = charmap[s:sub(i, i)]
+ i = i + 1
+ elseif i < #s and charmap[s:sub(i, i + 1)] ~= nil then
+ file = charmap[s:sub(i, i + 1)]
+ i = i + 2
+ else
+ print("[digilines_lcd] W: unknown symbol in '"..s.."' at "..i)
+ i = i + 1
+ end
+ if file ~= nil then
+ width = width + CHAR_WIDTH
+ table.insert(parsed, file)
+ chars = chars + 1
+ end
+ end
+ width = width - 1
+
+ local texture = ""
+ local xpos = math.floor((LCD_WITH - 2 * LCD_PADDING - width) / 2 + LCD_PADDING)
+ for i = 1, #parsed do
+ texture = texture..":"..xpos..","..ypos.."="..parsed[i]..".png"
+ xpos = xpos + CHAR_WIDTH + 1
+ end
+ return texture
+end
+
+minetest.register_craft({
+ output = "digilines_lcd:lcd 2",
+ recipe = {
+ {"default:steel_ingot", "digilines:wire_std_00000000", "default:steel_ingot"},
+ {"mesecons_lightstone:lightstone_green_off","mesecons_lightstone:lightstone_green_off","mesecons_lightstone:lightstone_green_off"},
+ {"default:glass","default:glass","default:glass"}
+ }
+})
diff --git a/digilines/digilines_lcd/textures/_0.png b/digilines/digilines_lcd/textures/_0.png
new file mode 100644
index 0000000..b030879
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_0.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_1.png b/digilines/digilines_lcd/textures/_1.png
new file mode 100644
index 0000000..ae28369
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_1.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_2.png b/digilines/digilines_lcd/textures/_2.png
new file mode 100644
index 0000000..7375c68
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_2.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_3.png b/digilines/digilines_lcd/textures/_3.png
new file mode 100644
index 0000000..d724811
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_3.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_4.png b/digilines/digilines_lcd/textures/_4.png
new file mode 100644
index 0000000..0fff433
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_4.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_5.png b/digilines/digilines_lcd/textures/_5.png
new file mode 100644
index 0000000..43010df
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_5.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_6.png b/digilines/digilines_lcd/textures/_6.png
new file mode 100644
index 0000000..1eba38c
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_6.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_7.png b/digilines/digilines_lcd/textures/_7.png
new file mode 100644
index 0000000..dbcd2d1
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_7.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_8.png b/digilines/digilines_lcd/textures/_8.png
new file mode 100644
index 0000000..edf6ef5
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_8.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_9.png b/digilines/digilines_lcd/textures/_9.png
new file mode 100644
index 0000000..c276c11
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_9.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_a.png b/digilines/digilines_lcd/textures/_a.png
new file mode 100644
index 0000000..8f3f59c
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_a.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_a_.png b/digilines/digilines_lcd/textures/_a_.png
new file mode 100644
index 0000000..4da193c
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_a_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_am.png b/digilines/digilines_lcd/textures/_am.png
new file mode 100644
index 0000000..75d0287
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_am.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_ap.png b/digilines/digilines_lcd/textures/_ap.png
new file mode 100644
index 0000000..5dd3325
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_ap.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_as.png b/digilines/digilines_lcd/textures/_as.png
new file mode 100644
index 0000000..3c7a25a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_as.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_at.png b/digilines/digilines_lcd/textures/_at.png
new file mode 100644
index 0000000..4f9841c
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_at.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_b.png b/digilines/digilines_lcd/textures/_b.png
new file mode 100644
index 0000000..baf4eaa
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_b.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_b_.png b/digilines/digilines_lcd/textures/_b_.png
new file mode 100644
index 0000000..b00a378
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_b_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_bl.png b/digilines/digilines_lcd/textures/_bl.png
new file mode 100644
index 0000000..546ca4e
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_bl.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_br.png b/digilines/digilines_lcd/textures/_br.png
new file mode 100644
index 0000000..5700fa6
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_br.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_c.png b/digilines/digilines_lcd/textures/_c.png
new file mode 100644
index 0000000..eedd639
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_c.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_c_.png b/digilines/digilines_lcd/textures/_c_.png
new file mode 100644
index 0000000..cab6518
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_c_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_ca.png b/digilines/digilines_lcd/textures/_ca.png
new file mode 100644
index 0000000..d359c88
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_ca.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_cl.png b/digilines/digilines_lcd/textures/_cl.png
new file mode 100644
index 0000000..55396b9
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_cl.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_cm.png b/digilines/digilines_lcd/textures/_cm.png
new file mode 100644
index 0000000..28beedf
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_cm.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_co.png b/digilines/digilines_lcd/textures/_co.png
new file mode 100644
index 0000000..b161819
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_co.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_cr.png b/digilines/digilines_lcd/textures/_cr.png
new file mode 100644
index 0000000..ac466a9
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_cr.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_d.png b/digilines/digilines_lcd/textures/_d.png
new file mode 100644
index 0000000..a5f0699
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_d.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_d_.png b/digilines/digilines_lcd/textures/_d_.png
new file mode 100644
index 0000000..9a0e3ed
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_d_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_dl.png b/digilines/digilines_lcd/textures/_dl.png
new file mode 100644
index 0000000..72184ad
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_dl.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_dt.png b/digilines/digilines_lcd/textures/_dt.png
new file mode 100644
index 0000000..61c1e4a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_dt.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_dv.png b/digilines/digilines_lcd/textures/_dv.png
new file mode 100644
index 0000000..996d7cd
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_dv.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_e.png b/digilines/digilines_lcd/textures/_e.png
new file mode 100644
index 0000000..29e32e6
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_e.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_e_.png b/digilines/digilines_lcd/textures/_e_.png
new file mode 100644
index 0000000..c7f19c1
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_e_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_eq.png b/digilines/digilines_lcd/textures/_eq.png
new file mode 100644
index 0000000..daf8424
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_eq.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_ex.png b/digilines/digilines_lcd/textures/_ex.png
new file mode 100644
index 0000000..b5da8e9
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_ex.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_f.png b/digilines/digilines_lcd/textures/_f.png
new file mode 100644
index 0000000..6835912
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_f.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_f_.png b/digilines/digilines_lcd/textures/_f_.png
new file mode 100644
index 0000000..3698ed2
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_f_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_g.png b/digilines/digilines_lcd/textures/_g.png
new file mode 100644
index 0000000..5a85cde
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_g.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_g_.png b/digilines/digilines_lcd/textures/_g_.png
new file mode 100644
index 0000000..cc7bbc5
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_g_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_gt.png b/digilines/digilines_lcd/textures/_gt.png
new file mode 100644
index 0000000..f30855a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_gt.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_h.png b/digilines/digilines_lcd/textures/_h.png
new file mode 100644
index 0000000..1a66a9e
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_h.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_h_.png b/digilines/digilines_lcd/textures/_h_.png
new file mode 100644
index 0000000..87beafc
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_h_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_ha.png b/digilines/digilines_lcd/textures/_ha.png
new file mode 100644
index 0000000..4618ced
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_ha.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_hs.png b/digilines/digilines_lcd/textures/_hs.png
new file mode 100644
index 0000000..6f12bec
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_hs.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_i.png b/digilines/digilines_lcd/textures/_i.png
new file mode 100644
index 0000000..f001142
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_i.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_i_.png b/digilines/digilines_lcd/textures/_i_.png
new file mode 100644
index 0000000..fc658b8
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_i_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_j.png b/digilines/digilines_lcd/textures/_j.png
new file mode 100644
index 0000000..87d2f26
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_j.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_j_.png b/digilines/digilines_lcd/textures/_j_.png
new file mode 100644
index 0000000..c0d9ac2
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_j_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_k.png b/digilines/digilines_lcd/textures/_k.png
new file mode 100644
index 0000000..34f9336
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_k.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_k_.png b/digilines/digilines_lcd/textures/_k_.png
new file mode 100644
index 0000000..86b623d
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_k_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_l.png b/digilines/digilines_lcd/textures/_l.png
new file mode 100644
index 0000000..defe7ec
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_l.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_l_.png b/digilines/digilines_lcd/textures/_l_.png
new file mode 100644
index 0000000..3fe1de2
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_l_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_lt.png b/digilines/digilines_lcd/textures/_lt.png
new file mode 100644
index 0000000..ec7219d
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_lt.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_m.png b/digilines/digilines_lcd/textures/_m.png
new file mode 100644
index 0000000..e0fe039
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_m.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_m_.png b/digilines/digilines_lcd/textures/_m_.png
new file mode 100644
index 0000000..9164da6
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_m_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_mn.png b/digilines/digilines_lcd/textures/_mn.png
new file mode 100644
index 0000000..935a2fe
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_mn.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_n.png b/digilines/digilines_lcd/textures/_n.png
new file mode 100644
index 0000000..ac10fd9
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_n.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_n_.png b/digilines/digilines_lcd/textures/_n_.png
new file mode 100644
index 0000000..d4355c1
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_n_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_o.png b/digilines/digilines_lcd/textures/_o.png
new file mode 100644
index 0000000..080e99d
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_o.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_o_.png b/digilines/digilines_lcd/textures/_o_.png
new file mode 100644
index 0000000..2d19051
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_o_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_p.png b/digilines/digilines_lcd/textures/_p.png
new file mode 100644
index 0000000..3050959
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_p.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_p_.png b/digilines/digilines_lcd/textures/_p_.png
new file mode 100644
index 0000000..0cca011
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_p_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_pr.png b/digilines/digilines_lcd/textures/_pr.png
new file mode 100644
index 0000000..b835141
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_pr.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_ps.png b/digilines/digilines_lcd/textures/_ps.png
new file mode 100644
index 0000000..1f4b5c1
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_ps.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_q.png b/digilines/digilines_lcd/textures/_q.png
new file mode 100644
index 0000000..945b6cf
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_q.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_q_.png b/digilines/digilines_lcd/textures/_q_.png
new file mode 100644
index 0000000..f3bf455
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_q_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_qo.png b/digilines/digilines_lcd/textures/_qo.png
new file mode 100644
index 0000000..5d261e3
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_qo.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_qu.png b/digilines/digilines_lcd/textures/_qu.png
new file mode 100644
index 0000000..5eb597a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_qu.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_r.png b/digilines/digilines_lcd/textures/_r.png
new file mode 100644
index 0000000..39e9fce
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_r.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_r_.png b/digilines/digilines_lcd/textures/_r_.png
new file mode 100644
index 0000000..6c71c1e
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_r_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_re.png b/digilines/digilines_lcd/textures/_re.png
new file mode 100644
index 0000000..1614837
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_re.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_s.png b/digilines/digilines_lcd/textures/_s.png
new file mode 100644
index 0000000..a0ada1a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_s.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_s_.png b/digilines/digilines_lcd/textures/_s_.png
new file mode 100644
index 0000000..9b018bb
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_s_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_sl.png b/digilines/digilines_lcd/textures/_sl.png
new file mode 100644
index 0000000..08c9547
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_sl.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_sm.png b/digilines/digilines_lcd/textures/_sm.png
new file mode 100644
index 0000000..385c64f
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_sm.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_sp.png b/digilines/digilines_lcd/textures/_sp.png
new file mode 100644
index 0000000..4f38a35
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_sp.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_sr.png b/digilines/digilines_lcd/textures/_sr.png
new file mode 100644
index 0000000..bc9c0a2
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_sr.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_t.png b/digilines/digilines_lcd/textures/_t.png
new file mode 100644
index 0000000..c55731a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_t.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_t_.png b/digilines/digilines_lcd/textures/_t_.png
new file mode 100644
index 0000000..773e666
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_t_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_tl.png b/digilines/digilines_lcd/textures/_tl.png
new file mode 100644
index 0000000..059fe68
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_tl.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_u.png b/digilines/digilines_lcd/textures/_u.png
new file mode 100644
index 0000000..98bf8e6
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_u.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_u_.png b/digilines/digilines_lcd/textures/_u_.png
new file mode 100644
index 0000000..35ce915
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_u_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_un.png b/digilines/digilines_lcd/textures/_un.png
new file mode 100644
index 0000000..01f547a
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_un.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_v.png b/digilines/digilines_lcd/textures/_v.png
new file mode 100644
index 0000000..b692d11
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_v.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_v_.png b/digilines/digilines_lcd/textures/_v_.png
new file mode 100644
index 0000000..8049771
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_v_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_vb.png b/digilines/digilines_lcd/textures/_vb.png
new file mode 100644
index 0000000..7fed7dc
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_vb.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_w.png b/digilines/digilines_lcd/textures/_w.png
new file mode 100644
index 0000000..6a58b07
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_w.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_w_.png b/digilines/digilines_lcd/textures/_w_.png
new file mode 100644
index 0000000..64904de
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_w_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_x.png b/digilines/digilines_lcd/textures/_x.png
new file mode 100644
index 0000000..b769e13
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_x.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_x_.png b/digilines/digilines_lcd/textures/_x_.png
new file mode 100644
index 0000000..2f6d067
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_x_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_y.png b/digilines/digilines_lcd/textures/_y.png
new file mode 100644
index 0000000..777b55e
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_y.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_y_.png b/digilines/digilines_lcd/textures/_y_.png
new file mode 100644
index 0000000..0c40de9
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_y_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_z.png b/digilines/digilines_lcd/textures/_z.png
new file mode 100644
index 0000000..ae010fe
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_z.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/_z_.png b/digilines/digilines_lcd/textures/_z_.png
new file mode 100644
index 0000000..1c3e053
--- /dev/null
+++ b/digilines/digilines_lcd/textures/_z_.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/lcd_anyside.png b/digilines/digilines_lcd/textures/lcd_anyside.png
new file mode 100644
index 0000000..fe88e8d
--- /dev/null
+++ b/digilines/digilines_lcd/textures/lcd_anyside.png
Binary files differ
diff --git a/digilines/digilines_lcd/textures/lcd_lcd.png b/digilines/digilines_lcd/textures/lcd_lcd.png
new file mode 100644
index 0000000..c959fa1
--- /dev/null
+++ b/digilines/digilines_lcd/textures/lcd_lcd.png
Binary files differ
diff --git a/digilines/digilines_lightsensor/depends.txt b/digilines/digilines_lightsensor/depends.txt
new file mode 100644
index 0000000..da1d119
--- /dev/null
+++ b/digilines/digilines_lightsensor/depends.txt
@@ -0,0 +1 @@
+digilines
diff --git a/digilines/digilines_lightsensor/init.lua b/digilines/digilines_lightsensor/init.lua
new file mode 100644
index 0000000..7dda1ce
--- /dev/null
+++ b/digilines/digilines_lightsensor/init.lua
@@ -0,0 +1,57 @@
+local GET_COMMAND = "GET"
+
+local lsensor_nodebox =
+{
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, -- bottom slab
+
+ { -7/16, -7/16, -7/16, -4/16, -5/16, 7/16 }, -- bonds
+ { 4/16, -7/16, -7/16, 7/16, -5/16, 7/16 },
+ { -7/16, -7/16, -7/16, 7/16, -5/16, -4/16 },
+ { -7/16, -7/16, 4/16, 7/16, -5/16, 7/16 },
+
+ { -1/16, -7/16, -1/16, 1/16, -5/16, 1/16 }, -- pin thing in the middle
+ }
+}
+
+local lsensor_selbox =
+{
+ type = "fixed",
+ fixed = {{ -8/16, -8/16, -8/16, 8/16, -3/16, 8/16 }}
+}
+
+local on_digiline_receive = function (pos, node, channel, msg)
+ local setchan = minetest.get_meta(pos):get_string("channel")
+ if channel == setchan and msg == GET_COMMAND then
+ local lightval = minetest.get_node_light(pos)
+ digiline:receptor_send(pos, digiline.rules.default, channel, lightval)
+ end
+end
+
+minetest.register_node("digilines_lightsensor:lightsensor", {
+ description = "Digiline Lightsensor",
+ drawtype = "nodebox",
+ tiles = {"digilines_lightsensor.png"},
+
+ paramtype = "light",
+ groups = {dig_immediate=2},
+ selection_box = lsensor_selbox,
+ node_box = lsensor_nodebox,
+ digiline =
+ {
+ receptor = {},
+ effector = {
+ action = on_digiline_receive
+ },
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+})
diff --git a/digilines/digilines_lightsensor/textures/digilines_lightsensor.png b/digilines/digilines_lightsensor/textures/digilines_lightsensor.png
new file mode 100644
index 0000000..aa88495
--- /dev/null
+++ b/digilines/digilines_lightsensor/textures/digilines_lightsensor.png
Binary files differ
diff --git a/digilines/digilines_rtc/depends.txt b/digilines/digilines_rtc/depends.txt
new file mode 100644
index 0000000..da1d119
--- /dev/null
+++ b/digilines/digilines_rtc/depends.txt
@@ -0,0 +1 @@
+digilines
diff --git a/digilines/digilines_rtc/init.lua b/digilines/digilines_rtc/init.lua
new file mode 100644
index 0000000..6b7bfaf
--- /dev/null
+++ b/digilines/digilines_rtc/init.lua
@@ -0,0 +1,53 @@
+local GET_COMMAND = "GET"
+
+local rtc_nodebox =
+{
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, -- bottom slab
+
+ { -7/16, -7/16, -7/16, 7/16, -5/16, 7/16 },
+ }
+}
+
+local rtc_selbox =
+{
+ type = "fixed",
+ fixed = {{ -8/16, -8/16, -8/16, 8/16, -3/16, 8/16 }}
+}
+
+local on_digiline_receive = function (pos, node, channel, msg)
+ local setchan = minetest.get_meta(pos):get_string("channel")
+ if channel == setchan and msg == GET_COMMAND then
+ local timeofday = minetest.get_timeofday()
+ digiline:receptor_send(pos, digiline.rules.default, channel, timeofday)
+ end
+end
+
+minetest.register_node("digilines_rtc:rtc", {
+ description = "Digiline Real Time Clock (RTC)",
+ drawtype = "nodebox",
+ tiles = {"digilines_rtc.png"},
+
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {dig_immediate=2},
+ selection_box = rtc_selbox,
+ node_box = rtc_nodebox,
+ digiline =
+ {
+ receptor = {},
+ effector = {
+ action = on_digiline_receive
+ },
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+})
diff --git a/digilines/digilines_rtc/textures/digilines_rtc.png b/digilines/digilines_rtc/textures/digilines_rtc.png
new file mode 100644
index 0000000..a7b1d84
--- /dev/null
+++ b/digilines/digilines_rtc/textures/digilines_rtc.png
Binary files differ
diff --git a/digilines/modpack.txt b/digilines/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/digilines/modpack.txt
diff --git a/display_blocks/README.txt b/display_blocks/README.txt
new file mode 100644
index 0000000..9ab17a5
--- /dev/null
+++ b/display_blocks/README.txt
@@ -0,0 +1,4 @@
+display_blocks
+==============
+This mod adds blocks that create crystals on top.
+Some have different light levels others can be seen through and i hope i can make them do other things too.
diff --git a/display_blocks/config.lua b/display_blocks/config.lua
new file mode 100644
index 0000000..2f5a2ab
--- /dev/null
+++ b/display_blocks/config.lua
@@ -0,0 +1,6 @@
+-- Disable to make the uranium only be "technic"uranium". Enable to add "display_blocks:uranium"
+enable_display_uranium = false
+--Enable to make "technic:uranium" spawning like "display_blocks:uranium".
+technic_uranium_new_ore_gen = true
+--Enable to add a recipe that uses "technic:uranium"
+enable_technic_recipe = true
diff --git a/display_blocks/depends.txt b/display_blocks/depends.txt
new file mode 100644
index 0000000..44e7384
--- /dev/null
+++ b/display_blocks/depends.txt
@@ -0,0 +1,2 @@
+default
+technic? \ No newline at end of file
diff --git a/display_blocks/init.lua b/display_blocks/init.lua
new file mode 100644
index 0000000..28b5d60
--- /dev/null
+++ b/display_blocks/init.lua
@@ -0,0 +1,267 @@
+local PATH = minetest.get_modpath("display_blocks")
+
+dofile(PATH.."/config.lua")
+dofile(PATH.."/technic.lua")
+
+if enable_display_uranium == true then
+ dofile(minetest.get_modpath("display_blocks").."/uranium.lua")
+end
+
+local Scale = 0.9
+
+function disp(base, name, light, rec, rp)
+ minetest.register_node( "display_blocks:"..base.."_base", {
+ description = name.."Display Base",
+ tiles = { "display_blocks_"..base.."_block.png" },
+ is_ground_content = true,
+ groups = {cracky=3,},
+ light_source = light,
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ })
+
+ minetest.register_node( "display_blocks:"..base.."_crystal", {
+ drawtype = "plantlike",
+ description = name.." Display Crystal",
+ tiles = { "display_blocks_"..base.."_crystal.png" },
+ is_ground_content = true,
+ paramtype = "light",
+ visual_scale = Scale,
+ groups = {immortal=1, not_in_creative_inventory=1},
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 },
+ },
+ walkable = false,
+ })
+
+ minetest.register_abm({
+ nodenames = {"display_blocks:"..base.."_base"},
+ interval = 2.0,
+ chance = 1.0,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pos.y = pos.y + 1
+ local n = minetest.get_node(pos)
+ if n and n.name == "air" then
+ minetest.add_node(pos, {name="display_blocks:"..base.."_crystal"})
+ end
+ end
+ })
+
+ function remove_crystal(pos, node, active_object_count, active_object_count_wider)
+ if node.name == "display_blocks:"..base.."_base" then
+ pos.y = pos.y + 1
+ local n = minetest.get_node(pos)
+ if n and n.name == "display_blocks:"..base.."_crystal" then
+ minetest.remove_node(pos)
+ end
+ end
+ end
+ minetest.register_on_dignode(remove_crystal)
+
+ minetest.register_craft({
+ output = 'display_blocks:'..base..'_base 5',
+ recipe = {
+ {'', 'default:mese_crystal_fragment', ''},
+ {rec, 'display_blocks:empty_display', rec},
+ {'', rec, ''},
+ },
+ replacements = {{rec, rp}, {rec, rp},{rec, rp}},
+ })
+end
+
+-- disp(base, name, rec, rp)
+disp("mese", "Mese", 0, "default:mese_block", "")
+disp("glass", "Glass", 0, "default:sand", "")
+disp("fire", "Fire", 12, "bucket:bucket_lava" ,"bucket:bucket_empty")
+disp("air", "Air", 5, "bucket:bucket_empty", "bucket:bucket_empty")
+disp("water", "Water", 0, "bucket:bucket_water", "bucket:bucket_empty")
+disp("uranium", "Uranium", 10, "display_blocks:uranium_block", "")
+disp("earth", "Earth", 0, "display_blocks:compressed_earth", "")
+disp("metal", "Metal", 2, "default:steelblock", "")
+
+
+if minetest.get_modpath("titanium") then
+ disp("titanium", "Titanium", 0, "titanium:block", "")
+end
+
+--
+-- Universia Display
+--
+
+minetest.register_node( "display_blocks:universia_base", {
+ description = "Universia Display Base",
+ tiles = {"display_blocks_universia_block.png"},
+ is_ground_content = true,
+ groups = {cracky=3,},
+ light_source = 15,
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+})
+
+minetest.register_node( "display_blocks:universia_crystal", {
+ description = "Universia Display Crystal",
+ drawtype = "plantlike",
+ tiles = {"display_blocks_universia_crystal.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 },
+ },
+ walkable = false,
+ is_ground_content = true,
+ paramtype = "light",
+ visual_scale = Scale,
+ groups = {immortal=1, not_in_creative_inventory=1},
+})
+
+minetest.register_abm({
+ nodenames = {"display_blocks:universia_base"},
+ interval = 1.0,
+ chance = 1.0,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pos.y = pos.y + 1
+ minetest.add_node(pos, {name="display_blocks:universia_crystal"})
+ end
+})
+
+function remove_crystal(pos, node, active_object_count, active_object_count_wider)
+ if
+ node.name == "display_blocks:universia_base"
+ then
+ pos.y = pos.y + 1
+ minetest.remove_node(pos, {name="display_blocks:universia_crystal"})
+ end
+end
+minetest.register_on_dignode(remove_crystal)
+
+minetest.register_craft({
+ output = "display_blocks:universia_base",
+ recipe = {
+ {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
+ {'display_blocks:natura_cube', 'default:mese_block', 'display_blocks:industria_cube'},
+ {'default:obsidian', 'default:obsidian', 'default:obsidian'},
+ },
+})
+
+--
+-- Other Blocks
+--
+
+minetest.register_node("display_blocks:compressed_earth", {
+ description = "Compressed Earth",
+ tiles = {"display_blocks_compressed_earth.png"},
+ groups = {crumbly=3,soil=1},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+})
+
+minetest.register_node("display_blocks:empty_display", {
+ description = "Empty Display",
+ tiles = {"display_blocks_empty_display.png"},
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = true,
+})
+
+minetest.register_node("display_blocks:industria_cube", {
+ description = "Industria Cube",
+ tiles = {"display_blocks_industria_cube.png"},
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = true,
+})
+
+minetest.register_node("display_blocks:natura_cube", {
+ description = "Natura Cube",
+ tiles = {"display_blocks_natura_cube.png"},
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = true,
+})
+
+minetest.register_craft({
+ output= "display_blocks:compressed_earth",
+ recipe = {
+ {'default:gravel', 'default:dirt', 'default:gravel'},
+ {'default:dirt', 'default:gravel', 'default:dirt'},
+ {'default:gravel', 'default:dirt', 'default:gravel'},
+ }
+})
+
+minetest.register_craft({
+ output = "display_blocks:empty_display",
+ recipe = {
+ {'default:desert_sand', 'default:glass', 'default:sand'},
+ {'default:glass', '', 'default:glass'},
+ {'default:sand', 'default:glass', 'default:desert_sand'},
+ },
+})
+
+minetest.register_craft({
+ output = "display_blocks:natura_cube",
+ recipe = {
+ {'', 'display_blocks:air_base', ''},
+ {'display_blocks:fire_base', '', 'display_blocks:water_base'},
+ {'', 'display_blocks:earth_base', ''},
+ },
+})
+
+minetest.register_craft({
+ output = "display_blocks:industria_cube",
+ recipe = {
+ {'', 'display_blocks:mese_base', ''},
+ {'display_blocks:metal_base', '', 'display_blocks:glass_base'},
+ {'', 'display_blocks:uranium_base', ''},
+ },
+})
+
+--
+-- Compressed Earth Ore Gen
+--
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:compressed_earth",
+ wherein = "default:dirt",
+ clust_scarcity = 25*25*25,
+ clust_num_ores = 20,
+ clust_size = 5,
+ y_max = -5,
+ y_min = -15,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:compressed_earth",
+ wherein = "default:dirt",
+ clust_scarcity = 20*20*20,
+ clust_num_ores = 50,
+ clust_size = 5,
+ y_max = -16,
+ y_min = -29,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:compressed_earth",
+ wherein = "default:dirt",
+ clust_scarcity = 15*15*15,
+ clust_num_ores = 80,
+ clust_size = 5,
+ y_max = -30,
+ y_min = -100,
+})
+
+print("[Display Blocks] Loaded! by jojoa1997 :-)")
diff --git a/display_blocks/technic.lua b/display_blocks/technic.lua
new file mode 100644
index 0000000..56adb5d
--- /dev/null
+++ b/display_blocks/technic.lua
@@ -0,0 +1,40 @@
+if enable_display_uranium == false then
+ minetest.register_alias("display_blocks:uranium_dust", "technic:uranium_block")
+ minetest.register_alias("display_blocks:uranium_block", "technic:uranium_block")
+ minetest.register_alias("display_blocks:uranium_ore", "technic:mineral_uranium")
+end
+
+if technic_uranium_new_ore_gen == true then
+ minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_uranium",
+ wherein = "default:stone",
+ clust_scarcity = 20*20*20,
+ clust_num_ores = 18,
+ clust_size = 3,
+ y_min = -3000,
+ y_max = -2000,
+ })
+
+ minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_uranium",
+ wherein = "default:stone",
+ clust_scarcity =30*30*30,
+ clust_num_ores = 40,
+ clust_size = 4,
+ y_min = -7000,
+ y_max = -5000,
+ })
+end
+
+if enable_technic_recipe == true then
+ minetest.register_craft({
+ output = 'display_blocks:uranium_base 5',
+ recipe = {
+ {'', 'default:mese_crystal_fragment', ''},
+ {'technic:uranium_block', 'display_blocks:empty_display', 'technic:uranium_block'},
+ {'', 'technic:uranium_block', ''},
+ }
+ })
+end
diff --git a/display_blocks/textures/display_blocks_air_block.png b/display_blocks/textures/display_blocks_air_block.png
new file mode 100644
index 0000000..24835d3
--- /dev/null
+++ b/display_blocks/textures/display_blocks_air_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_air_crystal.png b/display_blocks/textures/display_blocks_air_crystal.png
new file mode 100644
index 0000000..75c97ce
--- /dev/null
+++ b/display_blocks/textures/display_blocks_air_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_compressed_earth.png b/display_blocks/textures/display_blocks_compressed_earth.png
new file mode 100644
index 0000000..50dd061
--- /dev/null
+++ b/display_blocks/textures/display_blocks_compressed_earth.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_earth_block.png b/display_blocks/textures/display_blocks_earth_block.png
new file mode 100644
index 0000000..8d7c693
--- /dev/null
+++ b/display_blocks/textures/display_blocks_earth_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_earth_crystal.png b/display_blocks/textures/display_blocks_earth_crystal.png
new file mode 100644
index 0000000..6211f05
--- /dev/null
+++ b/display_blocks/textures/display_blocks_earth_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_empty_display.png b/display_blocks/textures/display_blocks_empty_display.png
new file mode 100644
index 0000000..3482ad1
--- /dev/null
+++ b/display_blocks/textures/display_blocks_empty_display.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_fire_block.png b/display_blocks/textures/display_blocks_fire_block.png
new file mode 100644
index 0000000..a8f799a
--- /dev/null
+++ b/display_blocks/textures/display_blocks_fire_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_fire_crystal.png b/display_blocks/textures/display_blocks_fire_crystal.png
new file mode 100644
index 0000000..c70cf57
--- /dev/null
+++ b/display_blocks/textures/display_blocks_fire_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_glass_block.png b/display_blocks/textures/display_blocks_glass_block.png
new file mode 100644
index 0000000..958c289
--- /dev/null
+++ b/display_blocks/textures/display_blocks_glass_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_glass_crystal.png b/display_blocks/textures/display_blocks_glass_crystal.png
new file mode 100644
index 0000000..2f27a20
--- /dev/null
+++ b/display_blocks/textures/display_blocks_glass_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_industria_cube.png b/display_blocks/textures/display_blocks_industria_cube.png
new file mode 100644
index 0000000..24142d6
--- /dev/null
+++ b/display_blocks/textures/display_blocks_industria_cube.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_mese_block.png b/display_blocks/textures/display_blocks_mese_block.png
new file mode 100644
index 0000000..9b631ea
--- /dev/null
+++ b/display_blocks/textures/display_blocks_mese_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_mese_crystal.png b/display_blocks/textures/display_blocks_mese_crystal.png
new file mode 100644
index 0000000..afc68b7
--- /dev/null
+++ b/display_blocks/textures/display_blocks_mese_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_mese_giver_block.png b/display_blocks/textures/display_blocks_mese_giver_block.png
new file mode 100644
index 0000000..f663bb1
--- /dev/null
+++ b/display_blocks/textures/display_blocks_mese_giver_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_metal_block.png b/display_blocks/textures/display_blocks_metal_block.png
new file mode 100644
index 0000000..53c112f
--- /dev/null
+++ b/display_blocks/textures/display_blocks_metal_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_metal_crystal.png b/display_blocks/textures/display_blocks_metal_crystal.png
new file mode 100644
index 0000000..ebb2320
--- /dev/null
+++ b/display_blocks/textures/display_blocks_metal_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_natura_cube.png b/display_blocks/textures/display_blocks_natura_cube.png
new file mode 100644
index 0000000..23a6e98
--- /dev/null
+++ b/display_blocks/textures/display_blocks_natura_cube.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_titanium_block.png b/display_blocks/textures/display_blocks_titanium_block.png
new file mode 100644
index 0000000..b9cd01c
--- /dev/null
+++ b/display_blocks/textures/display_blocks_titanium_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_titanium_crystal.png b/display_blocks/textures/display_blocks_titanium_crystal.png
new file mode 100644
index 0000000..aeff651
--- /dev/null
+++ b/display_blocks/textures/display_blocks_titanium_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_universia_block.png b/display_blocks/textures/display_blocks_universia_block.png
new file mode 100644
index 0000000..313f3c5
--- /dev/null
+++ b/display_blocks/textures/display_blocks_universia_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_universia_crystal.png b/display_blocks/textures/display_blocks_universia_crystal.png
new file mode 100644
index 0000000..6529c5d
--- /dev/null
+++ b/display_blocks/textures/display_blocks_universia_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_uranium_block.png b/display_blocks/textures/display_blocks_uranium_block.png
new file mode 100644
index 0000000..1762c5d
--- /dev/null
+++ b/display_blocks/textures/display_blocks_uranium_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_uranium_crystal.png b/display_blocks/textures/display_blocks_uranium_crystal.png
new file mode 100644
index 0000000..c877349
--- /dev/null
+++ b/display_blocks/textures/display_blocks_uranium_crystal.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_water_block.png b/display_blocks/textures/display_blocks_water_block.png
new file mode 100644
index 0000000..eb40543
--- /dev/null
+++ b/display_blocks/textures/display_blocks_water_block.png
Binary files differ
diff --git a/display_blocks/textures/display_blocks_water_crystal.png b/display_blocks/textures/display_blocks_water_crystal.png
new file mode 100644
index 0000000..6925fda
--- /dev/null
+++ b/display_blocks/textures/display_blocks_water_crystal.png
Binary files differ
diff --git a/display_blocks/textures/uranium_block.png b/display_blocks/textures/uranium_block.png
new file mode 100644
index 0000000..aa97e73
--- /dev/null
+++ b/display_blocks/textures/uranium_block.png
Binary files differ
diff --git a/display_blocks/textures/uranium_dust.png b/display_blocks/textures/uranium_dust.png
new file mode 100644
index 0000000..2316ab9
--- /dev/null
+++ b/display_blocks/textures/uranium_dust.png
Binary files differ
diff --git a/display_blocks/textures/uranium_ore.png b/display_blocks/textures/uranium_ore.png
new file mode 100644
index 0000000..77e504d
--- /dev/null
+++ b/display_blocks/textures/uranium_ore.png
Binary files differ
diff --git a/display_blocks/uranium.lua b/display_blocks/uranium.lua
new file mode 100644
index 0000000..10a004b
--- /dev/null
+++ b/display_blocks/uranium.lua
@@ -0,0 +1,56 @@
+minetest.register_node( "display_blocks:uranium_ore", {
+ description = "Uranium Ore",
+ tiles = { "default_stone.png^uranium_ore.png" },
+ is_ground_content = true,
+ groups = {cracky=3},
+ drop = 'craft "display_blocks:uranium_dust" 3',
+})
+
+minetest.register_craftitem( "display_blocks:uranium_dust", {
+ description = "Uranium Dust",
+ inventory_image = "uranium_dust.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_node( "display_blocks:uranium_block", {
+ description = "Uranium Block",
+ tiles = { "uranium_block.png" },
+ light_propagates = true,
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 15,
+ is_ground_content = true,
+ groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+})
+
+
+minetest.register_craft( {
+ output = 'node "display_blocks:uranium_block" 1',
+ recipe = {
+ { 'display_blocks:uranium_dust', 'display_blocks:uranium_dust', 'display_blocks:uranium_dust' },
+ { 'display_blocks:uranium_dust', 'display_blocks:uranium_dust', 'display_blocks:uranium_dust' },
+ { 'display_blocks:uranium_dust', 'display_blocks:uranium_dust', 'display_blocks:uranium_dust' },
+ }
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:uranium_ore",
+ wherein = "default:stone",
+ clust_scarcity = 10*10*10,
+ clust_num_ores =18,
+ clust_size = 3,
+ y_min = -3000,
+ y_max = -2000,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "display_blocks:uranium_ore",
+ wherein = "default:stone",
+ clust_scarcity =20*20*20,
+ clust_num_ores =40,
+ clust_size = 4,
+ y_min = -7000,
+ y_max = -5000,
+})
diff --git a/external_legacy/README.txt b/external_legacy/README.txt
new file mode 100644
index 0000000..6451fec
--- /dev/null
+++ b/external_legacy/README.txt
@@ -0,0 +1,18 @@
+Minetest 0.4 mod: external_legacy
+=================================
+
+License of source code:
+-----------------------
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+http://www.gnu.org/licenses/lgpl-2.1.html
+
+License of media (textures and sounds)
+--------------------------------------
+Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
+http://creativecommons.org/licenses/by-sa/3.0/
diff --git a/external_legacy/init.lua b/external_legacy/init.lua
new file mode 100644
index 0000000..c4d8bb0
--- /dev/null
+++ b/external_legacy/init.lua
@@ -0,0 +1,24 @@
+-- Minetest 0.4 mod: external_legacy
+-- See README.txt for licensing and other information.
+
+-- Aliases to support moreores' ores
+minetest.register_alias("moreores:mineral_gold", "default:stone_with_gold")
+minetest.register_alias("moreores:gold_block", "default:goldblock")
+minetest.register_alias("moreores:gold_lump", "default:gold_lump")
+minetest.register_alias("moreores:gold_ingot", "default:gold_ingot")
+minetest.register_alias("moreores:mineral_copper", "default:stone_with_copper")
+minetest.register_alias("moreores:copper_lump", "default:copper_lump")
+minetest.register_alias("moreores:copper_ingot", "default:copper_ingot")
+minetest.register_alias("moreores:copper_block", "default:copperblock")
+minetest.register_alias("moreores:bronze_ingot", "default:bronze_ingot")
+minetest.register_alias("moreores:bronze_block", "default:bronzeblock")
+
+-- Aliases for the diamonds mod by InfinityProject
+minetest.register_alias("diamonds:diamond_in_ground", "default:stone_with_diamond")
+minetest.register_alias("diamonds:block", "default:diamondblock")
+minetest.register_alias("diamonds:sword", "default:sword_diamond")
+minetest.register_alias("diamonds:pick", "default:pick_diamond")
+minetest.register_alias("diamonds:shovel", "default:shovel_diamond")
+minetest.register_alias("diamonds:axe", "default:axe_diamond")
+minetest.register_alias("diamonds:diamond", "default:diamond")
+minetest.register_alias("diamonds:ingot", "default:diamond")
diff --git a/farming_plus/README.txt b/farming_plus/README.txt
new file mode 100644
index 0000000..c7c6751
--- /dev/null
+++ b/farming_plus/README.txt
@@ -0,0 +1,23 @@
+===FARMING_PLUS MOD for MINETEST===
+by PilzAdam
+
+License:
+Sourcecode: WTFPL (see below)
+Graphics: WTFPL (see below)
+
+See also:
+http://minetest.net/
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/farming_plus/bananas.lua b/farming_plus/bananas.lua
new file mode 100644
index 0000000..c5184a2
--- /dev/null
+++ b/farming_plus/bananas.lua
@@ -0,0 +1,71 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_node("farming_plus:banana_sapling", {
+ description = S("Banana Tree Sapling"),
+ drawtype = "plantlike",
+ tiles = {"farming_banana_sapling.png"},
+ inventory_image = "farming_banana_sapling.png",
+ wield_image = "farming_banana_sapling.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
+ },
+ groups = {dig_immediate=3,flammable=2},
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_node("farming_plus:banana_leaves", {
+ drawtype = "allfaces_optional",
+ tiles = {"farming_banana_leaves.png"},
+ paramtype = "light",
+ groups = {snappy=3, leafdecay=3, flammable=2, not_in_creative_inventory=1},
+ drop = {
+ max_items = 1,
+ items = {
+ {
+ items = {'farming_plus:banana_sapling'},
+ rarity = 20,
+ },
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_abm({
+ nodenames = {"farming_plus:banana_sapling"},
+ interval = 60,
+ chance = 20,
+ action = function(pos, node)
+ farming.generate_tree(pos, "default:tree", "farming_plus:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming_plus:banana"]=20})
+ end
+})
+
+minetest.register_on_generated(function(minp, maxp, blockseed)
+ if math.random(1, 100) > 5 then
+ return
+ end
+ local tmp = {x=(maxp.x-minp.x)/2+minp.x, y=(maxp.y-minp.y)/2+minp.y, z=(maxp.z-minp.z)/2+minp.z}
+ local pos = minetest.find_node_near(tmp, maxp.x-minp.x, {"default:dirt_with_grass"})
+ if pos ~= nil then
+ farming.generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "default:tree", "farming_plus:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming_plus:banana"]=10})
+ end
+end)
+
+minetest.register_node("farming_plus:banana", {
+ description = S("Banana"),
+ tiles = {"farming_banana.png"},
+ inventory_image = "farming_banana.png",
+ wield_image = "farming_banana.png",
+ drawtype = "torchlike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=3,leafdecay_drop=1},
+ sounds = default.node_sound_defaults(),
+
+ on_use = minetest.item_eat(6),
+})
diff --git a/farming_plus/carrots.lua b/farming_plus/carrots.lua
new file mode 100644
index 0000000..7f55644
--- /dev/null
+++ b/farming_plus/carrots.lua
@@ -0,0 +1,87 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem("farming_plus:carrot_seed", {
+ description = S("Carrot Seeds"),
+ inventory_image = "farming_carrot_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming_plus:carrot_1")
+ end
+})
+
+minetest.register_node("farming_plus:carrot_1", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_carrot_1.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+3/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:carrot_2", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_carrot_2.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+5/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:carrot_3", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_carrot_3.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+12/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:carrot", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_carrot_4.png"},
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'farming_plus:carrot_seed'} },
+ { items = {'farming_plus:carrot_seed'}, rarity = 2},
+ { items = {'farming_plus:carrot_seed'}, rarity = 5},
+ { items = {'farming_plus:carrot_item'} },
+ { items = {'farming_plus:carrot_item'}, rarity = 2 },
+ { items = {'farming_plus:carrot_item'}, rarity = 5 }
+ }
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:carrot_item", {
+ description = S("Carrot"),
+ inventory_image = "farming_carrot.png",
+ on_use = minetest.item_eat(3),
+})
+
+farming.add_plant("farming_plus:carrot", {"farming_plus:carrot_1", "farming_plus:carrot_2", "farming_plus:carrot_3"}, 50, 20)
diff --git a/farming_plus/cocoa.lua b/farming_plus/cocoa.lua
new file mode 100644
index 0000000..42a7705
--- /dev/null
+++ b/farming_plus/cocoa.lua
@@ -0,0 +1,81 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_node("farming_plus:cocoa_sapling", {
+ description = S("Cocoa Tree Sapling"),
+ drawtype = "plantlike",
+ tiles = {"farming_cocoa_sapling.png"},
+ inventory_image = "farming_cocoa_sapling.png",
+ wield_image = "farming_cocoa_sapling.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
+ },
+ groups = {dig_immediate=3,flammable=2},
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_node("farming_plus:cocoa_leaves", {
+ drawtype = "allfaces_optional",
+ tiles = {"farming_banana_leaves.png"},
+ paramtype = "light",
+ groups = {snappy=3, leafdecay=3, flammable=2, not_in_creative_inventory=1},
+ drop = {
+ max_items = 1,
+ items = {
+ {
+ items = {'farming_plus:cocoa_sapling'},
+ rarity = 20,
+ },
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_abm({
+ nodenames = {"farming_plus:cocoa_sapling"},
+ interval = 60,
+ chance = 20,
+ action = function(pos, node)
+ farming.generate_tree(pos, "default:tree", "farming_plus:cocoa_leaves", {"default:sand", "default:desert_sand"}, {["farming_plus:cocoa"]=20})
+ end
+})
+
+minetest.register_on_generated(function(minp, maxp, blockseed)
+ if math.random(1, 100) > 5 then
+ return
+ end
+ local tmp = {x=(maxp.x-minp.x)/2+minp.x, y=(maxp.y-minp.y)/2+minp.y, z=(maxp.z-minp.z)/2+minp.z}
+ local pos = minetest.find_node_near(tmp, maxp.x-minp.x, {"default:desert_sand"})
+ if pos ~= nil then
+ farming.generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "default:tree", "farming_plus:cocoa_leaves", {"default:sand", "default:desert_sand"}, {["farming_plus:cocoa"]=20})
+ end
+end)
+
+minetest.register_node("farming_plus:cocoa", {
+ description = S("Cocoa"),
+ tiles = {"farming_cocoa.png"},
+ visual_scale = 0.5,
+ inventory_image = "farming_cocoa.png",
+ wield_image = "farming_cocoa.png",
+ drawtype = "torchlike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=3,leafdecay_drop=1},
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:cocoa_bean", {
+ description = "Cocoa Bean",
+ inventory_image = "farming_cocoa_bean.png",
+})
+
+minetest.register_craft({
+ output = "farming_plus:cocoa_bean 10",
+ type = "shapeless",
+ recipe = {"farming_plus:cocoa"},
+})
diff --git a/farming_plus/depends.txt b/farming_plus/depends.txt
new file mode 100644
index 0000000..657056a
--- /dev/null
+++ b/farming_plus/depends.txt
@@ -0,0 +1,3 @@
+default
+farming
+intllib?
diff --git a/farming_plus/init.lua b/farming_plus/init.lua
new file mode 100644
index 0000000..4f949e7
--- /dev/null
+++ b/farming_plus/init.lua
@@ -0,0 +1,324 @@
+farming.registered_plants = {}
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+if (minetest.get_modpath("intllib")) then
+ dofile(minetest.get_modpath("intllib").."/intllib.lua")
+ farming.S = intllib.Getter(minetest.get_current_modname())
+else
+ farming.S = function ( s ) return s end
+end
+
+function farming.add_plant(full_grown, names, interval, chance)
+ minetest.register_abm({
+ nodenames = names,
+ interval = interval,
+ chance = chance,
+ action = function(pos, node)
+ pos.y = pos.y-1
+ if minetest.get_node(pos).name ~= "farming:soil_wet" then
+ return
+ end
+ pos.y = pos.y+1
+ if not minetest.get_node_light(pos) then
+ return
+ end
+ if minetest.get_node_light(pos) < 8 then
+ return
+ end
+ local step = nil
+ for i,name in ipairs(names) do
+ if name == node.name then
+ step = i
+ break
+ end
+ end
+ if step == nil then
+ return
+ end
+ local new_node = {name=names[step+1]}
+ if new_node.name == nil then
+ new_node.name = full_grown
+ end
+ minetest.set_node(pos, new_node)
+ end
+ })
+
+ table.insert(farming.registered_plants, {
+ full_grown = full_grown,
+ names = names,
+ interval = interval,
+ chance = chance,
+ })
+end
+
+function farming.generate_tree(pos, trunk, leaves, underground, replacements)
+ pos.y = pos.y-1
+ local nodename = minetest.get_node(pos).name
+ local ret = true
+ for _,name in ipairs(underground) do
+ if nodename == name then
+ ret = false
+ break
+ end
+ end
+ pos.y = pos.y+1
+ if not minetest.get_node_light(pos) then
+ return
+ end
+ if ret or minetest.get_node_light(pos) < 8 then
+ return
+ end
+
+ node = {name = ""}
+ for dy=1,4 do
+ pos.y = pos.y+dy
+ if minetest.get_node(pos).name ~= "air" then
+ return
+ end
+ pos.y = pos.y-dy
+ end
+ node.name = trunk
+ for dy=0,4 do
+ pos.y = pos.y+dy
+ minetest.set_node(pos, node)
+ pos.y = pos.y-dy
+ end
+
+ if not replacements then
+ replacements = {}
+ end
+
+ node.name = leaves
+ pos.y = pos.y+3
+ for dx=-2,2 do
+ for dz=-2,2 do
+ for dy=0,3 do
+ pos.x = pos.x+dx
+ pos.y = pos.y+dy
+ pos.z = pos.z+dz
+
+ if dx == 0 and dz == 0 and dy==3 then
+ if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
+ minetest.set_node(pos, node)
+ for name,rarity in pairs(replacements) do
+ if math.random(1, rarity) == 1 then
+ minetest.set_node(pos, {name=name})
+ end
+ end
+ end
+ elseif dx == 0 and dz == 0 and dy==4 then
+ if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
+ minetest.set_node(pos, node)
+ for name,rarity in pairs(replacements) do
+ if math.random(1, rarity) == 1 then
+ minetest.set_node(pos, {name=name})
+ end
+ end
+ end
+ elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then
+ if minetest.get_node(pos).name == "air" then
+ minetest.set_node(pos, node)
+ for name,rarity in pairs(replacements) do
+ if math.random(1, rarity) == 1 then
+ minetest.set_node(pos, {name=name})
+ end
+ end
+ end
+ else
+ if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then
+ if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
+ minetest.set_node(pos, node)
+ for name,rarity in pairs(replacements) do
+ if math.random(1, rarity) == 1 then
+ minetest.set_node(pos, {name=name})
+ end
+ end
+ end
+ end
+ end
+
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ end
+ end
+ end
+end
+
+farming.seeds = {
+ ["farming:pumpkin_seed"]=60,
+ ["farming_plus:strawberry_seed"]=30,
+ ["farming_plus:rhubarb_seed"]=30,
+ ["farming_plus:potatoe_seed"]=30,
+ ["farming_plus:tomato_seed"]=30,
+ ["farming_plus:orange_seed"]=30,
+ ["farming_plus:carrot_seed"]=30,
+}
+
+
+-- ========= GENERATE PLANTS IN THE MAP =========
+minetest.register_on_generated(function(minp, maxp, seed)
+ if maxp.y >= 2 and minp.y <= 0 then
+ -- Generate plants (code from flowers)
+ local perlin1 = minetest.get_perlin(974, 3, 0.6, 100)
+ -- Assume X and Z lengths are equal
+ local divlen = 16
+ local divs = (maxp.x-minp.x)/divlen+1;
+ for divx=0,divs-1 do
+ for divz=0,divs-1 do
+ local x0 = minp.x + math.floor((divx+0)*divlen)
+ local z0 = minp.z + math.floor((divz+0)*divlen)
+ local x1 = minp.x + math.floor((divx+1)*divlen)
+ local z1 = minp.z + math.floor((divz+1)*divlen)
+ -- Determine flowers amount from perlin noise
+ local grass_amount = math.floor(perlin1:get2d({x=x0, y=z0}) ^ 3 * 9)
+ -- Find random positions for flowers based on this random
+ local pr = PseudoRandom(seed+456)
+ for i=0,grass_amount do
+ local x = pr:next(x0, x1)
+ local z = pr:next(z0, z1)
+ -- Find ground level (0...15)
+ local ground_y = nil
+ for y=30,0,-1 do
+ if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then
+ ground_y = y
+ break
+ end
+ end
+
+ if ground_y then
+ local p = {x=x,y=ground_y+1,z=z}
+ local nn = minetest.get_node(p).name
+ -- Check if the node can be replaced
+ if minetest.registered_nodes[nn] and
+ minetest.registered_nodes[nn].buildable_to then
+ nn = minetest.get_node({x=x,y=ground_y,z=z}).name
+ if nn == "default:dirt_with_grass" then
+ --local plant_choice = pr:next(1, #farming.registered_plants)
+ local plant_choice = math.floor(perlin1:get2d({x=x,y=z})*(#farming.registered_plants))
+ local plant = farming.registered_plants[plant_choice]
+ if plant then
+ minetest.set_node(p, {name=plant.full_grown})
+ end
+ end
+ end
+ end
+
+ end
+ end
+ end
+ end
+end)
+
+function farming.place_seed(itemstack, placer, pointed_thing, plantname)
+
+ -- Call on_rightclick if the pointed node defines it
+ if pointed_thing.type == "node" and placer and
+ not placer:get_player_control().sneak then
+ local n = minetest.get_node(pointed_thing.under)
+ local nn = n.name
+ if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
+ return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n,
+ placer, itemstack, pointed_thing) or itemstack, false
+ end
+ end
+
+ local pt = pointed_thing
+ -- check if pointing at a node
+ if not pt then
+ return
+ end
+ if pt.type ~= "node" then
+ return
+ end
+
+ local under = minetest.get_node(pt.under)
+ local above = minetest.get_node(pt.above)
+
+ -- return if any of the nodes is not registered
+ if not minetest.registered_nodes[under.name] then
+ return
+ end
+ if not minetest.registered_nodes[above.name] then
+ return
+ end
+
+ -- check if pointing at the top of the node
+ if pt.above.y ~= pt.under.y+1 then
+ return
+ end
+
+ -- check if you can replace the node above the pointed node
+ if not minetest.registered_nodes[above.name].buildable_to then
+ return
+ end
+
+ -- check if pointing at soil
+ if minetest.get_item_group(under.name, "soil") < 2 then
+ return
+ end
+
+ -- add the node and remove 1 item from the itemstack
+ minetest.add_node(pt.above, {name=plantname, param2 = 1})
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+end
+
+-- ========= ALIASES FOR FARMING MOD BY SAPIER =========
+-- potatoe -> potatoe
+minetest.register_alias("farming:potatoe_node", "farming_plus:potatoe")
+--minetest.register_alias("farming:potatoe", "farming:potatoe_item") cant do this
+minetest.register_alias("farming:potatoe_straw", "farming_plus:potatoe")
+minetest.register_alias("farming:seed_potatoe", "farming_plus:potatoe_seed")
+for lvl = 1, 6, 1 do
+ minetest.register_entity(":farming:potatoe_lvl"..lvl, {
+ on_activate = function(self, staticdata)
+ minetest.set_node(self.object:getpos(), {name="farming_plus:potatoe_1"})
+ end
+ })
+end
+
+
+minetest.register_alias("farming:cotton", "farming:cotton_3")
+minetest.register_alias("farming:wheat_harvested", "farming:wheat")
+minetest.register_alias("farming:dough", "farming:flour")
+minetest.register_abm({
+ nodenames = {"farming:wheat"},
+ interval = 1,
+ chance = 1,
+ action = function(pos)
+ minetest.set_node(pos, {name="farming:wheat_8"})
+ end,
+})
+
+-- ========= STRAWBERRIES =========
+dofile(minetest.get_modpath("farming_plus").."/strawberries.lua")
+
+-- ========= RHUBARB =========
+dofile(minetest.get_modpath("farming_plus").."/rhubarb.lua")
+
+-- ========= POTATOES =========
+dofile(minetest.get_modpath("farming_plus").."/potatoes.lua")
+
+-- ========= TOMATOES =========
+dofile(minetest.get_modpath("farming_plus").."/tomatoes.lua")
+
+-- ========= ORANGES =========
+dofile(minetest.get_modpath("farming_plus").."/oranges.lua")
+
+-- ========= BANANAS =========
+dofile(minetest.get_modpath("farming_plus").."/bananas.lua")
+
+-- ========= CARROTS =========
+dofile(minetest.get_modpath("farming_plus").."/carrots.lua")
+
+-- ========= COCOA =========
+dofile(minetest.get_modpath("farming_plus").."/cocoa.lua")
+
+-- ========= PUMPKIN =========
+dofile(minetest.get_modpath("farming_plus").."/pumpkin.lua")
+
+-- ========= WEED =========
+dofile(minetest.get_modpath("farming_plus").."/weed.lua")
diff --git a/farming_plus/locale/de.txt b/farming_plus/locale/de.txt
new file mode 100644
index 0000000..8caedde
--- /dev/null
+++ b/farming_plus/locale/de.txt
@@ -0,0 +1,50 @@
+# Translation by Xanthin
+
+### bananas.lua ###
+Banana Tree Sapling = Bananenbaumsetzling
+Banana = Banane
+
+### carrots.lua ###
+Carrot Seeds = Karottensamen
+Carrot = Karotte
+
+### cocoa.lua ###
+Cocoa Tree Sapling = Kakaobaumsetzling
+Cocoa = Kakao
+Cocoa Bean = Kakaobohne
+
+### oranges.lua ###
+Orange Seeds = Orangensamen
+Orange = Orange
+
+### potatoes.lua ###
+Potato Seeds = Kartoffelsamen
+Potato = Kartoffel
+
+### pumpkin.lua ###
+Pumpkin Seed = Kuerbissamen
+Pumpkin = Kuerbis
+Pumpkin Face = Kuerbislaterne
+Pumpkin Face With Light = Leuchtende Kuerbislaterne
+Big Pumpkin = Riesen-Kuerbis
+Scarecrow = Vogelscheuche
+Scarecrow With Light = Leuchtende Vogelscheuche
+Pumpkin Bread = Kuerbisbrot
+Pumpkin Flour = Kuerbismehl
+
+### rhubarb.lua ###
+Rhubarb Seeds = Rhabarbersamen
+Rhubarb = Rhabarber
+
+### strawberries.lua ###
+Strawberry Seeds = Erdbeersamen
+Strawberry = Erdbeere
+
+### tomatoes.lua ###
+Tomato Seeds = Tomatensamen
+Tomato = Tomate
+
+### init.lua ###
+
+### weed.lua ###
+Weed = Unkraut
diff --git a/farming_plus/locale/template.txt b/farming_plus/locale/template.txt
new file mode 100644
index 0000000..9926004
--- /dev/null
+++ b/farming_plus/locale/template.txt
@@ -0,0 +1,51 @@
+# Template
+
+### bananas.lua ###
+Banana Tree Sapling =
+Banana =
+
+### carrots.lua ###
+Carrot Seeds =
+Carrot =
+
+### cocoa.lua ###
+Cocoa Tree Sapling =
+Cocoa =
+Cocoa Bean =
+
+### oranges.lua ###
+Orange Seeds =
+Orange =
+
+### potatoes.lua ###
+Potato Seeds =
+Potato =
+
+### pumpkin.lua ###
+Pumpkin Seed =
+Pumpkin =
+Pumpkin Face =
+Pumpkin Face With Light =
+Big Pumpkin =
+Scarecrow =
+Scarecrow With Light =
+Pumpkin Bread =
+Pumpkin Flour =
+
+### rhubarb.lua ###
+Rhubarb Seeds =
+Rhubarb =
+
+### strawberries.lua ###
+Strawberry Seeds =
+Strawberry =
+
+### tomatoes.lua ###
+Tomato Seeds =
+Tomato =
+
+### init.lua ###
+
+### weed.lua ###
+Weed =
+
diff --git a/farming_plus/oranges.lua b/farming_plus/oranges.lua
new file mode 100644
index 0000000..685ebb3
--- /dev/null
+++ b/farming_plus/oranges.lua
@@ -0,0 +1,87 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem("farming_plus:orange_seed", {
+ description = S("Orange Seeds"),
+ inventory_image = "farming_orange_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming_plus:orange_1")
+ end
+})
+
+minetest.register_node("farming_plus:orange_1", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_orange_1.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+3/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:orange_2", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_orange_2.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+8/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:orange_3", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_orange_3.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+14/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:orange", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_orange_4.png"},
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'farming_plus:orange_seed'} },
+ { items = {'farming_plus:orange_seed'}, rarity = 2},
+ { items = {'farming_plus:orange_seed'}, rarity = 5},
+ { items = {'farming_plus:orange_item'} },
+ { items = {'farming_plus:orange_item'}, rarity = 2 },
+ { items = {'farming_plus:orange_item'}, rarity = 5 }
+ }
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:orange_item", {
+ description = S("Orange"),
+ inventory_image = "farming_orange.png",
+ on_use = minetest.item_eat(4),
+})
+
+farming.add_plant("farming_plus:orange", {"farming_plus:orange_1", "farming_plus:orange_2", "farming_plus:orange_3"}, 50, 20)
diff --git a/farming_plus/potatoes.lua b/farming_plus/potatoes.lua
new file mode 100644
index 0000000..794c021
--- /dev/null
+++ b/farming_plus/potatoes.lua
@@ -0,0 +1,77 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem("farming_plus:potato_seed", {
+ description = ("Potato Seeds"),
+ inventory_image = "farming_potato_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming_plus:potato_1")
+ end
+})
+
+minetest.register_node("farming_plus:potato_1", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_potato_1.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+6/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:potato_2", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_potato_2.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+9/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:potato", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_potato_3.png"},
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'farming_plus:potato_seed'} },
+ { items = {'farming_plus:potato_seed'}, rarity = 2},
+ { items = {'farming_plus:potato_seed'}, rarity = 5},
+ { items = {'farming_plus:potato_item'} },
+ { items = {'farming_plus:potato_item'}, rarity = 2 },
+ { items = {'farming_plus:potato_item'}, rarity = 5 }
+ }
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:potato_item", {
+ description = S("Potato"),
+ inventory_image = "farming_potato.png",
+})
+
+farming.add_plant("farming_plus:potato", {"farming_plus:potato_1", "farming_plus:potato_2"}, 50, 20)
+
+minetest.register_alias("farming_plus:potatoe_item", "farming_plus:potato_item")
+minetest.register_alias("farming_plus:potatoe_seed", "farming_plus:potato_seed")
+minetest.register_alias("farming_plus:potatoe", "farming_plus:potato")
+minetest.register_alias("farming_plus:potatoe_1", "farming_plus:potato_1")
+minetest.register_alias("farming_plus:potatoe_2", "farming_plus:potato_2")
+
diff --git a/farming_plus/pumpkin.lua b/farming_plus/pumpkin.lua
new file mode 100644
index 0000000..4a68b99
--- /dev/null
+++ b/farming_plus/pumpkin.lua
@@ -0,0 +1,480 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem(":farming:pumpkin_seed", {
+ description = S("Pumpkin Seed"),
+ inventory_image = "farming_pumpkin_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1")
+ end
+})
+
+minetest.register_node(":farming:pumpkin_1", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ drop = "",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2}
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2}
+ },
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, not_in_creative_inventory=1, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":farming:pumpkin_2", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ drop = "",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.35, -0.5, -0.35, 0.35, 0.2, 0.35}
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.35, -0.5, -0.35, 0.35, 0.2, 0.35}
+ },
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, not_in_creative_inventory=1, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":farming:pumpkin", {
+ description = S("Pumpkin"),
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+
+ on_punch = function(pos, node, puncher)
+ local tool = puncher:get_wielded_item():get_name()
+ if tool and string.match(tool, "sword") then
+ node.name = "farming:pumpkin_face"
+ minetest.set_node(pos, node)
+ puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed"))
+ if math.random(1, 5) == 1 then
+ puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed"))
+ end
+ end
+ end
+})
+
+farming.add_plant("farming:pumpkin", {"farming:pumpkin_1", "farming:pumpkin_2"}, 80, 20)
+
+minetest.register_node(":farming:pumpkin_face", {
+ description = S("Pumpkin Face"),
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"},
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":farming:pumpkin_face_light", {
+ description = S("Pumpkin Face With Light"),
+ paramtype2 = "facedir",
+ light_source = LIGHT_MAX-2,
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face_light.png"},
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "farming:pumpkin_face_light",
+ recipe = {"farming:pumpkin_face", "default:torch"}
+})
+
+-- ========= BIG PUMPKIN =========
+minetest.register_node(":farming:big_pumpkin", {
+ description = S("Big Pumpkin"),
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_big_side.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1, -0.5, -1, 1, 1.5, 1}
+ }
+ },
+ groups = {choppy=1, oddly_breakable_by_hand=1, flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+
+ after_place_node = function(pos, placer)
+ for dx=-1,1 do
+ for dy=0,1 do
+ for dz=-1,1 do
+ pos.x = pos.x+dx
+ pos.y = pos.y+dy
+ pos.z = pos.z+dz
+ if dx ~= 0 or dy ~= 0 or dz ~= 0 then
+ if minetest.get_node(pos).name ~= "air" then
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ minetest.remove_node(pos)
+ minetest.after(0.1, function(placer)
+ local inv = placer:get_inventory()
+ local index = placer:get_wield_index()
+ inv:set_stack("main", index, ItemStack("farming:big_pumpkin"))
+ end, placer)
+ return
+ end
+ end
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ end
+ end
+ end
+ for dy=0,1 do
+ pos.y = pos.y+dy
+ pos.z = pos.z+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=2})
+ pos.x = pos.x-1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=2})
+ pos.x = pos.x+1
+ pos.z = pos.z-2
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=4})
+ pos.x = pos.x+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=4})
+ pos.z = pos.z+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=3})
+ pos.z = pos.z+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=3})
+ pos.z = pos.z-1
+ pos.x = pos.x-2
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=1})
+ pos.z = pos.z-1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=1})
+ pos.z = pos.z+1
+ pos.x = pos.x+1
+ pos.y = pos.y-dy
+ end
+ pos.y = pos.y+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_top"})
+ end,
+
+ after_destruct = function(pos, oldnode)
+ for dx=-1,1 do
+ for dy=0,1 do
+ for dz=-1,1 do
+ pos.x = pos.x+dx
+ pos.y = pos.y+dy
+ pos.z = pos.z+dz
+ local name = minetest.get_node(pos).name
+ if string.find(name, "farming:big_pumpkin") then
+ minetest.remove_node(pos)
+ end
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ end
+ end
+ end
+ end
+})
+
+minetest.register_node(":farming:big_pumpkin_side", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_big_top_side.png", "farming_pumpkin_big_side.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0, 0.5, 0.5, 0.5}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ },
+ groups = {not_in_creative_inventory=1},
+})
+minetest.register_node(":farming:big_pumpkin_corner", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_big_top_corner.png", "farming_pumpkin_big_side.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0, 0, 0.5, 0.5}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ },
+ groups = {not_in_creative_inventory=1},
+})
+
+minetest.register_node(":farming:big_pumpkin_top", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"farming_pumpkin_big_top.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ },
+ groups = {not_in_creative_inventory=1},
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "farming:big_pumpkin",
+ recipe = {"bucket:bucket_water", "farming:pumpkin"},
+ replacements = {
+ {"bucket:bucket_water", "bucket:bucket_empty"}
+ }
+})
+
+-- ========= SCARECROW =========
+local box1 = {
+ {-1, -8, -1, 1, 8, 1},
+}
+
+local box2 = {
+ {-1, -8, -1, 1, 8, 1},
+ {-12, -8, -1, 12, -7, 1},
+ {-5, -2, -5, 5, 8, 5}
+}
+
+for j,list in ipairs(box1) do
+ for i,int in ipairs(list) do
+ list[i] = int/16
+ end
+ box1[j] = list
+end
+
+for j,list in ipairs(box2) do
+ for i,int in ipairs(list) do
+ list[i] = int/16
+ end
+ box2[j] = list
+end
+
+minetest.register_node(":farming:scarecrow", {
+ description = S("Scarecrow"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = box2
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5}
+ }
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2},
+
+ after_place_node = function(pos, placer)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ pos.y = pos.y+1
+ if minetest.get_node(pos).name ~= "air" then
+ pos.y = pos.y-1
+ minetest.remove_node(pos)
+ minetest.after(0.1, function(placer)
+ local inv = placer:get_inventory()
+ local index = placer:get_wield_index()
+ inv:set_stack("main", index, ItemStack("farming:scarecrow"))
+ end, placer)
+ return
+ end
+ minetest.set_node(pos, node)
+ pos.y = pos.y-1
+ node.name = "farming:scarecrow_bottom"
+ minetest.set_node(pos, node)
+ end,
+
+ after_destruct = function(pos, oldnode)
+ pos.y = pos.y-1
+ if minetest.get_node(pos).name == "farming:scarecrow_bottom" then
+ minetest.remove_node(pos)
+ end
+ end
+})
+
+minetest.register_node(":farming:scarecrow_bottom", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"default_wood.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = box1
+ },
+ groups = {not_in_creative_inventory=1},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ }
+})
+
+minetest.register_craft({
+ output = "farming:scarecrow",
+ recipe = {
+ {"", "farming:pumpkin_face", "",},
+ {"default:stick", "default:stick", "default:stick",},
+ {"", "default:stick", "",}
+ }
+})
+
+minetest.register_node(":farming:scarecrow_light", {
+ description = S("Scarecrow With light"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ light_source = LIGHT_MAX-2,
+ tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front_light.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = box2
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5}
+ }
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2},
+
+ after_place_node = function(pos, placer)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ pos.y = pos.y+1
+ if minetest.get_node(pos).name ~= "air" then
+ pos.y = pos.y-1
+ minetest.remove_node(pos)
+ minetest.after(0.1, function(placer)
+ local inv = placer:get_inventory()
+ local index = placer:get_wield_index()
+ inv:set_stack("main", index, ItemStack("farming:scarecrow_light"))
+ end, placer)
+ return
+ end
+ minetest.set_node(pos, node)
+ pos.y = pos.y-1
+ node.name = "farming:scarecrow_bottom"
+ minetest.set_node(pos, node)
+ end,
+
+ after_destruct = function(pos, oldnode)
+ pos.y = pos.y-1
+ if minetest.get_node(pos).name == "farming:scarecrow_bottom" then
+ minetest.remove_node(pos)
+ end
+ end
+})
+
+minetest.register_craft({
+ output = "farming:scarecrow_light",
+ recipe = {
+ {"", "farming:pumpkin_face_light", "",},
+ {"default:stick", "default:stick", "default:stick",},
+ {"", "default:stick", "",}
+ }
+})
+
+--===============
+minetest.register_craftitem(":farming:pumpkin_bread", {
+ description = S("Pumpkin Bread"),
+ inventory_image = "farming_bread_pumpkin.png",
+ stack_max = 1,
+ on_use = minetest.item_eat(8)
+})
+
+minetest.register_craftitem(":farming:pumpkin_flour", {
+ description = "Pumpkin Flour",
+ inventory_image = "farming_cake_mix_pumpkin.png",
+})
+minetest.register_alias("farming:pumpkin_cake_mix", "farming:pumpkin_flour")
+
+minetest.register_craft({
+ output = "farming:pumpkin_flour",
+ type = "shapeless",
+ recipe = {"farming:flour", "farming:pumpkin"}
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "farming:pumpkin_bread",
+ recipe = "farming:pumpkin_flour",
+ cooktime = 10
+})
+
+
+-- ========= FUEL =========
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin_seed",
+ burntime = 1
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin",
+ burntime = 5
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin_face",
+ burntime = 5
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin_face_light",
+ burntime = 7
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:big_pumpkin",
+ burntime = 10
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:scarecrow",
+ burntime = 5
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:scarecrow_light",
+ burntime = 5
+})
diff --git a/farming_plus/rhubarb.lua b/farming_plus/rhubarb.lua
new file mode 100644
index 0000000..43c5baa
--- /dev/null
+++ b/farming_plus/rhubarb.lua
@@ -0,0 +1,70 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem("farming_plus:rhubarb_seed", {
+ description = S("Rhubarb Seeds"),
+ inventory_image = "farming_rhubarb_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming_plus:rhubarb_1")
+ end
+})
+
+minetest.register_node("farming_plus:rhubarb_1", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_rhubarb_1.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+5/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:rhubarb_2", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_rhubarb_2.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+11/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:rhubarb", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_rhubarb_3.png"},
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'farming_plus:rhubarb_seed'} },
+ { items = {'farming_plus:rhubarb_seed'}, rarity = 2},
+ { items = {'farming_plus:rhubarb_seed'}, rarity = 5},
+ { items = {'farming_plus:rhubarb_item'} },
+ { items = {'farming_plus:rhubarb_item'}, rarity = 2 },
+ { items = {'farming_plus:rhubarb_item'}, rarity = 5 }
+ }
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:rhubarb_item", {
+ description = S("Rhubarb"),
+ inventory_image = "farming_rhubarb.png",
+})
+
+farming.add_plant("farming_plus:rhubarb", {"farming_plus:rhubarb_1", "farming_plus:rhubarb_2"}, 50, 20)
diff --git a/farming_plus/strawberries.lua b/farming_plus/strawberries.lua
new file mode 100644
index 0000000..3c5ef7b
--- /dev/null
+++ b/farming_plus/strawberries.lua
@@ -0,0 +1,87 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem("farming_plus:strawberry_seed", {
+ description = S("Strawberry Seeds"),
+ inventory_image = "farming_strawberry_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming_plus:strawberry_1")
+ end
+})
+
+minetest.register_node("farming_plus:strawberry_1", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_strawberry_1.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+9/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:strawberry_2", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_strawberry_2.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+12/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:strawberry_3", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_strawberry_3.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+14/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:strawberry", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_strawberry_4.png"},
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'farming_plus:strawberry_seed'} },
+ { items = {'farming_plus:strawberry_seed'}, rarity = 2},
+ { items = {'farming_plus:strawberry_seed'}, rarity = 5},
+ { items = {'farming_plus:strawberry_item'} },
+ { items = {'farming_plus:strawberry_item'}, rarity = 2 },
+ { items = {'farming_plus:strawberry_item'}, rarity = 5 }
+ }
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:strawberry_item", {
+ description = S("Strawberry"),
+ inventory_image = "farming_strawberry.png",
+ on_use = minetest.item_eat(2),
+})
+
+farming.add_plant("farming_plus:strawberry", {"farming_plus:strawberry_1", "farming_plus:strawberry_2", "farming_plus:strawberry_3"}, 50, 20)
diff --git a/farming_plus/textures/farming_banana.png b/farming_plus/textures/farming_banana.png
new file mode 100644
index 0000000..f775e14
--- /dev/null
+++ b/farming_plus/textures/farming_banana.png
Binary files differ
diff --git a/farming_plus/textures/farming_banana_leaves.png b/farming_plus/textures/farming_banana_leaves.png
new file mode 100644
index 0000000..cf8eecb
--- /dev/null
+++ b/farming_plus/textures/farming_banana_leaves.png
Binary files differ
diff --git a/farming_plus/textures/farming_banana_sapling.png b/farming_plus/textures/farming_banana_sapling.png
new file mode 100644
index 0000000..821c64f
--- /dev/null
+++ b/farming_plus/textures/farming_banana_sapling.png
Binary files differ
diff --git a/farming_plus/textures/farming_bread_pumpkin.png b/farming_plus/textures/farming_bread_pumpkin.png
new file mode 100644
index 0000000..44db02e
--- /dev/null
+++ b/farming_plus/textures/farming_bread_pumpkin.png
Binary files differ
diff --git a/farming_plus/textures/farming_cake_mix_pumpkin.png b/farming_plus/textures/farming_cake_mix_pumpkin.png
new file mode 100644
index 0000000..171e486
--- /dev/null
+++ b/farming_plus/textures/farming_cake_mix_pumpkin.png
Binary files differ
diff --git a/farming_plus/textures/farming_carrot.png b/farming_plus/textures/farming_carrot.png
new file mode 100644
index 0000000..ae2addb
--- /dev/null
+++ b/farming_plus/textures/farming_carrot.png
Binary files differ
diff --git a/farming_plus/textures/farming_carrot_1.png b/farming_plus/textures/farming_carrot_1.png
new file mode 100644
index 0000000..f1596f5
--- /dev/null
+++ b/farming_plus/textures/farming_carrot_1.png
Binary files differ
diff --git a/farming_plus/textures/farming_carrot_2.png b/farming_plus/textures/farming_carrot_2.png
new file mode 100644
index 0000000..e0a7116
--- /dev/null
+++ b/farming_plus/textures/farming_carrot_2.png
Binary files differ
diff --git a/farming_plus/textures/farming_carrot_3.png b/farming_plus/textures/farming_carrot_3.png
new file mode 100644
index 0000000..7eb2070
--- /dev/null
+++ b/farming_plus/textures/farming_carrot_3.png
Binary files differ
diff --git a/farming_plus/textures/farming_carrot_4.png b/farming_plus/textures/farming_carrot_4.png
new file mode 100644
index 0000000..6eca727
--- /dev/null
+++ b/farming_plus/textures/farming_carrot_4.png
Binary files differ
diff --git a/farming_plus/textures/farming_carrot_seed.png b/farming_plus/textures/farming_carrot_seed.png
new file mode 100644
index 0000000..69bc450
--- /dev/null
+++ b/farming_plus/textures/farming_carrot_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_cocoa.png b/farming_plus/textures/farming_cocoa.png
new file mode 100644
index 0000000..bce3db6
--- /dev/null
+++ b/farming_plus/textures/farming_cocoa.png
Binary files differ
diff --git a/farming_plus/textures/farming_cocoa_bean.png b/farming_plus/textures/farming_cocoa_bean.png
new file mode 100644
index 0000000..4ad6b35
--- /dev/null
+++ b/farming_plus/textures/farming_cocoa_bean.png
Binary files differ
diff --git a/farming_plus/textures/farming_cocoa_sapling.png b/farming_plus/textures/farming_cocoa_sapling.png
new file mode 100644
index 0000000..73c588f
--- /dev/null
+++ b/farming_plus/textures/farming_cocoa_sapling.png
Binary files differ
diff --git a/farming_plus/textures/farming_orange.png b/farming_plus/textures/farming_orange.png
new file mode 100644
index 0000000..4c5e045
--- /dev/null
+++ b/farming_plus/textures/farming_orange.png
Binary files differ
diff --git a/farming_plus/textures/farming_orange_1.png b/farming_plus/textures/farming_orange_1.png
new file mode 100644
index 0000000..5a2aaa2
--- /dev/null
+++ b/farming_plus/textures/farming_orange_1.png
Binary files differ
diff --git a/farming_plus/textures/farming_orange_2.png b/farming_plus/textures/farming_orange_2.png
new file mode 100644
index 0000000..3de4623
--- /dev/null
+++ b/farming_plus/textures/farming_orange_2.png
Binary files differ
diff --git a/farming_plus/textures/farming_orange_3.png b/farming_plus/textures/farming_orange_3.png
new file mode 100644
index 0000000..851cd67
--- /dev/null
+++ b/farming_plus/textures/farming_orange_3.png
Binary files differ
diff --git a/farming_plus/textures/farming_orange_4.png b/farming_plus/textures/farming_orange_4.png
new file mode 100644
index 0000000..accb7b7
--- /dev/null
+++ b/farming_plus/textures/farming_orange_4.png
Binary files differ
diff --git a/farming_plus/textures/farming_orange_seed.png b/farming_plus/textures/farming_orange_seed.png
new file mode 100644
index 0000000..3873bad
--- /dev/null
+++ b/farming_plus/textures/farming_orange_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_potato.png b/farming_plus/textures/farming_potato.png
new file mode 100644
index 0000000..8fa9442
--- /dev/null
+++ b/farming_plus/textures/farming_potato.png
Binary files differ
diff --git a/farming_plus/textures/farming_potato_1.png b/farming_plus/textures/farming_potato_1.png
new file mode 100644
index 0000000..75a3cdf
--- /dev/null
+++ b/farming_plus/textures/farming_potato_1.png
Binary files differ
diff --git a/farming_plus/textures/farming_potato_2.png b/farming_plus/textures/farming_potato_2.png
new file mode 100644
index 0000000..8b7ccd4
--- /dev/null
+++ b/farming_plus/textures/farming_potato_2.png
Binary files differ
diff --git a/farming_plus/textures/farming_potato_3.png b/farming_plus/textures/farming_potato_3.png
new file mode 100644
index 0000000..cc29ef3
--- /dev/null
+++ b/farming_plus/textures/farming_potato_3.png
Binary files differ
diff --git a/farming_plus/textures/farming_potato_seed.png b/farming_plus/textures/farming_potato_seed.png
new file mode 100644
index 0000000..74e440d
--- /dev/null
+++ b/farming_plus/textures/farming_potato_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_big_side.png b/farming_plus/textures/farming_pumpkin_big_side.png
new file mode 100644
index 0000000..2651380
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_big_side.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_big_top.png b/farming_plus/textures/farming_pumpkin_big_top.png
new file mode 100644
index 0000000..581accc
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_big_top.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_big_top_corner.png b/farming_plus/textures/farming_pumpkin_big_top_corner.png
new file mode 100644
index 0000000..ab1de28
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_big_top_corner.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_big_top_side.png b/farming_plus/textures/farming_pumpkin_big_top_side.png
new file mode 100644
index 0000000..e2eb1a7
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_big_top_side.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_face.png b/farming_plus/textures/farming_pumpkin_face.png
new file mode 100644
index 0000000..90c0f8a
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_face.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_face_light.png b/farming_plus/textures/farming_pumpkin_face_light.png
new file mode 100644
index 0000000..cef4866
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_face_light.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_seed.png b/farming_plus/textures/farming_pumpkin_seed.png
new file mode 100644
index 0000000..6933bc3
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_side.png b/farming_plus/textures/farming_pumpkin_side.png
new file mode 100644
index 0000000..3a3f9da
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_side.png
Binary files differ
diff --git a/farming_plus/textures/farming_pumpkin_top.png b/farming_plus/textures/farming_pumpkin_top.png
new file mode 100644
index 0000000..edef2d9
--- /dev/null
+++ b/farming_plus/textures/farming_pumpkin_top.png
Binary files differ
diff --git a/farming_plus/textures/farming_rhubarb.png b/farming_plus/textures/farming_rhubarb.png
new file mode 100644
index 0000000..849f61b
--- /dev/null
+++ b/farming_plus/textures/farming_rhubarb.png
Binary files differ
diff --git a/farming_plus/textures/farming_rhubarb_1.png b/farming_plus/textures/farming_rhubarb_1.png
new file mode 100644
index 0000000..706d8cf
--- /dev/null
+++ b/farming_plus/textures/farming_rhubarb_1.png
Binary files differ
diff --git a/farming_plus/textures/farming_rhubarb_2.png b/farming_plus/textures/farming_rhubarb_2.png
new file mode 100644
index 0000000..2aadf5f
--- /dev/null
+++ b/farming_plus/textures/farming_rhubarb_2.png
Binary files differ
diff --git a/farming_plus/textures/farming_rhubarb_3.png b/farming_plus/textures/farming_rhubarb_3.png
new file mode 100644
index 0000000..833f65b
--- /dev/null
+++ b/farming_plus/textures/farming_rhubarb_3.png
Binary files differ
diff --git a/farming_plus/textures/farming_rhubarb_seed.png b/farming_plus/textures/farming_rhubarb_seed.png
new file mode 100644
index 0000000..c16527d
--- /dev/null
+++ b/farming_plus/textures/farming_rhubarb_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_scarecrow_front.png b/farming_plus/textures/farming_scarecrow_front.png
new file mode 100644
index 0000000..364738f
--- /dev/null
+++ b/farming_plus/textures/farming_scarecrow_front.png
Binary files differ
diff --git a/farming_plus/textures/farming_scarecrow_front_light.png b/farming_plus/textures/farming_scarecrow_front_light.png
new file mode 100644
index 0000000..b4b3cf2
--- /dev/null
+++ b/farming_plus/textures/farming_scarecrow_front_light.png
Binary files differ
diff --git a/farming_plus/textures/farming_scarecrow_side.png b/farming_plus/textures/farming_scarecrow_side.png
new file mode 100644
index 0000000..e22e84b
--- /dev/null
+++ b/farming_plus/textures/farming_scarecrow_side.png
Binary files differ
diff --git a/farming_plus/textures/farming_scarecrow_top.png b/farming_plus/textures/farming_scarecrow_top.png
new file mode 100644
index 0000000..3a4addc
--- /dev/null
+++ b/farming_plus/textures/farming_scarecrow_top.png
Binary files differ
diff --git a/farming_plus/textures/farming_strawberry.png b/farming_plus/textures/farming_strawberry.png
new file mode 100644
index 0000000..0a80f45
--- /dev/null
+++ b/farming_plus/textures/farming_strawberry.png
Binary files differ
diff --git a/farming_plus/textures/farming_strawberry_1.png b/farming_plus/textures/farming_strawberry_1.png
new file mode 100644
index 0000000..ff238f6
--- /dev/null
+++ b/farming_plus/textures/farming_strawberry_1.png
Binary files differ
diff --git a/farming_plus/textures/farming_strawberry_2.png b/farming_plus/textures/farming_strawberry_2.png
new file mode 100644
index 0000000..2912eb5
--- /dev/null
+++ b/farming_plus/textures/farming_strawberry_2.png
Binary files differ
diff --git a/farming_plus/textures/farming_strawberry_3.png b/farming_plus/textures/farming_strawberry_3.png
new file mode 100644
index 0000000..ca77389
--- /dev/null
+++ b/farming_plus/textures/farming_strawberry_3.png
Binary files differ
diff --git a/farming_plus/textures/farming_strawberry_4.png b/farming_plus/textures/farming_strawberry_4.png
new file mode 100644
index 0000000..12c6a49
--- /dev/null
+++ b/farming_plus/textures/farming_strawberry_4.png
Binary files differ
diff --git a/farming_plus/textures/farming_strawberry_seed.png b/farming_plus/textures/farming_strawberry_seed.png
new file mode 100644
index 0000000..08c958d
--- /dev/null
+++ b/farming_plus/textures/farming_strawberry_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_tomato.png b/farming_plus/textures/farming_tomato.png
new file mode 100644
index 0000000..b112d48
--- /dev/null
+++ b/farming_plus/textures/farming_tomato.png
Binary files differ
diff --git a/farming_plus/textures/farming_tomato_1.png b/farming_plus/textures/farming_tomato_1.png
new file mode 100644
index 0000000..2e7c425
--- /dev/null
+++ b/farming_plus/textures/farming_tomato_1.png
Binary files differ
diff --git a/farming_plus/textures/farming_tomato_2.png b/farming_plus/textures/farming_tomato_2.png
new file mode 100644
index 0000000..6f6a451
--- /dev/null
+++ b/farming_plus/textures/farming_tomato_2.png
Binary files differ
diff --git a/farming_plus/textures/farming_tomato_3.png b/farming_plus/textures/farming_tomato_3.png
new file mode 100644
index 0000000..e01b60b
--- /dev/null
+++ b/farming_plus/textures/farming_tomato_3.png
Binary files differ
diff --git a/farming_plus/textures/farming_tomato_4.png b/farming_plus/textures/farming_tomato_4.png
new file mode 100644
index 0000000..e2f5db4
--- /dev/null
+++ b/farming_plus/textures/farming_tomato_4.png
Binary files differ
diff --git a/farming_plus/textures/farming_tomato_seed.png b/farming_plus/textures/farming_tomato_seed.png
new file mode 100644
index 0000000..dbef76e
--- /dev/null
+++ b/farming_plus/textures/farming_tomato_seed.png
Binary files differ
diff --git a/farming_plus/textures/farming_weed.png b/farming_plus/textures/farming_weed.png
new file mode 100644
index 0000000..4667287
--- /dev/null
+++ b/farming_plus/textures/farming_weed.png
Binary files differ
diff --git a/farming_plus/tomatoes.lua b/farming_plus/tomatoes.lua
new file mode 100644
index 0000000..5926dcf
--- /dev/null
+++ b/farming_plus/tomatoes.lua
@@ -0,0 +1,87 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem("farming_plus:tomato_seed", {
+ description = S("Tomato Seeds"),
+ inventory_image = "farming_tomato_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming_plus:tomato_1")
+ end
+})
+
+minetest.register_node("farming_plus:tomato_1", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_tomato_1.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+5/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:tomato_2", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_tomato_2.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+8/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:tomato_3", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ drop = "",
+ tiles = {"farming_tomato_3.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+13/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("farming_plus:tomato", {
+ paramtype = "light",
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_tomato_4.png"},
+ drop = {
+ max_items = 6,
+ items = {
+ { items = {'farming_plus:tomato_seed'} },
+ { items = {'farming_plus:tomato_seed'}, rarity = 2},
+ { items = {'farming_plus:tomato_seed'}, rarity = 5},
+ { items = {'farming_plus:tomato_item'} },
+ { items = {'farming_plus:tomato_item'}, rarity = 2 },
+ { items = {'farming_plus:tomato_item'}, rarity = 5 }
+ }
+ },
+ groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_craftitem("farming_plus:tomato_item", {
+ description = S("Tomato"),
+ inventory_image = "farming_tomato.png",
+ on_use = minetest.item_eat(4),
+})
+
+farming.add_plant("farming_plus:tomato", {"farming_plus:tomato_1", "farming_plus:tomato_2", "farming_plus:tomato_3"}, 50, 20)
diff --git a/farming_plus/weed.lua b/farming_plus/weed.lua
new file mode 100644
index 0000000..b117870
--- /dev/null
+++ b/farming_plus/weed.lua
@@ -0,0 +1,44 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_node(":farming:weed", {
+ description = S("Weed"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ drawtype = "plantlike",
+ tiles = {"farming_weed.png"},
+ inventory_image = "farming_weed.png",
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.5+4/16, 0.5}
+ },
+ },
+ groups = {snappy=3, flammable=2,plant=1},
+ sounds = default.node_sound_leaves_defaults()
+})
+
+minetest.register_abm({
+ nodenames = {"farming:soil_wet", "farming:soil"},
+ interval = 50,
+ chance = 10,
+ action = function(pos, node)
+ if minetest.find_node_near(pos, 4, {"farming:scarecrow", "farming:scarecrow_light"}) ~= nil then
+ return
+ end
+ pos.y = pos.y+1
+ if minetest.get_node(pos).name == "air" then
+ node.name = "farming:weed"
+ minetest.set_node(pos, node)
+ end
+ end
+})
+
+-- ========= FUEL =========
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:weed",
+ burntime = 1
+})
diff --git a/framedglass/depends.txt b/framedglass/depends.txt
new file mode 100644
index 0000000..765575d
--- /dev/null
+++ b/framedglass/depends.txt
@@ -0,0 +1,2 @@
+default
+dye?
diff --git a/framedglass/init.lua b/framedglass/init.lua
new file mode 100644
index 0000000..bf50495
--- /dev/null
+++ b/framedglass/init.lua
@@ -0,0 +1,118 @@
+-- Minetest 0.4.7 mod: framedglass
+
+minetest.register_craft({
+ output = 'framedglass:wooden_framed_glass 4',
+ recipe = {
+ {'default:glass', 'default:glass', 'default:stick'},
+ {'default:glass', 'default:glass', 'default:stick'},
+ {'default:stick', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'framedglass:steel_framed_glass 4',
+ recipe = {
+ {'default:glass', 'default:glass', 'default:steel_ingot'},
+ {'default:glass', 'default:glass', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'framedglass:wooden_framed_obsidian_glass 4',
+ recipe = {
+ {'default:obsidian_glass', 'default:obsidian_glass', 'default:stick'},
+ {'default:obsidian_glass', 'default:obsidian_glass', 'default:stick'},
+ {'default:stick', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'framedglass:steel_framed_obsidian_glass 4',
+ recipe = {
+ {'default:obsidian_glass', 'default:obsidian_glass', 'default:steel_ingot'},
+ {'default:obsidian_glass', 'default:obsidian_glass', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot', ''},
+ }
+})
+
+minetest.register_node("framedglass:wooden_framed_glass", {
+ description = "Wooden-framed Glass",
+ drawtype = "glasslike_framed",
+ tiles = {"framedglass_wooden_frame.png","framedglass_glass_face_streaks.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_node("framedglass:steel_framed_glass", {
+ description = "Steel-framed Glass",
+ drawtype = "glasslike_framed",
+ tiles = {"framedglass_steel_frame.png","framedglass_glass_face_streaks.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_node("framedglass:wooden_framed_obsidian_glass", {
+ description = "Wooden-framed Obsidian Glass",
+ drawtype = "glasslike_framed",
+ tiles = {"framedglass_wooden_frame.png","framedglass_glass_face_clean.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_node("framedglass:steel_framed_obsidian_glass", {
+ description = "Steel-framed Obsidian Glass",
+ drawtype = "glasslike_framed",
+ tiles = {"framedglass_steel_frame.png","framedglass_glass_face_clean.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+function add_coloured_framedglass(name, desc, dye, texture)
+ minetest.register_node( "framedglass:steel_framed_obsidian_glass"..name, {
+ description = "Steel-framed "..desc.." Obsidian Glass",
+ tiles = {"framedglass_steel_frame.png",texture},
+ drawtype = "glasslike_framed",
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ use_texture_alpha = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "framedglass:steel_framed_obsidian_glass"..name,
+ recipe = {
+ "framedglass:steel_framed_glass",
+ "group:basecolor_white",
+ dye
+ }
+ })
+
+end
+
+add_coloured_framedglass ("red","Red","group:basecolor_red","framedglass_redglass.png")
+add_coloured_framedglass ("green","Green","group:basecolor_green","framedglass_greenglass.png")
+add_coloured_framedglass ("blue","Blue","group:basecolor_blue","framedglass_blueglass.png")
+add_coloured_framedglass ("cyan","Cyan","group:basecolor_cyan","framedglass_cyanglass.png")
+add_coloured_framedglass ("darkgreen","Dark Green","group:unicolor_dark_green","framedglass_darkgreenglass.png")
+add_coloured_framedglass ("violet","Violet","group:excolor_violet","framedglass_violetglass.png")
+add_coloured_framedglass ("pink","Pink","group:unicolor_light_red","framedglass_pinkglass.png")
+add_coloured_framedglass ("yellow","Yellow","group:basecolor_yellow","framedglass_yellowglass.png")
+add_coloured_framedglass ("orange","Orange","group:basecolor_orange","framedglass_orangeglass.png")
+add_coloured_framedglass ("brown","Brown","group:unicolor_dark_orange","framedglass_brownglass.png")
+add_coloured_framedglass ("white","White","group:basecolor_white","framedglass_whiteglass.png")
+add_coloured_framedglass ("grey","Grey","group:basecolor_grey","framedglass_greyglass.png")
+add_coloured_framedglass ("darkgrey","Dark Grey","group:excolor_darkgrey","framedglass_darkgreyglass.png")
+add_coloured_framedglass ("black","Black","group:basecolor_black","framedglass_blackglass.png")
+
diff --git a/framedglass/textures/framedglass_blackglass.png b/framedglass/textures/framedglass_blackglass.png
new file mode 100644
index 0000000..4e82027
--- /dev/null
+++ b/framedglass/textures/framedglass_blackglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_blueglass.png b/framedglass/textures/framedglass_blueglass.png
new file mode 100644
index 0000000..2768017
--- /dev/null
+++ b/framedglass/textures/framedglass_blueglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_brownglass.png b/framedglass/textures/framedglass_brownglass.png
new file mode 100644
index 0000000..b61bdbf
--- /dev/null
+++ b/framedglass/textures/framedglass_brownglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_cyanglass.png b/framedglass/textures/framedglass_cyanglass.png
new file mode 100644
index 0000000..31edcc6
--- /dev/null
+++ b/framedglass/textures/framedglass_cyanglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_darkgreenglass.png b/framedglass/textures/framedglass_darkgreenglass.png
new file mode 100644
index 0000000..c90a027
--- /dev/null
+++ b/framedglass/textures/framedglass_darkgreenglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_darkgreyglass.png b/framedglass/textures/framedglass_darkgreyglass.png
new file mode 100644
index 0000000..78c394b
--- /dev/null
+++ b/framedglass/textures/framedglass_darkgreyglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_glass_face_clean.png b/framedglass/textures/framedglass_glass_face_clean.png
new file mode 100644
index 0000000..385d6d2
--- /dev/null
+++ b/framedglass/textures/framedglass_glass_face_clean.png
Binary files differ
diff --git a/framedglass/textures/framedglass_glass_face_streaks.png b/framedglass/textures/framedglass_glass_face_streaks.png
new file mode 100644
index 0000000..eb169d1
--- /dev/null
+++ b/framedglass/textures/framedglass_glass_face_streaks.png
Binary files differ
diff --git a/framedglass/textures/framedglass_greenglass.png b/framedglass/textures/framedglass_greenglass.png
new file mode 100644
index 0000000..0886c74
--- /dev/null
+++ b/framedglass/textures/framedglass_greenglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_greyglass.png b/framedglass/textures/framedglass_greyglass.png
new file mode 100644
index 0000000..bb1927d
--- /dev/null
+++ b/framedglass/textures/framedglass_greyglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_orangeglass.png b/framedglass/textures/framedglass_orangeglass.png
new file mode 100644
index 0000000..4ac3eb7
--- /dev/null
+++ b/framedglass/textures/framedglass_orangeglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_pinkglass.png b/framedglass/textures/framedglass_pinkglass.png
new file mode 100644
index 0000000..68185c7
--- /dev/null
+++ b/framedglass/textures/framedglass_pinkglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_redglass.png b/framedglass/textures/framedglass_redglass.png
new file mode 100644
index 0000000..1d20920
--- /dev/null
+++ b/framedglass/textures/framedglass_redglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_steel_frame.png b/framedglass/textures/framedglass_steel_frame.png
new file mode 100644
index 0000000..383eab7
--- /dev/null
+++ b/framedglass/textures/framedglass_steel_frame.png
Binary files differ
diff --git a/framedglass/textures/framedglass_violetglass.png b/framedglass/textures/framedglass_violetglass.png
new file mode 100644
index 0000000..aec8ce0
--- /dev/null
+++ b/framedglass/textures/framedglass_violetglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_whiteglass.png b/framedglass/textures/framedglass_whiteglass.png
new file mode 100644
index 0000000..0f2a170
--- /dev/null
+++ b/framedglass/textures/framedglass_whiteglass.png
Binary files differ
diff --git a/framedglass/textures/framedglass_wooden_frame.png b/framedglass/textures/framedglass_wooden_frame.png
new file mode 100644
index 0000000..66f2b72
--- /dev/null
+++ b/framedglass/textures/framedglass_wooden_frame.png
Binary files differ
diff --git a/framedglass/textures/framedglass_yellowglass.png b/framedglass/textures/framedglass_yellowglass.png
new file mode 100644
index 0000000..521198c
--- /dev/null
+++ b/framedglass/textures/framedglass_yellowglass.png
Binary files differ
diff --git a/framedglass/textures/stained_glass_lime.png b/framedglass/textures/stained_glass_lime.png
new file mode 100644
index 0000000..782edc9
--- /dev/null
+++ b/framedglass/textures/stained_glass_lime.png
Binary files differ
diff --git a/framedglass/textures/stained_glass_magenta.png b/framedglass/textures/stained_glass_magenta.png
new file mode 100644
index 0000000..43e28b7
--- /dev/null
+++ b/framedglass/textures/stained_glass_magenta.png
Binary files differ
diff --git a/gardening/README.txt b/gardening/README.txt
new file mode 100644
index 0000000..cb42f2c
--- /dev/null
+++ b/gardening/README.txt
@@ -0,0 +1,75 @@
+-=-
+
+Gardening mod
+-
+By: philipbenr
+
+-=-
+
+Before use, realize this; This mod is purely decorative. It has crafting recipes, but no natural spawning abilities. Those may be added later with the removal of crafting.
+
+-=-
+
+License : WTFPL
+
+-=-
+
+Depends : Default, Minetest 0.4.7 or Flowers.
+
+-=-
+
+Crafting recipes
+~~~~~~~~~~~~~~~~~
+Packed Dirt =
+
+ Stone
+ Sand
+ Dirt
+
+in any column
+--------------
+Rosebush =
+
+ Rose
+ Leaves
+ Tree
+
+in any column
+--------------
+Violas =
+
+ Viola
+ Leaves
+ Tree
+
+in any column
+--------------
+Geraniums =
+
+ Geranium
+ Leaves
+ Tree
+
+in any column
+--------------
+Tulips =
+
+ Tulips
+ Leaves
+ Tree
+
+in any column
+--------------
+
+Dandelions =
+
+ _, Yellow Dandelion, White Dandelion
+ _, Leaves, _
+ _, Tree, _
+
+this is the only fixed recipe
+--------------
+
+-=-
+
+Thats all for now.
diff --git a/gardening/init.lua b/gardening/init.lua
new file mode 100644
index 0000000..6e743d2
--- /dev/null
+++ b/gardening/init.lua
@@ -0,0 +1,168 @@
+minetest.register_node("gardening:rosebush", {
+ description = "Rosebush",
+ drawtype = "plantlike",
+ visual_scale = 1.1,
+ inventory_image = "gardening_rosebush.png",
+ wield_image = "gardening_rosebush.png",
+ tiles = {"gardening_rosebush.png"},
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ groups = {snappy=3,flammable=3,attached_node=1},
+-- sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5},
+ },
+})
+
+minetest.register_craft({
+ output = 'gardening:rosebush',
+ recipe = {
+ {'flowers:rose'},
+ {'default:leaves'},
+ {'default:tree'},
+ },
+})
+
+-- geraniums
+
+minetest.register_node("gardening:geranium_shrub", {
+ description = "Geranium cluster",
+ drawtype = "plantlike",
+ visual_scale = 1.1,
+ inventory_image = "gardening_geranium_shrub.png",
+ wield_image = "gardening_geranium_shrub.png",
+ tiles = {"gardening_geranium_shrub.png"},
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ groups = {snappy=3,flammable=3,attached_node=1},
+-- sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5},
+ },
+})
+
+minetest.register_craft({
+ output = 'gardening:geranium_shrub',
+ recipe = {
+ {'flowers:geranium'},
+ {'default:leaves'},
+ {'default:tree'},
+ },
+})
+
+-- viola
+
+minetest.register_node("gardening:violas", {
+ description = "Violas cluster",
+ drawtype = "plantlike",
+ visual_scale = 1.1,
+ inventory_image = "gardening_violas.png",
+ wield_image = "gardening_violas.png",
+ tiles = {"gardening_violas.png"},
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ groups = {snappy=3,flammable=3,attached_node=1},
+-- sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5},
+ },
+})
+
+minetest.register_craft({
+ output = 'gardening:violas',
+ recipe = {
+ {'flowers:viola'},
+ {'default:leaves'},
+ {'default:tree'},
+ },
+})
+
+-- dandelions
+
+minetest.register_node('gardening:dandelions', {
+ description = "Dandelion cluster",
+ drawtype = "plantlike",
+ visual_scale = 1.1,
+ inventory_image = "gardening_dandelions.png",
+ wield_image = "gardening_dandelions.png",
+ tiles = {"gardening_dandelions.png"},
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ groups = {snappy=3,flammable=3,attached_node=1},
+-- sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5},
+ },
+})
+
+minetest.register_craft({
+ output = 'gardening:dandelions',
+ recipe = {
+ {'', 'flowers:dandelion_yellow', 'flowers:dandelion_white'},
+ {'', 'default:leaves', ''},
+ {'', 'default:tree', ''},
+ },
+})
+
+--tulips
+
+minetest.register_node("gardening:tulip_shrub", {
+ description = "Tulip cluster",
+ drawtype = "plantlike",
+ visual_scale = 1.1,
+ inventory_image = "gardening_tulip_shrub.png",
+ wield_image = "gardening_tulip_shrub.png",
+ tiles = {"gardening_tulip_shrub.png"},
+ paramtype = "light",
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ groups = {snappy=3,flammable=3,attached_node=1},
+-- sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5},
+ },
+})
+
+minetest.register_craft({
+ output = 'gardening:tulip_shrub',
+ recipe = {
+ {'flowers:tulip'},
+ {'default:leaves'},
+ {'default:tree'},
+ },
+})
+
+--packed dirt
+
+minetest.register_node("gardening:packed_dirt", {
+ description = "Packed Dirt",
+ tiles = {"gardening_packed_dirt.png"},
+ is_ground_content = true,
+ groups = {crumbly=3},
+-- sounds = default.node_sound_dirt_defaults(),
+})
+
+minetest.register_craft({
+ output = 'gardening:packed_dirt 3',
+ recipe = {
+ {'default:stone'},
+ {'default:sand'},
+ {'default:dirt'},
+ }
+})
+
+
diff --git a/gardening/textures/gardening_dandelions.png b/gardening/textures/gardening_dandelions.png
new file mode 100644
index 0000000..085c6f2
--- /dev/null
+++ b/gardening/textures/gardening_dandelions.png
Binary files differ
diff --git a/gardening/textures/gardening_geranium_shrub.png b/gardening/textures/gardening_geranium_shrub.png
new file mode 100644
index 0000000..102ee68
--- /dev/null
+++ b/gardening/textures/gardening_geranium_shrub.png
Binary files differ
diff --git a/gardening/textures/gardening_packed_dirt.png b/gardening/textures/gardening_packed_dirt.png
new file mode 100644
index 0000000..c763866
--- /dev/null
+++ b/gardening/textures/gardening_packed_dirt.png
Binary files differ
diff --git a/gardening/textures/gardening_rosebush.png b/gardening/textures/gardening_rosebush.png
new file mode 100644
index 0000000..c91fc3c
--- /dev/null
+++ b/gardening/textures/gardening_rosebush.png
Binary files differ
diff --git a/gardening/textures/gardening_tulip_shrub.png b/gardening/textures/gardening_tulip_shrub.png
new file mode 100644
index 0000000..282d2c2
--- /dev/null
+++ b/gardening/textures/gardening_tulip_shrub.png
Binary files differ
diff --git a/gardening/textures/gardening_violas.png b/gardening/textures/gardening_violas.png
new file mode 100644
index 0000000..258b78e
--- /dev/null
+++ b/gardening/textures/gardening_violas.png
Binary files differ
diff --git a/give_initial_stuff/depends.txt b/give_initial_stuff/depends.txt
new file mode 100644
index 0000000..3a7daa1
--- /dev/null
+++ b/give_initial_stuff/depends.txt
@@ -0,0 +1,2 @@
+default
+
diff --git a/give_initial_stuff/init.lua b/give_initial_stuff/init.lua
new file mode 100644
index 0000000..c65ddea
--- /dev/null
+++ b/give_initial_stuff/init.lua
@@ -0,0 +1,12 @@
+minetest.register_on_newplayer(function(player)
+ --print("on_newplayer")
+ if minetest.setting_getbool("give_initial_stuff") then
+ minetest.log("action", "Giving initial stuff to player "..player:get_player_name())
+ player:get_inventory():add_item('main', 'default:pick_steel')
+ player:get_inventory():add_item('main', 'default:torch 99')
+ player:get_inventory():add_item('main', 'default:axe_steel')
+ player:get_inventory():add_item('main', 'default:shovel_steel')
+ player:get_inventory():add_item('main', 'default:cobble 99')
+ end
+end)
+
diff --git a/gloopblocks/LICENSE b/gloopblocks/LICENSE
new file mode 100644
index 0000000..73d9c38
--- /dev/null
+++ b/gloopblocks/LICENSE
@@ -0,0 +1,90 @@
+For the code and textures unique to this mod:
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+ This license is also known as "WTFPL".
+
+----------
+
+For the textures that were in some way derived from Minetest's default imagery:
+
+Creative Commons Legal Code
+
+Attribution-ShareAlike 2.0
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
+ "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
+ "Licensor" means the individual or entity that offers the Work under the terms of this License.
+ "Original Author" means the individual or entity who created the Work.
+ "Work" means the copyrightable work of authorship offered under the terms of this License.
+ "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+ "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+ to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
+ to create and reproduce Derivative Works;
+ to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
+ to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
+
+ For the avoidance of doubt, where the work is a musical composition:
+ Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
+ Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
+ Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested.
+ You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
+ If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+ Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+ If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+ This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at http://creativecommons.org/.
+
diff --git a/gloopblocks/README b/gloopblocks/README
new file mode 100644
index 0000000..72ca095
--- /dev/null
+++ b/gloopblocks/README
@@ -0,0 +1,72 @@
+This mod adds a number of decorative and functional blocks to Minetest,
+including cement, rainbow blocks, "evil" blocks and sticks, and the usual
+collection of tools of various strengths and speeds made from either cement or
+"evil" components. It also supplies a few useful functions - see below.
+
+Crafting
+
+(Unless explicitly mentioned, ingredients can go anywhere in the crafting grid
+in these recipes).
+
+* Rainbow Blocks can be crafted by putting one each of red, orange, yellow,
+ green, blue, and violet dyes plus one stone and one Mese Crystal into the
+ crafting grid. Yields 1, works with Unified Dyes as well as the game's
+ default dyes.
+
+* Three of those can be crafted to form one pop tart cat rainbow, or nine can
+ be crafted together to form one pop tart cat itself.
+
+* Wet cement is crafted from a bucket of water and a block of gravel. This
+ can be cooked into dried cement, which can be crafted into tools or back
+ into gravel.
+
+* An "evil" stick can be crafted from one lump of coal, one regular stick, and
+ one lump of Kalite from the Gloop Ores mod.
+
+* Four of those can be crafted into an "evil" block, which can also be crafted
+ back to "evil" sticks. These blocks emit a small amount of light.
+
+* Cement tools are crafted in the usual manner, using cement blocks for the
+ tool heads instead of the usual steel, cobble, etc.
+
+* "Evil" tools can be crafted using the same standard recipes as for other
+ tools, substitution "evil" sticks for the handles and "evil" blocks for the
+ tool heads.
+
+* Regular sticks can be crafted back into wood blocks by placing four of them
+ in a square.
+
+* Cement and "evil" blocks can also be crafted into various stairs and slabs,
+ following the same recipes as with other stairs and slabs. Evil stairs and
+ slabs emit a small amount of light.
+
+* Pavement (as for roads or parking lots) can be crafted by placing wet cement
+ ("W") and basalt ("B") into the crafting grid in a 3x3 checkerboard (yields
+ 5):
+ W B W
+ B W B
+ W B W
+
+ (you can also swap wet cement and basalt, using five and four portions,
+ respectively)
+
+Other useful stuff:
+-------------------
+
+* Cobblestone turns to mossy cobblestone in the presence of water (either
+ flowing or not).
+
+* When water and lava come into contact with one another, they will form one
+ of three materials: Flowing lava coming into contact with standing water
+ forms basalt, both flowing into one another form pumice, while standing lava
+ forms obsidian when in contact with flowing or standing water. Note that if
+ you're using this along with the standard minetest_game repository dated
+ March 9 or later, this function no longer works, because the game provides a
+ similar, less capable function.
+
+Notes:
+------
+
+The cobblestone and mossy cobblestone road bed textures were derived from:
+http://opengameart.org/content/rpg-tiles-cobble-stone-paths-town-objects
+...and the default grass texture that comes with minetest_game.
diff --git a/gloopblocks/crafts.lua b/gloopblocks/crafts.lua
new file mode 100644
index 0000000..75aef09
--- /dev/null
+++ b/gloopblocks/crafts.lua
@@ -0,0 +1,367 @@
+-- Various crafts
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "gloopblocks:rainbow_block",
+ recipe = {
+ "group:basecolor_red",
+ "group:excolor_orange",
+ "group:basecolor_yellow",
+ "group:basecolor_green",
+ "group:basecolor_blue",
+ "group:excolor_violet",
+ "default:stone",
+ "default:mese_crystal",
+ },
+})
+
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:nyancat_rainbow",
+ recipe = {
+ "gloopblocks:rainbow_block",
+ "default:diamondblock",
+ "default:steelblock",
+ "default:copperblock",
+ "default:bronzeblock",
+ "default:goldblock",
+ "default:mese",
+ "moreores:silver_block",
+ "moreores:mithril_block"
+ }
+})
+
+minetest.register_craft({
+ output = "default:nyancat",
+ recipe = {
+ {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"},
+ {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"},
+ {"gloopblocks:rainbow_block", "gloopblocks:rainbow_block", "gloopblocks:rainbow_block"},
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:wet_cement",
+ recipe = {
+ "bucket:bucket_water",
+ "default:gravel",
+ },
+ replacements = {{'bucket:bucket_water', 'bucket:bucket_empty'},},
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "gloopblocks:cement",
+ recipe = "gloopblocks:wet_cement",
+ cooktime = 8
+})
+
+minetest.register_craft({
+ output = "default:gravel",
+ recipe = {
+ {"gloopblocks:cement"},
+ },
+})
+
+
+if minetest.get_modpath("glooptest") then
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:evil_stick",
+ recipe = {
+ "glooptest:kalite_lump",
+ "default:gold_ingot",
+ "default:coal_lump",
+ "group:stick"
+ }
+ })
+
+elseif minetest.get_modpath("gloopores") then
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:evil_stick",
+ recipe = {
+ "gloopores:kalite_lump",
+ "default:gold_ingot",
+ "default:coal_lump",
+ "group:stick"
+ }
+ })
+else
+ minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:evil_stick",
+ recipe = {
+ "default:gold_ingot",
+ "default:gold_ingot",
+ "default:coal_lump",
+ "group:stick"
+ }
+ })
+end
+
+minetest.register_craft({
+ output = "gloopblocks:evil_block",
+ recipe = {
+ {"gloopblocks:evil_stick", "gloopblocks:evil_stick"},
+ {"gloopblocks:evil_stick", "gloopblocks:evil_stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:scaffolding 12",
+ recipe = {
+ {"group:stick", "group:wood", "group:stick"},
+ {"", "group:stick", ""},
+ {"group:stick", "group:wood", "group:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:evil_stick 4",
+ recipe = {
+ {"gloopblocks:evil_block"}
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:pick_cement",
+ recipe = {
+ {"gloopblocks:cement", "gloopblocks:cement", "gloopblocks:cement"},
+ {"", "group:stick", ""},
+ {"", "group:stick", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:axe_cement",
+ recipe = {
+ {"gloopblocks:cement", "gloopblocks:cement"},
+ {"gloopblocks:cement", "group:stick"},
+ {"", "group:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:axe_cement",
+ recipe = {
+ {"gloopblocks:cement", "gloopblocks:cement"},
+ {"group:stick", "gloopblocks:cement"},
+ {"group:stick", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:shovel_cement",
+ recipe = {
+ {"gloopblocks:cement"},
+ {"group:stick"},
+ {"group:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:sword_cement",
+ recipe = {
+ {"gloopblocks:cement"},
+ {"gloopblocks:cement"},
+ {"group:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:pick_evil",
+ recipe = {
+ {"gloopblocks:evil_block", "gloopblocks:evil_block", "gloopblocks:evil_block"},
+ {"", "gloopblocks:evil_stick", ""},
+ {"", "gloopblocks:evil_stick", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:axe_evil",
+ recipe = {
+ {"gloopblocks:evil_block", "gloopblocks:evil_block"},
+ {"gloopblocks:evil_block", "gloopblocks:evil_stick"},
+ {"", "gloopblocks:evil_stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:axe_evil",
+ recipe = {
+ {"gloopblocks:evil_block", "gloopblocks:evil_block"},
+ {"gloopblocks:evil_stick", "gloopblocks:evil_block"},
+ {"gloopblocks:evil_stick", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:shovel_evil",
+ recipe = {
+ {"gloopblocks:evil_block"},
+ {"gloopblocks:evil_stick"},
+ {"gloopblocks:evil_stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:sword_evil",
+ recipe = {
+ {"gloopblocks:evil_block"},
+ {"gloopblocks:evil_block"},
+ {"gloopblocks:evil_stick"},
+ }
+})
+
+if minetest.get_modpath("building_blocks") then
+ minetest.register_craft({
+ output = "default:wood 4",
+ recipe = {
+ {"building_blocks:sticks", "building_blocks:sticks"},
+ {"building_blocks:sticks", "building_blocks:sticks"},
+ }
+ })
+else
+ minetest.register_craft({
+ output = "default:wood",
+ recipe = {
+ {"default:stick", "default:stick"},
+ {"default:stick", "default:stick"},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = "gloopblocks:pavement 5",
+ recipe = {
+ {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"},
+ {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"},
+ {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:pavement 5",
+ recipe = {
+ {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"},
+ {"gloopblocks:basalt", "gloopblocks:wet_cement","gloopblocks:basalt"},
+ {"gloopblocks:wet_cement","gloopblocks:basalt", "gloopblocks:wet_cement"},
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:oerkki_block 2",
+ recipe = {
+ {"default:iron_lump", "default:coal_lump", "default:iron_lump"},
+ {"default:coal_lump", "default:bookshelf", "default:coal_lump"},
+ {"default:iron_lump", "default:coal_lump", "default:iron_lump"},
+ },
+ replacements = { { "default:bookshelf", "default:book 3" } }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:oerkki_block 2",
+ recipe = {
+ {"default:coal_lump", "default:iron_lump", "default:coal_lump"},
+ {"default:iron_lump", "default:bookshelf", "default:iron_lump"},
+ {"default:coal_lump", "default:iron_lump", "default:coal_lump"},
+ },
+ replacements = { { "default:bookshelf", "default:book 3" } }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:stone_brick_mossy 2",
+ recipe = {
+ "default:stonebrick",
+ "default:stonebrick",
+ "default:junglegrass",
+ "default:junglegrass"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:stone_brick_mossy 2",
+ recipe = {
+ "default:stonebrick",
+ "default:stonebrick",
+ "default:grass_1",
+ "default:grass_1",
+ "default:grass_1",
+ "default:grass_1"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:cobble_road 5",
+ recipe = {
+ "default:cobble",
+ "default:cobble",
+ "default:cobble",
+ "default:cobble",
+ "gloopblocks:pavement"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:cobble_road_mossy 2",
+ recipe = {
+ "gloopblocks:cobble_road",
+ "gloopblocks:cobble_road",
+ "default:junglegrass",
+ "default:junglegrass"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:cobble_road_mossy 2",
+ recipe = {
+ "gloopblocks:cobble_road",
+ "gloopblocks:cobble_road",
+ "default:grass_1",
+ "default:grass_1",
+ "default:grass_1",
+ "default:grass_1"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:stone_mossy 2",
+ recipe = {
+ "default:stone",
+ "default:stone",
+ "default:junglegrass",
+ "default:junglegrass"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "gloopblocks:stone_mossy 2",
+ recipe = {
+ "default:stone",
+ "default:stone",
+ "default:grass_1",
+ "default:grass_1",
+ "default:grass_1",
+ "default:grass_1"
+ }
+})
+
+minetest.register_craft({
+ output = "gloopblocks:fence_steel 1",
+ recipe = {
+ {"xpanes:bar", "xpanes:bar", "xpanes:bar"},
+ {"xpanes:bar", "xpanes:bar", "xpanes:bar"},
+ },
+})
diff --git a/gloopblocks/depends.txt b/gloopblocks/depends.txt
new file mode 100644
index 0000000..23fe580
--- /dev/null
+++ b/gloopblocks/depends.txt
@@ -0,0 +1,10 @@
+default
+moreblocks?
+stairs?
+glooptest?
+gloopores?
+building_blocks?
+intllib?
+wool?
+xdecor?
+caverealms?
diff --git a/gloopblocks/init.lua b/gloopblocks/init.lua
new file mode 100644
index 0000000..e806118
--- /dev/null
+++ b/gloopblocks/init.lua
@@ -0,0 +1,794 @@
+--[[
+GloopBlocks
+Originally written by GloopMaster
+Licensed under WTFPL.
+
+Maintained by VanessaE.
+
+--]]
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+
+-- misc stuff
+
+local colorlist = {
+ {"white", "White"},
+ {"grey", "Grey"},
+ {"black", "Black"},
+ {"red", "Red"},
+ {"yellow", "Yellow"},
+ {"green", "Green"},
+ {"cyan", "Cyan"},
+ {"blue", "Blue"},
+ {"magenta", "Magenta"},
+ {"orange", "Orange"},
+ {"violet", "Violet"},
+ {"brown", "Brown"},
+ {"pink", "Pink"},
+ {"dark_grey", "Dark Grey"},
+ {"dark_green", "Dark Green"},
+}
+
+-- Nodes
+
+minetest.register_node("gloopblocks:rainbow_block", {
+ description = S("Rainbow Block"),
+ tiles = {"gloopblocks_rainbow_block.png"},
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_node("gloopblocks:cement", {
+ description = S("Cement"),
+ tiles = {"gloopblocks_cement.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("gloopblocks:evil_block", {
+ description = S("Evil Block"),
+ tiles = {"gloopblocks_evil_block.png"},
+ light_source = 5,
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+
+minetest.register_node("gloopblocks:basalt", {
+ description = S("Basalt"),
+ tiles = {"gloopblocks_basalt.png"},
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("gloopblocks:pumice", {
+ description = S("Pumice"),
+ tiles = {"gloopblocks_pumice.png"},
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+
+minetest.register_node("gloopblocks:pavement", {
+ description = S("Pavement"),
+ tiles = {"gloopblocks_pavement.png"},
+ groups = {cracky=3, oddly_breakable_by_hand=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("gloopblocks:oerkki_block", {
+ drawtype = "nodebox",
+ description = S("Oerkki Block"),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {
+ "gloopblocks_oerkkiblock_tb.png",
+ "gloopblocks_oerkkiblock_tb.png",
+ "gloopblocks_oerkkiblock_sides.png",
+ "gloopblocks_oerkkiblock_sides.png",
+ "gloopblocks_oerkkiblock_sides.png",
+ "gloopblocks_oerkkiblock_front.png"
+ },
+ groups = {cracky=3, oddly_breakable_by_hand=3},
+ sounds = default.node_sound_stone_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.1875, 0.5, 0.5, 0.1875}, -- NodeBox1
+ {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, -- NodeBox2
+ {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, -- NodeBox3
+ {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox4
+ {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, -- NodeBox5
+ {-0.5, -0.0625, -0.5, 0.5, 0.0625, 0.5}, -- NodeBox6
+ }
+ }
+})
+
+minetest.register_node("gloopblocks:stone_brick_mossy", {
+ description = S("Mossy Stone Brick"),
+ tiles = {"gloopblocks_stone_brick_mossy.png"},
+ groups = {cracky=3, stone=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("gloopblocks:stone_mossy", {
+ description = S("Mossy Stone"),
+ tiles = {"gloopblocks_stone_mossy.png"},
+ groups = {cracky=3, stone=1},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "default:mossycobble"
+})
+
+minetest.register_node("gloopblocks:cobble_road", {
+ description = S("Cobblestone Road Bed"),
+ tiles = {"gloopblocks_cobble_road.png"},
+ groups = {cracky=3, stone=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("gloopblocks:cobble_road_mossy", {
+ description = S("Mossy Cobblestone Road Bed"),
+ tiles = {"gloopblocks_cobble_road_mossy.png"},
+ groups = {cracky=3, stone=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("gloopblocks:scaffolding", {
+ description = S("Wooden Scaffold"),
+ drawtype = "allfaces",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"gloopblocks_scaffold.png"},
+ groups = {choppy=3, oddly_breakable_by_hand=3},
+ sounds = default.node_sound_wood_defaults(),
+ on_rightclick = function(pos, node, clicker, itemstack)
+ if itemstack and itemstack:get_name() == node.name then
+ for i = 1,19 do
+ if minetest.get_node({x=pos.x,y=pos.y-i,z=pos.z}).name == "gloopblocks:scaffolding" and scafffound ~= 0 and scafffound ~= 1 then
+ local scafffound = 1
+ return itemstack
+ else
+ break
+ end
+ end
+ for i = 1,19 do
+ if minetest.get_node({x=pos.x,y=pos.y+i,z=pos.z}).name == "air" and scaffworked ~= 1 and scaffworked ~= 0 then
+ minetest.set_node({x=pos.x,y=pos.y+i,z=pos.z}, {name="gloopblocks:scaffolding"})
+ local scaffworked = 1
+ return ItemStack(tostring(itemstack:get_name().." "..tostring(itemstack:get_count()-1)))
+ elseif minetest.get_node({x=pos.x,y=pos.y+i,z=pos.z}).name == "gloopblocks:scaffolding" then
+ else
+ local scaffworked = 0
+ end
+ end
+ if scaffworked == 1 then
+ return ItemStack(tostring(itemstack:get_name().." "..tostring(itemstack:get_count()-1)))
+ else
+ return itemstack
+ end
+ else return itemstack end
+ end,
+})
+
+
+minetest.register_alias("moreblocks:oerkkiblock", "gloopblocks:oerkki_block")
+minetest.register_alias("gloopblocks:obsidian", "default:obsidian")
+
+-- Stairs/slabs defs, conversion of normal -> mossy items
+
+if minetest.setting_getbool("gloopblocks_mossy_conversion") ~= false then
+
+ function gloopblocks_register_mossy_conversion(mossyobjects)
+ for i in ipairs(mossyobjects) do
+ minetest.register_abm({
+ nodenames = { mossyobjects[i][1] },
+ neighbors = {"default:water_source", "default:water_flowing"},
+ interval = 120,
+ chance = 50,
+ action = function(pos, node)
+ if minetest.find_node_near(pos, 2, "air") then
+ local fdir = node.param2
+ minetest.add_node(pos, {name = mossyobjects[i][2], param2 = fdir})
+ end
+ end,
+ })
+ end
+ end
+end
+--[[
+if minetest.get_modpath("xdecor") then
+ xdecor.worktable_nodes.gloopblocks = {
+ "oerkki_block", "stone_brick_mossy", "stone_mossy", "cobble_road",
+ "cobble_road_mossy", "cement", "pavement","rainbow_block",
+ "evil_block", "basalt", "pumice"
+ }
+
+ if minetest.setting_getbool("gloopblocks_mossy_conversion") then
+ local subnames = {
+ "", "_nanoslab", "_micropanel", "_microslab", "_thinstair", "_cube",
+ "_panel", "_slab", "_doublepanel", "_halfstair", "_outerstair",
+ "_stair", "_innerstair"
+ }
+ for _, subname in ipairs(subnames) do
+ gloopblocks_register_mossy_conversion({
+ -- Cobble --> Mossy Cobble
+ { "default:cobble"..subname, "default:mossycobble"..subname },
+ -- Cobble Road --> Mossy Cobble Road
+ { "gloopblocks:cobble_road"..subname, "gloopblocks:cobble_road_mossy"..subname },
+ -- Stone Brick --> Stone Brick Mossy
+ { "default:stonebrick"..subname, "gloopblocks:stone_brick_mossy"..subname},
+ -- Stone --> Mossy Stone
+ { "default:stone"..subname, "gloopblocks:stone_mossy"..subname}
+ })
+ end
+ end
+end
+--]]
+if minetest.get_modpath("moreblocks") then
+
+ stairsplus:register_all("gloopblocks", "oerkki_block", "gloopblocks:oerkki_block", {
+ description = "Oerkki Block",
+ tiles = {
+ "gloopblocks_oerkkiblock_tb.png",
+ "gloopblocks_oerkkiblock_tb.png",
+ "gloopblocks_oerkkiblock_sides.png",
+ "gloopblocks_oerkkiblock_sides.png",
+ "gloopblocks_oerkkiblock_sides.png",
+ "gloopblocks_oerkkiblock_front.png"
+ },
+ groups = {cracky=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "stone_brick_mossy", "gloopblocks:stone_brick_mossy", {
+ description = "Mossy Stone Brick",
+ tiles = {"gloopblocks_stone_brick_mossy.png"},
+ groups = {cracky=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "stone_mossy", "gloopblocks:stone_mossy", {
+ description = "Mossy Stone",
+ tiles = {"gloopblocks_stone_mossy.png"},
+ groups = {cracky=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "cobble_road", "gloopblocks:cobble_road", {
+ description = "Cobblestone Roadbed",
+ tiles = {"gloopblocks_cobble_road.png"},
+ groups = {cracky=3, stone=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "cobble_road_mossy", "gloopblocks:cobble_road_mossy", {
+ description = "Mossy Cobblestone Roadbed",
+ tiles = {"gloopblocks_cobble_road_mossy.png"},
+ groups = {cracky=3, stone=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "cement", "gloopblocks:cement", {
+ description = "Cement",
+ tiles = {"gloopblocks_cement.png"},
+ groups = {cracky=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "pavement", "gloopblocks:pavement", {
+ description = "Pavement",
+ tiles = {"gloopblocks_pavement.png"},
+ groups = {cracky=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "rainbow_block", "gloopblocks:rainbow_block", {
+ description = "Rainbow Block",
+ tiles = {"gloopblocks_rainbow_block.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "evil_block", "gloopblocks:evil_block", {
+ description = "Evil Block",
+ tiles = {"gloopblocks_evil_block.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ light_source = 5,
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "basalt", "gloopblocks:basalt", {
+ description = "Basalt",
+ tiles = {"gloopblocks_basalt.png"},
+ groups = {cracky=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("gloopblocks", "pumice", "gloopblocks:pumice", {
+ description = "Pumice",
+ tiles = {"gloopblocks_pumice.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ sunlight_propagates = true,
+ })
+
+ for i in ipairs(colorlist) do
+ local color = colorlist[i][1]
+ local colordesc = colorlist[i][2]
+
+ stairsplus:register_all("wool", color, "wool:"..color, {
+ description = colordesc.." Wool",
+ tiles = {"wool_"..color..".png"},
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_defaults(),
+ sunlight_propagates = true,
+ })
+ end
+
+ if minetest.get_modpath("caverealms") then
+ stairsplus:register_all("caverealms", "glow_crystal", "caverealms:glow_crystal", {
+ description = "Glow Crystal",
+ tiles = {"caverealms_glow_crystal.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 12,
+ use_texture_alpha = true,
+ paramtype="light",
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("caverealms", "glow_emerald", "caverealms:glow_emerald", {
+ description = "Glow Emerald",
+ tiles = {"caverealms_glow_emerald.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 12,
+ use_texture_alpha = true,
+ paramtype="light",
+ sunlight_propagates = true,
+ })
+
+ stairsplus:register_all("caverealms", "glow_mese", "caverealms:glow_mese", {
+ description = "Glow Mese",
+ tiles = {"caverealms_glow_mese.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ light_source = 12,
+ use_texture_alpha = true,
+ paramtype="light",
+ sunlight_propagates = true,
+ })
+ end
+
+ -- ABMs for mossy objects
+
+ if minetest.setting_getbool("gloopblocks_mossy_conversion") ~= false then
+
+ gloopblocks_register_mossy_conversion({
+ { "default:cobble", "default:mossycobble" },
+ { "default:stair_cobble", "default:stair_mossycobble" },
+ { "default:slab_cobble", "default:slab_mossycobble" },
+ { "moreblocks:stair_cobble", "moreblocks:stair_mossycobble" },
+ { "moreblocks:stair_cobble_inner", "moreblocks:stair_mossycobble_inner" },
+ { "moreblocks:stair_cobble_outer", "moreblocks:stair_mossycobble_outer" },
+ { "moreblocks:stair_cobble_half", "moreblocks:stair_mossycobble_half" },
+ { "moreblocks:slab_cobble_quarter", "moreblocks:slab_mossycobble_quarter" },
+ { "moreblocks:slab_cobble", "moreblocks:slab_mossycobble" },
+ { "moreblocks:slab_cobble_three_quarter", "moreblocks:slab_mossycobble_three_quarter" },
+ { "moreblocks:panel_cobble", "moreblocks:panel_mossycobble" },
+ { "moreblocks:micro_cobble", "moreblocks:micro_mossycobble" },
+ { "moreblocks:stair_cobble_alt", "moreblocks:stair_mossycobble_alt" },
+
+ { "gloopblocks:cobble_road", "gloopblocks:cobble_road_mossy" },
+ { "gloopblocks:stair_cobble_road", "gloopblocks:stair_cobble_road_mossy" },
+ { "gloopblocks:slab_cobble_road", "gloopblocks:slab_cobble_road_mossy" },
+ { "gloopblocks:stair_cobble_road", "gloopblocks:stair_cobble_road_mossy" },
+ { "gloopblocks:stair_cobble_road_inner", "gloopblocks:stair_cobble_road_mossy_inner" },
+ { "gloopblocks:stair_cobble_road_outer", "gloopblocks:stair_cobble_road_mossy_outer" },
+ { "gloopblocks:stair_cobble_road_half", "gloopblocks:stair_cobble_road_mossy_half" },
+ { "gloopblocks:slab_cobble_road_quarter", "gloopblocks:slab_cobble_road_mossy_quarter" },
+ { "gloopblocks:slab_cobble_road", "gloopblocks:slab_cobble_road_mossy" },
+ { "gloopblocks:slab_cobble_road_three_quarter", "gloopblocks:slab_cobble_road_mossy_three_quarter" },
+ { "gloopblocks:panel_cobble_road", "gloopblocks:panel_cobble_road_mossy" },
+ { "gloopblocks:micro_cobble_road", "gloopblocks:micro_cobble_road_mossy" },
+ { "gloopblocks:stair_cobble_road_alt", "gloopblocks:stair_cobble_road_mossy_alt" },
+
+ { "default:stonebrick", "gloopblocks:stone_brick_mossy" },
+ { "default:stair_stonebrick", "gloopblocks:stair_stone_brick_mossy" },
+ { "default:slab_stonebrick", "gloopblocks:slab_stone_brick_mossy" },
+ { "moreblocks:stair_stonebrick", "gloopblocks:stair_stone_brick_mossy" },
+ { "moreblocks:stair_stonebrick_inner", "gloopblocks:stair_stone_brick_mossy_inner" },
+ { "moreblocks:stair_stonebrick_outer", "gloopblocks:stair_stone_brick_mossy_outer" },
+ { "moreblocks:stair_stonebrick_half", "gloopblocks:stair_stone_brick_mossy_half" },
+ { "moreblocks:slab_stonebrick_quarter", "gloopblocks:slab_stone_brick_mossy_quarter" },
+ { "moreblocks:slab_stonebrick", "gloopblocks:slab_stone_brick_mossy" },
+ { "moreblocks:slab_stonebrick_three_quarter", "gloopblocks:slab_stone_brick_mossy_three_quarter" },
+ { "moreblocks:panel_stonebrick", "gloopblocks:panel_stone_brick_mossy" },
+ { "moreblocks:micro_stonebrick", "gloopblocks:micro_stone_brick_mossy" },
+ { "moreblocks:stair_stonebrick_alt", "gloopblocks:stair_stone_brick_mossy_alt" },
+
+ { "default:stone", "gloopblocks:stone_mossy" },
+ { "default:stair_stone", "gloopblocks:stair_stone_mossy" },
+ { "default:slab_stone", "gloopblocks:slab_stone_mossy" },
+ { "moreblocks:stair_stone", "gloopblocks:stair_stone_mossy" },
+ { "moreblocks:stair_stone_inner", "gloopblocks:stair_stone_mossy_inner" },
+ { "moreblocks:stair_stone_outer", "gloopblocks:stair_stone_mossy_outer" },
+ { "moreblocks:stair_stone_half", "gloopblocks:stair_stone_mossy_half" },
+
+ { "moreblocks:slab_stone_quarter", "gloopblocks:slab_stone_mossy_quarter" },
+ { "moreblocks:slab_stone", "gloopblocks:slab_stone_mossy" },
+ { "moreblocks:slab_stone_three_quarter", "gloopblocks:slab_stone_mossy_three_quarter" },
+ { "moreblocks:panel_stone", "gloopblocks:panel_stone_mossy" },
+ { "moreblocks:micro_stone", "gloopblocks:micro_stone_mossy" },
+ { "moreblocks:stair_stone_alt", "gloopblocks:stair_stone_mossy_alt" },
+ })
+ end
+
+elseif minetest.get_modpath("stairs") then
+
+ --stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
+
+ -- stairs:xxxx_stone_mossy ; xxxx = stair or slab
+ stairs.register_stair_and_slab("stone_mossy", "gloopblocks:stone_mossy",
+ {cracky=3},
+ {"gloopblocks_stone_mossy.png"},
+ S("Mossy Stone Stair"),
+ S("Mossy Stone Slab"),
+ default.node_sound_stone_defaults())
+
+ -- stairs:xxxx_mossycobble
+ stairs.register_stair_and_slab("mossycobble", "default:mossycobble",
+ {cracky=3},
+ {"default_mossycobble.png"},
+ S("Mossy Cobble Stair"),
+ S("Mossy Cobble Slab"),
+ default.node_sound_stone_defaults())
+
+ -- stairs:xxxx_stone_brick_mossy
+ stairs.register_stair_and_slab("stone_brick_mossy", "gloopblocks:stone_brick_mossy",
+ {cracky=3},
+ {"gloopblocks_stone_brick_mossy.png"},
+ S("Mossy Stone Brick Stair"),
+ S("Mossy Stone Brick Slab"),
+ default.node_sound_stone_defaults())
+
+ -- stairs:xxxx_cobble_road
+ stairs.register_stair_and_slab("cobble_road", "gloopblocks:cobble_road",
+ {cracky=3},
+ {"gloopblocks_cobble_road.png"},
+ S("Cobble Roadbed Stair"),
+ S("Cobble Roadbed Slab"),
+ default.node_sound_stone_defaults())
+
+ -- stairs:xxxx_cobble_road_mossy
+ stairs.register_stair_and_slab("cobble_road_mossy", "gloopblocks:cobble_road_mossy",
+ {cracky=3},
+ {"gloopblocks_cobble_road_mossy.png"},
+ S("Mossy Cobble Roadbed Stair"),
+ S("Mossy Cobble Roadbed Slab"),
+ default.node_sound_stone_defaults())
+
+ -- stairs:xxxx_cement
+ stairs.register_stair_and_slab("cement", "gloopblocks:cement",
+ {cracky=2},
+ {"gloopblocks_cement.png"},
+ S("Cement Stair"),
+ S("Cement Slab"),
+ default.node_sound_stone_defaults())
+
+ -- stairs:xxxx_pavement
+ stairs.register_stair_and_slab("pavement", "gloopblocks:pavement",
+ {cracky=3, oddly_breakable_by_hand=3},
+ {"gloopblocks_pavement.png"},
+ S("Pavement Stair"),
+ S("Pavement Slab"),
+ default.node_sound_stone_defaults())
+
+ stairs.register_stair_and_slab("basalt", "gloopblocks:basalt",
+ {cracky=2},
+ {"gloopblocks_basalt.png"},
+ "Basalt Stair",
+ "Basalt Slab",
+ default.node_sound_stone_defaults())
+
+ stairs.register_stair_and_slab("pumice", "gloopblocks:pumice",
+ {cracky=3},
+ {"gloopblocks_pumice.png"},
+ "Pumice Stair",
+ "Pumice Slab",
+ default.node_sound_stone_defaults())
+
+ stairs.register_stair_and_slab("rainbow_block", "gloopblocks:rainbow_block",
+ {cracky=3},
+ {"gloopblocks_rainbow_block.png"},
+ "Rainbow Block Stair",
+ "Rainbow Block Slab",
+ default.node_sound_defaults())
+
+ for i in ipairs(colorlist) do
+ local color = colorlist[i][1]
+ local colordesc = colorlist[i][2]
+
+ stairs.register_stair_and_slab("wool_"..color, "wool:"..color,
+ {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1},
+ {"wool_"..color..".png"},
+ "Wool Stair ("..colordesc..")",
+ "Wool Slab ("..colordesc..")",
+ default.node_sound_defaults())
+ end
+
+ if minetest.setting_getbool("gloopblocks_mossy_conversion") ~= false then
+
+ gloopblocks_register_mossy_conversion({
+ { "default:cobble", "default:mossycobble" },
+ { "stairs:stair_cobble", "stairs:stair_mossycobble" },
+ { "stairs:slab_cobble", "stairs:slab_mossycobble" },
+ { "gloopblocks:cobble_road", "gloopblocks:cobble_road_mossy" },
+ { "stairs:stair_cobble_road", "stairs:stair_cobble_road_mossy" },
+ { "stairs:slab_cobble_road", "stairs:slab_cobble_road_mossy" },
+ { "default:stonebrick", "gloopblocks:stone_brick_mossy" },
+ { "stairs:stair_stonebrick", "stairs:stair_stone_brick_mossy" },
+ { "stairs:slab_stonebrick", "stairs:slab_stone_brick_mossy" },
+ { "default:stone", "gloopblocks:stone_mossy" },
+ { "stairs:stair_stone", "stairs:stair_stone_mossy" },
+ { "stairs:slab_stone", "stairs:slab_stone_mossy" },
+ })
+ end
+
+ minetest.register_alias("default:stair_mossycobble", "stairs:stair_mossycobble")
+ minetest.register_alias("default:slab_mossycobble", "stairs:slab_mossycobble")
+ minetest.register_alias("gloopblocks:stair_cobble_road", "stairs:stair_cobble_road")
+ minetest.register_alias("gloopblocks:slab_cobble_road", "stairs:slab_cobble_road")
+ minetest.register_alias("gloopblocks:stair_cobble_road_mossy", "stairs:stair_cobble_road_mossy")
+ minetest.register_alias("gloopblocks:slab_cobble_road_mossy", "stairs:slab_cobble_road_mossy")
+ minetest.register_alias("gloopblocks:stair_stone_brick_mossy", "stairs:stair_stone_brick_mossy")
+ minetest.register_alias("gloopblocks:slab_stone_brick_mossy", "stairs:slab_stone_brick_mossy")
+ minetest.register_alias("gloopblocks:stair_stone_mossy", "stairs:stair_stone_mossy")
+ minetest.register_alias("gloopblocks:slab_stone_mossy", "stairs:slab_stone_mossy")
+ minetest.register_alias("gloopblocks:stair_cement", "stairs:stair_cement")
+ minetest.register_alias("gloopblocks:slab_cement", "stairs:slab_cement")
+ minetest.register_alias("gloopblocks:stair_pavement", "stairs:stair_pavement")
+ minetest.register_alias("gloopblocks:slab_pavement", "stairs:slab_pavement")
+ minetest.register_alias("gloopblocks:stair_pumice", "stairs:stair_pumice")
+ minetest.register_alias("gloopblocks:slab_pumice", "stairs:slab_pumice")
+ minetest.register_alias("gloopblocks:stair_basalt", "stairs:stair_basalt")
+ minetest.register_alias("gloopblocks:slab_basalt", "stairs:slab_basalt")
+ minetest.register_alias("gloopblocks:stair_rainbow_block", "stairs:stair_rainbow_block")
+ minetest.register_alias("gloopblocks:slab_rainbow_block", "stairs:slab_rainbow_block")
+end
+
+-- Tools
+
+minetest.register_tool("gloopblocks:pick_cement", {
+ description = S("Cement Pickaxe"),
+ inventory_image = "gloopblocks_cement_pick.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ groupcaps={
+ cracky={times={[1]=3.50, [2]=1.40, [3]=0.90}, uses=25, maxlevel=2}
+ },
+ damage_groups = {fleshy=4},
+ },
+})
+
+minetest.register_tool("gloopblocks:shovel_cement", {
+ description = S("Cement Shovel"),
+ inventory_image = "gloopblocks_cement_shovel.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ groupcaps={
+ crumbly={times={[1]=1.50, [2]=0.60, [3]=0.45}, uses=25, maxlevel=2}
+ },
+ damage_groups = {fleshy=4},
+ },
+})
+
+minetest.register_tool("gloopblocks:axe_cement", {
+ description = S("Cement Axe"),
+ inventory_image = "gloopblocks_cement_axe.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ groupcaps={
+ choppy={times={[1]=3.00, [2]=1.30, [3]=0.80}, uses=25, maxlevel=2},
+ fleshy={times={[2]=1.20, [3]=0.65}, uses=30, maxlevel=1}
+ },
+ damage_groups = {fleshy=4},
+ },
+})
+
+minetest.register_tool("gloopblocks:sword_cement", {
+ description = S("Cement Sword"),
+ inventory_image = "gloopblocks_cement_sword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ groupcaps={
+ fleshy={times={[1]=1.60, [2]=0.80, [3]=0.40}, uses=15, maxlevel=2},
+ snappy={times={[2]=0.75, [3]=0.35}, uses=30, maxlevel=1},
+ choppy={times={[3]=0.80}, uses=30, maxlevel=0}
+ },
+ damage_groups = {fleshy=6},
+ }
+})
+
+minetest.register_tool("gloopblocks:pick_evil", {
+ description = S("Evil Pickaxe"),
+ inventory_image = "gloopblocks_evil_pick.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=3,
+ groupcaps={
+ cracky={times={[1]=0.10, [2]=0.10, [3]=0.10}, uses=10, maxlevel=2}
+ },
+ damage_groups = {fleshy=6},
+ },
+})
+
+minetest.register_tool("gloopblocks:shovel_evil", {
+ description = S("Evil Shovel"),
+ inventory_image = "gloopblocks_evil_shovel.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=3,
+ groupcaps={
+ crumbly={times={[1]=0.05, [2]=0.05, [3]=0.05}, uses=10, maxlevel=2}
+ },
+ damage_groups = {fleshy=6},
+ },
+})
+
+minetest.register_tool("gloopblocks:axe_evil", {
+ description = S("Evil Axe"),
+ inventory_image = "gloopblocks_evil_axe.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=3,
+ groupcaps={
+ choppy={times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=10, maxlevel=2},
+ fleshy={times={[1]=0.15, [2]=0.15, [3]=0.15}, uses=10, maxlevel=2}
+ },
+ damage_groups = {fleshy=6},
+ },
+})
+
+minetest.register_tool("gloopblocks:sword_evil", {
+ description = S("Evil Sword"),
+ inventory_image = "gloopblocks_evil_sword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=3,
+ groupcaps={
+ fleshy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=2},
+ snappy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=2},
+ choppy={times={[1]=0.20, [2]=0.20, [3]=0.20}, uses=10, maxlevel=2}
+ },
+ damage_groups = {fleshy=8},
+ }
+})
+
+-- Other items
+
+minetest.register_craftitem("gloopblocks:wet_cement", {
+ description = S("Wet Cement"),
+ inventory_image = "gloopblocks_wet_cement.png",
+})
+
+minetest.register_craftitem("gloopblocks:evil_stick", {
+ description = S("Evil Stick"),
+ inventory_image = "gloopblocks_evil_stick.png",
+})
+
+-- define lava-cooling-based nodes and hook into the default lavacooling
+-- functions to generate basalt, pumice, and obsidian
+
+if minetest.setting_getbool("gloopblocks_lavacooling") ~= false then
+
+ minetest.register_node("gloopblocks:obsidian_cooled", {
+ description = S("Obsidian"),
+ tiles = {"default_obsidian.png"},
+ is_ground_content = true,
+ sounds = default.node_sound_stone_defaults(),
+ groups = {cracky=1, level=2, not_in_creative_inventory=1},
+ drop = "default:obsidian",
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ minetest.add_node(pos, {name = "default:obsidian"})
+ end
+ })
+
+ minetest.register_node("gloopblocks:basalt_cooled", {
+ description = S("Basalt"),
+ tiles = {"gloopblocks_basalt.png"},
+ groups = {cracky=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "gloopblocks:basalt",
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ minetest.add_node(pos, {name = "gloopblocks:basalt"})
+ end
+ })
+
+ minetest.register_node("gloopblocks:pumice_cooled", {
+ description = S("Pumice"),
+ tiles = {"gloopblocks_pumice.png"},
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "gloopblocks:pumice",
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ minetest.add_node(pos, {name = "gloopblocks:pumice"})
+ end
+ })
+
+ local gloopblocks_search_nearby_nodes = function(pos, node)
+ if minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}).name == node then return true end
+ if minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}).name == node then return true end
+ if minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == node then return true end
+ if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == node then return true end
+ if minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}).name == node then return true end
+ if minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}).name == node then return true end
+ return false
+ end
+
+ default.cool_lava_source = function(pos)
+ if gloopblocks_search_nearby_nodes(pos,"default:water_source")
+ or gloopblocks_search_nearby_nodes(pos,"default:water_flowing") then
+ minetest.set_node(pos, {name="gloopblocks:obsidian_cooled"})
+ end
+ end
+
+ default.cool_lava_flowing = function(pos)
+ if gloopblocks_search_nearby_nodes(pos,"default:water_source") then
+ minetest.set_node(pos, {name="gloopblocks:basalt_cooled"})
+ elseif gloopblocks_search_nearby_nodes(pos,"default:water_flowing") then
+ minetest.set_node(pos, {name="gloopblocks:pumice_cooled"})
+ end
+ end
+end
+
+local fence_texture =
+ "default_fence_overlay.png^default_steel_block.png^default_fence_overlay.png^[makealpha:255,126,126"
+
+minetest.register_node("gloopblocks:fence_steel", {
+ description = "Steel Fence",
+ drawtype = "fencelike",
+ tiles = {"default_steel_block.png"},
+ inventory_image = fence_texture,
+ wield_image = fence_texture,
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {choppy = 2, oddly_breakable_by_hand = 2 },
+ sounds = default.node_sound_stone_defaults(),
+})
+
+dofile(minetest.get_modpath("gloopblocks").."/crafts.lua")
+
+print(S("Gloopblocks Loaded!"))
diff --git a/gloopblocks/locale/de.txt b/gloopblocks/locale/de.txt
new file mode 100644
index 0000000..99d8953
--- /dev/null
+++ b/gloopblocks/locale/de.txt
@@ -0,0 +1,60 @@
+# Translation by Xanthin
+
+Shrubbery = Gebuesch
+Rainbow Block = Regenbogenblock
+Cement = Zement
+Evil Block = Teuflischer Block
+Obsidian = Obsidian
+Basalt = Basalt
+Pumice = Bimsstein
+Pavement = Strassenbelag
+Oerkki Block = Oerkkiblock
+Mossy Stone Brick = Moosiger Steinziegel
+Mossy Stone = Moosiger Stein
+Cobblestone Road Bed = Kopfsteinpflasterstrasse
+Mossy Cobblestone Road Bed = Moosige Kopfsteinpflasterstrasse
+Wooden Scaffold = Holzgeruest
+Cobblestone Roadbed = Kopfsteinpflasterstrasse
+Mossy Cobblestone Roadbed = Moosige Kopfsteinpflasterstrasse
+White Wool = Weisse Wolle
+Grey Wool = Graue Wolle
+Black Wool = Schwarze Wolle
+Red Wool = Rote Wolle
+Yellow Wool = Gelbe Wolle
+Green Wool = Gruene Wolle
+Cyan Wool = Tuerkise Wolle
+Blue Wool = Blaue Wolle
+Magenta Wool = Magenta Wolle
+Orange Wool = Orange Wolle
+Violet Wool = Violette Wolle
+Brown Wool = Braune Wolle
+Pink Wool = Rosa Wolle
+Dark Grey Wool = Dunkelgraue Wolle
+Dark Green Wool = Dunkelgruene Wolle
+
+Mossy Stone Stair = Moosige Steintreppe
+Mossy Cobble Stair = Moosige Pflastersteintreppe
+Mossy Stone Brick Stair = Moosige Steinziegeltreppe
+Cobble Roadbed Stair = Kopfsteinstrassentreppe
+Mossy Cobble Roadbed Stair = Moosige Kopfsteinstrassentreppe
+Cement Stair = Zementtreppe
+Pavement Stair = Strassenbelagtreppe
+Mossy Stone Slab = Moosige Steinstufe
+Mossy Cobble Slab = Moosige Pflastersteinstufe
+Mossy Stone Brick Slab = Moosige Steinziegelstufe
+Cobble Roadbed Slab = Kopfsteinstrassenstufe
+Mossy Cobble Roadbed Slab = Moosige Kopfsteinstrassenstufe
+Cement Slab = Zementstufe
+Pavement Slab = Strassenbelagstufe
+
+Cement Pickaxe = Zementspitzhacke
+Cement Shovel = Zementschaufel
+Cement Axe = Zementaxt
+Cement Sword = Zementschwert
+Evil Pickaxe = Teuflische Spitzhacke
+Evil Shovel = Teuflische Schaufel
+Evil Axe = Teuflische Axt
+Evil Sword = Teuflisches Schwert
+Wet Cement = Feuchter Zement
+Evil Stick = Teuflischer Stock
+Gloopblocks Loaded! = Gloopblocks geladen!
diff --git a/gloopblocks/locale/template.txt b/gloopblocks/locale/template.txt
new file mode 100644
index 0000000..11ed977
--- /dev/null
+++ b/gloopblocks/locale/template.txt
@@ -0,0 +1,59 @@
+# Template
+
+Shrubbery =
+Rainbow Block =
+Cement =
+Evil Block =
+Obsidian =
+Basalt =
+Pumice =
+Pavement =
+Oerkki Block =
+Mossy Stone Brick =
+Mossy Stone =
+Cobblestone Road Bed =
+Mossy Cobblestone Road Bed =
+Wooden Scaffold =
+##stairs_plus
+White Wool =
+Grey Wool =
+Black Wool =
+Red Wool =
+Yellow Wool =
+Green Wool =
+Cyan Wool =
+Blue Wool =
+Magenta Wool =
+Orange Wool =
+Violet Wool =
+Brown Wool =
+Pink Wool =
+Dark Grey Wool =
+Dark Green Wool =
+
+Mossy Stone Stair =
+Mossy Cobble Stair =
+Mossy Stone Brick Stair =
+Cobble Roadbed Stair =
+Mossy Cobble Roadbed Stair =
+Cement Stair =
+Pavement Stair =
+Mossy Stone Slab =
+Mossy Cobble Slab =
+Mossy Stone Brick Slab =
+Cobble Roadbed Slab =
+Mossy Cobble Roadbed Slab =
+Cement Slab =
+Pavement Slab =
+
+Cement Pickaxe Wool =
+Cement Shovel Wool =
+Cement Axe Wool =
+Cement Sword Wool =
+Evil Pickaxe Wool =
+Evil Shovel Wool =
+Evil Axe Wool =
+Evil Sword Wool =
+Wet Cement Wool =
+Evil Stick Wool =
+Gloopblocks Loaded! =
diff --git a/gloopblocks/textures/gloopblocks_basalt.png b/gloopblocks/textures/gloopblocks_basalt.png
new file mode 100644
index 0000000..f849d94
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_basalt.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cement.png b/gloopblocks/textures/gloopblocks_cement.png
new file mode 100644
index 0000000..c4c6a11
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cement.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cement_axe.png b/gloopblocks/textures/gloopblocks_cement_axe.png
new file mode 100644
index 0000000..f0ea898
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cement_axe.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cement_pick.png b/gloopblocks/textures/gloopblocks_cement_pick.png
new file mode 100644
index 0000000..43a1551
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cement_pick.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cement_shovel.png b/gloopblocks/textures/gloopblocks_cement_shovel.png
new file mode 100644
index 0000000..69b11cc
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cement_shovel.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cement_sword.png b/gloopblocks/textures/gloopblocks_cement_sword.png
new file mode 100644
index 0000000..faf0710
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cement_sword.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cobble_road.png b/gloopblocks/textures/gloopblocks_cobble_road.png
new file mode 100644
index 0000000..fef1d7f
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cobble_road.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_cobble_road_mossy.png b/gloopblocks/textures/gloopblocks_cobble_road_mossy.png
new file mode 100644
index 0000000..2234649
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_cobble_road_mossy.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_evil_axe.png b/gloopblocks/textures/gloopblocks_evil_axe.png
new file mode 100644
index 0000000..8d3a4f3
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_evil_axe.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_evil_block.png b/gloopblocks/textures/gloopblocks_evil_block.png
new file mode 100644
index 0000000..4f3fa19
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_evil_block.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_evil_pick.png b/gloopblocks/textures/gloopblocks_evil_pick.png
new file mode 100644
index 0000000..73c77a9
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_evil_pick.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_evil_shovel.png b/gloopblocks/textures/gloopblocks_evil_shovel.png
new file mode 100644
index 0000000..1eeafe9
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_evil_shovel.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_evil_stick.png b/gloopblocks/textures/gloopblocks_evil_stick.png
new file mode 100644
index 0000000..025b485
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_evil_stick.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_evil_sword.png b/gloopblocks/textures/gloopblocks_evil_sword.png
new file mode 100644
index 0000000..398284c
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_evil_sword.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_oerkkiblock_front.png b/gloopblocks/textures/gloopblocks_oerkkiblock_front.png
new file mode 100644
index 0000000..149e38d
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_oerkkiblock_front.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_oerkkiblock_sides.png b/gloopblocks/textures/gloopblocks_oerkkiblock_sides.png
new file mode 100644
index 0000000..f3e3061
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_oerkkiblock_sides.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_oerkkiblock_tb.png b/gloopblocks/textures/gloopblocks_oerkkiblock_tb.png
new file mode 100644
index 0000000..2ea3cec
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_oerkkiblock_tb.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_pavement.png b/gloopblocks/textures/gloopblocks_pavement.png
new file mode 100644
index 0000000..8881396
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_pavement.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_pumice.png b/gloopblocks/textures/gloopblocks_pumice.png
new file mode 100644
index 0000000..5dd5c34
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_pumice.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_rainbow_block.png b/gloopblocks/textures/gloopblocks_rainbow_block.png
new file mode 100644
index 0000000..c3553fc
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_rainbow_block.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_scaffold.png b/gloopblocks/textures/gloopblocks_scaffold.png
new file mode 100644
index 0000000..e546432
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_scaffold.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_stone_brick_mossy.png b/gloopblocks/textures/gloopblocks_stone_brick_mossy.png
new file mode 100644
index 0000000..9619603
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_stone_brick_mossy.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_stone_mossy.png b/gloopblocks/textures/gloopblocks_stone_mossy.png
new file mode 100644
index 0000000..5903fe3
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_stone_mossy.png
Binary files differ
diff --git a/gloopblocks/textures/gloopblocks_wet_cement.png b/gloopblocks/textures/gloopblocks_wet_cement.png
new file mode 100644
index 0000000..6a7fbf1
--- /dev/null
+++ b/gloopblocks/textures/gloopblocks_wet_cement.png
Binary files differ
diff --git a/glooptest/LICENSE.txt b/glooptest/LICENSE.txt
new file mode 100644
index 0000000..8810a43
--- /dev/null
+++ b/glooptest/LICENSE.txt
@@ -0,0 +1,5 @@
+Released under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+
+Legal code available for viewing here: http://creativecommons.org/licenses/by-sa/3.0/legalcode
+
+Basic license overview available for viewing here: http://creativecommons.org/licenses/by-sa/3.0/
diff --git a/glooptest/README.txt b/glooptest/README.txt
new file mode 100644
index 0000000..28d44c3
--- /dev/null
+++ b/glooptest/README.txt
@@ -0,0 +1,21 @@
+=-=-=-=-=-=-=
+GloopTest :D *insert witty comment here*
+=-=-=-=-=-=-=
+
+Adds a collection of things into minetest. As it stands, this adds three different modules.
+
+More (or possibly (most likely) less) imformation can be found here: http://minetest.net/forum/viewtopic.php?id=4345
+
+--==--==--
+
+Ore Module: Adds a variety of ores into minetest, for use here and possibly in other mods.
+
+OtherGen Module: Adds generation aside from ores.
+
+Parts Module: Adds some bits and bobs for machinery and some minor blocks.
+
+Tech Module: Adds the "tech" of glooptest.
+
+Tools Module: Adds extra kinds of tools.
+
+Compat Module: Puts into place a number of aliases for cross-mod-compatibility.
diff --git a/glooptest/glooptest/compat_module/config.cfg b/glooptest/glooptest/compat_module/config.cfg
new file mode 100644
index 0000000..0fb46e9
--- /dev/null
+++ b/glooptest/glooptest/compat_module/config.cfg
@@ -0,0 +1,5 @@
+-- GloopTest compat module configurations file.
+-- Controls what mods to bother being compatible with.
+
+-- Support GloopOres (obsolete mod)
+GLOOPORES_SUPPORT = true \ No newline at end of file
diff --git a/glooptest/glooptest/compat_module/init.lua b/glooptest/glooptest/compat_module/init.lua
new file mode 100644
index 0000000..414a22d
--- /dev/null
+++ b/glooptest/glooptest/compat_module/init.lua
@@ -0,0 +1,35 @@
+glooptest.compat_module = {}
+glooptest.debug("MESSAGE","Loading Compat Module Now!")
+
+dofile(minetest.get_modpath("glooptest").."/compat_module/config.cfg")
+
+if GLOOPORES_SUPPORT == true then
+ minetest.register_alias("gloopores:mineral_alatro", "glooptest:mineral_alatro")
+ minetest.register_alias("gloopores:alatro_lump", "glooptest:alatro_lump")
+ minetest.register_alias("gloopores:alatro_ingot", "glooptest:alatro_ingot")
+ minetest.register_alias("gloopores:alatro_block", "glooptest:alatroblock")
+ minetest.register_alias("gloopores:pick_alatro", "glooptest:pick_alatro")
+ minetest.register_alias("gloopores:axe_alatro", "glooptest:axe_alatro")
+ minetest.register_alias("gloopores:shovel_alatro", "glooptest:shovel_alatro")
+ minetest.register_alias("gloopores:sword_alatro", "glooptest:sword_alatro")
+ minetest.register_alias("gloopores:mineral_arol", "glooptest:mineral_arol")
+ minetest.register_alias("gloopores:arol_lump", "glooptest:arol_lump")
+ minetest.register_alias("gloopores:arol_ingot", "glooptest:arol_ingot")
+ minetest.register_alias("gloopores:pick_arol", "glooptest:pick_arol")
+ minetest.register_alias("gloopores:axe_arol", "glooptest:axe_arol")
+ minetest.register_alias("gloopores:shovel_arol", "glooptest:shovel_arol")
+ minetest.register_alias("gloopores:sword_arol", "glooptest:sword_arol")
+ minetest.register_alias("gloopores:mineral_akalin", "glooptest:mineral_akalin")
+ minetest.register_alias("gloopores:akalin_lump", "glooptest:akalin_lump")
+ minetest.register_alias("gloopores:akalin_ingot", "glooptest:akalin_ingot")
+ minetest.register_alias("gloopores:akalin_block", "glooptest:akalinblock")
+ minetest.register_alias("gloopores:mineral_talinite", "glooptest:mineral_talinite")
+ minetest.register_alias("gloopores:talinite_lump", "glooptest:talinite_lump")
+ minetest.register_alias("gloopores:talinite_ingot", "glooptest:talinite_ingot")
+ minetest.register_alias("gloopores:talinite_block", "glooptest:taliniteblock")
+ minetest.register_alias("gloopores:mineral_kalite", "glooptest:mineral_kalite")
+ minetest.register_alias("gloopores:kalite_lump", "glooptest:kalite_lump")
+ minetest.register_alias("gloopores:kalite_torch", "glooptest:kalite_torch")
+ minetest.register_alias("gloopores:mineral_desert_coal", "glooptest:mineral_desert_coal")
+ minetest.register_alias("gloopores:mineral_desert_iron", "glooptest:mineral_desert_iron")
+end \ No newline at end of file
diff --git a/glooptest/glooptest/depends.txt b/glooptest/glooptest/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/glooptest/glooptest/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/glooptest/glooptest/general.cfg b/glooptest/glooptest/general.cfg
new file mode 100644
index 0000000..89eb817
--- /dev/null
+++ b/glooptest/glooptest/general.cfg
@@ -0,0 +1,5 @@
+-- GloopTest general configurations file.
+-- Please note that this file only contains configs which apply to the entire modpack; the modules themselves have much more detailed configuration files
+-- which pertain more to that module.
+
+-- Nothing here! \ No newline at end of file
diff --git a/glooptest/glooptest/init.lua b/glooptest/glooptest/init.lua
new file mode 100644
index 0000000..899a85d
--- /dev/null
+++ b/glooptest/glooptest/init.lua
@@ -0,0 +1,65 @@
+-- GloopTest general initiation file.
+-- To edit what modules will load, please edit module.cfg which can be found in the same folder as this file.
+--
+-- GloopTest random data:
+-- Version : 0.0.4a
+-- Current module amount : 6
+-- Current compatible minetest version : 0.4.7
+-- License : CC-BY-SA
+-- Totals: lol I don't know
+-- End random data.
+
+-- Open configuration files.
+dofile(minetest.get_modpath("glooptest").."/general.cfg")
+dofile(minetest.get_modpath("glooptest").."/module.cfg")
+
+-- Set up some variables and crap.
+local modules_loaded = 0
+glooptest = {}
+
+-- Set up some general functions for random crap.
+function glooptest.debug(level,message)
+ print("["..level.."][GloopTest v0.0.4a] "..message)
+end
+
+if LOAD_ORE_MODULE == true then
+ dofile(minetest.get_modpath("glooptest").."/ore_module/init.lua")
+ local modulecount = modules_loaded
+ modules_loaded = modulecount+1
+end
+
+if LOAD_TOOLS_MODULE == true then
+ dofile(minetest.get_modpath("glooptest").."/tools_module/init.lua")
+ local modulecount = modules_loaded
+ modules_loaded = modulecount+1
+end
+
+if LOAD_PARTS_MODULE == true then
+ dofile(minetest.get_modpath("glooptest").."/parts_module/init.lua")
+ local modulecount = modules_loaded
+ modules_loaded = modulecount+1
+end
+
+if LOAD_TECH_MODULE == true then
+ dofile(minetest.get_modpath("glooptest").."/tech_module/init.lua")
+ local modulecount = modules_loaded
+ modules_loaded = modulecount+1
+end
+
+if LOAD_OTHERGEN_MODULE == true then
+ dofile(minetest.get_modpath("glooptest").."/othergen_module/init.lua")
+ local modulecount = modules_loaded
+ modules_loaded = modulecount+1
+end
+
+if LOAD_COMPAT_MODULE == true then
+ dofile(minetest.get_modpath("glooptest").."/compat_module/init.lua")
+ local modulecount = modules_loaded
+ modules_loaded = modulecount+1
+end
+
+if modules_loaded == 0 then
+ glooptest.debug("ERROR","It helps if you activate some of the modules.")
+else
+ glooptest.debug("MESSAGE",modules_loaded.." modules were successfully loaded!")
+end
diff --git a/glooptest/glooptest/license.txt b/glooptest/glooptest/license.txt
new file mode 100644
index 0000000..26a1ea8
--- /dev/null
+++ b/glooptest/glooptest/license.txt
@@ -0,0 +1,5 @@
+Released under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+
+Legal code available for viewing here: http://creativecommons.org/licenses/by-sa/3.0/legalcode
+
+Basic license overview available for viewing here: http://creativecommons.org/licenses/by-sa/3.0/ \ No newline at end of file
diff --git a/glooptest/glooptest/module.cfg b/glooptest/glooptest/module.cfg
new file mode 100644
index 0000000..a2945a7
--- /dev/null
+++ b/glooptest/glooptest/module.cfg
@@ -0,0 +1,21 @@
+-- GloopTest module loading configuration file.
+-- This file controls which modules load when GloopTest initiates. This does not control any other aspects of GloopTest.
+
+-- Allow compatibility module to load. (Recommended with: Ore Module)
+-- Diabling this means NO internal mod compatibility! (Other mods may add support for glooptest though)
+LOAD_COMPAT_MODULE = true
+
+-- Allow ore module to load.
+LOAD_ORE_MODULE = true
+
+-- Allow tools module to load. (Recommended with: Ore Module)
+LOAD_TOOLS_MODULE = true
+
+-- Allow parts module to load. (Recommended with: Ore Module)
+LOAD_PARTS_MODULE = true
+
+-- Allow tech module to load. (Recommended with: Ore Module and Parts Module)
+LOAD_TECH_MODULE = true
+
+-- Allow othergen module to load. (Recommended with: Ore Module and Tools Module)
+LOAD_OTHERGEN_MODULE = false
diff --git a/glooptest/glooptest/ore_module/api.lua b/glooptest/glooptest/ore_module/api.lua
new file mode 100644
index 0000000..7cf35ab
--- /dev/null
+++ b/glooptest/glooptest/ore_module/api.lua
@@ -0,0 +1,152 @@
+function glooptest.ore_module.set_tool_recipe(modname,type,material,name)
+ if type == "sword" then
+ minetest.register_craft({
+ recipe = {{material},{material},{"default:stick"}},
+ output = modname..":sword_"..name,
+ })
+ end
+ if type == "axe" then
+ minetest.register_craft({
+ recipe = {{material, material}, {material, "default:stick"}, {"","default:stick"}},
+ output = modname..":axe_"..name,
+ })
+ minetest.register_craft({
+ recipe = {{material, material}, {"default:stick", material}, {"default:stick", ""}},
+ output = modname..":axe_"..name,
+ })
+ end
+ if type == "pick" or type == "pickaxe" then
+ minetest.register_craft({
+ recipe = {{material, material, material}, {"","default:stick",""}, {"","default:stick",""}},
+ output = modname..":pick_"..name,
+ })
+ end
+ if type == "shovel" then
+ minetest.register_craft({
+ recipe = {{material},{"default:stick"},{"default:stick"}},
+ output = modname..":shovel_"..name,
+ })
+ end
+ if type == "handsaw" then
+ minetest.register_craft({
+ recipe = {{material, "default:stick"},{material, "default:stick"},{"", "default:stick"}},
+ output = modname..":handsaw_"..name,
+ })
+ minetest.register_craft({
+ recipe = {{"default:stick", material},{"default:stick", material},{"default:stick", ""}},
+ output = modname..":handsaw_"..name,
+ })
+ end
+ if type == "hammer" then
+ minetest.register_craft({
+ recipe = {{material, "default:stick", material}, {material, "default:stick", material}, {"", "default:stick", ""}},
+ output = modname..":hammer_"..name,
+ })
+ end
+end
+
+generation_ores = {}
+
+function glooptest.ore_module.register_ore(modname, name, desc, uses)
+ if uses.block ~= nil and uses.block.makes ~= false then
+ minetest.register_node(modname..":"..name.."block", {
+ description = desc.." Block",
+ tiles = {uses.block.texture},
+ is_ground_content = true,
+ light_source = uses.block.light or 0,
+ groups = uses.block.groups,
+ sounds = uses.block.sounds
+ })
+ if uses.block.fromingots == true and uses.ingot ~= nil then
+ minetest.register_craft({
+ output = modname..":"..name.."block",
+ recipe = {
+ {modname..":"..name.."_ingot", modname..":"..name.."_ingot", modname..":"..name.."_ingot"},
+ {modname..":"..name.."_ingot", modname..":"..name.."_ingot", modname..":"..name.."_ingot"},
+ {modname..":"..name.."_ingot", modname..":"..name.."_ingot", modname..":"..name.."_ingot"}
+ }
+ })
+ minetest.register_craft({
+ output = modname..":"..name.."_ingot 9",
+ recipe = {
+ {modname..":"..name.."block"}
+ }
+ })
+ end
+ end
+ if uses.ore ~= nil and uses.ore.makes ~= false then
+ minetest.register_node(modname..":mineral_"..name, {
+ description = desc.." Ore",
+ tiles = {uses.ore.texture.base.."^"..uses.ore.texture.overlay},
+ is_ground_content = true,
+ drop = uses.ore.drop,
+ light_source = uses.ore.light or 0,
+ groups = uses.ore.groups,
+ sounds = uses.ore.sounds
+ })
+ minetest.register_ore({
+ ore_type = "scatter",
+ ore = modname..":mineral_"..name,
+ wherein = uses.ore.generate.generate_inside_of,
+ clust_scarcity = uses.ore.generate.chunks_per_mapblock,
+ clust_num_ores = uses.ore.generate.max_blocks_per_chunk,
+ clust_size = uses.ore.generate.chunk_size,
+ y_min = uses.ore.generate.miny,
+ y_max = uses.ore.generate.maxy,
+ })
+ end
+ if uses.lump ~= nil and uses.lump.makes ~= false then
+ minetest.register_craftitem(modname..":"..name.."_"..uses.lump.name, {
+ description = desc.." "..uses.lump.desc,
+ inventory_image = uses.lump.texture,
+ })
+ end
+ if uses.ingot ~= nil and uses.ingot.makes ~= false then
+ minetest.register_craftitem(modname..":"..name.."_ingot", {
+ description = desc.." Ingot",
+ inventory_image = uses.ingot.texture,
+ })
+ if uses.ingot.smeltrecipe == true and uses.lump ~= nil then
+ minetest.register_craft({
+ type = "cooking",
+ output = modname..":"..name.."_ingot",
+ recipe = modname..":"..name.."_"..uses.lump.name,
+ })
+ end
+ end
+ if uses.tools ~= nil and uses.tools.make ~= nil then
+ if uses.tools.make.sword == true then
+ minetest.register_tool(modname..":sword_"..name, {
+ description = desc.." Sword",
+ inventory_image = uses.tools.texture.sword,
+ tool_capabilities = uses.tools.caps.sword,
+ })
+ glooptest.ore_module.set_tool_recipe(modname,"sword",modname..":"..name.."_ingot",name)
+ end
+ if uses.tools.make.axe == true then
+ minetest.register_tool(modname..":axe_"..name, {
+ description = desc.." Axe",
+ inventory_image = uses.tools.texture.axe,
+ tool_capabilities = uses.tools.caps.axe,
+ })
+ glooptest.ore_module.set_tool_recipe(modname,"axe",modname..":"..name.."_ingot",name)
+ end
+ if uses.tools.make.pick == true then
+ minetest.register_tool(modname..":pick_"..name, {
+ description = desc.." Pickaxe",
+ inventory_image = uses.tools.texture.pick,
+ tool_capabilities = uses.tools.caps.pick,
+ })
+ glooptest.ore_module.set_tool_recipe(modname,"pick",modname..":"..name.."_ingot",name)
+ end
+ if uses.tools.make.shovel == true then
+ minetest.register_tool(modname..":shovel_"..name, {
+ description = desc.." Shovel",
+ inventory_image = uses.tools.texture.shovel,
+ wield_image = uses.tools.texture.shovel.."^[transformR90",
+ tool_capabilities = uses.tools.caps.shovel,
+ })
+ glooptest.ore_module.set_tool_recipe(modname,"shovel",modname..":"..name.."_ingot",name)
+ end
+ end
+end
diff --git a/glooptest/glooptest/ore_module/init.lua b/glooptest/glooptest/ore_module/init.lua
new file mode 100644
index 0000000..bed4d5b
--- /dev/null
+++ b/glooptest/glooptest/ore_module/init.lua
@@ -0,0 +1,630 @@
+glooptest.ore_module = {}
+glooptest.debug("MESSAGE","Loading Ore Module Now!")
+
+local stone_sounds = default.node_sound_stone_defaults()
+
+dofile(minetest.get_modpath("glooptest").."/ore_module/api.lua")
+
+-- HUGE NOTE HERE:
+-- I did not make the textures. celeron55/erlehmann made the textures which were licensed under CC-BY-SA, and then edited by me.
+-- The textures for non-gem ores are thus CC-BY-SA, with respect to celeron55/erlehmann
+-- Suck it, minetest community.
+
+glooptest.ore_module.register_ore("glooptest", "kalite", "Kalite", {
+ ore = {
+ makes = true,
+ drop = {
+ max_items = 4,
+ items = {
+ {
+ items = {'glooptest:kalite_lump'},
+ rarity = 5,
+ },
+ {
+ items = {'glooptest:kalite_lump'},
+ rarity = 2,
+ },
+ {
+ items = {'glooptest:kalite_lump 2'},
+ },
+ }
+ },
+ texture = {
+ base = "default_stone.png",
+ overlay = "gloopores_mineral_kalite.png",
+ },
+ groups = {cracky=3},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 9*9*9,
+ chunk_size = 6,
+ max_blocks_per_chunk = 7,
+ miny = -31000,
+ maxy = 10
+ },
+ },
+})
+
+minetest.register_craftitem("glooptest:kalite_lump", {
+ description = "Kalite Lump",
+ inventory_image = "gloopores_kalite_lump.png",
+ on_use = minetest.item_eat(1),
+})
+
+minetest.register_node("glooptest:kalite_torch", {
+ description = "Kalite Torch",
+ drawtype = "torchlike",
+ tiles = {
+ {name="gloopores_kalite_torch_on_floor_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ {name="gloopores_kalite_torch_on_ceiling_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ {name="gloopores_kalite_torch_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}
+ },
+ inventory_image = "gloopores_kalite_torch_on_floor.png",
+ wield_image = "gloopores_kalite_torch_on_floor.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ light_source = LIGHT_MAX-1,
+ selection_box = {
+ type = "wallmounted",
+ wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
+ wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
+ wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1},
+ },
+ groups = {choppy=2,dig_immediate=3},
+ legacy_wallmounted = true,
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_craft({
+ output = "glooptest:kalite_torch 4",
+ recipe = {
+ {"glooptest:kalite_lump"},
+ {"default:stick"},
+ }
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "glooptest:kalite_lump",
+ burntime = 30,
+})
+
+glooptest.ore_module.register_ore("glooptest", "alatro", "Alatro", {
+ ore = {
+ makes = true,
+ drop = "glooptest:alatro_lump",
+ texture = {
+ base = "default_stone.png",
+ overlay = "gloopores_mineral_alatro.png",
+ },
+ groups = {cracky=2},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 9*9*9,
+ chunk_size = 2,
+ max_blocks_per_chunk = 6,
+ miny = 0,
+ maxy = 256
+ },
+ },
+ lump = {
+ makes = true,
+ name = "lump",
+ desc = "Lump",
+ texture = "gloopores_alatro_lump.png"
+ },
+ ingot = {
+ makes = true,
+ texture = "gloopores_alatro_ingot.png",
+ smeltrecipe = true
+ },
+ block = {
+ makes = true,
+ texture = "gloopores_alatro_block.png",
+ groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+ sounds = stone_sounds,
+ fromingots = true
+ },
+ tools = {
+ make = {
+ sword = true,
+ axe = true,
+ pick = true,
+ shovel = true
+ },
+ texture = {
+ sword = "gloopores_tool_alatrosword.png",
+ axe = "gloopores_tool_alatroaxe.png",
+ pick = "gloopores_tool_alatropick.png",
+ shovel = "gloopores_tool_alatroshovel.png"
+ },
+ caps = {
+ sword = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps={
+ fleshy={times={[2]=0.80, [3]=0.60}, uses=40, maxlevel=1},
+ snappy={times={[2]=0.80, [3]=0.60}, uses=40, maxlevel=1},
+ choppy={times={[3]=0.80}, uses=40, maxlevel=0}
+ },
+ damage_groups = {fleshy=5},
+ },
+ axe = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ choppy = {times={[2]=0.65, [3]=0.40}, uses=40, maxlevel=1},
+ fleshy = {times={[2]=0.65, [3]=0.40}, uses=40, maxlevel=1}
+ },
+ damage_groups = {fleshy=3},
+ },
+ pick = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ cracky = {times={[2]=0.65, [3]=0.40}, uses=40, maxlevel=1}
+ },
+ damage_groups = {fleshy=3},
+ },
+ shovel = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ crumbly = {times={[2]=0.60, [3]=0.35}, uses=40, maxlevel=1}
+ },
+ damage_groups = {fleshy=3},
+ },
+ }
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "talinite", "Talinite", {
+ ore = {
+ makes = true,
+ drop = "glooptest:talinite_lump",
+ texture = {
+ base = "default_stone.png",
+ overlay = "gloopores_mineral_talinite.png"
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ light = 6,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 12*12*12,
+ chunk_size = 2,
+ max_blocks_per_chunk = 4,
+ miny = -31000,
+ maxy = -250
+ }
+ },
+ lump = {
+ makes = true,
+ name = "lump",
+ desc = "Lump",
+ texture = "gloopores_talinite_lump.png"
+ },
+ ingot = {
+ makes = true,
+ texture = "gloopores_talinite_ingot.png",
+ smeltrecipe = true
+ },
+ block = {
+ makes = true,
+ texture = "gloopores_talinite_block.png",
+ groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+ sounds = stone_sounds,
+ light = 14,
+ fromingots = true
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "akalin", "Akalin", {
+ ore = {
+ makes = true,
+ drop = "glooptest:akalin_lump",
+ texture = {
+ base = "default_desert_stone.png",
+ overlay = "gloopores_mineral_akalin.png"
+ },
+ groups = {cracky=3},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:desert_stone",
+ chunks_per_mapblock = 7*7*7,
+ chunk_size = 3,
+ max_blocks_per_chunk = 9,
+ miny = 0,
+ maxy = 256
+ }
+ },
+ lump = {
+ makes = true,
+ name = "lump",
+ desc = "Lump",
+ texture = "gloopores_akalin_lump.png"
+ },
+ ingot = {
+ makes = true,
+ texture = "gloopores_akalin_ingot.png",
+ smeltrecipe = true
+ },
+ block = {
+ makes = true,
+ texture = "gloopores_akalin_block.png",
+ groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+ sounds = stone_sounds,
+ fromingots = true
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "arol", "Arol", {
+ ore = {
+ makes = true,
+ drop = "glooptest:arol_lump",
+ texture = {
+ base = "default_stone.png",
+ overlay = "gloopores_mineral_arol.png"
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 10*10*10,
+ chunk_size = 2,
+ max_blocks_per_chunk = 2,
+ miny = -31000,
+ maxy = -20
+ }
+ },
+ lump = {
+ makes = true,
+ name = "lump",
+ desc = "Lump",
+ texture = "gloopores_arol_lump.png"
+ },
+ ingot = {
+ makes = true,
+ texture = "gloopores_arol_ingot.png",
+ smeltrecipe = true
+ },
+ tools = {
+ make = {
+ sword = true,
+ axe = true,
+ pick = true,
+ shovel = true
+ },
+ texture = {
+ sword = "gloopores_tool_arolsword.png",
+ axe = "gloopores_tool_arolaxe.png",
+ pick = "gloopores_tool_arolpick.png",
+ shovel = "gloopores_tool_arolshovel.png"
+ },
+ caps = {
+ sword = {
+ full_punch_interval = 0.5,
+ max_drop_level = 2,
+ groupcaps = {
+ fleshy = {times={[2]=1.30, [3]=1.10}, uses=300, maxlevel=2},
+ snappy = {times={[2]=1.30, [3]=1.10}, uses=300, maxlevel=2},
+ choppy = {times={[3]=1.60}, uses=300, maxlevel=1}
+ },
+ damage_groups = {fleshy=6},
+ },
+ axe = {
+ full_punch_interval = 0.5,
+ max_drop_level = 2,
+ groupcaps = {
+ choppy = {times={[1]=3.30, [2]=1.30, [3]=1.00}, uses=300, maxlevel=2},
+ fleshy = {times={[2]=1.60, [3]=1.00}, uses=300, maxlevel=2}
+ },
+ damage_groups = {fleshy=3},
+ },
+ pick = {
+ full_punch_interval = 0.5,
+ max_drop_level = 2,
+ groupcaps = {
+ cracky = {times={[1]=3.60, [2]=1.90, [3]=1.40}, uses=300, maxlevel=2}
+ },
+ damage_groups = {fleshy=3},
+ },
+ shovel = {
+ full_punch_interval = 0.5,
+ max_drop_level = 2,
+ groupcaps = {
+ crumbly = {times={[1]=2.70, [2]=1.45, [3]=0.85}, uses=300, maxlevel=2}
+ },
+ damage_groups = {fleshy=3},
+ }
+ }
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "desert_iron", "Desert Iron", {
+ ore = {
+ makes = true,
+ drop = "default:iron_lump",
+ texture = {
+ base = "default_desert_stone.png",
+ overlay = "default_mineral_iron.png",
+ },
+ groups = {cracky=3},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:desert_stone",
+ chunks_per_mapblock = 7*7*7,
+ chunk_size = 2,
+ max_blocks_per_chunk = 3,
+ miny = 0,
+ maxy = 10
+ },
+ },
+})
+
+glooptest.ore_module.register_ore("glooptest", "desert_coal", "Desert Coal", {
+ ore = {
+ makes = true,
+ drop = "default:coal_lump",
+ texture = {
+ base = "default_desert_stone.png",
+ overlay = "default_mineral_coal.png",
+ },
+ groups = {cracky=3},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:desert_stone",
+ chunks_per_mapblock = 6*6*6,
+ chunk_size = 3,
+ max_blocks_per_chunk = 8,
+ miny = 0,
+ maxy = 30
+ },
+ },
+})
+
+-- gems
+
+glooptest.ore_module.register_ore("glooptest", "ruby", "Ruby", {
+ ore = {
+ makes = true,
+ drop = "glooptest:ruby_gem",
+ texture = {
+ base = "default_stone.png",
+ overlay = "glooptest_mineral_ruby.png",
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 15*15*15,
+ chunk_size = 5,
+ max_blocks_per_chunk = 5,
+ miny = -3000,
+ maxy = -30
+ },
+ },
+ block = {
+ makes = true,
+ texture = "glooptest_ruby_block.png",
+ groups = {bendy=3,cracky=2,level=1},
+ sounds = stone_sounds,
+ fromingots = false
+ }
+})
+
+minetest.register_craftitem("glooptest:ruby_gem", {
+ description = "Ruby",
+ inventory_image = "glooptest_gem_ruby.png",
+ groups = {glooptest_gem=1},
+})
+minetest.register_craft({
+ output = "glooptest:rubyblock",
+ recipe = {
+ {"glooptest:ruby_gem", "glooptest:ruby_gem", "glooptest:ruby_gem"},
+ {"glooptest:ruby_gem", "glooptest:ruby_gem", "glooptest:ruby_gem"},
+ {"glooptest:ruby_gem", "glooptest:ruby_gem", "glooptest:ruby_gem"}
+ }
+})
+minetest.register_craft({
+ output = "glooptest:ruby_gem 9",
+ recipe = {
+ {"glooptest:rubyblock"}
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "sapphire", "Sapphire", {
+ ore = {
+ makes = true,
+ drop = "glooptest:sapphire_gem",
+ texture = {
+ base = "default_stone.png",
+ overlay = "glooptest_mineral_sapphire.png",
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 15*15*15,
+ chunk_size = 5,
+ max_blocks_per_chunk = 5,
+ miny = -3000,
+ maxy = -30
+ },
+ },
+ block = {
+ makes = true,
+ texture = "glooptest_sapphire_block.png",
+ groups = {bendy=3,cracky=2,level=1},
+ sounds = stone_sounds,
+ fromingots = false
+ }
+})
+
+minetest.register_craftitem("glooptest:sapphire_gem", {
+ description = "Sapphire",
+ inventory_image = "glooptest_gem_sapphire.png",
+ groups = {glooptest_gem=1},
+})
+minetest.register_craft({
+ output = "glooptest:sapphireblock",
+ recipe = {
+ {"glooptest:sapphire_gem", "glooptest:sapphire_gem", "glooptest:sapphire_gem"},
+ {"glooptest:sapphire_gem", "glooptest:sapphire_gem", "glooptest:sapphire_gem"},
+ {"glooptest:sapphire_gem", "glooptest:sapphire_gem", "glooptest:sapphire_gem"}
+ }
+})
+minetest.register_craft({
+ output = "glooptest:sapphire_gem 9",
+ recipe = {
+ {"glooptest:sapphireblock"}
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "emerald", "Emerald", {
+ ore = {
+ makes = true,
+ drop = "glooptest:emerald_gem",
+ texture = {
+ base = "default_stone.png",
+ overlay = "glooptest_mineral_emerald.png",
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 15*15*15,
+ chunk_size = 4,
+ max_blocks_per_chunk = 4,
+ miny = -5000,
+ maxy = -70
+ },
+ },
+ block = {
+ makes = true,
+ texture = "glooptest_emerald_block.png",
+ groups = {bendy=3,cracky=2,level=1},
+ sounds = stone_sounds,
+ fromingots = false
+ }
+})
+
+minetest.register_craftitem("glooptest:emerald_gem", {
+ description = "Emerald",
+ inventory_image = "glooptest_gem_emerald.png",
+ groups = {glooptest_gem=1},
+})
+minetest.register_craft({
+ output = "glooptest:emeraldblock",
+ recipe = {
+ {"glooptest:emerald_gem", "glooptest:emerald_gem", "glooptest:emerald_gem"},
+ {"glooptest:emerald_gem", "glooptest:emerald_gem", "glooptest:emerald_gem"},
+ {"glooptest:emerald_gem", "glooptest:emerald_gem", "glooptest:emerald_gem"}
+ }
+})
+minetest.register_craft({
+ output = "glooptest:emerald_gem 9",
+ recipe = {
+ {"glooptest:emeraldblock"}
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "topaz", "Topaz", {
+ ore = {
+ makes = true,
+ drop = "glooptest:topaz_gem",
+ texture = {
+ base = "default_stone.png",
+ overlay = "glooptest_mineral_topaz.png",
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 15*15*15,
+ chunk_size = 4,
+ max_blocks_per_chunk = 4,
+ miny = -5000,
+ maxy = -70
+ },
+ },
+ block = {
+ makes = true,
+ texture = "glooptest_topaz_block.png",
+ groups = {bendy=3,cracky=2,level=1},
+ sounds = stone_sounds,
+ fromingots = false
+ }
+})
+
+minetest.register_craftitem("glooptest:topaz_gem", {
+ description = "Topaz",
+ inventory_image = "glooptest_gem_topaz.png",
+ groups = {glooptest_gem=1},
+})
+minetest.register_craft({
+ output = "glooptest:topazblock",
+ recipe = {
+ {"glooptest:topaz_gem", "glooptest:topaz_gem", "glooptest:topaz_gem"},
+ {"glooptest:topaz_gem", "glooptest:topaz_gem", "glooptest:topaz_gem"},
+ {"glooptest:topaz_gem", "glooptest:topaz_gem", "glooptest:topaz_gem"}
+ }
+})
+minetest.register_craft({
+ output = "glooptest:topaz_gem 9",
+ recipe = {
+ {"glooptest:topazblock"}
+ }
+})
+
+glooptest.ore_module.register_ore("glooptest", "amethyst", "Amethyst", {
+ ore = {
+ makes = true,
+ drop = "glooptest:amethyst_gem",
+ texture = {
+ base = "default_stone.png",
+ overlay = "glooptest_mineral_amethyst.png",
+ },
+ groups = {cracky=1},
+ sounds = stone_sounds,
+ generate = {
+ generate_inside_of = "default:stone",
+ chunks_per_mapblock = 15*15*15,
+ chunk_size = 3,
+ max_blocks_per_chunk = 3,
+ miny = -31000,
+ maxy = -128
+ },
+ },
+ block = {
+ makes = true,
+ texture = "glooptest_amethyst_block.png",
+ groups = {bendy=3,cracky=2,level=1},
+ sounds = stone_sounds,
+ fromingots = false
+ }
+})
+
+minetest.register_craftitem("glooptest:amethyst_gem", {
+ description = "Amethyst",
+ inventory_image = "glooptest_gem_amethyst.png",
+ groups = {glooptest_gem=1},
+})
+minetest.register_craft({
+ output = "glooptest:amethystblock",
+ recipe = {
+ {"glooptest:amethyst_gem", "glooptest:amethyst_gem", "glooptest:amethyst_gem"},
+ {"glooptest:amethyst_gem", "glooptest:amethyst_gem", "glooptest:amethyst_gem"},
+ {"glooptest:amethyst_gem", "glooptest:amethyst_gem", "glooptest:amethyst_gem"}
+ }
+})
+minetest.register_craft({
+ output = "glooptest:amethyst_gem 9",
+ recipe = {
+ {"glooptest:amethystblock"}
+ }
+})
diff --git a/glooptest/glooptest/othergen_module/init.lua b/glooptest/glooptest/othergen_module/init.lua
new file mode 100644
index 0000000..77a6e66
--- /dev/null
+++ b/glooptest/glooptest/othergen_module/init.lua
@@ -0,0 +1,374 @@
+glooptest.extragen_module = {}
+glooptest.extragen_module.treasure={}
+glooptest.debug("MESSAGE","Loading Extragen Module Now!")
+
+-- {item name, max stack size, item rarity}
+glooptest.extragen_module.treasure[1] = {
+ {"default:stick", 30, 1},
+ {"default:wood", 10, 1},
+ {"default:tree", 5, 2},
+ {"default:jungletree", 3, 6},
+ {"default:cobble", 10, 2},
+ {"default:pick_wood", 1, 12},
+ {"default:shovel_wood", 1, 12},
+ {"default:sword_wood", 1, 12},
+ {"default:axe_wood", 1, 12},
+ {"default:pick_stone", 1, 24},
+ {"default:shovel_stone", 1, 24},
+ {"default:sword_stone", 1, 24},
+ {"default:axe_stone", 1, 24},
+ {"default:furnace", 1, 8},
+}
+
+glooptest.extragen_module.treasure[2] = {
+ {"default:stick", 40, 1},
+ {"default:cobble", 30, 1},
+ {"default:glass", 20, 4},
+ {"default:stone", 15, 2},
+ {"default:desert_stone", 15, 5},
+ {"default:coal_lump", 15, 6},
+ {"default:steel_ingot", 2, 8},
+ {"default:obsidian_shard", 1, 10},
+ {"default:pick_stone", 1, 12},
+ {"default:shovel_stone", 1, 12},
+ {"default:sword_stone", 1, 12},
+ {"default:axe_stone", 1, 12},
+}
+
+glooptest.extragen_module.treasure[3] = {
+ {"default:cobble", 40, 1},
+ {"default:stick", 20, 3},
+ {"default:torch", 15, 3},
+ {"default:coal_lump", 20, 4},
+ {"default:iron_lump", 10, 7},
+ {"default:copper_lump", 10, 7},
+ {"default:obsidian_shard", 5, 24},
+ {"default:mese_crystal_fragment", 3, 24},
+ {"default:pick_bronze", 1, 12},
+ {"default:shovel_bronze", 1, 12},
+ {"default:sword_bronze", 1, 12},
+ {"default:axe_bronze", 1, 12},
+}
+
+glooptest.extragen_module.treasure[4] = {
+ {"default:torch", 50, 3},
+ {"default:coal_lump", 30, 3},
+ {"default:iron_lump", 20, 5},
+ {"default:gold_lump", 5, 16},
+ {"default:mese_crystal_fragment", 5, 10},
+ {"default:mese_crystal", 1, 25},
+ {"default:diamond", 1, 100},
+ {"default:pick_mese", 1, 18},
+ {"default:shovel_mese", 1, 18},
+ {"default:sword_mese", 1, 18},
+ {"default:axe_mese", 1, 18},
+}
+
+glooptest.extragen_module.treasure[5] = {
+ {"default:torch", 70, 3},
+ {"default:iron_lump", 30, 3},
+ {"default:gold_lump", 8, 15},
+ {"default:mese_crystal_fragment", 15, 10},
+ {"default:mese_crystal", 1, 17},
+ {"default:diamond", 1, 24},
+ {"default:pick_mese", 1, 12},
+ {"default:shovel_mese", 1, 12},
+ {"default:sword_mese", 1, 12},
+ {"default:axe_mese", 1, 12},
+ {"default:pick_diamond", 1, 60},
+ {"default:shovel_diamond", 1, 60},
+ {"default:sword_diamond", 1, 60},
+ {"default:axe_diamond", 1, 60},
+}
+
+local treasure_chest_formspec =
+ "size[8,9]"..
+ "list[current_name;main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]"
+
+local treasure_chest_nodebox = {
+ {-7/16, -8/16, -7/16, 7/16, 6/16, 7/16},
+ {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16},
+ {-8/16, 1/16, -8/16, 8/16, 3/16, 8/16},
+}
+
+local function treasure_chest_populate(rank, pos)
+ for i = 1,32 do
+ for _ = 1,math.random(1,2) do
+ item = glooptest.extragen_module.treasure[rank][math.random(1, #glooptest.extragen_module.treasure[rank])]
+ item_rarity = item[3]
+ if math.random(1, item_rarity+math.random(1,3)) == 1 then
+ item_name = item[1]
+ item_stacksize = item[2]-math.random(0,item[2]-1)
+ minetest.get_inventory({type="node",pos={x=pos.x,y=pos.y,z=pos.z}}):set_stack("main", i, ItemStack({name=item_name,count=item_stacksize}))
+ break
+ else
+ end
+ end
+ end
+end
+
+function glooptest.extragen_module.register_chest_loot(rank, entry)
+ if minetest.registered_items[entry[1]] ~= nil then
+ table.insert(glooptest.extragen_module.treasure[rank], entry)
+ end
+end
+
+glooptest.extragen_module.register_chest_loot(1, {"glooptest:handsaw_wood", 1, 12})
+glooptest.extragen_module.register_chest_loot(1, {"glooptest:hammer_wood", 1, 12})
+glooptest.extragen_module.register_chest_loot(1, {"glooptest:handsaw_stone", 1, 24})
+glooptest.extragen_module.register_chest_loot(1, {"glooptest:hammer_stone", 1, 24})
+
+glooptest.extragen_module.register_chest_loot(2, {"glooptest:handsaw_stone", 1, 12})
+glooptest.extragen_module.register_chest_loot(2, {"glooptest:hammer_stone", 1, 12})
+
+glooptest.extragen_module.register_chest_loot(3, {"glooptest:handsaw_bronze", 1, 12})
+glooptest.extragen_module.register_chest_loot(3, {"glooptest:hammer_bronze", 1, 12})
+
+glooptest.extragen_module.register_chest_loot(4, {"glooptest:handsaw_mese", 1, 18})
+glooptest.extragen_module.register_chest_loot(4, {"glooptest:hammer_mese", 1, 18})
+
+glooptest.extragen_module.register_chest_loot(5, {"glooptest:handsaw_mese", 1, 12})
+glooptest.extragen_module.register_chest_loot(5, {"glooptest:hammer_mese", 1, 12})
+glooptest.extragen_module.register_chest_loot(5, {"glooptest:handsaw_diamond", 1, 60})
+glooptest.extragen_module.register_chest_loot(5, {"glooptest:hammer_diamond", 1, 60})
+
+minetest.register_node("glooptest:treasure_chest_1", {
+ description = "Treasure Chest Rank 1",
+ drawtype = "nodebox",
+ tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = treasure_chest_nodebox,
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",treasure_chest_formspec)
+ meta:set_string("infotext", "Treasure Chest Rank I")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 32)
+ treasure_chest_populate(1, pos)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." takes items from R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+})
+
+minetest.register_node("glooptest:treasure_chest_2", {
+ description = "Treasure Chest Rank 2",
+ drawtype = "nodebox",
+ tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = treasure_chest_nodebox,
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",treasure_chest_formspec)
+ meta:set_string("infotext", "Treasure Chest Rank II")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 32)
+ treasure_chest_populate(2, pos)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." takes items from R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+})
+
+minetest.register_node("glooptest:treasure_chest_3", {
+ description = "Treasure Chest Rank 3",
+ drawtype = "nodebox",
+ tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = treasure_chest_nodebox,
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",treasure_chest_formspec)
+ meta:set_string("infotext", "Treasure Chest Rank III")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 32)
+ treasure_chest_populate(3, pos)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." takes items from R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+})
+
+minetest.register_node("glooptest:treasure_chest_4", {
+ description = "Treasure Chest Rank 4",
+ drawtype = "nodebox",
+ tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = treasure_chest_nodebox,
+ },
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",treasure_chest_formspec)
+ meta:set_string("infotext", "Treasure Chest Rank IV")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 32)
+ treasure_chest_populate(4, pos)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." takes items from R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+})
+
+minetest.register_node("glooptest:treasure_chest_5", {
+ description = "Treasure Chest Rank 5",
+ drawtype = "nodebox",
+ tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = treasure_chest_nodebox,
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",treasure_chest_formspec)
+ meta:set_string("infotext", "Treasure Chest Rank V")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 32)
+ treasure_chest_populate(5, pos)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." moves items in R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ glooptest.debug("ACTION", player:get_player_name().." takes items from R1 treasure chest at "..minetest.pos_to_string(pos)..".")
+ end,
+})
+
+minetest.register_on_generated(function(minp, maxp)
+ coords = {}
+ coords.x = {}
+ coords.y = {}
+ coords.z = {}
+ for i = minp.x,maxp.x do
+ table.insert(coords.x, i)
+ end
+ for i = minp.y,maxp.y do
+ table.insert(coords.y, i)
+ end
+ for i = minp.z,maxp.z do
+ table.insert(coords.z, i)
+ end
+ for x = 1,#coords.x do
+ for y = 1,#coords.y do
+ for z = 1,#coords.z do
+ if minetest.get_node({x=coords.x[x],y=coords.y[y]+1,z=coords.z[z]}).name == "air" and minetest.get_node({x=coords.x[x],y=coords.y[y],z=coords.z[z]}).name ~= "air" and minetest.registered_nodes[minetest.get_node({x=coords.x[x],y=coords.y[y],z=coords.z[z]}).name].drawtype == "normal" then
+ if coords.y[y] >=0 then
+ if math.random(1,5000) == 1 then
+ minetest.place_node({x=coords.x[x],y=coords.y[y]+1,z=coords.z[z]}, {name="glooptest:treasure_chest_1", param2=math.random(1,4)})
+ elseif math.random(1,8000) == 1 then
+ minetest.place_node({x=coords.x[x],y=coords.y[y]+1,z=coords.z[z]}, {name="glooptest:treasure_chest_2", param2=math.random(1,4)})
+ end
+ elseif coords.y[y] <=-30 then
+ if math.random(1,1000) == 1 then
+ minetest.place_node({x=coords.x[x],y=coords.y[y]+1,z=coords.z[z]}, {name="glooptest:treasure_chest_3", param2=math.random(1,4)})
+ elseif coords.y[y] <=-1000 then
+ if math.random(1,1300) == 1 then
+ minetest.place_node({x=coords.x[x],y=coords.y[y]+1,z=coords.z[z]}, {name="glooptest:treasure_chest_4", param2=math.random(1,4)})
+ elseif coords.y[y] <=-2500 then
+ if math.random(1,2000) == 1 then
+ minetest.place_node({x=coords.x[x],y=coords.y[y]+1,z=coords.z[z]}, {name="glooptest:treasure_chest_5", param2=math.random(1,4)})
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end)
+
+--minetest.register_on_generated(glooptest.extragen_module.spawn_chests(minp, maxp)) \ No newline at end of file
diff --git a/glooptest/glooptest/parts_module/init.lua b/glooptest/glooptest/parts_module/init.lua
new file mode 100644
index 0000000..b1a9202
--- /dev/null
+++ b/glooptest/glooptest/parts_module/init.lua
@@ -0,0 +1,174 @@
+glooptest.parts_module = {}
+glooptest.debug("MESSAGE","Loading Parts Module Now!")
+
+minetest.register_craftitem("glooptest:chainlink", {
+ description = "Chainlink",
+ inventory_image = "glooptest_chainlink.png"
+})
+
+minetest.register_craft({
+ output = "glooptest:chainlink 8",
+ recipe = {
+ {"", "default:steel_ingot", ""},
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ {"", "default:steel_ingot", ""}
+ }
+})
+
+minetest.register_node("glooptest:crystal_glass", {
+ description = "Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_crystal_glass.png"},
+ inventory_image = minetest.inventorycube("glooptest_crystal_glass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_craft({
+ output = "glooptest:crystal_glass 4",
+ recipe = {
+ {"default:glass", "default:desert_stone"},
+ {"default:desert_stone", "default:glass"},
+ }
+})
+
+minetest.register_craft({
+ output = "glooptest:crystal_glass 4",
+ recipe = {
+ {"default:desert_stone", "default:glass"},
+ {"default:glass", "default:desert_stone"},
+ }
+})
+
+minetest.register_node("glooptest:reinforced_crystal_glass", {
+ description = "Steel-Reinforced Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_reinforced_crystal_glass.png"},
+ inventory_image = minetest.inventorycube("glooptest_reinforced_crystal_glass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_craft({
+ output = "glooptest:reinforced_crystal_glass 8",
+ recipe = {
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "default:steel_ingot", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"}
+ }
+})
+
+if LOAD_ORE_MODULE == true then
+
+ minetest.register_node("glooptest:akalin_crystal_glass", {
+ description = "Akalin-Reinforced Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_akalin_crystal_glass.png"},
+ inventory_image = minetest.inventorycube("glooptest_akalin_crystal_glass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ })
+
+ minetest.register_craft({
+ output = "glooptest:akalin_crystal_glass 8",
+ recipe = {
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:akalin_ingot", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"}
+ }
+ })
+
+ minetest.register_node("glooptest:heavy_crystal_glass", {
+ description = "Heavily Reinforced Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_reinforced_akalin_crystal_glass.png"},
+ inventory_image = minetest.inventorycube("glooptest_reinforced_akalin_crystal_glass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_glass_defaults(),
+ })
+
+ minetest.register_craft({
+ output = "glooptest:heavy_crystal_glass 4",
+ recipe = {
+ {"glooptest:reinforced_crystal_glass", "glooptest:akalin_crystal_glass"},
+ {"glooptest:akalin_crystal_glass", "glooptest:reinforced_crystal_glass"},
+ }
+ })
+
+ minetest.register_craft({
+ output = "glooptest:heavy_crystal_glass 4",
+ recipe = {
+ {"glooptest:akalin_crystal_glass", "glooptest:reinforced_crystal_glass"},
+ {"glooptest:reinforced_crystal_glass", "glooptest:akalin_crystal_glass"},
+ }
+ })
+
+ minetest.register_node("glooptest:alatro_crystal_glass", {
+ description = "Alatro-Reinforced Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_alatro_crystal_glass.png"},
+ use_texture_alpha = true,
+ inventory_image = minetest.inventorycube("glooptest_alatro_crystal_glass.png"),
+ paramtype = "light",
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ })
+
+ minetest.register_craft({
+ output = "glooptest:alatro_crystal_glass 8",
+ recipe = {
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:alatro_ingot", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"}
+ }
+ })
+
+ minetest.register_node("glooptest:arol_crystal_glass", {
+ description = "Arol-Reinforced Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_arol_crystal_glass.png"},
+ inventory_image = minetest.inventorycube("glooptest_arol_crystal_glass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_glass_defaults(),
+ })
+
+ minetest.register_craft({
+ output = "glooptest:arol_crystal_glass 8",
+ recipe = {
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:arol_ingot", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"}
+ }
+ })
+
+ minetest.register_node("glooptest:talinite_crystal_glass", {
+ description = "Talinite-Reinforced Crystal Glass",
+ drawtype = "allfaces",
+ tiles = {"glooptest_talinite_crystal_glass.png"},
+ inventory_image = minetest.inventorycube("glooptest_talinite_crystal_glass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 14,
+ groups = {cracky=2},
+ sounds = default.node_sound_glass_defaults(),
+ })
+
+ minetest.register_craft({
+ output = "glooptest:talinite_crystal_glass 8",
+ recipe = {
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:talinite_ingot", "glooptest:crystal_glass"},
+ {"glooptest:crystal_glass", "glooptest:crystal_glass", "glooptest:crystal_glass"}
+ }
+ })
+end \ No newline at end of file
diff --git a/glooptest/glooptest/tech_module/init.lua b/glooptest/glooptest/tech_module/init.lua
new file mode 100644
index 0000000..0ea1520
--- /dev/null
+++ b/glooptest/glooptest/tech_module/init.lua
@@ -0,0 +1,87 @@
+glooptest.tech_module = {}
+glooptest.debug("MESSAGE","Loading Tech Module Now!")
+
+--dofile(minetest.get_modpath("glooptest").."/tech_module/api.lua")
+
+local fixed = {
+ { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }, -- base
+ { -8/16, 3/16, -8/16, 8/16, 8/16, 8/16 }, -- top
+ { 3/16, -7/16, 3/16, 7/16, 7/16, 7/16 },
+ { 3/16, -7/16, -7/16, 7/16, 7/16, -3/16 },
+ { -7/16, -7/16, 3/16, -3/16, 7/16, 7/16 },
+ { -7/16, -7/16, -7/16, -3/16, 7/16, -3/16 },
+}
+
+-- {used item, produced node}
+glooptest.tech_module.table_changers = {
+ {},
+}
+
+function glooptest.tech_module.register_table(used_item, produced_node)
+ if minetest.registered_items[used_item] ~= nil and minetest.registered_items[produced_node] ~= nil then
+ table.insert(glooptest.tech_module.table_changers, {item = used_item, node = produced_node})
+ end
+end
+
+minetest.register_alias("glooptest:table", "glooptest:wooden_table")
+minetest.register_node("glooptest:wooden_table", {
+ description = "Wooden Table",
+ drawtype = "nodebox",
+ tiles = {"glooptest_table_tb.png","glooptest_table_tb.png","glooptest_table_side.png"},
+ paramtype = "light",
+ groups = {choppy=3, snappy=3},
+ node_box = {
+ type = "fixed",
+ fixed = fixed,
+ },
+ --[[
+ on_rightclick = function(pos, node, clicker, itemstack)
+ local clicking_item = itemstack
+ for ind,content in glooptest.tech_module.table_changers do
+ if content.item == clicking_item:get_name() then
+ minetest.place_node(pos, {name=content.node})
+ return ItemStack(clicking_item:get_name().." "..tostring(clicking_item:get_count()-1))
+ end
+ end
+ end,
+ --]]
+})
+
+minetest.register_craft({
+ output = "glooptest:table",
+ recipe = {
+ {"group:wood","group:wood","group:wood"},
+ {"default:stick","","default:stick"},
+ {"group:wood","","group:wood"},
+ }
+})
+
+minetest.register_craftitem("glooptest:upgrade_core", {
+ description = "Upgrade Core",
+ inventory_image = "glooptest_upgrade_core.png",
+})
+
+minetest.register_craft({
+ output = "glooptest:upgrade_core",
+ recipe = {
+ {"glooptest:akalin_ingot", "glooptest:crystal_glass", "glooptest:akalin_ingot"},
+ {"glooptest:crystal_glass", "default:mese_crystal_fragment", "glooptest:crystal_glass"},
+ {"glooptest:akalin_ingot", "glooptest:crystal_glass", "glooptest:akalin_ingot"},
+ },
+})
+
+if LOAD_ORE_MODULE == true then
+ minetest.register_craftitem("glooptest:encrusting_upgrade", {
+ description = "Encrusting Upgrade",
+ inventory_image = "glooptest_encrusting_upgrade.png",
+ })
+
+ minetest.register_craft({
+ output = "glooptest:encrusting_upgrade",
+ recipe = {
+ {"group:glooptest_gem", "group:glooptest_gem", "group:glooptest_gem"},
+ {"glooptest:hammer_steel", "glooptest:upgrade_core", "glooptest:handsaw_steel"},
+ {"group:glooptest_gem", "group:glooptest_gem", "group:glooptest_gem"},
+ },
+ })
+end
diff --git a/glooptest/glooptest/textures/gloopores_akalin_block.png b/glooptest/glooptest/textures/gloopores_akalin_block.png
new file mode 100644
index 0000000..132c238
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_akalin_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_akalin_ingot.png b/glooptest/glooptest/textures/gloopores_akalin_ingot.png
new file mode 100644
index 0000000..ac04aa4
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_akalin_ingot.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_akalin_lump.png b/glooptest/glooptest/textures/gloopores_akalin_lump.png
new file mode 100644
index 0000000..560fb68
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_akalin_lump.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_alatro_block.png b/glooptest/glooptest/textures/gloopores_alatro_block.png
new file mode 100644
index 0000000..bced3af
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_alatro_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_alatro_ingot.png b/glooptest/glooptest/textures/gloopores_alatro_ingot.png
new file mode 100644
index 0000000..2f05cc7
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_alatro_ingot.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_alatro_lump.png b/glooptest/glooptest/textures/gloopores_alatro_lump.png
new file mode 100644
index 0000000..b36b64f
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_alatro_lump.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_arol_ingot.png b/glooptest/glooptest/textures/gloopores_arol_ingot.png
new file mode 100644
index 0000000..057054c
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_arol_ingot.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_arol_lump.png b/glooptest/glooptest/textures/gloopores_arol_lump.png
new file mode 100644
index 0000000..d36a52a
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_arol_lump.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_kalite_lump.png b/glooptest/glooptest/textures/gloopores_kalite_lump.png
new file mode 100644
index 0000000..449da9e
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_kalite_lump.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_kalite_torch_animated.png b/glooptest/glooptest/textures/gloopores_kalite_torch_animated.png
new file mode 100644
index 0000000..ac92390
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_kalite_torch_animated.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_kalite_torch_on_ceiling_animated.png b/glooptest/glooptest/textures/gloopores_kalite_torch_on_ceiling_animated.png
new file mode 100644
index 0000000..4e503a0
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_kalite_torch_on_ceiling_animated.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_kalite_torch_on_floor.png b/glooptest/glooptest/textures/gloopores_kalite_torch_on_floor.png
new file mode 100644
index 0000000..6b769d4
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_kalite_torch_on_floor.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_kalite_torch_on_floor_animated.png b/glooptest/glooptest/textures/gloopores_kalite_torch_on_floor_animated.png
new file mode 100644
index 0000000..3936ed2
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_kalite_torch_on_floor_animated.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_mineral_akalin.png b/glooptest/glooptest/textures/gloopores_mineral_akalin.png
new file mode 100644
index 0000000..8abf849
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_mineral_akalin.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_mineral_alatro.png b/glooptest/glooptest/textures/gloopores_mineral_alatro.png
new file mode 100644
index 0000000..3e7b821
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_mineral_alatro.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_mineral_arol.png b/glooptest/glooptest/textures/gloopores_mineral_arol.png
new file mode 100644
index 0000000..0fb7d18
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_mineral_arol.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_mineral_kalite.png b/glooptest/glooptest/textures/gloopores_mineral_kalite.png
new file mode 100644
index 0000000..04a2d18
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_mineral_kalite.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_mineral_talinite.png b/glooptest/glooptest/textures/gloopores_mineral_talinite.png
new file mode 100644
index 0000000..3241221
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_mineral_talinite.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_talinite_block.png b/glooptest/glooptest/textures/gloopores_talinite_block.png
new file mode 100644
index 0000000..83f4b8e
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_talinite_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_talinite_ingot.png b/glooptest/glooptest/textures/gloopores_talinite_ingot.png
new file mode 100644
index 0000000..7320f48
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_talinite_ingot.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_talinite_lump.png b/glooptest/glooptest/textures/gloopores_talinite_lump.png
new file mode 100644
index 0000000..0caa8ed
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_talinite_lump.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_alatroaxe.png b/glooptest/glooptest/textures/gloopores_tool_alatroaxe.png
new file mode 100644
index 0000000..77a3e4a
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_alatroaxe.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_alatropick.png b/glooptest/glooptest/textures/gloopores_tool_alatropick.png
new file mode 100644
index 0000000..68de88f
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_alatropick.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_alatroshovel.png b/glooptest/glooptest/textures/gloopores_tool_alatroshovel.png
new file mode 100644
index 0000000..839f3d1
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_alatroshovel.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_alatrosword.png b/glooptest/glooptest/textures/gloopores_tool_alatrosword.png
new file mode 100644
index 0000000..f6c0c36
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_alatrosword.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_arolaxe.png b/glooptest/glooptest/textures/gloopores_tool_arolaxe.png
new file mode 100644
index 0000000..9696e01
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_arolaxe.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_arolpick.png b/glooptest/glooptest/textures/gloopores_tool_arolpick.png
new file mode 100644
index 0000000..4eb6e91
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_arolpick.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_arolshovel.png b/glooptest/glooptest/textures/gloopores_tool_arolshovel.png
new file mode 100644
index 0000000..d241fae
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_arolshovel.png
Binary files differ
diff --git a/glooptest/glooptest/textures/gloopores_tool_arolsword.png b/glooptest/glooptest/textures/gloopores_tool_arolsword.png
new file mode 100644
index 0000000..e1417c1
--- /dev/null
+++ b/glooptest/glooptest/textures/gloopores_tool_arolsword.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_akalin_crystal_glass.png b/glooptest/glooptest/textures/glooptest_akalin_crystal_glass.png
new file mode 100644
index 0000000..08190e3
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_akalin_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_alatro_crystal_glass.png b/glooptest/glooptest/textures/glooptest_alatro_crystal_glass.png
new file mode 100644
index 0000000..7c924b2
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_alatro_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_amethyst_block.png b/glooptest/glooptest/textures/glooptest_amethyst_block.png
new file mode 100644
index 0000000..80a38bd
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_amethyst_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_arol_crystal_glass.png b/glooptest/glooptest/textures/glooptest_arol_crystal_glass.png
new file mode 100644
index 0000000..5e41dc0
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_arol_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_chainlink.png b/glooptest/glooptest/textures/glooptest_chainlink.png
new file mode 100644
index 0000000..d7132c3
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_chainlink.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_compressed_kalite.png b/glooptest/glooptest/textures/glooptest_compressed_kalite.png
new file mode 100644
index 0000000..8645ea7
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_compressed_kalite.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_crystal_glass.png b/glooptest/glooptest/textures/glooptest_crystal_glass.png
new file mode 100644
index 0000000..875f12e
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_emerald_block.png b/glooptest/glooptest/textures/glooptest_emerald_block.png
new file mode 100644
index 0000000..c037f4f
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_emerald_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_encrusting_upgrade.png b/glooptest/glooptest/textures/glooptest_encrusting_upgrade.png
new file mode 100644
index 0000000..8d9edf0
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_encrusting_upgrade.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gem_amethyst.png b/glooptest/glooptest/textures/glooptest_gem_amethyst.png
new file mode 100644
index 0000000..a47014e
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gem_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gem_emerald.png b/glooptest/glooptest/textures/glooptest_gem_emerald.png
new file mode 100644
index 0000000..5bee941
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gem_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gem_ruby.png b/glooptest/glooptest/textures/glooptest_gem_ruby.png
new file mode 100644
index 0000000..a96c983
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gem_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gem_sapphire.png b/glooptest/glooptest/textures/glooptest_gem_sapphire.png
new file mode 100644
index 0000000..c5af51d
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gem_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gem_topaz.png b/glooptest/glooptest/textures/glooptest_gem_topaz.png
new file mode 100644
index 0000000..d2fbd45
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gem_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_axe_amethyst.png b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_amethyst.png
new file mode 100644
index 0000000..bf783f2
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_axe_diamond.png b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_diamond.png
new file mode 100644
index 0000000..e29d997
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_diamond.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_axe_emerald.png b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_emerald.png
new file mode 100644
index 0000000..a85c77a
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_axe_ruby.png b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_ruby.png
new file mode 100644
index 0000000..d4c4c13
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_axe_sapphire.png b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_sapphire.png
new file mode 100644
index 0000000..e1090ca
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_axe_topaz.png b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_topaz.png
new file mode 100644
index 0000000..8154b02
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_axe_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_amethyst.png b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_amethyst.png
new file mode 100644
index 0000000..c8ac4a6
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_diamond.png b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_diamond.png
new file mode 100644
index 0000000..7c20cec
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_diamond.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_emerald.png b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_emerald.png
new file mode 100644
index 0000000..5b515ee
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_ruby.png b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_ruby.png
new file mode 100644
index 0000000..64997bd
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_sapphire.png b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_sapphire.png
new file mode 100644
index 0000000..b21a2ab
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_topaz.png b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_topaz.png
new file mode 100644
index 0000000..a3e7c81
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_hammer_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_amethyst.png b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_amethyst.png
new file mode 100644
index 0000000..4438178
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_diamond.png b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_diamond.png
new file mode 100644
index 0000000..5e9734a
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_diamond.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_emerald.png b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_emerald.png
new file mode 100644
index 0000000..1ad2f79
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_ruby.png b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_ruby.png
new file mode 100644
index 0000000..76fe073
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_sapphire.png b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_sapphire.png
new file mode 100644
index 0000000..5df287b
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_topaz.png b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_topaz.png
new file mode 100644
index 0000000..7edfb1f
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_handsaw_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_pick_amethyst.png b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_amethyst.png
new file mode 100644
index 0000000..72af906
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_pick_diamond.png b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_diamond.png
new file mode 100644
index 0000000..d2bbe81
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_diamond.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_pick_emerald.png b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_emerald.png
new file mode 100644
index 0000000..8cea97d
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_pick_ruby.png b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_ruby.png
new file mode 100644
index 0000000..71e75ef
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_pick_sapphire.png b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_sapphire.png
new file mode 100644
index 0000000..7d208a0
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_pick_topaz.png b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_topaz.png
new file mode 100644
index 0000000..490afe9
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_pick_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_amethyst.png b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_amethyst.png
new file mode 100644
index 0000000..e2551cc
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_diamond.png b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_diamond.png
new file mode 100644
index 0000000..0570685
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_diamond.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_emerald.png b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_emerald.png
new file mode 100644
index 0000000..0d21a75
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_ruby.png b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_ruby.png
new file mode 100644
index 0000000..0c7e1b1
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_sapphire.png b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_sapphire.png
new file mode 100644
index 0000000..44a11ef
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_topaz.png b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_topaz.png
new file mode 100644
index 0000000..fb10f97
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_shovel_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_sword_amethyst.png b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_amethyst.png
new file mode 100644
index 0000000..d3e24b8
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_sword_diamond.png b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_diamond.png
new file mode 100644
index 0000000..5af07fc
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_diamond.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_sword_emerald.png b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_emerald.png
new file mode 100644
index 0000000..5093d1f
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_sword_ruby.png b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_ruby.png
new file mode 100644
index 0000000..8ee9d0a
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_sword_sapphire.png b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_sapphire.png
new file mode 100644
index 0000000..b86c087
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_gemoverlay_sword_topaz.png b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_topaz.png
new file mode 100644
index 0000000..3eb0ab4
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_gemoverlay_sword_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_mineral_amethyst.png b/glooptest/glooptest/textures/glooptest_mineral_amethyst.png
new file mode 100644
index 0000000..eba5d3c
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_mineral_amethyst.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_mineral_emerald.png b/glooptest/glooptest/textures/glooptest_mineral_emerald.png
new file mode 100644
index 0000000..c70f3ee
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_mineral_emerald.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_mineral_ruby.png b/glooptest/glooptest/textures/glooptest_mineral_ruby.png
new file mode 100644
index 0000000..e4fffe3
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_mineral_ruby.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_mineral_sapphire.png b/glooptest/glooptest/textures/glooptest_mineral_sapphire.png
new file mode 100644
index 0000000..3c27349
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_mineral_sapphire.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_mineral_topaz.png b/glooptest/glooptest/textures/glooptest_mineral_topaz.png
new file mode 100644
index 0000000..6d7c799
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_mineral_topaz.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_reinforced_akalin_crystal_glass.png b/glooptest/glooptest/textures/glooptest_reinforced_akalin_crystal_glass.png
new file mode 100644
index 0000000..53f3acd
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_reinforced_akalin_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_reinforced_crystal_glass.png b/glooptest/glooptest/textures/glooptest_reinforced_crystal_glass.png
new file mode 100644
index 0000000..2fc4f2d
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_reinforced_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_ruby_block.png b/glooptest/glooptest/textures/glooptest_ruby_block.png
new file mode 100644
index 0000000..7d738ff
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_ruby_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_sapphire_block.png b/glooptest/glooptest/textures/glooptest_sapphire_block.png
new file mode 100644
index 0000000..fce9640
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_sapphire_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_table_side.png b/glooptest/glooptest/textures/glooptest_table_side.png
new file mode 100644
index 0000000..e7d1bfa
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_table_side.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_table_tb.png b/glooptest/glooptest/textures/glooptest_table_tb.png
new file mode 100644
index 0000000..f17f42e
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_table_tb.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_talinite_crystal_glass.png b/glooptest/glooptest/textures/glooptest_talinite_crystal_glass.png
new file mode 100644
index 0000000..1e22c10
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_talinite_crystal_glass.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_alatrohammer.png b/glooptest/glooptest/textures/glooptest_tool_alatrohammer.png
new file mode 100644
index 0000000..9216907
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_alatrohammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_alatrohandsaw.png b/glooptest/glooptest/textures/glooptest_tool_alatrohandsaw.png
new file mode 100644
index 0000000..efb6878
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_alatrohandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_arolhammer.png b/glooptest/glooptest/textures/glooptest_tool_arolhammer.png
new file mode 100644
index 0000000..8df8dac
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_arolhammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_arolhandsaw.png b/glooptest/glooptest/textures/glooptest_tool_arolhandsaw.png
new file mode 100644
index 0000000..2cee8e4
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_arolhandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_bronzehammer.png b/glooptest/glooptest/textures/glooptest_tool_bronzehammer.png
new file mode 100644
index 0000000..f2a6f7a
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_bronzehammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_bronzehandsaw.png b/glooptest/glooptest/textures/glooptest_tool_bronzehandsaw.png
new file mode 100644
index 0000000..3202136
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_bronzehandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_diamondhammer.png b/glooptest/glooptest/textures/glooptest_tool_diamondhammer.png
new file mode 100644
index 0000000..2f49159
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_diamondhammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_diamondhandsaw.png b/glooptest/glooptest/textures/glooptest_tool_diamondhandsaw.png
new file mode 100644
index 0000000..d5e5dac
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_diamondhandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_goldhammer.png b/glooptest/glooptest/textures/glooptest_tool_goldhammer.png
new file mode 100644
index 0000000..e5064d5
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_goldhammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_goldhandsaw.png b/glooptest/glooptest/textures/glooptest_tool_goldhandsaw.png
new file mode 100644
index 0000000..e2c4b01
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_goldhandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_mesehammer.png b/glooptest/glooptest/textures/glooptest_tool_mesehammer.png
new file mode 100644
index 0000000..e250e2d
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_mesehammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_mesehandsaw.png b/glooptest/glooptest/textures/glooptest_tool_mesehandsaw.png
new file mode 100644
index 0000000..4ee35b8
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_mesehandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_silverhammer.png b/glooptest/glooptest/textures/glooptest_tool_silverhammer.png
new file mode 100644
index 0000000..d0687bf
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_silverhammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_silverhandsaw.png b/glooptest/glooptest/textures/glooptest_tool_silverhandsaw.png
new file mode 100644
index 0000000..c1aa2a2
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_silverhandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_steelhammer.png b/glooptest/glooptest/textures/glooptest_tool_steelhammer.png
new file mode 100644
index 0000000..b662a71
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_steelhammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_steelhandsaw.png b/glooptest/glooptest/textures/glooptest_tool_steelhandsaw.png
new file mode 100644
index 0000000..4a9b79c
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_steelhandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_stonehammer.png b/glooptest/glooptest/textures/glooptest_tool_stonehammer.png
new file mode 100644
index 0000000..0a4ea98
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_stonehammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_stonehandsaw.png b/glooptest/glooptest/textures/glooptest_tool_stonehandsaw.png
new file mode 100644
index 0000000..7b85559
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_stonehandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_woodhammer.png b/glooptest/glooptest/textures/glooptest_tool_woodhammer.png
new file mode 100644
index 0000000..8ae9df0
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_woodhammer.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_tool_woodhandsaw.png b/glooptest/glooptest/textures/glooptest_tool_woodhandsaw.png
new file mode 100644
index 0000000..493b48b
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_tool_woodhandsaw.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_topaz_block.png b/glooptest/glooptest/textures/glooptest_topaz_block.png
new file mode 100644
index 0000000..bf3c839
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_topaz_block.png
Binary files differ
diff --git a/glooptest/glooptest/textures/glooptest_upgrade_core.png b/glooptest/glooptest/textures/glooptest_upgrade_core.png
new file mode 100644
index 0000000..2a517f4
--- /dev/null
+++ b/glooptest/glooptest/textures/glooptest_upgrade_core.png
Binary files differ
diff --git a/glooptest/glooptest/tools_module/api.lua b/glooptest/glooptest/tools_module/api.lua
new file mode 100644
index 0000000..5db65f9
--- /dev/null
+++ b/glooptest/glooptest/tools_module/api.lua
@@ -0,0 +1,98 @@
+function glooptest.tools_module.set_tool_recipe(modname,type,material,name)
+ if type == "sword" then
+ minetest.register_craft({
+ recipe = {{material},{material},{"default:stick"}},
+ output = modname..":sword_"..name,
+ })
+ end
+ if type == "axe" then
+ minetest.register_craft({
+ recipe = {{material, material}, {material, "default:stick"}, {"","default:stick"}},
+ output = modname..":axe_"..name,
+ })
+ minetest.register_craft({
+ recipe = {{material, material}, {"default:stick", material}, {"default:stick", ""}},
+ output = modname..":axe_"..name,
+ })
+ end
+ if type == "pick" or type == "pickaxe" then
+ minetest.register_craft({
+ recipe = {{material, material, material}, {"","default:stick",""}, {"","default:stick",""}},
+ output = modname..":pick_"..name,
+ })
+ end
+ if type == "shovel" then
+ minetest.register_craft({
+ recipe = {{material},{"default:stick"},{"default:stick"}},
+ output = modname..":shovel_"..name,
+ })
+ end
+ if type == "handsaw" then
+ minetest.register_craft({
+ recipe = {{material, "default:stick"},{material, "default:stick"},{"", "default:stick"}},
+ output = modname..":handsaw_"..name,
+ })
+ minetest.register_craft({
+ recipe = {{"default:stick", material},{"default:stick", material},{"default:stick", ""}},
+ output = modname..":handsaw_"..name,
+ })
+ end
+ if type == "hammer" then
+ minetest.register_craft({
+ recipe = {{material, "default:stick", material}, {material, "default:stick", material}, {"", "default:stick", ""}},
+ output = modname..":hammer_"..name,
+ })
+ end
+end
+
+function glooptest.tools_module.register_tools(modname, name, desc, material, uses)
+ if uses.handsaw ~= nil and uses.handsaw.makes ~= false then
+ minetest.register_tool(modname..":handsaw_"..name, {
+ description = desc.." Handsaw",
+ inventory_image = uses.handsaw.texture,
+ tool_capabilities = uses.handsaw.caps,
+ })
+ glooptest.tools_module.set_tool_recipe(modname,"handsaw",material,name)
+ end
+ if uses.hammer ~= nil and uses.hammer.makes ~= false then
+ minetest.register_tool(modname..":hammer_"..name, {
+ description = desc.." Hammer",
+ inventory_image = uses.hammer.texture,
+ tool_capabilities = uses.hammer.caps,
+ })
+ glooptest.tools_module.set_tool_recipe(modname,"hammer",material,name)
+ end
+ if uses.sword ~= nil and uses.sword.makes ~= false then
+ minetest.register_tool(modname..":sword_"..name, {
+ description = desc.." Sword",
+ inventory_image = uses.sword.texture,
+ tool_capabilities = uses.sword.caps,
+ })
+ glooptest.tools_module.set_tool_recipe(modname,"sword",material,name)
+ end
+ if uses.axe ~= nil and uses.axe.makes ~= false then
+ minetest.register_tool(modname..":axe_"..name, {
+ description = desc.." Axe",
+ inventory_image = uses.axe.texture,
+ tool_capabilities = uses.axe.caps,
+ })
+ glooptest.tools_module.set_tool_recipe(modname,"axe",material,name)
+ end
+ if uses.pick ~= nil and uses.pick.makes ~= false then
+ minetest.register_tool(modname..":pick_"..name, {
+ description = desc.." Pickaxe",
+ inventory_image = uses.pick.texture,
+ tool_capabilities = uses.pick.caps,
+ })
+ glooptest.tools_module.set_tool_recipe(modname,"pick",material,name)
+ end
+ if uses.shovel ~= nil and uses.shovel.makes ~= false then
+ minetest.register_tool(modname..":shovel_"..name, {
+ description = desc.." Shovel",
+ inventory_image = uses.shovel.texture,
+ wield_image = uses.shovel.texture.."^[transformR90",
+ tool_capabilities = uses.shovel.caps,
+ })
+ glooptest.tools_module.set_tool_recipe(modname,"shovel",material,name)
+ end
+end \ No newline at end of file
diff --git a/glooptest/glooptest/tools_module/init.lua b/glooptest/glooptest/tools_module/init.lua
new file mode 100644
index 0000000..3c1cabc
--- /dev/null
+++ b/glooptest/glooptest/tools_module/init.lua
@@ -0,0 +1,237 @@
+glooptest.tools_module = {}
+glooptest.debug("MESSAGE","Loading Tools Module Now!")
+
+dofile(minetest.get_modpath("glooptest").."/tools_module/api.lua")
+
+glooptest.tools_module.register_tools("glooptest", "wood", "Wooden", "group:wood", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_woodhandsaw.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[2]=1.10, [3]=0.60}, uses=10, maxlevel=1},
+ fleshy = {times={[3]=0.90}, uses=10, maxlevel=0}
+ },
+ damage_groups = {fleshy=2, snappy=3},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_woodhammer.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[2]=1.00, [3]=0.55}, uses=10, maxlevel=1},
+ cracky = {times={[3]=1.10}, uses=10, maxlevel=0}
+ },
+ damage_groups = {fleshy=2, bendy=2, cracky=1},
+ },
+ },
+})
+
+glooptest.tools_module.register_tools("glooptest", "stone", "Stone", "group:stone", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_stonehandsaw.png",
+ caps = {
+ full_punch_interval = 1.1,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1},
+ fleshy = {times={[3]=0.70}, uses=20, maxlevel=0}
+ },
+ damage_groups = {fleshy=3, snappy=3},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_stonehammer.png",
+ caps = {
+ full_punch_interval = 1.1,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[2]=0.90, [3]=0.60}, uses=20, maxlevel=1},
+ cracky = {times={[3]=1.00}, uses=20, maxlevel=0}
+ },
+ damage_groups = {fleshy=2, bendy=2, cracky=1},
+ },
+ },
+})
+
+glooptest.tools_module.register_tools("glooptest", "steel", "Steel", "default:steel_ingot", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_steelhandsaw.png",
+ caps = {
+ full_punch_interval = 0.9,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[1]=1.00, [2]=0.65, [3]=0.25}, uses=30, maxlevel=2},
+ fleshy = {times={[2]=1.10, [3]=0.60}, uses=30, maxlevel=1}
+ },
+ damage_groups = {fleshy=4, snappy=5},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_steelhammer.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[1]=1.30, [2]=0.80, [3]=0.50}, uses=30, maxlevel=2},
+ cracky = {times={[2]=1.80, [3]=0.90}, uses=30, maxlevel=0}
+ },
+ damage_groups = {fleshy=3, bendy=3, cracky=2},
+ },
+ },
+})
+
+glooptest.tools_module.register_tools("glooptest", "bronze", "Bronze", "default:bronze_ingot", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_bronzehandsaw.png",
+ caps = {
+ full_punch_interval = 0.9,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[1]=1.00, [2]=0.65, [3]=0.25}, uses=40, maxlevel=2},
+ fleshy = {times={[2]=1.10, [3]=0.60}, uses=40, maxlevel=1}
+ },
+ damage_groups = {fleshy=4, snappy=5},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_bronzehammer.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[1]=1.30, [2]=0.80, [3]=0.50}, uses=40, maxlevel=2},
+ cracky = {times={[2]=1.80, [3]=0.90}, uses=40, maxlevel=0}
+ },
+ damage_groups = {fleshy=3, bendy=3, cracky=2},
+ },
+ },
+})
+
+glooptest.tools_module.register_tools("glooptest", "mese", "Mese", "default:mese_crystal", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_mesehandsaw.png",
+ caps = {
+ full_punch_interval = 0.9,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[1]=0.70, [2]=0.40, [3]=0.20}, uses=30, maxlevel=3},
+ fleshy = {times={[2]=1.00, [3]=0.55}, uses=30, maxlevel=1}
+ },
+ damage_groups = {fleshy=5, snappy=6},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_mesehammer.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[1]=1.00, [2]=0.60, [3]=0.40}, uses=30, maxlevel=3},
+ cracky = {times={[2]=1.70, [3]=0.85}, uses=30, maxlevel=0}
+ },
+ damage_groups = {fleshy=4, bendy=4, cracky=2},
+ },
+ },
+})
+
+glooptest.tools_module.register_tools("glooptest", "diamond", "Diamond", "default:diamond", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_diamondhandsaw.png",
+ caps = {
+ full_punch_interval = 0.9,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[1]=0.60, [2]=0.30, [3]=0.20}, uses=30, maxlevel=3},
+ fleshy = {times={[2]=0.90, [3]=0.55}, uses=30, maxlevel=1}
+ },
+ damage_groups = {fleshy=5, snappy=7},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_diamondhammer.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[1]=0.90, [2]=0.50, [3]=0.40}, uses=30, maxlevel=3},
+ cracky = {times={[2]=1.70, [3]=0.85}, uses=30, maxlevel=0}
+ },
+ damage_groups = {fleshy=4, bendy=5, cracky=2},
+ },
+ },
+})
+
+if LOAD_ORE_MODULE == true then
+ glooptest.tools_module.register_tools("glooptest", "alatro", "Alatro", "glooptest:alatro_ingot", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_alatrohandsaw.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1},
+ fleshy = {times={[3]=0.65}, uses=40, maxlevel=0}
+ },
+ damage_groups = {fleshy=3, snappy=3},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_alatrohammer.png",
+ caps = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[2]=0.85, [3]=0.55}, uses=40, maxlevel=1},
+ cracky = {times={[3]=0.95}, uses=40, maxlevel=0}
+ },
+ damage_groups = {fleshy=2, bendy=2, cracky=1},
+ },
+ },
+ })
+ glooptest.tools_module.register_tools("glooptest", "arol", "Arol", "glooptest:arol_ingot", {
+ handsaw = {
+ makes = true,
+ texture = "glooptest_tool_arolhandsaw.png",
+ caps = {
+ full_punch_interval = 0.5,
+ max_drop_level = 0,
+ groupcaps = {
+ snappy = {times={[2]=1.00, [3]=0.80}, uses=300, maxlevel=1},
+ fleshy = {times={[3]=1.20}, uses=300, maxlevel=0}
+ },
+ damage_groups = {fleshy=3, snappy=3},
+ },
+ },
+ hammer = {
+ makes = true,
+ texture = "glooptest_tool_arolhammer.png",
+ caps = {
+ full_punch_interval = 0.5,
+ max_drop_level = 0,
+ groupcaps = {
+ bendy = {times={[2]=1.65, [3]=1.00}, uses=300, maxlevel=1},
+ cracky = {times={[3]=1.65}, uses=300, maxlevel=0}
+ },
+ damage_groups = {fleshy=2, bendy=2, cracky=1},
+ },
+ },
+ })
+end \ No newline at end of file
diff --git a/glooptest/modpack.txt b/glooptest/modpack.txt
new file mode 100644
index 0000000..b7e6b84
--- /dev/null
+++ b/glooptest/modpack.txt
@@ -0,0 +1,3 @@
+This file exists for the lazy who will just extract this file to the mods folder.
+
+Shame on you.
diff --git a/homedecor_modpack/LICENSE b/homedecor_modpack/LICENSE
new file mode 100644
index 0000000..0a3df5e
--- /dev/null
+++ b/homedecor_modpack/LICENSE
@@ -0,0 +1,199 @@
+For the Lua code: LGPL 3.0 or higher
+For all models, all textures, and all sounds: CC-by-SA 3.0 or higher
+For everything else: WTFPL
+
+Exceptions to the above:
+
+Fancy mesh fire model and texture by NathanS (CC-0).
+
+===============================================================================
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+===============================================================================
+
+This work is licensed under the Creative Commons Attribution-ShareAlike
+4.0 International License. To view a copy of this license, visit
+http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
+Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
+
+===============================================================================
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/homedecor_modpack/README b/homedecor_modpack/README
new file mode 100644
index 0000000..4c5679f
--- /dev/null
+++ b/homedecor_modpack/README
@@ -0,0 +1,61 @@
+This is what I consider to be a fairly feature-filled home decor
+modpack. As such, it comes in multiple parts:
+
+* The actual homedecor mod, which supplies a bunch of stuff found in
+most homes (like flower pots, home electronics, brass and wrought-iron
+tables, and a bunch of other things).
+
+* A "3d extras" mod, which supplies things that re-define something in
+some other mod (or in the default game) so that those objects become
+fully 3d (instead of a flat cube), as well as things which are directly
+related. This mod, for example, provides 3d bookshelves and their empty
+and half-depth "open frame" counterparts.
+
+* A signs library forked from the one that thexyz and PilzAdam first
+made, which produces visible text on signs (and which has been extended
+to put signs on fences, including the brass and wrought iron ones here
+in homedecor).
+
+* Sdzen's building_blocks mod, which is here to supply not only a few
+blocks to build with, obviously, :-) but also to supply a number of
+materials to craft other things in Homedecor with.
+
+All items can be accessed either by crafting various other items
+together, or with the usual /give commands. To get a list of the actual
+node names, just go into the homedecor/ folder and run the listnodes.sh
+Bash script. Note that a few of the listed nodes are kinda useless by
+themselves (like the various parts of the folding doors).
+
+All of the images used for the recipes in the forum post tracking this
+mod are included in the crafting-guide/ folder.
+
+Most stuff can be made from materials found through a game world. Some
+stuff can only be crafted by using materials from another mod (look for
+the orange highlights). Currently, this mod can use materials from
+moreores, mesecons, wool, and unifieddyes if present. You can still use
+the usual /give commands to get the items that depend on these mods if
+you don't use them installed.
+
+This mod is still a work-in-progress, but should be complete enough not
+to irritate anyone. :-) Namely, many items can be used as fuel but the
+burn times need tuning and I need to tune the cook time and fuel usage
+on the four smelted items.
+
+Much of the code (especially for the doors) plus the bucket were taken
+from the files which come with Minetest and altered to suit. Many
+thanks to Jeija for coming up with an elegant cylinder using nodeboxes;
+see his 'irregular' mods). His code is used herein (you can guess where
+:-) ).
+
+Dependencies: none (just the game's default stuff)
+
+Recommends: buckets, flowers, unifieddyes, junglegrass, moreores,
+mesecons, wool
+
+Skin credits:
+
+Mammu by hansuke123
+http://minetest.fensta.bplaced.net/#name=Mammu
+
+BrightGirl by Malarif
+http://minetest.fensta.bplaced.net/#name=BrightGirl
diff --git a/homedecor_modpack/building_blocks/depends.txt b/homedecor_modpack/building_blocks/depends.txt
new file mode 100644
index 0000000..9771003
--- /dev/null
+++ b/homedecor_modpack/building_blocks/depends.txt
@@ -0,0 +1,2 @@
+default
+moreblocks? \ No newline at end of file
diff --git a/homedecor_modpack/building_blocks/init.lua b/homedecor_modpack/building_blocks/init.lua
new file mode 100644
index 0000000..b0f3aa7
--- /dev/null
+++ b/homedecor_modpack/building_blocks/init.lua
@@ -0,0 +1,616 @@
+minetest.register_node("building_blocks:Adobe", {
+ tiles = {"building_blocks_Adobe.png"},
+ description = "Adobe",
+ is_ground_content = true,
+ groups = {crumbly=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("building_blocks:Roofing", {
+ tiles = {"building_blocks_Roofing.png"},
+ is_ground_content = true,
+ description = "Roof block",
+ groups = {snappy=3},
+})
+minetest.register_craft({
+ output = 'building_blocks:terrycloth_towel 2',
+ recipe = {
+ {"farming:string", "farming:string", "farming:string"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:Tarmac_spread 4',
+ recipe = {
+ {"group:tar_block", "group:tar_block"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:gravel_spread 4',
+ recipe = {
+ {"default:gravel", "default:gravel", "default:gravel"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:brobble_spread 4',
+ recipe = {
+ {"default:brick", "default:cobble", "default:brick"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:Fireplace 1',
+ recipe = {
+ {"default:steel_ingot", "building_blocks:sticks", "default:steel_ingot"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:Adobe 3',
+ recipe = {
+ {"default:sand"},
+ {"default:clay"},
+ {"group:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = 'building_blocks:Roofing 10',
+ recipe = {
+ {"building_blocks:Adobe", "building_blocks:Adobe"},
+ {"building_blocks:Adobe", "building_blocks:Adobe"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:BWtile 10',
+ recipe = {
+ {"group:marble", "group:tar_block"},
+ {"group:tar_block", "group:marble"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:grate 1',
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot"},
+ {"default:glass", "default:glass"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:woodglass 1',
+ recipe = {
+ {"default:wood"},
+ {"default:glass"},
+ }
+})
+minetest.register_craft({
+ output = 'building_blocks:hardwood 2',
+ recipe = {
+ {"default:wood", "default:junglewood"},
+ {"default:junglewood", "default:wood"},
+ }
+})
+
+minetest.register_craft({
+ output = 'building_blocks:hardwood 2',
+ recipe = {
+ {"default:junglewood", "default:wood"},
+ {"default:wood", "default:junglewood"},
+ }
+})
+if minetest.get_modpath("moreblocks") then
+ minetest.register_craft({
+ output = 'building_blocks:sticks 2',
+ recipe = {
+ {'group:stick', '' , 'group:stick'},
+ {'group:stick', 'group:stick', 'group:stick'},
+ {'group:stick', 'group:stick', 'group:stick'},
+ }
+ })
+else
+ minetest.register_craft({
+ output = 'building_blocks:sticks',
+ recipe = {
+ {'group:stick', 'group:stick'},
+ {'group:stick', 'group:stick'},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = 'default:stick 4',
+ recipe = {
+ {'building_blocks:sticks'},
+ }
+})
+
+minetest.register_craft({
+ output = 'building_blocks:fakegrass 2',
+ recipe = {
+ {'default:leaves'},
+ {"default:dirt"},
+ }
+})
+
+minetest.register_craft({
+ output = 'building_blocks:tar_base 2',
+ recipe = {
+ {"default:coal_lump", "default:gravel"},
+ {"default:gravel", "default:coal_lump"}
+ }
+})
+
+minetest.register_craft({
+ output = 'building_blocks:tar_base 2',
+ recipe = {
+ {"default:gravel", "default:coal_lump"},
+ {"default:coal_lump", "default:gravel"}
+ }
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "building_blocks:smoothglass",
+ recipe = "default:glass"
+})
+minetest.register_node("building_blocks:smoothglass", {
+ drawtype = "glasslike",
+ description = "Streak Free Glass",
+ tiles = {"building_blocks_sglass.png"},
+ inventory_image = minetest.inventorycube("building_blocks_sglass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+minetest.register_node("building_blocks:grate", {
+ drawtype = "glasslike",
+ description = "Grate",
+ tiles = {"building_blocks_grate.png"},
+ inventory_image = minetest.inventorycube("building_blocks_grate.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {cracky=1},
+})
+
+minetest.register_node("building_blocks:Fireplace", {
+ description = "Fireplace",
+ tiles = {
+ "building_blocks_cast_iron.png",
+ "building_blocks_cast_iron.png",
+ "building_blocks_cast_iron.png",
+ "building_blocks_cast_iron_fireplace.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = default.LIGHT_MAX,
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {cracky=2},
+})
+
+minetest.register_node("building_blocks:woodglass", {
+ drawtype = "glasslike",
+ description = "Wood Framed Glass",
+ tiles = {"building_blocks_wglass.png"},
+ inventory_image = minetest.inventorycube("building_blocks_wglass.png"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+minetest.register_node("building_blocks:terrycloth_towel", {
+ drawtype = "raillike",
+ description = "Terrycloth towel",
+ tiles = {"building_blocks_towel.png"},
+ inventory_image = "building_blocks_towel_inv.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {crumbly=3},
+})
+minetest.register_node("building_blocks:Tarmac_spread", {
+ drawtype = "raillike",
+ description = "Tarmac Spread",
+ tiles = {"building_blocks_tar.png"},
+ inventory_image = "building_blocks_tar_spread_inv.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_dirt_defaults(),
+})
+minetest.register_node("building_blocks:BWtile", {
+ drawtype = "raillike",
+ description = "Chess board tiling",
+ tiles = {"building_blocks_BWtile.png"},
+ inventory_image = "building_blocks_bwtile_inv.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {crumbly=3},
+})
+minetest.register_node("building_blocks:brobble_spread", {
+ drawtype = "raillike",
+ description = "Brobble Spread",
+ tiles = {"building_blocks_brobble.png"},
+ inventory_image = "building_blocks_brobble_spread_inv.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {crumbly=3},
+})
+minetest.register_node("building_blocks:gravel_spread", {
+ drawtype = "raillike",
+ description = "Gravel Spread",
+ tiles = {"default_gravel.png"},
+ inventory_image = "building_blocks_gravel_spread_inv.png",
+ paramtype = "light",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {crumbly=2},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_gravel_footstep", gain=0.5},
+ dug = {name="default_gravel_footstep", gain=1.0},
+ }),
+})
+minetest.register_node("building_blocks:hardwood", {
+ tiles = {"building_blocks_hardwood.png"},
+ is_ground_content = true,
+ description = "Hardwood",
+ groups = {choppy=1,flammable=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+if minetest.get_modpath("moreblocks") then
+
+ stairsplus:register_all(
+ "building_blocks",
+ "marble",
+ "building_blocks:Marble",
+ {
+ description = "Marble",
+ tiles = {"building_blocks_marble.png"},
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ }
+ )
+ stairsplus:register_all(
+ "building_blocks",
+ "hardwood",
+ "building_blocks:hardwood",
+ {
+ description = "Hardwood",
+ tiles = {"building_blocks_hardwood.png"},
+ groups = {choppy=1,flammable=1},
+ sounds = default.node_sound_wood_defaults(),
+ }
+ )
+ stairsplus:register_all(
+ "building_blocks",
+ "fakegrass",
+ "building_blocks:fakegrass",
+ {
+ description = "Grass",
+ tiles = {"default_grass.png"},
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+ }
+ )
+ stairsplus:register_all(
+ "building_blocks",
+ "tar",
+ "building_blocks:Tar",
+ {
+ description = "Tar",
+ tiles = {"building_blocks_tar.png"},
+ groups = {crumbly=1},
+ sounds = default.node_sound_stone_defaults(),
+ }
+ )
+ stairsplus:register_all(
+ "building_blocks",
+ "grate",
+ "building_blocks:grate",
+ {
+ description = "Grate",
+ tiles = {"building_blocks_grate.png"},
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+ }
+ )
+ stairsplus:register_all(
+ "building_blocks",
+ "Adobe",
+ "building_blocks:Adobe",
+ {
+ description = "Adobe",
+ tiles = {"building_blocks_Adobe.png"},
+ groups = {crumbly=3},
+ sounds = default.node_sound_stone_defaults(),
+ }
+ )
+ stairsplus:register_all(
+ "building_blocks",
+ "Roofing",
+ "building_blocks:Roofing",
+ {
+ description = "Roofing",
+ tiles = {"building_blocks_Roofing.png"},
+ groups = {snappy=3},
+ sounds = default.node_sound_stone_defaults(),
+ }
+ )
+else
+ bb_stairs = {}
+
+ -- Node will be called stairs:stair_<subname>
+ function bb_stairs.register_stair(subname, recipeitem, groups, images, description)
+ minetest.register_node("building_blocks:stair_" .. subname, {
+ description = description,
+ drawtype = "nodebox",
+ tiles = images,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ groups = groups,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ })
+
+ minetest.register_craft({
+ output = 'building_blocks:stair_' .. subname .. ' 4',
+ recipe = {
+ {recipeitem, "", ""},
+ {recipeitem, recipeitem, ""},
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+
+ -- Flipped recipe for the silly minecrafters
+ minetest.register_craft({
+ output = 'building_blocks:stair_' .. subname .. ' 4',
+ recipe = {
+ {"", "", recipeitem},
+ {"", recipeitem, recipeitem},
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+ end
+
+ -- Node will be called stairs:slab_<subname>
+ function bb_stairs.register_slab(subname, recipeitem, groups, images, description)
+ minetest.register_node("building_blocks:slab_" .. subname, {
+ description = description,
+ drawtype = "nodebox",
+ tiles = images,
+ paramtype = "light",
+ is_ground_content = true,
+ groups = groups,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ })
+
+ minetest.register_craft({
+ output = 'building_blocks:slab_' .. subname .. ' 3',
+ recipe = {
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+ end
+
+ -- Nodes will be called stairs:{stair,slab}_<subname>
+ function bb_stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab)
+ bb_stairs.register_stair(subname, recipeitem, groups, images, desc_stair)
+ bb_stairs.register_slab(subname, recipeitem, groups, images, desc_slab)
+ end
+ bb_stairs.register_stair_and_slab("marble","building_blocks:Marble",
+ {cracky=3},
+ {"building_blocks_marble.png"},
+ "Marble stair",
+ "Marble slab"
+ )
+ bb_stairs.register_stair_and_slab("hardwood","building_blocks:hardwood",
+ {choppy=1,flammable=1},
+ {"building_blocks_hardwood.png"},
+ "Hardwood stair",
+ "Hardwood slab"
+ )
+ bb_stairs.register_stair_and_slab("fakegrass","building_blocks:fakegrass",
+ {crumbly=3},
+ {"default_grass.png"},
+ "Grass stair",
+ "Grass slab"
+ )
+ bb_stairs.register_stair_and_slab("tar","building_blocks:Tar",
+ {crumbly=1},
+ {"building_blocks_tar.png"},
+ "Tar stair",
+ "Tar slab"
+ )
+ bb_stairs.register_stair_and_slab("grate","building_blocks:grate",
+ {cracky=1},
+ {"building_blocks_grate.png"},
+ "Grate Stair",
+ "Grate Slab"
+ )
+ bb_stairs.register_stair_and_slab("Adobe", "building_blocks:Adobe",
+ {crumbly=3},
+ {"building_blocks_Adobe.png"},
+ "Adobe stair",
+ "Adobe slab"
+ )
+ bb_stairs.register_stair_and_slab("Roofing", "building_blocks:Roofing",
+ {snappy=3},
+ {"building_blocks_Roofing.png"},
+ "Roofing stair",
+ "Roofing slab"
+ )
+end
+
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "building_blocks:hardwood",
+ burntime = 28,
+})
+
+minetest.register_node("building_blocks:fakegrass", {
+ tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
+ description = "Fake Grass",
+ is_ground_content = true,
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+minetest.register_craftitem("building_blocks:sticks", {
+ description = "Small bundle of sticks",
+ image = "building_blocks_sticks.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem("building_blocks:tar_base", {
+ description = "Tar base",
+ image = "building_blocks_tar_base.png",
+})
+
+--Tar
+minetest.register_craft({
+ output = 'building_blocks:knife 1',
+ recipe = {
+ {"group:tar_block"},
+ {"group:stick"},
+ }
+})
+
+minetest.register_alias("tar", "building_blocks:Tar")
+minetest.register_alias("fakegrass", "building_blocks:fakegrass")
+minetest.register_alias("tar_knife", "building_blocks:knife")
+minetest.register_alias("adobe", "building_blocks:Adobe")
+minetest.register_alias("building_blocks_roofing", "building_blocks:Roofing")
+minetest.register_alias("hardwood", "building_blocks:hardwood")
+minetest.register_alias("sticks", "building_blocks:sticks")
+minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
+minetest.register_alias("marble", "building_blocks:Marble")
+
+minetest.register_node("building_blocks:Tar", {
+ description = "Tar",
+ tiles = {"building_blocks_tar.png"},
+ is_ground_content = true,
+ groups = {crumbly=1, tar_block = 1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("building_blocks:Marble", {
+ description = "Marble",
+ tiles = {"building_blocks_marble.png"},
+ is_ground_content = true,
+ groups = {cracky=3, marble = 1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_craft({
+ type = "fuel",
+ recipe = "building_blocks:sticks",
+ burntime = 5,
+})
+minetest.register_craft({
+ type = "fuel",
+ recipe = "building_blocks:Tar",
+ burntime = 40,
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "building_blocks:Tar",
+ recipe = "building_blocks:tar_base",
+})
+
+minetest.register_tool("building_blocks:knife", {
+ description = "Tar Knife",
+ inventory_image = "building_blocks_knife.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ choppy={times={[2]=7.50, [3]=2.80}, maxwear=0.01, maxlevel=1},
+ fleshy={times={[2]=5.50, [3]=2.80}, maxwear=0.01, maxlevel=1}
+ }
+ },
+})
+
+minetest.register_craft({
+ output = "building_blocks:Marble 9",
+ recipe = {
+ {"default:clay", "group:tar_block", "default:clay"},
+ {"group:tar_block","default:clay", "group:tar_block"},
+ {"default:clay", "group:tar_block","default:clay"},
+ }
+})
+
+if not minetest.get_modpath("technic") then
+ minetest.register_node( ":technic:granite", {
+ description = "Granite",
+ tiles = { "technic_granite.png" },
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+ })
+
+ minetest.register_craft({
+ output = "technic:granite 9",
+ recipe = {
+ { "group:tar_block", "group:marble", "group:tar_block" },
+ { "group:marble", "group:tar_block", "group:marble" },
+ { "group:tar_block", "group:marble", "group:tar_block" }
+ },
+ })
+
+ if minetest.get_modpath("moreblocks") then
+ stairsplus:register_all("technic", "granite", "technic:granite", {
+ description="Granite",
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_granite.png"},
+ })
+ end
+end
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_Adobe.png b/homedecor_modpack/building_blocks/textures/building_blocks_Adobe.png
new file mode 100644
index 0000000..46ee055
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_Adobe.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_BWtile.png b/homedecor_modpack/building_blocks/textures/building_blocks_BWtile.png
new file mode 100644
index 0000000..3751e72
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_BWtile.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_Roofing.png b/homedecor_modpack/building_blocks/textures/building_blocks_Roofing.png
new file mode 100644
index 0000000..483c3d3
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_Roofing.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_brobble.png b/homedecor_modpack/building_blocks/textures/building_blocks_brobble.png
new file mode 100644
index 0000000..13a4b39
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_brobble.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_brobble_spread_inv.png b/homedecor_modpack/building_blocks/textures/building_blocks_brobble_spread_inv.png
new file mode 100644
index 0000000..9452b0e
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_brobble_spread_inv.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_bwtile_inv.png b/homedecor_modpack/building_blocks/textures/building_blocks_bwtile_inv.png
new file mode 100644
index 0000000..a8ec83b
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_bwtile_inv.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_cast_iron.png b/homedecor_modpack/building_blocks/textures/building_blocks_cast_iron.png
new file mode 100644
index 0000000..9526b8b
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_cast_iron.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_cast_iron_fireplace.png b/homedecor_modpack/building_blocks/textures/building_blocks_cast_iron_fireplace.png
new file mode 100644
index 0000000..6d4e38c
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_cast_iron_fireplace.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_grate.png b/homedecor_modpack/building_blocks/textures/building_blocks_grate.png
new file mode 100644
index 0000000..8bcaad0
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_grate.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_grate2.png b/homedecor_modpack/building_blocks/textures/building_blocks_grate2.png
new file mode 100644
index 0000000..941ca9f
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_grate2.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_gravel_spread_inv.png b/homedecor_modpack/building_blocks/textures/building_blocks_gravel_spread_inv.png
new file mode 100644
index 0000000..1d8d8d0
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_gravel_spread_inv.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_hardwood.png b/homedecor_modpack/building_blocks/textures/building_blocks_hardwood.png
new file mode 100644
index 0000000..8bb9743
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_hardwood.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_knife.png b/homedecor_modpack/building_blocks/textures/building_blocks_knife.png
new file mode 100644
index 0000000..ae99bdc
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_knife.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_marble.png b/homedecor_modpack/building_blocks/textures/building_blocks_marble.png
new file mode 100644
index 0000000..94aad99
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_marble.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_sglass.png b/homedecor_modpack/building_blocks/textures/building_blocks_sglass.png
new file mode 100644
index 0000000..fa824b8
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_sglass.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_sticks.png b/homedecor_modpack/building_blocks/textures/building_blocks_sticks.png
new file mode 100644
index 0000000..9b8b882
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_sticks.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_tar.png b/homedecor_modpack/building_blocks/textures/building_blocks_tar.png
new file mode 100644
index 0000000..c5d750b
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_tar.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_tar_base.png b/homedecor_modpack/building_blocks/textures/building_blocks_tar_base.png
new file mode 100644
index 0000000..3d7987d
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_tar_base.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_tar_spread_inv.png b/homedecor_modpack/building_blocks/textures/building_blocks_tar_spread_inv.png
new file mode 100644
index 0000000..3a934fd
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_tar_spread_inv.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_towel.png b/homedecor_modpack/building_blocks/textures/building_blocks_towel.png
new file mode 100644
index 0000000..498cb6c
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_towel.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_towel_inv.png b/homedecor_modpack/building_blocks/textures/building_blocks_towel_inv.png
new file mode 100644
index 0000000..f2dc366
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_towel_inv.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/building_blocks_wglass.png b/homedecor_modpack/building_blocks/textures/building_blocks_wglass.png
new file mode 100644
index 0000000..be4f1d2
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/building_blocks_wglass.png
Binary files differ
diff --git a/homedecor_modpack/building_blocks/textures/technic_granite.png b/homedecor_modpack/building_blocks/textures/technic_granite.png
new file mode 100644
index 0000000..88a7b32
--- /dev/null
+++ b/homedecor_modpack/building_blocks/textures/technic_granite.png
Binary files differ
diff --git a/homedecor_modpack/chains/depends.txt b/homedecor_modpack/chains/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/homedecor_modpack/chains/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/homedecor_modpack/chains/init.lua b/homedecor_modpack/chains/init.lua
new file mode 100644
index 0000000..2facad0
--- /dev/null
+++ b/homedecor_modpack/chains/init.lua
@@ -0,0 +1,178 @@
+local chains_sbox = {
+ type = "fixed",
+ fixed = { -0.1, -0.625, -0.1, 0.1, 0.5, 0.1 }
+}
+
+local topchains_sbox = {
+ type = "fixed",
+ fixed = {
+ { -0.25, 0.35, -0.25, 0.25, 0.5, 0.25 },
+ { -0.1, -0.625, -0.1, 0.1, 0.4, 0.1 }
+ }
+}
+
+minetest.register_node("chains:chain", {
+ description = "Hanging chain (wrought iron)",
+ drawtype = "mesh",
+ mesh = "chains.obj",
+ tiles = {"chains_wrought_iron.png"},
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ inventory_image = "chain_wrought_iron_inv.png",
+ groups = {cracky=3},
+ selection_box = chains_sbox,
+})
+
+minetest.register_node("chains:chain_brass", {
+ description = "Hanging chain (brass)",
+ drawtype = "mesh",
+ mesh = "chains.obj",
+ tiles = {"chains_brass.png"},
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ inventory_image = "chain_brass_inv.png",
+ groups = {cracky=3},
+ selection_box = chains_sbox,
+})
+
+minetest.register_node("chains:chain_top", {
+ description = "Hanging chain (ceiling mount, wrought iron)",
+ drawtype = "mesh",
+ mesh = "top_chains.obj",
+ tiles = {"chains_wrought_iron.png"},
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ inventory_image = "top_chain_wrought_iron_inv.png",
+ groups = {cracky=3},
+ selection_box = topchains_sbox,
+})
+
+minetest.register_node("chains:chain_top_brass", {
+ description = "Hanging chain (ceiling mount, brass)",
+ drawtype = "mesh",
+ mesh = "top_chains.obj",
+ tiles = {"chains_brass.png"},
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ inventory_image = "top_chain_brass_inv.png",
+ groups = {cracky=3},
+ selection_box = topchains_sbox,
+})
+
+minetest.register_node("chains:chandelier", {
+ description = "Chandelier (wrought iron)",
+ paramtype = "light",
+ light_source = LIGHT_MAX-2,
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ tiles = {
+ "chains_wrought_iron.png",
+ "chains_candle.png",
+ {
+ name="chains_candle_flame.png",
+ animation={
+ type="vertical_frames",
+ aspect_w=16,
+ aspect_h=16,
+ length=3.0
+ }
+ }
+ },
+ drawtype = "mesh",
+ mesh = "chains_chandelier.obj",
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("chains:chandelier_brass", {
+ description = "Chandelier (brass)",
+ paramtype = "light",
+ light_source = LIGHT_MAX-2,
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ tiles = {
+ "chains_brass.png",
+ "chains_candle.png",
+ {
+ name="chains_candle_flame.png",
+ animation={
+ type="vertical_frames",
+ aspect_w=16,
+ aspect_h=16,
+ length=3.0
+ }
+ }
+ },
+ drawtype = "mesh",
+ mesh = "chains_chandelier.obj",
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+-- crafts
+
+minetest.register_craft({
+ output = 'chains:chain 2',
+ recipe = {
+ {'glooptest:chainlink'},
+ {'glooptest:chainlink'},
+ {'glooptest:chainlink'},
+ }
+})
+
+minetest.register_craft({
+ output = 'chains:chain_top',
+ recipe = {
+ {'default:steel_ingot'},
+ {'glooptest:chainlink'},
+ },
+})
+
+minetest.register_craft({
+ output = 'chains:chandelier',
+ recipe = {
+ {'', 'glooptest:chainlink', ''},
+ {'default:torch', 'glooptest:chainlink', 'default:torch'},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ }
+})
+
+-- brass versions
+
+minetest.register_craft({
+ output = 'chains:chain_brass 2',
+ recipe = {
+ {'homedecor:chainlink_brass'},
+ {'homedecor:chainlink_brass'},
+ {'homedecor:chainlink_brass'},
+ }
+})
+
+minetest.register_craft({
+ output = 'chains:chain_top_brass',
+ recipe = {
+ {'technic:brass_ingot'},
+ {'homedecor:chainlink_brass'},
+ },
+})
+
+minetest.register_craft({
+ output = 'chains:chandelier_brass',
+ recipe = {
+ {'', 'homedecor:chainlink_brass', ''},
+ {'default:torch', 'homedecor:chainlink_brass', 'default:torch'},
+ {'technic:brass_ingot', 'technic:brass_ingot', 'technic:brass_ingot'},
+ }
+})
diff --git a/homedecor_modpack/chains/models/chains.obj b/homedecor_modpack/chains/models/chains.obj
new file mode 100644
index 0000000..78724c9
--- /dev/null
+++ b/homedecor_modpack/chains/models/chains.obj
@@ -0,0 +1,881 @@
+# Blender v2.73 (sub 0) OBJ File: 'chains.blend'
+# www.blender.org
+o Torus.016_Torus
+v 0.000000 -0.429978 0.000002
+v 0.000000 -0.401109 0.055211
+v -0.014044 -0.391975 0.048870
+v -0.014044 -0.423304 0.000002
+v -0.009826 -0.379748 0.040970
+v -0.009826 -0.406012 0.000002
+v 0.009826 -0.379748 0.040970
+v 0.009826 -0.406012 0.000002
+v 0.014044 -0.391975 0.048870
+v 0.014044 -0.423304 0.000002
+v 0.000000 -0.316336 0.080195
+v -0.014044 -0.316336 0.069112
+v -0.009826 -0.316336 0.057941
+v 0.009826 -0.316336 0.057941
+v 0.014044 -0.316336 0.069112
+v 0.000000 -0.231564 0.055211
+v -0.014044 -0.240700 0.048870
+v -0.009826 -0.252925 0.040970
+v 0.009826 -0.252925 0.040970
+v 0.014044 -0.240700 0.048870
+v 0.000000 -0.202695 0.000002
+v -0.014044 -0.209368 0.000002
+v -0.009826 -0.226661 0.000002
+v 0.009826 -0.226661 0.000002
+v 0.014044 -0.209368 0.000002
+v 0.000000 -0.231564 -0.055206
+v -0.014044 -0.240700 -0.048868
+v -0.009826 -0.252925 -0.040967
+v 0.009826 -0.252925 -0.040967
+v 0.014044 -0.240700 -0.048865
+v 0.000000 -0.316336 -0.080190
+v -0.014044 -0.316336 -0.069108
+v -0.009826 -0.316336 -0.057936
+v 0.009826 -0.316336 -0.057936
+v 0.014044 -0.316336 -0.069108
+v 0.000000 -0.400361 -0.055206
+v -0.014044 -0.391975 -0.048868
+v -0.009826 -0.379748 -0.040967
+v 0.009826 -0.379748 -0.040967
+v 0.014044 -0.391975 -0.048868
+v 0.000000 -0.262249 0.000002
+v -0.061672 -0.233381 0.000002
+v -0.054590 -0.224245 -0.012569
+v 0.000000 -0.255577 -0.012569
+v -0.045765 -0.212018 -0.008794
+v 0.000000 -0.238285 -0.008794
+v -0.045765 -0.212018 0.008798
+v 0.000000 -0.238285 0.008798
+v -0.054590 -0.224245 0.012574
+v 0.000000 -0.255577 0.012574
+v -0.089582 -0.148609 0.000002
+v -0.077200 -0.148609 -0.012569
+v -0.064722 -0.148609 -0.008794
+v -0.064722 -0.148609 0.008799
+v -0.077200 -0.148609 0.012574
+v -0.061672 -0.063837 0.000002
+v -0.054590 -0.072971 -0.012569
+v -0.045765 -0.085198 -0.008794
+v -0.045765 -0.085198 0.008799
+v -0.054590 -0.072971 0.012574
+v 0.000000 -0.034967 0.000002
+v 0.000000 -0.041641 -0.012569
+v 0.000000 -0.058933 -0.008794
+v 0.000000 -0.058933 0.008799
+v 0.000000 -0.041641 0.012574
+v 0.061672 -0.063837 0.000002
+v 0.054590 -0.072971 -0.012569
+v 0.045765 -0.085198 -0.008794
+v 0.045765 -0.085198 0.008799
+v 0.054590 -0.072971 0.012574
+v 0.089582 -0.148609 0.000002
+v 0.077200 -0.148609 -0.012569
+v 0.064722 -0.148609 -0.008794
+v 0.064722 -0.148609 0.008799
+v 0.077200 -0.148609 0.012574
+v 0.061672 -0.232631 0.000002
+v 0.054590 -0.224245 -0.012569
+v 0.045765 -0.212018 -0.008794
+v 0.045765 -0.212018 0.008798
+v 0.054590 -0.224245 0.012574
+v 0.000000 0.073316 0.000002
+v 0.061672 0.102183 0.000002
+v 0.054590 0.111319 0.012574
+v 0.000000 0.079988 0.012574
+v 0.045765 0.123546 0.008799
+v 0.000000 0.097280 0.008799
+v 0.045765 0.123546 -0.008794
+v 0.000000 0.097280 -0.008794
+v 0.054590 0.111319 -0.012569
+v 0.000000 0.079988 -0.012569
+v 0.089582 0.186956 0.000002
+v 0.077200 0.186956 0.012574
+v 0.064722 0.186956 0.008799
+v 0.064722 0.186956 -0.008794
+v 0.077200 0.186956 -0.012569
+v 0.061672 0.271728 0.000002
+v 0.054590 0.262594 0.012574
+v 0.045765 0.250367 0.008799
+v 0.045765 0.250367 -0.008794
+v 0.054590 0.262594 -0.012569
+v 0.000000 0.300597 0.000002
+v 0.000000 0.293923 0.012574
+v 0.000000 0.276631 0.008799
+v 0.000000 0.276631 -0.008794
+v 0.000000 0.293923 -0.012569
+v -0.061672 0.271728 0.000002
+v -0.054590 0.262594 0.012574
+v -0.045765 0.250367 0.008799
+v -0.045765 0.250367 -0.008794
+v -0.054590 0.262594 -0.012569
+v -0.089582 0.186956 0.000002
+v -0.077200 0.186956 0.012574
+v -0.064722 0.186956 0.008799
+v -0.064722 0.186956 -0.008794
+v -0.077200 0.186956 -0.012569
+v -0.061672 0.102931 0.000002
+v -0.054590 0.111319 0.012574
+v -0.045765 0.123546 0.008799
+v -0.045765 0.123546 -0.008794
+v -0.054590 0.111319 -0.012569
+v 0.000000 -0.095037 0.000002
+v 0.000000 -0.066168 -0.055206
+v 0.014044 -0.057034 -0.048868
+v 0.014044 -0.088363 0.000002
+v 0.009826 -0.044807 -0.040967
+v 0.009826 -0.071071 0.000002
+v -0.009826 -0.044807 -0.040967
+v -0.009826 -0.071071 0.000002
+v -0.014044 -0.057034 -0.048868
+v -0.014044 -0.088363 0.000002
+v 0.000000 0.018605 -0.080190
+v 0.014044 0.018605 -0.069108
+v 0.009826 0.018605 -0.057936
+v -0.009826 0.018605 -0.057936
+v -0.014044 0.018605 -0.069108
+v 0.000000 0.103377 -0.055206
+v 0.014044 0.094243 -0.048868
+v 0.009826 0.082016 -0.040967
+v -0.009826 0.082016 -0.040967
+v -0.014044 0.094243 -0.048868
+v 0.000000 0.132246 0.000002
+v 0.014044 0.125572 0.000002
+v 0.009826 0.108280 0.000002
+v -0.009826 0.108280 0.000002
+v -0.014044 0.125572 0.000002
+v 0.000000 0.103377 0.055211
+v 0.014044 0.094243 0.048870
+v 0.009826 0.082016 0.040970
+v -0.009826 0.082016 0.040970
+v -0.014044 0.094243 0.048870
+v 0.000000 0.018605 0.080195
+v 0.014044 0.018605 0.069112
+v 0.009826 0.018605 0.057941
+v -0.009826 0.018605 0.057941
+v -0.014044 0.018605 0.069112
+v 0.000000 -0.065420 0.055211
+v 0.014044 -0.057032 0.048870
+v 0.009826 -0.044807 0.040970
+v -0.009826 -0.044807 0.040970
+v -0.014044 -0.057032 0.048870
+v 0.000000 -0.598329 0.000002
+v 0.061672 -0.569460 0.000002
+v 0.054590 -0.560326 0.012574
+v 0.000000 -0.591655 0.012574
+v 0.045765 -0.548099 0.008798
+v 0.000000 -0.574363 0.008798
+v 0.045765 -0.548099 -0.008794
+v 0.000000 -0.574363 -0.008794
+v 0.054590 -0.560326 -0.012569
+v 0.000000 -0.591655 -0.012569
+v 0.089582 -0.484687 0.000002
+v 0.077200 -0.484687 0.012574
+v 0.064722 -0.484687 0.008798
+v 0.064722 -0.484687 -0.008794
+v 0.077200 -0.484687 -0.012569
+v 0.061672 -0.399915 0.000002
+v 0.054590 -0.409051 0.012574
+v 0.045765 -0.421278 0.008798
+v 0.045765 -0.421278 -0.008794
+v 0.054590 -0.409051 -0.012569
+v 0.000000 -0.371048 0.000002
+v 0.000000 -0.377719 0.012574
+v 0.000000 -0.395012 0.008798
+v 0.000000 -0.395012 -0.008794
+v 0.000000 -0.377719 -0.012569
+v -0.061672 -0.399915 0.000002
+v -0.054590 -0.409051 0.012574
+v -0.045765 -0.421278 0.008798
+v -0.045765 -0.421278 -0.008794
+v -0.054590 -0.409051 -0.012569
+v -0.089582 -0.484687 0.000002
+v -0.077200 -0.484687 0.012574
+v -0.064722 -0.484687 0.008798
+v -0.064722 -0.484687 -0.008794
+v -0.077200 -0.484687 -0.012569
+v -0.061672 -0.568712 0.000002
+v -0.054590 -0.560326 0.012574
+v -0.045765 -0.548099 0.008798
+v -0.045765 -0.548099 -0.008794
+v -0.054590 -0.560326 -0.012569
+v 0.000000 0.241043 0.000002
+v 0.000000 0.269910 0.055211
+v -0.014044 0.279047 0.048870
+v -0.014044 0.247717 0.000002
+v -0.009826 0.291274 0.040970
+v -0.009826 0.265007 0.000002
+v 0.009826 0.291274 0.040970
+v 0.009826 0.265007 0.000002
+v 0.014044 0.279047 0.048870
+v 0.014044 0.247717 0.000002
+v 0.000000 0.354683 0.080195
+v -0.014044 0.354683 0.069112
+v -0.009826 0.354683 0.057941
+v 0.009826 0.354683 0.057941
+v 0.014044 0.354683 0.069112
+v 0.000000 0.439455 0.055211
+v -0.014044 0.430321 0.048870
+v -0.009826 0.418094 0.040970
+v 0.009826 0.418094 0.040970
+v 0.014044 0.430321 0.048870
+v 0.000000 0.468325 0.000002
+v -0.014044 0.461651 0.000002
+v -0.009826 0.444361 0.000002
+v 0.009826 0.444361 0.000002
+v 0.014044 0.461651 0.000002
+v 0.000000 0.439455 -0.055206
+v -0.014044 0.430321 -0.048868
+v -0.009826 0.418094 -0.040967
+v 0.009826 0.418094 -0.040967
+v 0.014044 0.430321 -0.048868
+v 0.000000 0.354683 -0.080190
+v -0.014044 0.354683 -0.069108
+v -0.009826 0.354683 -0.057936
+v 0.009826 0.354683 -0.057936
+v 0.014044 0.354683 -0.069108
+v 0.000000 0.270661 -0.055206
+v -0.014044 0.279047 -0.048868
+v -0.009826 0.291274 -0.040967
+v 0.009826 0.291274 -0.040967
+v 0.014044 0.279047 -0.048868
+vt 0.187500 0.125000
+vt 0.250000 0.125000
+vt 0.250000 0.187500
+vt 0.187500 0.187500
+vt 0.250000 0.250000
+vt 0.187500 0.250000
+vt 0.250000 0.312500
+vt 0.187500 0.312500
+vt 0.250000 0.375000
+vt 0.187500 0.375000
+vt 0.187500 0.062500
+vt 0.250000 0.062500
+vt 0.312500 0.125000
+vt 0.312500 0.187500
+vt 0.312500 0.250000
+vt 0.312500 0.312500
+vt 0.312500 0.375000
+vt 0.312500 0.062500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.375000 0.250000
+vt 0.375000 0.312500
+vt 0.375000 0.375000
+vt 0.375000 0.062500
+vt 0.437500 0.125000
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.437500 0.062500
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.500000 0.250000
+vt 0.500000 0.312500
+vt 0.500000 0.375000
+vt 0.500000 0.062500
+vt -0.000000 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.187500
+vt -0.000000 0.187500
+vt 0.062500 0.250000
+vt -0.000000 0.250000
+vt 0.062500 0.312500
+vt -0.000000 0.312500
+vt 0.062500 0.375000
+vt -0.000000 0.375000
+vt -0.000000 0.062500
+vt 0.062500 0.062500
+vt 0.125000 0.125000
+vt 0.125000 0.187500
+vt 0.125000 0.250000
+vt 0.125000 0.312500
+vt 0.125000 0.375000
+vt 0.125000 0.062500
+vt 0.750000 0.625000
+vt 0.812500 0.625000
+vt 0.812500 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.375000
+vt 0.812500 0.375000
+vt 0.812500 0.437500
+vt 0.750000 0.437500
+vt 0.812500 0.500000
+vt 0.750000 0.500000
+vt 0.812500 0.562500
+vt 0.750000 0.562500
+vt 0.875000 0.625000
+vt 0.875000 0.687500
+vt 0.875000 0.375000
+vt 0.875000 0.437500
+vt 0.875000 0.500000
+vt 0.875000 0.562500
+vt 0.937500 0.625000
+vt 0.937500 0.687500
+vt 0.937500 0.375000
+vt 0.937500 0.437500
+vt 0.937500 0.500000
+vt 0.937500 0.562500
+vt 1.000000 0.625000
+vt 1.000000 0.687500
+vt 1.000000 0.375000
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 1.000000 0.562500
+vt 0.500000 0.625000
+vt 0.562500 0.625000
+vt 0.562500 0.687500
+vt 0.500000 0.687500
+vt 0.562500 0.375000
+vt 0.562500 0.437500
+vt 0.500000 0.437500
+vt 0.562500 0.500000
+vt 0.500000 0.500000
+vt 0.562500 0.562500
+vt 0.500000 0.562500
+vt 0.625000 0.625000
+vt 0.625000 0.687500
+vt 0.625000 0.375000
+vt 0.625000 0.437500
+vt 0.625000 0.500000
+vt 0.625000 0.562500
+vt 0.687500 0.625000
+vt 0.687500 0.687500
+vt 0.687500 0.375000
+vt 0.687500 0.437500
+vt 0.687500 0.500000
+vt 0.687500 0.562500
+vt 0.250000 0.625000
+vt 0.312500 0.625000
+vt 0.312500 0.687500
+vt 0.250000 0.687500
+vt 0.312500 0.437500
+vt 0.250000 0.437500
+vt 0.312500 0.500000
+vt 0.250000 0.500000
+vt 0.312500 0.562500
+vt 0.250000 0.562500
+vt 0.375000 0.625000
+vt 0.375000 0.687500
+vt 0.375000 0.437500
+vt 0.375000 0.500000
+vt 0.375000 0.562500
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 0.437500 0.437500
+vt 0.437500 0.500000
+vt 0.437500 0.562500
+vt -0.000000 0.625000
+vt 0.062500 0.625000
+vt 0.062500 0.687500
+vt -0.000000 0.687500
+vt 0.062500 0.437500
+vt -0.000000 0.437500
+vt 0.062500 0.500000
+vt -0.000000 0.500000
+vt 0.062500 0.562500
+vt -0.000000 0.562500
+vt 0.125000 0.625000
+vt 0.125000 0.687500
+vt 0.125000 0.437500
+vt 0.125000 0.500000
+vt 0.125000 0.562500
+vt 0.187500 0.625000
+vt 0.187500 0.687500
+vt 0.187500 0.437500
+vt 0.187500 0.500000
+vt 0.187500 0.562500
+vt 0.687500 0.750000
+vt 0.750000 0.750000
+vt 0.750000 0.812500
+vt 0.687500 0.812500
+vt 0.750000 0.875000
+vt 0.687500 0.875000
+vt 0.750000 0.937500
+vt 0.687500 0.937500
+vt 0.750000 1.000000
+vt 0.687500 1.000000
+vt 0.812500 0.750000
+vt 0.812500 0.812500
+vt 0.812500 0.875000
+vt 0.812500 0.937500
+vt 0.812500 1.000000
+vt 0.875000 0.750000
+vt 0.875000 0.812500
+vt 0.875000 0.875000
+vt 0.875000 0.937500
+vt 0.875000 1.000000
+vt 0.937500 0.750000
+vt 0.937500 0.812500
+vt 0.937500 0.875000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 1.000000 0.750000
+vt 1.000000 0.812500
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.500000 0.750000
+vt 0.562500 0.750000
+vt 0.562500 0.812500
+vt 0.500000 0.812500
+vt 0.562500 0.875000
+vt 0.500000 0.875000
+vt 0.562500 0.937500
+vt 0.500000 0.937500
+vt 0.562500 1.000000
+vt 0.500000 1.000000
+vt 0.625000 0.750000
+vt 0.625000 0.812500
+vt 0.625000 0.875000
+vt 0.625000 0.937500
+vt 0.625000 1.000000
+vt 0.750000 0.312500
+vt 0.812500 0.312500
+vt 0.750000 0.062500
+vt 0.812500 0.062500
+vt 0.812500 0.125000
+vt 0.750000 0.125000
+vt 0.812500 0.187500
+vt 0.750000 0.187500
+vt 0.812500 0.250000
+vt 0.750000 0.250000
+vt 0.875000 0.312500
+vt 0.875000 0.062500
+vt 0.875000 0.125000
+vt 0.875000 0.187500
+vt 0.875000 0.250000
+vt 0.937500 0.312500
+vt 0.937500 0.062500
+vt 0.937500 0.125000
+vt 0.937500 0.187500
+vt 0.937500 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.062500
+vt 1.000000 0.125000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 0.562500 0.312500
+vt 0.562500 0.062500
+vt 0.562500 0.125000
+vt 0.562500 0.187500
+vt 0.562500 0.250000
+vt 0.625000 0.312500
+vt 0.625000 0.062500
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.625000 0.250000
+vt 0.687500 0.312500
+vt 0.687500 0.062500
+vt 0.687500 0.125000
+vt 0.687500 0.187500
+vt 0.687500 0.250000
+vt 0.250000 0.937500
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.250000 1.000000
+vt 0.312500 0.750000
+vt 0.250000 0.750000
+vt 0.312500 0.812500
+vt 0.250000 0.812500
+vt 0.312500 0.875000
+vt 0.250000 0.875000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.375000 0.750000
+vt 0.375000 0.812500
+vt 0.375000 0.875000
+vt 0.437500 0.937500
+vt 0.437500 1.000000
+vt 0.437500 0.750000
+vt 0.437500 0.812500
+vt 0.437500 0.875000
+vt 0.000000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.062500 0.750000
+vt 0.000000 0.750000
+vt 0.062500 0.812500
+vt 0.000000 0.812500
+vt 0.062500 0.875000
+vt 0.000000 0.875000
+vt 0.125000 0.937500
+vt 0.125000 1.000000
+vt 0.125000 0.750000
+vt 0.125000 0.812500
+vt 0.125000 0.875000
+vt 0.187500 0.937500
+vt 0.187500 1.000000
+vt 0.187500 0.750000
+vt 0.187500 0.812500
+vt 0.187500 0.875000
+vn 0.000000 -1.000000 -0.004800
+vn 0.000000 -0.657400 0.753500
+vn -0.898300 -0.248500 0.362300
+vn -0.863600 -0.504100 -0.003400
+vn -0.661500 0.421500 -0.620200
+vn -0.746000 0.665900 0.000000
+vn 0.661500 0.421500 -0.620200
+vn 0.746000 0.665900 0.000000
+vn 0.898300 -0.248500 0.362300
+vn 0.863600 -0.504100 -0.003400
+vn 0.000000 0.000000 1.000000
+vn -0.925200 0.000000 0.379500
+vn -0.617100 0.000000 -0.786900
+vn 0.617100 0.000000 -0.786900
+vn 0.925200 0.000000 0.379500
+vn 0.000000 0.657400 0.753500
+vn -0.898300 0.248400 0.362300
+vn -0.661500 -0.421500 -0.620200
+vn 0.661500 -0.421500 -0.620200
+vn 0.898300 0.248400 0.362300
+vn 0.000000 1.000000 0.000000
+vn -0.866100 0.499800 0.000000
+vn -0.746000 -0.665900 0.000000
+vn 0.746000 -0.665900 0.000000
+vn 0.866100 0.499800 0.000000
+vn 0.000000 0.657400 -0.753500
+vn -0.898300 0.248400 -0.362400
+vn -0.661600 -0.421500 0.620200
+vn 0.661500 -0.421500 0.620200
+vn 0.898300 0.248400 -0.362300
+vn 0.000000 -0.000900 -1.000000
+vn -0.924600 -0.000600 -0.380700
+vn -0.617100 0.000000 0.786900
+vn 0.617100 0.000000 0.786900
+vn 0.924700 -0.000600 -0.380700
+vn 0.000000 -0.650300 -0.759600
+vn -0.895600 -0.254600 -0.364800
+vn -0.661600 0.421500 0.620200
+vn 0.661600 0.421500 0.620200
+vn 0.895600 -0.254600 -0.364800
+vn 0.004900 -1.000000 0.000000
+vn -0.729700 -0.683800 0.000000
+vn -0.324500 -0.256300 -0.910500
+vn 0.003300 -0.475500 -0.879700
+vn 0.578700 0.436200 -0.689100
+vn 0.000000 0.666600 -0.745400
+vn 0.578700 0.436200 0.689100
+vn 0.000000 0.666600 0.745400
+vn -0.324500 -0.256300 0.910500
+vn 0.003300 -0.475500 0.879700
+vn -1.000000 0.000000 0.000000
+vn -0.359600 0.000000 -0.933100
+vn 0.756400 0.000000 -0.654100
+vn 0.756400 0.000000 0.654100
+vn -0.359600 0.000000 0.933100
+vn -0.729700 0.683700 0.000000
+vn -0.324500 0.256300 -0.910500
+vn 0.578700 -0.436200 -0.689100
+vn 0.578700 -0.436200 0.689100
+vn -0.324500 0.256300 0.910500
+vn 0.000000 0.470900 -0.882200
+vn 0.000000 -0.666600 -0.745400
+vn 0.000000 -0.666600 0.745400
+vn 0.000000 0.470900 0.882200
+vn 0.729700 0.683700 0.000000
+vn 0.324500 0.256300 -0.910500
+vn -0.578700 -0.436200 -0.689100
+vn -0.578700 -0.436200 0.689100
+vn 0.324500 0.256300 0.910500
+vn 1.000000 -0.001100 0.000000
+vn 0.361000 -0.000700 -0.932600
+vn -0.756400 0.000000 -0.654100
+vn -0.756400 0.000000 0.654100
+vn 0.361000 -0.000700 0.932600
+vn 0.736100 -0.676800 0.000000
+vn 0.327100 -0.263100 -0.907600
+vn -0.578700 0.436200 -0.689100
+vn -0.578700 0.436200 0.689100
+vn 0.327100 -0.263100 0.907600
+vn -0.004900 -1.000000 0.000000
+vn 0.729700 -0.683800 0.000000
+vn 0.324500 -0.256300 0.910500
+vn -0.003300 -0.475400 0.879700
+vn 0.324500 -0.256300 -0.910500
+vn -0.003300 -0.475400 -0.879700
+vn 1.000000 0.000000 0.000000
+vn 0.359600 0.000000 0.933100
+vn 0.359600 0.000000 -0.933100
+vn -1.000000 -0.001100 0.000000
+vn -0.361000 -0.000700 0.932600
+vn -0.361000 -0.000700 -0.932600
+vn -0.736100 -0.676800 0.000000
+vn -0.327100 -0.263100 0.907600
+vn -0.327100 -0.263100 -0.907600
+vn 0.000000 -1.000000 0.004800
+vn 0.000000 -0.657400 -0.753500
+vn 0.898300 -0.248500 -0.362400
+vn 0.863600 -0.504100 0.003400
+vn -0.898300 -0.248500 -0.362400
+vn -0.863600 -0.504100 0.003400
+vn 0.000000 0.000000 -1.000000
+vn 0.925200 0.000000 -0.379500
+vn -0.925200 0.000000 -0.379500
+vn 0.898300 0.248500 -0.362400
+vn 0.661600 -0.421500 0.620200
+vn -0.898300 0.248500 -0.362400
+vn 0.898300 0.248500 0.362300
+vn -0.898300 0.248500 0.362300
+vn 0.000000 -0.000900 1.000000
+vn 0.924700 -0.000600 0.380700
+vn -0.924700 -0.000600 0.380700
+vn 0.000000 -0.650300 0.759600
+vn 0.895600 -0.254600 0.364700
+vn -0.895600 -0.254600 0.364700
+vn 0.729700 -0.683700 0.000000
+vn 0.729700 0.683800 0.000000
+vn -0.729700 0.683800 0.000000
+vn -0.898300 -0.248400 0.362300
+vn -0.863600 -0.504100 -0.003500
+vn 0.898300 -0.248400 0.362300
+vn 0.863600 -0.504100 -0.003500
+vn -0.661500 -0.421500 0.620200
+vn 0.924600 -0.000600 -0.380700
+vn -0.661500 0.421500 0.620200
+vn 0.661500 0.421500 0.620200
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 4/4/4 3/3/3 5/5/5 6/6/6
+f 6/6/6 5/5/5 7/7/7 8/8/8
+f 8/8/8 7/7/7 9/9/9 10/10/10
+f 1/1/1 10/11/10 9/12/9 2/2/2
+f 2/2/2 11/13/11 12/14/12 3/3/3
+f 3/3/3 12/14/12 13/15/13 5/5/5
+f 5/5/5 13/15/13 14/16/14 7/7/7
+f 7/7/7 14/16/14 15/17/15 9/9/9
+f 9/12/9 15/18/15 11/13/11 2/2/2
+f 11/13/11 16/19/16 17/20/17 12/14/12
+f 12/14/12 17/20/17 18/21/18 13/15/13
+f 13/15/13 18/21/18 19/22/19 14/16/14
+f 14/16/14 19/22/19 20/23/20 15/17/15
+f 15/18/15 20/24/20 16/19/16 11/13/11
+f 16/19/16 21/25/21 22/26/22 17/20/17
+f 17/20/17 22/26/22 23/27/23 18/21/18
+f 18/21/18 23/27/23 24/28/24 19/22/19
+f 19/22/19 24/28/24 25/29/25 20/23/20
+f 20/24/20 25/30/25 21/25/21 16/19/16
+f 21/25/21 26/31/26 27/32/27 22/26/22
+f 22/26/22 27/32/27 28/33/28 23/27/23
+f 23/27/23 28/33/28 29/34/29 24/28/24
+f 24/28/24 29/34/29 30/35/30 25/29/25
+f 25/30/25 30/36/30 26/31/26 21/25/21
+f 26/37/26 31/38/31 32/39/32 27/40/27
+f 27/40/27 32/39/32 33/41/33 28/42/28
+f 28/42/28 33/41/33 34/43/34 29/44/29
+f 29/44/29 34/43/34 35/45/35 30/46/30
+f 30/47/30 35/48/35 31/38/31 26/37/26
+f 31/38/31 36/49/36 37/50/37 32/39/32
+f 32/39/32 37/50/37 38/51/38 33/41/33
+f 33/41/33 38/51/38 39/52/39 34/43/34
+f 34/43/34 39/52/39 40/53/40 35/45/35
+f 35/48/35 40/54/40 36/49/36 31/38/31
+f 36/49/36 1/1/1 4/4/4 37/50/37
+f 37/50/37 4/4/4 6/6/6 38/51/38
+f 38/51/38 6/6/6 8/8/8 39/52/39
+f 39/52/39 8/8/8 10/10/10 40/53/40
+f 1/1/1 36/49/36 40/54/40 10/11/10
+f 41/55/41 42/56/42 43/57/43 44/58/44
+f 44/59/44 43/60/43 45/61/45 46/62/46
+f 46/62/46 45/61/45 47/63/47 48/64/48
+f 48/64/48 47/63/47 49/65/49 50/66/50
+f 41/55/41 50/66/50 49/65/49 42/56/42
+f 42/56/42 51/67/51 52/68/52 43/57/43
+f 43/60/43 52/69/52 53/70/53 45/61/45
+f 45/61/45 53/70/53 54/71/54 47/63/47
+f 47/63/47 54/71/54 55/72/55 49/65/49
+f 49/65/49 55/72/55 51/67/51 42/56/42
+f 51/67/51 56/73/56 57/74/57 52/68/52
+f 52/69/52 57/75/57 58/76/58 53/70/53
+f 53/70/53 58/76/58 59/77/59 54/71/54
+f 54/71/54 59/77/59 60/78/60 55/72/55
+f 55/72/55 60/78/60 56/73/56 51/67/51
+f 56/73/56 61/79/21 62/80/61 57/74/57
+f 57/75/57 62/81/61 63/82/62 58/76/58
+f 58/76/58 63/82/62 64/83/63 59/77/59
+f 59/77/59 64/83/63 65/84/64 60/78/60
+f 60/78/60 65/84/64 61/79/21 56/73/56
+f 61/85/21 66/86/65 67/87/66 62/88/61
+f 62/35/61 67/89/66 68/90/67 63/91/62
+f 63/91/62 68/90/67 69/92/68 64/93/63
+f 64/93/63 69/92/68 70/94/69 65/95/64
+f 65/95/64 70/94/69 66/86/65 61/85/21
+f 66/86/65 71/96/70 72/97/71 67/87/66
+f 67/89/66 72/98/71 73/99/72 68/90/67
+f 68/90/67 73/99/72 74/100/73 69/92/68
+f 69/92/68 74/100/73 75/101/74 70/94/69
+f 70/94/69 75/101/74 71/96/70 66/86/65
+f 71/96/70 76/102/75 77/103/76 72/97/71
+f 72/98/71 77/104/76 78/105/77 73/99/72
+f 73/99/72 78/105/77 79/106/78 74/100/73
+f 74/100/73 79/106/78 80/107/79 75/101/74
+f 75/101/74 80/107/79 76/102/75 71/96/70
+f 76/102/75 41/55/41 44/58/44 77/103/76
+f 77/104/76 44/59/44 46/62/46 78/105/77
+f 78/105/77 46/62/46 48/64/48 79/106/78
+f 79/106/78 48/64/48 50/66/50 80/107/79
+f 41/55/41 76/102/75 80/107/79 50/66/50
+f 81/108/80 82/109/81 83/110/82 84/111/83
+f 84/9/83 83/17/82 85/112/78 86/113/48
+f 86/113/48 85/112/78 87/114/77 88/115/46
+f 88/115/46 87/114/77 89/116/84 90/117/85
+f 81/108/80 90/117/85 89/116/84 82/109/81
+f 82/109/81 91/118/86 92/119/87 83/110/82
+f 83/17/82 92/23/87 93/120/73 85/112/78
+f 85/112/78 93/120/73 94/121/72 87/114/77
+f 87/114/77 94/121/72 95/122/88 89/116/84
+f 89/116/84 95/122/88 91/118/86 82/109/81
+f 91/118/86 96/123/65 97/124/69 92/119/87
+f 92/23/87 97/29/69 98/125/68 93/120/73
+f 93/120/73 98/125/68 99/126/67 94/121/72
+f 94/121/72 99/126/67 100/127/66 95/122/88
+f 95/122/88 100/127/66 96/123/65 91/118/86
+f 96/123/65 101/85/21 102/88/64 97/124/69
+f 97/29/69 102/35/64 103/91/63 98/125/68
+f 98/125/68 103/91/63 104/93/62 99/126/67
+f 99/126/67 104/93/62 105/95/61 100/127/66
+f 100/127/66 105/95/61 101/85/21 96/123/65
+f 101/128/21 106/129/56 107/130/60 102/131/64
+f 102/46/64 107/45/60 108/132/59 103/133/63
+f 103/133/63 108/132/59 109/134/58 104/135/62
+f 104/135/62 109/134/58 110/136/57 105/137/61
+f 105/137/61 110/136/57 106/129/56 101/128/21
+f 106/129/56 111/138/89 112/139/90 107/130/60
+f 107/45/60 112/53/90 113/140/54 108/132/59
+f 108/132/59 113/140/54 114/141/53 109/134/58
+f 109/134/58 114/141/53 115/142/91 110/136/57
+f 110/136/57 115/142/91 111/138/89 106/129/56
+f 111/138/89 116/143/92 117/144/93 112/139/90
+f 112/53/90 117/10/93 118/145/47 113/140/54
+f 113/140/54 118/145/47 119/146/45 114/141/53
+f 114/141/53 119/146/45 120/147/94 115/142/91
+f 115/142/91 120/147/94 116/143/92 111/138/89
+f 116/143/92 81/108/80 84/111/83 117/144/93
+f 117/10/93 84/9/83 86/113/48 118/145/47
+f 118/145/47 86/113/48 88/115/46 119/146/45
+f 119/146/45 88/115/46 90/117/85 120/147/94
+f 81/108/80 116/143/92 120/147/94 90/117/85
+f 121/148/95 122/149/96 123/150/97 124/151/98
+f 124/151/98 123/150/97 125/152/39 126/153/8
+f 126/153/8 125/152/39 127/154/38 128/155/6
+f 128/155/6 127/154/38 129/156/99 130/157/100
+f 121/148/95 130/103/100 129/58/99 122/149/96
+f 122/149/96 131/158/101 132/159/102 123/150/97
+f 123/150/97 132/159/102 133/160/34 125/152/39
+f 125/152/39 133/160/34 134/161/33 127/154/38
+f 127/154/38 134/161/33 135/162/103 129/156/99
+f 129/58/99 135/57/103 131/158/101 122/149/96
+f 131/158/101 136/163/26 137/164/104 132/159/102
+f 132/159/102 137/164/104 138/165/105 133/160/34
+f 133/160/34 138/165/105 139/166/28 134/161/33
+f 134/161/33 139/166/28 140/167/106 135/162/103
+f 135/57/103 140/68/106 136/163/26 131/158/101
+f 136/163/26 141/168/21 142/169/25 137/164/104
+f 137/164/104 142/169/25 143/170/24 138/165/105
+f 138/165/105 143/170/24 144/171/23 139/166/28
+f 139/166/28 144/171/23 145/172/22 140/167/106
+f 140/68/106 145/74/22 141/168/21 136/163/26
+f 141/168/21 146/173/16 147/174/107 142/169/25
+f 142/169/25 147/174/107 148/175/19 143/170/24
+f 143/170/24 148/175/19 149/176/18 144/171/23
+f 144/171/23 149/176/18 150/177/108 145/172/22
+f 145/74/22 150/80/108 146/173/16 141/168/21
+f 146/178/16 151/179/109 152/180/110 147/181/107
+f 147/181/107 152/180/110 153/182/14 148/183/19
+f 148/183/19 153/182/14 154/184/13 149/185/18
+f 149/185/18 154/184/13 155/186/111 150/187/108
+f 150/88/108 155/87/111 151/179/109 146/178/16
+f 151/179/109 156/188/112 157/189/113 152/180/110
+f 152/180/110 157/189/113 158/190/7 153/182/14
+f 153/182/14 158/190/7 159/191/5 154/184/13
+f 154/184/13 159/191/5 160/192/114 155/186/111
+f 155/87/111 160/97/114 156/188/112 151/179/109
+f 156/188/112 121/148/95 124/151/98 157/189/113
+f 157/189/113 124/151/98 126/153/8 158/190/7
+f 158/190/7 126/153/8 128/155/6 159/191/5
+f 159/191/5 128/155/6 130/157/100 160/192/114
+f 121/148/95 156/188/112 160/97/114 130/103/100
+f 161/193/80 162/194/115 163/60/82 164/59/83
+f 164/195/83 163/196/82 165/197/78 166/198/48
+f 166/198/48 165/197/78 167/199/77 168/200/46
+f 168/200/46 167/199/77 169/201/84 170/202/85
+f 161/193/80 170/202/85 169/201/84 162/194/115
+f 162/194/115 171/203/86 172/69/87 163/60/82
+f 163/196/82 172/204/87 173/205/73 165/197/78
+f 165/197/78 173/205/73 174/206/72 167/199/77
+f 167/199/77 174/206/72 175/207/88 169/201/84
+f 169/201/84 175/207/88 171/203/86 162/194/115
+f 171/203/86 176/208/116 177/75/69 172/69/87
+f 172/204/87 177/209/69 178/210/68 173/205/73
+f 173/205/73 178/210/68 179/211/67 174/206/72
+f 174/206/72 179/211/67 180/212/66 175/207/88
+f 175/207/88 180/212/66 176/208/116 171/203/86
+f 176/208/116 181/213/21 182/81/64 177/75/69
+f 177/209/69 182/214/64 183/215/63 178/210/68
+f 178/210/68 183/215/63 184/216/62 179/211/67
+f 179/211/67 184/216/62 185/217/61 180/212/66
+f 180/212/66 185/217/61 181/213/21 176/208/116
+f 181/34/21 186/218/117 187/89/60 182/35/64
+f 182/36/64 187/219/60 188/220/59 183/31/63
+f 183/31/63 188/220/59 189/221/58 184/32/62
+f 184/32/62 189/221/58 190/222/57 185/33/61
+f 185/33/61 190/222/57 186/218/117 181/34/21
+f 186/218/117 191/223/89 192/98/90 187/89/60
+f 187/219/60 192/224/90 193/225/54 188/220/59
+f 188/220/59 193/225/54 194/226/53 189/221/58
+f 189/221/58 194/226/53 195/227/91 190/222/57
+f 190/222/57 195/227/91 191/223/89 186/218/117
+f 191/223/89 196/228/92 197/104/93 192/98/90
+f 192/224/90 197/229/93 198/230/47 193/225/54
+f 193/225/54 198/230/47 199/231/45 194/226/53
+f 194/226/53 199/231/45 200/232/94 195/227/91
+f 195/227/91 200/232/94 196/228/92 191/223/89
+f 196/228/92 161/193/80 164/59/83 197/104/93
+f 197/229/93 164/195/83 166/198/48 198/230/47
+f 198/230/47 166/198/48 168/200/46 199/231/45
+f 199/231/45 168/200/46 170/202/85 200/232/94
+f 161/193/80 196/228/92 200/232/94 170/202/85
+f 201/233/1 202/234/2 203/235/118 204/236/119
+f 204/111/119 203/110/118 205/237/5 206/238/6
+f 206/238/6 205/237/5 207/239/7 208/240/8
+f 208/240/8 207/239/7 209/241/120 210/242/121
+f 201/233/1 210/242/121 209/241/120 202/234/2
+f 202/234/2 211/243/11 212/244/12 203/235/118
+f 203/110/118 212/119/12 213/245/13 205/237/5
+f 205/237/5 213/245/13 214/246/14 207/239/7
+f 207/239/7 214/246/14 215/247/15 209/241/120
+f 209/241/120 215/247/15 211/243/11 202/234/2
+f 211/243/11 216/248/16 217/249/108 212/244/12
+f 212/119/12 217/124/108 218/250/18 213/245/13
+f 213/245/13 218/250/18 219/251/19 214/246/14
+f 214/246/14 219/251/19 220/252/107 215/247/15
+f 215/247/15 220/252/107 216/248/16 211/243/11
+f 216/248/16 221/185/21 222/187/22 217/249/108
+f 217/124/108 222/88/22 223/178/23 218/250/18
+f 218/250/18 223/178/23 224/181/24 219/251/19
+f 219/251/19 224/181/24 225/183/25 220/252/107
+f 220/252/107 225/183/25 221/185/21 216/248/16
+f 221/253/21 226/254/26 227/255/106 222/256/22
+f 222/131/22 227/130/106 228/257/122 223/258/23
+f 223/258/23 228/257/122 229/259/29 224/260/24
+f 224/260/24 229/259/29 230/261/104 225/262/25
+f 225/262/25 230/261/104 226/254/26 221/253/21
+f 226/254/26 231/263/31 232/264/32 227/255/106
+f 227/130/106 232/139/32 233/265/33 228/257/122
+f 228/257/122 233/265/33 234/266/34 229/259/29
+f 229/259/29 234/266/34 235/267/123 230/261/104
+f 230/261/104 235/267/123 231/263/31 226/254/26
+f 231/263/31 236/268/36 237/269/37 232/264/32
+f 232/139/32 237/144/37 238/270/124 233/265/33
+f 233/265/33 238/270/124 239/271/125 234/266/34
+f 234/266/34 239/271/125 240/272/40 235/267/123
+f 235/267/123 240/272/40 236/268/36 231/263/31
+f 236/268/36 201/233/1 204/236/119 237/269/37
+f 237/144/37 204/111/119 206/238/6 238/270/124
+f 238/270/124 206/238/6 208/240/8 239/271/125
+f 239/271/125 208/240/8 210/242/121 240/272/40
+f 201/233/1 236/268/36 240/272/40 210/242/121
diff --git a/homedecor_modpack/chains/models/chains_chandelier.obj b/homedecor_modpack/chains/models/chains_chandelier.obj
new file mode 100644
index 0000000..83c609d
--- /dev/null
+++ b/homedecor_modpack/chains/models/chains_chandelier.obj
@@ -0,0 +1,1621 @@
+# Blender v2.73 (sub 0) OBJ File: 'chandelier.blend'
+# www.blender.org
+o Cylinder_Cylinder_candle
+v -0.295811 0.120775 -0.377471
+v -0.295811 -0.066725 -0.377471
+v -0.295811 0.120775 -0.329636
+v -0.295811 -0.066725 -0.329636
+v -0.329636 0.120775 -0.295811
+v -0.329636 -0.066725 -0.295811
+v -0.377471 0.120775 -0.295811
+v -0.377471 -0.066725 -0.295811
+v -0.411296 0.120775 -0.329636
+v -0.411296 -0.066725 -0.329636
+v -0.411296 0.120775 -0.377471
+v -0.411296 -0.066725 -0.377471
+v -0.377471 0.120775 -0.411296
+v -0.377470 -0.066725 -0.411296
+v -0.329636 0.120775 -0.411296
+v -0.329636 -0.066725 -0.411296
+v -0.300709 0.120777 -0.300709
+v -0.300709 0.314857 -0.300709
+v -0.406398 0.314857 -0.406398
+v -0.406398 0.120777 -0.406398
+v -0.406398 0.120777 -0.300709
+v -0.406398 0.314857 -0.300709
+v -0.300709 0.314857 -0.406398
+v -0.300709 0.120777 -0.406398
+v -0.300709 0.120777 -0.300709
+v -0.406398 0.120777 -0.406398
+v -0.406398 0.314857 -0.406398
+v -0.300709 0.314857 -0.300709
+v -0.406398 0.120777 -0.300709
+v -0.300709 0.120777 -0.406398
+v -0.300709 0.314857 -0.406398
+v -0.406398 0.314857 -0.300709
+v 0.383845 -0.242188 0.383845
+v 0.368699 -0.205088 0.368699
+v 0.338408 -0.205088 0.338408
+v 0.323262 -0.242188 0.323262
+v 0.338408 -0.279287 0.338408
+v 0.368699 -0.279287 0.368699
+v 0.501517 -0.242188 0.207735
+v 0.481728 -0.205088 0.199539
+v 0.442151 -0.205088 0.183145
+v 0.422362 -0.242188 0.174948
+v 0.442151 -0.279287 0.183145
+v 0.481728 -0.279287 0.199539
+v 0.542838 -0.242188 0.000000
+v 0.521419 -0.205088 0.000000
+v 0.478581 -0.205088 0.000000
+v 0.457162 -0.242188 0.000000
+v 0.478581 -0.279287 0.000000
+v 0.521419 -0.279287 0.000000
+v 0.501517 -0.242188 -0.207735
+v 0.481729 -0.205088 -0.199538
+v 0.442151 -0.205088 -0.183145
+v 0.422362 -0.242188 -0.174948
+v 0.442151 -0.279287 -0.183145
+v 0.481729 -0.279287 -0.199538
+v 0.383845 -0.242188 -0.383845
+v 0.368699 -0.205088 -0.368699
+v 0.338408 -0.205088 -0.338408
+v 0.323262 -0.242188 -0.323262
+v 0.338408 -0.279287 -0.338408
+v 0.368699 -0.279287 -0.368699
+v 0.207735 -0.242188 -0.501517
+v 0.199538 -0.205088 -0.481728
+v 0.183145 -0.205088 -0.442151
+v 0.174948 -0.242188 -0.422362
+v 0.183145 -0.279287 -0.442151
+v 0.199538 -0.279287 -0.481728
+v -0.000000 -0.242188 -0.542838
+v -0.000000 -0.205088 -0.521419
+v -0.000000 -0.205088 -0.478581
+v -0.000000 -0.242188 -0.457162
+v -0.000000 -0.279287 -0.478581
+v -0.000000 -0.279287 -0.521419
+v -0.207735 -0.242188 -0.501517
+v -0.199538 -0.205088 -0.481728
+v -0.183145 -0.205088 -0.442151
+v -0.174948 -0.242188 -0.422362
+v -0.183145 -0.279287 -0.442151
+v -0.199538 -0.279287 -0.481728
+v -0.383845 -0.242188 -0.383845
+v -0.368699 -0.205088 -0.368699
+v -0.338408 -0.205088 -0.338408
+v -0.323262 -0.242188 -0.323262
+v -0.338408 -0.279287 -0.338408
+v -0.368699 -0.279287 -0.368699
+v -0.501517 -0.242188 -0.207735
+v -0.481728 -0.205088 -0.199539
+v -0.442151 -0.205088 -0.183145
+v -0.422362 -0.242188 -0.174948
+v -0.442151 -0.279287 -0.183145
+v -0.481728 -0.279287 -0.199539
+v -0.542838 -0.242188 -0.000000
+v -0.521419 -0.205088 -0.000000
+v -0.478581 -0.205088 -0.000000
+v -0.457162 -0.242188 -0.000000
+v -0.478581 -0.279287 -0.000000
+v -0.521419 -0.279287 -0.000000
+v -0.501517 -0.242188 0.207735
+v -0.481729 -0.205088 0.199538
+v -0.442151 -0.205088 0.183145
+v -0.422362 -0.242188 0.174948
+v -0.442151 -0.279287 0.183145
+v -0.481729 -0.279287 0.199538
+v -0.383845 -0.242188 0.383845
+v -0.368699 -0.205088 0.368699
+v -0.338408 -0.205088 0.338408
+v -0.323262 -0.242188 0.323262
+v -0.338408 -0.279287 0.338408
+v -0.368699 -0.279287 0.368699
+v -0.207735 -0.242188 0.501517
+v -0.199538 -0.205088 0.481729
+v -0.183145 -0.205088 0.442151
+v -0.174948 -0.242188 0.422362
+v -0.183145 -0.279287 0.442151
+v -0.199538 -0.279287 0.481729
+v -0.000000 -0.242188 0.542838
+v -0.000000 -0.205088 0.521419
+v -0.000000 -0.205088 0.478581
+v -0.000000 -0.242188 0.457162
+v -0.000000 -0.279287 0.478581
+v -0.000000 -0.279287 0.521419
+v 0.207735 -0.242188 0.501517
+v 0.199538 -0.205088 0.481729
+v 0.183145 -0.205088 0.442151
+v 0.174948 -0.242188 0.422362
+v 0.183145 -0.279287 0.442151
+v 0.199538 -0.279287 0.481729
+v 0.000000 0.354683 0.080195
+v -0.014044 0.354683 0.069112
+v -0.009826 0.354683 0.057941
+v 0.009826 0.354683 0.057941
+v 0.014044 0.354683 0.069112
+v 0.000000 0.439455 0.055211
+v -0.014044 0.430321 0.048870
+v -0.009826 0.418094 0.040970
+v 0.009826 0.418094 0.040970
+v 0.014044 0.430321 0.048870
+v 0.000000 0.468325 0.000002
+v -0.014044 0.461651 0.000002
+v -0.009826 0.444361 0.000002
+v 0.009826 0.444361 0.000002
+v 0.014044 0.461651 0.000002
+v 0.000000 0.439455 -0.055206
+v -0.014044 0.430321 -0.048868
+v -0.009826 0.418094 -0.040967
+v 0.009826 0.418094 -0.040967
+v 0.014044 0.430321 -0.048868
+v 0.000000 0.354683 -0.080190
+v -0.014044 0.354683 -0.069108
+v -0.009826 0.354683 -0.057936
+v 0.009826 0.354683 -0.057936
+v 0.014044 0.354683 -0.069108
+v 0.021213 -0.492188 -0.021213
+v 0.057910 0.355469 -0.057910
+v 0.030000 -0.492188 -0.000000
+v 0.081897 0.355469 -0.000000
+v 0.021213 -0.492188 0.021213
+v 0.057910 0.355469 0.057910
+v -0.000000 -0.492188 0.030000
+v -0.000000 0.355469 0.081897
+v -0.021213 -0.492188 0.021213
+v -0.057910 0.355469 0.057910
+v -0.030000 -0.492188 -0.000000
+v -0.081897 0.355469 -0.000000
+v -0.021213 -0.492188 -0.021213
+v -0.057910 0.355469 -0.057910
+v 0.000000 -0.492188 -0.030000
+v 0.000000 0.355469 -0.081897
+v 0.021213 0.248535 -0.021213
+v 0.000000 0.248535 -0.030000
+v -0.021213 0.248535 -0.021213
+v -0.030000 0.248535 -0.000000
+v -0.021213 0.248535 0.021213
+v -0.000000 0.248535 0.030000
+v 0.021213 0.248535 0.021213
+v 0.030000 0.248535 -0.000000
+v 0.063770 0.337158 -0.063770
+v 0.000000 0.337158 -0.090184
+v -0.063770 0.337158 -0.063770
+v -0.090184 0.337158 -0.000000
+v -0.063770 0.337158 0.063770
+v -0.000000 0.337158 0.090184
+v 0.063770 0.337158 0.063770
+v 0.090184 0.337158 -0.000000
+v -0.142765 -0.489924 -0.142764
+v -0.158080 -0.477606 -0.127449
+v -0.158080 -0.452969 -0.127449
+v -0.142765 -0.440650 -0.142764
+v -0.127449 -0.452969 -0.158080
+v -0.127449 -0.477606 -0.158080
+v -0.372981 -0.265266 -0.372980
+v -0.380054 -0.265266 -0.348286
+v -0.362433 -0.265266 -0.330665
+v -0.337738 -0.265266 -0.337738
+v -0.330665 -0.265266 -0.362432
+v -0.348286 -0.265266 -0.380054
+v -0.348363 -0.353916 -0.348362
+v -0.355819 -0.349148 -0.325231
+v -0.340144 -0.339611 -0.309556
+v -0.317013 -0.334843 -0.317012
+v -0.309556 -0.339611 -0.340143
+v -0.325232 -0.349148 -0.355818
+v -0.291164 -0.429409 -0.291164
+v -0.300968 -0.420598 -0.270366
+v -0.289974 -0.402977 -0.259372
+v -0.269176 -0.394166 -0.269176
+v -0.259372 -0.402977 -0.289974
+v -0.270366 -0.420598 -0.300968
+v -0.220433 -0.474407 -0.220433
+v -0.233205 -0.462895 -0.202396
+v -0.227941 -0.439872 -0.197132
+v -0.209904 -0.428360 -0.209904
+v -0.197132 -0.439872 -0.227941
+v -0.202396 -0.462895 -0.233205
+v -0.010263 -0.490208 -0.010263
+v -0.025524 -0.477748 0.004998
+v -0.025524 -0.452827 0.004998
+v -0.010263 -0.440367 -0.010263
+v 0.004997 -0.452827 -0.025524
+v 0.004997 -0.477748 -0.025524
+v 0.000000 -0.500000 -0.000000
+v -0.332137 -0.135637 -0.344683
+v -0.332137 -0.135637 -0.362424
+v -0.332137 -0.209329 -0.362424
+v -0.285471 -0.061946 -0.381754
+v -0.332137 -0.209329 -0.344683
+v -0.285471 -0.061946 -0.325353
+v -0.344682 -0.209329 -0.332137
+v -0.325353 -0.061946 -0.285472
+v -0.362424 -0.209329 -0.332137
+v -0.381754 -0.061946 -0.285472
+v -0.374969 -0.209329 -0.344683
+v -0.421635 -0.061946 -0.325353
+v -0.374969 -0.209329 -0.362424
+v -0.421635 -0.061946 -0.381754
+v -0.362424 -0.209329 -0.374970
+v -0.381754 -0.061946 -0.421635
+v -0.344682 -0.209329 -0.374970
+v -0.325353 -0.061946 -0.421635
+v -0.344682 -0.135637 -0.332137
+v -0.362424 -0.135637 -0.332137
+v -0.374969 -0.135637 -0.344683
+v -0.374969 -0.135637 -0.362424
+v -0.362424 -0.135637 -0.374970
+v -0.344682 -0.135637 -0.374970
+v -0.328258 -0.098792 -0.414622
+v -0.378849 -0.098792 -0.414622
+v -0.292484 -0.098792 -0.378849
+v -0.332137 -0.172483 -0.344683
+v -0.414622 -0.098792 -0.378849
+v -0.344682 -0.172483 -0.332137
+v -0.414622 -0.098792 -0.328258
+v -0.362424 -0.172483 -0.332137
+v -0.378849 -0.098792 -0.292484
+v -0.374969 -0.172483 -0.344683
+v -0.328258 -0.098792 -0.292484
+v -0.374969 -0.172483 -0.362424
+v -0.292484 -0.098792 -0.328258
+v -0.362424 -0.172483 -0.374970
+v -0.332137 -0.172483 -0.362424
+v -0.344682 -0.172483 -0.374970
+v 0.377471 0.120775 -0.295811
+v 0.377471 -0.066725 -0.295811
+v 0.329636 0.120775 -0.295811
+v 0.329636 -0.066725 -0.295811
+v 0.295811 0.120775 -0.329636
+v 0.295811 -0.066725 -0.329636
+v 0.295811 0.120775 -0.377471
+v 0.295811 -0.066725 -0.377471
+v 0.329636 0.120775 -0.411296
+v 0.329636 -0.066725 -0.411296
+v 0.377471 0.120775 -0.411296
+v 0.377471 -0.066725 -0.411296
+v 0.411296 0.120775 -0.377471
+v 0.411296 -0.066725 -0.377471
+v 0.411296 0.120775 -0.329636
+v 0.411296 -0.066725 -0.329636
+v 0.300709 0.120777 -0.300709
+v 0.300709 0.314857 -0.300709
+v 0.406398 0.314857 -0.406398
+v 0.406398 0.120777 -0.406398
+v 0.300709 0.120777 -0.406398
+v 0.300709 0.314857 -0.406398
+v 0.406398 0.314857 -0.300709
+v 0.406398 0.120777 -0.300709
+v 0.300709 0.120777 -0.300709
+v 0.406398 0.120777 -0.406398
+v 0.406398 0.314857 -0.406398
+v 0.300709 0.314857 -0.300709
+v 0.300709 0.120777 -0.406398
+v 0.406398 0.120777 -0.300709
+v 0.406398 0.314857 -0.300709
+v 0.300709 0.314857 -0.406398
+v 0.142764 -0.489924 -0.142765
+v 0.127448 -0.477606 -0.158080
+v 0.127448 -0.452969 -0.158080
+v 0.142764 -0.440650 -0.142765
+v 0.158080 -0.452969 -0.127449
+v 0.158080 -0.477606 -0.127449
+v 0.372980 -0.265266 -0.372981
+v 0.348286 -0.265266 -0.380054
+v 0.330665 -0.265266 -0.362433
+v 0.337738 -0.265266 -0.337738
+v 0.362432 -0.265266 -0.330665
+v 0.380054 -0.265266 -0.348286
+v 0.348362 -0.353916 -0.348363
+v 0.325231 -0.349148 -0.355819
+v 0.309556 -0.339611 -0.340144
+v 0.317012 -0.334843 -0.317013
+v 0.340143 -0.339611 -0.309556
+v 0.355818 -0.349148 -0.325232
+v 0.291164 -0.429409 -0.291164
+v 0.270366 -0.420598 -0.300968
+v 0.259372 -0.402977 -0.289974
+v 0.269176 -0.394166 -0.269176
+v 0.289974 -0.402977 -0.259372
+v 0.300968 -0.420598 -0.270366
+v 0.220433 -0.474407 -0.220433
+v 0.202396 -0.462895 -0.233205
+v 0.197132 -0.439872 -0.227941
+v 0.209904 -0.428360 -0.209904
+v 0.227941 -0.439872 -0.197132
+v 0.233205 -0.462895 -0.202396
+v 0.010263 -0.490208 -0.010263
+v -0.004998 -0.477748 -0.025524
+v -0.004998 -0.452827 -0.025524
+v 0.010263 -0.440367 -0.010263
+v 0.025524 -0.452827 0.004997
+v 0.025524 -0.477748 0.004997
+v 0.344683 -0.135637 -0.332137
+v 0.362424 -0.135637 -0.332137
+v 0.362424 -0.209329 -0.332137
+v 0.381754 -0.061946 -0.285471
+v 0.344683 -0.209329 -0.332137
+v 0.325353 -0.061946 -0.285471
+v 0.332137 -0.209329 -0.344683
+v 0.285472 -0.061946 -0.325353
+v 0.332137 -0.209329 -0.362424
+v 0.285472 -0.061946 -0.381754
+v 0.344683 -0.209329 -0.374969
+v 0.325353 -0.061946 -0.421635
+v 0.362424 -0.209329 -0.374969
+v 0.381754 -0.061946 -0.421635
+v 0.374970 -0.209329 -0.362424
+v 0.421635 -0.061946 -0.381754
+v 0.374970 -0.209329 -0.344683
+v 0.421635 -0.061946 -0.325353
+v 0.332137 -0.135637 -0.344683
+v 0.332137 -0.135637 -0.362424
+v 0.344683 -0.135637 -0.374969
+v 0.362424 -0.135637 -0.374969
+v 0.374970 -0.135637 -0.362424
+v 0.374970 -0.135637 -0.344683
+v 0.414623 -0.098792 -0.328258
+v 0.414622 -0.098792 -0.378849
+v 0.378849 -0.098792 -0.292484
+v 0.344683 -0.172483 -0.332137
+v 0.378849 -0.098792 -0.414622
+v 0.332137 -0.172483 -0.344683
+v 0.328258 -0.098792 -0.414622
+v 0.332137 -0.172483 -0.362424
+v 0.292484 -0.098792 -0.378849
+v 0.344683 -0.172483 -0.374969
+v 0.292484 -0.098792 -0.328258
+v 0.362424 -0.172483 -0.374969
+v 0.328258 -0.098792 -0.292484
+v 0.374970 -0.172483 -0.362424
+v 0.362424 -0.172483 -0.332137
+v 0.374970 -0.172483 -0.344683
+v 0.295811 0.120775 0.377471
+v 0.295811 -0.066725 0.377471
+v 0.295811 0.120775 0.329636
+v 0.295811 -0.066725 0.329636
+v 0.329636 0.120775 0.295811
+v 0.329636 -0.066725 0.295811
+v 0.377471 0.120775 0.295811
+v 0.377471 -0.066725 0.295811
+v 0.411296 0.120775 0.329636
+v 0.411296 -0.066725 0.329636
+v 0.411296 0.120775 0.377471
+v 0.411296 -0.066725 0.377471
+v 0.377471 0.120775 0.411296
+v 0.377471 -0.066725 0.411296
+v 0.329636 0.120775 0.411296
+v 0.329636 -0.066725 0.411296
+v 0.300709 0.120776 0.300709
+v 0.300709 0.314857 0.300709
+v 0.406398 0.314857 0.406398
+v 0.406398 0.120776 0.406398
+v 0.406398 0.120776 0.300709
+v 0.406398 0.314857 0.300709
+v 0.300709 0.314857 0.406398
+v 0.300709 0.120776 0.406398
+v 0.300709 0.120776 0.300709
+v 0.406398 0.120776 0.406398
+v 0.406398 0.314857 0.406398
+v 0.300709 0.314857 0.300709
+v 0.406398 0.120776 0.300709
+v 0.300709 0.120776 0.406398
+v 0.300709 0.314857 0.406398
+v 0.406398 0.314857 0.300709
+v 0.142765 -0.489924 0.142764
+v 0.158080 -0.477606 0.127448
+v 0.158080 -0.452969 0.127449
+v 0.142765 -0.440650 0.142764
+v 0.127449 -0.452969 0.158080
+v 0.127449 -0.477606 0.158080
+v 0.372981 -0.265266 0.372980
+v 0.380054 -0.265266 0.348286
+v 0.362433 -0.265266 0.330665
+v 0.337738 -0.265266 0.337738
+v 0.330665 -0.265266 0.362432
+v 0.348286 -0.265266 0.380054
+v 0.348363 -0.353916 0.348362
+v 0.355819 -0.349148 0.325231
+v 0.340144 -0.339611 0.309556
+v 0.317013 -0.334843 0.317012
+v 0.309556 -0.339611 0.340143
+v 0.325232 -0.349148 0.355818
+v 0.291164 -0.429409 0.291164
+v 0.300968 -0.420598 0.270366
+v 0.289974 -0.402977 0.259372
+v 0.269176 -0.394166 0.269176
+v 0.259372 -0.402977 0.289974
+v 0.270366 -0.420598 0.300968
+v 0.220433 -0.474407 0.220433
+v 0.233205 -0.462895 0.202396
+v 0.227941 -0.439872 0.197132
+v 0.209904 -0.428360 0.209904
+v 0.197132 -0.439872 0.227941
+v 0.202396 -0.462895 0.233205
+v 0.010263 -0.490208 0.010263
+v 0.025524 -0.477748 -0.004998
+v 0.025524 -0.452827 -0.004998
+v 0.010263 -0.440367 0.010263
+v -0.004997 -0.452827 0.025524
+v -0.004997 -0.477748 0.025524
+v 0.332137 -0.135637 0.344683
+v 0.332137 -0.135637 0.362424
+v 0.332137 -0.209329 0.362424
+v 0.285472 -0.061946 0.381754
+v 0.332137 -0.209329 0.344683
+v 0.285471 -0.061946 0.325353
+v 0.344683 -0.209329 0.332137
+v 0.325353 -0.061946 0.285472
+v 0.362424 -0.209329 0.332137
+v 0.381754 -0.061946 0.285472
+v 0.374969 -0.209329 0.344683
+v 0.421635 -0.061946 0.325353
+v 0.374970 -0.209329 0.362424
+v 0.421635 -0.061946 0.381754
+v 0.362424 -0.209329 0.374970
+v 0.381754 -0.061946 0.421635
+v 0.344683 -0.209329 0.374970
+v 0.325353 -0.061946 0.421635
+v 0.344683 -0.135637 0.332137
+v 0.362424 -0.135637 0.332137
+v 0.374969 -0.135637 0.344683
+v 0.374970 -0.135637 0.362424
+v 0.362424 -0.135637 0.374970
+v 0.344683 -0.135637 0.374970
+v 0.328258 -0.098792 0.414622
+v 0.378849 -0.098792 0.414622
+v 0.292484 -0.098792 0.378849
+v 0.332137 -0.172483 0.344683
+v 0.414622 -0.098792 0.378849
+v 0.344683 -0.172483 0.332137
+v 0.414622 -0.098792 0.328258
+v 0.362424 -0.172483 0.332137
+v 0.378849 -0.098792 0.292484
+v 0.374969 -0.172483 0.344683
+v 0.328258 -0.098792 0.292484
+v 0.374970 -0.172483 0.362424
+v 0.292484 -0.098792 0.328258
+v 0.362424 -0.172483 0.374970
+v 0.332137 -0.172483 0.362424
+v 0.344683 -0.172483 0.374970
+v -0.377471 0.120775 0.295811
+v -0.377471 -0.066725 0.295811
+v -0.329636 0.120775 0.295811
+v -0.329636 -0.066725 0.295811
+v -0.295811 0.120775 0.329636
+v -0.295811 -0.066725 0.329636
+v -0.295811 0.120775 0.377471
+v -0.295811 -0.066725 0.377471
+v -0.329636 0.120775 0.411296
+v -0.329636 -0.066725 0.411296
+v -0.377470 0.120775 0.411296
+v -0.377471 -0.066725 0.411296
+v -0.411296 0.120775 0.377471
+v -0.411296 -0.066725 0.377471
+v -0.411296 0.120775 0.329636
+v -0.411296 -0.066725 0.329636
+v -0.300709 0.120777 0.300709
+v -0.300709 0.314857 0.300709
+v -0.406398 0.314857 0.406398
+v -0.406398 0.120777 0.406398
+v -0.300709 0.120777 0.406398
+v -0.300709 0.314857 0.406398
+v -0.406398 0.314857 0.300709
+v -0.406398 0.120777 0.300709
+v -0.300709 0.120777 0.300709
+v -0.406398 0.120777 0.406398
+v -0.406398 0.314857 0.406398
+v -0.300709 0.314857 0.300709
+v -0.300709 0.120777 0.406398
+v -0.406398 0.120777 0.300709
+v -0.406398 0.314857 0.300709
+v -0.300709 0.314857 0.406398
+v -0.142764 -0.489924 0.142765
+v -0.127448 -0.477606 0.158080
+v -0.127448 -0.452969 0.158080
+v -0.142764 -0.440650 0.142765
+v -0.158080 -0.452969 0.127449
+v -0.158080 -0.477606 0.127449
+v -0.372980 -0.265266 0.372981
+v -0.348286 -0.265266 0.380054
+v -0.330665 -0.265266 0.362433
+v -0.337738 -0.265266 0.337738
+v -0.362432 -0.265266 0.330665
+v -0.380054 -0.265266 0.348286
+v -0.348362 -0.353916 0.348363
+v -0.325231 -0.349148 0.355819
+v -0.309556 -0.339611 0.340144
+v -0.317012 -0.334843 0.317013
+v -0.340143 -0.339611 0.309557
+v -0.355818 -0.349148 0.325232
+v -0.291164 -0.429409 0.291165
+v -0.270366 -0.420598 0.300968
+v -0.259372 -0.402977 0.289974
+v -0.269176 -0.394166 0.269176
+v -0.289974 -0.402977 0.259372
+v -0.300968 -0.420598 0.270366
+v -0.220433 -0.474407 0.220433
+v -0.202396 -0.462895 0.233205
+v -0.197132 -0.439872 0.227941
+v -0.209904 -0.428360 0.209904
+v -0.227941 -0.439872 0.197132
+v -0.233205 -0.462895 0.202396
+v -0.010263 -0.490208 0.010263
+v 0.004998 -0.477748 0.025524
+v 0.004998 -0.452827 0.025524
+v -0.010263 -0.440367 0.010263
+v -0.025524 -0.452827 -0.004997
+v -0.025524 -0.477748 -0.004997
+v -0.344683 -0.135637 0.332137
+v -0.362424 -0.135637 0.332137
+v -0.362424 -0.209329 0.332137
+v -0.381754 -0.061946 0.285472
+v -0.344683 -0.209329 0.332137
+v -0.325353 -0.061946 0.285472
+v -0.332137 -0.209329 0.344683
+v -0.285472 -0.061946 0.325353
+v -0.332137 -0.209329 0.362424
+v -0.285472 -0.061946 0.381754
+v -0.344683 -0.209329 0.374970
+v -0.325353 -0.061946 0.421635
+v -0.362424 -0.209329 0.374970
+v -0.381754 -0.061946 0.421635
+v -0.374970 -0.209329 0.362424
+v -0.421635 -0.061946 0.381754
+v -0.374969 -0.209329 0.344683
+v -0.421635 -0.061946 0.325353
+v -0.332137 -0.135637 0.344683
+v -0.332137 -0.135637 0.362424
+v -0.344682 -0.135637 0.374970
+v -0.362424 -0.135637 0.374970
+v -0.374970 -0.135637 0.362424
+v -0.374970 -0.135637 0.344683
+v -0.414622 -0.098792 0.328258
+v -0.414622 -0.098792 0.378849
+v -0.378849 -0.098792 0.292484
+v -0.344683 -0.172483 0.332137
+v -0.378849 -0.098792 0.414622
+v -0.332137 -0.172483 0.344683
+v -0.328258 -0.098792 0.414622
+v -0.332137 -0.172483 0.362424
+v -0.292484 -0.098792 0.378849
+v -0.344683 -0.172483 0.374970
+v -0.292484 -0.098792 0.328258
+v -0.362424 -0.172483 0.374970
+v -0.328258 -0.098792 0.292484
+v -0.374970 -0.172483 0.362424
+v -0.362424 -0.172483 0.332137
+v -0.374970 -0.172483 0.344683
+vt 0.687500 0.812500
+vt 0.750000 0.812500
+vt 0.750000 0.875000
+vt 0.687500 0.875000
+vt 0.750000 0.937500
+vt 0.687500 0.937500
+vt 0.750000 1.000000
+vt 0.687500 1.000000
+vt 0.687500 0.625000
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vt 0.687500 0.687500
+vt 0.750000 0.750000
+vt 0.687500 0.750000
+vt 0.812500 0.812500
+vt 0.812500 0.875000
+vt 0.812500 0.937500
+vt 0.812500 1.000000
+vt 0.812500 0.625000
+vt 0.812500 0.687500
+vt 0.812500 0.750000
+vt 0.875000 0.812500
+vt 0.875000 0.875000
+vt 0.875000 0.937500
+vt 0.875000 1.000000
+vt 0.875000 0.625000
+vt 0.875000 0.687500
+vt 0.875000 0.750000
+vt 0.937500 0.812500
+vt 0.937500 0.875000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.937500 0.625000
+vt 0.937500 0.687500
+vt 0.937500 0.750000
+vt 1.000000 0.812500
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 1.000000 0.625000
+vt 1.000000 0.687500
+vt 1.000000 0.750000
+vt 0.000000 0.812500
+vt 0.062500 0.812500
+vt 0.062500 0.875000
+vt 0.000000 0.875000
+vt 0.062500 0.937500
+vt 0.000000 0.937500
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.625000
+vt 0.062500 0.625000
+vt 0.062500 0.687500
+vt 0.000000 0.687500
+vt 0.062500 0.750000
+vt 0.000000 0.750000
+vt 0.125000 0.812500
+vt 0.125000 0.875000
+vt 0.125000 0.937500
+vt 0.125000 1.000000
+vt 0.125000 0.625000
+vt 0.125000 0.687500
+vt 0.125000 0.750000
+vt 0.187500 0.812500
+vt 0.187500 0.875000
+vt 0.187500 0.937500
+vt 0.187500 1.000000
+vt 0.187500 0.625000
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.250000 0.812500
+vt 0.250000 0.875000
+vt 0.250000 0.937500
+vt 0.250000 1.000000
+vt 0.250000 0.625000
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.312500 0.812500
+vt 0.312500 0.875000
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.312500 0.625000
+vt 0.312500 0.687500
+vt 0.312500 0.750000
+vt 0.375000 0.812500
+vt 0.375000 0.875000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.375000 0.625000
+vt 0.375000 0.687500
+vt 0.375000 0.750000
+vt 0.437500 0.812500
+vt 0.437500 0.875000
+vt 0.437500 0.937500
+vt 0.437500 1.000000
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 0.437500 0.750000
+vt 0.500000 0.812500
+vt 0.500000 0.875000
+vt 0.500000 0.937500
+vt 0.500000 1.000000
+vt 0.500000 0.625000
+vt 0.500000 0.687500
+vt 0.500000 0.750000
+vt 0.562500 0.812500
+vt 0.562500 0.875000
+vt 0.562500 0.937500
+vt 0.562500 1.000000
+vt 0.562500 0.625000
+vt 0.562500 0.687500
+vt 0.562500 0.750000
+vt 0.625000 0.812500
+vt 0.625000 0.875000
+vt 0.625000 0.937500
+vt 0.625000 1.000000
+vt 0.625000 0.625000
+vt 0.625000 0.687500
+vt 0.625000 0.750000
+vt 0.750000 0.500000
+vt 0.812500 0.500000
+vt 0.812500 0.562500
+vt 0.750000 0.562500
+vt 0.750000 0.312500
+vt 0.812500 0.312500
+vt 0.812500 0.375000
+vt 0.750000 0.375000
+vt 0.812500 0.437500
+vt 0.750000 0.437500
+vt 0.875000 0.500000
+vt 0.875000 0.562500
+vt 0.875000 0.312500
+vt 0.875000 0.375000
+vt 0.875000 0.437500
+vt 0.937500 0.500000
+vt 0.937500 0.562500
+vt 0.937500 0.312500
+vt 0.937500 0.375000
+vt 0.937500 0.437500
+vt 1.000000 0.500000
+vt 1.000000 0.562500
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 1.000000 0.437500
+vt 0.750000 0.062500
+vt 0.687500 0.062500
+vt 0.625000 0.062500
+vt 0.562500 0.062500
+vt 0.812500 0.062500
+vt 1.000000 0.062500
+vt 0.937500 0.062500
+vt 0.433478 0.933478
+vt 0.375000 0.957700
+vt 0.316522 0.933478
+vt 0.292299 0.875000
+vt 0.316522 0.816522
+vt 0.375000 0.792300
+vt 0.433478 0.816522
+vt 0.457700 0.875000
+vt 0.875000 0.062500
+vt 0.500000 0.062500
+vt 0.250000 0.125000
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.250000 0.187500
+vt 0.375000 0.250000
+vt 0.250000 0.250000
+vt 0.375000 0.312500
+vt 0.250000 0.312500
+vt 0.375000 0.375000
+vt 0.250000 0.375000
+vt 0.375000 0.437500
+vt 0.250000 0.437500
+vt 0.375000 0.500000
+vt 0.250000 0.500000
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.500000 0.250000
+vt 0.500000 0.312500
+vt 0.500000 0.375000
+vt 0.500000 0.437500
+vt 0.500000 0.500000
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.625000 0.250000
+vt 0.625000 0.312500
+vt 0.625000 0.375000
+vt 0.625000 0.437500
+vt 0.625000 0.500000
+vt 0.750000 0.125000
+vt 0.750000 0.187500
+vt 0.750000 0.250000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 1.000000 0.125000
+vt 0.562500 0.905294
+vt 0.583921 0.896421
+vt 0.592794 0.875000
+vt 0.583921 0.853579
+vt 0.562500 0.844706
+vt 0.541079 0.853579
+vt 0.532206 0.875000
+vt 0.541079 0.896421
+vt 0.250000 0.562500
+vt 0.187500 0.562500
+vt 0.187500 0.500000
+vt 0.187500 0.312500
+vt 0.125000 0.312500
+vt 0.125000 0.250000
+vt 0.187500 0.250000
+vt 0.062500 0.437500
+vt 0.000000 0.437500
+vt 0.000000 0.375000
+vt 0.062500 0.375000
+vt 0.187500 0.437500
+vt 0.187500 0.375000
+vt 0.125000 0.187500
+vt 0.187500 0.187500
+vt 0.000000 0.312500
+vt 0.062500 0.312500
+vt 0.125000 0.500000
+vt 0.062500 0.500000
+vt 0.125000 0.437500
+vt 0.125000 0.125000
+vt 0.187500 0.125000
+vt 0.000000 0.250000
+vt 0.062500 0.250000
+vt 0.125000 0.562500
+vt 0.062500 0.562500
+vt 0.125000 0.062500
+vt 0.187500 0.062500
+vt 0.000000 0.187500
+vt 0.062500 0.187500
+vt 0.000000 0.125000
+vt 0.062500 0.125000
+vt 0.125000 0.375000
+vt 0.000000 0.062500
+vt 0.062500 0.062500
+vt 0.193749 0.903477
+vt 0.153477 0.943749
+vt 0.096523 0.943749
+vt 0.056250 0.903477
+vt 0.056250 0.846523
+vt 0.096523 0.806251
+vt 0.153477 0.806251
+vt 0.193749 0.846523
+vt 0.000000 0.500000
+vt 0.000000 0.562500
+vt 0.250000 0.062500
+vt 0.875000 0.250000
+vt 0.454164 0.776526
+vt 0.476190 0.785650
+vt 0.498216 0.776526
+vt 0.507340 0.754500
+vt 0.498216 0.732474
+vt 0.476190 0.723350
+vt 0.454164 0.732474
+vt 0.445040 0.754500
+vt 1.000000 -0.000000
+vt -0.000000 -0.000000
+vn 0.707100 0.000000 0.707100
+vn 0.923900 0.000000 0.382700
+vn 0.502500 0.839100 0.208200
+vn 0.384600 0.839100 0.384600
+vn -0.416000 0.892900 -0.172300
+vn -0.318400 0.892900 -0.318400
+vn -0.923900 0.000000 -0.382700
+vn -0.707100 0.000000 -0.707100
+vn -0.416000 -0.892900 -0.172300
+vn -0.318400 -0.892900 -0.318400
+vn 0.502500 -0.839100 0.208200
+vn 0.384600 -0.839100 0.384600
+vn 1.000000 0.000000 0.000000
+vn 0.544000 0.839100 0.000000
+vn -0.450300 0.892900 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.450300 -0.892900 0.000000
+vn 0.544000 -0.839100 0.000000
+vn 0.923900 0.000000 -0.382700
+vn 0.502500 0.839100 -0.208200
+vn -0.416000 0.892900 0.172300
+vn -0.923900 0.000000 0.382700
+vn -0.416000 -0.892900 0.172300
+vn 0.502500 -0.839100 -0.208200
+vn 0.707100 0.000000 -0.707100
+vn 0.384600 0.839100 -0.384600
+vn -0.318400 0.892900 0.318400
+vn -0.707100 0.000000 0.707100
+vn -0.318400 -0.892900 0.318400
+vn 0.384600 -0.839100 -0.384600
+vn 0.382700 0.000000 -0.923900
+vn 0.208200 0.839100 -0.502500
+vn -0.172300 0.892900 0.416000
+vn -0.382700 0.000000 0.923900
+vn -0.172300 -0.892900 0.416000
+vn 0.208200 -0.839100 -0.502500
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.839100 -0.544000
+vn 0.000000 0.892900 0.450300
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -0.892900 0.450300
+vn 0.000000 -0.839100 -0.544000
+vn -0.382700 0.000000 -0.923900
+vn -0.208200 0.839100 -0.502500
+vn 0.172300 0.892900 0.416000
+vn 0.382700 0.000000 0.923900
+vn 0.172300 -0.892900 0.416000
+vn -0.208200 -0.839100 -0.502500
+vn -0.384600 0.839100 -0.384600
+vn 0.318400 0.892900 0.318400
+vn 0.318400 -0.892900 0.318400
+vn -0.384600 -0.839100 -0.384600
+vn -0.502500 0.839100 -0.208200
+vn 0.416000 0.892900 0.172300
+vn 0.416000 -0.892900 0.172300
+vn -0.502500 -0.839100 -0.208200
+vn -0.544000 0.839100 0.000000
+vn 0.450300 0.892900 0.000000
+vn 0.450300 -0.892900 0.000000
+vn -0.544000 -0.839100 0.000000
+vn -0.502500 0.839100 0.208200
+vn 0.416000 0.892900 -0.172300
+vn 0.416000 -0.892900 -0.172300
+vn -0.502500 -0.839100 0.208200
+vn -0.384600 0.839100 0.384600
+vn 0.318400 0.892900 -0.318400
+vn 0.318400 -0.892900 -0.318400
+vn -0.384600 -0.839100 0.384600
+vn -0.208200 0.839100 0.502500
+vn 0.172300 0.892900 -0.416000
+vn 0.172300 -0.892900 -0.416000
+vn -0.208200 -0.839100 0.502500
+vn 0.000000 0.839100 0.544000
+vn 0.000000 0.892900 -0.450300
+vn 0.000000 -0.892900 -0.450300
+vn 0.000000 -0.839100 0.544000
+vn 0.208200 0.839100 0.502500
+vn -0.172300 0.892900 -0.416000
+vn -0.172300 -0.892900 -0.416000
+vn 0.208200 -0.839100 0.502500
+vn 0.000000 0.271400 0.962500
+vn 0.000000 0.657400 0.753500
+vn -0.898300 0.248500 0.362300
+vn -0.919700 0.109100 0.377200
+vn -0.661500 -0.421500 -0.620200
+vn -0.603800 -0.206100 -0.770000
+vn 0.661500 -0.421500 -0.620200
+vn 0.603800 -0.206100 -0.770000
+vn 0.898300 0.248500 0.362300
+vn 0.919700 0.109100 0.377200
+vn 0.000000 1.000000 0.000000
+vn -0.866100 0.499800 0.000000
+vn -0.746000 -0.665900 0.000000
+vn 0.746000 -0.665900 0.000000
+vn 0.866100 0.499800 0.000000
+vn 0.000000 0.657400 -0.753500
+vn -0.898300 0.248500 -0.362400
+vn -0.661500 -0.421500 0.620200
+vn 0.661500 -0.421500 0.620200
+vn 0.898300 0.248500 -0.362400
+vn 0.000000 0.271300 -0.962500
+vn -0.919700 0.109100 -0.377300
+vn -0.603800 -0.206100 0.770000
+vn 0.603800 -0.206100 0.770000
+vn 0.919700 0.109100 -0.377300
+vn 0.705000 -0.077000 -0.705000
+vn 0.441300 0.781300 -0.441300
+vn 0.624100 0.781300 0.000000
+vn 0.997000 -0.077000 0.000000
+vn 0.441300 0.781300 0.441300
+vn 0.705000 -0.077000 0.705000
+vn 0.000000 0.781300 0.624100
+vn 0.000000 -0.077000 0.997000
+vn 0.000000 -0.316200 0.948700
+vn -0.670800 -0.316200 0.670800
+vn -0.591400 -0.548100 0.591400
+vn 0.000000 -0.548100 0.836400
+vn 0.948700 -0.316200 0.000000
+vn 0.670800 -0.316200 0.670800
+vn 0.591400 -0.548100 0.591400
+vn 0.836400 -0.548100 0.000000
+vn -0.441300 0.781300 0.441300
+vn -0.705000 -0.077000 0.705000
+vn -0.948700 -0.316200 0.000000
+vn -0.836400 -0.548100 0.000000
+vn -0.624100 0.781300 0.000000
+vn -0.997000 -0.077000 0.000000
+vn 0.000000 -0.316200 -0.948700
+vn 0.670800 -0.316200 -0.670800
+vn 0.591400 -0.548100 -0.591400
+vn 0.000000 -0.548100 -0.836400
+vn -0.441300 0.781300 -0.441300
+vn -0.705000 -0.077000 -0.705000
+vn 0.000000 0.781300 -0.624100
+vn 0.000000 -0.077000 -0.997000
+vn -0.670800 -0.316200 -0.670800
+vn -0.591400 -0.548100 -0.591400
+vn -0.656900 -0.370100 -0.656900
+vn -0.588500 -0.554300 -0.588500
+vn -0.908700 -0.325900 0.260900
+vn -0.959400 -0.228900 0.164600
+vn -0.365700 0.254800 0.895100
+vn -0.365200 0.154400 0.918000
+vn 0.569700 0.592400 0.569700
+vn 0.653400 0.382100 0.653400
+vn 0.895100 0.254800 -0.365700
+vn 0.918000 0.154400 -0.365200
+vn 0.260900 -0.325900 -0.908700
+vn 0.164600 -0.228900 -0.959400
+vn -0.393900 -0.830400 -0.393900
+vn -0.802900 -0.461100 0.377800
+vn -0.444700 0.398100 0.802300
+vn 0.369900 0.852200 0.369900
+vn 0.802300 0.398100 -0.444700
+vn 0.377800 -0.461100 -0.802900
+vn -0.196100 -0.960800 -0.196100
+vn -0.699900 -0.519500 0.490100
+vn -0.534000 0.459500 0.709600
+vn 0.181700 0.966400 0.181700
+vn 0.709600 0.459500 -0.534000
+vn 0.490100 -0.519500 -0.699900
+vn -0.048400 -0.997600 -0.048400
+vn -0.630000 -0.518800 0.577900
+vn -0.595000 0.486700 0.639600
+vn 0.046900 0.997800 0.046900
+vn 0.639600 0.486700 -0.595000
+vn 0.577900 -0.518800 -0.630000
+vn -0.611900 -0.501600 0.611500
+vn -0.611900 0.501600 0.611500
+vn -0.000700 1.000000 -0.000700
+vn 0.611500 0.501600 -0.611900
+vn -0.000700 -1.000000 -0.000700
+vn 0.611500 -0.501600 -0.611900
+vn 0.000000 -1.000000 0.000000
+vn 0.339400 -0.461800 0.819400
+vn -0.339400 -0.461800 0.819400
+vn 0.812600 -0.475700 -0.336600
+vn 0.770000 0.552600 -0.318900
+vn 0.770000 0.552600 0.318900
+vn 0.812600 -0.475700 0.336600
+vn -0.819400 -0.461800 0.339400
+vn 0.318900 0.552600 0.770000
+vn 0.336600 -0.475700 0.812600
+vn 0.339400 -0.461800 -0.819400
+vn 0.336600 -0.475700 -0.812600
+vn 0.819400 -0.461800 -0.339400
+vn -0.819400 -0.461800 -0.339400
+vn -0.318900 0.552600 0.770000
+vn -0.336600 -0.475700 0.812600
+vn -0.339400 -0.461800 -0.819400
+vn -0.336600 -0.475700 -0.812600
+vn -0.770000 0.552600 0.318900
+vn -0.812600 -0.475700 0.336600
+vn -0.770000 0.552600 -0.318900
+vn -0.812600 -0.475700 -0.336600
+vn 0.819400 -0.461800 0.339400
+vn -0.318900 0.552600 -0.770000
+vn 0.318900 0.552600 -0.770000
+vn 0.656900 -0.370100 -0.656900
+vn 0.588500 -0.554300 -0.588500
+vn -0.260900 -0.325900 -0.908700
+vn -0.164600 -0.228900 -0.959400
+vn -0.895100 0.254800 -0.365700
+vn -0.918000 0.154400 -0.365200
+vn -0.569700 0.592400 0.569700
+vn -0.653400 0.382100 0.653400
+vn 0.365700 0.254800 0.895100
+vn 0.365200 0.154400 0.918000
+vn 0.908700 -0.325900 0.260900
+vn 0.959400 -0.228900 0.164600
+vn 0.393900 -0.830400 -0.393900
+vn -0.377800 -0.461100 -0.802900
+vn -0.802300 0.398100 -0.444700
+vn -0.369900 0.852200 0.369900
+vn 0.444700 0.398100 0.802300
+vn 0.802900 -0.461100 0.377800
+vn 0.196100 -0.960800 -0.196100
+vn -0.490100 -0.519500 -0.699900
+vn -0.709600 0.459500 -0.534000
+vn -0.181700 0.966400 0.181700
+vn 0.534000 0.459500 0.709600
+vn 0.699900 -0.519500 0.490100
+vn 0.048400 -0.997600 -0.048400
+vn -0.577900 -0.518800 -0.630000
+vn -0.639600 0.486700 -0.595000
+vn -0.046900 0.997800 0.046900
+vn 0.595000 0.486700 0.639600
+vn 0.630000 -0.518800 0.577900
+vn -0.611500 -0.501600 -0.611900
+vn -0.611500 0.501600 -0.611900
+vn 0.000700 1.000000 -0.000700
+vn 0.611900 0.501600 0.611500
+vn 0.000700 -1.000000 -0.000700
+vn 0.611900 -0.501600 0.611500
+vn 0.656900 -0.370100 0.656900
+vn 0.588500 -0.554300 0.588500
+vn 0.908700 -0.325900 -0.260900
+vn 0.959400 -0.228900 -0.164600
+vn 0.365700 0.254800 -0.895100
+vn 0.365200 0.154400 -0.918000
+vn -0.569700 0.592400 -0.569700
+vn -0.653400 0.382100 -0.653400
+vn -0.895100 0.254800 0.365700
+vn -0.918000 0.154400 0.365200
+vn -0.260900 -0.325900 0.908700
+vn -0.164600 -0.228900 0.959400
+vn 0.393900 -0.830400 0.393900
+vn 0.802900 -0.461100 -0.377800
+vn 0.444700 0.398100 -0.802300
+vn -0.369900 0.852200 -0.369900
+vn -0.802300 0.398100 0.444700
+vn -0.377800 -0.461100 0.802900
+vn 0.196100 -0.960800 0.196100
+vn 0.699900 -0.519500 -0.490100
+vn 0.534000 0.459500 -0.709600
+vn -0.181700 0.966400 -0.181700
+vn -0.709600 0.459500 0.534000
+vn -0.490100 -0.519500 0.699900
+vn 0.048400 -0.997600 0.048400
+vn 0.630000 -0.518800 -0.577900
+vn 0.595000 0.486700 -0.639600
+vn -0.046900 0.997800 -0.046900
+vn -0.639600 0.486700 0.595000
+vn -0.577900 -0.518800 0.630000
+vn 0.611900 -0.501600 -0.611500
+vn 0.611900 0.501600 -0.611500
+vn 0.000700 1.000000 0.000700
+vn -0.611500 0.501600 0.611900
+vn 0.000700 -1.000000 0.000700
+vn -0.611500 -0.501600 0.611900
+vn -0.656900 -0.370100 0.656900
+vn -0.588500 -0.554300 0.588500
+vn 0.260900 -0.325900 0.908700
+vn 0.164600 -0.228900 0.959400
+vn 0.895100 0.254800 0.365700
+vn 0.918000 0.154400 0.365200
+vn 0.569700 0.592400 -0.569700
+vn 0.653400 0.382100 -0.653400
+vn -0.365700 0.254800 -0.895100
+vn -0.365200 0.154400 -0.918000
+vn -0.908700 -0.325900 -0.260800
+vn -0.959400 -0.228900 -0.164600
+vn -0.393900 -0.830400 0.393900
+vn 0.377800 -0.461100 0.802900
+vn 0.802300 0.398100 0.444700
+vn 0.369900 0.852200 -0.369900
+vn -0.444700 0.398100 -0.802300
+vn -0.802900 -0.461100 -0.377800
+vn -0.196100 -0.960800 0.196100
+vn 0.490100 -0.519500 0.699900
+vn 0.709600 0.459500 0.534000
+vn 0.181700 0.966400 -0.181700
+vn -0.534000 0.459500 -0.709600
+vn -0.699900 -0.519500 -0.490100
+vn -0.048400 -0.997600 0.048400
+vn 0.577900 -0.518800 0.630000
+vn 0.639600 0.486700 0.595000
+vn 0.046900 0.997800 -0.046900
+vn -0.595000 0.486700 -0.639600
+vn -0.630000 -0.518800 -0.577900
+vn 0.611500 -0.501600 0.611900
+vn 0.611500 0.501600 0.611900
+vn -0.000700 1.000000 0.000700
+vn -0.611900 0.501600 -0.611500
+vn -0.000700 -1.000000 0.000700
+vn -0.611900 -0.501600 -0.611500
+vn -0.297100 0.630200 -0.717300
+vn 0.297100 0.630200 -0.717300
+vn -0.717300 0.630200 0.297100
+vn -0.297100 0.630200 0.717300
+vn -0.717300 0.630200 -0.297100
+vn 0.717300 0.630200 0.297100
+vn 0.717300 0.630200 -0.297100
+vn 0.297100 0.630200 0.717300
+g Cylinder_Cylinder_candle_Cylinder_Cylinder_candle_metal
+s 1
+f 33/1/1 39/2/2 40/3/3 34/4/4
+f 34/4/4 40/3/3 41/5/5 35/6/6
+f 35/6/6 41/5/5 42/7/7 36/8/8
+f 36/9/8 42/10/7 43/11/9 37/12/10
+f 37/12/10 43/11/9 44/13/11 38/14/12
+f 33/1/1 38/14/12 44/13/11 39/2/2
+f 39/2/2 45/15/13 46/16/14 40/3/3
+f 40/3/3 46/16/14 47/17/15 41/5/5
+f 41/5/5 47/17/15 48/18/16 42/7/7
+f 42/10/7 48/19/16 49/20/17 43/11/9
+f 43/11/9 49/20/17 50/21/18 44/13/11
+f 44/13/11 50/21/18 45/15/13 39/2/2
+f 45/15/13 51/22/19 52/23/20 46/16/14
+f 46/16/14 52/23/20 53/24/21 47/17/15
+f 47/17/15 53/24/21 54/25/22 48/18/16
+f 48/19/16 54/26/22 55/27/23 49/20/17
+f 49/20/17 55/27/23 56/28/24 50/21/18
+f 50/21/18 56/28/24 51/22/19 45/15/13
+f 51/22/19 57/29/25 58/30/26 52/23/20
+f 52/23/20 58/30/26 59/31/27 53/24/21
+f 53/24/21 59/31/27 60/32/28 54/25/22
+f 54/26/22 60/33/28 61/34/29 55/27/23
+f 55/27/23 61/34/29 62/35/30 56/28/24
+f 56/28/24 62/35/30 57/29/25 51/22/19
+f 57/29/25 63/36/31 64/37/32 58/30/26
+f 58/30/26 64/37/32 65/38/33 59/31/27
+f 59/31/27 65/38/33 66/39/34 60/32/28
+f 60/33/28 66/40/34 67/41/35 61/34/29
+f 61/34/29 67/41/35 68/42/36 62/35/30
+f 62/35/30 68/42/36 63/36/31 57/29/25
+f 63/43/31 69/44/37 70/45/38 64/46/32
+f 64/46/32 70/45/38 71/47/39 65/48/33
+f 65/48/33 71/47/39 72/49/40 66/50/34
+f 66/51/34 72/52/40 73/53/41 67/54/35
+f 67/54/35 73/53/41 74/55/42 68/56/36
+f 68/56/36 74/55/42 69/44/37 63/43/31
+f 69/44/37 75/57/43 76/58/44 70/45/38
+f 70/45/38 76/58/44 77/59/45 71/47/39
+f 71/47/39 77/59/45 78/60/46 72/49/40
+f 72/52/40 78/61/46 79/62/47 73/53/41
+f 73/53/41 79/62/47 80/63/48 74/55/42
+f 74/55/42 80/63/48 75/57/43 69/44/37
+f 75/57/43 81/64/8 82/65/49 76/58/44
+f 76/58/44 82/65/49 83/66/50 77/59/45
+f 77/59/45 83/66/50 84/67/1 78/60/46
+f 78/61/46 84/68/1 85/69/51 79/62/47
+f 79/62/47 85/69/51 86/70/52 80/63/48
+f 80/63/48 86/70/52 81/64/8 75/57/43
+f 81/64/8 87/71/7 88/72/53 82/65/49
+f 82/65/49 88/72/53 89/73/54 83/66/50
+f 83/66/50 89/73/54 90/74/2 84/67/1
+f 84/68/1 90/75/2 91/76/55 85/69/51
+f 85/69/51 91/76/55 92/77/56 86/70/52
+f 86/70/52 92/77/56 87/71/7 81/64/8
+f 87/71/7 93/78/16 94/79/57 88/72/53
+f 88/72/53 94/79/57 95/80/58 89/73/54
+f 89/73/54 95/80/58 96/81/13 90/74/2
+f 90/75/2 96/82/13 97/83/59 91/76/55
+f 91/76/55 97/83/59 98/84/60 92/77/56
+f 92/77/56 98/84/60 93/78/16 87/71/7
+f 93/78/16 99/85/22 100/86/61 94/79/57
+f 94/79/57 100/86/61 101/87/62 95/80/58
+f 95/80/58 101/87/62 102/88/19 96/81/13
+f 96/82/13 102/89/19 103/90/63 97/83/59
+f 97/83/59 103/90/63 104/91/64 98/84/60
+f 98/84/60 104/91/64 99/85/22 93/78/16
+f 99/85/22 105/92/28 106/93/65 100/86/61
+f 100/86/61 106/93/65 107/94/66 101/87/62
+f 101/87/62 107/94/66 108/95/25 102/88/19
+f 102/89/19 108/96/25 109/97/67 103/90/63
+f 103/90/63 109/97/67 110/98/68 104/91/64
+f 104/91/64 110/98/68 105/92/28 99/85/22
+f 105/92/28 111/99/34 112/100/69 106/93/65
+f 106/93/65 112/100/69 113/101/70 107/94/66
+f 107/94/66 113/101/70 114/102/31 108/95/25
+f 108/96/25 114/103/31 115/104/71 109/97/67
+f 109/97/67 115/104/71 116/105/72 110/98/68
+f 110/98/68 116/105/72 111/99/34 105/92/28
+f 111/99/34 117/106/40 118/107/73 112/100/69
+f 112/100/69 118/107/73 119/108/74 113/101/70
+f 113/101/70 119/108/74 120/109/37 114/102/31
+f 114/103/31 120/110/37 121/111/75 115/104/71
+f 115/104/71 121/111/75 122/112/76 116/105/72
+f 116/105/72 122/112/76 117/106/40 111/99/34
+f 117/106/40 123/113/46 124/114/77 118/107/73
+f 118/107/73 124/114/77 125/115/78 119/108/74
+f 119/108/74 125/115/78 126/116/43 120/109/37
+f 120/110/37 126/117/43 127/118/79 121/111/75
+f 121/111/75 127/118/79 128/119/80 122/112/76
+f 122/112/76 128/119/80 123/113/46 117/106/40
+f 123/113/46 33/1/1 34/4/4 124/114/77
+f 124/114/77 34/4/4 35/6/6 125/115/78
+f 125/115/78 35/6/6 36/8/8 126/116/43
+f 126/117/43 36/9/8 37/12/10 127/118/79
+f 127/118/79 37/12/10 38/14/12 128/119/80
+f 128/119/80 38/14/12 33/1/1 123/113/46
+f 129/120/81 134/121/82 135/122/83 130/123/84
+f 130/123/84 135/122/83 136/19/85 131/10/86
+f 131/124/86 136/125/85 137/126/87 132/127/88
+f 132/127/88 137/126/87 138/128/89 133/129/90
+f 133/129/90 138/128/89 134/121/82 129/120/81
+f 134/121/82 139/130/91 140/131/92 135/122/83
+f 135/122/83 140/131/92 141/26/93 136/19/85
+f 136/125/85 141/132/93 142/133/94 137/126/87
+f 137/126/87 142/133/94 143/134/95 138/128/89
+f 138/128/89 143/134/95 139/130/91 134/121/82
+f 139/130/91 144/135/96 145/136/97 140/131/92
+f 140/131/92 145/136/97 146/33/98 141/26/93
+f 141/132/93 146/137/98 147/138/99 142/133/94
+f 142/133/94 147/138/99 148/139/100 143/134/95
+f 143/134/95 148/139/100 144/135/96 139/130/91
+f 144/135/96 149/140/101 150/141/102 145/136/97
+f 145/136/97 150/141/102 151/40/103 146/33/98
+f 146/137/98 151/142/103 152/143/104 147/138/99
+f 147/138/99 152/143/104 153/144/105 148/139/100
+f 148/139/100 153/144/105 149/140/101 144/135/96
+f 178/30/106 155/31/107 157/24/108 185/23/109
+f 185/23/109 157/24/108 159/17/110 184/16/111
+f 184/16/111 159/17/110 161/5/112 183/3/113
+f 175/1/114 174/2/115 162/145/116 160/146/117
+f 177/106/118 176/113/119 158/147/120 156/148/121
+f 183/3/113 161/5/112 163/6/122 182/4/123
+f 174/2/115 173/15/124 164/149/125 162/145/116
+f 182/4/123 163/6/122 165/115/126 181/114/127
+f 171/29/128 170/36/129 154/150/130 168/151/131
+f 181/114/127 165/115/126 167/108/132 180/107/133
+f 157/152/108 155/153/107 169/154/134 167/155/132 165/156/126 163/157/122 161/158/112 159/159/110
+f 179/37/135 169/38/134 155/31/107 178/30/106
+f 180/107/133 167/108/132 169/101/134 179/100/135
+f 172/22/136 171/29/128 168/151/131 166/160/137
+f 173/15/124 172/22/136 166/160/137 164/149/125
+f 176/113/119 175/1/114 160/146/117 158/147/120
+f 154/161/130 170/99/129 177/106/118 156/148/121
+f 172/106/136 180/107/133 179/100/135 171/99/128
+f 171/36/128 179/37/135 178/30/106 170/29/129
+f 173/113/124 181/114/127 180/107/133 172/106/136
+f 174/1/115 182/4/123 181/114/127 173/113/124
+f 175/2/114 183/3/113 182/4/123 174/1/115
+f 176/15/119 184/16/111 183/3/113 175/2/114
+f 177/22/118 185/23/109 184/16/111 176/15/119
+f 170/29/129 178/30/106 185/23/109 177/22/118
+f 192/162/138 198/163/139 199/164/140 193/165/141
+f 193/165/141 199/164/140 200/166/142 194/167/143
+f 194/167/143 200/166/142 201/168/144 195/169/145
+f 195/169/145 201/168/144 202/170/146 196/171/147
+f 196/171/147 202/170/146 203/172/148 197/173/149
+f 197/173/149 203/172/148 198/174/139 192/175/138
+f 198/163/139 204/176/150 205/177/151 199/164/140
+f 199/164/140 205/177/151 206/178/152 200/166/142
+f 200/166/142 206/178/152 207/179/153 201/168/144
+f 201/168/144 207/179/153 208/180/154 202/170/146
+f 202/170/146 208/180/154 209/181/155 203/172/148
+f 203/172/148 209/181/155 204/182/150 198/174/139
+f 204/176/150 210/183/156 211/184/157 205/177/151
+f 205/177/151 211/184/157 212/185/158 206/178/152
+f 206/178/152 212/185/158 213/186/159 207/179/153
+f 207/179/153 213/186/159 214/187/160 208/180/154
+f 208/180/154 214/187/160 215/188/161 209/181/155
+f 209/181/155 215/188/161 210/189/156 204/182/150
+f 210/183/156 186/190/162 187/191/163 211/184/157
+f 211/184/157 187/191/163 188/192/164 212/185/158
+f 212/185/158 188/192/164 189/124/165 213/186/159
+f 213/186/159 189/124/165 190/127/166 214/187/160
+f 214/187/160 190/127/166 191/129/167 215/188/161
+f 215/188/161 191/129/167 186/120/162 210/189/156
+f 188/192/164 187/191/163 217/193/168 218/194/169
+f 190/127/166 189/124/165 219/142/170 220/143/171
+f 187/191/163 186/190/162 216/195/172 217/193/168
+f 189/124/165 188/192/164 218/194/169 219/142/170
+f 186/120/162 191/129/167 221/144/173 216/140/172
+f 191/129/167 190/127/166 220/143/171 221/144/173
+f 154/196/130 156/197/121 222/107/174
+f 156/197/121 158/198/120 222/107/174
+f 158/198/120 160/199/117 222/107/174
+f 160/199/117 162/200/116 222/107/174
+f 162/200/116 164/201/125 222/107/174
+f 164/201/125 166/202/137 222/107/174
+f 166/202/137 168/203/131 222/107/174
+f 168/203/131 154/196/130 222/107/174
+f 237/204/43 260/205/43 262/206/31 239/175/31
+f 252/207/46 241/208/175 242/209/176 254/210/34
+f 249/211/177 226/212/178 228/213/179 259/214/180
+f 225/173/19 261/215/19 250/216/2 227/171/2
+f 254/210/34 242/209/176 243/217/181 256/218/22
+f 259/214/180 228/213/179 230/219/182 257/220/183
+f 246/221/184 247/222/185 249/211/177 224/223/186
+f 256/218/22 243/217/181 244/224/187 258/225/7
+f 257/220/183 230/219/182 232/226/188 255/227/189
+f 245/228/190 248/229/191 247/222/185 246/221/184
+f 258/225/7 244/224/187 245/230/190 260/231/43
+f 255/227/189 232/226/188 234/232/192 253/233/193
+f 227/171/2 250/216/2 252/207/46 229/169/46
+f 262/206/31 246/221/184 224/223/186 261/215/19
+f 253/233/193 234/232/192 236/234/194 251/235/195
+f 261/215/19 224/223/186 223/236/196 250/216/2
+f 260/205/43 245/228/190 246/221/184 262/206/31
+f 251/235/195 236/234/194 238/237/197 248/238/191
+f 228/239/179 226/240/178 240/241/198 238/242/197 236/243/194 234/244/192 232/245/188 230/246/182
+f 247/222/185 240/247/198 226/212/178 249/211/177
+f 248/229/191 238/248/197 240/247/198 247/222/185
+f 244/224/187 251/235/195 248/238/191 245/230/190
+f 250/216/2 223/236/196 241/208/175 252/207/46
+f 243/217/181 253/233/193 251/235/195 244/224/187
+f 239/175/31 262/206/31 261/215/19 225/173/19
+f 242/209/176 255/227/189 253/233/193 243/217/181
+f 235/162/7 258/225/7 260/231/43 237/249/43
+f 241/208/175 257/220/183 255/227/189 242/209/176
+f 233/165/22 256/218/22 258/225/7 235/162/7
+f 223/236/196 259/214/180 257/220/183 241/208/175
+f 231/167/34 254/210/34 256/218/22 233/165/22
+f 224/223/186 249/211/177 259/214/180 223/236/196
+f 229/169/46 252/207/46 254/210/34 231/167/34
+f 301/162/199 307/163/200 308/164/201 302/165/202
+f 302/165/202 308/164/201 309/166/203 303/167/204
+f 303/167/204 309/166/203 310/168/205 304/169/206
+f 304/169/206 310/168/205 311/170/207 305/171/208
+f 305/171/208 311/170/207 312/172/209 306/173/210
+f 306/173/210 312/172/209 307/174/200 301/175/199
+f 307/163/200 313/176/211 314/177/212 308/164/201
+f 308/164/201 314/177/212 315/178/213 309/166/203
+f 309/166/203 315/178/213 316/179/214 310/168/205
+f 310/168/205 316/179/214 317/180/215 311/170/207
+f 311/170/207 317/180/215 318/181/216 312/172/209
+f 312/172/209 318/181/216 313/182/211 307/174/200
+f 313/176/211 319/183/217 320/184/218 314/177/212
+f 314/177/212 320/184/218 321/185/219 315/178/213
+f 315/178/213 321/185/219 322/186/220 316/179/214
+f 316/179/214 322/186/220 323/187/221 317/180/215
+f 317/180/215 323/187/221 324/188/222 318/181/216
+f 318/181/216 324/188/222 319/189/217 313/182/211
+f 319/183/217 295/190/223 296/191/224 320/184/218
+f 320/184/218 296/191/224 297/192/225 321/185/219
+f 321/185/219 297/192/225 298/124/226 322/186/220
+f 322/186/220 298/124/226 299/127/227 323/187/221
+f 323/187/221 299/127/227 300/129/228 324/188/222
+f 324/188/222 300/129/228 295/120/223 319/189/217
+f 297/192/225 296/191/224 326/193/229 327/194/230
+f 299/127/227 298/124/226 328/142/231 329/143/232
+f 296/191/224 295/190/223 325/195/233 326/193/229
+f 298/124/226 297/192/225 327/194/230 328/142/231
+f 295/120/223 300/129/228 330/144/234 325/140/233
+f 300/129/228 299/127/227 329/143/232 330/144/234
+f 345/204/19 368/205/19 370/206/2 347/175/2
+f 360/207/22 349/208/181 350/209/187 362/210/7
+f 357/211/183 334/212/182 336/213/188 367/214/189
+f 333/173/46 369/215/46 358/216/34 335/171/34
+f 362/210/7 350/209/187 351/217/190 364/218/43
+f 367/214/189 336/213/188 338/219/192 365/220/193
+f 354/221/196 355/222/180 357/211/183 332/223/175
+f 364/218/43 351/217/190 352/224/184 366/225/31
+f 365/220/193 338/219/192 340/226/194 363/227/195
+f 353/228/186 356/229/177 355/222/180 354/221/196
+f 366/225/31 352/224/184 353/230/186 368/231/19
+f 363/227/195 340/226/194 342/232/197 361/233/191
+f 335/171/34 358/216/34 360/207/22 337/169/22
+f 370/206/2 354/221/196 332/223/175 369/215/46
+f 361/233/191 342/232/197 344/234/198 359/235/185
+f 369/215/46 332/223/175 331/236/176 358/216/34
+f 368/205/19 353/228/186 354/221/196 370/206/2
+f 359/235/185 344/234/198 346/237/178 356/238/177
+f 336/239/188 334/240/182 348/241/179 346/242/178 344/243/198 342/244/197 340/245/194 338/246/192
+f 355/222/180 348/247/179 334/212/182 357/211/183
+f 356/229/177 346/248/178 348/247/179 355/222/180
+f 352/224/184 359/235/185 356/238/177 353/230/186
+f 358/216/34 331/236/176 349/208/181 360/207/22
+f 351/217/190 361/233/191 359/235/185 352/224/184
+f 347/175/2 370/206/2 369/215/46 333/173/46
+f 350/209/187 363/227/195 361/233/191 351/217/190
+f 343/162/31 366/225/31 368/231/19 345/249/19
+f 349/208/181 365/220/193 363/227/195 350/209/187
+f 341/165/43 364/218/43 366/225/31 343/162/31
+f 331/236/176 367/214/189 365/220/193 349/208/181
+f 339/167/7 362/210/7 364/218/43 341/165/43
+f 332/223/175 357/211/183 367/214/189 331/236/176
+f 337/169/22 360/207/22 362/210/7 339/167/7
+f 409/162/235 415/163/236 416/164/237 410/165/238
+f 410/165/238 416/164/237 417/166/239 411/167/240
+f 411/167/240 417/166/239 418/168/241 412/169/242
+f 412/169/242 418/168/241 419/170/243 413/171/244
+f 413/171/244 419/170/243 420/172/245 414/173/246
+f 414/173/246 420/172/245 415/174/236 409/175/235
+f 415/163/236 421/176/247 422/177/248 416/164/237
+f 416/164/237 422/177/248 423/178/249 417/166/239
+f 417/166/239 423/178/249 424/179/250 418/168/241
+f 418/168/241 424/179/250 425/180/251 419/170/243
+f 419/170/243 425/180/251 426/181/252 420/172/245
+f 420/172/245 426/181/252 421/182/247 415/174/236
+f 421/176/247 427/183/253 428/184/254 422/177/248
+f 422/177/248 428/184/254 429/185/255 423/178/249
+f 423/178/249 429/185/255 430/186/256 424/179/250
+f 424/179/250 430/186/256 431/187/257 425/180/251
+f 425/180/251 431/187/257 432/188/258 426/181/252
+f 426/181/252 432/188/258 427/189/253 421/182/247
+f 427/183/253 403/190/259 404/191/260 428/184/254
+f 428/184/254 404/191/260 405/192/261 429/185/255
+f 429/185/255 405/192/261 406/124/262 430/186/256
+f 430/186/256 406/124/262 407/127/263 431/187/257
+f 431/187/257 407/127/263 408/129/264 432/188/258
+f 432/188/258 408/129/264 403/120/259 427/189/253
+f 405/192/261 404/191/260 434/193/265 435/194/266
+f 407/127/263 406/124/262 436/142/267 437/143/268
+f 404/191/260 403/190/259 433/195/269 434/193/265
+f 406/124/262 405/192/261 435/194/266 436/142/267
+f 403/120/259 408/129/264 438/144/270 433/140/269
+f 408/129/264 407/127/263 437/143/268 438/144/270
+f 453/204/46 476/205/46 478/206/34 455/175/34
+f 468/207/43 457/208/190 458/209/184 470/210/31
+f 465/211/193 442/212/192 444/213/194 475/214/195
+f 441/173/22 477/215/22 466/216/7 443/171/7
+f 470/210/31 458/209/184 459/217/186 472/218/19
+f 475/214/195 444/213/194 446/219/197 473/220/191
+f 462/221/176 463/222/189 465/211/193 440/223/181
+f 472/218/19 459/217/186 460/224/196 474/225/2
+f 473/220/191 446/219/197 448/226/198 471/227/185
+f 461/228/175 464/229/183 463/222/189 462/221/176
+f 474/225/2 460/224/196 461/230/175 476/231/46
+f 471/227/185 448/226/198 450/232/178 469/233/177
+f 443/171/7 466/216/7 468/207/43 445/169/43
+f 478/206/34 462/221/176 440/223/181 477/215/22
+f 469/233/177 450/232/178 452/234/179 467/235/180
+f 477/215/22 440/223/181 439/236/187 466/216/7
+f 476/205/46 461/228/175 462/221/176 478/206/34
+f 467/235/180 452/234/179 454/237/182 464/238/183
+f 444/239/194 442/240/192 456/241/188 454/242/182 452/243/179 450/244/178 448/245/198 446/246/197
+f 463/222/189 456/247/188 442/212/192 465/211/193
+f 464/229/183 454/248/182 456/247/188 463/222/189
+f 460/224/196 467/235/180 464/238/183 461/230/175
+f 466/216/7 439/236/187 457/208/190 468/207/43
+f 459/217/186 469/233/177 467/235/180 460/224/196
+f 455/175/34 478/206/34 477/215/22 441/173/22
+f 458/209/184 471/227/185 469/233/177 459/217/186
+f 451/162/2 474/225/2 476/231/46 453/249/46
+f 457/208/190 473/220/191 471/227/185 458/209/184
+f 449/165/19 472/218/19 474/225/2 451/162/2
+f 439/236/187 475/214/195 473/220/191 457/208/190
+f 447/167/31 470/210/31 472/218/19 449/165/19
+f 440/223/181 465/211/193 475/214/195 439/236/187
+f 445/169/43 468/207/43 470/210/31 447/167/31
+f 517/162/271 523/163/272 524/164/273 518/165/274
+f 518/165/274 524/164/273 525/166/275 519/167/276
+f 519/167/276 525/166/275 526/168/277 520/169/278
+f 520/169/278 526/168/277 527/170/279 521/171/280
+f 521/171/280 527/170/279 528/172/281 522/173/282
+f 522/173/282 528/172/281 523/174/272 517/175/271
+f 523/163/272 529/176/283 530/177/284 524/164/273
+f 524/164/273 530/177/284 531/178/285 525/166/275
+f 525/166/275 531/178/285 532/179/286 526/168/277
+f 526/168/277 532/179/286 533/180/287 527/170/279
+f 527/170/279 533/180/287 534/181/288 528/172/281
+f 528/172/281 534/181/288 529/182/283 523/174/272
+f 529/176/283 535/183/289 536/184/290 530/177/284
+f 530/177/284 536/184/290 537/185/291 531/178/285
+f 531/178/285 537/185/291 538/186/292 532/179/286
+f 532/179/286 538/186/292 539/187/293 533/180/287
+f 533/180/287 539/187/293 540/188/294 534/181/288
+f 534/181/288 540/188/294 535/189/289 529/182/283
+f 535/183/289 511/190/295 512/191/296 536/184/290
+f 536/184/290 512/191/296 513/192/297 537/185/291
+f 537/185/291 513/192/297 514/124/298 538/186/292
+f 538/186/292 514/124/298 515/127/299 539/187/293
+f 539/187/293 515/127/299 516/129/300 540/188/294
+f 540/188/294 516/129/300 511/120/295 535/189/289
+f 513/192/297 512/191/296 542/193/301 543/194/302
+f 515/127/299 514/124/298 544/142/303 545/143/304
+f 512/191/296 511/190/295 541/195/305 542/193/301
+f 514/124/298 513/192/297 543/194/302 544/142/303
+f 511/120/295 516/129/300 546/144/306 541/140/305
+f 516/129/300 515/127/299 545/143/304 546/144/306
+f 561/204/22 584/205/22 586/206/7 563/175/7
+f 576/207/19 565/208/186 566/209/196 578/210/2
+f 573/211/191 550/212/197 552/213/198 583/214/185
+f 549/173/43 585/215/43 574/216/31 551/171/31
+f 578/210/2 566/209/196 567/217/175 580/218/46
+f 583/214/185 552/213/198 554/219/178 581/220/177
+f 570/221/187 571/222/195 573/211/191 548/223/190
+f 580/218/46 567/217/175 568/224/176 582/225/34
+f 581/220/177 554/219/178 556/226/179 579/227/180
+f 569/228/181 572/229/193 571/222/195 570/221/187
+f 582/225/34 568/224/176 569/230/181 584/231/22
+f 579/227/180 556/226/179 558/232/182 577/233/183
+f 551/171/31 574/216/31 576/207/19 553/169/19
+f 586/206/7 570/221/187 548/223/190 585/215/43
+f 577/233/183 558/232/182 560/234/188 575/235/189
+f 585/215/43 548/223/190 547/236/184 574/216/31
+f 584/205/22 569/228/181 570/221/187 586/206/7
+f 575/235/189 560/234/188 562/237/192 572/238/193
+f 552/239/198 550/240/197 564/241/194 562/242/192 560/243/188 558/244/182 556/245/179 554/246/178
+f 571/222/195 564/247/194 550/212/197 573/211/191
+f 572/229/193 562/248/192 564/247/194 571/222/195
+f 568/224/176 575/235/189 572/238/193 569/230/181
+f 574/216/31 547/236/184 565/208/186 576/207/19
+f 567/217/175 577/233/183 575/235/189 568/224/176
+f 563/175/7 586/206/7 585/215/43 549/173/43
+f 566/209/196 579/227/180 577/233/183 567/217/175
+f 559/162/34 582/225/34 584/231/22 561/249/22
+f 565/208/186 581/220/177 579/227/180 566/209/196
+f 557/165/46 580/218/46 582/225/34 559/162/34
+f 547/236/184 583/214/185 581/220/177 565/208/186
+f 555/167/2 578/210/2 580/218/46 557/165/46
+f 548/223/190 573/211/191 583/214/185 547/236/184
+f 553/169/19 576/207/19 578/210/2 555/167/2
+g Cylinder_Cylinder_candle_Cylinder_Cylinder_candle_candle
+f 13/130/307 15/120/308 16/192/31 14/250/43
+f 9/221/309 10/209/22 8/167/34 7/175/310
+f 9/221/309 11/247/311 12/226/7 10/209/22
+f 3/182/312 4/178/2 2/185/19 1/189/313
+f 13/130/307 14/250/43 12/194/7 11/140/311
+f 2/185/19 16/192/31 15/120/308 1/189/313
+f 3/182/312 5/174/314 6/166/46 4/178/2
+f 3/251/312 1/252/313 15/253/308 13/254/307 11/255/311 9/256/309 7/257/310 5/258/314
+f 5/174/314 7/175/310 8/167/34 6/166/46
+f 275/130/313 277/120/312 278/192/2 276/250/19
+f 271/221/307 272/209/43 270/167/7 269/175/311
+f 271/221/307 273/247/308 274/226/31 272/209/43
+f 265/182/310 266/178/34 264/185/46 263/189/314
+f 275/130/313 276/250/19 274/194/31 273/140/308
+f 264/185/46 278/192/2 277/120/312 263/189/314
+f 265/182/310 267/174/309 268/166/22 266/178/34
+f 265/251/310 263/252/314 277/253/312 275/254/313 273/255/308 271/256/307 269/257/311 267/258/309
+f 267/174/309 269/175/311 270/167/7 268/166/22
+f 383/130/314 385/120/310 386/192/34 384/250/46
+f 379/221/313 380/209/19 378/167/31 377/175/308
+f 379/221/313 381/247/312 382/226/2 380/209/19
+f 373/182/311 374/178/7 372/185/22 371/189/309
+f 383/130/314 384/250/46 382/194/2 381/140/312
+f 372/185/22 386/192/34 385/120/310 371/189/309
+f 373/182/311 375/174/307 376/166/43 374/178/7
+f 373/251/311 371/252/309 385/253/310 383/254/314 381/255/312 379/256/313 377/257/308 375/258/307
+f 375/174/307 377/175/308 378/167/31 376/166/43
+f 491/130/309 493/120/311 494/192/7 492/250/22
+f 487/221/314 488/209/46 486/167/2 485/175/312
+f 487/221/314 489/247/310 490/226/34 488/209/46
+f 481/182/308 482/178/31 480/185/43 479/189/307
+f 491/130/309 492/250/22 490/194/34 489/140/310
+f 480/185/43 494/192/7 493/120/311 479/189/307
+f 481/182/308 483/174/313 484/166/19 482/178/31
+f 481/251/308 479/252/307 493/253/311 491/254/309 489/255/310 487/256/314 485/257/312 483/258/313
+f 483/174/313 485/175/312 486/167/2 484/166/19
+g Cylinder_Cylinder_candle_Cylinder_Cylinder_candle_flame
+s off
+f 17/259/25 20/260/25 19/50/25 18/39/25
+f 21/259/1 24/260/1 23/50/1 22/39/1
+f 25/259/25 26/260/25 27/50/25 28/39/25
+f 29/259/8 32/39/8 31/50/8 30/260/8
+f 279/259/1 282/260/1 281/50/1 280/39/1
+f 283/259/28 286/260/28 285/50/28 284/39/28
+f 287/259/1 288/260/1 289/50/1 290/39/1
+f 291/259/25 294/39/25 293/50/25 292/260/25
+f 387/259/28 390/260/28 389/50/28 388/39/28
+f 391/259/8 394/260/8 393/50/8 392/39/8
+f 395/259/28 396/260/28 397/50/28 398/39/28
+f 399/259/1 402/39/1 401/50/1 400/260/1
+f 495/259/8 498/260/8 497/50/8 496/39/8
+f 499/259/25 502/260/25 501/50/25 500/39/25
+f 503/259/8 504/260/8 505/50/8 506/39/8
+f 507/259/28 510/39/28 509/50/28 508/260/28
diff --git a/homedecor_modpack/chains/models/top_chains.obj b/homedecor_modpack/chains/models/top_chains.obj
new file mode 100644
index 0000000..9e4f3f7
--- /dev/null
+++ b/homedecor_modpack/chains/models/top_chains.obj
@@ -0,0 +1,943 @@
+# Blender v2.73 (sub 0) OBJ File: 'chains-top.blend'
+# www.blender.org
+o Torus.016_Torus
+v 0.000000 -0.429978 0.000002
+v 0.000000 -0.401109 0.055211
+v -0.014044 -0.391975 0.048870
+v -0.014044 -0.423304 0.000002
+v -0.009826 -0.379748 0.040970
+v -0.009826 -0.406012 0.000002
+v 0.009826 -0.379748 0.040970
+v 0.009826 -0.406012 0.000002
+v 0.014044 -0.391975 0.048870
+v 0.014044 -0.423304 0.000002
+v 0.000000 -0.316336 0.080195
+v -0.014044 -0.316336 0.069112
+v -0.009826 -0.316336 0.057941
+v 0.009826 -0.316336 0.057941
+v 0.014044 -0.316336 0.069112
+v 0.000000 -0.231564 0.055211
+v -0.014044 -0.240700 0.048870
+v -0.009826 -0.252925 0.040970
+v 0.009826 -0.252925 0.040970
+v 0.014044 -0.240700 0.048870
+v 0.000000 -0.202695 0.000002
+v -0.014044 -0.209368 0.000002
+v -0.009826 -0.226661 0.000002
+v 0.009826 -0.226661 0.000002
+v 0.014044 -0.209368 0.000002
+v 0.000000 -0.231564 -0.055206
+v -0.014044 -0.240700 -0.048868
+v -0.009826 -0.252925 -0.040967
+v 0.009826 -0.252925 -0.040967
+v 0.014044 -0.240700 -0.048865
+v 0.000000 -0.316336 -0.080190
+v -0.014044 -0.316336 -0.069108
+v -0.009826 -0.316336 -0.057936
+v 0.009826 -0.316336 -0.057936
+v 0.014044 -0.316336 -0.069108
+v 0.000000 -0.400361 -0.055206
+v -0.014044 -0.391975 -0.048868
+v -0.009826 -0.379748 -0.040967
+v 0.009826 -0.379748 -0.040967
+v 0.014044 -0.391975 -0.048868
+v 0.000000 -0.262249 0.000002
+v -0.061672 -0.233381 0.000002
+v -0.054590 -0.224245 -0.012569
+v 0.000000 -0.255577 -0.012569
+v -0.045765 -0.212018 -0.008794
+v 0.000000 -0.238285 -0.008794
+v -0.045765 -0.212018 0.008798
+v 0.000000 -0.238285 0.008798
+v -0.054590 -0.224245 0.012574
+v 0.000000 -0.255577 0.012574
+v -0.089582 -0.148609 0.000002
+v -0.077200 -0.148609 -0.012569
+v -0.064722 -0.148609 -0.008794
+v -0.064722 -0.148609 0.008799
+v -0.077200 -0.148609 0.012574
+v -0.061672 -0.063837 0.000002
+v -0.054590 -0.072971 -0.012569
+v -0.045765 -0.085198 -0.008794
+v -0.045765 -0.085198 0.008799
+v -0.054590 -0.072971 0.012574
+v 0.000000 -0.034967 0.000002
+v 0.000000 -0.041641 -0.012569
+v 0.000000 -0.058933 -0.008794
+v 0.000000 -0.058933 0.008799
+v 0.000000 -0.041641 0.012574
+v 0.061672 -0.063837 0.000002
+v 0.054590 -0.072971 -0.012569
+v 0.045765 -0.085198 -0.008794
+v 0.045765 -0.085198 0.008799
+v 0.054590 -0.072971 0.012574
+v 0.089582 -0.148609 0.000002
+v 0.077200 -0.148609 -0.012569
+v 0.064722 -0.148609 -0.008794
+v 0.064722 -0.148609 0.008799
+v 0.077200 -0.148609 0.012574
+v 0.061672 -0.232631 0.000002
+v 0.054590 -0.224245 -0.012569
+v 0.045765 -0.212018 -0.008794
+v 0.045765 -0.212018 0.008798
+v 0.054590 -0.224245 0.012574
+v 0.000000 0.073316 0.000002
+v 0.061672 0.102183 0.000002
+v 0.054590 0.111319 0.012574
+v 0.000000 0.079988 0.012574
+v 0.045765 0.123546 0.008799
+v 0.000000 0.097280 0.008799
+v 0.045765 0.123546 -0.008794
+v 0.000000 0.097280 -0.008794
+v 0.054590 0.111319 -0.012569
+v 0.000000 0.079988 -0.012569
+v 0.089582 0.186956 0.000002
+v 0.077200 0.186956 0.012574
+v 0.064722 0.186956 0.008799
+v 0.064722 0.186956 -0.008794
+v 0.077200 0.186956 -0.012569
+v 0.061672 0.271728 0.000002
+v 0.054590 0.262594 0.012574
+v 0.045765 0.250367 0.008799
+v 0.045765 0.250367 -0.008794
+v 0.054590 0.262594 -0.012569
+v 0.000000 0.300597 0.000002
+v 0.000000 0.293923 0.012574
+v 0.000000 0.276631 0.008799
+v 0.000000 0.276631 -0.008794
+v 0.000000 0.293923 -0.012569
+v -0.061672 0.271728 0.000002
+v -0.054590 0.262594 0.012574
+v -0.045765 0.250367 0.008799
+v -0.045765 0.250367 -0.008794
+v -0.054590 0.262594 -0.012569
+v -0.089582 0.186956 0.000002
+v -0.077200 0.186956 0.012574
+v -0.064722 0.186956 0.008799
+v -0.064722 0.186956 -0.008794
+v -0.077200 0.186956 -0.012569
+v -0.061672 0.102931 0.000002
+v -0.054590 0.111319 0.012574
+v -0.045765 0.123546 0.008799
+v -0.045765 0.123546 -0.008794
+v -0.054590 0.111319 -0.012569
+v 0.000000 -0.095037 0.000002
+v 0.000000 -0.066168 -0.055206
+v 0.014044 -0.057034 -0.048868
+v 0.014044 -0.088363 0.000002
+v 0.009826 -0.044807 -0.040967
+v 0.009826 -0.071071 0.000002
+v -0.009826 -0.044807 -0.040967
+v -0.009826 -0.071071 0.000002
+v -0.014044 -0.057034 -0.048868
+v -0.014044 -0.088363 0.000002
+v 0.000000 0.018605 -0.080190
+v 0.014044 0.018605 -0.069108
+v 0.009826 0.018605 -0.057936
+v -0.009826 0.018605 -0.057936
+v -0.014044 0.018605 -0.069108
+v 0.000000 0.103377 -0.055206
+v 0.014044 0.094243 -0.048868
+v 0.009826 0.082016 -0.040967
+v -0.009826 0.082016 -0.040967
+v -0.014044 0.094243 -0.048868
+v 0.000000 0.132246 0.000002
+v 0.014044 0.125572 0.000002
+v 0.009826 0.108280 0.000002
+v -0.009826 0.108280 0.000002
+v -0.014044 0.125572 0.000002
+v 0.000000 0.103377 0.055211
+v 0.014044 0.094243 0.048870
+v 0.009826 0.082016 0.040970
+v -0.009826 0.082016 0.040970
+v -0.014044 0.094243 0.048870
+v 0.000000 0.018605 0.080195
+v 0.014044 0.018605 0.069112
+v 0.009826 0.018605 0.057941
+v -0.009826 0.018605 0.057941
+v -0.014044 0.018605 0.069112
+v 0.000000 -0.065420 0.055211
+v 0.014044 -0.057032 0.048870
+v 0.009826 -0.044807 0.040970
+v -0.009826 -0.044807 0.040970
+v -0.014044 -0.057032 0.048870
+v 0.000000 -0.598329 0.000002
+v 0.061672 -0.569460 0.000002
+v 0.054590 -0.560326 0.012574
+v 0.000000 -0.591655 0.012574
+v 0.045765 -0.548099 0.008798
+v 0.000000 -0.574363 0.008798
+v 0.045765 -0.548099 -0.008794
+v 0.000000 -0.574363 -0.008794
+v 0.054590 -0.560326 -0.012569
+v 0.000000 -0.591655 -0.012569
+v 0.089582 -0.484687 0.000002
+v 0.077200 -0.484687 0.012574
+v 0.064722 -0.484687 0.008798
+v 0.064722 -0.484687 -0.008794
+v 0.077200 -0.484687 -0.012569
+v 0.061672 -0.399915 0.000002
+v 0.054590 -0.409051 0.012574
+v 0.045765 -0.421278 0.008798
+v 0.045765 -0.421278 -0.008794
+v 0.054590 -0.409051 -0.012569
+v 0.000000 -0.371048 0.000002
+v 0.000000 -0.377719 0.012574
+v 0.000000 -0.395012 0.008798
+v 0.000000 -0.395012 -0.008794
+v 0.000000 -0.377719 -0.012569
+v -0.061672 -0.399915 0.000002
+v -0.054590 -0.409051 0.012574
+v -0.045765 -0.421278 0.008798
+v -0.045765 -0.421278 -0.008794
+v -0.054590 -0.409051 -0.012569
+v -0.089582 -0.484687 0.000002
+v -0.077200 -0.484687 0.012574
+v -0.064722 -0.484687 0.008798
+v -0.064722 -0.484687 -0.008794
+v -0.077200 -0.484687 -0.012569
+v -0.061672 -0.568712 0.000002
+v -0.054590 -0.560326 0.012574
+v -0.045765 -0.548099 0.008798
+v -0.045765 -0.548099 -0.008794
+v -0.054590 -0.560326 -0.012569
+v 0.000000 0.241043 0.000002
+v 0.000000 0.269910 0.055211
+v -0.014044 0.279047 0.048870
+v -0.014044 0.247717 0.000002
+v -0.009826 0.291274 0.040970
+v -0.009826 0.265007 0.000002
+v 0.009826 0.291274 0.040970
+v 0.009826 0.265007 0.000002
+v 0.014044 0.279047 0.048870
+v 0.014044 0.247717 0.000002
+v 0.000000 0.354683 0.080195
+v -0.014044 0.354683 0.069112
+v -0.009826 0.354683 0.057941
+v 0.009826 0.354683 0.057941
+v 0.014044 0.354683 0.069112
+v 0.000000 0.354683 -0.080190
+v -0.014044 0.354683 -0.069108
+v -0.009826 0.354683 -0.057936
+v 0.009826 0.354683 -0.057936
+v 0.014044 0.354683 -0.069108
+v 0.000000 0.270661 -0.055206
+v -0.014044 0.279047 -0.048868
+v -0.009826 0.291274 -0.040967
+v 0.009826 0.291274 -0.040967
+v 0.014044 0.279047 -0.048868
+v -0.000000 0.343750 -0.116420
+v 0.000000 0.500000 -0.250000
+v 0.082321 0.343750 -0.082321
+v 0.176777 0.500000 -0.176777
+v 0.116420 0.343750 0.000000
+v 0.250000 0.500000 0.000000
+v 0.082321 0.343750 0.082321
+v 0.176777 0.500000 0.176777
+v -0.000000 0.343750 0.116420
+v -0.000000 0.500000 0.250000
+v -0.082321 0.343750 0.082321
+v -0.176777 0.500000 0.176777
+v -0.116420 0.343750 -0.000000
+v -0.250000 0.500000 -0.000000
+v -0.082321 0.343750 -0.082321
+v -0.176777 0.500000 -0.176777
+v 0.068265 0.433424 -0.164807
+v 0.164807 0.433424 -0.068265
+v 0.164807 0.433424 0.068265
+v 0.068265 0.433424 0.164807
+v -0.068265 0.433424 0.164807
+v -0.164807 0.433424 0.068265
+v -0.068265 0.433424 -0.164807
+v -0.164807 0.433424 -0.068265
+vt 0.187500 0.125000
+vt 0.250000 0.125000
+vt 0.250000 0.187500
+vt 0.187500 0.187500
+vt 0.250000 0.250000
+vt 0.187500 0.250000
+vt 0.250000 0.312500
+vt 0.187500 0.312500
+vt 0.250000 0.375000
+vt 0.187500 0.375000
+vt 0.187500 0.062500
+vt 0.250000 0.062500
+vt 0.312500 0.125000
+vt 0.312500 0.187500
+vt 0.312500 0.250000
+vt 0.312500 0.312500
+vt 0.312500 0.375000
+vt 0.312500 0.062500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.375000 0.250000
+vt 0.375000 0.312500
+vt 0.375000 0.375000
+vt 0.375000 0.062500
+vt 0.437500 0.125000
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.437500 0.062500
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.500000 0.250000
+vt 0.500000 0.312500
+vt 0.500000 0.375000
+vt 0.500000 0.062500
+vt -0.000000 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.187500
+vt -0.000000 0.187500
+vt 0.062500 0.250000
+vt -0.000000 0.250000
+vt 0.062500 0.312500
+vt -0.000000 0.312500
+vt 0.062500 0.375000
+vt -0.000000 0.375000
+vt -0.000000 0.062500
+vt 0.062500 0.062500
+vt 0.125000 0.125000
+vt 0.125000 0.187500
+vt 0.125000 0.250000
+vt 0.125000 0.312500
+vt 0.125000 0.375000
+vt 0.125000 0.062500
+vt 0.750000 0.625000
+vt 0.812500 0.625000
+vt 0.812500 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.375000
+vt 0.812500 0.375000
+vt 0.812500 0.437500
+vt 0.750000 0.437500
+vt 0.812500 0.500000
+vt 0.750000 0.500000
+vt 0.812500 0.562500
+vt 0.750000 0.562500
+vt 0.875000 0.625000
+vt 0.875000 0.687500
+vt 0.875000 0.375000
+vt 0.875000 0.437500
+vt 0.875000 0.500000
+vt 0.875000 0.562500
+vt 0.937500 0.625000
+vt 0.937500 0.687500
+vt 0.937500 0.375000
+vt 0.937500 0.437500
+vt 0.937500 0.500000
+vt 0.937500 0.562500
+vt 1.000000 0.625000
+vt 1.000000 0.687500
+vt 1.000000 0.375000
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 1.000000 0.562500
+vt 0.500000 0.625000
+vt 0.562500 0.625000
+vt 0.562500 0.687500
+vt 0.500000 0.687500
+vt 0.562500 0.375000
+vt 0.562500 0.437500
+vt 0.500000 0.437500
+vt 0.562500 0.500000
+vt 0.500000 0.500000
+vt 0.562500 0.562500
+vt 0.500000 0.562500
+vt 0.625000 0.625000
+vt 0.625000 0.687500
+vt 0.625000 0.375000
+vt 0.625000 0.437500
+vt 0.625000 0.500000
+vt 0.625000 0.562500
+vt 0.687500 0.625000
+vt 0.687500 0.687500
+vt 0.687500 0.375000
+vt 0.687500 0.437500
+vt 0.687500 0.500000
+vt 0.687500 0.562500
+vt 0.250000 0.625000
+vt 0.312500 0.625000
+vt 0.312500 0.687500
+vt 0.250000 0.687500
+vt 0.312500 0.437500
+vt 0.250000 0.437500
+vt 0.312500 0.500000
+vt 0.250000 0.500000
+vt 0.312500 0.562500
+vt 0.250000 0.562500
+vt 0.375000 0.625000
+vt 0.375000 0.687500
+vt 0.375000 0.437500
+vt 0.375000 0.500000
+vt 0.375000 0.562500
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 0.437500 0.437500
+vt 0.437500 0.500000
+vt 0.437500 0.562500
+vt -0.000000 0.625000
+vt 0.062500 0.625000
+vt 0.062500 0.687500
+vt -0.000000 0.687500
+vt 0.062500 0.437500
+vt -0.000000 0.437500
+vt 0.062500 0.500000
+vt -0.000000 0.500000
+vt 0.062500 0.562500
+vt -0.000000 0.562500
+vt 0.125000 0.625000
+vt 0.125000 0.687500
+vt 0.125000 0.437500
+vt 0.125000 0.500000
+vt 0.125000 0.562500
+vt 0.187500 0.625000
+vt 0.187500 0.687500
+vt 0.187500 0.437500
+vt 0.187500 0.500000
+vt 0.187500 0.562500
+vt 0.687500 0.750000
+vt 0.750000 0.750000
+vt 0.750000 0.812500
+vt 0.687500 0.812500
+vt 0.750000 0.875000
+vt 0.687500 0.875000
+vt 0.750000 0.937500
+vt 0.687500 0.937500
+vt 0.750000 1.000000
+vt 0.687500 1.000000
+vt 0.812500 0.750000
+vt 0.812500 0.812500
+vt 0.812500 0.875000
+vt 0.812500 0.937500
+vt 0.812500 1.000000
+vt 0.875000 0.750000
+vt 0.875000 0.812500
+vt 0.875000 0.875000
+vt 0.875000 0.937500
+vt 0.875000 1.000000
+vt 0.937500 0.750000
+vt 0.937500 0.812500
+vt 0.937500 0.875000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 1.000000 0.750000
+vt 1.000000 0.812500
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.500000 0.750000
+vt 0.562500 0.750000
+vt 0.562500 0.812500
+vt 0.500000 0.812500
+vt 0.562500 0.875000
+vt 0.500000 0.875000
+vt 0.562500 0.937500
+vt 0.500000 0.937500
+vt 0.562500 1.000000
+vt 0.500000 1.000000
+vt 0.625000 0.750000
+vt 0.625000 0.812500
+vt 0.625000 0.875000
+vt 0.625000 0.937500
+vt 0.625000 1.000000
+vt 0.750000 0.312500
+vt 0.812500 0.312500
+vt 0.750000 0.062500
+vt 0.812500 0.062500
+vt 0.812500 0.125000
+vt 0.750000 0.125000
+vt 0.812500 0.187500
+vt 0.750000 0.187500
+vt 0.812500 0.250000
+vt 0.750000 0.250000
+vt 0.875000 0.312500
+vt 0.875000 0.062500
+vt 0.875000 0.125000
+vt 0.875000 0.187500
+vt 0.875000 0.250000
+vt 0.937500 0.312500
+vt 0.937500 0.062500
+vt 0.937500 0.125000
+vt 0.937500 0.187500
+vt 0.937500 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.062500
+vt 1.000000 0.125000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 0.562500 0.312500
+vt 0.562500 0.062500
+vt 0.562500 0.125000
+vt 0.562500 0.187500
+vt 0.562500 0.250000
+vt 0.625000 0.312500
+vt 0.625000 0.062500
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.625000 0.250000
+vt 0.687500 0.312500
+vt 0.687500 0.062500
+vt 0.687500 0.125000
+vt 0.687500 0.187500
+vt 0.687500 0.250000
+vt 0.250000 0.937500
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.250000 1.000000
+vt 0.312500 0.750000
+vt 0.250000 0.750000
+vt 0.312500 0.812500
+vt 0.250000 0.812500
+vt 0.312500 0.875000
+vt 0.250000 0.875000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.375000 0.750000
+vt 0.375000 0.812500
+vt 0.375000 0.875000
+vt 0.125000 0.937500
+vt 0.187500 0.937500
+vt 0.187500 1.000000
+vt 0.125000 1.000000
+vt 0.187500 0.750000
+vt 0.125000 0.750000
+vt 0.187500 0.812500
+vt 0.125000 0.812500
+vt 0.187500 0.875000
+vt 0.125000 0.875000
+vt 0.687500 0.821740
+vt 0.562500 0.821739
+vt 0.437500 0.821739
+vt 0.312500 0.821739
+vt 0.187500 0.821740
+vt 0.937500 0.821739
+vt 0.676786 0.676786
+vt 0.323214 0.676786
+vt 0.323214 0.323214
+vt 0.676786 0.323214
+vt 0.062500 0.821740
+vt 0.500000 0.616426
+vt 0.582326 0.582326
+vt 0.616426 0.500000
+vt 0.582326 0.417674
+vt 0.500000 0.383574
+vt 0.417674 0.417674
+vt 0.383574 0.500000
+vt 0.417674 0.582326
+vt 0.812500 0.821739
+vt 0.000000 0.875000
+vt 0.000000 0.750000
+vn 0.000000 -1.000000 -0.004800
+vn 0.000000 -0.657400 0.753500
+vn -0.898300 -0.248500 0.362300
+vn -0.863600 -0.504100 -0.003400
+vn -0.661500 0.421500 -0.620200
+vn -0.746000 0.665900 0.000000
+vn 0.661500 0.421500 -0.620200
+vn 0.746000 0.665900 0.000000
+vn 0.898300 -0.248500 0.362300
+vn 0.863600 -0.504100 -0.003400
+vn 0.000000 0.000000 1.000000
+vn -0.925200 0.000000 0.379500
+vn -0.617100 0.000000 -0.786900
+vn 0.617100 0.000000 -0.786900
+vn 0.925200 0.000000 0.379500
+vn 0.000000 0.657400 0.753500
+vn -0.898300 0.248400 0.362300
+vn -0.661500 -0.421500 -0.620200
+vn 0.661500 -0.421500 -0.620200
+vn 0.898300 0.248400 0.362300
+vn 0.000000 1.000000 0.000000
+vn -0.866100 0.499800 0.000000
+vn -0.746000 -0.665900 0.000000
+vn 0.746000 -0.665900 0.000000
+vn 0.866100 0.499800 0.000000
+vn 0.000000 0.657400 -0.753500
+vn -0.898300 0.248400 -0.362400
+vn -0.661600 -0.421500 0.620200
+vn 0.661500 -0.421500 0.620200
+vn 0.898300 0.248400 -0.362300
+vn 0.000000 -0.000900 -1.000000
+vn -0.924600 -0.000600 -0.380700
+vn -0.617100 0.000000 0.786900
+vn 0.617100 0.000000 0.786900
+vn 0.924700 -0.000600 -0.380700
+vn 0.000000 -0.650300 -0.759600
+vn -0.895600 -0.254600 -0.364800
+vn -0.661600 0.421500 0.620200
+vn 0.661600 0.421500 0.620200
+vn 0.895600 -0.254600 -0.364800
+vn 0.004900 -1.000000 0.000000
+vn -0.729700 -0.683800 0.000000
+vn -0.324500 -0.256300 -0.910500
+vn 0.003300 -0.475500 -0.879700
+vn 0.578700 0.436200 -0.689100
+vn 0.000000 0.666600 -0.745400
+vn 0.578700 0.436200 0.689100
+vn 0.000000 0.666600 0.745400
+vn -0.324500 -0.256300 0.910500
+vn 0.003300 -0.475500 0.879700
+vn -1.000000 0.000000 0.000000
+vn -0.359600 0.000000 -0.933100
+vn 0.756400 0.000000 -0.654100
+vn 0.756400 0.000000 0.654100
+vn -0.359600 0.000000 0.933100
+vn -0.729700 0.683700 0.000000
+vn -0.324500 0.256300 -0.910500
+vn 0.578700 -0.436200 -0.689100
+vn 0.578700 -0.436200 0.689100
+vn -0.324500 0.256300 0.910500
+vn 0.000000 0.470900 -0.882200
+vn 0.000000 -0.666600 -0.745400
+vn 0.000000 -0.666600 0.745400
+vn 0.000000 0.470900 0.882200
+vn 0.729700 0.683700 0.000000
+vn 0.324500 0.256300 -0.910500
+vn -0.578700 -0.436200 -0.689100
+vn -0.578700 -0.436200 0.689100
+vn 0.324500 0.256300 0.910500
+vn 1.000000 -0.001100 0.000000
+vn 0.361000 -0.000700 -0.932600
+vn -0.756400 0.000000 -0.654100
+vn -0.756400 0.000000 0.654100
+vn 0.361000 -0.000700 0.932600
+vn 0.736100 -0.676800 0.000000
+vn 0.327100 -0.263100 -0.907600
+vn -0.578700 0.436200 -0.689100
+vn -0.578700 0.436200 0.689100
+vn 0.327100 -0.263100 0.907600
+vn -0.004900 -1.000000 0.000000
+vn 0.729700 -0.683800 0.000000
+vn 0.324500 -0.256300 0.910500
+vn -0.003300 -0.475400 0.879700
+vn 0.324500 -0.256300 -0.910500
+vn -0.003300 -0.475400 -0.879700
+vn 1.000000 0.000000 0.000000
+vn 0.359600 0.000000 0.933100
+vn 0.359600 0.000000 -0.933100
+vn -1.000000 -0.001100 0.000000
+vn -0.361000 -0.000700 0.932600
+vn -0.361000 -0.000700 -0.932600
+vn -0.736100 -0.676800 0.000000
+vn -0.327100 -0.263100 0.907600
+vn -0.327100 -0.263100 -0.907600
+vn 0.000000 -1.000000 0.004800
+vn 0.000000 -0.657400 -0.753500
+vn 0.898300 -0.248500 -0.362400
+vn 0.863600 -0.504100 0.003400
+vn -0.898300 -0.248500 -0.362400
+vn -0.863600 -0.504100 0.003400
+vn 0.000000 0.000000 -1.000000
+vn 0.925200 0.000000 -0.379500
+vn -0.925200 0.000000 -0.379500
+vn 0.898300 0.248500 -0.362400
+vn 0.661600 -0.421500 0.620200
+vn -0.898300 0.248500 -0.362400
+vn 0.898300 0.248500 0.362300
+vn -0.898300 0.248500 0.362300
+vn 0.000000 -0.000900 1.000000
+vn 0.924700 -0.000600 0.380700
+vn -0.924700 -0.000600 0.380700
+vn 0.000000 -0.650300 0.759600
+vn 0.895600 -0.254600 0.364700
+vn -0.895600 -0.254600 0.364700
+vn 0.729700 -0.683700 0.000000
+vn 0.729700 0.683800 0.000000
+vn -0.729700 0.683800 0.000000
+vn -0.898300 -0.248400 0.362300
+vn -0.863600 -0.504100 -0.003500
+vn 0.898300 -0.248400 0.362300
+vn 0.863600 -0.504100 -0.003500
+vn 0.000000 -0.271400 0.962500
+vn -0.919700 -0.109100 0.377200
+vn -0.603800 0.206100 -0.770000
+vn 0.603800 0.206100 -0.770000
+vn 0.919700 -0.109100 0.377200
+vn 0.000000 -0.272500 -0.962100
+vn -0.918500 -0.110600 -0.379700
+vn -0.661500 0.421500 0.620200
+vn -0.603800 0.206100 0.770000
+vn 0.661500 0.421500 0.620200
+vn 0.603800 0.206100 0.770000
+vn 0.918500 -0.110600 -0.379700
+vn 0.351300 -0.867800 -0.351300
+vn 0.661700 0.352400 -0.661700
+vn 0.725000 -0.619800 -0.300300
+vn 0.496800 -0.867800 0.000000
+vn 0.935800 0.352400 0.000000
+vn 0.725000 -0.619800 0.300300
+vn 0.351300 -0.867800 0.351300
+vn 0.661700 0.352400 0.661700
+vn 0.300300 -0.619800 0.725000
+vn 0.000000 -0.867800 0.496800
+vn 0.000000 0.352400 0.935800
+vn -0.300300 -0.619800 0.725000
+vn -0.351300 -0.867800 0.351300
+vn -0.661700 0.352400 0.661700
+vn -0.725000 -0.619800 0.300300
+vn -0.351300 -0.867800 -0.351300
+vn -0.661700 0.352400 -0.661700
+vn -0.300300 -0.619800 -0.725000
+vn 0.000000 0.352400 -0.935800
+vn -0.935800 0.352400 0.000000
+vn -0.496800 -0.867800 0.000000
+vn -0.725000 -0.619800 -0.300300
+vn 0.000000 -0.867800 -0.496800
+vn 0.300300 -0.619800 -0.725000
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 4/4/4 3/3/3 5/5/5 6/6/6
+f 6/6/6 5/5/5 7/7/7 8/8/8
+f 8/8/8 7/7/7 9/9/9 10/10/10
+f 1/1/1 10/11/10 9/12/9 2/2/2
+f 2/2/2 11/13/11 12/14/12 3/3/3
+f 3/3/3 12/14/12 13/15/13 5/5/5
+f 5/5/5 13/15/13 14/16/14 7/7/7
+f 7/7/7 14/16/14 15/17/15 9/9/9
+f 9/12/9 15/18/15 11/13/11 2/2/2
+f 11/13/11 16/19/16 17/20/17 12/14/12
+f 12/14/12 17/20/17 18/21/18 13/15/13
+f 13/15/13 18/21/18 19/22/19 14/16/14
+f 14/16/14 19/22/19 20/23/20 15/17/15
+f 15/18/15 20/24/20 16/19/16 11/13/11
+f 16/19/16 21/25/21 22/26/22 17/20/17
+f 17/20/17 22/26/22 23/27/23 18/21/18
+f 18/21/18 23/27/23 24/28/24 19/22/19
+f 19/22/19 24/28/24 25/29/25 20/23/20
+f 20/24/20 25/30/25 21/25/21 16/19/16
+f 21/25/21 26/31/26 27/32/27 22/26/22
+f 22/26/22 27/32/27 28/33/28 23/27/23
+f 23/27/23 28/33/28 29/34/29 24/28/24
+f 24/28/24 29/34/29 30/35/30 25/29/25
+f 25/30/25 30/36/30 26/31/26 21/25/21
+f 26/37/26 31/38/31 32/39/32 27/40/27
+f 27/40/27 32/39/32 33/41/33 28/42/28
+f 28/42/28 33/41/33 34/43/34 29/44/29
+f 29/44/29 34/43/34 35/45/35 30/46/30
+f 30/47/30 35/48/35 31/38/31 26/37/26
+f 31/38/31 36/49/36 37/50/37 32/39/32
+f 32/39/32 37/50/37 38/51/38 33/41/33
+f 33/41/33 38/51/38 39/52/39 34/43/34
+f 34/43/34 39/52/39 40/53/40 35/45/35
+f 35/48/35 40/54/40 36/49/36 31/38/31
+f 36/49/36 1/1/1 4/4/4 37/50/37
+f 37/50/37 4/4/4 6/6/6 38/51/38
+f 38/51/38 6/6/6 8/8/8 39/52/39
+f 39/52/39 8/8/8 10/10/10 40/53/40
+f 1/1/1 36/49/36 40/54/40 10/11/10
+f 41/55/41 42/56/42 43/57/43 44/58/44
+f 44/59/44 43/60/43 45/61/45 46/62/46
+f 46/62/46 45/61/45 47/63/47 48/64/48
+f 48/64/48 47/63/47 49/65/49 50/66/50
+f 41/55/41 50/66/50 49/65/49 42/56/42
+f 42/56/42 51/67/51 52/68/52 43/57/43
+f 43/60/43 52/69/52 53/70/53 45/61/45
+f 45/61/45 53/70/53 54/71/54 47/63/47
+f 47/63/47 54/71/54 55/72/55 49/65/49
+f 49/65/49 55/72/55 51/67/51 42/56/42
+f 51/67/51 56/73/56 57/74/57 52/68/52
+f 52/69/52 57/75/57 58/76/58 53/70/53
+f 53/70/53 58/76/58 59/77/59 54/71/54
+f 54/71/54 59/77/59 60/78/60 55/72/55
+f 55/72/55 60/78/60 56/73/56 51/67/51
+f 56/73/56 61/79/21 62/80/61 57/74/57
+f 57/75/57 62/81/61 63/82/62 58/76/58
+f 58/76/58 63/82/62 64/83/63 59/77/59
+f 59/77/59 64/83/63 65/84/64 60/78/60
+f 60/78/60 65/84/64 61/79/21 56/73/56
+f 61/85/21 66/86/65 67/87/66 62/88/61
+f 62/35/61 67/89/66 68/90/67 63/91/62
+f 63/91/62 68/90/67 69/92/68 64/93/63
+f 64/93/63 69/92/68 70/94/69 65/95/64
+f 65/95/64 70/94/69 66/86/65 61/85/21
+f 66/86/65 71/96/70 72/97/71 67/87/66
+f 67/89/66 72/98/71 73/99/72 68/90/67
+f 68/90/67 73/99/72 74/100/73 69/92/68
+f 69/92/68 74/100/73 75/101/74 70/94/69
+f 70/94/69 75/101/74 71/96/70 66/86/65
+f 71/96/70 76/102/75 77/103/76 72/97/71
+f 72/98/71 77/104/76 78/105/77 73/99/72
+f 73/99/72 78/105/77 79/106/78 74/100/73
+f 74/100/73 79/106/78 80/107/79 75/101/74
+f 75/101/74 80/107/79 76/102/75 71/96/70
+f 76/102/75 41/55/41 44/58/44 77/103/76
+f 77/104/76 44/59/44 46/62/46 78/105/77
+f 78/105/77 46/62/46 48/64/48 79/106/78
+f 79/106/78 48/64/48 50/66/50 80/107/79
+f 41/55/41 76/102/75 80/107/79 50/66/50
+f 81/108/80 82/109/81 83/110/82 84/111/83
+f 84/9/83 83/17/82 85/112/78 86/113/48
+f 86/113/48 85/112/78 87/114/77 88/115/46
+f 88/115/46 87/114/77 89/116/84 90/117/85
+f 81/108/80 90/117/85 89/116/84 82/109/81
+f 82/109/81 91/118/86 92/119/87 83/110/82
+f 83/17/82 92/23/87 93/120/73 85/112/78
+f 85/112/78 93/120/73 94/121/72 87/114/77
+f 87/114/77 94/121/72 95/122/88 89/116/84
+f 89/116/84 95/122/88 91/118/86 82/109/81
+f 91/118/86 96/123/65 97/124/69 92/119/87
+f 92/23/87 97/29/69 98/125/68 93/120/73
+f 93/120/73 98/125/68 99/126/67 94/121/72
+f 94/121/72 99/126/67 100/127/66 95/122/88
+f 95/122/88 100/127/66 96/123/65 91/118/86
+f 96/123/65 101/85/21 102/88/64 97/124/69
+f 97/29/69 102/35/64 103/91/63 98/125/68
+f 98/125/68 103/91/63 104/93/62 99/126/67
+f 99/126/67 104/93/62 105/95/61 100/127/66
+f 100/127/66 105/95/61 101/85/21 96/123/65
+f 101/128/21 106/129/56 107/130/60 102/131/64
+f 102/46/64 107/45/60 108/132/59 103/133/63
+f 103/133/63 108/132/59 109/134/58 104/135/62
+f 104/135/62 109/134/58 110/136/57 105/137/61
+f 105/137/61 110/136/57 106/129/56 101/128/21
+f 106/129/56 111/138/89 112/139/90 107/130/60
+f 107/45/60 112/53/90 113/140/54 108/132/59
+f 108/132/59 113/140/54 114/141/53 109/134/58
+f 109/134/58 114/141/53 115/142/91 110/136/57
+f 110/136/57 115/142/91 111/138/89 106/129/56
+f 111/138/89 116/143/92 117/144/93 112/139/90
+f 112/53/90 117/10/93 118/145/47 113/140/54
+f 113/140/54 118/145/47 119/146/45 114/141/53
+f 114/141/53 119/146/45 120/147/94 115/142/91
+f 115/142/91 120/147/94 116/143/92 111/138/89
+f 116/143/92 81/108/80 84/111/83 117/144/93
+f 117/10/93 84/9/83 86/113/48 118/145/47
+f 118/145/47 86/113/48 88/115/46 119/146/45
+f 119/146/45 88/115/46 90/117/85 120/147/94
+f 81/108/80 116/143/92 120/147/94 90/117/85
+f 121/148/95 122/149/96 123/150/97 124/151/98
+f 124/151/98 123/150/97 125/152/39 126/153/8
+f 126/153/8 125/152/39 127/154/38 128/155/6
+f 128/155/6 127/154/38 129/156/99 130/157/100
+f 121/148/95 130/103/100 129/58/99 122/149/96
+f 122/149/96 131/158/101 132/159/102 123/150/97
+f 123/150/97 132/159/102 133/160/34 125/152/39
+f 125/152/39 133/160/34 134/161/33 127/154/38
+f 127/154/38 134/161/33 135/162/103 129/156/99
+f 129/58/99 135/57/103 131/158/101 122/149/96
+f 131/158/101 136/163/26 137/164/104 132/159/102
+f 132/159/102 137/164/104 138/165/105 133/160/34
+f 133/160/34 138/165/105 139/166/28 134/161/33
+f 134/161/33 139/166/28 140/167/106 135/162/103
+f 135/57/103 140/68/106 136/163/26 131/158/101
+f 136/163/26 141/168/21 142/169/25 137/164/104
+f 137/164/104 142/169/25 143/170/24 138/165/105
+f 138/165/105 143/170/24 144/171/23 139/166/28
+f 139/166/28 144/171/23 145/172/22 140/167/106
+f 140/68/106 145/74/22 141/168/21 136/163/26
+f 141/168/21 146/173/16 147/174/107 142/169/25
+f 142/169/25 147/174/107 148/175/19 143/170/24
+f 143/170/24 148/175/19 149/176/18 144/171/23
+f 144/171/23 149/176/18 150/177/108 145/172/22
+f 145/74/22 150/80/108 146/173/16 141/168/21
+f 146/178/16 151/179/109 152/180/110 147/181/107
+f 147/181/107 152/180/110 153/182/14 148/183/19
+f 148/183/19 153/182/14 154/184/13 149/185/18
+f 149/185/18 154/184/13 155/186/111 150/187/108
+f 150/88/108 155/87/111 151/179/109 146/178/16
+f 151/179/109 156/188/112 157/189/113 152/180/110
+f 152/180/110 157/189/113 158/190/7 153/182/14
+f 153/182/14 158/190/7 159/191/5 154/184/13
+f 154/184/13 159/191/5 160/192/114 155/186/111
+f 155/87/111 160/97/114 156/188/112 151/179/109
+f 156/188/112 121/148/95 124/151/98 157/189/113
+f 157/189/113 124/151/98 126/153/8 158/190/7
+f 158/190/7 126/153/8 128/155/6 159/191/5
+f 159/191/5 128/155/6 130/157/100 160/192/114
+f 121/148/95 156/188/112 160/97/114 130/103/100
+f 161/193/80 162/194/115 163/60/82 164/59/83
+f 164/195/83 163/196/82 165/197/78 166/198/48
+f 166/198/48 165/197/78 167/199/77 168/200/46
+f 168/200/46 167/199/77 169/201/84 170/202/85
+f 161/193/80 170/202/85 169/201/84 162/194/115
+f 162/194/115 171/203/86 172/69/87 163/60/82
+f 163/196/82 172/204/87 173/205/73 165/197/78
+f 165/197/78 173/205/73 174/206/72 167/199/77
+f 167/199/77 174/206/72 175/207/88 169/201/84
+f 169/201/84 175/207/88 171/203/86 162/194/115
+f 171/203/86 176/208/116 177/75/69 172/69/87
+f 172/204/87 177/209/69 178/210/68 173/205/73
+f 173/205/73 178/210/68 179/211/67 174/206/72
+f 174/206/72 179/211/67 180/212/66 175/207/88
+f 175/207/88 180/212/66 176/208/116 171/203/86
+f 176/208/116 181/213/21 182/81/64 177/75/69
+f 177/209/69 182/214/64 183/215/63 178/210/68
+f 178/210/68 183/215/63 184/216/62 179/211/67
+f 179/211/67 184/216/62 185/217/61 180/212/66
+f 180/212/66 185/217/61 181/213/21 176/208/116
+f 181/34/21 186/218/117 187/89/60 182/35/64
+f 182/36/64 187/219/60 188/220/59 183/31/63
+f 183/31/63 188/220/59 189/221/58 184/32/62
+f 184/32/62 189/221/58 190/222/57 185/33/61
+f 185/33/61 190/222/57 186/218/117 181/34/21
+f 186/218/117 191/223/89 192/98/90 187/89/60
+f 187/219/60 192/224/90 193/225/54 188/220/59
+f 188/220/59 193/225/54 194/226/53 189/221/58
+f 189/221/58 194/226/53 195/227/91 190/222/57
+f 190/222/57 195/227/91 191/223/89 186/218/117
+f 191/223/89 196/228/92 197/104/93 192/98/90
+f 192/224/90 197/229/93 198/230/47 193/225/54
+f 193/225/54 198/230/47 199/231/45 194/226/53
+f 194/226/53 199/231/45 200/232/94 195/227/91
+f 195/227/91 200/232/94 196/228/92 191/223/89
+f 196/228/92 161/193/80 164/59/83 197/104/93
+f 197/229/93 164/195/83 166/198/48 198/230/47
+f 198/230/47 166/198/48 168/200/46 199/231/45
+f 199/231/45 168/200/46 170/202/85 200/232/94
+f 161/193/80 196/228/92 200/232/94 170/202/85
+f 201/233/1 202/234/2 203/235/118 204/236/119
+f 204/111/119 203/110/118 205/237/5 206/238/6
+f 206/238/6 205/237/5 207/239/7 208/240/8
+f 208/240/8 207/239/7 209/241/120 210/242/121
+f 201/233/1 210/242/121 209/241/120 202/234/2
+f 202/234/2 211/243/122 212/244/123 203/235/118
+f 203/110/118 212/119/123 213/245/124 205/237/5
+f 205/237/5 213/245/124 214/246/125 207/239/7
+f 207/239/7 214/246/125 215/247/126 209/241/120
+f 209/241/120 215/247/126 211/243/122 202/234/2
+f 216/248/127 221/249/36 222/250/37 217/251/128
+f 217/139/128 222/144/37 223/252/129 218/253/130
+f 218/253/130 223/252/129 224/254/131 219/255/132
+f 219/255/132 224/254/131 225/256/40 220/257/133
+f 220/257/133 225/256/40 221/249/36 216/248/127
+f 221/249/36 201/233/1 204/236/119 222/250/37
+f 222/144/37 204/111/119 206/238/6 223/252/129
+f 223/252/129 206/238/6 208/240/8 224/254/131
+f 224/254/131 208/240/8 210/242/121 225/256/40
+f 201/233/1 221/249/36 225/256/40 210/242/121
+f 228/149/134 229/152/135 243/258/136
+f 230/188/137 231/190/138 244/259/139
+f 232/178/140 233/183/141 245/260/142
+f 234/245/143 235/247/144 246/261/145
+f 236/238/146 237/242/147 247/262/148
+f 240/173/149 241/175/150 248/263/151
+f 229/264/135 227/178/152 241/265/150 239/115/153 237/266/147 235/33/144 233/267/141 231/64/138
+f 238/253/154 239/257/153 249/268/155
+f 226/269/156 228/270/134 230/271/137 232/272/140 234/273/143 236/274/146 238/275/154 240/276/149
+f 226/163/156 227/165/152 242/277/157
+f 227/165/152 229/152/135 242/277/157
+f 229/152/135 228/149/134 242/277/157
+f 228/149/134 226/163/156 242/277/157
+f 229/152/135 231/190/138 243/258/136
+f 231/190/138 230/188/137 243/258/136
+f 230/188/137 228/149/134 243/258/136
+f 231/190/138 233/183/141 244/259/139
+f 233/183/141 232/178/140 244/259/139
+f 232/178/140 230/188/137 244/259/139
+f 233/183/141 235/247/144 245/260/142
+f 235/247/144 234/245/143 245/260/142
+f 234/245/143 232/178/140 245/260/142
+f 235/247/144 237/242/147 246/261/145
+f 237/242/147 236/238/146 246/261/145
+f 236/238/146 234/245/143 246/261/145
+f 237/242/147 239/257/153 247/262/148
+f 239/257/153 238/253/154 247/262/148
+f 238/253/154 236/238/146 247/262/148
+f 241/175/150 227/165/152 248/263/151
+f 227/165/152 226/163/156 248/263/151
+f 226/163/156 240/173/149 248/263/151
+f 239/257/153 241/278/150 249/268/155
+f 241/278/150 240/279/149 249/268/155
+f 240/279/149 238/253/154 249/268/155
diff --git a/homedecor_modpack/chains/textures/chain_brass_inv.png b/homedecor_modpack/chains/textures/chain_brass_inv.png
new file mode 100644
index 0000000..8c2d554
--- /dev/null
+++ b/homedecor_modpack/chains/textures/chain_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/chain_wrought_iron_inv.png b/homedecor_modpack/chains/textures/chain_wrought_iron_inv.png
new file mode 100644
index 0000000..c552f7b
--- /dev/null
+++ b/homedecor_modpack/chains/textures/chain_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/chains_brass.png b/homedecor_modpack/chains/textures/chains_brass.png
new file mode 100644
index 0000000..e2fb20d
--- /dev/null
+++ b/homedecor_modpack/chains/textures/chains_brass.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/chains_candle.png b/homedecor_modpack/chains/textures/chains_candle.png
new file mode 100644
index 0000000..d709a8c
--- /dev/null
+++ b/homedecor_modpack/chains/textures/chains_candle.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/chains_candle_flame.png b/homedecor_modpack/chains/textures/chains_candle_flame.png
new file mode 100644
index 0000000..a34b9a5
--- /dev/null
+++ b/homedecor_modpack/chains/textures/chains_candle_flame.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/chains_wrought_iron.png b/homedecor_modpack/chains/textures/chains_wrought_iron.png
new file mode 100644
index 0000000..29af8db
--- /dev/null
+++ b/homedecor_modpack/chains/textures/chains_wrought_iron.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/top_chain_brass_inv.png b/homedecor_modpack/chains/textures/top_chain_brass_inv.png
new file mode 100644
index 0000000..dc8183c
--- /dev/null
+++ b/homedecor_modpack/chains/textures/top_chain_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/chains/textures/top_chain_wrought_iron_inv.png b/homedecor_modpack/chains/textures/top_chain_wrought_iron_inv.png
new file mode 100644
index 0000000..cddf6c9
--- /dev/null
+++ b/homedecor_modpack/chains/textures/top_chain_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/CHANGES.txt b/homedecor_modpack/computer/CHANGES.txt
new file mode 100644
index 0000000..b9b455c
--- /dev/null
+++ b/homedecor_modpack/computer/CHANGES.txt
@@ -0,0 +1,38 @@
+version 0.2.3:
+ - Added animated router front
+ - Added all crafts for new items
+
+version 0.2.2:
+ - Added printer
+ - Added server
+
+version 0.2.1:
+ - Added modern tower pc
+ - Added wifi router
+ - Added flatscreen LCD and keyboard
+
+Version 0.2.0:
+ - Added recipes.
+ - Partly re-written.
+ - Removed original baby tower (seemed out of place).
+ - You can now turn devices on and off by right-clicking.
+ - Mod is now on github.
+
+Version 0.1.4:
+ - Added Admiral 64 & 128 (Commodore 64 & 128 lookalikes)
+
+Version 0.1.3:
+ - Added SX Spectre (Sinclair ZX Spectrum lookalike)
+ - Added Pony SlayStation 2 (Sony PlayStation lookalike)
+ - Minor fixes to textures.
+
+Version 0.1.2:
+ - Nodes now use the node box as selection box.
+ - Added Pony SlayStation (Sony PlayStation lookalike)
+ - Added Pony Vanio (Sony VAIO lookalike...err...just a generic laptop)
+
+Version 0.1.1:
+ - Added SheFriend SOO (Amiga 500 lookalike)
+
+Version 0.1.0:
+ - Initial Version only a baby tower.
diff --git a/homedecor_modpack/computer/README.txt b/homedecor_modpack/computer/README.txt
new file mode 100644
index 0000000..6d6c7dc
--- /dev/null
+++ b/homedecor_modpack/computer/README.txt
@@ -0,0 +1,61 @@
+
+Decorative Computers Mod for Minetest
+by Diego Martínez <kaeza@users.sf.net>
+
+How to install:
+Unzip the archive an place it in minetest-base-directory/mods/minetest/
+if you have a windows client or a linux run-in-place client. If you have
+a linux system-wide instalation place it in ~/.minetest/mods/minetest/.
+If you want to install this mod only in one world create the folder
+worldmods/ in your worlddirectory.
+For further information or help see:
+http://wiki.minetest.com/wiki/Installing_Mods
+
+How to use the mod:
+For now just use creative mode or the `/give' or `/giveme' chat commands
+ to get the items.
+
+These are the items currently defined by this mod:
+
+computer:printer (printer scanner combo)
+computer:server (rack server)
+computer:tower (modern type)
+computer:monitor (LCD with keyboard)
+computer:router (wifi type)
+computer:babytower
+computer:shefriendSOO
+computer:slaystation
+computer:vanio
+computer:spectre
+computer:slaystation2
+computer:admiral64
+computer:admiral128
+
+There's also a `computer:computer' alias to `computer:babytower'.
+
+License:
+Sourcecode: WTFPL (see below)
+Graphics: WTFPL (see below)
+
+Thanks to all the people in the forums and the #minetest IRC channel for
+ their support and suggestions; in no particular order:
+ OldCoder, Josh, tonyka, VanessaE, davidpace, Jordach, and all the other
+ sirs/madammes that I forgot to mention (sorry, please remind me if it
+ was you ;) ).
+
+See also:
+http://minetest.net/
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2012 Diego Martínez <lkaezadl3@gmail.com>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/homedecor_modpack/computer/TODO.txt b/homedecor_modpack/computer/TODO.txt
new file mode 100644
index 0000000..e1e5752
--- /dev/null
+++ b/homedecor_modpack/computer/TODO.txt
@@ -0,0 +1,29 @@
+
+TO-DO List:
+
+- New Nodes:
+
+ - Computers:
+ - Mainframe (well me have a rackserver now)
+ - My Computer :P
+
+ - Peripherals:
+ - Scanner ( well we have a printer/scanner combo now)
+
+ - Consoles:
+ - NES
+ - SNES
+ - DC
+
+ - Handhelds
+ - GB/C
+ - GBA
+ - Calculator
+ - Smartphone
+
+- Animated screens
+
+- Implement some kind of games (take code from `tetris' mod?). [It would be
+ nice if Minetest provided a "canvas" GUI widget :)].
+
+- Get more suggestions :)
diff --git a/homedecor_modpack/computer/computers.lua b/homedecor_modpack/computer/computers.lua
new file mode 100644
index 0000000..cf7c6ac
--- /dev/null
+++ b/homedecor_modpack/computer/computers.lua
@@ -0,0 +1,337 @@
+-- Amiga 500 lookalike
+computer.register("computer:shefriendSOO", {
+ description = "SheFriendSOO",
+ tiles_off = { front=true },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 0, 0, 17, 32, 32, 12 }, -- Monitor Screen
+ { 3, 3, 29, 26, 26, 3 }, -- Monitor Tube
+ { 0, 0, 0, 32, 4, 17 } -- Keyboard
+ })
+})
+
+-- Some generic laptop
+minetest.register_node("computer:vanio", {
+ drawtype = "mesh",
+ mesh = "computer_laptop.obj",
+ description = "Pony Vanio",
+ inventory_image = "computer_laptop_inv.png",
+ tiles = {"computer_laptop.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = 4,
+ groups = {snappy=3},
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.35, -0.5, -0.35, 0.35, 0.05, 0.35},
+ },
+ on_rightclick = function(pos, node, clicker, itemstack)
+ node.name = "computer:vanio_off"
+ minetest.set_node(pos, node)
+ end
+})
+
+minetest.register_node("computer:vanio_off", {
+ drawtype = "mesh",
+ mesh = "computer_laptop_closed.obj",
+ tiles = {"computer_laptop.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, not_in_creative_inventory=1},
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.35, -0.5, -0.35, 0.35, -0.4, 0.25},
+ },
+ drop = "computer:vanio",
+ on_rightclick = function(pos, node, clicker, itemstack)
+ node.name = "computer:vanio"
+ minetest.set_node(pos, node)
+ end
+})
+
+-- Sony PlayStation lookalike
+computer.register("computer:slaystation", {
+ description = "Pony SlayStation",
+ inventory_image = "computer_ps1_inv.png",
+ tiles_off = { top=true },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 0, 0, 11, 32, 6, 21 }, -- Console
+ { 1, 0, 1, 4, 2, 9 }, -- Controller 1 L Grip
+ { 10, 0, 1, 4, 2, 9 }, -- Controller 1 R Grip
+ { 5, 0, 4, 5, 2, 5 }, -- Controller 1 Center
+ { 18, 0, 1, 4, 2, 9 }, -- Controller 2 L Grip
+ { 27, 0, 1, 4, 2, 9 }, -- Controller 2 R Grip
+ { 22, 0, 4, 5, 2, 5 } -- Controller 2 Center
+ })
+})
+
+-- Sony PlayStation 2 lookalike
+computer.register("computer:slaystation2", {
+ description = "Pony SlayStation 2",
+ inventory_image = "computer_ps2_inv.png",
+ tiles_off = { front=true },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 2, 2, 11, 28, 3, 19 }, -- Console (Upper part)
+ { 2, 0, 11, 26, 2, 19 }, -- Console (Lower part)
+ { 1, 0, 1, 4, 2, 9 }, -- Controller 1 L Grip
+ { 10, 0, 1, 4, 2, 9 }, -- Controller 1 R Grip
+ { 5, 0, 1, 5, 2, 8 }, -- Controller 1 Center
+ { 18, 0, 1, 4, 2, 9 }, -- Controller 2 L Grip
+ { 27, 0, 1, 4, 2, 9 }, -- Controller 2 R Grip
+ { 22, 0, 1, 5, 2, 8 } -- Controller 2 Center
+ })
+})
+
+-- Sinclair ZX Spectrum lookalike
+computer.register("computer:specter", {
+ description = "SX Specter",
+ inventory_image = "computer_specter_inv.png",
+ tiles_off = { },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 3, 0, 0, 26, 4, 17 }, -- Keyboard
+ { 18, 0, 18, 12, 6, 14 } -- Tape Player
+ })
+})
+
+-- Nintendo Wii lookalike
+computer.register("computer:wee", {
+ description = "Nientiendo Wee",
+ inventory_image = "computer_wii_inv.png",
+ tiles_off = { front=true },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 11, 0, 3, 10, 6, 26 }, -- Base
+ { 12, 6, 4, 8, 22, 24 } -- Top
+ })
+})
+
+-- Apple iPad lookalike
+minetest.register_node("computer:piepad", {
+ description = "Snapple Piepad",
+ drawtype = "signlike",
+ tiles = {"computer_piepad_inv.png"},
+ inventory_image = "computer_piepad_inv.png",
+ wield_image = "computer_piepad_inv.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ light_source = 8,
+ walkable = false,
+ groups = {oddly_breakable_by_hand=2},
+ selection_box = {type = "wallmounted"},
+ sounds = default.node_sound_wood_defaults()
+})
+
+-- Commodore 64 lookalike
+computer.register("computer:admiral64", {
+ description = "Admiral64",
+ inventory_image = "computer_ad64_inv.png",
+ tiles_off = { },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 0, 0, 0, 32, 4, 18 } -- Keyboard
+ })
+})
+
+-- Commodore 128 lookalike
+computer.register("computer:admiral128", {
+ description = "Admiral128",
+ inventory_image = "computer_ad128_inv.png",
+ tiles_off = { },
+ node_box = computer.pixelnodebox(32, {
+ -- X Y Z W H L
+ { 0, 0, 0, 32, 4, 27 } -- Keyboard
+ })
+})
+
+-- Generic Flat Screen LCD (16x9) with keyboard
+local mo_sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.43, 0.5, 0.2, 0.25 }
+}
+
+minetest.register_node("computer:monitor", {
+ description = "Monitor and keyboard",
+ inventory_image = "computer_monitor_inv.png",
+ drawtype = "mesh",
+ mesh = "computer_monitor.obj",
+ tiles = {"computer_black.png", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ groups = {snappy=3},
+ selection_box = mo_sbox,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ node.name = "computer:monitor_on"
+ minetest.set_node(pos, node)
+ end
+})
+
+minetest.register_node("computer:monitor_on", {
+ description = "Monitor and keyboard",
+ drawtype = "mesh",
+ mesh = "computer_monitor.obj",
+ tiles = {"monitor_display.png^[transformFX", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = 9,
+ walkable = false,
+ groups = {snappy=3, not_in_creative_inventory=1},
+ selection_box = mo_sbox,
+ drop = "computer:monitor",
+ on_rightclick = function(pos, node, clicker, itemstack)
+ node.name = "computer:monitor"
+ minetest.set_node(pos, node)
+ end
+})
+
+minetest.register_alias("computer:monitor_bios", "computer:monitor")
+minetest.register_alias("computer:monitor_loading", "computer:monitor")
+minetest.register_alias("computer:monitor_login", "computer:monitor")
+minetest.register_alias("computer:monitor_desktop", "computer:monitor")
+
+--WIFI Router (linksys look-a-like)
+minetest.register_node("computer:router", {
+ description = "WIFI Router",
+ inventory_image = "computer_router_inv.png",
+ tiles = {"computer_router_t.png","computer_router_bt.png","computer_router_l.png","computer_router_r.png","computer_router_b.png",
+ {name="computer_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"computer_router_f.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ groups = {snappy=3},
+ sound = default.node_sound_wood_defaults(),
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
+ {-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
+ {0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
+ {-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375}
+ }
+ }
+})
+
+local pct_cbox = {
+ type = "fixed",
+ fixed = { -0.1875, -0.5, -0.36, 0.1875, 0.34, 0.46 }
+}
+
+--Modern PC Tower
+minetest.register_node("computer:tower", {
+ description = "Computer Tower",
+ inventory_image = "computer_tower_inv.png",
+ drawtype = "mesh",
+ mesh = "computer_tower.obj",
+ tiles = {"computer_tower.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ sound = default.node_sound_wood_defaults(),
+ selection_box = pct_cbox,
+ collision_box = pct_cbox
+})
+
+minetest.register_alias("computer:tower_on", "computer:tower")
+
+-- Printer/scaner combo
+minetest.register_node("computer:printer", {
+ description = "Printer Scaner Combo",
+ inventory_image = "computer_printer_inv.png",
+ tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png",
+ "computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ groups = {snappy=3},
+ sound = default.node_sound_wood_defaults(),
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.3125, -0.125, 0.4375, -0.0625, 0.375},
+ {-0.4375, -0.5, -0.125, 0.4375, -0.4375, 0.375},
+ {-0.4375, -0.5, -0.125, -0.25, -0.0625, 0.375},
+ {0.25, -0.5, -0.125, 0.4375, -0.0625, 0.375},
+ {-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375},
+ {-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375},
+ {-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5},
+ {-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0}
+ },
+ },
+})
+
+--Rack Server
+minetest.register_node("computer:server", {
+ drawtype = "nodebox",
+ description = "Rack Server",
+ tiles = {
+ 'computer_server_t.png',
+ 'computer_server_bt.png',
+ 'computer_server_l.png',
+ 'computer_server_r.png',
+ 'computer_server_bt.png',
+ 'computer_server_f_off.png'
+ },
+ inventory_image = "computer_server_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
+ },
+ sounds = default.node_sound_wood_defaults(),
+ on_rightclick = function(pos, node, clicker, itemstack)
+ node.name = "computer:server_on"
+ minetest.set_node(pos, node)
+ end,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pos = pointed_thing.above
+ if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
+ minetest.chat_send_player( placer:get_player_name(), "Not enough vertical space to place a server!" )
+ return
+ end
+ return minetest.item_place(itemstack, placer, pointed_thing)
+ end
+})
+
+minetest.register_node("computer:server_on", {
+ drawtype = "nodebox",
+ description = "Rack Server",
+ tiles = {
+ 'computer_server_t.png',
+ 'computer_server_bt.png',
+ 'computer_server_r.png',
+ 'computer_server_l.png',
+ 'computer_server_bt.png',
+ 'computer_server_f_on.png',
+ },
+ inventory_image = "computer_server_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3,not_in_creative_inventory=1},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
+ },
+ sounds = default.node_sound_wood_defaults(),
+ drop = 'computer:server',
+ on_rightclick = function(pos, node, clicker, itemstack)
+ node.name = "computer:server"
+ minetest.set_node(pos, node)
+ end
+})
diff --git a/homedecor_modpack/computer/depends.txt b/homedecor_modpack/computer/depends.txt
new file mode 100644
index 0000000..c48fe0d
--- /dev/null
+++ b/homedecor_modpack/computer/depends.txt
@@ -0,0 +1,3 @@
+default
+intllib?
+
diff --git a/homedecor_modpack/computer/init.lua b/homedecor_modpack/computer/init.lua
new file mode 100644
index 0000000..975f04f
--- /dev/null
+++ b/homedecor_modpack/computer/init.lua
@@ -0,0 +1,102 @@
+computer = {}
+screwdriver = screwdriver or {}
+
+computer.register = function (name, def)
+ local nodename = name
+ if (name:sub(1, 1) == ":") then name = name:sub(2) end
+ local modname, basename = name:match("^([^:]+):(.*)")
+ local TEXPFX = modname.."_"..basename.."_"
+ local ONSTATE = modname..":"..basename
+ local OFFSTATE = modname..":"..basename.."_off"
+ local def = def
+ minetest.register_node(ONSTATE, {
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ description = def.description,
+ inventory_image = def.inventory_image,
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
+ tiles = {
+ TEXPFX.."tp.png",
+ TEXPFX.."bt.png",
+ TEXPFX.."rt.png",
+ TEXPFX.."lt.png",
+ TEXPFX.."bk.png",
+ TEXPFX.."ft.png"
+ },
+ node_box = def.node_box,
+ selection_box = def.node_box,
+ on_rightclick = function (pos, node, clicker, itemstack)
+ if (def.on_turn_off) then
+ if (def.on_turn_off(pos, node, clicker, itemstack)) then return end
+ end
+ node.name = OFFSTATE
+ minetest.set_node(pos, node)
+ end
+ })
+ minetest.register_node(OFFSTATE, {
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
+ tiles = {
+ (TEXPFX.."tp"..(def.tiles_off.top and "_off" or "")..".png"),
+ (TEXPFX.."bt"..(def.tiles_off.bottom and "_off" or "")..".png"),
+ (TEXPFX.."rt"..(def.tiles_off.right and "_off" or "")..".png"),
+ (TEXPFX.."lt"..(def.tiles_off.left and "_off" or "")..".png"),
+ (TEXPFX.."bk"..(def.tiles_off.back and "_off" or "")..".png"),
+ (TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png")
+ },
+ node_box = def.node_box_off or def.node_box,
+ selection_box = def.node_box_off or def.node_box,
+ on_rightclick = function (pos, node, clicker, itemstack)
+ if (def.on_turn_on) then
+ if (def.on_turn_on(pos, node, clicker, itemstack)) then return end
+ end
+ node.name = ONSTATE
+ minetest.set_node(pos, node)
+ end,
+ drop = ONSTATE
+ })
+end
+
+computer.register_handheld = function (name, def)
+ local nodename = name
+ if (name:sub(1, 1) == ":") then name = name:sub(2) end
+ local modname, basename = name:match("^([^:]+):(.*)")
+ local TEXPFX = modname.."_"..basename.."_inv"
+ local ONSTATE = modname..":"..basename
+ local OFFSTATE = modname..":"..basename.."_off"
+ local on_use = def.on_use
+ minetest.register_craftitem(ONSTATE, {
+ description = def.description,
+ inventory_image = TEXPFX..".png",
+ wield_image = TEXPFX..".png"
+ })
+end
+
+computer.pixelnodebox = function (size, boxes)
+ local fixed = { }
+ local i, box
+ for i, box in ipairs(boxes) do
+ local x, y, z, w, h, l = unpack(box)
+ fixed[#fixed + 1] = {
+ (x / size) - 0.5,
+ (y / size) - 0.5,
+ (z / size) - 0.5,
+ ((x + w) / size) - 0.5,
+ ((y + h) / size) - 0.5,
+ ((z + l) / size) - 0.5
+ }
+ end
+ return {
+ type = "fixed",
+ fixed = fixed
+ }
+end
+
+local MODPATH = minetest.get_modpath("computer")
+dofile(MODPATH.."/computers.lua")
+dofile(MODPATH.."/miscitems.lua")
+dofile(MODPATH.."/recipes.lua")
+dofile(MODPATH.."/tetris.lua")
diff --git a/homedecor_modpack/computer/locale/es.txt b/homedecor_modpack/computer/locale/es.txt
new file mode 100644
index 0000000..db6fdcb
--- /dev/null
+++ b/homedecor_modpack/computer/locale/es.txt
@@ -0,0 +1,6 @@
+
+# Language: Español
+# Author: Diego Martínez <lkaezadl3@gmail.com>
+
+Plastic sheet = Placa de Plastico
+Unprocessed Plastic base = Base de Plastico No Procesada
diff --git a/homedecor_modpack/computer/miscitems.lua b/homedecor_modpack/computer/miscitems.lua
new file mode 100644
index 0000000..c5017a7
--- /dev/null
+++ b/homedecor_modpack/computer/miscitems.lua
@@ -0,0 +1,71 @@
+
+-- Copyright (C) 2012-2013 Diego Martínez <kaeza@users.sf.net>
+-- License is WTFPL (see README.txt).
+
+-- This file defines some items in order to not have to depend on other mods.
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+
+if (not minetest.get_modpath("homedecor")) then
+
+ minetest.register_craftitem(":homedecor:plastic_sheeting", {
+ description = S("Plastic sheet"),
+ inventory_image = "homedecor_plastic_sheeting.png",
+ })
+
+ minetest.register_craftitem(":homedecor:plastic_base", {
+ description = S("Unprocessed Plastic base"),
+ wield_image = "homedecor_plastic_base.png",
+ inventory_image = "homedecor_plastic_base_inv.png",
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'homedecor:plastic_base 6',
+ recipe = { "default:junglegrass",
+ "default:junglegrass",
+ "default:junglegrass"
+ }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'homedecor:plastic_base 3',
+ recipe = { "default:dry_shrub",
+ "default:dry_shrub",
+ "default:dry_shrub"
+ },
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'homedecor:plastic_base 4',
+ recipe = { "default:leaves",
+ "default:leaves",
+ "default:leaves",
+ "default:leaves",
+ "default:leaves",
+ "default:leaves"
+ }
+ })
+
+ minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:plastic_sheeting",
+ recipe = "homedecor:plastic_base",
+ })
+
+ minetest.register_craft({
+ type = 'fuel',
+ recipe = 'homedecor:plastic_base',
+ burntime = 30,
+ })
+
+ minetest.register_craft({
+ type = 'fuel',
+ recipe = 'homedecor:plastic_sheeting',
+ burntime = 30,
+ })
+
+end -- not homedecor
diff --git a/homedecor_modpack/computer/models/computer_laptop.obj b/homedecor_modpack/computer/models/computer_laptop.obj
new file mode 100644
index 0000000..830c52d
--- /dev/null
+++ b/homedecor_modpack/computer/models/computer_laptop.obj
@@ -0,0 +1,124 @@
+# Blender v2.69 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib computer_laptop.mtl
+o Cube.001
+v -0.340277 0.022636 0.335290
+v -0.340277 0.013075 0.362499
+v 0.332320 0.022636 0.335292
+v 0.332320 -0.432772 0.182772
+v 0.332320 0.013075 0.362501
+v -0.340276 -0.499994 -0.312651
+v -0.340276 -0.432772 -0.312651
+v 0.332321 -0.499994 -0.312650
+v -0.340277 -0.499994 0.182771
+v 0.332320 -0.499994 0.182772
+v -0.340277 -0.432772 0.182771
+v -0.340278 -0.432772 0.209979
+v 0.332320 -0.432772 0.209981
+v 0.332320 -0.499994 0.209981
+v -0.340278 -0.499994 0.209979
+v -0.319957 -0.417924 0.194820
+v -0.319957 -0.001053 0.334433
+v 0.312000 -0.417925 0.194821
+v -0.340277 -0.432772 -0.159321
+v 0.332321 -0.432772 -0.312650
+v 0.311999 -0.001054 0.334434
+v 0.332321 -0.432772 -0.159320
+vt 0.682604 0.005242
+vt 0.682603 0.021207
+vt 0.310265 0.005245
+vt 0.044426 0.009206
+vt 0.310266 0.021211
+vt 0.753340 0.119988
+vt 0.810356 0.119988
+vt 0.753340 0.597765
+vt 0.856851 0.982221
+vt 0.745750 0.982220
+vt 0.856851 0.831387
+vt 0.948453 0.009205
+vt 0.878028 0.982221
+vt 0.878028 0.831387
+vt 0.983700 0.982221
+vt 0.862953 0.831387
+vt 0.862953 0.982221
+vt 0.728292 0.490807
+vt 0.728292 0.989869
+vt 0.010900 0.490807
+vt 0.831643 0.129995
+vt 0.982007 0.129995
+vt 0.831643 0.789586
+vt 0.758249 0.754841
+vt 0.758228 0.812823
+vt 0.756060 0.752868
+vt 0.798519 0.812617
+vt 0.756052 0.814797
+vt 0.798577 0.754909
+vt 0.800285 0.814587
+vt 0.707729 0.114386
+vt 0.707729 0.471212
+vt 0.006162 0.114385
+vt 0.345650 0.099088
+vt 0.497058 0.032709
+vt 0.497058 0.099088
+vt 0.990661 0.099453
+vt 0.838275 0.032645
+vt 0.990661 0.032645
+vt 0.007709 0.008663
+vt 0.012705 0.022873
+vt 0.983559 0.009737
+vt 0.943457 0.023414
+vt 0.049421 0.023416
+vt 0.810356 0.597766
+vt 0.745750 0.831387
+vt 0.983700 0.831387
+vt 0.010900 0.989869
+vt 0.982007 0.789586
+vt 0.800332 0.752938
+vt 0.006162 0.471212
+vt 0.007844 0.099088
+vt 0.007844 0.032709
+vt 0.498289 0.099453
+vt 0.498289 0.032646
+vt 0.978563 0.023946
+usemtl Material.001
+s off
+f 1/1 2/2 3/3
+f 4/4 3/3 5/5
+f 6/6 7/7 8/8
+f 9/9 6/10 10/11
+f 1/1 11/12 2/2
+f 12/13 13/14 2/15
+f 13/14 12/13 14/16
+f 9/9 10/11 15/17
+f 16/18 17/19 18/20
+f 7/21 19/22 20/23
+f 21/24 17/25 3/26
+f 16/27 1/28 17/25
+f 18/29 21/24 3/26
+f 16/27 18/29 11/30
+f 19/31 11/32 22/33
+f 22/34 8/35 20/36
+f 6/37 19/38 7/39
+f 10/40 4/4 14/41
+f 11/12 9/42 12/43
+f 2/2 5/5 3/3
+f 13/44 4/4 5/5
+f 7/7 20/45 8/8
+f 6/10 8/46 10/11
+f 11/12 12/43 2/2
+f 13/14 5/47 2/15
+f 12/13 15/17 14/16
+f 10/11 14/16 15/17
+f 17/19 21/48 18/20
+f 19/22 22/49 20/23
+f 17/25 1/28 3/26
+f 11/30 1/28 16/27
+f 4/50 18/29 3/26
+f 18/29 4/50 11/30
+f 11/32 4/51 22/33
+f 4/52 10/53 8/35
+f 22/34 4/52 8/35
+f 9/54 11/55 6/37
+f 11/55 19/38 6/37
+f 4/4 13/44 14/41
+f 9/42 15/56 12/43
diff --git a/homedecor_modpack/computer/models/computer_laptop_closed.obj b/homedecor_modpack/computer/models/computer_laptop_closed.obj
new file mode 100644
index 0000000..9a3051c
--- /dev/null
+++ b/homedecor_modpack/computer/models/computer_laptop_closed.obj
@@ -0,0 +1,138 @@
+# Blender v2.69 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib computer_laptop_closed.mtl
+o Cube.001
+v 0.332320 -0.432772 0.182772
+v -0.340276 -0.499994 -0.312651
+v -0.340276 -0.432772 -0.312651
+v 0.332321 -0.499994 -0.312650
+v -0.340277 -0.499994 0.182771
+v 0.332320 -0.499994 0.182772
+v -0.340277 -0.432772 0.182771
+v -0.340278 -0.432772 0.209979
+v 0.332320 -0.432772 0.209981
+v 0.332320 -0.499994 0.209981
+v -0.340278 -0.499994 0.209979
+v -0.340277 -0.432772 -0.159321
+v 0.332321 -0.432772 -0.312650
+v 0.332321 -0.432772 -0.159320
+v -0.339100 -0.432290 -0.312591
+v -0.339100 -0.401111 -0.312123
+v 0.331143 -0.432288 -0.312592
+v 0.331143 -0.432434 0.206702
+v 0.331143 -0.401109 -0.312123
+v -0.339100 -0.432435 0.206702
+v -0.339101 -0.404537 0.197368
+v 0.331143 -0.404535 0.197367
+v -0.318852 -0.425175 0.187344
+v -0.318852 -0.425042 -0.288007
+v 0.310895 -0.425173 0.187344
+v 0.310894 -0.425040 -0.288006
+vt 0.753340 0.119988
+vt 0.810356 0.119988
+vt 0.753340 0.597765
+vt 0.856851 0.982221
+vt 0.745750 0.982220
+vt 0.856851 0.831387
+vt 0.878028 0.831387
+vt 0.878028 0.982221
+vt 0.862953 0.831387
+vt 0.862953 0.982221
+vt 0.858063 0.829423
+vt 0.885587 0.829423
+vt 0.858063 0.950158
+vt 0.935597 0.852882
+vt 0.935597 0.922715
+vt 0.798294 0.852882
+vt 0.345650 0.099088
+vt 0.497058 0.032709
+vt 0.497058 0.099088
+vt 0.990661 0.099453
+vt 0.838275 0.032645
+vt 0.990661 0.032645
+vt 0.007709 0.008663
+vt 0.044426 0.009206
+vt 0.012705 0.022873
+vt 0.948453 0.009205
+vt 0.983559 0.009737
+vt 0.943457 0.023414
+vt 0.810356 0.597766
+vt 0.745750 0.831387
+vt 0.885587 0.950158
+vt 0.912135 0.962581
+vt 0.785835 0.838012
+vt 0.886333 0.908011
+vt 0.922048 0.840165
+vt 0.798294 0.922715
+vt 0.007844 0.099088
+vt 0.007844 0.032709
+vt 0.498289 0.099453
+vt 0.498289 0.032646
+vt 0.049421 0.023416
+vt 0.978563 0.023946
+vt 0.682604 0.005242
+vt 0.682603 0.021207
+vt 0.310265 0.005245
+vt 0.310266 0.021211
+vt 0.983700 0.982221
+vt 0.922420 0.868181
+vt 0.922420 0.951695
+vt 0.802372 0.868181
+vt 0.758249 0.754841
+vt 0.758228 0.812823
+vt 0.756060 0.752868
+vt 0.798519 0.812617
+vt 0.756052 0.814797
+vt 0.798577 0.754909
+vt 0.800285 0.814587
+vt 0.983700 0.831387
+vt 0.802372 0.951695
+vt 0.800332 0.752938
+vt 0.896350 0.948981
+vt 0.903598 0.848845
+vt 0.888354 0.925385
+vt 0.811076 0.850308
+usemtl Material.001
+s off
+f 2/1 3/2 4/3
+f 5/4 2/5 6/6
+f 9/7 8/8 10/9
+f 5/4 6/6 11/10
+f 3/11 12/12 13/13
+f 12/14 7/15 14/16
+f 14/17 4/18 13/19
+f 2/20 12/21 3/22
+f 6/23 1/24 10/25
+f 7/26 5/27 8/28
+f 3/2 13/29 4/3
+f 2/5 4/30 6/6
+f 8/8 11/10 10/9
+f 6/6 10/9 11/10
+f 12/12 14/31 13/13
+f 8/32 9/33 1/34 7/35
+f 7/15 1/36 14/16
+f 1/37 6/38 4/18
+f 14/17 1/37 4/18
+f 5/39 7/40 2/20
+f 7/40 12/21 2/20
+f 1/24 9/41 10/25
+f 5/27 11/42 8/28
+f 15/43 16/44 17/45
+f 18/24 17/45 19/46
+f 15/43 20/26 16/44
+f 21/8 22/7 16/47
+f 23/48 24/49 25/50
+f 26/51 24/52 17/53
+f 23/54 15/55 24/52
+f 25/56 26/51 17/53
+f 23/54 25/56 20/57
+f 16/44 19/46 17/45
+f 22/41 18/24 19/46
+f 20/26 21/28 16/44
+f 22/7 19/58 16/47
+f 24/49 26/59 25/50
+f 24/52 15/55 17/53
+f 20/57 15/55 23/54
+f 18/60 25/56 17/53
+f 25/56 18/60 20/57
+f 21/61 20/62 18/63 22/64
diff --git a/homedecor_modpack/computer/models/computer_monitor.obj b/homedecor_modpack/computer/models/computer_monitor.obj
new file mode 100644
index 0000000..55a7763
--- /dev/null
+++ b/homedecor_modpack/computer/models/computer_monitor.obj
@@ -0,0 +1,1618 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib computer_monitor.mtl
+o display
+v 0.428237 0.168254 0.091392
+v -0.393909 0.168254 0.091392
+v 0.428237 -0.358283 0.045326
+v -0.393909 -0.358283 0.045326
+vt 0.999920 0.999996
+vt 0.000080 0.999996
+vt 0.000080 0.000080
+vt 0.999920 0.000080
+g display_display_None
+usemtl None
+s off
+f 1/1 2/2 4/3 3/4
+o screen
+v 0.084081 -0.280866 0.084563
+v -0.047689 -0.280866 0.084563
+v -0.047689 -0.470723 0.111650
+v 0.084081 -0.470723 0.111650
+v -0.047689 -0.363032 0.046992
+v -0.047689 -0.470723 0.046992
+v 0.084081 -0.363032 0.046992
+v 0.084081 -0.470723 0.046992
+v 0.455244 0.186934 0.077083
+v 0.455244 0.183841 0.112433
+v -0.420916 0.183841 0.112433
+v -0.420916 0.186934 0.077083
+v 0.455244 -0.374195 0.027990
+v 0.455244 -0.377287 0.063341
+v -0.420916 -0.377287 0.063341
+v -0.420916 -0.374195 0.027990
+v 0.173247 -0.489973 -0.038210
+v 0.173247 -0.489973 0.196851
+v 0.173247 -0.499995 0.196851
+v 0.173247 -0.499995 -0.038210
+v -0.136855 -0.489973 -0.038210
+v -0.136855 -0.499995 -0.038210
+v -0.136855 -0.489973 0.196851
+v -0.136855 -0.499995 0.196851
+v 0.398369 0.145375 0.132580
+v -0.364041 0.145375 0.132580
+v 0.398369 -0.342904 0.089861
+v -0.364041 -0.342904 0.089861
+v 0.428237 0.169638 0.075570
+v -0.393909 0.169638 0.075570
+v 0.428237 -0.356899 0.029504
+v -0.393909 -0.356899 0.029504
+v 0.428237 0.168254 0.091392
+v -0.393909 0.168254 0.091392
+v 0.428237 -0.358283 0.045326
+v -0.393909 -0.358283 0.045326
+vt 0.252552 0.007665
+vt 0.499880 0.007665
+vt 0.499880 0.254993
+vt 0.252552 0.254993
+vt 0.747208 0.007665
+vt 0.747208 0.254993
+vt 0.994536 0.007665
+vt 0.994536 0.254993
+vt 0.005224 0.007665
+vt 0.005224 0.254993
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.005224 0.502321
+vt 0.252552 0.502321
+vt 0.252552 0.749649
+vt 0.005224 0.749649
+vt 0.747208 0.502321
+vt 0.994536 0.502321
+vt 0.994536 0.749649
+vt 0.747208 0.749649
+vt 0.499880 0.502321
+vt 0.499880 0.749649
+vt 0.499880 0.996977
+vt 0.252552 0.996977
+g screen_screen_None
+usemtl None
+s off
+f 5/5 6/6 7/7 8/8
+f 6/6 9/9 10/10 7/7
+f 9/9 11/11 12/12 10/10
+f 11/13 5/5 8/8 12/14
+f 15/15 14/16 29/17 30/18
+f 16/15 15/16 19/17 20/18
+f 13/15 14/16 15/17 16/18
+f 17/15 13/16 33/17 35/18
+f 20/15 19/16 18/17 17/18
+f 14/15 13/16 17/17 18/18
+f 21/19 22/20 23/21 24/22
+f 25/23 21/24 24/25 26/26
+f 27/27 25/23 26/26 28/28
+f 22/20 27/27 28/28 23/21
+f 12/14 8/8 22/20 21/19
+f 10/10 12/12 21/24 25/23
+f 7/7 10/10 25/23 27/27
+f 8/8 7/7 27/27 22/20
+f 28/28 26/29 24/30 23/21
+f 30/15 29/16 31/17 32/18
+f 18/15 19/16 32/17 31/18
+f 14/15 18/16 31/17 29/18
+f 19/15 15/16 30/17 32/18
+f 35/15 33/16 37/17 39/18
+f 16/15 20/16 36/17 34/18
+f 20/15 17/16 35/17 36/18
+f 13/15 16/16 34/17 33/18
+f 34/15 36/16 40/17 38/18
+f 36/15 35/16 39/17 40/18
+f 33/15 34/16 38/17 37/18
+o keys
+v -0.390747 -0.479858 -0.268432
+v -0.414573 -0.479858 -0.270517
+v -0.414573 -0.484356 -0.270517
+v -0.390747 -0.484356 -0.268432
+v -0.410352 -0.479858 -0.318762
+v -0.410352 -0.484356 -0.318762
+v -0.386526 -0.479858 -0.316677
+v -0.386526 -0.484356 -0.316677
+v -0.363510 -0.479858 -0.266049
+v -0.387336 -0.479858 -0.268134
+v -0.387336 -0.484356 -0.268134
+v -0.363510 -0.484356 -0.266049
+v -0.383115 -0.479858 -0.316379
+v -0.383115 -0.484356 -0.316379
+v -0.359289 -0.479858 -0.314294
+v -0.359289 -0.484356 -0.314294
+v -0.262382 -0.472028 -0.345724
+v -0.286300 -0.472028 -0.345724
+v -0.286300 -0.495945 -0.345724
+v -0.262382 -0.495945 -0.345724
+v -0.286300 -0.472028 -0.399370
+v -0.286300 -0.495945 -0.399370
+v -0.262382 -0.472028 -0.399370
+v -0.262382 -0.495945 -0.399370
+v -0.262382 -0.472028 -0.289166
+v -0.286300 -0.472028 -0.289166
+v -0.286300 -0.495945 -0.289166
+v -0.262382 -0.495945 -0.289166
+v -0.286300 -0.472028 -0.342813
+v -0.286300 -0.495945 -0.342813
+v -0.262382 -0.472028 -0.342813
+v -0.262382 -0.495945 -0.342813
+v -0.262382 -0.472028 -0.261470
+v -0.286300 -0.472028 -0.261470
+v -0.286300 -0.495945 -0.261470
+v -0.262382 -0.495945 -0.261470
+v -0.286300 -0.472028 -0.285387
+v -0.286300 -0.495945 -0.285387
+v -0.262382 -0.472028 -0.285387
+v -0.262382 -0.495945 -0.285387
+v -0.233840 -0.472028 -0.375175
+v -0.257757 -0.472028 -0.375175
+v -0.257757 -0.495945 -0.375175
+v -0.233840 -0.495945 -0.375175
+v -0.257757 -0.472028 -0.399092
+v -0.257757 -0.495945 -0.399092
+v -0.233840 -0.472028 -0.399092
+v -0.233840 -0.495945 -0.399092
+v -0.176566 -0.472028 -0.375175
+v -0.229456 -0.472028 -0.375175
+v -0.229456 -0.495945 -0.375175
+v -0.176566 -0.495945 -0.375175
+v -0.229456 -0.472028 -0.399092
+v -0.229456 -0.495945 -0.399092
+v -0.176566 -0.472028 -0.399092
+v -0.176566 -0.495945 -0.399092
+v -0.175988 -0.472028 -0.345994
+v -0.199906 -0.472028 -0.345994
+v -0.199906 -0.495945 -0.345994
+v -0.175988 -0.495945 -0.345994
+v -0.199906 -0.472028 -0.369911
+v -0.199906 -0.495945 -0.369911
+v -0.175988 -0.472028 -0.369911
+v -0.175988 -0.495945 -0.369911
+v -0.205539 -0.472028 -0.345994
+v -0.229456 -0.472028 -0.345994
+v -0.229456 -0.495945 -0.345994
+v -0.205539 -0.495945 -0.345994
+v -0.229456 -0.472028 -0.369911
+v -0.229456 -0.495945 -0.369911
+v -0.205539 -0.472028 -0.369911
+v -0.205539 -0.495945 -0.369911
+v -0.233840 -0.472028 -0.345994
+v -0.257757 -0.472028 -0.345994
+v -0.257757 -0.495945 -0.345994
+v -0.233840 -0.495945 -0.345994
+v -0.257757 -0.472028 -0.369911
+v -0.257757 -0.495945 -0.369911
+v -0.233840 -0.472028 -0.369911
+v -0.233840 -0.495945 -0.369911
+v -0.233840 -0.472028 -0.318631
+v -0.257757 -0.472028 -0.318631
+v -0.257757 -0.495945 -0.318631
+v -0.233840 -0.495945 -0.318631
+v -0.257757 -0.472028 -0.342548
+v -0.257757 -0.495945 -0.342548
+v -0.233840 -0.472028 -0.342548
+v -0.233840 -0.495945 -0.342548
+v -0.205539 -0.472028 -0.318631
+v -0.229456 -0.472028 -0.318631
+v -0.229456 -0.495945 -0.318631
+v -0.205539 -0.495945 -0.318631
+v -0.229456 -0.472028 -0.342548
+v -0.229456 -0.495945 -0.342548
+v -0.205539 -0.472028 -0.342548
+v -0.205539 -0.495945 -0.342548
+v -0.175988 -0.472028 -0.318631
+v -0.199906 -0.472028 -0.318631
+v -0.199906 -0.495945 -0.318631
+v -0.175988 -0.495945 -0.318631
+v -0.199906 -0.472028 -0.342548
+v -0.199906 -0.495945 -0.342548
+v -0.175988 -0.472028 -0.342548
+v -0.175988 -0.495945 -0.342548
+v -0.175988 -0.472028 -0.261470
+v -0.199906 -0.472028 -0.261470
+v -0.199906 -0.495945 -0.261470
+v -0.175988 -0.495945 -0.261470
+v -0.199906 -0.472028 -0.285387
+v -0.199906 -0.495945 -0.285387
+v -0.175988 -0.472028 -0.285387
+v -0.175988 -0.495945 -0.285387
+v -0.205539 -0.472028 -0.261470
+v -0.229456 -0.472028 -0.261470
+v -0.229456 -0.495945 -0.261470
+v -0.205539 -0.495945 -0.261470
+v -0.229456 -0.472028 -0.285387
+v -0.229456 -0.495945 -0.285387
+v -0.205539 -0.472028 -0.285387
+v -0.205539 -0.495945 -0.285387
+v -0.233840 -0.472028 -0.261470
+v -0.257757 -0.472028 -0.261470
+v -0.257757 -0.495945 -0.261470
+v -0.233840 -0.495945 -0.261470
+v -0.257757 -0.472028 -0.285387
+v -0.257757 -0.495945 -0.285387
+v -0.233840 -0.472028 -0.285387
+v -0.233840 -0.495945 -0.285387
+v -0.233840 -0.472028 -0.288834
+v -0.257757 -0.472028 -0.288834
+v -0.257757 -0.495945 -0.288834
+v -0.233840 -0.495945 -0.288834
+v -0.257757 -0.472028 -0.312751
+v -0.257757 -0.495945 -0.312751
+v -0.233840 -0.472028 -0.312751
+v -0.233840 -0.495945 -0.312751
+v -0.205539 -0.472028 -0.288834
+v -0.229456 -0.472028 -0.288834
+v -0.229456 -0.495945 -0.288834
+v -0.205539 -0.495945 -0.288834
+v -0.229456 -0.472028 -0.312751
+v -0.229456 -0.495945 -0.312751
+v -0.205539 -0.472028 -0.312751
+v -0.205539 -0.495945 -0.312751
+v -0.175988 -0.472028 -0.288834
+v -0.199906 -0.472028 -0.288834
+v -0.199906 -0.495945 -0.288834
+v -0.175988 -0.495945 -0.288834
+v -0.199906 -0.472028 -0.312751
+v -0.199906 -0.495945 -0.312751
+v -0.175988 -0.472028 -0.312751
+v -0.175988 -0.495945 -0.312751
+v -0.099654 -0.472028 -0.347769
+v -0.123570 -0.472028 -0.347769
+v -0.123570 -0.495945 -0.347769
+v -0.099654 -0.495945 -0.347769
+v -0.123570 -0.472028 -0.371686
+v -0.123570 -0.495945 -0.371686
+v -0.099654 -0.472028 -0.371686
+v -0.099654 -0.495945 -0.371686
+v -0.127954 -0.472028 -0.375133
+v -0.151871 -0.472028 -0.375133
+v -0.151871 -0.495945 -0.375133
+v -0.127954 -0.495945 -0.375133
+v -0.151871 -0.472028 -0.399050
+v -0.151871 -0.495945 -0.399050
+v -0.127954 -0.472028 -0.399050
+v -0.127954 -0.495945 -0.399050
+v -0.099654 -0.472028 -0.375133
+v -0.123570 -0.472028 -0.375133
+v -0.123570 -0.495945 -0.375133
+v -0.099654 -0.495945 -0.375133
+v -0.123570 -0.472028 -0.399050
+v -0.123570 -0.495945 -0.399050
+v -0.099654 -0.472028 -0.399050
+v -0.099654 -0.495945 -0.399050
+v -0.070103 -0.472028 -0.375133
+v -0.094019 -0.472028 -0.375133
+v -0.094019 -0.495945 -0.375133
+v -0.070103 -0.495945 -0.375133
+v -0.094019 -0.472028 -0.399050
+v -0.094019 -0.495945 -0.399050
+v -0.070103 -0.472028 -0.399050
+v -0.070103 -0.495945 -0.399050
+v -0.070103 -0.472028 -0.288834
+v -0.094019 -0.472028 -0.288834
+v -0.094019 -0.495945 -0.288834
+v -0.070103 -0.495945 -0.288834
+v -0.094019 -0.472028 -0.312751
+v -0.094019 -0.495945 -0.312751
+v -0.070103 -0.472028 -0.312751
+v -0.070103 -0.495945 -0.312751
+v -0.099654 -0.472028 -0.288834
+v -0.123570 -0.472028 -0.288834
+v -0.123570 -0.495945 -0.288834
+v -0.099654 -0.495945 -0.288834
+v -0.123570 -0.472028 -0.312751
+v -0.123570 -0.495945 -0.312751
+v -0.099654 -0.472028 -0.312751
+v -0.099654 -0.495945 -0.312751
+v -0.127954 -0.472028 -0.288834
+v -0.151871 -0.472028 -0.288834
+v -0.151871 -0.495945 -0.288834
+v -0.127954 -0.495945 -0.288834
+v -0.151871 -0.472028 -0.312751
+v -0.151871 -0.495945 -0.312751
+v -0.127954 -0.472028 -0.312751
+v -0.127954 -0.495945 -0.312751
+v -0.127954 -0.472028 -0.261470
+v -0.151871 -0.472028 -0.261470
+v -0.151871 -0.495945 -0.261470
+v -0.127954 -0.495945 -0.261470
+v -0.151871 -0.472028 -0.285387
+v -0.151871 -0.495945 -0.285387
+v -0.127954 -0.472028 -0.285387
+v -0.127954 -0.495945 -0.285387
+v -0.099654 -0.472028 -0.261470
+v -0.123570 -0.472028 -0.261470
+v -0.123570 -0.495945 -0.261470
+v -0.099654 -0.495945 -0.261470
+v -0.123570 -0.472028 -0.285387
+v -0.123570 -0.495945 -0.285387
+v -0.099654 -0.472028 -0.285387
+v -0.099654 -0.495945 -0.285387
+v -0.070103 -0.472028 -0.261470
+v -0.094019 -0.472028 -0.261470
+v -0.094019 -0.495945 -0.261470
+v -0.070103 -0.495945 -0.261470
+v -0.094019 -0.472028 -0.285387
+v -0.094019 -0.495945 -0.285387
+v -0.070103 -0.472028 -0.285387
+v -0.070103 -0.495945 -0.285387
+v -0.070103 -0.472028 -0.222573
+v -0.094019 -0.472028 -0.222573
+v -0.094019 -0.495945 -0.222573
+v -0.070103 -0.495945 -0.222573
+v -0.094019 -0.472028 -0.246491
+v -0.094019 -0.495945 -0.246491
+v -0.070103 -0.472028 -0.246491
+v -0.070103 -0.495945 -0.246491
+v -0.099654 -0.472028 -0.222573
+v -0.123570 -0.472028 -0.222573
+v -0.123570 -0.495945 -0.222573
+v -0.099654 -0.495945 -0.222573
+v -0.123570 -0.472028 -0.246491
+v -0.123570 -0.495945 -0.246491
+v -0.099654 -0.472028 -0.246491
+v -0.099654 -0.495945 -0.246491
+v -0.127954 -0.472028 -0.222573
+v -0.151871 -0.472028 -0.222573
+v -0.151871 -0.495945 -0.222573
+v -0.127954 -0.495945 -0.222573
+v -0.151871 -0.472028 -0.246491
+v -0.151871 -0.495945 -0.246491
+v -0.127954 -0.472028 -0.246491
+v -0.127954 -0.495945 -0.246491
+v 0.064702 -0.471565 -0.222862
+v 0.040785 -0.471565 -0.222862
+v 0.040785 -0.495482 -0.222862
+v 0.064702 -0.495482 -0.222862
+v 0.040785 -0.471565 -0.246779
+v 0.040785 -0.495482 -0.246779
+v 0.064702 -0.471565 -0.246779
+v 0.064702 -0.495482 -0.246779
+v -0.021316 -0.472028 -0.222573
+v -0.045233 -0.472028 -0.222573
+v -0.045233 -0.495945 -0.222573
+v -0.021316 -0.495945 -0.222573
+v -0.045233 -0.472028 -0.246491
+v -0.045233 -0.495945 -0.246491
+v -0.021316 -0.472028 -0.246491
+v -0.021316 -0.495945 -0.246491
+v 0.006985 -0.472028 -0.222573
+v -0.016932 -0.472028 -0.222573
+v -0.016932 -0.495945 -0.222573
+v 0.006985 -0.495945 -0.222573
+v -0.016932 -0.472028 -0.246491
+v -0.016932 -0.495945 -0.246491
+v 0.006985 -0.472028 -0.246491
+v 0.006985 -0.495945 -0.246491
+v 0.036536 -0.472028 -0.222573
+v 0.012619 -0.472028 -0.222573
+v 0.012619 -0.495945 -0.222573
+v 0.036536 -0.495945 -0.222573
+v 0.012619 -0.472028 -0.246491
+v 0.012619 -0.495945 -0.246491
+v 0.036536 -0.472028 -0.246491
+v 0.036536 -0.495945 -0.246491
+v 0.171678 -0.472028 -0.222573
+v 0.147761 -0.472028 -0.222573
+v 0.147761 -0.495945 -0.222573
+v 0.171678 -0.495945 -0.222573
+v 0.147761 -0.472028 -0.246491
+v 0.147761 -0.495945 -0.246491
+v 0.171678 -0.472028 -0.246491
+v 0.171678 -0.495945 -0.246491
+v 0.142127 -0.472028 -0.222573
+v 0.118210 -0.472028 -0.222573
+v 0.118210 -0.495945 -0.222573
+v 0.142127 -0.495945 -0.222573
+v 0.118210 -0.472028 -0.246491
+v 0.118210 -0.495945 -0.246491
+v 0.142127 -0.472028 -0.246491
+v 0.142127 -0.495945 -0.246491
+v 0.113827 -0.472028 -0.222573
+v 0.089910 -0.472028 -0.222573
+v 0.089910 -0.495945 -0.222573
+v 0.113827 -0.495945 -0.222573
+v 0.089910 -0.472028 -0.246491
+v 0.089910 -0.495945 -0.246491
+v 0.113827 -0.472028 -0.246491
+v 0.113827 -0.495945 -0.246491
+v 0.199845 -0.471565 -0.222862
+v 0.175927 -0.471565 -0.222862
+v 0.175927 -0.495482 -0.222862
+v 0.199845 -0.495482 -0.222862
+v 0.175927 -0.471565 -0.246779
+v 0.175927 -0.495482 -0.246779
+v 0.199845 -0.471565 -0.246779
+v 0.199845 -0.495482 -0.246779
+v 0.331555 -0.471565 -0.222862
+v 0.307637 -0.471565 -0.222862
+v 0.307637 -0.495482 -0.222862
+v 0.331555 -0.495482 -0.222862
+v 0.307637 -0.471565 -0.246779
+v 0.307637 -0.495482 -0.246779
+v 0.331555 -0.471565 -0.246779
+v 0.331555 -0.495482 -0.246779
+v 0.245536 -0.472028 -0.222573
+v 0.221620 -0.472028 -0.222573
+v 0.221620 -0.495945 -0.222573
+v 0.245536 -0.495945 -0.222573
+v 0.221620 -0.472028 -0.246491
+v 0.221620 -0.495945 -0.246491
+v 0.245536 -0.472028 -0.246491
+v 0.245536 -0.495945 -0.246491
+v 0.273837 -0.472028 -0.222573
+v 0.249920 -0.472028 -0.222573
+v 0.249920 -0.495945 -0.222573
+v 0.273837 -0.495945 -0.222573
+v 0.249920 -0.472028 -0.246491
+v 0.249920 -0.495945 -0.246491
+v 0.273837 -0.472028 -0.246491
+v 0.273837 -0.495945 -0.246491
+v 0.303388 -0.472028 -0.222573
+v 0.279471 -0.472028 -0.222573
+v 0.279471 -0.495945 -0.222573
+v 0.303388 -0.495945 -0.222573
+v 0.279471 -0.472028 -0.246491
+v 0.279471 -0.495945 -0.246491
+v 0.303388 -0.472028 -0.246491
+v 0.303388 -0.495945 -0.246491
+v 0.399277 -0.471565 -0.222499
+v 0.375359 -0.471565 -0.222499
+v 0.375359 -0.495482 -0.222499
+v 0.399277 -0.495482 -0.222499
+v 0.375359 -0.471565 -0.246417
+v 0.375359 -0.495482 -0.246417
+v 0.399277 -0.471565 -0.246417
+v 0.399277 -0.495482 -0.246417
+v -0.007081 -0.471059 -0.374434
+v -0.045281 -0.471059 -0.374434
+v -0.045281 -0.495161 -0.374434
+v -0.007081 -0.495161 -0.374434
+v -0.045281 -0.471059 -0.398536
+v -0.045281 -0.495161 -0.398536
+v -0.007081 -0.471059 -0.398536
+v -0.007081 -0.495161 -0.398536
+v 0.031444 -0.471059 -0.374434
+v -0.000208 -0.471059 -0.374434
+v -0.000208 -0.495161 -0.374434
+v 0.031444 -0.495161 -0.374434
+v -0.000208 -0.471059 -0.398536
+v -0.000208 -0.495161 -0.398536
+v 0.031444 -0.471059 -0.398536
+v 0.031444 -0.495161 -0.398536
+v 0.068025 -0.471059 -0.374434
+v 0.036373 -0.471059 -0.374434
+v 0.036373 -0.495161 -0.374434
+v 0.068025 -0.495161 -0.374434
+v 0.036373 -0.471059 -0.398536
+v 0.036373 -0.495161 -0.398536
+v 0.068025 -0.471059 -0.398536
+v 0.068025 -0.495161 -0.398536
+v 0.104539 -0.471059 -0.374434
+v 0.072887 -0.471059 -0.374434
+v 0.072887 -0.495161 -0.374434
+v 0.104539 -0.495161 -0.374434
+v 0.072887 -0.471059 -0.398536
+v 0.072887 -0.495161 -0.398536
+v 0.104539 -0.471059 -0.398536
+v 0.104539 -0.495161 -0.398536
+v 0.293333 -0.471059 -0.374434
+v 0.110331 -0.471059 -0.374434
+v 0.110331 -0.495161 -0.374434
+v 0.293333 -0.495161 -0.374434
+v 0.110331 -0.471059 -0.398536
+v 0.110331 -0.495161 -0.398536
+v 0.293333 -0.471059 -0.398536
+v 0.293333 -0.495161 -0.398536
+v 0.326581 -0.471059 -0.374434
+v 0.297744 -0.471059 -0.374434
+v 0.297744 -0.495161 -0.374434
+v 0.326581 -0.495161 -0.374434
+v 0.297744 -0.471059 -0.398536
+v 0.297744 -0.495161 -0.398536
+v 0.326581 -0.471059 -0.398536
+v 0.326581 -0.495161 -0.398536
+v 0.311892 -0.472028 -0.261036
+v 0.287975 -0.472028 -0.261036
+v 0.287975 -0.495945 -0.261036
+v 0.311892 -0.495945 -0.261036
+v 0.287975 -0.472028 -0.284953
+v 0.287975 -0.495945 -0.284953
+v 0.311892 -0.472028 -0.284953
+v 0.311892 -0.495945 -0.284953
+v 0.282341 -0.472028 -0.261036
+v 0.258424 -0.472028 -0.261036
+v 0.258424 -0.495945 -0.261036
+v 0.282341 -0.495945 -0.261036
+v 0.258424 -0.472028 -0.284953
+v 0.258424 -0.495945 -0.284953
+v 0.282341 -0.472028 -0.284953
+v 0.282341 -0.495945 -0.284953
+v 0.254040 -0.472028 -0.261036
+v 0.230123 -0.472028 -0.261036
+v 0.230123 -0.495945 -0.261036
+v 0.254040 -0.495945 -0.261036
+v 0.230123 -0.472028 -0.284953
+v 0.230123 -0.495945 -0.284953
+v 0.254040 -0.472028 -0.284953
+v 0.254040 -0.495945 -0.284953
+v 0.222860 -0.472028 -0.261036
+v 0.198944 -0.472028 -0.261036
+v 0.198944 -0.495945 -0.261036
+v 0.222860 -0.495945 -0.261036
+v 0.198944 -0.472028 -0.284953
+v 0.198944 -0.495945 -0.284953
+v 0.222860 -0.472028 -0.284953
+v 0.222860 -0.495945 -0.284953
+v 0.194771 -0.472028 -0.261036
+v 0.170853 -0.472028 -0.261036
+v 0.170853 -0.495945 -0.261036
+v 0.194771 -0.495945 -0.261036
+v 0.170853 -0.472028 -0.284953
+v 0.170853 -0.495945 -0.284953
+v 0.194771 -0.472028 -0.284953
+v 0.194771 -0.495945 -0.284953
+v 0.165247 -0.472028 -0.261036
+v 0.141330 -0.472028 -0.261036
+v 0.141330 -0.495945 -0.261036
+v 0.165247 -0.495945 -0.261036
+v 0.141330 -0.472028 -0.284953
+v 0.141330 -0.495945 -0.284953
+v 0.165247 -0.472028 -0.284953
+v 0.165247 -0.495945 -0.284953
+v 0.135655 -0.472028 -0.261036
+v 0.111737 -0.472028 -0.261036
+v 0.111737 -0.495945 -0.261036
+v 0.135655 -0.495945 -0.261036
+v 0.111737 -0.472028 -0.284953
+v 0.111737 -0.495945 -0.284953
+v 0.135655 -0.472028 -0.284953
+v 0.135655 -0.495945 -0.284953
+v 0.103818 -0.472028 -0.261036
+v 0.079901 -0.472028 -0.261036
+v 0.079901 -0.495945 -0.261036
+v 0.103818 -0.495945 -0.261036
+v 0.079901 -0.472028 -0.284953
+v 0.079901 -0.495945 -0.284953
+v 0.103818 -0.472028 -0.284953
+v 0.103818 -0.495945 -0.284953
+v 0.074652 -0.472028 -0.261036
+v 0.050736 -0.472028 -0.261036
+v 0.050736 -0.495945 -0.261036
+v 0.074652 -0.495945 -0.261036
+v 0.050736 -0.472028 -0.284953
+v 0.050736 -0.495945 -0.284953
+v 0.074652 -0.472028 -0.284953
+v 0.074652 -0.495945 -0.284953
+v 0.044727 -0.472028 -0.261036
+v 0.020810 -0.472028 -0.261036
+v 0.020810 -0.495945 -0.261036
+v 0.044727 -0.495945 -0.261036
+v 0.020810 -0.472028 -0.284953
+v 0.020810 -0.495945 -0.284953
+v 0.044727 -0.472028 -0.284953
+v 0.044727 -0.495945 -0.284953
+v 0.014076 -0.472028 -0.260816
+v -0.046476 -0.472028 -0.260816
+v -0.046476 -0.495945 -0.260816
+v 0.014076 -0.495945 -0.260816
+v -0.046476 -0.472028 -0.284733
+v -0.046476 -0.495945 -0.284733
+v 0.014076 -0.472028 -0.284733
+v 0.014076 -0.495945 -0.284733
+v -0.018777 -0.472028 -0.289712
+v -0.046317 -0.472028 -0.289712
+v -0.046317 -0.495945 -0.289712
+v -0.018777 -0.495945 -0.289712
+v -0.046317 -0.472028 -0.312654
+v -0.046317 -0.472028 -0.342087
+v -0.046317 -0.495945 -0.342087
+v -0.046317 -0.495945 -0.312654
+v -0.018777 -0.472028 -0.342087
+v -0.018777 -0.495945 -0.342087
+v -0.018777 -0.495945 -0.312654
+v -0.018777 -0.472028 -0.312654
+v -0.012723 -0.472028 -0.312654
+v -0.012723 -0.495945 -0.312654
+v -0.012723 -0.495945 -0.289712
+v -0.012723 -0.472028 -0.289712
+v 0.020153 -0.472028 -0.346050
+v -0.046476 -0.472028 -0.346050
+v -0.046476 -0.495945 -0.346050
+v 0.020153 -0.495945 -0.346050
+v -0.046476 -0.472028 -0.369967
+v -0.046476 -0.495945 -0.369967
+v 0.020153 -0.472028 -0.369967
+v 0.020153 -0.495945 -0.369967
+v 0.008757 -0.472028 -0.318170
+v -0.015161 -0.472028 -0.318170
+v -0.015161 -0.495945 -0.318170
+v 0.008757 -0.495945 -0.318170
+v -0.015161 -0.472028 -0.342087
+v -0.015161 -0.495945 -0.342087
+v 0.008757 -0.472028 -0.342087
+v 0.008757 -0.495945 -0.342087
+v 0.013686 -0.472028 -0.289285
+v -0.010232 -0.472028 -0.289285
+v -0.010232 -0.495945 -0.289285
+v 0.013686 -0.495945 -0.289285
+v -0.010232 -0.472028 -0.313203
+v -0.010232 -0.495945 -0.313203
+v 0.013686 -0.472028 -0.313203
+v 0.013686 -0.495945 -0.313203
+v 0.041797 -0.472028 -0.289285
+v 0.017880 -0.472028 -0.289285
+v 0.017880 -0.495945 -0.289285
+v 0.041797 -0.495945 -0.289285
+v 0.017880 -0.472028 -0.313203
+v 0.017880 -0.495945 -0.313203
+v 0.041797 -0.472028 -0.313203
+v 0.041797 -0.495945 -0.313203
+v 0.036867 -0.472028 -0.318170
+v 0.012950 -0.472028 -0.318170
+v 0.012950 -0.495945 -0.318170
+v 0.036867 -0.495945 -0.318170
+v 0.012950 -0.472028 -0.342087
+v 0.012950 -0.495945 -0.342087
+v 0.036867 -0.472028 -0.342087
+v 0.036867 -0.495945 -0.342087
+v 0.048974 -0.472028 -0.346050
+v 0.025058 -0.472028 -0.346050
+v 0.025058 -0.495945 -0.346050
+v 0.048974 -0.495945 -0.346050
+v 0.025058 -0.472028 -0.369967
+v 0.025058 -0.495945 -0.369967
+v 0.048974 -0.472028 -0.369967
+v 0.048974 -0.495945 -0.369967
+v 0.077016 -0.472028 -0.346050
+v 0.053098 -0.472028 -0.346050
+v 0.053098 -0.495945 -0.346050
+v 0.077016 -0.495945 -0.346050
+v 0.053098 -0.472028 -0.369967
+v 0.053098 -0.495945 -0.369967
+v 0.077016 -0.472028 -0.369967
+v 0.077016 -0.495945 -0.369967
+v 0.064909 -0.472028 -0.318170
+v 0.040991 -0.472028 -0.318170
+v 0.040991 -0.495945 -0.318170
+v 0.064909 -0.495945 -0.318170
+v 0.040991 -0.472028 -0.342087
+v 0.040991 -0.495945 -0.342087
+v 0.064909 -0.472028 -0.342087
+v 0.064909 -0.495945 -0.342087
+v 0.069838 -0.472028 -0.289285
+v 0.045920 -0.472028 -0.289285
+v 0.045920 -0.495945 -0.289285
+v 0.069838 -0.495945 -0.289285
+v 0.045920 -0.472028 -0.313203
+v 0.045920 -0.495945 -0.313203
+v 0.069838 -0.472028 -0.313203
+v 0.069838 -0.495945 -0.313203
+v 0.098238 -0.472028 -0.289285
+v 0.074321 -0.472028 -0.289285
+v 0.074321 -0.495945 -0.289285
+v 0.098238 -0.495945 -0.289285
+v 0.074321 -0.472028 -0.313203
+v 0.074321 -0.495945 -0.313203
+v 0.098238 -0.472028 -0.313203
+v 0.098238 -0.495945 -0.313203
+v 0.093308 -0.472028 -0.318170
+v 0.069391 -0.472028 -0.318170
+v 0.069391 -0.495945 -0.318170
+v 0.093308 -0.495945 -0.318170
+v 0.069391 -0.472028 -0.342087
+v 0.069391 -0.495945 -0.342087
+v 0.093308 -0.472028 -0.342087
+v 0.093308 -0.495945 -0.342087
+v 0.105417 -0.472028 -0.346050
+v 0.081499 -0.472028 -0.346050
+v 0.081499 -0.495945 -0.346050
+v 0.105417 -0.495945 -0.346050
+v 0.081499 -0.472028 -0.369967
+v 0.081499 -0.495945 -0.369967
+v 0.105417 -0.472028 -0.369967
+v 0.105417 -0.495945 -0.369967
+v 0.133480 -0.472028 -0.346050
+v 0.109564 -0.472028 -0.346050
+v 0.109564 -0.495945 -0.346050
+v 0.133480 -0.495945 -0.346050
+v 0.109564 -0.472028 -0.369967
+v 0.109564 -0.495945 -0.369967
+v 0.133480 -0.472028 -0.369967
+v 0.133480 -0.495945 -0.369967
+v 0.121373 -0.472028 -0.318170
+v 0.097456 -0.472028 -0.318170
+v 0.097456 -0.495945 -0.318170
+v 0.121373 -0.495945 -0.318170
+v 0.097456 -0.472028 -0.342087
+v 0.097456 -0.495945 -0.342087
+v 0.121373 -0.472028 -0.342087
+v 0.121373 -0.495945 -0.342087
+v 0.126303 -0.472028 -0.289285
+v 0.102386 -0.472028 -0.289285
+v 0.102386 -0.495945 -0.289285
+v 0.126303 -0.495945 -0.289285
+v 0.102386 -0.472028 -0.313203
+v 0.102386 -0.495945 -0.313203
+v 0.126303 -0.472028 -0.313203
+v 0.126303 -0.495945 -0.313203
+v 0.155499 -0.472028 -0.289285
+v 0.131581 -0.472028 -0.289285
+v 0.131581 -0.495945 -0.289285
+v 0.155499 -0.495945 -0.289285
+v 0.131581 -0.472028 -0.313203
+v 0.131581 -0.495945 -0.313203
+v 0.155499 -0.472028 -0.313203
+v 0.155499 -0.495945 -0.313203
+v 0.150569 -0.472028 -0.318170
+v 0.126651 -0.472028 -0.318170
+v 0.126651 -0.495945 -0.318170
+v 0.150569 -0.495945 -0.318170
+v 0.126651 -0.472028 -0.342087
+v 0.126651 -0.495945 -0.342087
+v 0.150569 -0.472028 -0.342087
+v 0.150569 -0.495945 -0.342087
+v 0.162676 -0.472028 -0.346050
+v 0.138758 -0.472028 -0.346050
+v 0.138758 -0.495945 -0.346050
+v 0.162676 -0.495945 -0.346050
+v 0.138758 -0.472028 -0.369967
+v 0.138758 -0.495945 -0.369967
+v 0.162676 -0.472028 -0.369967
+v 0.162676 -0.495945 -0.369967
+v 0.191727 -0.472028 -0.346050
+v 0.167811 -0.472028 -0.346050
+v 0.167811 -0.495945 -0.346050
+v 0.191727 -0.495945 -0.346050
+v 0.167811 -0.472028 -0.369967
+v 0.167811 -0.495945 -0.369967
+v 0.191727 -0.472028 -0.369967
+v 0.191727 -0.495945 -0.369967
+v 0.179620 -0.472028 -0.318170
+v 0.155702 -0.472028 -0.318170
+v 0.155702 -0.495945 -0.318170
+v 0.179620 -0.495945 -0.318170
+v 0.155702 -0.472028 -0.342087
+v 0.155702 -0.495945 -0.342087
+v 0.179620 -0.472028 -0.342087
+v 0.179620 -0.495945 -0.342087
+v 0.184550 -0.472028 -0.289285
+v 0.160632 -0.472028 -0.289285
+v 0.160632 -0.495945 -0.289285
+v 0.184550 -0.495945 -0.289285
+v 0.160632 -0.472028 -0.313203
+v 0.160632 -0.495945 -0.313203
+v 0.184550 -0.472028 -0.313203
+v 0.184550 -0.495945 -0.313203
+v 0.213560 -0.472028 -0.289285
+v 0.189643 -0.472028 -0.289285
+v 0.189643 -0.495945 -0.289285
+v 0.213560 -0.495945 -0.289285
+v 0.189643 -0.472028 -0.313203
+v 0.189643 -0.495945 -0.313203
+v 0.213560 -0.472028 -0.313203
+v 0.213560 -0.495945 -0.313203
+v 0.208631 -0.472028 -0.318170
+v 0.184714 -0.472028 -0.318170
+v 0.184714 -0.495945 -0.318170
+v 0.208631 -0.495945 -0.318170
+v 0.184714 -0.472028 -0.342087
+v 0.184714 -0.495945 -0.342087
+v 0.208631 -0.472028 -0.342087
+v 0.208631 -0.495945 -0.342087
+v 0.220739 -0.472028 -0.346050
+v 0.196821 -0.472028 -0.346050
+v 0.196821 -0.495945 -0.346050
+v 0.220739 -0.495945 -0.346050
+v 0.196821 -0.472028 -0.369967
+v 0.196821 -0.495945 -0.369967
+v 0.220739 -0.472028 -0.369967
+v 0.220739 -0.495945 -0.369967
+v 0.252314 -0.472028 -0.346050
+v 0.228398 -0.472028 -0.346050
+v 0.228398 -0.495945 -0.346050
+v 0.252314 -0.495945 -0.346050
+v 0.228398 -0.472028 -0.369967
+v 0.228398 -0.495945 -0.369967
+v 0.252314 -0.472028 -0.369967
+v 0.252314 -0.495945 -0.369967
+v 0.240207 -0.472028 -0.318170
+v 0.216290 -0.472028 -0.318170
+v 0.216290 -0.495945 -0.318170
+v 0.240207 -0.495945 -0.318170
+v 0.216290 -0.472028 -0.342087
+v 0.216290 -0.495945 -0.342087
+v 0.240207 -0.472028 -0.342087
+v 0.240207 -0.495945 -0.342087
+v 0.245137 -0.472028 -0.289285
+v 0.221220 -0.472028 -0.289285
+v 0.221220 -0.495945 -0.289285
+v 0.245137 -0.495945 -0.289285
+v 0.221220 -0.472028 -0.313203
+v 0.221220 -0.495945 -0.313203
+v 0.245137 -0.472028 -0.313203
+v 0.245137 -0.495945 -0.313203
+v 0.273972 -0.472028 -0.289285
+v 0.250054 -0.472028 -0.289285
+v 0.250054 -0.495945 -0.289285
+v 0.273972 -0.495945 -0.289285
+v 0.250054 -0.472028 -0.313203
+v 0.250054 -0.495945 -0.313203
+v 0.273972 -0.472028 -0.313203
+v 0.273972 -0.495945 -0.313203
+v 0.269043 -0.472028 -0.318170
+v 0.245125 -0.472028 -0.318170
+v 0.245125 -0.495945 -0.318170
+v 0.269043 -0.495945 -0.318170
+v 0.245125 -0.472028 -0.342087
+v 0.245125 -0.495945 -0.342087
+v 0.269043 -0.472028 -0.342087
+v 0.269043 -0.495945 -0.342087
+v 0.281150 -0.472028 -0.346050
+v 0.257232 -0.472028 -0.346050
+v 0.257232 -0.495945 -0.346050
+v 0.281150 -0.495945 -0.346050
+v 0.257232 -0.472028 -0.369967
+v 0.257232 -0.495945 -0.369967
+v 0.281150 -0.472028 -0.369967
+v 0.281150 -0.495945 -0.369967
+v 0.310666 -0.472028 -0.346050
+v 0.286749 -0.472028 -0.346050
+v 0.286749 -0.495945 -0.346050
+v 0.310666 -0.495945 -0.346050
+v 0.286749 -0.472028 -0.369967
+v 0.286749 -0.495945 -0.369967
+v 0.310666 -0.472028 -0.369967
+v 0.310666 -0.495945 -0.369967
+v 0.298559 -0.472028 -0.318170
+v 0.274642 -0.472028 -0.318170
+v 0.274642 -0.495945 -0.318170
+v 0.298559 -0.495945 -0.318170
+v 0.274642 -0.472028 -0.342087
+v 0.274642 -0.495945 -0.342087
+v 0.298559 -0.472028 -0.342087
+v 0.298559 -0.495945 -0.342087
+v 0.303488 -0.472028 -0.289285
+v 0.279570 -0.472028 -0.289285
+v 0.279570 -0.495945 -0.289285
+v 0.303488 -0.495945 -0.289285
+v 0.279570 -0.472028 -0.313203
+v 0.279570 -0.495945 -0.313203
+v 0.303488 -0.472028 -0.313203
+v 0.303488 -0.495945 -0.313203
+v 0.332126 -0.472028 -0.289285
+v 0.308209 -0.472028 -0.289285
+v 0.308209 -0.495945 -0.289285
+v 0.332126 -0.495945 -0.289285
+v 0.308209 -0.472028 -0.313203
+v 0.308209 -0.495945 -0.313203
+v 0.332126 -0.472028 -0.313203
+v 0.332126 -0.495945 -0.313203
+v 0.327196 -0.472028 -0.318170
+v 0.303279 -0.472028 -0.318170
+v 0.303279 -0.495945 -0.318170
+v 0.327196 -0.495945 -0.318170
+v 0.303279 -0.472028 -0.342087
+v 0.303279 -0.495945 -0.342087
+v 0.327196 -0.472028 -0.342087
+v 0.327196 -0.495945 -0.342087
+v 0.339303 -0.472028 -0.346050
+v 0.315386 -0.472028 -0.346050
+v 0.315386 -0.495945 -0.346050
+v 0.339303 -0.495945 -0.346050
+v 0.315386 -0.472028 -0.369967
+v 0.315386 -0.495945 -0.369967
+v 0.339303 -0.472028 -0.369967
+v 0.339303 -0.495945 -0.369967
+v 0.367000 -0.472028 -0.346050
+v 0.343083 -0.472028 -0.346050
+v 0.343083 -0.495945 -0.346050
+v 0.367000 -0.495945 -0.346050
+v 0.343083 -0.472028 -0.369967
+v 0.343083 -0.495945 -0.369967
+v 0.367000 -0.472028 -0.369967
+v 0.367000 -0.495945 -0.369967
+v 0.354893 -0.472028 -0.318170
+v 0.330976 -0.472028 -0.318170
+v 0.330976 -0.495945 -0.318170
+v 0.354893 -0.495945 -0.318170
+v 0.330976 -0.472028 -0.342087
+v 0.330976 -0.495945 -0.342087
+v 0.354893 -0.472028 -0.342087
+v 0.354893 -0.495945 -0.342087
+v 0.359823 -0.472028 -0.289285
+v 0.335906 -0.472028 -0.289285
+v 0.335906 -0.495945 -0.289285
+v 0.359823 -0.495945 -0.289285
+v 0.335906 -0.472028 -0.313203
+v 0.335906 -0.495945 -0.313203
+v 0.359823 -0.472028 -0.313203
+v 0.359823 -0.495945 -0.313203
+v 0.340059 -0.471565 -0.261324
+v 0.316141 -0.471565 -0.261324
+v 0.316141 -0.495482 -0.261324
+v 0.340059 -0.495482 -0.261324
+v 0.316141 -0.471565 -0.285241
+v 0.316141 -0.495482 -0.285241
+v 0.340059 -0.471565 -0.285241
+v 0.340059 -0.495482 -0.285241
+v 0.370925 -0.471565 -0.261324
+v 0.347008 -0.471565 -0.261324
+v 0.347008 -0.495482 -0.261324
+v 0.370925 -0.495482 -0.261324
+v 0.347008 -0.471565 -0.285241
+v 0.347008 -0.495482 -0.285241
+v 0.370925 -0.471565 -0.285241
+v 0.370925 -0.495482 -0.285241
+v 0.359556 -0.471059 -0.374434
+v 0.330719 -0.471059 -0.374434
+v 0.330719 -0.495161 -0.374434
+v 0.359556 -0.495161 -0.374434
+v 0.330719 -0.471059 -0.398536
+v 0.330719 -0.495161 -0.398536
+v 0.359556 -0.471059 -0.398536
+v 0.359556 -0.495161 -0.398536
+v 0.399277 -0.471565 -0.261324
+v 0.375359 -0.471565 -0.261324
+v 0.375359 -0.495482 -0.261324
+v 0.399277 -0.495482 -0.261324
+v 0.375359 -0.471565 -0.285241
+v 0.375359 -0.495482 -0.285241
+v 0.399277 -0.471565 -0.285241
+v 0.399277 -0.495482 -0.285241
+v 0.399509 -0.471059 -0.289180
+v 0.363369 -0.471059 -0.289180
+v 0.363369 -0.495161 -0.289180
+v 0.399509 -0.495161 -0.289180
+v 0.363369 -0.471059 -0.313283
+v 0.363369 -0.495161 -0.313283
+v 0.399509 -0.471059 -0.313283
+v 0.399509 -0.495161 -0.313283
+v 0.399509 -0.471059 -0.317715
+v 0.358301 -0.471059 -0.317715
+v 0.358301 -0.495161 -0.317715
+v 0.399509 -0.495161 -0.317715
+v 0.358301 -0.471059 -0.341818
+v 0.358301 -0.495161 -0.341818
+v 0.399509 -0.471059 -0.341818
+v 0.399509 -0.495161 -0.341818
+v 0.399509 -0.471059 -0.346050
+v 0.370671 -0.471059 -0.346050
+v 0.370671 -0.495161 -0.346050
+v 0.399509 -0.495161 -0.346050
+v 0.370671 -0.471059 -0.370152
+v 0.370671 -0.495161 -0.370152
+v 0.399509 -0.471059 -0.370152
+v 0.399509 -0.495161 -0.370152
+v 0.399509 -0.471059 -0.374132
+v 0.363369 -0.471059 -0.374132
+v 0.363369 -0.495161 -0.374132
+v 0.399509 -0.495161 -0.374132
+v 0.363369 -0.471059 -0.398234
+v 0.363369 -0.495161 -0.398234
+v 0.399509 -0.471059 -0.398234
+v 0.399509 -0.495161 -0.398234
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g keys_keys_None
+usemtl None
+s off
+f 41/31 42/32 43/33 44/34
+f 42/31 45/32 46/33 43/34
+f 45/31 47/32 48/33 46/34
+f 47/31 41/32 44/33 48/34
+f 42/33 41/34 47/31 45/32
+f 49/31 50/32 51/33 52/34
+f 50/31 53/32 54/33 51/34
+f 53/31 55/32 56/33 54/34
+f 55/31 49/32 52/33 56/34
+f 55/31 53/32 50/33 49/34
+f 57/31 58/32 59/33 60/34
+f 58/31 61/32 62/33 59/34
+f 61/31 63/32 64/33 62/34
+f 63/31 57/32 60/33 64/34
+f 63/31 61/32 58/33 57/34
+f 65/31 66/32 67/33 68/34
+f 66/31 69/32 70/33 67/34
+f 69/31 71/32 72/33 70/34
+f 71/31 65/32 68/33 72/34
+f 71/31 69/32 66/33 65/34
+f 73/31 74/32 75/33 76/34
+f 74/31 77/32 78/33 75/34
+f 77/31 79/32 80/33 78/34
+f 79/31 73/32 76/33 80/34
+f 79/31 77/32 74/33 73/34
+f 81/31 82/32 83/33 84/34
+f 82/31 85/32 86/33 83/34
+f 85/31 87/32 88/33 86/34
+f 87/31 81/32 84/33 88/34
+f 87/31 85/32 82/33 81/34
+f 89/31 90/32 91/33 92/34
+f 90/31 93/32 94/33 91/34
+f 93/31 95/32 96/33 94/34
+f 95/31 89/32 92/33 96/34
+f 95/31 93/32 90/33 89/34
+f 97/31 98/32 99/33 100/34
+f 98/31 101/32 102/33 99/34
+f 101/31 103/32 104/33 102/34
+f 103/31 97/32 100/33 104/34
+f 103/31 101/32 98/33 97/34
+f 105/31 106/32 107/33 108/34
+f 106/31 109/32 110/33 107/34
+f 109/31 111/32 112/33 110/34
+f 111/31 105/32 108/33 112/34
+f 111/31 109/32 106/33 105/34
+f 113/31 114/32 115/33 116/34
+f 114/31 117/32 118/33 115/34
+f 117/31 119/32 120/33 118/34
+f 119/31 113/32 116/33 120/34
+f 119/31 117/32 114/33 113/34
+f 121/31 122/32 123/33 124/34
+f 122/31 125/32 126/33 123/34
+f 125/31 127/32 128/33 126/34
+f 127/31 121/32 124/33 128/34
+f 127/31 125/32 122/33 121/34
+f 129/31 130/32 131/33 132/34
+f 130/31 133/32 134/33 131/34
+f 133/31 135/32 136/33 134/34
+f 135/31 129/32 132/33 136/34
+f 135/31 133/32 130/33 129/34
+f 137/31 138/32 139/33 140/34
+f 138/31 141/32 142/33 139/34
+f 141/31 143/32 144/33 142/34
+f 143/31 137/32 140/33 144/34
+f 143/31 141/32 138/33 137/34
+f 145/31 146/32 147/33 148/34
+f 146/31 149/32 150/33 147/34
+f 149/31 151/32 152/33 150/34
+f 151/31 145/32 148/33 152/34
+f 151/31 149/32 146/33 145/34
+f 153/31 154/32 155/33 156/34
+f 154/31 157/32 158/33 155/34
+f 157/31 159/32 160/33 158/34
+f 159/31 153/32 156/33 160/34
+f 159/31 157/32 154/33 153/34
+f 161/31 162/32 163/33 164/34
+f 162/31 165/32 166/33 163/34
+f 165/31 167/32 168/33 166/34
+f 167/31 161/32 164/33 168/34
+f 167/31 165/32 162/33 161/34
+f 169/31 170/32 171/33 172/34
+f 170/31 173/32 174/33 171/34
+f 173/31 175/32 176/33 174/34
+f 175/31 169/32 172/33 176/34
+f 175/31 173/32 170/33 169/34
+f 177/31 178/32 179/33 180/34
+f 178/31 181/32 182/33 179/34
+f 181/31 183/32 184/33 182/34
+f 183/31 177/32 180/33 184/34
+f 183/31 181/32 178/33 177/34
+f 185/31 186/32 187/33 188/34
+f 186/31 189/32 190/33 187/34
+f 189/31 191/32 192/33 190/34
+f 191/31 185/32 188/33 192/34
+f 191/31 189/32 186/33 185/34
+f 193/31 194/32 195/33 196/34
+f 194/31 197/32 198/33 195/34
+f 197/31 199/32 200/33 198/34
+f 199/31 193/32 196/33 200/34
+f 199/31 197/32 194/33 193/34
+f 201/31 202/32 203/33 204/34
+f 202/31 205/32 206/33 203/34
+f 205/31 207/32 208/33 206/34
+f 207/31 201/32 204/33 208/34
+f 207/31 205/32 202/33 201/34
+f 209/31 210/32 211/33 212/34
+f 210/31 213/32 214/33 211/34
+f 213/31 215/32 216/33 214/34
+f 215/31 209/32 212/33 216/34
+f 215/31 213/32 210/33 209/34
+f 217/31 218/32 219/33 220/34
+f 218/31 221/32 222/33 219/34
+f 221/31 223/32 224/33 222/34
+f 223/31 217/32 220/33 224/34
+f 223/31 221/32 218/33 217/34
+f 225/31 226/32 227/33 228/34
+f 226/31 229/32 230/33 227/34
+f 229/31 231/32 232/33 230/34
+f 231/31 225/32 228/33 232/34
+f 231/31 229/32 226/33 225/34
+f 233/31 234/32 235/33 236/34
+f 234/31 237/32 238/33 235/34
+f 237/31 239/32 240/33 238/34
+f 239/31 233/32 236/33 240/34
+f 239/31 237/32 234/33 233/34
+f 241/31 242/32 243/33 244/34
+f 242/31 245/32 246/33 243/34
+f 245/31 247/32 248/33 246/34
+f 247/31 241/32 244/33 248/34
+f 247/31 245/32 242/33 241/34
+f 249/31 250/32 251/33 252/34
+f 250/31 253/32 254/33 251/34
+f 253/31 255/32 256/33 254/34
+f 255/31 249/32 252/33 256/34
+f 255/31 253/32 250/33 249/34
+f 257/31 258/32 259/33 260/34
+f 258/31 261/32 262/33 259/34
+f 261/31 263/32 264/33 262/34
+f 263/31 257/32 260/33 264/34
+f 263/31 261/32 258/33 257/34
+f 265/31 266/32 267/33 268/34
+f 266/31 269/32 270/33 267/34
+f 269/31 271/32 272/33 270/34
+f 271/31 265/32 268/33 272/34
+f 271/31 269/32 266/33 265/34
+f 273/31 274/32 275/33 276/34
+f 274/31 277/32 278/33 275/34
+f 277/31 279/32 280/33 278/34
+f 279/31 273/32 276/33 280/34
+f 279/31 277/32 274/33 273/34
+f 281/31 282/32 283/33 284/34
+f 282/31 285/32 286/33 283/34
+f 285/31 287/32 288/33 286/34
+f 287/31 281/32 284/33 288/34
+f 287/31 285/32 282/33 281/34
+f 289/31 290/32 291/33 292/34
+f 290/31 293/32 294/33 291/34
+f 293/31 295/32 296/33 294/34
+f 295/31 289/32 292/33 296/34
+f 295/31 293/32 290/33 289/34
+f 297/31 298/32 299/33 300/34
+f 298/31 301/32 302/33 299/34
+f 301/31 303/32 304/33 302/34
+f 303/31 297/32 300/33 304/34
+f 303/31 301/32 298/33 297/34
+f 305/31 306/32 307/33 308/34
+f 306/31 309/32 310/33 307/34
+f 309/31 311/32 312/33 310/34
+f 311/31 305/32 308/33 312/34
+f 311/31 309/32 306/33 305/34
+f 313/31 314/32 315/33 316/34
+f 314/31 317/32 318/33 315/34
+f 317/31 319/32 320/33 318/34
+f 319/31 313/32 316/33 320/34
+f 319/31 317/32 314/33 313/34
+f 321/31 322/32 323/33 324/34
+f 322/31 325/32 326/33 323/34
+f 325/31 327/32 328/33 326/34
+f 327/31 321/32 324/33 328/34
+f 327/31 325/32 322/33 321/34
+f 329/31 330/32 331/33 332/34
+f 330/31 333/32 334/33 331/34
+f 333/31 335/32 336/33 334/34
+f 335/31 329/32 332/33 336/34
+f 335/31 333/32 330/33 329/34
+f 337/31 338/32 339/33 340/34
+f 338/31 341/32 342/33 339/34
+f 341/31 343/32 344/33 342/34
+f 343/31 337/32 340/33 344/34
+f 343/31 341/32 338/33 337/34
+f 345/31 346/32 347/33 348/34
+f 346/31 349/32 350/33 347/34
+f 349/31 351/32 352/33 350/34
+f 351/31 345/32 348/33 352/34
+f 351/31 349/32 346/33 345/34
+f 353/31 354/32 355/33 356/34
+f 354/31 357/32 358/33 355/34
+f 357/31 359/32 360/33 358/34
+f 359/31 353/32 356/33 360/34
+f 359/31 357/32 354/33 353/34
+f 361/31 362/32 363/33 364/34
+f 362/31 365/32 366/33 363/34
+f 365/31 367/32 368/33 366/34
+f 367/31 361/32 364/33 368/34
+f 367/31 365/32 362/33 361/34
+f 369/31 370/32 371/33 372/34
+f 370/31 373/32 374/33 371/34
+f 373/31 375/32 376/33 374/34
+f 375/31 369/32 372/33 376/34
+f 375/31 373/32 370/33 369/34
+f 377/31 378/32 379/33 380/34
+f 378/31 381/32 382/33 379/34
+f 381/31 383/32 384/33 382/34
+f 383/31 377/32 380/33 384/34
+f 383/31 381/32 378/33 377/34
+f 385/31 386/32 387/33 388/34
+f 386/31 389/32 390/33 387/34
+f 389/31 391/32 392/33 390/34
+f 391/31 385/32 388/33 392/34
+f 391/31 389/32 386/33 385/34
+f 393/31 394/32 395/33 396/34
+f 394/31 397/32 398/33 395/34
+f 397/31 399/32 400/33 398/34
+f 399/31 393/32 396/33 400/34
+f 399/31 397/32 394/33 393/34
+f 401/31 402/32 403/33 404/34
+f 402/31 405/32 406/33 403/34
+f 405/31 407/32 408/33 406/34
+f 407/31 401/32 404/33 408/34
+f 407/31 405/32 402/33 401/34
+f 409/31 410/32 411/33 412/34
+f 410/31 413/32 414/33 411/34
+f 413/31 415/32 416/33 414/34
+f 415/31 409/32 412/33 416/34
+f 415/31 413/32 410/33 409/34
+f 417/31 418/32 419/33 420/34
+f 418/31 421/32 422/33 419/34
+f 421/31 423/32 424/33 422/34
+f 423/31 417/32 420/33 424/34
+f 423/31 421/32 418/33 417/34
+f 425/31 426/32 427/33 428/34
+f 426/31 429/32 430/33 427/34
+f 429/31 431/32 432/33 430/34
+f 431/31 425/32 428/33 432/34
+f 431/31 429/32 426/33 425/34
+f 433/31 434/32 435/33 436/34
+f 434/31 437/32 438/33 435/34
+f 437/31 439/32 440/33 438/34
+f 439/31 433/32 436/33 440/34
+f 439/31 437/32 434/33 433/34
+f 441/31 442/32 443/33 444/34
+f 442/31 445/32 446/33 443/34
+f 445/31 447/32 448/33 446/34
+f 447/31 441/32 444/33 448/34
+f 447/31 445/32 442/33 441/34
+f 449/31 450/32 451/33 452/34
+f 450/31 453/32 454/33 451/34
+f 453/31 455/32 456/33 454/34
+f 455/31 449/32 452/33 456/34
+f 455/31 453/32 450/33 449/34
+f 457/31 458/32 459/33 460/34
+f 458/31 461/32 462/33 459/34
+f 461/31 463/32 464/33 462/34
+f 463/31 457/32 460/33 464/34
+f 463/31 461/32 458/33 457/34
+f 465/31 466/32 467/33 468/34
+f 466/31 469/32 470/33 467/34
+f 469/31 471/32 472/33 470/34
+f 471/31 465/32 468/33 472/34
+f 471/31 469/32 466/33 465/34
+f 473/31 474/32 475/33 476/34
+f 474/31 477/32 478/33 475/34
+f 477/31 479/32 480/33 478/34
+f 479/31 473/32 476/33 480/34
+f 479/31 477/32 474/33 473/34
+f 481/31 482/32 483/33 484/34
+f 482/31 485/32 486/33 483/34
+f 485/31 487/32 488/33 486/34
+f 487/31 481/32 484/33 488/34
+f 487/31 485/32 482/33 481/34
+f 489/31 490/32 491/33 492/34
+f 490/31 493/32 494/33 491/34
+f 493/31 495/32 496/33 494/34
+f 495/31 489/32 492/33 496/34
+f 495/31 493/32 490/33 489/34
+f 497/31 498/32 499/33 500/34
+f 498/31 501/32 502/33 499/34
+f 501/31 503/32 504/33 502/34
+f 503/31 497/32 500/33 504/34
+f 503/31 501/32 498/33 497/34
+f 505/31 506/32 507/33 508/34
+f 506/31 509/32 510/33 507/34
+f 509/31 511/32 512/33 510/34
+f 511/31 505/32 508/33 512/34
+f 511/31 509/32 506/33 505/34
+f 513/31 514/32 515/33 516/34
+f 514/31 517/32 518/33 515/34
+f 517/31 519/32 520/33 518/34
+f 519/31 513/32 516/33 520/34
+f 519/31 517/32 514/33 513/34
+f 521/31 522/32 523/33 524/34
+f 522/31 525/32 526/33 523/34
+f 525/31 527/32 528/33 526/34
+f 527/31 521/32 524/33 528/34
+f 527/31 525/32 522/33 521/34
+f 529/31 530/32 531/33 532/34
+f 530/31 533/32 534/33 531/34
+f 533/31 535/32 536/33 534/34
+f 535/31 529/32 532/33 536/34
+f 535/31 533/32 530/33 529/34
+f 537/31 538/32 539/33 540/34
+f 541/31 542/32 543/33 544/34
+f 542/31 545/32 546/33 543/34
+f 547/31 548/32 549/33 550/34
+f 548/31 541/32 538/33 537/34
+f 538/31 541/32 544/33 539/34
+f 545/31 548/32 547/33 546/34
+f 545/31 542/32 541/33 548/34
+f 540/31 547/32 550/33 551/34
+f 548/31 537/32 552/33 549/34
+f 549/31 552/32 551/33 550/34
+f 537/31 540/32 551/33 552/34
+f 553/31 554/32 555/33 556/34
+f 554/31 557/32 558/33 555/34
+f 557/31 559/32 560/33 558/34
+f 559/31 553/32 556/33 560/34
+f 559/31 557/32 554/33 553/34
+f 561/31 562/32 563/33 564/34
+f 562/31 565/32 566/33 563/34
+f 565/31 567/32 568/33 566/34
+f 567/31 561/32 564/33 568/34
+f 567/31 565/32 562/33 561/34
+f 569/31 570/32 571/33 572/34
+f 570/31 573/32 574/33 571/34
+f 573/31 575/32 576/33 574/34
+f 575/31 569/32 572/33 576/34
+f 575/31 573/32 570/33 569/34
+f 577/31 578/32 579/33 580/34
+f 578/31 581/32 582/33 579/34
+f 581/31 583/32 584/33 582/34
+f 583/31 577/32 580/33 584/34
+f 583/31 581/32 578/33 577/34
+f 585/31 586/32 587/33 588/34
+f 586/31 589/32 590/33 587/34
+f 589/31 591/32 592/33 590/34
+f 591/31 585/32 588/33 592/34
+f 591/31 589/32 586/33 585/34
+f 593/31 594/32 595/33 596/34
+f 594/31 597/32 598/33 595/34
+f 597/31 599/32 600/33 598/34
+f 599/31 593/32 596/33 600/34
+f 599/31 597/32 594/33 593/34
+f 601/31 602/32 603/33 604/34
+f 602/31 605/32 606/33 603/34
+f 605/31 607/32 608/33 606/34
+f 607/31 601/32 604/33 608/34
+f 607/31 605/32 602/33 601/34
+f 609/31 610/32 611/33 612/34
+f 610/31 613/32 614/33 611/34
+f 613/31 615/32 616/33 614/34
+f 615/31 609/32 612/33 616/34
+f 615/31 613/32 610/33 609/34
+f 617/31 618/32 619/33 620/34
+f 618/31 621/32 622/33 619/34
+f 621/31 623/32 624/33 622/34
+f 623/31 617/32 620/33 624/34
+f 623/31 621/32 618/33 617/34
+f 625/31 626/32 627/33 628/34
+f 626/31 629/32 630/33 627/34
+f 629/31 631/32 632/33 630/34
+f 631/31 625/32 628/33 632/34
+f 631/31 629/32 626/33 625/34
+f 633/31 634/32 635/33 636/34
+f 634/31 637/32 638/33 635/34
+f 637/31 639/32 640/33 638/34
+f 639/31 633/32 636/33 640/34
+f 639/31 637/32 634/33 633/34
+f 641/31 642/32 643/33 644/34
+f 642/31 645/32 646/33 643/34
+f 645/31 647/32 648/33 646/34
+f 647/31 641/32 644/33 648/34
+f 647/31 645/32 642/33 641/34
+f 649/31 650/32 651/33 652/34
+f 650/31 653/32 654/33 651/34
+f 653/31 655/32 656/33 654/34
+f 655/31 649/32 652/33 656/34
+f 655/31 653/32 650/33 649/34
+f 657/31 658/32 659/33 660/34
+f 658/31 661/32 662/33 659/34
+f 661/31 663/32 664/33 662/34
+f 663/31 657/32 660/33 664/34
+f 663/31 661/32 658/33 657/34
+f 665/31 666/32 667/33 668/34
+f 666/31 669/32 670/33 667/34
+f 669/31 671/32 672/33 670/34
+f 671/31 665/32 668/33 672/34
+f 671/31 669/32 666/33 665/34
+f 673/31 674/32 675/33 676/34
+f 674/31 677/32 678/33 675/34
+f 677/31 679/32 680/33 678/34
+f 679/31 673/32 676/33 680/34
+f 679/31 677/32 674/33 673/34
+f 681/31 682/32 683/33 684/34
+f 682/31 685/32 686/33 683/34
+f 685/31 687/32 688/33 686/34
+f 687/31 681/32 684/33 688/34
+f 687/31 685/32 682/33 681/34
+f 689/31 690/32 691/33 692/34
+f 690/31 693/32 694/33 691/34
+f 693/31 695/32 696/33 694/34
+f 695/31 689/32 692/33 696/34
+f 695/31 693/32 690/33 689/34
+f 697/31 698/32 699/33 700/34
+f 698/31 701/32 702/33 699/34
+f 701/31 703/32 704/33 702/34
+f 703/31 697/32 700/33 704/34
+f 703/31 701/32 698/33 697/34
+f 705/31 706/32 707/33 708/34
+f 706/31 709/32 710/33 707/34
+f 709/31 711/32 712/33 710/34
+f 711/31 705/32 708/33 712/34
+f 711/31 709/32 706/33 705/34
+f 713/31 714/32 715/33 716/34
+f 714/31 717/32 718/33 715/34
+f 717/31 719/32 720/33 718/34
+f 719/31 713/32 716/33 720/34
+f 719/31 717/32 714/33 713/34
+f 721/31 722/32 723/33 724/34
+f 722/31 725/32 726/33 723/34
+f 725/31 727/32 728/33 726/34
+f 727/31 721/32 724/33 728/34
+f 727/31 725/32 722/33 721/34
+f 729/31 730/32 731/33 732/34
+f 730/31 733/32 734/33 731/34
+f 733/31 735/32 736/33 734/34
+f 735/31 729/32 732/33 736/34
+f 735/31 733/32 730/33 729/34
+f 737/31 738/32 739/33 740/34
+f 738/31 741/32 742/33 739/34
+f 741/31 743/32 744/33 742/34
+f 743/31 737/32 740/33 744/34
+f 743/31 741/32 738/33 737/34
+f 745/31 746/32 747/33 748/34
+f 746/31 749/32 750/33 747/34
+f 749/31 751/32 752/33 750/34
+f 751/31 745/32 748/33 752/34
+f 751/31 749/32 746/33 745/34
+f 753/31 754/32 755/33 756/34
+f 754/31 757/32 758/33 755/34
+f 757/31 759/32 760/33 758/34
+f 759/31 753/32 756/33 760/34
+f 759/31 757/32 754/33 753/34
+f 761/31 762/32 763/33 764/34
+f 762/31 765/32 766/33 763/34
+f 765/31 767/32 768/33 766/34
+f 767/31 761/32 764/33 768/34
+f 767/31 765/32 762/33 761/34
+f 769/31 770/32 771/33 772/34
+f 770/31 773/32 774/33 771/34
+f 773/31 775/32 776/33 774/34
+f 775/31 769/32 772/33 776/34
+f 775/31 773/32 770/33 769/34
+f 777/31 778/32 779/33 780/34
+f 778/31 781/32 782/33 779/34
+f 781/31 783/32 784/33 782/34
+f 783/31 777/32 780/33 784/34
+f 783/31 781/32 778/33 777/34
+f 785/31 786/32 787/33 788/34
+f 786/31 789/32 790/33 787/34
+f 789/31 791/32 792/33 790/34
+f 791/31 785/32 788/33 792/34
+f 791/31 789/32 786/33 785/34
+f 793/31 794/32 795/33 796/34
+f 794/31 797/32 798/33 795/34
+f 797/31 799/32 800/33 798/34
+f 799/31 793/32 796/33 800/34
+f 799/31 797/32 794/33 793/34
+f 801/31 802/32 803/33 804/34
+f 802/31 805/32 806/33 803/34
+f 805/31 807/32 808/33 806/34
+f 807/31 801/32 804/33 808/34
+f 807/31 805/32 802/33 801/34
+f 809/31 810/32 811/33 812/34
+f 810/31 813/32 814/33 811/34
+f 813/31 815/32 816/33 814/34
+f 815/31 809/32 812/33 816/34
+f 815/31 813/32 810/33 809/34
+f 817/31 818/32 819/33 820/34
+f 818/31 821/32 822/33 819/34
+f 821/31 823/32 824/33 822/34
+f 823/31 817/32 820/33 824/34
+f 823/31 821/32 818/33 817/34
+f 825/31 826/32 827/33 828/34
+f 826/31 829/32 830/33 827/34
+f 829/31 831/32 832/33 830/34
+f 831/31 825/32 828/33 832/34
+f 831/31 829/32 826/33 825/34
+f 833/31 834/32 835/33 836/34
+f 834/31 837/32 838/33 835/34
+f 837/31 839/32 840/33 838/34
+f 839/31 833/32 836/33 840/34
+f 839/31 837/32 834/33 833/34
+f 841/31 842/32 843/33 844/34
+f 842/31 845/32 846/33 843/34
+f 845/31 847/32 848/33 846/34
+f 847/31 841/32 844/33 848/34
+f 847/31 845/32 842/33 841/34
+f 849/31 850/32 851/33 852/34
+f 850/31 853/32 854/33 851/34
+f 853/31 855/32 856/33 854/34
+f 855/31 849/32 852/33 856/34
+f 855/31 853/32 850/33 849/34
+f 857/31 858/32 859/33 860/34
+f 858/31 861/32 862/33 859/34
+f 861/31 863/32 864/33 862/34
+f 863/31 857/32 860/33 864/34
+f 863/31 861/32 858/33 857/34
+f 865/31 866/32 867/33 868/34
+f 866/31 869/32 870/33 867/34
+f 869/31 871/32 872/33 870/34
+f 871/31 865/32 868/33 872/34
+f 871/31 869/32 866/33 865/34
+f 873/31 874/32 875/33 876/34
+f 874/31 877/32 878/33 875/34
+f 877/31 879/32 880/33 878/34
+f 879/31 873/32 876/33 880/34
+f 879/31 877/32 874/33 873/34
+f 881/31 882/32 883/33 884/34
+f 882/31 885/32 886/33 883/34
+f 885/31 887/32 888/33 886/34
+f 887/31 881/32 884/33 888/34
+f 887/31 885/32 882/33 881/34
+f 889/31 890/32 891/33 892/34
+f 890/31 893/32 894/33 891/34
+f 893/31 895/32 896/33 894/34
+f 895/31 889/32 892/33 896/34
+f 895/31 893/32 890/33 889/34
+f 897/31 898/32 899/33 900/34
+f 898/31 901/32 902/33 899/34
+f 901/31 903/32 904/33 902/34
+f 903/31 897/32 900/33 904/34
+f 903/31 901/32 898/33 897/34
+f 905/31 906/32 907/33 908/34
+f 906/31 909/32 910/33 907/34
+f 909/31 911/32 912/33 910/34
+f 911/31 905/32 908/33 912/34
+f 911/31 909/32 906/33 905/34
+f 913/31 914/32 915/33 916/34
+f 914/31 917/32 918/33 915/34
+f 917/31 919/32 920/33 918/34
+f 919/31 913/32 916/33 920/34
+f 919/31 917/32 914/33 913/34
+f 921/31 922/32 923/33 924/34
+f 922/31 925/32 926/33 923/34
+f 925/31 927/32 928/33 926/34
+f 927/31 921/32 924/33 928/34
+f 927/31 925/32 922/33 921/34
+l 544 547
+o keyboard
+v -0.411510 -0.499998 -0.385414
+v -0.347259 -0.499998 -0.379792
+v -0.360885 -0.499998 -0.260399
+v -0.418823 -0.499998 -0.265468
+v -0.411638 -0.479821 -0.383948
+v -0.418823 -0.481779 -0.265468
+v -0.360885 -0.481779 -0.260399
+v -0.347387 -0.479821 -0.378327
+v -0.413073 -0.485086 -0.387747
+v -0.345315 -0.485086 -0.381819
+v -0.359464 -0.485086 -0.258429
+v -0.420565 -0.485086 -0.263775
+v -0.412532 -0.492542 -0.386975
+v -0.419957 -0.492542 -0.264466
+v -0.345980 -0.492542 -0.381152
+v -0.359943 -0.492542 -0.259215
+v -0.307392 -0.474888 -0.210007
+v -0.307392 -0.478903 -0.416481
+v -0.307392 -0.499996 -0.416481
+v -0.307392 -0.499996 -0.210007
+v 0.419545 -0.499996 -0.210007
+v 0.419545 -0.499996 -0.416481
+v 0.419545 -0.478903 -0.416481
+v 0.419545 -0.474888 -0.210007
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g keyboard_keyboard_None
+usemtl None
+s off
+f 929/35 930/36 931/37 932/38
+f 933/35 934/36 935/37 936/38
+f 937/35 933/36 936/37 938/38
+f 938/35 936/36 935/37 939/38
+f 939/35 935/36 934/37 940/38
+f 941/35 929/36 932/37 942/38
+f 929/35 941/36 943/37 930/38
+f 941/35 937/36 938/37 943/38
+f 930/35 943/36 944/37 931/38
+f 943/35 938/36 939/37 944/38
+f 931/35 944/36 942/37 932/38
+f 944/35 939/36 940/37 942/38
+f 933/35 937/36 940/37 934/38
+f 937/35 941/36 942/37 940/38
+f 945/35 946/36 947/37 948/38
+f 949/35 948/36 947/37 950/38
+f 951/35 946/36 945/37 952/38
+f 946/35 951/36 950/37 947/38
+f 952/35 945/36 948/37 949/38
+f 951/35 952/36 949/37 950/38
diff --git a/homedecor_modpack/computer/models/computer_tower.obj b/homedecor_modpack/computer/models/computer_tower.obj
new file mode 100644
index 0000000..90666ea
--- /dev/null
+++ b/homedecor_modpack/computer/models/computer_tower.obj
@@ -0,0 +1,33 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib computer_tower.mtl
+o Cube.001
+v -0.182508 -0.499998 0.450000
+v -0.182508 -0.499998 -0.349946
+v 0.182508 -0.499998 -0.349946
+v 0.182508 -0.499998 0.450000
+v -0.182508 0.335734 0.450000
+v 0.182508 0.335734 0.450000
+v 0.182508 0.335734 -0.349946
+v -0.182508 0.335734 -0.349947
+vt 0.999994 0.750017
+vt 0.500006 0.749983
+vt 0.500002 0.499996
+vt 0.999997 0.500009
+vt 0.499989 0.999941
+vt 0.999986 0.999931
+vt 0.500005 0.000003
+vt 0.000007 0.500002
+vt -0.000003 0.000003
+vt 0.250005 0.999991
+vt 0.250005 0.499995
+vt 0.999993 0.000002
+vt 0.000017 0.999997
+usemtl Material.001
+s off
+f 1/1 2/2 3/3 4/4
+f 5/5 6/2 7/1 8/6
+f 1/7 5/3 8/8 2/9
+f 2/3 8/5 7/10 3/11
+f 3/12 7/4 6/3 4/7
+f 5/13 1/8 4/11 6/10
diff --git a/homedecor_modpack/computer/models/tetris_arcade.obj b/homedecor_modpack/computer/models/tetris_arcade.obj
new file mode 100644
index 0000000..12a41a8
--- /dev/null
+++ b/homedecor_modpack/computer/models/tetris_arcade.obj
@@ -0,0 +1,143 @@
+# Blender v2.66 (sub 1) OBJ File: ''
+# www.blender.org
+mtllib tetris_arcade.mtl
+o Cube.001
+v -0.450000 1.299500 -0.450000
+v -0.450000 1.299500 -0.500000
+v 0.450000 1.299500 -0.500000
+v 0.450000 1.299500 -0.450000
+v -0.450000 1.499500 -0.450000
+v -0.450000 1.499500 -0.500000
+v 0.450000 1.499500 -0.500000
+v 0.450000 1.499500 -0.450000
+v 0.450000 -0.495000 -0.500000
+v 0.450000 0.305000 -0.500001
+v -0.450000 -0.495000 -0.499999
+v -0.450000 0.305000 -0.500000
+v 0.450000 -0.498500 0.500000
+v 0.450000 -0.498500 -0.500000
+v 0.500000 -0.498500 -0.500000
+v 0.500000 -0.498500 0.500000
+v 0.450000 1.498500 0.500000
+v 0.450000 1.498500 -0.500000
+v 0.500000 1.498500 -0.500000
+v 0.500000 1.498500 0.500000
+v 0.499998 -0.499998 -0.499998
+v 0.499998 -0.499998 0.499998
+v -0.499998 -0.499998 0.499998
+v -0.499998 -0.499998 -0.499998
+v 0.499998 1.499994 -0.499998
+v -0.499998 1.499994 -0.499998
+v -0.499998 1.499994 0.499998
+v 0.499998 1.499994 0.499998
+v -0.500000 -0.498500 0.500000
+v -0.500000 -0.498500 -0.500000
+v -0.450000 -0.498500 -0.500000
+v -0.450000 -0.498500 0.500000
+v -0.500000 1.498500 0.500000
+v -0.500000 1.498500 -0.500000
+v -0.450000 1.498500 -0.500000
+v -0.450000 1.498500 0.500000
+v 0.450000 0.304976 -0.499762
+v 0.450000 0.474024 -0.137239
+v -0.450000 0.304976 -0.499761
+v -0.450000 0.474024 -0.137238
+v 0.450000 0.472946 -0.138083
+v 0.450000 0.613900 -0.086780
+v -0.450000 0.472946 -0.138082
+v -0.450000 0.613900 -0.086779
+v 0.450000 0.610884 -0.085130
+v 0.450000 1.398731 0.053788
+v -0.450000 0.610884 -0.085130
+v -0.450000 1.398731 0.053789
+v 0.450000 1.395000 0.055138
+v 0.450000 1.495000 0.055138
+v -0.450000 1.395000 0.055138
+v -0.450000 1.495000 0.055138
+vt 0.250108 0.745030
+vt 0.250224 0.516409
+vt 0.494888 0.516008
+vt 0.495027 0.744660
+vt 0.500090 0.744658
+vt 0.250080 0.744698
+vt 0.250023 0.693307
+vt 0.500163 0.693337
+vt 0.244872 0.999900
+vt 0.000100 0.999900
+vt 0.000100 0.925965
+vt 0.244701 0.925965
+vt -0.000234 0.985285
+vt 0.246386 0.985398
+vt 0.246568 0.999900
+vt 0.254685 0.396330
+vt 0.255312 0.252326
+vt 0.489851 0.252497
+vt 0.489923 0.396494
+vt 0.746604 0.251526
+vt 1.000599 0.251553
+vt 1.000481 0.749319
+vt 0.748216 0.749150
+vt 0.971448 0.251053
+vt 0.999396 0.251108
+vt 1.000262 0.749144
+vt 0.972149 0.748806
+vt 0.250110 0.749633
+vt 0.000464 0.749633
+vt 0.001279 0.251648
+vt 0.250023 0.251690
+vt 0.742499 0.744632
+vt 0.500700 0.744632
+vt 0.500700 0.255368
+vt 0.742499 0.255368
+vt 0.951737 0.252687
+vt 0.999900 0.252686
+vt 0.999900 0.748679
+vt 0.951737 0.748679
+vt 1.000029 0.749233
+vt 0.744529 0.749104
+vt 0.745177 0.251367
+vt 1.001019 0.251067
+vt 0.255742 0.485017
+vt 0.255492 0.401623
+vt 0.494936 0.401277
+vt 0.495186 0.485021
+vt 0.260753 0.515705
+vt 0.260629 0.484664
+vt 0.494387 0.484878
+vt 0.494282 0.515673
+vt -0.000037 0.745106
+vt 0.000017 0.703328
+vt 0.245542 0.703882
+vt 0.245632 0.745399
+vt 0.250050 0.250050
+vt 0.000100 0.250050
+vt 0.000100 0.000100
+vt 0.250050 0.000100
+vt 0.250050 0.749950
+vt 0.250050 0.999900
+vt 0.000100 0.749950
+vt 0.999900 0.250049
+vt 0.999900 0.749949
+vt 0.749950 0.749950
+vt 0.749950 0.250050
+usemtl Material.001
+s off
+f 46/1 45/2 47/3 48/4
+usemtl Material.001_tetris_arcade.png
+f 6/5 7/6 3/7 2/8
+f 8/9 5/10 1/11 4/12
+f 1/10 2/13 3/14 4/15
+f 10/16 9/17 11/18 12/19
+f 17/20 18/21 14/22 13/23
+f 18/24 19/25 15/26 14/27
+f 19/28 20/29 16/30 15/31
+f 33/32 34/33 30/34 29/35
+f 34/36 35/37 31/38 30/39
+f 35/40 36/41 32/42 31/43
+f 38/44 37/45 39/46 40/47
+f 42/48 41/49 43/50 44/51
+f 50/52 49/53 51/54 52/55
+usemtl Material.001_NONE
+f 21/56 22/57 23/58 24/59
+f 25/60 26/61 27/10 28/62
+f 22/63 28/64 27/65 23/66
diff --git a/homedecor_modpack/computer/recipes.lua b/homedecor_modpack/computer/recipes.lua
new file mode 100644
index 0000000..51337ad
--- /dev/null
+++ b/homedecor_modpack/computer/recipes.lua
@@ -0,0 +1,143 @@
+
+-- Copyright (C) 2012-2013 Diego Martínez <kaeza@users.sf.net>
+-- License is WTFPL (see README.txt).
+
+minetest.register_craft({
+ output = "computer:shefriendSOO",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "group:wood", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:slaystation",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "group:wood", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:vanio",
+ recipe = {
+ { "homedecor:plastic_sheeting", "", "" },
+ { "default:glass", "", "" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:specter",
+ recipe = {
+ { "", "", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:slaystation2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:admiral64",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "group:wood", "group:wood", "group:wood" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:admiral128",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:wee",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:copper_ingot", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:piepad",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }
+ }
+})
+
+--new stuff
+
+minetest.register_craft({
+ output = "computer:monitor",
+ recipe = {
+ { "homedecor:plastic_sheeting", "default:glass","" },
+ { "homedecor:plastic_sheeting", "default:glass","" },
+ { "homedecor:plastic_sheeting", "default:mese_crystal_fragment", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:router",
+ recipe = {
+ { "default:steel_ingot","","" },
+ { "default:steel_ingot" ,"homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:mese_crystal_fragment","homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:tower",
+ recipe = {
+ { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:printer",
+ recipe = {
+ { "homedecor:plastic_sheeting", "default:steel_ingot","" },
+ { "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:coal_lump", "homedecor:plastic_sheeting" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:printer",
+ recipe = {
+ { "homedecor:plastic_sheeting", "default:steel_ingot","" },
+ { "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting", }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:server",
+ recipe = {
+ { "computer:tower", "computer:tower", "computer:tower", },
+ { "computer:tower", "computer:tower", "computer:tower" },
+ { "computer:tower", "computer:tower", "computer:tower" }
+ }
+})
+
+minetest.register_craft({
+ output = "computer:tetris_arcade",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting", },
+ { "dye:black", "default:glass", "dye:black" },
+ { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }
+ }
+})
diff --git a/homedecor_modpack/computer/tetris.lua b/homedecor_modpack/computer/tetris.lua
new file mode 100644
index 0000000..32a0239
--- /dev/null
+++ b/homedecor_modpack/computer/tetris.lua
@@ -0,0 +1,282 @@
+local shapes = {
+ { { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } },
+
+ { { x = {1, 1, 1, 1}, y = {0, 1, 2, 3} },
+ { x = {0, 1, 2, 3}, y = {1, 1, 1, 1} } },
+
+ { { x = {0, 0, 1, 1}, y = {0, 1, 1, 2} },
+ { x = {1, 2, 0, 1}, y = {0, 0, 1, 1} } },
+
+ { { x = {1, 0, 1, 0}, y = {0, 1, 1, 2} },
+ { x = {0, 1, 1, 2}, y = {0, 0, 1, 1} } },
+
+ { { x = {1, 2, 1, 1}, y = {0, 0, 1, 2} },
+ { x = {0, 1, 2, 2}, y = {1, 1, 1, 2} },
+ { x = {1, 1, 0, 1}, y = {0, 1, 2, 2} },
+ { x = {0, 0, 1, 2}, y = {0, 1, 1, 1} } },
+
+ { { x = {1, 1, 1, 2}, y = {0, 1, 2, 2} },
+ { x = {0, 1, 2, 0}, y = {1, 1, 1, 2} },
+ { x = {0, 1, 1, 1}, y = {0, 0, 1, 2} },
+ { x = {0, 1, 2, 2}, y = {1, 1, 1, 0} } },
+
+ { { x = {1, 0, 1, 2}, y = {0, 1, 1, 1} },
+ { x = {1, 1, 1, 2}, y = {0, 1, 2, 1} },
+ { x = {0, 1, 2, 1}, y = {1, 1, 1, 2} },
+ { x = {0, 1, 1, 1}, y = {1, 0, 1, 2} } } }
+
+local colors = { "computer_cyan.png", "computer_magenta.png", "computer_red.png",
+ "computer_blue.png", "computer_green.png", "computer_orange.png", "computer_yellow.png" }
+
+local background = "image[0,0;3.55,6.66;computer_black.png]"
+local buttons = "button[3,4.5;0.6,0.6;left;<]"
+ .."button[3.6,4.5;0.6,0.6;rotateleft;L]"
+ .."button[4.2,4.5;0.6,0.6;down;v]"
+ .."button[4.2,5.3;0.6,0.6;drop;V]"
+ .."button[4.8,4.5;0.6,0.6;rotateright;R]"
+ .."button[5.4,4.5;0.6,0.6;right;>]"
+ .."button[3.5,3;2,2;new;New Game]"
+
+local formsize = "size[5.9,5.7]"
+local boardx, boardy = 0, 0
+local sizex, sizey, size = 0.29, 0.29, 0.31
+
+local comma = ","
+local semi = ";"
+local close = "]"
+
+local concat = table.concat
+local insert = table.insert
+
+local draw_shape = function(id, x, y, rot, posx, posy)
+ local d = shapes[id][rot]
+ local scr = {}
+ local ins = #scr
+
+ for i=1,4 do
+ local tmp = { "image[",
+ (d.x[i]+x)*sizex+posx, comma,
+ (d.y[i]+y)*sizey+posy, semi,
+ size, comma, size, semi,
+ colors[id], close }
+
+ ins = ins + 1
+ scr[ins] = concat(tmp)
+ end
+
+ return concat(scr)
+end
+
+local function step(pos, fields)
+ local meta = minetest.get_meta(pos)
+ local t = minetest.deserialize(meta:get_string("tetris"))
+
+ local function new_game(pos)
+ local nex = math.random(7)
+
+ t = {
+ board = {},
+ boardstring = "",
+ previewstring = draw_shape(nex, 0, 0, 1, 4, 1),
+ score = 0,
+ cur = math.random(7),
+ nex = nex,
+ x=4, y=0, rot=1
+ }
+
+ local timer = minetest.get_node_timer(pos)
+ timer:set(0.3, 0)
+ end
+
+ local function update_boardstring()
+ local scr = {}
+ local ins = #scr
+
+ for i, line in pairs(t.board) do
+ for _, tile in pairs(line) do
+ local tmp = { "image[",
+ tile[1]*sizex+boardx, comma,
+ i*sizey+boardy, semi,
+ size, comma, size, semi,
+ colors[tile[2]], close }
+
+ ins = ins + 1
+ scr[ins] = concat(tmp)
+ end
+ end
+
+ t.boardstring = concat(scr)
+ end
+
+ local function add()
+ local d = shapes[t.cur][t.rot]
+
+ for i=1,4 do
+ local l = d.y[i] + t.y
+ if not t.board[l] then t.board[l] = {} end
+ insert(t.board[l], {d.x[i] + t.x, t.cur})
+ end
+ end
+
+ local function scroll(l)
+ for i=l, 1, -1 do
+ t.board[i] = t.board[i-1] or {}
+ end
+ end
+
+ local function check_lines()
+ for i, line in pairs(t.board) do
+ if #line >= 10 then
+ scroll(i)
+ t.score = t.score + 20
+ end
+ end
+ end
+
+ local function check_position(x, y, rot)
+ local d = shapes[t.cur][rot]
+
+ for i=1,4 do
+ local cx, cy = d.x[i]+x, d.y[i]+y
+
+ if cx < 0 or cx > 9 or cy < 0 or cy > 19 then
+ return false
+ end
+
+ for _, tile in pairs(t.board[ cy ] or {}) do
+ if tile[1] == cx then return false end
+ end
+ end
+
+ return true
+ end
+
+ local function stuck()
+ if check_position(t.x, t.y+1, t.rot) then return false end
+ return true
+ end
+
+ local function tick()
+ if stuck() then
+ if t.y <= 0 then
+ return false end
+ add()
+ check_lines()
+ update_boardstring()
+ t.cur, t.nex = t.nex, math.random(7)
+ t.x, t.y, t.rot = 4, 0, 1
+ t.previewstring = draw_shape(t.nex, 0, 0, 1, 4.1, 0.6)
+ else
+ t.y = t.y + 1
+ end
+ return true
+ end
+
+ local function move(dx, dy)
+ local newx, newy = t.x+dx, t.y+dy
+ if not check_position(newx, newy, t.rot) then return end
+ t.x, t.y = newx, newy
+ end
+
+ local function rotate(dr)
+ local no = #(shapes[t.cur])
+ local newrot = (t.rot+dr) % no
+
+ if newrot<1 then newrot = newrot+no end
+ if not check_position(t.x, t.y, newrot) then return end
+ t.rot = newrot
+ end
+
+ local function key()
+ if fields.left then
+ move(-1, 0)
+ end
+ if fields.rotateleft then
+ rotate(-1)
+ end
+ if fields.down then
+ t.score = t.score + 1
+ move(0, 1)
+ end
+ if fields.drop then
+ while not stuck() do
+ t.score = t.score + 2
+ move(0, 1)
+ end
+ end
+ if fields.rotateright then
+ rotate(1)
+ end
+ if fields.right then
+ move(1, 0)
+ end
+ end
+
+ local run = true
+
+ if fields then
+ if fields.new then
+ new_game(pos)
+ else
+ key(fields)
+ end
+ else
+ run = tick()
+ end
+
+ if t then
+ local scr = { formsize, background,
+ t.boardstring, t.previewstring,
+ draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
+ "label[3.8,0.1;Next...]label[3.8,2.7;Score: ",
+ t.score, close, buttons }
+
+
+ meta:set_string("formspec", concat(scr)
+ ..default.gui_bg..default.gui_bg_img..default.gui_slots)
+ meta:set_string("tetris", minetest.serialize(t))
+ end
+
+ return run
+end
+
+minetest.register_node("computer:tetris_arcade", {
+ description="Tetris Arcade",
+ drawtype = "mesh",
+ mesh = "tetris_arcade.obj",
+ tiles = {"tetris_arcade.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ on_rotate = screwdriver.rotate_simple,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", formsize.."button[2,2.5;2,2;new;New Game]"
+ ..default.gui_bg..default.gui_bg_img..default.gui_slots)
+ end,
+ on_timer = function(pos)
+ return step(pos, nil)
+ end,
+ on_receive_fields = function(pos, formanme, fields, sender)
+ step(pos, fields)
+ end,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pos = pointed_thing.above
+ if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
+ minetest.chat_send_player(placer:get_player_name(), "No room for place the Arcade!")
+ return end
+ local dir = placer:get_look_dir()
+ local node = {name="computer:tetris_arcade", param1=0, param2 = minetest.dir_to_facedir(dir)}
+ minetest.set_node(pos, node)
+ itemstack:take_item()
+ return itemstack
+ end
+})
diff --git a/homedecor_modpack/computer/textures/computer_ad128_inv.png b/homedecor_modpack/computer/textures/computer_ad128_inv.png
new file mode 100644
index 0000000..846497a
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_ad128_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_ad64_inv.png b/homedecor_modpack/computer/textures/computer_ad64_inv.png
new file mode 100644
index 0000000..7970341
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_ad64_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral128_bk.png b/homedecor_modpack/computer/textures/computer_admiral128_bk.png
new file mode 100644
index 0000000..488ec1d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral128_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral128_bt.png b/homedecor_modpack/computer/textures/computer_admiral128_bt.png
new file mode 100644
index 0000000..73d1f2a
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral128_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral128_ft.png b/homedecor_modpack/computer/textures/computer_admiral128_ft.png
new file mode 100644
index 0000000..67d250c
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral128_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral128_lt.png b/homedecor_modpack/computer/textures/computer_admiral128_lt.png
new file mode 100644
index 0000000..07f112c
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral128_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral128_rt.png b/homedecor_modpack/computer/textures/computer_admiral128_rt.png
new file mode 100644
index 0000000..bf8052d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral128_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral128_tp.png b/homedecor_modpack/computer/textures/computer_admiral128_tp.png
new file mode 100644
index 0000000..e3788a4
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral128_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral64_bk.png b/homedecor_modpack/computer/textures/computer_admiral64_bk.png
new file mode 100644
index 0000000..b10bb38
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral64_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral64_bt.png b/homedecor_modpack/computer/textures/computer_admiral64_bt.png
new file mode 100644
index 0000000..fc50758
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral64_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral64_ft.png b/homedecor_modpack/computer/textures/computer_admiral64_ft.png
new file mode 100644
index 0000000..51f40e6
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral64_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral64_lt.png b/homedecor_modpack/computer/textures/computer_admiral64_lt.png
new file mode 100644
index 0000000..1332a13
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral64_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral64_rt.png b/homedecor_modpack/computer/textures/computer_admiral64_rt.png
new file mode 100644
index 0000000..c89353f
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral64_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_admiral64_tp.png b/homedecor_modpack/computer/textures/computer_admiral64_tp.png
new file mode 100644
index 0000000..da1fcdd
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_admiral64_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_black.png b/homedecor_modpack/computer/textures/computer_black.png
new file mode 100644
index 0000000..e4e017f
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_black.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_blue.png b/homedecor_modpack/computer/textures/computer_blue.png
new file mode 100644
index 0000000..a5a5977
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_blue.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_computer_front_old.png b/homedecor_modpack/computer/textures/computer_computer_front_old.png
new file mode 100644
index 0000000..5f591a6
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_computer_front_old.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_computer_top_old.png b/homedecor_modpack/computer/textures/computer_computer_top_old.png
new file mode 100644
index 0000000..625479c
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_computer_top_old.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_cyan.png b/homedecor_modpack/computer/textures/computer_cyan.png
new file mode 100644
index 0000000..b2c037e
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_cyan.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_green.png b/homedecor_modpack/computer/textures/computer_green.png
new file mode 100644
index 0000000..444cce5
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_green.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_laptop.png b/homedecor_modpack/computer/textures/computer_laptop.png
new file mode 100644
index 0000000..8f0dfb9
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_laptop.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_laptop_inv.png b/homedecor_modpack/computer/textures/computer_laptop_inv.png
new file mode 100644
index 0000000..7d02a2b
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_laptop_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_magenta.png b/homedecor_modpack/computer/textures/computer_magenta.png
new file mode 100644
index 0000000..e5b9d04
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_magenta.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_monitor_inv.png b/homedecor_modpack/computer/textures/computer_monitor_inv.png
new file mode 100644
index 0000000..314197b
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_monitor_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_orange.png b/homedecor_modpack/computer/textures/computer_orange.png
new file mode 100644
index 0000000..27792f7
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_orange.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_piepad_inv.png b/homedecor_modpack/computer/textures/computer_piepad_inv.png
new file mode 100644
index 0000000..386999d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_piepad_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_piepad_inv_off.png b/homedecor_modpack/computer/textures/computer_piepad_inv_off.png
new file mode 100644
index 0000000..aabe8b3
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_piepad_inv_off.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_b.png b/homedecor_modpack/computer/textures/computer_printer_b.png
new file mode 100644
index 0000000..a3bc6b1
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_b.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_bt.png b/homedecor_modpack/computer/textures/computer_printer_bt.png
new file mode 100644
index 0000000..6e03ece
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_f.png b/homedecor_modpack/computer/textures/computer_printer_f.png
new file mode 100644
index 0000000..f8abf3e
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_f.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_inv.png b/homedecor_modpack/computer/textures/computer_printer_inv.png
new file mode 100644
index 0000000..064d996
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_l.png b/homedecor_modpack/computer/textures/computer_printer_l.png
new file mode 100644
index 0000000..94be11e
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_l.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_r.png b/homedecor_modpack/computer/textures/computer_printer_r.png
new file mode 100644
index 0000000..bd25496
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_r.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_printer_t.png b/homedecor_modpack/computer/textures/computer_printer_t.png
new file mode 100644
index 0000000..5fe4174
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_printer_t.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_ps1_inv.png b/homedecor_modpack/computer/textures/computer_ps1_inv.png
new file mode 100644
index 0000000..af7bd66
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_ps1_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_ps2_inv.png b/homedecor_modpack/computer/textures/computer_ps2_inv.png
new file mode 100644
index 0000000..8f46fb4
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_ps2_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_red.png b/homedecor_modpack/computer/textures/computer_red.png
new file mode 100644
index 0000000..adcd627
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_red.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_b.png b/homedecor_modpack/computer/textures/computer_router_b.png
new file mode 100644
index 0000000..3d5b884
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_b.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_bt.png b/homedecor_modpack/computer/textures/computer_router_bt.png
new file mode 100644
index 0000000..872d2e6
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_f.png b/homedecor_modpack/computer/textures/computer_router_f.png
new file mode 100644
index 0000000..f13547e
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_f.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_f_animated.png b/homedecor_modpack/computer/textures/computer_router_f_animated.png
new file mode 100644
index 0000000..311cf2a
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_f_animated.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_inv.png b/homedecor_modpack/computer/textures/computer_router_inv.png
new file mode 100644
index 0000000..3f935ee
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_l.png b/homedecor_modpack/computer/textures/computer_router_l.png
new file mode 100644
index 0000000..67d3afe
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_l.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_r.png b/homedecor_modpack/computer/textures/computer_router_r.png
new file mode 100644
index 0000000..86e10e8
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_r.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_router_t.png b/homedecor_modpack/computer/textures/computer_router_t.png
new file mode 100644
index 0000000..8d2febe
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_router_t.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_bt.png b/homedecor_modpack/computer/textures/computer_server_bt.png
new file mode 100644
index 0000000..aac403d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_f_off.png b/homedecor_modpack/computer/textures/computer_server_f_off.png
new file mode 100644
index 0000000..3913266
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_f_off.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_f_on.png b/homedecor_modpack/computer/textures/computer_server_f_on.png
new file mode 100644
index 0000000..b1e74c7
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_f_on.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_inv.png b/homedecor_modpack/computer/textures/computer_server_inv.png
new file mode 100644
index 0000000..5a6d8f4
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_l.png b/homedecor_modpack/computer/textures/computer_server_l.png
new file mode 100644
index 0000000..776596f
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_l.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_r.png b/homedecor_modpack/computer/textures/computer_server_r.png
new file mode 100644
index 0000000..49da9eb
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_r.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_server_t.png b/homedecor_modpack/computer/textures/computer_server_t.png
new file mode 100644
index 0000000..aac403d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_server_t.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_bk.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_bk.png
new file mode 100644
index 0000000..cb3b121
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_bt.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_bt.png
new file mode 100644
index 0000000..e51b7d7
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_ft.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_ft.png
new file mode 100644
index 0000000..eb7811d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_ft_off.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_ft_off.png
new file mode 100644
index 0000000..a7ae9d6
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_ft_off.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_lt.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_lt.png
new file mode 100644
index 0000000..53b90ef
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_rt.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_rt.png
new file mode 100644
index 0000000..3576549
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_shefriendSOO_tp.png b/homedecor_modpack/computer/textures/computer_shefriendSOO_tp.png
new file mode 100644
index 0000000..c8c28d5
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_shefriendSOO_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_bk.png b/homedecor_modpack/computer/textures/computer_slaystation2_bk.png
new file mode 100644
index 0000000..8166441
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_bt.png b/homedecor_modpack/computer/textures/computer_slaystation2_bt.png
new file mode 100644
index 0000000..bac0f75
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_ft.png b/homedecor_modpack/computer/textures/computer_slaystation2_ft.png
new file mode 100644
index 0000000..7bf7f1f
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_ft_off.png b/homedecor_modpack/computer/textures/computer_slaystation2_ft_off.png
new file mode 100644
index 0000000..7753da8
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_ft_off.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_lt.png b/homedecor_modpack/computer/textures/computer_slaystation2_lt.png
new file mode 100644
index 0000000..5fe035b
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_rt.png b/homedecor_modpack/computer/textures/computer_slaystation2_rt.png
new file mode 100644
index 0000000..c3eb149
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation2_tp.png b/homedecor_modpack/computer/textures/computer_slaystation2_tp.png
new file mode 100644
index 0000000..273ed87
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation2_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_bk.png b/homedecor_modpack/computer/textures/computer_slaystation_bk.png
new file mode 100644
index 0000000..eca4b2d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_bt.png b/homedecor_modpack/computer/textures/computer_slaystation_bt.png
new file mode 100644
index 0000000..0bd1a46
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_ft.png b/homedecor_modpack/computer/textures/computer_slaystation_ft.png
new file mode 100644
index 0000000..49cd44d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_lt.png b/homedecor_modpack/computer/textures/computer_slaystation_lt.png
new file mode 100644
index 0000000..5b55a4b
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_rt.png b/homedecor_modpack/computer/textures/computer_slaystation_rt.png
new file mode 100644
index 0000000..06b40cc
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_tp.png b/homedecor_modpack/computer/textures/computer_slaystation_tp.png
new file mode 100644
index 0000000..0f0316c
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_slaystation_tp_off.png b/homedecor_modpack/computer/textures/computer_slaystation_tp_off.png
new file mode 100644
index 0000000..f8326b4
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_slaystation_tp_off.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_bk.png b/homedecor_modpack/computer/textures/computer_specter_bk.png
new file mode 100644
index 0000000..28be26e
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_bt.png b/homedecor_modpack/computer/textures/computer_specter_bt.png
new file mode 100644
index 0000000..a9d27bf
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_ft.png b/homedecor_modpack/computer/textures/computer_specter_ft.png
new file mode 100644
index 0000000..8e50ce5
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_inv.png b/homedecor_modpack/computer/textures/computer_specter_inv.png
new file mode 100644
index 0000000..d4ac3b0
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_lt.png b/homedecor_modpack/computer/textures/computer_specter_lt.png
new file mode 100644
index 0000000..73b8d4d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_rt.png b/homedecor_modpack/computer/textures/computer_specter_rt.png
new file mode 100644
index 0000000..72bbb14
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_specter_tp.png b/homedecor_modpack/computer/textures/computer_specter_tp.png
new file mode 100644
index 0000000..0d5a92d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_specter_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_spectre_back.png b/homedecor_modpack/computer/textures/computer_spectre_back.png
new file mode 100644
index 0000000..d5abffc
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_spectre_back.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_spectre_bottom.png b/homedecor_modpack/computer/textures/computer_spectre_bottom.png
new file mode 100644
index 0000000..701a191
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_spectre_bottom.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_spectre_front.png b/homedecor_modpack/computer/textures/computer_spectre_front.png
new file mode 100644
index 0000000..6ad7f28
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_spectre_front.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_spectre_left.png b/homedecor_modpack/computer/textures/computer_spectre_left.png
new file mode 100644
index 0000000..b7d0ac3
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_spectre_left.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_spectre_right.png b/homedecor_modpack/computer/textures/computer_spectre_right.png
new file mode 100644
index 0000000..19f9815
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_spectre_right.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_spectre_top.png b/homedecor_modpack/computer/textures/computer_spectre_top.png
new file mode 100644
index 0000000..4716ad2
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_spectre_top.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_tower.png b/homedecor_modpack/computer/textures/computer_tower.png
new file mode 100644
index 0000000..f0c2433
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_tower.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_tower_inv.png b/homedecor_modpack/computer/textures/computer_tower_inv.png
new file mode 100644
index 0000000..ab200f2
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_tower_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_bk.png b/homedecor_modpack/computer/textures/computer_wee_bk.png
new file mode 100644
index 0000000..d70c2c0
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_bk.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_bt.png b/homedecor_modpack/computer/textures/computer_wee_bt.png
new file mode 100644
index 0000000..687ccce
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_bt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_ft.png b/homedecor_modpack/computer/textures/computer_wee_ft.png
new file mode 100644
index 0000000..ee91940
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_ft.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_ft_off.png b/homedecor_modpack/computer/textures/computer_wee_ft_off.png
new file mode 100644
index 0000000..d40e7cb
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_ft_off.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_lt.png b/homedecor_modpack/computer/textures/computer_wee_lt.png
new file mode 100644
index 0000000..d9242d9
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_lt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_rt.png b/homedecor_modpack/computer/textures/computer_wee_rt.png
new file mode 100644
index 0000000..d9242d9
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_rt.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wee_tp.png b/homedecor_modpack/computer/textures/computer_wee_tp.png
new file mode 100644
index 0000000..35448e8
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wee_tp.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_wii_inv.png b/homedecor_modpack/computer/textures/computer_wii_inv.png
new file mode 100644
index 0000000..da7f91b
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_wii_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/computer_yellow.png b/homedecor_modpack/computer/textures/computer_yellow.png
new file mode 100644
index 0000000..29537ac
--- /dev/null
+++ b/homedecor_modpack/computer/textures/computer_yellow.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/homedecor_plastic_base.png b/homedecor_modpack/computer/textures/homedecor_plastic_base.png
new file mode 100644
index 0000000..5c0a0ad
--- /dev/null
+++ b/homedecor_modpack/computer/textures/homedecor_plastic_base.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/homedecor_plastic_base_inv.png b/homedecor_modpack/computer/textures/homedecor_plastic_base_inv.png
new file mode 100644
index 0000000..f3f3f2b
--- /dev/null
+++ b/homedecor_modpack/computer/textures/homedecor_plastic_base_inv.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/homedecor_plastic_sheeting.png b/homedecor_modpack/computer/textures/homedecor_plastic_sheeting.png
new file mode 100644
index 0000000..91dd532
--- /dev/null
+++ b/homedecor_modpack/computer/textures/homedecor_plastic_sheeting.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/monitor_display.png b/homedecor_modpack/computer/textures/monitor_display.png
new file mode 100644
index 0000000..3d1fb39
--- /dev/null
+++ b/homedecor_modpack/computer/textures/monitor_display.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/monitor_plastic.png b/homedecor_modpack/computer/textures/monitor_plastic.png
new file mode 100644
index 0000000..9e2d924
--- /dev/null
+++ b/homedecor_modpack/computer/textures/monitor_plastic.png
Binary files differ
diff --git a/homedecor_modpack/computer/textures/tetris_arcade.png b/homedecor_modpack/computer/textures/tetris_arcade.png
new file mode 100644
index 0000000..dfd176d
--- /dev/null
+++ b/homedecor_modpack/computer/textures/tetris_arcade.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/depends.txt b/homedecor_modpack/fake_fire/depends.txt
new file mode 100644
index 0000000..562cf63
--- /dev/null
+++ b/homedecor_modpack/fake_fire/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/homedecor_modpack/fake_fire/init.lua b/homedecor_modpack/fake_fire/init.lua
new file mode 100644
index 0000000..08760de
--- /dev/null
+++ b/homedecor_modpack/fake_fire/init.lua
@@ -0,0 +1,235 @@
+screwdriver = screwdriver or {}
+
+local function start_smoke(pos, node, clicker, chimney)
+ local this_spawner_meta = minetest.get_meta(pos)
+ local id = this_spawner_meta:get_int("smoky")
+ local s_handle = this_spawner_meta:get_int("sound")
+ local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
+
+ if id ~= 0 then
+ if s_handle then
+ minetest.after(0, function(s_handle)
+ minetest.sound_stop(s_handle)
+ end, s_handle)
+ end
+ minetest.delete_particlespawner(id)
+ this_spawner_meta:set_int("smoky", nil)
+ this_spawner_meta:set_int("sound", nil)
+ return
+ end
+
+ if above == "air" and (not id or id == 0) then
+ id = minetest.add_particlespawner({
+ amount = 4, time = 0, collisiondetection = true,
+ minpos = {x=pos.x-0.25, y=pos.y+0.4, z=pos.z-0.25},
+ maxpos = {x=pos.x+0.25, y=pos.y+5, z=pos.z+0.25},
+ minvel = {x=-0.2, y=0.3, z=-0.2}, maxvel = {x=0.2, y=1, z=0.2},
+ minacc = {x=0,y=0,z=0}, maxacc = {x=0,y=0.5,z=0},
+ minexptime = 1, maxexptime = 3,
+ minsize = 4, maxsize = 8,
+ texture = "smoke_particle.png",
+ })
+ if chimney == 1 then
+ s_handle = nil
+ this_spawner_meta:set_int("smoky", id)
+ this_spawner_meta:set_int("sound", nil)
+ else
+ s_handle = minetest.sound_play("fire_small", {
+ pos = pos,
+ max_hear_distance = 5,
+ loop = true
+ })
+ this_spawner_meta:set_int("smoky", id)
+ this_spawner_meta:set_int("sound", s_handle)
+ end
+ return end
+end
+
+local function stop_smoke(pos)
+ local this_spawner_meta = minetest.get_meta(pos)
+ local id = this_spawner_meta:get_int("smoky")
+ local s_handle = this_spawner_meta:get_int("sound")
+
+ if id ~= 0 then
+ minetest.delete_particlespawner(id)
+ end
+
+ if s_handle then
+ minetest.after(0, function(s_handle)
+ minetest.sound_stop(s_handle)
+ end, s_handle)
+ end
+
+ this_spawner_meta:set_int("smoky", nil)
+ this_spawner_meta:set_int("sound", nil)
+end
+
+-- FLAME TYPES
+local flame_types = {"fake", "ice"}
+
+for _, f in ipairs(flame_types) do
+ minetest.register_node("fake_fire:"..f.."_fire", {
+ inventory_image = f.."_fire_inv.png",
+ description = f.." fire",
+ drawtype = "plantlike",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {dig_immediate=3, not_in_creative_inventory=1},
+ sunlight_propagates = true,
+ buildable_to = true,
+ walkable = false,
+ light_source = 14,
+ waving = 1,
+ tiles = {
+ {name=f.."_fire_animated.png", animation={type="vertical_frames",
+ aspect_w=16, aspect_h=16, length=1.5}},
+ },
+ on_rightclick = function (pos, node, clicker)
+ start_smoke(pos, node, clicker)
+ end,
+ on_destruct = function (pos)
+ stop_smoke(pos)
+ minetest.sound_play("fire_extinguish", {
+ pos = pos, max_hear_distance = 5
+ })
+ end,
+ drop = ""
+ })
+end
+
+minetest.register_node("fake_fire:fancy_fire", {
+ inventory_image = "fancy_fire_inv.png",
+ description = "Fancy Fire",
+ drawtype = "mesh",
+ mesh = "fancy_fire.obj",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {dig_immediate=3},
+ sunlight_propagates = true,
+ light_source = 14,
+ walkable = false,
+ damage_per_second = 4,
+ on_rotate = screwdriver.rotate_simple,
+ tiles = {
+ {name="fake_fire_animated.png",
+ animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=1}}, {name='fake_fire_logs.png'}},
+ on_rightclick = function (pos, node, clicker)
+ start_smoke(pos, node, clicker)
+ end,
+ on_destruct = function (pos)
+ stop_smoke(pos)
+ minetest.sound_play("fire_extinguish", {
+ pos = pos, max_hear_distance = 5
+ })
+ end,
+ drop = {
+ max_items = 3,
+ items = {
+ {
+ items = { "default:torch", "default:torch", "building_blocks:sticks" },
+ rarity = 1,
+ }
+ }
+ }
+ })
+
+-- EMBERS
+minetest.register_node("fake_fire:embers", {
+ description = "Glowing Embers",
+ tiles = {
+ {name="embers_animated.png", animation={type="vertical_frames",
+ aspect_w=16, aspect_h=16, length=2}},
+ },
+ light_source = 9,
+ groups = {crumbly=3},
+ paramtype = "light",
+ sounds = default.node_sound_dirt_defaults(),
+})
+
+-- CHIMNEYS
+local materials = {"stone", "sandstone"}
+
+for _, m in ipairs(materials) do
+ minetest.register_node("fake_fire:chimney_top_"..m, {
+ description = "Chimney Top - "..m,
+ tiles = {"default_"..m..".png^chimney_top.png", "default_"..m..".png"},
+ groups = {snappy=3},
+ paramtype = "light",
+ sounds = default.node_sound_stone_defaults(),
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ on_rightclick = function (pos, node, clicker)
+ local chimney = 1
+ start_smoke(pos, node, clicker, chimney)
+ end,
+ on_destruct = function (pos)
+ stop_smoke(pos)
+ end
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = 'fake_fire:chimney_top_'..m,
+ recipe = {"default:torch", "stairs:slab_"..m}
+ })
+end
+
+-- FLINT and STEEL
+minetest.register_tool("fake_fire:flint_and_steel", {
+ description = "Flint and steel",
+ inventory_image = "flint_and_steel.png",
+ liquids_pointable = false,
+ stack_max = 1,
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ groupcaps={flamable = {uses=65, maxlevel=1}}
+ },
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type == "node" and minetest.get_node(pointed_thing.above).name == "air" then
+ if not minetest.is_protected(pointed_thing.above, user:get_player_name()) then
+ if string.find(minetest.get_node(pointed_thing.under).name, "ice") then
+ minetest.set_node(pointed_thing.above, {name="fake_fire:ice_fire"})
+ else
+ minetest.set_node(pointed_thing.above, {name="fake_fire:fake_fire"})
+ end
+ else
+ minetest.chat_send_player(user:get_player_name(), "This area is protected!")
+ end
+ else
+ return
+ end
+
+ itemstack:add_wear(65535/65)
+ return itemstack
+ end
+})
+
+-- CRAFTS
+minetest.register_craft({
+ type = "shapeless",
+ output = 'fake_fire:flint_and_steel',
+ recipe = {"default:obsidian_shard", "default:steel_ingot"}
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = 'fake_fire:embers',
+ recipe = {"default:torch", "group:wood", "default:torch"}
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = 'fake_fire:fancy_fire',
+ recipe = {"default:torch", "building_blocks:sticks", "default:torch" }
+})
+
+-- ALIASES
+minetest.register_alias("fake_fire:smokeless_fire", "fake_fire:fake_fire")
+minetest.register_alias("fake_fire:smokeless_ice_fire", "fake_fire:ice_fire")
+minetest.register_alias("fake_fire:smokeless_chimney_top_stone", "fake_fire:chimney_top_stone")
+minetest.register_alias("fake_fire:smokeless_chimney_top_sandstone", "fake_fire:chimney_top_sandstone")
+minetest.register_alias("fake_fire:flint", "fake_fire:flint_and_steel")
diff --git a/homedecor_modpack/fake_fire/models/fancy_fire.obj b/homedecor_modpack/fake_fire/models/fancy_fire.obj
new file mode 100644
index 0000000..ad81f6e
--- /dev/null
+++ b/homedecor_modpack/fake_fire/models/fancy_fire.obj
@@ -0,0 +1,133 @@
+# Blender v2.72 (sub 2) OBJ File: 'campfire.blend'
+# www.blender.org
+v 0.353153 -0.337287 0.000000
+v -0.366847 -0.337287 0.000000
+v -0.366847 0.382713 -0.000000
+v -0.186847 -0.337287 0.311769
+v 0.173153 -0.337287 -0.311769
+v -0.186846 0.382713 0.311769
+v 0.173154 0.382713 -0.311769
+v -0.186846 -0.337287 -0.311769
+v 0.173154 -0.337287 0.311769
+v -0.186846 0.382713 -0.311769
+v 0.173153 0.382713 0.311769
+v 0.353153 0.382713 0.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g Flames.001_Cube.004_Fire
+s off
+f 4/1 5/2 7/3 6/4
+f 8/1 9/2 11/3 10/4
+f 1/1 2/2 3/3 12/4
+v 0.151217 -0.347540 0.439253
+v 0.151217 -0.207593 0.411057
+v 0.008458 -0.207593 0.411057
+v 0.008458 -0.347540 0.439253
+v 0.151217 -0.526542 -0.449208
+v 0.151217 -0.386595 -0.477403
+v 0.008458 -0.386595 -0.477403
+v 0.008458 -0.526542 -0.449208
+v -0.419949 -0.512482 0.485423
+v -0.419949 -0.369723 0.485423
+v -0.444739 -0.369723 0.344833
+v -0.444739 -0.512482 0.344833
+v 0.472595 -0.512482 0.328044
+v 0.472595 -0.369723 0.328044
+v 0.447805 -0.369723 0.187453
+v 0.447805 -0.512482 0.187453
+v 0.033402 -0.347540 0.433815
+v 0.025205 -0.207593 0.406838
+v -0.111388 -0.207593 0.448342
+v -0.103191 -0.347540 0.475320
+v -0.224900 -0.526542 -0.416268
+v -0.233097 -0.386595 -0.443246
+v -0.369690 -0.386595 -0.401741
+v -0.361493 -0.526542 -0.374763
+v 0.254175 -0.345963 0.293196
+v 0.254175 -0.277187 0.265611
+v 0.181422 -0.282425 0.252550
+v 0.181422 -0.351201 0.280135
+v 0.343511 -0.517901 -0.135488
+v 0.343511 -0.449125 -0.163073
+v 0.270757 -0.454364 -0.176133
+v 0.270757 -0.523140 -0.148548
+v -0.418506 -0.513914 0.100698
+v -0.418472 -0.439812 0.100704
+v -0.392481 -0.439819 0.031309
+v -0.392514 -0.513921 0.031304
+v 0.022046 -0.514125 0.265705
+v 0.022080 -0.440022 0.265710
+v 0.048071 -0.440029 0.196316
+v 0.048038 -0.514131 0.196310
+v -0.249910 -0.307656 -0.062181
+v -0.249882 -0.234638 -0.074807
+v -0.278776 -0.246254 -0.142048
+v -0.278804 -0.319272 -0.129422
+v 0.183295 -0.339072 -0.242901
+v 0.183323 -0.266053 -0.255527
+v 0.154429 -0.277669 -0.322768
+v 0.154401 -0.350687 -0.310143
+vt 0.418293 0.016195
+vt 0.418293 0.216092
+vt 0.218396 0.216092
+vt 0.218396 0.016195
+vt 0.002609 0.212891
+vt 0.002609 0.012994
+vt 0.989254 0.012994
+vt 0.989254 0.212891
+vt 0.010050 0.219323
+vt 0.010050 0.019426
+vt 0.996695 0.019426
+vt 0.996695 0.219323
+vt 0.618448 0.016195
+vt 0.618448 0.216092
+vt 0.418551 0.216092
+vt 0.418551 0.016195
+vt 0.010050 0.228781
+vt 0.010050 0.028884
+vt 0.996695 0.028884
+vt 0.996695 0.228781
+vt 0.005089 0.207467
+vt 0.005089 0.007570
+vt 0.991734 0.007570
+vt 0.991734 0.207467
+g Campfire_Cube.003_Logs-Stone
+s off
+f 20/5 19/6 18/7 17/8
+f 14/9 13/10 17/11 18/12
+f 15/13 14/14 18/15 19/16
+f 13/17 14/18 15/19 16/20
+f 13/21 16/22 20/23 17/24
+f 16/25 15/26 19/27 20/28
+f 28/5 27/6 26/7 25/8
+f 22/9 21/10 25/11 26/12
+f 23/13 22/14 26/15 27/16
+f 21/17 22/18 23/19 24/20
+f 21/21 24/22 28/23 25/24
+f 24/25 23/26 27/27 28/28
+f 36/5 35/6 34/7 33/8
+f 30/9 29/10 33/11 34/12
+f 31/13 30/14 34/15 35/16
+f 29/17 30/18 31/19 32/20
+f 29/21 32/22 36/23 33/24
+f 32/25 31/26 35/27 36/28
+f 44/5 43/6 42/7 41/8
+f 38/9 37/10 41/11 42/12
+f 39/13 38/14 42/15 43/16
+f 37/17 38/18 39/19 40/20
+f 37/21 40/22 44/23 41/24
+f 40/25 39/26 43/27 44/28
+f 52/5 51/6 50/7 49/8
+f 46/9 45/10 49/11 50/12
+f 47/13 46/14 50/15 51/16
+f 45/17 46/18 47/19 48/20
+f 45/21 48/22 52/23 49/24
+f 48/25 47/26 51/27 52/28
+f 60/5 59/6 58/7 57/8
+f 54/9 53/10 57/11 58/12
+f 55/13 54/14 58/15 59/16
+f 53/17 54/18 55/19 56/20
+f 53/21 56/22 60/23 57/24
+f 56/25 55/26 59/27 60/28
diff --git a/homedecor_modpack/fake_fire/sounds/fire_extinguish.ogg b/homedecor_modpack/fake_fire/sounds/fire_extinguish.ogg
new file mode 100644
index 0000000..a53525d
--- /dev/null
+++ b/homedecor_modpack/fake_fire/sounds/fire_extinguish.ogg
Binary files differ
diff --git a/homedecor_modpack/fake_fire/sounds/fire_small.ogg b/homedecor_modpack/fake_fire/sounds/fire_small.ogg
new file mode 100644
index 0000000..bf51b17
--- /dev/null
+++ b/homedecor_modpack/fake_fire/sounds/fire_small.ogg
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/chimney_top.png b/homedecor_modpack/fake_fire/textures/chimney_top.png
new file mode 100644
index 0000000..a2e16cb
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/chimney_top.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/embers_animated.png b/homedecor_modpack/fake_fire/textures/embers_animated.png
new file mode 100644
index 0000000..3b78b72
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/embers_animated.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/fake_fire_animated.png b/homedecor_modpack/fake_fire/textures/fake_fire_animated.png
new file mode 100644
index 0000000..f4cd8db
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/fake_fire_animated.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/fake_fire_embers.png b/homedecor_modpack/fake_fire/textures/fake_fire_embers.png
new file mode 100644
index 0000000..3b5dea0
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/fake_fire_embers.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/fake_fire_inv.png b/homedecor_modpack/fake_fire/textures/fake_fire_inv.png
new file mode 100644
index 0000000..989963c
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/fake_fire_inv.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/fake_fire_logs.png b/homedecor_modpack/fake_fire/textures/fake_fire_logs.png
new file mode 100644
index 0000000..e7a16ba
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/fake_fire_logs.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/fancy_fire_inv.png b/homedecor_modpack/fake_fire/textures/fancy_fire_inv.png
new file mode 100644
index 0000000..8747d53
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/fancy_fire_inv.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/flint_and_steel.png b/homedecor_modpack/fake_fire/textures/flint_and_steel.png
new file mode 100644
index 0000000..44c692e
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/flint_and_steel.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/ice_fire_animated.png b/homedecor_modpack/fake_fire/textures/ice_fire_animated.png
new file mode 100644
index 0000000..538700a
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/ice_fire_animated.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/ice_fire_inv.png b/homedecor_modpack/fake_fire/textures/ice_fire_inv.png
new file mode 100644
index 0000000..878936e
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/ice_fire_inv.png
Binary files differ
diff --git a/homedecor_modpack/fake_fire/textures/smoke_particle.png b/homedecor_modpack/fake_fire/textures/smoke_particle.png
new file mode 100644
index 0000000..115d12b
--- /dev/null
+++ b/homedecor_modpack/fake_fire/textures/smoke_particle.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/bathroom_furniture.lua b/homedecor_modpack/homedecor/bathroom_furniture.lua
new file mode 100644
index 0000000..09ebee9
--- /dev/null
+++ b/homedecor_modpack/homedecor/bathroom_furniture.lua
@@ -0,0 +1,106 @@
+local S = homedecor.gettext
+
+local bathroom_tile_colors = {
+ { "1", "white/grey", "#c0c0c0:200" },
+ { "2", "white/dark grey", "#404040:150" },
+ { "3", "white/black", "#000000:200" },
+ { "4", "black/dark grey", "" },
+ { "red", "white/red", "#d00000:150" },
+ { "green", "white/green", "#00d000:150" },
+ { "blue", "white/blue", "#0000d0:150" },
+ { "yellow", "white/yellow", "#ffff00:150" },
+ { "tan", "white/tan", "#ceaf42:150" }
+}
+
+for i in ipairs(bathroom_tile_colors) do
+ local color = bathroom_tile_colors[i][1]
+ local shade = bathroom_tile_colors[i][2]
+ local hue = bathroom_tile_colors[i][3]
+
+ local coloredtile = "homedecor_bathroom_tiles_bg.png^(homedecor_bathroom_tiles_fg.png^[colorize:"..hue..")"
+
+ if color == "4" then
+ coloredtile = "(homedecor_bathroom_tiles_bg.png^[colorize:#000000:75)"..
+ "^(homedecor_bathroom_tiles_fg.png^[colorize:#000000:200)"
+ end
+
+ minetest.register_node("homedecor:tiles_"..color, {
+ description = "Bathroom/kitchen tiles ("..shade..")",
+ tiles = {
+ coloredtile,
+ coloredtile,
+ coloredtile,
+ coloredtile,
+ "("..coloredtile..")^[transformR90",
+ "("..coloredtile..")^[transformR90"
+ },
+ groups = {cracky=3},
+ paramtype = "light",
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+local tr_cbox = {
+ type = "fixed",
+ fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 }
+}
+
+homedecor.register("towel_rod", {
+ description = "Towel rod with towel",
+ mesh = "homedecor_towel_rod.obj",
+ tiles = {
+ "homedecor_generic_terrycloth.png",
+ "default_wood.png",
+ },
+ inventory_image = "homedecor_towel_rod_inv.png",
+ selection_box = tr_cbox,
+ walkable = false,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3},
+ sounds = default.node_sound_defaults(),
+})
+
+homedecor.register("medicine_cabinet", {
+ description = S("Medicine Cabinet"),
+ mesh = "homedecor_medicine_cabinet.obj",
+ tiles = {
+ 'default_wood.png',
+ 'homedecor_medicine_cabinet_mirror.png'
+ },
+ inventory_image = "homedecor_medicine_cabinet_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5}
+ },
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ on_punch = function(pos, node, puncher, pointed_thing)
+ node.name = "homedecor:medicine_cabinet_open"
+ minetest.swap_node(pos, node)
+ end,
+ infotext=S("Medicine cabinet"),
+ inventory = {
+ size=6,
+ },
+})
+
+homedecor.register("medicine_cabinet_open", {
+ mesh = "homedecor_medicine_cabinet_open.obj",
+ tiles = {
+ 'default_wood.png',
+ 'homedecor_medicine_cabinet_mirror.png',
+ 'homedecor_medicine_cabinet_inside.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5}
+ },
+ walkable = false,
+ groups = { snappy = 3, not_in_creative_inventory=1 },
+ drop = "homedecor:medicine_cabinet",
+ on_punch = function(pos, node, puncher, pointed_thing)
+ node.name = "homedecor:medicine_cabinet"
+ minetest.swap_node(pos, node)
+ end,
+})
+
diff --git a/homedecor_modpack/homedecor/bathroom_sanitation.lua b/homedecor_modpack/homedecor/bathroom_sanitation.lua
new file mode 100644
index 0000000..b83e69a
--- /dev/null
+++ b/homedecor_modpack/homedecor/bathroom_sanitation.lua
@@ -0,0 +1,282 @@
+local S = homedecor.gettext
+
+local toilet_sbox = {
+ type = "fixed",
+ fixed = { -6/16, -8/16, -8/16, 6/16, 9/16, 8/16 },
+}
+
+local toilet_cbox = {
+ type = "fixed",
+ fixed = {
+ {-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 },
+ {-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 }
+ }
+}
+
+homedecor.register("toilet", {
+ description = S("Toilet"),
+ mesh = "homedecor_toilet_closed.obj",
+ tiles = {
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_generic_metal_black.png^[brighten"
+ },
+ selection_box = toilet_sbox,
+ node_box = toilet_cbox,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ on_punch = function (pos, node, puncher)
+ node.name = "homedecor:toilet_open"
+ minetest.set_node(pos, node)
+ end
+})
+
+homedecor.register("toilet_open", {
+ mesh = "homedecor_toilet_open.obj",
+ tiles = {
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "default_water.png",
+ "homedecor_generic_metal_black.png^[brighten"
+ },
+ selection_box = toilet_sbox,
+ collision_box = toilet_cbox,
+ drop = "homedecor:toilet",
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ on_punch = function (pos, node, puncher)
+ node.name = "homedecor:toilet"
+ minetest.set_node(pos, node)
+ minetest.sound_play("homedecor_toilet_flush", {
+ pos=pos,
+ max_hear_distance = 5,
+ gain = 1,
+ })
+ end
+})
+
+-- toilet paper :-)
+
+local tp_cbox = {
+ type = "fixed",
+ fixed = { -0.25, 0.125, 0.0625, 0.1875, 0.4375, 0.5 }
+}
+
+homedecor.register("toilet_paper", {
+ description = S("Toilet paper"),
+ mesh = "homedecor_toilet_paper.obj",
+ tiles = {
+ "homedecor_generic_quilted_paper.png",
+ "default_wood.png"
+ },
+ inventory_image = "homedecor_toilet_paper_inv.png",
+ selection_box = tp_cbox,
+ walkable = false,
+ groups = {snappy=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_defaults(),
+})
+
+--Sink
+
+local sink_cbox = {
+ type = "fixed",
+ fixed = { -5/16, -8/16, 1/16, 5/16, 8/16, 8/16 }
+}
+
+homedecor.register("sink", {
+ description = S("Bathroom Sink"),
+ mesh = "homedecor_bathroom_sink.obj",
+ tiles = {
+ "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png",
+ "default_water.png"
+ },
+ inventory_image="homedecor_bathroom_sink_inv.png",
+ selection_box = sink_cbox,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -5/16, 5/16, 1/16, -4/16, 8/16, 8/16 },
+ { 5/16, 5/16, 1/16, 4/16, 8/16, 8/16 },
+ { -5/16, 5/16, 1/16, 5/16, 8/16, 2/16 },
+ { -5/16, 5/16, 6/16, 5/16, 8/16, 8/16 },
+ { -4/16, -8/16, 1/16, 4/16, 5/16, 6/16 }
+ }
+ },
+ on_destruct = function(pos)
+ homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
+ end
+})
+
+--Taps
+
+local function taps_on_rightclick(pos, node, clicker)
+ local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
+ if below and
+ below.name == "homedecor:shower_tray" or
+ below.name == "homedecor:sink" or
+ below.name == "homedecor:kitchen_cabinet_with_sink" then
+ local particledef = {
+ outlet = { x = 0, y = -0.44, z = 0.28 },
+ velocity_x = { min = -0.1, max = 0.1 },
+ velocity_y = -0.3,
+ velocity_z = { min = -0.1, max = 0 },
+ spread = 0
+ }
+ homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
+ end
+end
+
+homedecor.register("taps", {
+ description = S("Bathroom taps/faucet"),
+ mesh = "homedecor_bathroom_faucet.obj",
+ tiles = {
+ "homedecor_generic_metal_black.png^[brighten",
+ "homedecor_generic_metal_bright.png",
+ "homedecor_generic_metal_black.png^[colorize:#ffffff:200",
+ "homedecor_generic_metal_bright.png"
+ },
+ inventory_image = "3dforniture_taps_inv.png",
+ wield_image = "3dforniture_taps_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
+ },
+ walkable = false,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ on_rightclick = taps_on_rightclick,
+ on_destruct = homedecor.stop_particle_spawner,
+ on_rotate = screwdriver.disallow
+})
+
+homedecor.register("taps_brass", {
+ description = S("Bathroom taps/faucet (brass)"),
+ mesh = "homedecor_bathroom_faucet.obj",
+ tiles = {
+ "homedecor_generic_metal_brass.png",
+ "homedecor_generic_metal_brass.png",
+ "homedecor_generic_metal_black.png^[colorize:#ffffff:200",
+ "homedecor_generic_metal_brass.png"
+ },
+ inventory_image = "3dforniture_taps_brass_inv.png",
+ wield_image = "3dforniture_taps_brass_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
+ },
+ walkable = false,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ on_rightclick = taps_on_rightclick,
+ on_destruct = homedecor.stop_particle_spawner,
+ on_rotate = screwdriver.disallow
+})
+
+--Shower Tray
+
+homedecor.register("shower_tray", {
+ description = S("Shower Tray"),
+ tiles = {
+ "forniture_marble_base_ducha_top.png",
+ "homedecor_marble.png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, -0.45, 0.5 },
+ { -0.5, -0.45, -0.5, 0.5, -0.4, -0.45 },
+ { -0.5, -0.45, 0.45, 0.5, -0.4, 0.5 },
+ { -0.5, -0.45, -0.45, -0.45, -0.4, 0.45 },
+ { 0.45, -0.45, -0.45, 0.5, -0.4, 0.45 }
+ },
+ },
+ selection_box = homedecor.nodebox.slab_y(0.1),
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+ on_destruct = function(pos)
+ homedecor.stop_particle_spawner({x=pos.x, y=pos.y+2, z=pos.z}) -- the showerhead
+ homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) -- the taps, if any
+ end
+})
+
+--Shower Head
+
+
+local sh_cbox = {
+ type = "fixed",
+ fixed = { -0.2, -0.4, -0.05, 0.2, 0.1, 0.5 }
+}
+
+homedecor.register("shower_head", {
+ drawtype = "mesh",
+ mesh = "homedecor_shower_head.obj",
+ tiles = {
+ "homedecor_generic_metal_black.png^[brighten",
+ "homedecor_shower_head.png"
+ },
+ inventory_image = "homedecor_shower_head_inv.png",
+ description = "Shower Head",
+ groups = {snappy=3},
+ selection_box = sh_cbox,
+ walkable = false,
+ on_rotate = screwdriver.disallow,
+ on_rightclick = function (pos, node, clicker)
+ local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-2.0, z=pos.z})
+ if below and below.name == "homedecor:shower_tray" then
+ local particledef = {
+ outlet = { x = 0, y = -0.42, z = 0.1 },
+ velocity_x = { min = -0.15, max = 0.15 },
+ velocity_y = -2,
+ velocity_z = { min = -0.3, max = 0.1 },
+ spread = 0.12
+ }
+ homedecor.start_particle_spawner(pos, node, particledef, "homedecor_shower")
+ end
+ end,
+ on_destruct = function(pos)
+ homedecor.stop_particle_spawner(pos)
+ end
+})
+
+local bs_cbox = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 }
+}
+
+homedecor.register("bathroom_set", {
+ drawtype = "mesh",
+ mesh = "homedecor_bathroom_set.obj",
+ tiles = {
+ "homedecor_bathroom_set_mirror.png",
+ "homedecor_bathroom_set_tray.png",
+ "homedecor_bathroom_set_toothbrush.png",
+ "homedecor_bathroom_set_cup.png",
+ "homedecor_bathroom_set_toothpaste.png",
+ },
+ inventory_image = "homedecor_bathroom_set_inv.png",
+ description = "Bathroom sundries set",
+ groups = {snappy=3},
+ selection_box = bs_cbox,
+ walkable = false,
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_alias("3dforniture:toilet", "homedecor:toilet")
+minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open")
+minetest.register_alias("3dforniture:sink", "homedecor:sink")
+minetest.register_alias("3dforniture:taps", "homedecor:taps")
+minetest.register_alias("3dforniture:shower_tray", "homedecor:shower_tray")
+minetest.register_alias("3dforniture:shower_head", "homedecor:shower_head")
+minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off")
+
+minetest.register_alias("toilet", "homedecor:toilet")
+minetest.register_alias("sink", "homedecor:sink")
+minetest.register_alias("taps", "homedecor:taps")
+minetest.register_alias("shower_tray", "homedecor:shower_tray")
+minetest.register_alias("shower_head", "homedecor:shower_head")
+minetest.register_alias("table_lamp", "homedecor:table_lamp_off")
diff --git a/homedecor_modpack/homedecor/bedroom.lua b/homedecor_modpack/homedecor/bedroom.lua
new file mode 100644
index 0000000..683e53a
--- /dev/null
+++ b/homedecor_modpack/homedecor/bedroom.lua
@@ -0,0 +1,209 @@
+local S = homedecor.gettext
+
+local bedcolors = {
+ { "black", "#000000:200" }, --new cg72
+ { "brown", "#603010:175" },
+ { "blue", "#0000d0:150" },
+ { "cyan", "#009fa7:150" }, --new cg72
+ { "darkgrey", "#101010:175" },
+ { "dark_green", "#007000:150" },
+ { "green", "#00d000:150" }, --new cg72
+ { "grey", "#101010:100" }, --new cg72
+ { "magenta", "#e0048b:150" }, --new cg72
+ { "orange", "#ff3000:150" },
+ { "pink", "#ff80b0:150" },
+ { "red", "#d00000:150" },
+ { "violet", "#7000e0:150" },
+ { "white", "#000000:000" }, --new cg72
+ { "yellow", "#ffe000:150" }
+}
+
+local bed_sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
+}
+
+local bed_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 },
+ { -0.5, -0.5, 1.44, 0.5, 0.5, 1.5 },
+ { -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 },
+ }
+}
+
+local kbed_sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
+}
+
+local kbed_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 },
+ { -0.5, -0.5, 1.44, 1.5, 0.5, 1.5 },
+ { -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 },
+ }
+}
+
+for i in ipairs(bedcolors) do
+ local color = bedcolors[i][1]
+ local color2=color
+ local hue = bedcolors[i][2]
+
+ if color == "darkgrey" then
+ color2 = "dark_grey"
+ end
+ homedecor.register("bed_"..color.."_regular", {
+ mesh = "homedecor_bed_regular.obj",
+ tiles = {
+ "homedecor_bed_frame.png",
+ "default_wood.png",
+ "wool_white.png",
+ "wool_"..color2..".png",
+ "homedecor_bed_bottom.png",
+ "wool_"..color2..".png^[brighten", -- pillow
+ },
+ inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")",
+ description = S("Bed (%s)"):format(color),
+ groups = {snappy=3},
+ selection_box = bed_sbox,
+ collision_box = bed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ if not placer:get_player_control().sneak then
+ return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
+ end
+ end,
+ after_dig_node = function(pos)
+ homedecor.unextend_bed(pos, color)
+ end,
+ on_rightclick = function(pos, node, clicker)
+ if minetest.get_modpath("beds") then
+ beds.on_rightclick(pos, clicker)
+ else return end
+ end
+ })
+
+ homedecor.register("bed_"..color.."_extended", {
+ mesh = "homedecor_bed_extended.obj",
+ tiles = {
+ "homedecor_bed_frame.png",
+ "default_wood.png",
+ "wool_white.png",
+ "wool_"..color2..".png",
+ "homedecor_bed_bottom.png",
+ "wool_"..color2..".png^[brighten",
+ },
+ selection_box = bed_sbox,
+ collision_box = bed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ expand = { forward = "air" },
+ on_rotate = screwdriver.disallow,
+ after_dig_node = function(pos)
+ homedecor.unextend_bed(pos, color)
+ end,
+ on_rightclick = function(pos, node, clicker)
+ if minetest.get_modpath("beds") then
+ beds.on_rightclick(pos, clicker)
+ else return end
+ end,
+ drop = "homedecor:bed_"..color.."_regular"
+ })
+
+ homedecor.register("bed_"..color.."_kingsize", {
+ mesh = "homedecor_bed_kingsize.obj",
+ tiles = {
+ "homedecor_bed_frame.png",
+ "default_wood.png",
+ "wool_white.png",
+ "wool_"..color2..".png",
+ "homedecor_bed_bottom.png",
+ "wool_"..color2..".png^[brighten",
+ },
+ inventory_image = "homedecor_bed_kingsize_inv.png^(homedecor_bed_kingsize_overlay_inv.png^[colorize:"..hue..")",
+ groups = {snappy=3, not_in_creative_inventory=1},
+ description = S("Bed (%s, king sized)"):format(color),
+ groups = {snappy=3, not_in_creative_inventory=1},
+ selection_box = kbed_sbox,
+ collision_box = kbed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ local inv = digger:get_inventory()
+ if digger:get_player_control().sneak and inv:room_for_item("main", "bed_"..color.."_regular 1") then
+ inv:remove_item("main", "homedecor:bed_"..color.."_kingsize 1")
+ inv:add_item("main", "homedecor:bed_"..color.."_regular 2")
+ end
+ end,
+ on_rightclick = function(pos, node, clicker)
+ if minetest.get_modpath("beds") then
+ beds.on_rightclick(pos, clicker)
+ else return end
+ end
+ })
+
+ minetest.register_alias("homedecor:bed_"..color.."_foot", "homedecor:bed_"..color.."_regular")
+ minetest.register_alias("homedecor:bed_"..color.."_footext", "homedecor:bed_"..color.."_extended")
+ minetest.register_alias("homedecor:bed_"..color.."_head", "air")
+
+end
+
+
+for _, w in pairs({"mahogany", "oak"}) do
+ homedecor.register("nightstand_"..w.."_one_drawer", {
+ description = S("Nightstand with One Drawer ("..w..")"),
+ tiles = { 'homedecor_nightstand_'..w..'_tb.png',
+ 'homedecor_nightstand_'..w..'_tb.png^[transformFY',
+ 'homedecor_nightstand_'..w..'_lr.png^[transformFX',
+ 'homedecor_nightstand_'..w..'_lr.png',
+ 'homedecor_nightstand_'..w..'_back.png',
+ 'homedecor_nightstand_'..w..'_1_drawer_front.png'},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
+ { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
+ { -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left
+ { 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right
+ { -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
+ { -8/16, -8/16, -30/64, 8/16, -7/16, 8/16 } -- bottom
+ }
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = { type = "regular" },
+ infotext=S("One-drawer Nightstand"),
+ inventory = {
+ size=8,
+ lockable=true,
+ },
+ })
+
+ homedecor.register("nightstand_"..w.."_two_drawers", {
+ description = S("Nightstand with Two Drawers ("..w..")"),
+ tiles = { 'homedecor_nightstand_'..w..'_tb.png',
+ 'homedecor_nightstand_'..w..'_tb.png^[transformFY',
+ 'homedecor_nightstand_'..w..'_lr.png^[transformFX',
+ 'homedecor_nightstand_'..w..'_lr.png',
+ 'homedecor_nightstand_'..w..'_back.png',
+ 'homedecor_nightstand_'..w..'_2_drawer_front.png'},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, -30/64, 8/16, 8/16, 8/16 }, -- main body
+ { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64 }, -- top drawer face
+ { -7/16, -7/16, -32/64, 7/16, -1/16, -29/64 }, -- bottom drawer face
+ }
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = { type = "regular" },
+ infotext=S("Two-drawer Nightstand"),
+ inventory = {
+ size=16,
+ lockable=true,
+ },
+ })
+end
diff --git a/homedecor_modpack/homedecor/books.lua b/homedecor_modpack/homedecor/books.lua
new file mode 100644
index 0000000..4783cb3
--- /dev/null
+++ b/homedecor_modpack/homedecor/books.lua
@@ -0,0 +1,173 @@
+local S = homedecor.gettext
+
+local bookcolors = {
+ { "red", "#c00000:150" },
+ { "green", "#008000:150" },
+ { "blue", "#4040c0:150" },
+ { "violet", "#600070:150" },
+ { "grey", "#202020:150" },
+ { "brown", "#603010:175" }
+}
+
+local BOOK_FORMNAME = "homedecor:book_form"
+
+local player_current_book = { }
+
+for c in ipairs(bookcolors) do
+ local color = bookcolors[c][1]
+ local color_d = S(bookcolors[c][1])
+ local hue = bookcolors[c][2]
+
+ local function book_dig(pos, node, digger)
+ if minetest.is_protected(pos, digger:get_player_name()) then return end
+ local meta = minetest.get_meta(pos)
+ local data = minetest.serialize({
+ title = meta:get_string("title") or "",
+ text = meta:get_string("text") or "",
+ owner = meta:get_string("owner") or "",
+ _recover = meta:get_string("_recover") or "",
+ })
+ local stack = ItemStack({
+ name = "homedecor:book_"..color,
+ metadata = data,
+ })
+ stack = digger:get_inventory():add_item("main", stack)
+ if not stack:is_empty() then
+ minetest.item_drop(stack, digger, pos)
+ end
+ minetest.remove_node(pos)
+ end
+
+ local inv_img = "homedecor_book_inv.png^[colorize:"..hue.."^homedecor_book_trim_inv.png"
+
+ homedecor.register("book_"..color, {
+ description = S("Writable Book (%s)"):format(color_d),
+ mesh = "homedecor_book.obj",
+ tiles = {
+ "(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png",
+ "homedecor_book_edges.png"
+ },
+ inventory_image = inv_img,
+ wield_image = inv_img,
+ groups = { snappy=3, oddly_breakable_by_hand=3, book=1 },
+ walkable = false,
+ stack_max = 1,
+ on_punch = function(pos, node, puncher, pointed_thing)
+ local fdir = node.param2
+ minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
+ end,
+ on_place = function(itemstack, placer, pointed_thing)
+ local plname = placer:get_player_name()
+ local pos = pointed_thing.under
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+ if not def or not def.buildable_to then
+ pos = pointed_thing.above
+ node = minetest.get_node_or_nil(pos)
+ def = node and minetest.registered_nodes[node.name]
+ if not def or not def.buildable_to then return itemstack end
+ end
+ if minetest.is_protected(pos, plname) then return itemstack end
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.set_node(pos, {
+ name = "homedecor:book_"..color,
+ param2 = fdir,
+ })
+ local text = itemstack:get_metadata() or ""
+ local meta = minetest.get_meta(pos)
+ local data = minetest.deserialize(text) or {}
+ if type(data) ~= "table" then
+ data = {}
+ -- Store raw metadata in case some data is lost by the
+ -- transition to the new meta format, so it is not lost
+ -- and can be recovered if needed.
+ meta:set_string("_recover", text)
+ end
+ meta:set_string("title", data.title or "")
+ meta:set_string("text", data.text or "")
+ meta:set_string("owner", data.owner or "")
+ if data.title and data.title ~= "" then
+ meta:set_string("infotext", data.title)
+ end
+ if not homedecor.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ return itemstack
+ end,
+ on_dig = book_dig,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
+ }
+ })
+
+ homedecor.register("book_open_"..color, {
+ mesh = "homedecor_book_open.obj",
+ tiles = {
+ "(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png",
+ "homedecor_book_edges.png",
+ "homedecor_book_pages.png"
+ },
+ groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 },
+ drop = "homedecor:book_"..color,
+ walkable = false,
+ on_dig = book_dig,
+ on_rightclick = function(pos, node, clicker)
+ local meta = minetest.get_meta(pos)
+ local player_name = clicker:get_player_name()
+ local title = meta:get_string("title") or ""
+ local text = meta:get_string("text") or ""
+ local owner = meta:get_string("owner") or ""
+ local formspec
+ if owner == "" or owner == player_name then
+ formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img..
+ "field[0.5,1;7.5,0;title;Book title :;"..
+ minetest.formspec_escape(title).."]"..
+ "textarea[0.5,1.5;7.5,7;text;Book content :;"..
+ minetest.formspec_escape(text).."]"..
+ "button_exit[2.5,7.5;3,1;save;Save]"
+ else
+ formspec = "size[8,8]"..default.gui_bg..
+ "button_exit[7,0.25;1,0.5;close;X]"..
+ default.gui_bg_img..
+ "label[0.5,0.5;by "..owner.."]"..
+ "label[0.5,0;"..minetest.formspec_escape(title).."]"..
+ "textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
+ end
+ player_current_book[player_name] = pos
+ minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
+ end,
+ on_punch = function(pos, node, puncher, pointed_thing)
+ local fdir = node.param2
+ minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
+ minetest.sound_play("homedecor_book_close", {
+ pos=pos,
+ max_hear_distance = 3,
+ gain = 2,
+ })
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
+ }
+ })
+
+end
+
+minetest.register_on_player_receive_fields(function(player, form_name, fields)
+ if form_name ~= BOOK_FORMNAME or not fields.save then
+ return
+ end
+ local player_name = player:get_player_name()
+ local pos = player_current_book[player_name]
+ if not pos then return end
+ local meta = minetest.get_meta(pos)
+ meta:set_string("title", fields.title or "")
+ meta:set_string("text", fields.text or "")
+ meta:set_string("owner", player_name)
+ if (fields.title or "") ~= "" then
+ meta:set_string("infotext", fields.title)
+ end
+ minetest.log("action", player:get_player_name().." has written in a book (title: \""..fields.title.."\"): \""..fields.text..
+ "\" at location: "..minetest.pos_to_string(player:getpos()))
+end)
diff --git a/homedecor_modpack/homedecor/climate-control.lua b/homedecor_modpack/homedecor/climate-control.lua
new file mode 100644
index 0000000..09f714e
--- /dev/null
+++ b/homedecor_modpack/homedecor/climate-control.lua
@@ -0,0 +1,158 @@
+-- Nodes that would affect the local temperature e.g. fans, heater, A/C
+
+local S = homedecor.gettext
+
+homedecor.register("air_conditioner", {
+ description = S("Air Conditioner"),
+ mesh = "homedecor_ac.obj",
+ tiles = {
+ "homedecor_ac.png",
+ "default_glass.png"
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = { type="regular" },
+})
+
+-- fans
+
+minetest.register_entity("homedecor:mesh_desk_fan", {
+ collisionbox = homedecor.nodebox.null,
+ visual = "mesh",
+ mesh = "homedecor_desk_fan.b3d",
+ textures = {"homedecor_desk_fan_uv.png"},
+ visual_size = {x=10, y=10},
+})
+
+homedecor.register("desk_fan", {
+ description = "Desk Fan",
+ groups = {oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1875, -0.5, -0.1875, 0.1875, -0.375, 0.1875}, -- NodeBox1
+ }
+ },
+ tiles = {"homedecor_desk_fan_body.png"},
+ inventory_image = "homedecor_desk_fan_inv.png",
+ wield_image = "homedecor_desk_fan_inv.png",
+ selection_box = { type = "regular" },
+ on_rotate = screwdriver.disallow,
+ on_construct = function(pos)
+ local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("active", "no")
+ if entity_remove[1] == nil then
+ minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
+ entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
+ if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270
+ entity_remove[1]:setyaw(3.142)
+ elseif minetest.get_node(pos).param2 == 1 then
+ entity_remove[1]:setyaw(3.142/2)
+ elseif minetest.get_node(pos).param2 == 3 then
+ entity_remove[1]:setyaw((-3.142/2))
+ else
+ entity_remove[1]:setyaw(0)
+ end
+ end
+ end,
+ on_punch = function(pos)
+ local entity_anim = minetest.get_objects_inside_radius(pos, 0.1)
+ local speedy_meta = minetest.get_meta(pos)
+ if speedy_meta:get_string("active") == "no" then
+ speedy_meta:set_string("active", "yes")
+ elseif speedy_meta:get_string("active") == "yes" then
+ speedy_meta:set_string("active", "no")
+ end
+
+ if entity_anim[1] == nil then
+ minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
+ local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
+ if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270
+ entity_remove[1]:setyaw(3.142)
+ elseif minetest.get_node(pos).param2 == 1 then
+ entity_remove[1]:setyaw(3.142/2)
+ elseif minetest.get_node(pos).param2 == 3 then
+ entity_remove[1]:setyaw((-3.142/2))
+ else
+ entity_remove[1]:setyaw(0)
+ end
+ end
+ local entity_anim = minetest.get_objects_inside_radius(pos, 0.1)
+ if minetest.get_meta(pos):get_string("active") == "no" then
+ entity_anim[1]:set_animation({x=0,y=0}, 1, 0)
+ elseif minetest.get_meta(pos):get_string("active") == "yes" then
+ entity_anim[1]:set_animation({x=0,y=96}, 24, 0)
+ end
+ end,
+ after_dig_node = function(pos)
+ local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
+ entity_remove[1]:remove()
+ end,
+})
+
+-- ceiling fan
+
+homedecor.register("ceiling_fan", {
+ description = S("Ceiling Fan"),
+ tiles = {
+ { name="homedecor_ceiling_fan_top.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.5} },
+ { name="homedecor_ceiling_fan_bottom.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.5} },
+ 'homedecor_ceiling_fan_sides.png',
+ },
+ inventory_image = "homedecor_ceiling_fan_inv.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, 0.495, -0.5, 0.5, 0.495, 0.5 },
+ { -0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625 }
+ }
+ },
+ groups = { snappy = 3 },
+ light_source = LIGHT_MAX-1,
+ sounds = default.node_sound_glass_defaults(),
+})
+
+-- heating devices
+
+homedecor.register("space_heater", {
+ description = S("Space heater"),
+ tiles = { 'homedecor_heater_tb.png',
+ 'homedecor_heater_tb.png',
+ 'homedecor_heater_sides.png',
+ 'homedecor_heater_sides.png',
+ 'homedecor_heater_back.png',
+ 'homedecor_heater_front.png'
+ },
+ inventory_image = "homedecor_heater_inv.png",
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1875, -0.5, 0.0625, 0.1875, 0, 0.3125},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.1875, -0.5, 0.0625, 0.1875, 0, 0.3125}
+ }
+})
+
+local r_cbox = homedecor.nodebox.slab_z(-0.25)
+homedecor.register("radiator", {
+ mesh = "homedecor_radiator.obj",
+ tiles = {
+ "homedecor_generic_metal_black.png^[colorize:#ffffff:200",
+ "homedecor_radiator_controls.png"
+ },
+ inventory_image = "homedecor_radiator_inv.png",
+ description = "Radiator heater",
+ groups = {snappy=3},
+ selection_box = r_cbox,
+ collision_box = r_cbox,
+ sounds = default.node_sound_wood_defaults(),
+})
diff --git a/homedecor_modpack/homedecor/clocks.lua b/homedecor_modpack/homedecor/clocks.lua
new file mode 100644
index 0000000..0a00934
--- /dev/null
+++ b/homedecor_modpack/homedecor/clocks.lua
@@ -0,0 +1,99 @@
+local clock_sbox = {
+ type = "fixed",
+ fixed = { -8/32, -8/32, 14/32, 8/32, 8/32, 16/32 }
+}
+
+local clock_materials = {
+ { "plastic", "homedecor_generic_plastic_black.png^[colorize:#ffffff:220" },
+ { "wood", "default_wood.png" }
+}
+
+for i in ipairs(clock_materials) do
+ local m1 = clock_materials[i][1]
+ local m2 = clock_materials[i][2]
+ homedecor.register("analog_clock_"..m1, {
+ description = "Analog clock ("..m1..")",
+ mesh = "homedecor_analog_clock.obj",
+ tiles = {
+ "homedecor_analog_clock_face.png",
+ m2,
+ "homedecor_analog_clock_back.png"
+ },
+ inventory_image = "homedecor_analog_clock_"..m1.."_inv.png",
+ walkable = false,
+ selection_box = clock_sbox,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ })
+end
+
+homedecor.register("digital_clock", {
+ description = "Digital clock",
+ tiles = {
+ "homedecor_digital_clock_edges.png",
+ "homedecor_digital_clock_edges.png",
+ "homedecor_digital_clock_edges.png",
+ "homedecor_digital_clock_edges.png",
+ "homedecor_digital_clock_back.png",
+ "homedecor_digital_clock_front.png"
+ },
+ inventory_image = "homedecor_digital_clock_inv.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.28125, -0.25, 0.4375, 0.3125, 0.25, 0.5},
+ }
+ },
+ walkable = false,
+ sounds = default.node_sound_wood_defaults(),
+ groups = {snappy=3},
+})
+
+homedecor.register("alarm_clock", {
+ description = "Alarm clock",
+ tiles = {
+ "homedecor_alarm_clock_top.png",
+ "homedecor_alarm_clock_bottom.png",
+ "homedecor_alarm_clock_sides.png",
+ "homedecor_alarm_clock_sides.png^[transformFX",
+ "homedecor_alarm_clock_back.png",
+ "homedecor_alarm_clock_front.png"
+ },
+ inventory_image = "homedecor_alarm_clock_inv.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -9/32, -16/32, 7/32, 10/32, -5/32, 16/32 },
+ }
+ },
+ walkable = false,
+ sounds = default.node_sound_wood_defaults(),
+ groups = {snappy=3},
+})
+
+local gf_cbox = {
+ type = "fixed",
+ fixed = { -7/16, -8/16, -7/16, 7/16, 24/16, 7/16 }
+}
+
+homedecor.register("grandfather_clock", {
+ description = "Grandfather Clock",
+ mesh = "homedecor_grandfather_clock.obj",
+ tiles = {
+ "default_glass.png",
+ "homedecor_grandfather_clock_face.png",
+ "homedecor_generic_wood_luxury.png",
+ "homedecor_grandfather_clock_face_edge.png",
+ "homedecor_generic_metal_brass.png"
+ },
+ inventory_image = "homedecor_grandfather_clock_inv.png",
+ groups = { snappy = 3 },
+ selection_box = gf_cbox,
+ collision_box = gf_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ expand = { top="placeholder" },
+ on_rotate = screwdriver.rotate_simple
+})
+
+minetest.register_alias("homedecor:grandfather_clock_bottom", "homedecor:grandfather_clock")
+minetest.register_alias("homedecor:grandfather_clock_top", "air")
diff --git a/homedecor_modpack/homedecor/cobweb.lua b/homedecor_modpack/homedecor/cobweb.lua
new file mode 100644
index 0000000..9731032
--- /dev/null
+++ b/homedecor_modpack/homedecor/cobweb.lua
@@ -0,0 +1,167 @@
+minetest.register_node("homedecor:cobweb_corner", {
+ description = "Cobweb",
+ drawtype = "torchlike",
+ tiles = { "homedecor_cobweb_torchlike.png" },
+ inventory_image = "homedecor_cobweb.png",
+ wield_image = "homedecor_cobweb.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ liquid_viscosity = 8,
+ liquidtype = "source",
+ liquid_alternative_flowing = "homedecor:cobweb_corner",
+ liquid_alternative_source = "homedecor:cobweb_corner",
+ liquid_renewable = false,
+ liquid_range = 0,
+ walkable = false,
+ selection_box = { type = "regular" },
+ visual_scale = 1.4,
+ groups = { snappy = 3, liquid=3 },
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ homedecor.rotate_cobweb(pos)
+ end
+})
+
+minetest.register_node("homedecor:cobweb_centered", {
+ description = "Cobweb",
+ drawtype = "nodebox",
+ tiles = { "homedecor_cobweb.png" },
+ inventory_image = "homedecor_cobweb.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ liquid_viscosity = 8,
+ liquidtype = "source",
+ liquid_alternative_flowing = "homedecor:cobweb_centered",
+ liquid_alternative_source = "homedecor:cobweb_centered",
+ liquid_renewable = false,
+ liquid_range = 0,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.1, 0.5, 0.5, 0.1 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0 }
+ },
+ groups = { snappy = 3, liquid=3, not_in_creative_inventory = 1 },
+ drop = "homedecor:cobweb_corner"
+})
+
+minetest.register_node("homedecor:cobweb_flat", {
+ description = "Cobweb",
+ drawtype = "nodebox",
+ tiles = { "homedecor_cobweb.png" },
+ inventory_image = "homedecor_cobweb.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ liquid_viscosity = 8,
+ liquidtype = "source",
+ liquid_alternative_flowing = "homedecor:cobweb_flat",
+ liquid_alternative_source = "homedecor:cobweb_flat",
+ liquid_renewable = false,
+ liquid_range = 0,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, 0.495, 0.5, 0.5, 0.495 }
+ },
+ groups = { snappy = 3, liquid=3, not_in_creative_inventory = 1 },
+ drop = "homedecor:cobweb_corner"
+})
+
+minetest.register_node("homedecor:cobweb_plantlike", {
+ description = "Cobweb",
+ drawtype = "plantlike",
+ tiles = { "homedecor_cobweb_plantlike.png" },
+ inventory_image = "homedecor_cobweb.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ liquid_viscosity = 8,
+ liquidtype = "source",
+ liquid_alternative_flowing = "homedecor:cobweb_plantlike",
+ liquid_alternative_source = "homedecor:cobweb_plantlike",
+ liquid_renewable = false,
+ liquid_range = 0,
+ walkable = false,
+ selection_box = { type = "regular" },
+ visual_scale = 1.189,
+ groups = { snappy = 3, liquid=3, not_in_creative_inventory = 1 },
+ drop = "homedecor:cobweb_corner"
+})
+
+-- helper function to rotate the cobweb after it's placed
+
+function homedecor.rotate_cobweb(pos)
+ local wall_xm = minetest.get_node({ x=pos.x-1, y=pos.y, z=pos.z }).name
+ local wall_xp = minetest.get_node({ x=pos.x+1, y=pos.y, z=pos.z }).name
+ local wall_zm = minetest.get_node({ x=pos.x, y=pos.y, z=pos.z-1}).name
+ local wall_zp = minetest.get_node({ x=pos.x, y=pos.y, z=pos.z+1}).name
+
+ local iswall_xm = (wall_xm ~= "air" and not string.find(wall_xm, "homedecor:cobweb"))
+ local iswall_xp = (wall_xp ~= "air" and not string.find(wall_xp, "homedecor:cobweb"))
+ local iswall_zm = (wall_zm ~= "air" and not string.find(wall_zm, "homedecor:cobweb"))
+ local iswall_zp = (wall_zp ~= "air" and not string.find(wall_zp, "homedecor:cobweb"))
+
+ -- only xm+zp, or only xp+zm means on-floor torchlike
+
+ if (iswall_xm and iswall_zp and not iswall_xp and not iswall_zm)
+ or (iswall_xp and iswall_zm and not iswall_xm and not iswall_zp) then
+ minetest.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 1})
+
+ -- only xm+zm, or only xp+zp means on-ceiling torchlike
+
+ elseif (iswall_xm and iswall_zm and not iswall_xp and not iswall_zp)
+ or (iswall_xp and iswall_zp and not iswall_xm and not iswall_zm) then
+ minetest.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 0})
+
+ -- only xm+xp means nodebox (not rotated, 0 degrees)
+
+ elseif iswall_xm and iswall_xp and not iswall_zm and not iswall_zp then
+ minetest.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 0})
+
+ -- only zm+zp means nodebox rotated to 90 degrees
+
+ elseif iswall_zm and iswall_zp and not iswall_xm and not iswall_xp then
+ minetest.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 1})
+
+ -- ok, there aren't any simple two-wall corners or opposing walls.
+ -- Are there any standalone walls?
+
+ elseif iswall_xm and not iswall_xp and not iswall_zm and not iswall_zp then
+ minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 3})
+
+ elseif iswall_xp and not iswall_xm and not iswall_zm and not iswall_zp then
+ minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 1})
+
+ elseif iswall_zm and not iswall_xm and not iswall_xp and not iswall_zp then
+ minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 2})
+
+ elseif iswall_zp and not iswall_xm and not iswall_xp and not iswall_zm then
+ minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 0})
+
+ -- if all else fails, place the plantlike version as a fallback.
+
+ else
+ minetest.set_node(pos, {name = "homedecor:cobweb_plantlike", param2 = 0})
+ end
+
+end
+
+-- convert existing cobwebs
+
+minetest.register_abm({
+ nodenames = { "homedecor:cobweb" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ homedecor.rotate_cobweb(pos)
+ end
+})
diff --git a/homedecor_modpack/homedecor/copyright.txt b/homedecor_modpack/homedecor/copyright.txt
new file mode 100644
index 0000000..fa4892f
--- /dev/null
+++ b/homedecor_modpack/homedecor/copyright.txt
@@ -0,0 +1,18 @@
+Most code and all textures by Vanessa Ezekowitz.
+
+Some code copied and modified from the game's default mods (especially
+doors) and ironzorg's flowers mod.
+
+Licenses:
+* For the lua code, LGPL.
+* For the door open/close sound, CC-By-SA 3.0 by Slanesh on freesound.org
+ http://freesound.org/people/Slanesh/sounds/31768/
+* For the gate open/close sound, CC0, by j1987 on freesound.org
+ http://freesound.org/people/j1987/sounds/106116/
+* For the doorbell sound, CC0 by guitarguy1985 on freesound.org
+ http://freesound.org/people/guitarguy1985/sounds/69384/
+* For the book sound, Public Domain by mckinneysound's on http://www.freesfx.co.uk/
+ http://www.freesfx.co.uk/sfx/book?p=3
+* For the phone ring, Public Domain by andyt's on http://www.freesfx.co.uk/
+ http://www.freesfx.co.uk/sfx/phone?p=5
+* For all images and everything else, WTFPL.
diff --git a/homedecor_modpack/homedecor/crafts.lua b/homedecor_modpack/homedecor/crafts.lua
new file mode 100644
index 0000000..80ba5e7
--- /dev/null
+++ b/homedecor_modpack/homedecor/crafts.lua
@@ -0,0 +1,3417 @@
+-- Crafting for homedecor mod (includes folding) by Vanessa Ezekowitz
+--
+-- Mostly my own code; overall template borrowed from game default
+
+local S = homedecor.gettext
+
+-- misc craftitems
+
+minetest.register_craftitem("homedecor:terracotta_base", {
+ description = S("Uncooked Terracotta Base"),
+ inventory_image = "homedecor_terracotta_base.png",
+})
+
+minetest.register_craftitem("homedecor:roof_tile_terracotta", {
+ description = S("Terracotta Roof Tile"),
+ inventory_image = "homedecor_roof_tile_terracotta.png",
+})
+
+minetest.register_craftitem("homedecor:oil_extract", {
+ description = S("Oil extract"),
+ inventory_image = "homedecor_oil_extract.png",
+})
+
+minetest.register_craftitem("homedecor:paraffin", {
+ description = S("Unprocessed paraffin"),
+ inventory_image = "homedecor_paraffin.png",
+})
+
+minetest.register_alias("homedecor:plastic_base", "homedecor:paraffin")
+
+minetest.register_craftitem("homedecor:plastic_sheeting", {
+ description = S("Plastic sheet"),
+ inventory_image = "homedecor_plastic_sheeting.png",
+})
+
+minetest.register_craftitem("homedecor:plastic_strips", {
+ description = S("Plastic strips"),
+ inventory_image = "homedecor_plastic_strips.png",
+})
+
+minetest.register_craftitem("homedecor:drawer_small", {
+ description = S("Small Wooden Drawer"),
+ inventory_image = "homedecor_drawer_small.png",
+})
+
+minetest.register_craftitem("homedecor:ic", {
+ description = S("Simple Integrated Circuit"),
+ inventory_image = "homedecor_ic.png",
+})
+
+minetest.register_craftitem("homedecor:heating_element", {
+ description = S("Heating element"),
+ inventory_image = "homedecor_heating_element.png",
+})
+
+minetest.register_craftitem("homedecor:motor", {
+ description = S("Motor"),
+ inventory_image = "homedecor_motor.png",
+})
+
+minetest.register_craftitem("homedecor:power_crystal", {
+ description = S("Power Crystal"),
+ inventory_image = "homedecor_power_crystal.png",
+})
+
+minetest.register_craftitem("homedecor:blank_canvas", {
+ description = S("Blank Canvas"),
+ inventory_image = "homedecor_blank_canvas.png"
+})
+
+minetest.register_craftitem("homedecor:vcr", {
+ description = S("VCR"),
+ inventory_image = "homedecor_vcr.png"
+})
+
+minetest.register_craftitem("homedecor:dvd_player", {
+ description = S("DVD Player"),
+ inventory_image = "homedecor_dvd_player.png"
+})
+
+minetest.register_craftitem("homedecor:copper_wire", {
+ description = S("Spool of copper wire"),
+ inventory_image = "homedecor_copper_wire.png"
+})
+
+minetest.register_craftitem("homedecor:steel_wire", {
+ description = S("Spool of steel wire"),
+ inventory_image = "homedecor_steel_wire.png"
+})
+
+minetest.register_craftitem("homedecor:speaker_driver", {
+ description = S("Speaker driver"),
+ inventory_image = "homedecor_speaker_driver_inv.png"
+})
+
+minetest.register_craftitem("homedecor:fan_blades", {
+ description = S("Fan blades"),
+ inventory_image = "homedecor_fan_blades.png"
+})
+
+minetest.register_craftitem("homedecor:copper_strip", {
+ description = S("Copper Strip"),
+ inventory_image = "homedecor_copper_strip.png"
+})
+
+minetest.register_craftitem("homedecor:steel_strip", {
+ description = S("Steel Strip"),
+ inventory_image = "homedecor_steel_strip.png"
+})
+
+minetest.register_craftitem(":glooptest:chainlink", {
+ description = "Steel chainlink",
+ inventory_image = "homedecor_chainlink_steel.png"
+})
+
+minetest.register_craftitem("homedecor:chainlink_brass", {
+ description = "Brass chainlink",
+ inventory_image = "homedecor_chainlink_brass.png"
+})
+
+minetest.register_craftitem("homedecor:soda_can", {
+ description = "Soda Can",
+ inventory_image = "homedecor_soda_can.png",
+ on_use = minetest.item_eat(2),
+})
+
+minetest.register_craftitem("homedecor:coin", {
+ description = "Gold Coin (for soda vending machine)",
+ inventory_image = "homedecor_coin.png",
+})
+
+-- alternate crafting if mesecons is/isn't installed
+
+if not minetest.get_modpath("mesecons") then
+
+ minetest.register_craftitem(":mesecons_materials:silicon", {
+ description = S("Silicon lump"),
+ inventory_image = "homedecor_silicon.png",
+ })
+
+ minetest.register_craft( {
+ output = "mesecons_materials:silicon 4",
+ recipe = {
+ { "default:sand", "default:sand" },
+ { "default:sand", "default:steel_ingot" },
+ },
+ })
+
+end
+
+-- alternate crafting if technic is/isn't installed
+if not minetest.get_modpath("technic") then
+ minetest.register_craftitem(":technic:brass_ingot", {
+ description = S("Brass Ingot"),
+ inventory_image = "homedecor_brass_ingot.png",
+ })
+
+ if minetest.get_modpath("moreores") then
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "technic:brass_ingot 2",
+ recipe = {
+ "moreores:silver_ingot",
+ "default:copper_ingot",
+ },
+ })
+ else
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "technic:brass_ingot 3",
+ recipe = {
+ "default:steel_ingot",
+ "default:copper_ingot",
+ "default:gold_ingot",
+ },
+ })
+ end
+end
+
+minetest.register_alias("homedecor:brass_ingot", "technic:brass_ingot")
+
+-- the actual crafts
+
+minetest.register_craft( {
+ output = "homedecor:copper_strip 12",
+ recipe = {
+ { "", "default:copper_ingot", "" },
+ { "default:copper_ingot", "", "" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:steel_strip 12",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "default:steel_ingot", "", "" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:fan_blades 2",
+ recipe = {
+ { "", "homedecor:plastic_sheeting", "" },
+ { "", "default:steel_ingot", "" },
+ { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:steel_wire 4",
+ recipe = {
+ { "", "homedecor:plastic_sheeting", "" },
+ { "default:steel_ingot", "homedecor:plastic_sheeting", "default:steel_ingot" },
+ { "", "homedecor:plastic_sheeting", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:copper_wire 4",
+ recipe = {
+ { "", "homedecor:plastic_sheeting", "" },
+ { "default:copper_ingot", "homedecor:plastic_sheeting", "default:copper_ingot" },
+ { "", "homedecor:plastic_sheeting", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:plastic_strips 3",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:heating_element 2",
+ recipe = {
+ { "default:copper_ingot", "default:mese_crystal_fragment", "default:copper_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:motor 2",
+ recipe = {
+ { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" },
+ { "default:copper_ingot", "default:steel_ingot", "default:steel_ingot" },
+ { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft({
+ --type = "shapeless",
+ output = "homedecor:power_crystal 2",
+ recipe = {
+ { "default:mese_crystal_fragment", "default:torch", "default:mese_crystal_fragment" },
+ { "default:diamond", "default:gold_ingot", "default:diamond" }
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:power_crystal",
+ burntime = 50,
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:terracotta_base 8",
+ recipe = {
+ "default:dirt",
+ "default:clay_lump",
+ "bucket:bucket_water"
+ },
+ replacements = { {"bucket:bucket_water", "bucket:bucket_empty"}, },
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:roof_tile_terracotta",
+ recipe = "homedecor:terracotta_base",
+})
+
+minetest.register_craft( {
+ output = "homedecor:shingles_terracotta",
+ recipe = {
+ { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"},
+ { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"},
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:roof_tile_terracotta 8",
+ recipe = {
+ { "homedecor:shingles_terracotta", "homedecor:shingles_terracotta" }
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:flower_pot_terracotta",
+ recipe = {
+ { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" },
+ { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta" },
+ },
+})
+
+--
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:oil_extract 4",
+ recipe = {
+ "group:leaves",
+ "group:leaves",
+ "group:leaves",
+ "group:leaves",
+ "group:leaves",
+ "group:leaves"
+ }
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:paraffin",
+ recipe = "homedecor:oil_extract",
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:plastic_sheeting",
+ recipe = "homedecor:paraffin",
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:oil_extract",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:paraffin",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:plastic_sheeting",
+ burntime = 30,
+})
+
+minetest.register_craft( {
+ output = "homedecor:flower_pot_green",
+ recipe = {
+ { "", "dye:dark_green", "" },
+ { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:flower_pot_black",
+ recipe = {
+ { "dye:black", "dye:black", "dye:black" },
+ { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ },
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:projection_screen 3",
+ recipe = {
+ { "", "default:glass", "" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:projection_screen",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:ceiling_paint 20",
+ recipe = {
+ "dye:white",
+ "dye:white",
+ "default:sand",
+ "bucket:bucket_water",
+ },
+ replacements = { { "bucket:bucket_water","bucket:bucket_empty" } }
+})
+
+minetest.register_craft( {
+ output = "homedecor:ceiling_tile 10",
+ recipe = {
+ { "", "dye:white", "" },
+ { "default:steel_ingot", "default:stone", "default:steel_ingot" },
+
+ },
+})
+
+
+-- =======================================================
+-- Items/recipes not requiring smelting of anything new
+
+minetest.register_craft( {
+ output = "homedecor:glass_table_small_round_b 15",
+ recipe = {
+ { "", "default:glass", "" },
+ { "default:glass", "default:glass", "default:glass" },
+ { "", "default:glass", "" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:glass_table_small_square_b 2",
+ recipe = {
+ {"homedecor:glass_table_small_round", "homedecor:glass_table_small_round" },
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:glass_table_large_b 2",
+ recipe = {
+ { "homedecor:glass_table_small_square", "homedecor:glass_table_small_square" },
+ }
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:wood_table_small_round_b 15",
+ recipe = {
+ { "", "group:wood", "" },
+ { "group:wood", "group:wood", "group:wood" },
+ { "", "group:wood", "" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:wood_table_small_square_b 2",
+ recipe = {
+ { "homedecor:wood_table_small_round","homedecor:wood_table_small_round" },
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:wood_table_large_b 2",
+ recipe = {
+ { "homedecor:wood_table_small_square", "homedecor:wood_table_small_square" },
+ }
+})
+
+--
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:wood_table_small_round_b",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:wood_table_small_square_b",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:wood_table_large_b",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:shingles_asphalt 6",
+ recipe = {
+ { "building_blocks:gravel_spread", "dye:black", "building_blocks:gravel_spread" },
+ { "group:sand", "dye:black", "group:sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ },
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:shingles_wood 12",
+ recipe = {
+ { "group:stick", "group:wood"},
+ { "group:wood", "group:stick"},
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:shingles_wood 12",
+ recipe = {
+ { "group:wood", "group:stick"},
+ { "group:stick", "group:wood"},
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shingles_wood",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:skylight 4",
+ recipe = {
+ { "homedecor:glass_table_large", "homedecor:glass_table_large" },
+ { "homedecor:glass_table_large", "homedecor:glass_table_large" },
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:skylight_frosted",
+ recipe = {
+ "dye:white",
+ "homedecor:skylight"
+ },
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:skylight",
+ recipe = "homedecor:skylight_frosted",
+})
+
+-- Various colors of shutters
+
+minetest.register_craft( {
+ output = "homedecor:shutter_oak 2",
+ recipe = {
+ { "group:stick", "group:stick" },
+ { "group:stick", "group:stick" },
+ { "group:stick", "group:stick" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_oak",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_black 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:black"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_black",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_dark_grey 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:dark_grey"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_dark_grey",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_grey 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:grey"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_grey",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_white 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:white"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_white",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_mahogany 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:brown"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_mahogany",
+ burntime = 30,
+})
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_red 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:red"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_red",
+ burntime = 30,
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_yellow 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:yellow"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_yellow",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_forest_green 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:dark_green"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_forest_green",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_light_blue 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "unifieddyes:light_blue"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_light_blue",
+ burntime = 30,
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:shutter_violet 4",
+ recipe = {
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "homedecor:shutter_oak",
+ "dye:violet"
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_violet",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:drawer_small",
+ recipe = {
+ { "group:wood", "default:steel_ingot", "group:wood" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:drawer_small",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:nightstand_oak_one_drawer",
+ recipe = {
+ { "homedecor:drawer_small" },
+ { "group:wood" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:nightstand_oak_one_drawer",
+ burntime = 30,
+})
+
+minetest.register_craft( {
+ output = "homedecor:nightstand_oak_two_drawers",
+ recipe = {
+ { "homedecor:drawer_small" },
+ { "homedecor:drawer_small" },
+ { "group:wood" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:nightstand_oak_two_drawers",
+ recipe = {
+ { "homedecor:nightstand_oak_one_drawer" },
+ { "homedecor:drawer_small" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:nightstand_oak_two_drawers",
+ burntime = 30,
+})
+
+--
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:nightstand_mahogany_one_drawer",
+ recipe = {
+ "homedecor:nightstand_oak_one_drawer",
+ "dye:brown",
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:nightstand_mahogany_one_drawer",
+ burntime = 30,
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:nightstand_mahogany_two_drawers",
+ recipe = {
+ "homedecor:nightstand_oak_two_drawers",
+ "dye:brown",
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:nightstand_mahogany_two_drawers",
+ burntime = 30,
+})
+
+-- Table legs
+
+minetest.register_craft( {
+ output = "homedecor:table_legs_wrought_iron 3",
+ recipe = {
+ { "", "default:iron_lump", "" },
+ { "", "default:iron_lump", "" },
+ { "default:iron_lump", "default:iron_lump", "default:iron_lump" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:table_legs_brass 3",
+ recipe = {
+ { "", "technic:brass_ingot", "" },
+ { "", "technic:brass_ingot", "" },
+ { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:utility_table_legs",
+ recipe = {
+ { "group:stick", "group:stick", "group:stick" },
+ { "group:stick", "", "group:stick" },
+ { "group:stick", "", "group:stick" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:utility_table_legs",
+ burntime = 30,
+})
+
+-- vertical poles/lampposts
+
+minetest.register_craft( {
+ output = "homedecor:pole_brass 4",
+ recipe = {
+ { "", "technic:brass_ingot", "" },
+ { "", "technic:brass_ingot", "" },
+ { "", "technic:brass_ingot", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:pole_wrought_iron 4",
+ recipe = {
+ { "default:iron_lump", },
+ { "default:iron_lump", },
+ { "default:iron_lump", },
+ },
+})
+
+-- Home electronics
+
+minetest.register_craft( {
+ output = "homedecor:ic 4",
+ recipe = {
+ { "mesecons_materials:silicon", "mesecons_materials:silicon" },
+ { "mesecons_materials:silicon", "default:copper_ingot" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:television",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "moreblocks:glow_glass", "homedecor:plastic_sheeting" },
+ { "homedecor:ic", "homedecor:ic", "homedecor:ic" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:television",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" },
+ { "homedecor:ic", "homedecor:power_crystal", "homedecor:ic" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:stereo",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "homedecor:ic", "default:steel_ingot" },
+ },
+})
+
+-- ===========================================================
+-- Recipes that require materials from wool (cotton alternate)
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:rug_small 8",
+ recipe = {
+ "wool:red",
+ "wool:yellow",
+ "wool:blue",
+ "wool:black"
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:rug_persian 8",
+ recipe = {
+ { "", "wool:yellow", "" },
+ { "wool:red", "wool:blue", "wool:red" },
+ { "", "wool:yellow", "" }
+ },
+})
+
+-- cotton versions:
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:rug_small 8",
+ recipe = {
+ "cotton:red",
+ "cotton:yellow",
+ "cotton:blue",
+ "cotton:black"
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:rug_persian 8",
+ recipe = {
+ { "", "cotton:yellow", "" },
+ { "cotton:red", "cotton:blue", "cotton:red" },
+ { "", "cotton:yellow", "" }
+ },
+})
+
+-- fuel recipes for same
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:rug_small",
+ burntime = 30,
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:rug_large 2",
+ recipe = {
+ "homedecor:rug_small",
+ "homedecor:rug_small",
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:rug_large",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:rug_persian",
+ burntime = 30,
+})
+
+-- Speakers
+
+minetest.register_craft( {
+ output = "homedecor:speaker_driver 2",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "default:paper", "homedecor:copper_wire", "default:iron_lump" },
+ { "", "default:steel_ingot", "" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:speaker_small",
+ recipe = {
+ { "wool:black", "homedecor:speaker_driver", "group:wood" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:speaker",
+ recipe = {
+ { "wool:black", "homedecor:speaker_driver", "group:wood" },
+ { "wool:black", "homedecor:speaker_driver", "group:wood" },
+ { "wool:black", "group:wood", "group:wood" },
+ },
+})
+
+-- cotton version
+
+minetest.register_craft( {
+ output = "homedecor:speaker_small",
+ recipe = {
+ { "cotton:black", "homedecor:speaker_driver", "group:wood" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:speaker",
+ recipe = {
+ { "cotton:black", "homedecor:speaker_driver", "group:wood" },
+ { "cotton:black", "homedecor:speaker_driver", "group:wood" },
+ { "cotton:black", "group:wood", "group:wood" },
+ },
+})
+
+-- Curtains
+
+local curtaincolors = {
+ "red",
+ "green",
+ "blue",
+ "white",
+ "pink",
+ "violet"
+}
+
+for c in ipairs(curtaincolors) do
+ local color = curtaincolors[c]
+ minetest.register_craft( {
+ output = "homedecor:curtain_"..color.." 3",
+ recipe = {
+ { "wool:"..color, "", ""},
+ { "wool:"..color, "", ""},
+ { "wool:"..color, "", ""},
+ },
+ })
+end
+
+local mats = {
+ { "brass", "homedecor:pole_brass" },
+ { "wrought_iron", "homedecor:pole_wrought_iron" },
+ { "wood", "group:stick" }
+}
+
+for i in ipairs(mats) do
+ local material = mats[i][1]
+ local ingredient = mats[i][2]
+ minetest.register_craft( {
+ output = "homedecor:curtainrod_"..material.." 3",
+ recipe = {
+ { ingredient, ingredient, ingredient },
+ },
+ })
+end
+
+-- Recycling recipes
+
+-- Some glass objects recycle via the glass fragments item/recipe in the Vessels mod.
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "vessels:glass_fragments",
+ recipe = {
+ "homedecor:glass_table_small_round",
+ "homedecor:glass_table_small_round",
+ "homedecor:glass_table_small_round"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "vessels:glass_fragments",
+ recipe = {
+ "homedecor:glass_table_small_square",
+ "homedecor:glass_table_small_square",
+ "homedecor:glass_table_small_square"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "vessels:glass_fragments",
+ recipe = {
+ "homedecor:glass_table_large",
+ "homedecor:glass_table_large",
+ "homedecor:glass_table_large"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "vessels:glass_fragments 2",
+ recipe = {
+ "homedecor:skylight",
+ "homedecor:skylight",
+ "homedecor:skylight",
+ "homedecor:skylight",
+ "homedecor:skylight",
+ "homedecor:skylight"
+ }
+})
+
+-- Wooden tabletops can turn into sticks
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:stick 4",
+ recipe = {
+ "homedecor:wood_table_small_round",
+ "homedecor:wood_table_small_round",
+ "homedecor:wood_table_small_round"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:stick 4",
+ recipe = {
+ "homedecor:wood_table_small_square",
+ "homedecor:wood_table_small_square",
+ "homedecor:wood_table_small_square"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:stick 4",
+ recipe = {
+ "homedecor:wood_table_large",
+ "homedecor:wood_table_large",
+ "homedecor:wood_table_large"
+ }
+})
+
+-- Kitchen stuff
+
+minetest.register_craft({
+ output = "homedecor:oven_steel",
+ recipe = {
+ {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", },
+ {"default:steel_ingot", "moreblocks:iron_glass", "default:steel_ingot", },
+ {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:oven_steel",
+ recipe = {
+ {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", },
+ {"default:steel_ingot", "default:glass", "default:steel_ingot", },
+ {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", },
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:oven",
+ recipe = {
+ "homedecor:oven_steel",
+ "dye:white",
+ "dye:white",
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:microwave_oven 2",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", },
+ {"default:steel_ingot", "moreblocks:iron_glass", "homedecor:ic", },
+ {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:microwave_oven 2",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", },
+ {"default:steel_ingot", "default:glass", "homedecor:ic", },
+ {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:refrigerator_steel",
+ recipe = {
+ {"default:steel_ingot", "homedecor:glowlight_small_cube_white", "default:steel_ingot", },
+ {"default:steel_ingot", "default:copperblock", "default:steel_ingot", },
+ {"default:steel_ingot", "default:clay", "default:steel_ingot", },
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:refrigerator_white",
+ recipe = {
+ "homedecor:refrigerator_steel",
+ "dye:white",
+ "dye:white",
+ "dye:white",
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet",
+ recipe = {
+ {"group:wood", "group:stick", "group:wood", },
+ {"group:wood", "group:stick", "group:wood", },
+ {"group:wood", "group:stick", "group:wood", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet_steel",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ {"", "homedecor:kitchen_cabinet", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet_steel",
+ recipe = {
+ {"moreblocks:slab_steelblock_1"},
+ { "homedecor:kitchen_cabinet" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet_marble",
+ recipe = {
+ {"building_blocks:slab_marble"},
+ {"homedecor:kitchen_cabinet"},
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet_marble",
+ recipe = {
+ {"technic:slab_marble_1"},
+ {"homedecor:kitchen_cabinet"},
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet_granite",
+ recipe = {
+ {"technic:slab_granite_1"},
+ {"homedecor:kitchen_cabinet"},
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:kitchen_cabinet_half 2",
+ recipe = { "homedecor:kitchen_cabinet" }
+})
+
+minetest.register_craft({
+ output = "homedecor:kitchen_cabinet_with_sink",
+ recipe = {
+ {"group:wood", "default:steel_ingot", "group:wood", },
+ {"group:wood", "default:steel_ingot", "group:wood", },
+ {"group:wood", "group:stick", "group:wood", },
+ }
+})
+
+------- Lighting
+
+-- candles
+
+minetest.register_craft({
+ output = "homedecor:candle_thin 4",
+ recipe = {
+ {"farming:string" },
+ {"homedecor:paraffin" }
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:candle 2",
+ recipe = {
+ {"farming:string" },
+ {"homedecor:paraffin" },
+ {"homedecor:paraffin" }
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:wall_sconce 2",
+ recipe = {
+ {"default:iron_lump", "", ""},
+ {"default:iron_lump", "homedecor:candle", ""},
+ {"default:iron_lump", "", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:candlestick_wrought_iron",
+ recipe = {
+ {""},
+ {"homedecor:candle_thin"},
+ {"default:iron_lump"},
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:candlestick_brass",
+ recipe = {
+ {""},
+ {"homedecor:candle_thin"},
+ {"technic:brass_ingot"},
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:oil_lamp",
+ recipe = {
+ { "", "vessels:glass_bottle", "" },
+ { "", "farming:string", "" },
+ { "default:steel_ingot", "homedecor:oil_extract", "default:steel_ingot" }
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:oil_lamp_tabletop",
+ recipe = {
+ { "", "vessels:glass_bottle", "" },
+ { "", "farming:string", "" },
+ { "default:iron_lump", "homedecor:oil_extract", "default:iron_lump" }
+ }
+})
+
+-- Wrought-iron wall latern
+
+minetest.register_craft({
+ output = "homedecor:ground_lantern",
+ recipe = {
+ { "default:iron_lump", "default:iron_lump", "default:iron_lump" },
+ { "default:iron_lump", "default:torch", "default:iron_lump" },
+ { "", "default:iron_lump", "" }
+ }
+})
+
+-- wood-lattice lamps
+
+minetest.register_craft( {
+ output = "homedecor:lattice_lantern_large 2",
+ recipe = {
+ { "dye:black", "dye:yellow", "dye:black" },
+ { "group:stick", "building_blocks:woodglass", "group:stick" },
+ { "group:stick", "homedecor:power_crystal", "group:stick" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:lattice_lantern_small 8",
+ recipe = {
+ { "homedecor:lattice_lantern_large" },
+ },
+})
+
+-- yellow glowlights
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_yellow 6",
+ recipe = {
+ {"default:glass", "homedecor:power_crystal", "default:glass", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_yellow 6",
+ recipe = {
+ {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_quarter_yellow 6",
+ recipe = {
+ {"homedecor:glowlight_half_yellow", "homedecor:glowlight_half_yellow", "homedecor:glowlight_half_yellow", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_small_cube_yellow 16",
+ recipe = {
+ {"default:glass" },
+ {"homedecor:power_crystal" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_small_cube_yellow 16",
+ recipe = {
+ {"moreblocks:glow_glass" },
+ {"moreblocks:super_glow_glass" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_small_cube_yellow 4",
+ recipe = {
+ {"homedecor:glowlight_half_yellow" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_yellow",
+ recipe = {
+ {"homedecor:glowlight_small_cube_yellow","homedecor:glowlight_small_cube_yellow"},
+ {"homedecor:glowlight_small_cube_yellow","homedecor:glowlight_small_cube_yellow"}
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_yellow",
+ type = "shapeless",
+ recipe = {
+ "homedecor:glowlight_quarter_yellow",
+ "homedecor:glowlight_quarter_yellow"
+ }
+})
+
+-- white
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_white 6",
+ recipe = {
+ { "dye:white", "dye:white", "dye:white" },
+ { "default:glass", "homedecor:power_crystal", "default:glass", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_white 6",
+ recipe = {
+ { "dye:white", "dye:white", "dye:white" },
+ {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", },
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:glowlight_half_white 2",
+ recipe = {
+ "dye:white",
+ "homedecor:glowlight_half_yellow",
+ "homedecor:glowlight_half_yellow",
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_quarter_white 6",
+ recipe = {
+ {"homedecor:glowlight_half_white", "homedecor:glowlight_half_white", "homedecor:glowlight_half_white", },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_small_cube_white 8",
+ recipe = {
+ { "dye:white" },
+ { "default:glass" },
+ { "homedecor:power_crystal" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_small_cube_white 8",
+ recipe = {
+ {"dye:white" },
+ {"moreblocks:super_glow_glass" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_small_cube_white 4",
+ recipe = {
+ {"homedecor:glowlight_half_white" },
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_white",
+ recipe = {
+ {"homedecor:glowlight_small_cube_white","homedecor:glowlight_small_cube_white"},
+ {"homedecor:glowlight_small_cube_white","homedecor:glowlight_small_cube_white"}
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:glowlight_half_white",
+ type = "shapeless",
+ recipe = {
+ "homedecor:glowlight_quarter_white",
+ "homedecor:glowlight_quarter_white"
+ }
+})
+
+----
+
+minetest.register_craft({
+ output = "homedecor:plasma_lamp",
+ recipe = {
+ {"", "default:glass", ""},
+ {"default:glass", "homedecor:power_crystal", "default:glass"},
+ {"", "default:glass", ""}
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:plasma_ball 2",
+ recipe = {
+ {"", "default:glass", ""},
+ {"default:glass", "default:copper_ingot", "default:glass"},
+ {"homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting"}
+ }
+})
+
+-- Brass/wrought iron fences
+
+
+minetest.register_craft( {
+ output = "homedecor:fence_brass 6",
+ recipe = {
+ { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" },
+ { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:fence_wrought_iron 6",
+ recipe = {
+ { "default:iron_lump","default:iron_lump","default:iron_lump" },
+ { "default:iron_lump","default:iron_lump","default:iron_lump" },
+ },
+})
+
+-- other types of fences
+
+minetest.register_craft( {
+ output = "homedecor:fence_wrought_iron_2 2",
+ recipe = {
+ { "homedecor:pole_wrought_iron", "default:iron_lump" },
+ { "homedecor:pole_wrought_iron", "default:iron_lump" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:fence_wrought_iron_2 2",
+ recipe = {
+ { "homedecor:pole_wrought_iron", "default:iron_lump" },
+ { "homedecor:pole_wrought_iron", "default:iron_lump" },
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_wrought_iron_2_corner",
+ recipe = {
+ "homedecor:fence_wrought_iron_2",
+ "homedecor:fence_wrought_iron_2"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_wrought_iron_2 2",
+ recipe = {
+ "homedecor:fence_wrought_iron_2_corner",
+ },
+})
+
+--
+
+minetest.register_craft( {
+ output = "homedecor:fence_picket 6",
+ recipe = {
+ { "group:stick", "group:stick", "group:stick" },
+ { "group:stick", "", "group:stick" },
+ { "group:stick", "group:stick", "group:stick" }
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_picket_corner",
+ recipe = {
+ "homedecor:fence_picket",
+ "homedecor:fence_picket"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_picket 2",
+ recipe = {
+ "homedecor:fence_picket_corner"
+ },
+})
+
+--
+
+
+minetest.register_craft( {
+ output = "homedecor:fence_picket_white 6",
+ recipe = {
+ { "group:stick", "group:stick", "group:stick" },
+ { "group:stick", "dye:white", "group:stick" },
+ { "group:stick", "group:stick", "group:stick" }
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_picket_corner_white",
+ recipe = {
+ "homedecor:fence_picket_white",
+ "homedecor:fence_picket_white"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_picket_white 2",
+ recipe = {
+ "homedecor:fence_picket_corner_white"
+ },
+})
+
+--
+
+
+minetest.register_craft( {
+ output = "homedecor:fence_privacy 6",
+ recipe = {
+ { "group:wood", "group:stick", "group:wood" },
+ { "group:wood", "", "group:wood" },
+ { "group:wood", "group:stick", "group:wood" }
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_privacy_corner",
+ recipe = {
+ "homedecor:fence_privacy",
+ "homedecor:fence_privacy"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_privacy 2",
+ recipe = {
+ "homedecor:fence_privacy_corner"
+ },
+})
+
+--
+
+
+minetest.register_craft( {
+ output = "homedecor:fence_barbed_wire 6",
+ recipe = {
+ { "group:stick", "homedecor:steel_wire", "group:stick" },
+ { "group:stick", "", "group:stick" },
+ { "group:stick", "homedecor:steel_wire", "group:stick" }
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_barbed_wire_corner",
+ recipe = { "homedecor:fence_barbed_wire", "homedecor:fence_barbed_wire" },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_barbed_wire 2",
+ recipe = { "homedecor:fence_barbed_wire_corner" },
+})
+
+--
+
+
+minetest.register_craft( {
+ output = "homedecor:fence_chainlink 9",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
+ { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" },
+ { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_chainlink_corner",
+ recipe = { "homedecor:fence_chainlink", "homedecor:fence_chainlink" },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_chainlink 2",
+ recipe = { "homedecor:fence_chainlink_corner" },
+})
+
+
+-- Gates
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:gate_picket_white_closed",
+ recipe = {
+ "homedecor:fence_picket_white"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_picket_white",
+ recipe = {
+ "homedecor:gate_picket_white_closed"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:gate_picket_closed",
+ recipe = {
+ "homedecor:fence_picket"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_picket",
+ recipe = {
+ "homedecor:gate_picket_closed"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:gate_barbed_wire_closed",
+ recipe = {
+ "homedecor:fence_barbed_wire"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_barbed_wire",
+ recipe = {
+ "homedecor:gate_barbed_wire_closed"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:gate_chainlink_closed",
+ recipe = {
+ "homedecor:fence_chainlink"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:fence_chainlink",
+ recipe = {
+ "homedecor:gate_chainlink_closed"
+ },
+})
+
+------ Doors
+
+-- plain wood, non-windowed
+
+minetest.register_craft( {
+ output = "homedecor:door_wood_plain_left 2",
+ recipe = {
+ { "group:wood", "group:wood", "" },
+ { "group:wood", "group:wood", "default:steel_ingot" },
+ { "group:wood", "group:wood", "" },
+ },
+})
+
+-- fancy exterior
+
+minetest.register_craft( {
+ output = "homedecor:door_exterior_fancy_left 2",
+ recipe = {
+ { "group:wood", "default:glass" },
+ { "group:wood", "group:wood" },
+ { "group:wood", "group:wood" },
+ },
+})
+
+-- wood and glass (grid style)
+
+-- bare
+
+minetest.register_craft( {
+ output = "homedecor:door_wood_glass_oak_left 2",
+ recipe = {
+ { "default:glass", "group:wood" },
+ { "group:wood", "default:glass" },
+ { "default:glass", "group:wood" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:door_wood_glass_oak_left 2",
+ recipe = {
+ { "group:wood", "default:glass" },
+ { "default:glass", "group:wood" },
+ { "group:wood", "default:glass" },
+ },
+})
+
+-- mahogany
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:door_wood_glass_mahogany_left 2",
+ recipe = {
+ "default:dirt",
+ "default:coal_lump",
+ "homedecor:door_wood_glass_oak_left",
+ "homedecor:door_wood_glass_oak_left"
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:door_wood_glass_mahogany_left 2",
+ recipe = {
+ "dye:brown",
+ "homedecor:door_wood_glass_oak_left",
+ "homedecor:door_wood_glass_oak_left"
+ },
+})
+
+-- white
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:door_wood_glass_white_left 2",
+ recipe = {
+ "dye:white",
+ "homedecor:door_wood_glass_oak_left",
+ "homedecor:door_wood_glass_oak_left"
+ },
+})
+
+-- Solid glass with metal handle
+
+minetest.register_craft( {
+ output = "homedecor:door_glass_left 2",
+ recipe = {
+ { "default:glass", "default:glass" },
+ { "default:glass", "default:steel_ingot" },
+ { "default:glass", "default:glass" },
+ },
+})
+
+-- Closet doors
+
+-- oak
+
+minetest.register_craft( {
+ output = "homedecor:door_closet_oak_left 2",
+ recipe = {
+ { "", "group:stick", "group:stick" },
+ { "default:steel_ingot", "group:stick", "group:stick" },
+ { "", "group:stick", "group:stick" },
+ },
+})
+
+-- mahogany
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:door_closet_mahogany_left 2",
+ recipe = {
+ "homedecor:door_closet_oak_left",
+ "homedecor:door_closet_oak_left",
+ "default:dirt",
+ "default:coal_lump",
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "homedecor:door_closet_mahogany_left 2",
+ recipe = {
+ "homedecor:door_closet_oak_left",
+ "homedecor:door_closet_oak_left",
+ "dye:brown"
+ },
+})
+
+-- wrought fence-like door
+
+minetest.register_craft( {
+ output = "homedecor:door_wrought_iron_left 2",
+ recipe = {
+ { "homedecor:pole_wrought_iron", "default:iron_lump" },
+ { "homedecor:pole_wrought_iron", "default:iron_lump" },
+ { "homedecor:pole_wrought_iron", "default:iron_lump" }
+ },
+})
+
+-- bedroom door
+
+minetest.register_craft( {
+ output = "homedecor:door_bedroom_left",
+ recipe = {
+ { "dye:white", "dye:white", "" },
+ { "homedecor:door_wood_plain_left", "technic:brass_ingot", "" },
+ { "", "", "" },
+ },
+})
+
+-- woodglass door
+
+minetest.register_craft( {
+ output = "homedecor:door_woodglass_left",
+ recipe = {
+ { "group:wood", "default:glass", "" },
+ { "group:wood", "default:glass", "technic:brass_ingot" },
+ { "group:wood", "group:wood", "" },
+ },
+})
+
+-- woodglass door type 2
+
+minetest.register_craft( {
+ output = "homedecor:door_woodglass2_left",
+ recipe = {
+ { "default:glass", "default:glass", "" },
+ { "group:wood", "group:wood", "default:iron_lump" },
+ { "group:wood", "group:wood", "" },
+ },
+})
+
+-- laundry stuff
+
+minetest.register_craft( {
+ output = "homedecor:washing_machine",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" },
+ { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" },
+ { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:washing_machine",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" },
+ { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" },
+ { "default:steel_ingot", "technic:motor", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dryer",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" },
+ { "default:steel_ingot", "bucket:bucket_empty", "homedecor:motor" },
+ { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dryer",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" },
+ { "default:steel_ingot", "bucket:bucket_empty", "technic:motor" },
+ { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:ironing_board",
+ recipe = {
+ { "wool:grey", "wool:grey", "wool:grey"},
+ { "", "default:steel_ingot", "" },
+ { "default:steel_ingot", "", "default:steel_ingot" }
+ },
+})
+
+-- dishwashers
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher",
+ recipe = {
+ { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", },
+ { "default:steel_ingot", "homedecor:shower_head", "homedecor:motor" },
+ { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher",
+ recipe = {
+ { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", },
+ { "default:steel_ingot", "homedecor:shower_head", "technic:motor" },
+ { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_wood",
+ recipe = {
+ { "stairs:slab_wood" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_wood",
+ recipe = {
+ { "moreblocks:slab_wood" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_wood",
+ recipe = {
+ { "moreblocks:slab_wood_1" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_steel",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
+ { "", "homedecor:dishwasher", "" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_steel",
+ recipe = {
+ { "moreblocks:slab_steelblock_1" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_marble",
+ recipe = {
+ { "building_blocks:slab_marble" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_marble",
+ recipe = {
+ { "technic:slab_marble_1" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:dishwasher_granite",
+ recipe = {
+ { "technic:slab_granite_1" },
+ { "homedecor:dishwasher" },
+ },
+})
+
+-- paintings
+
+minetest.register_craft({
+ output = "homedecor:blank_canvas",
+ recipe = {
+ { "", "group:stick", "" },
+ { "group:stick", "wool:white", "group:stick" },
+ { "", "group:stick", "" },
+ }
+})
+
+local painting_patterns = {
+ [1] = { { "brown", "red", "brown" },
+ { "dark_green", "red", "green" } },
+
+ [2] = { { "green", "yellow", "green" },
+ { "green", "yellow", "green" } },
+
+ [3] = { { "green", "pink", "green" },
+ { "brown", "pink", "brown" } },
+
+ [4] = { { "black", "orange", "grey" },
+ { "dark_green", "orange", "orange" } },
+
+ [5] = { { "blue", "orange", "yellow" },
+ { "green", "red", "brown" } },
+
+ [6] = { { "green", "red", "orange" },
+ { "orange", "yellow", "green" } },
+
+ [7] = { { "blue", "dark_green", "dark_green" },
+ { "green", "grey", "green" } },
+
+ [8] = { { "blue", "blue", "blue" },
+ { "green", "green", "green" } },
+
+ [9] = { { "blue", "blue", "dark_green" },
+ { "green", "grey", "dark_green" } },
+
+ [10] = { { "green", "white", "green" },
+ { "dark_green", "white", "dark_green" } },
+
+ [11] = { { "blue", "white", "blue" },
+ { "blue", "grey", "dark_green" } },
+
+ [12] = { { "green", "green", "green" },
+ { "grey", "grey", "green" } },
+
+ [13] = { { "blue", "blue", "grey" },
+ { "dark_green", "white", "white" } },
+
+ [14] = { { "red", "yellow", "blue" },
+ { "blue", "green", "violet" } },
+
+ [15] = { { "blue", "yellow", "blue" },
+ { "black", "black", "black" } },
+
+ [16] = { { "red", "orange", "blue" },
+ { "black", "dark_grey", "grey" } },
+
+ [17] = { { "orange", "yellow", "orange" },
+ { "black", "black", "black" } },
+
+ [18] = { { "grey", "dark_green", "grey" },
+ { "white", "white", "white" } },
+
+ [19] = { { "white", "brown", "green" },
+ { "green", "brown", "brown" } },
+
+ [20] = { { "blue", "blue", "blue" },
+ { "red", "brown", "grey" } }
+}
+
+for i,recipe in pairs(painting_patterns) do
+
+ local item1 = "dye:"..recipe[1][1]
+ local item2 = "dye:"..recipe[1][2]
+ local item3 = "dye:"..recipe[1][3]
+ local item4 = "dye:"..recipe[2][1]
+ local item5 = "dye:"..recipe[2][2]
+ local item6 = "dye:"..recipe[2][3]
+
+ minetest.register_craft({
+ output = "homedecor:painting_"..i,
+ recipe = {
+ { item1, item2, item3 },
+ { item4, item5, item6 },
+ {"", "homedecor:blank_canvas", "" }
+ }
+ })
+end
+
+-- more misc stuff here
+
+minetest.register_craft({
+ output = "homedecor:chimney 2",
+ recipe = {
+ { "default:clay_brick", "", "default:clay_brick" },
+ { "default:clay_brick", "", "default:clay_brick" },
+ { "default:clay_brick", "", "default:clay_brick" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:fishtank",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:glowlight_small_cube_white", "homedecor:plastic_sheeting" },
+ { "default:glass", "bucket:bucket_water", "default:glass" },
+ { "default:glass", "building_blocks:gravel_spread", "default:glass" },
+ },
+ replacements = { {"bucket:bucket_water", "bucket:bucket_empty"} }
+})
+
+minetest.register_craft({
+ output = "homedecor:towel_rod",
+ recipe = {
+ { "group:wood", "group:stick", "group:wood" },
+ { "", "building_blocks:terrycloth_towel", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:toilet_paper",
+ recipe = {
+ { "", "default:paper", "default:paper" },
+ { "group:wood", "group:stick", "default:paper" },
+ { "", "default:paper", "default:paper" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:medicine_cabinet",
+ recipe = {
+ { "group:stick", "default:glass", "group:stick" },
+ { "group:stick", "default:glass", "group:stick" },
+ { "group:stick", "default:glass", "group:stick" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:cardboard_box 2",
+ recipe = {
+ { "default:paper", "", "default:paper" },
+ { "default:paper", "default:paper", "default:paper" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:cardboard_box_big 2",
+ recipe = {
+ { "default:paper", "", "default:paper" },
+ { "default:paper", "", "default:paper" },
+ { "default:paper", "default:paper", "default:paper" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:desk",
+ recipe = {
+ { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" },
+ { "homedecor:drawer_small", "default:wood", "default:wood" },
+ { "homedecor:drawer_small", "", "default:wood" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:desk",
+ recipe = {
+ { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" },
+ { "homedecor:drawer_small", "default:wood", "default:wood" },
+ { "homedecor:drawer_small", "", "default:wood" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:filing_cabinet",
+ recipe = {
+ { "", "default:wood", "" },
+ { "default:wood", "homedecor:drawer_small", "default:wood" },
+ { "", "default:wood", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:analog_clock_plastic 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:analog_clock_wood 2",
+ recipe = {
+ { "group:stick", "dye:black", "group:stick" },
+ { "group:stick", "homedecor:ic", "group:stick" },
+ { "group:stick", "dye:black", "group:stick" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:digital_clock 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "default:paper", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:alarm_clock",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:speaker_driver", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:digital_clock", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:air_conditioner",
+ recipe = {
+ { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" },
+ { "default:steel_ingot", "homedecor:fan_blades", "homedecor:motor" },
+ { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:air_conditioner",
+ recipe = {
+ { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" },
+ { "default:steel_ingot", "technic:motor", "default:steel_ingot" },
+ { "default:steel_ingot", "technic:motor", "default:steel_ingot" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:ceiling_fan",
+ recipe = {
+ { "homedecor:motor" },
+ { "homedecor:fan_blades" },
+ { "homedecor:glowlight_small_cube_white" }
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:ceiling_fan",
+ recipe = {
+ { "technic:motor" },
+ { "homedecor:fan_blades" },
+ { "homedecor:glowlight_small_cube_white" }
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:welcome_mat_grey 2",
+ recipe = {
+ { "", "dye:black", "" },
+ { "wool:grey", "wool:grey", "wool:grey" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:welcome_mat_brown 2",
+ recipe = {
+ { "", "dye:black", "" },
+ { "wool:brown", "wool:brown", "wool:brown" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:welcome_mat_green 2",
+ recipe = {
+ { "", "dye:white", "" },
+ { "wool:dark_green", "wool:dark_green", "wool:dark_green" },
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:window_plain 8",
+ recipe = {
+ "dye:white",
+ "dye:white",
+ "dye:white",
+ "dye:white",
+ "building_blocks:woodglass"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:window_quartered",
+ recipe = {
+ "dye:white",
+ "group:stick",
+ "group:stick",
+ "homedecor:window_plain"
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:vcr 2",
+ recipe = {
+ { "homedecor:ic", "default:steel_ingot", "homedecor:plastic_sheeting" },
+ { "default:iron_lump", "default:iron_lump", "default:iron_lump" },
+ { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:dvd_player 2",
+ recipe = {
+ { "", "homedecor:plastic_sheeting", "" },
+ { "default:obsidian_glass", "homedecor:motor", "homedecor:motor" },
+ { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:dvd_player 2",
+ recipe = {
+ { "", "homedecor:plastic_sheeting", "" },
+ { "default:obsidian_glass", "technic:motor", "technic:motor" },
+ { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" },
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:dvd_vcr",
+ recipe = {
+ "homedecor:vcr",
+ "homedecor:dvd_player"
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:blinds_thin",
+ recipe = {
+ { "group:stick", "homedecor:plastic_sheeting", "group:stick" },
+ { "farming:string", "homedecor:plastic_strips", "" },
+ { "", "homedecor:plastic_strips", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:blinds_thick",
+ recipe = {
+ { "group:stick", "homedecor:plastic_sheeting", "group:stick" },
+ { "farming:string", "homedecor:plastic_strips", "homedecor:plastic_strips" },
+ { "", "homedecor:plastic_strips", "homedecor:plastic_strips" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:openframe_bookshelf",
+ recipe = {
+ {"group:wood", "", "group:wood"},
+ {"default:book", "default:book", "default:book"},
+ {"group:wood", "", "group:wood"},
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:desk_fan",
+ recipe = {
+ {"default:steel_ingot", "homedecor:fan_blades", "homedecor:motor"},
+ {"", "default:steel_ingot", ""}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:space_heater",
+ recipe = {
+ {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"},
+ {"homedecor:plastic_sheeting", "homedecor:fan_blades", "homedecor:motor"},
+ {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:radiator",
+ recipe = {
+ { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" },
+ { "homedecor:ic", "homedecor:heating_element", "" },
+ { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }
+ },
+})
+
+-- bathroom/kitchen tiles
+
+local color_pairings = {
+ { "grey", "white", "1" },
+ { "dark_grey", "white", "2" },
+ { "black", "white", "3" },
+ { "black", "dark_grey", "4" },
+ { "red", "white", "red" },
+ { "green", "white", "green" },
+ { "blue", "white", "blue" },
+ { "yellow", "white", "yellow" },
+ { "brown", "white", "tan" }
+}
+
+for i in ipairs(color_pairings) do
+ local dye1 = color_pairings[i][1]
+ local dye2 = color_pairings[i][2]
+ local result = color_pairings[i][3]
+ minetest.register_craft( {
+ output = "homedecor:tiles_"..result.." 2",
+ recipe = {
+ { "group:marble", "dye:"..dye1 },
+ { "group:marble", "dye:"..dye2 }
+ },
+ })
+end
+
+-- misc electrical
+
+minetest.register_craft( {
+ output = "homedecor:power_outlet",
+ recipe = {
+ {"homedecor:plastic_sheeting", "homedecor:copper_strip"},
+ {"homedecor:plastic_sheeting", ""},
+ {"homedecor:plastic_sheeting", "homedecor:copper_strip"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:light_switch",
+ recipe = {
+ {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"},
+ {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:copper_strip"},
+ {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"}
+ },
+})
+
+-- doghouse
+
+minetest.register_craft( {
+ output = "homedecor:doghouse",
+ recipe = {
+ {"homedecor:shingles_terracotta", "homedecor:shingles_terracotta", "homedecor:shingles_terracotta"},
+ {"group:wood", "", "group:wood"},
+ {"group:wood", "building_blocks:terrycloth_towel", "group:wood"}
+ },
+})
+
+-- japanese walls and mat
+
+minetest.register_craft( {
+ output = "homedecor:japanese_wall_top",
+ recipe = {
+ {"group:stick", "default:paper"},
+ {"default:paper", "group:stick"},
+ {"group:stick", "default:paper"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:japanese_wall_top",
+ recipe = {
+ {"default:paper", "group:stick"},
+ {"group:stick", "default:paper"},
+ {"default:paper", "group:stick"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:japanese_wall_middle",
+ recipe = {
+ {"homedecor:japanese_wall_top"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:japanese_wall_bottom",
+ recipe = {
+ {"homedecor:japanese_wall_middle"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:japanese_wall_top",
+ recipe = {
+ {"homedecor:japanese_wall_bottom"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:tatami_mat",
+ recipe = {
+ {"farming:wheat", "farming:wheat", "farming:wheat"}
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:wardrobe",
+ recipe = {
+ { "homedecor:drawer_small", "homedecor:kitchen_cabinet" },
+ { "homedecor:drawer_small", "default:wood" },
+ { "homedecor:drawer_small", "default:wood" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:pool_table",
+ recipe = {
+ { "wool:dark_green", "wool:dark_green", "wool:dark_green" },
+ { "building_blocks:hardwood", "building_blocks:hardwood", "building_blocks:hardwood" },
+ { "building_blocks:slab_hardwood", "", "building_blocks:slab_hardwood" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:trash_can 3",
+ recipe = {
+ { "homedecor:steel_wire", "", "homedecor:steel_wire" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:telephone",
+ recipe = {
+ { "homedecor:speaker_driver", "homedecor:copper_wire", "homedecor:speaker_driver" },
+ { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:cobweb_corner 5",
+ recipe = {
+ { "farming:string", "", "farming:string" },
+ { "", "farming:string", "" },
+ { "farming:string", "", "farming:string" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:well",
+ recipe = {
+ { "homedecor:shingles_wood", "homedecor:shingles_wood", "homedecor:shingles_wood" },
+ { "group:wood", "group:stick", "group:wood" },
+ { "group:stone", "", "group:stone" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:coat_tree",
+ recipe = {
+ { "group:stick", "group:stick", "group:stick" },
+ { "", "group:stick", "" },
+ { "", "group:wood", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:coatrack_wallmount",
+ recipe = {
+ { "group:stick", "homedecor:curtainrod_wood", "group:stick" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:doorbell",
+ recipe = {
+ { "homedecor:light_switch", "homedecor:power_crystal", "homedecor:speaker_driver" }
+ },
+})
+
+
+minetest.register_craft( {
+ output = "homedecor:bench_large_1",
+ recipe = {
+ { "group:wood", "group:wood", "group:wood" },
+ { "group:wood", "group:wood", "group:wood" },
+ { "homedecor:pole_wrought_iron", "", "homedecor:pole_wrought_iron" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:bench_large_2_left",
+ recipe = {
+ { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" },
+ { "group:wood", "group:wood", "group:wood" },
+ { "stairs:slab_wood", "", "stairs:slab_wood" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:bench_large_2_left",
+ recipe = {
+ { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" },
+ { "group:wood", "group:wood", "group:wood" },
+ { "moreblocks:slab_wood", "", "moreblocks:slab_wood" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:kitchen_faucet",
+ recipe = {
+ { "", "default:steel_ingot" },
+ { "default:steel_ingot", "" },
+ { "homedecor:taps", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:cutlery_set",
+ recipe = {
+ { "", "vessels:drinking_glass", "" },
+ { "homedecor:steel_strip", "building_blocks:slab_marble", "homedecor:steel_strip" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:cutlery_set",
+ recipe = {
+ { "", "vessels:drinking_glass", "" },
+ { "homedecor:steel_strip", "building_blocks:micro_marble_1", "homedecor:steel_strip" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:simple_bench",
+ recipe = {
+ { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" },
+ { "stairs:slab_wood", "", "stairs:slab_wood" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:simple_bench",
+ recipe = {
+ { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" },
+ { "moreblocks:slab_wood", "", "moreblocks:slab_wood" }
+ },
+})
+
+local bedcolors = {
+ { "red", "red"},
+ { "orange", "orange" },
+ { "yellow", "yellow"},
+ { "green", "dark_green"},
+ { "blue", "blue"},
+ { "violet", "violet"},
+ { "pink", "pink"},
+ { "darkgrey", "dark_grey"},
+ { "brown", "brown" },
+}
+
+for c in ipairs(bedcolors) do
+ local color = bedcolors[c][1]
+ local woolcolor = bedcolors[c][2]
+
+ minetest.register_craft( {
+ output = "homedecor:bed_"..color.."_regular",
+ recipe = {
+ { "group:stick", "", "group:stick" },
+ { "wool:white", "wool:"..woolcolor, "wool:"..woolcolor },
+ { "group:wood", "", "group:wood" },
+ },
+ })
+
+ minetest.register_craft( {
+ output = "homedecor:bed_"..color.."_kingsize",
+ recipe = {
+ { "homedecor:bed_"..color.."_regular", "homedecor:bed_"..color.."_regular" }
+ },
+ })
+
+end
+
+minetest.register_craft( {
+ output = "homedecor:bottle_green",
+ recipe = {
+ { "vessels:glass_bottle", "dye:green" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:bottle_brown",
+ recipe = {
+ { "vessels:glass_bottle", "dye:brown" }
+ },
+})
+
+if not minetest.get_modpath("glooptest") then
+
+ minetest.register_craft({
+ output = "glooptest:chainlink 12",
+ recipe = {
+ {"", "default:steel_ingot", "default:steel_ingot"},
+ { "default:steel_ingot", "", "default:steel_ingot" },
+ { "default:steel_ingot", "default:steel_ingot", "" },
+ },
+ })
+
+end
+
+minetest.register_alias("homedecor:chainlink_steel", "glooptest:chainlink")
+
+minetest.register_craft({
+ output = "homedecor:chains 4",
+ recipe = {
+ { "default:steel_ingot", "", "default:steel_ingot"},
+ { "glooptest:chainlink", "", "glooptest:chainlink" },
+ { "glooptest:chainlink", "", "glooptest:chainlink" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:chainlink_brass 12",
+ recipe = {
+ {"", "technic:brass_ingot", "technic:brass_ingot"},
+ { "technic:brass_ingot", "", "technic:brass_ingot" },
+ { "technic:brass_ingot", "technic:brass_ingot", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:coffee_maker",
+ recipe = {
+ {"homedecor:plastic_sheeting", "bucket:bucket_water", "homedecor:plastic_sheeting"},
+ {"homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting"},
+ {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"}
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:dartboard",
+ recipe = {
+ {"dye:black", "homedecor:plastic_sheeting", "dye:white"},
+ {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting"},
+ {"dye:dark_green", "homedecor:plastic_sheeting", "dye:red"}
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:piano",
+ recipe = {
+ { "", "homedecor:steel_wire", "building_blocks:hardwood" },
+ { "homedecor:plastic_strips", "homedecor:steel_wire", "building_blocks:hardwood" },
+ { "technic:brass_ingot", "default:steelblock", "building_blocks:hardwood" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:toaster",
+ recipe = {
+ { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" },
+ { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:deckchair",
+ recipe = {
+ { "group:stick", "building_blocks:terrycloth_towel", "group:stick" },
+ { "group:stick", "building_blocks:terrycloth_towel", "group:stick" },
+ { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:deckchair_striped_blue",
+ type = "shapeless",
+ recipe = {
+ "homedecor:deckchair",
+ "dye:blue"
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:office_chair_basic",
+ recipe = {
+ { "", "", "wool:black" },
+ { "", "wool:black", "default:steel_ingot" },
+ { "group:stick", "homedecor:pole_wrought_iron", "group:stick" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:office_chair_upscale",
+ recipe = {
+ { "dye:black", "building_blocks:sticks", "group:wool" },
+ { "homedecor:plastic_sheeting", "group:wool", "default:steel_ingot" },
+ { "building_blocks:sticks", "homedecor:pole_wrought_iron", "building_blocks:sticks" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:wall_shelf 2",
+ recipe = {
+ { "homedecor:wood_table_small_square", "homedecor:curtainrod_wood", "homedecor:curtainrod_wood" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:trophy 3",
+ recipe = {
+ { "default:gold_ingot","","default:gold_ingot" },
+ { "","default:gold_ingot","" },
+ { "group:wood","default:gold_ingot","group:wood" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:grandfather_clock",
+ recipe = {
+ { "building_blocks:slab_hardwood","homedecor:analog_clock_wood","building_blocks:slab_hardwood" },
+ { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" },
+ { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:sportbench",
+ recipe = {
+ { "stairs:slab_steelblock","homedecor:pole_wrought_iron","stairs:slab_steelblock" },
+ { "default:steel_ingot","wool:black","default:steel_ingot" },
+ { "default:steel_ingot","wool:black","default:steel_ingot" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:skateboard",
+ recipe = {
+ { "dye:yellow","dye:green","dye:blue" },
+ { "homedecor:wood_table_small_square","homedecor:wood_table_small_square","homedecor:wood_table_small_square" },
+ { "default:steel_ingot","","default:steel_ingot" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:copper_pans",
+ recipe = {
+ { "homedecor:copper_strip","","homedecor:copper_strip" },
+ { "default:copper_ingot","","default:copper_ingot" },
+ { "default:copper_ingot","","default:copper_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:window_flowerbox",
+ recipe = {
+ { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" },
+ { "", "homedecor:roof_tile_terracotta", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:paper_towel",
+ recipe = {
+ { "homedecor:toilet_paper", "homedecor:toilet_paper" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stonepath 16",
+ recipe = {
+ { "stairs:slab_stone","","stairs:slab_stone" },
+ { "","stairs:slab_stone","" },
+ { "stairs:slab_stone","","stairs:slab_stone" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stonepath 16",
+ recipe = {
+ { "moreblocks:slab_stone","","moreblocks:slab_stone" },
+ { "","moreblocks:slab_stone","" },
+ { "moreblocks:slab_stone","","moreblocks:slab_stone" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stonepath 3",
+ recipe = {
+ { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" },
+ { "","moreblocks:micro_stone_1","" },
+ { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:barbecue",
+ recipe = {
+ { "","homedecor:fence_chainlink","" },
+ { "default:steel_ingot","fake_fire:embers","default:steel_ingot" },
+ { "homedecor:pole_wrought_iron","default:steel_ingot","homedecor:pole_wrought_iron" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:beer_tap",
+ recipe = {
+ { "group:stick","default:steel_ingot","group:stick" },
+ { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" },
+ { "default:steel_ingot","default:steel_ingot","default:steel_ingot" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:swing",
+ recipe = {
+ { "farming:string","","farming:string" },
+ { "farming:string","","farming:string" },
+ { "farming:string","stairs:slab_wood","farming:string" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:swing",
+ recipe = {
+ { "farming:string","","farming:string" },
+ { "farming:string","","farming:string" },
+ { "farming:string","moreblocks:slab_wood","farming:string" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:swing",
+ recipe = {
+ { "farming:string","","farming:string" },
+ { "farming:string","","farming:string" },
+ { "farming:string","moreblocks:panel_wood_1","farming:string" }
+ },
+})
+
+local bookcolors = {
+ "red",
+ "green",
+ "blue",
+ "violet",
+ "grey",
+ "brown"
+}
+
+for _, color in ipairs(bookcolors) do
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:book_"..color,
+ recipe = {
+ "dye:"..color,
+ "default:book"
+ },
+ })
+end
+
+minetest.register_craft({
+ output = "homedecor:door_japanese_closed",
+ recipe = {
+ { "homedecor:japanese_wall_top" },
+ { "homedecor:japanese_wall_bottom" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:calendar",
+ recipe = {
+ { "","dye:red","" },
+ { "","dye:black","" },
+ { "","default:paper","" }
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:4_bottles_brown",
+ recipe = {
+ "homedecor:bottle_brown",
+ "homedecor:bottle_brown",
+ "homedecor:bottle_brown",
+ "homedecor:bottle_brown"
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:4_bottles_green",
+ recipe = {
+ "homedecor:bottle_green",
+ "homedecor:bottle_green",
+ "homedecor:bottle_green",
+ "homedecor:bottle_green"
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:4_bottles_multi",
+ recipe = {
+ "homedecor:bottle_brown",
+ "homedecor:bottle_brown",
+ "homedecor:bottle_green",
+ "homedecor:bottle_green",
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:wine_rack",
+ recipe = {
+ { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" },
+ { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" },
+ { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" },
+ },
+})
+
+local picture_dyes = {
+ {"dye:brown", "dye:green"}, -- the figure sitting by the tree, wielding a pick
+ {"dye:green", "dye:blue"} -- the "family photo"
+}
+
+for i in ipairs(picture_dyes) do
+ minetest.register_craft({
+ output = "homedecor:picture_frame"..i,
+ recipe = {
+ { picture_dyes[i][1], picture_dyes[i][2] },
+ { "homedecor:blank_canvas", "group:stick" },
+ },
+ })
+end
+
+local dlamp_colors = { "red","blue","green","violet" }
+
+for _, color in ipairs(dlamp_colors) do
+ minetest.register_craft({
+ output = "homedecor:desk_lamp_"..color,
+ recipe = {
+ { "", "homedecor:steel_strip", "homedecor:glowlight_small_cube_white" },
+ { "", "homedecor:copper_wire", "" },
+ { "homedecor:plastic_sheeting", "dye:"..color, "homedecor:plastic_sheeting" },
+ },
+ })
+end
+
+minetest.register_craft({
+ output = "homedecor:hanging_lantern 2",
+ recipe = {
+ { "default:iron_lump", "default:iron_lump", "" },
+ { "default:iron_lump", "homedecor:lattice_lantern_large", "" },
+ { "default:iron_lump", "", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:ceiling_lantern 2",
+ recipe = {
+ { "default:iron_lump", "default:iron_lump", "default:iron_lump" },
+ { "default:iron_lump", "homedecor:lattice_lantern_large", "default:iron_lump" },
+ { "", "default:iron_lump", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:wall_lamp 2",
+ recipe = {
+ { "", "homedecor:lattice_lantern_large", "" },
+ { "default:iron_lump", "group:stick", "" },
+ { "default:iron_lump", "group:stick", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:desk_globe",
+ recipe = {
+ { "group:stick", "homedecor:plastic_sheeting", "dye:green" },
+ { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "group:stick", "stairs:slab_wood", "dye:blue" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:desk_globe",
+ recipe = {
+ { "group:stick", "homedecor:plastic_sheeting", "dye:green" },
+ { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "group:stick", "moreblocks:slab_wood", "dye:blue" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:tool_cabinet",
+ recipe = {
+ { "homedecor:motor", "default:axe_steel", "default:pick_steel" },
+ { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" },
+ { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:bathroom_set",
+ recipe = {
+ { "", "homedecor:glass_table_small_round", "" },
+ { "homedecor:plastic_sheeting", "homedecor:glass_table_small_round", "homedecor:plastic_sheeting" },
+ { "group:stick", "homedecor:plastic_sheeting", "group:stick" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:trash_can_green",
+ recipe = {
+ { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "dye:green", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:ceiling_lamp",
+ recipe = {
+ { "", "technic:brass_ingot", ""},
+ { "", "homedecor:chainlink_brass", ""},
+ { "default:glass", "homedecor:glowlight_small_cube_white", "default:glass"}
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:ceiling_lamp",
+ recipe = {
+ { "", "chains:chain_top_brass", ""},
+ { "default:glass", "homedecor:glowlight_small_cube_white", "default:glass"}
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:spiral_staircase",
+ recipe = {
+ { "default:steelblock", "homedecor:pole_wrought_iron", "" },
+ { "", "homedecor:pole_wrought_iron", "default:steelblock" },
+ { "default:steelblock", "homedecor:pole_wrought_iron", "" }
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:soda_machine",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ {"default:steel_ingot", "dye:red", "default:steel_ingot"},
+ {"default:steel_ingot", "default:copperblock", "default:steel_ingot"},
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:coin 5",
+ recipe = {"moreblocks:micro_goldblock_1", "default:sword_stone"}
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:coin 15",
+ recipe = {"default:gold_ingot", "default:sword_steel"}
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:coin 50",
+ recipe = {"default:goldblock", "default:sword_mese"}
+})
+
+minetest.register_craft({
+ output = "homedecor:lattice_wood 8",
+ recipe = {
+ {"group:stick", "group:wood", "group:stick"},
+ {"group:wood", "", "group:wood"},
+ {"group:stick", "group:wood", "group:stick"},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:lattice_white_wood 8",
+ recipe = {
+ {"group:stick", "group:wood", "group:stick"},
+ {"group:wood", "dye:white", "group:wood"},
+ {"group:stick", "group:wood", "group:stick"},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:lattice_wood_vegetal 8",
+ recipe = {
+ {"group:stick", "group:wood", "group:stick"},
+ {"group:wood", "group:leaves", "group:wood"},
+ {"group:stick", "group:wood", "group:stick"},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:lattice_white_wood_vegetal 8",
+ recipe = {
+ {"group:stick", "group:wood", "group:stick"},
+ {"group:wood", "group:leaves", "group:wood"},
+ {"group:stick", "dye:white", "group:stick"},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stained_glass 8",
+ recipe = {
+ {"", "dye:blue", ""},
+ {"dye:red", "default:glass", "dye:green"},
+ {"", "dye:yellow", ""},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stained_glass",
+ recipe = {
+ {"", "dye:blue", ""},
+ {"dye:red", "xpanes:pane", "dye:green"},
+ {"", "dye:yellow", ""},
+ },
+})
+
+minetest.register_craftitem("homedecor:flower_pot_small", {
+ description = S("Small Flower Pot"),
+ inventory_image = "homedecor_flowerpot_small_inv.png"
+})
+
+minetest.register_craft( {
+ output = "homedecor:flower_pot_small",
+ recipe = {
+ { "default:clay_brick", "", "default:clay_brick" },
+ { "", "default:clay_brick", "" }
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:flower_pot_small 3",
+ recipe = { { "homedecor:flower_pot_terracotta" } }
+})
+
+minetest.register_craft({
+ output = "homedecor:shrubbery_green 3",
+ recipe = {
+ { "group:leaves", "group:leaves", "group:leaves" },
+ { "group:leaves", "group:leaves", "group:leaves" },
+ { "group:stick", "group:stick", "group:stick" }
+ }
+})
+
+for _, color in ipairs(homedecor.shrub_colors) do
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:shrubbery_large_"..color,
+ recipe = {
+ "homedecor:shrubbery_"..color
+ }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:shrubbery_"..color,
+ recipe = {
+ "homedecor:shrubbery_large_"..color
+ }
+ })
+
+ if color ~= "green" then
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:shrubbery_large_"..color,
+ recipe = {
+ "homedecor:shrubbery_large_green",
+ "dye:"..color
+ }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:shrubbery_"..color,
+ recipe = {
+ "homedecor:shrubbery_green",
+ "dye:"..color
+ }
+ })
+
+ end
+end
+
+for i in ipairs(homedecor.banister_materials) do
+
+ local name = homedecor.banister_materials[i][1]
+ local topmat = homedecor.banister_materials[i][5]
+ local vertmat = homedecor.banister_materials[i][6]
+ local dye1 = homedecor.banister_materials[i][7]
+ local dye2 = homedecor.banister_materials[i][8]
+
+ minetest.register_craft({
+ output = "homedecor:banister_"..name.."_horizontal 2",
+ recipe = {
+ { topmat, "", dye1 },
+ { vertmat, topmat, "" },
+ { dye2, vertmat, topmat }
+ },
+ })
+end
+
+if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then
+ technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} })
+end
+
diff --git a/homedecor_modpack/homedecor/depends.txt b/homedecor_modpack/homedecor/depends.txt
new file mode 100644
index 0000000..ea261e9
--- /dev/null
+++ b/homedecor_modpack/homedecor/depends.txt
@@ -0,0 +1,12 @@
+default
+building_blocks?
+signs_lib?
+moreblocks?
+technic?
+dye?
+bees?
+intllib?
+bucket?
+beds?
+flowers?
+3d_armor?
diff --git a/homedecor_modpack/homedecor/doors_and_gates.lua b/homedecor_modpack/homedecor/doors_and_gates.lua
new file mode 100644
index 0000000..82cdec3
--- /dev/null
+++ b/homedecor_modpack/homedecor/doors_and_gates.lua
@@ -0,0 +1,641 @@
+-- Node definitions for Homedecor doors
+
+local S = homedecor.gettext
+
+-- doors
+
+local function isSolid(pos,adj)
+ local adj = {x=adj[1],y=adj[2],z=adj[3]}
+ local node = minetest.get_node(vector.add(pos,adj))
+ if node then
+ local idef = minetest.registered_nodes[minetest.get_node(vector.add(pos,adj)).name]
+ if idef then
+ return idef.walkable
+ end
+ end
+ return false
+end
+
+local function countSolids(pos,node,level)
+ local solids = 0
+ for x = -1, 1 do
+ for z = -1, 1 do
+ local y = (node.param2 == 5) and -level or level
+ -- special cases when x == z == 0
+ if x == 0 and z == 0 then
+ if level == 1 then
+ -- when looking past the trap door, cannot be solid in center
+ if isSolid(pos,{x,y,z}) then
+ return false
+ end
+ -- no else. it doesn't matter if x == y == z is solid, that's us.
+ end
+ elseif isSolid(pos,{x,y,z}) then
+ solids = solids + 1
+ end
+ end
+ end
+ return solids
+end
+
+local function calculateClosed(pos)
+ local node = minetest.get_node(pos)
+ -- the door is considered closed if it is closing off something.
+
+ local solids = 0
+ local direction = node.param2 % 6
+ local isTrap = direction == 0 or direction == 5
+ if isTrap then
+ -- the trap door is considered closed when all nodes on its sides are solid
+ -- or all nodes in the 3x3 above/below it are solid except the center
+ for level = 0, 1 do
+ local fail = false
+ local solids = countSolids(pos,node,level)
+ if solids == 8 then
+ return true
+ end
+ end
+ return false
+ else
+ -- the door is considered closed when the nodes on its sides are solid
+ -- or the 3 nodes in its facing direction are solid nonsolid solid
+ -- if the door has two levels (i.e. not a gate) then this must
+ -- be true for the top node as well.
+
+ -- sorry I dunno the math to figure whether to x or z
+ if direction == 1 or direction == 2 then
+ if isSolid(pos,{0,0,-1}) and isSolid(pos,{0,0,1}) then
+ if string.find(node.name,'_bottom_') then
+ return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
+ else
+ return true
+ end
+ end
+ local x = (direction == 1) and 1 or -1
+ if isSolid(pos,{x,0,-1}) and not isSolid(pos,{x,0,0}) and isSolid(pos,{x,0,1}) then
+ if string.find(node.name,'_bottom_') then
+ return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
+ else
+ return true
+ end
+ end
+ return false
+ else
+ -- direction == 3 or 4
+ if isSolid(pos,{-1,0,0}) and isSolid(pos,{1,0,0}) then
+ if string.find(node.name,'_bottom_') then
+ return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
+ else
+ return true
+ end
+ end
+ local z = (direction == 3) and 1 or -1
+ if isSolid(pos,{-1,0,z}) and not isSolid(pos,{0,0,z}) and isSolid(pos,{1,0,z}) then
+ if string.find(node.name,'_bottom_') then
+ return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
+ else
+ return true
+ end
+ end
+ return false
+ end
+ error("What direction is this???",direction)
+ end
+end
+
+-- isClosed flag, is 0 or 1 0 = open, 1 = closed
+local function getClosed(pos)
+ local isClosed = minetest.get_meta(pos):get_string('closed')
+ if isClosed=='' then
+ return calculateClosed(pos)
+ else
+ isClosed = tonumber(isClosed)
+ -- may be closed or open (1 or 0)
+ return isClosed == 1
+ end
+end
+
+local function addDoorNode(pos,def,isClosed)
+ minetest.set_node(pos, def)
+ minetest.get_meta(pos):set_int('closed', isClosed and 1 or 0)
+end
+
+local door_model_list = {
+ { name = "closet_mahogany",
+ description = S("Mahogany Closet Door"),
+ mesh = "homedecor_door_closet.obj"
+ },
+
+ { name = "closet_oak",
+ description = S("Oak Closet Door"),
+ mesh = "homedecor_door_closet.obj"
+ },
+
+ { name = "exterior_fancy",
+ description = S("Fancy Wood/Glass Door"),
+ mesh = "homedecor_door_fancy.obj",
+ tiles = {
+ "homedecor_door_exterior_fancy.png",
+ "homedecor_door_exterior_fancy_insert.png"
+ },
+ usealpha = true
+ },
+
+ { name = "glass",
+ description = S("Glass Office Door"),
+ mesh = "homedecor_door_plain.obj"
+ },
+
+ { name = "wood_glass_oak",
+ description = S("Glass and Wood, Oak-colored"),
+ mesh = "homedecor_door_wood_glass.obj",
+ tiles = {
+ "homedecor_door_wood_glass_oak.png",
+ "homedecor_door_wood_glass_insert.png",
+ }
+ },
+
+ { name = "wood_glass_mahogany",
+ description = S("Glass and Wood, Mahogany-colored"),
+ mesh = "homedecor_door_wood_glass.obj",
+ tiles = {
+ "homedecor_door_wood_glass_mahogany.png",
+ "homedecor_door_wood_glass_insert.png",
+ }
+ },
+
+ { name = "wood_glass_white",
+ description = S("Glass and Wood, White"),
+ mesh = "homedecor_door_wood_glass.obj",
+ tiles = {
+ "homedecor_door_wood_glass_white.png",
+ "homedecor_door_wood_glass_insert.png",
+ }
+ },
+
+ { name = "wood_plain",
+ description = S("Plain Wooden Door"),
+ mesh = "homedecor_door_plain.obj"
+ },
+
+ { name = "bedroom",
+ description = S("White Bedroom Door"),
+ mesh = "homedecor_door_plain.obj"
+ },
+
+ { name = "wrought_iron",
+ description = S("Wrought Iron Gate/Door"),
+ mesh = "homedecor_door_wrought_iron.obj"
+ },
+
+ { name = "woodglass",
+ description = S("Wooden door with glass insert"),
+ mesh = "homedecor_door_woodglass_typea.obj",
+ tiles = {
+ "homedecor_door_woodglass_typea.png",
+ "homedecor_door_woodglass_typea_insert.png",
+ },
+ usealpha = true
+ },
+
+ { name = "woodglass2",
+ description = S("Wooden door with glass insert, type 2"),
+ mesh = "homedecor_door_plain.obj",
+ usealpha = true
+ },
+}
+
+local def_selbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 }
+}
+
+local sides = {"left", "right"}
+
+for i in ipairs(sides) do
+ local side = sides[i]
+
+ for _, door_model in ipairs(door_model_list) do
+
+ local doorname = door_model.name
+
+ local selbox = door_model.selectbox or def_selbox
+ local colbox = door_model.collisionbox or door_model.selectbox or def_selbox
+ local mesh = door_model.mesh
+ local groups = {snappy = 3}
+
+ if side == "right" then
+ mesh = string.gsub(door_model.mesh, ".obj", "_right.obj")
+ groups = {snappy = 3, not_in_creative_inventory = 1}
+ end
+
+ minetest.register_node("homedecor:door_"..doorname.."_"..side, {
+ description = door_model.description.." "..S("(%s-opening)"):format(side),
+ drawtype = "mesh",
+ mesh = mesh,
+ tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" },
+ inventory_image = "homedecor_door_"..doorname.."_inv.png",
+ wield_image = "homedecor_door_"..doorname.."_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = groups,
+ sounds = default.node_sound_wood_defaults(),
+ use_texture_alpha = door_model.usealpha,
+ selection_box = selbox,
+ collision_box = colbox,
+ on_rotate = screwdriver.rotate_simple,
+ on_place = function(itemstack, placer, pointed_thing)
+ return homedecor.stack_wing(itemstack, placer, pointed_thing,
+ "homedecor:door_"..doorname.."_left", "air",
+ "homedecor:door_"..doorname.."_right", "air")
+ end,
+ on_construct = function(pos)
+ minetest.get_meta(pos):set_int("closed", 1)
+ end,
+ on_rightclick = function(pos, node, clicker)
+ homedecor.flip_door(pos, node, clicker, doorname, side)
+ end,
+ -- both left and right doors may be used for open or closed doors
+ -- so they have to have both action_on and action_off and just
+ -- check when that action is invoked if to continue
+
+ on_punch = function(pos, node, puncher)
+ minetest.get_meta(pos):set_string('closed',nil)
+ end,
+ drop = "homedecor:door_"..doorname.."_left",
+ mesecons = {
+ effector = {
+ action_on = function(pos,node)
+ local isClosed = getClosed(pos)
+ if isClosed then
+ homedecor.flip_door(pos,node,nil,doorname,side,isClosed)
+ end
+ end,
+ action_off = function(pos,node)
+ local isClosed = getClosed(pos)
+ if not isClosed then
+ homedecor.flip_door(pos,node,nil,doorname,side,isClosed)
+ end
+ end
+ }
+ }
+ })
+
+ minetest.register_alias("homedecor:door_"..doorname.."_top_"..side, "air")
+ minetest.register_alias("homedecor:door_"..doorname.."_bottom_"..side, "homedecor:door_"..doorname.."_"..side)
+
+ end
+
+ minetest.register_alias("homedecor:door_wood_glass_top_"..side, "air")
+ minetest.register_alias("homedecor:door_wood_glass_bottom_"..side, "homedecor:door_wood_glass_oak_"..side)
+
+end
+
+-- Gates
+
+local gates_list = { "picket", "picket_white", "barbed_wire", "chainlink" }
+local gate_names = { "Unpainted Picket", "White Picket", "Barbed Wire", "Chainlink" }
+
+local gate_models_closed = {
+ {{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
+
+ {{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
+
+ {{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
+ { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
+ { -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 }}, -- the wire
+
+ {{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
+ { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
+ { -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself
+ { -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 }} -- the lump representing the lock
+}
+
+local gate_models_open = {
+ {{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
+
+ {{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
+
+ {{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
+ { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
+ { 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 }}, -- the wire
+
+ {{ 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
+ { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
+ { 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself
+ { 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }} -- the lump representing the lock
+}
+
+for i in ipairs(gates_list) do
+
+ local gate=gates_list[i]
+
+ local tiles = {
+ "homedecor_gate_"..gate.."_tb.png",
+ "homedecor_gate_"..gate.."_tb.png",
+ "homedecor_gate_"..gate.."_lr.png",
+ "homedecor_gate_"..gate.."_lr.png",
+ "homedecor_gate_"..gate.."_fb.png^[transformFX",
+ "homedecor_gate_"..gate.."_fb.png"
+ }
+
+ if gate == "barbed_wire" then
+ tiles = {
+ "homedecor_gate_barbed_wire_edges.png",
+ "homedecor_gate_barbed_wire_edges.png",
+ "homedecor_gate_barbed_wire_edges.png",
+ "homedecor_gate_barbed_wire_edges.png",
+ "homedecor_gate_barbed_wire_fb.png^[transformFX",
+ "homedecor_gate_barbed_wire_fb.png"
+ }
+ end
+
+ if gate == "picket" or gate == "picket_white" then
+ tiles = {
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_gate_"..gate.."_back.png",
+ "homedecor_gate_"..gate.."_front.png"
+ }
+ end
+
+ local def = {
+ drawtype = "nodebox",
+ description = S(gate_names[i].." Fence Gate"),
+ tiles = tiles,
+ paramtype = "light",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ paramtype2 = "facedir",
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = gate_models_closed[i]
+ },
+ on_rightclick = function(pos, node, clicker)
+ homedecor.flip_gate(pos, node, clicker, gate, "closed")
+ end,
+ mesecons = {
+ effector = {
+ action_on = function(pos,node) homedecor.flip_gate(pos,node,player,gate, "closed") end
+ }
+ }
+ }
+
+ -- gates when placed default to closed, closed.
+
+ minetest.register_node("homedecor:gate_"..gate.."_closed", def)
+
+ -- this is either a terrible idea or a great one
+ def = table.copy(def)
+ def.groups.not_in_creative_inventory = 1
+ def.selection_box.fixed = { 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 }
+ def.node_box.fixed = gate_models_open[i]
+ def.tiles = {
+ tiles[1],
+ tiles[2],
+ tiles[6],
+ tiles[5],
+ tiles[4],
+ tiles[3]
+ }
+ def.drop = "homedecor:gate_"..gate.."_closed"
+ def.on_rightclick = function(pos, node, clicker)
+ homedecor.flip_gate(pos, node, clicker, gate, "open")
+ end
+ def.mesecons.effector = {
+ action_off = function(pos,node) homedecor.flip_gate(pos,node,player,gate, "open") end
+ }
+
+ minetest.register_node("homedecor:gate_"..gate.."_open", def)
+end
+
+minetest.register_alias("homedecor:fence_barbed_wire_gate_open", "homedecor:gate_barbed_wire_open")
+minetest.register_alias("homedecor:fence_barbed_wire_gate_closed", "homedecor:gate_barbed_wire_closed")
+minetest.register_alias("homedecor:fence_chainlink_gate_open", "homedecor:gate_chainlink_open")
+minetest.register_alias("homedecor:fence_chainlink_gate_closed", "homedecor:gate_chainlink_closed")
+minetest.register_alias("homedecor:fence_picket_gate_open", "homedecor:gate_picket_open")
+minetest.register_alias("homedecor:fence_picket_gate_closed", "homedecor:gate_picket_closed")
+minetest.register_alias("homedecor:fence_picket_gate_white_open", "homedecor:gate_picket_white_open")
+minetest.register_alias("homedecor:fence_picket_gate_white_closed", "homedecor:gate_picket_white_closed")
+
+-- to open a door, you switch left for right and subtract from param2, or vice versa right for left
+-- that is to say open "right" doors become left door nodes, and open left doors right door nodes.
+-- also adjusting param2 so the node is at 90 degrees.
+
+function homedecor.flip_door(pos, node, player, name, side, isClosed)
+ if isClosed == nil then
+ isClosed = getClosed(pos)
+ end
+ -- this is where we swap the isClosed status!
+ -- i.e. if isClosed, we're adding an open door
+ -- and if not isClosed, a closed door
+ isClosed = not isClosed
+
+ local rside = nil
+ local nfdir = nil
+ local ofdir = node.param2 or 0
+ if side == "left" then
+ rside = "right"
+ nfdir=ofdir - 1
+ if nfdir < 0 then nfdir = 3 end
+ else
+ rside = "left"
+ nfdir=ofdir + 1
+ if nfdir > 3 then nfdir = 0 end
+ end
+ local sound = isClosed and 'close' or 'open'
+ minetest.sound_play("homedecor_door_"..sound, {
+ pos=pos,
+ max_hear_distance = 5,
+ gain = 2,
+ })
+ -- XXX: does the top half have to remember open/closed too?
+ minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..rside, param2=nfdir})
+
+ addDoorNode(pos,{ name = "homedecor:door_"..name.."_bottom_"..rside, param2=nfdir },isClosed)
+end
+
+function homedecor.flip_gate(pos, node, player, gate, oc)
+ local isClosed = getClosed(pos);
+ minetest.sound_play("homedecor_gate_open_close", {
+ pos=pos,
+ max_hear_distance = 5,
+ gain = 2,
+ })
+
+ local fdir = node.param2 or 0
+
+ -- since right facing gates use "open" nodes for closed, we need an
+ -- isClosed flag to tell if it's "really" closed.
+
+ local gateresult = nil
+ if oc == "closed" then
+ gateresult = "homedecor:gate_"..gate.."_open"
+ else
+ gateresult = "homedecor:gate_"..gate.."_closed"
+ end
+
+ local def = {name=gateresult, param2=fdir}
+
+ addDoorNode(pos, def, isClosed)
+
+ -- the following opens and closes gates below and above in sync with this one
+ -- (without three gate open/close sounds)
+
+ local above = {x=pos.x, y=pos.y+1, z=pos.z}
+ local below = {x=pos.x, y=pos.y-1, z=pos.z}
+ local nodeabove = minetest.get_node(above)
+ local nodebelow = minetest.get_node(below)
+
+ if string.find(nodeabove.name, "homedecor:gate_"..gate) then
+ addDoorNode(above, def, isClosed)
+ end
+
+ if string.find(nodebelow.name, "homedecor:gate_"..gate) then
+ addDoorNode(below, def, isClosed)
+ end
+end
+
+-- Japanese-style wood/paper wall pieces and door
+
+local jp_cbox = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
+}
+
+minetest.register_node("homedecor:japanese_wall_top", {
+ description = "Japanese wall (top)",
+ drawtype = "mesh",
+ mesh = "homedecor_wall_japanese_top.obj",
+ tiles = {
+ "homedecor_generic_wood_luxury.png",
+ "homedecor_japanese_paper.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ selection_box = jp_cbox,
+ collision_box = jp_cbox,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("homedecor:japanese_wall_middle", {
+ description = "Japanese wall",
+ drawtype = "mesh",
+ mesh = "homedecor_wall_japanese_middle.obj",
+ tiles = {
+ "homedecor_generic_wood_luxury.png",
+ "homedecor_japanese_paper.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ selection_box = jp_cbox,
+ collision_box = jp_cbox,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("homedecor:japanese_wall_bottom", {
+ description = "Japanese wall (bottom)",
+ drawtype = "mesh",
+ mesh = "homedecor_wall_japanese_bottom.obj",
+ tiles = {
+ "homedecor_generic_wood_luxury.png",
+ "homedecor_japanese_paper.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ selection_box = jp_cbox,
+ collision_box = jp_cbox,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("homedecor:tatami_mat", {
+ tiles = {
+ "homedecor_tatami.png",
+ "homedecor_tatami.png",
+ "homedecor_tatami.png",
+ "homedecor_tatami.png",
+ "homedecor_tatami.png",
+ "homedecor_tatami.png"
+ },
+ description = "Japanese tatami",
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {snappy=3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
+ }
+ }
+})
+
+homedecor.register("door_japanese_closed", {
+ description = "Japanese-style door",
+ inventory_image = "homedecor_door_japanese_inv.png",
+ tiles = {
+ "homedecor_generic_wood_luxury.png",
+ "homedecor_japanese_paper.png"
+ },
+ mesh = "homedecor_door_japanese_closed.obj",
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, 1.5, 0.0625},
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.0625, 0.5, 1.5, 0},
+ },
+ expand = { top = "placeholder" },
+ on_rightclick = function(pos, node, clicker)
+ minetest.set_node(pos, {name = "homedecor:door_japanese_open", param2 = node.param2})
+ end
+})
+
+homedecor.register("door_japanese_open", {
+ tiles = {
+ "homedecor_generic_wood_luxury.png",
+ "homedecor_japanese_paper.png"
+ },
+ mesh = "homedecor_door_japanese_open.obj",
+ groups = { snappy = 3, not_in_creative_inventory = 1 },
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1.5, -0.5, -0.0625, 0.5, 1.5, 0},
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {-1.5, -0.5, -0.0625, -0.5, 1.5, 0},
+ },
+ expand = { top = "placeholder" },
+ on_rightclick = function(pos, node, clicker)
+ minetest.set_node(pos, {name = "homedecor:door_japanese_closed", param2 = node.param2})
+ end,
+ drop = "homedecor:door_japanese_closed",
+})
+
+minetest.register_alias("homedecor:jpn_door_top", "air")
+minetest.register_alias("homedecor:jpn_door_bottom", "homedecor:door_japanese_closed")
+
+minetest.register_alias("homedecor:jpn_door_top_open", "air")
+minetest.register_alias("homedecor:jpn_door_bottom_open", "homedecor:door_japanese_open")
diff --git a/homedecor_modpack/homedecor/electrics.lua b/homedecor_modpack/homedecor/electrics.lua
new file mode 100644
index 0000000..001c703
--- /dev/null
+++ b/homedecor_modpack/homedecor/electrics.lua
@@ -0,0 +1,78 @@
+homedecor.register("power_outlet", {
+ description = "Power Outlet",
+ tiles = {
+ "homedecor_outlet_edges.png",
+ "homedecor_outlet_edges.png",
+ "homedecor_outlet_edges.png",
+ "homedecor_outlet_edges.png",
+ "homedecor_outlet_back.png",
+ "homedecor_outlet_edges.png"
+ },
+ inventory_image = "homedecor_outlet_inv.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.125, -0.3125, 0.4375, 0.125, 0, 0.5},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.1875, -0.375, 0.375, 0.1875, 0.0625, 0.5},
+ }
+ },
+ groups = {cracky=3,dig_immediate=2},
+ walkable = false
+})
+
+homedecor.register("light_switch", {
+ description = "Light switch",
+ tiles = {
+ "homedecor_light_switch_edges.png",
+ "homedecor_light_switch_edges.png",
+ "homedecor_light_switch_edges.png",
+ "homedecor_light_switch_edges.png",
+ "homedecor_light_switch_back.png",
+ "homedecor_light_switch_front.png"
+ },
+ inventory_image = "homedecor_light_switch_inv.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.125, -0.5, 0.4375, 0.125, -0.1875, 0.5 },
+ { -0.03125, -0.3125, 0.40625, 0.03125, -0.25, 0.5 },
+
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -0.1875, -0.5625, 0.375, 0.1875, -0.1250, 0.5 },
+ }
+ },
+ groups = {cracky=3,dig_immediate=2},
+ walkable = false
+})
+
+
+homedecor.register("doorbell", {
+ tiles = { "homedecor_doorbell.png" },
+ inventory_image = "homedecor_doorbell_inv.png",
+ description = "Doorbell",
+ groups = {snappy=3},
+ walkable = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.0625, 0, 0.46875, 0.0625, 0.1875, 0.5}, -- NodeBox1
+ {-0.03125, 0.0625, 0.45, 0.03125, 0.125, 0.4675}, -- NodeBox2
+ }
+ },
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.sound_play("homedecor_doorbell", {
+ pos = pos,
+ gain = 1.0,
+ max_hear_distance = 15
+ })
+ end
+})
diff --git a/homedecor_modpack/homedecor/electronics.lua b/homedecor_modpack/homedecor/electronics.lua
new file mode 100644
index 0000000..9a59a96
--- /dev/null
+++ b/homedecor_modpack/homedecor/electronics.lua
@@ -0,0 +1,157 @@
+-- Various home electronics
+
+local S = homedecor.gettext
+
+homedecor.register("speaker", {
+ description = S("Large Stereo Speaker"),
+ mesh="homedecor_speaker_large.obj",
+ tiles = {
+ "homedecor_speaker_sides.png",
+ "homedecor_speaker_front.png"
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2})
+ end
+})
+
+homedecor.register("speaker_open", {
+ description = S("Large Stereo Speaker, open front"),
+ mesh="homedecor_speaker_large_open.obj",
+ tiles = {
+ "homedecor_speaker_sides.png",
+ "homedecor_speaker_driver.png",
+ "homedecor_speaker_open_front.png",
+ "homedecor_generic_metal_black.png"
+ },
+ groups = { snappy = 3, not_in_creative_inventory=1 },
+ sounds = default.node_sound_wood_defaults(),
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2})
+ end
+})
+
+local spk_cbox = {
+ type = "fixed",
+ fixed = { -3/16, -8/16, 1/16, 3/16, -2/16, 7/16 }
+}
+
+homedecor.register("speaker_small", {
+ description = S("Small Surround Speaker"),
+ mesh="homedecor_speaker_small.obj",
+ tiles = {
+ "homedecor_speaker_sides.png",
+ "homedecor_speaker_front.png"
+ },
+ selection_box = spk_cbox,
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("stereo", {
+ description = S("Stereo Receiver"),
+ tiles = { 'homedecor_stereo_top.png',
+ 'homedecor_stereo_bottom.png',
+ 'homedecor_stereo_left.png^[transformFX',
+ 'homedecor_stereo_left.png',
+ 'homedecor_stereo_back.png',
+ 'homedecor_stereo_front.png'},
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("projection_screen", {
+ description = S("Projection Screen Material"),
+ drawtype = 'signlike',
+ tiles = { 'homedecor_projection_screen.png' },
+ wield_image = 'homedecor_projection_screen_inv.png',
+ inventory_image = 'homedecor_projection_screen_inv.png',
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ paramtype2 = 'wallmounted',
+ selection_box = {
+ type = "wallmounted",
+ --wall_side = = <default>
+ },
+})
+
+homedecor.register("television", {
+ description = S("Small CRT Television"),
+ tiles = { 'homedecor_television_top.png',
+ 'homedecor_television_bottom.png',
+ 'homedecor_television_left.png^[transformFX',
+ 'homedecor_television_left.png',
+ 'homedecor_television_back.png',
+ { name="homedecor_television_front_animated.png",
+ animation={
+ type="vertical_frames",
+ aspect_w=16,
+ aspect_h=16,
+ length=80.0
+ }
+ }
+ },
+ light_source = default.LIGHT_MAX - 1,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("dvd_vcr", {
+ description = S("DVD and VCR"),
+ tiles = {
+ "homedecor_dvdvcr_top.png",
+ "homedecor_dvdvcr_bottom.png",
+ "homedecor_dvdvcr_sides.png",
+ "homedecor_dvdvcr_sides.png^[transformFX",
+ "homedecor_dvdvcr_back.png",
+ "homedecor_dvdvcr_front.png",
+ },
+ inventory_image = "homedecor_dvdvcr_inv.png",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.3125, -0.5, -0.25, 0.3125, -0.375, 0.1875},
+ {-0.25, -0.5, -0.25, 0.25, -0.1875, 0.125},
+ }
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+})
+
+local tel_cbox = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.1875, 0.25, -0.21, 0.15 }
+}
+
+homedecor.register("telephone", {
+ mesh = "homedecor_telephone.obj",
+ tiles = {
+ "homedecor_telephone_dial.png",
+ "homedecor_telephone_base.png",
+ "homedecor_telephone_handset.png",
+ "homedecor_telephone_cord.png",
+ },
+ inventory_image = "homedecor_telephone_inv.png",
+ description = "Telephone",
+ groups = {snappy=3},
+ selection_box = tel_cbox,
+ walkable = false,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_abm({
+ nodenames = "homedecor:telephone",
+ label = "sfx",
+ interval = 30,
+ chance = 15,
+ action = function(pos, node)
+ minetest.sound_play("homedecor_telephone_ringing", {
+ pos = pos,
+ gain = 1.0,
+ max_hear_distance = 5
+ })
+ end
+})
diff --git a/homedecor_modpack/homedecor/exterior.lua b/homedecor_modpack/homedecor/exterior.lua
new file mode 100644
index 0000000..c9434b2
--- /dev/null
+++ b/homedecor_modpack/homedecor/exterior.lua
@@ -0,0 +1,398 @@
+local S = homedecor.gettext
+
+local bbq_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.3125, 0.5, 0.53125, 0.3125 }
+}
+
+homedecor.register("barbecue", {
+ description = "Barbecue",
+ mesh = "homedecor_barbecue.obj",
+ tiles = {
+ "homedecor_generic_metal_black.png",
+ { name="homedecor_embers.png",
+ animation={
+ type="vertical_frames",
+ aspect_w=16,
+ aspect_h=16,
+ length=2
+ }
+ },
+ "homedecor_barbecue_meat.png",
+ },
+ groups = { snappy=3 },
+ light_source = 9,
+ selection_box = bbq_cbox,
+ collision_box = bbq_cbox,
+ sounds = default.node_sound_stone_defaults(),
+ -- no need for placeholder it appears
+ expand = { top="air" },
+})
+
+minetest.register_alias("homedecor:barbecue_meat", "air")
+
+local bl1_sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.25, 1.5, 0.5, 0.5 }
+}
+
+local bl1_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.25, 1.5, 0, 0.5 },
+ {-0.5, -0.5, 0.45, 1.5, 0.5, 0.5 },
+ }
+}
+
+homedecor.register("bench_large_1", {
+ mesh = "homedecor_bench_large_1.obj",
+ tiles = {
+ "homedecor_generic_wood_old.png",
+ "homedecor_generic_metal_wrought_iron.png"
+ },
+ description = "Garden Bench (style 1)",
+ inventory_image = "homedecor_bench_large_1_inv.png",
+ groups = { snappy = 3 },
+ expand = { right="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = bl1_sbox,
+ node_box = bl1_cbox,
+ on_rotate = screwdriver.disallow
+})
+
+minetest.register_alias("homedecor:bench_large_1_left", "homedecor:bench_large_1")
+minetest.register_alias("homedecor:bench_large_1_right", "air")
+
+local bl2_sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.25, 1.5, 0.5, 0.5 }
+}
+
+local bl2_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.25, 1.5, 0, 0.5 },
+ {-0.5, -0.5, 0.45, 1.5, 0.5, 0.5 },
+ }
+}
+
+homedecor.register("bench_large_2", {
+ description = "Garden Bench (style 2)",
+ mesh = "homedecor_bench_large_2.obj",
+ tiles = { "homedecor_generic_wood_old.png" },
+ inventory_image = "homedecor_bench_large_2_inv.png",
+ groups = {snappy=3},
+ selection_box = bl2_sbox,
+ node_box = bl2_cbox,
+ expand = { right="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow
+})
+
+minetest.register_alias("homedecor:bench_large_2_left", "homedecor:bench_large_2")
+minetest.register_alias("homedecor:bench_large_2_right", "air")
+
+local dc_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 1 }
+}
+
+homedecor.register("deckchair", {
+ mesh = "homedecor_deckchair.obj",
+ tiles = {"homedecor_deckchair.png"},
+ description = "Deck Chair",
+ groups = { snappy = 3 },
+ expand = { forward="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = dc_cbox,
+ collision_box = dc_cbox,
+ on_rotate = screwdriver.disallow
+})
+
+minetest.register_alias("homedecor:deckchair_foot", "homedecor:deckchair")
+minetest.register_alias("homedecor:deckchair_head", "air")
+
+homedecor.register("deckchair_striped_blue", {
+ mesh = "homedecor_deckchair.obj",
+ tiles = {"homedecor_deckchair_striped_blue.png"},
+ description = "Deck Chair",
+ groups = { snappy = 3 },
+ expand = { forward="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = dc_cbox,
+ collision_box = dc_cbox,
+ on_rotate = screwdriver.disallow
+})
+
+homedecor.register("doghouse", {
+ mesh = "homedecor_doghouse.obj",
+ tiles = {
+ "homedecor_shingles_terracotta.png",
+ "default_wood.png",
+ "building_blocks_towel.png"
+ },
+ description = "Doghouse",
+ inventory_image = "homedecor_doghouse_inv.png",
+ selection_box = homedecor.nodebox.slab_y(1.5),
+ collision_box = homedecor.nodebox.slab_y(1.5),
+ groups = {snappy=3},
+ expand = { top="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.rotate_simple
+})
+
+minetest.register_alias("homedecor:doghouse_roof", "air")
+minetest.register_alias("homedecor:doghouse_base", "homedecor:doghouse")
+
+homedecor.register("simple_bench", {
+ tiles = { "homedecor_generic_wood_old.png" },
+ description = "Simple Bench",
+ groups = {snappy=3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.15, 0, 0.5, -0.05, 0.4},
+ {-0.4, -0.5, 0.1, -0.3, -0.15, 0.3},
+ { 0.3, -0.5, 0.1, 0.4, -0.15, 0.3},
+ }
+ },
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("stonepath", {
+ description = "Garden stone path",
+ tiles = {
+ "default_stone.png"
+ },
+ inventory_image = "homedecor_stonepath_inv.png",
+ groups = { snappy=3 },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.5, 0.3125, -0.3125, -0.48, 0.4375}, -- NodeBox1
+ {-0.25, -0.5, 0.125, 0, -0.48, 0.375}, -- NodeBox2
+ {0.125, -0.5, 0.125, 0.4375, -0.48, 0.4375}, -- NodeBox3
+ {-0.4375, -0.5, -0.125, -0.25, -0.48, 0.0625}, -- NodeBox4
+ {-0.0625, -0.5, -0.25, 0.25, -0.48, 0.0625}, -- NodeBox5
+ {0.3125, -0.5, -0.25, 0.4375, -0.48, -0.125}, -- NodeBox6
+ {-0.3125, -0.5, -0.375, -0.125, -0.48, -0.1875}, -- NodeBox7
+ {0.125, -0.5, -0.4375, 0.25, -0.48, -0.3125}, -- NodeBox8
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.4375, -0.5, -0.4375, 0.4375, -0.4, 0.4375 }
+ },
+ sounds = default.node_sound_stone_defaults(),
+})
+
+local lattice_colors = {
+ {"wood", ".png^[colorize:#704214:180"},
+ {"white_wood", ".png"},
+ {"wood_vegetal", ".png^[colorize:#704214:180^homedecor_lattice_vegetal.png"},
+ {"white_wood_vegetal", ".png^homedecor_lattice_vegetal.png"},
+}
+
+for _, m in ipairs(lattice_colors) do
+homedecor.register("lattice_"..m[1], {
+ description = "Garden Lattice ("..m[1]..")",
+ tiles = {"homedecor_lattice"..m[2]},
+ inventory_image = "homedecor_lattice"..m[2],
+ groups = { snappy=3 },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.47, 0.5, 0.5, 0.47}, -- NodeBox1
+ {-0.5, 0.421875, 0.44, 0.5, 0.5, 0.5}, -- NodeBox2
+ {-0.5, -0.5, 0.44, 0.5, -0.421875, 0.5}, -- NodeBox3
+ {0.421875, -0.5, 0.44, 0.5, 0.5, 0.5}, -- NodeBox4
+ {-0.5, -0.5, 0.44, -0.421875, 0.5, 0.5} -- NodeBox5
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0.44, 0.5, 0.5, 0.5}
+ },
+ sounds = default.node_sound_wood_defaults(),
+})
+end
+
+homedecor.register("swing", {
+ description = "Tree's swing",
+ tiles = {
+ "homedecor_swing_top.png",
+ "homedecor_swing_top.png^[transformR180",
+ "homedecor_swing_top.png"
+ },
+ inventory_image = "homedecor_swing_inv.png",
+ groups = { snappy=3, oddly_breakable_by_hand=3 },
+ sounds = default.node_sound_wood_defaults(),
+ walkable = false,
+ on_rotate = screwdriver.disallow,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.3125, 0.33, -0.125, 0.3125, 0.376, 0.1875}, -- NodeBox1
+ {-0.3125, 0.376, 0.025, -0.3, 0.5, 0.0375}, -- NodeBox2
+ { 0.3, 0.376, 0.025, 0.3125, 0.5, 0.0375}, -- NodeBox3
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.3125, 0.33, -0.125, 0.3125, 0.5, 0.1875 }
+ },
+ hint = {
+ place_on = "bottom"
+ },
+ on_place = function(itemstack, placer, pointed_thing)
+ local isceiling, pos = homedecor.find_ceiling(itemstack, placer, pointed_thing)
+ if isceiling then
+ local height = 0
+
+ for i = 0, 4 do -- search up to 5 spaces downward from the ceiling for the first non-buildable-to node...
+ height = i
+ local testpos = { x=pos.x, y=pos.y-i-1, z=pos.z }
+ local testnode = minetest.get_node_or_nil(testpos)
+ local testreg = testnode and core.registered_nodes[testnode.name]
+
+ if not testreg or not testreg.buildable_to then
+ if i < 1 then
+ minetest.chat_send_player(placer:get_player_name(), "No room under there to hang a swing.")
+ return itemstack
+ else
+ break
+ end
+ end
+ end
+
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ for j = 0, height do -- then fill that space with ropes...
+ local testpos = { x=pos.x, y=pos.y-j, z=pos.z }
+ local testnode = minetest.get_node(testpos)
+ local testreg = core.registered_nodes[testnode.name]
+ minetest.set_node(testpos, { name = "homedecor:swing_rope", param2 = fdir })
+ end
+
+ minetest.set_node({ x=pos.x, y=pos.y-height, z=pos.z }, { name = "homedecor:swing", param2 = fdir })
+
+ if not homedecor.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ else
+ minetest.chat_send_player(placer:get_player_name(), "You have to point at the bottom side of an overhanging object to place a swing.")
+ end
+ return itemstack
+ end,
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ for i = 0, 4 do
+ local testpos = { x=pos.x, y=pos.y+i+1, z=pos.z }
+ if minetest.get_node(testpos).name == "homedecor:swing_rope" then
+ minetest.remove_node(testpos)
+ else
+ return
+ end
+ end
+ end
+})
+
+homedecor.register("swing_rope", {
+ tiles = {
+ "homedecor_swingrope_sides.png"
+ },
+ groups = { not_in_creative_inventory=1 },
+ walkable = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.3125, -0.5, 0.025, -0.3, 0.5, 0.0375}, -- NodeBox1
+ {0.3, -0.5, 0.025, 0.3125, 0.5, 0.0375}, -- NodeBox2
+ }
+ },
+ selection_box = homedecor.nodebox.null
+})
+
+homedecor.register("well", {
+ mesh = "homedecor_well.obj",
+ tiles = {
+ "homedecor_rope_texture.png",
+ "homedecor_generic_metal_black.png^[brighten",
+ "default_water.png",
+ "default_cobble.png",
+ "default_wood.png",
+ "homedecor_shingles_wood.png"
+ },
+ inventory_image = "homedecor_well_inv.png",
+ description = "Water well",
+ groups = { snappy = 3 },
+ selection_box = homedecor.nodebox.slab_y(2),
+ collision_box = homedecor.nodebox.slab_y(2),
+ expand = { top="placeholder" },
+ sounds = default.node_sound_stone_defaults(),
+ on_rotate = screwdriver.rotate_simple
+})
+
+if minetest.get_modpath("bucket") then
+ local original_bucket_on_use = minetest.registered_items["bucket:bucket_empty"].on_use
+ minetest.override_item("bucket:bucket_empty", {
+ on_use = function(itemstack, user, pointed_thing)
+ local inv = user:get_inventory()
+
+ if pointed_thing.type == "node" and minetest.get_node(pointed_thing.under).name == "homedecor:well" then
+ if inv:room_for_item("main", "bucket:bucket_water 1") then
+ itemstack:take_item()
+ inv:add_item("main", "bucket:bucket_water 1")
+ else
+ minetest.chat_send_player(user:get_player_name(), "No room in your inventory to add a filled bucket!")
+ end
+ return itemstack
+ else if original_bucket_on_use then
+ return original_bucket_on_use(itemstack, user, pointed_thing)
+ else return end
+ end
+ end
+ })
+end
+
+homedecor.shrub_colors = {
+ "green",
+ "red",
+ "yellow"
+}
+
+local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
+
+for _, color in ipairs(homedecor.shrub_colors) do
+ minetest.register_node("homedecor:shrubbery_large_"..color, {
+ description = S("Shrubbery ("..color..")"),
+ drawtype = "mesh",
+ mesh = "homedecor_cube.obj",
+ tiles = {"homedecor_shrubbery_"..color..".png"},
+ paramtype = "light",
+ is_ground_content = false,
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ })
+
+ minetest.register_node("homedecor:shrubbery_"..color, {
+ description = S("Shrubbery ("..color..")"),
+ drawtype = "mesh",
+ mesh = "homedecor_shrubbery.obj",
+ tiles = {
+ "homedecor_shrubbery_"..color..".png",
+ "homedecor_shrubbery_"..color.."_bottom.png",
+ "homedecor_shrubbery_roots.png"
+ },
+ paramtype = "light",
+ is_ground_content = false,
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = shrub_cbox,
+ collision_box = shrub_cbox,
+ })
+end
+
+minetest.register_alias("homedecor:well_top", "air")
+minetest.register_alias("homedecor:well_base", "homedecor:well")
+
+minetest.register_alias("gloopblocks:shrubbery", "homedecor:shrubbery_green")
+minetest.register_alias("gloopblocks:shrubbery_large", "homedecor:shrubbery_large_green")
diff --git a/homedecor_modpack/homedecor/fences.lua b/homedecor_modpack/homedecor/fences.lua
new file mode 100644
index 0000000..8352431
--- /dev/null
+++ b/homedecor_modpack/homedecor/fences.lua
@@ -0,0 +1,304 @@
+-- This file adds fences of various types
+
+local signs_modpath = minetest.get_modpath("signs_lib")
+
+local sign_post_model = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125},
+ {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125},
+ }
+}
+
+if signs_modpath then
+ sign_post_model = signs_lib.sign_post_model.nodebox
+end
+
+local S = homedecor.gettext
+local materials = {"brass", "wrought_iron"}
+
+for _, m in ipairs(materials) do
+
+homedecor.register("fence_"..m, {
+ description = S("Fence/railing ("..m..")"),
+ drawtype = "fencelike",
+ tiles = {"homedecor_generic_metal_"..m..".png"},
+ inventory_image = "homedecor_fence_"..m..".png",
+ selection_box = homedecor.nodebox.bar_y(1/7),
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+-- brass/wrought iron with signs:
+
+homedecor.register("fence_"..m.."_with_sign", {
+ description = S("Fence/railing with sign ("..m..")"),
+ tiles = {
+ "homedecor_sign_"..m.."_post_top.png",
+ "homedecor_sign_"..m.."_post_bottom.png",
+ "homedecor_sign_"..m.."_post_side.png",
+ "homedecor_sign_"..m.."_post_side.png",
+ "homedecor_sign_"..m.."_post_back.png",
+ "homedecor_sign_"..m.."_post_front.png",
+ },
+ wield_image = "homedecor_sign_"..m.."_post.png",
+ node_box = sign_post_model,
+ groups = {snappy=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ sunlight_propagates = true,
+ drop = {
+ max_items = 2,
+ items = {
+ { items = { "default:sign_wall" }},
+ { items = { "homedecor:fence_"..m }},
+ },
+ },
+})
+
+end
+
+-- other types of fences
+
+homedecor.register("fence_picket", {
+ description = S("Unpainted Picket Fence"),
+ tiles = {
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_fence_picket.png",
+ "homedecor_fence_picket.png",
+ "homedecor_fence_picket_backside.png",
+ "homedecor_fence_picket.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_z(-0.1),
+ node_box = homedecor.nodebox.slab_z(-0.002),
+})
+
+homedecor.register("fence_picket_corner", {
+ description = S("Unpainted Picket Fence Corner"),
+ tiles = {
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_fence_picket.png",
+ "homedecor_fence_picket_backside.png",
+ "homedecor_fence_picket_backside.png",
+ "homedecor_fence_picket.png",
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.corner_xz(0.1, -0.1),
+ node_box = homedecor.nodebox.corner_xz(0.002, -0.002),
+})
+
+homedecor.register("fence_picket_white", {
+ description = S("White Picket Fence"),
+ tiles = {
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_fence_picket_white.png",
+ "homedecor_fence_picket_white.png",
+ "homedecor_fence_picket_white_backside.png",
+ "homedecor_fence_picket_white.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_z(-0.1),
+ node_box = homedecor.nodebox.slab_z(-0.002),
+})
+
+homedecor.register("fence_picket_corner_white", {
+ description = S("White Picket Fence Corner"),
+ tiles = {
+ "homedecor_blanktile.png",
+ "homedecor_blanktile.png",
+ "homedecor_fence_picket_white.png",
+ "homedecor_fence_picket_white_backside.png",
+ "homedecor_fence_picket_white_backside.png",
+ "homedecor_fence_picket_white.png",
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.corner_xz(0.1, -0.1),
+ node_box = homedecor.nodebox.corner_xz(0.002, -0.002),
+})
+
+homedecor.register("fence_privacy", {
+ description = S("Wooden Privacy Fence"),
+ tiles = {
+ "homedecor_fence_privacy_tb.png",
+ "homedecor_fence_privacy_tb.png",
+ "homedecor_fence_privacy_sides.png",
+ "homedecor_fence_privacy_sides.png",
+ "homedecor_fence_privacy_backside.png",
+ "homedecor_fence_privacy_front.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_z(-3/16),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, 5/16, -5/16, 8/16, 7/16 }, -- left part
+ { -4/16, -8/16, 5/16, 3/16, 8/16, 7/16 }, -- middle part
+ { 4/16, -8/16, 5/16, 8/16, 8/16, 7/16 }, -- right part
+ { -8/16, -2/16, 7/16, 8/16, 2/16, 8/16 }, -- connecting rung
+ }
+ },
+})
+
+homedecor.register("fence_privacy_corner", {
+ description = S("Wooden Privacy Fence Corner"),
+ tiles = {
+ "homedecor_fence_privacy_corner_tb.png",
+ "homedecor_fence_privacy_corner_tb.png^[transformFY",
+ "homedecor_fence_privacy_corner_right.png",
+ "homedecor_fence_privacy_backside2.png",
+ "homedecor_fence_privacy_backside.png",
+ "homedecor_fence_privacy_corner_front.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ homedecor.box.slab_z(-3/16),
+ { -0.5, -0.5, -0.5, -5/16, 0.5, 5/16 },
+ }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -7/16, -8/16, 5/16, -5/16, 8/16, 7/16 }, -- left part
+ { -4/16, -8/16, 5/16, 3/16, 8/16, 7/16 }, -- middle part
+ { 4/16, -8/16, 5/16, 8/16, 8/16, 7/16 }, -- right part
+ { -8/16, -2/16, 7/16, 8/16, 2/16, 8/16 }, -- back-side connecting rung
+
+ { -7/16, -8/16, 4/16, -5/16, 8/16, 7/16 }, -- back-most part
+ { -7/16, -8/16, -4/16, -5/16, 8/16, 3/16 }, -- middle part
+ { -7/16, -8/16, -8/16, -5/16, 8/16, -5/16 }, -- front-most part
+ { -8/16, -2/16, -8/16, -7/16, 2/16, 7/16 }, -- left-side connecting rung
+ }
+ },
+})
+
+homedecor.register("fence_barbed_wire", {
+ description = S("Barbed Wire Fence"),
+ mesh = "homedecor_fence_barbed_wire.obj",
+ tiles = {"homedecor_fence_barbed_wire.png"},
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_z(-0.125),
+ collision_box = homedecor.nodebox.slab_z(-0.125),
+})
+
+homedecor.register("fence_barbed_wire_corner", {
+ description = S("Barbed Wire Fence Corner"),
+ mesh = "homedecor_fence_barbed_wire_corner.obj",
+ tiles = { "homedecor_fence_barbed_wire.png" },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.corner_xz(0.125, -0.125),
+ collision_box = homedecor.nodebox.corner_xz(0.125, -0.125),
+})
+
+homedecor.register("fence_chainlink", {
+ description = S("Chainlink Fence"),
+ mesh="homedecor_fence_chainlink.obj",
+ tiles = {
+ "homedecor_fence_chainlink_tb.png",
+ "homedecor_fence_chainlink_tb.png",
+ "homedecor_fence_chainlink_sides.png",
+ "homedecor_fence_chainlink_sides.png",
+ "homedecor_fence_chainlink_fb.png",
+ "homedecor_fence_chainlink_fb.png",
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_z(-0.125),
+ collision_box = homedecor.nodebox.slab_z(-0.125),
+})
+
+
+homedecor.register("fence_chainlink_corner", {
+ description = S("Chainlink Fence Corner"),
+ mesh = "homedecor_fence_chainlink_corner.obj",
+ tiles = {
+ "homedecor_fence_chainlink_corner_top.png",
+ "homedecor_fence_chainlink_corner_top.png",
+ "homedecor_fence_chainlink_corner_front.png",
+ "homedecor_fence_chainlink_corner_front.png",
+ "homedecor_fence_chainlink_corner_front.png",
+ "homedecor_fence_chainlink_corner_front.png",
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.corner_xz(0.125, -0.125),
+ collision_box = homedecor.nodebox.corner_xz(0.125, -0.125),
+})
+
+homedecor.register("fence_wrought_iron_2", {
+ description = S("Wrought Iron fence (type 2)"),
+ tiles = {
+ "homedecor_fence_wrought_iron_2_tb.png",
+ "homedecor_fence_wrought_iron_2_tb.png",
+ "homedecor_fence_wrought_iron_2_sides.png",
+ "homedecor_fence_wrought_iron_2_sides.png",
+ "homedecor_fence_wrought_iron_2_fb.png",
+ "homedecor_fence_wrought_iron_2_fb.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_z(-0.08),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, 14/32, -7.75/16, 8/16, 16/32 }, -- left post
+ { 7.75/16, -8/16, 14/32, 8/16, 8/16, 16/32 }, -- right post
+ { -8/16, 7.75/16, 14/32, 8/16, 8/16, 16/32 }, -- top piece
+ { -8/16, -0.015625, 14.75/32, 8/16, 0.015625, 15.25/32 }, -- cross piece
+ { -0.015625, -8/16, 14.75/32, 0.015625, 8/16, 15.25/32 }, -- cross piece
+ { -8/16, -8/16, 14/32, 8/16, -7.75/16, 16/32 }, -- bottom piece
+ { -8/16, -8/16, 15/32, 8/16, 8/16, 15/32 } -- the grid itself
+ }
+ },
+})
+
+homedecor.register("fence_wrought_iron_2_corner", {
+ description = S("Wrought Iron fence (type 2) Corner"),
+ tiles = {
+ "homedecor_fence_corner_wrought_iron_2_tb.png",
+ "homedecor_fence_corner_wrought_iron_2_tb.png",
+ "homedecor_fence_corner_wrought_iron_2_sides.png^[transformFX",
+ "homedecor_fence_corner_wrought_iron_2_sides.png",
+ "homedecor_fence_corner_wrought_iron_2_sides.png^[transformFX",
+ "homedecor_fence_corner_wrought_iron_2_sides.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.corner_xz(0.08, -0.08),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, 0.453125, -0.453125, 0.5, 0.5 }, -- corner edge
+ { -7.5/16, 7.75/16, 14/32, 8/16, 8/16, 16/32 }, -- top piece
+ { -7.5/16, -8/16, 14/32, 8/16, -7.75/16, 16/32 }, -- bottom piece
+ { -16/32, 7.75/16, -8/16, -14/32, 8/16, 8/16 }, -- top piece, side
+ { -16/32, -8/16, -8/16, -14/32, -7.75/16, 8/16 }, -- bottom piece, side
+ { -7.5/16, -8/16, 7.5/16, 8/16, 8/16, 7.5/16 }, -- the grid itself
+ { -7.5/16, -8/16, -8/16, -7.5/16, 8/16, 7.5/16 }, -- the grid itself, side
+ { -15.5/32, -0.5, -0.5, -14.5/32, 0.5, -0.484375 }, -- left post side
+ { 7.75/16, -8/16, 14.5/32, 8/16, 8/16, 15.5/32 }, -- right post
+ { -8/16, -0.015625, 14.75/32, 8/16, 0.015625, 15.25/32 }, -- cross piece
+ { -0.015625, -8/16, 14.75/32, 0.015625, 8/16, 15.25/32 }, -- cross piece
+ { -15.25/32, -0.5, -0.015625, -14.75/32, 0.5, 0.015625 }, -- cross piece side
+ { -15.25/32, -0.015625, -0.5, -14.75/32, 0.015625, 0.5 } -- cross piece side
+ }
+ },
+})
+
+if signs_modpath then
+ signs_lib.register_fence_with_sign("homedecor:fence_brass", "homedecor:fence_brass_with_sign")
+ signs_lib.register_fence_with_sign("homedecor:fence_wrought_iron", "homedecor:fence_wrought_iron_with_sign")
+end
+
diff --git a/homedecor_modpack/homedecor/foyer.lua b/homedecor_modpack/homedecor/foyer.lua
new file mode 100644
index 0000000..6d9afa7
--- /dev/null
+++ b/homedecor_modpack/homedecor/foyer.lua
@@ -0,0 +1,61 @@
+local S = homedecor.gettext
+
+homedecor.register("coatrack_wallmount", {
+ tiles = { homedecor.plain_wood },
+ inventory_image = "homedecor_coatrack_wallmount_inv.png",
+ description = "Coatrack (wallmounted)",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.375, 0, 0.4375, 0.375, 0.14, 0.5}, -- NodeBox1
+ {-0.3025, 0.0475, 0.375, -0.26, 0.09, 0.4375}, -- NodeBox2
+ {0.26, 0.0475, 0.375, 0.3025, 0.09, 0.4375}, -- NodeBox3
+ {0.0725, 0.0475, 0.375, 0.115, 0.09, 0.4375}, -- NodeBox4
+ {-0.115, 0.0475, 0.375, -0.0725, 0.09, 0.4375}, -- NodeBox5
+ {0.24, 0.025, 0.352697, 0.3225, 0.115, 0.375}, -- NodeBox6
+ {-0.3225, 0.025, 0.352697, -0.24, 0.115, 0.375}, -- NodeBox7
+ {-0.135, 0.025, 0.352697, -0.0525, 0.115, 0.375}, -- NodeBox8
+ {0.0525, 0.025, 0.352697, 0.135, 0.115, 0.375}, -- NodeBox9
+ }
+ },
+})
+
+homedecor.register("coat_tree", {
+ mesh = "homedecor_coatrack.obj",
+ tiles = {
+ homedecor.plain_wood,
+ "homedecor_generic_wood_old.png"
+ },
+ inventory_image = "homedecor_coatrack_inv.png",
+ description = "Coat tree",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ expand = { top="placeholder" },
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.4, -0.5, -0.4, 0.4, 1.5, 0.4 }
+ },
+ on_rotate = screwdriver.rotate_simple
+})
+
+for _, color in pairs({ "green", "brown", "grey" }) do
+ homedecor.register("welcome_mat_"..color, {
+ description = "Welcome Mat ("..color..")",
+ tiles = {
+ "homedecor_welcome_mat_"..color..".png",
+ "homedecor_welcome_mat_bottom.png",
+ "homedecor_welcome_mat_"..color..".png",
+ },
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.25},
+ }),
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.375, 0.5, -0.46875, 0.375 }
+ }
+ })
+end
diff --git a/homedecor_modpack/homedecor/furniture.lua b/homedecor_modpack/homedecor/furniture.lua
new file mode 100644
index 0000000..338a95c
--- /dev/null
+++ b/homedecor_modpack/homedecor/furniture.lua
@@ -0,0 +1,164 @@
+local S = homedecor.gettext
+
+local table_colors = {
+ { "", homedecor.plain_wood },
+ { "_mahogany", homedecor.mahogany_wood },
+ { "_white", homedecor.white_wood }
+}
+
+for i in ipairs(table_colors) do
+ local desc = S("Table ("..i..")")
+
+ if i == 1 then
+ desc = S("Table")
+ end
+
+ homedecor.register("table"..table_colors[i][1], {
+ description = desc,
+ tiles = { table_colors[i][2] },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.4, -0.5, -0.4, -0.3, 0.4, -0.3 },
+ { 0.3, -0.5, -0.4, 0.4, 0.4, -0.3 },
+ { -0.4, -0.5, 0.3, -0.3, 0.4, 0.4 },
+ { 0.3, -0.5, 0.3, 0.4, 0.4, 0.4 },
+ { -0.5, 0.4, -0.5, 0.5, 0.5, 0.5 },
+ { -0.4, -0.2, -0.3, -0.3, -0.1, 0.3 },
+ { 0.3, -0.2, -0.4, 0.4, -0.1, 0.3 },
+ { -0.3, -0.2, -0.4, 0.4, -0.1, -0.3 },
+ { -0.3, -0.2, 0.3, 0.3, -0.1, 0.4 },
+ },
+ },
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ })
+end
+
+local chaircolors = {
+ { "", "plain" },
+ { "black", "Black" },
+ { "red", "Red" },
+ { "pink", "Pink" },
+ { "violet", "Violet" },
+ { "blue", "Blue" },
+ { "dark_green", "Dark Green" },
+}
+
+local kc_cbox = {
+ type = "fixed",
+ fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 },
+}
+
+local ac_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
+ {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
+ }
+}
+
+for i in ipairs(chaircolors) do
+
+ local color = "_"..chaircolors[i][1]
+ local color2 = chaircolors[i][1]
+ local name = S(chaircolors[i][2])
+ local chairtiles = {
+ homedecor.plain_wood,
+ "wool"..color..".png",
+ }
+
+ if chaircolors[i][1] == "" then
+ color = ""
+ chairtiles = {
+ homedecor.plain_wood,
+ homedecor.plain_wood
+ }
+ end
+
+ homedecor.register("chair"..color, {
+ description = S("Kitchen chair (%s)"):format(name),
+ mesh = "homedecor_kitchen_chair.obj",
+ tiles = chairtiles,
+ selection_box = kc_cbox,
+ collision_box = kc_cbox,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ on_rightclick = function(pos, node, clicker)
+ pos.y = pos.y+0 -- where do I put my ass ?
+ homedecor.sit(pos, node, clicker)
+ end
+ })
+
+ if color ~= "" then
+ homedecor.register("armchair"..color, {
+ description = S("Armchair (%s)"):format(name),
+ mesh = "forniture_armchair.obj",
+ tiles = {
+ "wool"..color..".png",
+ "wool_dark_grey.png",
+ "default_wood.png"
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = ac_cbox
+ })
+
+ minetest.register_craft({
+ output = "homedecor:armchair"..color.." 2",
+ recipe = {
+ { "wool:"..color2,""},
+ { "group:wood","group:wood" },
+ { "wool:"..color2,"wool:"..color2 },
+ },
+ })
+ end
+end
+
+local ob_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
+}
+
+minetest.register_node(":homedecor:openframe_bookshelf", {
+ description = "Bookshelf (open-frame)",
+ drawtype = "mesh",
+ mesh = "homedecor_openframe_bookshelf.obj",
+ tiles = {
+ "homedecor_openframe_bookshelf_books.png",
+ "default_wood.png"
+ },
+ groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = ob_cbox,
+ collision_box = ob_cbox,
+})
+
+homedecor.register("wall_shelf", {
+ description = "Wall Shelf",
+ tiles = {
+ "homedecor_wood_table_large_edges.png",
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, 0.4, 0.47, 0.5, 0.47, 0.5},
+ {-0.5, 0.47, -0.1875, 0.5, 0.5, 0.5}
+ }
+ }
+})
+
+-- Aliases for 3dforniture mod.
+
+minetest.register_alias("3dforniture:table", "homedecor:table")
+minetest.register_alias("3dforniture:chair", "homedecor:chair")
+minetest.register_alias("3dforniture:armchair", "homedecor:armchair_black")
+minetest.register_alias("homedecor:armchair", "homedecor:armchair_black")
+
+minetest.register_alias('table', 'homedecor:table')
+minetest.register_alias('chair', 'homedecor:chair')
+minetest.register_alias('armchair', 'homedecor:armchair')
diff --git a/homedecor_modpack/homedecor/furniture_medieval.lua b/homedecor_modpack/homedecor/furniture_medieval.lua
new file mode 100644
index 0000000..a029d5c
--- /dev/null
+++ b/homedecor_modpack/homedecor/furniture_medieval.lua
@@ -0,0 +1,114 @@
+
+local S = homedecor.gettext
+
+homedecor.register("bars", {
+ description = S("Bars"),
+ tiles = { "homedecor_generic_metal_black.png^[transformR270" },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.50, -0.10, -0.4, 0.50, 0.10 },
+ { -0.1, -0.50, -0.10, 0.1, 0.50, 0.10 },
+ { 0.4, -0.50, -0.10, 0.5, 0.50, 0.10 },
+ { -0.5, -0.50, -0.05, 0.5, -0.45, 0.05 },
+ { -0.5, 0.45, -0.05, 0.5, 0.50, 0.05 },
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.1, 0.5, 0.5, 0.1 },
+ },
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+--L Binding Bars
+homedecor.register("L_binding_bars", {
+ description = S("Binding Bars"),
+ tiles = { "homedecor_generic_metal_black.png^[transformR270" },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.10, -0.50, -0.50, 0.10, 0.50, -0.40 },
+ { -0.15, -0.50, -0.15, 0.15, 0.50, 0.15 },
+ { 0.40, -0.50, -0.10, 0.50, 0.50, 0.10 },
+ { 0.00, -0.50, -0.05, 0.50, -0.45, 0.05 },
+ { -0.05, -0.50, -0.50, 0.05, -0.45, 0.00 },
+ { 0.00, 0.45, -0.05, 0.50, 0.50, 0.05 },
+ { -0.05, 0.45, -0.50, 0.05, 0.50, 0.00 },
+ },
+ },
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+local chain_cbox = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, 1/4, 1/2, 1/2, 1/2},
+}
+
+homedecor.register("chains", {
+ description = S("Chains"),
+ mesh = "forniture_chains.obj",
+ tiles = { "homedecor_generic_metal_black.png" },
+ inventory_image="forniture_chains_inv.png",
+ selection_box = chain_cbox,
+ walkable = false,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+homedecor.register("torch_wall", {
+ description = S("Wall Torch"),
+ mesh = "forniture_torch.obj",
+ tiles = {
+ {
+ name="forniture_torch_flame.png",
+ animation={
+ type="vertical_frames",
+ aspect_w=40,
+ aspect_h=40,
+ length=1.0,
+ },
+ },
+ "homedecor_generic_metal_black.png",
+ "homedecor_generic_metal_black.png^[brighten",
+ "forniture_coal.png",
+ },
+ inventory_image="forniture_torch_inv.png",
+ walkable = false,
+ light_source = 14,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.15, -0.45, 0.15, 0.15,0.35, 0.5 },
+ },
+ groups = {cracky=3},
+})
+
+local wl_cbox = {
+ type = "fixed",
+ fixed = { -0.2, -0.5, 0, 0.2, 0.5, 0.5 },
+}
+
+homedecor.register("wall_lamp", {
+ description = S("Wall Lamp"),
+ mesh = "homedecor_wall_lamp.obj",
+ tiles = {"homedecor_generic_metal_black.png^[brighten", "homedecor_generic_wood_luxury.png^[colorize:#000000:30",
+ "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png"},
+ use_texture_alpha = true,
+ inventory_image = "homedecor_wall_lamp_inv.png",
+ groups = {snappy=3},
+ light_source = 11,
+ selection_box = wl_cbox,
+ walkable = false
+})
+
+minetest.register_alias("3dforniture:bars", "homedecor:bars")
+minetest.register_alias("3dforniture:L_binding_bars", "homedecor:L_binding_bars")
+minetest.register_alias("3dforniture:chains", "homedecor:chains")
+minetest.register_alias("3dforniture:torch_wall", "homedecor:torch_wall")
+
+minetest.register_alias('bars', 'homedecor:bars')
+minetest.register_alias('binding_bars', 'homedecor:L_binding_bars')
+minetest.register_alias('chains', 'homedecor:chains')
+minetest.register_alias('torch_wall', 'homedecor:torch_wall')
diff --git a/homedecor_modpack/homedecor/furniture_recipes.lua b/homedecor_modpack/homedecor/furniture_recipes.lua
new file mode 100644
index 0000000..208a31a
--- /dev/null
+++ b/homedecor_modpack/homedecor/furniture_recipes.lua
@@ -0,0 +1,262 @@
+
+minetest.register_craft({
+ output = "homedecor:table", "homedecor:chair 2",
+ recipe = {
+ { "group:wood","group:wood", "group:wood" },
+ { "group:stick", "", "group:stick" },
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:table_mahogany",
+ recipe = {
+ "homedecor:table",
+ "dye:brown",
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:table_mahogany",
+ recipe = {
+ "homedecor:table",
+ "unifieddyes:dark_orange",
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:table_white",
+ recipe = {
+ "homedecor:table",
+ "dye:white",
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:table",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:table_mahogany",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:table_white",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ output = "homedecor:chair 2",
+ recipe = {
+ { "group:stick",""},
+ { "group:wood","group:wood" },
+ { "group:stick","group:stick" },
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:chair",
+ burntime = 15,
+})
+
+local chaircolors = { "black", "red", "pink", "violet", "blue", "dark_green" }
+
+for _, color in ipairs(chaircolors) do
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:chair_"..color,
+ recipe = {
+ "homedecor:chair",
+ "wool:white",
+ "dye:"..color
+ },
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:chair_"..color,
+ recipe = {
+ "homedecor:chair",
+ "wool:"..color
+ },
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:chair_"..color,
+ burntime = 15,
+ })
+end
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:armchair",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ output = "homedecor:table_lamp_white_off",
+ recipe = {
+ {"default:paper","default:torch" ,"default:paper"},
+ {"","group:stick",""},
+ {"","stairs:slab_wood",""},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:table_lamp_white_off",
+ recipe = {
+ {"default:paper","default:torch" ,"default:paper"},
+ {"","group:stick",""},
+ {"","moreblocks:slab_wood",""},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:standing_lamp_white_off",
+ recipe = {
+ {"homedecor:table_lamp_white_off"},
+ {"group:stick"},
+ {"group:stick"},
+ },
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:table_lamp_white_off",
+ burntime = 10,
+})
+
+local lamp_colors = { "blue", "green", "pink", "red", "violet" }
+
+for _, color in ipairs(lamp_colors) do
+
+ minetest.register_craft({
+ output = "homedecor:table_lamp_"..color.."_off",
+ recipe = {
+ {"wool:"..color,"default:torch" ,"wool:"..color},
+ {"","group:stick",""},
+ {"","stairs:slab_wood",""},
+ },
+ })
+
+ minetest.register_craft({
+ output = "homedecor:table_lamp_"..color.."_off",
+ recipe = {
+ {"wool:"..color,"default:torch" ,"wool:"..color},
+ {"","group:stick",""},
+ {"","moreblocks:slab_wood",""},
+ },
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:table_lamp_"..color.."_off",
+ recipe = {
+ "dye:"..color,
+ "homedecor:table_lamp_off",
+ },
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:table_lamp_"..color.."_off",
+ burntime = 10,
+ })
+
+ minetest.register_craft({
+ output = "homedecor:standing_lamp_"..color.."_off",
+ recipe = {
+ {"homedecor:table_lamp_"..color.."_off"},
+ {"group:stick"},
+ {"group:stick"},
+ },
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:standing_lamp_"..color.."_off",
+ recipe = {
+ "homedecor:standing_lamp_off",
+ "dye:"..color
+ },
+ })
+
+end
+
+minetest.register_craft({
+ output = "homedecor:toilet",
+ recipe = {
+ {"","","bucket:bucket_water"},
+ { "group:marble","group:marble", "group:marble" },
+ { "", "bucket:bucket_empty", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:sink",
+ recipe = {
+ { "group:marble","bucket:bucket_empty", "group:marble" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:taps",
+ recipe = {
+ { "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:taps_brass",
+ recipe = {
+ { "technic:brass_ingot","bucket:bucket_water", "technic:brass_ingot" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:shower_tray",
+ recipe = {
+ { "group:marble","bucket:bucket_water", "group:marble" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:shower_head",
+ recipe = {
+ {"default:steel_ingot", "bucket:bucket_water"},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:bars 6",
+ recipe = {
+ { "default:steel_ingot","default:steel_ingot","default:steel_ingot" },
+ { "homedecor:pole_wrought_iron","homedecor:pole_wrought_iron","homedecor:pole_wrought_iron" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:L_binding_bars 3",
+ recipe = {
+ { "homedecor:bars","" },
+ { "homedecor:bars","homedecor:bars" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:torch_wall 10",
+ recipe = {
+ { "default:coal_lump" },
+ { "default:steel_ingot" },
+ },
+})
diff --git a/homedecor_modpack/homedecor/gastronomy.lua b/homedecor_modpack/homedecor/gastronomy.lua
new file mode 100644
index 0000000..d4bc611
--- /dev/null
+++ b/homedecor_modpack/homedecor/gastronomy.lua
@@ -0,0 +1,208 @@
+local S = homedecor.gettext
+
+local cutlery_cbox = {
+ type = "fixed",
+ fixed = {
+ { -5/16, -8/16, -6/16, 5/16, -7/16, 2/16 },
+ { -2/16, -8/16, 2/16, 2/16, -4/16, 6/16 }
+ }
+}
+
+homedecor.register("cutlery_set", {
+ drawtype = "mesh",
+ mesh = "homedecor_cutlery_set.obj",
+ tiles = { "homedecor_cutlery_set.png" },
+ inventory_image = "homedecor_cutlery_set_inv.png",
+ description = "Cutlery set",
+ groups = {snappy=3},
+ selection_box = cutlery_cbox,
+ walkable = false,
+ sounds = default.node_sound_glass_defaults(),
+})
+
+local bottle_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.125, -0.5, -0.125, 0.125, 0, 0.125}
+ }
+}
+
+local fbottle_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.375, -0.5, -0.3125, 0.375, 0, 0.3125 }
+ }
+}
+
+local bottle_colors = {"brown", "green"}
+
+for _, b in ipairs(bottle_colors) do
+
+ homedecor.register("bottle_"..b, {
+ tiles = { "homedecor_bottle_"..b..".png" },
+ inventory_image = "homedecor_bottle_"..b.."_inv.png",
+ description = "Bottle ("..b..")",
+ mesh = "homedecor_bottle.obj",
+ walkable = false,
+ groups = {snappy=3},
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = bottle_cbox
+ })
+
+ -- 4-bottle sets
+
+ homedecor.register("4_bottles_"..b, {
+ tiles = {
+ "homedecor_bottle_"..b..".png",
+ "homedecor_bottle_"..b..".png"
+ },
+ inventory_image = "homedecor_4_bottles_"..b.."_inv.png",
+ description = "Four "..b.." bottles",
+ mesh = "homedecor_4_bottles.obj",
+ walkable = false,
+ groups = {snappy=3},
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = fbottle_cbox
+ })
+end
+
+homedecor.register("4_bottles_multi", {
+ tiles = {
+ "homedecor_bottle_brown.png",
+ "homedecor_bottle_green.png"
+ },
+ inventory_image = "homedecor_4_bottles_multi_inv.png",
+ description = "Four misc brown/green bottles",
+ mesh = "homedecor_4_bottles.obj",
+ groups = {snappy=3},
+ walkable = false,
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = fbottle_cbox
+})
+
+local wine_cbox = homedecor.nodebox.slab_z(-0.75)
+homedecor.register("wine_rack", {
+ description = "Wine Rack",
+ mesh = "homedecor_wine_rack.obj",
+ tiles = {
+ "homedecor_generic_wood_red.png",
+ "homedecor_bottle_brown.png",
+ "homedecor_bottle_brown2.png",
+ "homedecor_bottle_brown3.png",
+ "homedecor_bottle_brown4.png"
+ },
+ inventory_image = "homedecor_wine_rack_inv.png",
+ groups = {choppy=2},
+ selection_box = wine_cbox,
+ collision_box = wine_cbox,
+ sounds = default.node_sound_defaults(),
+})
+
+homedecor.register("dartboard", {
+ description = "Dartboard",
+ mesh = "homedecor_dartboard.obj",
+ tiles = { "homedecor_dartboard.png" },
+ inventory_image = "homedecor_dartboard_inv.png",
+ wield_image = "homedecor_dartboard_inv.png",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ selection_box = {
+ type = "wallmounted",
+ },
+ groups = {choppy=2,dig_immediate=2,attached_node=1},
+ legacy_wallmounted = true,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("beer_tap", {
+ description = "Beer tap",
+ mesh = "homedecor_beer_taps.obj",
+ tiles = {
+ "homedecor_generic_metal_bright.png",
+ "homedecor_generic_metal_black.png",
+ },
+ inventory_image = "homedecor_beertap_inv.png",
+ groups = { snappy=3 },
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 }
+ },
+ on_punch = function(pos, node, puncher, pointed_thing)
+ local wielditem = puncher:get_wielded_item()
+ local inv = puncher:get_inventory()
+
+ local wieldname = wielditem:get_name()
+ if wieldname == "vessels:drinking_glass" then
+ if inv:room_for_item("main", "homedecor:beer_mug 1") then
+ wielditem:take_item()
+ puncher:set_wielded_item(wielditem)
+ inv:add_item("main", "homedecor:beer_mug 1")
+ minetest.chat_send_player(puncher:get_player_name(), "Ahh, a frosty cold beer - look in your inventory for it!")
+ else
+ minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a beer mug!")
+ end
+ end
+ end
+})
+
+minetest.register_craft({
+ output = "homedecor:beer_tap",
+ recipe = {
+ { "group:stick","default:steel_ingot","group:stick" },
+ { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" },
+ { "default:steel_ingot","default:steel_ingot","default:steel_ingot" }
+ },
+})
+
+local beer_cbox = {
+ type = "fixed",
+ fixed = { -5/32, -8/16, -9/32 , 7/32, -2/16, 1/32 }
+}
+
+homedecor.register("beer_mug", {
+ description = "Beer mug",
+ drawtype = "mesh",
+ mesh = "homedecor_beer_mug.obj",
+ tiles = { "homedecor_beer_mug.png" },
+ inventory_image = "homedecor_beer_mug_inv.png",
+ groups = { snappy=3, oddly_breakable_by_hand=3 },
+ walkable = false,
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = beer_cbox,
+ on_use = minetest.item_eat(2)
+})
+
+local svm_cbox = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
+}
+
+homedecor.register("soda_machine", {
+ description = "Soda Vending Machine",
+ mesh = "homedecor_soda_machine.obj",
+ tiles = {"homedecor_soda_machine.png"},
+ groups = {snappy=3},
+ selection_box = svm_cbox,
+ collision_box = svm_cbox,
+ expand = { top="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.rotate_simple,
+ on_punch = function(pos, node, puncher, pointed_thing)
+ local wielditem = puncher:get_wielded_item()
+ local wieldname = wielditem:get_name()
+ local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} }
+ local fdir = node.param2
+ local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] }
+ if wieldname == "homedecor:coin" then
+ wielditem:take_item()
+ puncher:set_wielded_item(wielditem)
+ minetest.spawn_item(pos_drop, "homedecor:soda_can")
+ minetest.sound_play("insert_coin", {
+ pos=pos, max_hear_distance = 5
+ })
+ else
+ minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.")
+ end
+ end
+})
diff --git a/homedecor_modpack/homedecor/handlers/expansion.lua b/homedecor_modpack/homedecor/handlers/expansion.lua
new file mode 100644
index 0000000..0767837
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/expansion.lua
@@ -0,0 +1,362 @@
+local S = homedecor.gettext
+
+-- vectors to place one node next to or behind another
+
+homedecor.fdir_to_right = {
+ { 1, 0 },
+ { 0, -1 },
+ { -1, 0 },
+ { 0, 1 },
+}
+
+homedecor.fdir_to_left = {
+ { -1, 0 },
+ { 0, 1 },
+ { 1, 0 },
+ { 0, -1 },
+}
+
+homedecor.fdir_to_fwd = {
+ { 0, 1 },
+ { 1, 0 },
+ { 0, -1 },
+ { -1, 0 },
+}
+
+local placeholder_node = "homedecor:expansion_placeholder"
+minetest.register_node(placeholder_node, {
+ description = "Expansion placeholder (you hacker you!)",
+ groups = { not_in_creative_inventory=1 },
+ drawtype = "airlike",
+ paramtype = "light",
+ walkable = false,
+ selection_box = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } },
+ is_ground_content = false,
+ sunlight_propagates = true,
+ buildable_to = false,
+})
+
+--- select which node was pointed at based on it being known, not ignored, buildable_to
+-- returns nil if no node could be selected
+local function select_node(pointed_thing)
+ local pos = pointed_thing.under
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+
+ if not def or not def.buildable_to then
+ pos = pointed_thing.above
+ node = minetest.get_node_or_nil(pos)
+ def = node and minetest.registered_nodes[node.name]
+ end
+ return def and pos, def
+end
+
+--- check if all nodes can and may be build to
+local function is_buildable_to(placer_name, ...)
+ for _, pos in ipairs({...}) do
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+ if not (def and def.buildable_to) or minetest.is_protected(pos, placer_name) then
+ return false
+ end
+ end
+ return true
+end
+
+-- place one or two nodes if and only if both can be placed
+local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
+ local placer_name = placer:get_player_name() or ""
+ if is_buildable_to(placer_name, pos, pos2) then
+ local fdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.set_node(pos, { name = node1, param2 = fdir })
+ node2 = node2 or "air" -- this can be used to clear buildable_to nodes even though we are using a multinode mesh
+ -- do not assume by default, as we still might want to allow overlapping in some cases
+ local has_facedir = node2 ~= "air"
+ if node2 == "placeholder" then
+ has_facedir = false
+ node2 = placeholder_node
+ end
+ minetest.set_node(pos2, { name = node2, param2 = (has_facedir and fdir) or nil })
+
+ -- call after_place_node of the placed node if available
+ local ctrl_node_def = minetest.registered_nodes[node1]
+ if ctrl_node_def and ctrl_node_def.after_place_node then
+ ctrl_node_def.after_place_node(pos, placer)
+ end
+
+ if not homedecor.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ end
+ return itemstack
+end
+
+local function rightclick_pointed_thing(pos, placer, itemstack)
+ local node = minetest.get_node_or_nil(pos)
+ if not node then return false end
+ local def = minetest.registered_nodes[node.name]
+ if not def or not def.on_rightclick then return false end
+ return def.on_rightclick(pos, node, placer, itemstack) or itemstack
+end
+
+-- Stack one node above another
+-- leave the last argument nil if it's one 2m high node
+function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ if rightclick_result then return rightclick_result end
+
+ local pos, def = select_node(pointed_thing)
+ if not pos then return itemstack end
+
+ local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
+
+ return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2)
+end
+
+-- Stack one door node above another
+-- like homedecor.stack_vertically but tests first if it was placed as a right wing, then uses node1_right and node2_right instead
+
+function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, node1_right, node2_right)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ if rightclick_result then return rightclick_result end
+
+ local pos, def = select_node(pointed_thing)
+ if not pos then return itemstack end
+
+ local forceright = placer:get_player_control()["sneak"]
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+
+ local is_right_wing = node1 == minetest.get_node({ x = pos.x + homedecor.fdir_to_left[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_left[fdir+1][2] }).name
+ if forceright or is_right_wing then
+ node1, node2 = node1_right, node2_right
+ end
+
+ local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
+ return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2)
+end
+
+function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ if rightclick_result then return rightclick_result end
+
+ local pos, def = select_node(pointed_thing)
+ if not pos then return itemstack end
+
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local fdir_transform = dir and homedecor.fdir_to_right or homedecor.fdir_to_fwd
+
+ local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] }
+
+ return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
+end
+
+function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
+
+ local thisnode = minetest.get_node(pos)
+ local fdir = thisnode.param2
+
+ local fxd = homedecor.fdir_to_fwd[fdir+1][1]
+ local fzd = homedecor.fdir_to_fwd[fdir+1][2]
+
+ local forwardpos = {x=pos.x+fxd, y=pos.y, z=pos.z+fzd}
+ local forwardnode = minetest.get_node(forwardpos)
+
+ local def = minetest.registered_nodes[forwardnode.name]
+ local placer_name = placer:get_player_name()
+
+ if not (def and def.buildable_to) then
+ minetest.chat_send_player( placer:get_player_name(), "Not enough room - the space for the headboard is occupied!" )
+ minetest.set_node(pos, {name = "air"})
+ return true
+ end
+
+ if minetest.is_protected(forwardpos, placer_name) then
+ minetest.chat_send_player( placer:get_player_name(), "Someone already owns the spot where the headboard goes." )
+ return true
+ end
+
+ minetest.set_node(forwardpos, {name = "air"})
+
+ local lxd = homedecor.fdir_to_left[fdir+1][1]
+ local lzd = homedecor.fdir_to_left[fdir+1][2]
+ local leftpos = {x=pos.x+lxd, y=pos.y, z=pos.z+lzd}
+ local leftnode = minetest.get_node(leftpos)
+
+ local rxd = homedecor.fdir_to_right[fdir+1][1]
+ local rzd = homedecor.fdir_to_right[fdir+1][2]
+ local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
+ local rightnode = minetest.get_node(rightpos)
+
+ if leftnode.name == "homedecor:bed_"..color.."_regular" then
+ local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
+ minetest.set_node(pos, {name = "air"})
+ minetest.set_node(leftpos, { name = newname, param2 = fdir})
+ elseif rightnode.name == "homedecor:bed_"..color.."_regular" then
+ local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
+ minetest.set_node(rightpos, {name = "air"})
+ minetest.set_node(pos, { name = newname, param2 = fdir})
+ end
+
+ local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
+ local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
+
+ if string.find(topnode.name, "homedecor:bed_.*_regular$") then
+ if fdir == topnode.param2 then
+ local newname = string.gsub(thisnode.name, "_regular", "_extended")
+ minetest.set_node(pos, { name = newname, param2 = fdir})
+ end
+ end
+
+ if string.find(bottomnode.name, "homedecor:bed_.*_regular$") then
+ if fdir == bottomnode.param2 then
+ local newname = string.gsub(bottomnode.name, "_regular", "_extended")
+ minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir})
+ end
+ end
+end
+
+function homedecor.unextend_bed(pos, color)
+ local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
+ local fdir = bottomnode.param2
+ if string.find(bottomnode.name, "homedecor:bed_.*_extended$") then
+ local newname = string.gsub(bottomnode.name, "_extended", "_regular")
+ minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir})
+ end
+end
+
+function homedecor.place_banister(itemstack, placer, pointed_thing)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ if rightclick_result then return rightclick_result end
+
+ local pos, def = select_node(pointed_thing)
+ if not pos then return itemstack end
+
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+
+ local abovepos = { x=pos.x, y=pos.y+1, z=pos.z }
+ local abovenode = minetest.get_node(abovepos)
+
+ local adef = minetest.registered_nodes[abovenode.name]
+ local placer_name = placer:get_player_name()
+
+ if not (adef and adef.buildable_to) then
+ minetest.chat_send_player(placer_name, "Not enough room - the upper space is occupied!" )
+ return itemstack
+ end
+
+ if minetest.is_protected(abovepos, placer_name) then
+ minetest.chat_send_player(placer_name, "Someone already owns that spot." )
+ return itemstack
+ end
+
+ local lxd = homedecor.fdir_to_left[fdir+1][1]
+ local lzd = homedecor.fdir_to_left[fdir+1][2]
+
+ local rxd = homedecor.fdir_to_right[fdir+1][1]
+ local rzd = homedecor.fdir_to_right[fdir+1][2]
+
+ local fxd = homedecor.fdir_to_fwd[fdir+1][1]
+ local fzd = homedecor.fdir_to_fwd[fdir+1][2]
+
+ local below_pos = { x=pos.x, y=pos.y-1, z=pos.z }
+ local fwd_pos = { x=pos.x+fxd, y=pos.y, z=pos.z+fzd }
+ local left_pos = { x=pos.x+lxd, y=pos.y, z=pos.z+lzd }
+ local right_pos = { x=pos.x+rxd, y=pos.y, z=pos.z+rzd }
+ local left_fwd_pos = { x=pos.x+lxd+fxd, y=pos.y, z=pos.z+lzd+fzd }
+ local right_fwd_pos = { x=pos.x+rxd+fxd, y=pos.y, z=pos.z+rzd+fzd }
+ local right_fwd_above_pos = { x=pos.x+rxd+fxd, y=pos.y+1, z=pos.z+rzd+fzd }
+ local left_fwd_above_pos = { x=pos.x+lxd+fxd, y=pos.y+1, z=pos.z+lzd+fzd }
+ local right_fwd_below_pos = { x=pos.x+rxd+fxd, y=pos.y-1, z=pos.z+rzd+fzd }
+ local left_fwd_below_pos = { x=pos.x+lxd+fxd, y=pos.y-1, z=pos.z+lzd+fzd }
+
+ local below_node = minetest.get_node(below_pos)
+ local fwd_node = minetest.get_node(fwd_pos)
+ local left_node = minetest.get_node(left_pos)
+ local right_node = minetest.get_node(right_pos)
+ local left_fwd_node = minetest.get_node(left_fwd_pos)
+ local right_fwd_node = minetest.get_node(right_fwd_pos)
+ local left_below_node = minetest.get_node({x=left_pos.x, y=left_pos.y-1, z=left_pos.z})
+ local right_below_node = minetest.get_node({x=right_pos.x, y=right_pos.y-1, z=right_pos.z})
+ local right_fwd_above_node = minetest.get_node(right_fwd_above_pos)
+ local left_fwd_above_node = minetest.get_node(left_fwd_above_pos)
+ local right_fwd_below_node = minetest.get_node(right_fwd_below_pos)
+ local left_fwd_below_node = minetest.get_node(left_fwd_below_pos)
+
+ local new_place_name = itemstack:get_name()
+ local n = 0
+
+ -- try to place a diagonal one on the side of blocks stacked like stairs
+ -- or follow an existing diagonal with another.
+ if (left_below_node and string.find(left_below_node.name, "banister_.-_diagonal_right")
+ and below_node and is_buildable_to(placer_name, below_pos, below_pos))
+ or not is_buildable_to(placer_name, right_fwd_above_pos, right_fwd_above_pos) then
+ new_place_name = string.gsub(new_place_name, "_horizontal", "_diagonal_right")
+ elseif (right_below_node and string.find(right_below_node.name, "banister_.-_diagonal_left")
+ and below_node and is_buildable_to(placer_name, below_pos, below_pos))
+ or not is_buildable_to(placer_name, left_fwd_above_pos, left_fwd_above_pos) then
+ new_place_name = string.gsub(new_place_name, "_horizontal", "_diagonal_left")
+
+ -- try to follow a diagonal with the corresponding horizontal
+ -- from the top of a diagonal...
+ elseif left_below_node and string.find(left_below_node.name, "homedecor:banister_.*_diagonal") then
+ fdir = left_below_node.param2
+ new_place_name = string.gsub(left_below_node.name, "_diagonal_.-$", "_horizontal")
+ elseif right_below_node and string.find(right_below_node.name, "homedecor:banister_.*_diagonal") then
+ fdir = right_below_node.param2
+ new_place_name = string.gsub(right_below_node.name, "_diagonal_.-$", "_horizontal")
+
+ -- try to place a horizontal in-line with the nearest diagonal, at the top
+ elseif left_fwd_below_node and string.find(left_fwd_below_node.name, "homedecor:banister_.*_diagonal")
+ and is_buildable_to(placer_name, fwd_pos, fwd_pos) then
+ fdir = left_fwd_below_node.param2
+ pos = fwd_pos
+ new_place_name = string.gsub(left_fwd_below_node.name, "_diagonal_.-$", "_horizontal")
+ elseif right_fwd_below_node and string.find(right_fwd_below_node.name, "homedecor:banister_.*_diagonal")
+ and is_buildable_to(placer_name, fwd_pos, fwd_pos) then
+ fdir = right_fwd_below_node.param2
+ pos = fwd_pos
+ new_place_name = string.gsub(right_fwd_below_node.name, "_diagonal_.-$", "_horizontal")
+
+ -- try to follow a diagonal with a horizontal, at the bottom of the diagonal
+ elseif left_node and string.find(left_node.name, "homedecor:banister_.*_diagonal") then
+ fdir = left_node.param2
+ new_place_name = string.gsub(left_node.name, "_diagonal_.-$", "_horizontal")
+ elseif right_node and string.find(right_node.name, "homedecor:banister_.*_diagonal") then
+ fdir = right_node.param2
+ new_place_name = string.gsub(right_node.name, "_diagonal_.-$", "_horizontal")
+
+ -- try to place a horizontal in-line with the nearest diagonal, at the bottom
+ elseif left_fwd_node and string.find(left_fwd_node.name, "homedecor:banister_.*_diagonal")
+ and is_buildable_to(placer_name, fwd_pos, fwd_pos) then
+ fdir = left_fwd_node.param2
+ pos = fwd_pos
+ new_place_name = string.gsub(left_fwd_node.name, "_diagonal_.-$", "_horizontal")
+ elseif right_fwd_node and string.find(right_fwd_node.name, "homedecor:banister_.*_diagonal")
+ and is_buildable_to(placer_name, fwd_pos, fwd_pos) then
+ fdir = right_fwd_node.param2
+ pos = fwd_pos
+ new_place_name = string.gsub(right_fwd_node.name, "_diagonal_.-$", "_horizontal")
+
+ -- try to follow a horizontal with another of the same
+ elseif left_node and string.find(left_node.name, "homedecor:banister_.*_horizontal") then
+ fdir = left_node.param2
+ new_place_name = left_node.name
+ elseif right_node and string.find(right_node.name, "homedecor:banister_.*_horizontal") then
+ fdir = right_node.param2
+ new_place_name = right_node.name
+ end
+
+ -- manually invert left-right orientation
+ if placer:get_player_control()["sneak"] then
+ if string.find(new_place_name, "banister_.*_diagonal") then
+ new_place_name = string.gsub(new_place_name, "_left", "_right")
+ else
+ new_place_name = string.gsub(new_place_name, "_right", "_left")
+ end
+ end
+
+ minetest.set_node(pos, {name = new_place_name, param2 = fdir})
+ itemstack:take_item()
+ return itemstack
+end
+
diff --git a/homedecor_modpack/homedecor/handlers/furnaces.lua b/homedecor_modpack/homedecor/handlers/furnaces.lua
new file mode 100644
index 0000000..aaa2fef
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/furnaces.lua
@@ -0,0 +1,279 @@
+-- This code supplies an oven/stove. Basically it's just a copy of the default furnace with different textures.
+
+local S = homedecor.gettext
+
+local function swap_node(pos, name)
+ local node = minetest.get_node(pos)
+ if node.name == name then return end
+ node.name = name
+ minetest.swap_node(pos, node)
+end
+
+local function make_formspec(furnacedef, percent)
+ local fire
+
+ if percent and (percent > 0) then
+ fire = ("%s^[lowpart:%d:%s"):format(
+ furnacedef.fire_bg,
+ (100-percent),
+ furnacedef.fire_fg
+ )
+ else
+ fire = "default_furnace_fire_bg.png"
+ end
+
+ local w = furnacedef.output_width
+ local h = math.ceil(furnacedef.output_slots / furnacedef.output_width)
+
+ return "size["..math.max(8, 6 + w)..",9]"..
+ "image[2,2;1,1;"..fire.."]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;1,1;]"..
+ "list[current_name;dst;5,1;"..w..","..h..";]"..
+ "list[current_player;main;0,5;8,4;]"
+end
+
+--[[
+furnacedef = {
+ description = "Oven",
+ tiles = { ... },
+ tiles_active = { ... },
+ ^ +Y -Y +X -X +Z -Z
+ tile_format = "oven_%s%s.png",
+ ^ First '%s' replaced by one of "top", "bottom", "side", "front".
+ ^ Second '%s' replaced by "" for inactive, and "_active" for active "front"
+ ^ "side" is used for left, right and back.
+ ^ tiles_active for front is set
+ output_slots = 4,
+ output_width = 2,
+ cook_speed = 1,
+ ^ Higher values cook stuff faster.
+ extra_nodedef_fields = { ... },
+ ^ Stuff here is copied verbatim into both active and inactive nodedefs
+ ^ Useful for overriding drawtype, etc.
+}
+]]
+
+local function make_tiles(tiles, fmt, active)
+ if not fmt then return tiles end
+ tiles = { }
+ for i,side in ipairs{"top", "bottom", "side", "side", "side", "front"} do
+ if active and (i == 6) then
+ tiles[i] = fmt:format(side, "_active")
+ else
+ tiles[i] = fmt:format(side, "")
+ end
+ end
+ return tiles
+end
+
+local furnace_can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("fuel")
+ and inv:is_empty("dst")
+ and inv:is_empty("src")
+end
+
+function homedecor.register_furnace(name, furnacedef)
+ furnacedef.fire_fg = furnacedef.fire_bg or "default_furnace_fire_fg.png"
+ furnacedef.fire_bg = furnacedef.fire_bg or "default_furnace_fire_bg.png"
+
+ furnacedef.output_slots = furnacedef.output_slots or 4
+ furnacedef.output_width = furnacedef.output_width or 2
+
+ furnacedef.cook_speed = furnacedef.cook_speed or 1
+
+ local description = furnacedef.description or "Furnace"
+
+ local furnace_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", make_formspec(furnacedef, 0))
+ meta:set_string("infotext", description)
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", furnacedef.output_slots)
+ end
+
+ local furnace_allow_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if listname == "fuel" then
+ if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
+ if inv:is_empty("src") then
+ meta:set_string("infotext", S("%s is empty"):format(description))
+ end
+ return stack:get_count()
+ else
+ return 0
+ end
+ elseif listname == "src" then
+ return stack:get_count()
+ elseif listname == "dst" then
+ return 0
+ end
+ end
+ local furnace_allow_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local stack = inv:get_stack(from_list, from_index)
+ if to_list == "fuel" then
+ if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
+ if inv:is_empty("src") then
+ meta:set_string("infotext", S("%s is empty"):format(description))
+ end
+ return count
+ else
+ return 0
+ end
+ elseif to_list == "src" then
+ return count
+ elseif to_list == "dst" then
+ return 0
+ end
+ end
+
+ local def = {
+ description = description,
+ tiles = make_tiles(furnacedef.tiles, furnacedef.tile_format, false),
+ groups = furnacedef.groups or {cracky=2},
+ sounds = furnacedef.sounds or default.node_sound_wood_defaults(),
+ on_construct = furnace_construct,
+ can_dig = furnace_can_dig,
+ allow_metadata_inventory_put = furnace_allow_put,
+ allow_metadata_inventory_move = furnace_allow_move,
+ inventory = { lockable = true }
+ }
+
+ local def_active = {
+ description = description .. " (active)",
+ tiles = make_tiles(furnacedef.tiles_active, furnacedef.tile_format, true),
+ light_source = 8,
+ drop = "homedecor:" .. name,
+ groups = furnacedef.groups or {cracky=2, not_in_creative_inventory=1},
+ sounds = furnacedef.sounds or default.node_sound_stone_defaults(),
+ on_construct = furnace_construct,
+ can_dig = furnace_can_dig,
+ allow_metadata_inventory_put = furnace_allow_put,
+ allow_metadata_inventory_move = furnace_allow_move,
+ inventory = { lockable = true }
+ }
+
+ if furnacedef.extra_nodedef_fields then
+ for k, v in pairs(furnacedef.extra_nodedef_fields) do
+ def[k] = v
+ def_active[k] = v
+ end
+ end
+
+ local name_active = name.."_active"
+
+ homedecor.register(name, def)
+ homedecor.register(name_active, def_active)
+
+ local name, name_active = "homedecor:"..name, "homedecor:"..name_active
+
+ minetest.register_abm({
+ nodenames = {name, name_active, name.."_locked", name_active.."_locked"},
+ label = "furnaces",
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ for i, name in ipairs({
+ "fuel_totaltime",
+ "fuel_time",
+ "src_totaltime",
+ "src_time"
+ }) do
+ if meta:get_string(name) == "" then
+ meta:set_float(name, 0.0)
+ end
+ end
+
+ local inv = meta:get_inventory()
+
+ local srclist = inv:get_list("src")
+ local cooked = nil
+ local aftercooked
+
+ if srclist then
+ cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+
+ local was_active = false
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ was_active = true
+ meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
+ meta:set_float("src_time", meta:get_float("src_time") + furnacedef.cook_speed)
+ if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
+ -- check if there's room for output in "dst" list
+ if inv:room_for_item("dst",cooked.item) then
+ -- Put result in "dst" list
+ inv:add_item("dst", cooked.item)
+ -- take stuff from "src" list
+ inv:set_stack("src", 1, aftercooked.items[1])
+ end
+ meta:set_string("src_time", 0)
+ end
+ end
+
+ -- XXX: Quick patch, make it better in the future.
+ local locked = node.name:find("_locked$") and "_locked" or ""
+ local desc = minetest.registered_nodes[name..locked].description
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ local percent = math.floor(meta:get_float("fuel_time") /
+ meta:get_float("fuel_totaltime") * 100)
+ meta:set_string("infotext",S("%s active: %d%%"):format(desc,percent))
+ swap_node(pos,name_active..locked)
+ meta:set_string("formspec", make_formspec(furnacedef, percent))
+ return
+ end
+
+ local fuel = nil
+ local afterfuel
+ local cooked = nil
+ local fuellist = inv:get_list("fuel")
+ local srclist = inv:get_list("src")
+
+ if srclist then
+ cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+ if fuellist then
+ fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
+ end
+
+ if (not fuel) or (fuel.time <= 0) then
+ meta:set_string("infotext",desc..S(": Out of fuel"))
+ swap_node(pos, name..locked)
+ meta:set_string("formspec", make_formspec(furnacedef, 0))
+ return
+ end
+
+ if cooked.item:is_empty() then
+ if was_active then
+ meta:set_string("infotext",S("%s is empty"):format(desc))
+ swap_node(pos, name..locked)
+ meta:set_string("formspec", make_formspec(furnacedef, 0))
+ end
+ return
+ end
+
+ if not inv:room_for_item("dst", cooked.item) then
+ meta:set_string("infotext", desc..S(": output bins are full"))
+ swap_node(pos, name..locked)
+ meta:set_string("formspec", make_formspec(furnacedef, 0))
+ return
+ end
+
+ meta:set_string("fuel_totaltime", fuel.time)
+ meta:set_string("fuel_time", 0)
+
+ inv:set_stack("fuel", 1, afterfuel.items[1])
+ end,
+ })
+
+end
diff --git a/homedecor_modpack/homedecor/handlers/init.lua b/homedecor_modpack/homedecor/handlers/init.lua
new file mode 100644
index 0000000..12003ca
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/init.lua
@@ -0,0 +1,22 @@
+local handlerpath = homedecor.modpath .. "/handlers/"
+
+-- nodebox arithmetics and helpers
+-- (please keep non-generic nodeboxes with their node definition)
+dofile(handlerpath.."nodeboxes.lua")
+
+-- expand and unexpand decor
+dofile(handlerpath.."expansion.lua")
+
+-- register nodes that cook stuff
+dofile(handlerpath.."furnaces.lua")
+
+-- inventory related functionality, like initialization, ownership and spawning locked versions
+dofile(handlerpath.."inventory.lua")
+
+-- glue it all together into a registration function
+dofile(handlerpath.."registration.lua")
+
+-- some nodes have particle spawners
+dofile(handlerpath.."water_particles.lua")
+
+dofile(handlerpath.."sit.lua")
diff --git a/homedecor_modpack/homedecor/handlers/inventory.lua b/homedecor_modpack/homedecor/handlers/inventory.lua
new file mode 100644
index 0000000..51ac70f
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/inventory.lua
@@ -0,0 +1,173 @@
+local S = homedecor.gettext
+
+local default_can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos)
+ return meta:get_inventory():is_empty("main")
+end
+
+local background = default.gui_bg .. default.gui_bg_img .. default.gui_slots
+local default_inventory_formspecs = {
+ ["4"]="size[8,6]".. background ..
+ "list[context;main;2,0;4,1;]"..
+ "list[current_player;main;0,2;8,4;]",
+
+ ["6"]="size[8,6]".. background ..
+ "list[context;main;1,0;6,1;]"..
+ "list[current_player;main;0,2;8,4;]",
+
+ ["8"]="size[8,6]".. background ..
+ "list[context;main;0,0;8,1;]"..
+ "list[current_player;main;0,2;8,4;]",
+
+ ["12"]="size[8,7]".. background ..
+ "list[context;main;1,0;6,2;]"..
+ "list[current_player;main;0,3;8,4;]",
+
+ ["16"]="size[8,7]".. background ..
+ "list[context;main;0,0;8,2;]"..
+ "list[current_player;main;0,3;8,4;]",
+
+ ["24"]="size[8,8]".. background ..
+ "list[context;main;0,0;8,3;]"..
+ "list[current_player;main;0,4;8,4;]",
+
+ ["32"]="size[8,9]".. background ..
+ "list[context;main;0,0.3;8,4;]"..
+ "list[current_player;main;0,4.85;8,1;]"..
+ "list[current_player;main;0,6.08;8,3;8]"..
+ default.get_hotbar_bg(0,4.85),
+
+ ["50"]="size[10,10]".. background ..
+ "list[context;main;0,0;10,5;]"..
+ "list[current_player;main;1,6;8,4;]",
+}
+
+local function get_formspec_by_size(size)
+ --TODO heuristic to use the "next best size"
+ local formspec = default_inventory_formspecs[tostring(size)]
+ return formspec or default_inventory_formspecs
+end
+
+----
+-- handle inventory setting
+-- inventory = {
+-- size = 16,
+-- formspec = …,
+-- locked = false,
+-- lockable = true,
+-- }
+--
+function homedecor.handle_inventory(name, def, original_def)
+ local inventory = def.inventory
+ if not inventory then return end
+ def.inventory = nil
+
+ if inventory.size then
+ local on_construct = def.on_construct
+ def.on_construct = function(pos)
+ local size = inventory.size
+ local meta = minetest.get_meta(pos)
+ meta:get_inventory():set_size("main", size)
+ meta:set_string("formspec", inventory.formspec or get_formspec_by_size(size))
+ if on_construct then on_construct(pos) end
+ end
+ end
+
+ def.can_dig = def.can_dig or default_can_dig
+ def.on_metadata_inventory_move = def.on_metadata_inventory_move or function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", S("%s moves stuff in %s at %s"):format(
+ player:get_player_name(), name, minetest.pos_to_string(pos)
+ ))
+ end
+ def.on_metadata_inventory_put = def.on_metadata_inventory_put or function(pos, listname, index, stack, player)
+ minetest.log("action", S("%s moves stuff to %s at %s"):format(
+ player:get_player_name(), name, minetest.pos_to_string(pos)
+ ))
+ end
+ def.on_metadata_inventory_take = def.on_metadata_inventory_take or function(pos, listname, index, stack, player)
+ minetest.log("action", S("%s takes stuff from %s at %s"):format(
+ player:get_player_name(), name, minetest.pos_to_string(pos)
+ ))
+ end
+
+ local locked = inventory.locked
+ if locked then
+ local after_place_node = def.after_place_node
+ def.after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos)
+ local owner = placer:get_player_name() or ""
+
+ meta:set_string("owner", owner)
+ meta:set_string("infotext", S("%s (owned by %s)"):format(def.infotext or def.description, owner))
+ return after_place_node and after_place_node(pos, placer)
+ end
+
+ local allow_move = def.allow_metadata_inventory_move
+ def.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ local playername = player:get_player_name()
+
+ if (playername ~= owner) then
+ minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
+ playername, name, owner, minetest.pos_to_string(pos)
+ ))
+ return 0
+ end
+
+ return allow_move and allow_move(pos, from_list, from_index, to_list, to_index, count, player)
+ or count
+ end
+
+ local allow_put = def.allow_metadata_inventory_put
+ def.allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ local playername = player:get_player_name()
+
+ if (playername ~= owner) then
+ minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
+ playername, name, owner, minetest.pos_to_string(pos)
+ ))
+ return 0
+ end
+ return allow_put and allow_put(pos, listname, index, stack, player)
+ or stack:get_count()
+ end
+
+ local allow_take = def.allow_metadata_inventory_take
+ def.allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ local playername = player:get_player_name()
+
+ if (playername ~= owner) then
+ minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
+ playername, name, owner, minetest.pos_to_string(pos)
+ ))
+ return 0
+ end
+ return allow_take and allow_take(pos, listname, index, stack, player)
+ or stack:get_count()
+ end
+ end
+
+ local lockable = inventory.lockable
+ if lockable then
+ local locked_def = table.copy(original_def)
+ locked_def.description = S("Locked %s"):format(def.description or name)
+
+ local locked_inventory = locked_def.inventory
+ locked_inventory.locked = true
+ locked_inventory.lockable = nil -- avoid loops of locked locked stuff
+
+ local locked_name = name .. "_locked"
+ homedecor.register(locked_name, locked_def)
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:" .. locked_name,
+ recipe = { "homedecor:" .. name, "default:steel_ingot" }
+ })
+ end
+
+end
diff --git a/homedecor_modpack/homedecor/handlers/nodeboxes.lua b/homedecor_modpack/homedecor/handlers/nodeboxes.lua
new file mode 100644
index 0000000..0d8306e
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/nodeboxes.lua
@@ -0,0 +1,62 @@
+-- please keep any non-generic nodeboxe with its node definition
+-- this file should not accumulate any left over nodeboxes
+-- but is meant to host any abstractions or calculations based on nodeboxes
+
+-- a box is defined as {x1, y1, z1, x2, y2, z2}
+homedecor.box = {
+ -- slab starting from -x (after rotation: left)
+ slab_x = function(depth) return { -0.5, -0.5, -0.5, -0.5+depth, 0.5, 0.5 } end,
+ -- bottom slab (starting from -y) with height optionally shifted upwards
+ slab_y = function(height, shift) return { -0.5, -0.5+(shift or 0), -0.5, 0.5, -0.5+height+(shift or 0), 0.5 } end,
+ -- slab starting from -z (+z with negative depth)
+ slab_z = function(depth)
+ -- for consistency with the other functions here, we have to assume that a "z" slab starts from -z and extends by depth,
+ -- but since conventionally a lot of nodes place slabs against +z for player convenience, we define
+ -- a "negative" depth as a depth extending from the other side, i.e. +z
+ if depth > 0 then
+ -- slab starting from -z
+ return { -0.5, -0.5, -0.5, 0.5, 0.5, -0.5+depth }
+ else
+ -- slab starting from +z (z1=0.5-(-depth))
+ return { -0.5, -0.5, 0.5+depth, 0.5, 0.5, 0.5 }
+ end
+ end,
+ bar_y = function(radius) return {-radius, -0.5, -radius, radius, 0.5, radius} end,
+ cuboid = function(radius_x, radius_y, radius_z) return {-radius_x, -radius_y, -radius_z, radius_x, radius_y, radius_z} end,
+}
+
+homedecor.nodebox = {
+ -- { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
+ -- can be used in-place as:
+ -- { type="regular" },
+ regular = { type="regular" },
+ null = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } },
+ corner_xz = function(depth_x, depth_z) return {
+ type="fixed",
+ fixed={
+ homedecor.box.slab_x(depth_x),
+ homedecor.box.slab_z(depth_z),
+ -- { -0.5, -0.5, -0.5, 0.5-depth, 0.5, -0.5+depth } -- slab_x without the overlap, but actually looks a bit worse
+ }
+ } end,
+}
+
+local mt = {}
+mt.__index = function(table, key)
+ local ref = homedecor.box[key]
+ local ref_type = type(ref)
+ if ref_type == "function" then
+ return function(...)
+ return { type = "fixed", fixed = ref(...) }
+ end
+ elseif ref_type == "table" then
+ return { type = "fixed", fixed = ref }
+ elseif ref_type == "nil" then
+ error(key .. "could not be found among nodebox presets and functions")
+ end
+ error("unexpected datatype " .. tostring(type(ref)) .. " while looking for " .. key)
+end
+setmetatable(homedecor.nodebox, mt)
+
+
+
diff --git a/homedecor_modpack/homedecor/handlers/registration.lua b/homedecor_modpack/homedecor/handlers/registration.lua
new file mode 100644
index 0000000..b25378f
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/registration.lua
@@ -0,0 +1,95 @@
+homedecor = homedecor or {}
+local S = homedecor.gettext
+local placeholder_node = "homedecor:expansion_placeholder"
+
+--wrapper around minetest.register_node that sets sane defaults and interprets some specialized settings
+function homedecor.register(name, original_def)
+ local def = table.copy(original_def)
+
+ def.drawtype = def.drawtype
+ or (def.mesh and "mesh")
+ or (def.node_box and "nodebox")
+
+ def.paramtype = def.paramtype or "light"
+
+ -- avoid facedir for some drawtypes as they might be used internally for something else
+ -- even if undocumented
+ if not (def.drawtype == "glasslike_framed"
+ or def.drawtype == "raillike"
+ or def.drawtype == "plantlike"
+ or def.drawtype == "firelike") then
+
+ def.paramtype2 = def.paramtype2 or "facedir"
+ end
+
+ homedecor.handle_inventory(name, def, original_def)
+
+ local infotext = def.infotext
+ --def.infotext = nil -- currently used to set locked refrigerator infotexts
+
+ if infotext then
+ local on_construct = def.on_construct
+ def.on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", infotext)
+ if on_construct then on_construct(pos) end
+ end
+ end
+
+ local expand = def.expand
+ def.expand = nil
+ local after_unexpand = def.after_unexpand
+ def.after_unexpand = nil
+
+ if expand then
+ -- dissallow rotating only half the expanded node by default
+ -- unless we know better
+ def.on_rotate = def.on_rotate
+ or (def.mesh and expand.top and screwdriver.rotate_simple)
+ or screwdriver.disallow
+
+ def.on_place = def.on_place or function(itemstack, placer, pointed_thing)
+ if expand.top then
+ return homedecor.stack_vertically(itemstack, placer, pointed_thing, itemstack:get_name(), expand.top)
+ elseif expand.right then
+ return homedecor.stack_sideways(itemstack, placer, pointed_thing, itemstack:get_name(), expand.right, true)
+ elseif expand.forward then
+ return homedecor.stack_sideways(itemstack, placer, pointed_thing, itemstack:get_name(), expand.forward, false)
+ end
+ end
+ def.after_dig_node = def.after_dig_node or function(pos, oldnode, oldmetadata, digger)
+ if expand.top and expand.forward ~= "air" then
+ local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
+ local node = minetest.get_node(top_pos).name
+ if node == expand.top or node == placeholder_node then
+ minetest.remove_node(top_pos)
+ end
+ end
+
+ local fdir = oldnode.param2
+ if not fdir or fdir > 3 then return end
+
+ if expand.right and expand.forward ~= "air" then
+ local right_pos = { x=pos.x+homedecor.fdir_to_right[fdir+1][1], y=pos.y, z=pos.z+homedecor.fdir_to_right[fdir+1][2] }
+ local node = minetest.get_node(right_pos).name
+ if node == expand.right or node == placeholder_node then
+ minetest.remove_node(right_pos)
+ end
+ end
+ if expand.forward and expand.forward ~= "air" then
+ local forward_pos = { x=pos.x+homedecor.fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+homedecor.fdir_to_fwd[fdir+1][2] }
+ local node = minetest.get_node(forward_pos).name
+ if node == expand.forward or node == placeholder_node then
+ minetest.remove_node(forward_pos)
+ end
+ end
+
+ if after_unexpand then
+ after_unexpand(pos)
+ end
+ end
+ end
+
+ -- register the actual minetest node
+ minetest.register_node("homedecor:" .. name, def)
+end
diff --git a/homedecor_modpack/homedecor/handlers/sit.lua b/homedecor_modpack/homedecor/handlers/sit.lua
new file mode 100644
index 0000000..636a585
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/sit.lua
@@ -0,0 +1,32 @@
+function homedecor.sit(pos, node, clicker)
+ do return end -- delete it when the engine is stabler for the player's physics
+ local meta = minetest.get_meta(pos)
+ local param2 = node.param2
+ local name = clicker:get_player_name()
+
+ if name == meta:get_string("is_sit") then
+ meta:set_string("is_sit", "")
+ pos.y = pos.y-0.5
+ clicker:setpos(pos)
+ clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
+ clicker:set_physics_override(1, 1, 1)
+ default.player_attached[name] = false
+ default.player_set_animation(clicker, "stand", 30)
+ else
+ meta:set_string("is_sit", clicker:get_player_name())
+ clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0})
+ clicker:set_physics_override(0, 0, 0)
+ clicker:setpos(pos)
+ default.player_attached[name] = true
+ default.player_set_animation(clicker, "sit", 30)
+ if param2 == 0 then
+ clicker:set_look_yaw(3.15)
+ elseif param2 == 1 then
+ clicker:set_look_yaw(7.9)
+ elseif param2 == 2 then
+ clicker:set_look_yaw(6.28)
+ elseif param2 == 3 then
+ clicker:set_look_yaw(4.75)
+ else return end
+ end
+end
diff --git a/homedecor_modpack/homedecor/handlers/water_particles.lua b/homedecor_modpack/homedecor/handlers/water_particles.lua
new file mode 100644
index 0000000..a3334b0
--- /dev/null
+++ b/homedecor_modpack/homedecor/handlers/water_particles.lua
@@ -0,0 +1,115 @@
+-- variables taken by the start... function
+--
+-- pos and node are as usual, from e.g. on_rightclick.
+--
+-- in the { particledef } table:
+--
+-- outletx/y/z are the exact coords of the starting point
+-- for the spawner, relative to the center of the node
+--
+-- velocityx/y/z are the speed of the particles,
+-- (x and z are relative to a node placed while looking north/facedir 0)
+-- negative Y values flow downward.
+--
+-- spread is the radius from the starting point,
+-- along X and Z only, to randomly spawn particles.
+--
+-- soundname is the filename (without .ogg) of the sound file
+-- to be played along with the particle stream
+
+function homedecor.start_particle_spawner(pos, node, particledef, soundname)
+
+ local this_spawner_meta = minetest.get_meta(pos)
+ local id = this_spawner_meta:get_int("active")
+ local s_handle = this_spawner_meta:get_int("sound")
+
+ if id ~= 0 then
+ if s_handle then
+ minetest.after(0, function(s_handle)
+ minetest.sound_stop(s_handle)
+ end, s_handle)
+ end
+ minetest.delete_particlespawner(id)
+ this_spawner_meta:set_int("active", nil)
+ this_spawner_meta:set_int("sound", nil)
+ return
+ end
+
+ local fdir = node.param2
+
+ if fdir and fdir < 4 and (not id or id == 0) then
+
+ local outletx = particledef.outlet.x
+ local outlety = particledef.outlet.y
+ local outletz = particledef.outlet.z
+ local velocityx = particledef.velocity_x
+ local velocityy = particledef.velocity_y
+ local velocityz = particledef.velocity_z
+ local spread = particledef.spread
+
+ local minx_t = { outletx - spread, -outletz - spread, outletx - spread, outletz - spread }
+ local maxx_t = { outletx + spread, -outletz + spread, outletx + spread, outletz + spread }
+ local minz_t = { -outletz - spread, outletx - spread, outletz - spread, outletx - spread }
+ local maxz_t = { -outletz + spread, outletx + spread, outletz + spread, outletx + spread }
+
+ local minvelx_t = { velocityx.min, velocityz.min, -velocityx.max, -velocityz.max }
+ local maxvelx_t = { velocityx.max, velocityz.max, -velocityx.min, -velocityz.min }
+ local minvelz_t = { velocityz.min, velocityx.min, -velocityz.max, velocityx.min }
+ local maxvelz_t = { velocityz.max, velocityx.max, -velocityz.min, velocityx.max }
+
+ local minx = minx_t[fdir + 1]
+ local maxx = maxx_t[fdir + 1]
+ local minz = minz_t[fdir + 1]
+ local maxz = maxz_t[fdir + 1]
+
+ local minvelx = minvelx_t[fdir + 1]
+ local minvelz = minvelz_t[fdir + 1]
+ local maxvelx = maxvelx_t[fdir + 1]
+ local maxvelz = maxvelz_t[fdir + 1]
+
+ id = minetest.add_particlespawner({
+ amount = 60,
+ time = 0,
+ collisiondetection = true,
+ minpos = {x=pos.x - minx, y=pos.y + outlety, z=pos.z - minz},
+ maxpos = {x=pos.x - maxx, y=pos.y + outlety, z=pos.z - maxz},
+ minvel = {x = minvelx, y = velocityy, z = minvelz},
+ maxvel = {x = maxvelx, y = velocityy, z = maxvelz},
+ minacc = {x=0, y=0, z=0},
+ maxacc = {x=0, y=-0.05, z=0},
+ minexptime = 2,
+ maxexptime = 4,
+ minsize = 0.5,
+ maxsize = 1,
+ texture = "homedecor_water_particle.png",
+ })
+ s_handle = minetest.sound_play(soundname, {
+ pos = pos,
+ max_hear_distance = 5,
+ loop = true
+ })
+ this_spawner_meta:set_int("active", id)
+ this_spawner_meta:set_int("sound", s_handle)
+ return
+ end
+end
+
+function homedecor.stop_particle_spawner(pos)
+ local this_spawner_meta = minetest.get_meta(pos)
+ local id = this_spawner_meta:get_int("active")
+ local s_handle = this_spawner_meta:get_int("sound")
+
+ if id ~= 0 then
+ minetest.delete_particlespawner(id)
+ end
+
+ if s_handle then
+ minetest.after(0, function(s_handle)
+ minetest.sound_stop(s_handle)
+ end, s_handle)
+ end
+
+ this_spawner_meta:set_int("active", nil)
+ this_spawner_meta:set_int("sound", nil)
+end
+
diff --git a/homedecor_modpack/homedecor/init.lua b/homedecor_modpack/homedecor/init.lua
new file mode 100644
index 0000000..b0e4482
--- /dev/null
+++ b/homedecor_modpack/homedecor/init.lua
@@ -0,0 +1,134 @@
+-- Home Decor mod by VanessaE
+--
+-- Mostly my own code, with bits and pieces lifted from Minetest's default
+-- lua files and from ironzorg's flowers mod. Many thanks to GloopMaster
+-- for helping me figure out the inventories used in the nightstands/dressers.
+--
+-- The code for ovens, nightstands, refrigerators are basically modified
+-- copies of the code for chests and furnaces.
+
+local modpath = minetest.get_modpath("homedecor")
+
+homedecor = {
+ modpath = modpath,
+
+ -- Boilerplate to support localized strings if intllib mod is installed.
+ gettext = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end,
+
+ -- infinite stacks
+ expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
+}
+
+-- Determine if the item being pointed at is the underside of a node (e.g a ceiling)
+function homedecor.find_ceiling(itemstack, placer, pointed_thing)
+ -- most of this is copied from the rotate-and-place function in builtin
+ local unode = core.get_node_or_nil(pointed_thing.under)
+ if not unode then
+ return
+ end
+ local undef = core.registered_nodes[unode.name]
+ if undef and undef.on_rightclick then
+ undef.on_rightclick(pointed_thing.under, unode, placer,
+ itemstack, pointed_thing)
+ return
+ end
+ local pitch = placer:get_look_pitch()
+ local fdir = core.dir_to_facedir(placer:get_look_dir())
+ local wield_name = itemstack:get_name()
+
+ local above = pointed_thing.above
+ local under = pointed_thing.under
+ local iswall = (above.y == under.y)
+ local isceiling = not iswall and (above.y < under.y)
+ local anode = core.get_node_or_nil(above)
+ if not anode then
+ return
+ end
+ local pos = pointed_thing.above
+ local node = anode
+
+ if undef and undef.buildable_to then
+ pos = pointed_thing.under
+ node = unode
+ iswall = false
+ end
+
+ if core.is_protected(pos, placer:get_player_name()) then
+ core.record_protection_violation(pos,
+ placer:get_player_name())
+ return
+ end
+
+ local ndef = core.registered_nodes[node.name]
+ if not ndef or not ndef.buildable_to then
+ return
+ end
+ return isceiling, pos
+end
+
+screwdriver = screwdriver or {}
+
+homedecor.plain_wood = "homedecor_generic_wood_plain.png^"..
+ "(homedecor_generic_wood_boards_overlay.png^[colorize:#a7682020:100)"
+
+homedecor.mahogany_wood = "(homedecor_generic_wood_plain.png^[colorize:#401010:125)^"..
+ "(homedecor_generic_wood_boards_overlay.png^[colorize:#66493880:200)"
+
+homedecor.white_wood = "(homedecor_generic_wood_plain.png^[colorize:#e0f0ff:200)^"..
+ "(homedecor_generic_wood_boards_overlay.png^[colorize:#ffffff:200)"
+
+homedecor.dark_wood = "(homedecor_generic_wood_plain.png^[colorize:#140900:200)^"..
+ "(homedecor_generic_wood_boards_overlay.png^[colorize:#21110180:180)"
+
+
+-- load different handler subsystems
+dofile(modpath.."/handlers/init.lua")
+
+-- load various other components
+dofile(modpath.."/misc-nodes.lua") -- the catch-all for all misc nodes
+dofile(modpath.."/tables.lua")
+dofile(modpath.."/electronics.lua")
+dofile(modpath.."/shutters.lua")
+
+dofile(modpath.."/roofing.lua")
+
+dofile(modpath.."/foyer.lua")
+
+dofile(modpath.."/doors_and_gates.lua")
+
+dofile(modpath.."/fences.lua")
+
+dofile(modpath.."/lighting.lua")
+
+dofile(modpath.."/kitchen_appliances.lua")
+dofile(modpath.."/kitchen_furniture.lua")
+dofile(modpath.."/gastronomy.lua")
+
+dofile(modpath.."/bathroom_furniture.lua")
+dofile(modpath.."/bathroom_sanitation.lua")
+
+dofile(modpath.."/bedroom.lua")
+
+dofile(modpath.."/laundry.lua")
+
+dofile(modpath.."/office.lua")
+
+dofile(modpath.."/clocks.lua")
+dofile(modpath.."/electrics.lua")
+
+dofile(modpath.."/window_treatments.lua")
+
+dofile(modpath.."/furniture.lua")
+dofile(modpath.."/furniture_medieval.lua")
+dofile(modpath.."/furniture_recipes.lua")
+dofile(modpath.."/climate-control.lua")
+
+dofile(modpath.."/cobweb.lua")
+dofile(modpath.."/books.lua")
+dofile(modpath.."/exterior.lua")
+dofile(modpath.."/trash_cans.lua")
+dofile(modpath.."/wardrobe.lua")
+
+dofile(modpath.."/crafts.lua")
+
+print("[HomeDecor] " .. homedecor.gettext("Loaded!"))
diff --git a/homedecor_modpack/homedecor/kitchen_appliances.lua b/homedecor_modpack/homedecor/kitchen_appliances.lua
new file mode 100644
index 0000000..ae59a40
--- /dev/null
+++ b/homedecor_modpack/homedecor/kitchen_appliances.lua
@@ -0,0 +1,251 @@
+-- This file supplies refrigerators
+
+local S = homedecor.gettext
+
+-- steel-textured fridge
+homedecor.register("refrigerator_steel", {
+ mesh = "homedecor_refrigerator.obj",
+ tiles = { "homedecor_refrigerator_steel.png" },
+ inventory_image = "homedecor_refrigerator_steel_inv.png",
+ description = S("Refrigerator (stainless steel)"),
+ groups = {snappy=3},
+ sounds = default.node_sound_stone_defaults(),
+ selection_box = homedecor.nodebox.slab_y(2),
+ collision_box = homedecor.nodebox.slab_y(2),
+ expand = { top="placeholder" },
+ infotext=S("Refrigerator"),
+ inventory = {
+ size=50,
+ lockable=true,
+ },
+ on_rotate = screwdriver.rotate_simple
+})
+
+-- white, enameled fridge
+homedecor.register("refrigerator_white", {
+ mesh = "homedecor_refrigerator.obj",
+ tiles = { "homedecor_refrigerator_white.png" },
+ inventory_image = "homedecor_refrigerator_white_inv.png",
+ description = S("Refrigerator"),
+ groups = {snappy=3},
+ selection_box = homedecor.nodebox.slab_y(2),
+ collision_box = homedecor.nodebox.slab_y(2),
+ sounds = default.node_sound_stone_defaults(),
+ expand = { top="placeholder" },
+ infotext=S("Refrigerator"),
+ inventory = {
+ size=50,
+ lockable=true,
+ },
+ on_rotate = screwdriver.rotate_simple
+})
+
+minetest.register_alias("homedecor:refrigerator_white_bottom", "homedecor:refrigerator_white")
+minetest.register_alias("homedecor:refrigerator_white_top", "air")
+
+minetest.register_alias("homedecor:refrigerator_steel_bottom", "homedecor:refrigerator_steel")
+minetest.register_alias("homedecor:refrigerator_steel_top", "air")
+
+minetest.register_alias("homedecor:refrigerator_white_bottom_locked", "homedecor:refrigerator_white_locked")
+minetest.register_alias("homedecor:refrigerator_white_top_locked", "air")
+
+minetest.register_alias("homedecor:refrigerator_steel_bottom_locked", "homedecor:refrigerator_steel_locked")
+minetest.register_alias("homedecor:refrigerator_steel_top_locked", "air")
+
+-- kitchen "furnaces"
+homedecor.register_furnace("oven", {
+ description = S("Oven"),
+ tile_format = "homedecor_oven_%s%s.png",
+ output_slots = 4,
+ output_width = 2,
+ cook_speed = 1.25,
+})
+
+homedecor.register_furnace("oven_steel", {
+ description = S("Oven (stainless steel)"),
+ tile_format = "homedecor_oven_steel_%s%s.png",
+ output_slots = 4,
+ output_width = 2,
+ cook_speed = 1.25,
+})
+
+homedecor.register_furnace("microwave_oven", {
+ description = S("Microwave Oven"),
+ tiles = {
+ "homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180",
+ "homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90",
+ "homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front.png"
+ },
+ tiles_active = {
+ "homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180",
+ "homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90",
+ "homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front_active.png"
+ },
+ output_slots = 2,
+ output_width = 2,
+ cook_speed = 1.5,
+ extra_nodedef_fields = {
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.125, 0.5, 0.125, 0.5 },
+ },
+ },
+})
+
+-- coffee!
+-- coffee!
+-- coffee!
+
+local cm_cbox = {
+ type = "fixed",
+ fixed = {
+ { 0, -8/16, 0, 7/16, 3/16, 8/16 },
+ { -4/16, -8/16, -6/16, -1/16, -5/16, -3/16 }
+ }
+}
+
+homedecor.register("coffee_maker", {
+ mesh = "homedecor_coffeemaker.obj",
+ tiles = {
+ "homedecor_coffeemaker_decanter.png",
+ "homedecor_coffeemaker_cup.png",
+ "homedecor_coffeemaker_case.png",
+ },
+ description = "Coffee Maker",
+ inventory_image = "homedecor_coffeemaker_inv.png",
+ walkable = false,
+ groups = {snappy=3},
+ selection_box = cm_cbox,
+ node_box = cm_cbox,
+ on_rotate = screwdriver.disallow
+})
+
+local fdir_to_steampos = {
+ x = { 0.15, 0.275, -0.15, -0.275 },
+ z = { 0.275, -0.15, -0.275, 0.15 }
+}
+
+minetest.register_abm({
+ nodenames = "homedecor:coffee_maker",
+ label = "sfx",
+ interval = 2,
+ chance = 1,
+ action = function(pos, node)
+ local fdir = node.param2
+ if fdir and fdir < 4 then
+
+ local steamx = fdir_to_steampos.x[fdir + 1]
+ local steamz = fdir_to_steampos.z[fdir + 1]
+
+ minetest.add_particlespawner({
+ amount = 1,
+ time = 1,
+ minpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz},
+ maxpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz},
+ minvel = {x=-0.003, y=0.01, z=-0.003},
+ maxvel = {x=0.003, y=0.01, z=-0.003},
+ minacc = {x=0.0,y=-0.0,z=-0.0},
+ maxacc = {x=0.0,y=0.003,z=-0.0},
+ minexptime = 2,
+ maxexptime = 5,
+ minsize = 1,
+ maxsize = 1.2,
+ collisiondetection = false,
+ texture = "homedecor_steam.png",
+ })
+ end
+ end
+})
+
+homedecor.register("toaster", {
+ description = "Toaster",
+ tiles = { "homedecor_toaster_sides.png" },
+ inventory_image = "homedecor_toaster_inv.png",
+ walkable = false,
+ groups = { snappy=3 },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
+ },
+ },
+ on_rightclick = function(pos, node, clicker)
+ local fdir = node.param2
+ minetest.set_node(pos, { name = "homedecor:toaster_loaf", param2 = fdir })
+ minetest.sound_play("toaster", {
+ pos = pos,
+ gain = 1.0,
+ max_hear_distance = 5
+ })
+ end
+})
+
+homedecor.register("toaster_loaf", {
+ tiles = {
+ "homedecor_toaster_toploaf.png",
+ "homedecor_toaster_sides.png",
+ "homedecor_toaster_sides.png",
+ "homedecor_toaster_sides.png",
+ "homedecor_toaster_sides.png",
+ "homedecor_toaster_sides.png"
+ },
+ walkable = false,
+ groups = { snappy=3, not_in_creative_inventory=1 },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
+ {-0.03125, -0.3125, -0.0935, 0, -0.25, 0.0935}, -- NodeBox2
+ {0.0625, -0.3125, -0.0935, 0.0935, -0.25, 0.0935}, -- NodeBox3
+ },
+ },
+ on_rightclick = function(pos, node, clicker)
+ local fdir = node.param2
+ minetest.set_node(pos, { name = "homedecor:toaster", param2 = fdir })
+ end,
+ drop = "homedecor:toaster"
+})
+
+
+homedecor.register("dishwasher", {
+ description = "Dishwasher",
+ drawtype = "nodebox",
+ tiles = {
+ "homedecor_dishwasher_top.png",
+ "homedecor_dishwasher_bottom.png",
+ "homedecor_dishwasher_sides.png",
+ "homedecor_dishwasher_sides.png^[transformFX",
+ "homedecor_dishwasher_back.png",
+ "homedecor_dishwasher_front.png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
+ {-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375},
+ {-0.5, -0.5, -0.5, 0.5, 0.1875, 0.1875},
+ {-0.4375, -0.5, -0.5, 0.4375, 0.4375, 0.4375},
+ }
+ },
+ selection_box = { type = "regular" },
+ sounds = default.node_sound_stone_defaults(),
+ groups = { snappy = 3 },
+})
+
+local materials = {"granite", "marble", "steel", "wood"}
+
+for _, m in ipairs(materials) do
+homedecor.register("dishwasher_"..m, {
+ description = "Dishwasher ("..m..")",
+ tiles = {
+ "homedecor_kitchen_cabinet_top_"..m..".png",
+ "homedecor_dishwasher_bottom.png",
+ "homedecor_dishwasher_sides.png",
+ "homedecor_dishwasher_sides.png^[transformFX",
+ "homedecor_dishwasher_back.png",
+ "homedecor_dishwasher_front.png"
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_stone_defaults(),
+})
+end
diff --git a/homedecor_modpack/homedecor/kitchen_furniture.lua b/homedecor_modpack/homedecor/kitchen_furniture.lua
new file mode 100644
index 0000000..e64f423
--- /dev/null
+++ b/homedecor_modpack/homedecor/kitchen_furniture.lua
@@ -0,0 +1,152 @@
+-- This file supplies Kitchen cabinets and kitchen sink
+
+local S = homedecor.gettext
+
+local counter_materials = { "", "granite", "marble", "steel" }
+local cabinet_sides = "(default_wood.png^[transformR90)^homedecor_kitchen_cabinet_bevel.png"
+local cabinet_bottom = "(default_wood.png^[colorize:#000000:100)^(homedecor_kitchen_cabinet_bevel.png^[colorize:#46321580)"
+
+for _, mat in ipairs(counter_materials) do
+
+ local desc = S("Kitchen Cabinet")
+ local material = ""
+
+ if mat ~= "" then
+ desc = S("Kitchen Cabinet ("..mat.." top)")
+ material = "_"..mat
+ end
+
+ homedecor.register("kitchen_cabinet"..material, {
+ description = desc,
+ tiles = { 'homedecor_kitchen_cabinet_top'..material..'.png',
+ cabinet_bottom,
+ cabinet_sides,
+ cabinet_sides,
+ cabinet_sides,
+ 'homedecor_kitchen_cabinet_front.png'},
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ infotext=S("Kitchen Cabinet"),
+ inventory = {
+ size=24,
+ lockable=true,
+ },
+ })
+end
+
+local kitchen_cabinet_half_box = homedecor.nodebox.slab_y(0.5, 0.5)
+homedecor.register("kitchen_cabinet_half", {
+ description = S('Half-height Kitchen Cabinet (on ceiling)'),
+ tiles = {
+ cabinet_sides,
+ cabinet_bottom,
+ cabinet_sides,
+ cabinet_sides,
+ cabinet_sides,
+ 'homedecor_kitchen_cabinet_front_half.png'
+ },
+ selection_box = kitchen_cabinet_half_box,
+ node_box = kitchen_cabinet_half_box,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ infotext=S("Kitchen Cabinet"),
+ inventory = {
+ size=12,
+ lockable=true,
+ },
+})
+
+homedecor.register("kitchen_cabinet_with_sink", {
+ description = S("Kitchen Cabinet with sink"),
+ mesh = "homedecor_kitchen_sink.obj",
+ tiles = {
+ "homedecor_kitchen_sink_top.png",
+ "homedecor_kitchen_cabinet_front.png",
+ cabinet_sides,
+ cabinet_bottom
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ infotext=S("Under-sink cabinet"),
+ inventory = {
+ size=16,
+ lockable=true,
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, -8/16, 8/16, 6/16, 8/16 },
+ { -8/16, 6/16, -8/16, -6/16, 8/16, 8/16 },
+ { 6/16, 6/16, -8/16, 8/16, 8/16, 8/16 },
+ { -8/16, 6/16, -8/16, 8/16, 8/16, -6/16 },
+ { -8/16, 6/16, 6/16, 8/16, 8/16, 8/16 },
+ }
+ },
+ on_destruct = function(pos)
+ homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
+ end
+})
+
+local cp_cbox = {
+ type = "fixed",
+ fixed = { -0.375, -0.5, -0.5, 0.375, -0.3125, 0.3125 }
+}
+
+homedecor.register("copper_pans", {
+ description = "Copper pans",
+ mesh = "homedecor_copper_pans.obj",
+ tiles = { "homedecor_polished_copper.png" },
+ inventory_image = "homedecor_copper_pans_inv.png",
+ groups = { snappy=3 },
+ selection_box = cp_cbox,
+ walkable = false,
+ on_place = minetest.rotate_node
+})
+
+local kf_cbox = {
+ type = "fixed",
+ fixed = { -2/16, -8/16, 1/16, 2/16, -1/16, 8/16 }
+}
+
+homedecor.register("kitchen_faucet", {
+ mesh = "homedecor_kitchen_faucet.obj",
+ tiles = { "homedecor_generic_metal_bright.png" },
+ inventory_image = "homedecor_kitchen_faucet_inv.png",
+ description = "Kitchen Faucet",
+ groups = {snappy=3},
+ selection_box = kf_cbox,
+ walkable = false,
+ on_rotate = screwdriver.disallow,
+ on_rightclick = function(pos, node, clicker)
+ local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
+ if below and
+ below.name == "homedecor:sink" or
+ below.name == "homedecor:kitchen_cabinet_with_sink" then
+ local particledef = {
+ outlet = { x = 0, y = -0.19, z = 0.13 },
+ velocity_x = { min = -0.05, max = 0.05 },
+ velocity_y = -0.3,
+ velocity_z = { min = -0.1, max = 0 },
+ spread = 0
+ }
+ homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
+ end
+ end,
+ on_destruct = homedecor.stop_particle_spawner
+})
+
+homedecor.register("paper_towel", {
+ mesh = "homedecor_paper_towel.obj",
+ tiles = {
+ "homedecor_generic_quilted_paper.png",
+ "default_wood.png"
+ },
+ inventory_image = "homedecor_paper_towel_inv.png",
+ description = "Paper towels",
+ groups = { snappy=3 },
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.4375, 0.125, 0.0625, 0.4375, 0.4375, 0.5 }
+ },
+})
diff --git a/homedecor_modpack/homedecor/laundry.lua b/homedecor_modpack/homedecor/laundry.lua
new file mode 100644
index 0000000..e2ef721
--- /dev/null
+++ b/homedecor_modpack/homedecor/laundry.lua
@@ -0,0 +1,61 @@
+-- laundry devices
+
+homedecor.register("washing_machine", {
+ description = "Washing Machine",
+ tiles = {
+ "homedecor_washing_machine_top.png",
+ "homedecor_washing_machine_bottom.png",
+ "homedecor_washing_machine_sides.png",
+ "homedecor_washing_machine_sides.png^[transformFX",
+ "homedecor_washing_machine_back.png",
+ "homedecor_washing_machine_front.png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.375, 0.375},
+ {-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
+ }
+ },
+ selection_box = { type = "regular" },
+ groups = { snappy = 3 },
+})
+
+homedecor.register("dryer", {
+ description = "Tumble dryer",
+ tiles = {
+ "homedecor_dryer_top.png",
+ "homedecor_dryer_bottom.png",
+ "homedecor_dryer_sides.png",
+ "homedecor_dryer_sides.png^[transformFX",
+ "homedecor_dryer_back.png",
+ "homedecor_dryer_front.png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.375, 0.375},
+ {-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
+ }
+ },
+ selection_box = { type = "regular" },
+ groups = { snappy = 3 },
+})
+
+local ib_cbox = {
+ type = "fixed",
+ fixed = { -6/16, -8/16, -4/16, 17/16, 4/16, 4/16 }
+}
+
+homedecor.register("ironing_board", {
+ description = "Ironing board",
+ mesh = "homedecor_ironing_board.obj",
+ tiles = {
+ "wool_grey.png",
+ "homedecor_generic_metal_black.png^[brighten"
+ },
+ expand = {right = "placeholder"},
+ groups = { snappy = 3 },
+ selection_box = ib_cbox,
+ collision_box = ib_cbox
+})
diff --git a/homedecor_modpack/homedecor/lighting.lua b/homedecor_modpack/homedecor/lighting.lua
new file mode 100644
index 0000000..6b8ff07
--- /dev/null
+++ b/homedecor_modpack/homedecor/lighting.lua
@@ -0,0 +1,557 @@
+-- This file supplies glowlights
+
+local dirs1 = { 20, 23, 22, 21 }
+local dirs2 = { 9, 18, 7, 12 }
+
+local S = homedecor.gettext
+
+local colors = {"yellow","white"}
+
+for i in ipairs(colors) do
+ local color = colors[i]
+
+ minetest.register_abm({
+ nodenames = { "homedecor:glowlight_thin_"..color },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = 20})
+ end,
+ })
+
+ minetest.register_abm({
+ nodenames = { "homedecor:glowlight_thick_"..color },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = 20})
+ end,
+ })
+
+ minetest.register_abm({
+ nodenames = { "homedecor:glowlight_thin_"..color.."_wall" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2 or 0
+ local nfdir = dirs2[fdir+1]
+ minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = nfdir})
+ end,
+ })
+
+ minetest.register_abm({
+ nodenames = { "homedecor:glowlight_thick_"..color.."_wall" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2 or 0
+ local nfdir = dirs2[fdir+1]
+ minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = nfdir})
+ end,
+ })
+
+ minetest.register_abm({
+ nodenames = { "homedecor:glowlight_small_cube_"..color.."_ceiling" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ minetest.set_node(pos, {name = "homedecor:glowlight_small_cube_"..color, param2 = 20})
+ end,
+ })
+
+local glowlight_nodebox = {
+ half = homedecor.nodebox.slab_y(1/2),
+ quarter = homedecor.nodebox.slab_y(1/4),
+ small_cube = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+}
+
+homedecor.register("glowlight_half_"..color, {
+ description = S("Thick Glowlight ("..color..")"),
+ tiles = {
+ "homedecor_glowlight_"..color.."_top.png",
+ "homedecor_glowlight_"..color.."_bottom.png",
+ "homedecor_glowlight_thick_"..color.."_sides.png",
+ "homedecor_glowlight_thick_"..color.."_sides.png",
+ "homedecor_glowlight_thick_"..color.."_sides.png",
+ "homedecor_glowlight_thick_"..color.."_sides.png"
+ },
+ selection_box = glowlight_nodebox.half,
+ node_box = glowlight_nodebox.half,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX,
+ sounds = default.node_sound_glass_defaults(),
+ on_place = minetest.rotate_node
+})
+
+homedecor.register("glowlight_quarter_"..color, {
+ description = S("Thin Glowlight ("..color..")"),
+ tiles = {
+ "homedecor_glowlight_"..color.."_top.png",
+ "homedecor_glowlight_"..color.."_bottom.png",
+ "homedecor_glowlight_thin_"..color.."_sides.png",
+ "homedecor_glowlight_thin_"..color.."_sides.png",
+ "homedecor_glowlight_thin_"..color.."_sides.png",
+ "homedecor_glowlight_thin_"..color.."_sides.png"
+ },
+ selection_box = glowlight_nodebox.quarter,
+ node_box = glowlight_nodebox.quarter,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-1,
+ sounds = default.node_sound_glass_defaults(),
+ on_place = minetest.rotate_node
+})
+
+-- Glowlight "cubes"
+
+homedecor.register("glowlight_small_cube_"..color, {
+ description = S("Small Glowlight Cube ("..color..")"),
+ tiles = {
+ "homedecor_glowlight_cube_"..color.."_tb.png",
+ "homedecor_glowlight_cube_"..color.."_tb.png",
+ "homedecor_glowlight_cube_"..color.."_sides.png",
+ "homedecor_glowlight_cube_"..color.."_sides.png",
+ "homedecor_glowlight_cube_"..color.."_sides.png",
+ "homedecor_glowlight_cube_"..color.."_sides.png"
+ },
+ selection_box = glowlight_nodebox.small_cube,
+ node_box = glowlight_nodebox.small_cube,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-1,
+ sounds = default.node_sound_glass_defaults(),
+ on_place = minetest.rotate_node
+})
+
+end
+
+homedecor.register("plasma_lamp", {
+ description = "Plasma Lamp",
+ drawtype = "glasslike_framed",
+ tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"},
+ special_tiles = {
+ {
+ name="homedecor_plasma_storm.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
+ }
+ },
+ use_texture_alpha = true,
+ light_source = default.LIGHT_MAX - 1,
+ sunlight_propagates = true,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ minetest.swap_node(pos, {name = "homedecor:plasma_lamp", param2 = 255})
+ end
+})
+
+homedecor.register("plasma_ball", {
+ description = "Plasma Ball",
+ mesh = "homedecor_plasma_ball.obj",
+ tiles = {
+ "homedecor_generic_plastic_black.png",
+ {
+ name = "homedecor_plasma_ball_streamers.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
+ },
+ "homedecor_plasma_ball_glass.png"
+ },
+ inventory_image = "homedecor_plasma_ball_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.1875, -0.5, -0.1875, 0.1875, 0, 0.1875 }
+ },
+ walkable = false,
+ use_texture_alpha = true,
+ light_source = default.LIGHT_MAX - 5,
+ sunlight_propagates = true,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+local tc_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.1875, -0.5, -0.1875, 0.1875, 0.375, 0.1875 },
+ }
+}
+
+homedecor.register("candle", {
+ description = S("Thick Candle"),
+ mesh = "homedecor_candle_thick.obj",
+ tiles = {
+ 'homedecor_candle_sides.png',
+ {name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ },
+ inventory_image = "homedecor_candle_inv.png",
+ selection_box = tc_cbox,
+ walkable = false,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-4,
+})
+
+local c_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.125, -0.5, -0.125, 0.125, 0.05, 0.125 },
+ }
+}
+
+homedecor.register("candle_thin", {
+ description = S("Thin Candle"),
+ mesh = "homedecor_candle_thin.obj",
+ tiles = {
+ 'homedecor_candle_sides.png',
+ {name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ },
+ inventory_image = "homedecor_candle_thin_inv.png",
+ selection_box = c_cbox,
+ walkable = false,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-4,
+})
+
+local cs_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.15625, -0.5, -0.15625, 0.15625, 0.3125, 0.15625 },
+ }
+}
+
+homedecor.register("candlestick_wrought_iron", {
+ description = S("Candlestick (wrought iron)"),
+ mesh = "homedecor_candlestick.obj",
+ tiles = {
+ "homedecor_candle_sides.png",
+ {name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ "homedecor_generic_metal_wrought_iron.png",
+ },
+ inventory_image = "homedecor_candlestick_wrought_iron_inv.png",
+ selection_box = cs_cbox,
+ walkable = false,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-4,
+})
+
+homedecor.register("candlestick_brass", {
+ description = S("Candlestick (brass)"),
+ mesh = "homedecor_candlestick.obj",
+ tiles = {
+ "homedecor_candle_sides.png",
+ {name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ "homedecor_generic_metal_brass.png",
+ },
+ inventory_image = "homedecor_candlestick_brass_inv.png",
+ selection_box = cs_cbox,
+ walkable = false,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-4,
+})
+
+homedecor.register("wall_sconce", {
+ description = S("Wall sconce"),
+ mesh = "homedecor_wall_sconce.obj",
+ tiles = {
+ 'homedecor_candle_sides.png',
+ {name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
+ 'homedecor_wall_sconce_back.png',
+ 'homedecor_generic_metal_wrought_iron.png',
+ },
+ inventory_image = "homedecor_wall_sconce_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.1875, -0.25, 0.3125, 0.1875, 0.25, 0.5 }
+ },
+ walkable = false,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-4,
+})
+
+local ol_cbox = {
+ type = "fixed",
+ fixed = {
+ { -5/16, -8/16, -3/16, 5/16, 4/16, 3/16 },
+ }
+}
+
+homedecor.register("oil_lamp", {
+ description = S("Oil lamp (hurricane)"),
+ mesh = "homedecor_oil_lamp.obj",
+ tiles = {
+ "homedecor_generic_metal_brass.png",
+ "homedecor_generic_metal_black.png",
+ "homedecor_generic_metal_black.png^[colorize:#ff0000:160",
+ "homedecor_oil_lamp_wick.png",
+ "homedecor_generic_metal_black.png^[colorize:#ff0000:150",
+ "homedecor_oil_lamp_glass.png",
+ },
+ use_texture_alpha = true,
+ inventory_image = "homedecor_oil_lamp_inv.png",
+ selection_box = ol_cbox,
+ walkable = false,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-3,
+ sounds = default.node_sound_glass_defaults(),
+})
+
+homedecor.register("oil_lamp_tabletop", {
+ description = S("Oil Lamp (tabletop)"),
+ mesh = "homedecor_oil_lamp_tabletop.obj",
+ tiles = {"homedecor_oil_lamp_tabletop.png"},
+ inventory_image = "homedecor_oil_lamp_tabletop_inv.png",
+ selection_box = ol_cbox,
+ collision_box = ol_cbox,
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-3,
+ sounds = default.node_sound_glass_defaults(),
+})
+
+local gl_cbox = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0.45, 0.25 },
+}
+
+minetest.register_alias("homedecor:wall_lantern", "homedecor:ground_lantern")
+
+homedecor.register("ground_lantern", {
+ description = S("Ground Lantern"),
+ mesh = "homedecor_ground_lantern.obj",
+ tiles = { "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png" },
+ use_texture_alpha = true,
+ inventory_image = "homedecor_ground_lantern_inv.png",
+ wield_image = "homedecor_ground_lantern_inv.png",
+ groups = {snappy=3},
+ light_source = 11,
+ selection_box = gl_cbox,
+ walkable = false
+})
+
+local hl_cbox = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.2, 0.25, 0.5, 0.5 },
+}
+
+homedecor.register("hanging_lantern", {
+ description = S("Hanging Lantern"),
+ mesh = "homedecor_hanging_lantern.obj",
+ tiles = { "homedecor_generic_metal_wrought_iron.png", "homedecor_light.png" },
+ use_texture_alpha = true,
+ inventory_image = "homedecor_hanging_lantern_inv.png",
+ wield_image = "homedecor_hanging_lantern_inv.png",
+ groups = {snappy=3},
+ light_source = 11,
+ selection_box = hl_cbox,
+ walkable = false
+})
+
+local cl_cbox = {
+ type = "fixed",
+ fixed = { -0.35, -0.45, -0.35, 0.35, 0.5, 0.35 }
+}
+
+homedecor.register("ceiling_lantern", {
+ drawtype = "mesh",
+ mesh = "homedecor_ceiling_lantern.obj",
+ tiles = { "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png" },
+ use_texture_alpha = true,
+ inventory_image = "homedecor_ceiling_lantern_inv.png",
+ description = "Ceiling Lantern",
+ groups = {snappy=3},
+ light_source = 11,
+ selection_box = cl_cbox,
+ walkable = false
+})
+
+homedecor.register("lattice_lantern_large", {
+ description = S("Lattice lantern (large)"),
+ tiles = { 'homedecor_lattice_lantern_large.png' },
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX,
+ sounds = default.node_sound_glass_defaults(),
+})
+
+homedecor.register("lattice_lantern_small", {
+ description = S("Lattice lantern (small)"),
+ tiles = {
+ 'homedecor_lattice_lantern_small_tb.png',
+ 'homedecor_lattice_lantern_small_tb.png',
+ 'homedecor_lattice_lantern_small_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+ groups = { snappy = 3 },
+ light_source = default.LIGHT_MAX-1,
+ sounds = default.node_sound_glass_defaults(),
+ on_place = minetest.rotate_node
+})
+
+local repl = { off="low", low="med", med="hi", hi="max", max="off", }
+
+local brights_tab = { 0, 50, 100, 150, 200 }
+
+local lamp_colors = {
+ {"white", "#ffffffe0:175"},
+ {"blue", "#2626c6e0:200"},
+ {"green", "#27a927e0:200"},
+ {"pink", "#ff8fb7e0:200"},
+ {"red", "#ad2323e0:200"},
+ {"violet", "#7f29d7e0:200"}
+}
+
+local tlamp_cbox = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0.5, 0.25 }
+}
+
+local slamp_cbox = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 1.5, 0.25 }
+}
+
+local function reg_lamp(suffix, nxt, tilesuffix, light, color)
+ local lampcolor = "_"..color[1]
+ local colordesc = " ("..color[1]..")"
+ local woolcolor = color[1]
+ local invcolor = color[2]
+ local wool_brighten = (light or 0) * 7
+ local bulb_brighten = (light or 0) * 14
+
+ if color == "" then
+ lampcolor = ""
+ colordesc = " (white)"
+ woolcolor = "white"
+ end
+
+ homedecor.register("table_lamp"..lampcolor.."_"..suffix, {
+ description = S("Table Lamp "..colordesc),
+ mesh = "homedecor_table_lamp.obj",
+ tiles = {
+ "wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
+ "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
+ "homedecor_generic_wood_red.png",
+ "homedecor_generic_metal_black.png^[brighten",
+ },
+ inventory_image = "homedecor_table_lamp_foot_inv.png^(homedecor_table_lamp_top_inv.png^[colorize:"..invcolor..")",
+ walkable = false,
+ light_source = light,
+ selection_box = tlamp_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ groups = {cracky=2,oddly_breakable_by_hand=1,
+ not_in_creative_inventory=((light ~= nil) and 1) or nil,
+ },
+ drop = "homedecor:table_lamp"..lampcolor.."_off",
+ on_punch = function(pos, node, puncher)
+ node.name = "homedecor:table_lamp"..lampcolor.."_"..repl[suffix]
+ minetest.set_node(pos, node)
+ end,
+ })
+
+ -- standing lamps
+
+ homedecor.register("standing_lamp"..lampcolor.."_"..suffix, {
+ description = S("Standing Lamp"..colordesc),
+ mesh = "homedecor_standing_lamp.obj",
+ tiles = {
+ "wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
+ "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
+ "homedecor_generic_wood_red.png",
+ "homedecor_generic_metal_black.png^[brighten",
+ },
+ inventory_image = "homedecor_standing_lamp_foot_inv.png^(homedecor_standing_lamp_top_inv.png^[colorize:"..invcolor..")",
+ walkable = false,
+ light_source = light,
+ groups = {cracky=2,oddly_breakable_by_hand=1,
+ not_in_creative_inventory=((light ~= nil) and 1) or nil,
+ },
+ selection_box = slamp_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.rotate_simple,
+ on_punch = function(pos, node, puncher)
+ node.name = "homedecor:standing_lamp"..lampcolor.."_"..repl[suffix]
+ minetest.set_node(pos, node)
+ end,
+ expand = { top="placeholder" },
+ })
+
+ minetest.register_alias("homedecor:standing_lamp_bottom"..lampcolor.."_"..suffix, "homedecor:standing_lamp"..lampcolor.."_"..suffix)
+ minetest.register_alias("homedecor:standing_lamp_top"..lampcolor.."_"..suffix, "air")
+
+ -- for old maps that had the original 3dforniture mod
+ if lampcolor == "" then
+ minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
+ end
+end
+
+for _, color in ipairs(lamp_colors) do
+ reg_lamp("off", "low", "", nil, color )
+ reg_lamp("low", "med", "l", 3, color )
+ reg_lamp("med", "hi", "m", 7, color )
+ reg_lamp("hi", "max", "h", 11, color )
+ reg_lamp("max", "off", "x", 14, color )
+end
+
+local dlamp_cbox = {
+ type = "fixed",
+ fixed = { -0.2, -0.5, -0.15, 0.32, 0.12, 0.15 },
+}
+
+local dlamp_colors = { "red","blue","green","violet" }
+
+for _, color in ipairs(dlamp_colors) do
+ homedecor.register("desk_lamp_"..color, {
+ description = S("Desk Lamp ("..color..")"),
+ mesh = "homedecor_desk_lamp.obj",
+ tiles = {
+ "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
+ "homedecor_generic_metal_black.png^[colorize:"..color..":150",
+ "homedecor_generic_metal_black.png",
+ "homedecor_generic_metal_black.png^[colorize:"..color..":150"
+ },
+ inventory_image = "homedecor_desk_lamp_stem_inv.png^(homedecor_desk_lamp_metal_inv.png^[colorize:"..color..":140)",
+ selection_box = dlamp_cbox,
+ walkable = false,
+ groups = {snappy=3},
+ })
+end
+
+homedecor.register("ceiling_lamp", {
+ description = S("Ceiling Lamp"),
+ mesh = "homedecor_ceiling_lamp.obj",
+ tiles = {
+ "homedecor_generic_metal_brass.png",
+ "homedecor_ceiling_lamp_glass.png",
+ "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
+ "homedecor_generic_plastic_black.png^[colorize:#442d04:200",
+ },
+ inventory_image = "homedecor_ceiling_lamp_inv.png",
+ light_source = default.LIGHT_MAX,
+ groups = {snappy=3},
+ walkable = false,
+ on_punch = function(pos, node, puncher)
+ minetest.set_node(pos, {name = "homedecor:ceiling_lamp_off"})
+ end,
+})
+
+homedecor.register("ceiling_lamp_off", {
+ description = S("Ceiling Lamp (off)"),
+ mesh = "homedecor_ceiling_lamp.obj",
+ tiles = {
+ "homedecor_generic_metal_brass.png",
+ "homedecor_ceiling_lamp_glass.png",
+ "homedecor_table_standing_lamp_lightbulb.png",
+ "homedecor_generic_plastic_black.png^[colorize:#442d04:200",
+ },
+ groups = {snappy=3, not_in_creative_inventory=1},
+ walkable = false,
+ on_punch = function(pos, node, puncher)
+ minetest.set_node(pos, {name = "homedecor:ceiling_lamp"})
+ end,
+ drop = "homedecor:ceiling_lamp"
+})
diff --git a/homedecor_modpack/homedecor/listnodes.sh b/homedecor_modpack/homedecor/listnodes.sh
new file mode 100644
index 0000000..2332080
--- /dev/null
+++ b/homedecor_modpack/homedecor/listnodes.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+echo "Node listing as of "`date` > nodes.txt
+
+for i in *.lua; do
+ echo -e "\nIn $i:\n" >> nodes.txt
+ cat $i | grep "minetest.register_node(" | \
+ sed "s/minetest.register_node(.homedecor:/homedecor:/; s/., {//" | \
+ sort >> nodes.txt
+done
+
+less nodes.txt
+rm -f nodes.txt
diff --git a/homedecor_modpack/homedecor/locale/de.txt b/homedecor_modpack/homedecor/locale/de.txt
new file mode 100644
index 0000000..467f755
--- /dev/null
+++ b/homedecor_modpack/homedecor/locale/de.txt
@@ -0,0 +1,221 @@
+# Translation by Xanthin
+
+### Special strings ###
+
+### kitchen_cabinet.lua ###
+Kitchen Cabinet = Kuechenschrank
+## 1: Player name, 2: position
+%s moves stuff in kitchen cabinet at %s = %s bewegt etwas im Kuechenschrank bei %s
+%s moves stuff to kitchen cabinet at %s = %s legt etwas in den Kuechenschrank bei %s
+%s takes stuff from kitchen cabinet at %s = %s nimmt etwas aus dem Kuechenschrank bei %s
+Half-height Kitchen Cabinet (on ceiling) = Halbhoher Kuechenschrank (haengend)
+Under-sink cabinet = Unterschrank
+Kitchen Cabinet with sink = Unterschrank mit Spuele
+
+### door_models.lua ###
+Mahogany Closet Door = Wandschranktuer aus Mahagoni
+Oak Closet Door = Wandschranktuer aus Eiche
+Fancy Wood/Glass Door = Schicke Holz/Glastuer
+Glass Office Door = Glasbuerotuer
+Glass and Wood, Mahogany-colored = Glas-Holz-Tuer, mahagonifarben
+Glass and Wood, Oak-colored = Glas-Holz-Tuer, eichefarben
+Glass and Wood, White = Glas-Holz-Tuer, weiss
+Plain Wooden Door = Einfache Holztuer
+left = links
+right = rechts
+## 1: Side the doors opens to
+#deaktiviert, weil es nicht funktioniert
+#(Top Half, %s-opening) = (obere Haelfte, %soeffnend)
+#(%s-opening) = (%soeffnend)
+
+
+### door_nodes.lua ###
+Not enough space above that spot to place a door! = Es gibt nicht genug Raum ueber dieser Stelle um die Tuer zu platzieren!
+
+### crafts.lua ###
+Brass Ingot = Messingbarren
+Bucket of white paint = Eimer mit weisser Farbe
+Legs for Small Utility table = Tischbeine fuer kleinen Arbeitsplatte
+Plastic sheet = Kunststoffplatte
+Silicon lump = Silikonklumpen
+Simple Integrated Circuit = Einfacher integrierter Schaltkreis
+Small Wooden Drawer = Kleiner Holzschubkasten
+Terracotta Roof Tile = Terrakottadachziegel
+Titanium Dioxide = Titandioxid
+Uncooked Terracotta Base = Ungebrannte Terrakotta
+Unprocessed Plastic base = Unverarbeitetes Plastik
+
+### door_models.lua ###
+
+### door_nodes.lua ###
+
+### fences.lua ###
+Barbed Wire Fence = Stacheldrahtzaun
+Barbed Wire Fence Corner = Stacheldrahtzaunecke
+Barbed Wire Fence Gate = Stacheldrahtzauntor
+Brass Fence/railing = Messingzaun/Gelaender
+Brass Fence/railing with sign = Messingzaun/Gelaender mit Schild
+Chainlink Fence = Maschendrahtzaun
+Chainlink Fence Corner = Maschendrahtzaunecke
+Chainlink Fence Gate = Maschendrahtzauntor
+Unpainted Picket Fence = Unlackierter Lattenenzaun
+Unpainted Picket Fence Corner = Unlackierte Lattenenzaunecke
+Unpainted Picket Fence Gate = Unlackiertes Lattenzauntor
+White Picket Fence = Weisser Lattenzaun
+White Picket Fence Corner = Weisse Lattenzaunecke
+White Picket Fence Gate = Weisses Lattenzauntor
+Wooden Privacy Fence = Sichtschutzzaun aus Holz
+Wooden Privacy Fence Corner = Sichtschutzzaunecke aus Holz
+Wrought Iron Fence/railing = Schmiedeeiserner Zaun/Gelaender
+Wrought Iron Fence/railing with sign = Schmiedeeiserner Zaun/Gelaender mit Schild
+want to simply place the wielded item like usual. = Moechte einfach den getragenen Gegenstand wie gewohnt platzieren.
+
+### furniture.lua ###
+Table = Tisch
+Chair = Stuhl
+Black = schwarz
+Red = rot
+Pink = rosa
+Violet = violett
+Blue = blau
+Dark Green = dunkelgruen
+## 1: Color name
+Armchair (%s) = Sessel (%s)
+Table Lamp = Tischlampe
+
+### furniture_medieval.lua ###
+Bars = Gitterstaebe
+Binding Bars = Eckverbindung fuer Gitterstaebe
+Chains = Ketten
+Wall Torch = Wandfackel
+
+### furniture_bathroom.lua ###
+Toilet = Toilette
+Sink = Waschbecken
+Taps = Wasserhahn
+Shower Tray = Duschtasse
+Shower Head = Duschbrause
+
+### init.lua ###
+Loaded! = Geladen!
+Air Conditioner = Klimaanlage
+Asphalt Shingles = Asphaltschindeln
+Asphalt Shingles (outer corner) = Asphaltschindeln (Aussenecke)
+Asphalt Shingles (inner corner) = Asphaltschindeln (Innenecke)
+Black Plastic Flower Pot = Schwarzer Plastikblumentopf
+Brass Pole = Messingstange
+Brass Table Legs = Messingtischbeine
+Wrought Iron Table Legs = Schmiedeeiserne Tischbeine
+red = rot
+green = gruen
+blue = blau
+white = weiss
+pink = rosa
+violet = violett
+## 1: Color name
+Curtains (%s) = Vorhaenge (%s)
+Drop-Ceiling Tile = Deckenplatte
+Glass Skylight = Glasdachfenster
+Glass Skylight Frosted = Milchglasdachfenster
+Glass Table (Small, Round) = Glastischplatte (klein, rund)
+Glass Table (Small, Square) = Glastischplatte (klein, quadratisch)
+Glass Table Piece (large) = Glastischplatte (gross)
+Green Plastic Flower Pot = Gruener Plastikblumentopf
+Large Area Rug = Grosser Teppich
+Glass Table Piece (large) = Glastischplatte (gross)
+Large Stereo Speaker = Grosser Lautsprecher
+Legs for Utility Table = Tischbeine fuer Arbeitsplatte
+Projection Screen Material = Projektorleinwand
+Small Surround Speaker = Kleiner Lautsprecher
+Small Throw Rug = Kleiner Teppich
+Stereo Receiver = Stereoanlage
+Terracotta Flower Pot = Terrakottablumentopf
+Terracotta Shingles = Terrakottaschindeln
+Terracotta Shingles (outer corner) = Terrakottaschindeln (Aussenecke)
+Terracotta Shingles (inner corner) = Terrakottaschindeln (Innenecke)
+Textured Ceiling Paint = Deckenfarbe (Raufaser)
+Utility Table = Arbeitsplatte
+Utility table mk2 = Arbeitsplatte Modell 2
+Wooden Shutter (Black) = Holzjalousie (schwarz)
+Wooden Shutter (Dark grey) = Holzjalousie (dunkelgrau)
+Wooden Shutter (Forest green) = Holzjalousie (waldgruen)
+Wooden Shutter (Grey) = Holzjalousie (grau)
+Wooden Shutter (Light blue) = Holzjalousie (hellblau)
+Wooden Shutter (Violet) = Holzjalousie (violett)
+Wooden Shutter (Red) = Holzjalousie (rot)
+Wooden Shutter (Mahogany) = Holzjalousie (mahagoni)
+Wooden Shutter (Unpainted oak) = Holzjalousie (eiche)
+Wooden Shutter (White) = Holzjalousie (weiss)
+Wooden Shutter (Yellow) = Holzjalousie (gelb)
+Wood Table Piece (large)= Holztischplatte (gross)
+Wood Table (Small, Round) = Holztischplatte (klein, rund)
+Wood Table (Small, Square) = Holztischplatte (klein, quadratisch)
+Wood Shingles = Holzschindeln
+Wood Shingles (outer corner) = Holzschindeln (Aussenecke)
+Wood Shingles (inner corner) = Holzschindeln (Innenecke)
+Wrought Iron Pole = Schmiedeeiserne Stange
+someone = jemand
+## 1: Player name
+Sorry, %s owns that spot. = Tut mir leid, %s gehoert diese Stelle.
+
+### lighting.lua ###
+White Glowlight (small cube) = Weisse Gluehlampe (kleiner Wuerfel)
+White Glowlight (small cube, on ceiling) = Weisse Gluehlampe (kleiner Wuerfel, an der Decke)
+White Glowlight (thick) = Weisse Gluehlampe (dick)
+White Glowlight (thick, on wall) = Weisse Gluehlampe (dick, an der Wand)
+White Glowlight (thin) = Weisse Gluehlampe (duenn)
+White Glowlight (thin, on wall) = Weisse Gluehlampe (duenn, an der Wand)
+Yellow Glowlight (small cube) = Gelbe Gluehlampe (kleiner Wuerfel)
+Yellow Glowlight (small cube, on ceiling) = Gelbe Gluehlampe (kleiner Wuerfel, an der Decke)
+Yellow Glowlight (thick) = Gelbe Gluehlampe (dick)
+Yellow Glowlight (thick, on wall) = Gelbe Gluehlampe (dick, an der Wand)
+Yellow Glowlight (thin) = Gelbe Gluehlampe (duenn)
+Yellow Glowlight (thin, on wall) = Gelbe Gluehlampe (duenn, an der Wand)
+
+### locked.lua ###
+## 1: Item description, 2: Owner name
+%s (owned by %s) = %s (gehoert %s)
+## 1: Player name, 2: Item description, 3: Owner name, 4: Position
+%s tried to access a %s belonging to %s at %s = %s versuchte Zugang zu %s von %s zu bekommen bei %s
+## 1: Item description
+%s (Locked) = %s (verschlossen)
+Locked Fridge = Verschlossener Kuehlschrank
+Locked Cabinet = Verschlossener Schrank
+Locked Nightstand = Verschlossener Nachttisch
+Locked Oven = Verschlossener Herd
+Locked Oven (active) = Verschlossener Herd (aktiv)
+Locked Microwave Oven = Verschlossene Mikrowelle
+Locked Microwave Oven (active) = Verschlossene Mikrowelle (aktiv)
+
+### nightstands.lua ###
+Mahogany Nightstand with One Drawer = Mahagoninachttisch mit einer Schublade
+Mahogany Nightstand with Two Drawers = Mahagoninachttisch mit zwei Schubladen
+Oak Nightstand with One Drawer = Eichenachttisch mit einer Schublade
+Oak Nightstand with Two Drawers = Eichenachttisch mit zwei Schubladen
+## 1: Player name, 2: position
+%s moves stuff in nightstand at %s = %s bewegt etwas im Nachttisch
+%s moves stuff to nightstand at %s = %s legt etwas in den Nachttisch
+%s takes stuff from nightstand at %s = %s nimmt etwas aus dem Nachttisch
+One-drawer Nightstand = Nachttisch mit einer Schublade
+Two-drawer Nightstand = Nachttisch mit zwei Schubladen
+
+### oven.lua ###
+Oven = Herd
+Microwave Oven = Mikrowelle
+## 1: Item description, 2: Percentage
+%s active: %d%% = %s ist aktiv: %d%%
+## 1: Item description
+%s is empty = %s ist leer
+: Out of fuel = : kein Brennmaterial vorhanden
+: output bins are full = : Produktfelder sind voll
+
+### refrigerator.lua ###
+Refrigerator = Kuehlschrank
+## 1: Player name, 2: position
+%s moves stuff in refrigerator at %s = %s bewegt etwas im Kuehlschrank bei %s
+%s moves stuff to refrigerator at %s = %s legt etwas in den Kuehlschrank bei %s
+%s takes stuff from refrigerator at %s = %s nimmt etwas aus dem Kuehlschrank bei %s
+Not enough vertical space to place a refrigerator! = Es gibt nicht genug Raum ueber dieser Stelle um den Kuehlschrank zu platzieren!
+
+### television.lua ###
+Small CRT Television = Kleiner Roehrenfernseher
diff --git a/homedecor_modpack/homedecor/locale/es.txt b/homedecor_modpack/homedecor/locale/es.txt
new file mode 100644
index 0000000..88c9bce
--- /dev/null
+++ b/homedecor_modpack/homedecor/locale/es.txt
@@ -0,0 +1,192 @@
+
+#
+# Language: Español
+# Author: Diego Martínez <lkaezadl3@gmail.com>
+#
+
+### kitchen_cabinet.lua ###
+Kitchen Cabinet = Gabinete de Cocina
+## 1: Player name, 2: position
+%s moves stuff in kitchen cabinet at %s = %s mueve cosas en gabinete de cocina en %s
+%s moves stuff to kitchen cabinet at %s = %s mueve cosas al gabinete de cocina en %s
+%s takes stuff from kitchen cabinet at %s = %s toma cosas del gabinete de cocina en %s
+Half-height Kitchen Cabinet (on ceiling) = Gabinete de cocina de media altura (en techo)
+Under-sink cabinet = Gabinete con Lavabo
+Kitchen Cabinet with sink = Gabinete de cocina con lavabo
+
+### door_models.lua ###
+Mahogany Closet Door = Puerta de Armario de Caoba
+Oak Closet Door = Puerta de Armario de Roble
+Fancy Wood/Glass Door = Puerta de Madera y Cristal de Lujo
+Glass Office Door = Puerta de Oficina de Cristal
+Glass and Wood, Mahogany-colored = Cristal y Madera, color Caoba
+Glass and Wood, Oak-colored = Cristal y Madera, color Roble
+Glass and Wood, White = Cristal y Madera, color Blanco
+Plain Wooden Door = Puerta Simple de Madera
+left = izquierda
+right = derecha
+## 1: Side the doors opens to
+(Top Half, %s-opening) = (Parte Superior, abre a la %s)
+(%s-opening) = (abre a la %s)
+
+### door_nodes.lua ###
+Not enough vertical space to place a door! = ¡No hay suficiente espacio vertical para colocar una puerta!
+
+### crafts.lua ###
+Brass Ingot = Lingote de Latón
+Bucket of white paint = Cubo de Pintura Blanca
+Legs for Small Utility table = Patas de Mesa Utilitaria Pequeña
+Plastic sheet = Lámina de Plástico
+Silicon lump = Terrón de Silicio
+Simple Integrated Circuit = Circuito Integrado Simple
+Small Wooden Drawer = Cajón Pequeño de Madera
+Terracotta Roof Tile = Teja de Terracota
+Titanium Dioxide = Dióxido de Titanio
+Uncooked Terracotta Base = Base de Terracota sin Cocer
+Unprocessed Plastic base = Base de Plástico sin Procesar
+
+### fences.lua ###
+Barbed Wire Fence = Cerca de Alambre de Púas
+Barbed Wire Fence Gate = Portón de Cerca de Alambre de Púas
+Brass Fence/railing = Cerca/Barandilla de Latón
+Brass Fence/railing with sign = Cerca/Barandilla de Latón con Letrero
+Chainlink Fence = Cerca de Cadenas
+Chainlink Fence Gate = Portón de Cerca de Cadenas
+Chainlink Fence Gate (open) = Portón de Cerca de Cadenas (Abierto)
+Unpainted Picket Fence = Cerca de Piquete sin pintar
+Unpainted Picket Fence Gate = Portón de Cerca de Piquete sin pintar
+White Picket Fence = Cerca de Piquete blanca
+White Picket Fence Gate = Portón de Cerca de Piquete blanca
+Wooden Privacy Fence = Cerca privada de madera
+Wrought Iron Fence/railing = Cerca/Barandilla de Hierro Forjado
+Wrought Iron Fence/railing with sign = Cerca/Barandilla de Hierro Forjado con Letrero
+want to simply place the wielded item like usual. = solo se desea colocar el objeto empuñado normalmente.
+
+### furniture_medieval.lua ###
+Bars = Barras
+Binding Bars = Barras de Unión
+Chains = Cadenas
+Wall Torch = Antorcha de Pared
+
+### furniture_bathroom.lua ###
+Toilet = Inodoro
+Sink = Lavabo
+Taps = Grifo
+Shower Tray = Piso de Ducha
+Shower Head = Ducha
+
+### init.lua ###
+Loaded! = ¡Cargado!
+Asphalt Shingles = Tejas de Asfalto
+Black Plastic Flower Pot = Florero de Plástico Negro
+Brass Pole = Poste de Latón
+Brass Table Legs = Patas de Mesa de Latón
+red = rojas
+green = verdes
+blue = azules
+white = blancas
+pink = rosas
+violet = violetas
+## 1: Color name
+Curtains (%s) = Cortinas (%s)
+Drop-Ceiling Tile = Cielorraso
+Glass Skylight = Claraboya de Cristal
+Glass Table (Small, Round) = Mesa de Cristal (Pequeña, Redonda)
+Glass Table (Small, Square) = Mesa de Cristal (Pequeña, Cuadrada)
+Green Plastic Flower Pot = Florero de Plástico Negro
+Large Area Rug = Manta Grande
+Large Glass Table Piece = Pieza de Mesa de Cristal Grande
+Large Stereo Speaker = Altavoz de Estéreo Grande
+Legs for Utility Table = Patas de Mesa Utilitaria
+Projection Screen Material = Material de Pantalla de Proyección
+Small Surround Speaker = Pequeño Altavoz Envolvente
+Small Throw Rug = Manta Pequeña
+Stereo Receiver = Receptor Estéreo
+Terracotta Flower Pot = Florero de Terracota
+Terracotta Roofing = Tejado de Terracota
+Textured Ceiling Paint = Pintura Texturada para Techo
+Utility Table = Mesa Utilitaria
+Utility table mk2 = Mesa Utilitaria mk2
+Wooden Shutter (Black) = Obturador de Madera (Negro)
+Wooden Shutter (Dark Grey) = Obturador de Madera (Gris Oscuro)
+Wooden Shutter (Forest Green) = Obturador de Madera (Verde Bosque)
+Wooden Shutter (Grey) = Obturador de Madera (Gris)
+Wooden Shutter (Light Blue) = Obturador de Madera (Azul Claro)
+Wooden Shutter (Purple) = Obturador de Madera (Púrpura)
+Wooden Shutter (Red) = Obturador de Madera (Rojo)
+Wooden Shutter (Unpainted Mahogany) = Obturador de Madera (Caoba sin Pintar)
+Wooden Shutter (Unpainted Oak) = Obturador de Madera (Roble sin Pintar)
+Wooden Shutter (White) = Obturador de Madera (Blanco)
+Wooden Shutter (Yellow) = Obturador de Madera (Amarillo)
+Wooden Tabletop piece = Pieza de Mesa de Madera
+Wooden Tabletop (Small, Round) = Pieza de Mesa de Madera (Pequeña, Redonda)
+Wooden Tabletop (Small, Square) = Pieza de Mesa de Madera (Pequeña, Cuadrada)
+Wood Shingles = Tejas de Madera
+Wrought Iron Pole = Poste de Hierro Forjado
+someone = alguien
+## 1: Player name
+Sorry, %s owns that spot. = Lo siento, %s es dueño de ése lugar.
+
+### lighting.lua ###
+White Glowlight (small cube) = Luz Blanca (cubo pequeño)
+White Glowlight (small cube, on ceiling) = Luz Blanca (cubo pequeño, en techo)
+White Glowlight (thick) = Luz Blanca (Gruesa)
+White Glowlight (thick, on wall) = Luz Blanca (Gruesa, en pared)
+White Glowlight (thin) = Luz Blanca (Fina)
+White Glowlight (thin, on wall) = Luz Blanca (Fina, en pared)
+Yellow Glowlight (small cube) = Luz Amarilla (cubo pequeño)
+Yellow Glowlight (small cube, on ceiling) = Luz Amarilla (cubo pequeño, en techo)
+Yellow Glowlight (thick) = Luz Amarilla (Gruesa)
+Yellow Glowlight (thick, on wall) = Luz Amarilla (Gruesa, en pared)
+Yellow Glowlight (thin) = Luz Amarilla (Fina)
+Yellow Glowlight (thin, on wall) = Luz Amarilla (Fina, en pared)
+
+### locked.lua ###
+## 1: Item description, 2: Owner name
+%s (owned by %s) = %s (propiedad de %s)
+## 1: Player name, 2: Item description, 3: Owner name, 4: Position
+%s tried to access a %s belonging to %s at %s = %s ha intentado acceder un(a) %s propiedad de %s en %s
+## 1: Item description
+%s (Locked) = %s (Cerrado)
+Locked Cabinet = Gabinete Cerrado
+Locked Nightstand = Mesa de Noche Cerrada
+Locked Fridge = Refri Cerrado
+Locked Oven = Estufa Cerrada
+
+### nightstands.lua ###
+Mahogany Nightstand with One Drawer = Mesa de Noche de Caoba, un Cajón
+Mahogany Nightstand with Two Drawers = Mesa de Noche de Caoba, dos Cajones
+Oak Nightstand with One Drawer = Mesa de Noche de Roble, un Cajón
+Oak Nightstand with Two Drawers = Mesa de Noche de Roble, dos Cajones
+## 1: Player name, 2: position
+%s moves stuff in nightstand at %s = %s mueve cosas en mesa de noche en %s
+%s moves stuff to nightstand at %s = %s mueve cosas hacia mesa de noche en %s
+%s takes stuff from nightstand at %s = %s mueve cosas desde mesa de noche en %s
+One-drawer Nightstand = Mesa de Noche de un Cajón
+Two-drawer Nightstand = Mesa de Noche de dos Cajones
+
+### oven.lua ###
+Oven = Estufa
+## 1: Percentage
+Oven active: %d%% = Estufa activa: %d%%
+Oven out of fuel = Estufa sin combustible
+Oven is empty = Estufavacía
+
+### refrigerator.lua ###
+Refrigerator = Refrigerador
+## 1: Player name, 2: position
+%s moves stuff in refrigerator at %s = %s mueve cosas en refrigerador en %s
+%s moves stuff to refrigerator at %s = %s mueve cosas hacia refrigerador en %s
+%s takes stuff from refrigerator at %s = %s mueve cosas desde refrigerador en %s
+Not enough vertical space to place a refrigerator! = ¡No hay suficiente espacio vertical para colocar un refrigerador!
+
+### television.lua ###
+Small CRT Television = Pequeña Televisión CRT
+
+### signs_lib.lua ###
+%s wrote "%s" to sign at %s = %s ha escrito "%s" en el letrero en %s
+Reading cached character database. = Leyendo base de datos de catacteres.
+Font seems to have changed. Rebuilding cache. = La fuente parece haber cambiado. Reconstruyendo información guardada.
+Could not find font line height in cached DB. Trying brute force. = No se pudo encontrar la altura de línea en la base de datos. Intentando con fuerza bruta.
+Registered %s and %s = Registrados %s y %s
+signs loaded = letreros cargados
diff --git a/homedecor_modpack/homedecor/locale/fr.txt b/homedecor_modpack/homedecor/locale/fr.txt
new file mode 100644
index 0000000..e38ff56
--- /dev/null
+++ b/homedecor_modpack/homedecor/locale/fr.txt
@@ -0,0 +1,178 @@
+
+#
+# Language: Français
+# Author: Calinou
+#
+
+### kitchen_cabinet.lua ###
+Kitchen Cabinet = Meuble de cuisine
+## 1: Player name, 2: position
+%s moves stuff in kitchen cabinet at %s = %s déplace des objets dans un meuble de cuisine à %s
+%s moves stuff to kitchen cabinet at %s = %s édplace des objets vers un meuble de cuisine à %s
+%s takes stuff from kitchen cabinet at %s = %s prend des objets d'un meuble de cuisine à %s
+Half-height Kitchen Cabinet (on ceiling) = Meuble de cuisine réduit en hauteur (sur le plafond)
+Under-sink cabinet = Meuble sous évier
+Kitchen Cabinet with sink = Meuble de cuisine avec lavabo
+
+### door_models.lua ###
+Mahogany Closet Door = Porte en bois d'acajou
+Oak Closet Door = Porte en bois de chêne
+Fancy Wood/Glass Door = Porte artistique en bois et verre
+Glass Office Door = Porte en verre
+Glass and Wood, Mahogany-colored = Porte couleur acajou en bois et verre
+Glass and Wood, Oak-colored = Porte couleur chêne en bois et verre
+Glass and Wood, White = Porte blanche en bois et verre
+Plain Wooden Door = Porte en bois simple
+left = gauche
+right = droite
+## 1: Side the doors opens to
+(Top Half, %s-opening) = (partie supérieur, charnière à %s)
+(%s-opening) = (charnière à %s)
+
+### door_nodes.lua ###
+Not enough vertical space to place a door! = Pas assez d'espace vertical pour placer une porte !
+
+### crafts.lua ###
+Brass Ingot = Lingot de laiton
+Bucket of white paint = Seau de peinture blanche
+Legs for Small Utility table = Pieds pour table basse
+Plastic sheet = Bout de plastique
+Silicon lump = Silicone
+Simple Integrated Circuit = Circuit intégré simple
+Small Wooden Drawer = Petit tiroir en bois
+Terracotta Roof Tile = Tuile de toit en terre cuite
+Titanium Dioxide = Dioxide de titane
+Uncooked Terracotta Base = Base de terre non cuite
+Unprocessed Plastic base = Base de plastique non transformée
+
+### fences.lua ###
+Barbed Wire Fence = Barrière en fil barbelé
+Barbed Wire Fence Gate = Porte de barrière en fil barbelé
+Brass Fence/railing = Barrière en laiton
+Brass Fence/railing with sign = Barrière en laiton avec pancarte
+Chainlink Fence = Grillage
+Chainlink Fence Gate = Porte de grillage
+Chainlink Fence Gate (open) = Porte de grillage (ouverte)
+Unpainted Picket Fence = Barrière en piquets non peinte
+Unpainted Picket Fence Gate = Porte de barrière en piquets non peinte
+White Picket Fence = Barrière en piquets blanche
+White Picket Fence Gate = Porte de barrière en piquets blanche
+Wooden Privacy Fence = Barrière en bois
+Wrought Iron Fence/railing = Barrière en fer forgé
+Wrought Iron Fence/railing with sign = Barrière en fer forgé avec pancarte
+want to simply place the wielded item like usual. = veut simplement placer l'objet comme d'habitude.
+
+### init.lua ###
+Loaded! = Chargé !
+Asphalt Shingles = Bardeaux d'asphalte
+Black Plastic Flower Pot = Pot de fleur en plastique noir
+Brass Pole = Barre en laiton
+Brass Table Legs = Pieds de table en laiton
+red = rouges
+green = vertes
+blue = bleues
+white = blanches
+pink = roses
+violet = violettes
+## 1: Color name
+Curtains (%s) = Volets (%s)
+Drop-Ceiling Tile = Dalle suspendue au plafond
+Glass Skylight = Verre
+Glass Table (Small, Round) = Table en verre (petite, ronde)
+Glass Table (Small, Square) = Table en verre (petite, carrée)
+Green Plastic Flower Pot = Pot de fleur en plastique vert
+Large Area Rug = Grande couverture
+Large Glass Table Piece = Grand bout de verre de table
+Large Stereo Speaker = Grand haut-parleur stéréo
+Legs for Utility Table = Pieds pour table basse
+Projection Screen Material = Matériel pour projecteur
+Small Surround Speaker = Petit haut-parleur surround
+Small Throw Rug = Petite couverture
+Stereo Receiver = Récepteur stéréo
+Terracotta Flower Pot = Pot de fleur en terre cuite
+Terracotta Roofing = Tuile en terre cuite
+Textured Ceiling Paint = Papier peint avec motif pour plafond
+Utility Table = Table basse
+Utility table mk2 = Table basse MK2
+Wooden Shutter (Black) = Volet en bois (noir)
+Wooden Shutter (Dark Grey) = Volet en bois (gris foncé)
+Wooden Shutter (Forest Green) = Volet en bois (vert foncé)
+Wooden Shutter (Grey) = Volet en bois (gris)
+Wooden Shutter (Light Blue) = Volet en bois (bleu clair)
+Wooden Shutter (Purple) = Volet en bois (violet)
+Wooden Shutter (Red) = Volet en bois (rouge)
+Wooden Shutter (Unpainted Mahogany) = Volet en bois (acajou non peint)
+Wooden Shutter (Unpainted Oak) = Volet en bois (chêne non peint)
+Wooden Shutter (White) = Volet en bois (blanc)
+Wooden Shutter (Yellow) = Volet en bois (jaune)
+Wooden Tabletop piece = Bout de dessus de table
+Wooden Tabletop (Small, Round) = Dessus de table (petit, rond)
+Wooden Tabletop (Small, Square) = Dessus de table (petit, carré)
+Wood Shingles = Bardeaux de bois
+Wrought Iron Pole = Barre de fer forgé
+someone = quelqu'un
+## 1: Player name
+Sorry, %s owns that spot. = Désolé, %s est propriétaire de cette zone.
+
+### lighting.lua ###
+White Glowlight (small cube) = Lampe blanche (petit cube)
+White Glowlight (small cube, on ceiling) = Lampe blanche (petit cube, sur le plafond)
+White Glowlight (thick) = Lampe blanche (épaisse)
+White Glowlight (thick, on wall) = Lampe blanche (épaisse, sur le mur)
+White Glowlight (thin) = Lampe blanche (fine)
+White Glowlight (thin, on wall) = Lampe blanche (fine, sur le mur)
+Yellow Glowlight (small cube) = Lampe jaune (petit cube)
+Yellow Glowlight (small cube, on ceiling) = Lampe jaune (petit cube, sur le plafond)
+Yellow Glowlight (thick) = Lampe jaune (épaisse)
+Yellow Glowlight (thick, on wall) = Lampe jaune (épaisse, sur le mur)
+Yellow Glowlight (thin) = Lampe jaune (fine)
+Yellow Glowlight (thin, on wall) = Lampe jaune (fine, sur le mur)
+
+### locked.lua ###
+## 1: Item description, 2: Owner name
+%s (owned by %s) = %s (propriété de %s)
+## 1: Player name, 2: Item description, 3: Owner name, 4: Position
+%s tried to access a %s belonging to %s at %s = %s a essayé d'accéder à %s qui est propriété de %s à %s
+## 1: Item description
+%s (Locked) = %s (verrouillé)
+Locked Cabinet = Meuble verrouillé
+Locked Nightstand = Table de chevet verrouillée
+Locked Fridge = Réfrégirateur verrouillé
+Locked Oven = Four verrouillé
+
+### nightstands.lua ###
+Mahogany Nightstand with One Drawer = Table de chevet en acajou avec un tiroir
+Mahogany Nightstand with Two Drawers = Table de chevet en acajou avec deux tiroirs
+Oak Nightstand with One Drawer = Table de chevet en chêne avec un tiroir
+Oak Nightstand with Two Drawers = Table de chevet en chêne avec deux tiroirs
+## 1: Player name, 2: position
+%s moves stuff in nightstand at %s = %s déplace des objets dans une table de chevet à %s
+%s moves stuff to nightstand at %s = %s déplace des objets vers une table de chevet à %s
+%s takes stuff from nightstand at %s = %s prend des objets d'une table de chevet à %s
+One-drawer Nightstand = Table de chevet avec un tiroir
+Two-drawer Nightstand = Table de chevet avec deux tiroirs
+
+### oven.lua ###
+Oven = Four
+## 1: Percentage
+Oven active: %d%% = Four actif : %d%%
+Oven out of fuel = Four sans carburant
+Oven is empty = Four vide
+
+### refrigerator.lua ###
+Refrigerator = Réfrégirateur
+## 1: Player name, 2: position
+%s moves stuff in refrigerator at %s = %s déplace des objets dans un réfrégirateur à %s
+%s moves stuff to refrigerator at %s = %s déplace des objets vers un réfrégirateur à %s
+%s takes stuff from refrigerator at %s = %s prend des objets d'un réfrégirateur à %s
+Not enough vertical space to place a refrigerator! = Pas assez d'espace vertical pour placer un réfrégirateur !
+
+### television.lua ###
+Small CRT Television = Petite télévision à tube cathodique
+
+### signs_lib.lua ###
+E: character map file not found = E: fichier de table de caractère non trouvé
+## 1: Full String, 2: pos in string, 3: current char at pos
+W: unknown symbol in '%s' at %d (probably %s) = A: symbole inconnu dans '%s' dans %d (probablement %s)
+%s wrote "%s" to sign at %s =
+signs loaded =
diff --git a/homedecor_modpack/homedecor/locale/pt.txt b/homedecor_modpack/homedecor/locale/pt.txt
new file mode 100644
index 0000000..0163425
--- /dev/null
+++ b/homedecor_modpack/homedecor/locale/pt.txt
@@ -0,0 +1,196 @@
+
+# Brazilian Portuguese translation of homedecor
+# Last update: 2013/11/10
+# Last translator: Aracnus <frederico@teia.bio.br>
+
+### Special strings ###
+
+### kitchen_cabinet.lua ###
+Kitchen Cabinet = Armário de cozinha
+## 1: Player name, 2: position
+%s moves stuff in kitchen cabinet at %s = %s moveu itens no armário de cozinha em %s
+%s moves stuff to kitchen cabinet at %s = %s moveu itens para o armário de cozinha em %s
+%s takes stuff from kitchen cabinet at %s = %s retirou itens do armário de cozinha em %s
+Half-height Kitchen Cabinet (on ceiling) = Meio armário de cozinha (no teto)
+Under-sink cabinet = Armário sob a pia
+Kitchen Cabinet with sink = Armário de cozinha com pia
+
+### door_models.lua ###
+Mahogany Closet Door = Porta do armário de mogno
+Oak Closet Door = Porta do armário de carvalho
+Fancy Wood/Glass Door = Porta de madeira/vidro trabalhada
+Glass Office Door = Porta de escritório de vidro
+Glass and Wood, Mahogany-colored = Vidro e madeira (mogno)
+Glass and Wood, Oak-colored = Vidro e madeira (carvalho)
+Glass and Wood, White = Vidro e madeira (branca)
+Plain Wooden Door = Porta de madeira simples
+left = esquerda
+right = direita
+## 1: Side the doors opens to
+(Top Half, %s-opening) = (Metade superior, abre para %s)
+(%s-opening) = (abre para %s)
+
+
+### door_nodes.lua ###
+Not enough vertical space to place a door! = Não existe espaço vertical suficiente para colocar uma porta.
+
+### crafts.lua ###
+Brass Ingot = Lingote de bronze
+Bucket of white paint = Balde de tinta branca
+Legs for Small Utility table = Pernas para mesa pequena
+Plastic sheet = Folha de plástico
+Silicon lump = Massa de silício
+Simple Integrated Circuit = Circuito integrado simples
+Small Wooden Drawer = Gaveta pequena de madeira
+Terracotta Roof Tile = Telha de terracota
+Titanium Dioxide = Dióxido de titânio
+Uncooked Terracotta Base = Base bruta de terracota
+Unprocessed Plastic base = Base de plástico não processada
+
+### door_models.lua ###
+
+### door_nodes.lua ###
+
+### fences.lua ###
+Barbed Wire Fence = Cerca de arame farpado
+Barbed Wire Fence Gate = Portão da cerca de arame farpado
+Brass Fence/railing = Cerca/corrimão de bronze
+Brass Fence/railing with sign = Cerca/corrimão de bronze, com placa
+Chainlink Fence = Cerca de tela de arame
+Chainlink Fence Gate = Portão da cerca de tela de arame
+Chainlink Fence Gate (open) = Portão da cerca de tela de arame (aberto)
+Unpainted Picket Fence = Cerca de tábuas não pintada
+Unpainted Picket Fence Gate = Portão da cerca de madeira não pintado
+White Picket Fence = Cerca de madeira branca
+White Picket Fence Gate = Portão da cerca de madeira branco
+Wooden Privacy Fence = Cerca fechada de mandeira
+Wrought Iron Fence/railing = Cerca/corrimão de ferro forjado
+Wrought Iron Fence/railing with sign = Cerca/corrimão de ferro forjado, com placa
+want to simply place the wielded item like usual. = quer somente colocar o item empunhado normalmente.
+
+### furniture_medieval.lua ###
+Bars = Barras
+Binding Bars = Barras do canto
+Chains = Correntes
+Wall Torch = Tocha de parede
+
+### furniture_bathroom.lua ###
+Toilet = Vaso sanitário
+Sink = Pia
+Taps = Torneira
+Shower Tray = Ralo do chuveiro
+Shower Head = Chuveiro
+
+### init.lua ###
+Loaded! = Carregado!
+Asphalt Shingles = Telhas de asfalto
+Black Plastic Flower Pot = Vaso de flor de plástico preto
+Brass Pole = Poste de bronze
+Brass Table Legs = Pernas da mesa de bronze
+red = vermelho
+green = verde
+blue = azul
+white = branco
+pink = rosa
+violet = violeta
+## 1: Color name
+Curtains (%s) = Cortina (%s)
+Drop-Ceiling Tile = Placa de teto
+Glass Skylight = Claraboia de vidro
+Glass Table (Small, Round) = Mesa de vidro (pequena, redonda)
+Glass Table (Small, Square) = Mesa de vidro (pequena, quadrada)
+Green Plastic Flower Pot = Vaso de flor de plástico verde
+Large Area Rug = Tapete grande
+Large Glass Table Piece = Pedaço da mesa grande de vidro
+Large Stereo Speaker = Auto-falante grande
+Legs for Utility Table = Pernas para mesa
+Projection Screen Material = Material de tela de projeção
+Small Surround Speaker = Auto-falante pequeno
+Small Throw Rug = Tapete pequeno
+Stereo Receiver = Aparelho de som
+Terracotta Flower Pot = Vaso de flor de terracota
+Terracotta Roofing = Telhado de terracota
+Textured Ceiling Paint = Pintura texturizada do teto
+Utility Table = Mesa de trabalho
+Utility table mk2 = Mesa de trabalho mk2
+Wooden Shutter (Black) = Persiana de madeira (preta)
+Wooden Shutter (Dark Grey) = Persiana de madeira (cinza escura)
+Wooden Shutter (Forest Green) = Persiana de madeira (verde)
+Wooden Shutter (Grey) = Persiana de madeira (cinza)
+Wooden Shutter (Light Blue) = Persiana de madeira (azul clara)
+Wooden Shutter (Purple) = Persiana de madeira (roxa)
+Wooden Shutter (Red) = Persiana de madeira (vermelha)
+Wooden Shutter (Unpainted Mahogany) = Persiana de madeira (mogno)
+Wooden Shutter (Unpainted Oak) = Persiana de madeira (carvalho)
+Wooden Shutter (White) = Persiana de madeira (branca)
+Wooden Shutter (Yellow) = Persiana de madeira (amarela)
+Wooden Tabletop piece = Pedaço do tampo da mesa
+Wooden Tabletop (Small, Round) = Tampo da mesa (pequeno, arredondado)
+Wooden Tabletop (Small, Square) = Tampo da mesa (pequeno, quadrado)
+Wood Shingles = Telhas de madeira
+Wrought Iron Pole = Poste de ferro forjado
+someone = alguém
+## 1: Player name
+Sorry, %s owns that spot. = Desculpe, mas esse local pertence a %s.
+
+### lighting.lua ###
+White Glowlight (small cube) = Arandela branca (cubo pequeno)
+White Glowlight (small cube, on ceiling) = Arandela branca (cubo pequeno, na parede)
+White Glowlight (thick) = Arandela branca (grossa)
+White Glowlight (thick, on wall) = Arandela branca (grossa, na parede)
+White Glowlight (thin) = Arandela branca (fina)
+White Glowlight (thin, on wall) = Arandela branca (fina, na parede)
+Yellow Glowlight (small cube) = Arandela amarela (cubo pequeno)
+Yellow Glowlight (small cube, on ceiling) = Arandela amarela (cubo pequeno, na parede)
+Yellow Glowlight (thick) = Arandela amarela (grossa)
+Yellow Glowlight (thick, on wall) = Arandela amarela (grossa, na parede)
+Yellow Glowlight (thin) = Arandela amarela (fina)
+Yellow Glowlight (thin, on wall) = Arandela amarela (fina, na parede)
+
+### locked.lua ###
+## 1: Item description, 2: Owner name
+%s (owned by %s) = %s (pertence a %s)
+## 1: Player name, 2: Item description, 3: Owner name, 4: Position
+%s tried to access a %s belonging to %s at %s = %s tentou acessar %s pertencente a %s em %s
+## 1: Item description
+%s (Locked) = %s (trancado)
+Locked Cabinet = Armário trancado
+Locked Nightstand = Criado-mudo trancado
+
+### nightstands.lua ###
+Mahogany Nightstand with One Drawer = Criado-mudo de mogno, com uma gaveta
+Mahogany Nightstand with Two Drawers = Criado-mudo de mogno, com duas gavetas
+Oak Nightstand with One Drawer = Criado-mudo de carvalho, com uma gaveta
+Oak Nightstand with Two Drawers = Criado-mudo de carvalho, com duas gavetas
+## 1: Player name, 2: position
+%s moves stuff in nightstand at %s = %s moveu item(ns) no criado-mudo em %s
+%s moves stuff to nightstand at %s = %s moveu item(ns) para o criado-mudo em %s
+%s takes stuff from nightstand at %s = %s tirou item(ns) do criado-mudo em %s
+One-drawer Nightstand = Criado-mudo com uma gaveta
+Two-drawer Nightstand = Criado-mudo com duas gavetas
+
+### oven.lua ###
+Oven = Forno
+## 1: Percentage
+Oven active: %d%% = Forno ativo: %d%%
+Oven out of fuel = O forno está sem combustível
+Oven is empty = O forno está vazio
+
+### refrigerator.lua ###
+Refrigerator = Geladeira
+## 1: Player name, 2: position
+%s moves stuff in refrigerator at %s = %s moveu item(ns) na geladeira em %s
+%s moves stuff to refrigerator at %s = %s moveu item(ns) para a geladeira em %s
+%s takes stuff from refrigerator at %s = %s tirou item(ns) da geladeira em %s
+Not enough vertical space to place a refrigerator! = Não existe espaço vertical suficiente para adicionar uma geladeira.
+
+### television.lua ###
+Small CRT Television = TV de tubo pequena
+
+### signs_lib.lua ###
+%s wrote "%s" to sign at %s = %s escreveu "%s" na placa em %s
+Reading cached character database. = Lendo banco de dados de caracteres no cache.
+Font seems to have changed. Rebuilding cache. = Aparentemente as fontes foram alteradas. Reconstruindo o cache.
+Could not find font line height in cached DB. Trying brute force. = Não foi possível encontrar a altura da linha da fonte no cache do BD. Tentando na marra.
+Registered %s and %s = %s e %s registrados
+signs loaded = placas carregadas
diff --git a/homedecor_modpack/homedecor/locale/template.txt b/homedecor_modpack/homedecor/locale/template.txt
new file mode 100644
index 0000000..0687983
--- /dev/null
+++ b/homedecor_modpack/homedecor/locale/template.txt
@@ -0,0 +1,230 @@
+##########################
+# Template language file #
+##########################
+
+### Special strings ###
+
+### kitchen_cabinet.lua ###
+Kitchen Cabinet =
+## 1: Player name, 2: position
+%s moves stuff in kitchen cabinet at %s =
+%s moves stuff to kitchen cabinet at %s =
+%s takes stuff from kitchen cabinet at %s =
+Half-height Kitchen Cabinet (on ceiling) =
+Under-sink cabinet =
+Kitchen Cabinet with sink =
+
+### door_models.lua ###
+Mahogany Closet Door =
+Oak Closet Door =
+Fancy Wood/Glass Door =
+Glass Office Door =
+Glass and Wood, Mahogany-colored =
+Glass and Wood, Oak-colored =
+Glass and Wood, White =
+Plain Wooden Door =
+left =
+right =
+## 1: Side the doors opens to
+(Top Half, %s-opening) =
+(%s-opening) =
+
+
+### door_nodes.lua ###
+Not enough space above that spot to place a door! =
+
+### crafts.lua ###
+Brass Ingot =
+Bucket of white paint =
+Legs for Small Utility table =
+Plastic sheet =
+Silicon lump =
+Simple Integrated Circuit =
+Small Wooden Drawer =
+Terracotta Roof Tile =
+Titanium Dioxide =
+Uncooked Terracotta Base =
+Unprocessed Plastic base =
+
+### door_models.lua ###
+
+### door_nodes.lua ###
+
+### fences.lua ###
+Barbed Wire Fence =
+Barbed Wire Fence Corner =
+Barbed Wire Fence Gate =
+Brass Fence/railing =
+Brass Fence/railing with sign =
+Chainlink Fence =
+Chainlink Fence Corner =
+Chainlink Fence Gate =
+Unpainted Picket Fence =
+Unpainted Picket Fence Corner =
+Unpainted Picket Fence Gate =
+White Picket Fence =
+White Picket Fence Corner =
+White Picket Fence Gate =
+Wooden Privacy Fence =
+Wooden Privacy Fence Corner =
+Wrought Iron Fence/railing =
+Wrought Iron Fence/railing with sign =
+want to simply place the wielded item like usual. =
+
+### furniture.lua ###
+Table =
+Chair =
+Black =
+Red =
+Pink =
+Violet =
+Blue =
+Dark Green =
+## 1: Color name
+Armchair (%s) =
+Table Lamp =
+
+### furniture_medieval.lua ###
+Bars =
+Binding Bars =
+Chains =
+Wall Torch =
+
+### furniture_bathroom.lua ###
+Toilet =
+Sink =
+Taps =
+Shower Tray =
+Shower Head =
+
+### init.lua ###
+Loaded! =
+Air Conditioner =
+Asphalt Shingles =
+Asphalt Shingles (outer corner) =
+Asphalt Shingles (inner corner) =
+Black Plastic Flower Pot =
+Brass Pole =
+Brass Table Legs =
+Wrought Iron Table Legs =
+red =
+green =
+blue =
+white =
+pink =
+violet =
+## 1: Color name
+Curtains (%s) =
+Drop-Ceiling Tile =
+Glass Skylight =
+Glass Skylight Frosted =
+Glass Table (Small, Round) =
+Glass Table (Small, Square) =
+Glass Table Piece (large) =
+Green Plastic Flower Pot =
+Large Area Rug =
+Glass Table Piece (large) =
+Large Stereo Speaker =
+Legs for Utility Table =
+Projection Screen Material =
+Small Surround Speaker =
+Small Throw Rug =
+Stereo Receiver =
+Terracotta Flower Pot =
+Terracotta Shingles =
+Terracotta Shingles (outer corner) =
+Terracotta Shingles (inner corner) =
+Textured Ceiling Paint =
+Utility Table =
+Utility table mk2 =
+Wooden Shutter (Black) =
+Wooden Shutter (Dark grey) =
+Wooden Shutter (Forest green) =
+Wooden Shutter (Grey) =
+Wooden Shutter (Light blue) =
+Wooden Shutter (Violet) =
+Wooden Shutter (Red) =
+Wooden Shutter (Mahogany) =
+Wooden Shutter (Unpainted oak) =
+Wooden Shutter (White) =
+Wooden Shutter (Yellow) =
+Wood Table Piece (large)=
+Wood Table (Small, Round) =
+Wood Table (Small, Square) =
+Wood Shingles =
+Wood Shingles (outer corner) =
+Wood Shingles (inner corner) =
+Wrought Iron Pole =
+someone =
+## 1: Player name
+Sorry, %s owns that spot. =
+
+### lighting.lua ###
+White Glowlight (small cube) =
+White Glowlight (small cube, on ceiling) =
+White Glowlight (thick) =
+White Glowlight (thick, on wall) =
+White Glowlight (thin) =
+White Glowlight (thin, on wall) =
+Yellow Glowlight (small cube) =
+Yellow Glowlight (small cube, on ceiling) =
+Yellow Glowlight (thick) =
+Yellow Glowlight (thick, on wall) =
+Yellow Glowlight (thin) =
+Yellow Glowlight (thin, on wall) =
+
+### locked.lua ###
+## 1: Item description, 2: Owner name
+%s (owned by %s) =
+## 1: Player name, 2: Item description, 3: Owner name, 4: Position
+%s tried to access a %s belonging to %s at %s =
+## 1: Item description
+%s (Locked) =
+Locked Fridge =
+Locked Cabinet =
+Locked Nightstand =
+Locked Oven =
+Locked Oven (active) =
+Locked Microwave Oven =
+Locked Microwave Oven (active) =
+
+### nightstands.lua ###
+Mahogany Nightstand with One Drawer =
+Mahogany Nightstand with Two Drawers =
+Oak Nightstand with One Drawer =
+Oak Nightstand with Two Drawers =
+## 1: Player name, 2: position
+%s moves stuff in nightstand at %s =
+%s moves stuff to nightstand at %s =
+%s takes stuff from nightstand at %s =
+One-drawer Nightstand =
+Two-drawer Nightstand =
+
+### oven.lua ###
+Oven =
+Microwave Oven =
+## 1: Item description, 2: Percentage
+%s active: %d%% =
+## 1: Item description
+%s is empty =
+: Out of fuel =
+: output bins are full =
+
+### refrigerator.lua ###
+Refrigerator =
+## 1: Player name, 2: position
+%s moves stuff in refrigerator at %s =
+%s moves stuff to refrigerator at %s =
+%s takes stuff from refrigerator at %s =
+Not enough vertical space to place a refrigerator! =
+
+### television.lua ###
+Small CRT Television =
+
+### signs_lib.lua ###
+%s wrote "%s" to sign at %s =
+Reading cached character database. =
+Font seems to have changed. Rebuilding cache. =
+Could not find font line height in cached DB. Trying brute force. =
+Registered %s and %s =
+signs loaded =
diff --git a/homedecor_modpack/homedecor/misc-nodes.lua b/homedecor_modpack/homedecor/misc-nodes.lua
new file mode 100644
index 0000000..67b341b
--- /dev/null
+++ b/homedecor_modpack/homedecor/misc-nodes.lua
@@ -0,0 +1,604 @@
+local S = homedecor.gettext
+
+homedecor.register("ceiling_paint", {
+ description = S("Textured Ceiling Paint"),
+ drawtype = 'signlike',
+ tiles = { 'homedecor_ceiling_paint.png' },
+ inventory_image = 'homedecor_ceiling_paint_roller.png',
+ wield_image = 'homedecor_ceiling_paint_roller.png',
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = { type = "wallmounted" },
+})
+
+homedecor.register("ceiling_tile", {
+ description = S("Drop-Ceiling Tile"),
+ drawtype = 'signlike',
+ tiles = { 'homedecor_ceiling_tile.png' },
+ wield_image = 'homedecor_ceiling_tile.png',
+ inventory_image = 'homedecor_ceiling_tile.png',
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = { type = "wallmounted" },
+})
+
+local rug_types = {
+ { "small", "homedecor_small_rug.obj" },
+ { "large", homedecor.box.slab_y(0.0625)},
+ { "persian", homedecor.box.slab_y(0.0625)}
+}
+
+for i in ipairs(rug_types) do
+ s = rug_types[i][1]
+ m = rug_types[i][2]
+
+ local mesh = m
+ local nodebox = nil
+ local tiles = { "homedecor_rug_"..s..".png", "wool_grey.png" }
+
+ if type(m) == "table" then
+ mesh = nil
+ nodebox = {
+ type = "fixed",
+ fixed = m
+ }
+ tiles = {
+ "homedecor_rug_"..s..".png",
+ "wool_grey.png",
+ "homedecor_rug_"..s..".png"
+ }
+ end
+
+ homedecor.register("rug_"..s, {
+ description = S("Rug ("..s..")"),
+ mesh = mesh,
+ tiles = tiles,
+ node_box = nodebox,
+ paramtype2 = "wallmounted",
+ walkable = false,
+ groups = {snappy = 3},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = { type = "wallmounted" },
+ })
+end
+
+local pot_colors = {"black", "green", "terracotta"}
+
+for _, p in ipairs(pot_colors) do
+homedecor.register("flower_pot_"..p, {
+ description = S("Flower Pot ("..p..")"),
+ mesh = "homedecor_flowerpot.obj",
+ tiles = {
+ "homedecor_flower_pot_"..p..".png",
+ "default_dirt.png^[colorize:#000000:175"
+ },
+ groups = { snappy = 3, potting_soil=1 },
+ sounds = default.node_sound_stone_defaults(),
+})
+end
+
+local flowers_list = {
+ { "Rose", "rose", "flowers:rose" },
+ { "Tulip", "tulip", "flowers:tulip" },
+ { "Yellow Dandelion", "dandelion_yellow", "flowers:dandelion_yellow" },
+ { "White Dandelion", "dandelion_white", "flowers:dandelion_white" },
+ { "Blue Geranium", "geranium", "flowers:geranium" },
+ { "Viola", "viola", "flowers:viola" },
+ { "Cactus", "cactus", "default:cactus" },
+ { "Bonsai", "bonsai", "default:sapling" }
+}
+
+for i in ipairs(flowers_list) do
+ local flowerdesc = flowers_list[i][1]
+ local flower = flowers_list[i][2]
+ local craftwith = flowers_list[i][3]
+
+ homedecor.register("potted_"..flower, {
+ description = S("Potted flower ("..flowerdesc..")"),
+ mesh = "homedecor_potted_plant.obj",
+ tiles = {
+ "homedecor_flower_pot_terracotta.png",
+ "default_dirt.png^[colorize:#000000:175",
+ "flowers_"..flower..".png"
+ },
+ walkable = false,
+ groups = {snappy = 3},
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.2, -0.5, -0.2, 0.2, 0.3, 0.2 }
+ }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:potted_"..flower,
+ recipe = { craftwith, "homedecor:flower_pot_small" }
+ })
+
+ minetest.register_alias("flowers:flower_"..flower.."_pot", "homedecor:potted_"..flower)
+ minetest.register_alias("flowers:potted_"..flower, "homedecor:potted_"..flower)
+ minetest.register_alias("flowers:flower_pot", "homedecor:flower_pot_small")
+end
+
+homedecor.register("pole_brass", {
+ description = S("Brass Pole"),
+ mesh = "homedecor_round_pole.obj",
+ tiles = {"homedecor_generic_metal_brass.png^homedecor_generic_metal_lines_overlay.png",},
+ inventory_image = "homedecor_pole_brass_inv.png",
+ wield_image = "homedecor_pole_brass_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.125, -0.5, -0.125, 0.125, 0.5, 0.125 },
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -0.125, -0.5, -0.125, 0.125, 0.5, 0.125 },
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("pole_wrought_iron", {
+ description = S("Wrought Iron Pole"),
+ tiles = { "homedecor_generic_metal_wrought_iron.png^homedecor_generic_metal_lines_overlay.png" },
+ inventory_image = "homedecor_pole_wrought_iron_inv.png",
+ wield_image = "homedecor_pole_wrought_iron_inv.png",
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625}
+ },
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+local ft_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.375, 0.5, 0.3125, 0.375 }
+}
+
+homedecor.register("fishtank", {
+ description = "Fishtank",
+ mesh = "homedecor_fishtank.obj",
+ tiles = {
+ "homedecor_generic_plastic_black.png",
+ "homedecor_fishtank_filter.png",
+ "homedecor_fishtank_fishes.png",
+ "homedecor_fishtank_gravel.png",
+ "homedecor_fishtank_water_top.png",
+ "homedecor_fishtank_sides.png",
+ },
+ use_texture_alpha = true,
+ selection_box = ft_cbox,
+ collision_box = ft_cbox,
+ groups = {cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ on_rightclick = function(pos, node, clicker)
+ minetest.set_node(pos, {name = "homedecor:fishtank_lighted", param2 = node.param2})
+ end
+})
+
+homedecor.register("fishtank_lighted", {
+ description = "Fishtank (lighted)",
+ mesh = "homedecor_fishtank.obj",
+ tiles = {
+ "homedecor_generic_plastic_black.png",
+ "homedecor_fishtank_filter.png",
+ "homedecor_fishtank_fishes_lighted.png",
+ "homedecor_fishtank_gravel_lighted.png",
+ "homedecor_fishtank_water_top_lighted.png",
+ "homedecor_fishtank_sides_lighted.png",
+ },
+ light_source = LIGHT_MAX-4,
+ use_texture_alpha = true,
+ selection_box = ft_cbox,
+ collision_box = ft_cbox,
+ groups = {cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ on_rightclick = function(pos, node, clicker)
+ minetest.set_node(pos, {name = "homedecor:fishtank", param2 = node.param2})
+ end,
+ drop = "homedecor:fishtank",
+})
+
+homedecor.register("cardboard_box_big", {
+ description = S("Cardboard box (big)"),
+ tiles = {
+ 'homedecor_cardbox_big_tb.png',
+ 'homedecor_cardbox_big_tb.png',
+ 'homedecor_cardbox_big_sides.png',
+ },
+ groups = { snappy = 3 },
+ infotext=S("Cardboard box"),
+ inventory = {
+ size=24,
+ },
+})
+
+homedecor.register("cardboard_box", {
+ description = S("Cardboard box"),
+ tiles = {
+ 'homedecor_cardbox_tb.png',
+ 'homedecor_cardbox_tb.png',
+ 'homedecor_cardbox_sides.png',
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.3125, -0.5, -0.3125, 0.3125, 0, 0.3125},
+ }
+ },
+ groups = { snappy = 3 },
+ infotext=S("Cardboard box"),
+ inventory = {
+ size=8,
+ },
+})
+
+homedecor.register("dvd_cd_cabinet", {
+ description = "DVD/CD cabinet",
+ mesh = "homedecor_dvd_cabinet.obj",
+ tiles = {
+ "default_wood.png",
+ "homedecor_dvdcd_cabinet_front.png",
+ "homedecor_dvdcd_cabinet_back.png"
+ },
+ selection_box = homedecor.nodebox.slab_z(-0.5),
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+local pooltable_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.3125, 1.5 }
+}
+
+homedecor.register("pool_table", {
+ mesh = "homedecor_pool_table.obj",
+ tiles = {
+ "homedecor_pool_table_cue.png",
+ "homedecor_pool_table_baize.png",
+ "homedecor_pool_table_pockets.png",
+ "homedecor_pool_table_balls.png",
+ "homedecor_generic_wood_luxury.png^[colorize:#000000:90"
+ },
+ description = "Pool Table",
+ inventory_image = "homedecor_pool_table_inv.png",
+ groups = {snappy=3},
+ selection_box = pooltable_cbox,
+ collision_box = pooltable_cbox,
+ expand = { forward="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow
+})
+
+minetest.register_alias("homedecor:pool_table_2", "air")
+
+local piano_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.125, 1.5, 0.5, 0.5 }
+}
+
+homedecor.register("piano", {
+ mesh = "homedecor_piano.obj",
+ tiles = {
+ "homedecor_generic_wood_luxury.png^[colorize:#000000:175",
+ "homedecor_piano_keys.png",
+ "homedecor_generic_metal_brass.png",
+ },
+ inventory_image = "homedecor_piano_inv.png",
+ description = "Piano",
+ groups = { snappy = 3 },
+ selection_box = piano_cbox,
+ collision_box = piano_cbox,
+ expand = { right="placeholder" },
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow
+})
+
+minetest.register_alias("homedecor:piano_left", "homedecor:piano")
+minetest.register_alias("homedecor:piano_right", "air")
+
+local tr_cbox = {
+ type = "fixed",
+ fixed = { -0.3125, -0.5, -0.1875, 0.3125, 0.125, 0.1875 }
+}
+
+homedecor.register("trophy", {
+ description = "Trophy",
+ mesh = "homedecor_trophy.obj",
+ tiles = {
+ "default_wood.png",
+ "homedecor_generic_metal_gold.png"
+ },
+ inventory_image = "homedecor_trophy_inv.png",
+ groups = { snappy=3 },
+ walkable = false,
+ selection_box = tr_cbox,
+})
+
+local sb_cbox = {
+ type = "fixed",
+ fixed = { -0.4, -0.5, -0.5, 0.4, 0.375, 0.5 }
+}
+
+homedecor.register("sportbench", {
+ description = "Sport bench",
+ mesh = "homedecor_sport_bench.obj",
+ tiles = {
+ "homedecor_generic_metal_wrought_iron.png",
+ "homedecor_generic_metal_bright.png",
+ "homedecor_generic_metal_black.png",
+ "wool_black.png"
+ },
+ inventory_image = "homedecor_sport_bench_inv.png",
+ groups = { snappy=3 },
+ selection_box = sb_cbox,
+ walkable = false,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+local skate_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.15, 0.5, -0.3, 0.15 }
+}
+
+homedecor.register("skateboard", {
+ drawtype = "mesh",
+ mesh = "homedecor_skateboard.obj",
+ tiles = { "homedecor_skateboard.png" },
+ inventory_image = "homedecor_skateboard_inv.png",
+ description = "Skateboard",
+ groups = {snappy=3},
+ selection_box = skate_cbox,
+ walkable = false,
+ sounds = default.node_sound_wood_defaults(),
+ on_place = minetest.rotate_node
+})
+
+homedecor.register("tool_cabinet", {
+ description = "Metal tool cabinet and work table",
+ mesh = "homedecor_tool_cabinet.obj",
+ tiles = {
+ "homedecor_generic_metal_black.png^[colorize:#ff0000:150",
+ "homedecor_tool_cabinet_drawers.png",
+ "homedecor_generic_metal_black.png^[colorize:#006000:150",
+ "homedecor_generic_metal_black.png^[brighten",
+ "homedecor_generic_metal_bright.png",
+ "homedecor_tool_cabinet_misc.png",
+ },
+ inventory_image = "homedecor_tool_cabinet_inv.png",
+ on_rotate = screwdriver.rotate_simple,
+ groups = { snappy=3 },
+ selection_box = homedecor.nodebox.slab_y(2),
+ expand = { top="placeholder" },
+ inventory = {
+ size=24,
+ }
+})
+
+minetest.register_alias("homedecor:tool_cabinet_bottom", "homedecor:tool_cabinet")
+minetest.register_alias("homedecor:tool_cabinet_top", "air")
+
+local pframe_cbox = {
+ type = "fixed",
+ fixed = { -0.18, -0.5, -0.08, 0.18, -0.08, 0.18 }
+}
+local n = { 1, 2 }
+
+for _, i in ipairs(n) do
+ homedecor.register("picture_frame"..i, {
+ description = S("Picture Frame"),
+ mesh = "homedecor_picture_frame.obj",
+ tiles = {
+ "homedecor_picture_frame_image"..i..".png",
+ "homedecor_generic_wood_luxury.png^[colorize:#000000:50",
+ "homedecor_picture_frame_back.png",
+ },
+ inventory_image = "homedecor_picture_frame"..i.."_inv.png",
+ wield_image = "homedecor_picture_frame"..i.."_inv.png",
+ groups = {snappy = 3},
+ selection_box = pframe_cbox,
+ walkable = false,
+ sounds = default.node_sound_glass_defaults()
+ })
+end
+
+local p_cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, 0.4375, 0.5, 0.5, 0.5 }
+ }
+}
+
+for i = 1,20 do
+ homedecor.register("painting_"..i, {
+ description = "Decorative painting #"..i,
+ mesh = "homedecor_painting.obj",
+ tiles = {
+ "default_wood.png",
+ "homedecor_blank_canvas.png",
+ "homedecor_painting"..i..".png"
+ },
+ selection_box = p_cbox,
+ walkable = false,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ })
+end
+
+homedecor.banister_materials = {
+ { "wood",
+ "wood",
+ "default_wood.png",
+ "default_wood.png",
+ "group:wood",
+ "group:stick",
+ "",
+ ""
+ },
+ { "white_dark",
+ "dark topped",
+ homedecor.white_wood,
+ homedecor.dark_wood,
+ "group:wood",
+ "group:stick",
+ "dye:brown",
+ "dye:white"
+ },
+ { "brass",
+ "brass",
+ homedecor.white_wood,
+ "homedecor_generic_metal_brass.png",
+ "technic:brass_ingot",
+ "group:stick",
+ "",
+ "dye:white"
+ },
+ { "wrought_iron",
+ "wrought iron",
+ "homedecor_generic_metal_wrought_iron.png",
+ "homedecor_generic_metal_wrought_iron.png",
+ "homedecor:pole_wrought_iron",
+ "homedecor:pole_wrought_iron",
+ "",
+ ""
+ }
+}
+
+for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
+
+ for i in ipairs(homedecor.banister_materials) do
+
+ local name = homedecor.banister_materials[i][1]
+ local nodename = "banister_"..name.."_"..side
+
+ local groups = { snappy = 3, not_in_creative_inventory = 1 }
+ local cbox = {
+ type = "fixed",
+ fixed = { -9/16, -3/16, 5/16, 9/16, 24/16, 8/16 }
+ }
+
+ if side == "horizontal" then
+ groups = { snappy = 3 }
+ cbox = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, 5/16, 8/16, 8/16, 8/16 }
+ }
+ else
+ minetest.register_alias(string.gsub("homedecor:"..nodename, "diagonal_", ""), "homedecor:"..nodename)
+ end
+
+ homedecor.register(nodename, {
+ description = S("Banister for Stairs ("..homedecor.banister_materials[i][2]..", "..side..")"),
+ mesh = "homedecor_banister_"..side..".obj",
+ tiles = {
+ homedecor.banister_materials[i][3],
+ homedecor.banister_materials[i][4]
+ },
+ inventory_image = "homedecor_banister_"..name.."_inv.png",
+ groups = groups,
+ selection_box = cbox,
+ collision_box = cbox,
+ on_place = homedecor.place_banister,
+ drop = "homedecor:banister_"..name.."_horizontal",
+ })
+ end
+end
+
+homedecor.register("spiral_staircase", {
+ description = "Spiral Staircase",
+ mesh = "homedecor_spiral_staircase.obj",
+ wield_scale = { x=0.4, y=0.4, z=0.4 },
+ tiles = {
+ "homedecor_generic_metal_wrought_iron.png",
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -1.5, -0.5, -1.5, 0.5, 2.5, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5625, -0.5, -0.5625, -0.4375, 2.5, -0.4375}, -- NodeBox9
+ {-0.5, -0.5, -0.5, 0.5, -0.4375, 0}, -- NodeBox14
+ {-0.5, -0.125, -0.5, -0.25, -0.0625, 0.5}, -- NodeBox15
+ {-0.25, -0.125, -0.0625, 0, -0.0625, 0.5}, -- NodeBox16
+ {-1, 0.25, -0.5, -0.5, 0.3125, 0.5}, -- NodeBox17
+ {-1.5, 0.625, -0.5, -0.5, 0.6875, -0.25}, -- NodeBox18
+ {-1.5, 0.625, -0.25, -0.9375, 0.6875, 0}, -- NodeBox19
+ {-1.5, 1, -1, -0.5, 1.0625, -0.5}, -- NodeBox20
+ {-0.75, 1.375, -1.5, -0.5, 1.4375, -0.5}, -- NodeBox21
+ {-1, 1.375, -1.5, -0.75, 1.4375, -1}, -- NodeBox22
+ {-0.5, 1.75, -1.5, 0.0625, 1.8125, -0.5}, -- NodeBox23
+ {-0.5, 2.125, -0.8125, 0.5, 2.1875, -0.5}, -- NodeBox24
+ {-0.0625, 2.125, -1.0625, 0.5, 2.1875, -0.75}, -- NodeBox25
+ {-1.5, -0.125, 0.4375, 0.5, 1.625, 0.5}, -- NodeBox26
+ {-1.5, 1.5625, -1.5, -1.4375, 2.875, 0.5}, -- NodeBox27
+ {-1.5, 1.75, -1.5, 0.5, 3.3125, -1.4375}, -- NodeBox28
+ {0.4375, -0.5, -0.5, 0.5, 0.875, 0.5}, -- NodeBox29
+ {0.4375, 2.125, -1.5, 0.5, 3.3125, 0.5}, -- NodeBox30
+ }
+ },
+ groups = {cracky = 1},
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.rotate_simple,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local leftx = homedecor.fdir_to_left[fdir+1][1]
+ local leftz = homedecor.fdir_to_left[fdir+1][2]
+ local revx = -homedecor.fdir_to_fwd[fdir+1][1]
+ local revz = -homedecor.fdir_to_fwd[fdir+1][2]
+
+ local corner1 = { x = pos.x + leftx + revx, y = pos.y, z = pos.z + leftz + revz}
+ local corner2 = { x = pos.x, y = pos.y + 2, z = pos.z }
+
+ local minp = { x = math.min(corner1.x, corner2.x),
+ y = math.min(corner1.y, corner2.y),
+ z = math.min(corner1.z, corner2.z) }
+
+ local maxp = { x = math.max(corner1.x, corner2.x),
+ y = math.max(corner1.y, corner2.y),
+ z = math.max(corner1.z, corner2.z) }
+
+ if #minetest.find_nodes_in_area(minp, maxp, "air") < 11 then
+ minetest.set_node(pos, {name = "air"})
+ minetest.chat_send_player(placer:get_player_name(), "This object takes up a 2x3x2 block of space (the bottom step goes in the forward-right corner), and some of it is occupied!" )
+ return true
+ end
+
+ local belownode = minetest.get_node({ x = pos.x, y = pos.y - 1, z = pos.z })
+
+ if belownode and belownode.name == "homedecor:spiral_staircase" then
+ local newpos = { x = pos.x, y = pos.y + 2, z = pos.z }
+ minetest.set_node(pos, { name = "air" })
+ minetest.set_node(newpos, { name = "homedecor:spiral_staircase", param2 = belownode.param2 })
+ end
+ end
+})
+
+minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
+ local belownode = minetest.get_node({ x = pos.x, y = pos.y - 1, z = pos.z })
+
+ if newnode.name ~= "homedecor:spiral_staircase"
+ and belownode
+ and belownode.name == "homedecor:spiral_staircase" then
+ minetest.set_node(pos, { name = "air" })
+
+ local newpos = { x = pos.x, y = pos.y + 2, z = pos.z }
+ local checknode = minetest.get_node(newpos)
+
+ if checknode and checknode.name == "air" then
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.set_node(newpos, { name = newnode.name, param2 = fdir })
+ else
+ return true
+ end
+ end
+end)
diff --git a/homedecor_modpack/homedecor/models/forniture_armchair.obj b/homedecor_modpack/homedecor/models/forniture_armchair.obj
new file mode 100644
index 0000000..6af52cd
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/forniture_armchair.obj
@@ -0,0 +1,539 @@
+# Blender v2.73 (sub 0) OBJ File: 'forniture-armchair.blend'
+# www.blender.org
+o chair_Cylinder
+v 0.375000 -0.437500 -0.500000
+v 0.375000 0.039062 -0.500000
+v 0.375000 0.101562 -0.437500
+v 0.375000 0.101562 0.035156
+v 0.375000 0.437500 0.035156
+v 0.375000 0.500000 0.097656
+v -0.375000 0.500000 0.375000
+v 0.312500 -0.187500 -0.375000
+v -0.375000 0.500000 0.097656
+v -0.375000 0.437500 0.035156
+v -0.312500 -0.187500 -0.375000
+v -0.375000 0.101562 0.035156
+v -0.375000 0.101562 -0.437500
+v -0.375000 0.039062 -0.500000
+v 0.375000 0.500000 0.375000
+v -0.375000 -0.437500 -0.500000
+v -0.437500 -0.437500 -0.500000
+v -0.500000 -0.437500 -0.375000
+v -0.500000 0.437500 0.097656
+v -0.437500 0.039062 -0.500000
+v 0.437500 0.500000 0.437500
+v -0.437500 0.101562 -0.437500
+v 0.437500 0.500000 0.097656
+v -0.437500 0.101562 0.035156
+v 0.437500 0.437500 0.035156
+v -0.437500 0.437500 0.035156
+v 0.437500 0.101562 0.035156
+v -0.437500 0.500000 0.097656
+v 0.437500 0.101562 -0.437500
+v -0.437500 0.500000 0.437500
+v 0.437500 0.039062 -0.500000
+v 0.500000 0.437500 0.097656
+v 0.437500 -0.437500 -0.500000
+v -0.312500 -0.437500 -0.375000
+v 0.500000 0.437500 0.500000
+v 0.500000 -0.437500 0.500000
+v 0.312500 -0.437500 -0.375000
+v -0.500000 0.437500 0.500000
+v -0.500000 -0.437500 0.500000
+v -0.500000 0.039062 0.097656
+v 0.500000 0.039062 0.097656
+v -0.500000 0.039062 -0.437500
+v 0.500000 0.039062 -0.437500
+v -0.500000 -0.437500 -0.437500
+v 0.500000 -0.437500 -0.437500
+v 0.312500 0.437500 0.097656
+v 0.312500 0.039062 0.097656
+v 0.312500 0.039062 -0.437500
+v 0.312500 -0.437500 -0.437500
+v -0.312500 0.437500 0.097656
+v 0.500000 -0.437500 -0.375000
+v -0.312500 0.039062 0.097656
+v -0.312500 0.039062 -0.437500
+v -0.312500 -0.437500 -0.437500
+v 0.312500 -0.125000 0.312500
+v -0.312500 -0.125000 0.312500
+v 0.312500 0.437500 0.312500
+v -0.312500 0.437500 0.312500
+v 0.312500 -0.109375 -0.187500
+v -0.312500 -0.109375 -0.187500
+v 0.312500 0.156250 0.285156
+v -0.312500 0.156250 0.285156
+v 0.312500 -0.125000 -0.312500
+v -0.312500 -0.109375 0.250000
+v 0.312500 -0.062500 0.296875
+v -0.312500 0.375000 0.296875
+v 0.312500 -0.109375 0.250000
+v -0.312500 -0.125000 -0.312500
+v 0.312500 0.375000 0.296875
+v -0.312500 -0.062500 0.296875
+v 0.312500 -0.101562 0.031250
+v -0.312500 -0.101562 0.031250
+v -0.432138 -0.500000 0.343750
+v -0.432138 -0.437500 0.343750
+v -0.380362 -0.500000 0.343750
+v -0.380362 -0.437500 0.343750
+v -0.343750 -0.500000 0.380362
+v -0.343750 -0.437500 0.380362
+v -0.343750 -0.500000 0.432138
+v -0.343750 -0.437500 0.432138
+v -0.380362 -0.500000 0.468750
+v -0.380362 -0.437500 0.468750
+v -0.432138 -0.500000 0.468750
+v -0.432138 -0.437500 0.468750
+v -0.468750 -0.500000 0.432138
+v -0.468750 -0.437500 0.432138
+v -0.468750 -0.500000 0.380362
+v -0.468750 -0.437500 0.380362
+v 0.343750 -0.437500 0.380362
+v 0.343750 -0.500000 0.380362
+v 0.343750 -0.437500 0.432138
+v 0.343750 -0.500000 0.432138
+v 0.380362 -0.437500 0.468750
+v 0.380362 -0.500000 0.468750
+v 0.432138 -0.437500 0.468750
+v 0.432138 -0.500000 0.468750
+v 0.468750 -0.437500 0.432138
+v 0.468750 -0.500000 0.432138
+v 0.468750 -0.437500 0.380362
+v 0.468750 -0.500000 0.380362
+v 0.432138 -0.437500 0.343750
+v 0.432138 -0.500000 0.343750
+v 0.380362 -0.437500 0.343750
+v 0.380362 -0.500000 0.343750
+v -0.432138 -0.500000 -0.468750
+v -0.432138 -0.437500 -0.468750
+v -0.380362 -0.500000 -0.468750
+v -0.380362 -0.437500 -0.468750
+v -0.343750 -0.500000 -0.432138
+v -0.343750 -0.437500 -0.432138
+v -0.343750 -0.500000 -0.380362
+v -0.343750 -0.437500 -0.380362
+v -0.380362 -0.500000 -0.343750
+v -0.380362 -0.437500 -0.343750
+v -0.432138 -0.500000 -0.343750
+v -0.432138 -0.437500 -0.343750
+v -0.468750 -0.500000 -0.380362
+v -0.468750 -0.437500 -0.380362
+v -0.468750 -0.500000 -0.432138
+v -0.468750 -0.437500 -0.432138
+v 0.343750 -0.437500 -0.432138
+v 0.343750 -0.500000 -0.432138
+v 0.343750 -0.437500 -0.380362
+v 0.343750 -0.500000 -0.380362
+v 0.380362 -0.437500 -0.343750
+v 0.380362 -0.500000 -0.343750
+v 0.432138 -0.437500 -0.343750
+v 0.432138 -0.500000 -0.343750
+v 0.468750 -0.437500 -0.380362
+v 0.468750 -0.500000 -0.380362
+v 0.468750 -0.437500 -0.432138
+v 0.468750 -0.500000 -0.432138
+v 0.432138 -0.437500 -0.468750
+v 0.432138 -0.500000 -0.468750
+v 0.380362 -0.437500 -0.468750
+v 0.380362 -0.500000 -0.468750
+vt 0.062590 0.539162
+vt 0.062590 0.601648
+vt 0.000103 0.539162
+vt 0.125076 0.601648
+vt 0.125076 0.539162
+vt 0.187563 0.539162
+vt 0.937402 0.601648
+vt 0.937402 0.539162
+vt 0.999888 0.539162
+vt 0.812428 0.539162
+vt 0.874915 0.539162
+vt 0.874915 0.601648
+vt 0.000103 0.937514
+vt 0.062590 0.937514
+vt 0.062590 1.000000
+vt 0.125076 1.000000
+vt 0.125076 0.937514
+vt 0.187563 0.937514
+vt 0.937513 1.000000
+vt 0.597743 1.000000
+vt 0.597743 0.937514
+vt 1.000000 0.937514
+vt 0.937299 1.000000
+vt 0.062487 1.000000
+vt 0.000000 0.937514
+vt 0.999786 0.937514
+vt 0.874915 0.937514
+vt 0.874915 1.000000
+vt 0.812428 0.937514
+vt 0.937402 1.000000
+vt 0.937402 0.937514
+vt 0.999888 0.937514
+vt 0.597743 0.539162
+vt 0.062701 0.539162
+vt 0.062701 0.062702
+vt 1.000000 0.062702
+vt 0.187563 0.062702
+vt 0.812428 0.062702
+vt 0.812428 0.312648
+vt 0.187563 0.312648
+vt 0.812433 0.250180
+vt 0.187567 0.250180
+vt 0.187567 0.187694
+vt 0.812433 0.187694
+vt 0.187563 0.875027
+vt 0.812428 0.875027
+vt 0.874919 0.125207
+vt 0.125081 0.125207
+vt 0.062594 0.062721
+vt 0.937406 0.062721
+vt 0.937406 0.402491
+vt 0.874919 0.402491
+vt 0.535256 0.601649
+vt 0.062701 0.601649
+vt 0.999888 0.062702
+vt 0.874915 0.062702
+vt 0.812433 0.812559
+vt 0.187567 0.812559
+vt 0.187567 0.687586
+vt 0.812433 0.687586
+vt 0.187563 0.437621
+vt 0.812428 0.437621
+vt 0.812428 0.656324
+vt 0.187563 0.656324
+vt 0.125081 0.402491
+vt 0.062594 0.402491
+vt 0.402257 0.937513
+vt 0.402257 1.000000
+vt 0.464744 0.601648
+vt 0.402257 0.539161
+vt 0.937298 0.539161
+vt 0.937298 0.601648
+vt 0.874919 0.464978
+vt 0.937406 0.464978
+vt 0.535233 0.601622
+vt 0.062678 0.539135
+vt 0.597718 0.539135
+vt 0.062594 0.464978
+vt 0.125081 0.464978
+vt 0.000103 0.062702
+vt 0.125076 0.062702
+vt 0.875003 0.999974
+vt 0.812517 0.937487
+vt 0.124973 1.000000
+vt 0.187460 0.937513
+vt 0.000000 0.062702
+vt 0.937298 0.062702
+vt 0.187691 0.375183
+vt 0.812557 0.375183
+vt 0.812557 0.437670
+vt 0.187691 0.437670
+vt 0.812428 0.375134
+vt 0.187563 0.375134
+vt 0.812433 0.468883
+vt 0.187567 0.468883
+vt 0.796895 0.875000
+vt 0.785178 0.656297
+vt 0.796895 0.437594
+vt 0.203081 0.875027
+vt 0.214797 0.656324
+vt 0.203081 0.437621
+vt 0.187460 0.375134
+vt 0.249947 0.390756
+vt 0.750030 0.390729
+vt 0.812517 0.375107
+vt 0.531327 0.398540
+vt 0.468650 0.398567
+vt 0.687352 0.390756
+vt 0.312624 0.390729
+vt 0.187651 0.375107
+vt 0.812326 0.375134
+vt 0.874812 0.312648
+vt 0.125164 0.312621
+vt 0.125164 0.062675
+vt 0.874812 0.062702
+vt 0.999786 0.062701
+vt 0.000000 0.125016
+vt 0.000000 0.062508
+vt 0.062507 0.000000
+vt 0.125016 0.000000
+vt 0.187524 0.062508
+vt 0.187524 0.125016
+vt 1.000000 0.125016
+vt 0.812475 0.125016
+vt 0.812475 0.062508
+vt 0.874984 0.000000
+vt 0.937492 0.000000
+vt 1.000000 0.062508
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.750000 0.687500
+vt 0.750000 0.750000
+vt 0.687500 0.750000
+vt 0.687500 0.687500
+vt 0.625000 0.750000
+vt 0.625000 0.687500
+vt 0.562500 0.750000
+vt 0.562500 0.687500
+vt 0.500000 0.750000
+vt 0.500000 0.687500
+vt 1.000000 0.687500
+vt 1.000000 0.750000
+vt 0.937500 0.750000
+vt 0.937500 0.687500
+vt 0.875000 0.750000
+vt 0.875000 0.687500
+vt 0.812500 0.687500
+vt 0.812500 0.750000
+vt 0.669272 0.937532
+vt 0.669272 0.874968
+vt 0.625032 0.830728
+vt 0.562468 0.830728
+vt 0.518228 0.874968
+vt 0.518228 0.937532
+vt 0.562468 0.981772
+vt 0.625032 0.981772
+vt 0.169272 0.937532
+vt 0.169272 0.874968
+vt 0.125032 0.830728
+vt 0.062468 0.830728
+vt 0.018228 0.874968
+vt 0.018228 0.937532
+vt 0.062468 0.981772
+vt 0.125032 0.981772
+vt 0.375000 0.687500
+vt 0.375000 0.750000
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.250000 0.750000
+vt 0.250000 0.687500
+vt 0.437500 0.687500
+vt 0.437500 0.750000
+vt 0.062500 0.687500
+vt 0.062500 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.687500
+vt 0.125000 0.687500
+vt 0.125000 0.750000
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.687500 0.375000
+vt 0.687500 0.312500
+vt 0.625000 0.375000
+vt 0.625000 0.312500
+vt 0.562500 0.375000
+vt 0.562500 0.312500
+vt 0.500000 0.375000
+vt 0.500000 0.312500
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 0.937500 0.375000
+vt 0.937500 0.312500
+vt 0.875000 0.375000
+vt 0.875000 0.312500
+vt 0.812500 0.312500
+vt 0.812500 0.375000
+vt 0.669272 0.562532
+vt 0.669272 0.499968
+vt 0.625032 0.455728
+vt 0.562468 0.455728
+vt 0.518228 0.499968
+vt 0.518228 0.562532
+vt 0.562468 0.606772
+vt 0.625032 0.606772
+vt 0.169272 0.562532
+vt 0.169272 0.499968
+vt 0.125032 0.455728
+vt 0.062468 0.455728
+vt 0.018228 0.499968
+vt 0.018228 0.562532
+vt 0.062468 0.606772
+vt 0.125032 0.606772
+vt 0.375000 0.312500
+vt 0.375000 0.375000
+vt 0.312500 0.375000
+vt 0.312500 0.312500
+vt 0.250000 0.375000
+vt 0.250000 0.312500
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.062500 0.312500
+vt 0.062500 0.375000
+vt 0.000000 0.375000
+vt 0.000000 0.312500
+vt 0.125000 0.312500
+vt 0.125000 0.375000
+vt 0.187500 0.312500
+vt 0.187500 0.375000
+vn 0.341600 0.341600 -0.875600
+vn 0.341600 0.875600 -0.341600
+vn 0.875600 0.341600 -0.341600
+vn -0.341600 0.875600 -0.341600
+vn -0.341600 0.341600 -0.875600
+vn -0.875600 0.341600 -0.341600
+vn -0.300200 0.905400 0.300200
+vn -0.650700 0.391300 0.650700
+vn 0.300200 0.905400 0.300200
+vn 0.650700 0.391300 0.650700
+vn -0.987800 0.110000 -0.110000
+vn -0.717300 -0.630300 -0.297100
+vn -0.577400 -0.577400 0.577400
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.382700 -0.923900
+vn 0.000000 0.990200 0.139900
+vn 0.000000 0.707100 -0.707100
+vn -0.729300 0.101700 -0.676600
+vn 0.729300 0.101700 -0.676600
+vn 0.526700 0.636900 -0.563000
+vn -0.526700 0.636900 -0.563000
+vn -0.110000 0.987800 -0.110000
+vn 0.110000 0.987800 -0.110000
+vn -0.574300 0.578900 -0.578900
+vn -0.297100 -0.630200 -0.717300
+vn 0.297100 -0.630200 -0.717300
+vn 0.717300 -0.630200 -0.297100
+vn 0.000000 0.898300 -0.439400
+vn 0.000000 0.996800 -0.079900
+vn 0.000000 -0.148700 -0.988900
+vn 0.987800 0.110000 -0.110000
+vn 0.574300 0.578900 -0.578900
+vn 0.717300 -0.630300 -0.297100
+vn -0.717300 -0.630200 -0.297100
+vn 0.577400 -0.577400 0.577400
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.707100 -0.707100 0.000000
+vn 0.707100 -0.707100 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.707100 0.000000 -0.707100
+vn 0.707100 0.000000 0.707100
+vn 0.000000 0.000000 1.000000
+vn -0.707100 0.000000 0.707100
+vn -0.707100 0.000000 -0.707100
+g chair_Cylinder_colored
+s 1
+f 31/1/1 29/2/2 43/3/3
+f 3/4/4 2/5/5 48/6/6
+f 22/7/4 20/8/5 42/9/6
+f 53/10/3 14/11/1 13/12/2
+f 32/13/3 25/14/1 23/15/2
+f 6/16/4 5/17/5 46/18/6
+f 30/19/7 28/20/4 19/21/6 38/22/8
+f 21/23/9 30/24/7 38/25/8 35/26/10
+f 10/27/1 9/28/2 50/29/3
+f 28/30/4 26/31/5 19/32/6
+f 40/33/11 42/34/6 44/35/12 39/36/13
+f 37/37/14 34/38/14 11/39/15 8/40/15
+f 67/41/16 64/42/16 56/43/17 55/44/17
+f 69/45/18 66/46/19 58/29/20 57/18/21
+f 38/22/8 19/21/6 40/33/11 39/36/13
+f 15/47/22 7/48/23 30/49/7 21/50/9
+f 21/50/9 23/51/2 6/52/4 15/47/22
+f 10/27/1 26/31/5 28/30/4 9/28/2
+f 26/31/5 24/7/24 40/9/11 19/32/6
+f 24/53/24 22/54/4 42/34/6 40/33/11
+f 14/11/1 20/8/5 22/7/4 13/12/2
+f 20/8/5 17/50/25 44/55/12 42/9/6
+f 16/56/26 17/50/25 20/8/5 14/11/1
+f 14/11/1 53/10/3 54/38/27 16/56/26
+f 63/57/28 68/58/28 60/59/29 59/60/29
+f 65/61/30 70/62/30 62/63/14 61/64/14
+f 5/17/5 6/16/4 23/15/2 25/14/1
+f 30/49/7 7/48/23 9/65/2 28/66/4
+f 21/24/9 35/25/10 32/67/3 23/68/2
+f 25/14/1 32/13/3 41/3/31 27/2/32
+f 4/4/24 5/17/5 25/14/1 27/2/32
+f 27/69/32 41/70/31 43/71/3 29/72/2
+f 2/5/5 3/4/4 29/2/2 31/1/1
+f 3/27/4 4/73/24 27/74/32 29/31/2
+f 4/75/24 3/54/4 48/76/6 47/77/11
+f 5/17/5 4/4/24 47/6/11 46/18/6
+f 13/17/2 22/14/4 24/78/24 12/79/32
+f 12/12/32 24/7/24 26/31/5 10/27/1
+f 10/27/1 50/29/3 52/10/31 12/12/32
+f 12/69/32 52/70/31 53/71/3 13/72/2
+f 31/1/1 43/3/3 45/80/33 33/49/26
+f 1/81/25 2/5/5 31/1/1 33/49/26
+f 2/5/5 1/81/25 49/37/34 48/6/6
+f 15/82/22 6/20/4 46/21/6 57/83/21
+f 7/84/23 58/85/20 50/67/3 9/68/2
+f 15/16/22 57/18/21 58/29/20 7/28/23
+f 35/25/10 36/86/35 41/70/31 32/67/3
+f 41/70/31 36/86/35 45/87/33 43/71/3
+f 55/88/17 56/89/17 70/90/30 65/91/30
+f 8/40/15 11/39/15 68/92/28 63/93/28
+f 61/64/14 62/63/14 66/46/19 69/45/18
+f 71/94/36 72/95/36 64/42/16 67/41/16
+f 59/60/29 60/59/29 72/95/36 71/94/36
+f 57/83/21 46/21/6 69/96/18
+f 69/96/18 46/21/6 61/97/37
+f 65/98/37 61/97/37 47/77/11
+f 47/77/11 61/97/37 46/21/6
+f 58/85/20 66/99/19 50/67/3
+f 66/99/19 62/100/38 50/67/3
+f 50/67/3 62/100/38 52/70/31
+f 62/100/38 70/101/38 52/70/31
+f 70/101/38 56/102/38 52/70/31
+f 56/102/38 64/103/38 52/70/31
+f 67/104/37 55/105/37 47/77/11
+f 65/98/37 47/77/11 55/105/37
+f 71/106/37 67/104/37 47/77/11
+f 64/103/38 72/107/38 52/70/31
+f 72/107/38 60/108/38 52/70/31
+f 59/109/37 71/106/37 47/77/11
+f 63/110/37 59/109/37 48/76/6
+f 47/77/11 48/76/6 59/109/37
+f 60/108/38 68/111/38 53/71/3
+f 52/70/31 60/108/38 53/71/3
+f 68/111/38 11/112/38 53/71/3
+f 8/113/37 63/110/37 48/76/6
+f 37/114/39 8/113/37 49/35/34
+f 48/76/6 49/35/34 8/113/37
+f 54/87/27 11/112/38 34/115/40
+f 53/71/3 11/112/38 54/87/27
+f 38/25/8 39/86/13 36/116/35 35/26/10
+f 18/117/41 44/118/12 17/119/25 16/120/26 54/121/27 34/122/40
+f 51/123/41 37/124/39 49/125/34 1/126/25 33/127/26 45/128/33
+g chair_Cylinder_grey
+f 36/126/35 39/82/13 18/129/41 51/130/41
+g chair_Cylinder_wood
+s off
+f 73/131/14 74/132/14 76/133/14 75/134/14
+f 75/134/42 76/133/42 78/135/42 77/136/42
+f 77/136/38 78/135/38 80/137/38 79/138/38
+f 79/138/43 80/137/43 82/139/43 81/140/43
+f 81/141/44 82/142/44 84/143/44 83/144/44
+f 83/144/45 84/143/45 86/145/45 85/146/45
+f 87/147/46 88/148/46 74/132/46 73/131/46
+f 85/146/37 86/145/37 88/148/37 87/147/37
+f 73/149/41 75/150/41 77/151/41 79/152/41 81/153/41 83/154/41 85/155/41 87/156/41
+f 104/157/41 102/158/41 100/159/41 98/160/41 96/161/41 94/162/41 92/163/41 90/164/41
+f 92/165/37 91/166/37 89/167/37 90/168/37
+f 90/168/46 89/167/46 103/169/46 104/170/46
+f 94/171/45 93/172/45 91/166/45 92/165/45
+f 96/140/44 95/139/44 93/172/44 94/171/44
+f 98/173/43 97/174/43 95/175/43 96/176/43
+f 100/177/38 99/178/38 97/174/38 98/173/38
+f 102/179/42 101/180/42 99/178/42 100/177/42
+f 104/170/14 103/169/14 101/180/14 102/179/14
+f 105/181/14 106/182/14 108/183/14 107/184/14
+f 107/184/42 108/183/42 110/185/42 109/186/42
+f 109/186/38 110/185/38 112/187/38 111/188/38
+f 111/188/43 112/187/43 114/189/43 113/190/43
+f 113/191/44 114/192/44 116/193/44 115/194/44
+f 115/194/45 116/193/45 118/195/45 117/196/45
+f 119/197/46 120/198/46 106/182/46 105/181/46
+f 117/196/37 118/195/37 120/198/37 119/197/37
+f 105/199/41 107/200/41 109/201/41 111/202/41 113/203/41 115/204/41 117/205/41 119/206/41
+f 136/207/41 134/208/41 132/209/41 130/210/41 128/211/41 126/212/41 124/213/41 122/214/41
+f 124/215/37 123/216/37 121/217/37 122/218/37
+f 122/218/46 121/217/46 135/219/46 136/220/46
+f 126/221/45 125/222/45 123/216/45 124/215/45
+f 128/190/44 127/189/44 125/222/44 126/221/44
+f 130/223/43 129/224/43 127/225/43 128/226/43
+f 132/227/38 131/228/38 129/224/38 130/223/38
+f 134/229/42 133/230/42 131/228/42 132/227/42
+f 136/220/14 135/219/14 133/230/14 134/229/14
diff --git a/homedecor_modpack/homedecor/models/forniture_chains.obj b/homedecor_modpack/homedecor/models/forniture_chains.obj
new file mode 100644
index 0000000..dc9e551
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/forniture_chains.obj
@@ -0,0 +1,930 @@
+# Blender v2.73 (sub 0) OBJ File: 'forniture-chains.blend'
+# www.blender.org
+o nodebox-10
+v 0.350000 -0.250000 0.450000
+v 0.350000 -0.250000 0.500000
+v 0.350000 -0.100000 0.500000
+v 0.350000 -0.100000 0.450000
+v 0.300000 -0.250000 0.450000
+v 0.300000 -0.250000 0.500000
+v 0.300000 -0.100000 0.500000
+v 0.300000 -0.100000 0.450000
+v 0.350000 -0.000000 0.300000
+v 0.350000 -0.000000 0.450000
+v 0.350000 0.050000 0.450000
+v 0.350000 0.050000 0.300000
+v 0.300000 -0.000000 0.300000
+v 0.300000 -0.000000 0.450000
+v 0.300000 0.050000 0.450000
+v 0.300000 0.050000 0.300000
+v 0.400000 -0.450000 0.350000
+v 0.400000 -0.450000 0.400000
+v 0.400000 -0.400000 0.400000
+v 0.400000 -0.400000 0.350000
+v 0.250000 -0.450000 0.350000
+v 0.250000 -0.450000 0.400000
+v 0.250000 -0.400000 0.400000
+v 0.250000 -0.400000 0.350000
+v 0.350000 -0.300000 0.300000
+v 0.350000 -0.300000 0.450000
+v 0.350000 -0.250000 0.300000
+v 0.300000 -0.300000 0.300000
+v 0.300000 -0.300000 0.450000
+v 0.300000 -0.250000 0.300000
+v 0.350000 0.300000 0.350000
+v 0.350000 0.300000 0.450000
+v 0.350000 0.350000 0.450000
+v 0.350000 0.350000 0.350000
+v 0.300000 0.300000 0.350000
+v 0.300000 0.300000 0.450000
+v 0.300000 0.350000 0.450000
+v 0.300000 0.350000 0.350000
+v 0.400000 0.350000 0.350000
+v 0.400000 0.350000 0.400000
+v 0.400000 0.400000 0.400000
+v 0.400000 0.400000 0.350000
+v 0.250000 0.350000 0.350000
+v 0.250000 0.350000 0.400000
+v 0.250000 0.400000 0.400000
+v 0.250000 0.400000 0.350000
+v 0.250000 -0.250000 0.400000
+v 0.250000 -0.250000 0.350000
+v 0.200000 -0.400000 0.350000
+v 0.200000 -0.400000 0.400000
+v 0.200000 -0.250000 0.400000
+v 0.200000 -0.250000 0.350000
+v 0.350000 0.050000 0.500000
+v 0.350000 0.200000 0.500000
+v 0.350000 0.200000 0.450000
+v 0.300000 0.050000 0.500000
+v 0.300000 0.200000 0.500000
+v 0.300000 0.200000 0.450000
+v 0.400000 -0.250000 0.350000
+v 0.400000 -0.250000 0.400000
+v 0.400000 -0.200000 0.400000
+v 0.400000 -0.200000 0.350000
+v 0.250000 -0.200000 0.400000
+v 0.250000 -0.200000 0.350000
+v 0.250000 0.200000 0.350000
+v 0.250000 0.200000 0.400000
+v 0.200000 0.200000 0.350000
+v 0.200000 0.200000 0.400000
+v 0.200000 0.350000 0.400000
+v 0.200000 0.350000 0.350000
+v 0.350000 0.350000 0.300000
+v 0.350000 0.400000 0.350000
+v 0.350000 0.400000 0.300000
+v 0.300000 0.350000 0.300000
+v 0.300000 0.400000 0.350000
+v 0.300000 0.400000 0.300000
+v 0.250000 -0.100000 0.350000
+v 0.250000 -0.100000 0.400000
+v 0.250000 0.050000 0.400000
+v 0.250000 0.050000 0.350000
+v 0.200000 -0.100000 0.350000
+v 0.200000 -0.100000 0.400000
+v 0.200000 0.050000 0.400000
+v 0.200000 0.050000 0.350000
+v 0.450000 -0.100000 0.350000
+v 0.450000 -0.100000 0.400000
+v 0.450000 0.050000 0.400000
+v 0.450000 0.050000 0.350000
+v 0.400000 -0.100000 0.350000
+v 0.400000 -0.100000 0.400000
+v 0.400000 0.050000 0.400000
+v 0.400000 0.050000 0.350000
+v 0.350000 -0.100000 0.300000
+v 0.350000 -0.050000 0.450000
+v 0.350000 -0.050000 0.300000
+v 0.300000 -0.100000 0.300000
+v 0.300000 -0.050000 0.450000
+v 0.300000 -0.050000 0.300000
+v 0.350000 0.050000 0.250000
+v 0.350000 0.200000 0.300000
+v 0.350000 0.200000 0.250000
+v 0.300000 0.050000 0.250000
+v 0.300000 0.200000 0.300000
+v 0.300000 0.200000 0.250000
+v 0.450000 -0.400000 0.350000
+v 0.450000 -0.400000 0.400000
+v 0.450000 -0.250000 0.400000
+v 0.450000 -0.250000 0.350000
+v 0.400000 0.100000 0.400000
+v 0.400000 0.100000 0.350000
+v 0.250000 0.100000 0.400000
+v 0.250000 0.100000 0.350000
+v 0.400000 -0.150000 0.350000
+v 0.400000 -0.150000 0.400000
+v 0.250000 -0.150000 0.350000
+v 0.250000 -0.150000 0.400000
+v 0.350000 0.400000 0.450000
+v 0.350000 0.450000 0.450000
+v 0.350000 0.450000 0.350000
+v 0.300000 0.400000 0.450000
+v 0.300000 0.450000 0.450000
+v 0.300000 0.450000 0.350000
+v 0.450000 0.250000 0.450000
+v 0.450000 0.250000 0.500000
+v 0.450000 0.500000 0.500000
+v 0.450000 0.500000 0.450000
+v 0.200000 0.250000 0.450000
+v 0.200000 0.250000 0.500000
+v 0.200000 0.500000 0.500000
+v 0.200000 0.500000 0.450000
+v 0.350000 -0.250000 0.250000
+v 0.350000 -0.100000 0.250000
+v 0.300000 -0.250000 0.250000
+v 0.300000 -0.100000 0.250000
+v 0.450000 0.200000 0.350000
+v 0.450000 0.200000 0.400000
+v 0.450000 0.350000 0.400000
+v 0.450000 0.350000 0.350000
+v 0.400000 0.200000 0.350000
+v 0.400000 0.200000 0.400000
+v 0.350000 0.250000 0.450000
+v 0.350000 0.250000 0.300000
+v 0.300000 0.250000 0.450000
+v 0.300000 0.250000 0.300000
+v 0.400000 0.150000 0.350000
+v 0.400000 0.150000 0.400000
+v 0.250000 0.150000 0.350000
+v 0.250000 0.150000 0.400000
+v -0.300000 -0.250000 0.450000
+v -0.300000 -0.250000 0.500000
+v -0.300000 -0.100000 0.500000
+v -0.300000 -0.100000 0.450000
+v -0.350000 -0.250000 0.450000
+v -0.350000 -0.250000 0.500000
+v -0.350000 -0.100000 0.500000
+v -0.350000 -0.100000 0.450000
+v -0.300000 -0.000000 0.300000
+v -0.300000 -0.000000 0.450000
+v -0.300000 0.050000 0.450000
+v -0.300000 0.050000 0.300000
+v -0.350000 -0.000000 0.300000
+v -0.350000 -0.000000 0.450000
+v -0.350000 0.050000 0.450000
+v -0.350000 0.050000 0.300000
+v -0.250000 -0.450000 0.350000
+v -0.250000 -0.450000 0.400000
+v -0.250000 -0.400000 0.400000
+v -0.250000 -0.400000 0.350000
+v -0.400000 -0.450000 0.350000
+v -0.400000 -0.450000 0.400000
+v -0.400000 -0.400000 0.400000
+v -0.400000 -0.400000 0.350000
+v -0.300000 -0.300000 0.300000
+v -0.300000 -0.300000 0.450000
+v -0.300000 -0.250000 0.300000
+v -0.350000 -0.300000 0.300000
+v -0.350000 -0.300000 0.450000
+v -0.350000 -0.250000 0.300000
+v -0.300000 0.300000 0.350000
+v -0.300000 0.300000 0.450000
+v -0.300000 0.350000 0.450000
+v -0.300000 0.350000 0.350000
+v -0.350000 0.300000 0.350000
+v -0.350000 0.300000 0.450000
+v -0.350000 0.350000 0.450000
+v -0.350000 0.350000 0.350000
+v -0.250000 0.350000 0.350000
+v -0.250000 0.350000 0.400000
+v -0.250000 0.400000 0.400000
+v -0.250000 0.400000 0.350000
+v -0.400000 0.350000 0.350000
+v -0.400000 0.350000 0.400000
+v -0.400000 0.400000 0.400000
+v -0.400000 0.400000 0.350000
+v -0.400000 -0.250000 0.400000
+v -0.400000 -0.250000 0.350000
+v -0.450000 -0.400000 0.350000
+v -0.450000 -0.400000 0.400000
+v -0.450000 -0.250000 0.400000
+v -0.450000 -0.250000 0.350000
+v -0.300000 0.050000 0.500000
+v -0.300000 0.200000 0.500000
+v -0.300000 0.200000 0.450000
+v -0.350000 0.050000 0.500000
+v -0.350000 0.200000 0.500000
+v -0.350000 0.200000 0.450000
+v -0.250000 -0.250000 0.350000
+v -0.250000 -0.250000 0.400000
+v -0.250000 -0.200000 0.400000
+v -0.250000 -0.200000 0.350000
+v -0.400000 -0.200000 0.400000
+v -0.400000 -0.200000 0.350000
+v -0.400000 0.200000 0.350000
+v -0.400000 0.200000 0.400000
+v -0.450000 0.200000 0.350000
+v -0.450000 0.200000 0.400000
+v -0.450000 0.350000 0.400000
+v -0.450000 0.350000 0.350000
+v -0.300000 0.350000 0.300000
+v -0.300000 0.400000 0.350000
+v -0.300000 0.400000 0.300000
+v -0.350000 0.350000 0.300000
+v -0.350000 0.400000 0.350000
+v -0.350000 0.400000 0.300000
+v -0.400000 -0.100000 0.350000
+v -0.400000 -0.100000 0.400000
+v -0.400000 0.050000 0.400000
+v -0.400000 0.050000 0.350000
+v -0.450000 -0.100000 0.350000
+v -0.450000 -0.100000 0.400000
+v -0.450000 0.050000 0.400000
+v -0.450000 0.050000 0.350000
+v -0.200000 -0.100000 0.350000
+v -0.200000 -0.100000 0.400000
+v -0.200000 0.050000 0.400000
+v -0.200000 0.050000 0.350000
+v -0.250000 -0.100000 0.350000
+v -0.250000 -0.100000 0.400000
+v -0.250000 0.050000 0.400000
+v -0.250000 0.050000 0.350000
+v -0.300000 -0.100000 0.300000
+v -0.300000 -0.050000 0.450000
+v -0.300000 -0.050000 0.300000
+v -0.350000 -0.100000 0.300000
+v -0.350000 -0.050000 0.450000
+v -0.350000 -0.050000 0.300000
+v -0.300000 0.050000 0.250000
+v -0.300000 0.200000 0.300000
+v -0.300000 0.200000 0.250000
+v -0.350000 0.050000 0.250000
+v -0.350000 0.200000 0.300000
+v -0.350000 0.200000 0.250000
+v -0.200000 -0.400000 0.350000
+v -0.200000 -0.400000 0.400000
+v -0.200000 -0.250000 0.400000
+v -0.200000 -0.250000 0.350000
+v -0.250000 0.100000 0.400000
+v -0.250000 0.100000 0.350000
+v -0.400000 0.100000 0.400000
+v -0.400000 0.100000 0.350000
+v -0.250000 -0.150000 0.350000
+v -0.250000 -0.150000 0.400000
+v -0.400000 -0.150000 0.350000
+v -0.400000 -0.150000 0.400000
+v -0.300000 0.400000 0.450000
+v -0.300000 0.450000 0.450000
+v -0.300000 0.450000 0.350000
+v -0.350000 0.400000 0.450000
+v -0.350000 0.450000 0.450000
+v -0.350000 0.450000 0.350000
+v -0.200000 0.250000 0.450000
+v -0.200000 0.250000 0.500000
+v -0.200000 0.500000 0.500000
+v -0.200000 0.500000 0.450000
+v -0.450000 0.250000 0.450000
+v -0.450000 0.250000 0.500000
+v -0.450000 0.500000 0.500000
+v -0.450000 0.500000 0.450000
+v -0.300000 -0.250000 0.250000
+v -0.300000 -0.100000 0.250000
+v -0.350000 -0.250000 0.250000
+v -0.350000 -0.100000 0.250000
+v -0.200000 0.200000 0.350000
+v -0.200000 0.200000 0.400000
+v -0.200000 0.350000 0.400000
+v -0.200000 0.350000 0.350000
+v -0.250000 0.200000 0.350000
+v -0.250000 0.200000 0.400000
+v -0.300000 0.250000 0.450000
+v -0.300000 0.250000 0.300000
+v -0.350000 0.250000 0.450000
+v -0.350000 0.250000 0.300000
+v -0.250000 0.150000 0.350000
+v -0.250000 0.150000 0.400000
+v -0.400000 0.150000 0.350000
+v -0.400000 0.150000 0.400000
+vt 0.789474 0.050000
+vt 0.631579 0.050000
+vt 0.631579 0.000000
+vt 0.789474 0.000000
+vt 0.789474 0.950000
+vt 0.789474 1.000000
+vt 0.631579 1.000000
+vt 0.631579 0.950000
+vt 0.789474 0.149935
+vt 0.789474 0.199945
+vt 0.631579 0.199945
+vt 0.631579 0.149935
+vt 0.843750 0.149934
+vt 0.960938 0.149934
+vt 0.960938 0.199943
+vt 0.843750 0.199943
+vt 0.315789 0.800000
+vt 0.315789 0.950000
+vt 0.263158 0.950000
+vt 0.263158 0.800000
+vt 0.526316 0.200000
+vt 0.473684 0.200000
+vt 0.473684 0.050000
+vt 0.526316 0.050000
+vt 0.526316 0.800000
+vt 0.526316 0.950000
+vt 0.473684 0.950000
+vt 0.473684 0.800000
+vt 0.156250 0.149933
+vt 0.156250 0.199943
+vt 0.039062 0.199943
+vt 0.039063 0.149933
+vt 1.000000 0.099926
+vt 1.000000 0.249954
+vt 0.947369 0.249954
+vt 0.947369 0.099926
+vt 0.882812 0.099924
+vt 0.921875 0.099924
+vt 0.921875 0.249952
+vt 0.882812 0.249952
+vt 0.117188 0.099924
+vt 0.117188 0.249952
+vt 0.078125 0.249952
+vt 0.078125 0.099924
+vt 0.210526 0.150000
+vt 0.157895 0.150000
+vt 0.157895 0.050000
+vt 0.210526 0.050000
+vt 0.210526 0.850000
+vt 0.210526 0.950000
+vt 0.157895 0.950000
+vt 0.157895 0.850000
+vt 0.882812 0.149934
+vt 0.882812 0.199943
+vt 0.117187 0.149933
+vt 0.117187 0.199943
+vt 0.157895 0.099926
+vt 0.157895 0.249954
+vt 0.105263 0.249954
+vt 0.105263 0.099926
+vt 0.947368 0.850000
+vt 0.947368 0.900000
+vt 0.789474 0.900000
+vt 0.789474 0.850000
+vt 0.315789 0.200000
+vt 0.263158 0.200000
+vt 0.263158 0.050000
+vt 0.315789 0.050000
+vt 0.315789 0.049916
+vt 0.157895 0.049916
+vt 0.315789 0.099926
+vt 0.473684 0.149935
+vt 0.315789 0.149935
+vt 0.315789 0.199945
+vt 0.473684 0.199945
+vt 0.315789 0.850000
+vt 0.315789 0.900000
+vt 0.157895 0.900000
+vt 0.789474 0.750000
+vt 0.789474 0.800000
+vt 0.631579 0.800000
+vt 0.631579 0.750000
+vt 0.157895 0.149935
+vt 0.157895 0.199945
+vt 0.105263 0.199945
+vt 0.105263 0.149935
+vt 0.789474 0.250000
+vt 0.631579 0.250000
+vt 0.631579 0.200000
+vt 0.789474 0.200000
+vt 0.631579 0.150000
+vt 0.473684 0.150000
+vt 0.473684 0.100000
+vt 0.631579 0.100000
+vt 0.631579 0.850000
+vt 0.631579 0.900000
+vt 0.473684 0.900000
+vt 0.473684 0.850000
+vt 0.631579 0.299964
+vt 0.473684 0.299964
+vt 0.473684 0.249954
+vt 0.105263 0.850000
+vt 0.105263 0.950000
+vt 0.052631 0.950000
+vt 0.052631 0.850000
+vt 0.105263 0.150000
+vt 0.052632 0.150000
+vt 0.052632 0.050000
+vt 0.105263 0.050000
+vt 0.631579 0.049916
+vt 0.631579 0.099926
+vt 0.473684 0.099926
+vt 0.473684 0.049916
+vt 0.684211 0.099926
+vt 0.684211 0.249954
+vt 0.947368 0.150000
+vt 0.789474 0.150000
+vt 0.789474 0.100000
+vt 0.947368 0.100000
+vt 0.421053 0.099926
+vt 0.421053 0.249954
+vt 0.000000 0.050000
+vt 0.000000 0.000000
+vt 0.263158 0.000000
+vt 0.263158 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.950000
+vt 0.263158 0.049916
+vt 0.263158 0.299964
+vt 0.000000 0.299964
+vt 0.000000 0.049916
+vt 0.960938 0.049915
+vt 1.000000 0.049915
+vt 1.000000 0.299962
+vt 0.960938 0.299962
+vt 0.039063 0.049914
+vt 0.039062 0.299962
+vt 0.947369 0.049916
+vt 0.789474 0.049916
+vt 0.789474 0.099926
+vt 0.315789 0.150000
+vt 0.157895 0.100000
+vt 0.315789 0.100000
+vt 0.105263 0.100000
+vt 0.105263 0.900000
+vt 0.052632 0.199945
+vt 0.052632 0.149935
+vt 0.210526 0.149935
+vt 0.210526 0.199945
+vt 0.368421 0.150000
+vt 0.368421 0.100000
+vt 0.368421 0.850000
+vt 0.368421 0.900000
+vt 0.421053 0.100000
+vt 0.421053 0.150000
+vt 0.421053 0.900000
+vt 0.421053 0.850000
+vt 0.526316 0.199945
+vt 0.526316 0.149935
+vt 0.263158 0.199945
+vt 0.263158 0.149935
+vt 0.578947 0.199945
+vt 0.578947 0.149935
+vt 0.842105 0.199945
+vt 0.842105 0.149935
+vt 0.684210 0.150000
+vt 0.684210 0.100000
+vt 0.684210 0.850000
+vt 0.684210 0.900000
+vt 0.736842 0.150000
+vt 0.736842 0.100000
+vt 0.736842 0.900000
+vt 0.736842 0.850000
+vt 1.000000 0.100000
+vt 1.000000 0.150000
+vt 1.000000 0.850000
+vt 1.000000 0.900000
+vt 0.736842 0.099926
+vt 0.789474 0.800059
+vt 0.789474 0.850068
+vt 0.631579 0.850068
+vt 0.631579 0.800059
+vt 0.473684 0.750000
+vt 0.315789 0.750000
+vt 0.315789 0.250000
+vt 0.843750 0.800057
+vt 0.960938 0.800057
+vt 0.960938 0.850067
+vt 0.843750 0.850067
+vt 0.156250 0.800057
+vt 0.156250 0.850067
+vt 0.039062 0.850067
+vt 0.039062 0.800057
+vt 1.000000 0.750049
+vt 1.000000 0.900078
+vt 0.947368 0.900078
+vt 0.947369 0.750049
+vt 0.882812 0.750047
+vt 0.921875 0.750047
+vt 0.921875 0.900076
+vt 0.882812 0.900076
+vt 0.117188 0.750047
+vt 0.117188 0.900076
+vt 0.078125 0.900076
+vt 0.078125 0.750047
+vt 0.882812 0.800057
+vt 0.882812 0.850067
+vt 0.117187 0.800057
+vt 0.117187 0.850067
+vt 0.157895 0.750049
+vt 0.157895 0.900078
+vt 0.105263 0.900078
+vt 0.105263 0.750049
+vt 0.578947 0.950000
+vt 0.578947 0.800000
+vt 0.473684 0.800059
+vt 0.315789 0.800059
+vt 0.315789 0.850068
+vt 0.473684 0.850068
+vt 0.578947 0.200000
+vt 0.578947 0.050000
+vt 0.157895 0.800000
+vt 0.105263 0.800000
+vt 0.157895 0.200000
+vt 0.105263 0.200000
+vt 0.157895 0.299964
+vt 0.315789 0.299964
+vt 0.157895 0.800059
+vt 0.157895 0.850068
+vt 0.105263 0.850068
+vt 0.105263 0.800059
+vt 0.631579 0.900078
+vt 0.631579 0.950087
+vt 0.473684 0.950087
+vt 0.473684 0.900078
+vt 0.736842 0.249954
+vt 0.631579 0.700040
+vt 0.473684 0.700040
+vt 0.473684 1.000000
+vt 0.315789 1.000000
+vt 0.315789 0.000000
+vt 0.473684 0.000000
+vt 0.789474 0.299964
+vt 0.947369 0.299964
+vt 0.263158 0.700040
+vt 0.263158 0.950087
+vt 0.000000 0.950087
+vt 0.000000 0.700040
+vt 0.960938 0.700038
+vt 1.000000 0.700038
+vt 1.000000 0.950086
+vt 0.960938 0.950086
+vt 0.039062 0.700038
+vt 0.039062 0.950086
+vt 0.842105 0.800000
+vt 0.842105 0.950000
+vt 0.842105 0.200000
+vt 0.842105 0.050000
+vt 0.052632 0.850068
+vt 0.052632 0.800059
+vt 0.210526 0.800059
+vt 0.210526 0.850068
+vt 0.526316 0.850068
+vt 0.526316 0.800059
+vt 0.263158 0.850068
+vt 0.263158 0.800059
+vt 0.578947 0.850068
+vt 0.578947 0.800059
+vt 0.842105 0.850068
+vt 0.842105 0.800059
+vt 0.789474 0.700040
+vt 0.736842 0.750049
+vt 0.368421 0.099926
+vt 0.368421 0.249954
+vt 0.947368 0.950087
+vt 0.789474 0.950087
+vt 0.789474 0.900078
+vt 0.736842 0.900078
+vt 0.315789 0.900078
+vt 0.315789 0.950087
+vt 0.157895 0.950087
+vt 0.947369 0.700040
+vt 0.421053 0.900078
+vt 0.421053 0.750049
+vt 0.684211 0.750049
+vt 0.684211 0.900078
+vt 0.315789 0.700040
+vt 0.157895 0.700040
+vt 0.368421 0.750049
+vt 0.368421 0.900078
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.707100 0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn 0.707100 -0.707100 0.000000
+vn -0.707100 -0.707100 0.000000
+vn 0.000000 -0.707100 0.707100
+vn 0.000000 0.707100 0.707100
+s off
+f 1/1/1 4/2/1 3/3/1 2/4/1
+f 5/5/2 6/6/2 7/7/2 8/8/2
+f 1/9/3 5/10/3 8/11/3 4/12/3
+f 2/9/4 3/12/4 7/11/4 6/10/4
+f 100/13/5 55/14/5 58/15/5 103/16/5
+f 103/17/2 58/18/2 143/19/2 144/20/2
+f 9/21/1 12/22/1 11/23/1 10/24/1
+f 13/25/2 14/26/2 15/27/2 16/28/2
+f 9/13/5 10/14/5 14/15/5 13/16/5
+f 12/29/6 16/30/6 15/31/6 11/32/6
+f 17/33/3 21/34/3 24/35/3 20/36/3
+f 18/33/4 19/36/4 23/35/4 22/34/4
+f 17/37/5 18/38/5 22/39/5 21/40/5
+f 20/41/6 24/42/6 23/43/6 19/44/6
+f 25/13/5 26/14/5 29/15/5 28/16/5
+f 31/45/1 34/46/1 33/47/1 32/48/1
+f 35/49/2 36/50/2 37/51/2 38/52/2
+f 31/53/5 32/14/5 36/15/5 35/54/5
+f 34/55/6 38/56/6 37/31/6 33/32/6
+f 39/57/3 43/58/3 46/59/3 42/60/3
+f 40/57/4 41/60/4 45/59/4 44/58/4
+f 39/37/5 40/38/5 44/39/5 43/40/5
+f 42/41/6 46/42/6 45/43/6 41/44/6
+f 49/61/2 50/62/2 51/63/2 52/64/2
+f 100/65/1 142/66/1 141/67/1 55/68/1
+f 136/69/4 137/70/4 40/57/4 140/71/4
+f 53/72/4 54/73/4 57/74/4 56/75/4
+f 135/69/3 139/71/3 39/57/3 138/70/3
+f 139/76/2 140/77/2 40/78/2 39/52/2
+f 62/41/6 64/42/6 63/43/6 61/44/6
+f 67/76/2 68/77/2 69/78/2 70/52/2
+f 27/9/4 93/12/4 96/11/4 30/10/4
+f 133/79/2 30/80/2 96/81/2 134/82/2
+f 71/83/3 74/84/3 76/85/3 73/86/3
+f 131/87/1 132/88/1 93/89/1 27/90/1
+f 72/53/5 117/14/5 120/15/5 75/54/5
+f 77/91/1 80/92/1 79/93/1 78/94/1
+f 81/95/2 82/96/2 83/97/2 84/98/2
+f 77/88/3 81/99/3 84/100/3 80/101/3
+f 78/88/4 79/101/4 83/100/4 82/99/4
+f 75/102/2 120/103/2 121/104/2 122/105/2
+f 72/106/1 119/107/1 118/108/1 117/109/1
+f 85/91/1 88/92/1 87/93/1 86/94/1
+f 89/95/2 90/96/2 91/97/2 92/98/2
+f 85/110/3 89/111/3 92/112/3 88/113/3
+f 86/110/4 87/113/4 91/112/4 90/111/4
+f 89/41/6 77/42/6 78/43/6 90/44/6
+f 114/114/4 90/111/4 78/88/4 116/115/4
+f 95/29/6 98/30/6 97/31/6 94/32/6
+f 99/72/3 102/75/3 104/74/3 101/73/3
+f 113/114/3 115/115/3 77/88/3 89/111/3
+f 92/37/5 91/38/5 79/39/5 80/40/5
+f 105/116/1 108/117/1 107/118/1 106/119/1
+f 91/112/4 109/120/4 111/121/4 79/101/4
+f 92/112/3 80/101/3 112/121/3 110/120/3
+f 110/41/6 112/42/6 111/43/6 109/44/6
+f 113/37/5 114/38/5 116/39/5 115/40/5
+f 119/55/6 122/56/6 121/31/6 118/32/6
+f 123/67/1 126/122/1 125/123/1 124/124/1
+f 127/19/2 128/125/2 129/126/2 130/127/2
+f 123/128/3 127/129/3 130/130/3 126/131/3
+f 124/128/4 125/131/4 129/130/4 128/129/4
+f 123/132/5 124/133/5 128/134/5 127/135/5
+f 126/136/6 130/137/6 129/130/6 125/131/6
+f 131/9/3 133/10/3 134/11/3 132/12/3
+f 106/138/4 107/139/4 60/140/4 19/36/4
+f 105/138/3 20/36/3 59/140/3 108/139/3
+f 135/141/1 138/46/1 137/142/1 136/143/1
+f 20/61/2 19/62/2 60/63/2 59/64/2
+f 12/72/4 100/73/4 103/74/4 16/75/4
+f 142/29/6 144/30/6 143/31/6 141/32/6
+f 145/37/5 146/38/5 148/39/5 147/40/5
+f 137/142/7 138/46/7 42/106/7 41/144/7
+f 69/78/8 45/145/8 46/102/8 70/52/8
+f 122/146/9 119/147/9 73/86/9 76/85/9
+f 74/84/10 71/83/10 31/148/10 35/149/10
+f 145/150/11 135/141/11 136/143/11 146/151/11
+f 68/77/12 67/76/12 147/152/12 148/153/12
+f 109/154/7 87/93/7 88/92/7 110/155/7
+f 84/98/8 83/97/8 111/156/8 112/157/8
+f 56/75/13 14/158/13 10/159/13 53/72/13
+f 144/160/9 142/161/9 101/73/9 104/74/9
+f 57/74/14 54/73/14 141/161/14 143/160/14
+f 102/75/10 99/72/10 9/159/10 13/158/10
+f 134/11/9 98/162/9 95/163/9 132/12/9
+f 7/11/14 3/12/14 94/163/14 97/162/14
+f 6/10/13 29/164/13 26/165/13 2/9/13
+f 133/10/10 131/9/10 25/165/10 28/164/10
+f 113/166/11 85/91/11 86/94/11 114/167/11
+f 82/96/12 81/95/12 115/168/12 116/169/12
+f 107/118/7 108/117/7 62/170/7 61/171/7
+f 63/172/8 64/173/8 52/64/8 51/63/8
+f 105/116/11 106/119/11 18/174/11 17/175/11
+f 49/61/12 21/176/12 22/177/12 50/62/12
+f 108/139/3 59/140/3 62/178/3
+f 149/1/1 152/2/1 151/3/1 150/4/1
+f 153/5/2 154/6/2 155/7/2 156/8/2
+f 149/179/3 153/180/3 156/181/3 152/182/3
+f 150/179/4 151/182/4 155/181/4 154/180/4
+f 102/183/2 16/28/2 103/17/2 104/184/2
+f 99/101/1 101/185/1 100/65/1 12/22/1
+f 157/21/1 160/22/1 159/23/1 158/24/1
+f 161/25/2 162/26/2 163/27/2 164/28/2
+f 157/186/5 158/187/5 162/188/5 161/189/5
+f 160/190/6 164/191/6 163/192/6 159/193/6
+f 165/194/3 169/195/3 172/196/3 168/197/3
+f 166/194/4 167/197/4 171/196/4 170/195/4
+f 165/198/5 166/199/5 170/200/5 169/201/5
+f 168/202/6 172/203/6 171/204/6 167/205/6
+f 173/186/5 174/187/5 177/188/5 176/189/5
+f 179/45/1 182/46/1 181/47/1 180/48/1
+f 183/49/2 184/50/2 185/51/2 186/52/2
+f 179/206/5 180/187/5 184/188/5 183/207/5
+f 182/208/6 186/209/6 185/192/6 181/193/6
+f 187/210/3 191/211/3 194/212/3 190/213/3
+f 188/210/4 189/213/4 193/212/4 192/211/4
+f 187/198/5 188/199/5 192/200/5 191/201/5
+f 190/202/6 194/203/6 193/204/6 189/205/6
+f 197/61/2 198/62/2 199/63/2 200/64/2
+f 93/13/5 4/14/5 8/15/5 96/16/5
+f 96/81/2 8/8/2 97/214/2 98/215/2
+f 201/216/4 202/217/4 205/218/4 204/219/4
+f 93/89/1 95/220/1 94/221/1 4/2/1
+f 74/222/2 38/52/2 75/102/2 76/223/2
+f 210/202/6 212/203/6 211/204/6 209/205/6
+f 215/76/2 216/77/2 217/78/2 218/52/2
+f 71/224/1 73/225/1 72/106/1 34/46/1
+f 66/185/4 44/58/4 69/226/4 68/227/4
+f 219/228/3 222/229/3 224/230/3 221/231/3
+f 65/185/3 67/227/3 70/226/3 43/58/3
+f 65/141/1 43/46/1 44/142/1 66/143/1
+f 225/91/1 228/92/1 227/93/1 226/94/1
+f 229/95/2 230/96/2 231/97/2 232/98/2
+f 225/232/3 229/233/3 232/234/3 228/235/3
+f 226/232/4 227/235/4 231/234/4 230/233/4
+f 59/37/5 60/38/5 47/39/5 48/40/5
+f 60/140/4 61/178/4 63/236/4 47/87/4
+f 233/91/1 236/92/1 235/93/1 234/94/1
+f 237/95/2 238/96/2 239/97/2 240/98/2
+f 233/237/3 237/82/3 240/183/3 236/238/3
+f 234/237/4 235/238/4 239/183/4 238/82/4
+f 59/140/3 48/87/3 64/236/3 62/178/3
+f 11/72/3 15/75/3 58/74/3 55/73/3
+f 243/190/6 246/191/6 245/192/6 242/193/6
+f 247/216/3 250/219/3 252/218/3 249/217/3
+f 15/27/2 56/239/2 57/240/2 58/18/2
+f 11/23/1 55/68/1 54/241/1 53/242/1
+f 253/116/1 256/117/1 255/118/1 254/119/1
+f 23/35/4 47/87/4 51/243/4 50/244/4
+f 24/35/3 49/244/3 52/243/3 48/87/3
+f 258/202/6 260/203/6 259/204/6 257/205/6
+f 261/198/5 262/199/5 264/200/5 263/201/5
+f 267/208/6 270/209/6 269/192/6 266/193/6
+f 271/67/1 274/122/1 273/123/1 272/124/1
+f 275/19/2 276/125/2 277/126/2 278/127/2
+f 271/245/3 275/246/3 278/247/3 274/248/3
+f 272/245/4 273/248/4 277/247/4 276/246/4
+f 271/249/5 272/250/5 276/251/5 275/252/5
+f 274/253/6 278/254/6 277/247/6 273/248/6
+f 279/179/3 281/180/3 282/181/3 280/182/3
+f 24/116/1 48/117/1 47/118/1 23/119/1
+f 27/29/6 30/30/6 5/31/6 1/32/6
+f 283/141/1 286/46/1 285/142/1 284/143/1
+f 28/255/2 29/256/2 5/5/2 30/80/2
+f 25/257/1 27/90/1 1/1/1 26/258/1
+f 290/190/6 292/191/6 291/192/6 289/193/6
+f 293/198/5 294/199/5 296/200/5 295/201/5
+f 285/142/7 286/46/7 190/106/7 189/144/7
+f 217/78/8 193/145/8 194/102/8 218/52/8
+f 270/259/9 267/260/9 221/231/9 224/230/9
+f 222/229/10 219/228/10 179/261/10 183/262/10
+f 293/150/11 283/141/11 284/143/11 294/151/11
+f 216/77/12 215/76/12 295/152/12 296/153/12
+f 257/154/7 235/93/7 236/92/7 258/155/7
+f 232/98/8 231/97/8 259/156/8 260/157/8
+f 204/219/13 162/263/13 158/264/13 201/216/13
+f 292/265/9 290/266/9 249/217/9 252/218/9
+f 205/218/14 202/217/14 289/266/14 291/265/14
+f 250/219/10 247/216/10 157/264/10 161/263/10
+f 282/181/9 246/267/9 243/268/9 280/182/9
+f 155/181/14 151/182/14 242/268/14 245/267/14
+f 154/180/13 177/269/13 174/270/13 150/179/13
+f 281/180/10 279/179/10 173/270/10 176/269/10
+f 261/166/11 233/91/11 234/94/11 262/167/11
+f 230/96/12 229/95/12 263/168/12 264/169/12
+f 255/118/7 256/117/7 210/170/7 209/171/7
+f 211/172/8 212/173/8 200/64/8 199/63/8
+f 253/116/11 254/119/11 166/174/11 165/175/11
+f 197/61/12 169/176/12 170/177/12 198/62/12
+f 256/271/3 207/79/3 210/272/3
+f 145/273/3 147/274/3 65/185/3 139/71/3
+f 146/273/4 140/71/4 66/185/4 148/274/4
+f 139/41/6 65/42/6 66/43/6 140/44/6
+f 39/57/3 42/60/3 138/70/3
+f 40/57/4 137/70/4 41/60/4
+f 44/58/4 45/59/4 69/226/4
+f 43/58/3 70/226/3 46/59/3
+f 72/106/1 73/225/1 119/107/1
+f 75/102/2 122/105/2 76/223/2
+f 71/224/1 34/46/1 31/45/1
+f 35/49/2 38/52/2 74/222/2
+f 136/69/4 140/71/4 146/273/4
+f 145/273/3 139/71/3 135/69/3
+f 65/185/3 147/274/3 67/227/3
+f 66/185/4 68/227/4 148/274/4
+f 88/113/3 92/112/3 110/120/3
+f 87/113/4 109/120/4 91/112/4
+f 80/101/3 84/100/3 112/121/3
+f 79/101/4 111/121/4 83/100/4
+f 10/24/1 11/23/1 53/242/1
+f 56/239/2 15/27/2 14/26/2
+f 100/65/1 101/185/1 142/66/1
+f 103/17/2 144/20/2 104/184/2
+f 141/67/1 54/241/1 55/68/1
+f 57/240/2 143/19/2 58/18/2
+f 13/25/2 16/28/2 102/183/2
+f 99/101/1 12/22/1 9/21/1
+f 1/1/1 2/4/1 26/258/1
+f 5/5/2 29/256/2 6/6/2
+f 131/87/1 27/90/1 25/257/1
+f 94/221/1 3/3/1 4/2/1
+f 7/7/2 97/214/2 8/8/2
+f 96/81/2 98/215/2 134/82/2
+f 28/255/2 30/80/2 133/79/2
+f 93/89/1 132/88/1 95/220/1
+f 78/88/4 82/99/4 116/115/4
+f 77/88/3 115/115/3 81/99/3
+f 113/114/3 89/111/3 85/110/3
+f 86/110/4 90/111/4 114/114/4
+f 22/34/4 23/35/4 50/244/4
+f 17/33/3 20/36/3 105/138/3
+f 18/33/4 106/138/4 19/36/4
+f 49/244/3 24/35/3 21/34/3
+f 48/87/3 52/243/3 64/236/3
+f 47/87/4 63/236/4 51/243/4
+f 60/140/4 107/139/4 61/178/4
+f 173/257/1 175/90/1 149/1/1 174/258/1
+f 176/255/2 177/256/2 153/5/2 178/80/2
+f 175/190/6 178/191/6 153/192/6 149/193/6
+f 172/116/1 196/117/1 195/118/1 171/119/1
+f 172/196/3 197/275/3 200/276/3 196/277/3
+f 171/196/4 195/277/4 199/276/4 198/275/4
+f 159/23/1 203/68/1 202/241/1 201/242/1
+f 163/27/2 204/239/2 205/240/2 206/18/2
+f 159/216/3 163/219/3 206/218/3 203/217/3
+f 207/79/3 196/277/3 212/278/3 210/272/3
+f 208/79/4 209/272/4 211/278/4 195/277/4
+f 207/198/5 208/199/5 195/200/5 196/201/5
+f 213/141/1 191/46/1 192/142/1 214/143/1
+f 213/279/3 215/280/3 218/281/3 191/211/3
+f 214/279/4 192/211/4 217/281/4 216/280/4
+f 219/224/1 221/225/1 220/106/1 182/46/1
+f 222/222/2 186/52/2 223/102/2 224/223/2
+f 241/89/1 243/220/1 242/221/1 152/2/1
+f 244/81/2 156/8/2 245/214/2 246/215/2
+f 241/186/5 152/187/5 156/188/5 244/189/5
+f 247/101/1 249/185/1 248/65/1 160/22/1
+f 250/183/2 164/28/2 251/17/2 252/184/2
+f 160/216/4 248/217/4 251/218/4 164/219/4
+f 168/61/2 167/62/2 208/63/2 207/64/2
+f 253/282/3 168/197/3 207/79/3 256/271/3
+f 254/282/4 255/271/4 208/79/4 167/197/4
+f 240/183/3 228/235/3 260/283/3 258/284/3
+f 239/183/4 257/284/4 259/283/4 227/235/4
+f 240/198/5 239/199/5 227/200/5 228/201/5
+f 261/285/3 263/286/3 225/232/3 237/82/3
+f 262/285/4 238/82/4 226/232/4 264/286/4
+f 237/202/6 225/203/6 226/204/6 238/205/6
+f 220/106/1 267/107/1 266/108/1 265/109/1
+f 223/102/2 268/103/2 269/104/2 270/105/2
+f 220/206/5 265/187/5 268/188/5 223/207/5
+f 279/87/1 280/88/1 241/89/1 175/90/1
+f 281/79/2 178/80/2 244/81/2 282/82/2
+f 175/179/4 241/182/4 244/181/4 178/180/4
+f 287/76/2 288/77/2 188/78/2 187/52/2
+f 283/287/3 287/184/3 187/210/3 286/288/3
+f 284/287/4 285/288/4 188/210/4 288/184/4
+f 248/65/1 290/66/1 289/67/1 203/68/1
+f 251/17/2 206/18/2 291/19/2 292/20/2
+f 248/186/5 203/187/5 206/188/5 251/189/5
+f 293/289/3 295/290/3 213/279/3 287/184/3
+f 294/289/4 288/184/4 214/279/4 296/290/4
+f 287/202/6 213/203/6 214/204/6 288/205/6
+f 187/210/3 190/213/3 286/288/3
+f 188/210/4 285/288/4 189/213/4
+f 192/211/4 193/212/4 217/281/4
+f 191/211/3 218/281/3 194/212/3
+f 220/106/1 221/225/1 267/107/1
+f 223/102/2 270/105/2 224/223/2
+f 219/224/1 182/46/1 179/45/1
+f 183/49/2 186/52/2 222/222/2
+f 284/287/4 288/184/4 294/289/4
+f 293/289/3 287/184/3 283/287/3
+f 213/279/3 295/290/3 215/280/3
+f 214/279/4 216/280/4 296/290/4
+f 236/238/3 240/183/3 258/284/3
+f 235/238/4 257/284/4 239/183/4
+f 228/235/3 232/234/3 260/283/3
+f 227/235/4 259/283/4 231/234/4
+f 158/24/1 159/23/1 201/242/1
+f 204/239/2 163/27/2 162/26/2
+f 248/65/1 249/185/1 290/66/1
+f 251/17/2 292/20/2 252/184/2
+f 289/67/1 202/241/1 203/68/1
+f 205/240/2 291/19/2 206/18/2
+f 161/25/2 164/28/2 250/183/2
+f 247/101/1 160/22/1 157/21/1
+f 149/1/1 150/4/1 174/258/1
+f 153/5/2 177/256/2 154/6/2
+f 279/87/1 175/90/1 173/257/1
+f 242/221/1 151/3/1 152/2/1
+f 155/7/2 245/214/2 156/8/2
+f 244/81/2 246/215/2 282/82/2
+f 176/255/2 178/80/2 281/79/2
+f 241/89/1 280/88/1 243/220/1
+f 226/232/4 230/233/4 264/286/4
+f 225/232/3 263/286/3 229/233/3
+f 261/285/3 237/82/3 233/237/3
+f 234/237/4 238/82/4 262/285/4
+f 170/195/4 171/196/4 198/275/4
+f 165/194/3 168/197/3 253/282/3
+f 166/194/4 254/282/4 167/197/4
+f 197/275/3 172/196/3 169/195/3
+f 196/277/3 200/276/3 212/278/3
+f 195/277/4 211/278/4 199/276/4
+f 208/79/4 255/271/4 209/272/4
diff --git a/homedecor_modpack/homedecor/models/forniture_torch.obj b/homedecor_modpack/homedecor/models/forniture_torch.obj
new file mode 100644
index 0000000..c97e085
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/forniture_torch.obj
@@ -0,0 +1,437 @@
+# Blender v2.73 (sub 0) OBJ File: 'forniture-torch.blend'
+# www.blender.org
+o Cylinder
+v -0.070105 -0.451141 0.426038
+v -0.070105 -0.424562 0.499062
+v 0.007605 -0.424562 0.499062
+v 0.007605 -0.451141 0.426038
+v 0.007605 -0.098756 0.297781
+v 0.007605 -0.072177 0.370805
+v -0.070105 -0.072177 0.370805
+v -0.070105 -0.098756 0.297781
+v 0.007605 -0.116816 0.304330
+v 0.007605 -0.189840 0.330909
+v -0.070105 -0.189840 0.330909
+v -0.070105 -0.116816 0.304330
+v 0.069783 0.031995 0.193861
+v 0.069783 0.031995 0.393565
+v -0.132283 0.031995 0.393565
+v -0.132283 0.031995 0.193861
+v 0.013082 -0.113527 0.297353
+v 0.013082 -0.196844 0.327678
+v -0.075582 -0.196844 0.327678
+v -0.075582 -0.113527 0.297353
+v -0.070192 -0.045506 0.500000
+v -0.075582 -0.039769 0.500000
+v 0.007692 -0.045506 0.500000
+v 0.007680 -0.128375 0.500000
+v 0.013082 -0.039769 0.500000
+v -0.070180 -0.128375 0.500000
+v 0.013082 -0.134124 0.500000
+v -0.075582 -0.134124 0.500000
+v -0.031250 -0.424562 0.499062
+v 0.007605 -0.437851 0.462550
+v -0.070105 -0.437851 0.462550
+v -0.031250 -0.451141 0.426038
+v -0.031250 -0.470887 0.474574
+v -0.031250 -0.467388 0.438505
+v 0.001447 -0.456205 0.469230
+v -0.031250 -0.445022 0.499955
+v -0.063947 -0.456205 0.469230
+v 0.044525 0.031995 0.218824
+v 0.044527 0.031980 0.368602
+v -0.107009 0.031987 0.368578
+v -0.106916 0.031995 0.218975
+v -0.070742 -0.026956 0.277181
+v -0.070790 -0.026969 0.352884
+v 0.008333 -0.026981 0.352896
+v 0.008332 -0.026956 0.277105
+v -0.009642 0.004093 0.367884
+v -0.086372 0.004535 0.341291
+v -0.091607 0.004950 0.259544
+v -0.013029 0.016223 0.261872
+v 0.038407 0.003299 0.302325
+v -0.032436 0.040371 0.294073
+v 0.037459 -0.032366 0.318588
+v 0.029480 -0.023648 0.277887
+v -0.031236 -0.025288 0.373950
+v 0.014186 -0.033648 0.364907
+v -0.093899 -0.023106 0.326083
+v -0.076686 -0.033648 0.364907
+v -0.075118 -0.026614 0.248091
+v -0.093539 -0.021250 0.278824
+v 0.014181 -0.026351 0.245423
+v -0.030061 -0.018199 0.232075
+v -0.001778 0.028773 0.334271
+v -0.051815 0.025727 0.346143
+v -0.088532 0.013956 0.303905
+v -0.043659 0.008253 0.248510
+v 0.013600 0.011721 0.262111
+v -0.023834 0.035206 0.314610
+v 0.009766 0.034903 0.301827
+v -0.062347 0.035851 0.323176
+v -0.047034 0.029569 0.277077
+v -0.010182 0.035814 0.272572
+v -0.167964 -0.020341 0.298667
+v 0.105464 -0.020341 0.298667
+v -0.167964 0.311681 0.298667
+v 0.105464 0.311681 0.298667
+v -0.031250 -0.020341 0.161953
+v -0.031250 -0.020341 0.435381
+v -0.031250 0.311681 0.161953
+v -0.031250 0.311681 0.435381
+v 0.065422 -0.020341 0.395338
+v -0.127922 -0.020341 0.201995
+v 0.065422 0.311681 0.395338
+v -0.127922 0.311681 0.201995
+v -0.127922 -0.020341 0.395338
+v 0.065422 -0.020341 0.201995
+v -0.127922 0.311681 0.395338
+v 0.065422 0.311681 0.201995
+v -0.070105 -0.085467 0.334293
+v -0.031250 -0.072177 0.370805
+v 0.007605 -0.085467 0.334293
+v -0.031250 -0.098756 0.297781
+v -0.172703 0.031996 0.293707
+v -0.031256 0.031996 0.433499
+v 0.110190 0.031996 0.293707
+v -0.031256 0.031996 0.153914
+v -0.137254 0.031991 0.293796
+v -0.031244 0.031980 0.398534
+v 0.074830 0.031985 0.293707
+v -0.031180 0.031996 0.188968
+v -0.086583 -0.026963 0.315042
+v -0.031230 -0.026981 0.368042
+v 0.024156 -0.026972 0.314997
+v -0.031197 -0.026954 0.261997
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.734557 0.726642
+vt 0.734557 0.982003
+vt 0.515443 0.982003
+vt 0.515443 0.726641
+vt 0.015232 0.609057
+vt 0.015443 0.017844
+vt 0.234557 0.017844
+vt 0.234801 0.702194
+vt 0.750000 0.708644
+vt 0.750000 1.000000
+vt 0.500000 1.000000
+vt 0.500000 0.708644
+vt 1.000000 0.708644
+vt 0.750000 0.602600
+vt 0.750000 0.000000
+vt 0.250000 0.000000
+vt 0.250000 0.708645
+vt 0.478251 0.982003
+vt 0.478251 0.726641
+vt 0.000000 0.602600
+vt 0.500000 0.000000
+vt 0.265442 0.017844
+vt 0.265199 0.702194
+vt 0.484557 0.017844
+vt 0.484768 0.609057
+vt 0.500000 0.602600
+vt 1.000000 0.529038
+vt 1.000000 0.634845
+vt 0.942307 0.529038
+vt 1.000000 0.423230
+vt 0.942307 0.317423
+vt 1.000000 0.317423
+vt 1.000000 0.211615
+vt 0.937916 0.740653
+vt 0.880223 0.740653
+vt 0.937916 0.634845
+vt 1.000000 0.105808
+vt 0.942307 0.105808
+vt 0.062500 0.500000
+vt 0.062500 0.375000
+vt 0.250000 0.375000
+vt 0.250000 0.500000
+vt 0.062500 0.750000
+vt 0.062500 0.625000
+vt 0.250000 0.625000
+vt 0.250000 0.750000
+vt 0.062500 1.000000
+vt 0.062500 0.875000
+vt 0.250000 0.875000
+vt 0.250000 1.000000
+vt 0.062500 0.250000
+vt 0.062500 0.125000
+vt 0.250000 0.125000
+vt 0.250000 0.250000
+vt 0.937916 0.846461
+vt 0.923551 0.228385
+vt 0.923551 0.194846
+vt 0.923551 0.618076
+vt 0.923551 0.440000
+vt 0.880223 0.317423
+vt 0.880223 0.105808
+vt 0.880223 0.529038
+vt 0.187500 1.000000
+vt 0.062500 0.000000
+vt 0.187500 0.000000
+vt 0.375000 0.000000
+vt 0.375000 1.000000
+vt 0.312500 0.000000
+vt 0.562500 0.000000
+vt 0.687500 1.000000
+vt 0.562500 1.000000
+vt 0.312500 0.500000
+vt 0.312500 0.375000
+vt 0.375000 0.375000
+vt 0.375000 0.500000
+vt 0.312500 0.750000
+vt 0.312500 0.625000
+vt 0.375000 0.625000
+vt 0.375000 0.750000
+vt 0.312500 1.000000
+vt 0.312500 0.875000
+vt 0.375000 0.875000
+vt 0.312500 0.250000
+vt 0.312500 0.125000
+vt 0.375000 0.125000
+vt 0.375000 0.250000
+vt 0.437500 0.250000
+vt 0.437500 0.125000
+vt 0.812500 0.125000
+vt 0.812500 0.250000
+vt 0.437500 1.000000
+vt 0.437500 0.875000
+vt 0.812500 0.875000
+vt 0.812500 1.000000
+vt 0.437500 0.750000
+vt 0.437500 0.625000
+vt 0.812500 0.625000
+vt 0.812500 0.750000
+vt 0.437500 0.500000
+vt 0.437500 0.375000
+vt 0.812500 0.375000
+vt 0.812500 0.500000
+vt 0.437500 0.000000
+vt 0.812500 0.000000
+vt 0.563450 0.287982
+vt 0.591010 0.397840
+vt 0.513711 0.462096
+vt 0.294538 0.374896
+vt 0.415649 0.359039
+vt 0.378734 0.434099
+vt 0.276191 0.642067
+vt 0.286968 0.497086
+vt 0.432404 0.584766
+vt 0.551580 0.634461
+vt 0.444230 0.678132
+vt 0.561556 0.599491
+vt 0.731844 0.502250
+vt 0.644903 0.633680
+vt 0.631466 0.503876
+vt 0.483565 0.529218
+vt 0.700559 0.582119
+vt 0.646941 0.688222
+vt 0.491887 0.731844
+vt 0.333976 0.679501
+vt 0.269419 0.579056
+vt 0.268156 0.424601
+vt 0.328483 0.297711
+vt 0.487769 0.268156
+vt 0.646958 0.297711
+vt 0.728521 0.449096
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 0.707100
+vn 0.000000 -0.342000 -0.939700
+vn 1.000000 0.000100 0.000400
+vn 1.000000 0.000000 -0.000000
+vn 0.000000 -0.904500 -0.426400
+vn 0.707100 0.664500 -0.241800
+vn 0.000000 -0.418800 0.908100
+vn 0.707100 -0.664500 0.241800
+vn -0.707100 0.664500 -0.241800
+vn -1.000000 0.000100 0.000400
+vn -0.707100 -0.664500 0.241800
+vn 0.000000 0.043600 0.999000
+vn 0.953700 -0.282600 0.102800
+vn 0.000000 -0.608800 -0.793400
+vn -0.953700 -0.282600 0.102800
+vn 0.196500 -0.698600 -0.688000
+vn -0.772800 -0.611700 -0.169500
+vn -0.247800 -0.430000 0.868100
+vn 0.780000 -0.556900 0.285400
+vn 0.369800 -0.927400 -0.056000
+vn -0.369800 -0.927400 -0.056000
+vn -0.369800 -0.674400 0.639000
+vn 0.369800 -0.674400 0.639000
+vn 0.395900 -0.914000 -0.088700
+vn -0.395900 -0.914000 -0.088700
+vn -0.395900 -0.643200 0.655400
+vn 0.395900 -0.643200 0.655400
+vn 0.000000 0.342000 0.939700
+vn -0.000000 1.000000 0.000000
+vn -0.000100 1.000000 0.000100
+vn -0.000200 1.000000 -0.000400
+vn 0.000200 1.000000 -0.000100
+vn 0.771000 0.553400 -0.315100
+vn -0.328600 0.430200 -0.840800
+vn -0.675200 0.683900 0.276300
+vn 0.239700 0.754100 0.611500
+vn 0.000100 1.000000 0.000000
+vn 0.000200 1.000000 -0.000300
+vn -0.000400 1.000000 -0.000100
+vn 0.772800 -0.611600 -0.169400
+vn 0.247800 -0.430000 0.868100
+vn -0.780000 -0.556900 0.285400
+vn -0.196500 -0.698600 -0.688000
+vn -0.238600 0.754400 0.611500
+vn -0.771100 0.553100 -0.315300
+vn 0.328900 0.430300 -0.840600
+vn 0.675200 0.683800 0.276800
+vn -0.242600 0.808200 0.536600
+vn -0.496000 0.687400 0.530500
+vn -0.431900 0.889200 -0.150600
+vn 0.263600 0.432600 -0.862200
+vn 0.708400 0.637200 -0.303500
+vn 0.139900 0.988100 -0.064600
+vn 0.575900 0.729100 -0.370000
+vn 0.087000 0.467700 -0.879600
+vn -0.200300 0.895600 -0.397100
+vn -0.204400 0.772800 -0.600800
+vn -0.191800 0.775600 -0.601400
+vn -0.374700 0.893900 -0.246300
+vn -0.489300 0.827500 -0.275300
+vn -0.713400 0.668600 0.209700
+vn 0.064800 0.973800 0.217800
+vn 0.096500 0.926300 0.364100
+vn 0.213000 0.867400 0.449800
+vn 0.088000 0.974100 0.208100
+vn 0.091000 0.972100 0.216100
+vn 0.687500 0.628700 0.363400
+vn 0.854600 0.163900 -0.492800
+vn 0.879200 0.202400 -0.431200
+vn 0.076000 0.401300 -0.912800
+vn 0.190600 0.586900 -0.786900
+vn -0.370900 0.345000 -0.862200
+vn -0.233200 0.221800 -0.946800
+vn -0.993100 0.107800 0.047000
+vn -0.989800 0.142200 -0.002000
+vn -0.972700 0.205500 0.108000
+vn -0.372600 0.417900 0.828500
+vn -0.247700 0.384800 0.889200
+vn -0.264000 0.377300 0.887600
+vn 0.751600 0.435400 0.495500
+vn 0.809500 0.412200 0.418100
+vn 0.700000 0.280800 0.656600
+vn 0.333100 0.517400 -0.788200
+vn -0.845100 -0.275100 -0.458500
+vn -0.911700 0.022500 0.410300
+vn 0.204200 0.051800 0.977600
+vn 0.968300 -0.124500 -0.216500
+vn -0.457500 -0.888400 -0.038400
+g Cylinder_Cylinder_flames
+s off
+f 72/1/1 73/2/1 75/3/1 74/4/1
+f 76/1/2 77/2/2 79/3/2 78/4/2
+f 80/1/3 82/4/3 83/3/3 81/2/3
+f 84/1/4 85/2/4 87/3/4 86/4/4
+g Cylinder_Cylinder_bracket
+f 9/5/5 10/6/5 11/7/5 12/8/5
+f 26/9/6 11/10/6 12/11/6 21/12/6
+f 17/13/5 18/14/5 19/15/5 20/16/5
+f 25/17/7 27/18/7 18/19/7 17/2/7
+f 12/8/8 20/16/8 17/13/8 9/5/8
+f 21/12/9 12/11/9 20/20/9 22/21/9
+f 10/22/10 11/23/10 19/16/10 18/15/10
+f 11/10/11 26/9/11 28/24/11 19/1/11
+f 28/18/2 22/16/2 20/25/2 19/19/2
+f 9/26/12 23/27/12 25/21/12 17/20/12
+f 23/27/13 9/26/13 10/28/13 24/29/13
+f 24/29/14 10/28/14 18/25/14 27/30/14
+g Cylinder_Cylinder_torch-body
+f 29/31/15 2/32/15 36/33/15
+f 3/34/16 35/35/16 30/36/16
+f 30/36/16 35/35/16 4/37/16
+f 32/38/17 34/39/17 1/40/17
+f 2/2/18 31/41/18 37/42/18
+f 95/43/19 13/44/19 5/45/19 91/46/19
+f 92/47/20 16/48/20 8/49/20 88/50/20
+f 93/51/21 15/52/21 7/53/21 89/54/21
+f 94/55/22 14/56/22 6/57/22 90/58/22
+f 3/34/15 29/31/15 36/33/15
+f 31/41/18 1/37/18 37/42/18
+f 4/59/17 34/39/17 32/38/17
+f 34/60/23 4/37/23 35/35/23
+f 34/61/24 37/42/24 1/37/24
+f 36/33/25 2/32/25 37/62/25
+f 35/63/26 3/34/26 36/33/26
+f 33/64/27 34/60/27 35/35/27
+f 33/65/28 37/42/28 34/61/28
+f 33/66/29 36/33/29 37/62/29
+f 33/66/30 35/63/30 36/33/30
+f 2/67/31 3/4/31 6/1/31 89/68/31 7/69/31
+f 8/70/2 1/71/2 2/67/2 7/69/2 88/72/2
+f 4/73/5 1/19/5 8/14/5 91/74/5 5/75/5
+f 6/71/7 3/70/7 4/73/7 5/75/7 90/15/7
+f 95/76/32 16/77/32 41/78/32 99/79/32
+f 94/80/33 13/81/33 38/82/33 98/83/33
+f 93/84/34 14/85/34 39/86/34 97/71/34
+f 92/87/35 15/88/35 40/89/35 96/90/35
+f 96/91/36 40/92/36 43/93/36 100/94/36
+f 97/95/37 39/96/37 44/97/37 101/98/37
+f 98/99/38 38/100/38 45/101/38 102/102/38
+f 99/103/39 41/104/39 42/105/39 103/106/39
+f 16/77/40 92/87/40 96/90/40 41/78/40
+f 15/88/41 93/72/41 97/70/41 40/89/41
+f 14/85/42 94/80/42 98/83/42 39/86/42
+f 13/81/32 95/76/32 99/79/32 38/82/32
+f 13/44/43 94/55/43 90/58/43 5/45/43
+f 14/56/44 93/68/44 89/20/44 6/57/44
+f 15/52/45 92/47/45 88/50/45 7/53/45
+f 16/48/46 95/43/46 91/46/46 8/49/46
+f 38/100/47 99/103/47 103/106/47 45/101/47
+f 39/96/48 98/99/48 102/102/48 44/97/48
+f 40/92/49 97/107/49 101/108/49 43/93/49
+f 41/104/50 96/91/50 100/94/50 42/105/50
+g Cylinder_Cylinder_coal
+f 46/109/51 62/110/51 67/111/51
+f 47/112/52 63/113/52 69/114/52
+f 48/115/53 64/116/53 70/117/53
+f 49/118/54 65/119/54 71/120/54
+f 50/121/55 66/122/55 68/123/55
+f 68/123/56 71/120/56 51/124/56
+f 68/123/57 66/122/57 71/120/57
+f 66/122/58 49/118/58 71/120/58
+f 71/120/59 70/117/59 51/124/59
+f 71/120/60 65/119/60 70/117/60
+f 65/119/61 48/115/61 70/117/61
+f 70/117/62 69/114/62 51/124/62
+f 70/117/63 64/116/63 69/114/63
+f 64/116/64 47/112/64 69/114/64
+f 69/114/65 67/111/65 51/124/65
+f 69/114/66 63/113/66 67/111/66
+f 63/113/67 46/109/67 67/111/67
+f 67/111/68 68/123/68 51/124/68
+f 67/111/69 62/110/69 68/123/69
+f 62/110/70 50/121/70 68/123/70
+f 53/125/71 66/122/71 50/121/71
+f 53/125/72 60/126/72 66/122/72
+f 60/126/73 49/118/73 66/122/73
+f 61/127/74 65/119/74 49/118/74
+f 61/127/75 58/128/75 65/119/75
+f 58/128/76 48/115/76 65/119/76
+f 59/129/77 64/116/77 48/115/77
+f 59/129/78 56/130/78 64/116/78
+f 56/130/79 47/112/79 64/116/79
+f 57/131/80 63/113/80 47/112/80
+f 57/131/81 54/132/81 63/113/81
+f 54/132/82 46/109/82 63/113/82
+f 55/133/83 62/110/83 46/109/83
+f 55/133/84 52/134/84 62/110/84
+f 52/134/85 50/121/85 62/110/85
+f 60/126/86 61/127/86 49/118/86
+f 58/128/87 59/129/87 48/115/87
+f 56/130/88 57/131/88 47/112/88
+f 54/132/89 55/133/89 46/109/89
+f 52/134/90 53/125/90 50/121/90
+f 56/130/91 59/129/91 57/131/91
diff --git a/homedecor_modpack/homedecor/models/homedecor_4_bottles.obj b/homedecor_modpack/homedecor/models/homedecor_4_bottles.obj
new file mode 100644
index 0000000..345547f
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_4_bottles.obj
@@ -0,0 +1,1957 @@
+# Blender v2.73 (sub 0) OBJ File: '4-bottles.blend'
+# www.blender.org
+o bottle.002_Cylinder.001
+v 0.074823 -0.499974 -0.222534
+v 0.106650 0.000014 -0.210950
+v 0.087138 -0.499974 -0.242847
+v 0.112100 0.000014 -0.219940
+v 0.106271 -0.499974 -0.256903
+v 0.120568 0.000014 -0.226161
+v 0.129309 -0.499974 -0.262563
+v 0.130764 0.000014 -0.228666
+v 0.152744 -0.499974 -0.258965
+v 0.141136 0.000014 -0.227074
+v 0.173009 -0.499974 -0.246658
+v 0.150105 0.000014 -0.221627
+v 0.187019 -0.499974 -0.227513
+v 0.156306 0.000014 -0.213154
+v 0.192640 -0.499974 -0.204447
+v 0.158794 0.000014 -0.202945
+v 0.189018 -0.499974 -0.180971
+v 0.157191 0.000014 -0.192555
+v 0.176703 -0.499974 -0.160658
+v 0.151740 0.000014 -0.183565
+v 0.157570 -0.499974 -0.146602
+v 0.143272 0.000014 -0.177344
+v 0.134532 -0.499974 -0.140942
+v 0.133076 0.000014 -0.174839
+v 0.111097 -0.499974 -0.144540
+v 0.122704 0.000014 -0.176431
+v 0.090831 -0.499974 -0.156848
+v 0.113735 0.000014 -0.181879
+v 0.076822 -0.499974 -0.175992
+v 0.107535 0.000014 -0.190351
+v 0.071200 -0.499974 -0.199058
+v 0.105047 0.000014 -0.200560
+v 0.062993 -0.223085 -0.226840
+v 0.077860 -0.223085 -0.251361
+v 0.100957 -0.223085 -0.268329
+v 0.128768 -0.223085 -0.275162
+v 0.157058 -0.223085 -0.270819
+v 0.181522 -0.223085 -0.255961
+v 0.198434 -0.223085 -0.232850
+v 0.205220 -0.223085 -0.205005
+v 0.200847 -0.223085 -0.176665
+v 0.185981 -0.223085 -0.152145
+v 0.162884 -0.223085 -0.135176
+v 0.135073 -0.223085 -0.128343
+v 0.106782 -0.223085 -0.132687
+v 0.082319 -0.223085 -0.147544
+v 0.065406 -0.223085 -0.170655
+v 0.058620 -0.223085 -0.198500
+v 0.102044 -0.112565 -0.212627
+v 0.108488 -0.112565 -0.223255
+v 0.118499 -0.112565 -0.230610
+v 0.130554 -0.112565 -0.233571
+v 0.142816 -0.112565 -0.231689
+v 0.153420 -0.112565 -0.225249
+v 0.160750 -0.112565 -0.215232
+v 0.163692 -0.112565 -0.203163
+v 0.161796 -0.112565 -0.190879
+v 0.155352 -0.112565 -0.180250
+v 0.145341 -0.112565 -0.172895
+v 0.133287 -0.112565 -0.169934
+v 0.121024 -0.112565 -0.171816
+v 0.110421 -0.112565 -0.178256
+v 0.103090 -0.112565 -0.188274
+v 0.100149 -0.112565 -0.200343
+v 0.106650 -0.050066 -0.210950
+v 0.112100 -0.050066 -0.219940
+v 0.120568 -0.050066 -0.226161
+v 0.130764 -0.050066 -0.228666
+v 0.141136 -0.050066 -0.227074
+v 0.150105 -0.050066 -0.221627
+v 0.156306 -0.050066 -0.213154
+v 0.158794 -0.050066 -0.202945
+v 0.157191 -0.050066 -0.192555
+v 0.151740 -0.050066 -0.183565
+v 0.143272 -0.050066 -0.177344
+v 0.133076 -0.050066 -0.174839
+v 0.122704 -0.050066 -0.176431
+v 0.113735 -0.050066 -0.181879
+v 0.107535 -0.050066 -0.190351
+v 0.105047 -0.050066 -0.200560
+v 0.076043 -0.490231 -0.253028
+v 0.099916 -0.490231 -0.270567
+v 0.128662 -0.490231 -0.277630
+v 0.157903 -0.490231 -0.273141
+v 0.183189 -0.490231 -0.257783
+v 0.200670 -0.490231 -0.233896
+v 0.207684 -0.490231 -0.205115
+v 0.203164 -0.490231 -0.175822
+v 0.187798 -0.490231 -0.150477
+v 0.163925 -0.490231 -0.132938
+v 0.135179 -0.490231 -0.125876
+v 0.105937 -0.490231 -0.130365
+v 0.080651 -0.490231 -0.145722
+v 0.063170 -0.490231 -0.169610
+v 0.056156 -0.490231 -0.198391
+v 0.060676 -0.490231 -0.227683
+v 0.074484 -0.360107 -0.254459
+v 0.099023 -0.360107 -0.272487
+v 0.128571 -0.360107 -0.279747
+v 0.158628 -0.360107 -0.275132
+v 0.184620 -0.360107 -0.259347
+v 0.202588 -0.360107 -0.234793
+v 0.209798 -0.360107 -0.205209
+v 0.205152 -0.360107 -0.175098
+v 0.189357 -0.360107 -0.149046
+v 0.164818 -0.360107 -0.131018
+v 0.135270 -0.360107 -0.123759
+v 0.105212 -0.360107 -0.128373
+v 0.079221 -0.360107 -0.144159
+v 0.061252 -0.360107 -0.168713
+v 0.054042 -0.360107 -0.198297
+v 0.058688 -0.360107 -0.228407
+v 0.076043 -0.235452 -0.253028
+v 0.099916 -0.235452 -0.270567
+v 0.128662 -0.235452 -0.277630
+v 0.157903 -0.235452 -0.273140
+v 0.183189 -0.235452 -0.257783
+v 0.200670 -0.235452 -0.233896
+v 0.207684 -0.235452 -0.205115
+v 0.203164 -0.235452 -0.175822
+v 0.187798 -0.235452 -0.150477
+v 0.163925 -0.235452 -0.132938
+v 0.135179 -0.235452 -0.125876
+v 0.105937 -0.235452 -0.130365
+v 0.080651 -0.235452 -0.145722
+v 0.063170 -0.235452 -0.169610
+v 0.056156 -0.235452 -0.198391
+v 0.060676 -0.235452 -0.227683
+v 0.131920 0.000014 -0.201753
+v 0.131920 -0.499974 -0.201753
+v -0.145484 -0.499974 0.152678
+v -0.113657 0.000014 0.164262
+v -0.133169 -0.499974 0.132365
+v -0.108207 0.000014 0.155272
+v -0.114036 -0.499974 0.118309
+v -0.099739 0.000014 0.149051
+v -0.090999 -0.499974 0.112649
+v -0.089543 0.000014 0.146546
+v -0.067563 -0.499974 0.116246
+v -0.079171 0.000014 0.148138
+v -0.047298 -0.499974 0.128554
+v -0.070202 0.000014 0.153585
+v -0.033288 -0.499974 0.147699
+v -0.064001 0.000014 0.162058
+v -0.027667 -0.499974 0.170765
+v -0.061513 0.000014 0.172267
+v -0.031289 -0.499974 0.194241
+v -0.063117 0.000014 0.182657
+v -0.043605 -0.499974 0.214554
+v -0.068567 0.000014 0.191647
+v -0.062738 -0.499974 0.228610
+v -0.077035 0.000014 0.197868
+v -0.085775 -0.499974 0.234270
+v -0.087231 0.000014 0.200373
+v -0.109211 -0.499974 0.230672
+v -0.097603 0.000014 0.198781
+v -0.129476 -0.499974 0.218364
+v -0.106572 0.000014 0.193333
+v -0.143486 -0.499974 0.199220
+v -0.112773 0.000014 0.184860
+v -0.149107 -0.499974 0.176154
+v -0.115261 0.000014 0.174652
+v -0.157314 -0.223085 0.148372
+v -0.142447 -0.223085 0.123851
+v -0.119350 -0.223085 0.106883
+v -0.091540 -0.223085 0.100050
+v -0.063249 -0.223085 0.104393
+v -0.038785 -0.223085 0.119251
+v -0.021873 -0.223085 0.142362
+v -0.015087 -0.223085 0.170207
+v -0.019460 -0.223085 0.198547
+v -0.034327 -0.223085 0.223067
+v -0.057423 -0.223085 0.240036
+v -0.085234 -0.223085 0.246869
+v -0.113525 -0.223085 0.242525
+v -0.137989 -0.223085 0.227668
+v -0.154901 -0.223085 0.204557
+v -0.161687 -0.223085 0.176712
+v -0.118263 -0.112565 0.162585
+v -0.111819 -0.112565 0.151957
+v -0.101808 -0.112565 0.144602
+v -0.089753 -0.112565 0.141641
+v -0.077491 -0.112565 0.143523
+v -0.066887 -0.112565 0.149963
+v -0.059557 -0.112565 0.159980
+v -0.056616 -0.112565 0.172049
+v -0.058511 -0.112565 0.184333
+v -0.064955 -0.112565 0.194962
+v -0.074966 -0.112565 0.202316
+v -0.087020 -0.112565 0.205278
+v -0.099283 -0.112565 0.203396
+v -0.109886 -0.112565 0.196956
+v -0.117217 -0.112565 0.186938
+v -0.120158 -0.112565 0.174869
+v -0.113657 -0.050066 0.164262
+v -0.108207 -0.050066 0.155272
+v -0.099739 -0.050066 0.149051
+v -0.089543 -0.050066 0.146546
+v -0.079171 -0.050066 0.148138
+v -0.070202 -0.050066 0.153585
+v -0.064001 -0.050066 0.162058
+v -0.061513 -0.050066 0.172267
+v -0.063117 -0.050066 0.182657
+v -0.068567 -0.050066 0.191647
+v -0.077035 -0.050066 0.197868
+v -0.087231 -0.050066 0.200373
+v -0.097603 -0.050066 0.198781
+v -0.106572 -0.050066 0.193333
+v -0.112773 -0.050066 0.184860
+v -0.115261 -0.050066 0.174652
+v -0.144265 -0.490231 0.122184
+v -0.120391 -0.490231 0.104645
+v -0.091646 -0.490231 0.097582
+v -0.062404 -0.490231 0.102071
+v -0.037118 -0.490231 0.117429
+v -0.019637 -0.490231 0.141316
+v -0.012623 -0.490231 0.170097
+v -0.017143 -0.490231 0.199390
+v -0.032509 -0.490231 0.224735
+v -0.056383 -0.490231 0.242274
+v -0.085128 -0.490231 0.249336
+v -0.114370 -0.490231 0.244847
+v -0.139656 -0.490231 0.229490
+v -0.157137 -0.490231 0.205602
+v -0.164151 -0.490231 0.176821
+v -0.159631 -0.490231 0.147529
+v -0.145824 -0.360107 0.120753
+v -0.121284 -0.360107 0.102725
+v -0.091737 -0.360107 0.095465
+v -0.061679 -0.360107 0.100080
+v -0.035687 -0.360107 0.115865
+v -0.017719 -0.360107 0.140419
+v -0.010509 -0.360107 0.170003
+v -0.015155 -0.360107 0.200113
+v -0.030950 -0.360107 0.226166
+v -0.055490 -0.360107 0.244194
+v -0.085037 -0.360107 0.251453
+v -0.115095 -0.360107 0.246839
+v -0.141087 -0.360107 0.231053
+v -0.159055 -0.360107 0.206499
+v -0.166265 -0.360107 0.176915
+v -0.161619 -0.360107 0.146805
+v -0.144265 -0.235452 0.122184
+v -0.120391 -0.235452 0.104645
+v -0.091646 -0.235452 0.097582
+v -0.062404 -0.235452 0.102071
+v -0.037118 -0.235452 0.117429
+v -0.019637 -0.235452 0.141316
+v -0.012623 -0.235452 0.170097
+v -0.017143 -0.235452 0.199390
+v -0.032509 -0.235452 0.224735
+v -0.056383 -0.235452 0.242274
+v -0.085128 -0.235452 0.249336
+v -0.114370 -0.235452 0.244847
+v -0.139656 -0.235452 0.229490
+v -0.157137 -0.235452 0.205602
+v -0.164151 -0.235452 0.176821
+v -0.159631 -0.235452 0.147529
+v -0.088387 0.000014 0.173459
+v -0.088387 -0.499974 0.173459
+v -0.297958 -0.499974 -0.159118
+v -0.266131 0.000014 -0.147533
+v -0.285643 -0.499974 -0.179430
+v -0.260680 0.000014 -0.156523
+v -0.266510 -0.499974 -0.193486
+v -0.252213 0.000014 -0.162744
+v -0.243472 -0.499974 -0.199146
+v -0.242017 0.000014 -0.165249
+v -0.220037 -0.499974 -0.195549
+v -0.231644 0.000014 -0.163657
+v -0.199772 -0.499974 -0.183241
+v -0.222676 0.000014 -0.158210
+v -0.185762 -0.499974 -0.164096
+v -0.216475 0.000014 -0.149737
+v -0.180141 -0.499974 -0.141030
+v -0.213987 0.000014 -0.139528
+v -0.183763 -0.499974 -0.117554
+v -0.215590 0.000014 -0.129138
+v -0.196078 -0.499974 -0.097241
+v -0.221041 0.000014 -0.120148
+v -0.215211 -0.499974 -0.083185
+v -0.229509 0.000014 -0.113927
+v -0.238249 -0.499974 -0.077525
+v -0.239705 0.000014 -0.111422
+v -0.261684 -0.499974 -0.081123
+v -0.250077 0.000014 -0.113014
+v -0.281950 -0.499974 -0.093431
+v -0.259046 0.000014 -0.118462
+v -0.295959 -0.499974 -0.112575
+v -0.265246 0.000014 -0.126935
+v -0.301581 -0.499974 -0.135641
+v -0.267734 0.000014 -0.137143
+v -0.309788 -0.223085 -0.163423
+v -0.294921 -0.223085 -0.187944
+v -0.271824 -0.223085 -0.204912
+v -0.244013 -0.223085 -0.211745
+v -0.215723 -0.223085 -0.207402
+v -0.191259 -0.223085 -0.192544
+v -0.174347 -0.223085 -0.169433
+v -0.167561 -0.223085 -0.141588
+v -0.171934 -0.223085 -0.113248
+v -0.186800 -0.223085 -0.088728
+v -0.209897 -0.223085 -0.071759
+v -0.237708 -0.223085 -0.064926
+v -0.265999 -0.223085 -0.069270
+v -0.290462 -0.223085 -0.084127
+v -0.307375 -0.223085 -0.107238
+v -0.314161 -0.223085 -0.135083
+v -0.270737 -0.112565 -0.149210
+v -0.264293 -0.112565 -0.159838
+v -0.254282 -0.112565 -0.167193
+v -0.242227 -0.112565 -0.170154
+v -0.229965 -0.112565 -0.168272
+v -0.219361 -0.112565 -0.161832
+v -0.212031 -0.112565 -0.151815
+v -0.209089 -0.112565 -0.139746
+v -0.210985 -0.112565 -0.127462
+v -0.217429 -0.112565 -0.116833
+v -0.227440 -0.112565 -0.109479
+v -0.239494 -0.112565 -0.106517
+v -0.251757 -0.112565 -0.108399
+v -0.262360 -0.112565 -0.114839
+v -0.269691 -0.112565 -0.124857
+v -0.272632 -0.112565 -0.136926
+v -0.266131 -0.050066 -0.147533
+v -0.260680 -0.050066 -0.156523
+v -0.252213 -0.050066 -0.162744
+v -0.242017 -0.050066 -0.165249
+v -0.231644 -0.050066 -0.163657
+v -0.222676 -0.050066 -0.158210
+v -0.216475 -0.050066 -0.149737
+v -0.213987 -0.050066 -0.139528
+v -0.215590 -0.050066 -0.129138
+v -0.221041 -0.050066 -0.120148
+v -0.229509 -0.050066 -0.113927
+v -0.239705 -0.050066 -0.111422
+v -0.250077 -0.050066 -0.113014
+v -0.259046 -0.050066 -0.118462
+v -0.265246 -0.050066 -0.126935
+v -0.267734 -0.050066 -0.137143
+v -0.296738 -0.490231 -0.189611
+v -0.272865 -0.490231 -0.207150
+v -0.244119 -0.490231 -0.214213
+v -0.214878 -0.490231 -0.209724
+v -0.189592 -0.490231 -0.194366
+v -0.172111 -0.490231 -0.170479
+v -0.165097 -0.490231 -0.141698
+v -0.169617 -0.490231 -0.112405
+v -0.184983 -0.490231 -0.087060
+v -0.208856 -0.490231 -0.069521
+v -0.237602 -0.490231 -0.062459
+v -0.266844 -0.490231 -0.066948
+v -0.292130 -0.490231 -0.082305
+v -0.309611 -0.490231 -0.106193
+v -0.316625 -0.490231 -0.134974
+v -0.312105 -0.490231 -0.164266
+v -0.298297 -0.360107 -0.191042
+v -0.273758 -0.360107 -0.209070
+v -0.244210 -0.360107 -0.216330
+v -0.214153 -0.360107 -0.211715
+v -0.188161 -0.360107 -0.195930
+v -0.170193 -0.360107 -0.171376
+v -0.162983 -0.360107 -0.141792
+v -0.167629 -0.360107 -0.111682
+v -0.183424 -0.360107 -0.085629
+v -0.207963 -0.360107 -0.067601
+v -0.237511 -0.360107 -0.060342
+v -0.267569 -0.360107 -0.064956
+v -0.293560 -0.360107 -0.080742
+v -0.311529 -0.360107 -0.105296
+v -0.318739 -0.360107 -0.134880
+v -0.314092 -0.360107 -0.164990
+v -0.296738 -0.235452 -0.189611
+v -0.272865 -0.235452 -0.207150
+v -0.244119 -0.235452 -0.214213
+v -0.214878 -0.235452 -0.209724
+v -0.189592 -0.235452 -0.194366
+v -0.172111 -0.235452 -0.170479
+v -0.165097 -0.235452 -0.141698
+v -0.169617 -0.235452 -0.112405
+v -0.184983 -0.235452 -0.087060
+v -0.208856 -0.235452 -0.069521
+v -0.237602 -0.235452 -0.062459
+v -0.266844 -0.235452 -0.066948
+v -0.292130 -0.235452 -0.082305
+v -0.309611 -0.235452 -0.106193
+v -0.316625 -0.235452 -0.134974
+v -0.312105 -0.235452 -0.164266
+v -0.240861 0.000014 -0.138336
+v -0.240861 -0.499974 -0.138336
+v 0.213819 -0.499974 0.107817
+v 0.245646 0.000014 0.119401
+v 0.226134 -0.499974 0.087504
+v 0.251096 0.000014 0.110411
+v 0.245267 -0.499974 0.073448
+v 0.259564 0.000014 0.104190
+v 0.268305 -0.499974 0.067788
+v 0.269760 0.000014 0.101685
+v 0.291740 -0.499974 0.071386
+v 0.280132 0.000014 0.103277
+v 0.312005 -0.499974 0.083694
+v 0.289101 0.000014 0.108725
+v 0.326015 -0.499974 0.102838
+v 0.295302 0.000014 0.117197
+v 0.331636 -0.499974 0.125904
+v 0.297790 0.000014 0.127406
+v 0.328014 -0.499974 0.149380
+v 0.296187 0.000014 0.137796
+v 0.315699 -0.499974 0.169693
+v 0.290736 0.000014 0.146786
+v 0.296566 -0.499974 0.183749
+v 0.282268 0.000014 0.153007
+v 0.273528 -0.499974 0.189409
+v 0.272072 0.000014 0.155512
+v 0.250093 -0.499974 0.185811
+v 0.261700 0.000014 0.153920
+v 0.229827 -0.499974 0.173503
+v 0.252731 0.000014 0.148473
+v 0.215818 -0.499974 0.154359
+v 0.246531 0.000014 0.140000
+v 0.210196 -0.499974 0.131293
+v 0.244043 0.000014 0.129791
+v 0.201989 -0.223085 0.103511
+v 0.216856 -0.223085 0.078990
+v 0.239953 -0.223085 0.062022
+v 0.267763 -0.223085 0.055189
+v 0.296054 -0.223085 0.059532
+v 0.320518 -0.223085 0.074390
+v 0.337430 -0.223085 0.097501
+v 0.344216 -0.223085 0.125346
+v 0.339843 -0.223085 0.153686
+v 0.324977 -0.223085 0.178207
+v 0.301880 -0.223085 0.195175
+v 0.274069 -0.223085 0.202008
+v 0.245778 -0.223085 0.197665
+v 0.221315 -0.223085 0.182807
+v 0.204402 -0.223085 0.159696
+v 0.197616 -0.223085 0.131851
+v 0.241040 -0.112565 0.117725
+v 0.247484 -0.112565 0.107096
+v 0.257495 -0.112565 0.099741
+v 0.269550 -0.112565 0.096780
+v 0.281812 -0.112565 0.098662
+v 0.292416 -0.112565 0.105102
+v 0.299746 -0.112565 0.115120
+v 0.302688 -0.112565 0.127189
+v 0.300792 -0.112565 0.139472
+v 0.294348 -0.112565 0.150101
+v 0.284337 -0.112565 0.157456
+v 0.272283 -0.112565 0.160417
+v 0.260020 -0.112565 0.158535
+v 0.249417 -0.112565 0.152095
+v 0.242086 -0.112565 0.142078
+v 0.239145 -0.112565 0.130008
+v 0.245646 -0.050066 0.119401
+v 0.251096 -0.050066 0.110411
+v 0.259564 -0.050066 0.104190
+v 0.269760 -0.050066 0.101685
+v 0.280132 -0.050066 0.103277
+v 0.289101 -0.050066 0.108725
+v 0.295302 -0.050066 0.117197
+v 0.297790 -0.050066 0.127406
+v 0.296187 -0.050066 0.137796
+v 0.290736 -0.050066 0.146786
+v 0.282268 -0.050066 0.153007
+v 0.272072 -0.050066 0.155512
+v 0.261700 -0.050066 0.153920
+v 0.252731 -0.050066 0.148473
+v 0.246531 -0.050066 0.140000
+v 0.244043 -0.050066 0.129791
+v 0.215039 -0.490231 0.077323
+v 0.238912 -0.490231 0.059784
+v 0.267658 -0.490231 0.052722
+v 0.296899 -0.490231 0.057211
+v 0.322185 -0.490231 0.072568
+v 0.339666 -0.490231 0.096455
+v 0.346680 -0.490231 0.125236
+v 0.342160 -0.490231 0.154529
+v 0.326794 -0.490231 0.179874
+v 0.302921 -0.490231 0.197413
+v 0.274175 -0.490231 0.204476
+v 0.244933 -0.490231 0.199986
+v 0.219647 -0.490231 0.184629
+v 0.202166 -0.490231 0.160742
+v 0.195152 -0.490231 0.131961
+v 0.199672 -0.490231 0.102668
+v 0.213480 -0.360107 0.075892
+v 0.238019 -0.360107 0.057864
+v 0.267567 -0.360107 0.050604
+v 0.297624 -0.360107 0.055219
+v 0.323616 -0.360107 0.071005
+v 0.341584 -0.360107 0.095559
+v 0.348794 -0.360107 0.125143
+v 0.344148 -0.360107 0.155253
+v 0.328353 -0.360107 0.181305
+v 0.303814 -0.360107 0.199333
+v 0.274266 -0.360107 0.206593
+v 0.244208 -0.360107 0.201978
+v 0.218217 -0.360107 0.186192
+v 0.200248 -0.360107 0.161638
+v 0.193038 -0.360107 0.132054
+v 0.197684 -0.360107 0.101944
+v 0.215039 -0.235452 0.077323
+v 0.238912 -0.235452 0.059784
+v 0.267658 -0.235452 0.052722
+v 0.296899 -0.235452 0.057211
+v 0.322185 -0.235452 0.072568
+v 0.339666 -0.235452 0.096456
+v 0.346680 -0.235452 0.125236
+v 0.342160 -0.235452 0.154529
+v 0.326794 -0.235452 0.179874
+v 0.302921 -0.235452 0.197413
+v 0.274175 -0.235452 0.204476
+v 0.244933 -0.235452 0.199986
+v 0.219647 -0.235452 0.184629
+v 0.202166 -0.235452 0.160742
+v 0.195152 -0.235452 0.131961
+v 0.199672 -0.235452 0.102668
+v 0.270916 0.000014 0.128599
+v 0.270916 -0.499974 0.128599
+vt 0.672583 0.911831
+vt 0.657398 0.914965
+vt 0.657113 0.875229
+vt 0.312483 0.895796
+vt 0.312483 0.979124
+vt 0.291651 0.979124
+vt 0.291651 0.895796
+vt 0.270819 0.895796
+vt 0.270819 0.979124
+vt 0.249987 0.979124
+vt 0.249987 0.895796
+vt 0.229155 0.979124
+vt 0.229155 0.895796
+vt 0.208323 0.979124
+vt 0.208323 0.895796
+vt 0.187491 0.895796
+vt 0.187491 0.979124
+vt 0.166659 0.979124
+vt 0.166659 0.895796
+vt 0.145827 0.979124
+vt 0.145827 0.895796
+vt 0.124995 0.979124
+vt 0.124995 0.895796
+vt 0.104163 0.979124
+vt 0.104163 0.895796
+vt 0.083331 0.979124
+vt 0.083331 0.895796
+vt 0.062499 0.895796
+vt 0.062499 0.979124
+vt 0.041666 0.979124
+vt 0.041666 0.895796
+vt 0.020834 0.979124
+vt 0.491690 0.964916
+vt 0.457312 0.958176
+vt 0.491442 0.875131
+vt 0.333315 0.895796
+vt 0.333315 0.979124
+vt 0.354147 0.895796
+vt 0.354147 0.979124
+vt 0.604132 0.520819
+vt 0.604132 0.562483
+vt 0.562468 0.562483
+vt 0.562468 0.520819
+vt 0.520804 0.562483
+vt 0.520804 0.520819
+vt 0.479140 0.562483
+vt 0.479140 0.520819
+vt 0.437475 0.562483
+vt 0.437475 0.520819
+vt 0.395811 0.562483
+vt 0.395811 0.520819
+vt 0.354147 0.520819
+vt 0.354147 0.562483
+vt 0.312483 0.520819
+vt 0.312483 0.562483
+vt 0.270819 0.562483
+vt 0.270819 0.520819
+vt 0.229155 0.520819
+vt 0.229155 0.562483
+vt 0.187491 0.562483
+vt 0.187491 0.520819
+vt 0.145827 0.562483
+vt 0.145827 0.520819
+vt 0.104163 0.562483
+vt 0.104163 0.520819
+vt 0.062499 0.520819
+vt 0.062499 0.562483
+vt 0.020834 0.562483
+vt 0.645796 0.520819
+vt 0.645796 0.562483
+vt 0.687460 0.520819
+vt 0.687460 0.562483
+vt 0.604132 0.749972
+vt 0.562468 0.749972
+vt 0.520804 0.749972
+vt 0.479140 0.749972
+vt 0.437475 0.749972
+vt 0.395811 0.749972
+vt 0.354147 0.749972
+vt 0.312483 0.749972
+vt 0.270819 0.749972
+vt 0.229155 0.749972
+vt 0.187491 0.749972
+vt 0.145827 0.749972
+vt 0.104163 0.749972
+vt 0.062499 0.749972
+vt 0.020834 0.749972
+vt 0.645796 0.749972
+vt 0.687460 0.749972
+vt 0.312483 0.791636
+vt 0.291651 0.791636
+vt 0.270819 0.791636
+vt 0.249987 0.791636
+vt 0.229155 0.791636
+vt 0.208323 0.791636
+vt 0.187491 0.791636
+vt 0.166659 0.791636
+vt 0.145827 0.791636
+vt 0.124995 0.791636
+vt 0.104163 0.791636
+vt 0.083331 0.791636
+vt 0.062499 0.791636
+vt 0.041666 0.791636
+vt 0.020834 0.791636
+vt 0.333315 0.791636
+vt 0.354147 0.791636
+vt 0.604132 0.020850
+vt 0.604132 0.062514
+vt 0.562468 0.062514
+vt 0.562468 0.020850
+vt 0.520804 0.020850
+vt 0.520804 0.062514
+vt 0.479140 0.020850
+vt 0.479140 0.062514
+vt 0.437475 0.062514
+vt 0.437475 0.020850
+vt 0.395811 0.020850
+vt 0.395811 0.062514
+vt 0.354147 0.062514
+vt 0.354147 0.020850
+vt 0.312483 0.062514
+vt 0.312483 0.020850
+vt 0.270819 0.062514
+vt 0.270819 0.020850
+vt 0.229155 0.062514
+vt 0.229155 0.020850
+vt 0.187491 0.062514
+vt 0.187491 0.020850
+vt 0.145827 0.062514
+vt 0.145827 0.020850
+vt 0.104163 0.062514
+vt 0.104163 0.020850
+vt 0.062499 0.020850
+vt 0.062499 0.062514
+vt 0.020834 0.020850
+vt 0.645796 0.020850
+vt 0.645796 0.062514
+vt 0.687460 0.020850
+vt 0.687460 0.062514
+vt 0.562468 0.312499
+vt 0.520804 0.312499
+vt 0.479140 0.312499
+vt 0.437475 0.312499
+vt 0.395811 0.312499
+vt 0.354147 0.312499
+vt 0.312483 0.312499
+vt 0.270819 0.312499
+vt 0.229155 0.312499
+vt 0.187491 0.312499
+vt 0.145827 0.312499
+vt 0.104163 0.312499
+vt 0.062499 0.312499
+vt 0.020834 0.312499
+vt 0.645796 0.312499
+vt 0.604132 0.312499
+vt 0.687460 0.312499
+vt 0.020834 0.520819
+vt 0.020834 0.895796
+vt 0.020834 0.062514
+vt 0.642170 0.912049
+vt 0.629217 0.903528
+vt 0.620511 0.890698
+vt 0.617377 0.875513
+vt 0.620293 0.860285
+vt 0.628815 0.847332
+vt 0.641644 0.838627
+vt 0.656829 0.835493
+vt 0.672057 0.838408
+vt 0.685010 0.846930
+vt 0.693716 0.859760
+vt 0.696849 0.874944
+vt 0.693934 0.890172
+vt 0.685412 0.903125
+vt 0.428130 0.938794
+vt 0.408587 0.909719
+vt 0.401657 0.875379
+vt 0.408397 0.841001
+vt 0.427780 0.811819
+vt 0.456854 0.792276
+vt 0.491194 0.785346
+vt 0.525572 0.792086
+vt 0.554754 0.811468
+vt 0.574297 0.840543
+vt 0.581226 0.874883
+vt 0.574487 0.909261
+vt 0.555104 0.938443
+vt 0.526029 0.957987
+vt 0.657153 0.875231
+vt 0.270858 0.895799
+vt 0.270858 0.979130
+vt 0.208362 0.979130
+vt 0.208362 0.895799
+vt 0.145866 0.979130
+vt 0.145866 0.895799
+vt 0.083370 0.979130
+vt 0.083370 0.895799
+vt 0.020874 0.979130
+vt 0.457351 0.958181
+vt 0.491481 0.875133
+vt 0.333355 0.895799
+vt 0.333355 0.979130
+vt 0.354187 0.895799
+vt 0.354187 0.979130
+vt 0.604171 0.520809
+vt 0.604171 0.562474
+vt 0.479179 0.562474
+vt 0.479179 0.520809
+vt 0.395851 0.562474
+vt 0.395851 0.520809
+vt 0.354187 0.520809
+vt 0.354187 0.562474
+vt 0.270858 0.562474
+vt 0.270858 0.520809
+vt 0.145866 0.562474
+vt 0.145866 0.520809
+vt 0.020874 0.562474
+vt 0.604171 0.749969
+vt 0.479179 0.749969
+vt 0.395851 0.749969
+vt 0.354187 0.749969
+vt 0.270858 0.749969
+vt 0.145866 0.749969
+vt 0.020874 0.749969
+vt 0.270858 0.791635
+vt 0.208362 0.791635
+vt 0.145866 0.791635
+vt 0.083370 0.791635
+vt 0.020874 0.791635
+vt 0.333355 0.791635
+vt 0.354187 0.791635
+vt 0.604171 0.020822
+vt 0.604171 0.062487
+vt 0.562507 0.020822
+vt 0.520843 0.020822
+vt 0.479179 0.020822
+vt 0.479179 0.062487
+vt 0.437515 0.020822
+vt 0.395851 0.020822
+vt 0.395851 0.062487
+vt 0.354187 0.062487
+vt 0.354187 0.020822
+vt 0.312523 0.020822
+vt 0.270858 0.062487
+vt 0.270858 0.020822
+vt 0.229194 0.020822
+vt 0.187530 0.020822
+vt 0.145866 0.062487
+vt 0.145866 0.020822
+vt 0.104202 0.020822
+vt 0.062538 0.020822
+vt 0.020874 0.020822
+vt 0.645835 0.020822
+vt 0.687499 0.020822
+vt 0.479179 0.312481
+vt 0.395851 0.312481
+vt 0.354187 0.312481
+vt 0.270858 0.312481
+vt 0.145866 0.312481
+vt 0.020874 0.312481
+vt 0.604171 0.312481
+vt 0.020874 0.520809
+vt 0.020874 0.895799
+vt 0.020874 0.062487
+vt 0.642209 0.912053
+vt 0.629256 0.903531
+vt 0.620550 0.890701
+vt 0.628854 0.847334
+vt 0.641684 0.838628
+vt 0.656869 0.835494
+vt 0.693755 0.859761
+vt 0.696889 0.874947
+vt 0.693973 0.890175
+vt 0.685452 0.903129
+vt 0.428169 0.938798
+vt 0.581266 0.874886
+vt 0.526069 0.957992
+vn -0.550400 0.665800 -0.503700
+vn -0.701100 0.665800 -0.255200
+vn 0.000000 1.000000 0.000000
+vn -0.939000 0.039300 -0.341700
+vn -0.737100 0.039300 -0.674600
+vn -0.423100 0.039300 -0.905200
+vn -0.316000 0.665700 -0.676000
+vn -0.033000 0.665600 -0.745500
+vn -0.044200 0.039400 -0.998200
+vn 0.255200 0.665600 -0.701300
+vn 0.341700 0.039400 -0.939000
+vn 0.504500 0.665600 -0.549900
+vn 0.675500 0.039400 -0.736200
+vn 0.906000 0.039300 -0.421400
+vn 0.676600 0.665700 -0.314700
+vn 0.745400 0.665800 -0.032000
+vn 0.998300 0.039300 -0.042900
+vn 0.701100 0.665800 0.255200
+vn 0.939000 0.039300 0.341700
+vn 0.550400 0.665800 0.503700
+vn 0.737100 0.039300 0.674600
+vn 0.316000 0.665700 0.676000
+vn 0.423100 0.039300 0.905200
+vn 0.033000 0.665600 0.745500
+vn 0.044200 0.039400 0.998200
+vn -0.341700 0.039400 0.939000
+vn -0.255200 0.665600 0.701300
+vn -0.504500 0.665600 0.549900
+vn -0.675500 0.039400 0.736200
+vn -0.676600 0.665700 0.314700
+vn -0.296100 -0.949100 -0.107800
+vn -0.232400 -0.949100 -0.212600
+vn 0.000000 -1.000000 0.000000
+vn -0.998300 0.039300 0.042900
+vn -0.745400 0.665800 0.032000
+vn -0.906000 0.039300 0.421400
+vn -0.934400 0.105500 -0.340100
+vn -0.904200 0.272000 -0.329100
+vn -0.709900 0.272100 -0.649600
+vn -0.733600 0.105500 -0.671300
+vn -0.407500 0.272300 -0.871700
+vn -0.421100 0.105600 -0.900800
+vn -0.042600 0.272400 -0.961200
+vn -0.044000 0.105700 -0.993400
+vn 0.329100 0.272500 -0.904100
+vn 0.340100 0.105700 -0.934400
+vn 0.650500 0.272400 -0.708900
+vn 0.672300 0.105700 -0.732700
+vn 0.901600 0.105600 -0.419400
+vn 0.872400 0.272300 -0.405800
+vn 0.993500 0.105500 -0.042700
+vn 0.961400 0.272100 -0.041300
+vn 0.904200 0.272000 0.329100
+vn 0.934400 0.105500 0.340100
+vn 0.733600 0.105500 0.671300
+vn 0.709900 0.272100 0.649600
+vn 0.407500 0.272300 0.871700
+vn 0.421100 0.105600 0.900800
+vn 0.042600 0.272400 0.961200
+vn 0.044000 0.105700 0.993400
+vn -0.329100 0.272500 0.904100
+vn -0.340100 0.105700 0.934400
+vn -0.672300 0.105700 0.732700
+vn -0.650500 0.272400 0.708900
+vn -0.872400 0.272300 0.405800
+vn -0.993500 0.105500 0.042700
+vn -0.961400 0.272100 0.041300
+vn -0.901600 0.105600 0.419400
+vn -0.916400 0.221000 -0.333500
+vn -0.719500 0.221000 -0.658400
+vn -0.413000 0.221200 -0.883400
+vn -0.043200 0.221400 -0.974200
+vn 0.333500 0.221400 -0.916300
+vn 0.659300 0.221400 -0.718500
+vn 0.884200 0.221200 -0.411300
+vn 0.974300 0.221000 -0.041900
+vn 0.916400 0.221000 0.333500
+vn 0.719500 0.221000 0.658400
+vn 0.413000 0.221200 0.883400
+vn 0.043200 0.221400 0.974200
+vn -0.333500 0.221400 0.916300
+vn -0.659300 0.221400 0.718500
+vn -0.884200 0.221200 0.411300
+vn -0.974300 0.221000 0.041900
+vn -0.833500 -0.461700 -0.303400
+vn -0.654300 -0.461800 -0.598800
+vn -0.133400 -0.949100 -0.285200
+vn -0.375500 -0.461900 -0.803500
+vn -0.014000 -0.949200 -0.314400
+vn -0.039200 -0.462000 -0.886000
+vn 0.303300 -0.462100 -0.833300
+vn 0.107600 -0.949200 -0.295700
+vn 0.212800 -0.949200 -0.231900
+vn 0.599500 -0.462000 -0.653500
+vn 0.804100 -0.461900 -0.374100
+vn 0.285500 -0.949100 -0.132700
+vn 0.886100 -0.461800 -0.038100
+vn 0.314700 -0.949100 -0.013500
+vn 0.833500 -0.461700 0.303400
+vn 0.296100 -0.949100 0.107800
+vn 0.654300 -0.461800 0.598800
+vn 0.232400 -0.949100 0.212600
+vn 0.375500 -0.461900 0.803500
+vn 0.133400 -0.949100 0.285200
+vn 0.039200 -0.462000 0.886000
+vn 0.014000 -0.949200 0.314400
+vn -0.303300 -0.462100 0.833300
+vn -0.107600 -0.949200 0.295700
+vn -0.212800 -0.949200 0.231900
+vn -0.599500 -0.462000 0.653500
+vn -0.285500 -0.949100 0.132700
+vn -0.314700 -0.949100 0.013500
+vn -0.886100 -0.461800 0.038100
+vn -0.804100 -0.461900 0.374100
+vn -0.737700 0.000300 -0.675100
+vn -0.423400 0.000300 -0.905900
+vn -0.044300 0.000300 -0.999000
+vn 0.342000 0.000300 -0.939700
+vn 0.676000 0.000300 -0.736800
+vn 0.906700 0.000300 -0.421800
+vn 0.999100 0.000300 -0.042900
+vn 0.939700 0.000300 0.342000
+vn 0.737700 0.000300 0.675100
+vn 0.423400 0.000300 0.905900
+vn 0.044300 0.000300 0.999000
+vn -0.342000 0.000300 0.939700
+vn -0.676000 0.000300 0.736800
+vn -0.906700 0.000300 0.421800
+vn -0.999100 0.000300 0.042900
+vn -0.939700 0.000300 -0.342000
+vn 0.341700 0.039400 -0.938900
+g bottle.002_Cylinder.001_brown
+s 1
+f 264/1/1 262/2/2 389/3/3
+f 325/4/4 262/5/2 264/6/1
+f 326/7/5 264/6/1 327/8/6
+f 327/8/6 266/9/7 268/10/8
+f 328/11/9 268/10/8 270/12/10
+f 329/13/11 270/12/10 272/14/12
+f 330/15/13 272/14/12 331/16/14
+f 331/16/14 274/17/15 276/18/16
+f 332/19/17 276/18/16 278/20/18
+f 333/21/19 278/20/18 280/22/20
+f 334/23/21 280/22/20 282/24/22
+f 335/25/23 282/24/22 284/26/24
+f 336/27/25 284/26/24 337/28/26
+f 337/28/26 286/29/27 288/30/28
+f 338/31/29 288/30/28 290/32/30
+f 261/33/31 263/34/32 390/35/33
+f 340/36/34 292/37/35 262/5/2
+f 339/38/36 290/39/30 292/37/35
+f 388/40/37 293/41/38 294/42/39
+f 373/43/40 294/42/39 295/44/41
+f 374/45/42 295/44/41 296/46/43
+f 375/47/44 296/46/43 297/48/45
+f 376/49/46 297/48/45 298/50/47
+f 377/51/48 298/50/47 378/52/49
+f 378/52/49 299/53/50 379/54/51
+f 379/54/51 300/55/52 301/56/53
+f 380/57/54 301/56/53 381/58/55
+f 381/58/55 302/59/56 303/60/57
+f 382/61/58 303/60/57 304/62/59
+f 383/63/60 304/62/59 305/64/61
+f 384/65/62 305/64/61 385/66/63
+f 385/66/63 306/67/64 307/68/65
+f 387/69/66 308/70/67 388/40/37
+f 386/71/68 307/72/65 308/70/67
+f 293/41/38 309/73/69 294/42/39
+f 294/42/39 310/74/70 295/44/41
+f 295/44/41 311/75/71 296/46/43
+f 296/46/43 312/76/72 313/77/73
+f 297/48/45 313/77/73 314/78/74
+f 298/50/47 314/78/74 299/53/50
+f 299/53/50 315/79/75 316/80/76
+f 300/55/52 316/80/76 317/81/77
+f 301/56/53 317/81/77 318/82/78
+f 302/59/56 318/82/78 319/83/79
+f 303/60/57 319/83/79 304/62/59
+f 304/62/59 320/84/80 305/64/61
+f 305/64/61 321/85/81 306/67/64
+f 306/67/64 322/86/82 323/87/83
+f 308/70/67 324/88/84 309/73/69
+f 307/72/65 323/89/83 324/88/84
+f 309/90/69 325/4/4 326/7/5
+f 310/91/70 326/7/5 327/8/6
+f 311/92/71 327/8/6 328/11/9
+f 312/93/72 328/11/9 329/13/11
+f 313/94/73 329/13/11 330/15/13
+f 314/95/74 330/15/13 331/16/14
+f 315/96/75 331/16/14 332/19/17
+f 316/97/76 332/19/17 333/21/19
+f 317/98/77 333/21/19 334/23/21
+f 318/99/78 334/23/21 335/25/23
+f 319/100/79 335/25/23 336/27/25
+f 320/101/80 336/27/25 337/28/26
+f 321/102/81 337/28/26 338/31/29
+f 322/103/82 338/31/29 323/104/83
+f 324/105/84 340/36/34 325/4/4
+f 323/106/83 339/38/36 340/36/34
+f 261/107/31 356/108/85 341/109/86
+f 263/110/32 341/109/86 265/111/87
+f 265/111/87 342/112/88 267/113/89
+f 267/113/89 343/114/90 344/115/91
+f 269/116/92 344/115/91 271/117/93
+f 271/117/93 345/118/94 346/119/95
+f 273/120/96 346/119/95 347/121/97
+f 275/122/98 347/121/97 348/123/99
+f 277/124/100 348/123/99 349/125/101
+f 279/126/102 349/125/101 350/127/103
+f 281/128/104 350/127/103 351/129/105
+f 283/130/106 351/129/105 352/131/107
+f 285/132/108 352/131/107 287/133/109
+f 287/133/109 353/134/110 289/135/111
+f 291/136/112 355/137/113 261/107/31
+f 289/138/111 354/139/114 291/136/112
+f 341/109/86 357/140/115 342/112/88
+f 342/112/88 358/141/116 343/114/90
+f 343/114/90 359/142/117 360/143/118
+f 344/115/91 360/143/118 361/144/119
+f 345/118/94 361/144/119 362/145/120
+f 346/119/95 362/145/120 363/146/121
+f 347/121/97 363/146/121 364/147/122
+f 348/123/99 364/147/122 365/148/123
+f 349/125/101 365/148/123 366/149/124
+f 350/127/103 366/149/124 367/150/125
+f 351/129/105 367/150/125 368/151/126
+f 352/131/107 368/151/126 369/152/127
+f 353/134/110 369/152/127 370/153/128
+f 355/137/113 371/154/129 372/155/130
+f 354/139/114 370/156/128 371/154/129
+f 372/155/130 388/40/37 373/43/40
+f 357/140/115 373/43/40 358/141/116
+f 358/141/116 374/45/42 375/47/44
+f 359/142/117 375/47/44 376/49/46
+f 360/143/118 376/49/46 361/144/119
+f 361/144/119 377/51/48 378/52/49
+f 362/145/120 378/52/49 379/54/51
+f 363/146/121 379/54/51 364/147/122
+f 364/147/122 380/57/54 381/58/55
+f 365/148/123 381/58/55 382/61/58
+f 366/149/124 382/61/58 367/150/125
+f 367/150/125 383/63/60 384/65/62
+f 368/151/126 384/65/62 385/66/63
+f 369/152/127 385/66/63 370/153/128
+f 371/154/129 387/69/66 388/40/37
+f 370/156/128 386/71/68 387/69/66
+f 356/108/85 372/155/130 341/109/86
+f 320/84/80 321/85/81 305/64/61
+f 272/14/12 274/17/15 331/16/14
+f 385/66/63 386/157/68 370/153/128
+f 314/78/74 315/79/75 299/53/50
+f 299/53/50 300/55/52 379/54/51
+f 344/115/91 345/118/94 271/117/93
+f 376/49/46 377/51/48 361/144/119
+f 326/7/5 325/4/4 264/6/1
+f 328/11/9 327/8/6 268/10/8
+f 329/13/11 328/11/9 270/12/10
+f 330/15/13 329/13/11 272/14/12
+f 332/19/17 331/16/14 276/18/16
+f 333/21/19 332/19/17 278/20/18
+f 334/23/21 333/21/19 280/22/20
+f 335/25/23 334/23/21 282/24/22
+f 336/27/25 335/25/23 284/26/24
+f 338/31/29 337/28/26 288/30/28
+f 339/158/36 338/31/29 290/32/30
+f 325/4/4 340/36/34 262/5/2
+f 340/36/34 339/38/36 292/37/35
+f 373/43/40 388/40/37 294/42/39
+f 374/45/42 373/43/40 295/44/41
+f 375/47/44 374/45/42 296/46/43
+f 376/49/46 375/47/44 297/48/45
+f 377/51/48 376/49/46 298/50/47
+f 298/50/47 299/53/50 378/52/49
+f 319/83/79 320/84/80 304/62/59
+f 380/57/54 379/54/51 301/56/53
+f 358/141/116 359/142/117 343/114/90
+f 382/61/58 381/58/55 303/60/57
+f 383/63/60 382/61/58 304/62/59
+f 384/65/62 383/63/60 305/64/61
+f 386/157/68 385/66/63 307/68/65
+f 387/69/66 386/71/68 308/70/67
+f 338/31/29 339/158/36 323/104/83
+f 297/48/45 296/46/43 313/77/73
+f 298/50/47 297/48/45 314/78/74
+f 300/55/52 299/53/50 316/80/76
+f 301/56/53 300/55/52 317/81/77
+f 302/59/56 301/56/53 318/82/78
+f 303/60/57 302/59/56 319/83/79
+f 307/68/65 306/67/64 323/87/83
+f 293/41/38 308/70/67 309/73/69
+f 308/70/67 307/72/65 324/88/84
+f 310/91/70 309/90/69 326/7/5
+f 311/92/71 310/91/70 327/8/6
+f 312/93/72 311/92/71 328/11/9
+f 313/94/73 312/93/72 329/13/11
+f 314/95/74 313/94/73 330/15/13
+f 315/96/75 314/95/74 331/16/14
+f 316/97/76 315/96/75 332/19/17
+f 317/98/77 316/97/76 333/21/19
+f 318/99/78 317/98/77 334/23/21
+f 319/100/79 318/99/78 335/25/23
+f 320/101/80 319/100/79 336/27/25
+f 321/102/81 320/101/80 337/28/26
+f 322/103/82 321/102/81 338/31/29
+f 309/90/69 324/105/84 325/4/4
+f 324/105/84 323/106/83 340/36/34
+f 263/110/32 261/107/31 341/109/86
+f 269/116/92 267/113/89 344/115/91
+f 273/120/96 271/117/93 346/119/95
+f 275/122/98 273/120/96 347/121/97
+f 277/124/100 275/122/98 348/123/99
+f 279/126/102 277/124/100 349/125/101
+f 281/128/104 279/126/102 350/127/103
+f 283/130/106 281/128/104 351/129/105
+f 285/132/108 283/130/106 352/131/107
+f 352/131/107 353/134/110 287/133/109
+f 353/134/110 354/159/114 289/135/111
+f 355/137/113 356/108/85 261/107/31
+f 354/139/114 355/137/113 291/136/112
+f 344/115/91 343/114/90 360/143/118
+f 345/118/94 344/115/91 361/144/119
+f 346/119/95 345/118/94 362/145/120
+f 347/121/97 346/119/95 363/146/121
+f 348/123/99 347/121/97 364/147/122
+f 349/125/101 348/123/99 365/148/123
+f 350/127/103 349/125/101 366/149/124
+f 351/129/105 350/127/103 367/150/125
+f 352/131/107 351/129/105 368/151/126
+f 353/134/110 352/131/107 369/152/127
+f 354/159/114 353/134/110 370/153/128
+f 356/108/85 355/137/113 372/155/130
+f 355/137/113 354/139/114 371/154/129
+f 357/140/115 372/155/130 373/43/40
+f 359/142/117 358/141/116 375/47/44
+f 360/143/118 359/142/117 376/49/46
+f 362/145/120 361/144/119 378/52/49
+f 363/146/121 362/145/120 379/54/51
+f 365/148/123 364/147/122 381/58/55
+f 366/149/124 365/148/123 382/61/58
+f 372/155/130 357/140/115 341/109/86
+f 368/151/126 367/150/125 384/65/62
+f 369/152/127 368/151/126 385/66/63
+f 372/155/130 371/154/129 388/40/37
+f 371/154/129 370/156/128 387/69/66
+f 264/6/1 266/9/7 327/8/6
+f 310/74/70 311/75/71 295/44/41
+f 341/109/86 342/112/88 265/111/87
+f 308/70/67 293/41/38 388/40/37
+f 311/75/71 312/76/72 296/46/43
+f 379/54/51 380/57/54 364/147/122
+f 357/140/115 358/141/116 342/112/88
+f 309/73/69 310/74/70 294/42/39
+f 321/85/81 322/86/82 306/67/64
+f 342/112/88 343/114/90 267/113/89
+f 373/43/40 374/45/42 358/141/116
+f 382/61/58 383/63/60 367/150/125
+f 284/26/24 286/29/27 337/28/26
+f 301/56/53 302/59/56 381/58/55
+f 305/64/61 306/67/64 385/66/63
+f 262/2/2 292/160/35 389/3/3
+f 292/160/35 290/161/30 389/3/3
+f 290/161/30 288/162/28 389/3/3
+f 288/162/28 286/163/27 389/3/3
+f 286/163/27 284/164/24 389/3/3
+f 284/164/24 282/165/22 389/3/3
+f 282/165/22 280/166/20 389/3/3
+f 280/166/20 278/167/18 389/3/3
+f 278/167/18 276/168/16 389/3/3
+f 276/168/16 274/169/15 389/3/3
+f 274/169/15 272/170/12 389/3/3
+f 272/170/12 270/171/10 389/3/3
+f 270/171/10 268/172/8 389/3/3
+f 268/172/8 266/173/7 389/3/3
+f 266/173/7 264/1/1 389/3/3
+f 263/34/32 265/174/87 390/35/33
+f 265/174/87 267/175/89 390/35/33
+f 267/175/89 269/176/92 390/35/33
+f 269/176/92 271/177/93 390/35/33
+f 271/177/93 273/178/96 390/35/33
+f 273/178/96 275/179/98 390/35/33
+f 275/179/98 277/180/100 390/35/33
+f 277/180/100 279/181/102 390/35/33
+f 279/181/102 281/182/104 390/35/33
+f 281/182/104 283/183/106 390/35/33
+f 283/183/106 285/184/108 390/35/33
+f 285/184/108 287/185/109 390/35/33
+f 287/185/109 289/186/111 390/35/33
+f 289/186/111 291/187/112 390/35/33
+f 291/187/112 261/33/31 390/35/33
+f 394/1/1 392/2/2 519/3/3
+f 455/4/4 392/5/2 394/6/1
+f 456/7/5 394/6/1 457/8/6
+f 457/8/6 396/9/7 398/10/8
+f 458/11/9 398/10/8 400/12/10
+f 459/13/11 400/12/10 402/14/12
+f 460/15/13 402/14/12 461/16/14
+f 461/16/14 404/17/15 406/18/16
+f 462/19/17 406/18/16 408/20/18
+f 463/21/19 408/20/18 410/22/20
+f 464/23/21 410/22/20 412/24/22
+f 465/25/23 412/24/22 414/26/24
+f 466/27/25 414/26/24 467/28/26
+f 467/28/26 416/29/27 418/30/28
+f 468/31/29 418/30/28 420/32/30
+f 391/33/31 393/34/32 520/35/33
+f 470/36/34 422/37/35 392/5/2
+f 469/38/36 420/39/30 422/37/35
+f 518/40/37 423/41/38 424/42/39
+f 503/43/40 424/42/39 425/44/41
+f 504/45/42 425/44/41 426/46/43
+f 505/47/44 426/46/43 427/48/45
+f 506/49/46 427/48/45 428/50/47
+f 507/51/48 428/50/47 508/52/49
+f 508/52/49 429/53/50 509/54/51
+f 509/54/51 430/55/52 431/56/53
+f 510/57/54 431/56/53 511/58/55
+f 511/58/55 432/59/56 433/60/57
+f 512/61/58 433/60/57 434/62/59
+f 513/63/60 434/62/59 435/64/61
+f 514/65/62 435/64/61 515/66/63
+f 515/66/63 436/67/64 437/68/65
+f 517/69/66 438/70/67 518/40/37
+f 516/71/68 437/72/65 438/70/67
+f 423/41/38 439/73/69 424/42/39
+f 424/42/39 440/74/70 425/44/41
+f 425/44/41 441/75/71 426/46/43
+f 426/46/43 442/76/72 443/77/73
+f 427/48/45 443/77/73 444/78/74
+f 428/50/47 444/78/74 429/53/50
+f 429/53/50 445/79/75 446/80/76
+f 430/55/52 446/80/76 447/81/77
+f 431/56/53 447/81/77 448/82/78
+f 432/59/56 448/82/78 449/83/79
+f 433/60/57 449/83/79 434/62/59
+f 434/62/59 450/84/80 435/64/61
+f 435/64/61 451/85/81 436/67/64
+f 436/67/64 452/86/82 453/87/83
+f 438/70/67 454/88/84 439/73/69
+f 437/72/65 453/89/83 454/88/84
+f 439/90/69 455/4/4 456/7/5
+f 440/91/70 456/7/5 457/8/6
+f 441/92/71 457/8/6 458/11/9
+f 442/93/72 458/11/9 459/13/11
+f 443/94/73 459/13/11 460/15/13
+f 444/95/74 460/15/13 461/16/14
+f 445/96/75 461/16/14 462/19/17
+f 446/97/76 462/19/17 463/21/19
+f 447/98/77 463/21/19 464/23/21
+f 448/99/78 464/23/21 465/25/23
+f 449/100/79 465/25/23 466/27/25
+f 450/101/80 466/27/25 467/28/26
+f 451/102/81 467/28/26 468/31/29
+f 452/103/82 468/31/29 453/104/83
+f 454/105/84 470/36/34 455/4/4
+f 453/106/83 469/38/36 470/36/34
+f 391/107/31 486/108/85 471/109/86
+f 393/110/32 471/109/86 395/111/87
+f 395/111/87 472/112/88 397/113/89
+f 397/113/89 473/114/90 474/115/91
+f 399/116/92 474/115/91 401/117/93
+f 401/117/93 475/118/94 476/119/95
+f 403/120/96 476/119/95 477/121/97
+f 405/122/98 477/121/97 478/123/99
+f 407/124/100 478/123/99 479/125/101
+f 409/126/102 479/125/101 480/127/103
+f 411/128/104 480/127/103 481/129/105
+f 413/130/106 481/129/105 482/131/107
+f 415/132/108 482/131/107 417/133/109
+f 417/133/109 483/134/110 419/135/111
+f 421/136/112 485/137/113 391/107/31
+f 419/138/111 484/139/114 421/136/112
+f 471/109/86 487/140/115 472/112/88
+f 472/112/88 488/141/116 473/114/90
+f 473/114/90 489/142/117 490/143/118
+f 474/115/91 490/143/118 491/144/119
+f 475/118/94 491/144/119 492/145/120
+f 476/119/95 492/145/120 493/146/121
+f 477/121/97 493/146/121 494/147/122
+f 478/123/99 494/147/122 495/148/123
+f 479/125/101 495/148/123 496/149/124
+f 480/127/103 496/149/124 497/150/125
+f 481/129/105 497/150/125 498/151/126
+f 482/131/107 498/151/126 499/152/127
+f 483/134/110 499/152/127 500/153/128
+f 485/137/113 501/154/129 502/155/130
+f 484/139/114 500/156/128 501/154/129
+f 502/155/130 518/40/37 503/43/40
+f 487/140/115 503/43/40 488/141/116
+f 488/141/116 504/45/42 505/47/44
+f 489/142/117 505/47/44 506/49/46
+f 490/143/118 506/49/46 491/144/119
+f 491/144/119 507/51/48 508/52/49
+f 492/145/120 508/52/49 509/54/51
+f 493/146/121 509/54/51 494/147/122
+f 494/147/122 510/57/54 511/58/55
+f 495/148/123 511/58/55 512/61/58
+f 496/149/124 512/61/58 497/150/125
+f 497/150/125 513/63/60 514/65/62
+f 498/151/126 514/65/62 515/66/63
+f 499/152/127 515/66/63 500/153/128
+f 501/154/129 517/69/66 518/40/37
+f 500/156/128 516/71/68 517/69/66
+f 486/108/85 502/155/130 471/109/86
+f 450/84/80 451/85/81 435/64/61
+f 402/14/12 404/17/15 461/16/14
+f 515/66/63 516/157/68 500/153/128
+f 444/78/74 445/79/75 429/53/50
+f 429/53/50 430/55/52 509/54/51
+f 474/115/91 475/118/94 401/117/93
+f 506/49/46 507/51/48 491/144/119
+f 456/7/5 455/4/4 394/6/1
+f 458/11/9 457/8/6 398/10/8
+f 459/13/11 458/11/9 400/12/10
+f 460/15/13 459/13/11 402/14/12
+f 462/19/17 461/16/14 406/18/16
+f 463/21/19 462/19/17 408/20/18
+f 464/23/21 463/21/19 410/22/20
+f 465/25/23 464/23/21 412/24/22
+f 466/27/25 465/25/23 414/26/24
+f 468/31/29 467/28/26 418/30/28
+f 469/158/36 468/31/29 420/32/30
+f 455/4/4 470/36/34 392/5/2
+f 470/36/34 469/38/36 422/37/35
+f 503/43/40 518/40/37 424/42/39
+f 504/45/42 503/43/40 425/44/41
+f 505/47/44 504/45/42 426/46/43
+f 506/49/46 505/47/44 427/48/45
+f 507/51/48 506/49/46 428/50/47
+f 428/50/47 429/53/50 508/52/49
+f 449/83/79 450/84/80 434/62/59
+f 510/57/54 509/54/51 431/56/53
+f 488/141/116 489/142/117 473/114/90
+f 512/61/58 511/58/55 433/60/57
+f 513/63/60 512/61/58 434/62/59
+f 514/65/62 513/63/60 435/64/61
+f 516/157/68 515/66/63 437/68/65
+f 517/69/66 516/71/68 438/70/67
+f 468/31/29 469/158/36 453/104/83
+f 427/48/45 426/46/43 443/77/73
+f 428/50/47 427/48/45 444/78/74
+f 430/55/52 429/53/50 446/80/76
+f 431/56/53 430/55/52 447/81/77
+f 432/59/56 431/56/53 448/82/78
+f 433/60/57 432/59/56 449/83/79
+f 437/68/65 436/67/64 453/87/83
+f 423/41/38 438/70/67 439/73/69
+f 438/70/67 437/72/65 454/88/84
+f 440/91/70 439/90/69 456/7/5
+f 441/92/71 440/91/70 457/8/6
+f 442/93/72 441/92/71 458/11/9
+f 443/94/73 442/93/72 459/13/11
+f 444/95/74 443/94/73 460/15/13
+f 445/96/75 444/95/74 461/16/14
+f 446/97/76 445/96/75 462/19/17
+f 447/98/77 446/97/76 463/21/19
+f 448/99/78 447/98/77 464/23/21
+f 449/100/79 448/99/78 465/25/23
+f 450/101/80 449/100/79 466/27/25
+f 451/102/81 450/101/80 467/28/26
+f 452/103/82 451/102/81 468/31/29
+f 439/90/69 454/105/84 455/4/4
+f 454/105/84 453/106/83 470/36/34
+f 393/110/32 391/107/31 471/109/86
+f 399/116/92 397/113/89 474/115/91
+f 403/120/96 401/117/93 476/119/95
+f 405/122/98 403/120/96 477/121/97
+f 407/124/100 405/122/98 478/123/99
+f 409/126/102 407/124/100 479/125/101
+f 411/128/104 409/126/102 480/127/103
+f 413/130/106 411/128/104 481/129/105
+f 415/132/108 413/130/106 482/131/107
+f 482/131/107 483/134/110 417/133/109
+f 483/134/110 484/159/114 419/135/111
+f 485/137/113 486/108/85 391/107/31
+f 484/139/114 485/137/113 421/136/112
+f 474/115/91 473/114/90 490/143/118
+f 475/118/94 474/115/91 491/144/119
+f 476/119/95 475/118/94 492/145/120
+f 477/121/97 476/119/95 493/146/121
+f 478/123/99 477/121/97 494/147/122
+f 479/125/101 478/123/99 495/148/123
+f 480/127/103 479/125/101 496/149/124
+f 481/129/105 480/127/103 497/150/125
+f 482/131/107 481/129/105 498/151/126
+f 483/134/110 482/131/107 499/152/127
+f 484/159/114 483/134/110 500/153/128
+f 486/108/85 485/137/113 502/155/130
+f 485/137/113 484/139/114 501/154/129
+f 487/140/115 502/155/130 503/43/40
+f 489/142/117 488/141/116 505/47/44
+f 490/143/118 489/142/117 506/49/46
+f 492/145/120 491/144/119 508/52/49
+f 493/146/121 492/145/120 509/54/51
+f 495/148/123 494/147/122 511/58/55
+f 496/149/124 495/148/123 512/61/58
+f 502/155/130 487/140/115 471/109/86
+f 498/151/126 497/150/125 514/65/62
+f 499/152/127 498/151/126 515/66/63
+f 502/155/130 501/154/129 518/40/37
+f 501/154/129 500/156/128 517/69/66
+f 394/6/1 396/9/7 457/8/6
+f 440/74/70 441/75/71 425/44/41
+f 471/109/86 472/112/88 395/111/87
+f 438/70/67 423/41/38 518/40/37
+f 441/75/71 442/76/72 426/46/43
+f 509/54/51 510/57/54 494/147/122
+f 487/140/115 488/141/116 472/112/88
+f 439/73/69 440/74/70 424/42/39
+f 451/85/81 452/86/82 436/67/64
+f 472/112/88 473/114/90 397/113/89
+f 503/43/40 504/45/42 488/141/116
+f 512/61/58 513/63/60 497/150/125
+f 414/26/24 416/29/27 467/28/26
+f 431/56/53 432/59/56 511/58/55
+f 435/64/61 436/67/64 515/66/63
+f 392/2/2 422/160/35 519/3/3
+f 422/160/35 420/161/30 519/3/3
+f 420/161/30 418/162/28 519/3/3
+f 418/162/28 416/163/27 519/3/3
+f 416/163/27 414/164/24 519/3/3
+f 414/164/24 412/165/22 519/3/3
+f 412/165/22 410/166/20 519/3/3
+f 410/166/20 408/167/18 519/3/3
+f 408/167/18 406/168/16 519/3/3
+f 406/168/16 404/169/15 519/3/3
+f 404/169/15 402/170/12 519/3/3
+f 402/170/12 400/171/10 519/3/3
+f 400/171/10 398/172/8 519/3/3
+f 398/172/8 396/173/7 519/3/3
+f 396/173/7 394/1/1 519/3/3
+f 393/34/32 395/174/87 520/35/33
+f 395/174/87 397/175/89 520/35/33
+f 397/175/89 399/176/92 520/35/33
+f 399/176/92 401/177/93 520/35/33
+f 401/177/93 403/178/96 520/35/33
+f 403/178/96 405/179/98 520/35/33
+f 405/179/98 407/180/100 520/35/33
+f 407/180/100 409/181/102 520/35/33
+f 409/181/102 411/182/104 520/35/33
+f 411/182/104 413/183/106 520/35/33
+f 413/183/106 415/184/108 520/35/33
+f 415/184/108 417/185/109 520/35/33
+f 417/185/109 419/186/111 520/35/33
+f 419/186/111 421/187/112 520/35/33
+f 421/187/112 391/33/31 520/35/33
+g bottle.002_Cylinder.001_green
+f 4/1/1 2/2/2 129/188/3
+f 65/4/4 2/5/2 4/6/1
+f 66/7/5 4/6/1 67/189/6
+f 67/189/6 6/190/7 8/10/8
+f 68/11/9 8/10/8 10/12/10
+f 69/13/131 10/12/10 12/191/12
+f 70/192/13 12/191/12 71/16/14
+f 71/16/14 14/17/15 16/18/16
+f 72/19/17 16/18/16 18/193/18
+f 73/194/19 18/193/18 20/22/20
+f 74/23/21 20/22/20 22/24/22
+f 75/25/23 22/24/22 24/195/24
+f 76/196/25 24/195/24 77/28/26
+f 77/28/26 26/29/27 28/30/28
+f 78/31/29 28/30/28 30/197/30
+f 1/33/31 3/198/32 130/199/33
+f 80/200/34 32/201/35 2/5/2
+f 79/202/36 30/203/30 32/201/35
+f 128/204/37 33/205/38 34/42/39
+f 113/43/40 34/42/39 35/44/41
+f 114/45/42 35/44/41 36/206/43
+f 115/207/44 36/206/43 37/48/45
+f 116/49/46 37/48/45 38/208/47
+f 117/209/48 38/208/47 118/210/49
+f 118/210/49 39/211/50 119/54/51
+f 119/54/51 40/55/52 41/212/53
+f 120/213/54 41/212/53 121/58/55
+f 121/58/55 42/59/56 43/60/57
+f 122/61/58 43/60/57 44/214/59
+f 123/215/60 44/214/59 45/64/61
+f 124/65/62 45/64/61 125/66/63
+f 125/66/63 46/67/64 47/216/65
+f 127/69/66 48/70/67 128/204/37
+f 126/71/68 47/72/65 48/70/67
+f 33/205/38 49/217/69 34/42/39
+f 34/42/39 50/74/70 35/44/41
+f 35/44/41 51/75/71 36/206/43
+f 36/206/43 52/218/72 53/77/73
+f 37/48/45 53/77/73 54/219/74
+f 38/208/47 54/219/74 39/211/50
+f 39/211/50 55/220/75 56/80/76
+f 40/55/52 56/80/76 57/221/77
+f 41/212/53 57/221/77 58/82/78
+f 42/59/56 58/82/78 59/83/79
+f 43/60/57 59/83/79 44/214/59
+f 44/214/59 60/222/80 45/64/61
+f 45/64/61 61/85/81 46/67/64
+f 46/67/64 62/86/82 63/223/83
+f 48/70/67 64/88/84 49/217/69
+f 47/72/65 63/89/83 64/88/84
+f 49/90/69 65/4/4 66/7/5
+f 50/91/70 66/7/5 67/189/6
+f 51/224/71 67/189/6 68/11/9
+f 52/93/72 68/11/9 69/13/131
+f 53/94/73 69/13/131 70/192/13
+f 54/225/74 70/192/13 71/16/14
+f 55/96/75 71/16/14 72/19/17
+f 56/97/76 72/19/17 73/194/19
+f 57/226/77 73/194/19 74/23/21
+f 58/99/78 74/23/21 75/25/23
+f 59/100/79 75/25/23 76/196/25
+f 60/227/80 76/196/25 77/28/26
+f 61/102/81 77/28/26 78/31/29
+f 62/103/82 78/31/29 63/228/83
+f 64/229/84 80/200/34 65/4/4
+f 63/230/83 79/202/36 80/200/34
+f 1/231/31 96/232/85 81/109/86
+f 3/233/32 81/109/86 5/234/87
+f 5/234/87 82/112/88 7/235/89
+f 7/235/89 83/236/90 84/115/91
+f 9/237/92 84/115/91 11/238/93
+f 11/238/93 85/239/94 86/240/95
+f 13/241/96 86/240/95 87/121/97
+f 15/242/98 87/121/97 88/243/99
+f 17/244/100 88/243/99 89/125/101
+f 19/245/102 89/125/101 90/127/103
+f 21/246/104 90/127/103 91/247/105
+f 23/248/106 91/247/105 92/131/107
+f 25/249/108 92/131/107 27/250/109
+f 27/250/109 93/134/110 29/251/111
+f 31/252/112 95/137/113 1/231/31
+f 29/253/111 94/139/114 31/252/112
+f 81/109/86 97/140/115 82/112/88
+f 82/112/88 98/141/116 83/236/90
+f 83/236/90 99/254/117 100/143/118
+f 84/115/91 100/143/118 101/255/119
+f 85/239/94 101/255/119 102/256/120
+f 86/240/95 102/256/120 103/146/121
+f 87/121/97 103/146/121 104/257/122
+f 88/243/99 104/257/122 105/148/123
+f 89/125/101 105/148/123 106/149/124
+f 90/127/103 106/149/124 107/258/125
+f 91/247/105 107/258/125 108/151/126
+f 92/131/107 108/151/126 109/152/127
+f 93/134/110 109/152/127 110/259/128
+f 95/137/113 111/154/129 112/260/130
+f 94/139/114 110/156/128 111/154/129
+f 112/260/130 128/204/37 113/43/40
+f 97/140/115 113/43/40 98/141/116
+f 98/141/116 114/45/42 115/207/44
+f 99/254/117 115/207/44 116/49/46
+f 100/143/118 116/49/46 101/255/119
+f 101/255/119 117/209/48 118/210/49
+f 102/256/120 118/210/49 119/54/51
+f 103/146/121 119/54/51 104/257/122
+f 104/257/122 120/213/54 121/58/55
+f 105/148/123 121/58/55 122/61/58
+f 106/149/124 122/61/58 107/258/125
+f 107/258/125 123/215/60 124/65/62
+f 108/151/126 124/65/62 125/66/63
+f 109/152/127 125/66/63 110/259/128
+f 111/154/129 127/69/66 128/204/37
+f 110/156/128 126/71/68 127/69/66
+f 96/232/85 112/260/130 81/109/86
+f 60/222/80 61/85/81 45/64/61
+f 12/191/12 14/17/15 71/16/14
+f 125/66/63 126/261/68 110/259/128
+f 54/219/74 55/220/75 39/211/50
+f 39/211/50 40/55/52 119/54/51
+f 84/115/91 85/239/94 11/238/93
+f 116/49/46 117/209/48 101/255/119
+f 66/7/5 65/4/4 4/6/1
+f 68/11/9 67/189/6 8/10/8
+f 69/13/131 68/11/9 10/12/10
+f 70/192/13 69/13/131 12/191/12
+f 72/19/17 71/16/14 16/18/16
+f 73/194/19 72/19/17 18/193/18
+f 74/23/21 73/194/19 20/22/20
+f 75/25/23 74/23/21 22/24/22
+f 76/196/25 75/25/23 24/195/24
+f 78/31/29 77/28/26 28/30/28
+f 79/262/36 78/31/29 30/197/30
+f 65/4/4 80/200/34 2/5/2
+f 80/200/34 79/202/36 32/201/35
+f 113/43/40 128/204/37 34/42/39
+f 114/45/42 113/43/40 35/44/41
+f 115/207/44 114/45/42 36/206/43
+f 116/49/46 115/207/44 37/48/45
+f 117/209/48 116/49/46 38/208/47
+f 38/208/47 39/211/50 118/210/49
+f 59/83/79 60/222/80 44/214/59
+f 120/213/54 119/54/51 41/212/53
+f 98/141/116 99/254/117 83/236/90
+f 122/61/58 121/58/55 43/60/57
+f 123/215/60 122/61/58 44/214/59
+f 124/65/62 123/215/60 45/64/61
+f 126/261/68 125/66/63 47/216/65
+f 127/69/66 126/71/68 48/70/67
+f 78/31/29 79/262/36 63/228/83
+f 37/48/45 36/206/43 53/77/73
+f 38/208/47 37/48/45 54/219/74
+f 40/55/52 39/211/50 56/80/76
+f 41/212/53 40/55/52 57/221/77
+f 42/59/56 41/212/53 58/82/78
+f 43/60/57 42/59/56 59/83/79
+f 47/216/65 46/67/64 63/223/83
+f 33/205/38 48/70/67 49/217/69
+f 48/70/67 47/72/65 64/88/84
+f 50/91/70 49/90/69 66/7/5
+f 51/224/71 50/91/70 67/189/6
+f 52/93/72 51/224/71 68/11/9
+f 53/94/73 52/93/72 69/13/131
+f 54/225/74 53/94/73 70/192/13
+f 55/96/75 54/225/74 71/16/14
+f 56/97/76 55/96/75 72/19/17
+f 57/226/77 56/97/76 73/194/19
+f 58/99/78 57/226/77 74/23/21
+f 59/100/79 58/99/78 75/25/23
+f 60/227/80 59/100/79 76/196/25
+f 61/102/81 60/227/80 77/28/26
+f 62/103/82 61/102/81 78/31/29
+f 49/90/69 64/229/84 65/4/4
+f 64/229/84 63/230/83 80/200/34
+f 3/233/32 1/231/31 81/109/86
+f 9/237/92 7/235/89 84/115/91
+f 13/241/96 11/238/93 86/240/95
+f 15/242/98 13/241/96 87/121/97
+f 17/244/100 15/242/98 88/243/99
+f 19/245/102 17/244/100 89/125/101
+f 21/246/104 19/245/102 90/127/103
+f 23/248/106 21/246/104 91/247/105
+f 25/249/108 23/248/106 92/131/107
+f 92/131/107 93/134/110 27/250/109
+f 93/134/110 94/263/114 29/251/111
+f 95/137/113 96/232/85 1/231/31
+f 94/139/114 95/137/113 31/252/112
+f 84/115/91 83/236/90 100/143/118
+f 85/239/94 84/115/91 101/255/119
+f 86/240/95 85/239/94 102/256/120
+f 87/121/97 86/240/95 103/146/121
+f 88/243/99 87/121/97 104/257/122
+f 89/125/101 88/243/99 105/148/123
+f 90/127/103 89/125/101 106/149/124
+f 91/247/105 90/127/103 107/258/125
+f 92/131/107 91/247/105 108/151/126
+f 93/134/110 92/131/107 109/152/127
+f 94/263/114 93/134/110 110/259/128
+f 96/232/85 95/137/113 112/260/130
+f 95/137/113 94/139/114 111/154/129
+f 97/140/115 112/260/130 113/43/40
+f 99/254/117 98/141/116 115/207/44
+f 100/143/118 99/254/117 116/49/46
+f 102/256/120 101/255/119 118/210/49
+f 103/146/121 102/256/120 119/54/51
+f 105/148/123 104/257/122 121/58/55
+f 106/149/124 105/148/123 122/61/58
+f 112/260/130 97/140/115 81/109/86
+f 108/151/126 107/258/125 124/65/62
+f 109/152/127 108/151/126 125/66/63
+f 112/260/130 111/154/129 128/204/37
+f 111/154/129 110/156/128 127/69/66
+f 4/6/1 6/190/7 67/189/6
+f 50/74/70 51/75/71 35/44/41
+f 81/109/86 82/112/88 5/234/87
+f 48/70/67 33/205/38 128/204/37
+f 51/75/71 52/218/72 36/206/43
+f 119/54/51 120/213/54 104/257/122
+f 97/140/115 98/141/116 82/112/88
+f 49/217/69 50/74/70 34/42/39
+f 61/85/81 62/86/82 46/67/64
+f 82/112/88 83/236/90 7/235/89
+f 113/43/40 114/45/42 98/141/116
+f 122/61/58 123/215/60 107/258/125
+f 24/195/24 26/29/27 77/28/26
+f 41/212/53 42/59/56 121/58/55
+f 45/64/61 46/67/64 125/66/63
+f 2/2/2 32/264/35 129/188/3
+f 32/264/35 30/265/30 129/188/3
+f 30/265/30 28/266/28 129/188/3
+f 28/266/28 26/163/27 129/188/3
+f 26/163/27 24/164/24 129/188/3
+f 24/164/24 22/267/22 129/188/3
+f 22/267/22 20/268/20 129/188/3
+f 20/268/20 18/269/18 129/188/3
+f 18/269/18 16/168/16 129/188/3
+f 16/168/16 14/169/15 129/188/3
+f 14/169/15 12/270/12 129/188/3
+f 12/270/12 10/271/10 129/188/3
+f 10/271/10 8/272/8 129/188/3
+f 8/272/8 6/273/7 129/188/3
+f 6/273/7 4/1/1 129/188/3
+f 3/198/32 5/274/87 130/199/33
+f 5/274/87 7/175/89 130/199/33
+f 7/175/89 9/176/92 130/199/33
+f 9/176/92 11/177/93 130/199/33
+f 11/177/93 13/178/96 130/199/33
+f 13/178/96 15/179/98 130/199/33
+f 15/179/98 17/180/100 130/199/33
+f 17/180/100 19/181/102 130/199/33
+f 19/181/102 21/182/104 130/199/33
+f 21/182/104 23/183/106 130/199/33
+f 23/183/106 25/275/108 130/199/33
+f 25/275/108 27/185/109 130/199/33
+f 27/185/109 29/186/111 130/199/33
+f 29/186/111 31/276/112 130/199/33
+f 31/276/112 1/33/31 130/199/33
+f 134/1/1 132/2/2 259/188/3
+f 195/4/4 132/5/2 134/6/1
+f 196/7/5 134/6/1 197/189/6
+f 197/189/6 136/190/7 138/10/8
+f 198/11/9 138/10/8 140/12/10
+f 199/13/11 140/12/10 142/191/12
+f 200/192/13 142/191/12 201/16/14
+f 201/16/14 144/17/15 146/18/16
+f 202/19/17 146/18/16 148/193/18
+f 203/194/19 148/193/18 150/22/20
+f 204/23/21 150/22/20 152/24/22
+f 205/25/23 152/24/22 154/195/24
+f 206/196/25 154/195/24 207/28/26
+f 207/28/26 156/29/27 158/30/28
+f 208/31/29 158/30/28 160/197/30
+f 131/33/31 133/198/32 260/199/33
+f 210/200/34 162/201/35 132/5/2
+f 209/202/36 160/203/30 162/201/35
+f 258/204/37 163/205/38 164/42/39
+f 243/43/40 164/42/39 165/44/41
+f 244/45/42 165/44/41 166/206/43
+f 245/207/44 166/206/43 167/48/45
+f 246/49/46 167/48/45 168/208/47
+f 247/209/48 168/208/47 248/210/49
+f 248/210/49 169/211/50 249/54/51
+f 249/54/51 170/55/52 171/212/53
+f 250/213/54 171/212/53 251/58/55
+f 251/58/55 172/59/56 173/60/57
+f 252/61/58 173/60/57 174/214/59
+f 253/215/60 174/214/59 175/64/61
+f 254/65/62 175/64/61 255/66/63
+f 255/66/63 176/67/64 177/216/65
+f 257/69/66 178/70/67 258/204/37
+f 256/71/68 177/72/65 178/70/67
+f 163/205/38 179/217/69 164/42/39
+f 164/42/39 180/74/70 165/44/41
+f 165/44/41 181/75/71 166/206/43
+f 166/206/43 182/218/72 183/77/73
+f 167/48/45 183/77/73 184/219/74
+f 168/208/47 184/219/74 169/211/50
+f 169/211/50 185/220/75 186/80/76
+f 170/55/52 186/80/76 187/221/77
+f 171/212/53 187/221/77 188/82/78
+f 172/59/56 188/82/78 189/83/79
+f 173/60/57 189/83/79 174/214/59
+f 174/214/59 190/222/80 175/64/61
+f 175/64/61 191/85/81 176/67/64
+f 176/67/64 192/86/82 193/223/83
+f 178/70/67 194/88/84 179/217/69
+f 177/72/65 193/89/83 194/88/84
+f 179/90/69 195/4/4 196/7/5
+f 180/91/70 196/7/5 197/189/6
+f 181/224/71 197/189/6 198/11/9
+f 182/93/72 198/11/9 199/13/11
+f 183/94/73 199/13/11 200/192/13
+f 184/225/74 200/192/13 201/16/14
+f 185/96/75 201/16/14 202/19/17
+f 186/97/76 202/19/17 203/194/19
+f 187/226/77 203/194/19 204/23/21
+f 188/99/78 204/23/21 205/25/23
+f 189/100/79 205/25/23 206/196/25
+f 190/227/80 206/196/25 207/28/26
+f 191/102/81 207/28/26 208/31/29
+f 192/103/82 208/31/29 193/228/83
+f 194/229/84 210/200/34 195/4/4
+f 193/230/83 209/202/36 210/200/34
+f 131/231/31 226/232/85 211/109/86
+f 133/233/32 211/109/86 135/234/87
+f 135/234/87 212/112/88 137/235/89
+f 137/235/89 213/236/90 214/115/91
+f 139/237/92 214/115/91 141/238/93
+f 141/238/93 215/239/94 216/240/95
+f 143/241/96 216/240/95 217/121/97
+f 145/242/98 217/121/97 218/243/99
+f 147/244/100 218/243/99 219/125/101
+f 149/245/102 219/125/101 220/127/103
+f 151/246/104 220/127/103 221/247/105
+f 153/248/106 221/247/105 222/131/107
+f 155/249/108 222/131/107 157/250/109
+f 157/250/109 223/134/110 159/251/111
+f 161/252/112 225/137/113 131/231/31
+f 159/253/111 224/139/114 161/252/112
+f 211/109/86 227/140/115 212/112/88
+f 212/112/88 228/141/116 213/236/90
+f 213/236/90 229/254/117 230/143/118
+f 214/115/91 230/143/118 231/255/119
+f 215/239/94 231/255/119 232/256/120
+f 216/240/95 232/256/120 233/146/121
+f 217/121/97 233/146/121 234/257/122
+f 218/243/99 234/257/122 235/148/123
+f 219/125/101 235/148/123 236/149/124
+f 220/127/103 236/149/124 237/258/125
+f 221/247/105 237/258/125 238/151/126
+f 222/131/107 238/151/126 239/152/127
+f 223/134/110 239/152/127 240/259/128
+f 225/137/113 241/154/129 242/260/130
+f 224/139/114 240/156/128 241/154/129
+f 242/260/130 258/204/37 243/43/40
+f 227/140/115 243/43/40 228/141/116
+f 228/141/116 244/45/42 245/207/44
+f 229/254/117 245/207/44 246/49/46
+f 230/143/118 246/49/46 231/255/119
+f 231/255/119 247/209/48 248/210/49
+f 232/256/120 248/210/49 249/54/51
+f 233/146/121 249/54/51 234/257/122
+f 234/257/122 250/213/54 251/58/55
+f 235/148/123 251/58/55 252/61/58
+f 236/149/124 252/61/58 237/258/125
+f 237/258/125 253/215/60 254/65/62
+f 238/151/126 254/65/62 255/66/63
+f 239/152/127 255/66/63 240/259/128
+f 241/154/129 257/69/66 258/204/37
+f 240/156/128 256/71/68 257/69/66
+f 226/232/85 242/260/130 211/109/86
+f 190/222/80 191/85/81 175/64/61
+f 142/191/12 144/17/15 201/16/14
+f 255/66/63 256/261/68 240/259/128
+f 184/219/74 185/220/75 169/211/50
+f 169/211/50 170/55/52 249/54/51
+f 214/115/91 215/239/94 141/238/93
+f 246/49/46 247/209/48 231/255/119
+f 196/7/5 195/4/4 134/6/1
+f 198/11/9 197/189/6 138/10/8
+f 199/13/11 198/11/9 140/12/10
+f 200/192/13 199/13/11 142/191/12
+f 202/19/17 201/16/14 146/18/16
+f 203/194/19 202/19/17 148/193/18
+f 204/23/21 203/194/19 150/22/20
+f 205/25/23 204/23/21 152/24/22
+f 206/196/25 205/25/23 154/195/24
+f 208/31/29 207/28/26 158/30/28
+f 209/262/36 208/31/29 160/197/30
+f 195/4/4 210/200/34 132/5/2
+f 210/200/34 209/202/36 162/201/35
+f 243/43/40 258/204/37 164/42/39
+f 244/45/42 243/43/40 165/44/41
+f 245/207/44 244/45/42 166/206/43
+f 246/49/46 245/207/44 167/48/45
+f 247/209/48 246/49/46 168/208/47
+f 168/208/47 169/211/50 248/210/49
+f 189/83/79 190/222/80 174/214/59
+f 250/213/54 249/54/51 171/212/53
+f 228/141/116 229/254/117 213/236/90
+f 252/61/58 251/58/55 173/60/57
+f 253/215/60 252/61/58 174/214/59
+f 254/65/62 253/215/60 175/64/61
+f 256/261/68 255/66/63 177/216/65
+f 257/69/66 256/71/68 178/70/67
+f 208/31/29 209/262/36 193/228/83
+f 167/48/45 166/206/43 183/77/73
+f 168/208/47 167/48/45 184/219/74
+f 170/55/52 169/211/50 186/80/76
+f 171/212/53 170/55/52 187/221/77
+f 172/59/56 171/212/53 188/82/78
+f 173/60/57 172/59/56 189/83/79
+f 177/216/65 176/67/64 193/223/83
+f 163/205/38 178/70/67 179/217/69
+f 178/70/67 177/72/65 194/88/84
+f 180/91/70 179/90/69 196/7/5
+f 181/224/71 180/91/70 197/189/6
+f 182/93/72 181/224/71 198/11/9
+f 183/94/73 182/93/72 199/13/11
+f 184/225/74 183/94/73 200/192/13
+f 185/96/75 184/225/74 201/16/14
+f 186/97/76 185/96/75 202/19/17
+f 187/226/77 186/97/76 203/194/19
+f 188/99/78 187/226/77 204/23/21
+f 189/100/79 188/99/78 205/25/23
+f 190/227/80 189/100/79 206/196/25
+f 191/102/81 190/227/80 207/28/26
+f 192/103/82 191/102/81 208/31/29
+f 179/90/69 194/229/84 195/4/4
+f 194/229/84 193/230/83 210/200/34
+f 133/233/32 131/231/31 211/109/86
+f 139/237/92 137/235/89 214/115/91
+f 143/241/96 141/238/93 216/240/95
+f 145/242/98 143/241/96 217/121/97
+f 147/244/100 145/242/98 218/243/99
+f 149/245/102 147/244/100 219/125/101
+f 151/246/104 149/245/102 220/127/103
+f 153/248/106 151/246/104 221/247/105
+f 155/249/108 153/248/106 222/131/107
+f 222/131/107 223/134/110 157/250/109
+f 223/134/110 224/263/114 159/251/111
+f 225/137/113 226/232/85 131/231/31
+f 224/139/114 225/137/113 161/252/112
+f 214/115/91 213/236/90 230/143/118
+f 215/239/94 214/115/91 231/255/119
+f 216/240/95 215/239/94 232/256/120
+f 217/121/97 216/240/95 233/146/121
+f 218/243/99 217/121/97 234/257/122
+f 219/125/101 218/243/99 235/148/123
+f 220/127/103 219/125/101 236/149/124
+f 221/247/105 220/127/103 237/258/125
+f 222/131/107 221/247/105 238/151/126
+f 223/134/110 222/131/107 239/152/127
+f 224/263/114 223/134/110 240/259/128
+f 226/232/85 225/137/113 242/260/130
+f 225/137/113 224/139/114 241/154/129
+f 227/140/115 242/260/130 243/43/40
+f 229/254/117 228/141/116 245/207/44
+f 230/143/118 229/254/117 246/49/46
+f 232/256/120 231/255/119 248/210/49
+f 233/146/121 232/256/120 249/54/51
+f 235/148/123 234/257/122 251/58/55
+f 236/149/124 235/148/123 252/61/58
+f 242/260/130 227/140/115 211/109/86
+f 238/151/126 237/258/125 254/65/62
+f 239/152/127 238/151/126 255/66/63
+f 242/260/130 241/154/129 258/204/37
+f 241/154/129 240/156/128 257/69/66
+f 134/6/1 136/190/7 197/189/6
+f 180/74/70 181/75/71 165/44/41
+f 211/109/86 212/112/88 135/234/87
+f 178/70/67 163/205/38 258/204/37
+f 181/75/71 182/218/72 166/206/43
+f 249/54/51 250/213/54 234/257/122
+f 227/140/115 228/141/116 212/112/88
+f 179/217/69 180/74/70 164/42/39
+f 191/85/81 192/86/82 176/67/64
+f 212/112/88 213/236/90 137/235/89
+f 243/43/40 244/45/42 228/141/116
+f 252/61/58 253/215/60 237/258/125
+f 154/195/24 156/29/27 207/28/26
+f 171/212/53 172/59/56 251/58/55
+f 175/64/61 176/67/64 255/66/63
+f 132/2/2 162/264/35 259/188/3
+f 162/264/35 160/265/30 259/188/3
+f 160/265/30 158/266/28 259/188/3
+f 158/266/28 156/163/27 259/188/3
+f 156/163/27 154/164/24 259/188/3
+f 154/164/24 152/267/22 259/188/3
+f 152/267/22 150/268/20 259/188/3
+f 150/268/20 148/269/18 259/188/3
+f 148/269/18 146/168/16 259/188/3
+f 146/168/16 144/169/15 259/188/3
+f 144/169/15 142/270/12 259/188/3
+f 142/270/12 140/271/10 259/188/3
+f 140/271/10 138/272/8 259/188/3
+f 138/272/8 136/273/7 259/188/3
+f 136/273/7 134/1/1 259/188/3
+f 133/198/32 135/274/87 260/199/33
+f 135/274/87 137/175/89 260/199/33
+f 137/175/89 139/176/92 260/199/33
+f 139/176/92 141/177/93 260/199/33
+f 141/177/93 143/178/96 260/199/33
+f 143/178/96 145/179/98 260/199/33
+f 145/179/98 147/180/100 260/199/33
+f 147/180/100 149/181/102 260/199/33
+f 149/181/102 151/182/104 260/199/33
+f 151/182/104 153/183/106 260/199/33
+f 153/183/106 155/275/108 260/199/33
+f 155/275/108 157/185/109 260/199/33
+f 157/185/109 159/186/111 260/199/33
+f 159/186/111 161/276/112 260/199/33
+f 161/276/112 131/33/31 260/199/33
diff --git a/homedecor_modpack/homedecor/models/homedecor_ac.obj b/homedecor_modpack/homedecor/models/homedecor_ac.obj
new file mode 100644
index 0000000..959aa91
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_ac.obj
@@ -0,0 +1,75 @@
+# Blender v2.73 (sub 0) OBJ File: 'ac.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.125000 0.500000
+v -0.500000 0.125000 -0.500000
+v 0.500000 0.125000 -0.500000
+v 0.500000 0.125000 0.500000
+v -0.500000 0.125001 0.500000
+v -0.500000 0.125001 -0.500000
+v 0.500000 0.125001 -0.500000
+v 0.500000 0.125001 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.374999 0.500000
+v -0.500000 0.250001 -0.500000
+v 0.500000 0.250001 -0.500000
+v 0.500000 0.250001 0.500000
+v -0.500000 0.250001 0.500000
+v -0.500000 0.374999 -0.500000
+v 0.500000 0.374999 -0.500000
+v 0.500000 0.374999 0.500000
+vt 1.000000 1.000000
+vt 0.500000 1.000000
+vt 0.500000 0.687500
+vt 1.000000 0.687500
+vt 0.000000 1.000000
+vt 0.000000 0.687500
+vt 0.500000 0.375000
+vt 1.000000 0.375000
+vt 0.000000 0.187500
+vt 0.500000 0.187500
+vt 1.000000 0.125000
+vt 0.000000 0.125000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt -0.000000 0.750000
+vt -0.000000 0.625000
+vt 1.000000 0.625000
+vt 1.000000 0.750000
+vt -0.000000 0.875000
+vt 1.000000 0.875000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cylinder_Cylinder_main
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/2/2 7/5/2 3/6/2 2/3/2
+f 7/1/3 8/2/3 4/3/3 3/4/3
+f 8/4/4 5/3/4 1/7/4 4/8/4
+f 1/6/5 2/9/5 3/10/5 4/3/5
+f 8/10/6 7/3/6 6/6/6 5/9/6
+g Cylinder_Cylinder_glass-tb
+f 21/11/1 18/12/1 10/13/1 9/14/1
+f 18/11/2 19/12/2 11/13/2 10/14/2
+f 19/11/3 20/12/3 12/13/3 11/14/3
+f 20/11/4 21/12/4 9/13/4 12/14/4
+f 16/13/6 15/14/6 14/1/6 13/5/6
+f 24/15/3 20/16/3 19/17/3 23/18/3
+f 23/15/2 19/16/2 18/17/2 22/18/2
+f 22/15/1 18/16/1 21/17/1 17/18/1
+f 13/1/1 14/5/1 22/19/1 17/20/1
+f 14/1/2 15/5/2 23/19/2 22/20/2
+f 15/1/3 16/5/3 24/19/3 23/20/3
+f 16/1/4 13/5/4 17/19/4 24/20/4
+f 21/16/4 20/17/4 24/18/4 17/15/4
diff --git a/homedecor_modpack/homedecor/models/homedecor_analog_clock.obj b/homedecor_modpack/homedecor/models/homedecor_analog_clock.obj
new file mode 100644
index 0000000..e1ed1b2
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_analog_clock.obj
@@ -0,0 +1,507 @@
+# Blender v2.73 (sub 0) OBJ File: 'analog_clock.blend'
+# www.blender.org
+o Cylinder
+v 0.000000 -0.250000 0.500000
+v 0.000000 -0.250000 0.453125
+v 0.048773 -0.245196 0.500000
+v 0.048773 -0.245196 0.453125
+v 0.095671 -0.230970 0.500000
+v 0.095671 -0.230970 0.453125
+v 0.138893 -0.207867 0.500000
+v 0.138893 -0.207867 0.453125
+v 0.176777 -0.176777 0.500000
+v 0.176777 -0.176777 0.453125
+v 0.207867 -0.138893 0.500000
+v 0.207867 -0.138893 0.453125
+v 0.230970 -0.095671 0.500000
+v 0.230970 -0.095671 0.453125
+v 0.245196 -0.048773 0.500000
+v 0.245196 -0.048773 0.453125
+v 0.250000 -0.000000 0.500000
+v 0.250000 -0.000000 0.453125
+v 0.245196 0.048773 0.500000
+v 0.245196 0.048773 0.453125
+v 0.230970 0.095671 0.500000
+v 0.230970 0.095671 0.453125
+v 0.207867 0.138893 0.500000
+v 0.207867 0.138893 0.453125
+v 0.176777 0.176777 0.500000
+v 0.176777 0.176777 0.453125
+v 0.138893 0.207867 0.500000
+v 0.138893 0.207867 0.453125
+v 0.095671 0.230970 0.500000
+v 0.095671 0.230970 0.453125
+v 0.048773 0.245196 0.500000
+v 0.048773 0.245196 0.453125
+v -0.000000 0.250000 0.500000
+v -0.000000 0.250000 0.453125
+v -0.048773 0.245196 0.500000
+v -0.048773 0.245196 0.453125
+v -0.095671 0.230970 0.500000
+v -0.095671 0.230970 0.453125
+v -0.138893 0.207867 0.500000
+v -0.138893 0.207867 0.453125
+v -0.176777 0.176777 0.500000
+v -0.176777 0.176777 0.453125
+v -0.207868 0.138892 0.500000
+v -0.207868 0.138892 0.453125
+v -0.230970 0.095671 0.500000
+v -0.230970 0.095671 0.453125
+v -0.245196 0.048772 0.500000
+v -0.245196 0.048772 0.453125
+v -0.250000 -0.000000 0.500000
+v -0.250000 -0.000000 0.453125
+v -0.245196 -0.048773 0.500000
+v -0.245196 -0.048773 0.453125
+v -0.230970 -0.095671 0.500000
+v -0.230970 -0.095671 0.453125
+v -0.207867 -0.138893 0.500000
+v -0.207867 -0.138893 0.453125
+v -0.176776 -0.176777 0.500000
+v -0.176776 -0.176777 0.453125
+v -0.138892 -0.207868 0.500000
+v -0.138892 -0.207868 0.453125
+v -0.095671 -0.230970 0.500000
+v -0.095671 -0.230970 0.453125
+v -0.048772 -0.245196 0.500000
+v -0.048772 -0.245196 0.453125
+v 0.125000 0.125000 0.500000
+v -0.125000 0.125000 0.500000
+v 0.125000 -0.125000 0.500000
+v -0.125000 -0.125000 0.500000
+v -0.000000 0.000000 0.437500
+v 0.041457 -0.208417 0.437500
+v -0.000000 -0.212500 0.437500
+v -0.041456 -0.208417 0.437500
+v -0.081320 -0.196324 0.437500
+v -0.118058 -0.176687 0.437500
+v -0.150260 -0.150260 0.437500
+v -0.176687 -0.118059 0.437500
+v -0.196324 -0.081320 0.437500
+v -0.208417 -0.041457 0.437500
+v -0.212500 -0.000000 0.437500
+v -0.208417 0.041457 0.437500
+v -0.196324 0.081320 0.437500
+v -0.176687 0.118059 0.437500
+v -0.150260 0.150260 0.437500
+v -0.118059 0.176687 0.437500
+v -0.081320 0.196324 0.437500
+v -0.041457 0.208417 0.437500
+v -0.000000 0.212500 0.437500
+v 0.041457 0.208417 0.437500
+v 0.081320 0.196324 0.437500
+v 0.118059 0.176687 0.437500
+v 0.150260 0.150260 0.437500
+v 0.176687 0.118059 0.437500
+v 0.196324 0.081320 0.437500
+v 0.208417 0.041457 0.437500
+v 0.212500 0.000000 0.437500
+v 0.208417 -0.041457 0.437500
+v 0.196324 -0.081320 0.437500
+v 0.176687 -0.118059 0.437500
+v 0.150260 -0.150260 0.437500
+v 0.118059 -0.176687 0.437500
+v 0.081320 -0.196324 0.437500
+vt 0.402455 0.009607
+vt 0.500000 0.000000
+vt 0.500000 0.500000
+vt 0.597545 0.009607
+vt 0.691341 0.038060
+vt 0.777785 0.084265
+vt 0.853553 0.146446
+vt 0.915734 0.222214
+vt 0.961940 0.308658
+vt 0.990393 0.402454
+vt 1.000000 0.499999
+vt 0.990393 0.597545
+vt 0.961940 0.691341
+vt 0.915735 0.777785
+vt 0.853554 0.853553
+vt 0.777785 0.915735
+vt 0.691342 0.961940
+vt 0.597545 0.990393
+vt 0.500000 1.000000
+vt 0.402455 0.990393
+vt 0.308658 0.961940
+vt 0.222215 0.915735
+vt 0.146447 0.853553
+vt 0.084265 0.777785
+vt 0.038060 0.691342
+vt 0.009607 0.597545
+vt 0.000000 0.500000
+vt 0.009607 0.402455
+vt 0.038060 0.308658
+vt 0.084265 0.222215
+vt 0.146447 0.146447
+vt 0.222215 0.084265
+vt 0.308658 0.038060
+vt 0.500000 0.625000
+vt 0.562500 0.500000
+vt 0.562500 0.625000
+vt 0.625000 0.500000
+vt 0.625000 0.625000
+vt 0.687500 0.500000
+vt 0.687500 0.625000
+vt 0.750000 0.500000
+vt 0.750000 0.625000
+vt 0.812500 0.500000
+vt 0.812500 0.625000
+vt 0.875000 0.500000
+vt 0.875000 0.625000
+vt 0.937500 0.500000
+vt 0.937500 0.625000
+vt 1.000000 0.625000
+vt 0.000000 0.937500
+vt 0.000000 0.812500
+vt 0.062500 0.812500
+vt 0.062500 0.937500
+vt 0.125000 0.812500
+vt 0.125000 0.937500
+vt 0.187500 0.812500
+vt 0.187500 0.937500
+vt 0.250000 0.812500
+vt 0.250000 0.937500
+vt 0.312500 0.812500
+vt 0.312500 0.937500
+vt 0.375000 0.812500
+vt 0.375000 0.937500
+vt 0.437500 0.812500
+vt 0.437500 0.937500
+vt 0.500000 0.812500
+vt 0.500000 0.937500
+vt 0.562500 0.812500
+vt 0.562500 0.937500
+vt 0.625000 0.812500
+vt 0.625000 0.937500
+vt 0.687500 0.812500
+vt 0.687500 0.937500
+vt 0.750000 0.812500
+vt 0.750000 0.937500
+vt 0.812500 0.812500
+vt 0.812500 0.937500
+vt 0.875000 0.812500
+vt 0.875000 0.937500
+vt 0.937500 0.812500
+vt 0.937500 0.937500
+vt 1.000000 0.812500
+vt 1.000000 0.937500
+vt 0.000000 0.625000
+vt 0.062500 0.500000
+vt 0.062500 0.625000
+vt 0.125000 0.500000
+vt 0.125000 0.625000
+vt 0.187500 0.500000
+vt 0.187500 0.625000
+vt 0.250000 0.500000
+vt 0.250000 0.625000
+vt 0.312500 0.500000
+vt 0.312500 0.625000
+vt 0.375000 0.500000
+vt 0.375000 0.625000
+vt 0.875000 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.375000
+vt 0.875000 0.375000
+vt 0.437500 0.625000
+vt 0.437500 0.500000
+vt 0.750000 0.250000
+vt 0.812500 0.250000
+vt 0.812500 0.375000
+vt 0.750000 0.375000
+vt 0.687500 0.250000
+vt 0.687500 0.375000
+vt 0.625000 0.250000
+vt 0.625000 0.375000
+vt 0.562500 0.250000
+vt 0.562500 0.375000
+vt 0.500000 0.250000
+vt 0.500000 0.375000
+vt 0.437500 0.250000
+vt 0.437500 0.375000
+vt 0.375000 0.250000
+vt 0.375000 0.375000
+vt 0.312500 0.250000
+vt 0.312500 0.375000
+vt 0.250000 0.250000
+vt 0.250000 0.375000
+vt 0.187500 0.250000
+vt 0.187500 0.375000
+vt 0.125000 0.250000
+vt 0.125000 0.375000
+vt 0.062500 0.250000
+vt 0.062500 0.375000
+vt -0.000000 0.250000
+vt -0.000000 0.375000
+vt 0.937500 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.125000
+vt 0.937500 0.125000
+vt 0.875000 -0.000000
+vt 0.875000 0.125000
+vt 0.812500 -0.000000
+vt 0.812500 0.125000
+vt 0.750000 -0.000000
+vt 0.750000 0.125000
+vt 0.687500 -0.000000
+vt 0.687500 0.125000
+vt 0.625000 -0.000000
+vt 0.625000 0.125000
+vt 0.562500 -0.000000
+vt 0.562500 0.125000
+vt 0.500000 0.125000
+vt 0.437500 -0.000000
+vt 0.437500 0.125000
+vt 0.375000 -0.000000
+vt 0.375000 0.125000
+vt 0.312500 -0.000000
+vt 0.312500 0.125000
+vt 0.250000 -0.000000
+vt 0.250000 0.125000
+vt 0.187500 -0.000000
+vt 0.187500 0.125000
+vt 0.125000 -0.000000
+vt 0.125000 0.125000
+vt 0.062500 -0.000000
+vt 0.062500 0.125000
+vt -0.000000 -0.000000
+vt -0.000000 0.125000
+vt 1.000000 0.250000
+vt 1.000000 0.375000
+vt 0.750000 0.750000
+vt 0.250000 0.750000
+vn 0.040500 -0.203800 -0.978100
+vn 0.000000 -0.207800 -0.978100
+vn 0.000000 0.000000 -1.000000
+vn -0.040500 -0.203800 -0.978100
+vn -0.079500 -0.192000 -0.978100
+vn -0.115500 -0.172800 -0.978100
+vn -0.146900 -0.146900 -0.978100
+vn -0.172800 -0.115500 -0.978100
+vn -0.192000 -0.079500 -0.978100
+vn -0.203800 -0.040500 -0.978100
+vn -0.207800 0.000000 -0.978100
+vn -0.203800 0.040500 -0.978100
+vn -0.192000 0.079500 -0.978100
+vn -0.172800 0.115500 -0.978100
+vn -0.146900 0.146900 -0.978100
+vn -0.115500 0.172800 -0.978100
+vn -0.079500 0.192000 -0.978100
+vn -0.040500 0.203800 -0.978100
+vn 0.000000 0.207800 -0.978100
+vn 0.040500 0.203800 -0.978100
+vn 0.079500 0.192000 -0.978100
+vn 0.115500 0.172800 -0.978100
+vn 0.146900 0.146900 -0.978100
+vn 0.172800 0.115500 -0.978100
+vn 0.192000 0.079500 -0.978100
+vn 0.203800 0.040500 -0.978100
+vn 0.207800 0.000000 -0.978100
+vn 0.203800 -0.040500 -0.978100
+vn 0.192000 -0.079500 -0.978100
+vn 0.172800 -0.115500 -0.978100
+vn 0.146900 -0.146900 -0.978100
+vn 0.115500 -0.172800 -0.978100
+vn 0.079500 -0.192000 -0.978100
+vn 0.000000 -0.727900 0.685700
+vn 0.000000 -0.842100 -0.539300
+vn 0.164300 -0.825900 -0.539300
+vn 0.142000 -0.713900 0.685700
+vn 0.322200 -0.778000 -0.539300
+vn 0.278500 -0.672500 0.685700
+vn 0.467800 -0.700200 -0.539300
+vn 0.404400 -0.605200 0.685700
+vn 0.595400 -0.595400 -0.539300
+vn 0.514700 -0.514700 0.685700
+vn 0.700200 -0.467800 -0.539300
+vn 0.605200 -0.404400 0.685700
+vn 0.778000 -0.322200 -0.539300
+vn 0.672500 -0.278500 0.685700
+vn 0.825900 -0.164300 -0.539300
+vn 0.713900 -0.142000 0.685700
+vn 0.842100 0.000000 -0.539300
+vn 0.727900 0.000000 0.685700
+vn 0.825900 0.164300 -0.539300
+vn 0.713900 0.142000 0.685700
+vn 0.778000 0.322200 -0.539300
+vn 0.672500 0.278500 0.685700
+vn 0.700200 0.467800 -0.539300
+vn 0.605200 0.404400 0.685700
+vn 0.595400 0.595400 -0.539300
+vn 0.514700 0.514700 0.685700
+vn 0.467800 0.700200 -0.539300
+vn 0.404400 0.605200 0.685700
+vn 0.322200 0.778000 -0.539300
+vn 0.278500 0.672500 0.685700
+vn 0.164300 0.825900 -0.539300
+vn 0.142000 0.713900 0.685700
+vn 0.000000 0.842100 -0.539300
+vn 0.000000 0.727900 0.685700
+vn -0.164300 0.825900 -0.539300
+vn -0.142000 0.713900 0.685700
+vn -0.322200 0.778000 -0.539300
+vn -0.278500 0.672500 0.685700
+vn -0.467800 0.700200 -0.539300
+vn -0.404400 0.605200 0.685700
+vn -0.595400 0.595400 -0.539300
+vn -0.514700 0.514700 0.685700
+vn -0.700200 0.467800 -0.539300
+vn -0.605200 0.404400 0.685700
+vn -0.778000 0.322200 -0.539300
+vn -0.672500 0.278500 0.685700
+vn -0.825900 0.164300 -0.539300
+vn -0.713900 0.142000 0.685700
+vn -0.842100 0.000000 -0.539300
+vn -0.727900 0.000000 0.685700
+vn -0.825900 -0.164300 -0.539300
+vn -0.713900 -0.142000 0.685700
+vn -0.778000 -0.322200 -0.539300
+vn -0.672500 -0.278500 0.685700
+vn -0.700200 -0.467800 -0.539300
+vn -0.605200 -0.404400 0.685700
+vn -0.595400 -0.595400 -0.539300
+vn -0.514700 -0.514700 0.685700
+vn -0.467800 -0.700200 -0.539300
+vn -0.404400 -0.605200 0.685700
+vn -0.322200 -0.778000 -0.539300
+vn -0.278500 -0.672500 0.685700
+vn -0.142000 -0.713900 0.685700
+vn -0.164300 -0.825900 -0.539300
+vn 0.000000 -0.000000 1.000000
+g Cylinder_Cylinder_face
+s 1
+f 70/1/1 71/2/2 69/3/3
+f 71/2/2 72/4/4 69/3/3
+f 72/4/4 73/5/5 69/3/3
+f 73/5/5 74/6/6 69/3/3
+f 74/6/6 75/7/7 69/3/3
+f 75/7/7 76/8/8 69/3/3
+f 76/8/8 77/9/9 69/3/3
+f 77/9/9 78/10/10 69/3/3
+f 78/10/10 79/11/11 69/3/3
+f 79/11/11 80/12/12 69/3/3
+f 80/12/12 81/13/13 69/3/3
+f 81/13/13 82/14/14 69/3/3
+f 82/14/14 83/15/15 69/3/3
+f 83/15/15 84/16/16 69/3/3
+f 84/16/16 85/17/17 69/3/3
+f 85/17/17 86/18/18 69/3/3
+f 86/18/18 87/19/19 69/3/3
+f 87/19/19 88/20/20 69/3/3
+f 88/20/20 89/21/21 69/3/3
+f 89/21/21 90/22/22 69/3/3
+f 90/22/22 91/23/23 69/3/3
+f 91/23/23 92/24/24 69/3/3
+f 92/24/24 93/25/25 69/3/3
+f 93/25/25 94/26/26 69/3/3
+f 94/26/26 95/27/27 69/3/3
+f 95/27/27 96/28/28 69/3/3
+f 96/28/28 97/29/29 69/3/3
+f 97/29/29 98/30/30 69/3/3
+f 98/30/30 99/31/31 69/3/3
+f 99/31/31 100/32/32 69/3/3
+f 100/32/32 101/33/33 69/3/3
+f 101/33/33 70/1/1 69/3/3
+g Cylinder_Cylinder_sides-etc
+f 1/34/34 2/3/35 4/35/36 3/36/37
+f 3/36/37 4/35/36 6/37/38 5/38/39
+f 5/38/39 6/37/38 8/39/40 7/40/41
+f 7/40/41 8/39/40 10/41/42 9/42/43
+f 9/42/43 10/41/42 12/43/44 11/44/45
+f 11/44/45 12/43/44 14/45/46 13/46/47
+f 13/46/47 14/45/46 16/47/48 15/48/49
+f 15/48/49 16/47/48 18/11/50 17/49/51
+f 17/50/51 18/51/50 20/52/52 19/53/53
+f 19/53/53 20/52/52 22/54/54 21/55/55
+f 21/55/55 22/54/54 24/56/56 23/57/57
+f 23/57/57 24/56/56 26/58/58 25/59/59
+f 25/59/59 26/58/58 28/60/60 27/61/61
+f 27/61/61 28/60/60 30/62/62 29/63/63
+f 29/63/63 30/62/62 32/64/64 31/65/65
+f 31/65/65 32/64/64 34/66/66 33/67/67
+f 33/67/67 34/66/66 36/68/68 35/69/69
+f 35/69/69 36/68/68 38/70/70 37/71/71
+f 37/71/71 38/70/70 40/72/72 39/73/73
+f 39/73/73 40/72/72 42/74/74 41/75/75
+f 41/75/75 42/74/74 44/76/76 43/77/77
+f 43/77/77 44/76/76 46/78/78 45/79/79
+f 45/79/79 46/78/78 48/80/80 47/81/81
+f 47/81/81 48/80/80 50/82/82 49/83/83
+f 49/84/83 50/27/82 52/85/84 51/86/85
+f 51/86/85 52/85/84 54/87/86 53/88/87
+f 53/88/87 54/87/86 56/89/88 55/90/89
+f 55/90/89 56/89/88 58/91/90 57/92/91
+f 57/92/91 58/91/90 60/93/92 59/94/93
+f 59/94/93 60/93/92 62/95/94 61/96/95
+f 6/97/38 4/98/36 70/99/1 101/100/33
+f 63/101/96 64/102/97 2/3/35 1/34/34
+f 61/96/95 62/95/94 64/102/97 63/101/96
+f 9/7/43 11/8/45 67/103/98
+f 8/104/40 6/97/38 101/100/33 100/105/32
+f 10/103/42 8/104/40 100/105/32 99/106/31
+f 12/107/44 10/103/42 99/106/31 98/108/30
+f 14/109/46 12/107/44 98/108/30 97/110/29
+f 16/111/48 14/109/46 97/110/29 96/112/28
+f 18/113/50 16/111/48 96/112/28 95/114/27
+f 20/115/52 18/113/50 95/114/27 94/116/26
+f 22/117/54 20/115/52 94/116/26 93/118/25
+f 24/119/56 22/117/54 93/118/25 92/120/24
+f 26/121/58 24/119/56 92/120/24 91/122/23
+f 28/123/60 26/121/58 91/122/23 90/124/22
+f 30/125/62 28/123/60 90/124/22 89/126/21
+f 32/127/64 30/125/62 89/126/21 88/128/20
+f 34/129/66 32/127/64 88/128/20 87/130/19
+f 36/131/68 34/132/66 87/133/19 86/134/18
+f 38/135/70 36/131/68 86/134/18 85/136/17
+f 40/137/72 38/135/70 85/136/17 84/138/16
+f 42/139/74 40/137/72 84/138/16 83/140/15
+f 44/141/76 42/139/74 83/140/15 82/142/14
+f 46/143/78 44/141/76 82/142/14 81/144/13
+f 48/145/80 46/143/78 81/144/13 80/146/12
+f 50/2/82 48/145/80 80/146/12 79/147/11
+f 52/148/84 50/2/82 79/147/11 78/149/10
+f 54/150/86 52/148/84 78/149/10 77/151/9
+f 56/152/88 54/150/86 77/151/9 76/153/8
+f 58/154/90 56/152/88 76/153/8 75/155/7
+f 60/156/92 58/154/90 75/155/7 74/157/6
+f 62/158/94 60/156/92 74/157/6 73/159/5
+f 64/160/97 62/158/94 73/159/5 72/161/4
+f 2/162/35 64/160/97 72/161/4 71/163/2
+f 4/98/36 2/164/35 71/165/2 70/99/1
+f 9/7/43 67/103/98 7/6/41
+f 25/15/59 27/16/61 65/166/98
+f 25/15/59 65/166/98 23/14/57
+f 57/31/91 59/32/93 68/121/98
+f 57/31/91 68/121/98 55/30/89
+f 39/22/73 41/23/75 66/167/98
+f 43/24/77 66/167/98 41/23/75
+f 11/8/45 13/9/47 67/103/98
+f 7/6/41 67/103/98 5/5/39
+f 59/32/93 61/33/95 68/121/98
+f 55/30/89 68/121/98 53/29/87
+f 39/22/73 66/167/98 37/21/71
+f 45/25/79 66/167/98 43/24/77
+f 27/16/61 29/17/63 65/166/98
+f 23/14/57 65/166/98 21/13/55
+f 15/10/49 67/103/98 13/9/47
+f 17/11/51 67/103/98 15/10/49
+f 21/13/55 65/166/98 19/12/53
+f 19/12/53 65/166/98 17/11/51
+f 67/103/98 17/11/51 65/166/98
+f 5/5/39 67/103/98 3/4/37
+f 3/4/37 67/103/98 1/2/34
+f 63/1/96 68/121/98 61/33/95
+f 1/2/34 68/121/98 63/1/96
+f 68/121/98 1/2/34 67/103/98
+f 53/29/87 68/121/98 51/28/85
+f 51/28/85 68/121/98 49/27/83
+f 68/121/98 66/167/98 49/27/83
+f 49/27/83 66/167/98 47/26/81
+f 47/26/81 66/167/98 45/25/79
+f 31/18/65 65/166/98 29/17/63
+f 33/19/67 65/166/98 31/18/65
+f 33/19/67 35/20/69 66/167/98
+f 37/21/71 66/167/98 35/20/69
+f 65/166/98 33/19/67 66/167/98
+g Cylinder_Cylinder_back
+s off
+f 65/166/98 66/167/98 68/121/98 67/103/98
diff --git a/homedecor_modpack/homedecor/models/homedecor_banister_diagonal_left.obj b/homedecor_modpack/homedecor/models/homedecor_banister_diagonal_left.obj
new file mode 100644
index 0000000..1a2fcc0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_banister_diagonal_left.obj
@@ -0,0 +1,170 @@
+# Blender v2.73 (sub 0) OBJ File: 'banister.blend'
+# www.blender.org
+o Cylinder_Cylinder_verticals
+v 0.421453 1.531250 0.499999
+v -0.578547 0.531250 0.499999
+v -0.516047 0.468750 0.499999
+v 0.483953 1.468750 0.499999
+v 0.421453 1.531250 0.312499
+v 0.483953 1.468750 0.312499
+v -0.516047 0.468750 0.312499
+v -0.578547 0.531250 0.312499
+v 0.202703 0.250000 0.437499
+v 0.265203 0.250000 0.437499
+v 0.265203 1.250000 0.437499
+v 0.202703 1.187500 0.437499
+v 0.202703 0.250000 0.374999
+v 0.202703 1.187500 0.374999
+v 0.265203 1.250000 0.374999
+v 0.265203 0.250000 0.374999
+v 0.265203 0.250000 0.499999
+v 0.202703 0.250000 0.499999
+v -0.297297 -0.187500 0.437499
+v -0.234797 -0.187500 0.437499
+v -0.234797 0.812500 0.437499
+v -0.297297 0.750000 0.437499
+v -0.297297 -0.187500 0.374999
+v -0.297297 0.750000 0.374999
+v -0.234797 0.812500 0.374999
+v -0.234797 -0.187500 0.374999
+v -0.234797 -0.187500 0.499999
+v -0.297297 -0.187500 0.499999
+v -0.297297 -0.125000 0.499999
+v -0.297297 -0.125000 0.437499
+v -0.234797 -0.125000 0.437499
+v -0.234797 -0.125000 0.499999
+v 0.202703 0.312500 0.437499
+v 0.202703 0.312500 0.499999
+v 0.265203 0.312500 0.499999
+v 0.265203 0.312500 0.437499
+vt -0.312500 0.500000
+vt -0.312500 0.437500
+vt 0.625000 0.437500
+vt 0.562500 0.500000
+vt 0.125000 0.687500
+vt 1.000000 0.687500
+vt 1.062500 0.750000
+vt 0.125000 0.750000
+vt 1.000000 0.125000
+vt 1.000000 0.062500
+vt 1.125000 0.062500
+vt 1.125000 0.125000
+vt 0.125000 0.625000
+vt 0.125000 0.562500
+vt 1.062500 0.562500
+vt 1.000000 0.625000
+vt 1.062500 0.687500
+vt 1.187500 0.125000
+vt 1.187500 0.062500
+vt 1.312500 0.062500
+vt 1.312500 0.125000
+vt 0.875000 0.875000
+vt -0.062500 0.875000
+vt -0.062500 0.812500
+vt 0.875000 0.812500
+vt -0.312500 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.437500
+vt 0.875000 1.000000
+vt -0.062500 1.000000
+vt -0.062500 0.937500
+vt 0.875000 0.937500
+vt 0.437500 0.187500
+vt 1.312500 0.187500
+vt 1.312500 0.250000
+vt 0.437500 0.250000
+vt 0.437500 0.125000
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt -0.375000 0.812500
+vt -0.312500 0.812500
+vt -0.312500 0.875000
+vt -0.375000 0.875000
+vt 0.812500 0.125000
+vt 0.750000 0.125000
+vt 0.750000 0.062500
+vt 0.812500 0.062500
+vt 0.937500 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vt -0.250000 0.875000
+vt -0.250000 0.937500
+vt -0.312500 0.937500
+vt -0.250000 0.375000
+vt -0.312500 0.312500
+vt -0.250000 0.312500
+vt -0.125000 0.937500
+vt -0.125000 0.875000
+vt -0.125000 1.000000
+vt -0.187500 0.625000
+vt -0.375000 0.625000
+vt -0.375000 0.562500
+vt -0.187500 0.562500
+vt -0.125000 0.625000
+vt -0.125000 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.625000
+vt 1.375000 0.250000
+vt 0.375000 0.250000
+vt 0.375000 0.062500
+vt 1.375000 0.062500
+vt -0.375000 0.312500
+vt 0.625000 0.312500
+vt 0.625000 0.500000
+vt -0.375000 0.500000
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 0.707100
+vn 0.894400 0.000000 0.447200
+vn -0.554700 0.000000 0.832000
+vn -0.577300 -0.577400 -0.577400
+vn -0.554700 -0.000000 -0.832100
+vn 0.894400 -0.000000 -0.447200
+vn 0.577400 -0.577400 -0.577400
+vn 0.577400 -0.577400 0.577400
+vn -0.577400 -0.577400 0.577300
+vn -0.554700 0.000000 0.832100
+vn -0.577400 -0.577400 -0.577400
+vn 0.577400 -0.577400 -0.577300
+vn -0.577400 -0.577400 0.577400
+vn -0.577300 0.577300 0.577300
+vn -0.707100 0.707100 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.707100 0.707100 -0.000000
+vn 0.577300 0.577300 0.577300
+vn 0.000000 0.816500 0.577300
+vn -0.816500 0.000000 0.577300
+vn 0.000000 -0.816500 0.577300
+vn 0.816500 0.000000 0.577300
+vn 0.000000 0.816500 -0.577300
+vn 0.816500 0.000000 -0.577300
+vn 0.000000 -0.816500 -0.577300
+vn -0.816500 0.000000 -0.577300
+g Cylinder_Cylinder_verticals_Cylinder_Cylinder_verticals_verticals
+s 1
+f 9/1/1 10/2/2 11/3/3 12/4/4
+f 13/5/5 14/6/6 15/7/7 16/8/8
+f 13/9/5 16/10/8 17/11/9 18/12/10
+f 19/13/1 20/14/2 21/15/3 22/16/11
+f 23/13/12 24/16/6 25/17/7 26/5/13
+f 23/18/12 26/19/13 27/20/9 28/21/14
+f 11/22/3 10/23/2 16/24/8 15/25/7
+f 9/26/1 12/27/4 14/28/6 13/2/5
+f 21/29/3 20/30/2 26/31/13 25/32/7
+f 19/33/1 22/34/11 24/35/6 23/36/12
+f 28/37/14 29/38/15 30/39/16 19/33/17
+f 20/40/18 31/41/19 32/42/20 27/43/9
+f 33/44/16 34/45/15 35/46/20 36/47/19
+f 30/48/16 29/49/15 32/50/20 31/51/19
+f 10/42/18 36/52/19 35/53/20 17/54/9
+f 33/55/16 9/26/17 18/56/10 34/57/15
+f 17/42/9 35/52/20 34/53/15 18/54/10
+f 27/40/9 32/41/20 29/42/15 28/43/14
+g Cylinder_Cylinder_verticals_Cylinder_Cylinder_verticals_railing
+f 1/32/21 2/58/22 3/59/23 4/22/24
+f 5/32/25 6/29/26 7/60/27 8/58/28
+f 1/61/21 4/62/24 6/63/26 5/64/25
+f 2/65/22 8/66/28 7/67/27 3/68/23
+f 4/69/24 3/70/23 7/71/27 6/72/26
+f 2/73/22 1/74/21 5/75/25 8/76/28
diff --git a/homedecor_modpack/homedecor/models/homedecor_banister_diagonal_right.obj b/homedecor_modpack/homedecor/models/homedecor_banister_diagonal_right.obj
new file mode 100644
index 0000000..443aa42
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_banister_diagonal_right.obj
@@ -0,0 +1,167 @@
+# Blender v2.73 (sub 0) OBJ File: 'banister-left.blend'
+# www.blender.org
+o Cylinder_Cylinder_verticals
+v -0.421453 1.531250 0.499999
+v 0.578547 0.531250 0.499999
+v 0.516047 0.468750 0.499999
+v -0.483953 1.468750 0.499999
+v -0.421453 1.531250 0.312499
+v -0.483953 1.468750 0.312499
+v 0.516047 0.468750 0.312499
+v 0.578547 0.531250 0.312499
+v -0.202703 0.250000 0.437499
+v -0.265203 0.250000 0.437499
+v -0.265203 1.250000 0.437499
+v -0.202703 1.187500 0.437499
+v -0.202703 0.250000 0.374999
+v -0.202703 1.187500 0.374999
+v -0.265203 1.250000 0.374999
+v -0.265203 0.250000 0.374999
+v -0.265203 0.250000 0.499999
+v -0.202703 0.250000 0.499999
+v 0.297297 -0.187500 0.437499
+v 0.234797 -0.187500 0.437499
+v 0.234797 0.812500 0.437499
+v 0.297297 0.750000 0.437499
+v 0.297297 -0.187500 0.374999
+v 0.297297 0.750000 0.374999
+v 0.234797 0.812500 0.374999
+v 0.234797 -0.187500 0.374999
+v 0.234797 -0.187500 0.499999
+v 0.297297 -0.187500 0.499999
+v 0.297297 -0.125000 0.499999
+v 0.297297 -0.125000 0.437499
+v 0.234797 -0.125000 0.437499
+v 0.234797 -0.125000 0.499999
+v -0.202703 0.312500 0.437499
+v -0.202703 0.312500 0.499999
+v -0.265203 0.312500 0.499999
+v -0.265203 0.312500 0.437499
+vt -0.312500 0.500000
+vt 0.562500 0.500000
+vt 0.625000 0.437500
+vt -0.312500 0.437500
+vt 0.125000 0.687500
+vt 0.125000 0.750000
+vt 1.062500 0.750000
+vt 1.000000 0.687500
+vt 1.000000 0.125000
+vt 1.125000 0.125000
+vt 1.125000 0.062500
+vt 1.000000 0.062500
+vt 0.125000 0.625000
+vt 1.000000 0.625000
+vt 1.062500 0.562500
+vt 0.125000 0.562500
+vt 1.062500 0.687500
+vt 1.187500 0.125000
+vt 1.312500 0.125000
+vt 1.312500 0.062500
+vt 1.187500 0.062500
+vt 0.875000 0.875000
+vt 0.875000 0.812500
+vt -0.062500 0.812500
+vt -0.062500 0.875000
+vt -0.312500 0.375000
+vt 0.562500 0.437500
+vt 0.562500 0.375000
+vt 0.875000 1.000000
+vt 0.875000 0.937500
+vt -0.062500 0.937500
+vt -0.062500 1.000000
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 1.312500 0.250000
+vt 1.312500 0.187500
+vt 0.437500 0.125000
+vt 0.500000 0.187500
+vt 0.500000 0.125000
+vt -0.375000 0.812500
+vt -0.375000 0.875000
+vt -0.312500 0.875000
+vt -0.312500 0.812500
+vt 0.812500 0.125000
+vt 0.812500 0.062500
+vt 0.750000 0.062500
+vt 0.750000 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.062500
+vt 0.875000 0.062500
+vt 0.875000 0.125000
+vt -0.312500 0.937500
+vt -0.250000 0.937500
+vt -0.250000 0.875000
+vt -0.250000 0.375000
+vt -0.250000 0.312500
+vt -0.312500 0.312500
+vt -0.125000 0.875000
+vt -0.125000 0.937500
+vt -0.125000 1.000000
+vt -0.187500 0.625000
+vt -0.187500 0.562500
+vt -0.375000 0.562500
+vt -0.375000 0.625000
+vt -0.125000 0.625000
+vt 0.062500 0.625000
+vt 0.062500 0.562500
+vt -0.125000 0.562500
+vt 1.375000 0.250000
+vt 1.375000 0.062500
+vt 0.375000 0.062500
+vt 0.375000 0.250000
+vt -0.375000 0.312500
+vt -0.375000 0.500000
+vt 0.625000 0.500000
+vt 0.625000 0.312500
+vn 0.707100 0.000000 0.707100
+vn 0.554700 0.000000 0.832000
+vn -0.894400 0.000000 0.447200
+vn -0.707100 0.000000 0.707100
+vn 0.577400 -0.577400 -0.577400
+vn -0.577400 -0.577400 -0.577400
+vn -0.894400 -0.000000 -0.447200
+vn 0.554700 -0.000000 -0.832100
+vn 0.577400 -0.577400 0.577300
+vn -0.577400 -0.577400 0.577400
+vn 0.577400 -0.577400 0.577400
+vn 1.000000 0.000000 0.000000
+vn 0.707100 0.707100 -0.000000
+vn 0.577300 0.577300 0.577300
+vn -1.000000 0.000000 0.000000
+vn -0.577300 0.577300 0.577300
+vn -0.707100 0.707100 -0.000000
+vn 0.000000 0.816500 0.577300
+vn -0.816500 0.000000 0.577300
+vn 0.000000 -0.816500 0.577300
+vn 0.816500 0.000000 0.577300
+vn 0.000000 0.816500 -0.577300
+vn 0.816500 0.000000 -0.577300
+vn 0.000000 -0.816500 -0.577300
+vn -0.816500 0.000000 -0.577300
+g Cylinder_Cylinder_verticals_Cylinder_Cylinder_verticals_verticals
+s 1
+f 9/1/1 12/2/2 11/3/3 10/4/4
+f 13/5/5 16/6/6 15/7/7 14/8/8
+f 13/9/5 18/10/9 17/11/10 16/12/6
+f 19/13/1 22/14/2 21/15/3 20/16/4
+f 23/13/5 26/5/6 25/17/7 24/14/8
+f 23/18/5 28/19/11 27/20/10 26/21/6
+f 11/22/3 15/23/7 16/24/6 10/25/4
+f 9/26/1 13/4/5 14/27/8 12/28/2
+f 21/29/3 25/30/7 26/31/6 20/32/4
+f 19/33/1 23/34/5 24/35/8 22/36/2
+f 28/37/11 19/33/12 30/38/13 29/39/14
+f 20/40/15 27/41/10 32/42/16 31/43/17
+f 33/44/13 36/45/17 35/46/16 34/47/14
+f 30/48/13 31/49/17 32/50/16 29/51/14
+f 10/42/15 17/52/10 35/53/16 36/54/17
+f 33/55/13 34/56/14 18/57/9 9/26/12
+f 17/42/10 18/52/9 34/53/14 35/54/16
+f 27/40/10 28/41/11 29/42/14 32/43/16
+g Cylinder_Cylinder_verticals_Cylinder_Cylinder_verticals_railing
+f 1/30/18 4/22/19 3/58/20 2/59/21
+f 5/30/22 8/59/23 7/60/24 6/29/25
+f 1/61/18 5/62/22 6/63/25 4/64/19
+f 2/65/21 3/66/20 7/67/24 8/68/23
+f 4/69/19 6/70/25 7/71/24 3/72/20
+f 2/73/21 8/74/23 5/75/22 1/76/18
diff --git a/homedecor_modpack/homedecor/models/homedecor_banister_horizontal.obj b/homedecor_modpack/homedecor/models/homedecor_banister_horizontal.obj
new file mode 100644
index 0000000..7784e99
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_banister_horizontal.obj
@@ -0,0 +1,87 @@
+# Blender v2.73 (sub 0) OBJ File: 'banister-horizontal_left.blend'
+# www.blender.org
+o Cylinder_Cylinder_verticals
+v -0.312500 0.437500 0.437500
+v -0.312500 0.437500 0.500000
+v -0.250000 0.437500 0.500000
+v -0.250000 0.437500 0.437500
+v -0.312500 -0.500000 0.437500
+v -0.312500 -0.500000 0.500000
+v -0.250000 -0.500000 0.500000
+v -0.250000 -0.500000 0.437500
+v 0.500000 0.437500 0.312500
+v 0.500000 0.437500 0.500000
+v -0.500000 0.437500 0.500000
+v -0.500000 0.437500 0.312500
+v 0.500000 0.500000 0.312500
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.312500
+v 0.312500 -0.500000 0.437500
+v 0.312500 -0.500000 0.500000
+v 0.250000 -0.500000 0.500000
+v 0.250000 -0.500000 0.437500
+v 0.312500 0.437500 0.437500
+v 0.312500 0.437500 0.500000
+v 0.250000 0.437500 0.500000
+v 0.250000 0.437500 0.437500
+vt 0.750000 0.062500
+vt 0.750000 0.000000
+vt 0.812500 0.000000
+vt 0.812500 0.062500
+vt 0.937500 0.000000
+vt 0.937500 0.062500
+vt 0.000000 0.062500
+vt 0.000000 -0.000000
+vt 0.937500 0.562500
+vt 0.937500 0.625000
+vt -0.000000 0.625000
+vt -0.000000 0.562500
+vt 0.937500 0.875000
+vt 0.937500 0.812500
+vt 0.000000 0.812500
+vt 0.000000 0.875000
+vt 0.937500 0.750000
+vt 0.937500 0.687500
+vt -0.000000 0.687500
+vt -0.000000 0.750000
+vt 0.187500 0.062500
+vt 0.187500 0.000000
+vt 0.250000 0.000000
+vt 0.250000 0.062500
+vt -0.062500 1.000000
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt -0.062500 0.937500
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vt 1.000000 0.937500
+vt -0.000000 0.937500
+vt 0.000000 0.187500
+vt 1.000000 0.187500
+vt 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cylinder_Cylinder_verticals_Cylinder_Cylinder_verticals_verticals
+s off
+f 8/1/1 7/2/1 6/3/1 5/4/1
+f 1/5/2 4/6/2 8/7/2 5/8/2
+f 2/9/3 1/10/3 5/11/3 6/12/3
+f 3/6/4 2/5/4 6/8/4 7/7/4
+f 21/13/5 22/14/5 18/15/5 17/16/5
+f 22/17/4 23/18/4 19/19/4 18/20/4
+f 23/9/3 24/10/3 20/11/3 19/12/3
+f 24/18/2 21/17/2 17/20/2 20/19/2
+f 17/21/1 18/22/1 19/23/1 20/24/1
+f 4/13/5 3/14/5 7/15/5 8/16/5
+g Cylinder_Cylinder_verticals_Cylinder_Cylinder_verticals_railing
+f 13/25/5 14/26/5 10/27/5 9/28/5
+f 14/29/4 15/30/4 11/31/4 10/32/4
+f 15/26/3 16/25/3 12/28/3 11/27/3
+f 16/30/2 13/29/2 9/32/2 12/31/2
+f 9/8/1 10/33/1 11/34/1 12/35/1
+f 16/35/6 15/34/6 14/33/6 13/8/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_barbecue.obj b/homedecor_modpack/homedecor/models/homedecor_barbecue.obj
new file mode 100644
index 0000000..6a646be
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_barbecue.obj
@@ -0,0 +1,362 @@
+# Blender v2.73 (sub 0) OBJ File: 'barbecue.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 0.062500 0.312500
+v -0.500000 0.062500 -0.312500
+v 0.500000 0.062500 -0.312500
+v 0.500000 0.062500 0.312500
+v -0.500000 0.500000 0.312500
+v -0.500000 0.500000 -0.312500
+v 0.500000 0.500000 -0.312500
+v 0.500000 0.500000 0.312500
+v -1.625000 -0.500000 0.500000
+v -1.625000 -0.500000 -0.500000
+v -0.625000 -0.500000 -0.500000
+v -0.625000 -0.500000 0.500000
+v -1.625000 0.500000 0.500000
+v -1.625000 0.500000 -0.500000
+v -0.625000 0.500000 -0.500000
+v -0.625000 0.500000 0.500000
+v -0.500000 -0.500000 0.312500
+v -0.500000 -0.500000 0.250000
+v -0.437500 -0.500000 0.250000
+v -0.437500 -0.500000 0.312500
+v -0.500000 0.062500 0.312500
+v -0.500000 0.062500 0.250000
+v -0.437500 0.062500 0.250000
+v -0.437500 0.062500 0.312500
+v -0.500000 -0.500000 -0.250000
+v -0.500000 -0.500000 -0.312500
+v -0.437500 -0.500000 -0.312500
+v -0.437500 -0.500000 -0.250000
+v -0.500000 0.062500 -0.250000
+v -0.500000 0.062500 -0.312500
+v -0.437500 0.062500 -0.312500
+v -0.437500 0.062500 -0.250000
+v 0.437500 -0.500000 -0.250000
+v 0.437500 -0.500000 -0.312500
+v 0.500000 -0.500000 -0.312500
+v 0.500000 -0.500000 -0.250000
+v 0.437500 0.062500 -0.250000
+v 0.437500 0.062500 -0.312500
+v 0.500000 0.062500 -0.312500
+v 0.500000 0.062500 -0.250000
+v 0.437500 -0.500000 0.312500
+v 0.437500 -0.500000 0.250000
+v 0.500000 -0.500000 0.250000
+v 0.500000 -0.500000 0.312500
+v 0.437500 0.062500 0.312500
+v 0.437500 0.062500 0.250000
+v 0.500000 0.062500 0.250000
+v 0.500000 0.062500 0.312500
+v -0.500000 0.500000 0.250000
+v 0.500000 0.500000 0.250000
+v -0.500000 0.500000 -0.250000
+v 0.500000 0.500000 -0.250000
+v -0.437500 0.500000 0.250000
+v -0.437500 0.500000 -0.250000
+v 0.437500 0.500000 0.250000
+v 0.437500 0.500000 -0.250000
+v -0.437500 0.312500 0.250000
+v -0.437500 0.312500 -0.250000
+v 0.437500 0.312500 0.250000
+v 0.437500 0.312500 -0.250000
+v -0.390625 0.453125 0.250000
+v -0.390625 0.453125 -0.250000
+v -0.359375 0.453125 -0.250000
+v -0.359375 0.453125 0.250000
+v -0.390625 0.488281 0.250000
+v -0.390625 0.488281 -0.250000
+v -0.359375 0.488281 -0.250000
+v -0.359375 0.488281 0.250000
+v -0.265625 0.453125 0.250000
+v -0.265625 0.453125 -0.250000
+v -0.234375 0.453125 -0.250000
+v -0.234375 0.453125 0.250000
+v -0.265625 0.488281 0.250000
+v -0.265625 0.488281 -0.250000
+v -0.234375 0.488281 -0.250000
+v -0.234375 0.488281 0.250000
+v -0.140625 0.453125 0.250000
+v -0.140625 0.453125 -0.250000
+v -0.109375 0.453125 -0.250000
+v -0.109375 0.453125 0.250000
+v -0.140625 0.488281 0.250000
+v -0.140625 0.488281 -0.250000
+v -0.109375 0.488281 -0.250000
+v -0.109375 0.488281 0.250000
+v -0.015625 0.453125 0.250000
+v -0.015625 0.453125 -0.250000
+v 0.015625 0.453125 -0.250000
+v 0.015625 0.453125 0.250000
+v -0.015625 0.488281 0.250000
+v -0.015625 0.488281 -0.250000
+v 0.015625 0.488281 -0.250000
+v 0.015625 0.488281 0.250000
+v 0.109375 0.453125 0.250000
+v 0.109375 0.453125 -0.250000
+v 0.140625 0.453125 -0.250000
+v 0.140625 0.453125 0.250000
+v 0.109375 0.488281 0.250000
+v 0.109375 0.488281 -0.250000
+v 0.140625 0.488281 -0.250000
+v 0.140625 0.488281 0.250000
+v 0.234375 0.453125 0.250000
+v 0.234375 0.453125 -0.250000
+v 0.265625 0.453125 -0.250000
+v 0.265625 0.453125 0.250000
+v 0.234375 0.488281 0.250000
+v 0.234375 0.488281 -0.250000
+v 0.265625 0.488281 -0.250000
+v 0.265625 0.488281 0.250000
+v 0.359375 0.453125 0.250000
+v 0.359375 0.453125 -0.250000
+v 0.390625 0.453125 -0.250000
+v 0.390625 0.453125 0.250000
+v 0.359375 0.488281 0.250000
+v 0.359375 0.488281 -0.250000
+v 0.390625 0.488281 -0.250000
+v 0.390625 0.488281 0.250000
+v 0.187500 0.511719 -0.093750
+v 0.187500 0.488282 -0.093750
+v -0.187500 0.488282 -0.093750
+v -0.187500 0.511719 -0.093750
+v -0.121209 0.488282 -0.066291
+v -0.121209 0.511719 -0.066291
+v -0.093750 0.488282 0.000000
+v -0.093750 0.511719 0.000000
+v -0.121209 0.488282 0.066291
+v -0.121209 0.511719 0.066291
+v -0.187500 0.488282 0.093750
+v -0.187500 0.511719 0.093750
+v -0.253791 0.488282 0.066291
+v -0.253791 0.511719 0.066291
+v -0.281250 0.488282 -0.000000
+v -0.281250 0.511719 -0.000000
+v -0.253791 0.488282 -0.066291
+v -0.253791 0.511719 -0.066291
+v 0.253791 0.488282 -0.066291
+v 0.253791 0.511719 -0.066291
+v 0.281250 0.488282 0.000000
+v 0.281250 0.511719 0.000000
+v 0.253791 0.488282 0.066291
+v 0.253791 0.511719 0.066291
+v 0.187500 0.488282 0.093750
+v 0.187500 0.511719 0.093750
+v 0.121209 0.488282 0.066291
+v 0.121209 0.511719 0.066291
+v 0.093750 0.488282 -0.000000
+v 0.093750 0.511719 -0.000000
+v 0.121209 0.488282 -0.066291
+v 0.121209 0.511719 -0.066291
+v -0.187500 0.511719 -0.000000
+v 0.187500 0.511719 0.000000
+vt 0.000000 0.812500
+vt 0.000000 0.187500
+vt 0.437500 0.187500
+vt 0.437500 0.812500
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.437500 0.000000
+vt 0.437500 1.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.812500 0.000000
+vt 0.812500 1.000000
+vt 0.750000 1.000000
+vt 0.750000 0.000000
+vt 0.437500 0.750000
+vt 1.000000 0.750000
+vt 1.000000 0.812500
+vt 0.437500 0.937500
+vt 1.000000 0.937500
+vt 0.437500 0.250000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 0.437500 0.062500
+vt 1.000000 0.062500
+vt 0.062500 0.000000
+vt 0.062500 0.062500
+vt 0.000000 0.062500
+vt 0.937500 0.000000
+vt 0.937500 0.062500
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.000000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.187500 1.000000
+vt 0.187500 0.000000
+vt 0.250000 0.000000
+vt 0.250000 1.000000
+vt 0.750000 0.062500
+vt 0.250000 0.062500
+vt 0.750000 0.937500
+vt 0.250000 0.937500
+vt 0.000000 0.250000
+vt 0.187500 0.250000
+vt 0.187500 0.750000
+vt 0.000000 0.750000
+vt 0.187500 0.062500
+vt 0.187500 0.937500
+vt 0.890625 0.750000
+vt 0.890625 0.250000
+vt 0.921875 0.250000
+vt 0.921875 0.750000
+vt 0.062500 0.812500
+vt 0.062500 0.187500
+vt 0.937500 0.187500
+vt 0.937500 0.812500
+vt 0.421376 0.729703
+vt 0.533337 0.683327
+vt 0.533337 0.841663
+vt 0.875000 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.250000
+vt 0.875000 0.250000
+vt 0.750000 0.500000
+vt 0.812500 0.500000
+vt 0.812500 0.625000
+vt 0.750000 0.625000
+vt 0.645298 0.729703
+vt 0.875000 0.000000
+vt 0.812500 0.750000
+vt 0.750000 0.750000
+vt 0.421376 0.953624
+vt 0.375000 0.841663
+vt 0.875000 0.875000
+vt 0.937500 0.875000
+vt 0.875000 1.000000
+vt 0.812500 0.875000
+vt 0.750000 0.875000
+vt 0.533337 1.000000
+vt 0.875000 0.750000
+vt 0.937500 0.750000
+vt 0.937500 0.375000
+vt 0.875000 0.375000
+vt 0.875000 0.625000
+vt 0.937500 0.625000
+vt 0.812500 0.125000
+vt 0.750000 0.125000
+vt 0.937500 0.500000
+vt 0.875000 0.500000
+vt 0.812500 0.250000
+vt 0.750000 0.250000
+vt 0.270298 0.953624
+vt 0.158337 1.000000
+vt 0.158337 0.841663
+vt 0.750000 0.375000
+vt 0.812500 0.375000
+vt 0.645298 0.953624
+vt 0.691673 0.841663
+vt 0.046376 0.953624
+vt 0.000000 0.841663
+vt 0.046376 0.729703
+vt 0.158337 0.683327
+vt 0.270298 0.729703
+vt 0.316673 0.841663
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.923900 0.000000 0.382700
+vn 0.382700 0.000000 -0.923900
+vn -0.382700 0.000000 0.923900
+vn 0.923900 0.000000 -0.382700
+vn 0.382700 0.000000 0.923900
+vn 0.923900 0.000000 0.382700
+vn -0.923900 0.000000 -0.382700
+vn -0.382700 0.000000 -0.923900
+g Cylinder_Cylinder_metal
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/5/2 7/6/2 3/7/2 2/8/2
+f 7/1/3 8/2/3 4/3/3 3/4/3
+f 8/5/4 5/6/4 1/7/4 4/8/4
+f 1/6/5 2/9/5 3/10/5 4/5/5
+f 5/11/6 8/12/6 50/13/6 49/14/6
+f 21/4/1 22/15/1 18/16/1 17/17/1
+f 22/8/2 23/18/2 19/19/2 18/10/2
+f 23/20/3 24/3/3 20/21/3 19/22/3
+f 24/23/4 21/7/4 17/9/4 20/24/4
+f 17/6/5 18/25/5 19/26/5 20/27/5
+f 29/20/1 30/3/1 26/21/1 25/22/1
+f 30/8/2 31/18/2 27/19/2 26/10/2
+f 31/4/3 32/15/3 28/16/3 27/17/3
+f 32/23/4 29/7/4 25/9/4 28/24/4
+f 25/28/5 26/9/5 27/24/5 28/29/5
+f 37/20/1 38/3/1 34/21/1 33/22/1
+f 38/23/2 39/7/2 35/9/2 34/24/2
+f 39/4/3 40/15/3 36/16/3 35/17/3
+f 40/8/4 37/18/4 33/19/4 36/10/4
+f 33/30/5 34/19/5 35/10/5 36/31/5
+f 45/4/1 46/15/1 42/16/1 41/17/1
+f 46/23/2 47/7/2 43/9/2 42/24/2
+f 47/20/3 48/3/3 44/21/3 43/22/3
+f 48/8/4 45/18/4 41/19/4 44/10/4
+f 41/32/5 42/33/5 43/34/5 44/5/5
+f 7/35/6 6/36/6 51/37/6 52/38/6
+f 53/39/6 54/40/6 51/37/6 49/14/6
+f 55/41/6 50/13/6 52/38/6 56/42/6
+f 56/43/1 60/44/1 59/45/1 55/46/1
+f 54/46/3 53/43/3 57/44/3 58/45/3
+f 56/32/4 54/27/4 58/47/4 60/48/4
+f 59/47/2 57/48/2 53/32/2 55/27/2
+f 65/31/1 66/28/1 62/9/1 61/10/1
+f 67/31/3 68/28/3 64/9/3 63/10/3
+f 68/49/6 67/50/6 66/51/6 65/52/6
+f 73/31/1 74/28/1 70/9/1 69/10/1
+f 75/31/3 76/28/3 72/9/3 71/10/3
+f 76/49/6 75/50/6 74/51/6 73/52/6
+f 81/31/1 82/28/1 78/9/1 77/10/1
+f 83/31/3 84/28/3 80/9/3 79/10/3
+f 84/49/6 83/50/6 82/51/6 81/52/6
+f 89/31/1 90/28/1 86/9/1 85/10/1
+f 91/31/3 92/28/3 88/9/3 87/10/3
+f 92/49/6 91/50/6 90/51/6 89/52/6
+f 97/31/1 98/28/1 94/9/1 93/10/1
+f 99/31/3 100/28/3 96/9/3 95/10/3
+f 100/49/6 99/50/6 98/51/6 97/52/6
+f 105/31/1 106/28/1 102/9/1 101/10/1
+f 107/31/3 108/28/3 104/9/3 103/10/3
+f 108/49/6 107/50/6 106/51/6 105/52/6
+f 113/31/1 114/28/1 110/9/1 109/10/1
+f 115/31/3 116/28/3 112/9/3 111/10/3
+f 116/49/6 115/50/6 114/51/6 113/52/6
+g Cylinder_Cylinder_embers
+f 58/53/6 57/54/6 59/55/6 60/56/6
+g Cylinder_Cylinder_meat
+f 130/57/6 128/58/6 149/59/6
+f 143/60/7 144/61/7 146/62/7 145/63/7
+f 119/64/8 120/65/8 122/66/8 121/67/8
+f 128/58/6 126/68/6 149/59/6
+f 141/69/9 142/28/9 144/61/9 143/60/9
+f 121/67/10 122/66/10 124/70/10 123/71/10
+f 134/72/6 132/73/6 149/59/6
+f 139/74/11 140/75/11 142/31/11 141/76/11
+f 123/71/12 124/70/12 126/77/12 125/78/12
+f 120/79/6 134/72/6 149/59/6
+f 137/80/12 138/81/12 140/75/12 139/74/12
+f 125/78/11 126/77/11 128/12/11 127/13/11
+f 145/63/13 146/62/13 148/82/13 147/83/13
+f 135/84/10 136/85/10 138/81/10 137/80/10
+f 127/14/9 128/11/9 130/86/9 129/87/9
+f 147/83/14 148/82/14 117/88/14 118/89/14
+f 118/89/8 117/88/8 136/85/8 135/84/8
+f 129/87/7 130/86/7 132/90/7 131/91/7
+f 136/92/6 117/93/6 150/94/6
+f 133/95/14 134/96/14 120/65/14 119/64/14
+f 131/91/13 132/90/13 134/96/13 133/95/13
+f 132/73/6 130/57/6 149/59/6
+f 122/97/6 120/79/6 149/59/6
+f 126/68/6 124/98/6 149/59/6
+f 124/98/6 122/97/6 149/59/6
+f 117/93/6 148/99/6 150/94/6
+f 148/99/6 146/100/6 150/94/6
+f 146/100/6 144/101/6 150/94/6
+f 144/101/6 142/102/6 150/94/6
+f 142/102/6 140/103/6 150/94/6
+f 140/103/6 138/104/6 150/94/6
+f 138/104/6 136/92/6 150/94/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_bathroom_faucet.obj b/homedecor_modpack/homedecor/models/homedecor_bathroom_faucet.obj
new file mode 100644
index 0000000..b987fd8
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bathroom_faucet.obj
@@ -0,0 +1,993 @@
+# Blender v2.73 (sub 0) OBJ File: 'bathroom-faucet.blend'
+# www.blender.org
+o Cylinder
+v -0.250000 -0.421875 0.500000
+v -0.250000 -0.421875 0.484375
+v 0.250000 -0.421875 0.484375
+v 0.250000 -0.421875 0.500000
+v -0.250000 -0.265625 0.500000
+v -0.250000 -0.265625 0.484375
+v 0.250000 -0.265625 0.484375
+v 0.250000 -0.265625 0.500000
+v -0.062500 -0.421875 0.312500
+v -0.016179 -0.359927 0.250003
+v -0.016179 -0.410156 0.250003
+v -0.016179 -0.304690 0.305242
+v -0.016179 -0.304690 0.484375
+v 0.016179 -0.304690 0.305242
+v 0.016179 -0.304690 0.484375
+v 0.039060 -0.327571 0.305242
+v 0.039060 -0.327571 0.484375
+v 0.039060 -0.359929 0.305242
+v 0.039060 -0.359929 0.484375
+v 0.016179 -0.382810 0.305242
+v 0.016179 -0.382810 0.484375
+v -0.016179 -0.382810 0.305242
+v -0.016179 -0.382810 0.484375
+v -0.039060 -0.359929 0.305242
+v -0.039060 -0.359929 0.484375
+v -0.039060 -0.327571 0.305242
+v -0.039060 -0.327571 0.484375
+v 0.016179 -0.410156 0.250003
+v 0.016179 -0.359927 0.250003
+v 0.039060 -0.410156 0.272884
+v 0.039060 -0.359927 0.272884
+v 0.039060 -0.410156 0.305242
+v 0.167968 -0.338896 0.484375
+v 0.016179 -0.410156 0.328122
+v 0.016179 -0.359927 0.328122
+v -0.016179 -0.410156 0.328122
+v -0.016179 -0.359927 0.328122
+v -0.039060 -0.410156 0.305242
+v 0.167968 -0.338896 0.464844
+v -0.039060 -0.410156 0.272884
+v -0.039060 -0.359927 0.272884
+v -0.016179 -0.332308 0.257404
+v 0.016179 -0.332308 0.257404
+v 0.039060 -0.343748 0.277219
+v 0.161104 -0.332032 0.484375
+v 0.161104 -0.332032 0.464844
+v -0.039060 -0.343748 0.277219
+v -0.016179 -0.312090 0.277623
+v 0.016179 -0.312090 0.277623
+v 0.039060 -0.331905 0.289063
+v 0.151396 -0.332032 0.484375
+v 0.151396 -0.332032 0.464844
+v -0.039060 -0.331905 0.289063
+v 0.167968 -0.348604 0.464844
+v 0.167968 -0.348604 0.484375
+v 0.161104 -0.355468 0.464844
+v 0.161104 -0.355468 0.484375
+v 0.151396 -0.355468 0.464844
+v 0.151396 -0.355468 0.484375
+v 0.144532 -0.348604 0.464844
+v 0.144532 -0.348604 0.484375
+v 0.144532 -0.338896 0.464844
+v 0.144532 -0.338896 0.484375
+v 0.143306 -0.312500 0.441406
+v 0.143306 -0.312500 0.464844
+v 0.169194 -0.312500 0.441406
+v 0.169194 -0.312500 0.464844
+v 0.187500 -0.330806 0.441406
+v 0.187500 -0.330806 0.464844
+v 0.187500 -0.356694 0.441406
+v 0.187500 -0.356694 0.464844
+v 0.169194 -0.375000 0.441406
+v 0.169194 -0.375000 0.464844
+v 0.143306 -0.375000 0.441406
+v 0.143306 -0.375000 0.464844
+v 0.125000 -0.356694 0.441406
+v 0.125000 -0.356694 0.464844
+v 0.125000 -0.330806 0.441406
+v 0.125000 -0.330806 0.464844
+v 0.212891 -0.357553 0.447407
+v 0.212891 -0.349467 0.439322
+v 0.187500 -0.348482 0.441701
+v 0.238281 -0.348257 0.442244
+v 0.187500 -0.355174 0.448393
+v 0.238281 -0.354630 0.448618
+v 0.187500 -0.355174 0.457857
+v 0.238281 -0.354630 0.457632
+v 0.187500 -0.348482 0.464549
+v 0.238281 -0.348257 0.464005
+v 0.187500 -0.339018 0.464549
+v 0.238281 -0.339243 0.464005
+v 0.187500 -0.332326 0.457857
+v 0.238281 -0.332870 0.457632
+v 0.187500 -0.332326 0.448393
+v 0.238281 -0.332870 0.448618
+v 0.187500 -0.339018 0.441701
+v 0.238281 -0.339243 0.442244
+v 0.212891 -0.357553 0.458842
+v 0.212891 -0.349467 0.466928
+v 0.212891 -0.338033 0.466928
+v 0.212891 -0.329947 0.458842
+v 0.212891 -0.329947 0.447407
+v 0.212891 -0.338033 0.439322
+v 0.234710 -0.337771 0.438689
+v 0.234710 -0.329314 0.447145
+v 0.234710 -0.349729 0.438689
+v 0.234710 -0.329314 0.459104
+v 0.234710 -0.337771 0.467561
+v 0.234710 -0.349729 0.467561
+v 0.234710 -0.358186 0.459104
+v 0.234710 -0.358186 0.447145
+v 0.156250 -0.343750 0.433594
+v 0.170053 -0.287109 0.447407
+v 0.161967 -0.287109 0.439322
+v 0.160982 -0.312500 0.441701
+v 0.160757 -0.261719 0.442244
+v 0.167674 -0.312500 0.448393
+v 0.167130 -0.261719 0.448618
+v 0.167674 -0.312500 0.457857
+v 0.167130 -0.261719 0.457632
+v 0.160982 -0.312500 0.464549
+v 0.160757 -0.261719 0.464005
+v 0.151518 -0.312500 0.464549
+v 0.151743 -0.261719 0.464005
+v 0.144826 -0.312500 0.457857
+v 0.145370 -0.261719 0.457632
+v 0.144826 -0.312500 0.448393
+v 0.145370 -0.261719 0.448618
+v 0.151518 -0.312500 0.441701
+v 0.151743 -0.261719 0.442244
+v 0.170053 -0.287109 0.458842
+v 0.161967 -0.287109 0.466928
+v 0.150533 -0.287109 0.466928
+v 0.142447 -0.287109 0.458842
+v 0.142447 -0.287109 0.447407
+v 0.150533 -0.287109 0.439322
+v 0.150271 -0.265290 0.438689
+v 0.141814 -0.265290 0.447145
+v 0.162229 -0.265290 0.438689
+v 0.141814 -0.265290 0.459104
+v 0.150271 -0.265290 0.467561
+v 0.162229 -0.265290 0.467561
+v 0.170686 -0.265290 0.459104
+v 0.170686 -0.265290 0.447145
+v 0.099609 -0.329947 0.447407
+v 0.099609 -0.338033 0.439322
+v 0.125000 -0.339018 0.441701
+v 0.074219 -0.339243 0.442244
+v 0.125000 -0.332326 0.448393
+v 0.074219 -0.332870 0.448618
+v 0.125000 -0.332326 0.457857
+v 0.074219 -0.332870 0.457632
+v 0.125000 -0.339018 0.464549
+v 0.074219 -0.339243 0.464005
+v 0.125000 -0.348482 0.464549
+v 0.074219 -0.348257 0.464005
+v 0.125000 -0.355174 0.457857
+v 0.074219 -0.354630 0.457632
+v 0.125000 -0.355174 0.448393
+v 0.074219 -0.354630 0.448618
+v 0.125000 -0.348482 0.441701
+v 0.074219 -0.348257 0.442244
+v 0.099609 -0.329947 0.458842
+v 0.099609 -0.338033 0.466928
+v 0.099609 -0.349467 0.466928
+v 0.099609 -0.357553 0.458842
+v 0.099609 -0.357553 0.447407
+v 0.099609 -0.349467 0.439322
+v 0.077790 -0.349729 0.438689
+v 0.077790 -0.358186 0.447145
+v 0.077790 -0.337771 0.438689
+v 0.077790 -0.358186 0.459104
+v 0.077790 -0.349729 0.467561
+v 0.077790 -0.337771 0.467561
+v 0.077790 -0.329314 0.459104
+v 0.077790 -0.329314 0.447145
+v 0.142447 -0.400391 0.447407
+v 0.150533 -0.400391 0.439322
+v 0.151518 -0.375000 0.441701
+v 0.151743 -0.425781 0.442244
+v 0.144826 -0.375000 0.448393
+v 0.145370 -0.425781 0.448618
+v 0.144826 -0.375000 0.457857
+v 0.145370 -0.425781 0.457632
+v 0.151518 -0.375000 0.464549
+v 0.151743 -0.425781 0.464005
+v 0.160982 -0.375000 0.464549
+v 0.160757 -0.425781 0.464005
+v 0.167674 -0.375000 0.457857
+v 0.167130 -0.425781 0.457632
+v 0.167674 -0.375000 0.448393
+v 0.167130 -0.425781 0.448618
+v 0.160982 -0.375000 0.441701
+v 0.160757 -0.425781 0.442244
+v 0.142447 -0.400391 0.458842
+v 0.150533 -0.400391 0.466928
+v 0.161967 -0.400391 0.466928
+v 0.170053 -0.400391 0.458842
+v 0.170053 -0.400391 0.447407
+v 0.161967 -0.400391 0.439322
+v 0.162229 -0.422210 0.438689
+v 0.170686 -0.422210 0.447145
+v 0.150271 -0.422210 0.438689
+v 0.170686 -0.422210 0.459104
+v 0.162229 -0.422210 0.467561
+v 0.150271 -0.422210 0.467561
+v 0.141814 -0.422210 0.459104
+v 0.141814 -0.422210 0.447145
+v -0.144532 -0.338896 0.484375
+v -0.144532 -0.338896 0.464844
+v -0.151396 -0.332032 0.484375
+v -0.151396 -0.332032 0.464844
+v -0.161104 -0.332032 0.484375
+v -0.161104 -0.332032 0.464844
+v -0.144532 -0.348604 0.464844
+v -0.144532 -0.348604 0.484375
+v -0.151396 -0.355468 0.464844
+v -0.151396 -0.355468 0.484375
+v -0.161104 -0.355468 0.464844
+v -0.161104 -0.355468 0.484375
+v -0.167968 -0.348604 0.464844
+v -0.167968 -0.348604 0.484375
+v -0.167968 -0.338896 0.464844
+v -0.167968 -0.338896 0.484375
+v -0.169194 -0.312500 0.441406
+v -0.169194 -0.312500 0.464844
+v -0.143306 -0.312500 0.441406
+v -0.143306 -0.312500 0.464844
+v -0.125000 -0.330806 0.441406
+v -0.125000 -0.330806 0.464844
+v -0.125000 -0.356694 0.441406
+v -0.125000 -0.356694 0.464844
+v -0.143306 -0.375000 0.441406
+v -0.143306 -0.375000 0.464844
+v -0.169194 -0.375000 0.441406
+v -0.169194 -0.375000 0.464844
+v -0.187500 -0.356694 0.441406
+v -0.187500 -0.356694 0.464844
+v -0.187500 -0.330806 0.441406
+v -0.187500 -0.330806 0.464844
+v -0.099609 -0.357553 0.447407
+v -0.099609 -0.349467 0.439322
+v -0.125000 -0.348482 0.441701
+v -0.074219 -0.348257 0.442244
+v -0.125000 -0.355174 0.448393
+v -0.074219 -0.354630 0.448618
+v -0.125000 -0.355174 0.457857
+v -0.074219 -0.354630 0.457632
+v -0.125000 -0.348482 0.464549
+v -0.074219 -0.348257 0.464005
+v -0.125000 -0.339018 0.464549
+v -0.074219 -0.339243 0.464005
+v -0.125000 -0.332326 0.457857
+v -0.074219 -0.332870 0.457632
+v -0.125000 -0.332326 0.448393
+v -0.074219 -0.332870 0.448618
+v -0.125000 -0.339018 0.441701
+v -0.074219 -0.339243 0.442244
+v -0.099609 -0.357553 0.458842
+v -0.099609 -0.349467 0.466928
+v -0.099609 -0.338033 0.466928
+v -0.099609 -0.329947 0.458842
+v -0.099609 -0.329947 0.447407
+v -0.099609 -0.338033 0.439322
+v -0.077790 -0.337771 0.438689
+v -0.077790 -0.329314 0.447145
+v -0.077790 -0.349729 0.438689
+v -0.077790 -0.329314 0.459104
+v -0.077790 -0.337771 0.467561
+v -0.077790 -0.349729 0.467561
+v -0.077790 -0.358186 0.459104
+v -0.077790 -0.358186 0.447145
+v -0.156250 -0.343750 0.433594
+v -0.142447 -0.287109 0.447407
+v -0.150533 -0.287109 0.439322
+v -0.151518 -0.312500 0.441701
+v -0.151743 -0.261719 0.442244
+v -0.144826 -0.312500 0.448393
+v -0.145370 -0.261719 0.448618
+v -0.144826 -0.312500 0.457857
+v -0.145370 -0.261719 0.457632
+v -0.151518 -0.312500 0.464549
+v -0.151743 -0.261719 0.464005
+v -0.160982 -0.312500 0.464549
+v -0.160757 -0.261719 0.464005
+v -0.167674 -0.312500 0.457857
+v -0.167130 -0.261719 0.457632
+v -0.167674 -0.312500 0.448393
+v -0.167130 -0.261719 0.448618
+v -0.160982 -0.312500 0.441701
+v -0.160757 -0.261719 0.442244
+v -0.142447 -0.287109 0.458842
+v -0.150533 -0.287109 0.466928
+v -0.161967 -0.287109 0.466928
+v -0.170053 -0.287109 0.458842
+v -0.170053 -0.287109 0.447407
+v -0.161967 -0.287109 0.439322
+v -0.162229 -0.265290 0.438689
+v -0.170686 -0.265290 0.447145
+v -0.150271 -0.265290 0.438689
+v -0.170686 -0.265290 0.459104
+v -0.162229 -0.265290 0.467561
+v -0.150271 -0.265290 0.467561
+v -0.141814 -0.265290 0.459104
+v -0.141814 -0.265290 0.447145
+v -0.212891 -0.329947 0.447407
+v -0.212891 -0.338033 0.439322
+v -0.187500 -0.339018 0.441701
+v -0.238281 -0.339243 0.442244
+v -0.187500 -0.332326 0.448393
+v -0.238281 -0.332870 0.448618
+v -0.187500 -0.332326 0.457857
+v -0.238281 -0.332870 0.457632
+v -0.187500 -0.339018 0.464549
+v -0.238281 -0.339243 0.464005
+v -0.187500 -0.348482 0.464549
+v -0.238281 -0.348257 0.464005
+v -0.187500 -0.355174 0.457857
+v -0.238281 -0.354630 0.457632
+v -0.187500 -0.355174 0.448393
+v -0.238281 -0.354630 0.448618
+v -0.187500 -0.348482 0.441701
+v -0.238281 -0.348257 0.442244
+v -0.212891 -0.329947 0.458842
+v -0.212891 -0.338033 0.466928
+v -0.212891 -0.349467 0.466928
+v -0.212891 -0.357553 0.458842
+v -0.212891 -0.357553 0.447407
+v -0.212891 -0.349467 0.439322
+v -0.234710 -0.349729 0.438689
+v -0.234710 -0.358186 0.447145
+v -0.234710 -0.337771 0.438689
+v -0.234710 -0.358186 0.459104
+v -0.234710 -0.349729 0.467561
+v -0.234710 -0.337771 0.467561
+v -0.234710 -0.329314 0.459104
+v -0.234710 -0.329314 0.447145
+v -0.170053 -0.400391 0.447407
+v -0.161967 -0.400391 0.439322
+v -0.160982 -0.375000 0.441701
+v -0.160757 -0.425781 0.442244
+v -0.167674 -0.375000 0.448393
+v -0.167130 -0.425781 0.448618
+v -0.167674 -0.375000 0.457857
+v -0.167130 -0.425781 0.457632
+v -0.160982 -0.375000 0.464549
+v -0.160757 -0.425781 0.464005
+v -0.151518 -0.375000 0.464549
+v -0.151743 -0.425781 0.464005
+v -0.144826 -0.375000 0.457857
+v -0.145370 -0.425781 0.457632
+v -0.144826 -0.375000 0.448393
+v -0.145370 -0.425781 0.448618
+v -0.151518 -0.375000 0.441701
+v -0.151743 -0.425781 0.442244
+v -0.170053 -0.400391 0.458842
+v -0.161967 -0.400391 0.466928
+v -0.150533 -0.400391 0.466928
+v -0.142447 -0.400391 0.458842
+v -0.142447 -0.400391 0.447407
+v -0.150533 -0.400391 0.439322
+v -0.150271 -0.422210 0.438689
+v -0.141814 -0.422210 0.447145
+v -0.162229 -0.422210 0.438689
+v -0.141814 -0.422210 0.459104
+v -0.150271 -0.422210 0.467561
+v -0.162229 -0.422210 0.467561
+v -0.170686 -0.422210 0.459104
+v -0.170686 -0.422210 0.447145
+vt 0.250000 0.812500
+vt 0.250000 0.750000
+vt 0.437500 0.750000
+vt 0.437500 0.812500
+vt 0.250000 0.250000
+vt 0.437500 0.250000
+vt 0.250000 0.187500
+vt 0.437500 0.187500
+vt 0.187500 0.250000
+vt 0.187500 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.250000
+vt 0.500000 0.750000
+vt 0.500000 0.250000
+vt 0.843722 0.575376
+vt 0.781278 0.575376
+vt 0.737124 0.531222
+vt 0.737124 0.468778
+vt 0.781278 0.424624
+vt 0.843722 0.424624
+vt 0.887876 0.468778
+vt 0.887876 0.531222
+vt 0.625000 0.312500
+vt 0.625000 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.312500
+vt 0.687500 0.500000
+vt 0.875000 0.500000
+vt 0.875000 0.562500
+vt 0.687500 0.562500
+vt 0.633447 0.406211
+vt 0.625085 0.375003
+vt 0.687500 0.375000
+vt 0.375000 0.499919
+vt 0.187500 0.499919
+vt 0.187500 0.437419
+vt 0.375000 0.437419
+vt 0.312500 0.312500
+vt 0.312500 0.375000
+vt 0.250000 0.375000
+vt 0.250000 0.312500
+vt 0.375000 0.437500
+vt 0.187500 0.437500
+vt 0.187500 0.375000
+vt 0.375000 0.375000
+vt 0.406208 0.429058
+vt 0.187500 0.312500
+vt 0.375000 0.312500
+vt 0.429056 0.406212
+vt 0.375000 0.250000
+vt 0.562408 0.375000
+vt 0.500000 0.375000
+vt 0.455870 0.330870
+vt 0.455870 0.268462
+vt 0.500000 0.224332
+vt 0.562408 0.224332
+vt 0.606538 0.268462
+vt 0.606538 0.330870
+vt 0.500000 0.312500
+vt 0.437500 0.375000
+vt 0.437500 0.312500
+vt 0.687500 0.312500
+vt 0.875000 0.312500
+vt 0.875000 0.375000
+vt 0.687500 0.437500
+vt 0.875000 0.437500
+vt 0.437419 0.375003
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.656294 0.429056
+vt 0.687500 0.437415
+vt 0.500000 0.437500
+vt 0.437500 0.437500
+vt 0.500000 0.500000
+vt 0.437500 0.500000
+vt 0.625000 0.437500
+vt 0.562500 0.437500
+vt 0.625000 0.500000
+vt 0.562500 0.500000
+vt 0.375000 0.687500
+vt 0.375000 0.625000
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 0.500000 0.625000
+vt 0.500000 0.687500
+vt 0.562500 0.625000
+vt 0.562500 0.687500
+vt 0.625000 0.625000
+vt 0.625000 0.687500
+vt 0.687500 0.625000
+vt 0.687500 0.687500
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vt 0.312500 0.687500
+vt 0.312500 0.625000
+vt 0.250000 0.687500
+vt 0.250000 0.625000
+vt 0.500000 0.812500
+vt 0.562500 0.750000
+vt 0.562500 0.812500
+vt 0.062500 0.812500
+vt 0.062500 0.750000
+vt 0.125000 0.750000
+vt 0.125000 0.812500
+vt 0.187500 0.812500
+vt 0.312500 0.750000
+vt 0.312500 0.812500
+vt 0.375000 0.750000
+vt 0.375000 0.812500
+vt 0.312444 0.963252
+vt 0.250000 0.963252
+vt 0.281222 0.887876
+vt 0.205846 0.919098
+vt 0.205846 0.856654
+vt 0.312444 0.812500
+vt 0.356598 0.856654
+vt 0.356598 0.919098
+vt 0.500000 0.187500
+vt 0.562500 0.187500
+vt 0.562500 0.250000
+vt 0.125000 0.437500
+vt 0.125000 0.312500
+vt 0.062500 0.250000
+vt 0.062500 0.187500
+vt 0.125000 0.187500
+vt 0.125000 0.250000
+vt 0.250000 0.437500
+vt 0.187500 0.187500
+vt 0.312500 0.437500
+vt 0.312500 0.187500
+vt 0.312500 0.250000
+vt 0.375000 0.187500
+vt 0.375000 0.036757
+vt 0.419152 0.080908
+vt 0.419152 0.143348
+vt 0.312560 0.187500
+vt 0.268408 0.143348
+vt 0.268408 0.080908
+vt 0.312560 0.036757
+vt 0.062500 0.312500
+vt 0.062500 0.437500
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.297100 0.717300 0.630200
+vn -0.297100 0.717300 0.630200
+vn -0.717300 0.297100 0.630200
+vn -0.717300 -0.297100 0.630200
+vn -0.297100 -0.717300 0.630200
+vn 0.297100 -0.717300 0.630200
+vn 0.717300 -0.297100 0.630200
+vn 0.717300 0.297100 0.630200
+vn -0.717300 -0.630200 -0.297100
+vn -0.911400 0.057100 -0.407600
+vn -0.370200 0.118600 -0.921300
+vn -0.297100 -0.630200 -0.717300
+vn -0.370200 0.921300 -0.118600
+vn -0.382700 0.923900 0.000000
+vn 0.382700 0.923900 0.000000
+vn 0.370200 0.921300 -0.118600
+vn -0.900700 0.217200 -0.376100
+vn -0.975300 -0.156200 0.156200
+vn 0.923900 0.382700 0.000000
+vn 0.911400 0.407600 -0.057100
+vn 0.297100 -0.630200 0.717300
+vn 0.382700 0.000000 0.923900
+vn -0.382700 0.000000 0.923900
+vn -0.297100 -0.630200 0.717300
+vn 0.923900 -0.382700 0.000000
+vn 0.975300 -0.156200 0.156200
+vn 0.900700 0.376200 -0.217200
+vn 0.382700 -0.923900 0.000000
+vn 0.900700 0.217200 -0.376100
+vn -0.382700 -0.923900 -0.000000
+vn 0.297100 -0.630200 -0.717300
+vn 0.717300 -0.630200 -0.297100
+vn 0.717300 -0.630200 0.297100
+vn -0.717300 -0.630200 0.297100
+vn 0.370200 0.118600 -0.921300
+vn 0.911400 0.057100 -0.407600
+vn -0.923900 -0.382700 -0.000000
+vn -0.911400 0.407600 -0.057100
+vn -0.923900 0.382700 -0.000000
+vn -0.900700 0.376200 -0.217200
+vn 0.362000 0.466100 -0.807200
+vn 0.362000 0.807300 -0.466000
+vn -0.362000 0.466100 -0.807200
+vn -0.362000 0.807300 -0.466000
+vn -0.317700 0.767000 -0.557400
+vn 0.317700 0.767000 -0.557400
+vn 0.767000 0.317700 -0.557400
+vn 0.767000 -0.317700 -0.557400
+vn 0.317700 -0.767000 -0.557400
+vn -0.317700 -0.767000 -0.557400
+vn -0.767000 -0.317700 -0.557400
+vn -0.767000 0.317700 -0.557400
+vn -0.065600 -0.381800 -0.921900
+vn -0.065600 -0.921900 -0.381800
+vn -0.100900 -0.919200 -0.380700
+vn -0.100900 -0.380700 -0.919200
+vn 0.353600 -0.358000 -0.864200
+vn 0.898600 -0.167900 -0.405400
+vn 0.898600 -0.405400 -0.167900
+vn 0.353600 -0.864200 -0.358000
+vn -0.100900 0.380700 -0.919200
+vn -0.065600 0.381800 -0.921900
+vn -0.100900 -0.919200 0.380700
+vn -0.065600 -0.921900 0.381800
+vn -0.065600 -0.381800 0.921900
+vn -0.100900 -0.380700 0.919200
+vn 0.898600 -0.405400 0.167900
+vn 0.353600 -0.864200 0.358000
+vn 0.353600 0.358000 -0.864200
+vn -0.065600 0.381800 0.921900
+vn -0.100900 0.380700 0.919200
+vn 0.898600 -0.167900 0.405400
+vn 0.353600 -0.358000 0.864200
+vn -0.065600 0.921900 -0.381800
+vn 0.353600 0.864200 -0.358000
+vn -0.065600 0.921900 0.381800
+vn -0.100900 0.919200 0.380700
+vn 0.898600 0.167900 0.405400
+vn 0.353600 0.358000 0.864200
+vn -0.100900 0.919200 -0.380700
+vn 0.898600 0.405400 0.167900
+vn 0.353600 0.864200 0.358000
+vn 0.898600 0.405400 -0.167900
+vn 0.898600 0.167900 -0.405400
+vn 0.381800 -0.065600 -0.921900
+vn 0.921900 -0.065600 -0.381800
+vn 0.919200 -0.100900 -0.380700
+vn 0.380700 -0.100900 -0.919200
+vn 0.358000 0.353600 -0.864200
+vn 0.167900 0.898600 -0.405400
+vn 0.405400 0.898600 -0.167900
+vn 0.864200 0.353600 -0.358000
+vn -0.380700 -0.100900 -0.919200
+vn -0.381800 -0.065600 -0.921900
+vn 0.919200 -0.100900 0.380700
+vn 0.921900 -0.065600 0.381800
+vn 0.381800 -0.065600 0.921900
+vn 0.380700 -0.100900 0.919200
+vn 0.405400 0.898600 0.167900
+vn 0.864200 0.353600 0.358000
+vn -0.358000 0.353600 -0.864200
+vn -0.381800 -0.065600 0.921900
+vn -0.380700 -0.100900 0.919200
+vn 0.167900 0.898600 0.405400
+vn 0.358000 0.353600 0.864200
+vn -0.921900 -0.065600 -0.381800
+vn -0.864200 0.353600 -0.358000
+vn -0.921900 -0.065600 0.381800
+vn -0.919200 -0.100900 0.380700
+vn -0.167900 0.898600 0.405400
+vn -0.358000 0.353600 0.864200
+vn -0.919200 -0.100900 -0.380700
+vn -0.405400 0.898600 0.167900
+vn -0.864200 0.353600 0.358000
+vn -0.405400 0.898600 -0.167900
+vn -0.167900 0.898600 -0.405400
+vn 0.065600 0.381800 -0.921900
+vn 0.065600 0.921900 -0.381800
+vn 0.100900 0.919200 -0.380700
+vn 0.100900 0.380700 -0.919200
+vn -0.353600 0.358000 -0.864200
+vn -0.898600 0.167900 -0.405400
+vn -0.898600 0.405400 -0.167900
+vn -0.353600 0.864200 -0.358000
+vn 0.100900 -0.380700 -0.919200
+vn 0.065600 -0.381800 -0.921900
+vn 0.100900 0.919200 0.380700
+vn 0.065600 0.921900 0.381800
+vn 0.065600 0.381800 0.921900
+vn 0.100900 0.380700 0.919200
+vn -0.898600 0.405400 0.167900
+vn -0.353600 0.864200 0.358000
+vn -0.353600 -0.358000 -0.864200
+vn 0.065600 -0.381800 0.921900
+vn 0.100900 -0.380700 0.919200
+vn -0.898600 0.167900 0.405400
+vn -0.353600 0.358000 0.864200
+vn 0.065600 -0.921900 -0.381800
+vn -0.353600 -0.864200 -0.358000
+vn 0.065600 -0.921900 0.381800
+vn 0.100900 -0.919200 0.380700
+vn -0.898600 -0.167900 0.405400
+vn -0.353600 -0.358000 0.864200
+vn 0.100900 -0.919200 -0.380700
+vn -0.898600 -0.405400 0.167900
+vn -0.353600 -0.864200 0.358000
+vn -0.898600 -0.405400 -0.167900
+vn -0.898600 -0.167900 -0.405400
+vn -0.381800 0.065600 -0.921900
+vn -0.921900 0.065600 -0.381800
+vn -0.919200 0.100900 -0.380700
+vn -0.380700 0.100900 -0.919200
+vn -0.358000 -0.353600 -0.864200
+vn -0.167900 -0.898600 -0.405400
+vn -0.405400 -0.898600 -0.167900
+vn -0.864200 -0.353600 -0.358000
+vn 0.380700 0.100900 -0.919200
+vn 0.381800 0.065600 -0.921900
+vn -0.919200 0.100900 0.380700
+vn -0.921900 0.065600 0.381800
+vn -0.381800 0.065600 0.921900
+vn -0.380700 0.100900 0.919200
+vn -0.405400 -0.898600 0.167900
+vn -0.864200 -0.353600 0.358000
+vn 0.358000 -0.353600 -0.864200
+vn 0.381800 0.065600 0.921900
+vn 0.380700 0.100900 0.919200
+vn -0.167900 -0.898600 0.405400
+vn -0.358000 -0.353600 0.864200
+vn 0.921900 0.065600 -0.381800
+vn 0.864200 -0.353600 -0.358000
+vn 0.921900 0.065600 0.381800
+vn 0.919200 0.100900 0.380700
+vn 0.167900 -0.898600 0.405400
+vn 0.358000 -0.353600 0.864200
+vn 0.919200 0.100900 -0.380700
+vn 0.405400 -0.898600 0.167900
+vn 0.864200 -0.353600 0.358000
+vn 0.405400 -0.898600 -0.167900
+vn 0.167900 -0.898600 -0.405400
+g Cylinder_Cylinder_metal
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/2/2 7/5/2 3/6/2 2/3/2
+f 7/5/3 8/7/3 4/8/3 3/6/3
+f 8/9/4 5/10/4 1/11/4 4/12/4
+f 1/13/5 2/3/5 3/6/5 4/14/5
+f 8/9/6 7/5/6 6/2/6 5/10/6
+s 1
+f 67/15/7 65/16/8 79/17/9 77/18/10 75/19/11 73/20/12 71/21/13 69/22/14
+f 228/15/7 226/16/8 240/17/9 238/18/10 236/19/11 234/20/12 232/21/13 230/22/14
+g Cylinder_Cylinder_bright-metal
+f 40/23/15 41/24/16 10/25/17 11/26/18
+f 12/27/19 13/28/20 15/29/21 14/30/22
+f 47/31/23 41/32/16 24/33/24
+f 14/34/22 15/35/21 17/36/25 16/37/26
+f 34/38/27 35/39/28 37/40/29 36/41/30
+f 16/42/26 17/43/25 19/44/31 18/45/32
+f 18/45/32 50/46/33 16/37/26
+f 18/45/32 19/44/31 21/47/34 20/48/34
+f 44/49/35 50/46/33 18/45/32
+f 20/48/34 21/47/34 23/9/36 22/50/36
+f 11/51/18 28/52/37 30/53/38 32/54/39 34/55/27 36/56/30 38/57/40 40/58/15
+f 28/59/37 29/52/41 31/60/42 30/61/38
+f 22/62/36 23/63/36 25/64/43 24/33/24
+f 11/26/18 10/25/17 29/52/41 28/59/37
+f 26/65/44 27/66/45 13/28/20 12/27/19
+f 24/33/24 25/64/43 27/66/45 26/65/44
+f 31/67/42 44/49/35 18/45/32
+f 36/68/30 37/69/29 24/33/24 38/62/40
+f 32/48/39 18/45/32 35/39/28 34/38/27
+f 30/61/38 31/60/42 18/45/32 32/48/39
+f 38/62/40 24/33/24 41/24/16 40/23/15
+f 53/70/46 47/31/23 24/33/24
+f 24/33/24 26/71/44 53/70/46
+f 29/59/41 43/52/47 44/60/35 31/61/42
+f 49/72/48 50/73/33 44/60/35 43/52/47
+f 14/74/22 16/75/26 50/73/33 49/72/48
+f 42/25/49 10/26/17 41/23/16 47/24/23
+f 53/76/46 48/77/50 42/25/49 47/24/23
+f 26/78/44 12/79/19 48/77/50 53/76/46
+f 42/25/49 43/52/47 29/59/41 10/26/17
+f 49/72/48 43/52/47 42/25/49 48/77/50
+f 12/79/19 14/74/22 49/72/48 48/77/50
+f 52/80/20 51/81/20 45/82/21 46/83/21
+f 46/83/21 45/82/21 33/84/25 39/85/25
+f 39/85/25 33/84/25 55/86/31 54/87/31
+f 54/87/31 55/86/31 57/88/34 56/89/34
+f 56/89/34 57/88/34 59/90/36 58/91/36
+f 58/91/36 59/90/36 61/92/43 60/93/43
+f 62/94/45 63/95/45 51/81/20 52/80/20
+f 60/96/43 61/97/43 63/95/45 62/94/45
+f 214/80/20 213/81/20 211/82/21 212/83/21
+f 212/83/21 211/82/21 209/84/25 210/85/25
+f 210/85/25 209/84/25 216/86/31 215/87/31
+f 215/87/31 216/86/31 218/88/34 217/89/34
+f 217/89/34 218/88/34 220/90/36 219/91/36
+f 219/91/36 220/90/36 222/92/43 221/93/43
+f 223/94/45 224/95/45 213/81/20 214/80/20
+f 221/96/43 222/97/43 224/95/45 223/94/45
+g Cylinder_Cylinder_handle-metal
+f 64/98/51 65/13/8 67/99/7 66/100/52
+f 66/101/52 67/102/7 69/103/14 68/104/53
+f 68/104/53 69/103/14 71/10/13 70/105/54
+f 70/105/54 71/10/13 73/2/12 72/1/55
+f 72/1/55 73/2/12 75/106/11 74/107/56
+f 74/107/56 75/106/11 77/108/10 76/109/57
+f 78/4/58 79/3/9 65/13/8 64/98/51
+f 76/109/57 77/108/10 79/3/9 78/4/58
+f 64/110/51 66/111/52 112/112/2
+f 66/111/52 68/113/53 112/112/2
+f 68/113/53 70/114/54 112/112/2
+f 70/114/54 72/1/55 112/112/2
+f 72/1/55 74/115/56 112/112/2
+f 74/115/56 76/116/57 112/112/2
+f 76/116/57 78/117/58 112/112/2
+f 78/117/58 64/110/51 112/112/2
+f 225/98/51 226/13/8 228/99/7 227/100/52
+f 227/101/52 228/102/7 230/103/14 229/104/53
+f 229/104/53 230/103/14 232/10/13 231/105/54
+f 231/105/54 232/10/13 234/2/12 233/1/55
+f 233/1/55 234/2/12 236/106/11 235/107/56
+f 235/107/56 236/106/11 238/108/10 237/109/57
+f 239/4/58 240/3/9 226/13/8 225/98/51
+f 237/109/57 238/108/10 240/3/9 239/4/58
+f 225/110/51 227/111/52 273/112/2
+f 227/111/52 229/113/53 273/112/2
+f 229/113/53 231/114/54 273/112/2
+f 231/114/54 233/1/55 273/112/2
+f 233/1/55 235/115/56 273/112/2
+f 235/115/56 237/116/57 273/112/2
+f 237/116/57 239/117/58 273/112/2
+f 239/117/58 225/110/51 273/112/2
+g Cylinder_Cylinder_handle-detail
+f 81/59/59 80/26/60 84/77/61 82/72/62
+f 106/14/63 83/118/64 85/119/65 111/120/66
+f 96/73/67 103/61/68 81/59/59 82/72/62
+f 86/121/69 98/122/70 99/47/71 88/43/72
+f 111/123/66 85/124/65 87/125/73 110/126/74
+f 103/61/68 104/6/75 106/14/63 81/59/59
+f 88/43/72 99/47/71 100/41/76 90/127/77
+f 110/126/74 87/125/73 89/128/78 109/9/79
+f 102/48/80 105/50/81 104/6/75 103/61/68
+f 90/127/77 100/41/76 101/38/82 92/129/83
+f 109/9/79 89/128/78 91/7/84 108/5/85
+f 94/42/86 102/48/80 103/61/68 96/73/67
+f 92/129/83 101/38/82 102/48/80 94/42/86
+f 108/5/85 91/7/84 93/130/87 107/131/88
+f 107/131/88 93/130/87 95/132/89 105/50/81
+f 85/133/65 83/134/64 97/135/90 95/132/89 93/136/87 91/137/84 89/138/78 87/139/73
+f 104/6/75 97/8/90 83/118/64 106/14/63
+f 105/50/81 95/132/89 97/8/90 104/6/75
+f 101/38/82 107/131/88 105/50/81 102/48/80
+f 100/41/76 108/5/85 107/131/88 101/38/82
+f 99/47/71 109/9/79 108/5/85 100/41/76
+f 98/122/70 110/126/74 109/9/79 99/47/71
+f 80/140/60 111/123/66 110/126/74 98/122/70
+f 81/59/59 106/14/63 111/120/66 80/26/60
+f 84/141/61 80/140/60 98/122/70 86/121/69
+f 114/59/91 113/26/92 117/77/93 115/72/94
+f 139/14/95 116/118/96 118/119/97 144/120/98
+f 129/73/99 136/61/100 114/59/91 115/72/94
+f 119/121/101 131/122/102 132/47/103 121/43/104
+f 144/123/98 118/124/97 120/125/105 143/126/106
+f 136/61/100 137/6/107 139/14/95 114/59/91
+f 121/43/104 132/47/103 133/41/108 123/127/109
+f 143/126/106 120/125/105 122/128/110 142/9/111
+f 135/48/112 138/50/113 137/6/107 136/61/100
+f 123/127/109 133/41/108 134/38/114 125/129/115
+f 142/9/111 122/128/110 124/7/116 141/5/117
+f 127/42/118 135/48/112 136/61/100 129/73/99
+f 125/129/115 134/38/114 135/48/112 127/42/118
+f 141/5/117 124/7/116 126/130/119 140/131/120
+f 140/131/120 126/130/119 128/132/121 138/50/113
+f 118/133/97 116/134/96 130/135/122 128/132/121 126/136/119 124/137/116 122/138/110 120/139/105
+f 137/6/107 130/8/122 116/118/96 139/14/95
+f 138/50/113 128/132/121 130/8/122 137/6/107
+f 134/38/114 140/131/120 138/50/113 135/48/112
+f 133/41/108 141/5/117 140/131/120 134/38/114
+f 132/47/103 142/9/111 141/5/117 133/41/108
+f 131/122/102 143/126/106 142/9/111 132/47/103
+f 113/140/92 144/123/98 143/126/106 131/122/102
+f 114/59/91 139/14/95 144/120/98 113/26/92
+f 117/141/93 113/140/92 131/122/102 119/121/101
+f 146/59/123 145/26/124 149/77/125 147/72/126
+f 171/14/127 148/118/128 150/119/129 176/120/130
+f 161/73/131 168/61/132 146/59/123 147/72/126
+f 151/121/133 163/122/134 164/47/135 153/43/136
+f 176/123/130 150/124/129 152/125/137 175/126/138
+f 168/61/132 169/6/139 171/14/127 146/59/123
+f 153/43/136 164/47/135 165/41/140 155/127/141
+f 175/126/138 152/125/137 154/128/142 174/9/143
+f 167/48/144 170/50/145 169/6/139 168/61/132
+f 155/127/141 165/41/140 166/38/146 157/129/147
+f 174/9/143 154/128/142 156/7/148 173/5/149
+f 159/42/150 167/48/144 168/61/132 161/73/131
+f 157/129/147 166/38/146 167/48/144 159/42/150
+f 173/5/149 156/7/148 158/130/151 172/131/152
+f 172/131/152 158/130/151 160/132/153 170/50/145
+f 150/133/129 148/134/128 162/135/154 160/132/153 158/136/151 156/137/148 154/138/142 152/139/137
+f 169/6/139 162/8/154 148/118/128 171/14/127
+f 170/50/145 160/132/153 162/8/154 169/6/139
+f 166/38/146 172/131/152 170/50/145 167/48/144
+f 165/41/140 173/5/149 172/131/152 166/38/146
+f 164/47/135 174/9/143 173/5/149 165/41/140
+f 163/122/134 175/126/138 174/9/143 164/47/135
+f 145/140/124 176/123/130 175/126/138 163/122/134
+f 146/59/123 171/14/127 176/120/130 145/26/124
+f 149/141/125 145/140/124 163/122/134 151/121/133
+f 178/59/155 177/26/156 181/77/157 179/72/158
+f 203/14/159 180/118/160 182/119/161 208/120/162
+f 193/73/163 200/61/164 178/59/155 179/72/158
+f 183/121/165 195/122/166 196/47/167 185/43/168
+f 208/123/162 182/124/161 184/125/169 207/126/170
+f 200/61/164 201/6/171 203/14/159 178/59/155
+f 185/43/168 196/47/167 197/41/172 187/127/173
+f 207/126/170 184/125/169 186/128/174 206/9/175
+f 199/48/176 202/50/177 201/6/171 200/61/164
+f 187/127/173 197/41/172 198/38/178 189/129/179
+f 206/9/175 186/128/174 188/7/180 205/5/181
+f 191/42/182 199/48/176 200/61/164 193/73/163
+f 189/129/179 198/38/178 199/48/176 191/42/182
+f 205/5/181 188/7/180 190/130/183 204/131/184
+f 204/131/184 190/130/183 192/132/185 202/50/177
+f 182/133/161 180/134/160 194/135/186 192/132/185 190/136/183 188/137/180 186/138/174 184/139/169
+f 201/6/171 194/8/186 180/118/160 203/14/159
+f 202/50/177 192/132/185 194/8/186 201/6/171
+f 198/38/178 204/131/184 202/50/177 199/48/176
+f 197/41/172 205/5/181 204/131/184 198/38/178
+f 196/47/167 206/9/175 205/5/181 197/41/172
+f 195/122/166 207/126/170 206/9/175 196/47/167
+f 177/140/156 208/123/162 207/126/170 195/122/166
+f 178/59/155 203/14/159 208/120/162 177/26/156
+f 181/141/157 177/140/156 195/122/166 183/121/165
+f 242/59/59 241/26/60 245/77/61 243/72/62
+f 267/14/63 244/118/64 246/119/65 272/120/66
+f 257/73/67 264/61/68 242/59/59 243/72/62
+f 247/121/69 259/122/70 260/47/71 249/43/72
+f 272/123/66 246/124/65 248/125/73 271/126/74
+f 264/61/68 265/6/75 267/14/63 242/59/59
+f 249/43/72 260/47/71 261/41/76 251/127/77
+f 271/126/74 248/125/73 250/128/78 270/9/79
+f 263/48/80 266/50/81 265/6/75 264/61/68
+f 251/127/77 261/41/76 262/38/82 253/129/83
+f 270/9/79 250/128/78 252/7/84 269/5/85
+f 255/42/86 263/48/80 264/61/68 257/73/67
+f 253/129/83 262/38/82 263/48/80 255/42/86
+f 269/5/85 252/7/84 254/130/87 268/131/88
+f 268/131/88 254/130/87 256/132/89 266/50/81
+f 246/133/65 244/134/64 258/135/90 256/132/89 254/136/87 252/137/84 250/138/78 248/139/73
+f 265/6/75 258/8/90 244/118/64 267/14/63
+f 266/50/81 256/132/89 258/8/90 265/6/75
+f 262/38/82 268/131/88 266/50/81 263/48/80
+f 261/41/76 269/5/85 268/131/88 262/38/82
+f 260/47/71 270/9/79 269/5/85 261/41/76
+f 259/122/70 271/126/74 270/9/79 260/47/71
+f 241/140/60 272/123/66 271/126/74 259/122/70
+f 242/59/59 267/14/63 272/120/66 241/26/60
+f 245/141/61 241/140/60 259/122/70 247/121/69
+f 275/59/91 274/26/92 278/77/93 276/72/94
+f 300/14/95 277/118/96 279/119/97 305/120/98
+f 290/73/99 297/61/100 275/59/91 276/72/94
+f 280/121/101 292/122/102 293/47/103 282/43/104
+f 305/123/98 279/124/97 281/125/105 304/126/106
+f 297/61/100 298/6/107 300/14/95 275/59/91
+f 282/43/104 293/47/103 294/41/108 284/127/109
+f 304/126/106 281/125/105 283/128/110 303/9/111
+f 296/48/112 299/50/113 298/6/107 297/61/100
+f 284/127/109 294/41/108 295/38/114 286/129/115
+f 303/9/111 283/128/110 285/7/116 302/5/117
+f 288/42/118 296/48/112 297/61/100 290/73/99
+f 286/129/115 295/38/114 296/48/112 288/42/118
+f 302/5/117 285/7/116 287/130/119 301/131/120
+f 301/131/120 287/130/119 289/132/121 299/50/113
+f 279/133/97 277/134/96 291/135/122 289/132/121 287/136/119 285/137/116 283/138/110 281/139/105
+f 298/6/107 291/8/122 277/118/96 300/14/95
+f 299/50/113 289/132/121 291/8/122 298/6/107
+f 295/38/114 301/131/120 299/50/113 296/48/112
+f 294/41/108 302/5/117 301/131/120 295/38/114
+f 293/47/103 303/9/111 302/5/117 294/41/108
+f 292/122/102 304/126/106 303/9/111 293/47/103
+f 274/140/92 305/123/98 304/126/106 292/122/102
+f 275/59/91 300/14/95 305/120/98 274/26/92
+f 278/141/93 274/140/92 292/122/102 280/121/101
+f 307/59/123 306/26/124 310/77/125 308/72/126
+f 332/14/127 309/118/128 311/119/129 337/120/130
+f 322/73/131 329/61/132 307/59/123 308/72/126
+f 312/121/133 324/122/134 325/47/135 314/43/136
+f 337/123/130 311/124/129 313/125/137 336/126/138
+f 329/61/132 330/6/139 332/14/127 307/59/123
+f 314/43/136 325/47/135 326/41/140 316/127/141
+f 336/126/138 313/125/137 315/128/142 335/9/143
+f 328/48/144 331/50/145 330/6/139 329/61/132
+f 316/127/141 326/41/140 327/38/146 318/129/147
+f 335/9/143 315/128/142 317/7/148 334/5/149
+f 320/42/150 328/48/144 329/61/132 322/73/131
+f 318/129/147 327/38/146 328/48/144 320/42/150
+f 334/5/149 317/7/148 319/130/151 333/131/152
+f 333/131/152 319/130/151 321/132/153 331/50/145
+f 311/133/129 309/134/128 323/135/154 321/132/153 319/136/151 317/137/148 315/138/142 313/139/137
+f 330/6/139 323/8/154 309/118/128 332/14/127
+f 331/50/145 321/132/153 323/8/154 330/6/139
+f 327/38/146 333/131/152 331/50/145 328/48/144
+f 326/41/140 334/5/149 333/131/152 327/38/146
+f 325/47/135 335/9/143 334/5/149 326/41/140
+f 324/122/134 336/126/138 335/9/143 325/47/135
+f 306/140/124 337/123/130 336/126/138 324/122/134
+f 307/59/123 332/14/127 337/120/130 306/26/124
+f 310/141/125 306/140/124 324/122/134 312/121/133
+f 339/59/155 338/26/156 342/77/157 340/72/158
+f 364/14/159 341/118/160 343/119/161 369/120/162
+f 354/73/163 361/61/164 339/59/155 340/72/158
+f 344/121/165 356/122/166 357/47/167 346/43/168
+f 369/123/162 343/124/161 345/125/169 368/126/170
+f 361/61/164 362/6/171 364/14/159 339/59/155
+f 346/43/168 357/47/167 358/41/172 348/127/173
+f 368/126/170 345/125/169 347/128/174 367/9/175
+f 360/48/176 363/50/177 362/6/171 361/61/164
+f 348/127/173 358/41/172 359/38/178 350/129/179
+f 367/9/175 347/128/174 349/7/180 366/5/181
+f 352/42/182 360/48/176 361/61/164 354/73/163
+f 350/129/179 359/38/178 360/48/176 352/42/182
+f 366/5/181 349/7/180 351/130/183 365/131/184
+f 365/131/184 351/130/183 353/132/185 363/50/177
+f 343/133/161 341/134/160 355/135/186 353/132/185 351/136/183 349/137/180 347/138/174 345/139/169
+f 362/6/171 355/8/186 341/118/160 364/14/159
+f 363/50/177 353/132/185 355/8/186 362/6/171
+f 359/38/178 365/131/184 363/50/177 360/48/176
+f 358/41/172 366/5/181 365/131/184 359/38/178
+f 357/47/167 367/9/175 366/5/181 358/41/172
+f 356/122/166 368/126/170 367/9/175 357/47/167
+f 338/140/156 369/123/162 368/126/170 356/122/166
+f 339/59/155 364/14/159 369/120/162 338/26/156
+f 342/141/157 338/140/156 356/122/166 344/121/165
diff --git a/homedecor_modpack/homedecor/models/homedecor_bathroom_set.obj b/homedecor_modpack/homedecor/models/homedecor_bathroom_set.obj
new file mode 100644
index 0000000..5ee2ab0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bathroom_set.obj
@@ -0,0 +1,898 @@
+# Blender v2.73 (sub 0) OBJ File: 'bathroom_set.blend'
+# www.blender.org
+o Mirror_Cylinder.003
+v 0.001607 0.455157 0.500000
+v 0.001607 0.455157 0.487633
+v -0.130583 0.422849 0.500000
+v -0.130583 0.422849 0.487633
+v -0.242649 0.330843 0.500000
+v -0.242649 0.330843 0.487633
+v -0.317529 0.193147 0.500000
+v -0.317529 0.193147 0.487633
+v -0.343824 0.030723 0.500000
+v -0.343824 0.030723 0.487633
+v -0.317529 -0.131701 0.500000
+v -0.317529 -0.131701 0.487633
+v -0.242649 -0.269397 0.500000
+v -0.242649 -0.269397 0.487633
+v -0.130583 -0.361403 0.500001
+v -0.130583 -0.361403 0.487633
+v 0.001607 -0.393711 0.500001
+v 0.001607 -0.393711 0.487633
+v 0.133798 -0.361403 0.500000
+v 0.133798 -0.361403 0.487633
+v 0.245864 -0.269397 0.500000
+v 0.245864 -0.269397 0.487633
+v 0.320744 -0.131701 0.500000
+v 0.320744 -0.131701 0.487633
+v 0.347038 0.030723 0.500000
+v 0.347038 0.030723 0.487633
+v 0.320744 0.193147 0.500000
+v 0.320744 0.193147 0.487633
+v 0.245864 0.330843 0.500000
+v 0.245864 0.330843 0.487633
+v 0.133798 0.422849 0.500000
+v 0.133798 0.422849 0.487633
+v 0.001607 0.030723 0.487633
+v 0.001607 0.030723 0.500000
+vt 0.875000 0.000000
+vt 0.937500 0.000000
+vt 0.937500 0.125000
+vt 0.875000 0.125000
+vt 0.937500 0.250000
+vt 0.875000 0.250000
+vt 0.937500 0.375000
+vt 0.875000 0.375000
+vt 0.937500 0.500000
+vt 0.875000 0.500000
+vt 0.937500 0.625000
+vt 0.875000 0.625000
+vt 0.937500 0.750000
+vt 0.875000 0.750000
+vt 0.937500 0.875000
+vt 0.875000 0.875000
+vt 0.937500 1.000000
+vt 0.875000 1.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 1.000000 0.375000
+vt 1.000000 0.500000
+vt 1.000000 0.625000
+vt 1.000000 0.750000
+vt 0.406506 1.000000
+vt 0.250943 0.961979
+vt 0.406506 0.500522
+vt 1.000000 0.875000
+vt 1.000000 1.000000
+vt 0.562069 0.961979
+vt 0.119063 0.853706
+vt 0.030944 0.691664
+vt 0.000000 0.500522
+vt 0.030944 0.309380
+vt 0.119063 0.147338
+vt 0.250943 0.039065
+vt 0.406506 0.001045
+vt 0.562069 0.039065
+vt 0.693949 0.147338
+vt 0.782069 0.309380
+vt 0.813012 0.500522
+vt 0.782069 0.691664
+vt 0.693949 0.853706
+vn -0.237400 0.971400 0.000000
+vn -0.634500 0.772900 0.000000
+vn -0.878500 0.477700 0.000000
+vn -0.987100 0.159800 0.000000
+vn -0.987100 -0.159800 0.000000
+vn -0.878500 -0.477700 0.000000
+vn -0.634500 -0.772900 0.000000
+vn -0.237400 -0.971400 0.000000
+vn 0.237400 -0.971400 0.000000
+vn 0.634500 -0.772900 0.000000
+vn 0.878500 -0.477700 0.000000
+vn 0.987100 -0.159800 0.000000
+vn 0.987100 0.159800 0.000000
+vn 0.878500 0.477700 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.237400 0.971400 -0.000000
+vn 0.634500 0.772900 0.000000
+vn 0.000000 -0.000000 -1.000000
+g Mirror_Cylinder.003_None
+s off
+f 1/1/1 2/2/1 4/3/1 3/4/1
+f 3/4/2 4/3/2 6/5/2 5/6/2
+f 5/6/3 6/5/3 8/7/3 7/8/3
+f 7/8/4 8/7/4 10/9/4 9/10/4
+f 9/10/5 10/9/5 12/11/5 11/12/5
+f 11/12/6 12/11/6 14/13/6 13/14/6
+f 13/14/7 14/13/7 16/15/7 15/16/7
+f 15/16/8 16/15/8 18/17/8 17/18/8
+f 17/2/9 18/19/9 20/20/9 19/3/9
+f 19/3/10 20/20/10 22/21/10 21/5/10
+f 21/5/11 22/21/11 24/22/11 23/7/11
+f 23/7/12 24/22/12 26/23/12 25/9/12
+f 25/9/13 26/23/13 28/24/13 27/11/13
+f 27/11/14 28/24/14 30/25/14 29/13/14
+f 1/26/15 3/27/15 34/28/15
+f 31/15/16 32/29/16 2/30/16 1/17/16
+f 29/13/17 30/25/17 32/29/17 31/15/17
+f 4/31/18 2/26/18 33/28/18
+f 2/26/18 32/27/18 33/28/18
+f 32/27/18 30/32/18 33/28/18
+f 30/32/18 28/33/18 33/28/18
+f 28/33/18 26/34/18 33/28/18
+f 26/34/18 24/35/18 33/28/18
+f 24/35/18 22/36/18 33/28/18
+f 22/36/18 20/37/18 33/28/18
+f 20/37/18 18/38/18 33/28/18
+f 18/38/18 16/39/18 33/28/18
+f 16/39/18 14/40/18 33/28/18
+f 14/40/18 12/41/18 33/28/18
+f 12/41/18 10/42/18 33/28/18
+f 10/42/18 8/43/18 33/28/18
+f 8/43/18 6/44/18 33/28/18
+f 6/44/18 4/31/18 33/28/18
+f 3/27/15 5/32/15 34/28/15
+f 5/32/15 7/33/15 34/28/15
+f 7/33/15 9/34/15 34/28/15
+f 9/34/15 11/35/15 34/28/15
+f 11/35/15 13/36/15 34/28/15
+f 13/36/15 15/37/15 34/28/15
+f 15/37/15 17/38/15 34/28/15
+f 17/38/15 19/39/15 34/28/15
+f 19/39/15 21/40/15 34/28/15
+f 21/40/15 23/41/15 34/28/15
+f 23/41/15 25/42/15 34/28/15
+f 25/42/15 27/43/15 34/28/15
+f 27/43/15 29/44/15 34/28/15
+f 29/44/15 31/31/15 34/28/15
+f 31/31/15 1/26/15 34/28/15
+o tray_Cube.002
+v 0.499596 -0.500000 0.078501
+v -0.495736 -0.500000 0.078502
+v 0.464390 -0.492258 0.463708
+v 0.464390 -0.500000 0.463708
+v 0.464390 -0.492258 0.078501
+v 0.464390 -0.500000 0.078501
+v -0.461252 -0.492258 0.463708
+v -0.461252 -0.500000 0.078502
+v -0.461252 -0.500000 0.463708
+v -0.461252 -0.492258 0.078502
+v 0.499596 -0.500000 0.499999
+v -0.495736 -0.500000 0.499999
+v 0.464390 -0.500000 0.499999
+v -0.461252 -0.500000 0.499999
+v 0.499596 -0.480664 0.078501
+v -0.495736 -0.480664 0.078502
+v 0.464390 -0.480664 0.078501
+v -0.461252 -0.480664 0.078502
+v 0.499596 -0.480664 0.499999
+v -0.495736 -0.480664 0.499999
+v 0.464390 -0.480664 0.499999
+v -0.461252 -0.480664 0.499999
+vt 0.001757 0.587871
+vt 0.001757 0.166108
+vt 0.036986 0.166108
+vt 0.036986 0.202421
+vt 0.036986 0.587871
+vt 0.036986 0.031245
+vt 0.036986 0.042847
+vt 0.001757 0.042847
+vt 0.001757 0.023499
+vt 0.036986 0.023499
+vt 0.997718 0.023499
+vt 0.997718 0.042847
+vt 0.963212 0.042847
+vt 0.963212 0.031245
+vt 0.963212 0.023499
+vt 0.998524 0.152409
+vt 0.998524 0.574172
+vt 0.964018 0.574172
+vt 0.964018 0.152409
+vt 0.741015 0.797141
+vt 0.319252 0.797141
+vt 0.319252 0.777793
+vt 0.741015 0.777793
+vt 0.961652 0.152409
+vt 0.961652 0.537858
+vt 0.035426 0.537858
+vt 0.035426 0.152409
+vt 0.962988 0.096612
+vt 0.036762 0.096612
+vt 0.036762 0.088866
+vt 0.962988 0.088866
+vt 0.963212 0.202421
+vt 0.963212 0.587871
+vt 0.036762 0.108214
+vt 0.002257 0.108214
+vt 0.002257 0.088866
+vt 0.998217 0.088866
+vt 0.998217 0.108214
+vt 0.962988 0.108214
+vt 0.704703 0.895804
+vt 0.704703 0.903551
+vt 0.319254 0.903551
+vt 0.319254 0.915152
+vt 0.741017 0.915152
+vt 0.741017 0.895804
+vt 0.741015 0.726483
+vt 0.319251 0.726483
+vt 0.319251 0.707135
+vt 0.741015 0.707135
+vt 0.037792 0.152409
+vt 0.037792 0.574172
+vt 0.002563 0.574172
+vt 0.002563 0.152409
+vt 0.740726 0.835008
+vt 0.740726 0.854356
+vt 0.318963 0.854356
+vt 0.318963 0.842755
+vt 0.704413 0.842755
+vt 0.704413 0.835008
+vt 0.963212 0.166108
+vt 0.997718 0.166108
+vt 0.997718 0.587871
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 -0.000000
+g tray_Cube.002_Material.004
+s off
+f 35/45/19 45/46/19 47/47/19 38/48/19 40/49/19
+f 39/50/20 51/51/20 49/52/20 35/53/20 40/54/20
+f 36/55/20 50/56/20 52/57/20 44/58/20 42/59/20
+f 50/60/21 54/61/21 56/62/21 52/63/21
+f 44/58/20 39/50/20 40/54/20 42/59/20
+f 54/64/22 50/65/22 36/66/22 46/67/22
+f 44/68/21 41/69/21 37/70/21 39/71/21
+f 37/72/23 41/73/23 43/74/23 38/75/23
+f 40/49/19 38/48/19 43/76/19 42/77/19
+f 48/74/23 56/78/23 54/79/23 46/80/23
+f 45/81/23 53/82/23 55/83/23 47/75/23
+f 43/84/24 41/85/24 44/86/24 52/87/24 56/88/24 48/89/24
+f 49/90/24 53/91/24 45/92/24 35/93/24
+f 51/94/21 55/95/21 53/96/21 49/97/21
+f 47/98/22 55/99/22 51/100/22 39/101/22 37/102/22 38/103/22
+f 42/77/19 43/76/19 48/104/19 46/105/19 36/106/19
+o toothbrushes_Cube.001
+v 0.196449 -0.053148 0.155801
+v 0.212306 -0.055276 0.137646
+v 0.286903 -0.485581 0.261240
+v 0.278912 -0.484509 0.270389
+v 0.202647 -0.050646 0.160921
+v 0.218504 -0.052774 0.142766
+v 0.291240 -0.483831 0.264822
+v 0.283249 -0.482758 0.273972
+v 0.249951 -0.198035 0.187259
+v 0.238570 -0.202629 0.177857
+v 0.234093 -0.195907 0.205414
+v 0.222713 -0.200501 0.196013
+v 0.222362 -0.111693 0.153041
+v 0.212761 -0.107039 0.176366
+v 0.228619 -0.109167 0.158210
+v 0.206504 -0.109565 0.171197
+v 0.222603 -0.115193 0.155126
+v 0.214165 -0.110844 0.176573
+v 0.228583 -0.112779 0.160066
+v 0.208185 -0.113258 0.171634
+v 0.203373 -0.050744 0.160090
+v 0.213487 -0.107136 0.175534
+v 0.217573 -0.052649 0.143832
+v 0.227687 -0.109042 0.159276
+v 0.216445 -0.044117 0.171293
+v 0.226953 -0.102703 0.187338
+v 0.231198 -0.046096 0.154402
+v 0.241706 -0.104683 0.170447
+v 0.335596 -0.047092 0.395338
+v 0.312364 -0.048676 0.401922
+v 0.312406 -0.484480 0.275125
+v 0.324114 -0.483682 0.271807
+v 0.333242 -0.044873 0.387565
+v 0.310010 -0.046457 0.394149
+v 0.310759 -0.482928 0.269686
+v 0.322466 -0.482129 0.266368
+v 0.306298 -0.193761 0.345601
+v 0.310621 -0.197836 0.359874
+v 0.329530 -0.192177 0.339016
+v 0.333853 -0.196251 0.353290
+v 0.311697 -0.105784 0.385823
+v 0.332552 -0.101960 0.371392
+v 0.309320 -0.103544 0.377976
+v 0.334929 -0.104200 0.379239
+v 0.312594 -0.109368 0.384089
+v 0.331446 -0.105787 0.370604
+v 0.310323 -0.107228 0.376590
+v 0.333717 -0.107928 0.378103
+v 0.332179 -0.044945 0.387866
+v 0.331489 -0.102032 0.371693
+v 0.311374 -0.046364 0.393762
+v 0.310684 -0.103451 0.377589
+v 0.327450 -0.038933 0.371079
+v 0.326734 -0.098241 0.354277
+v 0.305836 -0.040407 0.377205
+v 0.305120 -0.099715 0.360403
+v 0.403720 -0.052874 0.181916
+v 0.418656 -0.053738 0.200936
+v 0.296708 -0.485522 0.269449
+v 0.289182 -0.485087 0.259864
+v 0.397459 -0.050350 0.186947
+v 0.412394 -0.051214 0.205968
+v 0.292327 -0.483756 0.272970
+v 0.284800 -0.483321 0.263385
+v 0.367339 -0.196857 0.234733
+v 0.378836 -0.201491 0.225495
+v 0.352403 -0.195993 0.215713
+v 0.363900 -0.200627 0.206474
+v 0.403410 -0.110308 0.210339
+v 0.382153 -0.106896 0.196398
+v 0.397089 -0.107760 0.215418
+v 0.388474 -0.109444 0.191318
+v 0.401426 -0.113874 0.210337
+v 0.381805 -0.110654 0.197897
+v 0.395385 -0.111439 0.215191
+v 0.387846 -0.113089 0.193043
+v 0.398142 -0.050390 0.187818
+v 0.382837 -0.106936 0.197268
+v 0.411517 -0.051164 0.204851
+v 0.396212 -0.107709 0.214301
+v 0.384498 -0.043734 0.198298
+v 0.368597 -0.102480 0.208116
+v 0.398393 -0.044538 0.215993
+v 0.382493 -0.103283 0.225812
+vt 0.060157 0.000000
+vt 0.144587 0.000000
+vt 0.186142 0.658338
+vt 0.018602 0.658338
+vt 0.508904 0.130556
+vt 0.509458 0.000005
+vt 0.567750 0.000000
+vt 0.567749 0.130551
+vt 0.401706 0.859941
+vt 0.353681 0.658243
+vt 0.460715 0.658251
+vt 0.457943 0.859946
+vt 0.193745 0.139346
+vt 0.346077 0.139346
+vt 0.353681 0.341400
+vt 0.186142 0.341400
+vt 0.176303 0.869249
+vt 0.186142 0.869249
+vt 0.186142 1.000000
+vt 0.176304 1.000000
+vt 0.312126 0.999837
+vt 0.227697 0.999837
+vt 0.402424 0.999230
+vt 0.401870 0.868679
+vt 0.460715 0.868684
+vt 0.460715 0.999234
+vt 0.186142 0.000000
+vt 0.353681 0.000000
+vt 0.353681 0.130710
+vt 0.186142 0.130710
+vt 0.508741 0.139293
+vt 0.564977 0.139288
+vt 0.026206 0.860633
+vt 0.178538 0.860633
+vt 0.026272 0.869249
+vt 0.018602 0.869249
+vt 0.567750 0.212322
+vt 0.567750 0.185449
+vt 0.608518 0.185449
+vt 0.608518 0.212322
+vt 0.599121 0.000000
+vt 0.749152 0.000000
+vt 0.758990 0.000000
+vt 0.758990 0.018544
+vt 0.591451 0.018544
+vt 0.591451 0.000000
+vt 0.404856 0.000000
+vt 0.445644 0.000003
+vt 0.026273 1.000000
+vt 0.018603 1.000000
+vt 0.984005 0.403893
+vt 0.984005 0.534444
+vt 0.856559 0.537025
+vt 0.856559 0.401395
+vt 0.511891 0.999235
+vt 0.460715 0.340992
+vt 0.567749 0.340983
+vt 0.552678 0.999231
+vt 0.984005 0.189976
+vt 0.828137 0.189975
+vt 0.828137 0.054137
+vt 0.984005 0.054137
+vt 0.828137 0.238657
+vt 0.828137 0.190904
+vt 0.955761 0.189976
+vt 0.955761 0.239586
+vt 0.981086 0.606599
+vt 0.831056 0.606599
+vt 0.828137 0.565980
+vt 0.984005 0.565980
+vt 0.984005 0.268346
+vt 0.984005 0.398897
+vt 0.856559 0.265765
+vn 0.144800 -0.340200 0.929100
+vn 0.894800 -0.440800 0.070500
+vn 0.981700 0.165200 -0.094500
+vn 0.064700 0.288200 0.955400
+vn 0.037200 0.172200 0.984300
+vn -0.051600 0.771500 0.634100
+vn -0.901200 0.428100 -0.067700
+vn -0.952800 -0.262100 0.153100
+vn 0.993600 0.103600 -0.045700
+vn -0.053300 -0.275500 -0.959800
+vn -0.068900 -0.399300 -0.914200
+vn -0.954600 -0.280400 0.099900
+vn -0.983000 -0.150800 0.104600
+vn 0.921400 -0.053200 0.384800
+vn 0.993000 0.043900 -0.109900
+vn 0.705200 0.669900 -0.232200
+vn 0.253700 0.918300 -0.303900
+vn 0.049400 -0.777200 -0.627300
+vn -0.699400 -0.676700 0.230000
+vn -0.014200 -0.388100 -0.921500
+vn -0.144500 0.326600 -0.934000
+vn 0.107300 0.222500 0.969000
+vn 0.502300 0.003000 0.864700
+vn -0.157100 0.973400 0.166500
+vn 0.687600 0.680300 -0.253800
+vn 0.890500 -0.451400 0.056200
+vn 0.128900 -0.349200 0.928100
+vn -0.074000 0.782500 0.618200
+vn 0.383200 -0.379100 -0.842200
+vn -0.715500 -0.454000 -0.530900
+vn -0.871300 0.157000 -0.464900
+vn 0.472200 0.248700 -0.845700
+vn 0.509700 0.131800 -0.850200
+vn 0.399500 0.745800 -0.533000
+vn 0.722200 0.441300 0.532600
+vn 0.878000 -0.256600 0.404100
+vn -0.855200 0.093400 -0.509800
+vn -0.484000 -0.235900 0.842700
+vn -0.447500 -0.361300 0.818000
+vn 0.850200 -0.272700 0.450300
+vn 0.878000 -0.143000 0.456700
+vn -0.561200 -0.079800 -0.823800
+vn -0.890600 0.036300 -0.453300
+vn -0.709200 0.670200 -0.218800
+vn -0.367600 0.926700 0.078100
+vn -0.394000 -0.751800 0.528700
+vn 0.703000 -0.677000 0.217800
+vn -0.497100 -0.350400 0.793800
+vn -0.386300 0.365700 0.846700
+vn 0.443200 0.182000 -0.877700
+vn 0.052900 -0.037900 -0.997900
+vn 0.234400 0.967700 -0.092400
+vn -0.706100 0.681700 -0.191600
+vn -0.719900 -0.464000 -0.516100
+vn 0.395900 -0.387900 -0.832400
+vn 0.409700 0.757800 -0.507800
+vn -0.928800 -0.370100 -0.015500
+vn -0.222400 -0.411000 0.884100
+vn -0.095400 0.203600 0.974400
+vn -0.959100 0.253600 -0.125500
+vn -0.978900 0.135600 -0.153000
+vn -0.637000 0.744300 -0.200600
+vn 0.221400 0.398000 -0.890300
+vn 0.035500 -0.301600 -0.952700
+vn -0.143700 0.140700 0.979600
+vn 0.961000 -0.240300 0.136900
+vn 0.922900 -0.366200 0.118500
+vn 0.088700 -0.318000 -0.943900
+vn 0.085300 -0.189600 -0.978100
+vn -0.548100 -0.035000 0.835700
+vn -0.078600 0.083500 0.993400
+vn 0.075700 0.703100 0.707100
+vn 0.222600 0.937700 0.266600
+vn 0.630800 -0.750300 0.197500
+vn -0.074400 -0.709500 -0.700700
+vn 0.919600 -0.352800 0.173000
+vn 0.934000 0.356700 0.017300
+vn -0.978400 0.188900 -0.083400
+vn -0.942900 -0.012100 0.332900
+vn -0.164400 0.960100 -0.226200
+vn 0.099900 0.713600 0.693300
+vn -0.207300 -0.421200 0.883000
+vn -0.924600 -0.379700 -0.030500
+vn -0.617500 0.755200 -0.220200
+g toothbrushes_Cube.001_Material.001
+s 1
+f 64/107/25 63/108/26 65/109/27 67/110/28
+f 70/111/29 61/112/30 57/113/31 72/114/32
+f 75/115/33 65/116/27 66/117/34 73/118/35
+f 76/119/36 73/120/35 66/121/34 68/122/37
+f 80/123/38 71/124/39 62/125/40 79/126/41
+f 68/122/37 66/121/34 59/127/42 60/128/43
+f 62/129/40 71/130/39 69/131/44 58/132/45
+f 57/133/31 58/134/45 69/135/44 72/136/32
+f 74/137/46 70/111/29 72/114/32 76/138/36
+f 74/139/46 75/140/33 71/124/39 80/123/38 78/141/47 70/142/29
+f 73/120/35 76/119/36 72/136/32 69/135/44
+f 63/143/26 64/144/25 60/145/43 59/146/42
+f 77/147/48 79/148/41 62/149/40 58/150/45 57/151/31 61/152/30
+f 65/116/27 63/153/26 59/154/42 66/117/34
+f 67/110/28 65/109/27 75/140/33 74/139/46
+f 70/142/29 78/141/47 77/155/48 61/156/30
+f 71/130/39 75/115/33 73/118/35 69/131/44
+f 80/157/38 79/158/41 83/159/49 84/160/50
+f 64/161/25 67/162/28 68/163/37 60/164/43
+f 82/165/51 84/166/50 83/167/49 81/168/52
+f 78/169/47 80/170/38 84/171/50 82/172/51
+f 79/173/41 77/174/48 81/175/52 83/176/49
+f 77/177/48 78/178/47 82/160/51 81/179/52
+f 67/162/28 74/137/46 76/138/36 68/163/37
+f 92/107/53 91/108/54 93/109/55 95/110/56
+f 98/111/57 89/112/58 85/113/59 100/114/60
+f 103/115/61 93/116/55 94/117/62 101/118/63
+f 104/119/64 101/120/63 94/121/62 96/122/65
+f 108/123/66 99/124/67 90/125/68 107/126/69
+f 96/122/65 94/121/62 87/127/70 88/128/71
+f 90/129/68 99/130/67 97/131/72 86/132/73
+f 85/133/59 86/134/73 97/135/72 100/136/60
+f 102/137/74 98/111/57 100/114/60 104/138/64
+f 102/139/74 103/140/61 99/124/67 108/123/66 106/141/75 98/142/57
+f 101/120/63 104/119/64 100/136/60 97/135/72
+f 91/143/54 92/144/53 88/145/71 87/146/70
+f 105/147/76 107/148/69 90/149/68 86/150/73 85/151/59 89/152/58
+f 93/116/55 91/153/54 87/154/70 94/117/62
+f 95/110/56 93/109/55 103/140/61 102/139/74
+f 98/142/57 106/141/75 105/155/76 89/156/58
+f 99/130/67 103/115/61 101/118/63 97/131/72
+f 108/157/66 107/158/69 111/159/77 112/160/78
+f 92/161/53 95/162/56 96/163/65 88/164/71
+f 110/165/79 112/166/78 111/167/77 109/168/80
+f 106/169/75 108/170/66 112/171/78 110/172/79
+f 107/173/69 105/174/76 109/175/80 111/176/77
+f 105/177/76 106/178/75 110/160/79 109/179/80
+f 95/162/56 102/137/74 104/138/64 96/163/65
+f 120/107/81 119/108/82 121/109/83 123/110/84
+f 126/111/85 117/112/86 113/113/87 128/114/88
+f 131/115/89 121/116/83 122/117/90 129/118/91
+f 132/119/92 129/120/91 122/121/90 124/122/93
+f 136/123/94 127/124/95 118/125/96 135/126/97
+f 124/122/93 122/121/90 115/127/98 116/128/99
+f 118/129/96 127/130/95 125/131/100 114/132/101
+f 113/133/87 114/134/101 125/135/100 128/136/88
+f 130/137/102 126/111/85 128/114/88 132/138/92
+f 130/139/102 131/140/89 127/124/95 136/123/94 134/141/103 126/142/85
+f 129/120/91 132/119/92 128/136/88 125/135/100
+f 119/143/82 120/144/81 116/145/99 115/146/98
+f 133/147/104 135/148/97 118/149/96 114/150/101 113/151/87 117/152/86
+f 121/116/83 119/153/82 115/154/98 122/117/90
+f 123/110/84 121/109/83 131/140/89 130/139/102
+f 126/142/85 134/141/103 133/155/104 117/156/86
+f 127/130/95 131/115/89 129/118/91 125/131/100
+f 136/157/94 135/158/97 139/159/105 140/160/106
+f 120/161/81 123/162/84 124/163/93 116/164/99
+f 138/165/107 140/166/106 139/167/105 137/168/108
+f 134/169/103 136/170/94 140/171/106 138/172/107
+f 135/173/97 133/174/104 137/175/108 139/176/105
+f 133/177/104 134/178/103 138/160/107 137/179/108
+f 123/162/84 130/137/102 132/138/92 124/163/93
+o cup_Circle
+v 0.291745 -0.492751 0.349098
+v 0.291745 -0.215818 0.377751
+v 0.231448 -0.492751 0.324122
+v 0.211187 -0.215818 0.344383
+v 0.206473 -0.492751 0.263825
+v 0.177819 -0.215818 0.263825
+v 0.231448 -0.492751 0.203528
+v 0.211187 -0.215818 0.183268
+v 0.291745 -0.492751 0.178553
+v 0.291745 -0.215818 0.149899
+v 0.352042 -0.492751 0.203528
+v 0.372303 -0.215818 0.183268
+v 0.377018 -0.492751 0.263825
+v 0.405671 -0.215818 0.263825
+v 0.352042 -0.492751 0.324122
+v 0.372303 -0.215818 0.344383
+v 0.291745 -0.215818 0.366403
+v 0.219212 -0.215818 0.336358
+v 0.189168 -0.215818 0.263825
+v 0.219212 -0.215818 0.191292
+v 0.291745 -0.215818 0.161248
+v 0.364278 -0.215818 0.191292
+v 0.394322 -0.215818 0.263825
+v 0.364278 -0.215818 0.336358
+v 0.291745 -0.483845 0.340604
+v 0.237455 -0.483845 0.318116
+v 0.214967 -0.483845 0.263825
+v 0.237455 -0.483845 0.209535
+v 0.291745 -0.483845 0.187047
+v 0.346036 -0.483845 0.209535
+v 0.368523 -0.483845 0.263825
+v 0.346036 -0.483845 0.318116
+v 0.291745 -0.492751 0.263825
+v 0.291745 -0.483845 0.263825
+vt 0.500000 0.937500
+vt 0.500000 0.500000
+vt 0.562500 0.500000
+vt 0.562500 0.937500
+vt 0.625000 0.500000
+vt 0.625000 0.937500
+vt 0.687500 0.500000
+vt 0.687500 0.937500
+vt 0.750000 0.500000
+vt 0.750000 0.937500
+vt 0.812500 0.500000
+vt 0.812500 0.937500
+vt 0.875000 0.500000
+vt 0.875000 0.937500
+vt 1.000000 0.500000
+vt 0.937500 0.500000
+vt 0.937500 0.437500
+vt 1.000000 0.437500
+vt 0.937500 0.937500
+vt 1.000000 0.937500
+vt 0.213388 0.213388
+vt 0.125000 0.250000
+vt 0.125000 0.125000
+vt 0.937500 0.000000
+vt 1.000000 0.000000
+vt 0.875000 0.437500
+vt 0.812500 0.437500
+vt 0.750000 0.437500
+vt 0.687500 0.437500
+vt 0.625000 0.437500
+vt 0.562500 0.437500
+vt 0.500000 0.437500
+vt 0.875000 0.000000
+vt 0.812500 0.000000
+vt 0.750000 0.000000
+vt 0.687500 0.000000
+vt 0.625000 0.000000
+vt 0.562500 0.000000
+vt 0.500000 0.000000
+vt 0.125000 0.000000
+vt 0.213388 0.036612
+vt 0.250000 0.125000
+vt 0.036612 0.213388
+vt 0.000000 0.125000
+vt 0.036612 0.036612
+vn -0.380900 -0.095200 0.919700
+vn -0.919700 -0.095200 0.380900
+vn -0.919700 -0.095200 -0.380900
+vn -0.380900 -0.095200 -0.919700
+vn 0.380900 -0.095200 -0.919700
+vn 0.919700 -0.095200 -0.380900
+vn 0.000000 1.000000 0.000000
+vn 0.380900 -0.095200 0.919700
+vn 0.919700 -0.095200 0.380900
+vn -0.381200 0.088600 -0.920200
+vn -0.920200 0.088600 -0.381200
+vn -0.920200 0.088600 0.381200
+vn -0.381200 0.088600 0.920200
+vn 0.381200 0.088600 0.920200
+vn 0.920200 0.088600 0.381200
+vn 0.920200 0.088600 -0.381200
+vn 0.381200 0.088600 -0.920200
+vn 0.000000 -1.000000 0.000000
+g cup_Circle_None_homedecor_bathroom_set_cup.png
+s off
+f 141/180/109 142/181/109 144/182/109 143/183/109
+f 143/183/110 144/182/110 146/184/110 145/185/110
+f 145/185/111 146/184/111 148/186/111 147/187/111
+f 147/187/112 148/186/112 150/188/112 149/189/112
+f 149/189/113 150/188/113 152/190/113 151/191/113
+f 151/191/114 152/190/114 154/192/114 153/193/114
+f 142/194/115 156/195/115 164/196/115 157/197/115
+f 155/198/116 156/195/116 142/194/116 141/199/116
+f 153/193/117 154/192/117 156/195/117 155/198/117
+f 166/200/115 165/201/115 174/202/115
+f 157/197/118 164/196/118 172/203/118 165/204/118
+f 156/195/115 154/192/115 163/205/115 164/196/115
+f 154/192/115 152/190/115 162/206/115 163/205/115
+f 152/190/115 150/188/115 161/207/115 162/206/115
+f 150/188/115 148/186/115 160/208/115 161/207/115
+f 148/186/115 146/184/115 159/209/115 160/208/115
+f 146/184/115 144/182/115 158/210/115 159/209/115
+f 144/182/115 142/181/115 157/211/115 158/210/115
+f 164/196/119 163/205/119 171/212/119 172/203/119
+f 163/205/120 162/206/120 170/213/120 171/212/120
+f 162/206/121 161/207/121 169/214/121 170/213/121
+f 161/207/122 160/208/122 168/215/122 169/214/122
+f 160/208/123 159/209/123 167/216/123 168/215/123
+f 159/209/124 158/210/124 166/217/124 167/216/124
+f 158/210/125 157/211/125 165/218/125 166/217/125
+f 141/219/126 143/220/126 173/202/126
+f 143/220/126 145/221/126 173/202/126
+f 145/221/126 147/200/126 173/202/126
+f 147/200/126 149/201/126 173/202/126
+f 149/201/126 151/222/126 173/202/126
+f 151/222/126 153/223/126 173/202/126
+f 153/223/126 155/224/126 173/202/126
+f 155/224/126 141/219/126 173/202/126
+f 165/201/115 172/222/115 174/202/115
+f 172/222/115 171/223/115 174/202/115
+f 171/223/115 170/224/115 174/202/115
+f 170/224/115 169/219/115 174/202/115
+f 169/219/115 168/220/115 174/202/115
+f 168/220/115 167/221/115 174/202/115
+f 167/221/115 166/200/115 174/202/115
+o Tooth_paste_tube_Cylinder
+v 0.043376 -0.467111 0.197851
+v -0.342709 -0.489433 0.418397
+v 0.035653 -0.488405 0.179791
+v -0.355538 -0.491853 0.394113
+v 0.022040 -0.489674 0.154250
+v -0.373841 -0.493560 0.359771
+v 0.010513 -0.470176 0.136190
+v -0.386897 -0.493554 0.335487
+v 0.007823 -0.441331 0.136190
+v -0.387057 -0.491838 0.335487
+v 0.015546 -0.420038 0.154250
+v -0.374228 -0.489417 0.359771
+v 0.029159 -0.418768 0.179791
+v -0.355925 -0.487710 0.394113
+v 0.040686 -0.438267 0.197851
+v -0.342869 -0.487717 0.418397
+v 0.045138 -0.459516 0.176275
+v 0.041359 -0.469933 0.167439
+v 0.034700 -0.470554 0.154945
+v 0.029061 -0.461015 0.146109
+v 0.027745 -0.446904 0.146109
+v 0.031523 -0.436487 0.154945
+v 0.038182 -0.435866 0.167439
+v 0.043822 -0.445405 0.176275
+v 0.079391 -0.456322 0.157860
+v 0.075613 -0.466739 0.149025
+v 0.068954 -0.467360 0.136530
+v 0.063314 -0.457821 0.127695
+v 0.061998 -0.443710 0.127695
+v 0.065777 -0.433293 0.136530
+v 0.072436 -0.432672 0.149025
+v 0.078075 -0.442211 0.157860
+v 0.070695 -0.450016 0.142777
+vt 0.504912 0.000000
+vt 0.560569 0.000839
+vt 0.560569 1.000000
+vt 0.519200 0.996996
+vt 0.387824 0.999174
+vt 0.309106 0.999087
+vt 0.320091 0.000000
+vt 0.378635 0.000065
+vt 0.253443 0.999174
+vt 0.278692 0.002445
+vt 0.415355 0.000000
+vt 0.418838 0.000000
+vt 0.446368 0.996934
+vt 0.387824 0.996934
+vt 0.197781 0.999098
+vt 0.187693 0.000000
+vt 0.229090 0.002491
+vt 0.119062 0.999098
+vt 0.129149 0.000000
+vt 0.063400 0.999247
+vt 0.087753 0.002491
+vt 0.776651 0.166040
+vt 0.776678 0.080899
+vt 0.829177 0.102840
+vt 0.829163 0.144492
+vt 0.825668 0.284057
+vt 0.927328 0.284057
+vt 0.825663 0.294910
+vt 0.982229 0.080964
+vt 0.982202 0.166105
+vt 0.929722 0.144524
+vt 0.929735 0.102872
+vt 0.921979 0.226290
+vt 0.900259 0.173967
+vt 0.836901 0.020714
+vt 0.858639 0.073397
+vt 0.836836 0.226263
+vt 0.858607 0.173954
+vt 0.922044 0.020741
+vt 0.900291 0.073410
+vt 0.812500 0.312500
+vt 0.875000 0.312500
+vt 0.875000 0.500000
+vt 0.812500 0.500000
+vt 0.625000 0.687500
+vt 0.687500 0.687500
+vt 0.687500 0.875000
+vt 0.625000 0.875000
+vt 0.625000 0.500000
+vt 0.625000 0.312500
+vt 0.687500 0.312500
+vt 0.687500 0.500000
+vt 0.750000 0.500000
+vt 0.750000 0.312500
+vt 0.812500 0.875000
+vt 0.812500 0.687500
+vt 0.875000 0.687500
+vt 0.875000 0.875000
+vt 0.750000 0.875000
+vt 0.750000 0.687500
+vt 0.927322 0.294911
+vt 0.999211 0.287237
+vt 0.473898 0.000000
+vt 0.477381 0.000000
+vt 0.504912 0.996934
+vt 0.637231 0.106734
+vt 0.666622 0.077339
+vt 0.687410 0.127513
+vt 0.708190 0.077335
+vt 0.737585 0.106725
+vt 0.737589 0.148293
+vt 0.708198 0.177688
+vt 0.666630 0.177691
+vt 0.637235 0.148301
+vt 0.753783 0.287235
+vt 0.753780 0.291731
+vt 0.999208 0.291732
+vn -0.081400 -0.462000 0.883100
+vn -0.510200 -0.718600 0.472500
+vn 0.543500 -0.839000 0.022900
+vn 0.804300 -0.371500 0.463600
+vn -0.646800 -0.731300 0.216200
+vn 0.319100 -0.860000 -0.398200
+vn -0.758100 -0.525100 -0.386600
+vn 0.080300 -0.439000 -0.894900
+vn -0.842100 0.375900 -0.386600
+vn -0.002200 0.446300 -0.894900
+vn -0.770900 0.599100 0.216200
+vn 0.154600 0.904100 -0.398200
+vn -0.634300 0.611800 0.472500
+vn 0.379000 0.925100 0.022900
+vn -0.165400 0.438900 0.883100
+vn 0.721800 0.513800 0.463600
+vn 0.868000 -0.243100 0.432900
+vn 0.808100 0.399400 0.432900
+vn 0.076100 0.331100 -0.940500
+vn 0.136000 -0.311300 -0.940500
+vn 0.248100 0.805400 -0.538200
+vn 0.696000 -0.717400 0.030700
+vn 0.551300 0.833700 0.030700
+vn 0.392800 -0.745700 -0.538200
+vn 0.759500 -0.649600 -0.035500
+vn 0.917900 -0.212800 0.334900
+vn 0.480200 -0.675600 -0.559400
+vn 0.347100 0.752700 -0.559400
+vn 0.626200 0.778800 -0.035500
+vn 0.862700 0.378800 0.334900
+vn 0.188600 0.316000 -0.929800
+vn 0.243800 -0.275600 -0.929800
+vn 0.877800 0.081900 -0.471900
+g Tooth_paste_tube_Cylinder_Material.002
+s 1
+f 176/225/127 178/226/128 177/227/129 175/228/130
+f 178/229/128 180/230/131 179/231/132 177/232/129
+f 180/230/131 182/233/133 181/234/134 179/231/132
+f 182/235/133 184/236/135 183/237/136 181/238/134
+f 184/233/135 186/239/137 185/240/138 183/241/136
+f 186/239/137 188/242/139 187/243/140 185/240/138
+f 188/242/139 190/244/141 189/245/142 187/243/140
+f 189/246/142 175/247/130 191/248/143 198/249/144
+f 180/250/131 178/251/128 186/252/137
+f 181/253/134 183/254/136 195/255/145 194/256/146
+f 183/254/136 185/257/138 196/258/147 195/255/145
+f 175/247/130 177/259/129 192/260/148 191/248/143
+f 187/261/140 189/246/142 198/249/144 197/262/149
+f 179/263/132 181/253/134 194/256/146 193/264/150
+f 185/257/138 187/261/140 197/262/149 196/258/147
+f 177/259/129 179/263/132 193/264/150 192/260/148
+f 191/265/143 192/266/148 200/267/151 199/268/152
+f 192/269/148 193/270/150 201/271/153 200/272/151
+f 204/273/154 196/274/147 197/275/149 205/276/155
+f 191/265/143 199/268/152 206/277/156 198/278/144
+f 203/279/157 195/280/145 196/281/147 204/282/154
+f 202/283/158 194/284/146 195/280/145 203/279/157
+f 193/270/150 194/284/146 202/283/158 201/271/153
+f 205/276/155 197/275/149 198/278/144 206/277/156
+f 188/285/139 178/251/128 176/286/127
+f 189/237/142 190/287/141 176/288/127 175/289/130
+f 199/290/152 200/291/151 207/292/159
+f 200/291/151 201/293/153 207/292/159
+f 201/293/153 202/294/158 207/292/159
+f 202/294/158 203/295/157 207/292/159
+f 203/295/157 204/296/154 207/292/159
+f 204/296/154 205/297/155 207/292/159
+f 205/297/155 206/298/156 207/292/159
+f 206/298/156 199/290/152 207/292/159
+f 186/252/137 182/299/133 180/250/131
+f 182/299/133 186/252/137 184/300/135
+f 176/286/127 190/301/141 188/285/139
+f 188/285/139 186/252/137 178/251/128
diff --git a/homedecor_modpack/homedecor/models/homedecor_bathroom_sink.obj b/homedecor_modpack/homedecor/models/homedecor_bathroom_sink.obj
new file mode 100644
index 0000000..6b1fc85
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bathroom_sink.obj
@@ -0,0 +1,1087 @@
+# Blender v2.73 (sub 0) OBJ File: 'bathroom-sink.blend'
+# www.blender.org
+o Cylinder
+v 0.187500 0.500000 0.500000
+v 0.187500 0.437500 0.500000
+v -0.312500 0.500000 0.375000
+v -0.312500 0.437500 0.375000
+v -0.302985 0.500000 0.422835
+v -0.302985 0.437500 0.422835
+v -0.187500 0.500000 0.062500
+v -0.187500 0.437500 0.062500
+v -0.235335 0.500000 0.072015
+v -0.235335 0.437500 0.072015
+v -0.275888 0.500000 0.099112
+v -0.275888 0.437500 0.099112
+v -0.302985 0.500000 0.139665
+v -0.302985 0.437500 0.139665
+v -0.312500 0.500000 0.187500
+v -0.312500 0.437500 0.187500
+v -0.275888 0.500000 0.463388
+v -0.275888 0.437500 0.463388
+v -0.235335 0.500000 0.490485
+v -0.235335 0.437500 0.490485
+v -0.187500 0.500000 0.500000
+v -0.187500 0.437500 0.500000
+v 0.187500 0.437500 0.062500
+v 0.187500 0.500000 0.062500
+v 0.235335 0.437500 0.072015
+v 0.235335 0.500000 0.072015
+v 0.275888 0.437500 0.099112
+v 0.275888 0.500000 0.099112
+v 0.302985 0.437500 0.139665
+v 0.302985 0.500000 0.139665
+v 0.312500 0.437500 0.187500
+v 0.312500 0.500000 0.187500
+v 0.312500 0.437500 0.375000
+v 0.312500 0.500000 0.375000
+v 0.302985 0.437500 0.422835
+v 0.302985 0.500000 0.422835
+v 0.275888 0.437500 0.463388
+v 0.275888 0.500000 0.463388
+v 0.235335 0.437500 0.490485
+v 0.235335 0.500000 0.490485
+v 0.150000 0.500000 0.406250
+v -0.250000 0.500000 0.339583
+v -0.242388 0.500000 0.365096
+v -0.150000 0.500000 0.125000
+v -0.188268 0.500000 0.130074
+v -0.220711 0.500000 0.144526
+v -0.242388 0.500000 0.166154
+v -0.250000 0.500000 0.191667
+v -0.220710 0.500000 0.386724
+v -0.188268 0.500000 0.401176
+v -0.150000 0.500000 0.406250
+v 0.150000 0.500000 0.125000
+v 0.188268 0.500000 0.130074
+v 0.220710 0.500000 0.144526
+v 0.242388 0.500000 0.166154
+v 0.250000 0.500000 0.191667
+v 0.250000 0.500000 0.339583
+v 0.242388 0.500000 0.365096
+v 0.220710 0.500000 0.386724
+v 0.188268 0.500000 0.401176
+v 0.150000 0.375000 0.437498
+v -0.250000 0.375000 0.348214
+v -0.242388 0.375000 0.382381
+v -0.150000 0.375000 0.125002
+v -0.188268 0.375000 0.131798
+v -0.220711 0.375000 0.151152
+v -0.242388 0.375000 0.180119
+v -0.250000 0.375000 0.214286
+v -0.220711 0.375000 0.411348
+v -0.188268 0.375000 0.430702
+v -0.150000 0.375000 0.437499
+v 0.150000 0.375000 0.125002
+v 0.188268 0.375000 0.131798
+v 0.220711 0.375000 0.151152
+v 0.242388 0.375000 0.180119
+v 0.250000 0.375000 0.214286
+v 0.250000 0.375000 0.348214
+v 0.242388 0.375000 0.382381
+v 0.220711 0.375000 0.411348
+v 0.188268 0.375000 0.430702
+v 0.093749 0.312500 0.406249
+v -0.156249 0.312500 0.334821
+v -0.151492 0.312500 0.362155
+v -0.093750 0.312500 0.156251
+v -0.117667 0.312500 0.161688
+v -0.137943 0.312500 0.177172
+v -0.151492 0.312500 0.200345
+v -0.156249 0.312500 0.227679
+v -0.137943 0.312500 0.385328
+v -0.117667 0.312500 0.400812
+v -0.093749 0.312500 0.406249
+v 0.093749 0.312500 0.156251
+v 0.117667 0.312500 0.161688
+v 0.137943 0.312500 0.177172
+v 0.151491 0.312500 0.200345
+v 0.156249 0.312500 0.227679
+v 0.156249 0.312500 0.334821
+v 0.151492 0.312500 0.362155
+v 0.137943 0.312500 0.385328
+v 0.117667 0.312500 0.400812
+v 0.018648 0.187500 0.343749
+v 0.022533 0.250000 0.363280
+v -0.018648 0.187500 0.343749
+v -0.022533 0.250000 0.363280
+v -0.053105 0.187500 0.334234
+v -0.064169 0.250000 0.350792
+v -0.079477 0.187500 0.316653
+v -0.096036 0.250000 0.327717
+v -0.093750 0.187500 0.293682
+v -0.113282 0.250000 0.297567
+v -0.093750 0.187500 0.268818
+v -0.113282 0.250000 0.264933
+v -0.079477 0.187500 0.245847
+v -0.096036 0.250000 0.234784
+v -0.053105 0.187500 0.228266
+v -0.064169 0.250000 0.211708
+v -0.018648 0.187500 0.218751
+v -0.022533 0.250000 0.199219
+v 0.018648 0.187500 0.218751
+v 0.022533 0.250000 0.199219
+v 0.053105 0.187500 0.228266
+v 0.064169 0.250000 0.211708
+v 0.079477 0.187500 0.245847
+v 0.096036 0.250000 0.234783
+v 0.093750 0.187500 0.268818
+v 0.113282 0.250000 0.264933
+v 0.093750 0.187500 0.293682
+v 0.113282 0.250000 0.297567
+v 0.079477 0.187500 0.316653
+v 0.096036 0.250000 0.327717
+v 0.053105 0.187500 0.334234
+v 0.064169 0.250000 0.350792
+v -0.156249 0.312500 0.281250
+v -0.000000 0.312500 0.406249
+v -0.000000 0.312500 0.156251
+v 0.156249 0.312500 0.281250
+v 0.018648 -0.375000 0.343749
+v -0.018648 -0.375000 0.343749
+v -0.053105 -0.375000 0.334234
+v -0.079477 -0.375000 0.316653
+v -0.093750 -0.375000 0.293682
+v -0.093750 -0.375000 0.268818
+v -0.079477 -0.375000 0.245847
+v -0.053105 -0.375000 0.228266
+v -0.018648 -0.375000 0.218751
+v 0.018648 -0.375000 0.218751
+v 0.053105 -0.375000 0.228266
+v 0.079477 -0.375000 0.245847
+v 0.093750 -0.375000 0.268818
+v 0.093750 -0.375000 0.293682
+v 0.079477 -0.375000 0.316653
+v 0.053105 -0.375000 0.334234
+v 0.037296 -0.437500 0.437499
+v -0.037296 -0.437500 0.437499
+v -0.106209 -0.437500 0.413712
+v -0.158954 -0.437500 0.369758
+v -0.187499 -0.437500 0.312330
+v -0.187499 -0.437500 0.250170
+v -0.158954 -0.437500 0.192742
+v -0.106209 -0.437500 0.148788
+v -0.037296 -0.437500 0.125001
+v 0.037296 -0.437500 0.125001
+v 0.106209 -0.437500 0.148788
+v 0.158954 -0.437500 0.192742
+v 0.187499 -0.437500 0.250170
+v 0.187499 -0.437500 0.312330
+v 0.158954 -0.437500 0.369758
+v 0.106209 -0.437500 0.413712
+v 0.037296 -0.500000 0.437499
+v -0.037296 -0.500000 0.437499
+v -0.106209 -0.500000 0.413712
+v -0.158954 -0.500000 0.369758
+v -0.187499 -0.500000 0.312330
+v -0.187499 -0.500000 0.250170
+v -0.158954 -0.500000 0.192742
+v -0.106210 -0.500000 0.148788
+v -0.037296 -0.500000 0.125001
+v 0.037296 -0.500000 0.125001
+v 0.106209 -0.500000 0.148788
+v 0.158954 -0.500000 0.192742
+v 0.187499 -0.500000 0.250170
+v 0.187499 -0.500000 0.312330
+v 0.158954 -0.500000 0.369758
+v 0.106209 -0.500000 0.413712
+v 0.150000 0.437500 0.406250
+v -0.250000 0.437500 0.339583
+v -0.242388 0.437500 0.365096
+v -0.150000 0.437500 0.125000
+v -0.188268 0.437500 0.130074
+v -0.220711 0.437500 0.144526
+v -0.242388 0.437500 0.166154
+v -0.250000 0.437500 0.191667
+v -0.220710 0.437500 0.386724
+v -0.188268 0.437500 0.401176
+v -0.150000 0.437500 0.406250
+v 0.150000 0.437500 0.125000
+v 0.188268 0.437500 0.130074
+v 0.220710 0.437500 0.144526
+v 0.242388 0.437500 0.166154
+v 0.250000 0.437500 0.191667
+v 0.250000 0.437500 0.339583
+v 0.242388 0.437500 0.365096
+v 0.220710 0.437500 0.386724
+v 0.188268 0.437500 0.401176
+v 0.119531 0.375000 0.367187
+v -0.199219 0.375000 0.319039
+v -0.193153 0.375000 0.337464
+v -0.119531 0.375000 0.164063
+v -0.150027 0.375000 0.167728
+v -0.175879 0.375000 0.178165
+v -0.193153 0.375000 0.193786
+v -0.199219 0.375000 0.212211
+v -0.175879 0.375000 0.353085
+v -0.150026 0.375000 0.363522
+v -0.119531 0.375000 0.367187
+v 0.119531 0.375000 0.164063
+v 0.150026 0.375000 0.167728
+v 0.175879 0.375000 0.178165
+v 0.193153 0.375000 0.193786
+v 0.199219 0.375000 0.212211
+v 0.199219 0.375000 0.319039
+v 0.193153 0.375000 0.337464
+v 0.175879 0.375000 0.353085
+v 0.150026 0.375000 0.363522
+v -0.000000 0.375000 0.265625
+v -0.000000 -0.500000 0.281250
+v -0.162498 -0.037772 0.173627
+vt 0.522755 0.944260
+vt 0.522755 0.966999
+vt 0.502370 0.966999
+vt 0.502370 0.944260
+vt 0.544203 0.944260
+vt 0.544203 0.966999
+vt 0.566933 0.944260
+vt 0.566933 0.966999
+vt 0.590460 0.944260
+vt 0.590460 0.966999
+vt 0.367471 0.944260
+vt 0.367471 0.966999
+vt 0.344741 0.966999
+vt 0.344741 0.944260
+vt 0.321213 0.966999
+vt 0.321213 0.944260
+vt 0.388919 0.944260
+vt 0.388919 0.966999
+vt 0.409303 0.944260
+vt 0.409303 0.966999
+vt 0.806848 0.944260
+vt 0.806848 0.966999
+vt 0.783320 0.966999
+vt 0.783320 0.944260
+vt 0.829578 0.944260
+vt 0.829578 0.966999
+vt 0.851026 0.944260
+vt 0.851026 0.966999
+vt 0.871411 0.944260
+vt 0.871411 0.966999
+vt 0.060648 0.944260
+vt 0.060648 0.966999
+vt 0.040263 0.966999
+vt 0.040263 0.944260
+vt 0.082096 0.944260
+vt 0.082096 0.966999
+vt 0.104826 0.944260
+vt 0.104826 0.966999
+vt 0.128353 0.944260
+vt 0.128353 0.966999
+vt 0.964478 0.944260
+vt 0.964478 0.966999
+vt 0.101375 0.559672
+vt 0.125220 0.554929
+vt 0.143914 0.586085
+vt 0.124837 0.588614
+vt 0.356212 0.754766
+vt 0.335997 0.768273
+vt 0.312535 0.723754
+vt 0.328707 0.716550
+vt 0.062910 0.617240
+vt 0.067653 0.593395
+vt 0.097860 0.606599
+vt 0.094065 0.619317
+vt 0.067653 0.734551
+vt 0.062910 0.710706
+vt 0.094065 0.693051
+vt 0.097860 0.705769
+vt 0.356212 0.573180
+vt 0.369719 0.593395
+vt 0.339513 0.606599
+vt 0.328707 0.595818
+vt 0.081160 0.754766
+vt 0.108666 0.716550
+vt 0.374462 0.710706
+vt 0.369719 0.734551
+vt 0.339513 0.705769
+vt 0.343307 0.693051
+vt 0.312152 0.554929
+vt 0.335997 0.559672
+vt 0.312535 0.588614
+vt 0.293459 0.586085
+vt 0.081160 0.573180
+vt 0.108666 0.595818
+vt 0.101375 0.768273
+vt 0.124837 0.723754
+vt 0.374462 0.617240
+vt 0.343307 0.619317
+vt 0.125220 0.773016
+vt 0.143914 0.726283
+vt 0.312152 0.773016
+vt 0.293459 0.726283
+vt 0.333137 0.877214
+vt 0.351877 0.877214
+vt 0.351877 0.901145
+vt 0.333137 0.901145
+vt 0.125586 0.877214
+vt 0.142670 0.877214
+vt 0.142670 0.901145
+vt 0.125586 0.901145
+vt 0.477435 0.877214
+vt 0.493672 0.877214
+vt 0.493672 0.901145
+vt 0.477435 0.901145
+vt 0.755153 0.877214
+vt 0.771389 0.877214
+vt 0.771389 0.901145
+vt 0.755153 0.901145
+vt 0.719963 0.877214
+vt 0.738068 0.877214
+vt 0.738068 0.901145
+vt 0.719963 0.901145
+vt 0.510756 0.877214
+vt 0.528861 0.877214
+vt 0.528861 0.901145
+vt 0.510756 0.901145
+vt 0.387067 0.877214
+vt 0.403304 0.877214
+vt 0.403304 0.901145
+vt 0.387067 0.901145
+vt 0.547602 0.877214
+vt 0.701222 0.877214
+vt 0.701222 0.901145
+vt 0.547602 0.901145
+vt 0.845520 0.877214
+vt 0.845520 0.901145
+vt 0.160776 0.877214
+vt 0.160776 0.901145
+vt 0.369982 0.877214
+vt 0.369982 0.901145
+vt 0.109349 0.877214
+vt 0.109349 0.901145
+vt 0.179516 0.877214
+vt 0.179516 0.901145
+vt 0.143900 0.704984
+vt 0.159102 0.706811
+vt 0.306359 0.699781
+vt 0.314970 0.691995
+vt 0.122402 0.620373
+vt 0.119379 0.629558
+vt 0.317994 0.629558
+vt 0.314970 0.620373
+vt 0.306359 0.612587
+vt 0.293472 0.607384
+vt 0.143900 0.607384
+vt 0.131013 0.612587
+vt 0.119379 0.682810
+vt 0.122402 0.691995
+vt 0.159102 0.605557
+vt 0.293472 0.704984
+vt 0.131013 0.699781
+vt 0.317994 0.682810
+vt 0.278271 0.605557
+vt 0.278271 0.706811
+vt 0.998425 0.725657
+vt 0.993682 0.749503
+vt 0.963476 0.729337
+vt 0.967270 0.712305
+vt 0.705123 0.588131
+vt 0.725338 0.574624
+vt 0.748800 0.604425
+vt 0.732628 0.614073
+vt 0.725338 0.783225
+vt 0.705123 0.769718
+vt 0.732628 0.743776
+vt 0.748800 0.753424
+vt 0.980175 0.588131
+vt 0.993682 0.608346
+vt 0.963476 0.628512
+vt 0.952670 0.614073
+vt 0.691616 0.608346
+vt 0.721823 0.628512
+vt 0.980175 0.769718
+vt 0.959960 0.783225
+vt 0.936498 0.753424
+vt 0.952670 0.743776
+vt 0.691616 0.749503
+vt 0.721823 0.729337
+vt 0.936115 0.569881
+vt 0.959960 0.574624
+vt 0.936498 0.604425
+vt 0.917422 0.601037
+vt 0.749183 0.569881
+vt 0.767877 0.601037
+vt 0.686873 0.632192
+vt 0.718028 0.645544
+vt 0.686873 0.725657
+vt 0.718028 0.712305
+vt 0.998425 0.632192
+vt 0.967270 0.645544
+vt 0.749183 0.787968
+vt 0.767877 0.756812
+vt 0.936115 0.787968
+vt 0.917422 0.756812
+vt 0.783994 0.738524
+vt 0.795916 0.741235
+vt 0.911412 0.627043
+vt 0.901304 0.619325
+vt 0.795916 0.616614
+vt 0.783994 0.619325
+vt 0.920537 0.652220
+vt 0.918165 0.638594
+vt 0.764762 0.705629
+vt 0.767133 0.719254
+vt 0.911412 0.730806
+vt 0.918165 0.719254
+vt 0.889382 0.741235
+vt 0.901304 0.738524
+vt 0.773887 0.627043
+vt 0.767133 0.638594
+vt 0.773887 0.730806
+vt 0.889382 0.616614
+vt 0.920537 0.705629
+vt 0.764762 0.652220
+vt 0.128325 0.468750
+vt 0.128325 0.500000
+vt 0.097075 0.500000
+vt 0.097075 0.468750
+vt 0.065825 0.500000
+vt 0.065825 0.468750
+vt 0.034575 0.500000
+vt 0.034575 0.468750
+vt 0.534575 0.468750
+vt 0.534575 0.500000
+vt 0.503325 0.500000
+vt 0.503325 0.468750
+vt 0.472075 0.500000
+vt 0.472075 0.468750
+vt 0.440825 0.500000
+vt 0.440825 0.468750
+vt 0.409575 0.500000
+vt 0.409575 0.468750
+vt 0.378325 0.500000
+vt 0.378325 0.468750
+vt 0.347075 0.500000
+vt 0.347075 0.468750
+vt 0.315825 0.500000
+vt 0.315825 0.468750
+vt 0.284575 0.500000
+vt 0.284575 0.468750
+vt 0.253325 0.500000
+vt 0.253325 0.468750
+vt 0.222075 0.500000
+vt 0.222075 0.468750
+vt 0.190825 0.500000
+vt 0.190825 0.468750
+vt 0.810662 0.713590
+vt 0.831417 0.719815
+vt 0.159575 0.468750
+vt 0.159575 0.500000
+vt 0.284575 0.156250
+vt 0.315825 0.156250
+vt 0.853882 0.719815
+vt 0.874636 0.713590
+vt 0.786180 0.687058
+vt 0.794777 0.702087
+vt 0.794777 0.655762
+vt 0.786180 0.670791
+vt 0.831417 0.638034
+vt 0.810662 0.644259
+vt 0.874636 0.644259
+vt 0.853882 0.638034
+vt 0.899118 0.670791
+vt 0.890521 0.655762
+vt 0.890521 0.702087
+vt 0.899118 0.687058
+vt 0.842649 0.616614
+vt 0.764762 0.678925
+vt 0.842649 0.741235
+vt 0.920537 0.678925
+vt 0.472075 0.156250
+vt 0.440825 0.156250
+vt 0.440825 0.093750
+vt 0.472075 0.093750
+vt 0.034575 0.156250
+vt 0.065825 0.156250
+vt 0.190825 0.156250
+vt 0.222075 0.156250
+vt 0.347075 0.156250
+vt 0.378325 0.156250
+vt 0.253325 0.156250
+vt 0.503325 0.156250
+vt 0.534575 0.156250
+vt 0.159575 0.156250
+vt 0.409575 0.156250
+vt 0.097075 0.156250
+vt 0.128325 0.156250
+vt 0.409575 0.093750
+vt 0.409575 0.062500
+vt 0.440825 0.062500
+vt 0.503325 0.093750
+vt 0.534575 0.093750
+vt 0.159575 0.093750
+vt 0.190825 0.093750
+vt 0.065825 0.093750
+vt 0.097075 0.093750
+vt 0.222075 0.093750
+vt 0.253325 0.093750
+vt 0.284575 0.093750
+vt 0.315825 0.093750
+vt 0.347075 0.093750
+vt 0.378325 0.093750
+vt 0.128325 0.093750
+vt 0.034575 0.093750
+vt 0.472075 0.062500
+vt 0.503325 0.062500
+vt 0.128325 0.062500
+vt 0.159575 0.062500
+vt 0.034575 0.062500
+vt 0.065825 0.062500
+vt 0.190825 0.062500
+vt 0.222075 0.062500
+vt 0.097075 0.062500
+vt 0.253325 0.062500
+vt 0.284575 0.062500
+vt 0.315825 0.062500
+vt 0.347075 0.062500
+vt 0.378325 0.062500
+vt 0.534575 0.062500
+vt 0.614774 0.350358
+vt 0.643840 0.340325
+vt 0.659571 0.406227
+vt 0.592529 0.368897
+vt 0.580489 0.393118
+vt 0.580489 0.419336
+vt 0.592529 0.443558
+vt 0.614774 0.462096
+vt 0.643840 0.472129
+vt 0.675301 0.472129
+vt 0.704367 0.462096
+vt 0.726614 0.443557
+vt 0.738653 0.419336
+vt 0.738653 0.393118
+vt 0.726614 0.368897
+vt 0.704367 0.350358
+vt 0.675301 0.340325
+vt 0.456404 0.607387
+vt 0.471606 0.605560
+vt 0.531190 0.656187
+vt 0.618863 0.612589
+vt 0.627474 0.620376
+vt 0.605976 0.607387
+vt 0.590775 0.605560
+vt 0.630498 0.629560
+vt 0.630498 0.682813
+vt 0.627474 0.691997
+vt 0.618863 0.699784
+vt 0.605976 0.704987
+vt 0.590775 0.706814
+vt 0.471606 0.706814
+vt 0.456404 0.704987
+vt 0.443517 0.699784
+vt 0.434907 0.691997
+vt 0.431883 0.682813
+vt 0.431883 0.629560
+vt 0.434907 0.620376
+vt 0.443517 0.612589
+vn 0.923900 0.000000 -0.382700
+vn 0.689400 0.665700 -0.285500
+vn 0.724400 0.685700 -0.071300
+vn 0.995200 0.000000 -0.098000
+vn 0.707100 0.000000 -0.707100
+vn 0.527600 0.665700 -0.527600
+vn 0.382700 0.000000 -0.923900
+vn 0.285500 0.665700 -0.689400
+vn 0.098000 0.000000 -0.995200
+vn 0.071300 0.685700 -0.724400
+vn 0.707100 0.000000 0.707100
+vn 0.527600 0.665700 0.527600
+vn 0.285500 0.665700 0.689400
+vn 0.382700 0.000000 0.923900
+vn 0.071300 0.685700 0.724400
+vn 0.098000 0.000000 0.995200
+vn 0.923900 0.000000 0.382700
+vn 0.689400 0.665700 0.285500
+vn 0.995200 0.000000 0.098000
+vn 0.724400 0.685700 0.071300
+vn -0.382700 0.000000 -0.923900
+vn -0.285500 0.665700 -0.689400
+vn -0.071300 0.685700 -0.724400
+vn -0.098000 0.000000 -0.995200
+vn -0.707100 0.000000 -0.707100
+vn -0.527600 0.665700 -0.527600
+vn -0.923900 0.000000 -0.382700
+vn -0.689400 0.665700 -0.285500
+vn -0.995200 0.000000 -0.098000
+vn -0.724400 0.685700 -0.071300
+vn -0.923900 0.000000 0.382700
+vn -0.689400 0.665700 0.285500
+vn -0.724400 0.685700 0.071300
+vn -0.995200 0.000000 0.098000
+vn -0.707100 0.000000 0.707100
+vn -0.527600 0.665700 0.527600
+vn -0.382700 0.000000 0.923900
+vn -0.285500 0.665700 0.689400
+vn -0.098000 0.000000 0.995200
+vn -0.071300 0.685700 0.724400
+vn -0.045500 0.722200 0.690100
+vn -0.182700 0.740800 0.646400
+vn 0.182700 0.740800 -0.646400
+vn 0.374200 0.750300 -0.544900
+vn -0.551100 0.766800 0.329000
+vn -0.664300 0.741100 0.097000
+vn -0.664300 0.741100 -0.097000
+vn -0.551100 0.766800 -0.329000
+vn 0.551100 0.766800 0.329000
+vn 0.374200 0.750300 0.544900
+vn -0.374200 0.750300 -0.544900
+vn 0.551100 0.766800 -0.329000
+vn 0.664300 0.741100 -0.097000
+vn 0.182700 0.740800 0.646400
+vn 0.045500 0.722200 0.690100
+vn -0.374200 0.750300 0.544900
+vn -0.182700 0.740800 -0.646400
+vn 0.664300 0.741100 0.097000
+vn -0.045500 0.722200 -0.690100
+vn 0.045500 0.722200 -0.690100
+vn -0.265400 0.307700 -0.913700
+vn -0.068000 0.283900 -0.956400
+vn 0.535200 0.332500 -0.776500
+vn 0.804200 0.341900 -0.486100
+vn -0.804200 0.341900 0.486100
+vn -0.930400 0.337200 0.143600
+vn 0.930400 0.337200 0.143600
+vn 0.804200 0.341900 0.486100
+vn 0.535200 0.332500 0.776500
+vn 0.265400 0.307700 0.913700
+vn -0.265400 0.307700 0.913700
+vn -0.535200 0.332500 0.776500
+vn -0.930400 0.337200 -0.143600
+vn -0.804200 0.341900 -0.486100
+vn 0.068000 0.283900 0.956400
+vn -0.068000 0.283900 0.956400
+vn 0.930400 0.337200 -0.143600
+vn 0.265400 0.307700 -0.913700
+vn -0.535200 0.332500 -0.776500
+vn 0.068000 0.283900 -0.956400
+vn -0.186700 0.587500 -0.787400
+vn -0.040500 0.542900 -0.838800
+vn 0.403400 0.641300 -0.652700
+vn 0.627600 0.671100 -0.394700
+vn -0.627600 0.671100 0.394700
+vn -0.754400 0.648400 0.102600
+vn 0.754400 0.648400 0.102600
+vn 0.627600 0.671100 0.394700
+vn 0.403400 0.641300 0.652700
+vn 0.186700 0.587500 0.787400
+vn -0.186700 0.587500 0.787400
+vn -0.403400 0.641300 0.652700
+vn -0.754400 0.648400 -0.102600
+vn -0.627600 0.671100 -0.394700
+vn -0.040500 0.542900 0.838800
+vn 0.186700 0.587500 -0.787400
+vn -0.403400 0.641300 -0.652700
+vn 0.754400 0.648400 -0.102600
+vn 0.040500 0.542900 0.838800
+vn 0.040500 0.542900 -0.838800
+vn -0.685900 -0.723200 -0.080300
+vn -0.596000 -0.756400 -0.269500
+vn -0.571500 -0.787300 -0.231300
+vn -0.627100 -0.776700 -0.058600
+vn 0.441500 -0.771300 0.458500
+vn 0.253400 -0.759500 0.599100
+vn 0.267200 -0.724300 0.635600
+vn 0.445700 -0.777100 0.444300
+vn 0.253400 -0.759500 -0.599100
+vn 0.441500 -0.771300 -0.458500
+vn 0.445700 -0.777100 -0.444300
+vn 0.267200 -0.724300 -0.635600
+vn -0.441500 -0.771300 0.458500
+vn -0.596000 -0.756400 0.269500
+vn -0.571500 -0.787300 0.231300
+vn -0.445700 -0.777100 0.444300
+vn 0.596000 -0.756400 0.269500
+vn 0.571500 -0.787300 0.231300
+vn -0.441500 -0.771300 -0.458500
+vn -0.253400 -0.759500 -0.599100
+vn -0.267200 -0.724300 -0.635600
+vn -0.445700 -0.777100 -0.444300
+vn 0.596000 -0.756400 -0.269500
+vn 0.571500 -0.787300 -0.231300
+vn -0.077000 -0.726300 0.683000
+vn -0.253400 -0.759500 0.599100
+vn -0.267200 -0.724300 0.635600
+vn -0.081400 -0.633100 0.769700
+vn 0.077000 -0.726300 0.683000
+vn 0.081400 -0.633100 0.769700
+vn 0.685900 -0.723200 0.080300
+vn 0.627100 -0.776700 0.058600
+vn 0.685900 -0.723200 -0.080300
+vn 0.627100 -0.776700 -0.058600
+vn -0.685900 -0.723200 0.080300
+vn -0.627100 -0.776700 0.058600
+vn 0.077000 -0.726300 -0.683000
+vn 0.081400 -0.633100 -0.769700
+vn -0.077000 -0.726300 -0.683000
+vn -0.081400 -0.633100 -0.769700
+vn 0.270500 -0.680900 -0.680600
+vn 0.085500 -0.575600 -0.813300
+vn -0.456400 -0.756800 0.467800
+vn -0.270500 -0.680900 0.680600
+vn 0.085500 -0.575600 0.813300
+vn 0.270500 -0.680900 0.680600
+vn -0.652300 -0.753500 0.082300
+vn -0.581900 -0.777200 0.239400
+vn 0.652300 -0.753500 -0.082300
+vn 0.581900 -0.777200 -0.239400
+vn -0.456400 -0.756800 -0.467800
+vn -0.581900 -0.777200 -0.239400
+vn -0.085500 -0.575600 -0.813300
+vn -0.270500 -0.680900 -0.680600
+vn 0.456400 -0.756800 0.467800
+vn 0.581900 -0.777200 0.239400
+vn 0.456400 -0.756800 -0.467800
+vn -0.085500 -0.575600 0.813300
+vn -0.652300 -0.753500 -0.082300
+vn 0.652300 -0.753500 0.082300
+vn 0.134800 -0.153800 0.978900
+vn 0.098700 -0.470700 0.876700
+vn -0.098700 -0.470700 0.876700
+vn -0.134800 -0.153800 0.978900
+vn -0.355600 -0.543500 0.760300
+vn -0.416100 -0.153500 0.896300
+vn -0.635800 -0.545400 0.546100
+vn -0.714300 -0.155400 0.682300
+vn -0.850900 -0.484600 0.202600
+vn -0.950100 -0.159800 0.268000
+vn -0.850900 -0.484600 -0.202600
+vn -0.950100 -0.159800 -0.268000
+vn -0.635800 -0.545400 -0.546100
+vn -0.714300 -0.155400 -0.682300
+vn -0.355600 -0.543500 -0.760300
+vn -0.416100 -0.153500 -0.896300
+vn -0.098700 -0.470700 -0.876700
+vn -0.134800 -0.153800 -0.978900
+vn 0.098700 -0.470700 -0.876700
+vn 0.134800 -0.153800 -0.978900
+vn 0.355600 -0.543500 -0.760300
+vn 0.416100 -0.153500 -0.896300
+vn 0.635800 -0.545400 -0.546100
+vn 0.714300 -0.155400 -0.682300
+vn 0.850900 -0.484600 -0.202600
+vn 0.950100 -0.159800 -0.268000
+vn 0.850900 -0.484600 0.202600
+vn 0.950100 -0.159800 0.268000
+vn 0.635800 -0.545400 0.546100
+vn 0.714300 -0.155400 0.682300
+vn 0.416100 -0.153500 0.896300
+vn 0.355600 -0.543500 0.760300
+vn 0.632100 0.504100 -0.588500
+vn 0.374200 0.494900 -0.784200
+vn 0.000000 -0.508100 0.861300
+vn 0.702000 -0.712100 0.000000
+vn 0.000000 -0.508100 -0.861300
+vn -0.702000 -0.712100 0.000000
+vn -0.825300 0.516800 -0.227300
+vn -0.632100 0.504100 -0.588500
+vn -0.696500 0.450800 -0.558200
+vn -0.868600 0.450300 -0.206700
+vn -0.632100 0.504100 0.588500
+vn -0.374200 0.494900 0.784200
+vn 0.632100 0.504100 0.588500
+vn 0.825300 0.516800 0.227300
+vn 0.122200 0.491600 -0.862200
+vn -0.122200 0.491600 -0.862200
+vn 0.825300 0.516800 -0.227300
+vn -0.825300 0.516800 0.227300
+vn 0.374200 0.494900 0.784200
+vn -0.374200 0.494900 -0.784200
+vn -0.122200 0.491600 0.862200
+vn 0.122200 0.491600 0.862200
+vn -0.433100 0.452500 -0.779500
+vn -0.365300 -0.668700 -0.647600
+vn -0.587000 -0.663600 -0.463800
+vn -0.868600 0.450300 0.206700
+vn -0.696500 0.450800 0.558200
+vn 0.433100 0.452500 0.779500
+vn 0.696500 0.450800 0.558200
+vn -0.433100 0.452500 0.779500
+vn -0.145100 0.454400 0.878900
+vn 0.868600 0.450300 0.206700
+vn 0.868600 0.450300 -0.206700
+vn 0.696500 0.450800 -0.558200
+vn 0.433100 0.452500 -0.779500
+vn 0.145100 0.454400 -0.878900
+vn -0.145100 0.454400 -0.878900
+vn 0.145100 0.454400 0.878900
+vn -0.732100 -0.659100 -0.171900
+vn -0.732100 -0.659100 0.171900
+vn 0.122500 -0.671700 0.730600
+vn 0.365300 -0.668700 0.647600
+vn -0.587000 -0.663600 0.463800
+vn -0.365300 -0.668700 0.647600
+vn 0.587000 -0.663600 0.463800
+vn 0.732100 -0.659100 0.171900
+vn -0.122500 -0.671700 0.730600
+vn 0.732100 -0.659100 -0.171900
+vn 0.587000 -0.663600 -0.463800
+vn 0.365300 -0.668700 -0.647600
+vn 0.122500 -0.671700 -0.730600
+vn -0.122500 -0.671700 -0.730600
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 -0.000000
+g Cylinder_Cylinder_marble-light
+s 1
+f 29/1/1 30/2/2 32/3/3 31/4/4
+f 27/5/5 28/6/6 30/2/2 29/1/1
+f 25/7/7 26/8/8 28/6/6 27/5/5
+f 23/9/9 24/10/10 26/8/8 25/7/7
+f 37/11/11 38/12/12 40/13/13 39/14/14
+f 39/14/14 40/13/13 1/15/15 2/16/16
+f 35/17/17 36/18/18 38/12/12 37/11/11
+f 33/19/19 34/20/20 36/18/18 35/17/17
+f 10/21/21 9/22/22 7/23/23 8/24/24
+f 12/25/25 11/26/26 9/22/22 10/21/21
+f 14/27/27 13/28/28 11/26/26 12/25/25
+f 16/29/29 15/30/30 13/28/28 14/27/27
+f 6/31/31 5/32/32 3/33/33 4/34/34
+f 18/35/35 17/36/36 5/32/32 6/31/31
+f 20/37/37 19/38/38 17/36/36 18/35/35
+f 22/39/39 21/40/40 19/38/38 20/37/37
+f 16/29/29 4/41/34 3/42/33 15/30/30
+f 1/15/15 21/40/40 22/39/39 2/16/16
+f 23/9/9 8/24/24 7/23/23 24/10/10
+f 33/19/19 31/4/4 32/3/3 34/20/20
+f 26/43/8 24/44/10 52/45/41 53/46/42
+f 17/47/36 19/48/38 50/49/43 49/50/44
+f 32/51/3 30/52/2 55/53/45 56/54/46
+f 36/55/18 34/56/20 57/57/47 58/58/48
+f 11/59/26 13/60/28 47/61/49 46/62/50
+f 38/63/12 36/55/18 58/58/48 59/64/51
+f 3/65/33 5/66/32 43/67/52 42/68/53
+f 7/69/23 9/70/22 45/71/54 44/72/55
+f 28/73/6 26/43/8 53/46/42 54/74/56
+f 40/75/13 38/63/12 59/64/51 60/76/57
+f 13/60/28 15/77/30 48/78/58 47/61/49
+f 5/66/32 17/47/36 49/50/44 43/67/52
+f 30/52/2 28/73/6 54/74/56 55/53/45
+f 9/70/22 11/59/26 46/62/50 45/71/54
+f 1/79/15 40/75/13 60/76/57 41/80/59
+f 19/48/38 21/81/40 51/82/60 50/49/43
+f 41/83/59 60/84/57 204/85/61 185/86/62
+f 43/87/52 49/88/44 193/89/63 187/90/64
+f 56/91/46 55/92/45 199/93/65 200/94/66
+f 47/95/49 48/96/58 192/97/67 191/98/68
+f 45/99/54 46/100/50 190/101/69 189/102/70
+f 54/103/56 53/104/42 197/105/71 198/106/72
+f 58/107/48 57/108/47 201/109/73 202/110/74
+f 52/111/41 44/112/55 188/113/75 196/114/76
+f 53/104/42 52/111/41 196/114/76 197/105/71
+f 48/96/58 42/115/53 186/116/77 192/97/67
+f 49/88/44 50/117/43 194/118/78 193/89/63
+f 60/84/57 59/119/51 203/120/79 204/85/61
+f 42/121/53 43/87/52 187/90/64 186/122/77
+f 55/92/45 54/103/56 198/106/72 199/93/65
+f 46/100/50 47/95/49 191/98/68 190/101/69
+f 44/112/55 45/99/54 189/102/70 188/113/75
+f 57/108/47 56/91/46 200/94/66 201/109/73
+f 59/119/51 58/107/48 202/110/74 203/120/79
+f 51/123/60 41/83/59 185/86/62 195/124/80
+f 50/117/43 51/123/60 195/124/80 194/118/78
+f 185/80/62 204/76/61 224/125/81 205/126/82
+f 187/67/64 193/50/63 213/127/83 207/128/84
+f 200/54/66 199/53/65 219/129/85 220/130/86
+f 191/61/68 192/78/67 212/131/87 211/132/88
+f 189/71/70 190/62/69 210/133/89 209/134/90
+f 198/74/72 197/46/71 217/135/91 218/136/92
+f 202/58/74 201/57/73 221/137/93 222/138/94
+f 197/46/71 196/45/76 216/139/95 217/135/91
+f 193/50/63 194/49/78 214/140/96 213/127/83
+f 204/76/61 203/64/79 223/141/97 224/125/81
+f 186/68/77 187/67/64 207/128/84 206/142/98
+f 199/53/65 198/74/72 218/136/92 219/129/85
+f 190/62/69 191/61/68 211/132/88 210/133/89
+f 188/72/75 189/71/70 209/134/90 208/143/99
+f 203/64/79 202/58/74 222/138/94 223/141/97
+f 194/49/78 195/82/80 215/144/100 214/140/96
+f 57/57/47 34/56/20 32/51/3 56/54/46
+f 52/45/41 24/44/10 7/69/23 44/72/55
+f 48/78/58 15/77/30 3/65/33 42/68/53
+f 51/82/60 21/81/40 1/79/15 41/80/59
+f 216/139/95 196/45/76 188/72/75 208/143/99
+f 212/131/87 192/78/67 186/68/77 206/142/98
+f 221/137/93 201/57/73 200/54/66 220/130/86
+f 215/144/100 195/82/80 185/80/62 205/126/82
+g Cylinder_Cylinder_marble
+f 16/145/101 14/146/102 67/147/103 68/148/104
+f 37/149/105 39/150/106 80/151/107 79/152/108
+f 25/153/109 27/154/110 74/155/111 73/156/112
+f 18/157/113 6/158/114 63/159/115 69/160/116
+f 35/161/117 37/149/105 79/152/108 78/162/118
+f 12/163/119 10/164/120 65/165/121 66/166/122
+f 27/154/110 29/167/123 75/168/124 74/155/111
+f 22/169/125 20/170/126 70/171/127 71/172/128
+f 39/150/106 2/173/129 61/174/130 80/151/107
+f 20/170/126 18/157/113 69/160/116 70/171/127
+f 33/175/131 35/161/117 78/162/118 77/176/132
+f 14/146/102 12/163/119 66/166/122 67/147/103
+f 29/167/123 31/177/133 76/178/134 75/168/124
+f 6/158/114 4/179/135 62/180/136 63/159/115
+f 23/181/137 25/153/109 73/156/112 72/182/138
+f 10/164/120 8/183/139 64/184/140 65/165/121
+f 72/182/138 73/156/112 93/185/141 92/186/142
+f 70/171/127 69/160/116 89/187/143 90/188/144
+f 80/151/107 61/174/130 81/189/145 100/190/146
+f 63/159/115 62/180/136 82/191/147 83/192/148
+f 75/168/124 76/178/134 96/193/149 95/194/150
+f 67/147/103 66/166/122 86/195/151 87/196/152
+f 65/165/121 64/184/140 84/197/153 85/198/154
+f 78/162/118 79/152/108 99/199/155 98/200/156
+f 73/156/112 74/155/111 94/201/157 93/185/141
+f 71/172/128 70/171/127 90/188/144 91/202/158
+f 69/160/116 63/159/115 83/192/148 89/187/143
+f 79/152/108 80/151/107 100/190/146 99/199/155
+f 68/148/104 67/147/103 87/196/152 88/203/159
+f 74/155/111 75/168/124 95/194/150 94/201/157
+f 66/166/122 65/165/121 85/198/154 86/195/151
+f 77/176/132 78/162/118 98/200/156 97/204/160
+f 101/205/161 102/206/162 104/207/163 103/208/164
+f 103/208/164 104/207/163 106/209/165 105/210/166
+f 105/210/166 106/209/165 108/211/167 107/212/168
+f 107/213/168 108/214/167 110/215/169 109/216/170
+f 109/216/170 110/215/169 112/217/171 111/218/172
+f 111/218/172 112/217/171 114/219/173 113/220/174
+f 113/220/174 114/219/173 116/221/175 115/222/176
+f 115/222/176 116/221/175 118/223/177 117/224/178
+f 117/224/178 118/223/177 120/225/179 119/226/180
+f 119/226/180 120/225/179 122/227/181 121/228/182
+f 121/228/182 122/227/181 124/229/183 123/230/184
+f 123/230/184 124/229/183 126/231/185 125/232/186
+f 125/232/186 126/231/185 128/233/187 127/234/188
+f 127/234/188 128/233/187 130/235/189 129/236/190
+f 122/237/181 120/238/179 92/186/142
+f 131/239/191 132/240/192 102/206/162 101/205/161
+f 129/236/190 130/235/189 132/240/192 131/239/191
+f 121/228/182 123/230/184 148/241/193 147/242/194
+f 118/243/177 116/244/175 84/197/153
+f 126/245/185 124/246/183 96/193/149
+f 130/247/189 128/248/187 97/204/160
+f 102/249/162 132/250/192 81/189/145
+f 106/251/165 104/252/163 91/202/158
+f 110/253/169 108/254/167 82/191/147
+f 114/255/173 112/256/171 88/203/159
+f 87/196/152 114/255/173 88/203/159
+f 82/191/147 108/254/167 83/192/148
+f 91/202/158 90/188/144 106/251/165
+f 84/197/153 116/244/175 85/198/154
+f 92/186/142 93/185/141 122/237/181
+f 96/193/149 124/246/183 95/194/150
+f 98/200/156 130/247/189 97/204/160
+f 81/189/145 132/250/192 100/190/146
+f 132/250/192 130/247/189 99/199/155
+f 99/199/155 130/247/189 98/200/156
+f 100/190/146 132/250/192 99/199/155
+f 124/246/183 122/237/181 94/201/157
+f 94/201/157 95/194/150 124/246/183
+f 94/201/157 122/237/181 93/185/141
+f 86/195/151 114/255/173 87/196/152
+f 85/198/154 116/244/175 86/195/151
+f 116/244/175 114/255/173 86/195/151
+f 108/254/167 106/251/165 89/187/143
+f 89/187/143 106/251/165 90/188/144
+f 89/187/143 83/192/148 108/254/167
+f 102/249/162 81/189/145 134/257/195
+f 102/249/162 134/257/195 104/252/163
+f 134/257/195 91/202/158 104/252/163
+f 96/193/149 136/258/196 126/245/185
+f 126/245/185 136/258/196 128/248/187
+f 97/204/160 128/248/187 136/258/196
+f 84/197/153 135/259/197 118/243/177
+f 118/243/177 135/259/197 120/238/179
+f 120/238/179 135/259/197 92/186/142
+f 82/191/147 133/260/198 110/253/169
+f 110/253/169 133/260/198 112/256/171
+f 88/203/159 112/256/171 133/260/198
+f 142/261/199 143/262/200 159/263/201 158/264/202
+f 105/210/166 107/212/168 140/265/203 139/266/204
+f 127/234/188 129/236/190 151/267/205 150/268/206
+f 111/218/172 113/220/174 143/262/200 142/261/199
+f 117/224/178 119/226/180 146/269/207 145/270/208
+f 123/230/184 125/232/186 149/271/209 148/241/193
+f 107/213/168 109/216/170 141/272/210 140/273/203
+f 129/236/190 131/239/191 152/274/211 151/267/205
+f 113/220/174 115/222/176 144/275/212 143/262/200
+f 119/226/180 121/228/182 147/242/194 146/269/207
+f 103/208/164 105/210/166 139/266/204 138/276/213
+f 125/232/186 127/234/188 150/268/206 149/271/209
+f 109/216/170 111/218/172 142/261/199 141/272/210
+f 131/239/191 101/205/161 137/277/214 152/274/211
+f 101/205/161 103/208/164 138/276/213 137/277/214
+f 115/222/176 117/224/178 145/270/208 144/275/212
+f 159/263/201 160/278/215 176/279/216 175/280/217
+f 140/273/203 141/272/210 157/281/218 156/282/219
+f 151/267/205 152/274/211 168/283/220 167/284/221
+f 138/276/213 139/266/204 155/285/222 154/286/223
+f 149/271/209 150/268/206 166/287/224 165/288/225
+f 147/242/194 148/241/193 164/289/226 163/290/227
+f 145/270/208 146/269/207 162/291/228 161/292/229
+f 143/262/200 144/275/212 160/278/215 159/263/201
+f 141/272/210 142/261/199 158/264/202 157/281/218
+f 152/274/211 137/277/214 153/293/230 168/283/220
+f 139/266/204 140/265/203 156/294/219 155/285/222
+f 150/268/206 151/267/205 167/284/221 166/287/224
+f 137/277/214 138/276/213 154/286/223 153/293/230
+f 148/241/193 149/271/209 165/288/225 164/289/226
+f 146/269/207 147/242/194 163/290/227 162/291/228
+f 144/275/212 145/270/208 161/292/229 160/278/215
+f 157/281/218 158/264/202 174/295/231 173/296/232
+f 168/283/220 153/293/230 169/297/233 184/298/234
+f 155/285/222 156/294/219 172/299/235 171/300/236
+f 166/287/224 167/284/221 183/301/237 182/302/238
+f 153/293/230 154/286/223 170/303/239 169/297/233
+f 164/289/226 165/288/225 181/304/240 180/305/241
+f 162/291/228 163/290/227 179/306/242 178/307/243
+f 160/278/215 161/292/229 177/308/244 176/279/216
+f 158/264/202 159/263/201 175/280/217 174/295/231
+f 156/282/219 157/281/218 173/296/232 172/309/235
+f 167/284/221 168/283/220 184/298/234 183/301/237
+f 154/286/223 155/285/222 171/300/236 170/303/239
+f 165/288/225 166/287/224 182/302/238 181/304/240
+f 163/290/227 164/289/226 180/305/241 179/306/242
+f 161/292/229 162/291/228 178/307/243 177/308/244
+f 184/310/234 169/311/233 226/312/245
+f 183/313/237 184/310/234 226/312/245
+f 182/314/238 183/313/237 226/312/245
+f 181/315/240 182/314/238 226/312/245
+f 180/316/241 181/315/240 226/312/245
+f 179/317/242 180/316/241 226/312/245
+f 178/318/243 179/317/242 226/312/245
+f 177/319/244 178/318/243 226/312/245
+f 176/320/216 177/319/244 226/312/245
+f 175/321/217 176/320/216 226/312/245
+f 174/322/231 175/321/217 226/312/245
+f 173/323/232 174/322/231 226/312/245
+f 172/324/235 173/323/232 226/312/245
+f 171/325/236 172/324/235 226/312/245
+f 170/326/239 171/325/236 226/312/245
+f 169/311/233 170/326/239 226/312/245
+f 61/174/130 2/173/129 22/169/125 71/172/128
+f 76/178/134 31/177/133 33/175/131 77/176/132
+f 64/184/140 8/183/139 23/181/137 72/182/138
+f 62/180/136 4/179/135 16/145/101 68/148/104
+f 82/191/147 62/180/136 68/148/104 88/203/159 133/260/198
+f 96/193/149 76/178/134 77/176/132 97/204/160 136/258/196
+f 81/189/145 61/174/130 71/172/128 91/202/158 134/257/195
+f 84/197/153 64/184/140 72/182/138 92/186/142 135/259/197
+g Cylinder_Cylinder_water
+f 217/327/246 216/328/246 225/329/246
+f 210/330/246 211/331/246 225/329/246
+f 209/332/246 210/330/246 225/329/246
+f 208/333/246 209/332/246 225/329/246
+f 216/328/246 208/333/246 225/329/246
+f 211/331/246 212/334/246 225/329/246
+f 212/334/246 206/335/246 225/329/246
+f 206/335/246 207/336/246 225/329/246
+f 207/336/246 213/337/246 225/329/246
+f 213/337/246 214/338/246 225/329/246
+f 214/338/246 215/339/246 225/329/246
+f 215/339/246 205/340/246 225/329/246
+f 205/340/246 224/341/246 225/329/246
+f 224/341/246 223/342/246 225/329/246
+f 223/342/246 222/343/246 225/329/246
+f 222/343/246 221/344/246 225/329/246
+f 221/344/246 220/345/246 225/329/246
+f 220/345/246 219/346/246 225/329/246
+f 219/346/246 218/347/246 225/329/246
+f 218/347/246 217/327/246 225/329/246
diff --git a/homedecor_modpack/homedecor/models/homedecor_bed_extended.obj b/homedecor_modpack/homedecor/models/homedecor_bed_extended.obj
new file mode 100644
index 0000000..4616b46
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bed_extended.obj
@@ -0,0 +1,347 @@
+# Blender v2.73 (sub 0) OBJ File: 'bed-extended.blend'
+# www.blender.org
+o Cube
+v -0.500000 -0.375000 1.437500
+v -0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 1.437500
+v -0.500000 -0.125000 1.437500
+v -0.500000 -0.125000 -0.437500
+v 0.500000 -0.125000 -0.437500
+v 0.500000 -0.125000 1.437500
+v -0.437500 -0.125000 1.437500
+v -0.437500 -0.125000 -0.437500
+v 0.437500 -0.125000 -0.437500
+v 0.437500 -0.125000 1.437500
+v 0.375000 -0.500000 -0.437500
+v 0.375000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.437500
+v 0.375000 0.500000 -0.437500
+v 0.375000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 -0.437500
+v -0.500000 -0.500000 -0.437500
+v -0.500000 -0.500000 -0.500000
+v -0.375000 -0.500000 -0.500000
+v -0.375000 -0.500000 -0.437500
+v -0.500000 0.500000 -0.437500
+v -0.500000 0.500000 -0.500000
+v -0.375000 0.500000 -0.500000
+v -0.375000 0.500000 -0.437500
+v -0.375000 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.500000
+v 0.375000 -0.375000 -0.500000
+v 0.375000 -0.375000 -0.437500
+v -0.375000 -0.125000 -0.437500
+v -0.375000 -0.125000 -0.500000
+v 0.375000 -0.125000 -0.500000
+v 0.375000 -0.125000 -0.437500
+v -0.375000 0.000000 -0.437500
+v -0.375000 0.000000 -0.500000
+v 0.375000 0.000000 -0.500000
+v 0.375000 0.000000 -0.437500
+v -0.375000 0.125000 -0.437500
+v -0.375000 0.125000 -0.500000
+v 0.375000 0.125000 -0.500000
+v 0.375000 0.125000 -0.437500
+v 0.375000 -0.500000 1.437500
+v 0.375000 -0.500000 1.500000
+v 0.500000 -0.500000 1.500000
+v 0.500000 -0.500000 1.437500
+v 0.375000 0.500000 1.437500
+v 0.375000 0.500000 1.500000
+v 0.500000 0.500000 1.500000
+v 0.500000 0.500000 1.437500
+v -0.500000 -0.500000 1.437500
+v -0.500000 -0.500000 1.500000
+v -0.375000 -0.500000 1.500000
+v -0.375000 -0.500000 1.437500
+v -0.500000 0.500000 1.437500
+v -0.500000 0.500000 1.500000
+v -0.375000 0.500000 1.500000
+v -0.375000 0.500000 1.437500
+v -0.375000 -0.375000 1.437500
+v -0.375000 -0.375000 1.500000
+v 0.375000 -0.375000 1.500000
+v 0.375000 -0.375000 1.437500
+v -0.375000 -0.125000 1.437500
+v -0.375000 -0.125000 1.500000
+v 0.375000 -0.125000 1.500000
+v 0.375000 -0.125000 1.437500
+v -0.375000 -0.062500 1.437500
+v -0.375000 -0.062500 1.500000
+v 0.375000 -0.062500 1.500000
+v 0.375000 -0.062500 1.437500
+v -0.375000 0.187500 1.437500
+v -0.375000 0.187500 1.500000
+v 0.375000 0.187500 1.500000
+v 0.375000 0.187500 1.437500
+v -0.375000 0.250000 1.437500
+v -0.375000 0.250000 1.500000
+v 0.375000 0.250000 1.500000
+v 0.375000 0.250000 1.437500
+v -0.375000 0.437500 1.437500
+v -0.375000 0.437500 1.500000
+v 0.375000 0.437500 1.500000
+v 0.375000 0.437500 1.437500
+v -0.500000 -0.125000 0.500000
+v -0.500000 -0.375000 0.500000
+v 0.500000 -0.125000 0.500000
+v 0.500000 -0.375000 0.500000
+v -0.437500 -0.125000 0.500000
+v 0.437500 -0.125000 0.500000
+v -0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 1.437500
+v -0.437500 -0.078125 1.437500
+v -0.437500 -0.078125 -0.437500
+v 0.437500 -0.078125 -0.437500
+v 0.437500 -0.078125 1.437500
+v -0.406250 -0.046875 1.437500
+v -0.406250 -0.046875 -0.437500
+v 0.406250 -0.046875 -0.437500
+v 0.406250 -0.046875 1.437500
+v -0.312500 -0.046875 1.437500
+v -0.312500 -0.046875 1.062500
+v 0.312500 -0.046875 1.062500
+v 0.312500 -0.046875 1.437500
+v -0.406250 -0.046875 0.500000
+v -0.437500 -0.078125 0.500000
+v 0.406250 -0.046875 0.500000
+v 0.437500 -0.078125 0.500000
+v -0.312500 -0.031250 1.437500
+v -0.312500 -0.031250 1.062500
+v 0.312500 -0.031250 1.062500
+v 0.312500 -0.031250 1.437500
+v -0.250000 0.031250 1.375000
+v -0.250000 0.031250 1.125000
+v 0.250000 0.031250 1.125000
+v 0.250000 0.031250 1.375000
+v 0.437500 -0.375000 1.437500
+v 0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 1.375000
+v 0.437500 -0.375000 1.375000
+v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+v -0.437500 -0.312500 1.375000
+v 0.437500 -0.312500 1.375000
+v -0.437500 -0.312500 -0.375000
+v 0.437500 -0.312500 -0.375000
+v -0.437500 -0.125000 1.000000
+v 0.437500 -0.125000 1.000000
+v -0.437500 -0.078125 1.000000
+v 0.406250 -0.046875 1.000000
+v -0.406250 -0.046875 1.000000
+v 0.437500 -0.078125 1.000000
+v -0.437500 -0.312500 0.500000
+v 0.437500 -0.312500 0.500000
+v -0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 -0.437500
+v -0.500000 -0.375000 0.500000
+v 0.500000 -0.375000 0.500000
+v -0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+v -0.375000 0.250000 -0.437500
+v -0.375000 0.250000 -0.500000
+v 0.375000 0.250000 -0.500000
+v 0.375000 0.250000 -0.437500
+v -0.375000 0.375000 -0.437500
+v -0.375000 0.375000 -0.500000
+v 0.375000 0.375000 -0.500000
+v 0.375000 0.375000 -0.437500
+vt 1.000000 0.250000
+vt 0.062500 0.250000
+vt 0.062500 -0.000000
+vt 1.000000 -0.000000
+vt 0.937500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.937500 0.937500
+vt 0.437500 1.000000
+vt -0.000000 0.000000
+vt 0.062500 0.937500
+vt 0.937500 0.250000
+vt -0.000000 0.250000
+vt 0.937500 0.000000
+vt 1.000000 0.937500
+vt 0.062500 0.875000
+vt 0.937500 0.875000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.437500 0.937500
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 1.000000 1.000000
+vt 0.062500 1.000000
+vt 0.125000 1.000000
+vt 0.125000 0.000000
+vt 0.875000 0.062500
+vt 0.875000 0.937500
+vt 0.125000 0.062500
+vt 0.125000 0.937500
+vt 0.875000 0.625000
+vt 0.125000 0.625000
+vt 0.125000 0.500000
+vt 0.875000 0.500000
+vt 0.875000 0.375000
+vt 0.125000 0.375000
+vt 0.125000 0.125000
+vt 0.875000 0.125000
+vt 0.125000 0.687500
+vt 0.125000 0.437500
+vt 0.875000 0.437500
+vt 0.875000 0.687500
+vt 0.125000 0.750000
+vt 0.875000 0.750000
+vt 0.875000 0.875000
+vt 0.125000 0.875000
+vt 0.000000 0.437500
+vt 0.062500 0.437500
+vt 0.937500 0.437500
+vt 0.906250 0.093750
+vt 0.093750 0.093750
+vt 0.906250 0.000000
+vt 0.906250 0.437500
+vt 0.093750 0.437500
+vt 0.093750 0.000000
+vt 1.000000 0.437500
+vt -0.000000 0.562500
+vt 0.062500 0.562500
+vt 0.093750 1.000000
+vt 0.093750 0.062500
+vt 0.906250 0.062500
+vt 0.906250 1.000000
+vt 0.093750 0.562500
+vt 0.906250 0.562500
+vt 0.875000 0.562500
+vt 0.937500 0.562500
+vt 0.125000 0.562500
+vt 1.000000 0.562500
+vt 0.250000 0.125000
+vt 0.250000 0.375000
+vt 0.187500 0.437500
+vt 0.187500 0.062500
+vt 0.750000 0.375000
+vt 0.812500 0.437500
+vt 0.750000 0.125000
+vt 0.812500 0.062500
+vt 0.812500 0.500000
+vt 0.187500 0.500000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.707100 0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 0.707100 0.707100
+g Cube_Cube_frame-metal
+s off
+f 85/1/1 6/2/1 2/3/1 86/4/1
+f 87/1/2 8/2/2 4/3/2 88/4/2
+f 11/5/3 90/6/3 87/7/3 7/8/3
+f 87/8/3 90/5/3 128/9/3 12/6/3 8/7/3
+f 1/7/4 86/10/4 91/3/4 92/11/4
+f 7/12/2 87/13/2 88/10/2 3/14/2
+f 5/12/1 85/13/1 86/10/1 1/14/1
+f 88/4/4 4/15/4 117/8/4 118/14/4
+f 119/16/3 92/11/3 117/8/3 120/17/3
+f 121/3/5 125/18/5 126/19/5 122/14/5
+f 120/14/6 124/19/6 123/18/6 119/3/6
+f 85/6/3 89/7/3 10/8/3 6/5/3
+f 89/8/3 85/5/3 5/6/3 9/7/3 127/20/3
+f 133/19/1 91/14/1 119/10/1 123/21/1
+f 118/14/2 134/19/2 124/21/2 120/10/2
+f 122/4/2 126/22/2 134/18/2 118/3/2
+f 125/22/1 121/4/1 91/3/1 133/18/1
+f 137/7/4 135/10/4 140/3/4 139/11/4
+f 136/4/4 138/15/4 142/8/4 141/14/4
+f 143/18/4 140/3/4 141/14/4 144/19/4
+g Cube_Cube_head-foot-wood
+f 50/23/6 46/24/6 47/4/6 51/25/6
+f 17/26/1 18/6/1 14/10/1 13/3/1
+f 18/27/5 19/6/5 15/10/5 14/28/5
+f 19/25/2 20/5/2 16/14/2 15/4/2
+f 20/25/6 17/23/6 13/24/6 16/4/6
+f 13/29/4 14/24/4 15/4/4 16/22/4
+f 20/15/3 19/25/3 18/23/3 17/30/3
+f 25/26/1 26/6/1 22/10/1 21/3/1
+f 26/25/5 27/23/5 23/24/5 22/4/5
+f 27/25/2 28/5/2 24/14/2 23/4/2
+f 28/27/6 25/6/6 21/10/6 24/28/6
+f 21/21/4 22/10/4 23/28/4 24/31/4
+f 28/32/3 27/27/3 26/6/3 25/7/3
+f 44/33/6 41/34/6 37/35/6 40/36/6
+f 34/37/5 35/38/5 31/39/5 30/40/5
+f 42/33/5 43/34/5 39/35/5 38/36/5
+f 49/5/1 45/14/1 46/4/1 50/25/1
+f 29/31/4 30/28/4 31/24/4 32/29/4
+f 36/30/3 35/23/3 34/27/3 33/32/3
+f 37/31/4 38/28/4 39/24/4 40/29/4
+f 44/30/3 43/23/3 42/27/3 41/32/3
+f 51/6/2 47/10/2 48/3/2 52/26/2
+f 52/6/5 48/10/5 45/28/5 49/27/5
+f 45/30/4 48/15/4 47/25/4 46/23/4
+f 52/22/3 49/29/3 50/24/3 51/4/3
+f 57/5/1 53/14/1 54/4/1 58/25/1
+f 58/6/6 54/10/6 55/28/6 59/27/6
+f 59/6/2 55/10/2 56/3/2 60/26/2
+f 60/23/5 56/24/5 53/4/5 57/25/5
+f 53/7/4 56/32/4 55/27/4 54/6/4
+f 60/31/3 57/21/3 58/10/3 59/28/3
+f 76/41/5 72/42/5 69/43/5 73/44/5
+f 66/38/6 62/39/6 63/40/6 67/37/6
+f 74/41/6 70/42/6 71/43/6 75/44/6
+f 61/32/4 64/30/4 63/23/4 62/27/4
+f 68/29/3 65/31/3 66/28/3 67/24/3
+f 69/32/4 72/30/4 71/23/4 70/27/4
+f 76/29/3 73/31/3 74/28/3 75/24/3
+f 84/32/5 80/45/5 77/46/5 81/30/5
+f 82/32/6 78/45/6 79/46/6 83/30/6
+f 77/32/4 80/30/4 79/23/4 78/27/4
+f 84/29/3 81/31/3 82/28/3 83/24/3
+f 152/47/6 149/48/6 145/45/6 148/46/6
+f 150/47/5 151/48/5 147/45/5 146/46/5
+f 145/31/4 146/28/4 147/24/4 148/29/4
+f 152/30/3 151/23/3 150/27/3 149/32/3
+g Cube_Cube_white-wool
+f 127/49/1 9/10/1 93/3/1 129/50/1
+f 9/3/6 12/14/6 96/19/6 93/18/6
+f 130/43/7 100/24/7 96/14/7 132/51/7
+f 100/52/6 97/53/6 93/18/6 96/19/6
+f 97/28/8 131/42/8 129/50/8 93/3/8
+f 100/54/3 130/55/3 131/56/3 97/57/3
+f 12/4/2 128/58/2 132/51/2 96/14/2
+g Cube_Cube_colored-wool
+f 11/3/5 10/14/5 94/19/5 95/18/5
+f 90/6/2 11/21/2 95/18/2 108/26/2
+f 10/22/1 89/25/1 106/5/1 94/19/1
+f 128/59/2 90/21/2 108/18/2 132/60/2
+f 105/23/8 98/29/8 94/19/8 106/5/8
+f 107/61/3 99/62/3 98/63/3 105/64/3
+f 130/65/3 107/62/3 105/63/3 131/66/3
+f 99/31/7 107/27/7 108/26/7 95/18/7
+f 131/67/8 105/29/8 106/19/8 129/68/8
+f 107/31/7 130/69/7 132/60/7 108/18/7
+f 89/22/1 127/70/1 129/68/1 106/19/1
+f 94/19/5 98/52/5 99/53/5 95/18/5
+g Cube_Cube_bottom-stuff
+f 134/5/3 126/19/3 125/18/3 133/26/3
+f 124/8/3 134/14/3 133/3/3 123/11/3
+g Cube_Cube_pillow
+f 113/71/8 114/72/8 110/73/8 109/74/8
+f 114/72/9 115/75/9 111/76/9 110/73/9
+f 115/75/7 116/77/7 112/78/7 111/76/7
+f 116/77/3 115/75/3 114/72/3 113/71/3
+f 109/74/10 112/78/10 116/77/10 113/71/10
+f 104/74/2 103/73/2 111/42/2 112/31/2
+f 103/73/5 102/76/5 110/79/5 111/80/5
+f 102/76/1 101/78/1 109/29/1 110/43/1
diff --git a/homedecor_modpack/homedecor/models/homedecor_bed_kingsize.obj b/homedecor_modpack/homedecor/models/homedecor_bed_kingsize.obj
new file mode 100644
index 0000000..9b5dad1
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bed_kingsize.obj
@@ -0,0 +1,528 @@
+# Blender v2.73 (sub 0) OBJ File: 'bed-kingsize.blend'
+# www.blender.org
+o Cube
+v -0.500000 -0.375000 1.437500
+v 0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 1.437500
+v 0.500000 -0.125000 -0.437500
+v 0.500000 -0.125000 1.437500
+v 0.437500 -0.125000 -0.437500
+v 0.437500 -0.125000 1.437500
+v 0.375000 -0.500000 -0.437500
+v 0.375000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.437500
+v 0.375000 0.187500 -0.437500
+v 0.375000 0.187500 -0.500000
+v 0.500000 0.187500 -0.500000
+v 0.500000 0.187500 -0.437500
+v -0.500000 -0.375000 -0.437500
+v -0.500000 -0.375000 -0.500000
+v 0.375000 -0.375000 -0.500000
+v 0.375000 -0.375000 -0.437500
+v -0.500000 -0.125000 -0.437500
+v -0.500000 -0.125000 -0.500000
+v 0.375000 -0.125000 -0.500000
+v 0.375000 -0.125000 -0.437500
+v -0.500000 0.000000 -0.437500
+v -0.500000 0.000000 -0.500000
+v 0.375000 0.000000 -0.500000
+v 0.375000 0.000000 -0.437500
+v -0.500000 0.125000 -0.437500
+v -0.500000 0.125000 -0.500000
+v 0.375000 0.125000 -0.500000
+v 0.375000 0.125000 -0.437500
+v 0.375000 -0.500000 1.437500
+v 0.375000 -0.500000 1.500000
+v 0.500000 -0.500000 1.500000
+v 0.500000 -0.500000 1.437500
+v 0.375000 0.500000 1.437500
+v 0.375000 0.500000 1.500000
+v 0.500000 0.500000 1.500000
+v 0.500000 0.500000 1.437500
+v -0.500000 -0.375000 1.437500
+v -0.500000 -0.375000 1.500000
+v 0.375000 -0.375000 1.500000
+v 0.375000 -0.375000 1.437500
+v -0.500000 -0.125000 1.437500
+v -0.500000 -0.125000 1.500000
+v 0.375000 -0.125000 1.500000
+v 0.375000 -0.125000 1.437500
+v -0.500000 -0.062500 1.437500
+v -0.500000 -0.062500 1.500000
+v 0.375000 -0.062500 1.500000
+v 0.375000 -0.062500 1.437500
+v -0.500000 0.187500 1.437500
+v -0.500000 0.187500 1.500000
+v 0.375000 0.187500 1.500000
+v 0.375000 0.187500 1.437500
+v -0.500000 0.250000 1.437500
+v -0.500000 0.250000 1.500000
+v 0.375000 0.250000 1.500000
+v 0.375000 0.250000 1.437500
+v -0.500000 0.437500 1.437500
+v -0.500000 0.437500 1.500000
+v 0.375000 0.437500 1.500000
+v 0.375000 0.437500 1.437500
+v -0.500000 -0.375000 0.500000
+v 0.500000 -0.125000 0.500000
+v 0.500000 -0.375000 0.500000
+v 0.437500 -0.125000 0.500000
+v -0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 1.437500
+v 0.437500 -0.078125 -0.437500
+v 0.437500 -0.078125 1.437500
+v -0.500000 -0.046875 1.437500
+v -0.500000 -0.046875 -0.437500
+v 0.406250 -0.046875 -0.437500
+v 0.406250 -0.046875 1.437500
+v -0.312500 -0.046875 1.437500
+v -0.312500 -0.046875 1.062500
+v 0.312500 -0.046875 1.062500
+v 0.312500 -0.046875 1.437500
+v -0.500000 -0.046875 0.500000
+v 0.406250 -0.046875 0.500000
+v 0.437500 -0.078125 0.500000
+v -0.312500 -0.031250 1.437500
+v -0.312500 -0.031250 1.062500
+v 0.312500 -0.031250 1.062500
+v 0.312500 -0.031250 1.437500
+v -0.250000 0.031250 1.375000
+v -0.250000 0.031250 1.125000
+v 0.250000 0.031250 1.125000
+v 0.250000 0.031250 1.375000
+v 0.437500 -0.375000 1.437500
+v 0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 1.375000
+v 0.437500 -0.375000 1.375000
+v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+v -0.437500 -0.312500 1.375000
+v 0.437500 -0.312500 1.375000
+v -0.437500 -0.312500 -0.375000
+v 0.437500 -0.312500 -0.375000
+v 0.437500 -0.125000 1.000000
+v 0.406250 -0.046875 1.000000
+v -0.500000 -0.046875 1.000000
+v 0.437500 -0.078125 1.000000
+v -0.437500 -0.312500 0.500000
+v 0.437500 -0.312500 0.500000
+v -0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 -0.437500
+v -0.500000 -0.375000 0.500000
+v 0.500000 -0.375000 0.500000
+v -0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+v -1.500000 -0.375000 1.437500
+v -1.500000 -0.375000 -0.437500
+v -0.500000 -0.375000 1.437500
+v -1.500000 -0.125000 1.437500
+v -1.500000 -0.125000 -0.437500
+v -1.437500 -0.125000 1.437500
+v -1.437500 -0.125000 -0.437500
+v -1.500000 -0.500000 -0.437500
+v -1.500000 -0.500000 -0.500000
+v -1.375000 -0.500000 -0.500000
+v -1.375000 -0.500000 -0.437500
+v -1.500000 0.187500 -0.437500
+v -1.500000 0.187500 -0.500000
+v -1.375000 0.187500 -0.500000
+v -1.375000 0.187500 -0.437500
+v -1.375000 -0.375000 -0.437500
+v -1.375000 -0.375000 -0.500000
+v -0.500000 -0.375000 -0.500000
+v -0.500000 -0.375000 -0.437500
+v -1.375000 -0.125000 -0.437500
+v -1.375000 -0.125000 -0.500000
+v -0.500000 -0.125000 -0.500000
+v -0.500000 -0.125000 -0.437500
+v -1.375000 0.000000 -0.437500
+v -1.375000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 0.000000 -0.437500
+v -1.375000 0.125000 -0.437500
+v -1.375000 0.125000 -0.500000
+v -0.500000 0.125000 -0.500000
+v -0.500000 0.125000 -0.437500
+v -1.500000 -0.500000 1.437500
+v -1.500000 -0.500000 1.500000
+v -1.375000 -0.500000 1.500000
+v -1.375000 -0.500000 1.437500
+v -1.500000 0.500000 1.437500
+v -1.500000 0.500000 1.500000
+v -1.375000 0.500000 1.500000
+v -1.375000 0.500000 1.437500
+v -1.375000 -0.375000 1.437500
+v -1.375000 -0.375000 1.500000
+v -0.500000 -0.375000 1.500000
+v -0.500000 -0.375000 1.437500
+v -1.375000 -0.125000 1.437500
+v -1.375000 -0.125000 1.500000
+v -0.500000 -0.125000 1.500000
+v -0.500000 -0.125000 1.437500
+v -1.375000 -0.062500 1.437500
+v -1.375000 -0.062500 1.500000
+v -0.500000 -0.062500 1.500000
+v -0.500000 -0.062500 1.437500
+v -1.375000 0.187500 1.437500
+v -1.375000 0.187500 1.500000
+v -0.500000 0.187500 1.500000
+v -0.500000 0.187500 1.437500
+v -1.375000 0.250000 1.437500
+v -1.375000 0.250000 1.500000
+v -0.500000 0.250000 1.500000
+v -0.500000 0.250000 1.437500
+v -1.375000 0.437500 1.437500
+v -1.375000 0.437500 1.500000
+v -0.500000 0.437500 1.500000
+v -0.500000 0.437500 1.437500
+v -1.500000 -0.125000 0.500000
+v -1.500000 -0.375000 0.500000
+v -0.500000 -0.375000 0.500000
+v -1.437500 -0.125000 0.500000
+v -1.437500 -0.375000 0.500000
+v -1.437500 -0.375000 1.437500
+v -1.437500 -0.078125 1.437500
+v -1.437500 -0.078125 -0.437500
+v -1.406250 -0.046875 1.437500
+v -1.406250 -0.046875 -0.437500
+v -0.500000 -0.046875 -0.437500
+v -0.500000 -0.046875 1.437500
+v -1.312500 -0.046875 1.437500
+v -1.312500 -0.046875 1.062500
+v -0.687500 -0.046875 1.062500
+v -0.687500 -0.046875 1.437500
+v -1.406250 -0.046875 0.500000
+v -1.437500 -0.078125 0.500000
+v -0.500000 -0.046875 0.500000
+v -1.312500 -0.031250 1.437500
+v -1.312500 -0.031250 1.062500
+v -0.687500 -0.031250 1.062500
+v -0.687500 -0.031250 1.437500
+v -1.250000 0.031250 1.375000
+v -1.250000 0.031250 1.125000
+v -0.750000 0.031250 1.125000
+v -0.750000 0.031250 1.375000
+v -0.562500 -0.375000 1.437500
+v -0.562500 -0.375000 0.500000
+v -1.437500 -0.375000 1.375000
+v -0.562500 -0.375000 1.375000
+v -1.437500 -0.375000 -0.375000
+v -0.562500 -0.375000 -0.375000
+v -1.437500 -0.312500 1.375000
+v -0.562500 -0.312500 1.375000
+v -1.437500 -0.312500 -0.375000
+v -0.562500 -0.312500 -0.375000
+v -1.437500 -0.125000 1.000000
+v -1.437500 -0.078125 1.000000
+v -0.500000 -0.046875 1.000000
+v -1.406250 -0.046875 1.000000
+v -1.437500 -0.312500 0.500000
+v -0.562500 -0.312500 0.500000
+v -1.500000 -0.375000 -0.437500
+v -0.500000 -0.375000 -0.437500
+v -1.500000 -0.375000 0.500000
+v -0.500000 -0.375000 0.500000
+v -1.437500 -0.375000 0.500000
+v -1.437500 -0.375000 -0.437500
+v -0.562500 -0.375000 -0.437500
+v -0.562500 -0.375000 0.500000
+v -1.437500 -0.375000 -0.375000
+v -0.562500 -0.375000 -0.375000
+v -0.500000 -0.125000 -0.437500
+v -0.500000 -0.046875 1.437500
+v -0.500000 -0.125000 1.437500
+v -0.500000 -0.078125 1.437500
+v -0.500000 -0.046875 -0.437500
+v -0.500000 -0.078125 -0.437500
+v -0.562500 -0.500000 -0.375000
+v -0.562500 -0.500000 -0.437500
+v -0.437500 -0.500000 -0.437500
+v -0.437500 -0.500000 -0.375000
+v -0.562500 -0.375000 -0.375000
+v -0.562500 -0.375000 -0.437500
+v -0.437500 -0.375000 -0.437500
+v -0.437500 -0.375000 -0.375000
+v -0.562500 -0.500000 1.437500
+v -0.562500 -0.500000 1.375000
+v -0.437500 -0.500000 1.375000
+v -0.437500 -0.500000 1.437500
+v -0.562500 -0.375000 1.437500
+v -0.562500 -0.375000 1.375000
+v -0.437500 -0.375000 1.375000
+v -0.437500 -0.375000 1.437500
+vt 1.000000 0.250000
+vt 0.062500 0.250000
+vt 0.062500 -0.000000
+vt 1.000000 -0.000000
+vt 0.937500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.937500 0.937500
+vt 0.437500 1.000000
+vt -0.000000 0.000000
+vt 0.062500 0.937500
+vt 0.937500 0.250000
+vt -0.000000 0.250000
+vt 0.937500 0.000000
+vt 1.000000 0.937500
+vt 0.062500 0.875000
+vt 0.937500 0.875000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 0.437500 0.937500
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 1.000000 1.000000
+vt 0.062500 0.687500
+vt -0.000000 0.687500
+vt 0.125000 0.687500
+vt 0.125000 -0.000000
+vt 1.000000 0.687500
+vt 0.937500 0.687500
+vt 0.875000 0.687500
+vt 0.875000 0.062500
+vt 0.875000 0.937500
+vt 0.875000 0.625000
+vt -0.000000 0.625000
+vt -0.000000 0.500000
+vt 0.875000 0.500000
+vt 1.000000 0.375000
+vt 0.125000 0.375000
+vt 0.125000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.625000
+vt 0.125000 0.625000
+vt 0.125000 0.500000
+vt 1.000000 0.500000
+vt 0.125000 0.062500
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt 0.062500 1.000000
+vt 0.125000 0.437500
+vt 1.000000 0.437500
+vt -0.000000 0.375000
+vt -0.000000 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.375000
+vt -0.000000 0.437500
+vt 0.875000 0.437500
+vt 0.125000 0.750000
+vt 1.000000 0.750000
+vt -0.000000 0.750000
+vt 0.875000 0.750000
+vt 0.125000 0.875000
+vt 0.000000 0.875000
+vt 0.250000 0.750000
+vt 0.250000 0.875000
+vt 0.187500 0.875000
+vt 0.187500 1.000000
+vt 0.942316 0.062500
+vt 0.942316 0.084487
+vt 0.000000 0.084487
+vt 0.937500 0.437500
+vt 0.905938 0.000000
+vt 0.905938 0.437500
+vt 0.062500 0.437500
+vt 0.000000 0.099146
+vt 0.910906 0.099146
+vt 0.094062 0.437500
+vt 0.094062 0.000000
+vt 0.089095 0.099146
+vt 0.057684 0.084487
+vt 1.000000 0.084487
+vt 1.000000 0.099146
+vt 0.057684 0.062500
+vt -0.000000 0.562500
+vt 0.062500 0.562500
+vt 0.094062 1.000000
+vt 0.094062 0.062500
+vt 0.094062 0.562500
+vt 1.000000 0.562500
+vt 0.125000 0.562500
+vt 0.905938 0.062500
+vt 0.905938 1.000000
+vt 0.905938 0.562500
+vt 0.875000 0.562500
+vt 0.937500 0.562500
+vt 0.250000 0.125000
+vt 0.250000 0.375000
+vt 0.187500 0.437500
+vt 0.187500 0.062500
+vt 0.750000 0.375000
+vt 0.812500 0.437500
+vt 0.750000 0.125000
+vt 0.812500 0.062500
+vt 0.812500 0.500000
+vt 0.187500 0.500000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.707100 0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 0.707100 0.707100
+g Cube_Cube_frame-metal
+s off
+f 65/1/1 5/2/1 3/3/1 66/4/1
+f 6/5/2 67/6/2 65/7/2 4/8/2
+f 65/8/2 67/5/2 101/9/2 7/6/2 5/7/2
+f 1/7/3 64/10/3 68/3/3 69/11/3
+f 4/12/1 65/13/1 66/10/1 2/14/1
+f 66/4/3 3/15/3 91/8/3 92/14/3
+f 93/16/2 69/11/2 91/8/2 94/17/2
+f 95/3/4 99/18/4 100/19/4 96/14/4
+f 94/14/5 98/19/5 97/18/5 93/3/5
+f 105/19/6 68/14/6 93/10/6 97/20/6
+f 92/14/1 106/19/1 98/20/1 94/10/1
+f 96/4/1 100/21/1 106/18/1 92/3/1
+f 99/21/6 95/4/6 68/3/6 105/18/6
+f 109/7/3 107/10/3 112/3/3 111/11/3
+f 108/4/3 110/15/3 114/8/3 113/14/3
+f 115/18/3 112/3/3 113/14/3 116/19/3
+f 180/1/6 121/2/6 118/3/6 181/4/6
+f 117/7/3 181/10/3 184/3/3 185/11/3
+f 120/12/6 180/13/6 181/10/6 117/14/6
+f 182/4/3 119/15/3 207/8/3 208/14/3
+f 209/16/2 185/11/2 207/8/2 210/17/2
+f 211/3/4 215/18/4 216/19/4 212/14/4
+f 210/14/5 214/19/5 213/18/5 209/3/5
+f 180/6/2 183/7/2 123/8/2 121/5/2
+f 183/8/2 180/5/2 120/6/2 122/7/2 217/22/2
+f 221/19/6 184/14/6 209/10/6 213/20/6
+f 208/14/1 222/19/1 214/20/1 210/10/1
+f 212/4/1 216/21/1 222/18/1 208/3/1
+f 215/21/6 211/4/6 184/3/6 221/18/6
+f 225/7/3 223/10/3 228/3/3 227/11/3
+f 224/4/3 226/15/3 230/8/3 229/14/3
+f 231/18/3 228/3/3 229/14/3 232/19/3
+g Cube_Cube_head-foot-wood
+f 37/23/5 33/24/5 34/4/5 38/25/5
+f 12/26/6 13/27/6 9/10/6 8/3/6
+f 13/28/4 14/27/4 10/10/4 9/29/4
+f 14/30/1 15/31/1 11/14/1 10/4/1
+f 15/30/5 12/32/5 8/24/5 11/4/5
+f 8/33/3 9/24/3 10/4/3 11/21/3
+f 15/15/2 14/25/2 13/23/2 12/34/2
+f 31/35/5 28/36/5 24/37/5 27/38/5
+f 21/39/4 22/40/4 18/41/4 17/42/4
+f 29/43/4 30/44/4 26/45/4 25/46/4
+f 36/5/6 32/14/6 33/4/6 37/25/6
+f 16/47/3 17/29/3 18/4/3 19/21/3
+f 23/15/2 22/25/2 21/48/2 20/49/2
+f 24/47/3 25/29/3 26/4/3 27/21/3
+f 31/15/2 30/25/2 29/48/2 28/49/2
+f 38/6/1 34/10/1 35/3/1 39/50/1
+f 39/6/4 35/10/4 32/29/4 36/48/4
+f 32/34/3 35/15/3 34/25/3 33/23/3
+f 39/21/2 36/33/2 37/24/2 38/4/2
+f 55/28/4 51/51/4 48/52/4 52/30/4
+f 45/53/5 41/54/5 42/55/5 46/56/5
+f 53/27/5 49/57/5 50/58/5 54/32/5
+f 40/49/3 43/15/3 42/25/3 41/48/3
+f 47/21/2 44/47/2 45/29/2 46/4/2
+f 48/49/3 51/15/3 50/25/3 49/48/3
+f 55/21/2 52/47/2 53/29/2 54/4/2
+f 63/49/4 59/59/4 56/60/4 60/15/4
+f 61/7/5 57/61/5 58/62/5 62/34/5
+f 56/49/3 59/15/3 58/25/3 57/48/3
+f 63/21/2 60/47/2 61/29/2 62/4/2
+f 128/26/6 129/27/6 125/10/6 124/3/6
+f 129/30/4 130/32/4 126/24/4 125/4/4
+f 130/30/1 131/31/1 127/14/1 126/4/1
+f 131/28/5 128/27/5 124/10/5 127/29/5
+f 124/20/3 125/10/3 126/29/3 127/47/3
+f 131/49/2 130/48/2 129/6/2 128/7/2
+f 147/43/5 144/44/5 140/45/5 143/46/5
+f 137/56/4 138/53/4 134/54/4 133/55/4
+f 145/35/4 146/36/4 142/37/4 141/38/4
+f 132/20/3 133/10/3 134/24/3 135/33/3
+f 139/34/2 138/23/2 137/6/2 136/7/2
+f 140/20/3 141/10/3 142/24/3 143/33/3
+f 147/34/2 146/23/2 145/6/2 144/7/2
+f 152/5/6 148/14/6 149/4/6 153/25/6
+f 153/6/5 149/10/5 150/29/5 154/48/5
+f 154/6/1 150/10/1 151/3/1 155/50/1
+f 155/23/4 151/24/4 148/4/4 152/25/4
+f 148/7/3 151/49/3 150/48/3 149/6/3
+f 155/47/2 152/20/2 153/10/2 154/29/2
+f 171/27/4 167/57/4 164/58/4 168/32/4
+f 161/40/5 157/41/5 158/42/5 162/39/5
+f 169/28/5 165/51/5 166/52/5 170/30/5
+f 156/7/3 159/34/3 158/23/3 157/6/3
+f 163/33/2 160/20/2 161/10/2 162/24/2
+f 164/7/3 167/34/3 166/23/3 165/6/3
+f 171/33/2 168/20/2 169/10/2 170/24/2
+f 179/7/4 175/61/4 172/62/4 176/34/4
+f 177/49/5 173/59/5 174/60/5 178/15/5
+f 172/7/3 175/34/3 174/23/3 173/6/3
+f 179/33/2 176/20/2 177/10/2 178/24/2
+f 243/16/6 244/63/6 240/48/6 239/50/6
+f 244/63/4 245/64/4 241/61/4 240/59/4
+f 245/64/1 246/16/1 242/50/1 241/6/1
+f 246/59/5 243/65/5 239/66/5 242/63/5
+f 239/63/3 240/67/3 241/68/3 242/48/3
+f 251/16/6 252/63/6 248/48/6 247/50/6
+f 252/63/4 253/64/4 249/61/4 248/59/4
+f 253/64/1 254/16/1 250/50/1 249/6/1
+f 254/59/5 251/65/5 247/66/5 250/63/5
+f 247/63/3 248/67/3 249/68/3 250/48/3
+g Cube_Cube_white-wool
+f 235/20/5 7/69/5 71/70/5 236/71/5
+f 102/58/7 75/24/7 71/14/7 104/72/7
+f 75/73/2 102/74/2 103/57/2 72/10/2
+f 7/4/1 101/52/1 104/72/1 71/14/1
+f 217/57/6 122/10/6 186/3/6 218/75/6
+f 234/76/5 236/71/5 71/70/5 75/77/5
+f 188/29/8 220/51/8 218/75/8 186/3/8
+f 191/4/2 219/52/2 220/78/2 188/79/2
+f 188/80/5 186/81/5 236/82/5 234/83/5
+f 122/84/5 235/21/5 236/82/5 186/81/5
+g Cube_Cube_colored-wool
+f 67/6/1 6/20/1 70/18/1 82/50/1
+f 101/85/1 67/20/1 82/18/1 104/86/1
+f 81/87/2 74/88/2 73/21/2 80/25/2
+f 102/89/2 81/88/2 80/21/2 103/90/2
+f 74/47/7 81/48/7 82/50/7 70/18/7
+f 81/47/7 102/91/7 104/86/7 82/18/7
+f 238/82/4 187/81/4 189/80/4 237/83/4
+f 233/20/4 238/71/4 70/70/4 6/69/4
+f 123/21/6 183/25/6 197/5/6 187/19/6
+f 196/23/8 189/33/8 187/19/8 197/5/8
+f 198/6/2 190/20/2 189/92/2 196/93/2
+f 219/85/2 198/20/2 196/92/2 220/94/2
+f 220/95/8 196/33/8 197/19/8 218/96/8
+f 183/21/6 217/90/6 218/96/6 197/19/6
+f 123/84/4 187/81/4 238/82/4 233/21/4
+f 70/70/4 238/71/4 237/76/4 74/77/4
+g Cube_Cube_bottom-stuff
+f 106/5/2 100/19/2 99/18/2 105/50/2
+f 98/8/2 106/14/2 105/3/2 97/11/2
+f 222/5/2 216/19/2 215/18/2 221/50/2
+f 214/8/2 222/14/2 221/3/2 213/11/2
+g Cube_Cube_pillow
+f 87/97/8 88/98/8 84/99/8 83/100/8
+f 88/98/9 89/101/9 85/102/9 84/99/9
+f 89/101/7 90/103/7 86/104/7 85/102/7
+f 90/103/2 89/101/2 88/98/2 87/97/2
+f 83/100/10 86/104/10 90/103/10 87/97/10
+f 79/100/1 78/99/1 85/51/1 86/47/1
+f 78/99/4 77/102/4 84/105/4 85/106/4
+f 77/102/6 76/104/6 83/33/6 84/58/6
+f 203/97/8 204/98/8 200/99/8 199/100/8
+f 204/98/9 205/101/9 201/102/9 200/99/9
+f 205/101/7 206/103/7 202/104/7 201/102/7
+f 206/103/2 205/101/2 204/98/2 203/97/2
+f 199/100/10 202/104/10 206/103/10 203/97/10
+f 195/100/1 194/99/1 201/51/1 202/47/1
+f 194/99/4 193/102/4 200/105/4 201/106/4
+f 193/102/6 192/104/6 199/33/6 200/58/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_bed_regular.obj b/homedecor_modpack/homedecor/models/homedecor_bed_regular.obj
new file mode 100644
index 0000000..3694fc9
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bed_regular.obj
@@ -0,0 +1,337 @@
+# Blender v2.73 (sub 0) OBJ File: 'bed.blend'
+# www.blender.org
+o Cube
+v -0.500000 -0.375000 1.437500
+v -0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 1.437500
+v -0.500000 -0.125000 1.437500
+v -0.500000 -0.125000 -0.437500
+v 0.500000 -0.125000 -0.437500
+v 0.500000 -0.125000 1.437500
+v -0.437500 -0.125000 1.437500
+v -0.437500 -0.125000 -0.437500
+v 0.437500 -0.125000 -0.437500
+v 0.437500 -0.125000 1.437500
+v 0.375000 -0.500000 -0.437500
+v 0.375000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.437500
+v 0.375000 0.187500 -0.437500
+v 0.375000 0.187500 -0.500000
+v 0.500000 0.187500 -0.500000
+v 0.500000 0.187500 -0.437500
+v -0.500000 -0.500000 -0.437500
+v -0.500000 -0.500000 -0.500000
+v -0.375000 -0.500000 -0.500000
+v -0.375000 -0.500000 -0.437500
+v -0.500000 0.187500 -0.437500
+v -0.500000 0.187500 -0.500000
+v -0.375000 0.187500 -0.500000
+v -0.375000 0.187500 -0.437500
+v -0.375000 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.500000
+v 0.375000 -0.375000 -0.500000
+v 0.375000 -0.375000 -0.437500
+v -0.375000 -0.125000 -0.437500
+v -0.375000 -0.125000 -0.500000
+v 0.375000 -0.125000 -0.500000
+v 0.375000 -0.125000 -0.437500
+v -0.375000 0.000000 -0.437500
+v -0.375000 0.000000 -0.500000
+v 0.375000 0.000000 -0.500000
+v 0.375000 0.000000 -0.437500
+v -0.375000 0.125000 -0.437500
+v -0.375000 0.125000 -0.500000
+v 0.375000 0.125000 -0.500000
+v 0.375000 0.125000 -0.437500
+v 0.375000 -0.500000 1.437500
+v 0.375000 -0.500000 1.500000
+v 0.500000 -0.500000 1.500000
+v 0.500000 -0.500000 1.437500
+v 0.375000 0.500000 1.437500
+v 0.375000 0.500000 1.500000
+v 0.500000 0.500000 1.500000
+v 0.500000 0.500000 1.437500
+v -0.500000 -0.500000 1.437500
+v -0.500000 -0.500000 1.500000
+v -0.375000 -0.500000 1.500000
+v -0.375000 -0.500000 1.437500
+v -0.500000 0.500000 1.437500
+v -0.500000 0.500000 1.500000
+v -0.375000 0.500000 1.500000
+v -0.375000 0.500000 1.437500
+v -0.375000 -0.375000 1.437500
+v -0.375000 -0.375000 1.500000
+v 0.375000 -0.375000 1.500000
+v 0.375000 -0.375000 1.437500
+v -0.375000 -0.125000 1.437500
+v -0.375000 -0.125000 1.500000
+v 0.375000 -0.125000 1.500000
+v 0.375000 -0.125000 1.437500
+v -0.375000 -0.062500 1.437500
+v -0.375000 -0.062500 1.500000
+v 0.375000 -0.062500 1.500000
+v 0.375000 -0.062500 1.437500
+v -0.375000 0.187500 1.437500
+v -0.375000 0.187500 1.500000
+v 0.375000 0.187500 1.500000
+v 0.375000 0.187500 1.437500
+v -0.375000 0.250000 1.437500
+v -0.375000 0.250000 1.500000
+v 0.375000 0.250000 1.500000
+v 0.375000 0.250000 1.437500
+v -0.375000 0.437500 1.437500
+v -0.375000 0.437500 1.500000
+v 0.375000 0.437500 1.500000
+v 0.375000 0.437500 1.437500
+v -0.500000 -0.125000 0.500000
+v -0.500000 -0.375000 0.500000
+v 0.500000 -0.125000 0.500000
+v 0.500000 -0.375000 0.500000
+v -0.437500 -0.125000 0.500000
+v 0.437500 -0.125000 0.500000
+v -0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 1.437500
+v -0.437500 -0.078125 1.437500
+v -0.437500 -0.078125 -0.437500
+v 0.437500 -0.078125 -0.437500
+v 0.437500 -0.078125 1.437500
+v -0.406250 -0.046875 1.437500
+v -0.406250 -0.046875 -0.437500
+v 0.406250 -0.046875 -0.437500
+v 0.406250 -0.046875 1.437500
+v -0.312500 -0.046875 1.437500
+v -0.312500 -0.046875 1.062500
+v 0.312500 -0.046875 1.062500
+v 0.312500 -0.046875 1.437500
+v -0.406250 -0.046875 0.500000
+v -0.437500 -0.078125 0.500000
+v 0.406250 -0.046875 0.500000
+v 0.437500 -0.078125 0.500000
+v -0.312500 -0.031250 1.437500
+v -0.312500 -0.031250 1.062500
+v 0.312500 -0.031250 1.062500
+v 0.312500 -0.031250 1.437500
+v -0.250000 0.031250 1.375000
+v -0.250000 0.031250 1.125000
+v 0.250000 0.031250 1.125000
+v 0.250000 0.031250 1.375000
+v 0.437500 -0.375000 1.437500
+v 0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 1.375000
+v 0.437500 -0.375000 1.375000
+v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+v -0.437500 -0.312500 1.375000
+v 0.437500 -0.312500 1.375000
+v -0.437500 -0.312500 -0.375000
+v 0.437500 -0.312500 -0.375000
+v -0.437500 -0.125000 1.000000
+v 0.437500 -0.125000 1.000000
+v -0.437500 -0.078125 1.000000
+v 0.406250 -0.046875 1.000000
+v -0.406250 -0.046875 1.000000
+v 0.437500 -0.078125 1.000000
+v -0.437500 -0.312500 0.500000
+v 0.437500 -0.312500 0.500000
+v -0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 -0.437500
+v -0.500000 -0.375000 0.500000
+v 0.500000 -0.375000 0.500000
+v -0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 0.500000
+v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+vt 1.000000 0.250000
+vt 0.062500 0.250000
+vt 0.062500 -0.000000
+vt 1.000000 -0.000000
+vt 0.937500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.937500 0.937500
+vt 0.437500 1.000000
+vt -0.000000 0.000000
+vt 0.062500 0.937500
+vt 0.937500 0.250000
+vt -0.000000 0.250000
+vt 0.937500 0.000000
+vt 1.000000 0.937500
+vt 0.062500 0.875000
+vt 0.937500 0.875000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.437500 0.937500
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 1.000000 1.000000
+vt 0.062500 0.687500
+vt -0.000000 0.687500
+vt 0.125000 0.687500
+vt 0.125000 -0.000000
+vt 1.000000 0.687500
+vt 0.937500 0.687500
+vt 0.875000 0.687500
+vt 0.875000 0.062500
+vt 0.875000 0.937500
+vt 0.125000 0.062500
+vt 0.125000 0.937500
+vt 0.125000 1.000000
+vt 0.875000 0.625000
+vt 0.125000 0.625000
+vt 0.125000 0.500000
+vt 0.875000 0.500000
+vt 0.875000 0.375000
+vt 0.125000 0.375000
+vt 0.125000 0.125000
+vt 0.875000 0.125000
+vt 0.062500 1.000000
+vt 0.125000 0.437500
+vt 0.875000 0.437500
+vt 0.125000 0.750000
+vt 0.875000 0.750000
+vt 0.000000 0.437500
+vt 0.062500 0.437500
+vt 0.937500 0.437500
+vt 0.906250 0.093750
+vt 0.093750 0.093750
+vt 0.906250 0.000000
+vt 0.906250 0.437500
+vt 0.093750 0.437500
+vt 0.093750 0.000000
+vt 1.000000 0.437500
+vt -0.000000 0.562500
+vt 0.062500 0.562500
+vt 0.093750 1.000000
+vt 0.093750 0.062500
+vt 0.906250 0.062500
+vt 0.906250 1.000000
+vt 0.093750 0.562500
+vt 0.906250 0.562500
+vt 0.875000 0.562500
+vt 0.937500 0.562500
+vt 0.125000 0.562500
+vt 1.000000 0.562500
+vt 0.250000 0.125000
+vt 0.250000 0.375000
+vt 0.187500 0.437500
+vt 0.187500 0.062500
+vt 0.750000 0.375000
+vt 0.812500 0.437500
+vt 0.750000 0.125000
+vt 0.812500 0.062500
+vt 0.812500 0.500000
+vt 0.187500 0.500000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.707100 0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 0.707100 0.707100
+g Cube_Cube_frame-metal
+s off
+f 85/1/1 6/2/1 2/3/1 86/4/1
+f 87/1/2 8/2/2 4/3/2 88/4/2
+f 11/5/3 90/6/3 87/7/3 7/8/3
+f 87/8/3 90/5/3 128/9/3 12/6/3 8/7/3
+f 1/7/4 86/10/4 91/3/4 92/11/4
+f 7/12/2 87/13/2 88/10/2 3/14/2
+f 5/12/1 85/13/1 86/10/1 1/14/1
+f 88/4/4 4/15/4 117/8/4 118/14/4
+f 119/16/3 92/11/3 117/8/3 120/17/3
+f 121/3/5 125/18/5 126/19/5 122/14/5
+f 120/14/6 124/19/6 123/18/6 119/3/6
+f 85/6/3 89/7/3 10/8/3 6/5/3
+f 89/8/3 85/5/3 5/6/3 9/7/3 127/20/3
+f 133/19/1 91/14/1 119/10/1 123/21/1
+f 118/14/2 134/19/2 124/21/2 120/10/2
+f 122/4/2 126/22/2 134/18/2 118/3/2
+f 125/22/1 121/4/1 91/3/1 133/18/1
+f 137/7/4 135/10/4 140/3/4 139/11/4
+f 136/4/4 138/15/4 142/8/4 141/14/4
+f 143/18/4 140/3/4 141/14/4 144/19/4
+g Cube_Cube_head-foot-wood
+f 50/23/6 46/24/6 47/4/6 51/25/6
+f 17/26/1 18/27/1 14/10/1 13/3/1
+f 18/28/5 19/27/5 15/10/5 14/29/5
+f 19/30/2 20/31/2 16/14/2 15/4/2
+f 20/30/6 17/32/6 13/24/6 16/4/6
+f 13/33/4 14/24/4 15/4/4 16/22/4
+f 20/15/3 19/25/3 18/23/3 17/34/3
+f 25/26/1 26/27/1 22/10/1 21/3/1
+f 26/30/5 27/32/5 23/24/5 22/4/5
+f 27/30/2 28/31/2 24/14/2 23/4/2
+f 28/28/6 25/27/6 21/10/6 24/29/6
+f 21/21/4 22/10/4 23/29/4 24/35/4
+f 28/36/3 27/37/3 26/6/3 25/7/3
+f 44/38/6 41/39/6 37/40/6 40/41/6
+f 34/42/5 35/43/5 31/44/5 30/45/5
+f 42/38/5 43/39/5 39/40/5 38/41/5
+f 49/5/1 45/14/1 46/4/1 50/25/1
+f 29/35/4 30/29/4 31/24/4 32/33/4
+f 36/34/3 35/23/3 34/37/3 33/36/3
+f 37/35/4 38/29/4 39/24/4 40/33/4
+f 44/34/3 43/23/3 42/37/3 41/36/3
+f 51/6/2 47/10/2 48/3/2 52/46/2
+f 52/6/5 48/10/5 45/29/5 49/37/5
+f 45/34/4 48/15/4 47/25/4 46/23/4
+f 52/22/3 49/33/3 50/24/3 51/4/3
+f 57/5/1 53/14/1 54/4/1 58/25/1
+f 58/6/6 54/10/6 55/29/6 59/37/6
+f 59/6/2 55/10/2 56/3/2 60/46/2
+f 60/23/5 56/24/5 53/4/5 57/25/5
+f 53/7/4 56/36/4 55/37/4 54/6/4
+f 60/35/3 57/21/3 58/10/3 59/29/3
+f 76/28/5 72/47/5 69/48/5 73/32/5
+f 66/43/6 62/44/6 63/45/6 67/42/6
+f 74/28/6 70/47/6 71/48/6 75/32/6
+f 61/36/4 64/34/4 63/23/4 62/37/4
+f 68/33/3 65/35/3 66/29/3 67/24/3
+f 69/36/4 72/34/4 71/23/4 70/37/4
+f 76/33/3 73/35/3 74/29/3 75/24/3
+f 84/36/5 80/49/5 77/50/5 81/34/5
+f 82/36/6 78/49/6 79/50/6 83/34/6
+f 77/36/4 80/34/4 79/23/4 78/37/4
+f 84/33/3 81/35/3 82/29/3 83/24/3
+g Cube_Cube_white-wool
+f 127/51/1 9/10/1 93/3/1 129/52/1
+f 9/3/6 12/14/6 96/19/6 93/18/6
+f 130/48/7 100/24/7 96/14/7 132/53/7
+f 100/54/6 97/55/6 93/18/6 96/19/6
+f 97/29/8 131/47/8 129/52/8 93/3/8
+f 100/56/3 130/57/3 131/58/3 97/59/3
+f 12/4/2 128/60/2 132/53/2 96/14/2
+g Cube_Cube_colored-wool
+f 11/3/5 10/14/5 94/19/5 95/18/5
+f 90/6/2 11/21/2 95/18/2 108/46/2
+f 10/22/1 89/25/1 106/5/1 94/19/1
+f 128/61/2 90/21/2 108/18/2 132/62/2
+f 105/23/8 98/33/8 94/19/8 106/5/8
+f 107/63/3 99/64/3 98/65/3 105/66/3
+f 130/67/3 107/64/3 105/65/3 131/68/3
+f 99/35/7 107/37/7 108/46/7 95/18/7
+f 131/69/8 105/33/8 106/19/8 129/70/8
+f 107/35/7 130/71/7 132/62/7 108/18/7
+f 89/22/1 127/72/1 129/70/1 106/19/1
+f 94/19/5 98/54/5 99/55/5 95/18/5
+g Cube_Cube_bottom-stuff
+f 134/5/3 126/19/3 125/18/3 133/46/3
+f 124/8/3 134/14/3 133/3/3 123/11/3
+g Cube_Cube_pillow
+f 113/73/8 114/74/8 110/75/8 109/76/8
+f 114/74/9 115/77/9 111/78/9 110/75/9
+f 115/77/7 116/79/7 112/80/7 111/78/7
+f 116/79/3 115/77/3 114/74/3 113/73/3
+f 109/76/10 112/80/10 116/79/10 113/73/10
+f 104/76/2 103/75/2 111/47/2 112/35/2
+f 103/75/5 102/78/5 110/81/5 111/82/5
+f 102/78/1 101/80/1 109/33/1 110/48/1
diff --git a/homedecor_modpack/homedecor/models/homedecor_bedroom_wardrobe.obj b/homedecor_modpack/homedecor/models/homedecor_bedroom_wardrobe.obj
new file mode 100644
index 0000000..833158e
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bedroom_wardrobe.obj
@@ -0,0 +1,168 @@
+# Blender v2.73 (sub 0) OBJ File: 'bedroom-wardrobe.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.437500
+v 0.500000 -0.500000 -0.437500
+v 0.500000 -0.500000 0.500000
+v -0.500000 1.500000 0.500000
+v -0.500000 1.500000 -0.437500
+v 0.500000 1.500000 -0.437500
+v 0.500000 1.500000 0.500000
+v -0.437500 0.250000 -0.437500
+v -0.437500 0.250000 -0.500000
+v 0.437500 0.250000 -0.500000
+v 0.437500 0.250000 -0.437500
+v -0.437500 0.500000 -0.437500
+v -0.437500 0.500000 -0.500000
+v 0.437500 0.500000 -0.500000
+v 0.437500 0.500000 -0.437500
+v -0.437500 -0.062500 -0.437500
+v -0.437500 -0.062500 -0.500000
+v 0.437500 -0.062500 -0.500000
+v 0.437500 -0.062500 -0.437500
+v -0.437500 0.187500 -0.437500
+v -0.437500 0.187500 -0.500000
+v 0.437500 0.187500 -0.500000
+v 0.437500 0.187500 -0.437500
+v -0.437500 -0.375000 -0.437500
+v -0.437500 -0.375000 -0.500000
+v 0.437500 -0.375000 -0.500000
+v 0.437500 -0.375000 -0.437500
+v -0.437500 -0.125000 -0.437500
+v -0.437500 -0.125000 -0.500000
+v 0.437500 -0.125000 -0.500000
+v 0.437500 -0.125000 -0.437500
+v 0.062500 0.562500 -0.437500
+v 0.062500 0.562500 -0.500000
+v 0.437500 0.562500 -0.500000
+v 0.437500 0.562500 -0.437500
+v 0.062500 1.437500 -0.437500
+v 0.062500 1.437500 -0.500000
+v 0.437500 1.437500 -0.500000
+v 0.437500 1.437500 -0.437500
+v -0.437500 0.562500 -0.437500
+v -0.437500 0.562500 -0.500000
+v -0.062500 0.562500 -0.500000
+v -0.062500 0.562500 -0.437500
+v -0.437500 1.437500 -0.437500
+v -0.437500 1.437500 -0.500000
+v -0.062500 1.437500 -0.500000
+v -0.062500 1.437500 -0.437500
+v -0.500000 1.437500 -0.437500
+v 0.500000 1.437500 -0.437500
+v -0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 -0.437500
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.437500
+v 0.500000 0.500000 -0.437500
+v 0.500000 0.500000 0.500000
+vt 1.000000 0.000000
+vt 1.000000 0.937500
+vt 0.000000 0.937500
+vt 0.000000 0.000000
+vt 0.000000 1.000000
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 0.562500 0.937500
+vt 0.562500 0.062500
+vt 0.625000 0.062500
+vt 0.625000 0.937500
+vt 0.250000 0.937500
+vt 0.250000 0.062500
+vt 0.312500 0.062500
+vt 0.312500 0.937500
+vt 0.937500 0.437500
+vt 0.937500 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.437500
+vt 0.875000 0.937500
+vt 0.875000 0.062500
+vt -0.000000 0.062500
+vt 0.062500 0.062500
+vt 1.000000 0.062500
+vt 0.062500 0.937500
+vt 0.937500 0.062500
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.937500 0.750000
+vt 1.000000 0.750000
+vt 0.062500 0.750000
+vt -0.000000 0.750000
+vt 0.062500 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.500000
+vt 1.000000 0.500000
+vt 0.062500 0.500000
+vt 0.000000 0.500000
+vt 0.937500 0.000000
+vt 0.937500 0.250000
+vt 1.000000 0.250000
+vt 0.062500 0.250000
+vt -0.000000 0.250000
+vt 0.062500 0.187500
+vt 0.937500 0.187500
+vt 0.500000 0.937500
+vt 0.437500 0.937500
+vt 0.437500 0.062500
+vt 0.500000 0.062500
+vt 0.437500 0.000000
+vt 0.437500 1.000000
+vt 0.562500 0.000000
+vt 0.562500 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cylinder_Cylinder_wood
+s off
+f 53/1/1 54/2/1 2/3/1 1/4/1
+f 6/5/2 7/4/2 50/6/2 49/7/2
+f 55/3/3 56/4/3 4/1/3 3/2/3
+f 56/5/4 53/4/4 1/1/4 4/8/4
+f 1/1/5 2/2/5 3/3/5 4/4/5
+f 8/1/6 7/2/6 6/3/6 5/4/6
+f 3/1/2 2/8/2 51/9/2 52/10/2
+f 5/1/1 6/2/1 54/3/1 53/4/1
+f 7/3/3 8/4/3 56/1/3 55/2/3
+f 17/11/2 20/12/2 32/13/2 29/14/2
+f 9/15/2 12/16/2 24/17/2 21/18/2
+f 8/5/4 5/4/4 53/1/4 56/8/4
+f 33/19/2 44/20/2 48/21/2 37/22/2
+f 51/9/2 54/5/2 13/3/2 25/23/2
+f 52/10/2 28/24/2 16/25/2 55/4/2
+f 40/26/2 50/6/2 55/1/2 16/27/2
+f 45/28/2 13/2/2 54/8/2 49/7/2
+f 36/29/2 16/27/2 13/2/2 41/30/2
+g Cylinder_Cylinder_drawers
+f 13/8/1 14/31/1 10/32/1 9/33/1
+f 14/31/2 15/7/2 11/34/2 10/32/2
+f 15/7/3 16/5/3 12/35/3 11/34/3
+f 9/36/5 10/26/5 11/29/5 12/37/5
+f 16/29/6 15/37/6 14/36/6 13/26/6
+f 21/33/1 22/32/1 18/38/1 17/39/1
+f 22/32/2 23/34/2 19/40/2 18/38/2
+f 23/34/3 24/35/3 20/41/3 19/40/3
+f 17/26/5 18/6/5 19/42/5 20/29/5
+f 24/42/6 23/29/6 22/26/6 21/6/6
+f 29/39/1 30/38/1 26/43/1 25/44/1
+f 30/38/2 31/40/2 27/45/2 26/43/2
+f 31/40/3 32/41/3 28/46/3 27/45/3
+f 25/47/5 26/36/5 27/37/5 28/48/5
+f 32/37/6 31/48/6 30/47/6 29/36/6
+g Cylinder_Cylinder_doors
+f 37/49/1 38/50/1 34/51/1 33/52/1
+f 38/50/2 39/28/2 35/26/2 34/51/2
+f 39/28/3 40/3/3 36/25/3 35/26/3
+f 33/53/5 34/51/5 35/26/5 36/6/5
+f 40/7/6 39/28/6 38/50/6 37/54/6
+f 45/2/1 46/30/1 42/29/1 41/27/1
+f 46/30/2 47/11/2 43/12/2 42/29/2
+f 47/11/3 48/49/3 44/52/3 43/12/3
+f 41/42/5 42/29/5 43/12/5 44/55/5
+f 48/56/6 47/11/6 46/30/6 45/31/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj b/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj
new file mode 100644
index 0000000..4e1d6e7
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj
@@ -0,0 +1,421 @@
+# Blender v2.73 (sub 0) OBJ File: 'beer_mug.blend'
+# www.blender.org
+o Torus.001
+v -0.200872 -0.271336 -0.101373
+v 0.027435 -0.500000 0.013804
+v 0.078127 -0.500000 -0.007193
+v -0.213731 -0.262707 -0.113186
+v 0.116925 -0.500000 -0.045991
+v 0.137922 -0.500000 -0.096683
+v -0.201779 -0.214262 -0.136814
+v 0.137922 -0.500000 -0.151551
+v 0.116925 -0.500000 -0.202243
+v -0.190840 -0.230675 -0.148627
+v 0.078127 -0.500000 -0.241041
+v 0.027435 -0.500000 -0.262038
+v -0.179901 -0.247087 -0.136814
+v -0.027433 -0.500000 -0.262038
+v -0.078125 -0.500000 -0.241041
+v -0.179901 -0.247087 -0.113186
+v -0.116923 -0.500000 -0.202243
+v -0.137920 -0.500000 -0.151551
+v -0.190840 -0.230675 -0.101373
+v -0.137920 -0.500000 -0.096682
+v -0.116923 -0.500000 -0.045991
+v -0.201779 -0.214262 -0.113186
+v -0.078125 -0.500000 -0.007193
+v -0.027433 -0.500000 0.013804
+v -0.183162 -0.175815 -0.136814
+v 0.024062 -0.166667 -0.003152
+v 0.068522 -0.166667 -0.021568
+v -0.175215 -0.198406 -0.148627
+v 0.102550 -0.166667 -0.055596
+v 0.120966 -0.166667 -0.100055
+v -0.167267 -0.220996 -0.136814
+v 0.120966 -0.166667 -0.148178
+v 0.102550 -0.166667 -0.192638
+v -0.167267 -0.220996 -0.113186
+v 0.068522 -0.166667 -0.226666
+v 0.024062 -0.166667 -0.245082
+v -0.175215 -0.198406 -0.101373
+v -0.024061 -0.166667 -0.245082
+v -0.068520 -0.166667 -0.226666
+v -0.183162 -0.175815 -0.113186
+v -0.102548 -0.166667 -0.192638
+v -0.120964 -0.166667 -0.148178
+v -0.159704 -0.151131 -0.136814
+v -0.120964 -0.166667 -0.100055
+v -0.102548 -0.166667 -0.055596
+v -0.155526 -0.177688 -0.148627
+v -0.068520 -0.166667 -0.021568
+v -0.024060 -0.166667 -0.003152
+v -0.151348 -0.204244 -0.136814
+v 0.027435 -0.125001 0.013804
+v 0.078127 -0.125001 -0.007193
+v -0.151348 -0.204244 -0.113186
+v 0.116925 -0.125001 -0.045991
+v 0.137922 -0.125001 -0.096683
+v -0.155526 -0.177688 -0.101373
+v 0.137922 -0.125001 -0.151551
+v 0.116925 -0.125001 -0.202243
+v -0.159704 -0.151131 -0.113186
+v 0.078127 -0.125001 -0.241041
+v 0.027435 -0.125001 -0.262038
+v -0.133701 -0.142626 -0.136814
+v -0.027433 -0.125001 -0.262038
+v -0.078125 -0.125001 -0.241041
+v -0.133701 -0.170549 -0.148627
+v -0.116923 -0.125001 -0.202243
+v -0.137921 -0.125001 -0.151551
+v -0.133701 -0.198472 -0.136814
+v -0.137921 -0.125001 -0.096682
+v -0.116923 -0.125001 -0.045991
+v -0.133701 -0.198472 -0.113186
+v -0.078125 -0.125001 -0.007193
+v -0.027433 -0.125001 0.013804
+v -0.133701 -0.170549 -0.101373
+v 0.024062 -0.125001 -0.003152
+v 0.068522 -0.125001 -0.021568
+v -0.133701 -0.142626 -0.113186
+v 0.102550 -0.125001 -0.055596
+v 0.120966 -0.125001 -0.100055
+v -0.133701 -0.490192 -0.136814
+v 0.120966 -0.125001 -0.148178
+v 0.102550 -0.125001 -0.192638
+v -0.133701 -0.462269 -0.148627
+v 0.068522 -0.125001 -0.226666
+v 0.024062 -0.125001 -0.245082
+v -0.133701 -0.434346 -0.136814
+v -0.024061 -0.125001 -0.245082
+v -0.068520 -0.125001 -0.226666
+v -0.133701 -0.434346 -0.113186
+v -0.102548 -0.125001 -0.192638
+v -0.120964 -0.125001 -0.148178
+v -0.133701 -0.462269 -0.101373
+v -0.120964 -0.125001 -0.100055
+v -0.102548 -0.125001 -0.055596
+v -0.133701 -0.490192 -0.113186
+v -0.068520 -0.125001 -0.021568
+v -0.024061 -0.125001 -0.003152
+v -0.188013 -0.279964 -0.113186
+v -0.188013 -0.279964 -0.136814
+v -0.200872 -0.271336 -0.148627
+v -0.213731 -0.262707 -0.136814
+v -0.217850 -0.316409 -0.113186
+v -0.204329 -0.316409 -0.101373
+v -0.190808 -0.316409 -0.113186
+v -0.190808 -0.316409 -0.136814
+v -0.204329 -0.316409 -0.148627
+v -0.217850 -0.316409 -0.136814
+v -0.213731 -0.370111 -0.113186
+v -0.200872 -0.361482 -0.101373
+v -0.188013 -0.352853 -0.113186
+v -0.188013 -0.352853 -0.136814
+v -0.200872 -0.361482 -0.148627
+v -0.213731 -0.370111 -0.136814
+v -0.201779 -0.418556 -0.113186
+v -0.190840 -0.402143 -0.101373
+v -0.179901 -0.385730 -0.113186
+v -0.179901 -0.385730 -0.136814
+v -0.190840 -0.402143 -0.148627
+v -0.201779 -0.418556 -0.136814
+v -0.183162 -0.457002 -0.113186
+v -0.175215 -0.434412 -0.101373
+v -0.167268 -0.411822 -0.113186
+v -0.167268 -0.411822 -0.136814
+v -0.175215 -0.434412 -0.148627
+v -0.183162 -0.457002 -0.136814
+v -0.159704 -0.481686 -0.113186
+v -0.155526 -0.455130 -0.101373
+v -0.151348 -0.428574 -0.113186
+v -0.151348 -0.428574 -0.136814
+v -0.155526 -0.455130 -0.148627
+v -0.159704 -0.481686 -0.136814
+vt 0.156250 0.218750
+vt 0.156250 0.187500
+vt 0.218750 0.187500
+vt 0.218750 0.218750
+vt 0.465889 0.405864
+vt 0.537350 0.405864
+vt 0.603372 0.433211
+vt 0.653903 0.483742
+vt 0.681251 0.549764
+vt 0.681251 0.621226
+vt 0.653904 0.687248
+vt 0.603372 0.737779
+vt 0.537350 0.765126
+vt 0.465889 0.765126
+vt 0.399867 0.737779
+vt 0.349335 0.687248
+vt 0.321988 0.621226
+vt 0.321988 0.549764
+vt 0.349335 0.483742
+vt 0.399867 0.433211
+vt 0.625000 0.906250
+vt 0.687500 0.906250
+vt 0.687500 0.937500
+vt 0.625000 0.937500
+vt 0.937500 0.906250
+vt 1.000000 0.906250
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.250000 0.906250
+vt 0.312500 0.906250
+vt 0.312500 0.937500
+vt 0.250000 0.937500
+vt 0.562500 0.906250
+vt 0.562500 0.937500
+vt 0.875000 0.906250
+vt 0.875000 0.937500
+vt 0.187500 0.906250
+vt 0.187500 0.937500
+vt 0.812500 0.906250
+vt 0.812500 0.937500
+vt 0.437500 0.906250
+vt 0.500000 0.906250
+vt 0.500000 0.937500
+vt 0.437500 0.937500
+vt 0.125000 0.906250
+vt 0.125000 0.937500
+vt 0.750000 0.906250
+vt 0.750000 0.937500
+vt 0.375000 0.906250
+vt 0.375000 0.937500
+vt 0.062500 0.906250
+vt 0.062500 0.937500
+vt -0.000000 0.906250
+vt -0.000000 0.937500
+vt 0.281250 0.312500
+vt 0.281250 0.281250
+vt 0.343750 0.281250
+vt 0.343750 0.312500
+vt 0.093750 0.218750
+vt 0.156250 0.250000
+vt 0.093750 0.250000
+vt 0.375000 1.000000
+vt 0.312500 1.000000
+vt 0.281250 0.250000
+vt 0.343750 0.250000
+vt 0.156250 0.312500
+vt 0.156250 0.281250
+vt 0.218750 0.281250
+vt 0.218750 0.312500
+vt 0.531250 0.187500
+vt 0.593750 0.187500
+vt 0.593750 0.218750
+vt 0.531250 0.218750
+vt 0.656250 0.187500
+vt 0.656250 0.218750
+vt 0.093750 0.187500
+vt 0.218750 0.250000
+vt 0.125000 0.406250
+vt 0.187500 0.406250
+vt 0.687500 1.000000
+vt 0.625000 1.000000
+vt 0.937500 0.406250
+vt 1.000000 0.406250
+vt 0.062500 1.000000
+vt 0.125000 1.000000
+vt 0.375000 0.406250
+vt 0.437500 0.406250
+vt 0.687500 0.406250
+vt 0.750000 0.406250
+vt 0.937500 1.000000
+vt 0.875000 1.000000
+vt 0.250000 0.406250
+vt 0.187500 1.000000
+vt 0.093750 0.343750
+vt 0.093750 0.312500
+vt 0.156250 0.343750
+vt 0.500000 0.406250
+vt 0.812500 0.406250
+vt 0.437500 1.000000
+vt 0.218750 0.156250
+vt 0.281250 0.156250
+vt 0.281250 0.187500
+vt 0.750000 1.000000
+vt 0.031250 0.250000
+vt 0.031250 0.218750
+vt 0.562500 0.406250
+vt -0.000000 0.406250
+vt 0.062500 0.406250
+vt 1.000000 1.000000
+vt 0.343750 0.187500
+vt 0.343750 0.156250
+vt 0.406250 0.156250
+vt 0.406250 0.187500
+vt 0.312500 0.406250
+vt 0.625000 0.406250
+vt 0.250000 1.000000
+vt 0.406250 0.343750
+vt 0.406250 0.312500
+vt 0.468750 0.312500
+vt 0.468750 0.343750
+vt 0.875000 0.406250
+vt 0.468750 0.156250
+vt 0.468750 0.187500
+vt 0.500000 1.000000
+vt 0.812500 1.000000
+vt 0.406250 0.281250
+vt 0.406250 0.250000
+vt 0.562500 1.000000
+vt -0.000000 1.000000
+vt 0.218750 0.343750
+vt 0.531250 0.312500
+vt 0.531250 0.281250
+vt 0.593750 0.281250
+vt 0.593750 0.312500
+vt 0.468750 0.281250
+vt 0.468750 0.250000
+vt 0.531250 0.250000
+vt 0.281250 0.343750
+vt 0.593750 0.250000
+vt 0.281250 0.218750
+vt 0.343750 0.218750
+vt 0.031250 0.156250
+vt 0.093750 0.156250
+vt 0.031250 0.187500
+vt 0.813063 0.373140
+vt 0.756333 0.349641
+vt 0.712914 0.306222
+vt 0.689415 0.249492
+vt 0.689415 0.188087
+vt 0.712914 0.131357
+vt 0.756333 0.087938
+vt 0.813063 0.064439
+vt 0.874467 0.064439
+vt 0.931197 0.087938
+vt 0.974617 0.131357
+vt 0.998115 0.188088
+vt 0.998115 0.249492
+vt 0.974617 0.306222
+vt 0.931197 0.349641
+vt 0.874467 0.373140
+vt 0.156250 0.156250
+vt 0.656250 0.250000
+vt 0.031250 0.312500
+vt 0.031250 0.281250
+vt 0.093750 0.281250
+vt 0.656250 0.281250
+vt 0.656250 0.312500
+vt 0.406250 0.218750
+vt 0.468750 0.218750
+vt 0.031250 0.343750
+vt 0.656250 0.343750
+vt 0.593750 0.343750
+vt 0.531250 0.343750
+vt 0.531250 0.156250
+vt 0.593750 0.156250
+vt 0.343750 0.343750
+vt 0.656250 0.156250
+s 1
+f 120/1 121/2 115/3 114/4
+f 2/5 24/6 23/7 21/8 20/9 18/10 17/11 15/12 14/13 12/14 11/15 9/16 8/17 6/18 5/19 3/20
+f 51/21 53/22 77/23 75/24
+f 59/25 60/26 84/27 83/28
+f 66/29 68/30 92/31 90/32
+f 50/33 51/21 75/24 74/34
+f 57/35 59/25 83/28 81/36
+f 65/37 66/29 90/32 89/38
+f 56/39 57/35 81/36 80/40
+f 71/41 72/42 96/43 95/44
+f 63/45 65/37 89/38 87/46
+f 54/47 56/39 80/40 78/48
+f 69/49 71/41 95/44 93/50
+f 62/51 63/45 87/46 86/52
+f 53/22 54/47 78/48 77/23
+f 60/53 62/51 86/52 84/54
+f 111/55 112/56 106/57 105/58
+f 72/42 50/33 74/34 96/43
+f 126/59 120/1 119/60 125/61
+f 45/62 44/63 92/31 93/50
+f 106/57 112/56 107/64 101/65
+f 123/66 124/67 118/68 117/69
+f 34/70 52/71 55/72 37/73
+f 55/72 52/71 70/74 73/75
+f 126/59 127/76 121/2 120/1
+f 112/56 118/68 113/77 107/64
+f 15/78 17/79 65/37 63/45
+f 29/80 27/81 75/24 77/23
+f 11/82 12/83 60/26 59/25
+f 38/84 86/52 87/46 39/85
+f 21/86 23/87 71/41 69/49
+f 5/88 6/89 54/47 53/22
+f 35/90 33/91 81/36 83/28
+f 17/79 18/92 66/29 65/37
+f 41/93 39/85 87/46 89/38
+f 128/94 129/95 123/66 122/96
+f 23/87 24/97 72/42 71/41
+f 6/89 8/98 56/39 54/47
+f 47/99 45/62 93/50 95/44
+f 115/3 116/100 110/101 109/102
+f 30/103 29/80 77/23 78/48
+f 94/104 91/105 126/59 125/61
+f 24/97 2/106 50/33 72/42
+f 12/107 14/108 62/51 60/53
+f 36/109 35/90 83/28 84/27
+f 103/110 104/111 98/112 97/113
+f 18/92 20/114 68/30 66/29
+f 2/106 3/115 51/21 50/33
+f 42/116 41/93 89/38 90/32
+f 98/117 99/118 10/119 13/120
+f 8/98 9/121 57/35 56/39
+f 97/113 98/112 13/122 16/123
+f 48/124 47/99 95/44 96/43
+f 32/125 30/103 78/48 80/40
+f 100/126 106/57 101/65 4/127
+f 14/108 15/78 63/45 62/51
+f 118/68 112/56 111/55 117/69
+f 26/128 48/124 96/43 74/34
+f 38/84 36/129 84/54 86/52
+f 20/114 21/86 69/49 68/30
+f 122/96 123/66 117/69 116/130
+f 3/115 5/88 53/22 51/21
+f 44/63 42/116 90/32 92/31
+f 27/81 26/128 74/34 75/24
+f 28/131 25/132 43/133 46/134
+f 9/121 11/82 59/25 57/35
+f 33/91 32/125 80/40 81/36
+f 25/132 7/135 22/136 40/137
+f 116/130 117/69 111/55 110/138
+f 40/137 37/73 55/72 58/139
+f 107/64 108/140 102/141 101/65
+f 105/58 106/57 100/126 99/118
+f 43/133 25/132 40/137 58/139
+f 85/142 128/143 127/76 88/144
+f 26/145 27/146 29/147 30/148 32/149 33/150 35/151 36/152 38/153 39/154 41/155 42/156 44/157 45/158 47/159 48/160
+f 68/30 69/49 93/50 92/31
+f 127/76 128/143 122/161 121/2
+f 55/72 73/75 76/162 58/139
+f 99/118 100/126 7/135 10/119
+f 82/163 79/164 130/165 129/95
+f 119/60 120/1 114/4 113/77
+f 118/68 124/67 119/60 113/77
+f 43/133 61/166 64/167 46/134
+f 10/119 7/135 25/132 28/131
+f 130/165 124/67 123/66 129/95
+f 4/127 1/168 19/169 22/136
+f 124/67 130/165 125/61 119/60
+f 61/166 43/133 58/139 76/162
+f 110/101 104/111 103/110 109/102
+f 108/140 109/102 103/110 102/141
+f 88/144 127/76 126/59 91/105
+f 97/113 16/123 19/169 1/168
+f 82/163 129/95 128/94 85/170
+f 19/169 16/123 34/70 37/73
+f 19/169 37/73 40/137 22/136
+f 46/134 64/167 67/171 49/172
+f 114/4 108/140 107/64 113/77
+f 115/3 109/102 108/140 114/4
+f 101/65 102/141 1/168 4/127
+f 10/119 28/131 31/173 13/120
+f 16/123 13/122 31/174 34/70
+f 102/141 103/110 97/113 1/168
+f 31/174 49/175 52/71 34/70
+f 111/55 105/58 104/176 110/138
+f 7/135 100/126 4/127 22/136
+f 122/161 116/100 115/3 121/2
+f 105/58 99/118 98/117 104/176
+f 31/173 28/131 46/134 49/172
+f 130/165 79/164 94/104 125/61
+f 52/71 49/175 67/177 70/74
diff --git a/homedecor_modpack/homedecor/models/homedecor_beer_taps.obj b/homedecor_modpack/homedecor/models/homedecor_beer_taps.obj
new file mode 100644
index 0000000..87929b8
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_beer_taps.obj
@@ -0,0 +1,1198 @@
+# Blender v2.73 (sub 0) OBJ File: 'beer-taps.blend'
+# www.blender.org
+o Cylinder
+v -0.250000 -0.500000 0.000000
+v -0.250000 -0.500000 -0.500000
+v 0.250000 -0.500000 -0.500000
+v 0.250000 -0.500000 0.000000
+v -0.250000 -0.468750 0.000000
+v -0.250000 -0.468750 -0.500000
+v 0.250000 -0.468750 -0.500000
+v 0.250000 -0.468750 0.000000
+v 0.000000 -0.468750 -0.187500
+v 0.000000 0.125000 -0.187500
+v 0.044194 -0.468750 -0.169194
+v 0.044194 0.125000 -0.169194
+v 0.062500 -0.468750 -0.125000
+v 0.062500 0.125000 -0.125000
+v 0.044194 -0.468750 -0.080806
+v 0.044194 0.125000 -0.080806
+v -0.000000 -0.468750 -0.062500
+v -0.000000 0.125000 -0.062500
+v -0.044194 -0.468750 -0.080806
+v -0.044194 0.125000 -0.080806
+v -0.062500 -0.468750 -0.125000
+v -0.062500 0.125000 -0.125000
+v -0.044194 -0.468750 -0.169194
+v -0.044194 0.125000 -0.169194
+v 0.031250 0.144531 -0.125000
+v 0.000000 0.148438 -0.125000
+v -0.175781 0.062500 -0.143125
+v 0.175781 0.062500 -0.143125
+v -0.175781 0.049684 -0.137816
+v 0.175781 0.049684 -0.137816
+v -0.175781 0.044375 -0.125000
+v 0.175781 0.044375 -0.125000
+v -0.175781 0.049684 -0.112184
+v 0.175781 0.049684 -0.112184
+v -0.175781 0.062500 -0.106875
+v 0.175781 0.062500 -0.106875
+v -0.175781 0.075316 -0.112184
+v 0.175781 0.075316 -0.112184
+v -0.175781 0.080625 -0.125000
+v 0.175781 0.080625 -0.125000
+v -0.175781 0.075316 -0.137816
+v 0.175781 0.075316 -0.137816
+v 0.022097 0.144531 -0.102903
+v -0.000000 0.144531 -0.093750
+v -0.022097 0.144531 -0.102903
+v -0.031250 0.144531 -0.125000
+v -0.022097 0.144531 -0.147097
+v 0.000000 0.144531 -0.156250
+v 0.022097 0.144531 -0.147097
+v 0.195312 0.033500 -0.093750
+v 0.195312 0.033500 -0.271224
+v 0.215819 0.041994 -0.093750
+v 0.215819 0.041994 -0.271224
+v 0.224312 0.062500 -0.093750
+v 0.224312 0.062500 -0.271224
+v 0.215819 0.083006 -0.093750
+v 0.215819 0.083006 -0.271224
+v 0.195312 0.091500 -0.093750
+v 0.195312 0.091500 -0.271224
+v 0.174806 0.083006 -0.093750
+v 0.174806 0.083006 -0.271224
+v 0.166313 0.062500 -0.093750
+v 0.166313 0.062500 -0.271224
+v 0.174806 0.041994 -0.093750
+v 0.174806 0.041994 -0.271224
+v 0.216430 0.121971 -0.271118
+v 0.195312 0.121971 -0.279865
+v 0.195312 0.410803 -0.268868
+v 0.208655 0.410803 -0.263342
+v 0.214181 0.410803 -0.250000
+v 0.208655 0.410803 -0.236658
+v 0.195312 0.410803 -0.231132
+v 0.181970 0.410803 -0.236658
+v 0.176444 0.410803 -0.250000
+v 0.181970 0.410803 -0.263342
+v 0.225177 0.121971 -0.250000
+v 0.216430 0.121971 -0.228882
+v 0.195312 0.121971 -0.220135
+v 0.174195 0.121971 -0.228882
+v 0.165448 0.121971 -0.250000
+v 0.174195 0.121971 -0.271118
+v 0.162768 0.316082 -0.282545
+v 0.149287 0.316082 -0.250000
+v 0.195312 0.316082 -0.296025
+v 0.162768 0.316082 -0.217455
+v 0.195312 0.316082 -0.203975
+v 0.227857 0.316082 -0.217455
+v 0.241338 0.316082 -0.250000
+v 0.227857 0.316082 -0.282545
+v 0.177125 0.178927 -0.268187
+v 0.169592 0.178927 -0.250000
+v 0.195312 0.390838 -0.285557
+v 0.177125 0.178927 -0.231813
+v 0.195312 0.178927 -0.224279
+v 0.213500 0.178927 -0.231813
+v 0.221033 0.178927 -0.250000
+v 0.213500 0.178927 -0.268187
+v 0.195312 0.083245 -0.268807
+v 0.170170 0.390838 -0.275143
+v 0.159755 0.390838 -0.250000
+v 0.195312 0.178927 -0.275721
+v 0.208611 0.083245 -0.263298
+v 0.170170 0.390838 -0.224857
+v 0.214119 0.083245 -0.250000
+v 0.195312 0.390838 -0.214443
+v 0.208611 0.083245 -0.236702
+v 0.220455 0.390838 -0.224857
+v 0.195312 0.083245 -0.231193
+v 0.230870 0.390838 -0.250000
+v 0.182014 0.083245 -0.236702
+v 0.220455 0.390838 -0.275143
+v 0.176506 0.083245 -0.250000
+v 0.182014 0.083245 -0.263298
+v 0.195312 0.062500 -0.082741
+v 0.195312 0.048000 -0.085938
+v 0.205566 0.052247 -0.085938
+v 0.209812 0.062500 -0.085938
+v 0.205566 0.072753 -0.085938
+v 0.195312 0.077000 -0.085938
+v 0.185059 0.072753 -0.085938
+v 0.180812 0.062500 -0.085938
+v 0.185059 0.052247 -0.085938
+v 0.195312 0.247505 -0.293022
+v 0.164892 0.247505 -0.280421
+v 0.152291 0.247505 -0.250000
+v 0.164892 0.247505 -0.219579
+v 0.195312 0.247505 -0.206978
+v 0.225733 0.247505 -0.219579
+v 0.238334 0.247505 -0.250000
+v 0.225733 0.247505 -0.280421
+v -0.195312 0.033500 -0.093750
+v -0.195312 0.033500 -0.271224
+v -0.174806 0.041994 -0.093750
+v -0.174806 0.041994 -0.271224
+v -0.166313 0.062500 -0.093750
+v -0.166313 0.062500 -0.271224
+v -0.174806 0.083006 -0.093750
+v -0.174806 0.083006 -0.271224
+v -0.195312 0.091500 -0.093750
+v -0.195312 0.091500 -0.271224
+v -0.215819 0.083006 -0.093750
+v -0.215819 0.083006 -0.271224
+v -0.224312 0.062500 -0.093750
+v -0.224312 0.062500 -0.271224
+v -0.215819 0.041994 -0.093750
+v -0.215819 0.041994 -0.271224
+v -0.174195 0.121971 -0.271118
+v -0.195313 0.121971 -0.279865
+v -0.195312 0.410803 -0.268868
+v -0.181970 0.410803 -0.263342
+v -0.176444 0.410803 -0.250000
+v -0.181970 0.410803 -0.236658
+v -0.195312 0.410803 -0.231132
+v -0.208655 0.410803 -0.236658
+v -0.185059 0.052247 -0.282943
+v -0.214181 0.410803 -0.250000
+v -0.195312 0.048000 -0.282943
+v -0.208655 0.410803 -0.263342
+v -0.165448 0.121971 -0.250000
+v -0.174195 0.121971 -0.228882
+v -0.195313 0.121971 -0.220135
+v -0.216430 0.121971 -0.228882
+v -0.225177 0.121971 -0.250000
+v -0.216430 0.121971 -0.271118
+v -0.227857 0.316082 -0.282545
+v -0.241338 0.316082 -0.250000
+v -0.195313 0.316082 -0.296025
+v -0.205566 0.052247 -0.282943
+v -0.227857 0.316082 -0.217455
+v -0.209812 0.062500 -0.282943
+v -0.195313 0.316082 -0.203975
+v -0.205566 0.072753 -0.282943
+v -0.162768 0.316082 -0.217455
+v -0.195312 0.077000 -0.282943
+v -0.149287 0.316082 -0.250000
+v -0.185059 0.072753 -0.282943
+v -0.162768 0.316082 -0.282545
+v -0.180813 0.062500 -0.282943
+v 0.205566 0.052247 -0.282943
+v 0.195312 0.048000 -0.282943
+v -0.213500 0.178927 -0.268187
+v -0.221033 0.178927 -0.250000
+v -0.195313 0.390838 -0.285557
+v 0.185059 0.052247 -0.282943
+v -0.213500 0.178927 -0.231813
+v 0.180812 0.062500 -0.282943
+v -0.195313 0.178927 -0.224279
+v 0.185059 0.072753 -0.282943
+v -0.177125 0.178927 -0.231813
+v 0.195312 0.077000 -0.282943
+v -0.169592 0.178927 -0.250000
+v 0.205566 0.072753 -0.282943
+v -0.177125 0.178927 -0.268187
+v 0.209812 0.062500 -0.282943
+v -0.195312 0.083245 -0.268807
+v 0.195312 0.062500 -0.285397
+v -0.220455 0.390838 -0.275143
+v -0.230870 0.390838 -0.250000
+v -0.195313 0.178927 -0.275721
+v -0.182014 0.083245 -0.263298
+v -0.220455 0.390838 -0.224857
+v -0.176506 0.083245 -0.250000
+v -0.195313 0.390838 -0.214443
+v -0.182014 0.083245 -0.236702
+v -0.170170 0.390838 -0.224857
+v -0.195312 0.083245 -0.231193
+v -0.159755 0.390838 -0.250000
+v -0.208611 0.083245 -0.236702
+v -0.170170 0.390838 -0.275143
+v -0.214119 0.083245 -0.250000
+v -0.195312 0.062500 -0.285397
+v -0.208611 0.083245 -0.263298
+v -0.195313 0.062500 -0.082741
+v -0.195312 0.048000 -0.085938
+v -0.185059 0.052247 -0.085938
+v -0.180813 0.062500 -0.085938
+v -0.185059 0.072753 -0.085938
+v -0.195312 0.077000 -0.085938
+v -0.205566 0.072753 -0.085938
+v -0.209813 0.062500 -0.085938
+v -0.205566 0.052247 -0.085938
+v -0.195313 0.247505 -0.293022
+v -0.225733 0.247505 -0.280421
+v -0.238334 0.247505 -0.250000
+v -0.225733 0.247505 -0.219579
+v -0.195313 0.247505 -0.206978
+v -0.164892 0.247505 -0.219579
+v -0.152291 0.247505 -0.250000
+v -0.164892 0.247505 -0.280421
+v 0.194190 -0.062272 -0.244231
+v 0.207204 -0.063594 -0.239118
+v 0.212675 -0.066445 -0.226501
+v 0.207399 -0.069154 -0.213770
+v 0.194465 -0.070135 -0.208383
+v 0.181451 -0.068813 -0.213496
+v 0.175980 -0.065963 -0.226113
+v 0.181256 -0.063253 -0.238844
+v 0.215533 0.027344 -0.233066
+v 0.223908 0.027344 -0.212845
+v 0.215533 0.027344 -0.192625
+v 0.195312 0.027344 -0.184250
+v 0.175092 0.027344 -0.192625
+v 0.166717 0.027344 -0.212845
+v 0.195312 0.027344 -0.241441
+v 0.175092 0.027344 -0.233066
+v 0.207622 -0.036555 -0.233190
+v 0.213093 -0.039406 -0.220573
+v 0.207816 -0.042116 -0.207842
+v 0.194883 -0.043097 -0.202455
+v 0.181869 -0.041775 -0.207568
+v 0.176397 -0.038924 -0.220185
+v 0.195312 0.062500 -0.241441
+v 0.181674 -0.036214 -0.232916
+v 0.215533 0.062500 -0.233066
+v 0.223908 0.062500 -0.212845
+v 0.215533 0.062500 -0.192625
+v 0.195312 0.062500 -0.184250
+v 0.175092 0.062500 -0.192625
+v 0.166717 0.062500 -0.212845
+v 0.194608 -0.035233 -0.238303
+v 0.175092 0.062500 -0.233066
+v -0.196435 -0.062272 -0.244231
+v -0.183421 -0.063594 -0.239118
+v -0.177950 -0.066445 -0.226501
+v -0.183226 -0.069154 -0.213770
+v -0.196160 -0.070135 -0.208383
+v -0.209174 -0.068813 -0.213496
+v -0.214645 -0.065963 -0.226113
+v -0.209369 -0.063253 -0.238844
+v -0.175092 0.027344 -0.233066
+v -0.166717 0.027344 -0.212845
+v -0.175092 0.027344 -0.192625
+v -0.195312 0.027344 -0.184250
+v -0.215533 0.027344 -0.192625
+v -0.223908 0.027344 -0.212845
+v -0.195312 0.027344 -0.241441
+v -0.215533 0.027344 -0.233066
+v -0.183003 -0.036555 -0.233190
+v -0.177532 -0.039406 -0.220573
+v -0.182809 -0.042116 -0.207842
+v -0.195742 -0.043097 -0.202455
+v -0.208756 -0.041775 -0.207568
+v -0.214228 -0.038924 -0.220185
+v -0.195312 0.062500 -0.241441
+v -0.208951 -0.036214 -0.232916
+v -0.175092 0.062500 -0.233066
+v -0.166717 0.062500 -0.212845
+v -0.175092 0.062500 -0.192625
+v -0.195312 0.062500 -0.184250
+v -0.215533 0.062500 -0.192625
+v -0.223908 0.062500 -0.212845
+v -0.196017 -0.035233 -0.238303
+v -0.215533 0.062500 -0.233066
+vt 0.437500 0.000000
+vt 0.437500 0.500000
+vt 0.375000 0.500000
+vt 0.375000 0.000000
+vt 0.812500 0.562500
+vt 0.187500 0.562500
+vt 0.187500 0.500000
+vt 0.812500 0.500000
+vt 0.562500 0.500000
+vt 0.562500 -0.000000
+vt 0.625000 -0.000000
+vt 0.625000 0.500000
+vt 0.187500 0.000000
+vt 0.812500 0.000000
+vt 0.812500 0.062500
+vt 0.187500 0.062500
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt 0.500000 0.500000
+vt 0.500000 0.000000
+vt 0.000000 0.500000
+vt 0.000000 -0.000000
+vt 0.687500 0.000000
+vt 0.687500 1.000000
+vt 0.625000 1.000000
+vt 0.562500 1.000000
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.375000 1.000000
+vt 0.312500 1.000000
+vt 0.312500 0.000000
+vt 0.544710 0.892060
+vt 0.563230 0.936770
+vt 0.531615 0.936770
+vt 0.522355 0.914415
+vt 0.750000 0.000000
+vt 0.750000 1.000000
+vt 0.250000 1.000000
+vt 0.250000 0.000000
+vt 0.436771 0.936770
+vt 0.455290 0.892060
+vt 0.477645 0.914415
+vt 0.468385 0.936770
+vt 0.500000 0.905156
+vt 0.500000 0.936770
+vt 0.687500 0.312500
+vt 0.750000 0.312500
+vt 0.500000 0.873541
+vt 0.875000 0.312500
+vt 0.875000 1.000000
+vt 0.812500 1.000000
+vt 0.812500 0.312500
+vt 0.455290 0.981480
+vt 0.477645 0.959126
+vt 0.500000 0.968385
+vt 0.544710 0.981480
+vt 0.522355 0.959126
+vt 0.937500 0.312500
+vt 0.937500 1.000000
+vt 1.000000 0.312500
+vt 1.000000 1.000000
+vt 0.500000 0.312500
+vt 0.562500 0.312500
+vt 0.881801 0.892798
+vt 0.881801 0.903548
+vt 0.868102 0.898212
+vt 0.625000 0.312500
+vt 0.907286 0.843075
+vt 0.904783 0.778118
+vt 0.922182 0.779608
+vt 0.918325 0.841397
+vt 0.937500 0.562500
+vt 1.000000 0.562500
+vt 1.000000 0.625000
+vt 0.937500 0.625000
+vt 1.000000 0.687500
+vt 0.937500 0.687500
+vt 1.000000 0.750000
+vt 0.937500 0.750000
+vt 1.000000 0.812500
+vt 0.937500 0.812500
+vt 1.000000 0.875000
+vt 0.937500 0.875000
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.874010 0.911124
+vt 0.937500 0.500000
+vt 0.880494 0.872007
+vt 0.896076 0.887262
+vt 0.874010 0.885170
+vt 0.614904 0.911175
+vt 0.575409 0.911138
+vt 0.576092 0.890715
+vt 0.615333 0.898314
+vt 0.469021 0.557609
+vt 0.449239 0.557630
+vt 0.449304 0.544707
+vt 0.469142 0.533257
+vt 0.812596 0.914007
+vt 0.773171 0.921519
+vt 0.772071 0.900870
+vt 0.811904 0.901004
+vt 0.469142 0.630715
+vt 0.450146 0.619342
+vt 0.449715 0.606387
+vt 0.468330 0.606303
+vt 0.773171 0.880601
+vt 0.812596 0.888240
+vt 0.450146 0.593484
+vt 0.469142 0.581987
+vt 0.963694 0.646698
+vt 0.924458 0.652842
+vt 0.923787 0.630904
+vt 0.963271 0.632883
+vt 0.469142 0.679433
+vt 0.450807 0.668312
+vt 0.450112 0.655266
+vt 0.467833 0.654848
+vt 0.962242 0.817991
+vt 0.923404 0.825559
+vt 0.923302 0.805084
+vt 0.962178 0.805097
+vt 0.450807 0.642460
+vt 0.923404 0.784631
+vt 0.962242 0.792217
+vt 0.924458 0.613250
+vt 0.963694 0.621766
+vt 0.560782 0.720099
+vt 0.542016 0.711761
+vt 0.542016 0.697894
+vt 0.560782 0.693968
+vt 0.674059 0.887136
+vt 0.674059 0.901130
+vt 0.663841 0.911026
+vt 0.649390 0.911026
+vt 0.639172 0.901130
+vt 0.639172 0.887136
+vt 0.649390 0.877240
+vt 0.663841 0.877240
+vt 0.449304 0.570566
+vt 0.643000 0.925967
+vt 0.670231 0.925967
+vt 0.615333 0.924087
+vt 0.576092 0.931643
+vt 0.156265 0.750000
+vt 0.169281 0.718577
+vt 0.184993 0.734289
+vt 0.178485 0.750000
+vt 0.169281 0.781424
+vt 0.184993 0.765712
+vt 0.200704 0.794440
+vt 0.200704 0.772220
+vt 0.232128 0.781424
+vt 0.216416 0.765712
+vt 0.245144 0.750000
+vt 0.222924 0.750000
+vt 0.232128 0.718577
+vt 0.216416 0.734289
+vt 0.200704 0.705561
+vt 0.200704 0.727781
+vt 0.862992 0.911088
+vt 0.855201 0.903460
+vt 0.855201 0.892710
+vt 0.862992 0.885134
+vt 0.858458 0.871935
+vt 0.842876 0.887086
+vt 0.842876 0.908587
+vt 0.858458 0.923842
+vt 0.880494 0.923915
+vt 0.896076 0.908763
+vt 0.798321 0.849484
+vt 0.798321 0.860234
+vt 0.784622 0.854898
+vt 0.000000 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.625000
+vt 0.000000 0.625000
+vt 0.062500 0.687500
+vt 0.000000 0.687500
+vt 0.062500 0.750000
+vt 0.000000 0.750000
+vt 0.062500 0.812500
+vt 0.000000 0.812500
+vt 0.062500 0.875000
+vt 0.000000 0.875000
+vt 0.062500 0.937500
+vt 0.000000 0.937500
+vt 0.790530 0.867810
+vt 0.062500 0.500000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.797014 0.828693
+vt 0.812596 0.843948
+vt 0.790530 0.841856
+vt 0.754856 0.750000
+vt 0.767872 0.718577
+vt 0.783584 0.734289
+vt 0.777076 0.750000
+vt 0.540926 0.911375
+vt 0.501431 0.911338
+vt 0.502113 0.890915
+vt 0.541355 0.898514
+vt 0.469021 0.508880
+vt 0.449239 0.508900
+vt 0.449304 0.495978
+vt 0.469142 0.484528
+vt 0.767872 0.781424
+vt 0.783584 0.765712
+vt 0.746058 0.910957
+vt 0.706632 0.918469
+vt 0.705532 0.897820
+vt 0.745365 0.897954
+vt 0.560782 0.645251
+vt 0.541786 0.633877
+vt 0.541355 0.620923
+vt 0.559970 0.620839
+vt 0.706632 0.877551
+vt 0.746058 0.885190
+vt 0.541786 0.608019
+vt 0.560782 0.596522
+vt 0.963208 0.859007
+vt 0.923973 0.865151
+vt 0.923302 0.843213
+vt 0.962786 0.845192
+vt 0.542447 0.682847
+vt 0.541752 0.669801
+vt 0.559473 0.669383
+vt 0.799295 0.794440
+vt 0.799295 0.772220
+vt 0.962242 0.777062
+vt 0.923302 0.764156
+vt 0.962178 0.764169
+vt 0.542447 0.656996
+vt 0.923404 0.743703
+vt 0.962242 0.751289
+vt 0.923973 0.825559
+vt 0.963208 0.834074
+vt 0.468879 0.705563
+vt 0.450112 0.697225
+vt 0.450112 0.683359
+vt 0.468879 0.679433
+vt 0.930963 0.881830
+vt 0.930963 0.895825
+vt 0.920745 0.905720
+vt 0.906294 0.905720
+vt 0.896076 0.895825
+vt 0.896076 0.881830
+vt 0.906294 0.871935
+vt 0.920745 0.871935
+vt 0.449304 0.521836
+vt 0.899904 0.920661
+vt 0.927135 0.920661
+vt 0.541355 0.924287
+vt 0.502113 0.931842
+vt 0.830719 0.781424
+vt 0.815007 0.765712
+vt 0.843735 0.750000
+vt 0.821515 0.750000
+vt 0.830719 0.718577
+vt 0.815007 0.734289
+vt 0.799295 0.705561
+vt 0.799295 0.727781
+vt 0.200704 0.750000
+vt 0.799295 0.750000
+vt 0.779512 0.867774
+vt 0.771721 0.860146
+vt 0.771721 0.849396
+vt 0.779512 0.841820
+vt 0.774978 0.828620
+vt 0.759396 0.843772
+vt 0.759396 0.865273
+vt 0.774978 0.880528
+vt 0.797014 0.880601
+vt 0.812596 0.865449
+vt 0.521821 0.796177
+vt 0.521112 0.856849
+vt 0.500889 0.856754
+vt 0.508805 0.794838
+vt 0.920813 0.515186
+vt 0.923751 0.577452
+vt 0.903533 0.579022
+vt 0.908060 0.513434
+vt 0.534769 0.795166
+vt 0.541355 0.856754
+vt 0.893595 0.845558
+vt 0.883089 0.777660
+vt 0.862898 0.639967
+vt 0.862913 0.709904
+vt 0.842876 0.708829
+vt 0.849996 0.640580
+vt 0.875960 0.640291
+vt 0.883331 0.708941
+vt 0.883331 0.579325
+vt 0.895211 0.511009
+vt 0.912686 0.487036
+vt 0.899837 0.484611
+vt 0.875677 0.613574
+vt 0.862616 0.613250
+vt 0.849713 0.613863
+vt 0.898571 0.871935
+vt 0.912262 0.869452
+vt 0.535180 0.769032
+vt 0.522231 0.770044
+vt 0.925440 0.611378
+vt 0.905221 0.612948
+vt 0.905903 0.744161
+vt 0.923302 0.745651
+vt 0.521112 0.890915
+vt 0.500889 0.890820
+vt 0.541355 0.890821
+vt 0.925440 0.488788
+vt 0.884209 0.743703
+vt 0.862913 0.743703
+vt 0.842876 0.742627
+vt 0.883331 0.742740
+vt 0.509215 0.768705
+vt 0.885020 0.613250
+vt 0.923302 0.867773
+vt 0.867073 0.843075
+vt 0.864571 0.778118
+vt 0.881969 0.779608
+vt 0.878112 0.841397
+vt 0.596341 0.795977
+vt 0.595632 0.856649
+vt 0.575409 0.856554
+vt 0.583325 0.794638
+vt 0.878705 0.515186
+vt 0.881643 0.577452
+vt 0.861424 0.579022
+vt 0.865952 0.513434
+vt 0.609290 0.794966
+vt 0.615875 0.856555
+vt 0.853382 0.845558
+vt 0.842876 0.777660
+vt 0.903354 0.639967
+vt 0.903368 0.709904
+vt 0.883331 0.708829
+vt 0.890451 0.640580
+vt 0.916415 0.640291
+vt 0.923787 0.708941
+vt 0.841223 0.579325
+vt 0.853103 0.511009
+vt 0.870578 0.487036
+vt 0.857729 0.484611
+vt 0.916132 0.613574
+vt 0.903071 0.613250
+vt 0.890169 0.613863
+vt 0.858358 0.871935
+vt 0.872049 0.869452
+vt 0.609700 0.768832
+vt 0.596752 0.769844
+vt 0.883331 0.611378
+vt 0.863113 0.612948
+vt 0.865690 0.744161
+vt 0.883089 0.745651
+vt 0.595632 0.890715
+vt 0.575409 0.890620
+vt 0.615875 0.890621
+vt 0.883331 0.488788
+vt 0.843996 0.743703
+vt 0.903368 0.743703
+vt 0.883331 0.742627
+vt 0.923787 0.742739
+vt 0.583736 0.768505
+vt 0.842912 0.613250
+vt 0.883089 0.867773
+vt 0.284406 0.527999
+vt 0.279899 0.275405
+vt 0.329616 0.274429
+vt 0.330878 0.527086
+vt 0.810948 0.527086
+vt 0.809685 0.274428
+vt 0.879986 0.275405
+vt 0.876661 0.527999
+vt 0.764476 0.527999
+vt 0.759969 0.275405
+vt 0.450896 0.527086
+vt 0.449633 0.274428
+vt 0.519934 0.275405
+vt 0.516608 0.527999
+vt 0.404424 0.527999
+vt 0.399916 0.275405
+vt 0.690931 0.527086
+vt 0.689668 0.274429
+vt 0.756643 0.527999
+vt 0.644458 0.527999
+vt 0.639951 0.275405
+vt 0.396591 0.527999
+vt 0.339037 0.990143
+vt 0.343056 0.780780
+vt 0.382343 0.781326
+vt 0.384653 0.990777
+vt 0.666829 0.990777
+vt 0.675325 0.781326
+vt 0.703109 0.780780
+vt 0.699089 0.990143
+vt 0.742395 0.781326
+vt 0.744705 0.990777
+vt 0.426794 0.990777
+vt 0.435290 0.781325
+vt 0.463074 0.780780
+vt 0.459054 0.990143
+vt 0.502361 0.781325
+vt 0.504671 0.990777
+vt 0.786846 0.990777
+vt 0.795342 0.781325
+vt 0.823126 0.780780
+vt 0.819106 0.990143
+vt 0.818801 0.000000
+vt 0.873112 0.000755
+vt 0.300322 0.000755
+vt 0.338731 0.000000
+vt 0.780391 0.000755
+vt 0.458749 0.000000
+vt 0.513060 0.000755
+vt 0.420339 0.000755
+vt 0.862413 0.781325
+vt 0.864723 0.990777
+vt 0.698783 0.000000
+vt 0.753095 0.000755
+vt 0.306776 0.990777
+vt 0.315273 0.781326
+vt 0.660374 0.000755
+vt 0.393042 0.000754
+vt 0.158519 0.525459
+vt 0.159996 0.272743
+vt 0.209688 0.275773
+vt 0.204968 0.528291
+vt 0.112056 0.466704
+vt 0.108812 0.719301
+vt 0.038567 0.714058
+vt 0.046395 0.461803
+vt 0.158519 0.468612
+vt 0.158519 0.721343
+vt 0.570913 0.527086
+vt 0.569651 0.274429
+vt 0.636626 0.527999
+vt 0.524441 0.527999
+vt 0.947994 0.462931
+vt 0.950288 0.715563
+vt 0.879986 0.715564
+vt 0.882280 0.462931
+vt 0.994462 0.461372
+vt 1.000000 0.713896
+vt 0.279899 0.282413
+vt 0.270597 0.534498
+vt 0.202156 0.991564
+vt 0.211129 0.782724
+vt 0.250365 0.786435
+vt 0.247714 0.995873
+vt 0.278084 0.789989
+vt 0.279899 1.000000
+vt 0.937946 0.000000
+vt 0.934781 0.209413
+vt 0.895493 0.209414
+vt 0.892328 0.000000
+vt 0.546811 0.990777
+vt 0.555308 0.781326
+vt 0.583091 0.780780
+vt 0.579072 0.990143
+vt 0.622378 0.781326
+vt 0.624688 0.990777
+vt 0.144414 0.004727
+vt 0.132187 0.213549
+vt 0.104409 0.212409
+vt 0.112160 0.003402
+vt 0.094807 0.993028
+vt 0.040538 0.988977
+vt 0.186902 0.000000
+vt 0.225292 0.002341
+vt 0.133209 0.994605
+vt 0.578766 0.000000
+vt 0.633077 0.000755
+vt 0.540357 0.000755
+vt 0.065153 0.209478
+vt 0.066580 0.000000
+vt 0.942294 0.990111
+vt 0.887981 0.990111
+vt 0.169912 0.989598
+vt 0.183359 0.781031
+vt 0.980699 0.988823
+vt 0.279534 0.007471
+vt 0.962562 0.208482
+vt 0.000000 0.456780
+vt 0.037415 0.206475
+vn -0.577300 0.577300 0.577300
+vn -0.577300 0.577300 -0.577300
+vn -0.577300 -0.577300 -0.577300
+vn -0.577300 -0.577300 0.577300
+vn 0.577300 0.577300 -0.577300
+vn 0.577300 -0.577300 -0.577300
+vn 0.577300 0.577300 0.577300
+vn 0.577300 -0.577300 0.577300
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 0.440600 -0.897700
+vn 0.634800 0.440600 -0.634800
+vn 0.707100 0.000000 -0.707100
+vn 0.897700 0.440600 0.000000
+vn 1.000000 0.000000 -0.000000
+vn 0.634800 0.440600 0.634800
+vn 0.707100 0.000000 0.707100
+vn 0.000000 0.440600 0.897700
+vn -0.000000 0.000000 1.000000
+vn -0.634800 0.440600 0.634800
+vn -0.707100 0.000000 0.707100
+vn -0.897700 0.440600 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.380800 0.924600 0.000000
+vn 0.269200 0.924600 0.269200
+vn -0.707100 0.000000 -0.707100
+vn -0.634800 0.440600 -0.634800
+vn -0.269200 0.924600 0.269200
+vn -0.380800 0.924600 0.000000
+vn 0.000000 0.924600 0.380800
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -0.707100 -0.707100
+vn 0.000000 -1.000000 0.000000
+vn -0.269200 0.924600 -0.269200
+vn 0.000000 0.924600 -0.380800
+vn -0.000000 -0.707100 0.707100
+vn 0.269200 0.924600 -0.269200
+vn 0.000000 0.707100 0.707100
+vn 0.000000 -0.377600 0.925900
+vn 0.267000 -0.267000 0.925900
+vn 0.000000 0.707100 -0.707100
+vn -0.997600 -0.068100 0.012800
+vn -0.997300 -0.072000 0.008800
+vn -0.711100 -0.036800 -0.702000
+vn -0.717800 0.040200 -0.695000
+vn 0.000000 -0.885700 0.464200
+vn 0.000000 -0.918800 -0.394700
+vn 0.649700 -0.649700 -0.394700
+vn 0.626300 -0.626300 0.464200
+vn 0.918800 0.000000 -0.394700
+vn 0.885700 0.000000 0.464200
+vn 0.649700 0.649700 -0.394700
+vn 0.626300 0.626300 0.464200
+vn 0.000000 0.918800 -0.394700
+vn 0.000000 0.885700 0.464200
+vn -0.649700 0.649700 -0.394700
+vn -0.626300 0.626300 0.464200
+vn -0.918800 0.000000 -0.394700
+vn -0.885700 0.000000 0.464200
+vn 0.377600 0.000000 0.925900
+vn -0.626300 -0.626300 0.464200
+vn -0.649700 -0.649700 -0.394700
+vn -0.267000 -0.267000 0.925900
+vn 0.961600 -0.274600 -0.000000
+vn 0.995100 -0.098500 0.000000
+vn 0.703700 -0.098500 0.703700
+vn 0.679900 -0.274600 0.679900
+vn 0.000000 0.382600 -0.923900
+vn 0.000000 0.864700 -0.502200
+vn 0.355100 0.864700 -0.355100
+vn 0.653300 0.382600 -0.653300
+vn 0.000000 -0.098500 0.995100
+vn 0.000000 -0.274600 0.961600
+vn 0.502200 0.864700 0.000000
+vn 0.923900 0.382600 0.000000
+vn -0.703700 -0.098500 0.703700
+vn -0.679900 -0.274600 0.679900
+vn 0.355100 0.864700 0.355100
+vn 0.653300 0.382600 0.653300
+vn -0.995100 -0.098500 0.000000
+vn -0.961600 -0.274600 0.000000
+vn 0.000000 0.864700 0.502200
+vn 0.000000 0.382600 0.923900
+vn -0.679900 -0.274600 -0.679900
+vn -0.703700 -0.098500 -0.703700
+vn 0.000000 -0.098500 -0.995100
+vn 0.000000 -0.274600 -0.961600
+vn -0.355100 0.864700 0.355100
+vn -0.653300 0.382600 0.653300
+vn 0.703700 -0.098500 -0.703700
+vn 0.679900 -0.274600 -0.679900
+vn -0.502200 0.864700 0.000000
+vn -0.923900 0.382600 0.000000
+vn -0.355100 0.864700 -0.355100
+vn -0.653300 0.382600 -0.653300
+vn 0.325800 -0.325800 -0.887500
+vn 0.460700 0.000000 -0.887500
+vn 0.325800 0.325800 -0.887500
+vn 0.000000 0.460700 -0.887500
+vn -0.325800 0.325800 -0.887500
+vn -0.460700 0.000000 -0.887500
+vn -0.325800 -0.325800 -0.887500
+vn 0.000000 -0.460700 -0.887500
+vn 0.267000 0.267000 0.925900
+vn 0.000000 0.377600 0.925900
+vn -0.267000 0.267000 0.925900
+vn -0.377600 0.000000 0.925900
+vn -0.005700 0.079400 -0.996800
+vn -0.000800 -0.024000 -0.999700
+vn 0.709600 -0.042300 -0.703300
+vn 0.709000 0.025700 -0.704800
+vn 0.996800 -0.079200 0.005800
+vn 0.996100 -0.088400 -0.002100
+vn -0.692000 -0.181000 0.698800
+vn -0.698300 -0.107200 0.707800
+vn 0.006100 -0.233100 0.972400
+vn 0.002000 -0.123000 0.992400
+vn 0.699800 -0.195100 0.687200
+vn 0.700500 -0.112000 0.704800
+vn 0.999900 -0.013100 -0.010600
+vn 0.712300 -0.160800 0.683200
+vn 0.007500 -0.214300 0.976700
+vn -0.701700 -0.142200 0.698100
+vn -0.999900 0.013100 0.010500
+vn -0.712300 0.160800 -0.683200
+vn -0.007500 0.214300 -0.976700
+vn 0.701700 0.142200 -0.698100
+vn -0.700000 -0.141500 -0.700000
+vn -0.706300 0.046600 -0.706300
+vn 0.000000 0.046600 -0.998900
+vn 0.000000 -0.141500 -0.989900
+vn -0.989900 -0.141500 0.000000
+vn -0.998900 0.046600 0.000000
+vn -0.700000 -0.141500 0.700000
+vn -0.706300 0.046600 0.706300
+vn 0.000000 -0.141500 0.989900
+vn 0.000000 0.046600 0.998900
+vn 0.700000 -0.141500 0.700000
+vn 0.706300 0.046600 0.706300
+vn 0.989900 -0.141500 0.000000
+vn 0.998900 0.046600 0.000000
+vn 0.700000 -0.141500 -0.700000
+vn 0.706300 0.046600 -0.706300
+vn 0.000000 -0.090700 -0.995800
+vn 0.704200 -0.090700 -0.704200
+vn 0.995800 -0.090700 0.000000
+vn 0.704200 -0.090700 0.704200
+vn 0.000000 -0.090700 0.995800
+vn -0.704200 -0.090700 0.704200
+vn -0.995800 -0.090700 0.000000
+vn -0.704200 -0.090700 -0.704200
+g Cylinder_Cylinder_steel
+s 1
+f 5/1/1 6/2/2 2/3/3 1/4/4
+f 6/5/2 7/6/5 3/7/6 2/8/3
+f 7/9/5 8/10/7 4/11/8 3/12/6
+f 8/13/7 5/14/1 1/15/4 4/16/8
+f 1/17/4 2/18/3 3/19/6 4/20/8
+f 8/20/7 7/19/5 6/21/2 5/22/1
+f 9/23/9 10/24/10 12/25/11 11/11/12
+f 11/11/12 12/25/11 14/26/13 13/10/14
+f 13/10/14 14/26/13 16/27/15 15/20/16
+f 15/20/16 16/27/15 18/28/17 17/1/18
+f 17/1/18 18/28/17 20/29/19 19/4/20
+f 19/4/20 20/29/19 22/30/21 21/31/22
+f 16/32/15 14/33/13 25/34/23 43/35/24
+f 23/36/25 24/37/26 10/24/10 9/23/9
+f 21/31/22 22/30/21 24/38/26 23/39/25
+f 22/40/21 20/41/19 45/42/27 46/43/28
+f 44/44/29 43/35/24 26/45/30
+f 27/24/9 28/46/9 30/47/31 29/37/31
+f 20/41/19 18/48/17 44/44/29 45/42/27
+f 45/42/27 44/44/29 26/45/30
+f 29/49/31 30/50/31 32/51/32 31/52/32
+f 10/27/10 24/53/26 47/54/33 48/55/34
+f 46/43/28 45/42/27 26/45/30
+f 31/52/32 32/51/32 34/37/35 33/47/35
+f 14/33/13 12/56/11 49/57/36 25/34/23
+f 47/54/33 46/43/28 26/45/30
+f 33/50/35 34/49/35 36/58/18 35/59/18
+f 12/56/11 10/27/10 48/55/34 49/57/36
+f 48/55/34 47/54/33 26/45/30
+f 35/59/18 36/58/18 38/60/37 37/61/37
+f 25/34/23 49/57/36 26/45/30
+f 49/57/36 48/55/34 26/45/30
+f 37/27/37 38/62/37 40/63/30 39/26/30
+f 115/64/38 116/65/39 114/66/18
+f 41/25/40 42/67/40 28/46/9 27/24/9
+f 39/26/30 40/63/30 42/67/40 41/25/40
+f 24/53/26 22/40/21 46/43/28 47/54/33
+f 43/35/24 25/34/23 26/45/30
+f 251/68/41 243/69/42 245/70/43 253/71/44
+f 18/48/17 16/32/15 43/35/24 44/44/29
+f 50/72/45 51/73/46 53/74/47 52/75/48
+f 52/75/48 53/74/47 55/76/49 54/77/50
+f 54/77/50 55/76/49 57/78/51 56/79/52
+f 56/79/52 57/78/51 59/80/53 58/81/54
+f 58/81/54 59/80/53 61/82/55 60/83/56
+f 60/83/56 61/82/55 63/84/57 62/85/58
+f 116/65/39 117/86/59 114/66/18
+f 64/87/60 65/18/61 51/73/46 50/72/45
+f 62/85/58 63/84/57 65/61/61 64/59/60
+f 64/88/60 50/89/45 115/64/38 122/90/62
+f 104/91/63 76/92/64 77/93/65 106/94/66
+f 92/95/67 68/96/68 69/97/69 111/98/70
+f 106/99/66 77/100/65 78/101/71 108/102/72
+f 111/103/70 69/104/69 70/105/73 109/106/74
+f 108/102/72 78/101/71 79/107/75 110/108/76
+f 109/106/74 70/105/73 71/109/77 107/110/78
+f 110/111/76 79/112/75 80/113/79 112/114/80
+f 107/115/78 71/116/77 72/117/81 105/118/82
+f 113/119/83 81/120/84 67/121/85 98/122/86
+f 105/118/82 72/117/81 73/123/87 103/103/88
+f 98/122/86 67/121/85 66/124/89 102/125/90
+f 112/114/80 80/113/79 81/126/84 113/127/83
+f 103/128/88 73/129/87 74/130/91 100/131/92
+f 69/132/69 68/133/68 75/134/93 74/135/91 73/136/87 72/137/81 71/138/77 70/139/73
+f 99/110/94 75/140/93 68/96/68 92/95/67
+f 100/141/92 74/135/91 75/134/93 99/142/94
+f 102/143/90 66/144/89 76/92/64 104/91/63
+f 55/145/49 53/146/47 179/147/95 194/148/96
+f 57/149/51 55/145/49 194/148/96 192/150/97
+f 59/151/53 57/149/51 192/150/97 190/152/98
+f 61/153/55 59/151/53 190/152/98 188/154/99
+f 63/155/57 61/153/55 188/154/99 186/156/100
+f 65/157/61 63/155/57 186/156/100 184/158/101
+f 51/159/46 65/157/61 184/158/101 180/160/102
+f 117/86/59 118/161/103 114/66/18
+f 118/161/103 119/162/104 114/66/18
+f 119/162/104 120/163/105 114/66/18
+f 120/163/105 121/164/106 114/66/18
+f 121/164/106 122/90/62 114/66/18
+f 122/90/62 115/64/38 114/66/18
+f 62/165/58 64/88/60 122/90/62 121/164/106
+f 60/166/56 62/165/58 121/164/106 120/163/105
+f 58/167/54 60/166/56 120/163/105 119/162/104
+f 56/168/52 58/167/54 119/162/104 118/161/103
+f 54/169/50 56/168/52 118/161/103 117/86/59
+f 52/170/48 54/169/50 117/86/59 116/65/39
+f 50/89/45 52/170/48 116/65/39 115/64/38
+f 214/171/38 215/172/39 213/173/18
+f 131/174/45 132/175/46 134/176/47 133/177/48
+f 133/177/48 134/176/47 136/178/49 135/179/50
+f 135/179/50 136/178/49 138/180/51 137/181/52
+f 137/181/52 138/180/51 140/182/53 139/183/54
+f 139/183/54 140/182/53 142/184/55 141/185/56
+f 141/185/56 142/184/55 144/186/57 143/187/58
+f 215/172/39 216/188/59 213/173/18
+f 145/21/60 146/189/61 132/175/46 131/174/45
+f 143/187/58 144/186/57 146/190/61 145/191/60
+f 145/192/60 131/193/45 214/171/38 221/194/62
+f 136/195/49 134/196/47 155/197/95 178/198/96
+f 202/199/63 159/200/64 160/201/65 204/202/66
+f 183/203/67 149/204/68 150/205/69 209/206/70
+f 138/207/51 136/195/49 178/198/96 176/208/97
+f 204/209/66 160/210/65 161/211/71 206/212/72
+f 209/213/70 150/214/69 151/215/73 207/216/74
+f 206/212/72 161/211/71 162/217/75 208/218/76
+f 207/216/74 151/215/73 152/219/77 205/220/78
+f 208/221/76 162/222/75 163/223/79 210/224/80
+f 205/131/78 152/225/77 153/226/81 203/227/82
+f 140/228/53 138/207/51 176/208/97 174/229/98
+f 212/230/83 164/124/84 148/231/85 195/232/86
+f 203/227/82 153/226/81 154/233/87 201/213/88
+f 195/232/86 148/231/85 147/234/89 200/235/90
+f 210/224/80 163/223/79 164/236/84 212/237/83
+f 201/238/88 154/239/87 156/240/91 198/241/92
+f 150/242/69 149/243/68 158/244/93 156/245/91 154/246/87 153/247/81 152/248/77 151/249/73
+f 197/98/94 158/250/93 149/204/68 183/203/67
+f 198/251/92 156/245/91 158/244/93 197/252/94
+f 200/253/90 147/254/89 159/200/64 202/199/63
+f 142/255/55 140/228/53 174/229/98 172/256/99
+f 144/257/57 142/255/55 172/256/99 170/258/100
+f 146/259/61 144/257/57 170/258/100 168/260/101
+f 132/261/46 146/259/61 168/260/101 157/262/102
+f 134/196/47 132/261/46 157/262/102 155/197/95
+f 194/148/96 179/147/95 196/263/9
+f 192/150/97 194/148/96 196/263/9
+f 190/152/98 192/150/97 196/263/9
+f 188/154/99 190/152/98 196/263/9
+f 186/156/100 188/154/99 196/263/9
+f 184/158/101 186/156/100 196/263/9
+f 180/160/102 184/158/101 196/263/9
+f 178/198/96 155/197/95 211/264/9
+f 176/208/97 178/198/96 211/264/9
+f 174/229/98 176/208/97 211/264/9
+f 172/256/99 174/229/98 211/264/9
+f 170/258/100 172/256/99 211/264/9
+f 168/260/101 170/258/100 211/264/9
+f 157/262/102 168/260/101 211/264/9
+f 155/197/95 157/262/102 211/264/9
+f 179/147/95 180/160/102 196/263/9
+f 53/146/47 51/159/46 180/160/102 179/147/95
+f 216/188/59 217/265/103 213/173/18
+f 217/265/103 218/266/104 213/173/18
+f 218/266/104 219/267/105 213/173/18
+f 219/267/105 220/268/106 213/173/18
+f 220/268/106 221/194/62 213/173/18
+f 221/194/62 214/171/38 213/173/18
+f 143/269/58 145/192/60 221/194/62 220/268/106
+f 141/270/56 143/269/58 220/268/106 219/267/105
+f 139/271/54 141/270/56 219/267/105 218/266/104
+f 137/272/52 139/271/54 218/266/104 217/265/103
+f 135/273/50 137/272/52 217/265/103 216/188/59
+f 133/274/48 135/273/50 216/188/59 215/172/39
+f 131/193/45 133/274/48 215/172/39 214/171/38
+f 260/275/107 244/276/108 238/277/109 246/278/110
+f 246/279/110 238/280/109 239/281/111 247/282/112
+f 253/283/44 245/284/43 244/276/108 260/275/107
+f 250/285/113 242/286/114 243/69/42 251/68/41
+f 249/287/115 241/288/116 242/289/114 250/290/113
+f 248/291/117 240/292/118 241/288/116 249/287/115
+f 247/282/112 239/281/111 240/293/118 248/294/117
+f 232/295/119 247/282/112 248/294/117 233/296/120
+f 233/297/120 248/291/117 249/287/115 234/298/121
+f 234/298/121 249/287/115 250/290/113 235/299/122
+f 235/300/122 250/285/113 251/68/41 236/301/123
+f 237/302/124 253/283/44 260/275/107 230/303/125
+f 238/280/109 254/304/12 255/305/14 239/281/111
+f 243/69/42 259/306/22 261/307/25 245/70/43
+f 244/276/108 252/308/9 254/309/12 238/277/109
+f 245/284/43 261/310/25 252/308/9 244/276/108
+f 231/311/126 246/279/110 247/282/112 232/295/119
+f 242/286/114 258/312/20 259/306/22 243/69/42
+f 241/288/116 257/313/18 258/314/20 242/289/114
+f 240/292/118 256/315/16 257/313/18 241/288/116
+f 230/303/125 260/275/107 246/278/110 231/316/126
+f 239/281/111 255/305/14 256/317/16 240/293/118
+f 236/301/123 251/68/41 253/71/44 237/318/124
+f 283/319/41 275/320/42 277/321/43 285/322/44
+f 292/323/107 276/324/108 270/325/109 278/326/110
+f 278/327/110 270/328/109 271/329/111 279/330/112
+f 285/331/44 277/332/43 276/324/108 292/323/107
+f 282/333/113 274/334/114 275/320/42 283/319/41
+f 281/335/115 273/336/116 274/337/114 282/338/113
+f 280/339/117 272/340/118 273/336/116 281/335/115
+f 279/330/112 271/329/111 272/341/118 280/342/117
+f 264/343/119 279/330/112 280/342/117 265/344/120
+f 265/345/120 280/339/117 281/335/115 266/346/121
+f 266/346/121 281/335/115 282/338/113 267/347/122
+f 267/348/122 282/333/113 283/319/41 268/349/123
+f 269/350/124 285/331/44 292/323/107 262/351/125
+f 270/328/109 286/352/12 287/353/14 271/329/111
+f 275/320/42 291/354/22 293/355/25 277/321/43
+f 276/324/108 284/356/9 286/357/12 270/325/109
+f 277/332/43 293/358/25 284/356/9 276/324/108
+f 263/359/126 278/327/110 279/330/112 264/343/119
+f 274/334/114 290/360/20 291/354/22 275/320/42
+f 273/336/116 289/361/18 290/362/20 274/337/114
+f 272/340/118 288/363/16 289/361/18 273/336/116
+f 262/351/125 292/323/107 278/326/110 263/364/126
+f 271/329/111 287/353/14 288/365/16 272/341/118
+f 268/349/123 283/319/41 285/322/44 269/366/124
+g Cylinder_Cylinder_plastic
+f 124/367/127 82/368/128 84/369/129 123/370/130
+f 125/371/131 83/372/132 82/373/128 124/374/127
+f 126/375/133 85/376/134 83/372/132 125/371/131
+f 127/377/135 86/378/136 85/379/134 126/380/133
+f 128/381/137 87/382/138 86/378/136 127/377/135
+f 129/383/139 88/384/140 87/376/138 128/385/137
+f 130/386/141 89/387/142 88/384/140 129/383/139
+f 123/370/130 84/369/129 89/382/142 130/388/141
+f 67/389/85 101/390/143 97/391/144 66/392/89
+f 66/393/89 97/394/144 96/395/145 76/396/64
+f 76/396/64 96/395/145 95/397/146 77/398/65
+f 77/399/65 95/400/146 94/401/147 78/402/71
+f 78/402/71 94/401/147 93/403/148 79/404/75
+f 79/405/75 93/406/148 91/407/149 80/408/79
+f 83/372/132 100/409/92 99/410/94 82/373/128
+f 82/368/128 99/411/94 92/412/67 84/369/129
+f 85/376/134 103/413/88 100/409/92 83/372/132
+f 86/378/136 105/414/82 103/415/88 85/379/134
+f 87/382/138 107/416/78 105/414/82 86/378/136
+f 80/408/79 91/407/149 90/417/150 81/418/84
+f 88/384/140 109/419/74 107/420/78 87/376/138
+f 81/421/84 90/422/150 101/390/143 67/389/85
+f 89/387/142 111/423/70 109/419/74 88/384/140
+f 84/369/129 92/412/67 111/424/70 89/382/142
+f 101/390/143 123/370/130 130/388/141 97/391/144
+f 97/394/144 130/386/141 129/383/139 96/395/145
+f 96/395/145 129/383/139 128/385/137 95/397/146
+f 95/400/146 128/381/137 127/377/135 94/401/147
+f 94/401/147 127/377/135 126/380/133 93/403/148
+f 93/406/148 126/375/133 125/371/131 91/407/149
+f 91/407/149 125/371/131 124/374/127 90/417/150
+f 90/422/150 124/367/127 123/370/130 101/390/143
+f 223/425/127 165/426/128 167/427/129 222/428/130
+f 224/429/131 166/430/132 165/431/128 223/432/127
+f 225/433/133 169/434/134 166/430/132 224/429/131
+f 226/435/135 171/436/136 169/387/134 225/437/133
+f 227/438/137 173/379/138 171/436/136 226/435/135
+f 228/439/139 175/440/140 173/441/138 227/442/137
+f 229/443/141 177/444/142 175/440/140 228/439/139
+f 222/428/130 167/427/129 177/445/142 229/446/141
+f 148/447/85 199/448/143 193/449/144 147/450/89
+f 147/450/89 193/449/144 191/451/145 159/452/64
+f 159/453/64 191/454/145 189/455/146 160/456/65
+f 160/457/65 189/458/146 187/459/147 161/460/71
+f 161/460/71 187/459/147 185/461/148 162/462/75
+f 162/463/75 185/464/148 182/465/149 163/466/79
+f 166/430/132 198/467/92 197/468/94 165/431/128
+f 165/426/128 197/469/94 183/470/67 167/427/129
+f 169/434/134 201/471/88 198/467/92 166/430/132
+f 171/436/136 203/472/82 201/473/88 169/387/134
+f 173/379/138 205/474/78 203/472/82 171/436/136
+f 163/466/79 182/465/149 181/475/150 164/476/84
+f 175/440/140 207/477/74 205/478/78 173/441/138
+f 164/479/84 181/480/150 199/448/143 148/447/85
+f 177/444/142 209/481/70 207/477/74 175/440/140
+f 167/427/129 183/470/67 209/482/70 177/445/142
+f 199/448/143 222/428/130 229/446/141 193/449/144
+f 193/483/144 229/443/141 228/439/139 191/454/145
+f 191/454/145 228/439/139 227/442/137 189/455/146
+f 189/458/146 227/438/137 226/435/135 187/459/147
+f 187/459/147 226/435/135 225/437/133 185/461/148
+f 185/464/148 225/433/133 224/429/131 182/465/149
+f 182/465/149 224/429/131 223/432/127 181/475/150
+f 181/475/150 223/432/127 222/484/130 199/485/143
diff --git a/homedecor_modpack/homedecor/models/homedecor_bench_large_1.obj b/homedecor_modpack/homedecor/models/homedecor_bench_large_1.obj
new file mode 100644
index 0000000..a5719c9
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bench_large_1.obj
@@ -0,0 +1,354 @@
+# Blender v2.73 (sub 0) OBJ File: 'garden-bench1.blend'
+# www.blender.org
+o wood_planks_wood_planks_None
+v 0.499999 0.083461 0.325602
+v 0.499999 0.203704 0.347882
+v 0.499999 0.199117 0.374628
+v 0.499999 0.078873 0.352348
+v -1.500000 0.203704 0.347882
+v -1.500000 0.199117 0.374628
+v -1.500000 0.083461 0.325602
+v -1.500000 0.078873 0.352348
+v 0.499999 0.229372 0.352638
+v 0.499999 0.349616 0.374918
+v 0.499999 0.345028 0.401664
+v 0.499999 0.224784 0.379384
+v -1.500000 0.349616 0.374918
+v -1.500000 0.345028 0.401664
+v -1.500000 0.229372 0.352638
+v -1.500000 0.224784 0.379384
+v 0.499999 0.378036 0.380184
+v 0.499999 0.498279 0.402464
+v 0.499999 0.493692 0.429210
+v 0.499999 0.373448 0.406930
+v -1.500000 0.498279 0.402464
+v -1.500000 0.493692 0.429210
+v -1.500000 0.378036 0.380184
+v -1.500000 0.373448 0.406930
+v 0.499999 -0.013063 0.162452
+v 0.499999 -0.013063 0.289398
+v 0.499999 -0.039202 0.289398
+v 0.499999 -0.039202 0.162452
+v -1.500000 -0.013063 0.289398
+v -1.500000 -0.039202 0.289398
+v -1.500000 -0.013063 0.162452
+v -1.500000 -0.039202 0.162452
+v 0.499999 -0.013063 0.005502
+v 0.499999 -0.013063 0.132448
+v 0.499999 -0.039202 0.132448
+v 0.499999 -0.039202 0.005502
+v -1.500000 -0.013063 0.132448
+v -1.500000 -0.039202 0.132448
+v -1.500000 -0.013063 0.005502
+v -1.500000 -0.039202 0.005502
+v 0.499999 -0.013063 -0.148542
+v 0.499999 -0.013063 -0.021596
+v 0.499999 -0.039202 -0.021596
+v 0.499999 -0.039202 -0.148542
+v -1.500000 -0.013063 -0.021596
+v -1.500000 -0.039202 -0.021596
+v -1.500000 -0.013063 -0.148542
+v -1.500000 -0.039202 -0.148542
+v 0.319746 -0.038350 0.336909
+v 0.319746 -0.004507 0.336909
+v 0.371221 -0.004507 0.336909
+v 0.371221 -0.038350 0.336909
+v 0.319746 0.477133 0.426074
+v 0.371221 0.477133 0.426074
+v 0.319746 0.477133 0.460000
+v 0.371221 0.477133 0.460000
+v 0.319746 -0.499811 0.459999
+v 0.371221 -0.499811 0.459999
+v 0.371221 -0.117922 0.002852
+v 0.371221 -0.117922 0.336909
+v 0.319746 -0.117922 -0.098451
+v 0.319746 -0.038350 -0.098451
+v 0.371221 -0.038350 -0.098451
+v 0.371221 -0.117922 -0.098451
+v 0.371221 -0.499999 -0.186412
+v 0.319746 -0.499999 -0.186413
+v 0.371221 -0.499811 0.336909
+v -1.375376 -0.117922 -0.098451
+v -1.323900 -0.117922 -0.098451
+v -1.323900 -0.499999 -0.186412
+v -1.375376 -0.499999 -0.186413
+v -1.323900 -0.038350 -0.098451
+v -1.375376 -0.038350 -0.098451
+v -1.323900 -0.499811 0.459999
+v -1.323900 -0.499811 0.336909
+v -1.323900 -0.117922 0.336909
+v -1.323900 -0.117922 0.002852
+v -1.323900 -0.038350 0.336909
+v -1.323900 0.477133 0.460000
+v -1.375376 0.477133 0.460000
+v -1.375376 -0.499811 0.459999
+v -1.375376 -0.117922 0.002852
+v -1.375376 -0.499999 -0.085109
+v -1.323900 -0.499999 -0.085109
+v -1.375376 -0.117922 0.336909
+v -1.323900 -0.004507 0.336909
+v -1.375376 -0.004507 0.336909
+v -1.375376 0.477133 0.426074
+v -1.323900 0.477133 0.426074
+v -1.375376 -0.038350 0.336909
+v -1.375376 -0.499811 0.336909
+v 0.319746 -0.499811 0.336909
+v 0.319746 -0.117922 0.336909
+v 0.319746 -0.117922 0.002852
+v 0.319746 -0.499999 -0.085109
+v 0.371221 -0.499999 -0.085109
+v -0.500002 0.083461 0.325602
+v -0.500002 -0.013063 0.005502
+v -0.500002 0.498279 0.402464
+v -0.500002 0.493692 0.429210
+v -0.500002 -0.039202 -0.148542
+v -0.500002 0.373448 0.406930
+v -0.500002 -0.013063 0.289398
+v -0.500002 -0.039202 0.289398
+v -0.500002 -0.039202 0.162452
+v -0.500002 0.349616 0.374918
+v -0.500002 -0.013063 -0.021596
+v -0.500002 0.345028 0.401664
+v -0.500002 -0.039202 0.005502
+v -0.500002 0.224784 0.379384
+v -0.500002 0.378036 0.380184
+v -0.500002 -0.013063 0.162452
+v -0.500002 -0.039202 -0.021596
+v -0.500002 0.203704 0.347882
+v -0.500002 -0.013063 0.132448
+v -0.500002 0.199117 0.374628
+v -0.500002 0.078873 0.352348
+v -0.500002 0.229372 0.352638
+v -0.500002 -0.013063 -0.148542
+v -0.500002 -0.039202 0.132448
+vt 0.062500 0.125000
+vt 0.062500 0.250000
+vt 0.000000 0.250000
+vt 0.000000 0.125000
+vt 1.000000 0.812500
+vt -0.000000 0.812500
+vt -0.000000 0.750000
+vt 1.000000 0.750000
+vt 0.937500 0.250000
+vt 0.937500 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 1.000000 0.875000
+vt -0.000000 0.875000
+vt 1.000000 -0.000000
+vt 0.000000 -0.000000
+vt 0.000000 0.625000
+vt 0.000000 0.500000
+vt 1.000000 0.500000
+vt 1.000000 0.625000
+vt 0.062500 0.312500
+vt 0.062500 0.437500
+vt 0.000000 0.437500
+vt 0.000000 0.312500
+vt -0.000000 0.687500
+vt 1.000000 0.687500
+vt 0.937500 0.437500
+vt 0.937500 0.312500
+vt 1.000000 0.312500
+vt 1.000000 0.437500
+vt 1.000000 0.937500
+vt -0.000000 0.937500
+vt 1.000000 0.187500
+vt 0.000000 0.187500
+vt 0.062500 0.500000
+vt 0.062500 0.625000
+vt 0.937500 0.625000
+vt 0.937500 0.500000
+vt 1.000000 1.000000
+vt -0.000000 1.000000
+vt 1.000000 0.375000
+vt 0.000000 0.375000
+vt 0.250000 0.062500
+vt 0.125000 0.062500
+vt 0.125000 0.000000
+vt 0.250000 0.000000
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 0.875000 0.062500
+vt 0.750000 0.062500
+vt 0.750000 0.000000
+vt 0.875000 0.000000
+vt 0.437500 0.062500
+vt 0.312500 0.062500
+vt 0.312500 0.000000
+vt 0.437500 0.000000
+vt 0.687500 0.062500
+vt 0.562500 0.062500
+vt 0.562500 0.000000
+vt 0.687500 0.000000
+vt 0.625000 0.062500
+vt 0.500000 0.062500
+vt 0.500000 0.000000
+vt 0.625000 0.000000
+vt 0.375000 0.062500
+vt 0.375000 0.000000
+vt 1.000000 0.562500
+vt -0.000000 0.562500
+vt 0.125000 0.375000
+vt 0.125000 0.437500
+vt 0.062500 0.375000
+vt 0.125000 1.000000
+vt 0.062500 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.937500
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.062500 0.000000
+vt 0.000000 0.997974
+vt 0.000001 0.000192
+vt 0.125717 0.000192
+vt 0.125717 0.390227
+vt 0.125717 0.471496
+vt 0.125717 0.506061
+vt 0.034650 0.997974
+vt 0.937500 0.375000
+vt 0.875000 0.375000
+vt 0.937500 0.000000
+vt 0.937500 0.687500
+vt 0.875000 0.687500
+vt 0.875000 0.250000
+vt 0.875000 0.437500
+vt 0.874284 0.390227
+vt 0.874284 0.471496
+vt 0.429638 0.471496
+vt 0.429638 0.390227
+vt 0.533101 0.390227
+vt 0.125000 0.125000
+vt 0.062500 0.937500
+vt 0.125000 0.937500
+vt 0.875000 0.125000
+vt 0.570363 0.390227
+vt 0.466899 0.390227
+vt 0.556736 0.000000
+vt 0.660201 0.000000
+vt 0.443264 0.000000
+vt 0.339800 0.000000
+vt 0.874284 0.506061
+vt 0.874284 0.000192
+vt 0.999999 0.000192
+vt 1.000000 0.997974
+vt 0.965350 0.997974
+vt 0.875000 0.500000
+vt 0.570363 0.471496
+vt 0.125000 0.500000
+vt 0.125000 0.250000
+vt 0.125000 0.687500
+vt 0.062500 0.687500
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.985600 0.169000
+vn -1.000000 -0.000000 0.000000
+vn 0.000000 -0.985600 -0.169100
+vn 0.000000 -0.182200 0.983300
+vn 0.000000 0.182200 -0.983300
+vn 0.000000 0.985600 0.169100
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.182000 -0.983300
+vn 0.000000 0.224400 -0.974500
+vn 0.000000 -0.224300 0.974500
+g wood_planks_wood_planks_None_wood_planks_wood_planks_None_seat
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 114/5/2 5/6/2 6/7/2 116/8/2
+f 5/9/3 7/10/3 8/11/3 6/12/3
+f 97/6/4 1/5/4 4/13/4 117/14/4
+f 117/15/5 116/11/5 6/4/5 8/16/5
+f 114/17/6 97/18/6 7/19/6 5/20/6
+f 9/21/1 10/22/1 11/23/1 12/24/1
+f 106/8/7 13/7/7 14/25/7 108/26/7
+f 13/27/3 15/28/3 16/29/3 14/30/3
+f 118/14/4 9/13/4 12/31/4 110/32/4
+f 110/33/5 108/29/5 14/24/5 16/34/5
+f 118/26/6 106/5/6 10/6/6 9/25/6
+f 17/35/1 18/36/1 19/17/1 20/18/1
+f 99/26/2 21/25/2 22/17/2 100/20/2
+f 21/37/3 23/38/3 24/19/3 22/20/3
+f 111/32/4 17/31/4 20/39/4 102/40/4
+f 102/41/5 100/19/5 22/18/5 24/42/5
+f 111/13/6 99/39/6 18/40/6 17/14/6
+f 25/43/1 26/44/1 27/45/1 28/46/1
+f 103/11/8 29/4/8 30/47/8 104/48/8
+f 29/49/3 31/50/3 32/51/3 30/52/3
+f 112/48/9 25/47/9 28/16/9 105/15/9
+f 105/13/10 104/39/10 30/40/10 32/14/10
+f 112/4/11 103/16/11 26/15/11 25/11/11
+f 33/53/1 34/54/1 35/55/1 36/56/1
+f 115/11/8 37/4/8 38/47/8 120/48/8
+f 37/57/3 39/58/3 40/59/3 38/60/3
+f 98/48/9 33/47/9 36/16/9 109/15/9
+f 109/26/10 120/5/10 38/6/10 40/25/10
+f 98/24/11 115/34/11 34/33/11 33/29/11
+f 41/61/1 42/62/1 43/63/1 44/64/1
+f 107/11/8 45/4/8 46/47/8 113/48/8
+f 45/62/3 47/65/3 48/66/3 46/63/3
+f 119/48/9 41/47/9 44/16/9 101/15/9
+f 101/30/10 113/67/10 46/68/10 48/23/10
+f 119/18/11 107/42/11 42/41/11 41/19/11
+f 47/18/11 45/42/11 107/41/11 119/19/11
+f 44/19/10 43/20/10 113/17/10 101/18/10
+f 47/48/9 119/47/9 101/16/9 48/15/9
+f 42/11/8 107/4/8 113/47/8 43/48/8
+f 39/24/11 37/34/11 115/33/11 98/29/11
+f 36/26/10 35/5/10 120/6/10 109/25/10
+f 39/48/9 98/47/9 109/16/9 40/15/9
+f 34/11/8 115/4/8 120/47/8 35/48/8
+f 31/4/11 29/16/11 103/15/11 112/11/11
+f 28/13/10 27/39/10 104/40/10 105/14/10
+f 31/48/9 112/47/9 105/16/9 32/15/9
+f 26/11/8 103/4/8 104/47/8 27/48/8
+f 23/13/6 21/39/6 99/40/6 111/14/6
+f 20/41/5 19/19/5 100/18/5 102/42/5
+f 23/32/4 111/31/4 102/39/4 24/40/4
+f 18/26/2 99/25/2 100/17/2 19/20/2
+f 15/26/6 13/5/6 106/6/6 118/25/6
+f 12/33/5 11/29/5 108/24/5 110/34/5
+f 15/14/4 118/13/4 110/31/4 16/32/4
+f 10/8/7 106/7/7 108/25/7 11/26/7
+f 2/17/6 1/18/6 97/19/6 114/20/6
+f 4/15/5 3/11/5 116/4/5 117/16/5
+f 7/6/4 97/5/4 117/13/4 8/14/4
+f 2/5/2 114/6/2 116/7/2 3/8/2
+g wood_planks_wood_planks_None_wood_planks_wood_planks_None_legs
+f 49/69/9 50/70/9 51/22/9 52/71/9
+f 51/22/12 50/70/12 53/72/12 54/73/12
+f 53/74/11 55/75/11 56/76/11 54/77/11
+f 61/69/9 62/70/9 63/22/9 64/71/9
+f 61/69/13 64/71/13 65/78/13 66/45/13
+f 79/79/1 74/80/1 75/81/1 76/82/1 78/83/1 86/84/1 89/85/1
+f 68/86/13 69/87/13 70/52/13 71/88/13
+f 52/9/11 63/89/11 62/90/11 49/91/11
+f 68/86/9 73/27/9 72/92/9 69/87/9
+f 93/93/3 49/94/3 62/95/3 61/96/3 94/97/3
+f 82/22/14 83/78/14 84/45/14 77/70/14
+f 85/71/10 82/1/10 77/98/10 76/69/10
+f 86/92/12 87/27/12 88/77/12 89/74/12
+f 90/86/9 87/27/9 86/92/9 78/87/9
+f 88/73/11 80/99/11 79/100/11 89/72/11
+f 76/87/9 75/52/9 91/88/9 85/86/9
+f 60/71/9 67/78/9 92/45/9 93/69/9
+f 93/87/10 94/101/10 59/10/10 60/86/10
+f 94/92/14 95/52/14 96/88/14 59/27/14
+f 64/102/1 59/103/1 96/104/1 65/105/1
+f 95/106/3 94/97/3 61/96/3 66/107/3
+f 85/93/3 90/94/3 73/95/3 68/96/3 82/97/3
+f 50/108/3 49/94/3 93/93/3 92/109/3 57/110/3 55/111/3 53/112/3
+f 58/80/1 67/81/1 60/82/1 52/83/1 51/84/1 54/85/1 56/79/1
+f 65/88/10 96/10/10 95/101/10 66/52/10
+f 58/38/10 57/113/10 92/87/10 67/86/10
+f 80/111/3 88/112/3 87/108/3 90/94/3 85/93/3 91/109/3 81/110/3
+f 69/102/1 77/103/1 84/104/1 70/105/1
+f 83/106/3 82/97/3 68/96/3 71/107/3
+f 59/103/1 64/102/1 63/114/1 52/83/1 60/82/1
+f 70/45/10 84/98/10 83/1/10 71/78/10
+f 74/115/10 81/35/10 91/71/10 75/69/10
+f 81/78/8 74/45/8 79/72/8 80/73/8
+f 55/74/8 57/52/8 58/88/8 56/77/8
+f 77/103/1 69/102/1 72/114/1 78/83/1 76/82/1
+f 90/2/11 78/116/11 72/117/11 73/118/11
diff --git a/homedecor_modpack/homedecor/models/homedecor_bench_large_2.obj b/homedecor_modpack/homedecor/models/homedecor_bench_large_2.obj
new file mode 100644
index 0000000..505f167
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bench_large_2.obj
@@ -0,0 +1,646 @@
+# Blender v2.73 (sub 0) OBJ File: 'garden-bench2.blend'
+# www.blender.org
+o Cylinder
+v 0.372863 -0.500000 0.359375
+v 0.372863 -0.500000 0.500000
+v -1.375000 0.476813 0.459024
+v -1.500000 0.476813 0.459024
+v -1.500000 0.499994 0.336183
+v -1.375000 0.499994 0.336183
+v 0.375000 -0.247623 -0.105628
+v -1.375000 -0.247623 -0.105628
+v -1.375000 -0.242196 -0.136403
+v 0.375000 -0.242196 -0.136403
+v 0.375000 -0.124522 -0.083922
+v -1.375000 -0.124522 -0.083922
+v -1.375000 -0.124488 -0.115648
+v 0.375000 -0.124488 -0.115648
+v -1.502137 -0.500000 0.359375
+v -1.502137 -0.500000 0.500000
+v 0.500000 0.476813 0.459024
+v 0.375000 0.476813 0.459024
+v 0.375000 0.499994 0.336183
+v 0.500000 0.499994 0.336183
+v -1.373516 -0.499999 -0.113281
+v -1.502137 -0.499999 -0.113281
+v -1.502137 -0.499999 -0.238281
+v -1.373516 -0.499999 -0.238281
+v -1.373516 0.049124 -0.002615
+v -1.502137 0.049124 -0.002615
+v -1.502137 0.060009 -0.125500
+v -1.373516 0.060009 -0.125500
+v 0.501484 -0.499999 -0.113281
+v 0.372863 -0.499999 -0.113281
+v 0.372863 -0.499999 -0.238281
+v 0.501484 -0.499999 -0.238281
+v 0.501484 0.049124 -0.002615
+v 0.372863 0.049124 -0.002615
+v 0.372863 0.060009 -0.125500
+v 0.501484 0.060009 -0.125500
+v 0.406250 -0.406250 0.156250
+v -1.406250 -0.406250 0.156250
+v -1.406250 -0.406250 0.093750
+v 0.406250 -0.406250 0.093750
+v 0.406250 -0.343750 0.156250
+v -1.406250 -0.343750 0.156250
+v -1.406250 -0.343750 0.093750
+v 0.406250 -0.343750 0.093750
+v 0.468750 -0.437500 0.320602
+v 0.406250 -0.437500 0.320602
+v 0.406250 -0.437500 -0.100955
+v 0.468750 -0.437500 -0.100955
+v 0.468750 -0.312500 0.242477
+v 0.406250 -0.312500 0.242477
+v 0.406250 -0.312500 -0.075637
+v 0.468750 -0.312500 -0.075637
+v -1.406250 -0.437500 0.320602
+v -1.468750 -0.437500 0.320602
+v -1.468750 -0.437500 -0.100955
+v -1.406250 -0.437500 -0.100955
+v -1.406250 -0.312500 0.242477
+v -1.468750 -0.312500 0.242477
+v -1.468750 -0.312500 -0.075637
+v -1.406250 -0.312500 -0.075637
+v 0.500000 -0.126003 0.225803
+v 0.375000 -0.126003 0.225803
+v -1.375000 -0.126003 0.225803
+v -1.500000 -0.126003 0.225803
+v 0.515625 0.026734 0.252770
+v 0.359375 0.026734 0.252770
+v 0.359375 0.068142 -0.220522
+v 0.515625 0.068142 -0.220522
+v 0.515625 0.088519 0.263675
+v 0.359375 0.088519 0.263675
+v 0.359375 0.130404 -0.215075
+v 0.515625 0.130404 -0.215075
+v -1.359375 0.026734 0.252770
+v -1.515625 0.026734 0.252769
+v -1.515625 0.068142 -0.220522
+v -1.359375 0.068142 -0.220522
+v -1.359375 0.088519 0.263675
+v -1.515625 0.088519 0.263675
+v -1.515625 0.130404 -0.215075
+v -1.359375 0.130404 -0.215075
+v 0.375000 0.304466 0.428635
+v -1.375000 0.304466 0.428634
+v -1.375000 0.315319 0.367084
+v 0.375000 0.315319 0.367084
+v 0.375000 0.427567 0.450341
+v -1.375000 0.427567 0.450340
+v -1.375000 0.438420 0.388790
+v 0.375000 0.438420 0.388790
+v 0.375000 -0.064837 0.363516
+v -1.375000 -0.064837 0.363516
+v -1.375000 -0.053984 0.301966
+v 0.375000 -0.053984 0.301966
+v 0.375000 0.058264 0.385222
+v -1.375000 0.058264 0.385222
+v -1.375000 0.069117 0.323672
+v 0.375000 0.069117 0.323672
+v 0.312500 0.058264 0.385222
+v 0.250000 0.058264 0.385222
+v 0.250000 0.069117 0.323672
+v 0.312500 0.069117 0.323672
+v 0.312500 0.304466 0.428635
+v 0.250000 0.304466 0.428635
+v 0.250000 0.315319 0.367084
+v 0.312500 0.315319 0.367084
+v 0.187500 0.058264 0.385222
+v 0.125000 0.058264 0.385222
+v 0.125000 0.069117 0.323672
+v 0.187500 0.069117 0.323672
+v 0.187500 0.304466 0.428635
+v 0.125000 0.304466 0.428635
+v 0.125000 0.315319 0.367084
+v 0.187500 0.315319 0.367084
+v 0.062500 0.058264 0.385222
+v 0.000000 0.058264 0.385222
+v 0.000000 0.069117 0.323672
+v 0.062500 0.069117 0.323672
+v 0.062500 0.304466 0.428635
+v 0.000000 0.304466 0.428635
+v 0.000000 0.315319 0.367084
+v 0.062500 0.315319 0.367084
+v -0.062500 0.058264 0.385222
+v -0.125000 0.058264 0.385222
+v -0.125000 0.069117 0.323672
+v -0.062500 0.069117 0.323672
+v -0.062500 0.304466 0.428634
+v -0.125000 0.304466 0.428634
+v -0.125000 0.315319 0.367084
+v -0.062500 0.315319 0.367084
+v -0.187500 0.058264 0.385222
+v -0.250000 0.058264 0.385222
+v -0.250000 0.069117 0.323672
+v -0.187500 0.069117 0.323672
+v -0.187500 0.304466 0.428634
+v -0.250000 0.304466 0.428634
+v -0.250000 0.315319 0.367084
+v -0.187500 0.315319 0.367084
+v -0.312500 0.058264 0.385222
+v -0.375000 0.058264 0.385222
+v -0.375000 0.069117 0.323672
+v -0.312500 0.069117 0.323672
+v -0.312500 0.304466 0.428634
+v -0.375000 0.304466 0.428634
+v -0.375000 0.315319 0.367084
+v -0.312500 0.315319 0.367084
+v -0.437500 0.058264 0.385222
+v -0.500000 0.058264 0.385222
+v -0.500000 0.069117 0.323672
+v -0.437500 0.069117 0.323672
+v -0.437500 0.304466 0.428634
+v -0.500000 0.304466 0.428634
+v -0.500000 0.315319 0.367084
+v -0.437500 0.315319 0.367084
+v -0.625000 0.058264 0.385222
+v -0.687500 0.058264 0.385222
+v -0.687500 0.069117 0.323672
+v -0.625000 0.069117 0.323672
+v -0.625000 0.304466 0.428634
+v -0.687500 0.304466 0.428634
+v -0.687500 0.315319 0.367084
+v -0.625000 0.315319 0.367084
+v -0.750000 0.058264 0.385222
+v -0.812500 0.058264 0.385222
+v -0.812500 0.069117 0.323672
+v -0.750000 0.069117 0.323672
+v -0.750000 0.304466 0.428634
+v -0.812500 0.304466 0.428634
+v -0.812500 0.315319 0.367084
+v -0.750000 0.315319 0.367084
+v -0.875000 0.058264 0.385222
+v -0.937500 0.058264 0.385222
+v -0.937500 0.069117 0.323672
+v -0.875000 0.069117 0.323672
+v -0.875000 0.304466 0.428634
+v -0.937500 0.304466 0.428634
+v -0.937500 0.315319 0.367084
+v -0.875000 0.315319 0.367084
+v -1.000000 0.058264 0.385222
+v -1.062500 0.058264 0.385222
+v -1.062500 0.069117 0.323672
+v -1.000000 0.069117 0.323672
+v -1.000000 0.304466 0.428634
+v -1.062500 0.304466 0.428634
+v -1.062500 0.315319 0.367084
+v -1.000000 0.315319 0.367084
+v -1.125000 0.058264 0.385222
+v -1.187500 0.058264 0.385222
+v -1.187500 0.069117 0.323672
+v -1.125000 0.069117 0.323672
+v -1.125000 0.304466 0.428634
+v -1.187500 0.304466 0.428634
+v -1.187500 0.315319 0.367084
+v -1.125000 0.315319 0.367084
+v -1.250000 0.058264 0.385222
+v -1.312500 0.058264 0.385222
+v -1.312500 0.069117 0.323672
+v -1.250000 0.069117 0.323672
+v -1.250000 0.304466 0.428634
+v -1.312500 0.304466 0.428634
+v -1.312500 0.315319 0.367084
+v -1.250000 0.315319 0.367084
+v -0.562500 0.058264 0.385222
+v -0.562500 0.069117 0.323672
+v -0.562500 0.304466 0.428634
+v -0.562500 0.315319 0.367084
+v -0.500000 -0.124522 -0.083922
+v -0.500000 -0.247623 -0.105628
+v -0.500000 -0.124488 -0.115648
+v -0.500000 -0.242196 -0.136403
+v -0.500000 -0.343750 0.156250
+v -0.500000 -0.406250 0.156250
+v -0.500000 -0.343750 0.093750
+v -0.500000 -0.406250 0.093750
+v -0.500000 0.427567 0.450340
+v -0.500000 0.438420 0.388790
+v -0.500000 -0.064837 0.363516
+v -0.500000 -0.053984 0.301966
+v -1.375000 -0.234413 0.333615
+v -1.500000 -0.234413 0.333615
+v 0.500000 -0.234413 0.333616
+v 0.375000 -0.234413 0.333616
+v -1.502137 -0.124459 0.265625
+v -1.502137 -0.124459 0.125000
+v 0.372863 -0.124459 0.265625
+v 0.372863 -0.124459 0.125000
+v -1.373516 -0.500000 0.500000
+v -1.373516 -0.500000 0.359375
+v 0.501484 -0.500000 0.500000
+v 0.501484 -0.500000 0.359375
+v -1.373516 -0.124459 0.265625
+v -1.373516 -0.124459 0.125000
+v 0.501484 -0.124459 0.265625
+v 0.501484 -0.124459 0.125000
+v 0.375000 -0.125000 0.343750
+v -1.375000 -0.125000 0.343750
+v -1.375000 -0.125000 -0.156250
+v 0.375000 -0.125000 -0.156250
+v 0.375000 -0.093750 0.343750
+v -1.375000 -0.093750 0.343750
+v -1.375000 -0.093750 -0.156250
+v 0.375000 -0.093750 -0.156250
+v 0.497940 -0.125000 0.232376
+v 0.375000 -0.125000 0.232376
+v 0.375000 -0.125000 -0.037745
+v 0.497940 -0.125000 -0.037745
+v 0.497940 -0.093750 0.232376
+v 0.375000 -0.093750 0.232376
+v 0.375000 -0.093750 -0.031473
+v 0.497940 -0.093750 -0.031473
+v -1.375000 -0.125000 0.232375
+v -1.497999 -0.125000 0.232375
+v -1.497999 -0.125000 -0.037746
+v -1.375000 -0.125000 -0.037746
+v -1.375000 -0.093750 0.232375
+v -1.497999 -0.093750 0.232375
+v -1.497999 -0.093750 -0.031473
+v -1.375000 -0.093750 -0.031473
+v -0.500000 -0.093750 0.343750
+v -0.500000 -0.125000 0.343750
+v -0.500000 -0.093750 -0.156250
+v -0.500000 -0.125000 -0.156250
+vt 0.586012 0.152312
+vt 0.501641 0.287500
+vt 0.000000 0.287500
+vt 0.084371 0.152311
+vt 0.000000 0.812500
+vt 0.125000 0.812500
+vt 0.125000 0.937500
+vt 0.000000 0.937500
+vt 0.000000 0.500000
+vt 0.750000 0.500000
+vt 0.750000 0.625000
+vt 0.000000 0.625000
+vt 0.375000 0.562500
+vt 0.375000 0.375000
+vt 0.437500 0.375000
+vt 0.437500 0.562500
+vt 1.000000 0.812500
+vt 0.250000 0.812500
+vt 0.250000 0.687500
+vt 1.000000 0.687500
+vt 1.000000 0.625000
+vt 0.437500 0.625000
+vt 1.000000 0.562500
+vt 0.750000 0.687500
+vt 0.000000 0.687500
+vt 0.915628 0.152311
+vt 1.000000 0.287500
+vt 0.498359 0.287500
+vt 0.413988 0.152311
+vt 0.875000 0.812500
+vt 1.000000 0.937500
+vt 0.875000 0.937500
+vt 0.000000 0.187500
+vt 0.000000 0.062500
+vt 0.625000 0.062500
+vt 0.625000 0.187500
+vt 1.000000 0.461054
+vt 0.984581 0.600000
+vt 0.337237 0.599913
+vt 0.365221 0.461054
+vt 0.687500 0.187500
+vt 0.687500 0.312500
+vt 0.000000 0.312500
+vt 0.647343 0.461053
+vt 0.662744 0.600000
+vt 0.027966 0.599914
+vt 0.000000 0.461052
+vt 0.750000 0.062500
+vt 0.750000 0.187500
+vt 0.812500 0.187500
+vt 0.812500 0.312500
+vt 0.000000 0.375000
+vt 0.625000 0.375000
+vt 0.625000 0.500000
+vt 0.687500 0.500000
+vt 0.687500 0.625000
+vt 0.750000 0.375000
+vt 0.812500 0.500000
+vt 0.812500 0.625000
+vt 0.000000 0.250000
+vt 0.750000 0.250000
+vt 0.750000 0.312500
+vt 1.000000 0.187500
+vt 0.250000 0.187500
+vt 0.250000 0.125000
+vt 1.000000 0.125000
+vt 0.750000 0.125000
+vt 0.000000 0.125000
+vt 0.610823 0.770850
+vt 0.971310 0.770850
+vt 1.000000 0.912500
+vt 0.522292 0.912500
+vt 0.449018 0.912500
+vt 0.088531 0.912500
+vt 0.000000 0.770850
+vt 0.477709 0.770850
+vt 0.000000 0.437500
+vt 0.500000 0.437500
+vt 0.500000 0.500000
+vt 0.375000 0.812500
+vt 0.375000 0.875000
+vt 0.000000 0.875000
+vt 0.562500 0.375000
+vt 0.562500 0.312500
+vt 0.562500 0.125000
+vt 0.000000 0.562500
+vt 0.500000 0.562500
+vt 0.500000 0.625000
+vt 0.375000 0.687500
+vt 0.375000 0.750000
+vt 0.000000 0.750000
+vt 0.562500 0.562500
+vt 0.562500 0.625000
+vt 0.625000 0.562500
+vt 0.437500 0.312500
+vt 0.437500 0.125000
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 0.625000 0.625000
+vt 1.000000 0.875000
+vt 0.250000 0.875000
+vt 0.375000 0.312500
+vt 0.375000 0.062500
+vt 0.437500 0.062500
+vt 0.812500 0.062500
+vt 0.250000 0.562500
+vt 0.250000 0.625000
+vt 0.125000 0.625000
+vt 0.062500 0.625000
+vt 0.062500 0.375000
+vt 0.125000 0.375000
+vt 0.500000 0.937500
+vt 0.437500 0.937500
+vt 0.437500 0.687500
+vt 0.500000 0.687500
+vt 0.312500 0.625000
+vt 0.250000 0.375000
+vt 0.312500 0.375000
+vt 0.875000 0.625000
+vt 0.812500 0.375000
+vt 0.875000 0.375000
+vt 0.812500 0.937500
+vt 0.812500 0.687500
+vt 0.875000 0.687500
+vt 0.062500 0.312500
+vt 0.062500 0.062500
+vt 0.375000 0.625000
+vt 0.062500 0.937500
+vt 0.062500 0.687500
+vt 0.125000 0.687500
+vt 0.187500 0.625000
+vt 0.187500 0.375000
+vt 0.937500 0.312500
+vt 0.875000 0.312500
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vt 0.500000 0.375000
+vt 0.250000 0.937500
+vt 0.187500 0.937500
+vt 0.187500 0.687500
+vt 0.500000 0.312500
+vt 0.500000 0.062500
+vt 0.562500 0.062500
+vt 0.375000 0.937500
+vt 0.312500 0.937500
+vt 0.312500 0.687500
+vt 0.187500 0.312500
+vt 0.125000 0.312500
+vt 0.125000 0.062500
+vt 0.187500 0.062500
+vt 0.625000 0.937500
+vt 0.562500 0.937500
+vt 0.562500 0.687500
+vt 0.625000 0.687500
+vt 0.687500 0.375000
+vt 0.312500 0.312500
+vt 0.250000 0.312500
+vt 0.250000 0.062500
+vt 0.312500 0.062500
+vt 0.750000 0.562500
+vt 0.750000 0.937500
+vt 0.687500 0.937500
+vt 0.687500 0.687500
+vt 0.625000 0.312500
+vt 0.687500 0.062500
+vt 0.937500 0.625000
+vt 0.937500 0.375000
+vt 0.750000 0.812500
+vt 0.750000 0.875000
+vt 1.000000 0.250000
+vt 0.250000 0.250000
+vt 1.000000 0.062500
+vt 0.250000 0.500000
+vt 1.000000 0.500000
+vt 0.812500 0.812500
+vt 0.500000 0.187500
+vt 0.625000 0.812500
+vt 0.500000 0.812500
+vt 0.250000 0.437500
+vt 1.000000 0.437500
+vt 1.000000 0.750000
+vt 0.250000 0.750000
+vt 0.750000 0.750000
+vt 0.750000 0.437500
+vt 0.832553 0.770850
+vt 0.832553 0.912500
+vt 0.000000 0.912500
+vt 0.099769 0.770849
+vt 1.000000 0.770850
+vt 0.267215 0.912500
+vt 0.167447 0.770850
+vt 0.750000 1.000000
+vt 0.000000 1.000000
+vt 0.562500 0.804267
+vt 0.562500 0.499834
+vt 0.625000 0.499834
+vt 0.625000 0.804267
+vt 0.750000 0.499834
+vt 0.750000 0.804267
+vt 0.125000 0.515219
+vt 0.250000 0.515219
+vt 0.437500 0.499834
+vt 0.437500 0.804267
+vt 0.375000 0.804267
+vt 0.375000 0.499834
+vt 0.250000 0.499834
+vt 0.250000 0.804267
+vt 0.750000 0.515219
+vt 0.875000 0.515219
+vt 1.000000 1.000000
+vt 0.250000 1.000000
+vt 0.687500 0.812500
+vn 1.000000 -0.000000 0.000000
+vn 0.000000 0.982700 0.185400
+vn -0.000000 -0.173600 0.984800
+vn -0.000000 0.087200 -0.996200
+vn 0.000000 0.173600 -0.984800
+vn -1.000000 -0.000000 0.000000
+vn 0.000000 -0.984800 -0.173600
+vn 0.000000 -0.197600 0.980300
+vn 0.000000 0.197400 -0.980300
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 0.996100 0.088200
+vn -0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -0.996200 -0.087200
+vn -0.000000 0.996200 0.087200
+vn 0.000000 0.984800 0.173600
+vn 0.000000 -0.529400 -0.848300
+vn -0.000000 0.529400 0.848300
+g Cylinder_Cylinder_None
+s off
+f 230/1/1 229/2/1 225/3/1 226/4/1
+f 6/5/2 5/6/2 4/7/2 3/8/2
+f 205/9/3 12/10/3 8/11/3 206/12/3
+f 71/13/4 72/14/4 68/15/4 67/16/4
+f 207/17/5 14/18/5 10/19/5 208/20/5
+f 70/21/6 71/22/6 67/16/6 66/23/6
+f 206/12/7 8/11/7 9/24/7 208/25/7
+f 223/26/6 224/27/6 1/28/6 2/29/6
+f 221/26/6 222/27/6 15/28/6 16/29/6
+f 20/30/2 19/17/2 18/31/2 17/32/2
+f 25/33/8 26/34/8 22/35/8 21/36/8
+f 26/37/6 27/38/6 23/39/6 22/40/6
+f 27/41/9 28/42/9 24/43/9 23/33/9
+f 28/44/1 25/45/1 21/46/1 24/47/1
+f 21/36/10 22/35/10 23/48/10 24/49/10
+f 28/42/11 27/41/11 26/50/11 25/51/11
+f 33/9/8 34/52/8 30/53/8 29/54/8
+f 34/37/6 35/38/6 31/39/6 30/40/6
+f 35/55/9 36/56/9 32/12/9 31/9/9
+f 36/44/1 33/45/1 29/46/1 32/47/1
+f 29/54/10 30/53/10 31/57/10 32/10/10
+f 36/56/11 35/55/11 34/58/11 33/59/11
+f 209/60/12 42/61/12 38/62/12 210/43/12
+f 211/63/13 44/64/13 40/65/13 212/66/13
+f 210/34/10 38/48/10 39/67/10 212/68/10
+f 50/69/6 51/70/6 47/71/6 46/72/6
+f 52/73/1 49/74/1 45/75/1 48/76/1
+f 45/9/10 46/77/10 47/78/10 48/79/10
+f 211/33/14 43/49/14 42/61/14 209/60/14
+f 52/80/14 51/81/14 50/82/14 49/5/14
+f 80/83/1 77/52/1 73/43/1 76/84/1
+f 58/69/6 59/70/6 55/71/6 54/72/6
+f 73/43/15 74/68/15 75/85/15 76/84/15
+f 60/73/1 57/74/1 53/75/1 56/76/1
+f 53/12/10 54/86/10 55/87/10 56/88/10
+f 60/89/14 59/90/14 58/91/14 57/25/14
+f 80/83/16 79/92/16 78/86/16 77/52/16
+f 78/86/6 79/92/6 75/93/6 74/12/6
+f 79/92/4 80/83/4 76/53/4 75/94/4
+f 72/95/16 71/96/16 70/66/16 69/97/16
+f 65/98/15 66/23/15 67/16/15 68/15/15
+f 72/95/1 69/97/1 65/98/1 68/15/1
+f 117/99/3 118/93/3 114/83/3 113/53/3
+f 214/18/17 87/17/17 86/100/17 213/101/17
+f 120/95/1 117/102/1 113/103/1 116/104/1
+f 112/51/1 109/62/1 105/48/1 108/105/1
+f 215/106/7 90/23/7 91/21/7 216/107/7
+f 109/108/3 110/109/3 106/110/3 105/111/3
+f 103/112/5 104/113/5 100/114/5 99/115/5
+f 102/116/6 103/107/6 99/117/6 98/118/6
+f 101/119/3 102/59/3 98/120/3 97/121/3
+f 110/109/6 111/12/6 107/52/6 106/110/6
+f 111/32/5 112/122/5 108/123/5 107/124/5
+f 104/125/1 101/43/1 97/34/1 100/126/1
+f 118/22/6 119/127/6 115/14/6 114/15/6
+f 119/7/5 120/128/5 116/129/5 115/130/5
+f 125/107/3 126/131/3 122/132/3 121/117/3
+f 128/133/1 125/134/1 121/135/1 124/136/1
+f 126/93/6 127/88/6 123/137/6 122/83/6
+f 127/138/5 128/139/5 124/140/5 123/19/5
+f 133/127/3 134/116/3 130/118/3 129/14/3
+f 136/84/1 133/141/1 129/142/1 132/143/1
+f 134/131/6 135/108/6 131/111/6 130/132/6
+f 135/144/5 136/145/5 132/146/5 131/89/5
+f 141/88/3 142/22/3 138/15/3 137/137/3
+f 144/147/1 141/148/1 137/149/1 140/150/1
+f 142/109/6 143/12/6 139/52/6 138/110/6
+f 143/151/5 144/152/5 140/153/5 139/154/5
+f 149/11/3 150/56/3 146/155/3 145/57/3
+f 152/156/1 149/157/1 145/158/1 148/159/1
+f 89/86/7 215/160/7 216/11/7 92/12/7
+f 151/161/5 152/162/5 148/163/5 147/24/5
+f 157/11/3 158/56/3 154/155/3 153/57/3
+f 160/42/1 157/164/1 153/35/1 156/165/1
+f 158/116/6 159/107/6 155/117/6 154/118/6
+f 159/161/5 160/162/5 156/163/5 155/24/5
+f 165/119/3 166/59/3 162/120/3 161/121/3
+f 168/84/1 165/141/1 161/142/1 164/143/1
+f 166/56/6 167/99/6 163/53/6 162/155/6
+f 167/112/5 168/113/5 164/114/5 163/115/5
+f 173/99/3 174/93/3 170/83/3 169/53/3
+f 176/95/1 173/102/1 169/103/1 172/104/1
+f 174/93/6 175/88/6 171/137/6 170/83/6
+f 175/32/5 176/122/5 172/123/5 171/124/5
+f 181/127/3 182/116/3 178/118/3 177/14/3
+f 184/156/1 181/157/1 177/158/1 180/159/1
+f 182/131/6 183/108/6 179/111/6 178/132/6
+f 183/138/5 184/139/5 180/140/5 179/19/5
+f 189/108/3 190/109/3 186/110/3 185/111/3
+f 192/125/1 189/43/1 185/34/1 188/126/1
+f 190/166/6 191/119/6 187/121/6 186/167/6
+f 191/151/5 192/152/5 188/153/5 187/154/5
+f 197/107/3 198/131/3 194/132/3 193/117/3
+f 200/147/1 197/148/1 193/149/1 196/150/1
+f 198/59/6 199/11/6 195/57/6 194/120/6
+f 199/144/5 200/145/5 196/146/5 195/89/5
+f 203/22/6 204/127/6 202/14/6 201/15/6
+f 88/5/17 214/168/17 213/169/17 85/82/17
+f 44/64/14 211/63/14 209/170/14 41/171/14
+f 37/158/10 210/172/10 212/66/10 40/65/10
+f 43/49/13 211/33/13 212/68/13 39/67/13
+f 41/171/12 209/170/12 210/97/12 37/157/12
+f 7/107/7 206/21/7 208/20/7 10/19/7
+f 13/168/5 207/5/5 208/25/5 9/24/5
+f 11/173/3 205/174/3 206/21/3 7/107/3
+f 17/123/3 18/175/3 220/5/3 219/25/3
+f 3/175/3 4/122/3 218/8/3 217/5/3
+f 232/1/1 231/2/1 227/3/1 228/4/1
+f 224/33/18 232/34/18 228/142/18 1/176/18
+f 231/176/19 223/141/19 2/43/19 227/33/19
+f 225/154/10 16/177/10 15/178/10 226/115/10
+f 147/31/5 96/8/5 92/5/5 216/17/5
+f 222/5/18 230/25/18 226/115/18 15/178/18
+f 229/178/19 221/112/19 16/8/19 225/5/19
+f 214/17/5 88/5/5 84/25/5 151/20/5
+f 213/25/3 86/20/3 82/17/3 150/5/3
+f 150/179/7 82/180/7 83/174/7 151/173/7
+f 146/5/3 94/17/3 90/31/3 215/8/3
+f 147/19/17 95/20/17 94/181/17 146/182/17
+f 150/88/3 203/22/3 201/15/3 146/137/3
+f 96/25/17 147/24/17 146/183/17 93/91/17
+f 204/7/5 151/128/5 147/129/5 202/130/5
+f 93/5/3 146/17/3 215/31/3 89/8/3
+f 81/77/7 150/184/7 151/10/7 84/9/7
+f 85/25/3 213/20/3 150/17/3 81/5/3
+f 87/17/5 214/5/5 151/25/5 83/20/5
+f 95/31/5 147/8/5 216/5/5 91/17/5
+f 20/185/1 17/186/1 219/187/1 61/188/1
+f 19/168/5 20/161/5 61/8/5 62/5/5
+f 18/189/6 19/71/6 62/190/6 220/191/6
+f 6/185/1 3/186/1 217/187/1 63/188/1
+f 5/24/5 6/168/5 63/5/5 64/25/5
+f 4/189/6 5/71/6 64/190/6 218/191/6
+f 227/35/10 2/36/10 1/176/10 228/142/10
+f 257/8/12 238/161/12 234/192/12 258/193/12
+f 259/98/13 240/117/13 236/157/13 260/97/13
+f 258/52/10 234/57/10 235/161/10 260/8/10
+f 259/52/14 239/57/14 238/161/14 257/8/14
+f 248/194/1 245/195/1 241/196/1 244/197/1
+f 241/196/10 242/198/10 243/199/10 244/197/10
+f 248/200/14 247/201/14 246/18/14 245/6/14
+f 254/202/6 255/203/6 251/204/6 250/205/6
+f 249/206/10 250/205/10 251/204/10 252/207/10
+f 256/208/14 255/209/14 254/30/14 253/168/14
+f 240/117/14 259/98/14 257/31/14 237/138/14
+f 233/117/10 258/98/10 260/31/10 236/138/10
+f 239/57/13 259/52/13 260/43/13 235/62/13
+f 237/138/12 257/31/12 258/210/12 233/211/12
+f 222/162/14 221/112/14 229/178/14 230/212/14
+f 224/42/14 223/141/14 231/176/14 232/41/14
diff --git a/homedecor_modpack/homedecor/models/homedecor_book.obj b/homedecor_modpack/homedecor/models/homedecor_book.obj
new file mode 100644
index 0000000..9b03986
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_book.obj
@@ -0,0 +1,240 @@
+# Blender v2.73 (sub 0) OBJ File: 'book.blend'
+# www.blender.org
+o Cube.002_Cube.001
+v 0.161995 -0.448008 0.216625
+v 0.149566 -0.485966 0.216625
+v 0.113157 -0.485966 0.216625
+v 0.142021 -0.448008 0.216625
+v 0.115781 -0.485966 0.208120
+v 0.142021 -0.448008 0.208120
+v 0.113157 -0.485966 -0.220555
+v -0.159347 -0.485966 -0.220555
+v 0.115781 -0.485966 -0.212050
+v 0.161995 -0.448008 0.208120
+v -0.148926 -0.485966 0.208120
+v -0.155653 -0.448008 0.208120
+v -0.155653 -0.448008 -0.212051
+v -0.148926 -0.485966 -0.212051
+v 0.152482 -0.485966 0.208120
+v 0.152482 -0.485966 -0.212050
+v 0.161995 -0.448008 -0.220555
+v 0.161995 -0.448008 -0.212050
+v 0.145193 -0.500002 -0.212050
+v 0.145193 -0.500002 0.208120
+v 0.115781 -0.500002 0.208120
+v 0.115781 -0.500002 -0.212050
+v 0.115781 -0.396013 -0.212050
+v 0.115781 -0.396013 0.208120
+v 0.145193 -0.396013 0.208120
+v 0.145193 -0.396013 -0.212050
+v 0.152482 -0.410049 -0.212050
+v 0.152482 -0.410049 0.208120
+v -0.148926 -0.410049 -0.212051
+v -0.148926 -0.410049 0.208120
+v 0.115781 -0.410049 -0.212050
+v -0.159347 -0.410049 -0.220555
+v 0.113157 -0.410049 -0.220555
+v 0.115781 -0.410049 0.208120
+v 0.113157 -0.410049 0.216625
+v 0.149566 -0.410049 0.216625
+v 0.115781 -0.396013 0.216625
+v 0.141549 -0.396013 0.216625
+v 0.149566 -0.410049 -0.220555
+v 0.141549 -0.396013 -0.220555
+v -0.159346 -0.396013 -0.220555
+v -0.159347 -0.396013 0.216624
+v 0.115781 -0.396013 -0.220555
+v -0.159347 -0.410049 0.216624
+v 0.115781 -0.500002 0.216625
+v 0.141549 -0.500002 0.216625
+v 0.142021 -0.448008 -0.212050
+v 0.149566 -0.485966 -0.220555
+v 0.141549 -0.500002 -0.220555
+v -0.159346 -0.500002 -0.220555
+v -0.159347 -0.500002 0.216624
+v 0.142021 -0.448008 -0.220555
+v 0.115781 -0.500002 -0.220555
+v -0.159347 -0.485966 0.216624
+vt 0.921987 0.383861
+vt 0.921987 0.340448
+vt 0.931829 0.340448
+vt 0.931829 0.383861
+vt 0.931829 0.427274
+vt 0.921987 0.427274
+vt 0.768089 0.490273
+vt 0.722954 0.490273
+vt 0.722954 0.009727
+vt 0.768089 0.009727
+vt 0.768089 0.500000
+vt 0.722404 0.500000
+vt 0.809636 0.490273
+vt 0.809086 0.500000
+vt 0.352434 0.000000
+vt 0.670829 0.000000
+vt 0.670829 0.009727
+vt 0.670829 0.490273
+vt 0.670829 0.500000
+vt 0.352433 0.499999
+vt 0.809636 0.009727
+vt 0.809086 0.000000
+vt 0.823601 0.000000
+vt 0.824288 0.009727
+vt 0.012060 0.509727
+vt 0.000000 0.500001
+vt 0.315359 0.500000
+vt 0.318396 0.509727
+vt 0.700649 0.000000
+vt 0.704866 0.009727
+vt 0.731001 0.867517
+vt 0.731001 0.844673
+vt 0.774928 0.811661
+vt 0.774928 0.853302
+vt 0.687072 0.853302
+vt 0.687072 0.811661
+vt 0.774928 0.500000
+vt 0.791171 0.500000
+vt 0.791171 0.814662
+vt 0.791171 0.844133
+vt 0.851343 0.522844
+vt 0.851343 0.500000
+vt 0.895271 0.514215
+vt 0.895271 0.555856
+vt 0.912144 0.383862
+vt 0.912144 0.340448
+vt 0.334639 0.500000
+vt 0.334639 0.999999
+vt 0.318396 0.999999
+vt 0.318396 0.500000
+vt 0.895271 0.867517
+vt 0.911514 0.523384
+vt 0.911514 0.552855
+vt 0.911514 0.867516
+vt 0.824288 0.490273
+vt 0.823601 0.500000
+vt 0.807415 0.555856
+vt 0.807415 0.514215
+vt 0.768089 0.000000
+vt 0.722404 0.000000
+vt 0.912144 0.427274
+vt 0.318396 0.990273
+vt 0.315359 1.000000
+vt 0.000000 1.000000
+vt 0.012060 0.990274
+vt 0.704866 0.490273
+vt 0.318396 0.490273
+vt 0.318396 0.009727
+vt 0.352433 0.009727
+vt 0.352433 0.490273
+vt 0.705553 0.490273
+vt 0.705553 0.009727
+vt 0.670829 0.509727
+vt 0.364493 0.509726
+vt 0.667792 0.500000
+vt 0.318396 0.000000
+vt 0.348216 0.000000
+vt 0.704866 0.500000
+vt 0.807415 0.867517
+vt 0.791172 0.867516
+vt 0.791171 0.552855
+vt 0.791171 0.523384
+vt 0.336190 0.500000
+vt 0.352433 0.999999
+vt 0.336190 0.999999
+vt 0.670829 0.844133
+vt 0.670829 0.814662
+vt 0.687072 0.500000
+vt 0.348216 0.500000
+vt 0.364493 0.990273
+vt 0.670829 0.990273
+vt 0.667792 1.000000
+vt 0.704866 0.000000
+vt 0.000000 0.000001
+vt 0.439305 1.000000
+vt 0.439305 0.319104
+vt 0.527160 0.379125
+vt 0.527160 0.984613
+vt 0.087857 1.000000
+vt 0.087857 0.319104
+vt 0.175712 0.334491
+vt 0.175712 0.939979
+vt 0.351448 0.984613
+vt 0.351448 0.379125
+vt 0.000000 0.939979
+vt 0.000000 0.334491
+vt 0.351448 0.000000
+vt 0.351448 0.961094
+vt 0.263593 0.961094
+vt 0.263593 0.000000
+vt 0.175736 0.000000
+vt 0.175736 0.961094
+vn -0.803100 -0.582900 0.123900
+vn -0.803000 0.582900 0.123900
+vn 0.970000 0.243100 0.000000
+vn 0.947900 0.274000 -0.162500
+vn 0.947900 -0.274000 -0.162500
+vn -0.000000 -1.000000 -0.000000
+vn 0.831600 -0.453400 0.320700
+vn 0.000000 1.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn -0.803100 -0.582900 -0.123900
+vn -1.000000 -0.000000 -0.000000
+vn 0.831600 -0.453400 -0.320700
+vn 0.947900 -0.274000 0.162500
+vn 0.970000 -0.243100 -0.000000
+vn 0.947900 0.274000 0.162500
+vn -0.803000 0.582900 -0.123900
+vn 0.887500 -0.460900 -0.000000
+vn 0.887500 0.460900 -0.000000
+vn 0.831600 0.453400 -0.320700
+vn 0.831600 0.453400 0.320700
+vn -0.984700 -0.174500 -0.000000
+vn -0.984700 0.174500 0.000000
+g Cube.002_Cube.001_Cube.002_Cube.001_cover
+s off
+f 47/1/1 31/2/1 33/3/1 52/4/1
+f 47/1/2 52/4/2 7/5/2 9/6/2
+f 18/7/3 27/8/3 28/9/3 10/10/3
+f 27/8/4 18/7/4 17/11/4 39/12/4
+f 16/13/5 48/14/5 17/11/5 18/7/5
+f 50/15/6 53/16/6 22/17/6 21/18/6 45/19/6 51/20/6
+f 15/21/7 2/22/7 46/23/7 20/24/7
+f 11/25/8 54/26/8 3/27/8 5/28/8
+f 22/17/6 53/16/6 49/29/6 19/30/6
+f 1/31/9 4/32/9 3/33/9 2/34/9
+f 1/31/9 36/35/9 35/36/9 4/32/9
+f 2/34/9 3/33/9 54/37/9 51/38/9 45/39/9 46/40/9
+f 52/41/10 17/42/10 48/43/10 7/44/10
+f 34/2/11 6/1/11 4/45/11 35/46/11
+f 50/47/12 51/48/12 54/49/12 8/50/12
+f 8/51/10 7/44/10 48/43/10 49/52/10 53/53/10 50/54/10
+f 19/55/13 49/56/13 48/14/13 16/13/13
+f 52/41/10 33/57/10 39/58/10 17/42/10
+f 10/10/14 1/59/14 2/22/14 15/21/14
+f 18/7/15 10/10/15 15/21/15 16/13/15
+f 10/10/16 28/9/16 36/60/16 1/59/16
+f 5/6/17 3/61/17 4/45/17 6/1/17
+f 9/62/8 7/63/8 8/64/8 14/65/8
+f 16/13/18 15/21/18 20/24/18 19/55/18
+f 22/17/6 19/30/6 20/66/6 21/18/6
+f 23/67/8 24/68/8 25/69/8 26/70/8
+f 27/8/19 26/71/19 25/72/19 28/9/19
+f 31/73/6 29/74/6 32/20/6 33/75/6
+f 25/69/8 24/68/8 37/76/8 38/77/8
+f 26/71/20 27/8/20 39/12/20 40/78/20
+f 32/79/10 41/80/10 43/81/10 40/82/10 39/58/10 33/57/10
+f 41/83/12 32/20/12 44/84/12 42/85/12
+f 36/35/9 38/86/9 37/87/9 42/19/9 44/88/9 35/36/9
+f 23/67/8 26/70/8 40/89/8 43/50/8
+f 30/90/6 34/91/6 35/92/6 44/84/6
+f 28/9/21 25/72/21 38/93/21 36/60/21
+f 29/74/6 30/90/6 44/84/6 32/20/6
+f 41/26/8 42/94/8 37/76/8 24/68/8 23/67/8 43/50/8
+f 54/26/8 11/25/8 14/65/8 8/64/8
+g Cube.002_Cube.001_Cube.002_Cube.001_edges
+f 13/95/10 47/96/10 9/97/10 14/98/10
+f 6/99/9 12/100/9 11/101/9 5/102/9
+f 13/95/10 29/103/10 31/104/10 47/96/10
+f 6/99/9 34/105/9 30/106/9 12/100/9
+f 14/107/22 11/108/22 12/109/22 13/110/22
+f 29/111/23 13/110/23 12/109/23 30/112/23
diff --git a/homedecor_modpack/homedecor/models/homedecor_book_open.obj b/homedecor_modpack/homedecor/models/homedecor_book_open.obj
new file mode 100644
index 0000000..046b6de
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_book_open.obj
@@ -0,0 +1,419 @@
+# Blender v2.73 (sub 0) OBJ File: 'book-open.blend'
+# www.blender.org
+o Cube.002_Cube.001
+v -0.012428 -0.485966 0.216625
+v 0.000001 -0.486750 -0.220555
+v -0.321341 -0.485966 -0.220555
+v 0.000001 -0.462863 0.208120
+v -0.310920 -0.485966 0.208120
+v -0.306022 -0.464409 0.208120
+v -0.306022 -0.464409 -0.212051
+v -0.310920 -0.485966 -0.212051
+v 0.000001 -0.462862 -0.212050
+v -0.016802 -0.500002 -0.212050
+v -0.016802 -0.500002 0.208120
+v -0.046214 -0.500002 0.208120
+v -0.046214 -0.500002 -0.212050
+v -0.046214 -0.500002 0.216625
+v -0.020445 -0.500002 0.216625
+v -0.012428 -0.485966 -0.220555
+v -0.020445 -0.500002 -0.220555
+v -0.321340 -0.500002 -0.220555
+v -0.321341 -0.500002 0.216624
+v -0.046214 -0.500002 -0.220555
+v -0.321341 -0.485966 0.216624
+v -0.238235 -0.450057 0.208120
+v 0.000001 -0.486750 0.216625
+v -0.238235 -0.450057 -0.212051
+v 0.306023 -0.464409 0.208120
+v 0.306023 -0.464409 -0.212051
+v 0.238237 -0.450057 0.208120
+v 0.238237 -0.450057 -0.212051
+v 0.046215 -0.500003 -0.212050
+v 0.046215 -0.500003 0.208120
+v 0.016803 -0.500003 0.208120
+v 0.016803 -0.500003 -0.212050
+v 0.000001 -0.481442 0.216625
+v 0.000001 -0.481442 -0.220555
+v 0.310922 -0.485967 -0.212051
+v 0.310922 -0.485967 0.208120
+v 0.321343 -0.485967 -0.220555
+v 0.012430 -0.485967 0.216625
+v 0.046215 -0.500003 0.216625
+v 0.020447 -0.500003 0.216625
+v 0.012430 -0.485967 -0.220555
+v 0.020447 -0.500003 -0.220555
+v 0.321342 -0.500003 -0.220555
+v 0.321343 -0.500003 0.216624
+v 0.046215 -0.500003 -0.220555
+v 0.321343 -0.485967 0.216624
+v 0.000001 -0.486750 0.208120
+v 0.000001 -0.486750 -0.212050
+v 0.086920 -0.442244 -0.212051
+v 0.086920 -0.442244 0.208120
+v -0.086847 -0.442244 -0.212051
+v -0.086847 -0.442244 0.208120
+v -0.043405 -0.447755 -0.212050
+v -0.043405 -0.447755 0.208120
+v 0.043478 -0.447755 -0.212050
+v 0.043478 -0.447755 0.208120
+v 0.010224 -0.490836 0.216625
+v -0.006214 -0.482857 0.216625
+v -0.006214 -0.482857 -0.220555
+v -0.008400 -0.490836 0.208120
+v -0.008400 -0.490836 -0.212050
+v -0.010222 -0.490836 -0.220555
+v -0.010222 -0.490836 0.216625
+v 0.010224 -0.490836 -0.220555
+v 0.008402 -0.490836 -0.212050
+v 0.008402 -0.490836 0.208120
+v 0.006215 -0.482858 -0.220555
+v 0.006215 -0.482858 0.216625
+v -0.012428 -0.485966 -0.212050
+v 0.000001 -0.481442 -0.212050
+v 0.012430 -0.485967 -0.212050
+v -0.006214 -0.482857 -0.212050
+v 0.006215 -0.482858 -0.212050
+v -0.012428 -0.485966 0.208120
+v 0.000001 -0.481442 0.208120
+v 0.012430 -0.485967 0.208120
+v -0.006214 -0.482857 0.208120
+v 0.006215 -0.482858 0.208120
+vt 0.965735 0.839196
+vt 0.711783 0.839196
+vt 0.711783 0.832541
+vt 0.711783 0.503765
+vt 0.711783 0.497110
+vt 0.965736 0.497110
+vt 0.395683 0.494736
+vt 0.395683 0.261171
+vt 0.403533 0.261171
+vt 0.403532 0.502890
+vt 0.687998 0.839196
+vt 0.684635 0.832541
+vt 0.987044 0.738829
+vt 0.987044 0.497110
+vt 1.000000 0.497110
+vt 0.999999 0.712393
+vt 0.999999 0.732556
+vt 0.992051 0.000000
+vt 0.992051 0.342086
+vt 0.979145 0.342086
+vt 0.979145 0.000000
+vt 0.969912 1.000000
+vt 0.969911 0.758280
+vt 0.982867 0.764553
+vt 0.982867 0.784716
+vt 0.982868 0.999999
+vt 0.403533 0.241720
+vt 0.395683 0.241720
+vt 0.395683 0.008154
+vt 0.403532 0.000000
+vt 0.684634 0.503765
+vt 0.007850 0.008154
+vt 0.000000 0.000000
+vt 0.657486 0.832541
+vt 0.657486 0.503765
+vt 0.657486 0.497110
+vt 0.681271 0.497110
+vt 0.969911 0.497110
+vt 0.982867 0.497110
+vt 0.982868 0.712393
+vt 0.982868 0.732556
+vt 0.969912 0.738829
+vt 0.966239 0.000000
+vt 0.966239 0.342086
+vt 0.987044 0.758280
+vt 1.000000 0.764553
+vt 1.000000 0.784716
+vt 0.999999 1.000000
+vt 0.987043 1.000000
+vt 0.681271 0.839196
+vt 0.657486 0.839196
+vt 0.000000 0.261171
+vt 0.007850 0.261171
+vt 0.007850 0.494736
+vt 0.000000 0.502891
+vt 0.403534 0.839196
+vt 0.403533 0.497110
+vt 0.687998 0.497110
+vt 0.974407 0.740555
+vt 0.970635 0.748555
+vt 0.967042 0.743692
+vt 0.965736 0.748555
+vt 0.967042 0.753417
+vt 0.974406 0.756554
+vt 0.991539 0.740555
+vt 0.987768 0.748555
+vt 0.984174 0.743692
+vt 0.982868 0.748555
+vt 0.984174 0.753417
+vt 0.991539 0.756554
+vt 0.044849 0.844977
+vt 0.035593 0.844977
+vt 0.035446 0.838322
+vt 0.044554 0.838322
+vt 0.956803 0.342087
+vt 0.956803 0.335432
+vt 0.964557 0.335432
+vt 0.947366 0.342087
+vt 0.949048 0.335432
+vt 0.045143 0.838322
+vt 0.054251 0.838322
+vt 0.054104 0.844977
+vt 0.044554 0.509546
+vt 0.035446 0.509546
+vt 0.035593 0.502890
+vt 0.044849 0.502891
+vt 0.964557 0.006655
+vt 0.956803 0.006655
+vt 0.956803 0.000000
+vt 0.949048 0.006655
+vt 0.947366 0.000000
+vt 0.054104 0.502891
+vt 0.054251 0.509546
+vt 0.045143 0.509546
+vt 0.000000 0.256308
+vt 0.000000 0.251445
+vt 0.007850 0.251445
+vt 0.007850 0.256308
+vt 0.000000 0.246582
+vt 0.000000 0.241720
+vt 0.007850 0.241720
+vt 0.007850 0.246582
+vt 0.403533 0.251445
+vt 0.403533 0.256308
+vt 0.395683 0.256308
+vt 0.395683 0.251445
+vt 0.403533 0.246582
+vt 0.395683 0.246582
+vt 0.779948 0.000000
+vt 0.779948 1.000000
+vt 0.724984 1.000000
+vt 0.724983 0.000000
+vt 0.717416 1.000000
+vt 0.662450 1.000000
+vt 0.662449 0.000000
+vt 0.717416 0.000000
+vt 0.184400 1.000000
+vt 0.126957 0.970419
+vt 0.221962 0.896695
+vt 0.485666 0.793134
+vt 0.471964 0.896524
+vt 0.376957 0.970419
+vt 0.216239 0.433002
+vt 0.126957 0.260013
+vt 0.059402 0.000000
+vt 0.001957 0.029581
+vt 0.009688 0.014790
+vt 0.235664 0.793305
+vt 0.013207 0.000000
+vt 0.091241 0.566998
+vt 0.055557 0.728328
+vt 0.001957 0.739987
+vt 0.110666 0.206866
+vt 0.134686 0.985210
+vt 0.096964 0.103476
+vt 0.180555 0.271672
+vt 0.138205 1.000000
+vt 0.341239 0.566998
+vt 0.305555 0.728328
+vt 0.251957 0.739987
+vt 0.251957 0.029581
+vt 0.360664 0.206695
+vt 0.388207 1.000000
+vt 0.384688 0.985210
+vt 0.434402 1.000000
+vt 0.346962 0.103305
+vt 0.466241 0.433002
+vt 0.376957 0.260013
+vt 0.309400 0.000000
+vt 0.259687 0.014790
+vt 0.263205 0.000000
+vt 0.430558 0.271672
+vt 0.636817 0.156314
+vt 0.875000 0.156314
+vt 0.875000 0.984312
+vt 0.636817 0.984312
+vt 0.000000 0.156314
+vt 0.125000 0.156314
+vt 0.125000 0.984312
+vt 0.000000 0.984313
+vt 1.000000 0.156314
+vt 1.000000 0.984313
+vt 0.363296 0.156314
+vt 0.431676 0.156314
+vt 0.431676 0.984311
+vt 0.363296 0.984312
+vt 0.500000 0.156314
+vt 0.568437 0.156314
+vt 0.568437 0.984311
+vt 0.500000 0.984311
+vn -0.577300 -0.577300 -0.577300
+vn 0.000000 -0.707100 -0.707100
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -0.707100 0.707100
+vn -0.577300 -0.577300 0.577300
+vn 0.280700 0.927500 0.246900
+vn 0.172900 0.732100 0.658800
+vn 0.148700 0.629400 0.762700
+vn 0.577300 0.577300 0.577300
+vn 0.216600 -0.711100 -0.668800
+vn 0.428700 -0.900500 -0.071700
+vn -0.148700 0.629400 0.762700
+vn -0.577300 0.577300 0.577300
+vn 0.216600 -0.711100 0.668800
+vn -0.577300 0.577300 -0.577300
+vn -0.148700 0.629400 -0.762700
+vn -0.172900 0.732100 0.658800
+vn -0.280700 0.927500 0.246900
+vn 0.428700 -0.900500 0.071700
+vn -0.280700 0.927500 -0.246900
+vn -0.428800 -0.900500 0.071700
+vn -0.428800 -0.900500 -0.071700
+vn -0.216600 -0.711100 0.668800
+vn 0.577300 0.577300 -0.577300
+vn 0.577300 -0.577300 -0.577300
+vn 0.000000 -0.707100 -0.707000
+vn -0.216600 -0.711100 -0.668800
+vn 0.148700 0.629400 -0.762700
+vn 0.577300 -0.577300 0.577300
+vn 0.172900 0.732100 -0.658800
+vn 0.280700 0.927500 -0.246900
+vn -0.350300 -0.496700 -0.794100
+vn 0.000000 -0.580000 -0.814600
+vn 0.246900 0.689300 -0.681100
+vn 0.000000 0.750900 -0.660400
+vn -0.246800 0.689300 -0.681100
+vn 0.350300 -0.496700 -0.794100
+vn 0.350300 -0.496700 0.794100
+vn 0.000000 -0.580000 0.814600
+vn -0.246800 0.689300 0.681100
+vn 0.000000 0.750900 0.660400
+vn 0.246900 0.689300 0.681100
+vn -0.350300 -0.496700 0.794100
+vn -0.569600 -0.819500 0.062900
+vn 0.000000 -0.999700 0.023700
+vn 0.569600 -0.819500 0.062900
+vn -0.569600 -0.819500 -0.062900
+vn 0.000000 -0.999700 -0.023700
+vn 0.569600 -0.819500 -0.062900
+vn 0.000000 0.649100 -0.760600
+vn 0.228600 0.638300 -0.735000
+vn -0.172900 0.732100 -0.658800
+vn -0.228600 0.638300 -0.735000
+vn 0.228600 0.638300 0.735000
+vn 0.000000 0.649100 0.760600
+vn -0.228600 0.638300 0.735000
+vn -0.559600 0.567900 0.603500
+vn -0.559600 0.567900 -0.603500
+vn 0.559600 0.567900 -0.603500
+vn 0.559600 0.567900 0.603500
+vn 0.000200 0.614300 -0.789000
+vn 0.166600 0.709800 -0.684400
+vn -0.027100 0.725500 0.687600
+vn -0.166400 0.709800 0.684400
+vn -0.093900 0.717800 -0.689800
+vn 0.027100 0.725500 -0.687600
+vn 0.093900 0.717800 -0.689800
+vn -0.027100 0.725500 -0.687600
+vn -0.166400 0.709800 -0.684400
+vn -0.093900 0.717800 0.689800
+vn 0.027100 0.725500 0.687600
+vn 0.000200 0.614300 0.789000
+vn 0.166600 0.709800 0.684400
+vn 0.093900 0.717800 0.689800
+g Cube.002_Cube.001_Cube.002_Cube.001_cover
+s 1
+f 18/1/1 20/2/2 13/3/3 12/4/3 14/5/4 19/6/5
+f 36/7/6 76/8/7 38/9/8 46/10/9
+f 13/3/3 20/2/2 17/11/10 10/12/11
+f 1/13/12 21/14/13 19/15/5 14/16/4 15/17/14
+f 18/18/1 19/19/5 21/20/13 3/21/15
+f 3/22/15 16/23/16 17/24/10 20/25/2 18/26/1
+f 1/27/12 74/28/17 5/29/18 21/30/13
+f 13/3/3 10/12/11 11/31/19 12/4/3
+f 21/30/13 5/29/18 8/32/20 3/33/15
+f 29/34/3 30/35/3 31/31/21 32/12/22
+f 31/31/21 30/35/3 39/36/4 40/37/23
+f 37/38/24 43/39/25 45/40/26 42/41/27 41/42/28
+f 43/43/25 37/21/24 46/20/9 44/44/29
+f 38/45/8 40/46/23 39/47/4 44/48/29 46/49/9
+f 29/34/3 32/12/22 42/50/27 45/51/26
+f 41/52/28 71/53/30 35/54/31 37/55/24
+f 35/54/31 36/7/6 46/10/9 37/55/24
+f 43/56/25 44/57/29 39/36/4 30/35/3 29/34/3 45/51/26
+f 15/58/14 14/5/4 12/4/3 11/31/19
+f 42/41/27 64/59/32 41/42/28
+f 41/42/28 64/59/32 2/60/33 67/61/34
+f 67/61/34 2/60/33 34/62/35
+f 34/62/35 2/60/33 59/63/36
+f 2/60/33 62/64/37 16/23/16 59/63/36
+f 16/23/16 62/64/37 17/24/10
+f 15/17/14 63/65/38 1/13/12
+f 23/66/39 58/67/40 1/13/12 63/65/38
+f 58/67/40 23/66/39 33/68/41
+f 68/69/42 33/68/41 23/66/39
+f 38/45/8 68/69/42 23/66/39 57/70/43
+f 57/70/43 40/46/23 38/45/8
+f 40/71/23 57/72/43 66/73/44 31/74/21
+f 57/44/43 23/75/39 47/76/45 66/77/44
+f 47/76/45 23/75/39 63/78/38 60/79/46
+f 15/71/14 11/80/19 60/81/46 63/82/38
+f 32/83/22 65/84/47 64/85/32 42/86/27
+f 64/43/32 65/87/47 48/88/48 2/89/33
+f 48/88/48 61/90/49 62/91/37 2/89/33
+f 17/86/10 62/92/37 61/93/49 10/94/11
+f 67/95/34 34/96/35 70/97/50 73/98/51
+f 59/99/36 16/100/16 69/101/52 72/102/53
+f 41/52/28 67/95/34 73/98/51 71/53/30
+f 34/96/35 59/99/36 72/102/53 70/97/50
+f 33/103/41 68/104/42 78/105/54 75/106/55
+f 1/27/12 58/107/40 77/108/56 74/28/17
+f 68/104/42 38/9/8 76/8/7 78/105/54
+f 58/107/40 33/103/41 75/106/55 77/108/56
+f 8/32/20 69/101/52 16/100/16 3/33/15
+f 10/94/11 61/93/49 60/81/46 11/80/19
+f 47/76/45 60/79/46 61/90/49 48/88/48
+f 65/87/47 66/77/44 47/76/45 48/88/48
+f 31/74/21 66/73/44 65/84/47 32/83/22
+g Cube.002_Cube.001_Cube.002_Cube.001_edges
+f 8/109/20 5/110/18 6/111/57 7/112/58
+f 35/113/31 26/114/59 25/115/60 36/116/6
+f 9/117/61 69/118/52 53/119/62
+f 50/120/63 56/121/64 76/122/7
+f 24/123/65 69/118/52 8/124/20
+f 9/125/61 71/126/30 73/127/51
+f 51/128/66 53/119/62 69/118/52
+f 9/125/61 73/127/51 70/129/50
+f 28/130/67 26/131/59 35/132/31
+f 71/126/30 49/133/68 28/130/67
+f 72/134/53 69/118/52 9/117/61
+f 71/126/30 55/135/69 49/133/68
+f 28/130/67 35/132/31 71/126/30
+f 24/123/65 8/124/20 7/136/58
+f 69/118/52 24/123/65 51/128/66
+f 9/125/61 55/135/69 71/126/30
+f 70/137/50 72/134/53 9/117/61
+f 22/138/70 6/139/57 5/140/18
+f 74/141/17 52/142/71 22/138/70
+f 75/143/55 78/144/54 4/145/72
+f 74/141/17 54/146/73 52/142/71
+f 22/138/70 5/140/18 74/141/17
+f 27/147/74 76/122/7 36/148/6
+f 4/149/72 74/141/17 77/150/56
+f 27/147/74 50/120/63 76/122/7
+f 4/149/72 77/150/56 75/151/55
+f 4/145/72 78/144/54 76/122/7
+f 4/149/72 54/146/73 74/141/17
+f 27/147/74 36/148/6 25/152/60
+f 56/121/64 4/145/72 76/122/7
+g Cube.002_Cube.001_Cube.002_Cube.001_pages
+f 50/153/63 27/154/74 28/155/67 49/156/68
+f 6/157/57 22/158/70 24/159/65 7/160/58
+f 27/154/74 25/161/60 26/162/59 28/155/67
+f 52/163/71 54/164/73 53/165/62 51/166/66
+f 22/158/70 52/163/71 51/166/66 24/159/65
+f 4/167/72 56/168/64 55/169/69 9/170/61
+f 54/164/73 4/167/72 9/170/61 53/165/62
+f 56/168/64 50/153/63 49/156/68 55/169/69
diff --git a/homedecor_modpack/homedecor/models/homedecor_bottle.obj b/homedecor_modpack/homedecor/models/homedecor_bottle.obj
new file mode 100644
index 0000000..03ecf93
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_bottle.obj
@@ -0,0 +1,594 @@
+# Blender v2.69 (sub 0) OBJ File: 'bottle.blend'
+# www.blender.org
+o bottle.1_Cylinder.007
+v 0.102226 -0.050066 0.174666
+v -0.057098 -0.499974 -0.020782
+v -0.025270 0.000014 -0.009198
+v -0.044782 -0.499974 -0.041094
+v -0.019820 0.000014 -0.018187
+v -0.025650 -0.499974 -0.055150
+v -0.011352 0.000014 -0.024408
+v -0.002612 -0.499974 -0.060811
+v -0.001156 0.000014 -0.026913
+v 0.020824 -0.499974 -0.057213
+v 0.009216 0.000014 -0.025321
+v 0.041089 -0.499974 -0.044905
+v 0.018185 0.000014 -0.019874
+v 0.055099 -0.499974 -0.025761
+v 0.024386 0.000014 -0.011401
+v 0.060720 -0.499974 -0.002694
+v 0.026873 0.000014 -0.001192
+v 0.057097 -0.499974 0.020782
+v 0.025270 0.000014 0.009198
+v 0.044782 -0.499974 0.041094
+v 0.019820 0.000014 0.018188
+v 0.025649 -0.499974 0.055151
+v 0.011352 0.000014 0.024409
+v 0.002612 -0.499974 0.060811
+v 0.001156 0.000014 0.026914
+v -0.020824 -0.499974 0.057213
+v -0.009216 0.000014 0.025321
+v -0.041089 -0.499974 0.044905
+v -0.018185 0.000014 0.019874
+v -0.055099 -0.499974 0.025761
+v -0.024386 0.000014 0.011401
+v -0.060720 -0.499974 0.002695
+v -0.026874 0.000014 0.001193
+v -0.068927 -0.223085 -0.025087
+v -0.054060 -0.223085 -0.049608
+v -0.030964 -0.223085 -0.066576
+v -0.003153 -0.223085 -0.073409
+v 0.025138 -0.223085 -0.069066
+v 0.049602 -0.223085 -0.054208
+v 0.066514 -0.223085 -0.031098
+v 0.073300 -0.223085 -0.003253
+v 0.068927 -0.223085 0.025087
+v 0.054060 -0.223085 0.049608
+v 0.030963 -0.223085 0.066577
+v 0.003153 -0.223085 0.073409
+v -0.025138 -0.223085 0.069066
+v -0.049602 -0.223085 0.054208
+v -0.066514 -0.223085 0.031098
+v -0.073300 -0.223085 0.003253
+v -0.029876 -0.112565 -0.010874
+v -0.023432 -0.112565 -0.021502
+v -0.013421 -0.112565 -0.028857
+v -0.001367 -0.112565 -0.031819
+v 0.010896 -0.112565 -0.029936
+v 0.021499 -0.112565 -0.023496
+v 0.028830 -0.112565 -0.013479
+v 0.031771 -0.112565 -0.001410
+v 0.029876 -0.112565 0.010874
+v 0.023432 -0.112565 0.021502
+v 0.013421 -0.112565 0.028857
+v 0.001366 -0.112565 0.031819
+v -0.010896 -0.112565 0.029936
+v -0.021500 -0.112565 0.023496
+v -0.028830 -0.112565 0.013479
+v -0.031772 -0.112565 0.001410
+v -0.025270 -0.050066 -0.009198
+v -0.019820 -0.050066 -0.018187
+v -0.011352 -0.050066 -0.024408
+v -0.001156 -0.050066 -0.026914
+v 0.009216 -0.050066 -0.025321
+v 0.018185 -0.050066 -0.019874
+v 0.024386 -0.050066 -0.011401
+v 0.026873 -0.050066 -0.001193
+v 0.025270 -0.050066 0.009198
+v 0.019820 -0.050066 0.018188
+v 0.011352 -0.050066 0.024409
+v 0.001156 -0.050066 0.026914
+v -0.009216 -0.050066 0.025321
+v -0.018185 -0.050066 0.019874
+v -0.024386 -0.050066 0.011401
+v -0.026874 -0.050066 0.001193
+v -0.055878 -0.490231 -0.051276
+v -0.032004 -0.490231 -0.068815
+v -0.003259 -0.490231 -0.075877
+v 0.025983 -0.490231 -0.071388
+v 0.051269 -0.490231 -0.056031
+v 0.068750 -0.490231 -0.032143
+v 0.075764 -0.490231 -0.003362
+v 0.071244 -0.490231 0.025931
+v 0.055878 -0.490231 0.051276
+v 0.032004 -0.490231 0.068815
+v 0.003259 -0.490231 0.075877
+v -0.025983 -0.490231 0.071388
+v -0.051269 -0.490231 0.056031
+v -0.068750 -0.490231 0.032143
+v -0.075764 -0.490231 0.003362
+v -0.071244 -0.490231 -0.025931
+v -0.057437 -0.360107 -0.052706
+v -0.032897 -0.360107 -0.070735
+v -0.003350 -0.360107 -0.077994
+v 0.026708 -0.360107 -0.073380
+v 0.052699 -0.360107 -0.057594
+v 0.070668 -0.360107 -0.033040
+v 0.077878 -0.360107 -0.003456
+v 0.073232 -0.360107 0.026654
+v 0.057437 -0.360107 0.052706
+v 0.032897 -0.360107 0.070735
+v 0.003350 -0.360107 0.077994
+v -0.026708 -0.360107 0.073380
+v -0.052700 -0.360107 0.057594
+v -0.070668 -0.360107 0.033040
+v -0.077878 -0.360107 0.003456
+v -0.073232 -0.360107 -0.026654
+v -0.055878 -0.235452 -0.051276
+v -0.032004 -0.235452 -0.068814
+v -0.003259 -0.235452 -0.075877
+v 0.025983 -0.235452 -0.071388
+v 0.051269 -0.235452 -0.056030
+v 0.068750 -0.235452 -0.032143
+v 0.075764 -0.235452 -0.003362
+v 0.071244 -0.235452 0.025931
+v 0.055878 -0.235452 0.051276
+v 0.032004 -0.235452 0.068815
+v 0.003259 -0.235452 0.075877
+v -0.025983 -0.235452 0.071388
+v -0.051269 -0.235452 0.056031
+v -0.068750 -0.235452 0.032143
+v -0.075764 -0.235452 0.003362
+v -0.071244 -0.235452 -0.025931
+v -0.017689 -0.360107 0.209718
+v 0.101342 -0.050066 0.154067
+v 0.044952 -0.490231 0.096654
+v 0.055878 -0.235452 0.051276
+v -0.025983 -0.235452 0.071388
+v -0.063971 -0.050066 0.231357
+v 0.187337 -0.264835 0.222820
+v 0.275694 -0.264835 -0.019938
+v 0.110381 -0.264835 0.057352
+v -0.214723 -0.515684 0.196759
+v 0.023805 -0.233479 -0.128800
+v -0.111224 -0.233479 -0.040488
+v -0.364894 -0.515684 0.279560
+v 0.275694 -0.515684 -0.019938
+v 0.110381 -0.515684 0.057352
+v -0.229864 -0.515684 0.191248
+v -0.000000 0.000014 0.000000
+v -0.000000 -0.499974 0.000000
+vt 0.672622 0.911870
+vt 0.657436 0.915004
+vt 0.657151 0.875265
+vt 0.312500 0.895833
+vt 0.312500 0.979167
+vt 0.291667 0.979167
+vt 0.291667 0.895833
+vt 0.270833 0.895833
+vt 0.270833 0.979167
+vt 0.250000 0.979167
+vt 0.250000 0.895833
+vt 0.229167 0.979167
+vt 0.229167 0.895833
+vt 0.208333 0.979167
+vt 0.208333 0.895833
+vt 0.187500 0.895833
+vt 0.187500 0.979167
+vt 0.166667 0.979167
+vt 0.166667 0.895833
+vt 0.145833 0.979167
+vt 0.145833 0.895833
+vt 0.125000 0.979167
+vt 0.125000 0.895833
+vt 0.104167 0.979167
+vt 0.104167 0.895833
+vt 0.083333 0.979167
+vt 0.083333 0.895833
+vt 0.062500 0.895833
+vt 0.062500 0.979167
+vt 0.041667 0.979167
+vt 0.041667 0.895833
+vt 0.020833 0.979167
+vt 0.491718 0.964957
+vt 0.457337 0.958217
+vt 0.491470 0.875167
+vt 0.333333 0.895833
+vt 0.333333 0.979167
+vt 0.354167 0.895833
+vt 0.354167 0.979167
+vt 0.604167 0.520833
+vt 0.604167 0.562500
+vt 0.562500 0.562500
+vt 0.562500 0.520833
+vt 0.520833 0.562500
+vt 0.520833 0.520833
+vt 0.479167 0.562500
+vt 0.479167 0.520833
+vt 0.437500 0.562500
+vt 0.437500 0.520833
+vt 0.395833 0.562500
+vt 0.395833 0.520833
+vt 0.354167 0.520833
+vt 0.354167 0.562500
+vt 0.312500 0.520833
+vt 0.312500 0.562500
+vt 0.270833 0.562500
+vt 0.270833 0.520833
+vt 0.229167 0.520833
+vt 0.229167 0.562500
+vt 0.187500 0.562500
+vt 0.187500 0.520833
+vt 0.145833 0.562500
+vt 0.145833 0.520833
+vt 0.104167 0.562500
+vt 0.104167 0.520833
+vt 0.062500 0.520833
+vt 0.062500 0.562500
+vt 0.020833 0.562500
+vt 0.645833 0.520833
+vt 0.645833 0.562500
+vt 0.687500 0.520833
+vt 0.687500 0.562500
+vt 0.604167 0.750000
+vt 0.562500 0.750000
+vt 0.520833 0.750000
+vt 0.479167 0.750000
+vt 0.437500 0.750000
+vt 0.395833 0.750000
+vt 0.354167 0.750000
+vt 0.312500 0.750000
+vt 0.270833 0.750000
+vt 0.229167 0.750000
+vt 0.187500 0.750000
+vt 0.145833 0.750000
+vt 0.104167 0.750000
+vt 0.062500 0.750000
+vt 0.020833 0.750000
+vt 0.645833 0.750000
+vt 0.687500 0.750000
+vt 0.312500 0.791667
+vt 0.291667 0.791667
+vt 0.270833 0.791667
+vt 0.250000 0.791667
+vt 0.229167 0.791667
+vt 0.208333 0.791667
+vt 0.187500 0.791667
+vt 0.166667 0.791667
+vt 0.145833 0.791667
+vt 0.125000 0.791667
+vt 0.104167 0.791667
+vt 0.083333 0.791667
+vt 0.062500 0.791667
+vt 0.041667 0.791667
+vt 0.020833 0.791667
+vt 0.333333 0.791667
+vt 0.354167 0.791667
+vt 0.604167 0.020833
+vt 0.604167 0.062500
+vt 0.562500 0.062500
+vt 0.562500 0.020833
+vt 0.520833 0.020833
+vt 0.520833 0.062500
+vt 0.479167 0.020833
+vt 0.479167 0.062500
+vt 0.437500 0.062500
+vt 0.437500 0.020833
+vt 0.395833 0.020833
+vt 0.395833 0.062500
+vt 0.354167 0.062500
+vt 0.354167 0.020833
+vt 0.312500 0.062500
+vt 0.312500 0.020833
+vt 0.270833 0.062500
+vt 0.270833 0.020833
+vt 0.229167 0.062500
+vt 0.229167 0.020833
+vt 0.187500 0.062500
+vt 0.187500 0.020833
+vt 0.145833 0.062500
+vt 0.145833 0.020833
+vt 0.104167 0.062500
+vt 0.104167 0.020833
+vt 0.062500 0.020833
+vt 0.062500 0.062500
+vt 0.020833 0.020833
+vt 0.645833 0.020833
+vt 0.645833 0.062500
+vt 0.687500 0.020833
+vt 0.687500 0.062500
+vt 0.562500 0.312500
+vt 0.520833 0.312500
+vt 0.479167 0.312500
+vt 0.437500 0.312500
+vt 0.395833 0.312500
+vt 0.354167 0.312500
+vt 0.312500 0.312500
+vt 0.270833 0.312500
+vt 0.229167 0.312500
+vt 0.187500 0.312500
+vt 0.145833 0.312500
+vt 0.104167 0.312500
+vt 0.062500 0.312500
+vt 0.020833 0.312500
+vt 0.645833 0.312500
+vt 0.604167 0.312500
+vt 0.687500 0.312500
+vt 0.020833 0.520833
+vt 0.020833 0.895833
+vt 0.020833 0.062500
+vt 0.642207 0.912088
+vt 0.629253 0.903566
+vt 0.620547 0.890735
+vt 0.617413 0.875550
+vt 0.620329 0.860321
+vt 0.628851 0.847367
+vt 0.641681 0.838660
+vt 0.656867 0.835526
+vt 0.672096 0.838442
+vt 0.685050 0.846964
+vt 0.693756 0.859795
+vt 0.696890 0.874980
+vt 0.693974 0.890209
+vt 0.685452 0.903163
+vt 0.428154 0.938834
+vt 0.408609 0.909757
+vt 0.401680 0.875415
+vt 0.408420 0.841035
+vt 0.427804 0.811851
+vt 0.456880 0.792307
+vt 0.491222 0.785377
+vt 0.525602 0.792117
+vt 0.554786 0.811501
+vt 0.574330 0.840577
+vt 0.581260 0.874920
+vt 0.574520 0.909300
+vt 0.555136 0.938483
+vt 0.526059 0.958028
+s 1
+f 5/1 3/2 146/3
+f 66/4 3/5 5/6
+f 67/7 5/6 68/8
+f 68/8 7/9 9/10
+f 69/11 9/10 11/12
+f 70/13 11/12 13/14
+f 71/15 13/14 72/16
+f 72/16 15/17 17/18
+f 73/19 17/18 19/20
+f 74/21 19/20 21/22
+f 75/23 21/22 23/24
+f 76/25 23/24 25/26
+f 77/27 25/26 78/28
+f 78/28 27/29 29/30
+f 79/31 29/30 31/32
+f 2/33 4/34 147/35
+f 81/36 33/37 3/5
+f 80/38 31/39 33/37
+f 129/40 34/41 35/42
+f 114/43 35/42 36/44
+f 115/45 36/44 37/46
+f 116/47 37/46 38/48
+f 117/49 38/48 39/50
+f 118/51 39/50 119/52
+f 119/52 40/53 120/54
+f 120/54 41/55 42/56
+f 121/57 42/56 122/58
+f 122/58 43/59 44/60
+f 123/61 44/60 45/62
+f 124/63 45/62 46/64
+f 125/65 46/64 126/66
+f 126/66 47/67 48/68
+f 128/69 49/70 129/40
+f 127/71 48/72 49/70
+f 34/41 50/73 35/42
+f 35/42 51/74 36/44
+f 36/44 52/75 37/46
+f 37/46 53/76 54/77
+f 38/48 54/77 55/78
+f 39/50 55/78 40/53
+f 40/53 56/79 57/80
+f 41/55 57/80 58/81
+f 42/56 58/81 59/82
+f 43/59 59/82 60/83
+f 44/60 60/83 45/62
+f 45/62 61/84 46/64
+f 46/64 62/85 47/67
+f 47/67 63/86 64/87
+f 49/70 65/88 50/73
+f 48/72 64/89 65/88
+f 50/90 66/4 67/7
+f 51/91 67/7 68/8
+f 52/92 68/8 69/11
+f 53/93 69/11 70/13
+f 54/94 70/13 71/15
+f 55/95 71/15 72/16
+f 56/96 72/16 73/19
+f 57/97 73/19 74/21
+f 58/98 74/21 75/23
+f 59/99 75/23 76/25
+f 60/100 76/25 77/27
+f 61/101 77/27 78/28
+f 62/102 78/28 79/31
+f 63/103 79/31 64/104
+f 65/105 81/36 66/4
+f 64/106 80/38 81/36
+f 2/107 97/108 82/109
+f 4/110 82/109 6/111
+f 6/111 83/112 8/113
+f 8/113 84/114 85/115
+f 10/116 85/115 12/117
+f 12/117 86/118 87/119
+f 14/120 87/119 88/121
+f 16/122 88/121 89/123
+f 18/124 89/123 90/125
+f 20/126 90/125 91/127
+f 22/128 91/127 92/129
+f 24/130 92/129 93/131
+f 26/132 93/131 28/133
+f 28/133 94/134 30/135
+f 32/136 96/137 2/107
+f 30/138 95/139 32/136
+f 82/109 98/140 83/112
+f 83/112 99/141 84/114
+f 84/114 100/142 101/143
+f 85/115 101/143 102/144
+f 86/118 102/144 103/145
+f 87/119 103/145 104/146
+f 88/121 104/146 105/147
+f 89/123 105/147 106/148
+f 90/125 106/148 107/149
+f 91/127 107/149 108/150
+f 92/129 108/150 109/151
+f 93/131 109/151 110/152
+f 94/134 110/152 111/153
+f 96/137 112/154 113/155
+f 95/139 111/156 112/154
+f 113/155 129/40 114/43
+f 98/140 114/43 99/141
+f 99/141 115/45 116/47
+f 100/142 116/47 117/49
+f 101/143 117/49 102/144
+f 102/144 118/51 119/52
+f 103/145 119/52 120/54
+f 104/146 120/54 105/147
+f 105/147 121/57 122/58
+f 106/148 122/58 123/61
+f 107/149 123/61 108/150
+f 108/150 124/63 125/65
+f 109/151 125/65 126/66
+f 110/152 126/66 111/153
+f 112/154 128/69 129/40
+f 111/156 127/71 128/69
+f 97/108 113/155 82/109
+f 61/84 62/85 46/64
+f 13/14 15/17 72/16
+f 126/66 127/157 111/153
+f 55/78 56/79 40/53
+f 40/53 41/55 120/54
+f 85/115 86/118 12/117
+f 117/49 118/51 102/144
+f 67/7 66/4 5/6
+f 69/11 68/8 9/10
+f 70/13 69/11 11/12
+f 71/15 70/13 13/14
+f 73/19 72/16 17/18
+f 74/21 73/19 19/20
+f 75/23 74/21 21/22
+f 76/25 75/23 23/24
+f 77/27 76/25 25/26
+f 79/31 78/28 29/30
+f 80/158 79/31 31/32
+f 66/4 81/36 3/5
+f 81/36 80/38 33/37
+f 114/43 129/40 35/42
+f 115/45 114/43 36/44
+f 116/47 115/45 37/46
+f 117/49 116/47 38/48
+f 118/51 117/49 39/50
+f 39/50 40/53 119/52
+f 60/83 61/84 45/62
+f 121/57 120/54 42/56
+f 99/141 100/142 84/114
+f 123/61 122/58 44/60
+f 124/63 123/61 45/62
+f 125/65 124/63 46/64
+f 127/157 126/66 48/68
+f 128/69 127/71 49/70
+f 79/31 80/158 64/104
+f 38/48 37/46 54/77
+f 39/50 38/48 55/78
+f 41/55 40/53 57/80
+f 42/56 41/55 58/81
+f 43/59 42/56 59/82
+f 44/60 43/59 60/83
+f 48/68 47/67 64/87
+f 34/41 49/70 50/73
+f 49/70 48/72 65/88
+f 51/91 50/90 67/7
+f 52/92 51/91 68/8
+f 53/93 52/92 69/11
+f 54/94 53/93 70/13
+f 55/95 54/94 71/15
+f 56/96 55/95 72/16
+f 57/97 56/96 73/19
+f 58/98 57/97 74/21
+f 59/99 58/98 75/23
+f 60/100 59/99 76/25
+f 61/101 60/100 77/27
+f 62/102 61/101 78/28
+f 63/103 62/102 79/31
+f 50/90 65/105 66/4
+f 65/105 64/106 81/36
+f 4/110 2/107 82/109
+f 10/116 8/113 85/115
+f 14/120 12/117 87/119
+f 16/122 14/120 88/121
+f 18/124 16/122 89/123
+f 20/126 18/124 90/125
+f 22/128 20/126 91/127
+f 24/130 22/128 92/129
+f 26/132 24/130 93/131
+f 93/131 94/134 28/133
+f 94/134 95/159 30/135
+f 96/137 97/108 2/107
+f 95/139 96/137 32/136
+f 85/115 84/114 101/143
+f 86/118 85/115 102/144
+f 87/119 86/118 103/145
+f 88/121 87/119 104/146
+f 89/123 88/121 105/147
+f 90/125 89/123 106/148
+f 91/127 90/125 107/149
+f 92/129 91/127 108/150
+f 93/131 92/129 109/151
+f 94/134 93/131 110/152
+f 95/159 94/134 111/153
+f 97/108 96/137 113/155
+f 96/137 95/139 112/154
+f 98/140 113/155 114/43
+f 100/142 99/141 116/47
+f 101/143 100/142 117/49
+f 103/145 102/144 119/52
+f 104/146 103/145 120/54
+f 106/148 105/147 122/58
+f 107/149 106/148 123/61
+f 113/155 98/140 82/109
+f 109/151 108/150 125/65
+f 110/152 109/151 126/66
+f 113/155 112/154 129/40
+f 112/154 111/156 128/69
+f 5/6 7/9 68/8
+f 51/74 52/75 36/44
+f 82/109 83/112 6/111
+f 49/70 34/41 129/40
+f 52/75 53/76 37/46
+f 120/54 121/57 105/147
+f 98/140 99/141 83/112
+f 50/73 51/74 35/42
+f 62/85 63/86 47/67
+f 83/112 84/114 8/113
+f 114/43 115/45 99/141
+f 123/61 124/63 108/150
+f 25/26 27/29 78/28
+f 42/56 43/59 122/58
+f 46/64 47/67 126/66
+f 3/2 33/160 146/3
+f 33/160 31/161 146/3
+f 31/161 29/162 146/3
+f 29/162 27/163 146/3
+f 27/163 25/164 146/3
+f 25/164 23/165 146/3
+f 23/165 21/166 146/3
+f 21/166 19/167 146/3
+f 19/167 17/168 146/3
+f 17/168 15/169 146/3
+f 15/169 13/170 146/3
+f 13/170 11/171 146/3
+f 11/171 9/172 146/3
+f 9/172 7/173 146/3
+f 7/173 5/1 146/3
+f 4/34 6/174 147/35
+f 6/174 8/175 147/35
+f 8/175 10/176 147/35
+f 10/176 12/177 147/35
+f 12/177 14/178 147/35
+f 14/178 16/179 147/35
+f 16/179 18/180 147/35
+f 18/180 20/181 147/35
+f 20/181 22/182 147/35
+f 22/182 24/183 147/35
+f 24/183 26/184 147/35
+f 26/184 28/185 147/35
+f 28/185 30/186 147/35
+f 30/186 32/187 147/35
+f 32/187 2/33 147/35
diff --git a/homedecor_modpack/homedecor/models/homedecor_calendar.obj b/homedecor_modpack/homedecor/models/homedecor_calendar.obj
new file mode 100644
index 0000000..f97dcb2
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_calendar.obj
@@ -0,0 +1,68 @@
+# Blender v2.73 (sub 0) OBJ File: 'calendar.blend'
+# www.blender.org
+o Cylinder
+v -0.250000 -0.500000 -0.500000
+v -0.250000 -0.375000 -0.500000
+v 0.250000 -0.375000 -0.500000
+v 0.250000 -0.500000 -0.500000
+v -0.250000 -0.500000 0.187500
+v -0.250000 -0.375000 0.187500
+v 0.250000 -0.375000 0.187500
+v 0.250000 -0.500000 0.187500
+v 0.187500 -0.500000 0.312499
+v 0.187500 -0.250000 0.312499
+v 0.187500 -0.250000 0.062499
+v 0.187500 -0.500000 0.062499
+v 0.187500 -0.250000 0.312499
+v 0.187500 -0.500000 0.312499
+v -0.187500 -0.250000 0.312499
+v -0.187500 -0.500000 0.312499
+v -0.000000 -0.500000 0.312499
+v 0.000000 -0.250000 0.312499
+v -0.187500 -0.500000 0.312499
+v -0.187500 -0.250000 0.312499
+v -0.000000 -0.500000 0.062499
+v -0.000000 -0.250000 0.062499
+v 0.000000 -0.250000 0.312499
+v -0.000000 -0.500000 0.312499
+v -0.187500 -0.250000 0.062499
+v -0.187500 -0.500000 0.062499
+vt 0.781250 0.843750
+vt 0.656250 0.843750
+vt 0.656250 0.156250
+vt 0.781250 0.156250
+vt 0.156250 0.843750
+vt 0.156250 0.156250
+vt 0.031250 0.843750
+vt 0.031250 0.156250
+vt 0.968750 0.656250
+vt 0.812500 0.656250
+vt 0.812500 0.468750
+vt 0.968750 0.468750
+vt 0.656250 0.031250
+vt 0.156250 0.031250
+vt 0.968750 1.000000
+vt 0.718750 1.000000
+vt 0.718750 0.750000
+vt 0.968750 0.750000
+vt 0.656250 0.968750
+vt 0.156250 0.968750
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/2/2 7/5/2 3/6/2 2/3/2
+f 7/5/3 8/7/3 4/8/3 3/6/3
+f 8/9/4 5/10/4 1/11/4 4/12/4
+f 1/13/5 2/3/5 3/6/5 4/14/5
+f 13/15/3 14/16/3 12/17/3 11/18/3
+f 24/16/1 23/15/1 22/18/1 21/17/1
+f 9/16/1 10/15/1 11/18/1 12/17/1
+f 15/15/3 16/16/3 26/17/3 25/18/3
+f 18/15/3 17/16/3 21/17/3 22/18/3
+f 19/16/1 20/15/1 25/18/1 26/17/1
+f 5/19/6 8/20/6 7/5/6 6/2/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_candle_thick.obj b/homedecor_modpack/homedecor/models/homedecor_candle_thick.obj
new file mode 100644
index 0000000..8c3586a
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_candle_thick.obj
@@ -0,0 +1,165 @@
+# Blender v2.73 (sub 0) OBJ File: 'candle-large.blend'
+# www.blender.org
+o Cylinder
+v 0.088388 0.375000 0.088388
+v 0.088388 -0.000000 0.088388
+v 0.000000 -0.500000 -0.125000
+v 0.000000 0.000000 -0.125000
+v 0.047835 -0.500000 -0.115485
+v 0.047835 0.000000 -0.115485
+v 0.088388 -0.500000 -0.088388
+v 0.088388 0.000000 -0.088388
+v 0.115485 -0.500000 -0.047835
+v 0.115485 0.000000 -0.047835
+v 0.125000 -0.500000 0.000000
+v 0.125000 0.000000 0.000000
+v 0.115485 -0.500000 0.047835
+v 0.115485 0.000000 0.047835
+v 0.088388 -0.500000 0.088388
+v 0.088388 0.000000 0.088388
+v 0.047835 -0.500000 0.115485
+v 0.047835 0.000000 0.115485
+v 0.000000 -0.500000 0.125000
+v 0.000000 0.000000 0.125000
+v -0.047835 -0.500000 0.115485
+v -0.047835 0.000000 0.115485
+v -0.088388 -0.500000 0.088388
+v -0.088388 0.000000 0.088388
+v -0.115485 -0.500000 0.047835
+v -0.115485 0.000000 0.047835
+v -0.125000 -0.500000 -0.000000
+v -0.125000 0.000000 -0.000000
+v -0.115485 -0.500000 -0.047835
+v -0.115485 0.000000 -0.047835
+v -0.088388 -0.500000 -0.088388
+v -0.088388 0.000000 -0.088388
+v -0.047835 -0.500000 -0.115485
+v -0.047835 0.000000 -0.115485
+v -0.088388 0.000000 -0.088388
+v -0.088388 0.375000 -0.088388
+v 0.088388 0.375000 -0.088388
+v 0.088388 -0.000000 -0.088388
+v -0.088388 0.000000 0.088388
+v -0.088388 0.375000 0.088388
+v 0.088388 0.375000 0.088388
+v 0.088388 -0.000000 0.088388
+v -0.088388 0.000000 -0.088388
+v -0.088388 0.375000 -0.088388
+v 0.088388 0.375000 -0.088388
+v 0.088388 -0.000000 -0.088388
+v -0.088388 0.000000 0.088388
+v -0.088388 0.375000 0.088388
+vt 0.500000 -0.000000
+vt 0.500000 0.500000
+vt 0.437500 0.500000
+vt 0.437500 -0.000000
+vt 0.375000 0.500000
+vt 0.375000 -0.000000
+vt 0.312500 0.500000
+vt 0.312500 -0.000000
+vt 0.250000 0.500000
+vt 0.250000 -0.000000
+vt 0.187500 0.500000
+vt 0.187500 -0.000000
+vt 0.125000 0.500000
+vt 0.125000 -0.000000
+vt 0.062500 0.500000
+vt 0.062500 -0.000000
+vt -0.000000 0.500000
+vt -0.000000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.500000
+vt 0.937500 0.500000
+vt 0.937500 -0.000000
+vt 0.875000 0.500000
+vt 0.875000 -0.000000
+vt 0.812500 0.500000
+vt 0.812500 -0.000000
+vt 0.750000 0.500000
+vt 0.750000 -0.000000
+vt 0.687500 0.500000
+vt 0.687500 -0.000000
+vt 0.625000 0.500000
+vt 0.625000 -0.000000
+vt 0.476190 0.785650
+vt 0.488110 0.783278
+vt 0.498216 0.776526
+vt 0.504969 0.766420
+vt 0.507340 0.754500
+vt 0.504969 0.742579
+vt 0.498216 0.732474
+vt 0.488110 0.725721
+vt 0.476190 0.723350
+vt 0.464269 0.725721
+vt 0.454164 0.732474
+vt 0.447411 0.742579
+vt 0.445040 0.754500
+vt 0.447411 0.766420
+vt 0.454164 0.776526
+vt 0.464269 0.783278
+vt 0.562500 -0.000000
+vt 0.562500 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 0.000000 -0.665700 -0.746200
+vn 0.000000 0.665700 -0.746200
+vn 0.285500 0.665700 -0.689400
+vn 0.285500 -0.665700 -0.689400
+vn 0.527600 0.665700 -0.527600
+vn 0.527600 -0.665700 -0.527600
+vn 0.689400 0.665700 -0.285500
+vn 0.689400 -0.665700 -0.285500
+vn 0.746200 0.665700 0.000000
+vn 0.746200 -0.665700 0.000000
+vn 0.689400 0.665700 0.285500
+vn 0.689400 -0.665700 0.285500
+vn 0.527600 0.665700 0.527600
+vn 0.527600 -0.665700 0.527600
+vn 0.285500 0.665700 0.689400
+vn 0.285500 -0.665700 0.689400
+vn 0.000000 0.665700 0.746200
+vn 0.000000 -0.665700 0.746200
+vn -0.285500 0.665700 0.689400
+vn -0.285500 -0.665700 0.689400
+vn -0.527600 0.665700 0.527600
+vn -0.527600 -0.665700 0.527600
+vn -0.689400 0.665700 0.285500
+vn -0.689400 -0.665700 0.285500
+vn -0.746200 0.665700 0.000000
+vn -0.746200 -0.665700 0.000000
+vn -0.689400 0.665700 -0.285500
+vn -0.689400 -0.665700 -0.285500
+vn -0.527600 0.665700 -0.527600
+vn -0.527600 -0.665700 -0.527600
+vn -0.285500 0.665700 -0.689400
+vn -0.285500 -0.665700 -0.689400
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.707100 -0.000000 -0.707100
+vn 0.707100 -0.000000 -0.707100
+g Cylinder_Cylinder_candle
+s 1
+f 3/1/1 4/2/2 6/3/3 5/4/4
+f 5/4/4 6/3/3 8/5/5 7/6/6
+f 7/6/6 8/5/5 10/7/7 9/8/8
+f 9/8/8 10/7/7 12/9/9 11/10/10
+f 11/10/10 12/9/9 14/11/11 13/12/12
+f 13/12/12 14/11/11 16/13/13 15/14/14
+f 15/14/14 16/13/13 18/15/15 17/16/16
+f 17/16/16 18/15/15 20/17/17 19/18/18
+f 19/19/18 20/20/17 22/21/19 21/22/20
+f 21/22/20 22/21/19 24/23/21 23/24/22
+f 23/24/22 24/23/21 26/25/23 25/26/24
+f 25/26/24 26/25/23 28/27/25 27/28/26
+f 27/28/26 28/27/25 30/29/27 29/30/28
+f 29/30/28 30/29/27 32/31/29 31/32/30
+f 6/33/3 4/34/2 34/35/31 32/36/29 30/37/27 28/38/25 26/39/23 24/40/21 22/41/19 20/42/17 18/43/15 16/44/13 14/45/11 12/46/9 10/47/7 8/48/5
+f 33/49/32 34/50/31 4/2/2 3/1/1
+f 31/32/30 32/31/29 34/50/31 33/49/32
+f 3/33/1 5/34/4 7/35/6 9/36/8 11/37/10 13/38/12 15/39/14 17/40/16 19/41/18 21/42/20 23/43/22 25/44/24 27/45/26 29/46/28 31/47/30 33/48/32
+g Cylinder_Cylinder_flame
+s off
+f 38/19/33 37/51/33 40/52/33 39/18/33
+f 2/19/34 1/51/34 36/52/34 35/18/34
+f 46/19/35 47/18/35 48/52/35 45/51/35
+f 42/19/36 43/18/36 44/52/36 41/51/36
diff --git a/homedecor_modpack/homedecor/models/homedecor_candle_thin.obj b/homedecor_modpack/homedecor/models/homedecor_candle_thin.obj
new file mode 100644
index 0000000..1c54f11
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_candle_thin.obj
@@ -0,0 +1,165 @@
+# Blender v2.73 (sub 0) OBJ File: 'candle-small.blend'
+# www.blender.org
+o Cylinder
+v 0.044194 0.062500 0.044194
+v 0.044194 -0.187500 0.044194
+v 0.000000 -0.500000 -0.062500
+v 0.000000 -0.187500 -0.062500
+v 0.023918 -0.500000 -0.057742
+v 0.023918 -0.187500 -0.057742
+v 0.044194 -0.500000 -0.044194
+v 0.044194 -0.187500 -0.044194
+v 0.057742 -0.500000 -0.023918
+v 0.057742 -0.187500 -0.023918
+v 0.062500 -0.500000 0.000000
+v 0.062500 -0.187500 0.000000
+v 0.057742 -0.500000 0.023918
+v 0.057742 -0.187500 0.023918
+v 0.044194 -0.500000 0.044194
+v 0.044194 -0.187500 0.044194
+v 0.023918 -0.500000 0.057742
+v 0.023918 -0.187500 0.057742
+v 0.000000 -0.500000 0.062500
+v 0.000000 -0.187500 0.062500
+v -0.023918 -0.500000 0.057742
+v -0.023918 -0.187500 0.057742
+v -0.044194 -0.500000 0.044194
+v -0.044194 -0.187500 0.044194
+v -0.057742 -0.500000 0.023918
+v -0.057742 -0.187500 0.023918
+v -0.062500 -0.500000 0.000000
+v -0.062500 -0.187500 0.000000
+v -0.057742 -0.500000 -0.023918
+v -0.057742 -0.187500 -0.023918
+v -0.044194 -0.500000 -0.044194
+v -0.044194 -0.187500 -0.044194
+v -0.023918 -0.500000 -0.057742
+v -0.023918 -0.187500 -0.057742
+v -0.044194 -0.187500 -0.044194
+v -0.044194 0.062500 -0.044194
+v 0.044194 0.062500 -0.044194
+v 0.044194 -0.187500 -0.044194
+v -0.044194 -0.187500 0.044194
+v -0.044194 0.062500 0.044194
+v 0.044194 0.062500 0.044194
+v 0.044194 -0.187500 0.044194
+v -0.044194 -0.187500 -0.044194
+v -0.044194 0.062500 -0.044194
+v 0.044194 0.062500 -0.044194
+v 0.044194 -0.187500 -0.044194
+v -0.044194 -0.187500 0.044194
+v -0.044194 0.062500 0.044194
+vt 0.500000 -0.000000
+vt 0.500000 0.500000
+vt 0.437500 0.500000
+vt 0.437500 -0.000000
+vt 0.375000 0.500000
+vt 0.375000 -0.000000
+vt 0.312500 0.500000
+vt 0.312500 -0.000000
+vt 0.250000 0.500000
+vt 0.250000 -0.000000
+vt 0.187500 0.500000
+vt 0.187500 -0.000000
+vt 0.125000 0.500000
+vt 0.125000 -0.000000
+vt 0.062500 0.500000
+vt 0.062500 -0.000000
+vt -0.000000 0.500000
+vt -0.000000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.500000
+vt 0.937500 0.500000
+vt 0.937500 -0.000000
+vt 0.875000 0.500000
+vt 0.875000 -0.000000
+vt 0.812500 0.500000
+vt 0.812500 -0.000000
+vt 0.750000 0.500000
+vt 0.750000 -0.000000
+vt 0.687500 0.500000
+vt 0.687500 -0.000000
+vt 0.625000 0.500000
+vt 0.625000 -0.000000
+vt 0.476190 0.785650
+vt 0.488110 0.783278
+vt 0.498216 0.776526
+vt 0.504969 0.766420
+vt 0.507340 0.754500
+vt 0.504969 0.742579
+vt 0.498216 0.732474
+vt 0.488110 0.725721
+vt 0.476190 0.723350
+vt 0.464269 0.725721
+vt 0.454164 0.732474
+vt 0.447411 0.742579
+vt 0.445040 0.754500
+vt 0.447411 0.766420
+vt 0.454164 0.776526
+vt 0.464269 0.783278
+vt 0.562500 -0.000000
+vt 0.562500 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 0.000000 -0.665700 -0.746200
+vn 0.000000 0.665700 -0.746200
+vn 0.285500 0.665700 -0.689400
+vn 0.285500 -0.665700 -0.689400
+vn 0.527600 0.665700 -0.527600
+vn 0.527600 -0.665700 -0.527600
+vn 0.689400 0.665700 -0.285500
+vn 0.689400 -0.665700 -0.285500
+vn 0.746200 0.665700 0.000000
+vn 0.746200 -0.665700 0.000000
+vn 0.689400 0.665700 0.285500
+vn 0.689400 -0.665700 0.285500
+vn 0.527600 0.665700 0.527600
+vn 0.527600 -0.665700 0.527600
+vn 0.285500 0.665700 0.689400
+vn 0.285500 -0.665700 0.689400
+vn 0.000000 0.665700 0.746200
+vn 0.000000 -0.665700 0.746200
+vn -0.285500 0.665700 0.689400
+vn -0.285500 -0.665700 0.689400
+vn -0.527600 0.665700 0.527600
+vn -0.527600 -0.665700 0.527600
+vn -0.689400 0.665700 0.285500
+vn -0.689400 -0.665700 0.285500
+vn -0.746200 0.665700 0.000000
+vn -0.746200 -0.665700 0.000000
+vn -0.689400 0.665700 -0.285500
+vn -0.689400 -0.665700 -0.285500
+vn -0.527600 0.665700 -0.527600
+vn -0.527600 -0.665700 -0.527600
+vn -0.285500 0.665700 -0.689400
+vn -0.285500 -0.665700 -0.689400
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.707100 -0.000000 -0.707100
+vn 0.707100 -0.000000 -0.707100
+g Cylinder_Cylinder_candle
+s 1
+f 3/1/1 4/2/2 6/3/3 5/4/4
+f 5/4/4 6/3/3 8/5/5 7/6/6
+f 7/6/6 8/5/5 10/7/7 9/8/8
+f 9/8/8 10/7/7 12/9/9 11/10/10
+f 11/10/10 12/9/9 14/11/11 13/12/12
+f 13/12/12 14/11/11 16/13/13 15/14/14
+f 15/14/14 16/13/13 18/15/15 17/16/16
+f 17/16/16 18/15/15 20/17/17 19/18/18
+f 19/19/18 20/20/17 22/21/19 21/22/20
+f 21/22/20 22/21/19 24/23/21 23/24/22
+f 23/24/22 24/23/21 26/25/23 25/26/24
+f 25/26/24 26/25/23 28/27/25 27/28/26
+f 27/28/26 28/27/25 30/29/27 29/30/28
+f 29/30/28 30/29/27 32/31/29 31/32/30
+f 6/33/3 4/34/2 34/35/31 32/36/29 30/37/27 28/38/25 26/39/23 24/40/21 22/41/19 20/42/17 18/43/15 16/44/13 14/45/11 12/46/9 10/47/7 8/48/5
+f 33/49/32 34/50/31 4/2/2 3/1/1
+f 31/32/30 32/31/29 34/50/31 33/49/32
+f 3/33/1 5/34/4 7/35/6 9/36/8 11/37/10 13/38/12 15/39/14 17/40/16 19/41/18 21/42/20 23/43/22 25/44/24 27/45/26 29/46/28 31/47/30 33/48/32
+g Cylinder_Cylinder_flame
+s off
+f 38/19/33 37/51/33 40/52/33 39/18/33
+f 2/19/34 1/51/34 36/52/34 35/18/34
+f 46/19/35 47/18/35 48/52/35 45/51/35
+f 42/19/36 43/18/36 44/52/36 41/51/36
diff --git a/homedecor_modpack/homedecor/models/homedecor_candlestick.obj b/homedecor_modpack/homedecor/models/homedecor_candlestick.obj
new file mode 100644
index 0000000..2b81571
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_candlestick.obj
@@ -0,0 +1,716 @@
+# Blender v2.73 (sub 0) OBJ File: 'candlestick.blend'
+# www.blender.org
+o Cylinder
+v 0.044194 0.375000 0.044194
+v 0.044194 0.125000 0.044194
+v 0.000000 -0.125000 -0.062500
+v 0.000000 0.125000 -0.062500
+v 0.023918 -0.125000 -0.057742
+v 0.023918 0.125000 -0.057742
+v 0.044194 -0.125000 -0.044194
+v 0.044194 0.125000 -0.044194
+v 0.057742 -0.125000 -0.023918
+v 0.057742 0.125000 -0.023918
+v 0.062500 -0.125000 0.000000
+v 0.062500 0.125000 0.000000
+v 0.057742 -0.125000 0.023918
+v 0.057742 0.125000 0.023918
+v 0.044194 -0.125000 0.044194
+v 0.044194 0.125000 0.044194
+v 0.023918 -0.125000 0.057742
+v 0.023918 0.125000 0.057742
+v 0.000000 -0.125000 0.062500
+v 0.000000 0.125000 0.062500
+v -0.023918 -0.125000 0.057742
+v -0.023918 0.125000 0.057742
+v -0.044194 -0.125000 0.044194
+v -0.044194 0.125000 0.044194
+v -0.057742 -0.125000 0.023918
+v -0.057742 0.125000 0.023918
+v -0.062500 -0.125000 0.000000
+v -0.062500 0.125000 0.000000
+v -0.057742 -0.125000 -0.023918
+v -0.057742 0.125000 -0.023918
+v -0.044194 -0.125000 -0.044194
+v -0.044194 0.125000 -0.044194
+v -0.023918 -0.125000 -0.057742
+v -0.023918 0.125000 -0.057742
+v -0.044194 0.125000 -0.044194
+v -0.044194 0.375000 -0.044194
+v 0.044194 0.375000 -0.044194
+v 0.044194 0.125000 -0.044194
+v -0.044194 0.125000 0.044194
+v -0.044194 0.375000 0.044194
+v 0.044194 0.375000 0.044194
+v 0.044194 0.125000 0.044194
+v -0.044194 0.125000 -0.044194
+v -0.044194 0.375000 -0.044194
+v 0.044194 0.375000 -0.044194
+v 0.044194 0.125000 -0.044194
+v -0.044194 0.125000 0.044194
+v -0.044194 0.375000 0.044194
+v -0.000000 -0.500000 -0.135000
+v -0.000000 -0.125000 -0.075000
+v 0.051662 -0.500000 -0.124724
+v 0.028701 -0.125000 -0.069291
+v 0.095459 -0.500000 -0.095459
+v 0.053033 -0.125000 -0.053033
+v 0.124724 -0.500000 -0.051662
+v 0.069291 -0.125000 -0.028701
+v 0.135000 -0.500000 0.000000
+v 0.075000 -0.125000 0.000000
+v 0.124724 -0.500000 0.051662
+v 0.069291 -0.125000 0.028701
+v 0.095459 -0.500000 0.095459
+v 0.053033 -0.125000 0.053033
+v 0.051662 -0.500000 0.124724
+v 0.028701 -0.125000 0.069291
+v 0.000000 -0.500000 0.135000
+v 0.000000 -0.125000 0.075000
+v -0.051662 -0.500000 0.124724
+v -0.028701 -0.125000 0.069291
+v -0.095459 -0.500000 0.095459
+v -0.053033 -0.125000 0.053033
+v -0.124724 -0.500000 0.051662
+v -0.069291 -0.125000 0.028701
+v -0.135000 -0.500000 -0.000000
+v -0.075000 -0.125000 -0.000000
+v -0.124724 -0.500000 -0.051662
+v -0.069291 -0.125000 -0.028701
+v -0.095459 -0.500000 -0.095459
+v -0.053033 -0.125000 -0.053033
+v -0.051662 -0.500000 -0.124724
+v -0.028701 -0.125000 -0.069291
+v 0.000000 -0.312500 -0.018750
+v 0.007175 -0.312500 -0.017323
+v 0.013258 -0.312500 -0.013258
+v 0.017323 -0.312500 -0.007175
+v 0.018750 -0.312500 -0.000000
+v 0.017323 -0.312500 0.007175
+v 0.013258 -0.312500 0.013258
+v 0.007175 -0.312500 0.017323
+v 0.000000 -0.312500 0.018750
+v -0.007175 -0.312500 0.017323
+v -0.013258 -0.312500 0.013258
+v -0.017323 -0.312500 0.007175
+v -0.018750 -0.312500 -0.000000
+v -0.017323 -0.312500 -0.007175
+v -0.013258 -0.312500 -0.013258
+v -0.007175 -0.312500 -0.017323
+v 0.000000 -0.218750 -0.037500
+v 0.008610 -0.406250 -0.020787
+v 0.015910 -0.406250 -0.015910
+v 0.020787 -0.406250 -0.008610
+v 0.022500 -0.406250 -0.000000
+v 0.020787 -0.406250 0.008610
+v 0.015910 -0.406250 0.015910
+v 0.008610 -0.406250 0.020787
+v 0.000000 -0.406250 0.022500
+v -0.008610 -0.406250 0.020787
+v -0.015910 -0.406250 0.015910
+v -0.020787 -0.406250 0.008610
+v -0.022500 -0.406250 -0.000000
+v -0.020787 -0.406250 -0.008610
+v -0.015910 -0.406250 -0.015910
+v -0.008610 -0.406250 -0.020787
+v 0.000000 -0.406250 -0.022500
+v 0.014351 -0.218750 -0.034645
+v 0.026517 -0.218750 -0.026517
+v 0.034645 -0.218750 -0.014351
+v 0.037500 -0.218750 -0.000000
+v 0.034645 -0.218750 0.014351
+v 0.026517 -0.218750 0.026516
+v 0.014351 -0.218750 0.034645
+v 0.000000 -0.218750 0.037500
+v -0.014351 -0.218750 0.034645
+v -0.026516 -0.218750 0.026517
+v -0.034645 -0.218750 0.014351
+v -0.037500 -0.218750 -0.000000
+v -0.034645 -0.218750 -0.014351
+v -0.026516 -0.218750 -0.026517
+v -0.014351 -0.218750 -0.034645
+v -0.000000 -0.171875 -0.075000
+v 0.040182 -0.453125 -0.097007
+v 0.074246 -0.453125 -0.074246
+v 0.097007 -0.453125 -0.040182
+v 0.105000 -0.453125 0.000000
+v 0.097007 -0.453125 0.040182
+v 0.074246 -0.453125 0.074246
+v 0.040182 -0.453125 0.097007
+v 0.000000 -0.453125 0.105000
+v -0.040182 -0.453125 0.097007
+v -0.074246 -0.453125 0.074246
+v -0.097007 -0.453125 0.040182
+v -0.105000 -0.453125 -0.000000
+v -0.097007 -0.453125 -0.040182
+v -0.074246 -0.453125 -0.074246
+v -0.040182 -0.453125 -0.097007
+v 0.000000 -0.359375 -0.037500
+v 0.014351 -0.265625 -0.034645
+v 0.026517 -0.265625 -0.026517
+v 0.034645 -0.265625 -0.014351
+v 0.037500 -0.265625 -0.000000
+v 0.034645 -0.265625 0.014351
+v 0.026517 -0.265625 0.026516
+v 0.014351 -0.265625 0.034645
+v 0.000000 -0.265625 0.037500
+v -0.014351 -0.265625 0.034645
+v -0.026516 -0.265625 0.026517
+v -0.034645 -0.265625 0.014351
+v -0.037500 -0.265625 -0.000000
+v -0.034645 -0.265625 -0.014351
+v -0.026516 -0.265625 -0.026517
+v -0.014351 -0.265625 -0.034645
+v 0.000000 -0.265625 -0.037500
+v 0.014351 -0.359375 -0.034645
+v 0.026517 -0.359375 -0.026517
+v 0.034645 -0.359375 -0.014351
+v 0.037500 -0.359375 -0.000000
+v 0.034645 -0.359375 0.014351
+v 0.026517 -0.359375 0.026516
+v 0.014351 -0.359375 0.034645
+v 0.000000 -0.359375 0.037500
+v -0.014351 -0.359375 0.034645
+v -0.026516 -0.359375 0.026517
+v -0.034645 -0.359375 0.014351
+v -0.037500 -0.359375 -0.000000
+v -0.034645 -0.359375 -0.014351
+v -0.026516 -0.359375 -0.026517
+v -0.014351 -0.359375 -0.034645
+v -0.000000 -0.453125 -0.105000
+v 0.028701 -0.171875 -0.069291
+v 0.053033 -0.171875 -0.053033
+v 0.069291 -0.171875 -0.028701
+v 0.075000 -0.171875 0.000000
+v 0.069291 -0.171875 0.028701
+v 0.053033 -0.171875 0.053033
+v 0.028701 -0.171875 0.069291
+v 0.000000 -0.171875 0.075000
+v -0.028701 -0.171875 0.069291
+v -0.053033 -0.171875 0.053033
+v -0.069291 -0.171875 0.028701
+v -0.075000 -0.171875 -0.000000
+v -0.069291 -0.171875 -0.028701
+v -0.053033 -0.171875 -0.053033
+v -0.028701 -0.171875 -0.069291
+vt 0.500000 0.218750
+vt 0.500000 0.500000
+vt 0.437500 0.500000
+vt 0.437500 0.218750
+vt 0.375000 0.500000
+vt 0.375000 0.218750
+vt 0.312500 0.500000
+vt 0.312500 0.218750
+vt 0.250000 0.500000
+vt 0.250000 0.218750
+vt 0.187500 0.500000
+vt 0.187500 0.218750
+vt 0.125000 0.500000
+vt 0.125000 0.218750
+vt 0.062500 0.500000
+vt 0.062500 0.218750
+vt -0.000000 0.500000
+vt 0.000000 0.218750
+vt 1.000000 0.218750
+vt 1.000000 0.500000
+vt 0.937500 0.500000
+vt 0.937500 0.218750
+vt 0.875000 0.500000
+vt 0.875000 0.218750
+vt 0.812500 0.500000
+vt 0.812500 0.218750
+vt 0.750000 0.500000
+vt 0.750000 0.218750
+vt 0.687500 0.500000
+vt 0.687500 0.218750
+vt 0.625000 0.500000
+vt 0.625000 0.218750
+vt 0.476190 0.785650
+vt 0.488110 0.783278
+vt 0.498216 0.776526
+vt 0.504969 0.766420
+vt 0.507340 0.754500
+vt 0.504969 0.742579
+vt 0.498216 0.732474
+vt 0.488110 0.725721
+vt 0.476190 0.723350
+vt 0.464269 0.725721
+vt 0.454164 0.732474
+vt 0.447411 0.742579
+vt 0.445040 0.754500
+vt 0.447411 0.766420
+vt 0.454164 0.776526
+vt 0.464269 0.783278
+vt 0.562500 0.218750
+vt 0.562500 0.500000
+vt 1.000000 -0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt -0.000000 0.000000
+vt 0.625000 0.187500
+vt 0.625000 0.250000
+vt 0.562500 0.250000
+vt 0.562500 0.187500
+vt 0.500000 0.437500
+vt 0.437500 0.437500
+vt 0.375000 0.437500
+vt 0.312500 0.437500
+vt 0.250000 0.437500
+vt 0.187500 0.437500
+vt 0.125000 0.437500
+vt 0.062500 0.437500
+vt 0.000000 0.437500
+vt 1.000000 0.437500
+vt 0.937500 0.437500
+vt 0.875000 0.437500
+vt 0.812500 0.437500
+vt 0.750000 0.437500
+vt 0.687500 0.437500
+vt 0.625000 0.437500
+vt 0.342117 0.694937
+vt 0.313043 0.700720
+vt 0.283969 0.694937
+vt 0.259322 0.678468
+vt 0.242853 0.653821
+vt 0.237070 0.624747
+vt 0.242853 0.595674
+vt 0.259322 0.571027
+vt 0.283969 0.554558
+vt 0.313043 0.548775
+vt 0.342117 0.554558
+vt 0.366764 0.571027
+vt 0.383233 0.595674
+vt 0.389016 0.624747
+vt 0.383233 0.653821
+vt 0.366764 0.678468
+vt 0.562500 0.437500
+vt 0.562692 0.804043
+vt 0.601627 0.796298
+vt 0.634634 0.774244
+vt 0.656688 0.741237
+vt 0.664433 0.702303
+vt 0.656688 0.663368
+vt 0.634634 0.630362
+vt 0.601627 0.608307
+vt 0.562692 0.600563
+vt 0.523758 0.608307
+vt 0.490751 0.630361
+vt 0.468697 0.663368
+vt 0.460952 0.702303
+vt 0.468697 0.741237
+vt 0.490751 0.774244
+vt 0.523758 0.796298
+vt 0.500000 0.250000
+vt 0.500000 0.187500
+vt 0.687500 0.187500
+vt 0.687500 0.250000
+vt 0.750000 0.187500
+vt 0.750000 0.250000
+vt 0.812500 0.187500
+vt 0.812500 0.250000
+vt 0.875000 0.187500
+vt 0.875000 0.250000
+vt 0.937500 0.187500
+vt 0.937500 0.250000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 0.062500 0.187500
+vt 0.062500 0.250000
+vt 0.000000 0.250000
+vt 0.000000 0.187500
+vt 0.125000 0.187500
+vt 0.125000 0.250000
+vt 0.187500 0.187500
+vt 0.187500 0.250000
+vt 0.250000 0.187500
+vt 0.250000 0.250000
+vt 0.312500 0.187500
+vt 0.312500 0.250000
+vt 0.375000 0.187500
+vt 0.375000 0.250000
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 0.500000 0.062500
+vt 0.500000 0.125000
+vt 0.437500 0.125000
+vt 0.437500 0.062500
+vt 0.375000 0.125000
+vt 0.375000 0.062500
+vt 0.312500 0.125000
+vt 0.312500 0.062500
+vt 0.250000 0.125000
+vt 0.250000 0.062500
+vt 0.187500 0.125000
+vt 0.187500 0.062500
+vt 0.125000 0.125000
+vt 0.125000 0.062500
+vt 0.062500 0.125000
+vt 0.062500 0.062500
+vt 0.000000 0.125000
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 1.000000 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.062500
+vt 0.875000 0.125000
+vt 0.875000 0.062500
+vt 0.812500 0.125000
+vt 0.812500 0.062500
+vt 0.750000 0.125000
+vt 0.750000 0.062500
+vt 0.687500 0.125000
+vt 0.687500 0.062500
+vt 0.625000 0.125000
+vt 0.625000 0.062500
+vt 0.562500 0.062500
+vt 0.562500 0.125000
+vt 0.625000 0.312500
+vt 0.625000 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.312500
+vt 0.500000 0.375000
+vt 0.500000 0.312500
+vt 0.687500 0.312500
+vt 0.687500 0.375000
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.812500 0.312500
+vt 0.812500 0.375000
+vt 0.875000 0.312500
+vt 0.875000 0.375000
+vt 0.937500 0.312500
+vt 0.937500 0.375000
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 0.062500 0.312500
+vt 0.062500 0.375000
+vt 0.000000 0.375000
+vt 0.000000 0.312500
+vt 0.125000 0.312500
+vt 0.125000 0.375000
+vt 0.187500 0.312500
+vt 0.187500 0.375000
+vt 0.250000 0.312500
+vt 0.250000 0.375000
+vt 0.312500 0.312500
+vt 0.312500 0.375000
+vt 0.375000 0.312500
+vt 0.375000 0.375000
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.625000 -0.000000
+vt 0.562500 -0.000000
+vt 0.500000 -0.000000
+vt 0.687500 -0.000000
+vt 0.750000 -0.000000
+vt 0.812500 -0.000000
+vt 0.875000 -0.000000
+vt 0.937500 -0.000000
+vt 0.062500 -0.000000
+vt 0.125000 -0.000000
+vt 0.187500 -0.000000
+vt 0.250000 -0.000000
+vt 0.312500 -0.000000
+vt 0.375000 -0.000000
+vt 0.437500 -0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.665700 -0.746200
+vn 0.285500 0.665700 -0.689400
+vn 0.382700 0.000000 -0.923900
+vn 0.527600 0.665700 -0.527600
+vn 0.707100 0.000000 -0.707100
+vn 0.689400 0.665700 -0.285500
+vn 0.923900 0.000000 -0.382700
+vn 0.746200 0.665700 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.689400 0.665700 0.285500
+vn 0.923900 0.000000 0.382700
+vn 0.527600 0.665700 0.527600
+vn 0.707100 0.000000 0.707100
+vn 0.285500 0.665700 0.689400
+vn 0.382700 0.000000 0.923900
+vn 0.000000 0.665700 0.746200
+vn 0.000000 0.000000 1.000000
+vn -0.285500 0.665700 0.689400
+vn -0.382700 0.000000 0.923900
+vn -0.527600 0.665700 0.527600
+vn -0.707100 0.000000 0.707100
+vn -0.689400 0.665700 0.285500
+vn -0.923900 0.000000 0.382700
+vn -0.746200 0.665700 0.000000
+vn -1.000000 0.000000 -0.000000
+vn -0.689400 0.665700 -0.285500
+vn -0.923900 0.000000 -0.382700
+vn -0.527600 0.665700 -0.527600
+vn -0.707100 0.000000 -0.707100
+vn -0.285500 0.665700 -0.689400
+vn -0.382700 0.000000 -0.923900
+vn -0.706700 0.034000 -0.706700
+vn -0.382500 0.034000 -0.923300
+vn 0.000000 -0.318800 -0.947800
+vn 0.362700 -0.318800 -0.875600
+vn 0.670200 -0.318800 -0.670200
+vn 0.875600 -0.318800 -0.362700
+vn 0.947800 -0.318800 0.000000
+vn 0.875600 -0.318800 0.362700
+vn 0.670200 -0.318800 0.670200
+vn 0.362700 -0.318800 0.875600
+vn 0.000000 -0.318800 0.947800
+vn -0.362700 -0.318800 0.875600
+vn -0.670200 -0.318800 0.670200
+vn -0.875600 -0.318800 0.362700
+vn -0.947800 -0.318800 0.000000
+vn -0.875600 -0.318800 -0.362700
+vn -0.670200 -0.318800 -0.670200
+vn -0.362700 -0.318800 -0.875600
+vn 0.000000 -0.439300 -0.898300
+vn 0.343800 -0.439300 -0.829900
+vn 0.635200 -0.439300 -0.635200
+vn 0.829900 -0.439300 -0.343800
+vn 0.898300 -0.439300 0.000000
+vn 0.829900 -0.439300 0.343800
+vn 0.635200 -0.439300 0.635200
+vn 0.343800 -0.439300 0.829900
+vn 0.000000 -0.439300 0.898300
+vn -0.343800 -0.439300 0.829900
+vn -0.635200 -0.439300 0.635200
+vn -0.829900 -0.439300 0.343800
+vn -0.898300 -0.439300 0.000000
+vn -0.829900 -0.439300 -0.343800
+vn -0.635200 -0.439300 -0.635200
+vn -0.343800 -0.439300 -0.829900
+vn 0.000000 0.034000 -0.999400
+vn -0.923300 0.034000 -0.382500
+vn -0.999400 0.034000 0.000000
+vn -0.923300 0.034000 0.382500
+vn -0.706700 0.034000 0.706700
+vn -0.382500 0.034000 0.923300
+vn 0.000000 0.034000 0.999400
+vn 0.382500 0.034000 0.923300
+vn 0.706700 0.034000 0.706700
+vn 0.923300 0.034000 0.382500
+vn 0.999400 0.034000 0.000000
+vn 0.923300 0.034000 -0.382500
+vn 0.706700 0.034000 -0.706700
+vn 0.382500 0.034000 -0.923300
+vn 0.000000 0.710800 -0.703400
+vn 0.000000 0.393200 -0.919400
+vn 0.351800 0.393200 -0.849500
+vn 0.269100 0.710800 -0.649800
+vn 0.650100 0.393200 -0.650100
+vn 0.497400 0.710800 -0.497400
+vn 0.849500 0.393200 -0.351800
+vn 0.649800 0.710800 -0.269100
+vn 0.919400 0.393200 0.000000
+vn 0.703400 0.710800 0.000000
+vn 0.849500 0.393200 0.351800
+vn 0.649800 0.710800 0.269100
+vn 0.650100 0.393200 0.650100
+vn 0.497400 0.710800 0.497400
+vn 0.351800 0.393200 0.849500
+vn 0.269100 0.710800 0.649800
+vn 0.000000 0.393200 0.919400
+vn 0.000000 0.710800 0.703400
+vn -0.351800 0.393200 0.849500
+vn -0.269100 0.710800 0.649800
+vn -0.650100 0.393200 0.650100
+vn -0.497400 0.710800 0.497400
+vn -0.849500 0.393200 0.351800
+vn -0.649800 0.710800 0.269100
+vn -0.919400 0.393200 0.000000
+vn -0.703400 0.710800 0.000000
+vn -0.849500 0.393200 -0.351800
+vn -0.649800 0.710800 -0.269100
+vn -0.650100 0.393200 -0.650100
+vn -0.497400 0.710800 -0.497400
+vn -0.269100 0.710800 -0.649800
+vn -0.351800 0.393200 -0.849500
+vn -0.694900 -0.184900 -0.694900
+vn -0.663800 -0.344600 -0.663800
+vn -0.359200 -0.344600 -0.867300
+vn -0.376100 -0.184900 -0.907900
+vn 0.000000 -0.344600 -0.938700
+vn 0.000000 -0.184900 -0.982800
+vn -0.907900 -0.184900 -0.376100
+vn -0.867300 -0.344600 -0.359200
+vn -0.982800 -0.184900 0.000000
+vn -0.938700 -0.344600 0.000000
+vn -0.907900 -0.184900 0.376100
+vn -0.867300 -0.344600 0.359200
+vn -0.694900 -0.184900 0.694900
+vn -0.663800 -0.344600 0.663800
+vn -0.376100 -0.184900 0.907900
+vn -0.359200 -0.344600 0.867300
+vn 0.000000 -0.184900 0.982800
+vn 0.000000 -0.344600 0.938700
+vn 0.376100 -0.184900 0.907900
+vn 0.359200 -0.344600 0.867300
+vn 0.694900 -0.184900 0.694900
+vn 0.663800 -0.344600 0.663800
+vn 0.907900 -0.184900 0.376100
+vn 0.867300 -0.344600 0.359200
+vn 0.982800 -0.184900 0.000000
+vn 0.938700 -0.344600 0.000000
+vn 0.907900 -0.184900 -0.376100
+vn 0.867300 -0.344600 -0.359200
+vn 0.694900 -0.184900 -0.694900
+vn 0.663800 -0.344600 -0.663800
+vn 0.376100 -0.184900 -0.907900
+vn 0.359200 -0.344600 -0.867300
+g Cylinder_Cylinder_candle
+s 1
+f 3/1/1 4/2/2 6/3/3 5/4/4
+f 5/4/4 6/3/3 8/5/5 7/6/6
+f 7/6/6 8/5/5 10/7/7 9/8/8
+f 9/8/8 10/7/7 12/9/9 11/10/10
+f 11/10/10 12/9/9 14/11/11 13/12/12
+f 13/12/12 14/11/11 16/13/13 15/14/14
+f 15/14/14 16/13/13 18/15/15 17/16/16
+f 17/16/16 18/15/15 20/17/17 19/18/18
+f 19/19/18 20/20/17 22/21/19 21/22/20
+f 21/22/20 22/21/19 24/23/21 23/24/22
+f 23/24/22 24/23/21 26/25/23 25/26/24
+f 25/26/24 26/25/23 28/27/25 27/28/26
+f 27/28/26 28/27/25 30/29/27 29/30/28
+f 29/30/28 30/29/27 32/31/29 31/32/30
+f 6/33/3 4/34/2 34/35/31 32/36/29 30/37/27 28/38/25 26/39/23 24/40/21 22/41/19 20/42/17 18/43/15 16/44/13 14/45/11 12/46/9 10/47/7 8/48/5
+f 33/49/32 34/50/31 4/2/2 3/1/1
+f 31/32/30 32/31/29 34/50/31 33/49/32
+g Cylinder_Cylinder_flame
+s off
+f 38/51/14 37/52/14 40/53/14 39/54/14
+f 2/51/22 1/52/22 36/53/22 35/54/22
+f 46/51/30 47/54/30 48/53/30 45/52/30
+f 42/51/6 43/54/6 44/53/6 41/52/6
+g Cylinder_Cylinder_metal
+s 1
+f 175/55/33 95/56/30 96/57/32 176/58/34
+f 129/59/35 50/2/2 52/3/3 178/60/36
+f 178/60/36 52/3/3 54/5/5 179/61/37
+f 179/61/37 54/5/5 56/7/7 180/62/38
+f 180/62/38 56/7/7 58/9/9 181/63/39
+f 181/63/39 58/9/9 60/11/11 182/64/40
+f 182/64/40 60/11/11 62/13/13 183/65/41
+f 183/65/41 62/13/13 64/15/15 184/66/42
+f 184/66/42 64/15/15 66/17/17 185/67/43
+f 185/68/43 66/20/17 68/21/19 186/69/44
+f 186/69/44 68/21/19 70/23/21 187/70/45
+f 187/70/45 70/23/21 72/25/23 188/71/46
+f 188/71/46 72/25/23 74/27/25 189/72/47
+f 189/72/47 74/27/25 76/29/27 190/73/48
+f 190/73/48 76/29/27 78/31/29 191/74/49
+f 52/75/3 50/76/2 80/77/31 78/78/29 76/79/27 74/80/25 72/81/23 70/82/21 68/83/19 66/84/17 64/85/15 62/86/13 60/87/11 58/88/9 56/89/7 54/90/5
+f 192/91/50 80/50/31 50/2/2 129/59/35
+f 191/74/49 78/31/29 80/50/31 192/91/50
+f 49/92/51 51/93/52 53/94/53 55/95/54 57/96/55 59/97/56 61/98/57 63/99/58 65/100/59 67/101/60 69/102/61 71/103/62 73/104/63 75/105/64 77/106/65 79/107/66
+f 176/58/34 96/57/32 81/108/1 145/109/67
+f 174/110/68 94/111/28 95/56/30 175/55/33
+f 173/112/69 93/113/26 94/111/28 174/110/68
+f 172/114/70 92/115/24 93/113/26 173/112/69
+f 171/116/71 91/117/22 92/115/24 172/114/70
+f 170/118/72 90/119/20 91/117/22 171/116/71
+f 169/120/73 89/121/18 90/119/20 170/118/72
+f 168/122/74 88/123/16 89/124/18 169/125/73
+f 167/126/75 87/127/14 88/123/16 168/122/74
+f 166/128/76 86/129/12 87/127/14 167/126/75
+f 165/130/77 85/131/10 86/129/12 166/128/76
+f 164/132/78 84/133/8 85/131/10 165/130/77
+f 163/134/79 83/135/6 84/133/8 164/132/78
+f 162/136/80 82/137/4 83/135/6 163/134/79
+f 145/109/67 81/108/1 82/137/4 162/136/80
+f 177/138/81 113/139/82 98/140/83 130/141/84
+f 130/141/84 98/140/83 99/142/85 131/143/86
+f 131/143/86 99/142/85 100/144/87 132/145/88
+f 132/145/88 100/144/87 101/146/89 133/147/90
+f 133/147/90 101/146/89 102/148/91 134/149/92
+f 134/149/92 102/148/91 103/150/93 135/151/94
+f 135/151/94 103/150/93 104/152/95 136/153/96
+f 136/153/96 104/152/95 105/154/97 137/155/98
+f 137/156/98 105/157/97 106/158/99 138/159/100
+f 138/159/100 106/158/99 107/160/101 139/161/102
+f 139/161/102 107/160/101 108/162/103 140/163/104
+f 140/163/104 108/162/103 109/164/105 141/165/106
+f 141/165/106 109/164/105 110/166/107 142/167/108
+f 142/167/108 110/166/107 111/168/109 143/169/110
+f 144/170/111 112/171/112 113/139/82 177/138/81
+f 159/172/113 127/173/114 128/174/115 160/175/116
+f 160/175/116 128/174/115 97/176/117 161/177/118
+f 158/178/119 126/179/120 127/173/114 159/172/113
+f 157/180/121 125/181/122 126/179/120 158/178/119
+f 156/182/123 124/183/124 125/181/122 157/180/121
+f 155/184/125 123/185/126 124/183/124 156/182/123
+f 154/186/127 122/187/128 123/185/126 155/184/125
+f 153/188/129 121/189/130 122/187/128 154/186/127
+f 152/190/131 120/191/132 121/192/130 153/193/129
+f 151/194/133 119/195/134 120/191/132 152/190/131
+f 150/196/135 118/197/136 119/195/134 151/194/133
+f 149/198/137 117/199/138 118/197/136 150/196/135
+f 148/200/139 116/201/140 117/199/138 149/198/137
+f 147/202/141 115/203/142 116/201/140 148/200/139
+f 146/204/143 114/205/144 115/203/142 147/202/141
+f 161/177/118 97/176/117 114/205/144 146/204/143
+f 143/169/110 111/168/109 112/171/112 144/170/111
+f 77/206/65 143/169/110 144/170/111 79/207/66
+f 81/108/1 161/177/118 146/204/143 82/137/4
+f 82/137/4 146/204/143 147/202/141 83/135/6
+f 83/135/6 147/202/141 148/200/139 84/133/8
+f 84/133/8 148/200/139 149/198/137 85/131/10
+f 85/131/10 149/198/137 150/196/135 86/129/12
+f 86/129/12 150/196/135 151/194/133 87/127/14
+f 87/127/14 151/194/133 152/190/131 88/123/16
+f 88/123/16 152/190/131 153/193/129 89/124/18
+f 89/121/18 153/188/129 154/186/127 90/119/20
+f 90/119/20 154/186/127 155/184/125 91/117/22
+f 91/117/22 155/184/125 156/182/123 92/115/24
+f 92/115/24 156/182/123 157/180/121 93/113/26
+f 93/113/26 157/180/121 158/178/119 94/111/28
+f 94/111/28 158/178/119 159/172/113 95/56/30
+f 96/57/32 160/175/116 161/177/118 81/108/1
+f 95/56/30 159/172/113 160/175/116 96/57/32
+f 79/207/66 144/170/111 177/138/81 49/208/51
+f 75/209/64 142/167/108 143/169/110 77/206/65
+f 73/210/63 141/165/106 142/167/108 75/209/64
+f 71/211/62 140/163/104 141/165/106 73/210/63
+f 69/212/61 139/161/102 140/163/104 71/211/62
+f 67/213/60 138/159/100 139/161/102 69/212/61
+f 65/51/59 137/156/98 138/159/100 67/213/60
+f 63/214/58 136/153/96 137/155/98 65/54/59
+f 61/215/57 135/151/94 136/153/96 63/214/58
+f 59/216/56 134/149/92 135/151/94 61/215/57
+f 57/217/55 133/147/90 134/149/92 59/216/56
+f 55/218/54 132/145/88 133/147/90 57/217/55
+f 53/219/53 131/143/86 132/145/88 55/218/54
+f 51/220/52 130/141/84 131/143/86 53/219/53
+f 49/208/51 177/138/81 130/141/84 51/220/52
+f 113/139/82 145/109/67 162/136/80 98/140/83
+f 98/140/83 162/136/80 163/134/79 99/142/85
+f 99/142/85 163/134/79 164/132/78 100/144/87
+f 100/144/87 164/132/78 165/130/77 101/146/89
+f 101/146/89 165/130/77 166/128/76 102/148/91
+f 102/148/91 166/128/76 167/126/75 103/150/93
+f 103/150/93 167/126/75 168/122/74 104/152/95
+f 104/152/95 168/122/74 169/125/73 105/154/97
+f 105/157/97 169/120/73 170/118/72 106/158/99
+f 106/158/99 170/118/72 171/116/71 107/160/101
+f 107/160/101 171/116/71 172/114/70 108/162/103
+f 108/162/103 172/114/70 173/112/69 109/164/105
+f 109/164/105 173/112/69 174/110/68 110/166/107
+f 110/166/107 174/110/68 175/55/33 111/168/109
+f 112/171/112 176/58/34 145/109/67 113/139/82
+f 127/173/114 191/74/49 192/91/50 128/174/115
+f 128/174/115 192/91/50 129/59/35 97/176/117
+f 126/179/120 190/73/48 191/74/49 127/173/114
+f 125/181/122 189/72/47 190/73/48 126/179/120
+f 124/183/124 188/71/46 189/72/47 125/181/122
+f 123/185/126 187/70/45 188/71/46 124/183/124
+f 122/187/128 186/69/44 187/70/45 123/185/126
+f 121/189/130 185/68/43 186/69/44 122/187/128
+f 120/191/132 184/66/42 185/67/43 121/192/130
+f 119/195/134 183/65/41 184/66/42 120/191/132
+f 118/197/136 182/64/40 183/65/41 119/195/134
+f 117/199/138 181/63/39 182/64/40 118/197/136
+f 116/201/140 180/62/38 181/63/39 117/199/138
+f 115/203/142 179/61/37 180/62/38 116/201/140
+f 114/205/144 178/60/36 179/61/37 115/203/142
+f 97/176/117 129/59/35 178/60/36 114/205/144
+f 111/168/109 175/55/33 176/58/34 112/171/112
diff --git a/homedecor_modpack/homedecor/models/homedecor_ceiling_lamp.obj b/homedecor_modpack/homedecor/models/homedecor_ceiling_lamp.obj
new file mode 100644
index 0000000..e5587e7
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_ceiling_lamp.obj
@@ -0,0 +1,2034 @@
+# Blender v2.73 (sub 0) OBJ File: 'ceiling-light.blend'
+# www.blender.org
+o Torus.016_Torus
+v -0.108253 0.420752 0.000000
+v -0.187500 0.499999 0.000000
+v -0.093750 0.499999 -0.162379
+v -0.054126 0.420752 -0.093750
+v 0.093750 0.499999 -0.162379
+v 0.054126 0.420752 -0.093750
+v 0.187500 0.499999 0.000000
+v 0.108253 0.420752 0.000000
+v 0.093750 0.499999 0.162380
+v 0.054126 0.420752 0.093750
+v -0.093750 0.499999 0.162380
+v -0.054126 0.420752 0.093750
+v 0.000000 0.391745 0.000000
+v -0.000000 0.050218 0.000001
+v -0.000000 0.062243 0.022997
+v -0.005850 0.066047 0.020356
+v -0.005850 0.052998 0.000001
+v -0.004093 0.071140 0.017065
+v -0.004093 0.060200 0.000001
+v 0.004093 0.071140 0.017065
+v 0.004093 0.060200 0.000001
+v 0.005850 0.066047 0.020356
+v 0.005850 0.052998 0.000001
+v -0.000000 0.097553 0.033404
+v -0.005850 0.097553 0.028788
+v -0.004093 0.097553 0.024134
+v 0.004093 0.097553 0.024134
+v 0.005850 0.097553 0.028788
+v -0.000000 0.132864 0.022997
+v -0.005850 0.129058 0.020356
+v -0.004093 0.123966 0.017065
+v 0.004093 0.123966 0.017065
+v 0.005850 0.129058 0.020356
+v -0.000000 0.144889 0.000001
+v -0.005850 0.142109 0.000001
+v -0.004093 0.134906 0.000001
+v 0.004093 0.134906 0.000001
+v 0.005850 0.142109 0.000001
+v -0.000000 0.132864 -0.022995
+v -0.005850 0.129058 -0.020355
+v -0.004093 0.123966 -0.017064
+v 0.004093 0.123966 -0.017064
+v 0.005850 0.129058 -0.020354
+v -0.000000 0.097553 -0.033402
+v -0.005850 0.097553 -0.028786
+v -0.004093 0.097553 -0.024132
+v 0.004093 0.097553 -0.024132
+v 0.005850 0.097553 -0.028786
+v -0.000000 0.062554 -0.022995
+v -0.005850 0.066047 -0.020355
+v -0.004093 0.071140 -0.017064
+v 0.004093 0.071140 -0.017064
+v 0.005850 0.066047 -0.020355
+v -0.000000 0.120083 0.000001
+v -0.025688 0.132107 0.000001
+v -0.022738 0.135912 -0.005235
+v -0.000000 0.122861 -0.005235
+v -0.019063 0.141005 -0.003663
+v -0.000000 0.130064 -0.003663
+v -0.019063 0.141005 0.003665
+v -0.000000 0.130064 0.003665
+v -0.022738 0.135912 0.005238
+v -0.000000 0.122861 0.005238
+v -0.037314 0.167417 0.000001
+v -0.032156 0.167417 -0.005235
+v -0.026959 0.167417 -0.003663
+v -0.026959 0.167417 0.003665
+v -0.032156 0.167417 0.005238
+v -0.025688 0.202728 0.000001
+v -0.022738 0.198923 -0.005235
+v -0.019063 0.193830 -0.003663
+v -0.019063 0.193830 0.003665
+v -0.022738 0.198923 0.005238
+v -0.000000 0.214753 0.000001
+v -0.000000 0.211973 -0.005235
+v -0.000000 0.204770 -0.003663
+v -0.000000 0.204770 0.003665
+v -0.000000 0.211973 0.005238
+v 0.025688 0.202728 0.000001
+v 0.022738 0.198923 -0.005235
+v 0.019063 0.193830 -0.003663
+v 0.019063 0.193830 0.003665
+v 0.022738 0.198923 0.005238
+v 0.037314 0.167417 0.000001
+v 0.032156 0.167417 -0.005235
+v 0.026959 0.167417 -0.003663
+v 0.026959 0.167417 0.003665
+v 0.032156 0.167417 0.005238
+v 0.025688 0.132419 0.000001
+v 0.022738 0.135912 -0.005235
+v 0.019063 0.141005 -0.003663
+v 0.019063 0.141005 0.003665
+v 0.022738 0.135912 0.005238
+v -0.000000 0.259856 0.000001
+v 0.025688 0.271880 0.000001
+v 0.022738 0.275686 0.005238
+v -0.000000 0.262635 0.005238
+v 0.019063 0.280779 0.003665
+v -0.000000 0.269838 0.003665
+v 0.019063 0.280779 -0.003663
+v -0.000000 0.269838 -0.003663
+v 0.022738 0.275686 -0.005235
+v -0.000000 0.262635 -0.005235
+v 0.037314 0.307191 0.000001
+v 0.032156 0.307191 0.005238
+v 0.026959 0.307191 0.003665
+v 0.026959 0.307191 -0.003663
+v 0.032156 0.307191 -0.005235
+v 0.025688 0.342501 0.000001
+v 0.022738 0.338697 0.005238
+v 0.019063 0.333604 0.003665
+v 0.019063 0.333604 -0.003663
+v 0.022738 0.338697 -0.005235
+v -0.000000 0.354526 0.000001
+v -0.000000 0.351746 0.005238
+v -0.000000 0.344544 0.003665
+v -0.000000 0.344544 -0.003663
+v -0.000000 0.351746 -0.005235
+v -0.025688 0.342501 0.000001
+v -0.022738 0.338697 0.005238
+v -0.019063 0.333604 0.003665
+v -0.019063 0.333604 -0.003663
+v -0.022738 0.338697 -0.005235
+v -0.037314 0.307191 0.000001
+v -0.032156 0.307191 0.005238
+v -0.026959 0.307191 0.003665
+v -0.026959 0.307191 -0.003663
+v -0.032156 0.307191 -0.005235
+v -0.025688 0.272192 0.000001
+v -0.022738 0.275686 0.005238
+v -0.019063 0.280779 0.003665
+v -0.019063 0.280779 -0.003663
+v -0.022738 0.275686 -0.005235
+v -0.000000 0.189732 0.000001
+v -0.000000 0.201757 -0.022995
+v 0.005850 0.205561 -0.020355
+v 0.005850 0.192511 0.000001
+v 0.004093 0.210654 -0.017064
+v 0.004093 0.199714 0.000001
+v -0.004093 0.210654 -0.017064
+v -0.004093 0.199714 0.000001
+v -0.005850 0.205561 -0.020355
+v -0.005850 0.192511 0.000001
+v -0.000000 0.237067 -0.033402
+v 0.005850 0.237067 -0.028786
+v 0.004093 0.237067 -0.024132
+v -0.004093 0.237067 -0.024132
+v -0.005850 0.237067 -0.028786
+v -0.000000 0.272378 -0.022995
+v 0.005850 0.268573 -0.020355
+v 0.004093 0.263480 -0.017064
+v -0.004093 0.263480 -0.017064
+v -0.005850 0.268573 -0.020355
+v -0.000000 0.284403 0.000001
+v 0.005850 0.281623 0.000001
+v 0.004093 0.274420 0.000001
+v -0.004093 0.274420 0.000001
+v -0.005850 0.281623 0.000001
+v -0.000000 0.272378 0.022997
+v 0.005850 0.268573 0.020356
+v 0.004093 0.263480 0.017065
+v -0.004093 0.263480 0.017065
+v -0.005850 0.268573 0.020356
+v -0.000000 0.237067 0.033404
+v 0.005850 0.237067 0.028788
+v 0.004093 0.237067 0.024134
+v -0.004093 0.237067 0.024134
+v -0.005850 0.237067 0.028788
+v -0.000000 0.202068 0.022997
+v 0.005850 0.205562 0.020356
+v 0.004093 0.210654 0.017065
+v -0.004093 0.210654 0.017065
+v -0.005850 0.205562 0.020356
+v -0.000000 -0.019906 0.000001
+v 0.025688 -0.007881 0.000001
+v 0.022738 -0.004077 0.005238
+v -0.000000 -0.017126 0.005238
+v 0.019063 0.001016 0.003665
+v -0.000000 -0.009923 0.003665
+v 0.019063 0.001016 -0.003663
+v -0.000000 -0.009923 -0.003663
+v 0.022738 -0.004077 -0.005235
+v -0.000000 -0.017126 -0.005235
+v 0.037314 0.027429 0.000001
+v 0.032156 0.027429 0.005238
+v 0.026959 0.027429 0.003665
+v 0.026959 0.027429 -0.003663
+v 0.032156 0.027429 -0.005235
+v 0.025688 0.062740 0.000001
+v 0.022738 0.058934 0.005238
+v 0.019063 0.053842 0.003665
+v 0.019063 0.053842 -0.003663
+v 0.022738 0.058934 -0.005235
+v -0.000000 0.074764 0.000001
+v -0.000000 0.071985 0.005238
+v -0.000000 0.064782 0.003665
+v -0.000000 0.064782 -0.003663
+v -0.000000 0.071985 -0.005235
+v -0.025688 0.062740 0.000001
+v -0.022738 0.058934 0.005238
+v -0.019063 0.053842 0.003665
+v -0.019063 0.053842 -0.003663
+v -0.022738 0.058934 -0.005235
+v -0.037314 0.027429 0.000001
+v -0.032156 0.027429 0.005238
+v -0.026959 0.027429 0.003665
+v -0.026959 0.027429 -0.003663
+v -0.032156 0.027429 -0.005235
+v -0.025688 -0.007569 0.000001
+v -0.022738 -0.004077 0.005238
+v -0.019063 0.001016 0.003665
+v -0.019063 0.001016 -0.003663
+v -0.022738 -0.004077 -0.005235
+v 0.000011 0.412424 -0.025687
+v -0.005807 0.408619 -0.022737
+v -0.004060 0.403526 -0.019062
+v 0.004081 0.403526 -0.019062
+v 0.005829 0.408619 -0.022737
+v 0.000011 0.377113 -0.037313
+v -0.005807 0.377113 -0.032155
+v -0.004060 0.377113 -0.026958
+v 0.004081 0.377113 -0.026958
+v 0.005829 0.377113 -0.032155
+v 0.000011 0.341803 -0.025687
+v -0.005807 0.345608 -0.022737
+v -0.004060 0.350701 -0.019062
+v 0.004081 0.350701 -0.019062
+v 0.005829 0.345608 -0.022737
+v 0.000011 0.329779 0.000001
+v -0.005807 0.332558 0.000001
+v -0.004060 0.339760 0.000001
+v 0.004081 0.339760 0.000001
+v 0.005829 0.332558 0.000001
+v 0.000011 0.341803 0.025689
+v -0.005807 0.345608 0.022739
+v -0.004060 0.350701 0.019064
+v 0.004081 0.350701 0.019064
+v 0.005829 0.345608 0.022739
+v 0.000011 0.377113 0.037315
+v -0.005807 0.377113 0.032158
+v -0.004060 0.377113 0.026960
+v 0.004081 0.377113 0.026960
+v 0.005829 0.377113 0.032158
+v 0.000011 0.412112 0.025689
+v -0.005807 0.408619 0.022739
+v -0.004060 0.403526 0.019064
+v 0.004081 0.403526 0.019064
+v 0.005829 0.408619 0.022739
+v 0.000011 0.004555 0.000001
+v 0.000011 -0.007470 -0.025687
+v -0.005807 -0.011275 -0.022737
+v -0.005807 0.001775 0.000001
+v -0.004060 -0.016368 -0.019062
+v -0.004060 -0.005428 0.000001
+v 0.004081 -0.016368 -0.019062
+v 0.004081 -0.005428 0.000001
+v 0.005829 -0.011275 -0.022737
+v 0.005829 0.001775 0.000001
+v 0.000011 -0.042781 -0.037313
+v -0.005807 -0.042781 -0.032155
+v -0.004060 -0.042781 -0.026958
+v 0.004081 -0.042781 -0.026958
+v 0.005829 -0.042781 -0.032155
+v 0.000011 -0.078091 -0.025687
+v -0.005807 -0.074286 -0.022737
+v -0.004060 -0.069193 -0.019062
+v 0.004081 -0.069193 -0.019062
+v 0.005829 -0.074286 -0.022737
+v 0.000011 -0.078091 0.025689
+v -0.005807 -0.074286 0.022739
+v -0.004060 -0.069193 0.019064
+v 0.004081 -0.069193 0.019064
+v 0.005829 -0.074286 0.022739
+v 0.000011 -0.042781 0.037315
+v -0.005807 -0.042781 0.032158
+v -0.004060 -0.042781 0.026960
+v 0.004081 -0.042781 0.026960
+v 0.005829 -0.042781 0.032158
+v 0.000011 -0.007782 0.025689
+v -0.005807 -0.011275 0.022739
+v -0.004060 -0.016368 0.019064
+v 0.004081 -0.016368 0.019064
+v 0.005829 -0.011275 0.022739
+v 0.360000 -0.187500 0.000000
+v 0.000000 -0.312500 -0.500000
+v 0.000000 -0.062500 0.000000
+v 0.191342 -0.312500 -0.461940
+v 0.332597 -0.187500 0.137766
+v 0.353553 -0.312500 -0.353553
+v 0.254558 -0.187500 0.254558
+v 0.461940 -0.312500 -0.191342
+v 0.137766 -0.187500 0.332597
+v 0.500000 -0.312500 0.000000
+v 0.000000 -0.187500 0.360000
+v 0.461940 -0.312500 0.191342
+v -0.137766 -0.187500 0.332597
+v 0.353553 -0.312500 0.353553
+v -0.254558 -0.187500 0.254559
+v 0.191342 -0.312500 0.461940
+v -0.332597 -0.187500 0.137766
+v 0.000000 -0.312500 0.500000
+v -0.360000 -0.187500 -0.000000
+v -0.191342 -0.312500 0.461940
+v -0.332597 -0.187500 -0.137766
+v -0.353553 -0.312500 0.353554
+v -0.254558 -0.187500 -0.254559
+v -0.461940 -0.312500 0.191342
+v -0.137766 -0.187500 -0.332597
+v -0.500000 -0.312500 -0.000000
+v 0.137766 -0.187500 -0.332597
+v -0.461940 -0.312500 -0.191342
+v 0.000000 -0.187500 -0.360000
+v -0.353553 -0.312500 -0.353554
+v 0.254558 -0.187500 -0.254558
+v -0.191341 -0.312500 -0.461940
+v 0.332597 -0.187500 -0.137766
+v 0.337501 -0.203124 0.000000
+v 0.000000 -0.312500 -0.468751
+v 0.000000 -0.093749 -0.000000
+v 0.179383 -0.312500 -0.433070
+v 0.311810 -0.203124 0.129156
+v 0.331457 -0.312500 -0.331457
+v 0.238649 -0.203124 0.238649
+v 0.433070 -0.312500 -0.179383
+v 0.129156 -0.203124 0.311810
+v 0.468751 -0.312500 0.000000
+v 0.000000 -0.203124 0.337501
+v 0.433070 -0.312500 0.179383
+v -0.129156 -0.203124 0.311810
+v 0.331457 -0.312500 0.331457
+v -0.238649 -0.203124 0.238649
+v 0.179383 -0.312500 0.433070
+v -0.311810 -0.203124 0.129156
+v 0.000000 -0.312500 0.468751
+v -0.337501 -0.203124 -0.000000
+v -0.179383 -0.312500 0.433070
+v -0.311810 -0.203124 -0.129156
+v -0.331457 -0.312500 0.331457
+v -0.238649 -0.203124 -0.238649
+v -0.433070 -0.312500 0.179383
+v -0.129156 -0.203124 -0.311810
+v -0.468751 -0.312500 -0.000000
+v 0.129156 -0.203124 -0.311810
+v -0.433070 -0.312500 -0.179383
+v 0.000000 -0.203124 -0.337501
+v -0.331457 -0.312500 -0.331457
+v 0.238649 -0.203124 -0.238649
+v -0.179383 -0.312500 -0.433070
+v 0.311810 -0.203124 -0.129156
+v 0.000000 -0.273438 0.000000
+v 0.067838 -0.221614 0.049287
+v -0.025911 -0.221614 0.079748
+v -0.083852 -0.221614 -0.000000
+v -0.025911 -0.221614 -0.079748
+v 0.067838 -0.221614 -0.049287
+v 0.025911 -0.137761 0.079748
+v -0.067838 -0.137761 0.049287
+v -0.067838 -0.137761 -0.049287
+v 0.025911 -0.137761 -0.079748
+v 0.083852 -0.137761 0.000000
+v -0.015230 -0.259436 0.046875
+v 0.039874 -0.259436 0.028970
+v 0.024644 -0.228975 0.075845
+v 0.079748 -0.228975 -0.000000
+v 0.039874 -0.259436 -0.028970
+v -0.049287 -0.259436 0.000000
+v -0.064518 -0.228975 0.046875
+v -0.015230 -0.259436 -0.046875
+v -0.064518 -0.228975 -0.046875
+v 0.024644 -0.228975 -0.075845
+v 0.089162 -0.179688 0.028970
+v 0.089162 -0.179688 -0.028970
+v 0.000000 -0.179688 0.093750
+v 0.055105 -0.179688 0.075845
+v -0.089162 -0.179688 0.028970
+v -0.055105 -0.179688 0.075845
+v -0.055105 -0.179688 -0.075845
+v -0.089162 -0.179688 -0.028970
+v 0.055105 -0.179688 -0.075845
+v 0.000000 -0.179687 -0.093750
+v 0.064518 -0.130400 0.046875
+v -0.024644 -0.130400 0.075845
+v -0.079748 -0.130400 0.000000
+v -0.024644 -0.130400 -0.075845
+v 0.064518 -0.130400 -0.046875
+v 0.015230 -0.099939 0.046875
+v 0.049287 -0.099939 -0.000000
+v -0.039874 -0.099939 0.028970
+v -0.039874 -0.099939 -0.028970
+v 0.015230 -0.099939 -0.046875
+v -0.005119 -0.064684 0.004772
+v -0.005119 -0.064684 -0.004603
+v 0.004256 -0.064684 -0.004603
+v 0.004256 -0.064684 0.004772
+v -0.004677 0.393895 0.004772
+v -0.004677 0.393895 -0.004603
+v 0.004698 0.393895 -0.004603
+v 0.004698 0.393895 0.004772
+v 0.008563 0.195989 -0.005639
+v 0.008563 0.195989 -0.015014
+v 0.017938 0.195989 -0.015014
+v 0.017938 0.195989 -0.005639
+v -0.020546 0.320155 -0.009354
+v -0.017780 0.019371 0.010951
+v -0.008405 0.019371 0.010951
+v -0.008405 0.019371 0.020326
+v -0.017780 0.019371 0.020326
+v -0.020546 0.320155 -0.018729
+v -0.011171 0.320155 -0.018729
+v -0.011171 0.320155 -0.009354
+v -0.015370 0.143938 0.012549
+v -0.015370 0.143938 0.003174
+v -0.005996 0.143938 0.003174
+v -0.005996 0.143938 0.012549
+vt 0.500000 0.747803
+vt 0.500000 0.837702
+vt 0.684205 0.731351
+vt 0.606351 0.686402
+vt 0.684205 0.518649
+vt 0.606351 0.563599
+vt 0.500000 0.412298
+vt 0.500000 0.502197
+vt 0.315796 0.518649
+vt 0.393649 0.563599
+vt 0.315795 0.731351
+vt 0.393649 0.686402
+vt 0.500000 0.625000
+vt 0.342467 0.534048
+vt 0.500000 0.443096
+vt 0.657533 0.534048
+vt 0.657533 0.715952
+vt 0.500000 0.806904
+vt 0.342467 0.715952
+vt 0.142167 0.260208
+vt 0.150427 0.300871
+vt 0.139543 0.302210
+vt 0.133075 0.264335
+vt 0.610420 0.232103
+vt 0.628355 0.252731
+vt 0.623145 0.261272
+vt 0.608110 0.243979
+vt 0.635784 0.159038
+vt 0.635784 0.193692
+vt 0.623282 0.193069
+vt 0.623282 0.158414
+vt 0.616912 0.194133
+vt 0.616912 0.152795
+vt 0.709735 0.159259
+vt 0.699774 0.161723
+vt 0.686951 0.141049
+vt 0.696584 0.133916
+vt 0.143697 0.342648
+vt 0.133075 0.338326
+vt 0.635784 0.304520
+vt 0.629373 0.304690
+vt 0.618612 0.304422
+vt 0.612383 0.261004
+vt 0.634481 0.224089
+vt 0.630271 0.231134
+vt 0.281017 0.320212
+vt 0.293496 0.273360
+vt 0.304255 0.274937
+vt 0.289560 0.327308
+vt 0.536740 0.141359
+vt 0.550795 0.182706
+vt 0.539491 0.183410
+vt 0.526683 0.147786
+vt 0.628355 0.357131
+vt 0.623145 0.348797
+vt 0.612383 0.348529
+vt 0.174350 0.152358
+vt 0.163170 0.183352
+vt 0.156804 0.182279
+vt 0.170140 0.145310
+vt 0.293496 0.224076
+vt 0.303547 0.219561
+vt 0.549461 0.225666
+vt 0.539492 0.223201
+vt 0.610420 0.379748
+vt 0.608110 0.367756
+vt 0.175679 0.182724
+vt 0.175679 0.217385
+vt 0.163170 0.218014
+vt 0.156804 0.223624
+vt 0.281017 0.201226
+vt 0.288910 0.197895
+vt 0.536325 0.250986
+vt 0.526683 0.243849
+vt 0.136957 0.223624
+vt 0.136957 0.182285
+vt 0.143329 0.183371
+vt 0.143330 0.218026
+vt 0.155834 0.182734
+vt 0.155835 0.217390
+vt 0.554542 0.367795
+vt 0.568421 0.350286
+vt 0.573499 0.358861
+vt 0.556944 0.379748
+vt 0.131162 0.457761
+vt 0.137619 0.419895
+vt 0.148495 0.421240
+vt 0.140249 0.461884
+vt 0.210264 0.213317
+vt 0.226164 0.265139
+vt 0.215398 0.266839
+vt 0.201896 0.220458
+vt 0.150320 0.145374
+vt 0.154532 0.152425
+vt 0.557232 0.350490
+vt 0.562980 0.306793
+vt 0.574169 0.306590
+vt 0.580356 0.306740
+vt 0.131162 0.383713
+vt 0.141777 0.379390
+vt 0.225331 0.320022
+vt 0.215399 0.316085
+vt 0.936908 0.237421
+vt 0.923595 0.200398
+vt 0.929955 0.199336
+vt 0.941116 0.230375
+vt 0.557232 0.262506
+vt 0.568421 0.262303
+vt 0.573499 0.253914
+vt 0.686951 0.237022
+vt 0.699775 0.201478
+vt 0.710918 0.202412
+vt 0.697001 0.243442
+vt 0.209561 0.342648
+vt 0.201896 0.339346
+vt 0.923595 0.159043
+vt 0.929955 0.164667
+vt 0.942468 0.165286
+vt 0.942468 0.199955
+vt 0.554542 0.243370
+vt 0.556944 0.231330
+vt 0.971213 0.238391
+vt 0.998208 0.266027
+vt 0.988844 0.269994
+vt 0.965829 0.241806
+vt 0.983806 0.276853
+vt 0.964511 0.253222
+vt 0.369769 0.137054
+vt 0.376338 0.173408
+vt 0.365764 0.176009
+vt 0.359195 0.139655
+vt 0.846334 0.255067
+vt 0.826720 0.278546
+vt 0.819083 0.272388
+vt 0.842478 0.244381
+vt 0.223065 0.431371
+vt 0.214051 0.429139
+vt 0.214051 0.386402
+vt 0.224529 0.384939
+vt 0.999515 0.324769
+vt 0.988845 0.322071
+vt 0.983807 0.320512
+vt 0.369769 0.205965
+vt 0.359195 0.208566
+vt 0.826720 0.321508
+vt 0.819083 0.323634
+vt 0.199996 0.350955
+vt 0.209107 0.343618
+vt 0.972415 0.375345
+vt 0.965831 0.367534
+vt 0.964512 0.358625
+vt 0.129420 0.154828
+vt 0.135988 0.187213
+vt 0.125396 0.184773
+vt 0.118828 0.152388
+vt 0.846333 0.358791
+vt 0.842476 0.368106
+vt 0.410342 0.319977
+vt 0.424489 0.284578
+vt 0.434970 0.286039
+vt 0.419449 0.327306
+vt 0.261021 0.203309
+vt 0.275506 0.233348
+vt 0.266497 0.235583
+vt 0.252373 0.210630
+vt 0.933283 0.379748
+vt 0.937226 0.368864
+vt 0.129420 0.223624
+vt 0.118828 0.221184
+vt 0.874069 0.368551
+vt 0.875561 0.379748
+vt 0.424488 0.241875
+vt 0.433497 0.239640
+vt 0.276977 0.279753
+vt 0.266497 0.278296
+vt 0.910268 0.351561
+vt 0.917931 0.345234
+vt 0.281017 0.194333
+vt 0.287550 0.157989
+vt 0.298134 0.160581
+vt 0.291600 0.196925
+vt 0.893683 0.345073
+vt 0.898957 0.351743
+vt 0.410342 0.216882
+vt 0.418989 0.209561
+vt 0.261480 0.321079
+vt 0.252373 0.313748
+vt 0.910268 0.299482
+vt 0.917930 0.301574
+vt 0.281017 0.125485
+vt 0.291600 0.128077
+vt 0.893684 0.302109
+vt 0.898957 0.300495
+vt 0.909298 0.297788
+vt 0.907969 0.355610
+vt 0.973277 0.150719
+vt 0.980838 0.192988
+vt 0.970668 0.192636
+vt 0.963281 0.156017
+vt 0.933281 0.254022
+vt 0.937224 0.263462
+vt 0.410342 0.208591
+vt 0.416929 0.176051
+vt 0.427503 0.173436
+vt 0.420917 0.205977
+vt 0.874071 0.264828
+vt 0.875564 0.256025
+vt 0.881866 0.248807
+vt 0.971529 0.237421
+vt 0.963281 0.233571
+vt 0.410342 0.139683
+vt 0.420917 0.137069
+vt 0.208483 0.461241
+vt 0.199996 0.454130
+vt 0.172509 0.431834
+vt 0.158110 0.461884
+vt 0.149464 0.454568
+vt 0.163505 0.429603
+vt 0.751308 0.244412
+vt 0.784386 0.256053
+vt 0.782894 0.264854
+vt 0.755163 0.255095
+vt 0.446514 0.137068
+vt 0.453101 0.173435
+vt 0.442526 0.176050
+vt 0.435940 0.139682
+vt 0.335286 0.343114
+vt 0.307986 0.353354
+vt 0.304041 0.343908
+vt 0.336605 0.331693
+vt 0.990068 0.237421
+vt 0.981807 0.233566
+vt 0.989205 0.192569
+vt 0.999515 0.193158
+vt 0.790571 0.248361
+vt 0.818113 0.297806
+vt 0.807775 0.300512
+vt 0.802503 0.302127
+vt 0.446514 0.205976
+vt 0.435940 0.208590
+vt 0.288683 0.391480
+vt 0.281017 0.389386
+vt 0.981807 0.155897
+vt 0.991818 0.150591
+vt 0.816785 0.355615
+vt 0.807775 0.351749
+vt 0.802502 0.345081
+vt 0.123651 0.393119
+vt 0.130193 0.425485
+vt 0.119596 0.423056
+vt 0.113055 0.390690
+vt 0.288683 0.435161
+vt 0.281017 0.441489
+vt 0.359195 0.319975
+vt 0.373319 0.284523
+vt 0.383799 0.285980
+vt 0.368302 0.327306
+vt 0.444586 0.209560
+vt 0.459095 0.239640
+vt 0.450086 0.241874
+vt 0.435940 0.216881
+vt 0.784385 0.379748
+vt 0.782893 0.368553
+vt 0.123651 0.461884
+vt 0.113055 0.459455
+vt 0.307988 0.458806
+vt 0.304043 0.469694
+vt 0.373319 0.241809
+vt 0.382328 0.239575
+vt 0.460568 0.286039
+vt 0.450086 0.284578
+vt 0.751307 0.368108
+vt 0.755162 0.358796
+vt 0.114945 0.340208
+vt 0.121514 0.303797
+vt 0.132106 0.306237
+vt 0.125537 0.342648
+vt 0.335287 0.448568
+vt 0.336607 0.457480
+vt 0.359195 0.216857
+vt 0.367843 0.209536
+vt 0.445046 0.327306
+vt 0.435940 0.319977
+vt 0.727918 0.323647
+vt 0.735553 0.321522
+vt 0.114945 0.271412
+vt 0.125537 0.273852
+vt 0.354591 0.410441
+vt 0.359632 0.412002
+vt 0.370308 0.414703
+vt 0.343194 0.465298
+vt 0.158566 0.344172
+vt 0.173804 0.385238
+vt 0.163504 0.386911
+vt 0.149464 0.351501
+vt 0.727918 0.272412
+vt 0.735554 0.278569
+vt 0.252373 0.202340
+vt 0.258942 0.169782
+vt 0.269515 0.167180
+vt 0.262947 0.199739
+vt 0.354590 0.366761
+vt 0.359631 0.359900
+vt 0.368885 0.356414
+vt 0.252373 0.133428
+vt 0.262947 0.130826
+vt 0.341992 0.328278
+vt 0.684645 0.159166
+vt 0.685981 0.202138
+vt 0.674672 0.201431
+vt 0.674672 0.161632
+vt 0.583728 0.231329
+vt 0.600284 0.253913
+vt 0.595205 0.262302
+vt 0.581326 0.243369
+vt 0.962311 0.165286
+vt 0.962311 0.199955
+vt 0.949798 0.199336
+vt 0.949798 0.164667
+vt 0.943438 0.200398
+vt 0.943438 0.159043
+vt 0.234799 0.342648
+vt 0.227134 0.339345
+vt 0.240638 0.316083
+vt 0.250638 0.320493
+vt 0.671895 0.243442
+vt 0.661834 0.237015
+vt 0.607140 0.306740
+vt 0.600954 0.306589
+vt 0.589764 0.306793
+vt 0.584016 0.262505
+vt 0.960959 0.230375
+vt 0.956751 0.237421
+vt 0.240637 0.266834
+vt 0.251404 0.265134
+vt 0.212510 0.129854
+vt 0.219229 0.171704
+vt 0.208353 0.170359
+vt 0.201896 0.134178
+vt 0.600283 0.358862
+vt 0.595205 0.350287
+vt 0.584016 0.350490
+vt 0.194224 0.152235
+vt 0.183020 0.183180
+vt 0.176649 0.182095
+vt 0.190012 0.145183
+vt 0.227134 0.220447
+vt 0.235503 0.213308
+vt 0.210983 0.212348
+vt 0.201896 0.208225
+vt 0.583728 0.379748
+vt 0.581326 0.367795
+vt 0.195526 0.182543
+vt 0.195526 0.217199
+vt 0.183021 0.217836
+vt 0.176649 0.223434
+vt 0.636753 0.236306
+vt 0.649562 0.215657
+vt 0.659531 0.218122
+vt 0.646394 0.243442
+vt 0.313119 0.198345
+vt 0.327759 0.220016
+vt 0.317707 0.224530
+vt 0.305225 0.201677
+vt 0.600201 0.152044
+vt 0.600201 0.193389
+vt 0.593835 0.192316
+vt 0.593835 0.157654
+vt 0.581326 0.192944
+vt 0.581326 0.158283
+vt 0.252373 0.457702
+vt 0.267408 0.438743
+vt 0.272618 0.447078
+vt 0.254683 0.469694
+vt 0.649562 0.175867
+vt 0.660865 0.175163
+vt 0.328467 0.275403
+vt 0.317707 0.273825
+vt 0.586864 0.230359
+vt 0.582654 0.223310
+vt 0.256647 0.438475
+vt 0.262875 0.394367
+vt 0.273637 0.394635
+vt 0.280047 0.394466
+vt 0.636753 0.140243
+vt 0.646810 0.133815
+vt 0.313832 0.327308
+vt 0.305225 0.320685
+vt 0.567899 0.230360
+vt 0.554542 0.193360
+vt 0.560911 0.192295
+vt 0.572110 0.223316
+vt 0.256647 0.350950
+vt 0.267408 0.351218
+vt 0.272618 0.342678
+vt 0.227134 0.208022
+vt 0.233593 0.171950
+vt 0.244355 0.170855
+vt 0.237742 0.212339
+vt 0.671325 0.134022
+vt 0.661834 0.140936
+vt 0.554542 0.152021
+vt 0.560912 0.157641
+vt 0.573413 0.158265
+vt 0.573413 0.192919
+vt 0.252373 0.333925
+vt 0.254683 0.322048
+vt 0.236214 0.129998
+vt 0.227134 0.134120
+vt 0.484582 0.222897
+vt 0.470182 0.252947
+vt 0.461537 0.245632
+vt 0.475577 0.220666
+vt 0.660143 0.244412
+vt 0.693221 0.256051
+vt 0.691729 0.264853
+vt 0.663998 0.255095
+vt 0.347478 0.137069
+vt 0.354065 0.173436
+vt 0.343491 0.176051
+vt 0.336904 0.139684
+vt 0.167576 0.491295
+vt 0.140276 0.501533
+vt 0.136332 0.492087
+vt 0.168895 0.479874
+vt 0.879917 0.243412
+vt 0.871656 0.239555
+vt 0.879054 0.198560
+vt 0.889364 0.199148
+vt 0.699406 0.248361
+vt 0.726948 0.297806
+vt 0.716610 0.300513
+vt 0.711338 0.302127
+vt 0.347478 0.205978
+vt 0.336904 0.208592
+vt 0.120972 0.539660
+vt 0.113306 0.537566
+vt 0.871656 0.161887
+vt 0.881667 0.156581
+vt 0.725620 0.355615
+vt 0.716610 0.351748
+vt 0.711337 0.345080
+vt 0.111317 0.154859
+vt 0.117858 0.187224
+vt 0.107261 0.184795
+vt 0.100721 0.152430
+vt 0.120973 0.583339
+vt 0.113306 0.589667
+vt 0.384769 0.319975
+vt 0.398892 0.284523
+vt 0.409373 0.285980
+vt 0.393875 0.327306
+vt 0.338084 0.209561
+vt 0.352592 0.239642
+vt 0.343583 0.241876
+vt 0.329437 0.216883
+vt 0.693220 0.379748
+vt 0.691728 0.368553
+vt 0.111317 0.223624
+vt 0.100721 0.221195
+vt 0.140277 0.606986
+vt 0.136332 0.617875
+vt 0.398893 0.241810
+vt 0.407902 0.239576
+vt 0.354065 0.286041
+vt 0.343583 0.284581
+vt 0.660142 0.368106
+vt 0.663997 0.358794
+vt 0.305225 0.194772
+vt 0.311785 0.158416
+vt 0.322364 0.161019
+vt 0.315804 0.197376
+vt 0.167577 0.596747
+vt 0.168896 0.605660
+vt 0.384769 0.216858
+vt 0.393417 0.209536
+vt 0.338543 0.327308
+vt 0.329437 0.319979
+vt 0.636753 0.323647
+vt 0.644388 0.321522
+vt 0.305225 0.125894
+vt 0.315804 0.128497
+vt 0.186881 0.558621
+vt 0.191922 0.560182
+vt 0.202597 0.562884
+vt 0.175483 0.613479
+vt 0.470639 0.135234
+vt 0.485876 0.176301
+vt 0.475576 0.177974
+vt 0.461537 0.142564
+vt 0.636753 0.272410
+vt 0.644389 0.278567
+vt 0.384769 0.208567
+vt 0.391338 0.176008
+vt 0.401911 0.173407
+vt 0.395343 0.205965
+vt 0.186880 0.514941
+vt 0.191922 0.508079
+vt 0.201175 0.504595
+vt 0.384769 0.139654
+vt 0.395343 0.137053
+vt 0.174283 0.476456
+vt 0.721008 0.139305
+vt 0.730124 0.190869
+vt 0.719273 0.190923
+vt 0.711887 0.144874
+vt 0.807354 0.243442
+vt 0.807354 0.197205
+vt 0.814886 0.203895
+vt 0.814887 0.242659
+vt 0.499904 0.370667
+vt 0.508064 0.327528
+vt 0.519141 0.327823
+vt 0.510981 0.370962
+vt 0.525713 0.328290
+vt 0.515981 0.379748
+vt 0.612612 0.186327
+vt 0.613346 0.226772
+vt 0.601170 0.230359
+vt 0.601170 0.183595
+vt 0.721008 0.243442
+vt 0.711887 0.237789
+vt 0.801124 0.243442
+vt 0.787421 0.205012
+vt 0.793885 0.203226
+vt 0.805372 0.235445
+vt 0.503476 0.283163
+vt 0.514552 0.283457
+vt 0.520241 0.275370
+vt 0.174773 0.454534
+vt 0.187805 0.418103
+vt 0.199027 0.419474
+vt 0.184727 0.461884
+vt 0.186179 0.224403
+vt 0.199568 0.253779
+vt 0.189704 0.256030
+vt 0.176649 0.231744
+vt 0.787421 0.159811
+vt 0.793885 0.165332
+vt 0.806384 0.165714
+vt 0.806384 0.203607
+vt 0.499904 0.263852
+vt 0.502769 0.251984
+vt 0.187805 0.375200
+vt 0.197669 0.372950
+vt 0.200927 0.300300
+vt 0.189703 0.298925
+vt 0.464518 0.253917
+vt 0.483302 0.275649
+vt 0.477285 0.283831
+vt 0.461537 0.265612
+vt 0.838044 0.165726
+vt 0.838044 0.203605
+vt 0.825557 0.203220
+vt 0.825557 0.165342
+vt 0.819083 0.205008
+vt 0.819083 0.159825
+vt 0.174773 0.350958
+vt 0.184304 0.343618
+vt 0.186602 0.342648
+vt 0.176649 0.335299
+vt 0.488567 0.327769
+vt 0.481699 0.327526
+vt 0.471042 0.326577
+vt 0.466628 0.282883
+vt 0.837084 0.235417
+vt 0.832833 0.243412
+vt 0.768861 0.237832
+vt 0.775663 0.191579
+vt 0.786452 0.191642
+vt 0.778054 0.243442
+vt 0.910268 0.189740
+vt 0.910268 0.143279
+vt 0.921628 0.145696
+vt 0.922428 0.186114
+vt 0.477230 0.379748
+vt 0.472194 0.371102
+vt 0.461537 0.370154
+vt 0.497057 0.245553
+vt 0.497058 0.284364
+vt 0.489534 0.285149
+vt 0.489534 0.238855
+vt 0.768861 0.144626
+vt 0.778054 0.139440
+vt 0.522758 0.221753
+vt 0.509428 0.251014
+vt 0.499904 0.243681
+vt 0.512902 0.219503
+vt 0.839013 0.243412
+vt 0.839013 0.198228
+vt 0.845489 0.200038
+vt 0.845489 0.237917
+vt 0.857979 0.199640
+vt 0.857979 0.237520
+vt 0.225498 0.457896
+vt 0.240219 0.439836
+vt 0.245932 0.448150
+vt 0.228372 0.469694
+vt 0.174319 0.313575
+vt 0.164454 0.311323
+vt 0.164455 0.268415
+vt 0.175679 0.267049
+vt 0.740214 0.139306
+vt 0.749330 0.190869
+vt 0.738479 0.190924
+vt 0.731094 0.144875
+vt 0.852766 0.159912
+vt 0.857018 0.167914
+vt 0.229143 0.440543
+vt 0.233731 0.396761
+vt 0.244807 0.396054
+vt 0.251404 0.395927
+vt 0.151396 0.231944
+vt 0.161351 0.224594
+vt 0.740214 0.243442
+vt 0.731094 0.237790
+vt 0.489537 0.379748
+vt 0.489537 0.333399
+vt 0.497052 0.334186
+vt 0.497051 0.373043
+vt 0.225498 0.352909
+vt 0.236575 0.352201
+vt 0.241584 0.343618
+vt 0.335516 0.154230
+vt 0.334782 0.194651
+vt 0.323333 0.197376
+vt 0.323333 0.150636
+vt 0.910268 0.237421
+vt 0.910268 0.190710
+vt 0.922459 0.194291
+vt 0.921723 0.234686
+vt 0.542376 0.251956
+vt 0.553572 0.302939
+vt 0.546739 0.303563
+vt 0.537352 0.260821
+vt 0.536070 0.303965
+vt 0.526683 0.261223
+vt 0.497052 0.286918
+vt 0.497051 0.325744
+vt 0.489530 0.332430
+vt 0.489530 0.286119
+vt 0.750300 0.237832
+vt 0.757103 0.191579
+vt 0.767891 0.191642
+vt 0.759494 0.243442
+vt 0.509851 0.132832
+vt 0.523956 0.175041
+vt 0.512901 0.176630
+vt 0.499904 0.140178
+vt 0.548301 0.355873
+vt 0.542319 0.347941
+vt 0.531650 0.348342
+vt 0.908312 0.167845
+vt 0.896803 0.200017
+vt 0.890334 0.198220
+vt 0.904062 0.159845
+vt 0.750300 0.144626
+vt 0.759494 0.139440
+vt 0.529650 0.379748
+vt 0.526683 0.367955
+vt 0.909298 0.199628
+vt 0.909298 0.237515
+vt 0.896803 0.237904
+vt 0.890334 0.243412
+vt 0.160771 0.342648
+vt 0.151396 0.335532
+vt 0.245564 0.754436
+vt 0.500000 0.500000
+vt 0.362301 0.832436
+vt 0.500000 0.859827
+vt 0.637700 0.832436
+vt 0.167564 0.637700
+vt 0.140174 0.500000
+vt 0.167564 0.362300
+vt 0.245564 0.245564
+vt 0.362300 0.167564
+vt 0.500000 0.140174
+vt 0.146617 0.853383
+vt 0.308751 0.961717
+vt 0.637700 0.167564
+vt 0.500000 0.999759
+vt 0.691249 0.961717
+vt 0.038283 0.691250
+vt 0.754436 0.245564
+vt 0.000241 0.500000
+vt 0.038283 0.308751
+vt 0.832436 0.362300
+vt 0.146617 0.146617
+vt 0.308751 0.038283
+vt 0.859827 0.500000
+vt 0.500000 0.000241
+vt 0.691249 0.038283
+vt 0.832436 0.637700
+vt 0.853383 0.146617
+vt 0.961717 0.308751
+vt 0.754436 0.754436
+vt 0.999759 0.500000
+vt 0.961717 0.691249
+vt 0.853383 0.853383
+vt 0.265958 0.265957
+vt 0.373337 0.194209
+vt 0.500000 0.169014
+vt 0.626663 0.194209
+vt 0.194209 0.373337
+vt 0.169014 0.500000
+vt 0.194209 0.626663
+vt 0.265958 0.734042
+vt 0.373337 0.805791
+vt 0.500000 0.830986
+vt 0.174941 0.174941
+vt 0.324080 0.075290
+vt 0.626663 0.805791
+vt 0.500000 0.040297
+vt 0.675921 0.075290
+vt 0.075290 0.324079
+vt 0.734043 0.734042
+vt 0.040297 0.500000
+vt 0.075290 0.675921
+vt 0.805791 0.626663
+vt 0.174941 0.825059
+vt 0.324079 0.924710
+vt 0.830986 0.500000
+vt 0.500000 0.959703
+vt 0.675921 0.924710
+vt 0.805791 0.373337
+vt 0.825059 0.825059
+vt 0.924710 0.675921
+vt 0.734043 0.265957
+vt 0.959703 0.500000
+vt 0.924710 0.324079
+vt 0.825059 0.174941
+vt 0.687648 0.953023
+vt 0.846729 0.846728
+vt 0.500000 0.990348
+vt 0.312352 0.953023
+vt 0.153271 0.846729
+vt 0.046977 0.687648
+vt 0.009652 0.500000
+vt 0.046977 0.312352
+vt 0.153272 0.153271
+vt 0.312352 0.046977
+vt 0.500000 0.009652
+vt 0.687648 0.046977
+vt 0.846729 0.153271
+vt 0.953023 0.312352
+vt 0.990348 0.500000
+vt 0.953023 0.687648
+vt 0.390770 0.562925
+vt 0.406141 0.605869
+vt 0.369363 0.597170
+vt 0.424831 0.642010
+vt 0.447164 0.605869
+vt 0.367636 0.545308
+vt 0.403347 0.521955
+vt 0.427144 0.559384
+vt 0.455761 0.643655
+vt 0.441536 0.391318
+vt 0.460564 0.377056
+vt 0.460564 0.427401
+vt 0.370911 0.391318
+vt 0.406224 0.386671
+vt 0.385467 0.433343
+vt 0.523326 0.481622
+vt 0.488080 0.486806
+vt 0.502547 0.447456
+vt 0.490939 0.531726
+vt 0.518733 0.507024
+vt 0.523311 0.550624
+vt 0.623883 0.361750
+vt 0.640864 0.402504
+vt 0.600505 0.392957
+vt 0.426980 0.433344
+vt 0.351883 0.427401
+vt 0.543449 0.443355
+vt 0.487360 0.577570
+vt 0.579453 0.431630
+vt 0.614749 0.443578
+vt 0.586169 0.474863
+vt 0.406223 0.470722
+vt 0.439807 0.474074
+vt 0.406223 0.499246
+vt 0.484675 0.406175
+vt 0.460564 0.390923
+vt 0.494784 0.364069
+vt 0.554261 0.399198
+vt 0.520730 0.399008
+vt 0.535685 0.359968
+vt 0.490940 0.623414
+vt 0.523311 0.604517
+vt 0.518734 0.648117
+vt 0.554685 0.621171
+vt 0.552103 0.577571
+vt 0.475519 0.351883
+vt 0.372639 0.474074
+vt 0.566041 0.484410
+vt 0.554261 0.443578
+vt 0.626528 0.484410
+vt 0.648117 0.447872
+vt 0.465362 0.442459
+vt 0.563121 0.392957
+vt 0.554685 0.533970
+vt 0.554261 0.480170
+vt 0.351883 0.377055
+vt 0.589236 0.351883
+vt 0.460564 0.604516
+vt 0.460564 0.550623
+vt 0.444370 0.521955
+vt 0.460564 0.562925
+vt 0.420078 0.499246
+vt 0.520041 0.507024
+vt 0.384862 0.507878
+vt 0.385468 0.351883
+vt 0.426980 0.351883
+vt 0.389383 0.643655
+vt 0.062500 0.187500
+vt 0.000000 0.187500
+vt 0.000000 0.000000
+vt 0.062500 0.000000
+vt 0.250000 0.187500
+vt 0.187500 0.187500
+vt 0.187500 0.000000
+vt 0.250000 0.000000
+vt 0.125000 0.187500
+vt 0.125000 0.000000
+vt 0.187500 0.812500
+vt 0.125000 0.812500
+vt 0.125000 0.562500
+vt 0.187500 0.562500
+vt 0.062500 0.812500
+vt 0.062500 0.562500
+vt 0.250000 0.812500
+vt 0.250000 0.562500
+vt 0.000000 0.812500
+vt 0.000000 0.562500
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.250000 1.000000
+vt 0.187500 1.000000
+vt 0.125000 1.000000
+vt 0.125000 0.437500
+vt 0.062500 0.437500
+vt 0.187500 0.437500
+vt 0.250000 0.437500
+vt 0.000000 0.437500
+vn -0.558500 -0.829500 0.000000
+vn -0.951700 0.307000 0.000000
+vn -0.475800 0.307000 -0.824200
+vn -0.279200 -0.829500 -0.483700
+vn 0.475800 0.307000 -0.824200
+vn 0.279200 -0.829500 -0.483700
+vn 0.951700 0.307000 0.000000
+vn 0.558500 -0.829500 0.000000
+vn 0.475800 0.307000 0.824200
+vn 0.279200 -0.829500 0.483700
+vn -0.475800 0.307000 0.824200
+vn -0.279200 -0.829500 0.483700
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 -0.004800
+vn 0.000000 -0.657400 0.753500
+vn -0.898300 -0.248500 0.362300
+vn -0.863600 -0.504100 -0.003400
+vn -0.661500 0.421500 -0.620200
+vn -0.746000 0.665900 0.000000
+vn 0.661500 0.421500 -0.620200
+vn 0.746000 0.665900 0.000000
+vn 0.898300 -0.248500 0.362300
+vn 0.863600 -0.504100 -0.003400
+vn 0.000000 0.000000 1.000000
+vn -0.925200 0.000000 0.379500
+vn -0.617100 0.000000 -0.786900
+vn 0.617100 0.000000 -0.786900
+vn 0.925200 0.000000 0.379500
+vn 0.000000 0.657400 0.753500
+vn -0.898300 0.248400 0.362300
+vn -0.661500 -0.421500 -0.620200
+vn 0.661500 -0.421500 -0.620200
+vn 0.898300 0.248400 0.362300
+vn 0.000000 1.000000 0.000000
+vn -0.866100 0.499800 0.000000
+vn -0.746000 -0.665900 0.000000
+vn 0.746000 -0.665900 0.000000
+vn 0.866100 0.499800 0.000000
+vn 0.000000 0.657400 -0.753500
+vn -0.898300 0.248400 -0.362400
+vn -0.661600 -0.421500 0.620200
+vn 0.661500 -0.421500 0.620200
+vn 0.898300 0.248400 -0.362300
+vn 0.000000 -0.000900 -1.000000
+vn -0.924600 -0.000600 -0.380700
+vn -0.617100 0.000000 0.786900
+vn 0.617100 0.000000 0.786900
+vn 0.924700 -0.000600 -0.380700
+vn 0.000000 -0.650300 -0.759600
+vn -0.895600 -0.254600 -0.364800
+vn -0.661600 0.421500 0.620200
+vn 0.661600 0.421500 0.620200
+vn 0.895600 -0.254600 -0.364800
+vn 0.004900 -1.000000 0.000000
+vn -0.729700 -0.683800 0.000000
+vn -0.324500 -0.256300 -0.910500
+vn 0.003300 -0.475500 -0.879700
+vn 0.578700 0.436200 -0.689100
+vn 0.000000 0.666600 -0.745400
+vn 0.578700 0.436200 0.689100
+vn 0.000000 0.666600 0.745400
+vn -0.324500 -0.256300 0.910500
+vn 0.003300 -0.475500 0.879700
+vn -1.000000 0.000000 0.000000
+vn -0.359600 0.000000 -0.933100
+vn 0.756400 0.000000 -0.654100
+vn 0.756400 0.000000 0.654100
+vn -0.359600 0.000000 0.933100
+vn -0.729700 0.683700 0.000000
+vn -0.324500 0.256300 -0.910500
+vn 0.578700 -0.436200 -0.689100
+vn 0.578700 -0.436200 0.689100
+vn -0.324500 0.256300 0.910500
+vn 0.000000 0.470900 -0.882200
+vn 0.000000 -0.666600 -0.745400
+vn 0.000000 -0.666600 0.745400
+vn 0.000000 0.470900 0.882200
+vn 0.729700 0.683700 0.000000
+vn 0.324500 0.256300 -0.910500
+vn -0.578700 -0.436200 -0.689100
+vn -0.578700 -0.436200 0.689100
+vn 0.324500 0.256300 0.910500
+vn 1.000000 -0.001100 0.000000
+vn 0.361000 -0.000700 -0.932600
+vn -0.756400 0.000000 -0.654100
+vn -0.756400 0.000000 0.654100
+vn 0.361000 -0.000700 0.932600
+vn 0.736100 -0.676800 0.000000
+vn 0.327100 -0.263100 -0.907600
+vn -0.578700 0.436200 -0.689100
+vn -0.578700 0.436200 0.689100
+vn 0.327100 -0.263100 0.907600
+vn -0.004900 -1.000000 0.000000
+vn 0.729700 -0.683800 0.000000
+vn 0.324500 -0.256300 0.910500
+vn -0.003300 -0.475400 0.879700
+vn 0.324500 -0.256300 -0.910500
+vn -0.003300 -0.475400 -0.879700
+vn 1.000000 0.000000 0.000000
+vn 0.359600 0.000000 0.933100
+vn 0.359600 0.000000 -0.933100
+vn -0.578600 -0.436200 0.689100
+vn 0.578600 -0.436200 0.689100
+vn -1.000000 -0.001100 0.000000
+vn -0.361000 -0.000700 0.932600
+vn -0.361000 -0.000700 -0.932600
+vn -0.736100 -0.676800 0.000000
+vn -0.327100 -0.263100 0.907600
+vn -0.327100 -0.263100 -0.907600
+vn 0.000000 -1.000000 0.004800
+vn 0.000000 -0.657400 -0.753500
+vn 0.898300 -0.248500 -0.362400
+vn 0.863600 -0.504100 0.003400
+vn -0.898300 -0.248500 -0.362400
+vn -0.863600 -0.504100 0.003400
+vn 0.000000 0.000000 -1.000000
+vn 0.925200 0.000000 -0.379500
+vn -0.925200 0.000000 -0.379500
+vn 0.898300 0.248500 -0.362400
+vn 0.661600 -0.421500 0.620200
+vn -0.898300 0.248500 -0.362400
+vn 0.898300 0.248500 0.362300
+vn -0.898300 0.248500 0.362300
+vn 0.000000 -0.000900 1.000000
+vn 0.924700 -0.000600 0.380700
+vn -0.924700 -0.000600 0.380700
+vn 0.000000 -0.650300 0.759600
+vn 0.895600 -0.254600 0.364700
+vn -0.895600 -0.254600 0.364700
+vn 0.729700 -0.683700 0.000000
+vn -0.578600 0.436200 0.689100
+vn -0.578600 0.436200 -0.689100
+vn 0.729700 0.683800 0.000000
+vn -0.729700 0.683800 0.000000
+vn 0.578600 0.436200 0.689100
+vn 0.578600 0.436200 -0.689100
+vn 0.000000 0.300400 -0.953800
+vn -0.927200 0.000000 -0.374400
+vn -0.858500 0.155900 -0.488600
+vn -0.640100 0.000000 0.768300
+vn -0.670000 -0.212600 0.711300
+vn 0.640100 0.000000 0.768300
+vn 0.670000 -0.212600 0.711300
+vn 0.927200 0.000000 -0.374400
+vn 0.858500 0.155900 -0.488600
+vn 0.000000 -0.680300 -0.732900
+vn -0.902900 -0.266000 -0.337600
+vn -0.676200 0.442600 0.588900
+vn 0.676200 0.442600 0.588900
+vn 0.902900 -0.266000 -0.337600
+vn -0.872700 -0.488100 0.000000
+vn -0.734400 0.678700 0.000000
+vn 0.734400 0.678700 0.000000
+vn 0.872700 -0.488100 0.000000
+vn 0.000000 -0.680300 0.732900
+vn -0.902900 -0.266000 0.337600
+vn -0.676200 0.442600 -0.588900
+vn 0.676200 0.442600 -0.588900
+vn 0.902900 -0.266000 0.337600
+vn 0.000000 0.001100 1.000000
+vn -0.926700 0.000700 0.375700
+vn -0.640100 0.000000 -0.768300
+vn 0.640100 0.000000 -0.768300
+vn 0.926700 0.000700 0.375700
+vn 0.000000 0.301700 0.953400
+vn -0.859300 0.156300 0.487000
+vn -0.670000 -0.212600 -0.711300
+vn 0.670000 -0.212600 -0.711300
+vn 0.859300 0.156300 0.487000
+vn 0.000000 1.000000 0.004500
+vn 0.000000 0.680200 -0.733000
+vn -0.902900 0.266000 -0.337600
+vn -0.870300 0.492500 0.003200
+vn -0.676200 -0.442600 0.588900
+vn -0.734400 -0.678700 0.000000
+vn 0.676200 -0.442600 0.588900
+vn 0.734400 -0.678700 0.000000
+vn 0.902900 0.266000 -0.337600
+vn 0.870300 0.492500 0.003200
+vn 0.000000 -0.300400 -0.953800
+vn -0.858500 -0.155900 -0.488600
+vn -0.670000 0.212600 0.711300
+vn 0.670000 0.212600 0.711300
+vn 0.858500 -0.155900 -0.488600
+vn -0.000000 -0.300400 0.953800
+vn -0.858500 -0.155900 0.488600
+vn -0.670000 0.212600 -0.711300
+vn 0.670000 0.212600 -0.711300
+vn 0.858500 -0.155900 0.488600
+vn 0.000000 0.673500 0.739100
+vn -0.900100 0.272500 0.340000
+vn -0.676200 -0.442600 -0.588900
+vn 0.676200 -0.442600 -0.588900
+vn 0.900100 0.272500 0.340000
+vn -0.370900 0.851300 -0.370900
+vn -0.200800 0.851300 -0.484600
+vn 0.000000 0.851300 -0.524600
+vn 0.200800 0.851300 -0.484600
+vn -0.484600 0.851300 -0.200800
+vn -0.524600 0.851300 0.000000
+vn -0.484600 0.851300 0.200800
+vn -0.370900 0.851300 0.370900
+vn -0.200800 0.851300 0.484600
+vn 0.000000 0.851300 0.524600
+vn -0.470900 0.745900 -0.470900
+vn -0.254900 0.745900 -0.615300
+vn 0.200800 0.851300 0.484600
+vn 0.000000 0.745900 -0.666000
+vn 0.254900 0.745900 -0.615300
+vn -0.615300 0.745900 -0.254900
+vn 0.370900 0.851300 0.370900
+vn -0.666000 0.745900 0.000000
+vn -0.615300 0.745900 0.254900
+vn 0.484600 0.851300 0.200800
+vn -0.470900 0.745900 0.470900
+vn -0.254900 0.745900 0.615300
+vn 0.524600 0.851300 0.000000
+vn 0.000000 0.745900 0.666000
+vn 0.254900 0.745900 0.615300
+vn 0.484600 0.851300 -0.200800
+vn 0.470900 0.745900 0.470900
+vn 0.615300 0.745900 0.254900
+vn 0.370900 0.851300 -0.370900
+vn 0.666000 0.745900 0.000000
+vn 0.615300 0.745900 -0.254900
+vn 0.470900 0.745900 -0.470900
+vn 0.354000 -0.865600 0.354000
+vn 0.191600 -0.865600 0.462600
+vn 0.000000 -0.865600 0.500700
+vn -0.191600 -0.865600 0.462600
+vn 0.462600 -0.865600 0.191600
+vn 0.500700 -0.865600 0.000000
+vn 0.462600 -0.865600 -0.191600
+vn 0.354000 -0.865600 -0.354000
+vn 0.191600 -0.865600 -0.462600
+vn 0.000000 -0.865600 -0.500700
+vn 0.213400 -0.953400 0.213400
+vn 0.115500 -0.953400 0.278800
+vn -0.191600 -0.865600 -0.462600
+vn 0.000000 -0.953400 0.301800
+vn -0.115500 -0.953400 0.278800
+vn 0.278800 -0.953400 0.115500
+vn -0.354000 -0.865600 -0.354000
+vn 0.301800 -0.953400 0.000000
+vn 0.278800 -0.953400 -0.115500
+vn -0.462600 -0.865600 -0.191600
+vn 0.213400 -0.953400 -0.213400
+vn 0.115500 -0.953400 -0.278800
+vn -0.500700 -0.865600 0.000000
+vn 0.000000 -0.953400 -0.301800
+vn -0.115500 -0.953400 -0.278800
+vn -0.462600 -0.865600 0.191600
+vn -0.213400 -0.953400 -0.213400
+vn -0.278800 -0.953400 -0.115500
+vn -0.354000 -0.865600 0.354000
+vn -0.301800 -0.953400 0.000000
+vn -0.278800 -0.953400 0.115500
+vn -0.213400 -0.953400 0.213400
+vn 0.425300 -0.850600 0.309000
+vn -0.162500 -0.850600 0.500000
+vn 0.723600 -0.447200 0.525700
+vn 0.850600 -0.525700 0.000000
+vn -0.525700 -0.850600 0.000000
+vn -0.162500 -0.850600 -0.500000
+vn 0.425300 -0.850600 -0.309000
+vn 0.951000 0.000000 0.309000
+vn -0.276400 -0.447200 0.850600
+vn 0.262900 -0.525700 0.809000
+vn -0.894400 -0.447200 0.000000
+vn -0.688200 -0.525700 0.500000
+vn -0.951000 0.000000 0.309000
+vn -0.276400 -0.447200 -0.850600
+vn -0.688200 -0.525700 -0.500000
+vn -0.587800 0.000000 -0.809000
+vn 0.723600 -0.447200 -0.525700
+vn 0.262900 -0.525700 -0.809000
+vn 0.587800 0.000000 -0.809000
+vn 0.587800 0.000000 0.809000
+vn -0.587800 0.000000 0.809000
+vn -0.951000 0.000000 -0.309000
+vn 0.951000 0.000000 -0.309000
+vn 0.276400 0.447200 0.850600
+vn 0.688200 0.525700 0.500000
+vn 0.196700 0.771200 0.605400
+vn -0.723600 0.447200 0.525700
+vn -0.262900 0.525700 0.809000
+vn -0.515000 0.771200 0.374200
+vn -0.723600 0.447200 -0.525700
+vn -0.850600 0.525700 0.000000
+vn -0.515000 0.771200 -0.374200
+vn 0.276400 0.447200 -0.850600
+vn -0.262900 0.525700 -0.809000
+vn 0.196700 0.771200 -0.605400
+vn 0.894400 0.447200 0.000000
+vn 0.688200 0.525700 -0.500000
+vn 0.636600 0.771200 0.000000
+vn -0.696700 -0.082200 0.712600
+vn -0.752000 -0.015000 -0.658900
+vn -0.630400 0.048400 -0.774800
+vn -0.696600 -0.230600 0.679300
+vn 0.713300 0.093800 -0.694500
+vn 0.681600 0.231100 -0.694300
+vn 0.660500 -0.008100 0.750700
+vn 0.777700 0.000800 0.628600
+vn 0.625300 0.074700 -0.776800
+vn 0.677100 -0.058900 0.733500
+vn 0.796300 -0.002300 0.604800
+vn 0.733700 -0.158800 -0.660700
+vn -0.773100 -0.050100 0.632300
+vn -0.640800 0.227700 0.733100
+vn -0.728800 0.039800 -0.683500
+vn -0.589200 -0.118600 -0.799200
+vn -0.612600 -0.019500 0.790200
+vn -0.673500 0.276300 -0.685600
+vn 0.787600 -0.051900 -0.614000
+vn 0.683700 -0.276500 0.675400
+vn 0.630500 0.043200 0.775000
+vn -0.694800 0.260200 0.670500
+vn 0.650000 -0.316100 -0.691100
+vn -0.765300 0.079000 -0.638800
+g Torus.016_Torus_Torus.016_Torus_brass
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 4/4/4 3/3/3 5/5/5 6/6/6
+f 6/6/6 5/5/5 7/7/7 8/8/8
+f 8/8/8 7/7/7 9/9/9 10/10/10
+f 10/10/10 9/9/9 11/11/11 12/12/12
+f 13/13/13 1/1/1 4/4/4
+f 13/13/13 4/4/4 6/6/6
+f 13/13/13 6/6/6 8/8/8
+f 13/13/13 8/8/8 10/10/10
+f 13/13/13 10/10/10 12/12/12
+f 12/12/12 1/1/1 13/13/13
+f 2/2/2 1/1/1 12/12/12 11/11/11
+f 9/14/9 7/15/7 5/16/5 3/17/3 2/18/2 11/19/11
+f 14/20/14 15/21/15 16/22/16 17/23/17
+f 17/24/17 16/25/16 18/26/18 19/27/19
+f 19/28/19 18/29/18 20/30/20 21/31/21
+f 21/31/21 20/30/20 22/32/22 23/33/23
+f 14/34/14 23/35/23 22/36/22 15/37/15
+f 15/21/15 24/38/24 25/39/25 16/22/16
+f 16/25/16 25/40/25 26/41/26 18/26/18
+f 18/26/18 26/41/26 27/42/27 20/43/20
+f 20/30/20 27/44/27 28/45/28 22/32/22
+f 22/46/22 28/47/28 24/48/24 15/49/15
+f 24/50/24 29/51/29 30/52/30 25/53/25
+f 25/40/25 30/54/30 31/55/31 26/41/26
+f 26/41/26 31/55/31 32/56/32 27/42/27
+f 27/57/27 32/58/32 33/59/33 28/60/28
+f 28/47/28 33/61/33 29/62/29 24/48/24
+f 29/51/29 34/63/34 35/64/35 30/52/30
+f 30/54/30 35/65/35 36/66/36 31/55/31
+f 31/67/31 36/68/36 37/69/37 32/58/32
+f 32/58/32 37/69/37 38/70/38 33/59/33
+f 33/61/33 38/71/38 34/72/34 29/62/29
+f 34/63/34 39/73/39 40/74/40 35/64/35
+f 35/75/35 40/76/40 41/77/41 36/78/36
+f 36/78/36 41/77/41 42/79/42 37/80/37
+f 37/81/37 42/82/42 43/83/43 38/84/38
+f 38/85/38 43/86/43 39/87/39 34/88/34
+f 39/89/39 44/90/44 45/91/45 40/92/40
+f 40/76/40 45/93/45 46/94/46 41/77/41
+f 41/95/41 46/96/46 47/97/47 42/82/42
+f 42/82/42 47/97/47 48/98/48 43/83/43
+f 43/86/43 48/99/48 44/100/44 39/87/39
+f 44/90/44 49/101/49 50/102/50 45/91/45
+f 45/103/45 50/104/50 51/105/51 46/106/46
+f 46/96/46 51/107/51 52/108/52 47/97/47
+f 47/97/47 52/108/52 53/109/53 48/98/48
+f 48/110/48 53/111/53 49/112/49 44/113/44
+f 49/101/49 14/114/14 17/115/17 50/102/50
+f 50/104/50 17/116/17 19/117/19 51/105/51
+f 51/105/51 19/117/19 21/118/21 52/119/52
+f 52/108/52 21/120/21 23/121/23 53/109/53
+f 14/34/14 49/112/49 53/111/53 23/35/23
+f 54/122/54 55/123/55 56/124/56 57/125/57
+f 57/125/57 56/124/56 58/126/58 59/127/59
+f 59/128/59 58/129/58 60/130/60 61/131/61
+f 61/132/61 60/133/60 62/134/62 63/135/63
+f 54/136/54 63/137/63 62/138/62 55/139/55
+f 55/123/55 64/140/64 65/141/65 56/124/56
+f 56/124/56 65/141/65 66/142/66 58/126/58
+f 58/129/58 66/143/66 67/144/67 60/130/60
+f 60/133/60 67/145/67 68/146/68 62/134/62
+f 62/138/62 68/147/68 64/148/64 55/139/55
+f 64/140/64 69/149/69 70/150/70 65/141/65
+f 65/141/65 70/150/70 71/151/71 66/142/66
+f 66/152/66 71/153/71 72/154/72 67/155/67
+f 67/145/67 72/156/72 73/157/73 68/146/68
+f 68/158/68 73/159/73 69/160/69 64/161/64
+f 69/162/69 74/163/34 75/164/74 70/165/70
+f 70/150/70 75/166/74 76/167/75 71/151/71
+f 71/153/71 76/168/75 77/169/76 72/154/72
+f 72/156/72 77/170/76 78/171/77 73/157/73
+f 73/159/73 78/172/77 74/173/34 69/160/69
+f 74/163/34 79/174/78 80/175/79 75/164/74
+f 75/166/74 80/176/79 81/177/80 76/167/75
+f 76/178/75 81/179/80 82/180/81 77/181/76
+f 77/170/76 82/182/81 83/183/82 78/171/77
+f 78/172/77 83/184/82 79/185/78 74/173/34
+f 79/174/78 84/186/83 85/187/84 80/175/79
+f 80/176/79 85/188/84 86/189/85 81/177/80
+f 81/179/80 86/190/85 87/191/86 82/180/81
+f 82/182/81 87/192/86 88/193/87 83/183/82
+f 83/183/82 88/193/87 84/194/83 79/195/78
+f 84/196/83 89/197/88 90/198/89 85/199/84
+f 85/188/84 90/200/89 91/201/90 86/189/85
+f 86/202/85 91/203/90 92/204/91 87/205/86
+f 87/192/86 92/206/91 93/207/92 88/193/87
+f 88/193/87 93/207/92 89/208/88 84/194/83
+f 89/197/88 54/209/54 57/210/57 90/198/89
+f 90/200/89 57/125/57 59/127/59 91/201/90
+f 91/203/90 59/211/59 61/212/61 92/204/91
+f 92/206/91 61/132/61 63/135/63 93/207/92
+f 54/136/54 89/213/88 93/214/92 63/137/63
+f 94/215/93 95/216/94 96/217/95 97/218/96
+f 97/219/96 96/220/95 98/221/91 99/222/61
+f 99/223/61 98/224/91 100/225/90 101/226/59
+f 101/227/59 100/228/90 102/229/97 103/230/98
+f 94/231/93 103/232/98 102/233/97 95/234/94
+f 95/235/94 104/236/99 105/237/100 96/220/95
+f 96/220/95 105/237/100 106/238/86 98/221/91
+f 98/224/91 106/239/86 107/240/85 100/225/90
+f 100/228/90 107/241/85 108/242/101 102/229/97
+f 102/233/97 108/243/101 104/244/99 95/234/94
+f 104/236/99 109/245/78 110/246/82 105/237/100
+f 105/237/100 110/246/82 111/247/102 106/238/86
+f 106/248/86 111/249/102 112/250/80 107/251/85
+f 107/241/85 112/252/80 113/253/79 108/242/101
+f 108/254/101 113/255/79 109/256/78 104/257/99
+f 109/258/78 114/259/34 115/260/77 110/261/82
+f 110/246/82 115/262/77 116/263/76 111/247/102
+f 111/249/102 116/264/76 117/265/75 112/250/80
+f 112/252/80 117/266/75 118/267/74 113/253/79
+f 113/255/79 118/268/74 114/269/34 109/256/78
+f 114/259/34 119/270/69 120/271/73 115/260/77
+f 115/262/77 120/272/73 121/273/103 116/263/76
+f 116/274/76 121/275/103 122/276/71 117/277/75
+f 117/266/75 122/278/71 123/279/70 118/267/74
+f 118/268/74 123/280/70 119/281/69 114/269/34
+f 119/270/69 124/282/104 125/283/105 120/271/73
+f 120/272/73 125/284/105 126/285/67 121/273/103
+f 121/275/103 126/286/67 127/287/66 122/276/71
+f 122/278/71 127/288/66 128/289/106 123/279/70
+f 123/279/70 128/289/106 124/290/104 119/291/69
+f 124/292/104 129/293/107 130/294/108 125/295/105
+f 125/284/105 130/296/108 131/297/60 126/285/67
+f 126/298/67 131/299/60 132/300/58 127/301/66
+f 127/288/66 132/302/58 133/303/109 128/289/106
+f 128/289/106 133/303/109 129/304/107 124/290/104
+f 129/293/107 94/215/93 97/218/96 130/294/108
+f 130/296/108 97/219/96 99/222/61 131/297/60
+f 131/299/60 99/305/61 101/306/59 132/300/58
+f 132/302/58 101/227/59 103/230/98 133/303/109
+f 94/307/93 129/304/107 133/303/109 103/230/98
+f 134/308/110 135/309/111 136/310/112 137/311/113
+f 137/312/113 136/313/112 138/314/52 139/315/21
+f 139/316/21 138/317/52 140/318/51 141/319/19
+f 141/319/19 140/318/51 142/320/114 143/321/115
+f 134/322/110 143/323/115 142/324/114 135/325/111
+f 135/309/111 144/326/116 145/327/117 136/310/112
+f 136/313/112 145/328/117 146/329/47 138/314/52
+f 138/314/52 146/329/47 147/330/46 140/331/51
+f 140/318/51 147/332/46 148/333/118 142/320/114
+f 142/324/114 148/334/118 144/335/116 135/325/111
+f 144/336/116 149/337/39 150/338/119 145/339/117
+f 145/328/117 150/340/119 151/341/120 146/329/47
+f 146/329/47 151/341/120 152/342/41 147/330/46
+f 147/343/46 152/344/41 153/345/121 148/346/118
+f 148/334/118 153/347/121 149/348/39 144/335/116
+f 149/337/39 154/349/34 155/350/38 150/338/119
+f 150/340/119 155/351/38 156/352/37 151/341/120
+f 151/353/120 156/354/37 157/355/36 152/344/41
+f 152/344/41 157/355/36 158/356/35 153/345/121
+f 153/357/121 158/358/35 154/359/34 149/360/39
+f 154/361/34 159/362/29 160/363/122 155/364/38
+f 155/365/38 160/366/122 161/367/32 156/368/37
+f 156/368/37 161/367/32 162/369/31 157/370/36
+f 157/371/36 162/372/31 163/373/123 158/374/35
+f 158/358/35 163/375/123 159/376/29 154/359/34
+f 159/362/29 164/377/124 165/378/125 160/363/122
+f 160/366/122 165/379/125 166/380/27 161/367/32
+f 161/381/32 166/382/27 167/383/26 162/372/31
+f 162/372/31 167/383/26 168/384/126 163/373/123
+f 163/375/123 168/385/126 164/386/124 159/376/29
+f 164/377/124 169/387/127 170/388/128 165/378/125
+f 165/389/125 170/390/128 171/391/20 166/392/27
+f 166/382/27 171/393/20 172/394/18 167/383/26
+f 167/383/26 172/394/18 173/395/129 168/384/126
+f 168/396/126 173/397/129 169/398/127 164/399/124
+f 169/400/127 134/308/110 137/311/113 170/401/128
+f 170/390/128 137/402/113 139/403/21 171/391/20
+f 171/391/20 139/403/21 141/404/19 172/405/18
+f 172/394/18 141/406/19 143/407/115 173/395/129
+f 134/408/110 169/398/127 173/397/129 143/409/115
+f 174/410/93 175/411/130 176/412/95 177/413/96
+f 177/414/96 176/415/95 178/416/131 179/417/61
+f 179/418/61 178/419/131 180/420/132 181/421/59
+f 181/422/59 180/423/132 182/424/97 183/425/98
+f 174/426/93 183/427/98 182/428/97 175/429/130
+f 175/430/130 184/431/99 185/432/100 176/415/95
+f 176/415/95 185/432/100 186/433/86 178/416/131
+f 178/419/131 186/434/86 187/435/85 180/420/132
+f 180/423/132 187/436/85 188/437/101 182/424/97
+f 182/428/97 188/438/101 184/439/99 175/429/130
+f 184/431/99 189/440/133 190/441/82 185/432/100
+f 185/432/100 190/441/82 191/442/81 186/433/86
+f 186/443/86 191/444/81 192/445/80 187/446/85
+f 187/436/85 192/447/80 193/448/79 188/437/101
+f 188/449/101 193/450/79 189/451/133 184/452/99
+f 189/453/133 194/454/34 195/455/77 190/456/82
+f 190/441/82 195/457/77 196/458/76 191/442/81
+f 191/444/81 196/459/76 197/460/75 192/445/80
+f 192/447/80 197/461/75 198/462/74 193/448/79
+f 193/450/79 198/463/74 194/464/34 189/451/133
+f 194/454/34 199/465/134 200/466/73 195/455/77
+f 195/457/77 200/467/73 201/468/72 196/458/76
+f 196/469/76 201/470/72 202/471/71 197/472/75
+f 197/461/75 202/473/71 203/474/70 198/462/74
+f 198/463/74 203/475/70 199/476/134 194/464/34
+f 199/465/134 204/477/104 205/478/105 200/466/73
+f 200/467/73 205/479/105 206/480/67 201/468/72
+f 201/470/72 206/481/67 207/482/66 202/471/71
+f 202/473/71 207/483/66 208/484/106 203/474/70
+f 203/474/70 208/484/106 204/485/104 199/486/134
+f 204/487/104 209/488/107 210/489/108 205/490/105
+f 205/479/105 210/491/108 211/492/135 206/480/67
+f 206/493/67 211/494/135 212/495/136 207/496/66
+f 207/483/66 212/497/136 213/498/109 208/484/106
+f 208/484/106 213/498/109 209/499/107 204/485/104
+f 209/488/107 174/410/93 177/413/96 210/489/108
+f 210/491/108 177/414/96 179/417/61 211/492/135
+f 211/494/135 179/500/61 181/501/59 212/495/136
+f 212/497/136 181/422/59 183/425/98 213/498/109
+f 174/502/93 209/499/107 213/498/109 183/425/98
+f 214/503/137 219/504/116 220/505/138 215/506/139
+f 215/507/139 220/508/138 221/509/140 216/510/141
+f 216/511/141 221/512/140 222/513/142 217/514/143
+f 217/514/143 222/513/142 223/515/144 218/516/145
+f 218/517/145 223/518/144 219/519/116 214/520/137
+f 219/504/116 224/521/146 225/522/147 220/505/138
+f 220/523/138 225/524/147 226/525/148 221/526/140
+f 221/512/140 226/527/148 227/528/149 222/513/142
+f 222/513/142 227/528/149 228/529/150 223/515/144
+f 223/530/144 228/531/150 224/532/146 219/533/116
+f 224/534/146 229/535/13 230/536/151 225/537/147
+f 225/524/147 230/538/151 231/539/152 226/525/148
+f 226/525/148 231/539/152 232/540/153 227/541/149
+f 227/528/149 232/542/153 233/543/154 228/529/150
+f 228/531/150 233/544/154 229/545/13 224/532/146
+f 229/535/13 234/546/155 235/547/156 230/536/151
+f 230/548/151 235/549/156 236/550/157 231/551/152
+f 231/552/152 236/553/157 237/554/158 232/555/153
+f 232/555/153 237/554/158 238/556/159 233/557/154
+f 233/544/154 238/558/159 234/559/155 229/545/13
+f 234/546/155 239/560/160 240/561/161 235/547/156
+f 235/549/156 240/562/161 241/563/162 236/550/157
+f 236/550/157 241/563/162 242/564/163 237/565/158
+f 237/554/158 242/566/163 243/567/164 238/556/159
+f 238/568/159 243/569/164 239/570/160 234/571/155
+f 239/572/160 244/573/165 245/574/166 240/575/161
+f 240/562/161 245/576/166 246/577/167 241/563/162
+f 241/563/162 246/577/167 247/578/168 242/564/163
+f 242/579/163 247/580/168 248/581/169 243/582/164
+f 243/569/164 248/583/169 244/584/165 239/570/160
+f 249/585/170 250/586/171 251/587/172 252/588/173
+f 252/589/173 251/590/172 253/591/174 254/592/175
+f 254/592/175 253/591/174 255/593/176 256/594/177
+f 256/595/177 255/596/176 257/597/178 258/598/179
+f 249/599/170 258/600/179 257/601/178 250/602/171
+f 250/603/171 259/604/116 260/605/138 251/606/172
+f 251/590/172 260/607/138 261/608/140 253/591/174
+f 253/609/174 261/610/140 262/611/142 255/596/176
+f 255/596/176 262/611/142 263/612/144 257/597/178
+f 257/601/178 263/613/144 259/614/116 250/602/171
+f 259/604/116 264/615/180 265/616/181 260/605/138
+f 260/617/138 265/618/181 266/619/182 261/620/140
+f 261/610/140 266/621/182 267/622/183 262/611/142
+f 262/611/142 267/622/183 268/623/184 263/612/144
+f 263/624/144 268/625/184 264/626/180 259/627/116
+f 269/628/185 274/629/160 275/630/161 270/631/186
+f 270/632/186 275/633/161 276/634/162 271/635/187
+f 271/635/187 276/634/162 277/636/163 272/637/188
+f 272/638/188 277/639/163 278/640/164 273/641/189
+f 273/642/189 278/643/164 274/644/160 269/645/185
+f 274/646/160 279/647/190 280/648/191 275/649/161
+f 275/633/161 280/650/191 281/651/192 276/634/162
+f 276/634/162 281/651/192 282/652/193 277/636/163
+f 277/653/163 282/654/193 283/655/194 278/656/164
+f 278/643/164 283/657/194 279/658/190 274/644/160
+f 279/647/190 249/585/170 252/588/173 280/648/191
+f 280/650/191 252/659/173 254/660/175 281/651/192
+f 281/661/192 254/662/175 256/663/177 282/654/193
+f 282/654/193 256/663/177 258/664/179 283/655/194
+f 249/599/170 279/665/190 283/666/194 258/600/179
+g Torus.016_Torus_Torus.016_Torus_shade
+f 306/667/195 286/668/34 308/669/196
+f 312/670/197 286/668/34 310/671/198
+f 304/672/199 286/668/34 306/667/195
+f 302/673/200 286/668/34 304/672/199
+f 300/674/201 286/668/34 302/673/200
+f 298/675/202 286/668/34 300/674/201
+f 296/676/203 286/668/34 298/675/202
+f 294/677/204 286/668/34 296/676/203
+f 313/678/205 306/667/195 308/669/196 315/679/206
+f 292/680/207 286/668/34 294/677/204
+f 285/681/208 312/670/197 310/671/198 287/682/209
+f 311/683/210 304/672/199 306/667/195 313/678/205
+f 290/684/211 286/668/34 292/680/207
+f 309/685/212 302/673/200 304/672/199 311/683/210
+f 307/686/213 300/674/201 302/673/200 309/685/212
+f 288/687/214 286/668/34 290/684/211
+f 305/688/215 298/675/202 300/674/201 307/686/213
+f 303/689/216 296/676/203 298/675/202 305/688/215
+f 284/690/217 286/668/34 288/687/214
+f 301/691/218 294/677/204 296/676/203 303/689/216
+f 299/692/219 292/680/207 294/677/204 301/691/218
+f 316/693/220 286/668/34 284/690/217
+f 297/694/221 290/684/211 292/680/207 299/692/219
+f 295/695/222 288/687/214 290/684/211 297/694/221
+f 314/696/223 286/668/34 316/693/220
+f 293/697/224 284/690/217 288/687/214 295/695/222
+f 291/698/225 316/693/220 284/690/217 293/697/224
+f 289/699/226 314/696/223 316/693/220 291/698/225
+f 315/679/206 308/669/196 312/670/197 285/681/208
+f 287/682/209 310/671/198 314/696/223 289/699/226
+f 308/669/196 286/668/34 312/670/197
+f 310/671/198 286/668/34 314/696/223
+f 339/700/227 341/701/228 319/668/13
+f 345/702/229 343/703/230 319/668/13
+f 337/704/231 339/700/227 319/668/13
+f 335/705/232 337/704/231 319/668/13
+f 333/706/233 335/705/232 319/668/13
+f 331/707/234 333/706/233 319/668/13
+f 329/708/235 331/707/234 319/668/13
+f 327/709/236 329/708/235 319/668/13
+f 346/710/237 348/711/238 341/701/228 339/700/227
+f 325/712/239 327/709/236 319/668/13
+f 318/713/240 320/714/241 343/703/230 345/702/229
+f 344/715/242 346/710/237 339/700/227 337/704/231
+f 323/716/243 325/712/239 319/668/13
+f 342/717/244 344/715/242 337/704/231 335/705/232
+f 340/718/245 342/717/244 335/705/232 333/706/233
+f 321/719/246 323/716/243 319/668/13
+f 338/720/247 340/718/245 333/706/233 331/707/234
+f 336/721/248 338/720/247 331/707/234 329/708/235
+f 317/722/249 321/719/246 319/668/13
+f 334/723/250 336/721/248 329/708/235 327/709/236
+f 332/724/251 334/723/250 327/709/236 325/712/239
+f 349/725/252 317/722/249 319/668/13
+f 330/726/253 332/724/251 325/712/239 323/716/243
+f 328/727/254 330/726/253 323/716/243 321/719/246
+f 347/728/255 349/725/252 319/668/13
+f 326/729/256 328/727/254 321/719/246 317/722/249
+f 324/730/257 326/729/256 317/722/249 349/725/252
+f 322/731/258 324/730/257 349/725/252 347/728/255
+f 348/711/238 318/713/240 345/702/229 341/701/228
+f 320/714/241 322/731/258 347/728/255 343/703/230
+f 341/701/228 345/702/229 319/668/13
+f 343/703/230 347/728/255 319/668/13
+f 299/732/13 332/724/251 330/726/253 297/733/13
+f 301/734/13 334/723/250 332/724/251 299/732/13
+f 303/735/13 336/721/248 334/723/250 301/734/13
+f 305/736/13 338/720/247 336/721/248 303/735/13
+f 307/737/13 340/718/245 338/720/247 305/736/13
+f 309/738/13 342/717/244 340/718/245 307/737/13
+f 311/739/13 344/715/242 342/717/244 309/738/13
+f 313/740/13 346/710/237 344/715/242 311/739/13
+f 315/741/13 348/711/238 346/710/237 313/740/13
+f 285/742/13 318/713/240 348/711/238 315/741/13
+f 287/743/13 320/714/241 318/713/240 285/742/13
+f 289/744/13 322/731/258 320/714/241 287/743/13
+f 291/745/13 324/730/257 322/731/258 289/744/13
+f 293/746/13 326/729/256 324/730/257 291/745/13
+f 295/747/13 328/727/254 326/729/256 293/746/13
+f 297/733/13 330/726/253 328/727/254 295/747/13
+g Torus.016_Torus_Torus.016_Torus_light-bulb
+f 350/748/13 362/749/259 361/750/260
+f 351/751/261 362/749/259 364/752/262
+f 350/748/13 361/750/260 366/753/263
+f 350/748/13 366/753/263 368/754/264
+f 350/748/13 368/754/264 365/755/265
+f 351/751/261 364/752/262 371/756/266
+f 352/757/267 363/758/268 373/759/24
+f 353/760/269 367/761/270 375/762/271
+f 354/763/272 369/764/273 377/765/274
+f 355/766/275 370/767/276 379/768/277
+f 351/769/261 371/770/266 374/771/278
+f 352/757/267 373/759/24 376/772/279
+f 353/760/269 375/762/271 378/773/280
+f 354/763/272 377/765/274 380/774/116
+f 355/766/275 379/768/277 372/775/281
+f 356/776/282 381/777/283 386/778/284
+f 357/779/285 382/780/286 388/781/287
+f 358/782/288 383/783/289 389/784/290
+f 359/785/291 384/786/292 390/787/293
+f 360/788/294 385/789/295 387/790/296
+f 387/790/296 385/789/295 390/791/293
+f 385/789/295 359/792/291 390/791/293
+f 390/787/293 384/786/292 389/784/290
+f 384/786/292 358/782/288 389/784/290
+f 389/784/290 383/783/289 388/793/287
+f 383/794/289 357/779/285 388/781/287
+f 388/795/287 382/796/286 386/778/284
+f 382/796/286 356/776/282 386/778/284
+f 386/778/284 381/777/283 387/797/296
+f 381/777/283 360/798/294 387/797/296
+f 372/775/281 385/789/295 360/788/294
+f 372/775/281 379/768/277 385/789/295
+f 379/768/277 359/792/291 385/789/295
+f 380/774/116 384/786/292 359/785/291
+f 380/774/116 377/765/274 384/786/292
+f 377/765/274 358/782/288 384/786/292
+f 378/799/280 383/783/289 358/782/288
+f 378/773/280 375/762/271 383/794/289
+f 375/762/271 357/779/285 383/794/289
+f 376/772/279 382/780/286 357/779/285
+f 376/772/279 373/759/24 382/780/286
+f 373/800/24 356/776/282 382/796/286
+f 374/771/278 381/777/283 356/776/282
+f 374/771/278 371/770/266 381/777/283
+f 371/770/266 360/798/294 381/777/283
+f 379/768/277 380/801/116 359/792/291
+f 379/768/277 370/767/276 380/801/116
+f 370/802/276 354/763/272 380/774/116
+f 377/765/274 378/799/280 358/782/288
+f 377/765/274 369/764/273 378/799/280
+f 369/803/273 353/760/269 378/773/280
+f 375/762/271 376/772/279 357/779/285
+f 375/762/271 367/761/270 376/772/279
+f 367/761/270 352/757/267 376/772/279
+f 373/800/24 374/771/278 356/776/282
+f 373/800/24 363/804/268 374/771/278
+f 363/804/268 351/769/261 374/771/278
+f 371/805/266 372/775/281 360/788/294
+f 371/805/266 364/806/262 372/775/281
+f 364/806/262 355/766/275 372/775/281
+f 365/755/265 370/807/276 355/808/275
+f 365/755/265 368/754/264 370/807/276
+f 368/754/264 354/809/272 370/807/276
+f 368/810/264 369/764/273 354/763/272
+f 368/754/264 366/753/263 369/811/273
+f 366/812/263 353/760/269 369/803/273
+f 366/812/263 367/761/270 353/760/269
+f 366/812/263 361/813/260 367/761/270
+f 361/813/260 352/757/267 367/761/270
+f 364/752/262 365/755/265 355/808/275
+f 364/752/262 362/749/259 365/755/265
+f 362/749/259 350/748/13 365/755/265
+f 361/813/260 363/758/268 352/757/267
+f 361/750/260 362/749/259 363/814/268
+f 362/749/259 351/751/261 363/814/268
+g Torus.016_Torus_Torus.016_Torus_cord
+f 407/815/297 404/816/298 392/817/299 391/818/300
+f 404/819/298 405/820/301 393/821/302 392/822/299
+f 405/820/301 406/823/303 394/824/304 393/821/302
+f 406/823/303 407/815/297 391/818/300 394/824/304
+f 409/825/305 410/826/306 402/827/307 401/828/308
+f 410/826/306 403/829/309 399/830/310 402/827/307
+f 408/831/311 409/825/305 401/828/308 400/832/312
+f 403/829/309 408/833/311 400/834/312 399/830/310
+f 395/835/313 396/836/314 408/833/311 403/829/309
+f 396/837/314 397/838/315 409/825/305 408/831/311
+f 398/839/316 395/835/313 403/829/309 410/826/306
+f 397/838/315 398/839/316 410/826/306 409/825/305
+f 414/840/317 411/841/318 407/815/297 406/823/303
+f 413/842/319 414/840/317 406/823/303 405/820/301
+f 412/843/320 413/842/319 405/820/301 404/819/298
+f 411/841/318 412/844/320 404/816/298 407/815/297
+f 399/830/310 400/834/312 412/844/320 411/841/318
+f 400/832/312 401/828/308 413/842/319 412/843/320
+f 401/828/308 402/827/307 414/840/317 413/842/319
+f 402/827/307 399/830/310 411/841/318 414/840/317
diff --git a/homedecor_modpack/homedecor/models/homedecor_ceiling_lantern.obj b/homedecor_modpack/homedecor/models/homedecor_ceiling_lantern.obj
new file mode 100644
index 0000000..f8f9a68
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_ceiling_lantern.obj
@@ -0,0 +1,208 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_ceiling_lantern.mtl
+o lantern_light
+v 0.131532 -0.238520 -0.166750
+v 0.178449 0.183954 -0.213668
+v -0.178611 0.183954 -0.213668
+v -0.131694 -0.238520 -0.166750
+v 0.170300 -0.238520 -0.127983
+v 0.170300 -0.238520 0.135243
+v 0.217217 0.183954 0.182161
+v 0.217217 0.183954 -0.174900
+v -0.131694 -0.238520 0.174011
+v -0.178611 0.183954 0.220929
+v 0.178449 0.183954 0.220929
+v 0.131532 -0.238520 0.174011
+v -0.170462 -0.238520 0.135243
+v -0.170462 -0.238520 -0.127983
+v -0.217379 0.183954 -0.174900
+v -0.217379 0.183954 0.182161
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g lantern_light_lantern_light_None.001
+usemtl None.001
+s off
+f 16/1 13/2 14/3 15/4
+f 5/1 6/2 7/3 8/4
+f 2/1 3/2 4/3 1/4
+f 9/1 10/2 11/3 12/4
+s 1
+f 7/1 6/2 12/3 11/4
+f 13/1 16/2 10/3 9/4
+f 3/1 15/2 14/3 4/4
+f 2/1 1/2 5/3 8/4
+o lantern_cage
+v 0.131532 -0.238520 -0.166750
+v 0.178449 0.183954 -0.213668
+v -0.178611 0.183954 -0.213668
+v -0.131694 -0.238520 -0.166750
+v 0.170300 -0.238520 -0.127983
+v 0.170300 -0.238520 0.135243
+v 0.217217 0.183954 0.182161
+v 0.217217 0.183954 -0.174900
+v -0.131694 -0.238520 0.174011
+v -0.178611 0.183954 0.220929
+v 0.178449 0.183954 0.220929
+v 0.131532 -0.238520 0.174011
+v -0.170462 -0.238520 0.135243
+v -0.170462 -0.238520 -0.127983
+v -0.217379 0.183954 -0.174900
+v -0.217379 0.183954 0.182161
+v -0.034963 0.451324 0.034678
+v -0.034963 0.451324 -0.035086
+v -0.060689 0.404833 -0.060813
+v -0.060689 0.404833 0.060404
+v 0.034801 0.451324 -0.035086
+v 0.060527 0.404833 -0.060813
+v 0.034801 0.451324 0.034678
+v 0.060527 0.404833 0.060404
+v -0.042454 0.390820 0.042169
+v 0.042293 0.390820 0.042169
+v 0.009255 0.461054 0.009132
+v -0.009417 0.461054 0.009132
+v -0.066860 0.357539 0.066575
+v 0.066698 0.357539 0.066575
+v 0.042293 0.390820 -0.042578
+v -0.042454 0.390820 -0.042578
+v -0.121725 0.333015 0.125275
+v 0.121564 0.333015 0.125275
+v 0.066698 0.357539 -0.066983
+v -0.066860 0.357539 -0.066983
+v 0.223082 0.236764 -0.219532
+v -0.223244 0.236764 -0.219532
+v -0.340709 0.267604 -0.336998
+v 0.340547 0.267604 -0.336998
+v 0.121564 0.333015 -0.118014
+v -0.121725 0.333015 -0.118014
+v 0.164435 -0.291329 -0.160885
+v -0.164597 -0.291329 -0.160885
+v -0.223244 0.236763 0.226793
+v -0.340709 0.267604 0.344259
+v 0.223082 0.236763 0.226793
+v 0.340547 0.267604 0.344259
+v 0.164435 -0.291330 0.168146
+v -0.164597 -0.291330 0.168146
+v -0.234314 -0.335598 0.237863
+v 0.234152 -0.335598 0.237863
+v -0.088326 -0.441351 0.091876
+v 0.088164 -0.441351 0.091876
+v 0.234152 -0.335598 -0.230603
+v -0.234314 -0.335598 -0.230603
+v -0.088326 -0.441351 -0.084615
+v 0.088164 -0.441351 -0.084615
+v 0.009255 0.499976 0.009132
+v -0.009417 0.499976 0.009132
+v 0.009255 0.461054 -0.009541
+v -0.009417 0.461054 -0.009541
+v 0.009255 0.499976 -0.009541
+v -0.009417 0.499976 -0.009541
+v 0.038749 -0.271168 -0.046637
+v 0.050186 -0.271168 -0.035199
+v 0.067481 0.279432 -0.051878
+v 0.055428 0.279432 -0.063932
+v -0.055590 0.279432 -0.063932
+v -0.067643 0.279432 -0.051878
+v -0.067643 0.279432 0.059139
+v -0.055590 0.279432 0.071193
+v 0.055428 0.279432 0.071193
+v 0.067481 0.279432 0.059139
+v -0.050348 -0.271168 -0.035199
+v -0.038910 -0.271168 -0.046637
+v -0.038910 -0.271168 0.053898
+v -0.050348 -0.271168 0.042460
+v 0.050186 -0.271168 0.042460
+v 0.038749 -0.271168 0.053898
+vt 0.374324 0.374324
+vt 0.625676 0.374324
+vt 0.625676 0.625676
+vt 0.374324 0.625676
+vt 0.500000 0.625676
+vt 0.588866 0.588866
+vt 0.625676 0.500000
+vt 0.588866 0.411134
+vt 0.500000 0.374324
+vt 0.411134 0.411134
+vt 0.374324 0.500000
+vt 0.411134 0.588866
+g lantern_cage_lantern_cage_None.001
+usemtl None.001
+s 1
+f 33/5 34/6 35/7 36/8
+f 34/5 37/6 38/7 35/8
+f 37/5 39/6 40/7 38/8
+f 39/5 33/6 36/7 40/8
+f 40/5 36/6 41/7 42/8
+f 33/5 39/6 43/7 44/8
+f 42/5 41/6 45/7 46/8
+f 38/5 40/6 42/7 47/8
+f 35/5 38/6 47/7 48/8
+f 36/5 35/6 48/7 41/8
+f 46/5 45/6 49/7 50/8
+f 47/5 42/6 46/7 51/8
+f 48/5 47/6 51/7 52/8
+f 41/5 48/6 52/7 45/8
+f 53/5 54/6 55/7 56/8
+f 51/5 46/6 50/7 57/8
+f 52/5 51/6 57/7 58/8
+f 45/5 52/6 58/7 49/8
+f 20/5 17/6 59/7 60/8
+f 54/5 61/6 62/7 55/8
+f 61/5 63/6 64/7 62/8
+f 63/5 53/6 56/7 64/8
+f 65/5 66/6 67/7 68/8
+f 54/5 53/6 18/7 19/8
+f 54/5 19/6 20/7 60/8
+f 17/5 18/6 53/7 59/8
+f 68/5 67/6 69/7 70/8
+f 59/5 65/6 68/7 71/8
+f 60/5 59/6 71/7 72/8
+f 66/5 60/6 72/7 67/8
+f 69/5 73/6 74/7 70/8
+f 71/5 68/6 70/7 74/8
+f 72/5 71/6 74/7 73/8
+f 67/5 72/6 73/7 69/8
+f 44/5 43/6 75/7 76/8
+f 39/5 37/6 77/7 43/8
+f 37/5 34/6 78/7 77/8
+f 34/5 33/6 44/7 78/8
+f 75/5 79/6 80/7 76/8
+f 43/5 77/6 79/7 75/8
+f 77/5 78/6 80/7 79/8
+f 78/5 44/6 76/7 80/8
+f 55/5 62/6 49/7 58/8
+f 64/5 56/6 57/7 50/8
+f 56/5 55/6 58/7 57/8
+f 62/5 64/6 50/7 49/8
+f 59/5 53/6 24/7 21/8
+f 63/5 65/6 22/7 23/8
+f 65/5 59/6 21/7 22/8
+f 53/5 63/6 23/7 24/8
+f 60/5 30/6 31/7 54/8
+f 66/5 61/6 32/7 29/8
+f 60/5 66/6 29/7 30/8
+f 61/5 54/6 31/7 32/8
+f 61/5 66/6 25/7 26/8
+f 65/5 63/6 27/7 28/8
+f 66/5 65/6 28/7 25/8
+f 63/5 61/6 26/7 27/8
+f 21/5 17/6 81/7 82/8
+f 18/5 24/6 83/7 84/8
+f 19/5 85/6 86/7 31/8
+f 26/5 32/6 87/7 88/8
+f 23/5 27/6 89/7 90/8
+f 27/5 26/6 88/7 89/8
+f 32/5 31/6 86/7 87/8
+f 24/5 23/6 90/7 83/8
+f 19/5 18/6 84/7 85/8
+f 30/5 91/6 92/7 20/8
+f 29/5 25/6 93/7 94/8
+f 28/5 22/6 95/7 96/8
+f 25/5 28/6 96/7 93/8
+f 30/5 29/6 94/7 91/8
+f 22/5 21/6 82/7 95/8
+f 17/5 20/6 92/7 81/8
+f 82/9 81/10 92/11 91/12 94/13 93/14 96/15 95/16
+f 87/9 86/10 85/11 84/12 83/13 90/14 89/15 88/16
diff --git a/homedecor_modpack/homedecor/models/homedecor_chimney.obj b/homedecor_modpack/homedecor/models/homedecor_chimney.obj
new file mode 100644
index 0000000..a73de3b
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_chimney.obj
@@ -0,0 +1,72 @@
+# Blender v2.73 (sub 0) OBJ File: 'chimney.blend'
+# www.blender.org
+o Cylinder
+v -0.250000 -0.500000 0.250000
+v -0.250000 -0.500000 -0.250000
+v 0.250000 -0.500000 -0.250000
+v 0.250000 -0.500000 0.250000
+v -0.250000 0.500000 0.250000
+v -0.250000 0.500000 -0.250000
+v 0.250000 0.500000 -0.250000
+v 0.250000 0.500000 0.250000
+v -0.187500 -0.500000 0.187500
+v -0.187500 0.500000 0.187500
+v 0.187500 -0.500000 0.187500
+v 0.187500 0.500000 0.187500
+v 0.187500 -0.500000 -0.187500
+v 0.187500 0.500000 -0.187500
+v -0.187500 -0.500000 -0.187500
+v -0.187500 0.500000 -0.187500
+v 0.250000 -0.500000 0.187500
+v 0.250000 0.500000 0.187500
+v 0.250000 -0.500000 -0.187500
+v 0.250000 0.500000 -0.187500
+v -0.250000 -0.500000 0.187500
+v -0.250000 0.500000 0.187500
+v -0.250000 -0.500000 -0.187500
+v -0.250000 0.500000 -0.187500
+vt 0.750000 0.687500
+vt 0.687500 0.687500
+vt 0.687500 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.250000
+vt 0.250000 0.312500
+vt 0.250000 0.250000
+vt 0.750000 0.750000
+vt 0.250000 0.750000
+vt 0.250000 0.687500
+vt 0.312500 0.687500
+vt 0.312500 0.312500
+vt 0.687500 1.000000
+vt 0.187500 1.000000
+vt 0.187500 0.000000
+vt 0.687500 0.000000
+vt 0.750000 0.000000
+vt 0.750000 1.000000
+vt 0.375000 1.000000
+vt 0.375000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+g Cylinder_Cylinder_top-bottom
+s off
+f 20/1/1 14/2/1 12/3/1 18/4/1
+f 8/5/1 18/4/1 22/6/1 5/7/1
+f 20/1/1 7/8/1 6/9/1 24/10/1
+f 16/11/1 24/10/1 22/6/1 10/12/1
+f 23/6/2 15/12/2 9/11/2 21/10/2
+f 13/3/2 19/4/2 17/1/2 11/2/2
+f 17/1/2 4/8/2 1/9/2 21/10/2
+f 3/5/2 19/4/2 23/6/2 2/7/2
+g Cylinder_Cylinder_sides
+f 5/13/3 6/14/3 2/15/3 1/16/3
+f 6/13/4 7/14/4 3/15/4 2/16/4
+f 7/13/5 8/14/5 4/15/5 3/16/5
+f 8/13/6 5/14/6 1/15/6 4/16/6
+f 11/17/3 12/18/3 14/19/3 13/20/3
+f 10/19/5 9/20/5 15/17/5 16/18/5
+f 9/17/4 10/18/4 12/19/4 11/20/4
+f 13/17/6 14/18/6 16/19/6 15/20/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_coatrack.obj b/homedecor_modpack/homedecor/models/homedecor_coatrack.obj
new file mode 100644
index 0000000..9ed5ca6
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_coatrack.obj
@@ -0,0 +1,2235 @@
+# Blender v2.73 (sub 0) OBJ File: 'coatrack.blend'
+# www.blender.org
+o Cylinder
+v 0.197346 -0.065370 -0.000000
+v 0.186382 -0.038307 -0.000000
+v 0.164455 -0.038307 -0.000000
+v 0.153491 -0.065370 -0.000000
+v 0.164455 -0.092433 -0.000000
+v 0.186382 -0.092433 -0.000000
+v 0.170907 -0.065370 -0.098673
+v 0.161412 -0.038307 -0.093191
+v 0.142422 -0.038307 -0.082227
+v 0.132927 -0.065370 -0.076746
+v 0.142422 -0.092433 -0.082227
+v 0.161412 -0.092433 -0.093191
+v 0.098673 -0.065370 -0.170907
+v 0.093191 -0.038307 -0.161412
+v 0.082227 -0.038307 -0.142422
+v 0.076746 -0.065370 -0.132927
+v 0.082227 -0.092433 -0.142422
+v 0.093191 -0.092433 -0.161412
+v 0.000000 -0.065370 -0.197346
+v 0.000000 -0.038307 -0.186382
+v 0.000000 -0.038307 -0.164455
+v 0.000000 -0.065370 -0.153491
+v 0.000000 -0.092433 -0.164455
+v 0.000000 -0.092433 -0.186382
+v -0.098673 -0.065370 -0.170907
+v -0.093191 -0.038307 -0.161412
+v -0.082227 -0.038307 -0.142422
+v -0.076746 -0.065370 -0.132927
+v -0.082227 -0.092433 -0.142422
+v -0.093191 -0.092433 -0.161412
+v -0.170907 -0.065370 -0.098673
+v -0.161412 -0.038307 -0.093191
+v -0.142422 -0.038307 -0.082227
+v -0.132927 -0.065370 -0.076746
+v -0.142422 -0.092433 -0.082227
+v -0.161412 -0.092433 -0.093191
+v -0.197346 -0.065370 -0.000000
+v -0.186382 -0.038307 -0.000000
+v -0.164455 -0.038307 -0.000000
+v -0.153491 -0.065370 -0.000000
+v -0.164455 -0.092433 -0.000000
+v -0.186382 -0.092433 -0.000000
+v -0.170907 -0.065370 0.098673
+v -0.161412 -0.038307 0.093191
+v -0.142422 -0.038307 0.082227
+v -0.132927 -0.065370 0.076746
+v -0.142422 -0.092433 0.082227
+v -0.161412 -0.092433 0.093191
+v -0.098673 -0.065370 0.170907
+v -0.093191 -0.038307 0.161412
+v -0.082227 -0.038307 0.142422
+v -0.076746 -0.065370 0.132927
+v -0.082227 -0.092433 0.142422
+v -0.093191 -0.092433 0.161412
+v 0.000000 -0.065370 0.197346
+v 0.000000 -0.038307 0.186382
+v 0.000000 -0.038307 0.164455
+v 0.000000 -0.065370 0.153491
+v 0.000000 -0.092433 0.164455
+v 0.000000 -0.092433 0.186382
+v 0.098673 -0.065370 0.170907
+v 0.093191 -0.038307 0.161412
+v 0.082227 -0.038307 0.142422
+v 0.076746 -0.065370 0.132927
+v 0.082227 -0.092433 0.142422
+v 0.093191 -0.092433 0.161412
+v 0.170907 -0.065370 0.098673
+v 0.161412 -0.038307 0.093191
+v 0.142422 -0.038307 0.082227
+v 0.132927 -0.065370 0.076746
+v 0.142422 -0.092433 0.082227
+v 0.161412 -0.092433 0.093191
+v 0.000000 -0.375000 -0.027923
+v 0.019744 -0.375000 -0.019744
+v 0.027923 -0.375000 0.000000
+v 0.019744 -0.375000 0.019744
+v -0.000000 -0.375000 0.027923
+v -0.019744 -0.375000 0.019744
+v -0.027923 -0.375000 -0.000000
+v -0.019744 -0.375000 -0.019744
+v 0.000000 -0.500000 -0.318286
+v -0.024182 -0.484907 -0.314672
+v -0.024182 -0.454722 -0.307445
+v 0.000000 -0.439629 -0.303832
+v 0.024182 -0.454722 -0.307445
+v 0.024182 -0.484907 -0.314672
+v -0.000000 -0.500000 -0.188201
+v -0.024182 -0.484907 -0.191814
+v -0.024182 -0.454722 -0.199041
+v -0.000000 -0.439629 -0.202655
+v 0.024182 -0.454722 -0.199041
+v 0.024182 -0.484907 -0.191814
+v -0.000000 -0.427207 -0.075544
+v -0.024182 -0.416158 -0.085416
+v -0.024182 -0.394061 -0.105160
+v -0.000000 -0.383013 -0.115032
+v 0.024182 -0.394061 -0.105160
+v 0.024182 -0.416158 -0.085416
+v -0.000000 -0.301126 -0.010501
+v -0.024182 -0.297082 -0.023987
+v -0.024182 -0.288994 -0.050958
+v -0.000000 -0.284950 -0.064444
+v 0.024182 -0.288994 -0.050958
+v 0.024182 -0.297082 -0.023987
+v -0.000000 -0.155540 -0.010501
+v -0.024182 -0.159584 -0.023987
+v -0.024182 -0.167672 -0.050958
+v -0.000000 -0.171716 -0.064444
+v 0.024182 -0.167672 -0.050958
+v 0.024182 -0.159584 -0.023987
+v -0.000000 -0.029459 -0.075544
+v -0.024182 -0.040508 -0.085416
+v -0.024182 -0.062605 -0.105160
+v -0.000000 -0.073654 -0.115032
+v 0.024182 -0.062605 -0.105160
+v 0.024182 -0.040508 -0.085416
+v 0.000000 0.043334 -0.188201
+v -0.024182 0.028241 -0.191814
+v -0.024182 -0.001944 -0.199041
+v 0.000000 -0.017037 -0.202654
+v 0.024182 -0.001944 -0.199041
+v 0.024182 0.028241 -0.191814
+v 0.000000 -0.463641 -0.323237
+v 0.012091 -0.457376 -0.318828
+v 0.012091 -0.472468 -0.322442
+v 0.000000 -0.480015 -0.324248
+v -0.012091 -0.472468 -0.322442
+v -0.012091 -0.457376 -0.318828
+v 0.000000 -0.449829 -0.317021
+v 0.000000 0.018739 -0.209290
+v 0.000000 0.033133 -0.203178
+v 0.012091 0.025586 -0.204985
+v 0.012091 0.010494 -0.208599
+v 0.000000 0.002948 -0.210405
+v -0.012091 0.010494 -0.208599
+v -0.012091 0.025586 -0.204985
+v 0.000000 0.312500 -0.027923
+v 0.019744 0.312500 -0.019744
+v 0.027923 0.312500 0.000000
+v 0.019744 0.312500 0.019744
+v -0.000000 0.312500 0.027923
+v -0.019744 0.312500 0.019744
+v -0.027923 0.312500 -0.000000
+v -0.019744 0.312500 -0.019744
+v 0.318286 -0.500000 -0.000000
+v 0.314672 -0.484907 -0.024182
+v 0.307445 -0.454722 -0.024182
+v 0.303832 -0.439629 -0.000000
+v 0.307445 -0.454722 0.024182
+v 0.314672 -0.484907 0.024182
+v 0.188201 -0.500000 -0.000000
+v 0.191814 -0.484907 -0.024182
+v 0.199041 -0.454722 -0.024182
+v 0.202655 -0.439629 -0.000000
+v 0.199041 -0.454722 0.024182
+v 0.191814 -0.484907 0.024182
+v 0.075544 -0.427207 -0.000000
+v 0.085416 -0.416158 -0.024182
+v 0.105160 -0.394061 -0.024182
+v 0.115032 -0.383013 -0.000000
+v 0.105160 -0.394061 0.024182
+v 0.085416 -0.416158 0.024182
+v 0.010501 -0.301126 -0.000000
+v 0.023987 -0.297082 -0.024182
+v 0.050958 -0.288994 -0.024182
+v 0.064444 -0.284950 -0.000000
+v 0.050958 -0.288994 0.024182
+v 0.023987 -0.297082 0.024182
+v 0.010501 -0.155540 -0.000000
+v 0.023987 -0.159584 -0.024182
+v 0.050958 -0.167672 -0.024182
+v 0.064444 -0.171716 -0.000000
+v 0.050958 -0.167672 0.024182
+v 0.023987 -0.159584 0.024182
+v 0.075544 -0.029459 -0.000000
+v 0.085416 -0.040508 -0.024182
+v 0.105160 -0.062605 -0.024182
+v 0.115032 -0.073654 -0.000000
+v 0.105160 -0.062605 0.024182
+v 0.085416 -0.040508 0.024182
+v 0.188201 0.043334 -0.000000
+v 0.191814 0.028241 -0.024182
+v 0.199041 -0.001944 -0.024182
+v 0.202654 -0.017037 -0.000000
+v 0.199041 -0.001944 0.024182
+v 0.191814 0.028241 0.024182
+v 0.323237 -0.463641 -0.000000
+v 0.318828 -0.457376 0.012091
+v 0.322442 -0.472468 0.012091
+v 0.324248 -0.480015 -0.000000
+v 0.322442 -0.472468 -0.012091
+v 0.318828 -0.457376 -0.012091
+v 0.317021 -0.449829 -0.000000
+v 0.209290 0.018739 -0.000000
+v 0.203178 0.033133 -0.000000
+v 0.204985 0.025586 0.012091
+v 0.208599 0.010494 0.012091
+v 0.210405 0.002948 -0.000000
+v 0.208599 0.010494 -0.012091
+v 0.204985 0.025586 -0.012091
+v 0.000000 -0.500000 0.318286
+v 0.024182 -0.484907 0.314672
+v 0.024182 -0.454722 0.307445
+v 0.000000 -0.439629 0.303832
+v -0.024182 -0.454722 0.307445
+v -0.024182 -0.484907 0.314672
+v 0.000000 -0.500000 0.188201
+v 0.024182 -0.484907 0.191814
+v 0.024182 -0.454722 0.199041
+v 0.000000 -0.439629 0.202655
+v -0.024182 -0.454722 0.199041
+v -0.024182 -0.484907 0.191814
+v 0.000000 -0.427207 0.075544
+v 0.024182 -0.416158 0.085416
+v 0.024182 -0.394061 0.105160
+v 0.000000 -0.383013 0.115032
+v -0.024182 -0.394061 0.105160
+v -0.024182 -0.416158 0.085416
+v 0.000000 -0.301126 0.010501
+v 0.024182 -0.297082 0.023987
+v 0.024182 -0.288994 0.050958
+v 0.000000 -0.284950 0.064444
+v -0.024182 -0.288994 0.050958
+v -0.024182 -0.297082 0.023987
+v 0.000000 -0.155540 0.010501
+v 0.024182 -0.159584 0.023987
+v 0.024182 -0.167672 0.050958
+v 0.000000 -0.171716 0.064444
+v -0.024182 -0.167672 0.050958
+v -0.024182 -0.159584 0.023987
+v 0.000000 -0.029459 0.075544
+v 0.024182 -0.040508 0.085416
+v 0.024182 -0.062605 0.105160
+v 0.000000 -0.073654 0.115032
+v -0.024182 -0.062605 0.105160
+v -0.024182 -0.040508 0.085416
+v 0.000000 0.043334 0.188201
+v 0.024182 0.028241 0.191814
+v 0.024182 -0.001944 0.199041
+v 0.000000 -0.017037 0.202654
+v -0.024182 -0.001944 0.199041
+v -0.024182 0.028241 0.191814
+v 0.000000 -0.463641 0.323237
+v -0.012091 -0.457376 0.318828
+v -0.012091 -0.472468 0.322442
+v 0.000000 -0.480015 0.324248
+v 0.012091 -0.472468 0.322442
+v 0.012091 -0.457376 0.318828
+v 0.000000 -0.449829 0.317021
+v 0.000000 0.018739 0.209290
+v 0.000000 0.033133 0.203178
+v -0.012091 0.025586 0.204985
+v -0.012091 0.010494 0.208599
+v 0.000000 0.002948 0.210405
+v 0.012091 0.010494 0.208599
+v 0.012091 0.025586 0.204985
+v -0.318286 -0.500000 0.000000
+v -0.314672 -0.484907 0.024182
+v -0.307445 -0.454722 0.024182
+v -0.303832 -0.439629 0.000000
+v -0.307445 -0.454722 -0.024182
+v -0.314672 -0.484907 -0.024182
+v -0.188201 -0.500000 0.000000
+v -0.191814 -0.484907 0.024182
+v -0.199041 -0.454722 0.024182
+v -0.202655 -0.439629 0.000000
+v -0.199041 -0.454722 -0.024182
+v -0.191814 -0.484907 -0.024182
+v -0.075544 -0.427207 0.000000
+v -0.085416 -0.416158 0.024182
+v -0.105160 -0.394061 0.024182
+v -0.115032 -0.383013 0.000000
+v -0.105160 -0.394061 -0.024182
+v -0.085416 -0.416158 -0.024182
+v -0.010501 -0.301126 0.000000
+v -0.023987 -0.297082 0.024182
+v -0.050958 -0.288994 0.024182
+v -0.064444 -0.284950 0.000000
+v -0.050958 -0.288994 -0.024182
+v -0.023987 -0.297082 -0.024182
+v -0.010501 -0.155540 0.000000
+v -0.023987 -0.159584 0.024182
+v -0.050958 -0.167672 0.024182
+v -0.064444 -0.171716 0.000000
+v -0.050958 -0.167672 -0.024182
+v -0.023987 -0.159584 -0.024182
+v -0.075544 -0.029459 0.000000
+v -0.085416 -0.040508 0.024182
+v -0.105160 -0.062605 0.024182
+v -0.115032 -0.073654 0.000000
+v -0.105160 -0.062605 -0.024182
+v -0.085416 -0.040508 -0.024182
+v -0.188201 0.043334 0.000000
+v -0.191814 0.028241 0.024182
+v -0.199041 -0.001944 0.024182
+v -0.202654 -0.017037 0.000000
+v -0.199041 -0.001944 -0.024182
+v -0.191814 0.028241 -0.024182
+v -0.323237 -0.463641 0.000000
+v -0.318828 -0.457376 -0.012091
+v -0.322442 -0.472468 -0.012091
+v -0.324248 -0.480015 0.000000
+v -0.322442 -0.472468 0.012091
+v -0.318828 -0.457376 0.012091
+v -0.317021 -0.449829 0.000000
+v -0.209290 0.018739 0.000000
+v -0.203178 0.033133 0.000000
+v -0.204985 0.025586 -0.012091
+v -0.208599 0.010494 -0.012091
+v -0.210405 0.002948 0.000000
+v -0.208599 0.010494 0.012091
+v -0.204985 0.025586 0.012091
+v 0.000000 1.187500 -0.027923
+v 0.019744 1.187500 -0.019744
+v 0.027923 1.187500 0.000000
+v 0.019744 1.187500 0.019744
+v 0.000000 1.187500 0.027923
+v -0.019744 1.187500 0.019744
+v -0.027923 1.187500 -0.000000
+v -0.019744 1.187500 -0.019744
+v 0.251305 1.086575 0.000000
+v 0.237344 1.113638 0.000000
+v 0.209421 1.113638 0.000000
+v 0.195459 1.086575 0.000000
+v 0.209421 1.059511 0.000000
+v 0.237344 1.059511 0.000000
+v 0.217636 1.086575 -0.125653
+v 0.205546 1.113638 -0.118672
+v 0.181364 1.113638 -0.104710
+v 0.169273 1.086575 -0.097730
+v 0.181364 1.059511 -0.104710
+v 0.205546 1.059511 -0.118672
+v 0.125652 1.086575 -0.217636
+v 0.118672 1.113638 -0.205546
+v 0.104710 1.113638 -0.181364
+v 0.097730 1.086575 -0.169273
+v 0.104710 1.059511 -0.181364
+v 0.118672 1.059511 -0.205546
+v 0.000000 1.086575 -0.251305
+v 0.000000 1.113638 -0.237344
+v 0.000000 1.113638 -0.209421
+v 0.000000 1.086575 -0.195459
+v 0.000000 1.059511 -0.209421
+v 0.000000 1.059511 -0.237344
+v -0.125652 1.086575 -0.217637
+v -0.118672 1.113638 -0.205546
+v -0.104710 1.113638 -0.181364
+v -0.097730 1.086575 -0.169273
+v -0.104710 1.059511 -0.181364
+v -0.118672 1.059511 -0.205546
+v -0.217636 1.086575 -0.125653
+v -0.205546 1.113638 -0.118672
+v -0.181364 1.113638 -0.104710
+v -0.169273 1.086575 -0.097730
+v -0.181364 1.059511 -0.104710
+v -0.205546 1.059511 -0.118672
+v -0.251305 1.086575 -0.000000
+v -0.237344 1.113638 -0.000000
+v -0.209421 1.113638 -0.000000
+v -0.195459 1.086575 -0.000000
+v -0.209421 1.059511 -0.000000
+v -0.237344 1.059511 -0.000000
+v -0.217637 1.086575 0.125652
+v -0.205546 1.113638 0.118672
+v -0.181364 1.113638 0.104710
+v -0.169273 1.086575 0.097730
+v -0.181364 1.059511 0.104710
+v -0.205546 1.059511 0.118672
+v -0.125652 1.086575 0.217637
+v -0.118672 1.113638 0.205546
+v -0.104710 1.113638 0.181364
+v -0.097730 1.086575 0.169273
+v -0.104710 1.059511 0.181364
+v -0.118672 1.059511 0.205546
+v 0.000000 1.086575 0.251305
+v 0.000000 1.113638 0.237344
+v 0.000000 1.113638 0.209421
+v 0.000000 1.086575 0.195459
+v 0.000000 1.059511 0.209421
+v 0.000000 1.059511 0.237344
+v 0.125652 1.086575 0.217636
+v 0.118672 1.113638 0.205546
+v 0.104710 1.113638 0.181364
+v 0.097730 1.086575 0.169273
+v 0.104710 1.059511 0.181364
+v 0.118672 1.059511 0.205546
+v 0.217636 1.086575 0.125653
+v 0.205546 1.113638 0.118672
+v 0.181364 1.113638 0.104710
+v 0.169273 1.086575 0.097730
+v 0.181364 1.059511 0.104710
+v 0.205546 1.059511 0.118672
+v 0.000000 1.057023 -0.115104
+v -0.024182 1.068072 -0.105232
+v -0.024182 1.090169 -0.085487
+v 0.000000 1.101218 -0.075615
+v 0.024182 0.971093 -0.024058
+v 0.024182 0.963004 -0.051030
+v 0.000000 0.958960 -0.064515
+v -0.024182 0.963004 -0.051030
+v -0.024182 0.971093 -0.024058
+v 0.000000 0.975137 -0.010573
+v 0.024182 0.833595 -0.024058
+v 0.024182 0.841683 -0.051030
+v 0.000000 0.845727 -0.064515
+v -0.024182 0.841683 -0.051030
+v -0.024182 0.833595 -0.024058
+v 0.000000 0.829551 -0.010573
+v 0.024182 0.714519 -0.085487
+v 0.024182 0.736616 -0.105232
+v 0.000000 0.747664 -0.115104
+v -0.024182 0.736616 -0.105232
+v -0.024182 0.714519 -0.085487
+v 0.000000 0.703470 -0.075615
+v 0.024182 0.645770 -0.191885
+v 0.024182 0.675955 -0.199112
+v 0.000000 0.691048 -0.202726
+v -0.024182 0.675955 -0.199112
+v -0.024182 0.645770 -0.191885
+v 0.000000 0.630677 -0.188272
+v 0.024182 0.645770 -0.278470
+v 0.024182 0.675955 -0.271243
+v 0.000000 0.691047 -0.267629
+v -0.024182 0.675955 -0.271243
+v -0.024182 0.645770 -0.278470
+v 0.000000 0.630677 -0.282083
+v 0.024182 1.068072 -0.105232
+v 0.024182 1.090169 -0.085487
+v 0.000000 1.174010 -0.188272
+v -0.024182 1.158918 -0.191886
+v -0.024182 1.128733 -0.199112
+v 0.000000 1.113640 -0.202726
+v 0.024182 1.128733 -0.199112
+v 0.024182 1.158918 -0.191886
+v -0.012091 1.336111 -0.471136
+v -0.012091 0.706140 -0.354854
+v -0.012091 0.718542 -0.347077
+v 0.012091 0.718542 -0.347077
+v 0.000000 1.337911 -0.479887
+v 0.000000 0.715618 -0.354731
+v 0.000000 0.679108 -0.357037
+v -0.024182 0.691510 -0.349259
+v -0.024182 0.716314 -0.333704
+v 0.000000 0.728716 -0.325927
+v 0.024182 0.716314 -0.333704
+v 0.024182 0.691510 -0.349259
+v 0.000000 1.113641 -0.322297
+v -0.024182 1.128734 -0.318684
+v -0.024182 1.158919 -0.311457
+v 0.000000 1.174012 -0.307843
+v 0.024182 1.158919 -0.311457
+v 0.024182 1.128734 -0.318684
+v 0.012091 1.332067 -0.484622
+v 0.000000 1.330045 -0.491365
+v 0.012091 0.706140 -0.354854
+v 0.000000 0.699939 -0.358743
+v 0.000000 0.724743 -0.343188
+v -0.012091 1.332067 -0.484622
+v 0.000000 1.338133 -0.464393
+v 0.012091 1.336111 -0.471136
+v 0.000000 1.312515 -0.499997
+v -0.024182 1.316559 -0.486511
+v -0.024182 1.324647 -0.459540
+v 0.000000 1.328691 -0.446054
+v 0.024182 1.324647 -0.459540
+v 0.024182 1.316559 -0.486511
+v 0.000000 1.186434 -0.434954
+v -0.024182 1.197483 -0.425082
+v -0.024182 1.219580 -0.405338
+v 0.000000 1.230628 -0.395466
+v 0.024182 1.219580 -0.405338
+v 0.024182 1.197483 -0.425082
+v 0.115104 1.057023 0.000000
+v 0.105232 1.068072 -0.024182
+v 0.085487 1.090169 -0.024182
+v 0.075615 1.101218 0.000000
+v 0.024058 0.971093 0.024182
+v 0.051030 0.963004 0.024182
+v 0.064515 0.958960 0.000000
+v 0.051030 0.963004 -0.024182
+v 0.024058 0.971093 -0.024182
+v 0.010573 0.975137 0.000000
+v 0.024058 0.833595 0.024182
+v 0.051030 0.841683 0.024182
+v 0.064515 0.845727 0.000000
+v 0.051030 0.841683 -0.024182
+v 0.024058 0.833595 -0.024182
+v 0.010573 0.829551 0.000000
+v 0.085487 0.714519 0.024182
+v 0.105232 0.736616 0.024182
+v 0.115104 0.747664 0.000000
+v 0.105232 0.736616 -0.024182
+v 0.085487 0.714519 -0.024182
+v 0.075615 0.703470 0.000000
+v 0.191885 0.645770 0.024182
+v 0.199112 0.675955 0.024182
+v 0.202726 0.691048 0.000000
+v 0.199112 0.675955 -0.024182
+v 0.191885 0.645770 -0.024182
+v 0.188272 0.630677 0.000000
+v 0.278470 0.645770 0.024182
+v 0.271243 0.675955 0.024182
+v 0.267629 0.691047 0.000000
+v 0.271243 0.675955 -0.024182
+v 0.278470 0.645770 -0.024182
+v 0.282083 0.630677 0.000000
+v 0.105232 1.068072 0.024182
+v 0.085487 1.090169 0.024182
+v 0.188272 1.174010 0.000000
+v 0.191886 1.158918 -0.024182
+v 0.199112 1.128733 -0.024182
+v 0.202726 1.113640 0.000000
+v 0.199112 1.128733 0.024182
+v 0.191886 1.158918 0.024182
+v 0.471136 1.336111 -0.012091
+v 0.354854 0.706140 -0.012091
+v 0.347077 0.718542 -0.012091
+v 0.347077 0.718542 0.012091
+v 0.479887 1.337911 0.000000
+v 0.354731 0.715618 0.000000
+v 0.357037 0.679108 0.000000
+v 0.349259 0.691510 -0.024182
+v 0.333704 0.716314 -0.024182
+v 0.325927 0.728716 0.000000
+v 0.333704 0.716314 0.024182
+v 0.349259 0.691510 0.024182
+v 0.322297 1.113641 0.000000
+v 0.318684 1.128734 -0.024182
+v 0.311457 1.158919 -0.024182
+v 0.307843 1.174012 0.000000
+v 0.311457 1.158919 0.024182
+v 0.318684 1.128734 0.024182
+v 0.484622 1.332067 0.012091
+v 0.491365 1.330045 0.000000
+v 0.354854 0.706140 0.012091
+v 0.358743 0.699939 0.000000
+v 0.343188 0.724743 0.000000
+v 0.484622 1.332067 -0.012091
+v 0.464393 1.338133 0.000000
+v 0.471136 1.336111 0.012091
+v 0.499997 1.312515 0.000000
+v 0.486511 1.316559 -0.024182
+v 0.459540 1.324647 -0.024182
+v 0.446054 1.328691 0.000000
+v 0.459540 1.324647 0.024182
+v 0.486511 1.316559 0.024182
+v 0.434954 1.186434 0.000000
+v 0.425082 1.197483 -0.024182
+v 0.405338 1.219580 -0.024182
+v 0.395465 1.230628 0.000000
+v 0.405338 1.219580 0.024182
+v 0.425082 1.197483 0.024182
+v -0.000000 1.057023 0.115104
+v 0.024182 1.068072 0.105232
+v 0.024182 1.090169 0.085487
+v -0.000000 1.101218 0.075615
+v -0.024182 0.971093 0.024058
+v -0.024182 0.963004 0.051030
+v -0.000000 0.958960 0.064515
+v 0.024182 0.963004 0.051030
+v 0.024182 0.971093 0.024058
+v -0.000000 0.975137 0.010573
+v -0.024182 0.833595 0.024058
+v -0.024182 0.841683 0.051030
+v -0.000000 0.845727 0.064515
+v 0.024182 0.841683 0.051030
+v 0.024182 0.833595 0.024058
+v -0.000000 0.829551 0.010573
+v -0.024182 0.714519 0.085487
+v -0.024182 0.736616 0.105232
+v -0.000000 0.747664 0.115104
+v 0.024182 0.736616 0.105232
+v 0.024182 0.714519 0.085487
+v -0.000000 0.703470 0.075615
+v -0.024182 0.645770 0.191885
+v -0.024182 0.675955 0.199112
+v -0.000000 0.691048 0.202726
+v 0.024182 0.675955 0.199112
+v 0.024182 0.645770 0.191885
+v -0.000000 0.630677 0.188272
+v -0.024182 0.645770 0.278470
+v -0.024182 0.675955 0.271243
+v -0.000000 0.691047 0.267629
+v 0.024182 0.675955 0.271243
+v 0.024182 0.645770 0.278470
+v -0.000000 0.630677 0.282083
+v -0.024182 1.068072 0.105232
+v -0.024182 1.090169 0.085487
+v -0.000000 1.174010 0.188272
+v 0.024182 1.158918 0.191886
+v 0.024182 1.128733 0.199112
+v -0.000000 1.113640 0.202726
+v -0.024182 1.128733 0.199112
+v -0.024182 1.158918 0.191886
+v 0.012091 1.336111 0.471136
+v 0.012091 0.706140 0.354854
+v 0.012091 0.718542 0.347077
+v -0.012091 0.718542 0.347077
+v -0.000000 1.337911 0.479887
+v -0.000000 0.715618 0.354731
+v -0.000000 0.679108 0.357037
+v 0.024182 0.691510 0.349259
+v 0.024182 0.716314 0.333704
+v -0.000000 0.728716 0.325927
+v -0.024182 0.716314 0.333704
+v -0.024182 0.691510 0.349259
+v -0.000000 1.113641 0.322297
+v 0.024182 1.128734 0.318684
+v 0.024182 1.158919 0.311457
+v -0.000000 1.174012 0.307843
+v -0.024182 1.158919 0.311457
+v -0.024182 1.128734 0.318684
+v -0.012091 1.332067 0.484622
+v -0.000000 1.330045 0.491365
+v -0.012091 0.706140 0.354854
+v -0.000000 0.699939 0.358743
+v -0.000000 0.724743 0.343188
+v 0.012091 1.332067 0.484622
+v -0.000000 1.338133 0.464393
+v -0.012091 1.336111 0.471136
+v -0.000000 1.312515 0.499997
+v 0.024182 1.316559 0.486511
+v 0.024182 1.324647 0.459540
+v -0.000000 1.328691 0.446054
+v -0.024182 1.324647 0.459540
+v -0.024182 1.316559 0.486511
+v -0.000000 1.186434 0.434954
+v 0.024182 1.197483 0.425082
+v 0.024182 1.219580 0.405338
+v -0.000000 1.230628 0.395466
+v -0.024182 1.219580 0.405338
+v -0.024182 1.197483 0.425082
+v -0.115104 1.057023 -0.000000
+v -0.105232 1.068072 0.024182
+v -0.085487 1.090169 0.024182
+v -0.075615 1.101218 -0.000000
+v -0.024058 0.971093 -0.024182
+v -0.051030 0.963004 -0.024182
+v -0.064515 0.958960 -0.000000
+v -0.051030 0.963004 0.024182
+v -0.024058 0.971093 0.024182
+v -0.010573 0.975137 -0.000000
+v -0.024058 0.833595 -0.024182
+v -0.051030 0.841683 -0.024182
+v -0.064515 0.845727 -0.000000
+v -0.051030 0.841683 0.024182
+v -0.024058 0.833595 0.024182
+v -0.010573 0.829551 -0.000000
+v -0.085487 0.714519 -0.024182
+v -0.105232 0.736616 -0.024182
+v -0.115104 0.747664 -0.000000
+v -0.105232 0.736616 0.024182
+v -0.085487 0.714519 0.024182
+v -0.075615 0.703470 -0.000000
+v -0.191885 0.645770 -0.024182
+v -0.199112 0.675955 -0.024182
+v -0.202726 0.691048 -0.000000
+v -0.199112 0.675955 0.024182
+v -0.191885 0.645770 0.024182
+v -0.188272 0.630677 -0.000000
+v -0.278470 0.645770 -0.024182
+v -0.271243 0.675955 -0.024182
+v -0.267629 0.691047 0.000000
+v -0.271243 0.675955 0.024182
+v -0.278470 0.645770 0.024182
+v -0.282083 0.630677 0.000000
+v -0.105232 1.068072 -0.024182
+v -0.085487 1.090169 -0.024182
+v -0.188272 1.174010 -0.000000
+v -0.191886 1.158918 0.024182
+v -0.199112 1.128733 0.024182
+v -0.202726 1.113640 -0.000000
+v -0.199112 1.128733 -0.024182
+v -0.191886 1.158918 -0.024182
+v -0.471136 1.336111 0.012091
+v -0.354854 0.706140 0.012091
+v -0.347077 0.718542 0.012091
+v -0.347077 0.718542 -0.012091
+v -0.479887 1.337911 0.000000
+v -0.354731 0.715618 0.000000
+v -0.357037 0.679108 0.000000
+v -0.349259 0.691510 0.024182
+v -0.333704 0.716314 0.024182
+v -0.325927 0.728716 0.000000
+v -0.333704 0.716314 -0.024182
+v -0.349259 0.691510 -0.024182
+v -0.322297 1.113641 0.000000
+v -0.318684 1.128734 0.024182
+v -0.311457 1.158919 0.024182
+v -0.307843 1.174012 0.000000
+v -0.311457 1.158919 -0.024182
+v -0.318684 1.128734 -0.024182
+v -0.484622 1.332067 -0.012091
+v -0.491365 1.330045 0.000000
+v -0.354854 0.706140 -0.012091
+v -0.358743 0.699939 0.000000
+v -0.343188 0.724743 0.000000
+v -0.484622 1.332067 0.012091
+v -0.464393 1.338133 0.000000
+v -0.471136 1.336111 -0.012091
+v -0.499997 1.312515 0.000000
+v -0.486511 1.316559 0.024182
+v -0.459540 1.324647 0.024182
+v -0.446054 1.328691 0.000000
+v -0.459540 1.324647 -0.024182
+v -0.486511 1.316559 -0.024182
+v -0.434954 1.186434 0.000000
+v -0.425082 1.197483 0.024182
+v -0.405338 1.219580 0.024182
+v -0.395466 1.230628 0.000000
+v -0.405338 1.219580 -0.024182
+v -0.425082 1.197483 -0.024182
+vt 0.000000 0.312500
+vt 0.125000 0.312500
+vt 0.125000 0.375000
+vt 0.000000 0.375000
+vt 0.125000 0.437500
+vt 0.000000 0.437500
+vt 0.125000 0.500000
+vt 0.000000 0.500000
+vt 0.125000 0.562500
+vt 0.000000 0.562500
+vt 0.000000 0.187500
+vt 0.125000 0.187500
+vt 0.125000 0.250000
+vt 0.000000 0.250000
+vt 0.250000 0.312500
+vt 0.250000 0.375000
+vt 0.250000 0.437500
+vt 0.250000 0.500000
+vt 0.250000 0.562500
+vt 0.250000 0.187500
+vt 0.250000 0.250000
+vt 0.375000 0.312500
+vt 0.375000 0.375000
+vt 0.375000 0.437500
+vt 0.375000 0.500000
+vt 0.375000 0.562500
+vt 0.375000 0.187500
+vt 0.375000 0.250000
+vt 0.500000 0.312500
+vt 0.500000 0.375000
+vt 0.500000 0.437500
+vt 0.500000 0.500000
+vt 0.500000 0.562500
+vt 0.500000 0.187500
+vt 0.500000 0.250000
+vt 0.625000 0.312500
+vt 0.625000 0.375000
+vt 0.625000 0.437500
+vt 0.625000 0.500000
+vt 0.625000 0.562500
+vt 0.625000 0.187500
+vt 0.625000 0.250000
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.750000 0.437500
+vt 0.750000 0.500000
+vt 0.750000 0.562500
+vt 0.750000 0.187500
+vt 0.750000 0.250000
+vt 0.986889 0.094433
+vt 0.937429 0.124862
+vt 0.937429 0.093306
+vt 0.962159 0.078092
+vt 0.887970 0.094433
+vt 0.912699 0.078092
+vt 0.912699 0.047663
+vt 0.937429 0.062486
+vt 0.937429 0.032448
+vt 0.962159 0.047663
+vt 0.986889 0.033575
+vt 0.937429 0.003146
+vt 0.887970 0.033575
+vt 0.763125 0.030245
+vt 0.812503 -0.000133
+vt 0.812503 0.030755
+vt 0.787814 0.045944
+vt 0.837192 0.045944
+vt 0.812503 0.062448
+vt 0.837192 0.076323
+vt 0.812503 0.091512
+vt 0.787814 0.076323
+vt 0.763125 0.091002
+vt 0.812503 0.121381
+vt 0.861881 0.091002
+vt 0.861881 0.030245
+vt 0.831092 0.250410
+vt 0.856640 0.250410
+vt 0.874705 0.268476
+vt 0.874705 0.294024
+vt 0.856640 0.312089
+vt 0.831092 0.312089
+vt 0.813027 0.294024
+vt 0.813027 0.268476
+vt -0.000000 0.062500
+vt 0.687500 0.062500
+vt 0.687500 0.125000
+vt -0.000000 0.125000
+vt 0.687500 0.187500
+vt -0.000000 0.000000
+vt 0.687500 0.000000
+vt 0.687500 0.437500
+vt 0.687500 0.500000
+vt 0.687500 0.375000
+vt 0.687500 0.312500
+vt 0.687500 0.250000
+vt 0.919140 0.250410
+vt 0.893592 0.250410
+vt 0.875527 0.268476
+vt 0.875527 0.294024
+vt 0.893592 0.312089
+vt 0.919140 0.312089
+vt 0.937205 0.294024
+vt 0.937205 0.268476
+vt 0.500000 0.687500
+vt 0.625000 0.687500
+vt 0.625000 0.750000
+vt 0.500000 0.750000
+vt 0.500000 0.625000
+vt 0.625000 0.625000
+vt 0.500000 0.937500
+vt 0.625000 0.937500
+vt 0.625000 1.000000
+vt 0.500000 1.000000
+vt 0.500000 0.875000
+vt 0.625000 0.875000
+vt 0.500000 0.812500
+vt 0.625000 0.812500
+vt 0.375000 0.687500
+vt 0.375000 0.750000
+vt 0.375000 0.625000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.250000 0.625000
+vt 0.250000 0.937500
+vt 0.250000 1.000000
+vt 0.250000 0.875000
+vt 0.250000 0.812500
+vt 0.125000 0.750000
+vt 0.125000 0.687500
+vt 0.125000 0.625000
+vt 0.125000 0.937500
+vt 0.125000 1.000000
+vt 0.125000 0.875000
+vt 0.125000 0.812500
+vt 0.750000 0.750000
+vt 0.750000 0.812500
+vt 0.750000 0.875000
+vt 0.750000 0.937500
+vt 0.750000 1.000000
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vt 0.875000 0.750000
+vt 0.875000 0.812500
+vt 0.875000 0.875000
+vt 0.875000 0.937500
+vt 0.875000 1.000000
+vt 0.875000 0.625000
+vt 0.875000 0.687500
+vt 1.000000 0.750000
+vt 1.000000 0.687500
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 1.000000 0.625000
+vt 1.000000 0.812500
+vt 0.937357 0.216693
+vt 0.911215 0.201882
+vt 0.937357 0.187441
+vt 1.000000 0.875000
+vt -0.000000 0.750000
+vt -0.000000 0.812500
+vt -0.000000 0.875000
+vt -0.000000 0.937500
+vt -0.000000 1.000000
+vt -0.000000 0.625000
+vt -0.000000 0.687500
+vt 0.963498 0.172259
+vt 0.963498 0.201882
+vt 0.937357 0.157448
+vt 0.911215 0.172259
+vt 0.787655 0.173355
+vt 0.812759 0.158542
+vt 0.812759 0.187452
+vt 0.937357 0.244486
+vt 0.885074 0.214864
+vt 0.989640 0.155619
+vt 0.989640 0.214864
+vt 0.937357 0.125996
+vt 0.885074 0.155619
+vt 0.762551 0.160091
+vt 0.812759 0.130465
+vt 0.812759 0.248970
+vt 0.762551 0.219343
+vt 0.787655 0.202981
+vt 0.812759 0.217794
+vt 0.862966 0.160091
+vt 0.862966 0.219343
+vt 0.837863 0.202981
+vt 0.837863 0.173355
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 0.125000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.062500
+vt 0.125000 0.062500
+vt 0.125000 0.125000
+vt 1.000000 0.125000
+vt 0.187500 0.812500
+vt 0.187500 0.875000
+vt 0.187500 0.937500
+vt 0.187500 1.000000
+vt 0.187500 0.625000
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.312500 0.812500
+vt 0.312500 0.875000
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.312500 0.625000
+vt 0.312500 0.687500
+vt 0.312500 0.750000
+vt 0.437500 0.812500
+vt 0.437500 0.875000
+vt 0.437500 0.937500
+vt 0.437500 1.000000
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 0.437500 0.750000
+vt 0.562500 0.812500
+vt 0.562500 0.875000
+vt 0.562500 0.937500
+vt 0.562500 1.000000
+vt 0.562500 0.625000
+vt 0.562500 0.687500
+vt 0.562500 0.750000
+vt 0.687500 0.812500
+vt 0.687500 0.875000
+vt 0.687500 0.937500
+vt 0.687500 1.000000
+vt 0.687500 0.625000
+vt 0.687500 0.687500
+vt 0.687500 0.750000
+vt 0.062500 0.812500
+vt 0.062500 0.875000
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.062500 0.625000
+vt 0.062500 0.687500
+vt 0.062500 0.750000
+vt 0.187500 0.187500
+vt 0.187500 0.250000
+vt 0.187500 0.312500
+vt 0.187500 0.375000
+vt 0.187500 -0.000000
+vt 0.250000 -0.000000
+vt 0.250000 0.062500
+vt 0.187500 0.062500
+vt 0.250000 0.125000
+vt 0.187500 0.125000
+vt 0.312500 0.187500
+vt 0.312500 0.250000
+vt 0.312500 0.312500
+vt 0.312500 0.375000
+vt 0.312500 -0.000000
+vt 0.312500 0.062500
+vt 0.312500 0.125000
+vt 0.375000 -0.000000
+vt 0.375000 0.062500
+vt 0.375000 0.125000
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.437500 -0.000000
+vt 0.437500 0.062500
+vt 0.437500 0.125000
+vt 0.500000 -0.000000
+vt 0.500000 0.062500
+vt 0.500000 0.125000
+vt 0.562500 0.187500
+vt 0.562500 0.250000
+vt 0.562500 0.312500
+vt 0.562500 0.375000
+vt 0.562500 -0.000000
+vt 0.562500 0.062500
+vt 0.562500 0.125000
+vt 0.625000 -0.000000
+vt 0.625000 0.062500
+vt 0.625000 0.125000
+vt 0.750000 -0.000000
+vt 0.750000 0.062500
+vt 0.750000 0.125000
+vt 0.062500 0.187500
+vt 0.062500 0.250000
+vt 0.062500 0.312500
+vt 0.062500 0.375000
+vt 0.062500 -0.000000
+vt 0.062500 0.062500
+vt 0.062500 0.125000
+vn 0.000000 -0.838200 -0.545300
+vn 0.000000 -0.960400 0.278700
+vn -0.840600 -0.518600 0.156300
+vn -0.792600 -0.390900 -0.467800
+vn -0.913400 0.390800 -0.113400
+vn -0.810600 0.482600 -0.331600
+vn 0.000000 0.957500 -0.288600
+vn 0.000000 0.962000 -0.272900
+vn 0.913400 0.390800 -0.113400
+vn 0.810600 0.482600 -0.331600
+vn 0.840600 -0.518600 0.156300
+vn 0.792600 -0.390900 -0.467800
+vn 0.000000 -0.677700 0.735300
+vn -0.837300 -0.363200 0.408700
+vn -0.906100 0.286800 -0.311100
+vn 0.000000 0.664200 -0.747500
+vn 0.906100 0.286800 -0.311100
+vn 0.837300 -0.363200 0.408700
+vn 0.000000 -0.239400 0.970900
+vn -0.834300 -0.127600 0.536300
+vn -0.899100 0.104800 -0.425000
+vn 0.000000 0.231500 -0.972800
+vn 0.899100 0.104800 -0.425000
+vn 0.834300 -0.127600 0.536300
+vn 0.000000 0.239400 0.970900
+vn -0.834300 0.127600 0.536300
+vn -0.899100 -0.104800 -0.425000
+vn 0.000000 -0.231500 -0.972800
+vn 0.899100 -0.104800 -0.425000
+vn 0.834300 0.127600 0.536300
+vn 0.000000 0.677700 0.735300
+vn -0.837300 0.363200 0.408700
+vn -0.906100 -0.286800 -0.311100
+vn 0.000000 -0.664200 -0.747500
+vn 0.906100 -0.286800 -0.311100
+vn 0.837300 0.363200 0.408700
+vn 0.000000 0.999700 0.024600
+vn -0.820100 0.551700 -0.152100
+vn -0.804300 -0.268200 -0.530100
+vn 0.000000 -0.675400 -0.737400
+vn 0.804300 -0.268200 -0.530100
+vn 0.820100 0.551700 -0.152100
+vn 0.000000 0.675900 -0.737000
+vn -0.414300 0.440300 -0.796500
+vn 0.414300 0.440300 -0.796500
+vn 0.397300 0.030400 -0.917200
+vn 0.000000 0.241400 -0.970400
+vn 0.000000 -0.170500 -0.985400
+vn -0.397300 0.030400 -0.917200
+vn 0.000000 0.697500 -0.716600
+vn -0.441900 0.446700 -0.777900
+vn 0.441900 0.446700 -0.777900
+vn 0.000000 0.234000 -0.972200
+vn 0.429900 0.006200 -0.902900
+vn 0.000000 -0.217400 -0.976100
+vn -0.429900 0.006200 -0.902900
+vn 0.000000 -0.630200 -0.776400
+vn 0.549000 -0.630200 -0.549000
+vn 0.776400 -0.630200 0.000000
+vn 0.549000 -0.630200 0.549000
+vn 0.000000 -0.630200 0.776400
+vn -0.549000 -0.630200 0.549000
+vn -0.776400 -0.630200 0.000000
+vn -0.549000 -0.630200 -0.549000
+vn -1.000000 0.000000 0.000000
+vn -0.707100 0.000000 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn -0.707100 0.000000 0.707100
+vn 0.000000 0.000000 1.000000
+vn 0.707100 0.000000 0.707100
+vn 1.000000 0.000000 0.000000
+vn 0.707100 0.000000 -0.707100
+vn 0.545300 -0.838200 0.000000
+vn -0.278700 -0.960400 0.000000
+vn -0.156300 -0.518600 -0.840600
+vn 0.467800 -0.390900 -0.792600
+vn 0.113400 0.390800 -0.913400
+vn 0.331600 0.482600 -0.810600
+vn 0.288500 0.957500 0.000000
+vn 0.272900 0.962000 0.000000
+vn 0.113400 0.390800 0.913400
+vn 0.331600 0.482600 0.810600
+vn -0.156300 -0.518600 0.840600
+vn 0.467800 -0.390900 0.792600
+vn -0.735300 -0.677700 0.000000
+vn -0.408700 -0.363200 -0.837300
+vn 0.311100 0.286800 -0.906100
+vn 0.747500 0.664200 0.000000
+vn 0.311100 0.286800 0.906100
+vn -0.408700 -0.363200 0.837300
+vn -0.970900 -0.239400 0.000000
+vn -0.536300 -0.127600 -0.834300
+vn 0.425000 0.104800 -0.899100
+vn 0.972800 0.231500 0.000000
+vn 0.425000 0.104800 0.899100
+vn -0.536300 -0.127600 0.834300
+vn -0.970900 0.239400 0.000000
+vn -0.536300 0.127600 -0.834300
+vn 0.425000 -0.104800 -0.899100
+vn 0.972800 -0.231500 0.000000
+vn 0.425000 -0.104800 0.899100
+vn -0.536300 0.127600 0.834300
+vn -0.735300 0.677700 0.000000
+vn -0.408700 0.363200 -0.837300
+vn 0.311100 -0.286800 -0.906100
+vn 0.747500 -0.664200 0.000000
+vn 0.311100 -0.286800 0.906100
+vn -0.408700 0.363200 0.837300
+vn -0.024600 0.999700 0.000000
+vn 0.152100 0.551700 -0.820100
+vn 0.530100 -0.268200 -0.804300
+vn 0.737400 -0.675400 0.000000
+vn 0.530100 -0.268200 0.804300
+vn 0.152100 0.551700 0.820100
+vn 0.737000 0.675900 0.000000
+vn 0.796500 0.440300 -0.414300
+vn 0.796500 0.440300 0.414300
+vn 0.917200 0.030400 0.397300
+vn 0.970400 0.241400 0.000000
+vn 0.985400 -0.170500 0.000000
+vn 0.917200 0.030400 -0.397300
+vn 0.716600 0.697500 0.000000
+vn 0.777900 0.446700 -0.441900
+vn 0.777900 0.446700 0.441900
+vn 0.972200 0.234000 0.000000
+vn 0.902900 0.006200 0.429900
+vn 0.976100 -0.217400 0.000000
+vn 0.902900 0.006200 -0.429900
+vn 0.000000 -0.838200 0.545300
+vn 0.000000 -0.960400 -0.278700
+vn 0.840600 -0.518600 -0.156300
+vn 0.792600 -0.390900 0.467800
+vn 0.913400 0.390800 0.113400
+vn 0.810600 0.482600 0.331600
+vn 0.000000 0.957500 0.288500
+vn 0.000000 0.962000 0.272900
+vn -0.913400 0.390800 0.113400
+vn -0.810600 0.482600 0.331600
+vn -0.840600 -0.518600 -0.156300
+vn -0.792600 -0.390900 0.467800
+vn 0.000000 -0.677700 -0.735300
+vn 0.837300 -0.363200 -0.408700
+vn 0.906100 0.286800 0.311100
+vn 0.000000 0.664200 0.747500
+vn -0.906100 0.286800 0.311100
+vn -0.837300 -0.363200 -0.408700
+vn 0.000000 -0.239400 -0.970900
+vn 0.834300 -0.127600 -0.536300
+vn 0.899100 0.104800 0.425000
+vn 0.000000 0.231500 0.972800
+vn -0.899100 0.104800 0.425000
+vn -0.834300 -0.127600 -0.536300
+vn 0.000000 0.239400 -0.970900
+vn 0.834300 0.127600 -0.536300
+vn 0.899100 -0.104800 0.425000
+vn 0.000000 -0.231500 0.972800
+vn -0.899100 -0.104800 0.425000
+vn -0.834300 0.127600 -0.536300
+vn 0.000000 0.677700 -0.735300
+vn 0.837300 0.363200 -0.408700
+vn 0.906100 -0.286800 0.311100
+vn 0.000000 -0.664200 0.747500
+vn -0.906100 -0.286800 0.311100
+vn -0.837300 0.363200 -0.408700
+vn 0.000000 0.999700 -0.024600
+vn 0.820100 0.551700 0.152100
+vn 0.804300 -0.268200 0.530100
+vn 0.000000 -0.675400 0.737400
+vn -0.804300 -0.268200 0.530100
+vn -0.820100 0.551700 0.152100
+vn 0.000000 0.675900 0.737000
+vn 0.414300 0.440300 0.796500
+vn -0.414300 0.440300 0.796500
+vn -0.397300 0.030400 0.917200
+vn 0.000000 0.241400 0.970400
+vn 0.000000 -0.170500 0.985400
+vn 0.397300 0.030400 0.917200
+vn 0.000000 0.697500 0.716600
+vn 0.441900 0.446700 0.777900
+vn -0.441900 0.446700 0.777900
+vn 0.000000 0.234000 0.972200
+vn -0.429900 0.006200 0.902900
+vn 0.000000 -0.217400 0.976100
+vn 0.429900 0.006200 0.902900
+vn -0.545300 -0.838200 0.000000
+vn 0.278700 -0.960400 0.000000
+vn 0.156300 -0.518600 0.840600
+vn -0.467800 -0.390900 0.792600
+vn -0.113400 0.390800 0.913400
+vn -0.331600 0.482600 0.810600
+vn -0.288600 0.957500 0.000000
+vn -0.272900 0.962000 0.000000
+vn -0.113400 0.390800 -0.913400
+vn -0.331600 0.482600 -0.810600
+vn 0.156300 -0.518600 -0.840600
+vn -0.467800 -0.390900 -0.792600
+vn 0.735300 -0.677700 0.000000
+vn 0.408700 -0.363200 0.837300
+vn -0.311100 0.286800 0.906100
+vn -0.747500 0.664200 0.000000
+vn -0.311100 0.286800 -0.906100
+vn 0.408700 -0.363200 -0.837300
+vn 0.970900 -0.239400 0.000000
+vn 0.536300 -0.127600 0.834300
+vn -0.425000 0.104800 0.899100
+vn -0.972800 0.231500 0.000000
+vn -0.425000 0.104800 -0.899100
+vn 0.536300 -0.127600 -0.834300
+vn 0.970900 0.239400 0.000000
+vn 0.536300 0.127600 0.834300
+vn -0.425000 -0.104800 0.899100
+vn -0.972800 -0.231500 0.000000
+vn -0.425000 -0.104800 -0.899100
+vn 0.536300 0.127600 -0.834300
+vn 0.735300 0.677700 0.000000
+vn 0.408700 0.363200 0.837300
+vn -0.311100 -0.286800 0.906100
+vn -0.747500 -0.664200 0.000000
+vn -0.311100 -0.286800 -0.906100
+vn 0.408700 0.363200 -0.837300
+vn 0.024600 0.999700 0.000000
+vn -0.152100 0.551700 0.820100
+vn -0.530100 -0.268200 0.804300
+vn -0.737400 -0.675400 0.000000
+vn -0.530100 -0.268200 -0.804300
+vn -0.152100 0.551700 -0.820100
+vn -0.737000 0.675900 0.000000
+vn -0.796500 0.440300 0.414300
+vn -0.796500 0.440300 -0.414300
+vn -0.917200 0.030400 -0.397300
+vn -0.970400 0.241400 0.000000
+vn -0.985400 -0.170500 0.000000
+vn -0.917200 0.030400 0.397300
+vn -0.716600 0.697500 0.000000
+vn -0.777900 0.446700 0.441900
+vn -0.777900 0.446700 -0.441900
+vn -0.972200 0.234000 0.000000
+vn -0.902900 0.006200 -0.429900
+vn -0.976100 -0.217400 0.000000
+vn -0.902900 0.006200 0.429900
+vn 0.549000 0.630200 -0.549000
+vn 0.000000 0.630200 -0.776400
+vn -0.549000 0.630200 -0.549000
+vn -0.776400 0.630200 0.000000
+vn -0.549000 0.630200 0.549000
+vn 0.000000 0.630200 0.776400
+vn 0.549000 0.630200 0.549000
+vn 0.776400 0.630200 0.000000
+vn 0.000000 0.957500 0.288600
+vn 0.000000 0.960400 0.278700
+vn -0.840600 0.518600 0.156300
+vn -0.913400 -0.390800 -0.113400
+vn 0.000000 -0.957500 -0.288600
+vn 0.913400 -0.390800 -0.113400
+vn 0.840600 0.518600 0.156300
+vn 0.000000 0.956500 0.291700
+vn 0.492800 0.869700 0.026800
+vn 0.000000 0.952100 -0.305800
+vn 0.000000 -0.560700 -0.828000
+vn -0.800700 -0.183400 -0.570200
+vn -0.817400 0.573400 -0.055700
+vn 0.000000 0.977000 0.213400
+vn 0.817400 0.573400 -0.055700
+vn 0.800700 -0.183400 -0.570200
+vn -0.502500 0.693600 -0.516200
+vn -0.492800 0.869700 0.026800
+vn 0.000000 0.603400 -0.797400
+vn 0.502500 0.693600 -0.516200
+vn 0.472900 0.244800 -0.846400
+vn 0.000000 0.036000 -0.999300
+vn 0.000000 0.547400 -0.836800
+vn 0.000000 0.677500 0.735500
+vn 0.813700 0.494100 0.306200
+vn -0.816600 0.133500 -0.561500
+vn -0.813700 0.494100 0.306200
+vn 0.000000 -0.042800 -0.999100
+vn 0.816600 0.133500 -0.561500
+vn 0.490400 0.685100 -0.538700
+vn 0.000000 0.925600 -0.378400
+vn -0.490400 0.685100 -0.538700
+vn -0.472900 0.244800 -0.846400
+vn 0.288600 0.957500 0.000000
+vn -0.278700 0.960400 0.000000
+vn -0.156300 0.518600 -0.840600
+vn 0.113400 -0.390800 -0.913400
+vn 0.288600 -0.957500 0.000000
+vn 0.113400 -0.390800 0.913400
+vn -0.156300 0.518600 0.840600
+vn -0.291700 0.956500 0.000000
+vn -0.026800 0.869700 0.492800
+vn 0.305800 0.952100 0.000000
+vn 0.828000 -0.560700 0.000000
+vn 0.570200 -0.183400 -0.800700
+vn 0.055700 0.573400 -0.817400
+vn -0.213400 0.977000 0.000000
+vn 0.055700 0.573400 0.817400
+vn 0.570200 -0.183400 0.800700
+vn 0.516200 0.693600 -0.502500
+vn -0.026800 0.869700 -0.492800
+vn 0.797400 0.603400 0.000000
+vn 0.516200 0.693600 0.502500
+vn 0.846400 0.244800 0.472900
+vn 0.999300 0.036000 0.000000
+vn 0.836800 0.547400 0.000000
+vn -0.735500 0.677500 0.000000
+vn -0.306200 0.494100 0.813700
+vn 0.561500 0.133500 -0.816600
+vn -0.306200 0.494100 -0.813700
+vn 0.999100 -0.042800 0.000000
+vn 0.561500 0.133500 0.816600
+vn 0.538700 0.685100 0.490400
+vn 0.378400 0.925600 0.000000
+vn 0.538700 0.685100 -0.490400
+vn 0.846400 0.244800 -0.472900
+vn 0.000000 0.957500 -0.288500
+vn 0.000000 0.960400 -0.278700
+vn 0.840600 0.518600 -0.156300
+vn 0.913400 -0.390800 0.113400
+vn 0.000000 -0.957500 0.288600
+vn -0.913400 -0.390800 0.113400
+vn -0.840600 0.518600 -0.156300
+vn 0.000000 0.956500 -0.291700
+vn -0.492800 0.869700 -0.026800
+vn 0.000000 0.952100 0.305800
+vn 0.000000 -0.560700 0.828000
+vn 0.800700 -0.183400 0.570200
+vn 0.817400 0.573400 0.055700
+vn 0.000000 0.977000 -0.213400
+vn -0.817400 0.573400 0.055700
+vn -0.800700 -0.183400 0.570200
+vn 0.502500 0.693600 0.516200
+vn 0.492800 0.869700 -0.026800
+vn 0.000000 0.603400 0.797400
+vn -0.502500 0.693600 0.516200
+vn -0.472900 0.244800 0.846400
+vn 0.000000 0.036000 0.999300
+vn 0.000000 0.547400 0.836800
+vn 0.000000 0.677500 -0.735500
+vn -0.813700 0.494100 -0.306200
+vn 0.816600 0.133500 0.561500
+vn 0.813700 0.494100 -0.306200
+vn 0.000000 -0.042800 0.999100
+vn -0.816600 0.133500 0.561500
+vn -0.490400 0.685100 0.538700
+vn 0.000000 0.925600 0.378400
+vn 0.490400 0.685100 0.538700
+vn 0.472900 0.244800 0.846400
+vn 0.278700 0.960400 0.000000
+vn 0.156300 0.518600 0.840600
+vn -0.113400 -0.390800 0.913400
+vn -0.288600 -0.957500 0.000000
+vn -0.113400 -0.390800 -0.913400
+vn 0.156300 0.518600 -0.840600
+vn 0.291700 0.956500 0.000000
+vn 0.026800 0.869700 -0.492800
+vn -0.305800 0.952100 0.000000
+vn -0.828000 -0.560700 0.000000
+vn -0.570200 -0.183400 0.800700
+vn -0.055700 0.573400 0.817400
+vn 0.213400 0.977000 0.000000
+vn -0.055700 0.573400 -0.817400
+vn -0.570200 -0.183400 -0.800700
+vn -0.516200 0.693600 0.502500
+vn 0.026800 0.869700 0.492800
+vn -0.797400 0.603400 0.000000
+vn -0.516200 0.693600 -0.502500
+vn -0.846400 0.244800 -0.472900
+vn -0.999300 0.036000 0.000000
+vn -0.836800 0.547400 0.000000
+vn 0.735500 0.677500 0.000000
+vn 0.306200 0.494100 -0.813700
+vn -0.561500 0.133500 0.816600
+vn 0.306200 0.494100 0.813700
+vn -0.999100 -0.042800 0.000000
+vn -0.561500 0.133500 -0.816600
+vn -0.538700 0.685100 -0.490400
+vn -0.378400 0.925600 0.000000
+vn -0.538700 0.685100 0.490400
+vn -0.846400 0.244800 0.472900
+vn 0.866000 0.000000 -0.500000
+vn 0.533800 0.787400 -0.308200
+vn 0.616400 0.787400 0.000000
+vn -0.422700 0.872700 0.244100
+vn -0.488100 0.872700 0.000000
+vn -0.866000 0.000000 0.500000
+vn -0.422700 -0.872700 0.244100
+vn -0.488100 -0.872700 0.000000
+vn 0.533800 -0.787400 -0.308200
+vn 0.616400 -0.787400 0.000000
+vn 0.500000 0.000000 -0.866000
+vn 0.308200 0.787400 -0.533800
+vn -0.244100 0.872700 0.422700
+vn -0.500000 0.000000 0.866000
+vn -0.244100 -0.872700 0.422700
+vn 0.308200 -0.787400 -0.533800
+vn 0.000000 0.787400 -0.616400
+vn 0.000000 0.872700 0.488100
+vn 0.000000 -0.872700 0.488100
+vn 0.000000 -0.787400 -0.616400
+vn -0.500000 0.000000 -0.866000
+vn -0.308200 0.787400 -0.533800
+vn 0.244100 0.872700 0.422700
+vn 0.500000 0.000000 0.866000
+vn 0.244100 -0.872700 0.422700
+vn -0.308200 -0.787400 -0.533800
+vn -0.866000 0.000000 -0.500000
+vn -0.533800 0.787400 -0.308200
+vn 0.422700 0.872700 0.244100
+vn 0.866000 0.000000 0.500000
+vn 0.422700 -0.872700 0.244100
+vn -0.533800 -0.787400 -0.308200
+vn -0.616400 0.787400 0.000000
+vn 0.488100 0.872700 0.000000
+vn 0.488100 -0.872700 0.000000
+vn -0.616400 -0.787400 0.000000
+vn -0.533800 0.787400 0.308200
+vn 0.422700 0.872700 -0.244100
+vn 0.422700 -0.872700 -0.244100
+vn -0.533800 -0.787400 0.308200
+vn -0.308200 0.787400 0.533800
+vn 0.244100 0.872700 -0.422700
+vn 0.244100 -0.872700 -0.422700
+vn -0.308200 -0.787400 0.533800
+vn 0.000000 0.787400 0.616400
+vn 0.000000 0.872700 -0.488100
+vn 0.000000 -0.872700 -0.488100
+vn 0.000000 -0.787400 0.616400
+vn 0.308200 0.787400 0.533800
+vn -0.244100 0.872700 -0.422700
+vn -0.244100 -0.872700 -0.422700
+vn 0.308200 -0.787400 0.533800
+vn 0.533800 0.787400 0.308200
+vn -0.422700 0.872700 -0.244100
+vn -0.422700 -0.872700 -0.244100
+vn 0.533800 -0.787400 0.308200
+vn 0.500500 0.816000 -0.289000
+vn 0.578000 0.816000 0.000000
+vn -0.391000 0.892200 0.225800
+vn -0.451600 0.892200 0.000000
+vn -0.391000 -0.892200 0.225800
+vn -0.451600 -0.892200 0.000000
+vn 0.500500 -0.816000 -0.289000
+vn 0.578000 -0.816000 0.000000
+vn 0.289000 0.816000 -0.500500
+vn -0.225800 0.892200 0.391000
+vn -0.225800 -0.892200 0.391000
+vn 0.289000 -0.816000 -0.500500
+vn 0.000000 0.816000 -0.578000
+vn 0.000000 0.892200 0.451600
+vn 0.000000 -0.892200 0.451600
+vn 0.000000 -0.816000 -0.578000
+vn -0.289000 0.816000 -0.500500
+vn 0.225800 0.892200 0.391000
+vn 0.225800 -0.892200 0.391000
+vn -0.289000 -0.816000 -0.500500
+vn -0.500500 0.816000 -0.289000
+vn 0.391000 0.892200 0.225800
+vn 0.391000 -0.892200 0.225800
+vn -0.500500 -0.816000 -0.289000
+vn -0.578000 0.816000 0.000000
+vn 0.451600 0.892200 0.000000
+vn 0.451600 -0.892200 0.000000
+vn -0.578000 -0.816000 0.000000
+vn -0.500500 0.816000 0.289000
+vn 0.391000 0.892200 -0.225800
+vn 0.391000 -0.892200 -0.225800
+vn -0.500500 -0.816000 0.289000
+vn -0.289000 0.816000 0.500500
+vn 0.225800 0.892200 -0.391000
+vn 0.225800 -0.892200 -0.391000
+vn -0.289000 -0.816000 0.500500
+vn 0.000000 0.816000 0.578000
+vn 0.000000 0.892200 -0.451600
+vn 0.000000 -0.892200 -0.451600
+vn 0.000000 -0.816000 0.578000
+vn 0.289000 0.816000 0.500500
+vn -0.225800 0.892200 -0.391000
+vn -0.225800 -0.892200 -0.391000
+vn 0.289000 -0.816000 0.500500
+vn 0.500500 0.816000 0.289000
+vn -0.391000 0.892200 -0.225800
+vn -0.391000 -0.892200 -0.225800
+vn 0.500500 -0.816000 0.289000
+g Cylinder_Cylinder_light-wood
+s 1
+f 81/1/1 87/2/2 88/3/3 82/4/4
+f 82/4/4 88/3/3 89/5/5 83/6/6
+f 83/6/6 89/5/5 90/7/7 84/8/8
+f 84/8/8 90/7/7 91/9/9 85/10/10
+f 85/11/10 91/12/9 92/13/11 86/14/12
+f 86/14/12 92/13/11 87/2/2 81/1/1
+f 87/2/2 93/15/13 94/16/14 88/3/3
+f 88/3/3 94/16/14 95/17/15 89/5/5
+f 89/5/5 95/17/15 96/18/16 90/7/7
+f 90/7/7 96/18/16 97/19/17 91/9/9
+f 91/12/9 97/20/17 98/21/18 92/13/11
+f 92/13/11 98/21/18 93/15/13 87/2/2
+f 93/15/13 99/22/19 100/23/20 94/16/14
+f 94/16/14 100/23/20 101/24/21 95/17/15
+f 95/17/15 101/24/21 102/25/22 96/18/16
+f 96/18/16 102/25/22 103/26/23 97/19/17
+f 97/20/17 103/27/23 104/28/24 98/21/18
+f 98/21/18 104/28/24 99/22/19 93/15/13
+f 99/22/19 105/29/25 106/30/26 100/23/20
+f 100/23/20 106/30/26 107/31/27 101/24/21
+f 101/24/21 107/31/27 108/32/28 102/25/22
+f 102/25/22 108/32/28 109/33/29 103/26/23
+f 103/27/23 109/34/29 110/35/30 104/28/24
+f 104/28/24 110/35/30 105/29/25 99/22/19
+f 105/29/25 111/36/31 112/37/32 106/30/26
+f 106/30/26 112/37/32 113/38/33 107/31/27
+f 107/31/27 113/38/33 114/39/34 108/32/28
+f 108/32/28 114/39/34 115/40/35 109/33/29
+f 109/34/29 115/41/35 116/42/36 110/35/30
+f 110/35/30 116/42/36 111/36/31 105/29/25
+f 111/36/31 117/43/37 118/44/38 112/37/32
+f 112/37/32 118/44/38 119/45/39 113/38/33
+f 113/38/33 119/45/39 120/46/40 114/39/34
+f 114/39/34 120/46/40 121/47/41 115/40/35
+f 115/41/35 121/48/41 122/49/42 116/42/36
+f 116/42/36 122/49/42 117/43/37 111/36/31
+f 83/50/6 84/51/8 129/52/43 128/53/44
+f 84/51/8 85/54/10 124/55/45 129/52/43
+f 124/55/45 125/56/46 123/57/47
+f 125/56/46 126/58/48 123/57/47
+f 126/58/48 127/59/49 123/57/47
+f 127/59/49 128/53/44 123/57/47
+f 128/53/44 129/52/43 123/57/47
+f 129/52/43 124/55/45 123/57/47
+f 82/60/4 83/50/6 128/53/44 127/59/49
+f 81/61/1 82/60/4 127/59/49 126/58/48
+f 86/62/12 81/61/1 126/58/48 125/56/46
+f 85/54/10 86/62/12 125/56/46 124/55/45
+f 118/63/38 117/64/37 131/65/50 136/66/51
+f 131/65/50 132/67/52 130/68/53
+f 132/67/52 133/69/54 130/68/53
+f 133/69/54 134/70/55 130/68/53
+f 134/70/55 135/71/56 130/68/53
+f 135/71/56 136/66/51 130/68/53
+f 136/66/51 131/65/50 130/68/53
+f 119/72/39 118/63/38 136/66/51 135/71/56
+f 120/73/40 119/72/39 135/71/56 134/70/55
+f 121/74/41 120/73/40 134/70/55 133/69/54
+f 122/75/42 121/74/41 133/69/54 132/67/52
+f 117/64/37 122/75/42 132/67/52 131/65/50
+f 73/76/57 74/77/58 75/78/59 76/79/60 77/80/61 78/81/62 79/82/63 80/83/64
+f 79/84/63 143/85/65 144/86/66 80/87/64
+f 80/87/64 144/86/66 137/88/67 73/11/57
+f 78/89/62 142/90/68 143/85/65 79/84/63
+f 77/6/61 141/91/69 142/92/68 78/8/62
+f 76/4/60 140/93/70 141/91/69 77/6/61
+f 75/1/59 139/94/71 140/93/70 76/4/60
+f 74/14/58 138/95/72 139/94/71 75/1/59
+f 73/11/57 137/88/67 138/95/72 74/14/58
+f 145/1/73 151/2/74 152/3/75 146/4/76
+f 146/4/76 152/3/75 153/5/77 147/6/78
+f 147/6/78 153/5/77 154/7/79 148/8/80
+f 148/8/80 154/7/79 155/9/81 149/10/82
+f 149/11/82 155/12/81 156/13/83 150/14/84
+f 150/14/84 156/13/83 151/2/74 145/1/73
+f 151/2/74 157/15/85 158/16/86 152/3/75
+f 152/3/75 158/16/86 159/17/87 153/5/77
+f 153/5/77 159/17/87 160/18/88 154/7/79
+f 154/7/79 160/18/88 161/19/89 155/9/81
+f 155/12/81 161/20/89 162/21/90 156/13/83
+f 156/13/83 162/21/90 157/15/85 151/2/74
+f 157/15/85 163/22/91 164/23/92 158/16/86
+f 158/16/86 164/23/92 165/24/93 159/17/87
+f 159/17/87 165/24/93 166/25/94 160/18/88
+f 160/18/88 166/25/94 167/26/95 161/19/89
+f 161/20/89 167/27/95 168/28/96 162/21/90
+f 162/21/90 168/28/96 163/22/91 157/15/85
+f 163/22/91 169/29/97 170/30/98 164/23/92
+f 164/23/92 170/30/98 171/31/99 165/24/93
+f 165/24/93 171/31/99 172/32/100 166/25/94
+f 166/25/94 172/32/100 173/33/101 167/26/95
+f 167/27/95 173/34/101 174/35/102 168/28/96
+f 168/28/96 174/35/102 169/29/97 163/22/91
+f 169/29/97 175/36/103 176/37/104 170/30/98
+f 170/30/98 176/37/104 177/38/105 171/31/99
+f 171/31/99 177/38/105 178/39/106 172/32/100
+f 172/32/100 178/39/106 179/40/107 173/33/101
+f 173/34/101 179/41/107 180/42/108 174/35/102
+f 174/35/102 180/42/108 175/36/103 169/29/97
+f 175/36/103 181/43/109 182/44/110 176/37/104
+f 176/37/104 182/44/110 183/45/111 177/38/105
+f 177/38/105 183/45/111 184/46/112 178/39/106
+f 178/39/106 184/46/112 185/47/113 179/40/107
+f 179/41/107 185/48/113 186/49/114 180/42/108
+f 180/42/108 186/49/114 181/43/109 175/36/103
+f 147/50/78 148/51/80 193/52/115 192/53/116
+f 148/51/80 149/54/82 188/55/117 193/52/115
+f 188/55/117 189/56/118 187/57/119
+f 189/56/118 190/58/120 187/57/119
+f 190/58/120 191/59/121 187/57/119
+f 191/59/121 192/53/116 187/57/119
+f 192/53/116 193/52/115 187/57/119
+f 193/52/115 188/55/117 187/57/119
+f 146/60/76 147/50/78 192/53/116 191/59/121
+f 145/61/73 146/60/76 191/59/121 190/58/120
+f 150/62/84 145/61/73 190/58/120 189/56/118
+f 149/54/82 150/62/84 189/56/118 188/55/117
+f 182/63/110 181/64/109 195/65/122 200/66/123
+f 195/65/122 196/67/124 194/68/125
+f 196/67/124 197/69/126 194/68/125
+f 197/69/126 198/70/127 194/68/125
+f 198/70/127 199/71/128 194/68/125
+f 199/71/128 200/66/123 194/68/125
+f 200/66/123 195/65/122 194/68/125
+f 183/72/111 182/63/110 200/66/123 199/71/128
+f 184/73/112 183/72/111 199/71/128 198/70/127
+f 185/74/113 184/73/112 198/70/127 197/69/126
+f 186/75/114 185/74/113 197/69/126 196/67/124
+f 181/64/109 186/75/114 196/67/124 195/65/122
+f 201/1/129 207/2/130 208/3/131 202/4/132
+f 202/4/132 208/3/131 209/5/133 203/6/134
+f 203/6/134 209/5/133 210/7/135 204/8/136
+f 204/8/136 210/7/135 211/9/137 205/10/138
+f 205/11/138 211/12/137 212/13/139 206/14/140
+f 206/14/140 212/13/139 207/2/130 201/1/129
+f 207/2/130 213/15/141 214/16/142 208/3/131
+f 208/3/131 214/16/142 215/17/143 209/5/133
+f 209/5/133 215/17/143 216/18/144 210/7/135
+f 210/7/135 216/18/144 217/19/145 211/9/137
+f 211/12/137 217/20/145 218/21/146 212/13/139
+f 212/13/139 218/21/146 213/15/141 207/2/130
+f 213/15/141 219/22/147 220/23/148 214/16/142
+f 214/16/142 220/23/148 221/24/149 215/17/143
+f 215/17/143 221/24/149 222/25/150 216/18/144
+f 216/18/144 222/25/150 223/26/151 217/19/145
+f 217/20/145 223/27/151 224/28/152 218/21/146
+f 218/21/146 224/28/152 219/22/147 213/15/141
+f 219/22/147 225/29/153 226/30/154 220/23/148
+f 220/23/148 226/30/154 227/31/155 221/24/149
+f 221/24/149 227/31/155 228/32/156 222/25/150
+f 222/25/150 228/32/156 229/33/157 223/26/151
+f 223/27/151 229/34/157 230/35/158 224/28/152
+f 224/28/152 230/35/158 225/29/153 219/22/147
+f 225/29/153 231/36/159 232/37/160 226/30/154
+f 226/30/154 232/37/160 233/38/161 227/31/155
+f 227/31/155 233/38/161 234/39/162 228/32/156
+f 228/32/156 234/39/162 235/40/163 229/33/157
+f 229/34/157 235/41/163 236/42/164 230/35/158
+f 230/35/158 236/42/164 231/36/159 225/29/153
+f 231/36/159 237/43/165 238/44/166 232/37/160
+f 232/37/160 238/44/166 239/45/167 233/38/161
+f 233/38/161 239/45/167 240/46/168 234/39/162
+f 234/39/162 240/46/168 241/47/169 235/40/163
+f 235/41/163 241/48/169 242/49/170 236/42/164
+f 236/42/164 242/49/170 237/43/165 231/36/159
+f 203/50/134 204/51/136 249/52/171 248/53/172
+f 204/51/136 205/54/138 244/55/173 249/52/171
+f 244/55/173 245/56/174 243/57/175
+f 245/56/174 246/58/176 243/57/175
+f 246/58/176 247/59/177 243/57/175
+f 247/59/177 248/53/172 243/57/175
+f 248/53/172 249/52/171 243/57/175
+f 249/52/171 244/55/173 243/57/175
+f 202/60/132 203/50/134 248/53/172 247/59/177
+f 201/61/129 202/60/132 247/59/177 246/58/176
+f 206/62/140 201/61/129 246/58/176 245/56/174
+f 205/54/138 206/62/140 245/56/174 244/55/173
+f 238/63/166 237/64/165 251/65/178 256/66/179
+f 251/65/178 252/67/180 250/68/181
+f 252/67/180 253/69/182 250/68/181
+f 253/69/182 254/70/183 250/68/181
+f 254/70/183 255/71/184 250/68/181
+f 255/71/184 256/66/179 250/68/181
+f 256/66/179 251/65/178 250/68/181
+f 239/72/167 238/63/166 256/66/179 255/71/184
+f 240/73/168 239/72/167 255/71/184 254/70/183
+f 241/74/169 240/73/168 254/70/183 253/69/182
+f 242/75/170 241/74/169 253/69/182 252/67/180
+f 237/64/165 242/75/170 252/67/180 251/65/178
+f 257/1/185 263/2/186 264/3/187 258/4/188
+f 258/4/188 264/3/187 265/5/189 259/6/190
+f 259/6/190 265/5/189 266/7/191 260/8/192
+f 260/8/192 266/7/191 267/9/193 261/10/194
+f 261/11/194 267/12/193 268/13/195 262/14/196
+f 262/14/196 268/13/195 263/2/186 257/1/185
+f 263/2/186 269/15/197 270/16/198 264/3/187
+f 264/3/187 270/16/198 271/17/199 265/5/189
+f 265/5/189 271/17/199 272/18/200 266/7/191
+f 266/7/191 272/18/200 273/19/201 267/9/193
+f 267/12/193 273/20/201 274/21/202 268/13/195
+f 268/13/195 274/21/202 269/15/197 263/2/186
+f 269/15/197 275/22/203 276/23/204 270/16/198
+f 270/16/198 276/23/204 277/24/205 271/17/199
+f 271/17/199 277/24/205 278/25/206 272/18/200
+f 272/18/200 278/25/206 279/26/207 273/19/201
+f 273/20/201 279/27/207 280/28/208 274/21/202
+f 274/21/202 280/28/208 275/22/203 269/15/197
+f 275/22/203 281/29/209 282/30/210 276/23/204
+f 276/23/204 282/30/210 283/31/211 277/24/205
+f 277/24/205 283/31/211 284/32/212 278/25/206
+f 278/25/206 284/32/212 285/33/213 279/26/207
+f 279/27/207 285/34/213 286/35/214 280/28/208
+f 280/28/208 286/35/214 281/29/209 275/22/203
+f 281/29/209 287/36/215 288/37/216 282/30/210
+f 282/30/210 288/37/216 289/38/217 283/31/211
+f 283/31/211 289/38/217 290/39/218 284/32/212
+f 284/32/212 290/39/218 291/40/219 285/33/213
+f 285/34/213 291/41/219 292/42/220 286/35/214
+f 286/35/214 292/42/220 287/36/215 281/29/209
+f 287/36/215 293/43/221 294/44/222 288/37/216
+f 288/37/216 294/44/222 295/45/223 289/38/217
+f 289/38/217 295/45/223 296/46/224 290/39/218
+f 290/39/218 296/46/224 297/47/225 291/40/219
+f 291/41/219 297/48/225 298/49/226 292/42/220
+f 292/42/220 298/49/226 293/43/221 287/36/215
+f 259/50/190 260/51/192 305/52/227 304/53/228
+f 260/51/192 261/54/194 300/55/229 305/52/227
+f 300/55/229 301/56/230 299/57/231
+f 301/56/230 302/58/232 299/57/231
+f 302/58/232 303/59/233 299/57/231
+f 303/59/233 304/53/228 299/57/231
+f 304/53/228 305/52/227 299/57/231
+f 305/52/227 300/55/229 299/57/231
+f 258/60/188 259/50/190 304/53/228 303/59/233
+f 257/61/185 258/60/188 303/59/233 302/58/232
+f 262/62/196 257/61/185 302/58/232 301/56/230
+f 261/54/194 262/62/196 301/56/230 300/55/229
+f 294/63/222 293/64/221 307/65/234 312/66/235
+f 307/65/234 308/67/236 306/68/237
+f 308/67/236 309/69/238 306/68/237
+f 309/69/238 310/70/239 306/68/237
+f 310/70/239 311/71/240 306/68/237
+f 311/71/240 312/66/235 306/68/237
+f 312/66/235 307/65/234 306/68/237
+f 295/72/223 294/63/222 312/66/235 311/71/240
+f 296/73/224 295/72/223 311/71/240 310/70/239
+f 297/74/225 296/73/224 310/70/239 309/69/238
+f 298/75/226 297/74/225 309/69/238 308/67/236
+f 293/64/221 298/75/226 308/67/236 307/65/234
+f 314/96/241 313/97/242 320/98/243 319/99/244 318/100/245 317/101/246 316/102/247 315/103/248
+f 403/104/24 397/105/30 402/106/25 408/107/19
+f 404/108/23 398/109/29 397/105/30 403/104/24
+f 405/110/22 399/111/28 398/112/29 404/113/23
+f 406/114/21 400/115/27 399/111/28 405/110/22
+f 407/116/20 401/117/26 400/115/27 406/114/21
+f 408/107/19 402/106/25 401/117/26 407/116/20
+f 409/118/18 403/104/24 408/107/19 414/119/13
+f 410/120/17 404/108/23 403/104/24 409/118/18
+f 411/121/16 405/110/22 404/113/23 410/122/17
+f 412/123/15 406/114/21 405/110/22 411/121/16
+f 413/124/14 407/116/20 406/114/21 412/123/15
+f 414/119/13 408/107/19 407/116/20 413/124/14
+f 415/125/11 409/118/18 414/119/13 420/126/2
+f 416/127/9 410/120/17 409/118/18 415/125/11
+f 417/128/7 411/121/16 410/122/17 416/129/9
+f 418/130/5 412/123/15 411/121/16 417/128/7
+f 419/131/3 413/124/14 412/123/15 418/130/5
+f 420/126/2 414/119/13 413/124/14 419/131/3
+f 426/132/130 421/133/131 415/125/11 420/126/2
+f 422/134/133 416/127/9 415/125/11 421/133/131
+f 423/135/249 417/128/7 416/129/9 422/136/133
+f 424/137/137 418/130/5 417/128/7 423/135/249
+f 425/138/139 419/131/3 418/130/5 424/137/137
+f 426/132/130 420/126/2 419/131/3 425/138/139
+f 402/106/25 396/139/31 395/140/32 401/117/26
+f 401/117/26 395/140/32 394/141/33 400/115/27
+f 400/115/27 394/141/33 393/142/34 399/111/28
+f 399/111/28 393/142/34 427/143/35 398/112/29
+f 398/109/29 427/144/35 428/145/36 397/105/30
+f 397/105/30 428/145/36 396/139/31 402/106/25
+f 396/139/31 429/146/250 430/147/251 395/140/32
+f 395/140/32 430/147/251 431/148/252 394/141/33
+f 394/141/33 431/148/252 432/149/253 393/142/34
+f 393/142/34 432/149/253 433/150/254 427/143/35
+f 427/144/35 433/151/254 434/152/255 428/145/36
+f 428/145/36 434/152/255 429/146/250 396/139/31
+f 450/153/249 429/146/250 434/152/255 451/154/133
+f 447/155/130 452/156/131 433/150/254 432/149/253
+f 451/154/133 434/152/255 433/151/254 452/157/131
+f 449/158/137 430/147/251 429/146/250 450/153/249
+f 459/159/256 460/160/257 439/161/258
+f 447/155/130 432/149/253 431/148/252 448/162/139
+f 441/163/259 426/132/130 425/138/139 442/164/260
+f 442/164/260 425/138/139 424/137/137 443/165/261
+f 443/165/261 424/137/137 423/135/249 444/166/262
+f 444/166/262 423/135/249 422/136/133 445/167/263
+f 445/168/263 422/134/133 421/133/131 446/169/264
+f 446/169/264 421/133/131 426/132/130 441/163/259
+f 458/170/265 435/171/266 439/161/258
+f 454/172/267 458/170/265 439/161/258
+f 453/173/268 454/172/267 439/161/258
+f 460/160/257 453/173/268 439/161/258
+f 455/174/269 456/175/270 440/176/271
+f 448/162/139 431/148/252 430/147/251 449/158/137
+f 464/177/272 465/178/273 460/160/257 459/159/256
+f 462/179/274 463/180/275 435/171/266 458/170/265
+f 461/181/276 462/179/274 458/170/265 454/172/267
+f 466/182/277 461/181/276 454/172/267 453/173/268
+f 465/178/273 466/182/277 453/173/268 460/160/257
+f 446/183/264 441/184/259 456/175/270 455/174/269
+f 463/180/275 464/177/272 459/159/256 435/171/266
+f 444/185/262 445/186/263 438/187/278 457/188/279
+f 442/189/260 443/190/261 437/191/280 436/192/281
+f 443/190/261 444/185/262 457/188/279 437/191/280
+f 445/186/263 446/183/264 455/174/269 438/187/278
+f 435/171/266 459/159/256 439/161/258
+f 457/188/279 438/187/278 440/176/271
+f 441/184/259 442/189/260 436/192/281 456/175/270
+f 436/192/281 437/191/280 440/176/271
+f 437/191/280 457/188/279 440/176/271
+f 438/187/278 455/174/269 440/176/271
+f 456/175/270 436/192/281 440/176/271
+f 461/128/276 467/135/141 468/137/146 462/130/274
+f 462/130/274 468/137/146 469/138/145 463/131/275
+f 463/131/275 469/138/145 470/132/144 464/126/272
+f 464/126/272 470/132/144 471/133/143 465/125/273
+f 465/125/273 471/133/143 472/134/142 466/127/277
+f 466/129/277 472/136/142 467/135/141 461/128/276
+f 467/135/141 447/166/130 448/165/139 468/137/146
+f 468/137/146 448/165/139 449/164/137 469/138/145
+f 469/138/145 449/164/137 450/163/249 470/132/144
+f 470/132/144 450/163/249 451/169/133 471/133/143
+f 471/133/143 451/169/133 452/168/131 472/134/142
+f 472/136/142 452/167/131 447/166/130 467/135/141
+f 483/104/96 477/105/102 482/106/97 488/107/91
+f 484/108/95 478/109/101 477/105/102 483/104/96
+f 485/110/94 479/111/100 478/112/101 484/113/95
+f 486/114/93 480/115/99 479/111/100 485/110/94
+f 487/116/92 481/117/98 480/115/99 486/114/93
+f 488/107/91 482/106/97 481/117/98 487/116/92
+f 489/118/90 483/104/96 488/107/91 494/119/85
+f 490/120/89 484/108/95 483/104/96 489/118/90
+f 491/121/88 485/110/94 484/113/95 490/122/89
+f 492/123/87 486/114/93 485/110/94 491/121/88
+f 493/124/86 487/116/92 486/114/93 492/123/87
+f 494/119/85 488/107/91 487/116/92 493/124/86
+f 495/125/83 489/118/90 494/119/85 500/126/74
+f 496/127/81 490/120/89 489/118/90 495/125/83
+f 497/128/282 491/121/88 490/122/89 496/129/81
+f 498/130/77 492/123/87 491/121/88 497/128/282
+f 499/131/75 493/124/86 492/123/87 498/130/77
+f 500/126/74 494/119/85 493/124/86 499/131/75
+f 506/132/186 501/133/187 495/125/83 500/126/74
+f 502/134/189 496/127/81 495/125/83 501/133/187
+f 503/135/191 497/128/282 496/129/81 502/136/189
+f 504/137/193 498/130/77 497/128/282 503/135/191
+f 505/138/195 499/131/75 498/130/77 504/137/193
+f 506/132/186 500/126/74 499/131/75 505/138/195
+f 482/106/97 476/139/103 475/140/104 481/117/98
+f 481/117/98 475/140/104 474/141/105 480/115/99
+f 480/115/99 474/141/105 473/142/106 479/111/100
+f 479/111/100 473/142/106 507/143/107 478/112/101
+f 478/109/101 507/144/107 508/145/108 477/105/102
+f 477/105/102 508/145/108 476/139/103 482/106/97
+f 476/139/103 509/146/283 510/147/284 475/140/104
+f 475/140/104 510/147/284 511/148/285 474/141/105
+f 474/141/105 511/148/285 512/149/286 473/142/106
+f 473/142/106 512/149/286 513/150/287 507/143/107
+f 507/144/107 513/151/287 514/152/288 508/145/108
+f 508/145/108 514/152/288 509/146/283 476/139/103
+f 530/153/191 509/146/283 514/152/288 531/154/189
+f 527/155/186 532/156/187 513/150/287 512/149/286
+f 531/154/189 514/152/288 513/151/287 532/157/187
+f 529/158/193 510/147/284 509/146/283 530/153/191
+f 539/159/289 540/160/290 519/161/291
+f 527/155/186 512/149/286 511/148/285 528/162/195
+f 521/163/292 506/132/186 505/138/195 522/164/293
+f 522/164/293 505/138/195 504/137/193 523/165/294
+f 523/165/294 504/137/193 503/135/191 524/166/295
+f 524/166/295 503/135/191 502/136/189 525/167/296
+f 525/168/296 502/134/189 501/133/187 526/169/297
+f 526/169/297 501/133/187 506/132/186 521/163/292
+f 538/170/298 515/171/299 519/161/291
+f 534/172/300 538/170/298 519/161/291
+f 533/173/301 534/172/300 519/161/291
+f 540/160/290 533/173/301 519/161/291
+f 535/174/302 536/175/303 520/176/304
+f 528/162/195 511/148/285 510/147/284 529/158/193
+f 544/177/305 545/178/306 540/160/290 539/159/289
+f 542/179/307 543/180/308 515/171/299 538/170/298
+f 541/181/309 542/179/307 538/170/298 534/172/300
+f 546/182/310 541/181/309 534/172/300 533/173/301
+f 545/178/306 546/182/310 533/173/301 540/160/290
+f 526/183/297 521/184/292 536/175/303 535/174/302
+f 543/180/308 544/177/305 539/159/289 515/171/299
+f 524/185/295 525/186/296 518/187/311 537/188/312
+f 522/189/293 523/190/294 517/191/313 516/192/314
+f 523/190/294 524/185/295 537/188/312 517/191/313
+f 525/186/296 526/183/297 535/174/302 518/187/311
+f 515/171/299 539/159/289 519/161/291
+f 537/188/312 518/187/311 520/176/304
+f 521/184/292 522/189/293 516/192/314 536/175/303
+f 516/192/314 517/191/313 520/176/304
+f 517/191/313 537/188/312 520/176/304
+f 518/187/311 535/174/302 520/176/304
+f 536/175/303 516/192/314 520/176/304
+f 541/128/309 547/135/197 548/137/202 542/130/307
+f 542/130/307 548/137/202 549/138/201 543/131/308
+f 543/131/308 549/138/201 550/132/200 544/126/305
+f 544/126/305 550/132/200 551/133/199 545/125/306
+f 545/125/306 551/133/199 552/134/198 546/127/310
+f 546/129/310 552/136/198 547/135/197 541/128/309
+f 547/135/197 527/166/186 528/165/195 548/137/202
+f 548/137/202 528/165/195 529/164/193 549/138/201
+f 549/138/201 529/164/193 530/163/191 550/132/200
+f 550/132/200 530/163/191 531/169/189 551/133/199
+f 551/133/199 531/169/189 532/168/187 552/134/198
+f 552/136/198 532/167/187 527/166/186 547/135/197
+f 563/104/152 557/105/158 562/106/153 568/107/147
+f 564/108/151 558/109/157 557/105/158 563/104/152
+f 565/110/150 559/111/156 558/112/157 564/113/151
+f 566/114/149 560/115/155 559/111/156 565/110/150
+f 567/116/148 561/117/154 560/115/155 566/114/149
+f 568/107/147 562/106/153 561/117/154 567/116/148
+f 569/118/146 563/104/152 568/107/147 574/119/141
+f 570/120/145 564/108/151 563/104/152 569/118/146
+f 571/121/144 565/110/150 564/113/151 570/122/145
+f 572/123/143 566/114/149 565/110/150 571/121/144
+f 573/124/142 567/116/148 566/114/149 572/123/143
+f 574/119/141 568/107/147 567/116/148 573/124/142
+f 575/125/139 569/118/146 574/119/141 580/126/130
+f 576/127/137 570/120/145 569/118/146 575/125/139
+f 577/128/249 571/121/144 570/122/145 576/129/137
+f 578/130/133 572/123/143 571/121/144 577/128/249
+f 579/131/131 573/124/142 572/123/143 578/130/133
+f 580/126/130 574/119/141 573/124/142 579/131/131
+f 586/132/2 581/133/3 575/125/139 580/126/130
+f 582/134/5 576/127/137 575/125/139 581/133/3
+f 583/135/315 577/128/249 576/129/137 582/136/5
+f 584/137/9 578/130/133 577/128/249 583/135/315
+f 585/138/11 579/131/131 578/130/133 584/137/9
+f 586/132/2 580/126/130 579/131/131 585/138/11
+f 562/106/153 556/139/159 555/140/160 561/117/154
+f 561/117/154 555/140/160 554/141/161 560/115/155
+f 560/115/155 554/141/161 553/142/162 559/111/156
+f 559/111/156 553/142/162 587/143/163 558/112/157
+f 558/109/157 587/144/163 588/145/164 557/105/158
+f 557/105/158 588/145/164 556/139/159 562/106/153
+f 556/139/159 589/146/316 590/147/317 555/140/160
+f 555/140/160 590/147/317 591/148/318 554/141/161
+f 554/141/161 591/148/318 592/149/319 553/142/162
+f 553/142/162 592/149/319 593/150/320 587/143/163
+f 587/144/163 593/151/320 594/152/321 588/145/164
+f 588/145/164 594/152/321 589/146/316 556/139/159
+f 610/153/7 589/146/316 594/152/321 611/154/5
+f 607/155/2 612/156/3 593/150/320 592/149/319
+f 611/154/5 594/152/321 593/151/320 612/157/3
+f 609/158/9 590/147/317 589/146/316 610/153/7
+f 619/159/322 620/160/323 599/161/324
+f 607/155/2 592/149/319 591/148/318 608/162/11
+f 601/163/325 586/132/2 585/138/11 602/164/326
+f 602/164/326 585/138/11 584/137/9 603/165/327
+f 603/165/327 584/137/9 583/135/315 604/166/328
+f 604/166/328 583/135/315 582/136/5 605/167/329
+f 605/168/329 582/134/5 581/133/3 606/169/330
+f 606/169/330 581/133/3 586/132/2 601/163/325
+f 618/170/331 595/171/332 599/161/324
+f 614/172/333 618/170/331 599/161/324
+f 613/173/334 614/172/333 599/161/324
+f 620/160/323 613/173/334 599/161/324
+f 615/174/335 616/175/336 600/176/337
+f 608/162/11 591/148/318 590/147/317 609/158/9
+f 624/177/338 625/178/339 620/160/323 619/159/322
+f 622/179/340 623/180/341 595/171/332 618/170/331
+f 621/181/342 622/179/340 618/170/331 614/172/333
+f 626/182/343 621/181/342 614/172/333 613/173/334
+f 625/178/339 626/182/343 613/173/334 620/160/323
+f 606/183/330 601/184/325 616/175/336 615/174/335
+f 623/180/341 624/177/338 619/159/322 595/171/332
+f 604/185/328 605/186/329 598/187/344 617/188/345
+f 602/189/326 603/190/327 597/191/346 596/192/347
+f 603/190/327 604/185/328 617/188/345 597/191/346
+f 605/186/329 606/183/330 615/174/335 598/187/344
+f 595/171/332 619/159/322 599/161/324
+f 617/188/345 598/187/344 600/176/337
+f 601/184/325 602/189/326 596/192/347 616/175/336
+f 596/192/347 597/191/346 600/176/337
+f 597/191/346 617/188/345 600/176/337
+f 598/187/344 615/174/335 600/176/337
+f 616/175/336 596/192/347 600/176/337
+f 621/128/342 627/135/13 628/137/18 622/130/340
+f 622/130/340 628/137/18 629/138/17 623/131/341
+f 623/131/341 629/138/17 630/132/16 624/126/338
+f 624/126/338 630/132/16 631/133/15 625/125/339
+f 625/125/339 631/133/15 632/134/14 626/127/343
+f 626/129/343 632/136/14 627/135/13 621/128/342
+f 627/135/13 607/166/2 608/165/11 628/137/18
+f 628/137/18 608/165/11 609/164/9 629/138/17
+f 629/138/17 609/164/9 610/163/7 630/132/16
+f 630/132/16 610/163/7 611/169/5 631/133/15
+f 631/133/15 611/169/5 612/168/3 632/134/14
+f 632/136/14 612/167/3 607/166/2 627/135/13
+f 643/104/208 637/105/214 642/106/209 648/107/203
+f 644/108/207 638/109/213 637/105/214 643/104/208
+f 645/110/206 639/111/212 638/112/213 644/113/207
+f 646/114/205 640/115/211 639/111/212 645/110/206
+f 647/116/204 641/117/210 640/115/211 646/114/205
+f 648/107/203 642/106/209 641/117/210 647/116/204
+f 649/118/202 643/104/208 648/107/203 654/119/197
+f 650/120/201 644/108/207 643/104/208 649/118/202
+f 651/121/200 645/110/206 644/113/207 650/122/201
+f 652/123/199 646/114/205 645/110/206 651/121/200
+f 653/124/198 647/116/204 646/114/205 652/123/199
+f 654/119/197 648/107/203 647/116/204 653/124/198
+f 655/125/195 649/118/202 654/119/197 660/126/186
+f 656/127/193 650/120/201 649/118/202 655/125/195
+f 657/128/191 651/121/200 650/122/201 656/129/193
+f 658/130/189 652/123/199 651/121/200 657/128/191
+f 659/131/187 653/124/198 652/123/199 658/130/189
+f 660/126/186 654/119/197 653/124/198 659/131/187
+f 666/132/74 661/133/75 655/125/195 660/126/186
+f 662/134/77 656/127/193 655/125/195 661/133/75
+f 663/135/282 657/128/191 656/129/193 662/136/77
+f 664/137/81 658/130/189 657/128/191 663/135/282
+f 665/138/83 659/131/187 658/130/189 664/137/81
+f 666/132/74 660/126/186 659/131/187 665/138/83
+f 642/106/209 636/139/215 635/140/216 641/117/210
+f 641/117/210 635/140/216 634/141/217 640/115/211
+f 640/115/211 634/141/217 633/142/218 639/111/212
+f 639/111/212 633/142/218 667/143/219 638/112/213
+f 638/109/213 667/144/219 668/145/220 637/105/214
+f 637/105/214 668/145/220 636/139/215 642/106/209
+f 636/139/215 669/146/348 670/147/349 635/140/216
+f 635/140/216 670/147/349 671/148/350 634/141/217
+f 634/141/217 671/148/350 672/149/351 633/142/218
+f 633/142/218 672/149/351 673/150/352 667/143/219
+f 667/144/219 673/151/352 674/152/353 668/145/220
+f 668/145/220 674/152/353 669/146/348 636/139/215
+f 690/153/282 669/146/348 674/152/353 691/154/77
+f 687/155/74 692/156/75 673/150/352 672/149/351
+f 691/154/77 674/152/353 673/151/352 692/157/75
+f 689/158/81 670/147/349 669/146/348 690/153/282
+f 699/159/354 700/160/355 679/161/356
+f 687/155/74 672/149/351 671/148/350 688/162/83
+f 681/163/357 666/132/74 665/138/83 682/164/358
+f 682/164/358 665/138/83 664/137/81 683/165/359
+f 683/165/359 664/137/81 663/135/282 684/166/360
+f 684/166/360 663/135/282 662/136/77 685/167/361
+f 685/168/361 662/134/77 661/133/75 686/169/362
+f 686/169/362 661/133/75 666/132/74 681/163/357
+f 698/170/363 675/171/364 679/161/356
+f 694/172/365 698/170/363 679/161/356
+f 693/173/366 694/172/365 679/161/356
+f 700/160/355 693/173/366 679/161/356
+f 695/174/367 696/175/368 680/176/369
+f 688/162/83 671/148/350 670/147/349 689/158/81
+f 704/177/370 705/178/371 700/160/355 699/159/354
+f 702/179/372 703/180/373 675/171/364 698/170/363
+f 701/181/374 702/179/372 698/170/363 694/172/365
+f 706/182/375 701/181/374 694/172/365 693/173/366
+f 705/178/371 706/182/375 693/173/366 700/160/355
+f 686/183/362 681/184/357 696/175/368 695/174/367
+f 703/180/373 704/177/370 699/159/354 675/171/364
+f 684/185/360 685/186/361 678/187/376 697/188/377
+f 682/189/358 683/190/359 677/191/378 676/192/379
+f 683/190/359 684/185/360 697/188/377 677/191/378
+f 685/186/361 686/183/362 695/174/367 678/187/376
+f 675/171/364 699/159/354 679/161/356
+f 697/188/377 678/187/376 680/176/369
+f 681/184/357 682/189/358 676/192/379 696/175/368
+f 676/192/379 677/191/378 680/176/369
+f 677/191/378 697/188/377 680/176/369
+f 678/187/376 695/174/367 680/176/369
+f 696/175/368 676/192/379 680/176/369
+f 701/128/374 707/135/85 708/137/90 702/130/372
+f 702/130/372 708/137/90 709/138/89 703/131/373
+f 703/131/373 709/138/89 710/132/88 704/126/370
+f 704/126/370 710/132/88 711/133/87 705/125/371
+f 705/125/371 711/133/87 712/134/86 706/127/375
+f 706/129/375 712/136/86 707/135/85 701/128/374
+f 707/135/85 687/166/74 688/165/83 708/137/90
+f 708/137/90 688/165/83 689/164/81 709/138/89
+f 709/138/89 689/164/81 690/163/282 710/132/88
+f 710/132/88 690/163/282 691/169/77 711/133/87
+f 711/133/87 691/169/77 692/168/75 712/134/86
+f 712/136/86 692/167/75 687/166/74 707/135/85
+f 137/12/67 313/193/242 314/194/241 138/13/72
+f 138/13/72 314/194/241 315/195/248 139/2/71
+f 139/2/71 315/195/248 316/196/247 140/3/70
+f 140/3/70 316/196/247 317/197/246 141/5/69
+f 141/5/69 317/197/246 318/198/245 142/7/68
+f 142/199/68 318/200/245 319/201/244 143/202/65
+f 144/203/66 320/204/243 313/193/242 137/12/67
+f 143/202/65 319/201/244 320/204/243 144/203/66
+g Cylinder_Cylinder_dark-wood
+f 1/205/71 7/131/380 8/130/381 2/206/382
+f 2/206/382 8/130/381 9/128/383 3/207/384
+f 3/207/384 9/128/383 10/129/385 4/208/65
+f 4/209/65 10/127/385 11/125/386 5/210/387
+f 5/210/387 11/125/386 12/126/388 6/211/389
+f 1/205/71 6/211/389 12/126/388 7/131/380
+f 7/131/380 13/212/390 14/213/391 8/130/381
+f 8/130/381 14/213/391 15/214/392 9/128/383
+f 9/128/383 15/214/392 16/215/393 10/129/385
+f 10/127/385 16/216/393 17/217/394 11/125/386
+f 11/125/386 17/217/394 18/218/395 12/126/388
+f 12/126/388 18/218/395 13/212/390 7/131/380
+f 13/212/390 19/124/67 20/123/396 14/213/391
+f 14/213/391 20/123/396 21/121/397 15/214/392
+f 15/214/392 21/121/397 22/122/69 16/215/393
+f 16/216/393 22/120/69 23/118/398 17/217/394
+f 17/217/394 23/118/398 24/119/399 18/218/395
+f 18/218/395 24/119/399 19/124/67 13/212/390
+f 19/124/67 25/219/400 26/220/401 20/123/396
+f 20/123/396 26/220/401 27/221/402 21/121/397
+f 21/121/397 27/221/402 28/222/403 22/122/69
+f 22/120/69 28/223/403 29/224/404 23/118/398
+f 23/118/398 29/224/404 30/225/405 24/119/399
+f 24/119/399 30/225/405 25/219/400 19/124/67
+f 25/219/400 31/116/406 32/114/407 26/220/401
+f 26/220/401 32/114/407 33/110/408 27/221/402
+f 27/221/402 33/110/408 34/113/409 28/222/403
+f 28/223/403 34/108/409 35/104/410 29/224/404
+f 29/224/404 35/104/410 36/107/411 30/225/405
+f 30/225/405 36/107/411 31/116/406 25/219/400
+f 31/116/406 37/226/65 38/227/412 32/114/407
+f 32/114/407 38/227/412 39/228/413 33/110/408
+f 33/110/408 39/228/413 40/229/71 34/113/409
+f 34/108/409 40/230/71 41/231/414 35/104/410
+f 35/104/410 41/231/414 42/232/415 36/107/411
+f 36/107/411 42/232/415 37/226/65 31/116/406
+f 37/226/65 43/117/385 44/115/416 38/227/412
+f 38/227/412 44/115/416 45/111/417 39/228/413
+f 39/228/413 45/111/417 46/112/380 40/229/71
+f 40/230/71 46/109/380 47/105/418 41/231/414
+f 41/231/414 47/105/418 48/106/419 42/232/415
+f 42/232/415 48/106/419 43/117/385 37/226/65
+f 43/117/385 49/233/393 50/234/420 44/115/416
+f 44/115/416 50/234/420 51/235/421 45/111/417
+f 45/111/417 51/235/421 52/236/390 46/112/380
+f 46/109/380 52/237/390 53/238/422 47/105/418
+f 47/105/418 53/238/422 54/239/423 48/106/419
+f 48/106/419 54/239/423 49/233/393 43/117/385
+f 49/233/393 55/140/69 56/141/424 50/234/420
+f 50/234/420 56/141/424 57/142/425 51/235/421
+f 51/235/421 57/142/425 58/143/67 52/236/390
+f 52/237/390 58/144/67 59/145/426 53/238/422
+f 53/238/422 59/145/426 60/139/427 54/239/423
+f 54/239/423 60/139/427 55/140/69 49/233/393
+f 55/164/69 61/240/403 62/241/428 56/165/424
+f 56/165/424 62/241/428 63/242/429 57/166/425
+f 57/166/425 63/242/429 64/243/400 58/167/67
+f 58/168/67 64/244/400 65/245/430 59/169/426
+f 59/169/426 65/245/430 66/246/431 60/163/427
+f 60/163/427 66/246/431 61/240/403 55/164/69
+f 61/240/403 67/138/409 68/137/432 62/241/428
+f 62/241/428 68/137/432 69/135/433 63/242/429
+f 63/242/429 69/135/433 70/136/406 64/243/400
+f 64/244/400 70/134/406 71/133/434 65/245/430
+f 65/245/430 71/133/434 72/132/435 66/246/431
+f 66/246/431 72/132/435 67/138/409 61/240/403
+f 67/138/409 1/205/71 2/206/382 68/137/432
+f 68/137/432 2/206/382 3/207/384 69/135/433
+f 69/135/433 3/207/384 4/208/65 70/136/406
+f 70/134/406 4/209/65 5/210/387 71/133/434
+f 71/133/434 5/210/387 6/211/389 72/132/435
+f 72/132/435 6/211/389 1/205/71 67/138/409
+f 321/247/71 327/20/380 328/21/436 322/248/437
+f 322/248/437 328/21/436 329/15/438 323/249/439
+f 323/249/439 329/15/438 330/16/385 324/250/65
+f 324/251/65 330/252/385 331/253/440 325/254/441
+f 325/254/441 331/253/440 332/255/442 326/256/443
+f 321/247/71 326/256/443 332/255/442 327/20/380
+f 327/20/380 333/257/390 334/258/444 328/21/436
+f 328/21/436 334/258/444 335/259/445 329/15/438
+f 329/15/438 335/259/445 336/260/393 330/16/385
+f 330/252/385 336/261/393 337/262/446 331/253/440
+f 331/253/440 337/262/446 338/263/447 332/255/442
+f 332/255/442 338/263/447 333/257/390 327/20/380
+f 333/257/390 339/27/67 340/28/448 334/258/444
+f 334/258/444 340/28/448 341/22/449 335/259/445
+f 335/259/445 341/22/449 342/23/69 336/260/393
+f 336/261/393 342/264/69 343/265/450 337/262/446
+f 337/262/446 343/265/450 344/266/451 338/263/447
+f 338/263/447 344/266/451 339/27/67 333/257/390
+f 339/27/67 345/267/400 346/268/452 340/28/448
+f 340/28/448 346/268/452 347/269/453 341/22/449
+f 341/22/449 347/269/453 348/270/403 342/23/69
+f 342/264/69 348/271/403 349/272/454 343/265/450
+f 343/265/450 349/272/454 350/273/455 344/266/451
+f 344/266/451 350/273/455 345/267/400 339/27/67
+f 345/267/400 351/34/406 352/35/456 346/268/452
+f 346/268/452 352/35/456 353/29/457 347/269/453
+f 347/269/453 353/29/457 354/30/409 348/270/403
+f 348/271/403 354/274/409 355/275/458 349/272/454
+f 349/272/454 355/275/458 356/276/459 350/273/455
+f 350/273/455 356/276/459 351/34/406 345/267/400
+f 351/34/406 357/277/65 358/278/460 352/35/456
+f 352/35/456 358/278/460 359/279/461 353/29/457
+f 353/29/457 359/279/461 360/280/71 354/30/409
+f 354/274/409 360/281/71 361/282/462 355/275/458
+f 355/275/458 361/282/462 362/283/463 356/276/459
+f 356/276/459 362/283/463 357/277/65 351/34/406
+f 357/277/65 363/41/385 364/42/464 358/278/460
+f 358/278/460 364/42/464 365/36/465 359/279/461
+f 359/279/461 365/36/465 366/37/380 360/280/71
+f 360/281/71 366/284/380 367/285/466 361/282/462
+f 361/282/462 367/285/466 368/286/467 362/283/463
+f 362/283/463 368/286/467 363/41/385 357/277/65
+f 363/41/385 369/88/393 370/95/468 364/42/464
+f 364/42/464 370/95/468 371/94/469 365/36/465
+f 365/36/465 371/94/469 372/93/390 366/37/380
+f 366/284/380 372/90/390 373/85/470 367/285/466
+f 367/285/466 373/85/470 374/86/471 368/286/467
+f 368/286/467 374/86/471 369/88/393 363/41/385
+f 369/88/393 375/48/69 376/49/472 370/95/468
+f 370/95/468 376/49/472 377/43/473 371/94/469
+f 371/94/469 377/43/473 378/44/67 372/93/390
+f 372/90/390 378/287/67 379/288/474 373/85/470
+f 373/85/470 379/288/474 380/289/475 374/86/471
+f 374/86/471 380/289/475 375/48/69 369/88/393
+f 375/11/69 381/290/403 382/291/476 376/14/472
+f 376/14/472 382/291/476 383/292/477 377/1/473
+f 377/1/473 383/292/477 384/293/400 378/4/67
+f 378/89/67 384/294/400 385/295/478 379/84/474
+f 379/84/474 385/295/478 386/296/479 380/87/475
+f 380/87/475 386/296/479 381/290/403 375/11/69
+f 381/290/403 387/12/409 388/13/480 382/291/476
+f 382/291/476 388/13/480 389/2/481 383/292/477
+f 383/292/477 389/2/481 390/3/406 384/293/400
+f 384/294/400 390/199/406 391/202/482 385/295/478
+f 385/295/478 391/202/482 392/203/483 386/296/479
+f 386/296/479 392/203/483 387/12/409 381/290/403
+f 387/12/409 321/247/71 322/248/437 388/13/480
+f 388/13/480 322/248/437 323/249/439 389/2/481
+f 389/2/481 323/249/439 324/250/65 390/3/406
+f 390/199/406 324/251/65 325/254/441 391/202/482
+f 391/202/482 325/254/441 326/256/443 392/203/483
+f 392/203/483 326/256/443 321/247/71 387/12/409
diff --git a/homedecor_modpack/homedecor/models/homedecor_coffeemaker.obj b/homedecor_modpack/homedecor/models/homedecor_coffeemaker.obj
new file mode 100644
index 0000000..0c54445
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_coffeemaker.obj
@@ -0,0 +1,1852 @@
+# Blender v2.73 (sub 0) OBJ File: 'coffeemaker.blend'
+# www.blender.org
+o Cylinder
+v 0.100610 -0.383894 -0.304297
+v 0.096933 -0.389442 -0.295419
+v 0.096933 -0.400538 -0.295419
+v 0.100610 -0.406085 -0.304297
+v 0.104288 -0.400538 -0.313174
+v 0.104288 -0.389442 -0.313174
+v 0.079456 -0.390029 -0.313059
+v 0.078342 -0.394834 -0.303120
+v 0.083468 -0.404443 -0.300997
+v 0.089708 -0.409248 -0.308813
+v 0.090822 -0.404443 -0.318752
+v 0.085696 -0.394834 -0.320875
+v 0.063971 -0.406791 -0.319473
+v 0.064732 -0.409565 -0.308757
+v 0.073610 -0.415113 -0.305080
+v 0.081726 -0.417886 -0.312119
+v 0.080965 -0.415113 -0.322835
+v 0.072087 -0.409565 -0.326512
+v 0.058303 -0.429688 -0.321821
+v 0.059751 -0.429688 -0.310820
+v 0.070002 -0.429688 -0.306574
+v 0.078805 -0.429688 -0.313329
+v 0.077357 -0.429688 -0.324330
+v 0.067105 -0.429688 -0.328576
+v 0.063971 -0.452584 -0.319473
+v 0.064732 -0.449810 -0.308757
+v 0.073610 -0.444262 -0.305080
+v 0.081726 -0.441489 -0.312119
+v 0.080965 -0.444262 -0.322835
+v 0.072087 -0.449810 -0.326512
+v 0.079456 -0.469346 -0.313059
+v 0.078342 -0.464541 -0.303120
+v 0.083468 -0.454932 -0.300997
+v 0.089708 -0.450127 -0.308813
+v 0.090822 -0.454932 -0.318752
+v 0.085697 -0.464541 -0.320875
+v 0.100610 -0.475481 -0.304297
+v 0.096933 -0.469933 -0.295419
+v 0.096933 -0.458837 -0.295419
+v 0.100610 -0.453290 -0.304297
+v 0.104288 -0.458837 -0.313174
+v 0.104288 -0.469933 -0.313174
+v -0.375000 -0.347731 0.142853
+v -0.375000 -0.332262 0.142853
+v -0.375000 -0.324527 0.156250
+v -0.375000 -0.332262 0.169647
+v -0.375000 -0.347731 0.169647
+v -0.375000 -0.355466 0.156250
+v -0.402381 -0.340394 0.142853
+v -0.394646 -0.326997 0.142853
+v -0.390779 -0.320299 0.156250
+v -0.394646 -0.326997 0.169647
+v -0.402381 -0.340394 0.169647
+v -0.406249 -0.347093 0.156250
+v -0.375000 -0.140628 0.156250
+v -0.375000 -0.148363 0.169647
+v -0.375000 -0.163832 0.169647
+v -0.375000 -0.171567 0.156250
+v -0.375000 -0.163832 0.142853
+v -0.375000 -0.148363 0.142853
+v -0.406249 -0.149001 0.156250
+v -0.402381 -0.155699 0.169647
+v -0.394646 -0.169096 0.169647
+v -0.390779 -0.175795 0.156250
+v -0.394646 -0.169096 0.142853
+v -0.402381 -0.155699 0.142853
+v -0.429124 -0.171876 0.156250
+v -0.422426 -0.175744 0.169647
+v -0.409029 -0.183479 0.169647
+v -0.402330 -0.187346 0.156250
+v -0.409029 -0.183479 0.142853
+v -0.422426 -0.175744 0.142853
+v -0.437497 -0.203125 0.156250
+v -0.429762 -0.203125 0.169647
+v -0.414293 -0.203125 0.169647
+v -0.406558 -0.203125 0.156250
+v -0.414293 -0.203125 0.142853
+v -0.429762 -0.203125 0.142853
+v -0.422426 -0.320350 0.142853
+v -0.409029 -0.312615 0.142853
+v -0.402330 -0.308748 0.156250
+v -0.409029 -0.312615 0.169647
+v -0.422426 -0.320350 0.169647
+v -0.429124 -0.324217 0.156250
+v -0.429762 -0.292969 0.142853
+v -0.414293 -0.292969 0.142853
+v -0.406558 -0.292969 0.156250
+v -0.414293 -0.292969 0.169647
+v -0.429762 -0.292969 0.169647
+v -0.437497 -0.292969 0.156250
+v -0.375000 -0.500000 0.500000
+v -0.375000 -0.500000 0.000000
+v -0.062500 -0.500000 0.000000
+v -0.062500 -0.500000 0.500000
+v -0.375000 0.187500 0.500000
+v -0.375000 0.187500 0.000000
+v -0.062500 0.187500 0.000000
+v -0.062500 0.187500 0.500000
+v -0.375000 -0.062500 0.500000
+v -0.375000 -0.375000 0.000000
+v -0.062500 -0.375000 0.000000
+v -0.062500 -0.375000 0.500000
+v -0.375000 -0.375000 0.500000
+v -0.375000 -0.062500 0.000000
+v -0.062500 -0.062500 0.000000
+v -0.062500 -0.062500 0.500000
+v -0.375000 -0.062500 0.312500
+v -0.062500 -0.375000 0.312500
+v -0.375000 -0.375000 0.312500
+v -0.062500 -0.062500 0.312500
+v -0.218750 -0.375000 0.015625
+v -0.218750 -0.125000 0.000000
+v -0.164935 -0.375000 0.026329
+v -0.158956 -0.125000 0.011894
+v -0.119313 -0.375000 0.056813
+v -0.108265 -0.125000 0.045765
+v -0.088829 -0.375000 0.102435
+v -0.074394 -0.125000 0.096456
+v -0.078125 -0.375000 0.156250
+v -0.024943 -0.125000 0.156250
+v -0.088829 -0.375000 0.210065
+v -0.074394 -0.125000 0.216044
+v -0.119313 -0.375000 0.255687
+v -0.108265 -0.125000 0.266735
+v -0.164935 -0.375000 0.286171
+v -0.158956 -0.125000 0.300606
+v -0.218750 -0.375000 0.296875
+v -0.218750 -0.125000 0.312500
+v -0.272565 -0.375000 0.286171
+v -0.278544 -0.125000 0.300606
+v -0.318187 -0.375000 0.255687
+v -0.329235 -0.125000 0.266735
+v -0.348671 -0.375000 0.210065
+v -0.363106 -0.125000 0.216044
+v -0.359375 -0.375000 0.156250
+v -0.375000 -0.125000 0.156250
+v -0.348671 -0.375000 0.102435
+v -0.363106 -0.125000 0.096456
+v -0.318187 -0.375000 0.056813
+v -0.329235 -0.125000 0.045765
+v -0.272565 -0.375000 0.026329
+v -0.278544 -0.125000 0.011894
+v 0.180168 -0.500000 -0.338992
+v 0.180168 -0.375000 -0.338992
+v 0.200444 -0.500000 -0.325444
+v 0.200444 -0.375000 -0.325444
+v 0.213992 -0.500000 -0.305168
+v 0.213992 -0.375000 -0.305168
+v 0.218750 -0.500000 -0.281250
+v 0.218750 -0.375000 -0.281250
+v 0.213992 -0.500000 -0.257332
+v 0.213992 -0.375000 -0.257332
+v 0.200444 -0.500000 -0.237056
+v 0.200444 -0.375000 -0.237056
+v 0.180168 -0.500000 -0.223508
+v 0.180168 -0.375000 -0.223508
+v 0.156250 -0.500000 -0.218750
+v 0.156250 -0.375000 -0.218750
+v 0.132332 -0.500000 -0.223508
+v 0.132332 -0.375000 -0.223508
+v 0.112056 -0.500000 -0.237056
+v 0.112056 -0.375000 -0.237056
+v 0.098508 -0.500000 -0.257332
+v 0.098508 -0.375000 -0.257332
+v 0.093750 -0.500000 -0.281250
+v 0.093750 -0.375000 -0.281250
+v 0.098508 -0.500000 -0.305168
+v 0.098508 -0.375000 -0.305168
+v 0.112056 -0.500000 -0.325444
+v 0.112056 -0.375000 -0.325444
+v 0.132332 -0.500000 -0.338992
+v 0.132332 -0.375000 -0.338992
+v 0.156250 -0.500000 -0.343750
+v 0.156250 -0.375000 -0.343750
+v -0.218750 -0.187500 0.000000
+v -0.158956 -0.359375 0.011894
+v -0.108265 -0.359375 0.045765
+v -0.074394 -0.359375 0.096456
+v -0.062500 -0.359375 0.156250
+v -0.074394 -0.359375 0.216044
+v -0.108265 -0.359375 0.266735
+v -0.158956 -0.359375 0.300606
+v -0.218750 -0.359375 0.312500
+v -0.278544 -0.359375 0.300606
+v -0.329235 -0.359375 0.266735
+v -0.363106 -0.359375 0.216044
+v -0.375000 -0.359375 0.156250
+v -0.363106 -0.359375 0.096456
+v -0.329235 -0.359375 0.045765
+v -0.278544 -0.359375 0.011894
+v -0.278544 -0.187500 0.011894
+v -0.329235 -0.187500 0.045765
+v -0.363106 -0.187500 0.096456
+v -0.375000 -0.187500 0.156250
+v -0.363106 -0.187500 0.216044
+v -0.329235 -0.187500 0.266735
+v -0.278544 -0.187500 0.300606
+v -0.218750 -0.187500 0.312500
+v -0.158956 -0.187500 0.300606
+v -0.108265 -0.187500 0.266735
+v -0.074394 -0.187500 0.216044
+v -0.062500 -0.187500 0.156250
+v -0.074394 -0.187500 0.096456
+v -0.108265 -0.187500 0.045765
+v -0.158956 -0.187500 0.011894
+v -0.218750 -0.359375 0.000000
+v -0.218350 -0.156250 0.009619
+v -0.274463 -0.156250 0.020781
+v -0.322033 -0.156250 0.052566
+v -0.353819 -0.156250 0.100137
+v -0.364981 -0.156250 0.156250
+v -0.353819 -0.156250 0.212363
+v -0.322033 -0.156250 0.259934
+v -0.274463 -0.156250 0.291719
+v -0.218350 -0.156250 0.302881
+v -0.162236 -0.156250 0.291719
+v -0.114666 -0.156250 0.259934
+v -0.082880 -0.156250 0.212363
+v -0.050781 -0.156250 0.156250
+v -0.082880 -0.156250 0.100137
+v -0.114666 -0.156250 0.052566
+v -0.162236 -0.156250 0.020781
+v -0.055936 -0.140112 0.127799
+v -0.055936 -0.140112 0.184701
+v -0.068332 -0.172388 0.184701
+v -0.068332 -0.172388 0.127799
+v -0.218750 -0.320312 0.000000
+v -0.158956 -0.320312 0.011894
+v -0.108265 -0.320312 0.045765
+v -0.074394 -0.320312 0.096456
+v -0.062500 -0.320312 0.156250
+v -0.074394 -0.320312 0.216044
+v -0.108265 -0.320312 0.266735
+v -0.158956 -0.320312 0.300606
+v -0.218750 -0.320312 0.312500
+v -0.278544 -0.320312 0.300606
+v -0.329235 -0.320312 0.266735
+v -0.363106 -0.320312 0.216044
+v -0.375000 -0.320312 0.156250
+v -0.363106 -0.320312 0.096456
+v -0.329235 -0.320312 0.045765
+v -0.278544 -0.320312 0.011894
+v -0.371094 -0.347731 0.142853
+v -0.371094 -0.332262 0.142853
+v -0.371094 -0.324527 0.156250
+v -0.371094 -0.332262 0.169647
+v -0.371094 -0.347731 0.169647
+v -0.371094 -0.355466 0.156250
+v -0.366500 -0.140628 0.156250
+v -0.359456 -0.148363 0.169647
+v -0.359456 -0.163832 0.169647
+v -0.366500 -0.171567 0.156250
+v -0.359456 -0.163832 0.142853
+v -0.359456 -0.148363 0.142853
+v -0.218750 -0.125000 0.062502
+v -0.218750 -0.062500 0.031250
+v -0.182874 -0.125000 0.069638
+v -0.170915 -0.062500 0.040765
+v -0.152460 -0.125000 0.089960
+v -0.130362 -0.062500 0.067862
+v -0.132138 -0.125000 0.120374
+v -0.103265 -0.062500 0.108415
+v -0.125002 -0.125000 0.156250
+v -0.093750 -0.062500 0.156250
+v -0.132138 -0.125000 0.192126
+v -0.103265 -0.062500 0.204085
+v -0.152460 -0.125000 0.222540
+v -0.130362 -0.062500 0.244638
+v -0.182874 -0.125000 0.242862
+v -0.170915 -0.062500 0.271735
+v -0.218750 -0.125000 0.249998
+v -0.218750 -0.062500 0.281250
+v -0.254626 -0.125000 0.242862
+v -0.266585 -0.062500 0.271735
+v -0.285040 -0.125000 0.222540
+v -0.307138 -0.062500 0.244638
+v -0.305362 -0.125000 0.192126
+v -0.334235 -0.062500 0.204085
+v -0.312498 -0.125000 0.156250
+v -0.343750 -0.062500 0.156250
+v -0.305362 -0.125000 0.120374
+v -0.334235 -0.062500 0.108415
+v -0.285040 -0.125000 0.089960
+v -0.307138 -0.062500 0.067862
+v -0.254626 -0.125000 0.069638
+v -0.266585 -0.062500 0.040765
+v -0.369053 -0.187500 0.126353
+v -0.369053 -0.187500 0.186147
+v -0.369053 -0.320312 0.126353
+v -0.369053 -0.320312 0.186147
+v -0.218750 -0.140625 0.007812
+v -0.275555 -0.171875 0.019112
+v -0.323711 -0.171875 0.051289
+v -0.355888 -0.171875 0.099445
+v -0.367188 -0.171875 0.156250
+v -0.355888 -0.171875 0.213055
+v -0.323711 -0.171875 0.261211
+v -0.275555 -0.171875 0.293388
+v -0.218750 -0.171875 0.304688
+v -0.161945 -0.171875 0.293388
+v -0.113789 -0.171875 0.261211
+v -0.081612 -0.171875 0.213055
+v -0.081612 -0.171875 0.099445
+v -0.113789 -0.171875 0.051289
+v -0.161945 -0.171875 0.019112
+v -0.218750 -0.171875 0.007812
+v -0.275555 -0.140625 0.019112
+v -0.323711 -0.140625 0.051289
+v -0.355888 -0.140625 0.099445
+v -0.367188 -0.140625 0.156250
+v -0.355888 -0.140625 0.213055
+v -0.323711 -0.140625 0.261211
+v -0.275555 -0.140625 0.293388
+v -0.218750 -0.140625 0.304688
+v -0.161945 -0.140625 0.293388
+v -0.113789 -0.140625 0.261211
+v -0.081612 -0.140625 0.213055
+v -0.081612 -0.140625 0.099445
+v -0.113789 -0.140625 0.051289
+v -0.161945 -0.140625 0.019112
+v -0.361538 -0.171875 0.184652
+v -0.361538 -0.171875 0.127848
+v -0.039062 -0.140625 0.156250
+v -0.058728 -0.171875 0.156250
+v -0.066010 -0.156250 0.129343
+v -0.066010 -0.156250 0.183157
+v -0.218696 -0.125000 0.007758
+v -0.161870 -0.125000 0.019062
+v -0.113696 -0.125000 0.051250
+v -0.081507 -0.125000 0.099425
+v -0.034512 -0.125000 0.156250
+v -0.081507 -0.125000 0.213075
+v -0.113696 -0.125000 0.261249
+v -0.161870 -0.125000 0.293438
+v -0.218696 -0.125000 0.304742
+v -0.275521 -0.125000 0.293438
+v -0.323695 -0.125000 0.261250
+v -0.355884 -0.125000 0.213075
+v -0.367188 -0.125000 0.156250
+v -0.355884 -0.125000 0.099425
+v -0.323695 -0.125000 0.051250
+v -0.275521 -0.125000 0.019062
+v -0.218696 -0.187500 0.007758
+v -0.275521 -0.187500 0.019062
+v -0.323695 -0.187500 0.051250
+v -0.355884 -0.187500 0.099425
+v -0.367188 -0.187500 0.156250
+v -0.355884 -0.187500 0.213075
+v -0.323695 -0.187500 0.261250
+v -0.275521 -0.187500 0.293438
+v -0.218696 -0.187500 0.304742
+v -0.161870 -0.187500 0.293438
+v -0.113696 -0.187500 0.261249
+v -0.081507 -0.187500 0.213075
+v -0.070204 -0.187500 0.156250
+v -0.081507 -0.187500 0.099425
+v -0.113696 -0.187500 0.051250
+v -0.161870 -0.187500 0.019062
+v -0.218696 -0.156250 0.022607
+v -0.269838 -0.156250 0.032780
+v -0.313195 -0.156250 0.061750
+v -0.342165 -0.156250 0.105107
+v -0.352338 -0.156250 0.156250
+v -0.342165 -0.156250 0.207393
+v -0.313195 -0.156250 0.250750
+v -0.269839 -0.156250 0.279720
+v -0.218696 -0.156250 0.289893
+v -0.167553 -0.156250 0.279720
+v -0.124196 -0.156250 0.250750
+v -0.095226 -0.156250 0.207393
+v -0.059067 -0.156250 0.156250
+v -0.095226 -0.156250 0.105107
+v -0.124196 -0.156250 0.061750
+v -0.167553 -0.156250 0.032780
+v -0.063966 -0.140112 0.129211
+v -0.063966 -0.140112 0.183289
+v -0.075747 -0.172388 0.183289
+v -0.075747 -0.172388 0.129211
+v -0.218696 -0.240679 0.007758
+v -0.161870 -0.240679 0.019062
+v -0.113696 -0.240679 0.051250
+v -0.081507 -0.240679 0.099425
+v -0.070204 -0.240679 0.156250
+v -0.081507 -0.240679 0.213075
+v -0.113696 -0.240679 0.261249
+v -0.161870 -0.240679 0.293438
+v -0.218696 -0.240679 0.304742
+v -0.275521 -0.240679 0.293438
+v -0.323695 -0.240679 0.261250
+v -0.355884 -0.240679 0.213075
+v -0.367188 -0.240679 0.156250
+v -0.355884 -0.240679 0.099425
+v -0.323695 -0.240679 0.051250
+v -0.275521 -0.240679 0.019062
+v -0.361536 -0.187500 0.127837
+v -0.361536 -0.187500 0.184663
+v -0.361536 -0.240679 0.127837
+v -0.361536 -0.240679 0.184663
+v -0.218696 -0.140625 0.015183
+v -0.272680 -0.171875 0.025921
+v -0.318445 -0.171875 0.056500
+v -0.349025 -0.171875 0.102266
+v -0.359763 -0.171875 0.156250
+v -0.349025 -0.171875 0.210234
+v -0.318445 -0.171875 0.256000
+v -0.272680 -0.171875 0.286579
+v -0.218696 -0.171875 0.297317
+v -0.164712 -0.171875 0.286579
+v -0.118946 -0.171875 0.256000
+v -0.088367 -0.171875 0.210234
+v -0.088367 -0.171875 0.102266
+v -0.118946 -0.171875 0.056500
+v -0.164712 -0.171875 0.025921
+v -0.218696 -0.171875 0.015183
+v -0.272680 -0.140625 0.025921
+v -0.318445 -0.140625 0.056500
+v -0.349025 -0.140625 0.102266
+v -0.359763 -0.140625 0.156250
+v -0.349025 -0.140625 0.210234
+v -0.318445 -0.140625 0.256000
+v -0.272680 -0.140625 0.286579
+v -0.218696 -0.140625 0.297317
+v -0.164712 -0.140625 0.286579
+v -0.118946 -0.140625 0.256000
+v -0.088367 -0.140625 0.210234
+v -0.088367 -0.140625 0.102266
+v -0.118946 -0.140625 0.056500
+v -0.164712 -0.140625 0.025921
+v -0.354394 -0.171875 0.183242
+v -0.354394 -0.171875 0.129258
+v -0.047930 -0.140625 0.156250
+v -0.066619 -0.171875 0.156250
+v -0.073540 -0.156250 0.130679
+v -0.073540 -0.156250 0.181821
+v -0.218696 -0.240678 0.156250
+v 0.177178 -0.375000 -0.331774
+v 0.194919 -0.375000 -0.319919
+v 0.206774 -0.375000 -0.302178
+v 0.210937 -0.375000 -0.281250
+v 0.206774 -0.375000 -0.260322
+v 0.194919 -0.375000 -0.242581
+v 0.177178 -0.375000 -0.230726
+v 0.156250 -0.375000 -0.226563
+v 0.135322 -0.375000 -0.230726
+v 0.117581 -0.375000 -0.242581
+v 0.105726 -0.375000 -0.260322
+v 0.101563 -0.375000 -0.281250
+v 0.105726 -0.375000 -0.302178
+v 0.117581 -0.375000 -0.319919
+v 0.135322 -0.375000 -0.331774
+v 0.156250 -0.375000 -0.335937
+v 0.177178 -0.398438 -0.331774
+v 0.194919 -0.398438 -0.319919
+v 0.206774 -0.398438 -0.302178
+v 0.210937 -0.398438 -0.281250
+v 0.206774 -0.398438 -0.260322
+v 0.194919 -0.398438 -0.242581
+v 0.177178 -0.398438 -0.230726
+v 0.156250 -0.398438 -0.226563
+v 0.135322 -0.398438 -0.230726
+v 0.117581 -0.398438 -0.242581
+v 0.105726 -0.398438 -0.260322
+v 0.101563 -0.398438 -0.281250
+v 0.105726 -0.398438 -0.302178
+v 0.117581 -0.398438 -0.319919
+v 0.135322 -0.398438 -0.331774
+v 0.156250 -0.398438 -0.335937
+v 0.156250 -0.398437 -0.281250
+v 0.156250 -0.500000 -0.281250
+vt 0.062500 0.187500
+vt 0.093750 0.187500
+vt 0.093750 0.218750
+vt 0.062500 0.218750
+vt 0.062500 0.031250
+vt 0.093750 0.031250
+vt 0.093750 0.062500
+vt 0.062500 0.062500
+vt 0.093750 0.093750
+vt 0.062500 0.093750
+vt 0.093750 0.125000
+vt 0.062500 0.125000
+vt 0.093750 0.156250
+vt 0.062500 0.156250
+vt 0.156250 0.187500
+vt 0.156250 0.218750
+vt 0.156250 0.031250
+vt 0.156250 0.062500
+vt 0.156250 0.093750
+vt 0.156250 0.125000
+vt 0.156250 0.156250
+vt 0.218750 0.187500
+vt 0.218750 0.218750
+vt 0.218750 0.031250
+vt 0.218750 0.062500
+vt 0.218750 0.093750
+vt 0.218750 0.125000
+vt 0.218750 0.156250
+vt 0.531250 0.156250
+vt 0.562500 0.156250
+vt 0.562500 0.187500
+vt 0.531250 0.187500
+vt 0.531250 0.125000
+vt 0.562500 0.125000
+vt 0.531250 0.093750
+vt 0.562500 0.093750
+vt 0.531250 0.062500
+vt 0.562500 0.062500
+vt 0.531250 0.031250
+vt 0.562500 0.031250
+vt 0.562500 0.218750
+vt 0.531250 0.218750
+vt 0.468750 0.156250
+vt 0.468750 0.187500
+vt 0.468750 0.125000
+vt 0.468750 0.093750
+vt 0.468750 0.062500
+vt 0.468750 0.031250
+vt 0.468750 0.218750
+vt 0.406250 0.156250
+vt 0.406250 0.187500
+vt 0.406250 0.125000
+vt 0.406250 0.093750
+vt 0.406250 0.062500
+vt 0.406250 0.031250
+vt 0.406250 0.218750
+vt 0.250000 0.906250
+vt 0.250000 0.937500
+vt 0.187500 0.937500
+vt 0.187500 0.906250
+vt 0.125000 0.937500
+vt 0.125000 0.906250
+vt 0.875000 0.906250
+vt 0.875000 0.875000
+vt 0.937500 0.875000
+vt 0.937500 0.906250
+vt 0.937500 0.937500
+vt 0.875000 0.937500
+vt 0.812500 0.937500
+vt 0.812500 0.906250
+vt 0.750000 0.937500
+vt 0.750000 0.906250
+vt 0.687500 0.937500
+vt 0.687500 0.906250
+vt 0.625000 0.937500
+vt 0.625000 0.906250
+vt 0.562500 0.937500
+vt 0.562500 0.906250
+vt 0.500000 0.937500
+vt 0.500000 0.906250
+vt 0.437500 0.906250
+vt 0.437500 0.937500
+vt 0.375000 0.937500
+vt 0.375000 0.906250
+vt 0.312500 0.906250
+vt 0.312500 0.937500
+vt 0.937500 0.562500
+vt 0.937500 0.593750
+vt 0.875000 0.593750
+vt 0.875000 0.562500
+vt 1.000000 0.562500
+vt 1.000000 0.593750
+vt 0.812500 0.562500
+vt 0.812500 0.593750
+vt 0.750000 0.593750
+vt 0.750000 0.562500
+vt 0.687500 0.593750
+vt 0.687500 0.562500
+vt 0.625000 0.593750
+vt 0.625000 0.562500
+vt 0.562500 0.593750
+vt 0.562500 0.562500
+vt 0.500000 0.593750
+vt 0.500000 0.562500
+vt 0.437500 0.593750
+vt 0.437500 0.562500
+vt 0.375000 0.593750
+vt 0.375000 0.562500
+vt 0.312500 0.562500
+vt 0.312500 0.593750
+vt 0.250000 0.593750
+vt 0.250000 0.562500
+vt 0.187500 0.593750
+vt 0.187500 0.562500
+vt 0.125000 0.593750
+vt 0.125000 0.562500
+vt 0.250000 0.656250
+vt 0.250000 0.812500
+vt 0.187500 0.812500
+vt 0.187500 0.656250
+vt 0.062500 0.562500
+vt 0.062500 0.593750
+vt -0.000000 0.593750
+vt -0.000000 0.562500
+vt 0.375000 0.843750
+vt 0.375000 0.875000
+vt 0.312500 0.875000
+vt 0.312500 0.843750
+vt 0.250000 0.875000
+vt 0.250000 0.843750
+vt 0.437500 0.843750
+vt 0.437500 0.875000
+vt 0.500000 0.843750
+vt 0.500000 0.875000
+vt 0.468750 0.843750
+vt 0.625000 0.843750
+vt 0.625000 0.875000
+vt 0.562500 0.875000
+vt 0.562500 0.843750
+vt 0.687500 0.843750
+vt 0.687500 0.875000
+vt 0.750000 0.843750
+vt 0.750000 0.875000
+vt 0.812500 0.843750
+vt 0.812500 0.875000
+vt 0.875000 0.843750
+vt 0.875000 0.812500
+vt 0.937500 0.812500
+vt 0.937500 0.843750
+vt 0.187500 0.843750
+vt 0.187500 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.843750
+vt 0.375000 0.812500
+vt 0.312500 0.812500
+vt 0.312500 0.656250
+vt 0.375000 0.656250
+vt 0.437500 0.812500
+vt 0.437500 0.656250
+vt 0.468750 0.812500
+vt 0.468750 0.656250
+vt 0.531250 0.812500
+vt 0.500000 0.812500
+vt 0.500000 0.656250
+vt 0.531250 0.656250
+vt 0.625000 0.812500
+vt 0.562500 0.812500
+vt 0.562500 0.656250
+vt 0.625000 0.656250
+vt 0.687500 0.812500
+vt 0.687500 0.656250
+vt 0.750000 0.812500
+vt 0.750000 0.656250
+vt 0.812500 0.812500
+vt 0.812500 0.656250
+vt 0.875000 0.656250
+vt 0.937500 0.656250
+vt 0.125000 0.812500
+vt 0.062500 0.812500
+vt 0.062500 0.656250
+vt 0.125000 0.656250
+vt 0.593750 0.093750
+vt 0.593750 0.125000
+vt 0.593750 0.156250
+vt 0.593750 0.187500
+vt 0.031250 0.156250
+vt 0.031250 0.125000
+vt 0.593750 0.218750
+vt 0.031250 0.093750
+vt 0.593750 0.062500
+vt 0.593750 0.031250
+vt 0.031250 0.187500
+vt 0.031250 0.218750
+vt 0.031250 0.062500
+vt 0.031250 0.031250
+vt 0.531250 0.843750
+vt -0.000000 0.656250
+vt 1.000000 0.656250
+vt 0.062500 0.906250
+vt 0.062500 0.875000
+vt 0.062500 0.937500
+vt 0.062500 0.843750
+vt -0.000000 0.812500
+vt 1.000000 0.812500
+vt 0.968750 0.843750
+vt 1.000000 0.843750
+vt 0.031250 0.843750
+vt -0.000000 0.843750
+vt -0.000000 0.875000
+vt 1.000000 0.875000
+vt 0.968750 0.906250
+vt 1.000000 0.937500
+vt 1.000000 0.906250
+vt 0.031250 0.906250
+vt -0.000000 0.937500
+vt -0.000000 0.906250
+vt 0.968750 0.875000
+vt 0.031250 0.875000
+vt 0.750000 0.468750
+vt 0.812500 0.468750
+vt 0.812500 0.500000
+vt 0.750000 0.500000
+vt 0.875000 0.468750
+vt 0.875000 0.500000
+vt 0.125000 0.468750
+vt 0.062500 0.468750
+vt 0.062500 0.437500
+vt 0.125000 0.437500
+vt 0.062500 0.500000
+vt 0.125000 0.500000
+vt 0.187500 0.468750
+vt 0.187500 0.500000
+vt 0.250000 0.468750
+vt 0.250000 0.500000
+vt 0.312500 0.468750
+vt 0.312500 0.500000
+vt 0.375000 0.468750
+vt 0.375000 0.500000
+vt 0.437500 0.468750
+vt 0.437500 0.500000
+vt 0.500000 0.468750
+vt 0.500000 0.500000
+vt 0.562500 0.468750
+vt 0.625000 0.468750
+vt 0.625000 0.500000
+vt 0.562500 0.500000
+vt 0.687500 0.468750
+vt 0.687500 0.500000
+vt 0.750000 0.312500
+vt 0.812500 0.312500
+vt 0.812500 0.375000
+vt 0.750000 0.375000
+vt 0.625000 0.406250
+vt 0.687500 0.406250
+vt 0.687500 0.437500
+vt 0.625000 0.437500
+vt 0.750000 0.406250
+vt 0.750000 0.437500
+vt 0.562500 0.406250
+vt 0.562500 0.437500
+vt 0.500000 0.406250
+vt 0.531250 0.406250
+vt 0.500000 0.437500
+vt 0.375000 0.406250
+vt 0.437500 0.406250
+vt 0.437500 0.437500
+vt 0.375000 0.437500
+vt 0.312500 0.406250
+vt 0.312500 0.437500
+vt 0.250000 0.406250
+vt 0.250000 0.437500
+vt 0.187500 0.406250
+vt 0.187500 0.437500
+vt 0.125000 0.406250
+vt 0.062500 0.406250
+vt 0.062500 0.375000
+vt 0.125000 0.375000
+vt 0.812500 0.406250
+vt 0.875000 0.406250
+vt 0.875000 0.437500
+vt 0.812500 0.437500
+vt 0.625000 0.375000
+vt 0.625000 0.312500
+vt 0.687500 0.312500
+vt 0.687500 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.312500
+vt 0.531250 0.375000
+vt 0.531250 0.312500
+vt 0.468750 0.375000
+vt 0.468750 0.312500
+vt 0.500000 0.312500
+vt 0.500000 0.375000
+vt 0.375000 0.375000
+vt 0.375000 0.312500
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.312500 0.375000
+vt 0.312500 0.312500
+vt 0.250000 0.375000
+vt 0.250000 0.312500
+vt 0.187500 0.375000
+vt 0.187500 0.312500
+vt 0.125000 0.312500
+vt 0.062500 0.312500
+vt 0.875000 0.375000
+vt 0.875000 0.312500
+vt 0.937500 0.312500
+vt 0.937500 0.375000
+vt 0.468750 0.406250
+vt 0.750933 0.038838
+vt 0.812467 0.026598
+vt 0.812467 0.187395
+vt 0.698766 0.073694
+vt 0.663910 0.125860
+vt 0.651670 0.187395
+vt 0.961024 0.125860
+vt 0.973264 0.187395
+vt 0.926168 0.073694
+vt 0.874001 0.038838
+vt 0.937500 0.468750
+vt 0.937500 0.437500
+vt 0.937500 0.500000
+vt 0.937500 0.406250
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 0.000000 0.312500
+vt 0.000000 0.375000
+vt 0.031250 0.406250
+vt 0.000000 0.406250
+vt 0.968750 0.406250
+vt 1.000000 0.406250
+vt 1.000000 0.437500
+vt 0.000000 0.437500
+vt 0.031250 0.468750
+vt 0.000000 0.500000
+vt 0.000000 0.468750
+vt 0.968750 0.468750
+vt 1.000000 0.468750
+vt 1.000000 0.500000
+vt 0.031250 0.437500
+vt 0.968750 0.437500
+vt 0.937500 0.968750
+vt 0.875000 0.968750
+vt 1.000000 0.968750
+vt 0.062500 0.968750
+vt -0.000000 0.968750
+vt 0.125000 0.968750
+vt 0.187500 0.968750
+vt 0.250000 0.968750
+vt 0.312500 0.968750
+vt 0.375000 0.968750
+vt 0.437500 0.968750
+vt 0.500000 0.968750
+vt 0.562500 0.968750
+vt 0.625000 0.968750
+vt 0.687500 0.968750
+vt 0.750000 0.968750
+vt 0.812500 0.968750
+vt 0.750000 0.625000
+vt 0.687500 0.625000
+vt 0.625000 0.625000
+vt 0.562500 0.625000
+vt 0.500000 0.625000
+vt 0.437500 0.625000
+vt 0.375000 0.625000
+vt 0.312500 0.625000
+vt 0.250000 0.625000
+vt 0.187500 0.625000
+vt 0.125000 0.625000
+vt 0.062500 0.625000
+vt -0.000000 0.625000
+vt 1.000000 0.625000
+vt 0.937500 0.625000
+vt 0.875000 0.625000
+vt 0.812500 0.625000
+vt 0.562500 0.999917
+vt 0.500000 0.999917
+vt 0.875000 0.999917
+vt 0.812500 0.999917
+vt 0.687500 0.999917
+vt 0.625000 0.999917
+vt 1.000000 0.999917
+vt 0.937500 0.999917
+vt 0.125000 0.999917
+vt 0.062500 0.999917
+vt 0.250000 0.999917
+vt 0.187500 0.999917
+vt 0.375000 0.999917
+vt 0.312500 0.999917
+vt 0.437500 0.999917
+vt 0.750000 0.999917
+vt 0.000000 0.999917
+vt 0.214555 0.015490
+vt 0.263983 0.048517
+vt 0.156250 0.156250
+vt 0.938011 0.250511
+vt 0.894764 0.279408
+vt 0.843750 0.156250
+vt 0.843750 0.289556
+vt 0.792736 0.279409
+vt 0.749489 0.250511
+vt 0.720592 0.207264
+vt 0.710444 0.156250
+vt 0.720592 0.105236
+vt 0.749489 0.061989
+vt 0.792736 0.033092
+vt 0.843750 0.022944
+vt 0.894764 0.033092
+vt 0.938011 0.061989
+vt 0.966908 0.105236
+vt 0.977056 0.156250
+vt 0.966908 0.207264
+vt 0.297010 0.097945
+vt 0.308608 0.156250
+vt 0.297010 0.214555
+vt 0.263983 0.263983
+vt 0.214555 0.297010
+vt 0.156250 0.308608
+vt 0.097945 0.297010
+vt 0.048517 0.263983
+vt 0.015490 0.214555
+vt 0.003892 0.156250
+vt 0.015490 0.097945
+vt 0.048517 0.048517
+vt 0.097945 0.015490
+vt 0.156250 0.003892
+vt 0.020833 0.604167
+vt 0.020833 0.520833
+vt 0.354167 0.520833
+vt 0.229167 0.604167
+vt 0.979167 0.604167
+vt 0.770833 0.604167
+vt 0.770833 0.520833
+vt 0.979167 0.520833
+vt 0.354167 0.979167
+vt 0.229167 0.812500
+vt 0.270833 0.354167
+vt 0.270833 0.020833
+vt 0.479167 0.020833
+vt 0.479167 0.354167
+vt 0.229167 0.020833
+vt 0.229167 0.354167
+vt 0.020833 0.354167
+vt 0.020833 0.020833
+vt 0.020833 0.979167
+vt 0.020833 0.812500
+vt 0.979167 0.979167
+vt 0.770833 0.979167
+vt 0.770833 0.812500
+vt 0.979167 0.812500
+vt 0.520833 0.604167
+vt 0.520833 0.520833
+vt 0.729167 0.520833
+vt 0.729167 0.604167
+vt 0.729167 0.812500
+vt 0.729167 0.979167
+vt 0.520833 0.979167
+vt 0.520833 0.812500
+vt 0.729167 0.145833
+vt 0.729167 0.354167
+vt 0.520833 0.354167
+vt 0.520833 0.145833
+vt 0.979167 0.354167
+vt 0.770833 0.354167
+vt 0.770833 0.145833
+vt 0.979167 0.145833
+vt 0.687500 0.062500
+vt 0.687500 0.104167
+vt 0.666667 0.104167
+vt 0.666667 0.062500
+vt 0.645833 0.104167
+vt 0.645833 0.062500
+vt 0.625000 0.104167
+vt 0.625000 0.062500
+vt 0.604167 0.104167
+vt 0.604167 0.062500
+vt 0.583333 0.104167
+vt 0.583333 0.062500
+vt 0.562500 0.104167
+vt 0.541667 0.104167
+vt 0.541667 0.062500
+vt 0.520833 0.104167
+vt 0.520833 0.062500
+vt 0.854167 0.062500
+vt 0.854167 0.104167
+vt 0.833333 0.104167
+vt 0.833333 0.062500
+vt 0.812500 0.104167
+vt 0.812500 0.062500
+vt 0.791667 0.104167
+vt 0.791667 0.062500
+vt 0.770833 0.104167
+vt 0.770833 0.062500
+vt 0.750000 0.104167
+vt 0.750000 0.062500
+vt 0.729167 0.104167
+vt 0.729167 0.062500
+vt 0.708333 0.062500
+vt 0.708333 0.104167
+vn -0.125400 0.992100 0.000000
+vn -0.500000 0.866000 0.000000
+vn -0.278600 0.482700 0.830300
+vn -0.072400 0.526800 0.846900
+vn 0.216200 -0.374500 0.901600
+vn 0.058800 -0.465200 0.883200
+vn 0.500000 -0.866000 0.000000
+vn 0.136200 -0.990700 0.000000
+vn 0.216200 -0.374500 -0.901600
+vn 0.058800 -0.465200 -0.883200
+vn -0.278600 0.482700 -0.830300
+vn -0.072400 0.526800 -0.846900
+vn -0.866000 0.500000 0.000000
+vn -0.482700 0.278600 0.830300
+vn 0.374500 -0.216200 0.901600
+vn 0.866000 -0.500000 0.000000
+vn 0.374500 -0.216200 -0.901600
+vn -0.482700 0.278600 -0.830300
+vn -0.992100 0.125400 0.000000
+vn -0.526800 0.072400 0.846900
+vn 0.465200 -0.058800 0.883200
+vn 0.990700 -0.136200 0.000000
+vn 0.465200 -0.058800 -0.883200
+vn -0.526800 0.072400 -0.846900
+vn -0.278600 -0.482700 -0.830300
+vn -0.072400 -0.526800 -0.846900
+vn -0.125400 -0.992100 0.000000
+vn -0.500000 -0.866000 0.000000
+vn 0.216200 0.374500 -0.901600
+vn 0.058800 0.465200 -0.883200
+vn 0.500000 0.866000 0.000000
+vn 0.136200 0.990700 0.000000
+vn 0.216200 0.374500 0.901600
+vn 0.058800 0.465200 0.883200
+vn -0.278600 -0.482700 0.830300
+vn -0.072400 -0.526800 0.846900
+vn -0.482700 -0.278600 -0.830300
+vn -0.866000 -0.500000 0.000000
+vn 0.374500 0.216200 -0.901600
+vn 0.866000 0.500000 0.000000
+vn 0.374500 0.216200 0.901600
+vn -0.482700 -0.278600 0.830300
+vn -0.526800 -0.072400 -0.846900
+vn -0.992100 -0.125400 0.000000
+vn 0.465200 0.058800 -0.883200
+vn 0.990700 0.136200 0.000000
+vn 0.465200 0.058800 0.883200
+vn -0.526800 -0.072400 0.846900
+vn 0.000000 -0.447200 -0.894400
+vn 0.000000 0.483400 -0.875400
+vn 0.335000 0.483400 -0.808800
+vn 0.342300 -0.447200 -0.826300
+vn 0.619000 0.483400 -0.619000
+vn 0.632500 -0.447200 -0.632500
+vn 0.702200 -0.097100 0.705300
+vn 0.708700 0.000000 0.705500
+vn 0.835700 -0.043900 0.547400
+vn 0.785000 -0.090800 0.612800
+vn 0.660400 0.549400 0.511900
+vn 0.619000 0.483400 0.619000
+vn 0.632500 -0.447200 0.632500
+vn 0.714800 -0.435000 0.547700
+vn 0.335000 0.483400 0.808800
+vn 0.342300 -0.447200 0.826300
+vn 0.000000 0.483400 0.875400
+vn -0.000000 -0.447200 0.894400
+vn -0.335000 0.483400 0.808800
+vn -0.342300 -0.447200 0.826300
+vn -0.619000 0.483400 0.619000
+vn -0.632500 -0.447200 0.632500
+vn -0.808800 0.483400 0.335000
+vn -0.826300 -0.447200 0.342300
+vn -0.875400 0.483400 0.000000
+vn -0.894400 -0.447200 -0.000000
+vn -0.826300 -0.447200 -0.342300
+vn -0.808800 0.483400 -0.335000
+vn -0.619000 0.483400 -0.619000
+vn -0.632500 -0.447200 -0.632500
+vn -0.342300 -0.447200 -0.826300
+vn -0.335000 0.483400 -0.808800
+vn 0.653300 -0.707100 0.270600
+vn 0.500000 -0.707100 0.500000
+vn 0.707100 -0.707100 -0.000000
+vn 0.270600 -0.707100 0.653300
+vn -0.000000 -0.707100 0.707100
+vn -0.270600 -0.707100 0.653300
+vn -0.500000 -0.707100 0.500000
+vn -0.653300 -0.707100 0.270600
+vn -0.707100 -0.707100 -0.000000
+vn -0.653300 -0.707100 -0.270600
+vn -0.500000 -0.707100 -0.500000
+vn -0.270600 -0.707100 -0.653300
+vn -0.000000 -0.707100 -0.707100
+vn 0.270600 -0.707100 -0.653300
+vn 0.500000 -0.707100 -0.500000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.223600 -0.974700
+vn 0.373000 0.223600 -0.900500
+vn 0.382700 0.000000 -0.923900
+vn 0.653300 -0.707100 -0.270600
+vn -0.702400 0.132600 -0.699300
+vn -0.705500 0.000000 -0.708700
+vn -0.379900 0.000000 -0.925000
+vn -0.382300 0.124500 -0.915600
+vn 0.003200 0.000000 -1.000000
+vn -0.003100 0.114900 -0.993400
+vn -0.915500 0.138000 -0.377900
+vn -0.923400 0.000000 -0.383800
+vn -0.952900 0.303200 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.951900 0.241000 -0.189300
+vn -0.702400 0.132600 0.699300
+vn -0.705500 0.000000 0.708700
+vn -0.923400 0.000000 0.383800
+vn -0.915500 0.138000 0.377900
+vn -0.382300 0.124500 0.915600
+vn -0.379900 0.000000 0.925000
+vn -0.003100 0.114900 0.993400
+vn 0.003200 0.000000 1.000000
+vn 0.377900 0.105300 0.919800
+vn 0.385400 0.000000 0.922700
+vn 0.702200 0.097100 0.705300
+vn 0.632500 0.447200 0.632500
+vn 0.689200 0.223600 0.689200
+vn 0.892200 0.193700 0.408000
+vn 0.780600 0.444600 0.439300
+vn 0.867900 0.092100 0.488100
+vn 0.377900 0.105300 -0.919800
+vn 0.385400 0.000000 -0.922700
+vn 0.708700 0.000000 -0.705500
+vn 0.702200 0.097100 -0.705300
+vn -0.689200 0.223600 -0.689200
+vn -0.373000 0.223600 -0.900500
+vn -0.382700 0.000000 -0.923900
+vn -0.707100 0.000000 -0.707100
+vn -0.900500 0.223600 -0.373000
+vn -0.923900 0.000000 -0.382700
+vn -0.955400 0.226000 -0.190000
+vn -0.980800 0.000000 -0.195100
+vn -0.955400 0.226000 0.190000
+vn -0.974700 0.223600 0.000000
+vn -0.980800 0.000000 0.195100
+vn -0.689200 0.223600 0.689200
+vn -0.900500 0.223600 0.373000
+vn -0.923900 0.000000 0.382700
+vn -0.707100 0.000000 0.707100
+vn -0.373000 0.223600 0.900500
+vn -0.382700 0.000000 0.923900
+vn 0.000000 0.223600 0.974700
+vn 0.000000 0.000000 1.000000
+vn 0.373000 0.223600 0.900500
+vn 0.382700 0.000000 0.923900
+vn 0.707100 0.000000 0.707100
+vn 0.923900 0.000000 0.382700
+vn 0.689200 0.223600 -0.689200
+vn 0.892200 0.193700 -0.408000
+vn 0.923900 0.000000 -0.382700
+vn 0.707100 0.000000 -0.707100
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.500000 -0.866000
+vn 0.000000 -0.500000 -0.866000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.419600 -0.907700
+vn 0.000000 -0.419600 -0.907700
+vn 0.000000 -0.500000 0.866000
+vn 0.000000 0.500000 0.866000
+vn 0.000000 0.419600 0.907700
+vn 0.000000 -0.419600 0.907700
+vn -0.951900 0.241000 0.189300
+vn -0.915500 -0.138000 0.377900
+vn -0.990200 -0.139900 0.000000
+vn -0.826300 0.447200 0.342300
+vn -0.880600 0.440300 0.175200
+vn 0.000000 0.447200 -0.894400
+vn 0.342300 0.447200 -0.826300
+vn 0.632500 0.447200 -0.632500
+vn 0.342300 0.447200 0.826300
+vn 0.000000 0.447200 0.894400
+vn -0.342300 0.447200 0.826300
+vn -0.632500 0.447200 0.632500
+vn -0.880600 0.440300 -0.175200
+vn -0.826300 0.447200 -0.342300
+vn -0.632500 0.447200 -0.632500
+vn -0.342300 0.447200 -0.826300
+vn -0.702400 -0.132600 -0.699300
+vn -0.382300 -0.124500 -0.915600
+vn -0.003100 -0.114900 -0.993400
+vn -0.915500 -0.138000 -0.377900
+vn -0.702400 -0.132600 0.699300
+vn -0.382300 -0.124500 0.915600
+vn -0.003100 -0.114900 0.993400
+vn 0.377900 -0.105300 0.919800
+vn 0.377900 -0.105300 -0.919800
+vn 0.702200 -0.097100 -0.705300
+vn 1.000000 0.000000 -0.000000
+vn 0.785000 -0.090800 -0.612800
+vn 0.835700 -0.043900 -0.547400
+vn 0.660400 0.549400 -0.511900
+vn 0.714800 -0.435000 -0.547700
+vn 0.867900 0.092100 -0.488100
+vn 0.780600 0.444600 -0.439300
+vn 0.996600 -0.081500 0.000000
+vn 0.968000 0.044800 0.247000
+vn 0.972100 -0.234700 -0.000000
+vn 0.968000 0.044800 -0.247000
+vn 0.882100 -0.108900 -0.458300
+vn 0.872200 -0.489200 0.000000
+vn 0.891300 -0.453300 -0.000000
+vn 0.882100 -0.108900 0.458300
+vn 0.751400 -0.467700 0.465500
+vn 0.712000 -0.404100 0.574200
+vn 0.944000 0.329800 0.000000
+vn 0.742000 -0.670400 0.000000
+vn 0.712000 -0.404100 -0.574200
+vn 0.751400 -0.467700 -0.465500
+vn 0.800000 -0.600000 -0.000000
+vn 0.828000 -0.300400 0.473500
+vn 0.828000 -0.300400 -0.473500
+vn 0.000000 0.429200 0.903200
+vn -0.345600 0.429200 0.834400
+vn -0.184900 0.875500 0.446400
+vn 0.000000 0.875500 0.483200
+vn -0.638700 0.429200 0.638700
+vn -0.341700 0.875500 0.341700
+vn -0.638700 0.429200 -0.638700
+vn -0.718400 0.416700 -0.557000
+vn -0.822900 0.034200 -0.567100
+vn -0.440100 0.830700 -0.340900
+vn -0.341700 0.875500 -0.341700
+vn -0.345600 0.429200 -0.834400
+vn -0.184900 0.875500 -0.446400
+vn 0.000000 0.429200 -0.903200
+vn 0.000000 0.875500 -0.483200
+vn 0.345600 0.429200 -0.834400
+vn 0.184900 0.875500 -0.446400
+vn 0.638700 0.429200 -0.638700
+vn 0.341700 0.875500 -0.341700
+vn 0.834400 0.429200 -0.345600
+vn 0.446400 0.875500 -0.184900
+vn 0.903200 0.429200 0.000000
+vn 0.483200 0.875500 0.000000
+vn 0.834400 0.429200 0.345600
+vn 0.638700 0.429200 0.638700
+vn 0.341700 0.875500 0.341700
+vn 0.446400 0.875500 0.184900
+vn 0.345600 0.429200 0.834400
+vn 0.184900 0.875500 0.446400
+vn 0.000000 0.665700 0.746200
+vn -0.285500 0.665700 0.689400
+vn -0.373800 -0.214300 0.902400
+vn 0.000000 -0.214300 0.976700
+vn 0.638700 -0.429200 0.638700
+vn 0.345600 -0.429200 0.834400
+vn 0.000000 -0.429200 0.903200
+vn 0.834400 -0.429200 0.345600
+vn 0.903200 -0.429200 0.000000
+vn 0.889000 -0.422400 0.176800
+vn 0.638700 -0.429200 -0.638700
+vn 0.834400 -0.429200 -0.345600
+vn 0.345600 -0.429200 -0.834400
+vn 0.000000 -0.429200 -0.903200
+vn -0.345600 -0.429200 -0.834400
+vn -0.638700 -0.429200 -0.638700
+vn -0.789500 -0.426800 -0.441100
+vn -0.894000 -0.184200 -0.408400
+vn -0.690700 -0.214300 -0.690700
+vn -0.345600 -0.429200 0.834400
+vn -0.638700 -0.429200 0.638700
+vn 0.690700 -0.214300 0.690700
+vn 0.527600 0.665700 0.527600
+vn 0.285500 0.665700 0.689400
+vn 0.373800 -0.214300 0.902400
+vn 0.902400 -0.214300 0.373800
+vn 0.689400 0.665700 0.285600
+vn 0.957500 -0.216300 0.190500
+vn 0.980800 0.000000 0.195100
+vn 0.957500 -0.216300 -0.190500
+vn 0.980800 0.000000 -0.195100
+vn 0.976700 -0.214300 0.000000
+vn 0.690700 -0.214300 -0.690700
+vn 0.527600 0.665700 -0.527600
+vn 0.689400 0.665700 -0.285600
+vn 0.902400 -0.214300 -0.373800
+vn 0.373800 -0.214300 -0.902400
+vn 0.285500 0.665700 -0.689400
+vn 0.000000 -0.214300 -0.976700
+vn 0.000000 0.665700 -0.746200
+vn -0.373800 -0.214300 -0.902400
+vn -0.285500 0.665700 -0.689400
+vn -0.527600 0.665700 -0.527600
+vn -0.689400 0.665700 -0.285500
+vn -0.690700 -0.214300 0.690700
+vn -0.527600 0.665700 0.527600
+vn -0.689400 0.665700 0.285500
+vn -0.894000 -0.184200 0.408400
+vn 0.889000 -0.422400 -0.176800
+vn -0.746200 0.665700 0.000000
+vn -0.718400 0.416700 0.557000
+vn -0.822900 0.034200 0.567100
+vn -0.440100 0.830700 0.340900
+vn -0.789500 -0.426800 0.441100
+vn -0.997100 0.076000 0.000000
+vn -0.921600 -0.004000 -0.388000
+vn -0.940400 0.340000 0.000000
+vn -0.921600 -0.004000 0.388000
+vn -0.883400 0.468500 0.000000
+vn -0.721100 0.432100 -0.541500
+vn -0.273600 0.961800 0.000000
+vn -0.781700 0.623600 0.000000
+vn -0.721100 0.432100 0.541500
+vn -0.787000 0.276100 -0.551600
+vn -0.787000 0.276100 0.551600
+vn -0.239100 0.965900 -0.099000
+vn -0.461900 0.866000 -0.191300
+vn -0.575200 0.482700 0.660500
+vn -0.450700 0.551200 0.702200
+vn -0.145200 -0.374500 0.915700
+vn -0.236400 -0.429600 0.871500
+vn 0.461900 -0.866000 0.191300
+vn 0.239100 -0.965900 0.099000
+vn 0.544800 -0.374500 -0.750200
+vn 0.449100 -0.429600 -0.783400
+vn 0.060300 0.482700 -0.873700
+vn 0.177800 0.551200 -0.815200
+vn -0.800100 0.500000 -0.331400
+vn -0.763600 0.278600 0.582400
+vn 0.001000 -0.216200 0.976300
+vn 0.800100 -0.500000 0.331400
+vn 0.691100 -0.216200 -0.689700
+vn -0.128200 0.278600 -0.951800
+vn -0.832600 0.000000 0.553800
+vn 0.054500 0.000000 0.998500
+vn 0.744600 0.000000 -0.667500
+vn -0.197100 0.000000 -0.980300
+vn -0.800100 -0.500000 -0.331400
+vn -0.763600 -0.278600 0.582400
+vn 0.001000 0.216200 0.976300
+vn 0.800100 0.500000 0.331400
+vn 0.691100 0.216200 -0.689700
+vn -0.128200 -0.278600 -0.951800
+vn -0.461900 -0.866000 -0.191300
+vn -0.575200 -0.482700 0.660500
+vn -0.145200 0.374500 0.915700
+vn 0.461900 0.866000 0.191300
+vn 0.544800 0.374500 -0.750200
+vn 0.060300 -0.482700 -0.873700
+vn -0.239100 -0.965900 -0.099000
+vn -0.450700 -0.551200 0.702200
+vn -0.236400 0.429600 0.871500
+vn 0.239100 0.965900 0.099000
+vn 0.449100 0.429600 -0.783400
+vn 0.177800 -0.551200 -0.815200
+vn 0.285500 -0.665700 -0.689400
+vn 0.527600 -0.665700 -0.527600
+vn 0.689400 0.665700 -0.285500
+vn 0.689400 -0.665700 -0.285500
+vn 0.746200 0.665700 0.000000
+vn 0.746200 -0.665700 0.000000
+vn 0.689400 0.665700 0.285500
+vn 0.689400 -0.665700 0.285500
+vn 0.527600 -0.665700 0.527600
+vn 0.285500 -0.665700 0.689400
+vn 0.000000 -0.665700 0.746200
+vn -0.285500 -0.665700 0.689400
+vn -0.527600 -0.665700 0.527600
+vn -0.689400 -0.665700 0.285500
+vn -0.746200 -0.665700 0.000000
+vn -0.689400 -0.665700 -0.285500
+vn -0.527600 -0.665700 -0.527600
+vn -0.285500 -0.665700 -0.689400
+vn 0.657100 0.753700 0.000000
+vn 0.607100 0.753700 0.251500
+vn 0.000000 -0.665700 -0.746200
+vn -0.657100 0.753700 0.000000
+vn -0.607100 0.753700 -0.251500
+vn 0.251500 0.753700 0.607100
+vn 0.000000 0.753700 0.657100
+vn -0.251500 0.753700 -0.607100
+vn 0.000000 0.753700 -0.657100
+vn 0.464600 0.753700 -0.464600
+vn 0.607100 0.753700 -0.251500
+vn -0.464600 0.753700 0.464600
+vn -0.607100 0.753700 0.251500
+vn 0.464600 0.753700 0.464600
+vn -0.464600 0.753700 -0.464600
+vn -0.251500 0.753700 0.607100
+vn 0.251500 0.753700 -0.607100
+vn 0.175200 -0.440300 -0.880600
+vn 0.498800 -0.440300 -0.746500
+vn 0.746500 -0.440300 -0.498800
+vn 0.880600 -0.440300 -0.175200
+vn 0.880600 -0.440300 0.175200
+vn 0.746500 -0.440300 0.498800
+vn 0.498800 -0.440300 0.746500
+vn 0.175200 -0.440300 0.880600
+vn -0.175200 -0.440300 0.880600
+vn -0.498800 -0.440300 0.746500
+vn -0.746500 -0.440300 0.498800
+vn -0.880600 -0.440300 0.175200
+vn -0.880600 -0.440300 -0.175200
+vn -0.746500 -0.440300 -0.498800
+vn -0.175200 -0.440300 -0.880600
+vn -0.498800 -0.440300 -0.746500
+g Cylinder_Cylinder_decanter
+s 1
+f 55/1/1 61/2/2 62/3/3 56/4/4
+f 56/5/4 62/6/3 63/7/5 57/8/6
+f 57/8/6 63/7/5 64/9/7 58/10/8
+f 58/10/8 64/9/7 65/11/9 59/12/10
+f 59/12/10 65/11/9 66/13/11 60/14/12
+f 60/14/12 66/13/11 61/2/2 55/1/1
+f 61/2/2 67/15/13 68/16/14 62/3/3
+f 62/6/3 68/17/14 69/18/15 63/7/5
+f 63/7/5 69/18/15 70/19/16 64/9/7
+f 64/9/7 70/19/16 71/20/17 65/11/9
+f 65/11/9 71/20/17 72/21/18 66/13/11
+f 66/13/11 72/21/18 67/15/13 61/2/2
+f 67/15/13 73/22/19 74/23/20 68/16/14
+f 68/17/14 74/24/20 75/25/21 69/18/15
+f 69/18/15 75/25/21 76/26/22 70/19/16
+f 70/19/16 76/26/22 77/27/23 71/20/17
+f 71/20/17 77/27/23 78/28/24 72/21/18
+f 72/21/18 78/28/24 73/22/19 67/15/13
+f 49/29/25 43/30/26 48/31/27 54/32/28
+f 50/33/29 44/34/30 43/30/26 49/29/25
+f 51/35/31 45/36/32 44/34/30 50/33/29
+f 52/37/33 46/38/34 45/36/32 51/35/31
+f 53/39/35 47/40/36 46/38/34 52/37/33
+f 54/32/28 48/31/27 47/41/36 53/42/35
+f 79/43/37 49/29/25 54/32/28 84/44/38
+f 80/45/39 50/33/29 49/29/25 79/43/37
+f 81/46/40 51/35/31 50/33/29 80/45/39
+f 82/47/41 52/37/33 51/35/31 81/46/40
+f 83/48/42 53/39/35 52/37/33 82/47/41
+f 84/44/38 54/32/28 53/42/35 83/49/42
+f 85/50/43 79/43/37 84/44/38 90/51/44
+f 86/52/45 80/45/39 79/43/37 85/50/43
+f 87/53/46 81/46/40 80/45/39 86/52/45
+f 88/54/47 82/47/41 81/46/40 87/53/46
+f 89/55/48 83/48/42 82/47/41 88/54/47
+f 90/51/44 84/44/38 83/49/42 89/56/48
+f 291/57/49 112/58/50 114/59/51 320/60/52
+f 320/60/52 114/59/51 116/61/53 319/62/54
+f 316/63/55 217/64/56 218/65/57 317/66/58
+f 122/67/59 124/68/60 316/63/61 317/66/62
+f 316/63/61 124/68/60 126/69/63 315/70/64
+f 315/70/64 126/69/63 128/71/65 314/72/66
+f 314/72/66 128/71/65 130/73/67 313/74/68
+f 313/74/68 130/73/67 132/75/69 312/76/70
+f 312/76/70 132/75/69 134/77/71 311/78/72
+f 311/78/72 134/77/71 136/79/73 310/80/74
+f 309/81/75 138/82/76 140/83/77 308/84/78
+f 307/85/79 142/86/80 112/58/50 291/57/49
+f 308/84/78 140/83/77 142/86/80 307/85/79
+f 121/87/81 180/88/81 181/89/82 123/90/82
+f 119/91/83 179/92/83 180/88/81 121/87/81
+f 125/93/84 182/94/84 183/95/85 127/96/85
+f 127/96/85 183/95/85 184/97/86 129/98/86
+f 129/98/86 184/97/86 185/99/87 131/100/87
+f 131/100/87 185/99/87 186/101/88 133/102/88
+f 133/102/88 186/101/88 187/103/89 135/104/89
+f 135/104/89 187/103/89 188/105/90 137/106/90
+f 137/106/90 188/105/90 189/107/91 139/108/91
+f 141/109/92 190/110/92 206/111/93 111/112/93
+f 111/112/93 206/111/93 176/113/94 113/114/94
+f 139/108/91 189/107/91 190/110/92 141/109/92
+f 113/114/94 176/113/94 177/115/95 115/116/95
+f 227/117/96 175/118/97 205/119/98 228/120/99
+f 123/90/82 181/89/82 182/94/84 125/93/84
+f 117/121/100 178/122/100 179/123/83 119/124/83
+f 115/116/95 177/115/95 178/122/100 117/121/100
+f 293/125/101 209/126/102 208/127/103 292/128/104
+f 292/128/104 208/127/103 207/129/105 306/130/106
+f 294/131/107 210/132/108 209/126/102 293/125/101
+f 310/80/74 136/79/73 138/82/76 309/81/75
+f 295/133/109 211/134/110 210/132/108 294/131/107 322/135/111
+f 297/136/112 213/137/113 212/138/114 296/139/115
+f 298/140/116 214/141/117 213/137/113 297/136/112
+f 299/142/118 215/143/119 214/141/117 298/140/116
+f 300/144/120 216/145/121 215/143/119 299/142/118
+f 301/146/122 217/64/56 216/145/121 300/144/120
+f 301/146/123 200/147/124 201/148/125 302/149/126
+f 301/146/122 302/149/127 218/65/57 217/64/56
+f 305/150/128 222/151/129 221/152/130 304/153/131
+f 306/130/106 207/129/105 222/151/129 305/150/128
+f 192/154/132 191/155/133 242/156/134 241/157/135
+f 191/155/133 175/118/97 227/117/96 242/156/134
+f 193/158/136 192/154/132 241/157/135 240/159/137
+f 287/160/138 193/158/136 240/159/137 289/161/139
+f 288/162/140 194/163/141 239/164/110 290/165/142
+f 196/166/143 195/167/144 238/168/145 237/169/146
+f 197/170/147 196/166/143 237/169/146 236/171/148
+f 198/172/149 197/170/147 236/171/148 235/173/150
+f 199/174/151 198/172/149 235/173/150 234/175/152
+f 200/147/124 199/174/151 234/175/152 233/176/153
+f 201/148/125 200/147/124 233/176/153 232/177/154
+f 204/178/155 203/179/156 230/180/157 229/181/158
+f 205/119/98 204/178/155 229/181/158 228/120/99
+f 85/50/43 78/28/24 77/27/23 86/52/45
+f 85/50/43 90/51/44 73/22/19 78/28/24
+f 74/23/20 73/22/19 90/51/44 89/56/48
+f 75/25/21 74/24/20 89/55/48 88/54/47
+f 76/26/22 75/25/21 88/54/47 87/53/46
+f 86/52/45 77/27/23 76/26/22 87/53/46
+f 44/34/30 45/36/32 245/182/159 244/183/160
+f 48/31/27 43/30/26 243/184/161 248/185/162
+f 254/186/163 253/187/164 59/12/10 60/14/12
+f 47/41/36 48/31/27 248/185/162 247/188/165
+f 58/10/8 59/12/10 253/187/164 252/189/162
+f 43/30/26 44/34/30 244/183/160 243/184/161
+f 45/36/32 46/38/34 246/190/166 245/182/159
+f 46/38/34 47/40/36 247/191/165 246/190/166
+f 60/14/12 55/1/1 249/192/159 254/186/163
+f 55/1/1 56/4/4 250/193/167 249/192/159
+f 57/8/6 58/10/8 252/189/162 251/194/168
+f 251/194/168 250/195/167 56/5/4 57/8/6
+f 195/167/144 288/162/140 290/165/142 238/168/145
+f 194/163/141 287/160/138 289/161/139 239/164/110
+f 296/139/115 212/138/114 211/134/110 295/133/109 321/196/169
+f 311/78/170 310/80/171 211/134/110 212/138/114
+f 194/163/141 295/133/109 322/135/111 287/160/138
+f 195/167/144 296/139/172 321/196/173 288/162/140
+f 175/118/97 306/130/174 305/150/175 205/119/98
+f 205/119/98 305/150/175 304/153/176 204/178/155
+f 200/147/124 301/146/123 300/144/177 199/174/151
+f 199/174/151 300/144/177 299/142/178 198/172/149
+f 198/172/149 299/142/178 298/140/179 197/170/147
+f 197/170/147 298/140/179 297/136/180 196/166/143
+f 196/166/143 297/136/180 296/139/172 195/167/144
+f 288/162/140 321/196/169 295/133/109 194/163/141
+f 287/160/138 322/135/181 294/131/182 193/158/136
+f 193/158/136 294/131/182 293/125/183 192/154/132
+f 191/155/133 292/128/184 306/130/174 175/118/97
+f 192/154/132 293/125/183 292/128/184 191/155/133
+f 209/126/102 308/84/185 307/85/186 208/127/103
+f 208/127/103 307/85/186 291/57/187 207/129/105
+f 210/132/108 309/81/188 308/84/185 209/126/102
+f 213/137/113 312/76/189 311/78/170 212/138/114
+f 214/141/117 313/74/190 312/76/189 213/137/113
+f 215/143/119 314/72/191 313/74/190 214/141/117
+f 216/145/121 315/70/192 314/72/191 215/143/119
+f 217/64/56 316/63/55 315/70/192 216/145/121
+f 222/151/129 320/60/193 319/62/194 221/152/130
+f 207/129/105 291/57/187 320/60/193 222/151/129
+f 229/181/158 230/180/157 178/122/157 177/115/158
+f 230/180/157 231/197/195 179/123/195 178/122/157
+f 231/198/195 232/177/154 180/88/154 179/92/195
+f 232/177/154 233/176/153 181/89/153 180/88/154
+f 233/176/153 234/175/152 182/94/152 181/89/153
+f 234/175/152 235/173/150 183/95/150 182/94/152
+f 235/173/150 236/171/148 184/97/148 183/95/150
+f 236/171/148 237/169/146 185/99/146 184/97/148
+f 237/169/146 238/168/145 186/101/145 185/99/146
+f 310/80/171 309/81/188 210/132/108 211/134/110
+f 238/168/145 290/165/142 239/164/110 187/103/110 186/101/145
+f 240/159/137 241/157/135 189/107/135 188/105/137
+f 242/156/134 227/117/96 206/111/96 190/110/134
+f 241/157/135 242/156/134 190/110/134 189/107/135
+f 206/111/96 227/117/96 228/120/99 176/113/99
+f 228/120/99 229/181/158 177/115/158 176/113/99
+f 318/199/196 220/200/197 221/152/130 319/62/194
+f 118/201/198 318/199/199 319/62/54 116/61/53
+f 220/200/197 303/202/200 304/153/131 221/152/130
+f 304/153/176 303/202/201 203/179/156 204/178/155
+f 231/197/195 230/180/157 203/179/156 202/203/202
+f 231/198/195 202/204/202 201/148/125 232/177/154
+f 201/148/125 202/204/202 225/205/203
+f 225/205/203 202/204/202 324/206/204
+f 226/207/205 324/208/204 202/203/202
+f 202/203/202 203/179/156 226/207/205
+f 303/202/201 226/207/205 203/179/156
+f 303/202/200 220/200/197 226/207/206
+f 219/209/207 324/208/208 226/207/206
+f 324/206/208 219/210/207 225/205/209
+f 302/149/126 201/148/125 225/205/203
+f 302/149/127 225/205/209 218/65/57
+f 317/66/58 218/65/57 224/211/210
+f 317/66/62 224/211/211 122/67/59
+f 122/67/59 224/211/211 120/212/212
+f 224/211/211 323/213/213 120/212/212
+f 223/214/214 120/215/212 323/216/213
+f 120/215/212 223/214/214 118/201/198
+f 318/199/199 118/201/198 223/214/214
+f 318/199/196 223/214/215 220/200/197
+f 219/209/207 223/214/215 323/216/216
+f 219/210/207 323/213/216 224/211/210
+f 225/205/209 326/217/217 218/65/57
+f 224/211/210 218/65/57 326/217/217
+f 219/210/207 326/217/217 225/205/209
+f 219/210/207 224/211/210 326/217/217
+f 223/214/215 219/209/207 325/218/218
+f 226/207/206 325/218/218 219/209/207
+f 220/200/197 223/214/215 325/218/218
+f 220/200/197 325/218/218 226/207/206
+f 239/164/110 289/161/139 240/159/137 188/105/137 187/103/110
+f 399/219/219 428/220/220 328/221/221 327/222/222
+f 428/220/220 427/223/223 329/224/224 328/221/221
+f 424/225/225 425/226/226 370/227/227 369/228/135
+f 332/229/228 425/226/226 424/225/225 333/230/229
+f 424/225/225 423/231/230 334/232/231 333/230/229
+f 423/231/230 422/233/232 335/234/233 334/232/231
+f 422/233/232 421/235/234 336/236/235 335/234/233
+f 421/235/234 420/237/236 337/238/237 336/236/235
+f 420/237/236 419/239/238 338/240/239 337/238/237
+f 419/239/238 418/241/240 339/242/241 338/240/239
+f 417/243/242 416/244/243 341/245/244 340/246/245
+f 415/247/246 399/219/219 327/222/222 342/248/247
+f 416/244/243 415/247/246 342/248/247 341/245/244
+f 379/249/248 380/250/249 358/251/250 343/252/251
+f 401/253/252 400/254/253 360/255/152 361/256/153
+f 400/254/253 414/257/254 359/258/150 360/255/152
+f 402/259/255 401/253/252 361/256/153 362/260/154
+f 418/241/240 417/243/242 340/246/245 339/242/241
+f 403/261/256 430/262/257 402/259/255 362/260/154 363/263/195
+f 405/264/258 404/265/259 364/266/157 365/267/158
+f 406/268/260 405/264/258 365/267/158 366/269/99
+f 407/270/261 406/268/260 366/269/99 367/271/96
+f 408/272/262 407/270/261 367/271/96 368/273/134
+f 409/274/263 408/272/262 368/273/134 369/228/135
+f 409/274/263 410/275/264 354/276/265 353/277/266
+f 409/274/263 369/228/135 370/227/227 410/275/264
+f 413/278/267 412/279/268 373/280/146 374/281/148
+f 414/257/254 413/278/267 374/281/148 359/258/150
+f 345/282/269 393/283/270 394/284/271 344/285/272
+f 344/285/272 394/284/271 379/249/248 343/252/251
+f 346/286/273 392/287/274 393/283/270 345/282/269
+f 395/288/275 397/289/276 392/287/274 346/286/273
+f 396/290/277 398/291/278 391/292/195 347/293/279
+f 349/294/280 389/295/281 390/296/282 348/297/283
+f 350/298/284 388/299/285 389/295/281 349/294/280
+f 351/300/286 387/301/287 388/299/285 350/298/284
+f 352/302/288 386/303/289 387/301/287 351/300/286
+f 353/277/266 385/304/290 386/303/289 352/302/288
+f 354/276/265 384/305/291 385/304/290 353/277/266
+f 357/306/292 381/307/293 382/308/294 356/309/295
+f 358/251/250 380/250/249 381/307/293 357/306/292
+f 348/297/283 390/296/282 398/291/278 396/290/277
+f 347/293/279 391/292/195 397/289/276 395/288/275
+f 404/265/259 429/310/296 403/261/256 363/263/195 364/266/157
+f 419/239/238 364/266/157 363/263/195 418/241/240
+f 347/293/279 395/288/275 430/262/257 403/261/256
+f 348/297/283 396/290/277 429/310/296 404/265/259
+f 343/252/251 358/251/250 413/278/267 414/257/254
+f 358/251/250 357/306/292 412/279/268 413/278/267
+f 353/277/266 352/302/288 408/272/262 409/274/263
+f 352/302/288 351/300/286 407/270/261 408/272/262
+f 351/300/286 350/298/284 406/268/260 407/270/261
+f 350/298/284 349/294/280 405/264/258 406/268/260
+f 349/294/280 348/297/283 404/265/259 405/264/258
+f 396/290/277 347/293/279 403/261/256 429/310/296
+f 395/288/275 346/286/273 402/259/255 430/262/257
+f 346/286/273 345/282/269 401/253/252 402/259/255
+f 344/285/272 343/252/251 414/257/254 400/254/253
+f 345/282/269 344/285/272 400/254/253 401/253/252
+f 361/256/153 360/255/152 415/247/246 416/244/243
+f 360/255/152 359/258/150 399/219/219 415/247/246
+f 362/260/154 361/256/153 416/244/243 417/243/242
+f 365/267/158 364/266/157 419/239/238 420/237/236
+f 366/269/99 365/267/158 420/237/236 421/235/234
+f 367/271/96 366/269/99 421/235/234 422/233/232
+f 368/273/134 367/271/96 422/233/232 423/231/230
+f 369/228/135 368/273/134 423/231/230 424/225/225
+f 374/281/148 373/280/146 427/223/223 428/220/220
+f 359/258/150 374/281/148 428/220/220 399/219/219
+f 380/311/249 379/312/248 435/313/159
+f 381/314/293 380/311/249 435/313/159
+f 382/315/294 381/314/293 435/313/159
+f 383/316/297 382/315/294 435/313/159
+f 384/317/291 383/318/297 435/313/159
+f 385/319/290 384/317/291 435/313/159
+f 386/320/289 385/319/290 435/313/159
+f 387/312/287 386/320/289 435/313/159
+f 388/311/285 387/312/287 435/313/159
+f 418/241/240 363/263/195 362/260/154 417/243/242
+f 389/314/281 388/311/285 435/313/159
+f 390/315/282 389/314/281 435/313/159
+f 391/316/159 390/315/282 435/313/159
+f 392/317/274 391/318/159 435/313/159
+f 393/319/270 392/317/274 435/313/159
+f 394/320/271 393/319/270 435/313/159
+f 426/321/298 427/223/223 373/280/146 372/322/299
+f 330/323/300 329/224/224 427/223/223 426/321/298
+f 372/322/299 373/280/146 412/279/268 411/324/301
+f 412/279/268 357/306/292 356/309/295 411/324/301
+f 383/325/297 355/326/302 356/309/295 382/308/294
+f 383/327/297 384/305/291 354/276/265 355/328/302
+f 354/276/265 377/329/303 355/328/302
+f 377/329/303 432/330/304 355/328/302
+f 378/331/305 355/326/302 432/332/304
+f 355/326/302 378/331/305 356/309/295
+f 411/324/301 356/309/295 378/331/305
+f 411/324/301 378/331/305 372/322/299
+f 371/333/306 378/331/305 432/332/304
+f 432/330/304 377/329/303 371/334/306
+f 410/275/264 377/329/303 354/276/265
+f 410/275/264 370/227/227 377/329/303
+f 425/226/226 376/335/307 370/227/227
+f 425/226/226 332/229/228 376/335/307
+f 332/229/228 331/336/308 376/335/307
+f 376/335/307 331/336/308 431/337/309
+f 375/338/310 431/339/309 331/340/308
+f 331/340/308 330/323/300 375/338/310
+f 426/321/298 375/338/310 330/323/300
+f 426/321/298 372/322/299 375/338/310
+f 371/333/306 431/339/309 375/338/310
+f 371/334/306 376/335/307 431/337/309
+f 377/329/303 370/227/227 434/341/311
+f 376/335/307 434/341/311 370/227/227
+f 371/334/306 377/329/303 434/341/311
+f 371/334/306 434/341/311 376/335/307
+f 375/338/310 433/342/312 371/333/306
+f 378/331/305 371/333/306 433/342/312
+f 372/322/299 433/342/312 375/338/310
+f 372/322/299 378/331/305 433/342/312
+f 379/312/248 394/320/271 435/313/159
+f 122/67/59 332/343/228 333/344/229 124/68/60
+f 122/67/59 120/212/212 331/345/308 332/343/228
+f 120/215/212 118/201/198 330/346/300 331/347/308
+f 116/61/53 329/348/224 330/346/300 118/201/198
+f 114/59/51 328/349/221 329/348/224 116/61/53
+f 112/58/50 327/350/222 328/349/221 114/59/51
+f 142/86/80 342/351/247 327/350/222 112/58/50
+f 140/83/77 341/352/244 342/351/247 142/86/80
+f 138/82/76 340/353/245 341/352/244 140/83/77
+f 136/79/73 339/354/241 340/353/245 138/82/76
+f 134/77/71 338/355/239 339/354/241 136/79/73
+f 132/75/69 337/356/237 338/355/239 134/77/71
+f 130/73/67 336/357/235 337/356/237 132/75/69
+f 128/71/65 335/358/233 336/357/235 130/73/67
+f 126/69/63 334/359/231 335/358/233 128/71/65
+f 124/68/60 333/344/229 334/359/231 126/69/63
+g Cylinder_Cylinder_coffee-cup
+f 1/112/313 7/234/314 8/236/315 2/109/316
+f 2/109/316 8/236/315 9/238/317 3/108/318
+f 3/108/318 9/238/317 10/240/319 4/106/320
+f 4/121/320 10/229/319 11/230/321 5/116/322
+f 5/116/322 11/230/321 12/232/323 6/114/324
+f 6/114/324 12/232/323 7/234/314 1/112/313
+f 7/234/314 13/271/325 14/269/326 8/236/315
+f 8/236/315 14/269/326 15/267/327 9/238/317
+f 9/238/317 15/267/327 16/266/328 10/240/319
+f 10/229/319 16/227/328 17/228/329 11/230/321
+f 11/230/321 17/228/329 18/273/330 12/232/323
+f 12/232/323 18/273/330 13/271/325 7/234/314
+f 13/271/325 19/300/137 20/298/331 14/269/326
+f 14/269/326 20/298/331 21/294/332 15/267/327
+f 15/267/327 21/294/332 22/297/154 16/266/328
+f 16/227/328 22/276/154 23/277/333 17/228/329
+f 17/228/329 23/277/333 24/302/334 18/273/330
+f 18/273/330 24/302/334 19/300/137 13/271/325
+f 19/96/137 25/222/335 26/221/336 20/93/331
+f 20/93/331 26/221/336 27/224/337 21/90/332
+f 21/90/332 27/224/337 28/323/338 22/87/154
+f 22/102/154 28/246/338 29/245/339 23/100/333
+f 23/100/333 29/245/339 30/248/340 24/98/334
+f 24/98/334 30/248/340 25/222/335 19/96/137
+f 25/222/335 31/258/341 32/281/342 26/221/336
+f 26/221/336 32/281/342 33/280/343 27/224/337
+f 27/224/337 33/280/343 34/322/344 28/323/338
+f 28/246/338 34/260/344 35/256/345 29/245/339
+f 29/245/339 35/256/345 36/255/346 30/248/340
+f 30/248/340 36/255/346 31/258/341 25/222/335
+f 31/258/341 37/252/347 38/251/348 32/281/342
+f 32/281/342 38/251/348 39/306/349 33/280/343
+f 33/280/343 39/306/349 40/309/350 34/322/344
+f 34/260/344 40/286/350 41/282/351 35/256/345
+f 35/256/345 41/282/351 42/285/352 36/255/346
+f 36/255/346 42/285/352 37/252/347 31/258/341
+f 143/360/353 144/143/285 146/141/281 145/361/354
+f 145/361/354 146/141/281 148/137/355 147/362/356
+f 147/362/356 148/137/355 150/138/357 149/363/358
+f 149/363/358 150/138/357 152/134/359 151/364/360
+f 151/364/360 152/134/359 154/132/270 153/365/361
+f 153/365/361 154/132/270 156/126/271 155/366/362
+f 155/366/362 156/126/271 158/127/248 157/367/363
+f 157/367/363 158/127/248 160/129/249 159/368/364
+f 159/368/364 160/129/249 162/151/293 161/369/365
+f 161/369/365 162/151/293 164/152/294 163/370/366
+f 163/370/366 164/152/294 166/200/297 165/371/367
+f 165/371/367 166/200/297 168/209/291 167/372/368
+f 167/373/368 168/210/291 170/65/290 169/374/369
+f 169/374/369 170/65/290 172/64/289 171/375/370
+f 168/209/291 166/200/297 447/201/371 448/215/372
+f 173/376/373 174/145/287 144/143/285 143/360/353
+f 171/375/370 172/64/289 174/145/287 173/376/373
+f 152/134/359 150/138/357 439/77/374 440/79/375
+f 174/145/287 172/64/289 450/68/376 451/69/377
+f 158/127/248 156/126/271 442/83/378 443/86/379
+f 164/152/294 162/151/293 445/59/380 446/61/381
+f 148/137/355 146/141/281 437/73/382 438/75/383
+f 170/65/290 168/210/291 448/212/372 449/67/384
+f 154/132/270 152/134/359 440/79/375 441/82/385
+f 144/143/285 174/145/287 451/69/377 436/71/386
+f 146/141/281 144/143/285 436/71/386 437/73/382
+f 160/129/249 158/127/248 443/86/379 444/58/387
+f 166/200/297 164/152/294 446/61/381 447/201/371
+f 150/138/357 148/137/355 438/75/383 439/77/374
+f 172/64/289 170/65/290 449/67/384 450/68/376
+f 156/126/271 154/132/270 441/82/385 442/83/378
+f 162/151/293 160/129/249 444/58/387 445/59/380
+f 440/79/375 439/77/374 455/377/110 456/378/137
+f 451/69/377 450/68/376 466/379/152 467/380/150
+f 438/75/383 437/73/382 453/381/146 454/382/145
+f 449/67/384 448/212/372 464/383/154 465/384/153
+f 447/201/371 446/61/381 462/385/157 463/386/195
+f 445/59/380 444/58/387 460/387/99 461/388/158
+f 443/86/379 442/83/378 458/389/134 459/390/96
+f 441/82/385 440/79/375 456/378/137 457/391/135
+f 436/71/386 451/69/377 467/380/150 452/392/148
+f 439/77/374 438/75/383 454/382/145 455/377/110
+f 450/68/376 449/67/384 465/384/153 466/379/152
+f 437/73/382 436/71/386 452/392/148 453/381/146
+f 448/215/372 447/201/371 463/386/195 464/393/154
+f 446/61/381 445/59/380 461/388/158 462/385/157
+f 444/58/387 443/86/379 459/390/96 460/387/99
+f 442/83/378 441/82/385 457/391/135 458/389/134
+f 143/394/353 145/395/354 469/396/162
+f 453/397/159 452/398/159 468/399/159
+f 452/398/159 467/400/159 468/399/159
+f 467/400/159 466/401/159 468/399/159
+f 466/401/159 465/402/159 468/399/159
+f 465/402/159 464/403/159 468/399/159
+f 464/403/159 463/404/159 468/399/159
+f 463/404/159 462/405/159 468/399/159
+f 462/405/159 461/406/159 468/399/159
+f 461/406/159 460/407/159 468/399/159
+f 460/407/159 459/408/159 468/399/159
+f 459/408/159 458/409/159 468/399/159
+f 458/409/159 457/410/159 468/399/159
+f 457/410/159 456/411/159 468/399/159
+f 456/411/159 455/412/159 468/399/159
+f 455/412/159 454/413/159 468/399/159
+f 454/413/159 453/397/159 468/399/159
+f 145/395/354 147/414/356 469/396/162
+f 147/414/356 149/415/358 469/396/162
+f 149/415/358 151/416/360 469/396/162
+f 151/416/360 153/417/361 469/396/162
+f 153/417/361 155/418/362 469/396/162
+f 155/418/362 157/419/363 469/396/162
+f 157/419/363 159/420/364 469/396/162
+f 159/420/364 161/421/365 469/396/162
+f 161/421/365 163/422/366 469/396/162
+f 163/422/366 165/423/367 469/396/162
+f 165/423/367 167/424/368 469/396/162
+f 167/424/368 169/425/369 469/396/162
+f 169/425/369 171/426/370 469/396/162
+f 171/426/370 173/427/373 469/396/162
+f 173/427/373 143/394/353 469/396/162
+g Cylinder_Cylinder_machine-case
+s off
+f 100/428/110 92/429/110 91/430/110 109/431/110
+f 100/432/96 101/433/96 93/434/96 92/435/96
+f 109/431/110 91/430/110 95/436/110 107/437/110
+f 91/438/162 92/439/162 93/440/162 94/441/162
+f 98/442/159 97/443/159 96/444/159 95/445/159
+f 95/436/110 96/446/110 104/447/110 107/437/110
+f 96/448/96 97/449/96 105/450/96 104/451/96
+f 97/446/195 98/436/195 110/437/195 105/447/195
+f 103/452/150 91/453/150 94/454/150 102/455/150 106/456/150 98/457/150 95/458/150 99/459/150
+f 108/431/195 110/437/195 98/436/195 94/430/195
+f 101/428/195 108/431/195 94/430/195 93/429/195
+f 105/460/162 110/461/162 107/462/162 104/463/162
+f 109/432/96 107/451/96 110/450/96 108/433/96
+f 101/464/159 100/465/159 109/466/159 108/467/159
+f 255/468/388 256/469/388 258/470/388 257/471/388
+f 257/471/389 258/470/389 260/472/389 259/473/389
+f 259/473/390 260/472/390 262/474/390 261/475/390
+f 261/475/391 262/474/391 264/476/391 263/477/391
+f 263/477/392 264/476/392 266/478/392 265/479/392
+f 265/479/393 266/478/393 268/480/393 267/38/393
+f 267/38/394 268/480/394 270/481/394 269/482/394
+f 269/482/395 270/481/395 272/483/395 271/484/395
+f 271/485/396 272/486/396 274/487/396 273/488/396
+f 273/488/397 274/487/397 276/489/397 275/490/397
+f 275/490/398 276/489/398 278/491/398 277/492/398
+f 277/492/399 278/491/399 280/493/399 279/494/399
+f 279/494/400 280/493/400 282/495/400 281/496/400
+f 281/496/401 282/495/401 284/497/401 283/498/401
+f 285/499/402 286/500/402 256/469/402 255/468/402
+f 283/498/403 284/497/403 286/500/403 285/499/403
diff --git a/homedecor_modpack/homedecor/models/homedecor_copper_pans.obj b/homedecor_modpack/homedecor/models/homedecor_copper_pans.obj
new file mode 100644
index 0000000..20f8437
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_copper_pans.obj
@@ -0,0 +1,456 @@
+# Blender v2.73 (sub 0) OBJ File: 'copper-pots.blend'
+# www.blender.org
+o Cylinder.001
+v 0.249830 -0.500000 -0.187501
+v 0.249830 -0.312500 -0.187501
+v 0.307259 -0.500000 -0.163713
+v 0.307259 -0.312500 -0.163713
+v 0.351213 -0.500000 -0.119759
+v 0.351213 -0.312500 -0.119759
+v 0.375001 -0.500000 -0.062330
+v 0.375001 -0.312500 -0.062330
+v 0.375001 -0.500000 -0.000170
+v 0.375001 -0.312500 -0.000170
+v 0.351213 -0.500000 0.057259
+v 0.351213 -0.312500 0.057259
+v 0.307259 -0.500000 0.101213
+v 0.307259 -0.312500 0.101213
+v 0.249830 -0.500000 0.125001
+v 0.249830 -0.312500 0.125001
+v 0.187670 -0.500000 0.125001
+v 0.187670 -0.312500 0.125001
+v 0.130241 -0.500000 0.101213
+v 0.130241 -0.312500 0.101213
+v 0.086287 -0.500000 0.057259
+v 0.086287 -0.312500 0.057259
+v 0.062499 -0.500000 -0.000170
+v 0.062499 -0.312500 -0.000170
+v 0.062499 -0.500000 -0.062330
+v 0.062499 -0.312500 -0.062330
+v 0.086287 -0.500000 -0.119759
+v 0.086287 -0.312500 -0.119759
+v 0.130241 -0.500000 -0.163713
+v 0.130241 -0.312500 -0.163713
+v 0.187670 -0.500000 -0.187501
+v 0.187670 -0.312500 -0.187501
+v 0.187500 -0.359375 -0.187500
+v 0.187500 -0.359375 -0.500000
+v 0.250000 -0.359375 -0.500000
+v 0.250000 -0.359375 -0.187500
+v 0.187500 -0.328125 -0.187500
+v 0.187500 -0.328125 -0.500000
+v 0.250000 -0.328125 -0.500000
+v 0.250000 -0.328125 -0.187500
+v 0.245945 -0.312500 -0.167969
+v 0.296195 -0.312500 -0.147154
+v 0.334654 -0.312500 -0.108695
+v 0.355469 -0.312500 -0.058445
+v 0.355469 -0.312500 -0.004055
+v 0.334654 -0.312500 0.046195
+v 0.296195 -0.312500 0.084654
+v 0.245945 -0.312500 0.105469
+v 0.191555 -0.312500 0.105469
+v 0.141305 -0.312500 0.084654
+v 0.102846 -0.312500 0.046195
+v 0.082031 -0.312500 -0.004055
+v 0.082031 -0.312500 -0.058445
+v 0.102846 -0.312500 -0.108695
+v 0.141305 -0.312500 -0.147155
+v 0.191555 -0.312500 -0.167969
+v 0.245945 -0.480469 -0.167969
+v 0.296195 -0.480469 -0.147154
+v 0.334654 -0.480469 -0.108695
+v 0.355469 -0.480469 -0.058445
+v 0.355469 -0.480469 -0.004055
+v 0.334654 -0.480469 0.046195
+v 0.296195 -0.480469 0.084654
+v 0.245945 -0.480469 0.105469
+v 0.191555 -0.480469 0.105469
+v 0.141305 -0.480469 0.084654
+v 0.102846 -0.480469 0.046195
+v 0.082031 -0.480469 -0.004055
+v 0.082031 -0.480469 -0.058445
+v 0.102846 -0.480469 -0.108695
+v 0.141305 -0.480469 -0.147155
+v 0.191555 -0.480469 -0.167969
+v 0.218750 -0.500000 -0.031250
+v 0.218750 -0.480469 -0.031250
+v -0.187670 -0.500000 -0.000001
+v -0.187670 -0.312500 -0.000001
+v -0.130241 -0.500000 0.023787
+v -0.130241 -0.312500 0.023787
+v -0.086287 -0.500000 0.067741
+v -0.086287 -0.312500 0.067741
+v -0.062499 -0.500000 0.125170
+v -0.062499 -0.312500 0.125170
+v -0.062499 -0.500000 0.187330
+v -0.062499 -0.312500 0.187330
+v -0.086287 -0.500000 0.244759
+v -0.086287 -0.312500 0.244759
+v -0.130241 -0.500000 0.288713
+v -0.130241 -0.312500 0.288713
+v -0.187670 -0.500000 0.312501
+v -0.187670 -0.312500 0.312501
+v -0.249830 -0.500000 0.312501
+v -0.249830 -0.312500 0.312501
+v -0.307259 -0.500000 0.288713
+v -0.307259 -0.312500 0.288713
+v -0.351213 -0.500000 0.244759
+v -0.351213 -0.312500 0.244759
+v -0.375001 -0.500000 0.187330
+v -0.375001 -0.312500 0.187330
+v -0.375001 -0.500000 0.125170
+v -0.375001 -0.312500 0.125170
+v -0.351213 -0.500000 0.067741
+v -0.351213 -0.312500 0.067741
+v -0.307259 -0.500000 0.023787
+v -0.307259 -0.312500 0.023787
+v -0.249830 -0.500000 -0.000001
+v -0.249830 -0.312500 -0.000001
+v -0.250000 -0.359375 0.000000
+v -0.250000 -0.359375 -0.312500
+v -0.187500 -0.359375 -0.312500
+v -0.187500 -0.359375 0.000000
+v -0.250000 -0.328125 0.000000
+v -0.250000 -0.328125 -0.312500
+v -0.187500 -0.328125 -0.312500
+v -0.187500 -0.328125 0.000000
+v -0.191555 -0.312500 0.019531
+v -0.141305 -0.312500 0.040346
+v -0.102846 -0.312500 0.078805
+v -0.082031 -0.312500 0.129055
+v -0.082031 -0.312500 0.183445
+v -0.102846 -0.312500 0.233695
+v -0.141305 -0.312500 0.272154
+v -0.191555 -0.312500 0.292969
+v -0.245945 -0.312500 0.292969
+v -0.296195 -0.312500 0.272154
+v -0.334654 -0.312500 0.233695
+v -0.355469 -0.312500 0.183445
+v -0.355469 -0.312500 0.129055
+v -0.334654 -0.312500 0.078805
+v -0.296195 -0.312500 0.040345
+v -0.245945 -0.312500 0.019531
+v -0.191555 -0.480469 0.019531
+v -0.141305 -0.480469 0.040346
+v -0.102846 -0.480469 0.078805
+v -0.082031 -0.480469 0.129055
+v -0.082031 -0.480469 0.183445
+v -0.102846 -0.480469 0.233695
+v -0.141305 -0.480469 0.272154
+v -0.191555 -0.480469 0.292969
+v -0.245945 -0.480469 0.292969
+v -0.296195 -0.480469 0.272154
+v -0.334654 -0.480469 0.233695
+v -0.355469 -0.480469 0.183445
+v -0.355469 -0.480469 0.129055
+v -0.334654 -0.480469 0.078805
+v -0.296195 -0.480469 0.040345
+v -0.245945 -0.480469 0.019531
+v -0.218750 -0.500000 0.156250
+v -0.218750 -0.480469 0.156250
+vt 0.937500 0.593750
+vt 0.937500 0.781250
+vt 0.875000 0.781250
+vt 0.875000 0.593750
+vt 0.812500 0.781250
+vt 0.812500 0.593750
+vt 0.750000 0.781250
+vt 0.750000 0.593750
+vt 0.687500 0.781250
+vt 0.687500 0.593750
+vt 0.625000 0.781250
+vt 0.625000 0.593750
+vt 0.562500 0.781250
+vt 0.562500 0.593750
+vt 0.500000 0.781250
+vt 0.500000 0.593750
+vt 0.437500 0.781250
+vt 0.437500 0.593750
+vt 0.375000 0.781250
+vt 0.375000 0.593750
+vt 0.312500 0.781250
+vt 0.312500 0.593750
+vt 0.250000 0.781250
+vt 0.250000 0.593750
+vt 0.187500 0.781250
+vt 0.187500 0.593750
+vt 0.125000 0.781250
+vt 0.125000 0.593750
+vt 0.062500 0.781250
+vt 0.062500 0.593750
+vt 1.000000 0.593750
+vt 1.000000 0.781250
+vt 0.000000 0.781250
+vt 0.000000 0.593750
+vt 0.914370 0.293191
+vt 0.868549 0.312171
+vt 0.843750 0.187500
+vt 0.562500 0.531250
+vt 0.562500 0.281250
+vt 0.625000 0.281250
+vt 0.625000 0.531250
+vt 0.687500 0.281250
+vt 0.687500 0.343750
+vt 0.625000 0.343750
+vt 0.500000 0.531250
+vt 0.500000 0.281250
+vt 0.437500 0.531250
+vt 0.437500 0.281250
+vt 0.375000 0.531250
+vt 0.375000 0.281250
+vt 0.687500 0.843750
+vt 0.625000 0.843750
+vt 1.000000 0.843750
+vt 0.937500 0.843750
+vt 0.875000 0.843750
+vt 0.500000 0.843750
+vt 0.437500 0.843750
+vt 0.312500 0.843750
+vt 0.250000 0.843750
+vt 0.812500 0.843750
+vt 0.750000 0.843750
+vt 0.125000 0.843750
+vt 0.062500 0.843750
+vt 0.562500 0.843750
+vt 0.375000 0.843750
+vt 0.187500 0.843750
+vt 0.000000 0.843750
+vt 0.687500 0.968750
+vt 0.625000 0.968750
+vt 1.000000 0.968750
+vt 0.937500 0.968750
+vt 0.812500 0.968750
+vt 0.750000 0.968750
+vt 0.125000 0.968750
+vt 0.062500 0.968750
+vt 0.875000 0.968750
+vt 0.250000 0.968750
+vt 0.187500 0.968750
+vt 0.375000 0.968750
+vt 0.312500 0.968750
+vt 0.500000 0.968750
+vt 0.437500 0.968750
+vt 0.562500 0.968750
+vt 0.000000 0.968750
+vt 0.218701 0.030642
+vt 0.276353 0.054522
+vt 0.187500 0.187500
+vt 0.320478 0.098647
+vt 0.344358 0.156299
+vt 0.344358 0.218701
+vt 0.320478 0.276353
+vt 0.276353 0.320478
+vt 0.218701 0.344358
+vt 0.156299 0.344358
+vt 0.098647 0.320478
+vt 0.054522 0.276353
+vt 0.030642 0.218701
+vt 0.030642 0.156299
+vt 0.054522 0.098647
+vt 0.098647 0.054522
+vt 0.156299 0.030642
+vt 0.818951 0.312171
+vt 0.773129 0.293191
+vt 0.738059 0.258121
+vt 0.719079 0.212299
+vt 0.719079 0.162701
+vt 0.738059 0.116880
+vt 0.773129 0.081809
+vt 0.818951 0.062829
+vt 0.868549 0.062829
+vt 0.914370 0.081809
+vt 0.949441 0.116880
+vt 0.968421 0.162701
+vt 0.968421 0.212299
+vt 0.949441 0.258121
+vn 0.382700 0.000000 -0.923900
+vn 0.707100 0.000000 -0.707100
+vn 0.923900 0.000000 -0.382700
+vn 1.000000 0.000000 0.000000
+vn 0.923900 0.000000 0.382700
+vn 0.707100 0.000000 0.707100
+vn 0.382700 0.000000 0.923900
+vn 0.000000 0.000000 1.000000
+vn -0.382700 0.000000 0.923900
+vn -0.707100 0.000000 0.707100
+vn -0.923900 0.000000 0.382700
+vn -1.000000 0.000000 0.000000
+vn -0.923900 0.000000 -0.382700
+vn -0.707100 0.000000 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn -0.382700 0.000000 -0.923900
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder.001_Cylinder.001_None
+s off
+f 1/1/1 2/2/1 4/3/1 3/4/1
+f 3/4/2 4/3/2 6/5/2 5/6/2
+f 5/6/3 6/5/3 8/7/3 7/8/3
+f 7/8/4 8/7/4 10/9/4 9/10/4
+f 9/10/5 10/9/5 12/11/5 11/12/5
+f 11/12/6 12/11/6 14/13/6 13/14/6
+f 13/14/7 14/13/7 16/15/7 15/16/7
+f 15/16/8 16/15/8 18/17/8 17/18/8
+f 17/18/9 18/17/9 20/19/9 19/20/9
+f 19/20/10 20/19/10 22/21/10 21/22/10
+f 21/22/11 22/21/11 24/23/11 23/24/11
+f 23/24/12 24/23/12 26/25/12 25/26/12
+f 25/26/13 26/25/13 28/27/13 27/28/13
+f 27/28/14 28/27/14 30/29/14 29/30/14
+f 31/31/15 32/32/15 2/2/15 1/1/15
+f 29/30/16 30/29/16 32/33/16 31/34/16
+f 58/35/17 57/36/17 74/37/17
+f 37/38/12 38/39/12 34/40/12 33/41/12
+f 38/42/15 39/43/15 35/44/15 34/40/15
+f 39/45/4 40/46/4 36/39/4 35/38/4
+f 33/47/18 34/48/18 35/46/18 36/45/18
+f 40/48/17 39/47/17 38/49/17 37/50/17
+f 12/11/17 10/9/17 45/51/17 46/52/17
+f 2/2/17 32/32/17 56/53/17 41/54/17
+f 4/3/17 2/2/17 41/54/17 42/55/17
+f 18/17/17 16/15/17 48/56/17 49/57/17
+f 24/23/17 22/21/17 51/58/17 52/59/17
+f 8/7/17 6/5/17 43/60/17 44/61/17
+f 30/29/17 28/27/17 54/62/17 55/63/17
+f 14/13/17 12/11/17 46/52/17 47/64/17
+f 20/19/17 18/17/17 49/57/17 50/65/17
+f 26/25/17 24/23/17 52/59/17 53/66/17
+f 10/9/17 8/7/17 44/61/17 45/51/17
+f 32/33/17 30/29/17 55/63/17 56/67/17
+f 16/15/17 14/13/17 47/64/17 48/56/17
+f 22/21/17 20/19/17 50/65/17 51/58/17
+f 6/5/17 4/3/17 42/55/17 43/60/17
+f 28/27/17 26/25/17 53/66/17 54/62/17
+f 46/52/13 45/51/13 61/68/13 62/69/13
+f 41/54/8 56/53/8 72/70/8 57/71/8
+f 44/61/11 43/60/11 59/72/11 60/73/11
+f 55/63/6 54/62/6 70/74/6 71/75/6
+f 42/55/9 41/54/9 57/71/9 58/76/9
+f 53/66/4 52/59/4 68/77/4 69/78/4
+f 51/58/2 50/65/2 66/79/2 67/80/2
+f 49/57/15 48/56/15 64/81/15 65/82/15
+f 47/64/14 46/52/14 62/69/14 63/83/14
+f 45/51/12 44/61/12 60/73/12 61/68/12
+f 56/67/7 55/63/7 71/75/7 72/84/7
+f 43/60/10 42/55/10 58/76/10 59/72/10
+f 54/62/5 53/66/5 69/78/5 70/74/5
+f 52/59/3 51/58/3 67/80/3 68/77/3
+f 50/65/1 49/57/1 65/82/1 66/79/1
+f 48/56/16 47/64/16 63/83/16 64/81/16
+f 1/85/18 3/86/18 73/87/18
+f 3/86/18 5/88/18 73/87/18
+f 5/88/18 7/89/18 73/87/18
+f 7/89/18 9/90/18 73/87/18
+f 9/90/18 11/91/18 73/87/18
+f 11/91/18 13/92/18 73/87/18
+f 13/92/18 15/93/18 73/87/18
+f 15/93/18 17/94/18 73/87/18
+f 17/94/18 19/95/18 73/87/18
+f 19/95/18 21/96/18 73/87/18
+f 21/96/18 23/97/18 73/87/18
+f 23/97/18 25/98/18 73/87/18
+f 25/98/18 27/99/18 73/87/18
+f 27/99/18 29/100/18 73/87/18
+f 29/100/18 31/101/18 73/87/18
+f 31/101/18 1/85/18 73/87/18
+f 57/36/17 72/102/17 74/37/17
+f 72/102/17 71/103/17 74/37/17
+f 71/103/17 70/104/17 74/37/17
+f 70/104/17 69/105/17 74/37/17
+f 69/105/17 68/106/17 74/37/17
+f 68/106/17 67/107/17 74/37/17
+f 67/107/17 66/108/17 74/37/17
+f 66/108/17 65/109/17 74/37/17
+f 65/109/17 64/110/17 74/37/17
+f 64/110/17 63/111/17 74/37/17
+f 63/111/17 62/112/17 74/37/17
+f 62/112/17 61/113/17 74/37/17
+f 61/113/17 60/114/17 74/37/17
+f 60/114/17 59/115/17 74/37/17
+f 59/115/17 58/35/17 74/37/17
+f 75/1/1 76/2/1 78/3/1 77/4/1
+f 77/4/2 78/3/2 80/5/2 79/6/2
+f 79/6/3 80/5/3 82/7/3 81/8/3
+f 81/8/4 82/7/4 84/9/4 83/10/4
+f 83/10/5 84/9/5 86/11/5 85/12/5
+f 85/12/6 86/11/6 88/13/6 87/14/6
+f 87/14/7 88/13/7 90/15/7 89/16/7
+f 89/16/8 90/15/8 92/17/8 91/18/8
+f 91/18/9 92/17/9 94/19/9 93/20/9
+f 93/20/10 94/19/10 96/21/10 95/22/10
+f 95/22/11 96/21/11 98/23/11 97/24/11
+f 97/24/12 98/23/12 100/25/12 99/26/12
+f 99/26/13 100/25/13 102/27/13 101/28/13
+f 101/28/14 102/27/14 104/29/14 103/30/14
+f 105/31/15 106/32/15 76/2/15 75/1/15
+f 103/30/16 104/29/16 106/33/16 105/34/16
+f 132/35/17 131/36/17 148/37/17
+f 111/38/12 112/39/12 108/40/12 107/41/12
+f 112/42/15 113/43/15 109/44/15 108/40/15
+f 113/45/4 114/46/4 110/39/4 109/38/4
+f 107/47/18 108/48/18 109/46/18 110/45/18
+f 114/48/17 113/47/17 112/49/17 111/50/17
+f 86/11/17 84/9/17 119/51/17 120/52/17
+f 76/2/17 106/32/17 130/53/17 115/54/17
+f 78/3/17 76/2/17 115/54/17 116/55/17
+f 92/17/17 90/15/17 122/56/17 123/57/17
+f 98/23/17 96/21/17 125/58/17 126/59/17
+f 82/7/17 80/5/17 117/60/17 118/61/17
+f 104/29/17 102/27/17 128/62/17 129/63/17
+f 88/13/17 86/11/17 120/52/17 121/64/17
+f 94/19/17 92/17/17 123/57/17 124/65/17
+f 100/25/17 98/23/17 126/59/17 127/66/17
+f 84/9/17 82/7/17 118/61/17 119/51/17
+f 106/33/17 104/29/17 129/63/17 130/67/17
+f 90/15/17 88/13/17 121/64/17 122/56/17
+f 96/21/17 94/19/17 124/65/17 125/58/17
+f 80/5/17 78/3/17 116/55/17 117/60/17
+f 102/27/17 100/25/17 127/66/17 128/62/17
+f 120/52/13 119/51/13 135/68/13 136/69/13
+f 115/54/8 130/53/8 146/70/8 131/71/8
+f 118/61/11 117/60/11 133/72/11 134/73/11
+f 129/63/6 128/62/6 144/74/6 145/75/6
+f 116/55/9 115/54/9 131/71/9 132/76/9
+f 127/66/4 126/59/4 142/77/4 143/78/4
+f 125/58/2 124/65/2 140/79/2 141/80/2
+f 123/57/15 122/56/15 138/81/15 139/82/15
+f 121/64/14 120/52/14 136/69/14 137/83/14
+f 119/51/12 118/61/12 134/73/12 135/68/12
+f 130/67/7 129/63/7 145/75/7 146/84/7
+f 117/60/10 116/55/10 132/76/10 133/72/10
+f 128/62/5 127/66/5 143/78/5 144/74/5
+f 126/59/3 125/58/3 141/80/3 142/77/3
+f 124/65/1 123/57/1 139/82/1 140/79/1
+f 122/56/16 121/64/16 137/83/16 138/81/16
+f 75/85/18 77/86/18 147/87/18
+f 77/86/18 79/88/18 147/87/18
+f 79/88/18 81/89/18 147/87/18
+f 81/89/18 83/90/18 147/87/18
+f 83/90/18 85/91/18 147/87/18
+f 85/91/18 87/92/18 147/87/18
+f 87/92/18 89/93/18 147/87/18
+f 89/93/18 91/94/18 147/87/18
+f 91/94/18 93/95/18 147/87/18
+f 93/95/18 95/96/18 147/87/18
+f 95/96/18 97/97/18 147/87/18
+f 97/97/18 99/98/18 147/87/18
+f 99/98/18 101/99/18 147/87/18
+f 101/99/18 103/100/18 147/87/18
+f 103/100/18 105/101/18 147/87/18
+f 105/101/18 75/85/18 147/87/18
+f 131/36/17 146/102/17 148/37/17
+f 146/102/17 145/103/17 148/37/17
+f 145/103/17 144/104/17 148/37/17
+f 144/104/17 143/105/17 148/37/17
+f 143/105/17 142/106/17 148/37/17
+f 142/106/17 141/107/17 148/37/17
+f 141/107/17 140/108/17 148/37/17
+f 140/108/17 139/109/17 148/37/17
+f 139/109/17 138/110/17 148/37/17
+f 138/110/17 137/111/17 148/37/17
+f 137/111/17 136/112/17 148/37/17
+f 136/112/17 135/113/17 148/37/17
+f 135/113/17 134/114/17 148/37/17
+f 134/114/17 133/115/17 148/37/17
+f 133/115/17 132/35/17 148/37/17
diff --git a/homedecor_modpack/homedecor/models/homedecor_cube.obj b/homedecor_modpack/homedecor/models/homedecor_cube.obj
new file mode 100644
index 0000000..d0a1899
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_cube.obj
@@ -0,0 +1,23 @@
+# Blender v2.73 (sub 0) OBJ File: 'cobe+1.001.blend'
+# www.blender.org
+o Cylinder
+v -0.499500 -0.499500 0.499500
+v -0.499500 -0.499500 -0.499500
+v 0.499500 -0.499500 -0.499500
+v 0.499500 -0.499500 0.499500
+v -0.499500 0.499500 0.499500
+v -0.499500 0.499500 -0.499500
+v 0.499500 0.499500 -0.499500
+v 0.499500 0.499500 0.499500
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+g Cylinder_Cylinder_None
+s off
+f 5/1 6/2 2/3 1/4
+f 6/1 7/2 3/3 2/4
+f 7/1 8/2 4/3 3/4
+f 8/1 5/2 1/3 4/4
+f 1/1 2/2 3/3 4/4
+f 8/1 7/2 6/3 5/4
diff --git a/homedecor_modpack/homedecor/models/homedecor_cutlery_set.obj b/homedecor_modpack/homedecor/models/homedecor_cutlery_set.obj
new file mode 100644
index 0000000..5bdc782
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_cutlery_set.obj
@@ -0,0 +1,678 @@
+# Blender v2.73 (sub 0) OBJ File: 'cutlery-set.blend'
+# www.blender.org
+o cup_Cube.002
+v -0.000858 -0.499999 0.318116
+v 0.031027 -0.499999 0.311774
+v 0.058059 -0.499999 0.293712
+v 0.076120 -0.499999 0.266681
+v 0.082463 -0.499999 0.234795
+v 0.076120 -0.499999 0.202909
+v 0.058059 -0.499999 0.175878
+v 0.031027 -0.499999 0.157816
+v -0.000858 -0.499999 0.151474
+v -0.032744 -0.499999 0.157816
+v -0.059776 -0.499999 0.175878
+v -0.077837 -0.499999 0.202909
+v -0.084180 -0.499999 0.234795
+v -0.077837 -0.499999 0.266681
+v -0.059775 -0.499999 0.293712
+v -0.032744 -0.499999 0.311774
+v -0.000858 -0.277777 0.332235
+v 0.036430 -0.277777 0.324817
+v 0.068042 -0.277777 0.303695
+v 0.089164 -0.277777 0.272083
+v 0.096581 -0.277777 0.234795
+v 0.089164 -0.277777 0.197506
+v 0.068042 -0.277777 0.165895
+v 0.036430 -0.277777 0.144772
+v -0.000858 -0.277777 0.137355
+v -0.038147 -0.277777 0.144772
+v -0.069759 -0.277777 0.165895
+v -0.090881 -0.277777 0.197506
+v -0.098298 -0.277777 0.234795
+v -0.090881 -0.277777 0.272084
+v -0.069759 -0.277777 0.303695
+v -0.038147 -0.277777 0.324817
+v -0.000858 -0.250000 0.345893
+v 0.041657 -0.250000 0.337436
+v 0.077700 -0.250000 0.313353
+v 0.101783 -0.250000 0.277310
+v 0.110240 -0.250000 0.234795
+v 0.101783 -0.250000 0.192279
+v 0.077700 -0.250000 0.156236
+v 0.041657 -0.250000 0.132153
+v -0.000859 -0.250000 0.123697
+v -0.043374 -0.250000 0.132153
+v -0.079417 -0.250000 0.156237
+v -0.103500 -0.250000 0.192279
+v -0.111957 -0.250000 0.234795
+v -0.103500 -0.250000 0.277311
+v -0.079417 -0.250000 0.313353
+v -0.043374 -0.250000 0.337436
+v -0.000858 -0.250000 0.332235
+v 0.036430 -0.250000 0.324817
+v 0.068042 -0.250000 0.303695
+v 0.089164 -0.250000 0.272083
+v 0.096581 -0.250000 0.234795
+v 0.089164 -0.250000 0.197506
+v 0.068042 -0.250000 0.165895
+v 0.036430 -0.250000 0.144772
+v -0.000858 -0.250000 0.137355
+v -0.038147 -0.250000 0.144772
+v -0.069759 -0.250000 0.165895
+v -0.090881 -0.250000 0.197506
+v -0.098298 -0.250000 0.234795
+v -0.090881 -0.250000 0.272084
+v -0.069759 -0.250000 0.303695
+v -0.038147 -0.250000 0.324817
+v -0.278623 -0.499999 -0.348408
+v -0.278623 -0.499999 0.040479
+v -0.306401 -0.499999 0.040479
+v -0.306401 -0.499999 -0.348408
+v -0.278623 -0.486110 -0.348408
+v -0.278623 -0.493054 0.040479
+v -0.306401 -0.486110 0.040479
+v -0.306401 -0.486110 -0.348408
+v 0.290819 -0.499999 -0.348408
+v 0.304708 -0.499999 0.040479
+v 0.249152 -0.499999 0.040479
+v 0.263041 -0.499999 -0.348408
+v 0.290819 -0.486110 -0.348408
+v 0.304708 -0.486110 0.040479
+v 0.249152 -0.486110 0.040479
+v 0.263041 -0.486110 -0.348408
+v -0.000847 -0.499999 0.096034
+v -0.000847 -0.472221 0.096034
+v -0.085887 -0.499999 0.079119
+v -0.085887 -0.472221 0.079119
+v -0.157981 -0.499999 0.030947
+v -0.157981 -0.472221 0.030947
+v -0.206152 -0.499999 -0.041147
+v -0.206152 -0.472221 -0.041147
+v -0.223068 -0.499999 -0.126187
+v -0.223068 -0.472221 -0.126187
+v -0.206153 -0.499999 -0.211227
+v -0.206153 -0.472221 -0.211227
+v -0.157981 -0.499999 -0.283321
+v -0.157981 -0.472221 -0.283321
+v -0.085887 -0.499999 -0.331493
+v -0.085887 -0.472221 -0.331493
+v -0.000847 -0.499999 -0.348408
+v -0.000847 -0.472221 -0.348408
+v 0.084194 -0.499999 -0.331493
+v 0.084194 -0.472221 -0.331493
+v 0.156287 -0.499999 -0.283321
+v 0.156287 -0.472221 -0.283321
+v 0.204459 -0.499999 -0.211228
+v 0.204459 -0.472221 -0.211228
+v 0.221375 -0.499999 -0.126187
+v 0.221375 -0.472221 -0.126187
+v 0.204459 -0.499999 -0.041147
+v 0.204459 -0.472221 -0.041147
+v 0.156287 -0.499999 0.030947
+v 0.156287 -0.472221 0.030947
+v 0.084194 -0.499999 0.079119
+v 0.084194 -0.472221 0.079119
+v -0.000847 -0.472221 0.073812
+v -0.077383 -0.472221 0.058588
+v -0.142268 -0.472221 0.015234
+v -0.185622 -0.472221 -0.049651
+v -0.200846 -0.472221 -0.126187
+v -0.185622 -0.472221 -0.202723
+v -0.142268 -0.472221 -0.267608
+v -0.077383 -0.472221 -0.310962
+v -0.000847 -0.472221 -0.326186
+v 0.075690 -0.472221 -0.310962
+v 0.140574 -0.472221 -0.267608
+v 0.183928 -0.472221 -0.202724
+v 0.199152 -0.472221 -0.126187
+v 0.183928 -0.472221 -0.049651
+v 0.140574 -0.472221 0.015234
+v 0.075690 -0.472221 0.058588
+v -0.000847 -0.486110 0.053812
+v -0.069730 -0.486110 0.040111
+v -0.128125 -0.486110 0.001092
+v -0.167144 -0.486110 -0.057304
+v -0.180846 -0.486110 -0.126187
+v -0.167144 -0.486110 -0.195070
+v -0.128126 -0.486110 -0.253466
+v -0.069730 -0.486110 -0.292485
+v -0.000847 -0.486110 -0.306186
+v 0.068036 -0.486110 -0.292485
+v 0.126432 -0.486110 -0.253466
+v 0.165451 -0.486110 -0.195070
+v 0.179153 -0.486110 -0.126187
+v 0.165451 -0.486110 -0.057304
+v 0.126432 -0.486110 0.001092
+v 0.068036 -0.486110 0.040111
+v 0.290819 -0.486110 -0.061083
+v 0.290819 -0.499999 -0.061083
+v 0.263041 -0.486110 -0.061083
+v 0.263041 -0.499999 -0.061083
+v 0.304708 -0.486110 -0.034174
+v 0.249152 -0.499999 -0.034174
+v 0.304708 -0.499999 -0.034174
+v 0.249152 -0.486110 -0.034174
+v 0.288215 -0.499999 0.040479
+v 0.288215 -0.486110 0.040479
+v 0.288215 -0.486110 -0.022021
+v 0.288215 -0.499999 -0.022021
+v 0.265645 -0.486110 0.040479
+v 0.265645 -0.499999 0.040479
+v 0.281270 -0.486110 0.040479
+v 0.272590 -0.486110 0.040479
+v 0.297763 -0.486110 0.040479
+v 0.297763 -0.499999 0.040479
+v 0.256097 -0.486110 0.040479
+v 0.272590 -0.499999 0.040479
+v 0.281270 -0.499999 0.040479
+v 0.256097 -0.499999 0.040479
+v 0.265645 -0.486110 -0.022021
+v 0.265645 -0.499999 -0.022021
+v 0.281270 -0.486110 -0.022021
+v 0.272590 -0.486110 -0.022021
+v 0.297763 -0.486110 -0.022021
+v 0.297763 -0.499999 -0.022021
+v 0.256097 -0.486110 -0.022021
+v 0.272590 -0.499999 -0.022021
+v 0.281270 -0.499999 -0.022021
+v 0.256097 -0.499999 -0.022021
+v -0.278623 -0.486110 -0.160909
+v -0.278623 -0.499999 -0.160909
+v -0.306401 -0.486110 -0.160909
+v -0.306401 -0.499999 -0.160909
+v -0.264735 -0.493054 -0.126187
+v -0.306401 -0.499999 -0.126187
+v -0.264735 -0.499999 -0.126187
+v -0.306401 -0.486110 -0.126187
+v -0.264735 -0.493054 0.019646
+v -0.306401 -0.499999 0.019646
+v -0.264735 -0.499999 0.019646
+v -0.306401 -0.486110 0.019646
+vt 0.046875 0.750000
+vt 0.078125 0.750000
+vt 0.078125 0.765625
+vt 0.046875 0.765625
+vt 0.234375 0.750000
+vt 0.265625 0.750000
+vt 0.265625 0.765625
+vt 0.234375 0.765625
+vt 0.359375 0.750000
+vt 0.390625 0.750000
+vt 0.390625 0.765625
+vt 0.359375 0.765625
+vt 0.015625 0.750000
+vt 0.015625 0.765625
+vt 0.203125 0.750000
+vt 0.203125 0.765625
+vt 0.328125 0.750000
+vt 0.328125 0.765625
+vt 0.171875 0.750000
+vt 0.171875 0.765625
+vt 0.484375 0.750000
+vt 0.515625 0.750000
+vt 0.515625 0.765625
+vt 0.484375 0.765625
+vt 0.296875 0.750000
+vt 0.296875 0.765625
+vt 0.140625 0.750000
+vt 0.140625 0.765625
+vt 0.453125 0.750000
+vt 0.453125 0.765625
+vt 0.109375 0.750000
+vt 0.109375 0.765625
+vt 0.421875 0.750000
+vt 0.421875 0.765625
+vt 0.390625 0.796875
+vt 0.421875 0.796875
+vt 0.328125 0.562500
+vt 0.359375 0.562500
+vt 0.046875 0.796875
+vt 0.078125 0.796875
+vt 0.203125 0.562500
+vt 0.234375 0.562500
+vt 0.328125 0.796875
+vt 0.296875 0.796875
+vt 0.453125 0.562500
+vt 0.484375 0.562500
+vt 0.109375 0.562500
+vt 0.140625 0.562500
+vt 0.171875 0.796875
+vt 0.203125 0.796875
+vt 0.453125 0.796875
+vt 0.109375 0.796875
+vt 0.265625 0.562500
+vt 0.234375 0.796875
+vt 0.390625 0.562500
+vt 0.015625 0.562500
+vt 0.046875 0.562500
+vt 0.359375 0.796875
+vt 0.515625 0.562500
+vt 0.171875 0.562500
+vt 0.484375 0.796875
+vt 0.140625 0.796875
+vt 0.296875 0.562500
+vt 0.265625 0.796875
+vt 0.421875 0.562500
+vt 0.078125 0.562500
+vt 0.015625 0.796875
+vt 0.515625 0.796875
+vt 0.921814 0.669182
+vt 0.890678 0.675375
+vt 0.859542 0.669182
+vt 0.833147 0.651545
+vt 0.815509 0.625149
+vt 0.809316 0.594013
+vt 0.815509 0.562878
+vt 0.833146 0.536482
+vt 0.859542 0.518845
+vt 0.890678 0.512651
+vt 0.921814 0.518845
+vt 0.948209 0.536482
+vt 0.965846 0.562877
+vt 0.972040 0.594013
+vt 0.965846 0.625149
+vt 0.948209 0.651545
+vt 0.854226 0.884742
+vt 0.823357 0.864117
+vt 0.802732 0.833248
+vt 0.795489 0.796837
+vt 0.802732 0.760425
+vt 0.823357 0.729557
+vt 0.854226 0.708931
+vt 0.890637 0.701689
+vt 0.927049 0.708931
+vt 0.957917 0.729557
+vt 0.978543 0.760425
+vt 0.985785 0.796837
+vt 0.978543 0.833248
+vt 0.957917 0.864117
+vt 0.927049 0.884742
+vt 0.890637 0.891985
+vt 0.343750 0.968750
+vt 0.375000 0.968750
+vt 0.375000 0.984375
+vt 0.343750 0.984375
+vt 0.406250 0.968750
+vt 0.406250 0.984375
+vt 0.593750 0.968750
+vt 0.765625 0.968750
+vt 0.765625 0.984375
+vt 0.593750 0.984375
+vt 0.796875 0.968750
+vt 0.796875 0.984375
+vt 0.590085 0.867185
+vt 0.576523 0.887528
+vt 0.549398 0.887528
+vt 0.549398 0.867185
+vt 0.654293 0.867185
+vt 0.654293 0.887528
+vt 0.627169 0.887528
+vt 0.613607 0.867185
+vt 0.265625 0.921875
+vt 0.312500 0.921875
+vt 0.312500 0.937500
+vt 0.265625 0.937500
+vt 0.546875 0.921875
+vt 0.546875 0.937500
+vt 0.500000 0.937500
+vt 0.500000 0.921875
+vt 0.750000 0.921875
+vt 0.968750 0.921875
+vt 0.968750 0.937500
+vt 0.750000 0.937500
+vt 1.000000 0.921875
+vt 1.000000 0.937500
+vt 0.515625 0.828125
+vt 0.515625 0.859375
+vt 0.484375 0.859375
+vt 0.484375 0.828125
+vt 0.453125 0.859375
+vt 0.453125 0.828125
+vt 0.421875 0.859375
+vt 0.421875 0.828125
+vt 0.390625 0.859375
+vt 0.390625 0.828125
+vt 0.359375 0.859375
+vt 0.359375 0.828125
+vt 0.328125 0.859375
+vt 0.328125 0.828125
+vt 0.296875 0.859375
+vt 0.296875 0.828125
+vt 0.265625 0.859375
+vt 0.265625 0.828125
+vt 0.234375 0.859375
+vt 0.234375 0.828125
+vt 0.203125 0.859375
+vt 0.203125 0.828125
+vt 0.171875 0.859375
+vt 0.171875 0.828125
+vt 0.140625 0.859375
+vt 0.140625 0.828125
+vt 0.109375 0.859375
+vt 0.109375 0.828125
+vt 0.078125 0.859375
+vt 0.078125 0.828125
+vt 0.484375 0.875000
+vt 0.453125 0.875000
+vt 0.046875 0.828125
+vt 0.046875 0.859375
+vt 0.015625 0.859375
+vt 0.015625 0.828125
+vt 0.624982 0.466980
+vt 0.541942 0.450463
+vt 0.471544 0.403424
+vt 0.424505 0.333026
+vt 0.407987 0.249985
+vt 0.424505 0.166945
+vt 0.471544 0.096546
+vt 0.541942 0.049508
+vt 0.624982 0.032990
+vt 0.708023 0.049508
+vt 0.778421 0.096546
+vt 0.825460 0.166945
+vt 0.841978 0.249985
+vt 0.825460 0.333026
+vt 0.778421 0.403424
+vt 0.708023 0.450463
+vt 0.234375 0.875000
+vt 0.265625 0.875000
+vt 0.265625 0.890625
+vt 0.234375 0.890625
+vt 0.140625 0.875000
+vt 0.109375 0.875000
+vt 0.390625 0.875000
+vt 0.359375 0.875000
+vt 0.046875 0.875000
+vt 0.015625 0.875000
+vt 0.515625 0.875000
+vt 0.296875 0.875000
+vt 0.203125 0.875000
+vt 0.171875 0.875000
+vt 0.421875 0.875000
+vt 0.078125 0.875000
+vt 0.328125 0.875000
+vt 0.270392 0.412392
+vt 0.203129 0.425771
+vt 0.135867 0.412392
+vt 0.078844 0.374290
+vt 0.040743 0.317268
+vt 0.027363 0.250005
+vt 0.040743 0.182742
+vt 0.078844 0.125719
+vt 0.135867 0.087618
+vt 0.203129 0.074239
+vt 0.270392 0.087618
+vt 0.327415 0.125720
+vt 0.365516 0.182742
+vt 0.378896 0.250005
+vt 0.365516 0.317268
+vt 0.327415 0.374291
+vt 0.328125 0.890625
+vt 0.296875 0.890625
+vt 0.390625 0.890625
+vt 0.359375 0.890625
+vt 0.046875 0.890625
+vt 0.015625 0.890625
+vt 0.453125 0.890625
+vt 0.421875 0.890625
+vt 0.109375 0.890625
+vt 0.078125 0.890625
+vt 0.515625 0.890625
+vt 0.484375 0.890625
+vt 0.171875 0.890625
+vt 0.140625 0.890625
+vt 0.203125 0.890625
+vt 0.771937 0.507786
+vt 0.771937 0.788354
+vt 0.744812 0.788354
+vt 0.744813 0.507786
+vt 0.708252 0.507786
+vt 0.708252 0.788354
+vt 0.681128 0.788354
+vt 0.681128 0.507786
+vt 0.718750 0.921875
+vt 0.718750 0.937500
+vt 0.000000 0.921875
+vt 0.234375 0.921875
+vt 0.234375 0.937500
+vt 0.000000 0.937500
+vt 0.671875 0.921875
+vt 0.671875 0.937500
+vt 0.785499 0.814631
+vt 0.731250 0.814631
+vt 0.721814 0.814631
+vt 0.667565 0.814631
+vt 0.656250 0.921875
+vt 0.656250 0.937500
+vt 0.328125 0.937500
+vt 0.328125 0.921875
+vt 0.359375 0.921875
+vt 0.359375 0.937500
+vt 0.562500 0.921875
+vt 0.562500 0.937500
+vt 0.625000 0.937500
+vt 0.625000 0.921875
+vt 0.437500 0.937500
+vt 0.437500 0.921875
+vt 0.484375 0.921875
+vt 0.484375 0.937500
+vt 0.421875 0.921875
+vt 0.421875 0.937500
+vt 0.375000 0.937500
+vt 0.375000 0.921875
+vt 0.609375 0.921875
+vt 0.609375 0.937500
+vt 0.769394 0.826498
+vt 0.762613 0.826498
+vt 0.705709 0.826498
+vt 0.698928 0.826498
+vt 0.654293 0.507786
+vt 0.654293 0.690876
+vt 0.627169 0.690876
+vt 0.627169 0.507786
+vt 0.576522 0.507786
+vt 0.576523 0.690876
+vt 0.549398 0.690876
+vt 0.549398 0.507786
+vt 0.562500 0.968750
+vt 0.562500 0.984375
+vt 0.000000 0.968750
+vt 0.171875 0.968750
+vt 0.171875 0.984375
+vt 0.000000 0.984375
+vt 0.421875 0.968750
+vt 0.421875 0.984375
+vt 0.654293 0.724781
+vt 0.613607 0.724781
+vt 0.590085 0.724782
+vt 0.549398 0.724782
+vt 0.203125 0.968750
+vt 0.203125 0.984375
+vt 0.754136 0.826498
+vt 0.754136 0.887528
+vt 0.747355 0.887528
+vt 0.747355 0.826498
+vt 0.785499 0.887528
+vt 0.778718 0.887528
+vt 0.778718 0.826498
+vt 0.738031 0.826498
+vt 0.769394 0.887528
+vt 0.762613 0.887528
+vt 0.674347 0.826498
+vt 0.674347 0.887528
+vt 0.667565 0.887528
+vt 0.690452 0.826498
+vt 0.690452 0.887528
+vt 0.683671 0.887528
+vt 0.683671 0.826498
+vt 0.721814 0.887528
+vt 0.715033 0.887528
+vt 0.715033 0.826498
+vt 0.705709 0.887528
+vt 0.698928 0.887528
+vt 0.738031 0.887528
+vt 0.731250 0.887528
+s off
+f 34/1 35/2 51/3 50/4
+f 40/5 41/6 57/7 56/8
+f 44/9 45/10 61/11 60/12
+f 33/13 34/1 50/4 49/14
+f 39/15 40/5 56/8 55/16
+f 43/17 44/9 60/12 59/18
+f 38/19 39/15 55/16 54/20
+f 48/21 33/22 49/23 64/24
+f 42/25 43/17 59/18 58/26
+f 37/27 38/19 54/20 53/28
+f 47/29 48/21 64/24 63/30
+f 41/6 42/25 58/26 57/7
+f 36/31 37/27 53/28 52/32
+f 46/33 47/29 63/30 62/34
+f 35/2 36/31 52/32 51/3
+f 29/35 61/11 62/34 30/36
+f 11/37 12/38 44/9 43/17
+f 18/39 50/4 51/3 19/40
+f 7/41 8/42 40/5 39/15
+f 27/43 26/44 58/26 59/18
+f 15/45 16/46 48/21 47/29
+f 4/47 5/48 37/27 36/31
+f 22/49 54/20 55/16 23/50
+f 31/51 30/36 62/34 63/30
+f 20/52 19/40 51/3 52/32
+f 8/42 9/53 41/6 40/5
+f 24/54 23/50 55/16 56/8
+f 12/38 13/55 45/10 44/9
+f 1/56 2/57 34/1 33/13
+f 28/58 27/43 59/18 60/12
+f 16/46 1/59 33/22 48/21
+f 5/48 6/60 38/19 37/27
+f 32/61 31/51 63/30 64/24
+f 21/62 20/52 52/32 53/28
+f 9/53 10/63 42/25 41/6
+f 25/64 24/54 56/8 57/7
+f 13/55 14/65 46/33 45/10
+f 2/57 3/66 35/2 34/1
+f 29/35 28/58 60/12 61/11
+f 18/39 17/67 49/14 50/4
+f 6/60 7/41 39/15 38/19
+f 17/68 32/61 64/24 49/23
+f 22/49 21/62 53/28 54/20
+f 10/63 11/37 43/17 42/25
+f 26/44 25/64 57/7 58/26
+f 14/65 15/45 47/29 46/33
+f 3/66 4/47 36/31 35/2
+f 45/10 46/33 62/34 61/11
+f 2/69 1/70 16/71 15/72 14/73 13/74 12/75 11/76 10/77 9/78 8/79 7/80 6/81 5/82 4/83 3/84
+f 18/85 19/86 20/87 21/88 22/89 23/90 24/91 25/92 26/93 27/94 28/95 29/96 30/97 31/98 32/99 17/100
+f 185/101 70/102 66/103 187/104
+f 70/102 71/105 67/106 66/103
+f 179/107 72/108 68/109 180/110
+f 72/108 69/111 65/112 68/109
+f 187/113 66/114 67/115 186/116
+f 188/117 71/118 70/119 185/120
+f 149/121 78/122 74/123 151/124
+f 160/125 164/126 174/127 170/128
+f 147/129 80/130 76/131 148/132
+f 80/130 77/133 73/134 76/131
+f 81/135 82/136 84/137 83/138
+f 83/138 84/137 86/139 85/140
+f 85/140 86/139 88/141 87/142
+f 87/142 88/141 90/143 89/144
+f 89/144 90/143 92/145 91/146
+f 91/146 92/145 94/147 93/148
+f 93/148 94/147 96/149 95/150
+f 95/150 96/149 98/151 97/152
+f 97/152 98/151 100/153 99/154
+f 99/154 100/153 102/155 101/156
+f 101/156 102/155 104/157 103/158
+f 103/158 104/157 106/159 105/160
+f 105/160 106/159 108/161 107/162
+f 107/162 108/161 110/163 109/164
+f 86/139 84/137 114/165 115/166
+f 111/167 112/168 82/169 81/170
+f 109/164 110/163 112/168 111/167
+f 81/171 83/172 85/173 87/174 89/175 91/176 93/177 95/178 97/179 99/180 101/181 103/182 105/183 107/184 109/185 111/186
+f 122/187 121/188 137/189 138/190
+f 108/161 106/159 125/191 126/192
+f 92/145 90/143 117/193 118/194
+f 82/169 112/168 128/195 113/196
+f 84/137 82/136 113/197 114/165
+f 98/151 96/149 120/198 121/188
+f 104/157 102/155 123/199 124/200
+f 88/141 86/139 115/166 116/201
+f 110/163 108/161 126/192 127/202
+f 94/147 92/145 118/194 119/203
+f 100/153 98/151 121/188 122/187
+f 106/159 104/157 124/200 125/191
+f 90/143 88/141 116/201 117/193
+f 112/168 110/163 127/202 128/195
+f 96/149 94/147 119/203 120/198
+f 102/155 100/153 122/187 123/199
+f 130/204 129/205 144/206 143/207 142/208 141/209 140/210 139/211 138/212 137/213 136/214 135/215 134/216 133/217 132/218 131/219
+f 120/198 119/203 135/220 136/221
+f 118/194 117/193 133/222 134/223
+f 113/196 128/195 144/224 129/225
+f 116/201 115/166 131/226 132/227
+f 127/202 126/192 142/228 143/229
+f 114/165 113/197 129/230 130/231
+f 125/191 124/200 140/232 141/233
+f 123/199 122/187 138/190 139/234
+f 121/188 120/198 136/221 137/189
+f 119/203 118/194 134/223 135/220
+f 117/193 116/201 132/227 133/222
+f 128/195 127/202 143/229 144/224
+f 115/166 114/165 130/231 131/226
+f 126/192 125/191 141/233 142/228
+f 124/200 123/199 139/234 140/232
+f 80/235 147/236 145/237 77/238
+f 73/239 146/240 148/241 76/242
+f 152/243 147/129 148/132 150/244
+f 77/245 145/246 146/247 73/248
+f 79/249 152/243 150/244 75/250
+f 147/236 152/251 149/252 145/237
+f 146/240 151/253 150/254 148/241
+f 145/246 149/121 151/124 146/247
+f 163/255 79/249 75/250 166/256
+f 162/257 161/258 171/259 172/260
+f 160/125 157/261 158/262 164/126
+f 163/255 166/256 176/263 173/264
+f 78/122 161/258 162/257 74/123
+f 165/265 159/266 169/267 175/268
+f 154/269 159/266 165/265 153/270
+f 154/269 153/270 156/271 155/272
+f 158/262 157/261 167/273 168/274
+f 172/260 171/259 155/272 156/271
+f 175/268 169/267 170/128 174/127
+f 176/263 168/274 167/273 173/264
+f 152/251 167/275 170/276
+f 151/253 156/277 175/278
+f 72/279 179/280 177/281 69/282
+f 65/283 178/284 180/285 68/286
+f 184/287 179/107 180/110 182/288
+f 69/289 177/290 178/291 65/292
+f 188/293 184/287 182/288 186/294
+f 179/280 184/295 181/296 177/281
+f 178/284 183/297 182/298 180/285
+f 177/290 181/299 183/300 178/291
+f 71/105 188/293 186/294 67/106
+f 184/295 188/117 185/120 181/296
+f 183/297 187/113 186/116 182/298
+f 181/299 185/101 187/104 183/300
+f 169/301 159/302 154/303 155/304
+f 152/251 79/305 163/306 173/307
+f 155/304 171/308 149/252
+f 167/275 157/309 160/310 170/276
+f 170/276 169/301 152/251
+f 149/252 169/301 155/304
+f 176/311 166/312 75/313 150/254
+f 152/251 173/307 167/275
+f 152/251 169/301 149/252
+f 174/314 164/315 158/316 168/317
+f 151/253 74/318 162/319 172/320
+f 168/317 176/311 150/254
+f 156/277 153/321 165/322 175/278
+f 175/278 150/254 151/253
+f 150/254 174/314 168/317
+f 151/253 172/320 156/277
+f 175/278 174/314 150/254
+f 171/308 161/323 78/324 149/252
diff --git a/homedecor_modpack/homedecor/models/homedecor_dartboard.obj b/homedecor_modpack/homedecor/models/homedecor_dartboard.obj
new file mode 100644
index 0000000..08060cf
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_dartboard.obj
@@ -0,0 +1,236 @@
+# Blender v2.69 (sub 0) OBJ File: 'dartboard.blend'
+# www.blender.org
+mtllib homedecor_dartboard.mtl
+o Cylinder
+v -0.000000 -0.500000 -0.500000
+v -0.000000 -0.437500 -0.500000
+v 0.097545 -0.500000 -0.490393
+v 0.097545 -0.437500 -0.490393
+v 0.191342 -0.500000 -0.461940
+v 0.191342 -0.437500 -0.461940
+v 0.277785 -0.500000 -0.415735
+v 0.277785 -0.437500 -0.415735
+v 0.353553 -0.500000 -0.353553
+v 0.353553 -0.437500 -0.353553
+v 0.415735 -0.500000 -0.277785
+v 0.415735 -0.437500 -0.277785
+v 0.461940 -0.500000 -0.191342
+v 0.461940 -0.437500 -0.191342
+v 0.490393 -0.500000 -0.097545
+v 0.490393 -0.437500 -0.097545
+v 0.500000 -0.500000 0.000000
+v 0.500000 -0.437500 0.000000
+v 0.490393 -0.500000 0.097545
+v 0.490393 -0.437500 0.097545
+v 0.461940 -0.500000 0.191342
+v 0.461940 -0.437500 0.191342
+v 0.415735 -0.500000 0.277785
+v 0.415735 -0.437500 0.277785
+v 0.353553 -0.500000 0.353553
+v 0.353553 -0.437500 0.353553
+v 0.277785 -0.500000 0.415735
+v 0.277785 -0.437500 0.415735
+v 0.191342 -0.500000 0.461940
+v 0.191342 -0.437500 0.461940
+v 0.097545 -0.500000 0.490393
+v 0.097545 -0.437500 0.490393
+v -0.000000 -0.500000 0.500000
+v -0.000000 -0.437500 0.500000
+v -0.097545 -0.500000 0.490393
+v -0.097545 -0.437500 0.490393
+v -0.191342 -0.500000 0.461940
+v -0.191342 -0.437500 0.461940
+v -0.277785 -0.500000 0.415735
+v -0.277785 -0.437500 0.415735
+v -0.353554 -0.500000 0.353553
+v -0.353554 -0.437500 0.353553
+v -0.415735 -0.500000 0.277785
+v -0.415735 -0.437500 0.277785
+v -0.461940 -0.500000 0.191341
+v -0.461940 -0.437500 0.191341
+v -0.490393 -0.500000 0.097545
+v -0.490393 -0.437500 0.097545
+v -0.500000 -0.500000 -0.000000
+v -0.500000 -0.437500 -0.000000
+v -0.490393 -0.500000 -0.097546
+v -0.490393 -0.437500 -0.097546
+v -0.461940 -0.500000 -0.191342
+v -0.461940 -0.437500 -0.191342
+v -0.415734 -0.500000 -0.277786
+v -0.415734 -0.437500 -0.277786
+v -0.353553 -0.500000 -0.353554
+v -0.353553 -0.437500 -0.353554
+v -0.277785 -0.500000 -0.415735
+v -0.277785 -0.437500 -0.415735
+v -0.191341 -0.500000 -0.461940
+v -0.191341 -0.437500 -0.461940
+v -0.097544 -0.500000 -0.490393
+v -0.097544 -0.437500 -0.490393
+vt 0.500000 0.411765
+vt 0.500000 0.397059
+vt 0.544118 0.397059
+vt 0.544118 0.411765
+vt 0.588235 0.397059
+vt 0.588235 0.411765
+vt 0.632353 0.397059
+vt 0.632353 0.411765
+vt 0.676471 0.397059
+vt 0.676471 0.411765
+vt 0.720588 0.397059
+vt 0.720588 0.411765
+vt 0.764706 0.397059
+vt 0.764706 0.411765
+vt 0.808824 0.397059
+vt 0.808824 0.411765
+vt 0.852941 0.397059
+vt 0.852941 0.411765
+vt 0.147059 0.455882
+vt 0.147059 0.441176
+vt 0.191176 0.441176
+vt 0.191176 0.455882
+vt 0.235294 0.441176
+vt 0.235294 0.455882
+vt 0.279412 0.441176
+vt 0.279412 0.455882
+vt 0.323529 0.441176
+vt 0.323529 0.455882
+vt 0.367647 0.441176
+vt 0.367647 0.455882
+vt 0.411765 0.441176
+vt 0.411765 0.455882
+vt 0.455882 0.441176
+vt 0.455882 0.455882
+vt 0.500000 0.441176
+vt 0.500000 0.455882
+vt 0.544118 0.441176
+vt 0.544118 0.455882
+vt 0.588235 0.441176
+vt 0.588235 0.455882
+vt 0.632353 0.441176
+vt 0.632353 0.455882
+vt 0.676471 0.441176
+vt 0.676471 0.455882
+vt 0.720588 0.441176
+vt 0.720588 0.455882
+vt 0.764706 0.441176
+vt 0.764706 0.455882
+vt 0.808824 0.441176
+vt 0.808824 0.455882
+vt 0.852941 0.441176
+vt 0.852941 0.455882
+vt 0.147059 0.411765
+vt 0.147059 0.397059
+vt 0.191176 0.397059
+vt 0.191176 0.411765
+vt 0.235294 0.397059
+vt 0.235294 0.411765
+vt 0.279412 0.397059
+vt 0.279412 0.411765
+vt 0.323529 0.397059
+vt 0.323529 0.411765
+vt 0.367647 0.397059
+vt 0.367647 0.411765
+vt 0.411765 0.397059
+vt 0.411765 0.411765
+vt 0.203606 0.517361
+vt 0.249900 0.512801
+vt 0.296194 0.517361
+vt 0.340710 0.530865
+vt 0.381735 0.552793
+vt 0.417695 0.582304
+vt 0.447206 0.618264
+vt 0.469135 0.659290
+vt 0.482638 0.703805
+vt 0.487198 0.750100
+vt 0.482639 0.796394
+vt 0.469135 0.840910
+vt 0.447206 0.881935
+vt 0.417695 0.917895
+vt 0.381736 0.947406
+vt 0.340710 0.969335
+vt 0.296195 0.982838
+vt 0.249899 0.987398
+vt 0.203605 0.982838
+vt 0.159090 0.969335
+vt 0.118064 0.947406
+vt 0.082105 0.917895
+vt 0.052594 0.881936
+vt 0.030665 0.840910
+vt 0.017162 0.796394
+vt 0.012602 0.750100
+vt 0.017161 0.703805
+vt 0.030665 0.659290
+vt 0.052594 0.618264
+vt 0.082105 0.582304
+vt 0.118065 0.552793
+vt 0.159090 0.530864
+vt 0.455882 0.411765
+vt 0.455882 0.397059
+vt 0.750099 0.512802
+vt 0.796394 0.517361
+vt 0.840910 0.530865
+vt 0.881935 0.552793
+vt 0.917895 0.582304
+vt 0.947406 0.618264
+vt 0.969335 0.659290
+vt 0.982839 0.703805
+vt 0.987398 0.750100
+vt 0.982839 0.796395
+vt 0.969335 0.840910
+vt 0.947406 0.881936
+vt 0.917895 0.917895
+vt 0.881935 0.947406
+vt 0.840911 0.969335
+vt 0.796395 0.982838
+vt 0.750100 0.987398
+vt 0.703805 0.982838
+vt 0.659288 0.969334
+vt 0.618263 0.947405
+vt 0.582304 0.917894
+vt 0.552793 0.881934
+vt 0.530864 0.840908
+vt 0.517361 0.796392
+vt 0.512801 0.750098
+vt 0.517361 0.703803
+vt 0.530865 0.659288
+vt 0.552794 0.618263
+vt 0.582304 0.582304
+vt 0.618264 0.552794
+vt 0.659289 0.530865
+vt 0.703805 0.517361
+usemtl None
+s off
+f 1/1 2/2 4/3 3/4
+f 3/4 4/3 6/5 5/6
+f 5/6 6/5 8/7 7/8
+f 7/8 8/7 10/9 9/10
+f 9/10 10/9 12/11 11/12
+f 11/12 12/11 14/13 13/14
+f 13/14 14/13 16/15 15/16
+f 15/16 16/15 18/17 17/18
+f 17/19 18/20 20/21 19/22
+f 19/22 20/21 22/23 21/24
+f 21/24 22/23 24/25 23/26
+f 23/26 24/25 26/27 25/28
+f 25/28 26/27 28/29 27/30
+f 27/30 28/29 30/31 29/32
+f 29/32 30/31 32/33 31/34
+f 31/34 32/33 34/35 33/36
+f 33/36 34/35 36/37 35/38
+f 35/38 36/37 38/39 37/40
+f 37/40 38/39 40/41 39/42
+f 39/42 40/41 42/43 41/44
+f 41/44 42/43 44/45 43/46
+f 43/46 44/45 46/47 45/48
+f 45/48 46/47 48/49 47/50
+f 47/50 48/49 50/51 49/52
+f 49/53 50/54 52/55 51/56
+f 51/56 52/55 54/57 53/58
+f 53/58 54/57 56/59 55/60
+f 55/60 56/59 58/61 57/62
+f 57/62 58/61 60/63 59/64
+f 59/64 60/63 62/65 61/66
+f 4/67 2/68 64/69 62/70 60/71 58/72 56/73 54/74 52/75 50/76 48/77 46/78 44/79 42/80 40/81 38/82 36/83 34/84 32/85 30/86 28/87 26/88 24/89 22/90 20/91 18/92 16/93 14/94 12/95 10/96 8/97 6/98
+f 63/99 64/100 2/2 1/1
+f 61/66 62/65 64/100 63/99
+f 1/101 3/102 5/103 7/104 9/105 11/106 13/107 15/108 17/109 19/110 21/111 23/112 25/113 27/114 29/115 31/116 33/117 35/118 37/119 39/120 41/121 43/122 45/123 47/124 49/125 51/126 53/127 55/128 57/129 59/130 61/131 63/132
diff --git a/homedecor_modpack/homedecor/models/homedecor_deckchair.obj b/homedecor_modpack/homedecor/models/homedecor_deckchair.obj
new file mode 100644
index 0000000..e5f8d03
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_deckchair.obj
@@ -0,0 +1,410 @@
+# Blender v2.73 (sub 0) OBJ File: ''
+# www.blender.org
+o Cube.001
+v 0.331299 -0.108997 -0.420378
+v -0.330736 -0.108997 -0.419627
+v -0.330756 -0.119287 -0.437450
+v 0.331279 -0.119287 -0.438202
+v 0.331259 -0.088416 -0.456025
+v -0.330776 -0.088416 -0.455274
+v -0.330756 -0.078125 -0.437450
+v 0.331279 -0.078125 -0.438202
+v 0.331259 -0.108997 -0.456025
+v -0.330776 -0.108997 -0.455274
+v -0.330736 -0.088416 -0.419627
+v 0.331299 -0.088416 -0.420378
+v 0.356377 0.501814 0.949297
+v -0.356630 0.501814 0.950105
+v -0.356650 0.512105 0.932282
+v 0.356357 0.512105 0.931473
+v -0.356650 0.532686 0.932282
+v 0.356357 0.532686 0.931473
+v -0.356630 0.542976 0.950105
+v 0.356377 0.542976 0.949297
+v -0.356610 0.532686 0.967929
+v 0.356398 0.532686 0.967120
+v 0.356398 0.512105 0.967120
+v -0.356610 0.512105 0.967929
+v 0.389723 -0.330506 0.592356
+v -0.390785 -0.330506 0.593241
+v -0.390785 -0.309925 0.593241
+v 0.389723 -0.309925 0.592356
+v 0.389743 -0.340796 0.610180
+v -0.390765 -0.340796 0.611065
+v -0.390765 -0.299634 0.611065
+v 0.389743 -0.299634 0.610180
+v -0.390745 -0.309925 0.628889
+v 0.389763 -0.309925 0.628003
+v 0.389763 -0.330506 0.628003
+v -0.390745 -0.330506 0.628889
+v 0.323960 -0.132414 0.255548
+v 0.338696 0.107305 0.593510
+v -0.338775 0.107305 0.594305
+v -0.323825 -0.132414 0.256327
+v 0.328153 -0.224373 -0.082415
+v -0.327803 -0.224373 -0.081650
+v -0.416005 0.232654 0.483276
+v -0.386301 0.232654 0.483276
+v -0.386301 -0.352386 0.586435
+v -0.416004 -0.352386 0.586435
+v -0.386301 0.242970 0.541780
+v -0.416004 0.242970 0.541781
+v -0.416004 -0.342071 0.644939
+v -0.386301 -0.342071 0.644939
+v -0.416004 -0.348952 0.640120
+v -0.386301 -0.348952 0.640120
+v -0.416004 0.239536 0.488095
+v -0.386301 0.239536 0.488095
+v -0.416005 0.247788 0.534899
+v -0.386301 0.247788 0.534898
+v -0.386301 -0.357205 0.593317
+v -0.416004 -0.357205 0.593317
+v -0.386300 0.570892 0.961787
+v -0.356596 0.570892 0.961787
+v -0.356602 -0.451333 -0.498102
+v -0.386305 -0.451333 -0.498102
+v -0.356596 0.522229 0.995861
+v -0.386300 0.522229 0.995861
+v -0.386305 -0.499997 -0.464028
+v -0.356602 -0.499997 -0.464028
+v -0.386305 -0.498538 -0.472302
+v -0.356602 -0.498538 -0.472302
+v -0.386299 0.569433 0.970061
+v -0.356596 0.569433 0.970061
+v -0.386299 0.530503 0.997321
+v -0.356596 0.530503 0.997320
+v -0.356601 -0.459607 -0.499561
+v -0.386305 -0.459607 -0.499561
+v -0.356601 -0.118875 -0.476087
+v -0.326898 -0.118875 -0.476087
+v -0.326893 -0.503263 0.958471
+v -0.356597 -0.503263 0.958471
+v -0.326898 -0.061492 -0.460711
+v -0.356601 -0.061492 -0.460712
+v -0.356596 -0.445880 0.973846
+v -0.326893 -0.445880 0.973846
+v -0.356596 -0.453156 0.978047
+v -0.326893 -0.453156 0.978046
+v -0.356601 -0.111599 -0.480287
+v -0.326898 -0.111599 -0.480287
+v -0.356601 -0.065693 -0.467987
+v -0.326898 -0.065693 -0.467987
+v -0.326893 -0.499062 0.965746
+v -0.356596 -0.499062 0.965746
+v 0.415686 0.232654 0.483274
+v 0.415686 -0.352386 0.586432
+v 0.385983 -0.352386 0.586432
+v 0.385983 0.232654 0.483274
+v 0.385983 0.242970 0.541778
+v 0.385983 -0.342071 0.644936
+v 0.415687 -0.342071 0.644936
+v 0.415686 0.242970 0.541778
+v 0.415687 -0.348953 0.640117
+v 0.385983 -0.348953 0.640117
+v 0.415686 0.239536 0.488092
+v 0.385983 0.239536 0.488093
+v 0.415687 0.247788 0.534896
+v 0.385983 0.247788 0.534896
+v 0.415687 -0.357205 0.593314
+v 0.385983 -0.357205 0.593314
+v 0.385985 0.570892 0.961784
+v 0.385980 -0.451333 -0.498105
+v 0.356276 -0.451333 -0.498105
+v 0.356281 0.570892 0.961785
+v 0.356282 0.522229 0.995859
+v 0.356276 -0.499997 -0.464031
+v 0.385980 -0.499997 -0.464031
+v 0.385985 0.522229 0.995859
+v 0.385980 -0.498538 -0.472304
+v 0.356276 -0.498538 -0.472304
+v 0.385985 0.569433 0.970058
+v 0.356281 0.569433 0.970058
+v 0.385985 0.530503 0.997318
+v 0.356281 0.530503 0.997318
+v 0.385980 -0.459607 -0.499564
+v 0.356276 -0.459607 -0.499564
+v 0.356276 -0.118875 -0.476089
+v 0.356281 -0.503263 0.958468
+v 0.326578 -0.503263 0.958468
+v 0.326573 -0.118875 -0.476089
+v 0.326573 -0.061492 -0.460714
+v 0.326578 -0.445880 0.973844
+v 0.356281 -0.445880 0.973844
+v 0.356276 -0.061492 -0.460714
+v 0.356282 -0.453157 0.978045
+v 0.326578 -0.453157 0.978044
+v 0.356276 -0.111599 -0.480290
+v 0.326573 -0.111599 -0.480290
+v 0.356276 -0.065693 -0.467990
+v 0.326573 -0.065693 -0.467990
+v 0.356282 -0.499062 0.965744
+v 0.326578 -0.499062 0.965744
+vt 0.994473 0.684535
+vt 0.992047 0.627986
+vt 0.503752 0.627986
+vt 0.501326 0.684535
+vt 0.856339 0.005141
+vt 0.822269 0.006761
+vt 0.822269 0.982038
+vt 0.856339 0.983658
+vt 0.794078 0.385745
+vt 0.794078 0.326578
+vt 0.764223 0.326578
+vt 0.770765 0.385745
+vt 0.825254 0.352957
+vt 0.794170 0.352957
+vt 0.794170 0.414399
+vt 0.825254 0.414399
+vt 0.826392 0.385745
+vt 0.832934 0.326578
+vt 0.764315 0.352957
+vt 0.764315 0.414399
+vt 0.994473 0.736117
+vt 0.501326 0.736117
+vt 0.627020 0.003808
+vt 0.588823 0.004416
+vt 0.584609 0.980383
+vt 0.631235 0.981716
+vt 0.794078 0.444911
+vt 0.764223 0.444911
+vt 0.825254 0.293791
+vt 0.794170 0.293791
+vt 0.832934 0.444911
+vt 0.808391 0.388020
+vt 0.764315 0.293791
+vt 0.994473 0.787698
+vt 0.501326 0.787698
+vt 0.887423 0.005141
+vt 0.887423 0.983658
+vt 0.857476 0.385745
+vt 0.864018 0.326578
+vt 0.886194 0.352957
+vt 0.856339 0.352957
+vt 0.862881 0.414399
+vt 0.879652 0.414399
+vt 0.879560 0.385745
+vt 0.886102 0.326578
+vt 0.501326 0.839280
+vt 0.994473 0.839280
+vt 0.650992 0.982324
+vt 0.650992 0.003808
+vt 0.864018 0.444911
+vt 0.839476 0.388020
+vt 0.886194 0.293791
+vt 0.856339 0.293791
+vt 0.886102 0.444911
+vt 0.870560 0.388020
+vt 0.501298 0.067908
+vt 0.994446 0.067908
+vt 0.987218 0.010678
+vt 0.506659 0.008221
+vt 0.934049 0.983658
+vt 0.934049 0.005141
+vt 0.840796 0.416674
+vt 0.840796 0.475840
+vt 0.825254 0.478116
+vt 0.794170 0.475840
+vt 0.794170 0.535007
+vt 0.833025 0.535007
+vt 0.878423 0.475840
+vt 0.764315 0.475840
+vt 0.764315 0.535007
+vt 0.501326 0.890861
+vt 0.994473 0.890861
+vt 0.701433 0.981716
+vt 0.701433 0.005749
+vt 0.864110 0.535007
+vt 0.886194 0.535007
+vt 0.857568 0.478116
+vt 0.638748 0.009024
+vt 0.758558 0.005428
+vt 0.758558 0.982038
+vt 0.526655 0.980383
+vt 0.529640 0.004416
+vt 0.994459 0.105626
+vt 0.944985 0.117138
+vt 0.549074 0.117138
+vt 0.501314 0.105626
+vt 0.549072 0.015886
+vt 0.944980 0.015886
+vt 0.501326 0.426628
+vt 0.549070 0.426627
+vt 0.944983 0.426627
+vt 0.994473 0.426627
+vt 0.992047 0.534271
+vt 0.944984 0.527880
+vt 0.549074 0.527880
+vt 0.503751 0.534271
+vt 0.501326 0.323464
+vt 0.549070 0.323464
+vt 0.944982 0.323464
+vt 0.994473 0.323465
+vt 0.573594 0.007083
+vt 0.569379 0.983658
+vt 0.501314 0.125534
+vt 0.994459 0.125534
+vt 0.994459 0.220591
+vt 0.944983 0.220301
+vt 0.549072 0.220301
+vt 0.501312 0.220591
+vt 0.501326 0.916652
+vt 0.994473 0.916652
+vt 0.501326 0.942443
+vt 0.994473 0.942443
+vt 0.501298 0.160070
+vt 0.994446 0.160070
+vt 0.972905 0.983658
+vt 0.965134 0.005141
+vt 0.501326 0.968233
+vt 0.994731 0.974990
+vt 0.732517 0.980991
+vt 0.732517 0.002474
+vt 0.501298 0.190791
+vt 0.994446 0.190791
+vt 0.501537 0.995149
+vt 0.994473 0.992114
+vt 0.000922 0.000433
+vt 0.499184 0.000519
+vt 0.499027 0.999328
+vt 0.000761 0.999494
+vt 0.000521 -0.000070
+vt 0.499556 0.000624
+vt 0.499331 0.999867
+vt 0.000980 0.999173
+vt 0.000118 0.001382
+vt 0.499090 0.000579
+vt 0.000444 1.000054
+vt 0.002692 -0.000992
+vt 0.498849 -0.000329
+vt 0.499240 0.999342
+vt -0.000835 1.000097
+vn 0.000000 -0.173600 -0.984800
+vn 0.000000 0.173600 0.984800
+vn 0.000000 -0.573600 0.819100
+vn 0.000000 0.573600 -0.819100
+vn -0.000000 0.984800 -0.173600
+vn 0.000000 0.819200 0.573500
+vn 0.000000 -0.819100 -0.573600
+vn 0.000000 -0.984800 0.173700
+vn 0.000000 0.819200 -0.573600
+vn 0.000000 -0.819200 0.573600
+vn 0.000000 -0.984800 -0.173700
+vn 0.000000 0.984800 0.173700
+vn 0.000000 0.573600 0.819100
+vn 0.000000 -0.173700 0.984800
+vn 0.000000 0.173700 -0.984800
+vn 0.000000 -0.573600 -0.819200
+vn 0.000000 -0.965900 -0.258800
+vn -0.000000 0.965900 0.258800
+vn 0.000000 0.500000 0.866000
+vn 0.000000 -0.499900 -0.866100
+vn 0.000000 0.258800 -0.965900
+vn 0.000000 0.866000 -0.500000
+vn 0.000000 -0.866000 0.500100
+vn 0.000000 -0.258800 0.965900
+vn -0.000000 0.573500 -0.819200
+vn 0.000000 -0.984800 0.173600
+vn 0.000000 -0.573600 -0.819100
+vn -0.000000 0.499900 0.866100
+vn 0.000000 -0.500000 -0.866000
+vn 0.000000 -0.866000 0.500000
+vn 1.000000 0.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000600 -0.866000 0.500000
+vn -0.000600 0.866000 -0.500000
+vn -0.001100 0.000000 -1.000000
+vn 0.000600 0.866000 0.500000
+vn 0.001100 0.000000 1.000000
+vn -0.000600 -0.866000 -0.500000
+vn -0.000500 0.903700 -0.428200
+vn -0.000500 0.903600 -0.428500
+vn -0.000800 0.723900 -0.689900
+vn -0.000800 0.724000 -0.689800
+vn 0.000100 0.998100 0.060800
+vn 0.000100 0.998200 0.060200
+vn 0.000400 0.927700 0.373200
+vn -0.000900 0.622100 -0.783000
+s off
+f 43/1/1 44/2/1 45/3/1 46/4/1
+f 47/5/2 48/6/2 49/7/2 50/8/2
+f 51/9/3 52/10/3 50/10/3 49/9/3
+f 44/9/4 43/10/4 53/11/4 54/12/4
+f 55/13/5 56/14/5 54/15/5 53/16/5
+f 48/17/6 47/18/6 56/10/6 55/9/6
+f 46/9/7 45/10/7 57/10/7 58/9/7
+f 58/14/8 57/19/8 52/20/8 51/15/8
+f 59/21/9 60/1/9 61/4/9 62/22/9
+f 63/23/10 64/24/10 65/25/10 66/26/10
+f 67/27/11 68/9/11 66/9/11 65/27/11
+f 69/27/12 70/12/12 60/12/12 59/28/12
+f 71/29/13 72/30/13 70/14/13 69/13/13
+f 64/31/14 63/17/14 72/17/14 71/27/14
+f 62/27/15 61/32/15 73/9/15 74/27/15
+f 74/30/16 73/33/16 68/19/16 67/14/16
+f 75/34/17 76/21/17 77/22/17 78/35/17
+f 79/36/18 80/5/18 81/8/18 82/37/18
+f 83/38/19 84/39/19 82/18/19 81/17/19
+f 85/17/20 86/18/20 76/18/20 75/17/20
+f 87/40/21 88/41/21 86/42/21 85/43/21
+f 80/44/22 79/45/22 88/39/22 87/38/22
+f 78/38/23 77/39/23 89/39/23 90/38/23
+f 90/41/24 89/13/24 84/16/24 83/42/24
+f 91/46/1 92/47/1 93/34/1 94/35/1
+f 95/48/2 96/49/2 97/23/2 98/26/2
+f 99/38/3 97/38/3 96/31/3 100/50/3
+f 101/51/25 91/17/25 94/31/25 102/31/25
+f 103/52/5 101/53/5 102/41/5 104/40/5
+f 98/44/6 103/44/6 104/50/6 95/54/6
+f 92/55/7 105/38/7 106/50/7 93/50/7
+f 105/53/26 99/29/26 100/13/26 106/41/26
+f 107/56/9 108/57/9 109/58/9 110/59/9
+f 111/60/10 112/61/10 113/36/10 114/37/10
+f 115/42/11 113/62/11 112/63/11 116/63/11
+f 117/62/12 107/16/12 110/63/12 118/63/12
+f 119/64/13 117/65/13 118/66/13 120/67/13
+f 114/43/14 119/43/14 120/68/14 111/68/14
+f 108/42/15 121/42/15 122/63/15 109/68/15
+f 121/65/27 115/69/27 116/70/27 122/66/27
+f 123/71/17 124/72/17 125/47/17 126/46/17
+f 127/73/18 128/74/18 129/49/18 130/48/18
+f 131/63/28 129/63/28 128/67/28 132/75/28
+f 133/63/29 123/64/29 126/67/29 134/67/29
+f 135/16/21 133/15/21 134/65/21 136/63/21
+f 130/68/22 135/68/22 136/75/22 127/76/22
+f 124/68/30 137/77/30 138/75/30 125/75/30
+f 137/15/24 131/20/24 132/69/24 138/65/24
+f 84/49/31 89/74/31 77/74/31 76/73/31 86/73/31 88/48/31 79/26/31 82/78/31
+f 59/79/32 62/80/32 74/80/32 67/73/32 65/73/32 64/74/32 71/74/32 69/79/32
+f 130/81/31 129/82/31 131/82/31 137/24/31 124/24/31 123/25/31 133/25/31 135/81/31
+f 63/58/31 66/83/31 68/84/31 73/85/31 61/86/31 60/59/31 70/87/31 72/88/31
+f 48/89/32 55/90/32 53/91/32 43/92/32 46/93/32 58/94/32 51/95/32 49/96/32
+f 98/89/31 97/97/31 99/98/31 105/99/31 92/100/31 91/92/31 101/91/31 103/90/31
+f 57/2/31 45/2/31 44/3/31 54/3/31 56/96/31 47/96/31 50/93/31 52/93/31
+f 112/101/32 111/25/32 120/102/32 118/81/32 110/81/32 109/59/32 122/82/32 116/101/32
+f 80/103/32 87/85/32 85/84/32 75/104/32 78/105/32 90/106/32 83/107/32 81/108/32
+f 96/105/32 95/100/32 104/99/32 102/98/32 94/97/32 93/108/32 106/107/32 100/106/32
+f 126/78/32 125/26/32 138/26/32 132/25/32 128/25/32 127/101/32 136/24/32 134/23/32
+f 107/79/31 117/79/31 119/6/31 114/6/31 113/7/31 115/7/31 121/80/31 108/80/31
+f 1/86/33 2/83/33 3/57/33 4/56/33
+f 5/60/34 6/61/34 7/61/34 8/60/34
+f 9/109/35 10/110/35 6/72/35 5/71/35
+f 8/73/36 7/74/36 11/74/36 12/73/36
+f 2/83/37 1/86/37 12/103/37 11/104/37
+f 4/60/38 3/61/38 10/61/38 9/60/38
+f 13/111/38 14/112/38 15/110/38 16/109/38
+f 16/73/35 15/74/35 17/74/35 18/73/35
+f 18/113/34 17/114/34 19/104/34 20/103/34
+f 20/115/36 19/116/36 21/61/36 22/60/36
+f 23/117/33 24/118/33 14/112/33 13/111/33
+f 22/119/37 21/120/37 24/74/37 23/73/37
+f 25/121/35 26/122/35 27/114/35 28/113/35
+f 29/115/38 30/58/38 26/116/38 25/115/38
+f 28/123/34 27/124/34 31/118/34 32/117/34
+f 32/80/36 31/79/36 33/120/36 34/119/36
+f 35/108/33 36/105/33 30/122/33 29/121/33
+f 34/118/37 33/58/37 36/58/37 35/115/37
+s 1
+f 37/125/39 40/126/40 39/127/41 38/128/42
+f 41/129/43 42/130/44 40/131/40 37/132/39
+f 12/133/45 11/134/45 42/131/44 41/135/43
+f 38/136/42 39/137/41 17/138/46 18/139/46
diff --git a/homedecor_modpack/homedecor/models/homedecor_desk.obj b/homedecor_modpack/homedecor/models/homedecor_desk.obj
new file mode 100644
index 0000000..19d74e0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_desk.obj
@@ -0,0 +1,245 @@
+# Blender v2.73 (sub 0) OBJ File: 'desk.blend'
+# www.blender.org
+o main-parts-wood_Cube.001
+v -0.312500 0.000000 -0.437500
+v -0.312500 0.000000 -0.500000
+v 0.437500 0.000000 -0.500000
+v 0.437500 0.000000 -0.437500
+v -0.312500 0.375000 -0.437500
+v -0.312500 0.375000 -0.500000
+v 0.437500 0.375000 -0.500000
+v 0.437500 0.375000 -0.437500
+v -0.312500 -0.437500 -0.437500
+v -0.312500 -0.437500 -0.500000
+v 0.437500 -0.437500 -0.500000
+v 0.437500 -0.437500 -0.437500
+v -0.312500 -0.062500 -0.437500
+v -0.312500 -0.062500 -0.500000
+v 0.437500 -0.062500 -0.500000
+v 0.437500 -0.062500 -0.437500
+v -0.500000 0.437500 0.000000
+v -0.500000 0.437500 -0.437500
+v -0.531250 0.437500 -0.437500
+v -0.531250 0.437500 0.000000
+v -0.500000 0.312500 0.000000
+v -0.500000 0.312500 -0.437500
+v -0.531250 0.312500 -0.437500
+v -0.531250 0.312500 0.000000
+v -1.406250 0.312500 0.000000
+v -1.406250 0.312500 -0.437500
+v -1.375000 0.312500 -0.437500
+v -1.375000 0.312500 0.000000
+v -1.406250 0.437500 0.000000
+v -1.406250 0.437500 -0.437500
+v -1.375000 0.437500 -0.437500
+v -1.375000 0.437500 0.000000
+v -0.375000 -0.500000 0.500000
+v -0.375000 -0.500000 -0.437500
+v 0.500000 -0.500000 -0.437500
+v 0.500000 -0.500000 0.500000
+v -0.375000 0.437500 0.500000
+v -0.375000 0.437500 -0.437500
+v 0.500000 0.437500 -0.437500
+v 0.500000 0.437500 0.500000
+v -0.312500 0.000000 -0.437500
+v -0.500000 0.437500 0.500000
+v -0.500000 0.437500 -0.437500
+v 0.437500 0.000000 -0.437500
+v -0.312500 0.375000 -0.437500
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.437500
+v 0.437500 0.375000 -0.437500
+v -0.312500 -0.437500 -0.437500
+v -0.500000 -0.375000 0.500000
+v -0.500000 0.250000 0.500000
+v 0.437500 -0.437500 -0.437500
+v -0.312500 -0.062500 -0.437500
+v -0.500000 -0.375000 0.437500
+v -0.500000 0.250000 0.437500
+v 0.437500 -0.062500 -0.437500
+v -1.500000 0.437500 0.500000
+v -1.500000 0.437500 -0.437500
+v -1.500000 0.500000 0.500000
+v -1.500000 0.500000 -0.437500
+v 0.500000 0.500000 -0.437500
+v 0.500000 0.500000 0.500000
+v -1.500000 -0.500000 0.500000
+v -1.500000 -0.500000 -0.437500
+v -1.437500 -0.500000 -0.437500
+v -1.437500 -0.500000 0.500000
+v -1.437500 0.437500 -0.437500
+v -1.437500 0.437500 0.500000
+v -1.437500 -0.375000 0.500000
+v -1.437500 -0.375000 0.437500
+v -0.375000 -0.375000 0.437500
+v -0.375000 -0.375000 0.500000
+v -1.437500 0.250000 0.500000
+v -1.437500 0.250000 0.437500
+v -0.375000 0.250000 0.437500
+v -0.375000 0.250000 0.500000
+v -1.375000 0.328125 -0.062500
+v -1.375000 0.328125 -0.375000
+v -0.531250 0.328125 -0.375000
+v -0.531250 0.328125 -0.062500
+v -1.375000 0.359375 -0.062500
+v -1.375000 0.359375 -0.375000
+v -0.531250 0.359375 -0.375000
+v -0.531250 0.359375 -0.062500
+v -0.375000 0.000000 -0.437500
+v -0.375000 0.375000 -0.437500
+v -0.375000 -0.437500 -0.437500
+v -0.375000 -0.062500 -0.437500
+v 0.500000 0.000000 -0.437500
+v 0.500000 0.375000 -0.437500
+v 0.500000 -0.437500 -0.437500
+v 0.500000 -0.062500 -0.437500
+vt 1.000000 1.000000
+vt 0.062500 1.000000
+vt 0.062500 0.062500
+vt 1.000000 0.062500
+vt 1.000000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.000000
+vt 1.000000 0.000000
+vt 0.125000 0.937500
+vt 0.125000 0.000000
+vt 0.125000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.000000 0.937500
+vt 0.937500 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.125000
+vt 0.937500 0.125000
+vt 0.125000 0.750000
+vt 0.125000 0.125000
+vt 0.937500 1.000000
+vt 0.937500 0.937500
+vt 0.937500 0.000000
+vt 1.000000 0.750000
+vt 0.875000 0.750000
+vt 0.875000 0.125000
+vt 1.000000 0.125000
+vt 0.062500 0.750000
+vt 0.062500 0.125000
+vt 0.875000 0.859375
+vt 0.031250 0.859375
+vt 0.031250 0.828125
+vt 0.875000 0.828125
+vt 0.968750 0.859375
+vt 0.125000 0.859375
+vt 0.125000 0.828125
+vt 0.968750 0.828125
+vt 0.000000 0.984375
+vt 0.000000 0.773396
+vt 0.569642 0.773396
+vt 0.569642 0.984375
+vt 0.569642 0.523397
+vt 0.569642 0.734375
+vt 0.000000 0.734375
+vt 0.000000 0.523397
+vt 0.000000 0.062500
+vt 0.875000 0.000000
+vt 0.875000 0.062500
+vt 0.000000 0.437500
+vt 0.875000 0.437500
+vt 0.875000 0.500000
+vt 0.000000 0.500000
+vt 0.062500 0.875000
+vt 0.000000 0.875000
+vt 0.062500 0.500000
+vt 0.062500 0.437500
+vt 0.812500 0.437500
+vt 0.812500 0.062500
+vt 0.875000 0.875000
+vt 0.812500 0.875000
+vt 0.812500 0.500000
+vt 0.875000 0.937500
+vt 0.812500 1.000000
+vt 0.812500 0.937500
+vt 0.812500 0.000000
+vt 0.750000 0.937500
+vt 0.750000 0.875000
+vt 1.000000 0.875000
+vt 0.750000 0.750000
+vt 0.000000 0.562500
+vt 0.750000 0.562500
+vt 0.750000 0.312500
+vt 0.000000 0.312500
+vt 0.750000 0.125000
+vt 0.750000 0.625000
+vt 1.000000 0.562500
+vt 1.000000 0.625000
+vt 0.750000 0.000000
+vt 0.750000 0.062500
+vt 0.750000 0.500000
+vt 1.000000 0.500000
+vt 0.750000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+g main-parts-wood_Cube.001_wood
+s off
+f 37/1/1 38/2/1 34/3/1 33/4/1
+f 39/5/2 40/6/2 36/7/2 35/8/2
+f 40/5/3 37/9/3 33/10/3 36/8/3
+f 33/11/4 34/10/4 35/8/4 36/1/4
+f 62/8/5 61/1/5 47/12/5 46/13/5
+f 60/1/6 47/12/6 43/14/6 58/5/6
+f 62/1/3 46/12/3 42/14/3 40/5/3
+f 57/12/4 58/13/4 43/8/4 42/1/4
+f 74/15/6 55/16/6 54/17/6 70/18/6
+f 76/19/3 51/16/3 50/17/3 72/20/3
+f 59/21/1 60/12/1 58/14/1 57/22/1
+f 69/2/4 70/6/4 54/5/4 50/1/4
+f 76/9/5 75/11/5 55/12/5 51/14/5
+f 46/8/5 47/1/5 60/12/5 59/13/5
+f 67/22/2 68/14/2 66/13/2 65/23/2
+f 63/12/4 64/13/4 65/7/4 66/2/4
+f 55/24/6 75/25/6 71/26/6 54/27/6
+f 51/24/3 73/28/3 69/29/3 50/27/3
+f 50/12/4 54/14/4 71/9/4 72/11/4
+f 51/5/5 55/1/5 74/2/5 73/6/5
+f 82/30/6 83/31/6 79/32/6 78/33/6
+f 84/34/3 81/35/3 77/36/3 80/37/3
+f 77/38/4 78/39/4 79/40/4 80/41/4
+f 84/42/5 83/43/5 82/44/5 81/45/5
+f 91/46/6 35/13/6 34/47/6 87/48/6
+f 92/49/6 88/50/6 85/51/6 89/52/6
+f 48/53/6 90/54/6 89/52/6 44/55/6
+f 56/56/6 92/49/6 91/46/6 52/3/6
+f 88/50/6 53/57/6 49/58/6 87/48/6
+f 86/59/6 45/60/6 41/61/6 85/51/6
+f 47/1/6 61/12/6 39/14/6 43/5/6
+f 61/1/2 62/2/2 40/6/2 39/5/2
+f 46/1/3 59/12/3 57/14/3 42/5/3
+f 42/12/4 43/13/4 39/8/4 40/1/4
+f 57/22/1 58/14/1 64/13/1 63/23/1
+f 58/5/6 67/22/6 65/23/6 64/8/6
+f 68/6/3 57/14/3 63/13/3 66/7/3
+f 90/54/6 86/59/6 38/62/6 39/14/6
+g main-parts-wood_Cube.001_drawers
+f 5/59/1 6/60/1 2/61/1 1/51/1
+f 6/60/6 7/53/6 3/55/6 2/61/6
+f 7/53/2 8/54/2 4/52/2 3/55/2
+f 1/6/4 2/2/4 3/63/4 4/64/4
+f 8/60/5 7/64/5 6/6/5 5/53/5
+f 13/50/1 14/57/1 10/58/1 9/48/1
+f 14/57/6 15/56/6 11/3/6 10/58/6
+f 15/56/2 16/49/2 12/46/2 11/3/2
+f 9/7/4 10/3/4 11/58/4 12/65/4
+f 16/57/5 15/61/5 14/55/5 13/56/5
+g main-parts-wood_Cube.001_metal
+f 32/66/3 29/67/3 25/68/3 28/5/3
+f 31/69/2 32/16/2 28/70/2 27/71/2
+f 29/72/1 30/73/1 26/17/1 25/74/1
+f 30/75/6 31/71/6 27/76/6 26/77/6
+f 24/13/4 23/78/4 22/79/4 21/46/4
+f 19/71/6 18/80/6 22/81/6 23/76/6
+f 20/71/1 19/70/1 23/73/1 24/72/1
+f 18/82/2 17/12/2 21/16/2 22/69/2
+f 17/82/3 20/66/3 24/5/3 21/1/3
+f 25/74/4 26/17/4 27/46/4 28/79/4
diff --git a/homedecor_modpack/homedecor/models/homedecor_desk_fan.b3d b/homedecor_modpack/homedecor/models/homedecor_desk_fan.b3d
new file mode 100644
index 0000000..d49e8b1
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_desk_fan.b3d
Binary files differ
diff --git a/homedecor_modpack/homedecor/models/homedecor_desk_fan_uv.png b/homedecor_modpack/homedecor/models/homedecor_desk_fan_uv.png
new file mode 100644
index 0000000..0ca6cad
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_desk_fan_uv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/models/homedecor_desk_globe.obj b/homedecor_modpack/homedecor/models/homedecor_desk_globe.obj
new file mode 100644
index 0000000..039fe4c
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_desk_globe.obj
@@ -0,0 +1,1103 @@
+# Blender v2.73 (sub 0) OBJ File: 'desk-globe.blend'
+# www.blender.org
+o Sphere_Sphere.001
+v 0.113650 -0.467646 -0.000649
+v 0.216014 -0.499994 -0.016774
+v 0.099129 -0.467646 -0.040111
+v 0.187530 -0.499994 -0.094182
+v 0.070612 -0.467646 -0.071013
+v 0.131592 -0.499994 -0.154798
+v 0.032440 -0.467646 -0.088649
+v 0.056715 -0.499994 -0.189392
+v -0.009576 -0.467646 -0.090335
+v -0.025701 -0.499994 -0.192699
+v -0.049038 -0.467646 -0.075814
+v -0.103109 -0.499994 -0.164215
+v -0.079939 -0.467646 -0.047296
+v -0.163724 -0.499994 -0.108277
+v -0.097575 -0.467646 -0.009125
+v -0.198319 -0.499994 -0.033400
+v -0.099261 -0.467646 0.032891
+v -0.201626 -0.499994 0.049016
+v -0.084740 -0.467646 0.072353
+v -0.173142 -0.499994 0.126424
+v -0.056223 -0.467646 0.103254
+v -0.117203 -0.499994 0.187039
+v -0.018051 -0.467646 0.120891
+v -0.042326 -0.499994 0.221634
+v 0.023964 -0.467646 0.122576
+v 0.040090 -0.499994 0.224941
+v 0.007194 -0.456723 0.016121
+v 0.063426 -0.467646 0.108055
+v 0.117498 -0.499994 0.196457
+v 0.094328 -0.467646 0.079538
+v 0.178113 -0.499994 0.140518
+v 0.111964 -0.467646 0.041366
+v 0.212707 -0.499994 0.065642
+v -0.135910 -0.385527 0.007033
+v 0.104939 0.191370 0.009926
+v -0.134317 -0.386187 0.007204
+v 0.106532 0.190710 0.010096
+v -0.132785 -0.386822 0.007707
+v 0.108064 0.190075 0.010600
+v -0.131374 -0.387406 0.008525
+v 0.109476 0.189491 0.011417
+v -0.130136 -0.387918 0.009624
+v 0.110713 0.188979 0.012517
+v -0.129121 -0.388338 0.010964
+v 0.111728 0.188559 0.013856
+v -0.128366 -0.388649 0.012493
+v 0.112483 0.188248 0.015385
+v -0.127902 -0.388840 0.014151
+v 0.112948 0.188057 0.017043
+v -0.127745 -0.388904 0.015875
+v 0.113105 0.187994 0.018767
+v -0.127901 -0.388837 0.017600
+v 0.112948 0.188060 0.020492
+v -0.128366 -0.388643 0.019258
+v 0.112483 0.188255 0.022150
+v -0.129121 -0.388329 0.020785
+v 0.111729 0.188569 0.023678
+v -0.130136 -0.387906 0.022124
+v 0.110713 0.188991 0.025017
+v -0.131373 -0.387392 0.023223
+v 0.109476 0.189505 0.026115
+v -0.132785 -0.386806 0.024040
+v 0.108065 0.190091 0.026932
+v -0.134316 -0.386171 0.024542
+v 0.106533 0.190726 0.027434
+v -0.135909 -0.385510 0.024711
+v 0.104940 0.191387 0.027603
+v -0.137502 -0.384850 0.024541
+v 0.103347 0.192047 0.027433
+v -0.139034 -0.384216 0.024037
+v 0.101815 0.192682 0.026929
+v -0.140446 -0.383631 0.023220
+v 0.100404 0.193266 0.026112
+v -0.141683 -0.383119 0.022120
+v 0.099166 0.193778 0.025012
+v -0.142699 -0.382700 0.020781
+v 0.098151 0.194198 0.023673
+v -0.143453 -0.382388 0.019252
+v 0.097396 0.194509 0.022144
+v -0.143918 -0.382197 0.017594
+v 0.096931 0.194700 0.020486
+v -0.144075 -0.382134 0.015869
+v 0.096774 0.194763 0.018762
+v -0.143918 -0.382201 0.014145
+v 0.096931 0.194697 0.017037
+v -0.143453 -0.382395 0.012487
+v 0.097396 0.194502 0.015379
+v -0.142699 -0.382709 0.010959
+v 0.098150 0.194188 0.013851
+v -0.141684 -0.383131 0.009620
+v 0.099166 0.193766 0.012512
+v -0.140446 -0.383645 0.008521
+v 0.100403 0.193252 0.011414
+v -0.139035 -0.384231 0.007705
+v 0.101815 0.192666 0.010597
+v -0.137503 -0.384867 0.007203
+v 0.103346 0.192030 0.010095
+v 0.084772 0.140586 0.009718
+v 0.086302 0.139951 0.009879
+v 0.087773 0.139342 0.010353
+v 0.089129 0.138781 0.011123
+v 0.090318 0.138289 0.012158
+v 0.091293 0.137886 0.013420
+v 0.092018 0.137587 0.014859
+v 0.092464 0.137403 0.016421
+v 0.092615 0.137342 0.018045
+v 0.077527 0.143594 0.014854
+v 0.078251 0.143292 0.013415
+v 0.079227 0.142887 0.012154
+v 0.080415 0.142393 0.011120
+v 0.081771 0.141830 0.010351
+v 0.083242 0.141220 0.009878
+v 0.126780 0.182316 0.026888
+v -0.112614 -0.395168 0.027449
+v 0.006995 -0.418995 0.027467
+v 0.126617 -0.395236 0.027439
+v 0.228041 -0.327508 0.027370
+v 0.295826 -0.226123 0.027271
+v 0.319652 -0.106514 0.027156
+v 0.295893 0.013107 0.027042
+v 0.228165 0.114531 0.026948
+v 0.143747 0.223245 0.026848
+v -0.129581 -0.436098 0.027488
+v 0.006982 -0.463302 0.027509
+v 0.143561 -0.436175 0.027477
+v 0.259362 -0.358847 0.027399
+v 0.336755 -0.243090 0.027285
+v 0.363959 -0.106527 0.027154
+v 0.336832 0.030051 0.027025
+v 0.259504 0.145852 0.026917
+v 0.126779 0.182296 0.006472
+v -0.112614 -0.395188 0.007033
+v 0.006994 -0.419015 0.007051
+v 0.126616 -0.395256 0.007023
+v 0.228040 -0.327528 0.006955
+v 0.295825 -0.226142 0.006855
+v 0.319652 -0.106534 0.006740
+v 0.295892 0.013088 0.006627
+v 0.228164 0.114512 0.006533
+v 0.143746 0.223226 0.006432
+v -0.129582 -0.436118 0.007073
+v 0.006981 -0.463322 0.007093
+v 0.143560 -0.436195 0.007062
+v 0.259361 -0.358866 0.006983
+v 0.336755 -0.243109 0.006870
+v 0.363959 -0.106546 0.006738
+v 0.336832 0.030032 0.006609
+v 0.259503 0.145833 0.006501
+v 0.086129 0.199167 0.026873
+v -0.153264 -0.378317 0.027434
+v 0.103096 0.240097 0.026833
+v -0.170232 -0.419246 0.027474
+v 0.086128 0.199148 0.006457
+v -0.153265 -0.378336 0.007019
+v 0.103096 0.240078 0.006418
+v -0.170232 -0.419266 0.007058
+v 0.042949 0.165886 -0.004195
+v -0.051922 0.162327 -0.050961
+v -0.141557 0.119208 -0.087109
+v -0.212309 0.043094 -0.107136
+v -0.253407 -0.054428 -0.107993
+v -0.258594 -0.158511 -0.089550
+v -0.227081 -0.253309 -0.054614
+v -0.163664 -0.324390 -0.008504
+v 0.055129 0.160893 -0.020101
+v -0.017238 0.148108 -0.096259
+v -0.089648 0.097929 -0.154902
+v -0.151078 0.017993 -0.187103
+v -0.192176 -0.079529 -0.187961
+v -0.206685 -0.179790 -0.157343
+v -0.192396 -0.267527 -0.099912
+v -0.151485 -0.329383 -0.024410
+v 0.071975 0.153879 -0.029760
+v 0.030736 0.128133 -0.123764
+v -0.017850 0.068033 -0.196067
+v -0.066387 -0.017271 -0.235661
+v -0.107485 -0.114793 -0.236518
+v -0.134887 -0.209686 -0.198508
+v -0.144422 -0.287503 -0.127418
+v -0.134639 -0.336397 -0.034069
+v 0.090923 0.145910 -0.031701
+v 0.084696 0.105442 -0.129291
+v 0.062906 0.034073 -0.204338
+v 0.028872 -0.057329 -0.245417
+v -0.012226 -0.154851 -0.246274
+v -0.054131 -0.243646 -0.206778
+v -0.090463 -0.310194 -0.132944
+v -0.115690 -0.344365 -0.036010
+v 0.109089 0.138202 -0.025627
+v 0.136426 0.083489 -0.111996
+v 0.140327 0.001219 -0.178454
+v 0.120195 -0.096084 -0.214885
+v 0.079097 -0.193605 -0.215742
+v 0.023289 -0.276500 -0.180895
+v -0.038732 -0.332147 -0.115649
+v -0.097525 -0.352074 -0.029937
+v 0.123706 0.131926 -0.012465
+v 0.178052 0.065618 -0.074513
+v 0.202624 -0.025527 -0.122358
+v 0.193680 -0.127633 -0.148715
+v 0.152582 -0.225155 -0.149572
+v 0.085587 -0.303246 -0.124798
+v 0.002894 -0.350018 -0.078166
+v -0.082908 -0.358350 -0.016774
+v 0.132549 0.128039 0.005782
+v 0.203237 0.054548 -0.022549
+v 0.240315 -0.042095 -0.044588
+v 0.238140 -0.147176 -0.056979
+v 0.197042 -0.244697 -0.057836
+v 0.123278 -0.319814 -0.047028
+v 0.028078 -0.361088 -0.026202
+v -0.074064 -0.362237 0.001473
+v 0.134273 0.127132 0.026337
+v 0.208145 0.051965 0.035986
+v 0.247661 -0.045960 0.043016
+v 0.246805 -0.151735 0.046356
+v 0.205707 -0.249257 0.045499
+v 0.130624 -0.323679 0.040575
+v 0.032987 -0.363671 0.032333
+v -0.072341 -0.363144 0.022028
+v 0.128614 0.129343 0.046069
+v 0.192031 0.058262 0.092179
+v 0.223544 -0.036536 0.127115
+v 0.218357 -0.140619 0.145559
+v 0.177259 -0.238140 0.144702
+v 0.106507 -0.314255 0.124675
+v 0.016872 -0.357374 0.088526
+v -0.077999 -0.360933 0.041760
+v 0.116435 0.134336 0.061976
+v 0.157346 0.072481 0.137477
+v 0.171635 -0.015256 0.194908
+v 0.157126 -0.115517 0.225526
+v 0.116028 -0.213039 0.224669
+v 0.054598 -0.292975 0.192467
+v -0.017812 -0.343155 0.133824
+v -0.090179 -0.355940 0.057667
+v 0.099588 0.141351 0.071635
+v 0.109372 0.092456 0.164983
+v 0.099837 0.014639 0.236074
+v 0.072435 -0.080253 0.274084
+v 0.031337 -0.177775 0.273226
+v -0.017200 -0.263080 0.233633
+v -0.065786 -0.323179 0.161330
+v -0.107025 -0.348925 0.067325
+v 0.080640 0.149319 0.073575
+v 0.055413 0.115147 0.170509
+v 0.019081 0.048599 0.244344
+v -0.022824 -0.040195 0.283839
+v -0.063922 -0.137717 0.282982
+v -0.097956 -0.229120 0.241903
+v -0.119928 -0.300279 0.166846
+v -0.125973 -0.340957 0.069266
+v 0.062475 0.157027 0.067502
+v 0.003682 0.137100 0.153214
+v -0.058339 0.081453 0.218460
+v -0.114147 -0.001441 0.253308
+v -0.155245 -0.098963 0.252451
+v -0.175377 -0.196266 0.216020
+v -0.171476 -0.278536 0.149561
+v -0.144139 -0.333248 0.063193
+v 0.047858 0.163303 0.054340
+v -0.037944 0.154971 0.115732
+v -0.120637 0.108200 0.162364
+v -0.187632 0.030109 0.187137
+v -0.228730 -0.067413 0.186280
+v -0.237674 -0.169519 0.159923
+v -0.213102 -0.260664 0.112078
+v -0.158756 -0.326973 0.050031
+v 0.039014 0.167190 0.036092
+v -0.063128 0.166041 0.063767
+v -0.158328 0.124767 0.084594
+v -0.232092 0.049651 0.095401
+v -0.273190 -0.047871 0.094544
+v -0.275365 -0.152952 0.082153
+v -0.238287 -0.249595 0.060114
+v -0.167599 -0.323086 0.031783
+v 0.037291 0.168097 0.015538
+v -0.068037 0.168624 0.005233
+v -0.165674 0.128633 -0.003009
+v -0.240757 0.054211 -0.007934
+v -0.281855 -0.043311 -0.008791
+v -0.282711 -0.149086 -0.005450
+v -0.243195 -0.247012 0.001580
+v -0.169323 -0.322179 0.011229
+v 0.081836 0.152131 0.018050
+v 0.083246 0.151553 0.016208
+v 0.085196 0.150741 0.015091
+v 0.087389 0.149819 0.014866
+v 0.089491 0.148926 0.015569
+v 0.091183 0.148200 0.017092
+v 0.092207 0.147750 0.019204
+v 0.092406 0.147645 0.021583
+v 0.091751 0.147901 0.023867
+v 0.090342 0.148479 0.025708
+v 0.088392 0.149291 0.026826
+v 0.086199 0.150213 0.027051
+v 0.084096 0.151105 0.026348
+v 0.082404 0.151832 0.024825
+v 0.081381 0.152282 0.022712
+v 0.081181 0.152387 0.020333
+v -0.126277 -0.343171 0.014006
+v -0.125016 -0.343688 0.012360
+v -0.123273 -0.344414 0.011360
+v -0.121312 -0.345239 0.011159
+v -0.119431 -0.346037 0.011788
+v -0.117919 -0.346686 0.013150
+v -0.117003 -0.347089 0.015039
+v -0.116825 -0.347182 0.017166
+v -0.117411 -0.346954 0.019208
+v -0.118671 -0.346437 0.020855
+v -0.120415 -0.345711 0.021854
+v -0.122376 -0.344886 0.022055
+v -0.124256 -0.344088 0.021427
+v -0.125769 -0.343439 0.020064
+v -0.126684 -0.343036 0.018176
+v -0.126863 -0.342943 0.016048
+vt 0.772070 0.367025
+vt 0.815301 0.349070
+vt 0.885724 0.445524
+vt 0.800924 0.480745
+vt 0.848368 0.315940
+vt 0.950589 0.380537
+vt 0.866239 0.272678
+vt 0.985642 0.295676
+vt 0.866190 0.225872
+vt 0.985548 0.203862
+vt 0.848232 0.182646
+vt 0.950320 0.119072
+vt 0.815096 0.149582
+vt 0.885323 0.054214
+vt 0.771828 0.131713
+vt 0.800450 0.019164
+vt 0.725015 0.131760
+vt 0.708623 0.019255
+vt 0.681784 0.149715
+vt 0.623823 0.054476
+vt 0.648717 0.182846
+vt 0.558958 0.119463
+vt 0.630847 0.226107
+vt 0.523905 0.204324
+vt 0.630895 0.272914
+vt 0.523999 0.296138
+vt 0.746438 0.249188
+vt 0.648854 0.316139
+vt 0.681989 0.349203
+vt 0.624225 0.445785
+vt 0.559227 0.380928
+vt 0.725257 0.367072
+vt 0.709098 0.480836
+vt 0.380544 0.054220
+vt 0.445529 0.119080
+vt 0.480746 0.203871
+vt 0.480834 0.295685
+vt 0.445780 0.380544
+vt 0.380920 0.445529
+vt 0.296128 0.480746
+vt 0.204314 0.480834
+vt 0.119456 0.445780
+vt 0.054471 0.380920
+vt 0.019254 0.296129
+vt 0.019166 0.204315
+vt 0.054220 0.119456
+vt 0.119080 0.054471
+vt 0.203872 0.019254
+vt 0.295685 0.019166
+vt 0.656250 0.656250
+vt 0.562500 0.656250
+vt 0.562500 0.593750
+vt 0.656250 0.593750
+vt 0.187500 0.656250
+vt 0.093750 0.656250
+vt 0.093750 0.593750
+vt 0.187500 0.593750
+vt 0.750000 0.656250
+vt 0.750000 0.593750
+vt 0.281250 0.656250
+vt 0.281250 0.593750
+vt 0.843750 0.656250
+vt 0.843750 0.593750
+vt 0.375000 0.656250
+vt 0.375000 0.593750
+vt 0.468750 0.656250
+vt 0.468750 0.593750
+vt 0.562500 0.718750
+vt 0.562500 0.781250
+vt 0.468750 0.781250
+vt 0.468750 0.718750
+vt 0.656250 0.718750
+vt 0.656250 0.781250
+vt 0.187500 0.781250
+vt 0.093750 0.781250
+vt 0.093750 0.718750
+vt 0.187500 0.718750
+vt 0.750000 0.718750
+vt 0.750000 0.781250
+vt 0.281250 0.781250
+vt 0.281250 0.718750
+vt 0.843750 0.718750
+vt 0.843750 0.781250
+vt 0.375000 0.781250
+vt 0.375000 0.718750
+vt 0.031250 0.781250
+vt 0.031250 0.718750
+vt 0.906250 0.718750
+vt 0.906250 0.781250
+vt 0.031250 0.656250
+vt 0.031250 0.593750
+vt 0.906250 0.593750
+vt 0.906250 0.656250
+vt 0.468750 0.968750
+vt 0.468750 0.937500
+vt 0.562500 0.937500
+vt 0.562500 0.968750
+vt 0.281250 0.875000
+vt 0.281250 0.843750
+vt 0.375000 0.843750
+vt 0.375000 0.875000
+vt 0.750000 0.875000
+vt 0.750000 0.843750
+vt 0.843750 0.843750
+vt 0.843750 0.875000
+vt 0.375000 0.937500
+vt 0.375000 0.968750
+vt 0.562500 0.843750
+vt 0.562500 0.875000
+vt 0.468750 0.875000
+vt 0.468750 0.843750
+vt 0.656250 0.968750
+vt 0.656250 0.937500
+vt 0.750000 0.937500
+vt 0.750000 0.968750
+vt 0.093750 0.875000
+vt 0.093750 0.843750
+vt 0.187500 0.843750
+vt 0.187500 0.875000
+vt 0.187500 0.968750
+vt 0.187500 0.937500
+vt 0.281250 0.937500
+vt 0.281250 0.968750
+vt 0.656250 0.843750
+vt 0.656250 0.875000
+vt 0.093750 0.937500
+vt 0.093750 0.968750
+vt 0.843750 0.937500
+vt 0.843750 0.968750
+vt 0.031250 0.875000
+vt 0.031250 0.843750
+vt 0.906250 0.937500
+vt 0.906250 0.968750
+vt 0.468750 0.531250
+vt 0.437500 0.531250
+vt 0.437500 0.468750
+vt 0.468750 0.468750
+vt 0.531250 0.468750
+vt 0.562500 0.468750
+vt 0.562500 0.531250
+vt 0.531250 0.531250
+vt 0.031250 0.968750
+vt 0.031250 0.937500
+vt 0.906250 0.843750
+vt 0.906250 0.875000
+vt 1.000000 0.687500
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 1.000000 0.625000
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.437500
+vt 1.000000 0.562500
+vt 0.000000 0.562500
+vt 1.000000 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.375000
+vt 1.000000 0.375000
+vt 0.000000 0.312500
+vt 1.000000 0.312500
+vt 0.000000 0.250000
+vt 1.000000 0.250000
+vt 0.468305 0.079673
+vt 0.412257 0.079573
+vt 0.407814 0.218511
+vt 0.467146 0.218661
+vt 0.354874 0.079575
+vt 0.347359 0.218514
+vt 0.406334 0.400298
+vt 0.466718 0.400475
+vt 0.406298 0.597260
+vt 0.466634 0.597437
+vt 0.407692 0.779410
+vt 0.466871 0.779560
+vt 0.411972 0.919018
+vt 0.467719 0.919119
+vt 0.472769 0.004672
+vt 0.430251 0.004637
+vt 0.429251 0.994830
+vt 0.471228 0.994866
+vt 0.344933 0.400302
+vt 0.344952 0.597264
+vt 0.354940 0.919021
+vt 0.386448 0.994832
+vt 0.295006 0.079680
+vt 0.284893 0.218671
+vt 0.347412 0.779414
+vt 0.386810 0.004638
+vt 0.281729 0.400488
+vt 0.281805 0.597449
+vt 0.295469 0.919126
+vt 0.341881 0.994868
+vt 0.231306 0.079871
+vt 0.219524 0.218957
+vt 0.285135 0.779571
+vt 0.341436 0.004675
+vt 0.215974 0.400825
+vt 0.216103 0.597787
+vt 0.232190 0.919317
+vt 0.293910 0.994936
+vt 0.162313 0.080120
+vt 0.150493 0.219330
+vt 0.219948 0.779857
+vt 0.292351 0.004742
+vt 0.147088 0.401264
+vt 0.147256 0.598226
+vt 0.163581 0.919566
+vt 0.239114 0.995023
+vt 0.086917 0.080388
+vt 0.077493 0.219731
+vt 0.151059 0.780229
+vt 0.235866 0.004829
+vt 0.074908 0.401738
+vt 0.075090 0.598699
+vt 0.088402 0.919834
+vt 0.169070 0.995117
+vt 0.005453 0.080635
+vt 0.001116 0.220100
+vt 0.078116 0.780631
+vt 0.163091 0.004924
+vt 0.000001 0.402174
+vt 0.000161 0.599135
+vt 0.006812 0.920081
+vt 0.061821 0.995203
+vt 0.996946 0.080823
+vt 0.999218 0.220382
+vt 0.001668 0.781000
+vt 0.052757 0.005010
+vt 0.999899 0.402505
+vt 1.000000 0.599467
+vt 0.997775 0.920268
+vt 0.975623 0.995270
+vt 0.913891 0.080924
+vt 0.921970 0.220532
+vt 0.999565 0.781281
+vt 0.971514 0.005076
+vt 0.924258 0.402682
+vt 0.924281 0.599644
+vt 0.913986 0.920369
+vt 0.839614 0.995305
+vt 0.836194 0.080921
+vt 0.847580 0.220528
+vt 0.922040 0.781431
+vt 0.842303 0.005111
+vt 0.850877 0.402678
+vt 0.850823 0.599640
+vt 0.835650 0.920367
+vt 0.755814 0.995304
+vt 0.765019 0.080816
+vt 0.777068 0.220371
+vt 0.847386 0.781428
+vt 0.759851 0.005111
+vt 0.780666 0.402493
+vt 0.780554 0.599454
+vt 0.764076 0.920262
+vt 0.695348 0.995267
+vt 0.699350 0.080851
+vt 0.710407 0.220085
+vt 0.776679 0.781271
+vt 0.699221 0.005074
+vt 0.713718 0.402155
+vt 0.713572 0.599117
+vt 0.698496 0.920070
+vt 0.644737 0.995200
+vt 0.638553 0.080376
+vt 0.646960 0.219713
+vt 0.709913 0.780985
+vt 0.648173 0.005007
+vt 0.649585 0.401716
+vt 0.649428 0.598678
+vt 0.637430 0.919822
+vt 0.598823 0.995113
+vt 0.555325 0.995018
+vt 0.466358 0.999992
+vt 0.637347 0.999992
+vt 0.646441 0.780612
+vt 0.601788 0.004919
+vt 0.587561 0.401243
+vt 0.587414 0.598204
+vt 0.579416 0.919554
+vt 0.585862 0.219311
+vt 0.580433 0.080108
+vt 0.524036 0.079861
+vt 0.526213 0.218942
+vt 0.585379 0.780211
+vt 0.557823 0.004825
+vt 0.526868 0.400807
+vt 0.526746 0.597769
+vt 0.523203 0.919307
+vt 0.513047 0.994932
+vt 0.525815 0.779841
+vt 0.515078 0.004738
+vt 0.432160 0.999992
+vt 0.449259 0.999992
+vt 0.465321 0.000000
+vt 0.473725 0.000000
+vt 0.459221 0.000004
+vt 0.456562 0.000011
+vt 0.458447 0.000020
+vt 0.465537 0.000030
+vt 0.477285 0.000039
+vt 0.491356 0.000045
+vt 0.504250 0.000049
+vt 0.513082 0.000049
+vt 0.516717 0.000045
+vt 0.515499 0.000038
+vt 0.510446 0.000029
+vt 0.502709 0.000019
+vt 0.493364 0.000010
+vt 0.483391 0.000004
+vt 0.423610 0.999992
+vt 0.415061 0.999992
+vt 0.457808 0.999992
+vt 0.645897 0.999992
+vn -0.284600 -0.952900 0.104700
+vn -0.222900 -0.952900 0.205700
+vn -0.127200 -0.952900 0.275300
+vn -0.012200 -0.952900 0.303000
+vn 0.104700 -0.952900 0.284600
+vn 0.205700 -0.952900 0.222900
+vn 0.275300 -0.952900 0.127200
+vn 0.303000 -0.952900 0.012200
+vn 0.284600 -0.952900 -0.104700
+vn 0.222900 -0.952900 -0.205700
+vn 0.127200 -0.952900 -0.275300
+vn 0.012200 -0.952900 -0.303000
+vn -0.035500 -0.994700 -0.096500
+vn -0.205700 -0.952900 -0.222900
+vn -0.275300 -0.952900 -0.127200
+vn -0.102700 -0.994700 -0.004100
+vn -0.096500 -0.994700 0.035500
+vn -0.075500 -0.994700 0.069700
+vn -0.043100 -0.994700 0.093300
+vn -0.004100 -0.994700 0.102700
+vn 0.035500 -0.994700 0.096500
+vn 0.069700 -0.994700 0.075500
+vn 0.093300 -0.994700 0.043100
+vn 0.102700 -0.994700 0.004100
+vn 0.096500 -0.994700 -0.035500
+vn 0.075500 -0.994700 -0.069700
+vn 0.043100 -0.994700 -0.093300
+vn 0.004100 -0.994700 -0.102700
+vn -0.069700 -0.994700 -0.075500
+vn -0.104700 -0.952900 -0.284600
+vn -0.093300 -0.994700 -0.043100
+vn 0.000000 1.000000 0.000000
+vn -0.000000 -0.001000 -1.000000
+vn 0.000000 0.001000 1.000000
+vn -0.303000 -0.952900 -0.012200
+vn 0.923800 -0.382900 0.000300
+vn 1.000000 -0.000300 -0.000000
+vn -0.924000 -0.382400 0.000400
+vn -1.000000 0.000300 0.000000
+vn 0.000300 1.000000 -0.001000
+vn 0.290600 0.956900 -0.000900
+vn 0.706900 -0.707300 0.000600
+vn -0.706900 0.707300 -0.000600
+vn -0.923800 0.382900 -0.000300
+vn 0.924000 0.382400 -0.000400
+vn 0.707300 0.706900 -0.000700
+vn -0.471600 -0.881800 0.000900
+vn -0.707300 -0.706900 0.000700
+vn -0.000300 -1.000000 0.001000
+vn 0.382400 -0.924000 0.000900
+vn -0.382400 0.924000 -0.000900
+vn -0.290600 -0.956900 0.000900
+vn 0.471600 0.881800 -0.000900
+vn -0.904700 0.378700 -0.195400
+vn -0.511000 0.217500 -0.831600
+vn 0.182100 -0.071100 -0.980700
+vn 0.768400 -0.318000 -0.555300
+vn 0.904700 -0.378700 0.195400
+vn 0.510900 -0.217500 0.831600
+vn -0.182100 0.071100 0.980700
+vn -0.768400 0.318000 0.555300
+vn 0.842600 0.534500 0.065000
+vn 0.781500 0.558400 0.278300
+vn 0.890300 0.212300 0.402700
+vn 0.980000 0.177200 0.090000
+vn 0.649900 0.612400 0.450200
+vn 0.697300 0.291400 0.654800
+vn 0.868600 -0.163300 0.467800
+vn 0.973600 -0.204300 0.101700
+vn 0.720600 -0.514600 0.464700
+vn 0.825600 -0.555600 0.098600
+vn 0.467400 -0.791400 0.393900
+vn 0.557000 -0.826500 0.081100
+vn 0.144400 -0.953400 0.265000
+vn 0.205600 -0.977300 0.051700
+vn 0.598300 0.800600 0.032500
+vn 0.572500 0.810700 0.122700
+vn -0.180900 -0.977600 0.107100
+vn -0.155000 -0.987800 0.016800
+vn 0.642700 -0.070700 0.762800
+vn 0.494600 -0.421900 0.759800
+vn 0.012800 -0.899400 0.436900
+vn -0.236600 -0.954800 0.179800
+vn 0.467800 0.688200 0.554600
+vn 0.430300 0.402600 0.807900
+vn 0.274300 -0.712300 0.646000
+vn 0.516800 0.833500 0.195300
+vn 0.330100 0.059400 0.942000
+vn 0.182100 -0.291800 0.939000
+vn -0.169300 -0.823600 0.541300
+vn -0.313600 -0.922700 0.224000
+vn 0.262900 0.774300 0.575600
+vn 0.130000 0.528900 0.838700
+vn 0.007300 -0.601100 0.799100
+vn 0.439900 0.865500 0.239400
+vn -0.021300 0.207300 0.978000
+vn -0.169400 -0.144000 0.974900
+vn -0.374100 -0.737400 0.562300
+vn -0.400300 -0.886300 0.232900
+vn 0.066600 0.857600 0.509900
+vn -0.157900 0.651100 0.742400
+vn -0.293000 -0.474800 0.829800
+vn 0.353300 0.901900 0.248300
+vn -0.358300 0.350300 0.865400
+vn -0.506400 -0.001000 0.862300
+vn -0.570500 -0.654100 0.496700
+vn -0.483400 -0.851000 0.205100
+vn -0.091300 0.925400 0.367700
+vn -0.389500 0.750500 0.533800
+vn -0.580900 -0.352700 0.733600
+vn 0.270300 0.937100 0.220500
+vn -0.629500 0.466700 0.621200
+vn -0.777600 0.115400 0.618100
+vn -0.728400 -0.586300 0.354400
+vn -0.550200 -0.822300 0.144900
+vn -0.186900 0.967500 0.170400
+vn -0.529700 0.812100 0.244600
+vn -0.812600 -0.253200 0.525000
+vn 0.203600 0.965800 0.160400
+vn -0.793600 0.538800 0.282700
+vn -0.941600 0.187500 0.279600
+vn -0.824000 -0.544300 0.157100
+vn -0.590700 -0.804500 0.061400
+vn -0.205600 0.977300 -0.051700
+vn -0.557000 0.826500 -0.081100
+vn -0.952700 -0.191600 0.235800
+vn 0.163200 0.983600 0.077100
+vn -0.825600 0.555600 -0.098600
+vn -0.973600 0.204300 -0.101700
+vn -0.842600 -0.534500 -0.065000
+vn -0.598600 -0.800400 -0.032500
+vn -0.144400 0.953400 -0.265000
+vn -0.467400 0.791400 -0.393900
+vn -0.980000 -0.177200 -0.090000
+vn 0.155300 0.987700 -0.016800
+vn -0.720600 0.514600 -0.464700
+vn -0.868600 0.163300 -0.467800
+vn -0.781500 -0.558400 -0.278300
+vn -0.572700 -0.810500 -0.122800
+vn -0.012800 0.899400 -0.436900
+vn -0.274300 0.712300 -0.646000
+vn -0.890300 -0.212300 -0.402700
+vn 0.181200 0.977600 -0.106900
+vn -0.494600 0.421900 -0.759800
+vn -0.642700 0.070700 -0.762800
+vn -0.649900 -0.612400 -0.450200
+vn -0.517000 -0.833300 -0.195500
+vn 0.169800 0.823400 -0.541400
+vn -0.007100 0.601200 -0.799100
+vn -0.697300 -0.291400 -0.654800
+vn 0.236800 0.954800 -0.179600
+vn -0.182100 0.291800 -0.939000
+vn -0.330100 -0.059400 -0.942000
+vn -0.467800 -0.688200 -0.554600
+vn -0.439900 -0.865400 -0.239700
+vn 0.374400 0.737100 -0.562500
+vn 0.293000 0.475000 -0.829800
+vn -0.430300 -0.402600 -0.807900
+vn 0.314100 0.922600 -0.223900
+vn 0.169400 0.144000 -0.974900
+vn 0.021300 -0.207300 -0.978000
+vn -0.262900 -0.774300 -0.575600
+vn -0.353300 -0.901900 -0.248600
+vn 0.570200 0.654300 -0.496700
+vn 0.580800 0.352700 -0.733600
+vn -0.130000 -0.528900 -0.838700
+vn 0.400300 0.886200 -0.233000
+vn 0.506400 0.001000 -0.862300
+vn 0.358300 -0.350300 -0.865400
+vn -0.066600 -0.857600 -0.509900
+vn -0.270200 -0.937100 -0.220800
+vn -0.203300 -0.965800 -0.160600
+vn -0.347900 -0.936500 -0.043200
+vn -0.363200 -0.930000 -0.057000
+vn 0.157900 -0.651100 -0.742400
+vn 0.483000 0.851300 -0.205000
+vn 0.777600 -0.115400 -0.618100
+vn 0.629500 -0.466700 -0.621200
+vn 0.091300 -0.925400 -0.367700
+vn 0.812600 0.253200 -0.525000
+vn 0.728400 0.586300 -0.354400
+vn 0.824000 0.544300 -0.157100
+vn 0.952700 0.191600 -0.235800
+vn 0.389500 -0.750500 -0.533800
+vn 0.550000 0.822500 -0.144700
+vn 0.941600 -0.187500 -0.279600
+vn 0.793600 -0.538800 -0.282700
+vn 0.186900 -0.967500 -0.170400
+vn -0.162900 -0.983600 -0.077200
+vn 0.529700 -0.812100 -0.244600
+vn 0.590400 0.804700 -0.061300
+vn -0.342700 -0.939300 0.018300
+vn -0.336800 -0.941600 -0.002400
+vn 0.419500 0.906300 0.050600
+vn 0.432100 0.901200 0.034100
+vn 0.402100 0.913600 0.060600
+vn 0.382400 0.921900 0.062600
+vn 0.363600 0.929900 0.056300
+vn 0.348400 0.936400 0.042700
+vn 0.339300 0.940400 0.023800
+vn 0.337500 0.941300 0.002500
+vn 0.343400 0.939000 -0.018000
+vn 0.356000 0.933900 -0.034500
+vn 0.373400 0.926600 -0.044500
+vn 0.393100 0.918300 -0.046500
+vn 0.411900 0.910300 -0.040200
+vn 0.427100 0.903800 -0.026500
+vn 0.436200 0.899800 -0.007600
+vn 0.438000 0.898900 0.013700
+vn -0.355500 -0.934000 0.035000
+vn -0.373200 -0.926600 0.045200
+vn -0.393100 -0.918300 0.047200
+vn -0.412200 -0.910200 0.040800
+vn -0.427600 -0.903600 0.027000
+vn -0.436900 -0.899500 0.007800
+vn -0.438700 -0.898500 -0.013800
+vn -0.432700 -0.900900 -0.034500
+vn -0.419900 -0.906100 -0.051200
+vn -0.402200 -0.913500 -0.061400
+vn -0.382300 -0.921800 -0.063400
+vn -0.338600 -0.940600 -0.024000
+g Sphere_Sphere.001_wood
+s off
+f 1/1/1 3/2/1 4/3/1 2/4/1
+f 3/2/2 5/5/2 6/6/2 4/3/2
+f 5/5/3 7/7/3 8/8/3 6/6/3
+f 7/7/4 9/9/4 10/10/4 8/8/4
+f 9/9/5 11/11/5 12/12/5 10/10/5
+f 11/11/6 13/13/6 14/14/6 12/12/6
+f 13/13/7 15/15/7 16/16/7 14/14/7
+f 15/15/8 17/17/8 18/18/8 16/16/8
+f 17/17/9 19/19/9 20/20/9 18/18/9
+f 19/19/10 21/21/10 22/22/10 20/20/10
+f 21/21/11 23/23/11 24/24/11 22/22/11
+f 23/23/12 25/25/12 26/26/12 24/24/12
+f 27/27/13 28/28/13 25/25/13
+f 28/28/14 30/29/14 31/30/14 29/31/14
+f 30/29/15 32/32/15 33/33/15 31/30/15
+f 32/32/16 27/27/16 1/1/16
+f 27/27/17 3/2/17 1/1/17
+f 27/27/18 5/5/18 3/2/18
+f 27/27/19 7/7/19 5/5/19
+f 27/27/20 9/9/20 7/7/20
+f 27/27/21 11/11/21 9/9/21
+f 27/27/22 13/13/22 11/11/22
+f 27/27/23 15/15/23 13/13/23
+f 27/27/24 17/17/24 15/15/24
+f 27/27/25 19/19/25 17/17/25
+f 27/27/26 21/21/26 19/19/26
+f 27/27/27 23/23/27 21/21/27
+f 27/27/28 25/25/28 23/23/28
+f 27/27/29 30/29/29 28/28/29
+f 25/25/30 28/28/30 29/31/30 26/26/30
+f 27/27/31 32/32/31 30/29/31
+f 2/34/32 4/35/32 6/36/32 8/37/32 10/38/32 12/39/32 14/40/32 16/41/32 18/42/32 20/43/32 22/44/32 24/45/32 26/46/32 29/47/32 31/48/32 33/49/32
+f 116/50/33 117/51/33 126/52/33 125/53/33
+f 121/54/33 113/55/33 122/56/33 130/57/33
+f 115/58/33 116/50/33 125/53/33 124/59/33
+f 120/60/33 121/54/33 130/57/33 129/61/33
+f 114/62/33 115/58/33 124/59/33 123/63/33
+f 119/64/33 120/60/33 129/61/33 128/65/33
+f 118/66/33 119/64/33 128/65/33 127/67/33
+f 135/68/34 144/69/34 145/70/34 136/71/34
+f 134/72/34 143/73/34 144/69/34 135/68/34
+f 148/74/34 140/75/34 131/76/34 139/77/34
+f 133/78/34 142/79/34 143/73/34 134/72/34
+f 147/80/34 148/74/34 139/77/34 138/81/34
+f 132/82/34 141/83/34 142/79/34 133/78/34
+f 146/84/34 147/80/34 138/81/34 137/85/34
+f 145/70/34 146/84/34 137/85/34 136/71/34
+f 140/75/34 155/86/34 153/87/34 131/76/34
+f 132/82/34 154/88/34 156/89/34 141/83/34
+f 113/55/33 149/90/33 151/91/33 122/56/33
+f 123/63/33 152/92/33 150/93/33 114/62/33
+f 33/33/35 32/32/35 1/1/35 2/4/35
+f 117/51/33 118/66/33 127/67/33 126/52/33
+s 1
+f 118/94/36 136/95/36 137/96/37 119/97/37
+f 129/98/38 147/99/38 146/100/39 128/101/39
+f 124/102/40 142/103/40 141/104/41 123/105/41
+f 135/106/42 136/95/36 118/94/36 117/107/42
+f 144/108/43 126/109/43 127/110/44 145/111/44
+f 120/112/45 138/113/45 139/114/46 121/115/46
+f 122/116/47 140/117/47 148/118/48 130/119/48
+f 115/120/49 133/121/49 134/122/50 116/123/50
+f 126/109/43 144/108/43 143/124/51 125/125/51
+f 137/96/37 138/113/45 120/112/45 119/97/37
+f 132/126/52 133/121/49 115/120/49 114/127/52
+f 128/101/39 146/100/39 145/111/44 127/110/44
+f 139/114/46 131/128/53 113/129/53 121/115/46
+f 134/122/50 135/106/42 117/107/42 116/123/50
+f 122/116/47 151/130/50 155/131/50 140/117/47
+f 130/119/48 148/118/48 147/99/38 129/98/38
+f 125/125/51 143/124/51 142/103/40 124/102/40
+f 131/128/53 153/132/45 149/133/45 113/129/53
+f 149/134/45 153/135/45 155/136/50 151/137/50
+f 152/138/45 156/139/45 154/140/50 150/141/50
+f 114/127/52 150/142/50 154/143/50 132/126/52
+f 141/104/41 156/144/45 152/145/45 123/105/41
+g Sphere_Sphere.001_metal
+s off
+f 54/146/54 56/146/54 57/147/54 55/147/54 53/148/54 51/148/54 49/148/54 48/149/54 50/149/54 52/149/54
+f 62/150/55 64/151/55 65/152/55 63/153/55 61/153/55 59/153/55 57/153/55 56/150/55 58/150/55 60/150/55
+f 70/154/56 72/154/56 73/155/56 71/155/56 69/152/56 67/152/56 65/152/56 64/151/56 66/151/56 68/151/56
+f 78/149/57 80/149/57 81/148/57 79/148/57 77/155/57 75/155/57 73/155/57 72/154/57 74/154/57 76/154/57
+f 86/156/58 88/156/58 89/157/58 87/157/58 85/147/58 83/147/58 81/147/58 80/146/58 82/146/58 84/146/58
+f 94/158/59 96/158/59 97/159/59 95/159/59 93/159/59 91/150/59 89/150/59 88/153/59 90/153/59 92/158/59
+f 38/160/60 40/160/60 41/161/60 39/161/60 37/161/60 35/159/60 97/159/60 96/158/60 34/158/60 36/160/60
+f 46/162/61 48/162/61 49/163/61 47/163/61 45/163/61 43/161/61 41/161/61 40/160/61 42/160/61 44/162/61
+g Sphere_Sphere.001_globe
+s 1
+f 283/164/62 163/165/63 162/166/64 282/167/65
+f 163/165/63 171/168/66 170/169/67 162/166/64
+f 282/167/65 162/166/64 161/170/68 281/171/69
+f 281/171/69 161/170/68 160/172/70 280/173/71
+f 280/173/71 160/172/70 159/174/72 279/175/73
+f 279/175/73 159/174/72 158/176/74 278/177/75
+f 284/178/76 164/179/77 163/165/63 283/164/62
+f 278/177/75 158/176/74 157/180/78 277/181/79
+f 161/170/68 169/182/80 168/183/81 160/172/70
+f 158/176/74 166/184/82 165/185/83 157/180/78
+f 162/166/64 170/169/67 169/182/80 161/170/68
+f 171/168/66 179/186/84 178/187/85 170/169/67
+f 160/172/70 168/183/81 167/188/86 159/174/72
+f 159/174/72 167/188/86 166/184/82 158/176/74
+f 164/179/77 172/189/87 171/168/66 163/165/63
+f 169/182/80 177/190/88 176/191/89 168/183/81
+f 166/184/82 174/192/90 173/193/91 165/185/83
+f 170/169/67 178/187/85 177/190/88 169/182/80
+f 179/186/84 187/194/92 186/195/93 178/187/85
+f 168/183/81 176/191/89 175/196/94 167/188/86
+f 167/188/86 175/196/94 174/192/90 166/184/82
+f 172/189/87 180/197/95 179/186/84 171/168/66
+f 177/190/88 185/198/96 184/199/97 176/191/89
+f 174/192/90 182/200/98 181/201/99 173/193/91
+f 178/187/85 186/195/93 185/198/96 177/190/88
+f 187/194/92 195/202/100 194/203/101 186/195/93
+f 176/191/89 184/199/97 183/204/102 175/196/94
+f 175/196/94 183/204/102 182/200/98 174/192/90
+f 180/197/95 188/205/103 187/194/92 179/186/84
+f 185/198/96 193/206/104 192/207/105 184/199/97
+f 182/200/98 190/208/106 189/209/107 181/201/99
+f 186/195/93 194/203/101 193/206/104 185/198/96
+f 195/202/100 203/210/108 202/211/109 194/203/101
+f 184/199/97 192/207/105 191/212/110 183/204/102
+f 183/204/102 191/212/110 190/208/106 182/200/98
+f 188/205/103 196/213/111 195/202/100 187/194/92
+f 193/206/104 201/214/112 200/215/113 192/207/105
+f 190/208/106 198/216/114 197/217/115 189/209/107
+f 194/203/101 202/211/109 201/214/112 193/206/104
+f 203/210/108 211/218/116 210/219/117 202/211/109
+f 192/207/105 200/215/113 199/220/118 191/212/110
+f 191/212/110 199/220/118 198/216/114 190/208/106
+f 196/213/111 204/221/119 203/210/108 195/202/100
+f 201/214/112 209/222/120 208/223/121 200/215/113
+f 198/216/114 206/224/122 205/225/123 197/217/115
+f 202/211/109 210/219/117 209/222/120 201/214/112
+f 211/218/116 219/226/124 218/227/125 210/219/117
+f 200/215/113 208/223/121 207/228/126 199/220/118
+f 199/220/118 207/228/126 206/224/122 198/216/114
+f 204/221/119 212/229/127 211/218/116 203/210/108
+f 209/222/120 217/230/128 216/231/129 208/223/121
+f 206/224/122 214/232/130 213/233/131 205/225/123
+f 210/219/117 218/227/125 217/230/128 209/222/120
+f 219/226/124 227/234/132 226/235/133 218/227/125
+f 208/223/121 216/231/129 215/236/134 207/228/126
+f 207/228/126 215/236/134 214/232/130 206/224/122
+f 212/229/127 220/237/135 219/226/124 211/218/116
+f 217/230/128 225/238/136 224/239/137 216/231/129
+f 214/232/130 222/240/138 221/241/139 213/233/131
+f 218/227/125 226/235/133 225/238/136 217/230/128
+f 227/234/132 235/242/140 234/243/141 226/235/133
+f 216/231/129 224/239/137 223/244/142 215/236/134
+f 215/236/134 223/244/142 222/240/138 214/232/130
+f 220/237/135 228/245/143 227/234/132 219/226/124
+f 225/238/136 233/246/144 232/247/145 224/239/137
+f 222/240/138 230/248/146 229/249/147 221/241/139
+f 226/235/133 234/243/141 233/246/144 225/238/136
+f 235/242/140 243/250/148 242/251/149 234/243/141
+f 224/239/137 232/247/145 231/252/150 223/244/142
+f 223/244/142 231/252/150 230/248/146 222/240/138
+f 228/245/143 236/253/151 235/242/140 227/234/132
+f 233/246/144 241/254/152 240/255/153 232/247/145
+f 230/248/146 238/256/154 237/257/155 229/249/147
+f 234/243/141 242/251/149 241/254/152 233/246/144
+f 243/250/148 251/258/156 250/259/157 242/251/149
+f 232/247/145 240/255/153 239/260/158 231/252/150
+f 231/252/150 239/260/158 238/256/154 230/248/146
+f 236/253/151 244/261/159 243/250/148 235/242/140
+f 241/254/152 249/262/160 248/263/161 240/255/153
+f 238/256/154 246/264/162 245/265/163 237/257/155
+f 242/251/149 250/259/157 249/262/160 241/254/152
+f 251/258/156 259/266/164 258/267/165 250/259/157
+f 240/255/153 248/263/161 247/268/166 239/260/158
+f 239/260/158 247/268/166 246/264/162 238/256/154
+f 244/261/159 252/269/167 251/258/156 243/250/148
+f 249/262/160 257/270/168 256/271/169 248/263/161
+f 246/264/162 254/272/170 253/273/171 245/265/163
+f 250/259/157 258/267/165 257/270/168 249/262/160
+f 253/273/171 261/274/172 298/275/173 297/276/174
+f 248/263/161 256/271/169 255/277/175 247/268/166
+f 247/268/166 255/277/175 254/272/170 246/264/162
+f 252/269/167 260/278/176 259/266/164 251/258/156
+f 257/270/168 265/279/177 264/280/178 256/271/169
+f 254/272/170 262/281/179 261/274/172 253/273/171
+f 258/267/165 266/282/180 265/279/177 257/270/168
+f 267/283/181 275/284/182 274/285/183 266/282/180
+f 256/271/169 264/280/178 263/286/184 255/277/175
+f 255/277/175 263/286/184 262/281/179 254/272/170
+f 260/278/176 268/287/185 267/283/181 259/266/164
+f 265/279/177 273/288/186 272/289/187 264/280/178
+f 262/281/179 270/290/188 269/291/189 261/274/172
+f 266/282/180 274/285/183 273/288/186 265/279/177
+f 275/284/182 283/164/62 282/167/65 274/285/183
+f 264/280/178 272/289/187 271/292/190 263/286/184
+f 263/286/184 271/292/190 270/290/188 262/281/179
+f 268/287/185 276/293/191 275/284/182 267/283/181
+f 273/288/186 281/171/69 280/173/71 272/289/187
+f 270/290/188 278/177/75 277/181/79 269/291/189
+f 274/285/183 282/167/65 281/171/69 273/288/186
+f 277/181/79 157/180/78 285/294/192 300/295/193
+f 272/289/187 280/173/71 279/175/73 271/292/190
+f 271/292/190 279/175/73 278/177/75 270/290/188
+f 276/293/191 284/178/76 283/164/62 275/284/182
+f 302/296/194 172/189/87 164/179/77 301/297/195
+f 303/298/196 180/197/95 172/189/87 302/296/194
+f 304/299/197 188/205/103 180/197/95 303/298/196
+f 305/300/198 196/213/111 188/205/103 304/299/197
+f 306/301/199 204/221/119 196/213/111 305/300/198
+f 307/302/200 212/229/127 204/221/119 306/301/199
+f 308/303/201 220/237/135 212/229/127 307/302/200
+f 309/304/202 228/245/143 220/237/135 308/303/201
+f 310/305/203 236/253/151 228/245/143 309/304/202
+f 311/306/204 244/261/159 236/253/151 310/305/203
+f 312/307/205 252/269/167 244/261/159 311/306/204
+f 313/308/206 260/278/176 252/269/167 312/307/205
+f 314/309/207 268/287/185 260/278/176 313/308/206
+f 315/310/208 276/293/191 268/287/185 314/309/207
+f 316/311/209 284/178/76 276/293/191 315/310/208
+f 157/180/78 165/185/83 286/312/210 285/294/192
+f 165/185/83 173/193/91 287/313/211 286/312/210
+f 173/193/91 181/201/99 288/313/212 287/313/211
+f 181/201/99 189/209/107 289/313/213 288/313/212
+f 189/209/107 197/217/115 290/312/214 289/313/213
+f 197/217/115 205/225/123 291/294/215 290/312/214
+f 205/225/123 213/233/131 292/314/216 291/294/215
+f 213/233/131 221/241/139 293/275/217 292/314/216
+f 221/241/139 229/249/147 294/276/218 293/275/217
+f 229/249/147 237/257/155 295/315/219 294/276/218
+f 237/257/155 245/265/163 296/315/220 295/315/219
+f 245/265/163 253/273/171 297/276/174 296/315/220
+f 261/274/172 269/291/189 299/314/221 298/275/173
+f 259/266/164 267/283/181 266/282/180 258/267/165
+f 269/291/189 277/181/79 300/295/193 299/314/221
+f 164/179/77 284/178/76 316/311/209 301/297/195
+l 98 99
+l 99 100
+l 100 101
+l 101 102
+l 102 103
+l 103 104
+l 104 105
+l 105 106
+l 107 108
+l 108 109
+l 109 110
+l 110 111
+l 111 112
+l 112 98
diff --git a/homedecor_modpack/homedecor/models/homedecor_desk_lamp.obj b/homedecor_modpack/homedecor/models/homedecor_desk_lamp.obj
new file mode 100644
index 0000000..c1213ea
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_desk_lamp.obj
@@ -0,0 +1,1223 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_desk_lamp.mtl
+o bulb
+v -0.157569 -0.085144 0.010337
+v -0.206730 -0.062515 0.010337
+v -0.191531 -0.048448 -0.039662
+v -0.146821 -0.075197 -0.025018
+v -0.225492 -0.011753 0.010337
+v -0.214743 -0.001806 -0.025018
+v -0.154835 -0.014486 -0.060373
+v -0.120873 -0.051182 -0.039662
+v -0.188796 0.022209 -0.039662
+v -0.120873 -0.051182 0.060337
+v -0.154835 -0.014486 0.081047
+v -0.191531 -0.048448 0.060337
+v -0.146821 -0.075197 0.045692
+v -0.188796 0.022209 0.060337
+v -0.214743 -0.001806 0.045692
+v -0.106806 -0.066382 0.010337
+v -0.202863 0.037408 0.010337
+vt 0.375348 0.375348
+vt 0.624652 0.375348
+vt 0.624652 0.624652
+vt 0.375348 0.624652
+g bulb_bulb_Material.001
+usemtl Material.001
+s 1
+f 1/1 2/2 3/3 4/4
+f 2/1 5/2 6/3 3/4
+f 4/1 3/2 7/3 8/4
+f 3/1 6/2 9/3 7/4
+f 10/1 11/2 12/3 13/4
+f 11/1 14/2 15/3 12/4
+f 16/1 1/2 4/3
+f 5/1 17/2 6/3
+f 16/1 4/2 8/3
+f 6/1 17/2 9/3
+f 16/1 10/2 13/3
+f 14/1 17/2 15/3
+f 13/1 1/2 16/3
+f 2/1 1/2 13/3 12/4
+f 12/1 15/2 5/3 2/4
+f 15/1 17/2 5/3
+o metal_bulb
+v -0.319468 -0.008127 0.010226
+v -0.286512 0.021833 0.010199
+v -0.280568 0.015348 -0.034351
+v -0.313508 -0.014629 -0.034445
+v -0.247764 0.045512 0.010160
+v -0.242273 0.039521 -0.030999
+v -0.202905 0.052560 0.010102
+v -0.198702 0.047975 -0.021400
+v -0.263519 -0.003175 -0.072143
+v -0.296412 -0.033202 -0.072339
+v -0.226521 0.022408 -0.065914
+v -0.186646 0.034877 -0.048123
+v -0.237959 -0.030916 -0.097425
+v -0.270783 -0.061019 -0.097689
+v -0.202907 -0.003222 -0.089271
+v -0.168573 0.015261 -0.066000
+v -0.207779 -0.063653 -0.106346
+v -0.240522 -0.093844 -0.106635
+v -0.175025 -0.033467 -0.097514
+v -0.147233 -0.007887 -0.072308
+v -0.177576 -0.096400 -0.097550
+v -0.210236 -0.126680 -0.097815
+v -0.147121 -0.063721 -0.089387
+v -0.125876 -0.031043 -0.066088
+v -0.151945 -0.124173 -0.072375
+v -0.184537 -0.154528 -0.072572
+v -0.123441 -0.089380 -0.066128
+v -0.107752 -0.050682 -0.048287
+v -0.134791 -0.142744 -0.034653
+v -0.167335 -0.173150 -0.034748
+v -0.107592 -0.106537 -0.031278
+v -0.095622 -0.063813 -0.021614
+v -0.128723 -0.149285 0.009871
+v -0.161251 -0.179708 0.009897
+v -0.101987 -0.112580 0.009857
+v -0.091332 -0.068438 0.009870
+v -0.134667 -0.142800 0.054421
+v -0.167211 -0.173206 0.054568
+v -0.107478 -0.106589 0.051016
+v -0.095534 -0.063853 0.041372
+v -0.151716 -0.124277 0.092213
+v -0.184307 -0.154633 0.092462
+v -0.123230 -0.089476 0.085931
+v -0.107590 -0.050755 0.068095
+v -0.177276 -0.096536 0.117495
+v -0.209936 -0.126816 0.117812
+v -0.146844 -0.063846 0.109288
+v -0.125664 -0.031139 0.085971
+v -0.207456 -0.063799 0.126416
+v -0.240197 -0.093991 0.126758
+v -0.174726 -0.033602 0.117531
+v -0.147004 -0.007991 0.092280
+v -0.237660 -0.031052 0.117620
+v -0.270483 -0.061155 0.117938
+v -0.202631 -0.003347 0.109404
+v -0.168361 0.015165 0.086060
+v -0.263290 -0.003278 0.092445
+v -0.296183 -0.033306 0.092694
+v -0.226310 0.022312 0.086145
+v -0.186484 0.034804 0.068258
+v -0.280444 0.015292 0.054723
+v -0.313384 -0.014685 0.054871
+v -0.242159 0.039469 0.051295
+v -0.198615 0.047935 0.041585
+v -0.042757 0.003935 0.009848
+v -0.045990 0.007420 -0.013878
+v -0.038616 0.014220 -0.013884
+v -0.035383 0.010734 0.009842
+v -0.055009 0.017261 0.053726
+v -0.045924 0.007390 0.033588
+v -0.038550 0.014190 0.033582
+v -0.047635 0.024060 0.053721
+v -0.084711 0.049488 0.071953
+v -0.068629 0.032044 0.067198
+v -0.061256 0.038843 0.067192
+v -0.077338 0.056288 0.071947
+v -0.123672 0.091664 -0.013717
+v -0.126839 0.095120 0.010023
+v -0.119465 0.101919 0.010017
+v -0.116298 0.098464 -0.013723
+v -0.114464 0.081739 0.053850
+v -0.100806 0.066939 0.067265
+v -0.093433 0.073738 0.067259
+v -0.107090 0.088538 0.053844
+v -0.100966 0.067011 -0.047328
+v -0.114586 0.081794 -0.033856
+v -0.107212 0.088593 -0.033862
+v -0.093592 0.073810 -0.047334
+v -0.123605 0.091634 0.033749
+v -0.116232 0.098434 0.033743
+v -0.068789 0.032116 -0.047394
+v -0.084884 0.049566 -0.052082
+v -0.077510 0.056366 -0.052088
+v -0.061415 0.038915 -0.047400
+v -0.055131 0.017316 -0.033979
+v -0.047757 0.024115 -0.033985
+v -0.179199 0.046838 0.010065
+v -0.176032 0.043382 -0.013675
+v -0.166947 0.033512 -0.033813
+v -0.153326 0.018729 -0.047285
+v -0.137244 0.001284 -0.052039
+v -0.121149 -0.016166 -0.047352
+v -0.107491 -0.030966 -0.033937
+v -0.098350 -0.040862 -0.013836
+v -0.095117 -0.044347 0.009891
+v -0.098284 -0.040892 0.033630
+v -0.107369 -0.031021 0.053769
+v -0.120990 -0.016238 0.067241
+v -0.137072 0.001206 0.071995
+v -0.153167 0.018657 0.067308
+v -0.166825 0.033457 0.053892
+v -0.175966 0.043352 0.033791
+v -0.099029 0.096986 0.009985
+v -0.096754 0.094505 -0.007063
+v -0.090230 0.087416 -0.021526
+v -0.080448 0.076800 -0.031201
+v -0.068899 0.064272 -0.034615
+v -0.057341 0.051740 -0.031248
+v -0.047533 0.041112 -0.021614
+v -0.040968 0.034005 -0.007179
+v -0.038646 0.031502 0.009860
+v -0.040920 0.033984 0.026908
+v -0.047445 0.041072 0.041371
+v -0.057226 0.051689 0.051045
+v -0.068775 0.064216 0.054460
+v -0.080334 0.076748 0.051093
+v -0.090142 0.087377 0.041459
+v -0.096707 0.094483 0.027024
+v -0.062325 0.070250 0.009917
+v -0.065729 -0.017249 0.009867
+v -0.068963 -0.013763 -0.013860
+v -0.077982 -0.003923 0.053745
+v -0.068897 -0.013793 0.033606
+v -0.107684 0.028305 0.071971
+v -0.091602 0.010860 0.067217
+v -0.146644 0.070481 -0.013698
+v -0.149812 0.073936 0.010041
+v -0.137437 0.060555 0.053868
+v -0.123779 0.045755 0.067284
+v -0.123939 0.045827 -0.047309
+v -0.137559 0.060610 -0.033837
+v -0.146578 0.070451 0.033768
+v -0.091762 0.010932 -0.047376
+v -0.107857 0.028383 -0.052063
+v -0.078104 -0.003867 -0.033960
+v -0.090787 -0.033888 -0.013842
+v -0.087554 -0.037373 0.009884
+v -0.090721 -0.033918 0.033624
+v -0.099806 -0.024047 0.053763
+v -0.113427 -0.009264 0.067235
+v -0.129509 0.008180 0.071989
+v -0.171636 0.053812 0.010059
+v -0.168469 0.050356 -0.013681
+v -0.145604 0.025631 0.067301
+v -0.159261 0.040431 0.053886
+v -0.159383 0.040486 -0.033819
+v -0.145763 0.025703 -0.047291
+v -0.168403 0.050326 0.033785
+v -0.129681 0.008259 -0.052045
+v -0.113586 -0.009192 -0.047358
+v -0.099928 -0.023992 -0.033943
+vt 0.007655 0.335684
+vt 0.088864 0.317550
+vt 0.116908 0.383352
+vt 0.045014 0.430784
+vt 0.149431 0.304465
+vt 0.169310 0.347402
+vt 0.195420 0.295389
+vt 0.207538 0.322304
+vt 0.168378 0.433745
+vt 0.118294 0.506560
+vt 0.202495 0.381547
+vt 0.228525 0.342495
+vt 0.234941 0.461062
+vt 0.215801 0.548975
+vt 0.247081 0.400958
+vt 0.255417 0.354292
+vt 0.307861 0.462461
+vt 0.323740 0.551944
+vt 0.295348 0.399423
+vt 0.285361 0.354455
+vt 0.375220 0.433589
+vt 0.426410 0.512010
+vt 0.340191 0.381959
+vt 0.313449 0.343049
+vt 0.427084 0.381076
+vt 0.508428 0.433617
+vt 0.373097 0.346286
+vt 0.334086 0.321151
+vt 0.455163 0.312779
+vt 0.542091 0.327329
+vt 0.392121 0.301698
+vt 0.345605 0.293668
+vt 0.451516 0.240164
+vt 0.542091 0.220170
+vt 0.392388 0.252805
+vt 0.345695 0.263443
+vt 0.425053 0.173305
+vt 0.495831 0.125079
+vt 0.372476 0.208436
+vt 0.334045 0.235260
+vt 0.372835 0.122674
+vt 0.424368 0.047947
+vt 0.337530 0.175120
+vt 0.311810 0.214099
+vt 0.304541 0.095984
+vt 0.322573 0.000101
+vt 0.292062 0.157691
+vt 0.283613 0.203892
+vt 0.230734 0.095653
+vt 0.209292 0.006915
+vt 0.244170 0.159255
+vt 0.253704 0.203883
+vt 0.163666 0.125603
+vt 0.113594 0.054409
+vt 0.199570 0.176878
+vt 0.226219 0.216305
+vt 0.114775 0.178767
+vt 0.035273 0.128658
+vt 0.166640 0.212635
+vt 0.205969 0.237982
+vt 0.087319 0.245782
+vt 0.000101 0.232502
+vt 0.150125 0.257229
+vt 0.194552 0.265466
+vt 0.286212 0.275766
+vt 0.286505 0.282321
+vt 0.283810 0.281816
+vt 0.283734 0.276327
+vt 0.279017 0.265280
+vt 0.283711 0.269791
+vt 0.281639 0.271211
+vt 0.277640 0.267418
+vt 0.266579 0.262961
+vt 0.273007 0.263022
+vt 0.272521 0.265505
+vt 0.267050 0.265496
+vt 0.256409 0.288660
+vt 0.253654 0.282755
+vt 0.256198 0.282176
+vt 0.258425 0.287240
+vt 0.256075 0.270212
+vt 0.260535 0.265413
+vt 0.262006 0.267589
+vt 0.258309 0.271652
+vt 0.266913 0.295729
+vt 0.260993 0.293116
+vt 0.262408 0.291037
+vt 0.267434 0.293170
+vt 0.253614 0.276227
+vt 0.256148 0.276688
+vt 0.279426 0.292926
+vt 0.273471 0.295552
+vt 0.272935 0.293026
+vt 0.277972 0.290788
+vt 0.283888 0.288305
+vt 0.281791 0.286878
+vt 0.216742 0.290668
+vt 0.225269 0.310030
+vt 0.240281 0.324688
+vt 0.259793 0.332794
+vt 0.281151 0.332900
+vt 0.300875 0.324522
+vt 0.315970 0.309294
+vt 0.323874 0.289466
+vt 0.324031 0.267839
+vt 0.315162 0.248142
+vt 0.300110 0.232690
+vt 0.279881 0.225136
+vt 0.258551 0.225929
+vt 0.239013 0.234383
+vt 0.223802 0.249425
+vt 0.216565 0.269459
+vt 0.260738 0.281262
+vt 0.262231 0.284613
+vt 0.264844 0.287195
+vt 0.268285 0.288610
+vt 0.272008 0.288514
+vt 0.275373 0.287005
+vt 0.277984 0.284376
+vt 0.279329 0.280905
+vt 0.279256 0.277201
+vt 0.277785 0.273845
+vt 0.275174 0.271261
+vt 0.271728 0.269965
+vt 0.268057 0.269971
+vt 0.264639 0.271401
+vt 0.262102 0.274115
+vt 0.260665 0.277542
+vt 0.270015 0.279236
+vt 0.297586 0.273355
+vt 0.297766 0.284407
+vt 0.285219 0.255745
+vt 0.293167 0.263274
+vt 0.264144 0.251590
+vt 0.275169 0.251317
+vt 0.247079 0.295039
+vt 0.242657 0.285120
+vt 0.246399 0.263951
+vt 0.254045 0.256020
+vt 0.264854 0.306854
+vt 0.254558 0.302882
+vt 0.242390 0.274150
+vt 0.286071 0.302647
+vt 0.275795 0.306598
+vt 0.293684 0.294701
+vt 0.315512 0.287747
+vt 0.315779 0.269492
+vt 0.308369 0.252844
+vt 0.295369 0.240070
+vt 0.278365 0.233438
+vt 0.260295 0.233775
+vt 0.225281 0.288844
+vt 0.231767 0.305545
+vt 0.243906 0.241337
+vt 0.231089 0.254123
+vt 0.244739 0.317727
+vt 0.261505 0.324167
+vt 0.224503 0.270863
+vt 0.279556 0.324657
+vt 0.296137 0.317398
+vt 0.309039 0.304700
+g metal_bulb_metal_bulb_Material.003
+usemtl Material.003
+s 1
+f 18/5 19/6 20/7 21/8
+f 19/6 22/9 23/10 20/7
+f 22/9 24/11 25/12 23/10
+f 21/8 20/7 26/13 27/14
+f 20/7 23/10 28/15 26/13
+f 23/10 25/12 29/16 28/15
+f 27/14 26/13 30/17 31/18
+f 26/13 28/15 32/19 30/17
+f 28/15 29/16 33/20 32/19
+f 31/18 30/17 34/21 35/22
+f 30/17 32/19 36/23 34/21
+f 32/19 33/20 37/24 36/23
+f 35/22 34/21 38/25 39/26
+f 34/21 36/23 40/27 38/25
+f 36/23 37/24 41/28 40/27
+f 39/26 38/25 42/29 43/30
+f 38/25 40/27 44/31 42/29
+f 40/27 41/28 45/32 44/31
+f 43/30 42/29 46/33 47/34
+f 42/29 44/31 48/35 46/33
+f 44/31 45/32 49/36 48/35
+f 47/34 46/33 50/37 51/38
+f 46/33 48/35 52/39 50/37
+f 48/35 49/36 53/40 52/39
+f 51/38 50/37 54/41 55/42
+f 50/37 52/39 56/43 54/41
+f 52/39 53/40 57/44 56/43
+f 55/42 54/41 58/45 59/46
+f 54/41 56/43 60/47 58/45
+f 56/43 57/44 61/48 60/47
+f 59/46 58/45 62/49 63/50
+f 58/45 60/47 64/51 62/49
+f 60/47 61/48 65/52 64/51
+f 63/50 62/49 66/53 67/54
+f 62/49 64/51 68/55 66/53
+f 64/51 65/52 69/56 68/55
+f 67/54 66/53 70/57 71/58
+f 66/53 68/55 72/59 70/57
+f 68/55 69/56 73/60 72/59
+f 71/58 70/57 74/61 75/62
+f 70/57 72/59 76/63 74/61
+f 72/59 73/60 77/64 76/63
+f 75/62 74/61 78/65 79/66
+f 74/61 76/63 80/67 78/65
+f 76/63 77/64 81/68 80/67
+f 82/69 83/70 84/71 85/72
+f 86/73 87/74 88/75 89/76
+f 90/77 91/78 92/79 93/80
+f 94/81 95/82 96/83 97/84
+f 98/85 99/86 100/87 101/88
+f 102/89 103/90 104/91 105/92
+f 95/82 106/93 107/94 96/83
+f 108/95 109/96 110/97 111/98
+f 83/70 112/99 113/100 84/71
+f 87/74 82/69 85/72 88/75
+f 91/78 86/73 89/76 92/79
+f 99/86 90/77 93/80 100/87
+f 103/90 94/81 97/84 104/91
+f 106/93 98/85 101/88 107/94
+f 19/6 18/5 79/66 78/65
+f 78/65 80/67 22/9 19/6
+f 80/67 81/68 24/11 22/9
+f 109/96 102/89 105/92 110/97
+f 112/99 108/95 111/98 113/100
+f 24/11 114/101 115/102 25/12
+f 25/12 115/102 116/103 29/16
+f 29/16 116/103 117/104 33/20
+f 33/20 117/104 118/105 37/24
+f 37/24 118/105 119/106 41/28
+f 41/28 119/106 120/107 45/32
+f 45/32 120/107 121/108 49/36
+f 49/36 121/108 122/109 53/40
+f 53/40 122/109 123/110 57/44
+f 57/44 123/110 124/111 61/48
+f 61/48 124/111 125/112 65/52
+f 65/52 125/112 126/113 69/56
+f 69/56 126/113 127/114 73/60
+f 73/60 127/114 128/115 77/64
+f 77/64 128/115 129/116 81/68
+f 81/68 129/116 114/101 24/11
+f 96/83 130/117 131/118 97/84
+f 97/84 131/118 132/119 104/91
+f 104/91 132/119 133/120 105/92
+f 105/92 133/120 134/121 110/97
+f 110/97 134/121 135/122 111/98
+f 111/98 135/122 136/123 113/100
+f 113/100 136/123 137/124 84/71
+f 84/71 137/124 138/125 85/72
+f 85/72 138/125 139/126 88/75
+f 88/75 139/126 140/127 89/76
+f 89/76 140/127 141/128 92/79
+f 92/79 141/128 142/129 93/80
+f 93/80 142/129 143/130 100/87
+f 100/87 143/130 144/131 101/88
+f 101/88 144/131 145/132 107/94
+f 130/117 146/133 131/118
+f 131/118 146/133 132/119
+f 132/119 146/133 133/120
+f 133/120 146/133 134/121
+f 134/121 146/133 135/122
+f 135/122 146/133 136/123
+f 136/123 146/133 137/124
+f 137/124 146/133 138/125
+f 138/125 146/133 139/126
+f 139/126 146/133 140/127
+f 140/127 146/133 141/128
+f 141/128 146/133 142/129
+f 142/129 146/133 143/130
+f 143/130 146/133 144/131
+f 144/131 146/133 145/132
+f 107/94 145/132 130/117 96/83
+f 145/132 146/133 130/117
+f 147/134 148/135 83/70 82/69
+f 149/136 150/137 87/74 86/73
+f 151/138 152/139 91/78 90/77
+f 153/140 154/141 95/82 94/81
+f 155/142 156/143 99/86 98/85
+f 157/144 158/145 103/90 102/89
+f 154/141 159/146 106/93 95/82
+f 160/147 161/148 109/96 108/95
+f 148/135 162/149 112/99 83/70
+f 150/137 147/134 82/69 87/74
+f 152/139 149/136 86/73 91/78
+f 156/143 151/138 90/77 99/86
+f 158/145 153/140 94/81 103/90
+f 159/146 155/142 98/85 106/93
+f 161/148 157/144 102/89 109/96
+f 162/149 160/147 108/95 112/99
+f 122/109 121/108 163/150 164/151
+f 124/111 123/110 165/152 166/153
+f 126/113 125/112 167/154 168/155
+f 115/102 114/101 169/156 170/157
+f 128/115 127/114 171/158 172/159
+f 117/104 116/103 173/160 174/161
+f 114/101 129/116 175/162 169/156
+f 119/106 118/105 176/163 177/164
+f 121/108 120/107 178/165 163/150
+f 123/110 122/109 164/151 165/152
+f 125/112 124/111 166/153 167/154
+f 127/114 126/113 168/155 171/158
+f 116/103 115/102 170/157 173/160
+f 129/116 128/115 172/159 175/162
+f 118/105 117/104 174/161 176/163
+f 120/107 119/106 177/164 178/165
+f 164/151 163/150 148/135 147/134
+f 166/153 165/152 150/137 149/136
+f 168/155 167/154 152/139 151/138
+f 170/157 169/156 154/141 153/140
+f 172/159 171/158 156/143 155/142
+f 174/161 173/160 158/145 157/144
+f 169/156 175/162 159/146 154/141
+f 177/164 176/163 161/148 160/147
+f 163/150 178/165 162/149 148/135
+f 165/152 164/151 147/134 150/137
+f 167/154 166/153 149/136 152/139
+f 171/158 168/155 151/138 156/143
+f 173/160 170/157 153/140 158/145
+f 175/162 172/159 155/142 159/146
+f 176/163 174/161 157/144 161/148
+f 178/165 177/164 160/147 162/149
+o tube
+v 0.053313 -0.430401 0.009096
+v 0.054882 -0.411177 0.009097
+v 0.060531 -0.411592 -0.004576
+v 0.058960 -0.430831 -0.004578
+v 0.074168 -0.412595 -0.010240
+v 0.072594 -0.431869 -0.010242
+v 0.087804 -0.413600 -0.004577
+v 0.086228 -0.432909 -0.004578
+v 0.093453 -0.414018 0.009097
+v 0.091876 -0.433340 0.009096
+v 0.087804 -0.413603 0.022771
+v 0.086229 -0.432910 0.022769
+v 0.074168 -0.412599 0.028435
+v 0.072594 -0.431872 0.028433
+v 0.058960 -0.430832 0.022770
+v 0.060531 -0.411595 0.022771
+v 0.051743 -0.449086 0.009095
+v 0.057389 -0.449531 -0.004579
+v 0.071021 -0.450605 -0.010243
+v 0.084652 -0.451679 -0.004580
+v 0.090299 -0.452123 0.009094
+v 0.084653 -0.451679 0.022768
+v 0.071021 -0.450605 0.028432
+v 0.057390 -0.449531 0.022768
+v 0.056107 -0.392122 0.009100
+v 0.057294 -0.373087 0.009103
+v 0.062952 -0.373353 -0.004571
+v 0.061760 -0.392466 -0.004574
+v 0.076610 -0.374001 -0.010235
+v 0.075408 -0.393299 -0.010238
+v 0.090268 -0.374650 -0.004571
+v 0.089056 -0.394134 -0.004574
+v 0.095926 -0.374920 0.009102
+v 0.094710 -0.394481 0.009100
+v 0.090269 -0.374654 0.022776
+v 0.089056 -0.394138 0.022773
+v 0.076610 -0.374006 0.028440
+v 0.075408 -0.393304 0.028437
+v 0.061760 -0.392469 0.022774
+v 0.062952 -0.373357 0.022776
+v 0.054882 -0.411177 0.009097
+v 0.060531 -0.411592 -0.004576
+v 0.074168 -0.412595 -0.010240
+v 0.087804 -0.413600 -0.004577
+v 0.093453 -0.413479 0.009097
+v 0.087804 -0.413064 0.022771
+v 0.074168 -0.412599 0.028435
+v 0.060531 -0.411595 0.022771
+v 0.058004 -0.354129 0.009106
+v 0.058403 -0.335224 0.009109
+v 0.064067 -0.335261 -0.004565
+v 0.063665 -0.354291 -0.004568
+v 0.077740 -0.335356 -0.010229
+v 0.077333 -0.354684 -0.010232
+v 0.091414 -0.335453 -0.004565
+v 0.091001 -0.355080 -0.004568
+v 0.097077 -0.335495 0.009109
+v 0.096663 -0.355245 0.009105
+v 0.091414 -0.335458 0.022782
+v 0.091002 -0.355084 0.022779
+v 0.077740 -0.335362 0.028446
+v 0.077333 -0.354690 0.028443
+v 0.063666 -0.354295 0.022779
+v 0.064067 -0.335266 0.022782
+v 0.057294 -0.373087 0.009103
+v 0.062952 -0.373353 -0.004571
+v 0.076610 -0.374001 -0.010235
+v 0.090268 -0.374650 -0.004571
+v 0.095926 -0.374920 0.009102
+v 0.090269 -0.374654 0.022776
+v 0.076610 -0.374006 0.028440
+v 0.062952 -0.373357 0.022776
+v 0.058466 -0.316365 0.009112
+v 0.057764 -0.297613 0.009115
+v 0.063422 -0.297349 -0.004559
+v 0.064129 -0.316266 -0.004562
+v 0.077081 -0.296717 -0.010222
+v 0.077800 -0.316032 -0.010226
+v 0.090740 -0.296088 -0.004559
+v 0.091472 -0.315800 -0.004562
+v 0.096398 -0.295828 0.009115
+v 0.097135 -0.315706 0.009112
+v 0.090740 -0.296092 0.022789
+v 0.091472 -0.315804 0.022786
+v 0.077081 -0.296724 0.028453
+v 0.077800 -0.316039 0.028449
+v 0.064129 -0.316271 0.022785
+v 0.063422 -0.297354 0.022789
+v 0.058403 -0.335224 0.009109
+v 0.064067 -0.335261 -0.004565
+v 0.077740 -0.335356 -0.010229
+v 0.091414 -0.335453 -0.004565
+v 0.097077 -0.335495 0.009109
+v 0.091414 -0.335458 0.022782
+v 0.077740 -0.335362 0.028446
+v 0.064067 -0.335266 0.022782
+v 0.057059 -0.278863 0.009118
+v 0.054957 -0.260374 0.009121
+v 0.060585 -0.259738 -0.004553
+v 0.062707 -0.278435 -0.004556
+v 0.074173 -0.258205 -0.010216
+v 0.076341 -0.277404 -0.010219
+v 0.087761 -0.256674 -0.004552
+v 0.089976 -0.276376 -0.004555
+v 0.093389 -0.256042 0.009121
+v 0.095624 -0.275952 0.009118
+v 0.087761 -0.256678 0.022795
+v 0.089976 -0.276380 0.022792
+v 0.074173 -0.258211 0.028459
+v 0.076341 -0.277411 0.028456
+v 0.062707 -0.278439 0.022792
+v 0.060585 -0.259742 0.022795
+v 0.057764 -0.297613 0.009115
+v 0.063422 -0.297349 -0.004559
+v 0.077081 -0.296717 -0.010222
+v 0.090740 -0.296088 -0.004559
+v 0.096398 -0.295828 0.009115
+v 0.090740 -0.296092 0.022789
+v 0.077081 -0.296724 0.028453
+v 0.063422 -0.297354 0.022789
+v 0.052882 -0.241882 0.009124
+v 0.049564 -0.223722 0.009126
+v 0.055124 -0.222637 -0.004548
+v 0.058483 -0.241038 -0.004550
+v 0.068545 -0.220021 -0.010211
+v 0.072004 -0.239006 -0.010213
+v 0.081966 -0.217407 -0.004547
+v 0.085526 -0.236974 -0.004549
+v 0.087526 -0.216325 0.009127
+v 0.091127 -0.236135 0.009124
+v 0.081966 -0.217410 0.022801
+v 0.085526 -0.236978 0.022798
+v 0.068545 -0.220026 0.028464
+v 0.072004 -0.239011 0.028462
+v 0.058483 -0.241042 0.022797
+v 0.055124 -0.222641 0.022800
+v 0.054957 -0.260374 0.009121
+v 0.060585 -0.259738 -0.004553
+v 0.074173 -0.258205 -0.010216
+v 0.087761 -0.256674 -0.004552
+v 0.093389 -0.256042 0.009121
+v 0.087761 -0.256678 0.022795
+v 0.074173 -0.258211 0.028459
+v 0.060585 -0.259742 0.022795
+v 0.045791 -0.205686 0.009128
+v 0.041164 -0.187972 0.009130
+v 0.046594 -0.186362 -0.004544
+v 0.051295 -0.204348 -0.004545
+v 0.059704 -0.182475 -0.010207
+v 0.064583 -0.201121 -0.010209
+v 0.072814 -0.178590 -0.004543
+v 0.077870 -0.197895 -0.004545
+v 0.078244 -0.176981 0.009131
+v 0.083374 -0.196560 0.009129
+v 0.072814 -0.178592 0.022805
+v 0.077870 -0.197898 0.022803
+v 0.059704 -0.182479 0.028468
+v 0.064582 -0.201125 0.028466
+v 0.051295 -0.204351 0.022802
+v 0.046594 -0.186364 0.022804
+v 0.049564 -0.223722 0.009126
+v 0.055124 -0.222637 -0.004548
+v 0.068545 -0.220021 -0.010211
+v 0.081966 -0.217407 -0.004547
+v 0.087526 -0.216325 0.009127
+v 0.081966 -0.217410 0.022801
+v 0.068545 -0.220026 0.028464
+v 0.055124 -0.222641 0.022800
+v 0.035381 -0.170691 0.009131
+v 0.029340 -0.153548 0.009132
+v 0.034556 -0.151339 -0.004541
+v 0.040714 -0.168781 -0.004542
+v 0.047148 -0.146008 -0.010205
+v 0.053588 -0.164173 -0.010206
+v 0.059740 -0.140676 -0.004540
+v 0.066462 -0.159566 -0.004541
+v 0.064955 -0.138469 0.009134
+v 0.071794 -0.157658 0.009133
+v 0.059739 -0.140678 0.022807
+v 0.066461 -0.159567 0.022806
+v 0.047147 -0.146009 0.028470
+v 0.053587 -0.164176 0.028469
+v 0.040713 -0.168783 0.022805
+v 0.034556 -0.151340 0.022806
+v 0.041164 -0.187972 0.009130
+v 0.046594 -0.186362 -0.004544
+v 0.059704 -0.182475 -0.010207
+v 0.072814 -0.178590 -0.004543
+v 0.078244 -0.176981 0.009131
+v 0.072814 -0.178592 0.022805
+v 0.059704 -0.182479 0.028468
+v 0.046594 -0.186364 0.022804
+v 0.021284 -0.137425 0.009132
+v 0.013301 -0.121266 0.009132
+v 0.018187 -0.118400 -0.004542
+v 0.026346 -0.134882 -0.004542
+v 0.029982 -0.111482 -0.010205
+v 0.038565 -0.128745 -0.010205
+v 0.041776 -0.104563 -0.004540
+v 0.050784 -0.122607 -0.004540
+v 0.046661 -0.101698 0.009133
+v 0.055844 -0.120065 0.009134
+v 0.041775 -0.104563 0.022807
+v 0.050782 -0.122607 0.022807
+v 0.029980 -0.111481 0.028470
+v 0.038563 -0.128745 0.028470
+v 0.026345 -0.134883 0.022806
+v 0.018186 -0.118400 0.022806
+v 0.029340 -0.153548 0.009132
+v 0.034556 -0.151339 -0.004541
+v 0.047148 -0.146008 -0.010205
+v 0.059740 -0.140676 -0.004540
+v 0.064955 -0.138469 0.009134
+v 0.059739 -0.140678 0.022807
+v 0.047147 -0.146009 0.028470
+v 0.034556 -0.151340 0.022806
+v 0.003263 -0.106486 0.009130
+v -0.007108 -0.091928 0.009129
+v -0.002677 -0.088399 -0.004545
+v 0.007935 -0.103284 -0.004543
+v 0.008016 -0.079877 -0.010208
+v 0.019212 -0.095550 -0.010206
+v 0.018709 -0.071355 -0.004544
+v 0.030488 -0.087816 -0.004542
+v 0.023137 -0.067824 0.009130
+v 0.035158 -0.084612 0.009132
+v 0.018706 -0.071353 0.022804
+v 0.030486 -0.087815 0.022805
+v 0.008013 -0.079874 0.028467
+v 0.019209 -0.095548 0.028469
+v 0.007933 -0.103282 0.022804
+v -0.002680 -0.088397 0.022803
+v 0.013301 -0.121266 0.009132
+v 0.018187 -0.118400 -0.004542
+v 0.029982 -0.111482 -0.010205
+v 0.041776 -0.104563 -0.004540
+v 0.046661 -0.101698 0.009133
+v 0.041775 -0.104563 0.022807
+v 0.029980 -0.111481 0.028470
+v 0.018186 -0.118400 0.022806
+v -0.018728 -0.078465 0.009126
+v -0.031389 -0.065905 0.009123
+v -0.027519 -0.061770 -0.004551
+v -0.014565 -0.074624 -0.004547
+v -0.018180 -0.051782 -0.010214
+v -0.004518 -0.065348 -0.010211
+v -0.008842 -0.041793 -0.004550
+v 0.005528 -0.056072 -0.004547
+v -0.004976 -0.037654 0.009123
+v 0.009687 -0.052228 0.009127
+v -0.008846 -0.041790 0.022797
+v 0.005524 -0.056069 0.022801
+v -0.018185 -0.051777 0.028461
+v -0.004523 -0.065344 0.028464
+v -0.014568 -0.074621 0.022800
+v -0.027523 -0.061766 0.022797
+v -0.007108 -0.091928 0.009129
+v -0.002677 -0.088399 -0.004545
+v 0.008016 -0.079877 -0.010208
+v 0.018709 -0.071355 -0.004544
+v 0.023137 -0.067824 0.009130
+v 0.018706 -0.071353 0.022804
+v 0.008013 -0.079874 0.028467
+v -0.002680 -0.088397 0.022803
+v -0.044496 -0.053850 0.009119
+v -0.059103 -0.043471 0.009115
+v -0.055860 -0.038828 -0.004559
+v -0.040935 -0.049445 -0.004554
+v -0.048034 -0.027616 -0.010223
+v -0.032345 -0.038807 -0.010218
+v -0.040211 -0.016401 -0.004560
+v -0.023757 -0.028167 -0.004554
+v -0.036973 -0.011753 0.009114
+v -0.020202 -0.023758 0.009119
+v -0.040217 -0.016396 0.022787
+v -0.023762 -0.028162 0.022793
+v -0.048042 -0.027609 0.028452
+v -0.032352 -0.038801 0.028457
+v -0.040940 -0.049441 0.022793
+v -0.055865 -0.038824 0.022788
+v -0.031389 -0.065905 0.009123
+v -0.027519 -0.061770 -0.004551
+v -0.018180 -0.051782 -0.010214
+v -0.008842 -0.041793 -0.004550
+v -0.004976 -0.037654 0.009123
+v -0.008846 -0.041790 0.022797
+v -0.018185 -0.051777 0.028461
+v -0.027523 -0.061766 0.022797
+v -0.073657 -0.033014 0.009110
+v -0.089672 -0.024601 0.009104
+v -0.087076 -0.019567 -0.004570
+v -0.070745 -0.028157 -0.004564
+v -0.080817 -0.007411 -0.010235
+v -0.063723 -0.016424 -0.010229
+v -0.074562 0.004748 -0.004572
+v -0.056703 -0.004690 -0.004565
+v -0.071973 0.009787 0.009101
+v -0.053798 0.000173 0.009108
+v -0.074569 0.004754 0.022775
+v -0.056710 -0.004684 0.022782
+v -0.080828 -0.007403 0.028440
+v -0.063732 -0.016417 0.028446
+v -0.070752 -0.028151 0.022783
+v -0.087084 -0.019562 0.022777
+v -0.059103 -0.043471 0.009115
+v -0.055860 -0.038828 -0.004559
+v -0.048034 -0.027616 -0.010223
+v -0.040211 -0.016401 -0.004560
+v -0.036973 -0.011753 0.009114
+v -0.040217 -0.016396 0.022787
+v -0.048042 -0.027609 0.028452
+v -0.055865 -0.038824 0.022788
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g tube_tube_Material.001
+usemtl Material.001
+s 1
+f 179/166 180/167 181/168 182/169
+f 182/166 181/167 183/168 184/169
+f 184/166 183/167 185/168 186/169
+f 186/166 185/167 187/168 188/169
+f 188/166 187/167 189/168 190/169
+f 190/166 189/167 191/168 192/169
+f 180/168 179/169 193/166 194/167
+f 192/166 191/167 194/168 193/169
+f 195/166 179/167 182/168 196/169
+f 196/166 182/167 184/168 197/169
+f 197/166 184/167 186/168 198/169
+f 198/166 186/167 188/168 199/169
+f 199/166 188/167 190/168 200/169
+f 200/166 190/167 192/168 201/169
+f 179/168 195/169 202/166 193/167
+f 201/166 192/167 193/168 202/169
+f 203/166 204/167 205/168 206/169
+f 206/166 205/167 207/168 208/169
+f 208/166 207/167 209/168 210/169
+f 210/166 209/167 211/168 212/169
+f 212/166 211/167 213/168 214/169
+f 214/166 213/167 215/168 216/169
+f 217/166 218/167 204/168 203/169
+f 216/166 215/167 218/168 217/169
+f 219/166 203/167 206/168 220/169
+f 220/166 206/167 208/168 221/169
+f 221/166 208/167 210/168 222/169
+f 222/166 210/167 212/168 223/169
+f 223/166 212/167 214/168 224/169
+f 224/166 214/167 216/168 225/169
+f 226/166 217/167 203/168 219/169
+f 225/166 216/167 217/168 226/169
+f 227/166 228/167 229/168 230/169
+f 230/166 229/167 231/168 232/169
+f 232/166 231/167 233/168 234/169
+f 234/166 233/167 235/168 236/169
+f 236/166 235/167 237/168 238/169
+f 238/166 237/167 239/168 240/169
+f 241/166 242/167 228/168 227/169
+f 240/166 239/167 242/168 241/169
+f 243/166 227/167 230/168 244/169
+f 244/166 230/167 232/168 245/169
+f 245/166 232/167 234/168 246/169
+f 246/166 234/167 236/168 247/169
+f 247/166 236/167 238/168 248/169
+f 248/166 238/167 240/168 249/169
+f 250/166 241/167 227/168 243/169
+f 249/166 240/167 241/168 250/169
+f 251/166 252/167 253/168 254/169
+f 254/166 253/167 255/168 256/169
+f 256/166 255/167 257/168 258/169
+f 258/166 257/167 259/168 260/169
+f 260/166 259/167 261/168 262/169
+f 262/166 261/167 263/168 264/169
+f 265/166 266/167 252/168 251/169
+f 264/166 263/167 266/168 265/169
+f 267/166 251/167 254/168 268/169
+f 268/166 254/167 256/168 269/169
+f 269/166 256/167 258/168 270/169
+f 270/166 258/167 260/168 271/169
+f 271/166 260/167 262/168 272/169
+f 272/166 262/167 264/168 273/169
+f 274/166 265/167 251/168 267/169
+f 273/166 264/167 265/168 274/169
+f 275/166 276/167 277/168 278/169
+f 278/166 277/167 279/168 280/169
+f 280/166 279/167 281/168 282/169
+f 282/166 281/167 283/168 284/169
+f 284/166 283/167 285/168 286/169
+f 286/166 285/167 287/168 288/169
+f 289/166 290/167 276/168 275/169
+f 288/166 287/167 290/168 289/169
+f 291/166 275/167 278/168 292/169
+f 292/166 278/167 280/168 293/169
+f 293/166 280/167 282/168 294/169
+f 294/166 282/167 284/168 295/169
+f 295/166 284/167 286/168 296/169
+f 296/166 286/167 288/168 297/169
+f 298/166 289/167 275/168 291/169
+f 297/166 288/167 289/168 298/169
+f 299/166 300/167 301/168 302/169
+f 302/166 301/167 303/168 304/169
+f 304/166 303/167 305/168 306/169
+f 306/166 305/167 307/168 308/169
+f 308/166 307/167 309/168 310/169
+f 310/166 309/167 311/168 312/169
+f 313/166 314/167 300/168 299/169
+f 312/166 311/167 314/168 313/169
+f 315/166 299/167 302/168 316/169
+f 316/166 302/167 304/168 317/169
+f 317/166 304/167 306/168 318/169
+f 318/166 306/167 308/168 319/169
+f 319/166 308/167 310/168 320/169
+f 320/166 310/167 312/168 321/169
+f 322/166 313/167 299/168 315/169
+f 321/166 312/167 313/168 322/169
+f 323/166 324/167 325/168 326/169
+f 326/166 325/167 327/168 328/169
+f 328/166 327/167 329/168 330/169
+f 330/166 329/167 331/168 332/169
+f 332/166 331/167 333/168 334/169
+f 334/166 333/167 335/168 336/169
+f 337/166 338/167 324/168 323/169
+f 336/166 335/167 338/168 337/169
+f 339/166 323/167 326/168 340/169
+f 340/166 326/167 328/168 341/169
+f 341/166 328/167 330/168 342/169
+f 342/166 330/167 332/168 343/169
+f 343/166 332/167 334/168 344/169
+f 344/166 334/167 336/168 345/169
+f 346/166 337/167 323/168 339/169
+f 345/166 336/167 337/168 346/169
+f 347/166 348/167 349/168 350/169
+f 350/166 349/167 351/168 352/169
+f 352/166 351/167 353/168 354/169
+f 354/166 353/167 355/168 356/169
+f 356/166 355/167 357/168 358/169
+f 358/166 357/167 359/168 360/169
+f 361/166 362/167 348/168 347/169
+f 360/166 359/167 362/168 361/169
+f 363/166 347/167 350/168 364/169
+f 364/166 350/167 352/168 365/169
+f 365/166 352/167 354/168 366/169
+f 366/166 354/167 356/168 367/169
+f 367/166 356/167 358/168 368/169
+f 368/166 358/167 360/168 369/169
+f 370/166 361/167 347/168 363/169
+f 369/166 360/167 361/168 370/169
+f 371/166 372/167 373/168 374/169
+f 374/166 373/167 375/168 376/169
+f 376/166 375/167 377/168 378/169
+f 378/166 377/167 379/168 380/169
+f 380/166 379/167 381/168 382/169
+f 382/166 381/167 383/168 384/169
+f 385/166 386/167 372/168 371/169
+f 384/166 383/167 386/168 385/169
+f 387/166 371/167 374/168 388/169
+f 388/166 374/167 376/168 389/169
+f 389/166 376/167 378/168 390/169
+f 390/166 378/167 380/168 391/169
+f 391/166 380/167 382/168 392/169
+f 392/166 382/167 384/168 393/169
+f 394/166 385/167 371/168 387/169
+f 393/166 384/167 385/168 394/169
+f 395/166 396/167 397/168 398/169
+f 398/166 397/167 399/168 400/169
+f 400/166 399/167 401/168 402/169
+f 402/166 401/167 403/168 404/169
+f 404/166 403/167 405/168 406/169
+f 406/166 405/167 407/168 408/169
+f 409/166 410/167 396/168 395/169
+f 408/166 407/167 410/168 409/169
+f 411/166 395/167 398/168 412/169
+f 412/166 398/167 400/168 413/169
+f 413/166 400/167 402/168 414/169
+f 414/166 402/167 404/168 415/169
+f 415/166 404/167 406/168 416/169
+f 416/166 406/167 408/168 417/169
+f 418/166 409/167 395/168 411/169
+f 417/166 408/167 409/168 418/169
+f 419/166 420/167 421/168 422/169
+f 422/166 421/167 423/168 424/169
+f 424/166 423/167 425/168 426/169
+f 426/166 425/167 427/168 428/169
+f 428/166 427/167 429/168 430/169
+f 430/166 429/167 431/168 432/169
+f 433/166 434/167 420/168 419/169
+f 432/166 431/167 434/168 433/169
+f 435/166 419/167 422/168 436/169
+f 436/166 422/167 424/168 437/169
+f 437/166 424/167 426/168 438/169
+f 438/166 426/167 428/168 439/169
+f 439/166 428/167 430/168 440/169
+f 440/166 430/167 432/168 441/169
+f 442/166 433/167 419/168 435/169
+f 441/166 432/167 433/168 442/169
+f 443/166 444/167 445/168 446/169
+f 446/166 445/167 447/168 448/169
+f 448/166 447/167 449/168 450/169
+f 450/166 449/167 451/168 452/169
+f 452/166 451/167 453/168 454/169
+f 454/166 453/167 455/168 456/169
+f 457/166 458/167 444/168 443/169
+f 456/166 455/167 458/168 457/169
+f 459/166 443/167 446/168 460/169
+f 460/166 446/167 448/168 461/169
+f 461/166 448/167 450/168 462/169
+f 462/166 450/167 452/168 463/169
+f 463/166 452/167 454/168 464/169
+f 464/166 454/167 456/168 465/169
+f 466/166 457/167 443/168 459/169
+f 465/166 456/167 457/168 466/169
+f 467/166 468/167 469/168 470/169
+f 470/166 469/167 471/168 472/169
+f 472/166 471/167 473/168 474/169
+f 474/166 473/167 475/168 476/169
+f 476/166 475/167 477/168 478/169
+f 478/166 477/167 479/168 480/169
+f 481/166 482/167 468/168 467/169
+f 480/166 479/167 482/168 481/169
+f 483/166 467/167 470/168 484/169
+f 484/166 470/167 472/168 485/169
+f 485/166 472/167 474/168 486/169
+f 486/166 474/167 476/168 487/169
+f 487/166 476/167 478/168 488/169
+f 488/166 478/167 480/168 489/169
+f 490/166 481/167 467/168 483/169
+f 489/166 480/167 481/168 490/169
+o metal_base
+v 0.070721 -0.502168 -0.126921
+v 0.070721 -0.448710 -0.126921
+v 0.097256 -0.448710 -0.124308
+v 0.097256 -0.502168 -0.124308
+v 0.122772 -0.448710 -0.116568
+v 0.122772 -0.502168 -0.116568
+v 0.146287 -0.448710 -0.103999
+v 0.146287 -0.502168 -0.103999
+v 0.166898 -0.448710 -0.087083
+v 0.166898 -0.502168 -0.087083
+v 0.183814 -0.448710 -0.066472
+v 0.183814 -0.502168 -0.066472
+v 0.196383 -0.448710 -0.042957
+v 0.196383 -0.502168 -0.042957
+v 0.204123 -0.448710 -0.017441
+v 0.204123 -0.502168 -0.017441
+v 0.206737 -0.448710 0.009094
+v 0.206737 -0.502168 0.009094
+v 0.204123 -0.448710 0.035629
+v 0.204123 -0.502168 0.035629
+v 0.196383 -0.448710 0.061145
+v 0.196383 -0.502168 0.061145
+v 0.183814 -0.448710 0.084660
+v 0.183814 -0.502168 0.084660
+v 0.166898 -0.448710 0.105272
+v 0.166898 -0.502168 0.105272
+v 0.146287 -0.448710 0.122187
+v 0.146287 -0.502168 0.122187
+v 0.122772 -0.448710 0.134756
+v 0.122772 -0.502168 0.134756
+v 0.097256 -0.448710 0.142496
+v 0.097256 -0.502168 0.142496
+v 0.070721 -0.448710 0.145110
+v 0.070721 -0.502168 0.145110
+v 0.044185 -0.448710 0.142496
+v 0.044185 -0.502168 0.142496
+v 0.018670 -0.448710 0.134756
+v 0.018670 -0.502168 0.134756
+v -0.004845 -0.448710 0.122187
+v -0.004845 -0.502168 0.122187
+v -0.025457 -0.448710 0.105272
+v -0.025457 -0.502168 0.105272
+v -0.042372 -0.448710 0.084660
+v -0.042372 -0.502168 0.084660
+v -0.054941 -0.448710 0.061145
+v -0.054941 -0.502168 0.061145
+v -0.062681 -0.448710 0.035629
+v -0.062681 -0.502168 0.035629
+v -0.065295 -0.448710 0.009094
+v -0.065295 -0.502168 0.009094
+v -0.062681 -0.448710 -0.017441
+v -0.062681 -0.502168 -0.017441
+v -0.054941 -0.448710 -0.042957
+v -0.054941 -0.502168 -0.042957
+v -0.042372 -0.448710 -0.066472
+v -0.042372 -0.502168 -0.066472
+v -0.025457 -0.448710 -0.087084
+v -0.025457 -0.502168 -0.087084
+v -0.004845 -0.448710 -0.103999
+v -0.004845 -0.502168 -0.103999
+v 0.018670 -0.448710 -0.116568
+v 0.018670 -0.502168 -0.116568
+v 0.044186 -0.502168 -0.124308
+v 0.044186 -0.448710 -0.124308
+vt 0.836800 0.450973
+vt 0.814919 0.378979
+vt 0.842632 0.366791
+vt 0.878227 0.433213
+vt 0.867543 0.349321
+vt 0.915371 0.407714
+vt 0.888734 0.327215
+vt 0.946865 0.375587
+vt 0.905470 0.301250
+vt 0.971685 0.338207
+vt 0.918014 0.273246
+vt 0.989234 0.297104
+vt 0.924683 0.243712
+vt 0.998847 0.253475
+vt 0.925318 0.213657
+vt 0.999899 0.208758
+vt 0.919929 0.184174
+vt 0.992156 0.164619
+vt 0.908721 0.156378
+vt 0.975800 0.122784
+vt 0.892159 0.131230
+vt 0.951406 0.084913
+vt 0.870890 0.109822
+vt 0.919916 0.052555
+vt 0.845738 0.093005
+vt 0.882557 0.027023
+vt 0.817688 0.081457
+vt 0.840809 0.009353
+vt 0.787837 0.075645
+vt 0.796320 0.000256
+vt 0.757352 0.075811
+vt 0.750845 0.000101
+vt 0.727426 0.081961
+vt 0.706173 0.008896
+vt 0.699225 0.093864
+vt 0.664054 0.026300
+vt 0.673852 0.111061
+vt 0.626136 0.051628
+vt 0.652289 0.132889
+vt 0.593893 0.083888
+vt 0.635370 0.158503
+vt 0.568575 0.121818
+vt 0.623745 0.186910
+vt 0.551156 0.163931
+vt 0.617853 0.217010
+vt 0.542292 0.208574
+vt 0.617907 0.247645
+vt 0.542292 0.254004
+vt 0.623887 0.277639
+vt 0.551102 0.298452
+vt 0.635551 0.305853
+vt 0.568304 0.340212
+vt 0.652086 0.331142
+vt 0.593133 0.377730
+vt 0.673224 0.352491
+vt 0.624739 0.409655
+vt 0.698142 0.369114
+vt 0.662002 0.434725
+vt 0.725878 0.380380
+vt 0.703516 0.451923
+vt 0.755381 0.385902
+vt 0.747668 0.460540
+vt 0.792697 0.460218
+vt 0.785455 0.385431
+g metal_base_metal_base_Material.002
+usemtl Material.002
+s 1
+f 491/170 492/171 493/172 494/173
+f 494/173 493/172 495/174 496/175
+f 496/175 495/174 497/176 498/177
+f 498/177 497/176 499/178 500/179
+f 500/179 499/178 501/180 502/181
+f 502/181 501/180 503/182 504/183
+f 504/183 503/182 505/184 506/185
+f 506/185 505/184 507/186 508/187
+f 508/187 507/186 509/188 510/189
+f 510/189 509/188 511/190 512/191
+f 512/191 511/190 513/192 514/193
+f 514/193 513/192 515/194 516/195
+f 516/195 515/194 517/196 518/197
+f 518/197 517/196 519/198 520/199
+f 520/199 519/198 521/200 522/201
+f 522/201 521/200 523/202 524/203
+f 524/203 523/202 525/204 526/205
+f 526/205 525/204 527/206 528/207
+f 528/207 527/206 529/208 530/209
+f 530/209 529/208 531/210 532/211
+f 532/211 531/210 533/212 534/213
+f 534/213 533/212 535/214 536/215
+f 536/215 535/214 537/216 538/217
+f 538/217 537/216 539/218 540/219
+f 540/219 539/218 541/220 542/221
+f 542/221 541/220 543/222 544/223
+f 544/223 543/222 545/224 546/225
+f 546/225 545/224 547/226 548/227
+f 548/227 547/226 549/228 550/229
+f 550/229 549/228 551/230 552/231
+f 492/171 491/170 553/232 554/233
+f 552/231 551/230 554/233 553/232
+f 541/220 539/218 537/216 535/214 533/212 531/210 529/208 527/206 525/204 523/202 521/200 519/198 517/196 515/194 513/192 511/190 509/188 507/186 505/184 503/182 501/180 499/178 497/176 495/174 493/172 492/171 554/233 551/230 549/228 547/226 545/224 543/222
diff --git a/homedecor_modpack/homedecor/models/homedecor_doghouse.obj b/homedecor_modpack/homedecor/models/homedecor_doghouse.obj
new file mode 100644
index 0000000..92cb387
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_doghouse.obj
@@ -0,0 +1,325 @@
+# Blender v2.73 (sub 0) OBJ File: 'doghouse.blend'
+# www.blender.org
+o shingles_Cube.004
+v 0.562500 0.437500 -0.500000
+v 0.562500 0.437500 0.500000
+v -0.562500 0.437500 0.500000
+v -0.562500 0.437500 -0.500000
+v 0.000000 1.000000 -0.500000
+v 0.000000 1.000000 0.500000
+v 0.562500 0.375000 -0.500000
+v 0.562500 0.375000 0.500000
+v -0.562500 0.375000 0.500000
+v -0.562500 0.375000 -0.500000
+v 0.000000 0.937500 -0.500000
+v 0.000000 0.937500 0.500000
+v 0.562500 0.437500 -0.500000
+v 0.562500 0.437500 0.500000
+v -0.562500 0.437500 0.500000
+v -0.562500 0.437500 -0.500000
+v 0.000000 1.000000 -0.500000
+v 0.000000 1.000000 0.500000
+v 0.562500 0.375000 -0.500000
+v 0.562500 0.375000 0.500000
+v -0.562500 0.375000 0.500000
+v -0.562500 0.375000 -0.500000
+vt 0.062500 0.312500
+vt 0.000000 0.250000
+vt 0.937500 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.000000
+vt 0.937500 0.062500
+vt 0.000000 0.062500
+vt 0.062500 0.000000
+vt 0.062500 0.437500
+vt 0.000000 0.375000
+vt 0.937500 0.375000
+vt 1.000000 0.437500
+vt 1.000000 0.125000
+vt 0.937500 0.187500
+vt 0.000000 0.187500
+vt 0.062500 0.125000
+vt 1.000000 1.000000
+vt -0.000000 1.000000
+vt 1.000000 0.062500
+vt -0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.707100 0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+g shingles_Cube.004_shingles
+s off
+f 3/1/1 9/2/1 12/3/1 6/4/1
+f 6/5/1 12/6/1 8/7/1 2/8/1
+f 1/9/2 7/10/2 11/11/2 5/12/2
+f 5/13/2 11/14/2 10/15/2 4/16/2
+f 17/17/3 18/18/3 14/7/3 13/19/3
+f 18/17/4 17/18/4 16/7/4 15/19/4
+f 14/7/5 20/20/5 19/5/5 13/19/5
+f 16/7/6 22/20/6 21/5/6 15/19/6
+o main-wood_Cube.002
+v -0.437500 -0.312500 0.437500
+v -0.437500 -0.312500 -0.437500
+v 0.437500 -0.312500 -0.437500
+v 0.437500 -0.312500 0.437500
+v -0.375000 -0.250000 -0.437500
+v 0.375000 -0.250000 -0.437500
+v -0.375000 -0.250000 0.375000
+v 0.375000 -0.250000 0.375000
+v 0.000000 0.875000 0.375000
+v -0.375000 0.500000 -0.312500
+v 0.375000 0.500000 -0.312500
+v 0.000000 0.875000 -0.312500
+v -0.375000 -0.250000 -0.375000
+v 0.375000 -0.250000 -0.375000
+v -0.375000 0.312500 -0.375000
+v 0.375000 0.312500 -0.375000
+v 0.375001 -0.250001 -0.312502
+v -0.374999 -0.250001 -0.312502
+v 0.187499 -0.250001 -0.312502
+v -0.187500 -0.250000 -0.375000
+v 0.187499 0.312500 -0.312501
+v 0.187500 0.312500 -0.375000
+v -0.187498 0.312500 -0.312501
+v -0.187500 0.312500 -0.375000
+v 0.187500 -0.250000 -0.375000
+v -0.187498 -0.250001 -0.312502
+v 0.562500 0.375000 -0.500000
+v 0.562500 0.375000 0.500000
+v -0.562500 0.375000 0.500000
+v -0.562500 0.375000 -0.500000
+v 0.000000 0.937500 -0.500000
+v 0.000000 0.937500 0.500000
+v -0.437500 0.500000 0.437500
+v -0.437500 0.500000 -0.437500
+v 0.437500 0.500000 -0.437500
+v 0.437500 0.500000 0.437500
+v 0.000000 0.937500 0.437500
+v -0.375000 0.562500 -0.437500
+v 0.375000 0.562500 -0.437500
+v -0.375000 0.562500 -0.375000
+v 0.375000 0.562500 -0.375000
+v 0.000000 0.937500 -0.375000
+v -0.437500 -0.500000 -0.312500
+v -0.437500 -0.500000 -0.437500
+v -0.312500 -0.500000 -0.437500
+v -0.312500 -0.500000 -0.312500
+v -0.437500 -0.312500 -0.312500
+v -0.312500 -0.312500 -0.437500
+v -0.312500 -0.312500 -0.312500
+v 0.312500 -0.500000 -0.312500
+v 0.312500 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.312500
+v 0.312500 -0.312500 -0.312500
+v 0.312500 -0.312500 -0.437500
+v 0.437500 -0.312500 -0.312500
+v 0.312500 -0.500000 0.437500
+v 0.312500 -0.500000 0.312500
+v 0.437500 -0.500000 0.312500
+v 0.437500 -0.500000 0.437500
+v 0.312500 -0.312500 0.437500
+v 0.312500 -0.312500 0.312500
+v 0.437500 -0.312500 0.312500
+v -0.437500 -0.500000 0.437500
+v -0.437500 -0.500000 0.312500
+v -0.312500 -0.500000 0.312500
+v -0.312500 -0.500000 0.437500
+v -0.437500 -0.312500 0.312500
+v -0.312500 -0.312500 0.312500
+v -0.312500 -0.312500 0.437500
+v -0.375000 0.375000 -0.437500
+v -0.437500 0.375000 -0.437500
+v 0.437500 0.375000 -0.437500
+v 0.375000 0.375000 -0.437500
+v 0.437500 0.375000 0.437500
+v -0.437500 0.375000 0.437500
+v 0.375000 0.375000 -0.375000
+v -0.375000 0.375000 -0.375000
+v -0.375000 0.500000 0.375000
+v 0.375000 0.500000 0.375000
+v 0.375000 -0.312500 -0.437500
+v -0.375000 -0.312500 -0.437500
+vt 0.187500 0.062500
+vt 0.312500 0.062500
+vt 0.375000 0.125000
+vt 0.187500 0.125000
+vt 0.187500 0.875000
+vt 0.375000 0.875000
+vt 0.312500 0.937500
+vt 0.187500 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 0.937500
+vt 0.875000 0.125000
+vt 0.875000 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.125000
+vt 0.187500 0.187500
+vt 0.000000 0.187500
+vt 0.000000 0.062500
+vt 0.937500 0.687500
+vt 0.937500 0.875000
+vt 0.250000 0.875000
+vt 0.250000 0.687500
+vt 0.687500 0.812500
+vt 0.687500 0.875000
+vt -0.000000 0.875000
+vt -0.000000 0.812500
+vt 0.187500 0.812500
+vt -0.000000 0.937500
+vt 0.687500 1.000000
+vt -0.000000 1.000000
+vt 0.687500 0.937500
+vt 0.937500 0.125000
+vt 0.937500 0.312500
+vt 0.250000 0.312500
+vt 0.250000 0.125000
+vt 0.750000 1.000000
+vt 0.000000 -0.000000
+vt 0.750000 0.000000
+vt 0.250000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.250000 1.000000
+vt 0.750000 0.500000
+vt 0.375000 0.375000
+vt 0.375000 0.437500
+vt 0.000000 0.437500
+vt 0.000000 0.375000
+vt 0.187500 0.625000
+vt 0.187500 0.750000
+vt -0.000000 0.750000
+vt -0.000000 0.625000
+vt 0.062500 0.187500
+vt 0.187500 0.250000
+vt 0.187500 0.375000
+vt -0.000000 0.250000
+vt 0.812500 0.187500
+vt 0.812500 0.062500
+vt 0.937500 0.187500
+vt 0.812500 0.937500
+vt 0.812500 0.812500
+vt 0.937500 0.812500
+vt 0.062500 0.812500
+vt 1.000000 0.062500
+vt 1.000000 0.937500
+vt 1.000000 0.125000
+vt 1.000000 0.875000
+vt -0.000000 0.125000
+vt 0.750000 0.125000
+vt 0.750000 0.875000
+vt 0.500000 0.937500
+vt 0.500000 0.062500
+vt 0.375000 0.500000
+vt 0.750000 0.625000
+vt 0.750000 0.562500
+vt 0.937500 0.562500
+vt 0.937500 0.625000
+vt 0.750000 0.687500
+vt 0.937500 0.750000
+vt 0.750000 0.750000
+vt 0.875000 0.000000
+vt 0.875000 0.750000
+vt 0.125000 0.750000
+vt 0.125000 -0.000000
+vt 0.000000 0.687500
+vt 0.000000 0.562500
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 -0.000000
+vn 1.000000 0.000000 -0.000000
+vn -0.707100 -0.707100 0.000000
+vn 0.707100 -0.707100 0.000000
+vn 0.000000 0.000000 1.000000
+g main-wood_Cube.002_wood
+s off
+f 94/21/7 56/22/7 60/23/7 93/24/7
+f 96/25/7 61/26/7 57/27/7 95/28/7
+f 23/29/8 24/30/8 25/31/8 26/32/8
+f 30/33/9 28/34/9 27/35/9 29/36/9
+f 24/21/7 70/37/7 67/38/7 66/39/7
+f 44/40/7 38/41/7 36/42/7 47/43/7
+f 43/44/10 44/45/10 47/46/10 41/47/10
+f 69/48/10 24/28/10 66/49/10 65/47/10
+f 45/50/11 48/51/11 42/49/11 46/52/11
+f 37/53/7 46/54/7 42/55/7 35/56/7
+f 53/57/12 49/51/12 50/58/12 54/59/12
+f 54/60/13 51/61/13 52/62/13 53/63/13
+f 97/21/14 58/22/14 59/64/14 55/27/14 98/28/14
+f 25/48/11 78/28/11 75/49/11 74/47/11
+f 77/48/7 25/28/7 74/49/7 73/47/7
+f 44/65/8 43/66/8 45/67/8 46/68/8
+f 99/25/7 100/24/7 62/23/7 64/64/7 63/26/7
+f 70/21/11 71/37/11 68/38/11 67/39/11
+f 71/69/14 69/70/14 65/71/14 68/72/14
+f 65/73/8 66/30/8 67/21/8 68/37/8
+f 76/48/10 77/28/10 73/49/10 72/47/10
+f 78/74/14 76/75/14 72/68/14 75/76/14
+f 72/77/8 73/78/8 74/31/8 75/79/8
+f 26/21/14 83/37/14 79/38/14 82/39/14
+f 83/21/10 84/37/10 80/38/10 79/39/10
+f 84/69/7 85/70/7 81/71/7 80/72/7
+f 79/80/8 80/81/8 81/82/8 82/32/8
+f 90/74/7 91/75/7 88/68/7 87/76/7
+f 91/21/11 92/37/11 89/38/11 88/39/11
+f 86/29/8 87/83/8 88/48/8 89/28/8
+f 85/48/11 26/28/11 82/49/11 81/47/11
+f 23/21/10 90/37/10 87/38/10 86/39/10
+f 92/48/14 23/28/14 86/49/14 89/47/14
+f 26/21/14 97/84/14 98/85/14 23/28/14
+f 38/41/7 37/53/7 100/86/7 99/87/7
+f 29/88/7 101/89/7 102/90/7 30/46/7
+f 34/91/12 33/29/12 102/30/12 31/92/12
+f 32/32/13 34/91/13 31/92/13 101/31/13
+f 98/39/10 55/21/10 56/28/10 94/49/10
+f 95/39/11 57/21/11 58/28/11 97/49/11
+f 101/88/7 31/93/7 102/46/7
+f 100/94/11 93/95/11 60/96/11 62/97/11
+f 99/98/10 63/40/10 61/99/10 96/100/10
+f 102/101/10 33/102/10 39/103/10 30/104/10
+f 101/102/11 29/103/11 40/104/11 32/101/11
+f 99/98/10 96/100/10 28/71/10 36/105/10
+f 93/95/11 100/94/11 35/72/11 27/106/11
+f 25/39/11 95/84/11 97/85/11 26/49/11
+f 23/39/10 98/84/10 94/85/10 24/49/10
+f 103/25/7 104/24/7 27/56/7 28/42/7
+f 94/84/7 93/86/7 104/24/7 24/21/7
+f 95/85/7 25/28/7 103/25/7 96/87/7
+o pillow_Cube.001
+v -0.250000 -0.250000 -0.250000
+v 0.250000 -0.250000 -0.250000
+v -0.212977 -0.207031 0.212977
+v -0.212977 -0.207031 -0.212977
+v 0.212977 -0.207031 -0.212977
+v 0.212977 -0.207031 0.212977
+v -0.250000 -0.238281 0.250000
+v -0.250000 -0.238281 -0.250000
+v 0.250000 -0.238281 -0.250000
+v 0.250000 -0.238281 0.250000
+vt 0.738146 0.750000
+vt 0.738146 0.250000
+vt 0.749597 0.250000
+vt 0.749597 0.750000
+vt 0.285772 0.287023
+vt 0.701971 0.287023
+vt 0.701971 0.712977
+vt 0.285772 0.712977
+vt 0.249597 0.750000
+vt 0.249597 0.250000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn -0.645000 0.764200 0.000000
+vn 0.000000 0.764200 -0.645000
+vn 0.645000 0.764200 0.000000
+g pillow_Cube.001_pillow
+s off
+f 112/107/15 113/108/15 106/109/15 105/110/15
+f 110/111/16 109/112/16 108/113/16 107/114/16
+f 107/114/17 108/113/17 112/107/17 111/115/17
+f 108/113/18 109/112/18 113/108/18 112/107/18
+f 109/112/19 110/111/19 114/116/19 113/108/19
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_closet.obj b/homedecor_modpack/homedecor/models/homedecor_door_closet.obj
new file mode 100644
index 0000000..3cbfca7
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_closet.obj
@@ -0,0 +1,518 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-closet.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.374531 0.375031
+v 0.374875 0.437531 0.499969
+v -0.374875 0.437531 0.499969
+v -0.374875 1.374531 0.499969
+v -0.374875 0.437531 0.375031
+v 0.374875 0.437531 0.375031
+v 0.374875 1.374531 0.375031
+v -0.374875 1.374531 0.375031
+v 0.374875 1.374531 0.499969
+v -0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.374875 -0.374531 0.499969
+v -0.374875 -0.374531 0.499969
+v -0.374875 0.562469 0.499969
+v -0.374875 -0.374531 0.375031
+v 0.374875 -0.374531 0.375031
+v 0.374875 0.562469 0.375031
+v -0.374875 0.562469 0.375031
+v 0.374875 0.562469 0.499969
+v 0.375000 1.365847 0.454073
+v 0.375000 1.360323 0.459597
+v -0.375000 1.360323 0.459597
+v -0.375000 1.365847 0.454073
+v 0.375000 1.327177 0.415403
+v 0.375000 1.321653 0.420927
+v -0.375000 1.321653 0.420927
+v -0.375000 1.327177 0.415403
+v 0.375000 1.303347 0.454073
+v 0.375000 1.297823 0.459597
+v -0.375000 1.297823 0.459597
+v -0.375000 1.303347 0.454073
+v 0.375000 1.264677 0.415403
+v 0.375000 1.259153 0.420927
+v -0.375000 1.259153 0.420927
+v -0.375000 1.264677 0.415403
+v 0.375000 1.240847 0.454073
+v 0.375000 1.235323 0.459597
+v -0.375000 1.235323 0.459597
+v -0.375000 1.240847 0.454073
+v 0.375000 1.202177 0.415403
+v 0.375000 1.196653 0.420927
+v -0.375000 1.196653 0.420927
+v -0.375000 1.202177 0.415403
+v 0.375000 1.178347 0.454073
+v 0.375000 1.172823 0.459597
+v -0.375000 1.172823 0.459597
+v -0.375000 1.178347 0.454073
+v 0.375000 1.139677 0.415403
+v 0.375000 1.134153 0.420927
+v -0.375000 1.134153 0.420927
+v -0.375000 1.139677 0.415403
+v 0.375000 1.115847 0.454073
+v 0.375000 1.110323 0.459597
+v -0.375000 1.110323 0.459597
+v -0.375000 1.115847 0.454073
+v 0.375000 1.077177 0.415403
+v 0.375000 1.071653 0.420927
+v -0.375000 1.071653 0.420927
+v -0.375000 1.077177 0.415403
+v 0.375000 1.053347 0.454073
+v 0.375000 1.047823 0.459597
+v -0.375000 1.047823 0.459597
+v -0.375000 1.053347 0.454073
+v 0.375000 1.014677 0.415403
+v 0.375000 1.009153 0.420927
+v -0.375000 1.009153 0.420927
+v -0.375000 1.014677 0.415403
+v 0.375000 0.928347 0.454073
+v 0.375000 0.922823 0.459597
+v -0.375000 0.922823 0.459597
+v -0.375000 0.928347 0.454073
+v 0.375000 0.889677 0.415403
+v 0.375000 0.884153 0.420927
+v -0.375000 0.884153 0.420927
+v -0.375000 0.889677 0.415403
+v 0.375000 0.990847 0.454073
+v 0.375000 0.985323 0.459597
+v -0.375000 0.985323 0.459597
+v -0.375000 0.990847 0.454073
+v 0.375000 0.952177 0.415403
+v 0.375000 0.946653 0.420927
+v -0.375000 0.946653 0.420927
+v -0.375000 0.952177 0.415403
+v 0.375000 0.865847 0.454073
+v 0.375000 0.860323 0.459597
+v -0.375000 0.860323 0.459597
+v -0.375000 0.865847 0.454073
+v 0.375000 0.827177 0.415403
+v 0.375000 0.821653 0.420927
+v -0.375000 0.821653 0.420927
+v -0.375000 0.827177 0.415403
+v 0.375000 0.803347 0.454073
+v 0.375000 0.797823 0.459597
+v -0.375000 0.797823 0.459597
+v -0.375000 0.803347 0.454073
+v 0.375000 0.764677 0.415403
+v 0.375000 0.759153 0.420927
+v -0.375000 0.759153 0.420927
+v -0.375000 0.764677 0.415403
+v 0.375000 0.740847 0.454073
+v 0.375000 0.735323 0.459597
+v -0.375000 0.735323 0.459597
+v -0.375000 0.740847 0.454073
+v 0.375000 0.702177 0.415403
+v 0.375000 0.696653 0.420927
+v -0.375000 0.696653 0.420927
+v -0.375000 0.702177 0.415403
+v 0.375000 0.678347 0.454073
+v 0.375000 0.672823 0.459597
+v -0.375000 0.672823 0.459597
+v -0.375000 0.678347 0.454073
+v 0.375000 0.639677 0.415403
+v 0.375000 0.634153 0.420927
+v -0.375000 0.634153 0.420927
+v -0.375000 0.639677 0.415403
+v 0.375000 0.615847 0.454073
+v 0.375000 0.610323 0.459597
+v -0.375000 0.610323 0.459597
+v -0.375000 0.615847 0.454073
+v 0.375000 0.577177 0.415403
+v 0.375000 0.571653 0.420927
+v -0.375000 0.571653 0.420927
+v -0.375000 0.577177 0.415403
+v 0.375000 0.428347 0.454073
+v 0.375000 0.422823 0.459597
+v -0.375000 0.422823 0.459597
+v -0.375000 0.428347 0.454073
+v 0.375000 0.389677 0.415403
+v 0.375000 0.384153 0.420927
+v -0.375000 0.384153 0.420927
+v -0.375000 0.389677 0.415403
+v 0.375000 0.365847 0.454073
+v 0.375000 0.360323 0.459597
+v -0.375000 0.360323 0.459597
+v -0.375000 0.365847 0.454073
+v 0.375000 0.327177 0.415403
+v 0.375000 0.321653 0.420927
+v -0.375000 0.321653 0.420927
+v -0.375000 0.327177 0.415403
+v 0.375000 0.303347 0.454073
+v 0.375000 0.297823 0.459597
+v -0.375000 0.297823 0.459597
+v -0.375000 0.303347 0.454073
+v 0.375000 0.264677 0.415403
+v 0.375000 0.259153 0.420927
+v -0.375000 0.259153 0.420927
+v -0.375000 0.264677 0.415403
+v 0.375000 0.240847 0.454073
+v 0.375000 0.235323 0.459597
+v -0.375000 0.235323 0.459597
+v -0.375000 0.240847 0.454073
+v 0.375000 0.202177 0.415403
+v 0.375000 0.196653 0.420927
+v -0.375000 0.196653 0.420927
+v -0.375000 0.202177 0.415403
+v 0.375000 0.178347 0.454073
+v 0.375000 0.172823 0.459597
+v -0.375000 0.172823 0.459597
+v -0.375000 0.178347 0.454073
+v 0.375000 0.139677 0.415403
+v 0.375000 0.134153 0.420927
+v -0.375000 0.134153 0.420927
+v -0.375000 0.139677 0.415403
+v 0.375000 0.115847 0.454073
+v 0.375000 0.110323 0.459597
+v -0.375000 0.110323 0.459597
+v -0.375000 0.115847 0.454073
+v 0.375000 0.077177 0.415403
+v 0.375000 0.071653 0.420927
+v -0.375000 0.071653 0.420927
+v -0.375000 0.077177 0.415403
+v 0.375000 -0.009153 0.454073
+v 0.375000 -0.014677 0.459597
+v -0.375000 -0.014677 0.459597
+v -0.375000 -0.009153 0.454073
+v 0.375000 -0.047823 0.415403
+v 0.375000 -0.053347 0.420927
+v -0.375000 -0.053347 0.420927
+v -0.375000 -0.047823 0.415403
+v 0.375000 0.053347 0.454073
+v 0.375000 0.047823 0.459597
+v -0.375000 0.047823 0.459597
+v -0.375000 0.053347 0.454073
+v 0.375000 0.014677 0.415403
+v 0.375000 0.009153 0.420927
+v -0.375000 0.009153 0.420927
+v -0.375000 0.014677 0.415403
+v 0.375000 -0.071653 0.454073
+v 0.375000 -0.077177 0.459597
+v -0.375000 -0.077177 0.459597
+v -0.375000 -0.071653 0.454073
+v 0.375000 -0.110323 0.415403
+v 0.375000 -0.115847 0.420927
+v -0.375000 -0.115847 0.420927
+v -0.375000 -0.110323 0.415403
+v 0.375000 -0.134153 0.454073
+v 0.375000 -0.139677 0.459597
+v -0.375000 -0.139677 0.459597
+v -0.375000 -0.134153 0.454073
+v 0.375000 -0.172823 0.415403
+v 0.375000 -0.178347 0.420927
+v -0.375000 -0.178347 0.420927
+v -0.375000 -0.172823 0.415403
+v 0.375000 -0.196653 0.454073
+v 0.375000 -0.202177 0.459597
+v -0.375000 -0.202177 0.459597
+v -0.375000 -0.196653 0.454073
+v 0.375000 -0.235323 0.415403
+v 0.375000 -0.240847 0.420927
+v -0.375000 -0.240847 0.420927
+v -0.375000 -0.235323 0.415403
+v 0.375000 -0.259153 0.454073
+v 0.375000 -0.264677 0.459597
+v -0.375000 -0.264677 0.459597
+v -0.375000 -0.259153 0.454073
+v 0.375000 -0.297823 0.415403
+v 0.375000 -0.303347 0.420927
+v -0.375000 -0.303347 0.420927
+v -0.375000 -0.297823 0.415403
+v 0.375000 -0.321653 0.454073
+v 0.375000 -0.327177 0.459597
+v -0.375000 -0.327177 0.459597
+v -0.375000 -0.321653 0.454073
+v 0.375000 -0.360323 0.415403
+v 0.375000 -0.365847 0.420927
+v -0.375000 -0.365847 0.420927
+v -0.375000 -0.360323 0.415403
+vt 0.515625 0.937500
+vt 0.140625 0.937500
+vt 0.078125 0.937500
+vt 0.078125 1.000000
+vt 0.578125 1.000000
+vt 0.578125 0.937500
+vt 0.515625 0.468750
+vt 0.515625 0.531250
+vt 0.140625 0.531250
+vt 0.140625 0.468750
+vt 0.015625 1.000000
+vt 0.015625 0.937500
+vt 0.015625 0.062500
+vt 0.015625 -0.000000
+vt 0.078125 -0.000000
+vt 0.078125 0.062500
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.578125 0.062500
+vt 0.515625 0.062500
+vt 0.140625 0.062500
+vt 0.578125 0.000000
+vt 0.640625 0.000000
+vt 0.640625 0.062500
+vt 0.640625 0.937500
+vt 0.640625 1.000000
+vt 0.140625 0.906250
+vt 0.515625 0.906250
+vt 0.015625 0.531250
+vt 0.078125 0.531250
+vt 0.671875 0.687500
+vt 0.671875 0.312500
+vt 0.734375 0.312500
+vt 0.734375 0.687500
+vt 0.578125 0.531250
+vt 0.640625 0.531250
+vt 0.828125 0.687500
+vt 0.765625 0.687500
+vt 0.765625 0.312500
+vt 0.828125 0.312500
+vt 0.015625 0.468750
+vt 0.078125 0.468750
+vt 0.640625 0.468750
+vt 0.578125 0.468750
+vt 0.515625 0.921875
+vt 0.140625 0.921875
+vt 0.140625 0.875000
+vt 0.515625 0.875000
+vt 0.515625 0.890625
+vt 0.140625 0.890625
+vt 0.140625 0.843750
+vt 0.515625 0.843750
+vt 0.515625 0.859375
+vt 0.140625 0.859375
+vt 0.140625 0.812500
+vt 0.515625 0.812500
+vt 0.515625 0.828125
+vt 0.140625 0.828125
+vt 0.140625 0.781250
+vt 0.515625 0.781250
+vt 0.515625 0.796875
+vt 0.140625 0.796875
+vt 0.140625 0.750000
+vt 0.515625 0.750000
+vt 0.515625 0.765625
+vt 0.140625 0.765625
+vt 0.140625 0.687500
+vt 0.140625 0.718750
+vt 0.515625 0.718750
+vt 0.515625 0.687500
+vt 0.515625 0.703125
+vt 0.140625 0.703125
+vt 0.515625 0.734375
+vt 0.140625 0.734375
+vt 0.140625 0.656250
+vt 0.515625 0.656250
+vt 0.515625 0.671875
+vt 0.140625 0.671875
+vt 0.140625 0.625000
+vt 0.515625 0.625000
+vt 0.515625 0.640625
+vt 0.140625 0.640625
+vt 0.140625 0.609375
+vt 0.515625 0.609375
+vt 0.140625 0.578125
+vt 0.515625 0.578125
+vt 0.515625 0.593750
+vt 0.140625 0.593750
+vt 0.140625 0.546875
+vt 0.515625 0.546875
+vt 0.515625 0.562500
+vt 0.140625 0.562500
+vt 0.140625 0.421875
+vt 0.140625 0.453125
+vt 0.515625 0.453125
+vt 0.515625 0.421875
+vt 0.515625 0.437500
+vt 0.140625 0.437500
+vt 0.140625 0.390625
+vt 0.515625 0.390625
+vt 0.515625 0.406250
+vt 0.140625 0.406250
+vt 0.140625 0.359375
+vt 0.515625 0.359375
+vt 0.515625 0.375000
+vt 0.140625 0.375000
+vt 0.140625 0.328125
+vt 0.515625 0.328125
+vt 0.515625 0.343750
+vt 0.140625 0.343750
+vt 0.140625 0.296875
+vt 0.515625 0.296875
+vt 0.515625 0.312500
+vt 0.140625 0.312500
+vt 0.140625 0.265625
+vt 0.515625 0.265625
+vt 0.515625 0.281250
+vt 0.140625 0.281250
+vt 0.140625 0.203125
+vt 0.140625 0.234375
+vt 0.515625 0.234375
+vt 0.515625 0.203125
+vt 0.515625 0.218750
+vt 0.140625 0.218750
+vt 0.515625 0.250000
+vt 0.140625 0.250000
+vt 0.140625 0.171875
+vt 0.515625 0.171875
+vt 0.515625 0.187500
+vt 0.140625 0.187500
+vt 0.140625 0.140625
+vt 0.515625 0.140625
+vt 0.515625 0.156250
+vt 0.140625 0.156250
+vt 0.140625 0.125000
+vt 0.515625 0.125000
+vt 0.140625 0.093750
+vt 0.515625 0.093750
+vt 0.515625 0.109375
+vt 0.140625 0.109375
+vt 0.515625 0.078125
+vt 0.140625 0.078125
+s off
+f 15/1 20/2 10/3 1/4 2/5 21/6
+f 16/7 31/8 30/9 17/10
+f 23/3 6/4 1/11 10/12 22/13 3/14 8/15 11/16
+f 18/2 19/1 12/6 5/5 6/4 23/3
+f 2/17 1/18 6/19 5/20
+f 3/21 4/22 7/23 8/24
+f 13/10 32/9 27/8 14/7
+f 24/25 12/6 19/1 31/8 16/7 28/26
+f 22/16 10/3 20/2 32/9 13/10 25/27
+f 24/25 7/28 4/29 9/30 21/31 2/32 5/5 12/6
+f 26/26 14/7 27/8 15/1 21/6 9/25
+f 29/27 17/10 30/9 18/2 23/3 11/16
+f 8/15 7/28 24/25 28/26 29/27 11/16
+f 4/28 3/15 22/16 25/27 26/26 9/25
+f 33/33 37/2 40/1 36/34
+f 35/1 39/34 38/33 34/2
+f 15/12 27/35 31/36 19/3
+f 30/37 31/38 27/39 32/40
+f 18/6 30/41 32/42 20/31
+f 18/43 20/44 15/45 19/46
+f 14/47 26/13 28/16 16/48
+f 29/37 28/38 26/39 25/40
+f 13/49 17/50 29/25 25/30
+f 17/43 13/44 14/45 16/46
+f 40/51 37/52 38/2 39/1
+f 33/52 36/51 35/34 34/33
+f 41/53 45/33 48/34 44/54
+f 43/34 47/54 46/53 42/33
+f 48/55 45/56 46/33 47/34
+f 41/56 44/55 43/54 42/53
+f 49/57 53/53 56/54 52/58
+f 51/54 55/58 54/57 50/53
+f 56/59 53/60 54/53 55/54
+f 49/60 52/59 51/58 50/57
+f 57/61 61/57 64/58 60/62
+f 59/58 63/62 62/61 58/57
+f 64/63 61/64 62/57 63/58
+f 57/64 60/63 59/62 58/61
+f 65/65 69/61 72/62 68/66
+f 67/62 71/66 70/65 66/61
+f 72/67 69/68 70/61 71/62
+f 65/68 68/67 67/66 66/65
+f 73/69 77/65 80/66 76/70
+f 75/66 79/70 78/69 74/65
+f 80/71 77/72 78/65 79/66
+f 73/72 76/71 75/70 74/69
+f 81/73 85/74 88/75 84/76
+f 83/75 87/76 86/73 82/74
+f 88/77 85/78 86/74 87/75
+f 81/78 84/77 83/76 82/73
+f 89/74 93/69 96/70 92/75
+f 91/70 95/75 94/74 90/69
+f 96/79 93/80 94/69 95/70
+f 89/80 92/79 91/75 90/74
+f 97/81 101/73 104/76 100/82
+f 99/76 103/82 102/81 98/73
+f 104/83 101/84 102/73 103/76
+f 97/84 100/83 99/82 98/81
+f 105/85 109/81 112/82 108/86
+f 107/82 111/86 110/85 106/81
+f 112/87 109/88 110/81 111/82
+f 105/88 108/87 107/86 106/85
+f 113/89 117/88 120/87 116/90
+f 115/87 119/90 118/89 114/88
+f 120/86 117/85 118/88 119/87
+f 113/85 116/86 115/90 114/89
+f 121/91 125/89 128/90 124/92
+f 123/90 127/92 126/91 122/89
+f 128/93 125/94 126/89 127/90
+f 121/94 124/93 123/92 122/91
+f 129/95 133/91 136/92 132/96
+f 131/92 135/96 134/95 130/91
+f 136/97 133/98 134/91 135/92
+f 129/98 132/97 131/96 130/95
+f 137/99 141/100 144/101 140/102
+f 139/101 143/102 142/99 138/100
+f 144/103 141/104 142/100 143/101
+f 137/104 140/103 139/102 138/99
+f 145/105 149/99 152/102 148/106
+f 147/102 151/106 150/105 146/99
+f 152/107 149/108 150/99 151/102
+f 145/108 148/107 147/106 146/105
+f 153/109 157/105 160/106 156/110
+f 155/106 159/110 158/109 154/105
+f 160/111 157/112 158/105 159/106
+f 153/112 156/111 155/110 154/109
+f 161/113 165/109 168/110 164/114
+f 163/110 167/114 166/113 162/109
+f 168/115 165/116 166/109 167/110
+f 161/116 164/115 163/114 162/113
+f 169/117 173/113 176/114 172/118
+f 171/114 175/118 174/117 170/113
+f 176/119 173/120 174/113 175/114
+f 169/120 172/119 171/118 170/117
+f 177/121 181/117 184/118 180/122
+f 179/118 183/122 182/121 178/117
+f 184/123 181/124 182/117 183/118
+f 177/124 180/123 179/122 178/121
+f 185/125 189/126 192/127 188/128
+f 187/127 191/128 190/125 186/126
+f 192/129 189/130 190/126 191/127
+f 185/130 188/129 187/128 186/125
+f 193/126 197/121 200/122 196/127
+f 195/122 199/127 198/126 194/121
+f 200/131 197/132 198/121 199/122
+f 193/132 196/131 195/127 194/126
+f 201/133 205/125 208/128 204/134
+f 203/128 207/134 206/133 202/125
+f 208/135 205/136 206/125 207/128
+f 201/136 204/135 203/134 202/133
+f 209/137 213/133 216/134 212/138
+f 211/134 215/138 214/137 210/133
+f 216/139 213/140 214/133 215/134
+f 209/140 212/139 211/138 210/137
+f 217/141 221/140 224/139 220/142
+f 219/139 223/142 222/141 218/140
+f 224/138 221/137 222/140 223/139
+f 217/137 220/138 219/142 218/141
+f 225/143 229/141 232/142 228/144
+f 227/142 231/144 230/143 226/141
+f 232/145 229/146 230/141 231/142
+f 225/146 228/145 227/144 226/143
+f 233/27 237/143 240/144 236/26
+f 235/144 239/26 238/27 234/143
+f 240/147 237/148 238/143 239/144
+f 233/148 236/147 235/26 234/27
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_closet_right.obj b/homedecor_modpack/homedecor/models/homedecor_door_closet_right.obj
new file mode 100644
index 0000000..196860b
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_closet_right.obj
@@ -0,0 +1,518 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-closet-right.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.374531 0.375031
+v 0.374875 0.437531 0.499969
+v -0.374875 0.437531 0.499969
+v -0.374875 1.374531 0.499969
+v -0.374875 0.437531 0.375031
+v 0.374875 0.437531 0.375031
+v 0.374875 1.374531 0.375031
+v -0.374875 1.374531 0.375031
+v 0.374875 1.374531 0.499969
+v -0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.374875 -0.374531 0.499969
+v -0.374875 -0.374531 0.499969
+v -0.374875 0.562469 0.499969
+v -0.374875 -0.374531 0.375031
+v 0.374875 -0.374531 0.375031
+v 0.374875 0.562469 0.375031
+v -0.374875 0.562469 0.375031
+v 0.374875 0.562469 0.499969
+v 0.375000 1.365847 0.454073
+v 0.375000 1.360323 0.459597
+v -0.375000 1.360323 0.459597
+v -0.375000 1.365847 0.454073
+v 0.375000 1.327177 0.415403
+v 0.375000 1.321653 0.420927
+v -0.375000 1.321653 0.420927
+v -0.375000 1.327177 0.415403
+v 0.375000 1.303347 0.454073
+v 0.375000 1.297823 0.459597
+v -0.375000 1.297823 0.459597
+v -0.375000 1.303347 0.454073
+v 0.375000 1.264677 0.415403
+v 0.375000 1.259153 0.420927
+v -0.375000 1.259153 0.420927
+v -0.375000 1.264677 0.415403
+v 0.375000 1.240847 0.454073
+v 0.375000 1.235323 0.459597
+v -0.375000 1.235323 0.459597
+v -0.375000 1.240847 0.454073
+v 0.375000 1.202177 0.415403
+v 0.375000 1.196653 0.420927
+v -0.375000 1.196653 0.420927
+v -0.375000 1.202177 0.415403
+v 0.375000 1.178347 0.454073
+v 0.375000 1.172823 0.459597
+v -0.375000 1.172823 0.459597
+v -0.375000 1.178347 0.454073
+v 0.375000 1.139677 0.415403
+v 0.375000 1.134153 0.420927
+v -0.375000 1.134153 0.420927
+v -0.375000 1.139677 0.415403
+v 0.375000 1.115847 0.454073
+v 0.375000 1.110323 0.459597
+v -0.375000 1.110323 0.459597
+v -0.375000 1.115847 0.454073
+v 0.375000 1.077177 0.415403
+v 0.375000 1.071653 0.420927
+v -0.375000 1.071653 0.420927
+v -0.375000 1.077177 0.415403
+v 0.375000 1.053347 0.454073
+v 0.375000 1.047823 0.459597
+v -0.375000 1.047823 0.459597
+v -0.375000 1.053347 0.454073
+v 0.375000 1.014677 0.415403
+v 0.375000 1.009153 0.420927
+v -0.375000 1.009153 0.420927
+v -0.375000 1.014677 0.415403
+v 0.375000 0.928347 0.454073
+v 0.375000 0.922823 0.459597
+v -0.375000 0.922823 0.459597
+v -0.375000 0.928347 0.454073
+v 0.375000 0.889677 0.415403
+v 0.375000 0.884153 0.420927
+v -0.375000 0.884153 0.420927
+v -0.375000 0.889677 0.415403
+v 0.375000 0.990847 0.454073
+v 0.375000 0.985323 0.459597
+v -0.375000 0.985323 0.459597
+v -0.375000 0.990847 0.454073
+v 0.375000 0.952177 0.415403
+v 0.375000 0.946653 0.420927
+v -0.375000 0.946653 0.420927
+v -0.375000 0.952177 0.415403
+v 0.375000 0.865847 0.454073
+v 0.375000 0.860323 0.459597
+v -0.375000 0.860323 0.459597
+v -0.375000 0.865847 0.454073
+v 0.375000 0.827177 0.415403
+v 0.375000 0.821653 0.420927
+v -0.375000 0.821653 0.420927
+v -0.375000 0.827177 0.415403
+v 0.375000 0.803347 0.454073
+v 0.375000 0.797823 0.459597
+v -0.375000 0.797823 0.459597
+v -0.375000 0.803347 0.454073
+v 0.375000 0.764677 0.415403
+v 0.375000 0.759153 0.420927
+v -0.375000 0.759153 0.420927
+v -0.375000 0.764677 0.415403
+v 0.375000 0.740847 0.454073
+v 0.375000 0.735323 0.459597
+v -0.375000 0.735323 0.459597
+v -0.375000 0.740847 0.454073
+v 0.375000 0.702177 0.415403
+v 0.375000 0.696653 0.420927
+v -0.375000 0.696653 0.420927
+v -0.375000 0.702177 0.415403
+v 0.375000 0.678347 0.454073
+v 0.375000 0.672823 0.459597
+v -0.375000 0.672823 0.459597
+v -0.375000 0.678347 0.454073
+v 0.375000 0.639677 0.415403
+v 0.375000 0.634153 0.420927
+v -0.375000 0.634153 0.420927
+v -0.375000 0.639677 0.415403
+v 0.375000 0.615847 0.454073
+v 0.375000 0.610323 0.459597
+v -0.375000 0.610323 0.459597
+v -0.375000 0.615847 0.454073
+v 0.375000 0.577177 0.415403
+v 0.375000 0.571653 0.420927
+v -0.375000 0.571653 0.420927
+v -0.375000 0.577177 0.415403
+v 0.375000 0.428347 0.454073
+v 0.375000 0.422823 0.459597
+v -0.375000 0.422823 0.459597
+v -0.375000 0.428347 0.454073
+v 0.375000 0.389677 0.415403
+v 0.375000 0.384153 0.420927
+v -0.375000 0.384153 0.420927
+v -0.375000 0.389677 0.415403
+v 0.375000 0.365847 0.454073
+v 0.375000 0.360323 0.459597
+v -0.375000 0.360323 0.459597
+v -0.375000 0.365847 0.454073
+v 0.375000 0.327177 0.415403
+v 0.375000 0.321653 0.420927
+v -0.375000 0.321653 0.420927
+v -0.375000 0.327177 0.415403
+v 0.375000 0.303347 0.454073
+v 0.375000 0.297823 0.459597
+v -0.375000 0.297823 0.459597
+v -0.375000 0.303347 0.454073
+v 0.375000 0.264677 0.415403
+v 0.375000 0.259153 0.420927
+v -0.375000 0.259153 0.420927
+v -0.375000 0.264677 0.415403
+v 0.375000 0.240847 0.454073
+v 0.375000 0.235323 0.459597
+v -0.375000 0.235323 0.459597
+v -0.375000 0.240847 0.454073
+v 0.375000 0.202177 0.415403
+v 0.375000 0.196653 0.420927
+v -0.375000 0.196653 0.420927
+v -0.375000 0.202177 0.415403
+v 0.375000 0.178347 0.454073
+v 0.375000 0.172823 0.459597
+v -0.375000 0.172823 0.459597
+v -0.375000 0.178347 0.454073
+v 0.375000 0.139677 0.415403
+v 0.375000 0.134153 0.420927
+v -0.375000 0.134153 0.420927
+v -0.375000 0.139677 0.415403
+v 0.375000 0.115847 0.454073
+v 0.375000 0.110323 0.459597
+v -0.375000 0.110323 0.459597
+v -0.375000 0.115847 0.454073
+v 0.375000 0.077177 0.415403
+v 0.375000 0.071653 0.420927
+v -0.375000 0.071653 0.420927
+v -0.375000 0.077177 0.415403
+v 0.375000 -0.009153 0.454073
+v 0.375000 -0.014677 0.459597
+v -0.375000 -0.014677 0.459597
+v -0.375000 -0.009153 0.454073
+v 0.375000 -0.047823 0.415403
+v 0.375000 -0.053347 0.420927
+v -0.375000 -0.053347 0.420927
+v -0.375000 -0.047823 0.415403
+v 0.375000 0.053347 0.454073
+v 0.375000 0.047823 0.459597
+v -0.375000 0.047823 0.459597
+v -0.375000 0.053347 0.454073
+v 0.375000 0.014677 0.415403
+v 0.375000 0.009153 0.420927
+v -0.375000 0.009153 0.420927
+v -0.375000 0.014677 0.415403
+v 0.375000 -0.071653 0.454073
+v 0.375000 -0.077177 0.459597
+v -0.375000 -0.077177 0.459597
+v -0.375000 -0.071653 0.454073
+v 0.375000 -0.110323 0.415403
+v 0.375000 -0.115847 0.420927
+v -0.375000 -0.115847 0.420927
+v -0.375000 -0.110323 0.415403
+v 0.375000 -0.134153 0.454073
+v 0.375000 -0.139677 0.459597
+v -0.375000 -0.139677 0.459597
+v -0.375000 -0.134153 0.454073
+v 0.375000 -0.172823 0.415403
+v 0.375000 -0.178347 0.420927
+v -0.375000 -0.178347 0.420927
+v -0.375000 -0.172823 0.415403
+v 0.375000 -0.196653 0.454073
+v 0.375000 -0.202177 0.459597
+v -0.375000 -0.202177 0.459597
+v -0.375000 -0.196653 0.454073
+v 0.375000 -0.235323 0.415403
+v 0.375000 -0.240847 0.420927
+v -0.375000 -0.240847 0.420927
+v -0.375000 -0.235323 0.415403
+v 0.375000 -0.259153 0.454073
+v 0.375000 -0.264677 0.459597
+v -0.375000 -0.264677 0.459597
+v -0.375000 -0.259153 0.454073
+v 0.375000 -0.297823 0.415403
+v 0.375000 -0.303347 0.420927
+v -0.375000 -0.303347 0.420927
+v -0.375000 -0.297823 0.415403
+v 0.375000 -0.321653 0.454073
+v 0.375000 -0.327177 0.459597
+v -0.375000 -0.327177 0.459597
+v -0.375000 -0.321653 0.454073
+v 0.375000 -0.360323 0.415403
+v 0.375000 -0.365847 0.420927
+v -0.375000 -0.365847 0.420927
+v -0.375000 -0.360323 0.415403
+vt 0.140625 0.937500
+vt 0.515625 0.937500
+vt 0.578125 0.937500
+vt 0.578125 1.000000
+vt 0.078125 1.000000
+vt 0.078125 0.937500
+vt 0.140625 0.468750
+vt 0.140625 0.531250
+vt 0.515625 0.531250
+vt 0.515625 0.468750
+vt 0.640625 1.000000
+vt 0.640625 0.937500
+vt 0.640625 0.062500
+vt 0.640625 0.000000
+vt 0.578125 0.000000
+vt 0.578125 0.062500
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.078125 0.062500
+vt 0.140625 0.062500
+vt 0.515625 0.062500
+vt 0.078125 0.000000
+vt 0.015625 0.000000
+vt 0.015625 0.062500
+vt 0.015625 0.937500
+vt 0.015625 1.000000
+vt 0.515625 0.906250
+vt 0.140625 0.906250
+vt 0.640625 0.531250
+vt 0.578125 0.531250
+vt 0.734375 0.312500
+vt 0.734375 0.687500
+vt 0.671875 0.687500
+vt 0.671875 0.312500
+vt 0.078125 0.531250
+vt 0.015625 0.531250
+vt 0.765625 0.312500
+vt 0.828125 0.312500
+vt 0.828125 0.687500
+vt 0.765625 0.687500
+vt 0.640625 0.468750
+vt 0.578125 0.468750
+vt 0.015625 0.468750
+vt 0.078125 0.468750
+vt 0.140625 0.921875
+vt 0.515625 0.921875
+vt 0.515625 0.875000
+vt 0.140625 0.875000
+vt 0.140625 0.890625
+vt 0.515625 0.890625
+vt 0.515625 0.843750
+vt 0.140625 0.843750
+vt 0.140625 0.859375
+vt 0.515625 0.859375
+vt 0.515625 0.812500
+vt 0.140625 0.812500
+vt 0.140625 0.828125
+vt 0.515625 0.828125
+vt 0.515625 0.781250
+vt 0.140625 0.781250
+vt 0.140625 0.796875
+vt 0.515625 0.796875
+vt 0.515625 0.750000
+vt 0.140625 0.750000
+vt 0.140625 0.765625
+vt 0.515625 0.765625
+vt 0.515625 0.687500
+vt 0.515625 0.718750
+vt 0.140625 0.718750
+vt 0.140625 0.687500
+vt 0.140625 0.703125
+vt 0.515625 0.703125
+vt 0.140625 0.734375
+vt 0.515625 0.734375
+vt 0.515625 0.656250
+vt 0.140625 0.656250
+vt 0.140625 0.671875
+vt 0.515625 0.671875
+vt 0.515625 0.625000
+vt 0.140625 0.625000
+vt 0.140625 0.640625
+vt 0.515625 0.640625
+vt 0.515625 0.609375
+vt 0.140625 0.609375
+vt 0.515625 0.578125
+vt 0.140625 0.578125
+vt 0.140625 0.593750
+vt 0.515625 0.593750
+vt 0.515625 0.546875
+vt 0.140625 0.546875
+vt 0.140625 0.562500
+vt 0.515625 0.562500
+vt 0.515625 0.421875
+vt 0.515625 0.453125
+vt 0.140625 0.453125
+vt 0.140625 0.421875
+vt 0.140625 0.437500
+vt 0.515625 0.437500
+vt 0.515625 0.390625
+vt 0.140625 0.390625
+vt 0.140625 0.406250
+vt 0.515625 0.406250
+vt 0.515625 0.359375
+vt 0.140625 0.359375
+vt 0.140625 0.375000
+vt 0.515625 0.375000
+vt 0.515625 0.328125
+vt 0.140625 0.328125
+vt 0.140625 0.343750
+vt 0.515625 0.343750
+vt 0.515625 0.296875
+vt 0.140625 0.296875
+vt 0.140625 0.312500
+vt 0.515625 0.312500
+vt 0.515625 0.265625
+vt 0.140625 0.265625
+vt 0.140625 0.281250
+vt 0.515625 0.281250
+vt 0.515625 0.203125
+vt 0.515625 0.234375
+vt 0.140625 0.234375
+vt 0.140625 0.203125
+vt 0.140625 0.218750
+vt 0.515625 0.218750
+vt 0.140625 0.250000
+vt 0.515625 0.250000
+vt 0.515625 0.171875
+vt 0.140625 0.171875
+vt 0.140625 0.187500
+vt 0.515625 0.187500
+vt 0.515625 0.140625
+vt 0.140625 0.140625
+vt 0.140625 0.156250
+vt 0.515625 0.156250
+vt 0.515625 0.125000
+vt 0.140625 0.125000
+vt 0.515625 0.093750
+vt 0.140625 0.093750
+vt 0.140625 0.109375
+vt 0.515625 0.109375
+vt 0.140625 0.078125
+vt 0.515625 0.078125
+s off
+f 15/1 20/2 10/3 1/4 2/5 21/6
+f 16/7 31/8 30/9 17/10
+f 23/3 6/4 1/11 10/12 22/13 3/14 8/15 11/16
+f 18/2 19/1 12/6 5/5 6/4 23/3
+f 2/17 1/18 6/19 5/20
+f 3/21 4/22 7/23 8/24
+f 13/10 32/9 27/8 14/7
+f 24/25 12/6 19/1 31/8 16/7 28/26
+f 22/16 10/3 20/2 32/9 13/10 25/27
+f 24/25 7/28 4/29 9/30 21/31 2/32 5/5 12/6
+f 26/26 14/7 27/8 15/1 21/6 9/25
+f 29/27 17/10 30/9 18/2 23/3 11/16
+f 8/15 7/28 24/25 28/26 29/27 11/16
+f 4/28 3/15 22/16 25/27 26/26 9/25
+f 33/33 37/2 40/1 36/34
+f 35/1 39/34 38/33 34/2
+f 15/12 27/35 31/36 19/3
+f 30/37 31/38 27/39 32/40
+f 18/6 30/41 32/42 20/31
+f 18/43 20/44 15/45 19/46
+f 14/47 26/13 28/16 16/48
+f 29/37 28/38 26/39 25/40
+f 13/49 17/50 29/25 25/30
+f 17/43 13/44 14/45 16/46
+f 40/51 37/52 38/2 39/1
+f 33/52 36/51 35/34 34/33
+f 41/53 45/33 48/34 44/54
+f 43/34 47/54 46/53 42/33
+f 48/55 45/56 46/33 47/34
+f 41/56 44/55 43/54 42/53
+f 49/57 53/53 56/54 52/58
+f 51/54 55/58 54/57 50/53
+f 56/59 53/60 54/53 55/54
+f 49/60 52/59 51/58 50/57
+f 57/61 61/57 64/58 60/62
+f 59/58 63/62 62/61 58/57
+f 64/63 61/64 62/57 63/58
+f 57/64 60/63 59/62 58/61
+f 65/65 69/61 72/62 68/66
+f 67/62 71/66 70/65 66/61
+f 72/67 69/68 70/61 71/62
+f 65/68 68/67 67/66 66/65
+f 73/69 77/65 80/66 76/70
+f 75/66 79/70 78/69 74/65
+f 80/71 77/72 78/65 79/66
+f 73/72 76/71 75/70 74/69
+f 81/73 85/74 88/75 84/76
+f 83/75 87/76 86/73 82/74
+f 88/77 85/78 86/74 87/75
+f 81/78 84/77 83/76 82/73
+f 89/74 93/69 96/70 92/75
+f 91/70 95/75 94/74 90/69
+f 96/79 93/80 94/69 95/70
+f 89/80 92/79 91/75 90/74
+f 97/81 101/73 104/76 100/82
+f 99/76 103/82 102/81 98/73
+f 104/83 101/84 102/73 103/76
+f 97/84 100/83 99/82 98/81
+f 105/85 109/81 112/82 108/86
+f 107/82 111/86 110/85 106/81
+f 112/87 109/88 110/81 111/82
+f 105/88 108/87 107/86 106/85
+f 113/89 117/88 120/87 116/90
+f 115/87 119/90 118/89 114/88
+f 120/86 117/85 118/88 119/87
+f 113/85 116/86 115/90 114/89
+f 121/91 125/89 128/90 124/92
+f 123/90 127/92 126/91 122/89
+f 128/93 125/94 126/89 127/90
+f 121/94 124/93 123/92 122/91
+f 129/95 133/91 136/92 132/96
+f 131/92 135/96 134/95 130/91
+f 136/97 133/98 134/91 135/92
+f 129/98 132/97 131/96 130/95
+f 137/99 141/100 144/101 140/102
+f 139/101 143/102 142/99 138/100
+f 144/103 141/104 142/100 143/101
+f 137/104 140/103 139/102 138/99
+f 145/105 149/99 152/102 148/106
+f 147/102 151/106 150/105 146/99
+f 152/107 149/108 150/99 151/102
+f 145/108 148/107 147/106 146/105
+f 153/109 157/105 160/106 156/110
+f 155/106 159/110 158/109 154/105
+f 160/111 157/112 158/105 159/106
+f 153/112 156/111 155/110 154/109
+f 161/113 165/109 168/110 164/114
+f 163/110 167/114 166/113 162/109
+f 168/115 165/116 166/109 167/110
+f 161/116 164/115 163/114 162/113
+f 169/117 173/113 176/114 172/118
+f 171/114 175/118 174/117 170/113
+f 176/119 173/120 174/113 175/114
+f 169/120 172/119 171/118 170/117
+f 177/121 181/117 184/118 180/122
+f 179/118 183/122 182/121 178/117
+f 184/123 181/124 182/117 183/118
+f 177/124 180/123 179/122 178/121
+f 185/125 189/126 192/127 188/128
+f 187/127 191/128 190/125 186/126
+f 192/129 189/130 190/126 191/127
+f 185/130 188/129 187/128 186/125
+f 193/126 197/121 200/122 196/127
+f 195/122 199/127 198/126 194/121
+f 200/131 197/132 198/121 199/122
+f 193/132 196/131 195/127 194/126
+f 201/133 205/125 208/128 204/134
+f 203/128 207/134 206/133 202/125
+f 208/135 205/136 206/125 207/128
+f 201/136 204/135 203/134 202/133
+f 209/137 213/133 216/134 212/138
+f 211/134 215/138 214/137 210/133
+f 216/139 213/140 214/133 215/134
+f 209/140 212/139 211/138 210/137
+f 217/141 221/140 224/139 220/142
+f 219/139 223/142 222/141 218/140
+f 224/138 221/137 222/140 223/139
+f 217/137 220/138 219/142 218/141
+f 225/143 229/141 232/142 228/144
+f 227/142 231/144 230/143 226/141
+f 232/145 229/146 230/141 231/142
+f 225/146 228/145 227/144 226/143
+f 233/27 237/143 240/144 236/26
+f 235/144 239/26 238/27 234/143
+f 240/147 237/148 238/143 239/144
+f 233/148 236/147 235/26 234/27
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_fancy.obj b/homedecor_modpack/homedecor/models/homedecor_door_fancy.obj
new file mode 100644
index 0000000..2996ee8
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_fancy.obj
@@ -0,0 +1,112 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-fancy.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.374531 0.375031
+v -0.374875 1.374531 0.499969
+v 0.374875 1.374531 0.375031
+v -0.374875 1.374531 0.375031
+v 0.374875 1.374531 0.499969
+v -0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.374875 -0.374531 0.499969
+v -0.374875 -0.374531 0.499969
+v -0.374875 0.374969 0.499969
+v -0.374875 -0.374531 0.375031
+v 0.374875 -0.374531 0.375031
+v 0.374875 0.374969 0.375031
+v -0.374875 0.374969 0.375031
+v 0.374875 0.374969 0.499969
+v -0.375000 0.375000 0.438458
+v 0.375000 0.375000 0.438458
+v -0.375000 1.375000 0.438458
+v 0.375000 1.375000 0.438458
+v 0.375000 0.375000 0.436542
+v -0.375000 0.375000 0.436542
+v 0.375000 1.375000 0.436542
+v -0.375000 1.375000 0.436542
+vt 0.765625 0.312500
+vt 0.828125 0.312500
+vt 0.828125 0.687500
+vt 0.765625 0.687500
+vt 0.078125 0.062500
+vt 0.078125 0.000000
+vt 0.578125 0.000000
+vt 0.578125 0.062500
+vt 0.515625 0.937500
+vt 0.515625 0.062500
+vt 0.578125 0.937500
+vt 0.140625 0.437500
+vt 0.140625 0.062500
+vt 0.515625 0.437500
+vt 0.140625 0.937500
+vt 0.078125 0.937500
+vt 0.578125 1.000000
+vt 0.078125 1.000000
+vt 0.765625 0.250000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.640625 0.000000
+vt 0.640625 1.000000
+vt 0.015625 1.000000
+vt 0.015625 0.000000
+vt 0.734375 0.312500
+vt 0.734375 0.687500
+vt 0.671875 0.687500
+vt 0.671875 0.312500
+vt 0.640625 0.937500
+vt 0.578125 0.437500
+vt 0.640625 0.437500
+vt 0.015625 0.937500
+vt 0.015625 0.437500
+vt 0.078125 0.437500
+vt 0.125000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 0.125000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 14/1/1 16/2/1 13/3/1 15/4/1
+f 11/5/2 8/6/2 7/7/2 20/8/2
+f 15/9/2 24/10/2 20/8/2 12/11/2
+f 26/12/2 25/13/2 24/10/2 27/14/2
+f 11/5/2 25/13/2 14/15/2 19/16/2
+f 19/16/2 12/11/2 5/17/2 6/18/2
+f 9/8/3 4/7/3 3/6/3 18/5/3
+f 9/8/3 22/10/3 13/9/3 17/11/3
+f 17/11/3 10/16/3 1/18/3 2/17/3
+f 16/15/3 21/13/3 18/5/3 10/16/3
+f 23/14/3 22/10/3 21/13/3 28/12/3
+f 8/19/1 3/20/1 4/21/1 7/22/1
+f 6/23/4 5/24/4 2/25/4 1/26/4
+f 5/17/5 7/7/5 4/27/5 2/28/5
+f 8/6/6 6/18/6 1/29/6 3/30/6
+f 26/31/4 27/32/4 23/33/4 28/34/4
+f 16/35/5 14/11/5 26/36/5 28/37/5
+f 15/16/6 13/38/6 23/39/6 27/40/6
+g Cylinder_Cylinder_glass
+f 32/41/3 31/42/3 29/43/3 30/44/3
+f 36/42/2 35/41/2 33/44/2 34/43/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_fancy_right.obj b/homedecor_modpack/homedecor/models/homedecor_door_fancy_right.obj
new file mode 100644
index 0000000..a7bab10
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_fancy_right.obj
@@ -0,0 +1,112 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-fancy-right.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.374531 0.375031
+v -0.374875 1.374531 0.499969
+v 0.374875 1.374531 0.375031
+v -0.374875 1.374531 0.375031
+v 0.374875 1.374531 0.499969
+v -0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.374875 -0.374531 0.499969
+v -0.374875 -0.374531 0.499969
+v -0.374875 0.374969 0.499969
+v -0.374875 -0.374531 0.375031
+v 0.374875 -0.374531 0.375031
+v 0.374875 0.374969 0.375031
+v -0.374875 0.374969 0.375031
+v 0.374875 0.374969 0.499969
+v -0.375000 0.375000 0.438458
+v 0.375000 0.375000 0.438458
+v -0.375000 1.375000 0.438458
+v 0.375000 1.375000 0.438458
+v 0.375000 0.375000 0.436542
+v -0.375000 0.375000 0.436542
+v 0.375000 1.375000 0.436542
+v -0.375000 1.375000 0.436542
+vt 0.765625 0.312500
+vt 0.828125 0.312500
+vt 0.828125 0.687500
+vt 0.765625 0.687500
+vt 0.578125 0.062500
+vt 0.578125 0.000000
+vt 0.078125 0.000000
+vt 0.078125 0.062500
+vt 0.140625 0.937500
+vt 0.140625 0.062500
+vt 0.078125 0.937500
+vt 0.515625 0.437500
+vt 0.515625 0.062500
+vt 0.140625 0.437500
+vt 0.515625 0.937500
+vt 0.578125 0.937500
+vt 0.078125 1.000000
+vt 0.578125 1.000000
+vt 0.765625 0.250000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.015625 0.000000
+vt 0.015625 1.000000
+vt 0.640625 1.000000
+vt 0.640625 0.000000
+vt 0.734375 0.312500
+vt 0.734375 0.687500
+vt 0.671875 0.687500
+vt 0.671875 0.312500
+vt 0.015625 0.937500
+vt 0.078125 0.437500
+vt 0.015625 0.437500
+vt 0.640625 0.937500
+vt 0.640625 0.437500
+vt 0.578125 0.437500
+vt 0.875000 1.000000
+vt 0.125000 1.000000
+vt 0.125000 0.000000
+vt 0.875000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 14/1/1 16/2/1 13/3/1 15/4/1
+f 11/5/2 8/6/2 7/7/2 20/8/2
+f 15/9/2 24/10/2 20/8/2 12/11/2
+f 26/12/2 25/13/2 24/10/2 27/14/2
+f 11/5/2 25/13/2 14/15/2 19/16/2
+f 19/16/2 12/11/2 5/17/2 6/18/2
+f 9/8/3 4/7/3 3/6/3 18/5/3
+f 9/8/3 22/10/3 13/9/3 17/11/3
+f 17/11/3 10/16/3 1/18/3 2/17/3
+f 16/15/3 21/13/3 18/5/3 10/16/3
+f 23/14/3 22/10/3 21/13/3 28/12/3
+f 8/19/1 3/20/1 4/21/1 7/22/1
+f 6/23/4 5/24/4 2/25/4 1/26/4
+f 5/17/5 7/7/5 4/27/5 2/28/5
+f 8/6/6 6/18/6 1/29/6 3/30/6
+f 26/31/4 27/32/4 23/33/4 28/34/4
+f 16/35/5 14/11/5 26/36/5 28/37/5
+f 15/16/6 13/38/6 23/39/6 27/40/6
+g Cylinder_Cylinder_glass
+f 32/41/3 31/42/3 29/43/3 30/44/3
+f 36/42/2 35/41/2 33/44/2 34/43/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_japanese_closed.obj b/homedecor_modpack/homedecor/models/homedecor_door_japanese_closed.obj
new file mode 100644
index 0000000..813b4b6
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_japanese_closed.obj
@@ -0,0 +1,438 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-japanese.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 1.500000 0.062501
+v -0.500000 1.500000 0.062501
+v 0.500000 -0.500000 0.062501
+v -0.500000 -0.500000 0.062501
+v -0.500000 1.500000 0.000001
+v 0.500000 1.500000 0.000001
+v -0.500000 -0.500000 0.000001
+v 0.500000 -0.500000 0.000001
+v 0.500000 -0.437500 0.062501
+v -0.500000 -0.437500 0.062501
+v -0.500000 -0.437500 0.000001
+v 0.500000 -0.437500 0.000001
+v 0.500000 1.437500 0.062501
+v -0.500000 1.437500 0.062501
+v -0.500000 1.437500 0.000001
+v 0.500000 1.437500 0.000001
+v -0.437500 -0.437500 0.062501
+v -0.437500 -0.437500 0.000001
+v -0.437500 1.437500 0.062501
+v -0.437500 1.437500 0.000001
+v 0.437500 -0.437500 0.062501
+v 0.437500 -0.437500 0.000001
+v 0.437500 1.437500 0.062501
+v 0.437500 1.437500 0.000001
+v -0.437500 0.523438 0.046876
+v -0.437500 0.523438 0.015626
+v 0.437500 0.523438 0.046876
+v 0.437500 0.523438 0.015626
+v -0.437500 0.476562 0.046876
+v -0.437500 0.476562 0.015626
+v 0.437500 0.476562 0.046876
+v 0.437500 0.476562 0.015626
+v -0.437500 1.164062 0.046876
+v -0.437500 1.164062 0.015626
+v 0.437500 1.164062 0.046876
+v 0.437500 1.164062 0.015626
+v -0.437500 1.117188 0.046876
+v -0.437500 1.117188 0.015626
+v 0.437500 1.117188 0.046876
+v 0.437500 1.117188 0.015626
+v -0.437500 0.843750 0.046876
+v -0.437500 0.843750 0.015626
+v 0.437500 0.843750 0.046876
+v 0.437500 0.843750 0.015626
+v -0.437500 0.796875 0.046876
+v -0.437500 0.796875 0.015626
+v 0.437500 0.796875 0.046876
+v 0.437500 0.796875 0.015626
+v -0.437500 0.203125 0.046876
+v -0.437500 0.203125 0.015626
+v 0.437500 0.203125 0.046876
+v 0.437500 0.203125 0.015626
+v -0.437500 0.156250 0.046876
+v -0.437500 0.156250 0.015626
+v 0.437500 0.156250 0.046876
+v 0.437500 0.156250 0.015626
+v -0.437500 -0.117188 0.046876
+v -0.437500 -0.117188 0.015626
+v 0.437500 -0.117188 0.046876
+v 0.437500 -0.117188 0.015626
+v -0.437500 -0.164063 0.046876
+v -0.437500 -0.164063 0.015626
+v 0.437500 -0.164063 0.046876
+v 0.437500 -0.164063 0.015626
+v -0.175781 1.164062 0.046876
+v -0.175781 1.164062 0.015626
+v -0.175781 1.437500 0.046876
+v -0.175781 1.437500 0.015626
+v -0.128906 1.164062 0.046876
+v -0.128906 1.164062 0.015626
+v -0.128906 1.437500 0.046876
+v -0.128906 1.437500 0.015626
+v 0.128906 1.164062 0.046876
+v 0.128906 1.164062 0.015626
+v 0.128906 1.437500 0.046876
+v 0.128906 1.437500 0.015626
+v 0.175781 1.164062 0.046876
+v 0.175781 1.164062 0.015626
+v 0.175781 1.437500 0.046876
+v 0.175781 1.437500 0.015626
+v -0.175781 0.843750 0.046876
+v -0.175781 0.843750 0.015626
+v -0.175781 1.117188 0.046876
+v -0.175781 1.117188 0.015626
+v -0.128906 0.843750 0.046876
+v -0.128906 0.843750 0.015626
+v -0.128906 1.117188 0.046876
+v -0.128906 1.117188 0.015626
+v 0.128906 0.843750 0.046876
+v 0.128906 0.843750 0.015626
+v 0.128906 1.117188 0.046876
+v 0.128906 1.117188 0.015626
+v 0.175781 0.843750 0.046876
+v 0.175781 0.843750 0.015626
+v 0.175781 1.117188 0.046876
+v 0.175781 1.117188 0.015626
+v -0.175781 0.523438 0.046876
+v -0.175781 0.523438 0.015626
+v -0.175781 0.796875 0.046876
+v -0.175781 0.796875 0.015626
+v -0.128906 0.523438 0.046876
+v -0.128906 0.523438 0.015626
+v -0.128906 0.796875 0.046876
+v -0.128906 0.796875 0.015626
+v 0.128906 0.523438 0.046876
+v 0.128906 0.523438 0.015626
+v 0.128906 0.796875 0.046876
+v 0.128906 0.796875 0.015626
+v 0.175781 0.523438 0.046876
+v 0.175781 0.523438 0.015626
+v 0.175781 0.796875 0.046876
+v 0.175781 0.796875 0.015626
+v -0.175781 0.203125 0.046876
+v -0.175781 0.203125 0.015626
+v -0.175781 0.476562 0.046876
+v -0.175781 0.476562 0.015626
+v -0.128906 0.203125 0.046876
+v -0.128906 0.203125 0.015626
+v -0.128906 0.476562 0.046876
+v -0.128906 0.476562 0.015626
+v 0.128906 0.203125 0.046876
+v 0.128906 0.203125 0.015626
+v 0.128906 0.476562 0.046876
+v 0.128906 0.476562 0.015626
+v 0.175781 0.203125 0.046876
+v 0.175781 0.203125 0.015626
+v 0.175781 0.476562 0.046876
+v 0.175781 0.476562 0.015626
+v -0.175781 -0.117188 0.046876
+v -0.175781 -0.117188 0.015626
+v -0.175781 0.156250 0.046876
+v -0.175781 0.156250 0.015626
+v -0.128906 -0.117188 0.046876
+v -0.128906 -0.117188 0.015626
+v -0.128906 0.156250 0.046876
+v -0.128906 0.156250 0.015626
+v 0.128906 -0.117188 0.046876
+v 0.128906 -0.117188 0.015626
+v 0.128906 0.156250 0.046876
+v 0.128906 0.156250 0.015626
+v 0.175781 -0.117188 0.046876
+v 0.175781 -0.117188 0.015626
+v 0.175781 0.156250 0.046876
+v 0.175781 0.156250 0.015626
+v -0.175781 -0.437500 0.046876
+v -0.175781 -0.437500 0.015626
+v -0.175781 -0.164063 0.046876
+v -0.175781 -0.164063 0.015626
+v -0.128906 -0.437500 0.046876
+v -0.128906 -0.437500 0.015626
+v -0.128906 -0.164063 0.046876
+v -0.128906 -0.164063 0.015626
+v 0.128906 -0.437500 0.046876
+v 0.128906 -0.437500 0.015626
+v 0.128906 -0.164063 0.046876
+v 0.128906 -0.164063 0.015626
+v 0.175781 -0.437500 0.046876
+v 0.175781 -0.437500 0.015626
+v 0.175781 -0.164063 0.046876
+v 0.175781 -0.164063 0.015626
+v -0.437500 -0.437500 0.030775
+v 0.437500 -0.437500 0.030775
+v -0.437500 1.437500 0.030775
+v 0.437500 1.437500 0.030775
+v -0.437500 -0.437500 0.031753
+v 0.437500 -0.437500 0.031753
+v -0.437500 1.437500 0.031753
+v 0.437500 1.437500 0.031753
+v -0.500000 0.500000 0.062501
+v 0.500000 0.500000 0.062501
+v 0.500000 0.500000 0.000001
+v -0.500000 0.500000 0.000001
+v -0.500000 0.500000 0.062501
+v -0.437500 0.500000 0.062501
+v -0.500000 0.500000 0.000001
+v -0.437500 0.500000 0.000001
+v 0.500000 0.500000 0.062501
+v 0.437500 0.500000 0.062501
+v 0.500000 0.500000 0.000001
+v 0.437500 0.500000 0.000001
+v 0.437500 0.500000 0.046876
+v -0.437500 0.500000 0.046876
+v 0.437500 0.500000 0.015626
+v -0.437500 0.500000 0.015626
+v -0.437500 0.500000 0.030775
+v 0.437500 0.500000 0.030775
+v -0.437500 0.500000 0.031753
+v 0.437500 0.500000 0.031753
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.062500
+vt 0.000000 0.062500
+vt 0.062500 -0.000000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 1.000000 0.937500
+vt 0.000000 0.937500
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.023437
+vt 0.062500 0.023437
+vt 0.062500 0.953125
+vt 0.937500 0.953125
+vt 0.937500 0.984375
+vt 0.062500 0.984375
+vt 0.937500 0.046875
+vt 0.062500 0.046875
+vt 0.062500 0.015625
+vt 0.937500 0.015625
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 0.617187
+vt 0.937500 0.664062
+vt 0.062500 0.664062
+vt 0.062500 0.617187
+vt 0.937500 0.296875
+vt 0.937500 0.343750
+vt 0.062500 0.343750
+vt 0.062500 0.296875
+vt 0.937500 0.656250
+vt 0.937500 0.703125
+vt 0.062500 0.703125
+vt 0.062500 0.656250
+vt 0.937500 0.335938
+vt 0.937500 0.382812
+vt 0.062500 0.382812
+vt 0.062500 0.335938
+vt 0.371094 0.937500
+vt 0.324219 0.937500
+vt 0.324219 0.664062
+vt 0.371094 0.664062
+vt 0.628906 0.937500
+vt 0.628906 0.664062
+vt 0.675781 0.664062
+vt 0.675781 0.937500
+vt 0.984375 0.664062
+vt 0.984375 0.937499
+vt 0.953125 0.937499
+vt 0.953125 0.664062
+vt 0.015625 0.937500
+vt 0.015625 0.664062
+vt 0.046875 0.664062
+vt 0.046875 0.937500
+vt 0.371094 0.617187
+vt 0.324219 0.617187
+vt 0.324219 0.343750
+vt 0.371094 0.343750
+vt 0.628906 0.617187
+vt 0.628906 0.343750
+vt 0.675781 0.343750
+vt 0.675781 0.617187
+vt 0.984375 0.343750
+vt 0.984375 0.617187
+vt 0.953125 0.617187
+vt 0.953125 0.343750
+vt 0.015625 0.617187
+vt 0.015625 0.343750
+vt 0.046875 0.343750
+vt 0.046875 0.617187
+vt 0.371094 0.296875
+vt 0.324219 0.296875
+vt 0.324219 0.023437
+vt 0.371094 0.023437
+vt 0.628906 0.296875
+vt 0.628906 0.023437
+vt 0.675781 0.023437
+vt 0.675781 0.296875
+vt 0.984375 0.023437
+vt 0.984375 0.296875
+vt 0.953125 0.296875
+vt 0.953125 0.023437
+vt 0.015625 0.296875
+vt 0.015625 0.023437
+vt 0.046875 0.023437
+vt 0.046875 0.296875
+vt 0.371094 0.976563
+vt 0.324219 0.976563
+vt 0.324219 0.703125
+vt 0.371094 0.703125
+vt 0.628906 0.976562
+vt 0.628906 0.703125
+vt 0.675781 0.703125
+vt 0.675781 0.976562
+vt 0.984375 0.703125
+vt 0.984375 0.976562
+vt 0.953125 0.976562
+vt 0.953125 0.703125
+vt 0.015625 0.976562
+vt 0.015625 0.703125
+vt 0.046875 0.703125
+vt 0.046875 0.976562
+vt 0.371094 0.656250
+vt 0.324219 0.656250
+vt 0.324219 0.382812
+vt 0.371094 0.382812
+vt 0.628906 0.656250
+vt 0.628906 0.382812
+vt 0.675781 0.382812
+vt 0.675781 0.656250
+vt 0.984375 0.382812
+vt 0.984375 0.656250
+vt 0.953125 0.656250
+vt 0.953125 0.382812
+vt 0.015625 0.656250
+vt 0.015625 0.382812
+vt 0.046875 0.382812
+vt 0.046875 0.656250
+vt 0.371094 0.335938
+vt 0.324219 0.335938
+vt 0.324219 0.062500
+vt 0.371094 0.062500
+vt 0.628906 0.335938
+vt 0.628906 0.062500
+vt 0.675781 0.062500
+vt 0.675781 0.335938
+vt 0.984375 0.062500
+vt 0.984375 0.335937
+vt 0.953125 0.335937
+vt 0.953125 0.062500
+vt 0.015625 0.335937
+vt 0.015625 0.062500
+vt 0.046875 0.062500
+vt 0.046875 0.335937
+vt 0.062500 0.976562
+vt 0.937500 0.976562
+vn 0.000000 0.000000 1.000000
+vn -0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 4/1/1 3/2/1 9/3/1 10/4/1
+f 8/1/2 7/2/2 11/3/2 12/4/2
+f 170/1/3 171/5/3 6/6/3 1/7/3
+f 169/8/4 172/9/4 7/10/4 4/2/4
+f 1/11/5 6/8/5 5/7/5 2/12/5
+f 4/4/6 7/1/6 8/2/6 3/3/6
+f 5/8/2 6/7/2 16/12/2 15/11/2
+f 1/8/1 2/7/1 14/12/1 13/11/1
+f 174/5/1 19/13/1 14/12/1 173/1/1
+f 176/10/2 175/2/2 15/11/2 20/14/2
+f 178/10/1 177/2/1 13/11/1 23/14/1
+f 180/5/2 24/13/2 16/12/2 179/1/2
+f 181/10/1 27/15/1 25/16/1 182/5/1
+f 183/5/2 184/10/2 26/15/2 28/16/2
+f 25/17/5 27/18/5 28/19/5 26/20/5
+f 31/21/6 29/22/6 30/23/6 32/24/6
+f 174/7/3 17/4/3 18/25/3 176/6/3
+f 24/10/6 23/26/6 19/25/6 20/5/6
+f 178/8/4 180/9/4 22/26/4 21/3/4
+f 18/6/5 17/13/5 21/14/5 22/9/5
+f 39/27/1 35/28/1 33/29/1 37/30/1
+f 40/30/2 38/27/2 34/28/2 36/29/2
+f 33/17/5 35/18/5 36/19/5 34/20/5
+f 39/21/6 37/22/6 38/23/6 40/24/6
+f 47/31/1 43/32/1 41/33/1 45/34/1
+f 48/34/2 46/31/2 42/32/2 44/33/2
+f 41/17/5 43/18/5 44/19/5 42/20/5
+f 47/21/6 45/22/6 46/23/6 48/24/6
+f 55/35/1 51/36/1 49/37/1 53/38/1
+f 56/38/2 54/35/2 50/36/2 52/37/2
+f 49/17/5 51/18/5 52/19/5 50/20/5
+f 55/21/6 53/22/6 54/23/6 56/24/6
+f 63/39/1 59/40/1 57/41/1 61/42/1
+f 64/42/2 62/39/2 58/40/2 60/41/2
+f 57/17/5 59/18/5 60/19/5 58/20/5
+f 63/21/6 61/22/6 62/23/6 64/24/6
+f 71/43/1 67/44/1 65/45/1 69/46/1
+f 72/47/2 70/48/2 66/49/2 68/50/2
+f 65/51/4 67/52/4 68/53/4 66/54/4
+f 71/55/3 69/56/3 70/57/3 72/58/3
+f 79/50/1 75/47/1 73/48/1 77/49/1
+f 80/44/2 78/45/2 74/46/2 76/43/2
+f 73/51/4 75/52/4 76/53/4 74/54/4
+f 79/55/3 77/56/3 78/57/3 80/58/3
+f 87/59/1 83/60/1 81/61/1 85/62/1
+f 88/63/2 86/64/2 82/65/2 84/66/2
+f 81/67/4 83/68/4 84/69/4 82/70/4
+f 87/71/3 85/72/3 86/73/3 88/74/3
+f 95/66/1 91/63/1 89/64/1 93/65/1
+f 96/60/2 94/61/2 90/62/2 92/59/2
+f 89/67/4 91/68/4 92/69/4 90/70/4
+f 95/71/3 93/72/3 94/73/3 96/74/3
+f 103/75/1 99/76/1 97/77/1 101/78/1
+f 104/79/2 102/80/2 98/81/2 100/82/2
+f 97/83/4 99/84/4 100/85/4 98/86/4
+f 103/87/3 101/88/3 102/89/3 104/90/3
+f 111/82/1 107/79/1 105/80/1 109/81/1
+f 112/76/2 110/77/2 106/78/2 108/75/2
+f 105/83/4 107/84/4 108/85/4 106/86/4
+f 111/87/3 109/88/3 110/89/3 112/90/3
+f 119/91/1 115/92/1 113/93/1 117/94/1
+f 120/95/2 118/96/2 114/97/2 116/98/2
+f 113/99/4 115/100/4 116/101/4 114/102/4
+f 119/103/3 117/104/3 118/105/3 120/106/3
+f 127/98/1 123/95/1 121/96/1 125/97/1
+f 128/92/2 126/93/2 122/94/2 124/91/2
+f 121/99/4 123/100/4 124/101/4 122/102/4
+f 127/103/3 125/104/3 126/105/3 128/106/3
+f 135/107/1 131/108/1 129/109/1 133/110/1
+f 136/111/2 134/112/2 130/113/2 132/114/2
+f 129/115/4 131/116/4 132/117/4 130/118/4
+f 135/119/3 133/120/3 134/121/3 136/122/3
+f 143/114/1 139/111/1 137/112/1 141/113/1
+f 144/108/2 142/109/2 138/110/2 140/107/2
+f 137/115/4 139/116/4 140/117/4 138/118/4
+f 143/119/3 141/120/3 142/121/3 144/122/3
+f 151/123/1 147/124/1 145/125/1 149/126/1
+f 152/127/2 150/128/2 146/129/2 148/130/2
+f 145/131/4 147/132/4 148/133/4 146/134/4
+f 151/135/3 149/136/3 150/137/3 152/138/3
+f 159/130/1 155/127/1 153/128/1 157/129/1
+f 160/124/2 158/125/2 154/126/2 156/123/2
+f 153/131/4 155/132/4 156/133/4 154/134/4
+f 159/135/3 157/136/3 158/137/3 160/138/3
+f 23/11/4 24/14/4 180/10/4 178/2/4
+f 19/12/3 174/1/3 176/5/3 20/13/3
+f 32/139/2 30/140/2 184/9/2 183/6/2
+f 31/140/1 181/9/1 182/6/1 29/139/1
+f 22/25/2 180/6/2 179/7/2 12/4/2
+f 21/26/1 9/3/1 177/8/1 178/9/1
+f 18/26/2 11/3/2 175/8/2 176/9/2
+f 17/25/1 174/6/1 173/7/1 10/4/1
+f 2/8/4 5/9/4 172/10/4 169/2/4
+f 3/1/3 8/5/3 171/6/3 170/7/3
+g Cylinder_Cylinder_paper
+f 185/5/2 163/13/2 164/14/2 186/10/2
+f 187/5/1 188/10/1 168/14/1 167/13/1
+f 165/25/1 166/26/1 188/9/1 187/6/1
+f 161/25/2 185/6/2 186/9/2 162/26/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_japanese_open.obj b/homedecor_modpack/homedecor/models/homedecor_door_japanese_open.obj
new file mode 100644
index 0000000..97942d0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_japanese_open.obj
@@ -0,0 +1,438 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-japanese-open.blend'
+# www.blender.org
+o Cylinder
+v 1.500000 1.500000 0.000001
+v 0.500000 1.500000 0.000001
+v 1.500000 -0.500000 0.000001
+v 0.500000 -0.500000 0.000001
+v 0.500000 1.500000 -0.062499
+v 1.500000 1.500000 -0.062499
+v 0.500000 -0.500000 -0.062499
+v 1.500000 -0.500000 -0.062499
+v 1.500000 -0.437500 0.000001
+v 0.500000 -0.437500 0.000001
+v 0.500000 -0.437500 -0.062499
+v 1.500000 -0.437500 -0.062499
+v 1.500000 1.437500 0.000001
+v 0.500000 1.437500 0.000001
+v 0.500000 1.437500 -0.062499
+v 1.500000 1.437500 -0.062499
+v 0.562500 -0.437500 0.000001
+v 0.562500 -0.437500 -0.062499
+v 0.562500 1.437500 0.000001
+v 0.562500 1.437500 -0.062499
+v 1.437500 -0.437500 0.000001
+v 1.437500 -0.437500 -0.062499
+v 1.437500 1.437500 0.000001
+v 1.437500 1.437500 -0.062499
+v 0.562500 0.523438 -0.015624
+v 0.562500 0.523438 -0.046874
+v 1.437500 0.523438 -0.015624
+v 1.437500 0.523438 -0.046874
+v 0.562500 0.476562 -0.015624
+v 0.562500 0.476562 -0.046874
+v 1.437500 0.476562 -0.015624
+v 1.437500 0.476562 -0.046874
+v 0.562500 1.164062 -0.015624
+v 0.562500 1.164062 -0.046874
+v 1.437500 1.164062 -0.015624
+v 1.437500 1.164062 -0.046874
+v 0.562500 1.117188 -0.015624
+v 0.562500 1.117188 -0.046874
+v 1.437500 1.117188 -0.015624
+v 1.437500 1.117188 -0.046874
+v 0.562500 0.843750 -0.015624
+v 0.562500 0.843750 -0.046874
+v 1.437500 0.843750 -0.015624
+v 1.437500 0.843750 -0.046874
+v 0.562500 0.796875 -0.015624
+v 0.562500 0.796875 -0.046874
+v 1.437500 0.796875 -0.015624
+v 1.437500 0.796875 -0.046874
+v 0.562500 0.203125 -0.015624
+v 0.562500 0.203125 -0.046874
+v 1.437500 0.203125 -0.015624
+v 1.437500 0.203125 -0.046874
+v 0.562500 0.156250 -0.015624
+v 0.562500 0.156250 -0.046874
+v 1.437500 0.156250 -0.015624
+v 1.437500 0.156250 -0.046874
+v 0.562500 -0.117188 -0.015624
+v 0.562500 -0.117188 -0.046874
+v 1.437500 -0.117188 -0.015624
+v 1.437500 -0.117188 -0.046874
+v 0.562500 -0.164063 -0.015624
+v 0.562500 -0.164063 -0.046874
+v 1.437500 -0.164063 -0.015624
+v 1.437500 -0.164063 -0.046874
+v 0.824219 1.164062 -0.015624
+v 0.824219 1.164062 -0.046874
+v 0.824219 1.437500 -0.015624
+v 0.824219 1.437500 -0.046874
+v 0.871094 1.164062 -0.015624
+v 0.871094 1.164062 -0.046874
+v 0.871094 1.437500 -0.015624
+v 0.871094 1.437500 -0.046874
+v 1.128906 1.164062 -0.015624
+v 1.128906 1.164062 -0.046874
+v 1.128906 1.437500 -0.015624
+v 1.128906 1.437500 -0.046874
+v 1.175781 1.164062 -0.015624
+v 1.175781 1.164062 -0.046874
+v 1.175781 1.437500 -0.015624
+v 1.175781 1.437500 -0.046874
+v 0.824219 0.843750 -0.015624
+v 0.824219 0.843750 -0.046874
+v 0.824219 1.117188 -0.015624
+v 0.824219 1.117188 -0.046874
+v 0.871094 0.843750 -0.015624
+v 0.871094 0.843750 -0.046874
+v 0.871094 1.117188 -0.015624
+v 0.871094 1.117188 -0.046874
+v 1.128906 0.843750 -0.015624
+v 1.128906 0.843750 -0.046874
+v 1.128906 1.117188 -0.015624
+v 1.128906 1.117188 -0.046874
+v 1.175781 0.843750 -0.015624
+v 1.175781 0.843750 -0.046874
+v 1.175781 1.117188 -0.015624
+v 1.175781 1.117188 -0.046874
+v 0.824219 0.523438 -0.015624
+v 0.824219 0.523438 -0.046874
+v 0.824219 0.796875 -0.015624
+v 0.824219 0.796875 -0.046874
+v 0.871094 0.523438 -0.015624
+v 0.871094 0.523438 -0.046874
+v 0.871094 0.796875 -0.015624
+v 0.871094 0.796875 -0.046874
+v 1.128906 0.523438 -0.015624
+v 1.128906 0.523438 -0.046874
+v 1.128906 0.796875 -0.015624
+v 1.128906 0.796875 -0.046874
+v 1.175781 0.523438 -0.015624
+v 1.175781 0.523438 -0.046874
+v 1.175781 0.796875 -0.015624
+v 1.175781 0.796875 -0.046874
+v 0.824219 0.203125 -0.015624
+v 0.824219 0.203125 -0.046874
+v 0.824219 0.476562 -0.015624
+v 0.824219 0.476562 -0.046874
+v 0.871094 0.203125 -0.015624
+v 0.871094 0.203125 -0.046874
+v 0.871094 0.476562 -0.015624
+v 0.871094 0.476562 -0.046874
+v 1.128906 0.203125 -0.015624
+v 1.128906 0.203125 -0.046874
+v 1.128906 0.476562 -0.015624
+v 1.128906 0.476562 -0.046874
+v 1.175781 0.203125 -0.015624
+v 1.175781 0.203125 -0.046874
+v 1.175781 0.476562 -0.015624
+v 1.175781 0.476562 -0.046874
+v 0.824219 -0.117188 -0.015624
+v 0.824219 -0.117188 -0.046874
+v 0.824219 0.156250 -0.015624
+v 0.824219 0.156250 -0.046874
+v 0.871094 -0.117188 -0.015624
+v 0.871094 -0.117188 -0.046874
+v 0.871094 0.156250 -0.015624
+v 0.871094 0.156250 -0.046874
+v 1.128906 -0.117188 -0.015624
+v 1.128906 -0.117188 -0.046874
+v 1.128906 0.156250 -0.015624
+v 1.128906 0.156250 -0.046874
+v 1.175781 -0.117188 -0.015624
+v 1.175781 -0.117188 -0.046874
+v 1.175781 0.156250 -0.015624
+v 1.175781 0.156250 -0.046874
+v 0.824219 -0.437500 -0.015624
+v 0.824219 -0.437500 -0.046874
+v 0.824219 -0.164063 -0.015624
+v 0.824219 -0.164063 -0.046874
+v 0.871094 -0.437500 -0.015624
+v 0.871094 -0.437500 -0.046874
+v 0.871094 -0.164063 -0.015624
+v 0.871094 -0.164063 -0.046874
+v 1.128906 -0.437500 -0.015624
+v 1.128906 -0.437500 -0.046874
+v 1.128906 -0.164063 -0.015624
+v 1.128906 -0.164063 -0.046874
+v 1.175781 -0.437500 -0.015624
+v 1.175781 -0.437500 -0.046874
+v 1.175781 -0.164063 -0.015624
+v 1.175781 -0.164063 -0.046874
+v 0.562500 -0.437500 -0.031725
+v 1.437500 -0.437500 -0.031725
+v 0.562500 1.437500 -0.031725
+v 1.437500 1.437500 -0.031725
+v 0.562500 -0.437500 -0.030747
+v 1.437500 -0.437500 -0.030747
+v 0.562500 1.437500 -0.030747
+v 1.437500 1.437500 -0.030747
+v 0.500000 0.500000 0.000001
+v 1.500000 0.500000 0.000001
+v 1.500000 0.500000 -0.062499
+v 0.500000 0.500000 -0.062499
+v 0.500000 0.500000 0.000001
+v 0.562500 0.500000 0.000001
+v 0.500000 0.500000 -0.062499
+v 0.562500 0.500000 -0.062499
+v 1.500000 0.500000 0.000001
+v 1.437500 0.500000 0.000001
+v 1.500000 0.500000 -0.062499
+v 1.437500 0.500000 -0.062499
+v 1.437500 0.500000 -0.015624
+v 0.562500 0.500000 -0.015624
+v 1.437500 0.500000 -0.046874
+v 0.562500 0.500000 -0.046874
+v 0.562500 0.500000 -0.031725
+v 1.437500 0.500000 -0.031725
+v 0.562500 0.500000 -0.030747
+v 1.437500 0.500000 -0.030747
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.062500
+vt 0.000000 0.062500
+vt 0.062500 -0.000000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 1.000000 0.937500
+vt 0.000000 0.937500
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.023437
+vt 0.062500 0.023437
+vt 0.062500 0.953125
+vt 0.937500 0.953125
+vt 0.937500 0.984375
+vt 0.062500 0.984375
+vt 0.937500 0.046875
+vt 0.062500 0.046875
+vt 0.062500 0.015625
+vt 0.937500 0.015625
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 0.617187
+vt 0.937500 0.664062
+vt 0.062500 0.664062
+vt 0.062500 0.617187
+vt 0.937500 0.296875
+vt 0.937500 0.343750
+vt 0.062500 0.343750
+vt 0.062500 0.296875
+vt 0.937500 0.656250
+vt 0.937500 0.703125
+vt 0.062500 0.703125
+vt 0.062500 0.656250
+vt 0.937500 0.335938
+vt 0.937500 0.382812
+vt 0.062500 0.382812
+vt 0.062500 0.335938
+vt 0.371094 0.937500
+vt 0.324219 0.937500
+vt 0.324219 0.664062
+vt 0.371094 0.664062
+vt 0.628906 0.937500
+vt 0.628906 0.664062
+vt 0.675781 0.664062
+vt 0.675781 0.937500
+vt 0.984375 0.664062
+vt 0.984375 0.937499
+vt 0.953125 0.937499
+vt 0.953125 0.664062
+vt 0.015625 0.937500
+vt 0.015625 0.664062
+vt 0.046875 0.664062
+vt 0.046875 0.937500
+vt 0.371094 0.617187
+vt 0.324219 0.617187
+vt 0.324219 0.343750
+vt 0.371094 0.343750
+vt 0.628906 0.617187
+vt 0.628906 0.343750
+vt 0.675781 0.343750
+vt 0.675781 0.617187
+vt 0.984375 0.343750
+vt 0.984375 0.617187
+vt 0.953125 0.617187
+vt 0.953125 0.343750
+vt 0.015625 0.617187
+vt 0.015625 0.343750
+vt 0.046875 0.343750
+vt 0.046875 0.617187
+vt 0.371094 0.296875
+vt 0.324219 0.296875
+vt 0.324219 0.023437
+vt 0.371094 0.023437
+vt 0.628906 0.296875
+vt 0.628906 0.023437
+vt 0.675781 0.023437
+vt 0.675781 0.296875
+vt 0.984375 0.023437
+vt 0.984375 0.296875
+vt 0.953125 0.296875
+vt 0.953125 0.023437
+vt 0.015625 0.296875
+vt 0.015625 0.023437
+vt 0.046875 0.023437
+vt 0.046875 0.296875
+vt 0.371094 0.976563
+vt 0.324219 0.976563
+vt 0.324219 0.703125
+vt 0.371094 0.703125
+vt 0.628906 0.976562
+vt 0.628906 0.703125
+vt 0.675781 0.703125
+vt 0.675781 0.976562
+vt 0.984375 0.703125
+vt 0.984375 0.976562
+vt 0.953125 0.976562
+vt 0.953125 0.703125
+vt 0.015625 0.976562
+vt 0.015625 0.703125
+vt 0.046875 0.703125
+vt 0.046875 0.976562
+vt 0.371094 0.656250
+vt 0.324219 0.656250
+vt 0.324219 0.382812
+vt 0.371094 0.382812
+vt 0.628906 0.656250
+vt 0.628906 0.382812
+vt 0.675781 0.382812
+vt 0.675781 0.656250
+vt 0.984375 0.382812
+vt 0.984375 0.656250
+vt 0.953125 0.656250
+vt 0.953125 0.382812
+vt 0.015625 0.656250
+vt 0.015625 0.382812
+vt 0.046875 0.382812
+vt 0.046875 0.656250
+vt 0.371094 0.335938
+vt 0.324219 0.335938
+vt 0.324219 0.062500
+vt 0.371094 0.062500
+vt 0.628906 0.335938
+vt 0.628906 0.062500
+vt 0.675781 0.062500
+vt 0.675781 0.335938
+vt 0.984375 0.062500
+vt 0.984375 0.335937
+vt 0.953125 0.335937
+vt 0.953125 0.062500
+vt 0.015625 0.335937
+vt 0.015625 0.062500
+vt 0.046875 0.062500
+vt 0.046875 0.335937
+vt 0.062500 0.976562
+vt 0.937500 0.976562
+vn 0.000000 0.000000 1.000000
+vn -0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 4/1/1 3/2/1 9/3/1 10/4/1
+f 8/1/2 7/2/2 11/3/2 12/4/2
+f 170/1/3 171/5/3 6/6/3 1/7/3
+f 169/8/4 172/9/4 7/10/4 4/2/4
+f 1/11/5 6/8/5 5/7/5 2/12/5
+f 4/4/6 7/1/6 8/2/6 3/3/6
+f 5/8/2 6/7/2 16/12/2 15/11/2
+f 1/8/1 2/7/1 14/12/1 13/11/1
+f 174/5/1 19/13/1 14/12/1 173/1/1
+f 176/10/2 175/2/2 15/11/2 20/14/2
+f 178/10/1 177/2/1 13/11/1 23/14/1
+f 180/5/2 24/13/2 16/12/2 179/1/2
+f 181/10/1 27/15/1 25/16/1 182/5/1
+f 183/5/2 184/10/2 26/15/2 28/16/2
+f 25/17/5 27/18/5 28/19/5 26/20/5
+f 31/21/6 29/22/6 30/23/6 32/24/6
+f 174/7/3 17/4/3 18/25/3 176/6/3
+f 24/10/6 23/26/6 19/25/6 20/5/6
+f 178/8/4 180/9/4 22/26/4 21/3/4
+f 18/6/5 17/13/5 21/14/5 22/9/5
+f 39/27/1 35/28/1 33/29/1 37/30/1
+f 40/30/2 38/27/2 34/28/2 36/29/2
+f 33/17/5 35/18/5 36/19/5 34/20/5
+f 39/21/6 37/22/6 38/23/6 40/24/6
+f 47/31/1 43/32/1 41/33/1 45/34/1
+f 48/34/2 46/31/2 42/32/2 44/33/2
+f 41/17/5 43/18/5 44/19/5 42/20/5
+f 47/21/6 45/22/6 46/23/6 48/24/6
+f 55/35/1 51/36/1 49/37/1 53/38/1
+f 56/38/2 54/35/2 50/36/2 52/37/2
+f 49/17/5 51/18/5 52/19/5 50/20/5
+f 55/21/6 53/22/6 54/23/6 56/24/6
+f 63/39/1 59/40/1 57/41/1 61/42/1
+f 64/42/2 62/39/2 58/40/2 60/41/2
+f 57/17/5 59/18/5 60/19/5 58/20/5
+f 63/21/6 61/22/6 62/23/6 64/24/6
+f 71/43/1 67/44/1 65/45/1 69/46/1
+f 72/47/2 70/48/2 66/49/2 68/50/2
+f 65/51/4 67/52/4 68/53/4 66/54/4
+f 71/55/3 69/56/3 70/57/3 72/58/3
+f 79/50/1 75/47/1 73/48/1 77/49/1
+f 80/44/2 78/45/2 74/46/2 76/43/2
+f 73/51/4 75/52/4 76/53/4 74/54/4
+f 79/55/3 77/56/3 78/57/3 80/58/3
+f 87/59/1 83/60/1 81/61/1 85/62/1
+f 88/63/2 86/64/2 82/65/2 84/66/2
+f 81/67/4 83/68/4 84/69/4 82/70/4
+f 87/71/3 85/72/3 86/73/3 88/74/3
+f 95/66/1 91/63/1 89/64/1 93/65/1
+f 96/60/2 94/61/2 90/62/2 92/59/2
+f 89/67/4 91/68/4 92/69/4 90/70/4
+f 95/71/3 93/72/3 94/73/3 96/74/3
+f 103/75/1 99/76/1 97/77/1 101/78/1
+f 104/79/2 102/80/2 98/81/2 100/82/2
+f 97/83/4 99/84/4 100/85/4 98/86/4
+f 103/87/3 101/88/3 102/89/3 104/90/3
+f 111/82/1 107/79/1 105/80/1 109/81/1
+f 112/76/2 110/77/2 106/78/2 108/75/2
+f 105/83/4 107/84/4 108/85/4 106/86/4
+f 111/87/3 109/88/3 110/89/3 112/90/3
+f 119/91/1 115/92/1 113/93/1 117/94/1
+f 120/95/2 118/96/2 114/97/2 116/98/2
+f 113/99/4 115/100/4 116/101/4 114/102/4
+f 119/103/3 117/104/3 118/105/3 120/106/3
+f 127/98/1 123/95/1 121/96/1 125/97/1
+f 128/92/2 126/93/2 122/94/2 124/91/2
+f 121/99/4 123/100/4 124/101/4 122/102/4
+f 127/103/3 125/104/3 126/105/3 128/106/3
+f 135/107/1 131/108/1 129/109/1 133/110/1
+f 136/111/2 134/112/2 130/113/2 132/114/2
+f 129/115/4 131/116/4 132/117/4 130/118/4
+f 135/119/3 133/120/3 134/121/3 136/122/3
+f 143/114/1 139/111/1 137/112/1 141/113/1
+f 144/108/2 142/109/2 138/110/2 140/107/2
+f 137/115/4 139/116/4 140/117/4 138/118/4
+f 143/119/3 141/120/3 142/121/3 144/122/3
+f 151/123/1 147/124/1 145/125/1 149/126/1
+f 152/127/2 150/128/2 146/129/2 148/130/2
+f 145/131/4 147/132/4 148/133/4 146/134/4
+f 151/135/3 149/136/3 150/137/3 152/138/3
+f 159/130/1 155/127/1 153/128/1 157/129/1
+f 160/124/2 158/125/2 154/126/2 156/123/2
+f 153/131/4 155/132/4 156/133/4 154/134/4
+f 159/135/3 157/136/3 158/137/3 160/138/3
+f 23/11/4 24/14/4 180/10/4 178/2/4
+f 19/12/3 174/1/3 176/5/3 20/13/3
+f 32/139/2 30/140/2 184/9/2 183/6/2
+f 31/140/1 181/9/1 182/6/1 29/139/1
+f 22/25/2 180/6/2 179/7/2 12/4/2
+f 21/26/1 9/3/1 177/8/1 178/9/1
+f 18/26/2 11/3/2 175/8/2 176/9/2
+f 17/25/1 174/6/1 173/7/1 10/4/1
+f 2/8/4 5/9/4 172/10/4 169/2/4
+f 3/1/3 8/5/3 171/6/3 170/7/3
+g Cylinder_Cylinder_paper
+f 185/5/2 163/13/2 164/14/2 186/10/2
+f 187/5/1 188/10/1 168/14/1 167/13/1
+f 165/25/1 166/26/1 188/9/1 187/6/1
+f 161/25/2 185/6/2 186/9/2 162/26/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_plain.obj b/homedecor_modpack/homedecor/models/homedecor_door_plain.obj
new file mode 100644
index 0000000..035c0c0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_plain.obj
@@ -0,0 +1,35 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-plain.blend'
+# www.blender.org
+o Cylinder
+v 0.497500 1.495000 0.496875
+v -0.497500 1.495000 0.496875
+v 0.497500 -0.495000 0.496875
+v -0.497500 -0.495000 0.496875
+v -0.497500 1.495000 0.378125
+v 0.497500 1.495000 0.378125
+v -0.497500 -0.495000 0.378125
+v 0.497500 -0.495000 0.378125
+vt 0.578125 0.000000
+vt 0.078125 0.000000
+vt 0.078125 1.000000
+vt 0.578125 1.000000
+vt 0.015625 -0.000000
+vt 0.015625 1.000000
+vt 0.640625 1.000000
+vt 0.640625 0.000000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.671875 0.750000
+vt 0.765625 0.750000
+vt 0.828125 0.750000
+vt 0.828125 0.250000
+vt 0.765625 0.250000
+g Cylinder_Cylinder_None
+s off
+f 4/1 3/2 1/3 2/4
+f 8/2 7/1 5/4 6/3
+f 3/5 8/2 6/3 1/6
+f 2/4 5/7 7/8 4/1
+f 1/9 6/10 5/11 2/12
+f 4/13 7/14 8/15 3/16
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_plain_right.obj b/homedecor_modpack/homedecor/models/homedecor_door_plain_right.obj
new file mode 100644
index 0000000..f735e3e
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_plain_right.obj
@@ -0,0 +1,35 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-plain-right.blend'
+# www.blender.org
+o Cylinder
+v 0.497500 1.495000 0.496875
+v -0.497500 1.495000 0.496875
+v 0.497500 -0.495000 0.496875
+v -0.497500 -0.495000 0.496875
+v -0.497500 1.495000 0.378125
+v 0.497500 1.495000 0.378125
+v -0.497500 -0.495000 0.378125
+v 0.497500 -0.495000 0.378125
+vt 0.078125 0.000000
+vt 0.578125 0.000000
+vt 0.578125 1.000000
+vt 0.078125 1.000000
+vt 0.640625 0.000000
+vt 0.640625 1.000000
+vt 0.015625 1.000000
+vt 0.015625 0.000000
+vt 0.734375 0.750000
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.828125 0.250000
+vt 0.765625 0.250000
+vt 0.765625 0.750000
+vt 0.828125 0.750000
+g Cylinder_Cylinder_None
+s off
+f 4/1 3/2 1/3 2/4
+f 8/2 7/1 5/4 6/3
+f 3/5 8/2 6/3 1/6
+f 2/4 5/7 7/8 4/1
+f 1/9 6/10 5/11 2/12
+f 4/13 7/14 8/15 3/16
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_wood_glass.obj b/homedecor_modpack/homedecor/models/homedecor_door_wood_glass.obj
new file mode 100644
index 0000000..b1b6b40
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_wood_glass.obj
@@ -0,0 +1,243 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-woodglass-standard.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.374531 0.375031
+v 0.374875 0.437531 0.499969
+v -0.374875 0.437531 0.499969
+v -0.374875 1.374531 0.499969
+v -0.374875 0.437531 0.375031
+v 0.374875 0.437531 0.375031
+v 0.374875 1.374531 0.375031
+v -0.374875 1.374531 0.375031
+v 0.374875 1.374531 0.499969
+v -0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.374875 -0.374531 0.499969
+v -0.374875 -0.374531 0.499969
+v -0.374875 0.562469 0.499969
+v -0.374875 -0.374531 0.375031
+v 0.374875 -0.374531 0.375031
+v 0.374875 0.562469 0.375031
+v -0.374875 0.562469 0.375031
+v 0.374875 0.562469 0.499969
+v 0.374875 -0.031219 0.499969
+v -0.374875 -0.031219 0.499969
+v -0.374875 -0.031219 0.375031
+v 0.374875 -0.031219 0.375031
+v -0.374875 0.093719 0.499969
+v 0.374875 0.093719 0.375031
+v -0.374875 0.093719 0.375031
+v 0.374875 0.093719 0.499969
+v 0.374875 1.031219 0.499969
+v -0.374875 1.031219 0.375031
+v 0.374875 1.031219 0.375031
+v -0.374875 1.031219 0.499969
+v 0.374875 0.906281 0.375031
+v -0.374875 0.906281 0.375031
+v -0.374875 0.906281 0.499969
+v 0.374875 0.906281 0.499969
+v -0.062500 1.031250 0.500000
+v -0.062500 1.031250 0.375000
+v 0.062500 1.031250 0.375000
+v 0.062500 1.031250 0.500000
+v -0.062500 1.375000 0.500000
+v -0.062500 1.375000 0.375000
+v 0.062500 1.375000 0.375000
+v 0.062500 1.375000 0.500000
+v -0.062500 0.562500 0.500000
+v -0.062500 0.562500 0.375000
+v 0.062500 0.562500 0.375000
+v 0.062500 0.562500 0.500000
+v -0.062500 0.906250 0.500000
+v -0.062500 0.906250 0.375000
+v 0.062500 0.906250 0.375000
+v 0.062500 0.906250 0.500000
+v -0.062500 0.093750 0.500000
+v -0.062500 0.093750 0.375000
+v 0.062500 0.093750 0.375000
+v 0.062500 0.093750 0.500000
+v -0.062500 0.437500 0.500000
+v -0.062500 0.437500 0.375000
+v 0.062500 0.437500 0.375000
+v 0.062500 0.437500 0.500000
+v -0.062500 -0.375000 0.500000
+v -0.062500 -0.375000 0.375000
+v 0.062500 -0.375000 0.375000
+v 0.062500 -0.375000 0.500000
+v -0.062500 -0.031250 0.500000
+v -0.062500 -0.031250 0.375000
+v 0.062500 -0.031250 0.375000
+v 0.062500 -0.031250 0.500000
+v -0.375000 -0.375000 0.438458
+v 0.375000 -0.375000 0.438458
+v -0.375000 1.375000 0.438458
+v 0.375000 1.375000 0.438458
+v 0.375000 -0.375000 0.436542
+v -0.375000 -0.375000 0.436542
+v 0.375000 1.375000 0.436542
+v -0.375000 1.375000 0.436542
+vt 0.515625 0.937500
+vt 0.140625 0.937500
+vt 0.078125 0.937500
+vt 0.078125 1.000000
+vt 0.578125 1.000000
+vt 0.578125 0.937500
+vt 0.515625 0.468750
+vt 0.515625 0.531250
+vt 0.140625 0.531250
+vt 0.140625 0.468750
+vt 0.015625 1.000000
+vt 0.015625 0.937500
+vt 0.015625 0.062500
+vt 0.015625 0.000000
+vt 0.078125 0.000000
+vt 0.078125 0.062500
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.578125 0.062500
+vt 0.515625 0.062500
+vt 0.140625 0.062500
+vt 0.578125 -0.000000
+vt 0.640625 -0.000000
+vt 0.640625 0.062500
+vt 0.640625 0.937500
+vt 0.640625 1.000000
+vt 0.015625 0.531250
+vt 0.078125 0.531250
+vt 0.734375 0.312500
+vt 0.734375 0.687500
+vt 0.671875 0.687500
+vt 0.671875 0.312500
+vt 0.578125 0.531250
+vt 0.640625 0.531250
+vt 0.765625 0.312500
+vt 0.828125 0.312500
+vt 0.828125 0.687500
+vt 0.765625 0.687500
+vt 0.015625 0.468750
+vt 0.078125 0.468750
+vt 0.640625 0.468750
+vt 0.578125 0.468750
+vt 0.515625 0.234375
+vt 0.515625 0.296875
+vt 0.140625 0.296875
+vt 0.140625 0.234375
+vt 0.140625 0.703125
+vt 0.140625 0.765625
+vt 0.515625 0.765625
+vt 0.515625 0.703125
+vt 0.578125 0.765625
+vt 0.640625 0.765625
+vt 0.359375 0.937500
+vt 0.296875 0.937500
+vt 0.296875 0.765625
+vt 0.359375 0.765625
+vt 0.015625 0.765625
+vt 0.078125 0.765625
+vt 0.000000 0.000000
+vt 0.640625 0.703125
+vt 0.578125 0.703125
+vt 0.359375 0.703125
+vt 0.296875 0.703125
+vt 0.296875 0.531250
+vt 0.359375 0.531250
+vt 0.078125 0.703125
+vt 0.015625 0.703125
+vt 0.578125 0.296875
+vt 0.640625 0.296875
+vt 0.359375 0.468750
+vt 0.296875 0.468750
+vt 0.296875 0.296875
+vt 0.359375 0.296875
+vt 0.015625 0.296875
+vt 0.078125 0.296875
+vt 0.640625 0.234375
+vt 0.578125 0.234375
+vt 0.359375 0.234375
+vt 0.296875 0.234375
+vt 0.296875 0.062500
+vt 0.359375 0.062500
+vt 0.078125 0.234375
+vt 0.015625 0.234375
+vt 0.390625 0.109375
+vt 0.015625 0.109375
+vt 0.015625 0.984375
+vt 0.390625 0.984375
+vn 0.000000 0.000000 1.000000
+vn -0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 15/1/1 20/2/1 10/3/1 1/4/1 2/5/1 21/6/1
+f 16/7/2 31/8/2 30/9/2 17/10/2
+f 23/3/3 6/4/3 1/11/3 10/12/3 22/13/3 3/14/3 8/15/3 11/16/3
+f 18/2/2 19/1/2 12/6/2 5/5/2 6/4/2 23/3/2
+f 2/17/4 1/18/4 6/19/4 5/20/4
+f 3/21/5 4/22/5 7/23/5 8/24/5
+f 13/10/1 32/9/1 27/8/1 14/7/1
+f 24/25/2 12/6/2 19/1/2 31/8/2 16/7/2 28/26/2
+f 22/16/1 10/3/1 20/2/1 32/9/1 13/10/1 25/27/1
+f 24/25/6 7/28/6 4/29/6 9/30/6 21/31/6 2/32/6 5/5/6 12/6/6
+f 26/26/1 14/7/1 27/8/1 15/1/1 21/6/1 9/25/1
+f 29/27/2 17/10/2 30/9/2 18/2/2 23/3/2 11/16/2
+f 8/15/2 7/28/2 24/25/2 28/26/2 29/27/2 11/16/2
+f 4/28/1 3/15/1 22/16/1 25/27/1 26/26/1 9/25/1
+f 15/12/3 27/33/3 31/34/3 19/3/3
+f 30/35/4 31/36/4 27/37/4 32/38/4
+f 18/6/6 30/39/6 32/40/6 20/31/6
+f 18/41/5 20/42/5 15/43/5 19/44/5
+f 14/45/3 26/13/3 28/16/3 16/46/3
+f 29/35/4 28/36/4 26/37/4 25/38/4
+f 13/47/6 17/48/6 29/25/6 25/30/6
+f 17/41/5 13/42/5 14/43/5 16/44/5
+f 35/49/2 39/50/2 38/51/2 36/52/2
+f 33/52/1 40/51/1 37/50/1 34/49/1
+f 38/35/4 39/36/4 37/37/4 40/38/4
+f 36/41/5 33/42/5 34/43/5 35/44/5
+f 45/41/5 48/42/5 47/43/5 46/44/5
+f 43/35/4 42/36/4 44/37/4 41/38/4
+f 48/53/1 41/54/1 44/55/1 47/56/1
+f 46/56/2 42/55/2 43/54/2 45/53/2
+f 53/31/6 54/6/6 50/57/6 49/58/6
+f 54/59/2 55/60/2 51/61/2 50/62/2
+f 55/3/3 56/12/3 52/63/3 51/64/3
+f 56/60/1 53/59/1 49/62/1 52/61/1
+f 49/65/5 50/65/5 51/65/5 52/65/5
+f 56/65/4 55/65/4 54/65/4 53/65/4
+f 61/66/6 62/67/6 58/39/6 57/40/6
+f 62/68/2 63/69/2 59/70/2 58/71/2
+f 63/72/3 64/73/3 60/33/3 59/34/3
+f 64/69/1 61/68/1 57/71/1 60/70/1
+f 69/47/6 70/48/6 66/74/6 65/75/6
+f 70/76/2 71/77/2 67/78/2 66/79/2
+f 71/46/3 72/45/3 68/80/3 67/81/3
+f 72/77/1 69/76/1 65/79/1 68/78/1
+f 77/82/6 78/83/6 74/25/6 73/30/6
+f 78/84/2 79/85/2 75/86/2 74/87/2
+f 79/88/3 80/89/3 76/13/3 75/16/3
+f 80/85/1 77/84/1 73/87/1 76/86/1
+g Cylinder_Cylinder_glass
+f 81/90/1 82/91/1 84/92/1 83/93/1
+f 85/91/2 86/90/2 88/93/2 87/92/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_wood_glass_right.obj b/homedecor_modpack/homedecor/models/homedecor_door_wood_glass_right.obj
new file mode 100644
index 0000000..3c544b8
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_wood_glass_right.obj
@@ -0,0 +1,243 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-woodglass-standard-right.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.374531 0.375031
+v 0.374875 0.437531 0.499969
+v -0.374875 0.437531 0.499969
+v -0.374875 1.374531 0.499969
+v -0.374875 0.437531 0.375031
+v 0.374875 0.437531 0.375031
+v 0.374875 1.374531 0.375031
+v -0.374875 1.374531 0.375031
+v 0.374875 1.374531 0.499969
+v -0.499750 1.374531 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.374531 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.374875 -0.374531 0.499969
+v -0.374875 -0.374531 0.499969
+v -0.374875 0.562469 0.499969
+v -0.374875 -0.374531 0.375031
+v 0.374875 -0.374531 0.375031
+v 0.374875 0.562469 0.375031
+v -0.374875 0.562469 0.375031
+v 0.374875 0.562469 0.499969
+v 0.374875 -0.031219 0.499969
+v -0.374875 -0.031219 0.499969
+v -0.374875 -0.031219 0.375031
+v 0.374875 -0.031219 0.375031
+v -0.374875 0.093719 0.499969
+v 0.374875 0.093719 0.375031
+v -0.374875 0.093719 0.375031
+v 0.374875 0.093719 0.499969
+v 0.374875 1.031219 0.499969
+v -0.374875 1.031219 0.375031
+v 0.374875 1.031219 0.375031
+v -0.374875 1.031219 0.499969
+v 0.374875 0.906281 0.375031
+v -0.374875 0.906281 0.375031
+v -0.374875 0.906281 0.499969
+v 0.374875 0.906281 0.499969
+v -0.062500 1.031250 0.500000
+v -0.062500 1.031250 0.375000
+v 0.062500 1.031250 0.375000
+v 0.062500 1.031250 0.500000
+v -0.062500 1.375000 0.500000
+v -0.062500 1.375000 0.375000
+v 0.062500 1.375000 0.375000
+v 0.062500 1.375000 0.500000
+v -0.062500 0.562500 0.500000
+v -0.062500 0.562500 0.375000
+v 0.062500 0.562500 0.375000
+v 0.062500 0.562500 0.500000
+v -0.062500 0.906250 0.500000
+v -0.062500 0.906250 0.375000
+v 0.062500 0.906250 0.375000
+v 0.062500 0.906250 0.500000
+v -0.062500 0.093750 0.500000
+v -0.062500 0.093750 0.375000
+v 0.062500 0.093750 0.375000
+v 0.062500 0.093750 0.500000
+v -0.062500 0.437500 0.500000
+v -0.062500 0.437500 0.375000
+v 0.062500 0.437500 0.375000
+v 0.062500 0.437500 0.500000
+v -0.062500 -0.375000 0.500000
+v -0.062500 -0.375000 0.375000
+v 0.062500 -0.375000 0.375000
+v 0.062500 -0.375000 0.500000
+v -0.062500 -0.031250 0.500000
+v -0.062500 -0.031250 0.375000
+v 0.062500 -0.031250 0.375000
+v 0.062500 -0.031250 0.500000
+v -0.375000 -0.375000 0.438458
+v 0.375000 -0.375000 0.438458
+v -0.375000 1.375000 0.438458
+v 0.375000 1.375000 0.438458
+v 0.375000 -0.375000 0.436542
+v -0.375000 -0.375000 0.436542
+v 0.375000 1.375000 0.436542
+v -0.375000 1.375000 0.436542
+vt 0.140625 0.937500
+vt 0.515625 0.937500
+vt 0.578125 0.937500
+vt 0.578125 1.000000
+vt 0.078125 1.000000
+vt 0.078125 0.937500
+vt 0.140625 0.468750
+vt 0.140625 0.531250
+vt 0.515625 0.531250
+vt 0.515625 0.468750
+vt 0.640625 1.000000
+vt 0.640625 0.937500
+vt 0.640625 0.062500
+vt 0.640625 -0.000000
+vt 0.578125 -0.000000
+vt 0.578125 0.062500
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.078125 0.062500
+vt 0.140625 0.062500
+vt 0.515625 0.062500
+vt 0.078125 -0.000000
+vt 0.015625 -0.000000
+vt 0.015625 0.062500
+vt 0.015625 0.937500
+vt 0.015625 1.000000
+vt 0.640625 0.531250
+vt 0.578125 0.531250
+vt 0.734375 0.312500
+vt 0.734375 0.687500
+vt 0.671875 0.687500
+vt 0.671875 0.312500
+vt 0.078125 0.531250
+vt 0.015625 0.531250
+vt 0.765625 0.312500
+vt 0.828125 0.312500
+vt 0.828125 0.687500
+vt 0.765625 0.687500
+vt 0.640625 0.468750
+vt 0.578125 0.468750
+vt 0.015625 0.468750
+vt 0.078125 0.468750
+vt 0.140625 0.234375
+vt 0.140625 0.296875
+vt 0.515625 0.296875
+vt 0.515625 0.234375
+vt 0.515625 0.703125
+vt 0.515625 0.765625
+vt 0.140625 0.765625
+vt 0.140625 0.703125
+vt 0.078125 0.765625
+vt 0.015625 0.765625
+vt 0.296875 0.937500
+vt 0.359375 0.937500
+vt 0.359375 0.765625
+vt 0.296875 0.765625
+vt 0.640625 0.765625
+vt 0.578125 0.765625
+vt 0.656250 -0.000000
+vt 0.015625 0.703125
+vt 0.078125 0.703125
+vt 0.296875 0.703125
+vt 0.359375 0.703125
+vt 0.359375 0.531250
+vt 0.296875 0.531250
+vt 0.578125 0.703125
+vt 0.640625 0.703125
+vt 0.078125 0.296875
+vt 0.015625 0.296875
+vt 0.296875 0.468750
+vt 0.359375 0.468750
+vt 0.359375 0.296875
+vt 0.296875 0.296875
+vt 0.640625 0.296875
+vt 0.578125 0.296875
+vt 0.015625 0.234375
+vt 0.078125 0.234375
+vt 0.296875 0.234375
+vt 0.359375 0.234375
+vt 0.359375 0.062500
+vt 0.296875 0.062500
+vt 0.578125 0.234375
+vt 0.640625 0.234375
+vt 0.015625 0.109375
+vt 0.390625 0.109375
+vt 0.390625 0.984375
+vt 0.015625 0.984375
+vn 0.000000 0.000000 1.000000
+vn -0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 15/1/1 20/2/1 10/3/1 1/4/1 2/5/1 21/6/1
+f 16/7/2 31/8/2 30/9/2 17/10/2
+f 23/3/3 6/4/3 1/11/3 10/12/3 22/13/3 3/14/3 8/15/3 11/16/3
+f 18/2/2 19/1/2 12/6/2 5/5/2 6/4/2 23/3/2
+f 2/17/4 1/18/4 6/19/4 5/20/4
+f 3/21/5 4/22/5 7/23/5 8/24/5
+f 13/10/1 32/9/1 27/8/1 14/7/1
+f 24/25/2 12/6/2 19/1/2 31/8/2 16/7/2 28/26/2
+f 22/16/1 10/3/1 20/2/1 32/9/1 13/10/1 25/27/1
+f 24/25/6 7/28/6 4/29/6 9/30/6 21/31/6 2/32/6 5/5/6 12/6/6
+f 26/26/1 14/7/1 27/8/1 15/1/1 21/6/1 9/25/1
+f 29/27/2 17/10/2 30/9/2 18/2/2 23/3/2 11/16/2
+f 8/15/2 7/28/2 24/25/2 28/26/2 29/27/2 11/16/2
+f 4/28/1 3/15/1 22/16/1 25/27/1 26/26/1 9/25/1
+f 15/12/3 27/33/3 31/34/3 19/3/3
+f 30/35/4 31/36/4 27/37/4 32/38/4
+f 18/6/6 30/39/6 32/40/6 20/31/6
+f 18/41/5 20/42/5 15/43/5 19/44/5
+f 14/45/3 26/13/3 28/16/3 16/46/3
+f 29/35/4 28/36/4 26/37/4 25/38/4
+f 13/47/6 17/48/6 29/25/6 25/30/6
+f 17/41/5 13/42/5 14/43/5 16/44/5
+f 35/49/2 39/50/2 38/51/2 36/52/2
+f 33/52/1 40/51/1 37/50/1 34/49/1
+f 38/35/4 39/36/4 37/37/4 40/38/4
+f 36/41/5 33/42/5 34/43/5 35/44/5
+f 45/41/5 48/42/5 47/43/5 46/44/5
+f 43/35/4 42/36/4 44/37/4 41/38/4
+f 48/53/1 41/54/1 44/55/1 47/56/1
+f 46/56/2 42/55/2 43/54/2 45/53/2
+f 53/31/6 54/6/6 50/57/6 49/58/6
+f 54/59/2 55/60/2 51/61/2 50/62/2
+f 55/3/3 56/12/3 52/63/3 51/64/3
+f 56/60/1 53/59/1 49/62/1 52/61/1
+f 49/65/5 50/65/5 51/65/5 52/65/5
+f 56/65/4 55/65/4 54/65/4 53/65/4
+f 61/66/6 62/67/6 58/39/6 57/40/6
+f 62/68/2 63/69/2 59/70/2 58/71/2
+f 63/72/3 64/73/3 60/33/3 59/34/3
+f 64/69/1 61/68/1 57/71/1 60/70/1
+f 69/47/6 70/48/6 66/74/6 65/75/6
+f 70/76/2 71/77/2 67/78/2 66/79/2
+f 71/46/3 72/45/3 68/80/3 67/81/3
+f 72/77/1 69/76/1 65/79/1 68/78/1
+f 77/82/6 78/83/6 74/25/6 73/30/6
+f 78/84/2 79/85/2 75/86/2 74/87/2
+f 79/88/3 80/89/3 76/13/3 75/16/3
+f 80/85/1 77/84/1 73/87/1 76/86/1
+g Cylinder_Cylinder_glass
+f 81/90/1 82/91/1 84/92/1 83/93/1
+f 85/91/2 86/90/2 88/93/2 87/92/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea.obj b/homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea.obj
new file mode 100644
index 0000000..68fbf86
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea.obj
@@ -0,0 +1,114 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-woodglass-inset.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.312031 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.312031 0.375031
+v 0.187375 0.437531 0.499969
+v -0.187375 0.437531 0.499969
+v -0.187375 1.312031 0.499969
+v -0.187375 0.437531 0.375031
+v 0.187375 0.437531 0.375031
+v 0.187375 1.312031 0.375031
+v -0.187375 1.312031 0.375031
+v 0.187375 1.312031 0.499969
+v -0.499750 1.312031 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.312031 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.187375 -0.374531 0.499969
+v -0.187375 -0.374531 0.499969
+v -0.187375 -0.374531 0.375031
+v 0.187375 -0.374531 0.375031
+v -0.187500 0.437500 0.438458
+v 0.187500 0.437500 0.438458
+v -0.187500 1.312500 0.438458
+v 0.187500 1.312500 0.438458
+v 0.187500 0.437500 0.436542
+v -0.187500 0.437500 0.436542
+v 0.187500 1.312500 0.436542
+v -0.187500 1.312500 0.436542
+vt 0.421875 0.906250
+vt 0.234375 0.906250
+vt 0.078125 0.906250
+vt 0.078125 1.000000
+vt 0.578125 1.000000
+vt 0.578125 0.906250
+vt 0.015625 1.000000
+vt 0.015625 0.906250
+vt 0.015625 0.062500
+vt 0.015625 0.000000
+vt 0.078125 0.000000
+vt 0.078125 0.062500
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.578125 0.062500
+vt 0.421875 0.468750
+vt 0.421875 0.062500
+vt 0.234375 0.468750
+vt 0.234375 0.062500
+vt 0.578125 0.000000
+vt 0.640625 0.000000
+vt 0.640625 0.062500
+vt 0.640625 0.906250
+vt 0.640625 1.000000
+vt 0.734375 0.593750
+vt 0.671875 0.593750
+vt 0.671875 0.406250
+vt 0.734375 0.406250
+vt 0.765625 0.406250
+vt 0.828125 0.406250
+vt 0.828125 0.593750
+vt 0.765625 0.593750
+vt 0.578125 0.468750
+vt 0.640625 0.468750
+vt 0.078125 0.468750
+vt 0.015625 0.468750
+vt 0.031250 0.093750
+vt 0.406250 0.093750
+vt 0.406250 0.968750
+vt 0.031250 0.968750
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 15/1/1 20/2/1 10/3/1 1/4/1 2/5/1 21/6/1
+f 23/3/2 6/4/2 1/7/2 10/8/2 22/9/2 3/10/2 8/11/2 11/12/2
+f 18/2/3 19/1/3 12/6/3 5/5/3 6/4/3 23/3/3
+f 2/13/4 1/14/4 6/15/4 5/16/4
+f 3/17/5 4/18/5 7/19/5 8/20/5
+f 24/21/3 12/6/3 19/1/3 16/22/3 27/23/3
+f 22/12/1 10/3/1 20/2/1 13/24/1 25/25/1
+f 24/21/6 7/26/6 4/27/6 9/28/6 21/29/6 2/30/6 5/5/6 12/6/6
+f 26/23/1 14/22/1 15/1/1 21/6/1 9/21/1
+f 28/25/3 17/24/3 18/2/3 23/3/3 11/12/3
+f 8/11/3 7/26/3 24/21/3 27/23/3 28/25/3 11/12/3
+f 4/26/1 3/11/1 22/12/1 25/25/1 26/23/1 9/21/1
+f 16/31/4 14/32/4 13/33/4 17/34/4
+f 18/35/5 20/36/5 15/37/5 19/38/5
+f 16/22/3 17/24/3 28/25/3 27/23/3
+f 13/24/1 14/22/1 26/23/1 25/25/1
+f 18/6/6 17/39/6 13/40/6 20/29/6
+f 16/41/2 19/3/2 15/8/2 14/42/2
+g Cylinder_Cylinder_glass
+f 29/43/1 30/44/1 32/45/1 31/46/1
+f 33/44/3 34/43/3 36/46/3 35/45/3
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea_right.obj b/homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea_right.obj
new file mode 100644
index 0000000..51c3e26
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_woodglass_typea_right.obj
@@ -0,0 +1,114 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-woodglass-typea-right.blend'
+# www.blender.org
+o Cylinder
+v 0.499750 1.499500 0.499969
+v -0.499750 1.499500 0.499969
+v 0.499750 -0.499500 0.499969
+v -0.499750 -0.499500 0.499969
+v -0.499750 1.499500 0.375031
+v 0.499750 1.499500 0.375031
+v -0.499750 -0.499500 0.375031
+v 0.499750 -0.499500 0.375031
+v -0.499750 -0.374531 0.499969
+v 0.499750 1.312031 0.499969
+v 0.499750 -0.374531 0.375031
+v -0.499750 1.312031 0.375031
+v 0.187375 0.437531 0.499969
+v -0.187375 0.437531 0.499969
+v -0.187375 1.312031 0.499969
+v -0.187375 0.437531 0.375031
+v 0.187375 0.437531 0.375031
+v 0.187375 1.312031 0.375031
+v -0.187375 1.312031 0.375031
+v 0.187375 1.312031 0.499969
+v -0.499750 1.312031 0.499969
+v 0.499750 -0.374531 0.499969
+v 0.499750 1.312031 0.375031
+v -0.499750 -0.374531 0.375031
+v 0.187375 -0.374531 0.499969
+v -0.187375 -0.374531 0.499969
+v -0.187375 -0.374531 0.375031
+v 0.187375 -0.374531 0.375031
+v -0.187500 0.437500 0.438458
+v 0.187500 0.437500 0.438458
+v -0.187500 1.312500 0.438458
+v 0.187500 1.312500 0.438458
+v 0.187500 0.437500 0.436542
+v -0.187500 0.437500 0.436542
+v 0.187500 1.312500 0.436542
+v -0.187500 1.312500 0.436542
+vt 0.234375 0.906250
+vt 0.421875 0.906250
+vt 0.578125 0.906250
+vt 0.578125 1.000000
+vt 0.078125 1.000000
+vt 0.078125 0.906250
+vt 0.640625 1.000000
+vt 0.640625 0.906250
+vt 0.640625 0.062500
+vt 0.640625 0.000000
+vt 0.578125 0.000000
+vt 0.578125 0.062500
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.078125 0.062500
+vt 0.234375 0.468750
+vt 0.234375 0.062500
+vt 0.421875 0.468750
+vt 0.421875 0.062500
+vt 0.078125 0.000000
+vt 0.015625 0.000000
+vt 0.015625 0.062500
+vt 0.015625 0.906250
+vt 0.015625 1.000000
+vt 0.734375 0.593750
+vt 0.671875 0.593750
+vt 0.671875 0.406250
+vt 0.734375 0.406250
+vt 0.765625 0.406250
+vt 0.828125 0.406250
+vt 0.828125 0.593750
+vt 0.765625 0.593750
+vt 0.078125 0.468750
+vt 0.015625 0.468750
+vt 0.578125 0.468750
+vt 0.640625 0.468750
+vt 0.406250 0.093750
+vt 0.031250 0.093750
+vt 0.031250 0.968750
+vt 0.406250 0.968750
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 15/1/1 20/2/1 10/3/1 1/4/1 2/5/1 21/6/1
+f 23/3/2 6/4/2 1/7/2 10/8/2 22/9/2 3/10/2 8/11/2 11/12/2
+f 18/2/3 19/1/3 12/6/3 5/5/3 6/4/3 23/3/3
+f 2/13/4 1/14/4 6/15/4 5/16/4
+f 3/17/5 4/18/5 7/19/5 8/20/5
+f 24/21/3 12/6/3 19/1/3 16/22/3 27/23/3
+f 22/12/1 10/3/1 20/2/1 13/24/1 25/25/1
+f 24/21/6 7/26/6 4/27/6 9/28/6 21/29/6 2/30/6 5/5/6 12/6/6
+f 26/23/1 14/22/1 15/1/1 21/6/1 9/21/1
+f 28/25/3 17/24/3 18/2/3 23/3/3 11/12/3
+f 8/11/3 7/26/3 24/21/3 27/23/3 28/25/3 11/12/3
+f 4/26/1 3/11/1 22/12/1 25/25/1 26/23/1 9/21/1
+f 16/31/4 14/32/4 13/33/4 17/34/4
+f 18/35/5 20/36/5 15/37/5 19/38/5
+f 16/22/3 17/24/3 28/25/3 27/23/3
+f 13/24/1 14/22/1 26/23/1 25/25/1
+f 18/6/6 17/39/6 13/40/6 20/29/6
+f 16/41/2 19/3/2 15/8/2 14/42/2
+g Cylinder_Cylinder_glass
+f 29/43/1 30/44/1 32/45/1 31/46/1
+f 33/44/3 34/43/3 36/46/3 35/45/3
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_wrought_iron.obj b/homedecor_modpack/homedecor/models/homedecor_door_wrought_iron.obj
new file mode 100644
index 0000000..6d89066
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_wrought_iron.obj
@@ -0,0 +1,88 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-wrought-iron.blend'
+# www.blender.org
+mtllib homedecor_door_wrought_iron.mtl
+o Cylinder
+v 0.500000 1.500000 0.500000
+v -0.500000 1.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 1.500000 0.375000
+v 0.500000 1.500000 0.375000
+v -0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.375000
+v 0.484375 1.484375 0.438451
+v -0.484375 1.484375 0.438451
+v 0.484375 -0.484375 0.438451
+v -0.484375 -0.484375 0.438451
+v -0.484375 1.484375 0.436547
+v 0.484375 1.484375 0.436547
+v -0.484375 -0.484375 0.436547
+v 0.484375 -0.484375 0.436547
+v 0.468750 -0.500000 0.500000
+v -0.468750 -0.500000 0.500000
+v 0.500000 1.484375 0.500000
+v -0.500000 1.484375 0.500000
+v -0.500000 1.484375 0.375000
+v 0.500000 1.484375 0.375000
+v 0.500000 -0.484375 0.500000
+v -0.500000 -0.484375 0.500000
+v -0.500000 -0.484375 0.375000
+v 0.500000 -0.484375 0.375000
+v 0.484375 1.484375 0.500000
+v 0.484375 -0.484375 0.500000
+v 0.484375 1.484375 0.375000
+v 0.484375 -0.484375 0.375000
+v -0.484375 1.484375 0.500000
+v -0.484375 -0.484375 0.500000
+v -0.484375 1.484375 0.375000
+v -0.484375 -0.484375 0.375000
+vt 0.085938 0.007812
+vt 0.570312 0.007812
+vt 0.570312 0.992188
+vt 0.085938 0.992188
+vt 0.578125 0.007812
+vt 0.578125 0.992188
+vt 0.078125 0.007812
+vt 0.078125 0.992188
+vt 0.015625 0.992188
+vt 0.015625 0.007812
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.078125 1.000000
+vt 0.578125 1.000000
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.578125 0.000000
+vt 0.078125 0.000000
+vt 0.640625 0.007812
+vt 0.640625 0.992188
+vt 0.640625 0.000000
+vt 0.640625 1.000000
+vt 0.015625 1.000000
+vt 0.015625 0.000000
+usemtl None
+s off
+f 16/1 15/2 13/3 14/4
+f 12/2 11/1 9/4 10/3
+f 25/5 21/6 33/3 34/2
+f 23/7 19/8 27/4 28/1
+f 31/9 32/10 34/7 33/8
+f 30/1 29/4 22/8 26/7
+f 32/2 31/3 20/6 24/5
+f 19/11 20/12 21/13 22/14
+f 6/15 22/8 21/6 5/16
+f 2/16 20/6 19/8 1/15
+f 24/17 23/18 26/19 25/20
+f 7/21 25/5 26/7 8/22
+f 3/22 23/7 24/5 4/21
+f 28/23 27/24 29/6 30/5
+f 4/25 2/26 5/16 7/21
+f 1/18 6/19 5/20 2/17
+f 1/27 3/28 8/22 6/15
+f 4/12 7/13 8/14 3/11
+l 17 3
+l 4 18
diff --git a/homedecor_modpack/homedecor/models/homedecor_door_wrought_iron_right.obj b/homedecor_modpack/homedecor/models/homedecor_door_wrought_iron_right.obj
new file mode 100644
index 0000000..fe55003
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_door_wrought_iron_right.obj
@@ -0,0 +1,88 @@
+# Blender v2.73 (sub 0) OBJ File: 'door-wrought-iron-right.blend'
+# www.blender.org
+mtllib homedecor_door_wrought_iron_right.mtl
+o Cylinder
+v 0.500000 1.500000 0.500000
+v -0.500000 1.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 1.500000 0.375000
+v 0.500000 1.500000 0.375000
+v -0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.375000
+v 0.484375 1.484375 0.438451
+v -0.484375 1.484375 0.438451
+v 0.484375 -0.484375 0.438451
+v -0.484375 -0.484375 0.438451
+v -0.484375 1.484375 0.436547
+v 0.484375 1.484375 0.436547
+v -0.484375 -0.484375 0.436547
+v 0.484375 -0.484375 0.436547
+v 0.468750 -0.500000 0.500000
+v -0.468750 -0.500000 0.500000
+v 0.500000 1.484375 0.500000
+v -0.500000 1.484375 0.500000
+v -0.500000 1.484375 0.375000
+v 0.500000 1.484375 0.375000
+v 0.500000 -0.484375 0.500000
+v -0.500000 -0.484375 0.500000
+v -0.500000 -0.484375 0.375000
+v 0.500000 -0.484375 0.375000
+v 0.484375 1.484375 0.500000
+v 0.484375 -0.484375 0.500000
+v 0.484375 1.484375 0.375000
+v 0.484375 -0.484375 0.375000
+v -0.484375 1.484375 0.500000
+v -0.484375 -0.484375 0.500000
+v -0.484375 1.484375 0.375000
+v -0.484375 -0.484375 0.375000
+vt 0.570312 0.007812
+vt 0.085938 0.007812
+vt 0.085938 0.992188
+vt 0.570312 0.992188
+vt 0.078125 0.007812
+vt 0.078125 0.992188
+vt 0.578125 0.007812
+vt 0.578125 0.992188
+vt 0.640625 0.992188
+vt 0.640625 0.007812
+vt 0.765625 0.750000
+vt 0.765625 0.250000
+vt 0.828125 0.250000
+vt 0.828125 0.750000
+vt 0.578125 1.000000
+vt 0.078125 1.000000
+vt 0.734375 0.250000
+vt 0.734375 0.750000
+vt 0.671875 0.750000
+vt 0.671875 0.250000
+vt 0.078125 -0.000000
+vt 0.578125 -0.000000
+vt 0.015625 0.007812
+vt 0.015625 0.992188
+vt 0.015625 -0.000000
+vt 0.015625 1.000000
+vt 0.640625 1.000000
+vt 0.640625 -0.000000
+usemtl None
+s off
+f 16/1 15/2 13/3 14/4
+f 12/2 11/1 9/4 10/3
+f 25/5 21/6 33/3 34/2
+f 23/7 19/8 27/4 28/1
+f 31/9 32/10 34/7 33/8
+f 30/1 29/4 22/8 26/7
+f 32/2 31/3 20/6 24/5
+f 19/11 20/12 21/13 22/14
+f 6/15 22/8 21/6 5/16
+f 2/16 20/6 19/8 1/15
+f 24/17 23/18 26/19 25/20
+f 7/21 25/5 26/7 8/22
+f 3/22 23/7 24/5 4/21
+f 28/23 27/24 29/6 30/5
+f 4/25 2/26 5/16 7/21
+f 1/18 6/19 5/20 2/17
+f 1/27 3/28 8/22 6/15
+f 4/12 7/13 8/14 3/11
+l 17 3
+l 4 18
diff --git a/homedecor_modpack/homedecor/models/homedecor_dvd_cabinet.obj b/homedecor_modpack/homedecor/models/homedecor_dvd_cabinet.obj
new file mode 100644
index 0000000..09fc292
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_dvd_cabinet.obj
@@ -0,0 +1,137 @@
+# Blender v2.73 (sub 0) OBJ File: 'dvd-cabinet.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.000000
+v 0.500000 -0.500000 0.000000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.000000
+v 0.500000 0.500000 0.000000
+v 0.500000 0.500000 0.500000
+v 0.437500 -0.500000 0.000000
+v 0.437500 -0.500000 0.500000
+v 0.437500 0.500000 0.000000
+v 0.437500 0.500000 0.500000
+v -0.437500 -0.500000 0.500000
+v -0.437500 -0.500000 0.000000
+v -0.437500 0.500000 0.500000
+v -0.437500 0.500000 0.000000
+v -0.437500 0.437500 0.500000
+v -0.437500 0.437500 0.000000
+v 0.437500 0.437500 0.000000
+v 0.437500 0.437500 0.500000
+v 0.437500 -0.437500 0.000000
+v 0.437500 -0.437500 0.500000
+v -0.437500 -0.437500 0.500000
+v -0.437500 -0.437500 0.000000
+v -0.375000 0.437500 0.062500
+v -0.375000 -0.437500 0.062500
+v -0.437500 -0.437500 0.062500
+v 0.437500 -0.437500 0.062500
+v 0.437500 0.437500 0.062500
+v -0.437500 0.437500 0.062500
+v 0.062500 -0.437500 0.000000
+v 0.062500 0.437500 0.000000
+v -0.062500 -0.437500 0.000000
+v -0.062500 0.437500 0.000000
+v 0.375000 -0.437500 0.062500
+v 0.375000 0.437500 0.062500
+v -0.375000 0.437500 0.031250
+v -0.375000 -0.437500 0.031250
+v 0.375000 -0.437500 0.031250
+v 0.375000 0.437500 0.031250
+v 0.125000 -0.437500 0.031250
+v 0.125000 0.437500 0.031250
+v -0.125000 -0.437500 0.031250
+v -0.125000 0.437500 0.031250
+v 0.125000 -0.437500 0.062500
+v 0.125000 0.437500 0.062500
+v -0.125000 -0.437500 0.062500
+v -0.125000 0.437500 0.062500
+v 0.062500 -0.437500 0.062500
+v 0.062500 0.437500 0.062500
+v -0.062500 -0.437500 0.062500
+v -0.062500 0.437500 0.062500
+v 0.062500 0.437500 0.500000
+v 0.062500 -0.437500 0.500000
+v -0.062500 0.437500 0.500000
+v -0.062500 -0.437500 0.500000
+vt 1.000000 0.250000
+vt 1.000000 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.250000
+vt 0.937500 0.062500
+vt 0.562500 0.062500
+vt 0.437500 0.062500
+vt 0.062500 0.062500
+vt 0.062500 0.000000
+vt 0.937500 0.000000
+vt 0.000000 0.000000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.062500 0.937500
+vt 0.437500 0.937500
+vt 0.562500 0.937500
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.875000 0.937500
+vt 0.875000 0.062500
+vt 0.125000 0.062500
+vt 0.125000 0.937500
+vt 0.625000 0.937500
+vt 0.625000 0.062500
+vt 0.375000 0.937500
+vt 0.375000 0.062500
+vt 0.812500 0.062500
+vt 0.812500 0.937500
+vt 0.187500 0.937500
+vt 0.187500 0.062500
+vt 0.312500 0.937500
+vt 0.312500 0.062500
+vt 0.687500 0.937500
+vt 0.687500 0.062500
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+g Cylinder_Cylinder_sides
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 7/3/2 8/4/2 4/1/2 3/2/2
+f 1/1/3 2/2/3 3/3/3 4/4/3
+f 8/1/4 7/2/4 6/3/4 5/4/4
+f 24/5/5 33/6/5 31/7/5 21/8/5 9/9/5 14/10/5
+f 3/11/5 9/9/5 11/12/5 7/13/5
+f 18/14/5 16/15/5 11/12/5 19/16/5 32/17/5 34/18/5
+f 2/19/5 6/20/5 16/15/5 14/10/5
+f 5/13/6 1/11/6 13/9/6 15/12/6
+f 4/19/6 8/20/6 12/15/6 10/10/6
+f 17/16/6 20/14/6 12/15/6 15/12/6
+f 23/8/6 13/9/6 10/10/6 22/5/6
+f 24/5/2 18/14/2 30/21/2 27/22/2
+f 19/16/1 21/8/1 28/23/1 29/24/1
+f 30/11/3 18/19/3 19/20/3 29/13/3
+f 24/11/4 27/19/4 28/20/4 21/13/4
+f 52/25/1 34/18/1 33/6/1 51/26/1
+f 33/6/5 34/18/5 32/17/5 31/7/5
+f 50/27/2 49/28/2 31/7/2 32/17/2
+f 56/7/6 54/6/6 53/18/6 55/17/6
+g Cylinder_Cylinder_front
+f 27/5/5 30/14/5 25/21/5 26/22/5
+f 36/24/5 29/16/5 28/8/5 35/23/5
+f 37/21/1 38/22/1 26/29/1 25/30/1
+f 40/31/2 36/24/2 35/23/2 39/32/2
+f 42/27/5 40/24/5 39/23/5 41/28/5
+f 43/26/5 38/22/5 37/21/5 44/25/5
+f 46/33/1 42/27/1 41/28/1 45/34/1
+f 44/35/2 48/25/2 47/26/2 43/36/2
+f 50/17/5 46/27/5 45/28/5 49/7/5
+f 48/25/5 52/18/5 51/6/5 47/26/5
+g Cylinder_Cylinder_back
+f 23/8/6 56/7/6 55/17/6 17/16/6
+f 54/6/6 22/5/6 20/14/6 53/18/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire.obj b/homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire.obj
new file mode 100644
index 0000000..37fba1e
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire.obj
@@ -0,0 +1,60 @@
+# Blender v2.73 (sub 0) OBJ File: 'homedecor-fence-barbed.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.375000
+v 0.500000 0.500000 0.375000
+v 0.500000 0.500000 0.500000
+v 0.375000 -0.500000 0.375000
+v 0.375000 -0.500000 0.500000
+v 0.375000 0.500000 0.375000
+v 0.375000 0.500000 0.500000
+v -0.375000 -0.500000 0.500000
+v -0.375000 -0.500000 0.375000
+v -0.375000 0.500000 0.500000
+v -0.375000 0.500000 0.375000
+v 0.375000 -0.500000 0.437500
+v 0.375000 0.500000 0.437500
+v -0.375000 -0.500000 0.437500
+v -0.375000 0.500000 0.437500
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.875000
+vt 0.875000 0.875000
+vt 0.125000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.125000 0.000000
+vt 1.000000 0.125000
+vt 0.875000 0.125000
+vt 0.000000 0.125000
+vt 0.125000 0.125000
+vt 0.000000 0.875000
+vt 0.125000 0.875000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+g Cylinder_Cylinder_None
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 8/5/2 7/1/2 11/2/2 12/6/2
+f 7/7/3 8/8/3 4/9/3 3/10/3
+f 4/9/4 8/8/4 12/7/4 10/10/4
+f 3/4/5 4/11/5 10/12/5 9/3/5
+f 11/2/1 9/3/1 10/4/1 12/1/1
+f 7/1/6 3/4/6 9/3/6 11/2/6
+f 15/8/3 13/9/3 14/10/3 16/7/3
+f 1/13/5 2/9/5 14/10/5 13/14/5
+f 2/9/6 6/8/6 16/7/6 14/10/6
+f 6/8/2 5/15/2 15/16/2 16/7/2
+f 5/1/4 1/4/4 13/3/4 15/2/4
+f 17/10/6 19/3/6 20/2/6 18/7/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire_corner.obj b/homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire_corner.obj
new file mode 100644
index 0000000..3f4a725
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_fence_barbed_wire_corner.obj
@@ -0,0 +1,79 @@
+# Blender v2.73 (sub 0) OBJ File: 'homedecor-fence-barbed-corner.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.375000
+v 0.500000 0.500000 0.375000
+v 0.500000 0.500000 0.500000
+v 0.375000 -0.500000 0.375000
+v 0.375000 -0.500000 0.500000
+v 0.375000 0.500000 0.375000
+v 0.375000 0.500000 0.500000
+v -0.375000 -0.500000 0.500000
+v -0.375000 -0.500000 0.375000
+v -0.375000 0.500000 0.500000
+v -0.375000 0.500000 0.375000
+v 0.375000 -0.500000 0.437500
+v 0.375000 0.500000 0.437500
+v -0.375000 -0.500000 0.437500
+v -0.375000 0.500000 0.437500
+v 0.375000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.375000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.375000 -0.500000 -0.375000
+v 0.500000 -0.500000 -0.375000
+v 0.375000 0.500000 -0.375000
+v 0.500000 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v 0.437500 0.500000 -0.375000
+v 0.437500 -0.500000 0.375000
+v 0.437500 0.500000 0.375000
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.875000
+vt 0.875000 0.875000
+vt 0.125000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.125000 0.000000
+vt 1.000000 0.125000
+vt 0.875000 0.125000
+vt 0.000000 0.125000
+vt 0.125000 0.125000
+vt 0.000000 0.875000
+vt 0.125000 0.875000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+g Cylinder_Cylinder_None
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 8/5/2 7/1/2 11/2/2 12/6/2
+f 7/7/3 8/8/3 4/9/3 3/10/3
+f 4/9/4 8/8/4 12/7/4 10/10/4
+f 3/4/5 4/11/5 10/12/5 9/3/5
+f 11/2/1 9/3/1 10/4/1 12/1/1
+f 7/1/6 3/4/6 9/3/6 11/2/6
+f 15/8/3 13/9/3 14/10/3 16/7/3
+f 1/13/5 2/9/5 14/10/5 13/14/5
+f 2/9/6 6/8/6 16/7/6 14/10/6
+f 6/8/2 5/15/2 15/16/2 16/7/2
+f 5/1/4 1/4/4 13/3/4 15/2/4
+f 17/10/6 19/3/6 20/2/6 18/7/6
+f 24/5/2 23/1/2 27/2/2 28/6/2
+f 23/7/6 24/8/6 22/9/6 21/10/6
+f 22/9/3 24/8/3 28/7/3 26/10/3
+f 21/4/5 22/11/5 26/12/5 25/3/5
+f 27/2/4 25/3/4 26/4/4 28/1/4
+f 23/1/1 21/4/1 25/3/1 27/2/1
+f 29/10/1 31/3/1 32/2/1 30/7/1
diff --git a/homedecor_modpack/homedecor/models/homedecor_fence_chainlink.obj b/homedecor_modpack/homedecor/models/homedecor_fence_chainlink.obj
new file mode 100644
index 0000000..f700141
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_fence_chainlink.obj
@@ -0,0 +1,105 @@
+# Blender v2.73 (sub 0) OBJ File: 'homedecor-fence-chainlink.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.375000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.375000
+v 0.500000 0.500000 0.375000
+v 0.437500 -0.500000 0.500000
+v 0.437500 -0.500000 0.375000
+v 0.437500 0.500000 0.500000
+v 0.437500 0.500000 0.375000
+v -0.437500 -0.500000 0.500000
+v -0.437500 -0.500000 0.375000
+v -0.437500 0.500000 0.500000
+v -0.437500 0.500000 0.375000
+v -0.437500 0.500000 0.406250
+v -0.437500 -0.500000 0.406250
+v 0.437500 0.500000 0.406250
+v 0.437500 -0.500000 0.406250
+v -0.437500 0.500000 0.468750
+v -0.437500 -0.500000 0.468750
+v 0.437500 0.500000 0.468750
+v 0.437500 -0.500000 0.468750
+v -0.437500 0.437500 0.406250
+v 0.437500 0.437500 0.406250
+v -0.437500 0.437500 0.468750
+v 0.437500 0.437500 0.468750
+v -0.437500 -0.437500 0.406250
+v 0.437500 -0.437500 0.406250
+v -0.437500 -0.437500 0.468750
+v 0.437500 -0.437500 0.468750
+v -0.437500 0.437500 0.437500
+v 0.437500 0.437500 0.437500
+v -0.437500 -0.437500 0.437500
+v 0.437500 -0.437500 0.437500
+vt 0.000000 1.000000
+vt 0.000000 0.875000
+vt 0.062500 0.875000
+vt 0.062500 1.000000
+vt 1.000000 0.875000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.875000
+vt 0.062500 0.968750
+vt 0.062500 0.906250
+vt 0.937500 0.906250
+vt 0.937500 0.968750
+vt 1.000000 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.000000
+vt 1.000000 0.000000
+vt 0.000000 0.000000
+vt 0.062500 0.000000
+vt 0.062500 0.125000
+vt 0.000000 0.125000
+vt 0.062500 0.093750
+vt 0.062500 0.031250
+vt 0.937500 0.031250
+vt 0.937500 0.093750
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 0.125000 1.000000
+vt 0.125000 0.000000
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+g Cylinder_Cylinder_top
+s off
+f 5/1/1 8/2/1 12/3/1 11/4/1
+f 7/5/1 6/6/1 15/7/1 16/8/1
+f 23/9/1 19/10/1 17/11/1 21/12/1
+f 30/10/1 29/11/1 31/12/1 32/9/1
+g Cylinder_Cylinder_bottom
+f 3/13/2 14/14/2 13/15/2 2/16/2
+f 1/17/2 9/18/2 10/19/2 4/20/2
+f 26/21/2 28/22/2 27/23/2 25/24/2
+f 24/22/2 22/23/2 18/24/2 20/21/2
+g Cylinder_Cylinder_right
+f 6/6/3 7/25/3 3/26/3 2/16/3
+f 12/25/3 10/26/3 9/16/3 11/6/3
+g Cylinder_Cylinder_left
+f 8/27/4 5/1/4 1/17/4 4/28/4
+f 13/17/4 14/28/4 16/27/4 15/1/4
+g Cylinder_Cylinder_back
+f 1/17/5 5/1/5 11/4/5 9/18/5
+f 6/6/5 2/16/5 13/15/5 15/7/5
+f 28/29/5 23/4/5 21/7/5 27/30/5
+f 32/31/5 31/32/5 22/15/5 24/18/5
+g Cylinder_Cylinder_front
+f 8/1/6 4/17/6 10/18/6 12/4/6
+f 3/16/6 7/6/6 16/7/6 14/15/6
+f 25/30/6 17/7/6 19/4/6 26/29/6
+f 18/15/6 29/32/6 30/31/6 20/18/6
+f 33/30/5 35/32/5 36/31/5 34/29/5
diff --git a/homedecor_modpack/homedecor/models/homedecor_fence_chainlink_corner.obj b/homedecor_modpack/homedecor/models/homedecor_fence_chainlink_corner.obj
new file mode 100644
index 0000000..a210d41
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_fence_chainlink_corner.obj
@@ -0,0 +1,162 @@
+# Blender v2.73 (sub 0) OBJ File: 'homedecor-fence-chainlink-corner.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.375000
+v 0.500000 -0.500000 0.375000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.375000
+v 0.500000 0.500000 0.375000
+v -0.437500 -0.500000 0.500000
+v -0.437500 -0.500000 0.375000
+v -0.437500 0.500000 0.500000
+v -0.437500 0.500000 0.375000
+v -0.437500 0.500000 0.406250
+v -0.437500 -0.500000 0.406250
+v 0.375000 0.500000 0.406250
+v 0.375000 -0.500000 0.406250
+v -0.437500 0.500000 0.468750
+v -0.437500 -0.500000 0.468750
+v 0.375000 0.500000 0.468750
+v 0.375000 -0.500000 0.468750
+v -0.437500 0.437500 0.406250
+v 0.375000 0.437500 0.406250
+v -0.437500 0.437500 0.468750
+v 0.375000 0.437500 0.468750
+v -0.437500 -0.437500 0.406250
+v 0.375000 -0.437500 0.406250
+v -0.437500 -0.437500 0.468750
+v 0.375000 -0.437500 0.468750
+v -0.437500 0.437500 0.437500
+v -0.437500 -0.437500 0.437500
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v 0.375000 -0.500000 0.500000
+v 0.375000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v 0.375000 0.500000 0.500000
+v 0.375000 0.500000 -0.500000
+v 0.500000 -0.500000 -0.437500
+v 0.375000 -0.500000 -0.437500
+v 0.500000 0.500000 -0.437500
+v 0.375000 0.500000 -0.437500
+v 0.406250 0.500000 0.375000
+v 0.406250 -0.500000 0.375000
+v 0.406250 0.500000 -0.437500
+v 0.406250 -0.500000 -0.437500
+v 0.468750 0.500000 0.375000
+v 0.468750 -0.500000 0.375000
+v 0.468750 0.500000 -0.437500
+v 0.468750 -0.500000 -0.437500
+v 0.406250 0.437500 0.375000
+v 0.406250 0.437500 -0.437500
+v 0.468750 0.437500 0.375000
+v 0.468750 0.437500 -0.437500
+v 0.406250 -0.437500 0.375000
+v 0.406250 -0.437500 -0.437500
+v 0.468750 -0.437500 0.375000
+v 0.468750 -0.437500 -0.437500
+v 0.375000 0.437500 0.437500
+v 0.437500 0.437500 -0.437500
+v 0.375000 -0.437500 0.437500
+v 0.437500 -0.437500 -0.437500
+v 0.375000 -0.500000 0.375000
+v 0.375000 0.500000 0.375000
+v 0.437500 0.437500 0.375000
+v 0.437500 -0.437500 0.375000
+vt 0.875000 0.937500
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.062500 0.000000
+vt 0.062500 0.125000
+vt 0.000000 0.125000
+vt 0.000000 0.000000
+vt 0.875000 0.125000
+vt 0.875000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.125000
+vt 0.906250 0.125000
+vt 0.968750 0.125000
+vt 0.968750 0.937500
+vt 0.906250 0.937500
+vt 0.875000 0.093750
+vt 0.062500 0.093750
+vt 0.062500 0.031250
+vt 0.875000 0.031250
+vt 1.000000 0.062500
+vt 0.875000 0.062500
+vt 0.062500 0.875000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.875000
+vt 0.875000 0.875000
+vt 1.000000 0.875000
+vt 0.968750 0.062500
+vt 0.968750 0.875000
+vt 0.906250 0.875000
+vt 0.906250 0.062500
+vt 0.875000 0.906250
+vt 0.875000 0.968750
+vt 0.062500 0.968750
+vt 0.062500 0.906250
+vt 0.062500 0.937500
+vt 0.062500 0.062500
+vt 0.937500 1.000000
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.062500
+vt 0.125000 0.062500
+vt 0.125000 0.000000
+vt 0.937500 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+g Cylinder_Cylinder_top
+s off
+f 40/1/1 39/2/1 33/3/1 36/4/1
+f 9/5/1 10/6/1 5/7/1 4/8/1
+f 62/9/1 35/10/1 34/11/1 6/12/1
+f 41/13/1 45/14/1 47/15/1 43/16/1
+f 54/16/1 53/13/1 55/14/1 56/15/1
+f 13/17/1 11/18/1 15/19/1 17/20/1
+f 26/20/1 24/17/1 23/18/1 25/19/1
+g Cylinder_Cylinder_bottom
+f 32/10/2 29/11/2 37/21/2 38/22/2
+f 8/23/2 7/24/2 1/25/2 2/26/2
+f 61/27/2 3/28/2 30/3/2 31/4/2
+f 52/29/2 51/30/2 49/31/2 50/32/2
+f 46/30/2 42/31/2 44/32/2 48/29/2
+f 20/33/2 22/34/2 21/35/2 19/36/2
+f 14/33/2 18/34/2 16/35/2 12/36/2
+g Cylinder_Cylinder_right
+f 5/4/3 2/10/3 1/11/3 4/3/3
+f 50/37/3 49/1/3 41/4/3 43/24/3
+f 44/5/3 42/10/3 53/22/3 54/38/3
+f 32/8/3 38/5/3 40/24/3 36/25/3
+f 61/10/3 31/11/3 35/3/3 62/4/3
+g Cylinder_Cylinder_left
+f 47/39/4 45/40/4 51/41/4 52/42/4
+f 56/43/4 55/44/4 46/45/4 48/46/4
+f 37/46/4 29/11/4 33/3/4 39/39/4
+f 30/8/4 3/45/4 6/40/4 34/25/4
+f 8/45/4 10/40/4 9/25/4 7/8/4
+f 64/44/4 60/43/4 58/42/4 63/41/4
+g Cylinder_Cylinder_back
+f 31/10/5 30/11/5 34/3/5 35/4/5
+f 38/10/5 37/11/5 39/3/5 40/4/5
+f 7/5/5 9/24/5 4/25/5 1/8/5
+f 17/4/5 15/24/5 21/37/5 22/1/5
+f 26/22/5 25/38/5 16/5/5 18/10/5
+g Cylinder_Cylinder_front
+f 36/40/6 33/25/6 29/8/6 32/45/6
+f 3/8/6 61/45/6 62/40/6 6/25/6
+f 2/11/6 5/3/6 10/39/6 8/46/6
+f 20/41/6 19/42/6 11/39/6 13/40/6
+f 24/44/6 14/45/6 12/46/6 23/43/6
+f 59/44/6 28/43/6 27/42/6 57/41/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_filing_cabinet.obj b/homedecor_modpack/homedecor/models/homedecor_filing_cabinet.obj
new file mode 100644
index 0000000..f4970df
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_filing_cabinet.obj
@@ -0,0 +1,56 @@
+# Blender v2.73 (sub 0) OBJ File: 'filing-cabinet.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.437500
+v 0.500000 -0.500000 -0.437500
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.437500
+v 0.500000 0.500000 -0.437500
+v 0.500000 0.500000 0.500000
+v -0.437500 -0.437500 -0.437500
+v 0.437500 -0.437500 -0.437500
+v -0.437500 0.437500 -0.437500
+v 0.437500 0.437500 -0.437500
+v -0.437500 -0.437500 -0.500000
+v 0.437500 -0.437500 -0.500000
+v -0.437500 0.437500 -0.500000
+v 0.437500 0.437500 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.937500 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 0.125000
+vt 0.062500 0.125000
+vt 0.125000 0.062500
+vt 0.125000 0.937500
+vt 0.062500 0.875000
+vt 0.937500 0.875000
+vt 0.875000 0.937500
+vt 0.875000 0.062500
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_sides
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/1/2 7/2/2 3/3/2 2/4/2
+f 7/1/3 8/2/3 4/3/3 3/4/3
+f 8/1/4 5/2/4 1/3/4 4/4/4
+f 8/2/5 7/3/5 6/4/5 5/1/5
+g Cylinder_Cylinder_drawer
+f 15/5/2 16/6/2 14/7/2 13/8/2
+f 10/7/6 9/8/6 13/9/6 14/10/6
+f 12/6/3 10/7/3 14/11/3 16/12/3
+f 11/5/5 12/6/5 16/13/5 15/14/5
+f 9/8/1 11/5/1 15/15/1 13/16/1
+g Cylinder_Cylinder_bottom
+f 1/4/6 2/1/6 3/2/6 4/3/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_fishtank.obj b/homedecor_modpack/homedecor/models/homedecor_fishtank.obj
new file mode 100644
index 0000000..0f7327b
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_fishtank.obj
@@ -0,0 +1,1506 @@
+# Blender v2.73 (sub 0) OBJ File: 'fish_tank.blend'
+# www.blender.org
+o plastic_Cube.007
+v -0.399999 0.152343 0.137231
+v -0.399999 0.152343 -0.137231
+v 0.399999 0.152343 -0.137231
+v 0.399999 0.152343 0.137231
+v 0.499999 0.136718 0.312499
+v 0.499999 0.136718 -0.312499
+v -0.499999 0.136718 -0.312499
+v -0.499999 0.136718 0.312499
+v 0.499999 0.109376 0.312499
+v 0.499999 0.109376 -0.312499
+v -0.499999 0.109376 -0.312499
+v -0.499999 0.109376 0.312499
+v -0.499999 -0.499999 0.312499
+v -0.499999 -0.499999 -0.312499
+v 0.499999 -0.499999 -0.312499
+v 0.499999 -0.499999 0.312499
+v -0.499999 -0.472657 0.312499
+v -0.499999 -0.472657 -0.312499
+v 0.499999 -0.472657 -0.312499
+v 0.499999 -0.472657 0.312499
+v -0.346650 0.249999 0.118928
+v -0.346650 0.249999 -0.118928
+v 0.346650 0.249999 -0.118928
+v 0.346650 0.249999 0.118928
+vt 0.000000 -0.000000
+vt 0.629990 -0.000000
+vt 0.453321 0.100000
+vt 0.176667 0.100000
+vt 0.713114 0.000000
+vt 0.713114 0.799999
+vt 0.613728 0.746651
+vt 0.613728 0.053349
+vt 0.266243 0.624998
+vt 0.266242 0.000000
+vt 0.293428 0.000000
+vt 0.293428 0.624998
+vt 0.629990 1.000000
+vt 0.000000 1.000000
+vt 0.453321 0.900000
+vt 0.972492 1.000000
+vt 0.972492 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.944984 1.000000
+vt 0.944984 0.000000
+vt 0.176668 0.900000
+vt 0.320614 0.000000
+vt 0.320614 0.624998
+vt 0.239057 0.624998
+vt 0.239057 0.000000
+vt 0.917477 1.000000
+vt 0.917477 0.000000
+vt 0.211871 0.624998
+vt 0.211871 0.000000
+vt 0.889968 1.000000
+vt 0.889968 0.000000
+vt 0.373972 0.000000
+vt 0.613728 0.000000
+vt 0.613728 0.693302
+vt 0.373972 0.693302
+vt 0.211871 0.274462
+vt 0.105936 0.256159
+vt 0.105936 0.018303
+vt 0.812500 0.000000
+vt 0.812500 0.799999
+vt 0.713114 0.746651
+vt 0.713114 0.053349
+vt 0.000000 0.274462
+vn 0.154400 0.988000 0.000000
+vn 0.000000 0.184200 -0.982900
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.996000 -0.088800
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn -0.154400 0.988000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.996000 0.088800
+vn 0.000000 1.000000 0.000000
+vn -0.877600 0.479400 0.000000
+vn 0.000000 0.184200 0.982900
+vn 0.877600 0.479400 0.000000
+g plastic_Cube.007_plastic
+s off
+f 5/1/1 6/2/1 3/3/1 4/4/1
+f 3/5/2 2/6/2 22/7/2 23/8/2
+f 6/9/3 5/10/3 9/11/3 10/12/3
+f 12/13/4 11/14/4 10/1/4 9/2/4
+f 6/2/5 7/13/5 2/15/5 3/3/5
+f 7/16/6 6/17/6 10/18/6 11/19/6
+f 5/17/7 8/16/7 12/20/7 9/21/7
+f 7/13/8 8/14/8 1/22/8 2/15/8
+f 8/12/9 7/11/9 11/23/9 12/24/9
+f 8/14/10 5/1/10 4/4/10 1/22/10
+f 17/25/9 18/26/9 14/10/9 13/9/9
+f 18/27/6 19/28/6 15/21/6 14/20/6
+f 19/29/3 20/30/3 16/26/3 15/25/3
+f 20/28/7 17/27/7 13/31/7 16/32/7
+f 13/13/4 14/14/4 15/1/4 16/2/4
+f 20/1/11 19/2/11 18/13/11 17/14/11
+f 24/33/11 23/34/11 22/35/11 21/36/11
+f 2/30/12 1/37/12 21/38/12 22/39/12
+f 1/40/13 4/41/13 24/42/13 21/43/13
+f 4/44/14 3/1/14 23/39/14 24/38/14
+o filter_Cube.006
+v -0.386517 -0.020232 0.404567
+v -0.386517 -0.020232 0.312358
+v -0.042524 -0.020232 0.312358
+v -0.042524 -0.020232 0.404567
+v -0.386517 0.191081 0.404567
+v -0.386517 0.191081 0.312358
+v -0.042524 0.191081 0.312358
+v -0.042524 0.191081 0.404567
+v -0.355457 0.064888 0.284670
+v -0.355457 0.064888 0.220149
+v -0.167259 0.064888 0.220149
+v -0.167259 0.064888 0.284670
+v -0.355457 0.191081 0.220149
+v -0.167259 0.191081 0.220149
+v -0.355457 0.146464 0.312359
+v -0.355457 0.146464 0.284669
+v -0.167259 0.146464 0.284669
+v -0.167259 0.146464 0.312359
+v -0.355457 0.191081 0.312359
+v -0.167259 0.191081 0.312359
+v -0.087800 -0.174056 0.235776
+v -0.087800 0.132063 0.235776
+v -0.068925 -0.174056 0.247182
+v -0.068925 0.132063 0.247182
+v -0.068925 -0.174056 0.269995
+v -0.068925 0.132063 0.269995
+v -0.087800 -0.174056 0.281402
+v -0.087800 0.132063 0.281402
+v -0.106675 -0.174056 0.269995
+v -0.106675 0.132063 0.269995
+v -0.106675 -0.174056 0.247182
+v -0.106675 0.132063 0.247182
+v -0.087800 0.160395 0.240973
+v -0.068432 0.155675 0.251109
+v -0.068432 0.146235 0.271381
+v -0.087800 0.141516 0.281517
+v -0.107167 0.146235 0.271381
+v -0.107167 0.155675 0.251109
+v -0.087800 0.179869 0.261940
+v -0.068696 0.171806 0.267713
+v -0.068696 0.155679 0.279257
+v -0.087800 0.147615 0.285030
+v -0.106904 0.155679 0.279257
+v -0.106904 0.171806 0.267713
+v -0.087800 0.188307 0.292003
+v -0.068925 0.179107 0.292003
+v -0.068925 0.160708 0.292003
+v -0.087800 0.151509 0.292003
+v -0.106675 0.160708 0.292003
+v -0.106675 0.179107 0.292003
+v -0.087800 0.188307 0.313956
+v -0.068925 0.179107 0.313956
+v -0.068925 0.160708 0.313956
+v -0.087800 0.151509 0.313956
+v -0.106675 0.160708 0.313956
+v -0.106675 0.179107 0.313956
+v -0.362834 -0.499998 0.356887
+v -0.362834 -0.499998 0.350069
+v -0.356319 -0.499998 0.350069
+v -0.356319 -0.499998 0.356887
+v -0.362834 -0.019909 0.356887
+v -0.362834 -0.019909 0.350069
+v -0.356319 -0.019909 0.350069
+v -0.356319 -0.019909 0.356887
+vt 0.763340 0.684141
+vt 0.839007 0.684141
+vt 0.839007 0.939900
+vt 0.763340 0.939899
+vt 0.345682 0.939662
+vt 0.000000 0.939662
+vt 0.000000 0.684201
+vt 0.345682 0.684201
+vt 0.691364 0.939900
+vt 0.691364 0.684141
+vt 0.345682 0.939900
+vt 0.691364 0.684201
+vt 0.345682 0.632730
+vt 0.691364 0.632730
+vt -0.000000 1.000000
+vt 0.345682 1.000000
+vt 0.000000 0.000000
+vt 0.189123 0.000000
+vt 0.189123 0.006201
+vt 0.000000 0.006201
+vt 0.189123 0.230620
+vt 0.189123 0.149082
+vt 0.233643 0.149082
+vt 0.233642 0.000000
+vt 0.337384 0.000000
+vt 0.337384 0.230620
+vt 0.337384 0.461241
+vt 0.189123 0.461240
+vt 0.292864 0.230620
+vt 0.292864 0.379702
+vt 0.337384 0.379702
+vt 0.189123 0.236643
+vt 0.000000 0.236643
+vt 0.001829 0.236643
+vt 0.001829 0.438115
+vt 0.000000 0.438115
+vt 0.141751 0.236643
+vt 0.141751 0.438115
+vt 0.388904 0.980042
+vt 0.947914 0.980501
+vt 0.948663 0.999470
+vt 0.389654 0.999010
+vt 0.000000 0.726108
+vt 0.559441 0.726108
+vt 0.559441 0.762788
+vt 0.000000 0.762788
+vt 0.585292 0.715652
+vt 0.025938 0.715652
+vt 0.025593 0.696684
+vt 0.584948 0.696684
+vt 0.025938 0.677717
+vt 0.585292 0.677716
+vt 0.611203 0.716147
+vt 0.646793 0.749859
+vt 0.632071 0.759118
+vt 0.602592 0.732422
+vt 0.389689 0.961075
+vt 0.948699 0.961534
+vt 0.000000 0.904198
+vt 0.559441 0.904198
+vt 0.559441 0.940878
+vt 0.000000 0.940878
+vt 0.992081 0.961075
+vt 1.000000 0.980544
+vt 0.585341 0.901970
+vt 0.602592 0.934564
+vt 0.008318 0.696684
+vt 0.000000 0.677222
+vt 0.000000 0.716147
+vt 0.585341 0.765016
+vt 0.662213 0.798195
+vt 0.645415 0.798173
+vt 0.632071 0.907868
+vt 0.646793 0.917127
+vt 0.611202 0.950839
+vt 0.602599 0.889306
+vt 0.576701 0.885650
+vt 0.587848 0.880003
+vt 0.602599 0.777680
+vt 0.587848 0.786983
+vt 0.576701 0.781336
+vt 0.645415 0.868813
+vt 0.662213 0.868791
+vt 0.611791 0.868813
+vt 0.594964 0.868791
+vt 0.611791 0.798173
+vt 0.594964 0.798195
+vt 0.645415 0.833515
+vt 0.662213 0.833493
+vt 0.611791 0.833515
+vt 0.594964 0.833493
+vt 0.877375 0.655296
+vt 0.877375 0.666259
+vt 0.000000 0.666258
+vt 0.000000 0.655295
+vt 0.000000 0.648749
+vt 0.000000 0.642203
+vt 0.876699 0.642203
+vt 0.876699 0.648749
+vt 0.877375 0.677222
+vt 0.877239 0.648749
+vt 0.877239 0.655296
+vt 0.877445 0.648749
+vt 0.992045 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.082100 -0.996600
+vn 0.856300 0.038400 -0.515100
+vn 0.871000 0.000000 -0.491300
+vn 0.873900 -0.026000 0.485500
+vn 0.871000 0.000000 0.491300
+vn 0.000000 -0.038000 0.999300
+vn -0.873900 -0.026000 0.485500
+vn -0.871000 0.000000 0.491300
+vn 0.000000 0.468600 -0.883400
+vn 0.000000 0.865900 -0.500200
+vn 0.818600 0.504200 -0.275100
+vn 0.826300 0.267700 -0.495600
+vn -0.871000 0.000000 -0.491300
+vn -0.856300 0.038400 -0.515100
+vn -0.826300 0.267700 -0.495600
+vn -0.906100 -0.151900 0.394800
+vn 0.000000 -0.332600 0.943100
+vn 0.906100 -0.151900 0.394800
+vn 0.000000 0.990900 -0.134300
+vn 0.825300 0.559000 -0.079300
+vn -0.818600 0.504200 -0.275100
+vn -0.891100 -0.345300 0.294500
+vn 0.000000 -0.767400 0.641100
+vn 0.891100 -0.345300 0.294500
+vn -0.825300 0.559000 -0.079300
+vn -0.877500 -0.468700 0.101600
+vn 0.000000 -0.973800 0.227500
+vn 0.877500 -0.468700 0.101600
+vn -0.848000 0.530000 0.000000
+vn -0.848000 -0.530000 -0.000000
+vn 0.848000 -0.530000 -0.000000
+vn 0.848000 0.530000 0.000000
+vn -0.707100 0.000000 0.707100
+vn -0.707100 0.000000 -0.707100
+vn -0.577300 -0.577300 -0.577300
+vn -0.577300 -0.577300 0.577300
+vn 0.707100 0.000000 -0.707100
+vn 0.577300 -0.577300 -0.577300
+vn 0.707100 0.000000 0.707100
+vn 0.577300 -0.577300 0.577300
+g filter_Cube.006_filter
+s off
+f 29/45/15 30/46/15 26/47/15 25/48/15
+f 30/49/16 31/50/16 27/51/16 26/52/16
+f 31/48/17 32/53/17 28/54/17 27/45/17
+f 32/53/18 29/55/18 25/52/18 28/56/18
+f 25/52/19 26/57/19 27/58/19 28/56/19
+f 32/59/20 31/50/20 30/49/20 29/60/20
+f 43/61/20 44/62/20 38/63/20 37/64/20
+f 44/65/17 42/66/17 41/67/17 36/68/17 35/69/17 38/70/17
+f 43/71/15 37/72/15 34/65/15 33/73/15 40/74/15 39/75/15
+f 37/64/16 38/63/16 35/76/16 34/77/16
+f 35/77/19 36/78/19 33/79/19 34/80/19
+f 33/79/18 36/78/18 41/81/18 40/82/18
+s 1
+f 45/83/16 46/84/21 48/85/22 47/86/23
+f 47/87/23 48/88/22 50/89/24 49/90/25
+f 49/91/25 50/92/24 52/93/26 51/94/18
+f 51/94/18 52/93/26 54/95/27 53/96/28
+f 57/97/29 63/98/30 64/99/31 58/100/32
+f 55/101/33 56/102/34 46/84/21 45/83/16
+f 53/103/28 54/104/27 56/105/34 55/106/33
+f 56/102/34 62/107/35 57/108/29 46/84/21
+f 54/104/27 61/109/36 62/110/35 56/105/34
+f 52/93/26 60/111/37 61/112/36 54/95/27
+f 50/92/24 59/113/38 60/111/37 52/93/26
+f 48/88/22 58/100/32 59/114/38 50/89/24
+f 63/98/30 69/115/39 70/116/40 64/99/31
+f 62/110/35 68/117/41 63/118/30 57/119/29
+f 61/109/36 67/120/42 68/117/41 62/110/35
+f 60/121/37 66/122/43 67/120/42 61/109/36
+f 59/114/38 65/123/44 66/124/43 60/125/37
+f 58/100/32 64/99/31 65/123/44 59/114/38
+f 68/117/41 74/126/45 69/127/39 63/118/30
+f 67/120/42 73/128/46 74/126/45 68/117/41
+f 66/122/43 72/129/47 73/128/46 67/120/42
+f 65/123/44 71/130/48 72/131/47 66/124/43
+f 64/99/31 70/116/40 71/130/48 65/123/44
+f 69/127/39 74/126/45 80/132/49 75/133/20
+f 74/126/45 73/128/46 79/134/50 80/132/49
+f 73/128/46 72/129/47 78/135/19 79/134/50
+f 72/131/47 71/130/48 77/134/51 78/135/19
+f 71/130/48 70/116/40 76/132/52 77/134/51
+f 70/116/40 69/115/39 75/133/20 76/132/52
+f 85/136/53 86/137/54 82/138/55 81/139/56
+f 86/140/54 87/141/57 83/142/58 82/143/55
+f 87/112/57 88/138/59 84/137/60 83/144/58
+f 88/139/59 85/140/53 81/145/56 84/146/60
+f 81/145/56 82/147/55 83/136/58 84/146/60
+f 46/84/21 57/108/29 58/148/32 48/85/22
+o fishes-algae_Cube.001
+v -0.037177 -0.137407 0.133984
+v -0.331691 -0.137407 0.096134
+v -0.037177 -0.443943 0.133984
+v -0.331691 -0.443943 0.096134
+v 0.355968 -0.045720 0.120009
+v -0.012986 -0.045720 0.167427
+v 0.355968 -0.429736 0.120009
+v -0.012986 -0.429736 0.167427
+v 0.265530 -0.190725 -0.002159
+v 0.265530 -0.190725 0.002159
+v 0.179484 -0.178956 0.001123
+v 0.179484 -0.178956 -0.001123
+v 0.265530 -0.147625 -0.001150
+v 0.265530 -0.147625 0.001150
+v 0.179484 -0.159395 0.000598
+v 0.179484 -0.159395 -0.000599
+v 0.265530 -0.169175 -0.006530
+v 0.265530 -0.169175 0.006530
+v 0.179484 -0.169175 0.003397
+v 0.179484 -0.169175 -0.003397
+v -0.156667 -0.275667 0.025454
+v -0.156667 -0.275667 0.027823
+v -0.109468 -0.282123 0.027254
+v -0.109468 -0.282123 0.026022
+v -0.156667 -0.299308 0.026007
+v -0.156667 -0.299308 0.027269
+v -0.109468 -0.292853 0.026967
+v -0.109468 -0.292853 0.026310
+v -0.156667 -0.287488 0.023056
+v -0.156667 -0.287488 0.030220
+v -0.109468 -0.287488 0.028502
+v -0.109468 -0.287488 0.024775
+v 0.135944 -0.389451 -0.046850
+v 0.135944 -0.389451 -0.044481
+v 0.088744 -0.382995 -0.045049
+v 0.088744 -0.382995 -0.046282
+v 0.135944 -0.365810 -0.046296
+v 0.135944 -0.365810 -0.045034
+v 0.088744 -0.372265 -0.045337
+v 0.088744 -0.372265 -0.045994
+v 0.135944 -0.377630 -0.049247
+v 0.135944 -0.377630 -0.042084
+v 0.088744 -0.377630 -0.043802
+v 0.088744 -0.377630 -0.047529
+v -0.091668 -0.183560 -0.002849
+v -0.091668 -0.183560 0.002849
+v 0.021862 -0.199088 0.001482
+v 0.021862 -0.199088 -0.001482
+v -0.091668 -0.240426 -0.001518
+v -0.091668 -0.240426 0.001518
+v 0.021862 -0.224898 0.000790
+v 0.021862 -0.224898 -0.000790
+v -0.091668 -0.211993 -0.008616
+v -0.091668 -0.211993 0.008616
+v 0.021862 -0.211993 0.004482
+v 0.021862 -0.211993 -0.004482
+v -0.273523 -0.061488 0.034326
+v -0.273523 -0.061488 0.036694
+v -0.226323 -0.067943 0.036126
+v -0.226323 -0.067943 0.034894
+v -0.273523 -0.085129 0.034879
+v -0.273523 -0.085129 0.036141
+v -0.226323 -0.078673 0.035838
+v -0.226323 -0.078673 0.035182
+v -0.273523 -0.073308 0.031928
+v -0.273523 -0.073308 0.039092
+v -0.226323 -0.073308 0.037373
+v -0.226323 -0.073308 0.033647
+v 0.166458 -0.000601 -0.116305
+v 0.166458 -0.000601 -0.112537
+v 0.091370 0.009669 -0.113441
+v 0.091370 0.009669 -0.115401
+v 0.166458 0.037010 -0.115425
+v 0.166458 0.037010 -0.113417
+v 0.091370 0.026740 -0.113899
+v 0.091370 0.026740 -0.114943
+v 0.166458 0.018204 -0.120120
+v 0.166458 0.018204 -0.108723
+v 0.091370 0.018205 -0.111457
+v 0.091370 0.018205 -0.117386
+v -0.290799 -0.343810 -0.179388
+v -0.290799 -0.343810 -0.177020
+v -0.243600 -0.350266 -0.177588
+v -0.243600 -0.350266 -0.178820
+v -0.290799 -0.367452 -0.178835
+v -0.290799 -0.367452 -0.177573
+v -0.243600 -0.360996 -0.177876
+v -0.243600 -0.360996 -0.178532
+v -0.290799 -0.355631 -0.181786
+v -0.290799 -0.355631 -0.174622
+v -0.243600 -0.355631 -0.176341
+v -0.243600 -0.355631 -0.180068
+v 0.298260 -0.253874 -0.149797
+v 0.298260 -0.253874 -0.147429
+v 0.251061 -0.247418 -0.147997
+v 0.251061 -0.247418 -0.149229
+v 0.298260 -0.230232 -0.149244
+v 0.298260 -0.230232 -0.147982
+v 0.251061 -0.236688 -0.148285
+v 0.251061 -0.236688 -0.148941
+v 0.298260 -0.242053 -0.152195
+v 0.298260 -0.242053 -0.145031
+v 0.251061 -0.242053 -0.146750
+v 0.251061 -0.242053 -0.150476
+vt 0.500000 0.500000
+vt 0.500000 -0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt -0.000000 0.500000
+vt 0.000000 -0.000000
+vt 0.030927 0.875000
+vt 0.030927 0.829388
+vt 0.219073 0.875000
+vt 0.219073 0.854299
+vt 0.219073 0.895702
+vt 0.030927 0.920612
+vt 0.676602 0.625000
+vt 0.676602 0.650020
+vt 0.573398 0.625000
+vt 0.573398 0.636355
+vt 0.573398 0.613644
+vt 0.676602 0.599980
+vt 0.323398 0.625000
+vt 0.323398 0.599980
+vt 0.426602 0.625000
+vt 0.426602 0.613644
+vt 0.426602 0.636355
+vt 0.323398 0.650020
+vt 0.749121 0.875000
+vt 0.749121 0.935181
+vt 0.500879 0.875000
+vt 0.500879 0.902314
+vt 0.500879 0.847686
+vt 0.749121 0.814819
+vt 0.926602 0.875000
+vt 0.926602 0.900020
+vt 0.823398 0.875000
+vt 0.823398 0.886355
+vt 0.823398 0.863645
+vt 0.926602 0.849980
+vt 0.292907 0.875000
+vt 0.292907 0.835196
+vt 0.457093 0.875000
+vt 0.457093 0.856935
+vt 0.457093 0.893065
+vt 0.292907 0.914803
+vt 0.926602 0.625000
+vt 0.926602 0.650020
+vt 0.823398 0.625000
+vt 0.823398 0.636356
+vt 0.823398 0.613645
+vt 0.926602 0.599980
+vt 0.073398 0.625000
+vt 0.073398 0.599980
+vt 0.176602 0.625000
+vt 0.176602 0.613645
+vt 0.176602 0.636355
+vt 0.073398 0.650020
+vn 0.127500 0.000000 -0.991800
+vn -0.127500 0.000000 -0.991800
+vn 0.646900 0.017500 -0.762400
+vn 0.646900 0.017500 0.762400
+vn 0.544400 -0.666600 0.509100
+vn 0.544400 -0.666600 -0.509100
+vn -0.667400 0.017300 0.744400
+vn -0.633200 -0.585200 0.506500
+vn -0.667400 0.017300 -0.744400
+vn -0.633200 -0.585200 -0.506500
+vn -0.635900 0.595200 -0.491200
+vn -0.635900 0.595200 0.491200
+vn 0.547500 0.676500 0.492400
+vn 0.547500 0.676500 -0.492400
+vn -0.646900 -0.017500 -0.762400
+vn -0.646900 -0.017500 0.762400
+vn -0.544400 0.666600 0.509100
+vn -0.544400 0.666600 -0.509100
+vn 0.667400 -0.017300 0.744400
+vn 0.633200 0.585200 0.506500
+vn 0.667400 -0.017300 -0.744400
+vn 0.633200 0.585200 -0.506500
+vn 0.635900 -0.595200 -0.491200
+vn 0.635900 -0.595200 0.491200
+vn -0.547500 -0.676500 0.492400
+vn -0.547500 -0.676500 -0.492400
+g fishes-algae_Cube.001_fishes-algae
+s off
+f 89/149/61 91/150/61 92/151/61 90/152/61
+f 93/153/62 95/154/62 96/150/62 94/149/62
+s 1
+f 105/155/63 106/155/64 98/156/65 97/156/66
+f 106/155/64 107/157/67 99/158/68 98/156/65
+f 107/157/67 108/157/69 100/158/70 99/158/68
+f 108/157/69 105/155/63 97/156/66 100/158/70
+f 97/156/66 98/156/65 99/158/68 100/158/70
+f 104/159/71 103/159/72 102/160/73 101/160/74
+f 101/160/74 102/160/73 106/155/64 105/155/63
+f 102/160/73 103/159/72 107/157/67 106/155/64
+f 103/159/72 104/159/71 108/157/69 107/157/67
+f 104/159/71 101/160/74 105/155/63 108/157/69
+f 117/161/75 118/161/76 110/162/77 109/162/78
+f 118/161/76 119/163/79 111/164/80 110/162/77
+f 119/163/79 120/163/81 112/164/82 111/164/80
+f 120/163/81 117/161/75 109/162/78 112/164/82
+f 109/162/78 110/162/77 111/164/80 112/164/82
+f 116/165/83 115/165/84 114/166/85 113/166/86
+f 113/166/86 114/166/85 118/161/76 117/161/75
+f 114/166/85 115/165/84 119/163/79 118/161/76
+f 115/165/84 116/165/83 120/163/81 119/163/79
+f 116/165/83 113/166/86 117/161/75 120/163/81
+f 129/167/63 130/167/64 122/168/65 121/168/66
+f 130/167/64 131/169/67 123/170/68 122/168/65
+f 131/169/67 132/169/69 124/170/70 123/170/68
+f 132/169/69 129/167/63 121/168/66 124/170/70
+f 121/168/66 122/168/65 123/170/68 124/170/70
+f 128/171/71 127/171/72 126/172/73 125/172/74
+f 125/172/74 126/172/73 130/167/64 129/167/63
+f 126/172/73 127/171/72 131/169/67 130/167/64
+f 127/171/72 128/171/71 132/169/69 131/169/67
+f 128/171/71 125/172/74 129/167/63 132/169/69
+f 141/173/75 142/173/76 134/174/77 133/174/78
+f 142/173/76 143/175/79 135/176/80 134/174/77
+f 143/175/79 144/175/81 136/176/82 135/176/80
+f 144/175/81 141/173/75 133/174/78 136/176/82
+f 133/174/78 134/174/77 135/176/80 136/176/82
+f 140/177/83 139/177/84 138/178/85 137/178/86
+f 137/178/86 138/178/85 142/173/76 141/173/75
+f 138/178/85 139/177/84 143/175/79 142/173/76
+f 139/177/84 140/177/83 144/175/81 143/175/79
+f 140/177/83 137/178/86 141/173/75 144/175/81
+f 153/179/75 154/179/76 146/180/77 145/180/78
+f 154/179/76 155/181/79 147/182/80 146/180/77
+f 155/181/79 156/181/81 148/182/82 147/182/80
+f 156/181/81 153/179/75 145/180/78 148/182/82
+f 145/180/78 146/180/77 147/182/80 148/182/82
+f 152/183/83 151/183/84 150/184/85 149/184/86
+f 149/184/86 150/184/85 154/179/76 153/179/75
+f 150/184/85 151/183/84 155/181/79 154/179/76
+f 151/183/84 152/183/83 156/181/81 155/181/79
+f 152/183/83 149/184/86 153/179/75 156/181/81
+f 165/185/63 166/185/64 158/186/65 157/186/66
+f 166/185/64 167/187/67 159/188/68 158/186/65
+f 167/187/67 168/187/69 160/188/70 159/188/68
+f 168/187/69 165/185/63 157/186/66 160/188/70
+f 157/186/66 158/186/65 159/188/68 160/188/70
+f 164/189/71 163/189/72 162/190/73 161/190/74
+f 161/190/74 162/190/73 166/185/64 165/185/63
+f 162/190/73 163/189/72 167/187/67 166/185/64
+f 163/189/72 164/189/71 168/187/69 167/187/67
+f 164/189/71 161/190/74 165/185/63 168/187/69
+f 177/191/75 178/191/76 170/192/77 169/192/78
+f 178/191/76 179/193/79 171/194/80 170/192/77
+f 179/193/79 180/193/81 172/194/82 171/194/80
+f 180/193/81 177/191/75 169/192/78 172/194/82
+f 169/192/78 170/192/77 171/194/80 172/194/82
+f 176/195/83 175/195/84 174/196/85 173/196/86
+f 173/196/86 174/196/85 178/191/76 177/191/75
+f 174/196/85 175/195/84 179/193/79 178/191/76
+f 175/195/84 176/195/83 180/193/81 179/193/79
+f 176/195/83 173/196/86 177/191/75 180/193/81
+f 189/197/63 190/197/64 182/198/65 181/198/66
+f 190/197/64 191/199/67 183/200/68 182/198/65
+f 191/199/67 192/199/69 184/200/70 183/200/68
+f 192/199/69 189/197/63 181/198/66 184/200/70
+f 181/198/66 182/198/65 183/200/68 184/200/70
+f 188/201/71 187/201/72 186/202/73 185/202/74
+f 185/202/74 186/202/73 190/197/64 189/197/63
+f 186/202/73 187/201/72 191/199/67 190/197/64
+f 187/201/72 188/201/71 192/199/69 191/199/67
+f 188/201/71 185/202/74 189/197/63 192/199/69
+o gravel-stone_Plane.008
+v 0.315382 -0.341614 -0.018744
+v 0.300898 -0.370402 0.075791
+v 0.250033 -0.389519 -0.034640
+v 0.291965 -0.373437 -0.122742
+v 0.371613 -0.380137 -0.066342
+v 0.376038 -0.364604 0.056198
+v 0.275600 -0.352679 -0.028287
+v 0.306141 -0.349470 0.036716
+v 0.268182 -0.383257 0.027439
+v 0.341794 -0.362983 0.080766
+v 0.350307 -0.346062 0.025199
+v 0.300891 -0.351254 -0.079978
+v 0.261836 -0.371384 -0.089416
+v 0.347063 -0.347165 -0.046921
+v 0.333299 -0.365870 -0.108050
+v 0.383811 -0.374335 -0.002712
+v 0.325584 -0.401572 0.098671
+v 0.369751 -0.398164 0.087155
+v 0.249966 -0.422528 0.000770
+v 0.280507 -0.419319 0.065774
+v 0.270917 -0.408548 -0.123202
+v 0.246721 -0.423630 -0.071351
+v 0.362351 -0.414708 -0.101502
+v 0.315083 -0.405140 -0.134718
+v 0.396138 -0.410397 0.035623
+v 0.392893 -0.411499 -0.036498
+v -0.327265 -0.358234 -0.163275
+v -0.386078 -0.370934 -0.142210
+v -0.343324 -0.388474 -0.207781
+v -0.280028 -0.384663 -0.210296
+v -0.285568 -0.388340 -0.144492
+v -0.350383 -0.370851 -0.103096
+v -0.335794 -0.364740 -0.190289
+v -0.361352 -0.359722 -0.151347
+v -0.371091 -0.381208 -0.177225
+v -0.374940 -0.367138 -0.115974
+v -0.340371 -0.359673 -0.128356
+v -0.299017 -0.367792 -0.191367
+v -0.308029 -0.380275 -0.217928
+v -0.301846 -0.364661 -0.153089
+v -0.274081 -0.380196 -0.180728
+v -0.316162 -0.381081 -0.117034
+v -0.392888 -0.390868 -0.120169
+v -0.371907 -0.390819 -0.097178
+v -0.365229 -0.408020 -0.196706
+v -0.390787 -0.403003 -0.157763
+v -0.289199 -0.407057 -0.223199
+v -0.326704 -0.413008 -0.221440
+v -0.271775 -0.412880 -0.161248
+v -0.268219 -0.407008 -0.200209
+v -0.335858 -0.402875 -0.097572
+v -0.297333 -0.407863 -0.122305
+v 0.042178 -0.378028 0.072190
+v -0.002185 -0.404144 0.057129
+v 0.058160 -0.398029 0.033944
+v 0.099663 -0.380938 0.063631
+v 0.068709 -0.395710 0.105185
+v 0.004335 -0.402711 0.101158
+v 0.049784 -0.380596 0.049700
+v 0.015154 -0.388506 0.063332
+v 0.025137 -0.403288 0.040855
+v -0.007090 -0.403014 0.080359
+v 0.018986 -0.387663 0.089212
+v 0.075019 -0.374866 0.067154
+v 0.083573 -0.382307 0.044669
+v 0.055984 -0.379233 0.091574
+v 0.089773 -0.380944 0.086543
+v 0.035170 -0.401083 0.108609
+v -0.011226 -0.424855 0.068403
+v -0.007393 -0.424013 0.094283
+v 0.043868 -0.419919 0.030358
+v 0.009238 -0.427829 0.043991
+v 0.104672 -0.398417 0.050168
+v 0.080866 -0.411489 0.032721
+v 0.108504 -0.397575 0.076047
+v -0.103195 -0.367590 -0.076236
+v -0.174172 -0.396537 -0.122640
+v -0.069784 -0.423197 -0.116477
+v -0.015611 -0.400204 -0.047773
+v -0.091183 -0.390695 -0.003483
+v -0.187397 -0.376450 -0.052806
+v -0.081328 -0.385283 -0.103710
+v -0.143732 -0.376653 -0.105537
+v -0.124827 -0.414276 -0.127932
+v -0.193224 -0.381861 -0.091765
+v -0.151505 -0.364847 -0.064490
+v -0.050533 -0.378809 -0.061532
+v -0.029847 -0.404453 -0.086979
+v -0.093906 -0.366179 -0.037293
+v -0.042425 -0.385349 -0.020563
+v -0.145179 -0.383365 -0.020469
+v -0.204445 -0.419588 -0.106442
+v -0.212219 -0.407781 -0.065394
+v -0.162853 -0.444198 -0.127629
+v -0.010272 -0.435706 -0.059478
+v -0.042848 -0.454159 -0.098603
+v -0.063200 -0.423248 0.008861
+v -0.018046 -0.423899 -0.018431
+v -0.183205 -0.413286 -0.020164
+v -0.125605 -0.414618 0.007033
+v -0.478547 -0.472347 -0.268548
+v -0.478547 -0.472347 -0.291887
+v -0.455208 -0.472347 -0.291887
+v 0.478447 -0.393881 -0.291887
+v 0.455108 -0.393881 -0.291887
+v -0.478547 -0.472347 0.291646
+v -0.478547 -0.472347 0.268306
+v -0.455208 -0.393881 0.291646
+v -0.455208 -0.472347 0.291646
+v -0.478547 -0.393881 0.268306
+v 0.455108 -0.472347 -0.291887
+v 0.478447 -0.472347 -0.291887
+v 0.478447 -0.472347 -0.268548
+v -0.455208 -0.393881 -0.291887
+v 0.455108 -0.472347 0.291646
+v -0.478547 -0.393881 -0.291887
+v 0.478447 -0.472347 0.268306
+v 0.478447 -0.472347 0.291646
+v -0.478547 -0.393881 -0.268548
+v 0.478447 -0.393881 -0.268548
+v 0.455108 -0.393881 0.291646
+v 0.478447 -0.393881 0.268306
+v 0.478447 -0.393881 0.291646
+v -0.478547 -0.393881 0.291646
+v -0.455208 -0.393881 0.268306
+v -0.455208 -0.393881 -0.268548
+v 0.455108 -0.393881 -0.268548
+v 0.455108 -0.393881 0.268306
+v -0.000050 -0.393881 0.268306
+v -0.000050 -0.375071 0.291646
+v -0.478547 -0.393881 -0.000121
+v -0.455208 -0.393881 -0.000121
+v 0.478447 -0.375071 -0.000121
+v 0.455108 -0.393881 -0.000121
+v -0.000050 -0.375071 -0.291887
+v -0.000050 -0.393881 -0.268548
+v -0.000050 -0.415139 -0.000121
+v 0.227529 -0.407051 0.268306
+v 0.227529 -0.393881 0.291646
+v -0.478547 -0.375071 0.134092
+v -0.455208 -0.393881 0.134092
+v 0.478447 -0.393881 0.134092
+v 0.455108 -0.385500 0.134092
+v 0.227529 -0.393881 -0.291887
+v 0.227529 -0.400536 -0.268548
+v -0.227629 -0.393881 0.268306
+v -0.227629 -0.393881 0.291646
+v -0.478547 -0.393881 -0.134334
+v -0.455208 -0.375071 -0.134334
+v 0.478447 -0.393881 -0.134334
+v 0.455108 -0.385500 -0.134334
+v -0.227629 -0.393881 -0.291887
+v -0.227629 -0.400536 -0.268548
+v -0.227629 -0.415139 -0.000121
+v 0.227529 -0.393881 -0.000121
+v -0.000050 -0.393881 0.134092
+v -0.000050 -0.393881 -0.134334
+v 0.227529 -0.375071 -0.134334
+v 0.227529 -0.375071 0.134092
+v -0.227629 -0.375071 0.134092
+v -0.227629 -0.393881 -0.134334
+vt 0.068582 0.106280
+vt 0.000000 0.111965
+vt 0.095358 0.041031
+vt 0.248095 0.473625
+vt 0.284263 0.428259
+vt 0.331886 0.473625
+vt 0.015069 0.177735
+vt 0.119741 0.147447
+vt 0.169361 0.062959
+vt 0.174940 0.434670
+vt 0.428377 0.174835
+vt 0.348665 0.131664
+vt 0.449710 0.096657
+vt 0.806614 0.363180
+vt 0.720712 0.387499
+vt 0.737568 0.329187
+vt 0.198322 0.183664
+vt 0.203685 0.231743
+vt 0.079540 0.221193
+vt 0.262687 0.036474
+vt 0.348665 0.076319
+vt 0.253888 0.109866
+vt 0.495776 0.032501
+vt 0.369803 0.047670
+vt 0.435442 0.000000
+vt 0.819769 0.412369
+vt 0.299043 0.160808
+vt 0.313540 0.007099
+vt 0.529216 0.162999
+vt 0.550354 0.079006
+vt 0.209450 0.000000
+vt 0.840555 0.324433
+vt 0.550354 0.220859
+vt 0.481146 0.239076
+vt 0.000189 0.231743
+vt 0.219377 0.383727
+vt 0.323697 0.386955
+vt 0.401240 0.277759
+vt 0.348665 0.219335
+vt 0.897848 0.429409
+vt 0.897848 0.369428
+vt 0.455780 0.324666
+vt 0.389527 0.332393
+vt 0.460835 0.294345
+vt 0.601924 0.430168
+vt 0.604611 0.464635
+vt 0.550354 0.430122
+vt 0.412556 0.365101
+vt 0.498097 0.347268
+vt 0.527934 0.303538
+vt 0.667070 0.447561
+vt 0.234023 0.311584
+vt 0.174940 0.291364
+vt 0.235744 0.266288
+vt 0.302906 0.379321
+vt 0.239848 0.383727
+vt 0.281906 0.350454
+vt 0.535352 0.377687
+vt 0.512691 0.415362
+vt 0.457235 0.392245
+vt 0.896788 0.206488
+vt 0.977239 0.220723
+vt 0.916941 0.250354
+vt 0.662466 0.401344
+vt 0.191126 0.344975
+vt 0.386261 0.401186
+vt 0.423590 0.426354
+vt 0.356491 0.417161
+vt 0.917216 0.293522
+vt 0.977239 0.272769
+vt 0.960687 0.313000
+vt 0.940258 0.178253
+vt 0.300346 0.303002
+vt 0.302906 0.257588
+vt 0.258350 0.231743
+vt 0.869731 0.180703
+vt 0.852038 0.225506
+vt 0.535352 0.277759
+vt 0.348665 0.377371
+vt 0.852038 0.277552
+vt 0.667070 0.479999
+vt 0.177500 0.245950
+vt 0.584574 0.391167
+vt 0.720712 0.246238
+vt 0.752177 0.234122
+vt 0.736887 0.279405
+vt 0.351981 0.470048
+vt 0.398435 0.456435
+vt 0.392379 0.487160
+vt 0.948700 0.341216
+vt 0.947896 0.369975
+vt 0.897848 0.354002
+vt 1.000000 0.351700
+vt 0.982154 0.324433
+vt 0.348665 0.439580
+vt 0.809456 0.228114
+vt 0.852038 0.252110
+vt 0.795866 0.269234
+vt 0.948700 0.398097
+vt 0.919917 0.418599
+vt 0.897848 0.387436
+vt 0.766906 0.303985
+vt 0.836748 0.297393
+vt 0.795471 0.324433
+vt 0.852038 0.207049
+vt 0.983050 0.417177
+vt 0.449983 0.447546
+vt 0.449983 0.473934
+vt 0.439679 0.499818
+vt 0.779329 0.195155
+vt 0.923970 0.067164
+vt 0.976849 0.076478
+vt 0.938875 0.108250
+vt 1.000000 0.385134
+vt 0.925103 0.022563
+vt 0.961556 0.000000
+vt 0.976871 0.035023
+vt 0.406269 0.426354
+vt 0.820211 0.178253
+vt 0.685107 0.138507
+vt 0.754241 0.107867
+vt 0.765496 0.165761
+vt 0.110975 0.269504
+vt 0.153299 0.237108
+vt 0.174940 0.298959
+vt 0.646095 0.084578
+vt 0.590514 0.128080
+vt 0.664308 0.178253
+vt 0.054379 0.231743
+vt 0.616784 0.035559
+vt 0.659078 0.000000
+vt 0.714081 0.047355
+vt 0.638782 0.293017
+vt 0.701278 0.337498
+vt 0.576917 0.348095
+vt 0.610084 0.178253
+vt 0.720712 0.195999
+vt 0.637059 0.228412
+vt 0.000000 0.289393
+vt 0.557890 0.012492
+vt 0.720712 0.262014
+vt 0.854474 0.034652
+vt 0.765496 0.058013
+vt 0.769025 0.000000
+vt 0.174940 0.373484
+vt 0.083548 0.394658
+vt 0.082264 0.331396
+vt 0.851740 0.083189
+vt 0.923970 0.041656
+vt 0.923970 0.091572
+vt 0.153301 0.432218
+vt 0.550354 0.281799
+vt 0.550354 0.067568
+vt 0.550354 0.215785
+vt 0.765496 0.107929
+vt 0.765496 0.013371
+vt 0.026952 0.425218
+vt 0.641135 0.391167
+vt 0.976871 0.130571
+vt 0.024440 0.781660
+vt 0.975560 0.781660
+vt 0.500000 0.883297
+vt 0.270458 0.670230
+vt 0.729542 0.670230
+vt 0.500000 0.753415
+vt 0.975560 0.892548
+vt 0.500000 0.994185
+vt 0.024440 0.892548
+vt 0.000000 0.750000
+vt 0.000000 0.634999
+vt 0.024388 0.634999
+vt 0.024388 0.750000
+vt 0.262194 0.519999
+vt 0.262194 0.500000
+vt 0.500000 0.500000
+vt 0.500000 0.519999
+vt 1.000000 0.634999
+vt 1.000000 0.750000
+vt 0.975612 0.750000
+vt 0.975612 0.634999
+vt 0.262194 0.865001
+vt 0.262194 0.980001
+vt 0.024388 0.980001
+vt 0.024388 0.865001
+vt 0.262194 0.634999
+vt 0.262194 0.750000
+vt 0.737806 0.634999
+vt 0.737806 0.750000
+vt 0.500000 0.750000
+vt 0.500000 0.634999
+vt 0.737806 0.865001
+vt 0.737806 0.980001
+vt 0.500000 0.980001
+vt 0.500000 0.865001
+vt 0.737806 1.000000
+vt 0.500000 1.000000
+vt 0.975612 0.980001
+vt 0.975612 1.000000
+vt 0.000000 0.865001
+vt 0.024388 0.519999
+vt 0.000000 0.519999
+vt 0.000000 0.500000
+vt 0.024388 0.500000
+vt 1.000000 0.980001
+vt 1.000000 1.000000
+vt 0.024388 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.980001
+vt 0.737806 0.500000
+vt 0.737806 0.519999
+vt 1.000000 0.865001
+vt 0.975612 0.865001
+vt 0.262194 1.000000
+vt 0.975612 0.519999
+vt 0.975612 0.500000
+vt 1.000000 0.500000
+vt 1.000000 0.519999
+vt 0.500000 0.646573
+vt 0.385229 0.646573
+vt 0.270458 0.579473
+vt 0.262220 0.863644
+vt 0.024440 0.863644
+vt 0.737780 0.863644
+vt 0.975560 0.863644
+vt 0.385229 0.737330
+vt 0.270458 0.737330
+vt 0.614771 0.737330
+vt 0.729542 0.737330
+vt 0.737780 0.974532
+vt 0.975560 0.974532
+vt 0.262220 0.974532
+vt 0.024440 0.974532
+vt 0.729542 0.579473
+vt 0.729542 0.646573
+vt 0.614771 0.662658
+vt 0.270458 0.646573
+vn -0.079300 0.996800 -0.009600
+vn -0.581300 0.812100 0.049300
+vn -0.346700 0.897900 0.271200
+vn -0.535200 0.549500 0.641500
+vn 0.120600 0.722600 0.680700
+vn -0.147000 0.947300 -0.284500
+vn 0.411600 0.889500 -0.198200
+vn 0.302300 0.947000 0.108900
+vn -0.215200 0.320200 0.922600
+vn -0.900000 0.430200 0.070800
+vn -0.925100 0.217900 0.310900
+vn -0.838100 0.422000 0.345600
+vn -0.242600 0.606300 -0.757300
+vn -0.672400 0.251000 -0.696400
+vn -0.747500 0.578900 -0.325700
+vn 0.802500 0.467500 -0.370500
+vn 0.744200 0.288600 -0.602400
+vn 0.410200 0.670700 -0.617900
+vn 0.691500 0.641700 0.331600
+vn 0.942400 0.305700 0.135500
+vn 0.832100 0.550000 -0.070600
+vn -0.801200 0.172200 0.573100
+vn 0.213000 0.321500 -0.922600
+vn 0.920600 0.321700 -0.221300
+vn 0.582200 0.380300 0.718700
+vn -0.950400 0.189800 -0.246200
+vn 0.078800 0.994100 -0.074500
+vn -0.236900 0.849800 -0.470800
+vn -0.311700 0.936800 -0.158600
+vn -0.762700 0.632100 -0.136200
+vn -0.468100 0.771700 0.430600
+vn 0.288700 0.919500 -0.266800
+vn 0.474400 0.844400 0.248500
+vn 0.148700 0.939300 0.309200
+vn -0.872200 0.409500 0.267600
+vn -0.482700 0.397600 -0.780300
+vn -0.671000 0.257200 -0.695400
+vn -0.674000 0.504800 -0.539300
+vn 0.618900 0.536800 -0.573400
+vn 0.325500 0.219600 -0.919700
+vn -0.002700 0.589200 -0.807900
+vn 0.776700 0.388800 0.495400
+vn 0.926700 0.185700 0.326800
+vn 0.815000 0.578200 0.038500
+vn 0.104800 0.639900 0.761200
+vn 0.370900 0.273800 0.887400
+vn 0.533100 0.504300 0.679300
+vn -0.879000 0.272700 -0.391300
+vn -0.302200 0.195700 -0.932900
+vn 0.939600 0.211400 -0.269200
+vn 0.688800 0.252500 0.679500
+vn -0.320100 0.414400 0.851900
+vn -0.223000 0.974800 0.001400
+vn -0.198100 0.840500 -0.504200
+vn -0.458400 0.841800 -0.284900
+vn -0.723500 0.445200 -0.527600
+vn -0.839000 0.533400 0.107200
+vn 0.072100 0.996500 -0.043000
+vn -0.049400 0.872200 0.486500
+vn -0.363200 0.862500 0.352200
+vn -0.956700 0.134000 -0.258500
+vn -0.066300 0.413300 -0.908100
+vn -0.219100 0.219900 -0.950600
+vn -0.388300 0.426800 -0.816700
+vn 0.627700 0.769400 -0.117900
+vn 0.687500 0.452200 -0.568200
+vn 0.257200 0.711100 -0.654300
+vn -0.564000 0.127800 -0.815800
+vn 0.221700 0.287800 -0.931700
+vn 0.838600 0.463000 0.287200
+vn -0.573200 0.662400 0.482300
+vn 0.160400 0.599100 0.784500
+vn 0.456600 0.695900 0.554200
+vn -0.156300 0.697800 0.699000
+vn -0.929800 0.212600 0.300400
+vn 0.138300 0.958500 -0.249100
+vn 0.289700 0.682300 -0.671200
+vn -0.015600 0.813700 -0.581100
+vn -0.306400 0.438800 -0.844700
+vn -0.601700 0.729300 -0.325600
+vn 0.418500 0.891000 -0.176000
+vn 0.085400 0.958000 0.273800
+vn -0.147300 0.988600 0.030700
+vn -0.715600 0.274400 -0.642300
+vn 0.848500 0.528900 0.012500
+vn 0.945400 0.099600 -0.310500
+vn 0.687100 0.411200 -0.599000
+vn 0.035000 0.629400 0.776300
+vn 0.264200 0.431900 0.862400
+vn 0.458800 0.733600 0.501200
+vn -0.551300 0.768900 0.323800
+vn -0.524000 0.496800 0.691900
+vn -0.258400 0.717600 0.646700
+vn -0.243600 0.043600 -0.968900
+vn 0.778900 0.342700 0.525100
+vn -0.177400 0.509000 0.842300
+vn -0.867700 0.485400 0.107400
+vn 0.420300 0.286500 -0.861000
+vn 0.086100 0.403200 -0.911000
+vn 0.676200 -0.004600 -0.736700
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 0.868100 -0.496400
+vn 1.000000 -0.000000 0.000000
+vn 0.608100 0.793800 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.009600 0.863600 0.504100
+vn -0.748400 0.663300 0.000000
+vn -0.538800 0.842400 0.000000
+vn 0.181900 0.983100 -0.019900
+vn 0.024200 0.999700 0.000200
+vn -0.009700 0.998200 -0.059500
+vn -0.015000 0.753800 0.656900
+vn 0.013000 0.979900 -0.198800
+vn 0.728500 0.684600 0.023900
+vn -0.097000 0.995300 0.000000
+vn -0.006100 0.999500 0.029500
+vn 0.032300 0.998400 0.046500
+vn 0.001700 0.991700 0.128100
+vn -0.077200 0.997000 -0.004600
+vn -0.149900 0.988600 0.013900
+vn 0.011400 0.998300 -0.057600
+vn 0.033600 0.999300 -0.016700
+vn -0.020700 0.999800 0.004600
+vn -0.032500 0.999500 0.000000
+vn -0.033600 0.999300 -0.016900
+vn -0.004500 0.998900 -0.046500
+vn -0.020700 0.999800 0.007200
+vn 0.004200 0.994700 0.103000
+vn -0.010700 0.975500 0.219600
+vn -0.032300 0.998400 0.046600
+vn 0.015000 0.796500 -0.604400
+vn 0.042900 0.999100 -0.003700
+vn -0.006700 0.918100 -0.396300
+vn -0.829200 0.559000 0.000000
+vn 0.084200 0.995800 0.034200
+vn -0.348200 0.936900 0.031600
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.894400 0.447200
+vn 0.510100 0.860000 -0.013300
+vn 0.006700 0.918100 -0.396300
+vn -0.580300 0.813900 -0.027400
+vn 0.014500 0.832400 0.553900
+vn 0.003000 0.989000 -0.147800
+vn 0.728500 0.684600 -0.023900
+vn -0.002400 0.999700 -0.023400
+vn -0.015000 0.796500 -0.604400
+vn 0.036200 0.999100 -0.023300
+vn -0.013300 0.937400 0.348100
+vn 0.510100 0.860000 0.013300
+vn -1.000000 -0.000000 0.000000
+g gravel-stone_Plane.008_gravel-stone
+s 1
+f 193/203/87 199/204/88 200/205/89
+f 194/206/90 202/207/91 200/208/89
+f 193/203/87 204/209/92 199/204/88
+f 193/203/87 206/210/93 204/209/92
+f 193/203/87 203/211/94 206/210/93
+f 194/206/90 209/212/95 202/207/91
+f 195/213/96 211/214/97 201/215/98
+f 196/216/99 213/217/100 205/218/101
+f 197/219/102 215/220/103 207/221/104
+f 198/222/105 217/223/106 208/224/107
+f 194/225/90 212/226/108 209/227/95
+f 196/216/99 216/228/109 213/217/100
+f 197/219/102 218/229/110 215/220/103
+f 198/222/105 210/230/111 217/223/106
+f 199/231/88 195/213/96 201/215/98
+f 199/231/88 201/215/98 200/232/89
+f 200/232/89 201/215/98 194/225/90
+f 202/233/91 198/222/105 203/211/94
+f 202/233/91 203/211/94 200/205/89
+f 200/205/89 203/211/94 193/203/87
+f 204/234/92 196/216/99 205/218/101
+f 204/235/92 205/236/101 199/231/88
+f 199/231/88 205/236/101 195/213/96
+f 206/210/93 197/219/102 207/221/104
+f 206/210/93 207/221/104 204/209/92
+f 204/209/92 207/221/104 196/237/99
+f 203/211/94 198/222/105 208/224/107
+f 203/211/94 208/224/107 206/210/93
+f 206/210/93 208/224/107 197/219/102
+f 209/212/95 210/238/111 202/207/91
+f 202/207/91 210/238/111 198/239/105
+f 211/214/97 212/226/108 201/215/98
+f 201/215/98 212/226/108 194/225/90
+f 213/240/100 214/241/112 205/236/101
+f 205/236/101 214/241/112 195/213/96
+f 215/242/103 216/228/109 207/243/104
+f 207/243/104 216/228/109 196/216/99
+f 217/223/106 218/229/110 208/224/107
+f 208/224/107 218/229/110 197/219/102
+f 219/244/113 225/245/114 226/246/115
+f 220/247/116 228/248/117 226/249/115
+f 219/244/113 230/250/118 225/245/114
+f 219/244/113 232/251/119 230/250/118
+f 219/244/113 229/252/120 232/251/119
+f 220/247/116 235/253/121 228/248/117
+f 221/254/122 237/255/123 227/256/124
+f 222/257/125 239/258/126 231/259/127
+f 223/260/128 241/261/129 233/262/130
+f 224/263/131 243/264/132 234/265/133
+f 220/247/116 238/266/134 235/253/121
+f 221/254/122 240/267/135 237/255/123
+f 222/268/125 242/269/136 239/270/126
+f 223/271/128 244/272/137 241/273/129
+f 224/263/131 236/274/138 243/264/132
+f 225/275/114 221/254/122 227/256/124
+f 225/275/114 227/256/124 226/276/115
+f 226/276/115 227/256/124 220/277/116
+f 228/278/117 224/263/131 229/279/120
+f 228/280/117 229/252/120 226/246/115
+f 226/246/115 229/252/120 219/244/113
+f 230/250/118 222/268/125 231/281/127
+f 230/250/118 231/281/127 225/245/114
+f 225/275/114 231/259/127 221/254/122
+f 232/251/119 223/260/128 233/262/130
+f 232/251/119 233/262/130 230/250/118
+f 230/250/118 233/262/130 222/268/125
+f 229/279/120 224/263/131 234/265/133
+f 229/279/120 234/265/133 232/282/119
+f 232/282/119 234/265/133 223/271/128
+f 235/253/121 236/283/138 228/248/117
+f 228/278/117 236/274/138 224/263/131
+f 237/255/123 238/284/134 227/256/124
+f 227/285/124 238/266/134 220/247/116
+f 239/258/126 240/267/135 231/259/127
+f 231/259/127 240/267/135 221/254/122
+f 241/261/129 242/269/136 233/262/130
+f 233/262/130 242/269/136 222/268/125
+f 243/264/132 244/272/137 234/265/133
+f 234/265/133 244/272/137 223/271/128
+f 245/286/139 251/287/140 252/288/141
+f 246/289/142 254/290/143 252/291/141
+f 245/292/139 256/293/144 251/294/140
+f 245/292/139 258/295/145 256/293/144
+f 245/292/139 255/296/146 258/295/145
+f 246/289/142 261/297/147 254/290/143
+f 247/298/148 263/299/149 253/300/150
+f 248/301/151 265/302/152 257/303/153
+f 246/304/142 264/305/154 261/306/147
+f 247/298/148 266/307/155 263/299/149
+f 248/301/151 267/308/156 265/302/152
+f 251/287/140 247/298/148 253/300/150
+f 251/287/140 253/300/150 252/288/141
+f 252/288/141 253/300/150 246/304/142
+f 254/290/143 250/309/157 255/310/146
+f 254/290/143 255/310/146 252/291/141
+f 252/291/141 255/310/146 245/311/139
+f 256/293/144 248/301/151 257/303/153
+f 256/293/144 257/303/153 251/294/140
+f 251/287/140 257/312/153 247/298/148
+f 258/313/145 249/314/158 259/315/159
+f 258/295/145 259/316/159 256/293/144
+f 256/293/144 259/316/159 248/301/151
+f 255/317/146 250/318/157 260/319/160
+f 255/317/146 260/319/160 258/313/145
+f 258/313/145 260/319/160 249/314/158
+f 261/297/147 262/320/161 254/290/143
+f 254/290/143 262/320/161 250/309/157
+f 263/299/149 264/305/154 253/300/150
+f 253/300/150 264/305/154 246/304/142
+f 265/321/152 266/307/155 257/312/153
+f 257/312/153 266/307/155 247/298/148
+f 259/316/159 267/308/156 248/301/151
+f 268/322/162 274/323/163 275/324/164
+f 269/325/165 277/326/166 275/327/164
+f 268/322/162 279/328/167 274/323/163
+f 268/322/162 281/329/168 279/328/167
+f 268/322/162 278/330/169 281/329/168
+f 269/325/165 284/331/170 277/326/166
+f 271/332/171 287/333/172 280/334/173
+f 272/335/174 289/336/175 282/337/176
+f 273/338/177 291/339/178 283/340/179
+f 269/325/165 286/341/180 284/331/170
+f 271/332/171 290/342/181 287/333/172
+f 272/335/174 292/343/182 289/336/175
+f 273/344/177 285/345/183 291/346/178
+f 274/347/163 270/348/184 276/349/185
+f 274/347/163 276/349/185 275/327/164
+f 275/327/164 276/349/185 269/325/165
+f 277/350/166 273/344/177 278/351/169
+f 277/350/166 278/351/169 275/352/164
+f 275/324/164 278/330/169 268/322/162
+f 279/328/167 271/332/171 280/334/173
+f 279/328/167 280/334/173 274/323/163
+f 274/347/163 280/353/173 270/348/184
+f 281/354/168 272/335/174 282/337/176
+f 281/329/168 282/355/176 279/328/167
+f 279/328/167 282/355/176 271/332/171
+f 278/356/169 273/338/177 283/340/179
+f 278/356/169 283/340/179 281/354/168
+f 281/354/168 283/340/179 272/335/174
+f 284/357/170 285/345/183 277/350/166
+f 277/350/166 285/345/183 273/344/177
+f 276/349/185 286/341/180 269/325/165
+f 287/333/172 288/358/186 280/334/173
+f 280/353/173 288/359/186 270/348/184
+f 289/336/175 290/360/181 282/337/176
+f 282/355/176 290/342/181 271/332/171
+f 291/339/178 292/343/182 283/340/179
+f 283/340/179 292/343/182 272/335/174
+f 259/315/159 249/314/158 267/361/156
+f 303/362/187 295/363/187 327/364/188
+f 309/365/189 305/366/189 325/367/190
+f 307/368/191 322/369/192 301/370/191
+f 323/371/193 332/372/194 333/373/195 324/374/196
+f 338/375/197 339/376/198 322/377/192 321/378/199
+f 334/379/200 325/380/190 326/381/201 335/382/202
+f 353/383/203 345/384/204 318/385/205 341/386/206
+f 352/387/207 346/388/208 324/374/196 333/373/195
+f 351/389/209 347/390/210 329/391/211 348/392/212
+f 350/393/213 337/394/214 328/395/215 349/396/216
+f 336/397/217 327/398/188 328/395/215 337/394/214
+f 319/399/218 297/400/219 336/397/217 337/394/214
+f 340/401/220 323/371/193 324/374/196 341/386/206
+f 317/402/221 302/403/222 316/404/223 300/405/224
+f 319/399/218 312/406/225 296/407/223 297/400/219
+f 318/385/205 306/408/226 308/409/223 311/410/227
+f 321/378/199 322/377/192 331/411/228 330/412/229
+f 325/380/190 342/413/230 343/414/231 326/381/201
+f 327/398/188 344/415/232 345/384/204 328/395/215
+f 347/390/210 350/393/213 349/396/216 329/391/211
+f 326/381/201 343/414/231 350/393/213 347/390/210
+f 343/414/231 319/399/218 337/394/214 350/393/213
+f 330/412/229 351/389/209 348/392/212 321/378/199
+f 320/416/233 335/382/202 351/389/209 330/412/229
+f 335/382/202 326/381/201 347/390/210 351/389/209
+f 338/375/197 352/387/207 333/373/195 317/402/221
+f 321/378/199 348/392/212 352/387/207 338/375/197
+f 348/392/212 329/391/211 346/388/208 352/387/207
+f 346/388/208 353/383/203 341/386/206 324/374/196
+f 329/391/211 349/396/216 353/383/203 346/388/208
+f 349/396/216 328/395/215 345/384/204 353/383/203
+f 300/405/224 339/376/198 338/375/197 317/402/221
+f 320/416/233 313/417/234 315/418/223 314/419/235
+f 342/413/230 312/406/225 319/399/218 343/414/231
+f 320/416/233 314/419/235 334/379/200 335/382/202
+f 311/410/227 340/401/220 341/386/206 318/385/205
+f 344/415/232 306/408/226 318/385/205 345/384/204
+f 332/372/194 302/403/222 317/402/221 333/373/195
+f 330/412/229 331/411/228 313/417/234 320/416/233
+f 323/420/193 340/421/220 293/422/236
+f 303/362/187 327/364/188 336/423/217
+f 336/423/217 297/424/219 303/362/187
+f 344/425/232 295/363/187 306/426/226
+f 295/363/187 344/425/232 327/364/188
+f 309/365/189 325/367/190 334/427/200
+f 334/427/200 314/428/235 309/365/189
+f 342/429/230 305/366/189 312/430/225
+f 305/366/189 342/429/230 325/367/190
+f 331/431/228 307/368/191 313/432/234
+f 339/433/198 300/434/224 301/370/191
+f 301/370/191 322/369/192 339/433/198
+f 322/369/192 307/368/191 331/431/228
+f 299/435/236 302/436/222 332/437/194
+f 323/420/193 293/422/236 299/435/236
+f 293/422/236 340/421/220 311/438/227
+f 299/435/236 332/437/194 323/420/193
+l 308 294
+l 296 304
+l 315 310
+l 298 316
+o water-top_Plane.007
+v -0.480468 0.062499 -0.292968
+v -0.480468 0.062499 0.292968
+v 0.480467 0.062499 -0.292968
+v 0.480467 0.062499 0.292968
+vt 0.000029 0.195140
+vt 0.999971 0.195140
+vt 0.999971 0.804860
+vt 0.000029 0.804860
+vn 0.000000 1.000000 0.000000
+g water-top_Plane.007_water-top
+s off
+f 355/439/237 357/440/237 356/441/237 354/442/237
+o sides_Plane.006
+v -0.480468 -0.472656 -0.269532
+v -0.480468 -0.472656 -0.292968
+v -0.457033 -0.472656 -0.292968
+v -0.480468 0.124999 -0.269532
+v -0.480468 0.124999 -0.292968
+v -0.457033 0.124999 -0.292968
+v -0.480468 -0.472656 0.292968
+v -0.480468 -0.472656 0.269532
+v -0.457033 -0.472656 0.292968
+v -0.480468 0.124999 0.292968
+v -0.480468 0.124999 0.269532
+v -0.457033 0.124999 0.292968
+v 0.457032 -0.472656 -0.292968
+v 0.480467 -0.472656 -0.292968
+v 0.480467 -0.472656 -0.269532
+v 0.457032 0.124999 -0.292968
+v 0.480467 0.124999 -0.292968
+v 0.480467 0.124999 -0.269532
+v 0.457032 -0.472656 0.292968
+v 0.480467 -0.472656 0.269532
+v 0.480467 -0.472656 0.292968
+v 0.457032 0.124999 0.292968
+v 0.480467 0.124999 0.269532
+v 0.480467 0.124999 0.292968
+v 0.457032 -0.393866 -0.292968
+v -0.457033 -0.393866 0.292968
+v -0.480468 -0.393866 0.269532
+v -0.457033 -0.393866 -0.292968
+v -0.480468 -0.393866 -0.269532
+v 0.480467 -0.393866 -0.269532
+v 0.457032 -0.393866 0.292968
+v 0.480467 -0.393866 0.269532
+v -0.480468 0.062499 -0.269532
+v -0.457033 0.062499 -0.292968
+v -0.480468 0.062499 0.269532
+v -0.457033 0.062499 0.292968
+v 0.457032 0.062499 -0.292968
+v 0.480467 0.062499 -0.269532
+v 0.457032 0.062499 0.292968
+v 0.480467 0.062499 0.269532
+vt 0.810958 0.640907
+vt 0.810958 0.665294
+vt 0.189042 0.665294
+vt 0.189042 0.640907
+vt 0.032017 0.936656
+vt 0.958426 0.936656
+vt 0.958426 1.000000
+vt 0.032017 1.000000
+vt 0.222049 0.811656
+vt 0.768394 0.811656
+vt 0.768394 0.875000
+vt 0.222049 0.875000
+vt 0.036795 0.542382
+vt 0.036795 0.000000
+vt 0.963205 0.000000
+vt 0.963205 0.542382
+vt 0.773172 0.000000
+vt 0.773172 0.542383
+vt 0.226828 0.542383
+vt 0.226828 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+g sides_Plane.006_sides
+s off
+f 361/443/238 362/444/238 359/445/238 358/446/238
+f 362/443/239 363/444/239 360/445/239 359/446/239
+f 367/443/238 368/444/238 365/445/238 364/446/238
+f 369/443/240 367/444/240 364/445/240 366/446/240
+f 373/443/239 374/444/239 371/445/239 370/446/239
+f 374/443/241 375/444/241 372/445/241 371/446/241
+f 380/443/241 381/444/241 378/445/241 377/446/241
+f 381/443/240 379/444/240 376/445/240 378/446/240
+f 394/447/239 391/448/239 363/449/239 373/450/239
+f 390/451/238 392/452/238 368/453/238 361/454/238
+f 393/447/240 396/448/240 379/449/240 369/450/240
+f 397/451/241 395/452/241 375/453/241 380/454/241
+f 394/455/239 370/456/239 360/457/239 391/458/239
+f 365/459/238 392/460/238 390/461/238 358/462/238
+f 376/457/240 396/458/240 393/455/240 366/456/240
+f 397/461/241 377/462/241 372/459/241 395/460/241
+l 389 380
+l 387 375
+l 388 379
+l 383 369
+l 384 368
+l 386 361
+l 382 373
+l 385 363
diff --git a/homedecor_modpack/homedecor/models/homedecor_flowerpot.obj b/homedecor_modpack/homedecor/models/homedecor_flowerpot.obj
new file mode 100644
index 0000000..bfa316d
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_flowerpot.obj
@@ -0,0 +1,910 @@
+# Blender v2.73 (sub 0) OBJ File: 'flower_pot.blend'
+# www.blender.org
+o Cylinder.001
+v 0.097545 0.375000 -0.490393
+v 0.000000 0.375000 -0.500000
+v 0.000000 0.500000 -0.500000
+v 0.097545 0.500000 -0.490393
+v -0.097544 0.375000 -0.490393
+v -0.097544 0.500000 -0.490393
+v 0.191342 0.375000 -0.461940
+v 0.191342 0.500000 -0.461940
+v -0.191341 0.375000 -0.461940
+v -0.191341 0.500000 -0.461940
+v 0.277785 0.375000 -0.415735
+v 0.277785 0.500000 -0.415735
+v -0.277785 0.375000 -0.415735
+v -0.277785 0.500000 -0.415735
+v 0.353553 0.375000 -0.353553
+v 0.353553 0.500000 -0.353553
+v -0.353553 0.375000 -0.353554
+v -0.353553 0.500000 -0.353554
+v 0.415735 0.375000 -0.277785
+v 0.415735 0.500000 -0.277785
+v -0.415734 0.375000 -0.277786
+v -0.415734 0.500000 -0.277786
+v 0.461940 0.375000 -0.191342
+v 0.461940 0.500000 -0.191342
+v -0.461940 0.375000 -0.191342
+v -0.461940 0.500000 -0.191342
+v 0.490393 0.375000 -0.097545
+v 0.490393 0.500000 -0.097545
+v -0.490393 0.375000 -0.097546
+v -0.490393 0.500000 -0.097546
+v 0.500000 0.375000 -0.000000
+v 0.500000 0.500000 -0.000000
+v -0.500000 0.375000 -0.000000
+v -0.500000 0.500000 -0.000000
+v 0.490393 0.375000 0.097545
+v 0.490393 0.500000 0.097545
+v -0.490393 0.375000 0.097545
+v -0.490393 0.500000 0.097545
+v 0.461940 0.375000 0.191342
+v 0.461940 0.500000 0.191342
+v -0.461940 0.375000 0.191341
+v -0.461940 0.500000 0.191341
+v -0.085352 0.500000 0.429094
+v -0.000000 0.500000 0.437500
+v -0.167424 0.500000 0.404197
+v 0.085352 0.500000 0.429094
+v -0.243062 0.500000 0.363768
+v 0.415735 0.375000 0.277785
+v 0.415735 0.500000 0.277785
+v -0.415735 0.375000 0.277785
+v -0.415735 0.500000 0.277785
+v 0.167424 0.500000 0.404197
+v -0.309359 0.500000 0.309359
+v 0.243062 0.500000 0.363768
+v -0.363768 0.500000 0.243062
+v 0.309359 0.500000 0.309359
+v -0.404197 0.500000 0.167424
+v 0.353553 0.375000 0.353553
+v 0.353553 0.500000 0.353553
+v -0.353554 0.375000 0.353553
+v -0.353554 0.500000 0.353553
+v 0.363768 0.500000 0.243062
+v -0.429094 0.500000 0.085352
+v 0.404197 0.500000 0.167424
+v -0.437500 0.500000 -0.000000
+v 0.429094 0.500000 0.085352
+v -0.429093 0.500000 -0.085352
+v 0.277785 0.375000 0.415735
+v 0.277785 0.500000 0.415735
+v -0.277785 0.375000 0.415735
+v -0.277785 0.500000 0.415735
+v 0.437500 0.500000 -0.000000
+v -0.404197 0.500000 -0.167424
+v 0.429094 0.500000 -0.085352
+v -0.363768 0.500000 -0.243062
+v 0.404197 0.500000 -0.167424
+v -0.309359 0.500000 -0.309360
+v 0.363768 0.500000 -0.243062
+v 0.191342 0.375000 0.461940
+v 0.191342 0.500000 0.461940
+v -0.191342 0.375000 0.461940
+v -0.191342 0.500000 0.461940
+v -0.243061 0.500000 -0.363768
+v 0.309359 0.500000 -0.309359
+v 0.000000 0.500000 -0.437500
+v 0.085352 0.500000 -0.429094
+v -0.167423 0.500000 -0.404198
+v 0.243062 0.500000 -0.363768
+v -0.085351 0.500000 -0.429094
+v 0.167424 0.500000 -0.404197
+v 0.097545 0.375000 0.490393
+v 0.097545 0.500000 0.490393
+v -0.097545 0.375000 0.490393
+v -0.097545 0.500000 0.490393
+v -0.000000 0.375000 0.500000
+v -0.000000 0.500000 0.500000
+v 0.048773 -0.500000 -0.245196
+v 0.000000 -0.500000 -0.250000
+v -0.048772 -0.500000 -0.245196
+v 0.095671 -0.500000 -0.230970
+v -0.095670 -0.500000 -0.230970
+v 0.138893 -0.500000 -0.207867
+v -0.138892 -0.500000 -0.207868
+v 0.176777 -0.500000 -0.176777
+v -0.176776 -0.500000 -0.176777
+v 0.207867 -0.500000 -0.138893
+v -0.207867 -0.500000 -0.138893
+v 0.230970 -0.500000 -0.095671
+v -0.230970 -0.500000 -0.095671
+v 0.245196 -0.500000 -0.048773
+v -0.245196 -0.500000 -0.048773
+v 0.250000 -0.500000 -0.000000
+v -0.250000 -0.500000 -0.000000
+v 0.245196 -0.500000 0.048772
+v -0.245196 -0.500000 0.048772
+v 0.230970 -0.500000 0.095671
+v -0.230970 -0.500000 0.095671
+v 0.207867 -0.500000 0.138892
+v -0.207867 -0.500000 0.138892
+v 0.176777 -0.500000 0.176777
+v -0.176777 -0.500000 0.176777
+v 0.138893 -0.500000 0.207867
+v -0.243062 0.375000 0.363768
+v -0.138893 -0.500000 0.207867
+v 0.095671 -0.500000 0.230970
+v -0.095671 -0.500000 0.230970
+v 0.048773 -0.500000 0.245196
+v -0.048773 -0.500000 0.245196
+v -0.000000 -0.500000 0.250000
+v 0.085352 0.437500 -0.429094
+v 0.000000 0.437500 -0.437500
+v 0.167424 0.437500 -0.404197
+v -0.000000 0.437500 0.000000
+v -0.085351 0.437500 -0.429094
+v 0.243062 0.437500 -0.363768
+v -0.167423 0.437500 -0.404198
+v 0.309359 0.437500 -0.309359
+v -0.243061 0.437500 -0.363768
+v 0.363768 0.437500 -0.243062
+v -0.309359 0.437500 -0.309360
+v 0.404197 0.437500 -0.167424
+v -0.363768 0.437500 -0.243062
+v 0.429094 0.437500 -0.085352
+v -0.404197 0.437500 -0.167424
+v 0.437500 0.437500 -0.000000
+v -0.429093 0.437500 -0.085352
+v 0.429094 0.437500 0.085352
+v -0.437500 0.437500 -0.000000
+v 0.404197 0.437500 0.167424
+v -0.429094 0.437500 0.085352
+v 0.363768 0.437500 0.243062
+v -0.404197 0.437500 0.167424
+v 0.309359 0.437500 0.309359
+v -0.363768 0.437500 0.243062
+v 0.243062 0.437500 0.363768
+v -0.309359 0.437500 0.309359
+v 0.167424 0.437500 0.404197
+v -0.243062 0.437500 0.363768
+v 0.085352 0.437500 0.429094
+v -0.167424 0.437500 0.404197
+v -0.000000 0.437500 0.437500
+v -0.085352 0.437500 0.429094
+v 0.000000 -0.500000 -0.000000
+v -0.085352 0.375000 0.429094
+v -0.000000 0.375000 0.437500
+v -0.167424 0.375000 0.404197
+v 0.085352 0.375000 0.429094
+v 0.167424 0.375000 0.404197
+v -0.309359 0.375000 0.309359
+v 0.243062 0.375000 0.363768
+v -0.363768 0.375000 0.243062
+v 0.309359 0.375000 0.309359
+v -0.404197 0.375000 0.167424
+v 0.363768 0.375000 0.243062
+v -0.429094 0.375000 0.085352
+v 0.404197 0.375000 0.167424
+v -0.437500 0.375000 -0.000000
+v 0.429094 0.375000 0.085352
+v -0.429093 0.375000 -0.085352
+v 0.437500 0.375000 -0.000000
+v -0.404197 0.375000 -0.167424
+v 0.429094 0.375000 -0.085352
+v -0.363768 0.375000 -0.243062
+v 0.404197 0.375000 -0.167424
+v -0.309359 0.375000 -0.309360
+v 0.363768 0.375000 -0.243062
+v -0.243061 0.375000 -0.363768
+v 0.309359 0.375000 -0.309359
+v 0.000000 0.375000 -0.437500
+v 0.085352 0.375000 -0.429094
+v -0.167423 0.375000 -0.404198
+v 0.243062 0.375000 -0.363768
+v -0.085351 0.375000 -0.429094
+v 0.167424 0.375000 -0.404197
+vt 0.468750 0.437500
+vt 0.500000 0.437500
+vt 0.500000 0.500000
+vt 0.468750 0.500000
+vt 0.437500 0.437500
+vt 0.437500 0.500000
+vt 0.406250 0.500000
+vt 0.406250 0.437500
+vt 0.375000 0.500000
+vt 0.375000 0.437500
+vt 0.343750 0.500000
+vt 0.343750 0.437500
+vt 0.312500 0.500000
+vt 0.312500 0.437500
+vt 0.281250 0.500000
+vt 0.281250 0.437500
+vt 0.250000 0.500000
+vt 0.250000 0.437500
+vt 0.218750 0.500000
+vt 0.218750 0.437500
+vt 0.187500 0.500000
+vt 0.187500 0.437500
+vt 0.156250 0.500000
+vt 0.156250 0.437500
+vt 0.125000 0.500000
+vt 0.125000 0.437500
+vt 0.093750 0.500000
+vt 0.093750 0.437500
+vt 0.062500 0.500000
+vt 0.062500 0.437500
+vt 0.031250 0.500000
+vt 0.031250 0.437500
+vt 0.000000 0.500000
+vt -0.000000 0.437500
+vt 1.000000 0.500000
+vt 0.968750 0.500000
+vt 0.968750 0.437500
+vt 1.000000 0.437500
+vt 0.937500 0.500000
+vt 0.937500 0.437500
+vt 0.906250 0.500000
+vt 0.906250 0.437500
+vt 0.875000 0.500000
+vt 0.875000 0.437500
+vt 0.843750 0.500000
+vt 0.843750 0.437500
+vt 0.812500 0.500000
+vt 0.812500 0.437500
+vt 0.781250 0.500000
+vt 0.781250 0.437500
+vt 0.750000 0.500000
+vt 0.750000 0.437500
+vt 0.718750 0.500000
+vt 0.718750 0.437500
+vt 0.687500 0.500000
+vt 0.687500 0.437500
+vt 0.656250 0.500000
+vt 0.656250 0.437500
+vt 0.625000 0.500000
+vt 0.625000 0.437500
+vt 0.593750 0.500000
+vt 0.593750 0.437500
+vt 0.562500 0.500000
+vt 0.562500 0.437500
+vt 0.531250 0.437500
+vt 0.531250 0.500000
+vt 0.865880 0.724093
+vt 0.872056 0.744452
+vt 0.765612 0.765625
+vt 0.688870 0.842367
+vt 0.675373 0.825921
+vt 0.825908 0.675386
+vt 0.842354 0.688883
+vt 0.825908 0.855864
+vt 0.807145 0.865894
+vt 0.657082 0.765625
+vt 0.659168 0.744452
+vt 0.724080 0.865894
+vt 0.705316 0.855864
+vt 0.675373 0.705329
+vt 0.688870 0.688883
+vt 0.744439 0.872070
+vt 0.705316 0.675386
+vt 0.724080 0.665357
+vt 0.786785 0.872070
+vt 0.765612 0.874155
+vt 0.665344 0.724093
+vt 0.874142 0.765625
+vt 0.872056 0.786798
+vt 0.855851 0.825921
+vt 0.842354 0.842367
+vt 0.855851 0.705329
+vt 0.659168 0.786798
+vt 0.807145 0.665357
+vt 0.865880 0.807158
+vt 0.744439 0.659181
+vt 0.765612 0.657095
+vt 0.665344 0.807158
+vt 0.593750 0.531250
+vt 0.562500 0.531250
+vt 0.812500 0.531250
+vt 0.781250 0.531250
+vt 0.656250 0.531250
+vt 0.625000 0.531250
+vt 0.468750 0.531250
+vt 0.437500 0.531250
+vt 0.250000 0.531250
+vt 0.218750 0.531250
+vt 0.156250 0.531250
+vt 0.125000 0.531250
+vt 0.750000 0.531250
+vt 0.718750 0.531250
+vt 0.875000 0.531250
+vt 0.843750 0.531250
+vt 0.531250 0.531250
+vt 0.500000 0.531250
+vt 0.375000 0.531250
+vt 0.343750 0.531250
+vt 0.687500 0.531250
+vt 0.968750 0.531250
+vt 0.937500 0.531250
+vt 0.187500 0.531250
+vt 0.312500 0.531250
+vt 0.281250 0.531250
+vt 0.062500 0.531250
+vt 0.031250 0.531250
+vt 0.906250 0.531250
+vt 0.406250 0.531250
+vt 0.000000 0.531250
+vt 1.000000 0.531250
+vt 0.093750 0.531250
+vt 0.786785 0.659181
+vt 0.234375 0.955633
+vt 0.271428 0.951984
+vt 0.276721 0.978595
+vt 0.234375 0.982765
+vt 0.113784 0.946184
+vt 0.128857 0.923625
+vt 0.161693 0.941176
+vt 0.151310 0.966243
+vt 0.197322 0.951984
+vt 0.192029 0.978595
+vt 0.197322 0.579428
+vt 0.192029 0.552817
+vt 0.234375 0.548647
+vt 0.234375 0.575779
+vt 0.807981 0.552655
+vt 0.848699 0.565007
+vt 0.838317 0.590074
+vt 0.802687 0.579266
+vt 0.354967 0.946184
+vt 0.339893 0.923624
+vt 0.368674 0.900004
+vt 0.387859 0.919190
+vt 0.392293 0.660188
+vt 0.414853 0.645114
+vt 0.434912 0.682641
+vt 0.409845 0.693024
+vt 0.317440 0.966243
+vt 0.307057 0.941176
+vt 0.080891 0.919190
+vt 0.100076 0.900005
+vt 0.053897 0.886298
+vt 0.076457 0.871224
+vt 0.392293 0.871224
+vt 0.414853 0.886298
+vt 0.033838 0.848771
+vt 0.058905 0.838388
+vt 0.409845 0.838388
+vt 0.434912 0.848771
+vt 0.021486 0.808052
+vt 0.048097 0.802759
+vt 0.420653 0.802759
+vt 0.447264 0.808052
+vt 0.017316 0.765706
+vt 0.044448 0.765706
+vt 0.271428 0.579428
+vt 0.276721 0.552817
+vt 0.317440 0.565169
+vt 0.307057 0.590236
+vt 0.021486 0.723360
+vt 0.048097 0.728653
+vt 0.420653 0.728653
+vt 0.447264 0.723360
+vt 0.451434 0.765706
+vt 0.424302 0.765706
+vt 0.033838 0.682641
+vt 0.058905 0.693024
+vt 0.161693 0.590236
+vt 0.151310 0.565169
+vt 0.080891 0.612222
+vt 0.100076 0.631408
+vt 0.076456 0.660188
+vt 0.053897 0.645115
+vt 0.368674 0.631407
+vt 0.387859 0.612222
+vt 0.113783 0.585228
+vt 0.128857 0.607788
+vt 0.339893 0.607788
+vt 0.354967 0.585227
+vt 0.468750 0.000000
+vt 0.500000 0.000000
+vt 0.437500 0.000000
+vt 0.406250 0.000000
+vt 0.375000 0.000000
+vt 0.343750 0.000000
+vt 0.312500 0.000000
+vt 0.281250 0.000000
+vt 0.250000 0.000000
+vt 0.218750 0.000000
+vt 0.187500 0.000000
+vt 0.156250 0.000000
+vt 0.125000 0.000000
+vt 0.093750 0.000000
+vt 0.062500 0.000000
+vt 0.031250 0.000000
+vt -0.000000 0.000000
+vt 0.968750 0.000000
+vt 1.000000 0.000000
+vt 0.937500 0.000000
+vt 0.906250 0.000000
+vt 0.875000 0.000000
+vt 0.843750 0.000000
+vt 0.812500 0.000000
+vt 0.781250 0.000000
+vt 0.750000 0.000000
+vt 0.718750 0.000000
+vt 0.687500 0.000000
+vt 0.656250 0.000000
+vt 0.625000 0.000000
+vt 0.593750 0.000000
+vt 0.562500 0.000000
+vt 0.531250 0.000000
+vt 0.765635 0.575617
+vt 0.765635 0.548484
+vt 0.692953 0.590074
+vt 0.660117 0.607625
+vt 0.645043 0.585066
+vt 0.682570 0.565007
+vt 0.728582 0.579266
+vt 0.723289 0.552655
+vt 0.728582 0.951821
+vt 0.765635 0.955471
+vt 0.765635 0.982603
+vt 0.723288 0.978433
+vt 0.886226 0.585066
+vt 0.919119 0.612060
+vt 0.899933 0.631245
+vt 0.871152 0.607626
+vt 0.966171 0.848609
+vt 0.946113 0.886136
+vt 0.923553 0.871062
+vt 0.941104 0.838226
+vt 0.631336 0.631245
+vt 0.612151 0.612060
+vt 0.607716 0.660026
+vt 0.585156 0.644952
+vt 0.923553 0.660026
+vt 0.946113 0.644952
+vt 0.590165 0.692862
+vt 0.565098 0.682479
+vt 0.941104 0.692862
+vt 0.966171 0.682479
+vt 0.579357 0.728491
+vt 0.552746 0.723198
+vt 0.951912 0.728491
+vt 0.978523 0.723198
+vt 0.575708 0.765544
+vt 0.548575 0.765544
+vt 0.802687 0.951822
+vt 0.838317 0.941014
+vt 0.848699 0.966081
+vt 0.807981 0.978433
+vt 0.579357 0.802597
+vt 0.552746 0.807890
+vt 0.951912 0.802597
+vt 0.955562 0.765544
+vt 0.982694 0.765544
+vt 0.978523 0.807890
+vt 0.565098 0.848609
+vt 0.590165 0.838226
+vt 0.692953 0.941014
+vt 0.682569 0.966081
+vt 0.612150 0.919028
+vt 0.585156 0.886136
+vt 0.607716 0.871062
+vt 0.631336 0.899843
+vt 0.919119 0.919028
+vt 0.899933 0.899843
+vt 0.645043 0.946022
+vt 0.660117 0.923462
+vt 0.886226 0.946022
+vt 0.871152 0.923462
+vt 0.500000 0.937500
+vt 0.585352 0.929094
+vt 0.667424 0.904197
+vt 0.743062 0.863768
+vt 0.809359 0.809359
+vt 0.863768 0.743062
+vt 0.904197 0.667424
+vt 0.929094 0.585352
+vt 0.929094 0.414648
+vt 0.904197 0.332576
+vt 0.863768 0.256938
+vt 0.809359 0.190641
+vt 0.743062 0.136232
+vt 0.667424 0.095803
+vt 0.585352 0.070906
+vt 0.500000 0.062500
+vt 0.414648 0.070906
+vt 0.332576 0.095803
+vt 0.256938 0.136232
+vt 0.190641 0.190641
+vt 0.136232 0.256938
+vt 0.095803 0.332576
+vt 0.070906 0.414648
+vt 0.070907 0.585353
+vt 0.095803 0.667424
+vt 0.136232 0.743062
+vt 0.190641 0.809360
+vt 0.256939 0.863768
+vt 0.332577 0.904198
+vt 0.414649 0.929094
+vn 0.142000 -0.685700 -0.713900
+vn 0.000000 -0.685700 -0.727900
+vn 0.000000 0.000000 -1.000000
+vn 0.195100 0.000000 -0.980800
+vn 0.278500 -0.685700 -0.672500
+vn 0.382700 0.000000 -0.923900
+vn 0.555600 0.000000 -0.831500
+vn 0.404400 -0.685700 -0.605200
+vn 0.707100 0.000000 -0.707100
+vn 0.514700 -0.685700 -0.514700
+vn 0.831500 0.000000 -0.555600
+vn 0.605200 -0.685700 -0.404400
+vn 0.923900 0.000000 -0.382700
+vn 0.672500 -0.685700 -0.278500
+vn 0.980800 0.000000 -0.195100
+vn 0.713900 -0.685700 -0.142000
+vn 1.000000 0.000000 -0.000000
+vn 0.727900 -0.685700 0.000000
+vn 0.980800 0.000000 0.195100
+vn 0.713900 -0.685700 0.142000
+vn 0.923900 0.000000 0.382700
+vn 0.672500 -0.685700 0.278500
+vn 0.831500 0.000000 0.555600
+vn 0.605200 -0.685700 0.404400
+vn 0.707100 0.000000 0.707100
+vn 0.514700 -0.685700 0.514700
+vn 0.555600 0.000000 0.831500
+vn 0.404400 -0.685700 0.605200
+vn 0.382700 0.000000 0.923900
+vn 0.278500 -0.685700 0.672500
+vn 0.195100 0.000000 0.980800
+vn 0.142000 -0.685700 0.713900
+vn -0.000000 0.000000 1.000000
+vn 0.000000 -0.685700 0.727900
+vn -0.195100 0.000000 0.980800
+vn -0.142000 -0.685700 0.713900
+vn -0.382700 0.000000 0.923900
+vn -0.278500 -0.685700 0.672500
+vn -0.555600 0.000000 0.831500
+vn -0.404400 -0.685700 0.605200
+vn -0.707100 0.000000 0.707100
+vn -0.514700 -0.685700 0.514700
+vn -0.831500 0.000000 0.555600
+vn -0.605200 -0.685700 0.404400
+vn -0.923900 0.000000 0.382700
+vn -0.672500 -0.685700 0.278500
+vn -0.980800 0.000000 0.195100
+vn -0.713900 -0.685700 0.142000
+vn -1.000000 0.000000 -0.000000
+vn -0.727900 -0.685700 0.000000
+vn -0.980800 0.000000 -0.195100
+vn -0.713900 -0.685700 -0.142000
+vn -0.923900 0.000000 -0.382700
+vn -0.672500 -0.685700 -0.278500
+vn -0.831500 0.000000 -0.555600
+vn -0.605200 -0.685700 -0.404400
+vn -0.707100 0.000000 -0.707100
+vn -0.514700 -0.685700 -0.514700
+vn -0.555600 0.000000 -0.831500
+vn -0.404400 -0.685700 -0.605200
+vn -0.382700 0.000000 -0.923900
+vn -0.278500 -0.685700 -0.672500
+vn -0.142000 -0.685700 -0.713900
+vn -0.195100 0.000000 -0.980800
+vn 0.000000 -1.000000 -0.000000
+vn -0.379800 0.729800 0.568400
+vn -0.261600 0.729800 0.631600
+vn -0.631600 0.729800 -0.261600
+vn -0.670500 0.729800 -0.133300
+vn -0.568400 0.729800 0.379800
+vn -0.483400 0.729800 0.483400
+vn 0.133300 0.729800 0.670500
+vn 0.261600 0.729800 0.631600
+vn 0.683600 0.729800 0.000000
+vn 0.670500 0.729800 -0.133300
+vn 0.568400 0.729800 -0.379800
+vn 0.483400 0.729800 -0.483400
+vn -0.683600 0.729800 0.000000
+vn -0.670500 0.729800 0.133300
+vn -0.483400 0.729800 -0.483400
+vn -0.568400 0.729800 -0.379800
+vn -0.133300 0.729800 0.670500
+vn 0.000000 0.729800 0.683600
+vn 0.483400 0.729800 0.483400
+vn 0.568400 0.729800 0.379800
+vn -0.631600 0.729800 0.261600
+vn -0.133300 0.729800 -0.670500
+vn -0.261600 0.729800 -0.631600
+vn 0.631600 0.729800 -0.261600
+vn 0.631600 0.729800 0.261600
+vn 0.670500 0.729800 0.133400
+vn 0.261600 0.729800 -0.631600
+vn 0.133300 0.729800 -0.670500
+vn -0.379800 0.729800 -0.568400
+vn 0.379800 0.729800 0.568400
+vn 0.000000 0.729800 -0.683600
+vn 0.379800 0.729800 -0.568400
+vn 0.000000 1.000000 0.000000
+vn 0.231000 -0.797200 -0.557800
+vn 0.117800 -0.797200 -0.592100
+vn 0.000000 -0.797200 -0.603700
+vn 0.190800 -0.209500 -0.959000
+vn 0.000000 -0.209500 -0.977800
+vn 0.374200 -0.209500 -0.903400
+vn 0.335400 -0.797200 -0.502000
+vn 0.543200 -0.209500 -0.813000
+vn 0.426900 -0.797200 -0.426900
+vn 0.691400 -0.209500 -0.691400
+vn 0.502000 -0.797200 -0.335400
+vn 0.813000 -0.209500 -0.543200
+vn 0.557800 -0.797200 -0.231000
+vn 0.903400 -0.209500 -0.374200
+vn 0.592100 -0.797200 -0.117800
+vn 0.959000 -0.209500 -0.190800
+vn 0.603700 -0.797200 0.000000
+vn 0.977800 -0.209500 -0.000000
+vn 0.592100 -0.797200 0.117800
+vn 0.959000 -0.209500 0.190800
+vn 0.557800 -0.797200 0.231000
+vn 0.903400 -0.209500 0.374200
+vn 0.502000 -0.797200 0.335400
+vn 0.813000 -0.209500 0.543200
+vn 0.426900 -0.797200 0.426900
+vn 0.691400 -0.209500 0.691400
+vn 0.335400 -0.797200 0.502000
+vn 0.543200 -0.209500 0.813000
+vn 0.231000 -0.797200 0.557800
+vn 0.374200 -0.209500 0.903400
+vn 0.117800 -0.797200 0.592100
+vn 0.190800 -0.209500 0.959000
+vn 0.000000 -0.797200 0.603700
+vn -0.000000 -0.209500 0.977800
+vn -0.117800 -0.797200 0.592100
+vn -0.190800 -0.209500 0.959000
+vn -0.231000 -0.797200 0.557800
+vn -0.374200 -0.209500 0.903400
+vn -0.335400 -0.797200 0.502000
+vn -0.543200 -0.209500 0.813000
+vn -0.426900 -0.797200 0.426900
+vn -0.691400 -0.209500 0.691400
+vn -0.502000 -0.797200 0.335400
+vn -0.813000 -0.209500 0.543200
+vn -0.557800 -0.797200 0.231000
+vn -0.903400 -0.209500 0.374200
+vn -0.592100 -0.797200 0.117800
+vn -0.959000 -0.209500 0.190800
+vn -0.603700 -0.797200 0.000000
+vn -0.977800 -0.209500 -0.000000
+vn -0.592100 -0.797200 -0.117800
+vn -0.959000 -0.209500 -0.190800
+vn -0.557800 -0.797200 -0.231000
+vn -0.903400 -0.209500 -0.374200
+vn -0.502000 -0.797200 -0.335400
+vn -0.813000 -0.209500 -0.543200
+vn -0.426900 -0.797200 -0.426900
+vn -0.691400 -0.209500 -0.691400
+vn -0.335400 -0.797200 -0.502000
+vn -0.543200 -0.209500 -0.813000
+vn -0.231000 -0.797200 -0.557800
+vn -0.374200 -0.209500 -0.903400
+vn -0.190800 -0.209500 -0.959000
+vn -0.117800 -0.797200 -0.592100
+g Cylinder.001_Cylinder.001_sides
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 7/5/5 1/1/1 4/4/4 8/6/6
+f 8/6/6 12/7/7 11/8/8 7/5/5
+f 12/7/7 16/9/9 15/10/10 11/8/8
+f 16/9/9 20/11/11 19/12/12 15/10/10
+f 20/11/11 24/13/13 23/14/14 19/12/12
+f 24/13/13 28/15/15 27/16/16 23/14/14
+f 28/15/15 32/17/17 31/18/18 27/16/16
+f 32/17/17 36/19/19 35/20/20 31/18/18
+f 36/19/19 40/21/21 39/22/22 35/20/20
+f 40/21/21 49/23/23 48/24/24 39/22/22
+f 49/23/23 59/25/25 58/26/26 48/24/24
+f 59/25/25 69/27/27 68/28/28 58/26/26
+f 69/27/27 80/29/29 79/30/30 68/28/28
+f 80/29/29 92/31/31 91/32/32 79/30/30
+f 92/31/31 96/33/33 95/34/34 91/32/32
+f 96/35/33 94/36/35 93/37/36 95/38/34
+f 94/36/35 82/39/37 81/40/38 93/37/36
+f 82/39/37 71/41/39 70/42/40 81/40/38
+f 71/41/39 61/43/41 60/44/42 70/42/40
+f 61/43/41 51/45/43 50/46/44 60/44/42
+f 51/45/43 42/47/45 41/48/46 50/46/44
+f 42/47/45 38/49/47 37/50/48 41/48/46
+f 38/49/47 34/51/49 33/52/50 37/50/48
+f 34/51/49 30/53/51 29/54/52 33/52/50
+f 30/53/51 26/55/53 25/56/54 29/54/52
+f 26/55/53 22/57/55 21/58/56 25/56/54
+f 22/57/55 18/59/57 17/60/58 21/58/56
+f 18/59/57 14/61/59 13/62/60 17/60/58
+f 14/61/59 10/63/61 9/64/62 13/62/60
+f 2/2/2 5/65/63 6/66/64 3/3/3
+f 10/63/61 6/66/64 5/65/63 9/64/62
+f 108/67/65 110/68/65 163/69/65
+f 121/70/65 119/71/65 163/69/65
+f 102/72/65 104/73/65 163/69/65
+f 122/74/65 125/75/65 163/69/65
+f 113/76/65 111/77/65 163/69/65
+f 126/78/65 124/79/65 163/69/65
+f 107/80/65 105/81/65 163/69/65
+f 128/82/65 126/78/65 163/69/65
+f 103/83/65 101/84/65 163/69/65
+f 127/85/65 129/86/65 163/69/65
+f 111/77/65 109/87/65 163/69/65
+f 112/88/65 114/89/65 163/69/65
+f 105/81/65 103/83/65 163/69/65
+f 125/75/65 127/85/65 163/69/65
+f 118/90/65 120/91/65 163/69/65
+f 104/73/65 106/92/65 163/69/65
+f 115/93/65 113/76/65 163/69/65
+f 100/94/65 102/72/65 163/69/65
+f 124/79/65 121/70/65 163/69/65
+f 116/95/65 118/90/65 163/69/65
+f 106/92/65 108/67/65 163/69/65
+f 101/84/65 99/96/65 163/69/65
+f 129/86/65 128/82/65 163/69/65
+f 99/96/65 98/97/65 163/69/65
+f 120/91/65 122/74/65 163/69/65
+f 117/98/65 115/93/65 163/69/65
+f 110/68/65 112/88/65 163/69/65
+f 119/71/65 117/98/65 163/69/65
+f 109/87/65 107/80/65 163/69/65
+f 132/63/37 135/61/39 88/99/66 90/100/67
+f 147/49/51 149/47/53 64/101/68 66/102/69
+f 137/59/41 139/57/43 78/103/70 84/104/71
+f 136/6/29 134/4/31 89/105/72 87/106/73
+f 150/19/15 148/17/17 65/107/74 63/108/75
+f 156/25/9 154/23/11 55/109/76 53/110/77
+f 143/53/47 145/51/49 72/111/78 74/112/79
+f 151/45/55 153/43/57 56/113/80 62/114/81
+f 131/3/33 130/66/35 86/115/82 85/116/83
+f 142/11/23 140/9/25 77/117/84 75/118/85
+f 139/57/43 141/55/45 76/119/86 78/103/70
+f 157/39/61 159/36/64 46/120/87 52/121/88
+f 130/66/35 132/63/37 90/100/67 86/115/82
+f 149/47/53 151/45/55 62/114/81 64/101/68
+f 152/21/13 150/19/15 63/108/75 57/122/89
+f 146/15/19 144/13/21 73/123/90 67/124/91
+f 145/51/49 147/49/51 66/102/69 72/111/78
+f 154/23/11 152/21/13 57/122/89 55/109/76
+f 162/31/4 160/29/6 45/125/92 43/126/93
+f 155/41/59 157/39/61 52/121/88 54/127/94
+f 140/9/25 138/7/27 83/128/95 77/117/84
+f 141/55/45 143/53/47 74/112/79 76/119/86
+f 144/13/21 142/11/23 75/118/85 73/123/90
+f 161/33/3 162/31/4 43/126/93 44/129/96
+f 148/17/17 146/15/19 67/124/91 65/107/74
+f 135/61/39 137/59/41 84/104/71 88/99/66
+f 159/36/64 161/35/3 44/130/96 46/120/87
+f 138/7/27 136/6/29 87/106/73 83/128/95
+f 158/27/7 156/25/9 53/110/77 47/131/97
+f 134/4/31 131/3/33 85/116/83 89/105/72
+f 153/43/57 155/41/59 54/127/94 56/113/80
+f 160/29/6 158/27/7 47/131/97 45/125/92
+f 114/89/65 116/95/65 163/69/65
+f 98/97/65 97/132/65 163/69/65
+f 97/132/65 100/94/65 163/69/65
+f 85/133/83 86/134/82 4/135/98 3/136/98
+f 14/137/98 83/138/95 87/139/73 10/140/98
+f 10/140/98 87/139/73 89/141/72 6/142/98
+f 43/143/93 94/144/98 96/145/98 44/146/96
+f 1/147/1 7/148/5 194/149/99 190/150/100
+f 6/142/98 89/141/72 85/133/83 3/136/98
+f 12/151/98 88/152/66 84/153/71 16/154/98
+f 62/155/81 49/156/98 40/157/98 64/158/68
+f 8/159/98 90/160/67 88/152/66 12/151/98
+f 18/161/98 77/162/84 83/138/95 14/137/98
+f 22/163/98 75/164/85 77/162/84 18/161/98
+f 78/165/70 20/166/98 16/154/98 84/153/71
+f 26/167/98 73/168/90 75/164/85 22/163/98
+f 76/169/86 24/170/98 20/166/98 78/165/70
+f 30/171/98 67/172/91 73/168/90 26/167/98
+f 74/173/79 28/174/98 24/170/98 76/169/86
+f 34/175/98 65/176/74 67/172/91 30/171/98
+f 46/177/87 92/178/98 80/179/98 52/180/88
+f 38/181/98 63/182/75 65/176/74 34/175/98
+f 66/183/69 36/184/98 32/185/98 72/186/78
+f 42/187/98 57/188/89 63/182/75 38/181/98
+f 94/144/98 43/143/93 45/189/92 82/190/98
+f 44/146/96 96/145/98 92/178/98 46/177/87
+f 40/157/98 36/184/98 66/183/69 64/158/68
+f 61/191/98 53/192/77 55/193/76 51/194/98
+f 56/195/80 59/196/98 49/156/98 62/155/81
+f 71/197/98 47/198/97 53/192/77 61/191/98
+f 54/199/94 69/200/98 59/196/98 56/195/80
+f 71/197/98 82/190/98 45/189/92 47/198/97
+f 52/180/88 80/179/98 69/200/98 54/199/94
+f 51/194/98 55/193/76 57/188/89 42/187/98
+f 74/173/79 72/186/78 32/185/98 28/174/98
+f 189/2/101 190/1/100 97/201/102 98/202/103
+f 190/1/100 194/5/99 100/203/104 97/201/102
+f 194/5/99 192/8/105 102/204/106 100/203/104
+f 192/8/105 188/10/107 104/205/108 102/204/106
+f 104/205/108 188/10/107 186/12/109 106/206/110
+f 106/206/110 186/12/109 184/14/111 108/207/112
+f 108/207/112 184/14/111 182/16/113 110/208/114
+f 110/208/114 182/16/113 180/18/115 112/209/116
+f 180/18/115 178/20/117 114/210/118 112/209/116
+f 178/20/117 176/22/119 116/211/120 114/210/118
+f 176/22/119 174/24/121 118/212/122 116/211/120
+f 174/24/121 172/26/123 120/213/124 118/212/122
+f 120/213/124 172/26/123 170/28/125 122/214/126
+f 122/214/126 170/28/125 168/30/127 125/215/128
+f 125/215/128 168/30/127 167/32/129 127/216/130
+f 127/216/130 167/32/129 165/34/131 129/217/132
+f 165/38/131 164/37/133 128/218/134 129/219/132
+f 164/37/133 166/40/135 126/220/136 128/218/134
+f 166/40/135 123/42/137 124/221/138 126/220/136
+f 123/42/137 169/44/139 121/222/140 124/221/138
+f 121/222/140 169/44/139 171/46/141 119/223/142
+f 119/223/142 171/46/141 173/48/143 117/224/144
+f 117/224/144 173/48/143 175/50/145 115/225/146
+f 115/225/146 175/50/145 177/52/147 113/226/148
+f 177/52/147 179/54/149 111/227/150 113/226/148
+f 179/54/149 181/56/151 109/228/152 111/227/150
+f 181/56/151 183/58/153 107/229/154 109/228/152
+f 183/58/153 185/60/155 105/230/156 107/229/154
+f 105/230/156 185/60/155 187/62/157 103/231/158
+f 103/231/158 187/62/157 191/64/159 101/232/160
+f 99/233/161 193/65/162 189/2/101 98/202/103
+f 101/232/160 191/64/159 193/65/162 99/233/161
+f 1/147/1 190/150/100 189/234/101 2/235/2
+f 191/236/159 187/237/157 13/238/60 9/239/62
+f 193/240/162 191/236/159 9/239/62 5/241/63
+f 164/242/133 165/243/131 95/244/34 93/245/36
+f 189/234/101 193/240/162 5/241/63 2/235/2
+f 11/246/8 15/247/10 188/248/107 192/249/105
+f 39/250/22 48/251/24 174/252/121 176/253/119
+f 192/249/105 194/149/99 7/148/5 11/246/8
+f 187/237/157 185/254/155 17/255/58 13/238/60
+f 185/254/155 183/256/153 21/257/56 17/255/58
+f 186/258/109 188/248/107 15/247/10 19/259/12
+f 183/256/153 181/260/151 25/261/54 21/257/56
+f 184/262/111 186/258/109 19/259/12 23/263/14
+f 181/260/151 179/264/149 29/265/52 25/261/54
+f 182/266/113 184/262/111 23/263/14 27/267/16
+f 179/264/149 177/268/147 33/269/50 29/265/52
+f 167/270/129 168/271/127 79/272/30 91/273/32
+f 177/268/147 175/274/145 37/275/48 33/269/50
+f 178/276/117 180/277/115 31/278/18 35/279/20
+f 41/280/46 37/275/48 175/274/145 173/281/143
+f 166/282/135 164/242/133 93/245/36 81/283/38
+f 91/273/32 95/244/34 165/243/131 167/270/129
+f 178/276/117 35/279/20 39/250/22 176/253/119
+f 60/284/42 50/285/44 171/286/141 169/287/139
+f 48/251/24 58/288/26 172/289/123 174/252/121
+f 70/290/40 60/284/42 169/287/139 123/291/137
+f 58/288/26 68/292/28 170/293/125 172/289/123
+f 166/282/135 81/283/38 70/290/40 123/291/137
+f 68/292/28 79/272/30 168/271/127 170/293/125
+f 173/281/143 171/286/141 50/285/44 41/280/46
+f 182/266/113 27/267/16 31/278/18 180/277/115
+f 4/135/98 86/134/82 90/160/67 8/159/98
+g Cylinder.001_Cylinder.001_dirt
+s off
+f 131/294/98 133/3/98 130/295/98
+f 130/295/98 133/3/98 132/296/98
+f 132/296/98 133/3/98 135/297/98
+f 135/297/98 133/3/98 137/298/98
+f 137/298/98 133/3/98 139/299/98
+f 139/299/98 133/3/98 141/300/98
+f 141/300/98 133/3/98 143/301/98
+f 143/301/98 133/3/98 145/39/98
+f 145/39/98 133/3/98 147/302/98
+f 147/302/98 133/3/98 149/303/98
+f 149/303/98 133/3/98 151/304/98
+f 151/304/98 133/3/98 153/305/98
+f 153/305/98 133/3/98 155/306/98
+f 155/306/98 133/3/98 157/307/98
+f 157/307/98 133/3/98 159/308/98
+f 159/308/98 133/3/98 161/309/98
+f 161/309/98 133/3/98 162/310/98
+f 162/310/98 133/3/98 160/311/98
+f 160/311/98 133/3/98 158/312/98
+f 158/312/98 133/3/98 156/313/98
+f 156/313/98 133/3/98 154/314/98
+f 154/314/98 133/3/98 152/315/98
+f 152/315/98 133/3/98 150/316/98
+f 150/316/98 133/3/98 148/29/98
+f 148/29/98 133/3/98 146/317/98
+f 146/317/98 133/3/98 144/318/98
+f 144/318/98 133/3/98 142/319/98
+f 142/319/98 133/3/98 140/320/98
+f 140/320/98 133/3/98 138/321/98
+f 138/321/98 133/3/98 136/322/98
+f 136/322/98 133/3/98 134/323/98
+f 134/323/98 133/3/98 131/294/98
diff --git a/homedecor_modpack/homedecor/models/homedecor_grandfather_clock.obj b/homedecor_modpack/homedecor/models/homedecor_grandfather_clock.obj
new file mode 100644
index 0000000..a7c86fe
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_grandfather_clock.obj
@@ -0,0 +1,390 @@
+# Blender v2.69 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_grandfather_clock.mtl
+o Cube_glass_door_Cube.001
+v -0.312500 -0.375000 -0.437500
+v 0.312499 -0.375000 -0.437500
+v -0.312500 0.750000 -0.437500
+v 0.312499 0.750000 -0.437500
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g Cube_glass_door_Cube.001_None
+usemtl None
+s off
+f 3/1 4/2 2/3 1/4
+o Cylinder.001_Cylinder.001_face
+v 0.176777 0.948223 -0.406250
+v 0.095671 0.894030 -0.406250
+v 0.000000 0.875000 -0.406250
+v -0.095671 0.894030 -0.406250
+v -0.176776 0.948223 -0.406250
+v -0.230970 1.029329 -0.406250
+v -0.250000 1.125000 -0.406250
+v -0.230970 1.220671 -0.406250
+v -0.176777 1.301777 -0.406250
+v -0.095671 1.355970 -0.406250
+v 0.000000 1.375000 -0.406250
+v 0.095671 1.355970 -0.406250
+v 0.176777 1.301777 -0.406250
+v 0.230970 1.220671 -0.406250
+v 0.250000 1.125000 -0.406250
+v 0.230970 1.029329 -0.406250
+vt 0.329918 0.910614
+vt 0.185729 0.814271
+vt 0.089385 0.670082
+vt 0.055554 0.500000
+vt 0.089385 0.329918
+vt 0.185729 0.185729
+vt 0.329918 0.089386
+vt 0.500000 0.055554
+vt 0.670082 0.089386
+vt 0.814269 0.185729
+vt 0.910614 0.329918
+vt 0.944445 0.500000
+vt 0.910614 0.670082
+vt 0.814271 0.814271
+vt 0.670082 0.910614
+vt 0.500000 0.944445
+g Cylinder.001_Cylinder.001_face_Cylinder.001_Cylinder.001_face_None_NONE
+usemtl None_NONE
+s off
+f 16/5 17/6 18/7 19/8 20/9 5/10 6/11 7/12 8/13 9/14 10/15 11/16 12/17 13/18 14/19 15/20
+o Cylinder.001_Cylinder.001_wood
+v 0.437500 0.750000 -0.437500
+v 0.107630 0.865159 -0.437500
+v 0.198874 0.926126 -0.437500
+v -0.437500 0.750000 -0.437500
+v -0.259841 1.017370 -0.437500
+v -0.198873 0.926126 -0.437500
+v 0.437500 0.500000 0.437500
+v 0.437500 0.500000 -0.437500
+v 0.437500 1.500000 -0.437500
+v 0.437500 1.500000 0.437500
+v 0.437500 -0.500000 -0.437500
+v -0.437500 -0.500000 -0.437500
+v -0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.500000 0.437500
+v -0.437500 0.500000 0.437500
+v -0.437500 -0.500000 0.437500
+v -0.437500 1.500000 -0.437500
+v -0.437500 1.500000 0.437500
+v 0.259841 1.017370 -0.437500
+v -0.312500 -0.375000 -0.437500
+v -0.312500 -0.375000 0.375000
+v -0.312500 0.500000 0.375000
+v -0.312500 0.500000 -0.437500
+v -0.312500 0.750000 0.375000
+v 0.312500 0.750000 0.375000
+v 0.312500 0.500000 0.375000
+v 0.312500 0.500000 -0.437500
+v 0.312500 -0.375000 -0.437500
+v 0.312500 -0.375000 0.375000
+v -0.312500 0.750000 -0.437500
+v 0.312500 0.750000 -0.437500
+v -0.107630 0.865159 -0.437500
+v -0.281249 1.125000 -0.437500
+v 0.281249 1.125000 -0.437500
+v 0.000000 0.843751 -0.437500
+v -0.259841 1.232630 -0.437500
+v -0.198874 1.323874 -0.437500
+v 0.259841 1.232630 -0.437500
+v 0.107630 1.384841 -0.437500
+v 0.000000 1.406249 -0.437500
+v -0.107630 1.384841 -0.437500
+v 0.198874 1.323874 -0.437500
+v -0.437500 0.500000 -0.437500
+vt 0.062500 0.250000
+vt 0.392370 0.365160
+vt 0.301126 0.426126
+vt 0.937500 0.250000
+vt 0.759841 0.517370
+vt 0.698873 0.426126
+vt 0.062500 0.000000
+vt 0.937500 0.000000
+vt 0.937500 1.000000
+vt 0.062500 1.000000
+vt 0.937500 0.125000
+vt 0.062500 0.125000
+vt 0.240159 0.517370
+vt 0.062500 0.875000
+vt 0.937500 0.875000
+vt 0.812500 0.250000
+vt 0.187500 0.250000
+vt 0.187500 0.000000
+vt 0.812500 0.000000
+vt 0.812500 1.000000
+vt 0.812500 0.062500
+vt 0.187500 0.062500
+vt 0.187500 1.000000
+vt 0.812500 0.937500
+vt 0.187500 0.937500
+vt 0.187500 0.125000
+vt 0.812500 0.125000
+vt 0.607630 0.365160
+vt 0.781250 0.625000
+vt 0.218751 0.625000
+vt 0.500000 0.343751
+vt 0.759841 0.732630
+vt 0.698874 0.823874
+vt 0.240159 0.732630
+vt 0.392370 0.884840
+vt 0.500000 0.906249
+vt 0.607630 0.884840
+vt 0.301126 0.823874
+g Cylinder.001_Cylinder.001_wood_Cylinder.001_Cylinder.001_wood_None_NONE
+usemtl None_NONE
+s off
+f 21/21 22/22 23/23
+f 24/24 25/25 26/26
+f 27/27 28/28 29/29 30/30
+f 31/27 32/28 33/31 34/32
+f 28/29 27/30 35/27 31/28
+f 27/29 36/30 37/27 35/28
+f 37/30 32/27 31/28 35/29
+f 30/28 29/29 38/30 39/27
+f 40/33 21/21 23/23
+f 41/28 42/27 43/34 44/35
+f 45/36 46/37 47/38 43/39
+f 48/35 49/28 50/27 47/34
+f 44/28 43/27 45/21 51/24
+f 49/40 50/41 42/42 41/43
+f 46/44 45/45 51/38 52/39
+f 43/40 47/43 50/46 42/47
+f 53/48 24/24 26/26
+f 24/24 54/49 25/25
+f 55/50 21/21 40/33
+f 21/21 56/51 22/22
+f 53/48 56/51 24/24
+f 57/52 38/29 58/53
+f 56/51 21/21 24/24
+f 54/49 38/29 57/52
+f 59/54 29/30 55/50
+f 29/30 60/55 61/56
+f 62/57 38/29 61/56
+f 58/53 38/29 62/57
+f 29/30 63/58 60/55
+f 29/30 59/54 63/58
+f 29/30 21/21 55/50
+f 29/30 61/56 38/29
+f 38/29 54/49 24/24
+f 30/29 39/30 36/27 27/28
+f 37/28 36/29 64/30 32/27
+f 36/28 39/29 38/30 64/27
+f 52/24 48/28 47/27 46/21
+f 49/46 48/43 28/30 34/32
+f 41/47 33/31 64/29 44/40
+f 44/39 64/28 24/24 51/36
+f 21/21 28/27 48/38 52/37
+o Cylinder.001_Cylinder.001_face-edge
+v 0.095671 1.355970 -0.406250
+v 0.107630 1.384841 -0.437500
+v 0.198874 1.323874 -0.437500
+v 0.176777 1.301777 -0.406250
+v 0.230970 1.220671 -0.406250
+v 0.259841 1.232630 -0.437500
+v 0.281249 1.125000 -0.437500
+v 0.250000 1.125000 -0.406250
+v -0.250000 1.125000 -0.406250
+v -0.281249 1.125000 -0.437500
+v -0.259841 1.232630 -0.437500
+v -0.230970 1.220671 -0.406250
+v -0.176777 1.301777 -0.406250
+v -0.198874 1.323874 -0.437500
+v -0.107630 1.384841 -0.437500
+v -0.095671 1.355970 -0.406250
+v 0.095671 0.894030 -0.406250
+v 0.107630 0.865159 -0.437500
+v 0.000000 0.843751 -0.437500
+v 0.000000 0.875000 -0.406250
+v 0.000000 1.406249 -0.437500
+v 0.000000 1.375000 -0.406250
+v -0.176776 0.948223 -0.406250
+v -0.198873 0.926126 -0.437500
+v -0.259841 1.017370 -0.437500
+v -0.230970 1.029329 -0.406250
+v -0.095671 0.894030 -0.406250
+v -0.107630 0.865159 -0.437500
+v 0.176777 0.948223 -0.406250
+v 0.198874 0.926126 -0.437500
+v 0.230970 1.029329 -0.406250
+v 0.259841 1.017370 -0.437500
+vt 0.125000 0.750000
+vt 0.125000 0.687500
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.375000 0.750000
+vt 0.375000 0.687500
+vt 0.500000 0.687500
+vt 0.500000 0.750000
+vt 0.500000 0.937500
+vt 0.500000 0.875000
+vt 0.625000 0.875000
+vt 0.625000 0.937500
+vt 0.750000 0.937500
+vt 0.750000 0.875000
+vt 0.875000 0.875000
+vt 0.875000 0.937500
+vt 0.875000 0.750000
+vt 0.875000 0.687500
+vt 1.000000 0.687500
+vt 1.000000 0.750000
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 0.250000 0.937500
+vt 0.250000 0.875000
+vt 0.375000 0.875000
+vt 0.375000 0.937500
+vt 0.125000 0.937500
+vt 0.125000 0.875000
+vt 0.750000 0.750000
+vt 0.750000 0.687500
+vt 0.000000 0.750000
+vt 0.000000 0.687500
+vt 0.625000 0.750000
+vt 0.625000 0.687500
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+g Cylinder.001_Cylinder.001_face-edge_Cylinder.001_Cylinder.001_face-edge_None_NONE
+usemtl None_NONE
+s off
+f 65/59 66/60 67/61 68/62
+f 69/63 70/64 71/65 72/66
+f 73/67 74/68 75/69 76/70
+f 77/71 78/72 79/73 80/74
+f 81/75 82/76 83/77 84/78
+f 80/74 79/73 85/79 86/80
+f 87/81 88/82 89/83 90/84
+f 91/85 92/86 88/82 87/81
+f 93/87 94/88 82/76 81/75
+f 68/62 67/61 70/64 69/63
+f 65/59 86/89 85/90 66/60
+f 76/70 75/69 78/72 77/71
+f 90/84 89/83 74/68 73/67
+f 95/91 96/92 94/88 93/87
+f 72/66 71/65 96/92 95/91
+f 91/85 84/93 83/94 92/86
+o Cylinder.001_Cylinder.001_brass
+v -0.031250 0.750000 0.015625
+v -0.031250 0.750000 -0.015625
+v -0.031250 -0.062500 -0.015625
+v -0.031250 -0.062500 0.015625
+v 0.031250 0.750000 -0.015625
+v 0.031250 -0.062500 -0.015625
+v 0.031250 0.750000 0.015625
+v 0.031250 -0.062500 0.015625
+v 0.024386 -0.057089 -0.017327
+v 0.024386 -0.057089 0.017329
+v 0.069446 -0.075754 0.017329
+v 0.069446 -0.075754 -0.017327
+v 0.103934 -0.110241 0.017329
+v 0.103934 -0.110241 -0.017327
+v 0.122598 -0.155301 0.017329
+v 0.122598 -0.155301 -0.017327
+v 0.122598 -0.204074 0.017329
+v 0.122598 -0.204074 -0.017327
+v 0.103934 -0.249134 0.017329
+v 0.103934 -0.249134 -0.017327
+v 0.069446 -0.283621 0.017329
+v 0.069446 -0.283621 -0.017327
+v 0.024386 -0.302286 0.017329
+v 0.024386 -0.302286 -0.017327
+v -0.024386 -0.302286 0.017329
+v -0.024386 -0.302286 -0.017327
+v -0.069446 -0.283621 0.017329
+v -0.069446 -0.283621 -0.017327
+v -0.103934 -0.249134 0.017329
+v -0.103934 -0.249134 -0.017327
+v -0.122598 -0.204074 0.017329
+v -0.122598 -0.204074 -0.017327
+v -0.122598 -0.155301 0.017329
+v -0.122598 -0.155301 -0.017327
+v -0.103934 -0.110241 0.017329
+v -0.103934 -0.110241 -0.017327
+v -0.069446 -0.075754 0.017329
+v -0.069446 -0.075754 -0.017327
+v -0.024386 -0.057089 -0.017327
+v -0.024386 -0.057089 0.017329
+vt 0.875000 0.687500
+vt 0.875000 0.750000
+vt 0.062500 0.750000
+vt 0.062500 0.687500
+vt 0.875000 0.812500
+vt 0.062500 0.812500
+vt 0.875000 0.875000
+vt 0.062500 0.875000
+vt 0.062500 0.187500
+vt 0.062500 0.125000
+vt 0.125000 0.125000
+vt 0.125000 0.187500
+vt 0.187500 0.125000
+vt 0.187500 0.187500
+vt 0.250000 0.125000
+vt 0.250000 0.187500
+vt 0.312500 0.125000
+vt 0.312500 0.187500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.437500 0.125000
+vt 0.437500 0.187500
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.562500 0.125000
+vt 0.562500 0.187500
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.687500 0.125000
+vt 0.687500 0.187500
+vt 0.750000 0.125000
+vt 0.750000 0.187500
+vt 0.812500 0.125000
+vt 0.812500 0.187500
+vt 0.875000 0.125000
+vt 0.875000 0.187500
+vt 0.937500 0.125000
+vt 0.937500 0.187500
+vt -0.000000 0.187500
+vt -0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.187500
+vt 0.549293 0.285387
+vt 0.595078 0.266421
+vt 0.644636 0.266421
+vt 0.690422 0.285387
+vt 0.725465 0.320429
+vt 0.744430 0.366215
+vt 0.744430 0.415773
+vt 0.725465 0.461559
+vt 0.690422 0.496602
+vt 0.644636 0.515567
+vt 0.595078 0.515567
+vt 0.549293 0.496602
+vt 0.514250 0.461559
+vt 0.495285 0.415773
+vt 0.495285 0.366215
+vt 0.514250 0.320429
+g Cylinder.001_Cylinder.001_brass_Cylinder.001_Cylinder.001_brass_None_NONE
+usemtl None_NONE
+s off
+f 97/95 98/96 99/97 100/98
+f 98/96 101/99 102/100 99/97
+f 101/99 103/101 104/102 102/100
+f 105/103 106/104 107/105 108/106
+f 108/106 107/105 109/107 110/108
+f 110/108 109/107 111/109 112/110
+f 112/110 111/109 113/111 114/112
+f 114/112 113/111 115/113 116/114
+f 116/114 115/113 117/115 118/116
+f 118/116 117/115 119/117 120/118
+f 120/118 119/117 121/119 122/120
+f 122/120 121/119 123/121 124/122
+f 124/122 123/121 125/123 126/124
+f 126/124 125/123 127/125 128/126
+f 128/126 127/125 129/127 130/128
+f 130/128 129/127 131/129 132/130
+f 132/130 131/129 133/131 134/132
+f 135/133 136/134 106/104 105/103
+f 134/132 133/131 136/135 135/136
+f 118/137 120/138 122/139 124/140 126/141 128/142 130/143 132/144 134/145 135/146 105/147 108/148 110/149 112/150 114/151 116/152
diff --git a/homedecor_modpack/homedecor/models/homedecor_ground_lantern.obj b/homedecor_modpack/homedecor/models/homedecor_ground_lantern.obj
new file mode 100644
index 0000000..e1df42a
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_ground_lantern.obj
@@ -0,0 +1,287 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_ground_lantern.mtl
+o light_Cylinder.001_(null)_light_Cylinder.001_(null)_(null).002
+v -0.120042 0.015635 0.076454
+v -0.006092 0.015635 0.142243
+v -0.006092 0.202286 0.142243
+v -0.120042 0.202286 0.076454
+v 0.006019 0.015427 0.142316
+v 0.120222 0.015427 0.076381
+v 0.120222 0.202494 0.076381
+v 0.006019 0.202494 0.142316
+v 0.126214 0.014002 0.067008
+v 0.126214 0.014002 -0.066874
+v 0.126214 0.203919 -0.066874
+v 0.126214 0.203919 0.067008
+v 0.121524 0.013295 -0.075495
+v 0.004717 0.013295 -0.142935
+v 0.004717 0.204626 -0.142935
+v 0.121524 0.204626 -0.075495
+v -0.006039 0.015549 -0.142140
+v -0.120095 0.015549 -0.076290
+v -0.120095 0.202372 -0.076290
+v -0.006039 0.202372 -0.142140
+v -0.126161 0.014882 -0.066253
+v -0.126161 0.014882 0.066387
+v -0.126161 0.203039 0.066387
+v -0.126161 0.203039 -0.066253
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g light_Cylinder.001_(null)_light_Cylinder.001_(null)_(null).002_light_Cylinder.001_(null)_light_Cylinder.001_(null)_(null).002_(null).002
+usemtl (null).002
+s off
+f 1/1 2/2 3/3 4/4
+f 5/1 6/2 7/3 8/4
+f 9/1 10/2 11/3 12/4
+f 13/1 14/2 15/3 16/4
+f 17/1 18/2 19/3 20/4
+f 21/1 22/2 23/3 24/4
+o cage_Cylinder_(null)_cage_Cylinder_(null)_(null).002
+v 0.071015 -0.417014 -0.040918
+v 0.000027 -0.417014 -0.081903
+v 0.000027 -0.054239 -0.081903
+v 0.071015 -0.054239 -0.040918
+v 0.071015 -0.417014 0.041052
+v 0.071015 -0.054239 0.041052
+v 0.000027 -0.418491 0.082037
+v 0.000027 -0.054239 0.082037
+v -0.070961 -0.417014 0.041052
+v -0.070961 -0.054239 0.041052
+v -0.070961 -0.417014 -0.040918
+v -0.070961 -0.054239 -0.040918
+v 0.000027 -0.499284 -0.216256
+v 0.000027 -0.461037 -0.216256
+v 0.187368 -0.461037 -0.108095
+v 0.187368 -0.499284 -0.108095
+v 0.187368 -0.461037 0.108229
+v 0.187368 -0.499284 0.108229
+v 0.000027 -0.461037 0.216390
+v 0.000027 -0.499284 0.216390
+v -0.187315 -0.461037 0.108228
+v -0.187315 -0.499284 0.108228
+v -0.187315 -0.461037 -0.108095
+v -0.187315 -0.499284 -0.108095
+v 0.000027 0.245980 -0.240326
+v 0.000027 0.219641 -0.240326
+v 0.208213 0.219641 -0.120130
+v 0.208213 0.245980 -0.120130
+v 0.208213 0.219641 0.120264
+v 0.208213 0.245980 0.120264
+v 0.000027 0.219641 0.240460
+v 0.000027 0.245980 0.240460
+v -0.208160 0.219641 0.120263
+v -0.208160 0.245980 0.120263
+v -0.208160 0.245980 -0.120130
+v -0.208160 0.219641 -0.120130
+v -0.046448 0.379396 -0.026765
+v 0.000027 0.379396 -0.053597
+v 0.000027 0.447247 -0.023624
+v -0.020490 0.447247 -0.011778
+v -0.046448 0.379396 0.026899
+v -0.020490 0.447247 0.011912
+v 0.000027 0.379396 0.053731
+v 0.000027 0.447247 0.023757
+v 0.046501 0.379396 0.026899
+v 0.020543 0.447247 0.011912
+v 0.046501 0.379396 -0.026765
+v 0.020543 0.447247 -0.011778
+v 0.000027 0.311544 -0.122023
+v -0.105707 0.311544 -0.060978
+v -0.105707 0.311544 0.061112
+v 0.000027 0.311544 0.122157
+v 0.105760 0.311544 0.061112
+v 0.105760 0.311544 -0.060978
+v 0.000027 -0.054233 -0.199676
+v 0.000027 -0.002972 -0.199676
+v 0.173009 -0.002972 -0.099805
+v 0.173009 -0.054233 -0.099805
+v 0.173009 -0.002972 0.099938
+v 0.173009 -0.054233 0.099938
+v 0.000027 -0.002972 0.199810
+v 0.000027 -0.054233 0.199810
+v -0.172956 -0.002972 0.099938
+v -0.172956 -0.054233 0.099938
+v -0.172956 -0.054233 -0.099805
+v -0.172956 -0.002972 -0.099805
+v 0.000027 -0.002972 -0.157746
+v 0.136696 -0.002972 -0.078839
+v 0.136696 -0.002972 0.078973
+v 0.000027 -0.002972 0.157879
+v -0.136643 -0.002972 0.078973
+v -0.136643 -0.002972 -0.078839
+v 0.000027 0.220893 -0.157746
+v 0.136696 0.220893 -0.078839
+v 0.131617 0.212573 -0.081772
+v 0.005107 0.212573 -0.154813
+v 0.136696 0.211807 -0.072434
+v 0.136696 0.006114 -0.072434
+v 0.130207 0.007658 0.082720
+v 0.006516 0.007658 0.154132
+v 0.000027 0.220893 0.157879
+v -0.006600 0.210038 0.154053
+v -0.006600 0.007883 0.154053
+v -0.136643 0.007068 0.071896
+v -0.136643 0.007068 -0.071762
+v -0.136643 0.220893 -0.078839
+v -0.006543 0.210131 -0.153953
+v -0.130073 0.210131 -0.082632
+v -0.006039 0.202372 -0.142140
+v -0.120095 0.202372 -0.076290
+v -0.130016 0.007883 0.082799
+v -0.136643 0.220893 0.078973
+v -0.130016 0.210038 0.082799
+v 0.131617 0.005348 -0.081772
+v 0.121524 0.013295 -0.075495
+v 0.121524 0.204626 -0.075495
+v 0.006516 0.210263 0.154132
+v 0.136696 0.220893 0.078973
+v 0.130207 0.210263 0.082720
+v 0.136696 0.211807 0.072568
+v 0.126214 0.203919 0.067008
+v 0.126214 0.203919 -0.066874
+v 0.136696 0.006114 0.072568
+v 0.126214 0.014002 -0.066874
+v 0.005107 0.005348 -0.154813
+v 0.120222 0.202494 0.076381
+v 0.120222 0.015427 0.076381
+v -0.006543 0.007790 -0.153953
+v -0.130073 0.007790 -0.082632
+v -0.136643 0.210853 -0.071762
+v -0.126161 0.014882 -0.066253
+v -0.126161 0.203039 -0.066253
+v -0.136643 0.210853 0.071896
+v -0.006092 0.015635 0.142243
+v -0.120042 0.015635 0.076454
+v 0.004717 0.013295 -0.142935
+v -0.120095 0.015549 -0.076290
+v -0.120042 0.202286 0.076454
+v -0.006092 0.202286 0.142243
+v 0.006019 0.015427 0.142316
+v -0.126161 0.203039 0.066387
+v 0.006019 0.202494 0.142316
+v -0.126161 0.014882 0.066387
+v 0.126214 0.014002 0.067008
+v 0.004717 0.204626 -0.142935
+v -0.006039 0.015549 -0.142140
+vt 0.632098 0.624279
+vt 0.383552 0.624279
+vt 0.383552 0.376580
+vt 0.632098 0.376580
+vt 0.509761 0.375721
+vt 0.402132 0.437860
+vt 0.402132 0.562140
+vt 0.509761 0.624279
+vt 0.617390 0.562140
+vt 0.617390 0.437860
+g cage_Cylinder_(null)_cage_Cylinder_(null)_(null).002_cage_Cylinder_(null)_cage_Cylinder_(null)_(null).002_(null).002
+usemtl (null).002
+s off
+f 25/5 26/6 27/7 28/8
+f 29/6 25/5 28/8 30/7
+f 31/5 29/6 30/7 32/8
+f 33/6 31/5 32/8 34/7
+f 35/5 33/6 34/7 36/8
+f 37/7 38/7 39/8 40/8
+f 40/8 39/8 41/7 42/7
+f 42/7 41/7 43/8 44/8
+f 44/8 43/8 45/7 46/7
+f 38/7 47/8 35/5 26/6
+f 48/8 47/8 38/7 37/7
+f 46/7 45/7 47/8 48/8
+f 26/6 35/5 36/8 27/7
+f 47/8 45/7 33/6 35/5
+f 45/7 43/8 31/5 33/6
+f 43/8 41/7 29/6 31/5
+f 25/5 29/6 41/7 39/8
+f 26/6 25/5 39/8 38/7
+f 49/5 50/6 51/7 52/8
+f 52/5 51/6 53/7 54/8
+f 54/5 53/6 55/7 56/8
+f 56/5 55/6 57/7 58/8
+f 59/5 60/6 50/7 49/8
+f 58/5 57/6 60/7 59/8
+f 61/5 62/6 63/7 64/8
+f 65/5 61/6 64/7 66/8
+f 67/5 65/6 66/7 68/8
+f 69/5 67/6 68/7 70/8
+f 71/5 69/6 70/7 72/8
+f 62/5 71/6 72/7 63/8
+f 59/5 49/6 73/7 74/8
+f 74/5 73/6 62/7 61/8
+f 58/5 59/6 74/7 75/8
+f 75/5 74/6 61/7 65/8
+f 56/5 58/6 75/7 76/8
+f 76/5 75/6 65/7 67/8
+f 54/5 56/6 76/7 77/8
+f 77/5 76/6 67/7 69/8
+f 52/5 54/6 77/7 78/8
+f 78/5 77/6 69/7 71/8
+f 49/5 52/6 78/7 73/8
+f 73/5 78/6 71/7 62/8
+f 79/5 80/6 81/7 82/8
+f 82/5 81/6 83/7 84/8
+f 84/5 83/6 85/7 86/8
+f 86/5 85/6 87/7 88/8
+f 89/5 90/6 80/7 79/8
+f 88/5 87/6 90/7 89/8
+f 81/5 80/6 91/7 92/8
+f 83/5 81/6 92/7 93/8
+f 85/5 83/6 93/7 94/8
+f 87/5 85/6 94/7 95/8
+f 90/5 87/6 95/7 96/8
+f 80/5 90/6 96/7 91/8
+f 97/5 98/6 99/7 100/8
+f 92/5 98/6 101/7 102/8
+f 94/5 93/6 103/7 104/8
+f 94/5 105/6 106/7 107/8
+f 96/5 95/6 108/7 109/8
+f 110/5 97/6 111/7 112/8
+f 112/5 111/6 113/7 114/8
+f 95/5 94/6 107/7 115/8
+f 116/5 95/6 115/7 117/8
+f 105/5 116/6 117/7 106/8
+f 99/5 118/6 119/7 120/8
+f 105/5 94/6 104/7 121/8
+f 122/5 105/6 121/7 123/8
+f 93/5 122/6 123/7 103/8
+f 101/5 124/6 125/7 126/8
+f 93/5 92/6 102/7 127/8
+f 98/5 122/6 124/7 101/8
+f 122/5 93/6 127/7 124/8
+f 102/5 101/6 126/7 128/8
+f 98/5 92/6 118/7 99/8
+f 91/5 97/6 100/7 129/8
+f 92/5 91/6 129/7 118/8
+f 103/5 123/6 130/7 131/8
+f 97/5 91/6 132/7 111/8
+f 96/5 110/6 112/7 133/8
+f 91/5 96/6 133/7 132/8
+f 134/5 109/6 135/7 136/8
+f 116/5 110/6 134/7 137/8
+f 110/5 96/6 109/7 134/8
+f 95/5 116/6 137/7 108/8
+f 115/5 107/6 138/7 139/8
+f 118/5 129/6 140/7 119/8
+f 133/5 112/6 114/7 141/8
+f 106/5 117/6 142/7 143/8
+f 104/5 103/6 131/7 144/8
+f 137/5 134/6 136/7 145/8
+f 123/5 121/6 146/7 130/8
+f 108/5 137/6 145/7 147/8
+f 127/5 102/6 128/7 148/8
+f 124/5 127/6 148/7 125/8
+f 100/5 99/6 120/7 149/8
+f 107/5 106/6 143/7 138/8
+f 129/5 100/6 149/7 140/8
+f 111/5 132/6 150/7 113/8
+f 117/5 115/6 139/7 142/8
+f 109/5 108/6 147/7 135/8
+f 132/5 133/6 141/7 150/8
+f 121/5 104/6 144/7 146/8
+f 53/9 51/10 50/11 60/12 57/13 55/14
+f 44/9 46/10 48/11 37/12 40/13 42/14
+f 72/9 70/10 68/11 66/12 64/13 63/14
+f 88/9 89/10 79/11 82/12 84/13 86/14
diff --git a/homedecor_modpack/homedecor/models/homedecor_hanging_lantern.obj b/homedecor_modpack/homedecor/models/homedecor_hanging_lantern.obj
new file mode 100644
index 0000000..0f731f9
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_hanging_lantern.obj
@@ -0,0 +1,538 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_hanging_lantern.mtl
+o cage_cage_lantern
+v -0.009490 0.082036 0.058057
+v -0.009490 0.119436 0.058057
+v 0.009490 0.119436 0.058057
+v 0.009490 0.082036 0.058057
+v -0.009490 0.082036 0.077037
+v -0.009490 0.119436 0.077037
+v 0.009490 0.082036 0.077037
+v 0.009490 0.119436 0.077037
+v -0.000001 -0.016654 0.499996
+v -0.000001 -0.033108 0.464553
+v -0.096440 -0.088787 0.464553
+v -0.110690 -0.080560 0.499996
+v -0.096440 -0.200145 0.464553
+v -0.110690 -0.208373 0.499996
+v -0.000001 -0.255825 0.464553
+v -0.000001 -0.272279 0.499997
+v 0.096439 -0.200145 0.464553
+v 0.110688 -0.208372 0.499997
+v 0.110688 -0.080560 0.499997
+v 0.096439 -0.088787 0.464553
+v 0.158984 0.002217 -0.089425
+v 0.158983 0.002217 0.228543
+v 0.226693 -0.028095 0.296252
+v 0.226694 -0.028095 -0.157134
+v -0.158984 0.002217 0.228542
+v -0.226694 -0.028095 0.296252
+v -0.158983 0.002217 -0.089425
+v -0.226693 -0.028095 -0.157135
+v 0.226694 -0.028095 -0.157134
+v -0.226693 -0.028095 -0.157135
+v -0.077047 0.084441 -0.007488
+v -0.077047 0.084441 0.146606
+v 0.077047 0.084441 0.146606
+v 0.077047 0.084441 -0.007488
+v 0.090171 0.054129 0.159730
+v 0.090171 0.054129 -0.020612
+v 0.122642 0.028173 0.192201
+v 0.122642 0.028173 -0.053083
+v -0.090171 0.054129 0.159730
+v -0.122642 0.028173 0.192201
+v -0.090171 0.054129 -0.020612
+v -0.122642 0.028173 -0.053083
+v 0.226694 -0.050961 -0.157134
+v -0.226693 -0.050961 -0.157135
+v -0.226694 -0.028095 0.296252
+v 0.226693 -0.028095 0.296252
+v 0.199360 -0.050951 -0.129800
+v -0.199359 -0.050951 -0.129801
+v -0.226694 -0.050961 0.296252
+v 0.226693 -0.050961 0.296252
+v -0.115429 -0.421248 -0.045871
+v -0.175969 -0.072674 -0.124877
+v -0.101886 -0.399525 -0.050795
+v -0.199360 -0.050951 0.268918
+v 0.199359 -0.050951 0.268919
+v 0.115430 -0.421248 -0.045870
+v 0.115429 -0.421248 0.184989
+v -0.115430 -0.421248 0.184988
+v -0.119558 -0.403030 -0.034513
+v -0.195230 -0.069169 -0.110185
+v 0.181502 -0.067535 0.265160
+v 0.105090 -0.404664 0.188748
+v 0.119177 -0.404713 0.174680
+v 0.195611 -0.067486 0.251115
+v -0.175969 -0.072674 -0.110205
+v -0.101886 -0.399525 -0.036123
+v 0.101887 -0.399525 -0.050794
+v 0.175970 -0.072674 -0.124876
+v 0.101887 -0.399525 -0.036122
+v 0.175970 -0.072674 -0.110204
+v -0.105623 -0.403030 -0.034513
+v -0.181294 -0.069169 -0.110185
+v -0.195231 -0.069169 0.249302
+v -0.119559 -0.403030 0.173630
+v -0.181295 -0.069169 0.249302
+v -0.105623 -0.403030 0.173630
+v 0.181502 -0.067535 0.253277
+v 0.105090 -0.404664 0.176864
+v -0.105091 -0.404664 0.188747
+v -0.181503 -0.067535 0.265159
+v -0.105091 -0.404664 0.176863
+v -0.181503 -0.067535 0.253276
+v 0.104815 -0.404713 0.174680
+v 0.181249 -0.067486 0.251115
+v 0.195612 -0.067486 -0.111996
+v 0.119178 -0.404713 -0.035562
+v 0.181250 -0.067486 -0.111996
+v 0.104816 -0.404713 -0.035562
+v 0.024036 -0.379102 0.464368
+v 0.022613 -0.347764 0.427958
+v 0.022828 0.281333 0.417164
+v 0.024036 0.285310 0.464553
+v -0.024563 -0.379102 0.464368
+v -0.024563 0.285310 0.464553
+v -0.022923 0.281333 0.417164
+v -0.023138 -0.347764 0.427958
+v -0.023138 0.370374 0.386313
+v 0.022613 0.370374 0.386313
+v -0.023138 0.420515 0.328229
+v 0.022613 0.420515 0.328229
+v 0.024036 0.396431 0.426749
+v -0.024563 0.396431 0.426749
+v -0.023138 0.459717 0.208985
+v 0.022613 0.459717 0.208985
+v 0.024036 0.456542 0.356701
+v -0.024563 0.456541 0.356701
+v -0.023138 0.455639 0.110627
+v 0.022613 0.455639 0.110627
+v 0.024036 0.499961 0.218019
+v -0.024563 0.499961 0.218019
+v -0.023138 0.414646 0.006123
+v 0.022613 0.414646 0.006123
+v 0.024036 0.490391 0.094478
+v -0.024563 0.490391 0.094478
+v -0.023138 0.367613 -0.049844
+v 0.022613 0.367613 -0.049844
+v 0.024036 0.444420 -0.016903
+v -0.024563 0.444420 -0.016903
+v -0.023138 0.303173 -0.077175
+v 0.022613 0.303173 -0.077175
+v 0.024036 0.386794 -0.081861
+v -0.024563 0.386794 -0.081861
+v -0.023138 0.243299 -0.074574
+v 0.022613 0.243299 -0.074574
+v 0.024036 0.307408 -0.112372
+v -0.024563 0.307408 -0.112372
+v -0.022280 0.195459 -0.046776
+v 0.021754 0.195459 -0.046776
+v 0.024036 0.236493 -0.107810
+v -0.024563 0.236493 -0.107810
+v -0.022280 0.151222 0.006275
+v 0.021754 0.151222 0.006275
+v 0.024036 0.178015 -0.074400
+v -0.024563 0.178015 -0.074400
+v -0.022280 0.136838 0.088345
+v 0.021754 0.136838 0.088345
+v 0.024036 0.128623 -0.010815
+v -0.024563 0.128623 -0.010815
+v -0.022280 0.154924 0.159690
+v 0.021754 0.154924 0.159690
+v 0.024036 0.111217 0.084747
+v -0.024563 0.111217 0.084747
+v -0.022280 0.189186 0.194160
+v 0.021754 0.189186 0.194160
+v 0.024036 0.134656 0.169193
+v -0.024563 0.134656 0.169193
+v -0.018717 0.230427 0.198469
+v 0.018192 0.230427 0.198469
+v 0.024036 0.180818 0.214230
+v -0.024563 0.180818 0.214230
+v -0.013320 0.274655 0.184457
+v 0.012795 0.274655 0.184457
+v 0.020105 0.238584 0.216373
+v -0.020631 0.238584 0.216373
+v -0.007343 0.289257 0.172023
+v 0.006818 0.289257 0.172023
+v 0.014148 0.284098 0.196570
+v -0.014674 0.284098 0.196570
+v -0.002547 0.304419 0.152245
+v 0.002021 0.304419 0.152245
+v 0.007551 0.302322 0.175854
+v -0.008078 0.302322 0.175854
+v -0.010476 -0.484434 0.480376
+v 0.009949 -0.484434 0.480376
+v 0.009351 -0.441188 0.444021
+v -0.009876 -0.441188 0.444021
+v 0.002258 0.307357 0.153237
+v -0.002784 0.307357 0.153237
+v -0.022597 0.209701 0.218785
+v 0.022071 0.209701 0.218785
+v 0.019973 0.209806 0.198056
+v -0.020498 0.209806 0.198056
+v -0.017653 0.261341 0.209084
+v 0.017127 0.261341 0.209084
+v 0.015494 0.253847 0.192769
+v -0.016019 0.253847 0.192769
+v -0.022280 0.169812 0.180343
+v -0.024563 0.154601 0.196851
+v 0.024036 0.154601 0.196851
+v 0.021754 0.169812 0.180343
+v -0.022280 0.140843 0.124017
+v -0.024563 0.118604 0.130440
+v 0.024036 0.118604 0.130440
+v 0.021754 0.140843 0.124017
+v -0.022280 0.142075 0.033632
+v -0.022280 0.138248 0.060988
+v -0.024563 0.117502 0.021039
+v -0.024563 0.113150 0.052893
+v 0.024036 0.117502 0.021039
+v 0.024036 0.113150 0.052893
+v 0.021754 0.142075 0.033632
+v 0.021754 0.138248 0.060988
+v -0.024563 0.149141 -0.046089
+v 0.021754 0.169859 -0.024429
+v 0.024036 0.149141 -0.046089
+v -0.022280 0.169859 -0.024429
+v -0.024563 0.205861 -0.093890
+v -0.022709 0.217986 -0.063460
+v 0.024036 0.205861 -0.093890
+v 0.022184 0.217986 -0.063460
+v 0.024036 0.271951 -0.112876
+v -0.023138 0.273236 -0.077964
+v -0.024563 0.271951 -0.112876
+v 0.022613 0.273236 -0.077964
+v 0.024036 0.350583 -0.102687
+v -0.024563 0.350583 -0.102687
+v -0.023138 0.336089 -0.067688
+v 0.022613 0.336089 -0.067688
+v 0.024036 0.419669 -0.054024
+v -0.023138 0.395191 -0.025342
+v -0.024563 0.419669 -0.054024
+v 0.022613 0.395191 -0.025342
+v 0.024036 0.480386 0.053966
+v 0.024036 0.464096 0.017323
+v -0.024563 0.480386 0.053966
+v -0.024563 0.464096 0.017323
+v -0.023138 0.445843 0.073375
+v -0.023138 0.431212 0.039023
+v 0.022613 0.445843 0.073375
+v 0.022613 0.431212 0.039023
+v -0.024563 0.500833 0.176839
+v -0.024563 0.497643 0.135658
+v -0.023138 0.461259 0.176199
+v -0.023138 0.459319 0.143413
+v 0.022613 0.461259 0.176199
+v 0.022613 0.459319 0.143413
+v 0.024036 0.500833 0.176839
+v 0.024036 0.497643 0.135658
+v -0.024563 0.474980 0.317082
+v -0.024563 0.490081 0.270452
+v -0.023138 0.436168 0.296448
+v -0.023138 0.451099 0.255513
+v 0.022613 0.436168 0.296448
+v 0.022613 0.451099 0.255513
+v 0.024036 0.474980 0.317082
+v 0.024036 0.490082 0.270452
+v -0.024563 0.417193 0.406220
+v -0.024563 0.436408 0.383177
+v -0.023138 0.385356 0.372034
+v -0.023138 0.401943 0.354099
+v 0.022613 0.385356 0.372034
+v 0.022613 0.401943 0.354099
+v 0.024036 0.417193 0.406220
+v 0.024036 0.436409 0.383177
+v -0.024563 0.322350 0.459675
+v -0.024563 0.362292 0.448148
+v 0.022756 0.311013 0.411716
+v 0.022685 0.342628 0.402882
+v -0.022995 0.311013 0.411716
+v -0.023066 0.342628 0.402882
+v 0.024036 0.322350 0.459675
+v 0.024036 0.362292 0.448148
+vt 0.380302 0.380302
+vt 0.619698 0.380302
+vt 0.619698 0.619698
+vt 0.380302 0.619698
+vt 0.380302 0.539899
+vt 0.619698 0.539899
+vt 0.380302 0.500000
+vt 0.619698 0.500000
+vt 0.603662 0.440151
+vt 0.500000 0.380302
+vt 0.396338 0.440151
+vt 0.396338 0.559849
+vt 0.500000 0.619698
+vt 0.603662 0.559849
+vt 0.619698 0.460101
+vt 0.380302 0.460101
+g cage_cage_lantern_(null).001
+usemtl (null).001
+s off
+f 1/1 2/2 3/3 4/4
+f 2/3 1/4 5/1 6/2
+f 7/1 8/2 6/3 5/4
+f 4/1 3/2 8/3 7/4
+f 9/1 10/2 11/3 12/4
+f 12/1 11/2 13/3 14/4
+f 14/1 13/2 15/3 16/4
+f 16/1 15/2 17/3 18/4
+f 19/1 20/2 10/3 9/4
+f 18/1 17/2 20/3 19/4
+f 21/1 22/2 23/3 24/4
+f 22/1 25/2 26/3 23/4
+f 25/1 27/2 28/3 26/4
+f 27/1 21/2 24/3 28/4
+f 28/1 24/2 29/3 30/4
+f 31/1 32/2 33/3 34/4
+f 34/1 33/2 35/3 36/4
+f 36/1 35/2 37/3 38/4
+f 38/1 37/2 22/3 21/4
+f 33/1 32/2 39/3 35/4
+f 35/1 39/2 40/3 37/4
+f 37/1 40/2 25/3 22/4
+f 32/1 31/2 41/3 39/4
+f 39/1 41/2 42/3 40/4
+f 40/1 42/2 27/3 25/4
+f 31/1 34/2 36/3 41/4
+f 41/1 36/2 38/3 42/4
+f 42/1 38/2 21/3 27/4
+f 30/1 29/2 43/3 44/4
+f 26/1 28/2 30/3 45/4
+f 23/1 26/2 45/3 46/4
+f 24/1 23/2 46/3 29/4
+f 44/1 43/2 47/3 48/4
+f 45/1 30/2 44/3 49/4
+f 46/1 45/2 49/3 50/4
+f 29/1 46/2 50/3 43/4
+f 51/1 48/2 52/3 53/4
+f 49/1 44/2 48/3 54/4
+f 50/1 49/2 54/3 55/4
+f 43/1 50/2 55/3 47/4
+f 56/1 57/2 58/3 51/4
+f 48/1 51/2 59/3 60/4
+f 57/1 55/2 61/3 62/4
+f 55/1 57/2 63/3 64/4
+f 53/1 52/2 65/3 66/4
+f 47/1 56/2 67/3 68/4
+f 56/1 51/2 53/3 67/4
+f 48/1 47/2 68/3 52/4
+f 68/1 67/2 69/3 70/4
+f 67/1 53/2 66/3 69/4
+f 52/1 68/2 70/3 65/4
+f 60/1 59/2 71/3 72/4
+f 54/1 48/2 60/3 73/4
+f 58/1 54/2 73/3 74/4
+f 51/1 58/2 74/3 59/4
+f 73/1 60/2 72/3 75/4
+f 74/1 73/2 75/3 76/4
+f 59/1 74/2 76/3 71/4
+f 62/1 61/2 77/3 78/4
+f 54/1 58/2 79/3 80/4
+f 55/1 54/2 80/3 61/4
+f 58/1 57/2 62/3 79/4
+f 80/1 79/2 81/3 82/4
+f 61/1 80/2 82/3 77/4
+f 79/1 62/2 78/3 81/4
+f 64/1 63/2 83/3 84/4
+f 47/1 55/2 64/3 85/4
+f 56/1 47/2 85/3 86/4
+f 57/1 56/2 86/3 63/4
+f 85/1 64/2 84/3 87/4
+f 86/1 85/2 87/3 88/4
+f 63/1 86/2 88/3 83/4
+f 89/1 90/2 91/3 92/4
+f 93/1 94/2 95/3 96/4
+f 248/5 250/6 97/3 98/4
+f 89/1 92/2 94/3 93/4
+f 91/1 90/2 96/3 95/4
+f 242/5 240/6 99/3 100/4
+f 246/5 252/6 101/3 102/4
+f 250/5 246/6 102/3 97/4
+f 252/5 248/6 98/3 101/4
+f 234/5 232/6 103/3 104/4
+f 238/5 244/6 105/3 106/4
+f 240/5 238/6 106/3 99/4
+f 244/5 242/6 100/3 105/4
+f 226/5 224/6 107/3 108/4
+f 230/5 236/6 109/3 110/4
+f 232/5 230/6 110/3 103/4
+f 236/5 234/6 104/3 109/4
+f 220/5 218/6 111/3 112/4
+f 222/5 228/6 113/3 114/4
+f 224/5 222/6 114/3 107/4
+f 228/5 226/6 108/3 113/4
+f 212/7 210/8 115/3 116/4
+f 216/5 214/6 117/3 118/4
+f 218/5 216/6 118/3 111/4
+f 214/5 220/6 112/3 117/4
+f 208/7 207/8 119/3 120/4
+f 211/7 209/8 121/3 122/4
+f 210/7 211/8 122/3 115/4
+f 209/7 212/8 116/3 121/4
+f 204/7 202/8 123/3 124/4
+f 206/7 205/8 125/3 126/4
+f 207/7 206/8 126/3 119/4
+f 205/7 208/8 120/3 125/4
+f 200/7 198/8 127/3 128/4
+f 203/7 201/8 129/3 130/4
+f 202/7 203/8 130/3 123/4
+f 201/7 204/8 124/3 129/4
+f 194/7 196/8 131/3 132/4
+f 197/7 199/8 133/3 134/4
+f 198/7 197/8 134/3 127/4
+f 199/7 200/8 128/3 133/4
+f 192/5 186/6 135/3 136/4
+f 193/7 195/8 137/3 138/4
+f 196/7 193/8 138/3 131/4
+f 195/7 194/8 132/3 137/4
+f 184/7 181/8 139/3 140/4
+f 188/5 190/6 141/3 142/4
+f 186/5 188/6 142/3 135/4
+f 190/5 192/6 136/3 141/4
+f 180/7 177/8 143/3 144/4
+f 182/7 183/8 145/3 146/4
+f 181/7 182/8 146/3 139/4
+f 183/7 184/8 140/3 145/4
+f 171/7 172/8 147/3 148/4
+f 178/7 179/8 149/3 150/4
+f 177/7 178/8 150/3 143/4
+f 179/7 180/8 144/3 149/4
+f 175/7 176/8 151/3 152/4
+f 169/7 170/8 153/3 154/4
+f 172/7 169/8 154/3 147/4
+f 170/7 171/8 148/3 153/4
+f 152/1 151/2 155/3 156/4
+f 173/7 174/8 157/3 158/4
+f 176/7 173/8 158/3 151/4
+f 174/7 175/8 152/3 157/4
+f 156/1 155/2 159/3 160/4
+f 158/1 157/2 161/3 162/4
+f 151/1 158/2 162/3 155/4
+f 157/1 152/2 156/3 161/4
+f 89/1 93/2 163/3 164/4
+f 96/1 90/2 165/3 166/4
+f 93/1 96/2 166/3 163/4
+f 90/1 89/2 164/3 165/4
+f 165/1 164/2 163/3 166/4
+f 167/1 160/2 159/3 168/4
+f 162/1 161/2 167/3 168/4
+f 155/1 162/2 168/3 159/4
+f 161/1 156/2 160/3 167/4
+f 13/9 11/10 10/11 20/12 17/13 15/14
+f 144/1 143/2 172/8 171/7
+f 150/1 149/2 170/8 169/7
+f 143/1 150/2 169/8 172/7
+f 149/1 144/2 171/8 170/7
+f 148/1 147/2 176/8 175/7
+f 154/1 153/2 174/8 173/7
+f 147/1 154/2 173/8 176/7
+f 153/1 148/2 175/8 174/7
+f 140/1 139/2 177/8 180/7
+f 146/1 145/2 179/8 178/7
+f 139/1 146/2 178/8 177/7
+f 145/1 140/2 180/8 179/7
+f 136/1 135/2 181/8 184/7
+f 142/1 141/2 183/8 182/7
+f 135/1 142/2 182/8 181/7
+f 141/1 136/2 184/8 183/7
+f 132/1 131/2 185/15 191/16
+f 191/16 185/15 186/6 192/5
+f 138/1 137/2 189/15 187/16
+f 187/16 189/15 190/6 188/5
+f 131/1 138/2 187/15 185/16
+f 185/16 187/15 188/6 186/5
+f 137/1 132/2 191/15 189/16
+f 189/16 191/15 192/6 190/5
+f 128/1 127/2 196/8 194/7
+f 134/1 133/2 195/8 193/7
+f 127/1 134/2 193/8 196/7
+f 133/1 128/2 194/8 195/7
+f 124/1 123/2 198/8 200/7
+f 130/1 129/2 199/8 197/7
+f 123/1 130/2 197/8 198/7
+f 129/1 124/2 200/8 199/7
+f 120/1 119/2 202/8 204/7
+f 126/1 125/2 201/8 203/7
+f 119/1 126/2 203/8 202/7
+f 125/1 120/2 204/8 201/7
+f 116/1 115/2 207/8 208/7
+f 122/1 121/2 205/8 206/7
+f 115/1 122/2 206/8 207/7
+f 121/1 116/2 208/8 205/7
+f 112/1 111/2 210/8 212/7
+f 118/1 117/2 209/8 211/7
+f 111/1 118/2 211/8 210/7
+f 117/1 112/2 212/8 209/7
+f 108/1 107/2 217/15 219/16
+f 219/16 217/15 218/6 220/5
+f 114/1 113/2 213/15 215/16
+f 215/16 213/15 214/6 216/5
+f 107/1 114/2 215/15 217/16
+f 217/16 215/15 216/6 218/5
+f 113/1 108/2 219/15 213/16
+f 213/16 219/15 220/6 214/5
+f 104/1 103/2 223/15 225/16
+f 225/16 223/15 224/6 226/5
+f 110/1 109/2 227/15 221/16
+f 221/16 227/15 228/6 222/5
+f 103/1 110/2 221/15 223/16
+f 223/16 221/15 222/6 224/5
+f 109/1 104/2 225/15 227/16
+f 227/16 225/15 226/6 228/5
+f 100/1 99/2 231/15 233/16
+f 233/16 231/15 232/6 234/5
+f 106/1 105/2 235/15 229/16
+f 229/16 235/15 236/6 230/5
+f 99/1 106/2 229/15 231/16
+f 231/16 229/15 230/6 232/5
+f 105/1 100/2 233/15 235/16
+f 235/16 233/15 234/6 236/5
+f 98/1 97/2 239/15 241/16
+f 241/16 239/15 240/6 242/5
+f 102/1 101/2 243/15 237/16
+f 237/16 243/15 244/6 238/5
+f 97/1 102/2 237/15 239/16
+f 239/16 237/15 238/6 240/5
+f 101/1 98/2 241/15 243/16
+f 243/16 241/15 242/6 244/5
+f 91/1 95/2 249/15 247/16
+f 247/16 249/15 250/6 248/5
+f 94/1 92/2 251/15 245/16
+f 245/16 251/15 252/6 246/5
+f 95/1 94/2 245/15 249/16
+f 249/16 245/15 246/6 250/5
+f 92/1 91/2 247/15 251/16
+f 251/16 247/15 248/6 252/5
+o light
+v -0.181503 -0.067535 0.253276
+v -0.105091 -0.404664 0.176863
+v 0.105090 -0.404664 0.176864
+v 0.181502 -0.067535 0.253277
+v -0.105623 -0.403030 -0.034513
+v -0.105623 -0.403030 0.173630
+v -0.181295 -0.069169 0.249302
+v -0.181294 -0.069169 -0.110185
+v 0.104816 -0.404713 -0.035562
+v 0.181250 -0.067486 -0.111996
+v 0.181249 -0.067486 0.251115
+v 0.104815 -0.404713 0.174680
+v 0.101887 -0.399525 -0.036122
+v -0.101886 -0.399525 -0.036123
+v -0.175969 -0.072674 -0.110205
+v 0.175970 -0.072674 -0.110204
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g light_light_(null).001
+usemtl (null).001
+s off
+f 253/17 254/18 255/19 256/20
+f 257/17 258/18 259/19 260/20
+f 261/17 262/18 263/19 264/20
+f 265/17 266/18 267/19 268/20
diff --git a/homedecor_modpack/homedecor/models/homedecor_ironing_board.obj b/homedecor_modpack/homedecor/models/homedecor_ironing_board.obj
new file mode 100644
index 0000000..f0cfc65
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_ironing_board.obj
@@ -0,0 +1,416 @@
+# Blender v2.73 (sub 0) OBJ File: 'ironing-board.blend'
+# www.blender.org
+o Cylinder
+v 0.374999 0.174383 0.163636
+v 0.374999 0.174383 -0.163636
+v -1.062499 0.196138 -0.044906
+v -1.062499 0.196138 0.044906
+v 0.374999 0.222563 0.163636
+v 0.374999 0.222563 -0.163636
+v -1.062499 0.227217 -0.044906
+v -1.062499 0.227217 0.044906
+v -0.343750 0.249057 -0.250000
+v -0.343750 0.159912 -0.250000
+v -0.343750 0.249057 0.250000
+v -0.343750 0.159912 0.250000
+v -0.703125 0.246033 -0.233163
+v -0.703125 0.169592 0.233163
+v -0.703125 0.169592 -0.233163
+v -0.703125 0.246033 0.233163
+v -0.882812 0.245498 -0.179983
+v -0.882812 0.175495 0.179983
+v -0.882812 0.175495 -0.179983
+v -0.882812 0.245498 0.179983
+v 0.263469 0.159912 -0.250000
+v 0.263469 0.237034 0.250000
+v 0.263469 0.237034 -0.250000
+v 0.263469 0.159912 0.250000
+v -0.588210 -0.500012 0.187500
+v -0.588210 -0.500012 0.125000
+v -0.523921 -0.500018 0.125000
+v -0.523921 -0.500018 0.187500
+v 0.107165 0.149523 0.187499
+v 0.107165 0.149523 0.125000
+v 0.136684 0.117038 0.125000
+v 0.136684 0.117038 0.187499
+v -0.588210 -0.500012 -0.125000
+v -0.588210 -0.500012 -0.187500
+v -0.523921 -0.500018 -0.187500
+v -0.523921 -0.500018 -0.125000
+v 0.107165 0.149523 -0.125001
+v 0.107165 0.149523 -0.187500
+v 0.136684 0.117038 -0.187500
+v 0.136684 0.117038 -0.125001
+v 0.031532 -0.499978 0.125000
+v 0.031532 -0.499978 0.062500
+v 0.095959 -0.500002 0.062500
+v 0.095959 -0.500002 0.125000
+v -0.649243 0.134847 0.124999
+v -0.649243 0.134847 0.062500
+v -0.618973 0.166525 0.062500
+v -0.618973 0.166525 0.124999
+v 0.031532 -0.499977 -0.062500
+v 0.031532 -0.499977 -0.125000
+v 0.095959 -0.500002 -0.125000
+v 0.095959 -0.500002 -0.062500
+v -0.649243 0.134847 -0.062501
+v -0.649243 0.134847 -0.125000
+v -0.618973 0.166525 -0.125000
+v -0.618973 0.166525 -0.062501
+v 0.139442 0.159900 -0.191406
+v 0.139442 0.159900 0.191406
+v 0.157508 0.128609 -0.191406
+v 0.157508 0.128609 0.191406
+v 0.139442 0.097318 -0.191406
+v 0.139442 0.097318 0.191406
+v 0.103310 0.097318 -0.191406
+v 0.103310 0.097318 0.191406
+v 0.085244 0.128609 -0.191406
+v 0.085244 0.128609 0.191406
+v 0.103310 0.159900 -0.191406
+v 0.103310 0.159900 0.191406
+v -0.610895 0.168085 -0.128906
+v -0.610895 0.168085 0.128906
+v -0.592829 0.136793 -0.128906
+v -0.592828 0.136793 0.128906
+v -0.610895 0.105502 -0.128906
+v -0.610895 0.105502 0.128906
+v -0.647027 0.105502 -0.128906
+v -0.647027 0.105502 0.128906
+v -0.665093 0.136793 -0.128906
+v -0.665093 0.136793 0.128906
+v -0.647027 0.168085 -0.128906
+v -0.647027 0.168085 0.128906
+v -0.239665 -0.199291 -0.062500
+v -0.239665 -0.199291 0.062500
+v -0.233227 -0.210486 -0.062500
+v -0.233227 -0.210486 0.062500
+v -0.239665 -0.221681 -0.062500
+v -0.239665 -0.221681 0.062500
+v -0.252541 -0.221681 -0.062500
+v -0.252541 -0.221681 0.062500
+v -0.258979 -0.210486 -0.062500
+v -0.258979 -0.210486 0.062500
+v -0.252541 -0.199291 -0.062500
+v -0.252541 -0.199291 0.062500
+v -0.608631 0.115297 0.121094
+v -0.608631 0.115297 0.089844
+v 0.104078 0.115297 0.089844
+v 0.104078 0.115297 0.121094
+v -0.608631 0.159912 0.121094
+v -0.608631 0.159912 0.089844
+v 0.104078 0.159912 0.089844
+v 0.104078 0.159912 0.121094
+v -0.608631 0.115297 -0.089844
+v -0.608631 0.115297 -0.121094
+v 0.104078 0.115297 -0.121094
+v 0.104078 0.115297 -0.089844
+v -0.608631 0.159912 -0.089844
+v -0.608631 0.159912 -0.121094
+v 0.104078 0.159912 -0.121094
+v 0.104078 0.159912 -0.089844
+vt 0.045334 0.576457
+vt 0.000000 0.576457
+vt 0.000000 0.268517
+vt 0.045334 0.268517
+vt 0.507220 0.080530
+vt 0.507220 0.014662
+vt 0.676293 0.034086
+vt 0.676293 0.063328
+vt 0.049713 0.744479
+vt 0.020470 0.744479
+vt 0.020470 0.659973
+vt 0.049713 0.659973
+vt 0.571351 0.988687
+vt 0.571351 0.916121
+vt 0.676293 0.929737
+vt 0.676293 0.975071
+vt 0.492781 0.404584
+vt 0.323708 0.277485
+vt 0.323708 0.192979
+vt 0.492781 0.065880
+vt 0.571351 0.529536
+vt 0.676293 0.610798
+vt 0.676293 0.918738
+vt 0.571351 1.000000
+vt 0.661854 0.545377
+vt 1.000000 0.529536
+vt 1.000000 1.000000
+vt 0.661854 0.984158
+vt 0.571351 0.470464
+vt 0.000000 0.470464
+vt 0.000000 0.000000
+vt 0.571351 0.000000
+vt 0.661854 0.997154
+vt 0.661854 0.925229
+vt 1.000000 0.916121
+vt 0.428648 0.072566
+vt 0.428648 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.083879
+vt 0.492781 0.996651
+vt 0.492781 0.930783
+vt 0.492781 0.595416
+vt 0.492781 0.934120
+vt 1.000000 0.470464
+vt 0.661854 0.454623
+vt 0.661854 0.015842
+vt 0.000000 0.083879
+vt 0.338147 0.009108
+vt 0.338147 0.081033
+vt 0.323708 0.722515
+vt 0.323708 0.807021
+vt 0.323708 0.979449
+vt 0.323708 0.950207
+vt 0.323706 0.058950
+vt 0.323706 0.013616
+vt 0.676293 0.389202
+vt 0.676293 0.081262
+vt 0.000000 0.529536
+vt 0.000000 1.000000
+vt -0.000000 0.916121
+vt 0.221619 0.000000
+vt 0.277023 0.000000
+vt 0.277024 0.854845
+vt 0.221619 0.854845
+vt 0.754588 0.868580
+vt 0.715681 0.868030
+vt 0.715682 0.042881
+vt 0.754588 0.000000
+vt 0.332429 0.000000
+vt 0.387833 0.000000
+vt 0.387833 0.812100
+vt 0.332428 0.812100
+vt 0.676773 0.868030
+vt 0.637865 0.868580
+vt 0.637867 0.000000
+vt 0.676773 0.042881
+vt 0.749799 0.868580
+vt 0.749799 0.925631
+vt 0.715681 0.925631
+vt 0.715681 0.868580
+vt 0.332428 0.854845
+vt 0.598957 0.000000
+vt 0.637865 0.000550
+vt 0.637865 0.825699
+vt 0.598959 0.868580
+vt 0.443237 0.000000
+vt 0.443238 0.812100
+vt 0.676773 0.868580
+vt 0.676775 0.000000
+vt 0.255737 0.854845
+vt 0.255737 0.911896
+vt 0.221619 0.911896
+vt 0.166214 0.000000
+vt 0.221619 0.836162
+vt 0.166214 0.836162
+vt 0.521189 0.000000
+vt 0.560027 0.000492
+vt 0.560027 0.892705
+vt 0.521098 0.849675
+vt 0.055405 0.000000
+vt 0.110809 0.000000
+vt 0.110809 0.878015
+vt 0.055405 0.878015
+vt 0.521098 0.892214
+vt 0.482259 0.892705
+vt 0.482168 0.043030
+vt 0.521098 0.000000
+vt 0.221619 0.871383
+vt 0.166214 0.871383
+vt 0.110810 0.871383
+vt 0.110809 0.035220
+vt 0.166214 0.035220
+vt 0.560119 0.000000
+vt 0.598957 0.000492
+vt 0.598957 0.892705
+vt 0.560027 0.849675
+vt 0.000000 0.878014
+vt 0.482168 0.892214
+vt 0.443329 0.892705
+vt 0.443238 0.043030
+vt 0.482168 0.000000
+vt 0.873237 0.650566
+vt 0.873237 1.000000
+vt 0.841430 1.000000
+vt 0.841430 0.650566
+vt 0.905045 0.650566
+vt 0.905046 1.000000
+vt 0.963766 0.000000
+vt 0.963766 0.349434
+vt 0.944594 0.349434
+vt 0.944594 0.000000
+vt 0.912787 0.349434
+vt 0.912787 0.000000
+vt 0.332502 0.871336
+vt 0.332502 0.904318
+vt 0.304763 0.920809
+vt 0.277024 0.904318
+vt 0.277024 0.871336
+vt 0.304763 0.854845
+vt 0.944595 0.698869
+vt 0.912787 0.698869
+vt 0.443238 0.828591
+vt 0.443238 0.861573
+vt 0.415499 0.878064
+vt 0.387760 0.861573
+vt 0.387760 0.828591
+vt 0.415499 0.812100
+vt 0.944595 0.974185
+vt 0.944595 0.738851
+vt 0.976402 0.738851
+vt 0.976402 0.974185
+vt 0.912787 0.934202
+vt 0.944595 0.934202
+vt 0.754588 0.885899
+vt 0.754588 0.650566
+vt 0.773761 0.650566
+vt 0.773761 0.885899
+vt 0.805568 0.650566
+vt 0.805568 0.885899
+vt 0.626696 0.934544
+vt 0.598957 0.918053
+vt 0.598957 0.885071
+vt 0.626696 0.868580
+vt 0.654435 0.885071
+vt 0.654435 0.918053
+vt 0.837377 0.650566
+vt 0.837377 0.885899
+vt 0.660203 0.918053
+vt 0.660203 0.885071
+vt 0.687942 0.868580
+vt 0.715681 0.885071
+vt 0.715681 0.918053
+vt 0.687942 0.934544
+vt 0.376394 0.926201
+vt 0.376394 0.812100
+vt 0.387760 0.926201
+vt 0.339996 0.926201
+vt 0.339996 0.812100
+vt 0.351363 0.812100
+vt 0.351363 0.926201
+vt 0.369561 0.812100
+vt 0.369561 0.926201
+vt 0.362729 0.926201
+vt 0.362729 0.812100
+vt 0.277024 0.968946
+vt 0.265657 0.968946
+vt 0.265657 0.854845
+vt 0.833688 0.650566
+vt 0.833687 0.000000
+vt 0.873237 0.000000
+vt 0.794138 0.000000
+vt 0.794138 0.650566
+vt 0.972297 0.349434
+vt 0.972297 0.738851
+vt 0.912787 0.650566
+vt 1.000000 0.349434
+vt 1.000000 0.738851
+vn 1.000000 0.000000 0.000000
+vn -0.600900 0.000000 -0.799300
+vn -1.000000 0.000000 0.000000
+vn 0.612300 0.000000 0.790700
+vn -0.114100 -0.993500 0.000000
+vn 0.128700 0.991700 0.000000
+vn -0.008400 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.046800 0.000000 0.998900
+vn 0.000000 0.000000 -1.000000
+vn -0.283800 0.000000 0.958900
+vn -0.003000 1.000000 0.000000
+vn -0.026900 -0.999600 0.000000
+vn -0.046800 0.000000 -0.998900
+vn -0.101200 0.994900 0.000000
+vn -0.600900 0.000000 0.799300
+vn -0.032800 -0.999500 0.000000
+vn -0.283800 0.000000 -0.958900
+vn 0.612300 0.000000 -0.790700
+vn 0.128700 -0.991700 0.000000
+vn 0.019800 0.999800 0.000000
+vn 0.000000 0.000000 1.000000
+vn -0.682600 0.730800 0.000000
+vn 0.682600 -0.730800 0.000000
+vn -0.000100 -1.000000 0.000000
+vn -0.682000 -0.731400 0.000000
+vn 0.681900 0.731400 0.000000
+vn -0.000400 -1.000000 0.000000
+vn 0.866000 0.500000 -0.000000
+vn 0.866000 -0.500000 -0.000000
+vn -0.866000 -0.500000 0.000000
+vn -0.866000 0.500000 0.000000
+vn 0.866900 0.498500 -0.000000
+vn 0.866900 -0.498500 -0.000000
+vn -0.866900 -0.498500 -0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.866900 0.498500 0.000000
+g Cylinder_Cylinder_cover
+s off
+f 5/1/1 1/2/1 2/3/1 6/4/1
+f 17/5/2 19/6/2 3/7/2 7/8/2
+f 7/9/3 3/10/3 4/11/3 8/12/3
+f 22/13/4 24/14/4 1/15/4 5/16/4
+f 18/17/5 4/18/5 3/19/5 19/20/5
+f 22/21/6 5/22/6 6/23/6 23/24/6
+f 16/25/7 11/26/7 9/27/7 13/28/7
+f 24/29/8 12/30/8 10/31/8 21/32/8
+f 16/33/9 14/34/9 12/35/9 11/27/9
+f 23/36/10 21/37/10 10/38/10 9/39/10
+f 20/40/11 18/41/11 14/34/11 16/33/11
+f 20/42/12 16/25/12 13/28/12 17/43/12
+f 12/44/13 14/45/13 15/46/13 10/38/13
+f 9/47/14 10/31/14 15/48/14 13/49/14
+f 8/50/15 20/42/15 17/43/15 7/51/15
+f 8/52/16 4/53/16 18/41/16 20/40/16
+f 14/45/17 18/17/17 19/20/17 15/46/17
+f 13/49/18 15/48/18 19/6/18 17/5/18
+f 6/54/19 2/55/19 21/37/19 23/36/19
+f 1/56/20 24/29/20 21/32/20 2/57/20
+f 11/58/21 22/21/21 23/24/21 9/59/21
+f 11/59/22 12/60/22 24/14/22 22/13/22
+g Cylinder_Cylinder_legs
+f 29/61/23 30/62/23 26/63/23 25/64/23
+f 30/65/10 31/66/10 27/67/10 26/68/10
+f 31/69/24 32/70/24 28/71/24 27/72/24
+f 32/73/22 29/74/22 25/75/22 28/76/22
+f 25/77/25 26/78/25 27/79/25 28/80/25
+f 37/62/23 38/69/23 34/81/23 33/63/23
+f 38/82/10 39/83/10 35/84/10 34/85/10
+f 39/70/24 40/86/24 36/87/24 35/71/24
+f 40/66/22 37/88/22 33/89/22 36/67/22
+f 33/90/25 34/91/25 35/92/25 36/64/25
+f 45/93/26 46/61/26 42/94/26 41/95/26
+f 46/96/10 47/97/10 43/98/10 42/99/10
+f 47/100/27 48/101/27 44/102/27 43/103/27
+f 48/104/22 45/105/22 41/106/22 44/107/22
+f 41/95/28 42/94/28 43/108/28 44/109/28
+f 53/109/26 54/110/26 50/111/26 49/112/26
+f 54/113/10 55/114/10 51/115/10 50/116/10
+f 55/31/27 56/100/27 52/103/27 51/117/27
+f 56/118/22 53/119/22 49/120/22 52/121/22
+f 49/112/28 50/111/28 51/101/28 52/93/28
+f 57/122/29 58/123/29 60/124/29 59/125/29
+f 59/123/30 60/122/30 62/126/30 61/127/30
+f 61/128/8 62/129/8 64/130/8 63/131/8
+f 63/131/31 64/130/31 66/132/31 65/133/31
+f 60/134/22 58/135/22 68/136/22 66/137/22 64/138/22 62/139/22
+f 65/130/32 66/140/32 68/141/32 67/132/32
+f 57/142/10 59/143/10 61/144/10 63/145/10 65/146/10 67/147/10
+f 69/148/29 70/149/29 72/150/29 71/151/29
+f 71/152/30 72/141/30 74/140/30 73/153/30
+f 73/154/8 74/155/8 76/156/8 75/157/8
+f 75/157/31 76/156/31 78/158/31 77/159/31
+f 72/160/22 70/161/22 80/162/22 78/163/22 76/164/22 74/165/22
+f 77/166/32 78/167/32 80/159/32 79/158/32
+f 69/168/10 71/169/10 73/170/10 75/171/10 77/172/10 79/173/10
+f 81/174/33 82/175/33 84/71/33 83/176/33
+f 83/177/34 84/178/34 86/179/34 85/180/34
+f 85/181/8 86/182/8 88/183/8 87/184/8
+f 87/184/35 88/183/35 90/180/35 89/179/35
+f 91/182/36 92/181/36 82/175/36 81/174/36
+f 89/63/37 90/185/37 92/186/37 91/187/37
+f 98/188/10 99/189/10 95/190/10 94/122/10
+f 100/191/22 97/192/22 93/155/22 96/68/22
+f 93/130/8 94/193/8 95/194/8 96/149/8
+f 106/192/10 107/191/10 103/189/10 102/188/10
+f 108/122/22 105/190/22 101/133/22 104/195/22
+f 101/193/8 102/196/8 103/197/8 104/194/8
diff --git a/homedecor_modpack/homedecor/models/homedecor_kitchen_chair.obj b/homedecor_modpack/homedecor/models/homedecor_kitchen_chair.obj
new file mode 100644
index 0000000..09fca5f
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_kitchen_chair.obj
@@ -0,0 +1,205 @@
+# Blender v2.73 (sub 0) OBJ File: 'kitchen-chair.blend'
+# www.blender.org
+o Cylinder
+v 0.312500 -0.125000 0.187500
+v -0.312500 -0.125000 0.187500
+v 0.312500 -0.500000 -0.312500
+v 0.312500 -0.500000 -0.187500
+v 0.187500 -0.500000 -0.187500
+v 0.187500 -0.500000 -0.312500
+v 0.312500 -0.125000 -0.312500
+v 0.312500 -0.125000 -0.187500
+v 0.187500 -0.125000 -0.187500
+v 0.187500 -0.125000 -0.312500
+v -0.187500 -0.500000 -0.312500
+v -0.187500 -0.500000 -0.187500
+v -0.312500 -0.500000 -0.187500
+v -0.187500 -0.125000 -0.312500
+v -0.187500 -0.125000 -0.187500
+v -0.312500 -0.125000 -0.187500
+v -0.312500 -0.125000 -0.312500
+v 0.312500 -0.062500 0.187500
+v 0.312500 -0.062500 -0.312500
+v -0.312500 -0.062500 -0.312500
+v 0.312500 0.000000 0.187500
+v -0.312500 0.000000 0.187500
+v 0.312500 0.000000 -0.312500
+v -0.312500 0.000000 -0.312500
+v 0.312500 0.500000 0.312500
+v 0.312500 0.500000 0.187500
+v 0.187500 0.500000 0.187500
+v 0.187500 0.500000 0.312500
+v -0.187500 0.500000 0.312500
+v -0.187500 0.500000 0.187500
+v -0.312500 0.500000 0.187500
+v -0.312500 0.500000 0.312500
+v -0.312500 -0.062500 0.187500
+v 0.187500 0.437500 0.257812
+v -0.187500 0.437500 0.257813
+v 0.187500 0.062500 0.257812
+v -0.187500 0.062500 0.257813
+v 0.187500 0.437500 0.242187
+v -0.187500 0.437500 0.242187
+v 0.187500 0.062500 0.242188
+v -0.187500 0.062500 0.242188
+v -0.187500 -0.500000 -0.312500
+v -0.187500 -0.500000 -0.187500
+v -0.312500 -0.500000 -0.187500
+v -0.312500 -0.500000 -0.312500
+v -0.187500 -0.125000 -0.312500
+v -0.312500 -0.125000 -0.187500
+v -0.312500 -0.125000 -0.312500
+v 0.312500 -0.500000 0.187500
+v 0.187500 -0.500000 0.312500
+v 0.187500 -0.500000 0.187500
+v 0.312500 0.500000 0.187500
+v 0.187500 0.500000 0.312500
+v 0.187500 0.500000 0.187500
+v -0.187500 0.500000 0.187500
+v -0.312500 -0.500000 0.187500
+v 0.312500 0.500000 0.312500
+v 0.312500 0.500000 0.187500
+v 0.187500 -0.500000 0.187500
+v 0.187500 -0.500000 0.312500
+v 0.312500 -0.500000 0.312500
+v 0.312500 -0.500000 0.187500
+v -0.312500 -0.500000 0.312500
+v -0.187500 -0.500000 0.312500
+v -0.187500 -0.500000 0.187500
+v 0.187500 0.500000 0.312500
+v -0.187500 0.500000 0.312500
+v -0.312500 0.500000 0.312500
+v -0.312500 0.500000 0.187500
+v -0.187500 -0.125000 0.187500
+v -0.187500 0.000000 0.187500
+v 0.187500 -0.125000 0.187500
+v 0.187500 0.000000 0.187500
+v -0.187500 -0.125000 0.312500
+v -0.187500 0.000000 0.312500
+v 0.187500 -0.125000 0.312500
+v 0.187500 -0.062500 0.312500
+v 0.187500 0.000000 0.312500
+v -0.187500 -0.062500 0.312500
+vt 0.125000 0.375000
+vt 0.625000 0.375000
+vt 0.625000 0.437500
+vt 0.125000 0.437500
+vt 0.187500 0.375000
+vt 0.812500 0.375000
+vt 0.812500 0.437500
+vt 0.187500 0.437500
+vt 0.500000 0.375000
+vt 0.500000 0.000000
+vt 0.625000 0.000000
+vt 0.687500 0.375000
+vt 0.687500 0.000000
+vt 0.812500 0.000000
+vt 0.375000 0.375000
+vt 0.375000 0.000000
+vt 0.312500 0.375000
+vt 0.187500 0.000000
+vt 0.312500 0.000000
+vt 0.187500 0.812500
+vt 0.187500 0.687500
+vt 0.312500 0.687500
+vt 0.312500 0.812500
+vt 0.812500 0.812500
+vt 0.187500 0.187500
+vt 0.812500 0.187500
+vt 0.187500 1.000000
+vt 0.187500 0.875000
+vt 0.312500 0.875000
+vt 0.312500 1.000000
+vt 0.687500 1.000000
+vt 0.687500 0.875000
+vt 0.812500 0.875000
+vt 0.812500 1.000000
+vt 0.312500 0.562500
+vt 0.687500 0.562500
+vt 0.687500 0.937500
+vt 0.312500 0.937500
+vt 0.312500 0.968750
+vt 0.312500 0.906250
+vt 0.687500 0.906250
+vt 0.687500 0.968750
+vt 0.687500 0.812500
+vt 0.687500 0.687500
+vt 0.812500 0.687500
+vt 0.875000 0.375000
+vt 0.875000 0.437500
+vt 0.375000 0.437500
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 1.000000 0.000000
+vt 0.125000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.125000 0.000000
+vt 0.187500 0.312500
+vt 0.312500 0.187500
+vt 0.312500 0.312500
+vt 0.687500 0.312500
+vt 0.687500 0.187500
+vt 0.812500 0.312500
+vt 0.687500 0.437500
+vt 0.312500 0.437500
+vt 0.232843 0.000000
+vt 0.250000 0.937500
+vt 0.750000 0.937500
+vt 0.750000 1.000000
+vt 0.250000 1.000000
+vt 0.250000 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.750000
+vt 0.250000 0.750000
+vt 0.312500 0.625000
+vt 0.687500 0.625000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cylinder_Cylinder_wood
+s off
+f 1/1/1 7/2/1 19/3/1 18/4/1
+f 7/5/2 17/6/2 20/7/2 19/8/2
+f 7/2/1 8/9/1 4/10/1 3/11/1
+f 8/6/3 9/12/3 5/13/3 4/14/3
+f 9/9/4 10/15/4 6/16/4 5/10/4
+f 10/17/2 7/5/2 3/18/2 6/19/2
+f 3/20/5 4/21/5 5/22/5 6/23/5
+f 14/2/1 15/9/1 12/10/1 11/11/1
+f 15/17/3 16/5/3 13/18/3 12/19/3
+f 17/24/5 7/20/5 1/25/5 2/26/5
+f 25/27/6 26/28/6 27/29/6 28/30/6
+f 29/31/6 30/32/6 31/33/6 32/34/6
+f 37/35/3 36/36/3 34/37/3 35/38/3
+f 41/36/2 39/37/2 38/38/2 40/35/2
+f 34/39/6 38/40/6 39/41/6 35/42/6
+f 37/40/5 41/41/5 40/42/5 36/39/5
+f 42/43/5 43/44/5 44/45/5 45/24/5
+f 48/6/2 46/12/2 42/13/2 45/14/2
+f 17/15/4 2/46/4 33/47/4 20/48/4
+f 47/9/4 48/15/4 45/16/4 44/10/4
+f 53/49/4 54/50/4 51/51/4 50/52/4
+f 54/30/2 52/27/2 49/18/2 51/19/2
+f 55/53/1 67/54/1 64/55/1 65/56/1
+f 62/57/5 61/25/5 60/58/5 59/59/5
+f 65/60/5 64/61/5 63/26/5 56/62/5
+f 57/34/3 66/31/3 60/13/3 61/14/3
+f 58/53/1 57/54/1 61/55/1 62/56/1
+f 69/34/2 55/31/2 65/13/2 56/14/2
+f 68/49/4 69/50/4 56/51/4 63/52/4
+f 67/30/3 68/27/3 63/18/3 64/19/3
+f 77/63/3 79/64/3 74/17/3 76/12/3
+f 70/65/5 72/65/5 76/65/5 74/65/5
+f 72/65/2 70/65/2 71/65/2 73/65/2
+g Cylinder_Cylinder_seat
+f 19/20/2 20/24/2 24/33/2 23/28/2
+f 24/20/6 22/57/6 21/62/6 23/24/6
+f 18/66/1 19/67/1 23/68/1 21/69/1
+f 20/70/4 33/71/4 22/72/4 24/73/4
+f 77/74/3 78/35/3 75/36/3 79/75/3
+f 73/60/6 71/59/6 75/58/6 78/61/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_kitchen_faucet.obj b/homedecor_modpack/homedecor/models/homedecor_kitchen_faucet.obj
new file mode 100644
index 0000000..3ca21d7
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_kitchen_faucet.obj
@@ -0,0 +1,572 @@
+# Blender v2.73 (sub 0) OBJ File: 'kitchen-faucet.blend'
+# www.blender.org
+o Cylinder
+v -0.000001 -0.062671 0.278471
+v 0.028112 -0.074316 0.278471
+v 0.039756 -0.102428 0.278471
+v 0.028112 -0.130540 0.278471
+v -0.000001 -0.142184 0.278471
+v -0.028113 -0.130540 0.278471
+v -0.039757 -0.102428 0.278471
+v -0.028113 -0.074316 0.278471
+v -0.000001 -0.077803 0.354543
+v 0.028112 -0.088561 0.350087
+v 0.039756 -0.114533 0.339329
+v 0.028112 -0.140505 0.328570
+v -0.000001 -0.151264 0.324114
+v -0.028113 -0.140505 0.328570
+v -0.039757 -0.114533 0.339329
+v -0.028113 -0.088561 0.350087
+v -0.000001 -0.120894 0.419033
+v 0.028112 -0.129128 0.410800
+v 0.039756 -0.149006 0.390921
+v 0.028112 -0.168885 0.371043
+v -0.000001 -0.177119 0.362809
+v -0.028113 -0.168885 0.371043
+v -0.039757 -0.149006 0.390921
+v -0.028113 -0.129128 0.410800
+v -0.000001 -0.185385 0.462125
+v 0.028112 -0.189841 0.451367
+v 0.039756 -0.200599 0.425394
+v 0.028112 -0.211357 0.399422
+v -0.000001 -0.215813 0.388664
+v -0.028113 -0.211357 0.399422
+v -0.039757 -0.200599 0.425394
+v -0.028113 -0.189841 0.451367
+v -0.000001 -0.261457 0.397743
+v -0.028113 -0.261457 0.409388
+v -0.039757 -0.261457 0.437500
+v -0.039757 -0.429688 0.437500
+v -0.028113 -0.429688 0.409387
+v -0.000000 -0.429688 0.397743
+v 0.028113 -0.429688 0.409387
+v 0.028113 -0.261457 0.409387
+v 0.039757 -0.429688 0.437500
+v 0.039757 -0.261457 0.437500
+v 0.028113 -0.429688 0.465613
+v 0.028113 -0.261457 0.465613
+v -0.000000 -0.429688 0.477257
+v -0.000000 -0.261457 0.477257
+v -0.028113 -0.429688 0.465613
+v -0.028113 -0.261457 0.465613
+v -0.000001 -0.062671 0.198956
+v 0.028112 -0.074316 0.198956
+v 0.039756 -0.102428 0.198956
+v 0.028112 -0.130540 0.198956
+v -0.000001 -0.142184 0.198956
+v -0.028113 -0.130540 0.198956
+v -0.039757 -0.102428 0.198956
+v -0.028113 -0.074316 0.198956
+v -0.000001 -0.090877 0.131657
+v 0.028112 -0.099014 0.139987
+v 0.039756 -0.118659 0.160096
+v 0.028112 -0.138304 0.180205
+v -0.000001 -0.146441 0.188534
+v -0.028113 -0.138304 0.180205
+v -0.039757 -0.118659 0.160096
+v -0.028113 -0.099014 0.139987
+v -0.000001 -0.152992 0.097615
+v 0.028112 -0.155461 0.108995
+v 0.039756 -0.161422 0.136468
+v 0.028112 -0.167383 0.163941
+v -0.000001 -0.169852 0.175320
+v -0.028113 -0.167383 0.163941
+v -0.039757 -0.161422 0.136468
+v -0.028113 -0.155461 0.108995
+v 0.000032 -0.156294 0.181851
+v 0.000032 -0.116962 0.108762
+v 0.028179 -0.122722 0.119466
+v -0.028114 -0.150534 0.171148
+v -0.039772 -0.136628 0.145307
+v 0.039837 -0.136628 0.145307
+v -0.028114 -0.122722 0.119466
+v 0.028179 -0.150534 0.171148
+v 0.028179 -0.132068 0.188529
+v -0.028114 -0.080197 0.166688
+v 0.000032 -0.142811 0.193053
+v 0.000032 -0.069454 0.162164
+v 0.028179 -0.080197 0.166688
+v -0.028114 -0.132068 0.188529
+v 0.039837 -0.106132 0.177608
+v -0.039772 -0.106132 0.177608
+v -0.061719 -0.451562 0.396875
+v -0.142969 -0.451562 0.396875
+v 0.062500 -0.451562 0.396875
+v 0.143750 -0.451562 0.396875
+v 0.062500 -0.480289 0.408774
+v 0.143750 -0.480289 0.408774
+v 0.062500 -0.492188 0.437500
+v 0.143750 -0.492188 0.437500
+v 0.062500 -0.480289 0.466226
+v 0.143750 -0.480289 0.466226
+v 0.062500 -0.451562 0.478125
+v 0.143750 -0.451562 0.478125
+v 0.062500 -0.422836 0.466226
+v 0.143750 -0.422836 0.466226
+v 0.062500 -0.410937 0.437500
+v 0.143750 -0.410937 0.437500
+v 0.062500 -0.422836 0.408774
+v 0.143750 -0.422836 0.408774
+v -0.142969 -0.480289 0.408774
+v -0.061719 -0.480289 0.408774
+v -0.142969 -0.492188 0.437500
+v -0.061719 -0.492188 0.437500
+v -0.142969 -0.480289 0.466226
+v -0.061719 -0.480289 0.466226
+v -0.142969 -0.451562 0.478125
+v -0.061719 -0.451562 0.478125
+v -0.142969 -0.422836 0.466226
+v -0.061719 -0.422836 0.466226
+v -0.142969 -0.410937 0.437500
+v -0.061719 -0.410937 0.437500
+v -0.142969 -0.422836 0.408774
+v -0.061719 -0.422836 0.408774
+v -0.062500 -0.500000 0.375000
+v 0.062500 -0.500000 0.375000
+v -0.062500 -0.500000 0.500000
+v 0.062500 -0.500000 0.500000
+v -0.062500 -0.464123 0.495242
+v 0.062500 -0.464123 0.495242
+v -0.062500 -0.433709 0.481694
+v 0.062500 -0.433709 0.481694
+v -0.062500 -0.413386 0.461418
+v 0.062500 -0.413386 0.461418
+v -0.062500 -0.406250 0.437500
+v 0.062500 -0.406250 0.437500
+v -0.062500 -0.413386 0.413582
+v 0.062500 -0.413386 0.413582
+v -0.062500 -0.433709 0.393306
+v 0.062500 -0.433709 0.393306
+v -0.062500 -0.464123 0.379758
+v 0.062500 -0.464123 0.379758
+v -0.000001 -0.161422 0.136468
+vt 0.187500 0.000000
+vt 0.187500 0.312500
+vt 0.125000 0.312500
+vt 0.125000 0.000000
+vt 0.500000 0.000000
+vt 0.500000 0.312500
+vt 0.437500 0.312500
+vt 0.437500 0.000000
+vt 0.062500 0.000000
+vt 0.062500 0.312500
+vt 0.000000 0.312500
+vt 0.000000 0.000000
+vt 0.187500 0.437500
+vt 0.250000 0.312500
+vt 0.250000 0.437500
+vt 0.125000 0.437500
+vt 0.437500 0.437500
+vt 0.500000 0.437500
+vt 0.375000 0.437500
+vt 0.375000 0.312500
+vt 0.312500 0.437500
+vt 0.312500 0.312500
+vt 0.250000 0.625000
+vt 0.250000 0.562500
+vt 0.312500 0.562500
+vt 0.312500 0.625000
+vt 0.375000 0.562500
+vt 0.375000 0.625000
+vt 0.437500 0.562500
+vt 0.437500 0.625000
+vt 0.500000 0.562500
+vt 0.500000 0.625000
+vt 0.000000 0.625000
+vt 0.000000 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.625000
+vt 0.125000 0.562500
+vt 0.125000 0.625000
+vt 0.187500 0.562500
+vt 0.187500 0.625000
+vt 0.250000 0.500000
+vt 0.312500 0.500000
+vt 0.375000 0.500000
+vt 0.437500 0.500000
+vt 0.500000 0.500000
+vt 0.000000 0.500000
+vt 0.062500 0.500000
+vt 0.125000 0.500000
+vt 0.187500 0.500000
+vt 0.000000 0.437500
+vt 0.062500 0.437500
+vt 0.375000 0.000000
+vt 0.312500 0.000000
+vt 0.250000 0.000000
+vt 0.582997 0.000000
+vt 0.787184 0.000000
+vt 0.779413 0.058604
+vt 0.757281 0.108287
+vt 0.724160 0.141483
+vt 0.685091 0.153141
+vt 0.646021 0.141483
+vt 0.612899 0.108287
+vt 0.590768 0.058604
+vt 0.500000 0.750000
+vt 0.437500 0.750000
+vt 0.375000 0.750000
+vt 0.187500 0.750000
+vt 0.125000 0.750000
+vt 0.250000 0.750000
+vt 0.312500 0.750000
+vt 0.062500 0.750000
+vt 0.000000 0.750000
+vt 0.250000 0.937500
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.250000 1.000000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.437500 0.937500
+vt 0.437500 1.000000
+vt 0.500000 0.937500
+vt 0.500000 1.000000
+vt 0.000000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.125000 0.937500
+vt 0.125000 1.000000
+vt 0.187500 0.937500
+vt 0.187500 1.000000
+vt 0.250000 0.812500
+vt 0.312500 0.812500
+vt 0.312500 0.875000
+vt 0.250000 0.875000
+vt 0.375000 0.812500
+vt 0.375000 0.875000
+vt 0.437500 0.812500
+vt 0.437500 0.875000
+vt 0.500000 0.812500
+vt 0.500000 0.875000
+vt 0.000000 0.812500
+vt 0.062500 0.812500
+vt 0.062500 0.875000
+vt 0.000000 0.875000
+vt 0.125000 0.812500
+vt 0.125000 0.875000
+vt 0.187500 0.812500
+vt 0.187500 0.875000
+vt 0.937500 0.937500
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.812500 0.625000
+vt 0.875000 0.625000
+vt 0.875000 0.687500
+vt 0.812500 0.687500
+vt 0.937500 0.875000
+vt 1.000000 0.875000
+vt 0.875000 0.750000
+vt 0.812500 0.750000
+vt 0.937500 0.812500
+vt 1.000000 0.812500
+vt 0.875000 0.812500
+vt 0.812500 0.812500
+vt 0.838381 0.080809
+vt 0.862049 0.023669
+vt 0.919190 0.000000
+vt 0.976331 0.023669
+vt 1.000000 0.080809
+vt 0.976331 0.137950
+vt 0.919190 0.161619
+vt 0.862049 0.137950
+vt 0.937500 0.750000
+vt 1.000000 0.750000
+vt 0.875000 0.875000
+vt 0.812500 0.875000
+vt 0.937500 0.500000
+vt 1.000000 0.500000
+vt 1.000000 0.562500
+vt 0.937500 0.562500
+vt 0.937500 0.687500
+vt 1.000000 0.687500
+vt 0.875000 0.937500
+vt 0.812500 0.937500
+vt 1.000000 0.625000
+vt 0.937500 0.625000
+vt 0.875000 1.000000
+vt 0.812500 1.000000
+vt 0.862050 0.137950
+vt 0.862050 0.023669
+vt 0.812500 0.562500
+vt 0.875000 0.562500
+vt 0.812500 0.500000
+vt 0.875000 0.500000
+vt 0.562500 0.500000
+vt 0.750000 0.500000
+vt 0.750000 0.562500
+vt 0.562500 0.562500
+vt 0.750000 0.625000
+vt 0.562500 0.625000
+vt 0.750000 0.687500
+vt 0.562500 0.687500
+vt 0.750000 0.750000
+vt 0.562500 0.750000
+vt 0.750000 0.812500
+vt 0.562500 0.812500
+vt 0.750000 0.875000
+vt 0.562500 0.875000
+vt 0.562500 0.937500
+vt 0.750000 0.937500
+vt 0.750000 1.000000
+vt 0.562500 1.000000
+vt 0.812500 0.250000
+vt 1.000000 0.250000
+vt 1.000000 0.437500
+vt 0.812500 0.437500
+vt 0.656250 0.247387
+vt 0.724812 0.275611
+vt 0.656250 0.343750
+vt 0.753210 0.343750
+vt 0.724811 0.411889
+vt 0.656250 0.440113
+vt 0.587688 0.411888
+vt 0.559289 0.343750
+vt 0.587688 0.275611
+vn -0.707100 0.000000 0.707100
+vn -0.694200 0.070800 0.716300
+vn -0.999700 0.004700 0.023800
+vn -1.000000 0.000000 -0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 -0.100400 -0.994900
+vn 0.718000 -0.068500 -0.692600
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn -0.718000 -0.068500 -0.692600
+vn -0.684000 0.279100 0.673900
+vn 0.000000 0.095800 0.995400
+vn 0.000000 0.382700 0.923900
+vn -0.998800 0.018300 0.044100
+vn 0.731700 -0.260800 -0.629700
+vn 0.000000 -0.382700 -0.923900
+vn 0.998800 0.018300 0.044100
+vn 0.999700 0.004700 0.023800
+vn 0.684000 0.279100 0.673900
+vn 0.694200 0.070800 0.716300
+vn 0.000000 0.995400 0.095700
+vn 0.000000 0.923900 0.382700
+vn 0.684000 0.673900 0.279100
+vn 0.694200 0.716300 0.070700
+vn 0.998800 0.044100 0.018300
+vn 0.999700 0.023800 0.004700
+vn 0.731700 -0.629700 -0.260800
+vn 0.718000 -0.692600 -0.068500
+vn 0.000000 -0.923900 -0.382700
+vn 0.000000 -0.994900 -0.100400
+vn -0.731700 -0.629700 -0.260800
+vn -0.718000 -0.692600 -0.068500
+vn -0.998800 0.044100 0.018300
+vn -0.999700 0.023800 0.004700
+vn -0.684000 0.673900 0.279100
+vn -0.694200 0.716300 0.070700
+vn 0.000000 0.707100 0.707100
+vn 0.684000 0.515800 0.515800
+vn 0.998800 0.033800 0.033800
+vn 0.731700 -0.481900 -0.481900
+vn 0.000000 -0.707100 -0.707100
+vn -0.731700 -0.481900 -0.481900
+vn -0.998800 0.033800 0.033800
+vn -0.684000 0.515800 0.515800
+vn -0.731700 -0.260800 -0.629700
+vn 1.000000 0.000000 0.000000
+vn 0.707100 0.000000 0.707100
+vn -0.000000 0.000000 1.000000
+vn 0.570700 -0.541100 0.617600
+vn 0.570700 -0.541100 -0.617600
+vn 0.676300 0.200400 -0.708900
+vn 0.668400 0.421000 -0.613100
+vn 0.655800 0.648200 -0.387000
+vn 0.648000 0.761600 0.000000
+vn 0.655800 0.648200 0.387000
+vn 0.668400 0.421000 0.613100
+vn 0.676300 0.200400 0.708900
+vn -0.000600 -0.997700 0.066900
+vn 0.713700 -0.698500 0.051500
+vn 0.999800 0.021100 -0.003300
+vn -0.694800 0.716200 -0.064900
+vn -0.999800 0.020800 -0.004800
+vn -0.000100 0.996100 -0.088500
+vn 0.694600 0.716500 -0.064200
+vn -0.714000 -0.698400 0.049600
+vn 0.000200 0.488100 -0.872700
+vn 0.691000 0.353900 -0.630200
+vn 0.556700 -0.470300 -0.684700
+vn -0.000200 -0.412600 -0.910900
+vn 0.999200 0.019700 -0.034500
+vn 0.773900 -0.613000 -0.158700
+vn 0.726300 -0.341800 0.596300
+vn 0.541200 -0.769100 0.339900
+vn 0.000600 -0.499000 0.866600
+vn -0.000400 -0.841200 0.540700
+vn -0.726000 -0.342200 0.596500
+vn -0.542000 -0.768300 0.340400
+vn -0.999200 0.019800 -0.034900
+vn -0.774700 -0.612200 -0.158200
+vn -0.690700 0.354000 -0.630500
+vn -0.557300 -0.469800 -0.684700
+vn 0.000200 0.922100 -0.386900
+vn 0.683100 0.673500 -0.282400
+vn 0.692600 0.535000 -0.483800
+vn -0.000200 0.741800 -0.670600
+vn 0.998500 0.049900 -0.021000
+vn 0.999400 0.028000 -0.018000
+vn 0.741500 -0.619500 0.257500
+vn 0.726200 -0.484000 0.488200
+vn 0.001300 -0.923900 0.382600
+vn -0.001000 -0.694000 0.720000
+vn -0.741200 -0.619900 0.257700
+vn -0.726500 -0.483400 0.488300
+vn -0.998500 0.050400 -0.021200
+vn -0.999500 0.027800 -0.017600
+vn -0.682600 0.673900 -0.282600
+vn -0.693000 0.534700 -0.483600
+vn -0.630200 0.549000 0.549000
+vn 0.000000 1.000000 -0.000000
+vn -0.630200 0.776400 0.000000
+vn 0.630200 0.000000 -0.776400
+vn 0.630200 -0.549000 -0.549000
+vn -0.630200 0.000000 0.776400
+vn 0.630200 -0.776400 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.630200 -0.549000 0.549000
+vn 0.000000 -0.707100 0.707100
+vn 0.630200 -0.549000 0.549000
+vn -0.630200 0.000000 -0.776400
+vn -0.630200 -0.549000 -0.549000
+vn -0.630200 -0.776400 0.000000
+vn -0.630200 0.549000 -0.549000
+vn 0.630200 0.000000 0.776400
+vn 0.000000 0.707100 -0.707100
+vn 0.630200 0.549000 0.549000
+vn 0.630200 0.776400 0.000000
+vn 0.630200 0.549000 -0.549000
+vn -0.570700 -0.541100 -0.617600
+vn -0.570700 -0.541100 0.617600
+vn -0.676300 0.200400 0.708900
+vn -0.668400 0.421000 0.613100
+vn -0.655800 0.648200 0.387000
+vn -0.648000 0.761600 0.000000
+vn -0.655800 0.648200 -0.387000
+vn -0.668400 0.421000 -0.613100
+vn -0.676300 0.200400 -0.708900
+vn 0.000000 -0.977200 -0.212000
+s 1
+f 47/1/1 48/2/2 35/3/3 36/4/4
+f 38/5/5 33/6/6 40/7/7 39/8/8
+f 37/9/9 34/10/10 33/11/6 38/12/5
+f 36/4/4 35/3/3 34/10/10 37/9/9
+f 32/13/11 48/2/2 46/14/12 25/15/13
+f 31/16/14 35/3/3 48/2/2 32/13/11
+f 28/17/15 40/7/7 33/6/6 29/18/16
+f 27/19/17 42/20/18 40/7/7 28/17/15
+f 26/21/19 44/22/20 42/20/18 27/19/17
+f 25/15/13 46/14/12 44/22/20 26/21/19
+f 1/23/21 9/24/22 10/25/23 2/26/24
+f 2/26/24 10/25/23 11/27/25 3/28/26
+f 3/28/26 11/27/25 12/29/27 4/30/28
+f 4/30/28 12/29/27 13/31/29 5/32/30
+f 5/33/30 13/34/29 14/35/31 6/36/32
+f 6/36/32 14/35/31 15/37/33 7/38/34
+f 7/38/34 15/37/33 16/39/35 8/40/36
+f 8/40/36 16/39/35 9/24/22 1/23/21
+f 9/24/22 17/41/37 18/42/38 10/25/23
+f 10/25/23 18/42/38 19/43/39 11/27/25
+f 11/27/25 19/43/39 20/44/40 12/29/27
+f 12/29/27 20/44/40 21/45/41 13/31/29
+f 13/34/29 21/46/41 22/47/42 14/35/31
+f 14/35/31 22/47/42 23/48/43 15/37/33
+f 15/37/33 23/48/43 24/49/44 16/39/35
+f 16/39/35 24/49/44 17/41/37 9/24/22
+f 17/41/37 25/15/13 26/21/19 18/42/38
+f 18/42/38 26/21/19 27/19/17 19/43/39
+f 19/43/39 27/19/17 28/17/15 20/44/40
+f 20/44/40 28/17/15 29/18/16 21/45/41
+f 21/46/41 29/50/16 30/51/45 22/47/42
+f 22/47/42 30/51/45 31/16/14 23/48/43
+f 23/48/43 31/16/14 32/13/11 24/49/44
+f 24/49/44 32/13/11 25/15/13 17/41/37
+f 29/50/16 33/11/6 34/10/10 30/51/45
+f 30/51/45 34/10/10 35/3/3 31/16/14
+f 39/8/8 40/7/7 42/20/18 41/52/46
+f 41/52/46 42/20/18 44/22/20 43/53/47
+f 43/53/47 44/22/20 46/14/12 45/54/48
+f 45/54/48 46/14/12 48/2/2 47/1/1
+f 124/55/49 122/56/50 138/57/51 136/58/52 134/59/53 132/60/54 130/61/55 128/62/56 126/63/57
+f 4/30/28 5/32/30 53/64/58 52/65/59
+f 3/28/26 4/30/28 52/65/59 51/66/60
+f 7/38/34 8/40/36 56/67/61 55/68/62
+f 8/40/36 1/23/21 49/69/63 56/67/61
+f 2/26/24 3/28/26 51/66/60 50/70/64
+f 6/36/32 7/38/34 55/68/62 54/71/65
+f 1/23/21 2/26/24 50/70/64 49/69/63
+f 5/33/30 6/36/32 54/71/65 53/72/58
+f 74/73/66 75/74/67 66/75/68 65/76/69
+f 75/74/67 78/77/70 67/78/71 66/75/68
+f 78/77/70 80/79/72 68/80/73 67/78/71
+f 80/79/72 73/81/74 69/82/75 68/80/73
+f 73/83/74 76/84/76 70/85/77 69/86/75
+f 76/84/76 77/87/78 71/88/79 70/85/77
+f 77/87/78 79/89/80 72/90/81 71/88/79
+f 79/89/80 74/73/66 65/76/69 72/90/81
+f 84/91/82 85/92/83 58/93/84 57/94/85
+f 85/92/83 87/95/86 59/96/87 58/93/84
+f 87/95/86 81/97/88 60/98/89 59/96/87
+f 81/97/88 83/99/90 61/100/91 60/98/89
+f 83/101/90 86/102/92 62/103/93 61/104/91
+f 86/102/92 88/105/94 63/106/95 62/103/93
+f 88/105/94 82/107/96 64/108/97 63/106/95
+f 82/107/96 84/91/82 57/94/85 64/108/97
+f 56/67/61 49/69/63 84/91/82 82/107/96
+f 55/68/62 56/67/61 82/107/96 88/105/94
+f 54/71/65 55/68/62 88/105/94 86/102/92
+f 53/72/58 54/71/65 86/102/92 83/101/90
+f 52/65/59 53/64/58 83/99/90 81/97/88
+f 51/66/60 52/65/59 81/97/88 87/95/86
+f 50/70/64 51/66/60 87/95/86 85/92/83
+f 49/69/63 50/70/64 85/92/83 84/91/82
+f 64/108/97 57/94/85 74/73/66 79/89/80
+f 63/106/95 64/108/97 79/89/80 77/87/78
+f 62/103/93 63/106/95 77/87/78 76/84/76
+f 61/104/91 62/103/93 76/84/76 73/83/74
+f 60/98/89 61/100/91 73/81/74 80/79/72
+f 59/96/87 60/98/89 80/79/72 78/77/70
+f 58/93/84 59/96/87 78/77/70 75/74/67
+f 57/94/85 58/93/84 75/74/67 74/73/66
+f 115/109/98 116/110/37 118/111/99 117/112/100
+f 91/113/5 92/114/101 94/115/102 93/116/41
+f 113/117/103 114/118/48 116/110/37 115/109/98
+f 93/116/41 94/115/102 96/119/104 95/120/105
+f 111/121/106 112/122/107 114/118/48 113/117/103
+f 95/120/105 96/119/104 98/123/108 97/124/107
+f 90/125/109 107/126/110 109/127/111 111/128/106 113/129/103 115/130/98 117/131/100 119/132/112
+f 109/133/111 110/134/105 112/122/107 111/121/106
+f 97/124/107 98/123/108 100/135/113 99/136/48
+f 117/137/100 118/138/99 120/139/114 119/140/112
+f 107/141/110 108/142/41 110/134/105 109/133/111
+f 99/136/48 100/135/113 102/143/115 101/144/37
+f 119/140/112 120/139/114 89/145/5 90/146/109
+f 90/146/109 89/145/5 108/142/41 107/141/110
+f 101/144/37 102/143/115 104/147/116 103/148/99
+f 94/128/102 92/129/101 106/130/117 104/131/116 102/149/115 100/125/113 98/150/108 96/127/104
+f 105/151/114 106/152/117 92/114/101 91/113/5
+f 103/153/99 104/154/116 106/152/117 105/151/114
+f 121/55/118 123/56/119 125/57/120 127/58/121 129/59/122 131/60/123 133/61/124 135/62/125 137/63/126
+f 123/155/119 124/156/49 126/157/57 125/158/120
+f 125/158/120 126/157/57 128/159/56 127/160/121
+f 127/160/121 128/159/56 130/161/55 129/162/122
+f 129/162/122 130/161/55 132/163/54 131/164/123
+f 131/164/123 132/163/54 134/165/53 133/166/124
+f 133/166/124 134/165/53 136/167/52 135/168/125
+f 137/169/126 138/170/51 122/171/50 121/172/118
+f 135/168/125 136/167/52 138/170/51 137/169/126
+f 121/173/118 122/174/50 124/175/49 123/176/119
+f 69/177/75 70/178/77 139/179/127
+f 70/178/77 71/180/79 139/179/127
+f 71/180/79 72/181/81 139/179/127
+f 72/181/81 65/182/69 139/179/127
+f 65/182/69 66/183/68 139/179/127
+f 66/183/68 67/184/71 139/179/127
+f 67/184/71 68/185/73 139/179/127
+f 68/185/73 69/177/75 139/179/127
diff --git a/homedecor_modpack/homedecor/models/homedecor_kitchen_sink.obj b/homedecor_modpack/homedecor/models/homedecor_kitchen_sink.obj
new file mode 100644
index 0000000..d3126d0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_kitchen_sink.obj
@@ -0,0 +1,104 @@
+# Blender v2.73 (sub 0) OBJ File: 'kitchen_sink.blend'
+# www.blender.org
+o Cube
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.387500 0.500000 0.387500
+v -0.387500 0.500000 -0.387500
+v 0.387500 0.500000 -0.387500
+v 0.387500 0.500000 0.387500
+v -0.387500 0.400000 0.387500
+v -0.387500 0.400000 -0.387500
+v 0.387500 0.400000 -0.387500
+v 0.387500 0.400000 0.387500
+v 0.062500 0.400000 -0.062500
+v 0.062500 0.400000 0.062500
+v -0.062500 0.400000 -0.062500
+v -0.062500 0.400000 0.062500
+v 0.062500 0.312500 0.062500
+v 0.062500 0.312500 -0.062500
+v -0.062500 0.312500 0.062500
+v -0.062500 0.312500 -0.062500
+vt 0.468750 0.906250
+vt 0.468750 0.531250
+vt 0.531250 0.468750
+vt 0.531250 0.968750
+vt 0.031250 0.968750
+vt 0.093750 0.906250
+vt 0.031250 0.468750
+vt 0.093750 0.531250
+vt 0.812500 0.500000
+vt 0.812500 0.937500
+vt 0.781250 0.937500
+vt 0.781250 0.500000
+vt 0.687500 0.500000
+vt 0.718750 0.500000
+vt 0.718750 0.937500
+vt 0.687500 0.937500
+vt 0.906250 0.500000
+vt 0.906250 0.937500
+vt 0.875000 0.937500
+vt 0.875000 0.500000
+vt 0.593750 0.500000
+vt 0.625000 0.500000
+vt 0.625000 0.937500
+vt 0.593750 0.937500
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.218750 0.375000
+vt 0.218750 0.312500
+vt 0.250000 0.312500
+vt 0.250000 0.375000
+vt 0.250000 0.406250
+vt 0.312500 0.375000
+vt 0.312500 0.406250
+vt 0.312500 0.312500
+vt 0.343750 0.312500
+vt 0.343750 0.375000
+vt 0.250000 0.281250
+vt 0.312500 0.281250
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+g Cube_Cube_top
+s off
+f 9/1/1 10/2/1 6/3/1 5/4/1
+f 5/4/1 8/5/1 12/6/1 9/1/1
+f 7/7/1 6/3/1 10/2/1 11/8/1
+f 8/5/1 7/7/1 11/8/1 12/6/1
+f 15/9/2 16/10/2 12/11/2 11/12/2
+f 16/13/3 13/14/3 9/15/3 12/16/3
+f 13/17/4 14/18/4 10/19/4 9/20/4
+f 14/21/5 15/22/5 11/23/5 10/24/5
+f 13/2/1 16/1/1 18/25/1 20/26/1
+f 19/27/1 14/8/1 13/2/1 20/26/1
+f 17/28/1 15/6/1 14/8/1 19/27/1
+f 16/1/1 15/6/1 17/28/1 18/25/1
+f 17/29/2 22/30/2 21/31/2 18/32/2
+f 18/33/3 21/32/3 23/34/3 20/35/3
+f 20/34/4 23/36/4 24/37/4 19/38/4
+f 19/31/5 24/39/5 22/40/5 17/36/5
+f 24/27/1 23/26/1 21/25/1 22/28/1
+g Cube_Cube_front
+f 2/41/3 1/42/3 6/43/3 7/44/3
+g Cube_Cube_sides
+f 1/41/2 4/42/2 5/43/2 6/44/2
+f 2/42/4 7/43/4 8/44/4 3/41/4
+f 4/41/5 3/42/5 8/43/5 5/44/5
+g Cube_Cube_bottom
+f 1/43/6 2/44/6 3/41/6 4/42/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_medicine_cabinet.obj b/homedecor_modpack/homedecor/models/homedecor_medicine_cabinet.obj
new file mode 100644
index 0000000..5dc068d
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_medicine_cabinet.obj
@@ -0,0 +1,62 @@
+# Blender v2.73 (sub 0) OBJ File: 'medicine-cabinet.blend'
+# www.blender.org
+o Cylinder
+v -0.312500 -0.187500 0.500000
+v -0.312500 -0.187500 0.312500
+v 0.312500 -0.187500 0.312500
+v 0.312500 -0.187500 0.500000
+v -0.312500 0.500000 0.500000
+v -0.312500 0.500000 0.312500
+v 0.312500 0.500000 0.312500
+v 0.312500 0.500000 0.500000
+v -0.312500 0.437500 0.312500
+v 0.312500 0.437500 0.312500
+v -0.312500 -0.125000 0.312500
+v 0.312500 -0.125000 0.312500
+v -0.250000 0.437500 0.312500
+v -0.250000 -0.125000 0.312500
+v 0.250000 0.437500 0.312500
+v 0.250000 -0.125000 0.312500
+vt 0.875000 0.562500
+vt 0.875000 0.750000
+vt 0.187500 0.750000
+vt 0.187500 0.562500
+vt 0.812500 1.000000
+vt 0.187500 1.000000
+vt 0.187500 0.937500
+vt 0.812500 0.937500
+vt 0.875000 0.812500
+vt 0.875000 1.000000
+vt 0.187500 0.812500
+vt 0.187500 0.312500
+vt 0.812500 0.312500
+vt 0.250000 0.250000
+vt 0.250000 0.062500
+vt 0.875000 0.062500
+vt 0.875000 0.250000
+vt 0.812500 0.812500
+vt 0.812500 0.375000
+vt 0.187500 0.375000
+vt 0.750000 0.937500
+vt 0.750000 0.375000
+vt 0.250000 0.937500
+vt 0.250000 0.375000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cylinder_Cylinder_wood
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/5/2 7/6/2 10/7/2 9/8/2
+f 7/9/3 8/10/3 4/6/3 3/11/3
+f 8/5/4 5/6/4 1/12/4 4/13/4
+f 1/14/5 2/15/5 3/16/5 4/17/5
+f 8/18/6 7/5/6 6/6/6 5/11/6
+f 3/12/2 2/13/2 11/19/2 12/20/2
+f 13/21/2 14/22/2 11/19/2 9/8/2
+f 15/23/2 10/7/2 12/20/2 16/24/2
+g Cylinder_Cylinder_mirror
+f 14/22/2 13/21/2 15/23/2 16/24/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_medicine_cabinet_open.obj b/homedecor_modpack/homedecor/models/homedecor_medicine_cabinet_open.obj
new file mode 100644
index 0000000..5a0d026
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_medicine_cabinet_open.obj
@@ -0,0 +1,100 @@
+# Blender v2.73 (sub 0) OBJ File: 'medicine-cabinet-open.blend'
+# www.blender.org
+o Cylinder
+v -0.312500 -0.187500 0.500000
+v 0.312500 -0.187500 0.500000
+v -0.312500 0.500000 0.500000
+v 0.312500 0.500000 0.500000
+v -0.312500 0.500000 0.375000
+v -0.312500 -0.187500 0.375000
+v 0.312500 0.500000 0.375000
+v 0.312500 -0.187500 0.375000
+v -0.312500 -0.187500 -0.250000
+v -0.312500 0.500000 -0.250000
+v -0.312500 0.437500 0.375000
+v -0.312500 0.437500 -0.250000
+v -0.312500 -0.125000 0.375000
+v -0.312500 -0.125000 -0.250000
+v -0.312500 0.437500 0.312500
+v -0.312500 -0.125000 0.312500
+v -0.312500 0.437500 -0.187500
+v -0.312500 -0.125000 -0.187500
+v -0.250000 0.500000 0.375000
+v -0.250000 -0.187500 0.375000
+v -0.250000 0.500000 -0.250000
+v -0.250000 -0.187500 -0.250000
+v 0.250000 0.437500 0.375000
+v 0.250000 -0.125000 0.375000
+v -0.250000 0.125000 0.375000
+v 0.250000 0.125000 0.375000
+v 0.250000 0.187500 0.375000
+v -0.250000 0.187500 0.375000
+v -0.250000 -0.125000 0.375000
+v -0.250000 0.437500 0.375000
+v 0.312500 0.437500 0.375000
+v 0.312500 -0.125000 0.375000
+vt 0.875000 0.875000
+vt 0.875000 1.000000
+vt 0.187500 1.000000
+vt 0.187500 0.875000
+vt 0.812500 1.000000
+vt 0.187500 0.312500
+vt 0.812500 0.312500
+vt 0.812500 0.375000
+vt 0.187500 0.375000
+vt 0.187500 0.937500
+vt 0.812500 0.937500
+vt 0.250000 0.125000
+vt 0.250000 0.062500
+vt 0.875000 0.062500
+vt 0.875000 0.125000
+vt 0.812500 0.812500
+vt 0.187500 0.812500
+vt 0.250000 0.250000
+vt 0.875000 0.250000
+vt 0.875000 0.562500
+vt 0.875000 0.687500
+vt 0.187500 0.687500
+vt 0.187500 0.562500
+vt 0.750000 0.937500
+vt 0.750000 0.375000
+vt 0.250000 0.937500
+vt 0.250000 0.375000
+vt 0.875000 0.750000
+vt 0.187500 0.750000
+vt 0.750000 0.312500
+vt 0.750000 1.000000
+vt 0.250000 0.687500
+vt 0.250000 0.625000
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 -0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+g Cylinder_Cylinder_wood
+s off
+f 7/1/1 4/2/1 2/3/1 8/4/1
+f 4/5/2 3/3/2 1/6/2 2/7/2
+f 9/6/3 6/7/3 13/8/3 14/9/3
+f 21/3/4 10/10/4 5/11/4 19/5/4
+f 20/12/5 6/13/5 9/14/5 22/15/5
+f 5/5/3 10/3/3 12/10/3 11/11/3
+f 4/16/4 7/11/4 5/10/4 3/17/4
+f 1/18/5 6/12/5 8/15/5 2/19/5
+f 3/20/3 5/21/3 6/22/3 1/23/3
+f 22/7/1 21/5/1 19/3/1 20/6/1
+f 15/24/3 16/25/3 13/8/3 11/11/3
+f 17/26/3 12/10/3 14/9/3 18/27/3
+f 10/21/6 21/28/6 22/29/6 9/22/6
+f 8/6/6 20/30/6 29/25/6 32/9/6
+f 19/31/6 7/3/6 31/10/6 30/24/6
+f 23/26/6 31/10/6 32/9/6 24/27/6
+f 27/32/6 26/33/6 25/34/6 28/35/6
+g Cylinder_Cylinder_mirror
+f 16/25/3 15/24/3 17/26/3 18/27/3
+g Cylinder_Cylinder_inside
+f 23/26/6 27/32/6 28/35/6 30/24/6
+f 25/34/6 26/33/6 24/27/6 29/25/6
diff --git a/homedecor_modpack/homedecor/models/homedecor_office_chair_basic.obj b/homedecor_modpack/homedecor/models/homedecor_office_chair_basic.obj
new file mode 100644
index 0000000..40ef638
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_office_chair_basic.obj
@@ -0,0 +1,970 @@
+# Blender v2.73 (sub 0) OBJ File: 'desk_chair_lowend.blend'
+# www.blender.org
+o chair_Cube.003
+v -0.230121 0.283332 0.400571
+v -0.230121 0.283332 0.349943
+v -0.221091 0.793095 0.361231
+v -0.221091 0.793095 0.434435
+v -0.124012 0.896416 0.450239
+v -0.124012 0.896416 0.415414
+v -0.275274 0.346154 0.400571
+v -0.275274 0.346154 0.320594
+v -0.285377 0.559500 0.400571
+v -0.285377 0.559500 0.295760
+v -0.114000 0.793095 0.337677
+v -0.063944 0.896416 0.450239
+v -0.118656 0.283332 0.326389
+v -0.118656 0.283332 0.400571
+v -0.063944 0.896416 0.391861
+v -0.141938 0.342874 0.400571
+v -0.141938 0.342874 0.297040
+v -0.147148 0.559500 0.272206
+v -0.241693 0.793095 0.396242
+v -0.144615 0.896416 0.432070
+v -0.250724 0.283332 0.374156
+v -0.295877 0.346154 0.358844
+v -0.305980 0.559500 0.345887
+v -0.139259 0.273288 0.361867
+v -0.084547 0.906885 0.419781
+v -0.265896 0.128562 0.362790
+v -0.288656 0.101646 -0.397805
+v -0.265896 0.220126 0.362790
+v -0.288656 0.177983 -0.397805
+v -0.343931 0.216106 -0.266452
+v -0.343931 0.116444 -0.266452
+v -0.300517 0.116666 0.266781
+v -0.300517 0.217671 0.266781
+v -0.322224 0.118537 0.000165
+v -0.322224 0.228706 0.000165
+v -0.132174 0.205953 0.362790
+v -0.143488 0.101073 -0.397805
+v -0.132174 0.117452 0.362790
+v -0.143488 0.175027 -0.397805
+v -0.170964 0.106959 -0.266452
+v -0.170964 0.202281 -0.266452
+v -0.149384 0.099242 0.266781
+v -0.149384 0.202846 0.266781
+v -0.160174 0.099917 0.000165
+v -0.160174 0.206831 0.000165
+v -0.288785 0.171651 0.380481
+v -0.311545 0.137569 -0.413173
+v -0.366819 0.163344 -0.266452
+v -0.323406 0.164198 0.266781
+v -0.345113 0.170381 0.000165
+v -0.155063 0.159100 0.380481
+v -0.166376 0.135875 -0.413173
+v 0.230121 0.283332 0.400571
+v 0.230121 0.283332 0.349943
+v 0.221091 0.793095 0.361231
+v 0.221091 0.793095 0.434435
+v 0.124012 0.896416 0.450239
+v 0.124012 0.896416 0.415414
+v 0.000000 0.283332 0.400571
+v 0.275274 0.346154 0.400571
+v 0.275274 0.346154 0.320594
+v 0.000000 0.339381 0.400571
+v 0.285378 0.559500 0.400571
+v 0.285378 0.559500 0.295760
+v 0.000000 0.559500 0.400571
+v 0.114000 0.793095 0.337677
+v 0.063944 0.896416 0.450239
+v 0.118656 0.283332 0.326389
+v 0.118656 0.283332 0.400571
+v 0.063944 0.896416 0.391861
+v 0.141938 0.342874 0.400571
+v 0.141938 0.342874 0.297040
+v 0.147148 0.559500 0.272206
+v 0.241694 0.793095 0.396242
+v 0.144615 0.896416 0.432069
+v 0.250724 0.283332 0.374156
+v 0.295877 0.346154 0.358843
+v 0.305980 0.559500 0.345887
+v 0.139259 0.273288 0.361867
+v 0.084547 0.906885 0.419781
+v 0.265896 0.128562 0.362790
+v 0.288656 0.101646 -0.397805
+v 0.265896 0.220126 0.362790
+v 0.288656 0.177983 -0.397805
+v 0.000000 0.197428 0.362790
+v 0.000000 0.103367 0.362790
+v -0.000000 0.170037 -0.397805
+v -0.000000 0.091756 -0.397805
+v 0.343931 0.216106 -0.266452
+v 0.343931 0.116444 -0.266452
+v -0.000000 0.092701 -0.266452
+v -0.000000 0.193555 -0.266452
+v 0.300517 0.116666 0.266781
+v 0.300517 0.217671 0.266781
+v 0.000000 0.079102 0.266781
+v 0.000000 0.193555 0.266781
+v 0.322224 0.118537 0.000165
+v 0.322224 0.228706 0.000165
+v 0.000000 0.079102 0.000165
+v 0.000000 0.193555 0.000165
+v 0.132174 0.205953 0.362790
+v 0.143488 0.101073 -0.397805
+v 0.132174 0.117452 0.362790
+v 0.143488 0.175027 -0.397805
+v 0.170964 0.106959 -0.266452
+v 0.170964 0.202281 -0.266452
+v 0.149384 0.099242 0.266781
+v 0.149384 0.202846 0.266781
+v 0.160174 0.099917 0.000165
+v 0.160174 0.206831 0.000165
+v 0.288785 0.171651 0.380481
+v 0.311545 0.137569 -0.413173
+v 0.000000 0.147631 0.380481
+v -0.000000 0.128594 -0.413173
+v 0.366819 0.163344 -0.266452
+v 0.323406 0.164198 0.266781
+v 0.345113 0.170381 0.000165
+v 0.155063 0.159100 0.380481
+v 0.166376 0.135875 -0.413173
+v 0.196992 0.059935 -0.115636
+v 0.196992 0.059935 0.115636
+v 0.026330 0.114953 0.115638
+v -0.021064 0.114953 0.115638
+v 0.196992 0.114953 -0.115636
+v 0.196992 0.114953 0.115636
+v -0.196992 0.114953 0.115636
+v -0.196992 0.114953 -0.115636
+v -0.021064 0.114953 0.324567
+v 0.026330 0.114953 0.324567
+v 0.026330 0.059935 0.324567
+v -0.021064 0.059935 0.324567
+v -0.021064 0.109697 0.360918
+v 0.029090 0.109697 0.360918
+v 0.026330 0.084222 0.380825
+v -0.021064 0.084222 0.380825
+v -0.022875 0.212080 0.402273
+v 0.026693 0.211560 0.402243
+v 0.026761 0.211291 0.426733
+v -0.022807 0.211811 0.426763
+v -0.062308 0.503626 0.402273
+v 0.067396 0.503105 0.402243
+v 0.067574 0.502836 0.426733
+v -0.062130 0.503357 0.426763
+v -0.029017 0.458109 0.402273
+v -0.028930 0.457840 0.426763
+v 0.034167 0.457319 0.426733
+v 0.034080 0.457588 0.402243
+v -0.062162 0.540052 0.402672
+v 0.067542 0.539532 0.402642
+v 0.067720 0.539263 0.427132
+v -0.061983 0.539783 0.427162
+v -0.196992 0.059935 0.115636
+v -0.196992 0.059935 -0.115636
+v 0.197931 0.059935 0.115636
+v -0.346991 0.409282 0.302826
+v 0.348226 0.194174 -0.251706
+v 0.347930 0.409282 0.302826
+v 0.348226 0.181475 -0.192630
+v 0.348426 0.234603 -0.172317
+v 0.348152 0.164844 -0.191504
+v -0.062308 0.503626 0.402273
+v 0.067396 0.503105 0.402243
+v -0.029017 0.458109 0.402273
+v 0.034080 0.457588 0.402243
+v -0.062162 0.540052 0.402672
+v 0.067542 0.539532 0.402642
+v 0.001590 -0.430287 0.037516
+v 0.001590 -0.355601 0.037516
+v -0.035281 -0.430287 0.010727
+v -0.035281 -0.355601 0.010727
+v -0.021198 -0.430287 -0.032618
+v -0.021198 -0.355601 -0.032618
+v 0.024379 -0.430287 -0.032618
+v 0.024379 -0.355601 -0.032618
+v 0.038462 -0.430287 0.010727
+v 0.038462 -0.355601 0.010727
+v -0.012139 -0.445474 -0.498394
+v -0.012139 -0.400563 -0.498394
+v 0.015320 -0.445474 -0.498394
+v 0.015320 -0.400563 -0.498394
+v 0.486206 -0.445474 -0.173150
+v 0.486206 -0.400563 -0.173150
+v 0.494691 -0.445474 -0.147036
+v 0.494691 -0.400563 -0.147036
+v 0.275494 -0.445474 0.399100
+v 0.275494 -0.400563 0.399100
+v 0.297708 -0.445474 0.382960
+v 0.297708 -0.400563 0.382960
+v -0.272552 -0.445474 0.399429
+v -0.272552 -0.400563 0.399429
+v -0.294766 -0.445474 0.383289
+v -0.294766 -0.400563 0.383289
+v -0.464453 -0.445474 -0.138244
+v -0.464453 -0.400563 -0.138244
+v -0.455968 -0.445474 -0.164358
+v -0.455968 -0.400563 -0.164358
+v 0.001591 -0.202699 0.037516
+v -0.035281 -0.202699 0.010727
+v -0.021198 -0.202699 -0.032618
+v 0.024379 -0.202699 -0.032618
+v 0.038462 -0.202699 0.010727
+v 0.001591 -0.202699 0.024570
+v -0.022969 -0.202699 0.006726
+v -0.013588 -0.202699 -0.022144
+v 0.016769 -0.202699 -0.022144
+v 0.026150 -0.202699 0.006726
+v 0.001590 -0.075588 0.024570
+v -0.022969 -0.075588 0.006726
+v -0.013588 -0.075588 -0.022144
+v 0.016769 -0.075588 -0.022144
+v 0.026150 -0.075588 0.006726
+v 0.001590 -0.075588 0.017627
+v -0.016366 -0.075588 0.004581
+v -0.009507 -0.075588 -0.016528
+v 0.012688 -0.075588 -0.016528
+v 0.019547 -0.075588 0.004581
+v 0.001590 0.063069 0.017627
+v -0.016366 0.063069 0.004581
+v -0.009507 0.063069 -0.016528
+v 0.012688 0.063069 -0.016528
+v 0.019547 0.063069 0.004581
+v 0.029818 -0.470000 -0.430182
+v -0.029818 -0.470000 -0.430182
+v 0.029818 -0.491084 -0.438916
+v -0.029818 -0.491084 -0.438916
+v 0.029818 -0.499818 -0.460000
+v -0.029818 -0.499818 -0.460000
+v 0.029818 -0.491084 -0.481084
+v -0.029818 -0.491084 -0.481084
+v 0.029818 -0.470000 -0.489818
+v -0.029818 -0.470000 -0.489818
+v 0.029818 -0.448916 -0.481084
+v -0.029818 -0.448916 -0.481084
+v 0.029818 -0.440182 -0.460000
+v -0.029818 -0.440182 -0.460000
+v 0.029818 -0.448916 -0.438916
+v -0.029818 -0.448916 -0.438916
+v 0.026242 -0.202699 0.009105
+v 0.467304 -0.470000 -0.112330
+v 0.407668 -0.470000 -0.112330
+v 0.467304 -0.491084 -0.121064
+v 0.407668 -0.491084 -0.121064
+v 0.467304 -0.499818 -0.142148
+v 0.407668 -0.499818 -0.142148
+v 0.467304 -0.491084 -0.163232
+v 0.407668 -0.491084 -0.163232
+v 0.467304 -0.470000 -0.171966
+v 0.407668 -0.470000 -0.171966
+v 0.467304 -0.448916 -0.163232
+v 0.407668 -0.448916 -0.163232
+v 0.467304 -0.440182 -0.142148
+v 0.407668 -0.440182 -0.142148
+v 0.467304 -0.448916 -0.121064
+v 0.407668 -0.448916 -0.121064
+v -0.000550 -0.202699 0.027772
+v 0.300199 -0.470000 0.401966
+v 0.240563 -0.470000 0.401966
+v 0.300199 -0.491084 0.393232
+v 0.240563 -0.491084 0.393232
+v 0.300199 -0.499818 0.372148
+v 0.240563 -0.499818 0.372148
+v 0.300199 -0.491084 0.351063
+v 0.240563 -0.491084 0.351063
+v 0.300199 -0.470000 0.342330
+v 0.240563 -0.470000 0.342330
+v 0.300199 -0.448916 0.351063
+v 0.240563 -0.448916 0.351063
+v 0.300199 -0.440182 0.372148
+v 0.240563 -0.440182 0.372148
+v 0.300199 -0.448916 0.393232
+v 0.240563 -0.448916 0.393232
+v -0.026582 -0.202699 0.008059
+v -0.240563 -0.470000 0.401966
+v -0.300199 -0.470000 0.401966
+v -0.240564 -0.491084 0.393232
+v -0.300199 -0.491084 0.393232
+v -0.240563 -0.499818 0.372148
+v -0.300199 -0.499818 0.372148
+v -0.240563 -0.491084 0.351063
+v -0.300199 -0.491084 0.351063
+v -0.240564 -0.470000 0.342330
+v -0.300199 -0.470000 0.342330
+v -0.240563 -0.448916 0.351063
+v -0.300199 -0.448916 0.351063
+v -0.240563 -0.440182 0.372148
+v -0.300199 -0.440182 0.372148
+v -0.240564 -0.448916 0.393232
+v -0.300199 -0.448916 0.393232
+v -0.407668 -0.470000 -0.112330
+v -0.467304 -0.470000 -0.112330
+v -0.407668 -0.491084 -0.121063
+v -0.467304 -0.491084 -0.121063
+v -0.407668 -0.499818 -0.142148
+v -0.467304 -0.499818 -0.142148
+v -0.407668 -0.491084 -0.163232
+v -0.467304 -0.491084 -0.163232
+v -0.407668 -0.470000 -0.171966
+v -0.467304 -0.470000 -0.171966
+v -0.407668 -0.448916 -0.163232
+v -0.467304 -0.448916 -0.163232
+v -0.407668 -0.440182 -0.142148
+v -0.467304 -0.440182 -0.142148
+v -0.407668 -0.448916 -0.121063
+v -0.467304 -0.448916 -0.121063
+v 0.026330 0.059935 0.115638
+v -0.021064 0.059935 0.115638
+vt 0.984375 0.320312
+vt 0.984375 0.343750
+vt 0.726562 0.343750
+vt 0.726562 0.320312
+vt 0.726562 0.453125
+vt 0.984375 0.453125
+vt 0.984375 0.554688
+vt 0.726562 0.554688
+vt 0.171875 0.218750
+vt 0.085938 0.218750
+vt 0.085938 0.195312
+vt 0.171875 0.195312
+vt 0.171875 0.242188
+vt 0.085938 0.242188
+vt 0.116601 0.128897
+vt 0.133574 0.128897
+vt 0.138818 0.112755
+vt 0.125087 0.102779
+vt 0.111356 0.112755
+vt 0.406250 0.132812
+vt 0.406250 0.125000
+vt 0.414062 0.125000
+vt 0.414062 0.132812
+vt 0.421875 0.125000
+vt 0.421875 0.132812
+vt 0.359375 0.132812
+vt 0.359375 0.125000
+vt 0.367188 0.125000
+vt 0.367188 0.132812
+vt 0.375000 0.125000
+vt 0.375000 0.132812
+vt 0.382812 0.125000
+vt 0.382812 0.132812
+vt 0.390625 0.125000
+vt 0.390625 0.132812
+vt 0.385479 0.146639
+vt 0.382479 0.153880
+vt 0.385479 0.161122
+vt 0.392721 0.164122
+vt 0.399962 0.161122
+vt 0.402961 0.153880
+vt 0.399962 0.146639
+vt 0.392721 0.143640
+vt 0.398438 0.132812
+vt 0.398438 0.125000
+vt 0.984375 0.429688
+vt 0.726562 0.429688
+vt 0.496967 0.726626
+vt 0.434092 0.728066
+vt 0.455384 0.700488
+vt 0.507946 0.700488
+vt 0.329335 0.685124
+vt 0.319620 0.703161
+vt 0.298327 0.689321
+vt 0.308043 0.677902
+vt 0.255479 0.683698
+vt 0.245763 0.665446
+vt 0.298327 0.665446
+vt 0.122874 0.726567
+vt 0.133853 0.700428
+vt 0.245759 0.700428
+vt 0.256738 0.726567
+vt 0.271206 0.980248
+vt 0.256281 0.976540
+vt 0.294063 0.924214
+vt 0.313493 0.937580
+vt 0.136048 0.924214
+vt 0.120417 0.821666
+vt 0.259194 0.821666
+vt 0.243563 0.924214
+vt 0.563899 0.821725
+vt 0.429327 0.821725
+vt 0.563899 0.725093
+vt 0.459642 0.924273
+vt 0.668156 0.924273
+vt 0.622378 0.969632
+vt 0.594052 0.969632
+vt 0.533746 0.969632
+vt 0.505420 0.969632
+vt 0.357783 0.821630
+vt 0.335840 0.821630
+vt 0.319613 0.728007
+vt 0.337168 0.728007
+vt 0.348360 0.830152
+vt 0.371498 0.851471
+vt 0.563899 0.700488
+vt 0.248285 0.969572
+vt 0.219959 0.969572
+vt 0.298321 0.700428
+vt 0.257972 0.988527
+vt 0.248259 0.997092
+vt 0.219941 0.997092
+vt 0.229654 0.982733
+vt 0.324378 0.821666
+vt 0.319620 0.665446
+vt 0.264824 0.994862
+vt 0.312023 0.962730
+vt 0.381189 0.821630
+vt 0.354722 0.728007
+vt 0.374075 0.885297
+vt 0.248259 0.980676
+vt 0.219941 0.969572
+vt 0.498430 0.337960
+vt 0.442055 0.343252
+vt 0.451705 0.325087
+vt 0.508080 0.320403
+vt 0.344366 0.357516
+vt 0.321063 0.346650
+vt 0.311414 0.331505
+vt 0.334717 0.337744
+vt 0.626780 0.400293
+vt 0.619525 0.363688
+vt 0.675900 0.363688
+vt 0.690496 0.400293
+vt 0.259862 0.345936
+vt 0.189719 0.342866
+vt 0.189719 0.327336
+vt 0.250212 0.331264
+vt 0.252695 0.617074
+vt 0.245440 0.653679
+vt 0.189718 0.653679
+vt 0.189718 0.617074
+vt 0.352151 0.515448
+vt 0.354835 0.413768
+vt 0.372722 0.413768
+vt 0.371923 0.515448
+vt 0.624295 0.653679
+vt 0.635878 0.603598
+vt 0.708798 0.603598
+vt 0.685495 0.653679
+vt 0.250210 0.363688
+vt 0.261793 0.413768
+vt 0.189718 0.413768
+vt 0.189718 0.363688
+vt 0.631329 0.501946
+vt 0.699647 0.501946
+vt 0.257244 0.515421
+vt 0.189718 0.515421
+vt 0.427459 0.340110
+vt 0.437109 0.320072
+vt 0.354510 0.617127
+vt 0.372636 0.617127
+vt 0.563802 0.333127
+vt 0.563802 0.314464
+vt 0.563802 0.400293
+vt 0.563802 0.363688
+vt 0.316411 0.617074
+vt 0.301815 0.653679
+vt 0.563802 0.653679
+vt 0.563802 0.603598
+vt 0.311411 0.363688
+vt 0.334713 0.413768
+vt 0.563802 0.501946
+vt 0.325562 0.515421
+vt 0.508080 0.357714
+vt 0.451705 0.363688
+vt 0.334717 0.379760
+vt 0.250212 0.362442
+vt 0.189719 0.360338
+vt 0.329908 0.515448
+vt 0.437109 0.362653
+vt 0.334117 0.617127
+vt 0.563802 0.354118
+vt 0.630831 0.726626
+vt 0.619853 0.700488
+vt 0.672415 0.700488
+vt 0.693707 0.728066
+vt 0.050280 0.685124
+vt 0.071572 0.677902
+vt 0.081288 0.689321
+vt 0.059995 0.703161
+vt 0.124137 0.683698
+vt 0.081288 0.665446
+vt 0.133853 0.665446
+vt 0.108405 0.980248
+vt 0.066119 0.937580
+vt 0.085549 0.924214
+vt 0.123331 0.976540
+vt 0.698471 0.821725
+vt 0.023406 0.821630
+vt 0.042444 0.728007
+vt 0.059998 0.728007
+vt 0.045349 0.821630
+vt 0.008113 0.851471
+vt 0.031251 0.830152
+vt 0.131327 0.969572
+vt 0.159653 0.969572
+vt 0.081290 0.700428
+vt 0.121623 0.988527
+vt 0.149940 0.982733
+vt 0.159653 0.997092
+vt 0.131335 0.997092
+vt 0.055234 0.821666
+vt 0.059995 0.665446
+vt 0.114788 0.994862
+vt 0.067588 0.962730
+vt 0.000000 0.821630
+vt 0.024890 0.728007
+vt 0.005536 0.885297
+vt 0.131335 0.980676
+vt 0.629173 0.337960
+vt 0.619523 0.320403
+vt 0.675898 0.325087
+vt 0.685548 0.343252
+vt 0.035073 0.357516
+vt 0.044722 0.337744
+vt 0.068025 0.331505
+vt 0.058376 0.346650
+vt 0.500824 0.400293
+vt 0.437109 0.400293
+vt 0.508080 0.363688
+vt 0.119577 0.345936
+vt 0.129227 0.331264
+vt 0.126740 0.617074
+vt 0.133995 0.653679
+vt 0.027284 0.515448
+vt 0.007512 0.515448
+vt 0.006715 0.413768
+vt 0.024600 0.413768
+vt 0.503310 0.653679
+vt 0.442110 0.653679
+vt 0.418807 0.603598
+vt 0.491726 0.603598
+vt 0.129226 0.363688
+vt 0.117642 0.413768
+vt 0.496275 0.501946
+vt 0.427958 0.501946
+vt 0.122191 0.515421
+vt 0.690494 0.320072
+vt 0.700144 0.340110
+vt 0.024926 0.617127
+vt 0.006799 0.617127
+vt 0.063025 0.617074
+vt 0.077620 0.653679
+vt 0.068025 0.363688
+vt 0.044722 0.413768
+vt 0.053874 0.515421
+vt 0.619523 0.357714
+vt 0.044722 0.379760
+vt 0.129227 0.362442
+vt 0.049527 0.515448
+vt 0.690494 0.362653
+vt 0.045319 0.617127
+vt 0.455692 0.046847
+vt 0.455692 0.023876
+vt 0.479179 0.034017
+vt 0.470868 0.040478
+vt 0.498360 0.087287
+vt 0.488135 0.087399
+vt 0.687287 0.024092
+vt 0.687287 0.047063
+vt 0.672112 0.040694
+vt 0.663799 0.034233
+vt 0.523254 0.007353
+vt 0.523254 0.022978
+vt 0.507629 0.022978
+vt 0.507629 0.007353
+vt 0.488135 0.190120
+vt 0.498360 0.190008
+vt 0.498360 0.209012
+vt 0.488135 0.209124
+vt 0.654857 0.087398
+vt 0.644633 0.087286
+vt 0.597528 0.034322
+vt 0.617296 0.034322
+vt 0.617476 0.087321
+vt 0.596802 0.087538
+vt 0.527657 0.040663
+vt 0.548576 0.040663
+vt 0.549331 0.087537
+vt 0.528656 0.087320
+vt 0.498526 0.224221
+vt 0.488301 0.224333
+vt 0.644633 0.190008
+vt 0.654857 0.190120
+vt 0.654857 0.209124
+vt 0.644633 0.209012
+vt 0.620565 0.189938
+vt 0.594248 0.190156
+vt 0.551893 0.190155
+vt 0.525575 0.189938
+vt 0.511561 0.225441
+vt 0.565714 0.225454
+vt 0.565640 0.235679
+vt 0.511486 0.235666
+vt 0.654690 0.224333
+vt 0.644465 0.224220
+vt 0.189808 0.665446
+vt 0.634499 0.208923
+vt 0.634560 0.224116
+vt 0.580461 0.224333
+vt 0.580400 0.209140
+vt 0.940843 0.607079
+vt 0.941271 0.613390
+vt 0.963690 0.618209
+vt 0.565779 0.209139
+vt 0.511679 0.208922
+vt 0.565717 0.224333
+vt 0.511617 0.224115
+vt 0.213217 0.249509
+vt 0.213217 0.231846
+vt 0.382049 0.231846
+vt 0.382049 0.241659
+vt 0.132812 0.085938
+vt 0.109375 0.085938
+vt 0.109375 0.000000
+vt 0.132812 0.000000
+vt 0.189948 0.000000
+vt 0.206653 0.000000
+vt 0.203333 0.168670
+vt 0.193269 0.168670
+vt 0.406250 0.117188
+vt 0.406250 0.093750
+vt 0.414062 0.093750
+vt 0.414062 0.117188
+vt 0.156538 0.000000
+vt 0.173243 0.000000
+vt 0.169923 0.168784
+vt 0.159859 0.168784
+vt 0.382042 0.200580
+vt 0.382042 0.218243
+vt 0.213210 0.210393
+vt 0.213210 0.200580
+vt 0.382812 0.117188
+vt 0.375000 0.117188
+vt 0.375000 0.093750
+vt 0.382812 0.093750
+vt 0.186628 0.168848
+vt 0.176564 0.168847
+vt 0.398438 0.117188
+vt 0.390625 0.117188
+vt 0.390625 0.093750
+vt 0.398438 0.093750
+vt 0.223359 0.000001
+vt 0.220038 0.168738
+vt 0.209974 0.168738
+vt 0.240064 0.000000
+vt 0.236744 0.168837
+vt 0.226679 0.168837
+vt 0.070177 0.178780
+vt 0.095592 0.178779
+vt 0.091349 0.184895
+vt 0.074420 0.184895
+vt 0.085938 0.085938
+vt 0.085938 0.000000
+vt 0.062500 0.085938
+vt 0.062500 0.000000
+vt 0.039062 0.085938
+vt 0.039062 0.000000
+vt 0.015625 0.085938
+vt 0.015625 0.000000
+vt 0.093750 0.164062
+vt 0.078125 0.164062
+vt 0.078125 0.085938
+vt 0.093750 0.085938
+vt 0.121007 0.178780
+vt 0.116765 0.184895
+vt 0.099836 0.184895
+vt 0.146421 0.178780
+vt 0.142177 0.184894
+vt 0.125250 0.184894
+vt 0.171836 0.178780
+vt 0.167592 0.184895
+vt 0.150663 0.184896
+vt 0.197249 0.178780
+vt 0.193007 0.184895
+vt 0.176078 0.184896
+vt 0.069976 0.187157
+vt 0.086929 0.187158
+vt 0.084650 0.190480
+vt 0.072255 0.190480
+vt 0.062500 0.164062
+vt 0.046875 0.164062
+vt 0.046875 0.085938
+vt 0.031250 0.164062
+vt 0.031250 0.085938
+vt 0.015625 0.164062
+vt 0.054688 0.250000
+vt 0.046875 0.250000
+vt 0.054688 0.164062
+vt 0.103883 0.187159
+vt 0.101604 0.190481
+vt 0.089208 0.190480
+vt 0.120835 0.187159
+vt 0.118556 0.190482
+vt 0.106162 0.190482
+vt 0.137789 0.187157
+vt 0.135510 0.190480
+vt 0.123114 0.190481
+vt 0.154743 0.187157
+vt 0.152464 0.190481
+vt 0.140067 0.190480
+vt 0.039062 0.250000
+vt 0.039062 0.164062
+vt 0.031250 0.250000
+vt 0.023438 0.250000
+vt 0.023438 0.164062
+vt 0.015625 0.250000
+vt 0.624817 0.007353
+vt 0.624817 0.022978
+vt 0.292515 0.169147
+vt 0.282290 0.169147
+vt 0.278916 0.000000
+vt 0.295889 0.000000
+vt 0.275542 0.169133
+vt 0.265317 0.169133
+vt 0.261943 0.000000
+vt 0.343433 0.169156
+vt 0.333208 0.169156
+vt 0.329834 0.000000
+vt 0.346807 0.000000
+vt 0.326461 0.169074
+vt 0.316235 0.169073
+vt 0.312861 0.000000
+vt 0.309488 0.169046
+vt 0.299262 0.169046
+s off
+f 126/1 152/2 154/3 125/4
+f 124/5 127/6 126/7 125/8
+f 126/9 127/10 153/11 152/12
+f 124/13 125/14 154/10 120/9
+f 173/15 171/16 169/17 167/18 175/19
+f 222/20 223/21 225/22 224/23
+f 224/23 225/22 227/24 226/25
+f 226/26 227/27 229/28 228/29
+f 228/29 229/28 231/30 230/31
+f 230/31 231/30 233/32 232/33
+f 232/33 233/32 235/34 234/35
+f 225/36 223/37 237/38 235/39 233/40 231/41 229/42 227/43
+f 236/44 237/45 223/21 222/20
+f 234/35 235/34 237/45 236/44
+f 222/37 224/36 226/43 228/42 230/41 232/40 234/39 236/38
+f 239/20 240/21 242/22 241/23
+f 241/23 242/22 244/24 243/25
+f 243/26 244/27 246/28 245/29
+f 245/29 246/28 248/30 247/31
+f 247/31 248/30 250/32 249/33
+f 249/33 250/32 252/34 251/35
+f 242/36 240/37 254/38 252/39 250/40 248/41 246/42 244/43
+f 253/44 254/45 240/21 239/20
+f 251/35 252/34 254/45 253/44
+f 239/37 241/36 243/43 245/42 247/41 249/40 251/39 253/38
+f 256/20 257/21 259/22 258/23
+f 258/23 259/22 261/24 260/25
+f 260/26 261/27 263/28 262/29
+f 262/29 263/28 265/30 264/31
+f 264/31 265/30 267/32 266/33
+f 266/33 267/32 269/34 268/35
+f 259/36 257/37 271/38 269/39 267/40 265/41 263/42 261/43
+f 270/44 271/45 257/21 256/20
+f 268/35 269/34 271/45 270/44
+f 256/37 258/36 260/43 262/42 264/41 266/40 268/39 270/38
+f 273/20 274/21 276/22 275/23
+f 275/23 276/22 278/24 277/25
+f 277/26 278/27 280/28 279/29
+f 279/29 280/28 282/30 281/31
+f 281/31 282/30 284/32 283/33
+f 283/33 284/32 286/34 285/35
+f 276/36 274/37 288/38 286/39 284/40 282/41 280/42 278/43
+f 287/44 288/45 274/21 273/20
+f 285/35 286/34 288/45 287/44
+f 273/37 275/36 277/43 279/42 281/41 283/40 285/39 287/38
+f 289/20 290/21 292/22 291/23
+f 291/23 292/22 294/24 293/25
+f 293/26 294/27 296/28 295/29
+f 295/29 296/28 298/30 297/31
+f 297/31 298/30 300/32 299/33
+f 299/33 300/32 302/34 301/35
+f 292/36 290/37 304/38 302/39 300/40 298/41 296/42 294/43
+f 303/44 304/45 290/21 289/20
+f 301/35 302/34 304/45 303/44
+f 289/37 291/36 293/43 295/42 297/41 299/40 301/39 303/38
+f 153/46 127/6 124/5 120/47
+s 1
+f 16/48 7/49 1/50 14/51
+f 22/52 8/53 2/54 21/55
+f 24/56 14/57 1/58 21/55
+f 72/59 68/60 13/61 17/62
+f 20/63 6/64 3/65 19/66
+f 66/67 73/68 18/69 11/70
+f 65/71 9/72 7/49 16/48 62/73
+f 4/74 56/75 57/76 67/77 12/78 5/79
+f 23/80 10/81 8/82 22/83
+f 19/66 3/65 10/84 23/85
+f 73/68 72/59 17/62 18/69
+f 62/73 16/48 14/51 59/86
+f 6/87 15/88 11/70 3/65
+f 8/82 17/62 13/61 2/89
+f 20/90 5/91 12/92 25/93
+f 10/94 18/69 17/62 8/82
+f 3/65 11/70 18/69 10/94
+f 7/95 22/52 21/55 1/58
+f 13/61 24/56 21/55 2/54
+f 5/96 20/63 19/66 4/97
+f 9/98 23/80 22/83 7/99
+f 4/97 19/66 23/85 9/100
+f 6/101 20/90 25/93 15/102
+f 51/103 46/104 26/105 38/106
+f 48/107 47/108 27/109 31/110
+f 42/111 38/112 26/113 32/114
+f 52/115 114/116 88/117 37/118
+f 43/119 36/120 85/121 96/122
+f 50/123 48/124 31/125 34/126
+f 37/127 40/128 31/129 27/130
+f 39/131 41/132 92/133 87/134
+f 44/135 42/111 32/114 34/136
+f 45/137 43/119 96/122 100/138
+f 46/104 49/139 32/140 26/105
+f 49/141 50/123 34/126 32/142
+f 40/128 44/135 34/136 31/129
+f 41/132 45/137 100/138 92/133
+f 113/143 51/103 38/106 86/144
+f 95/145 86/146 38/112 42/111
+f 47/108 52/115 37/118 27/109
+f 33/147 28/148 36/120 43/119
+f 88/149 91/150 40/128 37/127
+f 29/151 30/152 41/132 39/131
+f 99/153 95/145 42/111 44/135
+f 35/154 33/147 43/119 45/137
+f 91/150 99/153 44/135 40/128
+f 30/152 35/154 45/137 41/132
+f 36/155 28/156 46/104 51/103
+f 30/157 29/151 47/108 48/107
+f 39/158 87/159 114/116 52/115
+f 35/160 30/152 48/124 50/123
+f 28/156 33/161 49/139 46/104
+f 33/162 35/160 50/123 49/141
+f 85/163 36/155 51/103 113/143
+f 29/151 39/158 52/115 47/108
+f 71/164 69/165 53/166 60/167
+f 77/168 76/169 54/170 61/171
+f 79/172 76/169 53/173 69/174
+f 75/175 74/176 55/177 58/178
+f 65/71 62/73 71/164 60/167 63/179
+f 4/74 9/72 65/71 63/179 56/75
+f 78/180 77/181 61/182 64/183
+f 74/176 78/184 64/185 55/177
+f 62/73 59/86 69/165 71/164
+f 58/186 55/177 66/67 70/187
+f 61/182 54/188 68/60 72/59
+f 75/189 80/190 67/191 57/192
+f 64/193 61/182 72/59 73/68
+f 55/177 64/193 73/68 66/67
+f 60/194 53/173 76/169 77/168
+f 68/60 54/170 76/169 79/172
+f 57/195 56/196 74/176 75/175
+f 63/197 60/198 77/181 78/180
+f 56/196 63/199 78/184 74/176
+f 58/200 70/187 80/190 75/189
+f 118/201 103/202 81/203 111/204
+f 115/205 90/206 82/207 112/208
+f 107/209 93/210 81/156 103/211
+f 119/212 102/213 88/117 114/116
+f 108/214 96/122 85/121 101/215
+f 117/216 97/217 90/218 115/219
+f 102/220 82/221 90/222 105/223
+f 104/224 87/134 92/133 106/225
+f 109/226 97/227 93/210 107/209
+f 110/228 100/138 96/122 108/214
+f 111/204 81/203 93/229 116/230
+f 116/231 93/232 97/217 117/216
+f 105/223 90/222 97/227 109/226
+f 106/225 92/133 100/138 110/228
+f 113/143 86/144 103/202 118/201
+f 95/145 107/209 103/211 86/146
+f 112/208 82/207 102/213 119/212
+f 94/233 108/214 101/215 83/234
+f 88/149 102/220 105/223 91/150
+f 84/235 104/224 106/225 89/236
+f 99/153 109/226 107/209 95/145
+f 98/237 110/228 108/214 94/233
+f 91/150 105/223 109/226 99/153
+f 89/236 106/225 110/228 98/237
+f 101/238 118/201 111/204 83/113
+f 89/239 115/205 112/208 84/235
+f 104/240 119/212 114/116 87/159
+f 98/241 117/216 115/219 89/236
+f 83/113 111/204 116/230 94/242
+f 94/243 116/231 117/216 98/241
+f 85/163 113/143 118/201 101/238
+f 84/235 112/208 119/212 104/240
+f 121/3 152/2 153/46 120/47
+f 128/244 131/245 135/246 132/247
+f 131/245 128/244 123/244 306/245
+f 132/247 135/246 139/248 136/249
+f 130/250 129/251 133/252 134/253
+f 131/254 130/255 134/256 135/257
+f 144/258 145/259 143/260 140/261
+f 134/253 133/252 137/262 138/263
+f 135/264 134/265 138/266 139/267
+f 133/268 132/269 136/270 137/271
+f 140/261 143/260 151/272 148/273
+f 146/274 147/275 141/276 142/277
+f 136/249 139/248 145/259 144/258
+f 138/263 137/262 147/275 146/274
+f 139/267 138/266 146/278 145/279
+f 137/271 136/270 144/280 147/281
+f 149/282 148/283 151/284 150/285
+f 142/277 141/276 149/286 150/287
+f 15/102 25/93 80/190 70/187
+f 24/56 79/172 69/174 59/288 14/57
+f 80/190 25/93 12/92 67/191
+f 70/187 66/67 11/70 15/88
+f 142/289 150/290 151/291 143/292 145/279 146/278
+f 79/172 24/56 13/61 68/60
+f 160/293 158/294 156/295
+f 164/281 163/280 161/296 162/297
+f 162/297 161/296 165/298 166/299
+f 170/300 169/301 191/302 192/303
+f 172/300 171/301 195/302 196/303
+f 174/300 173/301 179/302 180/303
+f 168/304 176/305 201/306 197/307
+f 176/308 168/309 186/310 188/311
+f 176/300 175/301 183/302 184/303
+f 177/312 178/313 180/314 179/315
+f 172/316 174/317 180/318 178/319
+f 171/320 172/321 178/322 177/323
+f 181/324 182/325 184/326 183/327
+f 174/317 176/308 184/328 182/329
+f 173/320 174/321 182/322 181/323
+f 187/330 188/331 186/332 185/333
+f 175/320 176/321 188/322 187/323
+f 168/300 167/301 185/302 186/303
+f 189/333 190/313 192/312 191/330
+f 167/320 168/321 190/322 189/323
+f 168/309 170/334 192/335 190/336
+f 193/331 194/324 196/327 195/332
+f 170/334 172/337 196/338 194/339
+f 169/320 170/321 194/322 193/323
+f 197/340 201/341 206/342 202/343
+f 176/305 174/344 200/345 201/306
+f 174/344 172/346 199/347 200/345
+f 172/346 170/348 198/349 199/347
+f 170/348 168/350 197/351 198/349
+f 202/352 206/353 211/354 207/355
+f 201/341 200/356 205/357 206/358
+f 200/356 199/359 204/360 205/361
+f 199/359 198/362 203/363 204/364
+f 198/362 197/365 202/366 203/367
+f 207/368 211/369 216/370 212/371
+f 206/353 205/372 210/346 211/354
+f 205/372 204/373 209/374 210/346
+f 204/373 203/375 208/376 209/374
+f 203/375 202/377 207/350 208/376
+f 212/378 216/379 221/373 217/380
+f 211/369 210/381 215/382 216/383
+f 210/381 209/384 214/385 215/386
+f 209/384 208/387 213/388 214/389
+f 208/387 207/390 212/391 213/392
+f 216/379 215/393 220/394 221/373
+f 215/393 214/395 219/375 220/394
+f 214/395 213/396 218/397 219/375
+f 213/396 212/398 217/377 218/397
+f 129/251 130/250 305/250 122/251
+f 130/255 131/254 306/399 305/400
+f 193/401 195/402 171/403 169/404
+f 177/405 179/406 173/407 171/403
+f 181/408 183/409 175/410 173/411
+f 187/412 185/413 167/414 175/410
+f 189/415 191/416 169/404 167/414
+l 158 159
diff --git a/homedecor_modpack/homedecor/models/homedecor_office_chair_upscale.obj b/homedecor_modpack/homedecor/models/homedecor_office_chair_upscale.obj
new file mode 100644
index 0000000..254cb67
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_office_chair_upscale.obj
@@ -0,0 +1,1956 @@
+# Blender v2.73 (sub 0) OBJ File: 'desk_chair.blend'
+# www.blender.org
+o chair_Cube.003
+v -0.230121 0.283332 0.400571
+v -0.230121 0.283332 0.349943
+v -0.221091 0.793095 0.361231
+v -0.221091 0.793095 0.434435
+v -0.124012 0.896416 0.450239
+v -0.124012 0.896416 0.415414
+v -0.275274 0.346154 0.400571
+v -0.275274 0.346154 0.320594
+v -0.285377 0.559500 0.400571
+v -0.285377 0.559500 0.295760
+v -0.114000 0.793095 0.337677
+v -0.063944 0.896416 0.450239
+v -0.118656 0.283332 0.326389
+v -0.118656 0.283332 0.400571
+v -0.063944 0.896416 0.391861
+v -0.141938 0.342874 0.400571
+v -0.141938 0.342874 0.297040
+v -0.147148 0.559500 0.272206
+v -0.241693 0.793095 0.396242
+v -0.144615 0.896416 0.432070
+v -0.250724 0.283332 0.374156
+v -0.295877 0.346154 0.358844
+v -0.305980 0.559500 0.345887
+v -0.139259 0.273288 0.361867
+v -0.084547 0.906885 0.419781
+v -0.265896 0.128562 0.362790
+v -0.288656 0.101646 -0.397805
+v -0.265896 0.220126 0.362790
+v -0.288656 0.177983 -0.397805
+v -0.343931 0.216106 -0.266452
+v -0.343931 0.116444 -0.266452
+v -0.300517 0.116666 0.266781
+v -0.300517 0.217671 0.266781
+v -0.322224 0.118537 0.000165
+v -0.322224 0.228706 0.000165
+v -0.132174 0.205953 0.362790
+v -0.143488 0.101073 -0.397805
+v -0.132174 0.117452 0.362790
+v -0.143488 0.175027 -0.397805
+v -0.170964 0.106959 -0.266452
+v -0.170964 0.202281 -0.266452
+v -0.149384 0.099242 0.266781
+v -0.149384 0.202846 0.266781
+v -0.160174 0.099917 0.000165
+v -0.160174 0.206831 0.000165
+v -0.288785 0.171651 0.380481
+v -0.311545 0.137569 -0.413173
+v -0.366819 0.163344 -0.266452
+v -0.323406 0.164198 0.266781
+v -0.345113 0.170381 0.000165
+v -0.155063 0.159100 0.380481
+v -0.166376 0.135875 -0.413173
+v 0.230121 0.283332 0.400571
+v 0.230121 0.283332 0.349943
+v 0.221091 0.793095 0.361231
+v 0.221091 0.793095 0.434435
+v 0.124012 0.896416 0.450239
+v 0.124012 0.896416 0.415414
+v 0.000000 0.283332 0.400571
+v 0.275274 0.346154 0.400571
+v 0.275274 0.346154 0.320594
+v 0.000000 0.339381 0.400571
+v 0.285378 0.559500 0.400571
+v 0.285378 0.559500 0.295760
+v 0.000000 0.559500 0.400571
+v 0.114000 0.793095 0.337677
+v 0.063944 0.896416 0.450239
+v 0.118656 0.283332 0.326389
+v 0.118656 0.283332 0.400571
+v 0.063944 0.896416 0.391861
+v 0.141938 0.342874 0.400571
+v 0.141938 0.342874 0.297040
+v 0.147148 0.559500 0.272206
+v 0.241694 0.793095 0.396242
+v 0.144615 0.896416 0.432069
+v 0.250724 0.283332 0.374156
+v 0.295877 0.346154 0.358843
+v 0.305980 0.559500 0.345887
+v 0.139259 0.273288 0.361867
+v 0.084547 0.906885 0.419781
+v 0.265896 0.128562 0.362790
+v 0.288656 0.101646 -0.397805
+v 0.265896 0.220126 0.362790
+v 0.288656 0.177983 -0.397805
+v 0.000000 0.197428 0.362790
+v 0.000000 0.103367 0.362790
+v -0.000000 0.170037 -0.397805
+v -0.000000 0.091756 -0.397805
+v 0.343931 0.216106 -0.266452
+v 0.343931 0.116444 -0.266452
+v -0.000000 0.092701 -0.266452
+v -0.000000 0.193555 -0.266452
+v 0.300517 0.116666 0.266781
+v 0.300517 0.217671 0.266781
+v 0.000000 0.079102 0.266781
+v 0.000000 0.193555 0.266781
+v 0.322224 0.118537 0.000165
+v 0.322224 0.228706 0.000165
+v 0.000000 0.079102 0.000165
+v 0.000000 0.193555 0.000165
+v 0.132174 0.205953 0.362790
+v 0.143488 0.101073 -0.397805
+v 0.132174 0.117452 0.362790
+v 0.143488 0.175027 -0.397805
+v 0.170964 0.106959 -0.266452
+v 0.170964 0.202281 -0.266452
+v 0.149384 0.099242 0.266781
+v 0.149384 0.202846 0.266781
+v 0.160174 0.099917 0.000165
+v 0.160174 0.206831 0.000165
+v 0.288785 0.171651 0.380481
+v 0.311545 0.137569 -0.413173
+v 0.000000 0.147631 0.380481
+v -0.000000 0.128594 -0.413173
+v 0.366819 0.163344 -0.266452
+v 0.323406 0.164198 0.266781
+v 0.345113 0.170381 0.000165
+v 0.155063 0.159100 0.380481
+v 0.166376 0.135875 -0.413173
+v 0.346992 0.059935 -0.115636
+v 0.346992 0.059935 0.115636
+v 0.026330 0.114953 0.115638
+v -0.021064 0.114953 0.115638
+v 0.346992 0.114953 -0.115636
+v 0.346992 0.114953 0.115636
+v -0.346992 0.114953 0.115636
+v -0.346992 0.114953 -0.115636
+v -0.021064 0.114953 0.324567
+v 0.026330 0.114953 0.324567
+v 0.026330 0.059935 0.324567
+v -0.021064 0.059935 0.324567
+v -0.021064 0.109697 0.360918
+v 0.029090 0.109697 0.360918
+v 0.026330 0.084222 0.380825
+v -0.021064 0.084222 0.380825
+v -0.022875 0.212080 0.402273
+v 0.026693 0.211560 0.402243
+v 0.026761 0.211291 0.426733
+v -0.022807 0.211811 0.426763
+v -0.062308 0.503626 0.402273
+v 0.067396 0.503105 0.402243
+v 0.067574 0.502836 0.426733
+v -0.062130 0.503357 0.426763
+v -0.029017 0.458109 0.402273
+v -0.028930 0.457840 0.426763
+v 0.034167 0.457319 0.426733
+v 0.034080 0.457588 0.402243
+v -0.062162 0.540052 0.402672
+v 0.067542 0.539532 0.402642
+v 0.067720 0.539263 0.427132
+v -0.061983 0.539783 0.427162
+v -0.346992 0.059935 0.115636
+v -0.346992 0.059935 -0.115636
+v 0.347931 0.059935 0.115636
+v 0.347931 0.059935 -0.115636
+v -0.373736 0.364841 0.302842
+v -0.346992 0.364841 0.302842
+v -0.346992 0.059935 -0.243977
+v -0.346992 0.114953 -0.276098
+v -0.373736 0.059935 -0.243977
+v -0.373736 0.114953 -0.276098
+v -0.346992 0.059935 0.225942
+v -0.346992 0.114953 0.302842
+v -0.373736 0.059935 0.225942
+v -0.373736 0.114953 0.302842
+v -0.373736 0.357897 0.234933
+v -0.346992 0.357897 0.234933
+v -0.346992 0.114953 0.183026
+v -0.373736 0.114953 0.183026
+v -0.374031 0.194174 -0.251706
+v -0.374231 0.257384 -0.223217
+v -0.374164 0.306404 -0.190559
+v -0.374215 0.343052 -0.153660
+v -0.374210 0.369150 -0.112450
+v -0.374163 0.386516 -0.066856
+v -0.374087 0.396972 -0.016807
+v -0.373996 0.402336 0.037767
+v -0.373901 0.404429 0.096940
+v -0.373818 0.405070 0.160781
+v -0.373758 0.406081 0.229363
+v -0.373735 0.409282 0.302826
+v -0.373736 0.114953 -0.135838
+v -0.374031 0.181475 -0.192630
+v -0.374231 0.234603 -0.172317
+v -0.374164 0.275863 -0.142596
+v -0.374215 0.306780 -0.109121
+v -0.374210 0.328880 -0.071818
+v -0.374163 0.343689 -0.030611
+v -0.374087 0.352731 0.014573
+v -0.373996 0.357532 0.063810
+v -0.373901 0.359618 0.117173
+v -0.373818 0.360514 0.174738
+v -0.373758 0.360696 0.205741
+v -0.347287 0.194174 -0.251706
+v -0.347488 0.257384 -0.223217
+v -0.347421 0.306404 -0.190559
+v -0.347471 0.343052 -0.153660
+v -0.347466 0.369150 -0.112450
+v -0.347419 0.386516 -0.066856
+v -0.347343 0.396972 -0.016807
+v -0.347252 0.402336 0.037767
+v -0.347158 0.404429 0.096940
+v -0.347074 0.405070 0.160781
+v -0.347014 0.406081 0.229363
+v -0.346991 0.409282 0.302826
+v -0.346992 0.114953 -0.135838
+v -0.347287 0.181475 -0.192630
+v -0.347488 0.234603 -0.172317
+v -0.347421 0.275863 -0.142596
+v -0.347471 0.306780 -0.109121
+v -0.347466 0.328880 -0.071818
+v -0.347419 0.343689 -0.030611
+v -0.347343 0.352731 0.014573
+v -0.347252 0.357532 0.063810
+v -0.347158 0.359618 0.117173
+v -0.347074 0.360514 0.174738
+v -0.347014 0.360696 0.205741
+v -0.327904 0.367863 -0.167815
+v -0.322748 0.367792 0.332107
+v -0.399418 0.367792 0.332107
+v -0.394262 0.367863 -0.167815
+v -0.328894 0.414796 -0.167815
+v -0.323891 0.425190 0.332107
+v -0.398275 0.425190 0.332107
+v -0.393273 0.414796 -0.167815
+v -0.344615 0.401216 -0.201532
+v -0.344204 0.371636 -0.201699
+v -0.377962 0.371636 -0.201699
+v -0.377551 0.401216 -0.201532
+v -0.357151 0.385258 -0.210646
+v -0.357115 0.380377 -0.210646
+v -0.365051 0.380377 -0.210646
+v -0.365015 0.385258 -0.210646
+v -0.322466 0.424711 -0.107590
+v -0.321280 0.365484 -0.107590
+v -0.399700 0.424711 -0.107590
+v -0.400886 0.365484 -0.107590
+v -0.357210 0.394860 0.351911
+v -0.364956 0.394860 0.351911
+v -0.364956 0.399645 0.351911
+v -0.357210 0.399645 0.351911
+v -0.342915 0.413436 0.347086
+v -0.342357 0.379907 0.347086
+v -0.379809 0.379907 0.347086
+v -0.379251 0.413436 0.347086
+v -0.319634 0.427820 0.311408
+v -0.403806 0.365081 0.311408
+v -0.318360 0.365081 0.311408
+v -0.402532 0.427820 0.311408
+v -0.318360 0.365081 -0.073487
+v -0.402532 0.427820 -0.073487
+v -0.319634 0.427820 -0.073487
+v -0.403806 0.365081 -0.073487
+v -0.361083 0.436191 0.332107
+v -0.361083 0.422779 -0.167815
+v -0.361083 0.405255 -0.201532
+v -0.361083 0.385945 -0.210646
+v -0.361083 0.435573 -0.107590
+v -0.361083 0.400659 0.351911
+v -0.361083 0.421024 0.347086
+v -0.361083 0.439585 0.311408
+v -0.361083 0.439585 -0.073487
+v -0.313089 0.397253 0.332107
+v -0.409077 0.397253 0.332107
+v -0.321778 0.390042 -0.167815
+v -0.400388 0.390042 -0.167815
+v -0.382275 0.382875 -0.201615
+v -0.339891 0.382875 -0.201615
+v -0.366144 0.382818 -0.210646
+v -0.356022 0.382818 -0.210646
+v -0.410915 0.395499 -0.107590
+v -0.311251 0.395499 -0.107590
+v -0.366597 0.397253 0.351911
+v -0.355569 0.397253 0.351911
+v -0.384527 0.397253 0.347086
+v -0.337639 0.397253 0.347086
+v -0.414571 0.397253 0.311408
+v -0.307595 0.397253 0.311408
+v -0.307596 0.397253 -0.073487
+v -0.414571 0.397253 -0.073487
+v -0.346992 0.085585 -0.271788
+v -0.373736 0.085585 -0.271788
+v -0.346992 0.070651 -0.260976
+v -0.373736 0.070651 -0.260976
+v -0.373736 0.101199 -0.275519
+v -0.346992 0.101199 -0.275519
+v -0.346992 0.076814 0.284436
+v -0.373736 0.076814 0.284436
+v -0.346992 0.065532 0.257801
+v -0.373736 0.065532 0.257801
+v -0.373736 0.091805 0.298224
+v -0.346992 0.091805 0.298224
+v -0.373883 0.148214 -0.184858
+v -0.347140 0.148214 -0.184858
+v -0.373957 0.164844 -0.191504
+v -0.347213 0.164844 -0.191504
+v -0.347066 0.131584 -0.169084
+v -0.373810 0.131584 -0.169084
+v -0.346992 0.192263 0.276099
+v -0.373736 0.192263 0.276098
+v -0.346992 0.139783 0.252341
+v -0.373736 0.139783 0.252341
+v -0.346992 0.124887 0.231133
+v -0.373736 0.158336 0.266217
+v -0.346992 0.158336 0.266217
+v -0.373736 0.124887 0.231133
+v -0.373736 0.313067 0.276098
+v -0.346992 0.313067 0.276099
+v -0.373736 0.345059 0.266017
+v -0.346992 0.345059 0.266017
+v -0.373736 0.352685 0.254789
+v -0.346992 0.332030 0.273386
+v -0.373736 0.332030 0.273386
+v -0.346992 0.352685 0.254789
+v 0.374674 0.364841 0.302842
+v 0.347931 0.364841 0.302842
+v 0.347931 0.059935 -0.243977
+v 0.347931 0.114953 -0.276098
+v 0.374674 0.059935 -0.243977
+v 0.374674 0.114953 -0.276098
+v 0.347931 0.059935 0.225942
+v 0.347931 0.114953 0.302842
+v 0.374674 0.059935 0.225942
+v 0.374674 0.114953 0.302842
+v 0.374674 0.357897 0.234933
+v 0.347931 0.357897 0.234933
+v 0.347931 0.114953 0.183026
+v 0.374674 0.114953 0.183026
+v 0.374970 0.194174 -0.251706
+v 0.375170 0.257384 -0.223217
+v 0.375103 0.306404 -0.190559
+v 0.375153 0.343052 -0.153660
+v 0.375149 0.369150 -0.112450
+v 0.375102 0.386516 -0.066856
+v 0.375026 0.396972 -0.016807
+v 0.374934 0.402336 0.037767
+v 0.374840 0.404429 0.096940
+v 0.374757 0.405070 0.160781
+v 0.374697 0.406081 0.229363
+v 0.374674 0.409282 0.302826
+v 0.374675 0.114953 -0.135838
+v 0.374970 0.181475 -0.192630
+v 0.375170 0.234603 -0.172317
+v 0.375103 0.275863 -0.142596
+v 0.375153 0.306780 -0.109121
+v 0.375149 0.328880 -0.071818
+v 0.375102 0.343689 -0.030611
+v 0.375026 0.352731 0.014573
+v 0.374934 0.357532 0.063810
+v 0.374840 0.359618 0.117173
+v 0.374757 0.360514 0.174738
+v 0.374697 0.360696 0.205741
+v 0.348226 0.194174 -0.251706
+v 0.348426 0.257384 -0.223217
+v 0.348359 0.306404 -0.190559
+v 0.348410 0.343052 -0.153660
+v 0.348405 0.369150 -0.112450
+v 0.348358 0.386516 -0.066856
+v 0.348282 0.396972 -0.016807
+v 0.348190 0.402336 0.037767
+v 0.348096 0.404429 0.096940
+v 0.348013 0.405070 0.160781
+v 0.347953 0.406081 0.229363
+v 0.347930 0.409282 0.302826
+v 0.347931 0.114953 -0.135838
+v 0.348226 0.181475 -0.192630
+v 0.348426 0.234603 -0.172317
+v 0.348359 0.275863 -0.142596
+v 0.348410 0.306780 -0.109121
+v 0.348405 0.328880 -0.071818
+v 0.348358 0.343689 -0.030611
+v 0.348282 0.352731 0.014573
+v 0.348190 0.357532 0.063810
+v 0.348096 0.359618 0.117173
+v 0.348013 0.360514 0.174738
+v 0.347953 0.360696 0.205741
+v 0.328843 0.367863 -0.167815
+v 0.323687 0.367792 0.332106
+v 0.400356 0.367792 0.332106
+v 0.395200 0.367863 -0.167815
+v 0.329832 0.414796 -0.167815
+v 0.324830 0.425190 0.332106
+v 0.399214 0.425190 0.332106
+v 0.394211 0.414796 -0.167815
+v 0.345553 0.401216 -0.201532
+v 0.345143 0.371636 -0.201699
+v 0.378901 0.371636 -0.201699
+v 0.378490 0.401216 -0.201532
+v 0.358089 0.385258 -0.210646
+v 0.358054 0.380377 -0.210646
+v 0.365990 0.380377 -0.210646
+v 0.365954 0.385258 -0.210646
+v 0.323405 0.424711 -0.107590
+v 0.322219 0.365484 -0.107590
+v 0.400638 0.424711 -0.107590
+v 0.401825 0.365484 -0.107590
+v 0.358149 0.394860 0.351911
+v 0.365895 0.394860 0.351911
+v 0.365895 0.399645 0.351911
+v 0.358149 0.399645 0.351911
+v 0.343854 0.413436 0.347086
+v 0.343296 0.379907 0.347086
+v 0.380748 0.379907 0.347086
+v 0.380190 0.413436 0.347086
+v 0.320573 0.427820 0.311407
+v 0.404745 0.365081 0.311407
+v 0.319299 0.365081 0.311407
+v 0.403471 0.427820 0.311407
+v 0.319299 0.365081 -0.073487
+v 0.403471 0.427820 -0.073487
+v 0.320573 0.427820 -0.073487
+v 0.404744 0.365081 -0.073487
+v 0.362022 0.436191 0.332107
+v 0.362022 0.422779 -0.167815
+v 0.362022 0.405255 -0.201532
+v 0.362022 0.385945 -0.210646
+v 0.362022 0.435573 -0.107590
+v 0.362022 0.400659 0.351911
+v 0.362022 0.421024 0.347086
+v 0.362022 0.439585 0.311407
+v 0.362022 0.439585 -0.073487
+v 0.314028 0.397253 0.332106
+v 0.410015 0.397253 0.332106
+v 0.322717 0.390042 -0.167815
+v 0.401327 0.390042 -0.167815
+v 0.383213 0.382875 -0.201616
+v 0.340830 0.382875 -0.201616
+v 0.367083 0.382818 -0.210646
+v 0.356961 0.382818 -0.210646
+v 0.411854 0.395499 -0.107590
+v 0.312189 0.395499 -0.107590
+v 0.367536 0.397253 0.351911
+v 0.356508 0.397253 0.351911
+v 0.385466 0.397253 0.347086
+v 0.338577 0.397253 0.347086
+v 0.415509 0.397253 0.311407
+v 0.308534 0.397253 0.311407
+v 0.308534 0.397253 -0.073487
+v 0.415509 0.397253 -0.073487
+v 0.347931 0.085585 -0.271788
+v 0.374674 0.085585 -0.271788
+v 0.347931 0.070651 -0.260976
+v 0.374674 0.070651 -0.260976
+v 0.374674 0.101199 -0.275520
+v 0.347931 0.101199 -0.275520
+v 0.347931 0.076814 0.284436
+v 0.374674 0.076814 0.284436
+v 0.347931 0.065532 0.257801
+v 0.374674 0.065532 0.257801
+v 0.374674 0.091805 0.298224
+v 0.347931 0.091805 0.298224
+v 0.374822 0.148214 -0.184858
+v 0.348078 0.148214 -0.184858
+v 0.374896 0.164844 -0.191504
+v 0.348152 0.164844 -0.191504
+v 0.348005 0.131584 -0.169084
+v 0.374748 0.131584 -0.169084
+v 0.347931 0.192263 0.276098
+v 0.374674 0.192263 0.276098
+v 0.347931 0.139783 0.252341
+v 0.374674 0.139783 0.252341
+v 0.347931 0.124887 0.231132
+v 0.374674 0.158336 0.266217
+v 0.347931 0.158336 0.266217
+v 0.374674 0.124887 0.231132
+v 0.374674 0.313067 0.276098
+v 0.347931 0.313067 0.276098
+v 0.374674 0.345059 0.266017
+v 0.347931 0.345059 0.266017
+v 0.374674 0.352685 0.254789
+v 0.347931 0.332030 0.273386
+v 0.374674 0.332030 0.273386
+v 0.347931 0.352685 0.254789
+v -0.062308 0.503626 0.402273
+v 0.067396 0.503105 0.402243
+v -0.029017 0.458109 0.402273
+v 0.034080 0.457588 0.402243
+v -0.062162 0.540052 0.402672
+v 0.067542 0.539532 0.402642
+v 0.001590 -0.430287 0.037516
+v 0.001590 -0.355601 0.037516
+v -0.035281 -0.430287 0.010727
+v -0.035281 -0.355601 0.010727
+v -0.021198 -0.430287 -0.032618
+v -0.021198 -0.355601 -0.032618
+v 0.024379 -0.430287 -0.032618
+v 0.024379 -0.355601 -0.032618
+v 0.038462 -0.430287 0.010727
+v 0.038462 -0.355601 0.010727
+v -0.012139 -0.445474 -0.498394
+v -0.012139 -0.400563 -0.498394
+v 0.015320 -0.445474 -0.498394
+v 0.015320 -0.400563 -0.498394
+v 0.486206 -0.445474 -0.173150
+v 0.486206 -0.400563 -0.173150
+v 0.494691 -0.445474 -0.147036
+v 0.494691 -0.400563 -0.147036
+v 0.275494 -0.445474 0.399100
+v 0.275494 -0.400563 0.399100
+v 0.297708 -0.445474 0.382960
+v 0.297708 -0.400563 0.382960
+v -0.272552 -0.445474 0.399429
+v -0.272552 -0.400563 0.399429
+v -0.294766 -0.445474 0.383289
+v -0.294766 -0.400563 0.383289
+v -0.464453 -0.445474 -0.138244
+v -0.464453 -0.400563 -0.138244
+v -0.455968 -0.445474 -0.164358
+v -0.455968 -0.400563 -0.164358
+v 0.001591 -0.202699 0.037516
+v -0.035281 -0.202699 0.010727
+v -0.021198 -0.202699 -0.032618
+v 0.024379 -0.202699 -0.032618
+v 0.038462 -0.202699 0.010727
+v 0.001591 -0.202699 0.024570
+v -0.022969 -0.202699 0.006726
+v -0.013588 -0.202699 -0.022144
+v 0.016769 -0.202699 -0.022144
+v 0.026150 -0.202699 0.006726
+v 0.001590 -0.075588 0.024570
+v -0.022969 -0.075588 0.006726
+v -0.013588 -0.075588 -0.022144
+v 0.016769 -0.075588 -0.022144
+v 0.026150 -0.075588 0.006726
+v 0.001590 -0.075588 0.017627
+v -0.016366 -0.075588 0.004581
+v -0.009507 -0.075588 -0.016528
+v 0.012688 -0.075588 -0.016528
+v 0.019547 -0.075588 0.004581
+v 0.001590 0.063069 0.017627
+v -0.016366 0.063069 0.004581
+v -0.009507 0.063069 -0.016528
+v 0.012688 0.063069 -0.016528
+v 0.019547 0.063069 0.004581
+v 0.029818 -0.470000 -0.430182
+v -0.029818 -0.470000 -0.430182
+v 0.029818 -0.491084 -0.438916
+v -0.029818 -0.491084 -0.438916
+v 0.029818 -0.499818 -0.460000
+v -0.029818 -0.499818 -0.460000
+v 0.029818 -0.491084 -0.481084
+v -0.029818 -0.491084 -0.481084
+v 0.029818 -0.470000 -0.489818
+v -0.029818 -0.470000 -0.489818
+v 0.029818 -0.448916 -0.481084
+v -0.029818 -0.448916 -0.481084
+v 0.029818 -0.440182 -0.460000
+v -0.029818 -0.440182 -0.460000
+v 0.029818 -0.448916 -0.438916
+v -0.029818 -0.448916 -0.438916
+v 0.026242 -0.202699 0.009105
+v 0.467304 -0.470000 -0.112330
+v 0.407668 -0.470000 -0.112330
+v 0.467304 -0.491084 -0.121064
+v 0.407668 -0.491084 -0.121064
+v 0.467304 -0.499818 -0.142148
+v 0.407668 -0.499818 -0.142148
+v 0.467304 -0.491084 -0.163232
+v 0.407668 -0.491084 -0.163232
+v 0.467304 -0.470000 -0.171966
+v 0.407668 -0.470000 -0.171966
+v 0.467304 -0.448916 -0.163232
+v 0.407668 -0.448916 -0.163232
+v 0.467304 -0.440182 -0.142148
+v 0.407668 -0.440182 -0.142148
+v 0.467304 -0.448916 -0.121064
+v 0.407668 -0.448916 -0.121064
+v -0.000550 -0.202699 0.027772
+v 0.300199 -0.470000 0.401966
+v 0.240563 -0.470000 0.401966
+v 0.300199 -0.491084 0.393232
+v 0.240563 -0.491084 0.393232
+v 0.300199 -0.499818 0.372148
+v 0.240563 -0.499818 0.372148
+v 0.300199 -0.491084 0.351063
+v 0.240563 -0.491084 0.351063
+v 0.300199 -0.470000 0.342330
+v 0.240563 -0.470000 0.342330
+v 0.300199 -0.448916 0.351063
+v 0.240563 -0.448916 0.351063
+v 0.300199 -0.440182 0.372148
+v 0.240563 -0.440182 0.372148
+v 0.300199 -0.448916 0.393232
+v 0.240563 -0.448916 0.393232
+v -0.026582 -0.202699 0.008059
+v -0.240563 -0.470000 0.401966
+v -0.300199 -0.470000 0.401966
+v -0.240564 -0.491084 0.393232
+v -0.300199 -0.491084 0.393232
+v -0.240563 -0.499818 0.372148
+v -0.300199 -0.499818 0.372148
+v -0.240563 -0.491084 0.351063
+v -0.300199 -0.491084 0.351063
+v -0.240564 -0.470000 0.342330
+v -0.300199 -0.470000 0.342330
+v -0.240563 -0.448916 0.351063
+v -0.300199 -0.448916 0.351063
+v -0.240563 -0.440182 0.372148
+v -0.300199 -0.440182 0.372148
+v -0.240564 -0.448916 0.393232
+v -0.300199 -0.448916 0.393232
+v -0.407668 -0.470000 -0.112330
+v -0.467304 -0.470000 -0.112330
+v -0.407668 -0.491084 -0.121063
+v -0.467304 -0.491084 -0.121063
+v -0.407668 -0.499818 -0.142148
+v -0.467304 -0.499818 -0.142148
+v -0.407668 -0.491084 -0.163232
+v -0.467304 -0.491084 -0.163232
+v -0.407668 -0.470000 -0.171966
+v -0.467304 -0.470000 -0.171966
+v -0.407668 -0.448916 -0.163232
+v -0.467304 -0.448916 -0.163232
+v -0.407668 -0.440182 -0.142148
+v -0.467304 -0.440182 -0.142148
+v -0.407668 -0.448916 -0.121063
+v -0.467304 -0.448916 -0.121063
+v 0.026330 0.059935 0.115638
+v -0.021064 0.059935 0.115638
+vt 0.984375 0.320312
+vt 0.984375 0.343750
+vt 0.726562 0.343750
+vt 0.726562 0.320312
+vt 0.726562 0.453125
+vt 0.984375 0.453125
+vt 0.984375 0.554688
+vt 0.726562 0.554688
+vt 0.116601 0.128897
+vt 0.133574 0.128897
+vt 0.138818 0.112755
+vt 0.125087 0.102779
+vt 0.111356 0.112755
+vt 0.406250 0.132812
+vt 0.406250 0.125000
+vt 0.414062 0.125000
+vt 0.414062 0.132812
+vt 0.421875 0.125000
+vt 0.421875 0.132812
+vt 0.359375 0.132812
+vt 0.359375 0.125000
+vt 0.367188 0.125000
+vt 0.367188 0.132812
+vt 0.375000 0.125000
+vt 0.375000 0.132812
+vt 0.382812 0.125000
+vt 0.382812 0.132812
+vt 0.390625 0.125000
+vt 0.390625 0.132812
+vt 0.385479 0.146639
+vt 0.382479 0.153880
+vt 0.385479 0.161122
+vt 0.392721 0.164122
+vt 0.399962 0.161122
+vt 0.402961 0.153880
+vt 0.399962 0.146639
+vt 0.392721 0.143640
+vt 0.398438 0.132812
+vt 0.398438 0.125000
+vt 0.984375 0.429688
+vt 0.726562 0.429688
+vt 0.496967 0.726626
+vt 0.434092 0.728066
+vt 0.455384 0.700488
+vt 0.507946 0.700488
+vt 0.329335 0.685124
+vt 0.319620 0.703161
+vt 0.298327 0.689321
+vt 0.308043 0.677902
+vt 0.255479 0.683698
+vt 0.245763 0.665446
+vt 0.298327 0.665446
+vt 0.122874 0.726567
+vt 0.133853 0.700428
+vt 0.245759 0.700428
+vt 0.256738 0.726567
+vt 0.271206 0.980248
+vt 0.256281 0.976540
+vt 0.294063 0.924214
+vt 0.313493 0.937580
+vt 0.136048 0.924214
+vt 0.120417 0.821666
+vt 0.259194 0.821666
+vt 0.243563 0.924214
+vt 0.563899 0.821725
+vt 0.429327 0.821725
+vt 0.563899 0.725093
+vt 0.459642 0.924273
+vt 0.668156 0.924273
+vt 0.622378 0.969632
+vt 0.594052 0.969632
+vt 0.533746 0.969632
+vt 0.505420 0.969632
+vt 0.357783 0.821630
+vt 0.335840 0.821630
+vt 0.319613 0.728007
+vt 0.337168 0.728007
+vt 0.348360 0.830152
+vt 0.371498 0.851471
+vt 0.563899 0.700488
+vt 0.248285 0.969572
+vt 0.219959 0.969572
+vt 0.298321 0.700428
+vt 0.257972 0.988527
+vt 0.248259 0.997092
+vt 0.219941 0.997092
+vt 0.229654 0.982733
+vt 0.324378 0.821666
+vt 0.319620 0.665446
+vt 0.264824 0.994862
+vt 0.312023 0.962730
+vt 0.381189 0.821630
+vt 0.354722 0.728007
+vt 0.374075 0.885297
+vt 0.248259 0.980676
+vt 0.219941 0.969572
+vt 0.498430 0.337960
+vt 0.442055 0.343252
+vt 0.451705 0.325087
+vt 0.508080 0.320403
+vt 0.344366 0.357516
+vt 0.321063 0.346650
+vt 0.311414 0.331505
+vt 0.334717 0.337744
+vt 0.626780 0.400293
+vt 0.619525 0.363688
+vt 0.675900 0.363688
+vt 0.690496 0.400293
+vt 0.259862 0.345936
+vt 0.189719 0.342866
+vt 0.189719 0.327336
+vt 0.250212 0.331264
+vt 0.252695 0.617074
+vt 0.245440 0.653679
+vt 0.189718 0.653679
+vt 0.189718 0.617074
+vt 0.352151 0.515448
+vt 0.354835 0.413768
+vt 0.372722 0.413768
+vt 0.371923 0.515448
+vt 0.624295 0.653679
+vt 0.635878 0.603598
+vt 0.708798 0.603598
+vt 0.685495 0.653679
+vt 0.250210 0.363688
+vt 0.261793 0.413768
+vt 0.189718 0.413768
+vt 0.189718 0.363688
+vt 0.631329 0.501946
+vt 0.699647 0.501946
+vt 0.257244 0.515421
+vt 0.189718 0.515421
+vt 0.427459 0.340110
+vt 0.437109 0.320072
+vt 0.354510 0.617127
+vt 0.372636 0.617127
+vt 0.563802 0.333127
+vt 0.563802 0.314464
+vt 0.563802 0.400293
+vt 0.563802 0.363688
+vt 0.316411 0.617074
+vt 0.301815 0.653679
+vt 0.563802 0.653679
+vt 0.563802 0.603598
+vt 0.311411 0.363688
+vt 0.334713 0.413768
+vt 0.563802 0.501946
+vt 0.325562 0.515421
+vt 0.508080 0.357714
+vt 0.451705 0.363688
+vt 0.334717 0.379760
+vt 0.250212 0.362442
+vt 0.189719 0.360338
+vt 0.329908 0.515448
+vt 0.437109 0.362653
+vt 0.334117 0.617127
+vt 0.563802 0.354118
+vt 0.630831 0.726626
+vt 0.619853 0.700488
+vt 0.672415 0.700488
+vt 0.693707 0.728066
+vt 0.050280 0.685124
+vt 0.071572 0.677902
+vt 0.081288 0.689321
+vt 0.059995 0.703161
+vt 0.124137 0.683698
+vt 0.081288 0.665446
+vt 0.133853 0.665446
+vt 0.108405 0.980248
+vt 0.066119 0.937580
+vt 0.085549 0.924214
+vt 0.123331 0.976540
+vt 0.698471 0.821725
+vt 0.023406 0.821630
+vt 0.042444 0.728007
+vt 0.059998 0.728007
+vt 0.045349 0.821630
+vt 0.008113 0.851471
+vt 0.031251 0.830152
+vt 0.131327 0.969572
+vt 0.159653 0.969572
+vt 0.081290 0.700428
+vt 0.121623 0.988527
+vt 0.149940 0.982733
+vt 0.159653 0.997092
+vt 0.131335 0.997092
+vt 0.055234 0.821666
+vt 0.059995 0.665446
+vt 0.114788 0.994862
+vt 0.067588 0.962730
+vt 0.000000 0.821630
+vt 0.024890 0.728007
+vt 0.005536 0.885297
+vt 0.131335 0.980676
+vt 0.629173 0.337960
+vt 0.619523 0.320403
+vt 0.675898 0.325087
+vt 0.685548 0.343252
+vt 0.035073 0.357516
+vt 0.044722 0.337744
+vt 0.068025 0.331505
+vt 0.058376 0.346650
+vt 0.500824 0.400293
+vt 0.437109 0.400293
+vt 0.508080 0.363688
+vt 0.119577 0.345936
+vt 0.129227 0.331264
+vt 0.126740 0.617074
+vt 0.133995 0.653679
+vt 0.027284 0.515448
+vt 0.007512 0.515448
+vt 0.006715 0.413768
+vt 0.024600 0.413768
+vt 0.503310 0.653679
+vt 0.442110 0.653679
+vt 0.418807 0.603598
+vt 0.491726 0.603598
+vt 0.129226 0.363688
+vt 0.117642 0.413768
+vt 0.496275 0.501946
+vt 0.427958 0.501946
+vt 0.122191 0.515421
+vt 0.690494 0.320072
+vt 0.700144 0.340110
+vt 0.024926 0.617127
+vt 0.006799 0.617127
+vt 0.063025 0.617074
+vt 0.077620 0.653679
+vt 0.068025 0.363688
+vt 0.044722 0.413768
+vt 0.053874 0.515421
+vt 0.619523 0.357714
+vt 0.044722 0.379760
+vt 0.129227 0.362442
+vt 0.049527 0.515448
+vt 0.690494 0.362653
+vt 0.045319 0.617127
+vt 0.455692 0.046847
+vt 0.455692 0.023876
+vt 0.479179 0.034017
+vt 0.470868 0.040478
+vt 0.498360 0.087287
+vt 0.488135 0.087399
+vt 0.687287 0.024092
+vt 0.687287 0.047063
+vt 0.672112 0.040694
+vt 0.663799 0.034233
+vt 0.523254 0.007353
+vt 0.523254 0.022978
+vt 0.507629 0.022978
+vt 0.507629 0.007353
+vt 0.488135 0.190120
+vt 0.498360 0.190008
+vt 0.498360 0.209012
+vt 0.488135 0.209124
+vt 0.654857 0.087398
+vt 0.644633 0.087286
+vt 0.597528 0.034322
+vt 0.617296 0.034322
+vt 0.617476 0.087321
+vt 0.596802 0.087538
+vt 0.527657 0.040663
+vt 0.548576 0.040663
+vt 0.549331 0.087537
+vt 0.528656 0.087320
+vt 0.498526 0.224221
+vt 0.488301 0.224333
+vt 0.644633 0.190008
+vt 0.654857 0.190120
+vt 0.654857 0.209124
+vt 0.644633 0.209012
+vt 0.620565 0.189938
+vt 0.594248 0.190156
+vt 0.551893 0.190155
+vt 0.525575 0.189938
+vt 0.511561 0.225441
+vt 0.565714 0.225454
+vt 0.565640 0.235679
+vt 0.511486 0.235666
+vt 0.654690 0.224333
+vt 0.644465 0.224220
+vt 0.189808 0.665446
+vt 0.634499 0.208923
+vt 0.634560 0.224116
+vt 0.580461 0.224333
+vt 0.580400 0.209140
+vt 0.156250 0.273438
+vt 0.156250 0.257812
+vt 0.226562 0.257812
+vt 0.382812 0.257812
+vt 0.460938 0.257812
+vt 0.460938 0.273438
+vt 0.382812 0.273438
+vt 0.257812 0.273438
+vt 0.140625 0.257812
+vt 0.140625 0.273438
+vt 0.967368 0.712551
+vt 0.960911 0.708480
+vt 0.782406 0.708480
+vt 0.770304 0.710607
+vt 0.760186 0.714892
+vt 0.754948 0.720587
+vt 0.753194 0.729380
+vt 0.798708 0.729380
+vt 0.919833 0.729380
+vt 0.973113 0.729380
+vt 0.972893 0.724155
+vt 0.971476 0.718224
+vt 0.492188 0.289062
+vt 0.492188 0.304688
+vt 0.312500 0.304688
+vt 0.312500 0.289062
+vt 0.031250 0.304688
+vt 0.031250 0.289062
+vt 0.039062 0.289062
+vt 0.039062 0.304688
+vt 0.763353 0.758747
+vt 0.753194 0.824303
+vt 0.763353 0.804636
+vt 0.753210 0.682956
+vt 0.753210 0.588042
+vt 0.763368 0.617406
+vt 0.078125 0.289062
+vt 0.117188 0.289062
+vt 0.117188 0.304688
+vt 0.078125 0.304688
+vt 0.140625 0.289062
+vt 0.164062 0.289062
+vt 0.164062 0.304688
+vt 0.140625 0.304688
+vt 0.195312 0.289062
+vt 0.210938 0.289062
+vt 0.210938 0.304688
+vt 0.195312 0.304688
+vt 0.015625 0.273438
+vt 0.015625 0.257812
+vt 0.031250 0.257812
+vt 0.031250 0.273438
+vt 0.226562 0.289062
+vt 0.265625 0.289062
+vt 0.265625 0.304688
+vt 0.226562 0.304688
+vt 0.070312 0.273438
+vt 0.070312 0.257812
+vt 0.085938 0.257812
+vt 0.085938 0.273438
+vt 0.273438 0.289062
+vt 0.281250 0.289062
+vt 0.281250 0.304688
+vt 0.273438 0.304688
+vt 0.062500 0.289062
+vt 0.062500 0.304688
+vt 0.507812 0.257812
+vt 0.515625 0.257812
+vt 0.515625 0.273438
+vt 0.507812 0.273438
+vt 0.109375 0.257812
+vt 0.109375 0.273438
+vt 0.304688 0.289062
+vt 0.304688 0.304688
+vt 0.554688 0.257812
+vt 0.554688 0.273438
+vt 0.960905 0.567145
+vt 0.967362 0.571215
+vt 0.971468 0.576888
+vt 0.972886 0.582818
+vt 0.973106 0.588042
+vt 0.919831 0.588042
+vt 0.798719 0.588042
+vt 0.754964 0.579250
+vt 0.760201 0.573556
+vt 0.770318 0.569271
+vt 0.782419 0.567145
+vt 0.125000 0.257812
+vt 0.125000 0.273438
+vt 0.750006 0.874954
+vt 0.742144 0.874954
+vt 0.742144 0.863764
+vt 0.750006 0.862734
+vt 0.909114 0.945325
+vt 0.931991 0.943252
+vt 0.931991 0.934828
+vt 0.909114 0.933924
+vt 0.750488 0.921717
+vt 0.742663 0.920330
+vt 0.742663 0.896088
+vt 0.750488 0.894700
+vt 0.750238 0.979188
+vt 0.742405 0.979188
+vt 0.742405 0.968738
+vt 0.750238 0.967542
+vt 0.944831 0.940530
+vt 0.944862 0.936261
+vt 0.931657 0.897717
+vt 0.944468 0.902872
+vt 0.944468 0.913546
+vt 0.931657 0.918700
+vt 0.931586 0.979188
+vt 0.944345 0.979188
+vt 0.944345 0.983815
+vt 0.931586 0.988233
+vt 0.932027 0.872215
+vt 0.944865 0.869493
+vt 0.944833 0.876459
+vt 0.932027 0.881617
+vt 0.948261 0.940508
+vt 0.948261 0.939581
+vt 0.947850 0.906954
+vt 0.947850 0.909464
+vt 0.948295 0.869471
+vt 0.948295 0.870398
+vt 0.944345 0.974561
+vt 0.947794 0.978083
+vt 0.947794 0.979188
+vt 0.908796 0.979188
+vt 0.908796 0.968338
+vt 0.931586 0.970143
+vt 0.908890 0.920794
+vt 0.908890 0.895623
+vt 0.896159 0.945992
+vt 0.896159 0.933770
+vt 0.909152 0.874287
+vt 0.909152 0.862887
+vt 0.932027 0.863791
+vt 0.736737 0.979188
+vt 0.736737 0.984293
+vt 0.734911 0.980276
+vt 0.734911 0.979188
+vt 0.736399 0.945992
+vt 0.736399 0.939403
+vt 0.734565 0.945083
+vt 0.734565 0.945992
+vt 0.736455 0.874954
+vt 0.736455 0.881100
+vt 0.734622 0.875863
+vt 0.734622 0.874954
+vt 0.737000 0.902288
+vt 0.737000 0.914130
+vt 0.735176 0.909433
+vt 0.735176 0.906984
+vt 0.742088 0.945992
+vt 0.742088 0.934801
+vt 0.742405 0.989638
+vt 0.742144 0.885565
+vt 0.951429 0.941190
+vt 0.950111 0.941420
+vt 0.948792 0.941190
+vt 0.948413 0.940372
+vt 0.948780 0.939553
+vt 0.951441 0.939553
+vt 0.951807 0.940372
+vt 0.749951 0.945992
+vt 0.749951 0.933770
+vt 0.895890 0.979188
+vt 0.895890 0.967542
+vt 0.895997 0.921717
+vt 0.895997 0.894700
+vt 0.896199 0.874954
+vt 0.896199 0.862734
+vt 0.908796 0.990039
+vt 0.895890 0.990834
+vt 0.750238 0.990834
+vt 0.736737 0.974083
+vt 0.734911 0.978100
+vt 0.947794 0.980294
+vt 0.749951 0.957603
+vt 0.896159 0.957603
+vt 0.909152 0.885383
+vt 0.896199 0.886564
+vt 0.750006 0.886564
+vt 0.742088 0.956604
+vt 0.736455 0.868366
+vt 0.736399 0.952139
+vt 0.734622 0.874045
+vt 0.734565 0.946901
+vt 0.909114 0.956422
+vt 0.944896 0.865224
+vt 0.948295 0.868544
+vt 0.944798 0.947497
+vt 0.948261 0.941436
+vt 0.931991 0.952656
+vt 0.731423 0.946575
+vt 0.730907 0.945823
+vt 0.731423 0.945071
+vt 0.733858 0.945071
+vt 0.734374 0.945823
+vt 0.733858 0.946575
+vt 0.732640 0.946894
+vt 0.922400 0.790503
+vt 0.909684 0.802248
+vt 0.926603 0.816027
+vt 0.940619 0.802105
+vt 0.895514 0.810643
+vt 0.879861 0.816268
+vt 0.893629 0.832537
+vt 0.910949 0.825940
+vt 0.862697 0.819703
+vt 0.843994 0.821527
+vt 0.853887 0.838546
+vt 0.874618 0.836509
+vt 0.790080 0.822729
+vt 0.753201 0.841185
+vt 0.781106 0.839969
+vt 0.801856 0.822660
+vt 0.807158 0.839585
+vt 0.940979 0.748331
+vt 0.938454 0.742014
+vt 0.831409 0.839341
+vt 0.823723 0.822319
+vt 0.953025 0.783484
+vt 0.933690 0.774830
+vt 0.963841 0.618132
+vt 0.940975 0.606992
+vt 0.938451 0.600675
+vt 0.932459 0.594359
+vt 0.941402 0.613308
+vt 0.831417 0.697992
+vt 0.807168 0.698236
+vt 0.801867 0.681312
+vt 0.823731 0.680972
+vt 0.781120 0.698619
+vt 0.790091 0.681382
+vt 0.932462 0.735697
+vt 0.953020 0.642141
+vt 0.933687 0.633488
+vt 0.753216 0.699836
+vt 0.844001 0.680180
+vt 0.853892 0.697197
+vt 0.941407 0.754649
+vt 0.963847 0.759473
+vt 0.940616 0.660760
+vt 0.922398 0.649159
+vt 0.862702 0.678356
+vt 0.874620 0.695159
+vt 0.926600 0.674680
+vt 0.909684 0.660903
+vt 0.296875 0.289062
+vt 0.296875 0.304688
+vt 0.879864 0.674921
+vt 0.893630 0.691189
+vt 0.910948 0.684592
+vt 0.895515 0.669297
+vt 0.484375 0.257812
+vt 0.484375 0.273438
+vt 0.132812 0.257812
+vt 0.132812 0.273438
+vt 0.500000 0.257812
+vt 0.500000 0.273438
+vt 0.531250 0.304688
+vt 0.531250 0.289062
+vt 0.539062 0.289062
+vt 0.539062 0.304688
+vt 0.515625 0.304688
+vt 0.515625 0.289062
+vt 0.554688 0.289062
+vt 0.554688 0.304688
+vt 0.023438 0.304688
+vt 0.023438 0.289062
+vt 0.015625 0.304688
+vt 0.015625 0.289062
+vt 0.778991 0.821665
+vt 0.779004 0.680318
+vt 0.780434 0.733153
+vt 0.771448 0.819685
+vt 0.772378 0.738811
+vt 0.767183 0.816788
+vt 0.767107 0.745859
+vt 0.764384 0.811840
+vt 0.771462 0.678338
+vt 0.780447 0.591815
+vt 0.767197 0.675442
+vt 0.772392 0.597473
+vt 0.764398 0.670493
+vt 0.767121 0.604520
+vt 0.763368 0.663290
+vt 0.967356 0.712544
+vt 0.972880 0.724147
+vt 0.754952 0.720579
+vt 0.763392 0.617484
+vt 0.753243 0.588146
+vt 0.960756 0.567267
+vt 0.782426 0.567267
+vt 0.770336 0.569391
+vt 0.760228 0.573672
+vt 0.754996 0.579361
+vt 0.798712 0.588146
+vt 0.919719 0.588146
+vt 0.972947 0.588146
+vt 0.972727 0.582926
+vt 0.971311 0.577001
+vt 0.967208 0.571333
+vt 0.749942 0.874964
+vt 0.749942 0.862755
+vt 0.931959 0.943234
+vt 0.750255 0.979178
+vt 0.750255 0.990823
+vt 0.944830 0.936242
+vt 0.931804 0.872228
+vt 0.931804 0.881621
+vt 0.944599 0.876468
+vt 0.944631 0.869508
+vt 0.948228 0.939562
+vt 0.948228 0.940490
+vt 0.947850 0.906948
+vt 0.948058 0.870412
+vt 0.948058 0.869486
+vt 0.896130 0.945972
+vt 0.896130 0.933753
+vt 0.931804 0.863811
+vt 0.908949 0.862908
+vt 0.908949 0.874298
+vt 0.736755 0.979178
+vt 0.736756 0.974074
+vt 0.734549 0.945972
+vt 0.734549 0.945064
+vt 0.736403 0.874964
+vt 0.736403 0.881105
+vt 0.749933 0.933753
+vt 0.749933 0.945972
+vt 0.896007 0.874964
+vt 0.896007 0.862755
+vt 0.750255 0.967534
+vt 0.736756 0.984282
+vt 0.749933 0.957583
+vt 0.896130 0.957583
+vt 0.908949 0.885384
+vt 0.896007 0.886564
+vt 0.749942 0.886564
+vt 0.736403 0.868381
+vt 0.734572 0.874056
+vt 0.734549 0.946881
+vt 0.944662 0.865242
+vt 0.948058 0.868559
+vt 0.948228 0.941417
+vt 0.931959 0.952636
+vt 0.733848 0.946577
+vt 0.733848 0.945073
+vt 0.801856 0.822645
+vt 0.938444 0.742005
+vt 0.940843 0.607079
+vt 0.963690 0.618209
+vt 0.938321 0.600768
+vt 0.932335 0.594457
+vt 0.941271 0.613390
+vt 0.952878 0.642197
+vt 0.933562 0.633552
+vt 0.853837 0.697205
+vt 0.940485 0.660800
+vt 0.922283 0.649209
+vt 0.862639 0.678381
+vt 0.874547 0.695170
+vt 0.926482 0.674707
+vt 0.909580 0.660943
+vt 0.879786 0.674949
+vt 0.893541 0.691202
+vt 0.895424 0.669329
+vt 0.910843 0.684611
+vt 0.780435 0.733145
+vt 0.767109 0.745850
+vt 0.771479 0.678363
+vt 0.780456 0.591916
+vt 0.767218 0.675469
+vt 0.772408 0.597569
+vt 0.767142 0.604609
+vt 0.565779 0.209139
+vt 0.511679 0.208922
+vt 0.565717 0.224333
+vt 0.511617 0.224115
+vt 0.213217 0.249509
+vt 0.213217 0.231846
+vt 0.382049 0.231846
+vt 0.382049 0.241659
+vt 0.132812 0.085938
+vt 0.109375 0.085938
+vt 0.109375 0.000000
+vt 0.132812 0.000000
+vt 0.189948 0.000000
+vt 0.206653 0.000000
+vt 0.203333 0.168670
+vt 0.193269 0.168670
+vt 0.406250 0.117188
+vt 0.406250 0.093750
+vt 0.414062 0.093750
+vt 0.414062 0.117188
+vt 0.156538 0.000000
+vt 0.173243 0.000000
+vt 0.169923 0.168784
+vt 0.159859 0.168784
+vt 0.382042 0.200580
+vt 0.382042 0.218243
+vt 0.213210 0.210393
+vt 0.213210 0.200580
+vt 0.382812 0.117188
+vt 0.375000 0.117188
+vt 0.375000 0.093750
+vt 0.382812 0.093750
+vt 0.186628 0.168848
+vt 0.176564 0.168847
+vt 0.398438 0.117188
+vt 0.390625 0.117188
+vt 0.390625 0.093750
+vt 0.398438 0.093750
+vt 0.223359 0.000001
+vt 0.220038 0.168738
+vt 0.209974 0.168738
+vt 0.240064 0.000000
+vt 0.236744 0.168837
+vt 0.226679 0.168837
+vt 0.070177 0.178780
+vt 0.095592 0.178779
+vt 0.091349 0.184895
+vt 0.074420 0.184895
+vt 0.085938 0.085938
+vt 0.085938 0.000000
+vt 0.062500 0.085938
+vt 0.062500 0.000000
+vt 0.039062 0.085938
+vt 0.039062 0.000000
+vt 0.015625 0.085938
+vt 0.015625 0.000000
+vt 0.093750 0.164062
+vt 0.078125 0.164062
+vt 0.078125 0.085938
+vt 0.093750 0.085938
+vt 0.121007 0.178780
+vt 0.116765 0.184895
+vt 0.099836 0.184895
+vt 0.146421 0.178780
+vt 0.142177 0.184894
+vt 0.125250 0.184894
+vt 0.171836 0.178780
+vt 0.167592 0.184895
+vt 0.150663 0.184896
+vt 0.197249 0.178780
+vt 0.193007 0.184895
+vt 0.176078 0.184896
+vt 0.069976 0.187157
+vt 0.086929 0.187158
+vt 0.084650 0.190480
+vt 0.072255 0.190480
+vt 0.062500 0.164062
+vt 0.046875 0.164062
+vt 0.046875 0.085938
+vt 0.031250 0.164062
+vt 0.031250 0.085938
+vt 0.015625 0.164062
+vt 0.054688 0.250000
+vt 0.046875 0.250000
+vt 0.054688 0.164062
+vt 0.103883 0.187159
+vt 0.101604 0.190481
+vt 0.089208 0.190480
+vt 0.120835 0.187159
+vt 0.118556 0.190482
+vt 0.106162 0.190482
+vt 0.137789 0.187157
+vt 0.135510 0.190480
+vt 0.123114 0.190481
+vt 0.154743 0.187157
+vt 0.152464 0.190481
+vt 0.140067 0.190480
+vt 0.039062 0.250000
+vt 0.039062 0.164062
+vt 0.031250 0.250000
+vt 0.023438 0.250000
+vt 0.023438 0.164062
+vt 0.015625 0.250000
+vt 0.624817 0.007353
+vt 0.624817 0.022978
+vt 0.292515 0.169147
+vt 0.282290 0.169147
+vt 0.278916 0.000000
+vt 0.295889 0.000000
+vt 0.275542 0.169133
+vt 0.265317 0.169133
+vt 0.261943 0.000000
+vt 0.343433 0.169156
+vt 0.333208 0.169156
+vt 0.329834 0.000000
+vt 0.346807 0.000000
+vt 0.326461 0.169074
+vt 0.316235 0.169073
+vt 0.312861 0.000000
+vt 0.309488 0.169046
+vt 0.299262 0.169046
+s off
+f 126/1 152/2 154/3 125/4
+f 124/5 127/6 126/7 125/8
+f 486/9 484/10 482/11 480/12 488/13
+f 535/14 536/15 538/16 537/17
+f 537/17 538/16 540/18 539/19
+f 539/20 540/21 542/22 541/23
+f 541/23 542/22 544/24 543/25
+f 543/25 544/24 546/26 545/27
+f 545/27 546/26 548/28 547/29
+f 538/30 536/31 550/32 548/33 546/34 544/35 542/36 540/37
+f 549/38 550/39 536/15 535/14
+f 547/29 548/28 550/39 549/38
+f 535/31 537/30 539/37 541/36 543/35 545/34 547/33 549/32
+f 552/14 553/15 555/16 554/17
+f 554/17 555/16 557/18 556/19
+f 556/20 557/21 559/22 558/23
+f 558/23 559/22 561/24 560/25
+f 560/25 561/24 563/26 562/27
+f 562/27 563/26 565/28 564/29
+f 555/30 553/31 567/32 565/33 563/34 561/35 559/36 557/37
+f 566/38 567/39 553/15 552/14
+f 564/29 565/28 567/39 566/38
+f 552/31 554/30 556/37 558/36 560/35 562/34 564/33 566/32
+f 569/14 570/15 572/16 571/17
+f 571/17 572/16 574/18 573/19
+f 573/20 574/21 576/22 575/23
+f 575/23 576/22 578/24 577/25
+f 577/25 578/24 580/26 579/27
+f 579/27 580/26 582/28 581/29
+f 572/30 570/31 584/32 582/33 580/34 578/35 576/36 574/37
+f 583/38 584/39 570/15 569/14
+f 581/29 582/28 584/39 583/38
+f 569/31 571/30 573/37 575/36 577/35 579/34 581/33 583/32
+f 586/14 587/15 589/16 588/17
+f 588/17 589/16 591/18 590/19
+f 590/20 591/21 593/22 592/23
+f 592/23 593/22 595/24 594/25
+f 594/25 595/24 597/26 596/27
+f 596/27 597/26 599/28 598/29
+f 589/30 587/31 601/32 599/33 597/34 595/35 593/36 591/37
+f 600/38 601/39 587/15 586/14
+f 598/29 599/28 601/39 600/38
+f 586/31 588/30 590/37 592/36 594/35 596/34 598/33 600/32
+f 602/14 603/15 605/16 604/17
+f 604/17 605/16 607/18 606/19
+f 606/20 607/21 609/22 608/23
+f 608/23 609/22 611/24 610/25
+f 610/25 611/24 613/26 612/27
+f 612/27 613/26 615/28 614/29
+f 605/30 603/31 617/32 615/33 613/34 611/35 609/36 607/37
+f 616/38 617/39 603/15 602/14
+f 614/29 615/28 617/39 616/38
+f 602/31 604/30 606/37 608/36 610/35 612/34 614/33 616/32
+f 153/40 127/6 124/5 120/41
+s 1
+f 16/42 7/43 1/44 14/45
+f 22/46 8/47 2/48 21/49
+f 24/50 14/51 1/52 21/49
+f 72/53 68/54 13/55 17/56
+f 20/57 6/58 3/59 19/60
+f 66/61 73/62 18/63 11/64
+f 65/65 9/66 7/43 16/42 62/67
+f 4/68 56/69 57/70 67/71 12/72 5/73
+f 23/74 10/75 8/76 22/77
+f 19/60 3/59 10/78 23/79
+f 73/62 72/53 17/56 18/63
+f 62/67 16/42 14/45 59/80
+f 6/81 15/82 11/64 3/59
+f 8/76 17/56 13/55 2/83
+f 20/84 5/85 12/86 25/87
+f 10/88 18/63 17/56 8/76
+f 3/59 11/64 18/63 10/88
+f 7/89 22/46 21/49 1/52
+f 13/55 24/50 21/49 2/48
+f 5/90 20/57 19/60 4/91
+f 9/92 23/74 22/77 7/93
+f 4/91 19/60 23/79 9/94
+f 6/95 20/84 25/87 15/96
+f 51/97 46/98 26/99 38/100
+f 48/101 47/102 27/103 31/104
+f 42/105 38/106 26/107 32/108
+f 52/109 114/110 88/111 37/112
+f 43/113 36/114 85/115 96/116
+f 50/117 48/118 31/119 34/120
+f 37/121 40/122 31/123 27/124
+f 39/125 41/126 92/127 87/128
+f 44/129 42/105 32/108 34/130
+f 45/131 43/113 96/116 100/132
+f 46/98 49/133 32/134 26/99
+f 49/135 50/117 34/120 32/136
+f 40/122 44/129 34/130 31/123
+f 41/126 45/131 100/132 92/127
+f 113/137 51/97 38/100 86/138
+f 95/139 86/140 38/106 42/105
+f 47/102 52/109 37/112 27/103
+f 33/141 28/142 36/114 43/113
+f 88/143 91/144 40/122 37/121
+f 29/145 30/146 41/126 39/125
+f 99/147 95/139 42/105 44/129
+f 35/148 33/141 43/113 45/131
+f 91/144 99/147 44/129 40/122
+f 30/146 35/148 45/131 41/126
+f 36/149 28/150 46/98 51/97
+f 30/151 29/145 47/102 48/101
+f 39/152 87/153 114/110 52/109
+f 35/154 30/146 48/118 50/117
+f 28/150 33/155 49/133 46/98
+f 33/156 35/154 50/117 49/135
+f 85/157 36/149 51/97 113/137
+f 29/145 39/152 52/109 47/102
+f 71/158 69/159 53/160 60/161
+f 77/162 76/163 54/164 61/165
+f 79/166 76/163 53/167 69/168
+f 75/169 74/170 55/171 58/172
+f 65/65 62/67 71/158 60/161 63/173
+f 4/68 9/66 65/65 63/173 56/69
+f 78/174 77/175 61/176 64/177
+f 74/170 78/178 64/179 55/171
+f 62/67 59/80 69/159 71/158
+f 58/180 55/171 66/61 70/181
+f 61/176 54/182 68/54 72/53
+f 75/183 80/184 67/185 57/186
+f 64/187 61/176 72/53 73/62
+f 55/171 64/187 73/62 66/61
+f 60/188 53/167 76/163 77/162
+f 68/54 54/164 76/163 79/166
+f 57/189 56/190 74/170 75/169
+f 63/191 60/192 77/175 78/174
+f 56/190 63/193 78/178 74/170
+f 58/194 70/181 80/184 75/183
+f 118/195 103/196 81/197 111/198
+f 115/199 90/200 82/201 112/202
+f 107/203 93/204 81/150 103/205
+f 119/206 102/207 88/111 114/110
+f 108/208 96/116 85/115 101/209
+f 117/210 97/211 90/212 115/213
+f 102/214 82/215 90/216 105/217
+f 104/218 87/128 92/127 106/219
+f 109/220 97/221 93/204 107/203
+f 110/222 100/132 96/116 108/208
+f 111/198 81/197 93/223 116/224
+f 116/225 93/226 97/211 117/210
+f 105/217 90/216 97/221 109/220
+f 106/219 92/127 100/132 110/222
+f 113/137 86/138 103/196 118/195
+f 95/139 107/203 103/205 86/140
+f 112/202 82/201 102/207 119/206
+f 94/227 108/208 101/209 83/228
+f 88/143 102/214 105/217 91/144
+f 84/229 104/218 106/219 89/230
+f 99/147 109/220 107/203 95/139
+f 98/231 110/222 108/208 94/227
+f 91/144 105/217 109/220 99/147
+f 89/230 106/219 110/222 98/231
+f 101/232 118/195 111/198 83/107
+f 89/233 115/199 112/202 84/229
+f 104/234 119/206 114/110 87/153
+f 98/235 117/210 115/213 89/230
+f 83/107 111/198 116/224 94/236
+f 94/237 116/225 117/210 98/235
+f 85/157 113/137 118/195 101/232
+f 84/229 112/202 119/206 104/234
+f 121/3 152/2 153/40 120/41
+f 128/238 131/239 135/240 132/241
+f 131/239 128/238 123/238 619/239
+f 132/241 135/240 139/242 136/243
+f 130/244 129/245 133/246 134/247
+f 131/248 130/249 134/250 135/251
+f 144/252 145/253 143/254 140/255
+f 134/247 133/246 137/256 138/257
+f 135/258 134/259 138/260 139/261
+f 133/262 132/263 136/264 137/265
+f 140/255 143/254 151/266 148/267
+f 146/268 147/269 141/270 142/271
+f 136/243 139/242 145/253 144/252
+f 138/257 137/256 147/269 146/268
+f 139/261 138/260 146/272 145/273
+f 137/265 136/264 144/274 147/275
+f 149/276 148/277 151/278 150/279
+f 142/271 141/270 149/280 150/281
+f 15/96 25/87 80/184 70/181
+f 24/50 79/166 69/168 59/282 14/51
+f 80/184 25/87 12/86 67/185
+f 70/181 66/61 11/64 15/82
+f 142/283 150/284 151/285 143/286 145/273 146/272
+f 79/166 24/50 13/55 68/54
+f 160/287 158/288 153/289 152/290 162/291 164/292
+f 319/288 323/291 321/292 154/293 155/294 317/287
+f 283/295 158/288 160/287 284/296
+f 284/297 160/298 164/299 290/300 288/301 291/302 165/303 169/304 182/305 161/306 285/307 282/308
+f 169/309 168/310 206/311 182/312
+f 314/313 311/314 166/315 167/316
+f 300/317 156/318 307/319
+f 157/320 163/321 299/322
+f 192/323 191/324 215/325 216/326
+f 190/327 189/328 213/329 214/330
+f 188/331 187/332 211/333 212/334
+f 174/335 198/336 197/337 173/338
+f 186/339 185/340 209/341 210/342
+f 172/343 196/344 195/345 171/346
+f 184/347 183/348 207/349 208/350
+f 193/351 192/323 216/326 217/352
+f 191/324 190/327 214/330 215/325
+f 189/328 188/331 212/334 213/329
+f 187/332 186/339 210/342 211/333
+f 292/353 163/354 165/355 291/356
+f 173/338 197/337 196/344 172/343
+f 185/340 184/347 208/350 209/341
+f 171/346 195/345 194/357 170/358
+f 298/359 182/312 206/311 297/360
+f 157/361 156/362 165/355 163/354
+f 158/363 283/364 281/365 286/366 159/367 206/368 168/369 163/321 292/370 287/371 289/372 162/373
+f 170/358 194/357 159/374 161/375
+f 159/374 286/374 285/375 161/375
+f 278/376 263/377 219/378 248/379
+f 271/380 266/381 221/382 237/383
+f 248/384 219/385 220/386 247/387
+f 261/388 254/389 223/390 246/391
+f 266/381 267/392 228/393 221/382
+f 221/394 228/395 227/396 218/397
+f 255/398 256/399 229/400 225/401
+f 265/402 268/403 226/404 222/405
+f 267/392 269/406 232/407 228/393
+f 228/395 232/408 231/409 227/396
+f 268/403 270/410 230/411 226/404
+f 256/399 226/412 230/413 257/414
+f 255/398 258/415 234/416 222/417
+f 218/397 235/418 237/419 221/394
+f 280/420 271/380 237/383 253/421
+f 265/402 272/422 235/423 218/424
+f 260/425 245/426 240/427 259/428
+f 275/429 244/430 239/431 273/432
+f 276/433 242/434 241/435 274/436
+f 244/437 243/438 238/439 239/440
+f 264/441 220/442 244/430 275/429
+f 220/386 219/385 243/438 244/437
+f 254/389 224/443 245/426 260/425
+f 263/377 223/444 242/434 276/433
+f 233/445 257/446 230/447 270/448 231/449 232/450 269/451
+f 264/441 277/452 247/453 220/442
+f 262/454 261/388 246/391 252/455
+f 250/456 248/384 247/387 253/457
+f 279/458 278/376 248/379 250/459
+f 272/422 279/458 250/459 235/423
+f 235/418 250/456 253/457 237/419
+f 258/415 262/454 252/455 234/416
+f 277/452 280/420 253/421 247/453
+f 236/460 251/461 262/454 258/415
+f 251/461 249/462 261/388 262/454
+f 223/390 254/389 260/425 242/463
+f 242/463 260/425 259/428 241/464
+f 225/401 236/460 258/415 255/398
+f 229/400 256/399 257/414 233/465
+f 222/417 226/412 256/399 255/398
+f 249/462 224/443 254/389 261/388
+f 249/466 251/467 280/420 277/452
+f 234/468 252/469 279/458 272/422
+f 252/469 246/470 278/376 279/458
+f 224/471 249/466 277/452 264/441
+f 219/378 263/377 276/433 243/472
+f 224/471 264/441 275/429 245/473
+f 243/472 276/433 274/436 238/474
+f 245/473 275/429 273/432 240/475
+f 222/405 234/468 272/422 265/402
+f 251/467 236/476 271/380 280/420
+f 227/477 231/478 270/410 268/403
+f 229/479 233/480 269/406 267/392
+f 218/424 227/477 268/403 265/402
+f 225/481 229/479 267/392 266/381
+f 236/476 225/481 266/381 271/380
+f 246/470 223/444 263/377 278/376
+f 240/482 273/483 239/484 238/485 274/486 241/487 259/488
+f 185/489 186/490 173/491 172/492
+f 187/493 188/494 175/495 174/496
+f 189/497 190/498 177/499 176/500
+f 193/501 156/318 181/502 180/503
+f 192/504 193/501 180/503 179/505
+f 295/506 161/306 293/507
+f 178/508 191/509 192/504 179/505
+f 172/492 171/510 184/511 185/489
+f 178/508 177/499 190/498 191/509
+f 175/495 188/494 189/497 176/500
+f 159/367 194/512 296/513
+f 294/514 297/515 159/367
+f 174/496 173/491 186/490 187/493
+f 296/513 294/514 159/367
+f 297/515 206/368 159/367
+f 296/513 194/512 207/516
+f 202/517 203/518 216/519 215/520
+f 203/518 204/521 217/522 216/519
+f 161/306 298/523 293/507
+f 195/524 208/525 207/516 194/512
+f 204/521 205/526 157/320 217/522
+f 214/527 201/528 202/517 215/520
+f 295/506 183/529 170/530
+f 196/531 209/532 208/525 195/524
+f 213/533 200/534 201/528 214/527
+f 197/535 210/536 209/532 196/531
+f 295/537 293/537 294/538 296/538
+f 293/537 298/359 297/360 294/538
+f 212/539 199/540 200/534 213/533
+f 210/536 197/535 198/541 211/542
+f 162/291 289/543 290/544 164/292
+f 161/306 182/305 298/523
+f 199/540 212/539 211/542 198/541
+f 281/545 283/295 284/296 282/546
+f 289/543 287/547 288/548 290/544
+f 183/348 295/537 296/538 207/349
+f 161/306 295/506 170/530
+f 286/374 281/545 282/546 285/375
+f 287/547 292/353 291/356 288/548
+f 183/529 184/511 171/510 170/530
+f 305/549 304/550 300/551 299/552
+f 303/553 306/554 302/550 301/549
+f 168/310 169/309 306/554 303/553
+f 301/549 302/550 304/550 305/549
+f 299/552 300/551 307/555 308/556
+f 312/557 313/558 309/314 310/313
+f 308/559 307/560 313/558 312/557
+f 310/313 309/314 311/314 314/313
+f 156/318 193/501 166/561
+f 157/320 167/562 217/522
+f 166/315 193/351 217/352 167/316
+f 306/563 169/304 165/303
+f 156/318 166/561 311/564
+f 302/565 306/563 165/303
+f 156/318 311/564 309/566
+f 304/567 302/565 165/303
+f 156/318 309/566 313/568
+f 300/317 304/567 165/303
+f 156/318 313/568 307/319
+f 156/318 300/317 165/303
+f 314/569 167/562 157/320
+f 163/321 168/369 303/570
+f 310/571 314/569 157/320
+f 163/321 303/570 301/572
+f 312/573 310/571 157/320
+f 163/321 301/572 305/574
+f 308/575 312/573 157/320
+f 163/321 305/574 299/322
+f 299/322 308/575 157/320
+f 442/296 443/295 319/288 317/287
+f 443/576 441/308 444/577 320/306 341/305 328/304 324/303 450/578 447/301 449/300 323/299 319/298
+f 328/310 341/311 365/312 327/309
+f 473/314 326/315 325/316 470/313
+f 459/317 466/319 315/318
+f 316/320 458/579 322/580
+f 351/326 375/323 374/324 350/325
+f 349/330 373/327 372/328 348/329
+f 347/334 371/331 370/332 346/333
+f 333/336 332/337 356/338 357/335
+f 345/342 369/339 368/340 344/341
+f 331/344 330/345 354/346 355/343
+f 343/350 367/347 366/348 342/349
+f 352/352 376/351 375/323 351/326
+f 350/325 374/324 373/327 349/330
+f 348/329 372/328 371/331 347/334
+f 346/333 370/332 369/339 345/342
+f 451/356 450/353 324/354 322/355
+f 332/337 331/344 355/343 356/338
+f 344/341 368/340 367/347 343/350
+f 330/345 329/357 353/358 354/346
+f 457/360 456/359 365/312 341/311
+f 316/362 322/355 324/354 315/361
+f 317/581 321/582 448/583 446/584 451/585 322/580 327/586 365/587 318/588 445/589 440/590 442/591
+f 329/357 320/374 318/375 353/358
+f 318/375 320/374 444/374 445/375
+f 437/592 407/593 378/378 422/377
+f 430/380 396/383 380/382 425/594
+f 407/387 406/384 379/385 378/386
+f 420/595 405/596 382/443 413/389
+f 425/594 380/382 387/597 426/392
+f 380/397 377/394 386/395 387/396
+f 414/398 384/417 388/412 415/399
+f 424/598 381/599 385/600 427/601
+f 426/392 387/597 391/602 428/603
+f 387/396 386/395 390/604 391/409
+f 427/601 385/600 389/605 429/606
+f 415/399 416/414 389/465 385/400
+f 414/398 381/401 393/460 417/415
+f 377/394 380/397 396/418 394/419
+f 439/607 412/608 396/383 430/380
+f 424/598 377/609 394/610 431/611
+f 419/612 418/428 399/464 404/613
+f 434/429 432/614 398/615 403/430
+f 435/616 433/436 400/435 401/617
+f 403/438 398/439 397/440 402/437
+f 423/441 434/429 403/430 379/442
+f 379/385 403/438 402/437 378/386
+f 413/389 419/612 404/613 383/390
+f 422/377 435/616 401/617 382/444
+f 392/447 428/448 391/449 390/450 429/451 389/445 416/446
+f 423/441 379/442 406/618 436/619
+f 421/454 411/461 405/596 420/595
+f 409/457 412/456 406/384 407/387
+f 438/620 409/621 407/593 437/592
+f 431/611 394/610 409/621 438/620
+f 394/419 396/418 412/456 409/457
+f 417/415 393/460 411/461 421/454
+f 436/619 406/618 412/608 439/607
+f 395/416 417/415 421/454 410/455
+f 410/455 421/454 420/595 408/622
+f 382/443 401/623 419/612 413/389
+f 401/623 400/427 418/428 419/612
+f 384/417 414/398 417/415 395/416
+f 388/412 392/413 416/414 415/399
+f 381/401 414/398 415/399 385/400
+f 408/622 420/595 413/389 383/390
+f 408/624 436/619 439/607 410/625
+f 393/626 431/611 438/620 411/627
+f 411/627 438/620 437/592 405/628
+f 383/471 423/441 436/619 408/624
+f 378/378 402/629 435/616 422/377
+f 383/471 404/473 434/429 423/441
+f 402/629 397/630 433/436 435/616
+f 404/473 399/631 432/614 434/429
+f 381/599 424/598 431/611 393/626
+f 410/625 439/607 430/380 395/476
+f 386/632 427/601 429/606 390/633
+f 388/479 426/392 428/603 392/634
+f 377/609 424/598 427/601 386/632
+f 384/635 425/594 426/392 388/479
+f 395/476 430/380 425/594 384/635
+f 405/628 437/592 422/377 382/444
+f 399/636 418/488 400/482 433/483 397/484 398/637 432/486
+f 344/489 331/492 332/491 345/490
+f 346/493 333/496 334/495 347/494
+f 348/497 335/500 336/499 349/498
+f 352/501 339/503 340/502 315/318
+f 351/638 338/505 339/503 352/501
+f 454/506 452/639 320/306
+f 337/508 338/505 351/638 350/509
+f 331/492 344/489 343/511 330/510
+f 337/508 350/509 349/498 336/499
+f 334/495 335/500 348/497 347/494
+f 318/588 455/640 353/641
+f 453/642 318/588 456/643
+f 333/496 346/493 345/490 332/491
+f 455/640 318/588 453/642
+f 456/643 318/588 365/587
+f 455/640 366/644 353/641
+f 361/517 374/520 375/519 362/518
+f 362/518 375/519 376/522 363/521
+f 320/306 452/639 457/523
+f 354/645 353/641 366/644 367/646
+f 363/521 376/522 316/320 364/526
+f 373/527 374/520 361/517 360/647
+f 454/506 329/530 342/529
+f 355/648 354/645 367/646 368/649
+f 372/650 373/527 360/647 359/651
+f 356/652 355/648 368/649 369/653
+f 454/538 455/537 453/537 452/538
+f 452/538 453/537 456/359 457/360
+f 371/654 372/650 359/651 358/655
+f 369/653 370/656 357/657 356/652
+f 321/292 323/291 449/543 448/544
+f 320/306 457/523 341/305
+f 358/655 357/657 370/656 371/654
+f 440/546 441/545 443/295 442/296
+f 448/544 449/543 447/547 446/548
+f 342/349 366/348 455/537 454/538
+f 320/306 329/530 454/506
+f 445/375 444/374 441/545 440/546
+f 446/548 447/547 450/353 451/356
+f 342/529 329/530 330/510 343/511
+f 464/550 458/551 459/552 463/549
+f 462/554 460/550 461/549 465/553
+f 327/309 462/554 465/553 328/310
+f 460/550 464/550 463/549 461/549
+f 458/551 467/555 466/556 459/552
+f 471/558 469/314 468/313 472/557
+f 467/560 471/558 472/557 466/559
+f 469/314 473/314 470/313 468/313
+f 315/318 325/561 352/501
+f 316/320 376/522 326/562
+f 325/316 326/315 376/351 352/352
+f 465/658 324/303 328/304
+f 315/318 470/564 325/561
+f 461/565 324/303 465/658
+f 315/318 468/566 470/564
+f 463/659 324/303 461/565
+f 315/318 472/568 468/566
+f 459/317 324/303 463/659
+f 315/318 466/319 472/568
+f 315/318 324/303 459/317
+f 473/660 316/320 326/562
+f 322/580 462/661 327/586
+f 469/662 316/320 473/660
+f 322/580 460/663 462/661
+f 471/573 316/320 469/662
+f 322/580 464/664 460/663
+f 467/575 316/320 471/573
+f 322/580 458/579 464/664
+f 458/579 316/320 467/575
+f 477/275 476/274 474/665 475/666
+f 475/666 474/665 478/667 479/668
+f 483/669 482/670 504/671 505/672
+f 485/669 484/670 508/671 509/672
+f 487/669 486/670 492/671 493/672
+f 481/673 489/674 514/675 510/676
+f 489/677 481/678 499/679 501/680
+f 489/669 488/670 496/671 497/672
+f 490/681 491/682 493/683 492/684
+f 485/685 487/686 493/687 491/688
+f 484/689 485/690 491/691 490/692
+f 494/693 495/694 497/695 496/696
+f 487/686 489/677 497/697 495/698
+f 486/689 487/690 495/691 494/692
+f 500/699 501/700 499/701 498/702
+f 488/689 489/690 501/691 500/692
+f 481/669 480/670 498/671 499/672
+f 502/702 503/682 505/681 504/699
+f 480/689 481/690 503/691 502/692
+f 481/678 483/703 505/704 503/705
+f 506/700 507/693 509/696 508/701
+f 483/703 485/706 509/707 507/708
+f 482/689 483/690 507/691 506/692
+f 510/709 514/710 519/711 515/712
+f 489/674 487/713 513/714 514/675
+f 487/713 485/715 512/716 513/714
+f 485/715 483/717 511/718 512/716
+f 483/717 481/719 510/720 511/718
+f 515/721 519/722 524/723 520/724
+f 514/710 513/725 518/726 519/727
+f 513/725 512/728 517/729 518/730
+f 512/728 511/731 516/732 517/733
+f 511/731 510/734 515/735 516/736
+f 520/737 524/738 529/739 525/740
+f 519/722 518/741 523/715 524/723
+f 518/741 517/742 522/743 523/715
+f 517/742 516/744 521/745 522/743
+f 516/744 515/746 520/719 521/745
+f 525/747 529/748 534/742 530/749
+f 524/738 523/750 528/751 529/752
+f 523/750 522/753 527/754 528/755
+f 522/753 521/756 526/757 527/758
+f 521/756 520/759 525/760 526/761
+f 529/748 528/762 533/763 534/742
+f 528/762 527/764 532/744 533/763
+f 527/764 526/765 531/766 532/744
+f 526/765 525/767 530/746 531/766
+f 129/245 130/244 618/244 122/245
+f 130/249 131/248 619/768 618/769
+f 506/770 508/771 484/772 482/773
+f 490/774 492/775 486/776 484/772
+f 494/777 496/778 488/779 486/780
+f 500/781 498/782 480/783 488/779
+f 502/784 504/785 482/773 480/783
diff --git a/homedecor_modpack/homedecor/models/homedecor_oil_lamp.obj b/homedecor_modpack/homedecor/models/homedecor_oil_lamp.obj
new file mode 100644
index 0000000..7360e27
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_oil_lamp.obj
@@ -0,0 +1,1705 @@
+# Blender v2.73 (sub 0) OBJ File: 'oil-lantern.blend'
+# www.blender.org
+o Cylinder
+v 0.300118 -0.338925 0.000000
+v 0.285864 -0.340554 0.024849
+v 0.257356 -0.343812 0.024849
+v 0.243102 -0.345441 0.000000
+v 0.257356 -0.343812 -0.024849
+v 0.285864 -0.340554 -0.024849
+v 0.161951 0.130484 -0.024849
+v 0.154051 0.102900 -0.024849
+v 0.150102 0.089108 0.000000
+v 0.154051 0.102900 0.024849
+v 0.161951 0.130484 0.024849
+v 0.165901 0.144276 0.000000
+v 0.199454 0.111185 -0.024849
+v 0.181599 0.088724 -0.024849
+v 0.172672 0.077493 0.000000
+v 0.181599 0.088724 0.024849
+v 0.199454 0.111185 0.024849
+v 0.208381 0.122416 0.000000
+v 0.226716 0.079003 -0.024849
+v 0.201625 0.065084 -0.024849
+v 0.189080 0.058124 0.000000
+v 0.201625 0.065084 0.024849
+v 0.226716 0.079003 0.024849
+v 0.239262 0.085963 0.000000
+v 0.239588 0.038838 -0.024849
+v 0.211081 0.035580 -0.024849
+v 0.196827 0.033952 0.000000
+v 0.211081 0.035580 0.024849
+v 0.239588 0.038838 0.024849
+v 0.253842 0.040467 0.000000
+v 0.192368 -0.474479 -0.000000
+v 0.190739 -0.460225 0.024849
+v 0.187482 -0.431717 0.024849
+v 0.185853 -0.417464 0.000000
+v 0.187482 -0.431717 -0.024849
+v 0.190739 -0.460225 -0.024849
+v 0.237864 -0.459899 -0.000000
+v 0.230904 -0.447353 0.024849
+v 0.216985 -0.422262 0.024849
+v 0.210026 -0.409717 0.000000
+v 0.216985 -0.422262 -0.024849
+v 0.230904 -0.447353 -0.024849
+v 0.274317 -0.429018 0.000000
+v 0.263086 -0.420091 0.024849
+v 0.240625 -0.402236 0.024849
+v 0.229394 -0.393309 0.000000
+v 0.240625 -0.402236 -0.024849
+v 0.263086 -0.420091 -0.024849
+v 0.296178 -0.386538 0.000000
+v 0.282385 -0.382588 0.024849
+v 0.254801 -0.374688 0.024849
+v 0.241009 -0.370738 0.000000
+v 0.254801 -0.374688 -0.024849
+v 0.282385 -0.382588 -0.024849
+v 0.000000 -0.283905 -0.000000
+v -0.075943 -0.335938 -0.131538
+v -0.131538 -0.335938 -0.075943
+v -0.151887 -0.335938 0.000000
+v -0.131538 -0.335938 0.075943
+v -0.075943 -0.335938 0.131538
+v 0.000000 -0.335938 0.151887
+v 0.075943 -0.335938 0.131538
+v 0.131538 -0.335938 0.075943
+v 0.151887 -0.335938 0.000000
+v 0.131538 -0.335938 -0.075943
+v 0.075943 -0.335938 -0.131538
+v 0.000000 -0.382812 -0.067500
+v -0.033750 -0.382812 -0.058457
+v -0.058457 -0.382812 -0.033750
+v -0.018984 -0.291253 -0.032882
+v -0.067500 -0.382812 0.000000
+v -0.058457 -0.382812 0.033750
+v -0.032882 -0.291253 -0.018984
+v -0.033750 -0.382812 0.058457
+v 0.000000 -0.382812 0.067500
+v -0.037969 -0.291253 0.000000
+v 0.033750 -0.382812 0.058457
+v -0.032882 -0.291253 0.018984
+v 0.058457 -0.382812 0.033750
+v -0.018984 -0.291253 0.032882
+v 0.067500 -0.382812 0.000000
+v 0.000000 -0.291253 0.037969
+v 0.058457 -0.382812 -0.033750
+v 0.018984 -0.291253 0.032882
+v 0.033750 -0.382812 -0.058457
+v 0.032882 -0.291253 0.018984
+v 0.037969 -0.291253 0.000000
+v 0.032882 -0.291253 -0.018984
+v 0.000000 -0.335938 -0.151887
+v 0.018984 -0.291253 -0.032882
+v 0.000000 -0.291253 -0.037969
+v -0.065764 -0.312500 -0.037969
+v -0.075937 -0.312500 0.000000
+v -0.065764 -0.312500 0.037969
+v -0.037969 -0.312500 0.065764
+v 0.000000 -0.312500 0.075938
+v 0.037969 -0.312500 0.065764
+v 0.065764 -0.312500 0.037969
+v 0.075938 -0.312500 0.000000
+v 0.065764 -0.312500 -0.037969
+v -0.064969 -0.359375 -0.112529
+v -0.112529 -0.359375 -0.064969
+v -0.129938 -0.359375 0.000000
+v -0.112529 -0.359375 0.064969
+v -0.064969 -0.359375 0.112529
+v 0.000000 -0.359375 0.129938
+v 0.064969 -0.359375 0.112529
+v 0.112529 -0.359375 0.064969
+v 0.129937 -0.359375 0.000000
+v 0.112529 -0.359375 -0.064969
+v 0.064969 -0.359375 -0.112529
+v 0.037969 -0.312500 -0.065764
+v 0.000000 -0.359375 -0.129937
+v 0.000000 -0.312500 -0.075938
+v -0.037969 -0.312500 -0.065764
+v 0.000000 -0.007812 0.000000
+v 0.000000 0.250000 0.000000
+v -0.025313 0.250000 -0.043843
+v -0.043843 0.250000 -0.025312
+v -0.050625 0.250000 0.000000
+v -0.043843 0.250000 0.025313
+v -0.025312 0.250000 0.043843
+v 0.000000 0.250000 0.050625
+v 0.025312 0.250000 0.043843
+v 0.058457 -0.406250 0.033750
+v 0.058457 -0.406250 -0.033750
+v 0.000000 -0.500000 0.000000
+v 0.000000 -0.476562 -0.168750
+v -0.064582 -0.429688 -0.111858
+v -0.111859 -0.429688 -0.064581
+v -0.129163 -0.429688 0.000000
+v -0.111858 -0.429688 0.064582
+v -0.064582 -0.429688 0.111859
+v 0.000000 -0.429688 0.129163
+v 0.064582 -0.429688 0.111859
+v 0.111859 -0.429688 0.064582
+v 0.043843 0.250000 0.025313
+v 0.129163 -0.429688 0.000000
+v 0.111859 -0.429688 -0.064582
+v 0.064582 -0.429688 -0.111859
+v 0.050625 0.250000 0.000000
+v 0.000000 -0.429688 -0.129163
+v 0.043843 0.250000 -0.025312
+v -0.084375 -0.476562 -0.146142
+v 0.025312 0.250000 -0.043843
+v -0.146142 -0.476562 -0.084375
+v 0.000000 0.250000 -0.050625
+v -0.168750 -0.476562 0.000000
+v 0.067500 0.203125 -0.116913
+v -0.146142 -0.476562 0.084375
+v 0.116913 0.203125 -0.067500
+v -0.084375 -0.476562 0.146142
+v 0.135000 0.203125 0.000000
+v 0.000000 -0.476562 0.168750
+v 0.116913 0.203125 0.067500
+v 0.084375 -0.476562 0.146142
+v 0.067500 0.203125 0.116913
+v 0.146142 -0.476562 0.084375
+v 0.000000 0.203125 0.135000
+v -0.067500 0.203125 0.116913
+v 0.168750 -0.476562 0.000000
+v 0.146142 -0.476562 -0.084375
+v 0.084375 -0.476562 -0.146142
+v 0.000000 -0.453125 -0.156914
+v -0.078457 -0.453125 -0.135891
+v -0.135891 -0.453125 -0.078457
+v -0.156914 -0.453125 0.000000
+v -0.135891 -0.453125 0.078457
+v -0.078457 -0.453125 0.135891
+v 0.000000 -0.453125 0.156914
+v 0.078457 -0.453125 0.135891
+v -0.116913 0.203125 0.067500
+v 0.135891 -0.453125 0.078457
+v 0.156914 -0.453125 0.000000
+v 0.135891 -0.453125 -0.078457
+v 0.078457 -0.453125 -0.135891
+v -0.033750 -0.406250 -0.058457
+v 0.000000 -0.406250 -0.067500
+v -0.058457 -0.406250 -0.033750
+v -0.067500 -0.406250 0.000000
+v -0.058457 -0.406250 0.033750
+v -0.033750 -0.406250 0.058457
+v 0.000000 -0.406250 0.067500
+v 0.033750 -0.406250 0.058457
+v 0.067500 -0.406250 0.000000
+v 0.033750 -0.406250 -0.058457
+v -0.084375 -0.500000 -0.146142
+v -0.146142 -0.500000 -0.084375
+v -0.168750 -0.500000 0.000000
+v -0.146142 -0.500000 0.084375
+v -0.084375 -0.500000 0.146142
+v 0.000000 -0.500000 0.168750
+v 0.084375 -0.500000 0.146142
+v 0.146142 -0.500000 0.084375
+v 0.168750 -0.500000 0.000000
+v 0.146142 -0.500000 -0.084375
+v 0.084375 -0.500000 -0.146142
+v 0.000000 -0.500000 -0.168750
+v 0.075937 -0.312500 -0.131528
+v 0.000000 -0.312500 -0.151875
+v 0.131528 -0.312500 -0.075938
+v 0.151875 -0.312500 0.000000
+v 0.131528 -0.312500 0.075938
+v 0.075938 -0.312500 0.131528
+v 0.000000 -0.312500 0.151875
+v -0.075937 -0.312500 0.131528
+v -0.131528 -0.312500 0.075938
+v -0.151875 -0.312500 0.000000
+v 0.073515 0.133963 -0.024849
+v 0.076773 0.105455 -0.024849
+v 0.078402 0.091201 0.000000
+v 0.076773 0.105455 0.024849
+v 0.073515 0.133963 0.024849
+v 0.071887 0.148216 0.000000
+v 0.101735 -0.474479 -0.000000
+v 0.100106 -0.460225 0.024849
+v 0.096849 -0.431717 0.024849
+v 0.095220 -0.417464 0.000000
+v 0.096849 -0.431717 -0.024849
+v 0.100106 -0.460225 -0.024849
+v -0.081926 -0.104724 -0.045599
+v -0.081926 -0.292224 -0.045599
+v 0.080453 -0.104724 0.048151
+v 0.080453 -0.292224 0.048151
+v -0.300118 -0.338925 -0.000000
+v -0.285864 -0.340554 -0.024849
+v -0.257356 -0.343812 -0.024849
+v -0.243102 -0.345441 -0.000000
+v -0.257356 -0.343812 0.024849
+v -0.285864 -0.340554 0.024849
+v -0.161951 0.130484 0.024849
+v -0.154051 0.102900 0.024849
+v -0.150102 0.089108 -0.000000
+v -0.154051 0.102900 -0.024849
+v -0.161951 0.130484 -0.024849
+v -0.165901 0.144276 -0.000000
+v -0.199454 0.111185 0.024849
+v -0.181599 0.088724 0.024849
+v -0.172672 0.077493 -0.000000
+v -0.181599 0.088724 -0.024849
+v -0.199454 0.111185 -0.024849
+v -0.208381 0.122416 -0.000000
+v -0.226716 0.079003 0.024849
+v -0.201625 0.065084 0.024849
+v -0.189080 0.058124 -0.000000
+v -0.201625 0.065084 -0.024849
+v -0.226716 0.079003 -0.024849
+v -0.239262 0.085963 -0.000000
+v -0.239588 0.038838 0.024849
+v -0.211081 0.035580 0.024849
+v -0.196827 0.033952 -0.000000
+v -0.211081 0.035580 -0.024849
+v -0.239588 0.038838 -0.024849
+v -0.253842 0.040467 -0.000000
+v -0.192368 -0.474479 -0.000000
+v -0.190739 -0.460225 -0.024849
+v -0.187482 -0.431717 -0.024849
+v -0.185853 -0.417464 -0.000000
+v -0.187482 -0.431717 0.024849
+v -0.190739 -0.460225 0.024849
+v -0.237864 -0.459899 -0.000000
+v -0.230904 -0.447353 -0.024849
+v -0.216985 -0.422262 -0.024849
+v -0.210026 -0.409717 -0.000000
+v -0.216985 -0.422262 0.024849
+v -0.230904 -0.447353 0.024849
+v -0.274317 -0.429018 -0.000000
+v -0.263086 -0.420091 -0.024849
+v -0.240625 -0.402236 -0.024849
+v -0.229394 -0.393309 -0.000000
+v -0.240625 -0.402236 0.024849
+v -0.263086 -0.420091 0.024849
+v -0.296178 -0.386538 -0.000000
+v -0.282385 -0.382588 -0.024849
+v -0.254801 -0.374688 -0.024849
+v -0.241009 -0.370738 -0.000000
+v -0.254801 -0.374688 0.024849
+v -0.282385 -0.382588 0.024849
+v -0.073515 0.133963 0.024849
+v -0.076773 0.105455 0.024849
+v -0.078402 0.091201 -0.000000
+v -0.076773 0.105455 -0.024849
+v -0.073515 0.133963 -0.024849
+v -0.071887 0.148216 -0.000000
+v -0.101735 -0.474479 -0.000000
+v -0.100106 -0.460225 -0.024849
+v -0.096849 -0.431717 -0.024849
+v -0.095220 -0.417464 -0.000000
+v -0.096849 -0.431717 0.024849
+v -0.100106 -0.460225 0.024849
+v -0.135000 0.203125 0.000000
+v -0.131528 -0.312500 -0.075937
+v -0.116913 0.203125 -0.067500
+v -0.067500 0.203125 -0.116913
+v 0.000000 0.203125 -0.135000
+v 0.033750 0.179688 -0.058457
+v 0.058457 0.179688 -0.033750
+v 0.067500 0.179688 0.000000
+v 0.058457 0.179688 0.033750
+v 0.033750 0.179688 0.058457
+v 0.000000 0.179688 0.067500
+v -0.033750 0.179688 0.058457
+v -0.058457 0.179688 0.033750
+v -0.067500 0.179688 0.000000
+v 0.081926 -0.104724 0.045599
+v 0.081926 -0.292224 0.045599
+v -0.080453 -0.104724 -0.048151
+v -0.080453 -0.292224 -0.048151
+v -0.075938 -0.312500 -0.131528
+v 0.037969 0.039062 -0.065764
+v 0.065764 0.039062 -0.037969
+v 0.075937 0.039062 0.000000
+v -0.058457 0.179688 -0.033750
+v 0.065764 0.039062 0.037969
+v -0.033750 0.179688 -0.058457
+v 0.037969 0.039062 0.065764
+v 0.000000 0.039062 0.075938
+v -0.037969 0.039062 0.065764
+v -0.065764 0.039062 0.037969
+v -0.075937 0.039062 0.000000
+v 0.000000 0.039062 -0.075937
+v -0.065764 0.039062 -0.037969
+v -0.037969 0.039062 -0.065764
+v 0.000000 0.179688 -0.067500
+v 0.033750 0.156250 -0.058457
+v 0.058457 0.156250 -0.033750
+v 0.067500 0.156250 0.000000
+v 0.058457 0.156250 0.033750
+v 0.033750 0.156250 0.058457
+v 0.000000 0.156250 0.067500
+v -0.033750 0.156250 0.058457
+v -0.058457 0.156250 0.033750
+v -0.067500 0.156250 0.000000
+v -0.058457 0.156250 -0.033750
+v -0.033750 0.156250 -0.058457
+v 0.075937 0.015625 -0.131528
+v 0.131528 0.015625 -0.075938
+v 0.151875 0.015625 0.000000
+v 0.131528 0.015625 0.075938
+v 0.075938 0.015625 0.131528
+v 0.000000 0.015625 0.151875
+v -0.075937 0.015625 0.131528
+v -0.131528 0.015625 0.075938
+v -0.151875 0.015625 0.000000
+v 0.000000 0.062500 -0.075937
+v -0.131528 0.015625 -0.075937
+v -0.075938 0.015625 -0.131528
+v 0.037969 0.062500 -0.065764
+v 0.065764 0.062500 -0.037969
+v 0.075937 0.062500 0.000000
+v 0.065764 0.062500 0.037969
+v 0.037969 0.062500 0.065764
+v 0.000000 0.062500 0.075938
+v -0.037969 0.062500 0.065764
+v -0.065764 0.062500 0.037969
+v -0.075937 0.062500 0.000000
+v 0.000000 0.015625 -0.151875
+v -0.065764 0.062500 -0.037969
+v -0.037969 0.062500 -0.065764
+v 0.000000 0.156250 -0.067500
+v 0.067500 0.065430 -0.116913
+v 0.116913 0.065430 -0.067500
+v 0.134999 0.065430 0.000000
+v 0.116913 0.065430 0.067500
+v 0.067500 0.065430 0.116913
+v 0.000000 0.065430 0.134999
+v -0.067500 0.065430 0.116913
+v -0.116913 0.065430 0.067500
+v -0.134999 0.065430 0.000000
+v 0.000000 -0.007812 -0.151875
+v -0.116913 0.065430 -0.067500
+v -0.067500 0.065430 -0.116913
+v 0.075937 -0.007812 -0.131528
+v 0.131528 -0.007812 -0.075938
+v 0.151875 -0.007812 0.000000
+v 0.131528 -0.007812 0.075938
+v 0.075937 -0.007812 0.131528
+v 0.000000 -0.007812 0.151875
+v -0.075937 -0.007812 0.131528
+v -0.131528 -0.007812 0.075938
+v -0.151875 -0.007812 0.000000
+v 0.000000 0.065430 -0.134999
+v -0.131528 -0.007812 -0.075937
+v -0.075938 -0.007812 -0.131528
+v -0.067500 0.226562 -0.116913
+v -0.116913 0.226562 -0.067500
+v -0.135000 0.226562 0.000000
+v -0.116913 0.226562 0.067500
+v -0.067500 0.226562 0.116913
+v 0.000000 0.226562 0.135000
+v 0.067500 0.226562 0.116913
+v 0.116913 0.226562 0.067500
+v 0.135000 0.226562 0.000000
+v 0.116913 0.226562 -0.067500
+v 0.067500 0.226562 -0.116913
+v 0.000000 0.226562 -0.135000
+v 0.000000 -0.031250 -0.168750
+v 0.084375 -0.031250 -0.146142
+v -0.075938 -0.007812 -0.131528
+v -0.131528 -0.007812 -0.075937
+v -0.151875 -0.007812 0.000000
+v -0.131528 -0.007812 0.075938
+v -0.075937 -0.007812 0.131528
+v 0.000000 -0.007812 0.151875
+v 0.075937 -0.007812 0.131528
+v 0.131528 -0.007812 0.075938
+v 0.151875 -0.007812 0.000000
+v 0.131528 -0.007812 -0.075938
+v 0.075937 -0.007812 -0.131528
+v 0.000000 -0.007812 -0.151875
+v 0.000000 -0.242188 -0.178125
+v 0.091815 -0.101562 -0.159028
+v 0.159028 -0.101562 -0.091815
+v 0.183630 -0.101562 0.000000
+v 0.159028 -0.101562 0.091815
+v 0.091815 -0.101562 0.159028
+v 0.000000 -0.101562 0.183630
+v -0.091815 -0.101562 0.159028
+v -0.159028 -0.101562 0.091815
+v -0.183630 -0.101562 0.000000
+v -0.159028 -0.101562 -0.091815
+v -0.091815 -0.101562 -0.159028
+v 0.000000 -0.101562 -0.183630
+v 0.089062 -0.242188 -0.154261
+v 0.154261 -0.242188 -0.089062
+v 0.178125 -0.242188 0.000000
+v 0.154261 -0.242188 0.089063
+v 0.089063 -0.242188 0.154261
+v 0.000000 -0.242188 0.178125
+v -0.089062 -0.242188 0.154261
+v -0.154261 -0.242188 0.089063
+v -0.178125 -0.242188 0.000000
+v -0.154261 -0.242188 -0.089062
+v -0.089063 -0.242188 -0.154261
+v 0.000000 -0.171875 -0.187500
+v 0.093750 -0.171875 -0.162380
+v 0.162380 -0.171875 -0.093750
+v 0.187500 -0.171875 0.000000
+v 0.162380 -0.171875 0.093750
+v 0.093750 -0.171875 0.162380
+v 0.000000 -0.171875 0.187500
+v -0.093750 -0.171875 0.162380
+v -0.162380 -0.171875 0.093750
+v -0.187500 -0.171875 0.000000
+v -0.162380 -0.171875 -0.093750
+v -0.093750 -0.171875 -0.162380
+v 0.146142 -0.031250 -0.084375
+v 0.168750 -0.031250 0.000000
+v 0.146142 -0.031250 0.084375
+v 0.084375 -0.031250 0.146142
+v 0.000000 -0.031250 0.168750
+v -0.084375 -0.031250 0.146142
+v -0.146142 -0.031250 0.084375
+v -0.168750 -0.031250 0.000000
+v -0.146142 -0.031250 -0.084375
+v -0.084375 -0.031250 -0.146142
+v -0.075938 -0.312500 -0.131528
+v -0.131528 -0.312500 -0.075937
+v -0.151875 -0.312500 0.000000
+v -0.131528 -0.312500 0.075938
+v -0.075937 -0.312500 0.131528
+v 0.000000 -0.312500 0.151875
+v 0.075938 -0.312500 0.131528
+v 0.131528 -0.312500 0.075938
+v 0.151875 -0.312500 0.000000
+v 0.131528 -0.312500 -0.075938
+v 0.000000 -0.312500 -0.151875
+v 0.075937 -0.312500 -0.131528
+vt 0.535355 0.640672
+vt 0.562500 0.625000
+vt 0.546828 0.652144
+vt 0.531156 0.625000
+vt 0.531156 0.679289
+vt 0.562500 0.656344
+vt 0.562500 0.687687
+vt 0.535355 0.609328
+vt 0.546828 0.597856
+vt 0.562500 0.593656
+vt 0.578172 0.652144
+vt 0.593843 0.679289
+vt 0.578172 0.597856
+vt 0.589644 0.640672
+vt 0.616789 0.656344
+vt 0.589644 0.609328
+vt 0.593843 0.625000
+vt 0.187500 0.187500
+vt 0.187500 0.125000
+vt 0.250000 0.125000
+vt 0.250000 0.187500
+vt 0.312500 0.125000
+vt 0.312500 0.187500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.437500 0.125000
+vt 0.437500 0.187500
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.562500 0.125000
+vt 0.562500 0.187500
+vt 0.625187 0.625000
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.687500 0.125000
+vt 0.687500 0.187500
+vt 0.616789 0.593656
+vt 0.750000 0.187500
+vt 0.750000 0.125000
+vt 0.812500 0.125000
+vt 0.812500 0.187500
+vt 0.593843 0.570711
+vt 0.062500 0.187500
+vt 0.062500 0.125000
+vt 0.125000 0.125000
+vt 0.125000 0.187500
+vt 0.562500 0.562313
+vt 0.531156 0.570711
+vt 0.187500 0.375000
+vt 0.250000 0.375000
+vt 0.312500 0.375000
+vt 0.508211 0.593656
+vt 0.499813 0.625000
+vt 0.508211 0.656344
+vt 0.375000 0.375000
+vt 0.437500 0.375000
+vt 0.500000 0.375000
+vt 0.562500 0.375000
+vt 0.625000 0.375000
+vt 0.687500 0.375000
+vt 0.750000 0.375000
+vt 0.812500 0.375000
+vt 0.062500 0.375000
+vt 0.125000 0.375000
+vt 0.187500 0.437500
+vt 0.250000 0.437500
+vt 0.312500 0.437500
+vt 0.375000 0.437500
+vt 0.437500 0.437500
+vt 0.500000 0.437500
+vt 0.562500 0.437500
+vt 0.625000 0.437500
+vt 0.687500 0.437500
+vt 0.750000 0.437500
+vt 0.812500 0.437500
+vt 0.062500 0.437500
+vt 0.125000 0.437500
+vt 0.499812 0.733577
+vt 0.562500 0.750375
+vt 0.625187 0.733577
+vt 0.671077 0.687687
+vt 0.687874 0.625000
+vt 0.671077 0.562313
+vt 0.625187 0.516423
+vt 0.562500 0.499625
+vt 0.499813 0.516423
+vt 0.453922 0.562313
+vt 0.437125 0.625000
+vt 0.453922 0.687687
+vt 0.125000 0.062500
+vt 0.187500 0.062500
+vt 0.687500 0.062500
+vt 0.750000 0.062500
+vt 0.062500 0.062500
+vt 0.812500 0.062500
+vt 0.625000 0.062500
+vt 0.562500 0.062500
+vt 0.500000 0.062500
+vt 0.437500 0.062500
+vt 0.375000 0.062500
+vt 0.312500 0.062500
+vt 0.250000 0.062500
+vt 0.454874 0.417800
+vt 0.476899 0.500000
+vt 0.312500 0.500000
+vt 0.394700 0.357626
+vt 0.312500 0.335601
+vt 0.230300 0.357626
+vt 0.170126 0.417801
+vt 0.148101 0.500000
+vt 0.170126 0.582200
+vt 0.230301 0.642374
+vt 0.312500 0.664399
+vt 0.394700 0.642374
+vt 0.454874 0.582200
+vt 0.500000 0.250000
+vt 0.312500 0.250000
+vt 0.312500 0.312500
+vt 0.500000 0.312500
+vt 0.187500 0.687500
+vt 0.312500 0.687500
+vt 0.312500 0.750000
+vt 0.187500 0.750000
+vt 0.312500 0.812500
+vt 0.187500 0.812500
+vt 0.187500 0.250000
+vt 0.312500 0.875000
+vt 0.187500 0.875000
+vt 0.187500 0.625000
+vt 0.312500 0.625000
+vt 0.187500 0.562500
+vt 0.312500 0.562500
+vt 0.187500 0.500000
+vt 0.187500 0.312500
+vt 0.062500 0.250000
+vt 0.125000 0.250000
+vt 0.125000 0.312500
+vt 0.062500 0.312500
+vt 0.125000 0.500000
+vt 0.062500 0.500000
+vt 0.125000 0.562500
+vt 0.062500 0.562500
+vt 0.125000 0.625000
+vt 0.062500 0.625000
+vt 0.125000 0.687500
+vt 0.062500 0.687500
+vt 0.062500 0.812500
+vt 0.125000 0.812500
+vt 0.125000 0.875000
+vt 0.062500 0.875000
+vt 0.062500 0.750000
+vt 0.125000 0.750000
+vt 0.500000 0.500000
+vt 0.500000 0.562500
+vt 0.500000 0.625000
+vt 0.500000 0.687500
+vt 0.500000 0.812500
+vt 0.500000 0.875000
+vt 0.500000 0.750000
+vt 0.469286 0.721980
+vt 0.493540 0.812500
+vt 0.403020 0.655714
+vt 0.312500 0.631459
+vt 0.221980 0.655714
+vt 0.155714 0.721980
+vt 0.131460 0.812500
+vt 0.155714 0.903020
+vt 0.221980 0.969286
+vt 0.312500 0.993540
+vt 0.403020 0.969286
+vt 0.469286 0.903020
+vt 0.625000 0.625000
+vt 0.437500 0.625000
+vt 0.437500 0.562500
+vt 0.625000 0.562500
+vt 0.687009 0.921604
+vt 0.640896 0.875491
+vt 0.750000 0.812500
+vt 0.750000 0.938483
+vt 0.812991 0.921604
+vt 0.859104 0.875491
+vt 0.875983 0.812500
+vt 0.859104 0.749509
+vt 0.812991 0.703396
+vt 0.750000 0.686517
+vt 0.687009 0.703396
+vt 0.640896 0.749509
+vt 0.624017 0.812500
+vt 0.000000 0.625000
+vt 0.000000 0.562500
+vt 0.000000 0.500000
+vt 0.000000 0.437500
+vt 0.000000 0.375000
+vt 0.000000 0.312500
+vt 0.000000 0.250000
+vt 0.000000 0.187500
+vt 0.000000 0.125000
+vt 0.375000 0.625000
+vt 0.250000 0.625000
+vt 0.250000 0.562500
+vt 0.375000 0.562500
+vt 0.250000 0.500000
+vt 0.375000 0.500000
+vt 0.250000 0.312500
+vt 0.375000 0.312500
+vt 0.250000 0.250000
+vt 0.375000 0.250000
+vt 0.437500 0.500000
+vt 0.437500 0.312500
+vt 0.437500 0.250000
+vt 1.000000 0.312500
+vt 0.937500 0.312500
+vt 0.937500 0.250000
+vt 1.000000 0.250000
+vt 0.625000 0.500000
+vt 0.937500 0.187500
+vt 1.000000 0.187500
+vt 0.625000 0.312500
+vt 1.000000 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.062500
+vt 1.000000 0.062500
+vt 0.625000 0.250000
+vt 1.000000 0.375000
+vt 0.937500 0.375000
+vt 1.000000 0.437500
+vt 0.937500 0.437500
+vt 1.000000 0.500000
+vt 0.937500 0.500000
+vt 1.000000 0.562500
+vt 0.937500 0.562500
+vt 1.000000 0.625000
+vt 0.937500 0.625000
+vt 0.812500 0.250000
+vt 0.750000 0.250000
+vt 0.812500 0.312500
+vt 0.750000 0.312500
+vt 0.812500 0.500000
+vt 0.750000 0.500000
+vt 0.812500 0.562500
+vt 0.750000 0.562500
+vt 0.812500 0.625000
+vt 0.750000 0.625000
+vt 0.000000 0.062500
+vt 0.000000 0.000000
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vt 1.000000 0.000000
+vt 0.750000 0.875000
+vt 0.750000 1.000000
+vt 0.687500 1.000000
+vt 0.687500 0.875000
+vt 0.812500 0.875000
+vt 0.812500 1.000000
+vt 0.937500 0.875000
+vt 0.937500 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.875000
+vt 0.125000 1.000000
+vt 0.062500 1.000000
+vt 0.625000 1.000000
+vt 0.625000 0.875000
+vt 0.875000 0.812500
+vt 0.812500 0.812500
+vt 0.937500 0.812500
+vt 0.625000 0.812500
+vt 0.562500 0.875000
+vt 0.562500 0.812500
+vt 0.687500 0.812500
+vt 0.875000 0.750000
+vt 0.812500 0.750000
+vt 0.937500 0.750000
+vt 0.625000 0.750000
+vt 0.562500 0.750000
+vt 0.687500 0.750000
+vt 0.750000 0.750000
+vt 0.812500 0.687500
+vt 0.875000 0.687500
+vt 0.937500 0.687500
+vt 0.625000 0.687500
+vt 0.562500 0.687500
+vt 0.687500 0.687500
+vt 0.750000 0.687500
+vt 0.875000 0.125000
+vt 0.875000 0.062500
+vt 0.875000 0.187500
+vt 0.687500 0.250000
+vt 0.562500 0.250000
+vt 0.875000 0.250000
+vt 0.687500 0.312500
+vt 0.562500 0.312500
+vt 0.875000 0.312500
+vt 0.562500 1.000000
+vt 0.875000 -0.000000
+vt 0.937500 -0.000000
+vt 0.750000 -0.000000
+vt 0.812500 -0.000000
+vt 0.625000 -0.000000
+vt 0.687500 -0.000000
+vt 0.562500 -0.000000
+vt 0.250000 0.875000
+vt 0.250000 1.000000
+vt 0.187500 1.000000
+vt 0.312500 1.000000
+vt 0.437500 0.875000
+vt 0.437500 1.000000
+vt 0.375000 1.000000
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.437500 0.812500
+vt 0.250000 0.812500
+vt 0.375000 0.750000
+vt 0.437500 0.750000
+vt 0.250000 0.750000
+vt 0.375000 0.687500
+vt 0.437500 0.687500
+vt 0.250000 0.687500
+vt 0.375000 -0.000000
+vt 0.437500 -0.000000
+vt 0.250000 -0.000000
+vt 0.312500 -0.000000
+vt 0.125000 -0.000000
+vt 0.187500 -0.000000
+vt 0.062500 -0.000000
+vt 0.875000 0.437500
+vt 0.875000 0.562500
+vt 0.875000 0.625000
+vn -0.317300 0.930400 -0.183200
+vn 0.000000 1.000000 0.000000
+vn -0.183200 0.930400 -0.317300
+vn -0.366400 0.930400 0.000000
+vn -0.106100 0.977200 -0.183800
+vn 0.000000 0.930400 -0.366400
+vn 0.000000 0.977200 -0.212200
+vn -0.317300 0.930400 0.183200
+vn -0.183200 0.930400 0.317300
+vn 0.000000 0.930400 0.366400
+vn 0.183200 0.930400 -0.317300
+vn 0.106100 0.977200 -0.183800
+vn 0.183200 0.930400 0.317300
+vn 0.317300 0.930400 -0.183200
+vn 0.183800 0.977200 -0.106100
+vn 0.317300 0.930400 0.183200
+vn 0.366400 0.930400 0.000000
+vn 0.502500 -0.814400 -0.290100
+vn 0.811900 -0.348000 -0.468700
+vn 0.937500 -0.348000 0.000000
+vn 0.580300 -0.814400 0.000000
+vn 0.811900 -0.348000 0.468700
+vn 0.502500 -0.814400 0.290100
+vn 0.468700 -0.348000 0.811900
+vn 0.290100 -0.814400 0.502500
+vn 0.000000 -0.348000 0.937500
+vn 0.000000 -0.814400 0.580300
+vn -0.468700 -0.348000 0.811900
+vn -0.290100 -0.814400 0.502500
+vn -0.811900 -0.348000 0.468700
+vn -0.502500 -0.814400 0.290100
+vn 0.212200 0.977200 0.000000
+vn -0.937500 -0.348000 0.000000
+vn -0.580300 -0.814400 0.000000
+vn -0.811900 -0.348000 -0.468700
+vn -0.502500 -0.814400 -0.290100
+vn 0.183800 0.977200 0.106100
+vn -0.290100 -0.814400 -0.502500
+vn -0.468700 -0.348000 -0.811900
+vn 0.000000 -0.348000 -0.937500
+vn 0.000000 -0.814400 -0.580300
+vn 0.106100 0.977200 0.183800
+vn 0.468700 -0.348000 -0.811900
+vn 0.290100 -0.814400 -0.502500
+vn 0.000000 0.977200 0.212200
+vn -0.106100 0.977200 0.183800
+vn 0.680800 -0.618000 -0.393000
+vn 0.786100 -0.618000 0.000000
+vn 0.680800 -0.618000 0.393000
+vn -0.183800 0.977200 0.106100
+vn -0.212200 0.977200 0.000000
+vn -0.183800 0.977200 -0.106100
+vn 0.393000 -0.618000 0.680800
+vn 0.000000 -0.618000 0.786100
+vn -0.393000 -0.618000 0.680800
+vn -0.680800 -0.618000 0.393000
+vn -0.786100 -0.618000 0.000000
+vn -0.680800 -0.618000 -0.393000
+vn -0.393000 -0.618000 -0.680800
+vn 0.000000 -0.618000 -0.786100
+vn 0.393000 -0.618000 -0.680800
+vn 0.682100 0.616100 -0.393800
+vn 0.787600 0.616100 0.000000
+vn 0.682100 0.616100 0.393800
+vn 0.393800 0.616100 0.682100
+vn 0.000000 0.616100 0.787600
+vn -0.393800 0.616100 0.682100
+vn -0.682100 0.616100 0.393800
+vn -0.787600 0.616100 0.000000
+vn -0.682100 0.616100 -0.393800
+vn -0.393800 0.616100 -0.682100
+vn 0.000000 0.616100 -0.787600
+vn 0.393800 0.616100 -0.682100
+vn -0.378500 0.653400 -0.655600
+vn 0.000000 0.653400 -0.757000
+vn 0.378500 0.653400 -0.655600
+vn 0.655600 0.653400 -0.378500
+vn 0.757000 0.653400 0.000000
+vn 0.655600 0.653400 0.378500
+vn 0.378500 0.653400 0.655600
+vn 0.000000 0.653400 0.757000
+vn -0.378500 0.653400 0.655600
+vn -0.655600 0.653400 0.378500
+vn -0.757000 0.653400 0.000000
+vn -0.655600 0.653400 -0.378500
+vn -0.378600 -0.653200 -0.655700
+vn 0.000000 -0.653200 -0.757100
+vn 0.000000 -1.000000 0.000000
+vn -0.655700 -0.653200 -0.378600
+vn -0.757100 -0.653200 0.000000
+vn -0.655700 -0.653200 0.378600
+vn -0.378600 -0.653200 0.655700
+vn 0.000000 -0.653200 0.757100
+vn 0.378600 -0.653200 0.655700
+vn 0.655700 -0.653200 0.378600
+vn 0.757100 -0.653200 0.000000
+vn 0.655700 -0.653200 -0.378600
+vn 0.378600 -0.653200 -0.655700
+vn 0.263800 0.849400 -0.457000
+vn 0.457000 0.849400 -0.263800
+vn 0.457000 0.849400 0.263800
+vn 0.263800 0.849400 0.457000
+vn 0.527700 0.849400 0.000000
+vn -0.796800 0.604300 0.000000
+vn -0.527700 0.849400 0.000000
+vn -0.457000 0.849400 -0.263800
+vn -0.690000 0.604300 -0.398400
+vn 0.000000 0.604300 -0.796800
+vn 0.000000 0.849400 -0.527700
+vn 0.398400 0.604300 -0.690000
+vn -0.263800 0.849400 -0.457000
+vn -0.398400 0.604300 -0.690000
+vn 0.690000 0.604300 -0.398400
+vn -0.690000 0.604300 0.398400
+vn -0.457000 0.849400 0.263800
+vn -0.398400 0.604300 0.690000
+vn -0.263800 0.849400 0.457000
+vn 0.000000 0.604200 0.796800
+vn 0.000000 0.849400 0.527700
+vn 0.398400 0.604200 0.690000
+vn 0.690000 0.604200 0.398400
+vn 0.796800 0.604300 0.000000
+vn 0.844100 0.223500 -0.487300
+vn 0.974700 0.223500 0.000000
+vn 0.844100 0.223500 0.487300
+vn 0.487300 0.223500 0.844100
+vn 0.000000 0.223500 0.974700
+vn -0.487300 0.223500 0.844100
+vn -0.844100 0.223500 0.487300
+vn -0.974700 0.223500 0.000000
+vn -0.487300 0.223500 -0.844100
+vn 0.000000 0.223500 -0.974700
+vn 0.487300 0.223500 -0.844100
+vn -0.844100 0.223500 -0.487300
+vn 0.000000 -0.379300 -0.925300
+vn 0.000000 0.330800 -0.943700
+vn 0.471800 0.330800 -0.817300
+vn 0.462600 -0.379300 -0.801300
+vn 0.136000 0.987600 -0.078500
+vn 0.078500 0.987600 -0.136000
+vn 0.157000 0.987600 0.000000
+vn 0.136000 0.987600 0.078500
+vn 0.078500 0.987600 0.136000
+vn 0.000000 0.987600 0.157000
+vn -0.078500 0.987600 0.136000
+vn -0.136000 0.987600 0.078500
+vn -0.157000 0.987600 0.000000
+vn -0.136000 0.987600 -0.078500
+vn -0.078500 0.987600 -0.136000
+vn 0.000000 0.987600 -0.157000
+vn 0.413800 0.561200 -0.716800
+vn 0.000000 0.561200 -0.827700
+vn 0.716800 0.561200 -0.413800
+vn 0.827700 0.561200 0.000000
+vn 0.716800 0.561200 0.413800
+vn 0.413800 0.561200 0.716800
+vn 0.000000 0.561200 0.827700
+vn -0.413800 0.561200 0.716800
+vn -0.716800 0.561200 0.413800
+vn -0.827700 0.561200 0.000000
+vn -0.716800 0.561200 -0.413800
+vn -0.413800 0.561200 -0.716800
+vn 0.000000 -0.629500 -0.776900
+vn 0.000000 -0.538400 -0.842700
+vn 0.421300 -0.538400 -0.729800
+vn 0.388500 -0.629500 -0.672900
+vn 0.729800 -0.538400 -0.421300
+vn 0.672900 -0.629500 -0.388500
+vn 0.842700 -0.538400 0.000000
+vn 0.776900 -0.629500 0.000000
+vn 0.729800 -0.538400 0.421300
+vn 0.672900 -0.629500 0.388500
+vn 0.421300 -0.538400 0.729800
+vn 0.388500 -0.629500 0.672900
+vn 0.000000 -0.538400 0.842700
+vn 0.000000 -0.629500 0.776900
+vn -0.421300 -0.538400 0.729800
+vn -0.388500 -0.629500 0.672900
+vn -0.729800 -0.538400 0.421300
+vn -0.672900 -0.629500 0.388500
+vn -0.842700 -0.538400 0.000000
+vn -0.776900 -0.629500 0.000000
+vn -0.729800 -0.538400 -0.421300
+vn -0.672900 -0.629500 -0.388500
+vn -0.388500 -0.629500 -0.672900
+vn -0.421300 -0.538400 -0.729800
+vn 0.817300 0.330800 -0.471800
+vn 0.943700 0.330800 0.000000
+vn 0.817300 0.330800 0.471800
+vn 0.471800 0.330800 0.817300
+vn 0.000000 0.330800 0.943700
+vn -0.471800 0.330800 0.817300
+vn -0.817300 0.330800 0.471800
+vn -0.943700 0.330800 0.000000
+vn -0.817300 0.330800 -0.471800
+vn -0.471800 0.330800 -0.817300
+vn -0.417200 0.551000 0.722700
+vn -0.722700 0.551000 0.417200
+vn 0.801300 -0.379300 -0.462600
+vn 0.925300 -0.379300 0.000000
+vn -0.834500 0.551000 0.000000
+vn 0.801300 -0.379300 0.462600
+vn 0.462600 -0.379300 0.801300
+vn 0.000000 -0.379300 0.925300
+vn -0.722700 0.551000 -0.417200
+vn -0.462600 -0.379300 0.801300
+vn -0.417200 0.551000 -0.722700
+vn 0.000000 0.551000 -0.834500
+vn -0.801300 -0.379300 0.462600
+vn -0.925300 -0.379300 0.000000
+vn -0.801300 -0.379300 -0.462600
+vn -0.462600 -0.379300 -0.801300
+vn 0.000000 0.551000 0.834500
+vn 0.417200 0.551000 0.722700
+vn 0.722700 0.551000 0.417200
+vn 0.834500 0.551000 0.000000
+vn 0.722700 0.551000 -0.417200
+vn 0.417200 0.551000 -0.722700
+vn -0.661500 0.645400 -0.381900
+vn -0.571700 -0.751200 -0.330000
+vn -0.330000 -0.751200 -0.571700
+vn -0.381900 0.645400 -0.661500
+vn 0.000000 -0.751200 -0.660100
+vn 0.000000 0.645400 -0.763800
+vn -0.763800 0.645400 0.000000
+vn -0.660100 -0.751200 0.000000
+vn -0.661500 0.645400 0.381900
+vn -0.571700 -0.751200 0.330000
+vn -0.381900 0.645400 0.661500
+vn -0.330000 -0.751200 0.571700
+vn 0.000000 0.645400 0.763800
+vn 0.000000 -0.751200 0.660100
+vn 0.381900 0.645400 0.661500
+vn 0.330000 -0.751200 0.571700
+vn 0.661500 0.645400 0.381900
+vn 0.571700 -0.751200 0.330000
+vn 0.763800 0.645400 0.000000
+vn 0.660100 -0.751200 0.000000
+vn 0.661500 0.645400 -0.381900
+vn 0.571700 -0.751200 -0.330000
+vn 0.381900 0.645400 -0.661500
+vn 0.330000 -0.751200 -0.571700
+vn -0.500000 0.000000 0.866000
+vn 0.500000 0.000000 -0.866000
+vn 0.139000 0.529700 0.836700
+vn 0.022000 0.540500 0.841000
+vn -0.014600 -0.468800 0.883200
+vn -0.111700 -0.428400 0.896600
+vn 0.256500 0.966500 0.000000
+vn 0.040600 0.999200 0.000000
+vn -0.111700 -0.428400 -0.896600
+vn -0.014600 -0.468800 -0.883200
+vn 0.022000 0.540500 -0.841000
+vn 0.139000 0.529700 -0.836700
+vn 0.248800 -0.968500 0.000000
+vn 0.031200 -0.999500 -0.000000
+vn 0.014600 -0.468800 0.883200
+vn 0.111700 -0.428400 0.896600
+vn -0.031200 -0.999500 -0.000000
+vn -0.248800 -0.968500 0.000000
+vn 0.338500 0.425800 -0.839100
+vn 0.622200 0.782800 0.000000
+vn -0.280200 -0.352500 -0.892900
+vn -0.622200 -0.782800 0.000000
+vn -0.280200 -0.352500 0.892900
+vn 0.338500 0.425800 0.839100
+vn 0.475700 0.263900 -0.839100
+vn 0.874400 0.485100 0.000000
+vn -0.393700 -0.218400 -0.892900
+vn -0.874400 -0.485100 0.000000
+vn -0.393700 -0.218400 0.892900
+vn 0.475700 0.263900 0.839100
+vn 0.977400 0.211200 0.000000
+vn 0.510400 0.113600 -0.852400
+vn -0.466900 -0.100900 -0.878500
+vn -0.976100 -0.217200 0.000000
+vn -0.466900 -0.100900 0.878500
+vn 0.510400 0.113600 0.852400
+vn 0.152600 -0.988300 0.000000
+vn 0.485100 -0.874400 0.000000
+vn 0.263900 -0.475700 0.839100
+vn 0.083800 -0.528800 0.844600
+vn -0.218400 0.393700 0.892900
+vn -0.070400 0.455900 0.887200
+vn -0.485100 0.874400 0.000000
+vn -0.156600 0.987600 0.000000
+vn -0.218400 0.393700 -0.892900
+vn -0.070400 0.455900 -0.887200
+vn 0.263900 -0.475700 -0.839100
+vn 0.083800 -0.528800 -0.844600
+vn 0.782800 -0.622200 0.000000
+vn 0.425800 -0.338500 0.839100
+vn -0.352500 0.280200 0.892900
+vn -0.782800 0.622200 0.000000
+vn -0.352500 0.280200 -0.892900
+vn 0.425800 -0.338500 -0.839100
+vn 0.961300 -0.275300 0.000000
+vn 0.522900 -0.149800 0.839100
+vn -0.432900 0.124000 0.892900
+vn -0.961300 0.275300 0.000000
+vn -0.432900 0.124000 -0.892900
+vn 0.522900 -0.149800 -0.839100
+vn 0.999700 0.022300 0.000000
+vn 0.524400 0.008500 0.851400
+vn -0.475500 -0.010600 0.879600
+vn -0.999800 -0.016200 0.000000
+vn -0.475500 -0.010600 -0.879600
+vn 0.524400 0.008500 -0.851400
+vn 0.000000 -0.474300 -0.880400
+vn 0.000000 0.528700 -0.848800
+vn 0.000000 -0.474300 0.880400
+vn 0.000000 0.528700 0.848800
+vn -0.139000 0.529700 -0.836700
+vn -0.022000 0.540500 -0.841000
+vn 0.014600 -0.468800 -0.883200
+vn 0.111700 -0.428400 -0.896600
+vn -0.256500 0.966500 0.000000
+vn -0.040600 0.999200 -0.000000
+vn -0.022000 0.540500 0.841000
+vn -0.139000 0.529700 0.836700
+vn -0.338500 0.425800 0.839100
+vn -0.622200 0.782800 0.000000
+vn 0.280200 -0.352500 0.892900
+vn 0.622200 -0.782800 0.000000
+vn 0.280200 -0.352500 -0.892900
+vn -0.338500 0.425800 -0.839100
+vn -0.475700 0.263900 0.839100
+vn -0.874400 0.485100 0.000000
+vn 0.393700 -0.218400 0.892900
+vn 0.874400 -0.485100 0.000000
+vn 0.393700 -0.218400 -0.892900
+vn -0.475700 0.263900 -0.839100
+vn -0.977400 0.211200 0.000000
+vn -0.510400 0.113600 0.852400
+vn 0.466900 -0.100900 0.878500
+vn 0.976100 -0.217200 0.000000
+vn 0.466900 -0.100900 -0.878500
+vn -0.510400 0.113600 -0.852400
+vn -0.152600 -0.988300 0.000000
+vn -0.485100 -0.874400 0.000000
+vn -0.263900 -0.475700 -0.839100
+vn -0.083800 -0.528800 -0.844600
+vn 0.218400 0.393700 -0.892900
+vn 0.070400 0.455900 -0.887200
+vn 0.485100 0.874400 0.000000
+vn 0.156600 0.987600 0.000000
+vn 0.218400 0.393700 0.892900
+vn 0.070400 0.455900 0.887200
+vn -0.263900 -0.475700 0.839100
+vn -0.083800 -0.528800 0.844600
+vn -0.782800 -0.622200 0.000000
+vn -0.425800 -0.338500 -0.839100
+vn 0.352500 0.280200 -0.892900
+vn 0.782800 0.622200 0.000000
+vn 0.352500 0.280200 0.892900
+vn -0.425800 -0.338500 0.839100
+vn -0.961300 -0.275300 0.000000
+vn -0.522900 -0.149800 -0.839100
+vn 0.432900 0.124000 -0.892900
+vn 0.961300 0.275300 0.000000
+vn 0.432900 0.124000 0.892900
+vn -0.522900 -0.149800 0.839100
+vn -0.999700 0.022300 0.000000
+vn -0.524400 0.008500 -0.851400
+vn 0.475500 -0.010600 -0.879600
+vn 0.999800 -0.016200 0.000000
+vn 0.475500 -0.010600 0.879600
+vn -0.524400 0.008500 0.851400
+vn 0.999300 -0.038200 0.000000
+vn 0.991500 0.129800 0.000000
+vn 0.858700 0.129800 0.495700
+vn 0.865400 -0.038200 0.499600
+vn 0.865400 -0.038200 -0.499600
+vn 0.858700 0.129800 -0.495700
+vn 0.499600 -0.038200 -0.865400
+vn 0.495700 0.129800 -0.858700
+vn 0.000000 -0.038200 -0.999300
+vn 0.000000 0.129800 -0.991500
+vn -0.499600 -0.038200 0.865400
+vn -0.495700 0.129800 0.858700
+vn -0.858700 0.129800 0.495700
+vn -0.865400 -0.038200 0.499600
+vn -0.991500 0.129800 0.000000
+vn -0.999300 -0.038200 0.000000
+vn -0.858700 0.129800 -0.495700
+vn -0.865400 -0.038200 -0.499600
+vn -0.499600 -0.038200 -0.865400
+vn -0.495700 0.129800 -0.858700
+vn 0.000000 -0.038200 0.999300
+vn 0.000000 0.129800 0.991500
+vn 0.499600 -0.038200 0.865400
+vn 0.495700 0.129800 0.858700
+vn -0.000000 -0.349800 -0.936800
+vn 0.000000 -0.238200 -0.971200
+vn 0.485600 -0.238200 -0.841100
+vn 0.468400 -0.349800 -0.811300
+vn 0.841100 -0.238200 -0.485600
+vn 0.811300 -0.349800 -0.468400
+vn 0.971200 -0.238200 0.000000
+vn 0.936800 -0.349800 0.000000
+vn 0.841100 -0.238200 0.485600
+vn 0.811300 -0.349800 0.468400
+vn 0.485600 -0.238200 0.841100
+vn 0.468400 -0.349800 0.811300
+vn 0.000000 -0.238200 0.971200
+vn 0.000000 -0.349800 0.936800
+vn -0.485600 -0.238200 0.841100
+vn -0.468400 -0.349800 0.811300
+vn -0.811300 -0.349800 -0.468400
+vn -0.841100 -0.238200 -0.485600
+vn -0.485600 -0.238200 -0.841100
+vn -0.468400 -0.349800 -0.811300
+vn -0.936800 -0.349800 0.000000
+vn -0.971200 -0.238200 0.000000
+vn -0.811300 -0.349800 0.468400
+vn -0.841100 -0.238200 0.485600
+vn 0.000000 0.392300 -0.919800
+vn 0.459900 0.392300 -0.796600
+vn 0.796600 0.392300 -0.459900
+vn 0.919800 0.392300 0.000000
+vn 0.796600 0.392300 0.459900
+vn 0.459900 0.392300 0.796600
+vn 0.000000 0.392300 0.919800
+vn -0.459900 0.392300 0.796600
+vn -0.796600 0.392300 -0.459900
+vn -0.459900 0.392300 -0.796600
+vn -0.919800 0.392300 0.000000
+vn -0.796600 0.392300 0.459900
+vn -0.405800 0.584300 0.702800
+vn -0.702800 0.584300 0.405800
+vn -0.811500 0.584300 0.000000
+vn -0.702800 0.584300 -0.405800
+vn -0.405800 0.584300 -0.702800
+vn -0.000000 0.584300 -0.811500
+vn 0.000000 0.584300 0.811500
+vn 0.405800 0.584300 0.702800
+vn 0.702800 0.584300 0.405800
+vn 0.811500 0.584300 0.000000
+vn 0.702800 0.584300 -0.405800
+vn 0.405800 0.584300 -0.702800
+g Cylinder_Cylinder_brass
+s 1
+f 73/1/1 55/2/2 70/3/3
+f 76/4/4 55/2/2 73/1/1
+f 115/5/5 70/3/3 91/6/6 114/7/7
+f 78/8/8 55/2/2 76/4/4
+f 80/9/9 55/2/2 78/8/8
+f 82/10/10 55/2/2 80/9/9
+f 114/7/7 91/6/6 90/11/11 112/12/12
+f 84/13/13 55/2/2 82/10/10
+f 112/12/12 90/11/11 88/14/14 100/15/15
+f 86/16/16 55/2/2 84/13/13
+f 87/17/17 55/2/2 86/16/16
+f 88/14/14 55/2/2 87/17/17
+f 90/11/11 55/2/2 88/14/14
+f 91/6/6 55/2/2 90/11/11
+f 70/3/3 55/2/2 91/6/6
+f 110/18/18 65/19/19 64/20/20 109/21/21
+f 109/21/21 64/20/20 63/22/22 108/23/23
+f 108/23/23 63/22/22 62/24/24 107/25/25
+f 107/25/25 62/24/24 61/26/26 106/27/27
+f 106/27/27 61/26/26 60/28/28 105/29/29
+f 105/29/29 60/28/28 59/30/30 104/31/31
+f 100/15/15 88/14/14 87/17/17 99/32/32
+f 104/31/31 59/30/30 58/33/33 103/34/34
+f 103/34/34 58/33/33 57/35/35 102/36/36
+f 99/32/32 87/17/17 86/16/16 98/37/37
+f 101/38/38 56/39/39 89/40/40 113/41/41
+f 98/37/37 86/16/16 84/13/13 97/42/42
+f 113/43/41 89/44/40 66/45/43 111/46/44
+f 97/42/42 84/13/13 82/10/10 96/47/45
+f 102/36/36 57/35/35 56/39/39 101/38/38
+f 96/47/45 82/10/10 80/9/9 95/48/46
+f 111/46/44 66/45/43 65/19/19 110/18/18
+f 83/49/47 110/18/18 109/21/21 81/50/48
+f 81/50/48 109/21/21 108/23/23 79/51/49
+f 95/48/46 80/9/9 78/8/8 94/52/50
+f 94/52/50 78/8/8 76/4/4 93/53/51
+f 93/53/51 76/4/4 73/1/1 92/54/52
+f 92/54/52 73/1/1 70/3/3 115/5/5
+f 79/51/49 108/23/23 107/25/25 77/55/53
+f 77/55/53 107/25/25 106/27/27 75/56/54
+f 75/56/54 106/27/27 105/29/29 74/57/55
+f 74/57/55 105/29/29 104/31/31 72/58/56
+f 72/58/56 104/31/31 103/34/34 71/59/57
+f 71/59/57 103/34/34 102/36/36 69/60/58
+f 68/61/59 101/38/38 113/41/41 67/62/60
+f 67/63/60 113/43/41 111/46/44 85/64/61
+f 69/60/58 102/36/36 101/38/38 68/61/59
+f 85/64/61 111/46/44 110/18/18 83/49/47
+f 126/65/62 83/49/47 81/50/48 185/66/63
+f 185/66/63 81/50/48 79/51/49 125/67/64
+f 125/67/64 79/51/49 77/55/53 184/68/65
+f 184/68/65 77/55/53 75/56/54 183/69/66
+f 183/69/66 75/56/54 74/57/55 182/70/67
+f 182/70/67 74/57/55 72/58/56 181/71/68
+f 181/71/68 72/58/56 71/59/57 180/72/69
+f 180/72/69 71/59/57 69/60/58 179/73/70
+f 177/74/71 68/61/59 67/62/60 178/75/72
+f 178/76/72 67/63/60 85/64/61 186/77/73
+f 179/73/70 69/60/58 68/61/59 177/74/71
+f 186/77/73 85/64/61 83/49/47 126/65/62
+f 309/78/74 115/5/5 114/7/7 200/79/75
+f 200/79/75 114/7/7 112/12/12 199/80/76
+f 199/80/76 112/12/12 100/15/15 201/81/77
+f 201/81/77 100/15/15 99/32/32 202/82/78
+f 202/82/78 99/32/32 98/37/37 203/83/79
+f 203/83/79 98/37/37 97/42/42 204/84/80
+f 204/84/80 97/42/42 96/47/45 205/85/81
+f 205/85/81 96/47/45 95/48/46 206/86/82
+f 206/86/82 95/48/46 94/52/50 207/87/83
+f 207/87/83 94/52/50 93/53/51 208/88/84
+f 208/88/84 93/53/51 92/54/52 292/89/85
+f 292/89/85 92/54/52 115/5/5 309/78/74
+f 66/45/43 199/90/76 201/91/77 65/19/19
+f 57/35/35 292/92/85 309/93/74 56/39/39
+f 89/44/40 200/94/75 199/90/76 66/45/43
+f 56/39/39 309/93/74 200/95/75 89/40/40
+f 58/33/33 208/96/84 292/92/85 57/35/35
+f 59/30/30 207/97/83 208/96/84 58/33/33
+f 60/28/28 206/98/82 207/97/83 59/30/30
+f 61/26/26 205/99/81 206/98/82 60/28/28
+f 62/24/24 204/100/80 205/99/81 61/26/26
+f 63/22/22 203/101/79 204/100/80 62/24/24
+f 64/20/20 202/102/78 203/101/79 63/22/22
+f 65/19/19 201/91/77 202/102/78 64/20/20
+g Cylinder_Cylinder_base
+f 187/103/86 198/104/87 127/105/88
+f 188/106/89 187/103/86 127/105/88
+f 189/107/90 188/106/89 127/105/88
+f 190/108/91 189/107/90 127/105/88
+f 191/109/92 190/108/91 127/105/88
+f 192/110/93 191/109/92 127/105/88
+f 193/111/94 192/110/93 127/105/88
+f 194/112/95 193/111/94 127/105/88
+f 195/113/96 194/112/95 127/105/88
+f 196/114/97 195/113/96 127/105/88
+f 197/115/98 196/114/97 127/105/88
+f 198/104/87 197/115/98 127/105/88
+f 140/23/99 186/29/73 126/116/62 139/117/100
+f 136/51/101 125/57/64 184/70/65 135/67/102
+f 138/118/103 185/119/63 125/57/64 136/51/101
+f 139/117/100 126/116/62 185/119/63 138/118/103
+f 167/120/104 131/121/105 130/122/106 166/123/107
+f 164/19/108 142/22/109 140/23/99 176/18/110
+f 166/123/107 130/122/106 129/124/111 165/125/112
+f 176/18/110 140/23/99 139/117/100 175/126/113
+f 165/125/112 129/124/111 142/127/109 164/128/108
+f 168/129/114 132/130/115 131/121/105 167/120/104
+f 169/131/116 133/132/117 132/130/115 168/129/114
+f 170/133/118 134/105/119 133/132/117 169/131/116
+f 171/65/120 135/67/102 134/105/119 170/133/118
+f 173/49/121 136/51/101 135/67/102 171/65/120
+f 174/134/122 138/118/103 136/51/101 173/49/121
+f 175/126/113 139/117/100 138/118/103 174/134/122
+f 196/135/97 162/136/123 161/137/124 195/138/96
+f 195/138/96 161/137/124 158/64/125 194/63/95
+f 194/63/95 158/64/125 156/77/126 193/76/94
+f 193/76/94 156/77/126 154/139/127 192/140/93
+f 192/140/93 154/139/127 152/141/128 191/142/92
+f 191/142/92 152/141/128 150/143/129 190/144/91
+f 190/144/91 150/143/129 148/145/130 189/146/90
+f 187/147/86 144/148/131 128/149/132 198/150/87
+f 197/43/98 163/46/133 162/136/123 196/135/97
+f 188/151/89 146/152/134 144/148/131 187/147/86
+f 198/44/87 128/45/132 163/46/133 197/43/98
+f 189/146/90 148/145/130 146/152/134 188/151/89
+f 148/145/130 167/120/104 166/123/107 146/152/134
+f 128/45/132 164/19/108 176/18/110 163/46/133
+f 146/152/134 166/123/107 165/125/112 144/148/131
+f 163/46/133 176/18/110 175/126/113 162/136/123
+f 144/148/131 165/125/112 164/128/108 128/149/132
+f 150/143/129 168/129/114 167/120/104 148/145/130
+f 152/141/128 169/131/116 168/129/114 150/143/129
+f 154/139/127 170/133/118 169/131/116 152/141/128
+f 156/77/126 171/65/120 170/133/118 154/139/127
+f 158/64/125 173/49/121 171/65/120 156/77/126
+f 161/137/124 174/134/122 173/49/121 158/64/125
+f 162/136/123 175/126/113 174/134/122 161/137/124
+f 135/67/102 184/70/65 183/153/66 134/105/119
+f 134/105/119 183/153/66 182/154/67 133/132/117
+f 133/132/117 182/154/67 181/155/68 132/130/115
+f 132/130/115 181/155/68 180/156/69 131/121/105
+f 129/124/111 177/157/71 178/158/72 142/127/109
+f 130/122/106 179/159/70 177/157/71 129/124/111
+f 142/22/109 178/28/72 186/29/73 140/23/99
+f 131/121/105 180/156/69 179/159/70 130/122/106
+g Cylinder_Cylinder_top
+f 384/160/86 370/161/87 116/124/88
+f 383/162/89 384/160/86 116/124/88
+f 381/163/90 383/162/89 116/124/88
+f 380/164/91 381/163/90 116/124/88
+f 379/165/92 380/164/91 116/124/88
+f 378/166/93 379/165/92 116/124/88
+f 377/167/94 378/166/93 116/124/88
+f 376/168/95 377/167/94 116/124/88
+f 375/169/96 376/168/95 116/124/88
+f 374/170/97 375/169/96 116/124/88
+f 373/171/98 374/170/97 116/124/88
+f 370/161/87 373/171/98 116/124/88
+f 382/172/135 360/173/136 325/174/137 361/175/138
+f 143/176/139 145/177/140 117/178/2
+f 141/179/141 143/176/139 117/178/2
+f 137/180/142 141/179/141 117/178/2
+f 124/181/143 137/180/142 117/178/2
+f 123/182/144 124/181/143 117/178/2
+f 122/183/145 123/182/144 117/178/2
+f 121/184/146 122/183/145 117/178/2
+f 120/185/147 121/184/146 117/178/2
+f 119/186/148 120/185/147 117/178/2
+f 118/187/149 119/186/148 117/178/2
+f 147/188/150 118/187/149 117/178/2
+f 395/131/151 396/129/152 147/189/150 145/190/140
+f 394/131/153 395/131/151 145/190/140 143/190/139
+f 393/133/154 394/131/153 143/190/139 141/191/141
+f 392/65/155 393/133/154 141/191/141 137/192/142
+f 391/49/156 392/65/155 137/192/142 124/193/143
+f 390/49/157 391/49/156 124/193/143 123/193/144
+f 389/134/158 390/49/157 123/193/144 122/194/145
+f 388/126/159 389/134/158 122/194/145 121/195/146
+f 387/126/160 388/126/159 121/195/146 120/195/147
+f 386/18/161 387/126/160 120/195/147 119/196/148
+f 385/19/162 386/18/161 119/196/148 118/197/149
+f 324/198/163 295/199/164 149/200/165 296/201/166
+f 296/201/166 149/200/165 151/200/167 297/201/168
+f 297/201/168 151/200/167 153/202/169 298/203/170
+f 298/203/170 153/202/169 155/66/171 299/68/172
+f 299/68/172 155/66/171 157/50/173 300/55/174
+f 300/55/174 157/50/173 159/50/175 301/55/176
+f 301/55/176 159/50/175 160/204/177 302/205/178
+f 302/205/178 160/204/177 172/206/179 303/207/180
+f 303/207/180 172/206/179 291/206/181 304/207/182
+f 304/207/182 291/206/181 293/21/183 313/25/184
+f 315/24/185 294/20/186 295/102/164 324/100/163
+f 313/25/184 293/21/183 294/20/186 315/24/185
+f 360/173/136 324/198/163 296/201/166 325/174/137
+f 325/174/137 296/201/166 297/201/168 326/174/187
+f 326/174/187 297/201/168 298/203/170 327/208/188
+f 327/208/188 298/203/170 299/68/172 328/69/189
+f 328/69/189 299/68/172 300/55/174 329/56/190
+f 329/56/190 300/55/174 301/55/176 330/56/191
+f 330/56/191 301/55/176 302/205/178 331/209/192
+f 331/209/192 302/205/178 303/207/180 332/210/193
+f 332/210/193 303/207/180 304/207/182 333/210/194
+f 333/210/194 304/207/182 313/25/184 334/27/195
+f 335/26/196 315/24/185 324/100/163 360/99/136
+f 334/27/195 313/25/184 315/24/185 335/26/196
+f 379/211/92 342/212/197 343/213/198 380/214/91
+f 361/175/138 325/174/137 326/174/187 362/175/199
+f 362/175/199 326/174/187 327/208/188 363/215/200
+f 380/214/91 343/213/198 344/213/201 381/214/90
+f 363/215/200 327/208/188 328/69/189 364/72/202
+f 364/72/202 328/69/189 329/56/190 365/59/203
+f 365/59/203 329/56/190 330/56/191 366/59/204
+f 381/214/90 344/213/201 346/216/205 383/217/89
+f 366/59/204 330/56/191 331/209/192 367/218/206
+f 384/219/86 347/220/207 357/221/208 370/222/87
+f 367/218/206 331/209/192 332/210/193 368/223/209
+f 383/217/89 346/216/205 347/220/207 384/219/86
+f 368/223/209 332/210/193 333/210/194 369/223/210
+f 369/223/210 333/210/194 334/27/195 371/34/211
+f 372/33/212 335/26/196 360/99/136 382/96/135
+f 371/34/211 334/27/195 335/26/196 372/33/212
+f 378/224/93 341/225/213 342/212/197 379/211/92
+f 377/224/94 340/225/214 341/225/213 378/224/93
+f 376/226/95 339/227/215 340/225/214 377/224/94
+f 375/228/96 338/229/216 339/227/215 376/226/95
+f 374/230/97 337/231/217 338/229/216 375/228/96
+f 373/230/98 336/231/218 337/231/217 374/230/97
+f 370/232/87 357/233/208 336/231/218 373/230/98
+f 322/41/219 358/38/220 359/39/221 323/40/222
+f 323/40/222 359/39/221 345/93/223 321/95/224
+f 320/234/225 356/235/226 358/38/220 322/41/219
+f 319/234/227 355/235/228 356/235/226 320/234/225
+f 318/236/229 354/237/230 355/235/228 319/234/227
+f 317/62/231 353/61/232 354/237/230 318/236/229
+f 316/62/233 352/61/234 353/61/232 317/62/231
+f 314/75/235 351/74/236 352/61/234 316/62/233
+f 312/238/237 350/239/238 351/74/236 314/75/235
+f 311/240/239 349/241/240 350/239/238 312/238/237
+f 310/240/241 348/241/242 349/241/240 311/240/239
+f 321/242/224 345/243/223 348/241/242 310/240/241
+f 345/243/223 382/172/135 361/175/138 348/241/242
+f 348/241/242 361/175/138 362/175/199 349/241/240
+f 349/241/240 362/175/199 363/215/200 350/239/238
+f 350/239/238 363/215/200 364/72/202 351/74/236
+f 351/74/236 364/72/202 365/59/203 352/61/234
+f 352/61/234 365/59/203 366/59/204 353/61/232
+f 353/61/232 366/59/204 367/218/206 354/237/230
+f 354/237/230 367/218/206 368/223/209 355/235/228
+f 355/235/228 368/223/209 369/223/210 356/235/226
+f 356/235/226 369/223/210 371/34/211 358/38/220
+f 359/39/221 372/33/212 382/96/135 345/93/223
+f 358/38/220 371/34/211 372/33/212 359/39/221
+f 357/233/208 321/242/224 310/240/241 336/231/218
+f 336/231/218 310/240/241 311/240/239 337/231/217
+f 337/231/217 311/240/239 312/238/237 338/229/216
+f 338/229/216 312/238/237 314/75/235 339/227/215
+f 339/227/215 314/75/235 316/62/233 340/225/214
+f 340/225/214 316/62/233 317/62/231 341/225/213
+f 341/225/213 317/62/231 318/236/229 342/212/197
+f 145/177/140 147/188/150 117/178/2
+f 293/21/183 386/18/161 385/19/162 294/20/186
+f 294/20/186 385/19/162 396/91/152 295/102/164
+f 396/91/152 385/19/162 118/197/149 147/244/150
+f 291/206/181 387/126/160 386/18/161 293/21/183
+f 172/206/179 388/126/159 387/126/160 291/206/181
+f 160/204/177 389/134/158 388/126/159 172/206/179
+f 346/216/205 322/41/219 323/40/222 347/220/207
+f 159/50/175 390/49/157 389/134/158 160/204/177
+f 347/220/207 323/40/222 321/95/224 357/221/208
+f 157/50/173 391/49/156 390/49/157 159/50/175
+f 344/213/201 320/234/225 322/41/219 346/216/205
+f 155/66/171 392/65/155 391/49/156 157/50/173
+f 153/202/169 393/133/154 392/65/155 155/66/171
+f 151/200/167 394/131/153 393/133/154 153/202/169
+f 343/213/198 319/234/227 320/234/225 344/213/201
+f 149/200/165 395/131/151 394/131/153 151/200/167
+f 295/199/164 396/129/152 395/131/151 149/200/165
+f 342/212/197 318/236/229 319/234/227 343/213/198
+g Cylinder_Cylinder_wick
+s off
+f 224/245/243 223/246/243 221/247/243 222/248/243
+f 308/248/244 307/247/244 305/246/244 306/245/244
+g Cylinder_Cylinder_handles
+s 1
+f 11/249/245 213/250/246 212/251/247 10/252/248
+f 12/253/249 214/254/250 213/250/246 11/249/245
+f 8/255/251 210/256/252 209/257/253 7/258/254
+f 7/258/254 209/257/253 214/254/250 12/253/249
+f 233/149/255 281/259/256 280/260/257 232/150/258
+f 10/252/248 212/251/247 211/261/259 9/262/260
+f 13/263/261 7/258/254 12/253/249 18/264/262
+f 14/265/263 8/255/251 7/258/254 13/263/261
+f 15/266/264 9/262/260 8/267/251 14/268/263
+f 16/269/265 10/252/248 9/262/260 15/266/264
+f 17/178/266 11/249/245 10/252/248 16/269/265
+f 18/264/262 12/253/249 11/249/245 17/178/266
+f 19/270/267 13/263/261 18/264/262 24/271/268
+f 20/272/269 14/265/263 13/263/261 19/270/267
+f 21/273/270 15/266/264 14/268/263 20/274/269
+f 22/275/271 16/269/265 15/266/264 21/273/270
+f 23/276/272 17/178/266 16/269/265 22/275/271
+f 24/271/268 18/264/262 17/178/266 23/276/272
+f 30/277/273 25/278/274 19/270/267 24/271/268
+f 26/279/275 20/272/269 19/270/267 25/278/274
+f 27/280/276 21/273/270 20/274/269 26/281/275
+f 28/282/277 22/275/271 21/273/270 27/280/276
+f 29/283/278 23/276/272 22/275/271 28/282/277
+f 30/277/273 24/271/268 23/276/272 29/283/278
+f 31/95/279 37/40/280 38/39/281 32/93/282
+f 32/93/282 38/39/281 39/35/283 33/92/284
+f 33/92/284 39/35/283 40/33/285 34/96/286
+f 34/96/286 40/33/285 41/30/287 35/97/288
+f 35/221/288 41/220/287 42/284/289 36/285/290
+f 36/285/290 42/284/289 37/40/280 31/95/279
+f 37/40/280 43/41/291 44/38/292 38/39/281
+f 38/39/281 44/38/292 45/36/293 39/35/283
+f 39/35/283 45/36/293 46/34/294 40/33/285
+f 40/33/285 46/34/294 47/31/295 41/30/287
+f 41/220/287 47/216/295 48/286/296 42/284/289
+f 42/284/289 48/286/296 43/41/291 37/40/280
+f 43/41/291 49/234/297 50/235/298 44/38/292
+f 44/38/292 50/235/298 51/287/299 45/36/293
+f 45/36/293 51/287/299 52/223/300 46/34/294
+f 46/34/294 52/223/300 53/288/301 47/31/295
+f 47/216/295 53/213/301 54/289/302 48/286/296
+f 48/286/296 54/289/302 49/234/297 43/41/291
+f 49/234/297 1/236/303 2/237/304 50/235/298
+f 50/235/298 2/237/304 3/290/305 51/287/299
+f 51/287/299 3/290/305 4/218/306 52/223/300
+f 52/223/300 4/218/306 5/291/307 53/288/301
+f 53/213/301 5/212/307 6/292/308 54/289/302
+f 54/289/302 6/292/308 1/236/303 49/234/297
+f 9/262/260 211/261/259 210/293/252 8/267/251
+f 6/292/308 25/278/274 30/277/273 1/236/303
+f 1/236/303 30/277/273 29/283/278 2/237/304
+f 2/237/304 29/283/278 28/282/277 3/290/305
+f 3/290/305 28/282/277 27/280/276 4/218/306
+f 4/218/306 27/280/276 26/281/275 5/291/307
+f 5/212/307 26/279/275 25/278/274 6/292/308
+f 35/221/288 36/285/290 220/294/309 219/295/310
+f 31/95/279 32/93/282 216/296/311 215/297/88
+f 36/285/290 31/95/279 215/297/88 220/294/309
+f 33/92/284 34/96/286 218/298/2 217/299/312
+f 34/96/286 35/97/288 219/300/310 218/298/2
+f 32/93/282 33/92/284 217/299/312 216/296/311
+f 235/301/313 283/302/314 282/303/315 234/128/316
+f 236/127/317 284/304/318 283/302/314 235/301/313
+f 232/305/258 280/306/257 279/307/319 231/308/320
+f 231/308/320 279/307/319 284/304/318 236/127/317
+f 234/128/316 282/303/315 281/259/256 233/149/255
+f 237/309/321 231/308/320 236/127/317 242/124/322
+f 238/310/323 232/305/258 231/308/320 237/309/321
+f 239/148/324 233/149/255 232/150/258 238/147/323
+f 240/125/325 234/128/316 233/149/255 239/148/324
+f 241/311/326 235/301/313 234/128/316 240/125/325
+f 242/124/322 236/127/317 235/301/313 241/311/326
+f 243/312/327 237/309/321 242/124/322 248/122/328
+f 244/313/329 238/310/323 237/309/321 243/312/327
+f 245/152/330 239/148/324 238/147/323 244/151/329
+f 246/123/331 240/125/325 239/148/324 245/152/330
+f 247/314/332 241/311/326 240/125/325 246/123/331
+f 248/122/328 242/124/322 241/311/326 247/314/332
+f 254/121/333 249/315/334 243/312/327 248/122/328
+f 250/316/335 244/313/329 243/312/327 249/315/334
+f 251/145/336 245/152/330 244/151/329 250/146/335
+f 252/120/337 246/123/331 245/152/330 251/145/336
+f 253/317/338 247/314/332 246/123/331 252/120/337
+f 254/121/333 248/122/328 247/314/332 253/317/338
+f 255/101/339 261/22/340 262/20/341 256/102/342
+f 256/102/342 262/20/341 263/19/343 257/91/344
+f 257/91/344 263/19/343 264/45/345 258/90/346
+f 258/90/346 264/45/345 265/44/347 259/94/348
+f 259/99/348 265/26/347 266/24/349 260/100/350
+f 260/100/350 266/24/349 261/22/340 255/101/339
+f 261/22/340 267/23/351 268/21/352 262/20/341
+f 262/20/341 268/21/352 269/18/353 263/19/343
+f 263/19/343 269/18/353 270/46/354 264/45/345
+f 264/45/345 270/46/354 271/43/355 265/44/347
+f 265/26/347 271/27/355 272/25/356 266/24/349
+f 266/24/349 272/25/356 267/23/351 261/22/340
+f 267/23/351 273/117/357 274/206/358 268/21/352
+f 268/21/352 274/206/358 275/126/359 269/18/353
+f 269/18/353 275/126/359 276/136/360 270/46/354
+f 270/46/354 276/136/360 277/135/361 271/43/355
+f 271/27/355 277/210/361 278/207/362 272/25/356
+f 272/25/356 278/207/362 273/117/357 267/23/351
+f 273/117/357 225/118/363 226/204/364 274/206/358
+f 274/206/358 226/204/364 227/134/365 275/126/359
+f 275/126/359 227/134/365 228/137/366 276/136/360
+f 276/136/360 228/137/366 229/138/367 277/135/361
+f 277/210/361 229/209/367 230/205/368 278/207/362
+f 278/207/362 230/205/368 225/118/363 273/117/357
+f 230/205/368 249/315/334 254/121/333 225/118/363
+f 225/118/363 254/121/333 253/317/338 226/204/364
+f 226/204/364 253/317/338 252/120/337 227/134/365
+f 227/134/365 252/120/337 251/145/336 228/137/366
+f 228/137/366 251/145/336 250/146/335 229/138/367
+f 229/209/367 250/316/335 249/315/334 230/205/368
+f 259/99/348 260/100/350 290/318/311 289/319/312
+f 255/101/339 256/102/342 286/320/309 285/321/88
+f 260/100/350 255/101/339 285/321/88 290/318/311
+f 257/91/344 258/90/346 288/322/2 287/323/310
+f 258/90/346 259/94/348 289/324/312 288/322/2
+f 256/102/342 257/91/344 287/323/310 286/320/309
+g Cylinder_Cylinder_glass
+f 438/119/369 414/70/370 415/68/371 439/205/372
+f 437/218/373 413/72/374 414/70/370 438/119/369
+f 436/237/375 412/74/376 413/72/374 437/218/373
+f 435/292/377 423/325/378 412/74/376 436/237/375
+f 442/237/379 418/74/380 419/72/381 443/218/382
+f 443/218/382 419/72/381 420/70/383 444/119/384
+f 444/119/384 420/70/383 421/68/385 445/205/386
+f 446/204/387 422/66/388 423/77/378 435/137/377
+f 445/205/386 421/68/385 422/66/388 446/204/387
+f 441/292/389 417/325/390 418/74/380 442/237/379
+f 440/204/391 416/66/392 417/77/390 441/137/389
+f 439/205/372 415/68/371 416/66/392 440/204/391
+f 467/285/393 411/286/394 424/38/395 468/93/396
+f 468/93/396 424/38/395 425/34/397 466/96/398
+f 466/96/398 425/34/397 426/29/399 465/98/400
+f 465/98/400 426/29/399 427/25/401 464/100/402
+f 464/100/402 427/25/401 428/21/403 463/102/404
+f 463/102/404 428/21/403 429/46/405 462/90/406
+f 462/285/406 429/286/405 430/38/407 461/93/408
+f 458/100/409 433/25/410 434/21/411 457/102/412
+f 457/102/412 434/21/411 411/46/394 467/90/393
+f 459/98/413 432/29/414 433/25/410 458/100/409
+f 460/96/415 431/34/416 432/29/414 459/98/413
+f 461/93/408 430/38/407 431/34/416 460/96/415
+f 430/38/407 442/237/379 443/218/382 431/34/416
+f 431/34/416 443/218/382 444/119/384 432/29/414
+f 432/29/414 444/119/384 445/205/386 433/25/410
+f 434/21/411 446/204/387 435/137/377 411/46/394
+f 433/25/410 445/205/386 446/204/387 434/21/411
+f 429/286/405 441/292/389 442/237/379 430/38/407
+f 428/21/403 440/204/391 441/137/389 429/46/405
+f 427/25/401 439/205/372 440/204/391 428/21/403
+f 426/29/399 438/119/369 439/205/372 427/25/401
+f 425/34/397 437/218/373 438/119/369 426/29/399
+f 424/38/395 436/237/375 437/218/373 425/34/397
+f 411/286/394 435/292/377 436/237/375 424/38/395
+f 423/325/378 397/326/417 398/241/418 412/74/376
+f 412/74/376 398/241/418 447/175/419 413/72/374
+f 413/72/374 447/175/419 448/154/420 414/70/370
+f 414/70/370 448/154/420 449/201/421 415/68/371
+f 415/68/371 449/201/421 450/200/422 416/66/392
+f 416/66/392 450/200/422 451/141/423 417/77/390
+f 417/325/390 451/326/423 452/241/424 418/74/380
+f 421/68/385 455/201/425 456/200/426 422/66/388
+f 422/66/388 456/200/426 397/141/417 423/77/378
+f 420/70/383 454/154/427 455/201/425 421/68/385
+f 419/72/381 453/175/428 454/154/427 420/70/383
+f 418/74/380 452/241/424 453/175/428 419/72/381
+f 452/241/424 403/243/429 402/172/430 453/175/428
+f 453/175/428 402/172/430 401/155/431 454/154/427
+f 454/154/427 401/155/431 400/198/432 455/201/425
+f 456/200/426 399/199/433 410/143/434 397/141/417
+f 455/201/425 400/198/432 399/199/433 456/200/426
+f 451/326/423 404/327/435 403/243/429 452/241/424
+f 450/200/422 405/199/436 404/143/435 451/141/423
+f 449/201/421 406/198/437 405/199/436 450/200/422
+f 448/154/420 407/155/438 406/198/437 449/201/421
+f 447/175/419 408/172/439 407/155/438 448/154/420
+f 398/241/418 409/243/440 408/172/439 447/175/419
+f 397/326/417 410/327/434 409/243/440 398/241/418
diff --git a/homedecor_modpack/homedecor/models/homedecor_oil_lamp_tabletop.obj b/homedecor_modpack/homedecor/models/homedecor_oil_lamp_tabletop.obj
new file mode 100644
index 0000000..6b48a27
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_oil_lamp_tabletop.obj
@@ -0,0 +1,610 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_oil_lamp.mtl
+o Circle
+v -0.000000 -0.499999 -0.168820
+v 0.119374 -0.499999 -0.119374
+v 0.168820 -0.499999 0.000000
+v 0.119374 -0.499999 0.119374
+v -0.000000 -0.499999 0.168820
+v -0.119374 -0.499999 0.119374
+v -0.168820 -0.499999 0.000000
+v -0.119374 -0.499999 -0.119374
+v -0.037773 -0.428077 -0.037773
+v 0.000000 -0.428077 -0.053421
+v -0.053421 -0.428077 0.000000
+v -0.037773 -0.428077 0.037773
+v 0.000000 -0.428077 0.053421
+v 0.037773 -0.428077 0.037773
+v 0.053421 -0.428077 0.000000
+v 0.037773 -0.428077 -0.037773
+v 0.000000 -0.381022 -0.025424
+v 0.017978 -0.381022 -0.017978
+v 0.025424 -0.381022 0.000000
+v 0.017978 -0.381022 0.017978
+v 0.000000 -0.381022 0.025424
+v -0.017978 -0.381022 0.017978
+v -0.025424 -0.381022 0.000000
+v -0.017978 -0.381022 -0.017978
+v -0.021802 -0.366978 -0.021802
+v 0.000000 -0.366978 -0.030833
+v -0.030833 -0.366978 0.000000
+v -0.021802 -0.366978 0.021802
+v 0.000000 -0.366978 0.030833
+v 0.021802 -0.366978 0.021802
+v 0.030833 -0.366978 0.000000
+v 0.021802 -0.366978 -0.021802
+v 0.000000 -0.347978 -0.026007
+v 0.018391 -0.347978 -0.018391
+v 0.026007 -0.347978 0.000000
+v 0.018391 -0.347978 0.018391
+v 0.000000 -0.347978 0.026007
+v -0.018391 -0.347978 0.018391
+v -0.026007 -0.347978 0.000000
+v -0.018391 -0.347978 -0.018391
+v -0.084133 -0.288300 -0.084133
+v 0.000000 -0.288300 -0.118980
+v -0.118980 -0.288300 0.000000
+v -0.084133 -0.288300 0.084133
+v 0.000000 -0.288300 0.118980
+v 0.084133 -0.288300 0.084133
+v 0.118980 -0.288300 0.000000
+v 0.084133 -0.288300 -0.084133
+v 0.091700 -0.224615 -0.091700
+v 0.000000 -0.224615 -0.129683
+v 0.000000 -0.191011 -0.102266
+v 0.072314 -0.191011 -0.072314
+v 0.129683 -0.224615 0.000000
+v 0.102266 -0.191011 0.000000
+v 0.072314 -0.191011 0.072314
+v 0.091700 -0.224615 0.091700
+v 0.000000 -0.224615 0.129683
+v 0.000000 -0.191011 0.102266
+v -0.072314 -0.191011 0.072314
+v -0.091700 -0.224615 0.091700
+v -0.102266 -0.191011 0.000000
+v -0.129683 -0.224615 0.000000
+v -0.072314 -0.191011 -0.072314
+v -0.091700 -0.224615 -0.091700
+v -0.044375 -0.178245 -0.044375
+v 0.000000 -0.178245 -0.062757
+v -0.062757 -0.178245 0.000000
+v -0.044375 -0.178245 0.044375
+v 0.000000 -0.178245 0.062757
+v 0.044375 -0.178245 0.044375
+v 0.062757 -0.178245 0.000000
+v 0.044375 -0.178245 -0.044375
+v 0.000000 -0.160828 -0.062757
+v 0.044375 -0.160828 -0.044375
+v 0.062757 -0.160828 0.000000
+v 0.044375 -0.160828 0.044375
+v 0.000000 -0.160828 0.062757
+v -0.044375 -0.160828 0.044375
+v -0.062757 -0.160828 0.000000
+v -0.044375 -0.160828 -0.044375
+v -0.021955 -0.160828 -0.021955
+v 0.000000 -0.160828 -0.031048
+v -0.031048 -0.160828 0.000000
+v -0.021955 -0.160828 0.021955
+v 0.000000 -0.160828 0.031048
+v 0.021955 -0.160828 0.021955
+v 0.031048 -0.160828 0.000000
+v 0.021955 -0.160828 -0.021955
+v 0.000000 -0.137405 -0.048121
+v 0.034028 -0.137405 -0.034028
+v 0.048121 -0.137405 0.000000
+v 0.034028 -0.137405 0.034028
+v 0.000000 -0.137405 0.048121
+v -0.034028 -0.137405 0.034028
+v -0.048121 -0.137405 0.000000
+v -0.034028 -0.137405 -0.034028
+v -0.043045 -0.108577 -0.043045
+v 0.000000 -0.108577 -0.060875
+v -0.060876 -0.108577 0.000000
+v -0.043045 -0.108577 0.043045
+v 0.000000 -0.108577 0.060876
+v 0.043045 -0.108577 0.043045
+v 0.060876 -0.108577 0.000000
+v 0.043045 -0.108577 -0.043045
+v 0.000000 -0.104974 -0.099435
+v 0.070311 -0.104974 -0.070310
+v 0.099435 -0.104974 0.000000
+v 0.070311 -0.104974 0.070311
+v 0.000000 -0.104974 0.099435
+v -0.070311 -0.104974 0.070311
+v -0.099435 -0.104974 0.000000
+v -0.070311 -0.104974 -0.070310
+v 0.000000 0.459841 -0.059720
+v 0.000000 -0.044025 -0.059720
+v -0.042228 -0.044025 -0.042228
+v -0.042228 0.459841 -0.042227
+v -0.059720 -0.044025 0.000000
+v -0.059720 0.459841 0.000000
+v -0.042228 -0.044025 0.042228
+v -0.042228 0.459841 0.042228
+v 0.000000 -0.044025 0.059720
+v 0.000000 0.459841 0.059720
+v 0.042228 -0.044025 0.042228
+v 0.042228 0.459841 0.042228
+v 0.059720 -0.044025 0.000000
+v 0.059720 0.459841 0.000000
+v 0.042228 -0.044025 -0.042228
+v 0.042228 0.459841 -0.042227
+v -0.000000 -0.068940 -0.091369
+v 0.064608 -0.068940 -0.064608
+v 0.091369 -0.068940 0.000000
+v 0.064608 -0.068940 0.064608
+v -0.000000 -0.068940 0.091369
+v -0.064608 -0.068940 0.064608
+v -0.091369 -0.068940 0.000000
+v -0.064608 -0.068940 -0.064608
+v 0.140908 -0.025916 0.000000
+v 0.099637 -0.025916 -0.099637
+v 0.130182 0.038734 -0.130182
+v 0.184105 0.038734 0.000000
+v 0.140908 0.114991 -0.140908
+v 0.199273 0.114991 0.000000
+v 0.130182 0.191249 -0.130182
+v 0.184105 0.191249 0.000000
+v 0.099637 0.255899 -0.099637
+v 0.140908 0.255899 0.000000
+v 0.067756 0.293043 -0.067756
+v 0.095821 0.293043 0.000000
+v 0.000000 0.255899 -0.140908
+v 0.000000 0.293043 -0.095821
+v 0.000000 0.191249 -0.184105
+v 0.000000 0.114991 -0.199273
+v 0.000000 0.038734 -0.184105
+v 0.000000 -0.025916 -0.140908
+v -0.099637 -0.025916 -0.099637
+v -0.130182 0.038734 -0.130182
+v -0.140908 0.114991 -0.140908
+v -0.130182 0.191249 -0.130182
+v -0.099637 0.255899 -0.099637
+v -0.067756 0.293043 -0.067756
+v -0.140908 0.255899 0.000000
+v -0.095821 0.293043 0.000000
+v -0.184105 0.191249 0.000000
+v -0.199273 0.114991 0.000000
+v -0.184105 0.038734 0.000000
+v -0.140908 -0.025916 0.000000
+v -0.099637 -0.025916 0.099637
+v -0.130182 0.038734 0.130182
+v -0.140908 0.114991 0.140908
+v -0.130182 0.191249 0.130182
+v -0.099637 0.255899 0.099637
+v -0.067756 0.293043 0.067756
+v 0.000000 0.255899 0.140908
+v 0.000000 0.293043 0.095821
+v 0.000000 0.191249 0.184105
+v 0.000000 0.114991 0.199273
+v 0.000000 0.038734 0.184105
+v 0.000000 -0.025916 0.140908
+v 0.099637 -0.025916 0.099637
+v 0.130182 0.038734 0.130182
+v 0.140908 0.114991 0.140908
+v 0.130182 0.191249 0.130182
+v 0.099637 0.255899 0.099637
+v 0.067756 0.293043 0.067756
+vt 0.722486 0.709370
+vt 0.757674 0.709370
+vt 0.782555 0.734252
+vt 0.782555 0.769440
+vt 0.757672 0.794321
+vt 0.722484 0.794321
+vt 0.697604 0.769438
+vt 0.697604 0.734250
+vt 0.672942 0.481053
+vt 0.749004 0.489926
+vt 0.750701 0.386273
+vt 0.705697 0.384042
+vt 0.599555 0.449154
+vt 0.665758 0.367008
+vt 0.541223 0.399315
+vt 0.632681 0.345843
+vt 0.510327 0.316762
+vt 0.614477 0.315709
+vt 0.993281 0.322822
+vt 0.889195 0.319147
+vt 0.870006 0.348816
+vt 0.959680 0.404573
+vt 0.899730 0.452926
+vt 0.836242 0.369143
+vt 0.795762 0.385170
+vt 0.825328 0.482966
+vt 0.781352 0.317656
+vt 0.751792 0.319209
+vt 0.808945 0.313831
+vt 0.833014 0.306958
+vt 0.850359 0.300331
+vt 0.671020 0.304943
+vt 0.653907 0.297882
+vt 0.694845 0.312415
+vt 0.722298 0.316924
+vt 0.752094 0.300507
+vt 0.724828 0.299879
+vt 0.698652 0.295754
+vt 0.675862 0.292062
+vt 0.655368 0.287569
+vt 0.849238 0.289983
+vt 0.828595 0.293954
+vt 0.805681 0.297077
+vt 0.779376 0.300551
+vt 0.777985 0.280736
+vt 0.752466 0.277162
+vt 0.803165 0.275409
+vt 0.826355 0.277409
+vt 0.845879 0.276592
+vt 0.678645 0.275597
+vt 0.659172 0.274271
+vt 0.701867 0.274167
+vt 0.726858 0.280114
+vt 0.694160 0.158567
+vt 0.694456 0.178102
+vt 0.724757 0.177691
+vt 0.724798 0.159438
+vt 0.783676 0.160122
+vt 0.754250 0.158963
+vt 0.753963 0.177171
+vt 0.783132 0.178407
+vt 0.814326 0.160128
+vt 0.813511 0.179598
+vt 0.848789 0.182939
+vt 0.850041 0.159366
+vt 0.659325 0.180752
+vt 0.658781 0.157535
+vt 0.609963 0.148864
+vt 0.608121 0.185567
+vt 0.783787 0.146570
+vt 0.754430 0.146664
+vt 0.814083 0.145407
+vt 0.847109 0.143510
+vt 0.899744 0.152215
+vt 0.887317 0.131180
+vt 0.662241 0.141227
+vt 0.623209 0.128413
+vt 0.694930 0.144545
+vt 0.725099 0.146021
+vt 0.754671 0.129931
+vt 0.725784 0.126923
+vt 0.696587 0.127490
+vt 0.668220 0.122079
+vt 0.639955 0.113289
+vt 0.870999 0.115461
+vt 0.841788 0.124134
+vt 0.812794 0.128156
+vt 0.783712 0.127444
+vt 0.783485 0.118571
+vt 0.754806 0.119166
+vt 0.812085 0.119206
+vt 0.839111 0.114928
+vt 0.867947 0.106969
+vt 0.670997 0.113931
+vt 0.643102 0.105254
+vt 0.697590 0.117816
+vt 0.726235 0.118013
+vt 0.755106 0.089381
+vt 0.726550 0.095049
+vt 0.699269 0.090328
+vt 0.674932 0.094337
+vt 0.656703 0.091373
+vt 0.854028 0.092448
+vt 0.835517 0.095276
+vt 0.811070 0.091152
+vt 0.783618 0.095500
+vt 0.785250 0.066676
+vt 0.755293 0.066188
+vt 0.813239 0.069786
+vt 0.839770 0.074096
+vt 0.859070 0.080517
+vt 0.670991 0.073246
+vt 0.651801 0.079467
+vt 0.697404 0.069156
+vt 0.725341 0.066342
+vt 0.755416 0.046290
+vt 0.723472 0.044668
+vt 0.693282 0.051097
+vt 0.664406 0.056200
+vt 0.642384 0.069154
+vt 0.868626 0.070185
+vt 0.846568 0.057006
+vt 0.817596 0.051670
+vt 0.787399 0.044961
+vt 0.789659 0.026982
+vt 0.755528 0.025507
+vt 0.823125 0.032411
+vt 0.854771 0.041689
+vt 0.887092 0.059171
+vt 0.656377 0.040905
+vt 0.624099 0.058098
+vt 0.687966 0.031873
+vt 0.721412 0.026705
+vt 0.683169 0.015011
+vt 0.649158 0.026657
+vt 0.791759 0.011407
+vt 0.755617 0.008139
+vt 0.828091 0.015534
+vt 0.615605 0.040972
+vt 0.986800 0.748984
+vt 0.512260 0.748985
+vt 0.512260 0.689394
+vt 0.986800 0.689393
+vt 0.512260 0.629803
+vt 0.986800 0.629802
+vt 0.512260 0.570212
+vt 0.986800 0.570212
+vt 0.512260 0.510621
+vt 0.986800 0.510621
+vt 0.512260 0.987349
+vt 0.512260 0.927758
+vt 0.986800 0.927756
+vt 0.986800 0.987347
+vt 0.512260 0.868167
+vt 0.986800 0.868165
+vt 0.512260 0.808576
+vt 0.986800 0.808575
+vt 0.895756 0.042003
+vt 0.862135 0.027422
+vt 0.719464 0.011138
+vt 0.146336 0.682257
+vt 0.152771 0.586856
+vt 0.210877 0.590551
+vt 0.205878 0.690051
+vt 0.261052 0.591591
+vt 0.259216 0.693906
+vt 0.311639 0.591765
+vt 0.313035 0.693150
+vt 0.371377 0.591207
+vt 0.375476 0.689328
+vt 0.435833 0.588359
+vt 0.433555 0.682598
+vt 0.368760 0.495857
+vt 0.424955 0.495595
+vt 0.310948 0.494868
+vt 0.261858 0.494609
+vt 0.212885 0.494338
+vt 0.155694 0.493329
+vt 0.152763 0.399262
+vt 0.211798 0.398034
+vt 0.262151 0.397658
+vt 0.312478 0.398133
+vt 0.371188 0.401156
+vt 0.434446 0.403951
+vt 0.375951 0.304714
+vt 0.432108 0.311952
+vt 0.315944 0.298223
+vt 0.262547 0.295469
+vt 0.208917 0.297310
+vt 0.147117 0.302436
+vt 0.129686 0.198499
+vt 0.200156 0.183048
+vt 0.264130 0.181014
+vt 0.327189 0.186132
+vt 0.393319 0.203407
+vt 0.453861 0.224992
+vt 0.439904 0.091979
+vt 0.490926 0.141576
+vt 0.361914 0.039073
+vt 0.268831 0.014173
+vt 0.173844 0.031135
+vt 0.084462 0.076779
+vt 0.077038 0.893343
+vt 0.126590 0.782717
+vt 0.192243 0.801797
+vt 0.153993 0.948348
+vt 0.255236 0.808515
+vt 0.246740 0.975555
+vt 0.319418 0.808094
+vt 0.342261 0.960846
+vt 0.390531 0.794500
+vt 0.432568 0.917373
+vt 0.455379 0.774827
+vt 0.490491 0.867238
+vt 0.058449 0.755751
+vt 0.020189 0.835268
+vt 0.082327 0.672348
+vt 0.080751 0.582661
+vt 0.091386 0.493575
+vt 0.079450 0.403420
+vt 0.081040 0.311727
+vt 0.056924 0.223463
+vt 0.020187 0.135649
+vt 0.900110 0.189169
+vt 0.683660 0.682301
+vt 0.703596 0.706053
+vt 0.684693 0.735733
+vt 0.654739 0.727710
+vt 0.778828 0.706053
+vt 0.798763 0.682301
+vt 0.827685 0.727710
+vt 0.797731 0.735733
+vt 0.825332 0.781495
+vt 0.796194 0.770887
+vt 0.792557 0.824205
+vt 0.774771 0.798802
+vt 0.741212 0.840393
+vt 0.741212 0.809384
+vt 0.689866 0.824205
+vt 0.707652 0.798802
+vt 0.657091 0.781495
+vt 0.686230 0.770887
+usemtl None
+s off
+f 119/1 121/2 123/3 125/4 127/5 114/6 115/7 117/8
+s 1
+f 8/9 1/10 10/11 9/12
+f 7/13 8/9 9/12 11/14
+f 6/15 7/13 11/14 12/16
+f 5/17 6/15 12/16 13/18
+f 5/19 13/20 14/21 4/22
+f 3/23 4/22 14/21 15/24
+f 3/23 15/24 16/25 2/26
+f 2/26 16/25 10/11 1/10
+f 16/25 18/27 17/28 10/11
+f 15/24 19/29 18/27 16/25
+f 15/24 14/21 20/30 19/29
+f 13/20 21/31 20/30 14/21
+f 13/18 12/16 22/32 21/33
+f 12/16 11/14 23/34 22/32
+f 11/14 9/12 24/35 23/34
+f 9/12 10/11 17/28 24/35
+f 24/35 17/28 26/36 25/37
+f 23/34 24/35 25/37 27/38
+f 22/32 23/34 27/38 28/39
+f 21/33 22/32 28/39 29/40
+f 21/31 29/41 30/42 20/30
+f 19/29 20/30 30/42 31/43
+f 19/29 31/43 32/44 18/27
+f 18/27 32/44 26/36 17/28
+f 32/44 34/45 33/46 26/36
+f 31/43 35/47 34/45 32/44
+f 31/43 30/42 36/48 35/47
+f 29/41 37/49 36/48 30/42
+f 29/40 28/39 38/50 37/51
+f 28/39 27/38 39/52 38/50
+f 27/38 25/37 40/53 39/52
+f 25/37 26/36 33/46 40/53
+f 62/54 43/55 41/56 64/57
+f 49/58 50/59 42/60 48/61
+f 53/62 47/63 46/64 56/65
+f 44/66 60/67 57/68 45/69
+f 49/58 52/70 51/71 50/59
+f 53/62 54/72 52/70 49/58
+f 53/62 56/65 55/73 54/72
+f 57/74 58/75 55/73 56/65
+f 57/68 60/67 59/76 58/77
+f 60/67 62/54 61/78 59/76
+f 62/54 64/57 63/79 61/78
+f 64/57 50/59 51/71 63/79
+f 63/79 51/71 66/80 65/81
+f 61/78 63/79 65/81 67/82
+f 59/76 61/78 67/82 68/83
+f 58/77 59/76 68/83 69/84
+f 58/75 69/85 70/86 55/73
+f 54/72 55/73 70/86 71/87
+f 54/72 71/87 72/88 52/70
+f 52/70 72/88 66/80 51/71
+f 72/88 74/89 73/90 66/80
+f 71/87 75/91 74/89 72/88
+f 71/87 70/86 76/92 75/91
+f 69/85 77/93 76/92 70/86
+f 69/84 68/83 78/94 77/95
+f 68/83 67/82 79/96 78/94
+f 67/82 65/81 80/97 79/96
+f 65/81 66/80 73/90 80/97
+f 80/97 73/90 82/98 81/99
+f 79/96 80/97 81/99 83/100
+f 78/94 79/96 83/100 84/101
+f 77/95 78/94 84/101 85/102
+f 77/93 85/103 86/104 76/92
+f 75/91 76/92 86/104 87/105
+f 75/91 87/105 88/106 74/89
+f 74/89 88/106 82/98 73/90
+f 88/106 90/107 89/108 82/98
+f 87/105 91/109 90/107 88/106
+f 87/105 86/104 92/110 91/109
+f 85/103 93/111 92/110 86/104
+f 85/102 84/101 94/112 93/113
+f 84/101 83/100 95/114 94/112
+f 83/100 81/99 96/115 95/114
+f 81/99 82/98 89/108 96/115
+f 96/115 89/108 98/116 97/117
+f 95/114 96/115 97/117 99/118
+f 94/112 95/114 99/118 100/119
+f 93/113 94/112 100/119 101/120
+f 93/111 101/121 102/122 92/110
+f 91/109 92/110 102/122 103/123
+f 91/109 103/123 104/124 90/107
+f 90/107 104/124 98/116 89/108
+f 104/124 106/125 105/126 98/116
+f 103/123 107/127 106/125 104/124
+f 103/123 102/122 108/128 107/127
+f 101/121 109/129 108/128 102/122
+f 101/120 100/119 110/130 109/131
+f 100/119 99/118 111/132 110/130
+f 99/118 97/117 112/133 111/132
+f 97/117 98/116 105/126 112/133
+f 110/130 111/132 135/134 134/135
+f 130/136 129/137 105/126 106/125
+f 106/125 107/127 131/138 130/136
+f 134/135 133/139 109/131 110/130
+f 113/140 114/141 115/142 116/143
+f 115/142 117/144 118/145 116/143
+f 117/144 119/146 120/147 118/145
+f 119/146 121/148 122/149 120/147
+f 121/150 123/151 124/152 122/153
+f 123/151 125/154 126/155 124/152
+f 125/154 127/156 128/157 126/155
+f 127/156 114/141 113/140 128/157
+f 108/128 109/129 133/158 132/159
+f 132/159 131/138 107/127 108/128
+f 112/133 105/126 129/137 136/160
+f 136/160 135/134 111/132 112/133
+f 137/161 138/162 139/163 140/164
+f 140/164 139/163 141/165 142/166
+f 142/166 141/165 143/167 144/168
+f 144/168 143/167 145/169 146/170
+f 146/170 145/169 147/171 148/172
+f 145/169 149/173 150/174 147/171
+f 143/167 151/175 149/173 145/169
+f 141/165 152/176 151/175 143/167
+f 139/163 153/177 152/176 141/165
+f 138/162 154/178 153/177 139/163
+f 154/178 155/179 156/180 153/177
+f 153/177 156/180 157/181 152/176
+f 152/176 157/181 158/182 151/175
+f 151/175 158/182 159/183 149/173
+f 149/173 159/183 160/184 150/174
+f 159/183 161/185 162/186 160/184
+f 158/182 163/187 161/185 159/183
+f 157/181 164/188 163/187 158/182
+f 156/180 165/189 164/188 157/181
+f 155/179 166/190 165/189 156/180
+f 166/190 167/191 168/192 165/189
+f 165/189 168/192 169/193 164/188
+f 164/188 169/193 170/194 163/187
+f 163/187 170/194 171/195 161/185
+f 161/185 171/195 172/196 162/186
+f 171/195 173/197 174/198 172/196
+f 170/194 175/199 173/197 171/195
+f 169/193 176/200 175/199 170/194
+f 168/192 177/201 176/200 169/193
+f 167/191 178/202 177/201 168/192
+f 178/203 179/204 180/205 177/206
+f 177/206 180/205 181/207 176/208
+f 176/208 181/207 182/209 175/210
+f 175/210 182/209 183/211 173/212
+f 173/212 183/211 184/213 174/214
+f 183/211 146/170 148/172 184/213
+f 182/209 144/168 146/170 183/211
+f 181/207 142/166 144/168 182/209
+f 180/205 140/164 142/166 181/207
+f 179/204 137/161 140/164 180/205
+f 132/215 179/204 178/203 133/216
+f 131/217 137/161 179/204 132/215
+f 130/218 138/162 137/161 131/217
+f 129/219 154/178 138/162 130/218
+f 129/219 136/220 155/179 154/178
+f 135/221 166/190 155/179 136/220
+f 134/222 167/191 166/190 135/221
+f 133/223 178/202 167/191 134/222
+f 36/48 46/64 47/63 35/47
+f 34/45 48/61 42/60 33/46
+f 40/53 41/56 43/55 39/52
+f 38/50 44/66 45/69 37/51
+f 37/49 45/224 46/64 36/48
+f 39/52 43/55 44/66 38/50
+f 40/53 33/46 42/60 41/56
+f 35/47 47/63 48/61 34/45
+f 44/66 43/55 62/54 60/67
+f 41/56 42/60 50/59 64/57
+f 48/61 47/63 53/62 49/58
+f 45/224 57/74 56/65 46/64
+f 133/225 121/226 119/227 134/228
+f 121/229 133/230 132/231 123/232
+f 131/233 125/234 123/232 132/231
+f 125/234 131/233 130/235 127/236
+f 129/237 114/238 127/236 130/235
+f 114/238 129/237 136/239 115/240
+f 135/241 117/242 115/240 136/239
+f 117/242 135/241 134/228 119/227
diff --git a/homedecor_modpack/homedecor/models/homedecor_openframe_bookshelf.obj b/homedecor_modpack/homedecor/models/homedecor_openframe_bookshelf.obj
new file mode 100644
index 0000000..b3125bc
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_openframe_bookshelf.obj
@@ -0,0 +1,644 @@
+# Blender v2.73 (sub 0) OBJ File: 'openframe_bookshelf.blend'
+# www.blender.org
+o bookshelf_nodebox-17
+v -0.500000 -0.500000 0.000000
+v -0.500000 -0.437500 0.000000
+v -0.500000 0.000000 0.000000
+v -0.437500 -0.437500 0.000000
+v -0.375000 -0.437500 0.000000
+v -0.375000 -0.437500 0.125000
+v -0.312500 -0.437500 0.125000
+v -0.250000 -0.437500 0.187500
+v -0.437500 0.000000 0.000000
+v -0.375000 0.000000 0.000000
+v -0.375000 -0.062500 0.125000
+v -0.250000 -0.125000 0.187500
+v -0.312500 -0.062500 0.125000
+v 0.000000 -0.437500 0.062500
+v -0.062500 -0.437500 0.125000
+v -0.062500 -0.437500 0.187500
+v 0.000000 -0.437500 0.125000
+v -0.125000 -0.187500 0.187500
+v -0.125000 -0.125000 0.187500
+v -0.062500 -0.187500 0.187500
+v -0.062500 -0.125000 0.125000
+v 0.000000 -0.125000 0.125000
+v 0.000000 -0.062500 0.062500
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.437500 0.500000
+v -0.500000 0.000000 0.500000
+v -0.437500 -0.437500 0.500000
+v -0.312500 -0.437500 0.250000
+v -0.250000 -0.437500 0.250000
+v -0.437500 0.000000 0.500000
+v -0.375000 -0.062500 0.500000
+v -0.375000 0.000000 0.500000
+v -0.312500 -0.187500 0.250000
+v -0.250000 -0.187500 0.250000
+v -0.312500 -0.187500 0.500000
+v -0.250000 -0.187500 0.500000
+v -0.250000 -0.125000 0.500000
+v -0.312500 -0.062500 0.500000
+v -0.125000 -0.187500 0.500000
+v -0.125000 -0.125000 0.500000
+v -0.062500 -0.187500 0.500000
+v -0.062500 -0.125000 0.500000
+v 0.000000 -0.125000 0.500000
+v 0.000000 -0.062500 0.500000
+v -0.500000 0.062500 0.000000
+v -0.437500 0.062500 0.000000
+v -0.375000 0.062500 0.000000
+v -0.375000 0.062500 0.250000
+v -0.312500 0.062500 0.187500
+v -0.312500 0.062500 0.250000
+v -0.250000 0.062500 0.187500
+v -0.437500 0.500000 0.000000
+v -0.375000 0.500000 0.000000
+v -0.375000 0.437500 0.250000
+v -0.312500 0.437500 0.250000
+v -0.312500 0.500000 0.187500
+v -0.250000 0.437500 0.187500
+v -0.250000 0.500000 0.187500
+v -0.187500 0.062500 0.125000
+v -0.187500 0.062500 0.187500
+v -0.062500 0.062500 0.125000
+v -0.062500 0.062500 0.250000
+v 0.000000 0.062500 0.187500
+v 0.000000 0.062500 0.250000
+v -0.187500 0.437500 0.187500
+v -0.187500 0.500000 0.125000
+v -0.062500 0.375000 0.250000
+v 0.000000 0.375000 0.250000
+v -0.062500 0.500000 0.125000
+v 0.000000 0.437500 0.187500
+v -0.500000 0.062500 0.500000
+v -0.437500 0.062500 0.500000
+v -0.437500 0.500000 0.500000
+v -0.375000 0.437500 0.500000
+v -0.375000 0.500000 0.500000
+v -0.312500 0.437500 0.500000
+v -0.312500 0.500000 0.500000
+v -0.250000 0.437500 0.500000
+v -0.250000 0.500000 0.500000
+v -0.187500 0.437500 0.500000
+v -0.187500 0.500000 0.500000
+v -0.062500 0.375000 0.500000
+v 0.000000 0.375000 0.500000
+v -0.062500 0.500000 0.500000
+v 0.000000 0.437500 0.500000
+v 0.500000 -0.500000 0.000000
+v 0.125000 -0.437500 0.062500
+v 0.125000 -0.062500 0.062500
+v 0.125000 -0.062500 0.250000
+v 0.187500 -0.125000 0.187500
+v 0.187500 -0.062500 0.250000
+v 0.375000 -0.437500 0.000000
+v 0.437500 -0.437500 0.000000
+v 0.500000 -0.437500 0.000000
+v 0.375000 -0.437500 0.187500
+v 0.375000 0.000000 0.000000
+v 0.437500 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+v 0.312500 -0.125000 0.187500
+v 0.312500 -0.062500 0.187500
+v 0.375000 -0.062500 0.187500
+v 0.500000 -0.500000 0.500000
+v 0.187500 -0.125000 0.500000
+v 0.187500 -0.062500 0.500000
+v 0.437500 -0.437500 0.500000
+v 0.500000 -0.437500 0.500000
+v 0.312500 -0.125000 0.500000
+v 0.312500 -0.062500 0.500000
+v 0.375000 -0.062500 0.500000
+v 0.375000 0.000000 0.500000
+v 0.437500 0.000000 0.500000
+v 0.500000 0.000000 0.500000
+v 0.125000 0.062500 0.187500
+v 0.125000 0.062500 0.250000
+v 0.187500 0.062500 0.250000
+v 0.250000 0.062500 0.187500
+v 0.125000 0.437500 0.187500
+v 0.125000 0.437500 0.250000
+v 0.125000 0.500000 0.250000
+v 0.187500 0.500000 0.250000
+v 0.250000 0.500000 0.187500
+v 0.375000 0.062500 0.000000
+v 0.437500 0.062500 0.000000
+v 0.500000 0.062500 0.000000
+v 0.375000 0.062500 0.187500
+v 0.375000 0.500000 0.000000
+v 0.437500 0.500000 0.000000
+v 0.375000 0.500000 0.187500
+v 0.250000 0.062500 0.250000
+v 0.125000 0.437500 0.500000
+v 0.125000 0.500000 0.500000
+v 0.187500 0.437500 0.250000
+v 0.250000 0.437500 0.250000
+v 0.187500 0.437500 0.500000
+v 0.187500 0.500000 0.500000
+v 0.250000 0.437500 0.500000
+v 0.250000 0.500000 0.500000
+v 0.437500 0.062500 0.500000
+v 0.500000 0.062500 0.500000
+v 0.437500 0.500000 0.500000
+v 0.187500 -0.437500 0.187500
+v 0.125000 -0.437500 0.250000
+v 0.187500 -0.437500 0.250000
+v 0.187500 -0.125000 0.250000
+v 0.375000 0.500000 0.500000
+v 0.312500 -0.437500 0.187500
+v -0.125000 -0.437500 0.187500
+v 0.375000 -0.437500 0.500000
+v 0.125000 -0.062500 0.500000
+v 0.375000 0.062500 0.500000
+v -0.375000 -0.437500 0.500000
+v -0.375000 0.062500 0.500000
+v 0.062500 0.437500 0.187500
+v 0.062500 0.062500 0.187500
+v -0.125000 0.500000 0.125000
+v -0.125000 0.062500 0.125000
+v -0.187500 -0.437500 0.187500
+v -0.187500 -0.125000 0.187500
+vt 0.645833 0.791667
+vt 0.625000 0.791667
+vt 0.625000 0.666667
+vt 0.645833 0.666667
+vt 0.541667 0.166667
+vt 0.541667 0.041667
+vt 0.562500 0.041667
+vt 0.562500 0.166667
+vt 0.979167 0.500000
+vt 0.833333 0.500000
+vt 0.854167 0.479167
+vt 0.979167 0.479167
+vt 0.333333 0.770833
+vt 0.312500 0.770833
+vt 0.312500 0.666667
+vt 0.333333 0.666667
+vt 0.458333 0.770833
+vt 0.437500 0.770833
+vt 0.437500 0.666667
+vt 0.458333 0.666667
+vt 0.333333 0.166667
+vt 0.333333 0.062500
+vt 0.375000 0.062500
+vt 0.375000 0.166667
+vt 0.583333 0.666667
+vt 0.583333 0.750000
+vt 0.562500 0.750000
+vt 0.562500 0.666667
+vt 0.520833 0.083333
+vt 0.541667 0.083333
+vt 0.520833 0.166667
+vt 0.437500 0.041667
+vt 0.458333 0.041667
+vt 0.458333 0.166667
+vt 0.437500 0.166667
+vt 0.625000 0.833333
+vt 0.625000 0.979167
+vt 0.604167 0.979167
+vt 0.604167 0.833333
+vt 0.687500 0.833333
+vt 0.687500 0.958333
+vt 0.666667 0.958333
+vt 0.666667 0.833333
+vt 0.791667 0.541667
+vt 0.791667 0.562500
+vt 0.666667 0.562500
+vt 0.687500 0.541667
+vt 0.458333 0.625000
+vt 0.354167 0.625000
+vt 0.375000 0.604167
+vt 0.458333 0.604167
+vt 0.375000 0.833333
+vt 0.375000 0.937500
+vt 0.354167 0.937500
+vt 0.354167 0.833333
+vt 0.437500 0.979167
+vt 0.416667 0.979167
+vt 0.416667 0.833333
+vt 0.437500 0.833333
+vt 0.395833 0.333333
+vt 0.395833 0.250000
+vt 0.395833 0.229167
+vt 0.416667 0.229167
+vt 0.437500 0.229167
+vt 0.437500 0.333333
+vt 0.104167 0.437500
+vt 0.020833 0.437500
+vt 0.020833 0.416667
+vt 0.104167 0.416667
+vt 0.854167 0.979167
+vt 0.750000 0.979167
+vt 0.770833 0.958333
+vt 0.854167 0.958333
+vt 0.437500 0.250000
+vt 0.458333 0.250000
+vt 0.458333 0.333333
+vt 0.458333 0.208333
+vt 0.479167 0.208333
+vt 0.500000 0.208333
+vt 0.500000 0.333333
+vt 0.187500 0.958333
+vt 0.187500 0.979167
+vt 0.166667 0.979167
+vt 0.166667 0.833333
+vt 0.187500 0.833333
+vt 0.833333 0.375000
+vt 0.791667 0.500000
+vt 0.791667 0.375000
+vt 0.020833 0.791667
+vt 0.020833 0.666667
+vt 0.041667 0.666667
+vt 0.041667 0.770833
+vt 0.041667 0.791667
+vt 0.854167 0.729167
+vt 0.854167 0.687500
+vt 0.937500 0.687500
+vt 0.979167 0.729167
+vt 0.291667 0.958333
+vt 0.291667 0.833333
+vt 0.312500 0.833333
+vt 0.312500 0.958333
+vt 0.666667 0.416667
+vt 0.645833 0.416667
+vt 0.645833 0.291667
+vt 0.666667 0.291667
+vt 0.458333 0.062500
+vt 0.479167 0.062500
+vt 0.479167 0.166667
+vt 0.062500 0.979167
+vt 0.020833 0.979167
+vt 0.020833 0.833333
+vt 0.062500 0.833333
+vt 0.375000 0.333333
+vt 0.375000 0.250000
+vt 0.166667 0.604167
+vt 0.250000 0.604167
+vt 0.250000 0.625000
+vt 0.166667 0.625000
+vt 0.541667 0.333333
+vt 0.541667 0.250000
+vt 0.562500 0.250000
+vt 0.562500 0.333333
+vt 0.500000 0.625000
+vt 0.500000 0.583333
+vt 0.583333 0.583333
+vt 0.625000 0.625000
+vt 0.354167 0.250000
+vt 0.354167 0.333333
+vt 0.520833 0.229167
+vt 0.541667 0.229167
+vt 0.520833 0.333333
+vt 0.687500 0.458333
+vt 0.666667 0.458333
+vt 0.500000 0.229167
+vt 0.312500 0.062500
+vt 0.312500 0.166667
+vt 0.187500 0.541667
+vt 0.187500 0.562500
+vt 0.083333 0.562500
+vt 0.083333 0.541667
+vt 0.812500 0.708333
+vt 0.708333 0.708333
+vt 0.729167 0.687500
+vt 0.812500 0.687500
+vt 0.583333 0.479167
+vt 0.625000 0.479167
+vt 0.270833 0.791667
+vt 0.250000 0.791667
+vt 0.250000 0.666667
+vt 0.270833 0.666667
+vt 0.729167 0.500000
+vt 0.729167 0.375000
+vt 0.166667 0.500000
+vt 0.083333 0.500000
+vt 0.083333 0.479167
+vt 0.166667 0.479167
+vt 0.145833 0.666667
+vt 0.145833 0.770833
+vt 0.125000 0.770833
+vt 0.125000 0.666667
+vt 0.375000 0.750000
+vt 0.375000 0.666667
+vt 0.395833 0.666667
+vt 0.395833 0.750000
+vt 0.562500 0.958333
+vt 0.541667 0.958333
+vt 0.541667 0.833333
+vt 0.562500 0.833333
+vt 0.125000 0.958333
+vt 0.104167 0.958333
+vt 0.104167 0.833333
+vt 0.125000 0.833333
+vt 0.520833 0.062500
+vt 0.500000 0.062500
+vt 0.041667 0.104167
+vt 0.020833 0.145833
+vt 0.020833 0.020833
+vt 0.041667 0.145833
+vt 0.750000 0.958333
+vt 0.083333 0.770833
+vt 0.083333 0.666667
+vt 0.125000 0.104167
+vt 0.270833 0.020833
+vt 0.125000 0.125000
+vt 0.083333 0.333333
+vt 0.083333 0.312500
+vt 0.125000 0.333333
+vt 0.125000 0.291667
+vt 0.250000 0.125000
+vt 0.270833 0.145833
+vt 0.187500 0.333333
+vt 0.187500 0.312500
+vt 0.208333 0.312500
+vt 0.208333 0.333333
+vt 0.041667 0.333333
+vt 0.041667 0.312500
+vt 0.062500 0.312500
+vt 0.062500 0.333333
+vt 0.270833 0.187500
+vt 0.145833 0.291667
+vt 0.020833 0.187500
+vt 0.437500 0.020833
+vt 0.395833 0.166667
+vt 0.395833 0.020833
+vt 0.395833 0.083333
+vt 0.375000 0.083333
+vt 0.354167 0.229167
+vt 0.312500 0.333333
+vt 0.312500 0.229167
+vt 0.229167 0.312500
+vt 0.145833 0.312500
+vt 0.062500 0.125000
+vt 0.062500 0.104167
+vt 0.104167 0.104167
+vt 0.104167 0.125000
+vt 0.145833 0.145833
+vt 0.145833 0.125000
+vt 0.208333 0.125000
+vt 0.208333 0.145833
+vt 0.020833 0.312500
+vt 0.250000 0.145833
+vt 0.354167 0.500000
+vt 0.375000 0.500000
+vt 0.041667 0.479167
+vt 0.041667 0.604167
+vt 0.020833 0.625000
+vt 0.020833 0.479167
+vt 0.125000 0.604167
+vt 0.125000 0.625000
+vt 0.854167 0.375000
+vt 0.854167 0.770833
+vt 0.854167 0.895833
+vt 0.833333 0.916667
+vt 0.833333 0.770833
+vt 0.958333 0.895833
+vt 0.958333 0.916667
+vt 0.708333 0.604167
+vt 0.729167 0.604167
+vt 0.937500 0.604167
+vt 0.979167 0.604167
+vt 0.270833 0.333333
+vt 0.229167 0.333333
+vt 0.750000 0.833333
+vt 0.770833 0.833333
+vt 0.687500 0.291667
+vt 0.687500 0.416667
+vt 0.812500 0.916667
+vt 0.812500 0.770833
+vt 0.520833 0.770833
+vt 0.500000 0.770833
+vt 0.500000 0.666667
+vt 0.520833 0.666667
+vt 0.500000 0.812500
+vt 1.000000 0.812500
+vt 1.000000 0.875000
+vt 0.500000 0.875000
+vt 1.000000 0.312500
+vt 1.000000 0.500000
+vt 0.562500 0.500000
+vt 0.562500 0.312500
+vt 0.562500 1.000000
+vt 0.625000 0.875000
+vt 1.000000 1.000000
+vt 0.062500 0.500000
+vt 0.000000 0.500000
+vt 0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.500000 -0.000000
+vt 0.500000 0.500000
+vt 0.125000 0.500000
+vt 0.125000 0.750000
+vt 0.062500 1.000000
+vt 0.562500 -0.000000
+vt 1.000000 -0.000000
+vt 0.000000 1.000000
+vt 0.937500 0.500000
+vt 0.937500 -0.000000
+vt 0.937500 0.812500
+vt 0.937500 0.875000
+vt 0.937500 1.000000
+vt 0.500000 1.000000
+vt 1.000000 0.562500
+vt 0.000000 0.562500
+vt 0.500000 0.562500
+vt 1.000000 0.062500
+vt 0.000000 0.062500
+vt 0.437500 0.312500
+vt 0.437500 -0.000000
+vt 0.125000 -0.000000
+vt 0.875000 -0.000000
+vt 0.875000 0.500000
+vt 0.125000 1.000000
+vt 0.437500 0.875000
+vt 0.875000 1.000000
+vt 0.125000 0.875000
+vt 0.187500 0.875000
+vt 0.937500 0.062500
+vt 0.437500 0.062500
+vt 0.000000 0.875000
+vt 0.000000 0.812500
+vt 0.437500 0.812500
+vt 0.750000 0.812500
+vt 0.625000 0.812500
+vt 0.625000 0.750000
+vt 0.687500 0.750000
+vt 0.750000 0.750000
+vt 0.875000 0.812500
+vt 0.562500 0.812500
+vt 0.437500 0.750000
+vt 0.500000 0.750000
+vt 0.187500 0.812500
+vt 0.187500 0.750000
+vt 0.312500 0.875000
+vt 0.375000 0.875000
+vt 0.250000 0.812500
+vt 0.312500 0.812500
+vt 0.500000 0.937500
+vt 0.625000 0.937500
+vt 0.687500 0.812500
+vt 0.250000 0.750000
+vt 0.375000 0.812500
+vt 0.812500 0.812500
+vt 0.625000 0.500000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+g bookshelf_nodebox-17_books
+s off
+f 11/1/1 13/2/1 7/3/1 6/4/1
+f 38/5/2 13/6/2 11/7/2 31/8/2
+f 44/9/3 23/10/3 22/11/3 43/12/3
+f 21/13/1 22/14/1 17/15/1 15/16/1
+f 158/17/1 19/18/1 147/19/1 157/20/1
+f 107/21/2 99/22/2 90/23/2 103/24/2
+f 28/25/1 33/26/1 34/27/1 29/28/1
+f 34/29/2 33/30/2 35/5/2 36/31/2
+f 22/32/2 21/33/2 42/34/2 43/35/2
+f 49/36/1 56/37/1 58/38/1 51/39/1
+f 48/40/1 54/41/1 55/42/1 50/43/1
+f 41/44/3 42/45/3 21/46/3 20/47/3
+f 85/48/3 70/49/3 68/50/3 83/51/3
+f 62/52/1 67/53/1 68/54/1 64/55/1
+f 155/56/1 69/57/1 61/58/1 156/59/1
+f 130/60/2 118/61/2 117/62/2 153/63/2 70/64/2 85/65/2
+f 19/66/4 40/67/4 39/68/4 18/69/4
+f 77/70/3 56/71/3 55/72/3 76/73/3
+f 83/65/2 68/74/2 67/75/2 82/76/2
+f 84/76/2 69/77/2 155/78/2 66/79/2 81/80/2
+f 118/81/1 119/82/1 120/83/1 115/84/1 114/85/1
+f 14/86/1 23/10/1 88/87/1 87/88/1
+f 101/89/1 95/90/1 146/91/1 99/92/1 100/93/1
+f 38/94/4 35/95/4 33/96/4 13/97/4
+f 153/98/1 154/99/1 63/100/1 70/101/1
+f 117/102/4 118/103/4 114/104/4 113/105/4
+f 41/34/2 20/106/2 18/107/2 39/108/2
+f 121/109/1 128/110/1 125/111/1 116/112/1
+f 135/113/2 120/114/2 119/61/2 131/60/2
+f 118/115/3 130/116/3 131/117/3 119/118/3
+f 76/119/2 55/120/2 54/121/2 74/122/2
+f 84/123/4 82/124/4 67/125/4 69/126/4
+f 133/127/2 132/114/2 134/113/2 136/128/2
+f 58/129/2 56/130/2 77/119/2 79/131/2
+f 16/132/3 20/47/3 21/46/3 15/133/3
+f 80/80/2 65/134/2 57/129/2 78/131/2
+f 101/135/2 100/22/2 108/21/2 109/136/2
+f 107/137/3 108/138/3 100/139/3 99/140/3
+f 37/141/3 12/142/3 34/143/3 36/144/3
+f 67/125/4 62/145/4 61/146/4 69/126/4
+f 89/147/1 91/148/1 143/149/1 142/150/1
+f 88/87/4 89/151/4 142/152/4 87/88/4
+f 91/153/4 104/154/4 103/155/4 144/156/4
+f 143/157/3 144/158/3 90/159/3 141/160/3
+f 20/161/1 16/162/1 147/163/1 18/164/1
+f 57/165/1 65/166/1 60/167/1 51/168/1
+f 132/169/1 133/170/1 129/171/1 115/172/1
+f 12/173/2 37/31/2 40/108/2 19/107/2 158/174/2
+f 35/175/5 31/176/5 151/177/5
+f 38/178/5 31/176/5 35/175/5
+f 134/115/4 132/116/4 120/117/4 135/118/4
+f 78/179/4 57/73/4 58/70/4 79/71/4
+f 90/159/1 99/180/1 146/181/1 141/160/1
+f 41/182/5 35/175/5 151/177/5
+f 41/182/5 151/177/5 148/183/5
+f 42/184/5 41/182/5 148/183/5
+f 81/185/5 80/186/5 84/187/5
+f 84/187/5 80/186/5 82/188/5
+f 148/183/5 107/189/5 42/184/5
+f 109/190/5 107/189/5 148/183/5
+f 131/191/5 130/192/5 134/193/5 135/194/5
+f 77/195/5 76/196/5 78/197/5 79/198/5
+f 150/199/5 83/200/5 152/201/5
+f 23/202/2 44/35/2 149/203/2 88/204/2
+f 89/205/2 149/203/2 104/24/2 91/206/2
+f 121/207/2 137/128/2 145/208/2 128/209/2
+f 136/210/5 85/211/5 150/199/5
+f 85/211/5 83/200/5 150/199/5
+f 83/200/5 82/188/5 152/201/5
+f 80/186/5 152/201/5 82/188/5
+f 37/212/5 36/213/5 39/214/5 40/215/5
+f 44/216/5 43/217/5 103/218/5 104/219/5
+f 80/186/5 74/220/5 152/201/5
+f 108/221/5 107/189/5 109/190/5
+f 68/50/3 70/49/3 63/222/3 64/223/3
+f 129/224/3 133/225/3 121/226/3 116/227/3
+f 136/228/3 137/229/3 121/226/3 133/225/3
+f 23/10/3 14/86/3 17/230/3 22/11/3
+f 60/231/3 65/232/3 66/233/3 59/234/3
+f 80/235/3 81/236/3 66/233/3 65/232/3
+f 34/143/3 12/142/3 8/237/3 29/238/3
+f 28/239/4 7/240/4 13/97/4 33/96/4
+f 145/241/5 136/210/5 150/199/5
+f 137/242/5 136/210/5 145/241/5
+f 49/243/3 50/244/3 55/72/3 56/71/3
+f 117/102/1 113/105/1 154/245/1 153/246/1
+f 66/233/1 155/247/1 156/248/1 59/234/1
+f 12/249/1 158/250/1 157/251/1 8/252/1
+g bookshelf_nodebox-17_wood
+f 75/253/2 53/254/2 52/255/2 73/256/2
+f 128/257/3 126/258/3 122/259/3 125/260/3
+f 10/261/4 11/262/4 6/255/4 5/263/4
+f 30/264/6 26/265/6 3/266/6 9/267/6
+f 30/268/3 9/269/3 4/264/3 27/267/3
+f 75/264/4 74/270/4 54/271/4 53/272/4
+f 46/259/3 72/273/3 73/274/3 52/258/3
+f 72/264/2 46/272/2 45/275/2 71/265/2
+f 27/264/2 4/272/2 2/275/2 25/265/2
+f 105/258/4 93/263/4 97/261/4 111/259/4
+f 112/258/6 111/276/6 97/277/6 98/274/6
+f 126/278/1 127/279/1 123/256/1 122/253/1
+f 106/258/2 94/263/2 93/280/2 105/276/2
+f 138/269/4 123/281/4 127/272/4 140/264/4
+f 139/258/2 124/263/2 123/280/2 138/276/2
+f 45/282/1 124/283/1 98/265/1 3/258/1
+f 26/258/3 71/282/3 45/284/3 3/269/3
+f 124/284/4 139/283/4 112/265/4 98/269/4
+f 1/268/3 24/274/3 25/285/3 2/174/3
+f 94/174/4 106/286/4 102/266/4 86/268/4
+f 101/287/3 109/288/3 110/268/3 96/269/3
+f 102/258/6 24/265/6 1/266/6 86/274/6
+f 10/289/6 96/290/6 110/291/6 32/270/6
+f 47/292/2 61/293/2 122/294/2
+f 6/295/2 7/296/2 5/292/2
+f 52/277/1 53/297/1 47/174/1 46/268/1
+f 10/298/1 5/286/1 4/266/1 9/288/1
+f 97/293/1 93/299/1 92/300/1 96/301/1
+f 2/285/1 94/286/1 86/266/1 1/274/1
+f 25/286/5 24/266/5 102/274/5 106/285/5
+f 127/274/2 126/285/2 145/174/2 140/268/2
+f 139/282/5 71/283/5 26/265/5 112/258/5
+f 30/293/5 27/299/5 151/300/5 32/301/5
+f 73/279/5 72/256/5 152/253/5 75/278/5
+f 105/266/5 111/288/5 110/298/5 148/286/5
+f 138/268/5 140/277/5 145/297/5 150/174/5
+f 116/302/2 113/303/2 114/304/2 115/305/2 129/306/2
+f 122/294/2 116/302/2 125/307/2
+f 113/303/2 116/302/2 122/294/2 63/253/2 154/308/2
+f 63/253/2 62/309/2 64/310/2
+f 62/309/2 63/253/2 61/293/2
+f 63/253/2 122/294/2 61/293/2
+f 47/292/2 48/271/2 49/311/2
+f 48/271/2 50/312/2 49/311/2
+f 47/292/2 59/313/2 156/314/2 61/293/2
+f 59/313/2 49/311/2 51/315/2 60/316/2
+f 49/311/2 59/313/2 47/292/2
+f 5/292/2 14/317/2 92/294/2
+f 92/294/2 87/318/2 141/319/2
+f 87/318/2 92/294/2 14/317/2
+f 5/292/2 7/296/2 16/301/2
+f 7/296/2 28/312/2 8/315/2
+f 28/312/2 29/320/2 8/315/2
+f 7/296/2 8/315/2 157/316/2 147/321/2 16/301/2
+f 5/292/2 15/293/2 14/317/2
+f 14/317/2 15/293/2 17/256/2
+f 5/292/2 16/301/2 15/293/2
+f 87/318/2 142/304/2 141/319/2
+f 142/304/2 143/305/2 141/319/2
+f 92/294/2 141/319/2 146/322/2 95/307/2
+f 11/262/4 10/261/4 32/259/4 31/323/4
+f 53/272/4 54/271/4 48/310/4 47/281/4
+f 96/269/3 92/264/3 95/197/3 101/287/3
diff --git a/homedecor_modpack/homedecor/models/homedecor_painting.obj b/homedecor_modpack/homedecor/models/homedecor_painting.obj
new file mode 100644
index 0000000..bcf4c1e
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_painting.obj
@@ -0,0 +1,111 @@
+# Blender v2.73 (sub 0) OBJ File: 'painting.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.437500
+v 0.500000 -0.500000 0.437500
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.437500
+v 0.500000 0.500000 0.437500
+v 0.500000 0.500000 0.500000
+v -0.500000 0.468750 0.437500
+v 0.500000 0.468750 0.437500
+v -0.500000 -0.468750 0.437500
+v 0.500000 -0.468750 0.437500
+v -0.468750 0.468750 0.437500
+v -0.468750 -0.468750 0.437500
+v 0.468750 0.468750 0.437500
+v 0.468750 -0.468750 0.437500
+v -0.468750 0.468750 0.468750
+v -0.468750 -0.468750 0.468750
+v 0.468750 0.468750 0.468750
+v 0.468750 -0.468750 0.468750
+v -0.468750 0.468750 0.500000
+v -0.468750 -0.468750 0.500000
+v 0.468750 0.468750 0.500000
+v 0.468750 -0.468750 0.500000
+v -0.500000 -0.468750 0.500000
+v 0.500000 -0.468750 0.500000
+v -0.500000 0.468750 0.500000
+v 0.500000 0.468750 0.500000
+vt 0.250000 1.000000
+vt 0.500000 1.000000
+vt 0.500000 -3.000000
+vt 0.250000 -3.000000
+vt 0.000000 1.000000
+vt 0.000000 -3.000000
+vt 0.250000 1.062500
+vt 0.500000 1.062500
+vt 0.500000 -2.937500
+vt 0.250000 -2.937500
+vt 0.000000 -2.937500
+vt 0.000000 1.062500
+vt 0.375000 1.000000
+vt 0.375000 -3.000000
+vt 0.125000 1.000000
+vt 0.125000 -3.000000
+vt 0.250000 0.875000
+vt 0.250000 -2.875000
+vt 0.375000 -2.875000
+vt 0.375000 0.875000
+vt 0.125000 0.875000
+vt 0.000000 0.875000
+vt 0.000000 -2.875000
+vt 0.125000 -2.875000
+vt 0.750000 -2.875000
+vt 0.500000 -2.875000
+vt 0.500000 0.875000
+vt 0.750000 0.875000
+vt 1.000000 -2.875000
+vt 1.000000 0.875000
+vt 1.000000 -2.812500
+vt 1.000000 0.937500
+vt 0.750000 0.937500
+vt 0.750000 -2.812500
+vt 0.625000 -3.000000
+vt 0.625000 1.000000
+vt 0.750000 1.000000
+vt 0.750000 -3.000000
+vt 1.000000 1.000000
+vt 1.000000 -3.000000
+vt 0.875000 -3.000000
+vt 0.875000 1.000000
+vt 0.500000 -2.812500
+vt 0.500000 0.937500
+vt 0.875000 0.875000
+vt 0.875000 -2.875000
+vt 0.625000 -2.875000
+vt 0.625000 0.875000
+vt 0.031250 0.031250
+vt 0.968750 0.031250
+vt 0.968750 0.968750
+vt 0.031250 0.968750
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+g Cylinder_Cylinder_wood
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 7/1/2 8/5/2 4/6/2 3/4/2
+f 1/7/3 2/8/3 3/9/3 4/10/3
+f 8/11/4 7/10/4 6/7/4 5/12/4
+f 6/3/5 7/2/5 10/13/5 9/14/5
+f 3/15/5 2/16/5 11/4/5 12/1/5
+f 13/17/5 14/18/5 11/19/5 9/20/5
+f 15/21/5 10/22/5 12/23/5 16/24/5
+f 16/25/1 20/26/1 19/27/1 15/28/1
+f 14/29/2 13/30/2 17/28/2 18/25/2
+f 16/31/4 14/32/4 18/33/4 20/34/4
+f 1/35/6 4/36/6 26/37/6 25/38/6
+f 8/39/6 5/40/6 27/41/6 28/42/6
+f 19/43/3 17/44/3 13/33/3 15/34/3
+f 22/25/6 21/28/6 27/45/6 25/46/6
+f 24/47/6 26/26/6 28/27/6 23/48/6
+g Cylinder_Cylinder_canvas
+f 22/49/6 24/50/6 23/51/6 21/52/6
+g Cylinder_Cylinder_picture
+f 18/50/5 17/51/5 19/52/5 20/49/5
diff --git a/homedecor_modpack/homedecor/models/homedecor_paper_towel.obj b/homedecor_modpack/homedecor/models/homedecor_paper_towel.obj
new file mode 100644
index 0000000..f8c2a04
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_paper_towel.obj
@@ -0,0 +1,225 @@
+# Blender v2.73 (sub 0) OBJ File: 'paper_towel.blend'
+# www.blender.org
+o nodebox-3
+v 0.374999 0.216954 0.063069
+v -0.374999 0.216954 0.063069
+v 0.374999 0.345883 0.063069
+v -0.374999 0.345883 0.063069
+v 0.374999 0.437050 0.154235
+v -0.374999 0.437050 0.154235
+v 0.374999 0.437050 0.283165
+v -0.374999 0.437050 0.283165
+v 0.374999 0.345883 0.374331
+v -0.374999 0.345883 0.374331
+v 0.374999 0.216954 0.374331
+v -0.374999 0.216954 0.374331
+v 0.374999 0.125787 0.283165
+v -0.374999 0.125787 0.283165
+v 0.374999 0.125787 0.154235
+v -0.374999 0.125787 0.154235
+v -0.437501 0.249999 0.187499
+v -0.375000 0.249999 0.187499
+v -0.437501 0.187500 0.437499
+v -0.437501 0.249999 0.437499
+v -0.375000 0.187500 0.437499
+v -0.375000 0.249999 0.437499
+v -0.437501 0.187500 0.500000
+v -0.375000 0.187500 0.500000
+v -0.437501 0.312500 0.187499
+v -0.375000 0.312500 0.187499
+v -0.437501 0.312500 0.437499
+v -0.437501 0.374999 0.437499
+v -0.375000 0.312500 0.437499
+v -0.375000 0.374999 0.437499
+v -0.437501 0.374999 0.500000
+v -0.375000 0.374999 0.500000
+v 0.374999 0.249999 0.187499
+v 0.437500 0.249999 0.187499
+v 0.374999 0.187500 0.437499
+v 0.374999 0.249999 0.437499
+v 0.437500 0.187500 0.437499
+v 0.437500 0.249999 0.437499
+v 0.374999 0.187500 0.500000
+v 0.437500 0.187500 0.500000
+v 0.374999 0.312500 0.187499
+v 0.437500 0.312500 0.187499
+v 0.374999 0.312500 0.437499
+v 0.374999 0.374999 0.437499
+v 0.437500 0.312500 0.437499
+v 0.437500 0.374999 0.437499
+v 0.374999 0.374999 0.500000
+v 0.437500 0.374999 0.500000
+v -0.374999 0.281418 0.218700
+v 0.374999 0.281418 0.218700
+vt 0.062500 0.875000
+vt 0.937500 0.875000
+vt 0.937500 1.000000
+vt 0.062500 1.000000
+vt 0.062500 0.000000
+vt 0.937500 0.000000
+vt 0.937500 0.125000
+vt 0.062500 0.125000
+vt 0.937500 0.250000
+vt 0.062500 0.250000
+vt 0.937500 0.375000
+vt 0.062500 0.375000
+vt 0.937500 0.500000
+vt 0.062500 0.500000
+vt 0.937500 0.625000
+vt 0.062500 0.625000
+vt 0.906250 0.716529
+vt 0.906250 0.845971
+vt 0.750000 0.781250
+vt 0.062500 0.750000
+vt 0.937500 0.750000
+vt 0.093750 0.845971
+vt 0.093750 0.716529
+vt 0.250000 0.781250
+vt 0.185279 0.625000
+vt 0.314720 0.625000
+vt 0.406250 0.716529
+vt 0.406250 0.845971
+vt 0.314720 0.937500
+vt 0.185279 0.937500
+vt 0.814721 0.937500
+vt 0.685279 0.937500
+vt 0.593750 0.845971
+vt 0.593750 0.716529
+vt 0.685279 0.625000
+vt 0.814721 0.625000
+vt 0.625000 0.312500
+vt 0.750000 0.437500
+vt 0.625000 0.437500
+vt 0.750000 0.062500
+vt 0.625000 0.187500
+vt 0.625000 0.062500
+vt 0.500000 0.562500
+vt 0.500000 0.437500
+vt 0.625000 0.562500
+vt 0.125000 0.875000
+vt 0.125000 1.000000
+vt 0.000000 1.000000
+vt 0.625000 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.812500
+vt 0.625000 0.812500
+vt 0.000000 0.062500
+vt 0.500000 0.062500
+vt 0.500000 0.187500
+vt 0.000000 0.187500
+vt 0.375000 0.312500
+vt 0.375000 0.187500
+vt 0.500000 0.312500
+vt 0.000000 0.312500
+vt 0.000000 0.437500
+vt 0.750000 0.312500
+vt 0.000000 0.562500
+vt 0.500000 0.687500
+vt 0.375000 0.687500
+vt 0.375000 0.562500
+vt 0.125000 0.437500
+vt 0.125000 0.562500
+vt 0.500000 0.812500
+vt 0.000000 0.687500
+vt 0.750000 0.875000
+vt 0.625000 0.875000
+vt 0.625000 0.750000
+vt 0.000000 0.812500
+vt 0.125000 0.312500
+vt 0.125000 0.187500
+vt 0.125000 0.750000
+vt 0.000000 0.625000
+vt 0.125000 0.625000
+vt 0.625000 0.500000
+vt 0.750000 0.500000
+vt 0.625000 0.625000
+vn 0.630200 -0.297100 -0.717300
+vn -0.630200 -0.297100 -0.717300
+vn -0.630200 0.297100 -0.717300
+vn 0.630200 0.297100 -0.717300
+vn -0.630200 0.717300 -0.297100
+vn 0.630200 0.717300 -0.297100
+vn -0.630200 0.717300 0.297100
+vn 0.630200 0.717300 0.297100
+vn -0.630200 0.297100 0.717300
+vn 0.630200 0.297100 0.717300
+vn -0.630200 -0.297100 0.717300
+vn 0.630200 -0.297100 0.717300
+vn -0.630200 -0.717300 0.297100
+vn 0.630200 -0.717300 0.297100
+vn 1.000000 0.000000 0.000000
+vn 0.630200 -0.717300 -0.297100
+vn -0.630200 -0.717300 -0.297100
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 -0.000000 1.000000
+g nodebox-3_nodebox-3_paper
+s 1
+f 1/1/1 2/2/2 4/3/3 3/4/4
+f 3/5/4 4/6/3 6/7/5 5/8/6
+f 5/8/6 6/7/5 8/9/7 7/10/8
+f 7/10/8 8/9/7 10/11/9 9/12/10
+f 9/12/10 10/11/9 12/13/11 11/14/12
+f 11/14/12 12/13/11 14/15/13 13/16/14
+f 1/17/1 3/18/4 50/19/15
+f 15/20/16 16/21/17 2/2/2 1/1/1
+f 13/16/14 14/15/13 16/21/17 15/20/16
+f 4/22/3 2/23/2 49/24/18
+f 2/23/2 16/25/17 49/24/18
+f 16/25/17 14/26/13 49/24/18
+f 14/26/13 12/27/11 49/24/18
+f 12/27/11 10/28/9 49/24/18
+f 10/28/9 8/29/7 49/24/18
+f 8/29/7 6/30/5 49/24/18
+f 6/30/5 4/22/3 49/24/18
+f 3/18/4 5/31/6 50/19/15
+f 5/31/6 7/32/8 50/19/15
+f 7/32/8 9/33/10 50/19/15
+f 9/33/10 11/34/12 50/19/15
+f 11/34/12 13/35/14 50/19/15
+f 13/35/14 15/36/16 50/19/15
+f 15/36/16 1/17/1 50/19/15
+g nodebox-3_nodebox-3_holder
+s off
+f 27/37/18 31/38/18 28/39/18
+f 23/40/18 20/41/18 19/42/18
+f 34/43/19 33/44/19 41/39/19 42/45/19
+f 45/46/15 46/47/15 48/48/15
+f 44/49/20 47/50/20 48/51/20 46/52/20
+f 20/53/21 17/54/21 18/55/21 22/56/21
+f 24/57/21 23/58/21 19/55/21 21/59/21
+f 25/60/20 27/59/20 29/44/20 26/61/20
+f 27/59/19 28/37/19 30/39/19 29/44/19
+f 31/56/22 23/58/22 24/57/22 32/60/22
+f 30/39/20 28/37/20 31/62/20 32/38/20
+f 38/63/21 36/61/21 33/44/21 34/43/21
+f 19/55/19 20/41/19 22/37/19 21/59/19
+f 36/45/19 38/49/19 37/64/19 35/43/19
+f 35/43/21 37/64/21 40/65/21 39/66/21
+f 32/63/15 29/67/15 30/68/15
+f 25/42/19 26/41/19 18/55/19 17/54/19
+f 43/64/19 44/49/19 46/52/19 45/69/19
+f 48/70/22 47/63/22 39/66/22 40/65/22
+f 47/71/18 44/72/18 43/73/18
+f 42/74/20 41/70/20 43/64/20 45/69/20
+f 31/38/18 20/41/18 23/40/18
+f 27/37/18 20/41/18 31/38/18
+f 25/75/18 17/76/18 20/41/18
+f 27/37/18 25/75/18 20/41/18
+f 38/77/15 40/78/15 37/79/15
+f 45/46/15 48/48/15 40/78/15
+f 45/46/15 40/78/15 38/77/15
+f 42/72/15 45/46/15 38/77/15
+f 34/73/15 42/72/15 38/77/15
+f 21/76/15 22/75/15 24/56/15
+f 24/56/15 29/67/15 32/63/15
+f 24/56/15 22/75/15 29/67/15
+f 22/75/15 18/37/15 26/39/15
+f 29/67/15 22/75/15 26/39/15
+f 35/80/18 39/81/18 36/82/18
+f 39/81/18 47/71/18 36/82/18
+f 47/71/18 43/73/18 36/82/18
+f 43/73/18 41/77/18 33/79/18
+f 36/82/18 43/73/18 33/79/18
diff --git a/homedecor_modpack/homedecor/models/homedecor_piano.obj b/homedecor_modpack/homedecor/models/homedecor_piano.obj
new file mode 100644
index 0000000..5441f0c
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_piano.obj
@@ -0,0 +1,318 @@
+# Blender v2.73 (sub 0) OBJ File: 'piano.blend'
+# www.blender.org
+o body_Cube.001
+v -1.437500 0.062500 -0.062500
+v 0.437500 0.062500 -0.062500
+v -1.437500 0.187500 0.187500
+v -1.437500 0.187500 -0.062500
+v 0.437500 0.187500 -0.062500
+v 0.437500 0.187500 0.187500
+v -0.500000 0.187500 -0.062500
+v -0.500000 0.062500 -0.062500
+v -0.500000 0.187500 0.187500
+v -0.609375 -0.437500 0.000000
+v -0.609375 -0.437500 0.187500
+v -0.484375 -0.437500 0.187500
+v -0.484375 -0.437500 0.000000
+v -0.531250 -0.437500 0.000000
+v -0.531250 -0.437500 0.187500
+v -0.484375 -0.460938 0.187500
+v -0.484375 -0.460938 0.000000
+v -0.359375 -0.460938 0.000000
+v -0.406250 -0.460938 0.000000
+v -0.406250 -0.460938 0.187500
+v -0.359375 -0.437500 0.187500
+v -0.359375 -0.437500 0.000000
+v -0.656250 -0.460938 0.187500
+v -0.406250 -0.437500 0.187500
+v -0.531250 -0.460938 0.000000
+v -0.656250 -0.460938 0.000000
+v -0.531250 -0.460938 0.187500
+v -0.609375 -0.460938 0.000000
+v -0.609375 -0.460938 0.187500
+v -0.359375 -0.460938 0.187500
+v -0.656250 -0.437500 0.187500
+v -0.656250 -0.437500 0.000000
+v -0.406250 -0.437500 0.000000
+v -1.500000 -0.500000 0.500000
+v -1.500000 -0.500000 0.187500
+v 0.500000 -0.500000 0.187500
+v 0.500000 -0.500000 0.500000
+v -1.500000 0.500000 0.500000
+v -1.500000 0.500000 0.187500
+v 0.500000 0.500000 0.187500
+v 0.500000 0.500000 0.500000
+v -1.437500 0.062500 0.187500
+v -1.437500 0.062500 -0.062500
+v 0.437500 0.062500 -0.062500
+v 0.437500 0.062500 0.187500
+v -1.437500 0.187500 0.187500
+v 0.437500 0.187500 0.187500
+v 0.437500 -0.500000 0.187500
+v 0.437500 -0.500000 -0.125000
+v 0.500000 -0.500000 -0.125000
+v 0.437500 -0.375000 0.187500
+v 0.437500 -0.375000 -0.125000
+v 0.500000 -0.375000 -0.125000
+v 0.500000 -0.375000 0.187500
+v 0.437500 0.062500 -0.125000
+v 0.500000 0.062500 -0.125000
+v 0.500000 0.062500 0.187500
+v 0.437500 0.250000 0.187500
+v 0.437500 0.250000 -0.125000
+v 0.500000 0.250000 -0.125000
+v 0.500000 0.250000 0.187500
+v 0.437500 -0.375000 0.000000
+v 0.437500 -0.375000 -0.062500
+v 0.500000 -0.375000 -0.062500
+v 0.500000 -0.375000 0.000000
+v 0.437500 0.062500 0.000000
+v 0.500000 0.062500 -0.062500
+v 0.500000 0.062500 0.000000
+v -1.500000 -0.500000 -0.125000
+v -1.437500 -0.500000 -0.125000
+v -1.437500 -0.500000 0.187500
+v -1.500000 -0.375000 0.187500
+v -1.500000 -0.375000 -0.125000
+v -1.437500 -0.375000 -0.125000
+v -1.437500 -0.375000 0.187500
+v -1.500000 0.062500 0.187500
+v -1.500000 0.062500 -0.125000
+v -1.437500 0.062500 -0.125000
+v -1.500000 0.250000 0.187500
+v -1.500000 0.250000 -0.125000
+v -1.437500 0.250000 -0.125000
+v -1.437500 0.250000 0.187500
+v -1.500000 -0.375000 0.000000
+v -1.500000 -0.375000 -0.062500
+v -1.437500 -0.375000 -0.062500
+v -1.437500 -0.375000 0.000000
+v -1.500000 0.062500 0.000000
+v -1.500000 0.062500 -0.062500
+v -1.437500 0.062500 0.000000
+v 0.437500 0.187500 0.156250
+v 0.437500 0.375000 0.156250
+v 0.437500 0.375000 0.187500
+v -1.437500 0.187500 0.156250
+v -1.437500 0.375000 0.187500
+v -1.437500 0.375000 0.156250
+v -1.500000 0.375000 0.187500
+v 0.500000 0.375000 0.187500
+v -0.500000 -0.500000 0.187500
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.375000 0.187500
+v -0.500000 0.500000 0.187500
+v -0.500000 0.062500 -0.062500
+v -0.500000 0.062500 0.187500
+v -0.500000 0.375000 0.156250
+v -0.500000 -0.500000 0.187500
+v -0.500000 -0.375000 0.187500
+v -0.500000 0.062500 0.187500
+v -0.500000 -0.375000 0.187500
+v -0.500000 0.375000 0.187500
+v -0.500000 0.500000 0.500000
+v -0.500000 0.187500 0.156250
+vt 0.968750 0.781250
+vt 0.031250 0.781250
+vt 0.031250 0.656250
+vt 0.968750 0.656250
+vt 0.968750 0.437500
+vt 0.031250 0.437500
+vt 0.031250 0.312500
+vt 0.968750 0.312500
+vt 1.000000 1.000000
+vt 0.687500 1.000000
+vt 0.687500 0.000000
+vt 1.000000 0.000000
+vt 0.312500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.312500 0.000000
+vt 0.000000 0.687500
+vt 0.000000 0.562500
+vt 1.000000 0.562500
+vt 1.000000 0.687500
+vt 1.000000 0.125000
+vt 1.000000 0.437500
+vt 0.000000 0.437500
+vt 0.000000 0.125000
+vt 0.843750 1.000000
+vt 0.781250 1.000000
+vt 0.781250 0.562500
+vt 0.843750 0.562500
+vt 0.718750 1.000000
+vt 0.718750 0.562500
+vt 0.250000 0.687500
+vt 0.187500 0.687500
+vt 0.187500 0.562500
+vt 0.250000 0.562500
+vt 1.000000 0.531250
+vt 0.062500 0.531250
+vt 0.062500 0.343750
+vt 1.000000 0.343750
+vt 0.687500 0.562500
+vt 0.375000 0.562500
+vt 0.375000 0.437500
+vt 0.687500 0.437500
+vt 0.187500 1.000000
+vt 0.250000 1.000000
+vt 0.062500 0.687500
+vt 0.000000 0.500000
+vt 0.062500 0.500000
+vt 0.375000 1.000000
+vt 0.375000 0.812500
+vt 0.687500 0.812500
+vt 0.062500 1.000000
+vt 0.343750 0.687500
+vt 0.281250 0.687500
+vt 0.281250 0.562500
+vt 0.343750 0.562500
+vt 0.687500 0.406250
+vt 0.375000 0.406250
+vt 0.375000 0.281250
+vt 0.687500 0.281250
+vt 0.281250 1.000000
+vt 0.343750 1.000000
+vt 0.687500 0.781250
+vt 0.375000 0.781250
+vt 0.375000 0.593750
+vt 0.687500 0.593750
+vt 0.156250 0.687500
+vt 0.093750 0.687500
+vt 0.093750 0.500000
+vt 0.156250 0.500000
+vt 0.906250 0.562500
+vt 0.906250 1.000000
+vt 0.093750 1.000000
+vt 0.156250 1.000000
+vt 0.250000 0.250000
+vt 0.187500 0.250000
+vt 0.968750 1.000000
+vt 0.968750 0.562500
+vt 0.000000 0.531250
+vt 0.937500 0.531250
+vt 0.937500 0.562500
+vt 0.062500 0.187500
+vt 0.000000 0.187500
+vt 0.343750 0.250000
+vt 0.281250 0.250000
+vt 0.156250 0.187500
+vt 0.093750 0.187500
+vt 0.750000 0.531250
+vt 0.718750 0.531250
+vt 0.718750 0.406250
+vt 0.750000 0.406250
+vt 0.812500 0.531250
+vt 0.781250 0.531250
+vt 0.781250 0.406250
+vt 0.812500 0.406250
+vt 1.000000 0.093750
+vt 0.062500 0.093750
+vt 0.796875 0.375000
+vt 0.796875 0.250000
+vt 0.859375 0.250000
+vt 0.859375 0.375000
+vt 0.718750 0.375000
+vt 0.718750 0.250000
+vt 0.781250 0.250000
+vt 0.781250 0.375000
+vt 0.937500 0.437500
+vt 0.062500 0.437500
+vt 0.062500 0.562500
+vt 0.937500 0.093750
+vt 0.937500 0.343750
+vt 0.000000 0.343750
+vt 0.000000 0.093750
+vt 0.031250 0.625000
+vt 0.968750 0.625000
+vt 0.031250 0.968750
+vt 0.968750 0.968750
+vt 0.187500 0.312500
+vt 0.250000 0.312500
+vt 0.437500 0.312500
+vt 0.437500 0.250000
+vt 0.437500 1.000000
+vt 0.500000 0.312500
+vt 0.500000 1.000000
+vt 0.000000 0.312500
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 1.000000 0.000000
+g body_Cube.001_wood
+s off
+f 7/1/1 5/2/1 2/3/1 8/4/1
+f 4/5/1 7/6/1 8/7/1 1/8/1
+f 38/9/2 39/10/2 35/11/2 34/12/2
+f 40/13/3 41/14/3 37/15/3 36/16/3
+f 101/17/1 109/18/1 96/19/1 39/20/1
+f 99/21/4 98/22/4 36/23/4 37/24/4
+f 68/25/5 66/26/5 62/27/5 65/28/5
+f 67/26/3 68/29/3 65/30/3 64/27/3
+f 52/31/1 53/32/1 50/33/1 49/34/1
+f 104/35/1 91/36/1 90/37/1 111/38/1
+f 51/39/2 52/40/2 49/41/2 48/42/2
+f 54/43/6 53/32/6 52/31/6 51/44/6
+f 59/45/1 60/17/1 56/46/1 55/47/1
+f 60/10/3 61/48/3 57/49/3 56/50/3
+f 61/14/6 60/17/6 59/45/6 58/51/6
+f 89/27/5 87/28/5 83/25/5 86/26/5
+f 73/52/1 74/53/1 70/54/1 69/55/1
+f 74/56/3 75/57/3 71/58/3 70/59/3
+f 75/60/6 74/53/6 73/52/6 72/61/6
+f 79/62/2 80/63/2 77/64/2 76/65/2
+f 80/66/1 81/67/1 78/68/1 77/69/1
+f 87/28/2 88/70/2 84/71/2 83/25/2
+f 82/72/6 81/67/6 80/66/6 79/73/6
+f 48/74/4 49/34/4 50/33/4 36/75/4
+f 44/76/1 67/71/1 64/70/1 63/77/1
+f 104/78/6 95/79/6 94/80/6 100/18/6
+f 58/62/2 59/63/2 55/64/2 45/65/2
+f 53/56/3 54/57/3 36/58/3 50/59/3
+f 66/71/2 44/25/2 63/28/2 62/70/2
+f 45/81/4 55/47/4 56/46/4 57/82/4
+f 43/30/3 89/27/3 86/26/3 85/29/3
+f 72/39/2 73/40/2 69/41/2 35/42/2
+f 88/70/1 43/77/1 85/76/1 84/71/1
+f 35/83/4 69/55/4 70/54/4 71/84/4
+f 81/10/3 82/48/3 42/49/3 78/50/3
+f 76/85/4 77/69/4 78/68/4 42/86/4
+f 91/87/3 92/88/3 47/89/3 90/90/3
+f 94/91/2 95/92/2 93/93/2 46/94/2
+f 110/14/6 101/17/6 39/20/6 38/9/6
+f 103/95/4 102/38/4 44/37/4 45/96/4
+f 94/97/1 82/98/1 79/99/1 96/100/1
+f 97/101/1 61/102/1 58/103/1 92/104/1
+f 107/18/1 57/19/1 54/9/1 108/14/1
+f 105/23/1 71/105/1 75/80/1 106/18/1
+f 110/15/5 38/12/5 34/9/5 99/14/5
+f 41/15/5 110/12/5 99/9/5 37/14/5
+f 48/106/1 105/22/1 106/19/1 51/107/1
+f 76/18/1 107/19/1 108/9/1 72/14/1
+f 42/108/4 43/109/4 102/110/4 103/111/4
+f 41/14/6 40/17/6 101/20/6 110/9/6
+f 91/36/6 104/35/6 100/19/6 92/107/6
+f 95/79/1 104/78/1 111/110/1 93/109/1
+f 34/21/4 35/22/4 98/23/4 99/24/4
+f 40/17/1 97/18/1 109/19/1 101/20/1
+g body_Cube.001_keyboard
+f 9/112/6 7/6/6 4/5/6 3/113/6
+f 6/114/6 5/2/6 7/1/6 9/115/6
+g body_Cube.001_brass
+f 10/43/3 11/116/3 29/117/3 28/44/3
+f 32/118/1 10/117/1 28/74/1 26/119/1
+f 31/120/2 32/118/2 26/121/2 23/122/2
+f 23/14/4 26/123/4 28/116/4 29/43/4
+f 12/44/6 13/117/6 14/118/6 15/120/6
+f 27/116/4 25/43/4 17/14/4 16/123/4
+f 11/118/6 10/120/6 32/44/6 31/117/6
+f 21/44/6 22/117/6 33/118/6 24/120/6
+f 20/14/4 19/123/4 18/116/4 30/43/4
+f 15/120/2 14/118/2 25/121/2 27/122/2
+f 24/120/2 33/118/2 19/121/2 20/122/2
+f 33/118/1 22/117/1 18/74/1 19/119/1
+f 22/43/3 21/116/3 30/117/3 18/44/3
+f 14/74/1 13/119/1 17/118/1 25/117/1
+f 13/43/3 12/116/3 16/117/3 17/44/3
diff --git a/homedecor_modpack/homedecor/models/homedecor_picture_frame.obj b/homedecor_modpack/homedecor/models/homedecor_picture_frame.obj
new file mode 100644
index 0000000..46e9f15
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_picture_frame.obj
@@ -0,0 +1,135 @@
+# Blender v2.73 (sub 0) OBJ File: 'pictureframe.blend'
+# www.blender.org
+o Cube.001
+v 0.173052 -0.495810 -0.052949
+v 0.172886 -0.499223 -0.033954
+v 0.171698 -0.092877 0.039032
+v 0.171864 -0.089465 0.020037
+v -0.167440 -0.093323 0.035990
+v -0.167274 -0.089911 0.016995
+v 0.147926 -0.118279 0.014651
+v 0.023980 -0.210277 0.016652
+v 0.148946 -0.467059 -0.047994
+v -0.143167 -0.118662 0.012041
+v -0.166085 -0.496255 -0.055991
+v -0.142147 -0.467441 -0.050606
+v 0.148849 -0.469041 -0.036961
+v -0.143264 -0.120644 0.023074
+v -0.142244 -0.469423 -0.039573
+v 0.023869 -0.172444 0.023448
+v 0.147829 -0.120261 0.025685
+v -0.166251 -0.499668 -0.036996
+v -0.022442 -0.210337 0.016236
+v -0.022553 -0.172506 0.023031
+v -0.047003 -0.499354 0.123450
+v -0.047695 -0.499323 0.127967
+v 0.052470 -0.498423 0.124796
+v 0.051783 -0.498230 0.128805
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.821100 0.491529
+vt 0.000000 0.491529
+vt 0.000000 0.444804
+vt 0.821099 0.444804
+vt 0.000000 0.937471
+vt 0.999521 0.937471
+vt 0.928722 0.995633
+vt 0.070799 0.995632
+vt 0.000000 0.933133
+vt 0.070799 0.874973
+vt 0.928725 0.874972
+vt 0.999524 0.933133
+vt 0.000000 0.852545
+vt 0.058161 0.781746
+vt 0.762937 0.781746
+vt 0.821097 0.852545
+vt 0.704776 0.373327
+vt 0.000000 0.373330
+vt 0.000002 0.346187
+vt 0.704777 0.346187
+vt 0.000000 0.569804
+vt 0.999524 0.569804
+vt 0.999523 0.616529
+vt 0.000002 0.616529
+vt 0.762938 0.758795
+vt 0.058162 0.758795
+vt 0.000000 0.687996
+vt 0.821099 0.687996
+vt 0.857926 0.408687
+vt 0.857927 0.435827
+vt 0.000000 0.435830
+vt 0.000001 0.408687
+vt 0.857924 0.404580
+vt 0.000000 0.404579
+vt 0.000000 0.377439
+vt 0.857924 0.377440
+vt 0.821097 0.554029
+vt 0.000000 0.554029
+vt 0.000000 0.507304
+vt 0.821097 0.507304
+vt 0.000002 0.342080
+vt 0.000000 0.314940
+vt 0.704775 0.314940
+vt 0.704777 0.342080
+vt 0.000002 0.632304
+vt 0.999525 0.632304
+vt 0.999526 0.679029
+vt 0.000000 0.679029
+vt 1.000000 0.794897
+vt 0.968292 0.716732
+vt 0.992429 0.003230
+vt 0.598091 1.000000
+vt 0.590222 0.998491
+vt 0.591098 0.768719
+vt 0.598091 0.770223
+vt 0.808277 0.000000
+vt 0.889066 0.000639
+vt 0.936493 0.711728
+vt 0.763359 0.711728
+vt 0.634221 0.001037
+vt 0.715008 0.000000
+vt 0.763359 0.768719
+vt 0.590222 0.768719
+vt 0.936493 0.078064
+vt 0.968292 0.000000
+vt 0.968292 0.793425
+vt 0.961698 0.791145
+vt 0.590222 0.925281
+vt 0.000002 0.925115
+vt 0.590222 0.000169
+vn 0.008600 0.176800 -0.984200
+vn -0.002900 0.984200 0.176800
+vn 0.002900 -0.984200 -0.176800
+vn -1.000000 -0.001300 -0.009000
+vn 1.000000 0.001300 0.009000
+vn -0.987400 0.025800 -0.156400
+vn 0.009900 -0.999600 0.027900
+vn 0.013700 -0.349500 -0.936800
+vn -0.010600 0.306600 0.951800
+vn 0.992400 0.052500 -0.111300
+vn -0.008600 -0.176800 0.984200
+g Cube.001_Cube.001_picture
+s off
+f 14/1/1 17/2/1 13/3/1 15/4/1
+g Cube.001_Cube.001_frame
+f 5/5/2 3/6/2 4/7/2 6/8/2
+f 11/9/1 6/10/1 10/11/1 12/12/1
+f 1/13/1 9/14/1 7/15/1 4/16/1
+f 11/17/1 12/18/1 9/19/1 1/20/1
+f 10/21/3 7/22/3 17/23/3 14/24/3
+f 18/25/4 5/26/4 6/27/4 11/28/4
+f 7/29/1 10/30/1 6/31/1 4/32/1
+f 9/33/4 13/34/4 17/35/4 7/36/4
+f 12/37/5 10/38/5 14/39/5 15/40/5
+f 2/41/3 18/42/3 11/43/3 1/44/3
+f 12/45/2 15/46/2 13/47/2 9/48/2
+f 1/49/5 4/50/5 3/51/5 2/52/5
+g Cube.001_Cube.001_back
+f 20/53/6 19/54/6 21/55/6 22/4/6
+f 22/56/7 21/57/7 23/58/7 24/59/7
+f 19/60/8 8/61/8 23/62/8 21/63/8
+f 16/64/9 20/65/9 22/66/9 24/67/9
+f 8/68/10 16/69/10 24/70/10 23/71/10
+f 18/72/11 2/73/11 3/3/11 5/74/11
diff --git a/homedecor_modpack/homedecor/models/homedecor_plasma_ball.obj b/homedecor_modpack/homedecor/models/homedecor_plasma_ball.obj
new file mode 100644
index 0000000..777ca11
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_plasma_ball.obj
@@ -0,0 +1,621 @@
+# Blender v2.73 (sub 0) OBJ File: 'plasma-ball.blend'
+# www.blender.org
+o base_Cylinder.007
+v -0.139130 -0.500000 0.139130
+v -0.139130 -0.500000 -0.139130
+v 0.139130 -0.500000 -0.139130
+v 0.139130 -0.500000 0.139130
+v -0.086956 -0.326087 0.086956
+v -0.086956 -0.326087 -0.086956
+v 0.086956 -0.326087 -0.086956
+v 0.086956 -0.326087 0.086956
+vt 0.000000 0.812500
+vt 0.000000 0.187500
+vt 0.566168 0.000000
+vt 0.566168 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.867665 0.000000
+vt 0.867665 1.000000
+vt 0.457709 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.625000
+vt 0.457710 0.625000
+vn -0.957800 0.287300 0.000000
+vn 0.000000 0.287300 -0.957800
+vn 0.957800 0.287300 0.000000
+vn 0.000000 0.287300 0.957800
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g base_Cylinder.007_base
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 6/1/2 7/2/2 3/3/2 2/4/2
+f 7/1/3 8/2/3 4/3/3 3/4/3
+f 8/1/4 5/2/4 1/3/4 4/4/4
+f 1/5/5 2/6/5 3/7/5 4/8/5
+f 8/9/6 7/10/6 6/11/6 5/12/6
+o streamers_Cylinder.006
+v -0.170156 -0.006805 0.000468
+v -0.170156 -0.341022 0.000468
+v 0.170156 -0.006805 0.000468
+v 0.170156 -0.341022 0.000468
+v 0.170156 -0.006805 -0.000469
+v 0.170156 -0.341022 -0.000469
+v -0.170156 -0.006805 -0.000469
+v -0.170156 -0.341022 -0.000469
+v 0.085483 -0.006805 0.147126
+v 0.085483 -0.341022 0.147126
+v -0.084673 -0.006805 -0.147594
+v -0.084673 -0.341022 -0.147594
+v -0.085484 -0.006805 -0.147125
+v -0.085484 -0.341022 -0.147125
+v 0.084672 -0.006805 0.147594
+v 0.084672 -0.341022 0.147594
+v -0.085484 -0.341022 0.147125
+v -0.085484 -0.006805 0.147125
+v 0.084672 -0.341022 -0.147594
+v 0.084672 -0.006805 -0.147594
+v 0.085483 -0.341022 -0.147126
+v 0.085483 -0.006805 -0.147126
+v -0.084673 -0.341022 0.147594
+v -0.084673 -0.006805 0.147594
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn -0.000000 -0.000000 -1.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.866000 -0.000000 0.500000
+vn 0.866000 -0.000000 -0.500000
+vn 0.866000 -0.000000 0.500000
+vn -0.866000 -0.000000 -0.500000
+g streamers_Cylinder.006_streamers
+s off
+f 9/13/7 11/14/7 12/15/7 10/16/7
+f 13/14/8 15/13/8 16/16/8 14/15/8
+f 17/13/9 19/14/9 20/15/9 18/16/9
+f 21/14/10 23/13/10 24/16/10 22/15/10
+f 28/14/11 26/13/11 25/16/11 27/15/11
+f 32/13/12 30/14/12 29/15/12 31/16/12
+o globe_Cylinder.005
+v -0.066554 -0.013239 0.000000
+v -0.122975 -0.050938 0.000000
+v -0.160675 -0.107360 0.000000
+v -0.173913 -0.173913 0.000000
+v -0.160675 -0.240467 0.000000
+v -0.122975 -0.296888 0.000000
+v -0.066554 -0.334588 0.000000
+v -0.061487 -0.013239 -0.025469
+v -0.113614 -0.050938 -0.047060
+v -0.148444 -0.107360 -0.061487
+v -0.160675 -0.173913 -0.066554
+v -0.148444 -0.240467 -0.061487
+v -0.113614 -0.296888 -0.047060
+v -0.061487 -0.334588 -0.025469
+v -0.047060 -0.013239 -0.047060
+v -0.086956 -0.050938 -0.086956
+v -0.113614 -0.107360 -0.113614
+v -0.122975 -0.173913 -0.122975
+v -0.113614 -0.240467 -0.113614
+v -0.086956 -0.296888 -0.086956
+v -0.047060 -0.334588 -0.047060
+v -0.025469 -0.013239 -0.061487
+v -0.047060 -0.050938 -0.113614
+v -0.061487 -0.107360 -0.148444
+v -0.066554 -0.173913 -0.160675
+v -0.061487 -0.240467 -0.148444
+v -0.047060 -0.296888 -0.113614
+v -0.025469 -0.334588 -0.061487
+v -0.000000 -0.013239 -0.066554
+v -0.000000 -0.050938 -0.122975
+v -0.000000 -0.107360 -0.160675
+v -0.000000 -0.173913 -0.173913
+v -0.000000 -0.240467 -0.160675
+v -0.000000 -0.296888 -0.122975
+v -0.000000 -0.334588 -0.066554
+v 0.025469 -0.013239 -0.061487
+v 0.047060 -0.050938 -0.113614
+v 0.061487 -0.107360 -0.148444
+v 0.066554 -0.173913 -0.160674
+v 0.061487 -0.240467 -0.148444
+v 0.047060 -0.296888 -0.113614
+v 0.025469 -0.334588 -0.061487
+v 0.047060 -0.013239 -0.047060
+v 0.086956 -0.050938 -0.086956
+v 0.113614 -0.107360 -0.113614
+v 0.122975 -0.173913 -0.122975
+v 0.113614 -0.240467 -0.113614
+v 0.086956 -0.296888 -0.086956
+v 0.047060 -0.334588 -0.047060
+v 0.061487 -0.013239 -0.025469
+v 0.113614 -0.050938 -0.047060
+v 0.148444 -0.107360 -0.061487
+v 0.160674 -0.173913 -0.066554
+v 0.148444 -0.240467 -0.061487
+v 0.113614 -0.296888 -0.047060
+v 0.061487 -0.334588 -0.025469
+v 0.066554 -0.013239 0.000000
+v 0.122975 -0.050938 0.000000
+v 0.160674 -0.107360 0.000000
+v 0.173913 -0.173913 0.000000
+v 0.160674 -0.240467 0.000000
+v 0.122975 -0.296888 0.000000
+v 0.066554 -0.334588 0.000000
+v 0.061487 -0.013239 0.025469
+v 0.113614 -0.050938 0.047061
+v 0.148444 -0.107360 0.061488
+v 0.160674 -0.173913 0.066554
+v 0.148444 -0.240467 0.061488
+v 0.113614 -0.296888 0.047061
+v 0.061487 -0.334588 0.025469
+v 0.047060 -0.013239 0.047060
+v 0.086956 -0.050938 0.086956
+v 0.113614 -0.107360 0.113614
+v 0.122975 -0.173913 0.122975
+v 0.113614 -0.240467 0.113614
+v 0.086956 -0.296888 0.086956
+v 0.047060 -0.334588 0.047060
+v 0.025469 -0.013239 0.061487
+v 0.047060 -0.050938 0.113614
+v 0.061487 -0.107360 0.148444
+v 0.066553 -0.173913 0.160675
+v 0.061487 -0.240467 0.148444
+v 0.047060 -0.296888 0.113614
+v 0.025469 -0.334588 0.061487
+v -0.000000 -0.013239 0.066554
+v -0.000000 -0.050938 0.122975
+v -0.000000 -0.107360 0.160674
+v -0.000000 -0.173913 0.173913
+v -0.000000 -0.240467 0.160674
+v -0.000000 -0.296888 0.122975
+v -0.000000 -0.334588 0.066554
+v -0.025469 -0.013239 0.061487
+v -0.047061 -0.050938 0.113614
+v -0.061488 -0.107360 0.148444
+v -0.066554 -0.173913 0.160674
+v -0.061488 -0.240467 0.148444
+v -0.047061 -0.296888 0.113614
+v -0.025469 -0.334588 0.061487
+v -0.047060 -0.013239 0.047060
+v -0.086956 -0.050938 0.086956
+v -0.113614 -0.107360 0.113614
+v -0.122975 -0.173913 0.122975
+v -0.113614 -0.240467 0.113614
+v -0.086956 -0.296888 0.086956
+v -0.047061 -0.334588 0.047060
+v -0.061487 -0.013239 0.025469
+v -0.113614 -0.050938 0.047060
+v -0.148444 -0.107360 0.061487
+v -0.160675 -0.173913 0.066553
+v -0.148444 -0.240467 0.061487
+v -0.113614 -0.296888 0.047060
+v -0.061487 -0.334588 0.025469
+v -0.015090 -0.003120 0.000000
+v -0.013941 -0.003120 -0.005775
+v -0.010670 -0.003120 -0.010670
+v -0.005775 -0.003120 -0.013941
+v -0.000000 -0.003120 -0.015090
+v 0.005775 -0.003120 -0.013941
+v 0.010670 -0.003120 -0.010670
+v 0.013941 -0.003120 -0.005775
+v 0.015090 -0.003120 0.000000
+v 0.013941 -0.003120 0.005775
+v 0.010670 -0.003120 0.010670
+v 0.005775 -0.003120 0.013941
+v -0.000000 -0.003120 0.015090
+v -0.005775 -0.003120 0.013941
+v -0.010670 -0.003120 0.010670
+v -0.013941 -0.003120 0.005775
+v -0.000000 -0.003120 -0.000000
+vt 0.750000 0.000033
+vt 0.750000 0.147616
+vt 0.687500 0.147616
+vt 0.687500 0.000033
+vt 0.750000 0.295200
+vt 0.687500 0.295200
+vt 0.750000 0.442784
+vt 0.687500 0.442784
+vt 0.750000 0.590367
+vt 0.687500 0.590367
+vt 0.750000 0.737951
+vt 0.687500 0.737951
+vt 0.750000 0.885534
+vt 0.687500 0.885535
+vt 0.625000 0.147616
+vt 0.625000 0.000033
+vt 0.625000 0.295200
+vt 0.625000 0.442784
+vt 0.625000 0.590367
+vt 0.625000 0.737951
+vt 0.625000 0.885535
+vt 0.562500 0.147616
+vt 0.562500 0.000033
+vt 0.562500 0.295200
+vt 0.562500 0.442784
+vt 0.562500 0.590367
+vt 0.562500 0.737951
+vt 0.562500 0.885535
+vt 0.500000 0.147616
+vt 0.500000 0.000033
+vt 0.500000 0.295200
+vt 0.500000 0.442784
+vt 0.500000 0.590367
+vt 0.500000 0.737951
+vt 0.500000 0.885535
+vt 0.437500 0.147616
+vt 0.437500 0.000033
+vt 0.437500 0.295200
+vt 0.437500 0.442784
+vt 0.437500 0.590367
+vt 0.437500 0.737951
+vt 0.437500 0.885535
+vt 0.375000 0.147616
+vt 0.375000 0.000033
+vt 0.375000 0.295200
+vt 0.375000 0.442784
+vt 0.375000 0.590367
+vt 0.375000 0.737951
+vt 0.375000 0.885535
+vt 0.312500 0.147616
+vt 0.312500 0.000033
+vt 0.312500 0.295200
+vt 0.312500 0.442784
+vt 0.312500 0.590367
+vt 0.312500 0.737951
+vt 0.312500 0.885535
+vt 0.250000 0.147616
+vt 0.250000 0.000033
+vt 0.250000 0.295200
+vt 0.250000 0.442784
+vt 0.250000 0.590367
+vt 0.250000 0.737951
+vt 0.250000 0.885534
+vt 0.187500 0.147616
+vt 0.187500 0.000033
+vt 0.187500 0.295200
+vt 0.187500 0.442784
+vt 0.187500 0.590367
+vt 0.187500 0.737951
+vt 0.187500 0.885534
+vt 0.125000 0.147616
+vt 0.125000 0.000033
+vt 0.125000 0.295200
+vt 0.125000 0.442784
+vt 0.125000 0.590367
+vt 0.125000 0.737951
+vt 0.125000 0.885534
+vt 0.062500 0.147616
+vt 0.062500 0.000033
+vt 0.062500 0.295200
+vt 0.062500 0.442784
+vt 0.062500 0.590367
+vt 0.062500 0.737951
+vt 0.062500 0.885534
+vt 0.000000 0.147616
+vt 0.000000 0.000033
+vt 0.000000 0.295200
+vt 0.000000 0.442784
+vt 0.000000 0.590367
+vt 0.000000 0.737951
+vt 0.000000 0.885534
+vt 1.000000 0.000033
+vt 1.000000 0.147616
+vt 0.937500 0.147616
+vt 0.937500 0.000033
+vt 1.000000 0.295200
+vt 0.937500 0.295200
+vt 1.000000 0.442784
+vt 0.937500 0.442784
+vt 1.000000 0.590367
+vt 0.937500 0.590367
+vt 1.000000 0.737951
+vt 0.937500 0.737951
+vt 1.000000 0.885534
+vt 0.937500 0.885534
+vt 0.875000 0.147616
+vt 0.875000 0.000033
+vt 0.875000 0.295200
+vt 0.875000 0.442784
+vt 0.875000 0.590367
+vt 0.875000 0.737951
+vt 0.875000 0.885534
+vt 0.812500 0.147616
+vt 0.812500 0.000033
+vt 0.812500 0.295200
+vt 0.812500 0.442784
+vt 0.812500 0.590367
+vt 0.812500 0.737951
+vt 0.812500 0.885534
+vt 0.578309 0.478593
+vt 0.583117 0.534519
+vt 0.470728 0.526112
+vt 0.469638 0.513432
+vt 0.565798 0.587997
+vt 0.466801 0.538237
+vt 0.528988 0.630886
+vt 0.458455 0.547962
+vt 0.478292 0.656657
+vt 0.446961 0.553805
+vt 0.421427 0.661385
+vt 0.434068 0.554877
+vt 0.367051 0.644352
+vt 0.421739 0.551015
+vt 0.309750 0.448887
+vt 0.346559 0.405998
+vt 0.417093 0.496972
+vt 0.408747 0.506697
+vt 0.323442 0.608150
+vt 0.411851 0.542807
+vt 0.397256 0.380228
+vt 0.428587 0.491129
+vt 0.297238 0.558291
+vt 0.405910 0.531502
+vt 0.454121 0.375499
+vt 0.441480 0.490057
+vt 0.292430 0.502365
+vt 0.404820 0.518822
+vt 0.508497 0.392532
+vt 0.453809 0.493919
+vt 0.552106 0.428734
+vt 0.463697 0.502127
+vt 0.437774 0.522467
+vn -0.555600 -0.831500 0.000000
+vn -0.718800 -0.695200 0.000000
+vn -0.664100 -0.695200 -0.275100
+vn -0.513300 -0.831500 -0.212600
+vn -0.927300 -0.374300 0.000000
+vn -0.856700 -0.374300 -0.354800
+vn -1.000000 0.000000 0.000000
+vn -0.923900 0.000000 -0.382700
+vn -0.927300 0.374300 0.000000
+vn -0.856700 0.374300 -0.354800
+vn -0.718800 0.695200 0.000000
+vn -0.664100 0.695200 -0.275100
+vn -0.402200 0.915500 0.000000
+vn -0.371600 0.915500 -0.153900
+vn -0.508300 -0.695200 -0.508300
+vn -0.392800 -0.831500 -0.392800
+vn -0.655700 -0.374300 -0.655700
+vn -0.707100 0.000000 -0.707100
+vn -0.655700 0.374300 -0.655700
+vn -0.508300 0.695200 -0.508300
+vn -0.284400 0.915500 -0.284400
+vn -0.275100 -0.695200 -0.664100
+vn -0.212600 -0.831500 -0.513300
+vn -0.354800 -0.374300 -0.856700
+vn -0.382700 0.000000 -0.923900
+vn -0.354800 0.374300 -0.856700
+vn -0.275100 0.695200 -0.664100
+vn -0.153900 0.915500 -0.371600
+vn 0.000000 -0.695200 -0.718800
+vn 0.000000 -0.831500 -0.555600
+vn 0.000000 -0.374300 -0.927300
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.374300 -0.927300
+vn 0.000000 0.695200 -0.718800
+vn 0.000000 0.915500 -0.402200
+vn 0.275100 -0.695200 -0.664100
+vn 0.212600 -0.831500 -0.513300
+vn 0.354800 -0.374300 -0.856700
+vn 0.382700 0.000000 -0.923900
+vn 0.354800 0.374300 -0.856700
+vn 0.275100 0.695200 -0.664100
+vn 0.153900 0.915500 -0.371600
+vn 0.508300 -0.695200 -0.508300
+vn 0.392800 -0.831500 -0.392800
+vn 0.655700 -0.374300 -0.655700
+vn 0.707100 0.000000 -0.707100
+vn 0.655700 0.374300 -0.655700
+vn 0.508300 0.695200 -0.508300
+vn 0.284400 0.915500 -0.284400
+vn 0.664100 -0.695200 -0.275100
+vn 0.513300 -0.831500 -0.212600
+vn 0.856700 -0.374300 -0.354800
+vn 0.923900 0.000000 -0.382700
+vn 0.856700 0.374300 -0.354800
+vn 0.664100 0.695200 -0.275100
+vn 0.371600 0.915500 -0.153900
+vn 0.718800 -0.695200 0.000000
+vn 0.555600 -0.831500 0.000000
+vn 0.927300 -0.374300 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.927300 0.374300 0.000000
+vn 0.718800 0.695200 0.000000
+vn 0.402200 0.915500 0.000000
+vn 0.664100 -0.695200 0.275100
+vn 0.513300 -0.831500 0.212600
+vn 0.856700 -0.374300 0.354800
+vn 0.923900 0.000000 0.382700
+vn 0.856700 0.374300 0.354800
+vn 0.664100 0.695200 0.275100
+vn 0.371600 0.915500 0.153900
+vn 0.508300 -0.695200 0.508300
+vn 0.392800 -0.831500 0.392800
+vn 0.655700 -0.374300 0.655700
+vn 0.707100 0.000000 0.707100
+vn 0.655700 0.374300 0.655700
+vn 0.508300 0.695200 0.508300
+vn 0.284400 0.915500 0.284400
+vn 0.275100 -0.695200 0.664100
+vn 0.212600 -0.831500 0.513300
+vn 0.354800 -0.374300 0.856700
+vn 0.382700 0.000000 0.923900
+vn 0.354800 0.374300 0.856700
+vn 0.275100 0.695200 0.664100
+vn 0.153900 0.915500 0.371600
+vn 0.000000 -0.695200 0.718800
+vn -0.000000 -0.831500 0.555600
+vn 0.000000 -0.374300 0.927300
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.374300 0.927300
+vn 0.000000 0.695200 0.718800
+vn 0.000000 0.915500 0.402200
+vn -0.275100 -0.695200 0.664100
+vn -0.212600 -0.831500 0.513300
+vn -0.354800 -0.374300 0.856700
+vn -0.382700 0.000000 0.923900
+vn -0.354800 0.374300 0.856700
+vn -0.275100 0.695200 0.664100
+vn -0.153900 0.915500 0.371600
+vn -0.508300 -0.695200 0.508300
+vn -0.392800 -0.831500 0.392800
+vn -0.655700 -0.374300 0.655700
+vn -0.707100 0.000000 0.707100
+vn -0.655700 0.374300 0.655700
+vn -0.508300 0.695200 0.508300
+vn -0.284400 0.915500 0.284400
+vn -0.664100 -0.695200 0.275100
+vn -0.513300 -0.831500 0.212600
+vn -0.856700 -0.374300 0.354800
+vn -0.923900 0.000000 0.382700
+vn -0.856700 0.374300 0.354800
+vn -0.664100 0.695200 0.275100
+vn -0.371600 0.915500 0.153900
+vn 0.108900 0.994000 0.000000
+vn 0.100600 0.994000 0.041700
+vn 0.100600 0.994000 -0.041700
+vn 0.077000 0.994000 -0.077000
+vn 0.041700 0.994000 -0.100600
+vn 0.000000 0.994000 -0.108900
+vn -0.041700 0.994000 -0.100600
+vn -0.077000 0.994000 0.077000
+vn -0.100600 0.994000 0.041700
+vn -0.077000 0.994000 -0.077000
+vn -0.041700 0.994000 0.100600
+vn -0.100600 0.994000 -0.041700
+vn 0.000000 0.994000 0.108900
+vn -0.108900 0.994000 0.000000
+vn 0.041700 0.994000 0.100600
+vn 0.077000 0.994000 0.077000
+vn 0.000000 1.000000 0.000000
+g globe_Cylinder.005_globe
+s 1
+f 39/17/13 38/18/14 45/19/15 46/20/16
+f 38/18/14 37/21/17 44/22/18 45/19/15
+f 37/21/17 36/23/19 43/24/20 44/22/18
+f 36/23/19 35/25/21 42/26/22 43/24/20
+f 35/25/21 34/27/23 41/28/24 42/26/22
+f 34/27/23 33/29/25 40/30/26 41/28/24
+f 46/20/16 45/19/15 52/31/27 53/32/28
+f 45/19/15 44/22/18 51/33/29 52/31/27
+f 44/22/18 43/24/20 50/34/30 51/33/29
+f 43/24/20 42/26/22 49/35/31 50/34/30
+f 42/26/22 41/28/24 48/36/32 49/35/31
+f 41/28/24 40/30/26 47/37/33 48/36/32
+f 53/32/28 52/31/27 59/38/34 60/39/35
+f 52/31/27 51/33/29 58/40/36 59/38/34
+f 51/33/29 50/34/30 57/41/37 58/40/36
+f 50/34/30 49/35/31 56/42/38 57/41/37
+f 49/35/31 48/36/32 55/43/39 56/42/38
+f 48/36/32 47/37/33 54/44/40 55/43/39
+f 60/39/35 59/38/34 66/45/41 67/46/42
+f 59/38/34 58/40/36 65/47/43 66/45/41
+f 58/40/36 57/41/37 64/48/44 65/47/43
+f 57/41/37 56/42/38 63/49/45 64/48/44
+f 56/42/38 55/43/39 62/50/46 63/49/45
+f 55/43/39 54/44/40 61/51/47 62/50/46
+f 67/46/42 66/45/41 73/52/48 74/53/49
+f 66/45/41 65/47/43 72/54/50 73/52/48
+f 65/47/43 64/48/44 71/55/51 72/54/50
+f 64/48/44 63/49/45 70/56/52 71/55/51
+f 63/49/45 62/50/46 69/57/53 70/56/52
+f 62/50/46 61/51/47 68/58/54 69/57/53
+f 74/53/49 73/52/48 80/59/55 81/60/56
+f 73/52/48 72/54/50 79/61/57 80/59/55
+f 72/54/50 71/55/51 78/62/58 79/61/57
+f 71/55/51 70/56/52 77/63/59 78/62/58
+f 70/56/52 69/57/53 76/64/60 77/63/59
+f 69/57/53 68/58/54 75/65/61 76/64/60
+f 81/60/56 80/59/55 87/66/62 88/67/63
+f 80/59/55 79/61/57 86/68/64 87/66/62
+f 79/61/57 78/62/58 85/69/65 86/68/64
+f 78/62/58 77/63/59 84/70/66 85/69/65
+f 77/63/59 76/64/60 83/71/67 84/70/66
+f 76/64/60 75/65/61 82/72/68 83/71/67
+f 88/67/63 87/66/62 94/73/69 95/74/70
+f 87/66/62 86/68/64 93/75/71 94/73/69
+f 86/68/64 85/69/65 92/76/72 93/75/71
+f 85/69/65 84/70/66 91/77/73 92/76/72
+f 84/70/66 83/71/67 90/78/74 91/77/73
+f 83/71/67 82/72/68 89/79/75 90/78/74
+f 95/74/70 94/73/69 101/80/76 102/81/77
+f 94/73/69 93/75/71 100/82/78 101/80/76
+f 93/75/71 92/76/72 99/83/79 100/82/78
+f 92/76/72 91/77/73 98/84/80 99/83/79
+f 91/77/73 90/78/74 97/85/81 98/84/80
+f 90/78/74 89/79/75 96/86/82 97/85/81
+f 102/81/77 101/80/76 108/87/83 109/88/84
+f 101/80/76 100/82/78 107/89/85 108/87/83
+f 100/82/78 99/83/79 106/90/86 107/89/85
+f 99/83/79 98/84/80 105/91/87 106/90/86
+f 98/84/80 97/85/81 104/92/88 105/91/87
+f 97/85/81 96/86/82 103/93/89 104/92/88
+f 109/88/84 108/87/83 115/94/90 116/95/91
+f 108/87/83 107/89/85 114/96/92 115/94/90
+f 107/89/85 106/90/86 113/97/93 114/96/92
+f 106/90/86 105/91/87 112/98/94 113/97/93
+f 105/91/87 104/92/88 111/99/95 112/98/94
+f 104/92/88 103/93/89 110/100/96 111/99/95
+f 116/95/91 115/94/90 122/101/97 123/102/98
+f 115/94/90 114/96/92 121/103/99 122/101/97
+f 114/96/92 113/97/93 120/104/100 121/103/99
+f 113/97/93 112/98/94 119/105/101 120/104/100
+f 112/98/94 111/99/95 118/106/102 119/105/101
+f 111/99/95 110/100/96 117/107/103 118/106/102
+f 123/108/98 122/109/97 129/110/104 130/111/105
+f 122/109/97 121/112/99 128/113/106 129/110/104
+f 121/112/99 120/114/100 127/115/107 128/113/106
+f 120/114/100 119/116/101 126/117/108 127/115/107
+f 119/116/101 118/118/102 125/119/109 126/117/108
+f 118/118/102 117/120/103 124/121/110 125/119/109
+f 130/111/105 129/110/104 136/122/111 137/123/112
+f 129/110/104 128/113/106 135/124/113 136/122/111
+f 128/113/106 127/115/107 134/125/114 135/124/113
+f 127/115/107 126/117/108 133/126/115 134/125/114
+f 126/117/108 125/119/109 132/127/116 133/126/115
+f 125/119/109 124/121/110 131/128/117 132/127/116
+f 137/123/112 136/122/111 143/129/118 144/130/119
+f 136/122/111 135/124/113 142/131/120 143/129/118
+f 135/124/113 134/125/114 141/132/121 142/131/120
+f 134/125/114 133/126/115 140/133/122 141/132/121
+f 133/126/115 132/127/116 139/134/123 140/133/122
+f 132/127/116 131/128/117 138/135/124 139/134/123
+f 144/130/119 143/129/118 38/18/14 39/17/13
+f 143/129/118 142/131/120 37/21/17 38/18/14
+f 142/131/120 141/132/121 36/23/19 37/21/17
+f 141/132/121 140/133/122 35/25/21 36/23/19
+f 140/133/122 139/134/123 34/27/23 35/25/21
+f 139/134/123 138/135/124 33/29/25 34/27/23
+f 96/136/82 89/137/75 153/138/125 154/139/126
+f 89/137/75 82/140/68 152/141/127 153/138/125
+f 82/140/68 75/142/61 151/143/128 152/141/127
+f 75/142/61 68/144/54 150/145/129 151/143/128
+f 68/144/54 61/146/47 149/147/130 150/145/129
+f 61/146/47 54/148/40 148/149/131 149/147/130
+f 138/150/124 131/151/117 159/152/132 160/153/133
+f 54/148/40 47/154/33 147/155/134 148/149/131
+f 131/151/117 124/156/110 158/157/135 159/152/132
+f 47/154/33 40/158/26 146/159/136 147/155/134
+f 124/156/110 117/160/103 157/161/137 158/157/135
+f 33/162/25 138/150/124 160/153/133 145/163/138
+f 40/158/26 33/162/25 145/163/138 146/159/136
+f 117/160/103 110/164/96 156/165/139 157/161/137
+f 110/164/96 103/166/89 155/167/140 156/165/139
+f 103/166/89 96/136/82 154/139/126 155/167/140
+f 145/163/138 160/153/133 161/168/141
+f 160/153/133 159/152/132 161/168/141
+f 159/152/132 158/157/135 161/168/141
+f 158/157/135 157/161/137 161/168/141
+f 157/161/137 156/165/139 161/168/141
+f 156/165/139 155/167/140 161/168/141
+f 155/167/140 154/139/126 161/168/141
+f 154/139/126 153/138/125 161/168/141
+f 153/138/125 152/141/127 161/168/141
+f 152/141/127 151/143/128 161/168/141
+f 151/143/128 150/145/129 161/168/141
+f 150/145/129 149/147/130 161/168/141
+f 149/147/130 148/149/131 161/168/141
+f 148/149/131 147/155/134 161/168/141
+f 147/155/134 146/159/136 161/168/141
+f 146/159/136 145/163/138 161/168/141
diff --git a/homedecor_modpack/homedecor/models/homedecor_pool_table.obj b/homedecor_modpack/homedecor/models/homedecor_pool_table.obj
new file mode 100644
index 0000000..031d230
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_pool_table.obj
@@ -0,0 +1,5895 @@
+# Blender v2.73 (sub 0) OBJ File: 'pool-table.blend'
+# www.blender.org
+o cue_Cylinder
+v -0.226849 0.258106 0.913435
+v 0.051383 0.311057 0.218866
+v -0.229986 0.256043 0.912056
+v 0.038833 0.302809 0.213348
+v -0.229835 0.252050 0.911881
+v 0.039439 0.286835 0.212649
+v -0.226545 0.250119 0.913086
+v 0.052596 0.279111 0.217469
+v -0.223408 0.252181 0.914466
+v 0.065146 0.287360 0.222987
+v -0.223559 0.256175 0.914640
+v 0.064540 0.303333 0.223685
+v 0.333579 0.336483 -0.484167
+v -0.228149 0.253899 0.916881
+v 0.327001 0.340345 -0.486577
+v 0.333276 0.344469 -0.483818
+v 0.339854 0.340607 -0.481408
+v 0.340158 0.332620 -0.481757
+v 0.333883 0.328496 -0.484516
+v 0.327304 0.332358 -0.486926
+v -0.228224 0.255896 0.916968
+v -0.229793 0.254865 0.916279
+v -0.229717 0.252868 0.916191
+v -0.228073 0.251902 0.916794
+v -0.226504 0.252933 0.917484
+v -0.226580 0.254930 0.917571
+v 0.330070 0.352029 -0.476228
+v 0.317519 0.343780 -0.481746
+v 0.318126 0.327807 -0.482444
+v 0.331283 0.320082 -0.477625
+v 0.343833 0.328331 -0.472107
+v 0.343226 0.344305 -0.471408
+v -0.087733 0.284582 0.566151
+v -0.095577 0.279426 0.562702
+v -0.095198 0.269443 0.562265
+v -0.086975 0.264615 0.565278
+v -0.079131 0.269770 0.568726
+v -0.079510 0.279754 0.569163
+v 0.204490 0.307845 -0.124560
+v 0.191940 0.299597 -0.130078
+v 0.178783 0.307321 -0.134898
+v 0.178176 0.323294 -0.134199
+v 0.203883 0.323819 -0.123861
+v 0.190726 0.331543 -0.128681
+vt 0.927132 0.291742
+vt 0.031250 0.291761
+vt 0.031400 0.329884
+vt 0.927285 0.315713
+vt 0.031856 0.368032
+vt 0.927737 0.339678
+vt 0.032620 0.406250
+vt 0.928489 0.363632
+vt 0.928476 0.219879
+vt 0.032629 0.177309
+vt 0.031865 0.215497
+vt 0.927729 0.243805
+vt 0.825831 0.177570
+vt 0.822953 0.172597
+vt 0.828700 0.172591
+vt 0.927280 0.267772
+vt 0.031405 0.253641
+vt 0.834304 0.182402
+vt 0.822811 0.182414
+vt 0.831578 0.177565
+vt 0.924407 0.157086
+vt 0.931464 0.169282
+vt 0.938498 0.157072
+vt 0.945554 0.169268
+vt 0.952588 0.157058
+vt 0.945533 0.144862
+vt 0.931442 0.144876
+vt 0.825823 0.167617
+vt 0.831569 0.167611
+vt 0.834447 0.172585
+vt 0.840042 0.172443
+vt 0.834287 0.162494
+vt 0.822794 0.162506
+vt 0.817055 0.172466
+vt 0.952753 0.132820
+vt 0.966864 0.157210
+vt 0.924572 0.132848
+vt 0.910503 0.157268
+vt 0.924614 0.181659
+vt 0.952794 0.181631
+vt 0.928920 0.738865
+vt 0.031250 0.738948
+vt 0.031254 0.777249
+vt 0.928914 0.777172
+vt 0.928922 0.930395
+vt 0.031269 0.930450
+vt 0.031274 0.968750
+vt 0.928932 0.968657
+vt 0.928916 0.892088
+vt 0.031265 0.892150
+vt 0.031258 0.815549
+vt 0.928911 0.815478
+vt 0.031261 0.853849
+vt 0.928912 0.853782
+vt 0.925833 0.572571
+vt 0.031250 0.572625
+vt 0.031254 0.610931
+vt 0.925983 0.610694
+vt 0.925988 0.534451
+vt 0.031250 0.534320
+vt 0.926448 0.496306
+vt 0.031253 0.496015
+vt 0.031261 0.649238
+vt 0.926439 0.648842
+vt 0.031270 0.687500
+vt 0.927203 0.687060
+vt 0.927212 0.458118
+vt 0.031258 0.457708
+vt 0.930081 0.037416
+vt 0.031847 0.023926
+vt 0.031398 0.047893
+vt 0.929917 0.053078
+vt 0.031250 0.071863
+vt 0.929898 0.068744
+vt 0.930389 0.021743
+vt 0.032594 0.000000
+vt 0.930295 0.100076
+vt 0.031855 0.119799
+vt 0.032607 0.143753
+vt 0.930710 0.115739
+vt 0.930024 0.084410
+vt 0.031403 0.095834
+vn -0.501700 0.854300 -0.135900
+vn -0.932700 -0.019700 -0.360200
+vn -0.436100 -0.874700 -0.211500
+vn 0.491500 -0.855800 0.161500
+vn -0.371600 -0.054600 0.926800
+vn 0.425800 0.873200 0.237100
+vn 0.922400 0.018200 0.385800
+vn 0.243300 0.776900 0.580700
+vn 0.371600 0.054600 -0.926800
+vn -0.371600 -0.054700 0.926800
+vn -0.371500 -0.054700 0.926800
+vn -0.371500 -0.054600 0.926800
+vn 0.697400 -0.004800 0.716700
+vn 0.303400 -0.803900 0.511600
+vn -0.544600 -0.821200 0.170600
+vn -0.998600 -0.039400 0.034700
+vn 0.618100 -0.603500 -0.503600
+vn -0.447500 0.022100 -0.894000
+vn -0.125000 0.676000 -0.726200
+vn 0.569000 0.690200 -0.447100
+vn 0.940600 0.050400 -0.335800
+vn -0.075900 -0.617700 -0.782700
+vn -0.604600 0.759600 0.239700
+vn 0.496600 -0.855100 0.148700
+vn -0.431000 -0.874000 -0.224300
+vn -0.927600 -0.018900 -0.373000
+vn 0.927600 0.018900 0.373000
+vn 0.431000 0.874000 0.224300
+vn -0.496600 0.855100 -0.148700
+g cue_Cylinder_None
+s off
+f 33/1/1 2/2/1 4/3/1 34/4/1
+f 34/4/2 4/3/2 6/5/2 35/6/2
+f 35/6/3 6/5/3 8/7/3 36/8/3
+f 36/9/4 8/10/4 10/11/4 37/12/4
+f 21/13/5 22/14/5 14/15/5
+f 38/16/6 12/17/6 2/2/6 33/1/6
+f 37/12/7 10/11/7 12/17/7 38/16/7
+f 11/18/8 1/19/8 21/13/8 26/20/8
+f 15/21/9 16/22/9 13/23/9
+f 16/22/9 17/24/9 13/23/9
+f 17/24/9 18/25/9 13/23/9
+f 18/25/9 19/26/9 13/23/9
+f 19/26/9 20/27/9 13/23/9
+f 20/27/9 15/21/9 13/23/9
+f 22/14/5 23/28/5 14/15/5
+f 23/28/10 24/29/10 14/15/10
+f 24/29/11 25/30/11 14/15/11
+f 25/30/12 26/20/12 14/15/12
+f 26/20/12 21/13/12 14/15/12
+f 9/31/13 11/18/13 26/20/13 25/30/13
+f 7/32/14 9/31/14 25/30/14 24/29/14
+f 5/33/15 7/32/15 24/29/15 23/28/15
+f 3/34/16 5/33/16 23/28/16 22/14/16
+f 30/35/17 19/26/17 18/25/17 31/36/17
+f 29/37/18 28/38/18 15/21/18 20/27/18
+f 27/39/19 16/22/19 15/21/19 28/38/19
+f 32/40/20 17/24/20 16/22/20 27/39/20
+f 31/36/21 18/25/21 17/24/21 32/40/21
+f 30/35/22 29/37/22 20/27/22 19/26/22
+f 1/19/23 3/34/23 22/14/23 21/13/23
+f 40/41/24 30/42/24 31/43/24 39/44/24
+f 41/45/25 29/46/25 30/47/25 40/48/25
+f 42/49/26 28/50/26 29/46/26 41/45/26
+f 39/44/27 31/43/27 32/51/27 43/52/27
+f 43/52/28 32/51/28 27/53/28 44/54/28
+f 44/54/29 27/53/29 28/50/29 42/49/29
+f 2/55/29 44/56/29 42/57/29 4/58/29
+f 12/59/28 43/60/28 44/56/28 2/55/28
+f 10/61/27 39/62/27 43/60/27 12/59/27
+f 4/58/26 42/57/26 41/63/26 6/64/26
+f 6/64/25 41/63/25 40/65/25 8/66/25
+f 8/67/24 40/68/24 39/62/24 10/61/24
+f 9/69/7 37/70/7 38/71/7 11/72/7
+f 11/72/6 38/71/6 33/73/6 1/74/6
+f 7/75/4 36/76/4 37/70/4 9/69/4
+f 5/77/3 35/78/3 36/79/3 7/80/3
+f 3/81/2 34/82/2 35/78/2 5/77/2
+f 1/74/1 33/73/1 34/82/1 3/81/1
+o baize_nodebox-1.002
+v -0.437500 0.312500 0.557743
+v -0.437500 0.312500 0.442257
+v 0.437499 0.312500 0.442258
+v 0.437499 0.312500 0.557743
+v -0.437500 0.312500 1.355839
+v -0.355839 0.312500 1.437500
+v 0.355839 0.312500 1.437500
+v 0.437499 0.312500 1.355840
+v -0.437500 0.312500 -0.355839
+v -0.355840 0.312500 -0.437499
+v 0.355839 0.312500 -0.437500
+v 0.437499 0.312500 -0.355839
+v 0.389664 0.250000 0.557743
+v -0.437500 0.250000 0.557743
+v -0.437500 0.250000 0.442257
+v -0.389664 0.250000 0.442258
+v -0.355839 0.250000 0.476082
+v -0.355839 0.250000 0.523918
+v -0.389664 0.250000 0.557743
+v 0.355839 0.250000 0.523918
+v 0.355839 0.250000 0.476082
+v 0.389664 0.250000 0.442257
+v 0.437499 0.250000 0.442258
+v 0.437499 0.250000 0.557743
+v -0.437500 0.250000 1.355839
+v -0.389664 0.250000 1.355840
+v -0.355839 0.250000 1.389664
+v -0.355839 0.250000 1.437500
+v 0.355839 0.250000 1.437500
+v 0.355839 0.250000 1.389664
+v 0.389664 0.250000 1.355839
+v 0.437499 0.250000 1.355840
+v 0.389664 0.250000 -0.355839
+v -0.437500 0.250000 -0.355839
+v -0.355840 0.250000 -0.437499
+v -0.355840 0.250000 -0.389664
+v -0.389664 0.250000 -0.355839
+v 0.355839 0.250000 -0.389664
+v 0.355839 0.250000 -0.437500
+v 0.437499 0.250000 -0.355839
+v 0.355839 0.250000 0.500000
+v -0.355839 0.250000 0.500000
+v 0.344120 0.281250 -0.425781
+v -0.344121 0.281250 -0.425781
+v 0.425780 0.281250 -0.344121
+v 0.425780 0.281250 0.430539
+v 0.425780 0.281250 1.344121
+v 0.425780 0.281250 0.569461
+v 0.344120 0.281250 1.425781
+v -0.344121 0.281250 1.425781
+v -0.425781 0.281250 1.344121
+v -0.425781 0.281250 0.569461
+v -0.425781 0.281250 -0.344120
+v -0.425781 0.281250 0.430539
+v -0.000000 0.265376 -0.431733
+v 0.431723 0.297098 0.043209
+v 0.431723 0.265402 0.956791
+v -0.000000 0.297124 1.431734
+v -0.431724 0.297098 0.956791
+v -0.431724 0.265402 0.043209
+v -0.431724 0.297098 0.043209
+v -0.431724 0.265402 0.956791
+v -0.000000 0.265376 1.431734
+v 0.431723 0.297098 0.956791
+v 0.431723 0.265402 0.043209
+v -0.000000 0.297124 -0.431733
+vt 0.295696 0.908782
+vt 0.295698 0.089824
+vt 0.314346 0.499313
+vt 0.545697 0.089823
+vt 0.545697 0.908784
+vt 0.527048 0.499304
+vt 0.670690 0.816812
+vt 0.670691 0.089814
+vt 0.689356 0.453307
+vt 0.170700 0.089823
+vt 0.170698 0.908781
+vt 0.152050 0.499291
+vt 0.420697 0.908784
+vt 0.420697 0.089824
+vt 0.439346 0.499305
+vt 0.384629 0.926744
+vt 0.384630 0.071865
+vt 0.402048 0.499304
+vt 0.110336 0.938408
+vt 0.110336 0.087104
+vt 0.889664 0.087104
+vt 0.889664 0.061592
+vt 0.889664 0.912896
+vt 0.110336 0.912896
+vt 0.206766 0.071864
+vt 0.206766 0.926741
+vt 0.189348 0.499292
+vt 0.634629 0.834762
+vt 0.634631 0.071864
+vt 0.652026 0.453309
+vt 0.581764 0.071864
+vt 0.581764 0.926743
+vt 0.564346 0.499303
+vt 0.259629 0.926741
+vt 0.259629 0.071864
+vt 0.277048 0.499312
+vt 0.759629 0.834766
+vt 0.759630 0.071864
+vt 0.777024 0.453315
+vt 0.795690 0.816816
+vt 0.795690 0.089814
+vt 0.814355 0.453315
+vt 0.831750 0.071864
+vt 0.831750 0.834766
+vt 0.331766 0.071864
+vt 0.331763 0.926741
+vt 0.509629 0.926744
+vt 0.509630 0.071864
+vt 0.706751 0.071864
+vt 0.706751 0.834762
+vt 0.134629 0.926741
+vt 0.134633 0.071864
+vt 0.456765 0.071864
+vt 0.456764 0.926743
+vt 0.855840 1.000000
+vt 0.144160 1.000000
+vt 0.144160 0.974488
+vt 0.937500 0.938408
+vt 0.889664 0.938408
+vt 0.855840 0.974488
+vt 0.144160 0.000000
+vt 0.855840 0.000000
+vt 0.855840 0.051024
+vt 0.937500 0.087104
+vt 0.144160 0.051024
+vt 0.062500 0.087104
+vt 0.062500 0.938408
+vt 0.062500 0.061592
+vt 0.110336 0.061592
+vt 0.144160 0.025512
+vt 0.144160 0.948976
+vt 0.062500 0.912896
+vt 0.855840 0.948976
+vt 0.937500 0.912896
+vt 0.855840 0.025512
+vt 0.937500 0.061592
+vn -0.936300 0.351100 0.000000
+vn -0.936300 -0.351100 0.000000
+vn 0.000000 0.351100 -0.936300
+vn 0.936300 0.351100 -0.000000
+vn 0.936300 -0.351100 -0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -0.351100 -0.936300
+vn 0.000000 0.351100 0.936300
+vn 0.000000 -0.351100 0.936300
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 0.707100
+g baize_nodebox-1.002_none.001
+s off
+f 89/83/30 90/84/30 100/85/30
+f 91/86/31 92/87/31 101/88/31
+f 93/89/32 94/90/32 102/91/32
+f 95/92/33 96/93/33 103/94/33
+f 97/95/34 98/96/34 104/97/34
+f 53/98/33 46/99/33 105/100/33
+f 66/101/35 77/102/35 81/103/35
+f 63/104/35 70/105/35 75/106/35
+f 69/107/34 58/108/34 106/109/34
+f 73/110/36 72/111/36 107/112/36
+f 52/113/30 48/114/30 108/115/30
+f 84/116/31 67/117/31 109/118/31
+f 55/119/37 54/120/37 110/121/37
+f 87/122/38 88/123/38 99/124/38
+f 88/123/38 79/125/38 99/124/38
+f 79/125/38 83/126/38 99/124/38
+f 83/126/38 87/122/38 99/124/38
+f 90/84/30 47/127/30 100/85/30
+f 47/127/30 56/128/30 100/85/30
+f 56/128/30 89/83/30 100/85/30
+f 92/87/31 68/129/31 101/88/31
+f 68/129/31 76/130/31 101/88/31
+f 76/130/31 91/86/31 101/88/31
+f 94/90/32 50/131/32 102/91/32
+f 50/131/32 51/132/32 102/91/32
+f 51/132/32 93/89/32 102/91/32
+f 96/93/33 45/133/33 103/94/33
+f 45/133/33 49/134/33 103/94/33
+f 49/134/33 95/92/33 103/94/33
+f 98/96/34 59/135/34 104/97/34
+f 59/135/34 78/136/34 104/97/34
+f 78/136/34 97/95/34 104/97/34
+f 46/99/33 98/96/33 105/100/33
+f 98/96/33 97/95/33 105/100/33
+f 97/95/33 53/98/33 105/100/33
+f 58/108/34 96/93/34 106/109/34
+f 96/93/34 95/92/34 106/109/34
+f 95/92/34 69/107/34 106/109/34
+f 72/111/36 94/90/36 107/112/36
+f 94/90/36 93/89/36 107/112/36
+f 93/89/36 73/110/36 107/112/36
+f 48/114/30 92/87/30 108/115/30
+f 92/87/30 91/86/30 108/115/30
+f 91/86/30 52/113/30 108/115/30
+f 67/117/31 90/84/31 109/118/31
+f 90/84/31 89/83/31 109/118/31
+f 89/83/31 84/116/31 109/118/31
+f 54/120/37 88/123/37 110/121/37
+f 88/123/37 87/122/37 110/121/37
+f 87/122/37 55/119/37 110/121/37
+f 86/137/35 85/138/35 65/139/35
+f 81/103/35 59/140/35 60/141/35
+f 61/142/35 86/137/35 65/139/35
+f 66/101/35 60/141/35 61/142/35
+f 83/143/35 79/144/35 80/145/35
+f 81/103/35 78/146/35 59/140/35
+f 82/147/35 80/145/35 81/103/35
+f 66/101/35 84/148/35 77/102/35
+f 82/147/35 83/143/35 80/145/35
+f 81/103/35 77/102/35 82/147/35
+f 61/142/35 65/139/35 66/101/35
+f 66/101/35 67/149/35 84/148/35
+f 66/101/35 81/103/35 60/141/35
+f 75/106/35 68/150/35 57/151/35
+f 64/152/35 85/143/35 86/144/35
+f 63/104/35 57/151/35 64/152/35
+f 72/137/35 73/138/35 74/153/35
+f 75/106/35 76/154/35 68/150/35
+f 71/155/35 74/153/35 75/106/35
+f 63/104/35 69/156/35 70/105/35
+f 71/155/35 72/137/35 74/153/35
+f 75/106/35 70/105/35 71/155/35
+f 64/152/35 86/144/35 62/157/35
+f 63/104/35 58/158/35 69/156/35
+f 64/152/35 62/157/35 63/104/35
+f 63/104/35 75/106/35 57/151/35
+s 1
+f 46/99/39 59/135/39 98/96/39
+f 48/114/40 68/129/40 92/87/40
+f 49/134/39 69/107/39 95/92/39
+f 51/132/41 73/110/41 93/89/41
+f 56/128/40 84/116/40 89/83/40
+f 54/120/42 79/125/42 88/123/42
+f 83/126/39 55/119/39 87/122/39
+f 78/136/41 53/98/41 97/95/41
+f 58/108/41 45/133/41 96/93/41
+f 72/111/40 50/131/40 94/90/40
+f 76/130/42 52/113/42 91/86/42
+f 67/117/42 47/127/42 90/84/42
+o pockets_nodebox-1.000
+v 0.437499 0.191406 0.442258
+v 0.437499 0.312500 0.442258
+v 0.471324 0.191406 0.476082
+v 0.471324 0.312500 0.476082
+v 0.471324 0.191406 0.523918
+v 0.471324 0.312500 0.523918
+v 0.437499 0.191406 0.557743
+v 0.437499 0.312500 0.557743
+v 0.389664 0.312500 1.471325
+v 0.389664 0.191406 1.471325
+v 0.355839 0.191406 1.437500
+v 0.355839 0.312500 1.437500
+v 0.437499 0.191406 1.355840
+v 0.437499 0.312500 1.355840
+v 0.471324 0.191406 1.389664
+v 0.471324 0.312500 1.389664
+v 0.471324 0.191406 1.437500
+v 0.471324 0.312500 1.437500
+v 0.437499 0.191406 1.471325
+v 0.437499 0.312500 1.471325
+v 0.389664 0.250000 0.557743
+v 0.389664 0.191406 0.557743
+v 0.355839 0.191406 0.523918
+v 0.355839 0.250000 0.523918
+v 0.355839 0.191406 0.476082
+v 0.355839 0.250000 0.476082
+v 0.389664 0.191406 0.442257
+v 0.389664 0.250000 0.442257
+v 0.437499 0.250000 0.442258
+v 0.437499 0.250000 0.557743
+v 0.355839 0.250000 1.437500
+v 0.355839 0.191406 1.389664
+v 0.355839 0.250000 1.389664
+v 0.389664 0.191406 1.355839
+v 0.389664 0.250000 1.355839
+v 0.437499 0.250000 1.355840
+v 0.413581 0.187500 0.500000
+v 0.413581 0.187501 1.413582
+v -0.437499 0.191406 0.557742
+v -0.437499 0.312500 0.557742
+v -0.471324 0.191406 0.523918
+v -0.471324 0.312500 0.523918
+v -0.471324 0.191406 0.476082
+v -0.471324 0.312500 0.476082
+v -0.437499 0.191406 0.442258
+v -0.437499 0.312500 0.442258
+v -0.389664 0.312500 -0.471325
+v -0.389664 0.191406 -0.471325
+v -0.355839 0.191406 -0.437500
+v -0.355839 0.312500 -0.437500
+v -0.437499 0.191406 -0.355840
+v -0.437499 0.312500 -0.355840
+v -0.471324 0.191406 -0.389664
+v -0.471324 0.312500 -0.389664
+v -0.471324 0.191406 -0.437500
+v -0.471324 0.312500 -0.437500
+v -0.437499 0.191406 -0.471325
+v -0.437499 0.312500 -0.471325
+v -0.389664 0.250000 0.442258
+v -0.389664 0.191406 0.442258
+v -0.355839 0.191406 0.476082
+v -0.355839 0.250000 0.476082
+v -0.355839 0.191406 0.523918
+v -0.355839 0.250000 0.523918
+v -0.389664 0.191406 0.557743
+v -0.389664 0.250000 0.557743
+v -0.437499 0.250000 0.557742
+v -0.437499 0.250000 0.442258
+v -0.355839 0.250000 -0.437500
+v -0.355839 0.191406 -0.389664
+v -0.355839 0.250000 -0.389664
+v -0.389664 0.191406 -0.355839
+v -0.389664 0.250000 -0.355839
+v -0.437499 0.250000 -0.355840
+v -0.413581 0.187500 0.500000
+v -0.413582 0.187501 -0.413582
+v 0.389664 0.312500 -0.471325
+v 0.389664 0.191406 -0.471325
+v 0.355839 0.191406 -0.437500
+v 0.355839 0.312500 -0.437500
+v 0.437499 0.191406 -0.355840
+v 0.437499 0.312500 -0.355840
+v 0.471324 0.191406 -0.389664
+v 0.471324 0.312500 -0.389664
+v 0.471324 0.191406 -0.437500
+v 0.471324 0.312500 -0.437500
+v 0.437499 0.191406 -0.471325
+v 0.437499 0.312500 -0.471325
+v 0.355839 0.250000 -0.437500
+v 0.355839 0.191406 -0.389664
+v 0.355839 0.250000 -0.389664
+v 0.389664 0.191406 -0.355840
+v 0.389664 0.250000 -0.355840
+v 0.437499 0.250000 -0.355840
+v 0.413581 0.187501 -0.413582
+v -0.389664 0.312500 1.471325
+v -0.389664 0.191406 1.471325
+v -0.355839 0.191406 1.437500
+v -0.355839 0.312500 1.437500
+v -0.437499 0.191406 1.355840
+v -0.437499 0.312500 1.355840
+v -0.471324 0.191406 1.389664
+v -0.471324 0.312500 1.389664
+v -0.471324 0.191406 1.437500
+v -0.471324 0.312500 1.437500
+v -0.437499 0.191406 1.471325
+v -0.437499 0.312500 1.471325
+v -0.355839 0.250000 1.437500
+v -0.355839 0.191406 1.389664
+v -0.355839 0.250000 1.389664
+v -0.389664 0.191406 1.355839
+v -0.389664 0.250000 1.355839
+v -0.437499 0.250000 1.355840
+v -0.413581 0.187501 1.413582
+vt 0.125000 0.000000
+vt 0.250000 0.000000
+vt 0.250000 0.312500
+vt 0.125000 0.312500
+vt 0.375000 0.000000
+vt 0.375000 0.312500
+vt 0.500000 0.000000
+vt 0.500000 0.312500
+vt 0.999999 0.787198
+vt 0.999999 0.911854
+vt 0.849526 0.849527
+vt 0.750000 0.343750
+vt 0.875000 0.343750
+vt 0.875000 0.500000
+vt 0.750000 0.500000
+vt 0.500000 0.343750
+vt 0.625000 0.343750
+vt 0.625000 0.500000
+vt 0.500000 0.500000
+vt 0.750000 0.000000
+vt 0.875000 0.000000
+vt 0.875000 0.156250
+vt 0.750000 0.156250
+vt 0.375000 0.343750
+vt 0.375000 0.500000
+vt 1.000000 0.343750
+vt 1.000000 0.500000
+vt 1.000000 0.000000
+vt 1.000000 0.156250
+vt 0.625000 0.000000
+vt 0.625000 0.156250
+vt 0.787198 0.699053
+vt 0.911854 0.699052
+vt 0.088146 0.699053
+vt 0.212803 0.699053
+vt 0.150475 0.849526
+vt 0.000000 0.500000
+vt 0.000000 0.343750
+vt 0.125000 0.343750
+vt 0.125000 0.656250
+vt 0.000000 0.656250
+vt 0.000000 0.156250
+vt 0.000000 0.000000
+vt 0.000000 0.312500
+vt 0.625000 0.312500
+vt 0.250000 0.656250
+vt 0.250000 0.343750
+vt 0.375000 0.656250
+vt 0.699052 0.911854
+vt 0.699052 0.787198
+vt 0.911854 1.000000
+vt 0.787198 1.000000
+vt 0.300948 0.787199
+vt 0.300948 0.911855
+vt 0.212803 1.000001
+vt 0.088147 1.000001
+vt 0.000001 0.911855
+vt 0.000001 0.787199
+vn -0.731500 0.610800 0.303000
+vn -0.731500 0.610800 -0.303000
+vn -0.923900 0.000000 -0.382700
+vn -0.923900 0.000000 0.382700
+vn -0.303000 0.610800 -0.731500
+vn -0.382700 0.000000 -0.923900
+vn 0.303000 0.610800 -0.731500
+vn 0.382700 0.000000 -0.923900
+vn 0.731500 0.610800 0.303000
+vn 0.731500 0.610800 -0.303000
+vn 0.000000 1.000000 0.000000
+vn 0.303000 0.610800 0.731500
+vn 0.382700 0.000000 0.923900
+vn 0.923900 0.000000 0.382700
+vn 0.923900 0.000000 -0.382700
+vn -0.505500 0.000000 -0.862900
+vn -0.303000 0.610800 0.731500
+vn -0.505400 0.000000 0.862900
+vn -0.505500 0.000000 0.862900
+vn 0.862900 0.000000 -0.505400
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn -0.382700 -0.000000 0.923900
+vn 0.505500 0.000000 0.862900
+vn 0.505400 0.000000 -0.862900
+vn -0.862900 0.000000 0.505400
+vn 0.707100 0.000000 0.707100
+vn 0.862900 0.000000 0.505400
+vn -0.862900 0.000000 -0.505400
+g pockets_nodebox-1.000_none.001_homedecor_pool_table_pockets.png
+s 1
+f 125/159/43 127/160/44 128/161/45 126/162/46
+f 127/160/44 129/163/47 130/164/48 128/161/45
+f 129/163/47 120/165/49 119/166/50 130/164/48
+f 135/167/51 133/168/52 147/169/53
+f 135/170/51 137/171/54 138/172/55 136/173/56
+f 132/174/49 133/175/52 134/176/57 131/177/50
+f 142/178/51 144/179/54 145/180/55 143/181/56
+f 117/182/47 132/174/49 131/177/50 140/183/58
+f 137/171/54 111/184/59 139/185/60 138/172/55
+f 144/179/54 123/186/59 146/187/61 145/180/55
+f 121/188/52 142/178/51 143/181/56 141/189/62
+f 111/190/59 137/191/54 147/169/53
+f 123/192/59 144/193/54 148/194/53
+f 139/195/60 111/196/59 113/197/43 114/198/46 112/199/63
+f 146/200/61 123/201/59 125/159/43 126/162/46 124/202/63
+f 119/166/50 120/165/49 121/188/52 141/189/62 122/203/64
+f 116/204/45 115/205/44 117/182/47 140/183/58 118/206/65
+f 137/191/54 135/167/51 147/169/53
+f 115/207/44 113/208/43 147/169/53
+f 133/168/52 132/209/49 147/169/53
+f 132/209/49 117/210/47 147/169/53
+f 117/210/47 115/207/44 147/169/53
+f 113/197/43 115/205/44 116/204/45 114/198/46
+f 113/208/43 111/190/59 147/169/53
+f 144/193/54 142/211/51 148/194/53
+f 142/211/51 121/212/52 148/194/53
+f 121/212/52 120/213/49 148/194/53
+f 120/213/49 129/214/47 148/194/53
+f 129/214/47 127/215/44 148/194/53
+f 127/215/44 125/216/43 148/194/53
+f 125/216/43 123/192/59 148/194/53
+f 133/175/52 135/170/51 136/173/56 134/176/57
+f 163/159/52 165/160/51 166/161/56 164/162/57
+f 165/160/51 167/163/54 168/164/55 166/161/56
+f 167/163/54 158/165/59 157/166/66 168/164/55
+f 173/167/44 171/168/43 185/169/53
+f 173/170/44 175/171/47 176/172/48 174/173/45
+f 170/174/59 171/175/43 172/176/46 169/177/66
+f 180/178/44 182/179/47 183/180/48 181/181/45
+f 155/182/54 170/174/59 169/177/66 178/183/67
+f 175/171/47 149/184/49 177/185/68 176/172/48
+f 182/179/47 161/186/49 184/187/68 183/180/48
+f 159/188/43 180/178/44 181/181/45 179/189/69
+f 149/190/49 175/191/47 185/169/53
+f 161/192/49 182/193/47 186/194/53
+f 177/195/68 149/196/49 151/197/52 152/198/57 150/199/64
+f 184/200/68 161/201/49 163/159/52 164/162/57 162/202/64
+f 157/166/66 158/165/59 159/188/43 179/189/69 160/203/63
+f 154/204/56 153/205/51 155/182/54 178/183/67 156/206/70
+f 175/191/47 173/167/44 185/169/53
+f 153/207/51 151/208/52 185/169/53
+f 171/168/43 170/209/59 185/169/53
+f 170/209/59 155/210/54 185/169/53
+f 155/210/54 153/207/51 185/169/53
+f 151/197/52 153/205/51 154/204/56 152/198/57
+f 151/208/52 149/190/49 185/169/53
+f 182/193/47 180/211/44 186/194/53
+f 180/211/44 159/212/43 186/194/53
+f 159/212/43 158/213/59 186/194/53
+f 158/213/59 167/214/54 186/194/53
+f 167/214/54 165/215/51 186/194/53
+f 165/215/51 163/216/52 186/194/53
+f 163/216/52 161/192/49 186/194/53
+f 171/175/43 173/170/44 174/173/45 172/176/46
+f 193/159/44 194/162/45 196/161/46 195/160/43
+f 195/160/43 196/161/46 198/164/66 197/163/59
+f 197/163/59 198/164/66 187/166/55 188/165/54
+f 200/178/52 201/181/57 203/180/50 202/179/49
+f 202/179/49 203/180/50 204/187/58 191/186/47
+f 189/188/51 199/189/71 201/181/57 200/178/52
+f 191/192/47 205/194/53 202/193/49
+f 204/200/58 192/202/65 194/162/45 193/159/44 191/201/47
+f 187/166/55 190/203/70 199/189/71 189/188/51 188/165/54
+f 202/193/49 205/194/53 200/211/52
+f 200/211/52 205/194/53 189/212/51
+f 189/212/51 205/194/53 188/213/54
+f 188/213/54 205/194/53 197/214/59
+f 197/214/59 205/194/53 195/215/43
+f 195/215/43 205/194/53 193/216/44
+f 193/216/44 205/194/53 191/192/47
+f 212/159/51 213/162/56 215/161/57 214/160/52
+f 214/160/52 215/161/57 217/164/50 216/163/49
+f 216/163/49 217/164/50 206/166/48 207/165/47
+f 219/178/43 220/181/46 222/180/66 221/179/59
+f 221/179/59 222/180/66 223/187/67 210/186/54
+f 208/188/44 218/189/72 220/181/46 219/178/43
+f 210/192/54 224/194/53 221/193/59
+f 223/200/67 211/202/70 213/162/56 212/159/51 210/201/54
+f 206/166/48 209/203/65 218/189/72 208/188/44 207/165/47
+f 221/193/59 224/194/53 219/211/43
+f 219/211/43 224/194/53 208/212/44
+f 208/212/44 224/194/53 207/213/47
+f 207/213/47 224/194/53 216/214/49
+f 216/214/49 224/194/53 214/215/52
+f 214/215/52 224/194/53 212/216/51
+f 212/216/51 224/194/53 210/192/54
+o balls_Sphere.015
+v 0.169225 0.306501 0.460652
+v 0.184445 0.296874 0.459466
+v 0.191009 0.283559 0.455950
+v 0.191003 0.269063 0.451195
+v 0.184428 0.256257 0.446143
+v 0.169201 0.247809 0.441400
+v 0.164903 0.304124 0.467906
+v 0.174338 0.291314 0.476428
+v 0.178406 0.276626 0.477101
+v 0.178400 0.262130 0.472346
+v 0.174321 0.250698 0.463105
+v 0.164878 0.245432 0.448654
+v 0.156448 0.303397 0.470132
+v 0.154570 0.289615 0.481633
+v 0.153756 0.274507 0.483591
+v 0.153750 0.260012 0.478836
+v 0.154553 0.248999 0.468310
+v 0.156424 0.244705 0.450880
+v 0.148814 0.304747 0.466026
+v 0.136721 0.292772 0.472032
+v 0.131498 0.278444 0.471619
+v 0.131492 0.263948 0.466864
+v 0.136704 0.252155 0.458709
+v 0.148790 0.246055 0.446774
+v 0.146473 0.307383 0.457993
+v 0.131245 0.298935 0.453249
+v 0.124670 0.286129 0.448198
+v 0.124664 0.271634 0.443443
+v 0.131228 0.258319 0.439926
+v 0.146448 0.248691 0.438741
+v 0.150795 0.309761 0.450739
+v 0.141352 0.304495 0.436288
+v 0.137273 0.293062 0.427047
+v 0.137267 0.278566 0.422292
+v 0.141335 0.263878 0.422965
+v 0.150770 0.251069 0.431486
+v 0.159250 0.310488 0.448512
+v 0.161120 0.306194 0.431083
+v 0.161923 0.295181 0.420556
+v 0.161917 0.280685 0.415801
+v 0.161103 0.265577 0.417760
+v 0.159225 0.251795 0.429260
+v 0.166884 0.309137 0.452619
+v 0.178970 0.303037 0.440683
+v 0.184182 0.291244 0.432528
+v 0.184175 0.276749 0.427773
+v 0.178953 0.262421 0.427361
+v 0.166859 0.250445 0.433366
+v 0.157824 0.248250 0.440070
+v 0.157849 0.306942 0.459322
+v 0.071741 0.304191 1.057179
+v 0.084515 0.292278 1.061722
+v 0.090028 0.278129 1.060247
+v 0.090028 0.263876 1.054810
+v 0.084515 0.252339 1.046487
+v 0.071741 0.246478 1.035164
+v 0.064459 0.302448 1.061749
+v 0.067487 0.288202 1.072408
+v 0.068794 0.273047 1.073572
+v 0.068794 0.258793 1.068135
+v 0.067487 0.248263 1.057173
+v 0.064459 0.244735 1.039734
+v 0.055850 0.303050 1.060169
+v 0.047360 0.289611 1.068714
+v 0.043695 0.274804 1.068966
+v 0.043695 0.260550 1.063529
+v 0.047360 0.249672 1.053479
+v 0.055850 0.245338 1.038154
+v 0.050959 0.305646 1.053365
+v 0.035923 0.295680 1.052804
+v 0.029434 0.282371 1.049127
+v 0.029434 0.268117 1.043689
+v 0.035923 0.255741 1.037570
+v 0.050959 0.247933 1.031350
+v 0.052650 0.308714 1.045322
+v 0.039876 0.302853 1.033998
+v 0.034364 0.291317 1.025676
+v 0.034364 0.277063 1.020239
+v 0.039876 0.262915 1.018764
+v 0.052650 0.251001 1.023307
+v 0.059932 0.310457 1.040751
+v 0.056904 0.306929 1.023313
+v 0.055597 0.296400 1.012351
+v 0.055597 0.282146 1.006914
+v 0.056904 0.266991 1.008078
+v 0.059932 0.252745 1.018737
+v 0.068541 0.309855 1.042331
+v 0.077032 0.305520 1.027006
+v 0.080696 0.294643 1.016957
+v 0.080696 0.280389 1.011520
+v 0.077032 0.265582 1.011772
+v 0.068541 0.252142 1.020317
+v 0.073432 0.307259 1.049136
+v 0.088469 0.299451 1.042916
+v 0.094958 0.287075 1.036796
+v 0.094958 0.272821 1.031359
+v 0.088469 0.259513 1.027681
+v 0.073432 0.249546 1.027121
+v 0.062196 0.248740 1.029236
+v 0.062196 0.306453 1.051250
+v 0.143475 0.304088 0.928609
+v 0.158793 0.296454 0.922877
+v 0.165403 0.284991 0.915285
+v 0.165403 0.272063 0.907186
+v 0.158793 0.260231 0.900183
+v 0.143475 0.251743 0.895815
+v 0.140548 0.299697 0.935617
+v 0.151948 0.286188 0.939263
+v 0.156867 0.272189 0.935719
+v 0.156867 0.259261 0.927619
+v 0.151948 0.249965 0.916569
+v 0.140548 0.247352 0.902823
+v 0.132630 0.297691 0.938818
+v 0.133435 0.281499 0.946749
+v 0.133782 0.266342 0.945053
+v 0.133782 0.253413 0.936953
+v 0.133435 0.245275 0.924054
+v 0.132630 0.245347 0.906024
+v 0.124360 0.299246 0.936338
+v 0.114098 0.285133 0.940948
+v 0.109670 0.270873 0.937820
+v 0.109670 0.257945 0.929720
+v 0.114098 0.248909 0.918254
+v 0.124360 0.246901 0.903543
+v 0.120582 0.303449 0.929628
+v 0.105265 0.294961 0.925260
+v 0.098655 0.283129 0.918257
+v 0.098655 0.270201 0.910157
+v 0.105265 0.258738 0.902566
+v 0.120582 0.251105 0.896834
+v 0.123510 0.307840 0.922620
+v 0.112110 0.305228 0.908873
+v 0.107190 0.295931 0.897823
+v 0.107190 0.283003 0.889724
+v 0.112110 0.269004 0.886179
+v 0.123510 0.255495 0.889825
+v 0.131428 0.309846 0.919418
+v 0.130623 0.309917 0.901388
+v 0.130276 0.301779 0.888489
+v 0.130276 0.288851 0.880390
+v 0.130623 0.273694 0.878694
+v 0.131428 0.257501 0.886624
+v 0.139698 0.308291 0.921899
+v 0.149959 0.306283 0.907189
+v 0.154388 0.297247 0.895722
+v 0.154388 0.284319 0.887623
+v 0.149959 0.270060 0.884494
+v 0.139698 0.255947 0.889105
+v 0.132029 0.251424 0.896324
+v 0.132029 0.303768 0.929118
+v 0.108554 0.306072 0.761077
+v 0.123865 0.296890 0.763722
+v 0.130473 0.283961 0.768405
+v 0.130473 0.269772 0.774009
+v 0.123865 0.257132 0.779423
+v 0.108554 0.248620 0.783765
+v 0.105685 0.309117 0.768788
+v 0.117156 0.304010 0.781752
+v 0.122107 0.292839 0.790887
+v 0.122107 0.278650 0.796490
+v 0.117156 0.264252 0.797452
+v 0.105685 0.251665 0.791476
+v 0.097794 0.310525 0.772353
+v 0.098705 0.307301 0.790087
+v 0.099099 0.296944 0.801282
+v 0.099099 0.282755 0.806885
+v 0.098705 0.267544 0.805788
+v 0.097794 0.253073 0.795041
+v 0.089503 0.309471 0.769684
+v 0.079321 0.304837 0.783847
+v 0.074927 0.293871 0.793500
+v 0.074927 0.279682 0.799104
+v 0.079321 0.265080 0.799548
+v 0.089503 0.252019 0.792372
+v 0.085670 0.306572 0.762344
+v 0.070359 0.298060 0.766686
+v 0.063752 0.285421 0.772101
+v 0.063752 0.271231 0.777704
+v 0.070359 0.258303 0.782387
+v 0.085670 0.249121 0.785032
+v 0.088540 0.303527 0.754634
+v 0.077068 0.290940 0.748657
+v 0.072118 0.276542 0.749619
+v 0.072118 0.262353 0.755222
+v 0.077068 0.251183 0.764358
+v 0.088540 0.246076 0.777322
+v 0.096431 0.302119 0.751068
+v 0.095519 0.287648 0.740321
+v 0.095125 0.272437 0.739224
+v 0.095125 0.258248 0.744828
+v 0.095519 0.247891 0.756022
+v 0.096431 0.244668 0.773756
+v 0.104721 0.303173 0.753737
+v 0.114903 0.290113 0.746561
+v 0.119297 0.275510 0.747006
+v 0.119297 0.261321 0.752609
+v 0.114903 0.250355 0.762262
+v 0.104721 0.245722 0.776425
+v 0.097112 0.248870 0.784399
+v 0.097112 0.306322 0.761711
+v -0.092187 0.308481 0.787261
+v -0.095629 0.298969 0.802208
+v -0.097114 0.285224 0.808659
+v -0.097114 0.269968 0.808659
+v -0.095629 0.256223 0.802208
+v -0.092187 0.246712 0.787261
+v -0.099333 0.308481 0.782171
+v -0.112335 0.298969 0.790307
+v -0.117947 0.285224 0.793818
+v -0.117947 0.269968 0.793818
+v -0.112335 0.256223 0.790307
+v -0.099333 0.246712 0.782171
+v -0.100786 0.308481 0.773519
+v -0.115733 0.298969 0.770078
+v -0.122184 0.285224 0.768593
+v -0.122184 0.269968 0.768593
+v -0.115733 0.256223 0.770078
+v -0.100786 0.246712 0.773519
+v -0.095696 0.308481 0.766374
+v -0.103832 0.298969 0.753372
+v -0.107343 0.285224 0.747760
+v -0.107343 0.269968 0.747760
+v -0.103832 0.256223 0.753372
+v -0.095696 0.246712 0.766374
+v -0.087044 0.308481 0.764921
+v -0.083603 0.298969 0.749974
+v -0.082118 0.285224 0.743523
+v -0.082118 0.269968 0.743523
+v -0.083603 0.256223 0.749974
+v -0.087044 0.246712 0.764921
+v -0.079899 0.308481 0.770011
+v -0.066896 0.298969 0.761875
+v -0.061285 0.285224 0.758364
+v -0.061285 0.269968 0.758364
+v -0.066896 0.256223 0.761875
+v -0.079899 0.246712 0.770011
+v -0.078446 0.308481 0.778663
+v -0.063499 0.298969 0.782104
+v -0.057048 0.285224 0.783589
+v -0.057048 0.269968 0.783589
+v -0.063499 0.256223 0.782104
+v -0.078446 0.246712 0.778663
+v -0.083536 0.308481 0.785808
+v -0.075400 0.298969 0.798810
+v -0.071889 0.285224 0.804422
+v -0.071889 0.269968 0.804422
+v -0.075400 0.256223 0.798810
+v -0.083536 0.246712 0.785808
+v -0.089616 0.246712 0.776091
+v -0.089616 0.308481 0.776091
+v -0.193084 0.300424 0.705530
+v -0.177778 0.294244 0.698231
+v -0.171173 0.284613 0.688415
+v -0.171173 0.273592 0.677866
+v -0.177778 0.263364 0.668674
+v -0.193084 0.255801 0.662819
+v -0.195906 0.294681 0.711531
+v -0.184376 0.280814 0.712262
+v -0.179401 0.267866 0.705911
+v -0.179401 0.256845 0.695363
+v -0.184376 0.249934 0.682705
+v -0.195906 0.250057 0.668820
+v -0.203775 0.291999 0.714332
+v -0.202775 0.274544 0.718813
+v -0.202344 0.260048 0.714080
+v -0.202344 0.249026 0.703532
+v -0.202775 0.243664 0.689256
+v -0.203775 0.247376 0.671622
+v -0.212082 0.293950 0.712294
+v -0.222197 0.279106 0.714046
+v -0.226563 0.265736 0.708137
+v -0.226563 0.254715 0.697588
+v -0.222198 0.248226 0.684490
+v -0.212082 0.249327 0.669583
+v -0.215960 0.299391 0.706609
+v -0.231266 0.291828 0.700754
+v -0.237871 0.281601 0.691562
+v -0.237871 0.270580 0.681013
+v -0.231266 0.260948 0.671198
+v -0.215960 0.254768 0.663899
+v -0.213138 0.305135 0.700608
+v -0.224668 0.305258 0.686723
+v -0.229643 0.298347 0.674066
+v -0.229643 0.287326 0.663517
+v -0.224668 0.274378 0.657167
+v -0.213138 0.260512 0.657898
+v -0.205269 0.307817 0.697806
+v -0.206269 0.311528 0.680172
+v -0.206700 0.306166 0.665897
+v -0.206700 0.295145 0.655348
+v -0.206269 0.280648 0.650616
+v -0.205269 0.263193 0.655096
+v -0.196962 0.305865 0.699845
+v -0.186847 0.306966 0.684939
+v -0.182481 0.300477 0.671840
+v -0.182481 0.289456 0.661292
+v -0.186847 0.276086 0.655382
+v -0.196962 0.261242 0.657135
+v -0.204522 0.255285 0.663359
+v -0.204522 0.299908 0.706069
+v -0.240358 0.304978 0.802769
+v -0.228558 0.293342 0.795620
+v -0.222921 0.279167 0.795508
+v -0.222059 0.264680 0.800212
+v -0.226142 0.252752 0.808801
+v -0.236867 0.246323 0.821816
+v -0.237340 0.307684 0.810549
+v -0.221502 0.299670 0.813811
+v -0.214122 0.287057 0.818192
+v -0.213260 0.272570 0.822896
+v -0.219086 0.259079 0.826992
+v -0.233849 0.249029 0.829596
+v -0.241021 0.309945 0.818185
+v -0.230107 0.304955 0.831666
+v -0.224852 0.293648 0.840456
+v -0.223990 0.279161 0.845160
+v -0.227691 0.264365 0.844847
+v -0.237529 0.251290 0.837232
+v -0.249243 0.310436 0.821204
+v -0.249332 0.306103 0.838724
+v -0.248826 0.295079 0.849257
+v -0.247963 0.280593 0.853962
+v -0.246916 0.265512 0.851905
+v -0.245752 0.251781 0.840251
+v -0.257191 0.308869 0.817837
+v -0.267916 0.302441 0.830852
+v -0.271999 0.290512 0.839441
+v -0.271137 0.276026 0.844145
+v -0.265500 0.261850 0.844033
+v -0.253700 0.250214 0.836884
+v -0.260209 0.306163 0.810057
+v -0.274972 0.296113 0.812660
+v -0.280799 0.282622 0.816757
+v -0.279936 0.268136 0.821461
+v -0.272557 0.255523 0.825841
+v -0.256718 0.247508 0.829104
+v -0.256529 0.303903 0.802421
+v -0.266368 0.290828 0.794806
+v -0.270069 0.276031 0.794493
+v -0.269207 0.261544 0.799197
+v -0.263952 0.250237 0.807987
+v -0.253038 0.245247 0.821468
+v -0.248307 0.303412 0.799402
+v -0.247142 0.289680 0.787748
+v -0.246095 0.274600 0.785691
+v -0.245233 0.260113 0.790395
+v -0.244726 0.249089 0.800929
+v -0.244815 0.244757 0.818449
+v -0.245284 0.248269 0.829350
+v -0.248775 0.306924 0.810303
+v -0.095154 0.284513 0.854228
+v -0.084282 0.295683 0.863326
+v -0.079591 0.300867 0.876885
+v -0.079591 0.301441 0.892130
+v -0.084282 0.297293 0.906041
+v -0.095154 0.286839 0.915953
+v -0.103251 0.287887 0.854101
+v -0.103214 0.303573 0.863028
+v -0.103198 0.310705 0.876514
+v -0.103198 0.311279 0.891759
+v -0.103214 0.305182 0.905744
+v -0.103251 0.290213 0.915826
+v -0.111364 0.284552 0.854227
+v -0.122184 0.295774 0.863322
+v -0.126853 0.300980 0.876881
+v -0.126853 0.301555 0.892126
+v -0.122184 0.297384 0.906037
+v -0.111364 0.286878 0.915952
+v -0.114741 0.276461 0.854532
+v -0.130079 0.276856 0.864035
+v -0.136699 0.277389 0.877770
+v -0.136699 0.277964 0.893015
+v -0.130079 0.278466 0.906750
+v -0.114741 0.278787 0.916257
+v -0.111403 0.268353 0.854837
+v -0.122275 0.257900 0.864749
+v -0.126967 0.253751 0.878660
+v -0.126967 0.254326 0.893905
+v -0.122275 0.259509 0.907465
+v -0.111403 0.270679 0.916562
+v -0.103307 0.264979 0.854964
+v -0.103343 0.250010 0.865047
+v -0.103359 0.243913 0.879031
+v -0.103359 0.244487 0.894276
+v -0.103343 0.251619 0.907762
+v -0.103307 0.267305 0.916689
+v -0.095193 0.268314 0.854838
+v -0.084374 0.257808 0.864753
+v -0.079705 0.253638 0.878665
+v -0.079705 0.254212 0.893910
+v -0.084374 0.259418 0.907468
+v -0.095193 0.270640 0.916564
+v -0.091817 0.276406 0.854534
+v -0.076478 0.276727 0.864040
+v -0.069859 0.277228 0.877776
+v -0.069859 0.277803 0.893021
+v -0.076478 0.278336 0.906755
+v -0.091817 0.278732 0.916259
+v -0.103279 0.278759 0.916258
+v -0.103279 0.276433 0.854533
+v 0.046846 0.300086 0.894932
+v 0.060840 0.288695 0.894557
+v 0.066879 0.275913 0.888823
+v 0.066879 0.263464 0.880004
+v 0.060840 0.253814 0.869848
+v 0.046846 0.249682 0.859226
+v 0.040465 0.296606 0.899845
+v 0.045920 0.280558 0.906044
+v 0.048275 0.265766 0.903147
+v 0.048275 0.253317 0.894328
+v 0.045920 0.245677 0.881335
+v 0.040465 0.246202 0.864139
+v 0.031696 0.296753 0.899637
+v 0.025417 0.280902 0.905558
+v 0.022707 0.266195 0.902541
+v 0.022707 0.253746 0.893722
+v 0.025417 0.246021 0.880849
+v 0.031696 0.246349 0.863931
+v 0.025675 0.300441 0.894430
+v 0.011340 0.289526 0.893383
+v 0.005153 0.276949 0.887359
+v 0.005153 0.264500 0.878541
+v 0.011340 0.254645 0.868675
+v 0.025675 0.250038 0.858724
+v 0.025930 0.305510 0.887274
+v 0.011935 0.301378 0.876652
+v 0.005896 0.291728 0.866496
+v 0.005896 0.279280 0.857678
+v 0.011935 0.266498 0.851944
+v 0.025930 0.255107 0.851569
+v 0.032311 0.308990 0.882361
+v 0.026855 0.309515 0.865165
+v 0.024500 0.301875 0.852172
+v 0.024500 0.289427 0.843354
+v 0.026855 0.274635 0.840457
+v 0.032311 0.258587 0.846656
+v 0.041080 0.308843 0.882569
+v 0.047358 0.309171 0.865651
+v 0.050068 0.301446 0.852778
+v 0.050068 0.288997 0.843960
+v 0.047358 0.274290 0.840943
+v 0.041080 0.258439 0.846864
+v 0.047100 0.305155 0.887776
+v 0.061436 0.300547 0.877826
+v 0.067622 0.290692 0.867959
+v 0.067622 0.278243 0.859141
+v 0.061435 0.265666 0.853117
+v 0.047100 0.254751 0.852071
+v 0.036388 0.252394 0.855398
+v 0.036388 0.302798 0.891103
+v -0.071436 0.308745 0.952015
+v -0.057265 0.300554 0.959621
+v -0.051149 0.287562 0.964775
+v -0.051149 0.272597 0.967737
+v -0.057265 0.258622 0.967922
+v -0.071436 0.248152 0.964011
+v -0.077639 0.309949 0.958101
+v -0.071769 0.303371 0.973849
+v -0.069236 0.291075 0.982517
+v -0.069236 0.276110 0.985480
+v -0.071769 0.261439 0.982150
+v -0.077639 0.249356 0.970096
+v -0.086412 0.309949 0.958101
+v -0.092281 0.303371 0.973849
+v -0.094815 0.291075 0.982517
+v -0.094815 0.276110 0.985480
+v -0.092281 0.261439 0.982150
+v -0.086412 0.249356 0.970096
+v -0.092615 0.308745 0.952015
+v -0.106786 0.300554 0.959621
+v -0.112901 0.287563 0.964775
+v -0.112901 0.272597 0.967737
+v -0.106786 0.258622 0.967922
+v -0.092615 0.248152 0.964011
+v -0.092615 0.307041 0.943410
+v -0.106786 0.296570 0.939499
+v -0.112901 0.282595 0.939683
+v -0.112901 0.267630 0.942646
+v -0.106786 0.254639 0.947800
+v -0.092615 0.246448 0.955405
+v -0.086412 0.305836 0.937324
+v -0.092281 0.293753 0.925271
+v -0.094815 0.279083 0.921941
+v -0.094814 0.264117 0.924904
+v -0.092281 0.251822 0.933572
+v -0.086412 0.245243 0.949320
+v -0.077639 0.305836 0.937324
+v -0.071769 0.293753 0.925271
+v -0.069236 0.279083 0.921941
+v -0.069236 0.264117 0.924904
+v -0.071769 0.251822 0.933572
+v -0.077639 0.245243 0.949320
+v -0.071436 0.307041 0.943410
+v -0.057265 0.296570 0.939499
+v -0.051150 0.282595 0.939683
+v -0.051149 0.267630 0.942646
+v -0.057265 0.254639 0.947800
+v -0.071436 0.246448 0.955405
+v -0.082025 0.247300 0.959708
+v -0.082025 0.307893 0.947712
+v -0.071435 0.282064 1.172829
+v -0.057265 0.273758 1.165350
+v -0.051149 0.267465 1.152870
+v -0.051149 0.263179 1.138229
+v -0.057265 0.261748 1.124326
+v -0.071435 0.264709 1.113549
+v -0.077639 0.276111 1.174572
+v -0.071769 0.259838 1.169425
+v -0.069236 0.250107 1.157952
+v -0.069236 0.245821 1.143311
+v -0.071769 0.247828 1.128402
+v -0.077639 0.258755 1.115292
+v -0.086412 0.276110 1.174572
+v -0.092281 0.259838 1.169425
+v -0.094814 0.250107 1.157952
+v -0.094814 0.245821 1.143311
+v -0.092281 0.247828 1.128402
+v -0.086412 0.258755 1.115292
+v -0.092615 0.282064 1.172830
+v -0.106786 0.273758 1.165350
+v -0.112901 0.267465 1.152870
+v -0.112901 0.263179 1.138229
+v -0.106786 0.261748 1.124326
+v -0.092615 0.264709 1.113549
+v -0.092615 0.290483 1.170365
+v -0.106786 0.293444 1.159587
+v -0.112901 0.292013 1.145684
+v -0.112901 0.287727 1.131043
+v -0.106786 0.281434 1.118563
+v -0.092615 0.273128 1.111084
+v -0.086412 0.296437 1.168622
+v -0.092281 0.307364 1.155511
+v -0.094814 0.309371 1.140602
+v -0.094814 0.305085 1.125961
+v -0.092281 0.295354 1.114488
+v -0.086412 0.279082 1.109341
+v -0.077639 0.296437 1.168622
+v -0.071769 0.307364 1.155511
+v -0.069236 0.309371 1.140602
+v -0.069236 0.305085 1.125961
+v -0.071769 0.295354 1.114488
+v -0.077639 0.279082 1.109341
+v -0.071436 0.290483 1.170364
+v -0.057265 0.293444 1.159587
+v -0.051149 0.292013 1.145684
+v -0.051149 0.287727 1.131043
+v -0.057265 0.281434 1.118563
+v -0.071435 0.273128 1.111084
+v -0.082025 0.268919 1.112316
+v -0.082025 0.286274 1.171597
+v -0.032340 0.308481 1.023201
+v -0.041017 0.298969 1.010553
+v -0.044762 0.285224 1.005095
+v -0.044762 0.269968 1.005095
+v -0.041017 0.256223 1.010553
+v -0.032340 0.246712 1.023201
+v -0.023757 0.308481 1.021384
+v -0.020949 0.298969 1.006305
+v -0.019738 0.285224 0.999797
+v -0.019738 0.269968 0.999797
+v -0.020949 0.256223 1.006305
+v -0.023757 0.246712 1.021384
+v -0.016403 0.308481 1.026168
+v -0.003756 0.298969 1.017491
+v 0.001703 0.285224 1.013746
+v 0.001703 0.269968 1.013746
+v -0.003756 0.256223 1.017491
+v -0.016403 0.246712 1.026168
+v -0.014586 0.308481 1.034750
+v 0.000493 0.298969 1.037558
+v 0.007000 0.285224 1.038770
+v 0.007000 0.269968 1.038770
+v 0.000493 0.256223 1.037558
+v -0.014586 0.246712 1.034750
+v -0.019371 0.308481 1.042104
+v -0.010693 0.298969 1.054752
+v -0.006949 0.285224 1.060210
+v -0.006949 0.269968 1.060210
+v -0.010693 0.256223 1.054752
+v -0.019371 0.246712 1.042104
+v -0.027953 0.308481 1.043921
+v -0.030761 0.298969 1.059000
+v -0.031972 0.285224 1.065507
+v -0.031972 0.269968 1.065507
+v -0.030761 0.256223 1.059000
+v -0.027953 0.246712 1.043921
+v -0.035307 0.308481 1.039137
+v -0.047955 0.298969 1.047814
+v -0.053413 0.285224 1.051559
+v -0.053413 0.269968 1.051559
+v -0.047955 0.256223 1.047814
+v -0.035307 0.246712 1.039137
+v -0.037124 0.308481 1.030554
+v -0.052203 0.298969 1.027747
+v -0.058710 0.285224 1.026535
+v -0.058710 0.269968 1.026535
+v -0.052203 0.256223 1.027747
+v -0.037124 0.246712 1.030554
+v -0.025855 0.246712 1.032652
+v -0.025855 0.308481 1.032652
+v -0.161942 0.306039 1.018745
+v -0.177197 0.296735 1.016199
+v -0.183728 0.283739 1.011597
+v -0.183647 0.269526 1.006054
+v -0.176969 0.256912 1.000667
+v -0.161613 0.248492 0.996302
+v -0.159125 0.309072 1.011010
+v -0.170609 0.303826 0.998113
+v -0.175514 0.292581 0.989045
+v -0.175432 0.278369 0.983502
+v -0.170381 0.264003 0.982582
+v -0.158796 0.251525 0.988567
+v -0.151258 0.310522 1.007409
+v -0.152215 0.307216 0.989692
+v -0.152577 0.296808 0.978543
+v -0.152495 0.282596 0.973000
+v -0.151987 0.267392 0.974160
+v -0.150929 0.252975 0.984966
+v -0.142950 0.309539 1.010050
+v -0.132790 0.304919 0.995867
+v -0.128354 0.293944 0.986243
+v -0.128272 0.279731 0.980700
+v -0.132562 0.265095 0.980336
+v -0.142621 0.251992 0.987607
+v -0.139068 0.306700 1.017386
+v -0.123712 0.298280 1.013021
+v -0.117034 0.285666 1.007635
+v -0.116953 0.271453 1.002092
+v -0.123484 0.258457 0.997490
+v -0.138738 0.249153 0.994943
+v -0.141885 0.303667 1.025121
+v -0.130300 0.291190 1.031107
+v -0.125249 0.276824 1.030187
+v -0.125167 0.262611 1.024644
+v -0.130072 0.251366 1.015576
+v -0.141556 0.246121 1.002678
+v -0.149752 0.302217 1.028723
+v -0.148694 0.287800 1.039528
+v -0.148186 0.272597 1.040689
+v -0.148104 0.258384 1.035146
+v -0.148466 0.247976 1.023997
+v -0.149423 0.244671 1.006280
+v -0.158060 0.303200 1.026082
+v -0.168119 0.290097 1.033353
+v -0.172409 0.275461 1.032988
+v -0.172327 0.261249 1.027445
+v -0.167891 0.250274 1.017822
+v -0.157731 0.245653 1.003639
+v -0.150176 0.248823 0.995623
+v -0.150505 0.306369 1.018066
+v -0.252473 0.308481 1.060638
+v -0.238813 0.298969 1.067614
+v -0.232918 0.285224 1.070625
+v -0.232918 0.269968 1.070625
+v -0.238813 0.256223 1.067614
+v -0.252473 0.246712 1.060638
+v -0.259149 0.308481 1.066329
+v -0.254424 0.298969 1.080921
+v -0.252384 0.285224 1.087218
+v -0.252384 0.269968 1.087218
+v -0.254424 0.256223 1.080921
+v -0.259149 0.246712 1.066329
+v -0.267895 0.308481 1.065632
+v -0.274871 0.298969 1.079292
+v -0.277882 0.285224 1.085187
+v -0.277882 0.269968 1.085187
+v -0.274871 0.256223 1.079292
+v -0.267895 0.246712 1.065632
+v -0.273586 0.308481 1.058956
+v -0.288178 0.298969 1.063681
+v -0.294475 0.285224 1.065721
+v -0.294475 0.269968 1.065721
+v -0.288178 0.256223 1.063681
+v -0.273586 0.246712 1.058956
+v -0.272889 0.308481 1.050210
+v -0.286549 0.298969 1.043234
+v -0.292444 0.285224 1.040223
+v -0.292444 0.269968 1.040223
+v -0.286549 0.256223 1.043234
+v -0.272889 0.246712 1.050210
+v -0.266212 0.308481 1.044519
+v -0.270938 0.298969 1.029927
+v -0.272977 0.285224 1.023630
+v -0.272978 0.269968 1.023630
+v -0.270938 0.256223 1.029927
+v -0.266212 0.246712 1.044519
+v -0.257467 0.308481 1.045216
+v -0.250491 0.298969 1.031556
+v -0.247480 0.285224 1.025661
+v -0.247480 0.269968 1.025661
+v -0.250491 0.256223 1.031556
+v -0.257467 0.246712 1.045216
+v -0.251776 0.308481 1.051893
+v -0.237184 0.298969 1.047167
+v -0.230887 0.285224 1.045128
+v -0.230887 0.269968 1.045128
+v -0.237184 0.256223 1.047167
+v -0.251776 0.246712 1.051893
+v -0.262681 0.246712 1.055424
+v -0.262681 0.308481 1.055424
+v -0.198570 0.307541 1.100975
+v -0.189976 0.308186 1.116832
+v -0.186267 0.300989 1.129762
+v -0.186267 0.289158 1.139394
+v -0.189976 0.275038 1.143821
+v -0.198570 0.259640 1.139975
+v -0.207164 0.308652 1.102340
+v -0.210071 0.310785 1.120025
+v -0.211325 0.304230 1.133743
+v -0.211325 0.292400 1.143375
+v -0.210071 0.277637 1.147014
+v -0.207164 0.260752 1.141340
+v -0.214487 0.305601 1.098593
+v -0.227191 0.303652 1.111263
+v -0.232673 0.295335 1.122818
+v -0.232673 0.283504 1.132450
+v -0.227191 0.270504 1.138252
+v -0.214486 0.257701 1.137593
+v -0.216247 0.300175 1.091928
+v -0.231308 0.290964 1.095680
+v -0.237807 0.279513 1.103386
+v -0.237807 0.267683 1.113018
+v -0.231308 0.257816 1.122669
+v -0.216247 0.252275 1.130928
+v -0.211415 0.295552 1.086250
+v -0.220009 0.280154 1.082404
+v -0.223718 0.266034 1.086831
+v -0.223718 0.254204 1.096463
+v -0.220009 0.247007 1.109393
+v -0.211415 0.247652 1.125250
+v -0.202821 0.294440 1.084885
+v -0.199915 0.277555 1.079211
+v -0.198660 0.262793 1.082850
+v -0.198660 0.250962 1.092482
+v -0.199915 0.244407 1.106200
+v -0.202821 0.246540 1.123885
+v -0.195499 0.297491 1.088632
+v -0.182794 0.284689 1.087973
+v -0.177312 0.271688 1.093775
+v -0.177312 0.259858 1.103407
+v -0.182794 0.251541 1.114962
+v -0.195499 0.249591 1.127632
+v -0.193738 0.302917 1.095297
+v -0.178677 0.297376 1.103556
+v -0.172178 0.287509 1.113207
+v -0.172178 0.275679 1.122839
+v -0.178677 0.264228 1.130545
+v -0.193738 0.255017 1.134297
+v -0.204993 0.253646 1.132612
+v -0.204993 0.301546 1.093612
+v -0.236069 0.306417 1.198634
+v -0.220772 0.298078 1.193920
+v -0.214171 0.285585 1.188167
+v -0.214171 0.271510 1.182282
+v -0.220772 0.258641 1.177430
+v -0.236069 0.249428 1.174806
+v -0.238819 0.303203 1.206320
+v -0.227202 0.290564 1.211891
+v -0.222189 0.276215 1.210576
+v -0.222189 0.262140 1.204691
+v -0.227202 0.251127 1.195401
+v -0.238819 0.246215 1.182492
+v -0.246654 0.301681 1.209960
+v -0.245522 0.287004 1.220404
+v -0.245033 0.271777 1.221192
+v -0.245033 0.257702 1.215307
+v -0.245522 0.247567 1.203914
+v -0.246654 0.244692 1.186132
+v -0.254984 0.302741 1.207423
+v -0.265000 0.289484 1.214472
+v -0.269322 0.274870 1.213795
+v -0.269323 0.260795 1.207910
+v -0.265000 0.250048 1.197982
+v -0.254984 0.245753 1.183595
+v -0.258931 0.305764 1.200195
+v -0.274227 0.296552 1.197570
+v -0.280828 0.283682 1.192718
+v -0.280828 0.269607 1.186833
+v -0.274227 0.257115 1.181080
+v -0.258931 0.248776 1.176367
+v -0.256181 0.308978 1.192509
+v -0.267798 0.304066 1.179599
+v -0.272811 0.293052 1.170309
+v -0.272811 0.278977 1.164424
+v -0.267798 0.264629 1.163109
+v -0.256181 0.251989 1.168681
+v -0.248346 0.310500 1.188868
+v -0.249478 0.307625 1.171086
+v -0.249966 0.297490 1.159694
+v -0.249967 0.283416 1.153809
+v -0.249478 0.268188 1.154597
+v -0.248346 0.253512 1.165040
+v -0.240015 0.309439 1.191405
+v -0.229999 0.305145 1.177018
+v -0.225677 0.294398 1.167091
+v -0.225677 0.280323 1.161206
+v -0.229999 0.265708 1.160528
+v -0.240015 0.252451 1.167577
+v -0.247500 0.249102 1.175586
+v -0.247500 0.306090 1.199414
+vt 0.134614 0.962713
+vt 0.127867 0.925037
+vt 0.151447 0.925037
+vt 0.157272 0.824939
+vt 0.164019 0.787263
+vt 0.174105 0.787263
+vt 0.151448 0.824939
+vt 0.127867 0.824939
+vt 0.134615 0.787263
+vt 0.154360 0.891827
+vt 0.154360 0.858149
+vt 0.183765 0.858149
+vt 0.157272 0.925037
+vt 0.183765 0.891827
+vt 0.124954 0.891827
+vt 0.124955 0.858149
+vt 0.095550 0.858149
+vt 0.098462 0.824939
+vt 0.075804 0.962713
+vt 0.069057 0.925037
+vt 0.092638 0.925037
+vt 0.105209 0.787263
+vt 0.115295 0.787263
+vt 0.066145 0.891827
+vt 0.095550 0.891827
+vt 0.098462 0.925037
+vt 0.046399 0.962713
+vt 0.039652 0.925037
+vt 0.063233 0.925037
+vt 0.069057 0.824939
+vt 0.075804 0.787263
+vt 0.085890 0.787263
+vt 0.066145 0.858149
+vt 0.092638 0.824939
+vt 0.036740 0.891827
+vt 0.016994 0.962713
+vt 0.010247 0.925037
+vt 0.033828 0.925037
+vt 0.039652 0.824939
+vt 0.046399 0.787263
+vt 0.056485 0.787263
+vt 0.036740 0.858149
+vt 0.063233 0.824939
+vt 0.210258 0.824939
+vt 0.186677 0.824939
+vt 0.193425 0.787263
+vt 0.222811 0.962720
+vt 0.216070 0.925039
+vt 0.239651 0.925055
+vt 0.010247 0.824939
+vt 0.016994 0.787263
+vt 0.027080 0.787263
+vt 0.007335 0.858149
+vt 0.033828 0.824939
+vt 0.007335 0.891827
+vt 0.193424 0.962713
+vt 0.186676 0.925037
+vt 0.210257 0.925037
+vt 0.216087 0.824941
+vt 0.222842 0.787270
+vt 0.232927 0.787276
+vt 0.213170 0.858149
+vt 0.239669 0.824957
+vt 0.213164 0.891827
+vt 0.242575 0.858169
+vt 0.242569 0.891847
+vt 0.174105 0.962713
+vt 0.164019 0.962713
+vt 0.203510 0.787263
+vt 0.198467 0.763886
+vt 0.227889 0.763896
+vt 0.022037 0.763885
+vt 0.051442 0.763885
+vt 0.080847 0.763885
+vt 0.110252 0.763885
+vt 0.144700 0.787263
+vt 0.139657 0.763885
+vt 0.169062 0.986090
+vt 0.144700 0.962713
+vt 0.139657 0.986090
+vt 0.105209 0.962713
+vt 0.115295 0.962713
+vt 0.110252 0.986090
+vt 0.085890 0.962713
+vt 0.080847 0.986090
+vt 0.056485 0.962713
+vt 0.051442 0.986090
+vt 0.122042 0.925037
+vt 0.027080 0.962713
+vt 0.022037 0.986090
+vt 0.232896 0.962726
+vt 0.227849 0.986100
+vt 0.203510 0.962713
+vt 0.198467 0.986091
+vt 0.169062 0.763886
+vt 0.180853 0.824939
+vt 0.180852 0.925037
+vt 0.122042 0.824939
+vt 0.634614 0.212713
+vt 0.627867 0.175037
+vt 0.651448 0.175037
+vt 0.657272 0.074939
+vt 0.664020 0.037263
+vt 0.674105 0.037263
+vt 0.651448 0.074939
+vt 0.627867 0.074939
+vt 0.634615 0.037263
+vt 0.654360 0.141827
+vt 0.654360 0.108149
+vt 0.683764 0.108149
+vt 0.657272 0.175037
+vt 0.683764 0.141827
+vt 0.624955 0.141827
+vt 0.624955 0.108149
+vt 0.595549 0.108149
+vt 0.598462 0.074939
+vt 0.575804 0.212713
+vt 0.569057 0.175037
+vt 0.592638 0.175037
+vt 0.605209 0.037263
+vt 0.615295 0.037263
+vt 0.566145 0.141827
+vt 0.595549 0.141827
+vt 0.598462 0.175037
+vt 0.546399 0.212713
+vt 0.539652 0.175037
+vt 0.563233 0.175037
+vt 0.569057 0.074939
+vt 0.575804 0.037263
+vt 0.585890 0.037263
+vt 0.566145 0.108149
+vt 0.592638 0.074939
+vt 0.536740 0.141827
+vt 0.516994 0.212713
+vt 0.510247 0.175037
+vt 0.533828 0.175037
+vt 0.539652 0.074939
+vt 0.546399 0.037263
+vt 0.556485 0.037263
+vt 0.536740 0.108149
+vt 0.563233 0.074939
+vt 0.710258 0.074939
+vt 0.686677 0.074939
+vt 0.693424 0.037263
+vt 0.722811 0.212720
+vt 0.716070 0.175039
+vt 0.739650 0.175055
+vt 0.510247 0.074939
+vt 0.516994 0.037263
+vt 0.527080 0.037263
+vt 0.507335 0.108149
+vt 0.533828 0.074939
+vt 0.507335 0.141827
+vt 0.693424 0.212713
+vt 0.686676 0.175037
+vt 0.710258 0.175037
+vt 0.716088 0.074941
+vt 0.722842 0.037270
+vt 0.732927 0.037276
+vt 0.713170 0.108149
+vt 0.739669 0.074957
+vt 0.713163 0.141827
+vt 0.742575 0.108169
+vt 0.742568 0.141847
+vt 0.674105 0.212713
+vt 0.664019 0.212713
+vt 0.703510 0.037263
+vt 0.698467 0.013886
+vt 0.727889 0.013896
+vt 0.522037 0.013885
+vt 0.551442 0.013885
+vt 0.580847 0.013885
+vt 0.610252 0.013885
+vt 0.644700 0.037263
+vt 0.639657 0.013885
+vt 0.669062 0.236090
+vt 0.644700 0.212713
+vt 0.639657 0.236090
+vt 0.605209 0.212713
+vt 0.615295 0.212713
+vt 0.610252 0.236090
+vt 0.585890 0.212713
+vt 0.580847 0.236090
+vt 0.556485 0.212713
+vt 0.551442 0.236090
+vt 0.622043 0.175037
+vt 0.527080 0.212713
+vt 0.522037 0.236090
+vt 0.732896 0.212726
+vt 0.727849 0.236100
+vt 0.703510 0.212713
+vt 0.698467 0.236091
+vt 0.669062 0.013886
+vt 0.680853 0.074939
+vt 0.680852 0.175037
+vt 0.622043 0.074939
+vt 0.634614 0.962713
+vt 0.627867 0.925037
+vt 0.651448 0.925037
+vt 0.657272 0.824939
+vt 0.664020 0.787263
+vt 0.674105 0.787263
+vt 0.651448 0.824939
+vt 0.627867 0.824939
+vt 0.634615 0.787263
+vt 0.654360 0.891827
+vt 0.654360 0.858149
+vt 0.683764 0.858149
+vt 0.657272 0.925037
+vt 0.683764 0.891827
+vt 0.624955 0.891827
+vt 0.624955 0.858149
+vt 0.595549 0.858149
+vt 0.598462 0.824939
+vt 0.575804 0.962713
+vt 0.569057 0.925037
+vt 0.592638 0.925037
+vt 0.605209 0.787263
+vt 0.615295 0.787263
+vt 0.566145 0.891827
+vt 0.595549 0.891827
+vt 0.598462 0.925037
+vt 0.546399 0.962713
+vt 0.539652 0.925037
+vt 0.563233 0.925037
+vt 0.569057 0.824939
+vt 0.575804 0.787263
+vt 0.585890 0.787263
+vt 0.566145 0.858149
+vt 0.592638 0.824939
+vt 0.536740 0.891827
+vt 0.516994 0.962713
+vt 0.510247 0.925037
+vt 0.533828 0.925037
+vt 0.539652 0.824939
+vt 0.546399 0.787263
+vt 0.556485 0.787263
+vt 0.536740 0.858149
+vt 0.563233 0.824939
+vt 0.710258 0.824939
+vt 0.686677 0.824939
+vt 0.693424 0.787263
+vt 0.722811 0.962720
+vt 0.716070 0.925039
+vt 0.739650 0.925055
+vt 0.510247 0.824939
+vt 0.516994 0.787263
+vt 0.527080 0.787263
+vt 0.507335 0.858149
+vt 0.533828 0.824939
+vt 0.507335 0.891827
+vt 0.693424 0.962713
+vt 0.686676 0.925037
+vt 0.710258 0.925037
+vt 0.716088 0.824941
+vt 0.722842 0.787270
+vt 0.732927 0.787276
+vt 0.713170 0.858149
+vt 0.739669 0.824957
+vt 0.713163 0.891827
+vt 0.742575 0.858169
+vt 0.742568 0.891847
+vt 0.674105 0.962713
+vt 0.664019 0.962713
+vt 0.703510 0.787263
+vt 0.698467 0.763886
+vt 0.727889 0.763896
+vt 0.522037 0.763885
+vt 0.551442 0.763885
+vt 0.580847 0.763885
+vt 0.610252 0.763885
+vt 0.644700 0.787263
+vt 0.639657 0.763885
+vt 0.669062 0.986090
+vt 0.644700 0.962713
+vt 0.639657 0.986090
+vt 0.605209 0.962713
+vt 0.615295 0.962713
+vt 0.610252 0.986090
+vt 0.585890 0.962713
+vt 0.580847 0.986090
+vt 0.556485 0.962713
+vt 0.551442 0.986090
+vt 0.622043 0.925037
+vt 0.527080 0.962713
+vt 0.522037 0.986090
+vt 0.732896 0.962726
+vt 0.727849 0.986100
+vt 0.703510 0.962713
+vt 0.698467 0.986091
+vt 0.669062 0.763886
+vt 0.680853 0.824939
+vt 0.680852 0.925037
+vt 0.622043 0.824939
+vt 0.634614 0.462713
+vt 0.627867 0.425037
+vt 0.651448 0.425037
+vt 0.657272 0.324939
+vt 0.664020 0.287263
+vt 0.674105 0.287263
+vt 0.651448 0.324939
+vt 0.627867 0.324939
+vt 0.634615 0.287263
+vt 0.654360 0.391827
+vt 0.654360 0.358149
+vt 0.683764 0.358149
+vt 0.657272 0.425037
+vt 0.683764 0.391827
+vt 0.624955 0.391827
+vt 0.624955 0.358149
+vt 0.595549 0.358149
+vt 0.598462 0.324939
+vt 0.575804 0.462713
+vt 0.569057 0.425037
+vt 0.592638 0.425037
+vt 0.605209 0.287263
+vt 0.615295 0.287263
+vt 0.566145 0.391827
+vt 0.595549 0.391827
+vt 0.598462 0.425037
+vt 0.546399 0.462713
+vt 0.539652 0.425037
+vt 0.563233 0.425037
+vt 0.569057 0.324939
+vt 0.575804 0.287263
+vt 0.585890 0.287263
+vt 0.566145 0.358149
+vt 0.592638 0.324939
+vt 0.536740 0.391827
+vt 0.516994 0.462713
+vt 0.510247 0.425037
+vt 0.533828 0.425037
+vt 0.539652 0.324939
+vt 0.546399 0.287263
+vt 0.556485 0.287263
+vt 0.536740 0.358149
+vt 0.563233 0.324939
+vt 0.710258 0.324939
+vt 0.686677 0.324939
+vt 0.693424 0.287263
+vt 0.722811 0.462720
+vt 0.716070 0.425039
+vt 0.739650 0.425055
+vt 0.510247 0.324939
+vt 0.516994 0.287263
+vt 0.527080 0.287263
+vt 0.507335 0.358149
+vt 0.533828 0.324939
+vt 0.507335 0.391827
+vt 0.693424 0.462713
+vt 0.686676 0.425037
+vt 0.710258 0.425037
+vt 0.716088 0.324941
+vt 0.722842 0.287270
+vt 0.732927 0.287276
+vt 0.713170 0.358149
+vt 0.739669 0.324957
+vt 0.713163 0.391827
+vt 0.742575 0.358169
+vt 0.742568 0.391846
+vt 0.674105 0.462713
+vt 0.664019 0.462713
+vt 0.703510 0.287263
+vt 0.698467 0.263886
+vt 0.727889 0.263896
+vt 0.522037 0.263885
+vt 0.551442 0.263885
+vt 0.580847 0.263885
+vt 0.610252 0.263885
+vt 0.644700 0.287263
+vt 0.639657 0.263885
+vt 0.669062 0.486090
+vt 0.644700 0.462713
+vt 0.639657 0.486090
+vt 0.605209 0.462713
+vt 0.615295 0.462713
+vt 0.610252 0.486090
+vt 0.585890 0.462713
+vt 0.580847 0.486090
+vt 0.556485 0.462713
+vt 0.551442 0.486090
+vt 0.622043 0.425037
+vt 0.527080 0.462713
+vt 0.522037 0.486090
+vt 0.732896 0.462726
+vt 0.727849 0.486100
+vt 0.703510 0.462713
+vt 0.698467 0.486091
+vt 0.669062 0.263886
+vt 0.680853 0.324939
+vt 0.680852 0.425037
+vt 0.622043 0.324939
+vt 0.134614 0.712713
+vt 0.127866 0.675037
+vt 0.151447 0.675037
+vt 0.157272 0.574939
+vt 0.164019 0.537263
+vt 0.174105 0.537263
+vt 0.151448 0.574939
+vt 0.127867 0.574939
+vt 0.134615 0.537263
+vt 0.154360 0.641827
+vt 0.154360 0.608149
+vt 0.183765 0.608149
+vt 0.157272 0.675037
+vt 0.183765 0.641827
+vt 0.124954 0.641827
+vt 0.124955 0.608149
+vt 0.095550 0.608149
+vt 0.098462 0.574939
+vt 0.075804 0.712713
+vt 0.069057 0.675037
+vt 0.092638 0.675037
+vt 0.105209 0.537263
+vt 0.115295 0.537263
+vt 0.066145 0.641827
+vt 0.095550 0.641827
+vt 0.098462 0.675037
+vt 0.046399 0.712713
+vt 0.039652 0.675037
+vt 0.063233 0.675037
+vt 0.069057 0.574939
+vt 0.075804 0.537263
+vt 0.085890 0.537263
+vt 0.066145 0.608149
+vt 0.092638 0.574939
+vt 0.036740 0.641827
+vt 0.016994 0.712713
+vt 0.010247 0.675037
+vt 0.033828 0.675037
+vt 0.039652 0.574939
+vt 0.046399 0.537263
+vt 0.056485 0.537263
+vt 0.036740 0.608149
+vt 0.063233 0.574939
+vt 0.210258 0.574939
+vt 0.186677 0.574939
+vt 0.193425 0.537263
+vt 0.222811 0.712720
+vt 0.216070 0.675039
+vt 0.239651 0.675055
+vt 0.010247 0.574939
+vt 0.016994 0.537263
+vt 0.027080 0.537263
+vt 0.007335 0.608149
+vt 0.033828 0.574939
+vt 0.007335 0.641827
+vt 0.193424 0.712713
+vt 0.186676 0.675037
+vt 0.210257 0.675037
+vt 0.216087 0.574941
+vt 0.222842 0.537270
+vt 0.232927 0.537276
+vt 0.213170 0.608149
+vt 0.239669 0.574957
+vt 0.213164 0.641827
+vt 0.242575 0.608169
+vt 0.242569 0.641847
+vt 0.174105 0.712713
+vt 0.164019 0.712713
+vt 0.203510 0.537263
+vt 0.198467 0.513886
+vt 0.227889 0.513896
+vt 0.022037 0.513885
+vt 0.051442 0.513885
+vt 0.080847 0.513885
+vt 0.110252 0.513885
+vt 0.144700 0.537263
+vt 0.139657 0.513885
+vt 0.169062 0.736090
+vt 0.144700 0.712713
+vt 0.139657 0.736090
+vt 0.105209 0.712713
+vt 0.115295 0.712713
+vt 0.110252 0.736090
+vt 0.085890 0.712713
+vt 0.080847 0.736090
+vt 0.056485 0.712713
+vt 0.051442 0.736090
+vt 0.122042 0.675037
+vt 0.027080 0.712713
+vt 0.022037 0.736090
+vt 0.232896 0.712726
+vt 0.227849 0.736100
+vt 0.203510 0.712713
+vt 0.198467 0.736091
+vt 0.169062 0.513886
+vt 0.180853 0.574939
+vt 0.180852 0.675037
+vt 0.122042 0.574939
+vt 0.634614 0.712713
+vt 0.627867 0.675037
+vt 0.651448 0.675037
+vt 0.657272 0.574939
+vt 0.664020 0.537263
+vt 0.674105 0.537263
+vt 0.651448 0.574939
+vt 0.627867 0.574939
+vt 0.634615 0.537263
+vt 0.654360 0.641827
+vt 0.654360 0.608149
+vt 0.683764 0.608149
+vt 0.657272 0.675037
+vt 0.683764 0.641827
+vt 0.624955 0.641827
+vt 0.624955 0.608149
+vt 0.595549 0.608149
+vt 0.598462 0.574939
+vt 0.575804 0.712713
+vt 0.569057 0.675037
+vt 0.592638 0.675037
+vt 0.605209 0.537263
+vt 0.615295 0.537263
+vt 0.566145 0.641827
+vt 0.595549 0.641827
+vt 0.598462 0.675037
+vt 0.546399 0.712713
+vt 0.539652 0.675037
+vt 0.563233 0.675037
+vt 0.569057 0.574939
+vt 0.575804 0.537263
+vt 0.585890 0.537263
+vt 0.566145 0.608149
+vt 0.592638 0.574939
+vt 0.536740 0.641827
+vt 0.516994 0.712713
+vt 0.510247 0.675037
+vt 0.533828 0.675037
+vt 0.539652 0.574939
+vt 0.546399 0.537263
+vt 0.556485 0.537263
+vt 0.536740 0.608149
+vt 0.563233 0.574939
+vt 0.710258 0.574939
+vt 0.686677 0.574939
+vt 0.693424 0.537263
+vt 0.722811 0.712720
+vt 0.716070 0.675039
+vt 0.739650 0.675055
+vt 0.510247 0.574939
+vt 0.516994 0.537263
+vt 0.527080 0.537263
+vt 0.507335 0.608149
+vt 0.533828 0.574939
+vt 0.507335 0.641827
+vt 0.693424 0.712713
+vt 0.686676 0.675037
+vt 0.710258 0.675037
+vt 0.716088 0.574941
+vt 0.722842 0.537270
+vt 0.732927 0.537276
+vt 0.713170 0.608149
+vt 0.739669 0.574957
+vt 0.713163 0.641827
+vt 0.742575 0.608169
+vt 0.742568 0.641847
+vt 0.674105 0.712713
+vt 0.664019 0.712713
+vt 0.703510 0.537263
+vt 0.698467 0.513886
+vt 0.727889 0.513896
+vt 0.522037 0.513885
+vt 0.551442 0.513885
+vt 0.580847 0.513885
+vt 0.610252 0.513885
+vt 0.644700 0.537263
+vt 0.639657 0.513885
+vt 0.669062 0.736090
+vt 0.644700 0.712713
+vt 0.639657 0.736090
+vt 0.605209 0.712713
+vt 0.615295 0.712713
+vt 0.610252 0.736090
+vt 0.585890 0.712713
+vt 0.580847 0.736090
+vt 0.556485 0.712713
+vt 0.551442 0.736090
+vt 0.622043 0.675037
+vt 0.527080 0.712713
+vt 0.522037 0.736090
+vt 0.732896 0.712726
+vt 0.727849 0.736100
+vt 0.703510 0.712713
+vt 0.698467 0.736091
+vt 0.669062 0.513886
+vt 0.680853 0.574939
+vt 0.680852 0.675037
+vt 0.622043 0.574939
+vt 0.134614 0.212713
+vt 0.127866 0.175037
+vt 0.151447 0.175037
+vt 0.157272 0.074939
+vt 0.164019 0.037263
+vt 0.174105 0.037263
+vt 0.151448 0.074939
+vt 0.127867 0.074939
+vt 0.134615 0.037263
+vt 0.154360 0.141827
+vt 0.154360 0.108149
+vt 0.183765 0.108149
+vt 0.157272 0.175037
+vt 0.183765 0.141827
+vt 0.124954 0.141827
+vt 0.124955 0.108149
+vt 0.095550 0.108149
+vt 0.098462 0.074939
+vt 0.075804 0.212713
+vt 0.069057 0.175037
+vt 0.092638 0.175037
+vt 0.105209 0.037263
+vt 0.115295 0.037263
+vt 0.066145 0.141827
+vt 0.095550 0.141827
+vt 0.098462 0.175037
+vt 0.046399 0.212713
+vt 0.039652 0.175037
+vt 0.063233 0.175037
+vt 0.069057 0.074939
+vt 0.075804 0.037263
+vt 0.085890 0.037263
+vt 0.066145 0.108149
+vt 0.092638 0.074939
+vt 0.036740 0.141827
+vt 0.016994 0.212713
+vt 0.010247 0.175037
+vt 0.033828 0.175037
+vt 0.039652 0.074939
+vt 0.046399 0.037263
+vt 0.056485 0.037263
+vt 0.036740 0.108149
+vt 0.063233 0.074939
+vt 0.210258 0.074939
+vt 0.186677 0.074939
+vt 0.193425 0.037263
+vt 0.222811 0.212720
+vt 0.216070 0.175039
+vt 0.239651 0.175055
+vt 0.010247 0.074939
+vt 0.016994 0.037263
+vt 0.027080 0.037263
+vt 0.007335 0.108149
+vt 0.033828 0.074939
+vt 0.007335 0.141827
+vt 0.193424 0.212713
+vt 0.186676 0.175037
+vt 0.210257 0.175037
+vt 0.216087 0.074941
+vt 0.222842 0.037270
+vt 0.232927 0.037276
+vt 0.213170 0.108149
+vt 0.239669 0.074957
+vt 0.213164 0.141827
+vt 0.242575 0.108169
+vt 0.242569 0.141847
+vt 0.174105 0.212713
+vt 0.164019 0.212713
+vt 0.203510 0.037263
+vt 0.198467 0.013886
+vt 0.227889 0.013896
+vt 0.022037 0.013885
+vt 0.051442 0.013885
+vt 0.080847 0.013885
+vt 0.110252 0.013885
+vt 0.144700 0.037263
+vt 0.139657 0.013885
+vt 0.169062 0.236090
+vt 0.144700 0.212713
+vt 0.139657 0.236090
+vt 0.105209 0.212713
+vt 0.115295 0.212713
+vt 0.110252 0.236090
+vt 0.085890 0.212713
+vt 0.080847 0.236090
+vt 0.056485 0.212713
+vt 0.051442 0.236090
+vt 0.122042 0.175037
+vt 0.027080 0.212713
+vt 0.022037 0.236090
+vt 0.232896 0.212726
+vt 0.227849 0.236100
+vt 0.203510 0.212713
+vt 0.198467 0.236091
+vt 0.169062 0.013886
+vt 0.180853 0.074939
+vt 0.180852 0.175037
+vt 0.122042 0.074939
+vt 0.134614 0.462713
+vt 0.127866 0.425037
+vt 0.151447 0.425037
+vt 0.157272 0.324939
+vt 0.164019 0.287263
+vt 0.174105 0.287263
+vt 0.151448 0.324939
+vt 0.127867 0.324939
+vt 0.134615 0.287263
+vt 0.154360 0.391827
+vt 0.154360 0.358149
+vt 0.183765 0.358149
+vt 0.157272 0.425037
+vt 0.183765 0.391827
+vt 0.124954 0.391827
+vt 0.124955 0.358149
+vt 0.095550 0.358149
+vt 0.098462 0.324939
+vt 0.075804 0.462713
+vt 0.069057 0.425037
+vt 0.092638 0.425037
+vt 0.105209 0.287263
+vt 0.115295 0.287263
+vt 0.066145 0.391827
+vt 0.095550 0.391827
+vt 0.098462 0.425037
+vt 0.046399 0.462713
+vt 0.039652 0.425037
+vt 0.063233 0.425037
+vt 0.069057 0.324939
+vt 0.075804 0.287263
+vt 0.085890 0.287263
+vt 0.066145 0.358149
+vt 0.092638 0.324939
+vt 0.036740 0.391827
+vt 0.016994 0.462713
+vt 0.010247 0.425037
+vt 0.033828 0.425037
+vt 0.039652 0.324939
+vt 0.046399 0.287263
+vt 0.056485 0.287263
+vt 0.036740 0.358149
+vt 0.063233 0.324939
+vt 0.210258 0.324939
+vt 0.186677 0.324939
+vt 0.193425 0.287263
+vt 0.222811 0.462720
+vt 0.216070 0.425039
+vt 0.239651 0.425055
+vt 0.010247 0.324939
+vt 0.016994 0.287263
+vt 0.027080 0.287263
+vt 0.007335 0.358149
+vt 0.033828 0.324939
+vt 0.007335 0.391827
+vt 0.193424 0.462713
+vt 0.186676 0.425037
+vt 0.210257 0.425037
+vt 0.216087 0.324941
+vt 0.222842 0.287270
+vt 0.232927 0.287276
+vt 0.213170 0.358149
+vt 0.239669 0.324957
+vt 0.213164 0.391827
+vt 0.242575 0.358169
+vt 0.242569 0.391846
+vt 0.174105 0.462713
+vt 0.164019 0.462713
+vt 0.203510 0.287263
+vt 0.198467 0.263886
+vt 0.227889 0.263896
+vt 0.022037 0.263885
+vt 0.051442 0.263885
+vt 0.080847 0.263885
+vt 0.110252 0.263885
+vt 0.144700 0.287263
+vt 0.139657 0.263885
+vt 0.169062 0.486090
+vt 0.144700 0.462713
+vt 0.139657 0.486090
+vt 0.105209 0.462713
+vt 0.115295 0.462713
+vt 0.110252 0.486090
+vt 0.085890 0.462713
+vt 0.080847 0.486090
+vt 0.056485 0.462713
+vt 0.051442 0.486090
+vt 0.122042 0.425037
+vt 0.027080 0.462713
+vt 0.022037 0.486090
+vt 0.232896 0.462726
+vt 0.227849 0.486100
+vt 0.203510 0.462713
+vt 0.198467 0.486091
+vt 0.169062 0.263886
+vt 0.180853 0.324939
+vt 0.180852 0.425037
+vt 0.122042 0.324939
+vt 0.884614 0.712713
+vt 0.877867 0.675037
+vt 0.901448 0.675037
+vt 0.907272 0.574939
+vt 0.914020 0.537263
+vt 0.924105 0.537263
+vt 0.901448 0.574939
+vt 0.877867 0.574939
+vt 0.884614 0.537263
+vt 0.904359 0.641827
+vt 0.904359 0.608149
+vt 0.933765 0.608149
+vt 0.907271 0.675037
+vt 0.933765 0.641827
+vt 0.874955 0.641827
+vt 0.874955 0.608149
+vt 0.845550 0.608149
+vt 0.848462 0.574939
+vt 0.825805 0.712713
+vt 0.819057 0.675037
+vt 0.842638 0.675037
+vt 0.855210 0.537263
+vt 0.865295 0.537263
+vt 0.816145 0.641827
+vt 0.845550 0.641827
+vt 0.848462 0.675037
+vt 0.796399 0.712713
+vt 0.789652 0.675037
+vt 0.813233 0.675037
+vt 0.819057 0.574939
+vt 0.825805 0.537263
+vt 0.835890 0.537263
+vt 0.816145 0.608149
+vt 0.842638 0.574939
+vt 0.786739 0.641827
+vt 0.766994 0.712713
+vt 0.760247 0.675037
+vt 0.783828 0.675037
+vt 0.789652 0.574939
+vt 0.796399 0.537263
+vt 0.806485 0.537263
+vt 0.786739 0.608149
+vt 0.813233 0.574939
+vt 0.960258 0.574939
+vt 0.936677 0.574939
+vt 0.943425 0.537263
+vt 0.972811 0.712720
+vt 0.966069 0.675039
+vt 0.989650 0.675055
+vt 0.760247 0.574939
+vt 0.766994 0.537263
+vt 0.777080 0.537263
+vt 0.757335 0.608149
+vt 0.783828 0.574939
+vt 0.757335 0.641827
+vt 0.943424 0.712713
+vt 0.936677 0.675037
+vt 0.960258 0.675037
+vt 0.966088 0.574941
+vt 0.972842 0.537270
+vt 0.982928 0.537276
+vt 0.963169 0.608149
+vt 0.989669 0.574957
+vt 0.963163 0.641827
+vt 0.992574 0.608169
+vt 0.992568 0.641847
+vt 0.924105 0.712713
+vt 0.914019 0.712713
+vt 0.953510 0.537263
+vt 0.948467 0.513886
+vt 0.977889 0.513896
+vt 0.772037 0.513885
+vt 0.801442 0.513885
+vt 0.830847 0.513885
+vt 0.860252 0.513885
+vt 0.894700 0.537263
+vt 0.889657 0.513885
+vt 0.919062 0.736090
+vt 0.894700 0.712713
+vt 0.889657 0.736090
+vt 0.855210 0.712713
+vt 0.865295 0.712713
+vt 0.860252 0.736090
+vt 0.835890 0.712713
+vt 0.830847 0.736090
+vt 0.806485 0.712713
+vt 0.801442 0.736090
+vt 0.872042 0.675037
+vt 0.777080 0.712713
+vt 0.772037 0.736090
+vt 0.982896 0.712726
+vt 0.977849 0.736100
+vt 0.953510 0.712713
+vt 0.948467 0.736091
+vt 0.919062 0.513886
+vt 0.930853 0.574939
+vt 0.930853 0.675037
+vt 0.872042 0.574939
+vt 0.884614 0.962713
+vt 0.877867 0.925037
+vt 0.901448 0.925037
+vt 0.907272 0.824939
+vt 0.914020 0.787263
+vt 0.924105 0.787263
+vt 0.901448 0.824939
+vt 0.877867 0.824939
+vt 0.884614 0.787263
+vt 0.904359 0.891827
+vt 0.904359 0.858149
+vt 0.933765 0.858149
+vt 0.907271 0.925037
+vt 0.933765 0.891827
+vt 0.874955 0.891827
+vt 0.874955 0.858149
+vt 0.845550 0.858149
+vt 0.848462 0.824939
+vt 0.825805 0.962713
+vt 0.819057 0.925037
+vt 0.842638 0.925037
+vt 0.855210 0.787263
+vt 0.865295 0.787263
+vt 0.816145 0.891827
+vt 0.845550 0.891827
+vt 0.848462 0.925037
+vt 0.796399 0.962713
+vt 0.789652 0.925037
+vt 0.813233 0.925037
+vt 0.819057 0.824939
+vt 0.825805 0.787263
+vt 0.835890 0.787263
+vt 0.816145 0.858149
+vt 0.842638 0.824939
+vt 0.786739 0.891827
+vt 0.766994 0.962713
+vt 0.760247 0.925037
+vt 0.783828 0.925037
+vt 0.789652 0.824939
+vt 0.796399 0.787263
+vt 0.806485 0.787263
+vt 0.786739 0.858149
+vt 0.813233 0.824939
+vt 0.960258 0.824939
+vt 0.936677 0.824939
+vt 0.943425 0.787263
+vt 0.972811 0.962720
+vt 0.966069 0.925039
+vt 0.989650 0.925055
+vt 0.760247 0.824939
+vt 0.766994 0.787263
+vt 0.777080 0.787263
+vt 0.757335 0.858149
+vt 0.783828 0.824939
+vt 0.757335 0.891827
+vt 0.943424 0.962713
+vt 0.936677 0.925037
+vt 0.960258 0.925037
+vt 0.966088 0.824941
+vt 0.972842 0.787270
+vt 0.982928 0.787276
+vt 0.963169 0.858149
+vt 0.989669 0.824957
+vt 0.963163 0.891827
+vt 0.992574 0.858169
+vt 0.992568 0.891847
+vt 0.924105 0.962713
+vt 0.914019 0.962713
+vt 0.953510 0.787263
+vt 0.948467 0.763886
+vt 0.977889 0.763896
+vt 0.772037 0.763885
+vt 0.801442 0.763885
+vt 0.830847 0.763885
+vt 0.860252 0.763885
+vt 0.894700 0.787263
+vt 0.889657 0.763885
+vt 0.919062 0.986090
+vt 0.894700 0.962713
+vt 0.889657 0.986090
+vt 0.855210 0.962713
+vt 0.865295 0.962713
+vt 0.860252 0.986090
+vt 0.835890 0.962713
+vt 0.830847 0.986090
+vt 0.806485 0.962713
+vt 0.801442 0.986090
+vt 0.872042 0.925037
+vt 0.777080 0.962713
+vt 0.772037 0.986090
+vt 0.982896 0.962726
+vt 0.977849 0.986100
+vt 0.953510 0.962713
+vt 0.948467 0.986091
+vt 0.919062 0.763886
+vt 0.930853 0.824939
+vt 0.930853 0.925037
+vt 0.872042 0.824939
+vt 0.884614 0.212713
+vt 0.877867 0.175037
+vt 0.901448 0.175037
+vt 0.907272 0.074939
+vt 0.914020 0.037263
+vt 0.924105 0.037263
+vt 0.901448 0.074939
+vt 0.877867 0.074939
+vt 0.884614 0.037263
+vt 0.904359 0.141827
+vt 0.904359 0.108149
+vt 0.933765 0.108149
+vt 0.907271 0.175037
+vt 0.933765 0.141827
+vt 0.874955 0.141827
+vt 0.874955 0.108149
+vt 0.845550 0.108149
+vt 0.848462 0.074939
+vt 0.825805 0.212713
+vt 0.819057 0.175037
+vt 0.842638 0.175037
+vt 0.855210 0.037263
+vt 0.865295 0.037263
+vt 0.816145 0.141827
+vt 0.845550 0.141827
+vt 0.848462 0.175037
+vt 0.796399 0.212713
+vt 0.789652 0.175037
+vt 0.813233 0.175037
+vt 0.819057 0.074939
+vt 0.825805 0.037263
+vt 0.835890 0.037263
+vt 0.816145 0.108149
+vt 0.842638 0.074939
+vt 0.786739 0.141827
+vt 0.766994 0.212713
+vt 0.760247 0.175037
+vt 0.783828 0.175037
+vt 0.789652 0.074939
+vt 0.796399 0.037263
+vt 0.806485 0.037263
+vt 0.786739 0.108149
+vt 0.813233 0.074939
+vt 0.960258 0.074939
+vt 0.936677 0.074939
+vt 0.943425 0.037263
+vt 0.972811 0.212720
+vt 0.966069 0.175039
+vt 0.989650 0.175055
+vt 0.760247 0.074939
+vt 0.766994 0.037263
+vt 0.777080 0.037263
+vt 0.757335 0.108149
+vt 0.783828 0.074939
+vt 0.757335 0.141827
+vt 0.943424 0.212713
+vt 0.936677 0.175037
+vt 0.960258 0.175037
+vt 0.966088 0.074941
+vt 0.972842 0.037270
+vt 0.982928 0.037276
+vt 0.963169 0.108149
+vt 0.989669 0.074957
+vt 0.963163 0.141827
+vt 0.992574 0.108169
+vt 0.992568 0.141847
+vt 0.924105 0.212713
+vt 0.914019 0.212713
+vt 0.953510 0.037263
+vt 0.948467 0.013886
+vt 0.977889 0.013896
+vt 0.772037 0.013885
+vt 0.801442 0.013885
+vt 0.830847 0.013885
+vt 0.860252 0.013885
+vt 0.894700 0.037263
+vt 0.889657 0.013885
+vt 0.919062 0.236090
+vt 0.894700 0.212713
+vt 0.889657 0.236090
+vt 0.855210 0.212713
+vt 0.865295 0.212713
+vt 0.860252 0.236090
+vt 0.835890 0.212713
+vt 0.830847 0.236090
+vt 0.806485 0.212713
+vt 0.801442 0.236090
+vt 0.872042 0.175037
+vt 0.777080 0.212713
+vt 0.772037 0.236090
+vt 0.982896 0.212726
+vt 0.977849 0.236100
+vt 0.953510 0.212713
+vt 0.948467 0.236091
+vt 0.919062 0.013886
+vt 0.930853 0.074939
+vt 0.930853 0.175037
+vt 0.872042 0.074939
+vt 0.884614 0.462713
+vt 0.877867 0.425037
+vt 0.901448 0.425037
+vt 0.907272 0.324939
+vt 0.914020 0.287263
+vt 0.924105 0.287263
+vt 0.901448 0.324939
+vt 0.877867 0.324939
+vt 0.884614 0.287263
+vt 0.904359 0.391827
+vt 0.904359 0.358149
+vt 0.933765 0.358149
+vt 0.907271 0.425037
+vt 0.933765 0.391827
+vt 0.874955 0.391827
+vt 0.874955 0.358149
+vt 0.845550 0.358149
+vt 0.848462 0.324939
+vt 0.825805 0.462713
+vt 0.819057 0.425037
+vt 0.842638 0.425037
+vt 0.855210 0.287263
+vt 0.865295 0.287263
+vt 0.816145 0.391827
+vt 0.845550 0.391827
+vt 0.848462 0.425037
+vt 0.796399 0.462713
+vt 0.789652 0.425037
+vt 0.813233 0.425037
+vt 0.819057 0.324939
+vt 0.825805 0.287263
+vt 0.835890 0.287263
+vt 0.816145 0.358149
+vt 0.842638 0.324939
+vt 0.786739 0.391827
+vt 0.766994 0.462713
+vt 0.760247 0.425037
+vt 0.783828 0.425037
+vt 0.789652 0.324939
+vt 0.796399 0.287263
+vt 0.806485 0.287263
+vt 0.786739 0.358149
+vt 0.813233 0.324939
+vt 0.960258 0.324939
+vt 0.936677 0.324939
+vt 0.943425 0.287263
+vt 0.972811 0.462720
+vt 0.966069 0.425039
+vt 0.989650 0.425055
+vt 0.760247 0.324939
+vt 0.766994 0.287263
+vt 0.777080 0.287263
+vt 0.757335 0.358149
+vt 0.783828 0.324939
+vt 0.757335 0.391827
+vt 0.943424 0.462713
+vt 0.936677 0.425037
+vt 0.960258 0.425037
+vt 0.966088 0.324941
+vt 0.972842 0.287270
+vt 0.982928 0.287276
+vt 0.963169 0.358149
+vt 0.989669 0.324957
+vt 0.963163 0.391827
+vt 0.992574 0.358169
+vt 0.992568 0.391846
+vt 0.924105 0.462713
+vt 0.914019 0.462713
+vt 0.953510 0.287263
+vt 0.948467 0.263886
+vt 0.977889 0.263896
+vt 0.772037 0.263885
+vt 0.801442 0.263885
+vt 0.830847 0.263885
+vt 0.860252 0.263885
+vt 0.894700 0.287263
+vt 0.889657 0.263885
+vt 0.919062 0.486090
+vt 0.894700 0.462713
+vt 0.889657 0.486090
+vt 0.855210 0.462713
+vt 0.865295 0.462713
+vt 0.860252 0.486090
+vt 0.835890 0.462713
+vt 0.830847 0.486090
+vt 0.806485 0.462713
+vt 0.801442 0.486090
+vt 0.872042 0.425037
+vt 0.777080 0.462713
+vt 0.772037 0.486090
+vt 0.982896 0.462726
+vt 0.977849 0.486100
+vt 0.953510 0.462713
+vt 0.948467 0.486091
+vt 0.919062 0.263886
+vt 0.930853 0.324939
+vt 0.930853 0.425037
+vt 0.872042 0.324939
+vt 0.384614 0.712713
+vt 0.377866 0.675037
+vt 0.401448 0.675037
+vt 0.407272 0.574939
+vt 0.414019 0.537263
+vt 0.424105 0.537263
+vt 0.401448 0.574939
+vt 0.377867 0.574939
+vt 0.384615 0.537263
+vt 0.404360 0.641827
+vt 0.404360 0.608149
+vt 0.433765 0.608149
+vt 0.407272 0.675037
+vt 0.433765 0.641827
+vt 0.374954 0.641827
+vt 0.374955 0.608149
+vt 0.345550 0.608149
+vt 0.348462 0.574939
+vt 0.325804 0.712713
+vt 0.319057 0.675037
+vt 0.342638 0.675037
+vt 0.355209 0.537263
+vt 0.365295 0.537263
+vt 0.316145 0.641827
+vt 0.345550 0.641827
+vt 0.348462 0.675037
+vt 0.296399 0.712713
+vt 0.289652 0.675037
+vt 0.313233 0.675037
+vt 0.319057 0.574939
+vt 0.325804 0.537263
+vt 0.335890 0.537263
+vt 0.316145 0.608149
+vt 0.342638 0.574939
+vt 0.286740 0.641827
+vt 0.266994 0.712713
+vt 0.260246 0.675037
+vt 0.283828 0.675037
+vt 0.289652 0.574939
+vt 0.296399 0.537263
+vt 0.306485 0.537263
+vt 0.286740 0.608149
+vt 0.313233 0.574939
+vt 0.460258 0.574939
+vt 0.436677 0.574939
+vt 0.443425 0.537263
+vt 0.472811 0.712720
+vt 0.466070 0.675039
+vt 0.489651 0.675055
+vt 0.260246 0.574939
+vt 0.266994 0.537263
+vt 0.277080 0.537263
+vt 0.257335 0.608149
+vt 0.283828 0.574939
+vt 0.257335 0.641827
+vt 0.443424 0.712713
+vt 0.436676 0.675037
+vt 0.460257 0.675037
+vt 0.466088 0.574941
+vt 0.472842 0.537270
+vt 0.482928 0.537276
+vt 0.463170 0.608149
+vt 0.489669 0.574957
+vt 0.463163 0.641827
+vt 0.492575 0.608169
+vt 0.492569 0.641847
+vt 0.424105 0.712713
+vt 0.414019 0.712713
+vt 0.453510 0.537263
+vt 0.448467 0.513886
+vt 0.477889 0.513896
+vt 0.272037 0.513885
+vt 0.301442 0.513885
+vt 0.330847 0.513885
+vt 0.360252 0.513885
+vt 0.394700 0.537263
+vt 0.389657 0.513885
+vt 0.419062 0.736090
+vt 0.394700 0.712713
+vt 0.389657 0.736090
+vt 0.355209 0.712713
+vt 0.365295 0.712713
+vt 0.360252 0.736090
+vt 0.335890 0.712713
+vt 0.330847 0.736090
+vt 0.306485 0.712713
+vt 0.301442 0.736090
+vt 0.372043 0.675037
+vt 0.277080 0.712713
+vt 0.272037 0.736090
+vt 0.482896 0.712726
+vt 0.477849 0.736100
+vt 0.453510 0.712713
+vt 0.448467 0.736091
+vt 0.419062 0.513886
+vt 0.430853 0.574939
+vt 0.430853 0.675037
+vt 0.372043 0.574939
+vt 0.384614 0.962713
+vt 0.377866 0.925037
+vt 0.401448 0.925037
+vt 0.407272 0.824939
+vt 0.414019 0.787263
+vt 0.424105 0.787263
+vt 0.401448 0.824939
+vt 0.377867 0.824939
+vt 0.384615 0.787263
+vt 0.404360 0.891827
+vt 0.404360 0.858149
+vt 0.433765 0.858149
+vt 0.407272 0.925037
+vt 0.433765 0.891827
+vt 0.374954 0.891827
+vt 0.374955 0.858149
+vt 0.345550 0.858149
+vt 0.348462 0.824939
+vt 0.325804 0.962713
+vt 0.319057 0.925037
+vt 0.342638 0.925037
+vt 0.355209 0.787263
+vt 0.365295 0.787263
+vt 0.316145 0.891827
+vt 0.345550 0.891827
+vt 0.348462 0.925037
+vt 0.296399 0.962713
+vt 0.289652 0.925037
+vt 0.313233 0.925037
+vt 0.319057 0.824939
+vt 0.325804 0.787263
+vt 0.335890 0.787263
+vt 0.316145 0.858149
+vt 0.342638 0.824939
+vt 0.286740 0.891827
+vt 0.266994 0.962713
+vt 0.260246 0.925037
+vt 0.283828 0.925037
+vt 0.289652 0.824939
+vt 0.296399 0.787263
+vt 0.306485 0.787263
+vt 0.286740 0.858149
+vt 0.313233 0.824939
+vt 0.460258 0.824939
+vt 0.436677 0.824939
+vt 0.443425 0.787263
+vt 0.472811 0.962720
+vt 0.466070 0.925039
+vt 0.489651 0.925055
+vt 0.260246 0.824939
+vt 0.266994 0.787263
+vt 0.277080 0.787263
+vt 0.257335 0.858149
+vt 0.283828 0.824939
+vt 0.257335 0.891827
+vt 0.443424 0.962713
+vt 0.436676 0.925037
+vt 0.460257 0.925037
+vt 0.466088 0.824941
+vt 0.472842 0.787270
+vt 0.482928 0.787276
+vt 0.463170 0.858149
+vt 0.489669 0.824957
+vt 0.463163 0.891827
+vt 0.492575 0.858169
+vt 0.492569 0.891847
+vt 0.424105 0.962713
+vt 0.414019 0.962713
+vt 0.453510 0.787263
+vt 0.448467 0.763886
+vt 0.477889 0.763896
+vt 0.272037 0.763885
+vt 0.301442 0.763885
+vt 0.330847 0.763885
+vt 0.360252 0.763885
+vt 0.394700 0.787263
+vt 0.389657 0.763885
+vt 0.419062 0.986090
+vt 0.394700 0.962713
+vt 0.389657 0.986090
+vt 0.355209 0.962713
+vt 0.365295 0.962713
+vt 0.360252 0.986090
+vt 0.335890 0.962713
+vt 0.330847 0.986090
+vt 0.306485 0.962713
+vt 0.301442 0.986090
+vt 0.372043 0.925037
+vt 0.277080 0.962713
+vt 0.272037 0.986090
+vt 0.482896 0.962726
+vt 0.477849 0.986100
+vt 0.453510 0.962713
+vt 0.448467 0.986091
+vt 0.419062 0.763886
+vt 0.430853 0.824939
+vt 0.430853 0.925037
+vt 0.372043 0.824939
+vt 0.384614 0.212713
+vt 0.377866 0.175037
+vt 0.401448 0.175037
+vt 0.407272 0.074939
+vt 0.414019 0.037263
+vt 0.424105 0.037263
+vt 0.401448 0.074939
+vt 0.377867 0.074939
+vt 0.384615 0.037263
+vt 0.404360 0.141827
+vt 0.404360 0.108149
+vt 0.433765 0.108149
+vt 0.407272 0.175037
+vt 0.433765 0.141827
+vt 0.374954 0.141827
+vt 0.374955 0.108149
+vt 0.345550 0.108149
+vt 0.348462 0.074939
+vt 0.325804 0.212713
+vt 0.319057 0.175037
+vt 0.342638 0.175037
+vt 0.355209 0.037263
+vt 0.365295 0.037263
+vt 0.316145 0.141827
+vt 0.345550 0.141827
+vt 0.348462 0.175037
+vt 0.296399 0.212713
+vt 0.289652 0.175037
+vt 0.313233 0.175037
+vt 0.319057 0.074939
+vt 0.325804 0.037263
+vt 0.335890 0.037263
+vt 0.316145 0.108149
+vt 0.342638 0.074939
+vt 0.286740 0.141827
+vt 0.266994 0.212713
+vt 0.260246 0.175037
+vt 0.283828 0.175037
+vt 0.289652 0.074939
+vt 0.296399 0.037263
+vt 0.306485 0.037263
+vt 0.286740 0.108149
+vt 0.313233 0.074939
+vt 0.460258 0.074939
+vt 0.436677 0.074939
+vt 0.443425 0.037263
+vt 0.472811 0.212720
+vt 0.466070 0.175039
+vt 0.489651 0.175055
+vt 0.260246 0.074939
+vt 0.266994 0.037263
+vt 0.277080 0.037263
+vt 0.257335 0.108149
+vt 0.283828 0.074939
+vt 0.257335 0.141827
+vt 0.443424 0.212713
+vt 0.436676 0.175037
+vt 0.460257 0.175037
+vt 0.466088 0.074941
+vt 0.472842 0.037270
+vt 0.482928 0.037276
+vt 0.463170 0.108149
+vt 0.489669 0.074957
+vt 0.463163 0.141827
+vt 0.492575 0.108169
+vt 0.492569 0.141847
+vt 0.424105 0.212713
+vt 0.414019 0.212713
+vt 0.453510 0.037263
+vt 0.448467 0.013886
+vt 0.477889 0.013896
+vt 0.272037 0.013885
+vt 0.301442 0.013885
+vt 0.330847 0.013885
+vt 0.360252 0.013885
+vt 0.394700 0.037263
+vt 0.389657 0.013885
+vt 0.419062 0.236090
+vt 0.394700 0.212713
+vt 0.389657 0.236090
+vt 0.355209 0.212713
+vt 0.365295 0.212713
+vt 0.360252 0.236090
+vt 0.335890 0.212713
+vt 0.330847 0.236090
+vt 0.306485 0.212713
+vt 0.301442 0.236090
+vt 0.372043 0.175037
+vt 0.277080 0.212713
+vt 0.272037 0.236090
+vt 0.482896 0.212726
+vt 0.477849 0.236100
+vt 0.453510 0.212713
+vt 0.448467 0.236091
+vt 0.419062 0.013886
+vt 0.430853 0.074939
+vt 0.430853 0.175037
+vt 0.372043 0.074939
+vt 0.384614 0.462713
+vt 0.377866 0.425037
+vt 0.401448 0.425037
+vt 0.407272 0.324939
+vt 0.414019 0.287263
+vt 0.424105 0.287263
+vt 0.401448 0.324939
+vt 0.377867 0.324939
+vt 0.384615 0.287263
+vt 0.404360 0.391827
+vt 0.404360 0.358149
+vt 0.433765 0.358149
+vt 0.407272 0.425037
+vt 0.433765 0.391827
+vt 0.374954 0.391827
+vt 0.374955 0.358149
+vt 0.345550 0.358149
+vt 0.348462 0.324939
+vt 0.325804 0.462713
+vt 0.319057 0.425037
+vt 0.342638 0.425037
+vt 0.355209 0.287263
+vt 0.365295 0.287263
+vt 0.316145 0.391827
+vt 0.345550 0.391827
+vt 0.348462 0.425037
+vt 0.296399 0.462713
+vt 0.289652 0.425037
+vt 0.313233 0.425037
+vt 0.319057 0.324939
+vt 0.325804 0.287263
+vt 0.335890 0.287263
+vt 0.316145 0.358149
+vt 0.342638 0.324939
+vt 0.286740 0.391827
+vt 0.266994 0.462713
+vt 0.260246 0.425037
+vt 0.283828 0.425037
+vt 0.289652 0.324939
+vt 0.296399 0.287263
+vt 0.306485 0.287263
+vt 0.286740 0.358149
+vt 0.313233 0.324939
+vt 0.460258 0.324939
+vt 0.436677 0.324939
+vt 0.443425 0.287263
+vt 0.472811 0.462720
+vt 0.466070 0.425039
+vt 0.489651 0.425055
+vt 0.260246 0.324939
+vt 0.266994 0.287263
+vt 0.277080 0.287263
+vt 0.257335 0.358149
+vt 0.283828 0.324939
+vt 0.257335 0.391827
+vt 0.443424 0.462713
+vt 0.436676 0.425037
+vt 0.460257 0.425037
+vt 0.466088 0.324941
+vt 0.472842 0.287270
+vt 0.482928 0.287276
+vt 0.463170 0.358149
+vt 0.489669 0.324957
+vt 0.463163 0.391827
+vt 0.492575 0.358169
+vt 0.492569 0.391846
+vt 0.424105 0.462713
+vt 0.414019 0.462713
+vt 0.453510 0.287263
+vt 0.448467 0.263886
+vt 0.477889 0.263896
+vt 0.272037 0.263885
+vt 0.301442 0.263885
+vt 0.330847 0.263885
+vt 0.360252 0.263885
+vt 0.394700 0.287263
+vt 0.389657 0.263885
+vt 0.419062 0.486090
+vt 0.394700 0.462713
+vt 0.389657 0.486090
+vt 0.355209 0.462713
+vt 0.365295 0.462713
+vt 0.360252 0.486090
+vt 0.335890 0.462713
+vt 0.330847 0.486090
+vt 0.306485 0.462713
+vt 0.301442 0.486090
+vt 0.372043 0.425037
+vt 0.277080 0.462713
+vt 0.272037 0.486090
+vt 0.482896 0.462726
+vt 0.477849 0.486100
+vt 0.453510 0.462713
+vt 0.448467 0.486091
+vt 0.419062 0.263886
+vt 0.430853 0.324939
+vt 0.430853 0.425037
+vt 0.372043 0.324939
+vn -0.040500 0.791900 0.609300
+vn -0.094000 0.365800 0.925900
+vn 0.475100 0.414700 0.776100
+vn 0.474600 -0.794200 0.379500
+vn 0.205600 -0.977700 -0.043100
+vn 0.331800 -0.908200 -0.254900
+vn -0.094500 -0.843100 0.529300
+vn -0.041300 -0.998900 0.021900
+vn 0.601600 -0.039300 0.797800
+vn 0.601400 -0.441400 0.665900
+vn 0.969900 -0.238600 0.047400
+vn 0.970100 0.163400 0.179300
+vn -0.119300 -0.101200 0.987700
+vn -0.119500 -0.503300 0.855800
+vn -0.770400 -0.388200 0.505700
+vn -0.608400 -0.752200 0.253000
+vn -0.331800 0.908200 0.254900
+vn -0.765500 0.634100 0.108800
+vn -0.607900 0.456700 0.649500
+vn -0.264200 -0.959500 -0.097900
+vn -0.969900 0.238600 -0.047400
+vn -0.770300 0.013900 0.637500
+vn -0.205600 0.977700 0.043000
+vn -0.474600 0.794200 -0.379500
+vn -0.766000 -0.574800 -0.287800
+vn -0.332600 -0.882500 -0.332500
+vn -0.970100 -0.163400 -0.179300
+vn -0.601400 0.441400 -0.665900
+vn 0.041300 0.998900 -0.021900
+vn 0.094500 0.843100 -0.529300
+vn -0.475100 -0.414700 -0.776100
+vn -0.206300 -0.813100 -0.544300
+vn -0.601600 0.039300 -0.797800
+vn 0.607900 -0.456700 -0.649500
+vn 0.765500 -0.634100 -0.108800
+vn 0.264200 0.959500 0.097900
+vn 0.608400 0.752200 -0.253000
+vn 0.094000 -0.365800 -0.925900
+vn 0.040500 -0.791900 -0.609300
+vn 0.119300 0.101200 -0.987700
+vn 0.119500 0.503300 -0.855800
+vn 0.332500 0.882500 0.332500
+vn 0.766000 0.574800 0.287800
+vn 0.263400 -0.831300 -0.489400
+vn 0.770300 -0.013900 -0.637500
+vn 0.770400 0.388200 -0.505700
+vn 0.206300 0.813100 0.544300
+vn -0.000400 -0.950200 -0.311700
+vn 0.000400 0.950200 0.311700
+vn -0.263400 0.831300 0.489400
+vn -0.185300 0.781100 0.596300
+vn -0.427100 0.365300 0.827100
+vn 0.152300 0.324800 0.933400
+vn 0.152300 -0.863900 0.480000
+vn 0.066100 -0.997400 -0.029300
+vn 0.278700 -0.946500 -0.162700
+vn -0.427100 -0.823400 0.373600
+vn -0.185300 -0.979800 -0.075400
+vn 0.193000 -0.143800 0.970600
+vn 0.193000 -0.539100 0.819800
+vn 0.813900 -0.390500 0.430100
+vn 0.813900 0.004900 0.580900
+vn -0.541000 -0.092400 0.835900
+vn -0.541000 -0.487800 0.685100
+vn -0.958100 -0.266500 0.104900
+vn -0.756400 -0.648700 -0.084400
+vn -0.278700 0.946500 0.162700
+vn -0.642500 0.746600 -0.172300
+vn -0.756400 0.540100 0.369100
+vn -0.328100 -0.904000 -0.274100
+vn -0.813900 0.390500 -0.430100
+vn -0.958100 0.128900 0.255700
+vn -0.066100 0.997400 0.029300
+vn -0.152300 0.863900 -0.480000
+vn -0.642500 -0.442100 -0.625800
+vn -0.278700 -0.814400 -0.509000
+vn -0.813900 -0.004900 -0.580900
+vn -0.193000 0.539100 -0.819800
+vn 0.185300 0.979800 0.075400
+vn 0.427100 0.823400 -0.373600
+vn -0.152300 -0.324800 -0.933400
+vn -0.066100 -0.763500 -0.642400
+vn -0.193000 0.143800 -0.970600
+vn 0.756400 -0.540100 -0.369100
+vn 0.642500 -0.746600 0.172300
+vn 0.328100 0.904000 0.274100
+vn 0.756400 0.648700 0.084400
+vn 0.427100 -0.365300 -0.827100
+vn 0.185200 -0.781100 -0.596300
+vn 0.541000 0.092400 -0.835900
+vn 0.541000 0.487800 -0.685100
+vn 0.278700 0.814400 0.509000
+vn 0.642500 0.442200 0.625800
+vn 0.328100 -0.856900 -0.397600
+vn 0.958100 -0.128900 -0.255700
+vn 0.958100 0.266500 -0.104900
+vn 0.066100 0.763500 0.642400
+vn 0.000000 -0.934300 -0.356400
+vn 0.000000 0.934300 0.356400
+vn -0.328100 0.856900 0.397600
+vn 0.017500 0.621100 0.783500
+vn 0.040500 0.130000 0.990700
+vn 0.573400 0.265000 0.775200
+vn 0.573400 -0.813100 0.099700
+vn 0.248700 -0.917400 -0.310500
+vn 0.334200 -0.789200 -0.515200
+vn 0.040500 -0.948100 0.315200
+vn 0.017500 -0.976000 -0.217000
+vn 0.726400 -0.167900 0.666400
+vn 0.726400 -0.526400 0.441800
+vn 0.976000 -0.152100 -0.155800
+vn 0.976000 0.206500 0.068800
+vn 0.051300 -0.338900 0.939400
+vn 0.051300 -0.697500 0.714700
+vn -0.653900 -0.564900 0.503200
+vn -0.516200 -0.843500 0.148200
+vn -0.334200 0.789200 0.515200
+vn -0.770500 0.517600 0.372000
+vn -0.516200 0.234600 0.823700
+vn -0.223900 -0.930600 -0.289500
+vn -0.976000 0.152100 0.155800
+vn -0.653900 -0.206300 0.727900
+vn -0.248700 0.917400 0.310500
+vn -0.573400 0.813100 -0.099700
+vn -0.770500 -0.560600 -0.303400
+vn -0.334200 -0.807900 -0.485400
+vn -0.976000 -0.206500 -0.068800
+vn -0.726400 0.526400 -0.441800
+vn -0.017500 0.976000 0.217000
+vn -0.040500 0.948100 -0.315200
+vn -0.573400 -0.265000 -0.775200
+vn -0.248700 -0.679600 -0.690000
+vn -0.726400 0.167900 -0.666400
+vn 0.516200 -0.234600 -0.823700
+vn 0.770500 -0.517600 -0.372000
+vn 0.223900 0.930600 0.289500
+vn 0.516200 0.843500 -0.148200
+vn -0.040500 -0.130000 -0.990700
+vn -0.017500 -0.621100 -0.783500
+vn -0.051300 0.338900 -0.939400
+vn -0.051300 0.697500 -0.714700
+vn 0.334200 0.807900 0.485400
+vn 0.770500 0.560600 0.303400
+vn 0.223900 -0.666500 -0.711100
+vn 0.653900 0.206300 -0.727900
+vn 0.653900 0.564900 -0.503200
+vn 0.248700 0.679600 0.690100
+vn 0.000000 -0.847400 -0.530900
+vn 0.000000 0.847400 0.530900
+vn -0.223900 0.666500 0.711100
+vn 0.019900 0.999200 -0.035300
+vn 0.045900 0.874600 0.482700
+vn 0.577000 0.779800 0.242700
+vn 0.577000 -0.403500 0.710000
+vn 0.250300 -0.794800 0.552800
+vn 0.334100 -0.883800 0.327600
+vn 0.045800 -0.308800 0.950000
+vn 0.019900 -0.753700 0.656800
+vn 0.730900 0.435100 0.525700
+vn 0.730900 0.041500 0.681100
+vn 0.975600 -0.218100 0.023700
+vn 0.975600 0.175400 -0.131700
+vn 0.058100 0.555100 0.829700
+vn 0.058100 0.161500 0.985100
+vn -0.648800 0.071700 0.757600
+vn -0.512200 -0.379700 0.770300
+vn -0.334100 0.883800 -0.327600
+vn -0.770200 0.608500 -0.191000
+vn -0.512200 0.803600 0.303000
+vn -0.222200 -0.784500 0.578900
+vn -0.975600 0.218100 -0.023700
+vn -0.648800 0.465300 0.602100
+vn -0.250300 0.794900 -0.552800
+vn -0.577000 0.403500 -0.710000
+vn -0.770200 -0.574800 0.276300
+vn -0.334100 -0.869100 0.364600
+vn -0.975600 -0.175500 0.131700
+vn -0.730900 -0.041500 -0.681100
+vn -0.019900 0.753700 -0.656800
+vn -0.045800 0.308800 -0.950000
+vn -0.577000 -0.779800 -0.242700
+vn -0.250300 -0.958000 0.139500
+vn -0.730900 -0.435100 -0.525700
+vn 0.512200 -0.803600 -0.303000
+vn 0.770200 -0.608500 0.191000
+vn 0.222200 0.784500 -0.578900
+vn 0.512200 0.379700 -0.770300
+vn -0.045800 -0.874600 -0.482700
+vn -0.019900 -0.999200 0.035400
+vn -0.058100 -0.555100 -0.829700
+vn -0.058100 -0.161500 -0.985100
+vn 0.334100 0.869100 -0.364600
+vn 0.770200 0.574800 -0.276300
+vn 0.222200 -0.968400 0.113300
+vn 0.648800 -0.465300 -0.602100
+vn 0.648800 -0.071700 -0.757600
+vn 0.250300 0.958000 -0.139500
+vn 0.000000 -0.930100 0.367300
+vn 0.000000 0.930100 -0.367300
+vn -0.222100 0.968400 -0.113300
+vn -0.326200 0.942300 -0.075100
+vn -0.751900 0.636100 -0.173100
+vn -0.654000 0.636100 0.409300
+vn -0.654000 -0.636100 0.409300
+vn -0.283700 -0.942300 0.177500
+vn -0.075100 -0.942300 0.326200
+vn -0.751900 -0.636100 -0.173100
+vn -0.326200 -0.942300 -0.075100
+vn -0.828500 0.211600 0.518400
+vn -0.828500 -0.211600 0.518400
+vn -0.219200 -0.211600 0.952400
+vn -0.219200 0.211600 0.952400
+vn -0.952400 0.211600 -0.219200
+vn -0.952400 -0.211600 -0.219200
+vn -0.518400 -0.211600 -0.828500
+vn -0.409300 -0.636100 -0.654000
+vn 0.075100 0.942300 -0.326200
+vn 0.173100 0.636100 -0.751900
+vn -0.409300 0.636100 -0.654000
+vn -0.177500 -0.942300 -0.283700
+vn 0.219200 0.211600 -0.952400
+vn -0.518400 0.211600 -0.828500
+vn 0.283700 0.942300 -0.177500
+vn 0.654000 0.636100 -0.409300
+vn 0.173100 -0.636100 -0.751900
+vn 0.075100 -0.942300 -0.326200
+vn 0.219200 -0.211600 -0.952400
+vn 0.828500 0.211600 -0.518400
+vn 0.326200 0.942300 0.075100
+vn 0.751900 0.636100 0.173100
+vn 0.654000 -0.636100 -0.409300
+vn 0.283700 -0.942300 -0.177500
+vn 0.828500 -0.211600 -0.518400
+vn 0.409300 -0.636100 0.654000
+vn -0.173100 -0.636100 0.751900
+vn 0.177500 0.942300 0.283700
+vn 0.409300 0.636100 0.654000
+vn 0.751900 -0.636100 0.173100
+vn 0.326200 -0.942300 0.075100
+vn 0.952400 -0.211600 0.219200
+vn 0.952400 0.211600 0.219200
+vn -0.075100 0.942300 0.326200
+vn -0.173100 0.636100 0.751900
+vn 0.177500 -0.942300 0.283700
+vn 0.518400 -0.211600 0.828500
+vn 0.518400 0.211600 0.828500
+vn -0.283700 0.942300 0.177500
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.177500 0.942300 -0.283700
+vn 0.021800 0.449800 0.892800
+vn 0.050300 -0.072800 0.996100
+vn 0.580000 0.107700 0.807500
+vn 0.580000 -0.811400 -0.072200
+vn 0.251600 -0.833400 -0.492100
+vn 0.334000 -0.665700 -0.667300
+vn 0.050300 -0.991900 0.116300
+vn 0.021800 -0.911700 -0.410300
+vn 0.734600 -0.292800 0.612000
+vn 0.734600 -0.598500 0.319300
+vn 0.975300 -0.108800 -0.192300
+vn 0.975300 0.196900 0.100300
+vn 0.063700 -0.521500 0.850900
+vn 0.063700 -0.827200 0.558200
+vn -0.644600 -0.660800 0.384400
+vn -0.508800 -0.860600 -0.020900
+vn -0.334000 0.665700 0.667300
+vn -0.769900 0.424800 0.476200
+vn -0.508800 0.058500 0.858900
+vn -0.220700 -0.854700 -0.469800
+vn -0.975300 0.108800 0.192300
+vn -0.644600 -0.355100 0.677000
+vn -0.251600 0.833400 0.492100
+vn -0.580000 0.811400 0.072200
+vn -0.769900 -0.494300 -0.403500
+vn -0.334000 -0.695800 -0.635800
+vn -0.975300 -0.196900 -0.100300
+vn -0.734600 0.598500 -0.319300
+vn -0.021800 0.911700 0.410300
+vn -0.050300 0.991900 -0.116300
+vn -0.580000 -0.107700 -0.807500
+vn -0.251600 -0.528100 -0.811000
+vn -0.734600 0.292800 -0.612000
+vn 0.508800 -0.058500 -0.858900
+vn 0.769900 -0.424800 -0.476200
+vn 0.220700 0.854700 0.469800
+vn 0.508800 0.860600 0.020900
+vn -0.050300 0.072800 -0.996100
+vn -0.021800 -0.449800 -0.892800
+vn -0.063700 0.521500 -0.850900
+vn -0.063700 0.827200 -0.558200
+vn 0.334000 0.695800 0.635800
+vn 0.769900 0.494300 0.403500
+vn 0.220700 -0.506800 -0.833300
+vn 0.644600 0.355100 -0.677000
+vn 0.644600 0.660800 -0.384400
+vn 0.251600 0.528100 0.811000
+vn 0.000000 -0.722400 -0.691400
+vn 0.000000 0.722400 0.691400
+vn -0.220700 0.506800 0.833300
+vn 0.173200 0.983000 -0.060400
+vn 0.486000 0.807400 0.334400
+vn 0.733700 0.655300 -0.179600
+vn 0.805600 -0.552900 0.212700
+vn 0.387100 -0.872600 0.297700
+vn 0.299000 -0.951600 0.070600
+vn 0.557900 -0.400700 0.726700
+vn 0.279700 -0.806600 0.520700
+vn 0.963000 0.265800 -0.044300
+vn 0.986900 -0.136100 0.086200
+vn 0.729600 -0.366800 -0.577200
+vn 0.705700 0.035000 -0.707600
+vn 0.649200 0.458500 0.606800
+vn 0.673100 0.056700 0.737300
+vn -0.028000 0.098500 0.994700
+vn 0.004400 -0.367700 0.929900
+vn -0.299000 0.951600 -0.070600
+vn -0.602500 0.735000 0.311000
+vn -0.067400 0.840500 0.537600
+vn 0.039600 -0.792300 0.608900
+vn -0.729600 0.366800 0.577200
+vn -0.051900 0.500400 0.864200
+vn -0.387100 0.872600 -0.297700
+vn -0.805600 0.552900 -0.212700
+vn -0.530600 -0.473100 0.703300
+vn -0.192500 -0.838000 0.510500
+vn -0.705700 -0.035000 0.707600
+vn -0.986900 0.136100 -0.086200
+vn -0.279700 0.806600 -0.520700
+vn -0.557900 0.400700 -0.726700
+vn -0.733700 -0.655300 0.179600
+vn -0.280600 -0.917000 0.283400
+vn -0.963000 -0.265800 0.044300
+vn 0.067400 -0.840500 -0.537600
+vn 0.602500 -0.735000 -0.311000
+vn -0.039600 0.792300 -0.608900
+vn -0.004400 0.367700 -0.929900
+vn -0.486000 -0.807400 -0.334400
+vn -0.173100 -0.983000 0.060400
+vn -0.649200 -0.458500 -0.606800
+vn -0.673100 -0.056700 -0.737300
+vn 0.192500 0.838000 -0.510500
+vn 0.530600 0.473100 -0.703300
+vn 0.066900 -0.997300 -0.027700
+vn 0.051900 -0.500400 -0.864200
+vn 0.028000 -0.098500 -0.994700
+vn 0.280600 0.917000 -0.283400
+vn 0.056500 -0.949600 0.308400
+vn -0.056500 0.949600 -0.308400
+vn -0.066900 0.997300 0.027700
+vn -0.236100 0.201600 -0.950600
+vn -0.544200 0.522500 -0.656300
+vn 0.001800 0.747000 -0.664700
+vn 0.001800 0.794900 0.606600
+vn 0.000800 0.369900 0.929000
+vn 0.237200 0.271400 0.932800
+vn -0.544200 0.570500 0.615100
+vn -0.236100 0.272500 0.932700
+vn 0.002300 0.968700 -0.248200
+vn 0.002300 0.984600 0.174600
+vn 0.692700 0.696900 0.185500
+vn 0.692700 0.681000 -0.237400
+vn -0.689400 0.684300 -0.237500
+vn -0.689400 0.700200 0.185300
+vn -0.977400 0.010300 0.211300
+vn -0.771500 0.025800 0.635600
+vn -0.237200 -0.271400 -0.932800
+vn -0.546900 -0.567800 -0.615200
+vn -0.771500 -0.022100 -0.635800
+vn -0.334700 0.036300 0.941600
+vn -0.692700 -0.696900 -0.185500
+vn -0.977400 -0.005600 -0.211500
+vn -0.000800 -0.369900 -0.929000
+vn -0.001800 -0.794900 -0.606600
+vn -0.546900 -0.519900 0.656200
+vn -0.237200 -0.200400 0.950500
+vn -0.692700 -0.681000 0.237400
+vn -0.002300 -0.984600 -0.174600
+vn 0.236100 -0.272500 -0.932700
+vn 0.544200 -0.570500 -0.615100
+vn -0.001800 -0.747000 0.664800
+vn -0.000800 -0.299000 0.954300
+vn -0.002300 -0.968700 0.248200
+vn 0.771500 0.022100 0.635800
+vn 0.546900 0.567800 0.615200
+vn 0.334700 -0.036300 -0.941600
+vn 0.771500 -0.025800 -0.635600
+vn 0.544200 -0.522500 0.656300
+vn 0.236100 -0.201600 0.950600
+vn 0.689400 -0.684300 0.237500
+vn 0.689400 -0.700200 -0.185300
+vn 0.237200 0.200400 -0.950500
+vn 0.546900 0.519900 -0.656200
+vn 0.334700 0.034700 0.941700
+vn 0.977400 0.005600 0.211500
+vn 0.977400 -0.010300 -0.211300
+vn 0.000800 0.299000 -0.954300
+vn 0.000000 0.037600 0.999300
+vn 0.000000 -0.037600 -0.999300
+vn -0.334700 -0.034700 -0.941700
+vn -0.137000 0.592400 0.793900
+vn -0.315800 0.112200 0.942100
+vn 0.274400 0.102300 0.956100
+vn 0.274400 -0.935900 0.220700
+vn 0.119000 -0.949700 -0.289400
+vn 0.305300 -0.848100 -0.432900
+vn -0.315800 -0.926000 0.206700
+vn -0.137000 -0.945400 -0.295500
+vn 0.347600 -0.355400 0.867700
+vn 0.347600 -0.700600 0.623100
+vn 0.891700 -0.403900 0.204100
+vn 0.891700 -0.058600 0.448700
+vn -0.400100 -0.342800 0.849900
+vn -0.400100 -0.688100 0.605300
+vn -0.913400 -0.373600 0.161400
+vn -0.721100 -0.677700 -0.143800
+vn -0.305300 0.848100 0.432900
+vn -0.703900 0.701700 0.110000
+vn -0.721100 0.360500 0.591700
+vn -0.312800 -0.837700 -0.447600
+vn -0.891700 0.403900 -0.204100
+vn -0.913400 -0.028300 0.406000
+vn -0.119000 0.949700 0.289400
+vn -0.274400 0.935900 -0.220700
+vn -0.703900 -0.336500 -0.625400
+vn -0.305400 -0.689700 -0.656500
+vn -0.891700 0.058600 -0.448700
+vn -0.347600 0.700600 -0.623100
+vn 0.137000 0.945400 0.295500
+vn 0.315800 0.926000 -0.206700
+vn -0.274400 -0.102300 -0.956100
+vn -0.119000 -0.588100 -0.800000
+vn -0.347600 0.355400 -0.867700
+vn 0.721100 -0.360500 -0.591700
+vn 0.703900 -0.701700 -0.110000
+vn 0.312800 0.837700 0.447600
+vn 0.721100 0.677700 0.143800
+vn 0.315800 -0.112200 -0.942100
+vn 0.137000 -0.592400 -0.793900
+vn 0.400100 0.342800 -0.849900
+vn 0.400100 0.688100 -0.605300
+vn 0.305300 0.689700 0.656500
+vn 0.703900 0.336500 0.625400
+vn 0.312800 -0.700100 -0.641800
+vn 0.913400 0.028300 -0.406000
+vn 0.913400 0.373600 -0.161400
+vn 0.119000 0.588100 0.800000
+vn 0.000000 -0.816000 -0.578000
+vn 0.000000 0.816000 0.578000
+vn -0.312800 0.700100 0.641800
+vn -0.128100 0.984400 0.120300
+vn -0.295200 0.762500 0.575700
+vn 0.295200 0.762400 0.575700
+vn 0.295200 -0.485600 0.822800
+vn 0.128100 -0.864300 0.486300
+vn 0.309200 -0.899500 0.308600
+vn -0.295200 -0.485600 0.822800
+vn -0.128100 -0.864300 0.486300
+vn 0.374000 0.382900 0.844700
+vn 0.374000 -0.032200 0.926800
+vn 0.903000 -0.134900 0.408000
+vn 0.903000 0.280200 0.325800
+vn -0.374000 0.382900 0.844700
+vn -0.374000 -0.032200 0.926800
+vn -0.903000 -0.134900 0.408000
+vn -0.712800 -0.566700 0.413200
+vn -0.309200 0.899500 -0.308600
+vn -0.712800 0.566700 -0.413200
+vn -0.712800 0.681400 0.166100
+vn -0.309200 -0.899500 0.308600
+vn -0.903000 0.134900 -0.408000
+vn -0.903000 0.280200 0.325800
+vn -0.128100 0.864300 -0.486300
+vn -0.295200 0.485600 -0.822800
+vn -0.712800 -0.681400 -0.166100
+vn -0.309200 -0.949200 0.057300
+vn -0.903000 -0.280200 -0.325800
+vn -0.374000 0.032200 -0.926800
+vn 0.128100 0.864300 -0.486300
+vn 0.295200 0.485600 -0.822800
+vn -0.295200 -0.762400 -0.575700
+vn -0.128100 -0.984400 -0.120300
+vn -0.374000 -0.382900 -0.844700
+vn 0.712800 -0.681400 -0.166100
+vn 0.712800 -0.566700 0.413200
+vn 0.309200 0.899500 -0.308600
+vn 0.712800 0.566700 -0.413200
+vn 0.295200 -0.762500 -0.575700
+vn 0.128100 -0.984400 -0.120300
+vn 0.374000 -0.382900 -0.844700
+vn 0.374000 0.032200 -0.926800
+vn 0.309200 0.949200 -0.057300
+vn 0.712800 0.681400 0.166100
+vn 0.309200 -0.949200 0.057300
+vn 0.903000 -0.280200 -0.325800
+vn 0.903000 0.134900 -0.408000
+vn 0.128100 0.984400 0.120300
+vn 0.000000 -0.981000 0.194200
+vn 0.000000 0.981000 -0.194200
+vn -0.309200 0.949200 -0.057300
+vn -0.128100 -0.032000 0.991200
+vn -0.295200 -0.505400 0.810800
+vn 0.295200 -0.505400 0.810800
+vn 0.295200 -0.862800 -0.410200
+vn 0.128100 -0.561500 -0.817500
+vn 0.309200 -0.387700 -0.868400
+vn -0.295200 -0.862800 -0.410200
+vn -0.128100 -0.561500 -0.817500
+vn 0.374000 -0.807100 0.456700
+vn 0.374000 -0.926000 0.050600
+vn 0.903000 -0.418400 -0.098000
+vn 0.903000 -0.299500 0.308100
+vn -0.374000 -0.807100 0.456700
+vn -0.374000 -0.926000 0.050600
+vn -0.903000 -0.418400 -0.098000
+vn -0.712800 -0.462100 -0.527500
+vn -0.309200 0.387700 0.868400
+vn -0.712800 0.462100 0.527500
+vn -0.712800 -0.104600 0.693500
+vn -0.309200 -0.387700 -0.868400
+vn -0.903000 0.418400 0.098000
+vn -0.903000 -0.299500 0.308100
+vn -0.128100 0.561500 0.817500
+vn -0.295200 0.862800 0.410200
+vn -0.712800 0.104600 -0.693500
+vn -0.309200 -0.141800 -0.940300
+vn -0.903000 0.299500 -0.308100
+vn -0.374000 0.926000 -0.050600
+vn 0.128100 0.561500 0.817500
+vn 0.295200 0.862800 0.410200
+vn -0.295200 0.505400 -0.810800
+vn -0.128100 0.032000 -0.991200
+vn -0.374000 0.807100 -0.456700
+vn 0.712800 0.104600 -0.693500
+vn 0.712800 -0.462100 -0.527500
+vn 0.309200 0.387700 0.868400
+vn 0.712800 0.462100 0.527500
+vn 0.295200 0.505400 -0.810800
+vn 0.128100 0.032000 -0.991200
+vn 0.374000 0.807100 -0.456700
+vn 0.374000 0.926000 -0.050600
+vn 0.309200 0.141800 0.940300
+vn 0.712800 -0.104600 0.693500
+vn 0.309200 -0.141800 -0.940300
+vn 0.903000 0.299500 -0.308100
+vn 0.903000 0.418400 0.098000
+vn 0.128100 -0.032000 0.991200
+vn 0.000000 -0.281000 -0.959700
+vn 0.000000 0.281000 0.959700
+vn -0.309200 0.141800 0.940300
+vn 0.276000 0.942300 -0.189300
+vn 0.636200 0.636100 -0.436500
+vn 0.141200 0.636100 -0.758500
+vn 0.141200 -0.636100 -0.758500
+vn 0.061300 -0.942300 -0.329000
+vn -0.189300 -0.942300 -0.276000
+vn 0.636200 -0.636100 -0.436500
+vn 0.276000 -0.942300 -0.189300
+vn 0.178900 0.211600 -0.960800
+vn 0.178900 -0.211600 -0.960800
+vn -0.552900 -0.211600 -0.805900
+vn -0.552900 0.211600 -0.805900
+vn 0.805900 0.211600 -0.552900
+vn 0.805900 -0.211600 -0.552900
+vn 0.960800 -0.211600 0.178900
+vn 0.758500 -0.636100 0.141200
+vn 0.189300 0.942300 0.276000
+vn 0.436500 0.636100 0.636200
+vn 0.758500 0.636100 0.141200
+vn 0.329000 -0.942300 0.061300
+vn 0.552900 0.211600 0.805900
+vn 0.960800 0.211600 0.178900
+vn -0.061300 0.942300 0.329000
+vn -0.141200 0.636100 0.758500
+vn 0.436500 -0.636100 0.636200
+vn 0.189300 -0.942300 0.276000
+vn 0.552900 -0.211600 0.805900
+vn -0.178900 0.211600 0.960800
+vn -0.276000 0.942300 0.189300
+vn -0.636200 0.636100 0.436500
+vn -0.141200 -0.636100 0.758500
+vn -0.061300 -0.942300 0.329000
+vn -0.178900 -0.211600 0.960800
+vn -0.758500 -0.636100 -0.141200
+vn -0.436500 -0.636100 -0.636200
+vn -0.329000 0.942300 -0.061300
+vn -0.758500 0.636100 -0.141200
+vn -0.636200 -0.636100 0.436500
+vn -0.276000 -0.942300 0.189300
+vn -0.805900 -0.211600 0.552900
+vn -0.805900 0.211600 0.552900
+vn -0.189300 0.942300 -0.276000
+vn -0.436500 0.636100 -0.636200
+vn -0.329000 -0.942300 -0.061300
+vn -0.960800 -0.211600 -0.178900
+vn -0.960800 0.211600 -0.178900
+vn 0.061300 0.942300 -0.329000
+vn 0.329000 0.942300 0.061300
+vn -0.027000 0.999100 0.031200
+vn -0.054100 0.872100 -0.486200
+vn -0.583600 0.774600 -0.243800
+vn -0.576800 -0.410700 -0.706000
+vn -0.246700 -0.799000 -0.548400
+vn -0.328900 -0.887500 -0.322500
+vn -0.047300 -0.313200 -0.948500
+vn -0.016900 -0.756600 -0.653600
+vn -0.736100 0.427500 -0.524700
+vn -0.733800 0.033300 -0.678500
+vn -0.974100 -0.225300 -0.018900
+vn -0.976300 0.168900 0.134800
+vn -0.065300 0.551100 -0.831800
+vn -0.063100 0.156900 -0.985600
+vn 0.645300 0.073100 -0.760400
+vn 0.511900 -0.379300 -0.770700
+vn 0.328900 0.887500 0.322500
+vn 0.766500 0.614900 0.185400
+vn 0.505100 0.806000 -0.308500
+vn 0.225600 -0.785400 -0.576400
+vn 0.974100 0.225300 0.018900
+vn 0.643100 0.467400 -0.606600
+vn 0.246700 0.799000 0.548400
+vn 0.576800 0.410700 0.706000
+vn 0.773200 -0.570400 -0.276900
+vn 0.339000 -0.868300 -0.362200
+vn 0.976300 -0.168900 -0.134800
+vn 0.733800 -0.033300 0.678500
+vn 0.016900 0.756600 0.653600
+vn 0.047300 0.313200 0.948500
+vn 0.583600 -0.774600 0.243800
+vn 0.256700 -0.956800 -0.136400
+vn 0.736100 -0.427500 0.524700
+vn -0.505100 -0.806000 0.308500
+vn -0.766500 -0.614900 -0.185400
+vn -0.225600 0.785300 0.576400
+vn -0.511900 0.379300 0.770700
+vn 0.054000 -0.872100 0.486200
+vn 0.027000 -0.999100 -0.031200
+vn 0.065300 -0.551100 0.831800
+vn 0.063100 -0.156900 0.985600
+vn -0.339000 0.868300 0.362200
+vn -0.773200 0.570400 0.276900
+vn -0.215600 -0.970500 -0.108300
+vn -0.643100 -0.467400 0.606600
+vn -0.645300 -0.073100 0.760400
+vn -0.256700 0.956800 0.136400
+vn 0.005300 -0.931600 -0.363300
+vn -0.005300 0.931600 0.363300
+vn 0.215600 0.970500 0.108300
+vn -0.152200 0.942300 0.298000
+vn -0.350900 0.636100 0.687100
+vn 0.237700 0.636100 0.734000
+vn 0.237700 -0.636100 0.734000
+vn 0.103100 -0.942300 0.318400
+vn 0.298000 -0.942300 0.152200
+vn -0.350900 -0.636100 0.687100
+vn -0.152200 -0.942300 0.298000
+vn 0.301100 0.211600 0.929800
+vn 0.301100 -0.211600 0.929800
+vn 0.870400 -0.211600 0.444500
+vn 0.870400 0.211600 0.444500
+vn -0.444500 0.211600 0.870400
+vn -0.444500 -0.211600 0.870400
+vn -0.929800 -0.211600 0.301100
+vn -0.734000 -0.636100 0.237700
+vn -0.298000 0.942300 -0.152200
+vn -0.687100 0.636100 -0.350900
+vn -0.734000 0.636100 0.237700
+vn -0.318400 -0.942300 0.103100
+vn -0.870400 0.211600 -0.444500
+vn -0.929800 0.211600 0.301100
+vn -0.103100 0.942300 -0.318400
+vn -0.237700 0.636100 -0.734000
+vn -0.687100 -0.636100 -0.350900
+vn -0.298000 -0.942300 -0.152200
+vn -0.870400 -0.211600 -0.444500
+vn -0.301100 0.211600 -0.929800
+vn 0.152200 0.942300 -0.298000
+vn 0.350900 0.636100 -0.687100
+vn -0.237700 -0.636100 -0.734000
+vn -0.103100 -0.942300 -0.318400
+vn -0.301100 -0.211600 -0.929800
+vn 0.734000 -0.636100 -0.237700
+vn 0.687100 -0.636100 0.350900
+vn 0.318400 0.942300 -0.103100
+vn 0.734000 0.636100 -0.237700
+vn 0.350900 -0.636100 -0.687100
+vn 0.152200 -0.942300 -0.298000
+vn 0.444500 -0.211600 -0.870400
+vn 0.444500 0.211600 -0.870400
+vn 0.298000 0.942300 0.152200
+vn 0.687100 0.636100 0.350900
+vn 0.318400 -0.942300 -0.103100
+vn 0.929800 -0.211600 -0.301100
+vn 0.929800 0.211600 -0.301100
+vn 0.103100 0.942300 0.318400
+vn -0.318400 0.942300 0.103100
+vn -0.277200 0.849100 -0.449500
+vn -0.639100 0.766300 -0.066400
+vn -0.146200 0.971600 0.185800
+vn -0.146200 -0.015000 0.989100
+vn -0.063400 -0.523200 0.849800
+vn 0.187500 -0.555700 0.809900
+vn -0.639100 -0.220300 0.736900
+vn -0.277200 -0.612300 0.740400
+vn -0.185200 0.770000 0.610600
+vn -0.185200 0.441800 0.877700
+vn 0.547600 0.347000 0.761300
+vn 0.547600 0.675200 0.494200
+vn -0.809500 0.509800 0.291100
+vn -0.809500 0.181700 0.558200
+vn -0.959700 -0.281000 -0.010000
+vn -0.757600 -0.585600 0.288300
+vn -0.187500 0.555700 -0.809900
+vn -0.432300 0.089800 -0.897200
+vn -0.757600 0.401000 -0.515000
+vn -0.328600 -0.770800 0.545800
+vn -0.547600 -0.347000 -0.761300
+vn -0.959700 0.047200 -0.277200
+vn 0.063400 0.523200 -0.849800
+vn 0.146200 0.015000 -0.989100
+vn -0.432300 -0.896800 -0.093900
+vn -0.187500 -0.905800 0.380000
+vn -0.547600 -0.675200 -0.494200
+vn 0.185200 -0.441800 -0.877700
+vn 0.277200 0.612300 -0.740400
+vn 0.639100 0.220300 -0.736900
+vn 0.146200 -0.971600 -0.185800
+vn 0.063400 -0.938200 0.340100
+vn 0.185200 -0.770000 -0.610600
+vn 0.757600 -0.401000 0.515000
+vn 0.432300 -0.089800 0.897200
+vn 0.328600 0.770800 -0.545800
+vn 0.757600 0.585600 -0.288300
+vn 0.639100 -0.766300 0.066400
+vn 0.277200 -0.849100 0.449500
+vn 0.809500 -0.509800 -0.291100
+vn 0.809500 -0.181700 -0.558200
+vn 0.187500 0.905800 -0.380000
+vn 0.432300 0.896800 0.093900
+vn 0.328600 -0.690700 0.644100
+vn 0.959700 -0.047200 0.277200
+vn 0.959700 0.281000 0.010000
+vn -0.063400 0.938200 -0.340100
+vn 0.000000 -0.775400 0.631400
+vn 0.000000 0.775400 -0.631400
+vn -0.328600 0.690700 -0.644100
+vn 0.024700 0.740600 0.671400
+vn 0.056900 0.290100 0.955300
+vn 0.584300 0.392600 0.710200
+vn 0.584300 -0.781200 0.219400
+vn 0.253500 -0.953700 -0.161900
+vn 0.333800 -0.859900 -0.386300
+vn 0.056900 -0.883700 0.464500
+vn 0.024700 -0.998100 -0.055500
+vn 0.740200 -0.051000 0.670400
+vn 0.740200 -0.441400 0.507200
+vn 0.974700 -0.167400 -0.148200
+vn 0.974700 0.223000 0.015000
+vn 0.072100 -0.180800 0.980900
+vn 0.072100 -0.571200 0.817600
+vn -0.638200 -0.480700 0.601300
+vn -0.503800 -0.812300 0.293700
+vn -0.333800 0.859900 0.386300
+vn -0.769400 0.564900 0.297900
+vn -0.503800 0.361500 0.784500
+vn -0.218500 -0.967200 -0.129600
+vn -0.974700 0.167400 0.148200
+vn -0.638200 -0.090300 0.764500
+vn -0.253500 0.953700 0.161900
+vn -0.584300 0.781200 -0.219400
+vn -0.769400 -0.608900 -0.192800
+vn -0.333800 -0.878900 -0.340700
+vn -0.974700 -0.223000 -0.015000
+vn -0.740200 0.441400 -0.507200
+vn -0.024700 0.998100 0.055500
+vn -0.056900 0.883700 -0.464500
+vn -0.584300 -0.392500 -0.710200
+vn -0.253500 -0.785100 -0.565100
+vn -0.740200 0.051000 -0.670400
+vn 0.503800 -0.361500 -0.784500
+vn 0.769400 -0.564900 -0.297900
+vn 0.218500 0.967200 0.129600
+vn 0.503800 0.812300 -0.293700
+vn -0.056900 -0.290100 -0.955300
+vn -0.024700 -0.740600 -0.671400
+vn -0.072100 0.180800 -0.980900
+vn -0.072100 0.571200 -0.817600
+vn 0.333800 0.878900 0.340700
+vn 0.769400 0.608900 0.192800
+vn 0.218500 -0.771600 -0.597400
+vn 0.638200 0.090300 -0.764500
+vn 0.638200 0.480700 -0.601300
+vn 0.253500 0.785100 0.565100
+vn 0.000000 -0.922600 -0.385800
+vn 0.000000 0.922600 0.385800
+vn -0.218500 0.771600 0.597400
+g balls_Sphere.015_None_homedecor_pool_table_balls.png
+s 1
+f 237/217/73 238/218/74 232/219/75
+f 235/220/76 236/221/77 230/222/78
+f 235/223/76 241/224/79 242/225/80
+f 233/226/81 234/227/82 228/228/83
+f 232/229/75 233/226/81 227/230/84
+f 232/219/75 238/218/74 239/231/85
+f 240/232/86 241/224/79 235/223/76
+f 239/231/85 240/232/86 234/227/82
+f 240/232/86 246/233/87 247/234/88
+f 249/235/89 250/236/90 244/237/91
+f 247/234/88 248/238/92 242/239/80
+f 244/237/91 250/236/90 251/240/93
+f 245/241/94 246/233/87 240/232/86
+f 244/242/91 245/241/94 239/231/85
+f 255/243/95 256/244/96 250/245/90
+f 253/246/97 254/247/98 248/248/92
+f 252/249/99 253/246/97 247/250/88
+f 251/240/93 252/249/99 246/233/87
+f 250/245/90 256/244/96 257/251/100
+f 261/252/101 262/253/102 256/254/96
+f 259/255/103 260/256/104 254/257/98
+f 258/258/105 259/255/103 253/259/97
+f 257/251/100 258/258/105 252/249/99
+f 271/260/106 229/261/107 230/262/78
+f 267/263/108 268/264/109 262/265/102
+f 265/266/110 266/267/111 260/268/104
+f 264/269/112 265/266/110 259/270/103
+f 263/271/113 264/269/112 258/258/105
+f 262/253/102 263/271/113 257/251/100
+f 225/272/114 226/273/115 268/274/109
+f 271/275/106 272/276/116 266/277/111
+f 270/278/117 271/275/106 265/279/110
+f 269/280/118 270/278/117 264/281/112
+f 268/264/109 269/280/118 263/282/113
+f 270/278/117 228/228/83 229/261/107
+f 225/283/114 231/284/119 232/229/75
+f 227/230/84 228/228/83 270/278/117
+f 226/273/115 227/230/84 269/280/118
+f 272/285/116 230/262/78 273/286/120
+f 266/277/111 272/276/116 273/287/120
+f 260/268/104 266/267/111 273/288/120
+f 254/257/98 260/256/104 273/289/120
+f 248/248/92 254/247/98 273/290/120
+f 242/239/80 248/238/92 273/291/120
+f 236/292/77 242/225/80 273/293/120
+f 231/284/119 225/283/114 274/294/121
+f 237/217/73 231/295/119 274/296/121
+f 243/297/122 237/298/73 274/299/121
+f 249/235/89 243/300/122 274/301/121
+f 255/243/95 249/302/89 274/303/121
+f 243/297/122 244/242/91 238/304/74
+f 261/252/101 255/305/95 274/306/121
+f 267/263/108 261/307/101 274/308/121
+f 225/272/114 267/309/108 274/310/121
+f 230/222/78 236/221/77 273/311/120
+f 231/295/119 237/217/73 232/219/75
+f 229/312/107 235/220/76 230/222/78
+f 227/230/84 233/226/81 228/228/83
+f 226/313/115 232/229/75 227/230/84
+f 234/227/82 240/232/86 235/223/76
+f 233/226/81 239/231/85 234/227/82
+f 243/300/122 249/235/89 244/237/91
+f 241/314/79 247/234/88 242/239/80
+f 239/231/85 245/241/94 240/232/86
+f 238/304/74 244/242/91 239/231/85
+f 249/302/89 255/243/95 250/245/90
+f 247/250/88 253/246/97 248/248/92
+f 246/233/87 252/249/99 247/250/88
+f 245/241/94 251/240/93 246/233/87
+f 255/305/95 261/252/101 256/254/96
+f 253/259/97 259/255/103 254/257/98
+f 252/249/99 258/258/105 253/259/97
+f 251/240/93 257/251/100 252/249/99
+f 261/307/101 267/263/108 262/265/102
+f 259/270/103 265/266/110 260/268/104
+f 258/258/105 264/269/112 259/270/103
+f 257/251/100 263/271/113 258/258/105
+f 256/254/96 262/253/102 257/251/100
+f 267/309/108 225/272/114 268/274/109
+f 265/279/110 271/275/106 266/277/111
+f 264/281/112 270/278/117 265/279/110
+f 263/282/113 269/280/118 264/281/112
+f 262/265/102 268/264/109 263/282/113
+f 269/280/118 227/230/84 270/278/117
+f 268/274/109 226/273/115 269/280/118
+f 237/298/73 243/297/122 238/304/74
+f 228/228/83 234/227/82 235/220/76
+f 236/292/77 235/223/76 242/225/80
+f 233/226/81 232/219/75 239/231/85
+f 241/314/79 240/232/86 247/234/88
+f 245/241/94 244/237/91 251/240/93
+f 251/240/93 250/245/90 257/251/100
+f 272/285/116 271/260/106 230/262/78
+f 271/260/106 270/278/117 229/261/107
+f 226/313/115 225/283/114 232/229/75
+f 229/312/107 228/228/83 235/220/76
+f 287/315/123 288/316/124 282/317/125
+f 285/318/126 286/319/127 280/320/128
+f 285/321/126 291/322/129 292/323/130
+f 283/324/131 284/325/132 278/326/133
+f 282/327/125 283/324/131 277/328/134
+f 282/317/125 288/316/124 289/329/135
+f 290/330/136 291/322/129 285/321/126
+f 289/329/135 290/330/136 284/325/132
+f 290/330/136 296/331/137 297/332/138
+f 299/333/139 300/334/140 294/335/141
+f 297/332/138 298/336/142 292/337/130
+f 294/335/141 300/334/140 301/338/143
+f 295/339/144 296/331/137 290/330/136
+f 294/340/141 295/339/144 289/329/135
+f 305/341/145 306/342/146 300/343/140
+f 303/344/147 304/345/148 298/346/142
+f 302/347/149 303/344/147 297/348/138
+f 301/338/143 302/347/149 296/331/137
+f 300/343/140 306/342/146 307/349/150
+f 311/350/151 312/351/152 306/352/146
+f 309/353/153 310/354/154 304/355/148
+f 308/356/155 309/353/153 303/357/147
+f 307/349/150 308/356/155 302/347/149
+f 321/358/156 279/359/157 280/360/128
+f 317/361/158 318/362/159 312/363/152
+f 315/364/160 316/365/161 310/366/154
+f 314/367/162 315/364/160 309/368/153
+f 313/369/163 314/367/162 308/356/155
+f 312/351/152 313/369/163 307/349/150
+f 275/370/164 276/371/165 318/372/159
+f 321/373/156 322/374/166 316/375/161
+f 320/376/167 321/373/156 315/377/160
+f 319/378/168 320/376/167 314/379/162
+f 318/362/159 319/378/168 313/380/163
+f 320/376/167 278/326/133 279/359/157
+f 275/381/164 281/382/169 282/327/125
+f 277/328/134 278/326/133 320/376/167
+f 276/371/165 277/328/134 319/378/168
+f 322/383/166 280/360/128 323/384/170
+f 316/375/161 322/374/166 323/385/170
+f 310/366/154 316/365/161 323/386/170
+f 304/355/148 310/354/154 323/387/170
+f 298/346/142 304/345/148 323/388/170
+f 292/337/130 298/336/142 323/389/170
+f 286/390/127 292/323/130 323/391/170
+f 281/382/169 275/381/164 324/392/171
+f 287/315/123 281/393/169 324/394/171
+f 293/395/172 287/396/123 324/397/171
+f 299/333/139 293/398/172 324/399/171
+f 305/341/145 299/400/139 324/401/171
+f 293/395/172 294/340/141 288/402/124
+f 311/350/151 305/403/145 324/404/171
+f 317/361/158 311/405/151 324/406/171
+f 275/370/164 317/407/158 324/408/171
+f 280/320/128 286/319/127 323/409/170
+f 281/393/169 287/315/123 282/317/125
+f 279/410/157 285/318/126 280/320/128
+f 277/328/134 283/324/131 278/326/133
+f 276/411/165 282/327/125 277/328/134
+f 284/325/132 290/330/136 285/321/126
+f 283/324/131 289/329/135 284/325/132
+f 293/398/172 299/333/139 294/335/141
+f 291/412/129 297/332/138 292/337/130
+f 289/329/135 295/339/144 290/330/136
+f 288/402/124 294/340/141 289/329/135
+f 299/400/139 305/341/145 300/343/140
+f 297/348/138 303/344/147 298/346/142
+f 296/331/137 302/347/149 297/348/138
+f 295/339/144 301/338/143 296/331/137
+f 305/403/145 311/350/151 306/352/146
+f 303/357/147 309/353/153 304/355/148
+f 302/347/149 308/356/155 303/357/147
+f 301/338/143 307/349/150 302/347/149
+f 311/405/151 317/361/158 312/363/152
+f 309/368/153 315/364/160 310/366/154
+f 308/356/155 314/367/162 309/368/153
+f 307/349/150 313/369/163 308/356/155
+f 306/352/146 312/351/152 307/349/150
+f 317/407/158 275/370/164 318/372/159
+f 315/377/160 321/373/156 316/375/161
+f 314/379/162 320/376/167 315/377/160
+f 313/380/163 319/378/168 314/379/162
+f 312/363/152 318/362/159 313/380/163
+f 319/378/168 277/328/134 320/376/167
+f 318/372/159 276/371/165 319/378/168
+f 287/396/123 293/395/172 288/402/124
+f 278/326/133 284/325/132 285/318/126
+f 286/390/127 285/321/126 292/323/130
+f 283/324/131 282/317/125 289/329/135
+f 291/412/129 290/330/136 297/332/138
+f 295/339/144 294/335/141 301/338/143
+f 301/338/143 300/343/140 307/349/150
+f 322/383/166 321/358/156 280/360/128
+f 321/358/156 320/376/167 279/359/157
+f 276/411/165 275/381/164 282/327/125
+f 279/410/157 278/326/133 285/318/126
+f 337/413/173 338/414/174 332/415/175
+f 335/416/176 336/417/177 330/418/178
+f 335/419/176 341/420/179 342/421/180
+f 333/422/181 334/423/182 328/424/183
+f 332/425/175 333/422/181 327/426/184
+f 332/415/175 338/414/174 339/427/185
+f 340/428/186 341/420/179 335/419/176
+f 339/427/185 340/428/186 334/423/182
+f 340/428/186 346/429/187 347/430/188
+f 349/431/189 350/432/190 344/433/191
+f 347/430/188 348/434/192 342/435/180
+f 344/433/191 350/432/190 351/436/193
+f 345/437/194 346/429/187 340/428/186
+f 344/438/191 345/437/194 339/427/185
+f 355/439/195 356/440/196 350/441/190
+f 353/442/197 354/443/198 348/444/192
+f 352/445/199 353/442/197 347/446/188
+f 351/436/193 352/445/199 346/429/187
+f 350/441/190 356/440/196 357/447/200
+f 361/448/201 362/449/202 356/450/196
+f 359/451/203 360/452/204 354/453/198
+f 358/454/205 359/451/203 353/455/197
+f 357/447/200 358/454/205 352/445/199
+f 371/456/206 329/457/207 330/458/178
+f 367/459/208 368/460/209 362/461/202
+f 365/462/210 366/463/211 360/464/204
+f 364/465/212 365/462/210 359/466/203
+f 363/467/213 364/465/212 358/454/205
+f 362/449/202 363/467/213 357/447/200
+f 325/468/214 326/469/215 368/470/209
+f 371/471/206 372/472/216 366/473/211
+f 370/474/217 371/471/206 365/475/210
+f 369/476/218 370/474/217 364/477/212
+f 368/460/209 369/476/218 363/478/213
+f 370/474/217 328/424/183 329/457/207
+f 325/479/214 331/480/219 332/425/175
+f 327/426/184 328/424/183 370/474/217
+f 326/469/215 327/426/184 369/476/218
+f 372/481/216 330/458/178 373/482/220
+f 366/473/211 372/472/216 373/483/220
+f 360/464/204 366/463/211 373/484/220
+f 354/453/198 360/452/204 373/485/220
+f 348/444/192 354/443/198 373/486/220
+f 342/435/180 348/434/192 373/487/220
+f 336/488/177 342/421/180 373/489/220
+f 331/480/219 325/479/214 374/490/221
+f 337/413/173 331/491/219 374/492/221
+f 343/493/222 337/494/173 374/495/221
+f 349/431/189 343/496/222 374/497/221
+f 355/439/195 349/498/189 374/499/221
+f 343/493/222 344/438/191 338/500/174
+f 361/448/201 355/501/195 374/502/221
+f 367/459/208 361/503/201 374/504/221
+f 325/468/214 367/505/208 374/506/221
+f 330/418/178 336/417/177 373/507/220
+f 331/491/219 337/413/173 332/415/175
+f 329/508/207 335/416/176 330/418/178
+f 327/426/184 333/422/181 328/424/183
+f 326/509/215 332/425/175 327/426/184
+f 334/423/182 340/428/186 335/419/176
+f 333/422/181 339/427/185 334/423/182
+f 343/496/222 349/431/189 344/433/191
+f 341/510/179 347/430/188 342/435/180
+f 339/427/185 345/437/194 340/428/186
+f 338/500/174 344/438/191 339/427/185
+f 349/498/189 355/439/195 350/441/190
+f 347/446/188 353/442/197 348/444/192
+f 346/429/187 352/445/199 347/446/188
+f 345/437/194 351/436/193 346/429/187
+f 355/501/195 361/448/201 356/450/196
+f 353/455/197 359/451/203 354/453/198
+f 352/445/199 358/454/205 353/455/197
+f 351/436/193 357/447/200 352/445/199
+f 361/503/201 367/459/208 362/461/202
+f 359/466/203 365/462/210 360/464/204
+f 358/454/205 364/465/212 359/466/203
+f 357/447/200 363/467/213 358/454/205
+f 356/450/196 362/449/202 357/447/200
+f 367/505/208 325/468/214 368/470/209
+f 365/475/210 371/471/206 366/473/211
+f 364/477/212 370/474/217 365/475/210
+f 363/478/213 369/476/218 364/477/212
+f 362/461/202 368/460/209 363/478/213
+f 369/476/218 327/426/184 370/474/217
+f 368/470/209 326/469/215 369/476/218
+f 337/494/173 343/493/222 338/500/174
+f 328/424/183 334/423/182 335/416/176
+f 336/488/177 335/419/176 342/421/180
+f 333/422/181 332/415/175 339/427/185
+f 341/510/179 340/428/186 347/430/188
+f 345/437/194 344/433/191 351/436/193
+f 351/436/193 350/441/190 357/447/200
+f 372/481/216 371/456/206 330/458/178
+f 371/456/206 370/474/217 329/457/207
+f 326/509/215 325/479/214 332/425/175
+f 329/508/207 328/424/183 335/416/176
+f 387/511/223 388/512/224 382/513/225
+f 385/514/226 386/515/227 380/516/228
+f 385/517/226 391/518/229 392/519/230
+f 383/520/231 384/521/232 378/522/233
+f 382/523/225 383/520/231 377/524/234
+f 382/513/225 388/512/224 389/525/235
+f 390/526/236 391/518/229 385/517/226
+f 389/525/235 390/526/236 384/521/232
+f 390/526/236 396/527/237 397/528/238
+f 399/529/239 400/530/240 394/531/241
+f 397/528/238 398/532/242 392/533/230
+f 394/531/241 400/530/240 401/534/243
+f 395/535/244 396/527/237 390/526/236
+f 394/536/241 395/535/244 389/525/235
+f 405/537/245 406/538/246 400/539/240
+f 403/540/247 404/541/248 398/542/242
+f 402/543/249 403/540/247 397/544/238
+f 401/534/243 402/543/249 396/527/237
+f 400/539/240 406/538/246 407/545/250
+f 411/546/251 412/547/252 406/548/246
+f 409/549/253 410/550/254 404/551/248
+f 408/552/255 409/549/253 403/553/247
+f 407/545/250 408/552/255 402/543/249
+f 421/554/256 379/555/257 380/556/228
+f 417/557/258 418/558/259 412/559/252
+f 415/560/260 416/561/261 410/562/254
+f 414/563/262 415/560/260 409/564/253
+f 413/565/263 414/563/262 408/552/255
+f 412/547/252 413/565/263 407/545/250
+f 375/566/264 376/567/265 418/568/259
+f 421/569/256 422/570/266 416/571/261
+f 420/572/267 421/569/256 415/573/260
+f 419/574/268 420/572/267 414/575/262
+f 418/558/259 419/574/268 413/576/263
+f 420/572/267 378/522/233 379/555/257
+f 375/577/264 381/578/269 382/523/225
+f 377/524/234 378/522/233 420/572/267
+f 376/567/265 377/524/234 419/574/268
+f 422/579/266 380/556/228 423/580/270
+f 416/571/261 422/570/266 423/581/270
+f 410/562/254 416/561/261 423/582/270
+f 404/551/248 410/550/254 423/583/270
+f 398/542/242 404/541/248 423/584/270
+f 392/533/230 398/532/242 423/585/270
+f 386/586/227 392/519/230 423/587/270
+f 381/578/269 375/577/264 424/588/271
+f 387/511/223 381/589/269 424/590/271
+f 393/591/272 387/592/223 424/593/271
+f 399/529/239 393/594/272 424/595/271
+f 405/537/245 399/596/239 424/597/271
+f 393/591/272 394/536/241 388/598/224
+f 411/546/251 405/599/245 424/600/271
+f 417/557/258 411/601/251 424/602/271
+f 375/566/264 417/603/258 424/604/271
+f 380/516/228 386/515/227 423/605/270
+f 381/589/269 387/511/223 382/513/225
+f 379/606/257 385/514/226 380/516/228
+f 377/524/234 383/520/231 378/522/233
+f 376/607/265 382/523/225 377/524/234
+f 384/521/232 390/526/236 385/517/226
+f 383/520/231 389/525/235 384/521/232
+f 393/594/272 399/529/239 394/531/241
+f 391/608/229 397/528/238 392/533/230
+f 389/525/235 395/535/244 390/526/236
+f 388/598/224 394/536/241 389/525/235
+f 399/596/239 405/537/245 400/539/240
+f 397/544/238 403/540/247 398/542/242
+f 396/527/237 402/543/249 397/544/238
+f 395/535/244 401/534/243 396/527/237
+f 405/599/245 411/546/251 406/548/246
+f 403/553/247 409/549/253 404/551/248
+f 402/543/249 408/552/255 403/553/247
+f 401/534/243 407/545/250 402/543/249
+f 411/601/251 417/557/258 412/559/252
+f 409/564/253 415/560/260 410/562/254
+f 408/552/255 414/563/262 409/564/253
+f 407/545/250 413/565/263 408/552/255
+f 406/548/246 412/547/252 407/545/250
+f 417/603/258 375/566/264 418/568/259
+f 415/573/260 421/569/256 416/571/261
+f 414/575/262 420/572/267 415/573/260
+f 413/576/263 419/574/268 414/575/262
+f 412/559/252 418/558/259 413/576/263
+f 419/574/268 377/524/234 420/572/267
+f 418/568/259 376/567/265 419/574/268
+f 387/592/223 393/591/272 388/598/224
+f 378/522/233 384/521/232 385/514/226
+f 386/586/227 385/517/226 392/519/230
+f 383/520/231 382/513/225 389/525/235
+f 391/608/229 390/526/236 397/528/238
+f 395/535/244 394/531/241 401/534/243
+f 401/534/243 400/539/240 407/545/250
+f 422/579/266 421/554/256 380/556/228
+f 421/554/256 420/572/267 379/555/257
+f 376/607/265 375/577/264 382/523/225
+f 379/606/257 378/522/233 385/514/226
+f 437/609/273 438/610/274 432/611/275
+f 435/612/276 436/613/277 430/614/278
+f 435/615/276 441/616/279 442/617/280
+f 433/618/281 434/619/282 428/620/283
+f 432/621/275 433/618/281 427/622/284
+f 432/611/275 438/610/274 439/623/285
+f 440/624/286 441/616/279 435/615/276
+f 439/623/285 440/624/286 434/619/282
+f 440/624/286 446/625/287 447/626/288
+f 449/627/289 450/628/290 444/629/291
+f 447/626/288 448/630/292 442/631/280
+f 444/629/291 450/628/290 451/632/293
+f 445/633/294 446/625/287 440/624/286
+f 444/634/291 445/633/294 439/623/285
+f 455/635/295 456/636/296 450/637/290
+f 453/638/297 454/639/298 448/640/292
+f 452/641/299 453/638/297 447/642/288
+f 451/632/293 452/641/299 446/625/287
+f 450/637/290 456/636/296 457/643/300
+f 461/644/301 462/645/302 456/646/296
+f 459/647/303 460/648/304 454/649/298
+f 458/650/305 459/647/303 453/651/297
+f 457/643/300 458/650/305 452/641/299
+f 471/652/306 429/653/307 430/654/278
+f 467/655/308 468/656/309 462/657/302
+f 465/658/310 466/659/311 460/660/304
+f 464/661/312 465/658/310 459/662/303
+f 463/663/313 464/661/312 458/650/305
+f 462/645/302 463/663/313 457/643/300
+f 425/664/314 426/665/315 468/666/309
+f 471/667/306 472/668/316 466/669/311
+f 470/670/317 471/667/306 465/671/310
+f 469/672/318 470/670/317 464/673/312
+f 468/656/309 469/672/318 463/674/313
+f 470/670/317 428/620/283 429/653/307
+f 425/675/314 431/676/319 432/621/275
+f 427/622/284 428/620/283 470/670/317
+f 426/665/315 427/622/284 469/672/318
+f 472/677/316 430/654/278 473/678/320
+f 466/669/311 472/668/316 473/679/320
+f 460/660/304 466/659/311 473/680/320
+f 454/649/298 460/648/304 473/681/320
+f 448/640/292 454/639/298 473/682/320
+f 442/631/280 448/630/292 473/683/320
+f 436/684/277 442/617/280 473/685/320
+f 431/676/319 425/675/314 474/686/321
+f 437/609/273 431/687/319 474/688/321
+f 443/689/322 437/690/273 474/691/321
+f 449/627/289 443/692/322 474/693/321
+f 455/635/295 449/694/289 474/695/321
+f 443/689/322 444/634/291 438/696/274
+f 461/644/301 455/697/295 474/698/321
+f 467/655/308 461/699/301 474/700/321
+f 425/664/314 467/701/308 474/702/321
+f 430/614/278 436/613/277 473/703/320
+f 431/687/319 437/609/273 432/611/275
+f 429/704/307 435/612/276 430/614/278
+f 427/622/284 433/618/281 428/620/283
+f 426/705/315 432/621/275 427/622/284
+f 434/619/282 440/624/286 435/615/276
+f 433/618/281 439/623/285 434/619/282
+f 443/692/322 449/627/289 444/629/291
+f 441/706/279 447/626/288 442/631/280
+f 439/623/285 445/633/294 440/624/286
+f 438/696/274 444/634/291 439/623/285
+f 449/694/289 455/635/295 450/637/290
+f 447/642/288 453/638/297 448/640/292
+f 446/625/287 452/641/299 447/642/288
+f 445/633/294 451/632/293 446/625/287
+f 455/697/295 461/644/301 456/646/296
+f 453/651/297 459/647/303 454/649/298
+f 452/641/299 458/650/305 453/651/297
+f 451/632/293 457/643/300 452/641/299
+f 461/699/301 467/655/308 462/657/302
+f 459/662/303 465/658/310 460/660/304
+f 458/650/305 464/661/312 459/662/303
+f 457/643/300 463/663/313 458/650/305
+f 456/646/296 462/645/302 457/643/300
+f 467/701/308 425/664/314 468/666/309
+f 465/671/310 471/667/306 466/669/311
+f 464/673/312 470/670/317 465/671/310
+f 463/674/313 469/672/318 464/673/312
+f 462/657/302 468/656/309 463/674/313
+f 469/672/318 427/622/284 470/670/317
+f 468/666/309 426/665/315 469/672/318
+f 437/690/273 443/689/322 438/696/274
+f 428/620/283 434/619/282 435/612/276
+f 436/684/277 435/615/276 442/617/280
+f 433/618/281 432/611/275 439/623/285
+f 441/706/279 440/624/286 447/626/288
+f 445/633/294 444/629/291 451/632/293
+f 451/632/293 450/637/290 457/643/300
+f 472/677/316 471/652/306 430/654/278
+f 471/652/306 470/670/317 429/653/307
+f 426/705/315 425/675/314 432/621/275
+f 429/704/307 428/620/283 435/612/276
+f 487/707/323 488/708/324 482/709/325
+f 485/710/326 486/711/327 480/712/328
+f 485/713/326 491/714/329 492/715/330
+f 483/716/331 484/717/332 478/718/333
+f 482/719/325 483/716/331 477/720/334
+f 482/709/325 488/708/324 489/721/335
+f 490/722/336 491/714/329 485/713/326
+f 489/721/335 490/722/336 484/717/332
+f 490/722/336 496/723/337 497/724/338
+f 499/725/339 500/726/340 494/727/341
+f 497/724/338 498/728/342 492/729/330
+f 494/727/341 500/726/340 501/730/343
+f 495/731/344 496/723/337 490/722/336
+f 494/732/341 495/731/344 489/721/335
+f 505/733/345 506/734/346 500/735/340
+f 503/736/347 504/737/348 498/738/342
+f 502/739/349 503/736/347 497/740/338
+f 501/730/343 502/739/349 496/723/337
+f 500/735/340 506/734/346 507/741/350
+f 511/742/351 512/743/352 506/744/346
+f 509/745/353 510/746/354 504/747/348
+f 508/748/355 509/745/353 503/749/347
+f 507/741/350 508/748/355 502/739/349
+f 521/750/356 479/751/357 480/752/328
+f 517/753/358 518/754/359 512/755/352
+f 515/756/360 516/757/361 510/758/354
+f 514/759/362 515/756/360 509/760/353
+f 513/761/363 514/759/362 508/748/355
+f 512/743/352 513/761/363 507/741/350
+f 475/762/364 476/763/365 518/764/359
+f 521/765/356 522/766/366 516/767/361
+f 520/768/367 521/765/356 515/769/360
+f 519/770/368 520/768/367 514/771/362
+f 518/754/359 519/770/368 513/772/363
+f 520/768/367 478/718/333 479/751/357
+f 475/773/364 481/774/369 482/719/325
+f 477/720/334 478/718/333 520/768/367
+f 476/763/365 477/720/334 519/770/368
+f 522/775/366 480/752/328 523/776/370
+f 516/767/361 522/766/366 523/777/370
+f 510/758/354 516/757/361 523/778/370
+f 504/747/348 510/746/354 523/779/370
+f 498/738/342 504/737/348 523/780/370
+f 492/729/330 498/728/342 523/781/370
+f 486/782/327 492/715/330 523/783/370
+f 481/774/369 475/773/364 524/784/371
+f 487/707/323 481/785/369 524/786/371
+f 493/787/372 487/788/323 524/789/371
+f 499/725/339 493/790/372 524/791/371
+f 505/733/345 499/792/339 524/793/371
+f 493/787/372 494/732/341 488/794/324
+f 511/742/351 505/795/345 524/796/371
+f 517/753/358 511/797/351 524/798/371
+f 475/762/364 517/799/358 524/800/371
+f 480/712/328 486/711/327 523/801/370
+f 481/785/369 487/707/323 482/709/325
+f 479/802/357 485/710/326 480/712/328
+f 477/720/334 483/716/331 478/718/333
+f 476/803/365 482/719/325 477/720/334
+f 484/717/332 490/722/336 485/713/326
+f 483/716/331 489/721/335 484/717/332
+f 493/790/372 499/725/339 494/727/341
+f 491/804/329 497/724/338 492/729/330
+f 489/721/335 495/731/344 490/722/336
+f 488/794/324 494/732/341 489/721/335
+f 499/792/339 505/733/345 500/735/340
+f 497/740/338 503/736/347 498/738/342
+f 496/723/337 502/739/349 497/740/338
+f 495/731/344 501/730/343 496/723/337
+f 505/795/345 511/742/351 506/744/346
+f 503/749/347 509/745/353 504/747/348
+f 502/739/349 508/748/355 503/749/347
+f 501/730/343 507/741/350 502/739/349
+f 511/797/351 517/753/358 512/755/352
+f 509/760/353 515/756/360 510/758/354
+f 508/748/355 514/759/362 509/760/353
+f 507/741/350 513/761/363 508/748/355
+f 506/744/346 512/743/352 507/741/350
+f 517/799/358 475/762/364 518/764/359
+f 515/769/360 521/765/356 516/767/361
+f 514/771/362 520/768/367 515/769/360
+f 513/772/363 519/770/368 514/771/362
+f 512/755/352 518/754/359 513/772/363
+f 519/770/368 477/720/334 520/768/367
+f 518/764/359 476/763/365 519/770/368
+f 487/788/323 493/787/372 488/794/324
+f 478/718/333 484/717/332 485/710/326
+f 486/782/327 485/713/326 492/715/330
+f 483/716/331 482/709/325 489/721/335
+f 491/804/329 490/722/336 497/724/338
+f 495/731/344 494/727/341 501/730/343
+f 501/730/343 500/735/340 507/741/350
+f 522/775/366 521/750/356 480/752/328
+f 521/750/356 520/768/367 479/751/357
+f 476/803/365 475/773/364 482/719/325
+f 479/802/357 478/718/333 485/710/326
+f 537/805/373 538/806/374 532/807/375
+f 535/808/376 536/809/377 530/810/378
+f 535/811/376 541/812/379 542/813/380
+f 533/814/381 534/815/382 528/816/383
+f 532/817/375 533/814/381 527/818/384
+f 532/807/375 538/806/374 539/819/385
+f 540/820/386 541/812/379 535/811/376
+f 539/819/385 540/820/386 534/815/382
+f 540/820/386 546/821/387 547/822/388
+f 549/823/389 550/824/390 544/825/391
+f 547/822/388 548/826/392 542/827/380
+f 544/825/391 550/824/390 551/828/393
+f 545/829/394 546/821/387 540/820/386
+f 544/830/391 545/829/394 539/819/385
+f 555/831/395 556/832/396 550/833/390
+f 553/834/397 554/835/398 548/836/392
+f 552/837/399 553/834/397 547/838/388
+f 551/828/393 552/837/399 546/821/387
+f 550/833/390 556/832/396 557/839/400
+f 561/840/401 562/841/402 556/842/396
+f 559/843/403 560/844/404 554/845/398
+f 558/846/405 559/843/403 553/847/397
+f 557/839/400 558/846/405 552/837/399
+f 571/848/406 529/849/407 530/850/378
+f 567/851/408 568/852/409 562/853/402
+f 565/854/410 566/855/411 560/856/404
+f 564/857/412 565/854/410 559/858/403
+f 563/859/413 564/857/412 558/846/405
+f 562/841/402 563/859/413 557/839/400
+f 525/860/414 526/861/415 568/862/409
+f 571/863/406 572/864/416 566/865/411
+f 570/866/417 571/863/406 565/867/410
+f 569/868/418 570/866/417 564/869/412
+f 568/852/409 569/868/418 563/870/413
+f 570/866/417 528/816/383 529/849/407
+f 525/871/414 531/872/419 532/817/375
+f 527/818/384 528/816/383 570/866/417
+f 526/861/415 527/818/384 569/868/418
+f 572/873/416 530/850/378 573/874/420
+f 566/865/411 572/864/416 573/875/420
+f 560/856/404 566/855/411 573/876/420
+f 554/845/398 560/844/404 573/877/420
+f 548/836/392 554/835/398 573/878/420
+f 542/827/380 548/826/392 573/879/420
+f 536/880/377 542/813/380 573/881/420
+f 531/872/419 525/871/414 574/882/421
+f 537/805/373 531/883/419 574/884/421
+f 543/885/422 537/886/373 574/887/421
+f 549/823/389 543/888/422 574/889/421
+f 555/831/395 549/890/389 574/891/421
+f 543/885/422 544/830/391 538/892/374
+f 561/840/401 555/893/395 574/894/421
+f 567/851/408 561/895/401 574/896/421
+f 525/860/414 567/897/408 574/898/421
+f 530/810/378 536/809/377 573/899/420
+f 531/883/419 537/805/373 532/807/375
+f 529/900/407 535/808/376 530/810/378
+f 527/818/384 533/814/381 528/816/383
+f 526/901/415 532/817/375 527/818/384
+f 534/815/382 540/820/386 535/811/376
+f 533/814/381 539/819/385 534/815/382
+f 543/888/422 549/823/389 544/825/391
+f 541/902/379 547/822/388 542/827/380
+f 539/819/385 545/829/394 540/820/386
+f 538/892/374 544/830/391 539/819/385
+f 549/890/389 555/831/395 550/833/390
+f 547/838/388 553/834/397 548/836/392
+f 546/821/387 552/837/399 547/838/388
+f 545/829/394 551/828/393 546/821/387
+f 555/893/395 561/840/401 556/842/396
+f 553/847/397 559/843/403 554/845/398
+f 552/837/399 558/846/405 553/847/397
+f 551/828/393 557/839/400 552/837/399
+f 561/895/401 567/851/408 562/853/402
+f 559/858/403 565/854/410 560/856/404
+f 558/846/405 564/857/412 559/858/403
+f 557/839/400 563/859/413 558/846/405
+f 556/842/396 562/841/402 557/839/400
+f 567/897/408 525/860/414 568/862/409
+f 565/867/410 571/863/406 566/865/411
+f 564/869/412 570/866/417 565/867/410
+f 563/870/413 569/868/418 564/869/412
+f 562/853/402 568/852/409 563/870/413
+f 569/868/418 527/818/384 570/866/417
+f 568/862/409 526/861/415 569/868/418
+f 537/886/373 543/885/422 538/892/374
+f 528/816/383 534/815/382 535/808/376
+f 536/880/377 535/811/376 542/813/380
+f 533/814/381 532/807/375 539/819/385
+f 541/902/379 540/820/386 547/822/388
+f 545/829/394 544/825/391 551/828/393
+f 551/828/393 550/833/390 557/839/400
+f 572/873/416 571/848/406 530/850/378
+f 571/848/406 570/866/417 529/849/407
+f 526/901/415 525/871/414 532/817/375
+f 529/900/407 528/816/383 535/808/376
+f 587/903/423 588/904/424 582/905/425
+f 585/906/426 586/907/427 580/908/428
+f 585/909/426 591/910/429 592/911/430
+f 583/912/431 584/913/432 578/914/433
+f 582/915/425 583/912/431 577/916/434
+f 582/905/425 588/904/424 589/917/435
+f 590/918/436 591/910/429 585/909/426
+f 589/917/435 590/918/436 584/913/432
+f 590/918/436 596/919/437 597/920/438
+f 599/921/439 600/922/440 594/923/441
+f 597/920/438 598/924/442 592/925/430
+f 594/923/441 600/922/440 601/926/443
+f 595/927/444 596/919/437 590/918/436
+f 594/928/441 595/927/444 589/917/435
+f 605/929/445 606/930/446 600/931/440
+f 603/932/447 604/933/448 598/934/442
+f 602/935/449 603/932/447 597/936/438
+f 601/926/443 602/935/449 596/919/437
+f 600/931/440 606/930/446 607/937/450
+f 611/938/451 612/939/452 606/940/446
+f 609/941/453 610/942/454 604/943/448
+f 608/944/455 609/941/453 603/945/447
+f 607/937/450 608/944/455 602/935/449
+f 621/946/456 579/947/457 580/948/428
+f 617/949/458 618/950/459 612/951/452
+f 615/952/460 616/953/461 610/954/454
+f 614/955/462 615/952/460 609/956/453
+f 613/957/463 614/955/462 608/944/455
+f 612/939/452 613/957/463 607/937/450
+f 575/958/464 576/959/465 618/960/459
+f 621/961/456 622/962/466 616/963/461
+f 620/964/467 621/961/456 615/965/460
+f 619/966/468 620/964/467 614/967/462
+f 618/950/459 619/966/468 613/968/463
+f 620/964/467 578/914/433 579/947/457
+f 575/969/464 581/970/469 582/915/425
+f 577/916/434 578/914/433 620/964/467
+f 576/959/465 577/916/434 619/966/468
+f 622/971/466 580/948/428 623/972/470
+f 616/963/461 622/962/466 623/973/470
+f 610/954/454 616/953/461 623/974/470
+f 604/943/448 610/942/454 623/975/470
+f 598/934/442 604/933/448 623/976/470
+f 592/925/430 598/924/442 623/977/470
+f 586/978/427 592/911/430 623/979/470
+f 581/970/469 575/969/464 624/980/471
+f 587/903/423 581/981/469 624/982/471
+f 593/983/472 587/984/423 624/985/471
+f 599/921/439 593/986/472 624/987/471
+f 605/929/445 599/988/439 624/989/471
+f 593/983/472 594/928/441 588/990/424
+f 611/938/451 605/991/445 624/992/471
+f 617/949/458 611/993/451 624/994/471
+f 575/958/464 617/995/458 624/996/471
+f 580/908/428 586/907/427 623/997/470
+f 581/981/469 587/903/423 582/905/425
+f 579/998/457 585/906/426 580/908/428
+f 577/916/434 583/912/431 578/914/433
+f 576/999/465 582/915/425 577/916/434
+f 584/913/432 590/918/436 585/909/426
+f 583/912/431 589/917/435 584/913/432
+f 593/986/472 599/921/439 594/923/441
+f 591/1000/429 597/920/438 592/925/430
+f 589/917/435 595/927/444 590/918/436
+f 588/990/424 594/928/441 589/917/435
+f 599/988/439 605/929/445 600/931/440
+f 597/936/438 603/932/447 598/934/442
+f 596/919/437 602/935/449 597/936/438
+f 595/927/444 601/926/443 596/919/437
+f 605/991/445 611/938/451 606/940/446
+f 603/945/447 609/941/453 604/943/448
+f 602/935/449 608/944/455 603/945/447
+f 601/926/443 607/937/450 602/935/449
+f 611/993/451 617/949/458 612/951/452
+f 609/956/453 615/952/460 610/954/454
+f 608/944/455 614/955/462 609/956/453
+f 607/937/450 613/957/463 608/944/455
+f 606/940/446 612/939/452 607/937/450
+f 617/995/458 575/958/464 618/960/459
+f 615/965/460 621/961/456 616/963/461
+f 614/967/462 620/964/467 615/965/460
+f 613/968/463 619/966/468 614/967/462
+f 612/951/452 618/950/459 613/968/463
+f 619/966/468 577/916/434 620/964/467
+f 618/960/459 576/959/465 619/966/468
+f 587/984/423 593/983/472 588/990/424
+f 578/914/433 584/913/432 585/906/426
+f 586/978/427 585/909/426 592/911/430
+f 583/912/431 582/905/425 589/917/435
+f 591/1000/429 590/918/436 597/920/438
+f 595/927/444 594/923/441 601/926/443
+f 601/926/443 600/931/440 607/937/450
+f 622/971/466 621/946/456 580/948/428
+f 621/946/456 620/964/467 579/947/457
+f 576/999/465 575/969/464 582/915/425
+f 579/998/457 578/914/433 585/906/426
+f 637/1001/473 638/1002/474 632/1003/475
+f 635/1004/476 636/1005/477 630/1006/478
+f 635/1007/476 641/1008/479 642/1009/480
+f 633/1010/481 634/1011/482 628/1012/483
+f 632/1013/475 633/1010/481 627/1014/484
+f 632/1003/475 638/1002/474 639/1015/485
+f 640/1016/486 641/1008/479 635/1007/476
+f 639/1015/485 640/1016/486 634/1011/482
+f 640/1016/486 646/1017/487 647/1018/488
+f 649/1019/489 650/1020/490 644/1021/491
+f 647/1018/488 648/1022/492 642/1023/480
+f 644/1021/491 650/1020/490 651/1024/493
+f 645/1025/494 646/1017/487 640/1016/486
+f 644/1026/491 645/1025/494 639/1015/485
+f 655/1027/495 656/1028/496 650/1029/490
+f 653/1030/497 654/1031/498 648/1032/492
+f 652/1033/499 653/1030/497 647/1034/488
+f 651/1024/493 652/1033/499 646/1017/487
+f 650/1029/490 656/1028/496 657/1035/500
+f 661/1036/501 662/1037/502 656/1038/496
+f 659/1039/503 660/1040/504 654/1041/498
+f 658/1042/505 659/1039/503 653/1043/497
+f 657/1035/500 658/1042/505 652/1033/499
+f 671/1044/506 629/1045/507 630/1046/478
+f 667/1047/508 668/1048/509 662/1049/502
+f 665/1050/510 666/1051/511 660/1052/504
+f 664/1053/512 665/1050/510 659/1054/503
+f 663/1055/513 664/1053/512 658/1042/505
+f 662/1037/502 663/1055/513 657/1035/500
+f 625/1056/514 626/1057/515 668/1058/509
+f 671/1059/506 672/1060/516 666/1061/511
+f 670/1062/517 671/1059/506 665/1063/510
+f 669/1064/518 670/1062/517 664/1065/512
+f 668/1048/509 669/1064/518 663/1066/513
+f 670/1062/517 628/1012/483 629/1045/507
+f 625/1067/514 631/1068/519 632/1013/475
+f 627/1014/484 628/1012/483 670/1062/517
+f 626/1057/515 627/1014/484 669/1064/518
+f 672/1069/516 630/1046/478 673/1070/520
+f 666/1061/511 672/1060/516 673/1071/520
+f 660/1052/504 666/1051/511 673/1072/520
+f 654/1041/498 660/1040/504 673/1073/520
+f 648/1032/492 654/1031/498 673/1074/520
+f 642/1023/480 648/1022/492 673/1075/520
+f 636/1076/477 642/1009/480 673/1077/520
+f 631/1068/519 625/1067/514 674/1078/521
+f 637/1001/473 631/1079/519 674/1080/521
+f 643/1081/522 637/1082/473 674/1083/521
+f 649/1019/489 643/1084/522 674/1085/521
+f 655/1027/495 649/1086/489 674/1087/521
+f 643/1081/522 644/1026/491 638/1088/474
+f 661/1036/501 655/1089/495 674/1090/521
+f 667/1047/508 661/1091/501 674/1092/521
+f 625/1056/514 667/1093/508 674/1094/521
+f 630/1006/478 636/1005/477 673/1095/520
+f 631/1079/519 637/1001/473 632/1003/475
+f 629/1096/507 635/1004/476 630/1006/478
+f 627/1014/484 633/1010/481 628/1012/483
+f 626/1097/515 632/1013/475 627/1014/484
+f 634/1011/482 640/1016/486 635/1007/476
+f 633/1010/481 639/1015/485 634/1011/482
+f 643/1084/522 649/1019/489 644/1021/491
+f 641/1098/479 647/1018/488 642/1023/480
+f 639/1015/485 645/1025/494 640/1016/486
+f 638/1088/474 644/1026/491 639/1015/485
+f 649/1086/489 655/1027/495 650/1029/490
+f 647/1034/488 653/1030/497 648/1032/492
+f 646/1017/487 652/1033/499 647/1034/488
+f 645/1025/494 651/1024/493 646/1017/487
+f 655/1089/495 661/1036/501 656/1038/496
+f 653/1043/497 659/1039/503 654/1041/498
+f 652/1033/499 658/1042/505 653/1043/497
+f 651/1024/493 657/1035/500 652/1033/499
+f 661/1091/501 667/1047/508 662/1049/502
+f 659/1054/503 665/1050/510 660/1052/504
+f 658/1042/505 664/1053/512 659/1054/503
+f 657/1035/500 663/1055/513 658/1042/505
+f 656/1038/496 662/1037/502 657/1035/500
+f 667/1093/508 625/1056/514 668/1058/509
+f 665/1063/510 671/1059/506 666/1061/511
+f 664/1065/512 670/1062/517 665/1063/510
+f 663/1066/513 669/1064/518 664/1065/512
+f 662/1049/502 668/1048/509 663/1066/513
+f 669/1064/518 627/1014/484 670/1062/517
+f 668/1058/509 626/1057/515 669/1064/518
+f 637/1082/473 643/1081/522 638/1088/474
+f 628/1012/483 634/1011/482 635/1004/476
+f 636/1076/477 635/1007/476 642/1009/480
+f 633/1010/481 632/1003/475 639/1015/485
+f 641/1098/479 640/1016/486 647/1018/488
+f 645/1025/494 644/1021/491 651/1024/493
+f 651/1024/493 650/1029/490 657/1035/500
+f 672/1069/516 671/1044/506 630/1046/478
+f 671/1044/506 670/1062/517 629/1045/507
+f 626/1097/515 625/1067/514 632/1013/475
+f 629/1096/507 628/1012/483 635/1004/476
+f 687/1099/523 688/1100/524 682/1101/525
+f 685/1102/526 686/1103/527 680/1104/528
+f 685/1105/526 691/1106/529 692/1107/530
+f 683/1108/531 684/1109/532 678/1110/533
+f 682/1111/525 683/1108/531 677/1112/534
+f 682/1101/525 688/1100/524 689/1113/535
+f 690/1114/536 691/1106/529 685/1105/526
+f 689/1113/535 690/1114/536 684/1109/532
+f 690/1114/536 696/1115/537 697/1116/538
+f 699/1117/539 700/1118/540 694/1119/541
+f 697/1116/538 698/1120/542 692/1121/530
+f 694/1119/541 700/1118/540 701/1122/543
+f 695/1123/544 696/1115/537 690/1114/536
+f 694/1124/541 695/1123/544 689/1113/535
+f 705/1125/545 706/1126/546 700/1127/540
+f 703/1128/547 704/1129/548 698/1130/542
+f 702/1131/549 703/1128/547 697/1132/538
+f 701/1122/543 702/1131/549 696/1115/537
+f 700/1127/540 706/1126/546 707/1133/550
+f 711/1134/551 712/1135/552 706/1136/546
+f 709/1137/553 710/1138/554 704/1139/548
+f 708/1140/555 709/1137/553 703/1141/547
+f 707/1133/550 708/1140/555 702/1131/549
+f 721/1142/556 679/1143/557 680/1144/528
+f 717/1145/558 718/1146/559 712/1147/552
+f 715/1148/560 716/1149/561 710/1150/554
+f 714/1151/562 715/1148/560 709/1152/553
+f 713/1153/563 714/1151/562 708/1140/555
+f 712/1135/552 713/1153/563 707/1133/550
+f 675/1154/564 676/1155/565 718/1156/559
+f 721/1157/556 722/1158/566 716/1159/561
+f 720/1160/567 721/1157/556 715/1161/560
+f 719/1162/568 720/1160/567 714/1163/562
+f 718/1146/559 719/1162/568 713/1164/563
+f 720/1160/567 678/1110/533 679/1143/557
+f 675/1165/564 681/1166/569 682/1111/525
+f 677/1112/534 678/1110/533 720/1160/567
+f 676/1155/565 677/1112/534 719/1162/568
+f 722/1167/566 680/1144/528 723/1168/570
+f 716/1159/561 722/1158/566 723/1169/570
+f 710/1150/554 716/1149/561 723/1170/570
+f 704/1139/548 710/1138/554 723/1171/570
+f 698/1130/542 704/1129/548 723/1172/570
+f 692/1121/530 698/1120/542 723/1173/570
+f 686/1174/527 692/1107/530 723/1175/570
+f 681/1166/569 675/1165/564 724/1176/571
+f 687/1099/523 681/1177/569 724/1178/571
+f 693/1179/572 687/1180/523 724/1181/571
+f 699/1117/539 693/1182/572 724/1183/571
+f 705/1125/545 699/1184/539 724/1185/571
+f 693/1179/572 694/1124/541 688/1186/524
+f 711/1134/551 705/1187/545 724/1188/571
+f 717/1145/558 711/1189/551 724/1190/571
+f 675/1154/564 717/1191/558 724/1192/571
+f 680/1104/528 686/1103/527 723/1193/570
+f 681/1177/569 687/1099/523 682/1101/525
+f 679/1194/557 685/1102/526 680/1104/528
+f 677/1112/534 683/1108/531 678/1110/533
+f 676/1195/565 682/1111/525 677/1112/534
+f 684/1109/532 690/1114/536 685/1105/526
+f 683/1108/531 689/1113/535 684/1109/532
+f 693/1182/572 699/1117/539 694/1119/541
+f 691/1196/529 697/1116/538 692/1121/530
+f 689/1113/535 695/1123/544 690/1114/536
+f 688/1186/524 694/1124/541 689/1113/535
+f 699/1184/539 705/1125/545 700/1127/540
+f 697/1132/538 703/1128/547 698/1130/542
+f 696/1115/537 702/1131/549 697/1132/538
+f 695/1123/544 701/1122/543 696/1115/537
+f 705/1187/545 711/1134/551 706/1136/546
+f 703/1141/547 709/1137/553 704/1139/548
+f 702/1131/549 708/1140/555 703/1141/547
+f 701/1122/543 707/1133/550 702/1131/549
+f 711/1189/551 717/1145/558 712/1147/552
+f 709/1152/553 715/1148/560 710/1150/554
+f 708/1140/555 714/1151/562 709/1152/553
+f 707/1133/550 713/1153/563 708/1140/555
+f 706/1136/546 712/1135/552 707/1133/550
+f 717/1191/558 675/1154/564 718/1156/559
+f 715/1161/560 721/1157/556 716/1159/561
+f 714/1163/562 720/1160/567 715/1161/560
+f 713/1164/563 719/1162/568 714/1163/562
+f 712/1147/552 718/1146/559 713/1164/563
+f 719/1162/568 677/1112/534 720/1160/567
+f 718/1156/559 676/1155/565 719/1162/568
+f 687/1180/523 693/1179/572 688/1186/524
+f 678/1110/533 684/1109/532 685/1102/526
+f 686/1174/527 685/1105/526 692/1107/530
+f 683/1108/531 682/1101/525 689/1113/535
+f 691/1196/529 690/1114/536 697/1116/538
+f 695/1123/544 694/1119/541 701/1122/543
+f 701/1122/543 700/1127/540 707/1133/550
+f 722/1167/566 721/1142/556 680/1144/528
+f 721/1142/556 720/1160/567 679/1143/557
+f 676/1195/565 675/1165/564 682/1111/525
+f 679/1194/557 678/1110/533 685/1102/526
+f 737/1197/573 738/1198/574 732/1199/575
+f 735/1200/576 736/1201/577 730/1202/578
+f 735/1203/576 741/1204/579 742/1205/580
+f 733/1206/581 734/1207/582 728/1208/583
+f 732/1209/575 733/1206/581 727/1210/584
+f 732/1199/575 738/1198/574 739/1211/585
+f 740/1212/586 741/1204/579 735/1203/576
+f 739/1211/585 740/1212/586 734/1207/582
+f 740/1212/586 746/1213/587 747/1214/588
+f 749/1215/589 750/1216/590 744/1217/591
+f 747/1214/588 748/1218/592 742/1219/580
+f 744/1217/591 750/1216/590 751/1220/593
+f 745/1221/594 746/1213/587 740/1212/586
+f 744/1222/591 745/1221/594 739/1211/585
+f 755/1223/595 756/1224/596 750/1225/590
+f 753/1226/597 754/1227/598 748/1228/592
+f 752/1229/599 753/1226/597 747/1230/588
+f 751/1220/593 752/1229/599 746/1213/587
+f 750/1225/590 756/1224/596 757/1231/600
+f 761/1232/601 762/1233/602 756/1234/596
+f 759/1235/603 760/1236/604 754/1237/598
+f 758/1238/605 759/1235/603 753/1239/597
+f 757/1231/600 758/1238/605 752/1229/599
+f 771/1240/606 729/1241/607 730/1242/578
+f 767/1243/608 768/1244/609 762/1245/602
+f 765/1246/610 766/1247/611 760/1248/604
+f 764/1249/612 765/1246/610 759/1250/603
+f 763/1251/613 764/1249/612 758/1238/605
+f 762/1233/602 763/1251/613 757/1231/600
+f 725/1252/614 726/1253/615 768/1254/609
+f 771/1255/606 772/1256/616 766/1257/611
+f 770/1258/617 771/1255/606 765/1259/610
+f 769/1260/618 770/1258/617 764/1261/612
+f 768/1244/609 769/1260/618 763/1262/613
+f 770/1258/617 728/1208/583 729/1241/607
+f 725/1263/614 731/1264/619 732/1209/575
+f 727/1210/584 728/1208/583 770/1258/617
+f 726/1253/615 727/1210/584 769/1260/618
+f 772/1265/616 730/1242/578 773/1266/620
+f 766/1257/611 772/1256/616 773/1267/620
+f 760/1248/604 766/1247/611 773/1268/620
+f 754/1237/598 760/1236/604 773/1269/620
+f 748/1228/592 754/1227/598 773/1270/620
+f 742/1219/580 748/1218/592 773/1271/620
+f 736/1272/577 742/1205/580 773/1273/620
+f 731/1264/619 725/1263/614 774/1274/621
+f 737/1197/573 731/1275/619 774/1276/621
+f 743/1277/622 737/1278/573 774/1279/621
+f 749/1215/589 743/1280/622 774/1281/621
+f 755/1223/595 749/1282/589 774/1283/621
+f 743/1277/622 744/1222/591 738/1284/574
+f 761/1232/601 755/1285/595 774/1286/621
+f 767/1243/608 761/1287/601 774/1288/621
+f 725/1252/614 767/1289/608 774/1290/621
+f 730/1202/578 736/1201/577 773/1291/620
+f 731/1275/619 737/1197/573 732/1199/575
+f 729/1292/607 735/1200/576 730/1202/578
+f 727/1210/584 733/1206/581 728/1208/583
+f 726/1293/615 732/1209/575 727/1210/584
+f 734/1207/582 740/1212/586 735/1203/576
+f 733/1206/581 739/1211/585 734/1207/582
+f 743/1280/622 749/1215/589 744/1217/591
+f 741/1294/579 747/1214/588 742/1219/580
+f 739/1211/585 745/1221/594 740/1212/586
+f 738/1284/574 744/1222/591 739/1211/585
+f 749/1282/589 755/1223/595 750/1225/590
+f 747/1230/588 753/1226/597 748/1228/592
+f 746/1213/587 752/1229/599 747/1230/588
+f 745/1221/594 751/1220/593 746/1213/587
+f 755/1285/595 761/1232/601 756/1234/596
+f 753/1239/597 759/1235/603 754/1237/598
+f 752/1229/599 758/1238/605 753/1239/597
+f 751/1220/593 757/1231/600 752/1229/599
+f 761/1287/601 767/1243/608 762/1245/602
+f 759/1250/603 765/1246/610 760/1248/604
+f 758/1238/605 764/1249/612 759/1250/603
+f 757/1231/600 763/1251/613 758/1238/605
+f 756/1234/596 762/1233/602 757/1231/600
+f 767/1289/608 725/1252/614 768/1254/609
+f 765/1259/610 771/1255/606 766/1257/611
+f 764/1261/612 770/1258/617 765/1259/610
+f 763/1262/613 769/1260/618 764/1261/612
+f 762/1245/602 768/1244/609 763/1262/613
+f 769/1260/618 727/1210/584 770/1258/617
+f 768/1254/609 726/1253/615 769/1260/618
+f 737/1278/573 743/1277/622 738/1284/574
+f 728/1208/583 734/1207/582 735/1200/576
+f 736/1272/577 735/1203/576 742/1205/580
+f 733/1206/581 732/1199/575 739/1211/585
+f 741/1294/579 740/1212/586 747/1214/588
+f 745/1221/594 744/1217/591 751/1220/593
+f 751/1220/593 750/1225/590 757/1231/600
+f 772/1265/616 771/1240/606 730/1242/578
+f 771/1240/606 770/1258/617 729/1241/607
+f 726/1293/615 725/1263/614 732/1209/575
+f 729/1292/607 728/1208/583 735/1200/576
+f 787/1295/623 788/1296/624 782/1297/625
+f 785/1298/626 786/1299/627 780/1300/628
+f 785/1301/626 791/1302/629 792/1303/630
+f 783/1304/631 784/1305/632 778/1306/633
+f 782/1307/625 783/1304/631 777/1308/634
+f 782/1297/625 788/1296/624 789/1309/635
+f 790/1310/636 791/1302/629 785/1301/626
+f 789/1309/635 790/1310/636 784/1305/632
+f 790/1310/636 796/1311/637 797/1312/638
+f 799/1313/639 800/1314/640 794/1315/641
+f 797/1312/638 798/1316/642 792/1317/630
+f 794/1315/641 800/1314/640 801/1318/643
+f 795/1319/644 796/1311/637 790/1310/636
+f 794/1320/641 795/1319/644 789/1309/635
+f 805/1321/645 806/1322/646 800/1323/640
+f 803/1324/647 804/1325/648 798/1326/642
+f 802/1327/649 803/1324/647 797/1328/638
+f 801/1318/643 802/1327/649 796/1311/637
+f 800/1323/640 806/1322/646 807/1329/650
+f 811/1330/651 812/1331/652 806/1332/646
+f 809/1333/653 810/1334/654 804/1335/648
+f 808/1336/655 809/1333/653 803/1337/647
+f 807/1329/650 808/1336/655 802/1327/649
+f 821/1338/656 779/1339/657 780/1340/628
+f 817/1341/658 818/1342/659 812/1343/652
+f 815/1344/660 816/1345/661 810/1346/654
+f 814/1347/662 815/1344/660 809/1348/653
+f 813/1349/663 814/1347/662 808/1336/655
+f 812/1331/652 813/1349/663 807/1329/650
+f 775/1350/664 776/1351/665 818/1352/659
+f 821/1353/656 822/1354/666 816/1355/661
+f 820/1356/667 821/1353/656 815/1357/660
+f 819/1358/668 820/1356/667 814/1359/662
+f 818/1342/659 819/1358/668 813/1360/663
+f 820/1356/667 778/1306/633 779/1339/657
+f 775/1361/664 781/1362/669 782/1307/625
+f 777/1308/634 778/1306/633 820/1356/667
+f 776/1351/665 777/1308/634 819/1358/668
+f 822/1363/666 780/1340/628 823/1364/320
+f 816/1355/661 822/1354/666 823/1365/320
+f 810/1346/654 816/1345/661 823/1366/320
+f 804/1335/648 810/1334/654 823/1367/320
+f 798/1326/642 804/1325/648 823/1368/320
+f 792/1317/630 798/1316/642 823/1369/320
+f 786/1370/627 792/1303/630 823/1371/320
+f 781/1362/669 775/1361/664 824/1372/321
+f 787/1295/623 781/1373/669 824/1374/321
+f 793/1375/670 787/1376/623 824/1377/321
+f 799/1313/639 793/1378/670 824/1379/321
+f 805/1321/645 799/1380/639 824/1381/321
+f 793/1375/670 794/1320/641 788/1382/624
+f 811/1330/651 805/1383/645 824/1384/321
+f 817/1341/658 811/1385/651 824/1386/321
+f 775/1350/664 817/1387/658 824/1388/321
+f 780/1300/628 786/1299/627 823/1389/320
+f 781/1373/669 787/1295/623 782/1297/625
+f 779/1390/657 785/1298/626 780/1300/628
+f 777/1308/634 783/1304/631 778/1306/633
+f 776/1391/665 782/1307/625 777/1308/634
+f 784/1305/632 790/1310/636 785/1301/626
+f 783/1304/631 789/1309/635 784/1305/632
+f 793/1378/670 799/1313/639 794/1315/641
+f 791/1392/629 797/1312/638 792/1317/630
+f 789/1309/635 795/1319/644 790/1310/636
+f 788/1382/624 794/1320/641 789/1309/635
+f 799/1380/639 805/1321/645 800/1323/640
+f 797/1328/638 803/1324/647 798/1326/642
+f 796/1311/637 802/1327/649 797/1328/638
+f 795/1319/644 801/1318/643 796/1311/637
+f 805/1383/645 811/1330/651 806/1332/646
+f 803/1337/647 809/1333/653 804/1335/648
+f 802/1327/649 808/1336/655 803/1337/647
+f 801/1318/643 807/1329/650 802/1327/649
+f 811/1385/651 817/1341/658 812/1343/652
+f 809/1348/653 815/1344/660 810/1346/654
+f 808/1336/655 814/1347/662 809/1348/653
+f 807/1329/650 813/1349/663 808/1336/655
+f 806/1332/646 812/1331/652 807/1329/650
+f 817/1387/658 775/1350/664 818/1352/659
+f 815/1357/660 821/1353/656 816/1355/661
+f 814/1359/662 820/1356/667 815/1357/660
+f 813/1360/663 819/1358/668 814/1359/662
+f 812/1343/652 818/1342/659 813/1360/663
+f 819/1358/668 777/1308/634 820/1356/667
+f 818/1352/659 776/1351/665 819/1358/668
+f 787/1376/623 793/1375/670 788/1382/624
+f 778/1306/633 784/1305/632 785/1298/626
+f 786/1370/627 785/1301/626 792/1303/630
+f 783/1304/631 782/1297/625 789/1309/635
+f 791/1392/629 790/1310/636 797/1312/638
+f 795/1319/644 794/1315/641 801/1318/643
+f 801/1318/643 800/1323/640 807/1329/650
+f 822/1363/666 821/1338/656 780/1340/628
+f 821/1338/656 820/1356/667 779/1339/657
+f 776/1391/665 775/1361/664 782/1307/625
+f 779/1390/657 778/1306/633 785/1298/626
+f 837/1393/671 838/1394/672 832/1395/673
+f 835/1396/674 836/1397/675 830/1398/676
+f 835/1399/674 841/1400/677 842/1401/678
+f 833/1402/679 834/1403/680 828/1404/681
+f 832/1405/673 833/1402/679 827/1406/682
+f 832/1395/673 838/1394/672 839/1407/683
+f 840/1408/684 841/1400/677 835/1399/674
+f 839/1407/683 840/1408/684 834/1403/680
+f 840/1408/684 846/1409/685 847/1410/686
+f 849/1411/687 850/1412/688 844/1413/689
+f 847/1410/686 848/1414/690 842/1415/678
+f 844/1413/689 850/1412/688 851/1416/691
+f 845/1417/692 846/1409/685 840/1408/684
+f 844/1418/689 845/1417/692 839/1407/683
+f 855/1419/693 856/1420/694 850/1421/688
+f 853/1422/695 854/1423/696 848/1424/690
+f 852/1425/697 853/1422/695 847/1426/686
+f 851/1416/691 852/1425/697 846/1409/685
+f 850/1421/688 856/1420/694 857/1427/698
+f 861/1428/699 862/1429/700 856/1430/694
+f 859/1431/701 860/1432/702 854/1433/696
+f 858/1434/703 859/1431/701 853/1435/695
+f 857/1427/698 858/1434/703 852/1425/697
+f 871/1436/704 829/1437/705 830/1438/676
+f 867/1439/706 868/1440/707 862/1441/700
+f 865/1442/708 866/1443/709 860/1444/702
+f 864/1445/710 865/1442/708 859/1446/701
+f 863/1447/711 864/1445/710 858/1434/703
+f 862/1429/700 863/1447/711 857/1427/698
+f 825/1448/712 826/1449/713 868/1450/707
+f 871/1451/704 872/1452/714 866/1453/709
+f 870/1454/715 871/1451/704 865/1455/708
+f 869/1456/716 870/1454/715 864/1457/710
+f 868/1440/707 869/1456/716 863/1458/711
+f 870/1454/715 828/1404/681 829/1437/705
+f 825/1459/712 831/1460/717 832/1405/673
+f 827/1406/682 828/1404/681 870/1454/715
+f 826/1449/713 827/1406/682 869/1456/716
+f 872/1461/714 830/1438/676 873/1462/718
+f 866/1453/709 872/1452/714 873/1463/718
+f 860/1444/702 866/1443/709 873/1464/718
+f 854/1433/696 860/1432/702 873/1465/718
+f 848/1424/690 854/1423/696 873/1466/718
+f 842/1415/678 848/1414/690 873/1467/718
+f 836/1468/675 842/1401/678 873/1469/718
+f 831/1460/717 825/1459/712 874/1470/719
+f 837/1393/671 831/1471/717 874/1472/719
+f 843/1473/720 837/1474/671 874/1475/719
+f 849/1411/687 843/1476/720 874/1477/719
+f 855/1419/693 849/1478/687 874/1479/719
+f 843/1473/720 844/1418/689 838/1480/672
+f 861/1428/699 855/1481/693 874/1482/719
+f 867/1439/706 861/1483/699 874/1484/719
+f 825/1448/712 867/1485/706 874/1486/719
+f 830/1398/676 836/1397/675 873/1487/718
+f 831/1471/717 837/1393/671 832/1395/673
+f 829/1488/705 835/1396/674 830/1398/676
+f 827/1406/682 833/1402/679 828/1404/681
+f 826/1489/713 832/1405/673 827/1406/682
+f 834/1403/680 840/1408/684 835/1399/674
+f 833/1402/679 839/1407/683 834/1403/680
+f 843/1476/720 849/1411/687 844/1413/689
+f 841/1490/677 847/1410/686 842/1415/678
+f 839/1407/683 845/1417/692 840/1408/684
+f 838/1480/672 844/1418/689 839/1407/683
+f 849/1478/687 855/1419/693 850/1421/688
+f 847/1426/686 853/1422/695 848/1424/690
+f 846/1409/685 852/1425/697 847/1426/686
+f 845/1417/692 851/1416/691 846/1409/685
+f 855/1481/693 861/1428/699 856/1430/694
+f 853/1435/695 859/1431/701 854/1433/696
+f 852/1425/697 858/1434/703 853/1435/695
+f 851/1416/691 857/1427/698 852/1425/697
+f 861/1483/699 867/1439/706 862/1441/700
+f 859/1446/701 865/1442/708 860/1444/702
+f 858/1434/703 864/1445/710 859/1446/701
+f 857/1427/698 863/1447/711 858/1434/703
+f 856/1430/694 862/1429/700 857/1427/698
+f 867/1485/706 825/1448/712 868/1450/707
+f 865/1455/708 871/1451/704 866/1453/709
+f 864/1457/710 870/1454/715 865/1455/708
+f 863/1458/711 869/1456/716 864/1457/710
+f 862/1441/700 868/1440/707 863/1458/711
+f 869/1456/716 827/1406/682 870/1454/715
+f 868/1450/707 826/1449/713 869/1456/716
+f 837/1474/671 843/1473/720 838/1480/672
+f 828/1404/681 834/1403/680 835/1396/674
+f 836/1468/675 835/1399/674 842/1401/678
+f 833/1402/679 832/1395/673 839/1407/683
+f 841/1490/677 840/1408/684 847/1410/686
+f 845/1417/692 844/1413/689 851/1416/691
+f 851/1416/691 850/1421/688 857/1427/698
+f 872/1461/714 871/1436/704 830/1438/676
+f 871/1436/704 870/1454/715 829/1437/705
+f 826/1489/713 825/1459/712 832/1405/673
+f 829/1488/705 828/1404/681 835/1396/674
+f 887/1491/721 888/1492/722 882/1493/723
+f 885/1494/724 886/1495/725 880/1496/726
+f 885/1497/724 891/1498/727 892/1499/728
+f 883/1500/729 884/1501/730 878/1502/731
+f 882/1503/723 883/1500/729 877/1504/732
+f 882/1493/723 888/1492/722 889/1505/733
+f 890/1506/734 891/1498/727 885/1497/724
+f 889/1505/733 890/1506/734 884/1501/730
+f 890/1506/734 896/1507/735 897/1508/736
+f 899/1509/737 900/1510/738 894/1511/739
+f 897/1508/736 898/1512/740 892/1513/728
+f 894/1511/739 900/1510/738 901/1514/741
+f 895/1515/742 896/1507/735 890/1506/734
+f 894/1516/739 895/1515/742 889/1505/733
+f 905/1517/743 906/1518/744 900/1519/738
+f 903/1520/745 904/1521/746 898/1522/740
+f 902/1523/747 903/1520/745 897/1524/736
+f 901/1514/741 902/1523/747 896/1507/735
+f 900/1519/738 906/1518/744 907/1525/748
+f 911/1526/749 912/1527/750 906/1528/744
+f 909/1529/751 910/1530/752 904/1531/746
+f 908/1532/753 909/1529/751 903/1533/745
+f 907/1525/748 908/1532/753 902/1523/747
+f 921/1534/754 879/1535/755 880/1536/726
+f 917/1537/756 918/1538/757 912/1539/750
+f 915/1540/758 916/1541/759 910/1542/752
+f 914/1543/760 915/1540/758 909/1544/751
+f 913/1545/761 914/1543/760 908/1532/753
+f 912/1527/750 913/1545/761 907/1525/748
+f 875/1546/762 876/1547/763 918/1548/757
+f 921/1549/754 922/1550/764 916/1551/759
+f 920/1552/765 921/1549/754 915/1553/758
+f 919/1554/766 920/1552/765 914/1555/760
+f 918/1538/757 919/1554/766 913/1556/761
+f 920/1552/765 878/1502/731 879/1535/755
+f 875/1557/762 881/1558/767 882/1503/723
+f 877/1504/732 878/1502/731 920/1552/765
+f 876/1547/763 877/1504/732 919/1554/766
+f 922/1559/764 880/1536/726 923/1560/320
+f 916/1551/759 922/1550/764 923/1561/320
+f 910/1542/752 916/1541/759 923/1562/320
+f 904/1531/746 910/1530/752 923/1563/320
+f 898/1522/740 904/1521/746 923/1564/320
+f 892/1513/728 898/1512/740 923/1565/320
+f 886/1566/725 892/1499/728 923/1567/320
+f 881/1558/767 875/1557/762 924/1568/321
+f 887/1491/721 881/1569/767 924/1570/321
+f 893/1571/768 887/1572/721 924/1573/321
+f 899/1509/737 893/1574/768 924/1575/321
+f 905/1517/743 899/1576/737 924/1577/321
+f 893/1571/768 894/1516/739 888/1578/722
+f 911/1526/749 905/1579/743 924/1580/321
+f 917/1537/756 911/1581/749 924/1582/321
+f 875/1546/762 917/1583/756 924/1584/321
+f 880/1496/726 886/1495/725 923/1585/320
+f 881/1569/767 887/1491/721 882/1493/723
+f 879/1586/755 885/1494/724 880/1496/726
+f 877/1504/732 883/1500/729 878/1502/731
+f 876/1587/763 882/1503/723 877/1504/732
+f 884/1501/730 890/1506/734 885/1497/724
+f 883/1500/729 889/1505/733 884/1501/730
+f 893/1574/768 899/1509/737 894/1511/739
+f 891/1588/727 897/1508/736 892/1513/728
+f 889/1505/733 895/1515/742 890/1506/734
+f 888/1578/722 894/1516/739 889/1505/733
+f 899/1576/737 905/1517/743 900/1519/738
+f 897/1524/736 903/1520/745 898/1522/740
+f 896/1507/735 902/1523/747 897/1524/736
+f 895/1515/742 901/1514/741 896/1507/735
+f 905/1579/743 911/1526/749 906/1528/744
+f 903/1533/745 909/1529/751 904/1531/746
+f 902/1523/747 908/1532/753 903/1533/745
+f 901/1514/741 907/1525/748 902/1523/747
+f 911/1581/749 917/1537/756 912/1539/750
+f 909/1544/751 915/1540/758 910/1542/752
+f 908/1532/753 914/1543/760 909/1544/751
+f 907/1525/748 913/1545/761 908/1532/753
+f 906/1528/744 912/1527/750 907/1525/748
+f 917/1583/756 875/1546/762 918/1548/757
+f 915/1553/758 921/1549/754 916/1551/759
+f 914/1555/760 920/1552/765 915/1553/758
+f 913/1556/761 919/1554/766 914/1555/760
+f 912/1539/750 918/1538/757 913/1556/761
+f 919/1554/766 877/1504/732 920/1552/765
+f 918/1548/757 876/1547/763 919/1554/766
+f 887/1572/721 893/1571/768 888/1578/722
+f 878/1502/731 884/1501/730 885/1494/724
+f 886/1566/725 885/1497/724 892/1499/728
+f 883/1500/729 882/1493/723 889/1505/733
+f 891/1588/727 890/1506/734 897/1508/736
+f 895/1515/742 894/1511/739 901/1514/741
+f 901/1514/741 900/1519/738 907/1525/748
+f 922/1559/764 921/1534/754 880/1536/726
+f 921/1534/754 920/1552/765 879/1535/755
+f 876/1587/763 875/1557/762 882/1503/723
+f 879/1586/755 878/1502/731 885/1494/724
+f 937/1589/769 938/1590/770 932/1591/771
+f 935/1592/772 936/1593/773 930/1594/774
+f 935/1595/772 941/1596/775 942/1597/776
+f 933/1598/777 934/1599/778 928/1600/779
+f 932/1601/771 933/1598/777 927/1602/780
+f 932/1591/771 938/1590/770 939/1603/781
+f 940/1604/782 941/1596/775 935/1595/772
+f 939/1603/781 940/1604/782 934/1599/778
+f 940/1604/782 946/1605/783 947/1606/784
+f 949/1607/785 950/1608/786 944/1609/787
+f 947/1606/784 948/1610/788 942/1611/776
+f 944/1609/787 950/1608/786 951/1612/789
+f 945/1613/790 946/1605/783 940/1604/782
+f 944/1614/787 945/1613/790 939/1603/781
+f 955/1615/791 956/1616/792 950/1617/786
+f 953/1618/793 954/1619/794 948/1620/788
+f 952/1621/795 953/1618/793 947/1622/784
+f 951/1612/789 952/1621/795 946/1605/783
+f 950/1617/786 956/1616/792 957/1623/796
+f 961/1624/797 962/1625/798 956/1626/792
+f 959/1627/799 960/1628/800 954/1629/794
+f 958/1630/801 959/1627/799 953/1631/793
+f 957/1623/796 958/1630/801 952/1621/795
+f 971/1632/802 929/1633/803 930/1634/774
+f 967/1635/804 968/1636/805 962/1637/798
+f 965/1638/806 966/1639/807 960/1640/800
+f 964/1641/808 965/1638/806 959/1642/799
+f 963/1643/809 964/1641/808 958/1630/801
+f 962/1625/798 963/1643/809 957/1623/796
+f 925/1644/810 926/1645/811 968/1646/805
+f 971/1647/802 972/1648/812 966/1649/807
+f 970/1650/813 971/1647/802 965/1651/806
+f 969/1652/814 970/1650/813 964/1653/808
+f 968/1636/805 969/1652/814 963/1654/809
+f 970/1650/813 928/1600/779 929/1633/803
+f 925/1655/810 931/1656/815 932/1601/771
+f 927/1602/780 928/1600/779 970/1650/813
+f 926/1645/811 927/1602/780 969/1652/814
+f 972/1657/812 930/1634/774 973/1658/816
+f 966/1649/807 972/1648/812 973/1659/816
+f 960/1640/800 966/1639/807 973/1660/816
+f 954/1629/794 960/1628/800 973/1661/816
+f 948/1620/788 954/1619/794 973/1662/816
+f 942/1611/776 948/1610/788 973/1663/816
+f 936/1664/773 942/1597/776 973/1665/816
+f 931/1656/815 925/1655/810 974/1666/817
+f 937/1589/769 931/1667/815 974/1668/817
+f 943/1669/818 937/1670/769 974/1671/817
+f 949/1607/785 943/1672/818 974/1673/817
+f 955/1615/791 949/1674/785 974/1675/817
+f 943/1669/818 944/1614/787 938/1676/770
+f 961/1624/797 955/1677/791 974/1678/817
+f 967/1635/804 961/1679/797 974/1680/817
+f 925/1644/810 967/1681/804 974/1682/817
+f 930/1594/774 936/1593/773 973/1683/816
+f 931/1667/815 937/1589/769 932/1591/771
+f 929/1684/803 935/1592/772 930/1594/774
+f 927/1602/780 933/1598/777 928/1600/779
+f 926/1685/811 932/1601/771 927/1602/780
+f 934/1599/778 940/1604/782 935/1595/772
+f 933/1598/777 939/1603/781 934/1599/778
+f 943/1672/818 949/1607/785 944/1609/787
+f 941/1686/775 947/1606/784 942/1611/776
+f 939/1603/781 945/1613/790 940/1604/782
+f 938/1676/770 944/1614/787 939/1603/781
+f 949/1674/785 955/1615/791 950/1617/786
+f 947/1622/784 953/1618/793 948/1620/788
+f 946/1605/783 952/1621/795 947/1622/784
+f 945/1613/790 951/1612/789 946/1605/783
+f 955/1677/791 961/1624/797 956/1626/792
+f 953/1631/793 959/1627/799 954/1629/794
+f 952/1621/795 958/1630/801 953/1631/793
+f 951/1612/789 957/1623/796 952/1621/795
+f 961/1679/797 967/1635/804 962/1637/798
+f 959/1642/799 965/1638/806 960/1640/800
+f 958/1630/801 964/1641/808 959/1642/799
+f 957/1623/796 963/1643/809 958/1630/801
+f 956/1626/792 962/1625/798 957/1623/796
+f 967/1681/804 925/1644/810 968/1646/805
+f 965/1651/806 971/1647/802 966/1649/807
+f 964/1653/808 970/1650/813 965/1651/806
+f 963/1654/809 969/1652/814 964/1653/808
+f 962/1637/798 968/1636/805 963/1654/809
+f 969/1652/814 927/1602/780 970/1650/813
+f 968/1646/805 926/1645/811 969/1652/814
+f 937/1670/769 943/1669/818 938/1676/770
+f 928/1600/779 934/1599/778 935/1592/772
+f 936/1664/773 935/1595/772 942/1597/776
+f 933/1598/777 932/1591/771 939/1603/781
+f 941/1686/775 940/1604/782 947/1606/784
+f 945/1613/790 944/1609/787 951/1612/789
+f 951/1612/789 950/1617/786 957/1623/796
+f 972/1657/812 971/1632/802 930/1634/774
+f 971/1632/802 970/1650/813 929/1633/803
+f 926/1685/811 925/1655/810 932/1601/771
+f 929/1684/803 928/1600/779 935/1592/772
+f 987/1687/819 988/1688/820 982/1689/821
+f 985/1690/822 986/1691/823 980/1692/824
+f 985/1693/822 991/1694/825 992/1695/826
+f 983/1696/827 984/1697/828 978/1698/829
+f 982/1699/821 983/1696/827 977/1700/830
+f 982/1689/821 988/1688/820 989/1701/831
+f 990/1702/832 991/1694/825 985/1693/822
+f 989/1701/831 990/1702/832 984/1697/828
+f 990/1702/832 996/1703/833 997/1704/834
+f 999/1705/835 1000/1706/836 994/1707/837
+f 997/1704/834 998/1708/838 992/1709/826
+f 994/1707/837 1000/1706/836 1001/1710/839
+f 995/1711/840 996/1703/833 990/1702/832
+f 994/1712/837 995/1711/840 989/1701/831
+f 1005/1713/841 1006/1714/842 1000/1715/836
+f 1003/1716/843 1004/1717/844 998/1718/838
+f 1002/1719/845 1003/1716/843 997/1720/834
+f 1001/1710/839 1002/1719/845 996/1703/833
+f 1000/1715/836 1006/1714/842 1007/1721/846
+f 1011/1722/847 1012/1723/848 1006/1724/842
+f 1009/1725/849 1010/1726/850 1004/1727/844
+f 1008/1728/851 1009/1725/849 1003/1729/843
+f 1007/1721/846 1008/1728/851 1002/1719/845
+f 1021/1730/852 979/1731/853 980/1732/824
+f 1017/1733/854 1018/1734/855 1012/1735/848
+f 1015/1736/856 1016/1737/857 1010/1738/850
+f 1014/1739/858 1015/1736/856 1009/1740/849
+f 1013/1741/859 1014/1739/858 1008/1728/851
+f 1012/1723/848 1013/1741/859 1007/1721/846
+f 975/1742/860 976/1743/861 1018/1744/855
+f 1021/1745/852 1022/1746/862 1016/1747/857
+f 1020/1748/863 1021/1745/852 1015/1749/856
+f 1019/1750/864 1020/1748/863 1014/1751/858
+f 1018/1734/855 1019/1750/864 1013/1752/859
+f 1020/1748/863 978/1698/829 979/1731/853
+f 975/1753/860 981/1754/865 982/1699/821
+f 977/1700/830 978/1698/829 1020/1748/863
+f 976/1743/861 977/1700/830 1019/1750/864
+f 1022/1755/862 980/1732/824 1023/1756/866
+f 1016/1747/857 1022/1746/862 1023/1757/866
+f 1010/1738/850 1016/1737/857 1023/1758/866
+f 1004/1727/844 1010/1726/850 1023/1759/866
+f 998/1718/838 1004/1717/844 1023/1760/866
+f 992/1709/826 998/1708/838 1023/1761/866
+f 986/1762/823 992/1695/826 1023/1763/866
+f 981/1754/865 975/1753/860 1024/1764/867
+f 987/1687/819 981/1765/865 1024/1766/867
+f 993/1767/868 987/1768/819 1024/1769/867
+f 999/1705/835 993/1770/868 1024/1771/867
+f 1005/1713/841 999/1772/835 1024/1773/867
+f 993/1767/868 994/1712/837 988/1774/820
+f 1011/1722/847 1005/1775/841 1024/1776/867
+f 1017/1733/854 1011/1777/847 1024/1778/867
+f 975/1742/860 1017/1779/854 1024/1780/867
+f 980/1692/824 986/1691/823 1023/1781/866
+f 981/1765/865 987/1687/819 982/1689/821
+f 979/1782/853 985/1690/822 980/1692/824
+f 977/1700/830 983/1696/827 978/1698/829
+f 976/1783/861 982/1699/821 977/1700/830
+f 984/1697/828 990/1702/832 985/1693/822
+f 983/1696/827 989/1701/831 984/1697/828
+f 993/1770/868 999/1705/835 994/1707/837
+f 991/1784/825 997/1704/834 992/1709/826
+f 989/1701/831 995/1711/840 990/1702/832
+f 988/1774/820 994/1712/837 989/1701/831
+f 999/1772/835 1005/1713/841 1000/1715/836
+f 997/1720/834 1003/1716/843 998/1718/838
+f 996/1703/833 1002/1719/845 997/1720/834
+f 995/1711/840 1001/1710/839 996/1703/833
+f 1005/1775/841 1011/1722/847 1006/1724/842
+f 1003/1729/843 1009/1725/849 1004/1727/844
+f 1002/1719/845 1008/1728/851 1003/1729/843
+f 1001/1710/839 1007/1721/846 1002/1719/845
+f 1011/1777/847 1017/1733/854 1012/1735/848
+f 1009/1740/849 1015/1736/856 1010/1738/850
+f 1008/1728/851 1014/1739/858 1009/1740/849
+f 1007/1721/846 1013/1741/859 1008/1728/851
+f 1006/1724/842 1012/1723/848 1007/1721/846
+f 1017/1779/854 975/1742/860 1018/1744/855
+f 1015/1749/856 1021/1745/852 1016/1747/857
+f 1014/1751/858 1020/1748/863 1015/1749/856
+f 1013/1752/859 1019/1750/864 1014/1751/858
+f 1012/1735/848 1018/1734/855 1013/1752/859
+f 1019/1750/864 977/1700/830 1020/1748/863
+f 1018/1744/855 976/1743/861 1019/1750/864
+f 987/1768/819 993/1767/868 988/1774/820
+f 978/1698/829 984/1697/828 985/1690/822
+f 986/1762/823 985/1693/822 992/1695/826
+f 983/1696/827 982/1689/821 989/1701/831
+f 991/1784/825 990/1702/832 997/1704/834
+f 995/1711/840 994/1707/837 1001/1710/839
+f 1001/1710/839 1000/1715/836 1007/1721/846
+f 1022/1755/862 1021/1730/852 980/1732/824
+f 1021/1730/852 1020/1748/863 979/1731/853
+f 976/1783/861 975/1753/860 982/1699/821
+f 979/1782/853 978/1698/829 985/1690/822
+o table-body_nodebox-1.001
+v 0.500000 0.250000 1.437500
+v 0.500000 0.250000 1.500000
+v -0.500000 0.250000 1.500000
+v -0.500000 0.250000 1.437500
+v 0.500000 0.312500 1.437500
+v 0.500000 0.312500 1.500000
+v -0.500000 0.312500 1.500000
+v -0.500000 0.312500 1.437500
+v 0.500000 0.250000 -0.500000
+v 0.500000 0.250000 -0.437500
+v -0.500000 0.250000 -0.437500
+v -0.500000 0.250000 -0.500000
+v 0.500000 0.312500 -0.500000
+v 0.500000 0.312500 -0.437500
+v -0.500000 0.312500 -0.437500
+v -0.500000 0.312500 -0.500000
+v 0.500000 0.187500 -0.500000
+v 0.500000 0.187500 1.500000
+v -0.500000 0.187500 1.500000
+v -0.500000 0.187500 -0.500000
+v 0.437500 0.312500 1.500000
+v -0.437500 0.312500 1.500000
+v -0.437500 0.312500 -0.500000
+v 0.437500 0.312500 -0.500000
+v 0.437500 0.125000 -0.437500
+v 0.437500 0.125000 1.437500
+v -0.437500 0.125000 1.437500
+v -0.437500 0.125000 -0.437500
+v 0.437500 0.187500 -0.437500
+v 0.437500 0.187500 1.437500
+v -0.437500 0.187500 1.437500
+v -0.437500 0.187500 -0.437500
+v -0.250000 -0.500000 1.250000
+v -0.250000 -0.500000 1.375000
+v -0.375000 -0.500000 1.375000
+v -0.375000 -0.500000 1.250000
+v -0.250000 0.125000 1.250000
+v -0.250000 0.125000 1.375000
+v -0.375000 0.125000 1.375000
+v -0.375000 0.125000 1.250000
+v 0.375000 -0.500000 1.250000
+v 0.375000 -0.500000 1.375000
+v 0.250000 -0.500000 1.375000
+v 0.250000 -0.500000 1.250000
+v 0.375000 0.125000 1.250000
+v 0.375000 0.125000 1.375000
+v 0.250000 0.125000 1.375000
+v 0.250000 0.125000 1.250000
+v 0.375000 -0.500000 -0.375000
+v 0.375000 -0.500000 -0.250000
+v 0.250000 -0.500000 -0.250000
+v 0.250000 -0.500000 -0.375000
+v 0.375000 0.125000 -0.375000
+v 0.375000 0.125000 -0.250000
+v 0.250000 0.125000 -0.250000
+v 0.250000 0.125000 -0.375000
+v -0.250000 -0.500000 -0.375000
+v -0.250000 -0.500000 -0.250000
+v -0.375000 -0.500000 -0.250000
+v -0.375000 -0.500000 -0.375000
+v -0.250000 0.125000 -0.375000
+v -0.250000 0.125000 -0.250000
+v -0.375000 0.125000 -0.250000
+v -0.375000 0.125000 -0.375000
+v -0.187500 -0.125000 0.062500
+v -0.187500 -0.125000 1.187500
+v -0.312500 -0.125000 1.187500
+v -0.312500 -0.125000 0.062500
+v -0.187500 0.125000 0.062500
+v -0.187500 0.125000 1.187500
+v -0.312500 0.125000 1.187500
+v -0.312500 0.125000 0.062500
+v 0.312500 -0.125000 0.062500
+v 0.312500 -0.125000 1.187500
+v 0.187500 -0.125000 1.187500
+v 0.187500 -0.125000 0.062500
+v 0.312500 0.125000 0.062500
+v 0.312500 0.125000 1.187500
+v 0.187500 0.125000 1.187500
+v 0.187500 0.125000 0.062500
+v 0.312500 -0.125000 -0.312500
+v -0.312500 -0.125000 -0.312500
+v 0.312500 0.125000 -0.312500
+v -0.312500 0.125000 -0.312500
+v 0.312500 -0.125000 1.312500
+v -0.312500 -0.125000 1.312500
+v 0.312500 0.125000 1.312500
+v -0.312500 0.125000 1.312500
+v 0.187500 0.125000 -0.312500
+v 0.187500 -0.062500 -0.312500
+v -0.187500 -0.062500 -0.312500
+v -0.187500 0.125000 -0.312500
+v 0.312500 -0.062500 -0.312500
+v -0.312500 -0.062500 -0.312500
+v 0.187500 0.125000 -0.062500
+v 0.187500 -0.062500 -0.062500
+v -0.187500 -0.062500 -0.062500
+v -0.187500 0.125000 -0.062500
+v 0.187500 0.000000 -0.312500
+v 0.187500 0.000000 -0.304688
+v -0.187500 0.000000 -0.304688
+v -0.187500 0.000000 -0.312500
+v -0.437500 0.312500 0.557743
+v -0.471324 0.312500 0.523918
+v -0.471324 0.312500 0.476082
+v -0.437500 0.312500 0.442257
+v 0.437499 0.312500 0.442258
+v 0.471324 0.312500 0.476082
+v 0.471324 0.312500 0.523918
+v 0.437499 0.312500 0.557743
+v 0.389664 0.312500 1.471325
+v -0.437500 0.312500 1.471325
+v -0.471324 0.312500 1.437500
+v -0.471324 0.312500 1.389664
+v -0.437500 0.312500 1.355839
+v -0.355839 0.312500 1.437500
+v -0.389664 0.312500 1.471325
+v 0.355839 0.312500 1.437500
+v 0.437499 0.312500 1.355840
+v 0.471324 0.312500 1.389664
+v 0.471324 0.312500 1.437500
+v 0.437499 0.312500 1.471325
+v -0.437500 0.312500 -0.355839
+v -0.471325 0.312500 -0.389664
+v -0.471325 0.312500 -0.437499
+v -0.437500 0.312500 -0.471324
+v -0.389664 0.312500 -0.471323
+v -0.355840 0.312500 -0.437499
+v 0.355839 0.312500 -0.437500
+v 0.389663 0.312500 -0.471325
+v 0.437499 0.312500 -0.471324
+v 0.471324 0.312500 -0.437500
+v 0.471324 0.312500 -0.389664
+v 0.437499 0.312500 -0.355839
+v -0.500000 0.312500 0.500000
+v 0.500000 0.312500 0.500000
+v -0.471324 0.312500 0.500000
+v 0.471324 0.312500 0.500000
+v -0.312500 -0.125000 0.500001
+v -0.500000 0.250000 0.500001
+v -0.437500 0.187500 0.500001
+v 0.187500 -0.125000 0.500001
+v -0.187500 -0.125000 0.500001
+v 0.437500 0.187500 0.500001
+v -0.500000 0.250000 0.500001
+v 0.312500 0.125000 0.500001
+v 0.500000 0.250000 0.500001
+v 0.500000 0.187500 0.500001
+v 0.437500 0.125000 0.500001
+v 0.312500 -0.125000 0.500001
+v -0.437500 0.125000 0.500001
+v -0.500000 0.187500 0.500001
+v -0.312500 0.125000 0.500001
+v 0.500000 0.250000 0.500001
+v 0.187500 0.125000 0.500001
+v -0.187500 0.125000 0.500001
+vt 0.062500 0.812500
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.062500 0.750000
+vt 1.000000 0.812500
+vt 1.000000 0.750000
+vt 0.937500 0.812500
+vt 0.937500 0.750000
+vt 0.937500 0.000000
+vt 0.110336 0.028676
+vt 0.062500 0.000000
+vt 0.110336 0.971325
+vt 0.889664 0.971325
+vt 0.937500 1.000000
+vt 0.937500 0.687500
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 0.937500 0.625000
+vt 0.062500 0.687500
+vt 0.062500 0.625000
+vt 0.062500 1.000000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.250000 0.625000
+vt 0.125000 0.625000
+vt 0.125000 0.000000
+vt 0.250000 0.000000
+vt 0.875000 0.625000
+vt 0.750000 0.625000
+vt 0.750000 0.000000
+vt 0.875000 0.000000
+vt 0.750000 0.250000
+vt 0.750000 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.250000
+vt 0.125000 0.250000
+vt 0.125000 0.125000
+vt 0.250000 0.125000
+vt 0.250000 0.250000
+vt 0.125000 0.875000
+vt 0.125000 0.750000
+vt 0.250000 0.750000
+vt 0.250000 0.875000
+vt 1.000000 0.625000
+vt 1.000000 0.000000
+vt 0.750000 0.875000
+vt 0.750000 0.750000
+vt 0.875000 0.750000
+vt 0.875000 0.875000
+vt 0.562500 0.625000
+vt 0.125000 0.375000
+vt 0.562500 0.375000
+vt 0.687500 0.625000
+vt 0.000000 0.375000
+vt 0.687500 0.375000
+vt 0.437501 0.625000
+vt 0.437501 0.375000
+vt 0.812500 0.625000
+vt 0.187500 0.625000
+vt 0.187500 0.375000
+vt 0.812500 0.375000
+vt 0.687500 0.312500
+vt 0.812500 0.312500
+vt 0.812500 1.000000
+vt 0.687500 1.000000
+vt 0.812500 0.437500
+vt 0.187500 0.437500
+vt 0.937500 0.437500
+vt 0.687500 0.437500
+vt 0.437500 0.437500
+vt 0.312500 0.437500
+vt 0.312500 0.187500
+vt 0.687500 0.187500
+vt 0.312500 0.625000
+vt 0.682500 0.198393
+vt 0.317500 0.198393
+vt 0.317500 0.207857
+vt 0.682500 0.207857
+vt 0.937500 0.937500
+vt -0.000000 0.000000
+vt 0.062500 0.937500
+vt 1.000000 1.000000
+vt 1.000000 0.687500
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.028676 0.937500
+vt 0.937500 0.971325
+vt 0.971325 0.062500
+vt 0.937500 0.028676
+vt 0.062501 0.028676
+vt 0.312500 0.375000
+vt 0.812500 0.187500
+vt 0.187500 0.312500
+vt 0.187500 0.187500
+vt 0.812500 0.812500
+vt 0.187500 0.812500
+vt 0.312500 1.000000
+vt 0.187500 1.000000
+vt 0.312500 0.312500
+vt 0.687500 0.500000
+vt 0.312500 0.500000
+vt 0.028676 0.110336
+vt 0.062501 0.144161
+vt 0.937500 0.855839
+vt 0.971324 0.889664
+vt 0.028676 0.023918
+vt 0.062501 0.057743
+vt 0.971325 0.110336
+vt 1.000000 0.062500
+vt 0.187500 0.000000
+vt 0.312500 0.000000
+vt 1.000000 0.375000
+vt 0.687500 0.000000
+vt 0.812500 0.000000
+vt 0.889664 0.028676
+vt 0.855840 0.062500
+vt 0.144161 0.062500
+vt 0.028676 0.062500
+vt 0.000000 0.062500
+vt 0.028676 0.976082
+vt 0.028676 1.000000
+vt 0.062501 0.942258
+vt 0.971325 0.976082
+vt 0.971325 1.000000
+vt 0.937500 0.144161
+vt 0.937500 0.942257
+vt 0.062501 0.971325
+vt 0.144161 0.937500
+vt 0.855840 0.937500
+vt 0.971324 0.937500
+vt 1.000000 0.937500
+vt 0.937500 0.057743
+vt 0.971324 0.023918
+vt 0.971324 0.000000
+vt 0.028676 0.889664
+vt 0.062501 0.855840
+vt 0.028676 0.000000
+vn 1.000000 0.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 0.000000
+g table-body_nodebox-1.001_none.001_homedecor_pool_table_wood.png
+s off
+f 1029/1785/869 1030/1786/869 1026/1787/869 1025/1788/869
+f 1030/1789/870 1031/1786/870 1027/1787/870 1026/1790/870
+f 1031/1789/871 1032/1791/871 1028/1792/871 1027/1790/871
+f 1037/1789/869 1038/1791/869 1034/1792/869 1033/1790/869
+f 1047/1793/872 1154/1794/872 1048/1795/872
+f 1039/1785/871 1040/1786/871 1036/1787/871 1035/1788/871
+f 1040/1789/873 1037/1786/873 1033/1787/873 1036/1790/873
+f 1135/1796/872 1141/1797/872 1046/1798/872
+f 1053/1799/869 1168/1800/869 1173/1801/869 1049/1802/869
+f 1054/1799/870 1055/1803/870 1051/1804/870 1050/1802/870
+f 1055/1799/871 1165/1800/871 1175/1801/871 1051/1802/871
+f 1056/1799/873 1053/1803/873 1049/1804/873 1052/1802/873
+f 1173/1805/874 1050/1806/874 1051/1807/874 1175/1798/874
+f 1061/1808/869 1062/1809/869 1058/1810/869 1057/1811/869
+f 1062/1808/870 1063/1809/870 1059/1810/870 1058/1811/870
+f 1063/1812/871 1064/1813/871 1060/1814/871 1059/1815/871
+f 1064/1812/873 1061/1813/873 1057/1814/873 1060/1815/873
+f 1057/1816/874 1058/1817/874 1059/1818/874 1060/1819/874
+f 1069/1808/869 1070/1809/869 1066/1810/869 1065/1811/869
+f 1070/1812/870 1071/1813/870 1067/1814/870 1066/1815/870
+f 1071/1812/871 1072/1813/871 1068/1814/871 1067/1815/871
+f 1072/1808/873 1069/1809/873 1065/1810/873 1068/1811/873
+f 1065/1820/874 1066/1821/874 1067/1822/874 1068/1823/874
+f 1077/1812/869 1078/1813/869 1074/1814/869 1073/1815/869
+f 1078/1812/870 1079/1813/870 1075/1814/870 1074/1815/870
+f 1079/1808/871 1080/1809/871 1076/1810/871 1075/1811/871
+f 1080/1808/873 1077/1809/873 1073/1810/873 1076/1811/873
+f 1073/1824/874 1074/1825/874 1075/1826/874 1076/1827/874
+f 1085/1828/869 1086/1812/869 1082/1815/869 1081/1829/869
+f 1086/1808/870 1087/1809/870 1083/1810/870 1082/1811/870
+f 1087/1808/871 1088/1809/871 1084/1810/871 1083/1811/871
+f 1088/1812/873 1085/1813/873 1081/1814/873 1084/1815/873
+f 1081/1830/874 1082/1831/874 1083/1832/874 1084/1833/874
+f 1093/1834/869 1180/1809/869 1167/1835/869 1089/1836/869
+f 1103/1837/871 1179/1801/871 1166/1838/871 1099/1839/871
+f 1095/1837/871 1177/1801/871 1163/1838/871 1091/1839/871
+f 1101/1840/869 1170/1801/869 1174/1838/869 1097/1841/869
+f 1111/1842/870 1112/1843/870 1110/1844/870 1109/1845/870
+f 1090/1846/874 1091/1847/874 1163/1848/874 1167/1849/874
+f 1106/1845/873 1118/1850/873 1117/1851/873 1105/1844/873
+f 1115/1852/869 1116/1802/869 1122/1837/869 1121/1853/869
+f 1113/1843/871 1114/1851/871 1120/1854/871 1119/1840/871
+f 1121/1853/872 1120/1855/872 1114/1856/872 1115/1857/872
+f 1120/1855/873 1121/1853/873 1122/1837/873 1119/1858/873
+f 1126/1859/874 1123/1860/874 1124/1861/874 1125/1862/874
+f 1056/1863/874 1165/1793/874 1176/1829/874
+f 1055/1807/874 1054/1806/874 1042/1864/874
+f 1172/1864/874 1168/1795/874 1053/1865/874
+f 1053/1865/874 1056/1863/874 1044/1866/874
+f 1033/1790/869 1178/1787/869 1172/1800/869 1041/1867/869
+f 1026/1790/870 1027/1787/870 1043/1800/870 1042/1867/870
+f 1027/1790/871 1169/1787/871 1176/1800/871 1043/1867/871
+f 1036/1790/873 1033/1787/873 1041/1800/873 1044/1867/873
+f 1030/1868/872 1029/1869/872 1145/1870/872
+f 1032/1791/871 1159/1786/871 1164/1787/871 1028/1792/871
+f 1031/1866/872 1046/1798/872 1136/1871/872
+f 1038/1791/869 1160/1786/869 1171/1787/869 1034/1792/869
+f 1040/1829/872 1149/1872/872 1150/1873/872
+f 1037/1864/872 1048/1795/872 1155/1874/872
+f 1101/1842/870 1096/1843/870 1092/1844/870 1097/1845/870
+f 1095/1842/873 1102/1843/873 1098/1844/873 1091/1845/873
+f 1109/1844/869 1098/1875/869 1102/1858/869 1111/1843/869
+f 1110/1845/871 1112/1842/871 1095/1837/871 1091/1839/871
+f 1110/1876/874 1091/1847/874 1098/1877/874 1109/1878/874
+f 1106/1844/871 1092/1836/871 1096/1834/871 1108/1843/871
+f 1105/1845/869 1107/1842/869 1101/1840/869 1097/1841/869
+f 1092/1850/874 1106/1879/874 1105/1880/874 1097/1851/874
+f 1166/1881/874 1174/1882/874 1098/1877/874 1099/1883/874
+f 1117/1851/873 1114/1855/873 1113/1858/873 1107/1843/873
+f 1108/1842/873 1116/1837/873 1115/1853/873 1118/1850/873
+f 1126/1884/873 1123/1885/873 1114/1855/873 1115/1853/873
+f 1160/1868/872 1157/1886/872 1158/1887/872
+f 1139/1888/872 1159/1829/872 1138/1889/872
+f 1160/1864/872 1133/1890/872 1134/1891/872
+f 1159/1866/872 1148/1892/872 1039/1893/872
+f 1176/1866/874 1165/1798/874 1055/1807/874
+f 1165/1867/871 1056/1803/871 1052/1804/871 1175/1828/871
+f 1178/1790/869 1026/1787/869 1042/1800/869 1172/1867/869
+f 1168/1867/869 1054/1803/869 1050/1804/869 1173/1828/869
+f 1054/1806/874 1168/1805/874 1172/1868/874
+f 1049/1865/874 1173/1795/874 1175/1793/874 1052/1863/874
+f 1169/1790/871 1036/1787/871 1044/1800/871 1176/1867/871
+f 1100/1855/874 1097/1851/874 1174/1894/874 1166/1895/874
+f 1179/1828/871 1104/1834/871 1100/1836/871 1166/1896/871
+f 1170/1828/869 1102/1858/869 1098/1875/869 1174/1896/869
+f 1167/1897/874 1163/1898/874 1092/1850/874 1089/1853/874
+f 1159/1789/871 1039/1785/871 1035/1788/871 1164/1790/871
+f 1160/1789/869 1029/1785/869 1025/1788/869 1171/1790/869
+f 1180/1828/869 1094/1858/869 1090/1875/869 1167/1896/869
+f 1177/1828/871 1096/1834/871 1092/1836/871 1163/1896/871
+f 1151/1899/872 1047/1793/872 1150/1873/872
+f 1154/1794/872 1155/1874/872 1048/1795/872
+f 1152/1900/872 1153/1901/872 1154/1794/872
+f 1154/1794/872 1047/1793/872 1151/1899/872
+f 1151/1899/872 1152/1900/872 1154/1794/872
+f 1149/1872/872 1040/1829/872 1039/1893/872
+f 1040/1829/872 1150/1873/872 1047/1793/872
+f 1156/1902/872 1038/1903/872 1037/1864/872
+f 1037/1864/872 1155/1874/872 1156/1902/872
+f 1132/1904/872 1162/1905/872 1160/1868/872
+f 1160/1868/872 1131/1906/872 1132/1904/872
+f 1038/1903/872 1156/1902/872 1157/1886/872
+f 1160/1868/872 1158/1887/872 1131/1906/872
+f 1157/1886/872 1160/1868/872 1038/1903/872
+f 1129/1907/872 1159/1866/872 1161/1908/872
+f 1148/1892/872 1149/1872/872 1039/1893/872
+f 1159/1866/872 1147/1909/872 1148/1892/872
+f 1130/1910/872 1159/1866/872 1129/1907/872
+f 1159/1866/872 1130/1910/872 1147/1909/872
+f 1135/1796/872 1045/1805/872 1146/1911/872
+f 1141/1797/872 1136/1871/872 1046/1798/872
+f 1142/1912/872 1140/1913/872 1141/1797/872
+f 1046/1798/872 1045/1805/872 1135/1796/872
+f 1135/1796/872 1142/1912/872 1141/1797/872
+f 1146/1911/872 1045/1805/872 1030/1868/872
+f 1030/1868/872 1145/1870/872 1146/1911/872
+f 1137/1914/872 1032/1915/872 1031/1866/872
+f 1031/1866/872 1136/1871/872 1137/1914/872
+f 1159/1829/872 1139/1888/872 1127/1916/872
+f 1032/1915/872 1137/1914/872 1138/1889/872
+f 1138/1889/872 1159/1829/872 1032/1915/872
+f 1159/1829/872 1127/1916/872 1128/1917/872
+f 1128/1917/872 1161/1918/872 1159/1829/872
+f 1144/1919/872 1145/1870/872 1029/1869/872
+f 1160/1864/872 1143/1920/872 1144/1919/872
+f 1160/1864/872 1162/1921/872 1133/1890/872
+f 1160/1864/872 1134/1891/872 1143/1920/872
+f 1144/1919/872 1029/1869/872 1160/1864/872
+f 1044/1866/874 1056/1863/874 1176/1829/874
+f 1041/1868/874 1172/1864/874 1053/1865/874
+f 1041/1868/874 1053/1865/874 1044/1866/874
+f 1043/1829/874 1055/1807/874 1042/1864/874
+f 1043/1829/874 1176/1866/874 1055/1807/874
+f 1042/1864/874 1054/1806/874 1172/1868/874
diff --git a/homedecor_modpack/homedecor/models/homedecor_potted_plant.obj b/homedecor_modpack/homedecor/models/homedecor_potted_plant.obj
new file mode 100644
index 0000000..4e57966
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_potted_plant.obj
@@ -0,0 +1,394 @@
+# Blender v2.73 (sub 0) OBJ File: 'potted-plant.blend'
+# www.blender.org
+o Cylinder.001
+v 0.048773 -0.062500 -0.245196
+v 0.048773 0.000000 -0.245196
+v -0.048772 -0.062500 -0.245196
+v -0.048772 0.000000 -0.245196
+v 0.138893 -0.062500 -0.207867
+v 0.138893 0.000000 -0.207867
+v -0.138892 -0.062500 -0.207868
+v -0.138892 0.000000 -0.207868
+v 0.207868 -0.062500 -0.138893
+v 0.207868 0.000000 -0.138893
+v -0.207867 -0.062500 -0.138893
+v -0.207867 0.000000 -0.138893
+v 0.245196 -0.062500 -0.048773
+v 0.245196 0.000000 -0.048773
+v -0.245196 -0.062500 -0.048773
+v -0.245196 0.000000 -0.048773
+v 0.245196 -0.062500 0.048773
+v 0.245196 0.000000 0.048773
+v -0.245196 -0.062500 0.048772
+v -0.245196 0.000000 0.048772
+v -0.042676 0.000000 0.214547
+v 0.042676 0.000000 0.214547
+v -0.121531 0.000000 0.181884
+v 0.207868 -0.062500 0.138893
+v 0.207868 0.000000 0.138893
+v -0.207867 -0.062500 0.138892
+v -0.207867 0.000000 0.138892
+v 0.121531 0.000000 0.181884
+v -0.181884 0.000000 0.121531
+v 0.181884 0.000000 0.121531
+v -0.214547 0.000000 0.042676
+v 0.214547 0.000000 0.042676
+v -0.214547 0.000000 -0.042676
+v 0.138893 -0.062500 0.207867
+v 0.138893 0.000000 0.207867
+v -0.138893 -0.062500 0.207867
+v -0.138893 0.000000 0.207867
+v 0.214547 0.000000 -0.042676
+v -0.181884 0.000000 -0.121531
+v 0.181884 0.000000 -0.121531
+v -0.121531 0.000000 -0.181884
+v 0.042676 0.000000 -0.214547
+v 0.121531 0.000000 -0.181884
+v -0.042676 0.000000 -0.214547
+v 0.048773 -0.062500 0.245196
+v 0.048773 0.000000 0.245196
+v -0.048773 -0.062500 0.245196
+v -0.048773 0.000000 0.245196
+v 0.024386 -0.500000 -0.122598
+v -0.024386 -0.500000 -0.122598
+v 0.069446 -0.500000 -0.103934
+v -0.069446 -0.500000 -0.103934
+v 0.103934 -0.500000 -0.069446
+v -0.103934 -0.500000 -0.069446
+v 0.122598 -0.500000 -0.024386
+v -0.122598 -0.500000 -0.024386
+v 0.122598 -0.500000 0.024386
+v -0.122598 -0.500000 0.024386
+v 0.103934 -0.500000 0.069446
+v -0.103934 -0.500000 0.069446
+v 0.069446 -0.500000 0.103934
+v -0.121531 -0.062500 0.181884
+v -0.069446 -0.500000 0.103934
+v 0.024386 -0.500000 0.122598
+v -0.024386 -0.500000 0.122598
+v 0.042676 -0.031250 -0.214547
+v 0.000000 -0.031250 -0.000000
+v -0.042676 -0.031250 -0.214547
+v 0.121531 -0.031250 -0.181884
+v -0.121531 -0.031250 -0.181884
+v 0.181884 -0.031250 -0.121531
+v -0.181884 -0.031250 -0.121531
+v 0.214547 -0.031250 -0.042676
+v -0.214547 -0.031250 -0.042676
+v 0.214547 -0.031250 0.042676
+v -0.214547 -0.031250 0.042676
+v 0.181884 -0.031250 0.121531
+v -0.181884 -0.031250 0.121531
+v 0.121531 -0.031250 0.181884
+v -0.121531 -0.031250 0.181884
+v 0.042676 -0.031250 0.214547
+v -0.042676 -0.031250 0.214547
+v 0.000000 -0.500000 -0.000000
+v -0.042676 -0.062500 0.214547
+v 0.042676 -0.062500 0.214547
+v 0.121531 -0.062500 0.181884
+v -0.181884 -0.062500 0.121531
+v 0.181884 -0.062500 0.121531
+v -0.214547 -0.062500 0.042676
+v 0.214547 -0.062500 0.042676
+v -0.214547 -0.062500 -0.042676
+v 0.214547 -0.062500 -0.042676
+v -0.181884 -0.062500 -0.121531
+v 0.181884 -0.062500 -0.121531
+v -0.121531 -0.062500 -0.181884
+v 0.042676 -0.062500 -0.214547
+v 0.121531 -0.062500 -0.181884
+v -0.042676 -0.062500 -0.214547
+v -0.156879 -0.031965 0.151496
+v -0.156879 0.404210 0.151496
+v 0.156879 -0.031965 -0.151497
+v 0.156879 0.404210 -0.151496
+v -0.151496 -0.031965 -0.156879
+v -0.151496 0.404210 -0.156879
+v 0.151497 -0.031965 0.156879
+v 0.151497 0.404210 0.156879
+vt 0.906250 0.500000
+vt 0.843750 0.500000
+vt 0.843750 0.437500
+vt 0.906250 0.437500
+vt 0.718750 0.500000
+vt 0.718750 0.531250
+vt 0.656250 0.531250
+vt 0.656250 0.500000
+vt 0.281250 0.500000
+vt 0.281250 0.437500
+vt 0.343750 0.437500
+vt 0.343750 0.500000
+vt 0.855851 0.705329
+vt 0.872056 0.744452
+vt 0.765612 0.765625
+vt 0.659168 0.786798
+vt 0.659168 0.744452
+vt 0.744439 0.872070
+vt 0.705316 0.855864
+vt 0.786785 0.659181
+vt 0.825908 0.675386
+vt 0.218750 0.500000
+vt 0.281250 0.531250
+vt 0.218750 0.531250
+vt 0.406250 0.500000
+vt 0.406250 0.531250
+vt 0.343750 0.531250
+vt 0.406250 0.437500
+vt 0.468750 0.437500
+vt 0.468750 0.500000
+vt 0.968750 0.437500
+vt 0.968750 0.500000
+vt 0.781250 0.500000
+vt 0.781250 0.531250
+vt 0.593750 0.500000
+vt 0.531250 0.500000
+vt 0.531250 0.437500
+vt 0.593750 0.437500
+vt 0.093750 0.500000
+vt 0.031250 0.500000
+vt 0.031250 0.437500
+vt 0.093750 0.437500
+vt 0.744439 0.659181
+vt 0.468750 0.531250
+vt 0.192029 0.978595
+vt 0.197322 0.951984
+vt 0.271428 0.951984
+vt 0.276721 0.978595
+vt 0.675373 0.825921
+vt 0.872056 0.786798
+vt 0.825908 0.855864
+vt 0.786785 0.872070
+vt 0.031250 0.531250
+vt 0.968750 0.531250
+vt 0.156250 0.500000
+vt 0.156250 0.531250
+vt 0.093750 0.531250
+vt 0.593750 0.531250
+vt 0.531250 0.531250
+vt 0.906250 0.531250
+vt 0.843750 0.531250
+vt 0.656250 0.437500
+vt 0.855851 0.825921
+vt 0.156250 0.437500
+vt 0.218750 0.437500
+vt 0.718750 0.437500
+vt 0.781250 0.437500
+vt 0.705316 0.675386
+vt 0.675373 0.705329
+vt 0.128857 0.923625
+vt 0.113784 0.946184
+vt 0.339893 0.923624
+vt 0.354967 0.946184
+vt 0.354967 0.585227
+vt 0.339893 0.607788
+vt 0.271428 0.579428
+vt 0.276721 0.552817
+vt 0.645043 0.946022
+vt 0.660117 0.923462
+vt 0.728582 0.951821
+vt 0.723288 0.978433
+vt 0.021486 0.808052
+vt 0.048097 0.802759
+vt 0.076457 0.871224
+vt 0.053897 0.886298
+vt 0.113783 0.585228
+vt 0.128857 0.607788
+vt 0.076456 0.660188
+vt 0.053897 0.645115
+vt 0.192029 0.552817
+vt 0.197322 0.579428
+vt 0.392293 0.871224
+vt 0.414853 0.886298
+vt 0.420653 0.802759
+vt 0.447264 0.808052
+vt 0.021486 0.723360
+vt 0.048097 0.728653
+vt 0.420653 0.728653
+vt 0.447264 0.723360
+vt 0.656250 0.000000
+vt 0.718750 0.000000
+vt 0.392293 0.660188
+vt 0.414853 0.645114
+vt 0.281250 0.000000
+vt 0.343750 0.000000
+vt 0.781250 0.000000
+vt 0.843750 0.000000
+vt 0.593750 0.000000
+vt 0.031250 0.000000
+vt 0.093750 0.000000
+vt 0.906250 0.000000
+vt 0.218750 0.000000
+vt 0.406250 0.000000
+vt 0.468750 0.000000
+vt 0.968750 0.000000
+vt 0.531250 0.000000
+vt 0.156250 0.000000
+vt 0.728582 0.579266
+vt 0.723289 0.552655
+vt 0.807981 0.552655
+vt 0.802687 0.579266
+vt 0.660117 0.607625
+vt 0.645043 0.585066
+vt 0.871152 0.607626
+vt 0.886226 0.585066
+vt 0.886226 0.946022
+vt 0.807981 0.978433
+vt 0.802687 0.951822
+vt 0.871152 0.923462
+vt 0.607716 0.660026
+vt 0.579357 0.728491
+vt 0.552746 0.723198
+vt 0.585156 0.644952
+vt 0.585156 0.886136
+vt 0.607716 0.871062
+vt 0.923553 0.660026
+vt 0.946113 0.644952
+vt 0.951912 0.728491
+vt 0.978523 0.723198
+vt 0.579357 0.802597
+vt 0.552746 0.807890
+vt 0.978523 0.807890
+vt 0.951912 0.802597
+vt 0.946113 0.886136
+vt 0.923553 0.871062
+vt 0.500000 0.500000
+vt 0.256938 0.136232
+vt 0.414648 0.070906
+vt 0.256939 0.863768
+vt 0.136232 0.743062
+vt 0.929094 0.414648
+vt 0.929094 0.585352
+vt 0.585352 0.070906
+vt 0.414649 0.929094
+vt 0.585352 0.929094
+vt 0.863768 0.743062
+vt 0.863768 0.256938
+vt 0.743062 0.863768
+vt 0.070907 0.585353
+vt 0.070906 0.414648
+vt 0.136232 0.256938
+vt 0.743062 0.136232
+vt 1.000000 -0.000000
+vt 1.000000 1.000000
+vt -0.000000 1.000000
+vt -0.000000 -0.000000
+g Cylinder.001_Cylinder.001_sides
+s 1
+f 37/1 27/2 26/3 36/4
+f 73/5 38/6 40/7 71/8
+f 14/9 13/10 9/11 10/12
+f 53/13 55/14 83/15
+f 58/16 56/17 83/15
+f 65/18 63/19 83/15
+f 49/20 51/21 83/15
+f 76/22 74/9 33/23 31/24
+f 51/21 53/13 83/15
+f 70/25 41/26 39/27 72/12
+f 6/25 5/28 1/29 2/30
+f 37/1 36/4 47/31 48/32
+f 73/5 75/33 32/34 38/6
+f 8/35 4/36 3/37 7/38
+f 10/12 9/11 5/28 6/25
+f 35/39 46/40 45/41 34/42
+f 49/20 83/15 50/43
+f 70/25 68/30 44/44 41/26
+f 4/45 44/46 42/47 2/48
+f 63/19 60/49 83/15
+f 55/14 57/50 83/15
+f 61/51 64/52 83/15
+f 81/32 82/40 21/53 22/54
+f 80/39 78/55 29/56 23/57
+f 69/35 71/8 40/7 43/58
+f 68/30 66/36 42/59 44/44
+f 78/55 76/22 31/24 29/56
+f 79/1 28/60 30/61 77/2
+f 74/9 72/12 39/27 33/23
+f 8/35 7/38 11/62 12/8
+f 79/1 81/32 22/54 28/60
+f 61/51 83/15 59/63
+f 66/36 69/35 43/58 42/59
+f 57/50 59/63 83/15
+f 60/49 58/16 83/15
+f 82/40 80/39 23/57 21/53
+f 18/22 25/55 24/64 17/65
+f 12/8 11/62 15/66 16/5
+f 20/33 19/67 26/3 27/2
+f 50/43 83/15 52/68
+f 65/18 83/15 64/52
+f 54/69 52/68 83/15
+f 48/32 47/31 45/41 46/40
+f 20/33 16/5 15/66 19/67
+f 1/29 3/37 4/36 2/30
+f 14/9 18/22 17/65 13/10
+f 54/69 83/15 56/17
+f 75/33 77/2 30/61 32/34
+f 35/39 34/42 24/64 25/55
+f 41/70 44/46 4/45 8/71
+f 2/48 42/47 43/72 6/73
+f 35/74 28/75 22/76 46/77
+f 36/78 62/79 84/80 47/81
+f 16/82 33/83 39/84 12/85
+f 37/86 23/87 29/88 27/89
+f 37/86 48/90 21/91 23/87
+f 40/92 10/93 6/73 43/72
+f 38/94 14/95 10/93 40/92
+f 20/96 31/97 33/83 16/82
+f 38/94 32/98 18/99 14/95
+f 93/62 54/100 56/101 91/66
+f 27/89 29/88 31/97 20/96
+f 18/99 32/98 30/102 25/103
+f 12/85 39/84 41/70 8/71
+f 28/75 35/74 25/103 30/102
+f 48/90 46/77 22/76 21/91
+f 94/11 92/10 55/104 53/105
+f 89/67 58/106 60/107 87/3
+f 93/62 95/38 52/108 54/100
+f 86/42 85/41 64/109 61/110
+f 87/3 60/107 63/111 62/4
+f 90/65 57/112 55/104 92/10
+f 97/28 51/113 49/114 96/29
+f 84/31 65/115 64/109 85/41
+f 89/67 91/66 56/101 58/106
+f 50/116 98/37 96/29 49/114
+f 95/38 98/37 50/116 52/108
+f 97/28 94/11 53/105 51/113
+f 86/42 61/110 59/117 88/64
+f 84/31 62/4 63/111 65/115
+f 88/64 59/117 57/112 90/65
+f 98/118 3/119 1/120 96/121
+f 98/118 95/122 7/123 3/119
+f 97/124 96/121 1/120 5/125
+f 34/126 45/127 85/128 86/129
+f 93/130 91/131 15/132 11/133
+f 36/78 26/134 87/135 62/79
+f 94/136 97/124 5/125 9/137
+f 92/138 94/136 9/137 13/139
+f 89/140 19/141 15/132 91/131
+f 92/138 13/139 17/142 90/143
+f 89/140 87/135 26/134 19/141
+f 90/143 17/142 24/144 88/145
+f 93/130 11/133 7/123 95/122
+f 34/126 86/129 88/145 24/144
+f 45/127 47/81 84/80 85/128
+g Cylinder.001_Cylinder.001_dirt
+s off
+f 67/146 80/147 82/148
+f 67/146 70/149 72/150
+f 67/146 75/151 73/152
+f 67/146 82/148 81/153
+f 68/154 67/146 66/155
+f 67/146 73/152 71/156
+f 67/146 77/157 75/151
+f 67/146 71/156 69/158
+f 67/146 72/150 74/159
+f 67/146 68/154 70/149
+f 67/146 76/160 78/161
+f 67/146 78/161 80/147
+f 67/146 69/158 66/155
+f 67/146 74/159 76/160
+f 67/146 81/153 79/162
+f 67/146 79/162 77/157
+g Cylinder.001_Cylinder.001_plant
+f 99/163 100/164 102/165 101/166
+f 103/163 104/164 106/165 105/166
diff --git a/homedecor_modpack/homedecor/models/homedecor_radiator.obj b/homedecor_modpack/homedecor/models/homedecor_radiator.obj
new file mode 100644
index 0000000..287f862
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_radiator.obj
@@ -0,0 +1,2458 @@
+# Blender v2.73 (sub 0) OBJ File: 'electric-radiator.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 -0.500001 0.487980
+v -0.500000 -0.500001 0.262020
+v -0.500000 0.431979 0.476065
+v -0.500000 0.431979 0.273935
+v -0.500000 -0.326705 0.429514
+v -0.500000 0.326705 0.429514
+v -0.500000 -0.326705 0.320486
+v -0.500000 0.326705 0.320486
+v -0.500000 0.492617 0.375000
+v -0.500000 -0.492617 0.375000
+v -0.500000 0.485456 0.316399
+v -0.500000 -0.485456 0.457431
+v -0.500000 0.367315 0.337225
+v -0.500000 0.485456 0.433601
+v -0.500000 -0.485456 0.292569
+v -0.500000 0.367315 0.412775
+v -0.500000 -0.367315 0.412775
+v -0.500000 -0.367315 0.337225
+v -0.500000 0.389682 0.375000
+v -0.500000 -0.389682 0.375000
+v -0.500000 -0.337144 0.498317
+v -0.500000 -0.337144 0.251683
+v -0.500000 0.337144 0.498317
+v -0.500000 0.337144 0.251683
+v -0.484375 -0.500001 0.489487
+v -0.484375 -0.500001 0.260513
+v -0.484375 0.438241 0.477572
+v -0.484375 0.438241 0.272428
+v -0.484375 0.499970 0.375000
+v -0.484375 -0.499970 0.375000
+v -0.484375 0.492637 0.315558
+v -0.484375 -0.492637 0.458272
+v -0.484375 0.492637 0.434442
+v -0.484375 -0.492637 0.291728
+v -0.375000 0.431979 0.273935
+v -0.375000 0.431979 0.476065
+v -0.484375 -0.342658 0.499999
+v -0.484375 -0.342658 0.250001
+v -0.484375 0.342658 0.499999
+v -0.484375 0.342658 0.250001
+v -0.453125 -0.500001 0.489487
+v -0.453125 -0.500001 0.260513
+v -0.453125 0.438241 0.477572
+v -0.453125 0.438241 0.272428
+v -0.453125 0.499970 0.375000
+v -0.453125 -0.499970 0.375000
+v -0.453125 0.492637 0.315558
+v -0.453125 -0.492637 0.458272
+v -0.453125 0.492637 0.434442
+v -0.453125 -0.492637 0.291728
+v -0.375000 -0.431979 0.273935
+v -0.375000 -0.431979 0.476065
+v -0.453125 -0.342658 0.499999
+v -0.453125 -0.342658 0.250001
+v -0.453125 0.342658 0.499999
+v -0.453125 0.342658 0.250001
+v -0.437500 -0.500001 0.487980
+v -0.437500 -0.500001 0.262020
+v -0.437500 0.431979 0.476065
+v -0.437500 0.431979 0.273935
+v -0.437500 -0.326705 0.429514
+v -0.437500 0.326705 0.429514
+v -0.437500 -0.326705 0.320486
+v -0.437500 0.326705 0.320486
+v -0.437500 0.492617 0.375000
+v -0.437500 -0.492617 0.375000
+v -0.437500 0.485456 0.316399
+v -0.437500 -0.485456 0.457431
+v -0.437500 0.367315 0.337225
+v -0.437500 0.485456 0.433601
+v -0.437500 -0.485456 0.292569
+v -0.437500 0.367315 0.412775
+v -0.437500 -0.367315 0.412775
+v -0.437500 -0.367315 0.337225
+v -0.437500 0.389682 0.375000
+v -0.437500 -0.389682 0.375000
+v -0.437500 -0.337144 0.498317
+v -0.437500 -0.337144 0.251683
+v -0.437500 0.337144 0.498317
+v -0.437500 0.337144 0.251683
+v 0.375000 0.390460 0.352416
+v -0.492188 0.390460 0.352416
+v -0.492188 -0.281415 0.352416
+v 0.375000 -0.281415 0.352416
+v -0.492188 -0.313354 0.320478
+v 0.375000 -0.313354 0.320478
+v -0.492188 -0.358521 0.320478
+v 0.375000 -0.358521 0.320478
+v -0.492188 -0.390460 0.352416
+v 0.375000 -0.390460 0.352416
+v -0.492188 -0.390460 0.397584
+v 0.375000 -0.390460 0.397584
+v -0.492188 -0.358521 0.429522
+v 0.375000 -0.358521 0.429522
+v -0.492188 -0.313354 0.429522
+v 0.375000 -0.313354 0.429522
+v -0.492188 -0.281415 0.397584
+v 0.375000 -0.281415 0.397584
+v -0.492188 0.358521 0.320478
+v 0.375000 0.358521 0.320478
+v -0.492188 0.313354 0.320478
+v 0.375000 0.313354 0.320478
+v -0.492188 0.281415 0.352416
+v 0.375000 0.281415 0.352416
+v -0.492188 0.281415 0.397584
+v 0.375000 0.281415 0.397584
+v -0.492188 0.313354 0.429522
+v 0.375000 0.313354 0.429522
+v -0.492188 0.358521 0.429522
+v 0.375000 0.358521 0.429522
+v -0.492188 0.390460 0.397584
+v 0.375000 0.390460 0.397584
+v -0.375000 -0.326705 0.429514
+v -0.375000 0.326705 0.429514
+v -0.375000 -0.326705 0.320486
+v -0.375000 0.326705 0.320486
+v -0.375000 0.492617 0.375000
+v -0.375000 -0.492617 0.375000
+v -0.375000 0.485456 0.316399
+v -0.375000 -0.485456 0.433601
+v -0.375000 0.367315 0.337225
+v -0.375000 0.485456 0.433601
+v -0.375000 -0.485456 0.316399
+v -0.375000 0.367315 0.412775
+v -0.375000 -0.367315 0.412775
+v -0.375000 -0.367315 0.337225
+v -0.375000 0.389682 0.375000
+v -0.375000 -0.389682 0.375000
+v -0.375000 -0.337144 0.498317
+v -0.375000 -0.337144 0.251683
+v -0.375000 0.337144 0.498317
+v -0.375000 0.337144 0.251683
+v -0.359375 -0.438241 0.477572
+v -0.359375 -0.438241 0.272428
+v -0.359375 0.438241 0.477572
+v -0.359375 0.438241 0.272428
+v -0.359375 0.499970 0.375000
+v -0.359375 -0.499970 0.375000
+v -0.359375 0.492637 0.315558
+v -0.359375 -0.492637 0.434442
+v -0.359375 0.492637 0.434442
+v -0.359375 -0.492637 0.315558
+v -0.359375 -0.342658 0.499999
+v -0.359375 -0.342658 0.250001
+v -0.359375 0.342658 0.499999
+v -0.359375 0.342658 0.250001
+v -0.328125 -0.438241 0.477572
+v -0.328125 -0.438241 0.272428
+v -0.328125 0.438241 0.477572
+v -0.328125 0.438241 0.272428
+v -0.328125 0.499970 0.375000
+v -0.328125 -0.499970 0.375000
+v -0.328125 0.492637 0.315558
+v -0.328125 -0.492637 0.434442
+v -0.328125 0.492637 0.434442
+v -0.328125 -0.492637 0.315558
+v -0.328125 -0.342658 0.499999
+v -0.328125 -0.342658 0.250001
+v -0.328125 0.342658 0.499999
+v -0.328125 0.342658 0.250001
+v -0.312500 -0.431979 0.476065
+v -0.312500 -0.431979 0.273935
+v -0.312500 0.431979 0.476065
+v -0.312500 0.431979 0.273935
+v -0.312500 -0.326705 0.429514
+v -0.312500 0.326705 0.429514
+v -0.312500 -0.326705 0.320486
+v -0.312500 0.326705 0.320486
+v -0.312500 0.492617 0.375000
+v -0.312500 -0.492617 0.375000
+v -0.312500 0.485456 0.316399
+v -0.312500 -0.485456 0.433601
+v -0.312500 0.367315 0.337225
+v -0.312500 0.485456 0.433601
+v -0.312500 -0.485456 0.316399
+v -0.312500 0.367315 0.412775
+v -0.312500 -0.367315 0.412775
+v -0.312500 -0.367315 0.337225
+v -0.312500 0.389682 0.375000
+v -0.312500 -0.389682 0.375000
+v -0.312500 -0.337144 0.498317
+v -0.312500 -0.337144 0.251683
+v -0.312500 0.337144 0.498317
+v -0.312500 0.337144 0.251683
+v -0.250000 0.431979 0.273935
+v -0.250000 0.431979 0.476065
+v -0.250000 -0.431979 0.273935
+v -0.250000 -0.431979 0.476065
+v -0.250000 -0.326705 0.429514
+v -0.250000 0.326705 0.429514
+v -0.250000 -0.326705 0.320486
+v -0.250000 0.326705 0.320486
+v -0.250000 0.492617 0.375000
+v -0.250000 -0.492617 0.375000
+v -0.250000 0.485456 0.316399
+v -0.250000 -0.485456 0.433601
+v -0.250000 0.367315 0.337225
+v -0.250000 0.485456 0.433601
+v -0.250000 -0.485456 0.316399
+v -0.250000 0.367315 0.412775
+v -0.250000 -0.367315 0.412775
+v -0.250000 -0.367315 0.337225
+v -0.250000 0.389682 0.375000
+v -0.250000 -0.389682 0.375000
+v -0.250000 -0.337144 0.498317
+v -0.250000 -0.337144 0.251683
+v -0.250000 0.337144 0.498317
+v -0.250000 0.337144 0.251683
+v -0.234375 -0.438241 0.477572
+v -0.234375 -0.438241 0.272428
+v -0.234375 0.438241 0.477572
+v -0.234375 0.438241 0.272428
+v -0.234375 0.499970 0.375000
+v -0.234375 -0.499970 0.375000
+v -0.234375 0.492637 0.315558
+v -0.234375 -0.492637 0.434442
+v -0.234375 0.492637 0.434442
+v -0.234375 -0.492637 0.315558
+v -0.234375 -0.342658 0.499999
+v -0.234375 -0.342658 0.250001
+v -0.234375 0.342658 0.499999
+v -0.234375 0.342658 0.250001
+v -0.203125 -0.438241 0.477572
+v -0.203125 -0.438241 0.272428
+v -0.203125 0.438241 0.477572
+v -0.203125 0.438241 0.272428
+v -0.203125 0.499970 0.375000
+v -0.203125 -0.499970 0.375000
+v -0.203125 0.492637 0.315558
+v -0.203125 -0.492637 0.434442
+v -0.203125 0.492637 0.434442
+v -0.203125 -0.492637 0.315558
+v -0.203125 -0.342658 0.499999
+v -0.203125 -0.342658 0.250001
+v -0.203125 0.342658 0.499999
+v -0.203125 0.342658 0.250001
+v -0.187500 -0.431979 0.476065
+v -0.187500 -0.431979 0.273935
+v -0.187500 0.431979 0.476065
+v -0.187500 0.431979 0.273935
+v -0.187500 -0.326705 0.429514
+v -0.187500 0.326705 0.429514
+v -0.187500 -0.326705 0.320486
+v -0.187500 0.326705 0.320486
+v -0.187500 0.492617 0.375000
+v -0.187500 -0.492617 0.375000
+v -0.187500 0.485456 0.316399
+v -0.187500 -0.485456 0.433601
+v -0.187500 0.367315 0.337225
+v -0.187500 0.485456 0.433601
+v -0.187500 -0.485456 0.316399
+v -0.187500 0.367315 0.412775
+v -0.187500 -0.367315 0.412775
+v -0.187500 -0.367315 0.337225
+v -0.187500 0.389682 0.375000
+v -0.187500 -0.389682 0.375000
+v -0.187500 -0.337144 0.498317
+v -0.187500 -0.337144 0.251683
+v -0.187500 0.337144 0.498317
+v -0.187500 0.337144 0.251683
+v -0.125000 0.431979 0.273935
+v -0.125000 0.431979 0.476065
+v -0.125000 -0.431979 0.273935
+v -0.125000 -0.431979 0.476065
+v -0.125000 -0.326705 0.429514
+v -0.125000 0.326705 0.429514
+v -0.125000 -0.326705 0.320486
+v -0.125000 0.326705 0.320486
+v -0.125000 0.492617 0.375000
+v -0.125000 -0.492617 0.375000
+v -0.125000 0.485456 0.316399
+v -0.125000 -0.485456 0.433601
+v -0.125000 0.367315 0.337225
+v -0.125000 0.485456 0.433601
+v -0.125000 -0.485456 0.316399
+v -0.125000 0.367315 0.412775
+v -0.125000 -0.367315 0.412775
+v -0.125000 -0.367315 0.337225
+v -0.125000 0.389682 0.375000
+v -0.125000 -0.389682 0.375000
+v -0.125000 -0.337144 0.498317
+v -0.125000 -0.337144 0.251683
+v -0.125000 0.337144 0.498317
+v -0.125000 0.337144 0.251683
+v -0.109375 -0.438241 0.477572
+v -0.109375 -0.438241 0.272428
+v -0.109375 0.438241 0.477572
+v -0.109375 0.438241 0.272428
+v -0.109375 0.499970 0.375000
+v -0.109375 -0.499970 0.375000
+v -0.109375 0.492637 0.315558
+v -0.109375 -0.492637 0.434442
+v -0.109375 0.492637 0.434442
+v -0.109375 -0.492637 0.315558
+v -0.109375 -0.342658 0.499999
+v -0.109375 -0.342658 0.250001
+v -0.109375 0.342658 0.499999
+v -0.109375 0.342658 0.250001
+v -0.078125 -0.438241 0.477572
+v -0.078125 -0.438241 0.272428
+v -0.078125 0.438241 0.477572
+v -0.078125 0.438241 0.272428
+v -0.078125 0.499970 0.375000
+v -0.078125 -0.499970 0.375000
+v -0.078125 0.492637 0.315558
+v -0.078125 -0.492637 0.434442
+v -0.078125 0.492637 0.434442
+v -0.078125 -0.492637 0.315558
+v -0.078125 -0.342658 0.499999
+v -0.078125 -0.342658 0.250001
+v -0.078125 0.342658 0.499999
+v -0.078125 0.342658 0.250001
+v -0.062500 -0.431979 0.476065
+v -0.062500 -0.431979 0.273935
+v -0.062500 0.431979 0.476065
+v -0.062500 0.431979 0.273935
+v -0.062500 -0.326705 0.429514
+v -0.062500 0.326705 0.429514
+v -0.062500 -0.326705 0.320486
+v -0.062500 0.326705 0.320486
+v -0.062500 0.492617 0.375000
+v -0.062500 -0.492617 0.375000
+v -0.062500 0.485456 0.316399
+v -0.062500 -0.485456 0.433601
+v -0.062500 0.367315 0.337225
+v -0.062500 0.485456 0.433601
+v -0.062500 -0.485456 0.316399
+v -0.062500 0.367315 0.412775
+v -0.062500 -0.367315 0.412775
+v -0.062500 -0.367315 0.337225
+v -0.062500 0.389682 0.375000
+v -0.062500 -0.389682 0.375000
+v -0.062500 -0.337144 0.498317
+v -0.062500 -0.337144 0.251683
+v -0.062500 0.337144 0.498317
+v -0.062500 0.337144 0.251683
+v -0.000000 0.431979 0.273935
+v -0.000000 0.431979 0.476065
+v -0.000000 -0.431979 0.273935
+v -0.000000 -0.431979 0.476065
+v -0.000000 -0.326705 0.429514
+v -0.000000 0.326705 0.429514
+v -0.000000 -0.326705 0.320486
+v -0.000000 0.326705 0.320486
+v -0.000000 0.492617 0.375000
+v -0.000000 -0.492617 0.375000
+v -0.000000 0.485456 0.316399
+v -0.000000 -0.485456 0.433601
+v -0.000000 0.367315 0.337225
+v -0.000000 0.485456 0.433601
+v -0.000000 -0.485456 0.316399
+v -0.000000 0.367315 0.412775
+v -0.000000 -0.367315 0.412775
+v -0.000000 -0.367315 0.337225
+v -0.000000 0.389682 0.375000
+v -0.000000 -0.389682 0.375000
+v -0.000000 -0.337144 0.498317
+v -0.000000 -0.337144 0.251683
+v -0.000000 0.337144 0.498317
+v -0.000000 0.337144 0.251683
+v 0.015625 -0.438241 0.477572
+v 0.015625 -0.438241 0.272428
+v 0.015625 0.438241 0.477572
+v 0.015625 0.438241 0.272428
+v 0.015625 0.499970 0.375000
+v 0.015625 -0.499970 0.375000
+v 0.015625 0.492637 0.315558
+v 0.015625 -0.492637 0.434442
+v 0.015625 0.492637 0.434442
+v 0.015625 -0.492637 0.315558
+v 0.015625 -0.342658 0.499999
+v 0.015625 -0.342658 0.250001
+v 0.015625 0.342658 0.499999
+v 0.015625 0.342658 0.250001
+v 0.046875 -0.438241 0.477572
+v 0.046875 -0.438241 0.272428
+v 0.046875 0.438241 0.477572
+v 0.046875 0.438241 0.272428
+v 0.046875 0.499970 0.375000
+v 0.046875 -0.499970 0.375000
+v 0.046875 0.492637 0.315558
+v 0.046875 -0.492637 0.434442
+v 0.046875 0.492637 0.434442
+v 0.046875 -0.492637 0.315558
+v 0.046875 -0.342658 0.499999
+v 0.046875 -0.342658 0.250001
+v 0.046875 0.342658 0.499999
+v 0.046875 0.342658 0.250001
+v 0.062500 -0.431979 0.476065
+v 0.062500 -0.431979 0.273935
+v 0.062500 0.431979 0.476065
+v 0.062500 0.431979 0.273935
+v 0.062500 -0.326705 0.429514
+v 0.062500 0.326705 0.429514
+v 0.062500 -0.326705 0.320486
+v 0.062500 0.326705 0.320486
+v 0.062500 0.492617 0.375000
+v 0.062500 -0.492617 0.375000
+v 0.062500 0.485456 0.316399
+v 0.062500 -0.485456 0.433601
+v 0.062500 0.367315 0.337225
+v 0.062500 0.485456 0.433601
+v 0.062500 -0.485456 0.316399
+v 0.062500 0.367315 0.412775
+v 0.062500 -0.367315 0.412775
+v 0.062500 -0.367315 0.337225
+v 0.062500 0.389682 0.375000
+v 0.062500 -0.389682 0.375000
+v 0.062500 -0.337144 0.498317
+v 0.062500 -0.337144 0.251683
+v 0.062500 0.337144 0.498317
+v 0.062500 0.337144 0.251683
+v 0.125000 0.431979 0.273935
+v 0.125000 0.431979 0.476065
+v 0.125000 -0.431979 0.273935
+v 0.125000 -0.431979 0.476065
+v 0.125000 -0.326705 0.429514
+v 0.125000 0.326705 0.429514
+v 0.125000 -0.326705 0.320486
+v 0.125000 0.326705 0.320486
+v 0.125000 0.492617 0.375000
+v 0.125000 -0.492617 0.375000
+v 0.125000 0.485456 0.316399
+v 0.125000 -0.485456 0.433601
+v 0.125000 0.367315 0.337225
+v 0.125000 0.485456 0.433601
+v 0.125000 -0.485456 0.316399
+v 0.125000 0.367315 0.412775
+v 0.125000 -0.367315 0.412775
+v 0.125000 -0.367315 0.337225
+v 0.125000 0.389682 0.375000
+v 0.125000 -0.389682 0.375000
+v 0.125000 -0.337144 0.498317
+v 0.125000 -0.337144 0.251683
+v 0.125000 0.337144 0.498317
+v 0.125000 0.337144 0.251683
+v 0.140625 -0.438241 0.477572
+v 0.140625 -0.438241 0.272428
+v 0.140625 0.438241 0.477572
+v 0.140625 0.438241 0.272428
+v 0.140625 0.499970 0.375000
+v 0.140625 -0.499970 0.375000
+v 0.140625 0.492637 0.315558
+v 0.140625 -0.492637 0.434442
+v 0.140625 0.492637 0.434442
+v 0.140625 -0.492637 0.315558
+v 0.140625 -0.342658 0.499999
+v 0.140625 -0.342658 0.250001
+v 0.140625 0.342658 0.499999
+v 0.140625 0.342658 0.250001
+v 0.171875 -0.438241 0.477572
+v 0.171875 -0.438241 0.272428
+v 0.171875 0.438241 0.477572
+v 0.171875 0.438241 0.272428
+v 0.171875 0.499970 0.375000
+v 0.171875 -0.499970 0.375000
+v 0.171875 0.492637 0.315558
+v 0.171875 -0.492637 0.434442
+v 0.171875 0.492637 0.434442
+v 0.171875 -0.492637 0.315558
+v 0.171875 -0.342658 0.499999
+v 0.171875 -0.342658 0.250001
+v 0.171875 0.342658 0.499999
+v 0.171875 0.342658 0.250001
+v 0.187500 -0.431979 0.476065
+v 0.187500 -0.431979 0.273935
+v 0.187500 0.431979 0.476065
+v 0.187500 0.431979 0.273935
+v 0.187500 -0.326705 0.429514
+v 0.187500 0.326705 0.429514
+v 0.187500 -0.326705 0.320486
+v 0.187500 0.326705 0.320486
+v 0.187500 0.492617 0.375000
+v 0.187500 -0.492617 0.375000
+v 0.187500 0.485456 0.316399
+v 0.187500 -0.485456 0.433601
+v 0.187500 0.367315 0.337225
+v 0.187500 0.485456 0.433601
+v 0.187500 -0.485456 0.316399
+v 0.187500 0.367315 0.412775
+v 0.187500 -0.367315 0.412775
+v 0.187500 -0.367315 0.337225
+v 0.187500 0.389682 0.375000
+v 0.187500 -0.389682 0.375000
+v 0.187500 -0.337144 0.498317
+v 0.187500 -0.337144 0.251683
+v 0.187500 0.337144 0.498317
+v 0.187500 0.337144 0.251683
+v 0.250000 0.431979 0.273935
+v 0.250000 0.431979 0.476065
+v 0.250000 -0.431979 0.273935
+v 0.250000 -0.431979 0.476065
+v 0.250000 -0.326705 0.429514
+v 0.250000 0.326705 0.429514
+v 0.250000 -0.326705 0.320486
+v 0.250000 0.326705 0.320486
+v 0.250000 0.492617 0.375000
+v 0.250000 -0.492617 0.375000
+v 0.250000 0.485456 0.316399
+v 0.250000 -0.485456 0.433601
+v 0.250000 0.367315 0.337225
+v 0.250000 0.485456 0.433601
+v 0.250000 -0.485456 0.316399
+v 0.250000 0.367315 0.412775
+v 0.250000 -0.367315 0.412775
+v 0.250000 -0.367315 0.337225
+v 0.250000 0.389682 0.375000
+v 0.250000 -0.389682 0.375000
+v 0.250000 -0.337144 0.498317
+v 0.250000 -0.337144 0.251683
+v 0.250000 0.337144 0.498317
+v 0.250000 0.337144 0.251683
+v 0.265625 -0.438241 0.477572
+v 0.265625 -0.438241 0.272428
+v 0.265625 0.438241 0.477572
+v 0.265625 0.438241 0.272428
+v 0.265625 0.499970 0.375000
+v 0.265625 -0.499970 0.375000
+v 0.265625 0.492637 0.315558
+v 0.265625 -0.492637 0.434442
+v 0.265625 0.492637 0.434442
+v 0.265625 -0.492637 0.315558
+v 0.265625 -0.342658 0.499999
+v 0.265625 -0.342658 0.250001
+v 0.265625 0.342658 0.499999
+v 0.265625 0.342658 0.250001
+v 0.296875 -0.438241 0.477572
+v 0.296875 -0.438241 0.272428
+v 0.296875 0.438241 0.477572
+v 0.296875 0.438241 0.272428
+v 0.296875 0.499970 0.375000
+v 0.296875 -0.499970 0.375000
+v 0.296875 0.492637 0.315558
+v 0.296875 -0.492637 0.434442
+v 0.296875 0.492637 0.434442
+v 0.296875 -0.492637 0.315558
+v 0.296875 -0.342658 0.499999
+v 0.296875 -0.342658 0.250001
+v 0.296875 0.342658 0.499999
+v 0.296875 0.342658 0.250001
+v 0.312500 -0.431979 0.476065
+v 0.312500 -0.431979 0.273935
+v 0.312500 0.431979 0.476065
+v 0.312500 0.431979 0.273935
+v 0.312500 -0.326705 0.429514
+v 0.312500 0.326705 0.429514
+v 0.312500 -0.326705 0.320486
+v 0.312500 0.326705 0.320486
+v 0.312500 0.492617 0.375000
+v 0.312500 -0.492617 0.375000
+v 0.312500 0.485456 0.316399
+v 0.312500 -0.485456 0.433601
+v 0.312500 0.367315 0.337225
+v 0.312500 0.485456 0.433601
+v 0.312500 -0.485456 0.316399
+v 0.312500 0.367315 0.412775
+v 0.312500 -0.367315 0.412775
+v 0.312500 -0.367315 0.337225
+v 0.312500 0.389682 0.375000
+v 0.312500 -0.389682 0.375000
+v 0.312500 -0.337144 0.498317
+v 0.312500 -0.337144 0.251683
+v 0.312500 0.337144 0.498317
+v 0.312500 0.337144 0.251683
+v 0.375000 0.431979 0.273935
+v 0.375000 0.431979 0.476065
+v 0.375000 -0.500001 0.262020
+v 0.375000 -0.500001 0.487980
+v 0.375000 0.492617 0.375000
+v 0.375000 -0.492617 0.375000
+v 0.375000 0.485456 0.316399
+v 0.375000 -0.485456 0.457431
+v 0.375000 0.485456 0.433601
+v 0.375000 -0.485456 0.292569
+v 0.375000 -0.337144 0.498317
+v 0.375000 -0.337144 0.251683
+v 0.375000 0.337144 0.498317
+v 0.375000 0.337144 0.251683
+v 0.390625 -0.500001 0.489487
+v 0.390625 -0.500001 0.260513
+v 0.390625 0.438241 0.477572
+v 0.390625 0.438241 0.272428
+v 0.390625 0.499970 0.375000
+v 0.390625 -0.499970 0.375000
+v 0.390625 0.492637 0.315558
+v 0.390625 -0.492637 0.458272
+v 0.390625 0.492637 0.434442
+v 0.390625 -0.492637 0.291728
+v 0.390625 -0.342658 0.499999
+v 0.390625 -0.342658 0.250001
+v 0.390625 0.342658 0.499999
+v 0.390625 0.342658 0.250001
+v 0.421875 -0.500001 0.489487
+v 0.421875 -0.500001 0.260513
+v 0.421875 0.438241 0.477572
+v 0.421875 0.438241 0.272428
+v 0.421875 0.499970 0.375000
+v 0.421875 -0.499970 0.375000
+v 0.421875 0.492637 0.315558
+v 0.421875 -0.492637 0.458272
+v 0.421875 0.492637 0.434442
+v 0.421875 -0.492637 0.291728
+v 0.421875 -0.342658 0.499999
+v 0.421875 -0.342658 0.250001
+v 0.421875 0.342658 0.499999
+v 0.421875 0.342658 0.250001
+v 0.437500 -0.500001 0.487980
+v 0.437500 -0.500001 0.262020
+v 0.437500 0.431979 0.476065
+v 0.437500 0.431979 0.273935
+v 0.437500 0.492617 0.375000
+v 0.437500 -0.492617 0.375000
+v 0.437500 0.485456 0.316399
+v 0.437500 -0.485456 0.457431
+v 0.437500 0.485456 0.433601
+v 0.437500 -0.485456 0.292569
+v 0.437500 -0.337144 0.498317
+v 0.437500 -0.337144 0.251683
+v 0.437500 0.337144 0.498317
+v 0.437500 0.337144 0.251683
+v 0.375000 -0.499997 0.463418
+v 0.390625 -0.500000 0.461964
+v 0.421875 -0.500000 0.461964
+v 0.437500 -0.499997 0.463418
+v 0.437500 -0.499997 0.286658
+v 0.375000 -0.499997 0.286658
+v 0.390625 -0.500000 0.288036
+v 0.421875 -0.500000 0.288036
+v -0.500000 -0.499997 0.286658
+v -0.437500 -0.499997 0.286658
+v -0.453125 -0.500000 0.288036
+v -0.484375 -0.500000 0.288036
+v -0.437500 -0.499997 0.463418
+v -0.500000 -0.499997 0.463418
+v -0.484375 -0.500000 0.461964
+v -0.453125 -0.500000 0.461964
+v -0.449219 -0.292969 0.406250
+v -0.488281 -0.292969 0.406250
+v -0.488281 -0.292969 0.343750
+v -0.449219 -0.292969 0.343750
+v -0.449219 0.292969 0.406250
+v -0.488281 0.292969 0.406250
+v -0.488281 0.292969 0.343750
+v -0.449219 0.292969 0.343750
+v -0.324219 -0.292969 0.406250
+v -0.363281 -0.292969 0.406250
+v -0.363281 -0.292969 0.343750
+v -0.324219 -0.292969 0.343750
+v -0.324219 0.292969 0.406250
+v -0.363281 0.292969 0.406250
+v -0.363281 0.292969 0.343750
+v -0.324219 0.292969 0.343750
+v -0.199219 -0.292969 0.406250
+v -0.238281 -0.292969 0.406250
+v -0.238281 -0.292969 0.343750
+v -0.199219 -0.292969 0.343750
+v -0.199219 0.292969 0.406250
+v -0.238281 0.292969 0.406250
+v -0.238281 0.292969 0.343750
+v -0.199219 0.292969 0.343750
+v -0.074219 -0.292969 0.406250
+v -0.113281 -0.292969 0.406250
+v -0.113281 -0.292969 0.343750
+v -0.074219 -0.292969 0.343750
+v -0.074219 0.292969 0.406250
+v -0.113281 0.292969 0.406250
+v -0.113281 0.292969 0.343750
+v -0.074219 0.292969 0.343750
+v 0.050781 -0.292969 0.406250
+v 0.011719 -0.292969 0.406250
+v 0.011719 -0.292969 0.343750
+v 0.050781 -0.292969 0.343750
+v 0.050781 0.292969 0.406250
+v 0.011719 0.292969 0.406250
+v 0.011719 0.292969 0.343750
+v 0.050781 0.292969 0.343750
+v 0.175781 -0.292969 0.406250
+v 0.136719 -0.292969 0.406250
+v 0.136719 -0.292969 0.343750
+v 0.175781 -0.292969 0.343750
+v 0.175781 0.292969 0.406250
+v 0.136719 0.292969 0.406250
+v 0.136719 0.292969 0.343750
+v 0.175781 0.292969 0.343750
+v 0.300781 -0.292969 0.406250
+v 0.261719 -0.292969 0.406250
+v 0.261719 -0.292969 0.343750
+v 0.300781 -0.292969 0.343750
+v 0.300781 0.292969 0.406250
+v 0.261719 0.292969 0.406250
+v 0.261719 0.292969 0.343750
+v 0.300781 0.292969 0.343750
+v 0.375000 0.337144 0.375000
+v 0.468750 -0.500000 0.375000
+v 0.468750 -0.363281 0.375000
+v 0.473326 -0.500000 0.363952
+v 0.473326 -0.363281 0.363951
+v 0.484375 -0.500000 0.359375
+v 0.484375 -0.363281 0.359375
+v 0.495424 -0.500000 0.363952
+v 0.495424 -0.363281 0.363951
+v 0.500000 -0.500000 0.375000
+v 0.500000 -0.363281 0.375000
+v 0.495424 -0.500000 0.386049
+v 0.495424 -0.363281 0.386049
+v 0.484375 -0.500000 0.390625
+v 0.484375 -0.363281 0.390625
+v 0.473326 -0.500000 0.386049
+v 0.473326 -0.363281 0.386049
+v 0.467810 -0.348056 0.375000
+v 0.471774 -0.345767 0.363951
+v 0.481342 -0.340243 0.359375
+v 0.490910 -0.334719 0.363951
+v 0.494874 -0.332431 0.375000
+v 0.490910 -0.334719 0.386049
+v 0.481342 -0.340243 0.390625
+v 0.471774 -0.345767 0.386049
+v 0.457430 -0.331957 0.375000
+v 0.459719 -0.327993 0.363951
+v 0.465243 -0.318425 0.359375
+v 0.470767 -0.308857 0.363951
+v 0.473055 -0.304893 0.375000
+v 0.470767 -0.308857 0.386049
+v 0.465243 -0.318425 0.390625
+v 0.459719 -0.327993 0.386049
+v 0.447681 -0.329064 0.375000
+v 0.447681 -0.324487 0.363952
+v 0.447681 -0.313439 0.359375
+v 0.447681 -0.302390 0.363952
+v 0.447681 -0.297814 0.375000
+v 0.447681 -0.302390 0.386049
+v 0.447681 -0.313439 0.390625
+v 0.447681 -0.324487 0.386049
+v 0.437500 0.337144 0.375000
+v 0.437500 -0.382812 0.445312
+v 0.437500 -0.382812 0.304688
+v 0.449219 -0.375000 0.312500
+v 0.449219 -0.375000 0.437500
+v 0.437500 0.320312 0.445312
+v 0.437500 0.320312 0.304688
+v 0.449219 0.312500 0.312500
+v 0.449219 0.312500 0.437500
+v 0.437500 -0.195312 0.445312
+v 0.437500 -0.195312 0.304688
+v 0.449219 -0.187500 0.312500
+v 0.449219 -0.187500 0.437500
+v 0.437500 -0.242188 0.304688
+v 0.449219 -0.250000 0.312500
+v 0.449219 -0.250000 0.437500
+v 0.437500 -0.242188 0.445312
+vt 0.818471 0.843297
+vt 0.818471 0.938830
+vt 0.802732 0.945138
+vt 0.802732 0.848852
+vt 0.657575 0.000000
+vt 0.741338 0.000000
+vt 0.741338 0.015877
+vt 0.656720 0.015877
+vt 0.944390 0.000000
+vt 0.944390 0.164055
+vt 0.928650 0.158500
+vt 0.928650 0.000000
+vt 0.825102 0.000000
+vt 0.825957 0.015877
+vt 0.000000 0.843364
+vt 0.015740 0.848919
+vt 0.015740 0.945204
+vt 0.000000 0.938896
+vt 0.000000 0.000067
+vt 0.015740 0.000066
+vt 0.015740 0.158566
+vt 0.000000 0.164121
+vt 0.618910 0.818471
+vt 0.559879 0.818471
+vt 0.559879 0.802731
+vt 0.619757 0.802731
+vt 0.125919 0.068589
+vt 0.125919 0.014718
+vt 0.141658 0.007485
+vt 0.141658 0.062281
+vt 0.000000 0.992767
+vt 0.015740 1.000000
+vt 0.125919 0.992767
+vt 0.125919 0.938897
+vt 0.141658 0.945204
+vt 0.141658 1.000000
+vt 0.618910 0.944390
+vt 0.559879 0.944390
+vt 0.559879 0.928650
+vt 0.619757 0.928650
+vt 0.944390 0.843297
+vt 0.944390 0.938830
+vt 0.928650 0.945138
+vt 0.928650 0.848852
+vt 0.944390 0.992700
+vt 0.928650 0.999934
+vt 0.500847 0.944390
+vt 0.500000 0.928650
+vt 0.559879 0.897171
+vt 0.619757 0.897171
+vt 0.897170 0.945138
+vt 0.897170 0.848852
+vt 0.897170 0.999934
+vt 0.500000 0.897171
+vt 0.897170 0.158500
+vt 0.741338 0.047633
+vt 0.656720 0.047633
+vt 0.897170 0.000000
+vt 0.825957 0.047633
+vt 0.047220 0.848919
+vt 0.047220 0.945204
+vt 0.047220 0.158566
+vt 0.125919 0.164121
+vt 0.141658 0.158566
+vt 0.141658 0.848919
+vt 0.125919 0.843364
+vt 0.047220 1.000000
+vt 0.062959 0.938896
+vt 0.062959 0.992767
+vt 0.559879 0.881431
+vt 0.618910 0.881431
+vt 0.881430 0.938830
+vt 0.881430 0.843297
+vt 0.881430 0.992700
+vt 0.500847 0.881431
+vt 0.881430 0.164055
+vt 0.944390 0.832783
+vt 0.881430 0.832783
+vt 0.881430 0.174570
+vt 0.944390 0.174570
+vt 0.000000 0.174636
+vt 0.062959 0.174636
+vt 0.062959 0.832849
+vt 0.000000 0.832849
+vt 0.741338 0.127021
+vt 0.800886 0.127021
+vt 0.801741 0.142899
+vt 0.741338 0.142899
+vt 0.741338 0.063510
+vt 0.657575 0.063510
+vt 0.881430 0.000000
+vt 0.825102 0.063510
+vt 0.062959 0.843364
+vt 0.047220 0.000066
+vt 0.062959 0.000067
+vt 0.062959 0.164121
+vt 0.818471 0.068522
+vt 0.818471 0.164055
+vt 0.802732 0.158500
+vt 0.802732 0.062215
+vt 0.681790 0.127021
+vt 0.680935 0.142899
+vt 0.124223 0.111130
+vt 0.124223 0.007438
+vt 0.207260 0.014651
+vt 0.162276 0.133661
+vt 0.238033 0.000000
+vt 0.248446 0.164054
+vt 0.179137 0.174570
+vt 0.086170 0.133661
+vt 0.041186 0.014651
+vt 0.010412 0.000000
+vt 0.069309 0.174570
+vt 0.248446 0.843297
+vt 0.179137 0.832782
+vt 0.124223 0.999913
+vt 0.124223 0.896221
+vt 0.162276 0.873691
+vt 0.183254 0.992700
+vt 0.226031 0.938830
+vt 0.065191 0.992700
+vt 0.086170 0.873691
+vt 0.022415 0.938830
+vt 0.069309 0.832782
+vt 0.000000 0.843297
+vt 0.374223 0.111130
+vt 0.336170 0.133661
+vt 0.291186 0.014651
+vt 0.374223 0.007438
+vt 0.260413 0.000000
+vt 0.319309 0.174570
+vt 0.250000 0.164054
+vt 0.412276 0.133661
+vt 0.457260 0.014651
+vt 0.488033 0.000000
+vt 0.498446 0.164054
+vt 0.429137 0.174570
+vt 0.319309 0.832782
+vt 0.250000 0.843297
+vt 0.374223 0.999913
+vt 0.315192 0.992700
+vt 0.336170 0.873691
+vt 0.374223 0.896221
+vt 0.272415 0.938830
+vt 0.412276 0.873691
+vt 0.433254 0.992700
+vt 0.429137 0.832782
+vt 0.476030 0.938830
+vt 0.498446 0.843297
+vt 1.000000 0.625000
+vt 1.000000 0.687500
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 0.000000 0.312500
+vt 0.000000 0.250000
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 0.000000 0.562500
+vt 1.000000 0.562500
+vt 0.000000 0.937500
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.187500
+vt 1.000000 0.187500
+vt 0.000000 0.750000
+vt 1.000000 0.750000
+vt 1.000000 0.812500
+vt 0.000000 0.812500
+vt 0.000000 0.062500
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.062500
+vt 0.000000 0.125000
+vt 1.000000 0.125000
+vt 0.000000 0.375000
+vt 1.000000 0.375000
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 0.351473 0.897005
+vt 0.319300 0.864832
+vt 0.319300 0.819332
+vt 0.351473 0.787159
+vt 0.396973 0.787159
+vt 0.429146 0.819332
+vt 0.429146 0.864832
+vt 0.396973 0.897005
+vt 0.000000 0.500000
+vt 0.000000 0.437500
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 0.351473 0.220192
+vt 0.319300 0.188019
+vt 0.319300 0.142519
+vt 0.351473 0.110346
+vt 0.396973 0.110346
+vt 0.429146 0.142519
+vt 0.429146 0.188019
+vt 0.396973 0.220192
+vt 0.818471 0.992700
+vt 0.802732 0.999934
+vt 0.500847 0.818471
+vt 0.500000 0.802731
+vt 0.818471 0.014652
+vt 0.802732 0.007419
+vt 0.173138 0.007485
+vt 0.173138 0.062281
+vt 0.559879 0.771252
+vt 0.619757 0.771252
+vt 0.771252 0.945138
+vt 0.771252 0.848852
+vt 0.771252 0.999934
+vt 0.500000 0.771252
+vt 0.771252 0.158500
+vt 0.771252 0.062215
+vt 0.771252 0.007419
+vt 0.741338 0.174654
+vt 0.680935 0.174654
+vt 0.801741 0.174654
+vt 0.173138 0.848919
+vt 0.173138 0.945204
+vt 0.173138 0.158566
+vt 0.173138 1.000000
+vt 0.188878 0.938897
+vt 0.188878 0.992767
+vt 0.188878 0.014718
+vt 0.188878 0.068589
+vt 0.559879 0.755512
+vt 0.618910 0.755512
+vt 0.755512 0.938830
+vt 0.755512 0.843297
+vt 0.755512 0.992700
+vt 0.500847 0.755512
+vt 0.755512 0.164055
+vt 0.818471 0.832783
+vt 0.755512 0.832783
+vt 0.755512 0.174570
+vt 0.818471 0.174570
+vt 0.755512 0.068522
+vt 0.755512 0.014652
+vt 0.125919 0.174636
+vt 0.188878 0.174636
+vt 0.188878 0.832849
+vt 0.125919 0.832849
+vt 0.741338 0.190532
+vt 0.681790 0.190532
+vt 0.800886 0.190532
+vt 0.188878 0.843364
+vt 0.188878 0.164121
+vt 0.183254 0.014651
+vt 0.226031 0.068522
+vt 0.065191 0.014651
+vt 0.022415 0.068522
+vt 0.315192 0.014651
+vt 0.272415 0.068522
+vt 0.433254 0.014651
+vt 0.476030 0.068522
+vt 0.692553 0.843297
+vt 0.692553 0.938830
+vt 0.676813 0.945138
+vt 0.676813 0.848852
+vt 0.618910 0.692553
+vt 0.559879 0.692553
+vt 0.559879 0.676813
+vt 0.619757 0.676813
+vt 0.251837 0.068589
+vt 0.251837 0.014718
+vt 0.267577 0.007485
+vt 0.267577 0.062281
+vt 0.251837 0.992767
+vt 0.251837 0.938897
+vt 0.267577 0.945204
+vt 0.267577 1.000000
+vt 0.251837 0.164121
+vt 0.267577 0.158566
+vt 0.267577 0.848919
+vt 0.251837 0.843364
+vt 0.741338 0.254042
+vt 0.800886 0.254042
+vt 0.801741 0.269920
+vt 0.741338 0.269920
+vt 0.692553 0.068522
+vt 0.692553 0.164055
+vt 0.676813 0.158500
+vt 0.676813 0.062215
+vt 0.681790 0.254042
+vt 0.680935 0.269920
+vt 0.692553 0.992700
+vt 0.676813 0.999934
+vt 0.500847 0.692553
+vt 0.500000 0.676813
+vt 0.692553 0.014652
+vt 0.676813 0.007419
+vt 0.299056 0.007485
+vt 0.299056 0.062281
+vt 0.559879 0.645333
+vt 0.619757 0.645333
+vt 0.645333 0.945138
+vt 0.645333 0.848852
+vt 0.645333 0.999934
+vt 0.500000 0.645333
+vt 0.645333 0.158500
+vt 0.645333 0.062215
+vt 0.645333 0.007419
+vt 0.741338 0.301675
+vt 0.680935 0.301675
+vt 0.801741 0.301675
+vt 0.299056 0.848919
+vt 0.299056 0.945204
+vt 0.299056 0.158566
+vt 0.299056 1.000000
+vt 0.314796 0.938897
+vt 0.314796 0.992767
+vt 0.314796 0.014718
+vt 0.314796 0.068589
+vt 0.559879 0.629593
+vt 0.618910 0.629593
+vt 0.629593 0.938830
+vt 0.629593 0.843297
+vt 0.629593 0.992700
+vt 0.500847 0.629593
+vt 0.629593 0.164055
+vt 0.692553 0.832783
+vt 0.629593 0.832783
+vt 0.629593 0.174570
+vt 0.692553 0.174570
+vt 0.629593 0.068522
+vt 0.629593 0.014652
+vt 0.251837 0.174636
+vt 0.314796 0.174636
+vt 0.314796 0.832849
+vt 0.251837 0.832849
+vt 0.741338 0.317553
+vt 0.681790 0.317553
+vt 0.800886 0.317553
+vt 0.314796 0.843364
+vt 0.314796 0.164121
+vt 0.566634 0.843297
+vt 0.566634 0.938830
+vt 0.550894 0.945138
+vt 0.550894 0.848852
+vt 0.618910 0.566634
+vt 0.559879 0.566634
+vt 0.559879 0.550894
+vt 0.619757 0.550894
+vt 0.377756 0.068589
+vt 0.377756 0.014718
+vt 0.393496 0.007485
+vt 0.393496 0.062281
+vt 0.377756 0.992767
+vt 0.377756 0.938897
+vt 0.393496 0.945204
+vt 0.393496 1.000000
+vt 0.377756 0.164121
+vt 0.393496 0.158566
+vt 0.393496 0.848919
+vt 0.377756 0.843364
+vt 0.741338 0.381063
+vt 0.800886 0.381063
+vt 0.801741 0.396941
+vt 0.741338 0.396941
+vt 0.566634 0.068522
+vt 0.566634 0.164055
+vt 0.550894 0.158500
+vt 0.550894 0.062215
+vt 0.681790 0.381063
+vt 0.680935 0.396941
+vt 0.566634 0.992700
+vt 0.550894 0.999934
+vt 0.500847 0.566634
+vt 0.500000 0.550894
+vt 0.566634 0.014652
+vt 0.550894 0.007419
+vt 0.424975 0.007485
+vt 0.424975 0.062281
+vt 0.559879 0.519414
+vt 0.619757 0.519414
+vt 0.519414 0.945138
+vt 0.519414 0.848852
+vt 0.519414 0.999934
+vt 0.500000 0.519414
+vt 0.519414 0.158500
+vt 0.519414 0.062215
+vt 0.519414 0.007419
+vt 0.741338 0.428696
+vt 0.680935 0.428696
+vt 0.801741 0.428696
+vt 0.424975 0.848919
+vt 0.424975 0.945204
+vt 0.424975 0.158566
+vt 0.424975 1.000000
+vt 0.440715 0.938897
+vt 0.440715 0.992767
+vt 0.440715 0.014718
+vt 0.440715 0.068589
+vt 0.559879 0.503675
+vt 0.618910 0.503675
+vt 0.503675 0.938830
+vt 0.503675 0.843297
+vt 0.503675 0.992700
+vt 0.500847 0.503675
+vt 0.503675 0.164055
+vt 0.566634 0.832783
+vt 0.503675 0.832783
+vt 0.503675 0.174570
+vt 0.566634 0.174570
+vt 0.503675 0.068522
+vt 0.503675 0.014652
+vt 0.377756 0.174636
+vt 0.440715 0.174636
+vt 0.440715 0.832849
+vt 0.377756 0.832849
+vt 0.741338 0.444574
+vt 0.681790 0.444574
+vt 0.800886 0.444574
+vt 0.440715 0.843364
+vt 0.440715 0.164121
+vt 0.440715 0.843297
+vt 0.440715 0.938830
+vt 0.424975 0.945138
+vt 0.618910 0.440715
+vt 0.559879 0.440715
+vt 0.559879 0.424975
+vt 0.619757 0.424975
+vt 0.503674 0.068589
+vt 0.519414 0.007485
+vt 0.519414 0.062281
+vt 0.503674 0.992767
+vt 0.503674 0.938897
+vt 0.519414 0.945204
+vt 0.519414 1.000000
+vt 0.519414 0.158566
+vt 0.503674 0.843364
+vt 0.741338 0.508085
+vt 0.800886 0.508085
+vt 0.801741 0.523962
+vt 0.741338 0.523962
+vt 0.440715 0.068522
+vt 0.424975 0.158500
+vt 0.424975 0.062215
+vt 0.681790 0.508085
+vt 0.680935 0.523962
+vt 0.440715 0.992700
+vt 0.424975 0.999934
+vt 0.500847 0.440715
+vt 0.500000 0.424975
+vt 0.424975 0.007419
+vt 0.550894 0.007485
+vt 0.550894 0.062281
+vt 0.559879 0.393496
+vt 0.619757 0.393496
+vt 0.393496 0.945138
+vt 0.393496 0.999934
+vt 0.500000 0.393496
+vt 0.393496 0.158500
+vt 0.393496 0.062215
+vt 0.393496 0.007419
+vt 0.741338 0.555717
+vt 0.680935 0.555717
+vt 0.801741 0.555717
+vt 0.550894 0.945204
+vt 0.550894 0.158566
+vt 0.550894 1.000000
+vt 0.566634 0.938897
+vt 0.566634 0.992767
+vt 0.566634 0.068589
+vt 0.559879 0.377756
+vt 0.618910 0.377756
+vt 0.377756 0.938830
+vt 0.377756 0.843297
+vt 0.377756 0.992700
+vt 0.500847 0.377756
+vt 0.377756 0.068522
+vt 0.741338 0.571595
+vt 0.681790 0.571595
+vt 0.800886 0.571595
+vt 0.566634 0.843364
+vt 0.314797 0.843297
+vt 0.314797 0.938830
+vt 0.299057 0.945138
+vt 0.618910 0.314797
+vt 0.559879 0.314797
+vt 0.559879 0.299057
+vt 0.619757 0.299057
+vt 0.629593 0.068589
+vt 0.645333 0.007485
+vt 0.645333 0.062281
+vt 0.629593 0.992767
+vt 0.629593 0.938897
+vt 0.645333 0.945204
+vt 0.645333 1.000000
+vt 0.645333 0.158566
+vt 0.629593 0.843364
+vt 0.741338 0.635106
+vt 0.800886 0.635106
+vt 0.801741 0.650984
+vt 0.741338 0.650984
+vt 0.314797 0.068522
+vt 0.299057 0.158500
+vt 0.299057 0.062215
+vt 0.681790 0.635106
+vt 0.680935 0.650984
+vt 0.314797 0.992700
+vt 0.299057 0.999934
+vt 0.500847 0.314797
+vt 0.500000 0.299057
+vt 0.299057 0.007419
+vt 0.676812 0.007485
+vt 0.676812 0.062281
+vt 0.559879 0.267577
+vt 0.619757 0.267577
+vt 0.267577 0.945138
+vt 0.267577 0.999934
+vt 0.500000 0.267577
+vt 0.267577 0.158500
+vt 0.267577 0.062215
+vt 0.267577 0.007419
+vt 0.741338 0.682739
+vt 0.680935 0.682739
+vt 0.801741 0.682739
+vt 0.676812 0.945204
+vt 0.676812 0.158566
+vt 0.676812 1.000000
+vt 0.692552 0.938897
+vt 0.692552 0.992767
+vt 0.692552 0.068589
+vt 0.559879 0.251837
+vt 0.618910 0.251837
+vt 0.251837 0.938830
+vt 0.251837 0.843297
+vt 0.251837 0.992700
+vt 0.500847 0.251837
+vt 0.251837 0.068522
+vt 0.741338 0.698616
+vt 0.681790 0.698616
+vt 0.800886 0.698616
+vt 0.692552 0.843364
+vt 0.188878 0.843297
+vt 0.188878 0.938830
+vt 0.173138 0.945138
+vt 0.618910 0.188878
+vt 0.559879 0.188878
+vt 0.559879 0.173138
+vt 0.619757 0.173138
+vt 0.755512 0.068589
+vt 0.771252 0.007485
+vt 0.771252 0.062281
+vt 0.755512 0.992767
+vt 0.755512 0.938897
+vt 0.771252 0.945204
+vt 0.771252 1.000000
+vt 0.771252 0.158566
+vt 0.755512 0.843364
+vt 0.741338 0.762127
+vt 0.800886 0.762127
+vt 0.801741 0.778005
+vt 0.741338 0.778005
+vt 0.188878 0.068522
+vt 0.173138 0.158500
+vt 0.173138 0.062215
+vt 0.681790 0.762127
+vt 0.680935 0.778005
+vt 0.188878 0.992700
+vt 0.173138 0.999934
+vt 0.500847 0.188878
+vt 0.500000 0.173138
+vt 0.173138 0.007419
+vt 0.802732 0.007485
+vt 0.802732 0.062281
+vt 0.559879 0.141658
+vt 0.619757 0.141658
+vt 0.141659 0.945138
+vt 0.141659 0.999934
+vt 0.500000 0.141658
+vt 0.141659 0.158500
+vt 0.141659 0.062215
+vt 0.141659 0.007419
+vt 0.741338 0.809760
+vt 0.680935 0.809760
+vt 0.801741 0.809760
+vt 0.802732 0.945204
+vt 0.802732 0.158566
+vt 0.802732 1.000000
+vt 0.818471 0.938897
+vt 0.818471 0.992767
+vt 0.818471 0.068589
+vt 0.559879 0.125919
+vt 0.618910 0.125919
+vt 0.125919 0.938830
+vt 0.125919 0.843297
+vt 0.125919 0.992700
+vt 0.500847 0.125919
+vt 0.125919 0.068522
+vt 0.741338 0.825638
+vt 0.681790 0.825638
+vt 0.800886 0.825638
+vt 0.818471 0.843364
+vt 0.062959 0.843297
+vt 0.062959 0.938830
+vt 0.047220 0.945138
+vt 0.618910 0.062959
+vt 0.559879 0.062959
+vt 0.559879 0.047220
+vt 0.619757 0.047220
+vt 0.881431 0.992767
+vt 0.881431 0.938897
+vt 0.897170 0.945204
+vt 0.897170 1.000000
+vt 0.897170 0.158566
+vt 0.881431 0.843364
+vt 0.881431 0.000067
+vt 0.897170 0.000066
+vt 0.741338 0.889148
+vt 0.825102 0.889148
+vt 0.825957 0.905026
+vt 0.741338 0.905026
+vt 0.062959 0.000000
+vt 0.047220 0.158500
+vt 0.047220 0.000000
+vt 0.657575 0.889148
+vt 0.656720 0.905026
+vt 0.062959 0.992700
+vt 0.047220 0.999934
+vt 0.500847 0.062959
+vt 0.500000 0.047220
+vt 0.559879 0.015740
+vt 0.619757 0.015740
+vt 0.015740 0.945138
+vt 0.015740 0.999934
+vt 0.500000 0.015740
+vt 0.015740 0.158500
+vt 0.741338 0.936781
+vt 0.656720 0.936781
+vt 0.015740 0.000000
+vt 0.825957 0.936781
+vt 0.928650 0.848919
+vt 0.928650 0.945204
+vt 0.928650 0.158566
+vt 0.928650 1.000000
+vt 0.944390 0.938897
+vt 0.944390 0.992767
+vt 0.559879 0.000000
+vt 0.618910 0.000000
+vt 0.000000 0.938830
+vt 0.000000 0.992700
+vt 0.500847 0.000000
+vt 0.741338 0.952659
+vt 0.657575 0.952659
+vt 0.825102 0.952659
+vt 0.944390 0.843364
+vt 0.928650 0.000066
+vt 0.944390 0.000067
+vt 0.652968 0.936781
+vt 0.652968 0.905026
+vt 0.651490 0.952659
+vt 0.829709 0.905026
+vt 0.831108 0.889148
+vt 0.829709 0.047633
+vt 0.829709 0.015877
+vt 0.831108 0.000000
+vt 0.856145 0.000000
+vt 0.857676 0.015877
+vt 0.857676 0.047633
+vt 0.856145 0.063510
+vt 0.831108 0.063510
+vt 0.625000 0.936781
+vt 0.625000 0.905026
+vt 0.626531 0.889148
+vt 0.651490 0.889148
+vt 0.626531 0.952659
+vt 0.651490 0.063510
+vt 0.652968 0.047633
+vt 0.652968 0.015877
+vt 0.651490 0.000000
+vt 0.829709 0.936781
+vt 0.831108 0.952659
+vt 0.625000 0.047633
+vt 0.625000 0.015877
+vt 0.626531 0.000000
+vt 0.626531 0.063510
+vt 0.856145 0.889148
+vt 0.857676 0.905026
+vt 0.857676 0.936781
+vt 0.856145 0.952659
+vt 0.285232 0.000004
+vt 0.463291 0.000004
+vt 0.213214 0.000004
+vt 0.035155 0.000004
+vt 0.062959 0.798865
+vt 0.000000 0.798865
+vt 0.000000 0.208621
+vt 0.062959 0.208621
+vt 0.405702 0.798798
+vt 0.342743 0.798798
+vt 0.342743 0.208554
+vt 0.405702 0.208554
+vt 0.944390 0.798798
+vt 0.881430 0.798798
+vt 0.881430 0.208554
+vt 0.944390 0.208554
+vt 0.155703 0.798798
+vt 0.092743 0.798798
+vt 0.092743 0.208554
+vt 0.155703 0.208554
+vt 0.188878 0.798865
+vt 0.125919 0.798865
+vt 0.125919 0.208621
+vt 0.188878 0.208621
+vt 0.818471 0.798798
+vt 0.755512 0.798798
+vt 0.755512 0.208554
+vt 0.818471 0.208554
+vt 0.314796 0.798865
+vt 0.251837 0.798865
+vt 0.251837 0.208621
+vt 0.314796 0.208621
+vt 0.692553 0.798798
+vt 0.629593 0.798798
+vt 0.629593 0.208554
+vt 0.692553 0.208554
+vt 0.440715 0.798865
+vt 0.377756 0.798865
+vt 0.377756 0.208621
+vt 0.440715 0.208621
+vt 0.566634 0.798798
+vt 0.503675 0.798798
+vt 0.503675 0.208554
+vt 0.566634 0.208554
+vt 0.566634 0.798865
+vt 0.503674 0.798865
+vt 0.440715 0.798798
+vt 0.377756 0.798798
+vt 0.692552 0.798865
+vt 0.629593 0.798865
+vt 0.314797 0.798798
+vt 0.251837 0.798798
+vt 0.818471 0.798865
+vt 0.755512 0.798865
+vt 0.188878 0.798798
+vt 0.125919 0.798798
+vt 0.374223 0.843297
+vt 0.250000 0.937500
+vt 0.250000 1.000000
+vt 0.187500 1.000000
+vt 0.187500 0.937500
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt 0.062500 1.000000
+vt 0.062500 0.937500
+vt 0.500000 0.937500
+vt 0.562500 0.937500
+vt 0.562500 1.000000
+vt 0.500000 1.000000
+vt 0.437500 0.937500
+vt 0.437500 1.000000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.812500 0.187500
+vt 0.812500 0.562500
+vt 0.750000 0.562500
+vt 0.750000 0.187500
+vt 0.687500 0.562500
+vt 0.687500 0.187500
+vt 0.937500 0.187500
+vt 0.937500 0.562500
+vt 0.875000 0.562500
+vt 0.875000 0.187500
+vt 0.812500 0.687500
+vt 0.812500 0.812500
+vt 0.750000 0.812500
+vt 0.750000 0.687500
+vt 0.812500 0.250000
+vt 0.900888 0.286611
+vt 0.937500 0.375000
+vt 0.900888 0.463389
+vt 0.812500 0.500000
+vt 0.724112 0.463389
+vt 0.687500 0.375000
+vt 0.724112 0.286611
+vt 0.875000 0.687500
+vt 0.937500 0.687500
+vt 0.687500 0.687500
+vt 0.812500 0.937500
+vt 0.750000 0.937500
+vt 0.875000 0.812500
+vt 0.937500 0.812500
+vt 0.687500 0.812500
+vt 0.875000 0.937500
+vt 0.937500 0.937500
+vt 0.687500 0.937500
+vt 0.035508 0.000353
+vt 0.041566 0.014897
+vt 0.010661 0.000349
+vt 0.000205 0.163247
+vt 0.214323 0.000353
+vt 0.239248 0.000349
+vt 0.208344 0.014897
+vt 0.249705 0.163247
+vt 0.124955 0.007735
+vt 0.249705 0.837700
+vt 0.227194 0.932559
+vt 0.124955 0.837700
+vt 0.184236 0.986049
+vt 0.124955 0.993212
+vt 0.065673 0.986049
+vt 0.022715 0.932559
+vt 0.000205 0.837700
+vt 0.562007 0.249507
+vt 0.500000 0.187500
+vt 0.500000 0.062500
+vt 0.562007 0.000493
+vt 0.375000 0.187500
+vt 0.375000 0.062500
+vt 0.312993 0.249507
+vt 0.312993 0.000493
+vt 0.375000 0.875000
+vt 0.500000 0.875000
+vt 0.562007 0.937007
+vt 0.312993 0.937007
+vt 0.312993 0.312993
+vt 0.375000 0.375000
+vt 0.500000 0.375000
+vt 0.562007 0.312993
+vn -0.731100 0.062100 -0.679400
+vn -0.747200 0.262900 -0.610300
+vn -0.131300 0.448600 -0.884000
+vn -0.076500 0.126000 -0.989000
+vn -0.926900 -0.337300 -0.164700
+vn -0.830300 -0.557300 0.000000
+vn -0.214300 -0.976700 0.000000
+vn -0.161500 -0.824500 -0.542300
+vn -0.609900 -0.595700 -0.522700
+vn -0.738000 -0.017300 -0.674500
+vn -0.055200 -0.036300 -0.997800
+vn -0.039300 -0.719800 -0.693000
+vn -0.927000 -0.336700 0.164900
+vn -0.160600 -0.824100 0.543100
+vn -0.731100 0.062100 0.679400
+vn -0.076500 0.126000 0.989000
+vn -0.131300 0.448600 0.884000
+vn -0.747200 0.262900 0.610300
+vn -0.609900 -0.595700 0.522700
+vn -0.039300 -0.719800 0.693000
+vn -0.055200 -0.036300 0.997800
+vn -0.738000 -0.017300 0.674500
+vn -0.772300 0.539300 -0.335700
+vn -0.825200 0.564900 0.000000
+vn -0.213700 0.976900 0.000000
+vn -0.194000 0.862900 -0.466700
+vn -0.747200 -0.262900 0.610300
+vn -0.772300 -0.539300 0.335700
+vn -0.194000 -0.862900 0.466700
+vn -0.131300 -0.448600 0.884000
+vn -0.772300 0.539300 0.335700
+vn -0.194000 0.862900 0.466700
+vn 0.213700 0.976900 0.000000
+vn 0.194000 0.862900 -0.466700
+vn 0.131300 0.448600 -0.884000
+vn 0.076500 0.126000 -0.989000
+vn 0.194000 0.862900 0.466700
+vn 0.055200 -0.036300 -0.997800
+vn 0.214300 -0.976700 0.000000
+vn 0.161500 -0.824500 -0.542300
+vn 0.039300 -0.719800 -0.693000
+vn 0.160600 -0.824100 0.543100
+vn 0.076500 0.126000 0.989000
+vn 0.131300 0.448600 0.884000
+vn 0.055200 -0.036300 0.997800
+vn -0.731100 -0.062100 0.679400
+vn -0.076500 -0.126000 0.989000
+vn 0.747200 0.262900 0.610300
+vn 0.772300 0.539300 0.335700
+vn 0.825200 0.564900 0.000000
+vn 0.772300 0.539300 -0.335700
+vn 0.747200 0.262900 -0.610300
+vn 0.731100 0.062100 -0.679400
+vn 0.738000 -0.017300 -0.674500
+vn -0.753500 -0.127700 -0.644900
+vn 0.753500 -0.127700 -0.644900
+vn 0.753500 0.127700 -0.644900
+vn -0.753500 0.127700 -0.644900
+vn -0.753500 0.127700 0.644900
+vn 0.753500 0.127700 0.644900
+vn 0.753500 -0.127700 0.644900
+vn -0.753500 -0.127700 0.644900
+vn -0.825200 -0.564900 0.000000
+vn -0.772300 -0.539300 -0.335700
+vn -0.194000 -0.862900 -0.466700
+vn -0.213700 -0.976900 0.000000
+vn 0.830300 -0.557300 0.000000
+vn 0.926900 -0.337300 -0.164700
+vn 0.609900 -0.595700 -0.522700
+vn 0.927000 -0.336700 0.164900
+vn 0.731100 0.062100 0.679400
+vn 0.039300 -0.719800 0.693000
+vn 0.609900 -0.595700 0.522700
+vn 0.738000 -0.017300 0.674500
+vn -0.747200 -0.262900 -0.610300
+vn -0.731100 -0.062100 -0.679400
+vn -0.076500 -0.126000 -0.989000
+vn -0.131300 -0.448600 -0.884000
+vn 0.841500 0.540200 0.000000
+vn 0.785900 0.404700 0.467500
+vn 0.785900 0.404700 -0.467500
+vn 0.841500 -0.540200 0.000000
+vn 0.785900 -0.404700 0.467500
+vn 0.785900 -0.404700 -0.467500
+vn -0.841500 0.540200 0.000000
+vn -0.785900 0.404700 0.467500
+vn -0.785900 0.404700 -0.467500
+vn -0.785900 -0.404700 0.467500
+vn -0.841500 -0.540200 0.000000
+vn -0.785900 -0.404700 -0.467500
+vn 0.000000 0.923900 0.382700
+vn 0.000000 0.923900 -0.382700
+vn -0.630200 0.717300 -0.297100
+vn -0.630200 0.717300 0.297100
+vn 0.000000 0.382700 -0.923900
+vn 0.000000 -0.382700 -0.923900
+vn -0.630200 -0.297100 -0.717300
+vn -0.630200 0.297100 -0.717300
+vn -0.630200 0.297100 0.717300
+vn -0.000000 0.382700 0.923900
+vn -0.630200 -0.717300 0.297100
+vn -0.000000 -0.923900 0.382700
+vn -0.000000 -0.382700 0.923900
+vn -0.630200 -0.297100 0.717300
+vn 0.000000 -0.923900 -0.382700
+vn -0.630200 -0.717300 -0.297100
+vn 0.194000 -0.862900 0.466700
+vn 0.131300 -0.448600 0.884000
+vn 0.076500 -0.126000 -0.989000
+vn 0.131300 -0.448600 -0.884000
+vn 0.194000 -0.862900 -0.466700
+vn 0.213700 -0.976900 0.000000
+vn 0.076500 -0.126000 0.989000
+vn 0.772300 -0.539300 0.335700
+vn 0.747200 -0.262900 0.610300
+vn 0.731100 -0.062100 -0.679400
+vn -0.913700 -0.000000 -0.406300
+vn 0.913700 0.000000 -0.406300
+vn 0.747200 -0.262900 -0.610300
+vn 0.772300 -0.539300 -0.335700
+vn -0.913700 0.000000 0.406300
+vn 0.913700 0.000000 0.406300
+vn 0.825200 -0.564900 0.000000
+vn 0.731100 -0.062100 0.679400
+vn 1.000000 -0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.731100 0.062200 -0.679400
+vn -0.731100 0.062200 0.679400
+vn -0.830300 -0.557400 0.000000
+vn -0.161500 -0.824500 -0.542200
+vn 0.161500 -0.824500 -0.542200
+vn 0.731100 0.062200 -0.679400
+vn 0.830300 -0.557400 0.000000
+vn 0.731100 0.062200 0.679400
+vn 0.033800 -0.837100 -0.545900
+vn -0.033800 -0.837100 -0.545900
+vn 0.623200 -0.667000 -0.408300
+vn -0.032900 -0.837100 0.546000
+vn -0.622300 -0.666400 0.410600
+vn 0.032900 -0.837100 0.546000
+vn 0.622300 -0.666400 0.410600
+vn -0.623200 -0.667000 -0.408300
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.707100 0.000000 -0.707100
+vn -0.776400 -0.630200 0.000000
+vn -0.999200 -0.038400 0.000000
+vn -0.706800 -0.031200 -0.706700
+vn -0.549000 -0.630200 -0.549000
+vn 0.015600 0.005600 -0.999800
+vn 0.000000 -0.630200 -0.776400
+vn 0.718300 0.056700 -0.693400
+vn 0.549000 -0.630200 -0.549000
+vn 0.996900 0.078900 0.000000
+vn 0.776400 -0.630200 0.000000
+vn 0.718300 0.056700 0.693400
+vn 0.549000 -0.630200 0.549000
+vn 0.015600 0.005600 0.999800
+vn 0.000000 -0.630200 0.776400
+vn -0.949600 -0.313200 0.000000
+vn -0.601600 -0.798800 0.000000
+vn -0.386200 -0.529700 -0.755200
+vn -0.639000 -0.227600 -0.734800
+vn -0.549000 -0.630200 0.549000
+vn -0.706800 -0.031200 0.706700
+vn -0.639000 -0.227600 0.734800
+vn 0.057500 0.020800 0.998100
+vn 0.676400 0.293800 0.675400
+vn 0.912900 0.408100 0.000000
+vn 0.676400 0.293800 -0.675400
+vn 0.057500 0.020800 -0.998100
+vn -0.281800 -0.959500 0.000000
+vn -0.191000 -0.655500 -0.730700
+vn -0.386200 -0.529700 0.755200
+vn 0.047500 0.063300 0.996900
+vn 0.411500 0.613300 0.674100
+vn 0.551000 0.834400 0.000000
+vn 0.411500 0.613300 -0.674100
+vn 0.047500 0.063300 -0.996900
+vn -0.191000 -0.655500 0.730700
+vn 0.018000 0.067100 0.997600
+vn 0.202000 0.721400 0.662400
+vn 0.269200 0.963100 0.000000
+vn 0.202000 0.721400 -0.662400
+vn 0.018000 0.067100 -0.997600
+vn 0.686000 0.514500 -0.514500
+vn 0.845800 0.377200 -0.377200
+vn 0.845800 -0.377200 -0.377200
+vn 0.686000 -0.514500 -0.514500
+vn 0.845800 0.377200 0.377200
+vn 0.845800 -0.377200 0.377200
+vn 0.686000 0.514500 0.514500
+vn 0.686000 -0.514500 0.514500
+g Cylinder_Cylinder_white-metal
+s 1
+f 132/1/1 35/2/2 136/3/3 146/4/4
+f 12/5/5 10/6/6 30/7/7 32/8/8
+f 2/9/9 22/10/10 38/11/11 26/12/12
+f 10/6/6 15/13/13 34/14/14 30/7/7
+f 23/15/15 39/16/16 27/17/17 3/18/18
+f 1/19/19 25/20/20 37/21/21 21/22/22
+f 21/22/22 37/21/21 39/16/16 23/15/15
+f 119/23/23 117/24/24 137/25/25 139/26/26
+f 52/27/27 120/28/28 140/29/29 133/30/30
+f 14/31/31 3/18/18 27/17/17 33/32/32
+f 122/33/31 36/34/18 135/35/17 141/36/32
+f 11/37/23 9/38/24 29/39/25 31/40/26
+f 24/41/1 4/42/2 28/43/3 40/44/4
+f 4/42/2 11/45/23 31/46/26 28/43/3
+f 9/38/24 14/47/31 33/48/32 29/39/25
+f 22/10/10 24/41/1 40/44/4 38/11/11
+f 29/39/25 45/49/33 47/50/34 31/40/26
+f 28/43/3 44/51/35 56/52/36 40/44/4
+f 31/46/26 47/53/34 44/51/35 28/43/3
+f 33/48/32 49/54/37 45/49/33 29/39/25
+f 40/44/4 56/52/36 54/55/38 38/11/11
+f 30/7/7 46/56/39 48/57/40 32/8/8
+f 38/11/11 54/55/38 42/58/41 26/12/12
+f 34/14/14 50/59/42 46/56/39 30/7/7
+f 27/17/17 39/16/16 55/60/43 43/61/44
+f 39/16/16 37/21/21 53/62/45 55/60/43
+f 129/63/46 143/64/47 145/65/16 131/66/15
+f 52/27/27 133/30/30 143/64/47 129/63/46
+f 27/17/17 43/61/44 49/67/37 33/32/32
+f 49/67/37 43/61/44 59/68/48 70/69/49
+f 131/66/15 145/65/16 135/35/17 36/34/18
+f 47/50/34 45/49/33 65/70/50 67/71/51
+f 56/52/36 44/51/35 60/72/52 80/73/53
+f 44/51/35 47/53/34 67/74/51 60/72/52
+f 45/49/33 49/54/37 70/75/49 65/70/50
+f 54/55/38 56/52/36 80/73/53 78/76/54
+f 6/77/55 62/78/56 61/79/57 5/80/58
+f 7/81/59 63/82/60 64/83/61 8/84/62
+f 118/85/63 123/86/64 142/87/65 138/88/66
+f 48/57/40 46/56/39 66/89/67 68/90/68
+f 42/58/41 54/55/38 78/76/54 58/91/69
+f 46/56/39 50/59/42 71/92/70 66/89/67
+f 55/60/43 79/93/71 59/68/48 43/61/44
+f 41/94/72 57/95/73 77/96/74 53/62/45
+f 53/62/45 77/96/74 79/93/71 55/60/43
+f 51/97/75 130/98/76 144/99/77 134/100/78
+f 120/101/28 118/85/63 138/88/66 140/102/29
+f 37/21/21 25/20/20 41/94/72 53/62/45
+f 76/103/79 66/104/67 71/105/70 74/106/80
+f 58/107/69 78/108/54 63/109/60
+f 73/110/81 68/111/68 66/104/67 76/103/79
+f 57/112/73 61/113/57 77/22/74
+f 63/109/60 78/108/54 80/114/53 64/115/61
+f 65/116/50 75/117/82 69/118/83 67/119/51
+f 67/119/51 69/118/83 64/115/61 60/120/52
+f 80/114/53 60/120/52 64/115/61
+f 75/117/82 65/116/50 70/121/49 72/122/84
+f 72/122/84 70/121/49 59/123/48 62/124/56
+f 59/123/48 79/125/71 62/124/56
+f 61/113/57 62/124/56 79/125/71 77/22/74
+f 20/126/85 18/127/86 15/128/13 10/129/6
+f 2/130/9 7/131/59 22/132/10
+f 17/133/87 20/126/85 10/129/6 12/134/5
+f 1/135/19 21/136/22 5/137/58
+f 7/131/59 8/138/62 24/139/1 22/132/10
+f 9/140/24 11/141/23 13/142/88 19/143/89
+f 11/141/23 4/144/2 8/138/62 13/142/88
+f 24/139/1 8/138/62 4/144/2
+f 19/143/89 16/145/90 14/146/31 9/140/24
+f 16/145/90 6/147/55 3/148/18 14/146/31
+f 3/148/18 6/147/55 23/149/15
+f 5/137/58 21/136/22 23/149/15 6/147/55
+f 112/150/91 81/151/92 82/152/93 111/153/94
+f 86/154/95 88/155/96 87/156/97 85/157/98
+f 109/158/99 110/159/100 112/150/91 111/153/94
+f 105/160/101 106/161/102 108/162/103 107/163/104
+f 88/155/96 90/164/105 89/165/106 87/156/97
+f 99/166/98 100/167/95 102/168/96 101/169/97
+f 94/170/103 96/171/100 95/172/99 93/173/104
+f 92/174/102 94/170/103 93/173/104 91/175/101
+f 84/176/92 86/154/95 85/157/98 83/177/93
+f 103/178/106 104/179/105 106/161/102 105/160/101
+f 90/164/105 92/174/102 91/175/101 89/165/106
+f 82/152/93 81/151/92 100/167/95 99/166/98
+f 82/180/93 99/181/98 101/182/97 103/183/106 105/184/101 107/185/104 109/186/99 111/187/94
+f 96/188/100 98/189/91 97/190/94 95/191/99
+f 97/190/94 98/189/91 84/176/92 83/177/93
+f 107/188/104 108/191/103 110/159/100 109/158/99
+f 83/192/93 85/193/98 87/194/97 89/195/106 91/196/101 93/197/104 95/198/99 97/199/94
+f 35/2/2 119/200/23 139/201/26 136/3/3
+f 117/24/24 122/202/31 141/203/32 137/25/25
+f 130/98/76 132/1/1 146/4/4 144/99/77
+f 123/204/64 51/97/75 134/100/78 142/205/65
+f 140/29/29 154/206/107 147/207/108 133/30/30
+f 137/25/25 151/208/33 153/209/34 139/26/26
+f 136/3/3 150/210/35 160/211/36 146/4/4
+f 139/201/26 153/212/34 150/210/35 136/3/3
+f 141/203/32 155/213/37 151/208/33 137/25/25
+f 146/4/4 160/211/36 158/214/109 144/99/77
+f 134/100/78 148/215/110 156/216/111 142/205/65
+f 138/88/66 152/217/112 154/218/107 140/102/29
+f 144/99/77 158/214/109 148/215/110 134/100/78
+f 142/87/65 156/219/111 152/217/112 138/88/66
+f 135/35/17 145/65/16 159/220/43 149/221/44
+f 145/65/16 143/64/47 157/222/113 159/220/43
+f 135/35/17 149/221/44 155/223/37 141/36/32
+f 155/223/37 149/221/44 163/224/48 174/225/49
+f 147/207/108 154/206/107 172/226/114 161/227/115
+f 153/209/34 151/208/33 169/228/50 171/229/51
+f 160/211/36 150/210/35 164/230/52 184/231/53
+f 150/210/35 153/212/34 171/232/51 164/230/52
+f 151/208/33 155/213/37 174/233/49 169/228/50
+f 158/214/109 160/211/36 184/231/53 182/234/116
+f 114/235/117 166/236/118 165/237/118 113/238/117
+f 156/216/111 148/215/110 162/239/119 175/240/120
+f 115/241/121 167/242/122 168/243/122 116/244/121
+f 154/218/107 152/217/112 170/245/123 172/246/114
+f 148/215/110 158/214/109 182/234/116 162/239/119
+f 152/217/112 156/219/111 175/247/120 170/245/123
+f 159/220/43 183/248/71 163/224/48 149/221/44
+f 147/207/108 161/227/115 181/249/124 157/222/113
+f 157/222/113 181/249/124 183/248/71 159/220/43
+f 143/64/47 133/30/30 147/207/108 157/222/113
+f 180/103/125 170/104/123 175/250/120 178/106/125
+f 178/106/125 175/250/120 162/251/119 167/109/122
+f 162/251/119 182/108/116 167/109/122
+f 177/110/125 172/252/114 170/104/123 180/103/125
+f 161/253/115 172/252/114 177/110/125 165/113/118
+f 161/253/115 165/113/118 181/22/124
+f 167/109/122 182/108/116 184/114/53 168/115/122
+f 169/116/50 179/117/125 173/118/125 171/119/51
+f 171/119/51 173/118/125 168/115/122 164/120/52
+f 184/114/53 164/120/52 168/115/122
+f 179/117/125 169/116/50 174/121/49 176/122/125
+f 176/122/125 174/121/49 163/123/48 166/124/118
+f 163/123/48 183/125/71 166/124/118
+f 165/113/118 166/124/118 183/125/71 181/22/124
+f 128/126/126 126/127/126 123/254/64 118/129/63
+f 126/127/126 115/131/121 51/255/75 123/254/64
+f 51/255/75 115/131/121 130/132/76
+f 125/133/126 128/126/126 118/129/63 120/256/28
+f 52/257/27 113/137/117 125/133/126 120/256/28
+f 52/257/27 129/136/46 113/137/117
+f 115/131/121 116/138/121 132/139/1 130/132/76
+f 117/140/24 119/141/23 121/142/126 127/143/126
+f 119/141/23 35/144/2 116/138/121 121/142/126
+f 132/139/1 116/138/121 35/144/2
+f 127/143/126 124/145/126 122/146/31 117/140/24
+f 124/145/126 114/147/117 36/148/18 122/146/31
+f 36/148/18 114/147/117 131/149/15
+f 113/137/117 129/136/46 131/149/15 114/147/117
+f 208/258/1 185/259/2 212/260/3 222/261/4
+f 195/262/23 193/263/24 213/264/25 215/265/26
+f 188/266/27 196/267/28 216/268/29 209/269/30
+f 198/270/31 186/271/18 211/272/17 217/273/32
+f 205/274/46 219/275/47 221/276/16 207/277/15
+f 188/266/27 209/269/30 219/275/47 205/274/46
+f 207/277/15 221/276/16 211/272/17 186/271/18
+f 194/278/63 199/279/64 218/280/65 214/281/66
+f 187/282/75 206/283/76 220/284/77 210/285/78
+f 196/286/28 194/278/63 214/281/66 216/287/29
+f 185/259/2 195/288/23 215/289/26 212/260/3
+f 193/263/24 198/290/31 217/291/32 213/264/25
+f 206/283/76 208/258/1 222/261/4 220/284/77
+f 199/292/64 187/282/75 210/285/78 218/293/65
+f 216/268/29 230/294/107 223/295/108 209/269/30
+f 213/264/25 227/296/33 229/297/34 215/265/26
+f 212/260/3 226/298/35 236/299/36 222/261/4
+f 215/289/26 229/300/34 226/298/35 212/260/3
+f 217/291/32 231/301/37 227/296/33 213/264/25
+f 222/261/4 236/299/36 234/302/109 220/284/77
+f 210/285/78 224/303/110 232/304/111 218/293/65
+f 214/281/66 228/305/112 230/306/107 216/287/29
+f 220/284/77 234/302/109 224/303/110 210/285/78
+f 218/280/65 232/307/111 228/305/112 214/281/66
+f 211/272/17 221/276/16 235/308/43 225/309/44
+f 221/276/16 219/275/47 233/310/113 235/308/43
+f 211/272/17 225/309/44 231/311/37 217/273/32
+f 231/311/37 225/309/44 239/312/48 250/313/49
+f 223/295/108 230/294/107 248/314/114 237/315/115
+f 229/297/34 227/296/33 245/316/50 247/317/51
+f 236/299/36 226/298/35 240/318/52 260/319/53
+f 226/298/35 229/300/34 247/320/51 240/318/52
+f 227/296/33 231/301/37 250/321/49 245/316/50
+f 234/302/109 236/299/36 260/319/53 258/322/116
+f 190/323/117 242/324/118 241/325/118 189/326/117
+f 232/304/111 224/303/110 238/327/119 251/328/120
+f 191/329/121 243/330/122 244/331/122 192/332/121
+f 230/306/107 228/305/112 246/333/123 248/334/114
+f 224/303/110 234/302/109 258/322/116 238/327/119
+f 228/305/112 232/307/111 251/335/120 246/333/123
+f 235/308/43 259/336/71 239/312/48 225/309/44
+f 223/295/108 237/315/115 257/337/124 233/310/113
+f 233/310/113 257/337/124 259/336/71 235/308/43
+f 219/275/47 209/269/30 223/295/108 233/310/113
+f 256/103/125 246/104/123 251/250/120 254/106/125
+f 254/106/125 251/250/120 238/251/119 243/109/122
+f 238/251/119 258/108/116 243/109/122
+f 253/110/125 248/252/114 246/104/123 256/103/125
+f 237/253/115 248/252/114 253/110/125 241/113/118
+f 237/253/115 241/113/118 257/22/124
+f 243/109/122 258/108/116 260/114/53 244/115/122
+f 245/116/50 255/117/125 249/118/125 247/119/51
+f 247/119/51 249/118/125 244/115/122 240/120/52
+f 260/114/53 240/120/52 244/115/122
+f 255/117/125 245/116/50 250/121/49 252/122/125
+f 252/122/125 250/121/49 239/123/48 242/124/118
+f 239/123/48 259/125/71 242/124/118
+f 241/113/118 242/124/118 259/125/71 257/22/124
+f 204/126/126 202/127/126 199/254/64 194/129/63
+f 202/127/126 191/131/121 187/255/75 199/254/64
+f 187/255/75 191/131/121 206/132/76
+f 201/133/126 204/126/126 194/129/63 196/256/28
+f 188/257/27 189/137/117 201/133/126 196/256/28
+f 188/257/27 205/136/46 189/137/117
+f 191/131/121 192/138/121 208/139/1 206/132/76
+f 193/140/24 195/141/23 197/142/126 203/143/126
+f 195/141/23 185/144/2 192/138/121 197/142/126
+f 208/139/1 192/138/121 185/144/2
+f 203/143/126 200/145/126 198/146/31 193/140/24
+f 200/145/126 190/147/117 186/148/18 198/146/31
+f 186/148/18 190/147/117 207/149/15
+f 189/137/117 205/136/46 207/149/15 190/147/117
+f 284/338/1 261/339/2 288/340/3 298/341/4
+f 271/342/23 269/343/24 289/344/25 291/345/26
+f 264/346/27 272/347/28 292/348/29 285/349/30
+f 274/350/31 262/351/18 287/352/17 293/353/32
+f 281/354/46 295/355/47 297/356/16 283/357/15
+f 264/346/27 285/349/30 295/355/47 281/354/46
+f 283/357/15 297/356/16 287/352/17 262/351/18
+f 270/358/63 275/359/64 294/360/65 290/361/66
+f 263/362/75 282/363/76 296/364/77 286/365/78
+f 272/366/28 270/358/63 290/361/66 292/367/29
+f 261/339/2 271/368/23 291/369/26 288/340/3
+f 269/343/24 274/370/31 293/371/32 289/344/25
+f 282/363/76 284/338/1 298/341/4 296/364/77
+f 275/372/64 263/362/75 286/365/78 294/373/65
+f 292/348/29 306/374/107 299/375/108 285/349/30
+f 289/344/25 303/376/33 305/377/34 291/345/26
+f 288/340/3 302/378/35 312/379/36 298/341/4
+f 291/369/26 305/380/34 302/378/35 288/340/3
+f 293/371/32 307/381/37 303/376/33 289/344/25
+f 298/341/4 312/379/36 310/382/109 296/364/77
+f 286/365/78 300/383/110 308/384/111 294/373/65
+f 290/361/66 304/385/112 306/386/107 292/367/29
+f 296/364/77 310/382/109 300/383/110 286/365/78
+f 294/360/65 308/387/111 304/385/112 290/361/66
+f 287/352/17 297/356/16 311/388/43 301/389/44
+f 297/356/16 295/355/47 309/390/113 311/388/43
+f 287/352/17 301/389/44 307/391/37 293/353/32
+f 307/391/37 301/389/44 315/392/48 326/393/49
+f 299/375/108 306/374/107 324/394/114 313/395/115
+f 305/377/34 303/376/33 321/396/50 323/397/51
+f 312/379/36 302/378/35 316/398/52 336/399/53
+f 302/378/35 305/380/34 323/400/51 316/398/52
+f 303/376/33 307/381/37 326/401/49 321/396/50
+f 310/382/109 312/379/36 336/399/53 334/402/116
+f 266/403/117 318/404/118 317/405/118 265/406/117
+f 308/384/111 300/383/110 314/407/119 327/408/120
+f 267/409/121 319/410/122 320/411/122 268/412/121
+f 306/386/107 304/385/112 322/413/123 324/414/114
+f 300/383/110 310/382/109 334/402/116 314/407/119
+f 304/385/112 308/387/111 327/415/120 322/413/123
+f 311/388/43 335/416/71 315/392/48 301/389/44
+f 299/375/108 313/395/115 333/417/124 309/390/113
+f 309/390/113 333/417/124 335/416/71 311/388/43
+f 295/355/47 285/349/30 299/375/108 309/390/113
+f 332/103/125 322/104/123 327/250/120 330/106/125
+f 330/106/125 327/250/120 314/251/119 319/109/122
+f 314/251/119 334/108/116 319/109/122
+f 329/110/125 324/252/114 322/104/123 332/103/125
+f 313/253/115 324/252/114 329/110/125 317/113/118
+f 313/253/115 317/113/118 333/22/124
+f 319/109/122 334/108/116 336/114/53 320/115/122
+f 321/116/50 331/117/125 325/118/125 323/119/51
+f 323/119/51 325/118/125 320/115/122 316/120/52
+f 336/114/53 316/120/52 320/115/122
+f 331/117/125 321/116/50 326/121/49 328/122/125
+f 328/122/125 326/121/49 315/123/48 318/124/118
+f 315/123/48 335/125/71 318/124/118
+f 317/113/118 318/124/118 335/125/71 333/22/124
+f 280/126/126 278/127/126 275/254/64 270/129/63
+f 278/127/126 267/131/121 263/255/75 275/254/64
+f 263/255/75 267/131/121 282/132/76
+f 277/133/126 280/126/126 270/129/63 272/256/28
+f 264/257/27 265/137/117 277/133/126 272/256/28
+f 264/257/27 281/136/46 265/137/117
+f 267/131/121 268/138/121 284/139/1 282/132/76
+f 269/140/24 271/141/23 273/142/126 279/143/126
+f 271/141/23 261/144/2 268/138/121 273/142/126
+f 284/139/1 268/138/121 261/144/2
+f 279/143/126 276/145/126 274/146/31 269/140/24
+f 276/145/126 266/147/117 262/148/18 274/146/31
+f 262/148/18 266/147/117 283/149/15
+f 265/137/117 281/136/46 283/149/15 266/147/117
+f 360/418/1 337/419/2 364/420/3 374/388/4
+f 347/421/23 345/422/24 365/423/25 367/424/26
+f 340/425/27 348/408/28 368/426/29 361/427/30
+f 350/428/31 338/429/18 363/430/17 369/431/32
+f 357/402/46 371/432/47 373/379/16 359/433/15
+f 340/425/27 361/427/30 371/432/47 357/402/46
+f 359/433/15 373/379/16 363/430/17 338/429/18
+f 346/434/63 351/435/64 370/436/65 366/437/66
+f 339/438/75 358/417/76 372/439/77 362/440/78
+f 348/441/28 346/434/63 366/437/66 368/442/29
+f 337/419/2 347/443/23 367/444/26 364/420/3
+f 345/422/24 350/445/31 369/446/32 365/423/25
+f 358/417/76 360/418/1 374/388/4 372/439/77
+f 351/394/64 339/438/75 362/440/78 370/447/65
+f 368/426/29 382/448/107 375/449/108 361/427/30
+f 365/423/25 379/450/33 381/451/34 367/424/26
+f 364/420/3 378/452/35 388/356/36 374/388/4
+f 367/444/26 381/453/34 378/452/35 364/420/3
+f 369/446/32 383/454/37 379/450/33 365/423/25
+f 374/388/4 388/356/36 386/455/109 372/439/77
+f 362/440/78 376/456/110 384/457/111 370/447/65
+f 366/437/66 380/458/112 382/459/107 368/442/29
+f 372/439/77 386/455/109 376/456/110 362/440/78
+f 370/436/65 384/460/111 380/458/112 366/437/66
+f 363/430/17 373/379/16 387/341/43 377/461/44
+f 373/379/16 371/432/47 385/462/113 387/341/43
+f 363/430/17 377/461/44 383/463/37 369/431/32
+f 383/463/37 377/461/44 391/464/48 402/465/49
+f 375/449/108 382/448/107 400/372/114 389/466/115
+f 381/451/34 379/450/33 397/467/50 399/468/51
+f 388/356/36 378/452/35 392/469/52 412/470/53
+f 378/452/35 381/453/34 399/471/51 392/469/52
+f 379/450/33 383/454/37 402/472/49 397/467/50
+f 386/455/109 388/356/36 412/470/53 410/354/116
+f 342/411/117 394/412/118 393/409/118 341/410/117
+f 384/457/111 376/456/110 390/473/119 403/347/120
+f 343/405/121 395/406/122 396/403/122 344/404/121
+f 382/459/107 380/458/112 398/474/123 400/475/114
+f 376/456/110 386/455/109 410/354/116 390/473/119
+f 380/458/112 384/460/111 403/476/120 398/474/123
+f 387/341/43 411/477/71 391/464/48 377/461/44
+f 375/449/108 389/466/115 409/363/124 385/462/113
+f 385/462/113 409/363/124 411/477/71 387/341/43
+f 371/432/47 361/427/30 375/449/108 385/462/113
+f 408/103/125 398/104/123 403/250/120 406/106/125
+f 406/106/125 403/250/120 390/251/119 395/109/122
+f 390/251/119 410/108/116 395/109/122
+f 405/110/125 400/252/114 398/104/123 408/103/125
+f 389/253/115 400/252/114 405/110/125 393/113/118
+f 389/253/115 393/113/118 409/22/124
+f 395/109/122 410/108/116 412/114/53 396/115/122
+f 397/116/50 407/117/125 401/118/125 399/119/51
+f 399/119/51 401/118/125 396/115/122 392/120/52
+f 412/114/53 392/120/52 396/115/122
+f 407/117/125 397/116/50 402/121/49 404/122/125
+f 404/122/125 402/121/49 391/123/48 394/124/118
+f 391/123/48 411/125/71 394/124/118
+f 393/113/118 394/124/118 411/125/71 409/22/124
+f 356/126/126 354/127/126 351/254/64 346/129/63
+f 354/127/126 343/131/121 339/255/75 351/254/64
+f 339/255/75 343/131/121 358/132/76
+f 353/133/126 356/126/126 346/129/63 348/256/28
+f 340/257/27 341/137/117 353/133/126 348/256/28
+f 340/257/27 357/136/46 341/137/117
+f 343/131/121 344/138/121 360/139/1 358/132/76
+f 345/140/24 347/141/23 349/142/126 355/143/126
+f 347/141/23 337/144/2 344/138/121 349/142/126
+f 360/139/1 344/138/121 337/144/2
+f 355/143/126 352/145/126 350/146/31 345/140/24
+f 352/145/126 342/147/117 338/148/18 350/146/31
+f 338/148/18 342/147/117 359/149/15
+f 341/137/117 357/136/46 359/149/15 342/147/117
+f 436/478/1 413/479/2 440/480/3 450/308/4
+f 423/481/23 421/482/24 441/483/25 443/484/26
+f 416/485/27 424/328/28 444/486/29 437/487/30
+f 426/488/31 414/489/18 439/490/17 445/491/32
+f 433/322/46 447/492/47 449/299/16 435/493/15
+f 416/485/27 437/487/30 447/492/47 433/322/46
+f 435/493/15 449/299/16 439/490/17 414/489/18
+f 422/494/63 427/495/64 446/496/65 442/497/66
+f 415/498/75 434/337/76 448/499/77 438/500/78
+f 424/501/28 422/494/63 442/497/66 444/502/29
+f 413/479/2 423/503/23 443/504/26 440/480/3
+f 421/482/24 426/505/31 445/506/32 441/483/25
+f 434/337/76 436/478/1 450/308/4 448/499/77
+f 427/314/64 415/498/75 438/500/78 446/507/65
+f 444/486/29 458/508/107 451/509/108 437/487/30
+f 441/483/25 455/510/33 457/511/34 443/484/26
+f 440/480/3 454/512/35 464/276/36 450/308/4
+f 443/504/26 457/513/34 454/512/35 440/480/3
+f 445/506/32 459/514/37 455/510/33 441/483/25
+f 450/308/4 464/276/36 462/515/109 448/499/77
+f 438/500/78 452/516/110 460/517/111 446/507/65
+f 442/497/66 456/518/112 458/519/107 444/502/29
+f 448/499/77 462/515/109 452/516/110 438/500/78
+f 446/496/65 460/520/111 456/518/112 442/497/66
+f 439/490/17 449/299/16 463/261/43 453/521/44
+f 449/299/16 447/492/47 461/522/113 463/261/43
+f 439/490/17 453/521/44 459/523/37 445/491/32
+f 459/523/37 453/521/44 467/524/48 478/525/49
+f 451/509/108 458/508/107 476/292/114 465/526/115
+f 457/511/34 455/510/33 473/527/50 475/528/51
+f 464/276/36 454/512/35 468/529/52 488/530/53
+f 454/512/35 457/513/34 475/531/51 468/529/52
+f 455/510/33 459/514/37 478/532/49 473/527/50
+f 462/515/109 464/276/36 488/530/53 486/274/116
+f 418/331/117 470/332/118 469/329/118 417/330/117
+f 460/517/111 452/516/110 466/533/119 479/267/120
+f 419/325/121 471/326/122 472/323/122 420/324/121
+f 458/519/107 456/518/112 474/534/123 476/535/114
+f 452/516/110 462/515/109 486/274/116 466/533/119
+f 456/518/112 460/520/111 479/536/120 474/534/123
+f 463/261/43 487/537/71 467/524/48 453/521/44
+f 451/509/108 465/526/115 485/283/124 461/522/113
+f 461/522/113 485/283/124 487/537/71 463/261/43
+f 447/492/47 437/487/30 451/509/108 461/522/113
+f 484/103/125 474/104/123 479/250/120 482/106/125
+f 482/106/125 479/250/120 466/251/119 471/109/122
+f 466/251/119 486/108/116 471/109/122
+f 481/110/125 476/252/114 474/104/123 484/103/125
+f 465/253/115 476/252/114 481/110/125 469/113/118
+f 465/253/115 469/113/118 485/22/124
+f 471/109/122 486/108/116 488/114/53 472/115/122
+f 473/116/50 483/117/125 477/118/125 475/119/51
+f 475/119/51 477/118/125 472/115/122 468/120/52
+f 488/114/53 468/120/52 472/115/122
+f 483/117/125 473/116/50 478/121/49 480/122/125
+f 480/122/125 478/121/49 467/123/48 470/124/118
+f 467/123/48 487/125/71 470/124/118
+f 469/113/118 470/124/118 487/125/71 485/22/124
+f 432/126/126 430/127/126 427/254/64 422/129/63
+f 430/127/126 419/131/121 415/255/75 427/254/64
+f 415/255/75 419/131/121 434/132/76
+f 429/133/126 432/126/126 422/129/63 424/256/28
+f 416/257/27 417/137/117 429/133/126 424/256/28
+f 416/257/27 433/136/46 417/137/117
+f 419/131/121 420/138/121 436/139/1 434/132/76
+f 421/140/24 423/141/23 425/142/126 431/143/126
+f 423/141/23 413/144/2 420/138/121 425/142/126
+f 436/139/1 420/138/121 413/144/2
+f 431/143/126 428/145/126 426/146/31 421/140/24
+f 428/145/126 418/147/117 414/148/18 426/146/31
+f 414/148/18 418/147/117 435/149/15
+f 417/137/117 433/136/46 435/149/15 418/147/117
+f 512/538/1 489/539/2 516/540/3 526/220/4
+f 499/541/23 497/542/24 517/543/25 519/544/26
+f 492/545/27 500/240/28 520/546/29 513/547/30
+f 502/548/31 490/549/18 515/550/17 521/551/32
+f 509/234/46 523/552/47 525/211/16 511/553/15
+f 492/545/27 513/547/30 523/552/47 509/234/46
+f 511/553/15 525/211/16 515/550/17 490/549/18
+f 498/554/63 503/555/64 522/556/65 518/557/66
+f 491/558/75 510/249/76 524/559/77 514/560/78
+f 500/561/28 498/554/63 518/557/66 520/562/29
+f 489/539/2 499/563/23 519/564/26 516/540/3
+f 497/542/24 502/565/31 521/566/32 517/543/25
+f 510/249/76 512/538/1 526/220/4 524/559/77
+f 503/226/64 491/558/75 514/560/78 522/567/65
+f 520/546/29 534/568/107 527/569/108 513/547/30
+f 517/543/25 531/570/33 533/571/34 519/544/26
+f 516/540/3 530/572/35 540/65/36 526/220/4
+f 519/564/26 533/573/34 530/572/35 516/540/3
+f 521/566/32 535/574/37 531/570/33 517/543/25
+f 526/220/4 540/65/36 538/575/109 524/559/77
+f 514/560/78 528/576/110 536/577/111 522/567/65
+f 518/557/66 532/578/112 534/579/107 520/562/29
+f 524/559/77 538/575/109 528/576/110 514/560/78
+f 522/556/65 536/580/111 532/578/112 518/557/66
+f 515/550/17 525/211/16 539/4/43 529/581/44
+f 525/211/16 523/552/47 537/582/113 539/4/43
+f 515/550/17 529/581/44 535/583/37 521/551/32
+f 535/583/37 529/581/44 543/584/48 554/585/49
+f 527/569/108 534/568/107 552/204/114 541/586/115
+f 533/571/34 531/570/33 549/587/50 551/588/51
+f 540/65/36 530/572/35 544/589/52 564/590/53
+f 530/572/35 533/573/34 551/591/51 544/589/52
+f 531/570/33 535/574/37 554/592/49 549/587/50
+f 538/575/109 540/65/36 564/590/53 562/63/116
+f 494/243/117 546/244/118 545/241/118 493/242/117
+f 536/577/111 528/576/110 542/593/119 555/28/120
+f 495/237/121 547/238/122 548/235/122 496/236/121
+f 534/579/107 532/578/112 550/594/123 552/595/114
+f 528/576/110 538/575/109 562/63/116 542/593/119
+f 532/578/112 536/580/111 555/596/120 550/594/123
+f 539/4/43 563/597/71 543/584/48 529/581/44
+f 527/569/108 541/586/115 561/98/124 537/582/113
+f 537/582/113 561/98/124 563/597/71 539/4/43
+f 523/552/47 513/547/30 527/569/108 537/582/113
+f 560/103/125 550/104/123 555/250/120 558/106/125
+f 558/106/125 555/250/120 542/251/119 547/109/122
+f 542/251/119 562/108/116 547/109/122
+f 557/110/125 552/252/114 550/104/123 560/103/125
+f 541/253/115 552/252/114 557/110/125 545/113/118
+f 541/253/115 545/113/118 561/22/124
+f 547/109/122 562/108/116 564/114/53 548/115/122
+f 549/116/50 559/117/125 553/118/125 551/119/51
+f 551/119/51 553/118/125 548/115/122 544/120/52
+f 564/114/53 544/120/52 548/115/122
+f 559/117/125 549/116/50 554/121/49 556/122/125
+f 556/122/125 554/121/49 543/123/48 546/124/118
+f 543/123/48 563/125/71 546/124/118
+f 545/113/118 546/124/118 563/125/71 561/22/124
+f 508/126/126 506/127/126 503/254/64 498/129/63
+f 506/127/126 495/131/121 491/255/75 503/254/64
+f 491/255/75 495/131/121 510/132/76
+f 505/133/126 508/126/126 498/129/63 500/256/28
+f 492/257/27 493/137/117 505/133/126 500/256/28
+f 492/257/27 509/136/46 493/137/117
+f 495/131/121 496/138/121 512/139/1 510/132/76
+f 497/140/24 499/141/23 501/142/126 507/143/126
+f 499/141/23 489/144/2 496/138/121 501/142/126
+f 512/139/1 496/138/121 489/144/2
+f 507/143/126 504/145/126 502/146/31 497/140/24
+f 504/145/126 494/147/117 490/148/18 502/146/31
+f 490/148/18 494/147/117 511/149/15
+f 493/137/117 509/136/46 511/149/15 494/147/117
+f 578/598/127 565/599/2 582/600/3 592/60/4
+f 571/601/23 569/602/24 583/603/25 585/604/26
+f 573/605/31 566/606/18 581/607/17 587/608/32
+f 575/76/22 589/609/21 591/52/16 577/610/128
+f 568/611/19 579/612/20 589/609/21 575/76/22
+f 577/610/128 591/52/16 581/607/17 566/606/18
+f 570/613/129 574/614/13 588/615/14 584/616/7
+f 567/617/9 576/96/10 590/618/11 580/619/12
+f 572/620/5 570/613/129 584/616/7 586/621/130
+f 565/599/2 571/622/23 585/623/26 582/600/3
+f 569/602/24 573/624/31 587/625/32 583/603/25
+f 576/96/10 578/598/127 592/60/4 590/618/11
+f 583/603/25 597/626/33 599/627/34 585/604/26
+f 582/600/3 596/628/35 606/16/36 592/60/4
+f 585/623/26 599/629/34 596/628/35 582/600/3
+f 587/625/32 601/630/37 597/626/33 583/603/25
+f 592/60/4 606/16/36 604/631/38 590/618/11
+f 584/616/7 598/632/39 600/633/131 586/621/130
+f 590/618/11 604/631/38 594/634/41 580/619/12
+f 588/615/14 602/635/42 598/632/39 584/616/7
+f 581/607/17 591/52/16 605/636/43 595/637/44
+f 591/52/16 589/609/21 603/638/45 605/636/43
+f 581/607/17 595/637/44 601/639/37 587/608/32
+f 601/639/37 595/637/44 609/640/48 615/641/49
+f 599/627/34 597/626/33 611/642/50 613/643/51
+f 606/16/36 596/628/35 610/644/52 620/125/132
+f 596/628/35 599/629/34 613/645/51 610/644/52
+f 597/626/33 601/630/37 615/646/49 611/642/50
+f 604/631/38 606/16/36 620/125/132 618/22/54
+f 600/633/131 598/632/39 612/647/133 614/648/68
+f 594/634/41 604/631/38 618/22/54 608/171/69
+f 598/632/39 602/635/42 616/649/70 612/647/133
+f 605/636/43 619/650/134 609/640/48 595/637/44
+f 593/651/72 607/652/73 617/10/74 603/638/45
+f 603/638/45 617/10/74 619/650/134 605/636/43
+f 574/128/13 570/129/129 576/132/10
+f 589/609/21 579/612/20 593/651/72 603/638/45
+f 623/653/135 622/654/136 586/621/130 600/633/131
+f 624/655/137 623/653/135 600/633/131 614/648/68
+f 627/656/138 588/615/14 574/614/13 626/657/139
+f 631/658/140 632/659/138 629/660/139 2/661/9 26/662/12 42/663/41 58/664/69 630/665/141
+f 632/659/138 34/14/14 15/13/13 629/660/139
+f 593/666/72 579/667/20 568/668/19 621/669/142 622/654/136 623/653/135 624/655/137 607/670/73
+f 633/671/137 636/672/135 48/57/40 68/90/68
+f 636/672/135 635/673/136 32/8/8 48/57/40
+f 12/5/5 32/8/8 635/673/136 634/674/142
+f 50/59/42 34/14/14 632/659/138 631/658/140
+f 71/92/70 50/59/42 631/658/140 630/665/141
+f 616/649/70 602/635/42 628/675/140 625/676/141
+f 602/635/42 588/615/14 627/656/138 628/675/140
+f 41/677/72 25/678/20 1/679/19 634/674/142 635/673/136 636/672/135 633/671/137 57/680/73
+f 625/676/141 628/675/140 627/656/138 626/657/139 567/681/9 580/682/12 594/683/41 608/684/69
+f 572/620/5 586/621/130 622/654/136 621/669/142
+f 18/127/86 7/131/59 2/130/9
+f 15/128/13 18/127/86 2/130/9
+f 629/685/139 15/128/13 2/130/9
+f 5/137/58 17/133/87 1/135/19
+f 12/134/5 1/135/19 17/133/87
+f 634/686/142 1/135/19 12/134/5
+f 626/685/139 574/128/13 567/130/9
+f 630/687/141 58/107/69 71/105/70
+f 71/105/70 58/107/69 74/106/80
+f 74/106/80 58/107/69 63/109/60
+f 633/688/137 68/111/68 57/112/73
+f 68/111/68 73/110/81 57/112/73
+f 61/113/57 57/112/73 73/110/81
+f 641/689/143 642/690/144 638/691/144 637/692/143
+f 642/693/144 643/694/145 639/695/145 638/696/144
+f 643/697/145 644/698/146 640/699/146 639/700/145
+f 644/701/146 641/702/143 637/703/143 640/704/146
+f 650/693/144 651/694/145 647/695/145 646/696/144
+f 649/705/143 650/706/144 646/707/144 645/708/143
+f 651/709/145 652/710/146 648/711/146 647/712/145
+f 652/701/146 649/702/143 645/703/143 648/704/146
+f 658/693/144 659/694/145 655/695/145 654/696/144
+f 657/713/143 658/714/144 654/715/144 653/716/143
+f 659/717/145 660/718/146 656/719/146 655/720/145
+f 660/701/146 657/702/143 653/703/143 656/704/146
+f 666/693/144 667/694/145 663/695/145 662/696/144
+f 665/721/143 666/722/144 662/723/144 661/724/143
+f 667/725/145 668/726/146 664/727/146 663/728/145
+f 668/701/146 665/702/143 661/703/143 664/704/146
+f 674/693/144 675/694/145 671/695/145 670/696/144
+f 673/729/143 674/730/144 670/727/144 669/728/143
+f 675/731/145 676/732/146 672/723/146 671/724/145
+f 676/701/146 673/702/143 669/703/143 672/704/146
+f 682/693/144 683/694/145 679/695/145 678/696/144
+f 681/733/143 682/734/144 678/719/144 677/720/143
+f 683/735/145 684/736/146 680/715/146 679/716/145
+f 684/701/146 681/702/143 677/703/143 680/704/146
+f 690/693/144 691/694/145 687/695/145 686/696/144
+f 689/737/143 690/738/144 686/711/144 685/712/143
+f 691/739/145 692/740/146 688/707/146 687/708/145
+f 692/701/146 689/702/143 685/703/143 688/704/146
+f 572/134/5 575/136/22 570/129/129
+f 568/135/19 575/136/22 572/134/5
+f 621/686/142 568/135/19 572/134/5
+f 567/130/9 574/128/13 576/132/10
+f 578/139/127 693/741/126 565/144/2
+f 575/136/22 576/132/10 570/129/129
+f 101/169/97 102/168/96 104/179/105 103/178/106
+f 565/144/2 693/741/126 571/141/23
+f 571/141/23 693/741/126 569/140/24
+f 569/140/24 693/741/126 573/146/31
+f 573/146/31 693/741/126 566/148/18
+f 577/149/128 566/148/18 693/741/126
+f 575/136/22 577/149/128 578/139/127 576/132/10
+f 5/742/58 61/743/57 73/744/81 17/745/87
+f 17/745/87 73/744/81 76/746/79 20/747/85
+f 20/747/85 76/746/79 74/748/80 18/749/86
+f 18/749/86 74/748/80 63/163/60 7/160/59
+f 13/750/88 8/751/62 64/752/61 69/753/83
+f 19/754/89 13/750/88 69/753/83 75/755/82
+f 16/756/90 19/754/89 75/755/82 72/757/84
+f 6/758/55 16/756/90 72/757/84 62/759/56
+g Cylinder_Cylinder_controls-etc
+f 694/760/147 695/761/148 697/762/149 696/763/150
+f 696/763/150 697/762/149 699/764/151 698/765/152
+f 698/766/152 699/767/151 701/768/153 700/769/154
+f 700/769/154 701/768/153 703/761/155 702/760/156
+f 702/760/156 703/761/155 705/762/157 704/763/158
+f 704/763/158 705/762/157 707/764/159 706/765/160
+f 710/770/161 718/771/162 719/772/163 711/773/164
+f 708/769/165 709/768/166 695/761/148 694/760/147
+f 706/766/160 707/767/159 709/768/166 708/769/165
+f 694/774/147 696/775/150 698/776/152 700/777/154 702/778/156 704/779/158 706/780/160 708/781/165
+f 709/768/166 717/782/167 710/770/161 695/761/148
+f 707/767/159 716/783/168 717/782/167 709/768/166
+f 705/762/157 715/773/169 716/784/168 707/764/159
+f 703/761/155 714/770/170 715/773/169 705/762/157
+f 701/768/153 713/782/171 714/770/170 703/761/155
+f 699/767/151 712/783/172 713/782/171 701/768/153
+f 697/762/149 711/773/164 712/784/172 699/764/151
+f 718/771/162 726/785/173 727/786/174 719/772/163
+f 717/782/167 725/787/175 718/771/162 710/770/161
+f 716/783/168 724/788/176 725/787/175 717/782/167
+f 715/773/169 723/772/177 724/789/176 716/784/168
+f 714/770/170 722/771/178 723/772/177 715/773/169
+f 713/782/171 721/787/179 722/771/178 714/770/170
+f 712/783/172 720/788/180 721/787/179 713/782/171
+f 711/773/164 719/772/163 720/789/180 712/784/172
+f 725/787/175 733/790/181 726/785/173 718/771/162
+f 724/788/176 732/791/182 733/790/181 725/787/175
+f 723/772/177 731/786/183 732/792/182 724/789/176
+f 722/771/178 730/785/184 731/786/183 723/772/177
+f 721/787/179 729/790/185 730/785/184 722/771/178
+f 720/788/180 728/791/186 729/790/185 721/787/179
+f 719/772/163 727/786/174 728/792/186 720/789/180
+f 695/761/148 710/770/161 711/773/164 697/762/149
+f 624/793/137 614/794/68 607/795/73
+f 607/795/73 614/794/68 617/796/74
+f 625/797/141 608/798/69 616/799/70
+f 608/798/69 618/800/54 616/799/70
+f 616/799/70 618/800/54 612/801/133
+f 614/794/68 612/801/133 617/796/74
+f 618/800/54 617/796/74 612/801/133
+f 620/802/132 610/803/52 734/804/125
+f 610/803/52 613/805/51 734/804/125
+f 613/805/51 611/806/50 734/804/125
+f 611/806/50 615/807/49 734/804/125
+f 615/807/49 609/808/48 734/804/125
+f 619/809/134 734/804/125 609/808/48
+f 617/796/74 618/800/54 620/802/132 619/809/134
+f 747/810/187 748/811/188 737/812/189 736/813/190
+f 748/811/188 749/814/191 738/815/192 737/812/189
+f 749/814/191 750/816/193 735/817/194 738/815/192
+f 735/817/194 736/813/190 737/812/189 738/815/192
+f 742/818/191 741/819/188 740/820/187 739/821/193
+f 742/818/191 739/821/193 743/822/194 746/823/192
+f 741/819/188 742/818/191 746/823/192 745/824/189
+f 740/820/187 741/819/188 745/824/189 744/825/190
+f 743/822/194 744/825/190 745/824/189 746/823/192
+f 747/810/187 750/816/193 749/814/191 748/811/188
diff --git a/homedecor_modpack/homedecor/models/homedecor_refrigerator.obj b/homedecor_modpack/homedecor/models/homedecor_refrigerator.obj
new file mode 100644
index 0000000..1cfb8ec
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_refrigerator.obj
@@ -0,0 +1,464 @@
+# Blender v2.73 (sub 0) OBJ File: 'refrigerator.blend'
+# www.blender.org
+o nodebox-1.001
+v -0.500000 -0.500000 0.421875
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.421875
+v -0.500000 1.500000 0.421875
+v 0.484375 -0.421875 0.437500
+v 0.500000 1.500000 -0.500000
+v 0.500000 1.500000 0.421875
+v -0.500000 -0.437500 -0.500000
+v -0.500000 -0.437500 -0.515625
+v 0.023438 -0.437500 -0.515625
+v 0.023438 -0.437500 -0.500000
+v -0.500000 1.500000 -0.500000
+v -0.500000 1.500000 -0.515625
+v 0.023438 1.500000 -0.515625
+v 0.023438 1.500000 -0.500000
+v 0.035156 -0.437500 -0.500000
+v 0.035156 -0.437500 -0.515625
+v 0.500000 -0.437500 -0.515625
+v 0.500000 -0.437500 -0.500000
+v 0.035156 1.500000 -0.500000
+v 0.035156 1.500000 -0.515625
+v 0.500000 1.500000 -0.515625
+v -0.484375 -0.421875 0.437500
+v 0.140625 1.000000 -0.589563
+v 0.140625 0.312500 -0.589563
+v -0.046875 0.312500 -0.589563
+v -0.046875 1.000000 -0.589563
+v -0.031250 0.312500 -0.562500
+v -0.031250 1.000000 -0.562500
+v -0.046875 0.312500 -0.535437
+v -0.046875 1.000000 -0.535437
+v -0.078125 0.312500 -0.535437
+v -0.078125 1.000000 -0.535437
+v -0.093750 0.312500 -0.562500
+v -0.093750 1.000000 -0.562500
+v -0.078125 0.312500 -0.589563
+v -0.078125 1.000000 -0.589563
+v 0.156250 0.312500 -0.562500
+v 0.156250 1.000000 -0.562500
+v 0.140625 0.312500 -0.535437
+v 0.140625 1.000000 -0.535437
+v 0.109375 0.312500 -0.535437
+v 0.109375 1.000000 -0.535437
+v 0.093750 0.312500 -0.562500
+v 0.093750 1.000000 -0.562500
+v 0.109375 0.312500 -0.589563
+v 0.109375 1.000000 -0.589563
+v 0.078125 1.000000 -0.515484
+v 0.078125 1.000000 -0.562359
+v 0.171875 1.000000 -0.562359
+v 0.171875 1.000000 -0.515484
+v 0.078125 1.046875 -0.515484
+v 0.078125 1.046875 -0.562359
+v 0.171875 1.046875 -0.562359
+v 0.171875 1.046875 -0.515484
+v -0.095646 1.046875 -0.595504
+v -0.095646 1.000000 -0.595504
+v 0.125000 1.000000 -0.609234
+v 0.125000 1.046875 -0.609234
+v 0.142938 1.000000 -0.605666
+v 0.142938 1.046875 -0.605666
+v 0.158146 1.000000 -0.595504
+v 0.158146 1.046875 -0.595504
+v 0.168307 1.000000 -0.580297
+v 0.168307 1.046875 -0.580297
+v -0.015625 1.000000 -0.515484
+v -0.015625 1.000000 -0.562359
+v -0.105807 1.046875 -0.580297
+v -0.105807 1.000000 -0.580297
+v -0.019193 1.046875 -0.580297
+v -0.019193 1.000000 -0.580297
+v -0.029354 1.046875 -0.595504
+v -0.029354 1.000000 -0.595504
+v -0.044562 1.046875 -0.605666
+v -0.044562 1.000000 -0.605666
+v -0.062500 1.046875 -0.609234
+v -0.062500 1.000000 -0.609234
+v -0.015625 1.046875 -0.515484
+v -0.015625 1.046875 -0.562359
+v -0.109375 1.046875 -0.562359
+v -0.109375 1.046875 -0.515484
+v -0.109375 1.000000 -0.562359
+v -0.109375 1.000000 -0.515484
+v 0.081693 1.000000 -0.580297
+v 0.081693 1.046875 -0.580297
+v 0.091854 1.000000 -0.595504
+v 0.091854 1.046875 -0.595504
+v 0.107062 1.000000 -0.605666
+v 0.107062 1.046875 -0.605666
+v -0.080438 1.000000 -0.605666
+v -0.080438 1.046875 -0.605666
+v -0.095646 0.312500 -0.595504
+v -0.095646 0.265625 -0.595504
+v -0.015625 0.265625 -0.515484
+v -0.015625 0.265625 -0.562359
+v -0.105807 0.312500 -0.580297
+v -0.105807 0.265625 -0.580297
+v -0.019193 0.312500 -0.580297
+v -0.019193 0.265625 -0.580297
+v -0.029354 0.312500 -0.595504
+v -0.029354 0.265625 -0.595504
+v -0.044562 0.312500 -0.605666
+v -0.044562 0.265625 -0.605666
+v -0.062500 0.312500 -0.609234
+v -0.062500 0.265625 -0.609234
+v -0.015625 0.312500 -0.515484
+v -0.015625 0.312500 -0.562359
+v -0.109375 0.312500 -0.562359
+v -0.109375 0.312500 -0.515484
+v -0.109375 0.265625 -0.562359
+v -0.109375 0.265625 -0.515484
+v -0.080438 0.265625 -0.605666
+v -0.080438 0.312500 -0.605666
+v 0.091854 0.312500 -0.595504
+v 0.091854 0.265625 -0.595504
+v 0.171875 0.265625 -0.515484
+v 0.171875 0.265625 -0.562359
+v 0.081693 0.312500 -0.580297
+v 0.081693 0.265625 -0.580297
+v 0.168307 0.312500 -0.580297
+v 0.168307 0.265625 -0.580297
+v 0.158146 0.312500 -0.595504
+v 0.158146 0.265625 -0.595504
+v 0.142938 0.312500 -0.605666
+v 0.142938 0.265625 -0.605666
+v 0.125000 0.312500 -0.609234
+v 0.125000 0.265625 -0.609234
+v 0.171875 0.312500 -0.515484
+v 0.171875 0.312500 -0.562359
+v 0.078125 0.312500 -0.562359
+v 0.078125 0.312500 -0.515484
+v 0.078125 0.265625 -0.562359
+v 0.078125 0.265625 -0.515484
+v 0.107062 0.265625 -0.605666
+v 0.107062 0.312500 -0.605666
+v 0.035156 0.531250 -0.515625
+v 0.500000 0.531250 -0.515625
+v 0.437500 0.828125 -0.515625
+v 0.437500 0.531250 -0.515625
+v 0.035156 0.828125 -0.515625
+v 0.500000 0.828125 -0.515625
+v 0.125000 0.531250 -0.515625
+v 0.125000 0.828125 -0.515625
+v 0.437500 0.828125 -0.375000
+v 0.437500 0.531250 -0.375000
+v 0.125000 0.531250 -0.375000
+v 0.125000 0.828125 -0.375000
+v 0.312500 0.640625 -0.437500
+v 0.312500 0.640625 -0.449219
+v 0.375000 0.640625 -0.449219
+v 0.375000 0.640625 -0.437500
+v 0.312500 0.828125 -0.437500
+v 0.312500 0.828125 -0.449219
+v 0.375000 0.828125 -0.449219
+v 0.375000 0.828125 -0.437500
+v 0.187500 0.640625 -0.437500
+v 0.187500 0.640625 -0.449219
+v 0.250000 0.640625 -0.449219
+v 0.250000 0.640625 -0.437500
+v 0.187500 0.828125 -0.437500
+v 0.187500 0.828125 -0.449219
+v 0.250000 0.828125 -0.449219
+v 0.250000 0.828125 -0.437500
+v -0.484375 1.484375 0.437500
+v 0.484375 1.484375 0.437500
+v 0.484375 -0.421875 0.421875
+v -0.484375 -0.421875 0.421875
+v -0.484375 1.484375 0.421875
+v 0.484375 1.484375 0.421875
+v -0.500000 -0.421875 0.421875
+v 0.500000 1.484375 0.421875
+v -0.500000 1.484375 0.421875
+v 0.500000 -0.421875 0.421875
+vt 0.671875 0.500000
+vt 0.687500 0.500000
+vt 0.687500 0.968750
+vt 0.671875 0.968750
+vt 0.515625 0.984375
+vt 0.500000 0.984375
+vt 0.500000 0.500000
+vt 0.515625 0.500000
+vt 0.031250 0.984375
+vt 0.265625 0.984375
+vt 0.265625 0.484375
+vt 0.031250 0.484375
+vt 0.296875 0.250000
+vt 0.296875 0.046875
+vt 0.546875 0.046875
+vt 0.546875 0.250000
+vt 0.984375 0.968750
+vt 0.968750 0.968750
+vt 0.968750 0.500000
+vt 0.984375 0.500000
+vt 0.015625 0.984375
+vt 0.015625 0.484375
+vt 0.640625 0.984375
+vt 0.640625 0.500000
+vt 0.359375 0.984375
+vt 0.343750 0.984375
+vt 0.343750 0.500000
+vt 0.359375 0.500000
+vt 0.312500 0.984375
+vt 0.296875 0.984375
+vt 0.296875 0.812500
+vt 0.296875 0.734375
+vt 0.296875 0.500000
+vt 0.312500 0.500000
+vt 0.296875 0.031250
+vt 0.406250 0.031250
+vt 0.406250 0.046875
+vt 0.140625 0.046875
+vt 0.140625 0.031250
+vt 0.265625 0.031250
+vt 0.265625 0.046875
+vt 0.390625 0.796875
+vt 0.390625 0.718750
+vt 0.406250 0.718750
+vt 0.406250 0.796875
+vt 0.421875 0.046875
+vt 0.421875 0.031250
+vt 0.546875 0.031250
+vt 0.937500 0.968750
+vt 0.718750 0.968750
+vt 0.718750 0.500000
+vt 0.937500 0.500000
+vt 0.390625 0.500000
+vt 0.390625 0.484375
+vt 0.640625 0.484375
+vt 0.575846 0.437297
+vt 0.575846 0.450788
+vt 0.548864 0.450788
+vt 0.548864 0.437297
+vt 0.549891 0.432135
+vt 0.552815 0.427758
+vt 0.557192 0.424833
+vt 0.562355 0.423807
+vt 0.567518 0.424833
+vt 0.571894 0.427758
+vt 0.574819 0.432135
+vt 0.548842 0.450788
+vt 0.548842 0.437287
+vt 0.552797 0.427739
+vt 0.562344 0.423785
+vt 0.571891 0.427739
+vt 0.500000 0.718750
+vt 0.390625 0.984375
+vt 0.500000 0.796875
+vt 0.484375 0.796875
+vt 0.484375 0.718750
+vt 0.093750 0.328125
+vt 0.140625 0.328125
+vt 0.140625 0.359375
+vt 0.093750 0.359375
+vt 0.218750 0.328125
+vt 0.265625 0.328125
+vt 0.265625 0.359375
+vt 0.218750 0.359375
+vt 0.015625 0.359375
+vt 0.015625 0.328125
+vt 0.109375 0.406250
+vt 0.109375 0.390625
+vt 0.156250 0.390625
+vt 0.156250 0.406250
+vt 0.031250 0.453125
+vt 0.015625 0.453125
+vt 0.015625 0.406250
+vt 0.031250 0.406250
+vt 0.218750 0.390625
+vt 0.218750 0.406250
+vt 0.171875 0.406250
+vt 0.171875 0.390625
+vt 0.015625 0.046875
+vt 0.015625 0.031250
+vt 0.125000 0.031250
+vt 0.125000 0.046875
+vt 0.015625 0.250000
+vt 0.265625 0.250000
+vt 0.109375 0.453125
+vt 0.109375 0.437500
+vt 0.156250 0.437500
+vt 0.156250 0.453125
+vt 0.078125 0.453125
+vt 0.062500 0.453125
+vt 0.062500 0.406250
+vt 0.078125 0.406250
+vt 0.218750 0.437500
+vt 0.218750 0.453125
+vt 0.171875 0.453125
+vt 0.171875 0.437500
+vt 0.015625 0.734375
+vt 0.015625 0.796875
+vt 0.031250 0.296875
+vt 0.031250 0.281250
+vt 0.250000 0.281250
+vt 0.250000 0.296875
+vt 0.312500 0.296875
+vt 0.312500 0.281250
+vt 0.531250 0.281250
+vt 0.531250 0.296875
+vt 0.953125 0.484375
+vt 0.953125 0.500000
+vt 0.703125 0.500000
+vt 0.703125 0.484375
+vt 0.953125 0.968750
+vt 0.953125 0.984375
+vt 0.703125 0.984375
+vt 0.703125 0.968750
+vt 0.609375 0.437500
+vt 0.640625 0.437500
+vt 0.640625 0.453125
+vt 0.609375 0.453125
+vt 0.515625 0.437500
+vt 0.312500 0.437500
+vt 0.312500 0.421875
+vt 0.515625 0.421875
+vt 0.515625 0.390625
+vt 0.312500 0.390625
+vt 0.312500 0.375000
+vt 0.515625 0.375000
+vt 0.515625 0.453125
+vt 0.312500 0.453125
+vt 0.312500 0.359375
+vt 0.515625 0.359375
+vt 0.312500 0.406250
+vt 0.515625 0.406250
+vt 0.656250 0.437500
+vt 0.656250 0.453125
+vt 0.734375 0.437500
+vt 0.765625 0.437500
+vt 0.765625 0.453125
+vt 0.734375 0.453125
+vt 0.718750 0.453125
+vt 0.718750 0.437500
+vt 0.671875 0.437500
+vt 0.671875 0.453125
+vt 0.687500 0.453125
+vt 0.687500 0.437500
+vt 0.703125 0.437500
+vt 0.703125 0.453125
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.995200 0.000000 -0.098000
+vn -0.500000 -0.000000 0.866000
+vn 0.500000 0.000000 -0.866000
+vn 0.500000 -0.000000 0.866000
+vn -0.500000 0.000000 -0.866000
+vn -0.923900 0.000000 -0.382700
+vn 0.995200 0.000000 -0.098000
+vn 0.923900 0.000000 -0.382700
+vn -0.707100 0.000000 -0.707100
+vn 0.382700 0.000000 -0.923900
+vn -0.382700 0.000000 -0.923900
+vn 0.707100 0.000000 -0.707100
+s off
+f 6/1/1 167/2/1 170/3/1 166/4/1
+f 16/5/2 21/6/2 17/7/2 12/8/2
+f 7/9/1 8/10/1 4/11/1 3/12/1
+f 1/13/3 2/14/3 3/15/3 4/16/3
+f 165/17/4 169/18/4 168/19/4 24/20/4
+f 13/9/4 14/21/4 10/22/4 9/12/4
+f 14/23/2 15/5/2 11/8/2 10/24/2
+f 15/25/1 16/26/1 12/27/1 11/28/1
+f 21/29/4 22/30/4 141/31/4 137/32/4 18/33/4 17/34/4
+f 9/14/3 10/35/3 11/36/3 12/37/3
+f 16/38/5 15/39/5 14/40/5 13/41/5
+f 142/42/2 138/43/2 140/44/2 139/45/2
+f 17/46/3 18/47/3 19/48/3 20/15/3
+f 166/49/6 165/50/6 24/51/6 6/52/6
+f 20/53/2 3/54/2 2/55/2 9/24/2
+f 131/56/5 132/57/5 129/58/5 130/59/5 121/60/5 123/61/5 125/62/5 127/63/5 136/64/5 115/65/5 119/66/5
+f 49/67/3 50/68/3 85/60/3 87/69/3 89/62/3 59/70/3 61/64/3 63/71/3 65/66/3 51/56/3 52/57/3
+f 112/67/3 111/68/3 98/60/3 94/69/3 113/62/3 106/70/3 104/64/3 102/71/3 100/66/3 96/56/3 95/57/3
+f 54/56/5 53/57/5 56/58/5 55/59/5 66/60/5 64/61/5 62/62/5 60/63/5 90/64/5 88/65/5 86/66/5
+f 81/56/5 82/57/5 79/58/5 80/59/5 71/60/5 73/61/5 75/62/5 77/63/5 92/64/5 57/65/5 69/66/5
+f 134/67/3 133/68/3 120/60/3 116/69/3 135/62/3 128/70/3 126/64/3 124/71/3 122/66/3 118/56/3 117/57/3
+f 109/56/5 110/57/5 107/58/5 108/59/5 99/60/5 101/61/5 103/62/5 105/63/5 114/64/5 93/65/5 97/66/5
+f 84/67/3 83/68/3 70/60/3 58/69/3 91/62/3 78/70/3 76/64/3 74/71/3 72/66/3 68/56/3 67/57/3
+f 137/72/2 138/43/2 19/53/2 18/7/2
+f 22/6/2 23/73/2 142/42/2 141/74/2
+f 137/72/2 141/74/2 144/75/2 143/76/2
+f 143/77/1 144/78/1 148/79/1 147/80/1
+f 139/81/4 140/82/4 146/83/4 145/84/4
+f 147/80/5 146/85/5 140/86/5 143/77/5
+f 144/78/3 139/81/3 145/84/3 148/79/3
+f 146/44/2 147/76/2 148/75/2 145/45/2
+f 153/87/4 154/88/4 150/89/4 149/90/4
+f 154/91/2 155/92/2 151/93/2 150/94/2
+f 155/95/1 156/96/1 152/97/1 151/98/1
+f 7/99/5 23/100/5 22/101/5 21/102/5
+f 149/90/3 150/89/3 151/98/3 152/97/3
+f 8/103/5 7/99/5 13/41/5 5/104/5
+f 161/105/4 162/106/4 158/107/4 157/108/4
+f 162/109/2 163/110/2 159/111/2 158/112/2
+f 163/113/1 164/114/1 160/115/1 159/116/1
+f 23/21/1 7/9/1 20/12/1 19/22/1 138/117/1 142/118/1
+f 157/108/3 158/107/3 159/116/3 160/115/3
+f 5/10/4 13/9/4 2/12/4 1/11/4
+f 166/119/5 170/120/5 169/121/5 165/122/5
+f 24/123/3 168/124/3 167/125/3 6/126/3
+f 4/127/6 174/128/6 171/129/6 1/130/6
+f 172/131/6 8/132/6 5/133/6 173/134/6
+f 172/131/6 170/49/6 167/52/6 174/128/6
+f 169/50/6 173/134/6 171/129/6 168/51/6
+s 1
+f 53/135/4 54/136/7 50/137/7 49/138/4
+f 43/139/8 44/140/8 46/141/4 45/142/4
+f 27/143/9 28/144/9 30/145/1 29/146/1
+f 41/147/10 42/148/10 44/140/8 43/139/8
+f 29/146/1 30/145/1 32/149/10 31/150/10
+f 45/142/4 46/141/4 48/151/11 47/152/11
+f 39/146/1 40/145/1 42/149/10 41/150/10
+f 31/147/10 32/148/10 34/140/8 33/139/8
+f 47/152/11 48/151/11 25/144/9 26/143/9
+f 26/143/9 25/144/9 40/145/1 39/146/1
+f 33/139/8 34/140/8 36/141/4 35/142/4
+f 37/152/11 38/151/11 28/144/9 27/143/9
+f 35/142/4 36/141/4 38/151/11 37/152/11
+f 83/137/7 81/136/7 69/153/12 70/154/12
+f 55/155/13 56/156/1 52/157/1 51/158/13
+f 122/159/14 121/160/14 130/155/13 118/158/13
+f 98/154/12 97/153/12 93/161/15 94/162/15
+f 59/163/2 60/164/2 62/165/16 61/166/16
+f 113/162/17 114/161/17 105/164/2 106/163/2
+f 61/166/16 62/165/16 64/160/18 63/159/18
+f 133/137/7 131/136/7 119/153/12 120/154/12
+f 94/162/15 93/161/15 114/161/17 113/162/17
+f 63/159/18 64/160/18 66/160/14 65/159/14
+f 124/166/18 123/165/18 121/160/14 122/159/14
+f 110/135/4 109/136/7 111/137/7 112/138/4
+f 126/166/16 125/165/16 123/165/18 124/166/18
+f 108/155/13 107/156/1 95/157/1 96/158/13
+f 74/159/18 73/160/18 71/155/14 72/158/14
+f 128/163/2 127/164/2 125/165/16 126/166/16
+f 76/166/16 75/165/16 73/160/18 74/159/18
+f 106/163/2 105/164/2 103/165/16 104/166/16
+f 78/163/2 77/164/2 75/165/16 76/166/16
+f 130/155/13 129/156/1 117/157/1 118/158/13
+f 104/166/16 103/165/16 101/160/18 102/159/18
+f 132/135/4 131/136/7 133/137/7 134/138/4
+f 102/159/18 101/160/18 99/160/14 100/159/14
+f 80/155/13 79/156/1 67/157/1 68/158/13
+f 116/154/15 115/153/15 136/161/17 135/162/17
+f 111/137/7 109/136/7 97/153/12 98/154/12
+f 82/135/4 81/136/7 83/137/7 84/138/4
+f 135/162/17 136/161/17 127/164/2 128/163/2
+f 58/162/15 57/161/15 92/164/17 91/163/17
+f 50/137/7 54/136/7 86/153/12 85/154/12
+f 120/154/12 119/153/12 115/153/15 116/154/15
+f 91/163/17 92/164/17 77/164/2 78/163/2
+f 65/159/14 66/160/14 55/155/13 51/158/13
+f 70/154/12 69/153/12 57/161/15 58/162/15
+f 100/159/14 99/160/14 108/155/13 96/158/13
+f 85/154/12 86/153/12 88/161/15 87/162/15
+f 72/158/14 71/155/14 80/155/13 68/158/13
+f 89/162/17 90/161/17 60/164/2 59/163/2
+f 87/162/15 88/161/15 90/161/17 89/162/17
diff --git a/homedecor_modpack/homedecor/models/homedecor_round_pole.obj b/homedecor_modpack/homedecor/models/homedecor_round_pole.obj
new file mode 100644
index 0000000..e842398
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_round_pole.obj
@@ -0,0 +1,111 @@
+# Blender v2.69 (sub 0) OBJ File: 'pole.blend'
+# www.blender.org
+mtllib homedecor_round_pole.mtl
+o Cylinder
+v -0.047835 -0.500000 -0.115485
+v -0.047835 0.500000 -0.115485
+v 0.000000 -0.500000 -0.125000
+v 0.000000 0.500000 -0.125000
+v 0.047835 -0.500000 -0.115485
+v 0.047835 0.500000 -0.115485
+v 0.088388 -0.500000 -0.088388
+v 0.088388 0.500000 -0.088388
+v 0.115485 -0.500000 -0.047835
+v 0.115485 0.500000 -0.047835
+v 0.125000 -0.500000 0.000000
+v 0.125000 0.500000 0.000000
+v 0.115485 -0.500000 0.047835
+v 0.115485 0.500000 0.047835
+v 0.088388 -0.500000 0.088388
+v 0.088388 0.500000 0.088388
+v 0.047835 -0.500000 0.115485
+v 0.047835 0.500000 0.115485
+v 0.000000 -0.500000 0.125000
+v 0.000000 0.500000 0.125000
+v -0.047835 -0.500000 0.115485
+v -0.047835 0.500000 0.115485
+v -0.088388 -0.500000 0.088388
+v -0.088388 0.500000 0.088388
+v -0.115485 -0.500000 0.047835
+v -0.115485 0.500000 0.047835
+v -0.125000 -0.500000 -0.000000
+v -0.125000 0.500000 -0.000000
+v -0.115485 -0.500000 -0.047835
+v -0.115485 0.500000 -0.047835
+v -0.088388 -0.500000 -0.088388
+v -0.088388 0.500000 -0.088388
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 0.875000 1.000000
+vt 0.875000 0.000000
+vt 0.812500 1.000000
+vt 0.812500 0.000000
+vt 0.750000 1.000000
+vt 0.750000 0.000000
+vt 0.687500 1.000000
+vt 0.687500 0.000000
+vt 0.625000 1.000000
+vt 0.625000 0.000000
+vt 0.562500 1.000000
+vt 0.562500 0.000000
+vt 0.500000 1.000000
+vt 0.500000 0.000000
+vt 0.437500 1.000000
+vt 0.437500 0.000000
+vt 0.375000 1.000000
+vt 0.375000 0.000000
+vt 0.312500 1.000000
+vt 0.312500 0.000000
+vt 0.250000 1.000000
+vt 0.250000 0.000000
+vt 0.187500 1.000000
+vt 0.187500 0.000000
+vt 0.308658 0.961940
+vt 0.146447 0.853553
+vt 0.038060 0.691342
+vt 0.000000 0.500000
+vt 0.038060 0.308658
+vt 0.146447 0.146446
+vt 0.308659 0.038060
+vt 0.500001 0.000000
+vt 0.691342 0.038060
+vt 0.853554 0.146447
+vt 0.961940 0.308659
+vt 1.000000 0.500000
+vt 0.961940 0.691342
+vt 0.853553 0.853553
+vt 0.691341 0.961940
+vt 0.125000 0.000000
+vt 0.125000 1.000000
+vt 0.308658 0.038060
+vt 0.853553 0.853554
+vt 0.499999 1.000000
+vt 0.308658 0.961939
+vt 0.146446 0.853553
+vt 0.038061 0.308658
+usemtl None
+s off
+f 1/1 2/2 4/3 3/4
+f 3/5 4/6 6/7 5/8
+f 5/8 6/7 8/9 7/10
+f 7/10 8/9 10/11 9/12
+f 9/12 10/11 12/13 11/14
+f 11/14 12/13 14/15 13/16
+f 13/16 14/15 16/17 15/18
+f 15/18 16/17 18/19 17/20
+f 17/20 18/19 20/21 19/22
+f 19/22 20/21 22/23 21/24
+f 21/24 22/23 24/25 23/26
+f 23/26 24/25 26/27 25/28
+f 25/28 26/27 28/29 27/30
+f 27/30 28/29 30/31 29/32
+f 4/21 2/33 32/34 30/35 28/36 26/37 24/38 22/39 20/40 18/41 16/42 14/43 12/44 10/45 8/46 6/47
+f 31/48 32/49 2/2 1/1
+f 29/32 30/31 32/49 31/48
+f 1/50 3/40 5/41 7/42 9/43 11/44 13/45 15/51 17/47 19/52 21/53 23/54 25/35 27/36 29/55 31/38
diff --git a/homedecor_modpack/homedecor/models/homedecor_shower_head.obj b/homedecor_modpack/homedecor/models/homedecor_shower_head.obj
new file mode 100644
index 0000000..9e4aa56
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_shower_head.obj
@@ -0,0 +1,390 @@
+# Blender v2.73 (sub 0) OBJ File: 'showerhead.blend'
+# www.blender.org
+o Cylinder
+v -0.002279 -0.286270 -0.029833
+v -0.002279 -0.198434 0.124963
+v 0.023457 -0.200797 0.131441
+v 0.087796 -0.289958 -0.005981
+v 0.042297 -0.207253 0.149141
+v 0.153735 -0.300033 0.059184
+v 0.049192 -0.216072 0.173319
+v 0.177871 -0.313796 0.148201
+v 0.042297 -0.224891 0.197496
+v 0.153735 -0.327560 0.237218
+v 0.023457 -0.231346 0.215195
+v 0.087796 -0.337635 0.302383
+v -0.002279 -0.233710 0.221673
+v -0.002279 -0.341323 0.326235
+v -0.028014 -0.231346 0.215195
+v -0.092353 -0.337636 0.302382
+v -0.046854 -0.224891 0.197496
+v -0.158293 -0.327560 0.237218
+v -0.053750 -0.216072 0.173319
+v -0.182428 -0.313797 0.148200
+v -0.046854 -0.207253 0.149141
+v -0.158293 -0.300033 0.059184
+v -0.028014 -0.200797 0.131441
+v -0.092353 -0.289958 -0.005981
+v -0.002279 -0.089004 0.182122
+v 0.023457 -0.093670 0.187199
+v 0.042297 -0.106419 0.201070
+v 0.049192 -0.123834 0.220019
+v 0.042297 -0.141250 0.238967
+v 0.023457 -0.153999 0.252838
+v -0.002279 -0.158665 0.257915
+v -0.028015 -0.153999 0.252838
+v -0.046854 -0.141250 0.238967
+v -0.053750 -0.123834 0.220018
+v -0.046854 -0.106419 0.201070
+v -0.028014 -0.093670 0.187199
+v -0.002279 -0.007455 0.267224
+v 0.023457 -0.013348 0.270806
+v 0.042297 -0.029448 0.280591
+v 0.049192 -0.051440 0.293958
+v 0.042297 -0.073432 0.307324
+v 0.023457 -0.089532 0.317110
+v -0.002279 -0.095423 0.320691
+v -0.028015 -0.089532 0.317110
+v -0.046854 -0.073432 0.307324
+v -0.053750 -0.051441 0.293957
+v -0.046854 -0.029448 0.280590
+v -0.028015 -0.013348 0.270806
+v -0.002279 0.045677 0.376375
+v 0.023456 0.039013 0.378148
+v 0.042296 0.020807 0.382994
+v 0.049192 -0.004062 0.389615
+v 0.042296 -0.028932 0.396235
+v 0.023456 -0.047138 0.401081
+v -0.002279 -0.053801 0.402856
+v -0.028015 -0.047138 0.401081
+v -0.046854 -0.028932 0.396235
+v -0.053750 -0.004062 0.389615
+v -0.046854 0.020807 0.382994
+v -0.028015 0.039013 0.378147
+v -0.002279 0.056048 0.499503
+v 0.023456 0.049152 0.499503
+v 0.042296 0.030313 0.499503
+v 0.049192 0.004577 0.499503
+v 0.042296 -0.021159 0.499503
+v 0.023456 -0.039998 0.499503
+v -0.002279 -0.046893 0.499503
+v -0.028015 -0.039998 0.499503
+v -0.046854 -0.021159 0.499503
+v -0.053750 0.004577 0.499503
+v -0.046854 0.030313 0.499503
+v -0.028015 0.049152 0.499503
+v 0.153735 -0.373155 0.228881
+v 0.177871 -0.359391 0.139864
+v -0.002279 -0.386918 0.317899
+v 0.087796 -0.383230 0.294047
+v 0.087796 -0.335552 -0.014318
+v -0.002279 -0.331865 -0.038169
+v 0.153735 -0.345628 0.050847
+v -0.092353 -0.383230 0.294047
+v -0.158293 -0.345628 0.050847
+v -0.182428 -0.359391 0.139864
+v -0.092353 -0.335552 -0.014318
+v -0.158293 -0.373155 0.228881
+v -0.002279 -0.359391 0.139864
+vt 1.000000 0.500000
+vt 0.750000 0.500000
+vt 0.750000 0.437500
+vt 1.000000 0.437500
+vt 0.750000 0.375000
+vt 1.000000 0.375000
+vt 0.750000 0.312500
+vt 1.000000 0.312500
+vt 0.750000 0.250000
+vt 1.000000 0.250000
+vt 0.750000 0.187500
+vt 1.000000 0.187500
+vt 0.750000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.875000
+vt 0.750000 0.875000
+vt 0.750000 0.812500
+vt 1.000000 0.812500
+vt 0.750000 0.750000
+vt 1.000000 0.750000
+vt 0.750000 0.687500
+vt 1.000000 0.687500
+vt 0.750000 0.625000
+vt 1.000000 0.625000
+vt 0.750000 0.562500
+vt 1.000000 0.562500
+vt 0.562500 0.500000
+vt 0.562500 0.437500
+vt 0.562500 0.375000
+vt 0.562500 0.312500
+vt 0.562500 0.250000
+vt 0.562500 0.187500
+vt 0.562500 0.125000
+vt 0.562500 0.875000
+vt 0.562500 0.812500
+vt 0.562500 0.750000
+vt 0.562500 0.687500
+vt 0.562500 0.625000
+vt 0.562500 0.562500
+vt 0.375000 0.500000
+vt 0.375000 0.437500
+vt 0.375000 0.375000
+vt 0.375000 0.312500
+vt 0.375000 0.250000
+vt 0.375000 0.187500
+vt 0.375000 0.125000
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.375000 0.750000
+vt 0.375000 0.687500
+vt 0.375000 0.625000
+vt 0.375000 0.562500
+vt 0.187500 0.500000
+vt 0.187500 0.437500
+vt 0.187500 0.375000
+vt 0.187500 0.312500
+vt 0.187500 0.250000
+vt 0.187500 0.187500
+vt 0.187500 0.125000
+vt 0.187500 0.875000
+vt 0.187500 0.812500
+vt 0.187500 0.750000
+vt 0.187500 0.687500
+vt 0.187500 0.625000
+vt 0.187500 0.562500
+vt 0.000000 0.500000
+vt 0.000000 0.437500
+vt 0.000000 0.375000
+vt 0.000000 0.312500
+vt 0.000000 0.250000
+vt 0.000000 0.187500
+vt 0.000000 0.125000
+vt 0.000000 0.875000
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 0.000000 0.562500
+vt 0.937500 0.312500
+vt 0.937500 0.250000
+vt 0.812500 0.250000
+vt 0.812500 0.312500
+vt 0.937500 0.187500
+vt 0.937500 0.125000
+vt 0.812500 0.125000
+vt 0.812500 0.187500
+vt 0.937500 0.500000
+vt 0.937500 0.437500
+vt 0.812500 0.437500
+vt 0.812500 0.500000
+vt 0.937500 0.375000
+vt 0.812500 0.375000
+vt 0.937500 0.875000
+vt 0.937500 0.812500
+vt 0.812500 0.812500
+vt 0.812500 0.875000
+vt 0.937500 0.687500
+vt 0.937500 0.625000
+vt 0.812500 0.625000
+vt 0.812500 0.687500
+vt 0.937500 0.562500
+vt 0.812500 0.562500
+vt 0.937500 0.750000
+vt 0.812500 0.750000
+vt 0.812500 0.624165
+vt 0.874583 0.607530
+vt 0.920030 0.562083
+vt 0.936665 0.500000
+vt 0.920030 0.437917
+vt 0.874583 0.392470
+vt 0.812500 0.375835
+vt 0.750417 0.392470
+vt 0.704970 0.437917
+vt 0.688335 0.500000
+vt 0.704970 0.562082
+vt 0.750417 0.607530
+vt 0.156336 0.843664
+vt 0.036267 0.635697
+vt 0.484375 0.515625
+vt 0.036266 0.395554
+vt 0.156337 0.187587
+vt 0.812414 0.843664
+vt 0.604445 0.963733
+vt 0.932484 0.395554
+vt 0.932484 0.635694
+vt 0.364304 0.963734
+vt 0.364305 0.067515
+vt 0.812412 0.187587
+vt 0.604446 0.067517
+vn 0.000000 0.557000 -0.830500
+vn 0.000000 0.711000 -0.703200
+vn 0.414900 0.679400 -0.605100
+vn 0.459500 0.536200 -0.708000
+vn 0.737300 0.591100 -0.327100
+vn 0.793400 0.479800 -0.374500
+vn 0.881500 0.465700 0.077900
+vn 0.911300 0.404200 0.078000
+vn 0.789300 0.336300 0.513700
+vn 0.783900 0.330700 0.525400
+vn 0.465900 0.240500 0.851500
+vn 0.450000 0.278500 0.848500
+vn 0.000000 0.205600 0.978600
+vn 0.000000 0.259800 0.965600
+vn -0.465900 0.240500 0.851500
+vn -0.450000 0.278500 0.848500
+vn -0.789300 0.336300 0.513700
+vn -0.783900 0.330700 0.525400
+vn -0.881500 0.465700 0.077900
+vn -0.911300 0.404200 0.078000
+vn -0.737300 0.591100 -0.327200
+vn -0.793400 0.479800 -0.374500
+vn -0.414900 0.679400 -0.605100
+vn -0.459500 0.536200 -0.708000
+vn 0.000000 0.602000 -0.798500
+vn 0.487500 0.524000 -0.698400
+vn 0.853500 0.309600 -0.419000
+vn 0.999600 0.014300 -0.023100
+vn 0.876800 -0.282000 0.389400
+vn 0.510200 -0.497600 0.701400
+vn 0.000000 -0.575900 0.817500
+vn -0.510200 -0.497600 0.701400
+vn -0.876800 -0.282000 0.389400
+vn -0.999600 0.014300 -0.023100
+vn -0.853500 0.309600 -0.419000
+vn -0.487500 0.524000 -0.698400
+vn 0.000000 0.821100 -0.570800
+vn 0.489200 0.715400 -0.498900
+vn 0.854800 0.424200 -0.298800
+vn 0.999600 0.020400 -0.016000
+vn 0.877200 -0.390300 0.279500
+vn 0.511400 -0.695400 0.504800
+vn 0.000000 -0.807900 0.589300
+vn -0.511400 -0.695400 0.504800
+vn -0.877200 -0.390300 0.279500
+vn -0.999600 0.020400 -0.016000
+vn -0.854800 0.424200 -0.298800
+vn -0.489200 0.715400 -0.498900
+vn 0.000000 0.964200 -0.265100
+vn 0.489400 0.840800 -0.231300
+vn 0.854100 0.501400 -0.138300
+vn 0.999500 0.030000 -0.008500
+vn 0.881200 -0.455600 0.125800
+vn 0.517300 -0.824700 0.228400
+vn 0.000000 -0.963700 0.267100
+vn -0.517300 -0.824700 0.228400
+vn -0.881200 -0.455600 0.125800
+vn -0.999500 0.030000 -0.008500
+vn -0.854100 0.501400 -0.138300
+vn -0.489400 0.840800 -0.231300
+vn 0.000000 0.783300 0.621500
+vn 0.383800 0.678900 0.625900
+vn 0.661800 0.394400 0.637500
+vn 0.757400 0.009800 0.652800
+vn 0.648300 -0.367300 0.666900
+vn 0.370300 -0.636700 0.676400
+vn 0.000000 -0.733600 0.679600
+vn -0.370300 -0.636700 0.676400
+vn -0.648300 -0.367300 0.667000
+vn -0.757400 0.009800 0.652800
+vn -0.661800 0.394400 0.637500
+vn -0.383800 0.678900 0.625900
+vn 0.653400 -0.707700 0.268800
+vn 0.757200 -0.645000 -0.103200
+vn 0.000000 -0.769900 0.638100
+vn 0.376200 -0.753300 0.539400
+vn 0.380900 -0.535400 -0.753800
+vn 0.000000 -0.518400 -0.855100
+vn 0.658000 -0.581900 -0.477900
+vn -0.376200 -0.753300 0.539400
+vn -0.658000 -0.581900 -0.477900
+vn -0.757200 -0.645000 -0.103200
+vn -0.380900 -0.535400 -0.753800
+vn -0.653400 -0.707700 0.268800
+vn 0.000000 -0.988300 -0.152800
+g Cylinder_Cylinder_main
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 4/4/4 3/3/3 5/5/5 6/6/6
+f 6/6/6 5/5/5 7/7/7 8/8/8
+f 8/8/8 7/7/7 9/9/9 10/10/10
+f 10/10/10 9/9/9 11/11/11 12/12/12
+f 12/12/12 11/11/11 13/13/13 14/14/14
+f 14/15/14 13/16/13 15/17/15 16/18/16
+f 16/18/16 15/17/15 17/19/17 18/20/18
+f 18/20/18 17/19/17 19/21/19 20/22/20
+f 20/22/20 19/21/19 21/23/21 22/24/22
+f 22/24/22 21/23/21 23/25/23 24/26/24
+f 2/2/2 1/1/1 24/26/24 23/25/23
+f 2/2/2 25/27/25 26/28/26 3/3/3
+f 3/3/3 26/28/26 27/29/27 5/5/5
+f 5/5/5 27/29/27 28/30/28 7/7/7
+f 7/7/7 28/30/28 29/31/29 9/9/9
+f 9/9/9 29/31/29 30/32/30 11/11/11
+f 11/11/11 30/32/30 31/33/31 13/13/13
+f 13/16/13 31/34/31 32/35/32 15/17/15
+f 15/17/15 32/35/32 33/36/33 17/19/17
+f 17/19/17 33/36/33 34/37/34 19/21/19
+f 19/21/19 34/37/34 35/38/35 21/23/21
+f 21/23/21 35/38/35 36/39/36 23/25/23
+f 23/25/23 36/39/36 25/27/25 2/2/2
+f 25/27/25 37/40/37 38/41/38 26/28/26
+f 26/28/26 38/41/38 39/42/39 27/29/27
+f 27/29/27 39/42/39 40/43/40 28/30/28
+f 28/30/28 40/43/40 41/44/41 29/31/29
+f 29/31/29 41/44/41 42/45/42 30/32/30
+f 30/32/30 42/45/42 43/46/43 31/33/31
+f 31/34/31 43/47/43 44/48/44 32/35/32
+f 32/35/32 44/48/44 45/49/45 33/36/33
+f 33/36/33 45/49/45 46/50/46 34/37/34
+f 34/37/34 46/50/46 47/51/47 35/38/35
+f 35/38/35 47/51/47 48/52/48 36/39/36
+f 36/39/36 48/52/48 37/40/37 25/27/25
+f 37/40/37 49/53/49 50/54/50 38/41/38
+f 38/41/38 50/54/50 51/55/51 39/42/39
+f 39/42/39 51/55/51 52/56/52 40/43/40
+f 40/43/40 52/56/52 53/57/53 41/44/41
+f 41/44/41 53/57/53 54/58/54 42/45/42
+f 42/45/42 54/58/54 55/59/55 43/46/43
+f 43/47/43 55/60/55 56/61/56 44/48/44
+f 44/48/44 56/61/56 57/62/57 45/49/45
+f 45/49/45 57/62/57 58/63/58 46/50/46
+f 46/50/46 58/63/58 59/64/59 47/51/47
+f 47/51/47 59/64/59 60/65/60 48/52/48
+f 48/52/48 60/65/60 49/53/49 37/40/37
+f 49/53/49 61/66/61 62/67/62 50/54/50
+f 50/54/50 62/67/62 63/68/63 51/55/51
+f 51/55/51 63/68/63 64/69/64 52/56/52
+f 52/56/52 64/69/64 65/70/65 53/57/53
+f 53/57/53 65/70/65 66/71/66 54/58/54
+f 54/58/54 66/71/66 67/72/67 55/59/55
+f 55/60/55 67/73/67 68/74/68 56/61/56
+f 56/61/56 68/74/68 69/75/69 57/62/57
+f 57/62/57 69/75/69 70/76/70 58/63/58
+f 58/63/58 70/76/70 71/77/71 59/64/59
+f 59/64/59 71/77/71 72/78/72 60/65/60
+f 60/65/60 72/78/72 61/66/61 49/53/49
+f 8/79/8 10/80/10 73/81/73 74/82/74
+f 12/83/12 14/84/14 75/85/75 76/86/76
+f 1/87/1 4/88/4 77/89/77 78/90/78
+f 6/91/6 8/79/8 74/82/74 79/92/79
+f 14/93/14 16/94/16 80/95/80 75/96/75
+f 20/97/20 22/98/22 81/99/81 82/100/82
+f 22/98/22 24/101/24 83/102/83 81/99/81
+f 10/80/10 12/83/12 76/86/76 73/81/73
+f 16/94/16 18/103/18 84/104/84 80/95/80
+f 24/101/24 1/87/1 78/90/78 83/102/83
+f 18/103/18 20/97/20 82/100/82 84/104/84
+f 4/88/4 6/91/6 79/92/79 77/89/77
+f 67/105/67 66/106/66 65/107/65 64/108/64 63/109/63 62/110/62 61/111/61 72/112/72 71/113/71 70/114/70 69/115/69 68/116/68
+g Cylinder_Cylinder_outlet
+f 75/117/75 80/118/80 85/119/85
+f 84/120/84 82/121/82 85/119/85
+f 74/122/74 73/123/73 85/119/85
+f 77/124/77 79/125/79 85/119/85
+f 79/125/79 74/122/74 85/119/85
+f 76/126/76 75/117/75 85/119/85
+f 73/123/73 76/126/76 85/119/85
+f 82/121/82 81/127/81 85/119/85
+f 80/118/80 84/120/84 85/119/85
+f 78/128/78 77/124/77 85/119/85
+f 81/127/81 83/129/83 85/119/85
+f 83/129/83 78/128/78 85/119/85
diff --git a/homedecor_modpack/homedecor/models/homedecor_shrubbery.obj b/homedecor_modpack/homedecor/models/homedecor_shrubbery.obj
new file mode 100644
index 0000000..c4e6c8a
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_shrubbery.obj
@@ -0,0 +1,117 @@
+# Blender v2.73 (sub 0) OBJ File: 'shrubbery.blend'
+# www.blender.org
+o Cylinder
+v -0.499483 -0.312503 0.499551
+v -0.499483 -0.312503 -0.499449
+v 0.499517 -0.312503 -0.499449
+v 0.499517 -0.312503 0.499551
+v -0.499483 0.499185 0.499551
+v -0.499483 0.499185 -0.499449
+v 0.499517 0.499185 -0.499449
+v 0.499517 0.499185 0.499551
+v 0.187330 -0.499815 0.249801
+v 0.187330 -0.499815 0.124926
+v 0.312205 -0.499815 0.124926
+v 0.312205 -0.499815 0.249801
+v 0.062455 -0.312503 0.374676
+v 0.062455 -0.312503 0.000051
+v 0.437080 -0.312503 0.000051
+v 0.437080 -0.312503 0.374676
+v 0.350010 -0.406159 0.287607
+v 0.149524 -0.406159 0.287607
+v 0.350010 -0.406159 0.087120
+v 0.149524 -0.406159 0.087120
+v 0.000017 -0.499815 -0.187261
+v 0.000017 -0.499815 -0.312136
+v 0.124892 -0.499815 -0.312136
+v 0.124892 -0.499815 -0.187261
+v -0.124858 -0.312503 -0.062386
+v -0.124858 -0.312503 -0.437011
+v 0.249767 -0.312503 -0.437011
+v 0.249767 -0.312503 -0.062386
+v 0.162698 -0.406159 -0.149456
+v -0.037789 -0.406159 -0.149456
+v 0.162698 -0.406159 -0.349942
+v -0.037789 -0.406159 -0.349942
+v -0.312170 -0.499815 0.312239
+v -0.312170 -0.499815 0.187364
+v -0.187295 -0.499815 0.187364
+v -0.187295 -0.499815 0.312239
+v -0.437045 -0.312503 0.437114
+v -0.437045 -0.312503 0.062489
+v -0.062420 -0.312503 0.062489
+v -0.062420 -0.312503 0.437114
+v -0.149490 -0.406159 0.350045
+v -0.349976 -0.406159 0.350045
+v -0.149490 -0.406159 0.149558
+v -0.349976 -0.406159 0.149558
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt -0.000000 0.187500
+vt 1.000000 0.187500
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.375000 0.437500
+vt 0.500000 0.437500
+vt 0.500000 0.562500
+vt 0.375000 0.562500
+vt 0.725343 0.656248
+vt 0.812500 0.750000
+vt 0.437500 0.750000
+vt 0.524656 0.656248
+vt 0.287844 0.906248
+vt 0.375000 1.000000
+vt 0.087156 0.906248
+vt 0.725344 0.906248
+vt 0.812500 1.000000
+vt 0.437500 1.000000
+vt 0.524656 0.906248
+vt 0.287844 0.656248
+vt 0.375000 0.750000
+vt 0.000000 0.750000
+vt 0.087156 0.656248
+vt 0.250000 0.562495
+vt 0.125000 0.562495
+vt 0.250000 0.812495
+vt 0.125000 0.812495
+vt 0.687500 0.812495
+vt 0.562500 0.812495
+vt 0.687500 0.562495
+vt 0.562500 0.562495
+g Cylinder_Cylinder_top-sides
+s off
+f 5/1 6/2 2/3 1/4
+f 6/1 7/2 3/3 2/4
+f 7/1 8/2 4/3 3/4
+f 8/1 5/2 1/3 4/4
+f 8/5 7/6 6/1 5/2
+g Cylinder_Cylinder_bottom
+f 1/5 2/6 3/1 4/2
+g Cylinder_Cylinder_roots
+f 9/7 10/8 11/9 12/10
+f 17/11 16/12 13/13 18/14
+f 19/15 15/16 16/2 17/17
+f 20/18 14/19 15/20 19/21
+f 18/22 13/23 14/24 20/25
+f 9/26 18/22 20/25 10/27
+f 10/28 20/15 19/17 11/29
+f 11/30 19/18 17/21 12/31
+f 12/32 17/11 18/14 9/33
+f 21/7 22/8 23/9 24/10
+f 29/11 28/12 25/13 30/14
+f 31/15 27/16 28/2 29/17
+f 32/18 26/19 27/20 31/21
+f 30/22 25/23 26/24 32/25
+f 21/26 30/22 32/25 22/27
+f 22/28 32/15 31/17 23/29
+f 23/30 31/18 29/21 24/31
+f 24/32 29/11 30/14 21/33
+f 33/7 34/8 35/9 36/10
+f 41/11 40/12 37/13 42/14
+f 43/15 39/16 40/2 41/17
+f 44/18 38/19 39/20 43/21
+f 42/22 37/23 38/24 44/25
+f 33/26 42/22 44/25 34/27
+f 34/28 44/15 43/17 35/29
+f 35/30 43/18 41/21 36/31
+f 36/32 41/11 42/14 33/33
diff --git a/homedecor_modpack/homedecor/models/homedecor_skateboard.obj b/homedecor_modpack/homedecor/models/homedecor_skateboard.obj
new file mode 100644
index 0000000..3c342bb
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_skateboard.obj
@@ -0,0 +1,425 @@
+# Blender v2.73 (sub 0) OBJ File: 'skateboard.blend'
+# www.blender.org
+o skateboard_Skateboard
+v -0.493010 -0.334018 0.100157
+v -0.493010 -0.357938 0.100157
+v -0.407780 -0.398988 0.150236
+v -0.407780 -0.375068 0.150236
+v 0.511230 -0.365478 -0.100157
+v 0.511230 -0.341558 -0.100157
+v -0.407780 -0.375068 -0.150236
+v -0.493010 -0.334018 -0.100157
+v -0.493010 -0.357938 -0.100157
+v -0.407780 -0.398988 -0.150236
+v 0.511230 -0.365478 0.100157
+v 0.511230 -0.341558 0.100157
+v -0.268440 -0.398988 0.025039
+v -0.268440 -0.398988 -0.025039
+v -0.228440 -0.398988 0.025039
+v -0.268440 -0.478988 -0.025039
+v -0.228440 -0.478988 -0.025039
+v -0.228440 -0.478988 0.025039
+v -0.268440 -0.478988 0.025039
+v -0.228440 -0.398988 -0.025039
+v -0.220028 -0.431016 -0.075119
+v -0.220028 -0.431016 -0.114677
+v -0.248000 -0.419430 -0.075119
+v -0.248000 -0.419430 -0.114677
+v 0.404220 -0.398988 0.150236
+v 0.404220 -0.375068 0.150236
+v 0.404220 -0.398988 -0.150236
+v 0.404220 -0.375068 -0.150236
+v -0.268440 -0.438988 -0.025039
+v -0.268440 -0.438988 0.025039
+v -0.228440 -0.438988 -0.025039
+v -0.228440 -0.438988 0.025039
+v 0.226000 -0.438988 -0.025039
+v 0.226000 -0.438988 0.025039
+v 0.266000 -0.438988 -0.025039
+v 0.266000 -0.438988 0.025039
+v -0.258440 -0.448988 0.075118
+v -0.238440 -0.448988 0.075118
+v -0.258440 -0.468988 0.075118
+v -0.238440 -0.468988 0.075118
+v -0.238440 -0.468988 -0.075118
+v -0.238440 -0.448988 -0.075118
+v -0.258440 -0.468988 -0.075118
+v -0.258440 -0.448988 -0.075118
+v -0.248000 -0.419430 0.075117
+v -0.248000 -0.419430 0.114675
+v -0.220028 -0.431016 0.075117
+v -0.220028 -0.431016 0.114675
+v -0.208442 -0.458988 0.075117
+v -0.208442 -0.458988 0.114675
+v -0.220028 -0.486960 0.075117
+v -0.220028 -0.486960 0.114675
+v -0.248000 -0.498546 0.075117
+v -0.248000 -0.498546 0.114675
+v -0.275972 -0.486960 0.075117
+v -0.275972 -0.486960 0.114675
+v -0.287558 -0.458988 0.075117
+v -0.287558 -0.458988 0.114675
+v -0.275972 -0.431016 0.075117
+v -0.275972 -0.431016 0.114675
+v -0.248000 -0.458988 0.114675
+v -0.248000 -0.458988 0.075117
+v 0.226000 -0.398988 0.025039
+v 0.226000 -0.398988 -0.025039
+v 0.266000 -0.398988 0.025039
+v 0.226000 -0.478988 -0.025039
+v 0.266000 -0.478988 -0.025039
+v 0.266000 -0.478988 0.025039
+v 0.226000 -0.478988 0.025039
+v 0.266000 -0.398988 -0.025039
+v 0.236000 -0.448988 0.075118
+v 0.256000 -0.448988 0.075118
+v 0.236000 -0.468988 0.075118
+v 0.256000 -0.468988 0.075118
+v 0.256000 -0.468988 -0.075118
+v 0.256000 -0.448988 -0.075118
+v 0.236000 -0.468988 -0.075118
+v 0.236000 -0.448988 -0.075118
+v 0.246440 -0.419430 0.075117
+v 0.246440 -0.419430 0.114675
+v 0.274412 -0.431016 0.075117
+v 0.274412 -0.431016 0.114675
+v 0.285998 -0.458988 0.075117
+v 0.285998 -0.458988 0.114675
+v 0.274412 -0.486960 0.075117
+v 0.274412 -0.486960 0.114675
+v 0.246440 -0.498546 0.075117
+v 0.246440 -0.498546 0.114675
+v 0.218469 -0.486960 0.075117
+v 0.218469 -0.486960 0.114675
+v 0.206882 -0.458988 0.075117
+v 0.206882 -0.458988 0.114675
+v 0.218469 -0.431016 0.075117
+v 0.218469 -0.431016 0.114675
+v 0.246440 -0.458988 0.114675
+v 0.246440 -0.458988 0.075117
+v -0.208442 -0.458988 -0.114677
+v -0.208442 -0.458988 -0.075119
+v -0.220028 -0.486960 -0.114677
+v -0.220028 -0.486960 -0.075119
+v -0.248000 -0.498546 -0.114677
+v -0.248000 -0.498546 -0.075119
+v -0.275972 -0.486960 -0.114677
+v -0.275972 -0.486960 -0.075119
+v -0.287558 -0.458988 -0.114677
+v -0.287558 -0.458988 -0.075119
+v -0.275972 -0.431016 -0.114677
+v -0.275972 -0.431016 -0.075119
+v -0.248000 -0.458988 -0.075119
+v -0.248000 -0.458988 -0.114677
+v 0.246440 -0.419430 -0.114677
+v 0.246440 -0.419430 -0.075119
+v 0.274412 -0.431016 -0.114677
+v 0.274412 -0.431016 -0.075119
+v 0.285998 -0.458988 -0.114677
+v 0.285998 -0.458988 -0.075119
+v 0.274412 -0.486960 -0.114677
+v 0.274412 -0.486960 -0.075119
+v 0.246440 -0.498546 -0.114677
+v 0.246440 -0.498546 -0.075119
+v 0.218469 -0.486960 -0.114677
+v 0.218469 -0.486960 -0.075119
+v 0.206882 -0.458988 -0.114677
+v 0.206882 -0.458988 -0.075119
+v 0.218469 -0.431016 -0.114677
+v 0.218469 -0.431016 -0.075119
+v 0.246440 -0.458988 -0.075119
+v 0.246440 -0.458988 -0.114677
+vt 0.796875 0.117365
+vt 0.796875 0.070135
+vt 0.844419 0.070135
+vt 0.844419 0.117365
+vt 0.891963 0.070135
+vt 0.891963 0.117365
+vt 0.939506 0.070135
+vt 0.939506 0.117365
+vt 0.575380 0.137588
+vt 0.531250 0.155747
+vt 0.531250 0.093750
+vt 0.987051 0.070135
+vt 0.987051 0.117365
+vt 0.606700 0.117365
+vt 0.606700 0.070135
+vt 0.654243 0.070135
+vt 0.654243 0.117365
+vt 0.701787 0.070135
+vt 0.701787 0.117365
+vt 0.531250 0.155747
+vt 0.487120 0.137588
+vt 0.531250 0.093750
+vt 0.749331 0.117365
+vt 0.749331 0.070135
+vt 0.468841 0.093750
+vt 0.487120 0.049912
+vt 0.531250 0.031753
+vt 0.575380 0.049912
+vt 0.593659 0.093750
+vt 0.531250 0.031753
+vt 0.023066 0.359375
+vt 0.023066 0.336812
+vt 0.103996 0.298090
+vt 0.103996 0.320653
+vt 0.976210 0.937124
+vt 0.976210 0.748196
+vt 0.998848 0.748196
+vt 0.998848 0.937124
+vt 0.103996 0.700946
+vt 0.103996 0.984375
+vt 0.023066 0.937137
+vt 0.023066 0.748185
+vt 0.021537 0.433946
+vt 0.102525 0.386359
+vt 0.102525 0.671875
+vt 0.021537 0.624289
+vt 0.103996 0.235590
+vt 0.023066 0.274312
+vt 0.023066 0.296875
+vt 0.103996 0.258153
+vt 0.022638 0.937116
+vt 0.000000 0.937116
+vt 0.000000 0.748188
+vt 0.022638 0.748188
+vt 0.875027 0.700946
+vt 0.875027 0.984375
+vt 0.875027 0.320653
+vt 0.875027 0.298090
+vt 0.071147 0.049179
+vt 0.071147 0.007812
+vt 0.126667 0.007812
+vt 0.126667 0.049179
+vt 0.875027 0.235590
+vt 0.875027 0.258153
+vt 0.874107 0.386359
+vt 0.874107 0.671875
+vt 0.975791 0.433946
+vt 0.975791 0.624289
+vt 0.976638 0.289763
+vt 0.976638 0.267199
+vt 0.976638 0.748185
+vt 0.976638 0.937137
+vt 0.976638 0.329699
+vt 0.976638 0.352263
+vt 0.270229 0.015126
+vt 0.325826 0.015126
+vt 0.325826 0.070356
+vt 0.270229 0.070356
+vt 0.233222 0.015126
+vt 0.233222 0.070356
+vt 0.362833 0.015126
+vt 0.418430 0.015126
+vt 0.418430 0.070356
+vt 0.362833 0.070356
+vt 0.126667 0.090545
+vt 0.071147 0.090545
+vt 0.126667 0.131911
+vt 0.071147 0.131911
+vt 0.182189 0.142252
+vt 0.182189 0.162935
+vt 0.126667 0.173277
+vt 0.015625 0.121569
+vt 0.015625 0.100886
+vt 0.182189 0.018154
+vt 0.182189 0.038837
+vt 0.015625 0.080203
+vt 0.015625 0.059520
+vt 0.182189 0.059520
+vt 0.182189 0.080203
+vt 0.015625 0.038837
+vt 0.015625 0.018154
+vt 0.182189 0.100886
+vt 0.182189 0.121569
+vt 0.015625 0.162935
+vt 0.015625 0.142253
+vt 0.071147 0.173277
+vn 0.382700 0.923900 0.000000
+vn 0.923900 0.382700 0.000000
+vn 0.923900 -0.382700 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.382700 -0.923900 0.000000
+vn -0.382700 -0.923900 0.000000
+vn -0.923900 -0.382700 0.000000
+vn 0.000000 0.000000 -1.000000
+vn -0.382700 0.923900 0.000000
+vn -0.923900 0.382700 0.000000
+vn -0.516300 0.751200 0.411200
+vn -0.809200 -0.433700 0.396300
+vn -0.281900 -0.673300 0.683500
+vn -0.125700 0.610300 0.782100
+vn 0.758700 -0.488800 0.430500
+vn 0.758700 -0.488800 -0.430500
+vn 0.563900 0.702700 -0.433700
+vn 0.563900 0.702700 0.433700
+vn -0.125700 0.610300 -0.782100
+vn -0.516300 0.751200 -0.411200
+vn -0.809200 -0.433700 -0.396300
+vn -0.281900 -0.673300 -0.683500
+vn 0.103900 0.631900 0.768000
+vn 0.103900 0.631900 -0.768000
+vn 0.227100 -0.679100 0.698000
+vn -0.701100 -0.701100 -0.129500
+vn 0.701100 -0.701100 -0.129500
+vn 0.701100 -0.701100 0.129500
+vn -0.701100 -0.701100 0.129500
+vn 0.227100 -0.679100 -0.698000
+vn -0.873300 0.262600 -0.410200
+vn -0.873300 0.262600 0.410200
+vn -0.707100 -0.000000 0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.873300 0.262600 -0.410200
+vn 0.707100 0.000000 -0.707100
+vn 0.873300 0.262600 0.410200
+vn 0.707100 -0.000000 0.707100
+vn -0.680500 0.680500 0.271800
+vn 0.680500 0.680500 0.271800
+vn -0.680500 -0.680500 0.271800
+vn 0.680500 -0.680500 0.271800
+vn 0.680500 -0.680500 -0.271800
+vn 0.680500 0.680500 -0.271800
+vn -0.680500 -0.680500 -0.271800
+vn -0.680500 0.680500 -0.271800
+s off
+f 45/1/1 46/2/1 48/3/1 47/4/1
+f 47/4/2 48/3/2 50/5/2 49/6/2
+f 49/6/3 50/5/3 52/7/3 51/8/3
+f 48/9/4 46/10/4 61/11/4
+f 51/8/5 52/7/5 54/12/5 53/13/5
+f 53/14/6 54/15/6 56/16/6 55/17/6
+f 55/17/7 56/16/7 58/18/7 57/19/7
+f 45/20/8 47/21/8 62/22/8
+f 59/23/9 60/24/9 46/2/9 45/1/9
+f 57/19/10 58/18/10 60/24/10 59/23/10
+f 46/10/4 60/21/4 61/11/4
+f 60/21/4 58/25/4 61/11/4
+f 58/25/4 56/26/4 61/11/4
+f 56/26/4 54/27/4 61/11/4
+f 54/27/4 52/28/4 61/11/4
+f 52/28/4 50/29/4 61/11/4
+f 50/29/4 48/9/4 61/11/4
+f 47/21/8 49/25/8 62/22/8
+f 49/25/8 51/26/8 62/22/8
+f 51/26/8 53/30/8 62/22/8
+f 53/30/8 55/28/8 62/22/8
+f 55/28/8 57/29/8 62/22/8
+f 57/29/8 59/9/8 62/22/8
+f 59/9/8 45/20/8 62/22/8
+f 79/1/1 80/2/1 82/3/1 81/4/1
+f 81/4/2 82/3/2 84/5/2 83/6/2
+f 83/6/3 84/5/3 86/7/3 85/8/3
+f 82/9/4 80/10/4 95/11/4
+f 85/8/5 86/7/5 88/12/5 87/13/5
+f 87/14/6 88/15/6 90/16/6 89/17/6
+f 89/17/7 90/16/7 92/18/7 91/19/7
+f 79/20/8 81/21/8 96/22/8
+f 93/23/9 94/24/9 80/2/9 79/1/9
+f 91/19/10 92/18/10 94/24/10 93/23/10
+f 80/10/4 94/21/4 95/11/4
+f 94/21/4 92/25/4 95/11/4
+f 92/25/4 90/26/4 95/11/4
+f 90/26/4 88/27/4 95/11/4
+f 88/27/4 86/28/4 95/11/4
+f 86/28/4 84/29/4 95/11/4
+f 84/29/4 82/9/4 95/11/4
+f 81/21/8 83/25/8 96/22/8
+f 83/25/8 85/26/8 96/22/8
+f 85/26/8 87/30/8 96/22/8
+f 87/30/8 89/28/8 96/22/8
+f 89/28/8 91/29/8 96/22/8
+f 91/29/8 93/9/8 96/22/8
+f 93/9/8 79/20/8 96/22/8
+f 24/1/1 23/2/1 21/3/1 22/4/1
+f 22/4/2 21/3/2 98/5/2 97/6/2
+f 97/6/3 98/5/3 100/7/3 99/8/3
+f 21/9/4 23/10/4 109/11/4
+f 99/8/5 100/7/5 102/12/5 101/13/5
+f 101/14/6 102/15/6 104/16/6 103/17/6
+f 103/17/7 104/16/7 106/18/7 105/19/7
+f 24/20/8 22/21/8 110/22/8
+f 107/23/9 108/24/9 23/2/9 24/1/9
+f 105/19/10 106/18/10 108/24/10 107/23/10
+f 23/10/4 108/21/4 109/11/4
+f 108/21/4 106/25/4 109/11/4
+f 106/25/4 104/26/4 109/11/4
+f 104/26/4 102/27/4 109/11/4
+f 102/27/4 100/28/4 109/11/4
+f 100/28/4 98/29/4 109/11/4
+f 98/29/4 21/9/4 109/11/4
+f 22/21/8 97/25/8 110/22/8
+f 97/25/8 99/26/8 110/22/8
+f 99/26/8 101/30/8 110/22/8
+f 101/30/8 103/28/8 110/22/8
+f 103/28/8 105/29/8 110/22/8
+f 105/29/8 107/9/8 110/22/8
+f 107/9/8 24/20/8 110/22/8
+f 111/1/1 112/2/1 114/3/1 113/4/1
+f 113/4/2 114/3/2 116/5/2 115/6/2
+f 115/6/3 116/5/3 118/7/3 117/8/3
+f 114/9/4 112/10/4 127/11/4
+f 117/8/5 118/7/5 120/12/5 119/13/5
+f 119/14/6 120/15/6 122/16/6 121/17/6
+f 121/17/7 122/16/7 124/18/7 123/19/7
+f 111/20/8 113/21/8 128/22/8
+f 125/23/9 126/24/9 112/2/9 111/1/9
+f 123/19/10 124/18/10 126/24/10 125/23/10
+f 112/10/4 126/21/4 127/11/4
+f 126/21/4 124/25/4 127/11/4
+f 124/25/4 122/26/4 127/11/4
+f 122/26/4 120/27/4 127/11/4
+f 120/27/4 118/28/4 127/11/4
+f 118/28/4 116/29/4 127/11/4
+f 116/29/4 114/9/4 127/11/4
+f 113/21/8 115/25/8 128/22/8
+f 115/25/8 117/26/8 128/22/8
+f 117/26/8 119/30/8 128/22/8
+f 119/30/8 121/28/8 128/22/8
+f 121/28/8 123/29/8 128/22/8
+f 123/29/8 125/9/8 128/22/8
+f 125/9/8 111/20/8 128/22/8
+s 1
+f 1/31/11 2/32/12 3/33/13 4/34/14
+f 11/35/15 5/36/16 6/37/17 12/38/18
+f 4/39/14 7/40/19 8/41/20 1/42/11
+f 9/43/21 10/44/22 3/45/13 2/46/12
+f 10/47/22 9/48/21 8/49/20 7/50/19
+f 2/51/12 1/52/11 8/53/20 9/54/21
+f 26/55/23 28/56/24 7/40/19 4/39/14
+f 26/57/23 4/34/14 3/33/13 25/58/25
+f 16/59/26 17/60/27 18/61/28 19/62/29
+f 27/63/30 10/47/22 7/50/19 28/64/24
+f 27/65/30 25/66/25 3/45/13 10/44/22
+f 27/65/30 5/67/16 11/68/15 25/66/25
+f 6/69/17 5/70/16 27/63/30 28/64/24
+f 12/71/18 6/72/17 28/56/24 26/55/23
+f 11/73/15 12/74/18 26/57/23 25/58/25
+f 29/75/31 30/76/32 13/77/33 14/78/34
+f 31/79/35 29/75/31 14/78/34 20/80/36
+f 32/81/37 31/82/35 20/83/36 15/84/38
+f 30/76/32 32/81/37 15/84/38 13/77/33
+f 18/59/28 17/62/27 31/85/35 32/86/37
+f 16/87/26 19/88/29 30/86/32 29/85/31
+f 37/89/39 38/90/40 32/91/37 30/87/32
+f 39/92/41 37/93/39 30/86/32 19/88/29
+f 40/94/42 39/95/41 19/62/29 18/61/28
+f 38/96/40 40/97/42 18/59/28 32/86/37
+f 41/98/43 42/99/44 31/85/35 17/62/27
+f 43/100/45 41/101/43 17/60/27 16/59/26
+f 44/102/46 43/103/45 16/87/26 29/85/31
+f 42/104/44 44/105/46 29/88/31 31/106/35
+f 66/59/26 67/60/27 68/61/28 69/62/29
+f 74/94/42 73/95/41 69/62/29 68/61/28
+f 77/100/45 75/101/43 67/60/27 66/59/26
+f 33/75/31 34/76/32 63/77/33 64/78/34
+f 35/79/35 33/75/31 64/78/34 70/80/36
+f 36/81/37 35/82/35 70/83/36 65/84/38
+f 34/76/32 36/81/37 65/84/38 63/77/33
+f 68/59/28 67/62/27 35/85/35 36/86/37
+f 66/87/26 69/88/29 34/86/32 33/85/31
+f 71/89/39 72/90/40 36/91/37 34/87/32
+f 73/92/41 71/93/39 34/86/32 69/88/29
+f 72/96/40 74/97/42 68/59/28 36/86/37
+f 75/98/43 76/99/44 35/85/35 67/62/27
+f 78/102/46 77/103/45 66/87/26 33/85/31
+f 76/104/44 78/105/46 33/88/31 35/106/35
diff --git a/homedecor_modpack/homedecor/models/homedecor_slope.obj b/homedecor_modpack/homedecor/models/homedecor_slope.obj
new file mode 100644
index 0000000..c3ab158
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_slope.obj
@@ -0,0 +1,26 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend'
+# www.blender.org
+o Cube_Cube.002
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 0.707100 -0.707100
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+g Cube_Cube.002_Cube_Cube.002_front-back-bottom
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/3/2 3/4/2 5/1/2 6/2/2
+f 2/1/3 1/2/3 6/3/3 5/4/3
+g Cube_Cube.002_Cube_Cube.002_sides
+f 2/1/4 5/3/4 3/4/4
+f 1/2/5 4/3/5 6/4/5
diff --git a/homedecor_modpack/homedecor/models/homedecor_slope_inner_corner.obj b/homedecor_modpack/homedecor/models/homedecor_slope_inner_corner.obj
new file mode 100644
index 0000000..6f273a4
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_slope_inner_corner.obj
@@ -0,0 +1,34 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_icorner_onetexture.blend'
+# www.blender.org
+o Cube_Cube.000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 1.000000 -0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.000000 -1.000000
+vn -0.000000 -1.000000 -0.000000
+vn -0.000000 -0.000000 1.000000
+vn -0.707100 0.707100 -0.000000
+g Cube_Cube.000_Cube_Cube.000_None
+s off
+f 6/1/1 1/2/1 7/3/1 8/4/1
+f 2/1/2 5/3/2 3/4/2
+f 2/1/3 1/2/3 5/4/3
+f 6/2/4 8/3/4 9/4/4
+f 9/1/5 8/2/5 7/3/5 3/4/5
+f 3/3/6 7/4/6 1/1/6 2/2/6
+f 1/1/7 6/2/7 9/3/7
+l 1 4
+l 3 4
diff --git a/homedecor_modpack/homedecor/models/homedecor_slope_outer_corner.obj b/homedecor_modpack/homedecor/models/homedecor_slope_outer_corner.obj
new file mode 100644
index 0000000..2408acf
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_slope_outer_corner.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend'
+# www.blender.org
+o Cube_Cube.002
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+g Cube_Cube.002_Cube_Cube.002_None
+s off
+f 3/1/1 2/2/1 4/3/1 5/4/1
+f 1/2/2 3/3/2 5/4/2
+f 1/1/3 2/3/3 3/4/3
+f 1/1/4 4/3/4 2/4/4
+f 1/2/5 5/3/5 4/4/5
diff --git a/homedecor_modpack/homedecor/models/homedecor_small_rug.obj b/homedecor_modpack/homedecor/models/homedecor_small_rug.obj
new file mode 100644
index 0000000..16c689f
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_small_rug.obj
@@ -0,0 +1,241 @@
+# Blender v2.73 (sub 0) OBJ File: 'small-rug.blend'
+# www.blender.org
+o Cylinder
+v -0.000000 -0.437500 0.000000
+v 0.323112 -0.437500 0.405968
+v -0.491090 -0.449921 -0.245545
+v -0.491090 -0.500000 0.245545
+v 0.245545 -0.449921 -0.491090
+v -0.245545 -0.500000 -0.491090
+v 0.491090 -0.449921 0.245545
+v 0.491090 -0.500000 -0.245545
+v -0.245545 -0.449921 0.491090
+v 0.245545 -0.500000 0.491090
+v -0.491090 -0.449921 0.245545
+v -0.491090 -0.500000 -0.245545
+v -0.245545 -0.449921 -0.491090
+v 0.245545 -0.500000 -0.491090
+v 0.491090 -0.449921 -0.245545
+v 0.491090 -0.500000 0.245545
+v 0.245545 -0.449921 0.491090
+v -0.245545 -0.500000 0.491090
+v -0.451076 -0.449921 -0.359013
+v -0.451076 -0.500000 0.359013
+v 0.359013 -0.449921 -0.451076
+v -0.359013 -0.500000 -0.451076
+v 0.451076 -0.449921 0.359013
+v 0.451076 -0.500000 -0.359013
+v -0.359013 -0.449921 0.451076
+v 0.359013 -0.500000 0.451076
+v 0.405968 -0.437500 -0.323112
+v -0.323112 -0.437500 -0.405968
+v -0.405968 -0.437500 0.323112
+v -0.323112 -0.437500 0.405968
+v 0.405968 -0.437500 0.323112
+v 0.323112 -0.437500 -0.405968
+v -0.405968 -0.437500 -0.323112
+v 0.220990 -0.437500 0.441981
+v 0.441981 -0.437500 -0.220990
+v -0.220990 -0.437500 -0.441981
+v -0.441981 -0.437500 0.220990
+v -0.220990 -0.437500 0.441981
+v 0.441981 -0.437500 0.220990
+v 0.220990 -0.437500 -0.441981
+v -0.441981 -0.437500 -0.220990
+v -0.000000 -0.500000 -0.000000
+v -0.451076 -0.449921 0.359013
+v -0.451076 -0.500000 -0.359013
+v -0.359013 -0.449921 -0.451076
+v 0.359013 -0.500000 -0.451076
+v 0.451076 -0.449921 -0.359013
+v 0.451076 -0.500000 0.359013
+v 0.359013 -0.449921 0.451076
+v -0.359013 -0.500000 0.451076
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.125000
+vt 0.875000 1.000000
+vt 0.750000 1.000000
+vt 0.750000 0.937500
+vt 0.875000 0.937500
+vt 0.125000 0.000000
+vt 0.250000 0.000000
+vt 0.250000 0.062500
+vt 0.125000 0.062500
+vt 0.865527 0.959260
+vt 0.725000 0.950000
+vt 0.828974 0.913334
+vt 0.000000 0.750000
+vt 0.000000 0.625000
+vt 0.062500 0.625000
+vt 0.062500 0.750000
+vt 0.375000 0.000000
+vt 0.375000 0.062500
+vt 1.000000 0.375000
+vt 0.937500 0.375000
+vt 0.625000 1.000000
+vt 0.625000 0.937500
+vt -0.000000 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.687500
+vt -0.000000 0.687500
+vt 0.040740 0.134473
+vt 0.134473 0.040740
+vt 0.171026 0.086666
+vt 0.086666 0.171026
+vt 0.875000 0.000000
+vt 0.875000 0.062500
+vt 1.000000 0.875000
+vt 0.937500 0.875000
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 1.000000 0.000000
+vt 1.000000 0.062500
+vt -0.000000 0.000000
+vt 0.062500 0.000000
+vt 0.000000 0.875000
+vt 0.062500 0.875000
+vt 0.040740 0.865527
+vt 0.050000 0.725000
+vt 0.086666 0.828974
+vt 0.750000 0.000000
+vt 0.725000 0.050000
+vt 0.275000 0.050000
+vt 1.000000 0.750000
+vt 0.950000 0.725000
+vt 0.950000 0.275000
+vt 0.250000 1.000000
+vt 0.275000 0.950000
+vt 0.000000 0.250000
+vt 0.050000 0.275000
+vt 0.865527 0.040740
+vt 0.828974 0.086666
+vt 0.959260 0.865527
+vt 0.913334 0.828974
+vt 0.134473 0.959260
+vt 0.171026 0.913334
+vt 0.959260 0.134473
+vt 0.913334 0.171026
+vt 0.500000 0.500000
+vn 0.432600 0.587800 -0.683600
+vn 0.683600 0.587800 -0.432600
+vn 0.635200 -0.660500 -0.400200
+vn 0.400200 -0.660500 -0.635200
+vn 0.683600 0.587800 0.432600
+vn 0.432600 0.587800 0.683600
+vn 0.400200 -0.660500 0.635200
+vn 0.635200 -0.660500 0.400200
+vn -0.683600 0.587800 -0.432600
+vn -0.432600 0.587800 -0.683600
+vn -0.400200 -0.660500 -0.635200
+vn -0.635200 -0.660500 -0.400200
+vn 0.139800 0.590500 -0.794800
+vn 0.017200 0.991500 -0.128400
+vn 0.062900 0.992600 -0.104200
+vn -0.683600 0.587800 0.432600
+vn -0.794800 0.590500 0.139800
+vn -0.730800 -0.671000 0.125100
+vn -0.635200 -0.660500 0.400200
+vn -0.139800 0.590500 -0.794800
+vn -0.125100 -0.671000 -0.730800
+vn 0.794800 0.590500 -0.139800
+vn 0.730800 -0.671000 -0.125100
+vn 0.139800 0.590500 0.794800
+vn 0.125100 -0.671000 0.730800
+vn -0.794800 0.590500 -0.139800
+vn -0.730800 -0.671000 -0.125100
+vn -0.432600 0.587800 0.683600
+vn -0.062900 0.992600 0.104200
+vn -0.104200 0.992600 0.062900
+vn 0.125100 -0.671000 -0.730800
+vn 0.794800 0.590500 0.139800
+vn 0.730800 -0.671000 0.125100
+vn -0.139800 0.590500 0.794800
+vn -0.125100 -0.671000 0.730800
+vn -0.400200 -0.660500 0.635200
+vn -0.128400 0.991500 -0.017200
+vn -0.104200 0.992600 -0.062900
+vn 0.017200 0.991500 0.128400
+vn -0.017200 0.991500 0.128400
+vn 0.128400 0.991500 -0.017200
+vn 0.128400 0.991500 0.017200
+vn -0.017200 0.991500 -0.128400
+vn -0.128400 0.991500 0.017200
+vn 0.062900 0.992600 0.104200
+vn 0.104200 0.992600 -0.062900
+vn -0.062900 0.992600 -0.104200
+vn 0.104200 0.992600 0.062900
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_top-sides
+s 1
+f 21/1/1 47/2/2 24/3/3 46/4/4
+f 23/5/5 49/6/6 26/7/7 48/8/8
+f 19/9/9 45/10/10 22/11/11 44/12/12
+f 21/13/1 5/6/13 40/14/14 32/15/15
+f 43/16/16 11/17/17 4/18/18 20/19/19
+f 45/10/10 13/20/20 6/21/21 22/11/11
+f 47/2/2 15/22/22 8/23/23 24/3/3
+f 49/6/6 17/24/24 10/25/25 26/7/7
+f 3/26/26 12/27/27 4/28/18 11/29/17
+f 43/30/16 25/31/28 30/32/29 29/33/30
+f 5/34/13 14/35/31 6/21/21 13/20/20
+f 7/36/32 16/37/33 8/23/23 15/22/22
+f 17/24/24 9/38/34 18/39/35 10/25/25
+f 9/38/34 25/40/28 50/41/36 18/39/35
+f 7/36/32 23/42/5 48/43/8 16/37/33
+f 5/34/13 21/44/1 46/45/4 14/35/31
+f 3/26/26 19/46/9 44/47/12 12/27/27
+f 25/48/28 43/16/16 20/19/19 50/49/36
+f 19/50/9 3/16/26 41/51/37 33/52/38
+f 9/10/34 17/53/24 34/54/39 38/55/40
+f 7/2/32 15/56/22 35/57/41 39/58/42
+f 5/6/13 13/59/20 36/60/43 40/14/14
+f 3/16/26 11/61/17 37/62/44 41/51/37
+f 17/53/24 49/63/6 2/64/45 34/54/39
+f 15/56/22 47/65/2 27/66/46 35/57/41
+f 13/59/20 45/67/10 28/68/47 36/60/43
+f 49/63/6 23/69/5 31/70/48 2/64/45
+f 11/61/17 43/30/16 29/33/30 37/62/44
+f 25/31/28 9/10/34 38/55/40 30/32/29
+f 47/65/2 21/13/1 32/15/15 27/66/46
+f 23/69/5 7/2/32 39/58/42 31/70/48
+f 45/67/10 19/50/9 33/52/38 28/68/47
+f 30/32/29 38/55/40 1/71/49
+f 38/55/40 34/54/39 1/71/49
+f 34/54/39 2/64/45 1/71/49
+f 2/64/45 31/70/48 1/71/49
+f 31/70/48 39/58/42 1/71/49
+f 39/58/42 35/57/41 1/71/49
+f 35/57/41 27/66/46 1/71/49
+f 27/66/46 32/15/15 1/71/49
+f 32/15/15 40/14/14 1/71/49
+f 40/14/14 36/60/43 1/71/49
+f 36/60/43 28/68/47 1/71/49
+f 28/68/47 33/52/38 1/71/49
+f 33/52/38 41/51/37 1/71/49
+f 41/51/37 37/62/44 1/71/49
+f 37/62/44 29/33/30 1/71/49
+f 29/33/30 30/32/29 1/71/49
+g Cylinder_Cylinder_bottom
+f 22/31/11 6/10/21 42/71/50
+f 4/16/18 12/61/27 42/71/50
+f 12/61/27 44/30/12 42/71/50
+f 44/30/12 22/31/11 42/71/50
+f 14/53/31 46/63/4 42/71/50
+f 46/63/4 24/69/3 42/71/50
+f 24/69/3 8/2/23 42/71/50
+f 8/2/23 16/56/33 42/71/50
+f 16/56/33 48/65/8 42/71/50
+f 48/65/8 26/13/7 42/71/50
+f 26/13/7 10/6/25 42/71/50
+f 20/50/19 4/16/18 42/71/50
+f 6/10/21 14/53/31 42/71/50
+f 10/6/25 18/59/35 42/71/50
+f 18/59/35 50/67/36 42/71/50
+f 50/67/36 20/50/19 42/71/50
diff --git a/homedecor_modpack/homedecor/models/homedecor_soda_machine.obj b/homedecor_modpack/homedecor/models/homedecor_soda_machine.obj
new file mode 100644
index 0000000..66d651f
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_soda_machine.obj
@@ -0,0 +1,34 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib vending_machine.mtl
+o Cube
+v 0.499998 -0.499998 -0.499998
+v 0.499998 -0.499998 0.499998
+v -0.499998 -0.499998 0.499998
+v -0.499998 -0.499998 -0.499998
+v 0.499998 1.499994 -0.499998
+v 0.499998 1.499994 0.499998
+v -0.499998 1.499994 0.499998
+v -0.499998 1.499994 -0.499998
+vt 0.250050 0.250050
+vt 0.000100 0.250050
+vt 0.000100 0.000100
+vt 0.250050 0.000100
+vt 0.250050 0.749950
+vt 0.250050 0.999900
+vt 0.000100 0.999900
+vt 0.000100 0.749950
+vt 0.999900 0.250049
+vt 0.999900 0.749949
+vt 0.749950 0.749950
+vt 0.749950 0.250050
+vt 0.500000 0.749950
+vt 0.500000 0.250050
+usemtl Material
+s off
+f 1/1 2/2 3/3 4/4
+f 5/5 8/6 7/7 6/8
+f 1/1 5/5 6/8 2/2
+f 2/9 6/10 7/11 3/12
+f 3/12 7/11 8/13 4/14
+f 5/5 1/1 4/14 8/13
diff --git a/homedecor_modpack/homedecor/models/homedecor_speaker_large.obj b/homedecor_modpack/homedecor/models/homedecor_speaker_large.obj
new file mode 100644
index 0000000..80436cd
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_speaker_large.obj
@@ -0,0 +1,60 @@
+# Blender v2.73 (sub 0) OBJ File: 'speaker.blend'
+# www.blender.org
+o Cube
+v 0.437500 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.437500 -0.500000 -0.500000
+v 0.437500 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.437500 0.500000 -0.500000
+v 0.500000 -0.500000 -0.437500
+v -0.500000 -0.500000 -0.437500
+v 0.500000 0.500000 -0.437500
+v -0.500000 0.500000 -0.437500
+v -0.000000 0.500000 -0.466846
+v 0.000000 -0.500000 -0.466846
+vt 0.000000 0.937500
+vt 0.000000 -0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.937500 -0.000000
+vt 0.937500 1.000000
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+vt 1.000000 0.061472
+vt 0.500000 0.032609
+vt 0.500000 0.967391
+vt 0.000010 0.938528
+vt 0.999990 0.938528
+vt 0.000000 0.061472
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn -1.000000 -0.000000 -0.000000
+vn -0.707100 -0.000000 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn 0.707100 0.000000 -0.707100
+g Cube_Cube_speaker-wood
+s off
+f 9/1/1 2/2/1 3/3/1 10/4/1
+f 11/4/2 12/1/2 7/2/2 6/3/2
+f 9/4/3 11/1/3 6/2/3 2/3/3
+f 2/5/4 6/6/4 7/2/4 3/3/4
+f 3/2/5 7/3/5 12/4/5 10/1/5
+g Cube_Cube_cloth
+f 10/7/6 12/3/6 8/5/6 4/8/6
+f 5/9/7 1/7/7 4/8/7 8/10/7
+f 1/2/8 5/9/8 11/10/8 9/6/8
+f 1/7/1 9/11/1 14/12/1
+f 5/8/2 8/10/2 13/13/2
+f 8/10/2 12/14/2 13/13/2
+f 12/14/2 11/15/2 13/13/2
+f 11/15/2 5/8/2 13/13/2
+f 9/11/1 10/16/1 14/12/1
+f 10/16/1 4/9/1 14/12/1
+f 4/9/1 1/7/1 14/12/1
diff --git a/homedecor_modpack/homedecor/models/homedecor_speaker_large_open.obj b/homedecor_modpack/homedecor/models/homedecor_speaker_large_open.obj
new file mode 100644
index 0000000..7278f8b
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_speaker_large_open.obj
@@ -0,0 +1,473 @@
+# Blender v2.73 (sub 0) OBJ File: 'speaker-large-open.blend'
+# www.blender.org
+o Cube
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v 0.500000 -0.500000 -0.437500
+v -0.500000 -0.500000 -0.437500
+v 0.500000 0.500000 -0.437500
+v -0.500000 0.500000 -0.437500
+v -0.000000 0.375000 -0.437500
+v -0.143506 0.346455 -0.437500
+v -0.265165 0.265165 -0.437500
+v -0.346455 0.143506 -0.437500
+v -0.375000 -0.000000 -0.437500
+v -0.346455 -0.143506 -0.437500
+v -0.265165 -0.265165 -0.437500
+v -0.143506 -0.346455 -0.437500
+v -0.000000 -0.375000 -0.437500
+v 0.143506 -0.346455 -0.437500
+v 0.265165 -0.265165 -0.437500
+v 0.346455 -0.143506 -0.437500
+v 0.375000 0.000000 -0.437500
+v 0.346455 0.143506 -0.437500
+v 0.265165 0.265165 -0.437500
+v 0.143506 0.346455 -0.437500
+v -0.000000 0.312499 -0.437500
+v -0.119588 0.288712 -0.437500
+v -0.220970 0.220970 -0.437500
+v -0.288712 0.119588 -0.437500
+v -0.312499 -0.000000 -0.437500
+v -0.288712 -0.119588 -0.437500
+v -0.220970 -0.220970 -0.437500
+v -0.119588 -0.288712 -0.437500
+v -0.000000 -0.312499 -0.437500
+v 0.119588 -0.288712 -0.437500
+v 0.220970 -0.220971 -0.437500
+v 0.288712 -0.119588 -0.437500
+v 0.312499 0.000000 -0.437500
+v 0.288712 0.119588 -0.437500
+v 0.220970 0.220971 -0.437500
+v 0.119588 0.288712 -0.437500
+v -0.000000 0.062500 -0.250000
+v -0.023918 0.057742 -0.250000
+v -0.044194 0.044194 -0.250000
+v 0.057742 -0.023918 -0.250000
+v 0.062500 0.000000 -0.250000
+v 0.057742 0.023918 -0.250000
+v 0.044194 0.044194 -0.250000
+v 0.023918 0.057742 -0.250000
+v -0.062500 0.000000 -0.250000
+v -0.057742 0.000000 -0.273918
+v -0.044194 0.000000 -0.294194
+v -0.023918 0.000000 -0.307742
+v -0.000000 0.000000 -0.312500
+v -0.057742 0.023918 -0.250000
+v -0.053347 0.022097 -0.273918
+v -0.040830 0.016912 -0.294194
+v -0.022097 0.009153 -0.307742
+v -0.040830 0.040830 -0.273918
+v -0.031250 0.031250 -0.294194
+v -0.016912 0.016912 -0.307742
+v -0.022097 0.053347 -0.273918
+v -0.016912 0.040830 -0.294194
+v -0.009153 0.022097 -0.307742
+v -0.000000 0.057742 -0.273918
+v -0.000000 0.044194 -0.294194
+v -0.000000 0.023918 -0.307742
+v 0.022097 0.053347 -0.273918
+v 0.016912 0.040830 -0.294194
+v 0.009153 0.022097 -0.307742
+v 0.040830 0.040830 -0.273918
+v 0.031250 0.031250 -0.294194
+v 0.016912 0.016912 -0.307742
+v 0.053347 0.022097 -0.273918
+v 0.040830 0.016912 -0.294194
+v 0.022097 0.009153 -0.307742
+v 0.057742 -0.000000 -0.273918
+v 0.044194 -0.000000 -0.294194
+v 0.023918 -0.000000 -0.307742
+v 0.053347 -0.022097 -0.273918
+v 0.040830 -0.016912 -0.294194
+v 0.022097 -0.009153 -0.307742
+v 0.044194 -0.044194 -0.250000
+v 0.040830 -0.040830 -0.273918
+v 0.031250 -0.031250 -0.294194
+v 0.016912 -0.016912 -0.307742
+v 0.023918 -0.057742 -0.250000
+v 0.022097 -0.053347 -0.273918
+v 0.016912 -0.040830 -0.294194
+v 0.009153 -0.022097 -0.307742
+v -0.000000 -0.062500 -0.250000
+v -0.000000 -0.057742 -0.273918
+v -0.000000 -0.044194 -0.294194
+v -0.000000 -0.023918 -0.307742
+v -0.023918 -0.057742 -0.250000
+v -0.022097 -0.053347 -0.273918
+v -0.016912 -0.040830 -0.294194
+v -0.009153 -0.022097 -0.307742
+v -0.044194 -0.044194 -0.250000
+v -0.040830 -0.040830 -0.273918
+v -0.031250 -0.031250 -0.294194
+v -0.016912 -0.016912 -0.307742
+v -0.057742 -0.023918 -0.250000
+v -0.053347 -0.022097 -0.273918
+v -0.040830 -0.016912 -0.294194
+v -0.022097 -0.009153 -0.307742
+vt 0.000000 0.937500
+vt 0.000000 -0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.193106 0.975742
+vt 0.288621 0.745148
+vt 0.312500 0.749898
+vt 0.312500 0.999491
+vt 0.024258 0.806894
+vt 0.254852 0.711379
+vt 0.268378 0.731622
+vt 0.091889 0.908111
+vt 0.336379 0.745148
+vt 0.431894 0.975742
+vt 0.024258 0.568106
+vt 0.254852 0.663621
+vt 0.250102 0.687500
+vt 0.000509 0.687500
+vt 0.356622 0.731622
+vt 0.533111 0.908111
+vt 0.860258 0.687500
+vt 0.900745 0.687500
+vt 0.894028 0.721270
+vt 0.856623 0.705776
+vt 0.927797 0.687500
+vt 0.919020 0.731622
+vt 0.937296 0.687500
+vt 0.927797 0.735258
+vt 0.874898 0.749898
+vt 0.846270 0.721270
+vt 0.894028 0.769027
+vt 0.846270 0.769027
+vt 0.830777 0.731622
+vt 0.856623 0.794021
+vt 0.812500 0.775745
+vt 0.812500 0.735258
+vt 0.812500 0.802797
+vt 0.778730 0.769027
+vt 0.794224 0.731622
+vt 0.768378 0.794021
+vt 0.750102 0.749898
+vt 0.778730 0.721270
+vt 0.730973 0.769027
+vt 0.730973 0.721270
+vt 0.768378 0.705776
+vt 0.705980 0.731622
+vt 0.724256 0.687500
+vt 0.764743 0.687500
+vt 0.697203 0.687500
+vt 0.730973 0.653730
+vt 0.768378 0.669224
+vt 0.705980 0.643378
+vt 0.750102 0.625102
+vt 0.778730 0.653730
+vt 0.730973 0.605973
+vt 0.778730 0.605973
+vt 0.794224 0.643378
+vt 0.768378 0.580980
+vt 0.724256 0.599256
+vt 0.764743 0.572203
+vt 0.812500 0.599256
+vt 0.812500 0.639742
+vt 0.812500 0.572203
+vt 0.812500 0.562703
+vt 0.846270 0.605973
+vt 0.830777 0.643378
+vt 0.856623 0.580980
+vt 0.860258 0.572203
+vt 0.874898 0.625102
+vt 0.846270 0.653730
+vt 0.894028 0.605973
+vt 0.900745 0.599256
+vt 0.894028 0.653730
+vt 0.856623 0.669224
+vt 0.919020 0.643378
+vt 0.927797 0.639743
+vt 0.812500 0.687500
+vt 0.091889 0.466889
+vt 0.268378 0.643378
+vt 0.312500 0.375509
+vt 0.312500 0.625102
+vt 0.288621 0.629852
+vt 0.193106 0.399258
+vt 0.431894 0.399258
+vt 0.533111 0.466889
+vt 0.356622 0.643378
+vt 0.336379 0.629852
+vt 0.600742 0.568106
+vt 0.624491 0.687500
+vt 0.374898 0.687500
+vt 0.370149 0.663621
+vt 0.370149 0.711379
+vt 0.600742 0.806894
+vt 0.900745 0.775745
+vt 0.860258 0.802797
+vt 0.812500 0.812297
+vt 0.764743 0.802797
+vt 0.724256 0.775745
+vt 0.697203 0.735257
+vt 0.687703 0.687500
+vt 0.697203 0.639742
+vt 0.846455 0.356494
+vt 0.765165 0.234835
+vt 0.643506 0.153545
+vt 0.846455 0.643506
+vt 0.765165 0.765165
+vt 0.643506 0.846455
+vt 0.356494 0.846455
+vt 0.234835 0.765165
+vt 0.153545 0.643506
+vt 0.153545 0.356494
+vt 0.234835 0.234835
+vt 0.356494 0.153545
+vt 0.125000 0.500000
+vt 0.500000 0.125000
+vt 0.875000 0.500000
+vt 0.500000 0.875000
+vt 0.764905 0.764905
+vt 0.720754 0.720754
+vt 0.788429 0.619471
+vt 0.846115 0.643366
+vt 0.153885 0.643366
+vt 0.211572 0.619471
+vt 0.279247 0.720754
+vt 0.235095 0.764905
+vt 0.500000 0.874632
+vt 0.500000 0.812193
+vt 0.619471 0.788429
+vt 0.643366 0.846115
+vt 0.153885 0.356635
+vt 0.211572 0.380529
+vt 0.187807 0.500000
+vt 0.125368 0.500000
+vt 0.356635 0.153885
+vt 0.380529 0.211572
+vt 0.279246 0.279246
+vt 0.235095 0.235095
+vt 0.500000 0.125368
+vt 0.643366 0.153885
+vt 0.619471 0.211572
+vt 0.500000 0.187807
+vt 0.764905 0.235095
+vt 0.846115 0.356635
+vt 0.788429 0.380529
+vt 0.720754 0.279246
+vt 0.812193 0.500000
+vt 0.874632 0.500000
+vt 0.380529 0.788429
+vt 0.356635 0.846115
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn -1.000000 -0.000000 -0.000000
+vn -0.229600 -0.554300 -0.800000
+vn 0.099000 0.239100 -0.965900
+vn 0.000000 0.258800 -0.965900
+vn 0.000000 -0.600000 -0.800000
+vn -0.554300 -0.229600 -0.800000
+vn 0.239100 0.099000 -0.965900
+vn 0.183000 0.183000 -0.965900
+vn -0.424300 -0.424300 -0.800000
+vn -0.099000 0.239100 -0.965900
+vn 0.229600 -0.554300 -0.800000
+vn -0.554300 0.229600 -0.800000
+vn 0.239100 -0.099000 -0.965900
+vn 0.258800 0.000000 -0.965900
+vn -0.600000 -0.000000 -0.800000
+vn -0.183000 0.183000 -0.965900
+vn 0.424300 -0.424300 -0.800000
+vn -0.403100 0.000000 -0.915200
+vn -0.718800 0.000000 -0.695200
+vn -0.664100 0.275100 -0.695200
+vn -0.372400 0.154200 -0.915200
+vn -0.927300 0.000000 -0.374300
+vn -0.856700 0.354800 -0.374300
+vn -0.980800 -0.000000 -0.195100
+vn -0.239100 0.099000 -0.965900
+vn -0.508300 0.508300 -0.695200
+vn -0.285000 0.285000 -0.915200
+vn -0.655700 0.655700 -0.374300
+vn -0.275100 0.664100 -0.695200
+vn -0.154200 0.372400 -0.915200
+vn -0.354800 0.856700 -0.374300
+vn 0.000000 0.718800 -0.695200
+vn 0.000000 0.403100 -0.915200
+vn 0.000000 0.927300 -0.374300
+vn 0.275100 0.664100 -0.695200
+vn 0.154200 0.372400 -0.915200
+vn 0.354800 0.856700 -0.374300
+vn 0.508300 0.508300 -0.695200
+vn 0.285000 0.285000 -0.915200
+vn 0.655700 0.655700 -0.374300
+vn 0.664100 0.275100 -0.695200
+vn 0.372400 0.154200 -0.915200
+vn 0.856700 0.354800 -0.374300
+vn 0.718800 0.000000 -0.695200
+vn 0.403100 0.000000 -0.915200
+vn 0.927300 0.000000 -0.374300
+vn 0.664100 -0.275100 -0.695200
+vn 0.372400 -0.154200 -0.915200
+vn 0.856700 -0.354800 -0.374300
+vn 0.508300 -0.508300 -0.695200
+vn 0.285000 -0.285000 -0.915200
+vn 0.655700 -0.655700 -0.374300
+vn 0.275100 -0.664100 -0.695200
+vn 0.154200 -0.372400 -0.915200
+vn 0.354800 -0.856700 -0.374300
+vn 0.183000 -0.183000 -0.965900
+vn 0.375300 -0.906100 -0.195100
+vn 0.000000 -0.718800 -0.695200
+vn 0.000000 -0.403100 -0.915200
+vn 0.000000 -0.927300 -0.374300
+vn -0.000000 -0.980800 -0.195100
+vn -0.275100 -0.664100 -0.695200
+vn -0.154200 -0.372400 -0.915200
+vn -0.354800 -0.856700 -0.374300
+vn -0.375300 -0.906100 -0.195100
+vn -0.508300 -0.508300 -0.695200
+vn -0.285000 -0.285000 -0.915200
+vn -0.655700 -0.655700 -0.374300
+vn -0.693500 -0.693500 -0.195100
+vn -0.664100 -0.275100 -0.695200
+vn -0.372400 -0.154200 -0.915200
+vn -0.856700 -0.354800 -0.374300
+vn -0.906100 -0.375300 -0.195100
+vn 0.000000 0.000000 -1.000000
+vn -0.424300 0.424300 -0.800000
+vn 0.000000 0.600000 -0.800000
+vn -0.229600 0.554300 -0.800000
+vn 0.229600 0.554300 -0.800000
+vn 0.424300 0.424300 -0.800000
+vn 0.554300 0.229600 -0.800000
+vn 0.600000 0.000000 -0.800000
+vn 0.554300 -0.229600 -0.800000
+g Cube_Cube_speaker-wood
+s off
+f 5/1/1 1/2/1 2/3/1 6/4/1
+f 7/4/2 8/1/2 4/2/2 3/3/2
+f 5/4/3 7/1/3 3/2/3 1/3/3
+f 1/5/4 3/6/4 4/2/4 2/3/4
+f 2/2/5 4/3/5 8/4/5 6/1/5
+g Cube_Cube_speaker-driver
+s 1
+f 40/7/6 48/8/7 41/9/8 25/10/9
+f 38/11/10 46/12/11 47/13/12 39/14/13
+f 25/10/9 41/9/8 42/15/14 26/16/15
+f 36/17/16 44/18/17 45/19/18 37/20/19
+f 39/14/13 47/13/12 48/8/7 40/7/6
+f 26/16/15 42/15/14 43/21/20 27/22/21
+f 37/20/19 45/19/18 46/12/11 38/11/10
+f 52/23/22 51/24/23 56/25/24 57/26/25
+f 51/24/23 50/27/26 55/28/27 56/25/24
+f 50/27/26 49/29/28 54/30/29 55/28/27
+f 57/26/25 56/25/24 59/31/30 60/32/31
+f 56/25/24 55/28/27 58/33/32 59/31/30
+f 60/32/31 59/31/30 62/34/33 63/35/34
+f 59/31/30 58/33/32 61/36/35 62/34/33
+f 63/35/34 62/34/33 65/37/36 66/38/37
+f 62/34/33 61/36/35 64/39/38 65/37/36
+f 66/38/37 65/37/36 68/40/39 69/41/40
+f 65/37/36 64/39/38 67/42/41 68/40/39
+f 69/41/40 68/40/39 71/43/42 72/44/43
+f 68/40/39 67/42/41 70/45/44 71/43/42
+f 72/44/43 71/43/42 74/46/45 75/47/46
+f 71/43/42 70/45/44 73/48/47 74/46/45
+f 75/47/46 74/46/45 77/49/48 78/50/49
+f 74/46/45 73/48/47 76/51/50 77/49/48
+f 78/50/49 77/49/48 80/52/51 81/53/52
+f 77/49/48 76/51/50 79/54/53 80/52/51
+f 81/53/52 80/52/51 84/55/54 85/56/55
+f 80/52/51 79/54/53 83/57/56 84/55/54
+f 85/56/55 84/55/54 88/58/57 89/59/58
+f 84/55/54 83/57/56 87/60/59 88/58/57
+f 83/57/56 82/61/60 86/62/61 87/60/59
+f 89/59/58 88/58/57 92/63/62 93/64/63
+f 88/58/57 87/60/59 91/65/64 92/63/62
+f 87/60/59 86/62/61 90/66/65 91/65/64
+f 93/64/63 92/63/62 96/67/66 97/68/67
+f 92/63/62 91/65/64 95/69/68 96/67/66
+f 91/65/64 90/66/65 94/70/69 95/69/68
+f 97/68/67 96/67/66 100/71/70 101/72/71
+f 96/67/66 95/69/68 99/73/72 100/71/70
+f 95/69/68 94/70/69 98/74/73 99/73/72
+f 101/72/71 100/71/70 104/75/74 105/76/75
+f 100/71/70 99/73/72 103/77/76 104/75/74
+f 99/73/72 98/74/73 102/78/77 103/77/76
+f 53/79/78 52/23/22 57/26/25
+f 53/79/78 57/26/25 60/32/31
+f 53/79/78 60/32/31 63/35/34
+f 53/79/78 63/35/34 66/38/37
+f 53/79/78 66/38/37 69/41/40
+f 53/79/78 69/41/40 72/44/43
+f 53/79/78 72/44/43 75/47/46
+f 53/79/78 75/47/46 78/50/49
+f 53/79/78 78/50/49 81/53/52
+f 53/79/78 81/53/52 85/56/55
+f 53/79/78 85/56/55 89/59/58
+f 53/79/78 89/59/58 93/64/63
+f 53/79/78 93/64/63 97/68/67
+f 53/79/78 97/68/67 101/72/71
+f 53/79/78 101/72/71 105/76/75
+f 53/79/78 105/76/75 52/23/22
+f 105/76/75 104/75/74 51/24/23 52/23/22
+f 104/75/74 103/77/76 50/27/26 51/24/23
+f 103/77/76 102/78/77 49/29/28 50/27/26
+f 35/80/79 82/81/60 44/18/17 36/17/16
+f 33/82/80 90/83/80 86/84/81 34/85/81
+f 32/86/82 31/87/83 98/88/83 94/89/82
+f 30/90/84 29/91/85 49/92/85 102/93/84
+f 27/22/21 43/21/20 54/94/29 28/95/86
+f 34/85/81 86/84/81 82/81/60 35/80/79
+f 33/82/80 32/86/82 94/89/82 90/83/80
+f 31/87/83 30/90/84 102/93/84 98/88/83
+f 28/95/86 54/94/29 49/92/85 29/91/85
+f 55/28/27 54/30/29 43/96/20 58/33/32
+f 58/33/32 43/96/20 42/97/14 61/36/35
+f 61/36/35 42/97/14 41/98/8 64/39/38
+f 64/39/38 41/98/8 48/99/7 67/42/41
+f 67/42/41 48/99/7 47/100/12 70/45/44
+f 70/45/44 47/100/12 46/101/11 73/48/47
+f 73/48/47 46/101/11 45/102/18 76/51/50
+f 76/51/50 45/102/18 44/103/17 79/54/53
+f 79/54/53 44/103/17 82/61/60 83/57/56
+g Cube_Cube_speaker-open-front
+s off
+f 14/104/78 15/105/78 6/3/78
+f 15/105/78 16/106/78 6/3/78
+f 12/107/78 8/5/78 11/108/78
+f 10/109/78 11/108/78 8/5/78
+f 24/110/78 7/6/78 23/111/78
+f 22/112/78 23/111/78 7/6/78
+f 20/113/78 5/2/78 19/114/78
+f 18/115/78 19/114/78 5/2/78
+f 20/113/78 21/116/78 5/2/78
+f 21/116/78 22/112/78 7/6/78
+f 7/6/78 5/2/78 21/116/78
+f 17/117/78 18/115/78 5/2/78
+f 16/106/78 17/117/78 6/3/78
+f 5/2/78 6/3/78 17/117/78
+f 14/104/78 6/3/78 13/118/78
+f 12/107/78 13/118/78 8/5/78
+f 8/5/78 13/118/78 6/3/78
+f 9/119/78 10/109/78 8/5/78
+f 8/5/78 7/6/78 9/119/78
+f 9/119/78 7/6/78 24/110/78
+g Cube_Cube_metal-surround
+f 11/120/78 27/121/78 28/122/78 12/123/78
+f 22/124/78 38/125/78 39/126/78 23/127/78
+f 9/128/78 25/129/78 26/130/78 10/131/78
+f 20/132/78 36/133/78 37/134/78 21/135/78
+f 18/136/78 34/137/78 35/138/78 19/139/78
+f 17/140/78 16/141/78 32/142/78 33/143/78
+f 15/144/78 14/145/78 30/146/78 31/147/78
+f 12/123/78 28/122/78 29/148/78 13/149/78
+f 23/127/78 39/126/78 40/150/78 24/151/78
+f 10/131/78 26/130/78 27/121/78 11/120/78
+f 21/135/78 37/134/78 38/125/78 22/124/78
+f 19/139/78 35/138/78 36/133/78 20/132/78
+f 17/140/78 33/143/78 34/137/78 18/136/78
+f 16/141/78 15/144/78 31/147/78 32/142/78
+f 14/145/78 13/149/78 29/148/78 30/146/78
+f 24/151/78 40/150/78 25/129/78 9/128/78
diff --git a/homedecor_modpack/homedecor/models/homedecor_speaker_small.obj b/homedecor_modpack/homedecor/models/homedecor_speaker_small.obj
new file mode 100644
index 0000000..b894889
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_speaker_small.obj
@@ -0,0 +1,64 @@
+# Blender v2.73 (sub 0) OBJ File: 'speaker_small.blend'
+# www.blender.org
+o Cube
+v 0.125000 -0.500000 0.062500
+v 0.187500 -0.500000 0.437500
+v -0.187500 -0.500000 0.437500
+v -0.125000 -0.500000 0.062500
+v 0.125000 -0.125000 0.062500
+v 0.187500 -0.125000 0.437500
+v -0.187500 -0.125000 0.437500
+v -0.125000 -0.125000 0.062500
+v 0.187500 -0.500000 0.125000
+v -0.187500 -0.500000 0.125000
+v 0.187500 -0.125000 0.125000
+v -0.187500 -0.125000 0.125000
+v 0.000000 -0.500000 0.095501
+v 0.000000 -0.125000 0.095501
+vt 0.562500 0.625000
+vt 0.562500 0.312500
+vt 0.937500 0.312500
+vt 0.937500 0.625000
+vt 0.937500 0.687500
+vt 0.562500 0.687500
+vt 0.687525 0.124902
+vt 0.687525 0.499952
+vt 0.625017 0.499952
+vt 0.625017 0.124902
+vt 0.374983 0.499952
+vt 0.374983 0.124902
+vt 0.312475 0.499952
+vt 0.312475 0.124902
+vt 0.625017 0.562298
+vt 0.500000 0.529378
+vt 0.625017 0.062669
+vt 0.500000 0.095529
+vt 0.374983 0.562298
+vt 0.374983 0.062669
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn -1.000000 -0.000000 -0.000000
+vn -0.707100 0.000000 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn 0.707100 -0.000000 -0.707100
+g Cube_Cube_speaker-wood
+s off
+f 9/1/1 2/2/1 3/3/1 10/4/1
+f 11/4/2 12/1/2 7/2/2 6/3/2
+f 9/4/3 11/1/3 6/2/3 2/3/3
+f 2/2/4 6/3/4 7/5/4 3/6/4
+f 3/2/5 7/3/5 12/4/5 10/1/5
+g Cube_Cube_cloth
+f 10/7/6 12/8/6 8/9/6 4/10/6
+f 5/11/7 1/12/7 4/10/7 8/9/7
+f 1/12/8 5/11/8 11/13/8 9/14/8
+f 11/8/2 5/15/2 14/16/2
+f 12/13/2 11/8/2 14/16/2
+f 1/17/1 9/7/1 13/18/1
+f 8/19/2 12/13/2 14/16/2
+f 10/14/1 4/20/1 13/18/1
+f 9/7/1 10/14/1 13/18/1
+f 4/20/1 1/17/1 13/18/1
+f 5/15/2 8/19/2 14/16/2
diff --git a/homedecor_modpack/homedecor/models/homedecor_spiral_staircase.obj b/homedecor_modpack/homedecor/models/homedecor_spiral_staircase.obj
new file mode 100644
index 0000000..f729f65
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_spiral_staircase.obj
@@ -0,0 +1,1440 @@
+# Blender v2.73 (sub 0) OBJ File: 'spiral-staircase.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 -0.500000 -0.437500
+v 0.500000 1.000000 -0.437500
+v 0.455806 -0.500000 -0.455806
+v 0.455806 1.000000 -0.455806
+v 0.437500 -0.500000 -0.500000
+v 0.437500 1.000000 -0.500000
+v 0.455806 -0.500000 -0.544194
+v 0.455806 1.000000 -0.544194
+v 0.500000 -0.500000 -0.562500
+v 0.500000 1.000000 -0.562500
+v 0.544194 -0.500000 -0.544194
+v 0.544194 1.000000 -0.544194
+v 0.562500 -0.500000 -0.500000
+v 0.562500 1.000000 -0.500000
+v 0.544194 -0.500000 -0.455806
+v 0.544194 1.000000 -0.455806
+v 1.423880 0.812500 -0.117317
+v 1.423880 0.718750 -0.117317
+v 0.500000 0.250000 0.500000
+v 0.500000 0.156250 0.500000
+v -0.207107 -0.218750 0.207107
+v -0.207107 -0.125000 0.207107
+v -0.423880 -0.406250 -0.117316
+v -0.423880 -0.312500 -0.117316
+v -0.500000 -0.593750 -0.500000
+v -0.500000 -0.500000 -0.500000
+v 1.500000 1.000000 -0.500000
+v 1.500000 0.906250 -0.500000
+v 0.500000 0.156250 0.500000
+v 0.500000 0.250000 0.500000
+v 0.117317 -0.031250 0.423880
+v 0.117317 0.062500 0.423880
+v -0.207107 -0.218750 0.207107
+v -0.207107 -0.125000 0.207107
+v 1.207107 0.531250 0.207107
+v 1.207107 0.625000 0.207107
+v 0.882683 0.343750 0.423880
+v 0.882683 0.437500 0.423880
+v 1.207107 0.531250 0.207107
+v 1.207107 0.625000 0.207107
+v 1.423880 1.562500 -0.117317
+v 1.423880 1.468750 -0.117317
+v 0.500000 1.000000 0.500000
+v 0.500000 0.906250 0.500000
+v -0.207107 0.531250 0.207107
+v -0.207107 0.625000 0.207107
+v -0.423880 0.343750 -0.117316
+v -0.423880 0.437500 -0.117316
+v -0.500000 0.156250 -0.500000
+v -0.500000 0.250000 -0.500000
+v 1.500000 1.750000 -0.500000
+v 1.500000 1.656250 -0.500000
+v 0.500000 0.906250 0.500000
+v 0.500000 1.000000 0.500000
+v 0.117317 0.718750 0.423880
+v 0.117317 0.812500 0.423880
+v -0.207107 0.531250 0.207107
+v -0.207107 0.625000 0.207107
+v 1.207107 1.281250 0.207107
+v 1.207107 1.375000 0.207107
+v 0.882683 1.093750 0.423880
+v 0.882683 1.187500 0.423880
+v 1.207107 1.281250 0.207107
+v 1.207107 1.375000 0.207107
+v 1.381884 0.812500 -0.134712
+v 1.381884 0.718750 -0.134712
+v 0.500000 0.250000 0.454544
+v 0.500000 0.156250 0.454544
+v -0.174965 -0.218750 0.174965
+v -0.174965 -0.125000 0.174965
+v -0.381884 -0.406250 -0.134712
+v -0.381884 -0.312500 -0.134712
+v -0.454544 -0.593750 -0.500000
+v -0.454544 -0.500000 -0.500000
+v 1.454544 1.000000 -0.500000
+v 1.454544 0.906250 -0.500000
+v 0.500000 0.156250 0.454544
+v 0.500000 0.250000 0.454544
+v 0.134712 -0.031250 0.381884
+v 0.134712 0.062500 0.381884
+v -0.174965 -0.218750 0.174965
+v -0.174965 -0.125000 0.174965
+v 1.174965 0.531250 0.174965
+v 1.174965 0.625000 0.174965
+v 0.865288 0.343750 0.381884
+v 0.865288 0.437500 0.381884
+v 1.174965 0.531250 0.174965
+v 1.174965 0.625000 0.174965
+v 1.381884 1.562500 -0.134712
+v 1.381884 1.468750 -0.134712
+v 0.500000 1.000000 0.454544
+v 0.500000 0.906250 0.454544
+v -0.174965 0.531250 0.174965
+v -0.174965 0.625000 0.174965
+v -0.381884 0.343750 -0.134712
+v -0.381884 0.437500 -0.134712
+v -0.454544 0.156250 -0.500000
+v -0.454544 0.250000 -0.500000
+v 1.454544 1.750000 -0.500000
+v 1.454544 1.656250 -0.500000
+v 0.500000 0.906250 0.454544
+v 0.500000 1.000000 0.454544
+v 0.134712 0.718750 0.381884
+v 0.134712 0.812500 0.381884
+v -0.174965 0.531250 0.174965
+v -0.174965 0.625000 0.174965
+v 1.174965 1.281250 0.174965
+v 1.174965 1.375000 0.174965
+v 0.865288 1.093750 0.381884
+v 0.865288 1.187500 0.381884
+v 1.174965 1.281250 0.174965
+v 1.174965 1.375000 0.174965
+v 1.393354 1.490807 -0.141267
+v -0.416108 -0.336591 -0.134861
+v 1.393354 0.792536 -0.141267
+v 1.416144 1.490807 -0.134947
+v 1.416144 0.792536 -0.134947
+v -0.416108 0.361680 -0.134861
+v 1.385395 1.490807 -0.122052
+v 1.385395 0.792536 -0.122052
+v 1.405979 1.490807 -0.110406
+v -0.393318 -0.336591 -0.141181
+v 1.405979 0.792536 -0.110406
+v 0.865139 0.414229 0.416108
+v 0.865139 1.112499 0.416108
+v -0.393318 0.361680 -0.141181
+v 0.858819 0.414229 0.393318
+v 0.858819 1.112499 0.393318
+v 0.889680 0.414229 0.405943
+v -0.405943 -0.336591 -0.110320
+v 0.889680 1.112499 0.405943
+v 0.878034 0.414229 0.385359
+v 0.878034 1.112499 0.385359
+v -0.405943 0.361680 -0.110320
+v 0.141267 0.738201 0.393354
+v 0.141267 0.039931 0.393354
+v 0.134947 0.738201 0.416144
+v -0.385359 -0.336591 -0.121966
+v 0.134947 0.039931 0.416144
+v 0.122052 0.738201 0.385395
+v 0.122052 0.039931 0.385395
+v -0.385359 0.361680 -0.121966
+v 0.110406 0.738201 0.405979
+v 0.110406 0.039931 0.405979
+v 1.188038 1.303904 0.173330
+v 1.188038 0.605634 0.173330
+v 1.206674 1.303904 0.187892
+v 1.206674 0.605634 0.187892
+v 1.173331 1.303904 0.188037
+v 1.173331 0.605634 0.188037
+v 1.187890 1.303904 0.206674
+v 1.187890 0.605634 0.206674
+v 0.486718 0.225410 0.486106
+v 0.486718 0.923680 0.486106
+v 0.489601 0.225410 0.462632
+v 0.489601 0.923680 0.462632
+v 0.513281 0.225410 0.486107
+v -0.486107 -0.521644 -0.486719
+v 0.513281 0.923680 0.486107
+v 0.510400 0.225410 0.462633
+v 0.510400 0.923680 0.462633
+v -0.486107 0.176626 -0.486719
+v -0.173330 0.549256 0.188038
+v -0.173330 -0.149014 0.188038
+v -0.187892 0.549256 0.206674
+v -0.462633 -0.521644 -0.489600
+v -0.187892 -0.149014 0.206674
+v -0.188036 0.549256 0.173331
+v -0.188036 -0.149014 0.173331
+v -0.462633 0.176626 -0.489600
+v -0.206674 0.549256 0.187890
+v -0.206674 -0.149014 0.187890
+v 1.486105 0.626794 -0.486718
+v 1.486105 1.676627 -0.486718
+v 1.462632 0.626794 -0.489601
+v 1.462632 1.676627 -0.489601
+v 1.486106 1.676627 -0.499999
+v 1.486106 0.626794 -0.499999
+v 1.462632 1.676627 -0.500000
+v 1.462632 0.626794 -0.500000
+v -0.486106 0.176626 -0.500001
+v -0.486106 -0.521644 -0.500001
+v -0.462632 0.176626 -0.499999
+v -0.462632 -0.521644 -0.499999
+v 1.452126 0.673669 -0.500000
+v 1.462632 0.673669 -0.500000
+v 1.452126 0.626794 -0.500000
+v 1.462632 0.626794 -0.500000
+v 1.452126 0.673669 -0.496094
+v 1.462632 0.626794 -0.500000
+v 1.462632 0.673669 -0.496094
+v 1.452126 0.626794 -0.500000
+v 1.452126 0.626794 -0.496094
+v 1.462632 0.673669 -0.500000
+v 1.462632 0.626794 -0.496094
+v 1.452126 0.673669 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.406250 -0.500000
+v -0.174964 -0.500000 0.174965
+v -0.174964 -0.406250 0.174965
+v -0.381883 -0.500000 -0.134712
+v -0.381883 -0.406250 -0.134712
+v -0.454544 -0.500000 -0.500000
+v -0.454544 -0.406250 -0.500000
+v 0.500000 -0.125000 -0.500000
+v 0.500000 -0.031250 -0.500000
+v 0.500000 -0.125000 0.454544
+v 0.500000 -0.031250 0.454544
+v 0.134712 -0.125000 0.381883
+v 0.134712 -0.031250 0.381883
+v -0.174964 -0.125000 0.174964
+v -0.174964 -0.031250 0.174964
+v 0.500000 0.250000 -0.500000
+v 0.500000 0.343750 -0.500000
+v 1.174965 0.250000 0.174964
+v 1.174965 0.343750 0.174964
+v 0.865288 0.250000 0.381883
+v 0.865288 0.343750 0.381883
+v 0.500000 0.250000 0.454544
+v 0.500000 0.343750 0.454544
+v 0.500000 0.625000 -0.500000
+v 0.500000 0.718750 -0.500000
+v 1.454544 0.625000 -0.500000
+v 1.454544 0.718750 -0.500000
+v 1.381883 0.625000 -0.134712
+v 1.381883 0.718750 -0.134712
+v 1.174964 0.625000 0.174964
+v 1.174964 0.718750 0.174964
+v 0.500000 1.000000 -0.562500
+v 0.500000 2.500000 -0.562500
+v 0.544194 1.000000 -0.544194
+v 0.544194 2.500000 -0.544194
+v 0.562500 1.000000 -0.500000
+v 0.562500 2.500000 -0.500000
+v 0.544194 1.000000 -0.455806
+v 0.544194 2.500000 -0.455806
+v 0.500000 1.000000 -0.437500
+v 0.500000 2.500000 -0.437500
+v 0.455806 1.000000 -0.455806
+v 0.455806 2.500000 -0.455806
+v 0.437500 1.000000 -0.500000
+v 0.437500 2.500000 -0.500000
+v 0.455806 1.000000 -0.544194
+v 0.455806 2.500000 -0.544194
+v -0.423879 2.312500 -0.882684
+v -0.423879 2.218750 -0.882684
+v 0.500000 1.750000 -1.500000
+v 0.500000 1.656250 -1.500000
+v 1.207107 1.281250 -1.207107
+v 1.207107 1.375000 -1.207107
+v 1.423880 1.093750 -0.882683
+v 1.423880 1.187500 -0.882683
+v 1.500000 0.906250 -0.500000
+v 1.500000 1.000000 -0.500000
+v -0.500000 2.500000 -0.500000
+v -0.500000 2.406250 -0.500000
+v 0.500000 1.656250 -1.500000
+v 0.500000 1.750000 -1.500000
+v 0.882683 1.468750 -1.423880
+v 0.882683 1.562500 -1.423880
+v 1.207107 1.281250 -1.207107
+v 1.207107 1.375000 -1.207107
+v -0.207107 2.031250 -1.207107
+v -0.207107 2.125000 -1.207107
+v 0.117317 1.843750 -1.423880
+v 0.117317 1.937500 -1.423880
+v -0.207107 2.031250 -1.207107
+v -0.207107 2.125000 -1.207107
+v -0.423879 3.062500 -0.882684
+v -0.423879 2.968750 -0.882684
+v 0.500000 2.500000 -1.500000
+v 0.500000 2.406250 -1.500000
+v 1.207107 2.031250 -1.207107
+v 1.207107 2.125000 -1.207107
+v 1.423880 1.843750 -0.882683
+v 1.423880 1.937500 -0.882683
+v 1.500000 1.656250 -0.500000
+v 1.500000 1.750000 -0.500000
+v -0.500000 3.250000 -0.500000
+v -0.500000 3.156250 -0.500000
+v 0.500000 2.406250 -1.500000
+v 0.500000 2.500000 -1.500000
+v 0.882683 2.218750 -1.423880
+v 0.882683 2.312500 -1.423880
+v 1.207107 2.031250 -1.207107
+v 1.207107 2.125000 -1.207107
+v -0.207107 2.781250 -1.207107
+v -0.207107 2.875000 -1.207107
+v 0.117317 2.593750 -1.423880
+v 0.117317 2.687500 -1.423880
+v -0.207107 2.781250 -1.207107
+v -0.207107 2.875000 -1.207107
+v -0.381884 2.312500 -0.865288
+v -0.381884 2.218750 -0.865288
+v 0.500000 1.750000 -1.454544
+v 0.500000 1.656250 -1.454544
+v 1.174965 1.281250 -1.174965
+v 1.174965 1.375000 -1.174965
+v 1.381884 1.093750 -0.865288
+v 1.381884 1.187500 -0.865288
+v 1.454544 0.906250 -0.500000
+v 1.454544 1.000000 -0.500000
+v -0.454544 2.500000 -0.500000
+v -0.454544 2.406250 -0.500000
+v 0.500000 1.656250 -1.454544
+v 0.500000 1.750000 -1.454544
+v 0.865288 1.468750 -1.381884
+v 0.865288 1.562500 -1.381884
+v 1.174965 1.281250 -1.174965
+v 1.174965 1.375000 -1.174965
+v -0.174964 2.031250 -1.174965
+v -0.174964 2.125000 -1.174965
+v 0.134712 1.843750 -1.381884
+v 0.134712 1.937500 -1.381884
+v -0.174964 2.031250 -1.174965
+v -0.174964 2.125000 -1.174965
+v -0.381884 3.062500 -0.865288
+v -0.381884 2.968750 -0.865288
+v 0.500000 2.500000 -1.454544
+v 0.500000 2.406250 -1.454544
+v 1.174965 2.031250 -1.174965
+v 1.174965 2.125000 -1.174965
+v 1.381884 1.843750 -0.865288
+v 1.381884 1.937500 -0.865288
+v 1.454544 1.656250 -0.500000
+v 1.454544 1.750000 -0.500000
+v -0.454544 3.250000 -0.500000
+v -0.454544 3.156250 -0.500000
+v 0.500000 2.406250 -1.454544
+v 0.500000 2.500000 -1.454544
+v 0.865288 2.218750 -1.381884
+v 0.865288 2.312500 -1.381884
+v 1.174965 2.031250 -1.174965
+v 1.174965 2.125000 -1.174965
+v -0.174964 2.781250 -1.174965
+v -0.174964 2.875000 -1.174965
+v 0.134712 2.593750 -1.381884
+v 0.134712 2.687500 -1.381884
+v -0.174964 2.781250 -1.174965
+v -0.174964 2.875000 -1.174965
+v -0.393354 2.990807 -0.858733
+v 1.416108 1.163409 -0.865139
+v -0.393354 2.292536 -0.858733
+v -0.416144 2.990807 -0.865053
+v -0.416144 2.292536 -0.865053
+v 1.416108 1.861680 -0.865139
+v -0.385395 2.990807 -0.877948
+v -0.385395 2.292536 -0.877948
+v -0.405979 2.990807 -0.889594
+v 1.393318 1.163409 -0.858819
+v -0.405979 2.292536 -0.889594
+v 0.134861 1.914229 -1.416108
+v 0.134861 2.612500 -1.416108
+v 1.393318 1.861680 -0.858819
+v 0.141181 1.914229 -1.393318
+v 0.141181 2.612500 -1.393318
+v 0.110320 1.914229 -1.405943
+v 1.405943 1.163409 -0.889680
+v 0.110320 2.612500 -1.405943
+v 0.121966 1.914229 -1.385359
+v 0.121966 2.612500 -1.385359
+v 1.405943 1.861680 -0.889680
+v 0.858733 2.238201 -1.393354
+v 0.858733 1.539931 -1.393354
+v 0.865053 2.238201 -1.416144
+v 1.385359 1.163409 -0.878034
+v 0.865053 1.539931 -1.416144
+v 0.877948 2.238201 -1.385395
+v 0.877948 1.539931 -1.385395
+v 1.385359 1.861680 -0.878034
+v 0.889594 2.238201 -1.405979
+v 0.889594 1.539931 -1.405979
+v -0.188038 2.803904 -1.173331
+v -0.188038 2.105634 -1.173331
+v -0.206674 2.803904 -1.187892
+v -0.206674 2.105634 -1.187892
+v -0.173330 2.803904 -1.188037
+v -0.173330 2.105634 -1.188037
+v -0.187890 2.803904 -1.206674
+v -0.187890 2.105634 -1.206674
+v 0.513282 1.725410 -1.486106
+v 0.513282 2.423680 -1.486106
+v 0.510399 1.725410 -1.462632
+v 0.510399 2.423680 -1.462632
+v 0.486719 1.725410 -1.486107
+v 1.486107 0.978356 -0.513281
+v 0.486719 2.423680 -1.486107
+v 0.489601 1.725410 -1.462633
+v 0.489601 2.423680 -1.462633
+v 1.486107 1.676627 -0.513281
+v 1.173331 2.049256 -1.188038
+v 1.173331 1.350986 -1.188038
+v 1.187892 2.049256 -1.206674
+v 1.462633 0.978356 -0.510400
+v 1.187892 1.350986 -1.206674
+v 1.188036 2.049256 -1.173330
+v 1.188036 1.350986 -1.173330
+v 1.462633 1.676627 -0.510400
+v 1.206674 2.049256 -1.187890
+v 1.206674 1.350986 -1.187890
+v -0.486106 2.126793 -0.513282
+v -0.486106 3.176627 -0.513282
+v -0.462632 2.126793 -0.510399
+v -0.462632 3.176627 -0.510399
+v -0.486106 3.176627 -0.500001
+v -0.486106 2.126793 -0.500001
+v -0.462632 3.176627 -0.500000
+v -0.462632 2.126793 -0.500000
+v 1.486106 1.676627 -0.499999
+v 1.486106 0.978356 -0.499999
+v 1.462632 1.676627 -0.500000
+v 1.462632 0.978356 -0.500000
+v -0.452126 2.173668 -0.500000
+v -0.462632 2.173668 -0.500000
+v -0.452126 2.126793 -0.500000
+v -0.462632 2.126793 -0.500000
+v -0.452126 2.173668 -0.503906
+v -0.462632 2.126793 -0.500000
+v -0.462632 2.173668 -0.503906
+v -0.452126 2.126793 -0.500000
+v -0.452126 2.126793 -0.503906
+v -0.462632 2.173668 -0.500000
+v -0.462632 2.126793 -0.503906
+v -0.452126 2.173668 -0.500000
+v 0.500000 1.000000 -0.500000
+v 0.500000 1.093750 -0.500000
+v 1.174964 1.000000 -1.174964
+v 1.174964 1.093750 -1.174964
+v 1.381883 1.000000 -0.865288
+v 1.381883 1.093750 -0.865288
+v 1.454544 1.000000 -0.500000
+v 1.454544 1.093750 -0.500000
+v 0.500000 1.375000 -0.500000
+v 0.500000 1.468750 -0.500000
+v 0.500000 1.375000 -1.454544
+v 0.500000 1.468750 -1.454544
+v 0.865288 1.375000 -1.381883
+v 0.865288 1.468750 -1.381883
+v 1.174964 1.375000 -1.174964
+v 1.174964 1.468750 -1.174964
+v 0.500000 1.750000 -0.500000
+v 0.500000 1.843750 -0.500000
+v -0.174964 1.750000 -1.174964
+v -0.174964 1.843750 -1.174964
+v 0.134712 1.750000 -1.381883
+v 0.134712 1.843750 -1.381883
+v 0.500000 1.750000 -1.454544
+v 0.500000 1.843750 -1.454544
+v 0.500000 2.125000 -0.500000
+v 0.500000 2.218750 -0.500000
+v -0.454544 2.125000 -0.500000
+v -0.454544 2.218750 -0.500000
+v -0.381883 2.125000 -0.865288
+v -0.381883 2.218750 -0.865288
+v -0.174964 2.125000 -1.174964
+v -0.174964 2.218750 -1.174964
+vt 0.755440 0.425359
+vt 0.755440 0.000000
+vt 0.774542 0.000000
+vt 0.774542 0.425359
+vt 0.583371 0.400524
+vt 0.583371 0.825882
+vt 0.564867 0.825882
+vt 0.564867 0.400524
+vt 0.545260 0.825882
+vt 0.545260 0.400524
+vt 0.793643 0.000000
+vt 0.793643 0.425359
+vt 0.812745 0.000000
+vt 0.812745 0.425359
+vt 0.291737 0.401496
+vt 0.291737 0.826854
+vt 0.271999 0.826854
+vt 0.271999 0.401496
+vt 0.494730 0.766874
+vt 0.480280 0.781096
+vt 0.459844 0.780902
+vt 0.445393 0.766405
+vt 0.445393 0.746098
+vt 0.459844 0.731876
+vt 0.480280 0.732070
+vt 0.494730 0.746567
+vt 0.736338 0.425359
+vt 0.736338 0.000000
+vt 0.253689 0.826854
+vt 0.253689 0.401496
+vt 0.529689 0.731876
+vt 0.544169 0.746128
+vt 0.544169 0.766442
+vt 0.529689 0.780919
+vt 0.509210 0.781079
+vt 0.494730 0.766827
+vt 0.494730 0.746513
+vt 0.509210 0.732036
+vt 0.904401 0.434474
+vt 0.929778 0.425359
+vt 0.924746 0.566871
+vt 0.899369 0.575986
+vt 0.929778 0.735522
+vt 0.904401 0.744637
+vt 0.903288 0.008862
+vt 0.928757 0.000000
+vt 0.924561 0.147827
+vt 0.899091 0.156688
+vt 0.928757 0.319018
+vt 0.903288 0.327880
+vt 0.984512 0.139544
+vt 0.959166 0.148743
+vt 0.964454 0.009199
+vt 0.989799 0.000000
+vt 0.989799 0.307304
+vt 0.964454 0.316503
+vt 0.869425 0.319020
+vt 0.843956 0.327882
+vt 0.839759 0.156690
+vt 0.865229 0.147828
+vt 0.843956 0.008862
+vt 0.869425 0.000000
+vt 0.933790 0.009115
+vt 0.959166 0.000000
+vt 0.954134 0.141512
+vt 0.928757 0.150627
+vt 0.959166 0.310163
+vt 0.933790 0.319278
+vt 0.873900 0.434221
+vt 0.899369 0.425359
+vt 0.895172 0.573186
+vt 0.869703 0.582047
+vt 0.899369 0.744377
+vt 0.873900 0.753239
+vt 0.955123 0.564903
+vt 0.929778 0.574102
+vt 0.935065 0.434558
+vt 0.960411 0.425359
+vt 0.960411 0.732663
+vt 0.935066 0.741862
+vt 0.899091 0.319020
+vt 0.873622 0.327882
+vt 0.869425 0.156690
+vt 0.894895 0.147828
+vt 0.873622 0.008862
+vt 0.899091 0.000000
+vt 0.586630 0.991029
+vt 0.583473 0.842126
+vt 0.608903 0.851097
+vt 0.612059 1.000000
+vt 0.586630 0.675892
+vt 0.612059 0.684863
+vt 0.777462 0.731425
+vt 0.769679 0.589583
+vt 0.795238 0.598190
+vt 0.803021 0.740033
+vt 0.769679 0.425359
+vt 0.795238 0.433966
+vt 0.985821 0.600254
+vt 0.989204 0.747672
+vt 0.963794 0.738648
+vt 0.960411 0.591231
+vt 0.989204 0.434383
+vt 0.963794 0.425359
+vt 0.861921 0.433966
+vt 0.861921 0.598190
+vt 0.836362 0.589583
+vt 0.836362 0.425359
+vt 0.869703 0.740034
+vt 0.844144 0.731427
+vt 0.615216 0.991029
+vt 0.612059 0.842126
+vt 0.637489 0.851097
+vt 0.640645 1.000000
+vt 0.615216 0.675892
+vt 0.640645 0.684863
+vt 0.761897 0.433966
+vt 0.769679 0.575809
+vt 0.744120 0.567202
+vt 0.769679 0.740033
+vt 0.744120 0.731425
+vt 0.732954 0.849963
+vt 0.736338 0.997380
+vt 0.710928 0.988356
+vt 0.707544 0.840939
+vt 0.736338 0.684091
+vt 0.710928 0.675067
+vt 0.810803 0.731427
+vt 0.810803 0.567203
+vt 0.836362 0.575810
+vt 0.836362 0.740034
+vt 0.803021 0.425359
+vt 0.828580 0.433966
+vt 0.291737 0.764230
+vt 0.306563 0.764230
+vt 0.306563 0.790815
+vt 0.291737 0.790815
+vt 0.342703 0.568727
+vt 0.362317 0.568941
+vt 0.393670 0.730515
+vt 0.375408 0.737645
+vt 0.151370 0.568769
+vt 0.170774 0.567980
+vt 0.201790 0.725295
+vt 0.184246 0.733399
+vt 0.685371 0.168918
+vt 0.704985 0.168704
+vt 0.736338 0.329597
+vt 0.718358 0.337122
+vt 0.083405 0.401496
+vt 0.100950 0.409600
+vt 0.069934 0.566915
+vt 0.050530 0.566126
+vt 0.350678 0.737645
+vt 0.370325 0.737645
+vt 0.370325 0.764230
+vt 0.350678 0.764230
+vt 0.583473 0.168610
+vt 0.603081 0.168827
+vt 0.634422 0.330834
+vt 0.616152 0.337946
+vt 0.718076 0.000000
+vt 0.736338 0.007130
+vt 0.494730 0.567430
+vt 0.514176 0.566696
+vt 0.545260 0.723818
+vt 0.527642 0.731876
+vt 0.183482 0.401496
+vt 0.201790 0.408142
+vt 0.476417 0.400524
+vt 0.494730 0.407224
+vt 0.463646 0.566696
+vt 0.444200 0.567430
+vt 0.375690 0.400524
+vt 0.393670 0.408048
+vt 0.291737 0.568727
+vt 0.311351 0.568941
+vt 0.342703 0.730515
+vt 0.324441 0.737645
+vt 0.685371 0.506864
+vt 0.704985 0.506650
+vt 0.736338 0.667543
+vt 0.718358 0.675067
+vt 0.238307 0.786569
+vt 0.223219 0.786569
+vt 0.223219 0.759984
+vt 0.238307 0.759984
+vt 0.769830 0.793202
+vt 0.755937 0.793202
+vt 0.755937 0.766618
+vt 0.769830 0.766618
+vt 0.667101 0.337946
+vt 0.685371 0.345057
+vt 0.654029 0.507065
+vt 0.634422 0.507282
+vt 0.331031 0.737645
+vt 0.331031 0.764230
+vt 0.494730 0.723818
+vt 0.477112 0.731876
+vt 0.326211 0.764230
+vt 0.340103 0.764230
+vt 0.340103 0.790815
+vt 0.326211 0.790815
+vt 0.718076 0.337946
+vt 0.736338 0.345076
+vt 0.324724 0.400524
+vt 0.342703 0.408048
+vt 0.736338 0.740033
+vt 0.755937 0.740033
+vt 0.736338 0.766618
+vt 0.223219 0.733399
+vt 0.238307 0.733399
+vt 0.426582 0.400524
+vt 0.444200 0.408582
+vt 0.413116 0.565704
+vt 0.393670 0.564969
+vt 0.685371 0.668379
+vt 0.667412 0.675892
+vt 0.634422 0.345057
+vt 0.603081 0.507065
+vt 0.583473 0.507282
+vt 0.384218 0.764230
+vt 0.384218 0.790815
+vt 0.370325 0.790815
+vt 0.364571 0.764230
+vt 0.364571 0.790815
+vt 0.350678 0.790815
+vt 0.795072 0.766618
+vt 0.775504 0.766618
+vt 0.775504 0.740033
+vt 0.795072 0.740033
+vt 0.444200 0.725176
+vt 0.425887 0.731876
+vt 0.389925 0.737645
+vt 0.389925 0.764230
+vt 0.100950 0.566126
+vt 0.120354 0.566915
+vt 0.151370 0.726753
+vt 0.133061 0.733400
+vt 0.634422 0.668379
+vt 0.616463 0.675892
+vt 0.667412 0.000000
+vt 0.685371 0.007513
+vt 0.654029 0.168827
+vt 0.634422 0.168610
+vt 0.311384 0.764230
+vt 0.291737 0.737645
+vt 0.311384 0.737645
+vt 0.032912 0.401496
+vt 0.050530 0.409554
+vt 0.019446 0.566676
+vt 0.000000 0.565941
+vt 0.201790 0.568769
+vt 0.221194 0.567980
+vt 0.252210 0.725295
+vt 0.234666 0.733399
+vt 0.311384 0.790815
+vt 0.050530 0.726148
+vt 0.032217 0.732848
+vt 0.685371 0.330834
+vt 0.133826 0.401496
+vt 0.151370 0.409600
+vt 0.100950 0.726753
+vt 0.082641 0.733399
+vt 0.233902 0.401496
+vt 0.252210 0.408142
+vt 0.526947 0.400524
+vt 0.545260 0.407224
+vt 0.616463 0.000000
+vt 0.634422 0.007513
+vt 0.100950 0.733399
+vt 0.110801 0.733399
+vt 0.110801 0.931410
+vt 0.100950 0.931410
+vt 0.021214 0.930858
+vt 0.010607 0.930859
+vt 0.010607 0.732848
+vt 0.021214 0.732848
+vt 0.156792 0.931410
+vt 0.156792 0.733399
+vt 0.165097 0.733399
+vt 0.165097 0.931410
+vt 0.184960 0.931410
+vt 0.184960 0.733399
+vt 0.193265 0.733399
+vt 0.193265 0.931410
+vt 0.147895 0.931410
+vt 0.147895 0.733399
+vt 0.000000 0.930859
+vt 0.000000 0.732848
+vt 0.120365 0.733399
+vt 0.120365 0.931410
+vt 0.129679 0.733399
+vt 0.138905 0.733399
+vt 0.138905 0.931410
+vt 0.129679 0.931410
+vt 0.408029 0.731876
+vt 0.418304 0.731876
+vt 0.418304 0.929886
+vt 0.408029 0.929886
+vt 0.031431 0.930858
+vt 0.031431 0.732848
+vt 0.040013 0.732848
+vt 0.040013 0.930858
+vt 0.091314 0.733399
+vt 0.091314 0.931410
+vt 0.050530 0.733399
+vt 0.060698 0.733399
+vt 0.060698 0.931410
+vt 0.050530 0.931410
+vt 0.201790 0.733399
+vt 0.201790 0.931410
+vt 0.090840 0.733399
+vt 0.090840 0.931410
+vt 0.080990 0.931410
+vt 0.080990 0.733399
+vt 0.210687 0.733399
+vt 0.210687 0.931410
+vt 0.429819 0.929886
+vt 0.429819 0.731876
+vt 0.401125 0.929886
+vt 0.401125 0.731876
+vt 0.070844 0.931410
+vt 0.070844 0.733400
+vt 0.173215 0.931410
+vt 0.173215 0.733399
+vt 0.393670 0.929886
+vt 0.393670 0.731876
+vt 0.252210 0.931410
+vt 0.244155 0.931410
+vt 0.244155 0.733399
+vt 0.252210 0.733399
+vt 0.238428 0.931410
+vt 0.238428 0.733399
+vt 0.218742 0.931410
+vt 0.218742 0.733399
+vt 0.223219 0.931410
+vt 0.040322 0.732848
+vt 0.050530 0.732848
+vt 0.050530 0.930858
+vt 0.040322 0.930858
+vt 0.176841 0.733399
+vt 0.176841 0.931410
+vt 0.436602 0.731876
+vt 0.436602 0.929886
+vt 0.444200 0.731876
+vt 0.444200 0.929886
+vt 0.999350 0.723063
+vt 0.989204 0.723063
+vt 0.989204 0.425359
+vt 0.999350 0.425359
+vt 0.995516 0.297704
+vt 0.995516 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.297704
+vt 0.989799 0.297704
+vt 0.697398 0.675067
+vt 0.707544 0.675067
+vt 0.707544 0.972771
+vt 0.697398 0.972771
+vt 0.385464 0.764230
+vt 0.389958 0.764230
+vt 0.389958 0.774104
+vt 0.384218 0.774104
+vt 0.370325 0.774104
+vt 0.364585 0.774104
+vt 0.369080 0.764230
+vt 0.344644 0.764230
+vt 0.344644 0.777523
+vt 0.340103 0.777523
+vt 0.311384 0.777523
+vt 0.306843 0.777523
+vt 0.306843 0.764230
+vt 0.346137 0.764230
+vt 0.350678 0.777523
+vt 0.346137 0.777523
+vt 0.695714 0.688360
+vt 0.697402 0.688360
+vt 0.697402 0.692779
+vt 0.695714 0.692779
+vt 0.695714 0.675067
+vt 0.697398 0.697187
+vt 0.695710 0.697187
+vt 0.038060 0.191342
+vt 0.000000 0.000000
+vt 0.500000 0.000000
+vt 0.146447 0.353554
+vt 0.038060 0.808658
+vt 0.146447 0.646446
+vt 0.500000 1.000000
+vt 0.000000 1.000000
+vt 0.667659 0.962991
+vt 0.640645 0.962991
+vt 0.640645 0.675892
+vt 0.667659 0.675892
+vt 0.694674 0.675892
+vt 0.694673 0.801164
+vt 0.667659 0.801164
+vt 0.694674 0.954012
+vt 0.667659 0.954012
+vt 0.839759 0.000000
+vt 0.839759 0.406024
+vt 0.812745 0.406024
+vt 0.308658 0.461940
+vt 0.500000 0.500000
+vt 0.308658 0.538060
+vt 0.691342 0.461940
+vt 0.853554 0.353553
+vt 0.691342 0.538060
+vt 0.853554 0.646447
+vt 0.961940 0.191342
+vt 0.961940 0.808658
+vt 1.000000 1.000000
+vn 0.000000 -0.630200 0.776400
+vn 0.000000 0.630200 0.776400
+vn -0.549000 0.630200 0.549000
+vn -0.549000 -0.630200 0.549000
+vn -0.776400 0.630200 0.000000
+vn -0.776400 -0.630200 0.000000
+vn -0.549000 0.630200 -0.549000
+vn -0.549000 -0.630200 -0.549000
+vn 0.000000 0.630200 -0.776400
+vn 0.000000 -0.630200 -0.776400
+vn 0.549000 0.630200 -0.549000
+vn 0.549000 -0.630200 -0.549000
+vn 0.776400 0.630200 0.000000
+vn 0.776400 -0.630200 0.000000
+vn 0.549000 0.630200 0.549000
+vn 0.549000 -0.630200 0.549000
+vn -0.074700 -0.413700 0.907300
+vn -0.093700 0.711900 0.696000
+vn -0.790400 0.610100 0.055100
+vn -0.597800 -0.610100 0.520000
+vn -0.694400 0.413700 -0.588700
+vn -0.558400 -0.711900 -0.425900
+vn 0.907300 -0.413700 0.074700
+vn 0.696000 0.711900 0.093700
+vn 0.055100 0.610100 0.790400
+vn 0.520000 -0.610100 0.597800
+vn -0.588700 0.413700 0.694400
+vn -0.425900 -0.711900 0.558400
+vn 0.790400 -0.610100 0.055100
+vn 0.597800 0.610100 0.520000
+vn 0.074700 0.413700 0.907300
+vn 0.093700 -0.711900 0.696000
+vn 0.694400 -0.413700 -0.588700
+vn 0.558400 0.711900 -0.425900
+vn 0.588700 -0.413700 0.694400
+vn 0.425900 0.711900 0.558400
+vn -0.520000 0.610100 0.597800
+vn -0.055100 -0.610100 0.790400
+vn -0.907300 0.413700 0.074700
+vn -0.696000 -0.711900 0.093700
+vn 0.886800 -0.429800 0.169900
+vn 0.742000 -0.665300 0.081800
+vn 0.466800 0.665300 -0.582500
+vn 0.713200 0.698000 -0.063900
+vn 0.549500 -0.698000 -0.459200
+vn 0.506900 0.429800 -0.747200
+vn 0.169900 -0.429800 -0.886800
+vn 0.081800 -0.665300 -0.742000
+vn -0.582500 0.665300 -0.466800
+vn -0.063900 0.698000 -0.713200
+vn -0.459200 -0.698000 -0.549500
+vn -0.747200 0.429800 -0.506900
+vn -0.466800 -0.665300 -0.582500
+vn -0.713200 -0.698000 -0.063900
+vn -0.886800 0.429800 0.169900
+vn -0.742000 0.665300 0.081800
+vn -0.506900 -0.429800 -0.747200
+vn -0.549500 0.698000 -0.459200
+vn 0.747200 -0.429800 -0.506900
+vn 0.582500 -0.665300 -0.466800
+vn -0.081800 0.665300 -0.742000
+vn 0.459200 0.698000 -0.549500
+vn 0.063900 -0.698000 -0.713200
+vn -0.169900 0.429800 -0.886800
+vn 0.438400 0.000000 -0.898800
+vn -0.898800 0.000000 -0.438400
+vn -0.438400 0.000000 0.898800
+vn 0.945500 0.000000 0.325600
+vn 0.325600 0.000000 -0.945500
+vn -0.325600 0.000000 -0.945500
+vn 0.898800 0.000000 -0.438400
+vn -0.325600 0.000000 0.945500
+vn -0.945500 0.000000 0.325600
+vn 0.438400 0.000000 0.898800
+vn 0.325600 0.000000 0.945500
+vn -0.438400 0.000000 -0.898800
+vn -0.749000 0.000000 0.662600
+vn 0.748900 0.000000 0.662700
+vn -0.662600 0.000000 -0.749000
+vn 0.662700 0.000000 -0.748900
+vn 0.061100 0.000000 -0.998100
+vn 0.998100 0.000000 -0.061000
+vn 0.607900 -0.584000 0.537900
+vn -0.662700 0.000000 0.748900
+vn -0.543900 -0.571200 0.614700
+vn -0.998100 0.000000 -0.061100
+vn 0.061000 0.000000 0.998100
+vn -0.577300 -0.577300 -0.577300
+vn -0.707100 0.000000 -0.707100
+vn 0.577300 -0.577300 -0.577300
+vn 0.707100 0.000000 -0.707100
+vn -0.061100 0.000000 0.998100
+vn -0.061000 0.000000 -0.998100
+vn -0.608000 -0.584000 0.537800
+vn 0.543800 -0.571200 0.614800
+vn 0.662600 0.000000 0.749000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn -0.577300 0.577300 -0.577300
+vn 0.000000 0.707100 0.707100
+vn -0.577300 0.577300 0.577300
+vn -0.577300 -0.577300 0.577300
+vn 0.000000 -0.707100 0.707100
+vn -0.689400 -0.665700 0.285500
+vn -0.636300 -0.567700 -0.522200
+vn 0.773400 -0.546900 -0.320400
+vn -0.080700 -0.567700 0.819200
+vn -0.689400 0.665700 0.285500
+vn -0.080700 0.567700 0.819200
+vn 0.773400 0.546900 -0.320400
+vn -0.636300 0.567700 -0.522200
+vn -0.285500 -0.665700 0.689400
+vn -0.819200 -0.567700 0.080700
+vn 0.320400 -0.546900 -0.773400
+vn 0.522200 -0.567700 0.636300
+vn -0.285500 0.665700 0.689400
+vn 0.522200 0.567700 0.636300
+vn 0.320400 0.546900 -0.773400
+vn -0.819200 0.567700 0.080700
+vn 0.285500 -0.665700 0.689400
+vn -0.522200 -0.567700 0.636300
+vn -0.320400 -0.546900 -0.773400
+vn 0.819200 -0.567700 0.080700
+vn 0.285500 0.665700 0.689400
+vn 0.819200 0.567700 0.080700
+vn -0.320400 0.546900 -0.773400
+vn -0.522200 0.567700 0.636300
+vn 0.689400 -0.665700 0.285500
+vn 0.080700 -0.567700 0.819200
+vn -0.773400 -0.546900 -0.320400
+vn 0.636300 -0.567700 -0.522200
+vn 0.689400 0.665700 0.285500
+vn 0.636300 0.567700 -0.522200
+vn -0.773400 0.546900 -0.320400
+vn 0.080700 0.567700 0.819200
+vn 0.074700 -0.413700 -0.907300
+vn 0.093700 0.711900 -0.696000
+vn 0.790400 0.610100 -0.055100
+vn 0.597800 -0.610100 -0.520000
+vn 0.694400 0.413700 0.588700
+vn 0.558400 -0.711900 0.425900
+vn -0.907300 -0.413700 -0.074700
+vn -0.696000 0.711900 -0.093700
+vn -0.055100 0.610100 -0.790400
+vn -0.520000 -0.610100 -0.597800
+vn 0.588700 0.413700 -0.694400
+vn 0.425900 -0.711900 -0.558400
+vn -0.790400 -0.610100 -0.055100
+vn -0.597800 0.610100 -0.520000
+vn -0.074700 0.413700 -0.907300
+vn -0.093700 -0.711900 -0.696000
+vn -0.694400 -0.413700 0.588700
+vn -0.558400 0.711900 0.425900
+vn -0.588700 -0.413700 -0.694400
+vn -0.425900 0.711900 -0.558400
+vn 0.520000 0.610100 -0.597800
+vn 0.055100 -0.610100 -0.790400
+vn 0.907300 0.413700 -0.074700
+vn 0.696000 -0.711900 -0.093700
+vn -0.886800 -0.429800 -0.169900
+vn -0.742000 -0.665300 -0.081800
+vn -0.466800 0.665300 0.582500
+vn -0.713200 0.698000 0.063900
+vn -0.549500 -0.698000 0.459200
+vn -0.506900 0.429800 0.747200
+vn -0.169900 -0.429800 0.886800
+vn -0.081800 -0.665300 0.742000
+vn 0.582500 0.665300 0.466800
+vn 0.063900 0.698000 0.713200
+vn 0.459200 -0.698000 0.549500
+vn 0.747200 0.429800 0.506900
+vn 0.466800 -0.665300 0.582500
+vn 0.713200 -0.698000 0.063900
+vn 0.886800 0.429800 -0.169900
+vn 0.742000 0.665300 -0.081800
+vn 0.506900 -0.429800 0.747200
+vn 0.549500 0.698000 0.459200
+vn -0.747200 -0.429800 0.506900
+vn -0.582500 -0.665300 0.466800
+vn 0.081800 0.665300 0.742000
+vn -0.459200 0.698000 0.549500
+vn -0.063900 -0.698000 0.713200
+vn 0.169900 0.429800 0.886800
+vn 0.898800 0.000000 0.438400
+vn -0.945500 0.000000 -0.325600
+vn -0.898800 0.000000 0.438400
+vn 0.945500 0.000000 -0.325600
+vn 0.749000 0.000000 -0.662600
+vn -0.748900 0.000000 -0.662700
+vn -0.998100 0.000000 0.061000
+vn -0.607900 -0.584000 -0.537900
+vn 0.543900 -0.571200 -0.614700
+vn 0.998100 0.000000 0.061100
+vn 0.577300 -0.577300 0.577300
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn 0.608000 -0.584000 -0.537800
+vn -0.543800 -0.571200 -0.614800
+vn 0.000000 0.000000 -1.000000
+vn 0.577300 0.577300 0.577300
+vn 0.577300 0.577300 -0.577300
+vn 0.689400 -0.665700 -0.285500
+vn 0.636300 -0.567700 0.522200
+vn -0.773400 -0.546900 0.320400
+vn 0.080700 -0.567700 -0.819200
+vn 0.689400 0.665700 -0.285500
+vn 0.080700 0.567700 -0.819200
+vn -0.773400 0.546900 0.320400
+vn 0.636300 0.567700 0.522200
+vn 0.285500 -0.665700 -0.689400
+vn 0.819200 -0.567700 -0.080700
+vn -0.320400 -0.546900 0.773400
+vn -0.522200 -0.567700 -0.636300
+vn 0.285500 0.665700 -0.689400
+vn -0.522200 0.567700 -0.636300
+vn -0.320400 0.546900 0.773400
+vn 0.819200 0.567700 -0.080700
+vn -0.285500 -0.665700 -0.689400
+vn 0.522200 -0.567700 -0.636300
+vn 0.320400 -0.546900 0.773400
+vn -0.819200 -0.567700 -0.080700
+vn -0.285500 0.665700 -0.689400
+vn -0.819200 0.567700 -0.080700
+vn 0.320400 0.546900 0.773400
+vn 0.522200 0.567700 -0.636300
+vn -0.689400 -0.665700 -0.285500
+vn -0.080700 -0.567700 -0.819200
+vn 0.773400 -0.546900 0.320400
+vn -0.636300 -0.567700 0.522200
+vn -0.689400 0.665700 -0.285500
+vn -0.636300 0.567700 0.522200
+vn 0.773400 0.546900 0.320400
+vn -0.080700 0.567700 -0.819200
+g Cylinder_Cylinder_None
+s 1
+f 1/1/1 2/2/2 4/3/3 3/4/4
+f 3/5/4 4/6/3 6/7/5 5/8/6
+f 5/8/6 6/7/5 8/9/7 7/10/8
+f 7/4/8 8/3/7 10/11/9 9/12/10
+f 9/12/10 10/11/9 12/13/11 11/14/12
+f 11/15/12 12/16/11 14/17/13 13/18/14
+f 4/19/3 2/20/2 16/21/15 14/22/13 12/23/11 10/24/9 8/25/7 6/26/5
+f 15/27/16 16/28/15 2/2/2 1/1/1
+f 13/18/14 14/17/13 16/29/15 15/30/16
+f 1/31/1 3/32/4 5/33/6 7/34/8 9/35/10 11/36/12 13/37/14 15/38/16
+f 21/39/17 22/40/18 24/41/19 23/42/20
+f 23/42/20 24/41/19 26/43/21 25/44/22
+f 35/45/23 36/46/24 38/47/25 37/48/26
+f 37/48/26 38/47/25 19/49/27 20/50/28
+f 18/51/29 17/52/30 40/53/31 39/54/32
+f 28/55/33 27/56/34 17/52/30 18/51/29
+f 29/57/35 30/58/36 32/59/37 31/60/38
+f 31/60/38 32/59/37 34/61/39 33/62/40
+f 45/63/17 46/64/18 48/65/19 47/66/20
+f 47/66/20 48/65/19 50/67/21 49/68/22
+f 59/69/23 60/70/24 62/71/25 61/72/26
+f 61/72/26 62/71/25 43/73/27 44/74/28
+f 42/75/29 41/76/30 64/77/31 63/78/32
+f 52/79/33 51/80/34 41/76/30 42/75/29
+f 53/81/35 54/82/36 56/83/37 55/84/38
+f 55/84/38 56/83/37 58/85/39 57/86/40
+f 69/87/41 71/88/42 72/89/43 70/90/44
+f 71/88/42 73/91/45 74/92/46 72/89/43
+f 83/93/47 85/94/48 86/95/49 84/96/50
+f 85/94/48 68/97/51 67/98/52 86/95/49
+f 66/99/53 87/100/54 88/101/55 65/102/56
+f 76/103/57 66/99/53 65/102/56 75/104/58
+f 77/105/59 79/106/60 80/107/61 78/108/62
+f 79/106/60 81/109/63 82/110/64 80/107/61
+f 93/111/41 95/112/42 96/113/43 94/114/44
+f 95/112/42 97/115/45 98/116/46 96/113/43
+f 107/117/47 109/118/48 110/119/49 108/27/50
+f 109/118/48 92/120/51 91/121/52 110/119/49
+f 90/122/53 111/123/54 112/124/55 89/125/56
+f 100/126/57 90/122/53 89/125/56 99/127/58
+f 101/128/59 103/129/60 104/130/61 102/131/62
+f 103/129/60 105/132/63 106/133/64 104/130/61
+f 58/134/39 106/135/64 105/136/63 57/137/40
+f 31/138/38 79/139/60 77/140/59 29/141/35
+f 48/142/19 96/143/43 98/144/46 50/145/21
+f 37/146/26 85/147/48 83/148/47 35/149/23
+f 51/150/34 99/151/58 89/152/56 41/153/30
+f 26/154/21 74/155/46 73/156/45 25/157/22
+f 62/158/25 110/159/49 91/160/52 43/161/27
+f 20/162/28 68/163/51 85/147/48 37/146/26
+f 18/164/29 66/165/53 76/166/57 28/167/33
+f 46/168/18 94/169/44 96/143/43 48/142/19
+f 63/170/32 111/171/54 90/172/53 42/173/29
+f 33/174/40 81/175/63 79/139/60 31/138/38
+f 55/176/38 103/177/60 101/178/59 53/179/35
+f 61/180/26 109/181/48 107/182/47 59/183/23
+f 35/184/23 83/185/47 84/186/50 36/187/24
+f 21/188/17 69/189/41 70/190/44 22/191/18
+f 30/192/36 78/193/62 80/194/61 32/195/37
+f 50/196/21 98/154/46 97/157/45 49/197/22
+f 42/173/29 90/172/53 100/198/57 52/199/33
+f 40/200/31 88/201/55 87/202/54 39/203/32
+f 44/204/28 92/205/51 109/181/48 61/180/26
+f 57/206/40 105/207/63 103/177/60 55/176/38
+f 19/208/27 67/209/52 68/190/51 20/210/28
+f 59/211/23 107/212/47 108/187/50 60/186/24
+f 25/213/22 73/214/45 71/215/42 23/216/20
+f 32/195/37 80/194/61 82/217/64 34/218/39
+f 54/161/36 102/219/62 104/220/61 56/221/37
+f 45/156/17 93/222/41 94/223/44 46/224/18
+f 64/157/31 112/225/55 111/226/54 63/227/32
+f 29/228/35 77/229/59 78/230/62 30/231/36
+f 23/216/20 71/215/42 69/232/41 21/233/17
+f 43/155/27 91/234/52 92/235/51 44/156/28
+f 17/236/30 65/237/56 88/238/55 40/239/31
+f 56/221/37 104/220/61 106/240/64 58/241/39
+f 36/242/24 84/243/50 86/244/49 38/245/25
+f 28/246/33 76/134/57 75/247/58 27/248/34
+f 49/249/22 97/250/45 95/251/42 47/252/20
+f 24/253/19 72/254/43 74/255/46 26/256/21
+f 34/246/39 82/200/64 81/203/63 33/257/40
+f 53/229/35 101/190/59 102/209/62 54/230/36
+f 47/252/20 95/251/42 93/258/41 45/259/17
+f 38/245/25 86/244/49 67/260/52 19/192/27
+f 27/261/34 75/262/58 65/237/56 17/236/30
+f 41/153/30 89/152/56 112/263/55 64/264/31
+f 22/265/18 70/266/44 72/254/43 24/253/19
+f 52/197/33 100/246/57 99/248/58 51/196/34
+f 39/267/32 87/268/54 66/165/53 18/164/29
+f 60/269/24 108/270/50 110/159/49 62/158/25
+f 122/271/65 114/272/66 118/273/66 126/274/65
+f 124/275/67 129/276/68 131/277/68 125/278/67
+f 127/279/66 128/280/66 133/281/69 132/282/69
+f 141/283/70 140/284/70 135/285/71 136/286/71
+f 138/287/68 142/288/68 134/280/72 130/279/72
+f 144/276/73 139/289/74 137/290/74 143/277/73
+f 136/291/71 135/292/71 137/273/74 139/272/74
+f 141/293/70 144/294/73 143/295/73 140/296/70
+f 114/297/66 130/298/72 134/299/72 118/300/66
+f 122/301/65 126/302/65 142/303/68 138/304/68
+f 132/292/69 133/291/69 131/293/68 129/296/68
+f 127/305/66 124/271/67 125/274/67 128/306/66
+f 123/307/75 117/308/71 116/309/71 121/310/75
+f 120/311/73 119/312/73 113/286/76 115/285/76
+f 115/313/76 113/314/76 116/315/71 117/316/71
+f 120/311/73 123/317/75 121/318/75 119/312/73
+f 153/319/77 157/299/78 159/298/78 154/320/77
+f 155/295/79 156/294/79 161/288/80 160/287/80
+f 169/297/81 168/300/81 163/321/82 164/322/82
+f 166/316/83 170/315/78 162/323/84 158/324/85
+f 172/325/86 167/282/87 165/281/87 171/326/86
+f 164/322/82 163/321/82 165/327/87 167/328/87
+f 169/329/81 172/330/86 171/331/86 168/332/81
+f 182/330/88 158/333/85 162/334/84 181/331/89
+f 184/335/90 183/336/91 170/211/78 166/337/83
+f 160/275/80 161/278/80 159/302/78 157/301/78
+f 155/338/79 153/339/77 154/340/77 156/341/79
+f 152/342/92 148/284/82 147/283/82 151/343/92
+f 150/344/86 149/345/86 145/319/93 146/320/93
+f 146/336/93 145/335/93 147/318/82 148/317/82
+f 150/344/86 152/346/92 151/347/92 149/345/86
+f 175/348/94 173/349/95 174/350/96 176/351/77
+f 175/352/94 176/353/77 179/354/89 180/355/88
+f 173/54/95 178/353/90 177/352/91 174/356/96
+f 182/309/88 181/308/89 183/324/91 184/323/90
+f 179/357/89 177/358/91 178/359/90 180/360/88
+f 175/361/94 180/362/88 178/363/90 173/364/95
+f 158/365/85 182/366/88 184/225/90 166/367/83
+f 186/201/97 185/368/97 187/369/97 188/370/97
+f 194/246/98 190/371/99 192/372/88 196/373/100
+f 191/374/101 189/157/102 193/375/103 195/376/104
+f 190/377/99 195/378/104 193/379/103 192/380/88
+f 192/378/88 193/377/103 189/381/102 196/357/100
+f 196/380/100 189/379/102 191/382/101 194/383/98
+f 201/384/105 203/385/106 197/386/107
+f 199/387/108 201/384/105 197/386/107
+f 202/388/109 200/389/110 198/390/111
+f 204/391/112 202/388/109 198/390/111
+f 197/392/107 198/393/111 200/394/110 199/395/108
+f 199/395/108 200/396/110 202/397/109 201/398/105
+f 201/398/105 202/397/109 204/399/112 203/400/106
+f 197/401/107 203/402/106 204/403/112 198/13/111
+f 209/404/113 211/387/114 205/386/115
+f 207/405/116 209/404/113 205/386/115
+f 210/406/117 208/405/118 206/390/119
+f 212/389/120 210/406/117 206/390/119
+f 205/392/115 206/393/119 208/394/118 207/395/116
+f 207/395/116 208/396/118 210/397/117 209/398/113
+f 209/398/113 210/397/117 212/399/120 211/400/114
+f 205/401/115 211/402/114 212/403/120 206/13/119
+f 217/407/121 219/405/122 213/386/123
+f 215/408/124 217/407/121 213/386/123
+f 218/409/125 216/410/126 214/390/127
+f 220/405/128 218/409/125 214/390/127
+f 213/392/123 214/393/127 216/394/126 215/395/124
+f 215/395/124 216/396/126 218/397/125 217/398/121
+f 217/398/121 218/397/125 220/399/128 219/400/122
+f 213/401/123 219/402/122 220/403/128 214/13/127
+f 225/411/129 227/408/130 221/386/131
+f 223/354/132 225/411/129 221/386/131
+f 226/412/133 224/413/134 222/390/135
+f 228/410/136 226/412/133 222/390/135
+f 221/392/131 222/393/135 224/394/134 223/395/132
+f 223/395/132 224/396/134 226/397/133 225/398/129
+f 225/398/129 226/397/133 228/399/136 227/400/130
+f 221/401/131 227/402/130 228/403/136 222/13/135
+f 229/1/10 230/2/9 232/3/11 231/4/12
+f 231/5/12 232/6/11 234/7/13 233/8/14
+f 233/8/14 234/7/13 236/9/15 235/10/16
+f 235/4/16 236/3/15 238/11/2 237/12/1
+f 237/12/1 238/11/2 240/13/3 239/14/4
+f 239/15/4 240/16/3 242/17/5 241/18/6
+f 232/19/11 230/20/9 244/21/7 242/22/5 240/23/3 238/24/2 236/25/15 234/26/13
+f 243/27/8 244/28/7 230/2/9 229/1/10
+f 241/18/6 242/17/5 244/29/7 243/30/8
+f 229/31/10 231/32/12 233/33/14 235/34/16 237/35/1 239/36/4 241/37/6 243/38/8
+f 249/39/137 250/40/138 252/41/139 251/42/140
+f 251/42/140 252/41/139 254/43/141 253/44/142
+f 263/45/143 264/46/144 266/47/145 265/48/146
+f 265/48/146 266/47/145 247/49/147 248/50/148
+f 246/51/149 245/52/150 268/53/151 267/54/152
+f 256/55/153 255/56/154 245/52/150 246/51/149
+f 257/57/155 258/58/156 260/59/157 259/60/158
+f 259/60/158 260/59/157 262/61/159 261/62/160
+f 273/63/137 274/64/138 276/65/139 275/66/140
+f 275/66/140 276/65/139 278/67/141 277/68/142
+f 287/69/143 288/70/144 290/71/145 289/72/146
+f 289/72/146 290/71/145 271/73/147 272/74/148
+f 270/75/149 269/76/150 292/77/151 291/78/152
+f 280/79/153 279/80/154 269/76/150 270/75/149
+f 281/81/155 282/82/156 284/83/157 283/84/158
+f 283/84/158 284/83/157 286/85/159 285/86/160
+f 297/87/161 299/88/162 300/89/163 298/90/164
+f 299/88/162 301/91/165 302/92/166 300/89/163
+f 311/93/167 313/94/168 314/95/169 312/96/170
+f 313/94/168 296/97/171 295/98/172 314/95/169
+f 294/99/173 315/100/174 316/101/175 293/102/176
+f 304/103/177 294/99/173 293/102/176 303/104/178
+f 305/105/179 307/106/180 308/107/181 306/108/182
+f 307/106/180 309/109/183 310/110/184 308/107/181
+f 321/111/161 323/112/162 324/113/163 322/114/164
+f 323/112/162 325/115/165 326/116/166 324/113/163
+f 335/117/167 337/118/168 338/119/169 336/27/170
+f 337/118/168 320/120/171 319/121/172 338/119/169
+f 318/122/173 339/123/174 340/124/175 317/125/176
+f 328/126/177 318/122/173 317/125/176 327/127/178
+f 329/128/179 331/129/180 332/130/181 330/131/182
+f 331/129/180 333/132/183 334/133/184 332/130/181
+f 286/134/159 334/135/184 333/136/183 285/137/160
+f 259/138/158 307/139/180 305/140/179 257/141/155
+f 276/142/139 324/143/163 326/144/166 278/145/141
+f 265/146/146 313/147/168 311/148/167 263/149/143
+f 279/150/154 327/151/178 317/152/176 269/153/150
+f 254/154/141 302/155/166 301/156/165 253/157/142
+f 290/158/145 338/159/169 319/160/172 271/161/147
+f 248/162/148 296/163/171 313/147/168 265/146/146
+f 246/164/149 294/165/173 304/166/177 256/167/153
+f 274/168/138 322/169/164 324/143/163 276/142/139
+f 291/170/152 339/171/174 318/172/173 270/173/149
+f 261/174/160 309/175/183 307/139/180 259/138/158
+f 283/176/158 331/177/180 329/178/179 281/179/155
+f 289/180/146 337/181/168 335/182/167 287/183/143
+f 263/184/143 311/185/167 312/186/170 264/187/144
+f 249/188/137 297/189/161 298/190/164 250/191/138
+f 258/192/156 306/193/182 308/194/181 260/195/157
+f 278/196/141 326/154/166 325/157/165 277/197/142
+f 270/173/149 318/172/173 328/198/177 280/199/153
+f 268/200/151 316/201/175 315/202/174 267/203/152
+f 272/204/148 320/205/171 337/181/168 289/180/146
+f 285/206/160 333/207/183 331/177/180 283/176/158
+f 247/208/147 295/209/172 296/190/171 248/210/148
+f 287/211/143 335/212/167 336/187/170 288/186/144
+f 253/213/142 301/214/165 299/215/162 251/216/140
+f 260/195/157 308/194/181 310/217/184 262/218/159
+f 282/161/156 330/219/182 332/220/181 284/221/157
+f 273/156/137 321/222/161 322/223/164 274/224/138
+f 292/157/151 340/225/175 339/226/174 291/227/152
+f 257/228/155 305/229/179 306/230/182 258/231/156
+f 251/216/140 299/215/162 297/232/161 249/233/137
+f 271/155/147 319/234/172 320/235/171 272/156/148
+f 245/236/150 293/237/176 316/238/175 268/239/151
+f 284/221/157 332/220/181 334/240/184 286/241/159
+f 264/242/144 312/243/170 314/244/169 266/245/145
+f 256/246/153 304/134/177 303/247/178 255/248/154
+f 277/249/142 325/250/165 323/251/162 275/252/140
+f 252/253/139 300/254/163 302/255/166 254/256/141
+f 262/246/159 310/200/184 309/203/183 261/257/160
+f 281/229/155 329/190/179 330/209/182 282/230/156
+f 275/252/140 323/251/162 321/258/161 273/259/137
+f 266/245/145 314/244/169 295/260/172 247/192/147
+f 255/261/154 303/262/178 293/237/176 245/236/150
+f 269/153/150 317/152/176 340/263/175 292/264/151
+f 250/265/138 298/266/164 300/254/163 252/253/139
+f 280/197/153 328/246/177 327/248/178 279/196/154
+f 267/267/152 315/268/174 294/165/173 246/164/149
+f 288/269/144 336/270/170 338/159/169 290/158/145
+f 350/271/67 342/272/185 346/273/185 354/274/67
+f 352/275/65 357/276/186 359/277/186 353/278/65
+f 355/279/185 356/280/185 361/281/72 360/282/72
+f 369/283/75 368/284/75 363/285/187 364/286/187
+f 366/287/186 370/288/186 362/280/69 358/279/69
+f 372/276/188 367/289/76 365/290/76 371/277/188
+f 364/291/187 363/292/187 365/273/76 367/272/76
+f 369/293/75 372/294/188 371/295/188 368/296/75
+f 342/297/185 358/298/69 362/299/69 346/300/185
+f 350/301/67 354/302/67 370/303/186 366/304/186
+f 360/292/72 361/291/72 359/293/186 357/296/186
+f 355/305/185 352/271/65 353/274/65 356/306/185
+f 351/307/70 345/308/187 344/309/187 349/310/70
+f 348/311/188 347/312/188 341/286/74 343/285/74
+f 343/313/74 341/314/74 344/315/187 345/316/187
+f 348/311/188 351/317/70 349/318/70 347/312/188
+f 381/319/189 385/299/190 387/298/190 382/320/189
+f 383/295/96 384/294/96 389/288/84 388/287/84
+f 397/297/92 396/300/92 391/321/191 392/322/191
+f 394/316/192 398/315/190 390/323/80 386/324/193
+f 400/325/194 395/282/93 393/281/93 399/326/194
+f 392/322/191 391/321/191 393/327/93 395/328/93
+f 397/329/92 400/330/194 399/331/194 396/332/92
+f 410/330/195 386/333/193 390/334/80 409/331/196
+f 412/335/103 411/336/197 398/211/190 394/337/192
+f 388/275/84 389/278/84 387/302/190 385/301/190
+f 383/338/96 381/339/189 382/340/189 384/341/96
+f 380/342/81 376/284/191 375/283/191 379/343/81
+f 378/344/194 377/345/194 373/319/87 374/320/87
+f 374/336/87 373/335/87 375/318/191 376/317/191
+f 378/344/194 380/346/81 379/347/81 377/345/194
+f 403/348/198 401/349/199 402/350/79 404/351/189
+f 403/352/198 404/353/189 407/354/196 408/355/195
+f 401/54/199 406/353/103 405/352/197 402/356/79
+f 410/309/195 409/308/196 411/324/197 412/323/103
+f 407/357/196 405/358/197 406/359/103 408/360/195
+f 403/361/198 408/362/195 406/363/103 401/364/199
+f 386/365/193 410/366/195 412/225/103 394/367/192
+f 414/201/200 413/368/200 415/369/200 416/370/200
+f 422/246/101 418/371/104 420/372/195 424/373/201
+f 419/374/98 417/157/202 421/375/90 423/376/99
+f 418/377/104 423/378/99 421/379/90 420/380/195
+f 420/378/195 421/377/90 417/381/202 424/357/201
+f 424/380/201 417/379/202 419/382/98 422/383/101
+f 429/384/203 431/385/204 425/386/205
+f 427/387/206 429/384/203 425/386/205
+f 430/388/207 428/389/208 426/390/209
+f 432/391/210 430/388/207 426/390/209
+f 425/392/205 426/393/209 428/394/208 427/395/206
+f 427/395/206 428/396/208 430/397/207 429/398/203
+f 429/398/203 430/397/207 432/399/210 431/400/204
+f 425/401/205 431/402/204 432/403/210 426/13/209
+f 437/404/211 439/387/212 433/386/213
+f 435/405/214 437/404/211 433/386/213
+f 438/406/215 436/405/216 434/390/217
+f 440/389/218 438/406/215 434/390/217
+f 433/392/213 434/393/217 436/394/216 435/395/214
+f 435/395/214 436/396/216 438/397/215 437/398/211
+f 437/398/211 438/397/215 440/399/218 439/400/212
+f 433/401/213 439/402/212 440/403/218 434/13/217
+f 445/407/219 447/405/220 441/386/221
+f 443/408/222 445/407/219 441/386/221
+f 446/409/223 444/410/224 442/390/225
+f 448/405/226 446/409/223 442/390/225
+f 441/392/221 442/393/225 444/394/224 443/395/222
+f 443/395/222 444/396/224 446/397/223 445/398/219
+f 445/398/219 446/397/223 448/399/226 447/400/220
+f 441/401/221 447/402/220 448/403/226 442/13/225
+f 453/411/227 455/408/228 449/386/229
+f 451/354/230 453/411/227 449/386/229
+f 454/412/231 452/413/232 450/390/233
+f 456/410/234 454/412/231 450/390/233
+f 449/392/229 450/393/233 452/394/232 451/395/230
+f 451/395/230 452/396/232 454/397/231 453/398/227
+f 453/398/227 454/397/231 456/399/234 455/400/228
+f 449/401/229 455/402/228 456/403/234 450/13/233
diff --git a/homedecor_modpack/homedecor/models/homedecor_sport_bench.obj b/homedecor_modpack/homedecor/models/homedecor_sport_bench.obj
new file mode 100644
index 0000000..d6648ce
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_sport_bench.obj
@@ -0,0 +1,703 @@
+# Blender v2.73 (sub 0) OBJ File: 'sport-bench.blend'
+# www.blender.org
+o Cylinder
+v 0.187500 -0.250000 0.437500
+v -0.187500 -0.250000 0.437500
+v -0.187500 -0.250000 -0.500000
+v 0.187500 -0.250000 -0.500000
+v 0.187500 -0.187500 0.437500
+v -0.187500 -0.187500 0.437500
+v -0.187500 -0.187500 -0.500000
+v 0.187500 -0.187500 -0.500000
+v 0.187500 -0.125000 0.437500
+v -0.187500 -0.125000 0.437500
+v -0.187500 -0.125000 -0.500000
+v 0.187500 -0.125000 -0.500000
+v 0.250000 -0.500000 0.437500
+v 0.187500 -0.500000 0.437500
+v 0.187500 -0.500000 0.375000
+v 0.250000 -0.500000 0.375000
+v 0.250000 0.375000 0.437500
+v 0.187500 0.375000 0.437500
+v 0.187500 0.375000 0.375000
+v 0.250000 0.375000 0.375000
+v -0.187500 -0.500000 0.437500
+v -0.250000 -0.500000 0.437500
+v -0.250000 -0.500000 0.375000
+v -0.187500 -0.500000 0.375000
+v -0.187500 0.375000 0.437500
+v -0.250000 0.375000 0.437500
+v -0.250000 0.375000 0.375000
+v -0.187500 0.375000 0.375000
+v 0.187500 -0.500000 -0.437500
+v 0.125000 -0.500000 -0.437500
+v 0.125000 -0.500000 -0.500000
+v 0.187500 -0.500000 -0.500000
+v 0.187500 -0.250000 -0.437500
+v 0.125000 -0.250000 -0.437500
+v 0.125000 -0.250000 -0.500000
+v 0.187500 -0.250000 -0.500000
+v -0.125000 -0.500000 -0.437500
+v -0.187500 -0.500000 -0.437500
+v -0.187500 -0.500000 -0.500000
+v -0.125000 -0.500000 -0.500000
+v -0.125000 -0.250000 -0.437500
+v -0.187500 -0.250000 -0.437500
+v -0.187500 -0.250000 -0.500000
+v -0.125000 -0.250000 -0.500000
+v 0.187500 -0.312500 0.437500
+v -0.187500 -0.312500 0.437500
+v -0.187500 -0.312500 0.375000
+v 0.187500 -0.312500 0.375000
+v 0.187500 -0.250000 0.437500
+v -0.187500 -0.250000 0.437500
+v -0.187500 -0.250000 0.375000
+v 0.187500 -0.250000 0.375000
+v -0.203125 0.093750 0.375000
+v -0.234375 0.093750 0.375000
+v -0.234375 0.093750 0.281250
+v -0.203125 0.093750 0.281250
+v -0.203125 0.125000 0.375000
+v -0.234375 0.125000 0.375000
+v -0.234375 0.125000 0.312500
+v -0.203125 0.125000 0.312500
+v 0.234375 0.093750 0.375000
+v 0.203125 0.093750 0.375000
+v 0.203125 0.093750 0.281250
+v 0.234375 0.093750 0.281250
+v 0.234375 0.125000 0.375000
+v 0.203125 0.125000 0.375000
+v 0.203125 0.125000 0.312500
+v 0.234375 0.125000 0.312500
+v -0.234375 0.156250 0.281250
+v -0.203125 0.156250 0.281250
+v -0.203125 0.125000 0.312500
+v -0.234375 0.125000 0.312500
+v -0.234375 0.156250 0.312500
+v -0.203125 0.156250 0.312500
+v 0.203125 0.156250 0.281250
+v 0.234375 0.156250 0.281250
+v 0.234375 0.125000 0.312500
+v 0.203125 0.125000 0.312500
+v 0.203125 0.156250 0.312500
+v 0.234375 0.156250 0.312500
+v 0.203125 0.093750 0.375000
+v 0.203125 0.093750 0.281250
+v 0.203125 0.125000 0.375000
+v 0.203125 0.125000 0.312500
+v 0.203125 0.156250 0.281250
+v 0.203125 0.125000 0.312500
+v 0.203125 0.156250 0.312500
+v -0.203125 0.093750 0.375000
+v -0.203125 0.093750 0.281250
+v -0.203125 0.125000 0.375000
+v -0.203125 0.125000 0.312500
+v -0.203125 0.156250 0.281250
+v -0.203125 0.125000 0.312500
+v -0.203125 0.156250 0.312500
+v -0.234375 0.093750 0.375000
+v -0.234375 0.093750 0.281250
+v -0.234375 0.125000 0.375000
+v -0.234375 0.125000 0.312500
+v -0.234375 0.156250 0.281250
+v -0.234375 0.125000 0.312500
+v -0.234375 0.156250 0.312500
+v -0.500000 0.153872 0.337771
+v 0.500000 0.153871 0.337771
+v -0.500000 0.145415 0.329314
+v 0.500000 0.145415 0.329314
+v -0.500000 0.133456 0.329314
+v 0.500000 0.133456 0.329314
+v -0.500000 0.125000 0.337771
+v 0.500000 0.125000 0.337771
+v -0.500000 0.125000 0.349729
+v 0.500000 0.125000 0.349729
+v -0.500000 0.133456 0.358186
+v 0.500000 0.133456 0.358186
+v -0.500000 0.145415 0.358186
+v 0.500000 0.145415 0.358186
+v -0.500000 0.153872 0.349729
+v 0.500000 0.153871 0.349729
+v -0.312500 0.269353 0.256942
+v -0.375000 0.269353 0.256942
+v 0.312500 0.269353 0.256942
+v 0.375000 0.269353 0.256942
+v 0.312500 0.226244 0.213833
+v 0.375000 0.226244 0.213833
+v 0.312500 0.169919 0.190502
+v 0.375000 0.169919 0.190502
+v 0.312500 0.108953 0.190502
+v 0.375000 0.108953 0.190502
+v 0.312500 0.052628 0.213833
+v 0.375000 0.052628 0.213833
+v 0.312500 0.009519 0.256942
+v 0.375000 0.009519 0.256942
+v 0.312500 -0.013812 0.313267
+v 0.375000 -0.013812 0.313267
+v 0.312500 -0.013812 0.374233
+v 0.375000 -0.013812 0.374233
+v 0.312500 0.009519 0.430558
+v 0.375000 0.009519 0.430558
+v 0.312500 0.052628 0.473667
+v 0.375000 0.052628 0.473667
+v 0.312500 0.108953 0.496998
+v 0.375000 0.108953 0.496998
+v 0.312500 0.169919 0.496998
+v 0.375000 0.169919 0.496998
+v 0.312500 0.226244 0.473667
+v 0.375000 0.226244 0.473667
+v 0.312500 0.269353 0.430558
+v 0.375000 0.269353 0.430558
+v 0.312500 0.292684 0.374233
+v 0.375000 0.292684 0.374233
+v 0.312500 0.292684 0.313267
+v 0.375000 0.292684 0.313267
+v -0.375000 0.226244 0.213833
+v -0.312500 0.226244 0.213833
+v -0.375000 0.169919 0.190502
+v -0.312500 0.169919 0.190502
+v -0.375000 0.108953 0.190502
+v -0.312500 0.108953 0.190502
+v -0.375000 0.052628 0.213833
+v -0.312500 0.052628 0.213833
+v -0.375000 0.009519 0.256942
+v -0.312500 0.009519 0.256942
+v -0.375000 -0.013812 0.313267
+v -0.312500 -0.013812 0.313267
+v -0.375000 -0.013812 0.374233
+v -0.312500 -0.013812 0.374233
+v -0.375000 0.009519 0.430558
+v -0.312500 0.009519 0.430558
+v -0.375000 0.052628 0.473667
+v -0.312500 0.052628 0.473667
+v -0.375000 0.108953 0.496998
+v -0.312500 0.108953 0.496998
+v -0.375000 0.169919 0.496998
+v -0.312500 0.169919 0.496998
+v -0.375000 0.226244 0.473667
+v -0.312500 0.226244 0.473667
+v -0.375000 0.269353 0.430558
+v -0.312500 0.269353 0.430558
+v -0.375000 0.292684 0.374233
+v -0.312500 0.292684 0.374233
+v -0.375000 0.292684 0.313267
+v -0.312500 0.292684 0.313267
+v -0.375000 0.168307 0.331791
+v -0.406250 0.168307 0.331791
+v 0.375000 0.168307 0.331791
+v 0.406250 0.168307 0.331791
+v 0.375000 0.151395 0.314879
+v 0.406250 0.151395 0.314879
+v 0.375000 0.127477 0.314879
+v 0.406250 0.127477 0.314879
+v 0.375000 0.110565 0.331791
+v 0.406250 0.110565 0.331791
+v 0.375000 0.110565 0.355709
+v 0.406250 0.110565 0.355709
+v 0.375000 0.127477 0.372621
+v 0.406250 0.127477 0.372621
+v 0.375000 0.151395 0.372621
+v 0.406250 0.151395 0.372621
+v 0.375000 0.168307 0.355709
+v 0.406250 0.168307 0.355709
+v -0.406250 0.151395 0.314879
+v -0.375000 0.151395 0.314879
+v -0.406250 0.127477 0.314879
+v -0.375000 0.127477 0.314879
+v -0.406250 0.110565 0.331791
+v -0.375000 0.110565 0.331791
+v -0.406250 0.110565 0.355709
+v -0.375000 0.110565 0.355709
+v -0.406250 0.127477 0.372621
+v -0.375000 0.127477 0.372621
+v -0.406250 0.151395 0.372621
+v -0.375000 0.151395 0.372621
+v -0.406250 0.168307 0.355709
+v -0.375000 0.168307 0.355709
+v -0.281250 0.168307 0.331791
+v -0.312500 0.168307 0.331791
+v -0.312500 0.151395 0.314879
+v -0.281250 0.151395 0.314879
+v -0.312500 0.127477 0.314879
+v -0.281250 0.127477 0.314879
+v -0.312500 0.110565 0.331791
+v -0.281250 0.110565 0.331791
+v -0.312500 0.110565 0.355709
+v -0.281250 0.110565 0.355709
+v -0.312500 0.127477 0.372621
+v -0.281250 0.127477 0.372621
+v -0.312500 0.151395 0.372621
+v -0.281250 0.151395 0.372621
+v -0.312500 0.168307 0.355709
+v -0.281250 0.168307 0.355709
+v 0.312500 0.168307 0.331791
+v 0.281250 0.168307 0.331791
+v 0.281250 0.151395 0.314879
+v 0.312500 0.151395 0.314879
+v 0.281250 0.127477 0.314879
+v 0.312500 0.127477 0.314879
+v 0.281250 0.110565 0.331791
+v 0.312500 0.110565 0.331791
+v 0.281250 0.110565 0.355709
+v 0.312500 0.110565 0.355709
+v 0.281250 0.127477 0.372621
+v 0.312500 0.127477 0.372621
+v 0.281250 0.151395 0.372621
+v 0.312500 0.151395 0.372621
+v 0.281250 0.168307 0.355709
+v 0.312500 0.168307 0.355709
+vt 0.687500 0.375000
+vt 0.312500 0.375000
+vt 0.312500 0.312500
+vt 0.687500 0.312500
+vt 1.000000 0.375000
+vt 0.062500 0.375000
+vt 0.062500 0.312500
+vt 1.000000 0.312500
+vt 0.062500 0.687500
+vt 1.000000 0.687500
+vt 0.750000 0.937500
+vt 0.687500 0.937500
+vt 0.687500 0.062500
+vt 0.750000 0.062500
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.062500
+vt 1.000000 0.062500
+vt 0.312500 0.937500
+vt 0.250000 0.937500
+vt 0.250000 0.062500
+vt 0.312500 0.062500
+vt 0.062500 0.937500
+vt 0.000000 0.937500
+vt 0.000000 0.062500
+vt 0.062500 0.062500
+vt 0.000000 0.750000
+vt 0.000000 0.687500
+vt 0.062500 0.750000
+vt 0.250000 0.875000
+vt 0.312500 0.875000
+vt 0.000000 0.312500
+vt 0.000000 0.250000
+vt 0.062500 0.250000
+vt 0.687500 0.875000
+vt 0.750000 0.875000
+vt 0.625000 0.312500
+vt 0.625000 0.062500
+vt 0.375000 0.312500
+vt 0.375000 0.062500
+vt 0.937500 0.312500
+vt 0.937500 0.687500
+vt 0.937500 0.625000
+vt 1.000000 0.625000
+vt 0.187500 0.250000
+vt 0.187500 0.312500
+vt 0.937500 0.375000
+vt 0.312500 0.250000
+vt 0.687500 0.250000
+vt 0.687500 0.812500
+vt 0.750000 0.812500
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.250000 0.812500
+vt 0.312500 0.812500
+vt 0.687500 0.750000
+vt 0.750000 0.750000
+vt 0.312500 0.687500
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.312500 0.750000
+vt 0.750000 0.687500
+vt 0.687500 0.687500
+vt 0.187500 0.937500
+vt 0.187500 0.875000
+vt 0.062500 0.875000
+vt 0.062500 0.812500
+vt 0.812500 0.875000
+vt 0.812500 0.937500
+vt 0.937500 0.875000
+vt 0.937500 0.812500
+vt 0.812500 0.000000
+vt 0.812500 1.000000
+vt 0.750000 1.000000
+vt 0.750000 0.000000
+vt 0.687500 1.000000
+vt 0.687500 0.000000
+vt 0.625000 1.000000
+vt 0.625000 0.000000
+vt 0.562500 1.000000
+vt 0.562500 0.000000
+vt 0.500000 1.000000
+vt 0.500000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 0.343750 0.200444
+vt 0.325444 0.218750
+vt 0.299556 0.218750
+vt 0.281250 0.200444
+vt 0.281250 0.174556
+vt 0.299556 0.156250
+vt 0.325444 0.156250
+vt 0.343750 0.174556
+vt 0.875000 0.000000
+vt 0.875000 1.000000
+vt 0.325444 0.218750
+vt 0.325444 0.156250
+vt 0.299556 0.156250
+vt 0.299556 0.218750
+vt -0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.187500 0.062500
+vt 0.187500 -0.000000
+vt 0.250000 -0.000000
+vt 0.437500 0.062500
+vt 0.437500 -0.000000
+vt 0.500000 0.062500
+vt 0.312500 -0.000000
+vt 0.375000 -0.000000
+vt 0.150888 0.250000
+vt 0.187500 0.213388
+vt 0.187500 0.161612
+vt 0.150888 0.125000
+vt 0.099112 0.125000
+vt 0.062500 0.161612
+vt 0.062500 0.213388
+vt 0.099112 0.250000
+vt 0.125000 -0.000000
+vt 0.125000 0.062500
+vt 0.375000 0.187500
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 0.375000 0.250000
+vt 0.250000 0.375000
+vt 0.312500 0.437500
+vt 0.250000 0.437500
+vt 0.375000 0.125000
+vt 0.437500 0.125000
+vt 0.312500 0.500000
+vt 0.250000 0.500000
+vt 0.312500 0.562500
+vt 0.250000 0.562500
+vt 0.312500 0.625000
+vt 0.250000 0.625000
+vt 0.375000 0.937500
+vt 0.437500 0.937500
+vt 0.437500 1.000000
+vt 0.375000 1.000000
+vt 0.375000 0.875000
+vt 0.437500 0.875000
+vt 0.375000 0.812500
+vt 0.437500 0.812500
+vt 0.375000 0.750000
+vt 0.437500 0.750000
+vt 0.375000 0.687500
+vt 0.437500 0.687500
+vt 0.375000 0.625000
+vt 0.437500 0.625000
+vt 0.312500 1.000000
+vt 0.250000 1.000000
+vt 0.375000 0.562500
+vt 0.437500 0.562500
+vt 0.460336 0.497468
+vt 0.502532 0.539664
+vt 0.557663 0.562500
+vt 0.617337 0.562500
+vt 0.672468 0.539664
+vt 0.714664 0.497468
+vt 0.737500 0.442337
+vt 0.737500 0.382663
+vt 0.714664 0.327532
+vt 0.672468 0.285336
+vt 0.617337 0.262500
+vt 0.557663 0.262500
+vt 0.502532 0.285336
+vt 0.460336 0.327532
+vt 0.437500 0.382663
+vt 0.437500 0.442337
+vt 0.375000 0.500000
+vt 0.437500 0.500000
+vt 0.312500 0.125000
+vt 0.250000 0.125000
+vt 0.437500 0.312500
+vt 0.375000 0.437500
+vt 0.437500 0.437500
+vt 0.312500 0.187500
+vt 0.250000 0.187500
+vt 0.437500 0.375000
+vt 0.375000 0.375000
+vt 0.250000 0.250000
+vt 0.127532 0.914664
+vt 0.085336 0.872468
+vt 0.062500 0.817337
+vt 0.062500 0.757663
+vt 0.085336 0.702532
+vt 0.127532 0.660336
+vt 0.182663 0.637500
+vt 0.242337 0.637500
+vt 0.297468 0.660336
+vt 0.339664 0.702532
+vt 0.362500 0.757663
+vt 0.362500 0.817337
+vt 0.339664 0.872468
+vt 0.297468 0.914664
+vt 0.242337 0.937500
+vt 0.182663 0.937500
+vt 0.250000 0.312500
+vt 0.502532 0.914664
+vt 0.460336 0.872468
+vt 0.437500 0.817337
+vt 0.437500 0.757663
+vt 0.460336 0.702532
+vt 0.502532 0.660336
+vt 0.557663 0.637500
+vt 0.617337 0.637500
+vt 0.672468 0.660336
+vt 0.714664 0.702532
+vt 0.737500 0.757663
+vt 0.737500 0.817337
+vt 0.714664 0.872468
+vt 0.672468 0.914664
+vt 0.617337 0.937500
+vt 0.557663 0.937500
+vt 0.085336 0.497468
+vt 0.127532 0.539664
+vt 0.182663 0.562500
+vt 0.242337 0.562500
+vt 0.297468 0.539664
+vt 0.339664 0.497468
+vt 0.362500 0.442337
+vt 0.362500 0.382663
+vt 0.339664 0.327532
+vt 0.297468 0.285336
+vt 0.242337 0.262500
+vt 0.182663 0.262500
+vt 0.127532 0.285336
+vt 0.085336 0.327532
+vt 0.062500 0.382663
+vt 0.062500 0.442337
+vt 1.000000 0.250000
+vt 1.000000 0.750000
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.577300 -0.577300 0.577300
+vn 0.577300 -0.577300 0.577300
+vn -0.707100 0.000000 -0.707100
+vn -0.577300 -0.577300 -0.577300
+vn 0.707100 0.000000 -0.707100
+vn 0.577300 -0.577300 -0.577300
+vn 0.577300 0.577300 0.577300
+vn -0.577300 0.577300 0.577300
+vn -0.577300 0.577300 -0.577300
+vn 0.577300 0.577300 -0.577300
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -0.707100 -0.707100
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -0.707100 0.707100
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.707100 -0.707100 -0.000000
+vn 0.577400 -0.577400 -0.577400
+vn 0.000000 0.707100 0.707100
+vn 0.577400 0.577400 0.577400
+vn 0.000000 0.707100 -0.707100
+vn 1.000000 0.000000 -0.000000
+vn -1.000000 -0.000000 0.000000
+vn -0.630200 0.717300 -0.297100
+vn 0.630200 0.717300 -0.297100
+vn 0.630200 0.297100 -0.717300
+vn -0.630200 0.297100 -0.717300
+vn 0.630200 -0.297100 -0.717300
+vn -0.630200 -0.297100 -0.717300
+vn 0.630200 -0.717300 -0.297100
+vn -0.630200 -0.717300 -0.297100
+vn 0.630200 -0.717300 0.297100
+vn -0.630200 -0.717300 0.297100
+vn 0.630200 -0.297100 0.717300
+vn -0.630200 -0.297100 0.717300
+vn 0.630200 0.297100 0.717300
+vn -0.630200 0.297100 0.717300
+vn 0.630200 0.717300 0.297100
+vn -0.630200 0.717300 0.297100
+vn 0.000000 -0.382700 0.923900
+vn 0.000000 0.382700 0.923900
+vn 0.000000 0.923900 -0.382700
+vn 0.000000 0.382700 -0.923900
+vn 0.000000 -0.923900 0.382700
+vn 0.000000 -0.382700 -0.923900
+vn 0.000000 -0.923900 -0.382700
+vn 0.000000 0.923900 0.382700
+vn -0.665700 0.620400 0.414600
+vn 0.665700 0.620400 0.414600
+vn 0.665700 0.731900 0.145600
+vn -0.665700 0.731900 0.145600
+vn -0.665700 0.620400 -0.414600
+vn 0.665700 0.620400 -0.414600
+vn 0.665700 0.414600 -0.620400
+vn -0.665700 0.414600 -0.620400
+vn -0.665700 0.414600 0.620400
+vn 0.665700 0.414600 0.620400
+vn 0.665700 0.145600 -0.731900
+vn -0.665700 0.145600 -0.731900
+vn -0.665700 0.145600 0.731900
+vn 0.665700 0.145600 0.731900
+vn 0.665700 -0.145600 -0.731900
+vn -0.665700 -0.145600 -0.731900
+vn -0.665700 -0.145600 0.731900
+vn 0.665700 -0.145600 0.731900
+vn 0.665700 -0.414600 -0.620400
+vn -0.665700 -0.414600 -0.620400
+vn -0.665700 -0.414600 0.620400
+vn 0.665700 -0.414600 0.620400
+vn 0.665700 -0.620400 -0.414600
+vn -0.665700 -0.620400 -0.414600
+vn -0.665700 -0.620400 0.414600
+vn 0.665700 -0.620400 0.414600
+vn 0.665700 -0.731900 -0.145600
+vn -0.665700 -0.731900 -0.145600
+vn -0.665700 -0.731900 0.145600
+vn 0.665700 -0.731900 0.145600
+vn -0.665700 0.731900 -0.145600
+vn 0.665700 0.731900 -0.145600
+vn 0.665700 0.731800 -0.145600
+g Cylinder_Cylinder_metal
+s 1
+f 5/1/1 6/2/2 2/3/3 1/4/4
+f 6/5/2 7/6/5 3/7/6 2/8/3
+f 7/1/5 8/2/7 4/3/8 3/4/6
+f 8/5/7 5/6/1 1/7/4 4/8/8
+f 1/9/4 2/7/3 3/8/6 4/10/8
+f 17/11/9 18/12/10 14/13/3 13/14/4
+f 18/15/10 19/16/11 15/17/6 14/18/3
+f 19/19/11 20/20/12 16/21/8 15/22/6
+f 20/23/12 17/24/9 13/25/4 16/26/8
+f 13/27/4 14/28/3 15/9/6 16/29/8
+f 20/30/12 19/31/11 18/19/10 17/20/9
+f 25/19/9 26/20/10 22/21/3 21/22/4
+f 26/15/10 27/16/11 23/17/6 22/18/3
+f 27/11/11 28/12/12 24/13/8 23/14/6
+f 28/23/12 25/24/9 21/25/4 24/26/8
+f 21/32/4 22/33/3 23/34/6 24/7/8
+f 28/35/12 27/36/11 26/11/10 25/12/9
+f 33/4/1 34/37/2 30/38/3 29/13/4
+f 34/7/2 35/32/5 31/25/6 30/26/3
+f 35/39/5 36/3/7 32/22/8 31/40/6
+f 36/8/7 33/41/1 29/17/4 32/18/8
+f 29/42/4 30/43/3 31/44/6 32/10/8
+f 53/7/13 54/34/13 55/45/14 56/46/14
+f 41/39/1 42/3/2 38/22/3 37/40/4
+f 42/7/2 43/32/5 39/25/6 38/26/3
+f 43/4/5 44/37/7 40/38/8 39/13/6
+f 44/8/7 41/41/1 37/17/4 40/18/8
+f 37/47/4 38/41/3 39/8/6 40/5/8
+f 49/4/15 50/3/15 46/48/16 45/49/16
+f 57/35/17 60/50/17 59/51/17 58/36/17
+f 51/4/18 52/3/18 48/48/14 47/49/14
+f 45/28/16 46/32/16 47/7/14 48/9/14
+f 61/29/19 62/9/13 63/52/14 64/53/20
+f 65/30/17 68/54/17 67/55/17 66/31/17
+f 73/51/21 74/50/21 70/56/17 69/57/17
+f 71/58/15 74/55/21 73/54/21 72/59/15
+f 79/55/21 80/54/22 76/60/12 75/61/23
+f 77/62/15 80/51/22 79/50/21 78/63/15
+f 76/20/12 80/64/22 68/65/24 64/54/20
+f 65/66/24 61/67/19 64/54/20 77/65/24
+f 85/11/25 82/51/25 84/68/25 87/69/25
+f 83/70/25 86/68/25 82/51/25 81/71/25
+f 92/20/24 94/64/24 91/65/24 89/54/24
+f 90/66/24 88/67/24 89/54/24 93/65/24
+f 99/11/25 96/51/25 98/68/25 101/69/25
+f 97/70/25 100/68/25 96/51/25 95/71/25
+f 99/51/18 92/50/18 56/63/14 55/62/14
+f 63/58/14 75/55/23 76/54/12 64/59/20
+g Cylinder_Cylinder_bar
+f 102/72/26 103/73/27 105/74/28 104/75/29
+f 104/75/29 105/74/28 107/76/30 106/77/31
+f 106/77/31 107/76/30 109/78/32 108/79/33
+f 108/79/33 109/78/32 111/80/34 110/81/35
+f 110/81/35 111/80/34 113/82/36 112/83/37
+f 112/84/37 113/85/36 115/86/38 114/87/39
+f 105/88/28 103/89/27 117/90/40 115/91/38 113/92/36 111/93/34 109/94/32 107/95/30
+f 116/96/41 117/97/40 103/73/27 102/72/26
+f 114/87/39 115/86/38 117/97/40 116/96/41
+f 102/98/26 104/88/29 106/95/31 108/99/33 110/100/35 112/92/37 114/91/39 116/101/41
+f 208/25/37 209/102/42 211/103/43 210/26/39
+f 184/104/44 185/105/27 187/106/28 186/21/45
+f 206/107/35 207/108/46 209/83/42 208/109/37
+f 186/21/45 187/106/28 189/110/30 188/22/47
+f 204/40/33 205/111/48 207/108/46 206/107/35
+f 188/22/47 189/110/30 191/111/32 190/40/48
+f 183/112/26 200/113/29 202/114/31 204/115/33 206/116/35 208/117/37 210/118/39 212/119/41
+f 202/22/31 203/110/47 205/111/48 204/40/33
+f 190/40/48 191/111/32 193/108/34 192/107/46
+f 210/26/39 211/103/43 213/120/49 212/121/41
+f 200/21/29 201/106/45 203/110/47 202/22/31
+f 192/107/46 193/108/34 195/83/36 194/109/42
+f 212/121/41 213/120/49 182/105/44 183/104/26
+f 183/104/26 182/105/44 201/106/45 200/21/29
+f 194/25/42 195/102/36 197/103/38 196/26/43
+f 187/113/28 185/112/27 199/119/40 197/118/38 195/117/36 193/116/34 191/115/32 189/114/30
+f 198/121/49 199/120/40 185/105/27 184/104/44
+f 196/26/43 197/103/38 199/120/40 198/121/49
+f 224/25/42 225/102/36 227/103/38 226/26/43
+f 222/107/46 223/108/34 225/83/36 224/109/42
+f 220/40/48 221/111/32 223/108/34 222/107/46
+f 218/22/47 219/110/30 221/111/32 220/40/48
+f 226/26/43 227/103/38 229/120/40 228/121/49
+f 216/21/45 217/106/28 219/110/30 218/22/47
+f 228/121/49 229/120/40 214/105/27 215/104/44
+f 215/104/44 214/105/27 217/106/28 216/21/45
+f 217/113/28 214/112/27 229/119/40 227/118/38 225/117/36 223/116/34 221/115/32 219/114/30
+f 240/25/37 241/102/42 243/103/43 242/26/39
+f 238/107/35 239/108/46 241/83/42 240/109/37
+f 236/40/33 237/111/48 239/108/46 238/107/35
+f 231/112/26 232/113/29 234/114/31 236/115/33 238/116/35 240/117/37 242/118/39 244/119/41
+f 234/22/31 235/110/47 237/111/48 236/40/33
+f 242/26/39 243/103/43 245/120/49 244/121/41
+f 232/21/29 233/106/45 235/110/47 234/22/31
+f 244/121/41 245/120/49 230/105/44 231/104/26
+f 231/104/26 230/105/44 233/106/45 232/21/29
+g Cylinder_Cylinder_weights
+f 176/122/50 177/123/51 179/124/52 178/125/53
+f 120/126/54 121/2/55 123/127/56 122/128/57
+f 174/129/58 175/130/59 177/123/51 176/122/50
+f 122/128/57 123/127/56 125/131/60 124/132/61
+f 172/40/62 173/107/63 175/130/59 174/129/58
+f 124/132/61 125/131/60 127/133/64 126/134/65
+f 170/111/66 171/108/67 173/107/63 172/40/62
+f 126/134/65 127/133/64 129/135/68 128/136/69
+f 168/137/70 169/138/71 171/139/67 170/140/66
+f 128/136/69 129/135/68 131/58/72 130/59/73
+f 166/141/74 167/142/75 169/138/71 168/137/70
+f 130/59/73 131/58/72 133/61/76 132/60/77
+f 164/143/78 165/144/79 167/142/75 166/141/74
+f 132/60/77 133/61/76 135/55/79 134/54/78
+f 162/145/77 163/146/76 165/144/79 164/143/78
+f 134/54/78 135/55/79 137/31/75 136/30/74
+f 160/147/73 161/148/72 163/146/76 162/145/77
+f 136/30/74 137/31/75 139/19/71 138/20/70
+f 158/149/69 159/150/68 161/148/72 160/147/73
+f 138/20/70 139/19/71 141/151/67 140/152/66
+f 156/153/65 157/154/64 159/150/68 158/149/69
+f 140/106/66 141/110/67 143/22/63 142/21/62
+f 119/155/54 152/156/57 154/157/61 156/158/65 158/159/69 160/160/73 162/161/77 164/162/78 166/163/74 168/164/70 170/165/66 172/166/62 174/167/58 176/168/50 178/169/53 180/170/80
+f 154/171/61 155/172/60 157/154/64 156/153/65
+f 142/21/62 143/22/63 145/173/59 144/174/58
+f 178/125/53 179/124/52 181/175/81 180/39/80
+f 152/176/57 153/177/56 155/172/60 154/171/61
+f 144/174/58 145/173/59 147/178/51 146/179/50
+f 180/39/80 181/175/81 118/180/55 119/181/54
+f 119/181/54 118/180/55 153/177/56 152/176/57
+f 146/179/50 147/178/51 149/48/52 148/182/53
+f 123/183/56 121/184/55 151/185/82 149/186/52 147/187/51 145/188/59 143/189/63 141/190/67 139/191/71 137/192/75 135/193/79 133/194/76 131/195/72 129/196/68 127/197/64 125/198/60
+f 150/199/80 151/3/82 121/2/55 120/126/54
+f 148/182/53 149/48/52 151/3/82 150/199/80
+f 153/200/56 118/201/55 181/202/81 179/203/52 177/204/51 175/205/59 173/206/63 171/207/67 169/208/71 167/209/75 165/210/79 163/211/76 161/212/72 159/213/68 157/214/64 155/215/60
+f 120/216/54 122/217/57 124/218/61 126/219/65 128/220/69 130/221/73 132/222/77 134/223/78 136/224/74 138/225/70 140/226/66 142/227/62 144/228/58 146/229/50 148/230/53 150/231/80
+g Cylinder_Cylinder_seat
+f 5/34/1 8/232/7 12/8/12 9/7/9
+f 12/8/12 11/10/11 10/9/10 9/7/9
+f 8/28/7 7/32/5 11/7/11 12/9/12
+f 7/233/5 6/29/2 10/9/10 11/10/11
+f 6/8/2 5/10/1 9/42/9 10/41/10
diff --git a/homedecor_modpack/homedecor/models/homedecor_standing_lamp.obj b/homedecor_modpack/homedecor/models/homedecor_standing_lamp.obj
new file mode 100644
index 0000000..d450eac
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_standing_lamp.obj
@@ -0,0 +1,2429 @@
+# Blender v2.73 (sub 0) OBJ File: 'standing_lamp.blend'
+# www.blender.org
+o Circle.000
+v -0.024465 1.371110 -0.000001
+v -0.069661 1.352390 -0.000001
+v -0.104252 1.317799 -0.000001
+v -0.122972 1.272604 -0.000001
+v -0.122972 1.223685 -0.000001
+v -0.104252 1.178490 -0.000001
+v -0.069661 1.143899 -0.000001
+v -0.024465 1.125178 -0.000001
+v -0.022604 1.371110 -0.009362
+v -0.064358 1.352390 -0.026657
+v -0.096316 1.317799 -0.039894
+v -0.113612 1.272604 -0.047058
+v -0.113612 1.223685 -0.047058
+v -0.096316 1.178490 -0.039894
+v -0.064358 1.143899 -0.026657
+v -0.022603 1.125178 -0.009362
+v -0.017301 1.371110 -0.017297
+v -0.049259 1.352390 -0.049255
+v -0.073719 1.317799 -0.073714
+v -0.086956 1.272604 -0.086951
+v -0.086956 1.223685 -0.086951
+v -0.073719 1.178490 -0.073714
+v -0.049259 1.143899 -0.049255
+v -0.017301 1.125178 -0.017297
+v -0.009366 1.371110 -0.022599
+v -0.026662 1.352390 -0.064354
+v -0.039899 1.317799 -0.096312
+v -0.047063 1.272604 -0.113607
+v -0.047063 1.223685 -0.113607
+v -0.039899 1.178490 -0.096312
+v -0.026662 1.143899 -0.064354
+v -0.009366 1.125178 -0.022599
+v -0.000006 1.371110 -0.024461
+v -0.000006 1.352390 -0.069656
+v -0.000006 1.317799 -0.104247
+v -0.000006 1.272604 -0.122967
+v -0.000006 1.223685 -0.122967
+v -0.000006 1.178490 -0.104247
+v -0.000006 1.143899 -0.069656
+v -0.000006 1.125178 -0.024461
+v 0.009354 1.371110 -0.022599
+v 0.026650 1.352390 -0.064354
+v 0.039887 1.317799 -0.096312
+v 0.047051 1.272604 -0.113607
+v 0.047051 1.223685 -0.113607
+v 0.039887 1.178490 -0.096312
+v 0.026650 1.143899 -0.064354
+v 0.009354 1.125178 -0.022599
+v 0.017290 1.371110 -0.017297
+v 0.049247 1.352390 -0.049255
+v 0.073707 1.317799 -0.073714
+v 0.086944 1.272604 -0.086951
+v 0.086944 1.223685 -0.086951
+v 0.073707 1.178490 -0.073714
+v 0.049247 1.143899 -0.049255
+v 0.017290 1.125178 -0.017297
+v 0.022592 1.371110 -0.009362
+v 0.064347 1.352390 -0.026657
+v 0.096305 1.317799 -0.039894
+v 0.113600 1.272604 -0.047058
+v 0.113600 1.223685 -0.047058
+v 0.096305 1.178490 -0.039894
+v 0.064347 1.143899 -0.026657
+v 0.022592 1.125178 -0.009362
+v 0.024454 1.371110 -0.000001
+v 0.069649 1.352390 -0.000001
+v 0.104240 1.317799 -0.000001
+v 0.122960 1.272604 -0.000001
+v 0.122960 1.223685 -0.000001
+v 0.104240 1.178490 -0.000001
+v 0.069649 1.143899 -0.000001
+v 0.024454 1.125178 -0.000001
+v 0.022592 1.371110 0.009359
+v 0.064347 1.352390 0.026654
+v 0.096304 1.317799 0.039892
+v 0.113600 1.272604 0.047056
+v 0.113600 1.223685 0.047056
+v 0.096304 1.178490 0.039892
+v 0.064347 1.143899 0.026654
+v 0.022592 1.125178 0.009359
+v 0.017290 1.371110 0.017294
+v 0.049247 1.352390 0.049252
+v 0.073707 1.317799 0.073711
+v 0.086944 1.272604 0.086949
+v 0.086944 1.223685 0.086949
+v 0.073707 1.178490 0.073711
+v 0.049247 1.143899 0.049252
+v 0.017290 1.125178 0.017294
+v 0.009354 1.371110 0.022596
+v 0.026650 1.352390 0.064351
+v 0.039887 1.317799 0.096309
+v 0.047051 1.272604 0.113604
+v 0.047051 1.223685 0.113604
+v 0.039887 1.178490 0.096309
+v 0.026650 1.143899 0.064351
+v 0.009354 1.125178 0.022596
+v -0.000006 1.371110 0.024458
+v -0.000006 1.352390 0.069653
+v -0.000006 1.317799 0.104244
+v -0.000006 1.272604 0.122965
+v -0.000006 1.223685 0.122965
+v -0.000006 1.178490 0.104244
+v -0.000006 1.143899 0.069653
+v -0.000006 1.125178 0.024458
+v -0.009366 1.371110 0.022596
+v -0.026662 1.352390 0.064351
+v -0.039899 1.317799 0.096309
+v -0.047063 1.272604 0.113604
+v -0.047063 1.223685 0.113604
+v -0.039899 1.178490 0.096309
+v -0.026662 1.143899 0.064351
+v -0.009366 1.125178 0.022596
+v -0.017301 1.371110 0.017294
+v -0.049259 1.352390 0.049252
+v -0.073719 1.317799 0.073711
+v -0.086956 1.272604 0.086949
+v -0.086956 1.223685 0.086949
+v -0.073719 1.178490 0.073711
+v -0.049259 1.143899 0.049252
+v -0.017301 1.125178 0.017294
+v -0.022603 1.371110 0.009359
+v -0.064358 1.352390 0.026654
+v -0.096316 1.317799 0.039892
+v -0.113612 1.272604 0.047056
+v -0.113612 1.223685 0.047056
+v -0.096316 1.178490 0.039892
+v -0.064358 1.143899 0.026654
+v -0.022603 1.125178 0.009359
+v -0.000006 -0.481764 -0.203070
+v -0.000006 -0.499993 -0.203070
+v 0.039611 -0.481764 -0.199168
+v 0.039611 -0.499993 -0.199168
+v 0.077705 -0.481764 -0.187613
+v 0.077705 -0.499993 -0.187613
+v 0.112813 -0.481764 -0.168847
+v 0.112813 -0.499993 -0.168847
+v 0.143586 -0.481764 -0.143593
+v 0.143586 -0.499993 -0.143593
+v 0.168840 -0.481764 -0.112820
+v 0.168840 -0.499993 -0.112820
+v 0.187605 -0.481764 -0.077712
+v 0.187605 -0.499993 -0.077712
+v 0.199161 -0.481764 -0.039618
+v 0.199161 -0.499993 -0.039618
+v 0.203063 -0.481764 -0.000001
+v 0.203063 -0.499993 -0.000001
+v 0.199161 -0.481764 0.039615
+v 0.199161 -0.499993 0.039615
+v 0.187605 -0.481764 0.077710
+v 0.187605 -0.499993 0.077710
+v 0.168840 -0.481764 0.112818
+v 0.168840 -0.499993 0.112818
+v 0.143586 -0.481764 0.143590
+v 0.143586 -0.499993 0.143590
+v 0.112813 -0.481764 0.168844
+v 0.112813 -0.499993 0.168844
+v 0.077705 -0.481764 0.187610
+v 0.077705 -0.499993 0.187610
+v 0.039611 -0.481764 0.199166
+v 0.039611 -0.499993 0.199166
+v -0.000006 -0.481764 0.203068
+v -0.000006 -0.499993 0.203068
+v -0.039623 -0.481764 0.199166
+v -0.039623 -0.499993 0.199166
+v -0.077717 -0.481764 0.187610
+v -0.077717 -0.499993 0.187610
+v -0.112825 -0.481764 0.168844
+v -0.112825 -0.499993 0.168844
+v -0.143597 -0.481764 0.143590
+v -0.143597 -0.499993 0.143590
+v -0.168852 -0.481764 0.112818
+v -0.168852 -0.499993 0.112818
+v -0.187617 -0.481764 0.077710
+v -0.187617 -0.499993 0.077710
+v -0.199173 -0.481764 0.039615
+v -0.199173 -0.499993 0.039615
+v -0.203075 -0.481764 -0.000002
+v -0.203075 -0.499993 -0.000002
+v -0.199173 -0.481764 -0.039618
+v -0.199173 -0.499993 -0.039618
+v -0.187617 -0.481764 -0.077713
+v -0.187617 -0.499993 -0.077713
+v -0.168851 -0.481764 -0.112821
+v -0.168851 -0.499993 -0.112821
+v -0.143597 -0.481764 -0.143593
+v -0.143597 -0.499993 -0.143593
+v -0.112825 -0.481764 -0.168847
+v -0.112825 -0.499993 -0.168847
+v -0.077717 -0.481764 -0.187613
+v -0.077717 -0.499993 -0.187613
+v -0.039622 -0.481764 -0.199168
+v -0.039622 -0.499993 -0.199168
+v -0.000006 1.100996 -0.251988
+v -0.050712 1.100996 -0.247146
+v -0.099469 1.100996 -0.232806
+v -0.144405 1.100996 -0.209520
+v -0.183790 1.100996 -0.178183
+v -0.216114 1.100996 -0.139997
+v -0.240132 1.100996 -0.096432
+v -0.254922 1.100996 -0.049161
+v -0.259917 1.100996 -0.000001
+v -0.254923 1.100996 0.049159
+v -0.240132 1.100996 0.096430
+v -0.216114 1.100996 0.139995
+v -0.183790 1.100996 0.178180
+v -0.144405 1.100996 0.209518
+v -0.099469 1.100996 0.232804
+v -0.050712 1.100996 0.247143
+v -0.000006 1.100996 0.251985
+v 0.050700 1.100996 0.247143
+v 0.099458 1.100996 0.232804
+v 0.144393 1.100996 0.209518
+v 0.183779 1.100996 0.178180
+v 0.216102 1.100996 0.139995
+v 0.240120 1.100996 0.096429
+v 0.254911 1.100996 0.049159
+v 0.259905 1.100996 -0.000002
+v 0.254911 1.100996 -0.049162
+v 0.240120 1.100996 -0.096433
+v 0.216102 1.100996 -0.139998
+v 0.183778 1.100996 -0.178183
+v 0.144392 1.100996 -0.209520
+v 0.099457 1.100996 -0.232806
+v 0.050700 1.100996 -0.247146
+v -0.000006 1.498944 -0.117664
+v -0.023683 1.498944 -0.115403
+v -0.046450 1.498944 -0.108708
+v -0.067432 1.498944 -0.097835
+v -0.085823 1.498944 -0.083202
+v -0.100916 1.498944 -0.065371
+v -0.112131 1.498944 -0.045029
+v -0.119037 1.498944 -0.022956
+v -0.121369 1.498944 -0.000001
+v -0.119037 1.498944 0.022954
+v -0.112131 1.498944 0.045026
+v -0.100916 1.498944 0.065369
+v -0.085823 1.498944 0.083199
+v -0.067432 1.498944 0.097832
+v -0.046450 1.498944 0.108705
+v -0.023683 1.498944 0.115401
+v -0.000006 1.498944 0.117662
+v 0.023671 1.498944 0.115401
+v 0.046438 1.498944 0.108705
+v 0.067420 1.498944 0.097832
+v 0.085811 1.498944 0.083199
+v 0.100904 1.498944 0.065369
+v 0.112119 1.498944 0.045026
+v 0.119025 1.498944 0.022953
+v 0.121357 1.498944 -0.000001
+v 0.119025 1.498944 -0.022956
+v 0.112119 1.498944 -0.045029
+v 0.100904 1.498944 -0.065372
+v 0.085811 1.498944 -0.083202
+v 0.067420 1.498944 -0.097835
+v 0.046438 1.498944 -0.108708
+v 0.023671 1.498944 -0.115404
+v -0.000006 1.117462 -0.240715
+v -0.046967 1.117462 -0.236089
+v -0.092123 1.117462 -0.222391
+v -0.133739 1.117462 -0.200147
+v -0.170216 1.117462 -0.170211
+v -0.200152 1.117462 -0.133734
+v -0.222396 1.117462 -0.092118
+v -0.236094 1.117462 -0.046962
+v -0.240719 1.117462 -0.000001
+v -0.236094 1.117462 0.046959
+v -0.222396 1.117462 0.092116
+v -0.200152 1.117462 0.133732
+v -0.170216 1.117462 0.170209
+v -0.133739 1.117462 0.200144
+v -0.092123 1.117462 0.222389
+v -0.046967 1.117462 0.236087
+v -0.000006 1.117462 0.240712
+v 0.046955 1.117462 0.236087
+v 0.092111 1.117462 0.222389
+v 0.133727 1.117462 0.200144
+v 0.170204 1.117462 0.170209
+v 0.200140 1.117462 0.133732
+v 0.222384 1.117462 0.092115
+v 0.236082 1.117462 0.046959
+v 0.240707 1.117462 -0.000002
+v 0.236082 1.117462 -0.046962
+v 0.222384 1.117462 -0.092119
+v 0.200140 1.117462 -0.133735
+v 0.170204 1.117462 -0.170211
+v 0.133727 1.117462 -0.200147
+v 0.092111 1.117462 -0.222391
+v 0.046955 1.117462 -0.236089
+v -0.000006 1.117462 -0.220963
+v -0.043113 1.117462 -0.216717
+v -0.084564 1.117462 -0.204143
+v -0.122765 1.117462 -0.183724
+v -0.156249 1.117462 -0.156244
+v -0.183728 1.117462 -0.122761
+v -0.204147 1.117462 -0.084560
+v -0.216721 1.117462 -0.043109
+v -0.220967 1.117462 -0.000001
+v -0.216721 1.117462 0.043106
+v -0.204147 1.117462 0.084557
+v -0.183728 1.117462 0.122758
+v -0.156249 1.117462 0.156242
+v -0.122765 1.117462 0.183721
+v -0.084564 1.117462 0.204140
+v -0.043113 1.117462 0.216714
+v -0.000006 1.117462 0.220960
+v 0.043102 1.117462 0.216714
+v 0.084552 1.117462 0.204140
+v 0.122754 1.117462 0.183721
+v 0.156237 1.117462 0.156242
+v 0.183717 1.117462 0.122758
+v 0.204136 1.117462 0.084557
+v 0.216710 1.117462 0.043106
+v 0.220955 1.117462 -0.000002
+v 0.216710 1.117462 -0.043109
+v 0.204136 1.117462 -0.084560
+v 0.183716 1.117462 -0.122761
+v 0.156237 1.117462 -0.156245
+v 0.122753 1.117462 -0.183724
+v 0.084552 1.117462 -0.204143
+v 0.043101 1.117462 -0.216717
+v -0.000006 1.125992 -0.240715
+v -0.046967 1.125992 -0.236089
+v -0.092123 1.125992 -0.222391
+v -0.133739 1.125992 -0.200147
+v -0.170216 1.125992 -0.170211
+v -0.200152 1.125992 -0.133734
+v -0.222396 1.125992 -0.092118
+v -0.236094 1.125992 -0.046962
+v -0.240719 1.125992 -0.000001
+v -0.236094 1.125992 0.046959
+v -0.222396 1.125992 0.092116
+v -0.200152 1.125992 0.133732
+v -0.170216 1.125992 0.170209
+v -0.133739 1.125992 0.200144
+v -0.092123 1.125992 0.222389
+v -0.046967 1.125992 0.236087
+v -0.000006 1.125992 0.240712
+v 0.046955 1.125992 0.236087
+v 0.092111 1.125992 0.222389
+v 0.133727 1.125992 0.200144
+v 0.170204 1.125992 0.170209
+v 0.200140 1.125992 0.133732
+v 0.222384 1.125992 0.092115
+v 0.236082 1.125992 0.046959
+v 0.240707 1.125992 -0.000002
+v 0.236082 1.125992 -0.046962
+v 0.222384 1.125992 -0.092119
+v 0.200140 1.125992 -0.133735
+v 0.170204 1.125992 -0.170211
+v 0.133727 1.125992 -0.200147
+v 0.092111 1.125992 -0.222391
+v 0.046955 1.125992 -0.236089
+v -0.000006 1.125992 -0.220963
+v -0.043113 1.125992 -0.216717
+v -0.084564 1.125992 -0.204143
+v -0.122765 1.125992 -0.183724
+v -0.156249 1.125992 -0.156244
+v -0.183728 1.125992 -0.122761
+v -0.204147 1.125992 -0.084560
+v -0.216721 1.125992 -0.043109
+v -0.220967 1.125992 -0.000001
+v -0.216721 1.125992 0.043106
+v -0.204147 1.125992 0.084557
+v -0.183728 1.125992 0.122758
+v -0.156249 1.125992 0.156242
+v -0.122765 1.125992 0.183721
+v -0.084564 1.125992 0.204140
+v -0.043113 1.125992 0.216714
+v -0.000006 1.125992 0.220960
+v 0.043102 1.125992 0.216714
+v 0.084552 1.125992 0.204140
+v 0.122754 1.125992 0.183721
+v 0.156237 1.125992 0.156242
+v 0.183717 1.125992 0.122758
+v 0.204136 1.125992 0.084557
+v 0.216710 1.125992 0.043106
+v 0.220955 1.125992 -0.000002
+v 0.216710 1.125992 -0.043109
+v 0.204136 1.125992 -0.084560
+v 0.183716 1.125992 -0.122761
+v 0.156237 1.125992 -0.156245
+v 0.122753 1.125992 -0.183724
+v 0.084552 1.125992 -0.204143
+v 0.043101 1.125992 -0.216717
+v 0.229708 1.117053 -0.008386
+v 0.229708 1.117053 0.008383
+v 0.229708 1.124975 -0.008386
+v 0.229708 1.124975 0.008383
+v -0.230430 1.117053 0.008383
+v -0.230430 1.117053 -0.008386
+v -0.230430 1.124975 0.008383
+v -0.230430 1.124975 -0.008386
+v -0.006939 1.117053 -0.231100
+v 0.006927 1.117053 -0.231100
+v -0.006939 1.124975 -0.231100
+v 0.006927 1.124975 -0.231100
+v -0.006939 1.117053 0.230920
+v 0.006927 1.117053 0.230920
+v -0.006939 1.124975 0.230920
+v 0.006927 1.124975 0.230920
+v -0.028512 1.109688 0.007851
+v 0.028328 1.109688 -0.008659
+v 0.000000 1.109650 0.000000
+v 0.000000 1.116913 0.000000
+v -0.028512 1.116798 0.007851
+v -0.000006 -0.493220 -0.023144
+v -0.004521 -0.493220 -0.022699
+v -0.008862 -0.493220 -0.021382
+v -0.012863 -0.493220 -0.019244
+v -0.016370 -0.493220 -0.016366
+v -0.019248 -0.493220 -0.012859
+v -0.021387 -0.493220 -0.008858
+v -0.022704 -0.493220 -0.004516
+v -0.023148 -0.493220 -0.000001
+v -0.022704 -0.493220 0.004514
+v -0.021387 -0.493220 0.008855
+v -0.019248 -0.493220 0.012856
+v -0.016370 -0.493220 0.016363
+v -0.012863 -0.493220 0.019241
+v -0.008862 -0.493220 0.021380
+v -0.004521 -0.493220 0.022697
+v -0.000006 -0.493220 0.023141
+v 0.004509 -0.493220 0.022697
+v 0.008850 -0.493220 0.021380
+v 0.012851 -0.493220 0.019241
+v 0.016358 -0.493220 0.016363
+v 0.019236 -0.493220 0.012856
+v 0.021375 -0.493220 0.008855
+v 0.022692 -0.493220 0.004514
+v 0.023137 -0.493220 -0.000001
+v 0.022692 -0.493220 -0.004516
+v 0.021375 -0.493220 -0.008858
+v 0.019236 -0.493220 -0.012859
+v 0.016358 -0.493220 -0.016366
+v 0.012851 -0.493220 -0.019244
+v 0.008850 -0.493220 -0.021382
+v 0.004509 -0.493220 -0.022699
+v -0.000006 1.110228 -0.023144
+v -0.004521 1.110228 -0.022699
+v -0.008862 1.110228 -0.021382
+v -0.012863 1.110228 -0.019244
+v -0.016370 1.110228 -0.016366
+v -0.019248 1.110228 -0.012859
+v -0.021387 1.110228 -0.008858
+v -0.022704 1.110228 -0.004516
+v -0.023148 1.110228 -0.000001
+v -0.022704 1.110228 0.004514
+v -0.021387 1.110228 0.008855
+v -0.019248 1.110228 0.012856
+v -0.016370 1.110228 0.016363
+v -0.012863 1.110228 0.019241
+v -0.008862 1.110228 0.021380
+v -0.004521 1.110228 0.022697
+v -0.000006 1.110228 0.023141
+v 0.004509 1.110228 0.022697
+v 0.008850 1.110228 0.021380
+v 0.012851 1.110228 0.019241
+v 0.016358 1.110228 0.016363
+v 0.019236 1.110228 0.012856
+v 0.021375 1.110228 0.008855
+v 0.022692 1.110228 0.004514
+v 0.023137 1.110228 -0.000001
+v 0.022692 1.110228 -0.004516
+v 0.021375 1.110228 -0.008858
+v 0.019236 1.110228 -0.012859
+v 0.016358 1.110228 -0.016366
+v 0.012851 1.110228 -0.019244
+v 0.008850 1.110228 -0.021382
+v 0.004509 1.110228 -0.022699
+v 0.000000 1.109650 -0.030000
+v 0.000000 1.116913 -0.030000
+v 0.011481 1.109650 -0.027716
+v 0.011481 1.116913 -0.027716
+v 0.021213 1.109650 -0.021213
+v 0.021213 1.116913 -0.021213
+v 0.027716 1.109650 -0.011481
+v 0.027716 1.116913 -0.011481
+v 0.030000 1.109650 0.000000
+v 0.030000 1.116913 0.000000
+v 0.027716 1.109650 0.011481
+v 0.027716 1.116913 0.011481
+v 0.021213 1.109650 0.021213
+v 0.021213 1.116913 0.021213
+v 0.011481 1.109650 0.027716
+v 0.011481 1.116913 0.027716
+v 0.000000 1.109650 0.030000
+v 0.000000 1.116913 0.030000
+v -0.011480 1.109650 0.027716
+v -0.011480 1.116913 0.027716
+v -0.021213 1.109650 0.021213
+v -0.021213 1.116913 0.021213
+v -0.027716 1.109650 0.011481
+v -0.027716 1.116913 0.011481
+v -0.030000 1.109650 -0.000000
+v -0.030000 1.116913 -0.000000
+v -0.027716 1.109650 -0.011481
+v -0.027716 1.116913 -0.011481
+v -0.021213 1.109650 -0.021213
+v -0.021213 1.116913 -0.021213
+v -0.011480 1.109650 -0.027716
+v -0.011480 1.116913 -0.027716
+v -0.000006 1.104226 -0.247896
+v -0.049889 1.104226 -0.243133
+v -0.097854 1.104226 -0.229026
+v -0.142060 1.104226 -0.206118
+v -0.180806 1.104226 -0.175289
+v -0.212605 1.104226 -0.137724
+v -0.236233 1.104226 -0.094867
+v -0.250783 1.104226 -0.048363
+v -0.255696 1.104226 -0.000001
+v -0.250783 1.104226 0.048361
+v -0.236233 1.104226 0.094864
+v -0.212605 1.104226 0.137722
+v -0.180806 1.104226 0.175287
+v -0.142060 1.104226 0.206116
+v -0.097854 1.104226 0.229024
+v -0.049889 1.104226 0.243130
+v -0.000006 1.104226 0.247893
+v 0.049877 1.104226 0.243130
+v 0.097843 1.104226 0.229024
+v 0.142048 1.104226 0.206116
+v 0.180795 1.104226 0.175287
+v 0.212593 1.104226 0.137721
+v 0.236221 1.104226 0.094864
+v 0.250772 1.104226 0.048360
+v 0.255685 1.104226 -0.000002
+v 0.250771 1.104226 -0.048363
+v 0.236221 1.104226 -0.094867
+v 0.212593 1.104226 -0.137725
+v 0.180794 1.104226 -0.175290
+v 0.142048 1.104226 -0.206118
+v 0.097842 1.104226 -0.229026
+v 0.049876 1.104226 -0.243133
+v -0.000006 1.495713 -0.115754
+v -0.023298 1.495713 -0.113530
+v -0.045696 1.495713 -0.106943
+v -0.066337 1.495713 -0.096246
+v -0.084429 1.495713 -0.081851
+v -0.099277 1.495713 -0.064310
+v -0.110310 1.495713 -0.044298
+v -0.117104 1.495713 -0.022584
+v -0.119399 1.495713 -0.000001
+v -0.117104 1.495713 0.022581
+v -0.110310 1.495713 0.044295
+v -0.099277 1.495713 0.064307
+v -0.084429 1.495713 0.081848
+v -0.066337 1.495713 0.096243
+v -0.045695 1.495713 0.106940
+v -0.023298 1.495713 0.113527
+v -0.000006 1.495713 0.115751
+v 0.023286 1.495713 0.113527
+v 0.045684 1.495713 0.106940
+v 0.066325 1.495713 0.096243
+v 0.084417 1.495713 0.081848
+v 0.099265 1.495713 0.064307
+v 0.110299 1.495713 0.044295
+v 0.117093 1.495713 0.022581
+v 0.119387 1.495713 -0.000001
+v 0.117093 1.495713 -0.022584
+v 0.110298 1.495713 -0.044298
+v 0.099265 1.495713 -0.064310
+v 0.084417 1.495713 -0.081851
+v 0.066325 1.495713 -0.096246
+v 0.045683 1.495713 -0.106943
+v 0.023286 1.495713 -0.113530
+v -0.000006 -0.481764 -0.000001
+v -0.000006 -0.499993 -0.000001
+v -0.220955 1.118888 0.006111
+v -0.220955 1.118888 -0.006112
+v 0.220955 1.118888 -0.006112
+v 0.220955 1.118888 0.006111
+v -0.220955 1.123299 0.006111
+v -0.220955 1.123299 -0.006112
+v 0.220955 1.123299 -0.006112
+v 0.220955 1.123299 0.006111
+v 0.006111 1.118888 0.220955
+v -0.006112 1.118888 0.220955
+v -0.006111 1.118888 -0.220955
+v 0.006112 1.118888 -0.220955
+v 0.006111 1.123299 0.220955
+v -0.006112 1.123299 0.220955
+v -0.006111 1.123299 -0.220955
+v 0.006112 1.123299 -0.220955
+v -0.000128 1.123974 -0.000001
+v -0.000012 1.372315 -0.000001
+v -0.000119 1.123974 -0.000048
+v -0.000010 1.372315 -0.000006
+v -0.000092 1.123974 -0.000088
+v -0.000053 1.123974 -0.000114
+v -0.000006 1.372315 -0.000007
+v -0.000006 1.123974 -0.000124
+v 0.000041 1.123974 -0.000114
+v -0.000002 1.372315 -0.000006
+v 0.000081 1.123974 -0.000088
+v 0.000107 1.123974 -0.000048
+v 0.000000 1.372315 -0.000001
+v 0.000116 1.123974 -0.000001
+v 0.000107 1.123974 0.000045
+v -0.000002 1.372315 0.000003
+v 0.000081 1.123974 0.000085
+v 0.000041 1.123974 0.000112
+v -0.000006 1.372315 0.000005
+v -0.000006 1.123974 0.000121
+v -0.000053 1.123974 0.000112
+v -0.000010 1.372315 0.000003
+v -0.000092 1.123974 0.000085
+v -0.000119 1.123974 0.000045
+v 0.022692 0.308504 0.004514
+v 0.023137 0.308504 -0.000001
+v -0.004521 0.308504 -0.022699
+v -0.008862 0.308504 -0.021382
+v -0.016370 0.308504 0.016363
+v -0.012863 0.308504 0.019241
+v 0.019236 0.308504 0.012856
+v 0.021375 0.308504 0.008855
+v -0.021387 0.308504 0.008855
+v -0.019248 0.308504 0.012856
+v 0.008850 0.308504 -0.021382
+v 0.004509 0.308504 -0.022699
+v 0.012851 0.308504 0.019241
+v 0.016358 0.308504 0.016363
+v -0.023148 0.308504 -0.000001
+v -0.022704 0.308504 0.004514
+v 0.016358 0.308504 -0.016366
+v 0.012851 0.308504 -0.019244
+v 0.004509 0.308504 0.022697
+v 0.008850 0.308504 0.021380
+v -0.021387 0.308504 -0.008858
+v -0.022704 0.308504 -0.004516
+v 0.021375 0.308504 -0.008858
+v 0.019236 0.308504 -0.012859
+v -0.016370 0.308504 -0.016366
+v -0.019248 0.308504 -0.012859
+v -0.004521 0.308504 0.022697
+v -0.000006 0.308504 0.023141
+v 0.022692 0.308504 -0.004516
+v -0.012863 0.308504 -0.019244
+v -0.008862 0.308504 0.021380
+v -0.000006 0.308504 -0.023144
+v 0.022692 -0.092358 0.004514
+v 0.023137 0.709366 -0.000001
+v -0.004521 -0.092358 -0.022699
+v -0.008862 0.709366 -0.021382
+v -0.016370 -0.092358 0.016363
+v -0.012863 0.709366 0.019241
+v 0.019236 -0.092358 0.012856
+v 0.021375 0.709366 0.008855
+v -0.021387 -0.092358 0.008855
+v -0.019248 0.709366 0.012856
+v 0.008850 -0.092358 -0.021382
+v 0.004509 0.709366 -0.022699
+v 0.012851 -0.092358 0.019241
+v 0.016358 0.709366 0.016363
+v -0.023148 -0.092358 -0.000001
+v -0.022704 0.709366 0.004514
+v 0.016358 -0.092358 -0.016366
+v 0.012851 0.709366 -0.019244
+v 0.004509 -0.092358 0.022697
+v 0.008850 0.709366 0.021380
+v -0.021387 -0.092358 -0.008858
+v -0.022704 0.709366 -0.004516
+v 0.021375 -0.092358 -0.008858
+v 0.019236 0.709366 -0.012859
+v -0.016370 -0.092358 -0.016366
+v -0.019248 0.709366 -0.012859
+v -0.004521 -0.092358 0.022697
+v -0.000006 0.709366 0.023141
+v 0.022692 0.709366 -0.004516
+v -0.012863 0.709366 -0.019244
+v -0.008862 0.709366 0.021380
+v -0.000006 -0.092358 -0.023144
+v 0.022692 0.709366 0.004514
+v 0.023137 -0.092358 -0.000001
+v -0.004521 0.709366 -0.022699
+v -0.008862 -0.092358 -0.021382
+v -0.016370 0.709366 0.016363
+v -0.012863 -0.092358 0.019241
+v 0.019236 0.709366 0.012856
+v 0.021375 -0.092358 0.008855
+v -0.021387 0.709366 0.008855
+v -0.019248 -0.092358 0.012856
+v 0.008850 0.709366 -0.021382
+v 0.004509 -0.092358 -0.022699
+v 0.012851 0.709366 0.019241
+v 0.016358 -0.092358 0.016363
+v -0.023148 0.709366 -0.000001
+v -0.022704 -0.092358 0.004514
+v 0.016358 0.709366 -0.016366
+v 0.012851 -0.092358 -0.019244
+v 0.004509 0.709366 0.022697
+v 0.008850 -0.092358 0.021380
+v -0.021387 0.709366 -0.008858
+v -0.022704 -0.092358 -0.004516
+v 0.021375 0.709366 -0.008858
+v 0.019236 -0.092358 -0.012859
+v -0.016370 0.709366 -0.016366
+v -0.019248 -0.092358 -0.012859
+v -0.004521 0.709366 0.022697
+v -0.000006 -0.092358 0.023141
+v 0.022692 -0.092358 -0.004516
+v -0.012863 -0.092358 -0.019244
+v -0.008862 -0.092358 0.021380
+v -0.000006 0.709366 -0.023144
+vt 0.937500 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.625000
+vt 0.937500 0.625000
+vt 0.937500 0.875000
+vt 0.062500 0.875000
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.187500
+vt 0.062500 0.187500
+vt 0.062500 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.437500
+vt 0.062500 0.437500
+vt 0.062500 0.500000
+vt 0.937500 0.500000
+vt 0.937500 0.750000
+vt 0.062500 0.750000
+vt 0.062500 0.812500
+vt 0.937500 0.812500
+vt 0.937500 0.062500
+vt 0.062500 0.062500
+vt 0.062500 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.312500
+vt 0.062500 0.312500
+vt 0.062500 0.375000
+vt 0.937500 0.375000
+vt 0.062500 0.687500
+vt 0.937500 0.687500
+vt 0.062500 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 0.062500 0.000000
+vt -0.000000 0.187500
+vt -0.000000 0.250000
+vt 0.000000 0.437500
+vt 0.000000 0.500000
+vt 1.000000 0.625000
+vt 1.000000 0.562500
+vt 0.000000 0.812500
+vt 0.000000 0.875000
+vt -0.000000 0.125000
+vt -0.000000 0.062500
+vt 0.000000 0.312500
+vt 0.000000 0.375000
+vt 0.000000 -0.000000
+vt 0.000000 0.750000
+vt 0.000000 0.562500
+vt -0.000000 0.687500
+vt -0.000000 0.625000
+vt 0.000000 0.937500
+vt 0.000000 1.000000
+vt 1.000000 0.937500
+vt 1.000000 0.875000
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 1.000000 0.125000
+vt 1.000000 0.062500
+vt 1.000000 0.812500
+vt 1.000000 0.687500
+vt 1.000000 0.187500
+vt 1.000000 0.750000
+vt 1.000000 0.375000
+vt 1.000000 -0.000000
+vt 1.000000 1.000000
+vt 0.687500 0.562500
+vt 0.750000 0.562500
+vt 0.750000 0.687500
+vt 0.687500 0.687500
+vt 0.750000 0.781250
+vt 0.687500 0.781250
+vt 0.687500 0.125000
+vt 0.750000 0.125000
+vt 0.750000 0.218750
+vt 0.687500 0.218750
+vt 0.750000 0.875000
+vt 0.687500 0.875000
+vt 0.750000 0.312500
+vt 0.687500 0.312500
+vt 0.750000 0.437500
+vt 0.687500 0.437500
+vt 0.625000 0.687500
+vt 0.625000 0.781250
+vt 0.562500 0.687500
+vt 0.562500 0.781250
+vt 0.562500 0.562500
+vt 0.625000 0.562500
+vt 0.750000 0.093750
+vt 0.687500 0.093750
+vt 0.812500 0.125000
+vt 0.812500 0.218750
+vt 0.562500 0.312500
+vt 0.625000 0.312500
+vt 0.625000 0.437500
+vt 0.562500 0.437500
+vt 0.562500 0.218750
+vt 0.625000 0.218750
+vt 0.500000 0.437500
+vt 0.500000 0.562500
+vt 0.500000 0.687500
+vt 0.500000 0.781250
+vt 0.562500 0.875000
+vt 0.500000 0.875000
+vt 0.625000 0.125000
+vt 0.625000 0.093750
+vt 0.500000 0.312500
+vt 0.500000 0.218750
+vt 0.437500 0.437500
+vt 0.437500 0.562500
+vt 0.437500 0.687500
+vt 0.437500 0.781250
+vt 0.437500 0.875000
+vt 0.562500 0.125000
+vt 0.562500 0.093750
+vt 0.437500 0.312500
+vt 0.437500 0.218750
+vt 0.375000 0.437500
+vt 0.375000 0.562500
+vt 0.375000 0.687500
+vt 0.375000 0.781250
+vt 0.375000 0.875000
+vt 0.500000 0.125000
+vt 0.500000 0.093750
+vt 0.375000 0.312500
+vt 0.375000 0.218750
+vt 0.312500 0.437500
+vt 0.312500 0.562500
+vt 0.312500 0.687500
+vt 0.312500 0.781250
+vt 0.312500 0.875000
+vt 0.437500 0.125000
+vt 0.437500 0.093750
+vt 0.312500 0.312500
+vt 0.312500 0.218750
+vt 0.250000 0.437500
+vt 0.250000 0.562500
+vt 0.250000 0.687500
+vt 0.250000 0.781250
+vt 0.250000 0.875000
+vt 0.375000 0.125000
+vt 0.375000 0.093750
+vt 0.250000 0.312500
+vt 0.250000 0.218750
+vt 0.187500 0.437500
+vt 0.187500 0.562500
+vt 0.187500 0.687500
+vt 0.187500 0.781250
+vt 0.187500 0.875000
+vt 0.312500 0.125000
+vt 0.312500 0.093750
+vt 0.187500 0.312500
+vt 0.187500 0.218750
+vt 0.125000 0.437500
+vt 0.125000 0.562500
+vt 0.125000 0.687500
+vt 0.125000 0.781250
+vt 0.125000 0.875000
+vt 0.250000 0.125000
+vt 0.250000 0.093750
+vt 0.125000 0.312500
+vt 0.125000 0.218750
+vt 0.062500 0.781250
+vt 0.187500 0.125000
+vt 0.187500 0.093750
+vt 0.062500 0.218750
+vt 0.000000 0.781250
+vt 0.125000 0.125000
+vt 0.125000 0.093750
+vt 0.000000 0.218750
+vt 1.000000 0.781250
+vt 0.937500 0.781250
+vt 0.062500 0.093750
+vt 0.937500 0.218750
+vt 1.000000 0.218750
+vt 0.875000 0.437500
+vt 0.875000 0.562500
+vt 0.875000 0.687500
+vt 0.875000 0.781250
+vt 0.875000 0.875000
+vt 0.000000 0.093750
+vt 0.875000 0.312500
+vt 0.875000 0.218750
+vt 0.812500 0.437500
+vt 0.812500 0.562500
+vt 0.812500 0.687500
+vt 0.812500 0.781250
+vt 0.812500 0.875000
+vt 1.000000 0.093750
+vt 0.937500 0.093750
+vt 0.812500 0.312500
+vt 0.875000 0.125000
+vt 0.875000 0.093750
+vt 0.812500 0.093750
+vt 0.625000 0.875000
+vt 0.625000 0.906250
+vt 0.687500 0.906250
+vt 0.562500 0.906250
+vt 0.500000 0.906250
+vt 0.437500 0.906250
+vt 0.375000 0.906250
+vt 0.312500 0.906250
+vt 0.250000 0.906250
+vt 0.187500 0.906250
+vt 0.125000 0.906250
+vt 0.062500 0.906250
+vt 0.000000 0.906250
+vt 0.937500 0.906250
+vt 1.000000 0.906250
+vt 0.875000 0.906250
+vt 0.812500 0.906250
+vt 0.750000 0.906250
+vt 0.500000 0.500000
+vt 0.500000 0.468750
+vt 0.531250 0.468750
+vt 0.531250 0.500000
+vt 0.531250 0.437500
+vt 0.500000 0.406250
+vt 0.531250 0.406250
+vt 0.500000 0.375000
+vt 0.531250 0.375000
+vt 0.500000 0.343750
+vt 0.531250 0.343750
+vt 0.531250 0.312500
+vt 0.500000 0.281250
+vt 0.531250 0.281250
+vt 0.500000 0.250000
+vt 0.531250 0.250000
+vt 0.531250 0.218750
+vt 0.500000 0.187500
+vt 0.531250 0.187500
+vt 0.500000 0.156250
+vt 0.531250 0.156250
+vt 0.531250 0.125000
+vt 0.531250 0.093750
+vt 0.500000 0.062500
+vt 0.531250 0.062500
+vt 0.500000 0.031250
+vt 0.531250 0.031250
+vt 0.500000 0.000000
+vt 0.531250 0.000000
+vt 0.500000 1.000000
+vt 0.500000 0.968750
+vt 0.531250 0.968750
+vt 0.531250 1.000000
+vt 0.500000 0.937500
+vt 0.531250 0.937500
+vt 0.531250 0.906250
+vt 0.531250 0.875000
+vt 0.500000 0.843750
+vt 0.531250 0.843750
+vt 0.500000 0.812500
+vt 0.531250 0.812500
+vt 0.531250 0.781250
+vt 0.500000 0.750000
+vt 0.531250 0.750000
+vt 0.500000 0.718750
+vt 0.531250 0.718750
+vt 0.531250 0.687500
+vt 0.500000 0.656250
+vt 0.531250 0.656250
+vt 0.500000 0.625000
+vt 0.531250 0.625000
+vt 0.500000 0.593750
+vt 0.531250 0.593750
+vt 0.531250 0.562500
+vt 0.500000 0.531250
+vt 0.531250 0.531250
+vt 0.000000 0.031250
+vt 1.000000 0.031250
+vt 0.000000 0.718750
+vt 1.000000 0.718750
+vt 0.000000 0.406250
+vt 1.000000 0.406250
+vt 0.000000 0.093750
+vt 0.000000 0.468750
+vt 1.000000 0.468750
+vt 0.000000 0.843750
+vt 1.000000 0.843750
+vt 0.000000 0.156250
+vt 1.000000 0.156250
+vt 0.000000 0.531250
+vt 1.000000 0.531250
+vt 0.000000 0.218750
+vt 0.000000 0.593750
+vt 1.000000 0.593750
+vt -0.000000 0.968750
+vt 1.000000 0.968750
+vt 0.000000 0.656250
+vt 1.000000 0.656250
+vt 0.000000 0.281250
+vt 1.000000 0.281250
+vt 0.000000 0.343750
+vt 1.000000 0.343750
+vt 0.995196 0.701227
+vt 0.750000 0.750000
+vt 0.957867 0.611108
+vt 0.926777 0.573223
+vt 0.980970 0.654329
+vt 0.019030 0.154329
+vt 0.004804 0.201227
+vt 0.250000 0.250000
+vt 0.042133 0.111107
+vt 0.073223 0.073223
+vt 0.111108 0.042133
+vt 0.154329 0.019030
+vt 0.201227 0.004804
+vt 0.250000 0.000000
+vt 0.298773 0.004804
+vt 0.345671 0.019030
+vt 0.388893 0.042133
+vt 0.426777 0.073223
+vt 0.457868 0.111107
+vt 0.480970 0.154329
+vt 0.495196 0.201227
+vt 0.495196 0.298773
+vt 0.480970 0.345671
+vt 0.457867 0.388893
+vt 0.426777 0.426777
+vt 0.388892 0.457867
+vt 0.345671 0.480970
+vt 0.298772 0.495196
+vt 0.250000 0.500000
+vt 0.201227 0.495196
+vt 0.154329 0.480970
+vt 0.111107 0.457867
+vt 0.073223 0.426776
+vt 0.042132 0.388892
+vt 0.019030 0.345670
+vt 0.004804 0.298772
+vt 0.888893 0.542133
+vt 0.845671 0.519030
+vt 0.798773 0.504804
+vt 0.750000 0.500000
+vt 0.701227 0.504804
+vt 0.654329 0.519030
+vt 0.611107 0.542133
+vt 0.573223 0.573223
+vt 0.542133 0.611107
+vt 0.519030 0.654329
+vt 0.504804 0.701228
+vt 0.504804 0.798773
+vt 0.519030 0.845671
+vt 0.542133 0.888893
+vt 0.573223 0.926777
+vt 0.611108 0.957868
+vt 0.654329 0.980970
+vt 0.701228 0.995196
+vt 0.750000 1.000000
+vt 0.798773 0.995196
+vt 0.845671 0.980970
+vt 0.888893 0.957867
+vt 0.926777 0.926777
+vt 0.957868 0.888892
+vt 0.980970 0.845671
+vt 0.995196 0.798772
+vt 0.953310 0.249012
+vt 0.953310 0.217886
+vt 0.968873 0.217886
+vt 0.968873 0.249012
+vt 0.922184 0.062253
+vt 0.906620 0.062253
+vt 0.906620 0.093380
+vt 0.922184 0.093380
+vt 0.922184 0.591404
+vt 0.906620 0.591404
+vt 0.906620 0.622531
+vt 0.922184 0.622531
+vt 0.953310 0.778163
+vt 0.953310 0.747037
+vt 0.968873 0.747037
+vt 0.968873 0.778163
+vt 0.953310 0.466898
+vt 0.953310 0.435771
+vt 0.968873 0.435771
+vt 0.968873 0.466898
+vt 0.922184 0.280139
+vt 0.906620 0.280139
+vt 0.906620 0.311265
+vt 0.922184 0.311265
+vt 0.922184 0.809290
+vt 0.906620 0.809290
+vt 0.906620 0.840417
+vt 0.922184 0.840417
+vt 0.953310 0.996049
+vt 0.953310 0.964923
+vt 0.968873 0.964923
+vt 0.968873 0.996049
+vt 0.953310 0.529151
+vt 0.953310 0.498025
+vt 0.968873 0.498025
+vt 0.968873 0.529151
+vt 0.922184 0.031127
+vt 0.906620 0.031127
+vt 0.953310 0.186759
+vt 0.968873 0.186759
+vt 0.922184 0.560278
+vt 0.906620 0.560278
+vt 0.953310 0.715910
+vt 0.968873 0.715910
+vt 0.953310 0.404645
+vt 0.968873 0.404645
+vt 0.922184 0.249012
+vt 0.906620 0.249012
+vt 0.922184 0.778163
+vt 0.906620 0.778163
+vt 0.953310 0.933796
+vt 0.968873 0.933796
+vt 0.922184 0.466898
+vt 0.906620 0.466898
+vt 0.906620 0.498025
+vt 0.922184 0.498025
+vt 0.953310 0.155633
+vt 0.968873 0.155633
+vt 0.922184 0.000000
+vt 0.906620 0.000000
+vt 0.922184 0.529151
+vt 0.906620 0.529151
+vt 0.953310 0.684784
+vt 0.968873 0.684784
+vt 0.953310 0.373518
+vt 0.968873 0.373518
+vt 0.922184 0.217886
+vt 0.906620 0.217886
+vt 0.922184 0.747037
+vt 0.906620 0.747037
+vt 0.953310 0.902670
+vt 0.968873 0.902670
+vt 0.922184 0.435771
+vt 0.906620 0.435771
+vt 0.953310 0.124506
+vt 0.968873 0.124506
+vt 0.922184 0.964923
+vt 0.906620 0.964923
+vt 0.906620 0.996049
+vt 0.922184 0.996049
+vt 0.953310 0.653657
+vt 0.968873 0.653657
+vt 0.953310 0.342392
+vt 0.968873 0.342392
+vt 0.922184 0.186759
+vt 0.906620 0.186759
+vt 0.922184 0.715910
+vt 0.906620 0.715910
+vt 0.953310 0.871543
+vt 0.968873 0.871543
+vt 0.922184 0.404645
+vt 0.906620 0.404645
+vt 0.953310 0.093380
+vt 0.968873 0.093380
+vt 0.922184 0.933796
+vt 0.906620 0.933796
+vt 0.953310 0.622531
+vt 0.968873 0.622531
+vt 0.953310 0.311265
+vt 0.968873 0.311265
+vt 0.922184 0.155633
+vt 0.906620 0.155633
+vt 0.922184 0.684784
+vt 0.906620 0.684784
+vt 0.953310 0.840417
+vt 0.968873 0.840417
+vt 0.922184 0.373518
+vt 0.906620 0.373518
+vt 0.953310 0.062253
+vt 0.968873 0.062253
+vt 0.922184 0.902670
+vt 0.906620 0.902670
+vt 0.953310 0.591404
+vt 0.968873 0.591404
+vt 0.953310 0.280139
+vt 0.968873 0.280139
+vt 0.922184 0.124506
+vt 0.906620 0.124506
+vt 0.922184 0.653657
+vt 0.906620 0.653657
+vt 0.953310 0.809290
+vt 0.968873 0.809290
+vt 0.922184 0.342392
+vt 0.906620 0.342392
+vt 0.953310 0.031127
+vt 0.968873 0.031127
+vt 0.922184 0.871543
+vt 0.906620 0.871543
+vt 0.953310 0.560278
+vt 0.968873 0.560278
+vt 0.953310 0.000000
+vt 0.968873 0.000000
+vt 0.131651 0.348071
+vt 0.193904 0.348071
+vt 0.193904 0.379197
+vt 0.131651 0.379197
+vt 0.131651 0.316944
+vt 0.193904 0.316944
+vt 0.131651 0.285818
+vt 0.193904 0.285818
+vt 0.131651 0.254691
+vt 0.193904 0.254691
+vt 0.149272 0.750988
+vt 0.195033 0.769942
+vt 0.124506 0.875494
+vt 0.099741 0.750988
+vt 0.053979 0.769942
+vt 0.018955 0.804967
+vt -0.000000 0.850728
+vt -0.000000 0.900260
+vt 0.018955 0.946021
+vt 0.053979 0.981045
+vt 0.099740 1.000000
+vt 0.149272 1.000000
+vt 0.195033 0.981045
+vt 0.230057 0.946021
+vt 0.249012 0.900260
+vt 0.249012 0.850728
+vt 0.230057 0.804967
+vt 0.099740 0.690360
+vt 0.053979 0.671404
+vt 0.124506 0.565853
+vt 0.149272 0.690360
+vt 0.195033 0.671404
+vt 0.230057 0.636380
+vt 0.249012 0.590619
+vt 0.249012 0.541088
+vt 0.230057 0.495326
+vt 0.195033 0.460302
+vt 0.149272 0.441347
+vt 0.099741 0.441347
+vt 0.053979 0.460302
+vt 0.018955 0.495326
+vt 0.000000 0.541087
+vt 0.000000 0.590619
+vt 0.018955 0.636380
+vt 0.380663 0.379197
+vt 0.380663 0.348071
+vt 0.427353 0.348071
+vt 0.427353 0.379197
+vt 0.474043 0.348071
+vt 0.474043 0.379197
+vt 0.287284 0.285818
+vt 0.287284 0.254691
+vt 0.333974 0.254691
+vt 0.333974 0.285818
+vt 0.380663 0.254691
+vt 0.380663 0.285818
+vt 0.427353 0.254691
+vt 0.427353 0.285818
+vt 0.474043 0.285818
+vt 0.474043 0.316944
+vt 0.427353 0.316944
+vt 0.380663 0.316944
+vt 0.333974 0.316944
+vt 0.287284 0.316944
+vt 0.240594 0.348071
+vt 0.240594 0.316944
+vt 0.287284 0.348071
+vt 0.333974 0.348071
+vt 0.333974 0.379197
+vt 0.287284 0.379197
+vt 0.735424 0.000000
+vt 0.735424 0.996049
+vt 0.719861 0.996049
+vt 0.719861 0.000000
+vt 0.626482 0.000000
+vt 0.626481 0.996049
+vt 0.610918 0.996049
+vt 0.610918 0.000000
+vt 0.844367 0.000000
+vt 0.844367 0.996049
+vt 0.828804 0.996049
+vt 0.828804 0.000000
+vt 0.673171 0.000000
+vt 0.673171 0.996049
+vt 0.782114 0.996049
+vt 0.782114 0.000000
+vt 1.000000 0.529151
+vt 1.000000 0.498025
+vt 1.000000 0.871543
+vt 1.000000 0.840417
+vt 1.000000 0.217886
+vt 1.000000 0.186759
+vt 1.000000 0.591404
+vt 1.000000 0.560278
+vt 1.000000 0.933796
+vt 1.000000 0.902670
+vt 1.000000 0.280139
+vt 1.000000 0.249012
+vt 1.000000 0.653657
+vt 1.000000 0.622531
+vt 1.000000 0.996049
+vt 1.000000 0.964923
+vt 1.000000 0.342392
+vt 1.000000 0.311265
+vt 1.000000 0.715910
+vt 1.000000 0.684784
+vt 1.000000 0.404645
+vt 1.000000 0.373518
+vt 1.000000 0.062253
+vt 1.000000 0.031127
+vt 1.000000 0.778163
+vt 1.000000 0.747037
+vt 1.000000 0.466898
+vt 1.000000 0.435771
+vt 1.000000 0.124506
+vt 1.000000 0.093380
+vt 1.000000 0.809290
+vt 1.000000 0.155633
+vn -0.115900 0.790200 0.601800
+vn -0.029300 -0.987400 0.155200
+vn 0.000000 -0.987500 0.157800
+vn 0.000000 0.790500 0.612400
+vn -0.430000 0.786100 -0.443900
+vn -0.110400 -0.987100 -0.116200
+vn -0.131900 -0.986900 -0.092700
+vn -0.510500 0.784400 -0.352200
+vn 0.610600 0.781900 -0.125400
+vn 0.159200 -0.986700 -0.033300
+vn 0.148600 -0.986800 -0.064800
+vn 0.572000 0.782900 -0.244600
+vn -0.334600 0.787800 0.517000
+vn -0.085400 -0.987200 0.134500
+vn -0.058000 -0.987300 0.147500
+vn -0.228600 0.789200 0.569900
+vn -0.228600 0.789200 -0.569900
+vn -0.058000 -0.987300 -0.147500
+vn -0.085400 -0.987200 -0.134500
+vn -0.334600 0.787800 -0.517000
+vn 0.610600 0.781900 0.125400
+vn 0.159200 -0.986700 0.033300
+vn 0.162900 -0.986600 0.000000
+vn 0.623800 0.781500 0.000000
+vn -0.510500 0.784400 0.352200
+vn -0.131900 -0.986900 0.092700
+vn -0.110400 -0.987100 0.116200
+vn -0.430000 0.786100 0.443900
+vn 0.000000 0.790500 -0.612400
+vn 0.000000 -0.987500 -0.157800
+vn -0.029300 -0.987400 -0.155200
+vn -0.115900 0.790200 -0.601800
+vn 0.510500 0.784400 0.352200
+vn 0.131900 -0.986900 0.092700
+vn 0.148600 -0.986800 0.064800
+vn 0.572000 0.782900 0.244600
+vn -0.610600 0.781900 0.125400
+vn -0.159200 -0.986700 0.033300
+vn -0.148600 -0.986800 0.064800
+vn -0.572000 0.782900 0.244600
+vn 0.334600 0.787800 0.517000
+vn 0.085400 -0.987200 0.134500
+vn 0.110400 -0.987100 0.116200
+vn 0.430000 0.786100 0.443900
+vn 0.228600 0.789200 -0.569900
+vn 0.058000 -0.987300 -0.147500
+vn 0.029300 -0.987400 -0.155200
+vn 0.115900 0.790200 -0.601800
+vn -0.610600 0.781900 -0.125400
+vn -0.159200 -0.986700 -0.033300
+vn -0.162900 -0.986600 0.000000
+vn -0.623800 0.781500 0.000000
+vn 0.115900 0.790200 0.601800
+vn 0.029300 -0.987400 0.155200
+vn 0.058000 -0.987300 0.147500
+vn 0.228600 0.789200 0.569900
+vn 0.430000 0.786100 -0.444000
+vn 0.110400 -0.987100 -0.116200
+vn 0.085400 -0.987200 -0.134500
+vn 0.334600 0.787800 -0.517000
+vn -0.148600 -0.986800 -0.064800
+vn -0.572000 0.782900 -0.244600
+vn 0.131900 -0.986900 -0.092700
+vn 0.510500 0.784400 -0.352200
+vn 0.153600 0.584700 -0.796500
+vn 0.000000 0.584300 -0.811500
+vn 0.000000 -0.106800 -0.994300
+vn 0.188100 -0.106800 -0.976300
+vn 0.562200 0.589600 0.579900
+vn 0.663800 0.591600 0.457500
+vn 0.818200 -0.108400 0.564500
+vn 0.691600 -0.107900 0.714100
+vn -0.787600 0.594600 0.161600
+vn -0.740200 0.593400 0.316200
+vn -0.914000 -0.108800 0.390900
+vn -0.973700 -0.109000 0.200000
+vn 0.439900 0.587600 -0.679100
+vn 0.302000 0.585900 -0.752000
+vn 0.370200 -0.107100 -0.922800
+vn 0.540100 -0.107500 -0.834700
+vn 0.302000 0.585900 0.752000
+vn 0.439900 0.587600 0.679100
+vn 0.540100 -0.107500 0.834700
+vn 0.370200 -0.107100 0.922800
+vn -0.787600 0.594600 -0.161600
+vn -0.803700 0.595000 0.000000
+vn -0.994000 -0.109100 0.000000
+vn -0.973700 -0.109000 -0.200000
+vn 0.663800 0.591600 -0.457500
+vn 0.562200 0.589600 -0.579900
+vn 0.691600 -0.107900 -0.714100
+vn 0.818200 -0.108400 -0.564500
+vn 0.000000 0.584400 0.811500
+vn 0.153600 0.584700 0.796500
+vn 0.188100 -0.106800 0.976300
+vn 0.000000 -0.106800 0.994300
+vn -0.663800 0.591600 -0.457500
+vn -0.740200 0.593400 -0.316200
+vn -0.914000 -0.108800 -0.390900
+vn -0.818200 -0.108400 -0.564500
+vn 0.787600 0.594600 -0.161600
+vn 0.740200 0.593400 -0.316200
+vn 0.914000 -0.108800 -0.390900
+vn 0.973700 -0.109000 -0.200000
+vn -0.439900 0.587600 -0.679100
+vn -0.562200 0.589600 -0.579900
+vn -0.691600 -0.107900 -0.714100
+vn -0.540100 -0.107500 -0.834700
+vn -0.302000 0.585900 0.752000
+vn -0.153600 0.584700 0.796500
+vn -0.188100 -0.106800 0.976300
+vn -0.370200 -0.107100 0.922800
+vn 0.787600 0.594600 0.161600
+vn 0.803700 0.595000 0.000000
+vn 0.994000 -0.109100 0.000000
+vn 0.973700 -0.109000 0.200000
+vn -0.153600 0.584700 -0.796500
+vn -0.302000 0.585900 -0.752000
+vn -0.370200 -0.107100 -0.922800
+vn -0.188100 -0.106800 -0.976300
+vn -0.562200 0.589600 0.579900
+vn -0.439900 0.587600 0.679100
+vn -0.540100 -0.107500 0.834700
+vn -0.691600 -0.107900 0.714100
+vn 0.740200 0.593400 0.316200
+vn 0.914000 -0.108800 0.390900
+vn -0.663800 0.591600 0.457500
+vn -0.818200 -0.108400 0.564500
+vn -0.906900 0.190600 -0.375700
+vn -0.981700 0.190600 0.000000
+vn -0.838600 0.544600 0.000000
+vn -0.774800 0.544600 -0.320900
+vn -0.571900 0.820300 0.000000
+vn -0.528400 0.820300 -0.218800
+vn -0.221200 -0.970900 -0.091600
+vn -0.239400 -0.970900 0.000000
+vn -0.571900 -0.820300 0.000000
+vn -0.528400 -0.820300 -0.218800
+vn -0.239300 0.970900 0.000000
+vn -0.221100 0.970900 -0.091600
+vn -0.838600 -0.544600 0.000000
+vn -0.774800 -0.544600 -0.320900
+vn -0.981700 -0.190600 0.000000
+vn -0.906900 -0.190600 -0.375700
+vn -0.593000 0.544600 -0.593000
+vn -0.404400 0.820300 -0.404400
+vn -0.320900 0.544600 -0.774800
+vn -0.218800 0.820300 -0.528400
+vn -0.375700 0.190600 -0.906900
+vn -0.694100 0.190600 -0.694100
+vn -0.049400 -0.998800 0.000000
+vn -0.045700 -0.998800 -0.018900
+vn -0.221200 -0.970900 0.091600
+vn -0.528400 -0.820300 0.218800
+vn -0.320900 -0.544600 -0.774800
+vn -0.593000 -0.544600 -0.593000
+vn -0.694100 -0.190600 -0.694100
+vn -0.375700 -0.190600 -0.906900
+vn -0.218800 -0.820300 -0.528400
+vn -0.404400 -0.820300 -0.404400
+vn 0.000000 -0.190600 -0.981700
+vn 0.000000 0.190600 -0.981700
+vn 0.000000 0.544600 -0.838600
+vn 0.000000 0.820300 -0.571900
+vn -0.091600 0.970900 -0.221100
+vn 0.000000 0.970900 -0.239300
+vn -0.169300 -0.970900 -0.169300
+vn -0.035000 -0.998800 -0.035000
+vn 0.000000 -0.544600 -0.838600
+vn 0.000000 -0.820300 -0.571900
+vn 0.375700 -0.190600 -0.906900
+vn 0.375700 0.190600 -0.906900
+vn 0.320900 0.544600 -0.774800
+vn 0.218800 0.820300 -0.528400
+vn 0.091600 0.970900 -0.221100
+vn -0.091600 -0.970900 -0.221200
+vn -0.018900 -0.998800 -0.045700
+vn 0.320900 -0.544600 -0.774800
+vn 0.218800 -0.820300 -0.528400
+vn 0.694100 -0.190600 -0.694100
+vn 0.694100 0.190600 -0.694100
+vn 0.593000 0.544600 -0.593000
+vn 0.404400 0.820300 -0.404400
+vn 0.169200 0.970900 -0.169200
+vn 0.000000 -0.970900 -0.239400
+vn 0.000000 -0.998800 -0.049400
+vn 0.593000 -0.544600 -0.593000
+vn 0.404400 -0.820300 -0.404400
+vn 0.906900 -0.190600 -0.375700
+vn 0.906900 0.190600 -0.375700
+vn 0.774800 0.544600 -0.320900
+vn 0.528400 0.820300 -0.218800
+vn 0.221100 0.970900 -0.091600
+vn 0.091600 -0.970900 -0.221200
+vn 0.018900 -0.998800 -0.045700
+vn 0.774800 -0.544600 -0.320900
+vn 0.528400 -0.820300 -0.218800
+vn 0.981700 -0.190600 0.000000
+vn 0.981700 0.190600 0.000000
+vn 0.838600 0.544600 0.000000
+vn 0.571900 0.820300 0.000000
+vn 0.239300 0.970900 0.000000
+vn 0.169300 -0.970900 -0.169300
+vn 0.035000 -0.998800 -0.035000
+vn 0.838600 -0.544600 0.000000
+vn 0.571900 -0.820300 0.000000
+vn 0.906900 -0.190600 0.375700
+vn 0.906900 0.190600 0.375700
+vn 0.774800 0.544600 0.320900
+vn 0.528400 0.820300 0.218800
+vn 0.221100 0.970900 0.091600
+vn 0.221200 -0.970900 -0.091600
+vn 0.045700 -0.998800 -0.018900
+vn 0.774800 -0.544600 0.320900
+vn 0.528400 -0.820300 0.218800
+vn 0.694100 -0.190600 0.694100
+vn 0.694100 0.190600 0.694100
+vn 0.593000 0.544600 0.593000
+vn 0.404400 0.820300 0.404400
+vn 0.169200 0.970900 0.169200
+vn 0.239400 -0.970900 0.000000
+vn 0.049400 -0.998800 0.000000
+vn 0.593000 -0.544600 0.593000
+vn 0.404400 -0.820300 0.404400
+vn 0.375700 -0.190600 0.906900
+vn 0.375700 0.190600 0.906900
+vn 0.320900 0.544600 0.774800
+vn 0.218800 0.820300 0.528400
+vn 0.091600 0.970900 0.221100
+vn 0.221200 -0.970900 0.091600
+vn 0.045700 -0.998800 0.018900
+vn 0.320900 -0.544600 0.774800
+vn 0.218800 -0.820300 0.528400
+vn 0.000000 -0.190600 0.981700
+vn 0.000000 0.190600 0.981700
+vn 0.000000 0.544600 0.838600
+vn 0.000000 0.820300 0.571900
+vn 0.000000 0.970900 0.239300
+vn 0.169300 -0.970900 0.169300
+vn 0.035000 -0.998800 0.035000
+vn 0.000000 -0.544600 0.838600
+vn 0.000000 -0.820300 0.571900
+vn -0.375700 -0.190600 0.906900
+vn -0.375700 0.190600 0.906900
+vn -0.320900 0.544600 0.774800
+vn -0.218800 0.820300 0.528400
+vn -0.091600 0.970900 0.221100
+vn 0.091600 -0.970900 0.221200
+vn 0.018900 -0.998800 0.045700
+vn -0.320900 -0.544600 0.774800
+vn -0.218800 -0.820300 0.528400
+vn -0.694100 -0.190600 0.694100
+vn -0.694100 0.190600 0.694100
+vn -0.593000 0.544600 0.593000
+vn -0.404400 0.820300 0.404400
+vn -0.169200 0.970900 0.169200
+vn 0.000000 -0.970900 0.239400
+vn -0.000000 -0.998800 0.049400
+vn -0.593000 -0.544600 0.593000
+vn -0.404400 -0.820300 0.404400
+vn -0.906900 -0.190600 0.375700
+vn -0.906900 0.190600 0.375700
+vn -0.774800 0.544600 0.320900
+vn -0.528400 0.820300 0.218800
+vn -0.221100 0.970900 0.091600
+vn -0.091600 -0.970900 0.221200
+vn -0.018900 -0.998800 0.045700
+vn -0.774800 -0.544600 0.320900
+vn -0.169300 -0.970900 0.169300
+vn -0.035000 -0.998800 0.035000
+vn -0.045700 -0.998800 0.018900
+vn -0.169200 0.970900 -0.169200
+vn -0.027600 0.998900 -0.037800
+vn -0.046200 0.998900 -0.007200
+vn 0.007200 0.998900 -0.046200
+vn 0.034800 0.998800 -0.034800
+vn 0.046200 0.998900 -0.007200
+vn 0.037800 0.998900 0.027600
+vn 0.007200 0.998900 0.046200
+vn -0.030600 0.999100 0.030600
+vn 0.000000 0.000000 -1.000000
+vn 0.195100 0.000000 -0.980800
+vn 0.382700 0.000000 -0.923900
+vn 0.555600 0.000000 -0.831500
+vn 0.707100 0.000000 -0.707100
+vn 0.831500 0.000000 -0.555600
+vn 0.923900 0.000000 -0.382700
+vn 0.980800 0.000000 -0.195100
+vn 1.000000 0.000000 -0.000000
+vn 0.980800 0.000000 0.195100
+vn 0.923900 0.000000 0.382700
+vn 0.831500 0.000000 0.555600
+vn 0.707100 0.000000 0.707100
+vn 0.555600 0.000000 0.831500
+vn 0.382700 0.000000 0.923900
+vn 0.195100 0.000000 0.980800
+vn -0.000000 0.000000 1.000000
+vn -0.195100 0.000000 0.980800
+vn -0.382700 0.000000 0.923900
+vn -0.555600 0.000000 0.831500
+vn -0.707100 0.000000 0.707100
+vn -0.831500 0.000000 0.555600
+vn -0.923900 0.000000 0.382700
+vn -0.980800 0.000000 0.195100
+vn -1.000000 0.000000 -0.000000
+vn -0.980800 0.000000 -0.195100
+vn -0.923900 0.000000 -0.382700
+vn -0.831500 0.000000 -0.555600
+vn -0.707100 0.000000 -0.707100
+vn -0.555600 0.000000 -0.831500
+vn -0.382700 0.000000 -0.923900
+vn -0.195100 0.000000 -0.980800
+vn -0.555600 0.000000 0.831400
+vn 0.831400 0.000000 0.555600
+vn -0.831400 0.000000 0.555600
+vn 0.555600 0.000000 0.831400
+vn 0.555600 0.000000 -0.831400
+vn 0.831400 0.000000 -0.555600
+vn -0.831400 0.000000 -0.555600
+vn -0.555600 0.000000 -0.831400
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 -0.000000
+vn -0.261600 0.729800 0.631600
+vn -0.261600 -0.729800 0.631600
+vn -0.379800 -0.729800 0.568400
+vn -0.379800 0.729800 0.568400
+vn 0.379800 0.729800 -0.568400
+vn 0.379800 -0.729800 -0.568400
+vn 0.483400 -0.729800 -0.483400
+vn 0.483400 0.729800 -0.483400
+vn -0.670500 0.729800 -0.133300
+vn -0.670500 -0.729800 -0.133400
+vn -0.631600 -0.729800 -0.261600
+vn -0.631600 0.729800 -0.261600
+vn 0.631600 0.729800 0.261600
+vn 0.631600 -0.729800 0.261600
+vn 0.568400 -0.729800 0.379800
+vn 0.568400 0.729800 0.379800
+vn -0.133300 0.729800 0.670500
+vn -0.133300 -0.729800 0.670500
+vn 0.261600 0.729800 -0.631600
+vn 0.261600 -0.729800 -0.631600
+vn -0.683600 0.729800 0.000000
+vn -0.683600 -0.729800 0.000000
+vn 0.670500 0.729800 0.133300
+vn 0.670500 -0.729800 0.133300
+vn -0.133400 0.729800 -0.670500
+vn -0.133400 -0.729800 -0.670500
+vn 0.000000 -0.729800 -0.683600
+vn 0.000000 0.729800 -0.683600
+vn 0.000000 0.729800 0.683600
+vn 0.000000 -0.729800 0.683600
+vn 0.133300 0.729800 -0.670500
+vn 0.133300 -0.729800 -0.670500
+vn -0.670500 0.729800 0.133300
+vn -0.670500 -0.729800 0.133400
+vn 0.683600 0.729800 0.000000
+vn 0.683600 -0.729800 0.000000
+vn -0.261600 0.729800 -0.631600
+vn -0.261600 -0.729800 -0.631600
+vn 0.133400 0.729800 0.670500
+vn 0.133400 -0.729800 0.670500
+vn -0.631600 0.729800 0.261600
+vn -0.631600 -0.729800 0.261600
+vn 0.670500 0.729800 -0.133400
+vn 0.670500 -0.729800 -0.133400
+vn -0.379800 0.729800 -0.568400
+vn -0.379800 -0.729800 -0.568400
+vn 0.261600 0.729800 0.631600
+vn 0.261600 -0.729800 0.631600
+vn -0.568400 0.729800 0.379800
+vn -0.568400 -0.729800 0.379800
+vn 0.631600 0.729800 -0.261600
+vn 0.631600 -0.729800 -0.261600
+vn -0.483400 0.729800 -0.483400
+vn -0.483400 -0.729800 -0.483400
+vn 0.379800 0.729800 0.568400
+vn 0.379800 -0.729800 0.568400
+vn -0.483400 0.729800 0.483400
+vn -0.483400 -0.729800 0.483400
+vn 0.568400 0.729800 -0.379800
+vn 0.568400 -0.729800 -0.379800
+vn -0.568400 0.729800 -0.379800
+vn -0.568400 -0.729800 -0.379800
+vn 0.483400 0.729800 0.483400
+vn 0.483400 -0.729800 0.483400
+vn -0.285500 -0.665700 -0.689400
+vn 0.000000 -0.665700 -0.746200
+vn -0.527600 -0.665700 -0.527600
+vn -0.689400 -0.665700 -0.285500
+vn -0.746200 -0.665700 0.000000
+vn -0.689400 -0.665700 0.285500
+vn -0.527600 -0.665700 0.527600
+vn -0.285500 -0.665700 0.689400
+vn 0.000000 -0.665700 0.746200
+vn 0.285500 -0.665700 0.689400
+vn 0.527600 -0.665700 0.527600
+vn 0.689400 -0.665700 0.285500
+vn 0.746200 -0.665700 0.000000
+vn 0.689400 -0.665700 -0.285500
+vn 0.527600 -0.665700 -0.527600
+vn 0.285500 -0.665700 -0.689400
+vn 0.527600 0.665700 -0.527600
+vn 0.285500 0.665700 -0.689400
+vn 0.689400 0.665700 -0.285500
+vn 0.746200 0.665700 0.000000
+vn 0.689400 0.665700 0.285500
+vn 0.527600 0.665700 0.527600
+vn 0.285500 0.665700 0.689400
+vn 0.000000 0.665700 0.746200
+vn -0.285500 0.665700 0.689400
+vn -0.527600 0.665700 0.527600
+vn -0.689400 0.665700 0.285500
+vn -0.746200 0.665700 0.000000
+vn -0.689400 0.665700 -0.285500
+vn -0.527600 0.665700 -0.527600
+vn -0.285500 0.665700 -0.689400
+vn 0.000000 0.665700 -0.746200
+vn -0.707100 0.707100 -0.000000
+vn -0.707100 -0.707100 -0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn 0.707100 0.707100 0.000000
+vn 0.707100 -0.707100 0.000000
+vn 0.000000 0.707100 0.707100
+vn 0.000000 -0.707100 0.707100
+g Circle.000_Circle.000_lampshade
+s 1
+f 224/1/1 256/2/2 225/3/3 193/4/4
+f 213/5/5 245/6/6 246/7/7 214/8/8
+f 202/9/9 234/10/10 235/11/11 203/12/12
+f 222/13/13 254/14/14 255/15/15 223/16/16
+f 211/17/17 243/18/18 244/19/19 212/20/20
+f 200/21/21 232/22/22 233/23/23 201/24/24
+f 220/25/25 252/26/26 253/27/27 221/28/28
+f 209/4/29 241/3/30 242/29/31 210/30/32
+f 198/8/33 230/7/34 231/31/35 199/32/36
+f 218/9/37 250/10/38 251/11/39 219/12/40
+f 196/20/41 228/19/42 229/6/43 197/5/44
+f 207/16/45 239/15/46 240/2/47 208/1/48
+f 216/21/49 248/22/50 249/23/51 217/24/52
+f 194/30/53 226/29/54 227/18/55 195/17/56
+f 205/28/57 237/27/58 238/14/59 206/13/60
+f 214/8/8 246/7/7 247/31/61 215/32/62
+f 203/12/12 235/11/11 236/26/63 204/25/64
+f 223/16/16 255/15/15 256/2/2 224/1/1
+f 212/20/20 244/19/19 245/6/6 213/5/5
+f 201/24/24 233/23/23 234/10/10 202/9/9
+f 221/28/28 253/27/27 254/14/14 222/13/13
+f 210/30/32 242/29/31 243/18/18 211/17/17
+f 199/33/36 231/34/35 232/22/22 200/21/21
+f 219/12/40 251/11/39 252/26/26 220/25/25
+f 197/5/44 229/6/43 230/7/34 198/8/33
+f 208/1/48 240/2/47 241/3/30 209/4/29
+f 217/24/52 249/23/51 250/10/38 218/9/37
+f 195/17/56 227/18/55 228/19/42 196/20/41
+f 206/13/60 238/14/59 239/15/46 207/16/45
+f 215/33/62 247/34/61 248/22/50 216/21/49
+f 193/4/4 225/3/3 226/29/54 194/30/53
+f 204/25/64 236/26/63 237/27/58 205/28/57
+f 533/1/65 502/4/66 534/3/67 565/2/68
+f 522/5/69 523/8/70 555/7/71 554/6/72
+f 511/9/73 512/12/74 544/11/75 543/10/76
+f 531/13/77 532/16/78 564/15/79 563/14/80
+f 520/17/81 521/20/82 553/19/83 552/18/84
+f 509/21/85 510/24/86 542/23/87 541/22/88
+f 529/25/89 530/28/90 562/27/91 561/26/92
+f 518/4/93 519/30/94 551/29/95 550/3/96
+f 507/8/97 508/32/98 540/31/99 539/7/100
+f 527/9/101 528/12/102 560/11/103 559/10/104
+f 505/20/105 506/5/106 538/6/107 537/19/108
+f 516/16/109 517/1/110 549/2/111 548/15/112
+f 525/21/113 526/24/114 558/23/115 557/22/116
+f 503/30/117 504/17/118 536/18/119 535/29/120
+f 514/28/121 515/13/122 547/14/123 546/27/124
+f 523/8/70 524/32/125 556/31/126 555/7/71
+f 512/12/74 513/25/127 545/26/128 544/11/75
+f 532/16/78 533/1/65 565/2/68 564/15/79
+f 521/20/82 522/5/69 554/6/72 553/19/83
+f 510/24/86 511/9/73 543/10/76 542/23/87
+f 530/28/90 531/13/77 563/14/80 562/27/91
+f 519/30/94 520/17/81 552/18/84 551/29/95
+f 508/33/98 509/21/85 541/22/88 540/34/99
+f 528/12/102 529/25/89 561/26/92 560/11/103
+f 506/5/106 507/8/97 539/7/100 538/6/107
+f 517/1/110 518/4/93 550/3/96 549/2/111
+f 526/24/114 527/9/101 559/10/104 558/23/115
+f 504/17/118 505/20/105 537/19/108 536/18/119
+f 515/13/122 516/16/109 548/15/112 547/14/123
+f 524/33/125 525/21/113 557/22/116 556/34/126
+f 502/4/66 503/30/117 535/29/120 534/3/67
+f 513/25/127 514/28/121 546/27/124 545/26/128
+f 237/35/58 236/36/63 545/11/128 546/10/124
+f 557/15/116 558/14/115 249/37/51 248/38/50
+f 199/39/36 200/40/21 509/1/85 508/4/98
+f 551/6/95 552/19/84 243/41/18 242/42/31
+f 238/43/59 547/23/123 548/22/112 239/44/46
+f 559/27/104 560/26/103 251/45/39 250/46/38
+f 564/22/79 565/34/68 256/47/2 255/44/15
+f 536/19/119 227/41/55 226/42/54 535/6/120
+f 243/41/18 552/19/84 553/18/83 244/48/19
+f 556/2/126 557/15/116 248/38/50 247/49/61
+f 538/29/107 229/50/43 228/48/42 537/18/108
+f 539/3/100 230/51/34 229/50/43 538/29/107
+f 237/35/58 546/10/124 547/23/123 238/43/59
+f 554/29/72 555/3/71 246/51/7 245/50/6
+f 540/2/99 231/49/35 230/51/34 539/3/100
+f 246/51/7 555/3/71 556/2/126 247/49/61
+f 561/11/92 562/10/91 253/35/27 252/36/26
+f 562/10/91 563/23/80 254/43/14 253/35/27
+f 563/23/80 564/22/79 255/44/15 254/43/14
+f 233/37/23 542/14/87 543/27/76 234/46/10
+f 236/36/63 235/45/11 544/26/75 545/11/128
+f 241/52/30 240/53/47 549/31/111 550/7/96
+f 235/45/11 234/46/10 543/27/76 544/26/75
+f 565/31/68 534/7/67 225/52/3 256/53/2
+f 542/14/87 233/37/23 232/38/22 541/15/88
+f 541/15/88 232/38/22 231/49/35 540/2/99
+f 244/48/19 553/18/83 554/29/72 245/50/6
+f 560/26/103 561/11/92 252/36/26 251/45/39
+f 194/54/53 195/55/56 504/5/118 503/8/117
+f 537/18/108 228/48/42 227/41/55 536/19/119
+f 240/47/47 239/44/46 548/22/112 549/34/111
+f 558/14/115 559/27/104 250/46/38 249/37/51
+f 535/6/120 226/42/54 225/52/3 534/7/67
+f 221/56/28 530/12/90 529/25/89 220/57/25
+f 550/7/96 551/6/95 242/42/31 241/52/30
+f 218/58/37 527/13/101 526/16/114 217/59/52
+f 207/60/45 208/61/48 517/21/110 516/24/109
+f 520/5/81 211/55/17 212/62/20 521/20/82
+f 523/30/70 214/63/8 215/39/62 524/4/125
+f 224/61/1 533/21/65 532/24/78 223/60/16
+f 223/60/16 532/24/78 531/9/77 222/64/13
+f 196/62/41 197/65/44 506/17/106 505/20/105
+f 219/66/40 528/28/102 527/13/101 218/58/37
+f 521/20/82 212/62/20 213/65/5 522/17/69
+f 197/65/44 198/63/33 507/30/97 506/17/106
+f 522/17/69 213/65/5 214/63/8 523/30/70
+f 198/63/33 199/39/36 508/4/98 507/30/97
+f 206/64/60 207/60/45 516/24/109 515/9/122
+f 203/66/12 204/57/64 513/25/127 512/28/74
+f 202/58/9 203/66/12 512/28/74 511/13/73
+f 195/55/56 196/62/41 505/20/105 504/5/118
+f 525/1/113 524/4/125 215/39/62 216/40/49
+f 519/8/94 210/54/32 211/55/17 520/5/81
+f 200/40/21 201/59/24 510/16/86 509/1/85
+f 517/21/110 208/61/48 209/67/29 518/33/93
+f 201/59/24 202/58/9 511/13/73 510/16/86
+f 525/1/113 216/40/49 217/59/52 526/16/114
+f 193/68/4 194/54/53 503/8/117 502/32/66
+f 220/57/25 529/25/89 528/28/102 219/66/40
+f 513/25/127 204/57/64 205/56/57 514/12/121
+f 205/56/57 206/64/60 515/9/122 514/12/121
+f 222/64/13 531/9/77 530/12/90 221/56/28
+f 193/67/4 502/33/66 533/21/65 224/61/1
+f 518/32/93 209/68/29 210/54/32 519/8/94
+g Circle.000_Circle.000_bulb
+f 12/69/129 4/70/130 3/71/131 11/72/132
+f 11/72/132 3/71/131 2/73/133 10/74/134
+f 16/75/135 8/76/136 7/77/137 15/78/138
+f 10/74/134 2/73/133 1/79/139 9/80/140
+f 15/78/138 7/77/137 6/81/141 14/82/142
+f 14/82/142 6/81/141 5/83/143 13/84/144
+f 13/84/144 5/83/143 4/70/130 12/69/129
+f 19/85/145 11/72/132 10/74/134 18/86/146
+f 27/87/147 19/85/145 18/86/146 26/88/148
+f 28/89/149 20/90/150 19/85/145 27/87/147
+f 584/91/151 8/76/136 16/75/135 586/92/152
+f 7/77/137 8/76/136 128/93/153 127/94/154
+f 30/95/155 22/96/156 21/97/157 29/98/158
+f 31/99/159 23/100/160 22/96/156 30/95/155
+f 37/101/161 29/98/158 28/89/149 36/102/162
+f 35/103/163 27/87/147 26/88/148 34/104/164
+f 36/102/162 28/89/149 27/87/147 35/103/163
+f 34/104/164 26/88/148 25/105/165 33/106/166
+f 586/92/152 16/75/135 24/107/167 588/108/168
+f 38/109/169 30/95/155 29/98/158 37/101/161
+f 39/110/170 31/99/159 30/95/155 38/109/169
+f 45/111/171 37/101/161 36/102/162 44/112/172
+f 43/113/173 35/103/163 34/104/164 42/114/174
+f 44/112/172 36/102/162 35/103/163 43/113/173
+f 42/114/174 34/104/164 33/106/166 41/115/175
+f 588/108/168 24/107/167 32/116/176 589/117/177
+f 46/118/178 38/109/169 37/101/161 45/111/171
+f 47/119/179 39/110/170 38/109/169 46/118/178
+f 53/120/180 45/111/171 44/112/172 52/121/181
+f 51/122/182 43/113/173 42/114/174 50/123/183
+f 52/121/181 44/112/172 43/113/173 51/122/182
+f 50/123/183 42/114/174 41/115/175 49/124/184
+f 589/117/177 32/116/176 40/125/185 591/126/186
+f 54/127/187 46/118/178 45/111/171 53/120/180
+f 55/128/188 47/119/179 46/118/178 54/127/187
+f 61/129/189 53/120/180 52/121/181 60/130/190
+f 59/131/191 51/122/182 50/123/183 58/132/192
+f 60/130/190 52/121/181 51/122/182 59/131/191
+f 58/132/192 50/123/183 49/124/184 57/133/193
+f 591/126/186 40/125/185 48/134/194 592/135/195
+f 62/136/196 54/127/187 53/120/180 61/129/189
+f 63/137/197 55/128/188 54/127/187 62/136/196
+f 69/138/198 61/129/189 60/130/190 68/139/199
+f 67/140/200 59/131/191 58/132/192 66/141/201
+f 68/139/199 60/130/190 59/131/191 67/140/200
+f 66/141/201 58/132/192 57/133/193 65/142/202
+f 592/135/195 48/134/194 56/143/203 594/144/204
+f 70/145/205 62/136/196 61/129/189 69/138/198
+f 71/146/206 63/137/197 62/136/196 70/145/205
+f 77/147/207 69/138/198 68/139/199 76/148/208
+f 75/149/209 67/140/200 66/141/201 74/150/210
+f 76/148/208 68/139/199 67/140/200 75/149/209
+f 74/150/210 66/141/201 65/142/202 73/151/211
+f 594/144/204 56/143/203 64/152/212 595/153/213
+f 78/154/214 70/145/205 69/138/198 77/147/207
+f 79/155/215 71/146/206 70/145/205 78/154/214
+f 85/156/216 77/147/207 76/148/208 84/157/217
+f 83/158/218 75/149/209 74/150/210 82/159/219
+f 84/157/217 76/148/208 75/149/209 83/158/218
+f 82/159/219 74/150/210 73/151/211 81/160/220
+f 595/153/213 64/152/212 72/161/221 597/162/222
+f 86/163/223 78/154/214 77/147/207 85/156/216
+f 87/164/224 79/155/215 78/154/214 86/163/223
+f 93/14/225 85/156/216 84/157/217 92/2/226
+f 91/29/227 83/158/218 82/159/219 90/165/228
+f 92/2/226 84/157/217 83/158/218 91/29/227
+f 90/165/228 82/159/219 81/160/220 89/6/229
+f 597/162/222 72/161/221 80/166/230 598/167/231
+f 94/26/232 86/163/223 85/156/216 93/14/225
+f 95/168/233 87/164/224 86/163/223 94/26/232
+f 101/37/234 93/14/225 92/2/226 100/49/235
+f 99/50/236 91/29/227 90/165/228 98/169/237
+f 100/49/235 92/2/226 91/29/227 99/50/236
+f 98/169/237 90/165/228 89/6/229 97/42/238
+f 598/167/231 80/166/230 88/170/239 600/171/240
+f 102/45/241 94/26/232 93/14/225 101/37/234
+f 103/172/242 95/168/233 94/26/232 102/45/241
+f 109/13/243 101/58/234 100/40/235 108/1/244
+f 107/30/245 99/63/236 98/173/237 106/174/246
+f 108/1/244 100/40/235 99/63/236 107/30/245
+f 106/174/246 98/173/237 97/55/238 105/5/247
+f 600/171/240 88/170/239 96/23/248 601/175/249
+f 110/25/250 102/57/241 101/58/234 109/13/243
+f 111/176/251 103/177/242 102/57/241 110/25/250
+f 117/178/252 109/13/243 108/1/244 116/179/253
+f 115/180/254 107/30/245 106/174/246 114/181/255
+f 116/179/253 108/1/244 107/30/245 115/180/254
+f 114/181/255 106/174/246 105/5/247 113/182/256
+f 601/175/249 96/23/248 104/43/257 603/183/258
+f 118/184/259 110/25/250 109/13/243 117/178/252
+f 119/185/260 111/176/251 110/25/250 118/184/259
+f 125/186/261 117/178/252 116/179/253 124/187/262
+f 123/188/263 115/180/254 114/181/255 122/189/264
+f 124/187/262 116/179/253 115/180/254 123/188/263
+f 122/189/264 114/181/255 113/182/256 121/190/265
+f 603/191/258 104/60/257 112/24/266 604/192/267
+f 126/193/268 118/184/259 117/178/252 125/186/261
+f 127/94/154 119/185/260 118/184/259 126/193/268
+f 604/192/267 112/24/266 120/194/269 606/195/270
+f 607/196/271 128/93/153 8/76/136 584/91/151
+f 606/195/270 120/194/269 128/93/153 607/196/271
+f 6/81/141 7/77/137 127/94/154 126/193/268
+f 32/116/176 24/107/167 23/100/160 31/99/159
+f 40/125/185 32/116/176 31/99/159 39/110/170
+f 48/134/194 40/125/185 39/110/170 47/119/179
+f 56/143/203 48/134/194 47/119/179 55/128/188
+f 64/152/212 56/143/203 55/128/188 63/137/197
+f 72/161/221 64/152/212 63/137/197 71/146/206
+f 80/166/230 72/161/221 71/146/206 79/155/215
+f 88/170/239 80/166/230 79/155/215 87/164/224
+f 96/23/248 88/170/239 87/164/224 95/168/233
+f 104/43/257 96/23/248 95/168/233 103/172/242
+f 112/24/266 104/60/257 103/177/242 111/176/251
+f 120/194/269 112/24/266 111/176/251 119/185/260
+f 128/93/153 120/194/269 119/185/260 127/94/154
+f 3/71/131 4/70/130 124/187/262 123/188/263
+f 21/97/157 13/84/144 12/69/129 20/90/150
+f 4/70/130 5/83/143 125/186/261 124/187/262
+f 20/90/150 12/69/129 11/72/132 19/85/145
+f 29/98/158 21/97/157 20/90/150 28/89/149
+f 26/88/148 18/86/146 17/197/272 25/105/165
+f 24/107/167 16/75/135 15/78/138 23/100/160
+f 23/100/160 15/78/138 14/82/142 22/96/156
+f 22/96/156 14/82/142 13/84/144 21/97/157
+f 18/86/146 10/74/134 9/80/140 17/197/272
+f 2/73/133 3/71/131 123/188/263 122/189/264
+f 1/79/139 2/73/133 122/189/264 121/190/265
+f 5/83/143 6/81/141 126/193/268 125/186/261
+f 587/198/273 17/197/272 9/80/140 585/199/274
+f 587/200/273 25/105/165 17/197/272
+f 590/201/275 33/106/166 25/105/165 587/200/273
+f 590/202/275 41/115/175 33/106/166
+f 593/203/276 49/124/184 41/115/175 590/202/275
+f 596/204/277 57/133/193 49/124/184 593/203/276
+f 596/205/277 65/142/202 57/133/193
+f 599/206/278 73/151/211 65/142/202 596/205/277
+f 599/207/278 81/160/220 73/151/211
+f 602/208/279 89/6/229 81/160/220 599/207/278
+f 602/209/279 97/42/238 89/6/229
+f 605/210/280 105/5/247 97/55/238 602/211/279
+f 605/212/280 113/182/256 105/5/247
+f 605/213/280 121/190/265 113/182/256
+f 585/214/274 1/79/139 121/190/265 605/213/280
+f 585/199/274 9/80/140 1/79/139
+g Circle.000_Circle.000_base-stand
+f 129/215/281 131/216/282 132/217/282 130/218/281
+f 131/216/282 133/101/283 134/219/283 132/217/282
+f 133/101/283 135/220/284 136/221/284 134/219/283
+f 135/220/284 137/222/285 138/223/285 136/221/284
+f 137/222/285 139/224/286 140/225/286 138/223/285
+f 139/224/286 141/109/287 142/226/287 140/225/286
+f 141/109/287 143/227/288 144/228/288 142/226/287
+f 143/227/288 145/229/289 146/230/289 144/228/288
+f 145/229/289 147/110/290 148/231/290 146/230/289
+f 147/110/290 149/232/291 150/233/291 148/231/290
+f 149/232/291 151/234/292 152/235/292 150/233/291
+f 151/234/292 153/125/293 154/236/293 152/235/292
+f 153/125/293 155/126/294 156/237/294 154/236/293
+f 155/126/294 157/238/295 158/239/295 156/237/294
+f 157/238/295 159/240/296 160/241/296 158/239/295
+f 159/240/296 161/242/297 162/243/297 160/241/296
+f 161/244/297 163/245/298 164/246/298 162/247/297
+f 163/245/298 165/248/299 166/249/299 164/246/298
+f 165/248/299 167/201/300 168/250/300 166/249/299
+f 167/201/300 169/106/301 170/251/301 168/250/300
+f 169/106/301 171/252/302 172/253/302 170/251/301
+f 171/252/302 173/254/303 174/255/303 172/253/302
+f 173/254/303 175/104/304 176/256/304 174/255/303
+f 175/104/304 177/257/305 178/258/305 176/256/304
+f 177/257/305 179/259/306 180/260/306 178/258/305
+f 179/259/306 181/103/307 182/261/307 180/260/306
+f 181/103/307 183/262/308 184/263/308 182/261/307
+f 183/262/308 185/264/309 186/265/309 184/263/308
+f 185/264/309 187/266/310 188/267/310 186/265/309
+f 187/266/310 189/102/311 190/268/311 188/267/310
+f 191/269/312 129/215/281 130/218/281 192/270/312
+f 189/102/311 191/269/312 192/270/312 190/268/311
+f 672/44/290 641/271/289 462/272/289 461/61/290
+f 674/48/312 643/273/311 440/274/311 439/65/312
+f 676/275/301 645/46/313 451/66/300 450/276/301
+f 678/43/314 647/277/291 460/191/291 459/60/292
+f 680/278/303 649/37/315 449/58/302 448/279/303
+f 682/280/283 651/41/282 469/62/282 468/281/283
+f 684/35/316 653/282/293 458/283/293 457/64/294
+f 686/284/305 655/38/304 447/59/304 446/285/305
+f 688/209/285 657/42/317 467/55/284 466/211/285
+f 690/36/296 659/286/295 456/177/295 455/56/296
+f 692/287/307 661/49/306 445/40/306 444/288/307
+f 694/289/287 663/52/318 465/54/286 464/290/287
+f 696/291/309 665/51/319 443/39/308 442/292/309
+f 698/45/298 667/293/297 454/294/297 453/57/298
+f 641/271/289 668/47/288 463/67/288 462/272/289
+f 643/273/311 669/50/320 441/63/310 440/274/311
+f 645/46/313 670/295/299 452/296/299 451/66/300
+f 647/277/291 672/44/290 461/61/290 460/191/291
+f 703/169/281 674/48/312 439/65/312 438/173/281
+f 649/37/315 676/275/301 450/276/301 449/58/302
+f 651/41/282 703/169/281 438/173/281 469/62/282
+f 653/282/293 678/43/314 459/60/292 458/283/293
+f 655/38/304 680/278/303 448/279/303 447/59/304
+f 657/42/317 682/280/283 468/281/283 467/55/284
+f 659/286/295 684/35/316 457/64/294 456/177/295
+f 661/49/306 686/284/305 446/285/305 445/40/306
+f 663/52/318 688/209/285 466/211/285 465/54/286
+f 667/293/297 690/36/296 455/56/296 454/294/297
+f 665/51/319 692/287/307 444/288/307 443/39/308
+f 668/53/288 694/289/287 464/290/287 463/68/288
+f 669/50/320 696/291/309 442/292/309 441/63/310
+f 670/295/299 698/45/298 453/57/298 452/296/299
+f 702/295/299 666/45/298 634/57/298 638/296/299
+f 701/50/320 664/291/309 632/292/309 637/63/320
+f 700/53/288 662/289/287 630/290/287 636/68/288
+f 697/51/319 660/287/307 628/288/307 633/39/319
+f 699/293/297 658/36/296 626/56/296 635/294/297
+f 695/52/318 656/209/285 624/211/285 631/54/318
+f 693/49/306 654/284/305 622/285/305 629/40/306
+f 691/286/295 652/35/316 620/64/316 627/177/295
+f 689/42/317 650/280/283 618/281/283 625/55/317
+f 687/38/304 648/278/303 616/279/303 623/59/304
+f 685/282/293 646/43/314 614/60/314 621/283/293
+f 683/41/282 671/169/281 639/173/281 619/62/282
+f 681/37/315 644/275/301 612/276/301 617/58/315
+f 671/169/281 642/48/312 610/65/312 639/173/281
+f 679/277/291 640/44/290 608/61/290 615/191/291
+f 677/46/313 702/295/299 638/296/299 613/66/313
+f 675/273/311 701/50/320 637/63/320 611/274/311
+f 673/271/289 700/47/288 636/67/288 609/272/289
+f 666/45/298 699/293/297 635/294/297 634/57/298
+f 664/291/309 697/51/319 633/39/319 632/292/309
+f 662/289/287 695/52/318 631/54/318 630/290/287
+f 660/287/307 693/49/306 629/40/306 628/288/307
+f 658/36/296 691/286/295 627/177/295 626/56/296
+f 656/209/285 689/42/317 625/55/317 624/211/285
+f 654/284/305 687/38/304 623/59/304 622/285/305
+f 652/35/316 685/282/293 621/283/293 620/64/316
+f 650/280/283 683/41/282 619/62/282 618/281/283
+f 648/278/303 681/37/315 617/58/315 616/279/303
+f 646/43/314 679/277/291 615/191/291 614/60/314
+f 644/275/301 677/46/313 613/66/313 612/276/301
+f 642/48/312 675/273/311 611/274/311 610/65/312
+f 640/44/290 673/271/289 609/272/289 608/61/290
+f 429/44/290 430/271/289 673/272/289 640/61/290
+f 407/48/312 408/273/311 675/274/311 642/65/312
+f 418/275/301 419/46/300 677/66/313 644/276/301
+f 427/43/292 428/277/291 679/191/291 646/60/314
+f 416/278/303 417/37/302 681/58/315 648/279/303
+f 436/280/283 437/41/282 683/62/282 650/281/283
+f 425/35/294 426/282/293 685/283/293 652/64/316
+f 414/284/305 415/38/304 687/59/304 654/285/305
+f 434/209/285 435/42/284 689/55/317 656/211/285
+f 423/36/296 424/286/295 691/177/295 658/56/296
+f 412/287/307 413/49/306 693/40/306 660/288/307
+f 432/289/287 433/52/286 695/54/318 662/290/287
+f 410/291/309 411/51/308 697/39/319 664/292/309
+f 421/45/298 422/293/297 699/294/297 666/57/298
+f 430/271/289 431/47/288 700/67/288 673/272/289
+f 408/273/311 409/50/310 701/63/320 675/274/311
+f 419/46/300 420/295/299 702/296/299 677/66/313
+f 428/277/291 429/44/290 640/61/290 679/191/291
+f 406/169/281 407/48/312 642/65/312 671/173/281
+f 417/37/302 418/275/301 644/276/301 681/58/315
+f 437/41/282 406/169/281 671/173/281 683/62/282
+f 426/282/293 427/43/292 646/60/314 685/283/293
+f 415/38/304 416/278/303 648/279/303 687/59/304
+f 435/42/284 436/280/283 650/281/283 689/55/317
+f 424/286/295 425/35/294 652/64/316 691/177/295
+f 413/49/306 414/284/305 654/285/305 693/40/306
+f 433/52/286 434/209/285 656/211/285 695/54/318
+f 422/293/297 423/36/296 658/56/296 699/294/297
+f 411/51/308 412/287/307 660/288/307 697/39/319
+f 431/53/288 432/289/287 662/290/287 700/68/288
+f 409/50/310 410/291/309 664/292/309 701/63/320
+f 420/295/299 421/45/298 666/57/298 702/296/299
+f 638/295/299 634/45/298 698/57/298 670/296/299
+f 637/50/320 632/291/309 696/292/309 669/63/320
+f 636/53/288 630/289/287 694/290/287 668/68/288
+f 633/51/319 628/287/307 692/288/307 665/39/319
+f 635/293/297 626/36/296 690/56/296 667/294/297
+f 631/52/318 624/209/285 688/211/285 663/54/318
+f 629/49/306 622/284/305 686/285/305 661/40/306
+f 627/286/295 620/35/316 684/64/316 659/177/295
+f 625/42/317 618/280/283 682/281/283 657/55/317
+f 623/38/304 616/278/303 680/279/303 655/59/304
+f 621/282/293 614/43/314 678/60/314 653/283/293
+f 619/41/282 639/169/281 703/173/281 651/62/282
+f 617/37/315 612/275/301 676/276/301 649/58/315
+f 639/169/281 610/48/312 674/65/312 703/173/281
+f 615/277/291 608/44/290 672/61/290 647/191/291
+f 613/46/313 638/295/299 670/296/299 645/66/313
+f 611/273/311 637/50/320 669/63/320 643/274/311
+f 609/271/289 636/47/288 668/67/288 641/272/289
+f 634/45/298 635/293/297 667/294/297 698/57/298
+f 632/291/309 633/51/319 665/39/319 696/292/309
+f 630/289/287 631/52/318 663/54/318 694/290/287
+f 628/287/307 629/49/306 661/40/306 692/288/307
+f 626/36/296 627/286/295 659/177/295 690/56/296
+f 624/209/285 625/42/317 657/55/317 688/211/285
+f 622/284/305 623/38/304 655/59/304 686/285/305
+f 620/35/316 621/282/293 653/283/293 684/64/316
+f 618/280/283 619/41/282 651/62/282 682/281/283
+f 616/278/303 617/37/315 649/58/315 680/279/303
+f 614/43/314 615/277/291 647/191/291 678/60/314
+f 612/275/301 613/46/313 645/66/313 676/276/301
+f 610/48/312 611/273/311 643/274/311 674/65/312
+f 608/44/290 609/271/289 641/272/289 672/61/290
+f 129/65/321 131/297/321 566/298/321
+f 135/299/321 137/300/321 566/298/321
+f 133/301/321 135/299/321 566/298/321
+f 131/297/321 133/301/321 566/298/321
+f 134/302/322 132/303/322 567/304/322
+f 136/305/322 134/302/322 567/304/322
+f 138/306/322 136/305/322 567/304/322
+f 140/307/322 138/306/322 567/304/322
+f 142/308/322 140/307/322 567/304/322
+f 144/309/322 142/308/322 567/304/322
+f 146/310/322 144/309/322 567/304/322
+f 148/311/322 146/310/322 567/304/322
+f 150/312/322 148/311/322 567/304/322
+f 152/313/322 150/312/322 567/304/322
+f 154/314/322 152/313/322 567/304/322
+f 156/315/322 154/314/322 567/304/322
+f 158/316/322 156/315/322 567/304/322
+f 160/317/322 158/316/322 567/304/322
+f 162/229/322 160/317/322 567/304/322
+f 164/318/322 162/229/322 567/304/322
+f 166/319/322 164/318/322 567/304/322
+f 168/320/322 166/319/322 567/304/322
+f 170/321/322 168/320/322 567/304/322
+f 172/322/322 170/321/322 567/304/322
+f 174/323/322 172/322/322 567/304/322
+f 176/324/322 174/323/322 567/304/322
+f 178/325/322 176/324/322 567/304/322
+f 180/326/322 178/325/322 567/304/322
+f 182/327/322 180/326/322 567/304/322
+f 184/328/322 182/327/322 567/304/322
+f 186/329/322 184/328/322 567/304/322
+f 188/330/322 186/329/322 567/304/322
+f 190/331/322 188/330/322 567/304/322
+f 192/332/322 190/331/322 567/304/322
+f 130/36/322 192/332/322 567/304/322
+f 132/303/322 130/36/322 567/304/322
+f 137/300/321 139/333/321 566/298/321
+f 139/333/321 141/334/321 566/298/321
+f 141/334/321 143/335/321 566/298/321
+f 143/335/321 145/336/321 566/298/321
+f 145/336/321 147/337/321 566/298/321
+f 147/337/321 149/338/321 566/298/321
+f 149/338/321 151/339/321 566/298/321
+f 151/339/321 153/340/321 566/298/321
+f 153/340/321 155/341/321 566/298/321
+f 155/341/321 157/342/321 566/298/321
+f 157/342/321 159/343/321 566/298/321
+f 159/343/321 161/257/321 566/298/321
+f 161/257/321 163/344/321 566/298/321
+f 163/344/321 165/345/321 566/298/321
+f 165/345/321 167/346/321 566/298/321
+f 167/346/321 169/347/321 566/298/321
+f 169/347/321 171/348/321 566/298/321
+f 171/348/321 173/349/321 566/298/321
+f 173/349/321 175/350/321 566/298/321
+f 175/350/321 177/351/321 566/298/321
+f 177/351/321 179/352/321 566/298/321
+f 179/352/321 181/353/321 566/298/321
+f 181/353/321 183/354/321 566/298/321
+f 183/354/321 185/355/321 566/298/321
+f 185/355/321 187/356/321 566/298/321
+f 187/356/321 189/357/321 566/298/321
+f 189/357/321 191/358/321 566/298/321
+f 191/358/321 129/65/321 566/298/321
+g Circle.000_Circle.000_metal-supports
+f 265/359/305 266/360/304 330/361/304 329/362/305
+f 303/363/323 367/364/324 366/365/325 302/366/326
+f 318/367/327 382/368/328 381/369/329 317/370/330
+f 280/371/290 281/372/289 345/373/289 344/374/290
+f 258/375/312 259/376/311 323/377/311 322/378/312
+f 296/379/331 360/380/332 359/381/333 295/382/334
+f 311/383/335 375/384/336 374/385/337 310/386/338
+f 273/387/297 274/388/296 338/389/296 337/390/297
+f 288/391/282 257/392/281 321/393/281 352/394/282
+f 304/395/339 368/396/340 367/364/324 303/363/323
+f 266/360/304 267/397/303 331/398/303 330/361/304
+f 319/399/341 383/400/342 382/368/328 318/367/327
+f 281/372/289 282/401/288 346/402/288 345/373/289
+f 259/376/311 260/403/310 324/404/310 323/377/311
+f 297/405/343 361/406/344 360/380/332 296/379/331
+f 312/407/345 376/408/346 375/384/336 311/383/335
+f 274/388/296 275/409/295 339/410/295 338/389/296
+f 290/411/347 354/412/348 353/413/349 289/414/350
+f 267/397/303 268/415/302 332/416/302 331/398/303
+f 305/417/351 369/418/352 368/396/340 304/395/339
+f 320/419/353 384/420/354 383/400/342 319/399/341
+f 282/401/288 283/421/287 347/422/287 346/402/288
+f 260/403/310 261/423/309 325/424/309 324/404/310
+f 298/425/355 362/426/356 361/406/344 297/405/343
+f 313/427/357 377/428/358 376/408/346 312/407/345
+f 275/409/295 276/429/294 340/430/294 339/410/295
+f 291/431/359 355/432/360 354/412/348 290/411/347
+f 268/415/302 269/433/301 333/434/301 332/416/302
+f 306/435/361 370/436/362 369/437/352 305/438/351
+f 289/414/350 353/413/349 384/420/354 320/419/353
+f 283/421/287 284/439/286 348/440/286 347/422/287
+f 261/423/309 262/441/308 326/442/308 325/424/309
+f 299/443/363 363/444/364 362/426/356 298/425/355
+f 314/445/365 378/446/366 377/428/358 313/427/357
+f 276/429/294 277/447/293 341/448/293 340/430/294
+f 292/449/367 356/450/368 355/432/360 291/431/359
+f 269/433/301 270/451/300 334/452/300 333/434/301
+f 307/453/369 371/454/370 370/436/362 306/435/361
+f 284/439/286 285/455/285 349/456/285 348/440/286
+f 262/441/308 263/457/307 327/458/307 326/442/308
+f 300/459/371 364/460/372 363/444/364 299/443/363
+f 315/461/373 379/462/374 378/446/366 314/445/365
+f 277/447/293 278/463/292 342/464/292 341/448/293
+f 293/465/375 357/466/376 356/450/368 292/449/367
+f 270/451/300 271/467/299 335/468/299 334/452/300
+f 308/469/377 372/470/378 371/454/370 307/453/369
+f 285/455/285 286/471/284 350/472/284 349/456/285
+f 263/457/307 264/473/306 328/474/306 327/458/307
+f 301/475/379 365/476/380 364/460/372 300/459/371
+f 316/477/381 380/478/382 379/462/374 315/461/373
+f 278/463/292 279/479/291 343/480/291 342/464/292
+f 294/481/383 358/482/384 357/466/376 293/465/375
+f 271/467/299 272/483/298 336/484/298 335/468/299
+f 309/485/385 373/486/386 372/470/378 308/469/377
+f 286/471/284 287/487/283 351/488/283 350/472/284
+f 264/473/306 265/359/305 329/362/305 328/474/306
+f 302/366/326 366/365/325 365/476/380 301/475/379
+f 317/370/330 381/369/329 380/478/382 316/477/381
+f 279/479/291 280/371/290 344/374/290 343/480/291
+f 257/392/281 258/375/312 322/378/312 321/393/281
+f 295/382/334 359/381/333 358/482/384 294/481/383
+f 310/386/338 374/385/337 373/486/386 309/485/385
+f 272/483/298 273/489/297 337/490/297 336/484/298
+f 287/487/283 288/391/282 352/394/282 351/488/283
+f 387/491/289 388/492/289 386/493/289 385/494/289
+f 391/495/305 392/496/305 390/492/305 389/491/305
+f 395/496/281 396/495/281 394/497/281 393/498/281
+f 400/498/297 399/497/297 397/499/297 398/500/297
+f 500/501/387 470/502/388 403/503/321
+f 498/504/389 500/501/387 403/503/321
+f 496/505/390 498/504/389 403/503/321
+f 494/506/391 496/505/390 403/503/321
+f 492/507/392 494/506/391 403/503/321
+f 490/508/393 492/507/392 403/503/321
+f 488/509/394 490/508/393 403/503/321
+f 486/510/395 488/509/394 403/503/321
+f 484/511/396 486/510/395 403/503/321
+f 482/512/397 484/511/396 403/503/321
+f 480/513/398 482/512/397 403/503/321
+f 478/514/399 480/513/398 403/503/321
+f 476/515/400 478/514/399 403/503/321
+f 474/516/401 476/515/400 403/503/321
+f 472/517/402 474/516/401 403/503/321
+f 475/518/403 473/519/404 404/520/322
+f 477/521/405 475/518/403 404/520/322
+f 479/522/406 477/521/405 404/520/322
+f 481/523/407 479/522/406 404/520/322
+f 483/524/408 481/523/407 404/520/322
+f 485/525/409 483/524/408 404/520/322
+f 487/526/410 485/525/409 404/520/322
+f 489/527/411 487/526/410 404/520/322
+f 491/528/412 489/527/411 404/520/322
+f 493/529/413 491/528/412 404/520/322
+f 495/530/414 493/529/413 404/520/322
+f 497/531/415 495/530/414 404/520/322
+f 499/532/416 497/531/415 404/520/322
+f 501/533/417 499/532/416 404/520/322
+f 471/534/418 501/533/417 404/520/322
+f 473/519/404 471/534/418 404/520/322
+f 470/535/388 471/536/418 473/537/404 472/538/402
+f 472/538/402 473/537/404 475/539/403 474/540/401
+f 474/541/401 475/542/403 477/543/405 476/544/400
+f 476/544/400 477/543/405 479/545/406 478/546/399
+f 478/546/399 479/545/406 481/547/407 480/548/398
+f 480/549/398 481/550/407 483/551/408 482/548/397
+f 482/548/397 483/551/408 485/552/409 484/546/396
+f 484/546/396 485/552/409 487/553/410 486/544/395
+f 486/544/395 487/553/410 489/554/411 488/541/394
+f 488/555/394 489/556/411 491/554/412 490/557/393
+f 490/557/393 491/554/412 493/553/413 492/558/392
+f 492/558/392 493/553/413 495/552/414 494/536/391
+f 494/536/391 495/552/414 497/551/415 496/537/390
+f 496/537/390 497/551/415 499/550/416 498/539/389
+f 470/502/388 472/517/402 403/503/321
+f 500/559/387 501/558/417 471/536/418 470/535/388
+f 498/560/389 499/557/416 501/558/417 500/559/387
+f 581/561/419 582/562/419 578/563/420 577/564/420
+f 573/565/421 574/566/421 570/567/422 569/568/422
+f 583/569/423 580/570/423 576/571/424 579/572/424
+f 575/568/425 572/567/425 568/567/426 571/568/426
+f 568/565/426 569/573/422 570/574/422 571/566/426
+f 575/563/425 574/574/421 573/573/421 572/564/425
+f 576/571/424 577/575/420 578/576/420 579/572/424
+f 583/575/423 582/562/419 581/561/419 580/576/423
+f 288/391/322 257/392/322 289/414/350 320/419/353
+f 277/447/322 278/463/322 310/386/338 309/485/385
+f 266/360/322 267/397/322 299/443/363 298/425/355
+f 286/471/322 287/487/322 319/399/341 318/367/327
+f 275/409/322 276/429/322 308/469/377 307/453/369
+f 264/473/322 265/359/322 297/405/343 296/379/331
+f 284/439/322 285/455/322 317/370/330 316/477/381
+f 273/387/322 274/388/322 306/435/361 305/438/351
+f 262/441/322 263/457/322 295/382/334 294/481/383
+f 282/401/322 283/421/322 315/461/373 314/445/365
+f 260/403/322 261/423/322 293/465/375 292/449/367
+f 271/467/322 272/483/322 304/395/339 303/363/323
+f 280/371/322 281/372/322 313/427/357 312/407/345
+f 258/375/322 259/376/322 291/431/359 290/411/347
+f 269/433/322 270/451/322 302/366/326 301/475/379
+f 278/463/322 279/479/322 311/383/335 310/386/338
+f 267/397/322 268/415/322 300/459/371 299/443/363
+f 287/487/322 288/391/322 320/419/353 319/399/341
+f 276/429/322 277/447/322 309/485/385 308/469/377
+f 265/359/322 266/360/322 298/425/355 297/405/343
+f 285/455/322 286/471/322 318/367/327 317/370/330
+f 274/388/322 275/409/322 307/453/369 306/435/361
+f 263/457/322 264/473/322 296/379/331 295/382/334
+f 283/421/322 284/439/322 316/477/381 315/461/373
+f 261/423/322 262/441/322 294/481/383 293/465/375
+f 272/483/322 273/489/322 305/417/351 304/395/339
+f 281/372/322 282/401/322 314/445/365 313/427/357
+f 259/376/322 260/403/322 292/449/367 291/431/359
+f 270/451/322 271/467/322 303/363/323 302/366/326
+f 279/479/322 280/371/322 312/407/345 311/383/335
+f 257/392/322 258/375/322 290/411/347 289/414/350
+f 268/415/322 269/433/322 301/475/379 300/459/371
+f 352/394/321 384/577/354 353/578/349 321/393/321
+f 341/448/321 373/579/386 374/580/337 342/464/321
+f 330/361/321 362/581/356 363/582/364 331/398/321
+f 350/472/321 382/583/328 383/584/342 351/488/321
+f 339/410/321 371/585/370 372/586/378 340/430/321
+f 328/474/321 360/587/332 361/588/344 329/362/321
+f 348/440/321 380/589/382 381/590/329 349/456/321
+f 337/390/321 369/591/352 370/592/362 338/389/321
+f 326/442/321 358/593/384 359/594/333 327/458/321
+f 346/402/321 378/595/366 379/596/374 347/422/321
+f 324/404/321 356/597/368 357/598/376 325/424/321
+f 335/468/321 367/599/324 368/600/340 336/484/321
+f 344/374/321 376/601/346 377/602/358 345/373/321
+f 322/378/321 354/603/348 355/604/360 323/377/321
+f 333/434/321 365/605/380 366/606/325 334/452/321
+f 342/464/321 374/580/337 375/607/336 343/480/321
+f 331/398/321 363/582/364 364/608/372 332/416/321
+f 351/488/321 383/584/342 384/577/354 352/394/321
+f 340/430/321 372/586/378 373/579/386 341/448/321
+f 329/362/321 361/588/344 362/581/356 330/361/321
+f 349/456/321 381/590/329 382/583/328 350/472/321
+f 338/389/321 370/592/362 371/585/370 339/410/321
+f 327/458/321 359/594/333 360/587/332 328/474/321
+f 347/422/321 379/596/374 380/589/382 348/440/321
+f 325/424/321 357/598/376 358/593/384 326/442/321
+f 336/484/321 368/600/340 369/67/352 337/490/321
+f 345/373/321 377/602/358 378/595/366 346/402/321
+f 323/377/321 355/604/360 356/597/368 324/404/321
+f 334/452/321 366/606/325 367/599/324 335/468/321
+f 343/480/321 375/607/336 376/601/346 344/374/321
+f 321/393/321 353/578/349 354/603/348 322/378/321
+f 332/416/321 364/608/372 365/605/380 333/434/321
diff --git a/homedecor_modpack/homedecor/models/homedecor_table_lamp.obj b/homedecor_modpack/homedecor/models/homedecor_table_lamp.obj
new file mode 100644
index 0000000..e59c4a1
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_table_lamp.obj
@@ -0,0 +1,2367 @@
+# Blender v2.73 (sub 0) OBJ File: 'desk_lamp.blend'
+# www.blender.org
+o Circle.000
+v -0.024465 0.368956 -0.000001
+v -0.069661 0.350236 -0.000001
+v -0.104252 0.315645 -0.000001
+v -0.122972 0.270450 -0.000001
+v -0.122972 0.221531 -0.000001
+v -0.104252 0.176335 -0.000001
+v -0.069661 0.141745 -0.000001
+v -0.024465 0.123024 -0.000001
+v -0.022604 0.368956 -0.009362
+v -0.064358 0.350236 -0.026657
+v -0.096316 0.315645 -0.039894
+v -0.113612 0.270450 -0.047058
+v -0.113612 0.221531 -0.047058
+v -0.096316 0.176335 -0.039894
+v -0.064358 0.141745 -0.026657
+v -0.022603 0.123024 -0.009362
+v -0.017301 0.368956 -0.017297
+v -0.049259 0.350236 -0.049255
+v -0.073719 0.315645 -0.073714
+v -0.086956 0.270450 -0.086951
+v -0.086956 0.221531 -0.086951
+v -0.073719 0.176335 -0.073714
+v -0.049259 0.141745 -0.049255
+v -0.017301 0.123024 -0.017297
+v -0.009366 0.368956 -0.022599
+v -0.026662 0.350236 -0.064354
+v -0.039899 0.315645 -0.096312
+v -0.047063 0.270450 -0.113607
+v -0.047063 0.221531 -0.113607
+v -0.039899 0.176335 -0.096312
+v -0.026662 0.141745 -0.064354
+v -0.009366 0.123024 -0.022599
+v -0.000006 0.368956 -0.024461
+v -0.000006 0.350236 -0.069656
+v -0.000006 0.315645 -0.104247
+v -0.000006 0.270450 -0.122967
+v -0.000006 0.221531 -0.122967
+v -0.000006 0.176335 -0.104247
+v -0.000006 0.141745 -0.069656
+v -0.000006 0.123024 -0.024461
+v 0.009354 0.368956 -0.022599
+v 0.026650 0.350236 -0.064354
+v 0.039887 0.315645 -0.096312
+v 0.047051 0.270450 -0.113607
+v 0.047051 0.221531 -0.113607
+v 0.039887 0.176335 -0.096312
+v 0.026650 0.141745 -0.064354
+v 0.009354 0.123024 -0.022599
+v 0.017290 0.368956 -0.017297
+v 0.049247 0.350236 -0.049255
+v 0.073707 0.315645 -0.073714
+v 0.086944 0.270450 -0.086951
+v 0.086944 0.221531 -0.086951
+v 0.073707 0.176335 -0.073714
+v 0.049247 0.141745 -0.049255
+v 0.017290 0.123024 -0.017297
+v 0.022592 0.368956 -0.009362
+v 0.064347 0.350236 -0.026657
+v 0.096305 0.315645 -0.039894
+v 0.113600 0.270450 -0.047058
+v 0.113600 0.221531 -0.047058
+v 0.096305 0.176335 -0.039894
+v 0.064347 0.141745 -0.026657
+v 0.022592 0.123024 -0.009362
+v 0.024454 0.368956 -0.000001
+v 0.069649 0.350236 -0.000001
+v 0.104240 0.315645 -0.000001
+v 0.122960 0.270450 -0.000001
+v 0.122960 0.221531 -0.000001
+v 0.104240 0.176335 -0.000001
+v 0.069649 0.141745 -0.000001
+v 0.024454 0.123024 -0.000001
+v 0.022592 0.368956 0.009359
+v 0.064347 0.350236 0.026654
+v 0.096304 0.315645 0.039892
+v 0.113600 0.270450 0.047056
+v 0.113600 0.221531 0.047056
+v 0.096304 0.176335 0.039892
+v 0.064347 0.141745 0.026654
+v 0.022592 0.123024 0.009359
+v 0.017290 0.368956 0.017294
+v 0.049247 0.350236 0.049252
+v 0.073707 0.315645 0.073711
+v 0.086944 0.270450 0.086949
+v 0.086944 0.221531 0.086949
+v 0.073707 0.176335 0.073711
+v 0.049247 0.141745 0.049252
+v 0.017290 0.123024 0.017294
+v 0.009354 0.368956 0.022596
+v 0.026650 0.350236 0.064351
+v 0.039887 0.315645 0.096309
+v 0.047051 0.270450 0.113604
+v 0.047051 0.221531 0.113604
+v 0.039887 0.176335 0.096309
+v 0.026650 0.141745 0.064351
+v 0.009354 0.123024 0.022596
+v -0.000006 0.368956 0.024458
+v -0.000006 0.350236 0.069653
+v -0.000006 0.315645 0.104244
+v -0.000006 0.270450 0.122965
+v -0.000006 0.221531 0.122965
+v -0.000006 0.176335 0.104244
+v -0.000006 0.141745 0.069653
+v -0.000006 0.123024 0.024458
+v -0.009366 0.368956 0.022596
+v -0.026662 0.350236 0.064351
+v -0.039899 0.315645 0.096309
+v -0.047063 0.270450 0.113604
+v -0.047063 0.221531 0.113604
+v -0.039899 0.176335 0.096309
+v -0.026662 0.141745 0.064351
+v -0.009366 0.123024 0.022596
+v -0.017301 0.368956 0.017294
+v -0.049259 0.350236 0.049252
+v -0.073719 0.315645 0.073711
+v -0.086956 0.270450 0.086949
+v -0.086956 0.221531 0.086949
+v -0.073719 0.176335 0.073711
+v -0.049259 0.141745 0.049252
+v -0.017301 0.123024 0.017294
+v -0.022603 0.368956 0.009359
+v -0.064358 0.350236 0.026654
+v -0.096316 0.315645 0.039892
+v -0.113612 0.270450 0.047056
+v -0.113612 0.221531 0.047056
+v -0.096316 0.176335 0.039892
+v -0.064358 0.141745 0.026654
+v -0.022603 0.123024 0.009359
+v -0.000006 -0.481764 -0.203070
+v -0.000006 -0.499993 -0.203070
+v 0.039611 -0.481764 -0.199168
+v 0.039611 -0.499993 -0.199168
+v 0.077705 -0.481764 -0.187613
+v 0.077705 -0.499993 -0.187613
+v 0.112813 -0.481764 -0.168847
+v 0.112813 -0.499993 -0.168847
+v 0.143586 -0.481764 -0.143593
+v 0.143586 -0.499993 -0.143593
+v 0.168840 -0.481764 -0.112820
+v 0.168840 -0.499993 -0.112820
+v 0.187605 -0.481764 -0.077712
+v 0.187605 -0.499993 -0.077712
+v 0.199161 -0.481764 -0.039618
+v 0.199161 -0.499993 -0.039618
+v 0.203063 -0.481764 -0.000001
+v 0.203063 -0.499993 -0.000001
+v 0.199161 -0.481764 0.039615
+v 0.199161 -0.499993 0.039615
+v 0.187605 -0.481764 0.077710
+v 0.187605 -0.499993 0.077710
+v 0.168840 -0.481764 0.112818
+v 0.168840 -0.499993 0.112818
+v 0.143586 -0.481764 0.143590
+v 0.143586 -0.499993 0.143590
+v 0.112813 -0.481764 0.168844
+v 0.112813 -0.499993 0.168844
+v 0.077705 -0.481764 0.187610
+v 0.077705 -0.499993 0.187610
+v 0.039611 -0.481764 0.199166
+v 0.039611 -0.499993 0.199166
+v -0.000006 -0.481764 0.203068
+v -0.000006 -0.499993 0.203068
+v -0.039623 -0.481764 0.199166
+v -0.039623 -0.499993 0.199166
+v -0.077717 -0.481764 0.187610
+v -0.077717 -0.499993 0.187610
+v -0.112825 -0.481764 0.168844
+v -0.112825 -0.499993 0.168844
+v -0.143597 -0.481764 0.143590
+v -0.143597 -0.499993 0.143590
+v -0.168852 -0.481764 0.112818
+v -0.168852 -0.499993 0.112818
+v -0.187617 -0.481764 0.077710
+v -0.187617 -0.499993 0.077710
+v -0.199173 -0.481764 0.039615
+v -0.199173 -0.499993 0.039615
+v -0.203075 -0.481764 -0.000002
+v -0.203075 -0.499993 -0.000002
+v -0.199173 -0.481764 -0.039618
+v -0.199173 -0.499993 -0.039618
+v -0.187617 -0.481764 -0.077713
+v -0.187617 -0.499993 -0.077713
+v -0.168851 -0.481764 -0.112821
+v -0.168851 -0.499993 -0.112821
+v -0.143597 -0.481764 -0.143593
+v -0.143597 -0.499993 -0.143593
+v -0.112825 -0.481764 -0.168847
+v -0.112825 -0.499993 -0.168847
+v -0.077717 -0.481764 -0.187613
+v -0.077717 -0.499993 -0.187613
+v -0.039622 -0.481764 -0.199168
+v -0.039622 -0.499993 -0.199168
+v -0.000006 0.098841 -0.251988
+v -0.050712 0.098841 -0.247146
+v -0.099469 0.098841 -0.232806
+v -0.144405 0.098841 -0.209520
+v -0.183790 0.098841 -0.178183
+v -0.216114 0.098841 -0.139997
+v -0.240132 0.098841 -0.096432
+v -0.254922 0.098841 -0.049161
+v -0.259917 0.098841 -0.000001
+v -0.254923 0.098841 0.049159
+v -0.240132 0.098841 0.096430
+v -0.216114 0.098841 0.139995
+v -0.183790 0.098841 0.178180
+v -0.144405 0.098841 0.209518
+v -0.099469 0.098841 0.232804
+v -0.050712 0.098841 0.247143
+v -0.000006 0.098841 0.251985
+v 0.050700 0.098841 0.247143
+v 0.099458 0.098841 0.232804
+v 0.144393 0.098841 0.209518
+v 0.183779 0.098841 0.178180
+v 0.216102 0.098841 0.139995
+v 0.240120 0.098841 0.096429
+v 0.254911 0.098841 0.049159
+v 0.259905 0.098841 -0.000002
+v 0.254911 0.098841 -0.049162
+v 0.240120 0.098841 -0.096433
+v 0.216102 0.098841 -0.139998
+v 0.183778 0.098841 -0.178183
+v 0.144392 0.098841 -0.209520
+v 0.099457 0.098841 -0.232806
+v 0.050700 0.098841 -0.247146
+v -0.000006 0.496790 -0.117664
+v -0.023683 0.496790 -0.115403
+v -0.046450 0.496790 -0.108708
+v -0.067432 0.496790 -0.097835
+v -0.085823 0.496790 -0.083202
+v -0.100916 0.496790 -0.065371
+v -0.112131 0.496790 -0.045029
+v -0.119037 0.496790 -0.022956
+v -0.121369 0.496790 -0.000001
+v -0.119037 0.496790 0.022954
+v -0.112131 0.496790 0.045026
+v -0.100916 0.496790 0.065369
+v -0.085823 0.496790 0.083199
+v -0.067432 0.496790 0.097832
+v -0.046450 0.496790 0.108705
+v -0.023683 0.496790 0.115401
+v -0.000006 0.496790 0.117662
+v 0.023671 0.496790 0.115401
+v 0.046438 0.496790 0.108705
+v 0.067420 0.496790 0.097832
+v 0.085811 0.496790 0.083199
+v 0.100904 0.496790 0.065369
+v 0.112119 0.496790 0.045026
+v 0.119025 0.496790 0.022953
+v 0.121357 0.496790 -0.000001
+v 0.119025 0.496790 -0.022956
+v 0.112119 0.496790 -0.045029
+v 0.100904 0.496790 -0.065372
+v 0.085811 0.496790 -0.083202
+v 0.067420 0.496790 -0.097835
+v 0.046438 0.496790 -0.108708
+v 0.023671 0.496790 -0.115404
+v -0.000006 0.115308 -0.240715
+v -0.046967 0.115308 -0.236089
+v -0.092123 0.115308 -0.222391
+v -0.133739 0.115308 -0.200147
+v -0.170216 0.115308 -0.170211
+v -0.200152 0.115308 -0.133734
+v -0.222396 0.115308 -0.092118
+v -0.236094 0.115308 -0.046962
+v -0.240719 0.115308 -0.000001
+v -0.236094 0.115308 0.046959
+v -0.222396 0.115308 0.092116
+v -0.200152 0.115308 0.133732
+v -0.170216 0.115308 0.170209
+v -0.133739 0.115308 0.200144
+v -0.092123 0.115308 0.222389
+v -0.046967 0.115308 0.236087
+v -0.000006 0.115308 0.240712
+v 0.046955 0.115308 0.236087
+v 0.092111 0.115308 0.222389
+v 0.133727 0.115308 0.200144
+v 0.170204 0.115308 0.170209
+v 0.200140 0.115308 0.133732
+v 0.222384 0.115308 0.092115
+v 0.236082 0.115308 0.046959
+v 0.240707 0.115308 -0.000002
+v 0.236082 0.115308 -0.046962
+v 0.222384 0.115308 -0.092119
+v 0.200140 0.115308 -0.133735
+v 0.170204 0.115308 -0.170211
+v 0.133727 0.115308 -0.200147
+v 0.092111 0.115308 -0.222391
+v 0.046955 0.115308 -0.236089
+v -0.000006 0.115308 -0.220963
+v -0.043113 0.115308 -0.216717
+v -0.084564 0.115308 -0.204143
+v -0.122765 0.115308 -0.183724
+v -0.156249 0.115308 -0.156244
+v -0.183728 0.115308 -0.122761
+v -0.204147 0.115308 -0.084560
+v -0.216721 0.115308 -0.043109
+v -0.220967 0.115308 -0.000001
+v -0.216721 0.115308 0.043106
+v -0.204147 0.115308 0.084557
+v -0.183728 0.115308 0.122758
+v -0.156249 0.115308 0.156242
+v -0.122765 0.115308 0.183721
+v -0.084564 0.115308 0.204140
+v -0.043113 0.115308 0.216714
+v -0.000006 0.115308 0.220960
+v 0.043102 0.115308 0.216714
+v 0.084552 0.115308 0.204140
+v 0.122754 0.115308 0.183721
+v 0.156237 0.115308 0.156242
+v 0.183717 0.115308 0.122758
+v 0.204136 0.115308 0.084557
+v 0.216710 0.115308 0.043106
+v 0.220955 0.115308 -0.000002
+v 0.216710 0.115308 -0.043109
+v 0.204136 0.115308 -0.084560
+v 0.183716 0.115308 -0.122761
+v 0.156237 0.115308 -0.156245
+v 0.122753 0.115308 -0.183724
+v 0.084552 0.115308 -0.204143
+v 0.043101 0.115308 -0.216717
+v -0.000006 0.123837 -0.240715
+v -0.046967 0.123837 -0.236089
+v -0.092123 0.123837 -0.222391
+v -0.133739 0.123837 -0.200147
+v -0.170216 0.123837 -0.170211
+v -0.200152 0.123837 -0.133734
+v -0.222396 0.123837 -0.092118
+v -0.236094 0.123837 -0.046962
+v -0.240719 0.123837 -0.000001
+v -0.236094 0.123837 0.046959
+v -0.222396 0.123837 0.092116
+v -0.200152 0.123837 0.133732
+v -0.170216 0.123837 0.170209
+v -0.133739 0.123837 0.200144
+v -0.092123 0.123837 0.222389
+v -0.046967 0.123837 0.236087
+v -0.000006 0.123837 0.240712
+v 0.046955 0.123837 0.236087
+v 0.092111 0.123837 0.222389
+v 0.133727 0.123837 0.200144
+v 0.170204 0.123837 0.170209
+v 0.200140 0.123837 0.133732
+v 0.222384 0.123837 0.092115
+v 0.236082 0.123837 0.046959
+v 0.240707 0.123837 -0.000002
+v 0.236082 0.123837 -0.046962
+v 0.222384 0.123837 -0.092119
+v 0.200140 0.123837 -0.133735
+v 0.170204 0.123837 -0.170211
+v 0.133727 0.123837 -0.200147
+v 0.092111 0.123837 -0.222391
+v 0.046955 0.123837 -0.236089
+v -0.000006 0.123837 -0.220963
+v -0.043113 0.123837 -0.216717
+v -0.084564 0.123837 -0.204143
+v -0.122765 0.123837 -0.183724
+v -0.156249 0.123837 -0.156244
+v -0.183728 0.123837 -0.122761
+v -0.204147 0.123837 -0.084560
+v -0.216721 0.123837 -0.043109
+v -0.220967 0.123837 -0.000001
+v -0.216721 0.123837 0.043106
+v -0.204147 0.123837 0.084557
+v -0.183728 0.123837 0.122758
+v -0.156249 0.123837 0.156242
+v -0.122765 0.123837 0.183721
+v -0.084564 0.123837 0.204140
+v -0.043113 0.123837 0.216714
+v -0.000006 0.123837 0.220960
+v 0.043102 0.123837 0.216714
+v 0.084552 0.123837 0.204140
+v 0.122754 0.123837 0.183721
+v 0.156237 0.123837 0.156242
+v 0.183717 0.123837 0.122758
+v 0.204136 0.123837 0.084557
+v 0.216710 0.123837 0.043106
+v 0.220955 0.123837 -0.000002
+v 0.216710 0.123837 -0.043109
+v 0.204136 0.123837 -0.084560
+v 0.183716 0.123837 -0.122761
+v 0.156237 0.123837 -0.156245
+v 0.122753 0.123837 -0.183724
+v 0.084552 0.123837 -0.204143
+v 0.043101 0.123837 -0.216717
+v 0.229708 0.114899 -0.008386
+v 0.229708 0.114899 0.008383
+v 0.229708 0.122821 -0.008386
+v 0.229708 0.122821 0.008383
+v -0.230430 0.114899 0.008383
+v -0.230430 0.114899 -0.008386
+v -0.230430 0.122821 0.008383
+v -0.230430 0.122821 -0.008386
+v -0.006939 0.114899 -0.231100
+v 0.006927 0.114899 -0.231100
+v -0.006939 0.122821 -0.231100
+v 0.006927 0.122821 -0.231100
+v -0.006939 0.114899 0.230920
+v 0.006927 0.114899 0.230920
+v -0.006939 0.122821 0.230920
+v 0.006927 0.122821 0.230920
+v -0.028512 1.109688 0.007851
+v 0.028328 1.109688 -0.008659
+v 0.000000 0.107496 0.000000
+v 0.000000 0.114758 0.000000
+v -0.028512 1.116798 0.007851
+v -0.000006 -0.493220 -0.023144
+v -0.004521 -0.493220 -0.022699
+v -0.008862 -0.493220 -0.021382
+v -0.012863 -0.493220 -0.019244
+v -0.016370 -0.493220 -0.016366
+v -0.019248 -0.493220 -0.012859
+v -0.021387 -0.493220 -0.008858
+v -0.022704 -0.493220 -0.004516
+v -0.023148 -0.493220 -0.000001
+v -0.022704 -0.493220 0.004514
+v -0.021387 -0.493220 0.008855
+v -0.019248 -0.493220 0.012856
+v -0.016370 -0.493220 0.016363
+v -0.012863 -0.493220 0.019241
+v -0.008862 -0.493220 0.021380
+v -0.004521 -0.493220 0.022697
+v -0.000006 -0.493220 0.023141
+v 0.004509 -0.493220 0.022697
+v 0.008850 -0.493220 0.021380
+v 0.012851 -0.493220 0.019241
+v 0.016358 -0.493220 0.016363
+v 0.019236 -0.493220 0.012856
+v 0.021375 -0.493220 0.008855
+v 0.022692 -0.493220 0.004514
+v 0.023137 -0.493220 -0.000001
+v 0.022692 -0.493220 -0.004516
+v 0.021375 -0.493220 -0.008858
+v 0.019236 -0.493220 -0.012859
+v 0.016358 -0.493220 -0.016366
+v 0.012851 -0.493220 -0.019244
+v 0.008850 -0.493220 -0.021382
+v 0.004509 -0.493220 -0.022699
+v -0.000006 0.108073 -0.023144
+v -0.004521 0.108073 -0.022699
+v -0.008862 0.108073 -0.021382
+v -0.012863 0.108073 -0.019244
+v -0.016370 0.108073 -0.016366
+v -0.019248 0.108073 -0.012859
+v -0.021387 0.108073 -0.008858
+v -0.022704 0.108073 -0.004516
+v -0.023148 0.108073 -0.000001
+v -0.022704 0.108073 0.004514
+v -0.021387 0.108073 0.008855
+v -0.019248 0.108073 0.012856
+v -0.016370 0.108073 0.016363
+v -0.012863 0.108073 0.019241
+v -0.008862 0.108073 0.021380
+v -0.004521 0.108073 0.022697
+v -0.000006 0.108073 0.023141
+v 0.004509 0.108073 0.022697
+v 0.008850 0.108073 0.021380
+v 0.012851 0.108073 0.019241
+v 0.016358 0.108073 0.016363
+v 0.019236 0.108073 0.012856
+v 0.021375 0.108073 0.008855
+v 0.022692 0.108073 0.004514
+v 0.023137 0.108073 -0.000001
+v 0.022692 0.108073 -0.004516
+v 0.021375 0.108073 -0.008858
+v 0.019236 0.108073 -0.012859
+v 0.016358 0.108073 -0.016366
+v 0.012851 0.108073 -0.019244
+v 0.008850 0.108073 -0.021382
+v 0.004509 0.108073 -0.022699
+v 0.000000 0.107496 -0.030000
+v 0.000000 0.114758 -0.030000
+v 0.011481 0.107496 -0.027716
+v 0.011481 0.114758 -0.027716
+v 0.021213 0.107496 -0.021213
+v 0.021213 0.114758 -0.021213
+v 0.027716 0.107496 -0.011481
+v 0.027716 0.114758 -0.011481
+v 0.030000 0.107496 0.000000
+v 0.030000 0.114758 0.000000
+v 0.027716 0.107496 0.011481
+v 0.027716 0.114758 0.011481
+v 0.021213 0.107496 0.021213
+v 0.021213 0.114758 0.021213
+v 0.011481 0.107496 0.027716
+v 0.011481 0.114758 0.027716
+v 0.000000 0.107496 0.030000
+v 0.000000 0.114758 0.030000
+v -0.011480 0.107496 0.027716
+v -0.011480 0.114758 0.027716
+v -0.021213 0.107496 0.021213
+v -0.021213 0.114758 0.021213
+v -0.027716 0.107496 0.011481
+v -0.027716 0.114758 0.011481
+v -0.030000 0.107496 -0.000000
+v -0.030000 0.114758 -0.000000
+v -0.027716 0.107496 -0.011481
+v -0.027716 0.114758 -0.011481
+v -0.021213 0.107496 -0.021213
+v -0.021213 0.114758 -0.021213
+v -0.011480 0.107496 -0.027716
+v -0.011480 0.114758 -0.027716
+v -0.000006 0.102072 -0.247896
+v -0.049889 0.102072 -0.243133
+v -0.097854 0.102072 -0.229026
+v -0.142060 0.102072 -0.206118
+v -0.180806 0.102072 -0.175289
+v -0.212605 0.102072 -0.137724
+v -0.236233 0.102072 -0.094867
+v -0.250783 0.102072 -0.048363
+v -0.255696 0.102072 -0.000001
+v -0.250783 0.102072 0.048361
+v -0.236233 0.102072 0.094864
+v -0.212605 0.102072 0.137722
+v -0.180806 0.102072 0.175287
+v -0.142060 0.102072 0.206116
+v -0.097854 0.102072 0.229024
+v -0.049889 0.102072 0.243130
+v -0.000006 0.102072 0.247893
+v 0.049877 0.102072 0.243130
+v 0.097843 0.102072 0.229024
+v 0.142048 0.102072 0.206116
+v 0.180795 0.102072 0.175287
+v 0.212593 0.102072 0.137721
+v 0.236221 0.102072 0.094864
+v 0.250772 0.102072 0.048360
+v 0.255685 0.102072 -0.000002
+v 0.250771 0.102072 -0.048363
+v 0.236221 0.102072 -0.094867
+v 0.212593 0.102072 -0.137725
+v 0.180794 0.102072 -0.175290
+v 0.142048 0.102072 -0.206118
+v 0.097842 0.102072 -0.229026
+v 0.049876 0.102072 -0.243133
+v -0.000006 0.493559 -0.115754
+v -0.023298 0.493559 -0.113530
+v -0.045696 0.493559 -0.106943
+v -0.066337 0.493559 -0.096246
+v -0.084429 0.493559 -0.081851
+v -0.099277 0.493559 -0.064310
+v -0.110310 0.493559 -0.044298
+v -0.117104 0.493559 -0.022584
+v -0.119399 0.493559 -0.000001
+v -0.117104 0.493559 0.022581
+v -0.110310 0.493559 0.044295
+v -0.099277 0.493559 0.064307
+v -0.084429 0.493559 0.081848
+v -0.066337 0.493559 0.096243
+v -0.045695 0.493559 0.106940
+v -0.023298 0.493559 0.113527
+v -0.000006 0.493559 0.115751
+v 0.023286 0.493559 0.113527
+v 0.045684 0.493559 0.106940
+v 0.066325 0.493559 0.096243
+v 0.084417 0.493559 0.081848
+v 0.099265 0.493559 0.064307
+v 0.110299 0.493559 0.044295
+v 0.117093 0.493559 0.022581
+v 0.119387 0.493559 -0.000001
+v 0.117093 0.493559 -0.022584
+v 0.110298 0.493559 -0.044298
+v 0.099265 0.493559 -0.064310
+v 0.084417 0.493559 -0.081851
+v 0.066325 0.493559 -0.096246
+v 0.045683 0.493559 -0.106943
+v 0.023286 0.493559 -0.113530
+v -0.000006 -0.481764 -0.000001
+v -0.000006 -0.499993 -0.000001
+v -0.220955 0.116734 0.006111
+v -0.220955 0.116734 -0.006112
+v 0.220955 0.116734 -0.006112
+v 0.220955 0.116734 0.006111
+v -0.220955 0.121145 0.006111
+v -0.220955 0.121145 -0.006112
+v 0.220955 0.121145 -0.006112
+v 0.220955 0.121145 0.006111
+v 0.006111 0.116734 0.220955
+v -0.006112 0.116734 0.220955
+v -0.006111 0.116734 -0.220955
+v 0.006112 0.116734 -0.220955
+v 0.006111 0.121145 0.220955
+v -0.006112 0.121145 0.220955
+v -0.006111 0.121145 -0.220955
+v 0.006112 0.121145 -0.220955
+v -0.000128 0.121820 -0.000001
+v -0.000012 0.370161 -0.000001
+v -0.000119 0.121820 -0.000048
+v -0.000010 0.370161 -0.000006
+v -0.000092 0.121820 -0.000088
+v -0.000053 0.121820 -0.000114
+v -0.000006 0.370161 -0.000007
+v -0.000006 0.121820 -0.000124
+v 0.000041 0.121820 -0.000114
+v -0.000002 0.370161 -0.000006
+v 0.000081 0.121820 -0.000088
+v 0.000107 0.121820 -0.000048
+v 0.000000 0.370161 -0.000001
+v 0.000116 0.121820 -0.000001
+v 0.000107 0.121820 0.000045
+v -0.000002 0.370161 0.000003
+v 0.000081 0.121820 0.000085
+v 0.000041 0.121820 0.000112
+v -0.000006 0.370161 0.000005
+v -0.000006 0.121820 0.000121
+v -0.000053 0.121820 0.000112
+v -0.000010 0.370161 0.000003
+v -0.000092 0.121820 0.000085
+v -0.000119 0.121820 0.000045
+v -0.000006 -0.292789 -0.023144
+v -0.004521 -0.292789 0.022697
+v -0.016370 -0.292789 -0.016366
+v 0.021375 -0.292789 -0.008858
+v -0.021387 -0.292789 -0.008858
+v 0.004509 -0.292789 0.022697
+v 0.016358 -0.292789 -0.016366
+v -0.023148 -0.292789 -0.000001
+v 0.012851 -0.292789 0.019241
+v 0.008850 -0.292789 -0.021382
+v -0.021387 -0.292789 0.008855
+v 0.019236 -0.292789 0.012856
+v -0.016370 -0.292789 0.016363
+v -0.004521 -0.292789 -0.022699
+v 0.022692 -0.292789 0.004514
+v 0.022692 -0.092358 0.004514
+v -0.004521 -0.092358 -0.022699
+v -0.016370 -0.092358 0.016363
+v 0.019236 -0.092358 0.012856
+v -0.021387 -0.092358 0.008855
+v 0.008850 -0.092358 -0.021382
+v 0.012851 -0.092358 0.019241
+v -0.023148 -0.092358 -0.000001
+v 0.016358 -0.092358 -0.016366
+v 0.004509 -0.092358 0.022697
+v -0.021387 -0.092358 -0.008858
+v 0.021375 -0.092358 -0.008858
+v -0.016370 -0.092358 -0.016366
+v -0.004521 -0.092358 0.022697
+v -0.000006 -0.092358 -0.023144
+v 0.023137 -0.092358 -0.000001
+v -0.008862 -0.092358 -0.021382
+v -0.012863 -0.092358 0.019241
+v 0.021375 -0.092358 0.008855
+v -0.019248 -0.092358 0.012856
+v 0.004509 -0.092358 -0.022699
+v 0.016358 -0.092358 0.016363
+v -0.022704 -0.092358 0.004514
+v 0.012851 -0.092358 -0.019244
+v 0.008850 -0.092358 0.021380
+v -0.022704 -0.092358 -0.004516
+v 0.019236 -0.092358 -0.012859
+v -0.019248 -0.092358 -0.012859
+v -0.000006 -0.092358 0.023141
+v 0.022692 -0.092358 -0.004516
+v -0.012863 -0.092358 -0.019244
+v -0.008862 -0.092358 0.021380
+v 0.023137 -0.292789 -0.000001
+v -0.008862 -0.292789 -0.021382
+v -0.012863 -0.292789 0.019241
+v 0.021375 -0.292789 0.008855
+v -0.019248 -0.292789 0.012856
+v 0.004509 -0.292789 -0.022699
+v 0.016358 -0.292789 0.016363
+v -0.022704 -0.292789 0.004514
+v 0.012851 -0.292789 -0.019244
+v 0.008850 -0.292789 0.021380
+v -0.022704 -0.292789 -0.004516
+v 0.019236 -0.292789 -0.012859
+v -0.019248 -0.292789 -0.012859
+v -0.000006 -0.292789 0.023141
+v 0.022692 -0.292789 -0.004516
+v -0.012863 -0.292789 -0.019244
+v -0.008862 -0.292789 0.021380
+vt 0.937500 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.625000
+vt 0.937500 0.625000
+vt 0.937500 0.875000
+vt 0.062500 0.875000
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.187500
+vt 0.062500 0.187500
+vt 0.062500 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.437500
+vt 0.062500 0.437500
+vt 0.062500 0.500000
+vt 0.937500 0.500000
+vt 0.937500 0.750000
+vt 0.062500 0.750000
+vt 0.062500 0.812500
+vt 0.937500 0.812500
+vt 0.937500 0.062500
+vt 0.062500 0.062500
+vt 0.062500 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.312500
+vt 0.062500 0.312500
+vt 0.062500 0.375000
+vt 0.937500 0.375000
+vt 0.062500 0.687500
+vt 0.937500 0.687500
+vt 0.062500 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 0.062500 0.000000
+vt -0.000000 0.187500
+vt -0.000000 0.250000
+vt 0.000000 0.437500
+vt 0.000000 0.500000
+vt 1.000000 0.625000
+vt 1.000000 0.562500
+vt 0.000000 0.812500
+vt 0.000000 0.875000
+vt -0.000000 0.125000
+vt -0.000000 0.062500
+vt 0.000000 0.312500
+vt 0.000000 0.375000
+vt 0.000000 -0.000000
+vt 0.000000 0.750000
+vt 0.000000 0.562500
+vt -0.000000 0.687500
+vt -0.000000 0.625000
+vt 0.000000 0.937500
+vt 0.000000 1.000000
+vt 1.000000 0.937500
+vt 1.000000 0.875000
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt 1.000000 0.125000
+vt 1.000000 0.062500
+vt 1.000000 0.812500
+vt 1.000000 0.687500
+vt 1.000000 0.187500
+vt 1.000000 0.750000
+vt 1.000000 0.375000
+vt 1.000000 -0.000000
+vt 1.000000 1.000000
+vt 0.687500 0.562500
+vt 0.750000 0.562500
+vt 0.750000 0.687500
+vt 0.687500 0.687500
+vt 0.750000 0.781250
+vt 0.687500 0.781250
+vt 0.687500 0.125000
+vt 0.750000 0.125000
+vt 0.750000 0.218750
+vt 0.687500 0.218750
+vt 0.750000 0.875000
+vt 0.687500 0.875000
+vt 0.750000 0.312500
+vt 0.687500 0.312500
+vt 0.750000 0.437500
+vt 0.687500 0.437500
+vt 0.625000 0.687500
+vt 0.625000 0.781250
+vt 0.562500 0.687500
+vt 0.562500 0.781250
+vt 0.562500 0.562500
+vt 0.625000 0.562500
+vt 0.750000 0.093750
+vt 0.687500 0.093750
+vt 0.812500 0.125000
+vt 0.812500 0.218750
+vt 0.562500 0.312500
+vt 0.625000 0.312500
+vt 0.625000 0.437500
+vt 0.562500 0.437500
+vt 0.562500 0.218750
+vt 0.625000 0.218750
+vt 0.500000 0.437500
+vt 0.500000 0.562500
+vt 0.500000 0.687500
+vt 0.500000 0.781250
+vt 0.562500 0.875000
+vt 0.500000 0.875000
+vt 0.625000 0.125000
+vt 0.625000 0.093750
+vt 0.500000 0.312500
+vt 0.500000 0.218750
+vt 0.437500 0.437500
+vt 0.437500 0.562500
+vt 0.437500 0.687500
+vt 0.437500 0.781250
+vt 0.437500 0.875000
+vt 0.562500 0.125000
+vt 0.562500 0.093750
+vt 0.437500 0.312500
+vt 0.437500 0.218750
+vt 0.375000 0.437500
+vt 0.375000 0.562500
+vt 0.375000 0.687500
+vt 0.375000 0.781250
+vt 0.375000 0.875000
+vt 0.500000 0.125000
+vt 0.500000 0.093750
+vt 0.375000 0.312500
+vt 0.375000 0.218750
+vt 0.312500 0.437500
+vt 0.312500 0.562500
+vt 0.312500 0.687500
+vt 0.312500 0.781250
+vt 0.312500 0.875000
+vt 0.437500 0.125000
+vt 0.437500 0.093750
+vt 0.312500 0.312500
+vt 0.312500 0.218750
+vt 0.250000 0.437500
+vt 0.250000 0.562500
+vt 0.250000 0.687500
+vt 0.250000 0.781250
+vt 0.250000 0.875000
+vt 0.375000 0.125000
+vt 0.375000 0.093750
+vt 0.250000 0.312500
+vt 0.250000 0.218750
+vt 0.187500 0.437500
+vt 0.187500 0.562500
+vt 0.187500 0.687500
+vt 0.187500 0.781250
+vt 0.187500 0.875000
+vt 0.312500 0.125000
+vt 0.312500 0.093750
+vt 0.187500 0.312500
+vt 0.187500 0.218750
+vt 0.125000 0.437500
+vt 0.125000 0.562500
+vt 0.125000 0.687500
+vt 0.125000 0.781250
+vt 0.125000 0.875000
+vt 0.250000 0.125000
+vt 0.250000 0.093750
+vt 0.125000 0.312500
+vt 0.125000 0.218750
+vt 0.062500 0.781250
+vt 0.187500 0.125000
+vt 0.187500 0.093750
+vt 0.062500 0.218750
+vt 0.000000 0.781250
+vt 0.125000 0.125000
+vt 0.125000 0.093750
+vt 0.000000 0.218750
+vt 1.000000 0.781250
+vt 0.937500 0.781250
+vt 0.062500 0.093750
+vt 0.937500 0.218750
+vt 1.000000 0.218750
+vt 0.875000 0.437500
+vt 0.875000 0.562500
+vt 0.875000 0.687500
+vt 0.875000 0.781250
+vt 0.875000 0.875000
+vt 0.000000 0.093750
+vt 0.875000 0.312500
+vt 0.875000 0.218750
+vt 0.812500 0.437500
+vt 0.812500 0.562500
+vt 0.812500 0.687500
+vt 0.812500 0.781250
+vt 0.812500 0.875000
+vt 1.000000 0.093750
+vt 0.937500 0.093750
+vt 0.812500 0.312500
+vt 0.875000 0.125000
+vt 0.875000 0.093750
+vt 0.812500 0.093750
+vt 0.625000 0.875000
+vt 0.687500 0.906250
+vt 0.750000 0.906250
+vt 0.812500 0.906250
+vt 0.875000 0.906250
+vt 0.937500 0.906250
+vt 1.000000 0.906250
+vt 0.000000 0.906250
+vt 0.062500 0.906250
+vt 0.125000 0.906250
+vt 0.187500 0.906250
+vt 0.250000 0.906250
+vt 0.312500 0.906250
+vt 0.375000 0.906250
+vt 0.437500 0.906250
+vt 0.500000 0.906250
+vt 0.562500 0.906250
+vt 0.625000 0.906250
+vt 0.500000 0.500000
+vt 0.500000 0.468750
+vt 0.531250 0.468750
+vt 0.531250 0.500000
+vt 0.531250 0.437500
+vt 0.500000 0.406250
+vt 0.531250 0.406250
+vt 0.500000 0.375000
+vt 0.531250 0.375000
+vt 0.500000 0.343750
+vt 0.531250 0.343750
+vt 0.531250 0.312500
+vt 0.500000 0.281250
+vt 0.531250 0.281250
+vt 0.500000 0.250000
+vt 0.531250 0.250000
+vt 0.531250 0.218750
+vt 0.500000 0.187500
+vt 0.531250 0.187500
+vt 0.500000 0.156250
+vt 0.531250 0.156250
+vt 0.531250 0.125000
+vt 0.531250 0.093750
+vt 0.500000 0.062500
+vt 0.531250 0.062500
+vt 0.500000 0.031250
+vt 0.531250 0.031250
+vt 0.500000 0.000000
+vt 0.531250 0.000000
+vt 0.500000 1.000000
+vt 0.500000 0.968750
+vt 0.531250 0.968750
+vt 0.531250 1.000000
+vt 0.500000 0.937500
+vt 0.531250 0.937500
+vt 0.531250 0.906250
+vt 0.531250 0.875000
+vt 0.500000 0.843750
+vt 0.531250 0.843750
+vt 0.500000 0.812500
+vt 0.531250 0.812500
+vt 0.531250 0.781250
+vt 0.500000 0.750000
+vt 0.531250 0.750000
+vt 0.500000 0.718750
+vt 0.531250 0.718750
+vt 0.531250 0.687500
+vt 0.500000 0.656250
+vt 0.531250 0.656250
+vt 0.500000 0.625000
+vt 0.531250 0.625000
+vt 0.500000 0.593750
+vt 0.531250 0.593750
+vt 0.531250 0.562500
+vt 0.500000 0.531250
+vt 0.531250 0.531250
+vt 1.000000 0.718750
+vt 1.000000 0.031250
+vt 1.000000 0.281250
+vt 1.000000 0.656250
+vt 1.000000 0.968750
+vt 1.000000 0.593750
+vt 0.500000 0.218750
+vt 1.000000 0.531250
+vt 1.000000 0.156250
+vt 1.000000 0.843750
+vt 1.000000 0.468750
+vt 0.500000 0.093750
+vt 1.000000 0.406250
+vt 1.000000 0.343750
+vt 0.000000 0.031250
+vt 0.000000 0.718750
+vt 0.000000 0.406250
+vt 0.000000 0.093750
+vt 0.000000 0.468750
+vt 0.000000 0.843750
+vt 0.000000 0.156250
+vt 0.000000 0.531250
+vt 0.000000 0.218750
+vt 0.000000 0.593750
+vt -0.000000 0.968750
+vt 0.000000 0.656250
+vt 0.000000 0.281250
+vt 0.000000 0.343750
+vt 0.995196 0.701227
+vt 0.750000 0.750000
+vt 0.957867 0.611108
+vt 0.926777 0.573223
+vt 0.980970 0.654329
+vt 0.019030 0.154329
+vt 0.004804 0.201227
+vt 0.250000 0.250000
+vt 0.042133 0.111107
+vt 0.073223 0.073223
+vt 0.111108 0.042133
+vt 0.154329 0.019030
+vt 0.201227 0.004804
+vt 0.250000 0.000000
+vt 0.298773 0.004804
+vt 0.345671 0.019030
+vt 0.388893 0.042133
+vt 0.426777 0.073223
+vt 0.457868 0.111107
+vt 0.480970 0.154329
+vt 0.495196 0.201227
+vt 0.495196 0.298773
+vt 0.480970 0.345671
+vt 0.457867 0.388893
+vt 0.426777 0.426777
+vt 0.388892 0.457867
+vt 0.345671 0.480970
+vt 0.298772 0.495196
+vt 0.250000 0.500000
+vt 0.201227 0.495196
+vt 0.154329 0.480970
+vt 0.111107 0.457867
+vt 0.073223 0.426776
+vt 0.042132 0.388892
+vt 0.019030 0.345670
+vt 0.004804 0.298772
+vt 0.888893 0.542133
+vt 0.845671 0.519030
+vt 0.798773 0.504804
+vt 0.750000 0.500000
+vt 0.701227 0.504804
+vt 0.654329 0.519030
+vt 0.611107 0.542133
+vt 0.573223 0.573223
+vt 0.542133 0.611107
+vt 0.519030 0.654329
+vt 0.504804 0.701228
+vt 0.504804 0.798773
+vt 0.519030 0.845671
+vt 0.542133 0.888893
+vt 0.573223 0.926777
+vt 0.611108 0.957868
+vt 0.654329 0.980970
+vt 0.701228 0.995196
+vt 0.750000 1.000000
+vt 0.798773 0.995196
+vt 0.845671 0.980970
+vt 0.888893 0.957867
+vt 0.926777 0.926777
+vt 0.957868 0.888892
+vt 0.980970 0.845671
+vt 0.995196 0.798772
+vt 0.953310 0.249012
+vt 0.953310 0.217886
+vt 0.968873 0.217886
+vt 0.968873 0.249012
+vt 0.922184 0.062253
+vt 0.906620 0.062253
+vt 0.906620 0.093380
+vt 0.922184 0.093380
+vt 0.922184 0.591404
+vt 0.906620 0.591404
+vt 0.906620 0.622531
+vt 0.922184 0.622531
+vt 0.953310 0.778163
+vt 0.953310 0.747037
+vt 0.968873 0.747037
+vt 0.968873 0.778163
+vt 0.953310 0.466898
+vt 0.953310 0.435771
+vt 0.968873 0.435771
+vt 0.968873 0.466898
+vt 0.922184 0.280139
+vt 0.906620 0.280139
+vt 0.906620 0.311265
+vt 0.922184 0.311265
+vt 0.922184 0.809290
+vt 0.906620 0.809290
+vt 0.906620 0.840417
+vt 0.922184 0.840417
+vt 0.953310 0.996049
+vt 0.953310 0.964923
+vt 0.968873 0.964923
+vt 0.968873 0.996049
+vt 0.953310 0.529151
+vt 0.953310 0.498025
+vt 0.968873 0.498025
+vt 0.968873 0.529151
+vt 0.922184 0.031127
+vt 0.906620 0.031127
+vt 0.953310 0.186759
+vt 0.968873 0.186759
+vt 0.922184 0.560278
+vt 0.906620 0.560278
+vt 0.953310 0.715910
+vt 0.968873 0.715910
+vt 0.953310 0.404645
+vt 0.968873 0.404645
+vt 0.922184 0.249012
+vt 0.906620 0.249012
+vt 0.922184 0.778163
+vt 0.906620 0.778163
+vt 0.953310 0.933796
+vt 0.968873 0.933796
+vt 0.922184 0.466898
+vt 0.906620 0.466898
+vt 0.906620 0.498025
+vt 0.922184 0.498025
+vt 0.953310 0.155633
+vt 0.968873 0.155633
+vt 0.922184 0.000000
+vt 0.906620 0.000000
+vt 0.922184 0.529151
+vt 0.906620 0.529151
+vt 0.953310 0.684784
+vt 0.968873 0.684784
+vt 0.953310 0.373518
+vt 0.968873 0.373518
+vt 0.922184 0.217886
+vt 0.906620 0.217886
+vt 0.922184 0.747037
+vt 0.906620 0.747037
+vt 0.953310 0.902670
+vt 0.968873 0.902670
+vt 0.922184 0.435771
+vt 0.906620 0.435771
+vt 0.953310 0.124506
+vt 0.968873 0.124506
+vt 0.922184 0.964923
+vt 0.906620 0.964923
+vt 0.906620 0.996049
+vt 0.922184 0.996049
+vt 0.953310 0.653657
+vt 0.968873 0.653657
+vt 0.953310 0.342392
+vt 0.968873 0.342392
+vt 0.922184 0.186759
+vt 0.906620 0.186759
+vt 0.922184 0.715910
+vt 0.906620 0.715910
+vt 0.953310 0.871543
+vt 0.968873 0.871543
+vt 0.922184 0.404645
+vt 0.906620 0.404645
+vt 0.953310 0.093380
+vt 0.968873 0.093380
+vt 0.922184 0.933796
+vt 0.906620 0.933796
+vt 0.953310 0.622531
+vt 0.968873 0.622531
+vt 0.953310 0.311265
+vt 0.968873 0.311265
+vt 0.922184 0.155633
+vt 0.906620 0.155633
+vt 0.922184 0.684784
+vt 0.906620 0.684784
+vt 0.953310 0.840417
+vt 0.968873 0.840417
+vt 0.922184 0.373518
+vt 0.906620 0.373518
+vt 0.953310 0.062253
+vt 0.968873 0.062253
+vt 0.922184 0.902670
+vt 0.906620 0.902670
+vt 0.953310 0.591404
+vt 0.968873 0.591404
+vt 0.953310 0.280139
+vt 0.968873 0.280139
+vt 0.922184 0.124506
+vt 0.906620 0.124506
+vt 0.922184 0.653657
+vt 0.906620 0.653657
+vt 0.953310 0.809290
+vt 0.968873 0.809290
+vt 0.922184 0.342392
+vt 0.906620 0.342392
+vt 0.953310 0.031127
+vt 0.968873 0.031127
+vt 0.922184 0.871543
+vt 0.906620 0.871543
+vt 0.953310 0.560278
+vt 0.968873 0.560278
+vt 0.953310 0.000000
+vt 0.968873 0.000000
+vt 0.131651 0.348071
+vt 0.193904 0.348071
+vt 0.193904 0.379197
+vt 0.131651 0.379197
+vt 0.131651 0.316944
+vt 0.193904 0.316944
+vt 0.131651 0.285818
+vt 0.193904 0.285818
+vt 0.131651 0.254691
+vt 0.193904 0.254691
+vt 0.149272 0.750988
+vt 0.195033 0.769942
+vt 0.124506 0.875494
+vt 0.099741 0.750988
+vt 0.053979 0.769942
+vt 0.018955 0.804967
+vt -0.000000 0.850728
+vt -0.000000 0.900260
+vt 0.018955 0.946021
+vt 0.053979 0.981045
+vt 0.099740 1.000000
+vt 0.149272 1.000000
+vt 0.195033 0.981045
+vt 0.230057 0.946021
+vt 0.249012 0.900260
+vt 0.249012 0.850728
+vt 0.230057 0.804967
+vt 0.099740 0.690360
+vt 0.053979 0.671404
+vt 0.124506 0.565853
+vt 0.149272 0.690360
+vt 0.195033 0.671404
+vt 0.230057 0.636380
+vt 0.249012 0.590619
+vt 0.249012 0.541088
+vt 0.230057 0.495326
+vt 0.195033 0.460302
+vt 0.149272 0.441347
+vt 0.099741 0.441347
+vt 0.053979 0.460302
+vt 0.018955 0.495326
+vt 0.000000 0.541087
+vt 0.000000 0.590619
+vt 0.018955 0.636380
+vt 0.380663 0.379197
+vt 0.380663 0.348071
+vt 0.427353 0.348071
+vt 0.427353 0.379197
+vt 0.474043 0.348071
+vt 0.474043 0.379197
+vt 0.287284 0.285818
+vt 0.287284 0.254691
+vt 0.333974 0.254691
+vt 0.333974 0.285818
+vt 0.380663 0.254691
+vt 0.380663 0.285818
+vt 0.427353 0.254691
+vt 0.427353 0.285818
+vt 0.474043 0.285818
+vt 0.474043 0.316944
+vt 0.427353 0.316944
+vt 0.380663 0.316944
+vt 0.333974 0.316944
+vt 0.287284 0.316944
+vt 0.240594 0.348071
+vt 0.240594 0.316944
+vt 0.287284 0.348071
+vt 0.333974 0.348071
+vt 0.333974 0.379197
+vt 0.287284 0.379197
+vt 0.735424 0.000000
+vt 0.735424 0.996049
+vt 0.719861 0.996049
+vt 0.719861 0.000000
+vt 0.626482 0.000000
+vt 0.626481 0.996049
+vt 0.610918 0.996049
+vt 0.610918 0.000000
+vt 0.844367 0.000000
+vt 0.844367 0.996049
+vt 0.828804 0.996049
+vt 0.828804 0.000000
+vt 0.673171 0.000000
+vt 0.673171 0.996049
+vt 0.782114 0.996049
+vt 0.782114 0.000000
+vt 1.000000 0.529151
+vt 1.000000 0.498025
+vt 1.000000 0.871543
+vt 1.000000 0.840417
+vt 1.000000 0.217886
+vt 1.000000 0.186759
+vt 1.000000 0.591404
+vt 1.000000 0.560278
+vt 1.000000 0.933796
+vt 1.000000 0.902670
+vt 1.000000 0.280139
+vt 1.000000 0.249012
+vt 1.000000 0.653657
+vt 1.000000 0.622531
+vt 1.000000 0.996049
+vt 1.000000 0.964923
+vt 1.000000 0.342392
+vt 1.000000 0.311265
+vt 1.000000 0.715910
+vt 1.000000 0.684784
+vt 1.000000 0.404645
+vt 1.000000 0.373518
+vt 1.000000 0.062253
+vt 1.000000 0.031127
+vt 1.000000 0.778163
+vt 1.000000 0.747037
+vt 1.000000 0.466898
+vt 1.000000 0.435771
+vt 1.000000 0.124506
+vt 1.000000 0.093380
+vt 1.000000 0.809290
+vt 1.000000 0.155633
+vn -0.115900 0.790200 0.601800
+vn -0.029300 -0.987400 0.155200
+vn 0.000000 -0.987500 0.157800
+vn 0.000000 0.790500 0.612400
+vn -0.430000 0.786100 -0.443900
+vn -0.110400 -0.987100 -0.116200
+vn -0.131900 -0.986900 -0.092700
+vn -0.510500 0.784400 -0.352200
+vn 0.610600 0.781900 -0.125400
+vn 0.159200 -0.986700 -0.033300
+vn 0.148600 -0.986800 -0.064800
+vn 0.572000 0.782900 -0.244600
+vn -0.334600 0.787800 0.517000
+vn -0.085400 -0.987200 0.134500
+vn -0.058000 -0.987300 0.147500
+vn -0.228600 0.789200 0.569900
+vn -0.228600 0.789200 -0.569900
+vn -0.058000 -0.987300 -0.147500
+vn -0.085400 -0.987200 -0.134500
+vn -0.334600 0.787800 -0.517000
+vn 0.610600 0.781900 0.125400
+vn 0.159200 -0.986700 0.033300
+vn 0.162900 -0.986600 0.000000
+vn 0.623800 0.781500 0.000000
+vn -0.510500 0.784400 0.352200
+vn -0.131900 -0.986900 0.092700
+vn -0.110400 -0.987100 0.116200
+vn -0.430000 0.786100 0.444000
+vn 0.000000 0.790500 -0.612400
+vn 0.000000 -0.987500 -0.157800
+vn -0.029300 -0.987400 -0.155200
+vn -0.115900 0.790200 -0.601800
+vn 0.510500 0.784400 0.352200
+vn 0.131900 -0.986900 0.092700
+vn 0.148600 -0.986800 0.064800
+vn 0.572000 0.782900 0.244600
+vn -0.610600 0.781900 0.125400
+vn -0.159200 -0.986700 0.033300
+vn -0.148600 -0.986800 0.064800
+vn -0.572000 0.782900 0.244600
+vn 0.334600 0.787800 0.517000
+vn 0.085400 -0.987200 0.134500
+vn 0.110400 -0.987100 0.116200
+vn 0.430000 0.786100 0.444000
+vn 0.228600 0.789200 -0.569900
+vn 0.058000 -0.987300 -0.147500
+vn 0.029300 -0.987400 -0.155200
+vn 0.115900 0.790200 -0.601800
+vn -0.610600 0.781900 -0.125400
+vn -0.159200 -0.986700 -0.033300
+vn -0.162900 -0.986600 0.000000
+vn -0.623800 0.781500 0.000000
+vn 0.115900 0.790200 0.601800
+vn 0.029300 -0.987400 0.155200
+vn 0.058000 -0.987300 0.147500
+vn 0.228600 0.789200 0.569900
+vn 0.430000 0.786100 -0.443900
+vn 0.110400 -0.987100 -0.116200
+vn 0.085400 -0.987200 -0.134500
+vn 0.334600 0.787800 -0.517000
+vn -0.148600 -0.986800 -0.064800
+vn -0.572000 0.782900 -0.244600
+vn 0.131900 -0.986900 -0.092700
+vn 0.510500 0.784400 -0.352200
+vn 0.153600 0.584700 -0.796500
+vn 0.000000 0.584300 -0.811500
+vn 0.000000 -0.106800 -0.994300
+vn 0.188100 -0.106800 -0.976300
+vn 0.562200 0.589600 0.579900
+vn 0.663800 0.591600 0.457500
+vn 0.818200 -0.108400 0.564500
+vn 0.691600 -0.107900 0.714100
+vn -0.787600 0.594600 0.161600
+vn -0.740200 0.593400 0.316200
+vn -0.914000 -0.108800 0.390900
+vn -0.973700 -0.109000 0.200000
+vn 0.439900 0.587600 -0.679100
+vn 0.302000 0.585900 -0.752000
+vn 0.370200 -0.107100 -0.922800
+vn 0.540100 -0.107500 -0.834700
+vn 0.302000 0.585900 0.752000
+vn 0.439900 0.587600 0.679100
+vn 0.540100 -0.107500 0.834700
+vn 0.370200 -0.107100 0.922800
+vn -0.787600 0.594600 -0.161600
+vn -0.803700 0.595000 0.000000
+vn -0.994000 -0.109100 0.000000
+vn -0.973700 -0.109000 -0.200000
+vn 0.663800 0.591600 -0.457500
+vn 0.562200 0.589600 -0.579900
+vn 0.691600 -0.107900 -0.714100
+vn 0.818200 -0.108400 -0.564500
+vn 0.000000 0.584300 0.811500
+vn 0.153600 0.584700 0.796500
+vn 0.188100 -0.106800 0.976300
+vn 0.000000 -0.106800 0.994300
+vn -0.663800 0.591600 -0.457500
+vn -0.740200 0.593400 -0.316200
+vn -0.914000 -0.108800 -0.390900
+vn -0.818200 -0.108400 -0.564500
+vn 0.787600 0.594600 -0.161600
+vn 0.740200 0.593400 -0.316200
+vn 0.914000 -0.108800 -0.390900
+vn 0.973700 -0.109000 -0.200000
+vn -0.439900 0.587600 -0.679100
+vn -0.562200 0.589600 -0.579900
+vn -0.691600 -0.107900 -0.714100
+vn -0.540100 -0.107500 -0.834700
+vn -0.302000 0.585900 0.752000
+vn -0.153600 0.584700 0.796500
+vn -0.188100 -0.106800 0.976300
+vn -0.370200 -0.107100 0.922800
+vn 0.787600 0.594600 0.161600
+vn 0.803700 0.595000 0.000000
+vn 0.994000 -0.109100 0.000000
+vn 0.973700 -0.109000 0.200000
+vn -0.153600 0.584700 -0.796500
+vn -0.302000 0.585900 -0.752000
+vn -0.370200 -0.107100 -0.922800
+vn -0.188100 -0.106800 -0.976300
+vn -0.562200 0.589600 0.579900
+vn -0.439900 0.587600 0.679100
+vn -0.540100 -0.107500 0.834700
+vn -0.691600 -0.107900 0.714100
+vn 0.740200 0.593400 0.316200
+vn 0.914000 -0.108800 0.390900
+vn -0.663800 0.591600 0.457500
+vn -0.818200 -0.108400 0.564500
+vn -0.906900 0.190600 -0.375700
+vn -0.981700 0.190600 0.000000
+vn -0.838600 0.544600 0.000000
+vn -0.774800 0.544600 -0.320900
+vn -0.571900 0.820300 0.000000
+vn -0.528400 0.820300 -0.218800
+vn -0.221200 -0.970900 -0.091600
+vn -0.239400 -0.970900 0.000000
+vn -0.571900 -0.820300 0.000000
+vn -0.528400 -0.820300 -0.218800
+vn -0.239300 0.970900 0.000000
+vn -0.221100 0.970900 -0.091600
+vn -0.838600 -0.544600 0.000000
+vn -0.774800 -0.544600 -0.320900
+vn -0.981700 -0.190600 0.000000
+vn -0.906900 -0.190600 -0.375700
+vn -0.593000 0.544600 -0.593000
+vn -0.404400 0.820300 -0.404400
+vn -0.320900 0.544600 -0.774800
+vn -0.218800 0.820300 -0.528400
+vn -0.375700 0.190600 -0.906900
+vn -0.694100 0.190600 -0.694100
+vn -0.049400 -0.998800 0.000000
+vn -0.045700 -0.998800 -0.018900
+vn -0.221200 -0.970900 0.091600
+vn -0.528400 -0.820300 0.218800
+vn -0.320900 -0.544600 -0.774800
+vn -0.593000 -0.544600 -0.593000
+vn -0.694100 -0.190600 -0.694100
+vn -0.375700 -0.190600 -0.906900
+vn -0.218800 -0.820300 -0.528400
+vn -0.404400 -0.820300 -0.404400
+vn 0.000000 -0.190600 -0.981700
+vn 0.000000 0.190600 -0.981700
+vn 0.000000 0.544600 -0.838600
+vn 0.000000 0.820300 -0.571900
+vn -0.091600 0.970900 -0.221100
+vn 0.000000 0.970900 -0.239300
+vn -0.169300 -0.970900 -0.169300
+vn -0.035000 -0.998800 -0.035000
+vn 0.000000 -0.544600 -0.838600
+vn 0.000000 -0.820300 -0.571900
+vn 0.375700 -0.190600 -0.906900
+vn 0.375700 0.190600 -0.906900
+vn 0.320900 0.544600 -0.774800
+vn 0.218800 0.820300 -0.528400
+vn 0.091600 0.970900 -0.221100
+vn -0.091600 -0.970900 -0.221200
+vn -0.018900 -0.998800 -0.045700
+vn 0.320900 -0.544600 -0.774800
+vn 0.218800 -0.820300 -0.528400
+vn 0.694100 -0.190600 -0.694100
+vn 0.694100 0.190600 -0.694100
+vn 0.593000 0.544600 -0.593000
+vn 0.404400 0.820300 -0.404400
+vn 0.169200 0.970900 -0.169200
+vn 0.000000 -0.970900 -0.239400
+vn 0.000000 -0.998800 -0.049400
+vn 0.593000 -0.544600 -0.593000
+vn 0.404400 -0.820300 -0.404400
+vn 0.906900 -0.190600 -0.375700
+vn 0.906900 0.190600 -0.375700
+vn 0.774800 0.544600 -0.320900
+vn 0.528400 0.820300 -0.218800
+vn 0.221100 0.970900 -0.091600
+vn 0.091600 -0.970900 -0.221200
+vn 0.018900 -0.998800 -0.045700
+vn 0.774800 -0.544600 -0.320900
+vn 0.528400 -0.820300 -0.218800
+vn 0.981700 -0.190600 0.000000
+vn 0.981700 0.190600 0.000000
+vn 0.838600 0.544600 0.000000
+vn 0.571900 0.820300 0.000000
+vn 0.239300 0.970900 0.000000
+vn 0.169300 -0.970900 -0.169300
+vn 0.035000 -0.998800 -0.035000
+vn 0.838600 -0.544600 0.000000
+vn 0.571900 -0.820300 0.000000
+vn 0.906900 -0.190600 0.375700
+vn 0.906900 0.190600 0.375700
+vn 0.774800 0.544600 0.320900
+vn 0.528400 0.820300 0.218800
+vn 0.221100 0.970900 0.091600
+vn 0.221200 -0.970900 -0.091600
+vn 0.045700 -0.998800 -0.018900
+vn 0.774800 -0.544600 0.320900
+vn 0.528400 -0.820300 0.218800
+vn 0.694100 -0.190600 0.694100
+vn 0.694100 0.190600 0.694100
+vn 0.593000 0.544600 0.593000
+vn 0.404400 0.820300 0.404400
+vn 0.169200 0.970900 0.169200
+vn 0.239400 -0.970900 0.000000
+vn 0.049400 -0.998800 0.000000
+vn 0.593000 -0.544600 0.593000
+vn 0.404400 -0.820300 0.404400
+vn 0.375700 -0.190600 0.906900
+vn 0.375700 0.190600 0.906900
+vn 0.320900 0.544600 0.774800
+vn 0.218800 0.820300 0.528400
+vn 0.091600 0.970900 0.221100
+vn 0.221200 -0.970900 0.091600
+vn 0.045700 -0.998800 0.018900
+vn 0.320900 -0.544600 0.774800
+vn 0.218800 -0.820300 0.528400
+vn 0.000000 -0.190600 0.981700
+vn 0.000000 0.190600 0.981700
+vn 0.000000 0.544600 0.838600
+vn 0.000000 0.820300 0.571900
+vn 0.000000 0.970900 0.239300
+vn 0.169300 -0.970900 0.169300
+vn 0.035000 -0.998800 0.035000
+vn 0.000000 -0.544600 0.838600
+vn 0.000000 -0.820300 0.571900
+vn -0.375700 -0.190600 0.906900
+vn -0.375700 0.190600 0.906900
+vn -0.320900 0.544600 0.774800
+vn -0.218800 0.820300 0.528400
+vn -0.091600 0.970900 0.221100
+vn 0.091600 -0.970900 0.221200
+vn 0.018900 -0.998800 0.045700
+vn -0.320900 -0.544600 0.774800
+vn -0.218800 -0.820300 0.528400
+vn -0.694100 -0.190600 0.694100
+vn -0.694100 0.190600 0.694100
+vn -0.593000 0.544600 0.593000
+vn -0.404400 0.820300 0.404400
+vn -0.169200 0.970900 0.169200
+vn 0.000000 -0.970900 0.239400
+vn 0.000000 -0.998800 0.049400
+vn -0.593000 -0.544600 0.593000
+vn -0.404400 -0.820300 0.404400
+vn -0.906900 -0.190600 0.375700
+vn -0.906900 0.190600 0.375700
+vn -0.774800 0.544600 0.320900
+vn -0.528400 0.820300 0.218800
+vn -0.221100 0.970900 0.091600
+vn -0.091600 -0.970900 0.221200
+vn -0.018900 -0.998800 0.045700
+vn -0.774800 -0.544600 0.320900
+vn -0.169300 -0.970900 0.169300
+vn -0.035000 -0.998800 0.035000
+vn -0.045700 -0.998800 0.018900
+vn -0.169200 0.970900 -0.169200
+vn -0.046200 0.998900 -0.007200
+vn -0.030600 0.999100 0.030600
+vn 0.007200 0.998900 0.046200
+vn 0.037800 0.998900 0.027600
+vn 0.046200 0.998900 -0.007200
+vn 0.034800 0.998800 -0.034800
+vn 0.007200 0.998900 -0.046200
+vn -0.027600 0.998900 -0.037800
+vn 0.000000 0.000000 -1.000000
+vn 0.195100 0.000000 -0.980800
+vn 0.382700 0.000000 -0.923900
+vn 0.555600 0.000000 -0.831500
+vn 0.707100 0.000000 -0.707100
+vn 0.831500 0.000000 -0.555600
+vn 0.923900 0.000000 -0.382700
+vn 0.980800 0.000000 -0.195100
+vn 1.000000 0.000000 -0.000000
+vn 0.980800 0.000000 0.195100
+vn 0.923900 0.000000 0.382700
+vn 0.831500 0.000000 0.555600
+vn 0.707100 0.000000 0.707100
+vn 0.555600 0.000000 0.831500
+vn 0.382700 0.000000 0.923900
+vn 0.195100 0.000000 0.980800
+vn -0.000000 0.000000 1.000000
+vn -0.195100 0.000000 0.980800
+vn -0.382700 0.000000 0.923900
+vn -0.555600 0.000000 0.831500
+vn -0.707100 0.000000 0.707100
+vn -0.831500 0.000000 0.555600
+vn -0.923900 0.000000 0.382700
+vn -0.980800 0.000000 0.195100
+vn -1.000000 0.000000 -0.000000
+vn -0.980800 0.000000 -0.195100
+vn -0.923900 0.000000 -0.382700
+vn -0.831500 0.000000 -0.555600
+vn -0.707100 0.000000 -0.707100
+vn -0.555600 0.000000 -0.831500
+vn -0.382700 0.000000 -0.923900
+vn -0.195100 0.000000 -0.980800
+vn -0.555600 0.000000 -0.831400
+vn -0.831400 0.000000 -0.555600
+vn 0.831400 0.000000 -0.555600
+vn 0.555600 0.000000 -0.831400
+vn 0.555600 0.000000 0.831400
+vn -0.831400 0.000000 0.555600
+vn 0.831400 0.000000 0.555600
+vn -0.555600 0.000000 0.831400
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 -0.000000
+vn -0.261600 0.729800 0.631600
+vn -0.261600 -0.729800 0.631600
+vn -0.379800 -0.729800 0.568400
+vn -0.379800 0.729800 0.568400
+vn 0.379800 0.729800 -0.568400
+vn 0.379800 -0.729800 -0.568400
+vn 0.483400 -0.729800 -0.483400
+vn 0.483400 0.729800 -0.483400
+vn -0.670500 0.729800 -0.133300
+vn -0.670500 -0.729800 -0.133300
+vn -0.631600 -0.729800 -0.261600
+vn -0.631600 0.729800 -0.261600
+vn 0.631600 0.729800 0.261600
+vn 0.631600 -0.729800 0.261600
+vn 0.568400 -0.729800 0.379800
+vn 0.568400 0.729800 0.379800
+vn -0.133300 0.729800 0.670500
+vn -0.133300 -0.729800 0.670500
+vn 0.261600 0.729800 -0.631600
+vn 0.261600 -0.729800 -0.631600
+vn -0.683600 0.729800 0.000000
+vn -0.683600 -0.729800 0.000000
+vn 0.670500 0.729800 0.133300
+vn 0.670500 -0.729800 0.133300
+vn -0.133300 0.729800 -0.670500
+vn -0.133300 -0.729800 -0.670500
+vn 0.000000 -0.729800 -0.683600
+vn 0.000000 0.729800 -0.683600
+vn 0.000000 0.729800 0.683600
+vn 0.000000 -0.729800 0.683600
+vn 0.133300 0.729800 -0.670500
+vn 0.133300 -0.729800 -0.670500
+vn -0.670500 0.729800 0.133300
+vn -0.670500 -0.729800 0.133300
+vn 0.683600 0.729800 0.000000
+vn 0.683600 -0.729800 0.000000
+vn -0.261600 0.729800 -0.631600
+vn -0.261600 -0.729800 -0.631600
+vn 0.133300 0.729800 0.670500
+vn 0.133300 -0.729800 0.670500
+vn -0.631600 0.729800 0.261600
+vn -0.631600 -0.729800 0.261600
+vn 0.670500 0.729800 -0.133400
+vn 0.670500 -0.729800 -0.133400
+vn -0.379800 0.729800 -0.568400
+vn -0.379800 -0.729800 -0.568400
+vn 0.261600 0.729800 0.631600
+vn 0.261600 -0.729800 0.631600
+vn -0.568400 0.729800 0.379800
+vn -0.568400 -0.729800 0.379800
+vn 0.631600 0.729800 -0.261600
+vn 0.631600 -0.729800 -0.261600
+vn -0.483400 0.729800 -0.483400
+vn -0.483400 -0.729800 -0.483400
+vn 0.379800 0.729800 0.568400
+vn 0.379800 -0.729800 0.568400
+vn -0.483400 0.729800 0.483400
+vn -0.483400 -0.729800 0.483400
+vn 0.568400 0.729800 -0.379800
+vn 0.568400 -0.729800 -0.379800
+vn -0.568400 0.729800 -0.379800
+vn -0.568400 -0.729800 -0.379800
+vn 0.483400 0.729800 0.483400
+vn 0.483400 -0.729800 0.483400
+vn -0.285500 -0.665700 -0.689400
+vn 0.000000 -0.665700 -0.746200
+vn -0.527600 -0.665700 -0.527600
+vn -0.689400 -0.665700 -0.285500
+vn -0.746200 -0.665700 0.000000
+vn -0.689400 -0.665700 0.285500
+vn -0.527600 -0.665700 0.527600
+vn -0.285500 -0.665700 0.689400
+vn 0.000000 -0.665700 0.746200
+vn 0.285500 -0.665700 0.689400
+vn 0.527600 -0.665700 0.527600
+vn 0.689400 -0.665700 0.285500
+vn 0.746200 -0.665700 0.000000
+vn 0.689400 -0.665700 -0.285500
+vn 0.527600 -0.665700 -0.527600
+vn 0.285500 -0.665700 -0.689400
+vn 0.527600 0.665700 -0.527600
+vn 0.285500 0.665700 -0.689400
+vn 0.689400 0.665700 -0.285500
+vn 0.746200 0.665700 0.000000
+vn 0.689400 0.665700 0.285500
+vn 0.527600 0.665700 0.527600
+vn 0.285500 0.665700 0.689400
+vn 0.000000 0.665700 0.746200
+vn -0.285500 0.665700 0.689400
+vn -0.527600 0.665700 0.527600
+vn -0.689400 0.665700 0.285500
+vn -0.746200 0.665700 0.000000
+vn -0.689400 0.665700 -0.285500
+vn -0.527600 0.665700 -0.527600
+vn -0.285500 0.665700 -0.689400
+vn 0.000000 0.665700 -0.746200
+vn -0.707100 0.707100 -0.000000
+vn -0.707100 -0.707100 -0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn 0.707100 0.707100 0.000000
+vn 0.707100 -0.707100 0.000000
+vn 0.000000 0.707100 0.707100
+vn 0.000000 -0.707100 0.707100
+g Circle.000_Circle.000_lampshade
+s 1
+f 224/1/1 256/2/2 225/3/3 193/4/4
+f 213/5/5 245/6/6 246/7/7 214/8/8
+f 202/9/9 234/10/10 235/11/11 203/12/12
+f 222/13/13 254/14/14 255/15/15 223/16/16
+f 211/17/17 243/18/18 244/19/19 212/20/20
+f 200/21/21 232/22/22 233/23/23 201/24/24
+f 220/25/25 252/26/26 253/27/27 221/28/28
+f 209/4/29 241/3/30 242/29/31 210/30/32
+f 198/8/33 230/7/34 231/31/35 199/32/36
+f 218/9/37 250/10/38 251/11/39 219/12/40
+f 196/20/41 228/19/42 229/6/43 197/5/44
+f 207/16/45 239/15/46 240/2/47 208/1/48
+f 216/21/49 248/22/50 249/23/51 217/24/52
+f 194/30/53 226/29/54 227/18/55 195/17/56
+f 205/28/57 237/27/58 238/14/59 206/13/60
+f 214/8/8 246/7/7 247/31/61 215/32/62
+f 203/12/12 235/11/11 236/26/63 204/25/64
+f 223/16/16 255/15/15 256/2/2 224/1/1
+f 212/20/20 244/19/19 245/6/6 213/5/5
+f 201/24/24 233/23/23 234/10/10 202/9/9
+f 221/28/28 253/27/27 254/14/14 222/13/13
+f 210/30/32 242/29/31 243/18/18 211/17/17
+f 199/33/36 231/34/35 232/22/22 200/21/21
+f 219/12/40 251/11/39 252/26/26 220/25/25
+f 197/5/44 229/6/43 230/7/34 198/8/33
+f 208/1/48 240/2/47 241/3/30 209/4/29
+f 217/24/52 249/23/51 250/10/38 218/9/37
+f 195/17/56 227/18/55 228/19/42 196/20/41
+f 206/13/60 238/14/59 239/15/46 207/16/45
+f 215/33/62 247/34/61 248/22/50 216/21/49
+f 193/4/4 225/3/3 226/29/54 194/30/53
+f 204/25/64 236/26/63 237/27/58 205/28/57
+f 533/1/65 502/4/66 534/3/67 565/2/68
+f 522/5/69 523/8/70 555/7/71 554/6/72
+f 511/9/73 512/12/74 544/11/75 543/10/76
+f 531/13/77 532/16/78 564/15/79 563/14/80
+f 520/17/81 521/20/82 553/19/83 552/18/84
+f 509/21/85 510/24/86 542/23/87 541/22/88
+f 529/25/89 530/28/90 562/27/91 561/26/92
+f 518/4/93 519/30/94 551/29/95 550/3/96
+f 507/8/97 508/32/98 540/31/99 539/7/100
+f 527/9/101 528/12/102 560/11/103 559/10/104
+f 505/20/105 506/5/106 538/6/107 537/19/108
+f 516/16/109 517/1/110 549/2/111 548/15/112
+f 525/21/113 526/24/114 558/23/115 557/22/116
+f 503/30/117 504/17/118 536/18/119 535/29/120
+f 514/28/121 515/13/122 547/14/123 546/27/124
+f 523/8/70 524/32/125 556/31/126 555/7/71
+f 512/12/74 513/25/127 545/26/128 544/11/75
+f 532/16/78 533/1/65 565/2/68 564/15/79
+f 521/20/82 522/5/69 554/6/72 553/19/83
+f 510/24/86 511/9/73 543/10/76 542/23/87
+f 530/28/90 531/13/77 563/14/80 562/27/91
+f 519/30/94 520/17/81 552/18/84 551/29/95
+f 508/33/98 509/21/85 541/22/88 540/34/99
+f 528/12/102 529/25/89 561/26/92 560/11/103
+f 506/5/106 507/8/97 539/7/100 538/6/107
+f 517/1/110 518/4/93 550/3/96 549/2/111
+f 526/24/114 527/9/101 559/10/104 558/23/115
+f 504/17/118 505/20/105 537/19/108 536/18/119
+f 515/13/122 516/16/109 548/15/112 547/14/123
+f 524/33/125 525/21/113 557/22/116 556/34/126
+f 502/4/66 503/30/117 535/29/120 534/3/67
+f 513/25/127 514/28/121 546/27/124 545/26/128
+f 237/35/58 236/36/63 545/11/128 546/10/124
+f 557/15/116 558/14/115 249/37/51 248/38/50
+f 199/39/36 200/40/21 509/1/85 508/4/98
+f 551/6/95 552/19/84 243/41/18 242/42/31
+f 238/43/59 547/23/123 548/22/112 239/44/46
+f 559/27/104 560/26/103 251/45/39 250/46/38
+f 564/22/79 565/34/68 256/47/2 255/44/15
+f 536/19/119 227/41/55 226/42/54 535/6/120
+f 243/41/18 552/19/84 553/18/83 244/48/19
+f 556/2/126 557/15/116 248/38/50 247/49/61
+f 538/29/107 229/50/43 228/48/42 537/18/108
+f 539/3/100 230/51/34 229/50/43 538/29/107
+f 237/35/58 546/10/124 547/23/123 238/43/59
+f 554/29/72 555/3/71 246/51/7 245/50/6
+f 540/2/99 231/49/35 230/51/34 539/3/100
+f 246/51/7 555/3/71 556/2/126 247/49/61
+f 561/11/92 562/10/91 253/35/27 252/36/26
+f 562/10/91 563/23/80 254/43/14 253/35/27
+f 563/23/80 564/22/79 255/44/15 254/43/14
+f 233/37/23 542/14/87 543/27/76 234/46/10
+f 236/36/63 235/45/11 544/26/75 545/11/128
+f 241/52/30 240/53/47 549/31/111 550/7/96
+f 235/45/11 234/46/10 543/27/76 544/26/75
+f 565/31/68 534/7/67 225/52/3 256/53/2
+f 542/14/87 233/37/23 232/38/22 541/15/88
+f 541/15/88 232/38/22 231/49/35 540/2/99
+f 244/48/19 553/18/83 554/29/72 245/50/6
+f 560/26/103 561/11/92 252/36/26 251/45/39
+f 194/54/53 195/55/56 504/5/118 503/8/117
+f 537/18/108 228/48/42 227/41/55 536/19/119
+f 240/47/47 239/44/46 548/22/112 549/34/111
+f 558/14/115 559/27/104 250/46/38 249/37/51
+f 535/6/120 226/42/54 225/52/3 534/7/67
+f 221/56/28 530/12/90 529/25/89 220/57/25
+f 550/7/96 551/6/95 242/42/31 241/52/30
+f 218/58/37 527/13/101 526/16/114 217/59/52
+f 207/60/45 208/61/48 517/21/110 516/24/109
+f 520/5/81 211/55/17 212/62/20 521/20/82
+f 523/30/70 214/63/8 215/39/62 524/4/125
+f 224/61/1 533/21/65 532/24/78 223/60/16
+f 223/60/16 532/24/78 531/9/77 222/64/13
+f 196/62/41 197/65/44 506/17/106 505/20/105
+f 219/66/40 528/28/102 527/13/101 218/58/37
+f 521/20/82 212/62/20 213/65/5 522/17/69
+f 197/65/44 198/63/33 507/30/97 506/17/106
+f 522/17/69 213/65/5 214/63/8 523/30/70
+f 198/63/33 199/39/36 508/4/98 507/30/97
+f 206/64/60 207/60/45 516/24/109 515/9/122
+f 203/66/12 204/57/64 513/25/127 512/28/74
+f 202/58/9 203/66/12 512/28/74 511/13/73
+f 195/55/56 196/62/41 505/20/105 504/5/118
+f 525/1/113 524/4/125 215/39/62 216/40/49
+f 519/8/94 210/54/32 211/55/17 520/5/81
+f 200/40/21 201/59/24 510/16/86 509/1/85
+f 517/21/110 208/61/48 209/67/29 518/33/93
+f 201/59/24 202/58/9 511/13/73 510/16/86
+f 525/1/113 216/40/49 217/59/52 526/16/114
+f 193/68/4 194/54/53 503/8/117 502/32/66
+f 220/57/25 529/25/89 528/28/102 219/66/40
+f 513/25/127 204/57/64 205/56/57 514/12/121
+f 205/56/57 206/64/60 515/9/122 514/12/121
+f 222/64/13 531/9/77 530/12/90 221/56/28
+f 193/67/4 502/33/66 533/21/65 224/61/1
+f 518/32/93 209/68/29 210/54/32 519/8/94
+g Circle.000_Circle.000_bulb
+f 12/69/129 4/70/130 3/71/131 11/72/132
+f 11/72/132 3/71/131 2/73/133 10/74/134
+f 16/75/135 8/76/136 7/77/137 15/78/138
+f 10/74/134 2/73/133 1/79/139 9/80/140
+f 15/78/138 7/77/137 6/81/141 14/82/142
+f 14/82/142 6/81/141 5/83/143 13/84/144
+f 13/84/144 5/83/143 4/70/130 12/69/129
+f 19/85/145 11/72/132 10/74/134 18/86/146
+f 27/87/147 19/85/145 18/86/146 26/88/148
+f 28/89/149 20/90/150 19/85/145 27/87/147
+f 584/91/151 8/76/136 16/75/135 586/92/152
+f 7/77/137 8/76/136 128/93/153 127/94/154
+f 30/95/155 22/96/156 21/97/157 29/98/158
+f 31/99/159 23/100/160 22/96/156 30/95/155
+f 37/101/161 29/98/158 28/89/149 36/102/162
+f 35/103/163 27/87/147 26/88/148 34/104/164
+f 36/102/162 28/89/149 27/87/147 35/103/163
+f 34/104/164 26/88/148 25/105/165 33/106/166
+f 586/92/152 16/75/135 24/107/167 588/108/168
+f 38/109/169 30/95/155 29/98/158 37/101/161
+f 39/110/170 31/99/159 30/95/155 38/109/169
+f 45/111/171 37/101/161 36/102/162 44/112/172
+f 43/113/173 35/103/163 34/104/164 42/114/174
+f 44/112/172 36/102/162 35/103/163 43/113/173
+f 42/114/174 34/104/164 33/106/166 41/115/175
+f 588/108/168 24/107/167 32/116/176 589/117/177
+f 46/118/178 38/109/169 37/101/161 45/111/171
+f 47/119/179 39/110/170 38/109/169 46/118/178
+f 53/120/180 45/111/171 44/112/172 52/121/181
+f 51/122/182 43/113/173 42/114/174 50/123/183
+f 52/121/181 44/112/172 43/113/173 51/122/182
+f 50/123/183 42/114/174 41/115/175 49/124/184
+f 589/117/177 32/116/176 40/125/185 591/126/186
+f 54/127/187 46/118/178 45/111/171 53/120/180
+f 55/128/188 47/119/179 46/118/178 54/127/187
+f 61/129/189 53/120/180 52/121/181 60/130/190
+f 59/131/191 51/122/182 50/123/183 58/132/192
+f 60/130/190 52/121/181 51/122/182 59/131/191
+f 58/132/192 50/123/183 49/124/184 57/133/193
+f 591/126/186 40/125/185 48/134/194 592/135/195
+f 62/136/196 54/127/187 53/120/180 61/129/189
+f 63/137/197 55/128/188 54/127/187 62/136/196
+f 69/138/198 61/129/189 60/130/190 68/139/199
+f 67/140/200 59/131/191 58/132/192 66/141/201
+f 68/139/199 60/130/190 59/131/191 67/140/200
+f 66/141/201 58/132/192 57/133/193 65/142/202
+f 592/135/195 48/134/194 56/143/203 594/144/204
+f 70/145/205 62/136/196 61/129/189 69/138/198
+f 71/146/206 63/137/197 62/136/196 70/145/205
+f 77/147/207 69/138/198 68/139/199 76/148/208
+f 75/149/209 67/140/200 66/141/201 74/150/210
+f 76/148/208 68/139/199 67/140/200 75/149/209
+f 74/150/210 66/141/201 65/142/202 73/151/211
+f 594/144/204 56/143/203 64/152/212 595/153/213
+f 78/154/214 70/145/205 69/138/198 77/147/207
+f 79/155/215 71/146/206 70/145/205 78/154/214
+f 85/156/216 77/147/207 76/148/208 84/157/217
+f 83/158/218 75/149/209 74/150/210 82/159/219
+f 84/157/217 76/148/208 75/149/209 83/158/218
+f 82/159/219 74/150/210 73/151/211 81/160/220
+f 595/153/213 64/152/212 72/161/221 597/162/222
+f 86/163/223 78/154/214 77/147/207 85/156/216
+f 87/164/224 79/155/215 78/154/214 86/163/223
+f 93/14/225 85/156/216 84/157/217 92/2/226
+f 91/29/227 83/158/218 82/159/219 90/165/228
+f 92/2/226 84/157/217 83/158/218 91/29/227
+f 90/165/228 82/159/219 81/160/220 89/6/229
+f 597/162/222 72/161/221 80/166/230 598/167/231
+f 94/26/232 86/163/223 85/156/216 93/14/225
+f 95/168/233 87/164/224 86/163/223 94/26/232
+f 101/37/234 93/14/225 92/2/226 100/49/235
+f 99/50/236 91/29/227 90/165/228 98/169/237
+f 100/49/235 92/2/226 91/29/227 99/50/236
+f 98/169/237 90/165/228 89/6/229 97/42/238
+f 598/167/231 80/166/230 88/170/239 600/171/240
+f 102/45/241 94/26/232 93/14/225 101/37/234
+f 103/172/242 95/168/233 94/26/232 102/45/241
+f 109/13/243 101/58/234 100/40/235 108/1/244
+f 107/30/245 99/63/236 98/173/237 106/174/246
+f 108/1/244 100/40/235 99/63/236 107/30/245
+f 106/174/246 98/173/237 97/55/238 105/5/247
+f 600/171/240 88/170/239 96/23/248 601/175/249
+f 110/25/250 102/57/241 101/58/234 109/13/243
+f 111/176/251 103/177/242 102/57/241 110/25/250
+f 117/178/252 109/13/243 108/1/244 116/179/253
+f 115/180/254 107/30/245 106/174/246 114/181/255
+f 116/179/253 108/1/244 107/30/245 115/180/254
+f 114/181/255 106/174/246 105/5/247 113/182/256
+f 601/175/249 96/23/248 104/43/257 603/183/258
+f 118/184/259 110/25/250 109/13/243 117/178/252
+f 119/185/260 111/176/251 110/25/250 118/184/259
+f 125/186/261 117/178/252 116/179/253 124/187/262
+f 123/188/263 115/180/254 114/181/255 122/189/264
+f 124/187/262 116/179/253 115/180/254 123/188/263
+f 122/189/264 114/181/255 113/182/256 121/190/265
+f 603/191/258 104/60/257 112/24/266 604/192/267
+f 126/193/268 118/184/259 117/178/252 125/186/261
+f 127/94/154 119/185/260 118/184/259 126/193/268
+f 604/192/267 112/24/266 120/194/269 606/195/270
+f 607/196/271 128/93/153 8/76/136 584/91/151
+f 606/195/270 120/194/269 128/93/153 607/196/271
+f 6/81/141 7/77/137 127/94/154 126/193/268
+f 32/116/176 24/107/167 23/100/160 31/99/159
+f 40/125/185 32/116/176 31/99/159 39/110/170
+f 48/134/194 40/125/185 39/110/170 47/119/179
+f 56/143/203 48/134/194 47/119/179 55/128/188
+f 64/152/212 56/143/203 55/128/188 63/137/197
+f 72/161/221 64/152/212 63/137/197 71/146/206
+f 80/166/230 72/161/221 71/146/206 79/155/215
+f 88/170/239 80/166/230 79/155/215 87/164/224
+f 96/23/248 88/170/239 87/164/224 95/168/233
+f 104/43/257 96/23/248 95/168/233 103/172/242
+f 112/24/266 104/60/257 103/177/242 111/176/251
+f 120/194/269 112/24/266 111/176/251 119/185/260
+f 128/93/153 120/194/269 119/185/260 127/94/154
+f 3/71/131 4/70/130 124/187/262 123/188/263
+f 21/97/157 13/84/144 12/69/129 20/90/150
+f 4/70/130 5/83/143 125/186/261 124/187/262
+f 20/90/150 12/69/129 11/72/132 19/85/145
+f 29/98/158 21/97/157 20/90/150 28/89/149
+f 26/88/148 18/86/146 17/197/272 25/105/165
+f 24/107/167 16/75/135 15/78/138 23/100/160
+f 23/100/160 15/78/138 14/82/142 22/96/156
+f 22/96/156 14/82/142 13/84/144 21/97/157
+f 18/86/146 10/74/134 9/80/140 17/197/272
+f 2/73/133 3/71/131 123/188/263 122/189/264
+f 1/79/139 2/73/133 122/189/264 121/190/265
+f 5/83/143 6/81/141 126/193/268 125/186/261
+f 585/198/273 9/80/140 1/79/139
+f 585/199/273 1/79/139 121/190/265 605/200/274
+f 605/200/274 121/190/265 113/182/256
+f 605/201/274 113/182/256 105/5/247
+f 605/202/274 105/5/247 97/55/238 602/203/275
+f 602/204/275 97/42/238 89/6/229
+f 602/205/275 89/6/229 81/160/220 599/206/276
+f 599/206/276 81/160/220 73/151/211
+f 599/207/276 73/151/211 65/142/202 596/208/277
+f 596/208/277 65/142/202 57/133/193
+f 596/209/277 57/133/193 49/124/184 593/210/278
+f 593/210/278 49/124/184 41/115/175 590/211/279
+f 590/211/279 41/115/175 33/106/166
+f 590/212/279 33/106/166 25/105/165 587/213/280
+f 587/213/280 25/105/165 17/197/272
+f 587/214/280 17/197/272 9/80/140 585/198/273
+g Circle.000_Circle.000_base-stand
+f 129/215/281 131/216/282 132/217/282 130/218/281
+f 131/216/282 133/101/283 134/219/283 132/217/282
+f 133/101/283 135/220/284 136/221/284 134/219/283
+f 135/220/284 137/222/285 138/223/285 136/221/284
+f 137/222/285 139/224/286 140/225/286 138/223/285
+f 139/224/286 141/109/287 142/226/287 140/225/286
+f 141/109/287 143/227/288 144/228/288 142/226/287
+f 143/227/288 145/229/289 146/230/289 144/228/288
+f 145/229/289 147/110/290 148/231/290 146/230/289
+f 147/110/290 149/232/291 150/233/291 148/231/290
+f 149/232/291 151/234/292 152/235/292 150/233/291
+f 151/234/292 153/125/293 154/236/293 152/235/292
+f 153/125/293 155/126/294 156/237/294 154/236/293
+f 155/126/294 157/238/295 158/239/295 156/237/294
+f 157/238/295 159/240/296 160/241/296 158/239/295
+f 159/240/296 161/242/297 162/243/297 160/241/296
+f 161/244/297 163/245/298 164/246/298 162/247/297
+f 163/245/298 165/248/299 166/249/299 164/246/298
+f 165/248/299 167/212/300 168/250/300 166/249/299
+f 167/212/300 169/106/301 170/251/301 168/250/300
+f 169/106/301 171/252/302 172/253/302 170/251/301
+f 171/252/302 173/254/303 174/255/303 172/253/302
+f 173/254/303 175/104/304 176/256/304 174/255/303
+f 175/104/304 177/257/305 178/258/305 176/256/304
+f 177/257/305 179/259/306 180/260/306 178/258/305
+f 179/259/306 181/103/307 182/261/307 180/260/306
+f 181/103/307 183/262/308 184/263/308 182/261/307
+f 183/262/308 185/264/309 186/265/309 184/263/308
+f 185/264/309 187/266/310 188/267/310 186/265/309
+f 187/266/310 189/102/311 190/268/311 188/267/310
+f 191/269/312 129/215/281 130/218/281 192/270/312
+f 189/102/311 191/269/312 192/270/312 190/268/311
+f 639/259/311 653/103/313 441/63/310 440/271/311
+f 638/240/289 652/242/288 463/67/288 462/272/289
+f 636/109/298 651/227/297 454/273/297 453/57/298
+f 635/262/309 650/264/314 443/39/308 442/274/309
+f 634/245/287 649/248/315 465/54/286 464/275/287
+f 633/266/307 648/102/306 445/40/306 444/276/307
+f 632/229/296 647/277/295 456/177/295 455/56/296
+f 631/212/285 646/106/316 467/55/284 466/203/285
+f 630/269/305 645/215/304 447/59/304 446/278/305
+f 629/232/317 644/234/293 458/279/293 457/64/294
+f 628/252/283 643/254/282 469/62/282 468/280/283
+f 627/216/303 642/101/318 449/58/302 448/281/303
+f 626/125/319 641/282/291 460/191/291 459/60/292
+f 625/220/301 640/222/320 451/66/300 450/283/301
+f 624/257/312 639/259/311 440/271/311 439/65/312
+f 623/238/290 638/240/289 462/272/289 461/61/290
+f 622/238/290 655/240/289 638/272/289 623/61/290
+f 621/257/312 656/259/311 639/271/311 624/65/312
+f 620/220/301 657/222/320 640/66/320 625/283/301
+f 619/125/319 658/282/291 641/191/291 626/60/319
+f 618/216/303 659/101/318 642/58/318 627/281/303
+f 617/252/283 660/254/282 643/62/282 628/280/283
+f 616/232/317 661/234/293 644/279/293 629/64/317
+f 615/269/305 662/215/304 645/59/304 630/278/305
+f 614/212/285 663/106/316 646/55/316 631/203/285
+f 613/229/296 664/277/295 647/177/295 632/56/296
+f 612/266/307 665/102/306 648/40/306 633/276/307
+f 611/245/287 666/248/315 649/54/315 634/275/287
+f 610/262/309 667/264/314 650/39/314 635/274/309
+f 609/109/298 668/227/297 651/273/297 636/57/298
+f 655/240/289 669/242/288 652/67/288 638/272/289
+f 656/259/311 670/103/313 653/63/313 639/271/311
+f 657/222/320 671/224/299 654/284/299 640/66/320
+f 658/282/291 622/238/290 623/61/290 641/191/291
+f 608/104/281 621/257/312 624/65/312 637/173/281
+f 659/101/318 620/220/301 625/283/301 642/58/318
+f 660/254/282 608/104/281 637/173/281 643/62/282
+f 661/234/293 619/125/319 626/60/319 644/279/293
+f 662/215/304 618/216/303 627/281/303 645/59/304
+f 663/106/316 617/252/283 628/280/283 646/55/316
+f 664/277/295 616/232/317 629/64/317 647/177/295
+f 665/102/306 615/269/305 630/278/305 648/40/306
+f 666/248/315 614/212/285 631/203/285 649/54/315
+f 668/227/297 613/229/296 632/56/296 651/273/297
+f 667/264/314 612/266/307 633/276/307 650/39/314
+f 669/244/288 611/245/287 634/275/287 652/68/288
+f 670/103/313 610/262/309 635/274/309 653/63/313
+f 671/224/299 609/109/298 636/57/298 654/284/299
+f 429/44/290 430/285/289 655/240/289 622/238/290
+f 407/48/312 408/286/311 656/259/311 621/257/312
+f 418/287/301 419/46/300 657/222/320 620/220/301
+f 427/43/292 428/288/291 658/282/291 619/125/319
+f 416/289/303 417/37/302 659/101/318 618/216/303
+f 436/290/283 437/41/282 660/254/282 617/252/283
+f 425/35/294 426/291/293 661/234/293 616/232/317
+f 414/292/305 415/38/304 662/215/304 615/269/305
+f 434/204/285 435/42/284 663/106/316 614/212/285
+f 423/36/296 424/293/295 664/277/295 613/229/296
+f 412/294/307 413/49/306 665/102/306 612/266/307
+f 432/295/287 433/52/286 666/248/315 611/245/287
+f 410/296/309 411/51/308 667/264/314 610/262/309
+f 421/45/298 422/297/297 668/227/297 609/109/298
+f 430/285/289 431/47/288 669/242/288 655/240/289
+f 408/286/311 409/50/310 670/103/313 656/259/311
+f 419/46/300 420/298/299 671/224/299 657/222/320
+f 428/288/291 429/44/290 622/238/290 658/282/291
+f 406/169/281 407/48/312 621/257/312 608/104/281
+f 417/37/302 418/287/301 620/220/301 659/101/318
+f 437/41/282 406/169/281 608/104/281 660/254/282
+f 426/291/293 427/43/292 619/125/319 661/234/293
+f 415/38/304 416/289/303 618/216/303 662/215/304
+f 435/42/284 436/290/283 617/252/283 663/106/316
+f 424/293/295 425/35/294 616/232/317 664/277/295
+f 413/49/306 414/292/305 615/269/305 665/102/306
+f 433/52/286 434/204/285 614/212/285 666/248/315
+f 422/297/297 423/36/296 613/229/296 668/227/297
+f 411/51/308 412/294/307 612/266/307 667/264/314
+f 431/53/288 432/295/287 611/245/287 669/244/288
+f 409/50/310 410/296/309 610/262/309 670/103/313
+f 420/298/299 421/45/298 609/109/298 671/224/299
+f 640/222/320 654/224/299 452/284/299 451/66/300
+f 641/282/291 623/238/290 461/61/290 460/191/291
+f 637/104/281 624/257/312 439/65/312 438/173/281
+f 642/101/318 625/220/301 450/283/301 449/58/302
+f 643/254/282 637/104/281 438/173/281 469/62/282
+f 644/234/293 626/125/319 459/60/292 458/279/293
+f 645/215/304 627/216/303 448/281/303 447/59/304
+f 646/106/316 628/252/283 468/280/283 467/55/284
+f 647/277/295 629/232/317 457/64/294 456/177/295
+f 648/102/306 630/269/305 446/278/305 445/40/306
+f 649/248/315 631/212/285 466/203/285 465/54/286
+f 651/227/297 632/229/296 455/56/296 454/273/297
+f 650/264/314 633/266/307 444/276/307 443/39/308
+f 652/244/288 634/245/287 464/275/287 463/68/288
+f 653/103/313 635/262/309 442/274/309 441/63/310
+f 654/224/299 636/109/298 453/57/298 452/284/299
+f 129/65/321 131/299/321 566/300/321
+f 135/301/321 137/302/321 566/300/321
+f 133/303/321 135/301/321 566/300/321
+f 131/299/321 133/303/321 566/300/321
+f 134/304/322 132/305/322 567/306/322
+f 136/307/322 134/304/322 567/306/322
+f 138/308/322 136/307/322 567/306/322
+f 140/309/322 138/308/322 567/306/322
+f 142/310/322 140/309/322 567/306/322
+f 144/311/322 142/310/322 567/306/322
+f 146/312/322 144/311/322 567/306/322
+f 148/313/322 146/312/322 567/306/322
+f 150/314/322 148/313/322 567/306/322
+f 152/315/322 150/314/322 567/306/322
+f 154/316/322 152/315/322 567/306/322
+f 156/317/322 154/316/322 567/306/322
+f 158/318/322 156/317/322 567/306/322
+f 160/319/322 158/318/322 567/306/322
+f 162/229/322 160/319/322 567/306/322
+f 164/320/322 162/229/322 567/306/322
+f 166/321/322 164/320/322 567/306/322
+f 168/322/322 166/321/322 567/306/322
+f 170/323/322 168/322/322 567/306/322
+f 172/324/322 170/323/322 567/306/322
+f 174/325/322 172/324/322 567/306/322
+f 176/326/322 174/325/322 567/306/322
+f 178/327/322 176/326/322 567/306/322
+f 180/328/322 178/327/322 567/306/322
+f 182/329/322 180/328/322 567/306/322
+f 184/330/322 182/329/322 567/306/322
+f 186/331/322 184/330/322 567/306/322
+f 188/332/322 186/331/322 567/306/322
+f 190/333/322 188/332/322 567/306/322
+f 192/334/322 190/333/322 567/306/322
+f 130/36/322 192/334/322 567/306/322
+f 132/305/322 130/36/322 567/306/322
+f 137/302/321 139/335/321 566/300/321
+f 139/335/321 141/336/321 566/300/321
+f 141/336/321 143/337/321 566/300/321
+f 143/337/321 145/338/321 566/300/321
+f 145/338/321 147/339/321 566/300/321
+f 147/339/321 149/340/321 566/300/321
+f 149/340/321 151/341/321 566/300/321
+f 151/341/321 153/342/321 566/300/321
+f 153/342/321 155/343/321 566/300/321
+f 155/343/321 157/344/321 566/300/321
+f 157/344/321 159/345/321 566/300/321
+f 159/345/321 161/257/321 566/300/321
+f 161/257/321 163/346/321 566/300/321
+f 163/346/321 165/347/321 566/300/321
+f 165/347/321 167/348/321 566/300/321
+f 167/348/321 169/349/321 566/300/321
+f 169/349/321 171/350/321 566/300/321
+f 171/350/321 173/351/321 566/300/321
+f 173/351/321 175/352/321 566/300/321
+f 175/352/321 177/353/321 566/300/321
+f 177/353/321 179/354/321 566/300/321
+f 179/354/321 181/355/321 566/300/321
+f 181/355/321 183/356/321 566/300/321
+f 183/356/321 185/357/321 566/300/321
+f 185/357/321 187/358/321 566/300/321
+f 187/358/321 189/359/321 566/300/321
+f 189/359/321 191/360/321 566/300/321
+f 191/360/321 129/65/321 566/300/321
+g Circle.000_Circle.000_metal-supports
+f 265/361/305 266/362/304 330/363/304 329/364/305
+f 303/365/323 367/366/324 366/367/325 302/368/326
+f 318/369/327 382/370/328 381/371/329 317/372/330
+f 280/373/290 281/374/289 345/375/289 344/376/290
+f 258/377/312 259/378/311 323/379/311 322/380/312
+f 296/381/331 360/382/332 359/383/333 295/384/334
+f 311/385/335 375/386/336 374/387/337 310/388/338
+f 273/389/297 274/390/296 338/391/296 337/392/297
+f 288/393/282 257/394/281 321/395/281 352/396/282
+f 304/397/339 368/398/340 367/366/324 303/365/323
+f 266/362/304 267/399/303 331/400/303 330/363/304
+f 319/401/341 383/402/342 382/370/328 318/369/327
+f 281/374/289 282/403/288 346/404/288 345/375/289
+f 259/378/311 260/405/310 324/406/310 323/379/311
+f 297/407/343 361/408/344 360/382/332 296/381/331
+f 312/409/345 376/410/346 375/386/336 311/385/335
+f 274/390/296 275/411/295 339/412/295 338/391/296
+f 290/413/347 354/414/348 353/415/349 289/416/350
+f 267/399/303 268/417/302 332/418/302 331/400/303
+f 305/419/351 369/420/352 368/398/340 304/397/339
+f 320/421/353 384/422/354 383/402/342 319/401/341
+f 282/403/288 283/423/287 347/424/287 346/404/288
+f 260/405/310 261/425/309 325/426/309 324/406/310
+f 298/427/355 362/428/356 361/408/344 297/407/343
+f 313/429/357 377/430/358 376/410/346 312/409/345
+f 275/411/295 276/431/294 340/432/294 339/412/295
+f 291/433/359 355/434/360 354/414/348 290/413/347
+f 268/417/302 269/435/301 333/436/301 332/418/302
+f 306/437/361 370/438/362 369/439/352 305/440/351
+f 289/416/350 353/415/349 384/422/354 320/421/353
+f 283/423/287 284/441/286 348/442/286 347/424/287
+f 261/425/309 262/443/308 326/444/308 325/426/309
+f 299/445/363 363/446/364 362/428/356 298/427/355
+f 314/447/365 378/448/366 377/430/358 313/429/357
+f 276/431/294 277/449/293 341/450/293 340/432/294
+f 292/451/367 356/452/368 355/434/360 291/433/359
+f 269/435/301 270/453/300 334/454/300 333/436/301
+f 307/455/369 371/456/370 370/438/362 306/437/361
+f 284/441/286 285/457/285 349/458/285 348/442/286
+f 262/443/308 263/459/307 327/460/307 326/444/308
+f 300/461/371 364/462/372 363/446/364 299/445/363
+f 315/463/373 379/464/374 378/448/366 314/447/365
+f 277/449/293 278/465/292 342/466/292 341/450/293
+f 293/467/375 357/468/376 356/452/368 292/451/367
+f 270/453/300 271/469/299 335/470/299 334/454/300
+f 308/471/377 372/472/378 371/456/370 307/455/369
+f 285/457/285 286/473/284 350/474/284 349/458/285
+f 263/459/307 264/475/306 328/476/306 327/460/307
+f 301/477/379 365/478/380 364/462/372 300/461/371
+f 316/479/381 380/480/382 379/464/374 315/463/373
+f 278/465/292 279/481/291 343/482/291 342/466/292
+f 294/483/383 358/484/384 357/468/376 293/467/375
+f 271/469/299 272/485/298 336/486/298 335/470/299
+f 309/487/385 373/488/386 372/472/378 308/471/377
+f 286/473/284 287/489/283 351/490/283 350/474/284
+f 264/475/306 265/361/305 329/364/305 328/476/306
+f 302/368/326 366/367/325 365/478/380 301/477/379
+f 317/372/330 381/371/329 380/480/382 316/479/381
+f 279/481/291 280/373/290 344/376/290 343/482/291
+f 257/394/281 258/377/312 322/380/312 321/395/281
+f 295/384/334 359/383/333 358/484/384 294/483/383
+f 310/388/338 374/387/337 373/488/386 309/487/385
+f 272/485/298 273/491/297 337/492/297 336/486/298
+f 287/489/283 288/393/282 352/396/282 351/490/283
+f 387/493/289 388/494/289 386/495/289 385/496/289
+f 391/497/305 392/498/305 390/494/305 389/493/305
+f 395/498/281 396/497/281 394/499/281 393/500/281
+f 400/500/297 399/499/297 397/501/297 398/502/297
+f 500/503/387 470/504/388 403/505/321
+f 498/506/389 500/503/387 403/505/321
+f 496/507/390 498/506/389 403/505/321
+f 494/508/391 496/507/390 403/505/321
+f 492/509/392 494/508/391 403/505/321
+f 490/510/393 492/509/392 403/505/321
+f 488/511/394 490/510/393 403/505/321
+f 486/512/395 488/511/394 403/505/321
+f 484/513/396 486/512/395 403/505/321
+f 482/514/397 484/513/396 403/505/321
+f 480/515/398 482/514/397 403/505/321
+f 478/516/399 480/515/398 403/505/321
+f 476/517/400 478/516/399 403/505/321
+f 474/518/401 476/517/400 403/505/321
+f 472/519/402 474/518/401 403/505/321
+f 475/520/403 473/521/404 404/522/322
+f 477/523/405 475/520/403 404/522/322
+f 479/524/406 477/523/405 404/522/322
+f 481/525/407 479/524/406 404/522/322
+f 483/526/408 481/525/407 404/522/322
+f 485/527/409 483/526/408 404/522/322
+f 487/528/410 485/527/409 404/522/322
+f 489/529/411 487/528/410 404/522/322
+f 491/530/412 489/529/411 404/522/322
+f 493/531/413 491/530/412 404/522/322
+f 495/532/414 493/531/413 404/522/322
+f 497/533/415 495/532/414 404/522/322
+f 499/534/416 497/533/415 404/522/322
+f 501/535/417 499/534/416 404/522/322
+f 471/536/418 501/535/417 404/522/322
+f 473/521/404 471/536/418 404/522/322
+f 470/537/388 471/538/418 473/539/404 472/540/402
+f 472/540/402 473/539/404 475/541/403 474/542/401
+f 474/543/401 475/544/403 477/545/405 476/546/400
+f 476/546/400 477/545/405 479/547/406 478/548/399
+f 478/548/399 479/547/406 481/549/407 480/550/398
+f 480/551/398 481/552/407 483/553/408 482/550/397
+f 482/550/397 483/553/408 485/554/409 484/548/396
+f 484/548/396 485/554/409 487/555/410 486/546/395
+f 486/546/395 487/555/410 489/556/411 488/543/394
+f 488/557/394 489/558/411 491/556/412 490/559/393
+f 490/559/393 491/556/412 493/555/413 492/560/392
+f 492/560/392 493/555/413 495/554/414 494/538/391
+f 494/538/391 495/554/414 497/553/415 496/539/390
+f 496/539/390 497/553/415 499/552/416 498/541/389
+f 470/504/388 472/519/402 403/505/321
+f 500/561/387 501/560/417 471/538/418 470/537/388
+f 498/562/389 499/559/416 501/560/417 500/561/387
+f 581/563/419 582/564/419 578/565/420 577/566/420
+f 573/567/421 574/568/421 570/569/422 569/570/422
+f 583/571/423 580/572/423 576/573/424 579/574/424
+f 575/570/425 572/569/425 568/569/426 571/570/426
+f 568/567/426 569/575/422 570/576/422 571/568/426
+f 575/565/425 574/576/421 573/575/421 572/566/425
+f 576/573/424 577/577/420 578/578/420 579/574/424
+f 583/577/423 582/564/419 581/563/419 580/578/423
+f 288/393/322 257/394/322 289/416/350 320/421/353
+f 277/449/322 278/465/322 310/388/338 309/487/385
+f 266/362/322 267/399/322 299/445/363 298/427/355
+f 286/473/322 287/489/322 319/401/341 318/369/327
+f 275/411/322 276/431/322 308/471/377 307/455/369
+f 264/475/322 265/361/322 297/407/343 296/381/331
+f 284/441/322 285/457/322 317/372/330 316/479/381
+f 273/389/322 274/390/322 306/437/361 305/440/351
+f 262/443/322 263/459/322 295/384/334 294/483/383
+f 282/403/322 283/423/322 315/463/373 314/447/365
+f 260/405/322 261/425/322 293/467/375 292/451/367
+f 271/469/322 272/485/322 304/397/339 303/365/323
+f 280/373/322 281/374/322 313/429/357 312/409/345
+f 258/377/322 259/378/322 291/433/359 290/413/347
+f 269/435/322 270/453/322 302/368/326 301/477/379
+f 278/465/322 279/481/322 311/385/335 310/388/338
+f 267/399/322 268/417/322 300/461/371 299/445/363
+f 287/489/322 288/393/322 320/421/353 319/401/341
+f 276/431/322 277/449/322 309/487/385 308/471/377
+f 265/361/322 266/362/322 298/427/355 297/407/343
+f 285/457/322 286/473/322 318/369/327 317/372/330
+f 274/390/322 275/411/322 307/455/369 306/437/361
+f 263/459/322 264/475/322 296/381/331 295/384/334
+f 283/423/322 284/441/322 316/479/381 315/463/373
+f 261/425/322 262/443/322 294/483/383 293/467/375
+f 272/485/322 273/491/322 305/419/351 304/397/339
+f 281/374/322 282/403/322 314/447/365 313/429/357
+f 259/378/322 260/405/322 292/451/367 291/433/359
+f 270/453/322 271/469/322 303/365/323 302/368/326
+f 279/481/322 280/373/322 312/409/345 311/385/335
+f 257/394/322 258/377/322 290/413/347 289/416/350
+f 268/417/322 269/435/322 301/477/379 300/461/371
+f 352/396/321 384/579/354 353/580/349 321/395/321
+f 341/450/321 373/581/386 374/582/337 342/466/321
+f 330/363/321 362/583/356 363/584/364 331/400/321
+f 350/474/321 382/585/328 383/586/342 351/490/321
+f 339/412/321 371/587/370 372/588/378 340/432/321
+f 328/476/321 360/589/332 361/590/344 329/364/321
+f 348/442/321 380/591/382 381/592/329 349/458/321
+f 337/392/321 369/593/352 370/594/362 338/391/321
+f 326/444/321 358/595/384 359/596/333 327/460/321
+f 346/404/321 378/597/366 379/598/374 347/424/321
+f 324/406/321 356/599/368 357/600/376 325/426/321
+f 335/470/321 367/601/324 368/602/340 336/486/321
+f 344/376/321 376/603/346 377/604/358 345/375/321
+f 322/380/321 354/605/348 355/606/360 323/379/321
+f 333/436/321 365/607/380 366/608/325 334/454/321
+f 342/466/321 374/582/337 375/609/336 343/482/321
+f 331/400/321 363/584/364 364/610/372 332/418/321
+f 351/490/321 383/586/342 384/579/354 352/396/321
+f 340/432/321 372/588/378 373/581/386 341/450/321
+f 329/364/321 361/590/344 362/583/356 330/363/321
+f 349/458/321 381/592/329 382/585/328 350/474/321
+f 338/391/321 370/594/362 371/587/370 339/412/321
+f 327/460/321 359/596/333 360/589/332 328/476/321
+f 347/424/321 379/598/374 380/591/382 348/442/321
+f 325/426/321 357/600/376 358/595/384 326/444/321
+f 336/486/321 368/602/340 369/67/352 337/492/321
+f 345/375/321 377/604/358 378/597/366 346/404/321
+f 323/379/321 355/606/360 356/599/368 324/406/321
+f 334/454/321 366/608/325 367/601/324 335/470/321
+f 343/482/321 375/609/336 376/603/346 344/376/321
+f 321/395/321 353/580/349 354/605/348 322/380/321
+f 332/418/321 364/610/372 365/607/380 333/436/321
diff --git a/homedecor_modpack/homedecor/models/homedecor_table_small_round.obj b/homedecor_modpack/homedecor/models/homedecor_table_small_round.obj
new file mode 100644
index 0000000..c0bb6e2
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_table_small_round.obj
@@ -0,0 +1,303 @@
+# Blender v2.73 (sub 0) OBJ File: 'table_small_round.blend'
+# www.blender.org
+o Cylinder
+v 0.049009 -0.499000 -0.497592
+v 0.049009 -0.453125 -0.497592
+v 0.145142 -0.499000 -0.478470
+v 0.145142 -0.453125 -0.478470
+v 0.235698 -0.499000 -0.440960
+v 0.235698 -0.453125 -0.440961
+v 0.317197 -0.499000 -0.386505
+v 0.317197 -0.453125 -0.386505
+v 0.386505 -0.499000 -0.317197
+v 0.386505 -0.453125 -0.317197
+v 0.440961 -0.499000 -0.235698
+v 0.440961 -0.453125 -0.235698
+v 0.478470 -0.499000 -0.145142
+v 0.478470 -0.453125 -0.145142
+v 0.497592 -0.499000 -0.049008
+v 0.497592 -0.453125 -0.049008
+v 0.497592 -0.499000 0.049009
+v 0.497592 -0.453125 0.049009
+v 0.478470 -0.499000 0.145142
+v 0.478470 -0.453125 0.145142
+v 0.440961 -0.499000 0.235698
+v 0.440961 -0.453125 0.235698
+v 0.386505 -0.499000 0.317197
+v 0.386505 -0.453125 0.317197
+v 0.317197 -0.499000 0.386505
+v 0.317197 -0.453125 0.386505
+v 0.235698 -0.499000 0.440961
+v 0.235698 -0.453125 0.440961
+v 0.145142 -0.499000 0.478470
+v 0.145142 -0.453125 0.478470
+v 0.049008 -0.499000 0.497592
+v 0.049008 -0.453125 0.497592
+v -0.049009 -0.499000 0.497592
+v -0.049009 -0.453125 0.497592
+v -0.145143 -0.499000 0.478470
+v -0.145143 -0.453125 0.478470
+v -0.235699 -0.499000 0.440961
+v -0.235699 -0.453125 0.440961
+v -0.317197 -0.499000 0.386505
+v -0.317197 -0.453125 0.386505
+v -0.386505 -0.499000 0.317196
+v -0.386505 -0.453125 0.317196
+v -0.440961 -0.499000 0.235698
+v -0.440961 -0.453125 0.235698
+v -0.478470 -0.499000 0.145142
+v -0.478470 -0.453125 0.145142
+v -0.497592 -0.499000 0.049008
+v -0.497592 -0.453125 0.049008
+v -0.497592 -0.499000 -0.049009
+v -0.497592 -0.453125 -0.049009
+v -0.478470 -0.499000 -0.145143
+v -0.478470 -0.453125 -0.145143
+v -0.440960 -0.499000 -0.235699
+v -0.440960 -0.453125 -0.235699
+v -0.386505 -0.499000 -0.317197
+v -0.386505 -0.453125 -0.317197
+v -0.317196 -0.499000 -0.386506
+v -0.317196 -0.453125 -0.386506
+v -0.235698 -0.499000 -0.440961
+v -0.235698 -0.453125 -0.440961
+v -0.145142 -0.499000 -0.478470
+v -0.145142 -0.453125 -0.478470
+v -0.049008 -0.499000 -0.497592
+v -0.049008 -0.453125 -0.497592
+v 0.046186 -0.437500 -0.468938
+v 0.136784 -0.437500 -0.450917
+v 0.222126 -0.437500 -0.415568
+v 0.298931 -0.437500 -0.364248
+v 0.364248 -0.437500 -0.298931
+v 0.415568 -0.437500 -0.222126
+v 0.450917 -0.437500 -0.136784
+v 0.468938 -0.437500 -0.046186
+v 0.468938 -0.437500 0.046186
+v 0.450917 -0.437500 0.136784
+v 0.415568 -0.437500 0.222126
+v 0.364248 -0.437500 0.298931
+v 0.298931 -0.437500 0.364248
+v 0.222126 -0.437500 0.415568
+v 0.136784 -0.437500 0.450917
+v 0.046186 -0.437500 0.468938
+v -0.046187 -0.437500 0.468938
+v -0.136785 -0.437500 0.450917
+v -0.222126 -0.437500 0.415568
+v -0.298931 -0.437500 0.364248
+v -0.364249 -0.437500 0.298931
+v -0.415568 -0.437500 0.222125
+v -0.450918 -0.437500 0.136784
+v -0.468938 -0.437500 0.046186
+v -0.468938 -0.437500 -0.046187
+v -0.450917 -0.437500 -0.136785
+v -0.415568 -0.437500 -0.222126
+v -0.364248 -0.437500 -0.298931
+v -0.298930 -0.437500 -0.364249
+v -0.222125 -0.437500 -0.415568
+v -0.136784 -0.437500 -0.450918
+v -0.046186 -0.437500 -0.468939
+vt 0.277344 0.123047
+vt 0.277344 0.095703
+vt 0.333008 0.095703
+vt 0.333008 0.123047
+vt 0.388672 0.095703
+vt 0.388672 0.123047
+vt 0.444336 0.095703
+vt 0.444336 0.123047
+vt 0.500000 0.095703
+vt 0.500000 0.123047
+vt 0.555664 0.095703
+vt 0.555664 0.123047
+vt 0.611328 0.095703
+vt 0.611328 0.123047
+vt 0.666992 0.095703
+vt 0.666992 0.123047
+vt 0.722656 0.095703
+vt 0.722656 0.123047
+vt 0.277344 0.404297
+vt 0.277344 0.376953
+vt 0.333008 0.376953
+vt 0.333008 0.404297
+vt 0.388672 0.376953
+vt 0.388672 0.404297
+vt 0.444336 0.376953
+vt 0.444336 0.404297
+vt 0.500000 0.376953
+vt 0.500000 0.404297
+vt 0.555664 0.376953
+vt 0.555664 0.404297
+vt 0.611328 0.376953
+vt 0.611328 0.404297
+vt 0.666992 0.376953
+vt 0.666992 0.404297
+vt 0.722656 0.376953
+vt 0.722656 0.404297
+vt 0.277344 0.310547
+vt 0.277344 0.283203
+vt 0.333008 0.283203
+vt 0.333008 0.310547
+vt 0.388672 0.283203
+vt 0.388672 0.310547
+vt 0.444336 0.283203
+vt 0.444336 0.310547
+vt 0.500000 0.283203
+vt 0.500000 0.310547
+vt 0.555664 0.283203
+vt 0.555664 0.310547
+vt 0.611328 0.283203
+vt 0.611328 0.310547
+vt 0.666992 0.283203
+vt 0.666992 0.310547
+vt 0.722656 0.283203
+vt 0.722656 0.310547
+vt 0.277344 0.216797
+vt 0.277344 0.189453
+vt 0.333008 0.189453
+vt 0.333008 0.216797
+vt 0.388672 0.189453
+vt 0.388672 0.216797
+vt 0.444336 0.189453
+vt 0.444336 0.216797
+vt 0.500000 0.189453
+vt 0.500000 0.216797
+vt 0.555664 0.189453
+vt 0.555664 0.216797
+vt 0.611328 0.189453
+vt 0.611328 0.216797
+vt 0.666992 0.216797
+vt 0.666992 0.189453
+vt 0.722656 0.189453
+vt 0.722656 0.216797
+vt 0.727947 0.526084
+vt 0.684687 0.534689
+vt 0.643937 0.551568
+vt 0.607262 0.576073
+vt 0.576074 0.607262
+vt 0.551569 0.643936
+vt 0.534689 0.684686
+vt 0.526084 0.727946
+vt 0.526084 0.772054
+vt 0.534689 0.815315
+vt 0.551568 0.856065
+vt 0.576073 0.892739
+vt 0.607262 0.923928
+vt 0.643936 0.948433
+vt 0.684686 0.965312
+vt 0.727946 0.973917
+vt 0.772054 0.973917
+vt 0.815315 0.965311
+vt 0.856065 0.948432
+vt 0.892739 0.923927
+vt 0.923928 0.892738
+vt 0.948433 0.856063
+vt 0.965312 0.815312
+vt 0.973917 0.772052
+vt 0.973916 0.727945
+vt 0.965311 0.684685
+vt 0.948432 0.643935
+vt 0.923927 0.607261
+vt 0.892739 0.576073
+vt 0.856065 0.551568
+vt 0.815315 0.534689
+vt 0.772054 0.526084
+vt 0.191894 0.558450
+vt 0.230380 0.550794
+vt 0.269620 0.550794
+vt 0.308106 0.558450
+vt 0.344359 0.573466
+vt 0.376986 0.595267
+vt 0.404733 0.623014
+vt 0.426534 0.655641
+vt 0.441550 0.691894
+vt 0.449206 0.730380
+vt 0.449206 0.769620
+vt 0.441551 0.808106
+vt 0.426534 0.844359
+vt 0.404733 0.876986
+vt 0.376986 0.904733
+vt 0.344359 0.926534
+vt 0.308106 0.941550
+vt 0.269620 0.949206
+vt 0.230380 0.949206
+vt 0.191894 0.941550
+vt 0.155640 0.926534
+vt 0.123014 0.904733
+vt 0.095267 0.876986
+vt 0.073466 0.844359
+vt 0.058450 0.808106
+vt 0.050794 0.769620
+vt 0.050794 0.730380
+vt 0.058450 0.691894
+vt 0.073466 0.655641
+vt 0.095267 0.623014
+vt 0.123014 0.595267
+vt 0.155641 0.573466
+g Cylinder_Cylinder_None
+s off
+f 1/1 2/2 4/3 3/4
+f 3/4 4/3 6/5 5/6
+f 5/6 6/5 8/7 7/8
+f 7/8 8/7 10/9 9/10
+f 9/10 10/9 12/11 11/12
+f 11/12 12/11 14/13 13/14
+f 13/14 14/13 16/15 15/16
+f 15/16 16/15 18/17 17/18
+f 17/19 18/20 20/21 19/22
+f 19/22 20/21 22/23 21/24
+f 21/24 22/23 24/25 23/26
+f 23/26 24/25 26/27 25/28
+f 25/28 26/27 28/29 27/30
+f 27/30 28/29 30/31 29/32
+f 29/32 30/31 32/33 31/34
+f 31/34 32/33 34/35 33/36
+f 33/37 34/38 36/39 35/40
+f 35/40 36/39 38/41 37/42
+f 37/42 38/41 40/43 39/44
+f 39/44 40/43 42/45 41/46
+f 41/46 42/45 44/47 43/48
+f 43/48 44/47 46/49 45/50
+f 45/50 46/49 48/51 47/52
+f 47/52 48/51 50/53 49/54
+f 49/55 50/56 52/57 51/58
+f 51/58 52/57 54/59 53/60
+f 53/60 54/59 56/61 55/62
+f 55/62 56/61 58/63 57/64
+f 57/64 58/63 60/65 59/66
+f 59/66 60/65 62/67 61/68
+f 54/59 52/57 90/57 91/59
+f 63/69 64/70 2/71 1/72
+f 61/68 62/67 64/70 63/69
+f 1/73 3/74 5/75 7/76 9/77 11/78 13/79 15/80 17/81 19/82 21/83 23/84 25/85 27/86 29/87 31/88 33/89 35/90 37/91 39/92 41/93 43/94 45/95 47/96 49/97 51/98 53/99 55/100 57/101 59/102 61/103 63/104
+f 66/105 65/106 96/107 95/108 94/109 93/110 92/111 91/112 90/113 89/114 88/115 87/116 86/117 85/118 84/119 83/120 82/121 81/122 80/123 79/124 78/125 77/126 76/127 75/128 74/129 73/130 72/131 71/132 70/133 69/134 68/135 67/136
+f 10/9 8/7 68/7 69/9
+f 32/33 30/31 79/31 80/33
+f 60/65 58/63 93/63 94/65
+f 38/41 36/39 82/39 83/41
+f 16/15 14/13 71/13 72/15
+f 2/71 64/70 96/70 65/71
+f 44/47 42/45 85/45 86/47
+f 22/23 20/21 74/21 75/23
+f 50/53 48/51 88/51 89/53
+f 6/5 4/3 66/3 67/5
+f 28/29 26/27 77/27 78/29
+f 56/61 54/59 91/59 92/61
+f 12/11 10/9 69/9 70/11
+f 34/35 32/33 80/33 81/35
+f 62/67 60/65 94/65 95/67
+f 40/43 38/41 83/41 84/43
+f 4/3 2/2 65/2 66/3
+f 18/17 16/15 72/15 73/17
+f 46/49 44/47 86/47 87/49
+f 24/25 22/23 75/23 76/25
+f 52/57 50/56 89/56 90/57
+f 8/7 6/5 67/5 68/7
+f 30/31 28/29 78/29 79/31
+f 58/63 56/61 92/61 93/63
+f 36/39 34/38 81/38 82/39
+f 14/13 12/11 70/11 71/13
+f 64/70 62/67 95/67 96/70
+f 42/45 40/43 84/43 85/45
+f 20/21 18/20 73/20 74/21
+f 48/51 46/49 87/49 88/51
+f 26/27 24/25 76/25 77/27
diff --git a/homedecor_modpack/homedecor/models/homedecor_table_small_square.obj b/homedecor_modpack/homedecor/models/homedecor_table_small_square.obj
new file mode 100644
index 0000000..467259e
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_table_small_square.obj
@@ -0,0 +1,48 @@
+# Blender v2.69 (sub 0) OBJ File: 'table_small_square.blend'
+# www.blender.org
+mtllib homedecor_table_small_square.mtl
+o Cube
+v 0.499000 -0.499000 -0.499000
+v 0.499000 -0.499000 0.499000
+v -0.499000 -0.499000 0.499000
+v -0.499000 -0.499000 -0.499000
+v 0.499000 -0.468750 -0.499000
+v 0.499000 -0.468750 0.499000
+v -0.499000 -0.468750 0.499000
+v -0.499000 -0.468750 -0.499000
+v 0.468750 -0.437500 -0.468750
+v 0.468750 -0.437500 0.468750
+v -0.468750 -0.437500 0.468750
+v -0.468750 -0.437500 -0.468750
+vt 0.500000 0.029412
+vt 0.970588 0.029412
+vt 0.970588 0.500000
+vt 0.500000 0.500000
+vt 0.014706 0.985294
+vt 0.014706 0.514706
+vt 0.029412 0.529412
+vt 0.029412 0.970588
+vt 0.985294 0.500000
+vt 0.985294 0.029412
+vt 0.500000 0.514706
+vt 0.970588 0.514706
+vt 0.485294 0.029412
+vt 0.485294 0.500000
+vt 0.970588 0.014706
+vt 0.500000 0.014706
+vt 0.470588 0.970588
+vt 0.470588 0.529412
+vt 0.485294 0.514706
+vt 0.485294 0.985294
+usemtl Material
+s off
+f 1/1 2/2 3/3 4/4
+f 8/5 7/6 11/7 12/8
+f 1/9 5/3 6/2 2/10
+f 2/11 6/4 7/3 3/12
+f 3/13 7/1 8/4 4/14
+f 5/15 1/2 4/1 8/16
+f 9/17 12/8 11/7 10/18
+f 7/6 6/19 10/18 11/7
+f 5/20 8/5 12/8 9/17
+f 6/19 5/20 9/17 10/18
diff --git a/homedecor_modpack/homedecor/models/homedecor_telephone.obj b/homedecor_modpack/homedecor/models/homedecor_telephone.obj
new file mode 100644
index 0000000..a142714
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_telephone.obj
@@ -0,0 +1,927 @@
+# Blender v2.73 (sub 0) OBJ File: 'phone.blend'
+# www.blender.org
+o Cube
+v -0.187498 -0.500000 0.148438
+v -0.187500 -0.500000 -0.187500
+v 0.187500 -0.500000 -0.187500
+v 0.187500 -0.500000 0.148438
+v -0.074219 -0.320312 0.123310
+v -0.074219 -0.320312 -0.014651
+v 0.074219 -0.320312 -0.014651
+v 0.074219 -0.320312 0.123310
+v -0.184016 -0.436411 0.148438
+v -0.184016 -0.436411 -0.181258
+v 0.184016 -0.436411 -0.181258
+v 0.184016 -0.436411 0.148438
+v -0.062500 -0.320312 0.109375
+v -0.050781 -0.250000 0.097656
+v -0.062500 -0.320312 0.011719
+v -0.050781 -0.250000 0.023438
+v -0.050781 -0.281250 0.023438
+v -0.062500 -0.250000 0.011719
+v -0.050781 -0.281250 0.097656
+v -0.062500 -0.250000 0.109375
+v -0.050781 -0.250000 0.109375
+v -0.050781 -0.250000 0.011719
+v -0.062500 -0.281250 0.097656
+v -0.062500 -0.281250 0.023438
+v -0.062500 -0.250000 0.023438
+v -0.050781 -0.320312 0.011719
+v -0.050781 -0.320312 0.109375
+v -0.062500 -0.250000 0.097656
+v -0.187500 -0.278318 0.094238
+v -0.187500 -0.278318 0.026855
+v 0.187500 -0.278318 0.026855
+v 0.187500 -0.278318 0.094238
+v -0.187500 -0.252683 0.078125
+v -0.187500 -0.252683 0.042969
+v 0.187500 -0.252683 0.042969
+v 0.187500 -0.252683 0.078125
+v 0.187500 -0.334715 -0.001915
+v 0.231694 -0.334715 0.016391
+v 0.250000 -0.334715 0.060585
+v 0.250000 -0.305418 0.060585
+v 0.231694 -0.334715 0.104779
+v 0.187500 -0.334715 0.123085
+v 0.187500 -0.305418 0.123085
+v 0.143306 -0.334715 0.104779
+v 0.143306 -0.305418 0.104779
+v 0.125000 -0.334715 0.060585
+v 0.125000 -0.305418 0.060585
+v 0.143306 -0.334715 0.016391
+v 0.143306 -0.305418 0.016391
+v 0.163582 -0.247676 0.060585
+v 0.143306 -0.261224 0.060585
+v 0.129758 -0.281500 0.060585
+v 0.228932 -0.342528 0.019154
+v 0.246093 -0.342528 0.060585
+v 0.170588 -0.247676 0.043673
+v 0.156250 -0.261224 0.029335
+v 0.146670 -0.281500 0.019755
+v 0.187500 -0.342528 0.060585
+v 0.187500 -0.247676 0.036668
+v 0.187500 -0.261224 0.016391
+v 0.187500 -0.281500 0.002843
+v 0.187500 -0.305418 -0.001915
+v 0.187500 -0.242918 0.060585
+v 0.204412 -0.247676 0.043673
+v 0.218750 -0.261224 0.029335
+v 0.228330 -0.281500 0.019755
+v 0.231694 -0.305418 0.016391
+v 0.211418 -0.247676 0.060585
+v 0.231694 -0.261224 0.060585
+v 0.245242 -0.281500 0.060585
+v 0.204412 -0.247676 0.077498
+v 0.218750 -0.261224 0.091835
+v 0.228330 -0.281500 0.101415
+v 0.231694 -0.305418 0.104779
+v 0.187500 -0.247676 0.084503
+v 0.187500 -0.261224 0.104779
+v 0.187500 -0.281500 0.118328
+v 0.170588 -0.247676 0.077498
+v 0.156250 -0.261224 0.091835
+v 0.146670 -0.281500 0.101415
+v 0.187500 -0.342528 0.001992
+v 0.228932 -0.342528 0.102017
+v 0.187500 -0.342528 0.119178
+v 0.146068 -0.342528 0.102017
+v 0.128907 -0.342528 0.060585
+v 0.146068 -0.342528 0.019154
+v -0.187500 -0.334715 -0.001915
+v -0.187500 -0.305418 -0.001915
+v -0.143306 -0.334715 0.016391
+v -0.125000 -0.334715 0.060585
+v -0.125000 -0.305418 0.060585
+v -0.143306 -0.334715 0.104779
+v -0.187500 -0.334715 0.123085
+v -0.187500 -0.305418 0.123085
+v -0.231694 -0.334715 0.104779
+v -0.231694 -0.305418 0.104779
+v -0.250000 -0.334715 0.060585
+v -0.250000 -0.305418 0.060585
+v -0.231694 -0.334715 0.016391
+v -0.231694 -0.305418 0.016391
+v -0.211418 -0.247676 0.060585
+v -0.231694 -0.261224 0.060585
+v -0.245242 -0.281500 0.060585
+v -0.146068 -0.342528 0.019154
+v -0.128907 -0.342528 0.060585
+v -0.204412 -0.247676 0.043673
+v -0.218750 -0.261224 0.029335
+v -0.228330 -0.281500 0.019755
+v -0.187500 -0.342528 0.060585
+v -0.187500 -0.247676 0.036668
+v -0.187500 -0.261224 0.016391
+v -0.187500 -0.281500 0.002843
+v -0.187500 -0.242918 0.060585
+v -0.170588 -0.247676 0.043673
+v -0.156250 -0.261224 0.029335
+v -0.146670 -0.281500 0.019755
+v -0.143306 -0.305418 0.016391
+v -0.163582 -0.247676 0.060585
+v -0.143306 -0.261224 0.060585
+v -0.129758 -0.281500 0.060585
+v -0.170588 -0.247676 0.077498
+v -0.156250 -0.261224 0.091835
+v -0.146670 -0.281500 0.101415
+v -0.143306 -0.305418 0.104779
+v -0.187500 -0.247676 0.084503
+v -0.187500 -0.261224 0.104779
+v -0.187500 -0.281500 0.118328
+v -0.204412 -0.247676 0.077498
+v -0.218750 -0.261224 0.091835
+v -0.228330 -0.281500 0.101415
+v -0.187500 -0.342528 0.001992
+v -0.146068 -0.342528 0.102017
+v -0.187500 -0.342528 0.119178
+v -0.228932 -0.342528 0.102017
+v -0.246093 -0.342528 0.060585
+v -0.228932 -0.342528 0.019154
+v -0.187500 -0.266599 0.094238
+v -0.187500 -0.251951 0.060547
+v -0.187500 -0.266599 0.026855
+v 0.187500 -0.266599 0.026855
+v 0.187500 -0.251951 0.060547
+v 0.187500 -0.266599 0.094238
+v -0.187500 -0.281248 0.060547
+v 0.050781 -0.250000 0.097656
+v 0.187500 -0.281248 0.060547
+v 0.062500 -0.320312 0.109375
+v 0.062500 -0.320312 0.011719
+v -0.187500 -0.281248 0.089111
+v 0.187500 -0.281248 0.031982
+v -0.187500 -0.281248 0.031982
+v 0.187500 -0.281248 0.089111
+v 0.050781 -0.250000 0.023438
+v 0.050781 -0.281250 0.023438
+v 0.050781 -0.281250 0.097656
+v 0.062500 -0.250000 0.011719
+v 0.062500 -0.250000 0.109375
+v 0.050781 -0.250000 0.109375
+v 0.062500 -0.281250 0.097656
+v 0.050781 -0.250000 0.011719
+v 0.062500 -0.281250 0.023438
+v 0.062500 -0.250000 0.023438
+v 0.050781 -0.320312 0.011719
+v 0.062500 -0.250000 0.097656
+v 0.050781 -0.320312 0.109375
+v -0.143154 -0.378906 0.142457
+v -0.143154 -0.378906 -0.133597
+v 0.143154 -0.378906 -0.133597
+v 0.143154 -0.378906 0.142457
+v -0.341964 -0.418644 0.051451
+v -0.331350 -0.415841 0.046875
+v -0.242037 -0.319780 0.046875
+v -0.185469 -0.481772 0.046875
+v -0.241752 -0.308735 0.051451
+v -0.186129 -0.492800 0.051451
+v -0.241635 -0.304160 0.062500
+v -0.186402 -0.497369 0.062500
+v -0.241752 -0.308735 0.073549
+v -0.186129 -0.492800 0.073549
+v -0.242037 -0.319780 0.078125
+v -0.185469 -0.481772 0.078125
+v -0.242321 -0.330825 0.073549
+v -0.184810 -0.470743 0.073549
+v -0.242439 -0.335400 0.062500
+v -0.184536 -0.466175 0.062500
+v -0.242321 -0.330825 0.051451
+v -0.184810 -0.470743 0.051451
+v -0.346611 -0.419842 0.062500
+v -0.341964 -0.418644 0.073549
+v -0.331350 -0.415841 0.078125
+v -0.321710 -0.413125 0.073549
+v -0.318044 -0.412013 0.062500
+v -0.321710 -0.413125 0.051451
+v -0.265921 -0.462094 0.051451
+v -0.262944 -0.458771 0.062500
+v -0.273490 -0.469986 0.046875
+v -0.333611 -0.339742 0.051451
+v -0.265921 -0.462094 0.073549
+v -0.337268 -0.337233 0.062500
+v -0.273490 -0.469986 0.078125
+v -0.333611 -0.339742 0.073549
+v -0.281551 -0.477685 0.073549
+v -0.325290 -0.345971 0.078125
+v -0.285021 -0.480817 0.062500
+v -0.317709 -0.352379 0.073549
+v -0.281551 -0.477685 0.051451
+v -0.314794 -0.355065 0.062500
+v -0.325290 -0.345971 0.046875
+v -0.317709 -0.352379 0.051451
+v -0.301781 -0.437457 0.051451
+v -0.297622 -0.435365 0.062500
+v -0.231488 -0.479010 0.046875
+v -0.291531 -0.314003 0.051451
+v -0.301781 -0.437457 0.073549
+v -0.293430 -0.310108 0.062500
+v -0.312226 -0.442426 0.078125
+v -0.291531 -0.314003 0.073549
+v -0.323099 -0.447286 0.073549
+v -0.287172 -0.323421 0.078125
+v -0.327714 -0.449272 0.062500
+v -0.283270 -0.333064 0.073549
+v -0.323099 -0.447286 0.051451
+v -0.281792 -0.337173 0.062500
+v -0.339566 -0.378498 0.046875
+v -0.283270 -0.333064 0.051451
+v -0.228067 -0.468988 0.051451
+v -0.226754 -0.464758 0.062500
+v -0.312226 -0.442426 0.046875
+v -0.350703 -0.378193 0.051451
+v -0.228067 -0.468988 0.073549
+v -0.355804 -0.378310 0.062500
+v -0.231488 -0.479010 0.078125
+v -0.350703 -0.378193 0.073549
+v -0.235253 -0.488887 0.073549
+v -0.339566 -0.378498 0.078125
+v -0.236881 -0.492977 0.062500
+v -0.329528 -0.378986 0.073549
+v -0.235253 -0.488887 0.051451
+v -0.325507 -0.379036 0.062500
+v -0.287172 -0.323421 0.046875
+v -0.329528 -0.378986 0.051451
+vt 0.888546 0.508706
+vt 0.701328 0.810702
+vt 0.298194 0.810702
+vt 0.110976 0.508706
+vt 0.999522 0.306955
+vt 0.000000 0.306955
+vt 0.165838 0.945055
+vt 0.165838 0.017559
+vt 0.347054 0.000000
+vt 0.347054 0.945055
+vt 0.821025 0.990710
+vt 0.821025 0.009290
+vt 0.993770 0.000000
+vt 0.993770 1.000000
+vt 0.680840 0.927496
+vt 0.680840 0.000000
+vt 0.862056 0.000000
+vt 0.862056 0.945055
+vt 0.316044 0.988195
+vt 0.316044 0.009266
+vt 0.486940 0.000000
+vt 0.486940 0.997461
+vt 0.911035 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.911035 0.000000
+vt 0.731532 0.611510
+vt 0.338694 0.611510
+vt 0.338694 0.193928
+vt 0.731532 0.193928
+vt 0.160540 0.879505
+vt 0.160540 0.117956
+vt 0.515002 0.793416
+vt 0.515002 0.016824
+vt 0.000000 0.928231
+vt 0.000000 0.151639
+vt 0.680673 0.274725
+vt 0.714042 0.274725
+vt 0.714042 0.472177
+vt 0.680673 0.472177
+vt 0.747410 0.274725
+vt 0.747410 0.472490
+vt 0.714042 0.472490
+vt 0.947622 0.307692
+vt 0.914253 0.307692
+vt 0.914253 0.274725
+vt 0.947622 0.274725
+vt 0.547232 0.274725
+vt 0.580601 0.274725
+vt 0.580601 0.483516
+vt 0.547232 0.483516
+vt 0.847516 0.274725
+vt 0.880884 0.274725
+vt 0.880884 0.362481
+vt 0.847516 0.362481
+vt 0.647338 0.362621
+vt 0.613969 0.362621
+vt 0.613969 0.274725
+vt 0.647338 0.274725
+vt 0.914253 0.362481
+vt 0.780779 0.274725
+vt 0.814147 0.274725
+vt 0.814147 0.472177
+vt 0.780779 0.472177
+vt 0.947622 0.373626
+vt 0.914253 0.373626
+vt 0.914253 0.340659
+vt 0.947622 0.340659
+vt 0.613969 0.472490
+vt 0.580601 0.472490
+vt 0.780779 0.483516
+vt 0.747410 0.483516
+vt 0.847516 0.362621
+vt 0.814147 0.362621
+vt 0.747410 0.000000
+vt 0.636200 0.241758
+vt 0.836378 0.241758
+vt 0.836378 0.032967
+vt 0.547232 0.000000
+vt 0.436022 0.241758
+vt 0.436022 0.516484
+vt 0.436022 0.307692
+vt 0.547232 0.549451
+vt 0.914253 0.395449
+vt 0.880884 0.395449
+vt 0.931163 0.240142
+vt 0.435161 0.240142
+vt 0.007522 0.000000
+vt 1.000000 0.000000
+vt 0.435161 0.757237
+vt 0.931163 0.757237
+vt 1.000000 0.997379
+vt 0.007522 0.997379
+vt -0.000000 0.696145
+vt -0.000000 0.301316
+vt 0.636200 0.032967
+vt 0.547232 0.032967
+vt 0.547232 0.241758
+vt 0.947588 0.000000
+vt 0.747410 0.241758
+vt 0.747410 0.032967
+vt 0.436022 0.032967
+vt 0.347054 0.032967
+vt 0.347054 0.274725
+vt 0.347054 0.241758
+vt 0.347054 0.549451
+vt 0.347054 0.516484
+vt 0.347054 0.307692
+vt 0.561634 0.246105
+vt 0.622782 0.108231
+vt 0.622782 0.416606
+vt 0.709699 1.000000
+vt 0.709699 0.357890
+vt 0.732734 0.357890
+vt 0.732734 1.000000
+vt 0.686664 1.000000
+vt 0.686664 0.357890
+vt 0.933555 1.000000
+vt 0.898888 1.000000
+vt 0.898888 0.357890
+vt 0.933555 0.357890
+vt 0.452761 0.266103
+vt 0.276300 0.266103
+vt 0.285308 0.034218
+vt 0.461770 0.034218
+vt 0.461992 0.497987
+vt 0.285442 0.497987
+vt 0.277140 0.266103
+vt 0.453689 0.266103
+vt 0.285442 0.034218
+vt 0.461992 0.034218
+vt 0.461770 0.497988
+vt 0.501740 0.266103
+vt 0.510185 0.483492
+vt 0.135163 0.266103
+vt 0.019117 0.266103
+vt 0.024988 0.102136
+vt 0.142834 0.051870
+vt 0.768207 0.325368
+vt 0.799356 0.250727
+vt 0.872840 0.250727
+vt 0.903988 0.325367
+vt 0.142902 0.480337
+vt 0.025486 0.430070
+vt 0.134579 0.266103
+vt 0.924801 0.199152
+vt 1.000000 0.230069
+vt 0.142902 0.051870
+vt 0.025486 0.102136
+vt 0.924801 0.126215
+vt 1.000000 0.095298
+vt 0.142834 0.480336
+vt 0.024988 0.430070
+vt 0.872840 0.074640
+vt 0.903988 0.000001
+vt 0.799356 0.074640
+vt 0.768207 0.000000
+vt 0.747395 0.126215
+vt 0.672196 0.095298
+vt 0.747395 0.199153
+vt 0.672196 0.230069
+vt 0.218750 0.562500
+vt 0.373430 0.626570
+vt 0.218750 0.781250
+vt 0.836098 0.162683
+vt 0.437500 0.781250
+vt 0.373430 0.935930
+vt 0.218750 1.000000
+vt 0.064070 0.935930
+vt 0.000000 0.781250
+vt 0.064070 0.626570
+vt 0.510326 0.048714
+vt 0.502541 0.266103
+vt 0.510326 0.483492
+vt 0.510186 0.048714
+vt 0.285308 0.497988
+vt 0.218750 0.562500
+vt 0.218750 0.781250
+vt 0.437500 0.781250
+vt 0.218750 1.000000
+vt 0.000000 0.781250
+vt 0.968222 1.000000
+vt 0.968222 0.357890
+vt 1.000000 0.357890
+vt 1.000000 1.000000
+vt 0.734219 1.000000
+vt 0.734219 0.357890
+vt 0.744330 0.357890
+vt 0.744330 1.000000
+vt 0.561634 0.278732
+vt 0.867109 1.000000
+vt 0.867109 0.357890
+vt 0.800664 0.357890
+vt 0.856998 0.357890
+vt 0.856998 1.000000
+vt 0.800664 1.000000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 0.875000 0.250000
+vt 0.875000 0.125000
+vt 0.500000 0.375000
+vt 0.500000 0.500000
+vt 0.375000 0.500000
+vt 0.375000 0.375000
+vt 0.750000 0.875000
+vt 0.750000 1.000000
+vt 0.625000 1.000000
+vt 0.625000 0.875000
+vt 0.750000 0.125000
+vt 0.750000 0.250000
+vt 0.625000 0.250000
+vt 0.625000 0.125000
+vt 0.250000 0.500000
+vt 0.250000 0.375000
+vt 0.500000 1.000000
+vt 0.500000 0.875000
+vt 0.875000 0.625000
+vt 0.875000 0.750000
+vt 0.750000 0.750000
+vt 0.750000 0.625000
+vt 0.125000 0.500000
+vt 0.125000 0.375000
+vt 0.375000 1.000000
+vt 0.375000 0.875000
+vt 1.000000 0.625000
+vt 1.000000 0.750000
+vt 0.000000 0.500000
+vt 0.000000 0.375000
+vt 0.250000 1.000000
+vt 0.250000 0.875000
+vt 0.500000 0.250000
+vt 0.500000 0.125000
+vt 0.875000 0.375000
+vt 0.875000 0.500000
+vt 0.750000 0.500000
+vt 0.750000 0.375000
+vt 0.125000 1.000000
+vt 0.125000 0.875000
+vt 0.625000 0.500000
+vt 0.625000 0.375000
+vt 1.000000 0.375000
+vt 1.000000 0.500000
+vt 0.000000 0.875000
+vt 0.875000 0.875000
+vt 0.875000 1.000000
+vt 1.000000 0.875000
+vt 0.125000 0.625000
+vt 0.125000 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.625000
+vt 0.250000 0.625000
+vt 0.250000 0.750000
+vt 0.375000 0.625000
+vt 0.375000 0.750000
+vt 0.125000 0.125000
+vt 0.125000 0.250000
+vt 0.000000 0.250000
+vt 0.000000 0.125000
+vt 0.500000 0.625000
+vt 0.500000 0.750000
+vt 0.250000 0.125000
+vt 0.250000 0.250000
+vt 0.625000 0.625000
+vt 0.625000 0.750000
+vt 0.375000 0.125000
+vt 0.375000 0.250000
+vt 0.500000 0.000000
+vt 0.375000 0.000000
+vt 0.250000 0.000000
+vt 0.125000 0.000000
+vt 0.875000 0.000000
+vt 0.750000 0.000000
+vt 0.625000 0.000000
+vn -0.432900 0.802100 -0.411300
+vn -0.287000 0.944200 -0.161100
+vn 0.287000 0.944200 -0.161100
+vn 0.432900 0.802100 -0.411300
+vn -0.651800 0.396700 -0.646300
+vn 0.651800 0.396700 -0.646300
+vn -0.707100 0.265900 0.655200
+vn -0.588700 -0.537200 -0.604000
+vn -0.594300 -0.562700 0.574500
+vn 0.588700 -0.537200 -0.604000
+vn 0.707100 0.265900 0.655200
+vn 0.594300 -0.562700 0.574500
+vn 0.257100 0.819900 0.511400
+vn -0.257100 0.819900 0.511400
+vn 0.509200 0.558900 0.654400
+vn -0.509200 0.558900 0.654400
+vn 0.577300 0.577300 0.577300
+vn -0.577300 0.577300 0.577300
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 0.707100
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn -0.577300 0.577300 -0.577300
+vn 0.577300 0.577300 -0.577300
+vn 0.904500 0.301500 0.301500
+vn -0.904500 0.301500 0.301500
+vn -0.904500 0.301500 -0.301500
+vn 0.904500 0.301500 -0.301500
+vn -0.640000 0.714400 0.282800
+vn -0.228600 0.973500 0.000000
+vn -0.105200 0.413900 0.904200
+vn -0.105200 0.413900 -0.904200
+vn 0.105200 0.413900 -0.904200
+vn 0.000000 -0.501900 -0.864900
+vn 0.640000 0.714400 -0.282800
+vn 0.228600 0.973500 0.000000
+vn 0.105200 0.413900 0.904200
+vn 0.000000 -0.501900 0.864900
+vn -0.640000 0.714400 -0.282800
+vn 0.000000 -0.218100 0.975900
+vn 0.000000 0.095700 0.995400
+vn -0.703800 0.095700 0.703800
+vn -0.690100 -0.218100 0.690100
+vn -0.995400 0.095700 0.000000
+vn -0.975900 -0.218100 0.000000
+vn -0.703800 0.095700 -0.703800
+vn -0.690100 -0.218100 -0.690100
+vn 0.000000 -0.218100 -0.975900
+vn 0.000000 -0.794000 -0.607900
+vn -0.429900 -0.794000 -0.429900
+vn -0.930300 0.366800 0.000000
+vn -0.729600 0.683800 0.000000
+vn -0.515900 0.683800 -0.515900
+vn -0.657800 0.366800 -0.657800
+vn -0.422600 0.906300 0.000000
+vn -0.298800 0.906300 -0.298800
+vn 0.000000 0.683800 -0.729600
+vn 0.000000 0.366800 -0.930300
+vn 0.000000 0.906300 -0.422600
+vn 0.000000 0.095700 -0.995400
+vn 0.657800 0.366800 -0.657800
+vn 0.703800 0.095700 -0.703800
+vn 0.515900 0.683800 -0.515900
+vn 0.298800 0.906300 -0.298800
+vn 0.729600 0.683800 0.000000
+vn 0.930300 0.366800 0.000000
+vn 0.422600 0.906300 0.000000
+vn 0.515900 0.683800 0.515900
+vn 0.657800 0.366800 0.657800
+vn 0.298800 0.906300 0.298800
+vn 0.000000 0.683800 0.729600
+vn 0.000000 0.366800 0.930300
+vn 0.000000 0.906300 0.422600
+vn -0.515900 0.683800 0.515900
+vn -0.657800 0.366800 0.657800
+vn -0.298800 0.906300 0.298800
+vn 0.429900 -0.794000 -0.429900
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.607900 -0.794000 0.000000
+vn 0.429900 -0.794000 0.429900
+vn 0.000000 -0.794000 0.607900
+vn -0.429900 -0.794000 0.429900
+vn -0.607900 -0.794000 0.000000
+vn 0.690100 -0.218100 0.690100
+vn 0.975900 -0.218100 0.000000
+vn 0.690100 -0.218100 -0.690100
+vn 0.640000 0.714400 0.282800
+vn 0.000000 -0.966500 -0.256700
+vn 0.000000 -0.966500 0.256700
+vn 0.995400 0.095700 0.000000
+vn 0.703800 0.095700 0.703800
+vn 0.271000 -0.962600 0.000000
+vn 0.737400 -0.675400 0.000000
+vn 0.510700 -0.464800 -0.723300
+vn 0.194500 -0.665300 -0.720800
+vn -0.995600 0.093400 0.000000
+vn -0.925000 -0.379800 0.000000
+vn -0.661500 -0.279100 0.696000
+vn -0.726800 0.079700 0.682100
+vn -0.003600 -0.017700 -0.999800
+vn -0.004200 -0.000400 -1.000000
+vn -0.057000 -0.717600 -0.694100
+vn -0.116400 -0.724800 -0.679000
+vn -0.015900 0.054400 -0.998400
+vn -0.050800 0.050500 -0.997400
+vn -0.558400 0.493800 -0.666600
+vn -0.240100 0.704600 -0.667700
+vn -0.031700 -0.016800 0.999300
+vn -0.062300 0.013000 0.998000
+vn -0.083100 -0.996500 -0.000000
+vn -0.166400 -0.986100 0.000000
+vn 0.477700 0.521600 -0.706900
+vn 0.263600 0.646600 -0.715800
+vn -0.007100 -0.054500 -0.998500
+vn -0.017500 -0.029500 -0.999400
+vn 0.630000 0.307400 0.713100
+vn 0.689100 -0.068300 0.721400
+vn -0.057000 -0.717600 0.694100
+vn -0.116400 -0.724800 0.679000
+vn 0.660500 0.750800 0.000000
+vn 0.359700 0.933000 0.000000
+vn 0.891200 0.453600 0.000000
+vn 0.994600 -0.103700 0.000000
+vn -0.004200 -0.000400 1.000000
+vn -0.003600 -0.017700 0.999800
+vn -0.756600 0.653800 0.000000
+vn -0.331200 0.943500 0.000000
+vn 0.689100 -0.068300 -0.721400
+vn 0.630000 0.307400 -0.713100
+vn -0.031700 -0.016800 -0.999300
+vn -0.062300 0.013000 -0.998000
+vn 0.029500 0.718000 0.695500
+vn 0.079300 0.712000 0.697700
+vn -0.661500 -0.279100 -0.696000
+vn -0.726800 0.079700 -0.682100
+vn 0.037100 0.999300 -0.000000
+vn 0.101700 0.994800 0.000000
+vn 0.079300 0.712000 -0.697700
+vn 0.029500 0.718000 -0.695500
+vn 0.477700 0.521600 0.706900
+vn 0.263600 0.646600 0.715800
+vn -0.017500 -0.029500 0.999400
+vn -0.007100 -0.054500 0.998500
+vn -0.523800 -0.501700 0.688400
+vn -0.310500 -0.672400 0.671900
+vn 0.194500 -0.665300 0.720800
+vn 0.510700 -0.464800 0.723300
+vn -0.738000 -0.674700 0.000000
+vn -0.441100 -0.897500 0.000000
+vn -0.015900 0.054400 0.998400
+vn -0.050800 0.050500 0.997400
+vn -0.523800 -0.501700 -0.688400
+vn -0.310500 -0.672400 -0.671900
+vn -0.240100 0.704600 0.667700
+vn -0.558400 0.493800 0.666600
+vn -0.109800 0.994000 -0.000000
+vn -0.077700 0.734000 0.674700
+vn -0.007900 0.028100 0.999600
+vn 0.039500 -0.709200 0.703900
+vn 0.049900 -0.998800 0.000000
+vn 0.039500 -0.709200 -0.703900
+vn -0.007900 0.028100 -0.999600
+vn -0.077700 0.734000 -0.674700
+g Cube_Cube_dial
+s 1
+f 166/1/1 6/2/2 7/3/3 167/4/4
+f 10/5/5 166/1/1 167/4/4 11/6/6
+g Cube_Cube_body
+f 9/7/7 10/8/5 2/9/8 1/10/9
+f 10/11/5 11/12/6 3/13/10 2/14/8
+f 11/15/6 12/16/11 4/17/12 3/18/10
+f 12/19/11 9/20/7 1/21/9 4/22/12
+f 1/23/9 2/24/8 3/25/10 4/26/12
+f 8/27/13 7/28/3 6/29/2 5/30/14
+f 168/31/15 165/32/16 9/20/7 12/19/11
+f 167/33/4 168/34/15 12/16/11 11/15/6
+f 165/35/16 166/36/1 10/8/5 9/7/7
+f 21/37/17 20/38/18 13/39/19 27/40/20
+f 26/38/21 15/41/22 18/42/23 22/43/24
+f 14/44/24 28/45/23 20/46/18 21/47/17
+f 17/48/25 24/49/26 23/50/27 19/51/28
+f 161/52/17 152/53/18 153/54/26 160/55/25
+f 19/56/28 23/57/27 28/58/23 14/59/24
+f 16/53/17 25/46/18 24/60/26 17/54/25
+f 156/61/17 157/62/18 164/63/19 146/64/20
+f 163/65/24 144/66/23 157/67/18 156/68/17
+f 147/69/21 162/70/22 159/49/23 155/58/24
+f 160/71/25 153/72/26 154/41/27 158/61/28
+f 158/73/28 154/74/27 144/62/23 163/52/24
+f 146/75/20 147/41/21 160/76/25
+f 154/77/27 153/78/26 164/47/19
+f 155/68/24 159/67/23 152/45/18 161/44/17
+f 27/79/20 26/48/21 17/80/25
+f 23/81/27 24/82/26 13/83/19
+f 22/54/24 18/60/23 25/84/18 16/85/17
+f 5/86/14 6/87/2 166/88/1 165/89/16
+f 7/90/3 8/91/13 168/92/15 167/93/4
+f 8/94/13 5/95/14 165/32/16 168/31/15
+f 158/96/28 163/97/24 156/79/17
+f 155/48/24 161/98/17 160/76/25
+f 158/96/28 156/79/17 146/75/20
+f 147/41/21 155/48/24 160/76/25
+f 160/76/25 158/96/28 146/75/20
+f 153/78/26 159/75/23 162/99/22
+f 154/77/27 157/41/18 144/100/23
+f 153/78/26 152/101/18 159/75/23
+f 164/47/19 157/41/18 154/77/27
+f 153/78/26 162/99/22 164/47/19
+f 19/102/28 14/103/24 21/9/17
+f 22/104/24 16/105/17 17/80/25
+f 19/102/28 21/9/17 27/79/20
+f 26/48/21 22/104/24 17/80/25
+f 17/80/25 19/102/28 27/79/20
+f 24/82/26 18/104/23 15/48/22
+f 23/81/27 20/106/18 28/107/23
+f 24/82/26 25/108/18 18/104/23
+f 13/83/19 20/106/18 23/81/27
+f 24/82/26 15/48/22 13/83/19
+g Cube_Cube_handset
+f 33/109/29 138/110/30 137/111/31
+f 139/112/32 140/113/33 31/114/34 30/115/34
+f 35/109/35 141/110/36 140/111/33
+f 142/116/37 137/117/31 29/113/38 32/112/38
+f 141/118/36 35/119/35 34/120/39 138/121/30
+f 42/122/40 43/123/41 45/124/42 44/125/43
+f 44/126/43 45/127/42 47/128/44 46/129/45
+f 46/129/45 47/128/44 49/130/46 48/131/47
+f 48/132/47 37/122/48 81/133/49 86/134/50
+f 52/135/51 51/136/52 56/137/53 57/138/54
+f 51/139/52 50/140/55 55/141/56 56/142/53
+f 57/143/54 56/144/53 60/136/57 61/145/58
+f 56/142/53 55/141/56 59/146/59 60/147/57
+f 62/123/60 61/145/58 66/148/61 67/124/62
+f 61/145/58 60/136/57 65/149/63 66/148/61
+f 60/147/57 59/146/59 64/150/64 65/151/63
+f 66/152/61 65/153/63 69/136/65 70/135/66
+f 65/151/63 64/150/64 68/154/67 69/155/65
+f 70/135/66 69/136/65 72/137/68 73/138/69
+f 69/155/65 68/154/67 71/156/70 72/157/68
+f 73/143/69 72/144/68 76/136/71 77/145/72
+f 72/157/68 71/156/70 75/158/73 76/159/71
+f 77/145/72 76/136/71 79/149/74 80/148/75
+f 76/159/71 75/158/73 78/160/76 79/161/74
+f 81/162/49 53/163/77 58/164/78
+f 50/140/55 63/165/79 55/141/56
+f 55/141/56 63/165/79 59/146/59
+f 59/146/59 63/165/79 64/150/64
+f 64/150/64 63/165/79 68/154/67
+f 68/154/67 63/165/79 71/156/70
+f 71/156/70 63/165/79 75/158/73
+f 75/158/73 63/165/79 78/160/76
+f 80/152/75 79/153/74 51/136/52 52/135/51
+f 79/161/74 78/160/76 50/140/55 51/139/52
+f 78/160/76 63/165/79 50/140/55
+f 53/163/77 54/166/80 58/164/78
+f 54/166/80 82/167/81 58/164/78
+f 82/167/81 83/168/82 58/164/78
+f 83/168/82 84/169/83 58/164/78
+f 84/169/83 85/170/84 58/164/78
+f 85/170/84 86/171/50 58/164/78
+f 86/171/50 81/162/49 58/164/78
+f 46/129/45 48/131/47 86/172/50 85/173/84
+f 44/126/43 46/129/45 85/173/84 84/174/83
+f 42/122/40 44/125/43 84/175/83 83/133/82
+f 41/132/85 42/122/40 83/133/82 82/134/81
+f 39/129/86 41/131/85 82/172/81 54/173/80
+f 38/126/87 39/129/86 54/173/80 53/174/77
+f 37/122/48 38/125/87 53/175/77 81/133/49
+f 93/122/40 94/123/41 96/124/42 95/125/43
+f 95/126/43 96/127/42 98/128/44 97/129/45
+f 99/132/47 100/176/46 88/123/60 87/122/48
+f 97/129/45 98/128/44 100/130/46 99/131/47
+f 99/132/47 87/122/48 131/133/49 136/134/50
+f 103/135/51 102/136/52 107/137/53 108/138/54
+f 102/139/52 101/140/55 106/141/56 107/142/53
+f 108/143/54 107/144/53 111/136/57 112/145/58
+f 107/142/53 106/141/56 110/146/59 111/147/57
+f 112/145/58 111/136/57 115/149/63 116/148/61
+f 111/147/57 110/146/59 114/150/64 115/151/63
+f 116/152/61 115/153/63 119/136/65 120/135/66
+f 115/151/63 114/150/64 118/154/67 119/155/65
+f 120/135/66 119/136/65 122/137/68 123/138/69
+f 119/155/65 118/154/67 121/156/70 122/157/68
+f 123/143/69 122/144/68 126/136/71 127/145/72
+f 122/157/68 121/156/70 125/158/73 126/159/71
+f 127/145/72 126/136/71 129/149/74 130/148/75
+f 126/159/71 125/158/73 128/160/76 129/161/74
+f 131/177/49 104/163/77 109/178/78
+f 101/140/55 113/165/79 106/141/56
+f 106/141/56 113/165/79 110/146/59
+f 110/146/59 113/165/79 114/150/64
+f 114/150/64 113/165/79 118/154/67
+f 118/154/67 113/165/79 121/156/70
+f 121/156/70 113/165/79 125/158/73
+f 125/158/73 113/165/79 128/160/76
+f 130/152/75 129/153/74 102/136/52 103/135/51
+f 129/161/74 128/160/76 101/140/55 102/139/52
+f 128/160/76 113/165/79 101/140/55
+f 104/163/77 105/179/80 109/178/78
+f 105/179/80 132/167/81 109/178/78
+f 132/167/81 133/180/82 109/178/78
+f 133/180/82 134/169/83 109/178/78
+f 134/169/83 135/181/84 109/178/78
+f 135/181/84 136/171/50 109/178/78
+f 136/171/50 131/177/49 109/178/78
+f 97/129/45 99/131/47 136/172/50 135/173/84
+f 95/126/43 97/129/45 135/173/84 134/174/83
+f 93/122/40 95/125/43 134/175/83 133/133/82
+f 92/132/85 93/122/40 133/133/82 132/134/81
+f 90/129/86 92/131/85 132/172/81 105/173/80
+f 89/126/87 90/129/86 105/173/80 104/174/77
+f 87/122/48 89/125/87 104/175/77 131/133/49
+f 36/182/88 141/118/36 138/121/30 33/183/29
+f 36/182/88 33/183/29 137/184/31 142/185/37
+f 30/186/34 31/187/34 149/188/89 150/189/89
+f 141/111/36 36/190/88 142/110/37
+f 34/120/39 35/119/35 140/191/33 139/192/32
+f 145/193/78 151/194/90 148/195/90 143/196/78
+f 138/111/30 34/190/39 139/110/32
+f 150/189/89 149/188/89 145/193/78 143/196/78
+f 151/194/90 32/192/38 29/191/38 148/195/90
+f 37/122/48 62/123/60 67/124/62 38/125/87
+f 38/126/87 67/127/62 40/128/91 39/129/86
+f 39/129/86 40/128/91 74/130/92 41/131/85
+f 41/132/85 74/176/92 43/123/41 42/122/40
+f 48/132/47 49/176/46 62/123/60 37/122/48
+f 47/128/44 52/135/51 57/138/54 49/130/46
+f 49/176/46 57/143/54 61/145/58 62/123/60
+f 67/127/62 66/152/61 70/135/66 40/128/91
+f 40/128/91 70/135/66 73/138/69 74/130/92
+f 74/176/92 73/143/69 77/145/72 43/123/41
+f 43/123/41 77/145/72 80/148/75 45/124/42
+f 45/127/42 80/152/75 52/135/51 47/128/44
+f 87/122/48 88/123/60 117/124/62 89/125/87
+f 89/126/87 117/127/62 91/128/91 90/129/86
+f 90/129/86 91/128/91 124/130/92 92/131/85
+f 92/132/85 124/176/92 94/123/41 93/122/40
+f 98/128/44 103/135/51 108/138/54 100/130/46
+f 100/176/46 108/143/54 112/145/58 88/123/60
+f 88/123/60 112/145/58 116/148/61 117/124/62
+f 117/127/62 116/152/61 120/135/66 91/128/91
+f 91/128/91 120/135/66 123/138/69 124/130/92
+f 124/176/92 123/143/69 127/145/72 94/123/41
+f 94/123/41 127/145/72 130/148/75 96/124/42
+f 96/127/42 130/152/75 103/135/51 98/128/44
+g Cube_Cube_cord
+f 222/197/93 206/198/94 208/199/95 224/200/96
+f 230/201/97 187/202/98 188/203/99 232/204/100
+f 211/205/101 172/206/102 174/207/103 237/208/104
+f 239/209/105 207/210/106 196/211/107 212/212/108
+f 232/204/100 188/203/99 189/213/109 234/214/110
+f 237/208/104 174/207/103 176/215/111 235/216/112
+f 209/217/113 193/218/114 195/219/115 227/220/116
+f 234/214/110 189/213/109 190/221/117 236/222/118
+f 235/216/112 176/215/111 178/223/119 233/224/120
+f 210/225/121 194/226/122 193/218/114 209/217/113
+f 236/222/118 190/221/117 191/227/123 238/228/124
+f 233/224/120 178/223/119 180/229/125 231/230/126
+f 212/212/108 196/211/107 198/231/127 214/232/128
+f 240/233/129 192/234/130 170/235/131 223/236/132
+f 231/230/126 180/229/125 182/237/133 229/238/134
+f 223/236/132 170/235/131 169/239/135 228/240/136
+f 238/241/124 191/242/123 192/234/130 240/233/129
+f 229/238/134 182/237/133 184/24/137 226/243/138
+f 225/244/139 186/245/140 172/206/102 211/205/101
+f 226/246/138 184/185/137 186/245/140 225/244/139
+f 213/247/141 197/248/142 194/249/122 210/250/121
+f 228/240/136 169/239/135 187/202/98 230/201/97
+f 215/251/143 199/252/144 197/248/142 213/247/141
+f 224/200/96 208/199/95 207/210/106 239/209/105
+f 217/253/145 201/254/146 199/252/144 215/251/143
+f 220/255/147 204/256/148 206/257/94 222/258/93
+f 219/259/149 203/260/150 201/254/146 217/253/145
+f 218/261/151 202/262/152 204/256/148 220/255/147
+f 221/263/153 205/264/154 203/260/150 219/259/149
+f 216/265/155 200/266/156 202/262/152 218/261/151
+f 227/220/116 195/219/115 205/264/154 221/263/153
+f 214/232/128 198/231/127 200/266/156 216/265/155
+f 175/267/157 214/232/128 216/265/155 177/268/158
+f 170/235/131 227/220/116 221/263/153 169/239/135
+f 177/268/158 216/265/155 218/261/151 179/269/159
+f 169/239/135 221/263/153 219/259/149 187/202/98
+f 179/269/159 218/261/151 220/255/147 181/270/160
+f 187/202/98 219/259/149 217/253/145 188/203/99
+f 181/270/160 220/255/147 222/258/93 183/25/161
+f 188/203/99 217/253/145 215/251/143 189/213/109
+f 185/271/162 224/200/96 239/209/105 171/272/163
+f 189/213/109 215/251/143 213/247/141 190/221/117
+f 196/211/107 228/240/136 230/201/97 198/231/127
+f 190/221/117 213/247/141 210/250/121 191/227/123
+f 194/226/122 226/246/138 225/244/139 193/218/114
+f 193/218/114 225/244/139 211/205/101 195/219/115
+f 197/248/142 229/238/134 226/243/138 194/249/122
+f 206/198/94 238/241/124 240/233/129 208/199/95
+f 207/210/106 223/236/132 228/240/136 196/211/107
+f 199/252/144 231/230/126 229/238/134 197/248/142
+f 208/199/95 240/233/129 223/236/132 207/210/106
+f 173/273/164 212/212/108 214/232/128 175/267/157
+f 201/254/146 233/224/120 231/230/126 199/252/144
+f 204/256/148 236/222/118 238/228/124 206/257/94
+f 191/242/123 210/225/121 209/217/113 192/234/130
+f 203/260/150 235/216/112 233/224/120 201/254/146
+f 202/262/152 234/214/110 236/222/118 204/256/148
+f 192/234/130 209/217/113 227/220/116 170/235/131
+f 205/264/154 237/208/104 235/216/112 203/260/150
+f 200/266/156 232/204/100 234/214/110 202/262/152
+f 171/272/163 239/209/105 212/212/108 173/273/164
+f 195/219/115 211/205/101 237/208/104 205/264/154
+f 198/231/127 230/201/97 232/204/100 200/266/156
+f 183/89/161 222/197/93 224/200/96 185/271/162
diff --git a/homedecor_modpack/homedecor/models/homedecor_toilet_closed.obj b/homedecor_modpack/homedecor/models/homedecor_toilet_closed.obj
new file mode 100644
index 0000000..49f610b
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_toilet_closed.obj
@@ -0,0 +1,1418 @@
+# Blender v2.73 (sub 0) OBJ File: 'toilet-closed.blend'
+# www.blender.org
+o Cylinder
+v -0.321018 -0.000000 -0.181555
+v -0.272146 -0.000000 -0.327658
+v -0.181842 -0.000000 -0.439480
+v -0.181842 0.024999 -0.439480
+v -0.063854 -0.000000 -0.499998
+v -0.063854 0.024999 -0.499998
+v 0.063855 -0.000000 -0.499998
+v 0.063855 0.024999 -0.499998
+v 0.181843 -0.000000 -0.439480
+v 0.181843 0.024999 -0.439480
+v 0.272148 -0.000000 -0.327658
+v 0.321020 -0.000000 -0.181556
+v 0.321020 -0.000000 -0.023415
+v 0.321020 0.024999 -0.035753
+v 0.272148 -0.000000 0.122688
+v 0.272148 0.024999 0.098697
+v 0.127875 -0.000000 0.333889
+v 0.321020 0.024999 -0.181556
+v 0.063856 -0.000000 0.444096
+v 0.272148 0.024999 -0.327658
+v -0.063854 -0.000000 0.444096
+v -0.272146 0.024999 -0.327658
+v -0.127873 -0.000000 0.333889
+v -0.321018 0.024999 -0.181555
+v -0.272146 -0.000000 0.122688
+v -0.272146 0.024999 0.098697
+v -0.321018 -0.000000 -0.023415
+v -0.321018 0.024999 -0.035753
+v -0.303375 -0.100000 -0.168763
+v -0.257189 -0.100000 -0.306836
+v -0.171848 -0.100000 -0.412513
+v -0.060344 -0.100000 -0.469704
+v 0.060346 -0.100000 -0.469704
+v 0.171849 -0.100000 -0.412513
+v 0.257190 -0.100000 -0.306836
+v 0.303376 -0.100000 -0.168764
+v 0.303376 -0.100000 -0.019315
+v 0.257190 -0.100000 0.118758
+v 0.171849 -0.100000 0.227861
+v 0.060346 -0.100000 0.285052
+v -0.060344 -0.100000 0.285052
+v -0.171848 -0.100000 0.227861
+v -0.257189 -0.100000 0.118758
+v -0.303375 -0.100000 -0.019315
+v -0.237161 -0.200000 -0.129969
+v -0.201055 -0.200000 -0.237906
+v -0.134341 -0.200000 -0.320518
+v -0.047174 -0.200000 -0.365227
+v 0.047175 -0.200000 -0.365227
+v 0.134342 -0.200000 -0.320518
+v 0.201057 -0.200000 -0.237906
+v 0.237163 -0.200000 -0.129969
+v 0.237163 -0.200000 -0.013138
+v 0.201057 -0.200000 0.094800
+v 0.134342 -0.200000 0.177412
+v 0.047175 -0.200000 0.222121
+v -0.047174 -0.200000 0.222121
+v -0.134341 -0.200000 0.177412
+v -0.201056 -0.200000 0.094800
+v -0.237161 -0.200000 -0.013138
+v -0.173092 -0.300000 -0.079687
+v -0.146740 -0.300000 -0.158465
+v -0.098048 -0.300000 -0.218759
+v -0.034429 -0.300000 -0.251390
+v 0.034431 -0.300000 -0.251390
+v 0.098050 -0.300000 -0.218759
+v 0.146742 -0.300000 -0.158465
+v 0.173093 -0.300000 -0.079687
+v 0.173093 -0.300000 0.005582
+v 0.146742 -0.300000 0.084360
+v 0.098050 -0.300000 0.144654
+v 0.034431 -0.300000 0.177286
+v -0.034429 -0.300000 0.177286
+v -0.098048 -0.300000 0.144654
+v -0.146740 -0.300000 0.084360
+v -0.173092 -0.300000 0.005582
+v -0.245585 -0.400000 -0.129593
+v -0.208197 -0.400000 -0.241364
+v -0.139113 -0.400000 -0.326911
+v -0.048849 -0.400000 -0.373208
+v 0.048851 -0.400000 -0.373208
+v 0.139114 -0.400000 -0.326911
+v 0.208199 -0.400000 -0.241364
+v 0.245587 -0.400000 -0.129593
+v 0.245587 -0.400000 -0.008612
+v 0.208199 -0.400000 0.103160
+v 0.139114 -0.400000 0.188706
+v 0.048851 -0.400000 0.235003
+v -0.048849 -0.400000 0.235003
+v -0.139113 -0.400000 0.188706
+v -0.208197 -0.400000 0.103160
+v -0.245585 -0.400000 -0.008612
+v -0.266574 -0.450000 -0.145577
+v -0.225990 -0.450000 -0.266901
+v -0.151001 -0.450000 -0.359758
+v -0.053024 -0.450000 -0.410012
+v 0.053026 -0.450000 -0.410012
+v 0.151003 -0.450000 -0.359758
+v 0.225992 -0.450000 -0.266901
+v 0.266575 -0.450000 -0.145577
+v 0.266575 -0.450000 -0.014258
+v 0.225992 -0.450000 0.107066
+v 0.151003 -0.450000 0.199924
+v 0.053026 -0.450000 0.250178
+v -0.053024 -0.450000 0.250178
+v -0.151002 -0.450000 0.199924
+v -0.225990 -0.450000 0.107066
+v -0.266574 -0.450000 -0.014258
+v -0.266574 -0.500000 -0.145577
+v -0.225990 -0.500000 -0.266901
+v -0.151001 -0.500000 -0.359758
+v -0.053024 -0.500000 -0.410012
+v 0.053026 -0.500000 -0.410012
+v 0.151003 -0.500000 -0.359758
+v 0.225992 -0.500000 -0.266901
+v 0.266575 -0.500000 -0.145577
+v 0.266575 -0.500000 -0.014258
+v 0.225992 -0.500000 0.107066
+v 0.151003 -0.500000 0.199924
+v 0.053026 -0.500000 0.250178
+v -0.053024 -0.500000 0.250178
+v -0.151002 -0.500000 0.199924
+v -0.225990 -0.500000 0.107066
+v -0.266574 -0.500000 -0.014258
+v 0.170551 -0.250000 -0.079061
+v 0.170551 -0.250000 0.004956
+v 0.096610 -0.250000 -0.216090
+v 0.144586 -0.250000 -0.156682
+v -0.033924 -0.250000 -0.248242
+v 0.033925 -0.250000 -0.248242
+v -0.144585 -0.250000 0.082577
+v -0.170549 -0.250000 0.004956
+v -0.144585 -0.250000 -0.156682
+v -0.096608 -0.250000 -0.216090
+v -0.033924 -0.250000 0.174137
+v -0.096608 -0.250000 0.141985
+v 0.096610 -0.250000 0.141986
+v 0.033925 -0.250000 0.174137
+v 0.144586 -0.250000 0.082577
+v -0.170549 -0.250000 -0.079061
+v 0.367834 0.024999 0.493786
+v -0.367833 0.024999 0.493787
+v -0.367833 0.024999 0.245340
+v 0.367834 0.024999 0.245340
+v 0.367834 0.512499 0.493786
+v -0.367833 0.512499 0.493787
+v -0.367833 0.512499 0.245340
+v 0.367834 0.512499 0.245340
+v -0.313895 0.049983 -0.187885
+v -0.299576 0.074827 -0.181859
+v -0.266107 0.049992 -0.327500
+v -0.253968 0.074836 -0.316862
+v -0.177807 0.049999 -0.434357
+v -0.169696 0.074843 -0.420189
+v -0.062437 0.050003 -0.492188
+v -0.059589 0.074846 -0.476110
+v 0.062439 0.050003 -0.492188
+v 0.059590 0.074846 -0.476110
+v 0.177808 0.049999 -0.434357
+v 0.169697 0.074842 -0.420189
+v 0.266109 0.049992 -0.327500
+v 0.253970 0.074836 -0.316863
+v 0.313896 0.049983 -0.187885
+v 0.299578 0.074827 -0.181859
+v 0.313896 0.049973 -0.036767
+v 0.299577 0.074818 -0.035732
+v 0.266109 0.049964 0.090299
+v 0.253970 0.074809 0.086721
+v 0.177808 0.049958 0.176613
+v 0.169697 0.074803 0.170184
+v 0.062439 0.049957 0.214437
+v 0.059590 0.074802 0.207173
+v -0.062437 0.049957 0.214437
+v -0.059589 0.074802 0.207173
+v -0.177807 0.049959 0.176613
+v -0.169696 0.074803 0.170184
+v -0.266107 0.049964 0.090299
+v -0.253968 0.074809 0.086721
+v -0.313895 0.049973 -0.036767
+v -0.299576 0.074818 -0.035733
+v 0.171156 0.024999 0.185936
+v 0.063856 0.024999 0.218871
+v -0.063854 0.024999 0.218871
+v -0.171155 0.024999 0.185936
+v -0.321018 0.049999 -0.181555
+v -0.272146 0.049999 -0.327658
+v -0.181842 0.049999 -0.439480
+v -0.063854 0.049999 -0.499998
+v 0.063855 0.049999 -0.499998
+v 0.181843 0.049999 -0.439480
+v 0.272148 0.049999 -0.327658
+v 0.321020 0.049999 -0.181556
+v 0.321020 0.049999 -0.035753
+v 0.272148 0.049999 0.098697
+v 0.171156 0.049999 0.185936
+v 0.063856 0.049999 0.218871
+v -0.063854 0.049999 0.218871
+v -0.171155 0.049999 0.185936
+v -0.272146 0.049999 0.098697
+v -0.321018 0.049999 -0.035753
+v -0.204840 0.049999 -0.155618
+v -0.173655 0.049999 -0.260383
+v -0.116033 0.049999 -0.340566
+v -0.040747 0.049999 -0.383961
+v 0.040743 0.049999 -0.383961
+v 0.116030 0.049999 -0.340566
+v 0.173652 0.049999 -0.260383
+v 0.204837 0.049999 -0.155619
+v 0.204837 0.049999 -0.054561
+v 0.173652 0.049999 0.031876
+v 0.110232 0.049999 0.089370
+v 0.040743 0.049999 0.111339
+v -0.040747 0.049999 0.111339
+v -0.110616 0.049999 0.089746
+v -0.173656 0.049999 0.031876
+v -0.204840 0.049999 -0.054561
+v 0.000001 -0.500000 -0.079917
+v 0.000001 0.074823 -0.124447
+v 0.321020 0.024999 -0.023415
+v 0.272148 0.024999 0.122688
+v 0.127875 0.024999 0.333889
+v 0.063856 0.024999 0.444096
+v -0.063854 0.024999 0.444096
+v -0.127873 0.024999 0.333889
+v -0.272146 0.024999 0.122688
+v -0.321018 0.024999 -0.023415
+v 0.375000 0.515624 0.499998
+v -0.374999 0.515624 0.499998
+v -0.374999 0.515624 0.239129
+v 0.375000 0.515624 0.239129
+v 0.375000 0.562499 0.499998
+v -0.374999 0.562499 0.499998
+v -0.374999 0.562499 0.239129
+v 0.375000 0.562499 0.239129
+v -0.102187 0.064420 0.210876
+v 0.102189 0.064420 0.210876
+v -0.102187 0.050781 0.203001
+v 0.102189 0.050781 0.203001
+v -0.102187 0.037143 0.210876
+v 0.102189 0.037142 0.210876
+v 0.102189 0.037142 0.226624
+v 0.102189 0.050781 0.234499
+v -0.102187 0.064420 0.226624
+v 0.102189 0.064420 0.226624
+v -0.078746 0.023276 0.222272
+v -0.078746 0.037144 0.222272
+v -0.102187 0.050781 0.234499
+v -0.102184 0.037144 0.222272
+v -0.078746 0.023276 0.242272
+v -0.078750 0.050781 0.234499
+v -0.102184 0.023276 0.242272
+v -0.078750 0.037142 0.226624
+v 0.102192 0.023276 0.242272
+v 0.078755 0.037144 0.222272
+v 0.102192 0.037144 0.222272
+v 0.102192 0.023276 0.222272
+v 0.102192 0.052255 0.233562
+v 0.078755 0.023276 0.242272
+v 0.078751 0.050781 0.234499
+v 0.078751 0.037142 0.226624
+v 0.355293 0.489365 0.229707
+v 0.355293 0.489365 0.245317
+v 0.311337 0.473655 0.245317
+v 0.311337 0.473655 0.229707
+v 0.331786 0.459843 0.245317
+v 0.331786 0.459843 0.229707
+v 0.353972 0.470647 0.245317
+v 0.353972 0.470647 0.229707
+v 0.401033 0.498507 0.245317
+v 0.401033 0.498507 0.229707
+v 0.335259 0.509074 0.245317
+v 0.335259 0.509074 0.229707
+v 0.313073 0.498270 0.245317
+v 0.313073 0.498270 0.229707
+v 0.390808 0.505413 0.245317
+v 0.390808 0.505413 0.229707
+v 0.397872 0.490455 0.245317
+v 0.397872 0.490455 0.229707
+v 0.333523 0.484458 0.229707
+v 0.187309 -0.500000 0.343750
+v 0.236274 -0.066406 0.343750
+v 0.194173 -0.500000 0.331862
+v 0.243137 -0.066406 0.331862
+v 0.207900 -0.500000 0.331862
+v 0.256864 -0.066406 0.331862
+v 0.214763 -0.500000 0.343750
+v 0.263728 -0.066406 0.343750
+v 0.207900 -0.500000 0.355638
+v 0.256864 -0.066406 0.355638
+v 0.194173 -0.500000 0.355638
+v 0.243137 -0.066406 0.355638
+v 0.237914 -0.062500 0.364685
+v 0.262088 -0.062500 0.364685
+v 0.274175 -0.062500 0.343750
+v 0.262088 -0.062500 0.322815
+v 0.237914 -0.062500 0.322815
+v 0.225827 -0.062500 0.343750
+v 0.236274 -0.136407 0.343750
+v 0.194173 -0.363593 0.331862
+v 0.207900 -0.363593 0.331862
+v 0.214763 -0.363593 0.343750
+v 0.207900 -0.363593 0.355638
+v 0.194173 -0.363593 0.355638
+v 0.187309 -0.363593 0.343750
+v 0.243137 -0.136407 0.331862
+v 0.256864 -0.136407 0.331862
+v 0.263728 -0.136407 0.343750
+v 0.256864 -0.136407 0.355638
+v 0.243137 -0.136407 0.355638
+v 0.237914 -0.035156 0.364685
+v 0.262088 -0.035156 0.364685
+v 0.274175 -0.035156 0.343750
+v 0.262088 -0.035156 0.322815
+v 0.237914 -0.035156 0.322815
+v 0.225827 -0.035156 0.343750
+v 0.243137 -0.031250 0.355638
+v 0.256864 -0.031250 0.355638
+v 0.263728 -0.031250 0.343750
+v 0.256864 -0.031250 0.331862
+v 0.243137 -0.031250 0.331862
+v 0.236274 -0.031250 0.343750
+v 0.243137 0.027344 0.355638
+v 0.256864 0.027344 0.355638
+v 0.263728 0.027344 0.343750
+v 0.256864 0.027344 0.331862
+v 0.243137 0.027344 0.331862
+v 0.236274 0.027344 0.343750
+v 0.221312 -0.043862 0.322814
+v 0.221312 -0.043862 0.316182
+v 0.233313 -0.058455 0.322814
+v 0.233312 -0.058455 0.316182
+v 0.255088 -0.067408 0.322814
+v 0.255088 -0.067408 0.316182
+v 0.273882 -0.065477 0.322813
+v 0.273882 -0.065477 0.316182
+v 0.278686 -0.053792 0.322813
+v 0.278686 -0.053792 0.316182
+v 0.266686 -0.039199 0.322813
+v 0.266686 -0.039199 0.316182
+v 0.244911 -0.030246 0.322814
+v 0.244911 -0.030246 0.316182
+v 0.226117 -0.032177 0.322814
+v 0.226117 -0.032177 0.316182
+v 0.078755 0.023276 0.222272
+v -0.102187 0.037142 0.226624
+v -0.102184 0.023276 0.222272
+vt 0.059782 0.588807
+vt 0.014347 0.454314
+vt 0.312793 0.397118
+vt 0.125000 0.875000
+vt 0.125000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.875000
+vt 0.875000 0.937500
+vt 0.875000 0.875000
+vt 0.812500 0.937500
+vt 0.812500 0.875000
+vt 0.750000 0.937500
+vt 0.750000 0.875000
+vt 0.687500 0.937500
+vt 0.687500 0.875000
+vt 0.625000 0.937500
+vt 0.625000 0.875000
+vt 0.562500 0.937500
+vt 0.562500 0.875000
+vt 0.500000 0.937500
+vt 0.500000 0.875000
+vt 0.437500 0.937500
+vt 0.437500 0.875000
+vt 0.375000 0.937500
+vt 0.375000 0.875000
+vt 0.312500 0.937500
+vt 0.312500 0.875000
+vt 0.250000 0.937500
+vt 0.250000 0.875000
+vt 0.187500 0.875000
+vt 0.187500 0.937500
+vt 0.014347 0.308739
+vt 0.059782 0.186747
+vt 0.143736 0.103599
+vt 0.253428 0.066750
+vt 0.372157 0.066750
+vt 0.481849 0.103599
+vt 0.565803 0.186747
+vt 0.611238 0.308738
+vt 0.611238 0.454314
+vt 0.565803 0.588807
+vt 0.481849 0.691744
+vt 0.372157 0.747454
+vt 0.253428 0.747454
+vt 0.143737 0.691744
+vt 0.562500 0.687500
+vt 0.562500 0.750000
+vt 0.500000 0.750000
+vt 0.500000 0.687500
+vt 0.437500 0.750000
+vt 0.437500 0.687500
+vt 0.375000 0.750000
+vt 0.375000 0.687500
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.625000 0.687500
+vt 0.625000 0.750000
+vt 0.687500 0.687500
+vt 0.687500 0.750000
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.125000 0.687500
+vt 0.125000 0.750000
+vt 0.062500 0.687500
+vt 0.062500 0.750000
+vt -0.000000 0.687500
+vt -0.000000 0.750000
+vt 0.937500 0.687500
+vt 1.000000 0.687500
+vt 1.000000 0.750000
+vt 0.937500 0.750000
+vt 0.437500 0.562500
+vt 0.500000 0.562500
+vt 0.312500 0.562500
+vt 0.250000 0.562500
+vt 0.250000 0.437500
+vt 0.312500 0.437500
+vt 0.812500 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.562500
+vt 0.812500 0.562500
+vt 0.062500 0.562500
+vt 0.125000 0.562500
+vt 0.562500 0.562500
+vt 0.625000 0.562500
+vt 0.875000 0.687500
+vt 0.875000 0.562500
+vt 0.937500 0.562500
+vt 0.375000 0.562500
+vt 0.687500 0.562500
+vt 0.187500 0.562500
+vt -0.000000 0.562500
+vt 1.000000 0.562500
+vt 0.250000 0.312500
+vt 0.187500 0.312500
+vt 0.187500 0.250000
+vt 0.250000 0.250000
+vt 0.375000 0.437500
+vt 0.437500 0.437500
+vt 0.687500 0.437500
+vt 0.750000 0.437500
+vt 0.500000 0.437500
+vt 0.562500 0.437500
+vt 0.812500 0.437500
+vt 0.875000 0.437500
+vt 0.625000 0.437500
+vt 0.937500 0.437500
+vt 1.000000 0.437500
+vt 0.062500 0.437500
+vt 0.125000 0.437500
+vt 0.187500 0.437500
+vt -0.000000 0.437500
+vt 0.125000 0.250000
+vt 0.125000 0.125000
+vt 0.187500 0.125000
+vt 0.375000 0.312500
+vt 0.312500 0.312500
+vt 0.312500 0.250000
+vt 0.375000 0.250000
+vt 0.500000 0.312500
+vt 0.437500 0.312500
+vt 0.437500 0.250000
+vt 0.500000 0.250000
+vt 0.812500 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.250000
+vt 0.812500 0.250000
+vt 0.625000 0.312500
+vt 0.562500 0.312500
+vt 0.562500 0.250000
+vt 0.625000 0.250000
+vt 0.937500 0.312500
+vt 0.875000 0.312500
+vt 0.875000 0.250000
+vt 0.937500 0.250000
+vt 0.062500 0.312500
+vt -0.000000 0.312500
+vt -0.000000 0.250000
+vt 0.062500 0.250000
+vt 0.125000 0.312500
+vt 0.687500 0.312500
+vt 0.687500 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.250000
+vt 0.062500 0.125000
+vt 0.062500 0.062500
+vt 0.125000 0.062500
+vt 0.250000 0.125000
+vt 0.312500 0.125000
+vt 0.375000 0.125000
+vt 0.437500 0.125000
+vt 0.687500 0.125000
+vt 0.750000 0.125000
+vt 0.500000 0.125000
+vt 0.562500 0.125000
+vt 0.812500 0.125000
+vt 0.875000 0.125000
+vt 0.625000 0.125000
+vt 0.937500 0.125000
+vt 1.000000 0.125000
+vt -0.000000 0.125000
+vt -0.000000 0.062500
+vt -0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.187500 0.062500
+vt 0.250000 0.062500
+vt 0.312500 0.062500
+vt 0.375000 0.062500
+vt 0.437500 0.062500
+vt 0.500000 0.062500
+vt 0.750000 0.062500
+vt 0.812500 0.062500
+vt 0.562500 0.062500
+vt 0.625000 0.062500
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vt 0.687500 0.062500
+vt 1.000000 0.062500
+vt 0.125000 -0.000000
+vt 0.187500 -0.000000
+vt 0.250000 -0.000000
+vt 0.312500 -0.000000
+vt 0.375000 -0.000000
+vt 0.437500 -0.000000
+vt 0.687500 -0.000000
+vt 0.750000 -0.000000
+vt 0.500000 -0.000000
+vt 0.562500 -0.000000
+vt 0.812500 -0.000000
+vt 0.875000 -0.000000
+vt 0.625000 -0.000000
+vt 0.937500 -0.000000
+vt 1.000000 -0.000000
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.562500 1.000000
+vt 0.223189 0.563136
+vt 0.255826 0.456806
+vt 0.351520 0.517180
+vt 0.329749 0.586040
+vt 0.935561 0.689691
+vt 0.875589 0.806613
+vt 0.777570 0.741399
+vt 0.820572 0.666793
+vt 0.342277 0.896101
+vt 0.255826 0.796022
+vt 0.351147 0.736031
+vt 0.408493 0.798501
+vt 0.764778 0.356727
+vt 0.875589 0.446215
+vt 0.777570 0.511434
+vt 0.698111 0.454333
+vt 0.342277 0.356727
+vt 0.475512 0.308296
+vt 0.494149 0.423430
+vt 0.408493 0.454333
+vt 0.223189 0.689691
+vt 0.329749 0.666793
+vt 0.935561 0.563136
+vt 0.820572 0.586040
+vt 0.475512 0.944531
+vt 0.494149 0.829403
+vt 0.619995 0.308296
+vt 0.594294 0.423430
+vt 0.764778 0.896101
+vt 0.698111 0.798501
+vt 0.619996 0.944531
+vt 0.594294 0.829403
+vt 0.125000 1.000000
+vt 0.062500 1.000000
+vt 0.812500 1.000000
+vt 0.750000 1.000000
+vt 0.875000 1.000000
+vt 0.375000 1.000000
+vt 0.875000 0.750000
+vt 0.812500 0.750000
+vt 0.750000 0.750000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.687500 1.000000
+vt 0.625000 1.000000
+vt 0.312500 1.000000
+vt -0.000000 1.000000
+vt 0.250000 1.000000
+vt 0.453342 0.043359
+vt 0.574716 0.083960
+vt 0.387654 0.310044
+vt 0.667611 0.158980
+vt 0.717886 0.256998
+vt 0.717886 0.363091
+vt 0.667611 0.461110
+vt 0.574716 0.536129
+vt 0.453342 0.576730
+vt 0.321968 0.576730
+vt 0.200593 0.536129
+vt 0.107697 0.461110
+vt 0.057422 0.363091
+vt 0.057422 0.256998
+vt 0.107697 0.158980
+vt 0.200593 0.083960
+vt 0.321968 0.043359
+vt 0.187500 1.000000
+vt 0.318503 0.356727
+vt 0.463285 0.308296
+vt 0.318503 0.896101
+vt 0.463285 0.944531
+vt 0.109212 0.753132
+vt 0.109211 0.499696
+vt 0.000000 0.689691
+vt 0.000000 0.563136
+vt 0.867691 0.950020
+vt 0.132309 0.950020
+vt 0.132309 0.462709
+vt 0.867691 0.462709
+vt 0.993758 0.949668
+vt 0.744084 0.949668
+vt 0.744084 0.459759
+vt 0.993758 0.459759
+vt 0.255957 0.949745
+vt 0.006243 0.949745
+vt 0.006243 0.459759
+vt 0.255957 0.459759
+vt 0.262199 0.952886
+vt 0.000000 0.952886
+vt 0.262199 1.000000
+vt 0.874875 0.953140
+vt 0.125125 0.953140
+vt 1.000000 0.952808
+vt 0.737842 0.952808
+vt 0.874875 1.000000
+vt 0.125125 1.000000
+vt 1.000000 0.999915
+vt 0.737842 0.999915
+vt 0.937500 0.500000
+vt 1.000000 0.500000
+vt 0.625000 0.500000
+vt 0.687500 0.500000
+vt 0.187500 0.625000
+vt 0.312500 0.625000
+vt 0.875000 0.500000
+vt 0.449880 0.582547
+vt 0.436269 0.535953
+vt 0.498817 0.535953
+vt 0.485399 0.798245
+vt 0.460887 0.843860
+vt 0.436689 0.751867
+vt 0.436269 0.582552
+vt 0.515652 0.798245
+vt 0.564363 0.751867
+vt 0.540164 0.843860
+vt 0.502105 0.751867
+vt 0.502105 0.798250
+vt -0.000000 0.812500
+vt 0.062500 0.812500
+vt -0.000000 0.375000
+vt 0.062500 0.375000
+vt -0.000000 0.625000
+vt 0.062500 0.625000
+vt 0.187631 0.949175
+vt 0.126452 0.944859
+vt 0.160779 0.894034
+vt 0.153304 1.000000
+vt 0.092124 0.995684
+vt 0.065272 0.940543
+vt 0.114257 0.890752
+vt 0.074372 0.802482
+vt 0.111548 0.784925
+vt 0.091536 0.777070
+vt 0.144697 0.883474
+vt 0.127533 0.858062
+vt 0.164709 0.875618
+vt 0.167419 0.769792
+vt 0.118434 0.720001
+vt 0.375000 0.375000
+vt 0.250000 0.375000
+vt 0.250000 0.187500
+vt 0.187500 0.187500
+vt 0.375000 0.187500
+vt 0.940392 0.000000
+vt 1.000000 0.034414
+vt 1.000000 0.103243
+vt 0.940392 0.137658
+vt 0.880785 0.103243
+vt 0.880785 0.034414
+vt 0.187500 0.375000
+vt 0.625000 0.375000
+vt 0.500000 0.375000
+vt 0.625000 0.187500
+vt 0.500000 0.187500
+vt 0.125000 0.375000
+vt 0.125000 0.187500
+vt 0.062500 0.187500
+vt 0.000000 0.187500
+vt 0.937500 0.812500
+vt 1.000000 0.812500
+vt 0.937500 0.375000
+vt 1.000000 0.375000
+vt 0.935922 0.934263
+vt 0.900247 0.999981
+vt 0.850245 0.999739
+vt 0.815207 0.933679
+vt 0.815658 0.840497
+vt 0.851333 0.774780
+vt 0.901335 0.775021
+vt 0.936373 0.841082
+vt 0.900026 1.000000
+vt 0.935702 0.934282
+vt 0.936153 0.841101
+vt 0.901115 0.775041
+vt 0.851113 0.774799
+vt 0.815438 0.840517
+vt 0.814987 0.933698
+vt 0.850024 0.999758
+vt 0.600451 0.582951
+vt 0.625078 0.628780
+vt 0.600451 0.674608
+vt 0.551199 0.674608
+vt 0.526572 0.628780
+vt 0.551199 0.582951
+vt 0.250000 0.625000
+vt 0.474506 0.628376
+vt 0.502261 0.536357
+vt 0.564809 0.536357
+vt 0.564809 0.582956
+vt 0.498947 0.751867
+vt 0.498947 0.798250
+vt 0.750000 0.500000
+vt 0.812500 0.500000
+vt 0.400627 0.674204
+vt 0.376001 0.628376
+vt 0.400627 0.582547
+vt 0.449880 0.674204
+vn -0.460200 0.852400 -0.248000
+vn -0.523300 0.848400 -0.079200
+vn 0.000000 1.000000 0.000100
+vn -0.842900 0.516800 -0.150000
+vn -0.733100 0.534700 -0.420300
+vn -0.331200 0.852600 -0.404100
+vn -0.516300 0.545900 -0.659800
+vn -0.123800 0.851600 -0.509300
+vn -0.189000 0.552600 -0.811700
+vn 0.123800 0.851600 -0.509300
+vn 0.189000 0.552600 -0.811700
+vn 0.331200 0.852600 -0.404100
+vn 0.516300 0.545900 -0.659800
+vn 0.460200 0.852400 -0.248000
+vn 0.733100 0.534700 -0.420300
+vn 0.523300 0.848400 -0.079200
+vn 0.842900 0.516800 -0.150000
+vn 0.538000 0.836200 0.106200
+vn 0.861400 0.486900 0.144600
+vn 0.480800 0.813700 0.326400
+vn 0.761400 0.438200 0.477700
+vn 0.310100 0.787200 0.533000
+vn 0.498500 0.366500 0.785600
+vn 0.095800 0.778000 0.620900
+vn 0.157500 0.301700 0.940300
+vn -0.095800 0.778000 0.620900
+vn -0.157500 0.301700 0.940300
+vn -0.310100 0.787200 0.533000
+vn -0.498500 0.366500 0.785600
+vn -0.480800 0.813700 0.326400
+vn -0.761400 0.438200 0.477700
+vn -0.861400 0.486900 0.144600
+vn -0.538000 0.836200 0.106200
+vn -0.621300 -0.130700 -0.772600
+vn -0.630900 0.000000 -0.775900
+vn -0.234800 0.000000 -0.972100
+vn -0.230000 -0.143400 -0.962500
+vn 0.234800 0.000000 -0.972100
+vn 0.230000 -0.143400 -0.962500
+vn 0.630900 0.000000 -0.775900
+vn 0.621300 -0.130700 -0.772600
+vn 0.877100 0.000000 -0.480400
+vn 0.868700 -0.112500 -0.482300
+vn -0.868700 -0.112500 -0.482300
+vn -0.877100 0.000000 -0.480400
+vn -0.981700 -0.095500 -0.164600
+vn -0.987000 0.000000 -0.160700
+vn 0.981700 -0.095500 -0.164600
+vn 0.987000 0.000000 -0.160700
+vn 0.984200 -0.082400 0.156900
+vn 0.730400 0.672600 0.118900
+vn 0.890400 -0.088200 0.446500
+vn 0.658800 0.677300 0.327300
+vn 0.763500 -0.282400 0.580800
+vn 0.590900 0.715400 0.372800
+vn 0.400800 -0.408100 0.820200
+vn 0.395200 0.610200 0.686600
+vn -0.400800 -0.408100 0.820200
+vn -0.395200 0.610200 0.686600
+vn 0.201800 -0.507400 -0.837700
+vn -0.201800 -0.507400 -0.837700
+vn 0.788700 -0.433800 -0.435500
+vn 0.908700 -0.389100 -0.151000
+vn 0.696300 -0.708800 -0.112300
+vn 0.575900 -0.756300 -0.310300
+vn -0.890400 -0.088200 0.446500
+vn -0.984200 -0.082400 0.156900
+vn -0.923200 -0.354300 0.148500
+vn -0.829900 -0.349800 0.434600
+vn 0.652300 -0.428900 0.624900
+vn 0.829900 -0.349800 0.434600
+vn -0.552500 -0.478300 -0.682500
+vn -0.788700 -0.433800 -0.435500
+vn -0.763500 -0.282400 0.580800
+vn -0.652300 -0.428900 0.624900
+vn -0.260300 -0.671100 0.694100
+vn 0.552500 -0.478300 -0.682500
+vn -0.908700 -0.389100 -0.151000
+vn 0.923200 -0.354300 0.148500
+vn 0.260300 -0.671100 0.694100
+vn 0.878400 -0.461000 -0.126000
+vn 0.891000 -0.424900 0.159600
+vn 0.930000 0.329900 0.162100
+vn 0.922400 0.361300 -0.136400
+vn 0.385400 -0.797500 -0.464200
+vn 0.136700 -0.822100 -0.552600
+vn -0.696300 -0.708800 -0.112300
+vn -0.738100 -0.664200 0.118100
+vn -0.136700 -0.822100 -0.552600
+vn -0.385400 -0.797500 -0.464200
+vn -0.682600 -0.632100 0.366700
+vn -0.501000 -0.619600 0.604300
+vn -0.575900 -0.756300 -0.310300
+vn -0.186600 -0.618900 0.763000
+vn 0.186600 -0.618900 0.763000
+vn 0.501000 -0.619600 0.604300
+vn 0.682600 -0.632100 0.366700
+vn 0.738100 -0.664200 0.118100
+vn 0.830200 0.311300 0.462400
+vn 0.791700 0.429200 0.434800
+vn 0.872400 0.467300 0.143100
+vn 0.542000 -0.540100 -0.643800
+vn 0.767000 -0.501500 -0.400300
+vn 0.809800 0.403200 -0.426200
+vn 0.574200 0.448700 -0.684700
+vn -0.199300 -0.565900 -0.800000
+vn 0.199300 -0.565900 -0.800000
+vn 0.211300 0.481500 -0.850600
+vn -0.211300 0.481500 -0.850600
+vn -0.800000 -0.397200 0.449700
+vn -0.891000 -0.424900 0.159600
+vn -0.930000 0.329900 0.162100
+vn -0.830200 0.311300 0.462400
+vn -0.767000 -0.501500 -0.400300
+vn -0.542000 -0.540100 -0.643800
+vn -0.574200 0.448700 -0.684700
+vn -0.809800 0.403200 -0.426200
+vn -0.216500 -0.374000 0.901800
+vn -0.579500 -0.380400 0.720800
+vn -0.598400 0.305000 0.740800
+vn -0.222800 0.306000 0.925600
+vn 0.579500 -0.380400 0.720800
+vn 0.216500 -0.374000 0.901800
+vn 0.222800 0.306000 0.925600
+vn 0.598400 0.305000 0.740800
+vn 0.800000 -0.397200 0.449700
+vn -0.878400 -0.461000 -0.126000
+vn -0.922400 0.361300 -0.136400
+vn 0.574800 0.408700 0.708800
+vn 0.625300 0.153100 0.765200
+vn 0.867400 0.164800 0.469500
+vn 0.842700 0.521000 -0.135500
+vn 0.713900 0.583300 -0.387400
+vn 0.487100 0.641800 -0.592300
+vn 0.174600 0.678600 -0.713400
+vn -0.842700 0.521000 -0.135500
+vn -0.872400 0.467300 0.143100
+vn -0.174600 0.678600 -0.713400
+vn -0.487100 0.641800 -0.592300
+vn -0.791700 0.429200 0.434800
+vn -0.574800 0.408700 0.708800
+vn -0.713900 0.583300 -0.387400
+vn -0.214400 0.402100 0.890100
+vn 0.214400 0.402100 0.890100
+vn 0.232700 0.148500 0.961100
+vn 0.176800 -0.657900 0.732000
+vn 0.472100 -0.663300 0.580600
+vn 0.971100 0.185200 0.150600
+vn 0.962600 0.213700 -0.166500
+vn 0.844500 0.247300 -0.474900
+vn 0.598400 0.279100 -0.751000
+vn 0.220200 0.298900 -0.928500
+vn -0.220200 0.298900 -0.928500
+vn -0.971100 0.185200 0.150600
+vn -0.867400 0.164800 0.469500
+vn -0.598400 0.279100 -0.751000
+vn -0.844500 0.247300 -0.474900
+vn -0.625300 0.153100 0.765200
+vn -0.232700 0.148500 0.961100
+vn -0.962600 0.213700 -0.166500
+vn 0.651700 -0.669300 0.356900
+vn 0.730300 -0.672700 0.118900
+vn 0.730300 -0.672700 -0.118900
+vn 0.651700 -0.669300 -0.356900
+vn 0.472100 -0.663300 -0.580600
+vn 0.176800 -0.657900 -0.732000
+vn -0.730300 -0.672700 -0.118900
+vn -0.730300 -0.672700 0.118900
+vn -0.176800 -0.657900 -0.732000
+vn -0.472100 -0.663300 -0.580600
+vn -0.651700 -0.669300 0.356900
+vn -0.472100 -0.663300 0.580600
+vn -0.651700 -0.669300 -0.356900
+vn -0.176800 -0.657900 0.732000
+vn -0.148400 0.000000 0.988900
+vn 0.148400 0.000000 0.988900
+vn 0.109400 0.675200 0.729500
+vn -0.109400 0.675200 0.729500
+vn 0.483900 0.000000 0.875100
+vn 0.362000 0.663600 0.654700
+vn 0.000000 1.000000 -0.000000
+vn -0.176800 0.657900 -0.732000
+vn -0.472100 0.663300 -0.580600
+vn -0.622500 0.654500 0.429100
+vn -0.362000 0.663600 0.654700
+vn 0.651700 0.669300 -0.356900
+vn 0.472100 0.663300 -0.580600
+vn 0.622500 0.654500 0.429100
+vn 0.731000 0.670100 0.128700
+vn 0.176800 0.657900 -0.732000
+vn -0.731000 0.670100 0.128700
+vn 0.730300 0.672700 -0.118900
+vn -0.651700 0.669300 -0.356900
+vn -0.730300 0.672700 -0.118900
+vn -0.483900 0.000000 0.875100
+vn -0.590900 0.715400 0.372800
+vn -0.658800 0.677300 0.327300
+vn -0.730400 0.672600 0.118900
+vn 0.823400 0.000000 0.567500
+vn 0.984800 0.000000 0.173400
+vn -0.823400 0.000000 0.567500
+vn -0.984800 0.000000 0.173400
+vn 0.000000 -1.000000 0.000000
+vn 0.000100 1.000000 0.000000
+vn 0.000200 1.000000 0.000100
+vn -0.000100 1.000000 0.000000
+vn -0.000200 1.000000 0.000100
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.577300 -0.577300 0.577300
+vn 0.577300 -0.577300 0.577300
+vn -0.707100 0.000000 -0.707100
+vn -0.577300 -0.577300 -0.577300
+vn 0.707100 0.000000 -0.707100
+vn 0.577300 -0.577300 -0.577300
+vn 0.203700 -0.948600 0.242200
+vn 0.203700 -0.948600 -0.242200
+vn 0.620100 -0.485900 -0.615900
+vn 0.620100 -0.485900 0.615900
+vn 0.577300 0.577300 -0.577300
+vn 0.577300 0.577300 0.577300
+vn -0.203700 -0.948600 -0.242200
+vn -0.620100 -0.485900 -0.615900
+vn -0.203700 -0.948600 0.242200
+vn -0.620100 -0.485900 0.615900
+vn -0.577300 0.577300 -0.577300
+vn -0.577300 0.577300 0.577300
+vn -0.610000 0.686200 -0.396200
+vn 0.610000 0.686200 -0.396200
+vn 0.610000 0.000000 -0.792400
+vn -0.610000 0.000000 -0.792400
+vn 0.610000 -0.686200 -0.396200
+vn -0.610000 -0.686200 -0.396200
+vn 0.453400 0.242500 0.857700
+vn -0.453400 0.242400 0.857700
+vn -0.636200 0.209700 0.742500
+vn 0.636300 0.209900 0.742400
+vn -0.610000 0.686200 0.396200
+vn 0.610000 0.686200 0.396200
+vn -1.000000 -0.000100 -0.000200
+vn -0.707100 -0.000100 -0.707200
+vn 1.000000 0.000100 0.000200
+vn 0.707200 0.000100 -0.707100
+vn -0.706800 0.000000 -0.707400
+vn 0.707300 0.000000 -0.706900
+vn -0.706800 0.000000 -0.707500
+vn 0.828700 -0.559700 0.000000
+vn 0.656600 -0.443500 -0.610000
+vn 0.310900 -0.325100 -0.893100
+vn 0.487300 -0.509600 0.709100
+vn -0.899100 -0.437800 -0.000000
+vn -0.712400 -0.346900 -0.610000
+vn -0.055800 -0.790400 -0.610000
+vn -0.070400 -0.997500 0.000000
+vn 0.771100 0.239700 0.589800
+vn 0.771100 0.239700 -0.589800
+vn 0.245400 0.716700 -0.652800
+vn 0.245400 0.716700 0.652800
+vn 0.458500 -0.654300 0.601300
+vn 0.458500 -0.654300 -0.601300
+vn -0.145600 0.742600 -0.653600
+vn -0.187400 0.955400 0.228100
+vn -0.828700 0.559700 -0.000000
+vn -0.656600 0.443500 -0.610000
+vn 0.000000 0.000000 -1.000000
+vn -0.994000 0.109700 0.000000
+vn -0.738000 -0.674700 0.000000
+vn -0.369000 -0.674700 -0.639100
+vn -0.472300 0.048700 -0.880100
+vn 0.369000 -0.674700 -0.639100
+vn 0.522400 -0.057600 -0.850700
+vn 0.738000 -0.674700 0.000000
+vn 0.994700 -0.102500 0.000000
+vn 0.369000 -0.674700 0.639100
+vn 0.522400 -0.057600 0.850700
+vn -0.369000 -0.674700 0.639100
+vn -0.433600 -0.497900 0.751000
+vn -0.867200 -0.497900 0.000000
+vn -0.472300 0.048700 0.880100
+vn -0.792400 -0.610000 0.000000
+vn -0.396200 -0.610000 -0.686200
+vn 0.396200 -0.610000 -0.686200
+vn 0.792400 -0.610000 0.000000
+vn 0.396200 -0.610000 0.686200
+vn -0.396200 -0.610000 0.686200
+vn -0.433600 0.497900 -0.751000
+vn -0.867200 0.497900 0.000000
+vn -0.738000 0.674700 0.000000
+vn -0.369000 0.674700 -0.639100
+vn -0.433600 -0.497900 -0.751000
+vn 0.433600 -0.497900 -0.751000
+vn 0.867200 -0.497900 0.000000
+vn 0.433600 -0.497900 0.751000
+vn -0.994700 0.102500 0.000000
+vn -0.522400 0.057600 -0.850700
+vn 0.472300 -0.048700 -0.880100
+vn 0.994000 -0.109700 0.000000
+vn 0.472300 -0.048700 0.880100
+vn -0.522400 0.057600 0.850700
+vn 0.433600 0.497900 -0.751000
+vn 0.867200 0.497900 0.000000
+vn 0.433600 0.497900 0.751000
+vn -0.433600 0.497900 0.751000
+vn -1.000000 0.000000 0.000000
+vn -0.500000 0.000000 -0.866000
+vn 0.369000 0.674700 -0.639100
+vn 0.738000 0.674700 0.000000
+vn 0.369000 0.674700 0.639100
+vn -0.369000 0.674700 0.639100
+vn 0.500000 0.000000 -0.866000
+vn 1.000000 0.000000 -0.000000
+vn 0.500000 0.000000 0.866000
+vn -0.500000 0.000000 0.866000
+vn -0.785300 -0.117900 0.607700
+vn -0.785300 -0.117900 -0.607700
+vn -0.448400 -0.606900 -0.656100
+vn -0.448400 -0.606900 0.656100
+vn -0.108200 -0.746800 -0.656100
+vn -0.108200 -0.746800 0.656100
+vn 0.475200 -0.636200 -0.607700
+vn 0.475200 -0.636200 0.607700
+vn 0.785300 0.117900 -0.607700
+vn 0.785300 0.117900 0.607700
+vn 0.448400 0.606900 -0.656100
+vn 0.448400 0.606900 0.656100
+vn 0.108200 0.746800 -0.656100
+vn 0.108200 0.746800 0.656100
+vn -0.475200 0.636200 -0.607700
+vn -0.475200 0.636200 0.607700
+vn 0.610000 -0.000000 0.792400
+vn 0.610000 -0.686200 0.396200
+vn -0.610000 -0.686200 0.396200
+vn -0.610000 -0.000000 0.792400
+g Cylinder_Cylinder_lid
+s 1
+f 152/1/1 150/2/2 218/3/3
+f 149/4/4 150/5/2 152/6/1 151/7/5
+f 151/7/5 152/6/1 154/8/6 153/9/7
+f 153/10/7 154/11/6 156/12/8 155/13/9
+f 155/13/9 156/12/8 158/14/10 157/15/11
+f 157/15/11 158/14/10 160/16/12 159/17/13
+f 159/17/13 160/16/12 162/18/14 161/19/15
+f 161/19/15 162/18/14 164/20/16 163/21/17
+f 163/21/17 164/20/16 166/22/18 165/23/19
+f 165/23/19 166/22/18 168/24/20 167/25/21
+f 167/25/21 168/24/20 170/26/22 169/27/23
+f 169/27/23 170/26/22 172/28/24 171/29/25
+f 171/29/25 172/28/24 174/30/26 173/31/27
+f 173/31/27 174/30/26 176/32/28 175/33/29
+f 175/33/29 176/32/28 178/34/30 177/35/31
+f 179/36/32 180/37/33 150/5/2 149/4/4
+f 177/35/31 178/34/30 180/37/33 179/36/32
+f 150/2/2 180/38/33 218/3/3
+f 180/38/33 178/39/30 218/3/3
+f 178/39/30 176/40/28 218/3/3
+f 176/40/28 174/41/26 218/3/3
+f 174/41/26 172/42/24 218/3/3
+f 172/42/24 170/43/22 218/3/3
+f 170/43/22 168/44/20 218/3/3
+f 168/44/20 166/45/18 218/3/3
+f 166/45/18 164/46/16 218/3/3
+f 164/46/16 162/47/14 218/3/3
+f 162/47/14 160/48/12 218/3/3
+f 160/48/12 158/49/10 218/3/3
+f 158/49/10 156/50/8 218/3/3
+f 156/50/8 154/51/6 218/3/3
+f 154/51/6 152/1/1 218/3/3
+g Cylinder_Cylinder_bowl
+f 3/52/34 4/53/35 6/54/36 5/55/37
+f 5/55/37 6/54/36 8/56/38 7/57/39
+f 7/57/39 8/56/38 10/58/40 9/59/41
+f 9/59/41 10/58/40 20/60/42 11/61/43
+f 2/62/44 22/63/45 4/53/35 3/52/34
+f 2/62/44 1/64/46 24/65/47 22/63/45
+f 12/66/48 11/61/43 20/60/42 18/67/49
+f 13/68/50 12/66/48 18/67/49 219/69/51
+f 15/70/52 13/68/50 219/69/51 220/71/53
+f 17/72/54 15/70/52 220/71/53 221/73/55
+f 19/74/56 17/72/54 221/73/55 222/75/57
+f 21/76/58 19/77/56 222/78/57 223/79/59
+f 5/55/37 7/57/39 33/80/60 32/81/61
+f 35/82/62 36/83/63 52/84/64 51/85/65
+f 25/86/66 27/87/67 44/88/68 43/89/69
+f 11/61/43 12/66/48 36/83/63 35/82/62
+f 15/70/52 17/72/54 39/90/70 38/91/71
+f 2/62/44 3/52/34 31/92/72 30/93/73
+f 21/76/58 23/94/74 42/95/75 41/96/76
+f 7/57/39 9/59/41 34/97/77 33/80/60
+f 27/87/67 1/64/46 29/98/78 44/88/68
+f 1/64/46 2/62/44 30/93/73 29/98/78
+f 12/66/48 13/68/50 37/99/79 36/83/63
+f 17/72/54 19/74/56 40/100/80 39/90/70
+f 3/52/34 5/55/37 32/81/61 31/92/72
+f 23/94/74 25/86/66 43/89/69 42/95/75
+f 9/59/41 11/61/43 35/82/62 34/97/77
+f 13/68/50 15/70/52 38/91/71 37/99/79
+f 19/77/56 21/76/58 41/96/76 40/101/80
+f 125/102/81 126/103/82 69/104/83 68/105/84
+f 33/80/60 34/97/77 50/106/85 49/107/86
+f 44/88/68 29/98/78 45/108/87 60/109/88
+f 31/92/72 32/81/61 48/110/89 47/111/90
+f 42/95/75 43/89/69 59/112/91 58/113/92
+f 29/98/78 30/93/73 46/114/93 45/108/87
+f 40/101/80 41/96/76 57/115/94 56/116/95
+f 38/91/71 39/90/70 55/117/96 54/118/97
+f 36/83/63 37/99/79 53/119/98 52/84/64
+f 34/97/77 35/82/62 51/85/65 50/106/85
+f 32/81/61 33/80/60 49/107/86 48/110/89
+f 43/89/69 44/88/68 60/109/88 59/112/91
+f 30/93/73 31/92/72 47/111/90 46/114/93
+f 41/96/76 42/95/75 58/113/92 57/115/94
+f 39/90/70 40/100/80 56/120/95 55/117/96
+f 37/99/79 38/91/71 54/118/97 53/119/98
+f 69/104/83 70/121/99 86/122/100 85/123/101
+f 127/124/102 128/125/103 67/126/104 66/127/105
+f 129/128/106 130/129/107 65/130/108 64/131/109
+f 131/132/110 132/133/111 76/134/112 75/135/113
+f 133/136/114 134/137/115 63/138/116 62/139/117
+f 135/140/118 136/141/119 74/142/120 73/143/121
+f 137/144/122 138/145/123 72/146/124 71/147/125
+f 126/103/82 139/148/126 70/121/99 69/104/83
+f 128/125/103 125/102/81 68/105/84 67/126/104
+f 130/129/107 127/124/102 66/127/105 65/130/108
+f 132/133/111 140/149/127 61/150/128 76/134/112
+f 134/137/115 129/128/106 64/131/109 63/138/116
+f 136/141/119 131/132/110 75/135/113 74/142/120
+f 140/149/127 133/136/114 62/139/117 61/150/128
+f 138/151/123 135/140/118 73/143/121 72/152/124
+f 139/148/126 137/144/122 71/147/125 70/121/99
+f 86/122/100 87/153/129 103/154/130 102/155/131
+f 67/126/104 68/105/84 84/156/132 83/157/133
+f 65/130/108 66/127/105 82/158/134 81/159/135
+f 76/134/112 61/150/128 77/160/136 92/161/137
+f 63/138/116 64/131/109 80/162/138 79/163/139
+f 74/142/120 75/135/113 91/164/140 90/165/141
+f 61/150/128 62/139/117 78/166/142 77/160/136
+f 72/152/124 73/143/121 89/167/143 88/168/144
+f 70/121/99 71/147/125 87/153/129 86/122/100
+f 68/105/84 69/104/83 85/123/101 84/156/132
+f 66/127/105 67/126/104 83/157/133 82/158/134
+f 64/131/109 65/130/108 81/159/135 80/162/138
+f 75/135/113 76/134/112 92/161/137 91/164/140
+f 62/139/117 63/138/116 79/163/139 78/166/142
+f 73/143/121 74/142/120 90/165/141 89/167/143
+f 71/147/125 72/146/124 88/169/144 87/153/129
+f 103/154/130 104/170/145 120/171/146 119/172/147
+f 84/156/132 85/123/101 101/173/148 100/174/149
+f 82/158/134 83/157/133 99/175/150 98/176/151
+f 80/162/138 81/159/135 97/177/152 96/178/153
+f 91/164/140 92/161/137 108/179/154 107/180/155
+f 78/166/142 79/163/139 95/181/156 94/182/157
+f 89/167/143 90/165/141 106/183/158 105/184/159
+f 87/153/129 88/169/144 104/170/145 103/154/130
+f 85/123/101 86/122/100 102/155/131 101/173/148
+f 83/157/133 84/156/132 100/174/149 99/175/150
+f 81/159/135 82/158/134 98/176/151 97/177/152
+f 92/161/137 77/160/136 93/185/160 108/179/154
+f 79/163/139 80/162/138 96/178/153 95/181/156
+f 90/165/141 91/164/140 107/180/155 106/183/158
+f 77/160/136 78/166/142 94/182/157 93/185/160
+f 88/168/144 89/167/143 105/184/159 104/186/145
+f 101/173/148 102/155/131 118/187/161 117/188/162
+f 99/175/150 100/174/149 116/189/163 115/190/164
+f 97/177/152 98/176/151 114/191/165 113/192/166
+f 108/179/154 93/185/160 109/193/167 124/194/168
+f 95/181/156 96/178/153 112/195/169 111/196/170
+f 106/183/158 107/180/155 123/197/171 122/198/172
+f 93/185/160 94/182/157 110/199/173 109/193/167
+f 104/186/145 105/184/159 121/200/174 120/201/146
+f 102/155/131 103/154/130 119/172/147 118/187/161
+f 100/174/149 101/173/148 117/188/162 116/189/163
+f 98/176/151 99/175/150 115/190/164 114/191/165
+f 96/178/153 97/177/152 113/192/166 112/195/169
+f 107/180/155 108/179/154 124/194/168 123/197/171
+f 94/182/157 95/181/156 111/196/170 110/199/173
+f 105/184/159 106/183/158 122/198/172 121/200/174
+f 54/118/97 55/117/96 137/144/122 139/148/126
+f 56/116/95 57/115/94 135/140/118 138/151/123
+f 45/108/87 46/114/93 133/136/114 140/149/127
+f 58/113/92 59/112/91 131/132/110 136/141/119
+f 47/111/90 48/110/89 129/128/106 134/137/115
+f 60/109/88 45/108/87 140/149/127 132/133/111
+f 49/107/86 50/106/85 127/124/102 130/129/107
+f 51/85/65 52/84/64 125/102/81 128/125/103
+f 53/119/98 54/118/97 139/148/126 126/103/82
+f 55/117/96 56/120/95 138/145/123 137/144/122
+f 57/115/94 58/113/92 136/141/119 135/140/118
+f 46/114/93 47/111/90 134/137/115 133/136/114
+f 59/112/91 60/109/88 132/133/111 131/132/110
+f 48/110/89 49/107/86 130/129/107 129/128/106
+f 50/106/85 51/85/65 128/125/103 127/124/102
+f 52/84/64 53/119/98 126/103/82 125/102/81
+f 183/28/175 182/26/176 196/202/177 197/203/178
+f 182/26/176 181/24/179 195/204/180 196/202/177
+f 196/205/177 195/206/180 211/207/181 212/208/181
+f 188/209/182 187/210/183 203/211/181 204/212/181
+f 199/213/184 198/214/185 214/215/181 215/216/181
+f 191/217/186 190/218/187 206/219/181 207/220/181
+f 194/221/188 193/222/189 209/223/181 210/224/181
+f 197/225/178 196/205/177 212/208/181 213/226/181
+f 189/227/190 188/209/182 204/212/181 205/228/181
+f 200/229/191 199/213/184 215/216/181 216/230/181
+f 192/231/192 191/217/186 207/220/181 208/232/181
+f 195/206/180 194/221/188 210/224/181 211/207/181
+f 187/210/183 186/233/193 202/234/181 203/211/181
+f 198/214/185 197/225/178 213/226/181 214/215/181
+f 190/218/187 189/227/190 205/228/181 206/219/181
+f 185/235/194 200/229/191 216/230/181 201/236/181
+f 186/233/193 185/235/194 201/236/181 202/234/181
+f 193/222/189 192/231/192 208/232/181 209/223/181
+f 4/6/35 22/5/45 186/237/193 187/238/183
+f 18/18/49 20/16/42 191/239/186 192/240/192
+f 20/16/42 10/14/40 190/241/187 191/239/186
+f 184/30/195 183/28/175 197/203/178 198/242/185
+f 23/94/74 21/76/58 223/79/59 224/243/196
+f 25/86/66 23/94/74 224/243/196 225/244/197
+f 27/87/67 25/86/66 225/244/197 226/245/198
+f 1/64/46 27/87/67 226/245/198 24/65/47
+f 8/12/38 6/11/36 188/246/182 189/247/190
+f 16/22/199 14/20/200 193/248/189 194/249/188
+f 26/32/201 184/30/195 198/242/185 199/250/184
+f 6/8/36 4/6/35 187/238/183 188/251/182
+f 28/34/202 26/32/201 199/250/184 200/252/191
+f 181/24/179 16/22/199 194/249/188 195/204/180
+f 10/14/40 8/12/38 189/247/190 190/241/187
+f 109/253/167 110/254/173 217/255/203
+f 110/254/173 111/256/170 217/255/203
+f 111/256/170 112/257/169 217/255/203
+f 112/257/169 113/258/166 217/255/203
+f 113/258/166 114/259/165 217/255/203
+f 114/259/165 115/260/164 217/255/203
+f 115/260/164 116/261/163 217/255/203
+f 116/261/163 117/262/162 217/255/203
+f 117/262/162 118/263/161 217/255/203
+f 118/263/161 119/264/147 217/255/203
+f 119/264/147 120/265/146 217/255/203
+f 120/265/146 121/266/174 217/255/203
+f 121/266/174 122/267/172 217/255/203
+f 122/267/172 123/268/171 217/255/203
+f 123/268/171 124/269/168 217/255/203
+f 124/269/168 109/253/167 217/255/203
+f 24/37/47 28/34/202 200/252/191 185/270/194
+f 22/5/45 24/37/47 185/270/194 186/237/193
+f 14/20/200 18/18/49 192/240/192 193/248/189
+f 16/221/204 220/271/53 219/272/51 14/222/205
+f 225/273/197 26/213/206 28/229/207 226/274/198
+f 26/213/206 225/273/197 184/214/181
+f 16/221/204 181/206/181 220/271/53
+f 225/273/197 224/275/196 184/214/181
+f 220/271/53 181/206/181 221/276/55
+f 181/206/181 182/205/181 221/276/55
+f 184/214/181 224/275/196 183/225/181
+f 224/275/196 223/277/59 183/225/181
+f 221/276/55 182/205/181 222/278/57
+f 222/278/57 182/205/181 183/225/181 223/277/59
+g Cylinder_Cylinder_tank
+f 145/279/208 146/280/209 142/281/210 141/282/211
+f 146/283/209 147/284/212 143/285/213 142/286/210
+f 147/279/212 148/280/214 144/281/215 143/282/213
+f 148/287/214 145/288/208 141/289/211 144/290/215
+f 141/142/211 142/121/210 143/187/213 144/198/215
+f 145/288/216 148/287/217 230/291/218 227/292/219
+f 227/292/219 230/291/218 234/293/220 231/251/221
+f 148/280/217 147/279/222 229/294/223 230/295/218
+f 147/284/222 146/283/224 228/296/225 229/297/223
+f 146/280/224 145/279/216 227/294/219 228/295/225
+f 234/187/220 233/198/226 232/142/227 231/121/221
+f 230/295/218 229/294/223 233/298/226 234/299/220
+f 229/297/223 228/296/225 232/300/227 233/301/226
+f 228/295/225 227/294/219 231/298/221 232/299/227
+g Cylinder_Cylinder_metal-parts
+f 235/302/228 236/200/229 238/201/230 237/303/231
+f 237/304/231 238/199/230 240/193/232 239/305/233
+f 242/69/234 259/306/235 258/307/236 253/60/237
+f 243/308/238 244/198/239 236/200/229 235/302/228
+f 345/309/240 346/310/241 251/311/236
+f 252/312/242 250/313/234 249/314/237
+f 245/82/243 346/85/241 248/84/244 246/83/245
+f 346/310/241 345/309/240 248/315/244
+f 250/99/234 247/119/235 251/85/236 249/82/237
+f 260/316/240 258/317/236 259/318/235
+f 344/319/241 260/316/240 254/320/246
+f 267/321/247 268/322/248 261/7/249 262/9/250
+f 263/74/251 264/72/252 266/73/253 265/75/254
+f 269/323/255 270/324/256 276/117/257 275/120/258
+f 265/75/254 266/73/253 268/322/248 267/321/247
+f 277/145/259 278/144/260 270/324/256 269/323/255
+f 275/120/258 276/117/257 272/90/261 271/100/262
+f 273/325/263 274/326/264 264/72/252 263/74/251
+f 271/100/262 272/90/261 274/326/264 273/325/263
+f 262/9/250 261/7/249 278/238/260 277/251/259
+f 266/327/253 279/328/265 268/329/248
+f 264/330/252 279/328/265 266/327/253
+f 274/331/264 279/328/265 264/330/252
+f 274/331/264 272/332/261 279/328/265
+f 268/329/248 279/328/265 261/333/249
+f 279/328/265 272/332/261 261/333/249
+f 276/334/257 261/333/249 272/332/261
+f 261/333/249 276/334/257 278/335/260
+f 276/334/257 270/336/256 278/335/260
+f 269/337/255 275/338/258 277/339/259
+f 277/339/259 275/338/258 262/340/250
+f 275/338/258 271/341/262 262/340/250
+f 298/158/266 281/156/267 283/174/268 305/176/269
+f 305/176/269 283/174/268 285/189/270 306/191/271
+f 306/342/271 285/343/270 287/102/272 307/124/273
+f 307/124/273 287/102/272 289/105/274 308/127/275
+f 281/156/267 291/344/276 292/345/277 297/123/278
+f 309/346/279 291/344/276 281/156/267 298/158/266
+f 308/127/275 289/105/274 291/344/276 309/346/279
+f 280/347/280 282/348/281 284/349/282 286/350/283 288/351/284 290/352/285
+f 314/155/286 315/122/287 321/153/288 320/154/289
+f 283/174/268 281/156/267 297/123/278 296/173/290
+f 285/189/270 283/174/268 296/173/290 295/188/291
+f 287/102/272 285/343/270 295/353/291 294/103/292
+f 289/105/274 287/102/272 294/103/292 293/104/293
+f 291/344/276 289/105/274 293/104/293 292/345/277
+f 280/166/280 304/162/294 299/178/295 282/182/281
+f 282/182/281 299/178/295 300/195/296 284/199/282
+f 284/354/282 300/355/296 301/128/297 286/136/283
+f 286/136/283 301/128/297 302/131/298 288/139/284
+f 290/356/285 303/357/299 304/162/294 280/166/280
+f 288/139/284 302/131/298 303/357/299 290/356/285
+f 303/357/299 309/346/279 298/158/266 304/162/294
+f 301/128/297 307/124/273 308/127/275 302/131/298
+f 300/355/296 306/342/271 307/124/273 301/128/297
+f 299/178/295 305/176/269 306/191/271 300/195/296
+f 304/162/294 298/158/266 305/176/269 299/178/295
+f 296/173/290 297/123/278 315/122/287 314/155/286
+f 302/131/298 308/127/275 309/346/279 303/357/299
+f 295/188/291 296/173/290 314/155/286 313/187/300
+f 294/103/292 295/353/291 313/358/300 312/148/301
+f 293/104/293 294/103/292 312/148/301 311/121/302
+f 292/345/277 293/104/293 311/121/302 310/359/303
+f 297/123/278 292/345/277 310/359/303 315/122/287
+f 320/154/289 321/153/288 327/169/304 326/170/305
+f 313/187/300 314/155/286 320/154/289 319/172/306
+f 312/148/301 313/358/300 319/324/306 318/144/307
+f 311/121/302 312/148/301 318/144/307 317/147/308
+f 310/359/303 311/121/302 317/147/308 316/360/309
+f 315/122/287 310/359/303 316/360/309 321/153/288
+f 319/172/306 320/154/289 326/170/305 325/171/310
+f 318/144/307 319/324/306 325/323/310 324/145/311
+f 317/147/308 318/144/307 324/145/311 323/146/312
+f 316/360/309 317/147/308 323/146/312 322/361/313
+f 321/153/288 316/360/309 322/361/313 327/169/304
+f 328/362/314 329/363/315 331/10/316 330/13/317
+f 330/13/317 331/10/316 333/246/318 332/247/319
+f 332/364/319 333/365/318 335/116/320 334/115/321
+f 334/115/321 335/116/320 337/303/322 336/302/323
+f 336/302/323 337/303/322 339/101/324 338/96/325
+f 338/96/325 339/101/324 341/77/326 340/76/327
+f 331/366/316 329/367/315 343/368/328 341/369/326 339/370/324 337/371/322 335/372/320 333/373/318
+f 342/79/329 343/78/328 329/363/315 328/362/314
+f 340/76/327 341/77/326 343/78/328 342/79/329
+f 328/374/314 330/375/317 332/376/319 334/377/321 336/378/323 338/379/325 340/380/327 342/381/329
+f 240/382/232 238/383/230 236/384/229 244/385/239 242/386/330 241/387/331
+f 260/316/240 344/319/241 258/317/236
+f 256/60/243 344/307/241 254/388/246 255/67/245
+f 345/309/240 251/311/236 247/389/235
+f 241/387/242 242/386/234 253/390/237
+f 256/391/243 255/392/245 241/387/242
+f 241/387/242 253/390/237 256/391/243
+f 245/393/243 246/394/245 252/312/242
+f 252/312/242 249/314/237 245/393/243
+f 239/305/233 240/193/232 241/194/331 345/395/332
+f 345/395/332 241/194/331 242/197/330 247/396/333
+f 247/396/333 242/197/330 244/198/239 243/308/238
+f 235/397/228 237/398/231 239/399/233 345/309/332 247/389/333 243/400/238
diff --git a/homedecor_modpack/homedecor/models/homedecor_toilet_open.obj b/homedecor_modpack/homedecor/models/homedecor_toilet_open.obj
new file mode 100644
index 0000000..ec99db9
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_toilet_open.obj
@@ -0,0 +1,1755 @@
+# Blender v2.73 (sub 0) OBJ File: 'toilet.blend'
+# www.blender.org
+o Cylinder
+v -0.321018 -0.000000 -0.181555
+v -0.272146 -0.000000 -0.327658
+v -0.181842 -0.000000 -0.439480
+v -0.181842 0.024999 -0.439480
+v -0.063854 -0.000000 -0.499998
+v -0.063854 0.024999 -0.499998
+v 0.063855 -0.000000 -0.499998
+v 0.063855 0.024999 -0.499998
+v 0.181843 -0.000000 -0.439480
+v 0.181843 0.024999 -0.439480
+v 0.272148 -0.000000 -0.327658
+v 0.321020 -0.000000 -0.181556
+v 0.321020 -0.000000 -0.023415
+v 0.321020 0.024999 -0.035753
+v 0.272148 -0.000000 0.122688
+v 0.272148 0.024999 0.098697
+v 0.127875 -0.000000 0.333889
+v 0.321020 0.024999 -0.181556
+v 0.063856 -0.000000 0.444096
+v 0.272148 0.024999 -0.327658
+v -0.063854 -0.000000 0.444096
+v -0.272146 0.024999 -0.327658
+v -0.127873 -0.000000 0.333889
+v -0.321018 0.024999 -0.181555
+v -0.272146 -0.000000 0.122688
+v -0.272146 0.024999 0.098697
+v -0.321018 -0.000000 -0.023415
+v -0.321018 0.024999 -0.035753
+v -0.303375 -0.100000 -0.168763
+v -0.257189 -0.100000 -0.306836
+v -0.171848 -0.100000 -0.412513
+v -0.060344 -0.100000 -0.469704
+v 0.060346 -0.100000 -0.469704
+v 0.171849 -0.100000 -0.412513
+v 0.257190 -0.100000 -0.306836
+v 0.303376 -0.100000 -0.168764
+v 0.303376 -0.100000 -0.019315
+v 0.257190 -0.100000 0.118758
+v 0.171849 -0.100000 0.227861
+v 0.060346 -0.100000 0.285052
+v -0.060344 -0.100000 0.285052
+v -0.171848 -0.100000 0.227861
+v -0.257189 -0.100000 0.118758
+v -0.303375 -0.100000 -0.019315
+v -0.237161 -0.200000 -0.129969
+v -0.201055 -0.200000 -0.237906
+v -0.134341 -0.200000 -0.320518
+v -0.047174 -0.200000 -0.365227
+v 0.047175 -0.200000 -0.365227
+v 0.134342 -0.200000 -0.320518
+v 0.201057 -0.200000 -0.237906
+v 0.237163 -0.200000 -0.129969
+v 0.237163 -0.200000 -0.013138
+v 0.201057 -0.200000 0.094800
+v 0.134342 -0.200000 0.177412
+v 0.047175 -0.200000 0.222121
+v -0.047174 -0.200000 0.222121
+v -0.134341 -0.200000 0.177412
+v -0.201056 -0.200000 0.094800
+v -0.237161 -0.200000 -0.013138
+v -0.173092 -0.300000 -0.079687
+v -0.146740 -0.300000 -0.158465
+v -0.098048 -0.300000 -0.218759
+v -0.034429 -0.300000 -0.251390
+v 0.034431 -0.300000 -0.251390
+v 0.098050 -0.300000 -0.218759
+v 0.146742 -0.300000 -0.158465
+v 0.173093 -0.300000 -0.079687
+v 0.173093 -0.300000 0.005582
+v 0.146742 -0.300000 0.084360
+v 0.098050 -0.300000 0.144654
+v 0.034431 -0.300000 0.177286
+v -0.034429 -0.300000 0.177286
+v -0.098048 -0.300000 0.144654
+v -0.146740 -0.300000 0.084360
+v -0.173092 -0.300000 0.005582
+v -0.245585 -0.400000 -0.129593
+v -0.208197 -0.400000 -0.241364
+v -0.139113 -0.400000 -0.326911
+v -0.048849 -0.400000 -0.373208
+v 0.048851 -0.400000 -0.373208
+v 0.139114 -0.400000 -0.326911
+v 0.208199 -0.400000 -0.241364
+v 0.245587 -0.400000 -0.129593
+v 0.245587 -0.400000 -0.008612
+v 0.208199 -0.400000 0.103160
+v 0.139114 -0.400000 0.188706
+v 0.048851 -0.400000 0.235003
+v -0.048849 -0.400000 0.235003
+v -0.139113 -0.400000 0.188706
+v -0.208197 -0.400000 0.103160
+v -0.245585 -0.400000 -0.008612
+v -0.266574 -0.450000 -0.145577
+v -0.225990 -0.450000 -0.266901
+v -0.151001 -0.450000 -0.359758
+v -0.053024 -0.450000 -0.410012
+v 0.053026 -0.450000 -0.410012
+v 0.151003 -0.450000 -0.359758
+v 0.225992 -0.450000 -0.266901
+v 0.266575 -0.450000 -0.145577
+v 0.266575 -0.450000 -0.014258
+v 0.225992 -0.450000 0.107066
+v 0.151003 -0.450000 0.199924
+v 0.053026 -0.450000 0.250178
+v -0.053024 -0.450000 0.250178
+v -0.151002 -0.450000 0.199924
+v -0.225990 -0.450000 0.107066
+v -0.266574 -0.450000 -0.014258
+v -0.266574 -0.500000 -0.145577
+v -0.225990 -0.500000 -0.266901
+v -0.151001 -0.500000 -0.359758
+v -0.053024 -0.500000 -0.410012
+v 0.053026 -0.500000 -0.410012
+v 0.151003 -0.500000 -0.359758
+v 0.225992 -0.500000 -0.266901
+v 0.266575 -0.500000 -0.145577
+v 0.266575 -0.500000 -0.014258
+v 0.225992 -0.500000 0.107066
+v 0.151003 -0.500000 0.199924
+v 0.053026 -0.500000 0.250178
+v -0.053024 -0.500000 0.250178
+v -0.151002 -0.500000 0.199924
+v -0.225990 -0.500000 0.107066
+v -0.266574 -0.500000 -0.014258
+v 0.170551 -0.250000 -0.079061
+v 0.170551 -0.250000 0.004956
+v 0.096610 -0.250000 -0.216090
+v 0.144586 -0.250000 -0.156682
+v -0.033924 -0.250000 -0.248242
+v 0.033925 -0.250000 -0.248242
+v -0.144585 -0.250000 0.082577
+v -0.170549 -0.250000 0.004956
+v -0.144585 -0.250000 -0.156682
+v -0.096608 -0.250000 -0.216090
+v -0.033924 -0.250000 0.174137
+v -0.096608 -0.250000 0.141985
+v 0.096610 -0.250000 0.141986
+v 0.033925 -0.250000 0.174137
+v 0.144586 -0.250000 0.082577
+v -0.170549 -0.250000 -0.079061
+v 0.367834 0.024999 0.493786
+v -0.367833 0.024999 0.493787
+v -0.367833 0.024999 0.245340
+v 0.367834 0.024999 0.245340
+v 0.367834 0.512499 0.493786
+v -0.367833 0.512499 0.493787
+v -0.367833 0.512499 0.245340
+v 0.367834 0.512499 0.245340
+v -0.313895 0.457397 0.214669
+v -0.299576 0.451571 0.239561
+v -0.266107 0.597007 0.213551
+v -0.253968 0.586570 0.238480
+v -0.177807 0.703861 0.212695
+v -0.169696 0.689894 0.237652
+v -0.062437 0.761690 0.212232
+v -0.059589 0.745813 0.237204
+v 0.062439 0.761690 0.212232
+v 0.059590 0.745813 0.237204
+v 0.177808 0.703861 0.212695
+v 0.169697 0.689894 0.237652
+v 0.266109 0.597008 0.213551
+v 0.253970 0.586571 0.238480
+v 0.313896 0.457397 0.214669
+v 0.299578 0.451571 0.239561
+v 0.313896 0.306283 0.215879
+v 0.299577 0.305449 0.240731
+v 0.266109 0.179222 0.216896
+v 0.253970 0.183000 0.241711
+v 0.177808 0.092910 0.217587
+v 0.169697 0.099539 0.242379
+v 0.062439 0.055088 0.217891
+v 0.059590 0.062552 0.242676
+v -0.062437 0.055088 0.217891
+v -0.059589 0.062552 0.242676
+v -0.177807 0.092910 0.217587
+v -0.169696 0.099539 0.242379
+v -0.266107 0.179222 0.216896
+v -0.253968 0.183000 0.241711
+v -0.313895 0.306283 0.215879
+v -0.299576 0.305450 0.240731
+v 0.171156 0.024999 0.185936
+v 0.063856 0.024999 0.218871
+v -0.063854 0.024999 0.218871
+v -0.171155 0.024999 0.185936
+v -0.204840 0.024999 -0.155618
+v -0.173655 0.024999 -0.260383
+v -0.116033 0.024999 -0.340566
+v -0.040747 0.024999 -0.383961
+v 0.040743 0.024999 -0.383961
+v 0.116030 0.024999 -0.340566
+v 0.173652 0.024999 -0.260383
+v 0.204837 0.024999 -0.155619
+v 0.204837 0.024999 -0.054561
+v 0.173652 0.024999 0.031876
+v 0.110232 0.024999 0.089370
+v 0.040743 0.024999 0.111339
+v -0.040747 0.024999 0.111339
+v -0.110616 0.024999 0.089746
+v -0.173656 0.024999 0.031876
+v -0.204840 0.024999 -0.054561
+v -0.321018 0.049999 -0.181555
+v -0.272146 0.049999 -0.327658
+v -0.181842 0.049999 -0.439480
+v -0.063854 0.049999 -0.499998
+v 0.063855 0.049999 -0.499998
+v 0.181843 0.049999 -0.439480
+v 0.272148 0.049999 -0.327658
+v 0.321020 0.049999 -0.181556
+v 0.321020 0.049999 -0.035753
+v 0.272148 0.049999 0.098697
+v 0.171156 0.049999 0.185936
+v 0.063856 0.049999 0.218871
+v -0.063854 0.049999 0.218871
+v -0.171155 0.049999 0.185936
+v -0.272146 0.049999 0.098697
+v -0.321018 0.049999 -0.035753
+v -0.204840 0.049999 -0.155618
+v -0.173655 0.049999 -0.260383
+v -0.116033 0.049999 -0.340566
+v -0.040747 0.049999 -0.383961
+v 0.040743 0.049999 -0.383961
+v 0.116030 0.049999 -0.340566
+v 0.173652 0.049999 -0.260383
+v 0.204837 0.049999 -0.155619
+v 0.204837 0.049999 -0.054561
+v 0.173652 0.049999 0.031876
+v 0.110232 0.049999 0.089370
+v 0.040743 0.049999 0.111339
+v -0.040747 0.049999 0.111339
+v -0.110616 0.049999 0.089746
+v -0.173656 0.049999 0.031876
+v -0.204840 0.049999 -0.054561
+v -0.294266 0.001529 -0.176183
+v -0.294266 0.025000 -0.176183
+v -0.249467 0.001529 -0.313352
+v -0.249467 0.025000 -0.313352
+v -0.166688 0.001529 -0.418336
+v -0.166688 0.025000 -0.418336
+v -0.058533 0.001529 -0.475154
+v -0.058533 0.025000 -0.475154
+v 0.058534 0.001529 -0.475154
+v 0.058534 0.025000 -0.475154
+v 0.166690 0.001529 -0.418336
+v 0.166690 0.025000 -0.418336
+v 0.249468 0.001529 -0.313352
+v 0.249468 0.025000 -0.313352
+v 0.294268 0.001529 -0.176184
+v 0.294268 0.025000 -0.176184
+v 0.294268 0.001529 -0.027713
+v 0.294268 0.025000 -0.027713
+v 0.249468 0.001529 0.109455
+v 0.249468 0.025000 0.109455
+v 0.159409 0.001529 0.233177
+v 0.058534 0.001529 0.274477
+v -0.058533 0.001529 0.274477
+v -0.158176 0.001529 0.233177
+v -0.249467 0.001529 0.109455
+v -0.249467 0.025000 0.109455
+v -0.294266 0.001529 -0.027713
+v -0.294266 0.025000 -0.027713
+v -0.278093 -0.092356 -0.164174
+v -0.235756 -0.092356 -0.293804
+v -0.157527 -0.092356 -0.393018
+v -0.055316 -0.092356 -0.446712
+v 0.055317 -0.092356 -0.446712
+v 0.157528 -0.092356 -0.393018
+v 0.235757 -0.092356 -0.293804
+v 0.278095 -0.092356 -0.164174
+v 0.278095 -0.092356 -0.023864
+v 0.235758 -0.092356 0.105766
+v 0.157528 -0.092356 0.192533
+v 0.055317 -0.092356 0.234753
+v -0.055316 -0.092356 0.234753
+v -0.157527 -0.092356 0.192533
+v -0.235756 -0.092356 0.105766
+v -0.278093 -0.092356 -0.023864
+v -0.217397 -0.186241 -0.127751
+v -0.184300 -0.186241 -0.229088
+v -0.123145 -0.186241 -0.306649
+v -0.043242 -0.186241 -0.348624
+v 0.043244 -0.186241 -0.348624
+v 0.123147 -0.186241 -0.306649
+v 0.184302 -0.186241 -0.229088
+v 0.217399 -0.186241 -0.127751
+v 0.217399 -0.186241 -0.018064
+v 0.184302 -0.186241 0.083273
+v 0.123147 -0.186241 0.160833
+v 0.043244 -0.186241 0.202808
+v -0.043242 -0.186241 0.202808
+v -0.123145 -0.186241 0.160833
+v -0.184301 -0.186241 0.083273
+v -0.217397 -0.186241 -0.018065
+v 0.159409 0.024998 0.233177
+v 0.058534 0.024998 0.274477
+v -0.058533 0.024998 0.274477
+v -0.158176 0.024998 0.233177
+v 0.000001 -0.186241 -0.072908
+v 0.000001 -0.500000 -0.079917
+v 0.000001 0.394161 0.240021
+v 0.000001 0.397872 0.215146
+v 0.321020 0.024999 -0.023415
+v 0.272148 0.024999 0.122688
+v 0.127875 0.024999 0.333889
+v 0.063856 0.024999 0.444096
+v -0.063854 0.024999 0.444096
+v -0.127873 0.024999 0.333889
+v -0.272146 0.024999 0.122688
+v -0.321018 0.024999 -0.023415
+v 0.375000 0.515624 0.499998
+v -0.374999 0.515624 0.499998
+v -0.374999 0.515624 0.239129
+v 0.375000 0.515624 0.239129
+v 0.375000 0.562499 0.499998
+v -0.374999 0.562499 0.499998
+v -0.374999 0.562499 0.239129
+v 0.375000 0.562499 0.239129
+v -0.102187 0.064420 0.210876
+v 0.102189 0.064420 0.210876
+v -0.102187 0.050781 0.203001
+v 0.102189 0.050781 0.203001
+v -0.102187 0.037143 0.210876
+v 0.102189 0.037142 0.210876
+v -0.102187 0.037143 0.226624
+v 0.102189 0.037142 0.226624
+v -0.102187 0.050781 0.234499
+v 0.102189 0.050781 0.234499
+v -0.102187 0.064420 0.226624
+v 0.102189 0.064420 0.226624
+v -0.078746 0.023276 0.222272
+v -0.078746 0.037144 0.222272
+v -0.102187 0.050781 0.234499
+v -0.102184 0.037144 0.222272
+v -0.078746 0.023276 0.242272
+v -0.078750 0.050781 0.234499
+v -0.102184 0.023276 0.242272
+v -0.078750 0.037142 0.226624
+v 0.102192 0.023276 0.242272
+v 0.078755 0.037144 0.222272
+v 0.102192 0.037144 0.222272
+v 0.102192 0.023276 0.222272
+v 0.102192 0.052255 0.233562
+v 0.078755 0.023276 0.242272
+v 0.078751 0.050781 0.234499
+v 0.078751 0.037142 0.226624
+v 0.355293 0.489365 0.229707
+v 0.355293 0.489365 0.245317
+v 0.311337 0.473655 0.245317
+v 0.311337 0.473655 0.229707
+v 0.331786 0.459843 0.245317
+v 0.331786 0.459843 0.229707
+v 0.353972 0.470647 0.245317
+v 0.353972 0.470647 0.229707
+v 0.401033 0.498507 0.245317
+v 0.401033 0.498507 0.229707
+v 0.335259 0.509074 0.245317
+v 0.335259 0.509074 0.229707
+v 0.313073 0.498270 0.245317
+v 0.313073 0.498270 0.229707
+v 0.390808 0.505413 0.245317
+v 0.390808 0.505413 0.229707
+v 0.397872 0.490455 0.245317
+v 0.397872 0.490455 0.229707
+v 0.333523 0.484458 0.229707
+v 0.187309 -0.500000 0.343750
+v 0.236274 -0.066406 0.343750
+v 0.194173 -0.500000 0.331862
+v 0.243137 -0.066406 0.331862
+v 0.207900 -0.500000 0.331862
+v 0.256864 -0.066406 0.331862
+v 0.214763 -0.500000 0.343750
+v 0.263728 -0.066406 0.343750
+v 0.207900 -0.500000 0.355638
+v 0.256864 -0.066406 0.355638
+v 0.194173 -0.500000 0.355638
+v 0.243137 -0.066406 0.355638
+v 0.237914 -0.062500 0.364685
+v 0.262088 -0.062500 0.364685
+v 0.274175 -0.062500 0.343750
+v 0.262088 -0.062500 0.322815
+v 0.237914 -0.062500 0.322815
+v 0.225827 -0.062500 0.343750
+v 0.236274 -0.136407 0.343750
+v 0.194173 -0.363593 0.331862
+v 0.207900 -0.363593 0.331862
+v 0.214763 -0.363593 0.343750
+v 0.207900 -0.363593 0.355638
+v 0.194173 -0.363593 0.355638
+v 0.187309 -0.363593 0.343750
+v 0.243137 -0.136407 0.331862
+v 0.256864 -0.136407 0.331862
+v 0.263728 -0.136407 0.343750
+v 0.256864 -0.136407 0.355638
+v 0.243137 -0.136407 0.355638
+v 0.237914 -0.035156 0.364685
+v 0.262088 -0.035156 0.364685
+v 0.274175 -0.035156 0.343750
+v 0.262088 -0.035156 0.322815
+v 0.237914 -0.035156 0.322815
+v 0.225827 -0.035156 0.343750
+v 0.243137 -0.031250 0.355638
+v 0.256864 -0.031250 0.355638
+v 0.263728 -0.031250 0.343750
+v 0.256864 -0.031250 0.331862
+v 0.243137 -0.031250 0.331862
+v 0.236274 -0.031250 0.343750
+v 0.243137 0.027344 0.355638
+v 0.256864 0.027344 0.355638
+v 0.263728 0.027344 0.343750
+v 0.256864 0.027344 0.331862
+v 0.243137 0.027344 0.331862
+v 0.236274 0.027344 0.343750
+v 0.221312 -0.043862 0.322814
+v 0.221312 -0.043862 0.316182
+v 0.233313 -0.058455 0.322814
+v 0.233312 -0.058455 0.316182
+v 0.255088 -0.067408 0.322814
+v 0.255088 -0.067408 0.316182
+v 0.273882 -0.065477 0.322813
+v 0.273882 -0.065477 0.316182
+v 0.278686 -0.053792 0.322813
+v 0.278686 -0.053792 0.316182
+v 0.266686 -0.039199 0.322813
+v 0.266686 -0.039199 0.316182
+v 0.244911 -0.030246 0.322814
+v 0.244911 -0.030246 0.316182
+v 0.226117 -0.032177 0.322814
+v 0.226117 -0.032177 0.316182
+v 0.078755 0.023276 0.222272
+v -0.102187 0.037142 0.226624
+v -0.102184 0.023276 0.222272
+vt 0.059782 0.588807
+vt 0.014347 0.454314
+vt 0.312793 0.397118
+vt 0.125000 0.875000
+vt 0.125000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.875000
+vt 0.875000 0.937500
+vt 0.875000 0.875000
+vt 0.812500 0.937500
+vt 0.812500 0.875000
+vt 0.750000 0.937500
+vt 0.750000 0.875000
+vt 0.687500 0.937500
+vt 0.687500 0.875000
+vt 0.625000 0.937500
+vt 0.625000 0.875000
+vt 0.562500 0.937500
+vt 0.562500 0.875000
+vt 0.500000 0.937500
+vt 0.500000 0.875000
+vt 0.437500 0.937500
+vt 0.437500 0.875000
+vt 0.375000 0.937500
+vt 0.375000 0.875000
+vt 0.312500 0.937500
+vt 0.312500 0.875000
+vt 0.250000 0.937500
+vt 0.250000 0.875000
+vt 0.625421 0.459078
+vt 0.577814 0.598166
+vt 0.312711 0.399776
+vt 0.187500 0.875000
+vt 0.187500 0.937500
+vt 0.014347 0.308739
+vt 0.059782 0.186747
+vt 0.143736 0.103599
+vt 0.253428 0.066750
+vt 0.372157 0.066750
+vt 0.481849 0.103599
+vt 0.565803 0.186747
+vt 0.611238 0.308738
+vt 0.611238 0.454314
+vt 0.565803 0.588807
+vt 0.481849 0.691744
+vt 0.372157 0.747454
+vt 0.253428 0.747454
+vt 0.143737 0.691744
+vt 0.489847 0.704620
+vt 0.374913 0.762232
+vt 0.250509 0.762232
+vt 0.135574 0.704620
+vt 0.047607 0.598166
+vt 0.000000 0.459078
+vt 0.000000 0.308530
+vt 0.047607 0.181944
+vt 0.135574 0.095956
+vt 0.250509 0.058275
+vt 0.374913 0.058275
+vt 0.489847 0.095956
+vt 0.577814 0.181944
+vt 0.625421 0.308530
+vt 0.125000 0.625000
+vt 0.187500 0.625000
+vt 0.187500 0.562500
+vt 0.125000 0.562500
+vt 0.562500 0.687500
+vt 0.562500 0.750000
+vt 0.500000 0.750000
+vt 0.500000 0.687500
+vt 0.437500 0.750000
+vt 0.437500 0.687500
+vt 0.375000 0.750000
+vt 0.375000 0.687500
+vt 0.875000 0.625000
+vt 0.937500 0.625000
+vt 0.937500 0.562500
+vt 0.875000 0.562500
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.625000 0.687500
+vt 0.625000 0.750000
+vt 0.687500 0.687500
+vt 0.687500 0.750000
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.125000 0.687500
+vt 0.125000 0.750000
+vt 0.062500 0.687500
+vt 0.062500 0.750000
+vt -0.000000 0.687500
+vt -0.000000 0.750000
+vt 0.937500 0.687500
+vt 1.000000 0.687500
+vt 1.000000 0.750000
+vt 0.937500 0.750000
+vt 0.437500 0.562500
+vt 0.500000 0.562500
+vt 0.312500 0.562500
+vt 0.250000 0.562500
+vt 0.250000 0.437500
+vt 0.312500 0.437500
+vt 0.812500 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.562500
+vt 0.812500 0.562500
+vt 0.062500 0.562500
+vt 0.562500 0.562500
+vt 0.625000 0.562500
+vt 0.875000 0.687500
+vt 0.375000 0.562500
+vt 0.687500 0.562500
+vt -0.000000 0.562500
+vt 1.000000 0.562500
+vt 0.250000 0.312500
+vt 0.187500 0.312500
+vt 0.187500 0.250000
+vt 0.250000 0.250000
+vt 0.375000 0.437500
+vt 0.437500 0.437500
+vt 0.687500 0.437500
+vt 0.750000 0.437500
+vt 0.500000 0.437500
+vt 0.562500 0.437500
+vt 0.812500 0.437500
+vt 0.875000 0.437500
+vt 0.625000 0.437500
+vt 0.937500 0.437500
+vt 1.000000 0.437500
+vt 0.062500 0.437500
+vt 0.125000 0.437500
+vt 0.187500 0.437500
+vt -0.000000 0.437500
+vt 0.125000 0.250000
+vt 0.125000 0.125000
+vt 0.187500 0.125000
+vt 0.375000 0.312500
+vt 0.312500 0.312500
+vt 0.312500 0.250000
+vt 0.375000 0.250000
+vt 0.500000 0.312500
+vt 0.437500 0.312500
+vt 0.437500 0.250000
+vt 0.500000 0.250000
+vt 0.812500 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.250000
+vt 0.812500 0.250000
+vt 0.625000 0.312500
+vt 0.562500 0.312500
+vt 0.562500 0.250000
+vt 0.625000 0.250000
+vt 0.937500 0.312500
+vt 0.875000 0.312500
+vt 0.875000 0.250000
+vt 0.937500 0.250000
+vt 0.062500 0.312500
+vt -0.000000 0.312500
+vt -0.000000 0.250000
+vt 0.062500 0.250000
+vt 0.125000 0.312500
+vt 0.687500 0.312500
+vt 0.687500 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.250000
+vt 0.062500 0.125000
+vt 0.062500 0.062500
+vt 0.125000 0.062500
+vt 0.250000 0.125000
+vt 0.312500 0.125000
+vt 0.375000 0.125000
+vt 0.437500 0.125000
+vt 0.687500 0.125000
+vt 0.750000 0.125000
+vt 0.500000 0.125000
+vt 0.562500 0.125000
+vt 0.812500 0.125000
+vt 0.875000 0.125000
+vt 0.625000 0.125000
+vt 0.937500 0.125000
+vt 1.000000 0.125000
+vt -0.000000 0.125000
+vt -0.000000 0.062500
+vt -0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.187500 0.062500
+vt 0.250000 0.062500
+vt 0.312500 0.062500
+vt 0.375000 0.062500
+vt 0.437500 0.062500
+vt 0.500000 0.062500
+vt 0.750000 0.062500
+vt 0.812500 0.062500
+vt 0.562500 0.062500
+vt 0.625000 0.062500
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vt 0.687500 0.062500
+vt 1.000000 0.062500
+vt 0.125000 -0.000000
+vt 0.187500 -0.000000
+vt 0.250000 -0.000000
+vt 0.312500 -0.000000
+vt 0.375000 -0.000000
+vt 0.437500 -0.000000
+vt 0.687500 -0.000000
+vt 0.750000 -0.000000
+vt 0.500000 -0.000000
+vt 0.562500 -0.000000
+vt 0.812500 -0.000000
+vt 0.875000 -0.000000
+vt 0.625000 -0.000000
+vt 0.937500 -0.000000
+vt 1.000000 -0.000000
+vt 0.875000 0.812500
+vt 0.937500 0.812500
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.312500 0.812500
+vt 0.375000 0.812500
+vt -0.000000 0.812500
+vt 0.062500 0.812500
+vt 0.437500 0.812500
+vt 0.500000 0.812500
+vt 0.125000 0.812500
+vt 0.187500 0.812500
+vt 0.562500 0.812500
+vt 0.625000 0.812500
+vt 0.250000 0.812500
+vt 0.687500 0.812500
+vt 0.750000 0.812500
+vt 0.562500 1.000000
+vt 0.812500 0.812500
+vt 0.223189 0.563136
+vt 0.255826 0.456806
+vt 0.351520 0.517180
+vt 0.329749 0.586040
+vt 0.935561 0.689691
+vt 0.875589 0.806613
+vt 0.777570 0.741399
+vt 0.820572 0.666793
+vt 0.342277 0.896101
+vt 0.255826 0.796022
+vt 0.351147 0.736031
+vt 0.408493 0.798501
+vt 0.764778 0.356727
+vt 0.875589 0.446215
+vt 0.777570 0.511434
+vt 0.698111 0.454333
+vt 0.342277 0.356727
+vt 0.475512 0.308296
+vt 0.494149 0.423430
+vt 0.408493 0.454333
+vt 0.223189 0.689691
+vt 0.329749 0.666793
+vt 0.935561 0.563136
+vt 0.820572 0.586040
+vt 0.475512 0.944531
+vt 0.494149 0.829403
+vt 0.619995 0.308296
+vt 0.594294 0.423430
+vt 0.764778 0.896101
+vt 0.698111 0.798501
+vt 0.619996 0.944531
+vt 0.594294 0.829403
+vt 0.125000 1.000000
+vt 0.062500 1.000000
+vt 0.812500 1.000000
+vt 0.750000 1.000000
+vt 0.875000 1.000000
+vt 0.375000 1.000000
+vt 0.875000 0.750000
+vt 0.812500 0.750000
+vt 1.000000 0.812500
+vt 0.750000 0.750000
+vt 0.312500 0.625000
+vt 0.375000 0.625000
+vt 0.437500 0.625000
+vt 0.500000 0.625000
+vt 0.562500 0.625000
+vt 0.625000 0.625000
+vt 0.687500 0.625000
+vt 0.750000 0.625000
+vt 0.812500 0.625000
+vt 0.250000 0.625000
+vt 0.062500 0.625000
+vt 1.000000 0.625000
+vt 0.000000 0.625000
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.687500 1.000000
+vt 0.625000 1.000000
+vt 0.312500 1.000000
+vt -0.000000 1.000000
+vt 0.250000 1.000000
+vt 0.453342 0.043359
+vt 0.574716 0.083960
+vt 0.387654 0.310044
+vt 0.667611 0.158980
+vt 0.717886 0.256998
+vt 0.717886 0.363091
+vt 0.667611 0.461110
+vt 0.574716 0.536129
+vt 0.453342 0.576730
+vt 0.321968 0.576730
+vt 0.200593 0.536129
+vt 0.107697 0.461110
+vt 0.057422 0.363091
+vt 0.057422 0.256998
+vt 0.107697 0.158980
+vt 0.200593 0.083960
+vt 0.321968 0.043359
+vt 0.187500 1.000000
+vt 0.318503 0.356727
+vt 0.463285 0.308296
+vt 0.318503 0.896101
+vt 0.463285 0.944531
+vt 0.109212 0.753132
+vt 0.109211 0.499696
+vt 0.000000 0.689691
+vt 0.000000 0.563136
+vt 0.867691 0.950020
+vt 0.132309 0.950020
+vt 0.132309 0.462709
+vt 0.867691 0.462709
+vt 0.993758 0.949668
+vt 0.744084 0.949668
+vt 0.744084 0.459759
+vt 0.993758 0.459759
+vt 0.255957 0.949745
+vt 0.006243 0.949745
+vt 0.006243 0.459759
+vt 0.255957 0.459759
+vt 0.262199 0.952886
+vt 0.000000 0.952886
+vt 0.262199 1.000000
+vt 0.874875 0.953140
+vt 0.125125 0.953140
+vt 1.000000 0.952808
+vt 0.737842 0.952808
+vt 0.874875 1.000000
+vt 0.125125 1.000000
+vt 1.000000 0.999915
+vt 0.737842 0.999915
+vt 0.566203 0.718246
+vt 0.511231 0.500340
+vt 0.456260 0.718246
+vt 0.354686 0.685072
+vt 0.276945 0.623774
+vt 0.234871 0.543684
+vt 0.234871 0.456996
+vt 0.276945 0.376907
+vt 0.354686 0.315609
+vt 0.456260 0.282434
+vt 0.566203 0.282434
+vt 0.667776 0.315609
+vt 0.745518 0.376907
+vt 0.787591 0.456996
+vt 0.787591 0.543684
+vt 0.745518 0.623774
+vt 0.667776 0.685072
+vt 0.937500 0.500000
+vt 1.000000 0.500000
+vt 0.625000 0.500000
+vt 0.687500 0.500000
+vt 0.750000 0.500000
+vt 0.812500 0.500000
+vt 0.875000 0.500000
+vt 0.400627 0.674204
+vt 0.376001 0.628376
+vt 0.400627 0.582547
+vt 0.449880 0.582547
+vt 0.474506 0.628376
+vt 0.449880 0.674204
+vt 0.436269 0.535953
+vt 0.498817 0.535953
+vt 0.485399 0.798245
+vt 0.460887 0.843860
+vt 0.436689 0.751867
+vt 0.436269 0.582552
+vt 0.515652 0.798245
+vt 0.564363 0.751867
+vt 0.540164 0.843860
+vt 0.502105 0.751867
+vt 0.502105 0.798250
+vt -0.000000 0.375000
+vt 0.062500 0.375000
+vt 0.187631 0.949175
+vt 0.126452 0.944859
+vt 0.160779 0.894034
+vt 0.153304 1.000000
+vt 0.092124 0.995684
+vt 0.065272 0.940543
+vt 0.114257 0.890752
+vt 0.074372 0.802482
+vt 0.111548 0.784925
+vt 0.091536 0.777070
+vt 0.144697 0.883474
+vt 0.127533 0.858062
+vt 0.164709 0.875618
+vt 0.167419 0.769792
+vt 0.118434 0.720001
+vt 0.375000 0.375000
+vt 0.250000 0.375000
+vt 0.250000 0.187500
+vt 0.187500 0.187500
+vt 0.375000 0.187500
+vt 0.940392 0.000000
+vt 1.000000 0.034414
+vt 1.000000 0.103243
+vt 0.940392 0.137658
+vt 0.880785 0.103243
+vt 0.880785 0.034414
+vt 0.187500 0.375000
+vt 0.625000 0.375000
+vt 0.500000 0.375000
+vt 0.625000 0.187500
+vt 0.500000 0.187500
+vt 0.125000 0.375000
+vt 0.125000 0.187500
+vt 0.062500 0.187500
+vt 0.000000 0.187500
+vt 0.937500 0.375000
+vt 1.000000 0.375000
+vt 0.935922 0.934263
+vt 0.900247 0.999981
+vt 0.850245 0.999739
+vt 0.815207 0.933679
+vt 0.815658 0.840497
+vt 0.851333 0.774780
+vt 0.901335 0.775021
+vt 0.936373 0.841082
+vt 0.900026 1.000000
+vt 0.935702 0.934282
+vt 0.936153 0.841101
+vt 0.901115 0.775041
+vt 0.851113 0.774799
+vt 0.815438 0.840517
+vt 0.814987 0.933698
+vt 0.850024 0.999758
+vt 0.600451 0.582951
+vt 0.625078 0.628780
+vt 0.600451 0.674608
+vt 0.551199 0.674608
+vt 0.526572 0.628780
+vt 0.551199 0.582951
+vt 0.502261 0.536357
+vt 0.564809 0.536357
+vt 0.564809 0.582956
+vt 0.498947 0.751867
+vt 0.498947 0.798250
+vn -0.460200 0.254900 0.850400
+vn -0.523300 0.086100 0.847800
+vn 0.000000 0.008000 0.999900
+vn -0.876000 0.152300 -0.457700
+vn -0.777100 0.442000 -0.448000
+vn -0.331200 0.411000 0.849300
+vn -0.555200 0.706100 -0.439400
+vn -0.123800 0.516200 0.847500
+vn -0.205200 0.877700 -0.432900
+vn 0.123800 0.516200 0.847500
+vn 0.205200 0.877700 -0.432900
+vn 0.331200 0.411000 0.849300
+vn 0.555200 0.706100 -0.439400
+vn 0.460200 0.254900 0.850400
+vn 0.777100 0.442000 -0.448000
+vn 0.523300 0.086100 0.847800
+vn 0.876000 0.152300 -0.457700
+vn 0.538000 -0.099400 0.837000
+vn 0.871500 -0.150000 -0.466800
+vn 0.480800 -0.319800 0.816400
+vn 0.741400 -0.469000 -0.479800
+vn 0.310100 -0.526700 0.791500
+vn 0.459800 -0.728500 -0.507700
+vn 0.095800 -0.614600 0.783000
+vn 0.137500 -0.824900 -0.548200
+vn -0.095800 -0.614600 0.783000
+vn -0.137500 -0.824900 -0.548200
+vn -0.310100 -0.526700 0.791500
+vn -0.459800 -0.728500 -0.507700
+vn -0.480800 -0.319800 0.816400
+vn -0.741400 -0.469000 -0.479800
+vn 0.000000 -0.008000 -0.999900
+vn -0.871500 -0.150000 -0.466800
+vn -0.538000 -0.099400 0.837000
+vn 0.588400 0.153900 -0.793700
+vn 0.881700 0.088900 -0.463300
+vn 0.889000 0.000000 -0.457900
+vn 0.616300 0.000000 -0.787500
+vn -0.621300 -0.130700 -0.772600
+vn -0.630900 0.000000 -0.775900
+vn -0.234800 0.000000 -0.972100
+vn -0.230000 -0.143400 -0.962500
+vn 0.234800 0.000000 -0.972100
+vn 0.230000 -0.143400 -0.962500
+vn 0.630900 0.000000 -0.775900
+vn 0.621300 -0.130700 -0.772600
+vn -0.882800 0.089900 -0.461000
+vn -0.589500 0.155300 -0.792700
+vn -0.617100 0.000000 -0.786900
+vn -0.890500 0.000000 -0.455100
+vn 0.877100 0.000000 -0.480400
+vn 0.868700 -0.112500 -0.482300
+vn -0.868700 -0.112500 -0.482300
+vn -0.877100 0.000000 -0.480400
+vn -0.981700 -0.095500 -0.164600
+vn -0.987000 0.000000 -0.160700
+vn 0.981700 -0.095500 -0.164600
+vn 0.987000 0.000000 -0.160700
+vn 0.984200 -0.082400 0.156900
+vn 0.730400 0.672600 0.118900
+vn 0.890400 -0.088200 0.446500
+vn 0.658800 0.677300 0.327300
+vn 0.763500 -0.282400 0.580800
+vn 0.590900 0.715400 0.372800
+vn 0.400800 -0.408100 0.820200
+vn 0.395200 0.610200 0.686600
+vn -0.400800 -0.408100 0.820200
+vn -0.395200 0.610200 0.686600
+vn 0.201800 -0.507400 -0.837700
+vn -0.201800 -0.507400 -0.837700
+vn 0.788700 -0.433800 -0.435500
+vn 0.908700 -0.389100 -0.151000
+vn 0.696300 -0.708800 -0.112300
+vn 0.575900 -0.756300 -0.310300
+vn -0.890400 -0.088200 0.446500
+vn -0.984200 -0.082400 0.156900
+vn -0.923200 -0.354300 0.148500
+vn -0.829900 -0.349800 0.434600
+vn 0.652300 -0.428900 0.624900
+vn 0.829900 -0.349800 0.434600
+vn -0.552500 -0.478300 -0.682500
+vn -0.788700 -0.433800 -0.435500
+vn -0.763500 -0.282400 0.580800
+vn -0.652300 -0.428900 0.624900
+vn -0.260300 -0.671100 0.694100
+vn 0.552500 -0.478300 -0.682500
+vn -0.908700 -0.389100 -0.151000
+vn 0.923200 -0.354300 0.148500
+vn 0.260300 -0.671100 0.694100
+vn 0.878400 -0.461000 -0.126000
+vn 0.891000 -0.424900 0.159600
+vn 0.930000 0.329900 0.162100
+vn 0.922400 0.361300 -0.136400
+vn 0.385400 -0.797500 -0.464200
+vn 0.136700 -0.822100 -0.552600
+vn -0.696300 -0.708800 -0.112300
+vn -0.738100 -0.664200 0.118100
+vn -0.136700 -0.822100 -0.552600
+vn -0.385400 -0.797500 -0.464200
+vn -0.682600 -0.632100 0.366700
+vn -0.501000 -0.619600 0.604300
+vn -0.575900 -0.756300 -0.310300
+vn -0.186600 -0.618900 0.763000
+vn 0.186600 -0.618900 0.763000
+vn 0.501000 -0.619600 0.604300
+vn 0.682600 -0.632100 0.366700
+vn 0.738100 -0.664200 0.118100
+vn 0.830200 0.311300 0.462400
+vn 0.791700 0.429200 0.434800
+vn 0.872400 0.467300 0.143100
+vn 0.542000 -0.540100 -0.643800
+vn 0.767000 -0.501500 -0.400300
+vn 0.809800 0.403200 -0.426200
+vn 0.574200 0.448700 -0.684700
+vn -0.199300 -0.565900 -0.800000
+vn 0.199300 -0.565900 -0.800000
+vn 0.211300 0.481500 -0.850600
+vn -0.211300 0.481500 -0.850600
+vn -0.800000 -0.397200 0.449700
+vn -0.891000 -0.424900 0.159600
+vn -0.930000 0.329900 0.162100
+vn -0.830200 0.311300 0.462400
+vn -0.767000 -0.501500 -0.400300
+vn -0.542000 -0.540100 -0.643800
+vn -0.574200 0.448700 -0.684700
+vn -0.809800 0.403200 -0.426200
+vn -0.216500 -0.374000 0.901800
+vn -0.579500 -0.380400 0.720800
+vn -0.598400 0.305000 0.740800
+vn -0.222800 0.306000 0.925600
+vn 0.579500 -0.380400 0.720800
+vn 0.216500 -0.374000 0.901800
+vn 0.222800 0.306000 0.925600
+vn 0.598400 0.305000 0.740800
+vn 0.800000 -0.397200 0.449700
+vn -0.878400 -0.461000 -0.126000
+vn -0.922400 0.361300 -0.136400
+vn 0.574800 0.408700 0.708800
+vn 0.625300 0.153100 0.765200
+vn 0.867400 0.164800 0.469500
+vn 0.842700 0.521000 -0.135500
+vn 0.713900 0.583300 -0.387400
+vn 0.487100 0.641800 -0.592300
+vn 0.174600 0.678600 -0.713400
+vn -0.842700 0.521000 -0.135500
+vn -0.872400 0.467300 0.143100
+vn -0.174600 0.678600 -0.713400
+vn -0.487100 0.641800 -0.592300
+vn -0.791700 0.429200 0.434800
+vn -0.574800 0.408700 0.708800
+vn -0.713900 0.583300 -0.387400
+vn -0.214400 0.402100 0.890100
+vn 0.214400 0.402100 0.890100
+vn 0.232700 0.148500 0.961100
+vn 0.176800 -0.657900 0.732000
+vn 0.472100 -0.663300 0.580600
+vn 0.971100 0.185200 0.150600
+vn 0.962600 0.213700 -0.166500
+vn 0.844500 0.247300 -0.474900
+vn 0.598400 0.279100 -0.751000
+vn 0.220200 0.298900 -0.928500
+vn -0.220200 0.298900 -0.928500
+vn -0.971100 0.185200 0.150600
+vn -0.867400 0.164800 0.469500
+vn -0.598400 0.279100 -0.751000
+vn -0.844500 0.247300 -0.474900
+vn -0.625300 0.153100 0.765200
+vn -0.232700 0.148500 0.961100
+vn -0.962600 0.213700 -0.166500
+vn 0.651700 -0.669300 0.356900
+vn 0.730300 -0.672700 0.118900
+vn 0.730300 -0.672700 -0.118900
+vn 0.651700 -0.669300 -0.356900
+vn 0.472100 -0.663300 -0.580600
+vn 0.176800 -0.657900 -0.732000
+vn -0.730300 -0.672700 -0.118900
+vn -0.730300 -0.672700 0.118900
+vn -0.176800 -0.657900 -0.732000
+vn -0.472100 -0.663300 -0.580600
+vn -0.651700 -0.669300 0.356900
+vn -0.472100 -0.663300 0.580600
+vn -0.651700 -0.669300 -0.356900
+vn -0.176800 -0.657900 0.732000
+vn -0.830800 0.000000 -0.556600
+vn -0.498000 0.000000 -0.867200
+vn -0.324600 0.758400 -0.565100
+vn -0.534300 0.765700 -0.358000
+vn -0.148400 0.000000 0.988900
+vn 0.148400 0.000000 0.988900
+vn 0.109400 0.675200 0.729500
+vn -0.109400 0.675200 0.729500
+vn 0.989600 0.000000 0.144200
+vn 0.897700 0.000000 0.440600
+vn 0.597300 0.746500 0.293100
+vn 0.664400 0.741000 0.096800
+vn -0.152500 0.000000 -0.988300
+vn 0.149300 0.000000 -0.988800
+vn 0.100000 0.742300 -0.662500
+vn -0.102100 0.743100 -0.661300
+vn 0.670800 0.000000 0.741600
+vn 0.258500 0.000000 0.966000
+vn 0.164900 0.770200 0.616100
+vn 0.437700 0.757800 0.483900
+vn 0.497900 0.000000 -0.867200
+vn 0.832500 0.000000 -0.554000
+vn 0.536200 0.764900 -0.356800
+vn 0.323600 0.760000 -0.563600
+vn -0.258500 0.000000 0.966000
+vn -0.670800 0.000000 0.741600
+vn -0.437700 0.757800 0.483900
+vn -0.164900 0.770200 0.616100
+vn 0.985100 0.000000 -0.172300
+vn 0.653700 0.748000 -0.114300
+vn -0.897700 0.000000 0.440600
+vn -0.989600 0.000000 0.144200
+vn -0.664400 0.741000 0.096800
+vn -0.597300 0.746500 0.293100
+vn 0.483900 0.000000 0.875100
+vn 0.362000 0.663600 0.654700
+vn -0.985100 0.000000 -0.172300
+vn -0.653700 0.748000 -0.114300
+vn -0.176800 0.657900 -0.732000
+vn -0.472100 0.663300 -0.580600
+vn -0.622500 0.654500 0.429100
+vn -0.362000 0.663600 0.654700
+vn 0.651700 0.669300 -0.356900
+vn 0.472100 0.663300 -0.580600
+vn 0.622500 0.654500 0.429100
+vn 0.731000 0.670100 0.128700
+vn 0.176800 0.657900 -0.732000
+vn -0.731000 0.670100 0.128700
+vn 0.730300 0.672700 -0.118900
+vn -0.651700 0.669300 -0.356900
+vn -0.730300 0.672700 -0.118900
+vn -0.483900 0.000000 0.875100
+vn -0.590900 0.715400 0.372800
+vn -0.658800 0.677300 0.327300
+vn -0.730400 0.672600 0.118900
+vn 0.982500 0.093400 0.161000
+vn 0.873300 0.110700 0.474300
+vn 0.881500 0.000000 0.472100
+vn 0.987600 0.000000 0.157200
+vn 0.629400 0.129600 0.766200
+vn 0.639200 0.000000 0.769100
+vn 0.234500 0.143200 0.961500
+vn 0.239500 0.000000 0.970900
+vn -0.234500 0.143200 0.961500
+vn -0.239500 0.000000 0.970900
+vn -0.629400 0.129600 0.766200
+vn -0.639200 0.000000 0.769100
+vn -0.873300 0.110700 0.474300
+vn -0.881500 0.000000 0.472100
+vn -0.982500 0.093400 0.161000
+vn -0.987600 0.000000 0.157200
+vn -0.984800 0.080600 -0.153500
+vn -0.987600 0.000000 -0.157200
+vn 0.984800 0.080600 -0.153500
+vn 0.987600 0.000000 -0.157200
+vn 0.206000 0.506700 0.837100
+vn -0.206000 0.506700 0.837100
+vn -0.794900 0.428500 0.429600
+vn -0.701300 0.623100 0.346400
+vn -0.814900 0.569200 0.109100
+vn -0.911900 0.382600 0.148400
+vn 0.825000 0.337700 -0.453000
+vn 0.926100 0.347900 -0.145600
+vn -0.825200 0.338800 -0.451900
+vn -0.580300 0.361800 -0.729600
+vn 0.794900 0.428500 0.429600
+vn 0.560600 0.475500 0.677900
+vn 0.189000 0.193500 -0.962700
+vn 0.194800 0.374700 -0.906400
+vn 0.581000 0.359600 -0.730100
+vn -0.560600 0.475500 0.677900
+vn 0.911900 0.382600 0.148400
+vn -0.926100 0.347900 -0.145600
+vn -0.194200 0.375300 -0.906300
+vn -0.187400 0.194100 -0.962900
+vn -0.176300 0.721900 0.669200
+vn -0.486500 0.681300 0.546900
+vn 0.834900 0.530800 -0.145600
+vn 0.814900 0.569200 0.109100
+vn 0.486500 0.681300 0.546900
+vn 0.176300 0.721900 0.669200
+vn 0.536200 0.433500 -0.724300
+vn 0.753700 0.498500 -0.428400
+vn 0.701300 0.623100 0.346400
+vn -0.193400 0.358100 -0.913400
+vn 0.193400 0.358100 -0.913400
+vn -0.753700 0.498500 -0.428400
+vn -0.536200 0.433500 -0.724300
+vn -0.834900 0.530800 -0.145600
+vn 0.823400 0.000000 0.567500
+vn 0.984800 0.000000 0.173400
+vn -0.823400 0.000000 0.567500
+vn -0.984800 0.000000 0.173400
+vn 0.195200 0.000000 -0.980800
+vn -0.193100 0.000000 -0.981200
+vn 0.000000 -1.000000 0.000000
+vn 0.000100 1.000000 0.000000
+vn 0.000200 1.000000 0.000100
+vn -0.000100 1.000000 0.000000
+vn -0.000200 1.000000 0.000100
+vn -0.000000 1.000000 0.000000
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.577300 -0.577300 0.577300
+vn 0.577300 -0.577300 0.577300
+vn -0.707100 0.000000 -0.707100
+vn -0.577300 -0.577300 -0.577300
+vn 0.707100 0.000000 -0.707100
+vn 0.577300 -0.577300 -0.577300
+vn 0.203700 -0.948600 0.242200
+vn 0.203700 -0.948600 -0.242200
+vn 0.620100 -0.485900 -0.615900
+vn 0.620100 -0.485900 0.615900
+vn 0.577300 0.577300 -0.577300
+vn 0.577300 0.577300 0.577300
+vn -0.203700 -0.948600 -0.242200
+vn -0.620100 -0.485900 -0.615900
+vn -0.203700 -0.948600 0.242200
+vn -0.620100 -0.485900 0.615900
+vn -0.577300 0.577300 -0.577300
+vn -0.577300 0.577300 0.577300
+vn -0.610000 0.686200 -0.396200
+vn 0.610000 0.686200 -0.396200
+vn 0.610000 0.000000 -0.792400
+vn -0.610000 0.000000 -0.792400
+vn 0.610000 -0.686200 -0.396200
+vn -0.610000 -0.686200 -0.396200
+vn 0.610000 -0.686200 0.396200
+vn -0.610000 -0.686200 0.396200
+vn 0.610000 -0.000000 0.792400
+vn -0.610000 0.000000 0.792400
+vn 0.453400 0.242500 0.857700
+vn -0.453400 0.242400 0.857700
+vn -0.636200 0.209700 0.742500
+vn 0.636300 0.209900 0.742400
+vn -0.610000 0.686200 0.396200
+vn 0.610000 0.686200 0.396200
+vn -1.000000 -0.000100 -0.000200
+vn -0.707100 -0.000100 -0.707200
+vn 1.000000 0.000100 0.000200
+vn 0.707200 0.000100 -0.707100
+vn -0.706800 0.000000 -0.707400
+vn 0.707300 0.000000 -0.706900
+vn -0.706800 0.000000 -0.707500
+vn 0.828700 -0.559700 0.000000
+vn 0.656600 -0.443500 -0.610000
+vn 0.310900 -0.325100 -0.893100
+vn 0.487300 -0.509600 0.709100
+vn -0.899100 -0.437800 -0.000000
+vn -0.712400 -0.346900 -0.610000
+vn -0.055800 -0.790400 -0.610000
+vn -0.070400 -0.997500 0.000000
+vn 0.771100 0.239700 0.589800
+vn 0.771100 0.239700 -0.589800
+vn 0.245400 0.716700 -0.652800
+vn 0.245400 0.716700 0.652800
+vn 0.458500 -0.654300 0.601300
+vn 0.458500 -0.654300 -0.601300
+vn -0.145600 0.742600 -0.653600
+vn -0.187400 0.955400 0.228100
+vn -0.828700 0.559700 -0.000000
+vn -0.656600 0.443500 -0.610000
+vn 0.000000 0.000000 -1.000000
+vn -0.994000 0.109700 0.000000
+vn -0.738000 -0.674700 0.000000
+vn -0.369000 -0.674700 -0.639100
+vn -0.472300 0.048700 -0.880100
+vn 0.369000 -0.674700 -0.639100
+vn 0.522400 -0.057600 -0.850700
+vn 0.738000 -0.674700 0.000000
+vn 0.994700 -0.102500 0.000000
+vn 0.369000 -0.674700 0.639100
+vn 0.522400 -0.057600 0.850700
+vn -0.369000 -0.674700 0.639100
+vn -0.433600 -0.497900 0.751000
+vn -0.867200 -0.497900 0.000000
+vn -0.472300 0.048700 0.880100
+vn -0.792400 -0.610000 0.000000
+vn -0.396200 -0.610000 -0.686200
+vn 0.396200 -0.610000 -0.686200
+vn 0.792400 -0.610000 0.000000
+vn 0.396200 -0.610000 0.686200
+vn -0.396200 -0.610000 0.686200
+vn -0.433600 0.497900 -0.751000
+vn -0.867200 0.497900 0.000000
+vn -0.738000 0.674700 0.000000
+vn -0.369000 0.674700 -0.639100
+vn -0.433600 -0.497900 -0.751000
+vn 0.433600 -0.497900 -0.751000
+vn 0.867200 -0.497900 0.000000
+vn 0.433600 -0.497900 0.751000
+vn -0.994700 0.102500 0.000000
+vn -0.522400 0.057600 -0.850700
+vn 0.472300 -0.048700 -0.880100
+vn 0.994000 -0.109700 0.000000
+vn 0.472300 -0.048700 0.880100
+vn -0.522400 0.057600 0.850700
+vn 0.433600 0.497900 -0.751000
+vn 0.867200 0.497900 0.000000
+vn 0.433600 0.497900 0.751000
+vn -0.433600 0.497900 0.751000
+vn -1.000000 0.000000 0.000000
+vn -0.500000 0.000000 -0.866000
+vn 0.369000 0.674700 -0.639100
+vn 0.738000 0.674700 0.000000
+vn 0.369000 0.674700 0.639100
+vn -0.369000 0.674700 0.639100
+vn 0.500000 0.000000 -0.866000
+vn 1.000000 0.000000 -0.000000
+vn 0.500000 0.000000 0.866000
+vn -0.500000 0.000000 0.866000
+vn -0.785300 -0.117900 0.607700
+vn -0.785300 -0.117900 -0.607700
+vn -0.448400 -0.606900 -0.656100
+vn -0.448400 -0.606900 0.656100
+vn -0.108200 -0.746800 -0.656100
+vn -0.108200 -0.746800 0.656100
+vn 0.475200 -0.636200 -0.607700
+vn 0.475200 -0.636200 0.607700
+vn 0.785300 0.117900 -0.607700
+vn 0.785300 0.117900 0.607700
+vn 0.448400 0.606900 -0.656100
+vn 0.448400 0.606900 0.656100
+vn 0.108200 0.746800 -0.656100
+vn 0.108200 0.746800 0.656100
+vn -0.475200 0.636200 -0.607700
+vn -0.475200 0.636200 0.607700
+g Cylinder_Cylinder_lid
+s 1
+f 152/1/1 150/2/2 299/3/3
+f 149/4/4 150/5/2 152/6/1 151/7/5
+f 151/7/5 152/6/1 154/8/6 153/9/7
+f 153/10/7 154/11/6 156/12/8 155/13/9
+f 155/13/9 156/12/8 158/14/10 157/15/11
+f 157/15/11 158/14/10 160/16/12 159/17/13
+f 159/17/13 160/16/12 162/18/14 161/19/15
+f 161/19/15 162/18/14 164/20/16 163/21/17
+f 163/21/17 164/20/16 166/22/18 165/23/19
+f 165/23/19 166/22/18 168/24/20 167/25/21
+f 167/25/21 168/24/20 170/26/22 169/27/23
+f 169/27/23 170/26/22 172/28/24 171/29/25
+f 171/29/25 172/28/24 174/30/26 173/31/27
+f 173/31/27 174/30/26 176/32/28 175/33/29
+f 175/33/29 176/32/28 178/34/30 177/35/31
+f 149/36/4 151/37/5 300/38/32
+f 179/39/33 180/40/34 150/5/2 149/4/4
+f 177/35/31 178/34/30 180/40/34 179/39/33
+f 150/2/2 180/41/34 299/3/3
+f 180/41/34 178/42/30 299/3/3
+f 178/42/30 176/43/28 299/3/3
+f 176/43/28 174/44/26 299/3/3
+f 174/44/26 172/45/24 299/3/3
+f 172/45/24 170/46/22 299/3/3
+f 170/46/22 168/47/20 299/3/3
+f 168/47/20 166/48/18 299/3/3
+f 166/48/18 164/49/16 299/3/3
+f 164/49/16 162/50/14 299/3/3
+f 162/50/14 160/51/12 299/3/3
+f 160/51/12 158/52/10 299/3/3
+f 158/52/10 156/53/8 299/3/3
+f 156/53/8 154/54/6 299/3/3
+f 154/54/6 152/1/1 299/3/3
+f 151/37/5 153/55/7 300/38/32
+f 153/55/7 155/56/9 300/38/32
+f 155/56/9 157/57/11 300/38/32
+f 157/57/11 159/58/13 300/38/32
+f 159/58/13 161/59/15 300/38/32
+f 161/59/15 163/60/17 300/38/32
+f 163/60/17 165/61/19 300/38/32
+f 165/61/19 167/62/21 300/38/32
+f 167/62/21 169/63/23 300/38/32
+f 169/63/23 171/64/25 300/38/32
+f 171/64/25 173/65/27 300/38/32
+f 173/65/27 175/66/29 300/38/32
+f 175/66/29 177/67/31 300/38/32
+f 177/67/31 179/68/33 300/38/32
+f 179/68/33 149/36/4 300/38/32
+g Cylinder_Cylinder_bowl
+f 256/69/35 257/70/36 258/71/37 296/72/38
+f 3/73/39 4/74/40 6/75/41 5/76/42
+f 5/76/42 6/75/41 8/77/43 7/78/44
+f 7/78/44 8/77/43 10/79/45 9/80/46
+f 251/81/47 253/82/48 293/83/49 252/84/50
+f 9/80/46 10/79/45 20/85/51 11/86/52
+f 2/87/53 22/88/54 4/74/40 3/73/39
+f 2/87/53 1/89/55 24/90/56 22/88/54
+f 12/91/57 11/86/52 20/85/51 18/92/58
+f 13/93/59 12/91/57 18/92/58 301/94/60
+f 15/95/61 13/93/59 301/94/60 302/96/62
+f 17/97/63 15/95/61 302/96/62 303/98/64
+f 19/99/65 17/97/63 303/98/64 304/100/66
+f 21/101/67 19/102/65 304/103/66 305/104/68
+f 5/76/42 7/78/44 33/105/69 32/106/70
+f 35/107/71 36/108/72 52/109/73 51/110/74
+f 25/111/75 27/112/76 44/113/77 43/114/78
+f 11/86/52 12/91/57 36/108/72 35/107/71
+f 15/95/61 17/97/63 39/115/79 38/72/80
+f 2/87/53 3/73/39 31/116/81 30/117/82
+f 21/101/67 23/118/83 42/84/84 41/83/85
+f 7/78/44 9/80/46 34/119/86 33/105/69
+f 27/112/76 1/89/55 29/120/87 44/113/77
+f 1/89/55 2/87/53 30/117/82 29/120/87
+f 12/91/57 13/93/59 37/71/88 36/108/72
+f 17/97/63 19/99/65 40/121/89 39/115/79
+f 3/73/39 5/76/42 32/106/70 31/116/81
+f 23/118/83 25/111/75 43/114/78 42/84/84
+f 9/80/46 11/86/52 35/107/71 34/119/86
+f 13/93/59 15/95/61 38/72/80 37/71/88
+f 19/102/65 21/101/67 41/83/85 40/122/89
+f 125/123/90 126/124/91 69/125/92 68/126/93
+f 33/105/69 34/119/86 50/127/94 49/128/95
+f 44/113/77 29/120/87 45/129/96 60/130/97
+f 31/116/81 32/106/70 48/131/98 47/132/99
+f 42/84/84 43/114/78 59/133/100 58/134/101
+f 29/120/87 30/117/82 46/135/102 45/129/96
+f 40/122/89 41/83/85 57/136/103 56/137/104
+f 38/72/80 39/115/79 55/138/105 54/139/106
+f 36/108/72 37/71/88 53/140/107 52/109/73
+f 34/119/86 35/107/71 51/110/74 50/127/94
+f 32/106/70 33/105/69 49/128/95 48/131/98
+f 43/114/78 44/113/77 60/130/97 59/133/100
+f 30/117/82 31/116/81 47/132/99 46/135/102
+f 41/83/85 42/84/84 58/134/101 57/136/103
+f 39/115/79 40/121/89 56/141/104 55/138/105
+f 37/71/88 38/72/80 54/139/106 53/140/107
+f 69/125/92 70/142/108 86/143/109 85/144/110
+f 127/145/111 128/146/112 67/147/113 66/148/114
+f 129/149/115 130/150/116 65/151/117 64/152/118
+f 131/153/119 132/154/120 76/155/121 75/156/122
+f 133/157/123 134/158/124 63/159/125 62/160/126
+f 135/161/127 136/162/128 74/163/129 73/164/130
+f 137/165/131 138/166/132 72/167/133 71/168/134
+f 126/124/91 139/169/135 70/142/108 69/125/92
+f 128/146/112 125/123/90 68/126/93 67/147/113
+f 130/150/116 127/145/111 66/148/114 65/151/117
+f 132/154/120 140/170/136 61/171/137 76/155/121
+f 134/158/124 129/149/115 64/152/118 63/159/125
+f 136/162/128 131/153/119 75/156/122 74/163/129
+f 140/170/136 133/157/123 62/160/126 61/171/137
+f 138/172/132 135/161/127 73/164/130 72/173/133
+f 139/169/135 137/165/131 71/168/134 70/142/108
+f 86/143/109 87/174/138 103/175/139 102/176/140
+f 67/147/113 68/126/93 84/177/141 83/178/142
+f 65/151/117 66/148/114 82/179/143 81/180/144
+f 76/155/121 61/171/137 77/181/145 92/182/146
+f 63/159/125 64/152/118 80/183/147 79/184/148
+f 74/163/129 75/156/122 91/185/149 90/186/150
+f 61/171/137 62/160/126 78/187/151 77/181/145
+f 72/173/133 73/164/130 89/188/152 88/189/153
+f 70/142/108 71/168/134 87/174/138 86/143/109
+f 68/126/93 69/125/92 85/144/110 84/177/141
+f 66/148/114 67/147/113 83/178/142 82/179/143
+f 64/152/118 65/151/117 81/180/144 80/183/147
+f 75/156/122 76/155/121 92/182/146 91/185/149
+f 62/160/126 63/159/125 79/184/148 78/187/151
+f 73/164/130 74/163/129 90/186/150 89/188/152
+f 71/168/134 72/167/133 88/190/153 87/174/138
+f 103/175/139 104/191/154 120/192/155 119/193/156
+f 84/177/141 85/144/110 101/194/157 100/195/158
+f 82/179/143 83/178/142 99/196/159 98/197/160
+f 80/183/147 81/180/144 97/198/161 96/199/162
+f 91/185/149 92/182/146 108/200/163 107/201/164
+f 78/187/151 79/184/148 95/202/165 94/203/166
+f 89/188/152 90/186/150 106/204/167 105/205/168
+f 87/174/138 88/190/153 104/191/154 103/175/139
+f 85/144/110 86/143/109 102/176/140 101/194/157
+f 83/178/142 84/177/141 100/195/158 99/196/159
+f 81/180/144 82/179/143 98/197/160 97/198/161
+f 92/182/146 77/181/145 93/206/169 108/200/163
+f 79/184/148 80/183/147 96/199/162 95/202/165
+f 90/186/150 91/185/149 107/201/164 106/204/167
+f 77/181/145 78/187/151 94/203/166 93/206/169
+f 88/189/153 89/188/152 105/205/168 104/207/154
+f 101/194/157 102/176/140 118/208/170 117/209/171
+f 99/196/159 100/195/158 116/210/172 115/211/173
+f 97/198/161 98/197/160 114/212/174 113/213/175
+f 108/200/163 93/206/169 109/214/176 124/215/177
+f 95/202/165 96/199/162 112/216/178 111/217/179
+f 106/204/167 107/201/164 123/218/180 122/219/181
+f 93/206/169 94/203/166 110/220/182 109/214/176
+f 104/207/154 105/205/168 121/221/183 120/222/155
+f 102/176/140 103/175/139 119/193/156 118/208/170
+f 100/195/158 101/194/157 117/209/171 116/210/172
+f 98/197/160 99/196/159 115/211/173 114/212/174
+f 96/199/162 97/198/161 113/213/175 112/216/178
+f 107/201/164 108/200/163 124/215/177 123/218/180
+f 94/203/166 95/202/165 111/217/179 110/220/182
+f 105/205/168 106/204/167 122/219/181 121/221/183
+f 54/139/106 55/138/105 137/165/131 139/169/135
+f 56/137/104 57/136/103 135/161/127 138/172/132
+f 45/129/96 46/135/102 133/157/123 140/170/136
+f 58/134/101 59/133/100 131/153/119 136/162/128
+f 47/132/99 48/131/98 129/149/115 134/158/124
+f 60/130/97 45/129/96 140/170/136 132/154/120
+f 49/128/95 50/127/94 127/145/111 130/150/116
+f 51/110/74 52/109/73 125/123/90 128/146/112
+f 53/140/107 54/139/106 139/169/135 126/124/91
+f 55/138/105 56/141/104 138/166/132 137/165/131
+f 57/136/103 58/134/101 136/162/128 135/161/127
+f 46/135/102 47/132/99 134/158/124 133/157/123
+f 59/133/100 60/130/97 132/154/120 131/153/119
+f 48/131/98 49/128/95 130/150/116 129/149/115
+f 50/127/94 51/110/74 128/146/112 127/145/111
+f 52/109/73 53/140/107 126/124/91 125/123/90
+f 194/223/184 195/224/185 227/13/186 226/15/187
+f 183/28/188 182/26/189 212/225/190 213/226/191
+f 185/227/192 186/228/193 218/31/194 217/33/195
+f 196/229/196 197/230/197 229/7/198 228/9/199
+f 187/231/200 188/232/201 220/27/202 219/29/203
+f 198/233/204 199/234/205 231/39/206 230/4/207
+f 189/235/208 190/236/209 222/23/210 221/25/211
+f 200/237/212 185/227/192 217/33/195 232/35/213
+f 191/238/214 192/239/215 224/19/216 223/21/217
+f 182/26/189 181/24/218 211/240/219 212/225/190
+f 193/241/220 194/223/184 226/15/187 225/17/221
+f 212/242/190 211/243/219 227/244/186 228/245/199
+f 204/246/222 203/247/223 219/248/203 220/249/202
+f 215/250/224 214/251/225 230/252/207 231/253/206
+f 207/254/226 206/255/227 222/256/210 223/257/217
+f 210/258/228 209/259/229 225/260/221 226/261/187
+f 213/262/191 212/242/190 228/245/199 229/263/198
+f 205/264/230 204/246/222 220/249/202 221/265/211
+f 216/266/231 215/250/224 231/253/206 232/267/213
+f 208/268/232 207/254/226 223/257/217 224/269/216
+f 211/243/219 210/258/228 226/261/187 227/244/186
+f 203/247/223 202/270/233 218/271/194 219/248/203
+f 214/251/225 213/262/191 229/263/198 230/252/207
+f 206/255/227 205/264/230 221/265/211 222/256/210
+f 201/272/234 216/266/231 232/267/213 217/273/195
+f 202/270/233 201/272/234 217/273/195 218/271/194
+f 209/259/229 208/268/232 224/269/216 225/260/221
+f 192/239/215 193/241/220 225/17/221 224/19/216
+f 4/6/40 22/5/54 202/274/233 203/275/223
+f 190/236/209 191/238/214 223/21/217 222/23/210
+f 18/18/58 20/16/51 207/276/226 208/277/232
+f 199/234/205 200/237/212 232/35/213 231/39/206
+f 188/232/201 189/235/208 221/25/211 220/27/202
+f 20/16/51 10/14/45 206/278/227 207/276/226
+f 184/30/235 183/28/188 213/226/191 214/279/225
+f 197/230/197 198/233/204 230/4/207 229/7/198
+f 186/228/193 187/231/200 219/29/203 218/31/194
+f 23/118/83 21/101/67 305/104/68 306/280/236
+f 25/111/75 23/118/83 306/280/236 307/281/237
+f 195/224/185 196/282/196 228/10/199 227/13/186
+f 27/112/76 25/111/75 307/281/237 308/283/238
+f 1/89/55 27/112/76 308/283/238 24/90/56
+f 233/284/239 235/285/240 236/119/241 234/107/242
+f 235/285/240 237/286/243 238/105/244 236/119/241
+f 237/286/243 239/287/245 240/106/246 238/105/244
+f 239/287/245 241/288/247 242/116/248 240/106/246
+f 241/288/247 243/289/249 244/117/250 242/116/248
+f 243/289/249 245/290/251 246/120/252 244/117/250
+f 245/290/251 247/291/253 248/113/254 246/120/252
+f 247/291/253 249/292/255 250/114/256 248/113/254
+f 249/292/255 251/81/47 252/84/50 250/114/256
+f 259/293/257 233/284/239 234/107/242 260/108/258
+f 257/70/36 259/293/257 260/108/258 258/71/37
+f 239/287/245 264/76/259 265/73/260 241/288/247
+f 267/89/261 283/90/262 284/283/263 268/112/264
+f 257/70/36 275/93/265 276/91/266 259/293/257
+f 245/290/251 267/89/261 268/112/264 247/291/253
+f 251/81/47 270/118/267 271/101/268 253/82/48
+f 235/285/240 262/80/269 263/78/270 237/286/243
+f 255/294/271 273/97/272 274/95/273 256/69/35
+f 241/288/247 265/73/260 266/87/274 243/289/249
+f 259/293/257 276/91/266 261/86/275 233/284/239
+f 233/284/239 261/86/275 262/80/269 235/285/240
+f 247/291/253 268/112/264 269/111/276 249/292/255
+f 253/82/48 271/101/268 272/102/277 254/295/278
+f 237/286/243 263/78/270 264/76/259 239/287/245
+f 256/69/35 274/95/273 275/93/265 257/70/36
+f 243/289/249 266/87/274 267/89/261 245/290/251
+f 249/292/255 269/111/276 270/118/267 251/81/47
+f 254/296/278 272/99/277 273/97/272 255/294/271
+f 265/73/260 281/74/279 282/88/280 266/87/274
+f 276/91/266 292/92/281 277/85/282 261/86/275
+f 263/78/270 279/77/283 280/75/284 264/76/259
+f 274/95/273 290/96/285 291/94/286 275/93/265
+f 261/86/275 277/85/282 278/79/287 262/80/269
+f 272/99/277 288/100/288 289/98/289 273/97/272
+f 270/118/267 286/280/290 287/104/291 271/101/268
+f 268/112/264 284/283/263 285/281/292 269/111/276
+f 266/87/274 282/88/280 283/90/262 267/89/261
+f 264/76/259 280/75/284 281/74/279 265/73/260
+f 275/93/265 291/94/286 292/92/281 276/91/266
+f 262/80/269 278/79/287 279/77/283 263/78/270
+f 273/97/272 289/98/289 290/96/285 274/95/273
+f 271/101/268 287/104/291 288/103/288 272/102/277
+f 269/111/276 285/281/292 286/280/290 270/118/267
+f 8/12/43 6/11/41 204/297/222 205/298/230
+f 16/22/293 14/20/294 209/299/229 210/300/228
+f 26/32/295 184/30/235 214/279/225 215/301/224
+f 6/8/41 4/6/40 203/275/223 204/302/222
+f 28/34/296 26/32/295 215/301/224 216/303/231
+f 181/24/218 16/22/293 210/300/228 211/240/219
+f 10/14/45 8/12/43 205/298/230 206/278/227
+f 255/294/271 256/69/35 296/72/38 295/115/297
+f 254/296/278 255/294/271 295/115/297 294/121/298
+f 253/82/48 254/295/278 294/122/298 293/83/49
+f 109/304/176 110/305/182 298/306/299
+f 110/305/182 111/307/179 298/306/299
+f 111/307/179 112/308/178 298/306/299
+f 112/308/178 113/309/175 298/306/299
+f 113/309/175 114/310/174 298/306/299
+f 114/310/174 115/311/173 298/306/299
+f 115/311/173 116/312/172 298/306/299
+f 116/312/172 117/313/171 298/306/299
+f 117/313/171 118/314/170 298/306/299
+f 118/314/170 119/315/156 298/306/299
+f 119/315/156 120/316/155 298/306/299
+f 120/316/155 121/317/183 298/306/299
+f 121/317/183 122/318/181 298/306/299
+f 122/318/181 123/319/180 298/306/299
+f 123/319/180 124/320/177 298/306/299
+f 124/320/177 109/304/176 298/306/299
+f 24/40/56 28/34/296 216/303/231 201/321/234
+f 22/5/54 24/40/56 201/321/234 202/274/233
+f 14/20/294 18/18/58 208/277/232 209/299/229
+f 16/258/300 302/322/62 301/323/60 14/259/301
+f 307/324/237 26/250/302 28/266/303 308/325/238
+f 26/250/302 307/324/237 184/251/304
+f 16/258/300 181/243/304 302/322/62
+f 307/324/237 306/326/236 184/251/304
+f 302/322/62 181/243/304 303/327/64
+f 181/243/304 182/242/304 303/327/64
+f 184/251/304 306/326/236 183/262/304
+f 306/326/236 305/328/68 183/262/304
+f 303/327/64 182/242/304 304/329/66
+f 304/329/66 182/242/304 183/262/304 305/328/68
+g Cylinder_Cylinder_tank
+f 145/330/305 146/331/306 142/332/307 141/333/308
+f 146/334/306 147/335/309 143/336/310 142/337/307
+f 147/330/309 148/331/311 144/332/312 143/333/310
+f 148/338/311 145/339/305 141/340/308 144/341/312
+f 141/163/308 142/142/307 143/208/310 144/219/312
+f 145/339/313 148/338/314 312/342/315 309/343/316
+f 309/343/316 312/342/315 316/344/317 313/302/318
+f 148/331/314 147/330/319 311/345/320 312/346/315
+f 147/335/319 146/334/321 310/347/322 311/348/320
+f 146/331/321 145/330/313 309/345/316 310/346/322
+f 316/208/317 315/219/323 314/163/324 313/142/318
+f 312/346/315 311/345/320 315/349/323 316/350/317
+f 311/348/320 310/347/322 314/351/324 315/352/323
+f 310/346/322 309/345/316 313/349/318 314/350/324
+g Cylinder_Cylinder_water
+f 277/353/299 297/354/299 292/355/299
+f 292/355/299 297/354/299 291/356/299
+f 291/356/299 297/354/299 290/357/299
+f 290/357/299 297/354/299 289/358/299
+f 289/358/299 297/354/299 288/359/299
+f 288/359/299 297/354/299 287/360/299
+f 287/360/299 297/354/299 286/361/299
+f 286/361/299 297/354/299 285/362/299
+f 285/362/299 297/354/299 284/363/299
+f 284/363/299 297/354/299 283/364/299
+f 283/364/299 297/354/299 282/365/299
+f 282/365/299 297/354/299 281/366/299
+f 281/366/299 297/354/299 280/367/299
+f 280/367/299 297/354/299 279/368/299
+f 279/368/299 297/354/299 278/369/299
+f 278/369/299 297/354/299 277/353/299
+g Cylinder_Cylinder_metal-parts
+f 317/370/325 318/221/326 320/222/327 319/371/328
+f 319/372/328 320/220/327 322/214/329 321/373/330
+f 321/373/330 322/214/329 324/215/331 323/374/332
+f 323/374/332 324/215/331 326/218/333 325/375/334
+f 326/94/335 343/70/336 342/284/337 337/85/338
+f 327/376/339 328/219/340 318/221/326 317/370/325
+f 325/375/334 326/218/333 328/219/340 327/376/339
+f 317/377/325 319/378/328 321/379/330 323/380/332 325/381/334 327/382/339
+f 429/380/341 430/383/342 335/384/337
+f 336/385/343 334/386/335 333/387/338
+f 329/107/344 430/110/342 332/109/345 330/108/346
+f 430/383/342 429/380/341 332/388/345
+f 334/71/335 331/140/336 335/110/337 333/107/338
+f 344/389/341 342/390/337 343/391/336
+f 428/392/342 344/389/341 338/393/347
+f 351/229/348 352/230/349 345/7/350 346/9/351
+f 347/99/352 348/97/353 350/98/354 349/100/355
+f 353/394/356 354/395/357 360/138/358 359/141/359
+f 349/100/355 350/98/354 352/230/349 351/229/348
+f 361/166/360 362/165/361 354/395/357 353/394/356
+f 359/141/359 360/138/358 356/115/362 355/121/363
+f 357/296/364 358/294/365 348/97/353 347/99/352
+f 355/121/363 356/115/362 358/294/365 357/296/364
+f 346/9/351 345/7/350 362/275/361 361/302/360
+f 350/396/354 363/397/366 352/398/349
+f 348/399/353 363/397/366 350/396/354
+f 358/400/365 363/397/366 348/399/353
+f 358/400/365 356/401/362 363/397/366
+f 352/398/349 363/397/366 345/402/350
+f 363/397/366 356/401/362 345/402/350
+f 360/403/358 345/402/350 356/401/362
+f 345/402/350 360/403/358 362/404/361
+f 360/403/358 354/405/357 362/404/361
+f 353/406/356 359/407/359 361/408/360
+f 361/408/360 359/407/359 346/409/351
+f 359/407/359 355/410/363 346/409/351
+f 382/179/367 365/177/368 367/195/369 389/197/370
+f 389/197/370 367/195/369 369/210/371 390/212/372
+f 390/411/372 369/412/371 371/123/373 391/145/374
+f 391/145/374 371/123/373 373/126/375 392/148/376
+f 365/177/368 375/413/377 376/414/378 381/144/379
+f 393/415/380 375/413/377 365/177/368 382/179/367
+f 392/148/376 373/126/375 375/413/377 393/415/380
+f 364/416/381 366/417/382 368/418/383 370/419/384 372/420/385 374/421/386
+f 398/176/387 399/143/388 405/174/389 404/175/390
+f 367/195/369 365/177/368 381/144/379 380/194/391
+f 369/210/371 367/195/369 380/194/391 379/209/392
+f 371/123/373 369/412/371 379/422/392 378/124/393
+f 373/126/375 371/123/373 378/124/393 377/125/394
+f 375/413/377 373/126/375 377/125/394 376/414/378
+f 364/187/381 388/183/395 383/199/396 366/203/382
+f 366/203/382 383/199/396 384/216/397 368/220/383
+f 368/423/383 384/424/397 385/149/398 370/157/384
+f 370/157/384 385/149/398 386/152/399 372/160/385
+f 374/425/386 387/426/400 388/183/395 364/187/381
+f 372/160/385 386/152/399 387/426/400 374/425/386
+f 387/426/400 393/415/380 382/179/367 388/183/395
+f 385/149/398 391/145/374 392/148/376 386/152/399
+f 384/424/397 390/411/372 391/145/374 385/149/398
+f 383/199/396 389/197/370 390/212/372 384/216/397
+f 388/183/395 382/179/367 389/197/370 383/199/396
+f 380/194/391 381/144/379 399/143/388 398/176/387
+f 386/152/399 392/148/376 393/415/380 387/426/400
+f 379/209/392 380/194/391 398/176/387 397/208/401
+f 378/124/393 379/422/392 397/427/401 396/169/402
+f 377/125/394 378/124/393 396/169/402 395/142/403
+f 376/414/378 377/125/394 395/142/403 394/428/404
+f 381/144/379 376/414/378 394/428/404 399/143/388
+f 404/175/390 405/174/389 411/190/405 410/191/406
+f 397/208/401 398/176/387 404/175/390 403/193/407
+f 396/169/402 397/427/401 403/395/407 402/165/408
+f 395/142/403 396/169/402 402/165/408 401/168/409
+f 394/428/404 395/142/403 401/168/409 400/429/410
+f 399/143/388 394/428/404 400/429/410 405/174/389
+f 403/193/407 404/175/390 410/191/406 409/192/411
+f 402/165/408 403/395/407 409/394/411 408/166/412
+f 401/168/409 402/165/408 408/166/412 407/167/413
+f 400/429/410 401/168/409 407/167/413 406/430/414
+f 405/174/389 400/429/410 406/430/414 411/190/405
+f 412/224/415 413/282/416 415/10/417 414/13/418
+f 414/13/418 415/10/417 417/297/419 416/298/420
+f 416/431/420 417/432/419 419/137/421 418/136/422
+f 418/136/422 419/137/421 421/371/423 420/370/424
+f 420/370/424 421/371/423 423/122/425 422/83/426
+f 422/83/426 423/122/425 425/102/427 424/101/428
+f 415/433/417 413/434/416 427/435/429 425/436/427 423/437/425 421/438/423 419/439/421 417/440/419
+f 426/104/430 427/103/429 413/282/416 412/224/415
+f 424/101/428 425/102/427 427/103/429 426/104/430
+f 412/441/415 414/442/418 416/443/420 418/444/422 420/445/424 422/446/426 424/447/428 426/448/430
+f 322/449/329 320/450/327 318/451/326 328/452/340 326/453/333 324/454/331
+f 344/389/341 428/392/342 342/390/337
+f 340/85/344 428/284/342 338/293/347 339/92/346
+f 429/380/341 335/384/337 331/381/336
+f 324/454/343 326/453/335 337/455/338
+f 340/456/344 339/457/346 324/454/343
+f 324/454/343 337/455/338 340/456/344
+f 329/458/344 330/459/346 336/385/343
+f 336/385/343 333/387/338 329/458/344
diff --git a/homedecor_modpack/homedecor/models/homedecor_toilet_paper.obj b/homedecor_modpack/homedecor/models/homedecor_toilet_paper.obj
new file mode 100644
index 0000000..38589bf
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_toilet_paper.obj
@@ -0,0 +1,223 @@
+# Blender v2.73 (sub 0) OBJ File: 'toilet_paper.blend'
+# www.blender.org
+o nodebox-3
+v 0.187499 0.216954 0.063069
+v -0.124999 0.216954 0.063069
+v 0.187499 0.345883 0.063069
+v -0.124999 0.345883 0.063069
+v 0.187499 0.437050 0.154235
+v -0.124999 0.437050 0.154235
+v 0.187499 0.437050 0.283165
+v -0.124999 0.437050 0.283165
+v 0.187499 0.345883 0.374331
+v -0.124999 0.345883 0.374331
+v 0.187499 0.216954 0.374331
+v -0.124999 0.216954 0.374331
+v 0.187499 0.125787 0.283165
+v -0.124999 0.125787 0.283165
+v 0.187499 0.125787 0.154235
+v -0.124999 0.125787 0.154235
+v -0.187501 0.249999 0.187499
+v -0.125000 0.249999 0.187499
+v -0.187501 0.187500 0.437499
+v -0.187501 0.249999 0.437499
+v -0.125000 0.187500 0.437499
+v -0.125000 0.249999 0.437499
+v -0.187501 0.187500 0.500000
+v -0.125000 0.187500 0.500000
+v -0.187501 0.312500 0.187499
+v -0.125000 0.312500 0.187499
+v -0.187501 0.312500 0.437499
+v -0.187501 0.374999 0.437499
+v -0.125000 0.312500 0.437499
+v -0.125000 0.374999 0.437499
+v -0.187501 0.374999 0.500000
+v -0.125000 0.374999 0.500000
+v 0.187499 0.249999 0.187499
+v 0.250000 0.249999 0.187499
+v 0.187499 0.187500 0.437499
+v 0.187499 0.249999 0.437499
+v 0.250000 0.187500 0.437499
+v 0.250000 0.249999 0.437499
+v 0.187499 0.187500 0.500000
+v 0.250000 0.187500 0.500000
+v 0.187499 0.312500 0.187499
+v 0.250000 0.312500 0.187499
+v 0.187499 0.312500 0.437499
+v 0.187499 0.374999 0.437499
+v 0.250000 0.312500 0.437499
+v 0.250000 0.374999 0.437499
+v 0.187499 0.374999 0.500000
+v 0.250000 0.374999 0.500000
+v -0.124999 0.281418 0.218700
+v 0.187499 0.281418 0.218700
+vt -0.000000 0.875000
+vt 0.312500 0.875000
+vt 0.312500 1.000000
+vt -0.000000 1.000000
+vt -0.000000 0.000000
+vt 0.312500 0.000000
+vt 0.312500 0.125000
+vt -0.000000 0.125000
+vt 0.312500 0.250000
+vt -0.000000 0.250000
+vt 0.312500 0.375000
+vt -0.000000 0.375000
+vt 0.312500 0.500000
+vt -0.000000 0.500000
+vt 0.312500 0.625000
+vt -0.000000 0.625000
+vt 1.000000 0.341529
+vt 1.000000 0.470971
+vt 0.843750 0.406250
+vt -0.000000 0.750000
+vt 0.312500 0.750000
+vt 0.687500 0.877221
+vt 0.687500 0.747779
+vt 0.843750 0.812500
+vt 0.779029 0.656250
+vt 0.908470 0.656250
+vt 1.000000 0.747779
+vt 1.000000 0.877221
+vt 0.908470 0.968750
+vt 0.779029 0.968750
+vt 0.908471 0.562500
+vt 0.779029 0.562500
+vt 0.687500 0.470971
+vt 0.687500 0.341529
+vt 0.779029 0.250000
+vt 0.908471 0.250000
+vt 0.625000 0.312500
+vt 0.750000 0.437500
+vt 0.625000 0.437500
+vt 0.750000 0.062500
+vt 0.625000 0.187500
+vt 0.625000 0.062500
+vt 0.500000 0.562500
+vt 0.500000 0.437500
+vt 0.625000 0.562500
+vt 0.125000 0.875000
+vt 0.125000 1.000000
+vt 0.625000 0.687500
+vt 0.750000 0.687500
+vt 0.750000 0.812500
+vt 0.625000 0.812500
+vt 0.000000 0.062500
+vt 0.500000 0.062500
+vt 0.500000 0.187500
+vt 0.000000 0.187500
+vt 0.375000 0.312500
+vt 0.375000 0.187500
+vt 0.500000 0.312500
+vt 0.000000 0.312500
+vt 0.000000 0.437500
+vt 0.750000 0.312500
+vt 0.000000 0.562500
+vt 0.500000 0.687500
+vt 0.375000 0.687500
+vt 0.375000 0.562500
+vt 0.125000 0.437500
+vt 0.125000 0.562500
+vt 0.500000 0.812500
+vt 0.000000 0.687500
+vt 0.750000 0.875000
+vt 0.625000 0.875000
+vt 0.625000 0.750000
+vt 0.000000 0.812500
+vt 0.125000 0.312500
+vt 0.125000 0.187500
+vt 0.125000 0.750000
+vt 0.125000 0.625000
+vt 0.625000 0.500000
+vt 0.750000 0.500000
+vt 0.625000 0.625000
+vn 0.630200 -0.297100 -0.717300
+vn -0.630200 -0.297100 -0.717300
+vn -0.630200 0.297100 -0.717300
+vn 0.630200 0.297100 -0.717300
+vn -0.630200 0.717300 -0.297100
+vn 0.630200 0.717300 -0.297100
+vn -0.630200 0.717300 0.297100
+vn 0.630200 0.717300 0.297100
+vn -0.630200 0.297100 0.717300
+vn 0.630200 0.297100 0.717300
+vn -0.630200 -0.297100 0.717300
+vn 0.630200 -0.297100 0.717300
+vn -0.630200 -0.717300 0.297100
+vn 0.630200 -0.717300 0.297100
+vn 1.000000 0.000000 0.000000
+vn 0.630200 -0.717300 -0.297100
+vn -0.630200 -0.717300 -0.297100
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 -0.000000 1.000000
+g nodebox-3_nodebox-3_paper
+s 1
+f 1/1/1 2/2/2 4/3/3 3/4/4
+f 3/5/4 4/6/3 6/7/5 5/8/6
+f 5/8/6 6/7/5 8/9/7 7/10/8
+f 7/10/8 8/9/7 10/11/9 9/12/10
+f 9/12/10 10/11/9 12/13/11 11/14/12
+f 11/14/12 12/13/11 14/15/13 13/16/14
+f 1/17/1 3/18/4 50/19/15
+f 15/20/16 16/21/17 2/2/2 1/1/1
+f 13/16/14 14/15/13 16/21/17 15/20/16
+f 4/22/3 2/23/2 49/24/18
+f 2/23/2 16/25/17 49/24/18
+f 16/25/17 14/26/13 49/24/18
+f 14/26/13 12/27/11 49/24/18
+f 12/27/11 10/28/9 49/24/18
+f 10/28/9 8/29/7 49/24/18
+f 8/29/7 6/30/5 49/24/18
+f 6/30/5 4/22/3 49/24/18
+f 3/18/4 5/31/6 50/19/15
+f 5/31/6 7/32/8 50/19/15
+f 7/32/8 9/33/10 50/19/15
+f 9/33/10 11/34/12 50/19/15
+f 11/34/12 13/35/14 50/19/15
+f 13/35/14 15/36/16 50/19/15
+f 15/36/16 1/17/1 50/19/15
+g nodebox-3_nodebox-3_holder
+s off
+f 27/37/18 31/38/18 28/39/18
+f 23/40/18 20/41/18 19/42/18
+f 34/43/19 33/44/19 41/39/19 42/45/19
+f 45/46/15 46/47/15 48/4/15
+f 44/48/20 47/49/20 48/50/20 46/51/20
+f 20/52/21 17/53/21 18/54/21 22/55/21
+f 24/56/21 23/57/21 19/54/21 21/58/21
+f 25/59/20 27/58/20 29/44/20 26/60/20
+f 27/58/19 28/37/19 30/39/19 29/44/19
+f 31/55/22 23/57/22 24/56/22 32/59/22
+f 30/39/20 28/37/20 31/61/20 32/38/20
+f 38/62/21 36/60/21 33/44/21 34/43/21
+f 19/54/19 20/41/19 22/37/19 21/58/19
+f 36/45/19 38/48/19 37/63/19 35/43/19
+f 35/43/21 37/63/21 40/64/21 39/65/21
+f 32/62/15 29/66/15 30/67/15
+f 25/42/19 26/41/19 18/54/19 17/53/19
+f 43/63/19 44/48/19 46/51/19 45/68/19
+f 48/69/22 47/62/22 39/65/22 40/64/22
+f 47/70/18 44/71/18 43/72/18
+f 42/73/20 41/69/20 43/63/20 45/68/20
+f 31/38/18 20/41/18 23/40/18
+f 27/37/18 20/41/18 31/38/18
+f 25/74/18 17/75/18 20/41/18
+f 27/37/18 25/74/18 20/41/18
+f 38/76/15 40/16/15 37/77/15
+f 45/46/15 48/4/15 40/16/15
+f 45/46/15 40/16/15 38/76/15
+f 42/71/15 45/46/15 38/76/15
+f 34/72/15 42/71/15 38/76/15
+f 21/75/15 22/74/15 24/55/15
+f 24/55/15 29/66/15 32/62/15
+f 24/55/15 22/74/15 29/66/15
+f 22/74/15 18/37/15 26/39/15
+f 29/66/15 22/74/15 26/39/15
+f 35/78/18 39/79/18 36/80/18
+f 39/79/18 47/70/18 36/80/18
+f 47/70/18 43/72/18 36/80/18
+f 43/72/18 41/76/18 33/77/18
+f 36/80/18 43/72/18 33/77/18
diff --git a/homedecor_modpack/homedecor/models/homedecor_tool_cabinet.obj b/homedecor_modpack/homedecor/models/homedecor_tool_cabinet.obj
new file mode 100644
index 0000000..6dc379c
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_tool_cabinet.obj
@@ -0,0 +1,1589 @@
+# Blender v2.73 (sub 0) OBJ File: 'tool-cabinet.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 -0.437500 -0.468750
+v 0.500000 -0.437500 0.500000
+v -0.500000 -0.437500 0.500000
+v -0.500000 -0.437500 -0.468750
+v 0.500000 0.500000 -0.468750
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.468750
+v 0.437500 0.500000 0.437500
+v 0.437500 0.500000 0.500000
+v -0.437500 0.500000 0.500000
+v -0.437500 0.500000 0.437500
+v 0.437500 1.500000 0.437500
+v 0.437500 1.500000 0.500000
+v -0.437500 1.500000 0.500000
+v -0.437500 1.500000 0.437500
+v -0.500000 0.437500 -0.468750
+v -0.500000 0.437500 0.500000
+v 0.500000 0.437500 0.500000
+v 0.500000 0.437500 -0.468750
+v 0.375000 0.937500 -0.312500
+v 0.375000 0.937500 0.171875
+v 0.125000 0.937500 0.171875
+v 0.125000 0.937500 -0.312500
+v 0.375000 1.312500 -0.312500
+v 0.375000 1.312500 0.171875
+v 0.125000 1.312500 0.171875
+v 0.125000 1.312500 -0.312500
+v 0.437500 0.500000 -0.375000
+v 0.437500 0.500000 0.187500
+v 0.062500 0.500000 0.187500
+v 0.062500 0.500000 -0.375000
+v 0.437500 0.562500 -0.375000
+v 0.437500 0.562500 0.187500
+v 0.062500 0.562500 0.187500
+v 0.062500 0.562500 -0.375000
+v 0.227903 0.937500 0.071653
+v 0.227903 0.562500 0.071653
+v 0.218750 0.937500 0.093750
+v 0.218750 0.562500 0.093750
+v 0.227903 0.937500 0.115847
+v 0.227903 0.562500 0.115847
+v 0.250000 0.937500 0.125000
+v 0.250000 0.562500 0.125000
+v 0.250000 0.875000 -0.218750
+v 0.250000 0.812500 -0.218750
+v 0.250000 0.875000 -0.187500
+v 0.250000 0.937500 -0.187500
+v 0.205806 0.875000 -0.205806
+v 0.205806 0.937500 -0.205806
+v 0.187500 0.875000 -0.250000
+v 0.187500 0.937500 -0.250000
+v 0.205806 0.875000 -0.294194
+v 0.205806 0.937500 -0.294194
+v 0.250000 0.875000 -0.312500
+v 0.250000 0.937500 -0.312500
+v 0.294194 0.875000 -0.294194
+v 0.294194 0.937500 -0.294194
+v 0.312500 0.875000 -0.250000
+v 0.312500 0.937500 -0.250000
+v 0.294194 0.875000 -0.205806
+v 0.294194 0.937500 -0.205806
+v 0.227903 0.812500 -0.227903
+v 0.227903 0.875000 -0.227903
+v 0.218750 0.812500 -0.250000
+v 0.218750 0.875000 -0.250000
+v 0.227903 0.812500 -0.272097
+v 0.227903 0.875000 -0.272097
+v 0.250000 0.812500 -0.281250
+v 0.250000 0.875000 -0.281250
+v 0.272097 0.812500 -0.272097
+v 0.272097 0.875000 -0.272097
+v 0.281250 0.812500 -0.250000
+v 0.281250 0.875000 -0.250000
+v 0.272097 0.812500 -0.227903
+v 0.272097 0.875000 -0.227903
+v 0.250000 0.812500 -0.242188
+v 0.250000 0.687500 -0.242188
+v 0.244476 0.687500 -0.244476
+v 0.244476 0.812500 -0.244476
+v 0.242188 0.687500 -0.250000
+v 0.242188 0.812500 -0.250000
+v 0.244476 0.687500 -0.255524
+v 0.244476 0.812500 -0.255524
+v 0.250000 0.687500 -0.257812
+v 0.250000 0.812500 -0.257812
+v 0.255524 0.687500 -0.255524
+v 0.255524 0.812500 -0.255524
+v 0.257812 0.687500 -0.250000
+v 0.257812 0.812500 -0.250000
+v 0.255524 0.687500 -0.244476
+v 0.255524 0.812500 -0.244476
+v 0.250000 0.675781 -0.250000
+v 0.250000 0.812500 -0.250000
+v 0.250000 0.875000 -0.250000
+v 0.250000 0.562500 0.062500
+v 0.250000 0.937500 0.062500
+v 0.272097 0.562500 0.071653
+v 0.272097 0.937500 0.071653
+v 0.281250 0.562500 0.093750
+v 0.281250 0.937500 0.093750
+v 0.272097 0.562500 0.115847
+v 0.272097 0.937500 0.115847
+v 0.250000 1.312500 -0.375000
+v 0.250000 0.937500 -0.375000
+v 0.312500 1.312500 -0.367188
+v 0.187500 0.937500 -0.367188
+v 0.187500 1.312500 -0.367188
+v 0.312500 0.937500 -0.367188
+v 0.140625 1.312500 0.187500
+v 0.359375 0.937500 0.187500
+v 0.359375 1.312500 0.187500
+v 0.140625 0.937500 0.187500
+v 0.103393 1.412175 -0.349920
+v 0.103393 1.049953 -0.252863
+v 0.099165 1.413269 -0.345836
+v 0.099165 1.051047 -0.248779
+v 0.099165 1.414817 -0.340060
+v 0.099165 1.052595 -0.243003
+v 0.103393 1.415911 -0.335976
+v 0.103393 1.053689 -0.238919
+v 0.109373 1.049953 -0.252863
+v 0.109373 1.412175 -0.349920
+v 0.113601 1.051047 -0.248779
+v 0.113601 1.413269 -0.345836
+v 0.113601 1.052595 -0.243003
+v 0.113601 1.414817 -0.340060
+v 0.109373 1.053689 -0.238919
+v 0.109373 1.415911 -0.335976
+v 0.099165 1.334922 -0.324843
+v 0.103393 1.333828 -0.328927
+v 0.099165 1.336470 -0.319067
+v 0.103393 1.337564 -0.314983
+v 0.109373 1.333828 -0.328927
+v 0.113601 1.334922 -0.324843
+v 0.113601 1.336470 -0.319067
+v 0.109373 1.337564 -0.314983
+v 0.100403 1.411292 -0.327266
+v 0.091947 1.406008 -0.346985
+v 0.100403 1.403819 -0.355154
+v 0.091947 1.409103 -0.335434
+v 0.112362 1.403819 -0.355154
+v 0.120818 1.406008 -0.346985
+v 0.120818 1.409103 -0.335434
+v 0.112362 1.411292 -0.327266
+v 0.091947 1.340614 -0.329463
+v 0.100403 1.338425 -0.337631
+v 0.091947 1.343709 -0.317912
+v 0.112362 1.338425 -0.337631
+v 0.120818 1.340614 -0.329463
+v 0.120818 1.343709 -0.317912
+v 0.112362 1.345897 -0.309743
+v 0.100403 1.345897 -0.309743
+v 0.109375 1.062096 -0.256092
+v 0.109375 1.067274 -0.253102
+v 0.109375 1.068822 -0.247327
+v 0.109375 1.065832 -0.242148
+v 0.109375 1.056320 -0.254545
+v 0.109375 1.053331 -0.249366
+v 0.109375 1.054878 -0.243591
+v 0.109375 1.060056 -0.240601
+v 0.125000 1.062096 -0.256092
+v 0.125000 1.067274 -0.253102
+v 0.125000 1.068822 -0.247327
+v 0.125000 1.065832 -0.242148
+v 0.125000 1.056320 -0.254545
+v 0.125000 1.053331 -0.249366
+v 0.125000 1.054878 -0.243591
+v 0.125000 1.060056 -0.240601
+v 0.437500 0.250000 -0.500000
+v 0.437500 0.250000 -0.468750
+v -0.437500 0.250000 -0.468750
+v -0.437500 0.250000 -0.500000
+v 0.437500 0.375000 -0.500000
+v 0.437500 0.375000 -0.468750
+v -0.437500 0.375000 -0.468750
+v -0.437500 0.375000 -0.500000
+v 0.437500 0.062500 -0.500000
+v 0.437500 0.062500 -0.468750
+v -0.437500 0.062500 -0.468750
+v -0.437500 0.062500 -0.500000
+v 0.437500 0.187500 -0.500000
+v 0.437500 0.187500 -0.468750
+v -0.437500 0.187500 -0.468750
+v -0.437500 0.187500 -0.500000
+v 0.437500 -0.125000 -0.500000
+v 0.437500 -0.125000 -0.468750
+v -0.437500 -0.125000 -0.468750
+v -0.437500 -0.125000 -0.500000
+v 0.437500 0.000000 -0.500000
+v 0.437500 0.000000 -0.468750
+v -0.437500 0.000000 -0.468750
+v -0.437500 0.000000 -0.500000
+v 0.437500 -0.375000 -0.500000
+v 0.437500 -0.375000 -0.468750
+v -0.437500 -0.375000 -0.468750
+v -0.437500 -0.375000 -0.500000
+v 0.437500 -0.187500 -0.500000
+v 0.437500 -0.187500 -0.468750
+v -0.437500 -0.187500 -0.468750
+v -0.437500 -0.187500 -0.500000
+v -0.231771 0.861973 0.406249
+v -0.260417 0.812494 0.437499
+v -0.302083 0.812494 0.437499
+v -0.330729 0.861973 0.406249
+v -0.231771 0.765619 0.406249
+v -0.260417 1.179698 0.437499
+v -0.302083 1.179698 0.437499
+v -0.330729 0.765619 0.406249
+v -0.260417 0.874994 0.406249
+v -0.302083 1.125011 0.437499
+v -0.343750 1.166677 0.437499
+v -0.218750 0.833328 0.406249
+v -0.260417 0.749994 0.406249
+v -0.302083 1.250011 0.437499
+v -0.343750 1.208344 0.437499
+v -0.218750 0.791661 0.406249
+v -0.343750 0.833328 0.406249
+v -0.218750 1.166677 0.437499
+v -0.260417 1.125011 0.437499
+v -0.302083 0.874994 0.406249
+v -0.343750 0.791661 0.406249
+v -0.218750 1.208344 0.437499
+v -0.260417 1.250011 0.437499
+v -0.302083 0.749994 0.406249
+v -0.330729 1.140636 0.437499
+v -0.231771 1.236990 0.406249
+v -0.231771 1.140636 0.437499
+v -0.330729 1.236990 0.406249
+v -0.330729 1.236990 0.437499
+v -0.231771 1.140636 0.406249
+v -0.231771 1.236990 0.437499
+v -0.330729 1.140636 0.406249
+v -0.260417 1.250011 0.406249
+v -0.302083 0.749994 0.437499
+v -0.343750 0.791661 0.437499
+v -0.218750 1.208344 0.406249
+v -0.260417 1.125011 0.406249
+v -0.302083 0.874994 0.437499
+v -0.343750 0.833328 0.437499
+v -0.218750 1.166677 0.406249
+v -0.343750 1.208344 0.406249
+v -0.218750 0.791661 0.437499
+v -0.260417 0.749994 0.437499
+v -0.302083 1.250011 0.406249
+v -0.343750 1.166677 0.406249
+v -0.218750 0.833328 0.437499
+v -0.260417 0.874994 0.437499
+v -0.302083 1.125011 0.406249
+v -0.330729 0.765619 0.437499
+v -0.302083 1.179698 0.406249
+v -0.231771 0.765619 0.437499
+v -0.260417 1.179698 0.406249
+v -0.330729 0.861973 0.437499
+v -0.302083 0.812494 0.406249
+v -0.231771 0.861973 0.437499
+v -0.260417 0.812494 0.406249
+v 0.050541 1.250000 0.350886
+v 0.050541 0.687500 0.350886
+v 0.033629 1.250000 0.367798
+v 0.033629 0.687500 0.367798
+v 0.033629 1.250000 0.391716
+v 0.033629 0.687500 0.391716
+v 0.050541 1.250000 0.408628
+v 0.050541 0.687500 0.408628
+v 0.074459 0.687500 0.350886
+v 0.074459 1.250000 0.350886
+v 0.091371 0.687500 0.367798
+v 0.091371 1.250000 0.367798
+v 0.091371 0.687500 0.391716
+v 0.091371 1.250000 0.391716
+v 0.074459 0.687500 0.408628
+v 0.074459 1.250000 0.408628
+v 0.062500 0.687500 0.379757
+v 0.125000 1.360299 0.355839
+v 0.125000 1.278639 0.437499
+v 0.125000 1.326474 0.437500
+v 0.125000 1.326474 0.322015
+v 0.125000 1.244814 0.403675
+v 0.125000 1.360299 0.403675
+v 0.125000 1.278639 0.322015
+v 0.125000 1.244814 0.355839
+v 0.187500 1.285665 0.420536
+v -0.086418 1.272005 0.437499
+v 0.129640 1.353408 0.358694
+v 0.129640 1.251705 0.358694
+v 0.173367 1.278639 0.437499
+v 0.173367 1.278639 0.322015
+v 0.129640 1.281493 0.430608
+v 0.173367 1.244814 0.403675
+v 0.129640 1.281493 0.328906
+v 0.173367 1.360299 0.403675
+v 0.129640 1.251705 0.400820
+v 0.173367 1.326474 0.322014
+v 0.129640 1.353408 0.400820
+v 0.173367 1.326474 0.437499
+v 0.129640 1.323620 0.328906
+v 0.173367 1.360299 0.355839
+v 0.129640 1.323620 0.430608
+v 0.173367 1.244814 0.355839
+v -0.038582 1.326474 0.437500
+v 0.187500 1.319448 0.420536
+v 0.000000 1.360299 0.403675
+v 0.187500 1.343336 0.396648
+v 0.000000 1.360299 0.355839
+v 0.187500 1.343336 0.362866
+v -0.038582 1.326474 0.322015
+v 0.187500 1.319448 0.338978
+v -0.086418 1.272005 0.322014
+v 0.187500 1.285665 0.338978
+v -0.104375 1.208711 0.369712
+v 0.187500 1.261777 0.362866
+v -0.104375 1.208711 0.389802
+v 0.187500 1.261777 0.396648
+v 0.134167 1.244814 0.355839
+v 0.134167 1.326474 0.322015
+v 0.134166 1.326474 0.437500
+v 0.134167 1.360299 0.355839
+v 0.134166 1.278639 0.437499
+v 0.134167 1.360299 0.403675
+v 0.134167 1.244814 0.403675
+v 0.134167 1.278639 0.322015
+v -0.016875 1.252626 0.379757
+v -0.027812 1.248604 0.388128
+v -0.027812 1.248604 0.371386
+v 0.000000 1.244814 0.355839
+v 0.000000 1.244814 0.403675
+v -0.015625 1.240791 0.403675
+v -0.015625 1.240791 0.355839
+v 0.019291 1.278716 0.437499
+v 0.019291 1.278715 0.322014
+v -0.125000 1.224336 0.355839
+v -0.125000 1.224336 0.403675
+v 0.000000 1.268251 0.379757
+v -0.015625 1.264229 0.391716
+v -0.015625 1.264229 0.367798
+v -0.095396 1.232546 0.345863
+v -0.095396 1.232546 0.413651
+v -0.304688 1.110789 0.398438
+v -0.304688 1.110789 0.437500
+v -0.320312 1.110789 0.437500
+v -0.320312 1.110789 0.398438
+v -0.304688 1.126414 0.398438
+v -0.304688 1.126414 0.437500
+v -0.320312 1.126414 0.437500
+v -0.320312 1.126414 0.398438
+v -0.242187 1.110789 0.398438
+v -0.242187 1.110789 0.437500
+v -0.257812 1.110789 0.437500
+v -0.257812 1.110789 0.398438
+v -0.242187 1.126414 0.398438
+v -0.242187 1.126414 0.437500
+v -0.257812 1.126414 0.437500
+v -0.257812 1.126414 0.398438
+v 0.031250 1.229186 0.343750
+v 0.031250 1.229186 0.437500
+v 0.015625 1.229186 0.437500
+v 0.015625 1.229186 0.343750
+v 0.031250 1.244811 0.343750
+v 0.031250 1.244811 0.437500
+v 0.015625 1.244811 0.437500
+v 0.015625 1.244811 0.343750
+v 0.109375 1.229186 0.343750
+v 0.109375 1.229186 0.437500
+v 0.093750 1.229186 0.437500
+v 0.093750 1.229186 0.343750
+v 0.109375 1.244811 0.343750
+v 0.109375 1.244811 0.437500
+v 0.093750 1.244811 0.437500
+v 0.093750 1.244811 0.343750
+v 0.437500 0.562500 -0.269531
+v 0.062500 0.562500 -0.269531
+v 0.437500 0.562500 -0.230469
+v 0.062500 0.562500 -0.230469
+v 0.230469 0.562500 -0.269531
+v 0.230469 0.562500 -0.230469
+v 0.269531 0.562500 -0.269531
+v 0.269531 0.562500 -0.230469
+v 0.230469 0.500000 -0.269531
+v 0.230469 0.500000 -0.230469
+v 0.269531 0.500000 -0.269531
+v 0.269531 0.500000 -0.230469
+v 0.500000 -0.375000 -0.468750
+v -0.500000 -0.375000 -0.468750
+v -0.500000 0.375000 -0.468750
+v 0.500000 0.375000 -0.468750
+v 0.496094 -0.500000 0.433594
+v 0.496094 -0.500000 0.496094
+v 0.433594 -0.500000 0.496094
+v 0.433594 -0.500000 0.433594
+v 0.496094 -0.437500 0.433594
+v 0.496094 -0.437500 0.496094
+v 0.433594 -0.437500 0.496094
+v 0.433594 -0.437500 0.433594
+v 0.241143 -0.560027 0.038198
+v -0.433594 -0.500000 0.433594
+v -0.433594 -0.500000 0.496094
+v -0.496094 -0.500000 0.496094
+v -0.496094 -0.500000 0.433594
+v -0.433594 -0.437500 0.433594
+v -0.433594 -0.437500 0.496094
+v -0.496094 -0.437500 0.496094
+v -0.496094 -0.437500 0.433594
+v 0.496094 -0.500000 -0.464844
+v 0.496094 -0.500000 -0.402344
+v 0.433594 -0.500000 -0.402344
+v 0.433594 -0.500000 -0.464844
+v 0.496094 -0.437500 -0.464844
+v 0.496094 -0.437500 -0.402344
+v 0.433594 -0.437500 -0.402344
+v 0.433594 -0.437500 -0.464844
+v -0.433594 -0.500000 -0.464844
+v -0.433594 -0.500000 -0.402344
+v -0.496094 -0.500000 -0.402344
+v -0.496094 -0.500000 -0.464844
+v -0.433594 -0.437500 -0.464844
+v -0.433594 -0.437500 -0.402344
+v -0.496094 -0.437500 -0.402344
+v -0.496094 -0.437500 -0.464844
+v 0.187500 1.302556 0.379757
+v 0.106383 1.414043 -0.342948
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 1.000000 0.125000
+vt 0.000000 0.125000
+vt 1.000000 0.937500
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 0.937500 0.875000
+vt 0.937500 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.875000
+vt 0.937500 0.750000
+vt 0.062500 0.750000
+vt 0.062500 0.687500
+vt 0.937500 0.687500
+vt 0.937500 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.500000
+vt 0.937500 0.500000
+vt 0.937500 0.375000
+vt 0.062500 0.375000
+vt 0.062500 0.312500
+vt 0.937500 0.312500
+vt 0.937500 0.937500
+vt 0.875000 0.937500
+vt 0.875000 0.812500
+vt 0.937500 0.812500
+vt 0.875000 0.750000
+vt 0.875000 0.625000
+vt 0.937500 0.625000
+vt 0.125000 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.812500
+vt 0.125000 0.812500
+vt 0.125000 0.750000
+vt 0.875000 0.875000
+vt 0.125000 0.875000
+vt 0.062500 0.625000
+vt 0.125000 0.625000
+vt 0.125000 0.562500
+vt 0.875000 0.562500
+vt 0.875000 0.687500
+vt 0.125000 0.687500
+vt 0.875000 0.437500
+vt 0.937500 0.437500
+vt 0.062500 0.437500
+vt 0.125000 0.437500
+vt 0.125000 0.375000
+vt 0.875000 0.375000
+vt 0.875000 0.500000
+vt 0.125000 0.500000
+vt 0.875000 0.187500
+vt 0.937500 0.187500
+vt 0.062500 0.187500
+vt 0.125000 0.187500
+vt 0.125000 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.312500
+vt 0.125000 0.312500
+vt 0.987342 0.000000
+vt 1.000000 0.333333
+vt 0.987342 0.333333
+vt 0.607595 0.444444
+vt 0.607595 0.013889
+vt 0.620253 0.000000
+vt 0.797468 0.000000
+vt 0.810127 0.013889
+vt 0.810126 0.444444
+vt 0.759494 0.493055
+vt 0.708861 0.500000
+vt 0.658228 0.493055
+vt 0.000000 0.888889
+vt 0.000000 0.458333
+vt 0.012658 0.444444
+vt 0.189873 0.444444
+vt 0.202532 0.458333
+vt 0.202532 0.888889
+vt 0.151899 0.937500
+vt 0.101266 0.944444
+vt 0.050633 0.937500
+vt 0.860760 0.833333
+vt 0.860759 0.333333
+vt 0.911392 0.333333
+vt 0.911392 0.833333
+vt 0.962025 0.666667
+vt 0.962025 1.000000
+vt 0.911392 1.000000
+vt 0.911392 0.666667
+vt 0.810127 0.833333
+vt 0.810127 0.333333
+vt 0.962025 0.333333
+vt 0.000000 0.013889
+vt 0.303797 0.000000
+vt 0.303797 0.013889
+vt 0.810127 0.000000
+vt 0.202532 0.777778
+vt 0.202532 0.444444
+vt 0.287975 0.444444
+vt 0.287975 0.777778
+vt 0.607595 0.802083
+vt 0.303797 0.802083
+vt 0.303797 0.430556
+vt 0.607595 0.430556
+vt 0.202532 0.927083
+vt 0.234177 0.777778
+vt 0.234177 0.927083
+vt 0.265823 0.927083
+vt 0.265823 0.777778
+vt 0.335443 0.802083
+vt 0.367089 0.802083
+vt 0.367089 0.857639
+vt 0.335443 0.857639
+vt 0.398734 0.802083
+vt 0.398734 0.857639
+vt 0.303797 0.857639
+vt 0.265823 0.833333
+vt 0.297468 0.777778
+vt 0.297468 0.833333
+vt 0.000000 0.444444
+vt 0.303797 0.444444
+vt 0.607595 0.000000
+vt 0.759494 0.500000
+vt 0.810126 0.500000
+vt 0.759494 0.833333
+vt 0.658228 0.500000
+vt 0.708861 0.833333
+vt 0.658228 0.833333
+vt 0.607595 0.500000
+vt 0.607595 0.833333
+vt 0.031250 0.000000
+vt 0.031250 1.000000
+vt 0.062500 1.000000
+vt 0.062500 0.000000
+vt 0.031250 0.937500
+vt 0.031250 0.875000
+vt 0.937500 1.000000
+vt 0.937500 -0.000000
+vt 1.000000 0.250000
+vt 0.000000 0.250000
+vt 0.000000 0.187500
+vt 1.000000 0.187500
+vt 1.000000 0.312500
+vt 0.000000 0.312500
+vt 1.000000 0.375000
+vt 0.000000 0.375000
+vt 1.000000 0.437500
+vt 0.000000 0.437500
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vt 0.031525 0.999224
+vt 0.052810 0.990408
+vt 0.061627 0.969122
+vt 0.052810 0.947836
+vt 0.031525 0.939019
+vt 0.010239 0.947836
+vt 0.001422 0.969122
+vt 0.010239 0.990408
+vt 1.000000 0.562500
+vt 0.000000 0.562500
+vt 1.000000 0.625000
+vt 0.000000 0.625000
+vt 1.000000 0.687500
+vt 0.000000 0.687500
+vt 1.000000 0.750000
+vt 0.000000 0.750000
+vt 1.000000 0.812500
+vt 0.000000 0.812500
+vt 0.875000 1.000000
+vt 0.500000 0.250000
+vt 0.562500 0.250000
+vt 0.562500 0.312500
+vt 0.500000 0.312500
+vt 0.375000 0.250000
+vt 0.437500 0.250000
+vt 0.437500 0.312500
+vt 0.375000 0.312500
+vt 0.166661 0.754812
+vt 0.218743 0.780353
+vt 0.140620 0.836542
+vt 0.375000 0.812500
+vt 0.375000 0.375000
+vt 0.437500 0.375000
+vt 0.437500 0.812500
+vt 0.625000 0.687500
+vt 0.562500 0.687500
+vt 0.562500 0.625000
+vt 0.625000 0.625000
+vt 0.500000 0.125000
+vt 0.562500 0.125000
+vt 0.562500 0.187500
+vt 0.500000 0.187500
+vt 0.500000 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.812500
+vt 0.500000 0.812500
+vt 0.083331 0.754812
+vt 0.375000 0.187500
+vt 0.437500 0.187500
+vt 0.500000 0.562500
+vt 0.437500 0.562500
+vt 0.437500 0.500000
+vt 0.500000 0.500000
+vt 0.625000 0.500000
+vt 0.562500 0.500000
+vt 0.562500 0.437500
+vt 0.625000 0.437500
+vt 0.026041 0.780353
+vt 0.375000 0.125000
+vt 0.437500 0.125000
+vt 0.625000 0.187500
+vt 0.562500 0.062500
+vt 0.625000 0.062500
+vt 0.625000 0.250000
+vt 0.625000 0.375000
+vt 0.625000 0.562500
+vt 0.562500 0.562500
+vt 0.500000 0.062500
+vt 0.000000 0.836542
+vt 0.375000 0.062500
+vt 0.437500 0.062500
+vt 0.000000 0.918271
+vt 0.140620 0.918271
+vt 0.026041 0.974460
+vt 0.500000 0.437500
+vt 0.437500 0.437500
+vt 0.500000 0.625000
+vt 0.437500 0.625000
+vt 0.500000 0.687500
+vt 0.437500 0.687500
+vt 0.083331 1.000000
+vt 0.166661 1.000000
+vt 0.218743 0.974460
+vt 0.249992 0.918271
+vt 0.249992 0.836542
+vt 1.000000 0.918271
+vt 0.968751 0.974460
+vt 0.875004 0.918271
+vt 0.916669 1.000000
+vt 0.833339 1.000000
+vt 0.776049 0.974460
+vt 0.750008 0.918271
+vt 1.000000 0.836542
+vt 0.875004 0.836542
+vt 0.968751 0.780353
+vt 0.916669 0.754812
+vt 0.833339 0.754812
+vt 0.776049 0.780353
+vt 0.750008 0.836542
+vt 0.559682 0.414861
+vt 0.523249 0.451294
+vt 0.497486 0.389098
+vt 0.471724 0.451294
+vt 0.435291 0.414861
+vt 0.435291 0.363336
+vt 0.471724 0.326903
+vt 0.523249 0.326903
+vt 0.559682 0.363336
+vt 0.937500 0.062500
+vt 0.177049 0.365213
+vt 0.177049 0.575272
+vt 0.142039 0.575272
+vt 0.142039 0.365213
+vt 0.699496 0.013342
+vt 0.699496 0.046098
+vt 0.666741 0.046098
+vt 0.666741 0.013342
+vt 0.349720 0.255195
+vt 0.349720 0.341440
+vt 0.306596 0.341440
+vt 0.306596 0.255195
+vt 0.535710 0.002812
+vt 0.566834 0.015704
+vt 0.535710 0.046828
+vt 0.732252 0.013342
+vt 0.732252 0.046098
+vt 0.263473 0.341441
+vt 0.263473 0.255195
+vt 0.107029 0.365213
+vt 0.107029 0.575272
+vt 0.072019 0.575272
+vt 0.072019 0.365213
+vt 0.765008 0.013342
+vt 0.765008 0.046098
+vt 0.220350 0.341441
+vt 0.220350 0.255195
+vt 0.060493 0.131987
+vt 0.101393 0.148928
+vt 0.060493 0.189828
+vt 0.797763 0.013342
+vt 0.797763 0.046098
+vt 0.177227 0.341441
+vt 0.177227 0.255195
+vt 0.633985 0.046098
+vt 0.633985 0.013342
+vt 0.830519 0.013342
+vt 0.830519 0.046098
+vt 0.134104 0.341441
+vt 0.134104 0.255195
+vt 0.601229 0.046098
+vt 0.601229 0.013342
+vt 0.863274 0.013342
+vt 0.863274 0.046098
+vt 0.090981 0.341441
+vt 0.090981 0.255195
+vt 0.367433 0.407997
+vt 0.356229 0.435046
+vt 0.329180 0.407997
+vt 0.047858 0.255195
+vt 0.047858 0.341441
+vt 0.004735 0.341441
+vt 0.004735 0.255195
+vt 0.356229 0.380948
+vt 0.212058 0.365213
+vt 0.212058 0.575272
+vt 0.037009 0.575272
+vt 0.037009 0.365213
+vt 0.247068 0.365213
+vt 0.247068 0.575272
+vt 0.001999 0.575272
+vt 0.001999 0.365213
+vt 0.282078 0.365213
+vt 0.282078 0.575272
+vt 0.329180 0.369744
+vt 0.329180 0.446250
+vt 0.302131 0.435046
+vt 0.290927 0.407997
+vt 0.302131 0.380948
+vt 0.579726 0.046828
+vt 0.566834 0.077953
+vt 0.535710 0.090845
+vt 0.504585 0.077953
+vt 0.491693 0.046828
+vt 0.504585 0.015704
+vt 0.118334 0.189828
+vt 0.101393 0.230729
+vt 0.060493 0.247670
+vt 0.019593 0.230729
+vt 0.002652 0.189828
+vt 0.019593 0.148928
+vt 0.523037 0.114927
+vt 0.523037 0.101818
+vt 0.544615 0.101818
+vt 0.544615 0.114927
+vt 0.501458 0.114927
+vt 0.501458 0.101818
+vt 0.479879 0.114927
+vt 0.479879 0.101818
+vt 0.458301 0.114927
+vt 0.458301 0.101818
+vt 0.436722 0.114927
+vt 0.436722 0.101818
+vt 0.566194 0.101818
+vt 0.566194 0.114927
+vt 0.415143 0.114927
+vt 0.415143 0.101818
+vt 0.587773 0.101818
+vt 0.587773 0.114927
+vt 0.566194 0.201069
+vt 0.587772 0.201069
+vt 0.415143 0.201069
+vt 0.436722 0.201069
+vt 0.544615 0.201069
+vt 0.458301 0.201069
+vt 0.479879 0.201069
+vt 0.501458 0.201069
+vt 0.523037 0.201069
+vt 0.523037 0.214158
+vt 0.544615 0.214158
+vt 0.501458 0.214158
+vt 0.479879 0.214158
+vt 0.458301 0.214158
+vt 0.436722 0.214158
+vt 0.566194 0.214158
+vt 0.415143 0.214158
+vt 0.587772 0.214158
+vt 0.753326 0.075834
+vt 0.753326 0.461422
+vt 0.705127 0.461422
+vt 0.705127 0.075834
+vt 0.801524 0.075834
+vt 0.801524 0.461422
+vt 0.849723 0.075834
+vt 0.849723 0.461422
+vt 0.897922 0.075834
+vt 0.897922 0.461422
+vt 0.946120 0.075834
+vt 0.946120 0.461422
+vt 0.656929 0.461422
+vt 0.656929 0.075834
+vt 0.994318 0.075834
+vt 0.994318 0.461422
+vt 0.608730 0.461422
+vt 0.608730 0.075834
+vt 0.507192 0.633388
+vt 0.510943 0.474849
+vt 0.569396 0.474908
+vt 0.564487 0.682382
+vt 0.470283 0.642798
+vt 0.474034 0.484259
+vt 0.917664 0.474849
+vt 0.917664 0.674802
+vt 0.859305 0.672225
+vt 0.859305 0.519432
+vt 0.794244 0.833291
+vt 0.802881 0.811261
+vt 0.844410 0.811261
+vt 0.853047 0.833291
+vt 0.752663 0.789362
+vt 0.773516 0.780237
+vt 0.996686 0.676814
+vt 0.948680 0.676822
+vt 0.948680 0.614697
+vt 0.996686 0.614689
+vt 0.752663 0.727236
+vt 0.773516 0.736362
+vt 0.731361 0.854072
+vt 0.684299 0.852877
+vt 0.693242 0.804528
+vt 0.740303 0.805723
+vt 0.794243 0.683307
+vt 0.802881 0.705338
+vt 0.731360 0.915827
+vt 0.684299 0.914632
+vt 0.873775 0.780237
+vt 0.894628 0.789362
+vt 0.853048 0.683307
+vt 0.844410 0.705338
+vt 0.740303 0.954811
+vt 0.693242 0.953617
+vt 0.873775 0.736362
+vt 0.894628 0.727237
+vt 0.794319 0.944890
+vt 0.794319 0.995609
+vt 0.752663 0.999416
+vt 0.752663 0.948698
+vt 0.805792 0.935421
+vt 0.761248 0.944436
+vt 0.752663 0.883397
+vt 0.797207 0.874381
+vt 0.813859 0.934376
+vt 0.861862 0.934199
+vt 0.861862 0.996276
+vt 0.813859 0.996453
+vt 0.511288 0.302389
+vt 0.476878 0.302389
+vt 0.494083 0.261398
+vt 0.878675 0.958450
+vt 0.870203 0.954743
+vt 0.870203 0.900032
+vt 0.878675 0.896325
+vt 0.683850 0.804414
+vt 0.680341 0.813364
+vt 0.628555 0.813365
+vt 0.625046 0.804415
+vt 0.887596 0.958450
+vt 0.879125 0.954743
+vt 0.879124 0.900032
+vt 0.887596 0.896325
+vt 0.591937 0.852051
+vt 0.583465 0.848344
+vt 0.591937 0.906762
+vt 0.583466 0.910470
+vt 0.628555 0.945449
+vt 0.625046 0.954399
+vt 0.680341 0.945449
+vt 0.683850 0.954399
+vt 0.740753 0.870854
+vt 0.750850 0.867108
+vt 0.750850 0.923231
+vt 0.740753 0.920280
+vt 0.813409 0.931252
+vt 0.805849 0.877497
+vt 0.740753 0.808235
+vt 0.750863 0.804528
+vt 0.750863 0.866654
+vt 0.740753 0.862947
+vt 0.805792 0.833745
+vt 0.813409 0.841711
+vt 0.738616 0.911326
+vt 0.738617 0.856941
+vt 0.998056 0.948185
+vt 0.990274 0.951772
+vt 0.968672 0.907962
+vt 0.979033 0.909604
+vt 0.990274 0.856689
+vt 0.998056 0.864449
+vt 0.752213 0.804074
+vt 0.684299 0.748812
+vt 0.738511 0.765011
+vt 0.945485 0.889885
+vt 0.968222 0.877555
+vt 0.963909 0.997125
+vt 0.975885 0.790827
+vt 0.994928 0.683307
+vt 0.998429 0.803122
+vt 0.930292 0.972993
+vt 0.897626 0.988710
+vt 0.895078 0.947138
+vt 0.745753 0.660615
+vt 0.743389 0.639899
+vt 0.968222 0.856689
+vt 0.937184 0.874284
+vt 0.677125 0.618306
+vt 0.674664 0.639025
+vt 0.615601 0.530042
+vt 0.998429 0.824003
+vt 0.967845 0.806415
+vt 0.895078 0.848843
+vt 0.895078 0.687114
+vt 0.936734 0.683307
+vt 0.936734 0.845036
+vt 0.685979 0.611380
+vt 0.617349 0.667457
+vt 0.683850 0.800451
+vt 0.625186 0.803960
+vt 0.752213 0.478440
+vt 0.693508 0.474849
+vt 0.934242 0.518908
+vt 0.948230 0.497530
+vt 0.948230 0.649390
+vt 0.918114 0.629731
+vt 0.928480 0.502458
+vt 0.938453 0.474849
+vt 0.953351 0.813899
+vt 0.967396 0.834743
+vt 0.957751 0.856235
+vt 0.947696 0.829397
+vt 0.937184 0.703712
+vt 0.967396 0.683307
+vt 0.930292 0.849297
+vt 0.576514 0.954596
+vt 0.512407 0.894235
+vt 0.568083 0.803423
+vt 0.858855 0.474849
+vt 0.850364 0.626443
+vt 0.794634 0.533858
+vt 0.752663 0.614478
+vt 0.470283 0.816813
+vt 0.858855 0.649695
+vt 0.576514 0.781369
+vt 0.755047 0.682853
+vt 0.472344 0.754317
+vt 0.869754 0.833745
+vt 0.869754 0.933745
+vt 0.813859 0.853043
+vt 0.983782 0.490452
+vt 0.948680 0.516347
+vt 0.950963 0.474849
+vt 0.670307 0.513877
+vt 0.683850 0.474849
+vt 0.983782 0.614235
+vt 0.890420 0.895871
+vt 0.870203 0.864808
+vt 0.890420 0.833745
+vt 0.178693 0.997475
+vt 0.178693 0.881729
+vt 0.222419 0.881729
+vt 0.222419 0.997475
+vt 0.091240 0.997475
+vt 0.091240 0.881729
+vt 0.134967 0.881729
+vt 0.134967 0.997475
+vt 0.353596 0.603940
+vt 0.397323 0.603940
+vt 0.397323 0.650238
+vt 0.353596 0.650238
+vt 0.266145 0.881729
+vt 0.266145 0.997474
+vt 0.309871 0.881729
+vt 0.309871 0.997474
+vt 0.003788 0.997475
+vt 0.003788 0.881729
+vt 0.047514 0.881729
+vt 0.047514 0.997475
+vt 0.353596 0.742834
+vt 0.397323 0.742834
+vt 0.397323 0.789133
+vt 0.353596 0.789133
+vt 0.353597 0.881729
+vt 0.353597 0.997474
+vt 0.222419 0.603940
+vt 0.266145 0.603940
+vt 0.309871 0.603940
+vt 0.353596 0.696536
+vt 0.397323 0.696536
+vt 0.003788 0.603940
+vt 0.047514 0.603940
+vt 0.091240 0.603940
+vt 0.178693 0.603940
+vt 0.134967 0.603940
+vt 0.615151 0.753863
+vt 0.611905 0.618459
+vt 0.615151 0.484402
+vt 0.823645 0.758299
+vt 0.452546 0.278377
+vt 0.452546 0.244420
+vt 0.476878 0.220408
+vt 0.511288 0.220408
+vt 0.535619 0.244420
+vt 0.535619 0.278377
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 0.707100
+vn 0.910600 0.000000 -0.413200
+vn -0.910600 0.000000 -0.413200
+vn 0.409200 0.000000 -0.912400
+vn -0.409200 0.000000 -0.912400
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn -0.717300 -0.685700 -0.123800
+vn -0.297100 -0.794400 -0.529700
+vn 0.297100 -0.794400 -0.529700
+vn 0.717300 -0.685700 -0.123800
+vn 0.717300 -0.531900 0.450100
+vn 0.297100 -0.423100 0.856000
+vn -0.297100 -0.423100 0.856000
+vn -0.717300 -0.531900 0.450100
+vn 0.819200 -0.358800 0.447400
+vn 0.339300 -0.234600 0.910900
+vn -0.339300 -0.234600 0.910900
+vn 0.819200 -0.534400 -0.208100
+vn -0.819200 -0.358800 0.447400
+vn -0.819200 -0.534400 -0.208100
+vn -0.339300 -0.658700 -0.671600
+vn 0.339300 -0.658700 -0.671600
+vn 0.000000 -0.130500 0.991400
+vn 0.000000 0.608800 0.793400
+vn 0.000000 -0.793400 0.608800
+vn 0.000000 -0.991400 -0.130500
+vn 0.000000 -0.608800 -0.793400
+vn 0.000000 0.991400 0.130500
+vn 0.000000 0.793400 -0.608800
+vn 0.000000 0.130500 -0.991400
+vn -0.973200 -0.229800 0.000000
+vn -0.732100 -0.172800 -0.658900
+vn -0.549600 -0.530300 -0.645500
+vn -0.719600 -0.694400 0.000000
+vn 0.977300 0.211700 -0.000000
+vn 0.732100 0.158600 -0.662400
+vn 0.545700 0.545700 -0.635900
+vn 0.707100 0.707100 -0.000000
+vn 0.732100 -0.172800 -0.658900
+vn 0.549600 -0.530300 -0.645500
+vn -0.301500 0.301500 -0.904500
+vn 0.859900 -0.510500 -0.000000
+vn 0.840800 0.541400 0.000000
+vn 0.441100 0.284000 -0.851300
+vn 0.464100 -0.275500 -0.841800
+vn 0.719600 -0.694400 -0.000000
+vn -0.707100 0.707100 0.000000
+vn -0.545700 0.545700 -0.635900
+vn -0.732100 0.158600 -0.662400
+vn -0.977300 0.211700 0.000000
+vn -0.859900 -0.510500 0.000000
+vn -0.464100 -0.275500 -0.841800
+vn -0.441100 0.284000 -0.851300
+vn -0.840800 0.541400 0.000000
+vn 0.973200 -0.229800 -0.000000
+vn 0.301500 0.301500 -0.904500
+vn 0.449200 0.697600 -0.558200
+vn 0.541400 0.840800 0.000000
+vn -0.541400 0.840800 0.000000
+vn -0.449200 0.697600 -0.558200
+vn 0.707100 -0.707100 0.000000
+vn 0.301500 -0.301500 -0.904500
+vn -0.301500 -0.301500 -0.904500
+vn -0.707100 -0.707100 0.000000
+vn 0.510500 -0.859900 0.000000
+vn 0.424400 -0.715000 -0.555500
+vn -0.510500 -0.859900 -0.000000
+vn -0.424400 -0.715000 -0.555500
+vn -0.680400 -0.271900 -0.680400
+vn 0.000000 -0.271900 -0.962300
+vn 0.549000 -0.630200 -0.549000
+vn 0.776400 -0.630200 0.000000
+vn 0.000000 -0.630200 0.776400
+vn -0.549000 -0.630200 0.549000
+vn 0.000000 -0.630200 -0.776400
+vn -0.776400 -0.630200 0.000000
+vn 0.680400 -0.271900 -0.680400
+vn 0.962300 -0.271900 0.000000
+vn -0.549000 -0.630200 -0.549000
+vn 0.549000 -0.630200 0.549000
+vn -0.962300 -0.271900 0.000000
+vn -0.680400 -0.271900 0.680400
+vn 0.680400 -0.271900 0.680400
+vn 0.000000 -0.271900 0.962300
+vn 0.353500 0.148900 -0.923500
+vn 0.160300 0.776800 -0.608900
+vn 0.387100 0.835500 -0.389900
+vn 0.853500 0.278300 -0.440600
+vn -0.353500 0.148900 -0.923500
+vn -0.160300 0.776800 -0.608900
+vn -0.853500 0.278300 -0.440600
+vn -0.387100 0.835500 -0.389900
+vn -0.853500 0.461300 0.242400
+vn -0.387100 0.918500 -0.080100
+vn -0.353500 0.590700 0.725300
+vn -0.160300 0.977200 0.138900
+vn 0.387100 0.918500 -0.080100
+vn 0.853500 0.461300 0.242300
+vn 0.353500 0.590700 0.725300
+vn 0.160300 0.977200 0.138900
+vn 0.853200 -0.279000 0.440600
+vn 0.353400 -0.149600 0.923400
+vn -0.353400 -0.149600 0.923400
+vn 0.853200 -0.461900 -0.242100
+vn -0.853200 -0.279000 0.440600
+vn -0.853200 -0.461900 -0.242100
+vn -0.353400 -0.591300 -0.724900
+vn 0.353400 -0.591300 -0.724900
+vn 0.382700 0.000000 -0.923900
+vn 0.923900 0.000000 -0.382700
+vn -0.382700 0.000000 -0.923900
+vn -0.923900 0.000000 -0.382700
+vn -0.923900 0.000000 0.382700
+vn -0.382700 0.000000 0.923900
+vn 0.923900 0.000000 0.382700
+vn 0.382700 0.000000 0.923900
+vn -0.530900 0.823300 -0.200800
+vn 0.441300 0.829000 -0.343400
+vn 0.441300 0.343400 -0.829000
+vn -0.687900 0.590300 -0.422300
+vn -0.530900 0.823300 0.200800
+vn 0.441300 0.829000 0.343400
+vn -0.648900 0.556700 -0.518700
+vn 0.413700 0.643800 0.643800
+vn 0.403800 -0.350100 -0.845200
+vn 0.920700 -0.149300 -0.360500
+vn 0.920700 -0.360500 -0.149300
+vn 0.403800 -0.845200 -0.350100
+vn 0.403800 0.350100 -0.845200
+vn 0.920700 0.149300 -0.360500
+vn -0.445400 -0.342600 -0.827100
+vn -0.445400 -0.827100 -0.342600
+vn 0.403800 0.845200 -0.350100
+vn 0.920700 0.360500 -0.149300
+vn -0.445400 0.342600 -0.827100
+vn 0.403800 0.845200 0.350100
+vn 0.920700 0.360500 0.149300
+vn -0.445400 0.827100 -0.342600
+vn 0.920700 -0.360500 0.149300
+vn 0.403800 -0.845200 0.350100
+vn 0.542400 0.470300 0.696200
+vn 0.920700 0.149300 0.360500
+vn -0.445400 0.827100 0.342600
+vn 0.920700 -0.149300 0.360500
+vn 0.542400 -0.470300 0.696200
+vn -0.445400 -0.827100 0.342600
+vn -0.417700 0.642500 0.642500
+vn -0.417700 -0.642500 0.642500
+vn 0.000000 0.965900 -0.258800
+vn 0.441300 -0.828900 0.343600
+vn -0.007200 -0.923900 0.382700
+vn -0.006600 -0.707100 0.707100
+vn 0.413500 -0.643500 0.644100
+vn -0.006600 0.707100 0.707100
+vn -0.007200 0.923900 0.382600
+vn 0.441300 -0.828900 -0.343600
+vn -0.007200 -0.923800 -0.382700
+vn -0.007200 0.923800 -0.382700
+vn -0.007200 0.382700 -0.923800
+vn -0.007200 -0.382600 -0.923900
+vn 0.441300 -0.343300 -0.829100
+vn -0.980700 -0.193200 0.027800
+vn -0.755100 0.319700 -0.572400
+vn 0.020800 -0.610000 -0.792100
+vn -0.076500 -0.230400 -0.970100
+vn 0.281200 -0.940700 0.189500
+vn -0.326900 -0.804100 -0.496500
+vn -0.076500 -0.230400 0.970100
+vn -0.326900 -0.804100 0.496500
+vn 0.281200 -0.940700 -0.189600
+vn 0.008000 -0.943300 -0.331700
+vn 0.008000 -0.943300 0.331700
+vn -0.922200 -0.386700 0.000000
+vn -0.914000 0.387000 -0.121700
+vn 0.008900 -0.378600 -0.925500
+vn 0.016700 -0.711200 0.702800
+vn -0.537200 0.485900 0.689400
+vn -0.899400 0.437100 0.000000
+vn -0.537200 0.485900 -0.689400
+vn -0.980700 -0.193200 -0.027800
+vn 0.020800 -0.610000 0.792100
+vn 0.577300 0.577300 -0.577300
+vn 0.577300 -0.577300 -0.577300
+vn -0.577300 0.577300 -0.577300
+vn -0.577300 -0.577300 -0.577300
+g Cylinder_Cylinder_red-metal
+s off
+f 20/1/1 19/2/1 2/3/1 1/4/1
+f 19/1/2 18/2/2 3/3/2 2/4/2
+f 18/1/3 17/2/3 4/3/3 3/4/3
+f 1/5/4 4/6/4 384/7/4 383/8/4
+f 1/1/5 2/2/5 3/3/5 4/4/5
+f 17/9/4 20/10/4 386/11/4 385/12/4
+f 384/7/4 385/12/4 176/13/4 196/14/4
+f 383/8/4 195/15/4 175/16/4 386/11/4
+f 172/17/4 171/18/4 183/19/4 184/20/4
+f 180/21/4 179/22/4 191/23/4 192/24/4
+f 188/25/4 187/26/4 199/27/4 200/28/4
+g Cylinder_Cylinder_drawers
+f 174/29/1 175/30/1 171/31/1 170/32/1
+f 182/17/1 183/33/1 179/34/1 178/35/1
+f 176/36/3 177/37/3 173/38/3 172/39/3
+f 177/30/4 174/36/4 170/39/4 173/31/4
+f 170/39/5 171/40/5 172/33/5 173/31/5
+f 177/41/6 176/30/6 175/36/6 174/42/6
+f 184/40/3 185/18/3 181/43/3 180/44/3
+f 185/33/4 182/40/4 178/44/4 181/34/4
+f 178/44/5 179/45/5 180/46/5 181/34/5
+f 185/47/6 184/33/6 183/40/6 182/48/6
+f 190/21/1 191/46/1 187/49/1 186/50/1
+f 192/45/3 193/22/3 189/51/3 188/52/3
+f 193/46/4 190/45/4 186/52/4 189/49/4
+f 186/52/5 187/53/5 188/54/5 189/49/5
+f 193/55/6 192/46/6 191/45/6 190/56/6
+f 198/25/1 199/54/1 195/57/1 194/58/1
+f 200/53/3 201/26/3 197/59/3 196/60/3
+f 201/54/4 198/53/4 194/60/4 197/57/4
+f 194/60/5 195/61/5 196/62/5 197/57/5
+f 201/63/6 200/54/6 199/53/6 198/64/6
+g Cylinder_Cylinder_green-metal
+f 110/65/7 27/2/7 23/66/7 113/67/7
+f 21/68/5 22/69/5 111/70/5 113/71/5 23/72/5 24/73/5 107/74/5 105/75/5 109/76/5
+f 28/77/6 27/78/6 110/79/6 112/80/6 26/81/6 25/82/6 106/83/6 104/84/6 108/85/6
+f 33/86/1 34/87/1 30/88/1 29/89/1
+f 34/90/2 35/91/2 31/92/2 30/93/2
+f 35/94/3 36/95/3 32/87/3 31/86/3
+f 36/96/4 33/90/4 29/93/4 32/88/4
+f 26/97/8 112/1/8 111/98/8 22/99/8
+f 112/100/2 110/65/2 113/67/2 111/95/2
+f 33/101/6 36/102/6 372/103/6 371/104/6
+f 35/105/6 34/106/6 373/107/6 374/108/6
+f 375/109/6 372/101/6 374/110/6 376/111/6
+f 377/112/6 378/111/6 373/110/6 371/113/6
+f 378/114/3 377/115/3 381/116/3 382/117/3
+f 376/118/1 380/119/1 379/116/1 375/115/1
+f 378/114/4 382/117/4 380/120/4 376/106/4
+f 381/121/2 377/113/2 375/122/2 379/123/2
+s 1
+f 25/124/9 26/97/1 22/99/1 21/125/9
+f 27/126/3 28/108/10 24/107/10 23/98/3
+f 106/127/11 25/128/9 21/94/9 109/129/11
+f 108/130/12 104/75/4 105/131/4 107/132/12
+f 28/133/10 108/130/12 107/132/12 24/134/10
+f 104/75/4 106/127/11 109/129/11 105/131/4
+g Cylinder_Cylinder_grey-metal
+s off
+f 8/135/6 7/2/6 6/3/6 5/136/6
+f 13/10/1 14/4/1 10/3/1 9/9/1
+f 14/5/2 15/10/2 11/9/2 10/6/2
+f 15/4/3 16/10/3 12/9/3 11/3/3
+f 16/10/4 13/5/4 9/6/4 12/9/4
+f 16/137/6 15/4/6 14/1/6 13/138/6
+f 7/9/3 8/139/3 17/140/3 18/12/3
+f 8/4/4 5/1/4 20/138/4 17/137/4
+f 5/139/1 6/9/1 19/3/1 20/136/1
+f 6/141/2 7/142/2 18/2/2 19/3/2
+s 1
+f 96/143/4 97/144/4 99/145/13 98/146/13
+f 38/147/14 37/148/14 97/144/4 96/143/4
+f 40/149/3 39/150/3 37/148/14 38/147/14
+f 42/151/7 41/152/7 39/150/3 40/149/3
+f 44/153/2 43/154/2 41/152/7 42/151/7
+f 98/146/13 99/145/13 101/8/1 100/7/1
+f 102/6/8 103/5/8 43/1/2 44/2/2
+f 100/7/1 101/8/1 103/5/8 102/6/8
+f 117/155/15 115/156/16 122/157/17 124/158/18 126/159/19 128/160/20 121/161/21 119/162/22
+f 126/10/19 136/9/23 137/3/24 128/4/20
+f 128/154/20 137/153/24 133/163/25 121/164/21
+f 124/11/18 135/12/26 136/9/23 126/10/19
+f 121/164/21 133/163/25 132/165/27 119/166/22
+f 119/166/22 132/165/27 130/167/28 117/168/15
+f 117/168/15 130/167/28 131/169/29 115/170/16
+f 115/170/16 131/169/29 134/171/30 122/172/17
+f 122/172/17 134/171/30 135/12/26 124/11/18
+f 161/46/31 169/163/31 165/165/32 157/34/32
+f 160/55/33 168/153/33 169/163/31 161/46/31
+f 159/30/34 167/9/34 168/3/33 160/173/33
+f 158/41/35 166/12/35 167/9/34 159/30/34
+f 157/34/32 165/165/32 164/167/36 156/47/36
+f 156/47/36 164/167/36 163/169/37 155/33/37
+f 154/31/38 162/171/38 166/12/35 158/41/35
+f 155/33/37 163/169/37 162/171/38 154/31/38
+g Cylinder_Cylinder_bright-metal
+f 212/174/39 246/175/40 233/176/41 226/177/42
+f 247/178/43 213/179/44 202/180/45 256/181/46
+f 241/182/47 231/183/48 253/184/49
+f 220/185/50 248/186/51 210/187/52 238/188/53
+f 220/189/50 238/190/53 231/191/48 228/192/54
+f 230/193/55 229/194/56 242/195/57 216/196/58
+f 211/197/59 249/198/60 221/199/61 239/200/62
+f 241/182/47 253/184/49 237/201/44
+f 226/177/42 233/176/41 249/198/60 211/197/59
+f 247/178/43 243/202/63 217/203/47 213/179/44
+f 240/204/58 218/205/57 222/206/40 236/207/39
+f 223/208/43 237/209/44 227/210/45 232/211/46
+f 227/212/45 237/201/44 253/184/49
+f 252/213/54 206/214/48 217/203/47 243/202/63
+f 208/215/46 251/195/64 245/216/65 215/217/66
+f 256/181/46 202/180/45 210/187/52 248/186/51
+f 207/218/55 224/219/67 234/198/68 253/175/49
+f 223/208/43 219/220/63 241/221/47 237/209/44
+f 215/222/66 245/216/65 229/194/56 230/193/55
+f 207/218/55 253/175/49 251/195/64 208/215/46
+f 216/196/58 242/195/57 246/175/40 212/174/39
+f 234/223/68 227/212/45 253/184/49
+f 204/174/69 255/179/70 257/203/71 203/196/72
+f 204/174/69 235/197/73 225/187/74 255/179/70
+f 228/192/54 231/191/48 241/221/47 219/220/63
+f 244/224/75 214/225/76 206/214/48 252/213/54
+f 245/226/65 251/227/64 229/228/56
+f 250/229/42 209/230/41 225/187/74 235/197/73
+f 203/196/72 257/203/71 214/225/76 244/222/75
+f 254/231/55 205/232/56 218/205/57 240/204/58
+f 232/211/46 227/210/45 234/198/68 224/219/67
+f 239/233/62 221/234/61 205/232/56 254/231/55
+f 236/207/39 222/206/40 209/230/41 250/229/42
+f 242/235/57 229/228/56 251/227/64
+f 246/236/40 242/235/57 251/227/64
+f 233/237/41 246/236/40 251/227/64
+f 249/238/60 233/237/41 251/227/64
+f 231/183/48 238/239/53 253/184/49
+f 225/240/74 209/241/41 255/242/70
+f 209/241/41 222/243/40 255/242/70
+f 222/243/40 218/244/57 255/242/70
+f 218/244/57 205/245/56 255/242/70
+f 205/245/56 221/246/61 255/242/70
+f 214/247/76 257/248/71 206/249/48
+f 217/250/47 206/249/48 257/248/71
+f 217/250/47 257/248/71 213/251/44
+f 202/252/45 213/251/44 257/248/71
+f 210/253/52 202/252/45 257/248/71
+f 257/248/71 255/242/70 221/246/61 210/253/52
+f 221/246/61 249/238/60 238/239/53 210/253/52
+f 253/184/49 238/239/53 249/238/60 251/227/64
+g Cylinder_Cylinder_misc
+s off
+f 261/254/5 259/255/5 274/256/5
+f 259/255/5 266/257/5 274/256/5
+f 266/257/5 268/258/5 274/256/5
+f 268/258/5 270/259/5 274/256/5
+f 270/259/5 272/260/5 274/256/5
+f 272/260/5 265/261/5 274/256/5
+f 265/261/5 263/262/5 274/256/5
+f 263/262/5 261/254/5 274/256/5
+f 391/142/1 392/2/1 388/6/1 387/263/1
+f 392/142/2 393/2/2 389/6/2 388/263/2
+f 393/142/3 394/2/3 390/6/3 389/263/3
+f 394/142/4 391/2/4 387/6/4 390/263/4
+f 387/142/5 388/2/5 389/6/5 390/263/5
+f 400/142/1 401/2/1 397/6/1 396/263/1
+f 401/142/2 402/2/2 398/6/2 397/263/2
+f 402/142/3 403/2/3 399/6/3 398/263/3
+f 403/142/4 400/2/4 396/6/4 399/263/4
+f 396/142/5 397/2/5 398/6/5 399/263/5
+f 408/142/1 409/2/1 405/6/1 404/263/1
+f 409/142/2 410/2/2 406/6/2 405/263/2
+f 410/142/3 411/2/3 407/6/3 406/263/3
+f 411/142/4 408/2/4 404/6/4 407/263/4
+f 404/142/5 405/2/5 406/6/5 407/263/5
+f 416/142/1 417/2/1 413/6/1 412/263/1
+f 417/142/2 418/2/2 414/6/2 413/263/2
+f 418/142/3 419/2/3 415/6/3 414/263/3
+f 419/142/4 416/2/4 412/6/4 415/263/4
+f 412/142/5 413/2/5 414/6/5 415/263/5
+f 408/142/6 411/2/6 410/6/6 409/263/6
+f 416/142/6 419/2/6 418/6/6 417/263/6
+s 1
+f 83/264/77 84/265/14 86/266/4 85/267/78
+f 71/268/79 72/269/13 74/270/1 73/271/80
+f 47/272/81 48/273/2 50/274/7 49/275/82
+f 46/276/81 63/277/82 94/278/5
+f 69/279/83 70/280/4 72/269/13 71/268/79
+f 49/275/82 50/274/7 52/281/3 51/282/84
+f 87/283/85 88/284/13 90/285/1 89/286/86
+f 67/287/87 68/288/14 70/280/4 69/279/83
+f 51/282/84 52/281/3 54/289/14 53/290/87
+f 47/291/81 49/292/82 95/293/5
+f 65/294/84 66/295/3 68/288/14 67/287/87
+f 53/290/87 54/289/14 56/296/4 55/297/83
+f 73/271/80 74/270/1 76/298/8 75/299/88
+f 63/300/82 64/301/7 66/295/3 65/294/84
+f 55/297/83 56/296/4 58/302/13 57/303/79
+f 75/299/88 76/298/8 45/304/2 46/305/81
+f 46/306/81 45/307/2 64/301/7 63/300/82
+f 57/303/79 58/302/13 60/308/1 59/309/80
+f 81/310/89 83/311/77 93/312/5
+f 61/313/88 62/314/8 48/315/2 47/316/81
+f 59/309/80 60/308/1 62/314/8 61/313/88
+f 85/267/78 86/266/4 88/284/13 87/283/85
+f 79/317/90 81/310/89 93/312/5
+f 81/318/89 82/319/3 84/265/14 83/264/77
+f 89/286/86 90/285/1 92/320/8 91/321/91
+f 79/322/90 80/323/7 82/319/3 81/318/89
+f 91/321/91 92/320/8 77/324/2 78/325/92
+f 78/326/92 77/327/2 80/323/7 79/322/90
+f 78/328/92 79/317/90 93/312/5
+f 83/311/77 85/329/78 93/312/5
+f 85/329/78 87/330/85 93/312/5
+f 87/330/85 89/331/86 93/312/5
+f 89/331/86 91/332/91 93/312/5
+f 91/332/91 78/328/92 93/312/5
+f 63/277/82 65/333/84 94/278/5
+f 65/333/84 67/334/87 94/278/5
+f 67/334/87 69/335/83 94/278/5
+f 69/335/83 71/336/79 94/278/5
+f 71/336/79 73/337/80 94/278/5
+f 73/337/80 75/338/88 94/278/5
+f 75/338/88 46/276/81 94/278/5
+f 49/292/82 51/339/84 95/293/5
+f 51/339/84 53/340/87 95/293/5
+f 53/340/87 55/341/83 95/293/5
+f 55/341/83 57/342/79 95/293/5
+f 57/342/79 59/343/80 95/293/5
+f 59/343/80 61/344/88 95/293/5
+f 61/344/88 47/291/81 95/293/5
+f 142/345/93 123/346/94 125/347/95 143/348/96
+f 140/349/97 114/350/98 123/346/94 142/345/93
+f 139/351/99 116/352/100 114/350/98 140/349/97
+f 141/353/101 118/354/102 116/352/100 139/351/99
+f 138/355/103 120/356/104 118/354/102 141/353/101
+f 143/348/96 125/347/95 127/357/105 144/358/106
+f 145/359/107 129/360/108 120/356/104 138/355/103
+f 144/358/106 127/357/105 129/361/108 145/362/107
+f 151/363/109 144/358/106 145/362/107 152/364/110
+f 152/365/110 145/359/107 138/355/103 153/366/111
+f 150/367/112 143/348/96 144/358/106 151/363/109
+f 153/366/111 138/355/103 141/353/101 148/368/113
+f 148/368/113 141/353/101 139/351/99 146/369/114
+f 146/369/114 139/351/99 140/349/97 147/370/115
+f 147/370/115 140/349/97 142/345/93 149/371/116
+f 149/371/116 142/345/93 143/348/96 150/367/112
+f 134/372/30 149/371/116 150/367/112 135/373/26
+f 131/374/29 147/370/115 149/371/116 134/372/30
+f 130/375/28 146/369/114 147/370/115 131/374/29
+f 132/376/27 148/368/113 146/369/114 130/375/28
+f 133/377/25 153/366/111 148/368/113 132/376/27
+f 135/373/26 150/367/112 151/363/109 136/378/23
+f 137/379/24 152/365/110 153/366/111 133/377/25
+f 136/378/23 151/363/109 152/364/110 137/380/24
+f 266/381/117 267/382/117 269/383/118 268/384/118
+f 259/385/119 258/386/119 267/382/117 266/381/117
+f 261/387/120 260/388/120 258/386/119 259/385/119
+f 263/389/121 262/390/121 260/388/120 261/387/120
+f 265/391/122 264/392/122 262/390/121 263/389/121
+f 268/384/118 269/383/118 271/393/123 270/394/123
+f 272/395/124 273/396/124 264/392/122 265/391/122
+f 270/394/123 271/393/123 273/397/124 272/398/124
+f 305/399/125 275/400/126 278/401/127 307/402/128
+f 303/403/129 280/404/130 275/400/126 305/399/125
+f 301/405/131 277/406/132 280/407/130 303/408/129
+f 288/409/133 310/410/134 312/411/135 300/412/136
+f 294/413/137 308/414/138 310/410/134 288/409/133
+f 322/415/139 288/416/133 300/417/136 315/418/140
+f 298/419/141 306/420/142 308/414/138 294/413/137
+f 316/421/143 294/422/137 288/423/133 322/424/139
+f 292/425/144 304/426/145 306/420/142 298/419/141
+f 318/427/146 298/428/141 294/422/137 316/421/143
+f 300/412/136 312/411/135 314/429/147 290/430/148
+f 296/431/149 302/432/150 304/426/145 292/425/144
+f 320/433/151 292/434/144 298/428/141 318/427/146
+f 290/430/148 314/429/147 283/435/152 287/436/153
+f 287/436/153 283/435/152 302/432/150 296/431/149
+f 315/437/140 300/438/136 290/439/148 321/440/154
+f 317/441/155 296/442/149 292/443/144 320/444/151
+f 321/445/154 290/446/148 287/447/153 319/448/156
+f 123/449/94 114/450/98 421/451/157
+f 279/452/158 293/453/159 289/454/160 276/455/161
+f 277/456/132 299/457/162 295/458/163 280/459/130
+f 282/460/164 286/461/165 293/462/159 279/463/158
+f 280/459/130 295/458/163 285/464/166 275/465/126
+f 275/465/126 285/464/166 297/466/167 278/467/127
+f 278/467/127 297/466/167 291/468/168 281/469/169
+f 281/469/169 291/468/168 286/470/165 282/471/164
+f 293/472/159 321/473/154 319/474/156 289/475/160
+f 299/476/162 317/441/155 320/444/151 295/477/163
+f 286/478/165 315/479/140 321/480/154 293/481/159
+f 295/477/163 320/444/151 318/482/146 285/483/166
+f 285/484/166 318/427/146 316/421/143 297/485/167
+f 297/486/167 316/487/143 322/488/139 291/489/168
+f 291/489/168 322/488/139 315/490/140 286/491/165
+f 332/492/170 309/493/171 337/494/172
+f 324/495/173 328/496/174 313/497/175
+f 325/498/176 311/499/177 329/500/178
+f 311/501/177 332/502/170 337/503/172
+f 329/504/178 309/493/171 326/505/179
+f 328/496/174 324/495/173 327/506/180
+f 324/495/173 323/507/181 327/506/180
+f 328/508/174 327/509/180 284/510/182
+f 329/500/178 326/511/179 325/498/176
+f 325/498/176 326/511/179 323/512/181
+f 279/513/158 327/514/180 326/515/179 282/516/164
+f 309/493/171 331/517/183 326/505/179
+f 284/510/182 327/509/180 330/518/184
+f 330/518/184 327/509/180 279/519/158 276/520/161
+f 282/521/164 326/505/179 331/517/183 281/522/169
+f 325/523/176 336/524/185 332/525/170 311/526/177
+f 323/527/181 334/528/186 336/524/185 325/523/176
+f 324/529/173 335/530/187 334/531/186 323/532/181
+f 313/533/175 333/534/188 335/530/187 324/529/173
+f 337/503/172 329/535/178 311/501/177
+f 329/504/178 337/494/172 309/493/171
+f 333/536/188 284/537/182 335/538/187
+f 332/539/170 336/540/185 309/541/171
+f 309/541/171 336/540/185 307/542/128
+f 284/537/182 301/543/131 335/538/187
+f 336/540/185 334/544/186 307/542/128
+f 335/538/187 301/543/131 334/545/186
+f 307/542/128 334/544/186 305/546/125
+f 301/543/131 303/547/129 334/545/186
+f 305/548/125 334/549/186 303/550/129
+f 313/551/175 338/552/189 333/553/188
+f 338/554/189 284/510/182 333/555/188
+f 328/556/174 338/552/189 313/551/175
+f 338/554/189 328/508/174 284/510/182
+f 327/557/180 323/558/181 326/559/179
+f 343/560/190 344/561/46 340/562/69 339/563/191
+f 345/564/55 346/565/192 342/566/193 341/567/72
+f 346/568/192 343/569/190 339/570/191 342/571/193
+f 339/563/191 340/562/69 341/572/72 342/573/193
+f 346/574/192 345/575/55 344/573/46 343/572/190
+f 351/567/190 352/566/46 348/561/69 347/560/191
+f 353/576/55 354/577/192 350/578/193 349/579/72
+f 354/580/192 351/581/190 347/582/191 350/583/193
+f 347/575/191 348/574/69 349/584/72 350/585/193
+f 354/565/192 353/564/55 352/579/46 351/578/190
+f 359/562/190 360/586/46 356/587/69 355/572/191
+f 361/574/55 362/588/192 358/568/193 357/584/72
+f 362/589/192 359/590/190 355/581/191 358/580/193
+f 355/577/191 356/591/69 357/592/72 358/578/193
+f 362/593/192 361/565/55 360/578/46 359/592/190
+f 367/561/190 368/594/46 364/586/69 363/562/191
+f 369/572/55 370/587/192 366/588/193 365/574/72
+f 370/571/192 367/570/190 363/590/191 366/589/193
+f 363/565/191 364/593/69 365/595/72 366/566/193
+f 370/594/192 369/561/55 368/566/46 367/595/190
+f 309/596/171 307/402/128 331/597/183
+f 307/402/128 278/401/127 281/598/169 331/597/183
+f 302/432/150 283/435/152 420/599/1
+f 283/435/152 314/429/147 420/599/1
+f 314/429/147 312/411/135 420/599/1
+f 312/411/135 310/410/134 420/599/1
+f 310/410/134 308/414/138 420/599/1
+f 308/414/138 306/420/142 420/599/1
+f 306/420/142 304/426/145 420/599/1
+f 304/426/145 302/432/150 420/599/1
+f 114/450/98 116/600/100 421/451/157
+f 116/600/100 118/601/102 421/451/157
+f 118/601/102 120/602/104 421/451/157
+f 120/602/104 129/603/108 421/451/157
+f 129/603/108 127/604/105 421/451/157
+f 127/604/105 125/605/95 421/451/157
+f 125/605/95 123/449/94 421/451/157
diff --git a/homedecor_modpack/homedecor/models/homedecor_towel_rod.obj b/homedecor_modpack/homedecor/models/homedecor_towel_rod.obj
new file mode 100644
index 0000000..26c63de
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_towel_rod.obj
@@ -0,0 +1,198 @@
+# Blender v2.73 (sub 0) OBJ File: 'towel-rod.blend'
+# www.blender.org
+o Cube
+v -0.500000 0.250000 0.437500
+v -0.500000 0.250000 0.250000
+v -0.437500 0.250000 0.250000
+v -0.437500 0.250000 0.437500
+v -0.500000 0.312500 0.437500
+v -0.500000 0.312500 0.250000
+v -0.437500 0.312500 0.250000
+v -0.437500 0.312500 0.437500
+v -0.500000 0.187500 0.500000
+v -0.500000 0.187500 0.437500
+v -0.437500 0.187500 0.437500
+v -0.437500 0.187500 0.500000
+v -0.500000 0.375000 0.500000
+v -0.500000 0.375000 0.437500
+v -0.437500 0.375000 0.437500
+v -0.437500 0.375000 0.500000
+v 0.437500 0.250000 0.437500
+v 0.437500 0.250000 0.250000
+v 0.500000 0.250000 0.250000
+v 0.500000 0.250000 0.437500
+v 0.437500 0.312500 0.437500
+v 0.437500 0.312500 0.250000
+v 0.500000 0.312500 0.250000
+v 0.500000 0.312500 0.437500
+v 0.437500 0.187500 0.500000
+v 0.437500 0.187500 0.437500
+v 0.500000 0.187500 0.437500
+v 0.500000 0.187500 0.500000
+v 0.437500 0.375000 0.500000
+v 0.437500 0.375000 0.437500
+v 0.500000 0.375000 0.437500
+v 0.500000 0.375000 0.500000
+v -0.437500 0.250000 0.312500
+v -0.437500 0.250000 0.250000
+v 0.437500 0.250000 0.250000
+v 0.437500 0.250000 0.312500
+v -0.437500 -0.312500 0.250000
+v -0.437500 -0.312500 0.218750
+v 0.437500 -0.312500 0.218750
+v 0.437500 -0.312500 0.250000
+v -0.437500 0.312500 0.250000
+v -0.437500 0.312500 0.218750
+v 0.437500 0.312500 0.218750
+v 0.437500 0.312500 0.250000
+v -0.437500 0.000000 0.343750
+v -0.437500 0.000000 0.312500
+v 0.437500 0.000000 0.312500
+v 0.437500 0.000000 0.343750
+v -0.437500 0.312500 0.343750
+v -0.437500 0.312500 0.312500
+v 0.437500 0.312500 0.312500
+v 0.437500 0.312500 0.343750
+v -0.437500 0.343750 0.250000
+v 0.437500 0.343750 0.250000
+v -0.437500 0.343750 0.312500
+v 0.437500 0.343750 0.312500
+vt 1.000000 0.875000
+vt 0.000000 0.875000
+vt 0.000000 0.187500
+vt 1.000000 0.187500
+vt 0.062500 0.125000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 0.125000
+vt 0.000000 0.562500
+vt 1.000000 0.562500
+vt 0.062500 0.250000
+vt 0.062500 0.187500
+vt 0.937500 0.187500
+vt 0.937500 0.250000
+vt 0.812500 0.562500
+vt 0.812500 0.875000
+vt 0.750000 0.875000
+vt 0.750000 0.562500
+vt 0.937500 0.875000
+vt 0.875000 0.875000
+vt 0.875000 0.187500
+vt 0.125000 0.187500
+vt 0.125000 0.875000
+vt 0.062500 0.875000
+vt 0.250000 0.562500
+vt 0.250000 0.875000
+vt 0.187500 0.875000
+vt 0.187500 0.562500
+vt 0.187500 0.937500
+vt 0.125000 0.937500
+vt 0.875000 0.937500
+vt 0.812500 0.937500
+vt 1.000000 0.937500
+vt -0.000000 0.937500
+vt 0.937500 0.375000
+vt 0.062500 0.375000
+vt 0.062500 0.312500
+vt 0.937500 0.312500
+vt 0.250000 0.250000
+vt 0.250000 0.187500
+vt 0.000000 0.250000
+vt 0.250000 0.062500
+vt 0.250000 0.125000
+vt 0.312500 0.062500
+vt 0.500000 0.062500
+vt 0.500000 0.125000
+vt 0.312500 0.125000
+vt 0.250000 0.312500
+vt 0.687500 0.750000
+vt 0.687500 0.812500
+vt 0.500000 0.812500
+vt 0.500000 0.750000
+vt 0.687500 0.875000
+vt 0.500000 0.875000
+vt 0.250000 0.812500
+vt 0.250000 0.750000
+vt 0.437500 0.750000
+vt 0.437500 0.812500
+vt 0.250000 0.687500
+vt 0.437500 0.687500
+vt 0.750000 0.750000
+vt 0.750000 0.812500
+vt 0.562500 0.250000
+vt 0.500000 0.250000
+vt 0.500000 0.187500
+vt 0.562500 0.187500
+vt 0.312500 0.250000
+vt 0.312500 0.187500
+vt 0.500000 0.312500
+vt 0.312500 0.312500
+vt 0.750000 0.500000
+vt 0.562500 0.562500
+vt 0.562500 0.500000
+vt 0.312500 0.625000
+vt 0.312500 0.562500
+vt 0.500000 0.562500
+vt 0.500000 0.625000
+vt 0.312500 0.500000
+vt 0.500000 0.500000
+vt 0.750000 0.437500
+vt 0.562500 0.437500
+vt 0.250000 0.500000
+vt 0.062500 1.000000
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 0.707100 0.707100
+vn 0.000000 1.000000 0.000000
+g Cube_Cube_towel
+s off
+f 44/1/1 41/2/1 37/3/1 40/4/1
+f 42/1/2 43/2/2 39/3/2 38/4/2
+f 37/5/3 38/6/3 39/7/3 40/8/3
+f 52/1/1 49/2/1 45/9/1 48/10/1
+f 50/1/2 51/2/2 47/9/2 46/10/2
+f 45/11/3 46/12/3 47/13/3 48/14/3
+f 47/15/4 51/16/4 52/17/4 48/18/4
+f 39/13/4 43/19/4 44/20/4 40/21/4
+f 37/22/5 41/23/5 42/24/5 38/12/5
+f 45/25/5 49/26/5 50/27/5 46/28/5
+f 55/29/5 50/27/5 49/26/5
+f 53/30/5 42/24/5 7/23/5
+f 54/31/4 22/20/4 43/19/4
+f 56/32/4 52/17/4 51/16/4
+f 53/33/6 54/34/6 43/2/6 42/1/6
+f 56/33/7 55/34/7 49/2/7 52/1/7
+f 56/32/4 51/16/4 44/20/4 54/31/4
+f 54/35/8 53/36/8 55/37/8 56/38/8
+f 53/30/5 41/23/5 50/27/5 55/29/5
+g Cube_Cube_wood
+f 5/39/5 6/11/5 2/12/5 1/40/5
+f 6/11/2 7/41/2 3/3/2 2/12/2
+f 7/6/4 8/42/4 4/43/4 3/5/4
+f 21/44/5 22/45/5 18/46/5 17/47/5
+f 1/40/3 2/12/3 3/5/3 4/43/3
+f 8/48/8 7/37/8 6/11/8 5/39/8
+f 13/49/5 14/50/5 10/51/5 9/52/5
+f 14/50/2 15/53/2 11/54/2 10/51/2
+f 15/55/4 16/56/4 12/57/4 11/58/4
+f 16/56/1 13/59/1 9/60/1 12/57/1
+f 9/52/3 10/51/3 11/58/3 12/57/3
+f 16/61/8 15/62/8 14/50/8 13/49/8
+f 22/63/2 23/64/2 19/65/2 18/66/2
+f 23/64/4 24/67/4 20/68/4 19/65/4
+f 17/47/3 18/46/3 19/65/3 20/68/3
+f 24/67/8 23/64/8 22/69/8 21/70/8
+f 29/71/5 30/18/5 26/72/5 25/73/5
+f 30/74/2 31/75/2 27/76/2 26/77/2
+f 31/75/4 32/78/4 28/79/4 27/76/4
+f 32/80/1 29/71/1 25/73/1 28/81/1
+f 25/73/3 26/72/3 27/76/3 28/79/3
+f 32/78/8 31/75/8 30/25/8 29/82/8
+f 33/83/3 34/84/3 35/85/3 36/86/3
diff --git a/homedecor_modpack/homedecor/models/homedecor_trash_can.obj b/homedecor_modpack/homedecor/models/homedecor_trash_can.obj
new file mode 100644
index 0000000..9b461f9
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_trash_can.obj
@@ -0,0 +1,316 @@
+# Blender v2.73 (sub 0) OBJ File: 'trash_can.blend'
+# www.blender.org
+o Circle
+v -0.000000 -0.500000 -0.177250
+v -0.067831 -0.500000 -0.163757
+v -0.125334 -0.500000 -0.125334
+v -0.163757 -0.500000 -0.067831
+v -0.177250 -0.500000 -0.000000
+v -0.163757 -0.500000 0.067830
+v -0.125334 -0.500000 0.125334
+v -0.067830 -0.500000 0.163757
+v -0.000000 -0.500000 0.177249
+v 0.067830 -0.500000 0.163757
+v 0.125334 -0.500000 0.125334
+v 0.163757 -0.500000 0.067830
+v 0.177249 -0.500000 -0.000000
+v 0.163757 -0.500000 -0.067831
+v 0.125334 -0.500000 -0.125335
+v 0.067830 -0.500000 -0.163757
+v -0.000000 -0.000000 -0.250000
+v -0.095671 -0.000000 -0.230970
+v -0.176777 -0.000000 -0.176777
+v -0.230970 -0.000000 -0.095671
+v -0.250000 -0.000000 -0.000000
+v -0.230970 -0.000000 0.095671
+v -0.176777 -0.000000 0.176777
+v -0.095671 -0.000000 0.230970
+v 0.000000 -0.000000 0.250000
+v 0.095671 -0.000000 0.230970
+v 0.176777 -0.000000 0.176777
+v 0.230970 -0.000000 0.095671
+v 0.250000 -0.000000 -0.000000
+v 0.230970 -0.000000 -0.095671
+v 0.176776 -0.000000 -0.176777
+v 0.095671 -0.000000 -0.230970
+v -0.000000 -0.000000 -0.229034
+v -0.087647 -0.000000 -0.211600
+v -0.161951 -0.000000 -0.161951
+v -0.211600 -0.000000 -0.087648
+v -0.229034 -0.000000 -0.000000
+v -0.211600 -0.000000 0.087647
+v -0.161951 -0.000000 0.161951
+v -0.087647 -0.000000 0.211600
+v 0.000000 -0.000000 0.229034
+v 0.087648 -0.000000 0.211600
+v 0.161951 -0.000000 0.161951
+v 0.211600 -0.000000 0.087647
+v 0.229034 -0.000000 -0.000000
+v 0.211600 -0.000000 -0.087648
+v 0.161951 -0.000000 -0.161952
+v 0.087647 -0.000000 -0.211600
+v 0.069570 -0.468750 -0.167958
+v -0.181796 -0.468750 -0.000000
+v 0.128549 -0.468750 -0.128550
+v -0.167958 -0.468750 -0.069571
+v 0.167958 -0.468750 -0.069571
+v -0.128550 -0.468750 -0.128550
+v 0.181796 -0.468750 -0.000000
+v -0.069571 -0.468750 -0.167958
+v 0.167958 -0.468750 0.069570
+v -0.000000 -0.468750 -0.181797
+v -0.128468 -0.469123 0.128468
+v -0.167852 -0.469123 0.069526
+v 0.069526 -0.469123 -0.167852
+v -0.181682 -0.469123 -0.000000
+v 0.128468 -0.469123 -0.128469
+v -0.167852 -0.469123 -0.069527
+v 0.167852 -0.469123 -0.069527
+v -0.128468 -0.469123 -0.128468
+v 0.181682 -0.469123 -0.000000
+v -0.069527 -0.469123 -0.167852
+v 0.128549 -0.468750 0.128549
+v 0.069571 -0.468750 0.167958
+v 0.000000 -0.468750 0.181796
+v -0.069570 -0.468750 0.167958
+v -0.128550 -0.468750 0.128549
+v -0.167958 -0.468750 0.069570
+v 0.167852 -0.469123 0.069526
+v -0.000000 -0.469123 -0.181682
+v 0.128468 -0.469123 0.128468
+v 0.069527 -0.469123 0.167852
+v 0.000000 -0.469123 0.181681
+v -0.069527 -0.469123 0.167852
+v 0.226953 -0.029320 0.094007
+v -0.000000 -0.029320 -0.245652
+v 0.173702 -0.029320 0.173702
+v 0.094007 -0.029320 0.226953
+v 0.000000 -0.029320 0.245652
+v -0.094007 -0.029320 0.226953
+v -0.173702 -0.029320 0.173702
+v -0.226953 -0.029320 0.094007
+v 0.094007 -0.029320 -0.226953
+v -0.245652 -0.029320 -0.000000
+v 0.173702 -0.029320 -0.173703
+v -0.226953 -0.029320 -0.094007
+v 0.226953 -0.029320 -0.094007
+v -0.173702 -0.029320 -0.173702
+v 0.245652 -0.029320 -0.000000
+v -0.094007 -0.029320 -0.226953
+vt 0.875000 0.604167
+vt 0.812500 0.604167
+vt 0.812500 0.625000
+vt 0.875000 0.625000
+vt 0.250000 0.604167
+vt 0.187500 0.604167
+vt 0.187500 0.625000
+vt 0.250000 0.625000
+vt 0.625000 0.604167
+vt 0.562500 0.604167
+vt 0.562500 0.625000
+vt 0.625000 0.625000
+vt 0.937500 0.604167
+vt 0.937500 0.625000
+vt 0.312500 0.604167
+vt 0.312500 0.625000
+vt 0.687500 0.604167
+vt 0.687500 0.625000
+vt 1.000000 0.604167
+vt 1.000000 0.625000
+vt 0.375000 0.604167
+vt 0.375000 0.625000
+vt 0.750000 0.604167
+vt 0.750000 0.625000
+vt 0.437500 0.604167
+vt 0.437500 0.625000
+vt 0.062500 0.604167
+vt -0.000000 0.604167
+vt -0.000000 0.625000
+vt 0.062500 0.625000
+vt 0.500000 0.604167
+vt 0.500000 0.625000
+vt 0.125000 0.604167
+vt 0.125000 0.625000
+vt 0.562500 0.312500
+vt 0.500000 0.312500
+vt 0.562467 0.653596
+vt 0.623276 0.665691
+vt 0.674827 0.700137
+vt 0.709272 0.751688
+vt 0.721368 0.812497
+vt 0.709272 0.873305
+vt 0.674827 0.924857
+vt 0.623276 0.959302
+vt 0.562467 0.971397
+vt 0.501659 0.959302
+vt 0.450107 0.924857
+vt 0.415662 0.873305
+vt 0.403567 0.812497
+vt 0.415662 0.751688
+vt 0.450107 0.700137
+vt 0.501659 0.665692
+vt 0.187500 0.312500
+vt 0.125000 0.312500
+vt 0.875000 0.312500
+vt 0.812500 0.312500
+vt 0.437500 0.312500
+vt 0.062500 0.312500
+vt 0.750000 0.312500
+vt 0.375000 0.312500
+vt 0.687500 0.312500
+vt -0.000000 0.312500
+vt 0.312500 0.312500
+vt 0.625000 0.312500
+vt 1.000000 0.312500
+vt 0.937500 0.312500
+vt 0.250000 0.312500
+vt 0.562500 0.291667
+vt 0.500000 0.291667
+vt 0.250000 0.291667
+vt 0.187500 0.291667
+vt 1.000000 0.291667
+vt 0.937500 0.291667
+vt 0.625000 0.291667
+vt 0.312500 0.291667
+vt 0.062500 0.291667
+vt -0.000000 0.291667
+vt 0.687500 0.291667
+vt 0.375000 0.291667
+vt 0.750000 0.291667
+vt 0.125000 0.291667
+vt 0.437500 0.291667
+vt 0.812500 0.291667
+vt 0.875000 0.291667
+vt 0.187470 0.975468
+vt 0.125102 0.963062
+vt 0.072228 0.927733
+vt 0.036899 0.874860
+vt 0.024493 0.812491
+vt 0.036899 0.750122
+vt 0.072228 0.697249
+vt 0.125102 0.661920
+vt 0.187470 0.649514
+vt 0.249839 0.661920
+vt 0.302712 0.697249
+vt 0.338041 0.750123
+vt 0.350447 0.812491
+vt 0.338041 0.874860
+vt 0.302712 0.927733
+vt 0.249838 0.963062
+vt 0.437500 -0.000000
+vt 0.500000 -0.000000
+vt 0.500000 0.270833
+vt 0.437500 0.270833
+vt 0.812500 -0.000000
+vt 0.875000 -0.000000
+vt 0.875000 0.270833
+vt 0.812500 0.270833
+vt 0.937500 -0.000000
+vt 0.937500 0.270833
+vt 0.562500 -0.000000
+vt 0.562500 0.270833
+vt 0.187500 -0.000000
+vt 0.250000 -0.000000
+vt 0.250000 0.270833
+vt 0.187500 0.270833
+vt 1.000000 -0.000000
+vt 1.000000 0.270833
+vt 0.625000 -0.000000
+vt 0.625000 0.270833
+vt 0.312500 -0.000000
+vt 0.312500 0.270833
+vt -0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.062500 0.270833
+vt -0.000000 0.270833
+vt 0.687500 -0.000000
+vt 0.687500 0.270833
+vt 0.375000 -0.000000
+vt 0.375000 0.270833
+vt 0.750000 -0.000000
+vt 0.750000 0.270833
+vt 0.125000 -0.000000
+vt 0.125000 0.270833
+s 1
+f 27/1 28/2 44/3 43/4
+f 21/5 22/6 38/7 37/8
+f 31/9 32/10 48/11 47/12
+f 26/13 27/1 43/4 42/14
+f 20/15 21/5 37/8 36/16
+f 30/17 31/9 47/12 46/18
+f 25/19 26/13 42/14 41/20
+f 19/21 20/15 36/16 35/22
+f 29/23 30/17 46/18 45/24
+f 18/25 19/21 35/22 34/26
+f 24/27 25/28 41/29 40/30
+f 28/2 29/23 45/24 44/3
+f 17/31 18/25 34/26 33/32
+f 23/33 24/27 40/30 39/34
+f 22/6 23/33 39/34 38/7
+f 32/10 49/35 58/36 17/31
+f 1/37 16/38 15/39 14/40 13/41 12/42 11/43 10/44 9/45 8/46 7/47 6/48 5/49 4/50 3/51 2/52
+f 23/33 22/6 74/53 73/54
+f 27/1 69/55 57/56 28/2
+f 17/31 58/36 56/57 18/25
+f 24/27 23/33 73/54 72/58
+f 28/2 57/56 55/59 29/23
+f 18/25 56/57 54/60 19/21
+f 29/23 55/59 53/61 30/17
+f 25/28 24/27 72/58 71/62
+f 19/21 54/60 52/63 20/15
+f 30/17 53/61 51/64 31/9
+f 26/13 25/19 71/65 70/66
+f 20/15 52/63 50/67 21/5
+f 31/9 51/64 49/35 32/10
+f 21/5 50/67 74/53 22/6
+f 16/68 1/69 58/36 49/35
+f 5/70 6/71 74/53 50/67
+f 9/72 10/73 70/66 71/65
+f 15/74 16/68 49/35 51/64
+f 4/75 5/70 50/67 52/63
+f 8/76 9/77 71/62 72/58
+f 14/78 15/74 51/64 53/61
+f 3/79 4/75 52/63 54/60
+f 13/80 14/78 53/61 55/59
+f 7/81 8/76 72/58 73/54
+f 2/82 3/79 54/60 56/57
+f 12/83 13/80 55/59 57/56
+f 6/71 7/81 73/54 74/53
+f 1/69 2/82 56/57 58/36
+f 11/84 12/83 57/56 69/55
+f 32/10 17/31 33/32 48/11
+f 27/1 26/13 70/66 69/55
+f 10/73 11/84 69/55 70/66
+f 58/85 56/86 54/87 52/88 50/89 74/90 73/91 72/92 71/93 70/94 69/95 57/96 55/97 53/98 51/99 49/100
+f 68/101 76/102 82/103 96/104
+f 75/105 77/106 83/107 81/108
+f 77/106 78/109 84/110 83/107
+f 76/102 61/111 89/112 82/103
+f 60/113 62/114 90/115 88/116
+f 78/109 79/117 85/118 84/110
+f 61/111 63/119 91/120 89/112
+f 62/114 64/121 92/122 90/115
+f 79/123 80/124 86/125 85/126
+f 63/119 65/127 93/128 91/120
+f 64/121 66/129 94/130 92/122
+f 65/127 67/131 95/132 93/128
+f 80/124 59/133 87/134 86/125
+f 66/129 68/101 96/104 94/130
+f 59/133 60/113 88/116 87/134
+f 67/131 75/105 81/108 95/132
+f 44/83 45/80 95/132 81/108
+f 38/71 39/81 87/134 88/116
+f 34/82 35/79 94/130 96/104
+f 39/81 40/76 86/125 87/134
+f 45/80 46/78 93/128 95/132
+f 35/79 36/75 92/122 94/130
+f 46/78 47/74 91/120 93/128
+f 40/76 41/77 85/126 86/125
+f 36/75 37/70 90/115 92/122
+f 47/74 48/68 89/112 91/120
+f 41/72 42/73 84/110 85/118
+f 37/70 38/71 88/116 90/115
+f 48/68 33/69 82/103 89/112
+f 42/73 43/84 83/107 84/110
+f 43/84 44/83 81/108 83/107
+f 33/69 34/82 96/104 82/103
diff --git a/homedecor_modpack/homedecor/models/homedecor_trash_can_green.obj b/homedecor_modpack/homedecor/models/homedecor_trash_can_green.obj
new file mode 100644
index 0000000..5d69ab7
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_trash_can_green.obj
@@ -0,0 +1,822 @@
+# Blender v2.73 (sub 0) OBJ File: 'trash_can.blend'
+# www.blender.org
+o poubelle_Poubelle_Cylinder.214
+v -0.124387 -0.499107 0.262526
+v -0.147565 0.203898 0.310496
+v -0.246590 0.203899 0.239106
+v -0.208403 -0.499106 0.201957
+v -0.315226 0.203899 0.138154
+v -0.266637 -0.499106 0.116305
+v -0.345195 0.203899 0.019813
+v -0.292063 -0.499106 0.015900
+v -0.332882 0.203899 -0.101640
+v -0.281616 -0.499106 -0.087145
+v -0.279773 0.203899 -0.211556
+v -0.236556 -0.499106 -0.180402
+v -0.192272 0.203900 -0.296680
+v -0.162318 -0.499106 -0.252624
+v -0.080934 0.203900 -0.346744
+v -0.067854 -0.499106 -0.295100
+v 0.040812 0.203900 -0.355708
+v 0.035439 -0.499105 -0.302705
+v 0.158281 0.203900 -0.322492
+v 0.135105 -0.499105 -0.274523
+v 0.257306 0.203899 -0.251102
+v 0.219121 -0.499105 -0.213954
+v 0.325943 0.203899 -0.150150
+v 0.277355 -0.499105 -0.128301
+v 0.355912 0.203899 -0.031810
+v 0.302781 -0.499105 -0.027898
+v 0.343599 0.203899 0.089643
+v 0.292335 -0.499105 0.075148
+v 0.290489 0.203899 0.199560
+v 0.247275 -0.499105 0.168405
+v 0.202989 0.203899 0.284684
+v 0.173036 -0.499106 0.240627
+v 0.091651 0.203898 0.334747
+v 0.078573 -0.499106 0.283103
+v -0.030095 0.203898 0.343712
+v -0.024721 -0.499107 0.290709
+v -0.032947 0.218496 0.371843
+v -0.159866 0.218496 0.335955
+v 0.098592 0.218496 0.362157
+v 0.218886 0.218497 0.308067
+v 0.313425 0.218497 0.216096
+v 0.370807 0.218497 0.097336
+v 0.384110 0.218498 -0.033886
+v 0.351730 0.218498 -0.161745
+v 0.277573 0.218498 -0.270819
+v 0.170583 0.218498 -0.347951
+v 0.043664 0.218498 -0.383839
+v -0.087876 0.218498 -0.374153
+v -0.208169 0.218498 -0.320063
+v -0.302709 0.218498 -0.228092
+v -0.360090 0.218498 -0.109333
+v -0.373393 0.218497 0.021889
+v -0.341014 0.218497 0.149749
+v -0.266857 0.218497 0.258822
+v -0.166289 0.193365 0.349248
+v -0.277439 0.193366 0.269117
+v -0.354479 0.193366 0.155803
+v -0.388117 0.193366 0.022974
+v -0.374296 0.193366 -0.113350
+v -0.314684 0.193366 -0.236726
+v -0.216470 0.193367 -0.332272
+v -0.091500 0.193367 -0.388465
+v 0.045153 0.193367 -0.398526
+v 0.177005 0.193367 -0.361244
+v 0.288155 0.193366 -0.281114
+v 0.365195 0.193366 -0.167800
+v 0.398834 0.193366 -0.034970
+v 0.385013 0.193366 0.101352
+v 0.325401 0.193366 0.224728
+v 0.227187 0.193365 0.320276
+v 0.102217 0.193365 0.376468
+v -0.034436 0.193365 0.386531
+v -0.034436 0.258097 0.386531
+v -0.166289 0.258097 0.349248
+v 0.102217 0.258097 0.376468
+v 0.227187 0.258097 0.320276
+v 0.325401 0.258098 0.224728
+v 0.385013 0.258098 0.101352
+v 0.398834 0.258099 -0.034970
+v 0.365195 0.258099 -0.167800
+v 0.288155 0.258099 -0.281113
+v 0.177005 0.258099 -0.361244
+v 0.045153 0.258099 -0.398526
+v -0.091500 0.258099 -0.388465
+v -0.216470 0.258099 -0.332272
+v -0.314684 0.258099 -0.236726
+v -0.374296 0.258099 -0.113350
+v -0.388117 0.258098 0.022974
+v -0.354479 0.258098 0.155803
+v -0.277439 0.258098 0.269117
+v -0.143761 0.258098 0.302623
+v -0.240322 0.258098 0.233009
+v -0.307251 0.258098 0.134567
+v -0.336475 0.258098 0.019171
+v -0.324468 0.258099 -0.099260
+v -0.272679 0.258099 -0.206443
+v -0.187356 0.258099 -0.289449
+v -0.078788 0.258099 -0.338267
+v 0.039930 0.258099 -0.347009
+v 0.154477 0.258099 -0.314619
+v 0.251039 0.258099 -0.245005
+v 0.317968 0.258099 -0.146564
+v 0.347191 0.258099 -0.031168
+v 0.335184 0.258098 0.087264
+v 0.283396 0.258098 0.194446
+v 0.198072 0.258098 0.277453
+v 0.089504 0.258097 0.326270
+v -0.029213 0.258097 0.335012
+v -0.027136 0.313812 0.314521
+v -0.134800 0.313813 0.284077
+v 0.084448 0.313813 0.306305
+v 0.186492 0.313813 0.260421
+v 0.266689 0.313813 0.182402
+v 0.315365 0.313813 0.081660
+v 0.326650 0.313813 -0.029655
+v 0.299183 0.313814 -0.138117
+v 0.236276 0.313814 -0.230643
+v 0.037852 0.313814 -0.326518
+v 0.145517 0.313814 -0.296074
+v -0.073731 0.313814 -0.318301
+v -0.175775 0.313814 -0.272417
+v -0.255972 0.313814 -0.194398
+v -0.304649 0.313814 -0.093656
+v -0.315934 0.313813 0.017659
+v -0.288467 0.313813 0.126120
+v -0.225559 0.313813 0.218647
+v 0.052078 0.313814 -0.102690
+v 0.082331 0.313814 -0.080880
+v 0.082331 0.355065 -0.080880
+v 0.052078 0.355065 -0.102690
+v -0.041361 0.313813 0.090693
+v -0.071614 0.313813 0.068884
+v -0.071614 0.355065 0.068884
+v -0.041361 0.355065 0.090693
+v -0.071614 0.386203 0.068884
+v -0.041361 0.386203 0.090693
+v 0.082331 0.386204 -0.080880
+v 0.052078 0.386204 -0.102690
+v 0.175770 0.313814 -0.274264
+v 0.206023 0.313814 -0.252454
+v -0.195306 0.313813 0.240457
+v -0.165053 0.313813 0.262267
+v 0.088043 0.313814 -0.120857
+v 0.077220 0.313814 -0.121676
+v 0.077220 0.355065 -0.121676
+v 0.088043 0.355065 -0.120857
+v 0.092348 0.313814 -0.110774
+v 0.092348 0.355065 -0.110774
+v -0.077327 0.313813 0.108861
+v -0.066504 0.313813 0.109679
+v -0.066504 0.355065 0.109679
+v -0.077327 0.355065 0.108861
+v -0.081632 0.313813 0.098776
+v -0.081632 0.355065 0.098776
+v -0.081632 0.386203 0.098776
+v -0.077327 0.386203 0.108861
+v -0.066504 0.386203 0.109679
+v 0.092348 0.386204 -0.110774
+v 0.088043 0.386204 -0.120857
+v 0.077220 0.386204 -0.121676
+vt 0.322026 0.460840
+vt 0.000000 0.456784
+vt 0.000901 0.404004
+vt 0.322790 0.416061
+vt 0.002594 0.360586
+vt 0.324227 0.379223
+vt 0.679238 0.652419
+vt 1.000000 0.641530
+vt 0.999384 0.693984
+vt 0.678715 0.696924
+vt 0.999169 0.749768
+vt 0.678534 0.744253
+vt 0.999383 0.802154
+vt 0.678715 0.788699
+vt 1.000000 0.844824
+vt 0.679238 0.824902
+vt 0.003418 0.625780
+vt 0.324227 0.606633
+vt 0.323404 0.648576
+vt 0.002720 0.661366
+vt 0.322966 0.700570
+vt 0.002349 0.705479
+vt 0.322966 0.756341
+vt 0.002349 0.752798
+vt 0.323404 0.809164
+vt 0.002721 0.797615
+vt 0.324227 0.852668
+vt 0.003419 0.834525
+vt 0.678534 0.832143
+vt 0.356771 0.847924
+vt 0.355537 0.800514
+vt 0.677486 0.791919
+vt 0.355108 0.745908
+vt 0.677123 0.745589
+vt 0.355537 0.690693
+vt 0.677486 0.698743
+vt 0.356771 0.641530
+vt 0.678534 0.657031
+vt 0.324227 0.587979
+vt 0.002594 0.606633
+vt 0.000901 0.564600
+vt 0.322790 0.552316
+vt 0.000000 0.512558
+vt 0.322026 0.508162
+vt 0.386913 0.093233
+vt 0.367833 0.145653
+vt 0.355108 0.143410
+vt 0.375723 0.086772
+vt 0.367833 0.201438
+vt 0.355108 0.203682
+vt 0.386912 0.253859
+vt 0.375722 0.260319
+vt 0.422770 0.296593
+vt 0.414464 0.306490
+vt 0.471081 0.324485
+vt 0.466662 0.336627
+vt 0.526018 0.334173
+vt 0.526018 0.347093
+vt 0.580956 0.324486
+vt 0.585375 0.336627
+vt 0.629267 0.296593
+vt 0.637572 0.306491
+vt 0.665125 0.253860
+vt 0.676314 0.260321
+vt 0.684204 0.201440
+vt 0.696929 0.203683
+vt 0.684205 0.145655
+vt 0.696929 0.143411
+vt 0.665125 0.093234
+vt 0.676315 0.086774
+vt 0.629267 0.050500
+vt 0.637573 0.040602
+vt 0.580957 0.022608
+vt 0.585376 0.010466
+vt 0.526020 0.012920
+vt 0.526020 0.000000
+vt 0.471082 0.022607
+vt 0.466663 0.010466
+vt 0.422771 0.050499
+vt 0.414466 0.040601
+vt 0.913966 0.571184
+vt 0.913493 0.514111
+vt 0.924822 0.515132
+vt 0.925313 0.574423
+vt 0.914856 0.618186
+vt 0.926237 0.623253
+vt 0.898822 0.179171
+vt 0.900155 0.230396
+vt 0.888454 0.234876
+vt 0.887068 0.181661
+vt 0.898359 0.120173
+vt 0.886587 0.120369
+vt 0.898822 0.060517
+vt 0.887068 0.058394
+vt 0.900155 0.007398
+vt 0.888454 0.003211
+vt 0.884757 0.296439
+vt 0.886587 0.341853
+vt 0.874911 0.347093
+vt 0.873010 0.299914
+vt 0.883784 0.240210
+vt 0.871998 0.241499
+vt 0.883784 0.179949
+vt 0.871998 0.178896
+vt 0.884757 0.122925
+vt 0.873009 0.119654
+vt 0.886587 0.076014
+vt 0.874910 0.070920
+vt 0.900386 0.066681
+vt 0.901052 0.010008
+vt 0.912420 0.006690
+vt 0.911728 0.065566
+vt 0.900155 0.126953
+vt 0.911487 0.128180
+vt 0.900386 0.183554
+vt 0.911728 0.186981
+vt 0.901052 0.229656
+vt 0.912420 0.234876
+vt 0.913966 0.397678
+vt 0.914855 0.352360
+vt 0.926237 0.347093
+vt 0.925313 0.394172
+vt 0.913493 0.453853
+vt 0.924822 0.452531
+vt 0.726477 0.178896
+vt 0.726477 0.241499
+vt 0.696929 0.241472
+vt 0.696929 0.178869
+vt 0.727488 0.299914
+vt 0.697941 0.299887
+vt 0.729389 0.347093
+vt 0.699841 0.347066
+vt 0.791796 0.115427
+vt 0.790410 0.170611
+vt 0.760858 0.170570
+vt 0.762244 0.115386
+vt 0.789929 0.232586
+vt 0.760378 0.232545
+vt 0.790410 0.293877
+vt 0.760858 0.293836
+vt 0.791796 0.347093
+vt 0.762244 0.347052
+vt 0.730804 0.347093
+vt 0.729880 0.298263
+vt 0.759453 0.298248
+vt 0.760378 0.347078
+vt 0.729389 0.238972
+vt 0.758962 0.238957
+vt 0.729389 0.176372
+vt 0.758962 0.176357
+vt 0.729881 0.118012
+vt 0.759453 0.117998
+vt 0.730805 0.070933
+vt 0.760378 0.070919
+vt 0.325159 0.588772
+vt 0.324467 0.540878
+vt 0.354041 0.540992
+vt 0.354733 0.588887
+vt 0.324227 0.482077
+vt 0.353801 0.482191
+vt 0.324468 0.419462
+vt 0.354041 0.419577
+vt 0.325159 0.360586
+vt 0.354733 0.360700
+vt 0.729389 0.070919
+vt 0.727488 0.119654
+vt 0.697940 0.119627
+vt 0.699841 0.070892
+vt 0.021416 0.270440
+vt 0.000000 0.211601
+vt 0.023304 0.207492
+vt 0.041909 0.258608
+vt 0.061665 0.318406
+vt 0.076875 0.300279
+vt 0.115891 0.349713
+vt 0.123985 0.327478
+vt 0.177555 0.360586
+vt 0.177555 0.336923
+vt 0.239219 0.349713
+vt 0.231126 0.327477
+vt 0.293445 0.318405
+vt 0.278235 0.300278
+vt 0.333693 0.270439
+vt 0.313200 0.258608
+vt 0.355108 0.211599
+vt 0.331806 0.207491
+vt 0.355108 0.148985
+vt 0.331805 0.153094
+vt 0.333692 0.090146
+vt 0.313200 0.101977
+vt 0.293444 0.042180
+vt 0.278234 0.060307
+vt 0.239218 0.010872
+vt 0.231125 0.033108
+vt 0.177554 0.000000
+vt 0.177554 0.023663
+vt 0.115890 0.010873
+vt 0.123984 0.033109
+vt 0.061664 0.042181
+vt 0.076874 0.060308
+vt 0.021416 0.090147
+vt 0.041909 0.101979
+vt 0.000000 0.148986
+vt 0.023304 0.153095
+vt 0.870689 0.200955
+vt 0.870235 0.255341
+vt 0.845258 0.253295
+vt 0.845685 0.202178
+vt 0.870690 0.306093
+vt 0.845685 0.300999
+vt 0.871998 0.347093
+vt 0.846915 0.339535
+vt 0.845258 0.145833
+vt 0.844054 0.193774
+vt 0.819011 0.196678
+vt 0.820142 0.151617
+vt 0.843637 0.247614
+vt 0.818618 0.247283
+vt 0.844054 0.300862
+vt 0.819011 0.297331
+vt 0.845258 0.347093
+vt 0.820142 0.340784
+vt 0.793026 0.347093
+vt 0.792223 0.304672
+vt 0.817863 0.300131
+vt 0.818618 0.340004
+vt 0.791796 0.253162
+vt 0.791796 0.198778
+vt 0.817462 0.200601
+vt 0.817462 0.251717
+vt 0.792223 0.148078
+vt 0.817863 0.152948
+vt 0.793026 0.107178
+vt 0.818618 0.114506
+vt 0.329147 0.828858
+vt 0.328387 0.787252
+vt 0.354018 0.782532
+vt 0.354733 0.821638
+vt 0.327982 0.736170
+vt 0.353638 0.734519
+vt 0.327982 0.681773
+vt 0.353637 0.683391
+vt 0.328386 0.630622
+vt 0.354018 0.635314
+vt 0.329147 0.588887
+vt 0.354733 0.596087
+vt 0.696929 0.000000
+vt 0.713054 0.000261
+vt 0.713054 0.019090
+vt 0.696929 0.018829
+vt 0.696929 0.037821
+vt 0.713067 0.037695
+vt 0.713067 0.056541
+vt 0.696929 0.056667
+vt 0.713067 0.070766
+vt 0.696929 0.070892
+vt 0.713054 0.033304
+vt 0.696929 0.033043
+vt 0.905513 0.337154
+vt 0.905432 0.253532
+vt 0.919657 0.253697
+vt 0.919738 0.337320
+vt 0.852032 0.129487
+vt 0.852032 0.032832
+vt 0.869074 0.032832
+vt 0.869074 0.129487
+vt 0.832832 0.127450
+vt 0.818618 0.127633
+vt 0.818770 0.035802
+vt 0.832984 0.035619
+vt 0.777420 0.115386
+vt 0.760378 0.115386
+vt 0.760378 0.018732
+vt 0.777420 0.018731
+vt 0.713067 0.037796
+vt 0.717905 0.037821
+vt 0.717905 0.056666
+vt 0.713067 0.056641
+vt 0.886785 0.346708
+vt 0.886668 0.336935
+vt 0.905629 0.346927
+vt 0.851663 0.127207
+vt 0.851838 0.141611
+vt 0.833008 0.141854
+vt 0.852032 0.145407
+vt 0.833201 0.145649
+vt 0.717895 0.033253
+vt 0.713054 0.014474
+vt 0.717895 0.014423
+vt 0.852032 0.023630
+vt 0.851815 0.035376
+vt 0.833201 0.023872
+vt 0.886587 0.253312
+vt 0.886681 0.239266
+vt 0.905526 0.239486
+vt 0.886785 0.234876
+vt 0.905630 0.235096
+vt 0.919751 0.239652
+vt 0.919855 0.235261
+vt 0.717895 0.000210
+vt 0.818987 0.024056
+vt 0.818793 0.142037
+vt 0.818987 0.145833
+vt 0.717905 0.070892
+vt 0.713067 0.070867
+vt 0.919855 0.347093
+vt 0.864800 0.143245
+vt 0.860509 0.145833
+vt 0.856278 0.143244
+vt 0.856307 0.019074
+vt 0.860597 0.016487
+vt 0.864828 0.019076
+vt 0.871998 0.149498
+vt 0.846095 0.186057
+vt 0.846505 0.169935
+vt 0.846915 0.153813
+vt 0.825894 0.611436
+vt 0.779282 0.619655
+vt 0.732672 0.611436
+vt 0.691683 0.587772
+vt 0.661260 0.551514
+vt 0.645072 0.507039
+vt 0.645072 0.459709
+vt 0.661259 0.415234
+vt 0.691683 0.378976
+vt 0.732671 0.355312
+vt 0.779282 0.347093
+vt 0.825893 0.355312
+vt 0.866882 0.378977
+vt 0.897305 0.415233
+vt 0.913493 0.459709
+vt 0.913493 0.507039
+vt 0.897305 0.551514
+vt 0.866883 0.587771
+vt 0.449738 0.355972
+vt 0.500090 0.347093
+vt 0.516874 0.350053
+vt 0.533657 0.353012
+vt 0.550441 0.355971
+vt 0.594720 0.381535
+vt 0.627585 0.420702
+vt 0.645072 0.468747
+vt 0.645072 0.519875
+vt 0.627585 0.567920
+vt 0.594720 0.607087
+vt 0.550442 0.632651
+vt 0.500091 0.641530
+vt 0.483306 0.638571
+vt 0.466523 0.635611
+vt 0.449739 0.632652
+vt 0.405460 0.607088
+vt 0.372596 0.567921
+vt 0.355108 0.519876
+vt 0.355108 0.468748
+vt 0.372595 0.420702
+vt 0.405460 0.381536
+vt 0.817596 0.267855
+vt 0.817729 0.283993
+vn -0.311700 -0.697500 0.645200
+vn -0.354900 -0.578400 0.734500
+vn -0.584700 -0.578400 0.568800
+vn -0.513600 -0.697500 0.499600
+vn -0.743900 -0.578400 0.334500
+vn -0.653500 -0.697500 0.293900
+vn -0.813500 -0.578400 0.059900
+vn -0.714600 -0.697500 0.052600
+vn -0.784900 -0.578400 -0.221900
+vn -0.689500 -0.697500 -0.195000
+vn -0.661700 -0.578400 -0.477000
+vn -0.581300 -0.697500 -0.419000
+vn -0.458600 -0.578400 -0.674600
+vn -0.402900 -0.697500 -0.592600
+vn -0.200200 -0.578400 -0.790700
+vn -0.175900 -0.697500 -0.694600
+vn 0.082200 -0.578400 -0.811500
+vn 0.072300 -0.697500 -0.712900
+vn 0.354900 -0.578400 -0.734500
+vn 0.311700 -0.697500 -0.645200
+vn 0.584700 -0.578400 -0.568800
+vn 0.513600 -0.697500 -0.499600
+vn 0.744000 -0.578400 -0.334500
+vn 0.653500 -0.697500 -0.293900
+vn 0.813500 -0.578400 -0.059900
+vn 0.714600 -0.697500 -0.052600
+vn 0.784900 -0.578400 0.221900
+vn 0.689500 -0.697500 0.195000
+vn 0.661700 -0.578400 0.477000
+vn 0.581300 -0.697500 0.419000
+vn 0.458600 -0.578400 0.674600
+vn 0.402900 -0.697500 0.592600
+vn 0.200200 -0.578400 0.790700
+vn 0.175900 -0.697500 0.694600
+vn -0.082200 -0.578400 0.811500
+vn -0.072300 -0.697500 0.712900
+vn 0.034800 -0.938500 -0.343400
+vn 0.150200 -0.938500 -0.310800
+vn -0.084700 -0.938500 -0.334600
+vn -0.194000 -0.938500 -0.285400
+vn -0.280000 -0.938500 -0.201800
+vn -0.332100 -0.938500 -0.093900
+vn -0.344200 -0.938500 0.025300
+vn -0.314800 -0.938500 0.141500
+vn -0.247400 -0.938500 0.240700
+vn -0.150200 -0.938500 0.310800
+vn -0.034800 -0.938500 0.343400
+vn 0.084700 -0.938500 0.334600
+vn 0.194000 -0.938500 0.285400
+vn 0.280000 -0.938500 0.201800
+vn 0.332100 -0.938500 0.093900
+vn 0.344200 -0.938500 -0.025300
+vn 0.314800 -0.938500 -0.141500
+vn 0.247400 -0.938500 -0.240700
+vn -0.154900 -0.934400 0.320700
+vn -0.255300 -0.934400 0.248300
+vn -0.324800 -0.934400 0.146100
+vn -0.355200 -0.934400 0.026100
+vn -0.342700 -0.934400 -0.096900
+vn -0.288900 -0.934400 -0.208300
+vn -0.200200 -0.934400 -0.294500
+vn -0.087400 -0.934400 -0.345300
+vn 0.035900 -0.934400 -0.354300
+vn 0.154900 -0.934400 -0.320700
+vn 0.255300 -0.934400 -0.248300
+vn 0.324800 -0.934400 -0.146000
+vn 0.355200 -0.934400 -0.026100
+vn 0.342700 -0.934400 0.096900
+vn 0.288900 -0.934400 0.208300
+vn 0.200200 -0.934400 0.294500
+vn 0.087400 -0.934400 0.345300
+vn -0.035900 -0.934400 0.354300
+vn -0.074900 0.670000 0.738500
+vn -0.322900 0.670000 0.668400
+vn 0.182200 0.670000 0.719600
+vn 0.417400 0.670000 0.613900
+vn 0.602200 0.670000 0.434100
+vn 0.714300 0.670000 0.202000
+vn 0.740300 0.670000 -0.054500
+vn 0.677000 0.670000 -0.304400
+vn 0.532100 0.670000 -0.517600
+vn 0.322900 0.670000 -0.668400
+vn 0.074900 0.670000 -0.738500
+vn -0.182200 0.670000 -0.719600
+vn -0.417400 0.670000 -0.613900
+vn -0.602200 0.670000 -0.434100
+vn -0.714300 0.670000 -0.202000
+vn -0.740300 0.670000 0.054500
+vn -0.677000 0.670000 0.304400
+vn -0.532100 0.670000 0.517600
+vn -0.228700 0.850700 0.473300
+vn -0.376800 0.850700 0.366600
+vn -0.479400 0.850700 0.215600
+vn -0.524200 0.850700 0.038600
+vn -0.505800 0.850700 -0.143000
+vn -0.426400 0.850700 -0.307400
+vn -0.295500 0.850700 -0.434700
+vn -0.129000 0.850700 -0.509600
+vn 0.053000 0.850700 -0.523000
+vn 0.228700 0.850700 -0.473300
+vn 0.376800 0.850700 -0.366600
+vn 0.479400 0.850700 -0.215600
+vn 0.524200 0.850700 -0.038600
+vn 0.505800 0.850700 0.143000
+vn 0.426400 0.850700 0.307400
+vn 0.295500 0.850700 0.434700
+vn 0.129000 0.850700 0.509600
+vn -0.053000 0.850700 0.523000
+vn -0.061600 0.791400 0.608100
+vn -0.265900 0.791400 0.550400
+vn 0.150100 0.791400 0.592500
+vn 0.343700 0.791400 0.505500
+vn 0.495800 0.791400 0.357500
+vn 0.588200 0.791400 0.166300
+vn 0.609600 0.791400 -0.044900
+vn 0.557500 0.791400 -0.250600
+vn 0.438100 0.791400 -0.426200
+vn 0.061600 0.791400 -0.608100
+vn 0.265900 0.791400 -0.550400
+vn -0.150100 0.791400 -0.592500
+vn -0.343700 0.791400 -0.505500
+vn -0.495800 0.791400 -0.357500
+vn -0.588200 0.791400 -0.166300
+vn -0.609600 0.791400 0.044900
+vn -0.557500 0.791400 0.250700
+vn -0.438100 0.791400 0.426200
+vn -0.999900 0.000000 0.011100
+vn 0.306400 0.000000 0.951900
+vn 0.671700 0.000000 0.740800
+vn -0.915800 0.000000 -0.401600
+vn 0.999900 0.000000 -0.011100
+vn -0.306400 0.000000 -0.951900
+vn -0.671600 0.000000 -0.740900
+vn 0.915800 0.000000 0.401600
+vn 0.584800 0.000000 -0.811200
+vn -0.584800 0.000000 0.811200
+vn -0.573600 -0.707100 -0.413500
+vn -0.573600 0.707100 -0.413500
+vn 0.573600 0.707100 0.413500
+vn 0.573600 -0.707100 0.413500
+vn 0.582200 0.000000 -0.813100
+vn -0.281800 0.000000 -0.959500
+vn -0.281700 0.000000 -0.959500
+vn 0.582200 0.000000 -0.813000
+vn 0.999200 0.000000 -0.040100
+vn -0.582200 0.000000 0.813100
+vn 0.281800 0.000000 0.959500
+vn -0.582100 0.000000 0.813000
+vn -0.999200 0.000000 0.040000
+vn -0.771800 0.635200 0.030900
+vn -0.737400 0.628600 -0.247100
+vn -0.462700 0.606800 0.646300
+vn 0.217500 0.635500 0.740700
+vn 0.468400 0.629100 0.620300
+vn 0.771800 0.635200 -0.030900
+vn 0.737500 0.628600 0.247100
+vn 0.462700 0.606800 -0.646300
+vn -0.217500 0.635500 -0.740800
+vn -0.468400 0.629100 -0.620300
+vn -0.335400 0.819100 0.465200
+vn 0.335400 0.819100 -0.465200
+g poubelle_Poubelle_Cylinder.214_poubelle_Poubelle_Cylinder.214_Poubelle
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 4/4/4 3/3/3 5/5/5 6/6/6
+f 6/7/6 5/8/5 7/9/7 8/10/8
+f 8/10/8 7/9/7 9/11/9 10/12/10
+f 10/12/10 9/11/9 11/13/11 12/14/12
+f 12/14/12 11/13/11 13/15/13 14/16/14
+f 14/17/14 13/18/13 15/19/15 16/20/16
+f 16/20/16 15/19/15 17/21/17 18/22/18
+f 18/22/18 17/21/17 19/23/19 20/24/20
+f 20/24/20 19/23/19 21/25/21 22/26/22
+f 22/26/22 21/25/21 23/27/23 24/28/24
+f 24/29/24 23/30/23 25/31/25 26/32/26
+f 26/32/26 25/31/25 27/33/27 28/34/28
+f 28/34/28 27/33/27 29/35/29 30/36/30
+f 30/36/30 29/35/29 31/37/31 32/38/32
+f 32/39/32 31/40/31 33/41/33 34/42/34
+f 34/42/34 33/41/33 35/43/35 36/44/36
+f 2/2/2 1/1/1 36/44/36 35/43/35
+f 2/45/2 35/46/35 37/47/37 38/48/38
+f 35/46/35 33/49/33 39/50/39 37/47/37
+f 33/49/33 31/51/31 40/52/40 39/50/39
+f 31/51/31 29/53/29 41/54/41 40/52/40
+f 29/53/29 27/55/27 42/56/42 41/54/41
+f 27/55/27 25/57/25 43/58/43 42/56/42
+f 25/57/25 23/59/23 44/60/44 43/58/43
+f 23/59/23 21/61/21 45/62/45 44/60/44
+f 21/61/21 19/63/19 46/64/46 45/62/45
+f 19/63/19 17/65/17 47/66/47 46/64/46
+f 17/65/17 15/67/15 48/68/48 47/66/47
+f 15/67/15 13/69/13 49/70/49 48/68/48
+f 13/69/13 11/71/11 50/72/50 49/70/49
+f 11/71/11 9/73/9 51/74/51 50/72/50
+f 9/73/9 7/75/7 52/76/52 51/74/51
+f 7/75/7 5/77/5 53/78/53 52/76/52
+f 5/77/5 3/79/3 54/80/54 53/78/53
+f 3/79/3 2/45/2 38/48/38 54/80/54
+f 54/81/54 38/82/38 55/83/55 56/84/56
+f 53/85/53 54/81/54 56/84/56 57/86/57
+f 52/87/52 53/88/53 57/89/57 58/90/58
+f 51/91/51 52/87/52 58/90/58 59/92/59
+f 50/93/50 51/91/51 59/92/59 60/94/60
+f 49/95/49 50/93/50 60/94/60 61/96/61
+f 48/97/48 49/98/49 61/99/61 62/100/62
+f 47/101/47 48/97/48 62/100/62 63/102/63
+f 46/103/46 47/101/47 63/102/63 64/104/64
+f 45/105/45 46/103/46 64/104/64 65/106/65
+f 44/107/44 45/105/45 65/106/65 66/108/66
+f 43/109/43 44/110/44 66/111/66 67/112/67
+f 42/113/42 43/109/43 67/112/67 68/114/68
+f 41/115/41 42/113/42 68/114/68 69/116/69
+f 40/117/40 41/115/41 69/116/69 70/118/70
+f 39/119/39 40/120/40 70/121/70 71/122/71
+f 37/123/37 39/119/39 71/122/71 72/124/72
+f 38/82/38 37/123/37 72/124/72 55/83/55
+f 55/125/55 72/126/72 73/127/73 74/128/74
+f 72/126/72 71/129/71 75/130/75 73/127/73
+f 71/129/71 70/131/70 76/132/76 75/130/75
+f 70/133/70 69/134/69 77/135/77 76/136/76
+f 69/134/69 68/137/68 78/138/78 77/135/77
+f 68/137/68 67/139/67 79/140/79 78/138/78
+f 67/139/67 66/141/66 80/142/80 79/140/79
+f 66/143/66 65/144/65 81/145/81 80/146/80
+f 65/144/65 64/147/64 82/148/82 81/145/81
+f 64/147/64 63/149/63 83/150/83 82/148/82
+f 63/149/63 62/151/62 84/152/84 83/150/83
+f 62/151/62 61/153/61 85/154/85 84/152/84
+f 61/155/61 60/156/60 86/157/86 85/158/85
+f 60/156/60 59/159/59 87/160/87 86/157/86
+f 59/159/59 58/161/58 88/162/88 87/160/87
+f 58/161/58 57/163/57 89/164/89 88/162/88
+f 57/165/57 56/166/56 90/167/90 89/168/89
+f 56/166/56 55/125/55 74/128/74 90/167/90
+f 90/169/90 74/170/74 91/171/91 92/172/92
+f 89/173/89 90/169/90 92/172/92 93/174/93
+f 88/175/88 89/173/89 93/174/93 94/176/94
+f 87/177/87 88/175/88 94/176/94 95/178/95
+f 86/179/86 87/177/87 95/178/95 96/180/96
+f 85/181/85 86/179/86 96/180/96 97/182/97
+f 84/183/84 85/181/85 97/182/97 98/184/98
+f 83/185/83 84/183/84 98/184/98 99/186/99
+f 82/187/82 83/185/83 99/186/99 100/188/100
+f 81/189/81 82/187/82 100/188/100 101/190/101
+f 80/191/80 81/189/81 101/190/101 102/192/102
+f 79/193/79 80/191/80 102/192/102 103/194/103
+f 78/195/78 79/193/79 103/194/103 104/196/104
+f 77/197/77 78/195/78 104/196/104 105/198/105
+f 76/199/76 77/197/77 105/198/105 106/200/106
+f 75/201/75 76/199/76 106/200/106 107/202/107
+f 73/203/73 75/201/75 107/202/107 108/204/108
+f 74/170/74 73/203/73 108/204/108 91/171/91
+f 91/205/91 108/206/108 109/207/109 110/208/110
+f 108/206/108 107/209/107 111/210/111 109/207/109
+f 107/209/107 106/211/106 112/212/112 111/210/111
+f 106/213/106 105/214/105 113/215/113 112/216/112
+f 105/214/105 104/217/104 114/218/114 113/215/113
+f 104/217/104 103/219/103 115/220/115 114/218/114
+f 103/219/103 102/221/102 116/222/116 115/220/115
+f 102/223/102 101/224/101 117/225/117 116/226/116
+f 100/227/100 99/228/99 118/229/118 119/230/119
+f 99/228/99 98/231/98 120/232/120 118/229/118
+f 98/231/98 97/233/97 121/234/121 120/232/120
+f 97/235/97 96/236/96 122/237/122 121/238/121
+f 96/236/96 95/239/95 123/240/123 122/237/122
+f 95/239/95 94/241/94 124/242/124 123/240/123
+f 94/241/94 93/243/93 125/244/125 124/242/124
+f 93/243/93 92/245/92 126/246/126 125/244/125
+f 127/247/127 128/248/128 129/249/129 130/250/130
+f 131/251/131 132/252/132 133/253/133 134/254/134
+f 134/254/135 133/253/135 135/255/135 136/256/135
+f 130/250/136 129/249/136 137/257/136 138/258/136
+f 130/259/137 133/260/137 135/261/138 138/262/138
+f 136/263/139 137/264/139 138/265/138 135/266/138
+f 129/267/140 137/268/139 136/269/139 134/270/140
+f 130/271/137 129/272/140 134/273/140 133/274/137
+f 143/275/141 144/276/142 145/277/143 146/278/144
+f 144/279/142 127/280/127 130/259/130 145/281/143
+f 128/282/128 147/283/145 148/284/145 129/267/129
+f 147/283/145 143/285/141 146/286/144 148/284/145
+f 149/287/146 150/257/147 151/288/147 152/289/148
+f 150/290/147 131/291/131 134/270/134 151/292/147
+f 132/293/132 153/294/149 154/295/149 133/260/133
+f 153/294/149 149/296/146 152/297/148 154/295/149
+f 133/260/133 154/295/149 155/298/150 135/261/151
+f 154/295/149 152/297/148 156/299/152 155/298/150
+f 152/289/148 151/288/147 157/248/153 156/300/152
+f 151/292/147 134/270/134 136/269/154 157/301/153
+f 129/267/129 148/284/145 158/302/155 137/268/156
+f 148/284/145 146/286/144 159/303/157 158/302/155
+f 146/278/144 145/277/143 160/304/158 159/305/157
+f 145/281/143 130/259/130 138/262/159 160/306/158
+f 155/307/150 156/308/152 157/309/153
+f 135/266/151 155/307/150 157/309/153 136/263/154
+f 158/310/155 159/311/157 160/312/158
+f 137/264/156 158/310/155 160/312/158 138/265/159
+f 92/313/92 91/205/91 110/208/110 142/314/160 141/315/160 126/316/126
+f 36/317/36 1/318/1 4/319/4 6/320/6 8/321/8 10/322/10 12/323/12 14/324/14 16/325/16 18/326/18 20/327/20 22/328/22 24/329/24 26/330/26 28/331/28 30/332/30 32/333/32 34/334/34
+f 125/335/125 126/336/126 141/337/160 142/338/160 110/339/110 109/340/109 111/341/111 112/342/112 113/343/113 114/344/114 115/345/115 116/346/116 117/347/117 140/348/161 139/349/161 119/350/119 118/351/118 120/352/120 121/353/121 122/354/122 123/355/123 124/356/124
+f 139/357/161 140/358/161 117/225/117 101/224/101 100/227/100 119/230/119
diff --git a/homedecor_modpack/homedecor/models/homedecor_trash_can_green_open.obj b/homedecor_modpack/homedecor/models/homedecor_trash_can_green_open.obj
new file mode 100644
index 0000000..4e436ed
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_trash_can_green_open.obj
@@ -0,0 +1,346 @@
+# Blender v2.73 (sub 0) OBJ File: 'trash_can_green.blend'
+# www.blender.org
+o poubelle_Poubelle_Cylinder.000
+v -0.124387 -0.499107 0.262526
+v -0.147565 0.203898 0.310496
+v -0.246590 0.203899 0.239106
+v -0.208403 -0.499106 0.201957
+v -0.315226 0.203899 0.138154
+v -0.266637 -0.499106 0.116305
+v -0.345195 0.203899 0.019813
+v -0.292063 -0.499106 0.015900
+v -0.332882 0.203899 -0.101640
+v -0.281616 -0.499106 -0.087145
+v -0.279773 0.203899 -0.211556
+v -0.236556 -0.499106 -0.180402
+v -0.192272 0.203900 -0.296680
+v -0.162318 -0.499106 -0.252624
+v -0.080934 0.203900 -0.346744
+v -0.067854 -0.499106 -0.295100
+v 0.040812 0.203900 -0.355708
+v 0.035439 -0.499105 -0.302705
+v 0.158281 0.203900 -0.322492
+v 0.135105 -0.499105 -0.274523
+v 0.257306 0.203899 -0.251102
+v 0.219121 -0.499105 -0.213954
+v 0.325943 0.203899 -0.150150
+v 0.277355 -0.499105 -0.128301
+v 0.355912 0.203899 -0.031810
+v 0.302781 -0.499105 -0.027898
+v 0.343599 0.203899 0.089643
+v 0.292335 -0.499105 0.075148
+v 0.290489 0.203899 0.199560
+v 0.247275 -0.499105 0.168405
+v 0.202989 0.203899 0.284684
+v 0.173036 -0.499106 0.240627
+v 0.091651 0.203898 0.334747
+v 0.078573 -0.499106 0.283103
+v -0.030095 0.203898 0.343712
+v -0.024721 -0.499107 0.290709
+v -0.032947 0.218496 0.371843
+v -0.159866 0.218496 0.335955
+v 0.098592 0.218496 0.362157
+v 0.218886 0.218497 0.308067
+v 0.313425 0.218497 0.216096
+v 0.370807 0.218497 0.097336
+v 0.384110 0.218498 -0.033886
+v 0.351730 0.218498 -0.161745
+v 0.277573 0.218498 -0.270819
+v 0.170583 0.218498 -0.347951
+v 0.043664 0.218498 -0.383839
+v -0.087876 0.218498 -0.374153
+v -0.208169 0.218498 -0.320063
+v -0.302709 0.218498 -0.228092
+v -0.360090 0.218498 -0.109333
+v -0.373393 0.218497 0.021889
+v -0.341014 0.218497 0.149749
+v -0.266857 0.218497 0.258822
+v -0.166289 0.193365 0.349248
+v -0.277439 0.193366 0.269117
+v -0.354479 0.193366 0.155803
+v -0.388117 0.193366 0.022974
+v -0.374296 0.193366 -0.113350
+v -0.314684 0.193366 -0.236726
+v -0.216470 0.193367 -0.332272
+v -0.091500 0.193367 -0.388465
+v 0.045153 0.193367 -0.398526
+v 0.177005 0.193367 -0.361244
+v 0.288155 0.193366 -0.281114
+v 0.365195 0.193366 -0.167800
+v 0.398834 0.193366 -0.034970
+v 0.385013 0.193366 0.101352
+v 0.325401 0.193366 0.224728
+v 0.227187 0.193365 0.320276
+v 0.102217 0.193365 0.376468
+v -0.034436 0.193365 0.386531
+vt 0.322026 0.460840
+vt 0.000000 0.456784
+vt 0.000901 0.404004
+vt 0.322790 0.416061
+vt 0.002594 0.360586
+vt 0.324227 0.379223
+vt 0.679238 0.652419
+vt 1.000000 0.641530
+vt 0.999384 0.693984
+vt 0.678715 0.696924
+vt 0.999169 0.749768
+vt 0.678534 0.744253
+vt 0.999383 0.802154
+vt 0.678715 0.788699
+vt 1.000000 0.844824
+vt 0.679238 0.824902
+vt 0.003418 0.625780
+vt 0.324227 0.606633
+vt 0.323404 0.648576
+vt 0.002720 0.661366
+vt 0.322966 0.700570
+vt 0.002349 0.705479
+vt 0.322966 0.756341
+vt 0.002349 0.752798
+vt 0.323404 0.809164
+vt 0.002721 0.797615
+vt 0.324227 0.852668
+vt 0.003419 0.834525
+vt 0.678534 0.832143
+vt 0.356771 0.847924
+vt 0.355537 0.800514
+vt 0.677486 0.791919
+vt 0.355108 0.745908
+vt 0.677123 0.745589
+vt 0.355537 0.690693
+vt 0.677486 0.698743
+vt 0.356771 0.641530
+vt 0.678534 0.657031
+vt 0.324227 0.587979
+vt 0.002594 0.606633
+vt 0.000901 0.564600
+vt 0.322790 0.552316
+vt 0.000000 0.512558
+vt 0.322026 0.508162
+vt 0.386913 0.093233
+vt 0.367833 0.145653
+vt 0.355108 0.143410
+vt 0.375723 0.086772
+vt 0.367833 0.201438
+vt 0.355108 0.203682
+vt 0.386912 0.253859
+vt 0.375722 0.260319
+vt 0.422770 0.296593
+vt 0.414464 0.306490
+vt 0.471081 0.324485
+vt 0.466662 0.336627
+vt 0.526018 0.334173
+vt 0.526018 0.347093
+vt 0.580956 0.324486
+vt 0.585375 0.336627
+vt 0.629267 0.296593
+vt 0.637572 0.306491
+vt 0.665125 0.253860
+vt 0.676314 0.260321
+vt 0.684204 0.201440
+vt 0.696929 0.203683
+vt 0.684205 0.145655
+vt 0.696929 0.143411
+vt 0.665125 0.093234
+vt 0.676315 0.086774
+vt 0.629267 0.050500
+vt 0.637573 0.040602
+vt 0.580957 0.022608
+vt 0.585376 0.010466
+vt 0.526020 0.012920
+vt 0.526020 0.000000
+vt 0.471082 0.022607
+vt 0.466663 0.010466
+vt 0.422771 0.050499
+vt 0.414466 0.040601
+vt 0.913966 0.571184
+vt 0.913493 0.514111
+vt 0.924822 0.515132
+vt 0.925313 0.574423
+vt 0.914856 0.618186
+vt 0.926237 0.623253
+vt 0.898822 0.179171
+vt 0.900155 0.230396
+vt 0.888454 0.234876
+vt 0.887068 0.181661
+vt 0.898359 0.120173
+vt 0.886587 0.120369
+vt 0.898822 0.060517
+vt 0.887068 0.058394
+vt 0.900155 0.007398
+vt 0.888454 0.003211
+vt 0.884757 0.296439
+vt 0.886587 0.341853
+vt 0.874911 0.347093
+vt 0.873010 0.299914
+vt 0.883784 0.240210
+vt 0.871998 0.241499
+vt 0.883784 0.179949
+vt 0.871998 0.178896
+vt 0.884757 0.122925
+vt 0.873009 0.119654
+vt 0.886587 0.076014
+vt 0.874910 0.070920
+vt 0.900386 0.066681
+vt 0.901052 0.010008
+vt 0.912420 0.006690
+vt 0.911728 0.065566
+vt 0.900155 0.126953
+vt 0.911487 0.128180
+vt 0.900386 0.183554
+vt 0.911728 0.186981
+vt 0.901052 0.229656
+vt 0.912420 0.234876
+vt 0.913966 0.397678
+vt 0.914855 0.352360
+vt 0.926237 0.347093
+vt 0.925313 0.394172
+vt 0.913493 0.453853
+vt 0.924822 0.452531
+vt 0.779282 0.347093
+vt 0.825893 0.355312
+vt 0.866882 0.378977
+vt 0.897305 0.415233
+vt 0.913493 0.459709
+vt 0.913493 0.507039
+vt 0.897305 0.551514
+vt 0.866883 0.587771
+vt 0.825894 0.611436
+vt 0.779282 0.619655
+vt 0.732672 0.611436
+vt 0.691683 0.587772
+vt 0.661260 0.551514
+vt 0.645072 0.507039
+vt 0.645072 0.459709
+vt 0.661259 0.415234
+vt 0.691683 0.378976
+vt 0.732671 0.355312
+vn -0.311700 -0.697500 0.645200
+vn -0.354900 -0.578400 0.734500
+vn -0.584700 -0.578400 0.568800
+vn -0.513600 -0.697500 0.499600
+vn -0.743900 -0.578400 0.334500
+vn -0.653500 -0.697500 0.293900
+vn -0.813500 -0.578400 0.059900
+vn -0.714600 -0.697500 0.052600
+vn -0.784900 -0.578400 -0.221900
+vn -0.689500 -0.697500 -0.195000
+vn -0.661700 -0.578400 -0.477000
+vn -0.581300 -0.697500 -0.419000
+vn -0.458600 -0.578400 -0.674600
+vn -0.402900 -0.697500 -0.592600
+vn -0.200200 -0.578400 -0.790700
+vn -0.175900 -0.697500 -0.694600
+vn 0.082200 -0.578400 -0.811500
+vn 0.072300 -0.697500 -0.712900
+vn 0.354900 -0.578400 -0.734500
+vn 0.311700 -0.697500 -0.645200
+vn 0.584700 -0.578400 -0.568800
+vn 0.513600 -0.697500 -0.499600
+vn 0.744000 -0.578400 -0.334500
+vn 0.653500 -0.697500 -0.293900
+vn 0.813500 -0.578400 -0.059900
+vn 0.714600 -0.697500 -0.052600
+vn 0.784900 -0.578400 0.221900
+vn 0.689500 -0.697500 0.195000
+vn 0.661700 -0.578400 0.477000
+vn 0.581300 -0.697500 0.419000
+vn 0.458600 -0.578400 0.674600
+vn 0.402900 -0.697500 0.592600
+vn 0.200200 -0.578400 0.790700
+vn 0.175900 -0.697500 0.694600
+vn -0.082200 -0.578400 0.811500
+vn -0.072300 -0.697500 0.712900
+vn 0.034800 -0.938500 -0.343400
+vn 0.150200 -0.938500 -0.310800
+vn -0.084700 -0.938500 -0.334600
+vn -0.194000 -0.938500 -0.285400
+vn -0.280000 -0.938500 -0.201800
+vn -0.332100 -0.938500 -0.093900
+vn -0.344200 -0.938500 0.025300
+vn -0.314800 -0.938500 0.141500
+vn -0.247400 -0.938500 0.240700
+vn -0.150200 -0.938500 0.310800
+vn -0.034800 -0.938500 0.343400
+vn 0.084700 -0.938500 0.334600
+vn 0.194000 -0.938500 0.285400
+vn 0.280000 -0.938500 0.201800
+vn 0.332100 -0.938500 0.093900
+vn 0.344200 -0.938500 -0.025300
+vn 0.314800 -0.938500 -0.141500
+vn 0.247400 -0.938500 -0.240700
+vn 0.375100 -0.506500 -0.776400
+vn 0.618000 -0.506500 -0.601200
+vn 0.786400 -0.506500 -0.353600
+vn 0.859900 -0.506500 -0.063300
+vn 0.829700 -0.506500 0.234600
+vn 0.699400 -0.506500 0.504200
+vn 0.484800 -0.506500 0.713000
+vn 0.211700 -0.506500 0.835800
+vn -0.087000 -0.506500 0.857800
+vn -0.375100 -0.506500 0.776400
+vn -0.618000 -0.506500 0.601200
+vn -0.786400 -0.506500 0.353600
+vn -0.859900 -0.506500 0.063300
+vn -0.829700 -0.506500 -0.234600
+vn -0.699400 -0.506500 -0.504200
+vn -0.484800 -0.506500 -0.713000
+vn -0.211700 -0.506500 -0.835800
+vn 0.087000 -0.506500 -0.857800
+g poubelle_Poubelle_Cylinder.000_poubelle_Poubelle_Cylinder.000_Poubelle.001
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 4/4/4 3/3/3 5/5/5 6/6/6
+f 6/7/6 5/8/5 7/9/7 8/10/8
+f 8/10/8 7/9/7 9/11/9 10/12/10
+f 10/12/10 9/11/9 11/13/11 12/14/12
+f 12/14/12 11/13/11 13/15/13 14/16/14
+f 14/17/14 13/18/13 15/19/15 16/20/16
+f 16/20/16 15/19/15 17/21/17 18/22/18
+f 18/22/18 17/21/17 19/23/19 20/24/20
+f 20/24/20 19/23/19 21/25/21 22/26/22
+f 22/26/22 21/25/21 23/27/23 24/28/24
+f 24/29/24 23/30/23 25/31/25 26/32/26
+f 26/32/26 25/31/25 27/33/27 28/34/28
+f 28/34/28 27/33/27 29/35/29 30/36/30
+f 30/36/30 29/35/29 31/37/31 32/38/32
+f 32/39/32 31/40/31 33/41/33 34/42/34
+f 34/42/34 33/41/33 35/43/35 36/44/36
+f 2/2/2 1/1/1 36/44/36 35/43/35
+f 2/45/2 35/46/35 37/47/37 38/48/38
+f 35/46/35 33/49/33 39/50/39 37/47/37
+f 33/49/33 31/51/31 40/52/40 39/50/39
+f 31/51/31 29/53/29 41/54/41 40/52/40
+f 29/53/29 27/55/27 42/56/42 41/54/41
+f 27/55/27 25/57/25 43/58/43 42/56/42
+f 25/57/25 23/59/23 44/60/44 43/58/43
+f 23/59/23 21/61/21 45/62/45 44/60/44
+f 21/61/21 19/63/19 46/64/46 45/62/45
+f 19/63/19 17/65/17 47/66/47 46/64/46
+f 17/65/17 15/67/15 48/68/48 47/66/47
+f 15/67/15 13/69/13 49/70/49 48/68/48
+f 13/69/13 11/71/11 50/72/50 49/70/49
+f 11/71/11 9/73/9 51/74/51 50/72/50
+f 9/73/9 7/75/7 52/76/52 51/74/51
+f 7/75/7 5/77/5 53/78/53 52/76/52
+f 5/77/5 3/79/3 54/80/54 53/78/53
+f 3/79/3 2/45/2 38/48/38 54/80/54
+f 54/81/54 38/82/38 55/83/55 56/84/56
+f 53/85/53 54/81/54 56/84/56 57/86/57
+f 52/87/52 53/88/53 57/89/57 58/90/58
+f 51/91/51 52/87/52 58/90/58 59/92/59
+f 50/93/50 51/91/51 59/92/59 60/94/60
+f 49/95/49 50/93/50 60/94/60 61/96/61
+f 48/97/48 49/98/49 61/99/61 62/100/62
+f 47/101/47 48/97/48 62/100/62 63/102/63
+f 46/103/46 47/101/47 63/102/63 64/104/64
+f 45/105/45 46/103/46 64/104/64 65/106/65
+f 44/107/44 45/105/45 65/106/65 66/108/66
+f 43/109/43 44/110/44 66/111/66 67/112/67
+f 42/113/42 43/109/43 67/112/67 68/114/68
+f 41/115/41 42/113/42 68/114/68 69/116/69
+f 40/117/40 41/115/41 69/116/69 70/118/70
+f 39/119/39 40/120/40 70/121/70 71/122/71
+f 37/123/37 39/119/39 71/122/71 72/124/72
+f 38/82/38 37/123/37 72/124/72 55/83/55
+f 20/125/20 22/126/22 24/127/24 26/128/26 28/129/28 30/130/30 32/131/32 34/132/34 36/133/36 1/134/1 4/135/4 6/136/6 8/137/8 10/138/10 12/139/12 14/140/14 16/141/16 18/142/18
diff --git a/homedecor_modpack/homedecor/models/homedecor_trophy.obj b/homedecor_modpack/homedecor/models/homedecor_trophy.obj
new file mode 100644
index 0000000..80ea19c
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_trophy.obj
@@ -0,0 +1,953 @@
+# Blender v2.73 (sub 0) OBJ File: 'trophy.blend'
+# www.blender.org
+o Cylinder
+v 0.255410 -0.088500 0.025115
+v 0.230295 -0.074000 0.025115
+v 0.217738 -0.066750 -0.000000
+v 0.230295 -0.074000 -0.025115
+v 0.255410 -0.088500 -0.025115
+v 0.267967 -0.095750 -0.000000
+v 0.270750 -0.031250 0.025115
+v 0.241750 -0.031250 0.025115
+v 0.227250 -0.031250 -0.000000
+v 0.241750 -0.031250 -0.025115
+v 0.270750 -0.031250 -0.025115
+v 0.285250 -0.031250 -0.000000
+v 0.255410 0.026000 0.025115
+v 0.230295 0.011500 0.025115
+v 0.217738 0.004250 -0.000000
+v 0.230295 0.011500 -0.025115
+v 0.255410 0.026000 -0.025115
+v 0.267967 0.033250 -0.000000
+v -0.156249 0.097750 0.000000
+v -0.156249 0.083250 0.025115
+v -0.156249 0.054250 0.025115
+v -0.156249 0.039750 0.000000
+v -0.156249 0.054250 -0.025115
+v -0.156249 0.083250 -0.025115
+v -0.220749 0.080467 0.000000
+v -0.213499 0.067910 0.025115
+v -0.198999 0.042795 0.025115
+v -0.191749 0.030238 0.000000
+v -0.198999 0.042795 -0.025115
+v -0.213499 0.067910 -0.025115
+v -0.267966 0.033250 0.000000
+v -0.255409 0.026000 0.025115
+v -0.230294 0.011500 0.025115
+v -0.217737 0.004250 0.000000
+v -0.230294 0.011500 -0.025115
+v -0.255409 0.026000 -0.025115
+v -0.285249 -0.031250 -0.000000
+v -0.270749 -0.031250 0.025115
+v -0.241749 -0.031250 0.025115
+v -0.227249 -0.031250 -0.000000
+v -0.241749 -0.031250 -0.025115
+v -0.270749 -0.031250 -0.025115
+v -0.267966 -0.095750 -0.000000
+v -0.255409 -0.088500 0.025115
+v -0.230294 -0.074000 0.025115
+v -0.217737 -0.066750 -0.000000
+v -0.230294 -0.074000 -0.025115
+v -0.255409 -0.088500 -0.025115
+v -0.220749 -0.142967 -0.000000
+v -0.213499 -0.130410 0.025115
+v -0.198999 -0.105295 0.025115
+v -0.191749 -0.092738 -0.000000
+v -0.198999 -0.105295 -0.025115
+v -0.213499 -0.130410 -0.025115
+v -0.156249 -0.160250 -0.000000
+v -0.156249 -0.145750 0.025115
+v -0.156249 -0.116750 0.025115
+v -0.156249 -0.102250 -0.000000
+v -0.156249 -0.116750 -0.025115
+v -0.156249 -0.145750 -0.025115
+v 0.213500 0.067910 0.025115
+v 0.199000 0.042795 0.025115
+v 0.191750 0.030238 -0.000000
+v 0.199000 0.042795 -0.025115
+v 0.213500 0.067910 -0.025115
+v 0.220750 0.080467 -0.000000
+v 0.156250 0.083250 0.025115
+v 0.156250 0.054250 0.025115
+v 0.156250 0.039750 -0.000000
+v 0.156250 0.054250 -0.025115
+v 0.156250 0.083250 -0.025115
+v 0.156250 0.097750 -0.000000
+v 0.031080 -0.500000 -0.156249
+v 0.031080 0.125000 -0.156249
+v 0.088508 0.125000 -0.132461
+v 0.132461 0.125000 -0.088508
+v 0.156249 0.125000 -0.031080
+v 0.156249 0.125000 0.031080
+v 0.132461 0.125000 0.088508
+v 0.088508 -0.187500 0.132461
+v 0.088508 0.125000 0.132461
+v 0.031080 -0.187500 0.156249
+v 0.031080 0.125000 0.156249
+v -0.031080 -0.187500 0.156249
+v -0.031080 0.125000 0.156249
+v -0.088508 -0.187500 0.132461
+v -0.088508 0.125000 0.132461
+v -0.132461 -0.187500 0.088508
+v -0.132461 0.125000 0.088508
+v -0.156249 -0.187500 0.031080
+v -0.156249 0.125000 0.031080
+v -0.156249 -0.187500 -0.031080
+v -0.156249 0.125000 -0.031080
+v -0.132461 -0.187500 -0.088508
+v -0.132461 0.125000 -0.088508
+v -0.088508 0.125000 -0.132461
+v -0.031080 0.125000 -0.156249
+v 0.088508 -0.500000 -0.132461
+v 0.132461 -0.500000 -0.088508
+v 0.156249 -0.500000 -0.031080
+v 0.156249 -0.500000 0.031080
+v 0.132461 -0.500000 0.088508
+v 0.088508 -0.500000 0.132461
+v 0.088508 -0.437500 0.132461
+v 0.031080 -0.500000 0.156249
+v 0.031080 -0.437500 0.156249
+v -0.031080 -0.500000 0.156249
+v -0.031080 -0.437500 0.156249
+v -0.088508 -0.500000 0.132461
+v -0.088508 -0.437500 0.132461
+v -0.132461 -0.500000 0.088508
+v -0.132461 -0.437500 0.088508
+v -0.156249 -0.500000 0.031080
+v -0.156249 -0.437500 0.031080
+v -0.156249 -0.500000 -0.031080
+v -0.156249 -0.437500 -0.031080
+v -0.132461 -0.500000 -0.088508
+v -0.132461 -0.437500 -0.088508
+v -0.088508 -0.500000 -0.132461
+v -0.031080 -0.500000 -0.156249
+v 0.012432 -0.375000 -0.062498
+v 0.031080 -0.437500 -0.156248
+v 0.088507 -0.437500 -0.132461
+v 0.035403 -0.375000 -0.052984
+v 0.132461 -0.437500 -0.088507
+v 0.052984 -0.375000 -0.035403
+v 0.156248 -0.437500 -0.031080
+v 0.062498 -0.375000 -0.012432
+v 0.156248 -0.437500 0.031080
+v 0.062498 -0.375000 0.012432
+v 0.132461 -0.437500 0.088508
+v 0.052984 -0.375000 0.035403
+v -0.088507 -0.437500 -0.132461
+v -0.035402 -0.375000 -0.052984
+v -0.031080 -0.437500 -0.156248
+v -0.012432 -0.375000 -0.062498
+v 0.031080 -0.187500 -0.156248
+v 0.012432 -0.250000 -0.062498
+v 0.035403 -0.250000 -0.052984
+v 0.088507 -0.187500 -0.132461
+v 0.052984 -0.250000 -0.035403
+v 0.132461 -0.187500 -0.088507
+v 0.062498 -0.250000 -0.012432
+v 0.156248 -0.187500 -0.031080
+v 0.062498 -0.250000 0.012432
+v 0.156248 -0.187500 0.031080
+v 0.052984 -0.250000 0.035403
+v 0.132461 -0.187500 0.088508
+v -0.035402 -0.250000 -0.052984
+v -0.088507 -0.187500 -0.132461
+v -0.012432 -0.250000 -0.062498
+v -0.031080 -0.187500 -0.156248
+v 0.035403 -0.375000 0.052985
+v 0.035403 -0.250000 0.052985
+v 0.012432 -0.375000 0.062499
+v 0.012432 -0.250000 0.062499
+v -0.012432 -0.375000 0.062499
+v -0.012432 -0.250000 0.062499
+v -0.035403 -0.375000 0.052985
+v -0.035403 -0.250000 0.052985
+v -0.052984 -0.375000 0.035403
+v -0.052984 -0.250000 0.035403
+v -0.062499 -0.375000 0.012432
+v -0.062499 -0.250000 0.012432
+v -0.062499 -0.375000 -0.012432
+v -0.062499 -0.250000 -0.012432
+v -0.052984 -0.375000 -0.035403
+v -0.052984 -0.250000 -0.035403
+v 0.024864 0.125000 -0.124999
+v 0.070806 0.125000 -0.105969
+v 0.105969 0.125000 -0.070806
+v 0.124999 0.125000 -0.024864
+v 0.124999 0.125000 0.024864
+v 0.105969 0.125000 0.070806
+v 0.070806 0.125000 0.105969
+v 0.024864 0.125000 0.124999
+v -0.024864 0.125000 0.124999
+v -0.070806 0.125000 0.105969
+v -0.105969 0.125000 0.070806
+v -0.124999 0.125000 0.024864
+v -0.124999 0.125000 -0.024864
+v -0.105969 0.125000 -0.070806
+v -0.070806 0.125000 -0.105969
+v -0.024864 0.125000 -0.124999
+v 0.024864 -0.156250 -0.124999
+v 0.070806 -0.156250 -0.105969
+v 0.105969 -0.156250 -0.070806
+v 0.124999 -0.156250 -0.024864
+v 0.124999 -0.156250 0.024864
+v 0.105969 -0.156250 0.070806
+v 0.070806 -0.156250 0.105969
+v 0.024864 -0.156250 0.124999
+v -0.024864 -0.156250 0.124999
+v -0.070806 -0.156250 0.105969
+v -0.105969 -0.156250 0.070806
+v -0.124999 -0.156250 0.024864
+v -0.124999 -0.156250 -0.024864
+v -0.105969 -0.156250 -0.070806
+v -0.070806 -0.156250 -0.105969
+v -0.024864 -0.156250 -0.124999
+v 0.220750 -0.142967 -0.000000
+v 0.213500 -0.130410 -0.025115
+v 0.199000 -0.105295 -0.025115
+v 0.191750 -0.092738 -0.000000
+v 0.199000 -0.105295 0.025115
+v 0.213500 -0.130410 0.025115
+v 0.156250 -0.160250 -0.000000
+v 0.156250 -0.145750 -0.025115
+v 0.156250 -0.116750 -0.025115
+v 0.156250 -0.102250 -0.000000
+v 0.156250 -0.116750 0.025115
+v 0.156250 -0.145750 0.025115
+v -0.000000 -0.500000 -0.000000
+v -0.000000 -0.199219 -0.000000
+v 0.070806 -0.437500 0.105969
+v 0.024864 -0.437500 0.124999
+v -0.024864 -0.437500 0.124999
+v -0.070806 -0.437500 0.105969
+v -0.105969 -0.437500 0.070806
+v -0.124999 -0.437500 0.024864
+v -0.124999 -0.437500 -0.024864
+v -0.105969 -0.437500 -0.070806
+v 0.012432 -0.375000 -0.062498
+v 0.024864 -0.437500 -0.124999
+v 0.070806 -0.437500 -0.105969
+v 0.035403 -0.375000 -0.052984
+v 0.105969 -0.437500 -0.070806
+v 0.052984 -0.375000 -0.035403
+v 0.124999 -0.437500 -0.024864
+v 0.062498 -0.375000 -0.012432
+v 0.124999 -0.437500 0.024864
+v 0.062498 -0.375000 0.012432
+v 0.105969 -0.437500 0.070806
+v 0.052984 -0.375000 0.035403
+v -0.070806 -0.437500 -0.105969
+v -0.035403 -0.375000 -0.052984
+v -0.024864 -0.437500 -0.124999
+v -0.012432 -0.375000 -0.062498
+v 0.035403 -0.375000 0.052985
+v 0.012432 -0.375000 0.062499
+v -0.012432 -0.375000 0.062499
+v -0.035403 -0.375000 0.052985
+v -0.052984 -0.375000 0.035403
+v -0.062499 -0.375000 0.012432
+v -0.062499 -0.375000 -0.012432
+v -0.052984 -0.375000 -0.035403
+v 0.031080 -0.437500 -0.156249
+v 0.088508 -0.437500 -0.132461
+v 0.132461 -0.437500 -0.088508
+v 0.156249 -0.437500 -0.031080
+v 0.156249 -0.437500 0.031080
+v 0.132461 -0.437500 0.088508
+v 0.088508 -0.437500 0.132461
+v 0.031080 -0.437500 0.156249
+v -0.031080 -0.437500 0.156249
+v -0.088508 -0.437500 0.132461
+v -0.132461 -0.437500 0.088508
+v -0.156249 -0.437500 0.031080
+v -0.156249 -0.437500 -0.031080
+v -0.132461 -0.437500 -0.088508
+v -0.088508 -0.437500 -0.132461
+v -0.031080 -0.437500 -0.156249
+v -0.000000 -0.437500 -0.000000
+vt 0.750000 0.125000
+vt 0.750000 0.187500
+vt 0.687500 0.187500
+vt 0.687500 0.125000
+vt 0.812500 0.125000
+vt 0.812500 0.187500
+vt 0.875000 0.125000
+vt 0.875000 0.187500
+vt 0.937500 0.125000
+vt 0.937500 0.187500
+vt 1.000000 0.125000
+vt 1.000000 0.187500
+vt 0.062500 0.125000
+vt 0.062500 0.187500
+vt 0.000000 0.187500
+vt 0.000000 0.125000
+vt 0.125000 0.125000
+vt 0.125000 0.187500
+vt 0.625000 0.187500
+vt 0.625000 0.125000
+vt 0.187500 0.125000
+vt 0.187500 0.187500
+vt 0.250000 0.125000
+vt 0.250000 0.187500
+vt 0.312500 0.125000
+vt 0.312500 0.187500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.562500 0.187500
+vt 0.562500 0.125000
+vt 0.437500 0.125000
+vt 0.437500 0.187500
+vt 0.500000 0.187500
+vt 0.500000 0.125000
+vt 0.549728 0.250000
+vt 0.641614 0.288061
+vt 0.500000 0.500000
+vt 0.711940 0.358387
+vt 0.750000 0.450272
+vt 0.750000 0.549729
+vt 0.711940 0.641614
+vt 0.641614 0.711940
+vt 0.549728 0.750000
+vt 0.450272 0.750000
+vt 0.358386 0.711940
+vt 0.288060 0.641614
+vt 0.250000 0.549729
+vt 0.250000 0.450272
+vt 0.288060 0.358387
+vt 0.358386 0.288061
+vt 0.450272 0.250000
+vt 0.812500 0.625000
+vt 0.875000 0.625000
+vt 0.875000 0.687500
+vt 0.812500 0.687500
+vt 0.812500 0.562500
+vt 0.875000 0.562500
+vt 0.812500 0.500000
+vt 0.875000 0.500000
+vt 0.812500 0.812500
+vt 0.875000 0.812500
+vt 0.875000 0.875000
+vt 0.812500 0.875000
+vt 0.812500 0.750000
+vt 0.875000 0.750000
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vt 0.750000 0.562500
+vt 0.750000 0.500000
+vt 0.750000 0.812500
+vt 0.750000 0.875000
+vt 0.750000 0.750000
+vt 0.687500 0.625000
+vt 0.687500 0.687500
+vt 0.687500 0.562500
+vt 0.687500 0.500000
+vt 0.687500 0.812500
+vt 0.687500 0.875000
+vt 0.687500 0.750000
+vt 0.125000 0.687500
+vt 0.187500 0.687500
+vt 0.187500 0.750000
+vt 0.125000 0.750000
+vt 0.187500 0.812500
+vt 0.125000 0.812500
+vt 0.187500 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.500000
+vt 0.187500 0.500000
+vt 0.187500 0.562500
+vt 0.125000 0.562500
+vt 0.187500 0.625000
+vt 0.125000 0.625000
+vt 0.250000 0.687500
+vt 0.250000 0.750000
+vt 0.250000 0.812500
+vt 0.250000 0.875000
+vt 0.250000 0.500000
+vt 0.250000 0.562500
+vt 0.250000 0.625000
+vt 0.312500 0.687500
+vt 0.312500 0.750000
+vt 0.312500 0.812500
+vt 0.312500 0.875000
+vt 0.312500 0.500000
+vt 0.312500 0.562500
+vt 0.312500 0.625000
+vt 0.375000 0.687500
+vt 0.375000 0.750000
+vt 0.375000 0.812500
+vt 0.375000 0.875000
+vt 0.375000 0.500000
+vt 0.375000 0.562500
+vt 0.375000 0.625000
+vt 0.437500 0.687500
+vt 0.437500 0.750000
+vt 0.437500 0.812500
+vt 0.437500 0.875000
+vt 0.437500 0.500000
+vt 0.437500 0.562500
+vt 0.437500 0.625000
+vt 0.500000 0.687500
+vt 0.500000 0.750000
+vt 0.500000 0.812500
+vt 0.500000 0.875000
+vt 0.500000 0.562500
+vt 0.500000 0.625000
+vt 0.625000 0.625000
+vt 0.625000 0.687500
+vt 0.625000 0.562500
+vt 0.625000 0.500000
+vt 0.625000 0.812500
+vt 0.625000 0.875000
+vt 0.625000 0.750000
+vt 0.562500 0.625000
+vt 0.562500 0.687500
+vt 0.562500 0.562500
+vt 0.562500 0.500000
+vt 0.562500 0.812500
+vt 0.562500 0.875000
+vt 0.562500 0.750000
+vt 0.125000 0.250000
+vt 0.062500 0.562500
+vt 0.062500 0.250000
+vt 0.000000 0.562500
+vt 0.000000 0.250000
+vt 1.000000 0.250000
+vt 1.000000 0.562500
+vt 0.937500 0.562500
+vt 0.937500 0.250000
+vt 0.875000 0.250000
+vt 0.812500 0.250000
+vt 0.582643 0.623684
+vt 0.529020 0.645895
+vt 0.750000 0.250000
+vt 0.687500 0.250000
+vt 0.572947 0.485490
+vt 0.682369 0.463725
+vt 0.682369 0.536275
+vt 0.572947 0.514510
+vt 0.654605 0.603303
+vt 0.561841 0.541321
+vt 0.561841 0.458679
+vt 0.654605 0.396697
+vt 0.458679 0.438159
+vt 0.396697 0.345395
+vt 0.463725 0.317631
+vt 0.485490 0.427054
+vt 0.541321 0.438159
+vt 0.603304 0.345396
+vt 0.536276 0.317631
+vt 0.514510 0.427054
+vt 0.125000 0.375000
+vt 0.062500 0.375000
+vt 0.000000 0.375000
+vt 1.000000 0.375000
+vt 0.937500 0.375000
+vt 0.875000 0.375000
+vt 0.812500 0.375000
+vt 0.750000 0.375000
+vt 0.687500 0.375000
+vt 0.500000 0.250000
+vt 0.437500 0.250000
+vt 0.375000 0.250000
+vt 0.312500 0.250000
+vt 0.250000 0.250000
+vt 0.187500 0.250000
+vt 0.625000 0.250000
+vt 0.562500 0.250000
+vt 0.603304 0.654605
+vt 0.541322 0.561842
+vt 0.536276 0.682369
+vt 0.514510 0.572948
+vt 0.463725 0.682369
+vt 0.485490 0.572948
+vt 0.396697 0.654605
+vt 0.458679 0.561842
+vt 0.345395 0.603304
+vt 0.438158 0.541322
+vt 0.317631 0.536275
+vt 0.427053 0.514510
+vt 0.317631 0.463724
+vt 0.427053 0.485490
+vt 0.345395 0.396696
+vt 0.438158 0.458678
+vt 0.312500 0.375000
+vt 0.250000 0.375000
+vt 0.187500 0.375000
+vt 0.625000 0.375000
+vt 0.375000 0.375000
+vt 0.562500 0.375000
+vt 0.437500 0.375000
+vt 0.500000 0.375000
+vt 0.937500 0.625000
+vt 0.062500 0.625000
+vt 1.000000 0.625000
+vt -0.000000 0.625000
+vt 0.937500 0.875000
+vt 0.062500 0.875000
+vt 1.000000 0.875000
+vt 0.000000 0.875000
+vt 0.470980 0.645895
+vt 0.417357 0.623684
+vt 0.376316 0.582643
+vt 0.354105 0.529020
+vt 0.354105 0.470980
+vt 0.376316 0.417357
+vt 0.417357 0.376316
+vt 0.470980 0.354105
+vt 0.529020 0.354105
+vt 0.582643 0.376316
+vt 0.623684 0.417357
+vt 0.645895 0.470980
+vt 0.645895 0.529020
+vt 0.623684 0.582643
+vt 0.812500 0.062500
+vt 0.750000 0.062500
+vt 0.687500 0.062500
+vt 0.875000 0.062500
+vt 0.125000 0.062500
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 0.625000 0.062500
+vt 0.562500 0.062500
+vt 0.500000 0.062500
+vt 0.437500 0.062500
+vt 0.375000 0.062500
+vt 0.312500 0.062500
+vt 0.250000 0.062500
+vt 0.187500 0.062500
+vn -0.731900 -0.665700 -0.145600
+vn -0.980800 0.000000 -0.195100
+vn -0.831500 0.000000 -0.555600
+vn -0.620400 -0.665700 -0.414600
+vn -0.731900 -0.665700 0.145600
+vn -0.980800 0.000000 0.195100
+vn -0.620400 -0.665700 0.414600
+vn -0.831500 0.000000 0.555600
+vn -0.414600 -0.665700 0.620400
+vn -0.555600 0.000000 0.831500
+vn -0.145600 -0.665700 0.731900
+vn -0.195100 0.000000 0.980800
+vn 0.145600 -0.665700 0.731900
+vn 0.195100 0.000000 0.980800
+vn 0.414600 -0.665700 0.620400
+vn 0.555600 0.000000 0.831500
+vn -0.555600 0.000000 -0.831500
+vn -0.414600 -0.665700 -0.620400
+vn 0.620400 -0.665700 0.414600
+vn 0.831500 0.000000 0.555600
+vn 0.731900 -0.665700 0.145600
+vn 0.980800 0.000000 0.195100
+vn 0.731900 -0.665700 -0.145600
+vn 0.980800 0.000000 -0.195100
+vn 0.620400 -0.665700 -0.414600
+vn 0.831500 0.000000 -0.555600
+vn -0.195100 0.000000 -0.980800
+vn -0.145600 -0.665700 -0.731900
+vn 0.414600 -0.665700 -0.620400
+vn 0.555600 0.000000 -0.831500
+vn 0.195100 0.000000 -0.980800
+vn 0.145600 -0.665700 -0.731900
+vn 0.000000 -1.000000 0.000000
+vn 0.278600 -0.482700 0.830300
+vn 0.147700 -0.551200 0.821200
+vn 0.258800 -0.965900 -0.000000
+vn 0.500000 -0.866000 0.000000
+vn -0.216200 0.374500 0.901600
+vn -0.115100 0.429600 0.895700
+vn -0.500000 0.866000 0.000000
+vn -0.258800 0.965900 0.000000
+vn -0.216200 0.374500 -0.901600
+vn -0.115100 0.429600 -0.895700
+vn 0.278600 -0.482700 -0.830300
+vn 0.147700 -0.551200 -0.821200
+vn 0.482700 -0.278600 0.830300
+vn 0.866000 -0.500000 0.000000
+vn -0.374500 0.216200 0.901600
+vn -0.866000 0.500000 0.000000
+vn -0.374500 0.216200 -0.901600
+vn 0.482700 -0.278600 -0.830300
+vn 0.557300 0.000000 0.830300
+vn 1.000000 0.000000 0.000000
+vn -0.432400 0.000000 0.901600
+vn -1.000000 0.000000 0.000000
+vn -0.432400 0.000000 -0.901600
+vn 0.557300 0.000000 -0.830300
+vn -0.278600 0.482700 0.830300
+vn -0.147700 0.551200 0.821200
+vn 0.216200 -0.374500 0.901600
+vn 0.115100 -0.429600 0.895700
+vn 0.216200 -0.374500 -0.901600
+vn 0.115100 -0.429600 -0.895700
+vn -0.278600 0.482700 -0.830300
+vn -0.147700 0.551200 -0.821200
+vn -0.482700 0.278600 0.830300
+vn 0.374500 -0.216200 0.901600
+vn 0.374500 -0.216200 -0.901600
+vn -0.482700 0.278600 -0.830300
+vn -0.557300 0.000000 0.830300
+vn 0.432400 0.000000 0.901600
+vn 0.432400 0.000000 -0.901600
+vn -0.557300 0.000000 -0.830300
+vn -0.866000 -0.500000 0.000000
+vn -0.482700 -0.278600 0.830300
+vn 0.374500 0.216200 0.901600
+vn 0.866000 0.500000 0.000000
+vn 0.374500 0.216200 -0.901600
+vn -0.482700 -0.278600 -0.830300
+vn -0.500000 -0.866000 0.000000
+vn -0.278600 -0.482700 0.830300
+vn 0.216200 0.374500 0.901600
+vn 0.500000 0.866000 0.000000
+vn 0.216200 0.374500 -0.901600
+vn -0.278600 -0.482700 -0.830300
+vn -0.258800 -0.965900 -0.000000
+vn -0.147700 -0.551200 0.821200
+vn 0.115100 0.429600 0.895700
+vn 0.258800 0.965900 0.000000
+vn 0.115100 0.429600 -0.895700
+vn -0.147700 -0.551200 -0.821200
+vn 0.482700 0.278600 0.830300
+vn -0.374500 -0.216200 0.901600
+vn -0.374500 -0.216200 -0.901600
+vn 0.482700 0.278600 -0.830300
+vn 0.278600 0.482700 0.830300
+vn -0.216200 -0.374500 0.901600
+vn -0.216200 -0.374500 -0.901600
+vn 0.278600 0.482700 -0.830300
+vn 0.147700 0.551200 0.821200
+vn -0.115100 -0.429600 0.895700
+vn -0.115100 -0.429600 -0.895700
+vn 0.147700 0.551200 -0.821200
+vn 0.495400 -0.452600 0.741400
+vn 0.414600 0.665700 0.620400
+vn 0.145600 0.665700 0.731900
+vn 0.174000 -0.452600 0.874500
+vn -0.145600 0.665700 0.731900
+vn -0.174000 -0.452600 0.874500
+vn -0.414600 0.665700 0.620400
+vn -0.495400 -0.452600 0.741400
+vn -0.620400 0.665700 0.414600
+vn -0.741400 -0.452600 0.495400
+vn -0.731900 0.665700 0.145600
+vn -0.874500 -0.452600 0.174000
+vn -0.463500 0.551300 0.693700
+vn -0.162800 0.551300 0.818300
+vn 0.000000 1.000000 0.000000
+vn -0.731900 0.665700 -0.145600
+vn -0.874500 -0.452600 -0.174000
+vn -0.620400 0.665700 -0.414600
+vn -0.741400 -0.452600 -0.495400
+vn 0.848000 -0.502300 -0.168700
+vn 0.874500 -0.452600 -0.174000
+vn 0.874500 -0.452600 0.174000
+vn 0.848000 -0.502300 0.168700
+vn 0.741400 -0.452600 0.495400
+vn 0.718900 -0.502300 0.480400
+vn 0.718900 -0.502300 -0.480400
+vn 0.741400 -0.452600 -0.495400
+vn -0.480400 -0.502300 -0.718900
+vn -0.495400 -0.452600 -0.741400
+vn -0.174000 -0.452600 -0.874500
+vn -0.168700 -0.502300 -0.848000
+vn 0.480400 -0.502300 -0.718900
+vn 0.495400 -0.452600 -0.741400
+vn 0.174000 -0.452600 -0.874500
+vn 0.168700 -0.502300 -0.848000
+vn 0.480400 -0.502400 0.718900
+vn 0.168700 -0.502300 0.848000
+vn -0.168700 -0.502300 0.848000
+vn -0.480400 -0.502300 0.718900
+vn -0.718900 -0.502300 0.480400
+vn -0.848000 -0.502300 0.168700
+vn -0.848000 -0.502300 -0.168700
+vn -0.718900 -0.502400 -0.480400
+vn 0.145600 0.665700 -0.731900
+vn 0.414600 0.665700 -0.620400
+vn 0.620400 0.665700 -0.414600
+vn 0.731900 0.665700 -0.145600
+vn 0.731900 0.665700 0.145600
+vn 0.620400 0.665700 0.414600
+vn -0.414600 0.665700 -0.620400
+vn -0.145600 0.665700 -0.731900
+vn 0.128200 0.753700 0.644500
+vn -0.128200 0.753700 0.644500
+vn -0.365100 0.753700 0.546400
+vn 0.546400 0.753700 0.365100
+vn 0.365100 0.753700 0.546400
+vn 0.644500 0.753700 0.128200
+vn -0.644500 0.753700 0.128200
+vn -0.644500 0.753700 -0.128200
+vn 0.365100 0.753700 -0.546400
+vn 0.546400 0.753700 -0.365100
+vn -0.546400 0.753700 0.365100
+vn -0.365100 0.753700 -0.546400
+vn -0.128200 0.753700 -0.644500
+vn 0.644500 0.753700 -0.128200
+vn 0.128200 0.753700 -0.644500
+vn -0.546400 0.753700 -0.365100
+vn -0.463500 0.551300 -0.693700
+vn -0.162800 0.551300 -0.818300
+vn -0.818300 0.551300 -0.162800
+vn -0.693700 0.551300 -0.463500
+vn 0.162800 0.551300 0.818300
+vn -0.693700 0.551300 0.463500
+vn -0.818300 0.551300 0.162800
+vn 0.693700 0.551300 0.463500
+vn 0.463500 0.551300 0.693700
+vn 0.818300 0.551300 -0.162800
+vn 0.818300 0.551300 0.162800
+vn 0.463500 0.551300 -0.693700
+vn 0.693700 0.551300 -0.463500
+vn 0.162800 0.551300 -0.818300
+vn 0.686800 0.713900 -0.136600
+vn 0.686800 0.713900 0.136600
+vn 0.582200 0.713900 0.389000
+vn 0.582200 0.713900 -0.389000
+vn -0.389000 0.713900 -0.582200
+vn -0.136600 0.713900 -0.686800
+vn 0.389000 0.713900 -0.582200
+vn 0.136600 0.713900 -0.686800
+vn 0.389000 0.713900 0.582200
+vn 0.136600 0.713900 0.686800
+vn -0.136600 0.713900 0.686800
+vn -0.389000 0.713900 0.582200
+vn -0.582200 0.713900 0.389000
+vn -0.686800 0.713900 0.136600
+vn -0.686800 0.713900 -0.136600
+vn -0.582200 0.713900 -0.389000
+g Cylinder_Cylinder_base
+s 1
+f 115/1/1 116/2/2 118/3/3 117/4/4
+f 113/5/5 114/6/6 116/2/2 115/1/1
+f 111/7/7 112/8/8 114/6/6 113/5/5
+f 109/9/9 110/10/10 112/8/8 111/7/7
+f 107/11/11 108/12/12 110/10/10 109/9/9
+f 105/13/13 106/14/14 108/15/12 107/16/11
+f 103/17/15 104/18/16 106/14/14 105/13/13
+f 117/4/4 118/3/3 133/19/17 119/20/18
+f 102/21/19 131/22/20 104/18/16 103/17/15
+f 101/23/21 129/24/22 131/22/20 102/21/19
+f 100/25/23 127/26/24 129/24/22 101/23/21
+f 99/27/25 125/28/26 127/26/24 100/25/23
+f 119/20/18 133/19/17 135/29/27 120/30/28
+f 98/31/29 123/32/30 125/28/26 99/27/25
+f 120/30/28 135/29/27 122/33/31 73/34/32
+f 73/34/32 122/33/31 123/32/30 98/31/29
+f 73/35/32 98/36/29 213/37/33
+f 98/36/29 99/38/25 213/37/33
+f 99/38/25 100/39/23 213/37/33
+f 100/39/23 101/40/21 213/37/33
+f 101/40/21 102/41/19 213/37/33
+f 102/41/19 103/42/15 213/37/33
+f 103/42/15 105/43/13 213/37/33
+f 105/43/13 107/44/11 213/37/33
+f 107/44/11 109/45/9 213/37/33
+f 109/45/9 111/46/7 213/37/33
+f 111/46/7 113/47/5 213/37/33
+f 113/47/5 115/48/1 213/37/33
+f 115/48/1 117/49/4 213/37/33
+f 117/49/4 119/50/18 213/37/33
+f 119/50/18 120/51/28 213/37/33
+f 120/51/28 73/35/32 213/37/33
+f 247/35/33 248/36/33 263/37/33
+f 248/36/33 249/38/33 263/37/33
+f 249/38/33 250/39/33 263/37/33
+f 250/39/33 251/40/33 263/37/33
+f 251/40/33 252/41/33 263/37/33
+f 252/41/33 253/42/33 263/37/33
+f 253/42/33 254/43/33 263/37/33
+f 254/43/33 255/44/33 263/37/33
+f 255/44/33 256/45/33 263/37/33
+f 256/45/33 257/46/33 263/37/33
+f 257/46/33 258/47/33 263/37/33
+f 258/47/33 259/48/33 263/37/33
+f 259/48/33 260/49/33 263/37/33
+f 260/49/33 261/50/33 263/37/33
+f 261/50/33 262/51/33 263/37/33
+f 262/51/33 247/35/33 263/37/33
+g Cylinder_Cylinder_cup
+f 206/52/34 212/53/35 207/54/36 201/55/37
+f 205/56/38 211/57/39 212/53/35 206/52/34
+f 204/58/40 210/59/41 211/57/39 205/56/38
+f 203/60/42 209/61/43 210/62/41 204/63/40
+f 202/64/44 208/65/45 209/61/43 203/60/42
+f 201/55/37 207/54/36 208/65/45 202/64/44
+f 1/66/46 206/52/34 201/55/37 6/67/47
+f 2/68/48 205/56/38 206/52/34 1/66/46
+f 3/69/49 204/58/40 205/56/38 2/68/48
+f 4/70/50 203/60/42 204/63/40 3/71/49
+f 5/72/51 202/64/44 203/60/42 4/70/50
+f 6/67/47 201/55/37 202/64/44 5/72/51
+f 7/73/52 1/66/46 6/67/47 12/74/53
+f 8/75/54 2/68/48 1/66/46 7/73/52
+f 9/76/55 3/69/49 2/68/48 8/75/54
+f 10/77/56 4/70/50 3/71/49 9/78/55
+f 11/79/57 5/72/51 4/70/50 10/77/56
+f 12/74/53 6/67/47 5/72/51 11/79/57
+f 19/80/41 25/81/40 26/82/58 20/83/59
+f 20/83/59 26/82/58 27/84/60 21/85/61
+f 21/85/61 27/84/60 28/86/37 22/87/36
+f 22/88/36 28/89/37 29/90/62 23/91/63
+f 23/91/63 29/90/62 30/92/64 24/93/65
+f 24/93/65 30/92/64 25/81/40 19/80/41
+f 25/81/40 31/94/49 32/95/66 26/82/58
+f 26/82/58 32/95/66 33/96/67 27/84/60
+f 27/84/60 33/96/67 34/97/47 28/86/37
+f 28/89/37 34/98/47 35/99/68 29/90/62
+f 29/90/62 35/99/68 36/100/69 30/92/64
+f 30/92/64 36/100/69 31/94/49 25/81/40
+f 31/94/49 37/101/55 38/102/70 32/95/66
+f 32/95/66 38/102/70 39/103/71 33/96/67
+f 33/96/67 39/103/71 40/104/53 34/97/47
+f 34/98/47 40/105/53 41/106/72 35/99/68
+f 35/99/68 41/106/72 42/107/73 36/100/69
+f 36/100/69 42/107/73 37/101/55 31/94/49
+f 37/101/55 43/108/74 44/109/75 38/102/70
+f 38/102/70 44/109/75 45/110/76 39/103/71
+f 39/103/71 45/110/76 46/111/77 40/104/53
+f 40/105/53 46/112/77 47/113/78 41/106/72
+f 41/106/72 47/113/78 48/114/79 42/107/73
+f 42/107/73 48/114/79 43/108/74 37/101/55
+f 43/108/74 49/115/80 50/116/81 44/109/75
+f 44/109/75 50/116/81 51/117/82 45/110/76
+f 45/110/76 51/117/82 52/118/83 46/111/77
+f 46/112/77 52/119/83 53/120/84 47/113/78
+f 47/113/78 53/120/84 54/121/85 48/114/79
+f 48/114/79 54/121/85 49/115/80 43/108/74
+f 49/115/80 55/122/86 56/123/87 50/116/81
+f 50/116/81 56/123/87 57/124/88 51/117/82
+f 51/117/82 57/124/88 58/125/89 52/118/83
+f 52/119/83 58/37/89 59/126/90 53/120/84
+f 53/120/84 59/126/90 60/127/91 54/121/85
+f 54/121/85 60/127/91 55/122/86 49/115/80
+f 13/128/92 7/73/52 12/74/53 18/129/77
+f 14/130/93 8/75/54 7/73/52 13/128/92
+f 15/131/74 9/76/55 8/75/54 14/130/93
+f 16/132/94 10/77/56 9/78/55 15/133/74
+f 17/134/95 11/79/57 10/77/56 16/132/94
+f 18/129/77 12/74/53 11/79/57 17/134/95
+f 61/135/96 13/128/92 18/129/77 66/136/83
+f 62/137/97 14/130/93 13/128/92 61/135/96
+f 63/138/80 15/131/74 14/130/93 62/137/97
+f 64/139/98 16/132/94 15/133/74 63/140/80
+f 65/141/99 17/134/95 16/132/94 64/139/98
+f 66/136/83 18/129/77 17/134/95 65/141/99
+f 67/127/100 61/135/96 66/136/83 72/122/89
+f 68/126/101 62/137/97 61/135/96 67/127/100
+f 69/37/86 63/138/80 62/137/97 68/126/101
+f 70/124/102 64/139/98 63/140/80 69/125/86
+f 71/123/103 65/141/99 64/139/98 70/124/102
+f 72/122/89 66/136/83 65/141/99 71/123/103
+f 80/142/104 81/91/105 83/143/106 82/144/107
+f 82/144/107 83/143/106 85/145/108 84/146/109
+f 84/147/109 85/148/108 87/149/110 86/150/111
+f 86/150/111 87/149/110 89/57/112 88/151/113
+f 88/151/113 89/57/112 91/56/114 90/152/115
+f 186/153/116 185/154/117 214/37/118
+f 90/152/115 91/56/114 93/68/119 92/155/120
+f 92/155/120 93/68/119 95/75/121 94/156/122
+f 143/157/123 144/158/124 146/159/125 145/160/126
+f 145/160/126 146/159/125 148/161/127 147/162/128
+f 141/163/129 142/164/130 144/158/124 143/157/123
+f 149/165/131 150/166/132 152/167/133 151/168/134
+f 139/169/135 140/170/136 142/164/130 141/163/129
+f 151/168/134 152/167/133 137/171/137 138/172/138
+f 138/172/138 137/171/137 140/170/136 139/169/135
+f 153/18/16 154/173/139 156/174/140 155/14/14
+f 155/14/14 156/174/140 158/175/141 157/15/12
+f 157/12/12 158/176/141 160/177/142 159/10/10
+f 159/10/10 160/177/142 162/178/143 161/8/8
+f 161/8/8 162/178/143 164/179/144 163/6/6
+f 163/6/6 164/179/144 166/180/145 165/2/2
+f 165/2/2 166/180/145 168/181/146 167/3/3
+f 137/182/137 74/126/147 75/120/148 140/183/136
+f 140/183/136 75/120/148 76/113/149 142/184/130
+f 142/184/130 76/113/149 77/106/150 144/185/124
+f 144/185/124 77/106/150 78/99/151 146/186/125
+f 146/186/125 78/99/151 79/90/152 148/187/127
+f 148/187/127 79/90/152 81/91/105 80/142/104
+f 94/156/122 95/75/121 96/130/153 150/188/132
+f 152/189/133 97/137/154 74/126/147 137/182/137
+f 150/188/132 96/130/153 97/137/154 152/189/133
+f 147/162/128 148/161/127 80/190/104 154/191/139
+f 154/191/139 80/190/104 82/192/107 156/193/140
+f 156/193/140 82/192/107 84/194/109 158/195/141
+f 158/195/141 84/194/109 86/196/111 160/197/142
+f 160/197/142 86/196/111 88/198/113 162/199/143
+f 162/199/143 88/198/113 90/200/115 164/201/144
+f 164/201/144 90/200/115 92/202/120 166/203/145
+f 166/203/145 92/202/120 94/204/122 168/205/146
+f 168/205/146 94/204/122 150/166/132 149/165/131
+f 128/26/24 143/206/123 145/207/126 130/24/22
+f 132/22/20 147/208/128 154/173/139 153/18/16
+f 167/3/3 168/181/146 149/209/131 134/19/17
+f 130/24/22 145/207/126 147/208/128 132/22/20
+f 126/28/26 141/210/129 143/206/123 128/26/24
+f 134/19/17 149/209/131 151/211/134 136/29/27
+f 124/32/30 139/212/135 141/210/129 126/28/26
+f 136/29/27 151/211/134 138/213/138 121/33/31
+f 121/33/31 138/213/138 139/212/135 124/32/30
+f 74/126/147 97/137/154 184/135/155 169/127/156
+f 75/120/148 74/126/147 169/127/156 170/121/157
+f 96/130/153 95/75/121 182/73/158 183/128/159
+f 95/75/121 93/68/119 181/66/160 182/73/158
+f 78/99/151 77/106/150 172/107/161 173/100/162
+f 89/57/112 87/149/110 178/214/163 179/53/164
+f 77/106/150 76/113/149 171/114/165 172/107/161
+f 83/143/106 81/91/105 175/93/166 176/215/167
+f 93/68/119 91/56/114 180/52/168 181/66/160
+f 76/113/149 75/120/148 170/121/157 171/114/165
+f 87/149/110 85/148/108 177/216/169 178/214/163
+f 97/137/154 96/130/153 183/128/159 184/135/155
+f 81/91/105 79/90/152 174/92/170 175/93/166
+f 91/56/114 89/57/112 179/53/164 180/52/168
+f 79/90/152 78/99/151 173/100/162 174/92/170
+f 85/145/108 83/143/106 176/215/167 177/217/169
+f 176/218/167 175/62/166 191/53/171 192/214/172
+f 174/63/170 173/71/162 189/66/173 190/52/174
+f 169/125/156 184/118/155 200/121/175 185/127/117
+f 172/78/161 171/133/165 187/128/176 188/73/177
+f 183/111/159 182/104/158 198/107/178 199/114/179
+f 170/140/157 169/125/156 185/127/117 186/135/116
+f 181/97/160 180/86/168 196/92/180 197/100/181
+f 179/87/164 178/219/163 194/215/182 195/93/183
+f 177/220/169 176/218/167 192/214/172 193/216/184
+f 175/62/166 174/63/170 190/52/174 191/53/171
+f 173/71/162 172/78/161 188/73/177 189/66/173
+f 184/118/155 183/111/159 199/114/179 200/121/175
+f 171/133/165 170/140/157 186/135/116 187/128/176
+f 182/104/158 181/97/160 197/100/181 198/107/178
+f 180/86/168 179/87/164 195/93/183 196/92/180
+f 178/219/163 177/221/169 193/217/184 194/215/182
+f 185/154/117 200/222/175 214/37/118
+f 200/222/175 199/223/179 214/37/118
+f 199/223/179 198/224/178 214/37/118
+f 198/224/178 197/225/181 214/37/118
+f 197/225/181 196/226/180 214/37/118
+f 196/226/180 195/227/183 214/37/118
+f 195/227/183 194/228/182 214/37/118
+f 194/228/182 193/229/184 214/37/118
+f 193/229/184 192/230/172 214/37/118
+f 192/230/172 191/231/171 214/37/118
+f 191/231/171 190/232/174 214/37/118
+f 190/232/174 189/233/173 214/37/118
+f 189/233/173 188/234/177 214/37/118
+f 188/234/177 187/235/176 214/37/118
+f 187/235/176 186/153/116 214/37/118
+f 229/236/185 230/6/185 232/2/186 231/237/186
+f 231/237/186 232/2/186 234/3/187 233/238/187
+f 227/239/188 228/8/188 230/6/185 229/236/185
+f 235/240/189 236/18/189 238/14/190 237/241/190
+f 225/242/191 226/10/191 228/8/188 227/239/188
+f 237/241/190 238/14/190 223/15/192 224/243/192
+f 224/244/192 223/12/192 226/10/191 225/242/191
+f 233/238/187 234/3/187 239/19/193 215/245/193
+f 215/245/193 239/19/193 240/29/194 216/246/194
+f 216/246/194 240/29/194 241/33/195 217/247/195
+f 217/247/195 241/33/195 242/32/196 218/248/196
+f 218/248/196 242/32/196 243/28/197 219/249/197
+f 219/249/197 243/28/197 244/26/198 220/250/198
+f 220/250/198 244/26/198 245/24/199 221/251/199
+f 221/251/199 245/24/199 246/22/200 222/252/200
+f 222/252/200 246/22/200 236/18/189 235/240/189
diff --git a/homedecor_modpack/homedecor/models/homedecor_wall_japanese_bottom.obj b/homedecor_modpack/homedecor/models/homedecor_wall_japanese_bottom.obj
new file mode 100644
index 0000000..627df71
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_wall_japanese_bottom.obj
@@ -0,0 +1,319 @@
+# Blender v2.73 (sub 0) OBJ File: 'wall-japanese-bottom.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 -0.500000 0.062501
+v -0.500000 -0.500000 0.062501
+v -0.500000 -0.500000 0.000001
+v 0.500000 -0.500000 0.000001
+v 0.500000 -0.437500 0.062501
+v -0.500000 -0.437500 0.062501
+v -0.500000 -0.437500 0.000001
+v 0.500000 -0.437500 0.000001
+v -0.437500 -0.437500 0.062501
+v -0.437500 -0.437500 0.000001
+v 0.437500 -0.437500 0.062501
+v 0.437500 -0.437500 0.000001
+v -0.437500 0.476562 0.046876
+v -0.437500 0.476562 0.015626
+v 0.437500 0.476562 0.046876
+v 0.437500 0.476562 0.015626
+v -0.437500 -0.222656 0.030775
+v 0.437500 -0.222656 0.030775
+v -0.500000 0.500000 0.062501
+v 0.500000 0.500000 0.062501
+v 0.500000 0.500000 0.000001
+v -0.500000 0.500000 0.000001
+v -0.500000 0.500000 0.062501
+v -0.437500 0.500000 0.062501
+v -0.500000 0.500000 0.000001
+v -0.437500 0.500000 0.000001
+v 0.500000 0.500000 0.062501
+v 0.437500 0.500000 0.062501
+v 0.500000 0.500000 0.000001
+v 0.437500 0.500000 0.000001
+v 0.437500 0.500000 0.046876
+v -0.437500 0.500000 0.046876
+v 0.437500 0.500000 0.015626
+v -0.437500 0.500000 0.015626
+v -0.437500 0.500000 0.030775
+v 0.437500 0.500000 0.030775
+v -0.253906 -0.222656 0.046876
+v -0.253906 -0.222656 0.015626
+v -0.253906 0.476562 0.046876
+v -0.253906 0.476562 0.015626
+v -0.207031 -0.222656 0.046876
+v -0.207031 -0.222656 0.015626
+v -0.207031 0.476562 0.046876
+v -0.207031 0.476562 0.015626
+v -0.023438 -0.222656 0.046876
+v -0.023438 -0.222656 0.015626
+v -0.023437 0.476562 0.046876
+v -0.023437 0.476562 0.015626
+v 0.023437 -0.222656 0.046876
+v 0.023437 -0.222656 0.015626
+v 0.023438 0.476562 0.046876
+v 0.023438 0.476562 0.015626
+v 0.207031 -0.222656 0.046876
+v 0.207031 -0.222656 0.015626
+v 0.207031 0.476562 0.046876
+v 0.207031 0.476562 0.015626
+v 0.253906 -0.222656 0.046876
+v 0.253906 -0.222656 0.015626
+v 0.253906 0.476562 0.046876
+v 0.253906 0.476562 0.015626
+v 0.437500 -0.019531 0.046876
+v 0.437500 -0.019531 0.015626
+v 0.253906 -0.019531 0.046876
+v 0.253906 -0.019531 0.015626
+v 0.437500 0.027344 0.046876
+v 0.437500 0.027344 0.015626
+v 0.253906 0.027344 0.046876
+v 0.253906 0.027344 0.015626
+v 0.437500 0.230469 0.046876
+v 0.437500 0.230469 0.015626
+v 0.253906 0.230469 0.046876
+v 0.253906 0.230469 0.015626
+v 0.437500 0.277344 0.046876
+v 0.437500 0.277344 0.015626
+v 0.253906 0.277344 0.046876
+v 0.253906 0.277344 0.015626
+v 0.207031 -0.019531 0.046876
+v 0.207031 -0.019531 0.015626
+v 0.023438 -0.019531 0.046876
+v 0.023438 -0.019531 0.015626
+v 0.207031 0.027344 0.046876
+v 0.207031 0.027344 0.015626
+v 0.023438 0.027344 0.046876
+v 0.023438 0.027344 0.015626
+v 0.207031 0.230469 0.046876
+v 0.207031 0.230469 0.015626
+v 0.023438 0.230469 0.046876
+v 0.023438 0.230469 0.015626
+v 0.207031 0.277344 0.046876
+v 0.207031 0.277344 0.015626
+v 0.023438 0.277344 0.046876
+v 0.023438 0.277344 0.015626
+v -0.023438 -0.019531 0.046876
+v -0.023438 -0.019531 0.015626
+v -0.207031 -0.019531 0.046876
+v -0.207031 -0.019531 0.015626
+v -0.023438 0.027344 0.046876
+v -0.023438 0.027344 0.015626
+v -0.207031 0.027344 0.046876
+v -0.207031 0.027344 0.015626
+v -0.023438 0.230469 0.046876
+v -0.023437 0.230469 0.015626
+v -0.207031 0.230469 0.046876
+v -0.207031 0.230469 0.015626
+v -0.023437 0.277344 0.046876
+v -0.023437 0.277344 0.015626
+v -0.207031 0.277344 0.046876
+v -0.207031 0.277344 0.015626
+v 0.437500 -0.437500 0.046876
+v 0.437500 -0.437500 0.015626
+v -0.437500 -0.437500 0.046876
+v -0.437500 -0.437500 0.015626
+v 0.437500 -0.222656 0.046876
+v 0.437500 -0.222656 0.015626
+v -0.437500 -0.222656 0.046876
+v -0.437500 -0.222656 0.015626
+v -0.253906 -0.019531 0.046876
+v -0.253906 -0.019531 0.015626
+v -0.437500 -0.019531 0.046876
+v -0.437500 -0.019531 0.015626
+v -0.253906 0.027344 0.046876
+v -0.253906 0.027344 0.015626
+v -0.437500 0.027344 0.046876
+v -0.437500 0.027344 0.015626
+v -0.253906 0.230469 0.046876
+v -0.253906 0.230469 0.015626
+v -0.437500 0.230469 0.046876
+v -0.437500 0.230469 0.015626
+v -0.253906 0.277344 0.046876
+v -0.253906 0.277344 0.015626
+v -0.437500 0.277344 0.046876
+v -0.437500 0.277344 0.015626
+v -0.437500 -0.222656 0.032793
+v 0.437500 -0.222656 0.032793
+v -0.437500 0.500000 0.032793
+v 0.437500 0.500000 0.032793
+vt 0.000000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.062500
+vt 0.000000 0.062500
+vt 1.000000 1.000000
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 0.937500 0.046875
+vt 0.062500 0.046875
+vt 0.062500 0.015625
+vt 0.937500 0.015625
+vt 0.000000 1.000000
+vt 0.062500 0.062500
+vt 0.062500 1.000000
+vt 0.937500 0.062500
+vt 0.062500 0.937500
+vt 0.937500 0.937500
+vt 0.062500 0.976563
+vt 0.937500 0.976563
+vt 0.062500 -0.000000
+vt 0.292969 0.976563
+vt 0.246094 0.976563
+vt 0.246094 0.277344
+vt 0.292969 0.277344
+vt 0.707031 0.976563
+vt 0.707031 0.277344
+vt 0.753906 0.277344
+vt 0.753906 0.976563
+vt 0.984375 0.277344
+vt 0.984375 0.976562
+vt 0.953125 0.976562
+vt 0.953125 0.277344
+vt 0.015625 0.976562
+vt 0.015625 0.277344
+vt 0.046875 0.277344
+vt 0.046875 0.976562
+vt 0.523438 0.976563
+vt 0.476562 0.976563
+vt 0.476562 0.277344
+vt 0.523437 0.277344
+vt 0.753906 0.527344
+vt 0.753906 0.480469
+vt 0.937500 0.480469
+vt 0.937500 0.527344
+vt 0.246094 0.527344
+vt 0.062500 0.527344
+vt 0.062500 0.480469
+vt 0.246094 0.480469
+vt 0.753906 0.046875
+vt 0.753906 0.015625
+vt 0.753906 0.953125
+vt 0.937500 0.953125
+vt 0.937500 0.984375
+vt 0.753906 0.984375
+vt 0.753906 0.777344
+vt 0.753906 0.730469
+vt 0.937500 0.730469
+vt 0.937500 0.777344
+vt 0.246094 0.777344
+vt 0.062500 0.777344
+vt 0.062500 0.730469
+vt 0.246094 0.730469
+vt 0.523438 0.527344
+vt 0.523438 0.480469
+vt 0.707031 0.480469
+vt 0.707031 0.527344
+vt 0.476562 0.527344
+vt 0.292969 0.527344
+vt 0.292969 0.480469
+vt 0.476562 0.480469
+vt 0.707031 0.046875
+vt 0.523438 0.046875
+vt 0.523438 0.015625
+vt 0.707031 0.015625
+vt 0.523438 0.953125
+vt 0.707031 0.953125
+vt 0.707031 0.984375
+vt 0.523438 0.984375
+vt 0.523438 0.777344
+vt 0.523438 0.730469
+vt 0.707031 0.730469
+vt 0.707031 0.777344
+vt 0.476562 0.777344
+vt 0.292969 0.777344
+vt 0.292969 0.730469
+vt 0.476562 0.730469
+vt 0.476563 0.046875
+vt 0.292969 0.046875
+vt 0.292969 0.015625
+vt 0.476563 0.015625
+vt 0.292969 0.953125
+vt 0.476562 0.953125
+vt 0.476562 0.984375
+vt 0.292969 0.984375
+vt 0.062500 0.277344
+vt 0.937500 0.277344
+vt 0.062500 0.953125
+vt 0.062500 0.984375
+vt 0.246094 0.046875
+vt 0.246094 0.015625
+vt 0.246094 0.953125
+vt 0.246094 0.984375
+vt 1.000000 0.937500
+vt 0.000000 0.937500
+vn 0.000000 0.000000 1.000000
+vn -0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 2/1/1 1/2/1 5/3/1 6/4/1
+f 4/1/2 3/2/2 7/3/2 8/4/2
+f 19/5/3 22/6/3 3/7/3 2/2/3
+f 2/4/4 3/1/4 4/2/4 1/3/4
+f 15/8/4 13/9/4 14/10/4 16/11/4
+f 24/12/5 9/4/5 10/13/5 26/14/5
+f 28/5/3 30/6/3 12/15/3 11/3/3
+f 10/14/6 9/16/6 11/17/6 12/6/6
+f 16/18/2 14/19/2 34/6/2 33/14/2
+f 15/19/1 31/6/1 32/14/1 13/18/1
+f 12/13/2 30/14/2 29/12/2 8/4/2
+f 11/15/1 5/3/1 27/5/1 28/6/1
+f 10/15/2 7/3/2 25/5/2 26/6/2
+f 9/13/1 24/14/1 23/12/1 6/4/1
+f 1/1/5 4/20/5 21/14/5 20/12/5
+f 43/21/1 39/22/1 37/23/1 41/24/1
+f 44/25/2 42/26/2 38/27/2 40/28/2
+f 37/29/3 39/30/3 40/31/3 38/32/3
+f 43/33/5 41/34/5 42/35/5 44/36/5
+f 51/37/1 47/38/1 45/39/1 49/40/1
+f 52/38/2 50/39/2 46/40/2 48/37/2
+f 45/29/3 47/30/3 48/31/3 46/32/3
+f 51/33/5 49/34/5 50/35/5 52/36/5
+f 59/28/1 55/25/1 53/26/1 57/27/1
+f 60/22/2 58/23/2 54/24/2 56/21/2
+f 53/29/3 55/30/3 56/31/3 54/32/3
+f 59/33/5 57/34/5 58/35/5 60/36/5
+f 67/41/1 63/42/1 61/43/1 65/44/1
+f 68/45/2 66/46/2 62/47/2 64/48/2
+f 61/8/4 63/49/4 64/50/4 62/11/4
+f 67/51/6 65/52/6 66/53/6 68/54/6
+f 75/55/1 71/56/1 69/57/1 73/58/1
+f 76/59/2 74/60/2 70/61/2 72/62/2
+f 69/8/4 71/49/4 72/50/4 70/11/4
+f 75/51/6 73/52/6 74/53/6 76/54/6
+f 83/63/1 79/64/1 77/65/1 81/66/1
+f 84/67/2 82/68/2 78/69/2 80/70/2
+f 77/71/4 79/72/4 80/73/4 78/74/4
+f 83/75/6 81/76/6 82/77/6 84/78/6
+f 91/79/1 87/80/1 85/81/1 89/82/1
+f 92/83/2 90/84/2 86/85/2 88/86/2
+f 85/71/4 87/72/4 88/73/4 86/74/4
+f 91/75/6 89/76/6 90/77/6 92/78/6
+f 99/68/1 95/69/1 93/70/1 97/67/1
+f 100/66/2 98/63/2 94/64/2 96/65/2
+f 93/87/4 95/88/4 96/89/4 94/90/4
+f 99/91/6 97/92/6 98/93/6 100/94/6
+f 107/84/1 103/85/1 101/86/1 105/83/1
+f 108/82/2 106/79/2 102/80/2 104/81/2
+f 101/87/4 103/88/4 104/89/4 102/90/4
+f 107/91/6 105/92/6 106/93/6 108/94/6
+f 115/95/1 111/13/1 109/15/1 113/96/1
+f 116/96/2 114/95/2 110/13/2 112/15/2
+f 115/97/6 113/52/6 114/53/6 116/98/6
+f 123/46/1 119/47/1 117/48/1 121/45/1
+f 124/44/2 122/41/2 118/42/2 120/43/2
+f 117/99/4 119/9/4 120/10/4 118/100/4
+f 123/97/6 121/101/6 122/102/6 124/98/6
+f 131/60/1 127/61/1 125/62/1 129/59/1
+f 132/58/2 130/55/2 126/56/2 128/57/2
+f 125/99/4 127/9/4 128/10/4 126/100/4
+f 131/97/6 129/101/6 130/102/6 132/98/6
+f 28/17/6 27/103/6 29/5/6 30/6/6
+f 34/98/6 32/97/6 31/52/6 33/53/6
+f 24/16/6 26/14/6 25/12/6 23/104/6
+g Cylinder_Cylinder_paper
+f 17/96/2 35/6/2 36/14/2 18/95/2
+f 133/95/1 134/96/1 136/6/1 135/14/1
diff --git a/homedecor_modpack/homedecor/models/homedecor_wall_japanese_middle.obj b/homedecor_modpack/homedecor/models/homedecor_wall_japanese_middle.obj
new file mode 100644
index 0000000..31b3d70
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_wall_japanese_middle.obj
@@ -0,0 +1,382 @@
+# Blender v2.73 (sub 0) OBJ File: 'wall-japanese-middle.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 0.500000 0.062501
+v -0.500000 0.500000 0.062501
+v -0.500000 0.500000 0.000001
+v 0.500000 0.500000 0.000001
+v 0.500000 0.500000 0.062501
+v -0.500000 0.500000 0.062501
+v -0.500000 0.500000 0.000001
+v 0.500000 0.500000 0.000001
+v -0.437500 0.500000 0.062501
+v -0.437500 0.500000 0.000001
+v 0.437500 0.500000 0.062501
+v 0.437500 0.500000 0.000001
+v -0.437500 -0.476562 0.046876
+v -0.437500 -0.476562 0.015626
+v 0.437500 -0.476562 0.046876
+v 0.437500 -0.476562 0.015626
+v -0.253906 -0.476562 0.046876
+v -0.253906 -0.476562 0.015626
+v -0.253906 0.476562 0.046876
+v -0.253906 0.476562 0.015626
+v -0.207031 -0.476562 0.046876
+v -0.207031 -0.476562 0.015626
+v -0.207031 0.476562 0.046876
+v -0.207031 0.476562 0.015626
+v -0.023438 -0.476562 0.046876
+v -0.023438 -0.476562 0.015626
+v -0.023437 0.476562 0.046876
+v -0.023437 0.476562 0.015626
+v 0.023437 -0.476562 0.046876
+v 0.023437 -0.476562 0.015626
+v 0.023438 0.476562 0.046876
+v 0.023438 0.476562 0.015626
+v -0.437500 0.500000 0.030775
+v 0.437500 0.500000 0.030775
+v -0.500000 -0.500000 0.062501
+v 0.500000 -0.500000 0.062501
+v 0.500000 -0.500000 0.000001
+v -0.500000 -0.500000 0.000001
+v -0.500000 -0.500000 0.062501
+v -0.437500 -0.500000 0.062501
+v -0.500000 -0.500000 0.000001
+v -0.437500 -0.500000 0.000001
+v 0.500000 -0.500000 0.062501
+v 0.437500 -0.500000 0.062501
+v 0.500000 -0.500000 0.000001
+v 0.437500 -0.500000 0.000001
+v 0.437500 -0.500000 0.046876
+v -0.437500 -0.500000 0.046876
+v 0.437500 -0.500000 0.015626
+v -0.437500 -0.500000 0.015626
+v -0.437500 -0.500000 0.030775
+v 0.437500 -0.500000 0.030775
+v 0.207031 -0.476562 0.046876
+v 0.207031 -0.476562 0.015626
+v 0.207031 0.476562 0.046876
+v 0.207031 0.476562 0.015626
+v 0.253906 -0.476562 0.046876
+v 0.253906 -0.476562 0.015626
+v 0.253906 0.476562 0.046876
+v 0.253906 0.476562 0.015626
+v 0.437500 -0.273438 0.046876
+v 0.437500 -0.273438 0.015626
+v 0.253906 -0.273438 0.046876
+v 0.253906 -0.273438 0.015626
+v 0.437500 -0.226563 0.046876
+v 0.437500 -0.226563 0.015626
+v 0.253906 -0.226562 0.046876
+v 0.253906 -0.226562 0.015626
+v 0.437500 -0.023438 0.046876
+v 0.437500 -0.023438 0.015626
+v 0.253906 -0.023438 0.046876
+v 0.253906 -0.023438 0.015626
+v 0.437500 0.023437 0.046876
+v 0.437500 0.023437 0.015626
+v 0.253906 0.023438 0.046876
+v 0.253906 0.023438 0.015626
+v 0.437500 0.226562 0.046876
+v 0.437500 0.226562 0.015626
+v 0.253906 0.226562 0.046876
+v 0.253906 0.226562 0.015626
+v 0.437500 0.273438 0.046876
+v 0.437500 0.273438 0.015626
+v 0.253906 0.273438 0.046876
+v 0.253906 0.273438 0.015626
+v 0.207031 -0.273438 0.046876
+v 0.207031 -0.273438 0.015626
+v 0.023438 -0.273438 0.046876
+v 0.023438 -0.273438 0.015626
+v 0.207031 -0.226563 0.046876
+v 0.207031 -0.226563 0.015626
+v 0.023438 -0.226562 0.046876
+v 0.023438 -0.226562 0.015626
+v 0.207031 -0.023438 0.046876
+v 0.207031 -0.023438 0.015626
+v 0.023438 -0.023438 0.046876
+v 0.023438 -0.023438 0.015626
+v 0.207031 0.023437 0.046876
+v 0.207031 0.023437 0.015626
+v 0.023438 0.023438 0.046876
+v 0.023438 0.023438 0.015626
+v 0.207031 0.226562 0.046876
+v 0.207031 0.226562 0.015626
+v 0.023438 0.226562 0.046876
+v 0.023438 0.226562 0.015626
+v 0.207031 0.273438 0.046876
+v 0.207031 0.273438 0.015626
+v 0.023438 0.273438 0.046876
+v 0.023438 0.273438 0.015626
+v -0.023438 -0.273438 0.046876
+v -0.023438 -0.273438 0.015626
+v -0.207031 -0.273438 0.046876
+v -0.207031 -0.273438 0.015626
+v -0.023438 -0.226563 0.046876
+v -0.023438 -0.226563 0.015626
+v -0.207031 -0.226562 0.046876
+v -0.207031 -0.226562 0.015626
+v -0.023438 -0.023438 0.046876
+v -0.023438 -0.023438 0.015626
+v -0.207031 -0.023438 0.046876
+v -0.207031 -0.023438 0.015626
+v -0.023438 0.023437 0.046876
+v -0.023438 0.023437 0.015626
+v -0.207031 0.023438 0.046876
+v -0.207031 0.023438 0.015626
+v -0.023438 0.226562 0.046876
+v -0.023437 0.226562 0.015626
+v -0.207031 0.226562 0.046876
+v -0.207031 0.226562 0.015626
+v -0.023437 0.273438 0.046876
+v -0.023437 0.273438 0.015626
+v -0.207031 0.273438 0.046876
+v -0.207031 0.273438 0.015626
+v -0.253906 -0.273438 0.046876
+v -0.253906 -0.273438 0.015626
+v -0.437500 -0.273438 0.046876
+v -0.437500 -0.273438 0.015626
+v -0.253906 -0.226563 0.046876
+v -0.253906 -0.226563 0.015626
+v -0.437500 -0.226562 0.046876
+v -0.437500 -0.226562 0.015626
+v -0.253906 -0.023438 0.046876
+v -0.253906 -0.023438 0.015626
+v -0.437500 -0.023438 0.046876
+v -0.437500 -0.023438 0.015626
+v -0.253906 0.023437 0.046876
+v -0.253906 0.023437 0.015626
+v -0.437500 0.023438 0.046876
+v -0.437500 0.023438 0.015626
+v -0.253906 0.226562 0.046876
+v -0.253906 0.226562 0.015626
+v -0.437500 0.226562 0.046876
+v -0.437500 0.226562 0.015626
+v -0.253906 0.273438 0.046876
+v -0.253906 0.273438 0.015626
+v -0.437500 0.273438 0.046876
+v -0.437500 0.273438 0.015626
+v 0.437500 0.476562 0.046876
+v 0.437500 0.476562 0.015626
+v -0.437500 0.476562 0.046876
+v -0.437500 0.476562 0.015626
+v -0.437500 0.500000 0.046876
+v 0.437500 0.500000 0.046876
+v -0.437500 0.500000 0.015626
+v 0.437500 0.500000 0.015626
+v -0.437500 0.500000 0.032793
+v 0.437500 0.500000 0.032793
+v -0.437500 -0.500000 0.032793
+v 0.437500 -0.500000 0.032793
+vt 0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 0.937500 1.000000
+vt 0.062500 0.976562
+vt 0.937500 0.976562
+vt 0.937500 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 0.023438
+vt 0.062500 0.023438
+vt 0.062500 0.953125
+vt 0.937500 0.953125
+vt 0.937500 0.984375
+vt 0.062500 0.984375
+vt 0.292969 0.976562
+vt 0.246094 0.976562
+vt 0.246094 0.023438
+vt 0.292969 0.023438
+vt 0.707031 0.976562
+vt 0.707031 0.023437
+vt 0.753906 0.023437
+vt 0.753906 0.976562
+vt 0.984375 0.023438
+vt 0.984375 0.976562
+vt 0.953125 0.976562
+vt 0.953125 0.023438
+vt 0.015625 0.976562
+vt 0.015625 0.023438
+vt 0.046875 0.023438
+vt 0.046875 0.976562
+vt 0.523437 0.976562
+vt 0.476562 0.976562
+vt 0.476562 0.023438
+vt 0.523437 0.023438
+vt 0.753906 0.273438
+vt 0.753906 0.226562
+vt 0.937500 0.226562
+vt 0.937500 0.273438
+vt 0.246094 0.273437
+vt 0.062500 0.273437
+vt 0.062500 0.226562
+vt 0.246094 0.226562
+vt 0.937500 0.046875
+vt 0.753906 0.046875
+vt 0.753906 0.015625
+vt 0.937500 0.015625
+vt 0.753906 0.953125
+vt 0.753906 0.984375
+vt 0.753906 0.523438
+vt 0.753906 0.476562
+vt 0.937500 0.476562
+vt 0.937500 0.523437
+vt 0.246094 0.523438
+vt 0.062500 0.523437
+vt 0.062500 0.476562
+vt 0.246094 0.476562
+vt 0.753906 0.773438
+vt 0.753906 0.726562
+vt 0.937500 0.726562
+vt 0.937500 0.773438
+vt 0.246094 0.773438
+vt 0.062500 0.773438
+vt 0.062500 0.726563
+vt 0.246094 0.726563
+vt 0.523437 0.273438
+vt 0.523437 0.226562
+vt 0.707031 0.226562
+vt 0.707031 0.273438
+vt 0.476562 0.273437
+vt 0.292969 0.273437
+vt 0.292969 0.226562
+vt 0.476562 0.226562
+vt 0.707031 0.046875
+vt 0.523438 0.046875
+vt 0.523438 0.015625
+vt 0.707031 0.015625
+vt 0.523437 0.953125
+vt 0.707031 0.953125
+vt 0.707031 0.984375
+vt 0.523437 0.984375
+vt 0.523437 0.523438
+vt 0.523437 0.476562
+vt 0.707031 0.476562
+vt 0.707031 0.523437
+vt 0.476562 0.523438
+vt 0.292969 0.523437
+vt 0.292969 0.476562
+vt 0.476562 0.476562
+vt 0.523437 0.773438
+vt 0.523437 0.726562
+vt 0.707031 0.726562
+vt 0.707031 0.773438
+vt 0.476562 0.773438
+vt 0.292969 0.773438
+vt 0.292969 0.726563
+vt 0.476562 0.726563
+vt 0.476562 0.046875
+vt 0.292969 0.046875
+vt 0.292969 0.015625
+vt 0.476562 0.015625
+vt 0.292969 0.953125
+vt 0.476562 0.953125
+vt 0.476562 0.984375
+vt 0.292969 0.984375
+vt 0.246094 0.046875
+vt 0.062500 0.046875
+vt 0.062500 0.015625
+vt 0.246094 0.015625
+vt 0.246094 0.953125
+vt 0.246094 0.984375
+vt 0.937500 0.062500
+vt 1.000000 0.062500
+vt 0.062500 0.062500
+vt 0.000000 0.062500
+vt 0.937500 0.937500
+vt 1.000000 0.937500
+vt 0.062500 0.937500
+vt -0.000000 0.937500
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 36/1/1 37/2/1 4/3/1 1/4/1
+f 163/5/2 164/3/2 158/6/2 160/7/2
+f 40/2/3 9/3/3 6/4/3 39/1/3
+f 42/8/2 41/9/2 7/10/2 10/5/2
+f 44/8/3 43/9/3 5/10/3 11/5/3
+f 46/2/2 12/3/2 8/4/2 45/1/2
+f 47/8/3 15/11/3 13/12/3 48/2/3
+f 49/2/2 50/8/2 14/11/2 16/12/2
+f 13/13/4 15/14/4 16/15/4 14/16/4
+f 161/3/3 159/6/3 157/7/3 162/5/3
+f 23/17/3 19/18/3 17/19/3 21/20/3
+f 24/21/2 22/22/2 18/23/2 20/24/2
+f 17/25/5 19/26/5 20/27/5 18/28/5
+f 23/29/1 21/30/1 22/31/1 24/32/1
+f 31/33/3 27/34/3 25/35/3 29/36/3
+f 32/34/2 30/35/2 26/36/2 28/33/2
+f 25/25/5 27/26/5 28/27/5 26/28/5
+f 31/29/1 29/30/1 30/31/1 32/32/1
+f 11/10/5 12/5/5 46/8/5 44/9/5
+f 9/4/1 40/1/1 42/2/1 10/3/1
+f 2/10/5 3/5/5 38/8/5 35/9/5
+f 59/24/3 55/21/3 53/22/3 57/23/3
+f 60/18/2 58/19/2 54/20/2 56/17/2
+f 53/25/5 55/26/5 56/27/5 54/28/5
+f 59/29/1 57/30/1 58/31/1 60/32/1
+f 67/37/3 63/38/3 61/39/3 65/40/3
+f 68/41/2 66/42/2 62/43/2 64/44/2
+f 61/45/6 63/46/6 64/47/6 62/48/6
+f 67/49/4 65/14/4 66/15/4 68/50/4
+f 75/51/3 71/52/3 69/53/3 73/54/3
+f 76/55/2 74/56/2 70/57/2 72/58/2
+f 69/45/6 71/46/6 72/47/6 70/48/6
+f 75/49/4 73/14/4 74/15/4 76/50/4
+f 83/59/3 79/60/3 77/61/3 81/62/3
+f 84/63/2 82/64/2 78/65/2 80/66/2
+f 77/45/6 79/46/6 80/47/6 78/48/6
+f 83/49/4 81/14/4 82/15/4 84/50/4
+f 91/67/3 87/68/3 85/69/3 89/70/3
+f 92/71/2 90/72/2 86/73/2 88/74/2
+f 85/75/6 87/76/6 88/77/6 86/78/6
+f 91/79/4 89/80/4 90/81/4 92/82/4
+f 99/83/3 95/84/3 93/85/3 97/86/3
+f 100/87/2 98/88/2 94/89/2 96/90/2
+f 93/75/6 95/76/6 96/77/6 94/78/6
+f 99/79/4 97/80/4 98/81/4 100/82/4
+f 107/91/3 103/92/3 101/93/3 105/94/3
+f 108/95/2 106/96/2 102/97/2 104/98/2
+f 101/75/6 103/76/6 104/77/6 102/78/6
+f 107/79/4 105/80/4 106/81/4 108/82/4
+f 115/72/3 111/73/3 109/74/3 113/71/3
+f 116/70/2 114/67/2 110/68/2 112/69/2
+f 109/99/6 111/100/6 112/101/6 110/102/6
+f 115/103/4 113/104/4 114/105/4 116/106/4
+f 123/88/3 119/89/3 117/90/3 121/87/3
+f 124/86/2 122/83/2 118/84/2 120/85/2
+f 117/99/6 119/100/6 120/101/6 118/102/6
+f 123/103/4 121/104/4 122/105/4 124/106/4
+f 131/96/3 127/97/3 125/98/3 129/95/3
+f 132/94/2 130/91/2 126/92/2 128/93/2
+f 125/99/6 127/100/6 128/101/6 126/102/6
+f 131/103/4 129/104/4 130/105/4 132/106/4
+f 139/42/3 135/43/3 133/44/3 137/41/3
+f 140/40/2 138/37/2 134/38/2 136/39/2
+f 133/107/6 135/108/6 136/109/6 134/110/6
+f 139/13/4 137/111/4 138/112/4 140/16/4
+f 147/56/3 143/57/3 141/58/3 145/55/3
+f 148/54/2 146/51/2 142/52/2 144/53/2
+f 141/107/6 143/108/6 144/109/6 142/110/6
+f 147/13/4 145/111/4 146/112/4 148/16/4
+f 155/64/3 151/65/3 149/66/3 153/63/3
+f 156/62/2 154/59/2 150/60/2 152/61/2
+f 149/107/6 151/108/6 152/109/6 150/110/6
+f 155/13/4 153/111/4 154/112/4 156/16/4
+f 44/113/6 46/8/6 45/9/6 43/114/6
+f 50/109/6 49/48/6 47/45/6 48/108/6
+f 40/115/6 39/116/6 41/1/6 42/2/6
+f 161/13/4 162/14/4 164/15/4 163/16/4
+f 11/117/4 5/118/4 8/10/4 12/5/4
+f 157/45/6 159/108/6 160/109/6 158/48/6
+f 9/119/4 10/3/4 7/4/4 6/120/4
+g Cylinder_Cylinder_paper
+f 51/8/2 33/5/2 34/3/2 52/2/2
+f 167/2/3 168/8/3 166/5/3 165/3/3
diff --git a/homedecor_modpack/homedecor/models/homedecor_wall_japanese_top.obj b/homedecor_modpack/homedecor/models/homedecor_wall_japanese_top.obj
new file mode 100644
index 0000000..7d4f6af
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_wall_japanese_top.obj
@@ -0,0 +1,319 @@
+# Blender v2.73 (sub 0) OBJ File: 'wall-japanese-top.blend'
+# www.blender.org
+o Cylinder
+v 0.500000 0.500000 0.062501
+v -0.500000 0.500000 0.062501
+v -0.500000 0.500000 0.000001
+v 0.500000 0.500000 0.000001
+v 0.500000 0.437500 0.062501
+v -0.500000 0.437500 0.062501
+v -0.500000 0.437500 0.000001
+v 0.500000 0.437500 0.000001
+v -0.437500 0.437500 0.062501
+v -0.437500 0.437500 0.000001
+v 0.437500 0.437500 0.062501
+v 0.437500 0.437500 0.000001
+v -0.437500 -0.476562 0.046876
+v -0.437500 -0.476562 0.015626
+v 0.437500 -0.476562 0.046876
+v 0.437500 -0.476562 0.015626
+v -0.500000 -0.500000 0.062501
+v 0.500000 -0.500000 0.062501
+v 0.500000 -0.500000 0.000001
+v -0.500000 -0.500000 0.000001
+v -0.500000 -0.500000 0.062501
+v -0.437500 -0.500000 0.062501
+v -0.500000 -0.500000 0.000001
+v -0.437500 -0.500000 0.000001
+v 0.500000 -0.500000 0.062501
+v 0.437500 -0.500000 0.062501
+v 0.500000 -0.500000 0.000001
+v 0.437500 -0.500000 0.000001
+v 0.437500 -0.500000 0.046876
+v -0.437500 -0.500000 0.046876
+v 0.437500 -0.500000 0.015626
+v -0.437500 -0.500000 0.015626
+v -0.253906 -0.476562 0.046876
+v -0.253906 -0.476562 0.015626
+v -0.253906 0.222656 0.046876
+v -0.253906 0.222656 0.015626
+v -0.207031 -0.476562 0.046876
+v -0.207031 -0.476562 0.015626
+v -0.207031 0.222656 0.046876
+v -0.207031 0.222656 0.015626
+v -0.023438 -0.476562 0.046876
+v -0.023438 -0.476562 0.015626
+v -0.023437 0.222656 0.046876
+v -0.023437 0.222656 0.015626
+v 0.023437 -0.476562 0.046876
+v 0.023437 -0.476562 0.015626
+v 0.023438 0.222656 0.046876
+v 0.023438 0.222656 0.015626
+v 0.207031 -0.476562 0.046876
+v 0.207031 -0.476562 0.015626
+v 0.207031 0.222656 0.046876
+v 0.207031 0.222656 0.015626
+v 0.253906 -0.476562 0.046876
+v 0.253906 -0.476562 0.015626
+v 0.253906 0.222656 0.046876
+v 0.253906 0.222656 0.015626
+v 0.437500 -0.277344 0.046876
+v 0.437500 -0.277344 0.015626
+v 0.253906 -0.277344 0.046876
+v 0.253906 -0.277344 0.015626
+v 0.437500 -0.230469 0.046876
+v 0.437500 -0.230469 0.015626
+v 0.253906 -0.230469 0.046876
+v 0.253906 -0.230469 0.015626
+v 0.437500 -0.027344 0.046876
+v 0.437500 -0.027344 0.015626
+v 0.253906 -0.027344 0.046876
+v 0.253906 -0.027344 0.015626
+v 0.437500 0.019531 0.046876
+v 0.437500 0.019531 0.015626
+v 0.253906 0.019531 0.046876
+v 0.253906 0.019531 0.015626
+v 0.207031 -0.277344 0.046876
+v 0.207031 -0.277344 0.015626
+v 0.023438 -0.277344 0.046876
+v 0.023438 -0.277344 0.015626
+v 0.207031 -0.230469 0.046876
+v 0.207031 -0.230469 0.015626
+v 0.023438 -0.230469 0.046876
+v 0.023438 -0.230469 0.015626
+v 0.207031 -0.027344 0.046876
+v 0.207031 -0.027344 0.015626
+v 0.023438 -0.027344 0.046876
+v 0.023438 -0.027344 0.015626
+v 0.207031 0.019531 0.046876
+v 0.207031 0.019531 0.015626
+v 0.023438 0.019531 0.046876
+v 0.023438 0.019531 0.015626
+v -0.023438 -0.277344 0.046876
+v -0.023438 -0.277344 0.015626
+v -0.207031 -0.277344 0.046876
+v -0.207031 -0.277344 0.015626
+v -0.023438 -0.230469 0.046876
+v -0.023438 -0.230469 0.015626
+v -0.207031 -0.230469 0.046876
+v -0.207031 -0.230469 0.015626
+v -0.023438 -0.027344 0.046876
+v -0.023438 -0.027344 0.015626
+v -0.207031 -0.027344 0.046876
+v -0.207031 -0.027344 0.015626
+v -0.023438 0.019531 0.046876
+v -0.023438 0.019531 0.015626
+v -0.207031 0.019531 0.046876
+v -0.207031 0.019531 0.015626
+v -0.253906 -0.277344 0.046876
+v -0.253906 -0.277344 0.015626
+v -0.437500 -0.277344 0.046876
+v -0.437500 -0.277344 0.015626
+v -0.253906 -0.230469 0.046876
+v -0.253906 -0.230469 0.015626
+v -0.437500 -0.230469 0.046876
+v -0.437500 -0.230469 0.015626
+v -0.253906 -0.027344 0.046876
+v -0.253906 -0.027344 0.015626
+v -0.437500 -0.027344 0.046876
+v -0.437500 -0.027344 0.015626
+v -0.253906 0.019531 0.046876
+v -0.253906 0.019531 0.015626
+v -0.437500 0.019531 0.046876
+v -0.437500 0.019531 0.015626
+v 0.437500 0.222656 0.046876
+v 0.437500 0.222656 0.015626
+v -0.437500 0.222656 0.046876
+v -0.437500 0.222656 0.015626
+v 0.437500 0.437500 0.046876
+v 0.437500 0.437500 0.015626
+v -0.437500 0.437500 0.046876
+v -0.437500 0.437500 0.015626
+v -0.437500 0.222656 0.030775
+v 0.437500 0.222656 0.030775
+v -0.437500 -0.500000 0.030775
+v 0.437500 -0.500000 0.030775
+v -0.437500 0.222656 0.032793
+v 0.437500 0.222656 0.032793
+v -0.437500 -0.500000 0.032793
+v 0.437500 -0.500000 0.032793
+vt 0.000000 0.000000
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+vt 0.000000 1.000000
+vt 1.000000 0.937500
+vt 1.000000 1.000000
+vt 0.000000 0.937500
+vt 0.062500 0.937500
+vt 0.937500 -0.000000
+vt 1.000000 -0.000000
+vt 0.937500 0.937500
+vt 0.937500 0.023438
+vt 0.062500 0.023438
+vt 0.062500 0.953125
+vt 0.937500 0.953125
+vt 0.937500 0.984375
+vt 0.062500 0.984375
+vt 0.937500 0.062500
+vt 0.062500 0.062500
+vt 0.937500 1.000000
+vt 0.292969 0.722656
+vt 0.246094 0.722656
+vt 0.246094 0.023438
+vt 0.292969 0.023438
+vt 0.707031 0.722656
+vt 0.707031 0.023438
+vt 0.753906 0.023438
+vt 0.753906 0.722656
+vt 0.984375 0.023438
+vt 0.984375 0.722656
+vt 0.953125 0.722656
+vt 0.953125 0.023438
+vt 0.015625 0.722656
+vt 0.015625 0.023438
+vt 0.046875 0.023438
+vt 0.046875 0.722656
+vt 0.523438 0.722656
+vt 0.476562 0.722656
+vt 0.476562 0.023438
+vt 0.523437 0.023438
+vt 0.753906 0.269531
+vt 0.753906 0.222656
+vt 0.937500 0.222656
+vt 0.937500 0.269531
+vt 0.246094 0.269531
+vt 0.062500 0.269531
+vt 0.062500 0.222656
+vt 0.246094 0.222656
+vt 0.937500 0.046875
+vt 0.753906 0.046875
+vt 0.753906 0.015625
+vt 0.937500 0.015625
+vt 0.753906 0.953125
+vt 0.753906 0.984375
+vt 0.753906 0.519531
+vt 0.753906 0.472656
+vt 0.937500 0.472656
+vt 0.937500 0.519531
+vt 0.246094 0.519531
+vt 0.062500 0.519531
+vt 0.062500 0.472656
+vt 0.246094 0.472656
+vt 0.523438 0.269531
+vt 0.523438 0.222656
+vt 0.707031 0.222656
+vt 0.707031 0.269531
+vt 0.476562 0.269531
+vt 0.292969 0.269531
+vt 0.292969 0.222656
+vt 0.476562 0.222656
+vt 0.707031 0.046875
+vt 0.523438 0.046875
+vt 0.523438 0.015625
+vt 0.707031 0.015625
+vt 0.523438 0.953125
+vt 0.707031 0.953125
+vt 0.707031 0.984375
+vt 0.523438 0.984375
+vt 0.523438 0.519531
+vt 0.523438 0.472656
+vt 0.707031 0.472656
+vt 0.707031 0.519531
+vt 0.476562 0.519531
+vt 0.292969 0.519531
+vt 0.292969 0.472656
+vt 0.476562 0.472656
+vt 0.476562 0.046875
+vt 0.292969 0.046875
+vt 0.292969 0.015625
+vt 0.476562 0.015625
+vt 0.292969 0.953125
+vt 0.476562 0.953125
+vt 0.476562 0.984375
+vt 0.292969 0.984375
+vt 0.246094 0.046875
+vt 0.062500 0.046875
+vt 0.062500 0.015625
+vt 0.246094 0.015625
+vt 0.246094 0.953125
+vt 0.246094 0.984375
+vt 0.062500 0.722656
+vt 0.937500 0.722656
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+g Cylinder_Cylinder_door
+s off
+f 18/1/1 19/2/1 4/3/1 1/4/1
+f 1/5/2 4/6/2 3/4/2 2/7/2
+f 3/6/3 4/4/3 8/7/3 7/5/3
+f 1/6/4 2/4/4 6/7/4 5/5/4
+f 22/2/4 9/8/4 6/7/4 21/1/4
+f 24/9/3 23/10/3 7/5/3 10/11/3
+f 26/9/4 25/10/4 5/5/4 11/11/4
+f 28/2/3 12/8/3 8/7/3 27/1/3
+f 29/9/4 15/12/4 13/13/4 30/2/4
+f 31/2/3 32/9/3 14/12/3 16/13/3
+f 13/14/2 15/15/2 16/16/2 14/17/2
+f 12/9/5 11/18/5 9/19/5 10/2/5
+f 11/5/6 12/11/6 28/9/6 26/10/6
+f 9/7/1 22/1/1 24/2/1 10/8/1
+f 2/6/6 3/20/6 20/9/6 17/10/6
+f 39/21/4 35/22/4 33/23/4 37/24/4
+f 40/25/3 38/26/3 34/27/3 36/28/3
+f 33/29/6 35/30/6 36/31/6 34/32/6
+f 39/33/1 37/34/1 38/35/1 40/36/1
+f 47/37/4 43/38/4 41/39/4 45/40/4
+f 48/38/3 46/39/3 42/40/3 44/37/3
+f 41/29/6 43/30/6 44/31/6 42/32/6
+f 47/33/1 45/34/1 46/35/1 48/36/1
+f 55/28/4 51/25/4 49/26/4 53/27/4
+f 56/22/3 54/23/3 50/24/3 52/21/3
+f 49/29/6 51/30/6 52/31/6 50/32/6
+f 55/33/1 53/34/1 54/35/1 56/36/1
+f 63/41/4 59/42/4 57/43/4 61/44/4
+f 64/45/3 62/46/3 58/47/3 60/48/3
+f 57/49/5 59/50/5 60/51/5 58/52/5
+f 63/53/2 61/15/2 62/16/2 64/54/2
+f 71/55/4 67/56/4 65/57/4 69/58/4
+f 72/59/3 70/60/3 66/61/3 68/62/3
+f 65/49/5 67/50/5 68/51/5 66/52/5
+f 71/53/2 69/15/2 70/16/2 72/54/2
+f 79/63/4 75/64/4 73/65/4 77/66/4
+f 80/67/3 78/68/3 74/69/3 76/70/3
+f 73/71/5 75/72/5 76/73/5 74/74/5
+f 79/75/2 77/76/2 78/77/2 80/78/2
+f 87/79/4 83/80/4 81/81/4 85/82/4
+f 88/83/3 86/84/3 82/85/3 84/86/3
+f 81/71/5 83/72/5 84/73/5 82/74/5
+f 87/75/2 85/76/2 86/77/2 88/78/2
+f 95/68/4 91/69/4 89/70/4 93/67/4
+f 96/66/3 94/63/3 90/64/3 92/65/3
+f 89/87/5 91/88/5 92/89/5 90/90/5
+f 95/91/2 93/92/2 94/93/2 96/94/2
+f 103/84/4 99/85/4 97/86/4 101/83/4
+f 104/82/3 102/79/3 98/80/3 100/81/3
+f 97/87/5 99/88/5 100/89/5 98/90/5
+f 103/91/2 101/92/2 102/93/2 104/94/2
+f 111/46/4 107/47/4 105/48/4 109/45/4
+f 112/44/3 110/41/3 106/42/3 108/43/3
+f 105/95/5 107/96/5 108/97/5 106/98/5
+f 111/14/2 109/99/2 110/100/2 112/17/2
+f 119/60/4 115/61/4 113/62/4 117/59/4
+f 120/58/3 118/55/3 114/56/3 116/57/3
+f 113/95/5 115/96/5 116/97/5 114/98/5
+f 119/14/2 117/99/2 118/100/2 120/17/2
+f 127/8/4 123/101/4 121/102/4 125/11/4
+f 128/11/3 126/8/3 122/101/3 124/102/3
+f 121/49/5 123/96/5 124/97/5 122/52/5
+f 22/19/5 21/103/5 23/1/5 24/2/5
+f 26/18/5 28/9/5 27/10/5 25/104/5
+f 32/97/5 31/52/5 29/49/5 30/96/5
+g Cylinder_Cylinder_paper
+f 131/9/3 129/102/3 130/101/3 132/2/3
+f 135/2/4 136/9/4 134/102/4 133/101/4
diff --git a/homedecor_modpack/homedecor/models/homedecor_wall_lamp.obj b/homedecor_modpack/homedecor/models/homedecor_wall_lamp.obj
new file mode 100644
index 0000000..58965c0
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_wall_lamp.obj
@@ -0,0 +1,341 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib homedecor_wall_lamp.mtl
+o boulons_Cube_Lamp.003
+v -0.091794 -0.383579 0.447287
+v -0.091793 -0.383579 0.425256
+v -0.072714 -0.372564 0.425256
+v -0.072714 -0.372564 0.447287
+v -0.091794 -0.108200 0.447287
+v -0.091793 -0.108200 0.425256
+v -0.072714 -0.097185 0.425256
+v -0.072714 -0.097185 0.447287
+v 0.091793 -0.064139 0.447287
+v 0.091793 -0.064139 0.425257
+v 0.072714 -0.075155 0.425257
+v 0.072714 -0.075155 0.447287
+v 0.091793 -0.339519 0.447287
+v 0.091793 -0.339519 0.425257
+v 0.072714 -0.350534 0.425257
+v 0.072714 -0.350534 0.447287
+v -0.110873 -0.097185 0.447287
+v -0.110873 -0.097185 0.425256
+v 0.072714 -0.097185 0.425257
+v 0.072714 -0.097185 0.447287
+v -0.072714 -0.075155 0.425256
+v -0.072714 -0.075155 0.447287
+v -0.110873 -0.075155 0.447287
+v -0.110873 -0.075155 0.425256
+v 0.091793 -0.108200 0.425257
+v 0.091793 -0.108200 0.447287
+v -0.091793 -0.064139 0.425256
+v -0.091794 -0.064139 0.447287
+v 0.110872 -0.097185 0.425257
+v 0.110872 -0.097185 0.447287
+v 0.110872 -0.075155 0.447287
+v 0.110872 -0.075155 0.425257
+v -0.110873 -0.372564 0.447287
+v -0.110873 -0.372564 0.425256
+v 0.072714 -0.372564 0.425257
+v 0.072714 -0.372564 0.447287
+v -0.072714 -0.350534 0.425256
+v -0.072714 -0.350534 0.447287
+v -0.110873 -0.350534 0.447287
+v -0.110873 -0.350534 0.425256
+v 0.091793 -0.383579 0.425257
+v 0.091793 -0.383579 0.447287
+v -0.091793 -0.339519 0.425256
+v -0.091794 -0.339519 0.447287
+v 0.110872 -0.372564 0.425257
+v 0.110872 -0.372564 0.447288
+v 0.110872 -0.350534 0.447288
+v 0.110872 -0.350534 0.425257
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.933013 0.750000
+vt 0.933013 0.250000
+vt 0.500000 0.000000
+vt 0.066987 0.250000
+vt 0.066987 0.750000
+g boulons_Cube_Lamp.003_Lamp
+usemtl Lamp
+s off
+f 1/1 2/2 3/3 4/4
+f 5/1 6/2 7/3 8/4
+f 9/1 10/2 11/3 12/4
+f 13/1 14/2 15/3 16/4
+f 17/1 18/2 6/3 5/4
+f 12/1 11/2 19/3 20/4
+f 8/1 7/2 21/3 22/4
+f 23/1 24/2 18/3 17/4
+f 20/1 19/2 25/3 26/4
+f 22/1 21/2 27/3 28/4
+f 28/1 27/2 24/3 23/4
+f 26/1 25/2 29/3 30/4
+f 31/1 32/2 10/3 9/4
+f 30/1 29/2 32/3 31/4
+f 33/1 34/2 2/3 1/4
+f 16/1 15/2 35/3 36/4
+f 4/1 3/2 37/3 38/4
+f 39/1 40/2 34/3 33/4
+f 36/1 35/2 41/3 42/4
+f 38/1 37/2 43/3 44/4
+f 44/1 43/2 40/3 39/4
+f 42/1 41/2 45/3 46/4
+f 47/1 48/2 14/3 13/4
+f 46/1 45/2 48/3 47/4
+f 34/5 40/6 43/7 37/8 3/9 2/10
+f 45/5 41/6 35/7 15/8 14/9 48/10
+f 18/5 24/6 27/7 21/8 7/9 6/10
+f 29/5 25/6 19/7 11/8 10/9 32/10
+o wood_Cube_Lamp.002
+v 0.000000 -0.417543 0.199446
+v 0.000000 -0.048534 0.199446
+v -0.027261 -0.048534 0.188153
+v -0.027261 -0.417543 0.188153
+v -0.038553 -0.048534 0.160893
+v -0.038553 -0.417543 0.160893
+v -0.027261 -0.048534 0.133632
+v -0.027261 -0.417543 0.133632
+v 0.000000 -0.048534 0.122340
+v 0.000000 -0.417543 0.122340
+v 0.027261 -0.048534 0.133632
+v 0.027261 -0.417543 0.133632
+v 0.038553 -0.048534 0.160893
+v 0.038553 -0.417543 0.160893
+v 0.027261 -0.417543 0.188153
+v 0.027261 -0.048534 0.188154
+v 0.000000 -0.435907 0.160893
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.110396 0.000000
+vt 0.110396 1.000000
+vt 0.188459 0.000000
+vt 0.188459 1.000000
+vt 0.565373 1.000000
+vt 0.565373 0.000000
+vt 0.675768 0.000000
+vt 0.675768 1.000000
+vt 0.753830 0.000000
+vt 0.753830 1.000000
+vt 0.376917 1.000000
+vt 0.376916 0.000000
+vt 0.487311 0.000000
+vt 0.487311 1.000000
+vt 0.266525 0.000000
+vt 0.266521 1.000000
+vt 0.753831 0.056545
+vt 0.825931 0.000000
+vt 0.850586 0.096524
+vt 0.753830 0.136506
+vt 0.825932 0.193048
+vt 0.927899 0.193048
+vt 1.000000 0.136505
+vt 1.000000 0.056542
+vt 0.927899 0.000003
+g wood_Cube_Lamp.002_Lamp
+usemtl Lamp
+s off
+f 49/11 50/12 51/13 52/14
+f 52/14 51/13 53/15 54/16
+f 54/17 53/18 55/19 56/20
+f 56/20 55/19 57/21 58/22
+f 58/23 57/24 59/25 60/26
+f 60/26 59/25 61/18 62/17
+f 63/27 64/28 50/16 49/15
+f 62/24 61/23 64/28 63/27
+f 63/29 49/30 65/31
+f 62/32 63/29 65/31
+f 60/33 62/32 65/31
+f 58/34 60/33 65/31
+f 56/35 58/34 65/31
+f 54/36 56/35 65/31
+f 52/37 54/36 65/31
+f 49/30 52/37 65/31
+o light_Cube_Lamp.001
+v -0.079662 0.050537 0.215785
+v -0.079662 0.050537 0.106001
+v -0.079662 0.292408 0.215785
+v -0.079662 0.292408 0.106001
+v 0.079659 0.050537 0.106001
+v 0.079659 0.292408 0.106001
+v 0.079659 0.292408 0.215785
+v 0.079659 0.050537 0.215785
+v -0.054893 0.050537 0.081232
+v 0.054891 0.050537 0.081232
+v -0.054893 0.292408 0.081232
+v 0.054891 0.292408 0.081232
+v 0.054891 0.050537 0.240553
+v 0.054891 0.292408 0.240553
+v -0.054893 0.292408 0.240553
+v -0.054893 0.050537 0.240553
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+g light_Cube_Lamp.001_Lamp
+usemtl Lamp
+s off
+f 67/38 66/39 68/40 69/41
+f 70/38 71/39 72/40 73/41
+f 75/38 74/39 76/40 77/41
+f 78/38 79/39 80/40 81/41
+o cage_Cube_Lamp
+v -0.109953 0.342520 0.050939
+v -0.109953 0.342519 0.270846
+v -0.039583 0.388416 0.200476
+v -0.039583 0.388416 0.121310
+v 0.109953 0.342520 0.050940
+v 0.039583 0.388416 0.121310
+v 0.109953 0.342519 0.270847
+v 0.039583 0.388416 0.200476
+v -0.109953 0.034634 0.093125
+v -0.109953 0.034634 0.228661
+v -0.079662 0.050537 0.215785
+v -0.079662 0.050537 0.106001
+v 0.029987 -0.176861 0.210871
+v -0.029987 -0.176861 0.210871
+v -0.029987 -0.176861 0.443450
+v 0.029986 -0.176861 0.443450
+v -0.029987 -0.261678 0.210871
+v -0.029987 -0.261678 0.443450
+v 0.029987 -0.261678 0.210871
+v 0.029986 -0.261678 0.443450
+v -0.128673 -0.037299 0.443450
+v 0.128672 -0.037299 0.443450
+v -0.128673 -0.401240 0.443450
+v 0.128672 -0.401240 0.443451
+v -0.128673 -0.037299 0.499994
+v 0.128672 -0.037299 0.499995
+v -0.128673 -0.401240 0.499994
+v 0.128672 -0.401240 0.499995
+v -0.109953 0.308310 0.093125
+v -0.109953 0.308310 0.228661
+v -0.109953 -0.017933 0.050939
+v -0.079662 0.292408 0.215785
+v -0.079662 0.292408 0.106001
+v 0.079659 0.050537 0.106001
+v 0.079659 0.292408 0.106001
+v 0.079659 0.292408 0.215785
+v 0.079659 0.050537 0.215785
+v 0.109951 0.308310 0.228661
+v 0.109951 0.308310 0.093125
+v 0.109951 0.034634 0.093125
+v 0.109951 0.034634 0.228661
+v 0.067767 0.034634 0.050941
+v -0.067769 0.034634 0.050940
+v -0.054893 0.050537 0.081232
+v 0.054891 0.050537 0.081232
+v -0.067769 0.308310 0.050940
+v -0.054893 0.292408 0.081232
+v 0.067767 0.308310 0.050941
+v 0.054891 0.292408 0.081232
+v 0.054891 0.050537 0.240553
+v 0.054891 0.292408 0.240553
+v -0.054893 0.292408 0.240553
+v -0.054893 0.050537 0.240553
+v -0.067769 0.308310 0.270845
+v 0.067767 0.308310 0.270845
+v 0.067767 0.034634 0.270845
+v -0.067769 0.034634 0.270844
+v 0.109952 -0.017933 0.270845
+v -0.109954 -0.017933 0.270844
+v 0.109953 -0.017933 0.050941
+v -0.045897 -0.265189 0.240388
+v -0.045897 -0.173396 0.240388
+v -0.091793 -0.173396 0.160893
+v -0.091793 -0.265189 0.160893
+v -0.045897 -0.173396 0.081397
+v -0.045897 -0.265189 0.081397
+v 0.045897 -0.173396 0.081398
+v 0.045897 -0.265189 0.081398
+v 0.091793 -0.173396 0.160893
+v 0.091793 -0.265189 0.160893
+v 0.045897 -0.265189 0.240389
+v 0.045897 -0.173396 0.240389
+v 0.046179 -0.048431 0.207072
+v 0.046179 -0.048431 0.114713
+v -0.046181 -0.048431 0.114712
+v -0.046181 -0.048431 0.207072
+v 0.000000 0.498568 0.160893
+vt 0.377885 0.378926
+vt 0.622115 0.378926
+vt 0.622115 0.623155
+vt 0.377885 0.623155
+vt 0.500000 0.622746
+vt 0.605754 0.561689
+vt 0.605754 0.439574
+vt 0.500000 0.378517
+vt 0.394246 0.439574
+vt 0.394246 0.561689
+g cage_Cube_Lamp_Lamp
+usemtl Lamp
+s off
+f 82/42 83/43 84/44 85/45
+f 86/42 82/43 85/44 87/45
+f 88/42 86/43 87/44 89/45
+f 83/42 88/43 89/44 84/45
+f 90/42 91/43 92/44 93/45
+f 94/42 95/43 96/44 97/45
+f 95/42 98/43 99/44 96/45
+f 100/42 94/43 97/44 101/45
+f 98/42 100/43 101/44 99/45
+f 97/42 96/43 102/44 103/45
+f 96/42 99/43 104/44 102/45
+f 101/42 97/43 103/44 105/45
+f 99/42 101/43 105/44 104/45
+f 103/42 102/43 106/44 107/45
+f 102/42 104/43 108/44 106/45
+f 105/42 103/43 107/44 109/45
+f 104/42 105/43 109/44 108/45
+f 83/42 82/43 110/44 111/45
+f 82/42 112/43 90/44 110/45
+f 111/42 113/43 92/44 91/45
+f 110/42 90/43 93/44 114/45
+f 111/42 110/43 114/44 113/45
+f 119/42 117/43 116/44 120/45
+f 120/42 116/43 115/44 121/45
+f 119/42 122/43 118/44 117/45
+f 123/42 124/43 125/44 126/45
+f 121/42 115/43 118/44 122/45
+f 88/42 119/43 120/44 86/45
+f 127/42 128/43 125/44 124/45
+f 129/42 123/43 126/44 130/45
+f 127/42 129/43 130/44 128/45
+f 135/42 133/43 132/44 136/45
+f 136/42 132/43 131/44 137/45
+f 135/42 138/43 134/44 133/45
+f 139/42 137/43 138/44 140/45
+f 137/42 131/43 134/44 138/45
+f 112/42 140/43 91/44 90/45
+f 83/42 111/43 91/44 140/45
+f 82/42 86/43 129/44 127/45
+f 141/42 112/43 124/44 123/45
+f 141/42 121/43 122/44 139/45
+f 88/42 139/43 122/44 119/45
+f 86/42 120/43 121/44 141/45
+f 86/42 141/43 123/44 129/45
+f 82/42 127/43 124/44 112/45
+f 83/42 140/43 138/44 135/45
+f 88/42 136/43 137/44 139/45
+f 83/42 135/43 136/44 88/45
+f 142/42 143/43 144/44 145/45
+f 145/45 144/44 146/44 147/45
+f 147/45 146/44 148/44 149/45
+f 149/45 148/44 150/43 151/42
+f 152/45 153/44 143/43 142/42
+f 151/42 150/43 153/44 152/45
+f 139/42 154/43 155/44 141/45
+f 112/42 141/43 155/44 156/45
+f 140/42 112/43 156/44 157/45
+f 140/42 157/43 154/44 139/45
+f 154/42 157/43 156/44 155/45
+f 85/42 84/43 158/44
+f 87/42 85/43 158/44
+f 89/42 87/43 158/44
+f 84/42 89/43 158/44
+f 142/46 145/47 147/48 149/49 151/50 152/51
+f 150/46 148/47 146/48 144/49 143/50 153/51
diff --git a/homedecor_modpack/homedecor/models/homedecor_wall_sconce.obj b/homedecor_modpack/homedecor/models/homedecor_wall_sconce.obj
new file mode 100644
index 0000000..d0e8186
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_wall_sconce.obj
@@ -0,0 +1,423 @@
+# Blender v2.73 (sub 0) OBJ File: 'wall-sconce.blend'
+# www.blender.org
+o Cylinder
+v 0.030936 0.157185 0.442848
+v 0.030936 0.025935 0.442848
+v 0.008535 -0.093010 0.369002
+v 0.008535 0.025935 0.369002
+v 0.024306 -0.093010 0.375535
+v 0.024306 0.025935 0.375535
+v 0.036377 -0.093010 0.387606
+v 0.036377 0.025935 0.387606
+v 0.042909 -0.093010 0.403377
+v 0.042909 0.025935 0.403377
+v 0.042909 -0.093010 0.420447
+v 0.042909 0.025935 0.420447
+v 0.036377 -0.093010 0.436218
+v 0.036377 0.025935 0.436218
+v 0.024306 -0.093010 0.448289
+v 0.024306 0.025935 0.448289
+v 0.008535 -0.093010 0.454821
+v 0.008535 0.025935 0.454821
+v -0.008535 -0.093010 0.454821
+v -0.008535 0.025935 0.454821
+v -0.024306 -0.093010 0.448289
+v -0.024306 0.025935 0.448289
+v -0.036377 -0.093010 0.436218
+v -0.036377 0.025935 0.436218
+v -0.042909 -0.093010 0.420447
+v -0.042909 0.025935 0.420447
+v -0.042909 -0.093010 0.403377
+v -0.042909 0.025935 0.403377
+v -0.036377 -0.093010 0.387606
+v -0.036377 0.025935 0.387606
+v -0.024306 -0.093010 0.375535
+v -0.024306 0.025935 0.375535
+v -0.008535 -0.093010 0.369002
+v -0.008535 0.025935 0.369002
+v -0.030936 0.025935 0.380976
+v -0.030936 0.157185 0.380976
+v 0.030936 0.157185 0.380976
+v 0.030936 0.025935 0.380976
+v -0.030936 0.025935 0.442848
+v -0.030936 0.157185 0.442848
+v 0.030936 0.157185 0.442848
+v 0.030936 0.025935 0.442848
+v -0.030936 0.025935 0.380976
+v -0.030936 0.157185 0.380976
+v 0.030936 0.157185 0.380976
+v 0.030936 0.025935 0.380976
+v -0.030936 0.025935 0.442848
+v -0.030936 0.157185 0.442848
+v -0.250000 -0.249999 0.498046
+v 0.250000 -0.249999 0.498046
+v -0.250000 0.250001 0.498045
+v 0.250000 0.250001 0.498045
+v 0.017070 -0.106000 0.326093
+v 0.017070 -0.084125 0.326093
+v 0.048612 -0.106000 0.339158
+v 0.048612 -0.084125 0.339158
+v 0.042909 -0.093011 0.420447
+v 0.042909 -0.093011 0.403376
+v 0.072754 -0.106000 0.363299
+v 0.072754 -0.084125 0.363299
+v 0.036377 -0.093011 0.387605
+v 0.024306 -0.093011 0.375535
+v 0.085819 -0.106000 0.394841
+v 0.085819 -0.084125 0.394841
+v 0.008535 -0.093011 0.369002
+v -0.008535 -0.093011 0.369002
+v 0.085819 -0.106000 0.428982
+v 0.085819 -0.084125 0.428982
+v -0.024306 -0.093011 0.375535
+v -0.036377 -0.093011 0.387605
+v 0.072754 -0.106000 0.460524
+v 0.072754 -0.084125 0.460524
+v -0.042909 -0.093011 0.403376
+v -0.042909 -0.093011 0.420447
+v 0.048612 -0.106000 0.484665
+v 0.048612 -0.084125 0.484665
+v -0.036377 -0.093011 0.436218
+v -0.024306 -0.093011 0.448288
+v 0.017070 -0.106000 0.497730
+v 0.017070 -0.084125 0.497730
+v -0.008535 -0.093011 0.454821
+v 0.008535 -0.093011 0.454821
+v -0.017070 -0.106000 0.497730
+v -0.017070 -0.084125 0.497730
+v 0.024306 -0.093011 0.448288
+v 0.036377 -0.093011 0.436218
+v -0.048612 -0.106000 0.484665
+v -0.048612 -0.084125 0.484665
+v 0.000000 -0.106000 0.411912
+v 0.000000 -0.093695 0.411912
+v -0.072754 -0.106000 0.460524
+v -0.072754 -0.084125 0.460524
+v 0.010938 -0.106000 0.498045
+v 0.010938 -0.106000 0.368162
+v -0.085819 -0.106000 0.428982
+v -0.085819 -0.084125 0.428982
+v -0.010937 -0.106000 0.368162
+v -0.010937 -0.106000 0.498045
+v -0.085819 -0.106000 0.394841
+v -0.085819 -0.084125 0.394841
+v 0.010938 -0.149750 0.498045
+v 0.010938 -0.149750 0.477537
+v -0.072753 -0.106000 0.363299
+v -0.072753 -0.084125 0.363299
+v -0.010937 -0.149750 0.477537
+v -0.010937 -0.149750 0.498045
+v -0.048612 -0.106000 0.339158
+v -0.048612 -0.084125 0.339158
+v 0.250000 0.250001 0.499999
+v -0.250000 0.250001 0.499999
+v -0.017070 -0.106000 0.326093
+v -0.017070 -0.084125 0.326093
+v 0.250000 -0.249999 0.499999
+v -0.250000 -0.249999 0.499999
+vt 0.500000 -0.000000
+vt 0.500000 0.500000
+vt 0.437500 0.500000
+vt 0.437500 -0.000000
+vt 0.375000 0.500000
+vt 0.375000 -0.000000
+vt 0.312500 0.500000
+vt 0.312500 -0.000000
+vt 0.250000 0.500000
+vt 0.250000 -0.000000
+vt 0.187500 0.500000
+vt 0.187500 -0.000000
+vt 0.125000 0.500000
+vt 0.125000 -0.000000
+vt 0.062500 0.500000
+vt 0.062500 -0.000000
+vt -0.000000 0.500000
+vt -0.000000 -0.000000
+vt 1.000000 -0.000000
+vt 1.000000 0.500000
+vt 0.937500 0.500000
+vt 0.937500 -0.000000
+vt 0.875000 0.500000
+vt 0.875000 -0.000000
+vt 0.812500 0.500000
+vt 0.812500 -0.000000
+vt 0.750000 0.500000
+vt 0.750000 -0.000000
+vt 0.687500 0.500000
+vt 0.687500 -0.000000
+vt 0.625000 0.500000
+vt 0.625000 -0.000000
+vt 0.476190 0.785650
+vt 0.488110 0.783278
+vt 0.498216 0.776526
+vt 0.504969 0.766420
+vt 0.507340 0.754500
+vt 0.504969 0.742579
+vt 0.498216 0.732474
+vt 0.488110 0.725721
+vt 0.476190 0.723350
+vt 0.464269 0.725721
+vt 0.454164 0.732474
+vt 0.447411 0.742579
+vt 0.445040 0.754500
+vt 0.447411 0.766420
+vt 0.454164 0.776526
+vt 0.464269 0.783278
+vt 0.562500 -0.000000
+vt 0.562500 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.937500 1.000000
+vt 0.625000 0.062500
+vt 0.562500 0.062500
+vt 0.225161 0.490214
+vt 0.282890 0.466302
+vt 0.314132 0.623368
+vt 0.687500 0.062500
+vt 0.180978 0.534397
+vt 0.750000 0.062500
+vt 0.157066 0.592125
+vt 0.812500 0.062500
+vt 0.157066 0.654610
+vt 0.875000 0.062500
+vt 0.180978 0.712339
+vt 0.937500 0.062500
+vt 0.225162 0.756522
+vt 1.000000 0.062500
+vt 0.282890 0.780434
+vt 0.062500 0.062500
+vt 0.000000 0.062500
+vt 0.125000 0.062500
+vt 1.000000 0.187500
+vt 0.875000 0.187500
+vt 0.187500 0.062500
+vt 0.345375 0.780434
+vt 0.250000 0.062500
+vt 0.875000 0.687500
+vt 0.625000 0.687500
+vt 0.625000 0.562500
+vt 0.312500 0.062500
+vt 1.000000 0.687500
+vt 0.375000 0.062500
+vt 0.437500 0.062500
+vt 0.500000 0.062500
+vt 0.376617 0.309236
+vt 0.492073 0.357060
+vt 0.375000 0.687500
+vt 0.492074 0.889676
+vt 0.376617 0.937500
+vt 0.403103 0.756522
+vt 0.345375 0.466302
+vt 0.403103 0.490214
+vt 0.447286 0.534397
+vt 0.471198 0.592125
+vt 0.471198 0.654610
+vt 0.447286 0.712338
+vt 0.580440 0.445427
+vt 0.628264 0.560883
+vt 0.628264 0.685853
+vt 0.580440 0.801309
+vt 0.251647 0.937500
+vt 0.136191 0.889676
+vt 0.047824 0.801309
+vt 0.000000 0.685853
+vt 0.000000 0.560883
+vt 0.047824 0.445426
+vt 0.136191 0.357059
+vt 0.251648 0.309236
+vn 0.195100 0.000000 -0.980800
+vn 0.145600 0.665700 -0.731900
+vn 0.414600 0.665700 -0.620400
+vn 0.555600 0.000000 -0.831500
+vn 0.620400 0.665700 -0.414600
+vn 0.831500 0.000000 -0.555600
+vn 0.731900 0.665700 -0.145600
+vn 0.980800 0.000000 -0.195100
+vn 0.731900 0.665700 0.145600
+vn 0.980800 0.000000 0.195100
+vn 0.620400 0.665700 0.414600
+vn 0.831500 0.000000 0.555600
+vn 0.414600 0.665700 0.620400
+vn 0.555600 0.000000 0.831500
+vn 0.145600 0.665700 0.731900
+vn 0.195100 0.000000 0.980800
+vn -0.145600 0.665700 0.731900
+vn -0.195100 0.000000 0.980800
+vn -0.414600 0.665700 0.620400
+vn -0.555600 0.000000 0.831500
+vn -0.620400 0.665700 0.414600
+vn -0.831500 0.000000 0.555600
+vn -0.731900 0.665700 0.145600
+vn -0.980800 0.000000 0.195100
+vn -0.731900 0.665700 -0.145600
+vn -0.980800 0.000000 -0.195100
+vn -0.620400 0.665700 -0.414600
+vn -0.831500 0.000000 -0.555600
+vn -0.414600 0.665700 -0.620400
+vn -0.555600 0.000000 -0.831500
+vn -0.145600 0.665700 -0.731900
+vn -0.195100 0.000000 -0.980800
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn -0.707100 -0.000000 -0.707100
+vn 0.707100 -0.000000 -0.707100
+vn 0.000000 -0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.380100 0.729200 -0.568900
+vn 0.568900 0.729200 -0.380100
+vn 0.620400 -0.665700 -0.414600
+vn 0.414600 -0.665700 -0.620400
+vn 0.066200 0.992900 -0.099100
+vn 0.023200 0.992900 -0.116900
+vn 0.671100 0.729200 -0.133500
+vn 0.731900 -0.665700 -0.145600
+vn 0.099100 0.992900 -0.066200
+vn 0.671100 0.729200 0.133500
+vn 0.731900 -0.665700 0.145600
+vn 0.116900 0.992900 -0.023200
+vn 0.568900 0.729200 0.380100
+vn 0.620400 -0.665700 0.414600
+vn 0.116900 0.992900 0.023200
+vn 0.380100 0.729200 0.568900
+vn 0.414600 -0.665700 0.620400
+vn 0.099100 0.992900 0.066200
+vn 0.133500 0.729200 0.671100
+vn 0.145600 -0.665700 0.731900
+vn 0.066200 0.992900 0.099100
+vn -0.133500 0.729200 0.671100
+vn -0.145600 -0.665700 0.731900
+vn 0.023200 0.992900 0.116900
+vn -0.380100 0.729200 0.568900
+vn -0.414600 -0.665700 0.620400
+vn -0.568900 0.729200 0.380100
+vn -0.620400 -0.665700 0.414600
+vn -0.707100 -0.707100 0.000000
+vn -0.666900 -0.731700 -0.140900
+vn 0.666900 -0.731700 -0.140900
+vn 0.707100 -0.707100 0.000000
+vn -0.671100 0.729200 0.133500
+vn -0.731900 -0.665700 0.145600
+vn -0.023200 0.992900 0.116900
+vn -0.671100 0.729200 -0.133500
+vn -0.731900 -0.665700 -0.145600
+vn 0.235400 -0.902400 -0.361000
+vn -0.568900 0.729200 -0.380100
+vn -0.620400 -0.665700 -0.414600
+vn -0.235400 -0.902400 -0.361000
+vn -0.380100 0.729200 -0.568900
+vn -0.414600 -0.665700 -0.620400
+vn -0.133500 0.729200 -0.671100
+vn -0.145600 -0.665700 -0.731900
+vn 0.133500 0.729200 -0.671100
+vn 0.145600 -0.665700 -0.731900
+vn -0.066200 0.992900 0.099100
+vn -0.023200 0.992900 -0.116900
+vn -0.066200 0.992900 -0.099100
+vn -0.099100 0.992900 -0.066200
+vn -0.116900 0.992900 -0.023200
+vn -0.116900 0.992900 0.023200
+vn -0.099100 0.992900 0.066200
+g Cylinder_Cylinder_candle
+s 1
+f 3/1/1 4/2/2 6/3/3 5/4/4
+f 5/4/4 6/3/3 8/5/5 7/6/6
+f 7/6/6 8/5/5 10/7/7 9/8/8
+f 9/8/8 10/7/7 12/9/9 11/10/10
+f 11/10/10 12/9/9 14/11/11 13/12/12
+f 13/12/12 14/11/11 16/13/13 15/14/14
+f 15/14/14 16/13/13 18/15/15 17/16/16
+f 17/16/16 18/15/15 20/17/17 19/18/18
+f 19/19/18 20/20/17 22/21/19 21/22/20
+f 21/22/20 22/21/19 24/23/21 23/24/22
+f 23/24/22 24/23/21 26/25/23 25/26/24
+f 25/26/24 26/25/23 28/27/25 27/28/26
+f 27/28/26 28/27/25 30/29/27 29/30/28
+f 29/30/28 30/29/27 32/31/29 31/32/30
+f 6/33/3 4/34/2 34/35/31 32/36/29 30/37/27 28/38/25 26/39/23 24/40/21 22/41/19 20/42/17 18/43/15 16/44/13 14/45/11 12/46/9 10/47/7 8/48/5
+f 33/49/32 34/50/31 4/2/2 3/1/1
+f 31/32/30 32/31/29 34/50/31 33/49/32
+g Cylinder_Cylinder_flame
+s off
+f 38/19/33 37/51/33 40/52/33 39/18/33
+f 2/19/34 1/51/34 36/52/34 35/18/34
+f 46/19/35 47/18/35 48/52/35 45/51/35
+f 42/19/36 43/18/36 44/52/36 41/51/36
+g Cylinder_Cylinder_back
+f 49/19/37 51/51/37 52/52/37 50/18/37
+f 51/19/38 49/51/38 114/53/38 110/22/38
+f 49/19/39 50/51/39 113/53/39 114/22/39
+f 50/19/40 52/51/40 109/53/40 113/22/40
+f 52/19/41 51/51/41 110/53/41 109/22/41
+g Cylinder_Cylinder_dish
+s 1
+f 56/49/42 60/32/43 59/54/44 55/55/45
+f 78/56/46 81/57/47 90/58/41
+f 60/32/43 64/30/48 63/59/49 59/54/44
+f 77/60/50 78/56/46 90/58/41
+f 64/30/48 68/28/51 67/61/52 63/59/49
+f 74/62/53 77/60/50 90/58/41
+f 68/28/51 72/26/54 71/63/55 67/61/52
+f 73/64/56 74/62/53 90/58/41
+f 72/26/54 76/24/57 75/65/58 71/63/55
+f 70/66/59 73/64/56 90/58/41
+f 76/24/57 80/22/60 79/67/61 75/65/58
+f 69/68/62 70/66/59 90/58/41
+f 80/22/60 84/19/63 83/69/64 79/67/61
+f 66/70/65 69/68/62 90/58/41
+f 84/18/63 88/16/66 87/71/67 83/72/64
+f 88/16/66 92/14/68 91/73/69 87/71/67
+f 106/69/70 105/74/71 102/75/72 101/65/73
+f 92/14/68 96/12/74 95/76/75 91/73/69
+f 65/77/76 66/70/65 90/58/41
+f 96/12/74 100/10/77 99/78/78 95/76/75
+f 94/65/79 93/79/40 101/80/73 102/81/72
+f 100/10/77 104/8/80 103/82/81 99/78/78
+f 97/83/82 94/79/79 102/75/72 105/74/71
+f 104/8/80 108/6/83 107/84/84 103/82/81
+f 108/6/83 112/4/85 111/85/86 107/84/84
+f 111/85/86 112/4/85 54/1/87 53/86/88
+f 53/87/88 55/88/45 89/58/39
+f 98/89/38 97/84/82 105/81/71 106/80/70
+f 56/90/42 54/91/87 65/77/76 62/92/89
+f 54/1/87 56/49/42 55/55/45 53/86/88
+f 81/57/47 82/93/90 90/58/41
+f 82/93/90 85/94/91 90/58/41
+f 85/94/91 86/95/92 90/58/41
+f 86/95/92 57/96/93 90/58/41
+f 57/96/93 58/97/94 90/58/41
+f 58/97/94 61/98/95 90/58/41
+f 61/98/95 62/92/89 90/58/41
+f 62/92/89 65/77/76 90/58/41
+f 55/88/45 59/99/44 89/58/39
+f 59/99/44 63/100/49 89/58/39
+f 63/100/49 67/101/52 89/58/39
+f 67/101/52 71/102/55 89/58/39
+f 71/102/55 75/90/58 89/58/39
+f 75/90/58 79/91/61 89/58/39
+f 79/91/61 83/103/64 89/58/39
+f 83/103/64 87/104/67 89/58/39
+f 87/104/67 91/105/69 89/58/39
+f 91/105/69 95/106/75 89/58/39
+f 95/106/75 99/107/78 89/58/39
+f 99/107/78 103/108/81 89/58/39
+f 103/108/81 107/109/84 89/58/39
+f 107/109/84 111/110/86 89/58/39
+f 111/110/86 53/87/88 89/58/39
+f 60/102/43 56/90/42 62/92/89 61/98/95
+f 64/101/48 60/102/43 61/98/95 58/97/94
+f 68/100/51 64/101/48 58/97/94 57/96/93
+f 72/99/54 68/100/51 57/96/93 86/95/92
+f 76/88/57 72/99/54 86/95/92 85/94/91
+f 80/87/60 76/88/57 85/94/91 82/93/90
+f 84/110/63 80/87/60 82/93/90 81/57/47
+f 54/91/87 112/103/85 66/70/65 65/77/76
+f 112/103/85 108/104/83 69/68/62 66/70/65
+f 108/104/83 104/105/80 70/66/59 69/68/62
+f 104/105/80 100/106/77 73/64/56 70/66/59
+f 100/106/77 96/107/74 74/62/53 73/64/56
+f 96/107/74 92/108/68 77/60/50 74/62/53
+f 92/108/68 88/109/66 78/56/46 77/60/50
+f 88/109/66 84/110/63 81/57/47 78/56/46
diff --git a/homedecor_modpack/homedecor/models/homedecor_well.obj b/homedecor_modpack/homedecor/models/homedecor_well.obj
new file mode 100644
index 0000000..beb3a1d
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_well.obj
@@ -0,0 +1,1949 @@
+# Blender v2.73 (sub 0) OBJ File: 'wellhead.blend'
+# www.blender.org
+o rope_Cylinder.006
+v 0.024590 0.811082 -0.003906
+v 0.032403 0.811082 0.003906
+v 0.032403 0.811082 -0.003906
+v 0.024590 0.640689 -0.003906
+v 0.024590 0.640689 0.003906
+v 0.032403 0.640689 0.003906
+v 0.032403 0.640689 -0.003906
+v 0.024590 0.811082 0.003906
+v 0.000000 0.811000 0.129018
+v 0.000000 0.811000 -0.120982
+v -0.032500 0.811000 0.129018
+v -0.032500 0.811000 -0.120982
+v -0.022981 0.788019 0.129018
+v -0.022981 0.788019 -0.120982
+v 0.000000 0.778500 0.129018
+v 0.000000 0.778500 -0.120982
+v 0.022981 0.788019 0.129018
+v 0.022981 0.788019 -0.120982
+v 0.032500 0.811000 0.129018
+v 0.032500 0.811000 -0.120982
+v 0.022981 0.833981 0.129018
+v 0.022981 0.833981 -0.120982
+v 0.000000 0.843500 0.129018
+v 0.000000 0.843500 -0.120982
+v -0.022981 0.833981 0.129018
+v -0.022981 0.833981 -0.120982
+v 0.028496 0.631312 0.006250
+v 0.028496 0.631312 -0.006250
+v 0.014989 0.631312 0.006250
+v 0.014989 0.631312 -0.006250
+v 0.018945 0.621761 0.006250
+v 0.018945 0.621761 -0.006250
+v 0.028496 0.617805 0.006250
+v 0.028496 0.617805 -0.006250
+v 0.038048 0.621761 0.006250
+v 0.038048 0.621761 -0.006250
+v 0.042004 0.631312 0.006250
+v 0.042004 0.631312 -0.006250
+v 0.038048 0.640864 0.006250
+v 0.038048 0.640864 -0.006250
+v 0.028496 0.644820 0.006250
+v 0.028496 0.644820 -0.006250
+v 0.018945 0.640864 0.006250
+v 0.018945 0.640864 -0.006250
+vt 0.937500 0.937500
+vt 0.960843 0.927830
+vt 0.960844 0.947169
+vt 0.062500 1.000000
+vt -0.000000 1.000000
+vt -0.000000 0.000000
+vt 0.062500 0.000000
+vt 0.125000 1.000000
+vt 0.125000 0.000000
+vt 0.187500 1.000000
+vt 0.187500 0.000000
+vt 0.250000 1.000000
+vt 0.250000 0.000000
+vt 0.874998 0.124999
+vt 0.921529 0.012671
+vt 0.987329 0.078474
+vt 0.987329 0.171530
+vt 0.625000 1.000000
+vt 0.625000 -0.000000
+vt 0.687500 -0.000000
+vt 0.687500 1.000000
+vt 0.750000 -0.000000
+vt 0.750000 1.000000
+vt 0.921525 0.237329
+vt 0.828474 0.012672
+vt 0.312500 1.000000
+vt 0.312500 -0.000000
+vt 0.375000 -0.000000
+vt 0.375000 1.000000
+vt 0.828470 0.237326
+vt 0.762670 0.078471
+vt 0.437500 -0.000000
+vt 0.437500 1.000000
+vt 0.762670 0.171526
+vt 0.500000 -0.000000
+vt 0.500000 1.000000
+vt 0.562500 -0.000000
+vt 0.562500 1.000000
+vt 0.937500 0.875001
+vt 0.914156 0.884668
+vt 0.914156 0.865331
+vt 0.812500 0.875000
+vt 0.875000 0.875000
+vt 0.875000 0.937500
+vt 0.812500 0.937500
+vt 0.947169 0.960844
+vt 0.927831 0.898343
+vt 0.875000 1.000000
+vt 0.812500 1.000000
+vt 0.927831 0.960844
+vt 0.947169 0.898343
+vt 0.812500 0.500000
+vt 0.875000 0.500000
+vt 0.875000 0.562500
+vt 0.812500 0.562500
+vt 0.914156 0.947169
+vt 0.960843 0.884670
+vt 0.875000 0.625000
+vt 0.812500 0.625000
+vt 0.914156 0.927832
+vt 0.960844 0.865331
+vt 0.875000 0.687500
+vt 0.812500 0.687500
+vt 0.927831 0.914158
+vt 0.947169 0.851656
+vt 0.875000 0.750000
+vt 0.812500 0.750000
+vt 0.947169 0.914157
+vt 0.927831 0.851657
+vt 0.875000 0.812500
+vt 0.812500 0.812500
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.923900 -0.382700 0.000000
+vn -0.382700 -0.923900 0.000000
+vn 0.382700 -0.923900 0.000000
+vn 0.923900 -0.382700 0.000000
+vn 0.923900 0.382700 -0.000000
+vn 0.382700 0.923900 -0.000000
+vn -0.382700 0.923900 -0.000000
+vn -0.923900 0.382700 0.000000
+g rope_Cylinder.006_rope
+s off
+f 27/1/1 29/2/1 31/3/1
+f 1/4/2 3/5/2 7/6/2 4/7/2
+f 8/8/3 1/4/3 4/7/3 5/9/3
+f 2/10/1 8/8/1 5/9/1 6/11/1
+f 3/12/4 2/10/4 6/11/4 7/13/4
+f 9/14/1 11/15/1 13/16/1
+f 10/14/2 14/16/2 12/17/2
+f 11/18/5 12/19/5 14/20/5 13/21/5
+f 9/14/1 13/16/1 15/17/1
+f 10/14/2 16/15/2 14/16/2
+f 13/21/6 14/20/6 16/22/6 15/23/6
+f 9/14/1 15/17/1 17/24/1
+f 10/14/2 18/25/2 16/15/2
+f 15/26/7 16/27/7 18/28/7 17/29/7
+f 9/14/1 17/24/1 19/30/1
+f 10/14/2 20/31/2 18/25/2
+f 17/29/8 18/28/8 20/32/8 19/33/8
+f 9/14/1 19/30/1 21/34/1
+f 10/14/2 22/34/2 20/31/2
+f 19/33/9 20/32/9 22/35/9 21/36/9
+f 9/14/1 21/34/1 23/31/1
+f 10/14/2 24/30/2 22/34/2
+f 21/36/10 22/35/10 24/37/10 23/38/10
+f 9/14/1 23/31/1 25/25/1
+f 10/14/2 26/24/2 24/30/2
+f 23/38/11 24/37/11 26/37/11 25/38/11
+f 9/14/1 25/25/1 11/15/1
+f 10/14/2 12/17/2 26/24/2
+f 25/38/12 26/37/12 12/19/12 11/18/12
+f 28/39/2 32/40/2 30/41/2
+f 29/42/5 30/43/5 32/44/5 31/45/5
+f 27/1/1 31/3/1 33/46/1
+f 28/39/2 34/47/2 32/40/2
+f 31/45/6 32/44/6 34/48/6 33/49/6
+f 27/1/1 33/46/1 35/50/1
+f 28/39/2 36/51/2 34/47/2
+f 33/52/7 34/53/7 36/54/7 35/55/7
+f 27/1/1 35/50/1 37/56/1
+f 28/39/2 38/57/2 36/51/2
+f 35/55/8 36/54/8 38/58/8 37/59/8
+f 27/1/1 37/56/1 39/60/1
+f 28/39/2 40/61/2 38/57/2
+f 37/59/9 38/58/9 40/62/9 39/63/9
+f 27/1/1 39/60/1 41/64/1
+f 28/39/2 42/65/2 40/61/2
+f 39/63/10 40/62/10 42/66/10 41/67/10
+f 27/1/1 41/64/1 43/68/1
+f 28/39/2 44/69/2 42/65/2
+f 41/67/11 42/66/11 44/70/11 43/71/11
+f 27/1/1 43/68/1 29/2/1
+f 28/39/2 30/41/2 44/69/2
+f 43/71/12 44/70/12 30/43/12 29/42/12
+o axle-handle-metal_Cylinder.005
+v 0.028496 0.637755 0.000000
+v 0.020188 0.634877 0.000000
+v 0.020188 0.629121 0.000000
+v 0.028496 0.626242 0.000000
+v 0.036805 0.629121 0.000000
+v 0.036805 0.634877 0.000000
+v 0.028496 0.623713 -0.085214
+v 0.020682 0.621369 -0.082958
+v 0.020682 0.616680 -0.078446
+v 0.028496 0.614336 -0.076190
+v 0.036311 0.616680 -0.078446
+v 0.036311 0.621369 -0.082958
+v 0.028496 0.586063 -0.146955
+v 0.021321 0.584820 -0.143367
+v 0.021321 0.582335 -0.136193
+v 0.028496 0.581092 -0.132605
+v 0.035671 0.582335 -0.136193
+v 0.035671 0.584820 -0.143367
+v 0.028496 0.535156 -0.169239
+v 0.021711 0.535156 -0.165322
+v 0.021711 0.535156 -0.157486
+v 0.028496 0.535156 -0.153569
+v 0.035282 0.535156 -0.157486
+v 0.035282 0.535156 -0.165322
+v 0.028496 0.484384 -0.146566
+v 0.021711 0.485560 -0.143173
+v 0.021711 0.487910 -0.136387
+v 0.028496 0.489086 -0.132995
+v 0.035282 0.487910 -0.136387
+v 0.035282 0.485560 -0.143173
+v 0.028496 0.465087 -0.114403
+v 0.021711 0.466709 -0.111754
+v 0.021711 0.469953 -0.106458
+v 0.028496 0.471575 -0.103810
+v 0.035282 0.469953 -0.106458
+v 0.035282 0.466709 -0.111754
+v 0.028496 0.465373 0.114879
+v 0.021711 0.466988 0.112220
+v 0.021711 0.470219 0.106901
+v 0.028496 0.471834 0.104242
+v 0.035282 0.470219 0.106901
+v 0.035282 0.466988 0.112220
+v 0.028496 0.484384 0.146566
+v 0.021711 0.485560 0.143173
+v 0.021711 0.487910 0.136387
+v 0.028496 0.489086 0.132995
+v 0.035282 0.487910 0.136387
+v 0.035282 0.485560 0.143173
+v 0.028496 0.535156 0.169239
+v 0.021711 0.535156 0.165322
+v 0.021711 0.535156 0.157486
+v 0.028496 0.535156 0.153569
+v 0.035282 0.535156 0.157486
+v 0.035282 0.535156 0.165322
+v 0.028496 0.586063 0.146955
+v 0.021321 0.584820 0.143367
+v 0.021321 0.582335 0.136193
+v 0.028496 0.581092 0.132605
+v 0.035671 0.582335 0.136193
+v 0.035671 0.584820 0.143367
+v 0.028496 0.623713 0.085214
+v 0.020682 0.621369 0.082958
+v 0.020682 0.616680 0.078446
+v 0.028496 0.614336 0.076190
+v 0.036311 0.616680 0.078446
+v 0.036311 0.621369 0.082958
+v -0.155415 0.834193 -0.497881
+v -0.023155 0.834193 -0.497881
+v -0.023155 0.786213 -0.497881
+v -0.155415 0.786213 -0.497881
+v -0.155415 0.834193 -0.475314
+v -0.023155 0.834193 -0.475314
+v -0.155415 0.786213 -0.475314
+v -0.023155 0.786213 -0.475314
+v 0.024825 0.834193 -0.497881
+v 0.024825 0.786213 -0.497881
+v 0.157085 0.834193 -0.497881
+v 0.157085 0.786213 -0.497881
+v 0.157085 0.834193 -0.475314
+v 0.024825 0.834193 -0.475314
+v 0.157085 0.786213 -0.475314
+v 0.024825 0.786213 -0.475314
+v -0.023155 0.966453 -0.475314
+v 0.024825 0.966453 -0.475314
+v -0.023155 0.966453 -0.497881
+v 0.024825 0.966453 -0.497881
+v -0.023155 0.653953 -0.475314
+v 0.024825 0.653953 -0.475314
+v -0.023155 0.653953 -0.497881
+v 0.024825 0.653953 -0.497881
+v 0.000000 0.622500 -0.485000
+v 0.000000 0.632019 -0.462019
+v 0.000000 0.655000 -0.452500
+v 0.000000 0.677981 -0.462019
+v 0.000000 0.687500 -0.485000
+v 0.000000 0.677981 -0.507981
+v 0.000000 0.655000 -0.517500
+v 0.000000 0.632019 -0.507981
+v 0.093750 0.647620 -0.485000
+v 0.088991 0.655864 -0.462019
+v 0.077500 0.675766 -0.452500
+v 0.066010 0.695668 -0.462019
+v 0.061250 0.703912 -0.485000
+v 0.066010 0.695668 -0.507981
+v 0.077500 0.675766 -0.517500
+v 0.088991 0.655864 -0.507981
+v 0.162380 0.716250 -0.485000
+v 0.154136 0.721009 -0.462019
+v 0.134234 0.732500 -0.452500
+v 0.114332 0.743990 -0.462019
+v 0.106088 0.748750 -0.485000
+v 0.114332 0.743990 -0.507981
+v 0.134234 0.732500 -0.517500
+v 0.154136 0.721009 -0.507981
+v 0.187500 0.810000 -0.485000
+v 0.177981 0.810000 -0.462019
+v 0.155000 0.810000 -0.452500
+v 0.132019 0.810000 -0.462019
+v 0.122500 0.810000 -0.485000
+v 0.132019 0.810000 -0.507981
+v 0.155000 0.810000 -0.517500
+v 0.177981 0.810000 -0.507981
+v 0.162380 0.903750 -0.485000
+v 0.154136 0.898990 -0.462019
+v 0.134234 0.887500 -0.452500
+v 0.114332 0.876009 -0.462019
+v 0.106088 0.871250 -0.485000
+v 0.114332 0.876009 -0.507981
+v 0.134234 0.887500 -0.517500
+v 0.154136 0.898990 -0.507981
+v 0.093750 0.972380 -0.485000
+v 0.088991 0.964136 -0.462019
+v 0.077500 0.944234 -0.452500
+v 0.066010 0.924332 -0.462019
+v 0.061250 0.916088 -0.485000
+v 0.066010 0.924332 -0.507981
+v 0.077500 0.944234 -0.517500
+v 0.088991 0.964136 -0.507981
+v 0.000000 0.997500 -0.485000
+v 0.000000 0.987981 -0.462019
+v 0.000000 0.965000 -0.452500
+v 0.000000 0.942019 -0.462019
+v 0.000000 0.932500 -0.485000
+v 0.000000 0.942019 -0.507981
+v 0.000000 0.965000 -0.517500
+v 0.000000 0.987981 -0.507981
+v -0.093750 0.972380 -0.485000
+v -0.088990 0.964136 -0.462019
+v -0.077500 0.944234 -0.452500
+v -0.066009 0.924332 -0.462019
+v -0.061250 0.916088 -0.485000
+v -0.066009 0.924332 -0.507981
+v -0.077500 0.944234 -0.517500
+v -0.088990 0.964136 -0.507981
+v -0.162380 0.903750 -0.485000
+v -0.154136 0.898990 -0.462019
+v -0.134234 0.887500 -0.452500
+v -0.114332 0.876009 -0.462019
+v -0.106088 0.871250 -0.485000
+v -0.114332 0.876009 -0.507981
+v -0.134234 0.887500 -0.517500
+v -0.154136 0.898990 -0.507981
+v -0.187500 0.810000 -0.485000
+v -0.177981 0.810000 -0.462019
+v -0.155000 0.810000 -0.452500
+v -0.132019 0.810000 -0.462019
+v -0.122500 0.810000 -0.485000
+v -0.132019 0.810000 -0.507981
+v -0.155000 0.810000 -0.517500
+v -0.177981 0.810000 -0.507981
+v -0.162380 0.716250 -0.485000
+v -0.154136 0.721009 -0.462019
+v -0.134234 0.732500 -0.452500
+v -0.114332 0.743990 -0.462019
+v -0.106088 0.748750 -0.485000
+v -0.114332 0.743990 -0.507981
+v -0.134234 0.732500 -0.517500
+v -0.154136 0.721009 -0.507981
+v -0.093750 0.647620 -0.485000
+v -0.088990 0.655864 -0.462019
+v -0.077500 0.675766 -0.452500
+v -0.066010 0.695668 -0.462019
+v -0.061250 0.703912 -0.485000
+v -0.066010 0.695668 -0.507981
+v -0.077500 0.675766 -0.517500
+v -0.088990 0.655864 -0.507981
+v 0.000000 0.831349 -0.475470
+v 0.000000 0.831349 0.393180
+v 0.018042 0.820932 -0.475470
+v 0.018042 0.820932 0.393180
+v 0.018042 0.800099 -0.475470
+v 0.018042 0.800099 0.393180
+v -0.000000 0.789682 -0.475470
+v -0.000000 0.789682 0.393180
+v -0.018042 0.800099 -0.475470
+v -0.018042 0.800099 0.393180
+v -0.018042 0.820932 -0.475470
+v -0.018042 0.820932 0.393180
+vt 0.562500 0.312500
+vt 0.562500 0.500000
+vt 0.500000 0.500000
+vt 0.500000 0.312500
+vt 0.437500 0.500000
+vt 0.437500 0.312500
+vt 0.375000 0.500000
+vt 0.375000 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.500000
+vt 0.687500 0.500000
+vt 0.687500 0.312500
+vt 0.625000 0.500000
+vt 0.625000 0.312500
+vt 0.562500 0.687500
+vt 0.500000 0.687500
+vt 0.437500 0.687500
+vt 0.375000 0.687500
+vt 0.750000 0.687500
+vt 0.687500 0.687500
+vt 0.625000 0.687500
+vt 0.562500 0.812500
+vt 0.500000 0.812500
+vt 0.437500 0.812500
+vt 0.375000 0.812500
+vt 0.750000 0.812500
+vt 0.687500 0.812500
+vt 0.625000 0.812500
+vt 0.562500 0.937500
+vt 0.500000 0.937500
+vt 0.437500 0.937500
+vt 0.375000 0.937500
+vt 0.750000 0.937500
+vt 0.687500 0.937500
+vt 0.625000 0.937500
+vt 0.562500 1.000000
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.375000 1.000000
+vt 0.750000 1.000000
+vt 0.687500 1.000000
+vt 0.625000 1.000000
+vt 0.562500 0.375000
+vt 0.562500 0.437500
+vt 0.500000 0.437500
+vt 0.500000 0.375000
+vt 0.437500 0.437500
+vt 0.437500 0.375000
+vt 0.375000 0.437500
+vt 0.375000 0.375000
+vt 0.750000 0.375000
+vt 0.750000 0.437500
+vt 0.687500 0.437500
+vt 0.687500 0.375000
+vt 0.625000 0.437500
+vt 0.625000 0.375000
+vt 0.562500 0.562500
+vt 0.500000 0.562500
+vt 0.437500 0.562500
+vt 0.375000 0.562500
+vt 0.750000 0.562500
+vt 0.687500 0.562500
+vt 0.625000 0.562500
+vt 0.250000 0.687500
+vt 0.312500 0.687500
+vt 0.312500 0.750000
+vt 0.937500 0.750000
+vt 0.937500 0.500000
+vt 1.000000 0.500000
+vt 1.000000 0.750000
+vt 0.812500 0.500000
+vt 0.875000 0.500000
+vt 0.875000 0.750000
+vt 0.812500 0.750000
+vt 0.812500 1.000000
+vt 0.750000 0.750000
+vt 0.937500 1.000000
+vt 0.875000 1.000000
+vt 0.250000 0.750000
+vt 1.000000 1.000000
+vt -0.000000 0.250000
+vt 0.125000 0.250000
+vt 0.125000 0.312500
+vt -0.000000 0.312500
+vt 0.125000 0.375000
+vt -0.000000 0.375000
+vt 0.125000 0.437500
+vt -0.000000 0.437500
+vt 0.125000 0.500000
+vt -0.000000 0.500000
+vt -0.000000 -0.000000
+vt 0.125000 -0.000000
+vt 0.125000 0.062500
+vt -0.000000 0.062500
+vt 0.125000 0.125000
+vt -0.000000 0.125000
+vt 0.125000 0.187500
+vt -0.000000 0.187500
+vt 0.250000 0.250000
+vt 0.250000 0.312500
+vt 0.250000 0.375000
+vt 0.250000 0.437500
+vt 0.250000 0.500000
+vt 0.250000 -0.000000
+vt 0.250000 0.062500
+vt 0.250000 0.125000
+vt 0.250000 0.187500
+vt 0.375000 0.250000
+vt 0.375000 -0.000000
+vt 0.375000 0.062500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.500000 0.250000
+vt 0.500000 -0.000000
+vt 0.500000 0.062500
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.625000 0.250000
+vt 0.625000 -0.000000
+vt 0.625000 0.062500
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.750000 0.250000
+vt 0.750000 -0.000000
+vt 0.750000 0.062500
+vt 0.750000 0.125000
+vt 0.750000 0.187500
+vt 0.187500 -0.000000
+vt 0.187500 1.000000
+vt 0.125000 1.000000
+vt 0.062500 1.000000
+vt 0.062500 -0.000000
+vt -0.000000 1.000000
+vt 0.312500 1.000000
+vt 0.312500 -0.000000
+vt 0.250000 1.000000
+vt -0.000000 0.750000
+vt -0.000000 0.687500
+vt 0.562500 0.750000
+vt 0.312500 0.437500
+vn -0.323900 0.933500 -0.153900
+vn -1.000000 -0.002500 -0.005700
+vn -0.323300 -0.934900 0.146200
+vn 0.323300 -0.934900 0.146200
+vn 1.000000 -0.002500 -0.005700
+vn 0.323900 0.933500 -0.153900
+vn -0.377200 0.790700 -0.482200
+vn -0.999900 -0.008900 -0.005500
+vn -0.374700 -0.798700 0.470800
+vn 0.374700 -0.798700 0.470800
+vn 0.999900 -0.008900 -0.005500
+vn 0.377200 0.790700 -0.482200
+vn -0.467000 0.354500 -0.810100
+vn -1.000000 -0.007500 -0.001200
+vn -0.465600 -0.367400 0.805200
+vn 0.465600 -0.367400 0.805200
+vn 1.000000 -0.007500 -0.001200
+vn 0.467000 0.354500 -0.810100
+vn -0.466300 -0.360700 -0.807700
+vn -1.000000 0.000000 -0.000000
+vn -0.466300 0.360700 0.807700
+vn 0.466300 0.360700 0.807700
+vn 1.000000 0.000000 0.000000
+vn 0.466300 -0.360700 -0.807700
+vn -0.376000 -0.794600 -0.476700
+vn -0.376000 0.794600 0.476700
+vn 0.376000 0.794600 0.476700
+vn 0.376000 -0.794600 -0.476700
+vn -0.376000 -0.794600 0.476700
+vn -0.376000 0.794600 -0.476700
+vn 0.376000 0.794600 -0.476700
+vn 0.376000 -0.794600 0.476700
+vn -0.466300 -0.360700 0.807700
+vn -0.466300 0.360700 -0.807700
+vn 0.466300 0.360700 -0.807700
+vn 0.466300 -0.360700 0.807700
+vn -0.467000 0.354500 0.810100
+vn -1.000000 -0.007500 0.001200
+vn -0.465600 -0.367400 -0.805200
+vn 0.465600 -0.367400 -0.805200
+vn 1.000000 -0.007500 0.001200
+vn 0.467000 0.354500 0.810100
+vn -0.377200 0.790700 0.482200
+vn -0.999900 -0.008900 0.005500
+vn -0.374700 -0.798700 -0.470800
+vn 0.374700 -0.798700 -0.470800
+vn 0.999900 -0.008900 0.005500
+vn 0.377200 0.790700 0.482200
+vn -0.323900 0.933500 0.153900
+vn -1.000000 -0.002500 0.005700
+vn -0.323300 -0.934900 -0.146200
+vn 0.323300 -0.934900 -0.146200
+vn 1.000000 -0.002500 0.005700
+vn 0.323900 0.933500 0.153900
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.240300 -0.896800 0.371500
+vn 0.102000 -0.380700 0.919100
+vn -0.102000 0.380700 0.919100
+vn -0.240300 0.896800 0.371500
+vn -0.240300 0.896800 -0.371500
+vn -0.102000 0.380700 -0.919100
+vn 0.102000 -0.380700 -0.919100
+vn 0.240300 -0.896800 -0.371500
+vn 0.656500 -0.656500 0.371500
+vn 0.278700 -0.278700 0.919100
+vn -0.278700 0.278700 0.919100
+vn -0.656500 0.656500 0.371500
+vn -0.656500 0.656500 -0.371500
+vn -0.278700 0.278700 -0.919100
+vn 0.278700 -0.278700 -0.919100
+vn 0.656500 -0.656500 -0.371500
+vn 0.896800 -0.240300 0.371500
+vn 0.380700 -0.102000 0.919100
+vn -0.380700 0.102000 0.919100
+vn -0.896800 0.240300 0.371500
+vn -0.896800 0.240300 -0.371500
+vn -0.380700 0.102000 -0.919100
+vn 0.380700 -0.102000 -0.919100
+vn 0.896800 -0.240300 -0.371500
+vn 0.896800 0.240300 0.371500
+vn 0.380700 0.102000 0.919100
+vn -0.380700 -0.102000 0.919100
+vn -0.896800 -0.240300 0.371500
+vn -0.896800 -0.240300 -0.371500
+vn -0.380700 -0.102000 -0.919100
+vn 0.380700 0.102000 -0.919100
+vn 0.896800 0.240300 -0.371500
+vn 0.656500 0.656500 0.371500
+vn 0.278700 0.278700 0.919100
+vn -0.278700 -0.278700 0.919100
+vn -0.656500 -0.656500 0.371500
+vn -0.656500 -0.656500 -0.371500
+vn -0.278700 -0.278700 -0.919100
+vn 0.278700 0.278700 -0.919100
+vn 0.656500 0.656500 -0.371500
+vn 0.240300 0.896800 0.371500
+vn 0.102000 0.380700 0.919100
+vn -0.102000 -0.380700 0.919100
+vn -0.240300 -0.896800 0.371500
+vn -0.240300 -0.896800 -0.371500
+vn -0.102000 -0.380700 -0.919100
+vn 0.102000 0.380700 -0.919100
+vn 0.240300 0.896800 -0.371500
+vn 0.500000 0.866000 0.000000
+vn 0.500000 -0.866000 0.000000
+vn -0.500000 -0.866000 0.000000
+vn -0.500000 0.866000 0.000000
+g axle-handle-metal_Cylinder.005_metal
+s off
+f 45/72/13 51/73/13 52/74/13 46/75/13
+f 46/75/14 52/74/14 53/76/14 47/77/14
+f 47/77/15 53/76/15 54/78/15 48/79/15
+f 48/80/16 54/81/16 55/82/16 49/83/16
+f 49/83/17 55/82/17 56/84/17 50/85/17
+f 45/72/18 50/85/18 56/84/18 51/73/18
+f 51/73/19 57/86/19 58/87/19 52/74/19
+f 52/74/20 58/87/20 59/88/20 53/76/20
+f 53/76/21 59/88/21 60/89/21 54/78/21
+f 54/81/22 60/90/22 61/91/22 55/82/22
+f 55/82/23 61/91/23 62/92/23 56/84/23
+f 56/84/24 62/92/24 57/86/24 51/73/24
+f 57/86/25 63/93/25 64/94/25 58/87/25
+f 58/87/26 64/94/26 65/95/26 59/88/26
+f 59/88/27 65/95/27 66/96/27 60/89/27
+f 60/90/28 66/97/28 67/98/28 61/91/28
+f 61/91/29 67/98/29 68/99/29 62/92/29
+f 62/92/30 68/99/30 63/93/30 57/86/30
+f 63/93/31 69/100/31 70/101/31 64/94/31
+f 64/94/32 70/101/32 71/102/32 65/95/32
+f 65/95/33 71/102/33 72/103/33 66/96/33
+f 66/97/34 72/104/34 73/105/34 67/98/34
+f 67/98/35 73/105/35 74/106/35 68/99/35
+f 68/99/36 74/106/36 69/100/36 63/93/36
+f 69/100/37 75/107/37 76/108/37 70/101/37
+f 70/101/32 76/108/32 77/109/32 71/102/32
+f 71/102/38 77/109/38 78/110/38 72/103/38
+f 72/104/39 78/111/39 79/112/39 73/105/39
+f 73/105/35 79/112/35 80/113/35 74/106/35
+f 74/106/40 80/113/40 75/107/40 69/100/40
+f 81/114/41 87/115/41 88/116/41 82/117/41
+f 82/117/32 88/116/32 89/118/32 83/119/32
+f 83/119/42 89/118/42 90/120/42 84/121/42
+f 84/122/43 90/123/43 91/124/43 85/125/43
+f 85/125/35 91/124/35 92/126/35 86/127/35
+f 86/127/44 92/126/44 87/115/44 81/114/44
+f 87/115/45 93/128/45 94/129/45 88/116/45
+f 88/116/32 94/129/32 95/130/32 89/118/32
+f 89/118/46 95/130/46 96/131/46 90/120/46
+f 90/123/47 96/132/47 97/133/47 91/124/47
+f 91/124/35 97/133/35 98/134/35 92/126/35
+f 92/126/48 98/134/48 93/128/48 87/115/48
+f 93/128/49 99/86/49 100/87/49 94/129/49
+f 94/129/50 100/87/50 101/88/50 95/130/50
+f 95/130/51 101/88/51 102/89/51 96/131/51
+f 96/132/52 102/90/52 103/91/52 97/133/52
+f 97/133/53 103/91/53 104/92/53 98/134/53
+f 98/134/54 104/92/54 99/86/54 93/128/54
+f 99/86/55 105/93/55 106/94/55 100/87/55
+f 100/87/56 106/94/56 107/95/56 101/88/56
+f 101/88/57 107/95/57 108/96/57 102/89/57
+f 102/90/58 108/97/58 109/98/58 103/91/58
+f 103/91/59 109/98/59 110/99/59 104/92/59
+f 104/92/60 110/99/60 105/93/60 99/86/60
+f 105/93/61 45/107/61 46/108/61 106/94/61
+f 106/94/62 46/108/62 47/109/62 107/95/62
+f 107/95/63 47/109/63 48/110/63 108/96/63
+f 108/97/64 48/111/64 49/112/64 109/98/64
+f 109/98/65 49/112/65 50/113/65 110/99/65
+f 110/99/66 50/113/66 45/107/66 105/93/66
+f 113/135/67 112/136/67 119/137/67
+f 112/138/68 111/139/68 115/140/68 116/141/68
+f 117/142/69 114/143/69 113/144/69 118/145/69
+f 123/146/68 121/111/68 119/147/68 124/145/68
+f 120/138/69 122/148/69 125/149/69 126/144/69
+f 118/150/70 126/135/70 124/136/70
+f 127/151/32 129/148/32 112/138/32 116/141/32
+f 119/147/35 130/81/35 128/142/35 124/145/35
+f 113/144/32 133/149/32 131/146/32 118/145/32
+f 132/143/35 134/139/35 120/138/35 126/144/35
+f 135/152/71 143/153/71 144/154/71 136/155/71
+f 136/155/72 144/154/72 145/156/72 137/157/72
+f 137/157/73 145/156/73 146/158/73 138/159/73
+f 138/159/74 146/158/74 147/160/74 139/161/74
+f 139/162/75 147/163/75 148/164/75 140/165/75
+f 140/165/76 148/164/76 149/166/76 141/167/76
+f 141/167/77 149/166/77 150/168/77 142/169/77
+f 135/152/78 142/169/78 150/168/78 143/153/78
+f 143/153/79 151/170/79 152/171/79 144/154/79
+f 144/154/80 152/171/80 153/172/80 145/156/80
+f 145/156/81 153/172/81 154/173/81 146/158/81
+f 146/158/82 154/173/82 155/174/82 147/160/82
+f 147/163/83 155/175/83 156/176/83 148/164/83
+f 148/164/84 156/176/84 157/177/84 149/166/84
+f 149/166/85 157/177/85 158/178/85 150/168/85
+f 150/168/86 158/178/86 151/170/86 143/153/86
+f 151/170/87 159/179/87 160/79/87 152/171/87
+f 152/171/88 160/79/88 161/121/88 153/172/88
+f 153/172/89 161/121/89 162/120/89 154/173/89
+f 154/173/90 162/120/90 163/78/90 155/174/90
+f 155/175/91 163/180/91 164/181/91 156/176/91
+f 156/176/92 164/181/92 165/182/92 157/177/92
+f 157/177/93 165/182/93 166/183/93 158/178/93
+f 158/178/94 166/183/94 159/179/94 151/170/94
+f 159/179/95 167/184/95 168/75/95 160/79/95
+f 160/79/96 168/75/96 169/117/96 161/121/96
+f 161/121/97 169/117/97 170/116/97 162/120/97
+f 162/120/98 170/116/98 171/74/98 163/78/98
+f 163/180/99 171/185/99 172/186/99 164/181/99
+f 164/181/100 172/186/100 173/187/100 165/182/100
+f 165/182/101 173/187/101 174/188/101 166/183/101
+f 166/183/102 174/188/102 167/184/102 159/179/102
+f 167/184/103 175/189/103 176/85/103 168/75/103
+f 168/75/104 176/85/104 177/127/104 169/117/104
+f 169/117/105 177/127/105 178/126/105 170/116/105
+f 170/116/106 178/126/106 179/84/106 171/74/106
+f 171/185/107 179/190/107 180/191/107 172/186/107
+f 172/186/108 180/191/108 181/192/108 173/187/108
+f 173/187/109 181/192/109 182/193/109 174/188/109
+f 174/188/110 182/193/110 175/189/110 167/184/110
+f 175/189/111 183/194/111 184/80/111 176/85/111
+f 176/85/112 184/80/112 185/122/112 177/127/112
+f 177/127/113 185/122/113 186/123/113 178/126/113
+f 178/126/114 186/123/114 187/81/114 179/84/114
+f 179/190/115 187/195/115 188/196/115 180/191/115
+f 180/191/116 188/196/116 189/197/116 181/192/116
+f 181/192/117 189/197/117 190/198/117 182/193/117
+f 182/193/118 190/198/118 183/194/118 175/189/118
+f 183/152/74 191/153/74 192/154/74 184/155/74
+f 184/155/73 192/154/73 193/156/73 185/157/73
+f 185/157/72 193/156/72 194/158/72 186/159/72
+f 186/159/71 194/158/71 195/160/71 187/161/71
+f 187/162/78 195/163/78 196/164/78 188/165/78
+f 188/165/77 196/164/77 197/166/77 189/167/77
+f 189/167/76 197/166/76 198/168/76 190/169/76
+f 190/169/75 198/168/75 191/153/75 183/152/75
+f 191/153/82 199/170/82 200/171/82 192/154/82
+f 192/154/81 200/171/81 201/172/81 193/156/81
+f 193/156/80 201/172/80 202/173/80 194/158/80
+f 194/158/79 202/173/79 203/174/79 195/160/79
+f 195/163/86 203/175/86 204/176/86 196/164/86
+f 196/164/85 204/176/85 205/177/85 197/166/85
+f 197/166/84 205/177/84 206/178/84 198/168/84
+f 198/168/83 206/178/83 199/170/83 191/153/83
+f 199/170/90 207/179/90 208/79/90 200/171/90
+f 200/171/89 208/79/89 209/121/89 201/172/89
+f 201/172/88 209/121/88 210/120/88 202/173/88
+f 202/173/87 210/120/87 211/78/87 203/174/87
+f 203/175/94 211/180/94 212/181/94 204/176/94
+f 204/176/93 212/181/93 213/182/93 205/177/93
+f 205/177/92 213/182/92 214/183/92 206/178/92
+f 206/178/91 214/183/91 207/179/91 199/170/91
+f 207/179/98 215/184/98 216/75/98 208/79/98
+f 208/79/97 216/75/97 217/117/97 209/121/97
+f 209/121/96 217/117/96 218/116/96 210/120/96
+f 210/120/95 218/116/95 219/74/95 211/78/95
+f 211/180/102 219/185/102 220/186/102 212/181/102
+f 212/181/101 220/186/101 221/187/101 213/182/101
+f 213/182/100 221/187/100 222/188/100 214/183/100
+f 214/183/99 222/188/99 215/184/99 207/179/99
+f 215/184/106 223/189/106 224/85/106 216/75/106
+f 216/75/105 224/85/105 225/127/105 217/117/105
+f 217/117/104 225/127/104 226/126/104 218/116/104
+f 218/116/103 226/126/103 227/84/103 219/74/103
+f 219/185/110 227/190/110 228/191/110 220/186/110
+f 220/186/109 228/191/109 229/192/109 221/187/109
+f 221/187/108 229/192/108 230/193/108 222/188/108
+f 222/188/107 230/193/107 223/189/107 215/184/107
+f 223/189/114 135/194/114 136/80/114 224/85/114
+f 224/85/113 136/80/113 137/122/113 225/127/113
+f 225/127/112 137/122/112 138/123/112 226/126/112
+f 226/126/111 138/123/111 139/81/111 227/84/111
+f 227/190/118 139/195/118 140/196/118 228/191/118
+f 228/191/117 140/196/117 141/197/117 229/192/117
+f 229/192/116 141/197/116 142/198/116 230/193/116
+f 230/193/115 142/198/115 135/194/115 223/189/115
+f 231/199/119 232/200/119 234/201/119 233/163/119
+f 233/163/35 234/201/35 236/202/35 235/203/35
+f 235/203/120 236/202/120 238/204/120 237/162/120
+f 237/180/121 238/110/121 240/205/121 239/206/121
+f 241/175/122 242/207/122 232/200/122 231/199/122
+f 239/206/32 240/205/32 242/207/32 241/175/32
+f 120/150/67 134/208/67 133/209/67
+f 121/205/67 122/207/67 120/150/67
+f 129/86/67 130/210/67 119/137/67
+f 119/137/67 121/205/67 120/150/67
+f 120/150/67 133/209/67 113/135/67
+f 113/135/67 114/173/67 111/211/67
+f 112/136/67 129/86/67 119/137/67
+f 113/135/67 111/211/67 112/136/67
+f 119/137/67 120/150/67 113/135/67
+f 115/205/70 117/207/70 118/150/70
+f 128/86/70 127/210/70 116/137/70
+f 116/137/70 115/205/70 118/150/70
+f 118/150/70 131/208/70 132/209/70
+f 126/135/70 125/173/70 123/211/70
+f 118/150/70 132/209/70 126/135/70
+f 124/136/70 116/137/70 118/150/70
+f 126/135/70 123/211/70 124/136/70
+f 124/136/70 128/86/70 116/137/70
+o water_Cylinder.004
+v 0.000000 0.000000 -0.346275
+v 0.067555 0.000000 -0.339621
+v 0.132514 0.000000 -0.319916
+v 0.192380 0.000000 -0.287917
+v 0.244853 0.000000 -0.244853
+v 0.287917 0.000000 -0.192380
+v 0.319916 0.000000 -0.132514
+v 0.339621 0.000000 -0.067555
+v 0.346275 0.000000 -0.000000
+v 0.339621 0.000000 0.067555
+v 0.319916 0.000000 0.132514
+v 0.287917 0.000000 0.192380
+v 0.244853 0.000000 0.244853
+v 0.192380 0.000000 0.287917
+v 0.132514 0.000000 0.319916
+v 0.067555 0.000000 0.339621
+v -0.000000 0.000000 0.346275
+v -0.067555 0.000000 0.339621
+v -0.132514 0.000000 0.319916
+v -0.192380 0.000000 0.287917
+v -0.244854 0.000000 0.244853
+v -0.287917 0.000000 0.192380
+v -0.319917 0.000000 0.132513
+v -0.339622 0.000000 0.067555
+v -0.346275 0.000000 -0.000000
+v -0.339621 0.000000 -0.067555
+v -0.319916 0.000000 -0.132514
+v -0.287917 0.000000 -0.192380
+v -0.244853 0.000000 -0.244854
+v -0.192380 0.000000 -0.287917
+v -0.132513 0.000000 -0.319917
+v -0.067554 0.000000 -0.339622
+v -0.000000 0.000000 0.000000
+vt 0.499982 0.999999
+vt 0.499987 0.499991
+vt 0.597528 0.990399
+vt 0.691325 0.961942
+vt 0.777770 0.915744
+vt 0.853538 0.853554
+vt 0.915723 0.777800
+vt 0.961931 0.691350
+vt 0.990388 0.597548
+vt 0.999997 0.500005
+vt 0.990395 0.402462
+vt 0.961943 0.308658
+vt 0.915743 0.222226
+vt 0.853562 0.146447
+vt 0.777798 0.084274
+vt 0.691356 0.038070
+vt 0.597560 0.009607
+vt 0.500015 0.000000
+vt 0.402469 0.009600
+vt 0.308672 0.038057
+vt 0.222227 0.084255
+vt 0.146456 0.146424
+vt 0.084273 0.222199
+vt 0.038067 0.308649
+vt 0.009609 0.402429
+vt -0.000000 0.499972
+vt 0.009602 0.597515
+vt 0.038054 0.691319
+vt 0.084255 0.777773
+vt 0.146433 0.853530
+vt 0.222199 0.915725
+vt 0.308642 0.961929
+vt 0.402437 0.990392
+vn 0.000000 1.000000 0.000000
+g water_Cylinder.004_water
+s off
+f 243/212/123 275/213/123 244/214/123
+f 244/214/123 275/213/123 245/215/123
+f 245/215/123 275/213/123 246/216/123
+f 246/216/123 275/213/123 247/217/123
+f 247/217/123 275/213/123 248/218/123
+f 248/218/123 275/213/123 249/219/123
+f 249/219/123 275/213/123 250/220/123
+f 250/220/123 275/213/123 251/221/123
+f 251/221/123 275/213/123 252/222/123
+f 252/222/123 275/213/123 253/223/123
+f 253/223/123 275/213/123 254/224/123
+f 254/224/123 275/213/123 255/225/123
+f 255/225/123 275/213/123 256/226/123
+f 256/226/123 275/213/123 257/227/123
+f 257/227/123 275/213/123 258/228/123
+f 258/228/123 275/213/123 259/229/123
+f 259/229/123 275/213/123 260/230/123
+f 260/230/123 275/213/123 261/231/123
+f 261/231/123 275/213/123 262/232/123
+f 262/232/123 275/213/123 263/233/123
+f 263/233/123 275/213/123 264/234/123
+f 264/234/123 275/213/123 265/235/123
+f 265/235/123 275/213/123 266/236/123
+f 266/236/123 275/213/123 267/237/123
+f 267/237/123 275/213/123 268/238/123
+f 268/238/123 275/213/123 269/239/123
+f 269/239/123 275/213/123 270/240/123
+f 270/240/123 275/213/123 271/241/123
+f 271/241/123 275/213/123 272/242/123
+f 272/242/123 275/213/123 273/243/123
+f 273/243/123 275/213/123 274/244/123
+f 274/244/123 275/213/123 243/212/123
+o base-cobble_Cylinder.002
+v 0.353553 -0.500000 0.353553
+v 0.353553 -0.312500 0.353553
+v 0.277785 -0.500000 0.415735
+v 0.277785 -0.312500 0.415735
+v 0.191342 -0.500000 0.461940
+v 0.191342 -0.312500 0.461940
+v 0.097545 -0.500000 0.490393
+v 0.097545 -0.312500 0.490393
+v -0.000000 -0.500000 0.500000
+v -0.000000 -0.312500 0.500000
+v 0.000000 0.000000 -0.346275
+v 0.000000 0.500000 -0.346275
+v 0.067555 0.000000 -0.339621
+v 0.067555 0.500000 -0.339621
+v 0.132514 0.000000 -0.319916
+v 0.132514 0.500000 -0.319916
+v 0.192380 0.000000 -0.287917
+v 0.192380 0.500000 -0.287917
+v 0.244853 0.000000 -0.244853
+v 0.244853 0.500000 -0.244853
+v 0.287917 0.000000 -0.192380
+v 0.287917 0.500000 -0.192380
+v 0.319916 0.000000 -0.132514
+v 0.319916 0.500000 -0.132514
+v 0.339621 0.000000 -0.067555
+v 0.339621 0.500000 -0.067555
+v 0.346275 0.000000 -0.000000
+v 0.346275 0.500000 -0.000000
+v 0.339621 0.000000 0.067555
+v 0.339621 0.500000 0.067555
+v 0.319916 0.000000 0.132514
+v 0.319916 0.500000 0.132514
+v 0.287917 0.000000 0.192380
+v 0.287917 0.500000 0.192380
+v 0.244853 0.000000 0.244853
+v 0.244853 0.500000 0.244853
+v 0.192380 0.000000 0.287917
+v 0.192380 0.500000 0.287917
+v 0.132514 0.000000 0.319916
+v 0.132514 0.500000 0.319916
+v 0.067555 0.000000 0.339621
+v 0.067555 0.500000 0.339621
+v -0.000000 0.000000 0.346275
+v -0.000000 0.500000 0.346275
+v -0.067555 0.000000 0.339621
+v -0.067555 0.500000 0.339621
+v -0.132514 0.000000 0.319916
+v -0.132514 0.500000 0.319916
+v -0.192380 0.000000 0.287917
+v -0.192380 0.500000 0.287917
+v -0.244854 0.000000 0.244853
+v -0.244854 0.500000 0.244853
+v -0.287917 0.000000 0.192380
+v -0.287917 0.500000 0.192380
+v -0.319917 0.000000 0.132513
+v -0.319917 0.500000 0.132513
+v -0.339622 0.000000 0.067555
+v -0.339622 0.500000 0.067555
+v -0.346275 0.000000 -0.000000
+v -0.346275 0.500000 -0.000000
+v -0.339621 0.000000 -0.067555
+v -0.339621 0.500000 -0.067555
+v -0.319916 0.000000 -0.132514
+v -0.319916 0.500000 -0.132514
+v -0.287917 0.000000 -0.192380
+v -0.287917 0.500000 -0.192380
+v -0.244853 0.000000 -0.244854
+v -0.244853 0.500000 -0.244854
+v -0.192380 0.000000 -0.287917
+v -0.192380 0.500000 -0.287917
+v -0.132513 0.000000 -0.319917
+v -0.132513 0.500000 -0.319917
+v -0.067554 0.000000 -0.339622
+v -0.067554 0.500000 -0.339622
+v 0.000000 -0.312500 -0.427500
+v 0.000000 0.500000 -0.427500
+v 0.083401 -0.312500 -0.419286
+v 0.083401 0.500000 -0.419286
+v 0.163597 -0.312500 -0.394958
+v 0.163597 0.500000 -0.394958
+v 0.237506 -0.312500 -0.355453
+v 0.237506 0.500000 -0.355453
+v 0.302288 -0.312500 -0.302288
+v 0.302288 0.500000 -0.302288
+v 0.355453 -0.312500 -0.237506
+v 0.355453 0.500000 -0.237506
+v 0.394958 -0.312500 -0.163597
+v 0.394958 0.500000 -0.163597
+v 0.419286 -0.312500 -0.083401
+v 0.419286 0.500000 -0.083401
+v 0.427500 -0.312500 -0.000000
+v 0.427500 0.500000 -0.000000
+v 0.419286 -0.312500 0.083401
+v 0.419286 0.500000 0.083401
+v 0.394959 -0.312500 0.163597
+v 0.394959 0.500000 0.163597
+v 0.355453 -0.312500 0.237506
+v 0.355453 0.500000 0.237506
+v 0.302288 -0.312500 0.302288
+v 0.302288 0.500000 0.302288
+v 0.237506 -0.312500 0.355453
+v 0.237506 0.500000 0.355453
+v 0.163597 -0.312500 0.394959
+v 0.163597 0.500000 0.394959
+v 0.083401 -0.312500 0.419286
+v 0.083401 0.500000 0.419286
+v -0.000000 -0.312500 0.427500
+v -0.000000 0.500000 0.427500
+v -0.083401 -0.312500 0.419286
+v -0.083401 0.500000 0.419286
+v -0.163597 -0.312500 0.394958
+v -0.163597 0.500000 0.394958
+v -0.237506 -0.312500 0.355453
+v -0.237506 0.500000 0.355453
+v -0.302288 -0.312500 0.302288
+v -0.302288 0.500000 0.302288
+v -0.355453 -0.312500 0.237506
+v -0.355453 0.500000 0.237506
+v -0.394959 -0.312500 0.163597
+v -0.394959 0.500000 0.163597
+v -0.419286 -0.312500 0.083401
+v -0.419286 0.500000 0.083401
+v -0.427500 -0.312500 -0.000000
+v -0.427500 0.500000 -0.000000
+v -0.419286 -0.312500 -0.083402
+v -0.419286 0.500000 -0.083402
+v -0.394958 -0.312500 -0.163598
+v -0.394958 0.500000 -0.163598
+v -0.355453 -0.312500 -0.237507
+v -0.355453 0.500000 -0.237507
+v -0.302288 -0.312500 -0.302289
+v -0.302288 0.500000 -0.302289
+v -0.237506 -0.312500 -0.355454
+v -0.237506 0.500000 -0.355454
+v -0.163597 -0.312500 -0.394959
+v -0.163597 0.500000 -0.394959
+v -0.083400 -0.312500 -0.419286
+v -0.083400 0.500000 -0.419286
+v 0.000000 -0.500000 -0.500000
+v 0.000000 -0.312500 -0.500000
+v 0.097545 -0.500000 -0.490393
+v 0.097545 -0.312500 -0.490393
+v 0.191342 -0.500000 -0.461940
+v 0.191342 -0.312500 -0.461940
+v 0.277785 -0.500000 -0.415735
+v 0.277785 -0.312500 -0.415735
+v 0.353553 -0.500000 -0.353553
+v 0.353553 -0.312500 -0.353553
+v 0.415735 -0.500000 -0.277785
+v 0.415735 -0.312500 -0.277785
+v 0.461940 -0.500000 -0.191342
+v 0.461940 -0.312500 -0.191342
+v 0.490393 -0.500000 -0.097545
+v 0.490393 -0.312500 -0.097545
+v 0.500000 -0.500000 -0.000000
+v 0.500000 -0.312500 -0.000000
+v 0.490393 -0.500000 0.097545
+v 0.490393 -0.312500 0.097545
+v 0.461940 -0.500000 0.191342
+v 0.461940 -0.312500 0.191342
+v 0.415735 -0.500000 0.277785
+v 0.415735 -0.312500 0.277785
+v -0.097545 -0.500000 0.490393
+v -0.097545 -0.312500 0.490393
+v -0.191342 -0.500000 0.461940
+v -0.191342 -0.312500 0.461940
+v -0.277785 -0.500000 0.415735
+v -0.277785 -0.312500 0.415735
+v -0.353554 -0.500000 0.353553
+v -0.353554 -0.312500 0.353553
+v -0.415735 -0.500000 0.277785
+v -0.415735 -0.312500 0.277785
+v -0.461940 -0.500000 0.191341
+v -0.461940 -0.312500 0.191341
+v -0.490393 -0.500000 0.097545
+v -0.490393 -0.312500 0.097545
+v -0.500000 -0.500000 -0.000000
+v -0.500000 -0.312500 -0.000000
+v -0.490393 -0.500000 -0.097546
+v -0.490393 -0.312500 -0.097546
+v -0.461940 -0.500000 -0.191342
+v -0.461940 -0.312500 -0.191342
+v -0.415734 -0.500000 -0.277786
+v -0.415734 -0.312500 -0.277786
+v -0.353553 -0.500000 -0.353554
+v -0.353553 -0.312500 -0.353554
+v -0.277785 -0.500000 -0.415735
+v -0.277785 -0.312500 -0.415735
+v -0.191341 -0.500000 -0.461940
+v -0.191341 -0.312500 -0.461940
+v -0.097544 -0.500000 -0.490393
+v -0.097544 -0.312500 -0.490393
+v -0.000000 -0.500000 -0.000000
+vt 0.250000 -0.000000
+vt 0.250000 0.187500
+vt 0.187500 0.187500
+vt 0.187500 -0.000000
+vt 0.125000 0.187500
+vt 0.125000 -0.000000
+vt 0.062500 0.187500
+vt 0.062500 -0.000000
+vt 0.000000 0.187500
+vt 0.000000 -0.000000
+vt 0.000000 0.375000
+vt 0.062500 0.375000
+vt 0.062500 1.000000
+vt -0.000000 1.000000
+vt 0.125000 0.375000
+vt 0.125000 1.000000
+vt 0.187500 0.375000
+vt 0.187500 1.000000
+vt 0.250000 0.375000
+vt 0.250000 1.000000
+vt 0.312500 0.375000
+vt 0.312500 1.000000
+vt 0.375000 0.375000
+vt 0.375000 1.000000
+vt 0.437500 0.375000
+vt 0.437500 1.000000
+vt 0.500000 0.375000
+vt 0.500000 1.000000
+vt 0.562500 0.375000
+vt 0.562500 1.000000
+vt 0.625000 0.375000
+vt 0.625000 1.000000
+vt 0.687500 0.375000
+vt 0.687500 1.000000
+vt 0.750000 0.375000
+vt 0.750000 1.000000
+vt 0.812500 0.375000
+vt 0.812500 1.000000
+vt 0.875000 0.375000
+vt 0.875000 1.000000
+vt 0.937500 0.375000
+vt 0.937500 1.000000
+vt 1.000000 0.375000
+vt 1.000000 1.000000
+vt 1.000000 0.187500
+vt 0.937500 0.187500
+vt 0.875000 0.187500
+vt 0.812500 0.187500
+vt 0.750000 0.187500
+vt 0.687500 0.187500
+vt 0.625000 0.187500
+vt 0.562500 0.187500
+vt 0.500000 0.187500
+vt 0.437500 0.187500
+vt 0.375000 0.187500
+vt 0.312500 0.187500
+vt 1.000000 -0.000000
+vt 0.937500 -0.000000
+vt 0.875000 -0.000000
+vt 0.812500 -0.000000
+vt 0.750000 -0.000000
+vt 0.687500 -0.000000
+vt 0.625000 -0.000000
+vt 0.562500 -0.000000
+vt 0.500000 -0.000000
+vt 0.437500 -0.000000
+vt 0.375000 -0.000000
+vt 0.312500 -0.000000
+vt 0.744855 0.255135
+vt 0.692375 0.212086
+vt 0.737503 0.144534
+vt 0.802288 0.197712
+vt 0.787917 0.307613
+vt 0.855447 0.262483
+vt 0.819911 0.367486
+vt 0.894955 0.336399
+vt 0.839622 0.432433
+vt 0.919282 0.416593
+vt 0.846273 0.499984
+vt 0.927497 0.499981
+vt 0.839624 0.567557
+vt 0.919284 0.583393
+vt 0.819915 0.632505
+vt 0.894959 0.663588
+vt 0.787923 0.692379
+vt 0.855453 0.737506
+vt 0.744861 0.744837
+vt 0.802296 0.802280
+vt 0.692382 0.787910
+vt 0.737512 0.855439
+vt 0.632520 0.819915
+vt 0.663606 0.894947
+vt 0.567561 0.839627
+vt 0.583400 0.919274
+vt 0.499998 0.846278
+vt 0.499999 0.927501
+vt 0.432446 0.839630
+vt 0.416609 0.919278
+vt 0.367486 0.819922
+vt 0.336402 0.894955
+vt 0.307623 0.787919
+vt 0.262495 0.855449
+vt 0.255143 0.744848
+vt 0.197720 0.802294
+vt 0.212080 0.692392
+vt 0.144551 0.737522
+vt 0.180087 0.632520
+vt 0.105042 0.663606
+vt 0.160375 0.567573
+vt 0.080716 0.583412
+vt 0.153724 0.500000
+vt 0.072500 0.500002
+vt 0.160373 0.432449
+vt 0.080713 0.416613
+vt 0.180083 0.367500
+vt 0.105038 0.336417
+vt 0.212075 0.307627
+vt 0.144544 0.262500
+vt 0.255148 0.255147
+vt 0.197701 0.197726
+vt 0.307615 0.212095
+vt 0.262485 0.144545
+vt 0.367478 0.180090
+vt 0.336391 0.105037
+vt 0.432437 0.160379
+vt 0.416587 0.080710
+vt 0.499989 0.153727
+vt 0.499988 0.072504
+vt 0.567552 0.160376
+vt 0.583399 0.080706
+vt 0.632511 0.180084
+vt 0.663595 0.105029
+vt 0.894948 0.336399
+vt 0.915726 0.222207
+vt 0.961929 0.308637
+vt 0.990392 0.402440
+vt 0.999998 0.499982
+vt 0.990398 0.597526
+vt 0.961941 0.691328
+vt 0.915743 0.777781
+vt 0.853565 0.853538
+vt 0.777790 0.915731
+vt 0.663611 0.894951
+vt 0.691351 0.961933
+vt 0.597562 0.990395
+vt 0.402467 0.990399
+vt 0.308675 0.961940
+vt 0.262504 0.855451
+vt 0.222223 0.915740
+vt 0.146467 0.853549
+vt 0.084273 0.777795
+vt 0.105051 0.663604
+vt 0.038069 0.691343
+vt 0.009618 0.597542
+vt 0.000000 0.499998
+vt 0.009611 0.402455
+vt 0.038057 0.308652
+vt 0.084255 0.222221
+vt 0.146434 0.146443
+vt 0.222208 0.084271
+vt 0.308647 0.038069
+vt 0.402436 0.009607
+vt 0.597559 0.009608
+vt 0.500004 0.499991
+vt 0.691354 0.038071
+vt 0.777794 0.084274
+vt 0.853562 0.146446
+vt 0.961944 0.308678
+vt 0.990396 0.402459
+vt 0.990389 0.597567
+vt 0.402442 0.990394
+vt 0.308647 0.961932
+vt 0.146439 0.853556
+vt 0.009612 0.402435
+vt 0.146465 0.146429
+vt 0.308673 0.038061
+vt 0.402470 0.009604
+vt 0.691323 0.038063
+vt 0.853543 0.146432
+vt 0.597532 0.009604
+vt 0.853542 0.853574
+vt 0.691327 0.961942
+vt 0.597531 0.990399
+vn 0.634400 0.000000 0.773000
+vn 0.471400 0.000000 0.881900
+vn 0.290300 0.000000 0.956900
+vn 0.098000 0.000000 0.995200
+vn -0.098000 0.000000 0.995200
+vn -0.290300 0.000000 0.956900
+vn -0.471400 0.000000 0.881900
+vn -0.634400 0.000000 0.773000
+vn -0.773000 0.000000 0.634400
+vn -0.881900 0.000000 0.471400
+vn -0.956900 0.000000 0.290300
+vn -0.995200 0.000000 0.098000
+vn -0.995200 0.000000 -0.098000
+vn -0.956900 0.000000 -0.290300
+vn -0.881900 0.000000 -0.471400
+vn -0.773000 0.000000 -0.634400
+vn -0.634400 0.000000 -0.773000
+vn -0.471400 0.000000 -0.881900
+vn -0.290300 0.000000 -0.956900
+vn -0.098000 0.000000 -0.995200
+vn 0.098000 0.000000 -0.995200
+vn 0.290300 0.000000 -0.956900
+vn 0.471400 0.000000 -0.881900
+vn 0.634400 0.000000 -0.773000
+vn 0.773000 0.000000 -0.634400
+vn 0.881900 0.000000 -0.471400
+vn 0.956900 0.000000 -0.290300
+vn 0.995200 0.000000 -0.098000
+vn 0.995200 0.000000 0.098000
+vn 0.956900 0.000000 0.290300
+vn 0.881900 0.000000 0.471400
+vn 0.773000 0.000000 0.634400
+vn -0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+g base-cobble_Cylinder.002_cobble
+s off
+f 276/245/124 277/246/124 279/247/124 278/248/124
+f 278/248/125 279/247/125 281/249/125 280/250/125
+f 280/250/126 281/249/126 283/251/126 282/252/126
+f 282/252/127 283/251/127 285/253/127 284/254/127
+f 286/255/128 288/256/128 289/257/128 287/258/128
+f 288/256/129 290/259/129 291/260/129 289/257/129
+f 290/259/130 292/261/130 293/262/130 291/260/130
+f 292/261/131 294/263/131 295/264/131 293/262/131
+f 294/263/132 296/265/132 297/266/132 295/264/132
+f 296/265/133 298/267/133 299/268/133 297/266/133
+f 298/267/134 300/269/134 301/270/134 299/268/134
+f 300/269/135 302/271/135 303/272/135 301/270/135
+f 302/271/136 304/273/136 305/274/136 303/272/136
+f 304/273/137 306/275/137 307/276/137 305/274/137
+f 306/275/138 308/277/138 309/278/138 307/276/138
+f 308/277/139 310/279/139 311/280/139 309/278/139
+f 310/279/140 312/281/140 313/282/140 311/280/140
+f 312/281/141 314/283/141 315/284/141 313/282/141
+f 314/283/142 316/285/142 317/286/142 315/284/142
+f 316/285/143 318/287/143 319/288/143 317/286/143
+f 318/255/144 320/256/144 321/257/144 319/258/144
+f 320/256/145 322/259/145 323/260/145 321/257/145
+f 322/259/146 324/261/146 325/262/146 323/260/146
+f 324/261/147 326/263/147 327/264/147 325/262/147
+f 326/263/148 328/265/148 329/266/148 327/264/148
+f 328/265/149 330/267/149 331/268/149 329/266/149
+f 330/267/150 332/269/150 333/270/150 331/268/150
+f 332/269/151 334/271/151 335/272/151 333/270/151
+f 334/271/152 336/273/152 337/274/152 335/272/152
+f 336/273/153 338/275/153 339/276/153 337/274/153
+f 338/275/154 340/277/154 341/278/154 339/276/154
+f 340/277/155 342/279/155 343/280/155 341/278/155
+f 342/279/124 344/281/124 345/282/124 343/280/124
+f 344/281/125 346/283/125 347/284/125 345/282/125
+f 348/285/127 286/287/127 287/288/127 349/286/127
+f 346/283/126 348/285/126 349/286/126 347/284/126
+f 350/289/144 351/288/144 353/286/144 352/290/144
+f 352/290/145 353/286/145 355/284/145 354/291/145
+f 354/291/146 355/284/146 357/282/146 356/292/146
+f 356/292/147 357/282/147 359/280/147 358/293/147
+f 358/293/148 359/280/148 361/278/148 360/294/148
+f 360/294/149 361/278/149 363/276/149 362/295/149
+f 362/295/150 363/276/150 365/274/150 364/296/150
+f 364/296/151 365/274/151 367/272/151 366/297/151
+f 366/297/152 367/272/152 369/270/152 368/298/152
+f 368/298/153 369/270/153 371/268/153 370/299/153
+f 370/299/154 371/268/154 373/266/154 372/300/154
+f 372/300/155 373/266/155 375/264/155 374/246/155
+f 374/246/124 375/264/124 377/262/124 376/247/124
+f 376/247/125 377/262/125 379/260/125 378/249/125
+f 378/249/126 379/260/126 381/257/126 380/251/126
+f 380/251/127 381/257/127 383/258/127 382/253/127
+f 382/289/128 383/288/128 385/286/128 384/290/128
+f 384/290/129 385/286/129 387/284/129 386/291/129
+f 386/291/130 387/284/130 389/282/130 388/292/130
+f 388/292/131 389/282/131 391/280/131 390/293/131
+f 390/293/132 391/280/132 393/278/132 392/294/132
+f 392/294/133 393/278/133 395/276/133 394/295/133
+f 394/295/134 395/276/134 397/274/134 396/296/134
+f 396/296/135 397/274/135 399/272/135 398/297/135
+f 398/297/136 399/272/136 401/270/136 400/298/136
+f 400/298/137 401/270/137 403/268/137 402/299/137
+f 402/299/138 403/268/138 405/266/138 404/300/138
+f 404/300/139 405/266/139 407/264/139 406/246/139
+f 406/246/140 407/264/140 409/262/140 408/247/140
+f 408/247/141 409/262/141 411/260/141 410/249/141
+f 412/251/143 413/257/143 351/258/143 350/253/143
+f 410/249/142 411/260/142 413/257/142 412/251/142
+f 414/301/144 415/289/144 417/290/144 416/302/144
+f 416/302/145 417/290/145 419/291/145 418/303/145
+f 418/303/146 419/291/146 421/292/146 420/304/146
+f 420/304/147 421/292/147 423/293/147 422/305/147
+f 422/305/148 423/293/148 425/294/148 424/306/148
+f 424/306/149 425/294/149 427/295/149 426/307/149
+f 426/307/150 427/295/150 429/296/150 428/308/150
+f 428/308/151 429/296/151 431/297/151 430/309/151
+f 430/309/152 431/297/152 433/298/152 432/310/152
+f 432/310/153 433/298/153 435/299/153 434/311/153
+f 434/311/154 435/299/154 437/300/154 436/312/154
+f 438/302/129 439/290/129 441/291/129 440/303/129
+f 440/303/130 441/291/130 443/292/130 442/304/130
+f 442/304/131 443/292/131 445/293/131 444/305/131
+f 444/305/132 445/293/132 447/294/132 446/306/132
+f 446/306/133 447/294/133 449/295/133 448/307/133
+f 448/307/134 449/295/134 451/296/134 450/308/134
+f 450/308/135 451/296/135 453/297/135 452/309/135
+f 452/309/136 453/297/136 455/298/136 454/310/136
+f 454/310/137 455/298/137 457/299/137 456/311/137
+f 456/311/138 457/299/138 459/300/138 458/312/138
+f 458/312/139 459/300/139 461/246/139 460/245/139
+f 460/245/140 461/246/140 463/247/140 462/248/140
+f 462/248/141 463/247/141 465/249/141 464/250/141
+f 466/252/143 467/251/143 415/253/143 414/254/143
+f 464/250/142 465/249/142 467/251/142 466/252/142
+f 311/313/156 313/314/156 377/315/156 375/316/156
+f 309/317/156 311/313/156 375/316/156 373/318/156
+f 307/319/156 309/317/156 373/318/156 371/320/156
+f 305/321/156 307/319/156 371/320/156 369/322/156
+f 303/323/156 305/321/156 369/322/156 367/324/156
+f 301/325/156 303/323/156 367/324/156 365/326/156
+f 299/327/156 301/325/156 365/326/156 363/328/156
+f 297/329/156 299/327/156 363/328/156 361/330/156
+f 295/331/156 297/329/156 361/330/156 359/332/156
+f 293/333/156 295/331/156 359/332/156 357/334/156
+f 291/335/156 293/333/156 357/334/156 355/336/156
+f 289/337/156 291/335/156 355/336/156 353/338/156
+f 287/339/156 289/337/156 353/338/156 351/340/156
+f 349/341/156 287/339/156 351/340/156 413/342/156
+f 347/343/156 349/341/156 413/342/156 411/344/156
+f 345/345/156 347/343/156 411/344/156 409/346/156
+f 343/347/156 345/345/156 409/346/156 407/348/156
+f 341/349/156 343/347/156 407/348/156 405/350/156
+f 339/351/156 341/349/156 405/350/156 403/352/156
+f 337/353/156 339/351/156 403/352/156 401/354/156
+f 335/355/156 337/353/156 401/354/156 399/356/156
+f 333/357/156 335/355/156 399/356/156 397/358/156
+f 331/359/156 333/357/156 397/358/156 395/360/156
+f 329/361/156 331/359/156 395/360/156 393/362/156
+f 327/363/156 329/361/156 393/362/156 391/364/156
+f 325/365/156 327/363/156 391/364/156 389/366/156
+f 323/367/156 325/365/156 389/366/156 387/368/156
+f 321/369/156 323/367/156 387/368/156 385/370/156
+f 319/371/156 321/369/156 385/370/156 383/372/156
+f 317/373/156 319/371/156 383/372/156 381/374/156
+f 315/375/156 317/373/156 381/374/156 379/376/156
+f 313/314/156 315/375/156 379/376/156 377/315/156
+f 370/377/156 372/318/156 437/378/156 435/379/156
+f 368/322/156 370/377/156 435/379/156 433/380/156
+f 366/324/156 368/322/156 433/380/156 431/381/156
+f 364/326/156 366/324/156 431/381/156 429/382/156
+f 362/328/156 364/326/156 429/382/156 427/383/156
+f 360/330/156 362/328/156 427/383/156 425/384/156
+f 358/332/156 360/330/156 425/384/156 423/385/156
+f 356/334/156 358/332/156 423/385/156 421/386/156
+f 354/387/156 356/334/156 421/386/156 419/388/156
+f 352/338/156 354/387/156 419/388/156 417/389/156
+f 350/340/156 352/338/156 417/389/156 415/272/156
+f 412/342/156 350/340/156 415/272/156 467/390/156
+f 410/344/156 412/342/156 467/390/156 465/391/156
+f 408/392/156 410/344/156 465/391/156 463/393/156
+f 406/348/156 408/392/156 463/393/156 461/394/156
+f 404/350/156 406/348/156 461/394/156 459/395/156
+f 402/396/156 404/350/156 459/395/156 457/397/156
+f 400/354/156 402/396/156 457/397/156 455/398/156
+f 398/356/156 400/354/156 455/398/156 453/399/156
+f 396/358/156 398/356/156 453/399/156 451/400/156
+f 394/360/156 396/358/156 451/400/156 449/401/156
+f 392/362/156 394/360/156 449/401/156 447/402/156
+f 390/364/156 392/362/156 447/402/156 445/403/156
+f 388/366/156 390/364/156 445/403/156 443/404/156
+f 386/368/156 388/366/156 443/404/156 441/405/156
+f 384/370/156 386/368/156 441/405/156 439/406/156
+f 414/309/157 416/407/157 468/408/157
+f 416/407/157 418/409/157 468/408/157
+f 418/409/157 420/410/157 468/408/157
+f 420/410/157 422/411/157 468/408/157
+f 422/411/157 424/378/157 468/408/157
+f 424/378/157 426/412/157 468/408/157
+f 426/412/157 428/413/157 468/408/157
+f 428/413/157 430/381/157 468/408/157
+f 430/381/157 432/414/157 468/408/157
+f 432/414/157 434/383/157 468/408/157
+f 434/383/157 436/384/157 468/408/157
+f 438/415/157 440/416/157 468/408/157
+f 440/416/157 442/393/157 468/408/157
+f 442/393/157 444/417/157 468/408/157
+f 444/417/157 446/395/157 468/408/157
+f 446/395/157 448/397/157 468/408/157
+f 448/397/157 450/398/157 468/408/157
+f 450/398/157 452/399/157 468/408/157
+f 452/399/157 454/418/157 468/408/157
+f 454/418/157 456/401/157 468/408/157
+f 456/401/157 458/402/157 468/408/157
+f 458/402/157 460/419/157 468/408/157
+f 460/419/157 462/404/157 468/408/157
+f 462/404/157 464/420/157 468/408/157
+f 464/420/157 466/421/157 468/408/157
+f 466/421/157 414/309/157 468/408/157
+f 436/312/155 437/300/155 277/246/155 276/245/155
+f 284/301/128 285/289/128 439/290/128 438/302/128
+f 376/315/156 378/376/156 281/422/156 279/410/156
+f 374/316/156 376/315/156 279/410/156 277/423/156
+f 372/318/156 374/316/156 277/423/156 437/378/156
+f 382/372/156 384/370/156 439/406/156 285/309/156
+f 380/374/156 382/372/156 285/309/156 283/424/156
+f 378/376/156 380/374/156 283/424/156 281/422/156
+f 436/384/157 276/425/157 468/408/157
+f 276/425/157 278/386/157 468/408/157
+f 278/386/157 280/426/157 468/408/157
+f 280/426/157 282/427/157 468/408/157
+f 282/427/157 284/272/157 468/408/157
+f 284/272/157 438/415/157 468/408/157
+o uprights-bucket-wood_Cylinder.001
+v -0.062500 1.500000 -0.445377
+v -0.062500 1.500000 -0.382877
+v 0.062500 1.500000 -0.382877
+v 0.062500 1.500000 -0.445377
+v -0.062500 -0.312500 -0.445377
+v -0.062500 -0.312500 -0.382877
+v 0.062500 -0.312500 -0.382877
+v 0.062500 -0.312500 -0.445377
+v -0.062500 -0.312500 0.445377
+v -0.062500 -0.312500 0.382877
+v 0.062500 -0.312500 0.382877
+v 0.062500 -0.312500 0.445377
+v -0.062500 1.500000 0.445377
+v -0.062500 1.500000 0.382877
+v 0.062500 1.500000 0.382877
+v 0.062500 1.500000 0.445377
+v 0.028496 0.500000 -0.100000
+v 0.028496 0.250000 -0.125000
+v 0.028496 0.500000 -0.125000
+v 0.076332 0.250000 -0.115485
+v 0.076332 0.500000 -0.115485
+v 0.116884 0.250000 -0.088388
+v 0.116884 0.500000 -0.088388
+v 0.143981 0.250000 -0.047835
+v 0.143981 0.500000 -0.047835
+v 0.153496 0.250000 0.000000
+v 0.153496 0.500000 0.000000
+v 0.143981 0.250000 0.047835
+v 0.143981 0.500000 0.047835
+v 0.116884 0.250000 0.088388
+v 0.116884 0.500000 0.088388
+v 0.076332 0.250000 0.115485
+v 0.076332 0.500000 0.115485
+v 0.028496 0.250000 0.125000
+v 0.028496 0.500000 0.125000
+v -0.019339 0.250000 0.115485
+v -0.019339 0.500000 0.115485
+v -0.059892 0.250000 0.088388
+v -0.059892 0.500000 0.088388
+v -0.086989 0.250000 0.047835
+v -0.086989 0.500000 0.047835
+v -0.096504 0.250000 -0.000000
+v -0.096504 0.500000 -0.000000
+v -0.086989 0.250000 -0.047835
+v -0.086989 0.500000 -0.047835
+v -0.059892 0.250000 -0.088388
+v -0.059892 0.500000 -0.088388
+v -0.019339 0.250000 -0.115485
+v -0.019339 0.500000 -0.115485
+v 0.066764 0.500000 -0.092388
+v 0.099207 0.500000 -0.070711
+v 0.120884 0.500000 -0.038268
+v 0.128496 0.500000 0.000000
+v 0.120884 0.500000 0.038268
+v 0.099207 0.500000 0.070711
+v 0.066765 0.500000 0.092388
+v 0.028496 0.500000 0.100000
+v -0.009772 0.500000 0.092388
+v -0.042215 0.500000 0.070711
+v -0.063892 0.500000 0.038268
+v -0.071504 0.500000 -0.000000
+v -0.063892 0.500000 -0.038268
+v -0.042215 0.500000 -0.070711
+v -0.009772 0.500000 -0.092388
+v 0.028496 0.277344 -0.100000
+v 0.066764 0.277344 -0.092388
+v 0.099207 0.277344 -0.070711
+v 0.120884 0.277344 -0.038268
+v 0.128496 0.277344 0.000000
+v 0.120884 0.277344 0.038268
+v 0.099207 0.277344 0.070711
+v 0.066765 0.277344 0.092388
+v 0.028496 0.277344 0.100000
+v -0.009772 0.277344 0.092388
+v -0.042215 0.277344 0.070711
+v -0.063892 0.277344 0.038268
+v -0.071504 0.277344 -0.000000
+v -0.063892 0.277344 -0.038268
+v -0.042215 0.277344 -0.070711
+v -0.009772 0.277344 -0.092388
+v 0.028496 0.277344 -0.000000
+v 0.177750 1.311464 0.436099
+v 0.177750 1.311464 0.392351
+v 0.133556 1.355658 0.392351
+v 0.133556 1.355658 0.436099
+v 0.061131 1.194845 0.436099
+v 0.061131 1.194845 0.392351
+v 0.060533 1.282635 0.392351
+v 0.060533 1.282635 0.436099
+v -0.059965 1.193882 0.436099
+v -0.059965 1.193882 0.392351
+v -0.059490 1.281795 0.392351
+v -0.059490 1.281795 0.436099
+v -0.177629 1.311545 0.436099
+v -0.177629 1.311545 0.392351
+v -0.133434 1.355739 0.392351
+v -0.133434 1.355739 0.436099
+v -0.177831 1.311545 -0.436099
+v -0.177831 1.311545 -0.392351
+v -0.133637 1.355739 -0.392351
+v -0.133637 1.355739 -0.436099
+v -0.060168 1.193882 -0.436099
+v -0.060168 1.193882 -0.392351
+v -0.059693 1.281795 -0.392351
+v -0.059693 1.281795 -0.436099
+v 0.060928 1.194844 -0.436099
+v 0.060928 1.194844 -0.392351
+v 0.060330 1.282635 -0.392351
+v 0.060330 1.282635 -0.436099
+v 0.177547 1.311464 -0.436099
+v 0.177547 1.311464 -0.392351
+v 0.133353 1.355658 -0.392351
+v 0.133353 1.355658 -0.436099
+v -0.000001 1.487706 -0.500000
+v 0.494974 0.992732 -0.500000
+v 0.494974 0.992731 0.500000
+v 0.539168 1.036926 -0.500000
+v 0.539168 1.036926 0.500000
+v -0.000001 1.487706 0.500000
+v -0.494976 0.992732 -0.500000
+v -0.494976 0.992731 0.500000
+v -0.044195 1.531900 0.500000
+v -0.044195 1.531900 -0.500000
+v -0.539170 1.036926 -0.500000
+v -0.539170 1.036926 0.500000
+v -0.000001 1.576096 0.500000
+v -0.000001 1.576096 -0.500000
+v -0.062500 0.593750 -0.445377
+v 0.062500 0.593750 -0.382877
+v -0.062500 0.593750 -0.382877
+v 0.062500 0.593750 -0.445377
+v -0.062500 0.593750 0.445377
+v -0.062500 0.593750 0.382877
+v 0.062500 0.593750 0.382877
+v 0.062500 0.593750 0.445377
+vt -0.000000 0.937500
+vt -0.000000 0.812500
+vt 1.000000 0.812500
+vt 1.000000 0.937500
+vt -0.000000 1.000000
+vt 1.000000 1.000000
+vt -0.000000 0.750000
+vt -0.000000 0.625000
+vt 1.000000 0.625000
+vt 1.000000 0.750000
+vt -0.000000 0.375000
+vt -0.000000 0.312500
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt -0.000000 0.250000
+vt -0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt -0.000000 0.500000
+vt 1.000000 0.500000
+vt 0.187500 0.937500
+vt 0.250000 0.937500
+vt 0.250000 1.000000
+vt 0.187500 1.000000
+vt 0.437500 0.000000
+vt 0.562500 0.000000
+vt 0.562500 0.062500
+vt 0.437500 0.062500
+vt 0.750000 0.937500
+vt 0.812500 0.937500
+vt 0.812500 1.000000
+vt 0.750000 1.000000
+vt 0.562500 0.125000
+vt 0.437500 0.125000
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.562500 0.187500
+vt 0.437500 0.187500
+vt 0.562500 0.937500
+vt 0.625000 0.937500
+vt 0.625000 1.000000
+vt 0.562500 1.000000
+vt 0.562500 0.250000
+vt 0.437500 0.250000
+vt 0.312500 0.937500
+vt 0.312500 1.000000
+vt 0.562500 0.312500
+vt 0.437500 0.312500
+vt 0.875000 0.937500
+vt 0.875000 1.000000
+vt 0.562500 0.375000
+vt 0.437500 0.375000
+vt 0.125000 0.937500
+vt 0.125000 1.000000
+vt 0.562500 0.437500
+vt 0.437500 0.437500
+vt 0.687500 0.937500
+vt 0.687500 1.000000
+vt 0.562500 0.500000
+vt 0.437500 0.500000
+vt 0.375000 0.937500
+vt 0.375000 1.000000
+vt 0.437500 0.937500
+vt 0.500000 0.937500
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.375000 0.437500
+vt 0.375000 0.500000
+vt 0.000000 0.437500
+vt 0.375000 0.187500
+vt 0.375000 0.250000
+vt 0.000000 0.187500
+vt 0.375000 0.312500
+vt 0.375000 0.000000
+vt 0.375000 0.062500
+vt 0.000000 0.062500
+vt 0.000000 0.000000
+vt 0.375000 0.375000
+vt 0.375000 0.125000
+vt 0.500008 0.750002
+vt 0.404336 0.730972
+vt 0.500007 0.499997
+vt 0.323225 0.676776
+vt 0.269033 0.595672
+vt 0.250007 0.499999
+vt 0.269030 0.404337
+vt 0.323221 0.323222
+vt 0.404328 0.269035
+vt 0.500001 0.250003
+vt 0.595668 0.269032
+vt 0.676779 0.323218
+vt 0.730971 0.404333
+vt 0.750005 0.499994
+vt 0.730974 0.595667
+vt 0.676782 0.676772
+vt 0.595676 0.730970
+vt 0.937500 0.562500
+vt 0.812500 0.562500
+vt 0.812500 0.500000
+vt 0.937500 0.500000
+vt 1.000000 0.562500
+vt 0.750000 0.562500
+vt 0.625000 0.562500
+vt 0.625000 0.500000
+vt 0.937500 0.375000
+vt 1.000000 0.437500
+vt 0.937500 0.437500
+vt 0.625000 0.375000
+vt 0.750000 0.375000
+vt 0.750000 0.437500
+vt 0.625000 0.437500
+vt 0.812500 0.375000
+vt 0.812500 0.437500
+vt 0.937500 0.187500
+vt 0.812500 0.187500
+vt 0.812500 0.125000
+vt 0.937500 0.125000
+vt 1.000000 0.187500
+vt 0.750000 0.187500
+vt 0.625000 0.187500
+vt 0.625000 0.125000
+vt 0.750000 0.125000
+vt 0.937500 0.250000
+vt 0.937500 0.312500
+vt 0.625000 0.250000
+vt 0.750000 0.250000
+vt 0.750000 0.312500
+vt 0.625000 0.312500
+vt 0.812500 0.250000
+vt 0.812500 0.312500
+vt 0.062500 0.187500
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.195100 0.000000 -0.980800
+vn 0.555600 0.000000 -0.831500
+vn 0.831500 0.000000 -0.555600
+vn 0.980800 0.000000 -0.195100
+vn 0.980800 0.000000 0.195100
+vn 0.831500 0.000000 0.555600
+vn 0.555600 0.000000 0.831500
+vn 0.195100 0.000000 0.980800
+vn -0.195100 0.000000 0.980800
+vn -0.555600 0.000000 0.831500
+vn -0.831500 0.000000 0.555600
+vn -0.980800 0.000000 0.195100
+vn -0.980800 0.000000 -0.195100
+vn -0.831500 0.000000 -0.555600
+vn -0.555600 0.000000 -0.831500
+vn -0.195100 0.000000 -0.980800
+vn 0.707100 -0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn -0.707100 -0.707100 0.000000
+vn 0.707100 0.707100 0.000000
+g uprights-bucket-wood_Cylinder.001_wood
+s off
+f 596/428/158 599/429/158 476/430/158 473/431/158
+f 598/432/159 596/428/159 473/431/159 474/433/159
+f 597/434/160 598/435/160 474/436/160 475/437/160
+f 599/429/161 597/434/161 475/437/161 476/430/161
+f 600/438/159 601/439/159 478/440/159 477/441/159
+f 601/442/158 602/443/158 479/444/158 478/445/158
+f 602/439/161 603/442/161 480/445/161 479/440/161
+f 603/446/160 600/438/160 477/441/160 480/447/160
+f 497/448/162 495/449/162 521/450/162 522/451/162
+f 486/452/163 487/453/163 489/454/163 488/455/163
+f 511/456/162 509/457/162 528/458/162 529/459/162
+f 488/455/164 489/454/164 491/460/164 490/461/164
+f 503/428/162 501/462/162 524/463/162 525/432/162
+f 490/461/165 491/460/165 493/464/165 492/465/165
+f 517/466/162 515/467/162 531/468/162 532/469/162
+f 492/465/166 493/464/166 495/470/166 494/471/166
+f 495/449/162 493/472/162 520/473/162 521/450/162
+f 494/471/167 495/470/167 497/474/167 496/475/167
+f 509/457/162 507/476/162 527/477/162 528/458/162
+f 496/475/168 497/474/168 499/478/168 498/479/168
+f 501/462/162 499/480/162 523/481/162 524/463/162
+f 498/479/169 499/478/169 501/482/169 500/483/169
+f 515/467/162 513/484/162 530/485/162 531/468/162
+f 500/483/170 501/482/170 503/486/170 502/487/170
+f 493/472/162 491/488/162 519/489/162 520/473/162
+f 502/452/171 503/453/171 505/454/171 504/455/171
+f 489/490/162 487/491/162 485/492/162 518/493/162
+f 504/455/172 505/454/172 507/460/172 506/461/172
+f 507/476/162 505/494/162 526/495/162 527/477/162
+f 506/461/173 507/460/173 509/464/173 508/465/173
+f 499/480/162 497/448/162 522/451/162 523/481/162
+f 508/465/174 509/464/174 511/470/174 510/471/174
+f 513/484/162 511/456/162 529/459/162 530/485/162
+f 510/471/175 511/470/175 513/474/175 512/475/175
+f 491/488/162 489/490/162 518/493/162 519/489/162
+f 512/475/176 513/474/176 515/478/176 514/479/176
+f 487/491/162 517/466/162 532/469/162 485/492/162
+f 514/479/177 515/478/177 517/482/177 516/483/177
+f 505/494/162 503/431/162 525/433/162 526/495/162
+f 516/483/178 517/482/178 487/486/178 486/487/178
+f 526/496/163 525/497/163 541/446/163 542/498/163
+f 522/499/175 521/500/175 537/442/175 538/501/175
+f 529/500/166 528/502/166 544/439/166 545/442/166
+f 518/496/171 485/497/171 533/446/171 534/498/171
+f 525/503/178 524/504/178 540/505/178 541/506/178
+f 521/500/174 520/502/174 536/439/174 537/442/174
+f 485/503/170 532/504/170 548/505/170 533/506/170
+f 528/502/165 527/507/165 543/438/165 544/439/165
+f 524/504/177 523/508/177 539/443/177 540/505/177
+f 531/508/168 530/499/168 546/501/168 547/443/168
+f 520/502/173 519/507/173 535/438/173 536/439/173
+f 527/507/164 526/496/164 542/498/164 543/438/164
+f 523/508/176 522/499/176 538/501/176 539/443/176
+f 532/504/169 531/508/169 547/443/169 548/505/169
+f 530/499/167 529/500/167 545/442/167 546/501/167
+f 519/507/172 518/496/172 534/498/172 535/438/172
+f 533/509/162 548/510/162 549/511/162
+f 548/510/162 547/512/162 549/511/162
+f 547/512/162 546/513/162 549/511/162
+f 546/513/162 545/514/162 549/511/162
+f 545/514/162 544/515/162 549/511/162
+f 544/515/162 543/516/162 549/511/162
+f 543/516/162 542/517/162 549/511/162
+f 542/517/162 541/518/162 549/511/162
+f 541/518/162 540/519/162 549/511/162
+f 540/519/162 539/520/162 549/511/162
+f 539/520/162 538/521/162 549/511/162
+f 538/521/162 537/522/162 549/511/162
+f 537/522/162 536/523/162 549/511/162
+f 536/523/162 535/524/162 549/511/162
+f 535/524/162 534/525/162 549/511/162
+f 534/525/162 533/509/162 549/511/162
+f 550/526/160 553/527/160 557/528/160 554/529/160
+f 551/530/179 550/526/179 554/529/179 555/447/179
+f 552/531/158 551/532/158 555/533/158 556/522/158
+f 553/527/180 552/531/180 556/522/180 557/528/180
+f 562/534/181 563/441/181 559/535/181 558/536/181
+f 563/537/158 564/538/158 560/539/158 559/540/158
+f 564/538/182 565/541/182 561/542/182 560/539/182
+f 565/541/160 562/534/160 558/536/160 561/542/160
+f 566/543/158 569/544/158 573/545/158 570/546/158
+f 567/547/181 566/543/181 570/546/181 571/444/181
+f 568/548/160 567/549/160 571/550/160 572/551/160
+f 569/544/182 568/548/182 572/551/182 573/545/182
+f 578/552/179 579/445/179 575/440/179 574/553/179
+f 579/554/160 580/555/160 576/556/160 575/557/160
+f 580/555/180 581/558/180 577/559/180 576/556/180
+f 581/558/158 578/552/158 574/553/158 577/559/158
+f 585/432/179 586/501/179 584/560/179 583/463/179
+f 592/433/181 588/495/181 589/543/181 593/547/181
+f 593/442/160 589/501/160 587/549/160 590/554/160
+f 587/549/181 582/468/181 583/463/181 584/560/181
+f 591/439/158 582/442/158 588/554/158 592/557/158
+f 587/499/179 589/543/179 588/495/179 582/489/179
+f 586/445/160 594/500/160 590/499/160 584/547/160
+f 583/440/158 591/502/158 595/500/158 585/445/158
+f 484/446/160 481/438/160 600/441/160 603/447/160
+f 483/439/161 484/442/161 603/445/161 602/440/161
+f 482/442/158 483/443/158 602/444/158 601/445/158
+f 481/438/159 482/439/159 601/440/159 600/441/159
+f 472/429/161 471/434/161 597/437/161 599/430/161
+f 471/434/160 470/435/160 598/436/160 597/437/160
+f 470/432/159 469/428/159 596/431/159 598/433/159
+f 469/428/158 472/429/158 599/430/158 596/431/158
+o shingles_Cylinder.003
+v 0.539168 1.036926 -0.500000
+v 0.539168 1.036926 0.500000
+v -0.539170 1.036926 -0.500000
+v -0.539170 1.036926 0.500000
+v -0.000001 1.576096 0.500000
+v -0.000001 1.576096 -0.500000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt -0.000000 0.000000
+vn 0.707100 0.707100 -0.000000
+vn -0.707100 0.707100 0.000000
+g shingles_Cylinder.003_shingles
+s off
+f 604/561/183 609/562/183 608/563/183 605/564/183
+f 608/562/184 609/563/184 606/564/184 607/561/184
diff --git a/homedecor_modpack/homedecor/models/homedecor_window_shutter.obj b/homedecor_modpack/homedecor/models/homedecor_window_shutter.obj
new file mode 100644
index 0000000..c2292c8
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_window_shutter.obj
@@ -0,0 +1,223 @@
+# Blender v2.73 (sub 0) OBJ File: 'shutter.blend'
+# www.blender.org
+o Plane
+v 0.437500 -0.453125 -0.031250
+v -0.437500 -0.453125 -0.031250
+v -0.437500 -0.453125 0.031250
+v 0.437500 -0.453125 0.031250
+v 0.437500 -0.460698 0.344815
+v -0.437500 -0.460698 0.344815
+v 0.437500 -0.476874 0.405185
+v -0.437500 -0.476874 0.405185
+v 0.437500 -0.460698 -0.405185
+v -0.437500 -0.460698 -0.405185
+v 0.437500 -0.476874 -0.344815
+v -0.437500 -0.476874 -0.344815
+v 0.437500 -0.460698 -0.311435
+v -0.437500 -0.460698 -0.311435
+v 0.437500 -0.476874 -0.251065
+v -0.437500 -0.476874 -0.251065
+v 0.437500 -0.460698 0.251065
+v -0.437500 -0.460698 0.251065
+v 0.437500 -0.476874 0.311435
+v -0.437500 -0.476874 0.311435
+v 0.437500 -0.460698 0.157315
+v -0.437500 -0.460698 0.157315
+v 0.437500 -0.476874 0.217685
+v -0.437500 -0.476874 0.217685
+v 0.437500 -0.460698 -0.217685
+v -0.437500 -0.460698 -0.217685
+v 0.437500 -0.476874 -0.157315
+v -0.437500 -0.476874 -0.157315
+v 0.437500 -0.460698 -0.123935
+v -0.437500 -0.460698 -0.123935
+v 0.437500 -0.476874 -0.063565
+v -0.437500 -0.476874 -0.063565
+v 0.437500 -0.460698 0.063565
+v -0.437500 -0.460698 0.063565
+v 0.437500 -0.476874 0.123935
+v -0.437500 -0.476874 0.123935
+v 0.437500 -0.484375 0.031250
+v -0.437500 -0.484375 0.031250
+v -0.437500 -0.484375 -0.031250
+v 0.437500 -0.484375 -0.031250
+v -0.500000 -0.437500 -0.500000
+v 0.500000 -0.437500 -0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.437500 -0.492187 0.437500
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.437500 -0.492187 0.437500
+v 0.437500 -0.492188 -0.437500
+v -0.437500 -0.492188 -0.437500
+v -0.500000 -0.437500 0.500000
+v 0.437500 -0.445313 0.437500
+v 0.500000 -0.437500 0.500000
+v 0.437500 -0.445313 -0.437500
+v -0.437500 -0.445312 0.437500
+v -0.437500 -0.445312 -0.437500
+v 0.437500 -0.460608 0.344815
+v -0.437500 -0.460608 0.344815
+v 0.437500 -0.476784 0.405185
+v -0.437500 -0.476784 0.405185
+v 0.437500 -0.460608 -0.405185
+v -0.437500 -0.460608 -0.405185
+v 0.437500 -0.476784 -0.344815
+v -0.437500 -0.476784 -0.344815
+v 0.437500 -0.460608 -0.311435
+v -0.437500 -0.460608 -0.311435
+v 0.437500 -0.476784 -0.251065
+v -0.437500 -0.476784 -0.251065
+v 0.437500 -0.460608 0.251065
+v -0.437500 -0.460608 0.251065
+v 0.437500 -0.476784 0.311435
+v -0.437500 -0.476784 0.311435
+v 0.437500 -0.460608 0.157315
+v -0.437500 -0.460608 0.157315
+v 0.437500 -0.476784 0.217685
+v -0.437500 -0.476784 0.217685
+v 0.437500 -0.460608 -0.217685
+v -0.437500 -0.460608 -0.217685
+v 0.437500 -0.476784 -0.157315
+v -0.437500 -0.476784 -0.157315
+v 0.437500 -0.460608 -0.123935
+v -0.437500 -0.460608 -0.123935
+v 0.437500 -0.476784 -0.063565
+v -0.437500 -0.476784 -0.063565
+v 0.437500 -0.460608 0.063565
+v -0.437500 -0.460608 0.063565
+v 0.437500 -0.476784 0.123935
+v -0.437500 -0.476784 0.123935
+vt 0.062500 0.905185
+vt 0.937500 0.905185
+vt 0.937500 0.844815
+vt 0.062500 0.844815
+vt 0.062500 0.155185
+vt 0.937500 0.155185
+vt 0.937500 0.094815
+vt 0.062500 0.094815
+vt 0.062500 0.248935
+vt 0.937500 0.248935
+vt 0.937500 0.188565
+vt 0.062500 0.188565
+vt 0.062500 0.811435
+vt 0.937500 0.811435
+vt 0.937500 0.751065
+vt 0.062500 0.751065
+vt 0.062500 0.717685
+vt 0.937500 0.717685
+vt 0.937500 0.657315
+vt 0.062500 0.657315
+vt 0.062500 0.342685
+vt 0.937500 0.342685
+vt 0.937500 0.282315
+vt 0.062500 0.282315
+vt 0.062500 0.436435
+vt 0.937500 0.436435
+vt 0.937500 0.376065
+vt 0.062500 0.376065
+vt 0.062500 0.623935
+vt 0.937500 0.623935
+vt 0.937500 0.563565
+vt 0.062500 0.563565
+vt 0.062500 0.531250
+vt 0.937500 0.531250
+vt 0.937500 0.468750
+vt 0.062500 0.468750
+vt 0.937500 0.953125
+vt 0.937500 0.984375
+vt 0.062500 0.984375
+vt 0.062500 0.953125
+vt 0.062500 0.046875
+vt 0.062500 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.046875
+vt 0.062500 0.468750
+vt 0.937500 0.468750
+vt 1.000000 0.062500
+vt 0.000000 0.062500
+vt 0.000000 -0.000000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.999999 0.937500
+vt 1.000000 1.000000
+vt 0.937500 0.000000
+vt 0.937500 1.000000
+vt 0.937500 0.937500
+vt 0.937500 0.062500
+vt 0.062500 0.062500
+vt 0.062500 0.937500
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+vt 0.937500 0.992188
+vt 0.062500 0.992188
+vt 0.062500 0.945313
+vt 0.937500 0.945313
+vt 0.062500 0.007813
+vt 0.937500 0.007813
+vt 0.937500 0.054688
+vt 0.062500 0.054687
+vt 0.007813 0.937500
+vt 0.007813 0.062500
+vt 0.054688 0.062500
+vt 0.054688 0.937500
+vt 0.945313 0.062500
+vt 0.992188 0.062500
+vt 0.992187 0.937500
+vt 0.945313 0.937500
+vn -0.000000 -0.965900 -0.258800
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn -0.000000 -0.000000 -1.000000
+vn -0.000000 1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.124000 0.992300 -0.000000
+vn 0.000000 0.992300 0.124000
+vn 0.000000 0.992300 -0.124000
+vn -0.124000 0.992300 -0.000000
+vn 1.000000 -0.000000 -0.000000
+vn -0.000000 -0.992300 0.124000
+vn 0.124000 -0.992300 0.000000
+vn -0.124000 -0.992300 0.000000
+vn -0.000000 -0.992300 -0.124000
+vn 0.000000 0.965900 0.258800
+g Plane_Plane_Material
+s off
+f 7/1/1 8/2/1 6/3/1 5/4/1
+f 11/5/1 12/6/1 10/7/1 9/8/1
+f 15/9/1 16/10/1 14/11/1 13/12/1
+f 19/13/1 20/14/1 18/15/1 17/16/1
+f 23/17/1 24/18/1 22/19/1 21/20/1
+f 27/21/1 28/22/1 26/23/1 25/24/1
+f 31/25/1 32/26/1 30/27/1 29/28/1
+f 35/29/1 36/30/1 34/31/1 33/32/1
+f 37/33/2 38/34/2 39/35/2 40/36/2
+f 3/37/3 38/38/3 37/39/3 4/40/3
+f 1/41/4 40/42/4 39/43/4 2/44/4
+f 3/34/5 4/33/5 1/45/5 2/46/5
+f 41/47/4 42/48/4 43/49/4 44/50/4
+f 46/51/3 53/52/3 51/53/3 47/54/3
+f 41/55/6 44/50/6 47/54/6 51/56/6
+f 41/50/7 51/54/7 55/57/7 56/58/7
+f 41/50/8 56/58/8 54/59/8 42/49/8
+f 51/54/9 53/51/9 52/60/9 55/57/9
+f 52/60/10 53/51/10 42/49/10 54/59/10
+f 42/61/11 53/62/11 46/51/11 43/49/11
+f 44/50/12 43/49/12 49/59/12 50/58/12
+f 48/57/13 47/54/13 44/50/13 50/58/13
+f 43/49/14 46/51/14 45/60/14 49/59/14
+f 45/60/15 46/51/15 47/54/15 48/57/15
+f 50/63/3 49/64/3 54/65/3 56/66/3
+f 45/67/4 48/68/4 55/69/4 52/70/4
+f 48/71/11 50/72/11 56/73/11 55/74/11
+f 54/75/6 49/76/6 45/77/6 52/78/6
+f 59/1/16 57/4/16 58/3/16 60/2/16
+f 63/5/16 61/8/16 62/7/16 64/6/16
+f 67/9/16 65/12/16 66/11/16 68/10/16
+f 71/13/16 69/16/16 70/15/16 72/14/16
+f 75/17/16 73/20/16 74/19/16 76/18/16
+f 79/21/16 77/24/16 78/23/16 80/22/16
+f 83/25/16 81/28/16 82/27/16 84/26/16
+f 87/29/16 85/32/16 86/31/16 88/30/16
diff --git a/homedecor_modpack/homedecor/models/homedecor_windowblind_thick.obj b/homedecor_modpack/homedecor/models/homedecor_windowblind_thick.obj
new file mode 100644
index 0000000..ebf824e
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_windowblind_thick.obj
@@ -0,0 +1,426 @@
+# Blender v2.73 (sub 0) OBJ File: 'windowblind-wide.blend'
+# www.blender.org
+o Cube
+v 0.433594 0.375000 0.429688
+v 0.433594 0.375000 0.433594
+v 0.437500 0.375000 0.433594
+v 0.437500 0.375000 0.429688
+v 0.433594 -0.464844 0.429688
+v 0.433594 -0.464844 0.433594
+v 0.437500 -0.464844 0.433594
+v 0.437500 -0.464844 0.429688
+v 0.500000 0.375000 0.371094
+v 0.500000 0.375000 0.500000
+v -0.500000 0.375000 0.500000
+v -0.500000 0.375000 0.371094
+v 0.500000 0.500000 0.371094
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.371094
+v 0.500000 0.328989 0.380058
+v 0.500000 0.361341 0.500799
+v -0.500000 0.361341 0.500799
+v -0.500000 0.328989 0.380059
+v 0.500000 0.336535 0.378036
+v 0.500000 0.368888 0.498777
+v -0.500000 0.368888 0.498777
+v -0.500000 0.336535 0.378036
+v -0.500000 -0.452857 0.366944
+v -0.500000 -0.420505 0.487685
+v 0.500000 -0.420505 0.487685
+v 0.500000 -0.452857 0.366944
+v -0.500000 -0.498135 0.379077
+v -0.500000 -0.465783 0.499817
+v 0.500000 -0.465783 0.499817
+v 0.500000 -0.498135 0.379077
+v 0.464844 0.382812 0.324219
+v 0.464844 0.382812 0.371094
+v 0.417969 0.382812 0.371094
+v 0.417969 0.382812 0.324219
+v 0.464844 0.429688 0.324219
+v 0.464844 0.429688 0.371094
+v 0.417969 0.429688 0.371094
+v 0.417969 0.429688 0.324219
+v 0.445312 -0.429688 0.343750
+v 0.445312 -0.429688 0.351562
+v 0.437500 -0.429688 0.351562
+v 0.437500 -0.429688 0.343750
+v 0.445312 0.382812 0.343750
+v 0.445312 0.382812 0.351562
+v 0.437500 0.382812 0.351562
+v 0.437500 0.382812 0.343750
+v -0.439037 -0.454786 0.402725
+v -0.429168 -0.421875 0.367188
+v -0.429168 -0.421875 0.371094
+v -0.433074 -0.421875 0.371094
+v -0.433074 -0.421875 0.367188
+v -0.421875 0.394531 0.367188
+v -0.421875 0.394531 0.371094
+v -0.425781 0.394531 0.371094
+v -0.425781 0.394531 0.367188
+v -0.421875 0.410156 0.371094
+v -0.421875 0.410156 0.375000
+v -0.425781 0.410156 0.375000
+v -0.425781 0.410156 0.371094
+v -0.424871 -0.421875 0.362891
+v -0.424871 -0.421875 0.375391
+v -0.437371 -0.421875 0.375391
+v -0.437371 -0.421875 0.362891
+v -0.424871 -0.449219 0.362891
+v -0.424871 -0.449219 0.375391
+v -0.437371 -0.449219 0.375391
+v -0.437371 -0.449219 0.362891
+v -0.423412 -0.454786 0.402725
+v 0.500000 0.266489 0.380058
+v 0.500000 0.298841 0.500799
+v -0.500000 0.298841 0.500799
+v -0.500000 0.266489 0.380059
+v 0.500000 0.274035 0.378036
+v 0.500000 0.306388 0.498777
+v -0.500000 0.306388 0.498777
+v -0.500000 0.274035 0.378036
+v 0.500000 0.203989 0.380058
+v 0.500000 0.236341 0.500799
+v -0.500000 0.236341 0.500799
+v -0.500000 0.203989 0.380059
+v 0.500000 0.211535 0.378036
+v 0.500000 0.243888 0.498777
+v -0.500000 0.243888 0.498777
+v -0.500000 0.211535 0.378036
+v 0.500000 0.141489 0.380058
+v 0.500000 0.173841 0.500799
+v -0.500000 0.173841 0.500799
+v -0.500000 0.141489 0.380059
+v 0.500000 0.149035 0.378036
+v 0.500000 0.181388 0.498777
+v -0.500000 0.181388 0.498777
+v -0.500000 0.149035 0.378036
+v 0.500000 0.078989 0.380058
+v 0.500000 0.111341 0.500799
+v -0.500000 0.111341 0.500799
+v -0.500000 0.078989 0.380059
+v 0.500000 0.086535 0.378036
+v 0.500000 0.118888 0.498777
+v -0.500000 0.118888 0.498777
+v -0.500000 0.086535 0.378036
+v 0.500000 0.016489 0.380058
+v 0.500000 0.048841 0.500799
+v -0.500000 0.048841 0.500799
+v -0.500000 0.016489 0.380059
+v 0.500000 0.024035 0.378036
+v 0.500000 0.056388 0.498777
+v -0.500000 0.056388 0.498777
+v -0.500000 0.024035 0.378036
+v 0.500000 -0.046011 0.380058
+v 0.500000 -0.013659 0.500799
+v -0.500000 -0.013659 0.500799
+v -0.500000 -0.046011 0.380059
+v 0.500000 -0.038465 0.378036
+v 0.500000 -0.006112 0.498777
+v -0.500000 -0.006112 0.498777
+v -0.500000 -0.038465 0.378036
+v 0.500000 -0.108511 0.380058
+v 0.500000 -0.076159 0.500799
+v -0.500000 -0.076159 0.500799
+v -0.500000 -0.108511 0.380059
+v 0.500000 -0.100965 0.378036
+v 0.500000 -0.068612 0.498777
+v -0.500000 -0.068612 0.498777
+v -0.500000 -0.100965 0.378036
+v 0.500000 -0.171011 0.380058
+v 0.500000 -0.138659 0.500799
+v -0.500000 -0.138659 0.500799
+v -0.500000 -0.171011 0.380059
+v 0.500000 -0.163465 0.378036
+v 0.500000 -0.131112 0.498777
+v -0.500000 -0.131112 0.498777
+v -0.500000 -0.163465 0.378036
+v 0.500000 -0.233511 0.380058
+v 0.500000 -0.201159 0.500799
+v -0.500000 -0.201159 0.500799
+v -0.500000 -0.233511 0.380059
+v 0.500000 -0.225965 0.378036
+v 0.500000 -0.193612 0.498777
+v -0.500000 -0.193612 0.498777
+v -0.500000 -0.225965 0.378036
+v 0.500000 -0.296011 0.380058
+v 0.500000 -0.263659 0.500799
+v -0.500000 -0.263659 0.500799
+v -0.500000 -0.296011 0.380059
+v 0.500000 -0.288465 0.378036
+v 0.500000 -0.256112 0.498777
+v -0.500000 -0.256112 0.498777
+v -0.500000 -0.288465 0.378036
+v 0.500000 -0.358511 0.380058
+v 0.500000 -0.326159 0.500799
+v -0.500000 -0.326159 0.500799
+v -0.500000 -0.358511 0.380059
+v 0.500000 -0.350965 0.378036
+v 0.500000 -0.318612 0.498777
+v -0.500000 -0.318612 0.498777
+v -0.500000 -0.350965 0.378036
+v 0.500000 -0.421011 0.380058
+v 0.500000 -0.388659 0.500799
+v -0.500000 -0.388659 0.500799
+v -0.500000 -0.421011 0.380059
+v 0.500000 -0.413465 0.378036
+v 0.500000 -0.381112 0.498777
+v -0.500000 -0.381112 0.498777
+v -0.500000 -0.413465 0.378036
+v -0.001953 0.375000 0.464844
+v -0.001953 0.375000 0.468750
+v 0.001954 0.375000 0.468750
+v 0.001954 0.375000 0.464844
+v -0.001953 -0.464844 0.464844
+v -0.001953 -0.464844 0.468750
+v 0.001954 -0.464844 0.468750
+v 0.001954 -0.464844 0.464844
+v -0.413543 -0.421875 0.367188
+v -0.413543 -0.421875 0.371094
+v -0.417449 -0.421875 0.371094
+v -0.417449 -0.421875 0.367188
+v -0.417993 0.394531 0.367188
+v -0.417993 0.394531 0.371094
+v -0.421899 0.394531 0.371094
+v -0.421899 0.394531 0.367188
+v -0.417993 0.410156 0.371094
+v -0.417993 0.410156 0.375000
+v -0.421899 0.410156 0.375000
+v -0.421899 0.410156 0.371094
+v -0.409246 -0.421875 0.362891
+v -0.409246 -0.421875 0.375391
+v -0.421746 -0.421875 0.375391
+v -0.421746 -0.421875 0.362891
+v -0.409246 -0.449219 0.362891
+v -0.409246 -0.449219 0.375391
+v -0.421746 -0.449219 0.375391
+v -0.421746 -0.449219 0.362891
+v -0.437500 0.375000 0.429688
+v -0.437500 0.375000 0.433594
+v -0.433594 0.375000 0.433594
+v -0.433594 0.375000 0.429688
+v -0.437500 -0.464844 0.429688
+v -0.437500 -0.464844 0.433594
+v -0.433594 -0.464844 0.433594
+v -0.433594 -0.464844 0.429688
+vt -0.000000 0.625000
+vt -0.000000 0.562500
+vt 1.000000 0.562500
+vt 1.000000 0.625000
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt -0.000000 0.500000
+vt -0.000000 0.437500
+vt -0.000000 0.687500
+vt 1.000000 0.687500
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.937500 0.750000
+vt 0.937500 0.812500
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.937500 0.875000
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 0.250000 0.312500
+vt 0.250000 0.187500
+vt 0.312500 0.187500
+vt 0.312500 0.312500
+vt 1.000000 0.812500
+vt 1.000000 0.750000
+vt 1.000000 1.000000
+vt 0.125000 0.312500
+vt 0.125000 0.187500
+vt 0.187500 0.187500
+vt 0.187500 0.312500
+vt 0.062500 0.312500
+vt 0.062500 0.187500
+vt 0.250000 0.375000
+vt 0.187500 0.375000
+vt 0.125000 0.375000
+vt 0.062500 0.562500
+vt 0.062500 0.687500
+vt 0.937500 0.687500
+vt 0.937500 0.562500
+vt 0.937500 0.250000
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 0.937500 0.312500
+vt 0.000000 0.250000
+vt 0.062500 0.250000
+vt 0.000000 0.312500
+vt 1.000000 0.187500
+vt 0.000000 0.187500
+vt 0.000000 0.125000
+vt 1.000000 0.125000
+vt 0.312500 0.625000
+vt 0.312500 0.562500
+vt 0.375000 0.562500
+vt 0.375000 0.625000
+vt 0.250000 0.625000
+vt 0.250000 0.562500
+vt 0.375000 0.687500
+vt 0.312500 0.687500
+vt 0.250000 0.687500
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 1.000000 0.375000
+vt 0.000000 0.375000
+vt 0.125000 0.625000
+vt 0.125000 0.562500
+vt 0.187500 0.562500
+vt 0.187500 0.625000
+vt -0.000000 -0.000000
+vt 1.000000 -0.000000
+vt 0.937500 0.375000
+vt 0.062500 0.375000
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 -0.008900 0.000000
+vn -1.000000 0.008900 0.000000
+vn 0.000000 0.242500 -0.970100
+vn 0.000000 -0.242500 0.970100
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 1.000000 0.005500 0.000000
+vn -1.000000 -0.005500 0.000000
+vn -0.000000 -0.258800 -0.965900
+vn 0.000000 -0.965900 0.258800
+vn -0.000000 0.965900 -0.258800
+vn 0.000000 0.258800 0.965900
+g Cube_Cube_strings
+s off
+f 1/1/1 4/2/1 8/3/1 5/4/1
+f 2/5/2 1/6/2 5/7/2 6/8/2
+f 3/9/3 2/1/3 6/4/3 7/10/3
+f 4/6/4 3/3/4 7/2/4 8/7/4
+f 54/11/5 55/12/5 51/13/5 50/14/5
+f 55/15/3 56/16/3 52/17/3 51/18/3
+f 56/16/6 57/19/6 53/20/6 52/17/6
+f 57/19/1 54/11/1 50/14/1 53/20/1
+f 54/11/7 57/19/7 61/21/7 58/22/7
+f 66/23/4 62/24/4 63/25/4 67/26/4
+f 57/19/2 56/16/2 60/27/2 61/21/2
+f 56/16/8 55/15/8 59/28/8 60/27/8
+f 55/12/4 54/11/4 58/22/4 59/29/4
+f 67/30/3 63/31/3 64/32/3 68/33/3
+f 68/34/2 64/35/2 65/31/2 69/30/2
+f 69/33/1 65/32/1 62/24/1 66/23/1
+f 62/33/9 65/23/9 64/36/9 63/37/9
+f 69/37/10 66/38/10 67/30/10 68/33/10
+f 167/1/1 170/2/1 174/3/1 171/4/1
+f 168/5/2 167/6/2 171/7/2 172/8/2
+f 169/9/3 168/1/3 172/4/3 173/10/3
+f 170/6/4 169/3/4 173/2/4 174/7/4
+f 179/11/11 180/12/11 176/13/11 175/14/11
+f 180/15/3 181/16/3 177/17/3 176/18/3
+f 181/16/12 182/19/12 178/20/12 177/17/12
+f 182/19/1 179/11/1 175/14/1 178/20/1
+f 179/11/7 182/19/7 186/21/7 183/22/7
+f 191/23/4 187/24/4 188/25/4 192/26/4
+f 182/19/2 181/16/2 185/27/2 186/21/2
+f 181/16/8 180/15/8 184/28/8 185/27/8
+f 180/12/4 179/11/4 183/22/4 184/29/4
+f 192/30/3 188/31/3 189/32/3 193/33/3
+f 193/34/2 189/35/2 190/31/2 194/30/2
+f 194/33/1 190/32/1 187/24/1 191/23/1
+f 187/33/9 190/23/9 189/36/9 188/37/9
+f 194/37/10 191/38/10 192/30/10 193/33/10
+f 195/1/1 198/2/1 202/3/1 199/4/1
+f 196/5/2 195/6/2 199/7/2 200/8/2
+f 197/9/3 196/1/3 200/4/3 201/10/3
+f 198/6/4 197/3/4 201/2/4 202/7/4
+g Cube_Cube_plastic
+f 13/39/4 14/40/4 10/9/4 9/2/4
+f 15/3/2 16/10/2 12/41/2 11/42/2
+f 16/29/1 13/13/1 9/20/1 12/21/1
+f 9/13/10 10/20/10 11/21/10 12/29/10
+f 16/21/9 15/29/9 14/13/9 13/20/9
+f 21/43/4 22/44/4 18/45/4 17/46/4
+f 23/47/2 24/48/2 20/34/2 19/49/2
+f 24/50/13 21/51/13 17/52/13 20/53/13
+f 17/17/14 18/9/14 19/10/14 20/27/14
+f 24/3/15 23/10/15 22/9/15 21/2/15
+f 18/47/16 22/51/16 23/50/16 19/44/16
+f 10/20/3 14/18/3 15/28/3 11/21/3
+f 37/54/4 38/55/4 34/56/4 33/57/4
+f 39/58/2 40/59/2 36/55/2 35/54/2
+f 40/54/1 37/57/1 33/60/1 36/61/1
+f 33/62/10 34/58/10 35/54/10 36/61/10
+f 40/63/9 39/64/9 38/60/9 37/57/9
+f 45/2/4 46/7/4 42/6/4 41/3/4
+f 46/7/3 47/8/3 43/5/3 42/6/3
+f 47/45/2 48/65/2 44/66/2 43/49/2
+f 48/8/1 45/66/1 41/65/1 44/5/1
+f 41/67/10 42/68/10 43/69/10 44/70/10
+f 32/52/14 31/71/14 30/72/14 29/53/14
+f 25/65/13 28/66/13 32/47/13 29/44/13
+f 26/65/2 25/73/2 29/43/2 30/44/2
+f 28/74/4 27/66/4 31/47/4 32/48/4
+f 25/53/15 26/44/15 27/47/15 28/52/15
+f 31/7/16 27/66/16 26/65/16 30/6/16
+f 75/43/4 76/44/4 72/45/4 71/46/4
+f 77/47/2 78/48/2 74/34/2 73/49/2
+f 78/50/13 75/51/13 71/52/13 74/53/13
+f 71/17/14 72/9/14 73/10/14 74/27/14
+f 78/3/15 77/10/15 76/9/15 75/2/15
+f 83/43/4 84/44/4 80/45/4 79/46/4
+f 85/47/2 86/48/2 82/34/2 81/49/2
+f 86/50/13 83/51/13 79/52/13 82/53/13
+f 79/17/14 80/9/14 81/10/14 82/27/14
+f 86/3/15 85/10/15 84/9/15 83/2/15
+f 91/43/4 92/44/4 88/45/4 87/46/4
+f 93/47/2 94/48/2 90/34/2 89/49/2
+f 94/50/13 91/51/13 87/52/13 90/53/13
+f 87/17/14 88/9/14 89/10/14 90/27/14
+f 94/3/15 93/10/15 92/9/15 91/2/15
+f 99/43/4 100/44/4 96/45/4 95/46/4
+f 101/47/2 102/48/2 98/34/2 97/49/2
+f 102/50/13 99/51/13 95/52/13 98/53/13
+f 95/17/14 96/9/14 97/10/14 98/27/14
+f 102/3/15 101/10/15 100/9/15 99/2/15
+f 107/43/4 108/44/4 104/45/4 103/46/4
+f 109/47/2 110/48/2 106/34/2 105/49/2
+f 110/50/13 107/51/13 103/52/13 106/53/13
+f 103/17/14 104/9/14 105/10/14 106/27/14
+f 110/3/15 109/10/15 108/9/15 107/2/15
+f 115/43/4 116/44/4 112/45/4 111/46/4
+f 117/47/2 118/48/2 114/34/2 113/49/2
+f 118/50/13 115/51/13 111/52/13 114/53/13
+f 111/17/14 112/9/14 113/10/14 114/27/14
+f 118/3/15 117/10/15 116/9/15 115/2/15
+f 123/43/4 124/44/4 120/45/4 119/46/4
+f 125/47/2 126/48/2 122/34/2 121/49/2
+f 126/50/13 123/51/13 119/52/13 122/53/13
+f 119/17/14 120/9/14 121/10/14 122/27/14
+f 126/3/15 125/10/15 124/9/15 123/2/15
+f 131/43/4 132/44/4 128/45/4 127/46/4
+f 133/47/2 134/48/2 130/34/2 129/49/2
+f 134/50/13 131/51/13 127/52/13 130/53/13
+f 127/17/14 128/9/14 129/10/14 130/27/14
+f 134/3/15 133/10/15 132/9/15 131/2/15
+f 139/43/4 140/44/4 136/45/4 135/46/4
+f 141/47/2 142/48/2 138/34/2 137/49/2
+f 142/50/13 139/51/13 135/52/13 138/53/13
+f 135/17/14 136/9/14 137/10/14 138/27/14
+f 142/3/15 141/10/15 140/9/15 139/2/15
+f 147/43/4 148/44/4 144/45/4 143/46/4
+f 149/47/2 150/48/2 146/34/2 145/49/2
+f 150/50/13 147/51/13 143/52/13 146/53/13
+f 143/17/14 144/9/14 145/10/14 146/27/14
+f 150/3/15 149/10/15 148/9/15 147/2/15
+f 155/43/4 156/44/4 152/45/4 151/46/4
+f 157/47/2 158/48/2 154/34/2 153/49/2
+f 158/50/13 155/51/13 151/52/13 154/53/13
+f 151/17/14 152/9/14 153/10/14 154/27/14
+f 158/3/15 157/10/15 156/9/15 155/2/15
+f 163/43/4 164/44/4 160/45/4 159/46/4
+f 165/47/2 166/48/2 162/34/2 161/49/2
+f 166/50/13 163/51/13 159/52/13 162/53/13
+f 159/17/14 160/9/14 161/10/14 162/27/14
+f 166/3/15 165/10/15 164/9/15 163/2/15
diff --git a/homedecor_modpack/homedecor/models/homedecor_windowblind_thin.obj b/homedecor_modpack/homedecor/models/homedecor_windowblind_thin.obj
new file mode 100644
index 0000000..002e162
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_windowblind_thin.obj
@@ -0,0 +1,428 @@
+# Blender v2.73 (sub 0) OBJ File: 'windowblind-narrow.blend'
+# www.blender.org
+o Cube
+v 0.433594 0.375000 0.464844
+v 0.433594 0.375000 0.468750
+v 0.437500 0.375000 0.468750
+v 0.437500 0.375000 0.464844
+v 0.433594 -0.464844 0.464844
+v 0.433594 -0.464844 0.468750
+v 0.437500 -0.464844 0.468750
+v 0.437500 -0.464844 0.464844
+v 0.500000 0.375000 0.437500
+v 0.500000 0.375000 0.500000
+v -0.500000 0.375000 0.500000
+v -0.500000 0.375000 0.437500
+v 0.500000 0.500000 0.437500
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.437500
+v 0.500000 0.337346 0.438857
+v 0.500000 0.353522 0.499228
+v -0.500000 0.353522 0.499228
+v -0.500000 0.337346 0.438857
+v 0.500000 0.341119 0.437846
+v 0.500000 0.357295 0.498217
+v -0.500000 0.357295 0.498217
+v -0.500000 0.341119 0.437846
+v -0.500000 -0.471714 0.435319
+v -0.500000 -0.455537 0.495689
+v 0.500000 -0.455537 0.495689
+v 0.500000 -0.471714 0.435319
+v -0.500000 -0.494352 0.441385
+v -0.500000 -0.478176 0.501755
+v 0.500000 -0.478176 0.501755
+v 0.500000 -0.494352 0.441385
+v 0.464844 0.382812 0.390625
+v 0.464844 0.382812 0.437500
+v 0.417969 0.382812 0.437500
+v 0.417969 0.382812 0.390625
+v 0.464844 0.429688 0.390625
+v 0.464844 0.429688 0.437500
+v 0.417969 0.429688 0.437500
+v 0.417969 0.429688 0.390625
+v 0.445312 -0.429688 0.410156
+v 0.445312 -0.429688 0.417969
+v 0.437500 -0.429688 0.417969
+v 0.437500 -0.429688 0.410156
+v 0.445312 0.382812 0.410156
+v 0.445312 0.382812 0.417969
+v 0.437500 0.382812 0.417969
+v 0.437500 0.382812 0.410156
+v -0.439037 -0.454786 0.437881
+v -0.429168 -0.437500 0.433594
+v -0.429168 -0.437500 0.437500
+v -0.433074 -0.437500 0.437500
+v -0.433074 -0.437500 0.433594
+v -0.421875 0.394531 0.433594
+v -0.421875 0.394531 0.437500
+v -0.425781 0.394531 0.437500
+v -0.425781 0.394531 0.433594
+v -0.421875 0.410156 0.437500
+v -0.421875 0.410156 0.441406
+v -0.425781 0.410156 0.441406
+v -0.425781 0.410156 0.437500
+v -0.424871 -0.437500 0.429297
+v -0.424871 -0.437500 0.441797
+v -0.437371 -0.437500 0.441797
+v -0.437371 -0.437500 0.429297
+v -0.424871 -0.464844 0.429297
+v -0.424871 -0.464844 0.441797
+v -0.437371 -0.464844 0.441797
+v -0.437371 -0.464844 0.429297
+v -0.423412 -0.454786 0.437881
+v 0.500000 0.274846 0.438857
+v 0.500000 0.291022 0.499228
+v -0.500000 0.291022 0.499228
+v -0.500000 0.274846 0.438857
+v 0.500000 0.278619 0.437846
+v 0.500000 0.294795 0.498217
+v -0.500000 0.294795 0.498217
+v -0.500000 0.278619 0.437846
+v 0.500000 0.212346 0.438857
+v 0.500000 0.228522 0.499228
+v -0.500000 0.228522 0.499228
+v -0.500000 0.212346 0.438857
+v 0.500000 0.216119 0.437846
+v 0.500000 0.232295 0.498217
+v -0.500000 0.232295 0.498217
+v -0.500000 0.216119 0.437846
+v 0.500000 0.149846 0.438857
+v 0.500000 0.166022 0.499228
+v -0.500000 0.166022 0.499228
+v -0.500000 0.149846 0.438857
+v 0.500000 0.153619 0.437846
+v 0.500000 0.169795 0.498217
+v -0.500000 0.169795 0.498217
+v -0.500000 0.153619 0.437846
+v 0.500000 0.087346 0.438857
+v 0.500000 0.103522 0.499228
+v -0.500000 0.103522 0.499228
+v -0.500000 0.087346 0.438857
+v 0.500000 0.091119 0.437846
+v 0.500000 0.107295 0.498217
+v -0.500000 0.107295 0.498217
+v -0.500000 0.091119 0.437846
+v 0.500000 0.024846 0.438857
+v 0.500000 0.041022 0.499228
+v -0.500000 0.041022 0.499228
+v -0.500000 0.024846 0.438857
+v 0.500000 0.028619 0.437846
+v 0.500000 0.044795 0.498217
+v -0.500000 0.044795 0.498217
+v -0.500000 0.028619 0.437846
+v 0.500000 -0.037654 0.438857
+v 0.500000 -0.021478 0.499228
+v -0.500000 -0.021478 0.499228
+v -0.500000 -0.037654 0.438857
+v 0.500000 -0.033881 0.437846
+v 0.500000 -0.017705 0.498217
+v -0.500000 -0.017705 0.498217
+v -0.500000 -0.033881 0.437846
+v 0.500000 -0.100154 0.438857
+v 0.500000 -0.083978 0.499228
+v -0.500000 -0.083978 0.499228
+v -0.500000 -0.100154 0.438857
+v 0.500000 -0.096381 0.437846
+v 0.500000 -0.080205 0.498217
+v -0.500000 -0.080205 0.498217
+v -0.500000 -0.096381 0.437846
+v 0.500000 -0.162654 0.438857
+v 0.500000 -0.146478 0.499228
+v -0.500000 -0.146478 0.499228
+v -0.500000 -0.162654 0.438857
+v 0.500000 -0.158881 0.437846
+v 0.500000 -0.142705 0.498217
+v -0.500000 -0.142705 0.498217
+v -0.500000 -0.158881 0.437846
+v 0.500000 -0.225154 0.438857
+v 0.500000 -0.208978 0.499228
+v -0.500000 -0.208978 0.499228
+v -0.500000 -0.225154 0.438857
+v 0.500000 -0.221381 0.437846
+v 0.500000 -0.205205 0.498217
+v -0.500000 -0.205205 0.498217
+v -0.500000 -0.221381 0.437846
+v 0.500000 -0.287654 0.438857
+v 0.500000 -0.271478 0.499228
+v -0.500000 -0.271478 0.499228
+v -0.500000 -0.287654 0.438857
+v 0.500000 -0.283881 0.437846
+v 0.500000 -0.267705 0.498217
+v -0.500000 -0.267705 0.498217
+v -0.500000 -0.283881 0.437846
+v 0.500000 -0.350154 0.438857
+v 0.500000 -0.333978 0.499228
+v -0.500000 -0.333978 0.499228
+v -0.500000 -0.350154 0.438857
+v 0.500000 -0.346381 0.437846
+v 0.500000 -0.330205 0.498217
+v -0.500000 -0.330205 0.498217
+v -0.500000 -0.346381 0.437846
+v 0.500000 -0.412654 0.438857
+v 0.500000 -0.396478 0.499228
+v -0.500000 -0.396478 0.499228
+v -0.500000 -0.412654 0.438857
+v 0.500000 -0.408881 0.437846
+v 0.500000 -0.392705 0.498217
+v -0.500000 -0.392705 0.498217
+v -0.500000 -0.408881 0.437846
+v -0.001953 0.375000 0.464844
+v -0.001953 0.375000 0.468750
+v 0.001954 0.375000 0.468750
+v 0.001954 0.375000 0.464844
+v -0.001953 -0.464844 0.464844
+v -0.001953 -0.464844 0.468750
+v 0.001954 -0.464844 0.468750
+v 0.001954 -0.464844 0.464844
+v -0.413543 -0.437500 0.433594
+v -0.413543 -0.437500 0.437500
+v -0.417449 -0.437500 0.437500
+v -0.417449 -0.437500 0.433594
+v -0.417993 0.394531 0.433594
+v -0.417993 0.394531 0.437500
+v -0.421899 0.394531 0.437500
+v -0.421899 0.394531 0.433594
+v -0.417993 0.410156 0.437500
+v -0.417993 0.410156 0.441406
+v -0.421899 0.410156 0.441406
+v -0.421899 0.410156 0.437500
+v -0.409246 -0.437500 0.429297
+v -0.409246 -0.437500 0.441797
+v -0.421746 -0.437500 0.441797
+v -0.421746 -0.437500 0.429297
+v -0.409246 -0.464844 0.429297
+v -0.409246 -0.464844 0.441797
+v -0.421746 -0.464844 0.441797
+v -0.421746 -0.464844 0.429297
+v -0.437500 0.375000 0.464844
+v -0.437500 0.375000 0.468750
+v -0.433594 0.375000 0.468750
+v -0.433594 0.375000 0.464844
+v -0.437500 -0.464844 0.464844
+v -0.437500 -0.464844 0.468750
+v -0.433594 -0.464844 0.468750
+v -0.433594 -0.464844 0.464844
+vt -0.000000 0.625000
+vt -0.000000 0.562500
+vt 1.000000 0.562500
+vt 1.000000 0.625000
+vt 1.000000 0.437500
+vt 1.000000 0.500000
+vt -0.000000 0.500000
+vt -0.000000 0.437500
+vt -0.000000 0.687500
+vt 1.000000 0.687500
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.937500 0.750000
+vt 0.937500 0.812500
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.937500 0.875000
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 0.250000 0.312500
+vt 0.250000 0.187500
+vt 0.312500 0.187500
+vt 0.312500 0.312500
+vt 1.000000 0.812500
+vt 1.000000 0.750000
+vt 1.000000 1.000000
+vt 0.125000 0.312500
+vt 0.125000 0.187500
+vt 0.187500 0.187500
+vt 0.187500 0.312500
+vt 0.062500 0.312500
+vt 0.062500 0.187500
+vt 0.250000 0.375000
+vt 0.187500 0.375000
+vt 0.125000 0.375000
+vt 0.062500 0.562500
+vt 0.062500 0.687500
+vt 0.937500 0.687500
+vt 0.937500 0.562500
+vt 0.937500 0.250000
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 0.937500 0.312500
+vt 0.000000 0.250000
+vt 0.062500 0.250000
+vt 0.000000 0.312500
+vt 1.000000 0.187500
+vt 0.000000 0.187500
+vt 0.000000 0.125000
+vt 1.000000 0.125000
+vt 0.000000 0.062500
+vt 1.000000 0.062500
+vt 1.000000 0.000000
+vt 0.000000 0.000000
+vt 0.312500 0.625000
+vt 0.312500 0.562500
+vt 0.375000 0.562500
+vt 0.375000 0.625000
+vt 0.250000 0.625000
+vt 0.250000 0.562500
+vt 0.375000 0.687500
+vt 0.312500 0.687500
+vt 0.250000 0.687500
+vt 0.437500 0.625000
+vt 0.437500 0.687500
+vt 1.000000 0.375000
+vt 0.000000 0.375000
+vt 0.125000 0.625000
+vt 0.125000 0.562500
+vt 0.187500 0.562500
+vt 0.187500 0.625000
+vt 0.937500 0.375000
+vt 0.062500 0.375000
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 1.000000 -0.008800 0.000000
+vn -1.000000 0.008800 0.000000
+vn 0.000000 0.242500 -0.970100
+vn 0.000000 -0.242500 0.970100
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 1.000000 0.005300 0.000000
+vn -1.000000 -0.005300 0.000000
+vn -0.000000 -0.258800 -0.965900
+vn 0.000000 -0.965900 0.258800
+vn -0.000000 0.965900 -0.258800
+vn 0.000000 0.258800 0.965900
+g Cube_Cube_strings
+s off
+f 1/1/1 4/2/1 8/3/1 5/4/1
+f 2/5/2 1/6/2 5/7/2 6/8/2
+f 3/9/3 2/1/3 6/4/3 7/10/3
+f 4/6/4 3/3/4 7/2/4 8/7/4
+f 54/11/5 55/12/5 51/13/5 50/14/5
+f 55/15/3 56/16/3 52/17/3 51/18/3
+f 56/16/6 57/19/6 53/20/6 52/17/6
+f 57/19/1 54/11/1 50/14/1 53/20/1
+f 54/11/7 57/19/7 61/21/7 58/22/7
+f 66/23/4 62/24/4 63/25/4 67/26/4
+f 57/19/2 56/16/2 60/27/2 61/21/2
+f 56/16/8 55/15/8 59/28/8 60/27/8
+f 55/12/4 54/11/4 58/22/4 59/29/4
+f 67/30/3 63/31/3 64/32/3 68/33/3
+f 68/34/2 64/35/2 65/31/2 69/30/2
+f 69/33/1 65/32/1 62/24/1 66/23/1
+f 62/33/9 65/23/9 64/36/9 63/37/9
+f 69/37/10 66/38/10 67/30/10 68/33/10
+f 167/1/1 170/2/1 174/3/1 171/4/1
+f 168/5/2 167/6/2 171/7/2 172/8/2
+f 169/9/3 168/1/3 172/4/3 173/10/3
+f 170/6/4 169/3/4 173/2/4 174/7/4
+f 179/11/11 180/12/11 176/13/11 175/14/11
+f 180/15/3 181/16/3 177/17/3 176/18/3
+f 181/16/12 182/19/12 178/20/12 177/17/12
+f 182/19/1 179/11/1 175/14/1 178/20/1
+f 179/11/7 182/19/7 186/21/7 183/22/7
+f 191/23/4 187/24/4 188/25/4 192/26/4
+f 182/19/2 181/16/2 185/27/2 186/21/2
+f 181/16/8 180/15/8 184/28/8 185/27/8
+f 180/12/4 179/11/4 183/22/4 184/29/4
+f 192/30/3 188/31/3 189/32/3 193/33/3
+f 193/34/2 189/35/2 190/31/2 194/30/2
+f 194/33/1 190/32/1 187/24/1 191/23/1
+f 187/33/9 190/23/9 189/36/9 188/37/9
+f 194/37/10 191/38/10 192/30/10 193/33/10
+f 195/1/1 198/2/1 202/3/1 199/4/1
+f 196/5/2 195/6/2 199/7/2 200/8/2
+f 197/9/3 196/1/3 200/4/3 201/10/3
+f 198/6/4 197/3/4 201/2/4 202/7/4
+g Cube_Cube_plastic
+f 13/39/4 14/40/4 10/9/4 9/2/4
+f 15/3/2 16/10/2 12/41/2 11/42/2
+f 16/29/1 13/13/1 9/20/1 12/21/1
+f 9/18/10 10/9/10 11/10/10 12/28/10
+f 16/10/9 15/28/9 14/18/9 13/9/9
+f 21/43/4 22/44/4 18/45/4 17/46/4
+f 23/47/2 24/48/2 20/34/2 19/49/2
+f 24/50/13 21/51/13 17/52/13 20/53/13
+f 17/52/14 18/54/14 19/55/14 20/53/14
+f 24/56/15 23/55/15 22/54/15 21/57/15
+f 18/47/16 22/51/16 23/50/16 19/44/16
+f 10/20/3 14/18/3 15/28/3 11/21/3
+f 37/58/4 38/59/4 34/60/4 33/61/4
+f 39/62/2 40/63/2 36/59/2 35/58/2
+f 40/58/1 37/61/1 33/64/1 36/65/1
+f 33/66/10 34/62/10 35/58/10 36/65/10
+f 40/67/9 39/68/9 38/64/9 37/61/9
+f 45/2/4 46/7/4 42/6/4 41/3/4
+f 46/7/3 47/8/3 43/5/3 42/6/3
+f 47/45/2 48/69/2 44/70/2 43/49/2
+f 48/8/1 45/70/1 41/69/1 44/5/1
+f 41/71/10 42/72/10 43/73/10 44/74/10
+f 32/54/14 31/57/14 30/56/14 29/55/14
+f 25/50/13 28/51/13 32/52/13 29/53/13
+f 26/69/2 25/75/2 29/43/2 30/44/2
+f 28/76/4 27/70/4 31/47/4 32/48/4
+f 25/55/15 26/53/15 27/52/15 28/54/15
+f 31/47/16 27/51/16 26/50/16 30/44/16
+f 75/43/4 76/44/4 72/45/4 71/46/4
+f 77/47/2 78/48/2 74/34/2 73/49/2
+f 78/50/13 75/51/13 71/52/13 74/53/13
+f 71/52/14 72/54/14 73/55/14 74/53/14
+f 78/56/15 77/55/15 76/54/15 75/57/15
+f 83/43/4 84/44/4 80/45/4 79/46/4
+f 85/47/2 86/48/2 82/34/2 81/49/2
+f 86/50/13 83/51/13 79/52/13 82/53/13
+f 79/52/14 80/54/14 81/55/14 82/53/14
+f 86/56/15 85/55/15 84/54/15 83/57/15
+f 91/43/4 92/44/4 88/45/4 87/46/4
+f 93/47/2 94/48/2 90/34/2 89/49/2
+f 94/50/13 91/51/13 87/52/13 90/53/13
+f 87/52/14 88/54/14 89/55/14 90/53/14
+f 94/56/15 93/55/15 92/54/15 91/57/15
+f 99/43/4 100/44/4 96/45/4 95/46/4
+f 101/47/2 102/48/2 98/34/2 97/49/2
+f 102/50/13 99/51/13 95/52/13 98/53/13
+f 95/52/14 96/54/14 97/55/14 98/53/14
+f 102/56/15 101/55/15 100/54/15 99/57/15
+f 107/43/4 108/44/4 104/45/4 103/46/4
+f 109/47/2 110/48/2 106/34/2 105/49/2
+f 110/50/13 107/51/13 103/52/13 106/53/13
+f 103/52/14 104/54/14 105/55/14 106/53/14
+f 110/56/15 109/55/15 108/54/15 107/57/15
+f 115/43/4 116/44/4 112/45/4 111/46/4
+f 117/47/2 118/48/2 114/34/2 113/49/2
+f 118/50/13 115/51/13 111/52/13 114/53/13
+f 111/52/14 112/54/14 113/55/14 114/53/14
+f 118/56/15 117/55/15 116/54/15 115/57/15
+f 123/43/4 124/44/4 120/45/4 119/46/4
+f 125/47/2 126/48/2 122/34/2 121/49/2
+f 126/50/13 123/51/13 119/52/13 122/53/13
+f 119/52/14 120/54/14 121/55/14 122/53/14
+f 126/56/15 125/55/15 124/54/15 123/57/15
+f 131/43/4 132/44/4 128/45/4 127/46/4
+f 133/47/2 134/48/2 130/34/2 129/49/2
+f 134/50/13 131/51/13 127/52/13 130/53/13
+f 127/52/14 128/54/14 129/55/14 130/53/14
+f 134/56/15 133/55/15 132/54/15 131/57/15
+f 139/43/4 140/44/4 136/45/4 135/46/4
+f 141/47/2 142/48/2 138/34/2 137/49/2
+f 142/50/13 139/51/13 135/52/13 138/53/13
+f 135/52/14 136/54/14 137/55/14 138/53/14
+f 142/56/15 141/55/15 140/54/15 139/57/15
+f 147/43/4 148/44/4 144/45/4 143/46/4
+f 149/47/2 150/48/2 146/34/2 145/49/2
+f 150/50/13 147/51/13 143/52/13 146/53/13
+f 143/52/14 144/54/14 145/55/14 146/53/14
+f 150/56/15 149/55/15 148/54/15 147/57/15
+f 155/43/4 156/44/4 152/45/4 151/46/4
+f 157/47/2 158/48/2 154/34/2 153/49/2
+f 158/50/13 155/51/13 151/52/13 154/53/13
+f 151/52/14 152/54/14 153/55/14 154/53/14
+f 158/56/15 157/55/15 156/54/15 155/57/15
+f 163/43/4 164/44/4 160/45/4 159/46/4
+f 165/47/2 166/48/2 162/34/2 161/49/2
+f 166/50/13 163/51/13 159/52/13 162/53/13
+f 159/52/14 160/54/14 161/55/14 162/53/14
+f 166/56/15 165/55/15 164/54/15 163/57/15
diff --git a/homedecor_modpack/homedecor/models/homedecor_wine_rack.obj b/homedecor_modpack/homedecor/models/homedecor_wine_rack.obj
new file mode 100644
index 0000000..49dc387
--- /dev/null
+++ b/homedecor_modpack/homedecor/models/homedecor_wine_rack.obj
@@ -0,0 +1,4925 @@
+# Blender v2.73 (sub 0) OBJ File: 'wine-rack2.blend'
+# www.blender.org
+o bottle.1_Cylinder.007
+v 0.260051 0.389727 -0.221816
+v 0.249993 0.365389 -0.221816
+v 0.260051 0.389727 -0.172789
+v 0.239881 0.389745 -0.221816
+v 0.239881 0.389746 -0.172789
+v 0.225634 0.375496 -0.221816
+v 0.225634 0.375496 -0.172789
+v 0.225657 0.355326 -0.221816
+v 0.225657 0.355327 -0.172789
+v 0.239935 0.341050 -0.221816
+v 0.239935 0.341050 -0.172789
+v 0.260105 0.341032 -0.221816
+v 0.260105 0.341032 -0.172789
+v 0.274351 0.355282 -0.221816
+v 0.274351 0.355282 -0.172789
+v 0.272718 0.420380 0.267663
+v 0.249993 0.365389 0.267663
+v 0.274329 0.375452 -0.172789
+v 0.274329 0.375452 -0.221816
+v 0.277426 0.431774 -0.003406
+v 0.278349 0.434006 0.008701
+v 0.222412 0.431824 -0.003406
+v 0.221484 0.434057 0.008701
+v 0.183552 0.392957 -0.003406
+v 0.181319 0.393884 0.008701
+v 0.181382 0.337019 0.008701
+v 0.183614 0.337942 -0.003406
+v 0.221636 0.296772 0.008701
+v 0.222559 0.299005 -0.003406
+v 0.277574 0.298955 -0.003406
+v 0.278501 0.296721 0.008701
+v 0.318667 0.336894 0.008701
+v 0.316433 0.337822 -0.003406
+v 0.318603 0.393760 0.008701
+v 0.316372 0.392836 -0.003406
+v 0.261884 0.394163 -0.111603
+v 0.238038 0.394185 -0.111603
+v 0.221195 0.377338 -0.111603
+v 0.221221 0.353492 -0.111603
+v 0.238102 0.336615 -0.111603
+v 0.261948 0.336594 -0.111603
+v 0.278791 0.353440 -0.111603
+v 0.278764 0.377287 -0.111603
+v 0.278349 0.434006 0.258125
+v 0.227145 0.420422 0.267663
+v 0.221484 0.434057 0.258125
+v 0.194955 0.388226 0.267663
+v 0.181319 0.393884 0.258125
+v 0.181382 0.337019 0.258125
+v 0.195006 0.342652 0.267663
+v 0.221636 0.296772 0.258125
+v 0.227267 0.310398 0.267663
+v 0.278501 0.296721 0.258125
+v 0.272840 0.310356 0.267663
+v 0.305031 0.342552 0.267663
+v 0.318667 0.336894 0.258125
+v 0.304980 0.388125 0.267663
+v 0.318603 0.393760 0.258125
+v 0.279141 0.435920 0.130736
+v 0.220689 0.435973 0.130736
+v 0.179403 0.394679 0.130736
+v 0.179468 0.336228 0.130736
+v 0.220845 0.294858 0.130736
+v 0.279296 0.294805 0.130736
+v 0.320583 0.336099 0.130736
+v 0.320517 0.394551 0.130736
+v -0.484375 -0.500000 0.265625
+v -0.500000 -0.500000 0.265625
+v 0.000000 -0.015625 0.265625
+v 0.500000 0.484375 0.265625
+v 0.484375 0.500000 0.265625
+v 0.000000 0.015625 0.265625
+v 0.500000 0.500000 0.265625
+v -0.500000 -0.484375 0.265625
+v 0.015625 0.000000 0.265625
+v -0.015625 -0.000000 0.265625
+v 0.250000 0.234375 0.265625
+v 0.250000 0.265625 0.265625
+v 0.265625 0.250000 0.265625
+v 0.234375 0.250000 0.265625
+v -0.250000 -0.265625 0.265625
+v -0.250000 -0.234375 0.265625
+v -0.234375 -0.250000 0.265625
+v -0.265625 -0.250000 0.265625
+v 0.125000 0.109375 0.265625
+v 0.125000 0.140625 0.265625
+v 0.140625 0.125000 0.265625
+v 0.109375 0.125000 0.265625
+v 0.375000 0.359375 0.265625
+v 0.375000 0.390625 0.265625
+v 0.390625 0.375000 0.265625
+v 0.359375 0.375000 0.265625
+v -0.125000 -0.140625 0.265625
+v -0.125000 -0.109375 0.265625
+v -0.109375 -0.125000 0.265625
+v -0.140625 -0.125000 0.265625
+v -0.375000 -0.390625 0.265625
+v -0.375000 -0.359375 0.265625
+v -0.359375 -0.375000 0.265625
+v -0.390625 -0.375000 0.265625
+v 0.000000 -0.265625 0.265625
+v 0.500000 0.234375 0.265625
+v 0.484375 0.250000 0.265625
+v 0.500000 0.250000 0.265625
+v 0.000000 -0.234375 0.265625
+v 0.015625 -0.250000 0.265625
+v -0.015625 -0.250000 0.265625
+v 0.250000 -0.015625 0.265625
+v 0.250000 0.015625 0.265625
+v 0.265625 0.000000 0.265625
+v 0.234375 -0.000000 0.265625
+v -0.265625 -0.500000 0.265625
+v -0.234375 -0.500000 0.265625
+v 0.125000 -0.140625 0.265625
+v 0.125000 -0.109375 0.265625
+v 0.140625 -0.125000 0.265625
+v 0.109375 -0.125000 0.265625
+v 0.375000 0.109375 0.265625
+v 0.375000 0.140625 0.265625
+v 0.390625 0.125000 0.265625
+v 0.359375 0.125000 0.265625
+v -0.125000 -0.390625 0.265625
+v -0.125000 -0.359375 0.265625
+v -0.109375 -0.375000 0.265625
+v -0.140625 -0.375000 0.265625
+v 0.500000 -0.015625 0.265625
+v 0.484375 0.000000 0.265625
+v 0.500000 0.000000 0.265625
+v -0.015625 -0.500000 0.265625
+v 0.015625 -0.500000 0.265625
+v 0.250000 -0.265625 0.265625
+v 0.250000 -0.234375 0.265625
+v 0.265625 -0.250000 0.265625
+v 0.234375 -0.250000 0.265625
+v 0.125000 -0.390625 0.265625
+v 0.125000 -0.359375 0.265625
+v 0.140625 -0.375000 0.265625
+v 0.109375 -0.375000 0.265625
+v 0.375000 -0.140625 0.265625
+v 0.375000 -0.109375 0.265625
+v 0.390625 -0.125000 0.265625
+v 0.359375 -0.125000 0.265625
+v 0.500000 -0.265625 0.265625
+v 0.484375 -0.250000 0.265625
+v 0.500000 -0.250000 0.265625
+v 0.234375 -0.500000 0.265625
+v 0.265625 -0.500000 0.265625
+v 0.375000 -0.390625 0.265625
+v 0.375000 -0.359375 0.265625
+v 0.390625 -0.375000 0.265625
+v 0.359375 -0.375000 0.265625
+v -0.484375 -0.250000 0.265625
+v -0.500000 -0.250000 0.265625
+v 0.000000 0.234375 0.265625
+v -0.500000 -0.234375 0.265625
+v 0.000000 0.265625 0.265625
+v 0.015625 0.250000 0.265625
+v -0.015625 0.250000 0.265625
+v 0.265625 0.500000 0.265625
+v 0.234375 0.500000 0.265625
+v -0.250000 -0.015625 0.265625
+v -0.250000 0.015625 0.265625
+v -0.234375 0.000000 0.265625
+v -0.265625 0.000000 0.265625
+v 0.125000 0.359375 0.265625
+v 0.125000 0.390625 0.265625
+v 0.140625 0.375000 0.265625
+v 0.109375 0.375000 0.265625
+v -0.125000 0.109375 0.265625
+v -0.125000 0.140625 0.265625
+v -0.109375 0.125000 0.265625
+v -0.140625 0.125000 0.265625
+v -0.375000 -0.140625 0.265625
+v -0.375000 -0.109375 0.265625
+v -0.359375 -0.125000 0.265625
+v -0.390625 -0.125000 0.265625
+v -0.484375 0.000000 0.265625
+v -0.500000 0.000000 0.265625
+v 0.015625 0.500000 0.265625
+v -0.500000 0.015625 0.265625
+v -0.015625 0.500000 0.265625
+v -0.250000 0.234375 0.265625
+v -0.250000 0.265625 0.265625
+v -0.234375 0.250000 0.265625
+v -0.265625 0.250000 0.265625
+v -0.125000 0.359375 0.265625
+v -0.125000 0.390625 0.265625
+v -0.109375 0.375000 0.265625
+v -0.140625 0.375000 0.265625
+v -0.375000 0.109375 0.265625
+v -0.375000 0.140625 0.265625
+v -0.359375 0.125000 0.265625
+v -0.390625 0.125000 0.265625
+v -0.000001 0.484375 0.265625
+v 0.499999 0.015625 0.265625
+v 0.499999 -0.234375 0.265625
+v -0.250001 0.484375 0.265625
+v 0.484374 -0.500000 0.265625
+v 0.499999 -0.500000 0.265625
+v -0.500001 0.484375 0.265625
+v -0.484376 0.500000 0.265625
+v -0.500001 0.500000 0.265625
+v 0.499999 -0.484375 0.265625
+v -0.500001 0.234375 0.265625
+v 0.249999 -0.484375 0.265625
+v 0.499999 0.265625 0.265625
+v 0.249999 0.484375 0.265625
+v -0.500001 -0.015625 0.265625
+v -0.000001 -0.484375 0.265625
+v -0.500001 -0.265625 0.265625
+v -0.250001 -0.484375 0.265625
+v -0.484375 0.250000 0.265625
+v -0.500000 0.250000 0.265625
+v -0.500000 0.265625 0.265625
+v -0.234375 0.500000 0.265625
+v -0.265625 0.500000 0.265625
+v -0.375000 0.359375 0.265625
+v -0.375000 0.390625 0.265625
+v -0.359375 0.375000 0.265625
+v -0.390625 0.375000 0.265625
+v -0.484375 -0.500000 0.234375
+v -0.500000 -0.500000 0.234375
+v 0.000000 -0.015625 0.234375
+v 0.500000 0.484375 0.234375
+v 0.484375 0.500000 0.234375
+v 0.000000 0.015625 0.234375
+v 0.500000 0.500000 0.234375
+v -0.500000 -0.484375 0.234375
+v 0.015625 0.000000 0.234375
+v -0.015625 -0.000000 0.234375
+v 0.250000 0.234375 0.234375
+v 0.250000 0.265625 0.234375
+v 0.265625 0.250000 0.234375
+v 0.234375 0.250000 0.234375
+v -0.250000 -0.265625 0.234375
+v -0.250000 -0.234375 0.234375
+v -0.234375 -0.250000 0.234375
+v -0.265625 -0.250000 0.234375
+v 0.125000 0.109375 0.234375
+v 0.125000 0.140625 0.234375
+v 0.140625 0.125000 0.234375
+v 0.109375 0.125000 0.234375
+v 0.375000 0.359375 0.234375
+v 0.375000 0.390625 0.234375
+v 0.390625 0.375000 0.234375
+v 0.359375 0.375000 0.234375
+v -0.125000 -0.140625 0.234375
+v -0.125000 -0.109375 0.234375
+v -0.109375 -0.125000 0.234375
+v -0.140625 -0.125000 0.234375
+v -0.375000 -0.390625 0.234375
+v -0.375000 -0.359375 0.234375
+v -0.359375 -0.375000 0.234375
+v -0.390625 -0.375000 0.234375
+v 0.000000 -0.265625 0.234375
+v 0.500000 0.234375 0.234375
+v 0.484375 0.250000 0.234375
+v 0.500000 0.250000 0.234375
+v 0.000000 -0.234375 0.234375
+v 0.015625 -0.250000 0.234375
+v -0.015625 -0.250000 0.234375
+v 0.250000 0.015625 0.234375
+v 0.265625 0.000000 0.234375
+v 0.234375 -0.000000 0.234375
+v -0.265625 -0.500000 0.234375
+v -0.234375 -0.500000 0.234375
+v 0.125000 -0.140625 0.234375
+v 0.125000 -0.109375 0.234375
+v 0.140625 -0.125000 0.234375
+v 0.109375 -0.125000 0.234375
+v 0.375000 0.109375 0.234375
+v 0.375000 0.140625 0.234375
+v 0.390625 0.125000 0.234375
+v 0.359375 0.125000 0.234375
+v -0.125000 -0.390625 0.234375
+v -0.125000 -0.359375 0.234375
+v -0.109375 -0.375000 0.234375
+v -0.140625 -0.375000 0.234375
+v 0.500000 -0.015625 0.234375
+v 0.484375 0.000000 0.234375
+v 0.500000 0.000000 0.234375
+v -0.015625 -0.500000 0.234375
+v 0.015625 -0.500000 0.234375
+v 0.250000 -0.265625 0.234375
+v 0.250000 -0.234375 0.234375
+v 0.265625 -0.250000 0.234375
+v 0.234375 -0.250000 0.234375
+v 0.125000 -0.390625 0.234375
+v 0.125000 -0.359375 0.234375
+v 0.140625 -0.375000 0.234375
+v 0.109375 -0.375000 0.234375
+v 0.375000 -0.109375 0.234375
+v 0.390625 -0.125000 0.234375
+v 0.500000 -0.265625 0.234375
+v 0.484375 -0.250000 0.234375
+v 0.500000 -0.250000 0.234375
+v 0.234375 -0.500000 0.234375
+v 0.265625 -0.500000 0.234375
+v 0.375000 -0.390625 0.234375
+v 0.375000 -0.359375 0.234375
+v 0.390625 -0.375000 0.234375
+v 0.359375 -0.375000 0.234375
+v -0.484375 -0.250000 0.234375
+v -0.500000 -0.250000 0.234375
+v -0.500000 -0.234375 0.234375
+v 0.000000 0.265625 0.234375
+v 0.015625 0.250000 0.234375
+v -0.015625 0.250000 0.234375
+v 0.265625 0.500000 0.234375
+v 0.234375 0.500000 0.234375
+v -0.250000 -0.015625 0.234375
+v -0.250000 0.015625 0.234375
+v -0.234375 0.000000 0.234375
+v -0.265625 0.000000 0.234375
+v 0.125000 0.390625 0.234375
+v 0.140625 0.375000 0.234375
+v 0.109375 0.375000 0.234375
+v -0.125000 0.109375 0.234375
+v -0.125000 0.140625 0.234375
+v -0.140625 0.125000 0.234375
+v -0.375000 -0.140625 0.234375
+v -0.484375 0.000000 0.234375
+v -0.500000 0.000000 0.234375
+v 0.015625 0.500000 0.234375
+v -0.500000 0.015625 0.234375
+v -0.015625 0.500000 0.234375
+v -0.250000 0.234375 0.234375
+v -0.250000 0.265625 0.234375
+v -0.234375 0.250000 0.234375
+v -0.265625 0.250000 0.234375
+v -0.125000 0.359375 0.234375
+v -0.125000 0.390625 0.234375
+v -0.109375 0.375000 0.234375
+v -0.140625 0.375000 0.234375
+v -0.375000 0.109375 0.234375
+v -0.375000 0.140625 0.234375
+v -0.390625 0.125000 0.234375
+v -0.000001 0.484375 0.234375
+v 0.499999 0.015625 0.234375
+v 0.499999 -0.234375 0.234375
+v -0.250001 0.484375 0.234375
+v 0.484374 -0.500000 0.234375
+v 0.499999 -0.500000 0.234375
+v -0.500001 0.484375 0.234375
+v -0.484376 0.500000 0.234375
+v -0.500001 0.500000 0.234375
+v 0.499999 -0.484375 0.234375
+v -0.500001 0.234375 0.234375
+v 0.249999 -0.484375 0.234375
+v 0.499999 0.265625 0.234375
+v 0.249999 0.484375 0.234375
+v -0.500001 -0.015625 0.234375
+v -0.000001 -0.484375 0.234375
+v -0.500001 -0.265625 0.234375
+v -0.250001 -0.484375 0.234375
+v -0.484375 0.250000 0.234375
+v -0.500000 0.250000 0.234375
+v -0.500000 0.265625 0.234375
+v -0.234375 0.500000 0.234375
+v -0.265625 0.500000 0.234375
+v -0.375000 0.359375 0.234375
+v -0.375000 0.390625 0.234375
+v -0.359375 0.375000 0.234375
+v -0.390625 0.375000 0.234375
+v -0.484375 -0.500000 0.031250
+v -0.500000 -0.500000 0.031250
+v 0.000000 -0.015625 0.031250
+v 0.500000 0.484375 0.031250
+v 0.484375 0.500000 0.031250
+v 0.000000 0.015625 0.031250
+v 0.500000 0.500000 0.031250
+v -0.500000 -0.484375 0.031250
+v 0.015625 0.000000 0.031250
+v -0.015625 -0.000000 0.031250
+v 0.250000 0.234375 0.031250
+v 0.250000 0.265625 0.031250
+v 0.265625 0.250000 0.031250
+v 0.234375 0.250000 0.031250
+v -0.250000 -0.265625 0.031250
+v -0.250000 -0.234375 0.031250
+v -0.234375 -0.250000 0.031250
+v -0.265625 -0.250000 0.031250
+v 0.125000 0.109375 0.031250
+v 0.125000 0.140625 0.031250
+v 0.140625 0.125000 0.031250
+v 0.109375 0.125000 0.031250
+v 0.375000 0.359375 0.031250
+v 0.375000 0.390625 0.031250
+v 0.390625 0.375000 0.031250
+v 0.359375 0.375000 0.031250
+v -0.125000 -0.140625 0.031250
+v -0.125000 -0.109375 0.031250
+v -0.109375 -0.125000 0.031250
+v -0.140625 -0.125000 0.031250
+v -0.375000 -0.390625 0.031250
+v -0.375000 -0.359375 0.031250
+v -0.359375 -0.375000 0.031250
+v -0.390625 -0.375000 0.031250
+v 0.000000 -0.265625 0.031250
+v 0.500000 0.234375 0.031250
+v 0.484375 0.250000 0.031250
+v 0.500000 0.250000 0.031250
+v 0.000000 -0.234375 0.031250
+v 0.015625 -0.250000 0.031250
+v -0.015625 -0.250000 0.031250
+v 0.250000 0.015625 0.031250
+v 0.265625 0.000000 0.031250
+v 0.234375 -0.000000 0.031250
+v -0.265625 -0.500000 0.031250
+v -0.234375 -0.500000 0.031250
+v 0.125000 -0.140625 0.031250
+v 0.125000 -0.109375 0.031250
+v 0.140625 -0.125000 0.031250
+v 0.109375 -0.125000 0.031250
+v 0.375000 0.109375 0.031250
+v 0.375000 0.140625 0.031250
+v 0.390625 0.125000 0.031250
+v 0.359375 0.125000 0.031250
+v -0.125000 -0.390625 0.031250
+v -0.125000 -0.359375 0.031250
+v -0.109375 -0.375000 0.031250
+v -0.140625 -0.375000 0.031250
+v 0.500000 -0.015625 0.031250
+v 0.484375 0.000000 0.031250
+v 0.500000 0.000000 0.031250
+v -0.015625 -0.500000 0.031250
+v 0.015625 -0.500000 0.031250
+v 0.250000 -0.265625 0.031250
+v 0.250000 -0.234375 0.031250
+v 0.265625 -0.250000 0.031250
+v 0.234375 -0.250000 0.031250
+v 0.125000 -0.390625 0.031250
+v 0.125000 -0.359375 0.031250
+v 0.140625 -0.375000 0.031250
+v 0.109375 -0.375000 0.031250
+v 0.375000 -0.109375 0.031250
+v 0.390625 -0.125000 0.031250
+v 0.500000 -0.265625 0.031250
+v 0.484375 -0.250000 0.031250
+v 0.500000 -0.250000 0.031250
+v 0.234375 -0.500000 0.031250
+v 0.265625 -0.500000 0.031250
+v 0.375000 -0.390625 0.031250
+v 0.375000 -0.359375 0.031250
+v 0.390625 -0.375000 0.031250
+v 0.359375 -0.375000 0.031250
+v -0.484375 -0.250000 0.031250
+v -0.500000 -0.250000 0.031250
+v -0.500000 -0.234375 0.031250
+v 0.000000 0.265625 0.031250
+v 0.015625 0.250000 0.031250
+v -0.015625 0.250000 0.031250
+v 0.265625 0.500000 0.031250
+v 0.234375 0.500000 0.031250
+v -0.250000 -0.015625 0.031250
+v -0.250000 0.015625 0.031250
+v -0.234375 0.000000 0.031250
+v -0.265625 0.000000 0.031250
+v 0.125000 0.390625 0.031250
+v 0.140625 0.375000 0.031250
+v 0.109375 0.375000 0.031250
+v -0.125000 0.109375 0.031250
+v -0.125000 0.140625 0.031250
+v -0.140625 0.125000 0.031250
+v -0.375000 -0.140625 0.031250
+v -0.375000 -0.109375 0.031250
+v -0.359375 -0.125000 0.031250
+v -0.390625 -0.125000 0.031250
+v -0.484375 0.000000 0.031250
+v -0.500000 0.000000 0.031250
+v 0.015625 0.500000 0.031250
+v -0.500000 0.015625 0.031250
+v -0.015625 0.500000 0.031250
+v -0.250000 0.234375 0.031250
+v -0.250000 0.265625 0.031250
+v -0.234375 0.250000 0.031250
+v -0.265625 0.250000 0.031250
+v -0.125000 0.359375 0.031250
+v -0.125000 0.390625 0.031250
+v -0.109375 0.375000 0.031250
+v -0.140625 0.375000 0.031250
+v -0.375000 0.109375 0.031250
+v -0.375000 0.140625 0.031250
+v -0.359375 0.125000 0.031250
+v -0.390625 0.125000 0.031250
+v -0.000001 0.484375 0.031250
+v 0.499999 0.015625 0.031250
+v 0.499999 -0.234375 0.031250
+v -0.250001 0.484375 0.031250
+v 0.484374 -0.500000 0.031250
+v 0.499999 -0.500000 0.031250
+v -0.500001 0.484375 0.031250
+v -0.484376 0.500000 0.031250
+v -0.500001 0.500000 0.031250
+v 0.499999 -0.484375 0.031250
+v -0.500001 0.234375 0.031250
+v 0.249999 -0.484375 0.031250
+v 0.499999 0.265625 0.031250
+v 0.249999 0.484375 0.031250
+v -0.500001 -0.015625 0.031250
+v -0.000001 -0.484375 0.031250
+v -0.500001 -0.265625 0.031250
+v -0.250001 -0.484375 0.031250
+v -0.484375 0.250000 0.031250
+v -0.500000 0.250000 0.031250
+v -0.500000 0.265625 0.031250
+v -0.234375 0.500000 0.031250
+v -0.265625 0.500000 0.031250
+v -0.375000 0.359375 0.031250
+v -0.375000 0.390625 0.031250
+v -0.359375 0.375000 0.031250
+v -0.390625 0.375000 0.031250
+v -0.484375 -0.500000 -0.000000
+v -0.500000 -0.500000 -0.000000
+v 0.000000 -0.015625 0.000000
+v 0.500000 0.484375 -0.000000
+v 0.484375 0.500000 -0.000000
+v 0.000000 0.015625 -0.000000
+v 0.500000 0.500000 -0.000000
+v -0.500000 -0.484375 -0.000000
+v 0.015625 0.000000 -0.000000
+v -0.015625 -0.000000 0.000000
+v 0.250000 0.234375 0.000000
+v 0.250000 0.265625 -0.000000
+v 0.265625 0.250000 -0.000000
+v 0.234375 0.250000 0.000000
+v -0.250000 -0.265625 0.000000
+v -0.250000 -0.234375 -0.000000
+v -0.234375 -0.250000 -0.000000
+v -0.265625 -0.250000 0.000000
+v 0.125000 0.109375 0.000000
+v 0.125000 0.140625 -0.000000
+v 0.140625 0.125000 -0.000000
+v 0.109375 0.125000 0.000000
+v 0.375000 0.359375 0.000000
+v 0.375000 0.390625 -0.000000
+v 0.390625 0.375000 -0.000000
+v 0.359375 0.375000 0.000000
+v -0.125000 -0.140625 0.000000
+v -0.125000 -0.109375 -0.000000
+v -0.109375 -0.125000 -0.000000
+v -0.140625 -0.125000 0.000000
+v -0.375000 -0.390625 0.000000
+v -0.375000 -0.359375 -0.000000
+v -0.359375 -0.375000 -0.000000
+v -0.390625 -0.375000 0.000000
+v 0.000000 -0.265625 0.000000
+v 0.500000 0.234375 -0.000000
+v 0.484375 0.250000 -0.000000
+v 0.500000 0.250000 -0.000000
+v 0.000000 -0.234375 -0.000000
+v 0.015625 -0.250000 -0.000000
+v -0.015625 -0.250000 0.000000
+v 0.250000 -0.015625 0.000000
+v 0.250000 0.015625 -0.000000
+v 0.265625 0.000000 -0.000000
+v 0.234375 -0.000000 0.000000
+v -0.265625 -0.500000 -0.000000
+v -0.234375 -0.500000 -0.000000
+v 0.125000 -0.140625 0.000000
+v 0.125000 -0.109375 -0.000000
+v 0.140625 -0.125000 -0.000000
+v 0.109375 -0.125000 0.000000
+v 0.375000 0.109375 0.000000
+v 0.375000 0.140625 -0.000000
+v 0.390625 0.125000 -0.000000
+v 0.359375 0.125000 0.000000
+v -0.125000 -0.390625 0.000000
+v -0.125000 -0.359375 -0.000000
+v -0.109375 -0.375000 -0.000000
+v -0.140625 -0.375000 0.000000
+v 0.500000 -0.015625 -0.000000
+v 0.484375 0.000000 -0.000000
+v 0.500000 0.000000 -0.000000
+v -0.015625 -0.500000 -0.000000
+v 0.015625 -0.500000 -0.000000
+v 0.250000 -0.265625 -0.000000
+v 0.250000 -0.234375 -0.000000
+v 0.265625 -0.250000 -0.000000
+v 0.234375 -0.250000 -0.000000
+v 0.125000 -0.390625 0.000000
+v 0.125000 -0.359375 -0.000000
+v 0.140625 -0.375000 -0.000000
+v 0.109375 -0.375000 0.000000
+v 0.375000 -0.140625 0.000000
+v 0.375000 -0.109375 -0.000000
+v 0.390625 -0.125000 -0.000000
+v 0.359375 -0.125000 0.000000
+v 0.500000 -0.265625 -0.000000
+v 0.484375 -0.250000 -0.000000
+v 0.500000 -0.250000 -0.000000
+v 0.234375 -0.500000 -0.000000
+v 0.265625 -0.500000 -0.000000
+v 0.375000 -0.390625 -0.000000
+v 0.375000 -0.359375 -0.000000
+v 0.390625 -0.375000 -0.000000
+v 0.359375 -0.375000 -0.000000
+v -0.484375 -0.250000 -0.000000
+v -0.500000 -0.250000 -0.000000
+v 0.000000 0.234375 0.000000
+v -0.500000 -0.234375 -0.000000
+v 0.000000 0.265625 -0.000000
+v 0.015625 0.250000 -0.000000
+v -0.015625 0.250000 -0.000000
+v 0.265625 0.500000 -0.000000
+v 0.234375 0.500000 -0.000000
+v -0.250000 -0.015625 0.000000
+v -0.250000 0.015625 -0.000000
+v -0.234375 0.000000 -0.000000
+v -0.265625 0.000000 0.000000
+v 0.125000 0.359375 0.000000
+v 0.125000 0.390625 -0.000000
+v 0.140625 0.375000 -0.000000
+v 0.109375 0.375000 0.000000
+v -0.125000 0.109375 0.000000
+v -0.125000 0.140625 -0.000000
+v -0.109375 0.125000 -0.000000
+v -0.140625 0.125000 0.000000
+v -0.375000 -0.140625 0.000000
+v -0.375000 -0.109375 -0.000000
+v -0.359375 -0.125000 -0.000000
+v -0.390625 -0.125000 0.000000
+v -0.484375 0.000000 -0.000000
+v -0.500000 0.000000 -0.000000
+v 0.015625 0.500000 0.000000
+v -0.500000 0.015625 -0.000000
+v -0.015625 0.500000 0.000000
+v -0.250000 0.234375 0.000000
+v -0.250000 0.265625 -0.000000
+v -0.234375 0.250000 -0.000000
+v -0.265625 0.250000 0.000000
+v -0.125000 0.359375 0.000000
+v -0.125000 0.390625 -0.000000
+v -0.109375 0.375000 -0.000000
+v -0.140625 0.375000 0.000000
+v -0.375000 0.109375 0.000000
+v -0.375000 0.140625 -0.000000
+v -0.359375 0.125000 -0.000000
+v -0.390625 0.125000 0.000000
+v -0.000001 0.484375 0.000000
+v 0.499999 0.015625 -0.000000
+v 0.499999 -0.234375 -0.000000
+v -0.250001 0.484375 -0.000000
+v 0.484374 -0.500000 -0.000000
+v 0.499999 -0.500000 -0.000000
+v -0.500001 0.484375 -0.000000
+v -0.484376 0.500000 -0.000000
+v -0.500001 0.500000 -0.000000
+v 0.499999 -0.484375 -0.000000
+v -0.500001 0.234375 -0.000000
+v 0.249999 -0.484375 -0.000000
+v 0.499999 0.265625 -0.000000
+v 0.249999 0.484375 -0.000000
+v -0.500001 -0.015625 -0.000000
+v -0.000001 -0.484375 -0.000000
+v -0.500001 -0.265625 -0.000000
+v -0.250001 -0.484375 -0.000000
+v -0.484375 0.250000 -0.000000
+v -0.500000 0.250000 -0.000000
+v -0.500000 0.265625 -0.000000
+v -0.234375 0.500000 0.000000
+v -0.265625 0.500000 0.000000
+v -0.375000 0.359375 0.000000
+v -0.375000 0.390625 -0.000000
+v -0.359375 0.375000 -0.000000
+v -0.390625 0.375000 0.000000
+v 0.125000 0.359375 0.234375
+v 0.125000 0.359375 0.031250
+v 0.000000 0.234375 0.234375
+v 0.000000 0.234375 0.031250
+v -0.109375 0.125000 0.234375
+v -0.109375 0.125000 0.031250
+v -0.359375 0.125000 0.234375
+v 0.250000 -0.015625 0.234375
+v 0.250000 -0.015625 0.031250
+v 0.375000 -0.140625 0.234375
+v 0.359375 -0.125000 0.234375
+v 0.375000 -0.140625 0.031250
+v 0.359375 -0.125000 0.031250
+v -0.375000 -0.109375 0.234375
+v -0.359375 -0.125000 0.234375
+v -0.390625 -0.125000 0.234375
+v 0.010051 0.389728 -0.221816
+v -0.000008 0.365389 -0.221816
+v 0.010051 0.389728 -0.172789
+v -0.010119 0.389745 -0.221816
+v -0.010120 0.389746 -0.172789
+v -0.024366 0.375497 -0.221816
+v -0.024366 0.375497 -0.172789
+v -0.024343 0.355326 -0.221816
+v -0.024344 0.355327 -0.172789
+v -0.010066 0.341051 -0.221816
+v -0.010066 0.341051 -0.172789
+v 0.010104 0.341033 -0.221816
+v 0.010104 0.341033 -0.172789
+v 0.024351 0.355282 -0.221816
+v 0.024351 0.355282 -0.172789
+v 0.022718 0.420381 0.267663
+v -0.000008 0.365389 0.267663
+v 0.024329 0.375452 -0.172789
+v 0.024329 0.375452 -0.221816
+v 0.027426 0.431774 -0.003406
+v 0.028349 0.434006 0.008701
+v -0.027589 0.431824 -0.003406
+v -0.028516 0.434058 0.008701
+v -0.066448 0.392957 -0.003406
+v -0.068681 0.393884 0.008701
+v -0.068618 0.337019 0.008701
+v -0.066386 0.337942 -0.003406
+v -0.028364 0.296773 0.008701
+v -0.027442 0.299005 -0.003406
+v 0.027574 0.298955 -0.003406
+v 0.028501 0.296722 0.008701
+v 0.068666 0.336894 0.008701
+v 0.066433 0.337822 -0.003406
+v 0.068603 0.393760 0.008701
+v 0.066371 0.392837 -0.003406
+v 0.011883 0.394163 -0.111603
+v -0.011962 0.394186 -0.111603
+v -0.028805 0.377339 -0.111603
+v -0.028779 0.353493 -0.111603
+v -0.011899 0.336616 -0.111603
+v 0.011948 0.336594 -0.111603
+v 0.028791 0.353441 -0.111603
+v 0.028764 0.377287 -0.111603
+v 0.028349 0.434006 0.258125
+v -0.022855 0.420423 0.267663
+v -0.028516 0.434058 0.258125
+v -0.055045 0.388226 0.267663
+v -0.068682 0.393885 0.258125
+v -0.068618 0.337019 0.258125
+v -0.054994 0.342652 0.267663
+v -0.028364 0.296773 0.258125
+v -0.022733 0.310398 0.267663
+v 0.028501 0.296721 0.258125
+v 0.022840 0.310356 0.267663
+v 0.055030 0.342553 0.267663
+v 0.068666 0.336894 0.258125
+v 0.054980 0.388126 0.267663
+v 0.068603 0.393760 0.258125
+v 0.029140 0.435920 0.130736
+v -0.029311 0.435973 0.130736
+v -0.070597 0.394680 0.130736
+v -0.070533 0.336228 0.130736
+v -0.029155 0.294859 0.130736
+v 0.029296 0.294806 0.130736
+v 0.070583 0.336100 0.130736
+v 0.070517 0.394551 0.130736
+v -0.239949 0.389727 -0.221816
+v -0.250007 0.365389 -0.221816
+v -0.239949 0.389727 -0.172789
+v -0.260119 0.389745 -0.221816
+v -0.260119 0.389746 -0.172789
+v -0.274366 0.375496 -0.221816
+v -0.274366 0.375496 -0.172789
+v -0.274343 0.355326 -0.221816
+v -0.274343 0.355327 -0.172789
+v -0.260065 0.341050 -0.221816
+v -0.260065 0.341050 -0.172789
+v -0.239895 0.341032 -0.221816
+v -0.239895 0.341032 -0.172789
+v -0.225649 0.355282 -0.221816
+v -0.225649 0.355282 -0.172789
+v -0.227282 0.420380 0.267663
+v -0.250007 0.365389 0.267663
+v -0.225670 0.375452 -0.172789
+v -0.225670 0.375452 -0.221816
+v -0.222573 0.431774 -0.003406
+v -0.221651 0.434006 0.008701
+v -0.277588 0.431824 -0.003406
+v -0.278516 0.434057 0.008701
+v -0.316448 0.392957 -0.003406
+v -0.318681 0.393884 0.008701
+v -0.318618 0.337019 0.008701
+v -0.316386 0.337942 -0.003406
+v -0.278364 0.296772 0.008701
+v -0.277441 0.299005 -0.003406
+v -0.222426 0.298955 -0.003406
+v -0.221499 0.296721 0.008701
+v -0.181333 0.336894 0.008701
+v -0.183567 0.337822 -0.003406
+v -0.181397 0.393759 0.008701
+v -0.183628 0.392836 -0.003406
+v -0.238116 0.394163 -0.111603
+v -0.261962 0.394185 -0.111603
+v -0.278805 0.377338 -0.111603
+v -0.278778 0.353492 -0.111603
+v -0.261898 0.336615 -0.111603
+v -0.238052 0.336593 -0.111603
+v -0.221209 0.353440 -0.111603
+v -0.221235 0.377287 -0.111603
+v -0.221651 0.434006 0.258125
+v -0.272855 0.420422 0.267663
+v -0.278516 0.434057 0.258125
+v -0.305045 0.388226 0.267663
+v -0.318681 0.393884 0.258125
+v -0.318618 0.337019 0.258125
+v -0.304994 0.342652 0.267663
+v -0.278364 0.296772 0.258125
+v -0.272733 0.310398 0.267663
+v -0.221499 0.296721 0.258125
+v -0.227160 0.310356 0.267663
+v -0.194969 0.342552 0.267663
+v -0.181333 0.336894 0.258125
+v -0.195020 0.388126 0.267663
+v -0.181397 0.393759 0.258125
+v -0.220859 0.435920 0.130736
+v -0.279311 0.435973 0.130736
+v -0.320597 0.394679 0.130736
+v -0.320532 0.336228 0.130736
+v -0.279155 0.294858 0.130736
+v -0.220704 0.294805 0.130736
+v -0.179417 0.336099 0.130736
+v -0.179483 0.394551 0.130736
+v -0.364949 0.264727 -0.221816
+v -0.375007 0.240389 -0.221816
+v -0.364949 0.264727 -0.172789
+v -0.385119 0.264745 -0.221816
+v -0.385119 0.264746 -0.172789
+v -0.399366 0.250496 -0.221816
+v -0.399366 0.250496 -0.172789
+v -0.399343 0.230326 -0.221816
+v -0.399343 0.230327 -0.172789
+v -0.385065 0.216050 -0.221816
+v -0.385065 0.216050 -0.172789
+v -0.364895 0.216032 -0.221816
+v -0.364895 0.216032 -0.172789
+v -0.350649 0.230282 -0.221816
+v -0.350649 0.230282 -0.172789
+v -0.352282 0.295380 0.267663
+v -0.375007 0.240389 0.267663
+v -0.350670 0.250452 -0.172789
+v -0.350670 0.250452 -0.221816
+v -0.347573 0.306774 -0.003406
+v -0.346650 0.309006 0.008701
+v -0.402588 0.306824 -0.003406
+v -0.403516 0.309057 0.008701
+v -0.441447 0.267957 -0.003406
+v -0.443681 0.268884 0.008701
+v -0.443617 0.212019 0.008701
+v -0.441386 0.212942 -0.003406
+v -0.403364 0.171772 0.008701
+v -0.402441 0.174005 -0.003406
+v -0.347426 0.173955 -0.003406
+v -0.346499 0.171721 0.008701
+v -0.306333 0.211894 0.008701
+v -0.308567 0.212822 -0.003406
+v -0.306397 0.268759 0.008701
+v -0.308628 0.267836 -0.003406
+v -0.363116 0.269163 -0.111603
+v -0.386962 0.269185 -0.111603
+v -0.403805 0.252338 -0.111603
+v -0.403778 0.228492 -0.111603
+v -0.386898 0.211615 -0.111603
+v -0.363052 0.211593 -0.111603
+v -0.346209 0.228440 -0.111603
+v -0.346235 0.252287 -0.111603
+v -0.346651 0.309006 0.258125
+v -0.397855 0.295422 0.267663
+v -0.403516 0.309057 0.258125
+v -0.430045 0.263226 0.267663
+v -0.443681 0.268884 0.258125
+v -0.443617 0.212019 0.258125
+v -0.429994 0.217652 0.267663
+v -0.403364 0.171772 0.258125
+v -0.397733 0.185398 0.267663
+v -0.346499 0.171721 0.258125
+v -0.352159 0.185356 0.267663
+v -0.319969 0.217552 0.267663
+v -0.306333 0.211894 0.258125
+v -0.320020 0.263126 0.267663
+v -0.306397 0.268759 0.258125
+v -0.345859 0.310920 0.130736
+v -0.404311 0.310973 0.130736
+v -0.445596 0.269679 0.130736
+v -0.445532 0.211228 0.130736
+v -0.404155 0.169858 0.130736
+v -0.345703 0.169805 0.130736
+v -0.304417 0.211099 0.130736
+v -0.304482 0.269551 0.130736
+v -0.364949 0.014727 -0.221816
+v -0.375007 -0.009611 -0.221816
+v -0.364949 0.014727 -0.172789
+v -0.385119 0.014745 -0.221816
+v -0.385119 0.014746 -0.172789
+v -0.399366 0.000496 -0.221816
+v -0.399366 0.000496 -0.172789
+v -0.399343 -0.019674 -0.221816
+v -0.399343 -0.019673 -0.172789
+v -0.385065 -0.033950 -0.221816
+v -0.385065 -0.033950 -0.172789
+v -0.364895 -0.033968 -0.221816
+v -0.364895 -0.033968 -0.172789
+v -0.350649 -0.019718 -0.221816
+v -0.350649 -0.019718 -0.172789
+v -0.352282 0.045380 0.267663
+v -0.375007 -0.009611 0.267663
+v -0.350670 0.000452 -0.172789
+v -0.350670 0.000452 -0.221816
+v -0.347573 0.056774 -0.003406
+v -0.346650 0.059006 0.008701
+v -0.402588 0.056824 -0.003406
+v -0.403516 0.059057 0.008701
+v -0.441447 0.017957 -0.003406
+v -0.443681 0.018884 0.008701
+v -0.443617 -0.037981 0.008701
+v -0.441386 -0.037058 -0.003406
+v -0.403364 -0.078228 0.008701
+v -0.402441 -0.075995 -0.003406
+v -0.347426 -0.076045 -0.003406
+v -0.346499 -0.078279 0.008701
+v -0.306333 -0.038106 0.008701
+v -0.308567 -0.037178 -0.003406
+v -0.306397 0.018759 0.008701
+v -0.308628 0.017836 -0.003406
+v -0.363116 0.019163 -0.111603
+v -0.386962 0.019185 -0.111603
+v -0.403805 0.002338 -0.111603
+v -0.403778 -0.021508 -0.111603
+v -0.386898 -0.038385 -0.111603
+v -0.363052 -0.038406 -0.111603
+v -0.346209 -0.021560 -0.111603
+v -0.346235 0.002287 -0.111603
+v -0.346651 0.059006 0.258125
+v -0.397855 0.045422 0.267663
+v -0.403516 0.059057 0.258125
+v -0.430045 0.013226 0.267663
+v -0.443681 0.018884 0.258125
+v -0.443617 -0.037981 0.258125
+v -0.429994 -0.032348 0.267663
+v -0.403364 -0.078228 0.258125
+v -0.397733 -0.064602 0.267663
+v -0.346499 -0.078279 0.258125
+v -0.352159 -0.064644 0.267663
+v -0.319969 -0.032448 0.267663
+v -0.306333 -0.038106 0.258125
+v -0.320020 0.013126 0.267663
+v -0.306397 0.018759 0.258125
+v -0.345859 0.060920 0.130736
+v -0.404311 0.060973 0.130736
+v -0.445596 0.019679 0.130736
+v -0.445532 -0.038772 0.130736
+v -0.404155 -0.080142 0.130736
+v -0.345703 -0.080195 0.130736
+v -0.304417 -0.038901 0.130736
+v -0.304482 0.019551 0.130736
+v -0.364949 -0.235273 -0.221816
+v -0.375007 -0.259611 -0.221816
+v -0.364949 -0.235273 -0.172789
+v -0.385119 -0.235255 -0.221816
+v -0.385119 -0.235254 -0.172789
+v -0.399366 -0.249504 -0.221816
+v -0.399366 -0.249504 -0.172789
+v -0.399343 -0.269674 -0.221816
+v -0.399343 -0.269673 -0.172789
+v -0.385065 -0.283950 -0.221816
+v -0.385065 -0.283950 -0.172789
+v -0.364895 -0.283968 -0.221816
+v -0.364895 -0.283968 -0.172789
+v -0.350649 -0.269718 -0.221816
+v -0.350649 -0.269718 -0.172789
+v -0.352282 -0.204620 0.267663
+v -0.375007 -0.259611 0.267663
+v -0.350670 -0.249548 -0.172789
+v -0.350670 -0.249548 -0.221816
+v -0.347573 -0.193226 -0.003406
+v -0.346650 -0.190994 0.008701
+v -0.402588 -0.193176 -0.003406
+v -0.403516 -0.190943 0.008701
+v -0.441448 -0.232043 -0.003406
+v -0.443681 -0.231116 0.008701
+v -0.443618 -0.287981 0.008701
+v -0.441386 -0.287058 -0.003406
+v -0.403364 -0.328228 0.008701
+v -0.402441 -0.325995 -0.003406
+v -0.347426 -0.326045 -0.003406
+v -0.346499 -0.328279 0.008701
+v -0.306333 -0.288106 0.008701
+v -0.308567 -0.287178 -0.003406
+v -0.306397 -0.231241 0.008701
+v -0.308628 -0.232164 -0.003406
+v -0.363116 -0.230837 -0.111603
+v -0.386962 -0.230815 -0.111603
+v -0.403805 -0.247662 -0.111603
+v -0.403778 -0.271508 -0.111603
+v -0.386898 -0.288385 -0.111603
+v -0.363052 -0.288406 -0.111603
+v -0.346209 -0.271560 -0.111603
+v -0.346235 -0.247713 -0.111603
+v -0.346651 -0.190994 0.258125
+v -0.397855 -0.204578 0.267663
+v -0.403516 -0.190943 0.258125
+v -0.430045 -0.236774 0.267663
+v -0.443681 -0.231116 0.258125
+v -0.443618 -0.287981 0.258125
+v -0.429994 -0.282348 0.267663
+v -0.403364 -0.328228 0.258125
+v -0.397733 -0.314602 0.267663
+v -0.346499 -0.328279 0.258125
+v -0.352159 -0.314644 0.267663
+v -0.319969 -0.282448 0.267663
+v -0.306333 -0.288106 0.258125
+v -0.320020 -0.236874 0.267663
+v -0.306397 -0.231241 0.258125
+v -0.345859 -0.189080 0.130736
+v -0.404311 -0.189027 0.130736
+v -0.445596 -0.230321 0.130736
+v -0.445532 -0.288772 0.130736
+v -0.404155 -0.330142 0.130736
+v -0.345703 -0.330195 0.130736
+v -0.304417 -0.288901 0.130736
+v -0.304483 -0.230449 0.130736
+v 0.385051 0.264727 -0.221816
+v 0.374992 0.240389 -0.221816
+v 0.385051 0.264727 -0.172789
+v 0.364881 0.264746 -0.221816
+v 0.364880 0.264746 -0.172789
+v 0.350634 0.250497 -0.221816
+v 0.350634 0.250497 -0.172789
+v 0.350657 0.230326 -0.221816
+v 0.350656 0.230327 -0.172789
+v 0.364934 0.216051 -0.221816
+v 0.364934 0.216051 -0.172789
+v 0.385104 0.216033 -0.221816
+v 0.385104 0.216033 -0.172789
+v 0.399351 0.230282 -0.221816
+v 0.399351 0.230282 -0.172789
+v 0.397718 0.295381 0.267663
+v 0.374992 0.240389 0.267663
+v 0.399329 0.250452 -0.172789
+v 0.399329 0.250452 -0.221816
+v 0.402426 0.306774 -0.003406
+v 0.403349 0.309006 0.008701
+v 0.347411 0.306824 -0.003406
+v 0.346484 0.309058 0.008701
+v 0.308552 0.267958 -0.003406
+v 0.306319 0.268884 0.008701
+v 0.306382 0.212019 0.008701
+v 0.308614 0.212942 -0.003406
+v 0.346636 0.171773 0.008701
+v 0.347558 0.174005 -0.003406
+v 0.402574 0.173955 -0.003406
+v 0.403501 0.171722 0.008701
+v 0.443666 0.211894 0.008701
+v 0.441433 0.212822 -0.003406
+v 0.443603 0.268760 0.008701
+v 0.441371 0.267837 -0.003406
+v 0.386883 0.269163 -0.111603
+v 0.363038 0.269186 -0.111603
+v 0.346195 0.252338 -0.111603
+v 0.346221 0.228493 -0.111603
+v 0.363101 0.211616 -0.111603
+v 0.386948 0.211594 -0.111603
+v 0.403791 0.228441 -0.111603
+v 0.403764 0.252287 -0.111603
+v 0.403349 0.309006 0.258125
+v 0.352144 0.295423 0.267663
+v 0.346484 0.309058 0.258125
+v 0.319954 0.263226 0.267663
+v 0.306318 0.268885 0.258125
+v 0.306382 0.212019 0.258125
+v 0.320006 0.217652 0.267663
+v 0.346636 0.171773 0.258125
+v 0.352267 0.185398 0.267663
+v 0.403501 0.171721 0.258125
+v 0.397840 0.185356 0.267663
+v 0.430030 0.217553 0.267663
+v 0.443666 0.211894 0.258125
+v 0.429979 0.263126 0.267663
+v 0.443603 0.268760 0.258125
+v 0.404140 0.310920 0.130736
+v 0.345689 0.310973 0.130736
+v 0.304403 0.269680 0.130736
+v 0.304467 0.211228 0.130736
+v 0.345845 0.169859 0.130736
+v 0.404296 0.169806 0.130736
+v 0.445583 0.211100 0.130736
+v 0.445517 0.269552 0.130736
+v 0.385051 -0.235273 -0.221816
+v 0.374992 -0.259611 -0.221816
+v 0.385051 -0.235273 -0.172789
+v 0.364881 -0.235254 -0.221816
+v 0.364880 -0.235254 -0.172789
+v 0.350634 -0.249503 -0.221816
+v 0.350634 -0.249503 -0.172789
+v 0.350657 -0.269674 -0.221816
+v 0.350656 -0.269673 -0.172789
+v 0.364934 -0.283949 -0.221816
+v 0.364934 -0.283949 -0.172789
+v 0.385104 -0.283967 -0.221816
+v 0.385104 -0.283967 -0.172789
+v 0.399351 -0.269718 -0.221816
+v 0.399351 -0.269718 -0.172789
+v 0.397718 -0.204619 0.267663
+v 0.374992 -0.259611 0.267663
+v 0.399329 -0.249548 -0.172789
+v 0.399329 -0.249548 -0.221816
+v 0.402426 -0.193226 -0.003406
+v 0.403349 -0.190994 0.008701
+v 0.347411 -0.193176 -0.003406
+v 0.346484 -0.190942 0.008701
+v 0.308552 -0.232043 -0.003406
+v 0.306319 -0.231116 0.008701
+v 0.306382 -0.287981 0.008701
+v 0.308613 -0.287058 -0.003406
+v 0.346636 -0.328227 0.008701
+v 0.347558 -0.325995 -0.003406
+v 0.402573 -0.326045 -0.003406
+v 0.403501 -0.328278 0.008701
+v 0.443666 -0.288106 0.008701
+v 0.441432 -0.287178 -0.003406
+v 0.443603 -0.231240 0.008701
+v 0.441371 -0.232163 -0.003406
+v 0.386883 -0.230837 -0.111603
+v 0.363038 -0.230814 -0.111603
+v 0.346195 -0.247662 -0.111603
+v 0.346221 -0.271507 -0.111603
+v 0.363101 -0.288384 -0.111603
+v 0.386948 -0.288406 -0.111603
+v 0.403790 -0.271559 -0.111603
+v 0.403764 -0.247713 -0.111603
+v 0.403349 -0.190994 0.258125
+v 0.352144 -0.204577 0.267663
+v 0.346484 -0.190942 0.258125
+v 0.319954 -0.236774 0.267663
+v 0.306318 -0.231115 0.258125
+v 0.306382 -0.287981 0.258125
+v 0.320006 -0.282348 0.267663
+v 0.346636 -0.328227 0.258125
+v 0.352267 -0.314602 0.267663
+v 0.403501 -0.328279 0.258125
+v 0.397840 -0.314644 0.267663
+v 0.430030 -0.282447 0.267663
+v 0.443666 -0.288106 0.258125
+v 0.429979 -0.236874 0.267663
+v 0.443603 -0.231240 0.258125
+v 0.404140 -0.189080 0.130736
+v 0.345689 -0.189027 0.130736
+v 0.304403 -0.230320 0.130736
+v 0.304467 -0.288772 0.130736
+v 0.345845 -0.330141 0.130736
+v 0.404296 -0.330194 0.130736
+v 0.445582 -0.288900 0.130736
+v 0.445517 -0.230449 0.130736
+v 0.385051 0.014727 -0.221816
+v 0.374992 -0.009611 -0.221816
+v 0.385051 0.014727 -0.172789
+v 0.364881 0.014746 -0.221816
+v 0.364880 0.014746 -0.172789
+v 0.350634 0.000497 -0.221816
+v 0.350634 0.000497 -0.172789
+v 0.350657 -0.019674 -0.221816
+v 0.350656 -0.019673 -0.172789
+v 0.364934 -0.033949 -0.221816
+v 0.364934 -0.033949 -0.172789
+v 0.385104 -0.033967 -0.221816
+v 0.385104 -0.033967 -0.172789
+v 0.399351 -0.019718 -0.221816
+v 0.399351 -0.019718 -0.172789
+v 0.397718 0.045381 0.267663
+v 0.374992 -0.009611 0.267663
+v 0.399329 0.000452 -0.172789
+v 0.399329 0.000452 -0.221816
+v 0.402426 0.056774 -0.003406
+v 0.403349 0.059006 0.008701
+v 0.347411 0.056824 -0.003406
+v 0.346484 0.059058 0.008701
+v 0.308552 0.017957 -0.003406
+v 0.306319 0.018884 0.008701
+v 0.306382 -0.037981 0.008701
+v 0.308613 -0.037058 -0.003406
+v 0.346636 -0.078227 0.008701
+v 0.347558 -0.075995 -0.003406
+v 0.402573 -0.076045 -0.003406
+v 0.403501 -0.078278 0.008701
+v 0.443666 -0.038106 0.008701
+v 0.441432 -0.037178 -0.003406
+v 0.443603 0.018760 0.008701
+v 0.441371 0.017837 -0.003406
+v 0.386883 0.019163 -0.111603
+v 0.363038 0.019186 -0.111603
+v 0.346195 0.002338 -0.111603
+v 0.346221 -0.021507 -0.111603
+v 0.363101 -0.038384 -0.111603
+v 0.386948 -0.038406 -0.111603
+v 0.403790 -0.021559 -0.111603
+v 0.403764 0.002287 -0.111603
+v 0.403349 0.059006 0.258125
+v 0.352144 0.045423 0.267663
+v 0.346484 0.059058 0.258125
+v 0.319954 0.013226 0.267663
+v 0.306318 0.018885 0.258125
+v 0.306382 -0.037981 0.258125
+v 0.320006 -0.032348 0.267663
+v 0.346636 -0.078227 0.258125
+v 0.352267 -0.064602 0.267663
+v 0.403501 -0.078279 0.258125
+v 0.397840 -0.064644 0.267663
+v 0.430030 -0.032447 0.267663
+v 0.443666 -0.038106 0.258125
+v 0.429979 0.013126 0.267663
+v 0.443603 0.018760 0.258125
+v 0.404140 0.060920 0.130736
+v 0.345689 0.060973 0.130736
+v 0.304403 0.019680 0.130736
+v 0.304467 -0.038772 0.130736
+v 0.345845 -0.080141 0.130736
+v 0.404296 -0.080194 0.130736
+v 0.445582 -0.038900 0.130736
+v 0.445517 0.019551 0.130736
+v 0.260051 -0.360273 -0.221816
+v 0.249993 -0.384611 -0.221816
+v 0.260051 -0.360273 -0.172789
+v 0.239881 -0.360255 -0.221816
+v 0.239881 -0.360254 -0.172789
+v 0.225634 -0.374504 -0.221816
+v 0.225634 -0.374504 -0.172789
+v 0.225657 -0.394674 -0.221816
+v 0.225657 -0.394673 -0.172789
+v 0.239935 -0.408950 -0.221816
+v 0.239935 -0.408950 -0.172789
+v 0.260105 -0.408968 -0.221816
+v 0.260105 -0.408968 -0.172789
+v 0.274351 -0.394718 -0.221816
+v 0.274351 -0.394718 -0.172789
+v 0.272718 -0.329620 0.267663
+v 0.249993 -0.384611 0.267663
+v 0.274329 -0.374548 -0.172789
+v 0.274329 -0.374548 -0.221816
+v 0.277426 -0.318226 -0.003406
+v 0.278349 -0.315994 0.008701
+v 0.222412 -0.318176 -0.003406
+v 0.221484 -0.315943 0.008701
+v 0.183552 -0.357043 -0.003406
+v 0.181319 -0.356116 0.008701
+v 0.181382 -0.412981 0.008701
+v 0.183614 -0.412058 -0.003406
+v 0.221636 -0.453227 0.008701
+v 0.222559 -0.450995 -0.003406
+v 0.277574 -0.451045 -0.003406
+v 0.278501 -0.453279 0.008701
+v 0.318666 -0.413106 0.008701
+v 0.316433 -0.412178 -0.003406
+v 0.318603 -0.356240 0.008701
+v 0.316372 -0.357164 -0.003406
+v 0.261884 -0.355837 -0.111603
+v 0.238038 -0.355815 -0.111603
+v 0.221195 -0.372662 -0.111603
+v 0.221221 -0.396508 -0.111603
+v 0.238102 -0.413385 -0.111603
+v 0.261948 -0.413406 -0.111603
+v 0.278791 -0.396560 -0.111603
+v 0.278764 -0.372713 -0.111603
+v 0.278349 -0.315994 0.258125
+v 0.227145 -0.329577 0.267663
+v 0.221484 -0.315943 0.258125
+v 0.194955 -0.361774 0.267663
+v 0.181319 -0.356116 0.258125
+v 0.181382 -0.412981 0.258125
+v 0.195006 -0.407348 0.267663
+v 0.221636 -0.453227 0.258125
+v 0.227267 -0.439602 0.267663
+v 0.278501 -0.453279 0.258125
+v 0.272840 -0.439644 0.267663
+v 0.305031 -0.407448 0.267663
+v 0.318667 -0.413106 0.258125
+v 0.304980 -0.361874 0.267663
+v 0.318603 -0.356240 0.258125
+v 0.279141 -0.314080 0.130736
+v 0.220689 -0.314027 0.130736
+v 0.179403 -0.355321 0.130736
+v 0.179468 -0.413772 0.130736
+v 0.220845 -0.455142 0.130736
+v 0.279296 -0.455195 0.130736
+v 0.320583 -0.413901 0.130736
+v 0.320517 -0.355449 0.130736
+v -0.239949 -0.360273 -0.221816
+v -0.250007 -0.384611 -0.221816
+v -0.239949 -0.360273 -0.172789
+v -0.260119 -0.360255 -0.221816
+v -0.260119 -0.360254 -0.172789
+v -0.274366 -0.374504 -0.221816
+v -0.274366 -0.374504 -0.172789
+v -0.274343 -0.394674 -0.221816
+v -0.274343 -0.394673 -0.172789
+v -0.260065 -0.408950 -0.221816
+v -0.260065 -0.408950 -0.172789
+v -0.239895 -0.408968 -0.221816
+v -0.239895 -0.408968 -0.172789
+v -0.225649 -0.394718 -0.221816
+v -0.225649 -0.394718 -0.172789
+v -0.227282 -0.329620 0.267663
+v -0.250007 -0.384611 0.267663
+v -0.225671 -0.374548 -0.172789
+v -0.225671 -0.374548 -0.221816
+v -0.222573 -0.318226 -0.003406
+v -0.221651 -0.315994 0.008701
+v -0.277588 -0.318176 -0.003406
+v -0.278516 -0.315943 0.008701
+v -0.316448 -0.357043 -0.003406
+v -0.318681 -0.356116 0.008701
+v -0.318618 -0.412981 0.008701
+v -0.316386 -0.412058 -0.003406
+v -0.278364 -0.453228 0.008701
+v -0.277441 -0.450995 -0.003406
+v -0.222426 -0.451045 -0.003406
+v -0.221499 -0.453279 0.008701
+v -0.181333 -0.413106 0.008701
+v -0.183567 -0.412178 -0.003406
+v -0.181397 -0.356240 0.008701
+v -0.183628 -0.357164 -0.003406
+v -0.238116 -0.355837 -0.111603
+v -0.261962 -0.355815 -0.111603
+v -0.278805 -0.372662 -0.111603
+v -0.278779 -0.396508 -0.111603
+v -0.261898 -0.413385 -0.111603
+v -0.238052 -0.413406 -0.111603
+v -0.221209 -0.396560 -0.111603
+v -0.221236 -0.372714 -0.111603
+v -0.221651 -0.315994 0.258125
+v -0.272855 -0.329578 0.267663
+v -0.278516 -0.315943 0.258125
+v -0.305045 -0.361774 0.267663
+v -0.318681 -0.356116 0.258125
+v -0.318618 -0.412981 0.258125
+v -0.304994 -0.407348 0.267663
+v -0.278364 -0.453228 0.258125
+v -0.272733 -0.439602 0.267663
+v -0.221499 -0.453279 0.258125
+v -0.227160 -0.439644 0.267663
+v -0.194970 -0.407448 0.267663
+v -0.181333 -0.413106 0.258125
+v -0.195020 -0.361874 0.267663
+v -0.181397 -0.356241 0.258125
+v -0.220859 -0.314080 0.130736
+v -0.279311 -0.314027 0.130736
+v -0.320597 -0.355321 0.130736
+v -0.320532 -0.413772 0.130736
+v -0.279155 -0.455142 0.130736
+v -0.220704 -0.455195 0.130736
+v -0.179417 -0.413901 0.130736
+v -0.179483 -0.355449 0.130736
+v 0.010051 -0.360272 -0.221816
+v -0.000008 -0.384610 -0.221816
+v 0.010051 -0.360272 -0.172789
+v -0.010119 -0.360255 -0.221816
+v -0.010120 -0.360253 -0.172789
+v -0.024366 -0.374503 -0.221816
+v -0.024366 -0.374503 -0.172789
+v -0.024343 -0.394674 -0.221816
+v -0.024344 -0.394673 -0.172789
+v -0.010066 -0.408949 -0.221816
+v -0.010066 -0.408949 -0.172789
+v 0.010104 -0.408967 -0.221816
+v 0.010104 -0.408967 -0.172789
+v 0.024351 -0.394718 -0.221816
+v 0.024351 -0.394718 -0.172789
+v 0.022718 -0.329619 0.267663
+v -0.000008 -0.384611 0.267663
+v 0.024329 -0.374548 -0.172789
+v 0.024329 -0.374548 -0.221816
+v 0.027426 -0.318226 -0.003406
+v 0.028349 -0.315994 0.008701
+v -0.027589 -0.318176 -0.003406
+v -0.028516 -0.315942 0.008701
+v -0.066448 -0.357043 -0.003406
+v -0.068681 -0.356116 0.008701
+v -0.068618 -0.412981 0.008701
+v -0.066386 -0.412058 -0.003406
+v -0.028364 -0.453227 0.008701
+v -0.027442 -0.450995 -0.003406
+v 0.027574 -0.451045 -0.003406
+v 0.028501 -0.453278 0.008701
+v 0.068666 -0.413106 0.008701
+v 0.066433 -0.412178 -0.003406
+v 0.068603 -0.356240 0.008701
+v 0.066371 -0.357163 -0.003406
+v 0.011883 -0.355837 -0.111603
+v -0.011962 -0.355814 -0.111603
+v -0.028805 -0.372661 -0.111603
+v -0.028779 -0.396507 -0.111603
+v -0.011899 -0.413384 -0.111603
+v 0.011948 -0.413406 -0.111603
+v 0.028791 -0.396559 -0.111603
+v 0.028764 -0.372713 -0.111603
+v 0.028349 -0.315994 0.258125
+v -0.022855 -0.329577 0.267663
+v -0.028516 -0.315942 0.258125
+v -0.055045 -0.361774 0.267663
+v -0.068682 -0.356115 0.258125
+v -0.068618 -0.412981 0.258125
+v -0.054994 -0.407348 0.267663
+v -0.028364 -0.453227 0.258125
+v -0.022733 -0.439602 0.267663
+v 0.028501 -0.453278 0.258125
+v 0.022840 -0.439644 0.267663
+v 0.055030 -0.407447 0.267663
+v 0.068666 -0.413106 0.258125
+v 0.054980 -0.361874 0.267663
+v 0.068603 -0.356240 0.258125
+v 0.029140 -0.314080 0.130736
+v -0.029311 -0.314027 0.130736
+v -0.070597 -0.355320 0.130736
+v -0.070533 -0.413772 0.130736
+v -0.029155 -0.455141 0.130736
+v 0.029296 -0.455194 0.130736
+v 0.070583 -0.413900 0.130736
+v 0.070517 -0.355449 0.130736
+v -0.239949 -0.110273 -0.221816
+v -0.250007 -0.134611 -0.221816
+v -0.239949 -0.110273 -0.172789
+v -0.260119 -0.110255 -0.221816
+v -0.260119 -0.110254 -0.172789
+v -0.274366 -0.124504 -0.221816
+v -0.274366 -0.124504 -0.172789
+v -0.274343 -0.144674 -0.221816
+v -0.274343 -0.144673 -0.172789
+v -0.260065 -0.158949 -0.221816
+v -0.260065 -0.158950 -0.172789
+v -0.239895 -0.158967 -0.221816
+v -0.239895 -0.158968 -0.172789
+v -0.225649 -0.144718 -0.221816
+v -0.225649 -0.144718 -0.172789
+v -0.227282 -0.079619 0.267663
+v -0.250007 -0.134611 0.267663
+v -0.225671 -0.124548 -0.172789
+v -0.225671 -0.124548 -0.221816
+v -0.222574 -0.068226 -0.003406
+v -0.221651 -0.065994 0.008701
+v -0.277588 -0.068176 -0.003406
+v -0.278516 -0.065943 0.008701
+v -0.316448 -0.107043 -0.003406
+v -0.318681 -0.106116 0.008701
+v -0.318618 -0.162981 0.008701
+v -0.316386 -0.162058 -0.003406
+v -0.278364 -0.203227 0.008701
+v -0.277441 -0.200995 -0.003406
+v -0.222426 -0.201045 -0.003406
+v -0.221499 -0.203279 0.008701
+v -0.181333 -0.163106 0.008701
+v -0.183567 -0.162178 -0.003406
+v -0.181397 -0.106240 0.008701
+v -0.183628 -0.107163 -0.003406
+v -0.238116 -0.105837 -0.111603
+v -0.261962 -0.105815 -0.111603
+v -0.278805 -0.122662 -0.111603
+v -0.278779 -0.146507 -0.111603
+v -0.261898 -0.163385 -0.111603
+v -0.238052 -0.163406 -0.111603
+v -0.221209 -0.146559 -0.111603
+v -0.221236 -0.122713 -0.111603
+v -0.221651 -0.065994 0.258125
+v -0.272855 -0.079577 0.267663
+v -0.278516 -0.065943 0.258125
+v -0.305045 -0.111774 0.267663
+v -0.318681 -0.106115 0.258125
+v -0.318618 -0.162981 0.258125
+v -0.304994 -0.157348 0.267663
+v -0.278364 -0.203227 0.258125
+v -0.272733 -0.189602 0.267663
+v -0.221499 -0.203279 0.258125
+v -0.227160 -0.189644 0.267663
+v -0.194970 -0.157448 0.267663
+v -0.181333 -0.163106 0.258125
+v -0.195020 -0.111874 0.267663
+v -0.181397 -0.106240 0.258125
+v -0.220859 -0.064080 0.130736
+v -0.279311 -0.064027 0.130736
+v -0.320597 -0.105320 0.130736
+v -0.320532 -0.163772 0.130736
+v -0.279155 -0.205141 0.130736
+v -0.220704 -0.205195 0.130736
+v -0.179417 -0.163901 0.130736
+v -0.179483 -0.105449 0.130736
+v 0.070517 0.144551 0.130736
+v 0.070583 0.086099 0.130736
+v 0.029296 0.044805 0.130736
+v -0.029155 0.044858 0.130736
+v -0.070532 0.086228 0.130736
+v -0.070597 0.144679 0.130736
+v -0.029311 0.185973 0.130736
+v 0.029141 0.185920 0.130736
+v 0.068603 0.143760 0.258125
+v 0.054980 0.138126 0.267663
+v 0.068667 0.086894 0.258125
+v 0.055031 0.092552 0.267663
+v 0.022840 0.060356 0.267663
+v 0.028501 0.046721 0.258125
+v -0.022733 0.060398 0.267663
+v -0.028364 0.046772 0.258125
+v -0.054994 0.092652 0.267663
+v -0.068618 0.087019 0.258125
+v -0.068681 0.143884 0.258125
+v -0.055045 0.138226 0.267663
+v -0.028516 0.184057 0.258125
+v -0.022855 0.170422 0.267663
+v 0.028349 0.184006 0.258125
+v 0.028764 0.127287 -0.111603
+v 0.028791 0.103440 -0.111603
+v 0.011948 0.086594 -0.111603
+v -0.011898 0.086615 -0.111603
+v -0.028779 0.103492 -0.111603
+v -0.028805 0.127338 -0.111603
+v -0.011962 0.144185 -0.111603
+v 0.011884 0.144163 -0.111603
+v 0.066372 0.142836 -0.003406
+v 0.068603 0.143760 0.008701
+v 0.066433 0.087822 -0.003406
+v 0.068667 0.086894 0.008701
+v 0.028501 0.046721 0.008701
+v 0.027574 0.048955 -0.003406
+v -0.027441 0.049005 -0.003406
+v -0.028364 0.046773 0.008701
+v -0.066386 0.087942 -0.003406
+v -0.068618 0.087019 0.008701
+v -0.068681 0.143884 0.008701
+v -0.066448 0.142957 -0.003406
+v -0.028516 0.184057 0.008701
+v -0.027588 0.181824 -0.003406
+v 0.028349 0.184006 0.008701
+v 0.027427 0.181774 -0.003406
+v 0.024329 0.125452 -0.221816
+v 0.024329 0.125452 -0.172789
+v -0.000007 0.115389 0.267663
+v 0.022718 0.170380 0.267663
+v 0.024351 0.105282 -0.172789
+v 0.024351 0.105282 -0.221816
+v 0.010105 0.091032 -0.172789
+v 0.010105 0.091032 -0.221816
+v -0.010065 0.091050 -0.172789
+v -0.010065 0.091050 -0.221816
+v -0.024343 0.105327 -0.172789
+v -0.024343 0.105326 -0.221816
+v -0.024366 0.125496 -0.172789
+v -0.024366 0.125496 -0.221816
+v -0.010119 0.139746 -0.172789
+v -0.010119 0.139745 -0.221816
+v 0.010051 0.139727 -0.172789
+v -0.000007 0.115389 -0.221816
+v 0.010051 0.139727 -0.221816
+v 0.260051 -0.110273 -0.221816
+v 0.249993 -0.134611 -0.221816
+v 0.260051 -0.110273 -0.172789
+v 0.239881 -0.110255 -0.221816
+v 0.239881 -0.110254 -0.172789
+v 0.225634 -0.124504 -0.221816
+v 0.225634 -0.124504 -0.172789
+v 0.225657 -0.144674 -0.221816
+v 0.225657 -0.144673 -0.172789
+v 0.239935 -0.158950 -0.221816
+v 0.239935 -0.158950 -0.172789
+v 0.260105 -0.158968 -0.221816
+v 0.260105 -0.158968 -0.172789
+v 0.274351 -0.144718 -0.221816
+v 0.274351 -0.144718 -0.172789
+v 0.272718 -0.079620 0.267663
+v 0.249993 -0.134611 0.267663
+v 0.274329 -0.124548 -0.172789
+v 0.274329 -0.124548 -0.221816
+v 0.277427 -0.068226 -0.003406
+v 0.278349 -0.065994 0.008701
+v 0.222412 -0.068176 -0.003406
+v 0.221484 -0.065943 0.008701
+v 0.183552 -0.107043 -0.003406
+v 0.181319 -0.106116 0.008701
+v 0.181382 -0.162981 0.008701
+v 0.183614 -0.162058 -0.003406
+v 0.221636 -0.203227 0.008701
+v 0.222559 -0.200995 -0.003406
+v 0.277574 -0.201045 -0.003406
+v 0.278501 -0.203279 0.008701
+v 0.318667 -0.163106 0.008701
+v 0.316433 -0.162178 -0.003406
+v 0.318603 -0.106240 0.008701
+v 0.316372 -0.107163 -0.003406
+v 0.261884 -0.105837 -0.111603
+v 0.238038 -0.105815 -0.111603
+v 0.221195 -0.122662 -0.111603
+v 0.221221 -0.146508 -0.111603
+v 0.238102 -0.163385 -0.111603
+v 0.261948 -0.163406 -0.111603
+v 0.278791 -0.146560 -0.111603
+v 0.278764 -0.122713 -0.111603
+v 0.278349 -0.065994 0.258125
+v 0.227145 -0.079577 0.267663
+v 0.221484 -0.065943 0.258125
+v 0.194955 -0.111774 0.267663
+v 0.181319 -0.106116 0.258125
+v 0.181382 -0.162981 0.258125
+v 0.195006 -0.157348 0.267663
+v 0.221636 -0.203227 0.258125
+v 0.227267 -0.189602 0.267663
+v 0.278501 -0.203279 0.258125
+v 0.272840 -0.189644 0.267663
+v 0.305031 -0.157448 0.267663
+v 0.318667 -0.163106 0.258125
+v 0.304980 -0.111874 0.267663
+v 0.318603 -0.106240 0.258125
+v 0.279141 -0.064080 0.130736
+v 0.220689 -0.064027 0.130736
+v 0.179403 -0.105321 0.130736
+v 0.179468 -0.163772 0.130736
+v 0.220845 -0.205141 0.130736
+v 0.279296 -0.205195 0.130736
+v 0.320583 -0.163901 0.130736
+v 0.320517 -0.105449 0.130736
+v 0.320517 0.144551 0.130736
+v 0.320583 0.086100 0.130736
+v 0.279296 0.044806 0.130736
+v 0.220845 0.044859 0.130736
+v 0.179467 0.086228 0.130736
+v 0.179403 0.144680 0.130736
+v 0.220689 0.185973 0.130736
+v 0.279140 0.185920 0.130736
+v 0.318603 0.143760 0.258125
+v 0.304980 0.138126 0.267663
+v 0.318666 0.086894 0.258125
+v 0.305030 0.092553 0.267663
+v 0.272840 0.060356 0.267663
+v 0.278501 0.046722 0.258125
+v 0.227267 0.060399 0.267663
+v 0.221636 0.046773 0.258125
+v 0.195006 0.092652 0.267663
+v 0.181382 0.087019 0.258125
+v 0.181319 0.143885 0.258125
+v 0.194955 0.138226 0.267663
+v 0.221484 0.184058 0.258125
+v 0.227145 0.170423 0.267663
+v 0.278349 0.184006 0.258125
+v 0.278764 0.127287 -0.111603
+v 0.278791 0.103441 -0.111603
+v 0.261948 0.086594 -0.111603
+v 0.238101 0.086616 -0.111603
+v 0.221221 0.103493 -0.111603
+v 0.221195 0.127339 -0.111603
+v 0.238038 0.144186 -0.111603
+v 0.261883 0.144163 -0.111603
+v 0.316371 0.142837 -0.003406
+v 0.318603 0.143760 0.008701
+v 0.316433 0.087822 -0.003406
+v 0.318666 0.086894 0.008701
+v 0.278501 0.046722 0.008701
+v 0.277574 0.048955 -0.003406
+v 0.222558 0.049005 -0.003406
+v 0.221636 0.046773 0.008701
+v 0.183614 0.087942 -0.003406
+v 0.181382 0.087019 0.008701
+v 0.181319 0.143884 0.008701
+v 0.183552 0.142957 -0.003406
+v 0.221484 0.184058 0.008701
+v 0.222411 0.181824 -0.003406
+v 0.278349 0.184006 0.008701
+v 0.277426 0.181774 -0.003406
+v 0.274329 0.125452 -0.221816
+v 0.274329 0.125452 -0.172789
+v 0.249993 0.115390 0.267663
+v 0.272718 0.170381 0.267663
+v 0.274351 0.105283 -0.172789
+v 0.274351 0.105283 -0.221816
+v 0.260104 0.091033 -0.172789
+v 0.260104 0.091033 -0.221816
+v 0.239934 0.091051 -0.172789
+v 0.239934 0.091051 -0.221816
+v 0.225657 0.105327 -0.172789
+v 0.225657 0.105326 -0.221816
+v 0.225634 0.125497 -0.172789
+v 0.225634 0.125497 -0.221816
+v 0.239881 0.139746 -0.172789
+v 0.239881 0.139746 -0.221816
+v 0.260051 0.139728 -0.172789
+v 0.249993 0.115390 -0.221816
+v 0.260051 0.139728 -0.221816
+v 0.070516 -0.105448 0.130736
+v 0.070582 -0.163900 0.130736
+v 0.029295 -0.205194 0.130736
+v -0.029156 -0.205141 0.130736
+v -0.070533 -0.163771 0.130736
+v -0.070598 -0.105320 0.130736
+v -0.029312 -0.064026 0.130736
+v 0.029140 -0.064079 0.130736
+v 0.068602 -0.106239 0.258125
+v 0.054979 -0.111873 0.267663
+v 0.068666 -0.163105 0.258125
+v 0.055030 -0.157447 0.267663
+v 0.022840 -0.189643 0.267663
+v 0.028500 -0.203278 0.258125
+v -0.022734 -0.189601 0.267663
+v -0.028365 -0.203226 0.258125
+v -0.054995 -0.157347 0.267663
+v -0.068619 -0.162980 0.258125
+v -0.068682 -0.106115 0.258125
+v -0.055046 -0.111773 0.267663
+v -0.028517 -0.065942 0.258125
+v -0.022856 -0.079576 0.267663
+v 0.028348 -0.065993 0.258125
+v 0.028764 -0.122712 -0.111603
+v 0.028790 -0.146559 -0.111603
+v 0.011947 -0.163405 -0.111603
+v -0.011899 -0.163384 -0.111603
+v -0.028779 -0.146507 -0.111603
+v -0.028806 -0.122661 -0.111603
+v -0.011963 -0.105814 -0.111603
+v 0.011883 -0.105836 -0.111603
+v 0.066371 -0.107162 -0.003406
+v 0.068602 -0.106239 0.008701
+v 0.066432 -0.162177 -0.003406
+v 0.068666 -0.163105 0.008701
+v 0.028500 -0.203278 0.008701
+v 0.027573 -0.201044 -0.003406
+v -0.027442 -0.200994 -0.003406
+v -0.028365 -0.203226 0.008701
+v -0.066387 -0.162057 -0.003406
+v -0.068619 -0.162980 0.008701
+v -0.068682 -0.106115 0.008701
+v -0.066449 -0.107042 -0.003406
+v -0.028517 -0.065942 0.008701
+v -0.027589 -0.068175 -0.003406
+v 0.028348 -0.065993 0.008701
+v 0.027426 -0.068225 -0.003406
+v 0.024329 -0.124547 -0.221816
+v 0.024329 -0.124547 -0.172789
+v -0.000008 -0.134610 0.267663
+v 0.022717 -0.079619 0.267663
+v 0.024350 -0.144717 -0.172789
+v 0.024350 -0.144717 -0.221816
+v 0.010104 -0.158967 -0.172789
+v 0.010104 -0.158967 -0.221816
+v -0.010066 -0.158949 -0.172789
+v -0.010066 -0.158949 -0.221816
+v -0.024344 -0.144672 -0.172789
+v -0.024344 -0.144673 -0.221816
+v -0.024367 -0.124503 -0.172789
+v -0.024367 -0.124503 -0.221816
+v -0.010120 -0.110253 -0.172789
+v -0.010120 -0.110254 -0.221816
+v 0.010050 -0.110272 -0.172789
+v -0.000008 -0.134610 -0.221816
+v 0.010050 -0.110272 -0.221816
+v 0.195517 0.269551 0.130736
+v 0.195583 0.211099 0.130736
+v 0.154296 0.169805 0.130736
+v 0.095845 0.169858 0.130736
+v 0.054468 0.211228 0.130736
+v 0.054403 0.269680 0.130736
+v 0.095689 0.310973 0.130736
+v 0.154140 0.310920 0.130736
+v 0.193603 0.268760 0.258125
+v 0.179980 0.263126 0.267663
+v 0.193666 0.211894 0.258125
+v 0.180030 0.217552 0.267663
+v 0.147840 0.185356 0.267663
+v 0.153501 0.171721 0.258125
+v 0.102267 0.185398 0.267663
+v 0.096636 0.171773 0.258125
+v 0.070006 0.217652 0.267663
+v 0.056382 0.212019 0.258125
+v 0.056319 0.268884 0.258125
+v 0.069955 0.263226 0.267663
+v 0.096484 0.309057 0.258125
+v 0.102145 0.295423 0.267663
+v 0.153349 0.309006 0.258125
+v 0.153764 0.252287 -0.111603
+v 0.153791 0.228441 -0.111603
+v 0.136948 0.211594 -0.111603
+v 0.113101 0.211615 -0.111603
+v 0.096221 0.228492 -0.111603
+v 0.096195 0.252338 -0.111603
+v 0.113038 0.269185 -0.111603
+v 0.136883 0.269163 -0.111603
+v 0.191371 0.267837 -0.003406
+v 0.193603 0.268760 0.008701
+v 0.191433 0.212822 -0.003406
+v 0.193666 0.211894 0.008701
+v 0.153501 0.171721 0.008701
+v 0.152574 0.173955 -0.003406
+v 0.097558 0.174005 -0.003406
+v 0.096636 0.171773 0.008701
+v 0.058614 0.212942 -0.003406
+v 0.056382 0.212019 0.008701
+v 0.056319 0.268884 0.008701
+v 0.058552 0.267957 -0.003406
+v 0.096484 0.309057 0.008701
+v 0.097411 0.306824 -0.003406
+v 0.153349 0.309006 0.008701
+v 0.152426 0.306774 -0.003406
+v 0.149329 0.250452 -0.221816
+v 0.149329 0.250452 -0.172789
+v 0.124993 0.240389 0.267663
+v 0.147718 0.295381 0.267663
+v 0.149351 0.230282 -0.172789
+v 0.149351 0.230282 -0.221816
+v 0.135104 0.216033 -0.172789
+v 0.135104 0.216033 -0.221816
+v 0.114934 0.216050 -0.172789
+v 0.114934 0.216050 -0.221816
+v 0.100657 0.230327 -0.172789
+v 0.100657 0.230326 -0.221816
+v 0.100634 0.250496 -0.172789
+v 0.100634 0.250496 -0.221816
+v 0.114881 0.264746 -0.172789
+v 0.114881 0.264745 -0.221816
+v 0.135051 0.264727 -0.172789
+v 0.124993 0.240389 -0.221816
+v 0.135051 0.264727 -0.221816
+v 0.195517 -0.230449 0.130736
+v 0.195583 -0.288901 0.130736
+v 0.154296 -0.330194 0.130736
+v 0.095845 -0.330141 0.130736
+v 0.054468 -0.288772 0.130736
+v 0.054403 -0.230320 0.130736
+v 0.095689 -0.189027 0.130736
+v 0.154140 -0.189080 0.130736
+v 0.193603 -0.231240 0.258125
+v 0.179980 -0.236874 0.267663
+v 0.193666 -0.288106 0.258125
+v 0.180030 -0.282448 0.267663
+v 0.147840 -0.314644 0.267663
+v 0.153501 -0.328279 0.258125
+v 0.102267 -0.314602 0.267663
+v 0.096636 -0.328227 0.258125
+v 0.070006 -0.282348 0.267663
+v 0.056382 -0.287981 0.258125
+v 0.056319 -0.231115 0.258125
+v 0.069955 -0.236774 0.267663
+v 0.096484 -0.190943 0.258125
+v 0.102145 -0.204577 0.267663
+v 0.153349 -0.190994 0.258125
+v 0.153764 -0.247713 -0.111603
+v 0.153791 -0.271559 -0.111603
+v 0.136948 -0.288406 -0.111603
+v 0.113101 -0.288384 -0.111603
+v 0.096221 -0.271508 -0.111603
+v 0.096195 -0.247662 -0.111603
+v 0.113038 -0.230814 -0.111603
+v 0.136883 -0.230837 -0.111603
+v 0.191371 -0.232163 -0.003406
+v 0.193603 -0.231240 0.008701
+v 0.191433 -0.287178 -0.003406
+v 0.193666 -0.288106 0.008701
+v 0.153501 -0.328279 0.008701
+v 0.152574 -0.326045 -0.003406
+v 0.097558 -0.325995 -0.003406
+v 0.096636 -0.328227 0.008701
+v 0.058614 -0.287058 -0.003406
+v 0.056382 -0.287981 0.008701
+v 0.056319 -0.231116 0.008701
+v 0.058552 -0.232043 -0.003406
+v 0.096484 -0.190943 0.008701
+v 0.097411 -0.193176 -0.003406
+v 0.153349 -0.190994 0.008701
+v 0.152426 -0.193226 -0.003406
+v 0.149329 -0.249548 -0.221816
+v 0.149329 -0.249548 -0.172789
+v 0.124993 -0.259611 0.267663
+v 0.147718 -0.204619 0.267663
+v 0.149351 -0.269718 -0.172789
+v 0.149351 -0.269718 -0.221816
+v 0.135104 -0.283967 -0.172789
+v 0.135104 -0.283967 -0.221816
+v 0.114934 -0.283950 -0.172789
+v 0.114934 -0.283950 -0.221816
+v 0.100657 -0.269673 -0.172789
+v 0.100657 -0.269674 -0.221816
+v 0.100634 -0.249504 -0.172789
+v 0.100634 -0.249504 -0.221816
+v 0.114881 -0.235254 -0.172789
+v 0.114881 -0.235255 -0.221816
+v 0.135051 -0.235273 -0.172789
+v 0.124993 -0.259611 -0.221816
+v 0.135051 -0.235273 -0.221816
+v -0.054483 -0.230448 0.130736
+v -0.054417 -0.288900 0.130736
+v -0.095704 -0.330194 0.130736
+v -0.154155 -0.330141 0.130736
+v -0.195533 -0.288772 0.130736
+v -0.195597 -0.230320 0.130736
+v -0.154311 -0.189026 0.130736
+v -0.095860 -0.189080 0.130736
+v -0.056397 -0.231240 0.258125
+v -0.070021 -0.236874 0.267663
+v -0.056334 -0.288106 0.258125
+v -0.069970 -0.282447 0.267663
+v -0.102160 -0.314644 0.267663
+v -0.096499 -0.328278 0.258125
+v -0.147733 -0.314601 0.267663
+v -0.153364 -0.328227 0.258125
+v -0.179994 -0.282348 0.267663
+v -0.193618 -0.287981 0.258125
+v -0.193682 -0.231115 0.258125
+v -0.180046 -0.236773 0.267663
+v -0.153516 -0.190942 0.258125
+v -0.147855 -0.204577 0.267663
+v -0.096651 -0.190993 0.258125
+v -0.096236 -0.247713 -0.111603
+v -0.096209 -0.271559 -0.111603
+v -0.113052 -0.288406 -0.111603
+v -0.136899 -0.288384 -0.111603
+v -0.153779 -0.271507 -0.111603
+v -0.153805 -0.247661 -0.111603
+v -0.136962 -0.230814 -0.111603
+v -0.113117 -0.230836 -0.111603
+v -0.058629 -0.232163 -0.003406
+v -0.056397 -0.231240 0.008701
+v -0.058567 -0.287178 -0.003406
+v -0.056334 -0.288105 0.008701
+v -0.096499 -0.328278 0.008701
+v -0.097427 -0.326045 -0.003406
+v -0.152442 -0.325995 -0.003406
+v -0.153364 -0.328227 0.008701
+v -0.191387 -0.287058 -0.003406
+v -0.193618 -0.287981 0.008701
+v -0.193681 -0.231116 0.008701
+v -0.191448 -0.232042 -0.003406
+v -0.153516 -0.190942 0.008701
+v -0.152589 -0.193176 -0.003406
+v -0.096651 -0.190994 0.008701
+v -0.097574 -0.193226 -0.003406
+v -0.100671 -0.249547 -0.221816
+v -0.100671 -0.249547 -0.172789
+v -0.125008 -0.259610 0.267663
+v -0.102282 -0.204619 0.267663
+v -0.100649 -0.269717 -0.172789
+v -0.100649 -0.269717 -0.221816
+v -0.114896 -0.283967 -0.172789
+v -0.114896 -0.283967 -0.221816
+v -0.135066 -0.283949 -0.172789
+v -0.135066 -0.283949 -0.221816
+v -0.149344 -0.269672 -0.172789
+v -0.149343 -0.269673 -0.221816
+v -0.149366 -0.249503 -0.172789
+v -0.149366 -0.249503 -0.221816
+v -0.135120 -0.235253 -0.172789
+v -0.135119 -0.235254 -0.221816
+v -0.114949 -0.235272 -0.172789
+v -0.125008 -0.259610 -0.221816
+v -0.114949 -0.235272 -0.221816
+v 0.135051 0.014727 -0.221816
+v 0.124993 -0.009611 -0.221816
+v 0.135051 0.014727 -0.172789
+v 0.114881 0.014745 -0.221816
+v 0.114881 0.014746 -0.172789
+v 0.100634 0.000496 -0.221816
+v 0.100634 0.000496 -0.172789
+v 0.100657 -0.019674 -0.221816
+v 0.100657 -0.019673 -0.172789
+v 0.114935 -0.033950 -0.221816
+v 0.114935 -0.033950 -0.172789
+v 0.135105 -0.033968 -0.221816
+v 0.135105 -0.033968 -0.172789
+v 0.149351 -0.019718 -0.221816
+v 0.149351 -0.019718 -0.172789
+v 0.147718 0.045380 0.267663
+v 0.124993 -0.009611 0.267663
+v 0.149329 0.000452 -0.172789
+v 0.149329 0.000452 -0.221816
+v 0.152427 0.056774 -0.003406
+v 0.153349 0.059006 0.008701
+v 0.097412 0.056824 -0.003406
+v 0.096484 0.059057 0.008701
+v 0.058552 0.017957 -0.003406
+v 0.056319 0.018884 0.008701
+v 0.056382 -0.037981 0.008701
+v 0.058614 -0.037058 -0.003406
+v 0.096636 -0.078228 0.008701
+v 0.097559 -0.075995 -0.003406
+v 0.152574 -0.076045 -0.003406
+v 0.153501 -0.078279 0.008701
+v 0.193667 -0.038106 0.008701
+v 0.191433 -0.037178 -0.003406
+v 0.193603 0.018760 0.008701
+v 0.191372 0.017836 -0.003406
+v 0.136884 0.019163 -0.111603
+v 0.113038 0.019185 -0.111603
+v 0.096195 0.002338 -0.111603
+v 0.096221 -0.021508 -0.111603
+v 0.113102 -0.038385 -0.111603
+v 0.136948 -0.038406 -0.111603
+v 0.153791 -0.021560 -0.111603
+v 0.153764 0.002287 -0.111603
+v 0.153349 0.059006 0.258125
+v 0.102145 0.045422 0.267663
+v 0.096484 0.059057 0.258125
+v 0.069955 0.013226 0.267663
+v 0.056319 0.018884 0.258125
+v 0.056382 -0.037981 0.258125
+v 0.070006 -0.032348 0.267663
+v 0.096636 -0.078228 0.258125
+v 0.102267 -0.064602 0.267663
+v 0.153501 -0.078279 0.258125
+v 0.147840 -0.064644 0.267663
+v 0.180031 -0.032448 0.267663
+v 0.193667 -0.038106 0.258125
+v 0.179980 0.013126 0.267663
+v 0.193603 0.018759 0.258125
+v 0.154141 0.060920 0.130736
+v 0.095689 0.060973 0.130736
+v 0.054403 0.019679 0.130736
+v 0.054468 -0.038772 0.130736
+v 0.095845 -0.080142 0.130736
+v 0.154296 -0.080195 0.130736
+v 0.195583 -0.038901 0.130736
+v 0.195517 0.019551 0.130736
+v -0.114949 0.264727 -0.221816
+v -0.125007 0.240389 -0.221816
+v -0.114949 0.264727 -0.172789
+v -0.135119 0.264745 -0.221816
+v -0.135119 0.264746 -0.172789
+v -0.149366 0.250496 -0.221816
+v -0.149366 0.250496 -0.172789
+v -0.149343 0.230326 -0.221816
+v -0.149343 0.230327 -0.172789
+v -0.135065 0.216051 -0.221816
+v -0.135065 0.216051 -0.172789
+v -0.114895 0.216033 -0.221816
+v -0.114895 0.216033 -0.172789
+v -0.100649 0.230282 -0.221816
+v -0.100649 0.230282 -0.172789
+v -0.102282 0.295381 0.267663
+v -0.125007 0.240389 0.267663
+v -0.100671 0.250452 -0.172789
+v -0.100671 0.250452 -0.221816
+v -0.097573 0.306774 -0.003406
+v -0.096651 0.309006 0.008701
+v -0.152588 0.306824 -0.003406
+v -0.153516 0.309058 0.008701
+v -0.191448 0.267957 -0.003406
+v -0.193681 0.268884 0.008701
+v -0.193618 0.212019 0.008701
+v -0.191386 0.212942 -0.003406
+v -0.153364 0.171773 0.008701
+v -0.152441 0.174005 -0.003406
+v -0.097426 0.173955 -0.003406
+v -0.096499 0.171721 0.008701
+v -0.056333 0.211894 0.008701
+v -0.058567 0.212822 -0.003406
+v -0.056397 0.268760 0.008701
+v -0.058628 0.267837 -0.003406
+v -0.113116 0.269163 -0.111603
+v -0.136962 0.269186 -0.111603
+v -0.153805 0.252338 -0.111603
+v -0.153779 0.228493 -0.111603
+v -0.136898 0.211616 -0.111603
+v -0.113052 0.211594 -0.111603
+v -0.096209 0.228441 -0.111603
+v -0.096236 0.252287 -0.111603
+v -0.096651 0.309006 0.258125
+v -0.147855 0.295423 0.267663
+v -0.153516 0.309058 0.258125
+v -0.180045 0.263226 0.267663
+v -0.193681 0.268885 0.258125
+v -0.193618 0.212019 0.258125
+v -0.179994 0.217652 0.267663
+v -0.153364 0.171773 0.258125
+v -0.147733 0.185398 0.267663
+v -0.096499 0.171721 0.258125
+v -0.102160 0.185356 0.267663
+v -0.069970 0.217552 0.267663
+v -0.056333 0.211894 0.258125
+v -0.070020 0.263126 0.267663
+v -0.056397 0.268760 0.258125
+v -0.095859 0.310920 0.130736
+v -0.154311 0.310973 0.130736
+v -0.195597 0.269679 0.130736
+v -0.195532 0.211228 0.130736
+v -0.154155 0.169859 0.130736
+v -0.095704 0.169806 0.130736
+v -0.054417 0.211100 0.130736
+v -0.054483 0.269551 0.130736
+v -0.054483 0.019552 0.130736
+v -0.054417 -0.038900 0.130736
+v -0.095704 -0.080194 0.130736
+v -0.154155 -0.080141 0.130736
+v -0.195533 -0.038772 0.130736
+v -0.195597 0.019680 0.130736
+v -0.154311 0.060974 0.130736
+v -0.095860 0.060920 0.130736
+v -0.056397 0.018760 0.258125
+v -0.070021 0.013126 0.267663
+v -0.056334 -0.038106 0.258125
+v -0.069970 -0.032447 0.267663
+v -0.102160 -0.064644 0.267663
+v -0.096499 -0.078278 0.258125
+v -0.147733 -0.064601 0.267663
+v -0.153364 -0.078227 0.258125
+v -0.179994 -0.032348 0.267663
+v -0.193618 -0.037981 0.258125
+v -0.193682 0.018885 0.258125
+v -0.180046 0.013227 0.267663
+v -0.153516 0.059058 0.258125
+v -0.147856 0.045423 0.267663
+v -0.096651 0.059007 0.258125
+v -0.096236 0.002287 -0.111603
+v -0.096209 -0.021559 -0.111603
+v -0.113052 -0.038406 -0.111603
+v -0.136899 -0.038384 -0.111603
+v -0.153779 -0.021507 -0.111603
+v -0.153805 0.002339 -0.111603
+v -0.136962 0.019186 -0.111603
+v -0.113117 0.019164 -0.111603
+v -0.058629 0.017837 -0.003406
+v -0.056397 0.018760 0.008701
+v -0.058567 -0.037178 -0.003406
+v -0.056334 -0.038105 0.008701
+v -0.096499 -0.078278 0.008701
+v -0.097427 -0.076045 -0.003406
+v -0.152442 -0.075995 -0.003406
+v -0.153364 -0.078227 0.008701
+v -0.191387 -0.037058 -0.003406
+v -0.193618 -0.037981 0.008701
+v -0.193681 0.018884 0.008701
+v -0.191448 0.017958 -0.003406
+v -0.153516 0.059058 0.008701
+v -0.152589 0.056824 -0.003406
+v -0.096651 0.059006 0.008701
+v -0.097574 0.056774 -0.003406
+v -0.100671 0.000453 -0.221816
+v -0.100671 0.000453 -0.172789
+v -0.125008 -0.009610 0.267663
+v -0.102282 0.045381 0.267663
+v -0.100649 -0.019717 -0.172789
+v -0.100649 -0.019717 -0.221816
+v -0.114896 -0.033967 -0.172789
+v -0.114896 -0.033967 -0.221816
+v -0.135066 -0.033949 -0.172789
+v -0.135066 -0.033949 -0.221816
+v -0.149344 -0.019672 -0.172789
+v -0.149343 -0.019673 -0.221816
+v -0.149366 0.000497 -0.172789
+v -0.149366 0.000497 -0.221816
+v -0.135120 0.014747 -0.172789
+v -0.135119 0.014746 -0.221816
+v -0.114949 0.014728 -0.172789
+v -0.125008 -0.009610 -0.221816
+v -0.114949 0.014728 -0.221816
+v -0.179483 0.144551 0.130736
+v -0.179417 0.086100 0.130736
+v -0.220704 0.044806 0.130736
+v -0.279155 0.044859 0.130736
+v -0.320533 0.086228 0.130736
+v -0.320597 0.144680 0.130736
+v -0.279311 0.185973 0.130736
+v -0.220860 0.185920 0.130736
+v -0.181397 0.143760 0.258125
+v -0.195021 0.138126 0.267663
+v -0.181334 0.086894 0.258125
+v -0.194970 0.092553 0.267663
+v -0.227160 0.060356 0.267663
+v -0.221499 0.046722 0.258125
+v -0.272733 0.060399 0.267663
+v -0.278364 0.046773 0.258125
+v -0.304994 0.092652 0.267663
+v -0.318618 0.087019 0.258125
+v -0.318682 0.143885 0.258125
+v -0.305045 0.138226 0.267663
+v -0.278516 0.184058 0.258125
+v -0.272855 0.170423 0.267663
+v -0.221651 0.184006 0.258125
+v -0.221236 0.127287 -0.111603
+v -0.221209 0.103441 -0.111603
+v -0.238052 0.086594 -0.111603
+v -0.261899 0.086616 -0.111603
+v -0.278779 0.103493 -0.111603
+v -0.278805 0.127339 -0.111603
+v -0.261962 0.144186 -0.111603
+v -0.238117 0.144163 -0.111603
+v -0.183629 0.142837 -0.003406
+v -0.181397 0.143760 0.008701
+v -0.183567 0.087822 -0.003406
+v -0.181334 0.086894 0.008701
+v -0.221499 0.046722 0.008701
+v -0.222427 0.048955 -0.003406
+v -0.277442 0.049005 -0.003406
+v -0.278364 0.046773 0.008701
+v -0.316386 0.087942 -0.003406
+v -0.318618 0.087019 0.008701
+v -0.318681 0.143884 0.008701
+v -0.316448 0.142957 -0.003406
+v -0.278516 0.184058 0.008701
+v -0.277589 0.181824 -0.003406
+v -0.221651 0.184006 0.008701
+v -0.222574 0.181774 -0.003406
+v -0.225671 0.125452 -0.221816
+v -0.225671 0.125452 -0.172789
+v -0.250008 0.115390 0.267663
+v -0.227282 0.170381 0.267663
+v -0.225649 0.105283 -0.172789
+v -0.225649 0.105283 -0.221816
+v -0.239896 0.091033 -0.172789
+v -0.239896 0.091033 -0.221816
+v -0.260066 0.091051 -0.172789
+v -0.260066 0.091051 -0.221816
+v -0.274344 0.105327 -0.172789
+v -0.274343 0.105327 -0.221816
+v -0.274366 0.125497 -0.172789
+v -0.274366 0.125497 -0.221816
+v -0.260120 0.139747 -0.172789
+v -0.260119 0.139746 -0.221816
+v -0.239949 0.139728 -0.172789
+v -0.250008 0.115390 -0.221816
+v -0.239949 0.139728 -0.221816
+vt 0.250001 0.484375
+vt 0.359376 0.375000
+vt 0.375001 0.390625
+vt 0.265626 0.500000
+vt 0.390626 0.375000
+vt 0.375001 0.359375
+vt 0.484376 0.250000
+vt 0.500000 0.265625
+vt 0.500001 0.234375
+vt 0.609375 0.125000
+vt 0.625000 0.140625
+vt 0.515625 0.250000
+vt 0.250001 0.734375
+vt 0.359376 0.625000
+vt 0.375001 0.640625
+vt 0.265626 0.750000
+vt 0.734375 0.000000
+vt 0.749999 0.015625
+vt 0.640625 0.125000
+vt 0.625000 0.109375
+vt 0.015625 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.984375
+vt 0.109376 0.875000
+vt 0.125001 0.890625
+vt 0.234376 0.750000
+vt 0.250001 0.765625
+vt 0.140626 0.875000
+vt 0.125001 0.859375
+vt 0.390626 0.625000
+vt 0.375001 0.609375
+vt 0.484376 0.500000
+vt 0.500000 0.515625
+vt 0.984374 0.000000
+vt 0.999999 0.000000
+vt 0.999999 0.015625
+vt 0.890625 0.125000
+vt 0.875000 0.109375
+vt 0.859375 0.125000
+vt 0.875000 0.140625
+vt 0.765625 0.250000
+vt 0.750000 0.234375
+vt 0.765625 0.000000
+vt 1.000000 0.234375
+vt 1.000000 0.250000
+vt 0.984375 0.250000
+vt 0.500001 0.484375
+vt 0.609375 0.375000
+vt 0.625000 0.390625
+vt 0.515625 0.500000
+vt 0.734375 0.250000
+vt 0.750000 0.265625
+vt 0.640625 0.375000
+vt 0.625000 0.359375
+vt 0.375001 0.140625
+vt 0.359376 0.125000
+vt 0.234376 0.000000
+vt 0.265626 0.000000
+vt 0.375001 0.109375
+vt 0.390626 0.125000
+vt 0.750000 0.484375
+vt 0.765625 0.500000
+vt 0.875000 0.609375
+vt 0.890625 0.625000
+vt 1.000000 0.734375
+vt 1.000000 0.750000
+vt 0.984375 0.750000
+vt 0.875000 0.640625
+vt 0.859375 0.625000
+vt 0.750000 0.515625
+vt 0.734375 0.500000
+vt 0.250000 0.984375
+vt 0.359376 0.875000
+vt 0.375001 0.890625
+vt 0.265626 1.000000
+vt 0.390626 0.875000
+vt 0.375001 0.859375
+vt 0.484376 0.750000
+vt 0.500000 0.765625
+vt 0.625000 0.890625
+vt 0.609375 0.875000
+vt 0.250001 0.515625
+vt 0.234376 0.500000
+vt 0.125001 0.390625
+vt 0.109376 0.375000
+vt 0.000001 0.265625
+vt 0.000001 0.250000
+vt 0.015626 0.250000
+vt 0.125001 0.359375
+vt 0.140626 0.375000
+vt 0.500001 0.734375
+vt 0.515625 0.750000
+vt 0.625000 0.859375
+vt 0.640625 0.875000
+vt 0.765625 1.000000
+vt 0.734375 1.000000
+vt 0.999999 0.265625
+vt 0.890625 0.375000
+vt 0.875000 0.359375
+vt 0.234376 1.000000
+vt 0.000001 0.765625
+vt 0.000001 0.750000
+vt 0.015626 0.750000
+vt 0.000000 0.234375
+vt 0.109376 0.125000
+vt 0.125001 0.140625
+vt 0.859375 0.375000
+vt 0.875000 0.390625
+vt 0.515626 1.000000
+vt 0.484376 1.000000
+vt 0.125001 0.640625
+vt 0.109376 0.625000
+vt 0.000001 0.515625
+vt 0.000001 0.500000
+vt 0.015626 0.500000
+vt 0.125001 0.609375
+vt 0.140626 0.625000
+vt 0.250000 0.015625
+vt 0.140626 0.125000
+vt 0.125001 0.109375
+vt 0.000000 0.484375
+vt 1.000000 0.484375
+vt 1.000000 0.500000
+vt 0.984375 0.500000
+vt 0.484375 0.000000
+vt 0.515625 0.000000
+vt 0.234376 0.250000
+vt 0.250001 0.265625
+vt 0.609375 0.625000
+vt 0.625000 0.640625
+vt 0.250001 0.234375
+vt 0.265626 0.250000
+vt 0.640625 0.625000
+vt 0.625000 0.609375
+vt 0.999999 0.515625
+vt 0.765625 0.750000
+vt 0.750000 0.734375
+vt 0.875000 0.859375
+vt 0.890625 0.875000
+vt 1.000000 0.984375
+vt 1.000000 1.000000
+vt 0.984375 1.000000
+vt 0.875000 0.890625
+vt 0.859375 0.875000
+vt 0.750000 0.765625
+vt 0.734375 0.750000
+vt 0.000001 0.015625
+vt 0.000001 0.000000
+vt 0.015626 0.000000
+vt 0.499999 0.984375
+vt 0.499999 0.015625
+vt 0.999999 0.765625
+vt 0.749999 0.984375
+vt 0.000000 0.734375
+vt 0.384150 0.592843
+vt 0.384150 0.571003
+vt 0.492254 0.571003
+vt 0.492254 0.592843
+vt 0.507696 0.592799
+vt 0.507696 0.570958
+vt 0.615803 0.570958
+vt 0.615803 0.592799
+vt 0.739353 0.592799
+vt 0.739353 0.570958
+vt 0.631246 0.570958
+vt 0.631246 0.592799
+vt 0.368703 0.592799
+vt 0.368703 0.570958
+vt 0.260596 0.570958
+vt 0.260596 0.592799
+vt 0.754795 0.592843
+vt 0.754795 0.571003
+vt 0.862900 0.571003
+vt 0.862900 0.592844
+vt 0.013504 0.592844
+vt 0.013504 0.571003
+vt 0.121609 0.571003
+vt 0.121609 0.592844
+vt 0.245157 0.592844
+vt 0.245157 0.571003
+vt 0.137052 0.571003
+vt 0.137052 0.592844
+vt 0.137046 0.570958
+vt 0.137046 0.592799
+vt 0.878344 0.592844
+vt 0.878344 0.571003
+vt 0.986449 0.571003
+vt 0.986449 0.592843
+vt 0.654668 0.422666
+vt 0.654668 0.577334
+vt 0.636472 0.577334
+vt 0.636472 0.422666
+vt 0.121602 0.428993
+vt 0.137046 0.428993
+vt 0.986453 0.570959
+vt 0.986453 0.592799
+vt 0.631247 0.407199
+vt 0.615803 0.407199
+vt 0.384150 0.592844
+vt 0.384150 0.571003
+vt 0.384150 0.429039
+vt 0.384150 0.407199
+vt 0.492254 0.407199
+vt 0.492254 0.429040
+vt 0.507696 0.428993
+vt 0.507696 0.407153
+vt 0.615803 0.428993
+vt 0.739353 0.428993
+vt 0.739353 0.407153
+vt 0.631246 0.428993
+vt 0.368702 0.428993
+vt 0.368702 0.407153
+vt 0.260596 0.407153
+vt 0.260596 0.428993
+vt 0.754795 0.429040
+vt 0.754795 0.407199
+vt 0.862900 0.407199
+vt 0.862900 0.429040
+vt 0.013504 0.429040
+vt 0.013504 0.407199
+vt 0.121609 0.407199
+vt 0.509098 0.422666
+vt 0.509098 0.577334
+vt 0.490902 0.577334
+vt 0.490902 0.422666
+vt 0.245152 0.428993
+vt 0.245157 0.407199
+vt 0.137052 0.407199
+vt 0.137052 0.429040
+vt 0.137046 0.407153
+vt 0.878344 0.429040
+vt 0.878344 0.407199
+vt 0.986449 0.407199
+vt 0.986449 0.429040
+vt 0.345332 0.422666
+vt 0.363528 0.422666
+vt 0.363528 0.577334
+vt 0.345332 0.577334
+vt 0.986453 0.407153
+vt 0.986453 0.428993
+vt 0.994171 0.592843
+vt 0.994171 0.407199
+vt 0.499976 0.407199
+vt 0.499976 0.592844
+vt 0.384150 0.429040
+vt 0.384150 0.407199
+vt 0.005782 0.592844
+vt 0.005782 0.407199
+vt 0.354167 0.562500
+vt 0.437500 0.562500
+vt 0.437500 0.750000
+vt 0.354167 0.750000
+vt 0.187500 0.312500
+vt 0.187500 0.520833
+vt 0.104167 0.520833
+vt 0.104167 0.312500
+vt 0.408420 0.841035
+vt 0.491470 0.875167
+vt 0.408609 0.909757
+vt 0.642207 0.912088
+vt 0.620547 0.890735
+vt 0.657151 0.875265
+vt 0.270833 0.895833
+vt 0.312500 0.895833
+vt 0.312500 0.979167
+vt 0.270833 0.979167
+vt 0.354167 0.520833
+vt 0.437500 0.520833
+vt 0.270833 0.562500
+vt 0.270833 0.750000
+vt 0.604167 0.520833
+vt 0.520833 0.520833
+vt 0.520833 0.312500
+vt 0.604167 0.312500
+vt 0.526059 0.958028
+vt 0.457337 0.958217
+vt 0.062500 0.895833
+vt 0.104167 0.895833
+vt 0.104167 0.979167
+vt 0.062500 0.979167
+vt 0.229167 0.895833
+vt 0.229167 0.979167
+vt 0.574330 0.840577
+vt 0.525602 0.792117
+vt 0.270833 0.520833
+vt 0.187500 0.562500
+vt 0.104167 0.791667
+vt 0.145833 0.791667
+vt 0.145833 0.895833
+vt 0.604167 0.750000
+vt 0.604167 0.562500
+vt 0.687500 0.562500
+vt 0.687500 0.750000
+vt 0.687500 0.520833
+vt 0.104167 0.750000
+vt 0.104167 0.562500
+vt 0.187500 0.750000
+vt 0.020833 0.312500
+vt 0.020833 0.520833
+vt 0.020833 0.895833
+vt 0.020833 0.979167
+vt 0.187500 0.791667
+vt 0.187500 0.895833
+vt 0.020833 0.062500
+vt 0.104167 0.062500
+vt 0.104167 0.020833
+vt 0.020833 0.020833
+vt 0.187500 0.020833
+vt 0.270833 0.020833
+vt 0.270833 0.062500
+vt 0.187500 0.062500
+vt 0.187500 0.979167
+vt 0.520833 0.562500
+vt 0.693756 0.859795
+vt 0.693974 0.890209
+vt 0.437500 0.062500
+vt 0.520833 0.062500
+vt 0.437500 0.312500
+vt 0.145833 0.979167
+vt 0.270833 0.312500
+vt 0.604167 0.062500
+vt 0.354167 0.895833
+vt 0.354167 0.979167
+vt 0.672622 0.911870
+vt 0.687500 0.062500
+vt 0.687500 0.312500
+vt 0.354167 0.312500
+vt 0.641681 0.838660
+vt 0.672096 0.838442
+vt 0.354167 0.020833
+vt 0.354167 0.062500
+vt 0.062500 0.791667
+vt 0.020833 0.791667
+vt 0.229167 0.791667
+vt 0.456880 0.792307
+vt 0.437500 0.020833
+vt 0.574520 0.909300
+vt 0.520833 0.020833
+vt 0.620329 0.860321
+vt 0.020833 0.562500
+vt 0.312500 0.791667
+vt 0.354167 0.791667
+vt 0.270833 0.791667
+vt 0.604167 0.020833
+vt 0.687500 0.020833
+vt 0.520833 0.750000
+vt 0.020833 0.750000
+vn 0.000000 0.000000 1.000000
+vn -0.000000 -0.000000 -1.000000
+vn 0.707100 0.707100 0.000000
+vn 0.707100 -0.707100 0.000000
+vn -0.707100 0.707100 0.000000
+vn -0.707100 -0.707100 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.889400 -0.369000 -0.269600
+vn -0.889800 0.367900 -0.269900
+vn -0.900400 0.372200 -0.225200
+vn -0.900000 -0.373500 -0.224900
+vn 0.382300 -0.924000 -0.000300
+vn 0.380200 -0.918900 -0.104600
+vn 0.919000 -0.380000 -0.104600
+vn 0.924100 -0.382100 -0.000300
+vn -0.319000 0.131700 0.938500
+vn -0.131800 0.318900 0.938500
+vn 0.717000 0.297500 -0.630300
+vn 0.717500 -0.296700 -0.630200
+vn -0.382000 0.923300 -0.039600
+vn 0.382800 0.923000 -0.039500
+vn 0.297400 0.717100 -0.630300
+vn -0.296800 0.717500 -0.630200
+vn -0.918600 -0.381100 -0.104500
+vn -0.919000 0.380000 -0.104600
+vn -0.368800 -0.889500 -0.269600
+vn -0.373300 -0.900000 -0.224900
+vn 0.380900 0.918700 -0.104500
+vn -0.380200 0.918900 -0.104600
+vn -0.382300 0.924000 -0.000300
+vn 0.383000 0.923700 -0.000300
+vn 0.318900 0.132500 0.938500
+vn 0.132400 0.318900 0.938500
+vn 0.923400 -0.381800 -0.039600
+vn 0.382000 -0.923300 -0.039600
+vn 0.296900 -0.717500 -0.630200
+vn -0.923400 0.381800 -0.039600
+vn -0.717500 0.296700 -0.630200
+vn 0.131800 -0.318900 0.938500
+vn -0.132400 -0.318900 0.938500
+vn -0.380900 -0.918700 -0.104500
+vn 0.368100 -0.889700 -0.270000
+vn 0.372400 -0.900300 -0.225200
+vn -0.382800 -0.923000 -0.039500
+vn 0.373300 0.900000 -0.224900
+vn 0.368800 0.889500 -0.269600
+vn 0.889400 0.369000 -0.269600
+vn 0.900000 0.373500 -0.224900
+vn 0.918600 0.381100 -0.104500
+vn 0.900400 -0.372200 -0.225200
+vn 0.889800 -0.367900 -0.270000
+vn 0.923600 0.383200 -0.000300
+vn 0.922900 0.382900 -0.039500
+vn -0.922900 -0.382900 -0.039500
+vn 0.828900 -0.342800 0.442100
+vn 0.828500 0.343700 0.442000
+vn 0.319000 -0.131700 0.938500
+vn -0.343500 -0.828600 0.442000
+vn 0.342900 -0.828800 0.442100
+vn -0.717000 -0.297500 -0.630300
+vn -0.368100 0.889700 -0.270000
+vn -0.828900 0.342800 0.442100
+vn -0.342900 0.828800 0.442100
+vn -0.924100 0.382100 -0.000300
+vn -0.297400 -0.717100 -0.630300
+vn -0.383000 -0.923700 -0.000300
+vn 0.343500 0.828600 0.442000
+vn -0.923600 -0.383200 -0.000300
+vn -0.318900 -0.132500 0.938500
+vn -0.828500 -0.343700 0.442000
+vn -0.372400 0.900300 -0.225200
+vn 0.297300 0.717100 -0.630300
+vn -0.296800 0.717400 -0.630200
+vn -0.717500 0.296700 -0.630100
+vn -0.368100 0.889700 -0.269900
+vn -0.918600 -0.381100 -0.104400
+vn 0.889800 -0.367900 -0.269900
+g bottle.1_Cylinder.007_bottle.1_Cylinder.007_wood
+s off
+f 161/1/1 96/2/1 94/3/1 163/4/1
+f 95/5/1 93/6/1 107/7/1 105/8/1
+f 101/9/1 138/10/1 136/11/1 106/12/1
+f 182/13/1 172/14/1 170/15/1 184/16/1
+f 146/17/1 205/18/1 137/19/1 135/20/1
+f 201/21/1 202/22/1 200/23/1 220/24/1 218/25/1
+f 185/26/1 183/27/1 219/28/1 217/29/1
+f 171/30/1 169/31/1 76/32/1 72/33/1
+f 198/34/1 199/35/1 203/36/1 150/37/1 148/38/1
+f 151/39/1 149/40/1 133/41/1 131/42/1
+f 147/43/1 148/38/1 150/37/1 143/44/1 145/45/1 144/46/1 149/40/1 151/39/1 146/17/1
+f 69/47/1 117/48/1 115/49/1 75/50/1
+f 134/51/1 132/52/1 116/53/1 114/54/1
+f 117/48/1 105/8/1 107/7/1 123/55/1 125/56/1 112/57/1 113/58/1 122/59/1 124/60/1 101/9/1 106/12/1 114/54/1 116/53/1 108/61/1 110/62/1 118/63/1 120/64/1 102/65/1 104/66/1 103/67/1 119/68/1 121/69/1 109/70/1 111/71/1 115/49/1
+f 197/72/1 189/73/1 187/74/1 215/75/1
+f 188/76/1 186/77/1 158/78/1 156/79/1
+f 166/80/1 168/81/1 156/79/1 158/78/1 170/15/1 172/14/1 162/82/1 164/83/1 174/84/1 176/85/1 155/86/1 153/87/1 152/88/1 173/89/1 175/90/1 161/1/1 163/4/1 169/31/1 171/30/1 154/91/1 157/92/1 165/93/1 167/94/1 159/95/1 160/96/1
+f 144/46/1 145/45/1 196/97/1 141/98/1 139/99/1
+f 219/28/1 215/75/1 216/100/1 218/25/1 220/24/1 214/101/1 213/102/1 212/103/1 217/29/1
+f 152/88/1 153/87/1 210/104/1 100/105/1 98/106/1
+f 142/107/1 140/108/1 110/62/1 108/61/1
+f 179/109/1 181/110/1 187/74/1 189/73/1 183/27/1 185/26/1 191/111/1 193/112/1 180/113/1 178/114/1 177/115/1 190/116/1 192/117/1 182/13/1 184/16/1 186/77/1 188/76/1
+f 112/57/1 211/118/1 99/119/1 97/120/1
+f 177/115/1 178/114/1 208/121/1 176/85/1 174/84/1
+f 135/20/1 137/19/1 131/42/1 133/41/1 139/99/1 141/98/1 126/122/1 128/123/1 127/124/1 140/108/1 142/107/1 132/52/1 134/51/1 136/11/1 138/10/1 129/125/1 130/126/1
+f 84/127/1 82/128/1 175/90/1 173/89/1
+f 154/91/1 88/129/1 86/130/1 157/92/1
+f 81/131/1 125/56/1 123/55/1 83/132/1
+f 111/71/1 109/70/1 87/133/1 85/134/1
+f 127/124/1 128/123/1 195/135/1 120/64/1 118/63/1
+f 121/69/1 119/68/1 79/136/1 77/137/1
+f 69/47/1 75/50/1 85/134/1 87/133/1 77/137/1 79/136/1 89/138/1 91/139/1 70/140/1 73/141/1 71/142/1 90/143/1 92/144/1 78/145/1 80/146/1 86/130/1 88/129/1 72/33/1 76/32/1 94/3/1 96/2/1 82/128/1 84/127/1 98/106/1 100/105/1 74/147/1 68/148/1 67/149/1 97/120/1 99/119/1 81/131/1 83/132/1 93/6/1 95/5/1
+f 194/150/1 168/81/1 166/80/1 179/109/1
+f 80/146/1 78/145/1 167/94/1 165/93/1
+f 124/60/1 122/59/1 129/125/1 209/151/1
+f 103/67/1 104/66/1 206/152/1 91/139/1 89/138/1
+f 92/144/1 90/143/1 159/95/1 207/153/1
+f 212/103/1 213/102/1 204/154/1 193/112/1 191/111/1
+f 164/83/1 162/82/1 192/117/1 190/116/1
+f 311/61/2 313/71/2 248/49/2 250/53/2
+f 249/48/2 259/8/2 261/12/2 247/54/2
+f 255/9/2 260/7/2 289/55/2 291/60/2
+f 327/137/2 329/146/2 319/130/2 320/133/2
+f 297/58/2 288/59/2 290/56/2 349/118/2
+f 345/142/2 362/143/2 364/139/2 344/140/2 346/141/2
+f 330/136/2 361/138/2 363/144/2 328/145/2
+f 342/149/2 299/120/2 301/105/2 347/147/2 343/148/2
+f 302/119/2 284/131/2 286/127/2 300/106/2
+f 298/57/2 297/58/2 302/119/2 300/106/2 295/88/2 296/87/2 294/104/2 301/105/2 299/120/2
+f 223/47/2 229/32/2 268/3/2 270/5/2
+f 287/132/2 267/6/2 269/2/2 285/128/2
+f 341/153/2 359/96/2 332/80/2 334/94/2
+f 333/81/2 306/79/2 308/92/2 331/93/2
+f 363/144/2 361/138/2 356/67/2 357/66/2 358/152/2 364/139/2 362/143/2 360/95/2 359/96/2
+f 303/46/2 252/40/2 254/37/2 354/44/2 304/45/2
+f 265/43/2 251/38/2 253/39/2 355/18/2
+f 235/42/2 237/51/2 276/11/2 278/19/2
+f 264/4/2 239/31/2 241/14/2 262/82/2
+f 280/115/2 271/116/2 273/112/2 339/113/2 281/114/2
+f 274/117/2 231/13/2 233/26/2 272/111/2
+f 223/47/2 249/48/2 247/54/2 237/51/2 235/42/2 253/39/2 251/38/2 221/34/2 222/35/2 228/36/2 254/37/2 252/40/2 238/41/2 236/52/2 250/53/2 248/49/2 230/50/2 226/33/2 242/30/2 240/15/2 234/16/2 232/27/2 246/28/2 244/25/2 225/21/2 227/22/2 224/23/2 245/24/2 243/29/2 233/26/2 231/13/2 241/14/2 239/31/2 229/32/2
+f 338/150/2 324/110/2 315/74/2 317/76/2
+f 277/10/2 353/151/2 282/126/2 275/20/2
+f 257/103/2 243/29/2 245/24/2 350/101/2 258/102/2
+f 246/28/2 351/72/2 309/100/2 244/25/2
+f 356/67/2 336/68/2 337/64/2 348/65/2 357/66/2
+f 211/155/3 355/156/3 253/157/3 99/158/3
+f 184/159/4 329/160/4 331/161/4 186/162/4
+f 111/162/5 264/161/5 268/160/5 115/159/5
+f 77/158/6 231/157/6 274/156/6 121/155/6
+f 127/163/5 280/164/5 292/165/5 140/166/5
+f 96/167/5 250/168/5 236/169/5 82/170/5
+f 212/155/4 356/156/4 361/157/4 217/158/4
+f 140/170/3 292/169/3 263/168/3 110/167/3
+f 87/166/4 241/165/4 231/164/4 77/163/4
+f 189/162/5 334/161/5 328/160/5 183/159/5
+f 187/171/3 332/172/3 359/173/3 215/174/3
+f 105/155/3 259/156/3 249/157/3 95/158/3
+f 203/175/3 347/176/3 301/177/3 150/178/3
+f 220/158/5 364/157/5 358/156/5 214/155/5
+f 107/167/5 261/168/5 276/169/5 123/170/5
+f 89/158/6 243/157/6 257/156/6 103/155/6
+f 136/170/3 289/169/3 260/168/3 106/167/3
+f 194/163/6 338/164/6 317/165/6 168/166/6
+f 80/163/5 234/164/5 240/165/5 86/166/5
+f 315/74/2 310/75/2 309/100/2 316/73/2 667/77/2 307/78/2 669/91/2 671/129/2 318/134/2 313/71/2 311/61/2 681/107/2 321/99/2 303/46/2 304/45/2 305/97/2 682/98/2 680/108/2 314/62/2 312/70/2 320/133/2 319/130/2 308/92/2 306/79/2 317/76/2
+f 93/158/6 247/157/6 261/156/6 107/155/6
+f 151/158/5 302/157/5 297/168/5 146/167/5
+f 168/163/5 317/164/5 306/165/5 156/166/5
+f 124/170/4 277/169/4 255/168/4 101/167/4
+f 109/155/3 262/156/3 241/157/3 87/158/3
+f 137/155/4 290/156/4 284/157/4 131/158/4
+f 270/5/2 268/3/2 264/4/2 262/82/2 274/117/2 272/111/2 257/103/2 258/102/2 256/154/2 273/112/2 271/116/2 263/83/2 674/1/2 269/2/2 267/6/2 260/7/2 255/9/2 277/10/2 275/20/2 266/17/2 265/43/2 278/19/2 276/11/2 261/12/2 259/8/2
+f 163/155/4 313/156/4 318/157/4 169/158/4
+f 131/179/6 284/180/6 302/181/6 151/182/6
+f 121/163/5 274/164/5 262/165/5 109/166/5
+f 147/155/4 298/156/4 299/157/4 148/158/4
+f 84/179/5 238/180/5 252/183/5 98/184/5
+f 196/182/3 340/181/3 293/180/3 141/179/3
+f 207/162/6 351/161/6 246/160/6 92/159/6
+f 134/158/5 287/157/5 289/156/5 136/155/5
+f 218/185/3 362/186/3 345/187/3 201/188/3
+f 166/166/3 315/165/3 324/164/3 179/163/3
+f 172/158/5 320/157/5 312/156/5 162/155/5
+f 149/182/3 300/181/3 286/180/3 133/179/3
+f 185/158/5 330/157/5 336/156/5 191/155/5
+f 110/166/4 263/165/4 271/164/4 118/163/4
+f 671/129/2 226/33/2 230/50/2 318/134/2
+f 119/155/3 272/156/3 233/157/3 79/158/3
+f 186/163/6 331/164/6 308/165/6 158/166/6
+f 99/184/4 253/183/4 235/180/4 81/179/4
+f 173/162/6 321/161/6 238/160/6 84/159/6
+f 656/189/7 210/190/7 155/191/7 601/192/7
+f 85/158/6 239/157/6 264/156/6 111/155/6
+f 200/188/6 344/187/6 364/186/6 220/185/6
+f 88/162/5 242/161/5 226/160/5 72/159/5
+f 92/174/5 246/173/5 232/172/5 78/171/5
+f 167/171/4 316/172/4 309/186/4 159/185/4
+f 113/184/4 266/183/4 275/180/4 122/179/4
+f 90/159/3 244/160/3 309/161/3 159/162/3
+f 79/171/4 233/172/4 243/173/4 89/174/4
+f 76/158/5 230/157/5 248/156/5 94/155/5
+f 78/159/3 232/160/3 316/161/3 167/162/3
+f 125/179/5 278/180/5 265/177/5 112/178/5
+f 191/171/3 336/172/3 356/173/3 212/174/3
+f 217/174/6 361/173/6 330/172/6 185/171/6
+f 502/193/4 447/194/4 303/183/4 354/177/4
+f 132/170/3 285/169/3 269/168/3 116/167/3
+f 95/155/4 249/156/4 223/157/4 69/158/4
+f 67/175/4 221/176/4 251/177/4 97/178/4
+f 123/155/3 276/156/3 237/157/3 83/158/3
+f 204/174/6 348/173/6 337/172/6 193/171/6
+f 160/174/5 310/173/5 315/172/5 166/171/5
+f 86/159/3 240/160/3 307/161/3 157/162/3
+f 177/170/4 322/169/4 335/168/4 190/167/4
+f 150/159/4 301/160/4 294/161/4 143/162/4
+f 100/178/5 254/177/5 228/176/5 74/175/5
+f 181/163/5 326/164/5 332/165/5 187/166/5
+f 106/155/4 260/156/4 267/157/4 114/158/4
+f 197/174/6 341/173/6 334/172/6 189/171/6
+f 183/171/3 328/172/3 363/173/3 219/174/3
+f 193/167/5 337/168/5 325/169/5 180/170/5
+f 169/162/6 318/161/6 230/160/6 76/159/6
+f 120/171/4 273/172/4 256/173/4 102/174/4
+f 98/159/3 252/160/3 303/161/3 152/162/3
+f 144/162/5 295/161/5 300/160/5 149/159/5
+f 81/158/6 235/157/6 278/156/6 125/155/6
+f 117/158/5 270/157/5 259/156/5 105/155/5
+f 190/163/6 335/164/6 314/165/6 164/166/6
+f 156/166/3 306/165/3 333/164/3 188/163/3
+f 103/174/5 257/173/5 272/172/5 119/171/5
+f 83/170/4 237/169/4 247/168/4 93/167/4
+f 210/162/6 354/161/6 254/160/6 100/159/6
+f 209/170/3 353/169/3 277/168/3 124/167/3
+f 188/166/4 333/165/4 324/172/4 179/171/4
+f 69/158/6 223/157/6 270/156/6 117/155/6
+f 170/166/3 319/165/3 329/164/3 184/163/3
+f 216/162/5 360/161/5 362/160/5 218/159/5
+f 152/184/4 303/183/4 321/180/4 173/179/4
+f 91/185/4 245/186/4 224/195/4 70/196/4
+f 205/182/3 349/181/3 290/180/3 137/179/3
+f 75/159/4 229/160/4 239/161/4 85/162/4
+f 122/167/6 275/168/6 282/169/6 129/170/6
+f 115/155/3 268/156/3 229/157/3 75/158/3
+f 94/159/3 248/160/3 313/161/3 163/162/3
+f 195/170/3 339/169/3 273/168/3 120/167/3
+f 71/196/5 225/195/5 244/186/5 90/185/5
+f 130/170/4 283/169/4 288/168/4 135/167/4
+f 135/179/6 288/180/6 297/181/6 146/182/6
+f 97/158/6 251/157/6 265/156/6 112/155/6
+f 158/162/5 308/161/5 319/160/5 170/159/5
+f 148/178/6 299/177/6 342/176/6 198/175/6
+f 601/197/3 305/165/3 303/161/3 598/198/3
+f 161/162/6 311/161/6 250/160/6 96/159/6
+f 118/167/6 271/168/6 280/169/6 127/170/6
+f 141/166/4 293/165/4 279/164/4 126/163/4
+f 182/163/6 327/164/6 320/165/6 172/166/6
+f 219/159/4 363/160/4 359/165/4 215/166/4
+f 114/167/6 267/168/6 287/169/6 134/170/6
+f 206/199/3 350/200/3 245/157/3 91/158/3
+f 138/167/5 291/168/5 282/180/5 129/179/5
+f 101/167/6 255/168/6 291/169/6 138/170/6
+f 455/1/1 394/2/1 392/3/1 457/4/1
+f 393/5/1 391/6/1 405/7/1 403/8/1
+f 399/9/1 435/10/1 433/11/1 404/12/1
+f 474/13/1 464/14/1 463/15/1 476/16/1
+f 441/17/1 497/18/1 434/19/1 432/20/1
+f 493/21/1 494/22/1 492/23/1 512/24/1 510/25/1
+f 477/26/1 475/27/1 511/28/1 509/29/1
+f 490/34/1 491/35/1 495/36/1 445/37/1 443/38/1
+f 446/39/1 444/40/1 430/41/1 428/42/1
+f 442/43/1 443/38/1 445/37/1 438/44/1 440/45/1 439/46/1 444/40/1 446/39/1 441/17/1
+f 367/47/1 414/48/1 412/49/1 373/50/1
+f 431/51/1 429/52/1 413/53/1 411/54/1
+f 489/72/1 481/73/1 479/74/1 507/75/1
+f 480/76/1 478/77/1 452/78/1 450/79/1
+f 511/28/1 507/75/1 508/100/1 510/25/1 512/24/1 506/101/1 505/102/1 504/103/1 509/29/1
+f 447/88/1 448/87/1 502/104/1 398/105/1 396/106/1
+f 471/109/1 473/110/1 479/74/1 481/73/1 475/27/1 477/26/1 483/111/1 485/112/1 472/113/1 470/114/1 469/115/1 482/116/1 484/117/1 474/13/1 476/16/1 478/77/1 480/76/1
+f 409/57/1 503/118/1 397/119/1 395/120/1
+f 469/115/1 470/114/1 500/121/1 468/85/1 466/84/1
+f 382/127/1 380/128/1 467/90/1 465/89/1
+f 379/131/1 422/56/1 420/55/1 381/132/1
+f 408/71/1 406/70/1 385/133/1 383/134/1
+f 424/124/1 425/123/1 487/135/1 417/64/1 415/63/1
+f 418/69/1 416/68/1 377/136/1 375/137/1
+f 367/47/1 373/50/1 383/134/1 385/133/1 375/137/1 377/136/1 387/138/1 389/139/1 368/140/1 371/141/1 369/142/1 388/143/1 390/144/1 376/145/1 378/146/1 384/130/1 386/129/1 370/33/1 374/32/1 392/3/1 394/2/1 380/128/1 382/127/1 396/106/1 398/105/1 372/147/1 366/148/1 365/149/1 395/120/1 397/119/1 379/131/1 381/132/1 391/6/1 393/5/1
+f 486/150/1 461/81/1 459/80/1 471/109/1
+f 421/60/1 419/59/1 426/125/1 501/151/1
+f 401/67/1 402/66/1 498/152/1 389/139/1 387/138/1
+f 390/144/1 388/143/1 453/95/1 499/153/1
+f 504/103/1 505/102/1 496/154/1 485/112/1 483/111/1
+f 458/83/1 456/82/1 484/117/1 482/116/1
+f 607/61/2 609/71/2 540/49/2 542/53/2
+f 541/48/2 551/8/2 553/12/2 539/54/2
+f 547/9/2 552/7/2 582/55/2 584/60/2
+f 628/137/2 630/146/2 616/130/2 618/133/2
+f 592/58/2 581/59/2 583/56/2 651/118/2
+f 647/142/2 664/143/2 666/139/2 646/140/2 648/141/2
+f 631/136/2 663/138/2 665/144/2 629/145/2
+f 617/129/2 518/33/2 522/50/2 615/134/2
+f 644/149/2 594/120/2 596/105/2 649/147/2 645/148/2
+f 597/119/2 577/131/2 579/127/2 595/106/2
+f 593/57/2 592/58/2 597/119/2 595/106/2 590/88/2 591/87/2 589/104/2 596/105/2 594/120/2
+f 515/47/2 521/32/2 561/3/2 563/5/2
+f 580/132/2 560/6/2 562/2/2 578/128/2
+f 563/5/2 561/3/2 557/4/2 555/82/2 567/117/2 565/111/2 549/103/2 550/102/2 548/154/2 566/112/2 564/116/2 556/83/2 554/1/2 562/2/2 560/6/2 552/7/2 547/9/2 570/10/2 568/20/2 559/17/2 558/43/2 571/19/2 569/11/2 553/12/2 551/8/2
+f 643/153/2 661/96/2 633/80/2 635/94/2
+f 634/81/2 602/79/2 604/92/2 632/93/2
+f 612/74/2 606/75/2 605/100/2 613/73/2 611/77/2 603/78/2 600/91/2 617/129/2 615/134/2 609/71/2 607/61/2 621/107/2 619/99/2 598/46/2 599/45/2 601/97/2 622/98/2 620/108/2 610/62/2 608/70/2 618/133/2 616/130/2 604/92/2 602/79/2 614/76/2
+f 590/88/2 585/89/2 587/85/2 642/86/2 591/87/2
+f 665/144/2 663/138/2 658/67/2 659/66/2 660/152/2 666/139/2 664/143/2 662/95/2 661/96/2
+f 598/46/2 544/40/2 546/37/2 656/44/2 599/45/2
+f 588/90/2 554/1/2 556/83/2 586/84/2
+f 625/110/2 634/81/2 632/93/2 630/146/2 628/137/2 638/69/2 636/63/2 623/124/2 624/123/2 626/135/2 639/64/2 637/68/2 631/136/2 629/145/2 635/94/2 633/80/2 627/109/2
+f 558/43/2 543/38/2 545/39/2 657/18/2
+f 623/124/2 620/108/2 622/98/2 654/122/2 624/123/2
+f 581/59/2 576/125/2 575/126/2 584/60/2 582/55/2 580/132/2 578/128/2 588/90/2 586/84/2 573/115/2 574/114/2 572/121/2 587/85/2 585/89/2 579/127/2 577/131/2 583/56/2
+f 530/41/2 619/99/2 621/107/2 528/52/2
+f 600/91/2 603/78/2 532/15/2 534/30/2
+f 527/42/2 529/51/2 569/11/2 571/19/2
+f 557/4/2 531/31/2 533/14/2 555/82/2
+f 573/115/2 564/116/2 566/112/2 641/113/2 574/114/2
+f 567/117/2 523/13/2 525/26/2 565/111/2
+f 515/47/2 541/48/2 539/54/2 529/51/2 527/42/2 545/39/2 543/38/2 513/34/2 514/35/2 520/36/2 546/37/2 544/40/2 530/41/2 528/52/2 542/53/2 540/49/2 522/50/2 518/33/2 534/30/2 532/15/2 526/16/2 524/27/2 538/28/2 536/25/2 517/21/2 519/22/2 516/23/2 537/24/2 535/29/2 525/26/2 523/13/2 533/14/2 531/31/2 521/32/2
+f 640/150/2 625/110/2 612/74/2 614/76/2
+f 526/16/2 611/77/2 613/73/2 524/27/2
+f 570/10/2 655/151/2 575/126/2 568/20/2
+f 549/103/2 535/29/2 537/24/2 652/101/2 550/102/2
+f 538/28/2 653/72/2 605/100/2 536/25/2
+f 658/67/2 637/68/2 639/64/2 650/65/2 659/66/2
+f 610/62/2 636/63/2 638/69/2 608/70/2
+f 503/201/3 657/202/3 545/203/3 397/204/3
+f 476/205/4 630/206/4 632/198/4 478/207/4
+f 408/207/5 557/198/5 561/206/5 412/205/5
+f 375/204/6 523/203/6 567/202/6 418/201/6
+f 424/208/5 573/209/5 586/197/5 436/210/5
+f 394/211/5 542/212/5 528/213/5 380/214/5
+f 504/201/4 658/202/4 663/203/4 509/204/4
+f 436/214/3 586/213/3 556/212/3 407/211/3
+f 385/210/4 533/197/4 523/209/4 375/208/4
+f 481/207/5 635/198/5 629/206/5 475/205/5
+f 479/215/3 633/216/3 661/217/3 507/218/3
+f 403/201/3 551/202/3 541/203/3 393/204/3
+f 495/219/3 649/220/3 596/221/3 445/193/3
+f 512/204/5 666/203/5 660/202/5 506/201/5
+f 405/211/5 553/212/5 569/213/5 420/214/5
+f 387/204/6 535/203/6 549/202/6 401/201/6
+f 433/214/3 582/213/3 552/212/3 404/211/3
+f 486/208/6 640/209/6 614/197/6 461/210/6
+f 378/208/5 526/209/5 532/197/5 384/210/5
+f 654/222/7 208/223/7 180/224/7 626/225/7
+f 391/204/6 539/203/6 553/202/6 405/201/6
+f 446/204/5 597/203/5 592/212/5 441/211/5
+f 461/208/5 614/209/5 602/197/5 450/210/5
+f 421/214/4 570/213/4 547/212/4 399/211/4
+f 406/201/3 555/202/3 533/203/3 385/204/3
+f 434/201/4 583/202/4 577/203/4 428/204/4
+f 322/169/4 352/180/4 500/226/4 469/214/4
+f 457/201/4 609/202/4 615/203/4 462/204/4
+f 428/226/6 577/227/6 597/228/6 446/229/6
+f 418/208/5 567/209/5 555/197/5 406/210/5
+f 442/201/4 593/202/4 594/203/4 443/204/4
+f 382/226/5 530/227/5 544/230/5 396/194/5
+f 488/229/3 642/228/3 587/227/3 437/226/3
+f 499/207/6 653/198/6 538/206/6 390/205/6
+f 431/204/5 580/203/5 582/202/5 433/201/5
+f 510/231/3 664/232/3 647/233/3 493/234/3
+f 459/210/3 612/197/3 625/209/3 471/208/3
+f 464/204/5 618/203/5 608/202/5 456/201/5
+f 444/229/3 595/228/3 579/227/3 430/226/3
+f 477/204/5 631/203/5 637/202/5 483/201/5
+f 407/210/4 556/197/4 564/209/4 415/208/4
+f 469/208/3 472/215/3 325/172/3 322/164/3
+f 416/201/3 565/202/3 525/203/3 377/204/3
+f 478/208/6 632/209/6 604/197/6 452/210/6
+f 397/194/4 545/230/4 527/227/4 379/226/4
+f 465/207/6 619/198/6 530/206/6 382/205/6
+f 660/235/7 650/236/7 204/237/7 214/238/7
+f 383/204/6 531/203/6 557/202/6 408/201/6
+f 492/234/6 646/233/6 666/232/6 512/231/6
+f 386/207/5 534/198/5 518/206/5 370/205/5
+f 390/218/5 538/217/5 524/216/5 376/215/5
+f 484/201/4 638/202/4 628/203/4 474/204/4
+f 380/205/3 528/206/3 621/198/3 467/207/3
+f 460/215/4 613/216/4 605/232/4 453/231/4
+f 410/194/4 559/230/4 568/227/4 419/226/4
+f 388/205/3 536/206/3 605/198/3 453/207/3
+f 377/215/4 525/216/4 535/217/4 387/218/4
+f 374/204/5 522/203/5 540/202/5 392/201/5
+f 376/205/3 524/206/3 613/198/3 460/207/3
+f 422/226/5 571/227/5 558/221/5 409/193/5
+f 483/215/3 637/216/3 658/217/3 504/218/3
+f 509/218/6 663/217/6 631/216/6 477/215/6
+f 358/186/3 356/173/3 504/218/3 506/231/3
+f 458/211/5 610/212/5 620/213/5 466/214/5
+f 429/214/3 578/213/3 562/212/3 413/211/3
+f 393/201/4 541/202/4 515/203/4 367/204/4
+f 365/219/4 513/220/4 543/221/4 395/193/4
+f 420/201/3 569/202/3 529/203/3 381/204/3
+f 496/218/6 650/217/6 639/216/6 485/215/6
+f 454/218/5 606/217/5 612/216/5 459/215/5
+f 384/205/3 532/206/3 603/198/3 451/207/3
+f 466/210/3 620/197/3 623/209/3 469/208/3
+f 467/214/4 621/213/4 607/212/4 455/211/4
+f 469/214/4 623/213/4 636/212/4 482/211/4
+f 445/205/4 596/206/4 589/198/4 438/207/4
+f 398/193/5 546/221/5 520/220/5 372/219/5
+f 473/208/5 627/209/5 633/197/5 479/210/5
+f 404/201/4 552/202/4 560/203/4 411/204/4
+f 489/218/6 643/217/6 635/216/6 481/215/6
+f 475/215/3 629/216/3 665/217/3 511/218/3
+f 500/208/6 654/209/6 622/197/6 468/210/6
+f 485/211/5 639/212/5 626/213/5 472/214/5
+f 462/207/6 615/198/6 522/206/6 374/205/6
+f 417/215/4 566/216/4 548/217/4 400/218/4
+f 396/205/3 544/206/3 598/198/3 447/207/3
+f 439/207/5 590/198/5 595/206/5 444/205/5
+f 379/204/6 527/203/6 571/202/6 422/201/6
+f 414/204/5 563/203/5 551/202/5 403/201/5
+f 482/208/6 636/209/6 610/197/6 458/210/6
+f 450/210/3 602/197/3 634/209/3 480/208/3
+f 401/218/5 549/217/5 565/216/5 416/215/5
+f 381/214/4 529/213/4 539/212/4 391/211/4
+f 502/207/6 656/198/6 546/206/6 398/205/6
+f 501/214/3 655/213/3 570/212/3 421/211/3
+f 480/210/4 634/197/4 625/216/4 471/215/4
+f 367/204/6 515/203/6 563/202/6 414/201/6
+f 456/210/3 608/197/3 638/209/3 484/208/3
+f 372/205/3 228/160/3 221/157/3 365/204/3
+f 463/210/3 616/197/3 630/209/3 476/208/3
+f 508/207/5 662/198/5 664/206/5 510/205/5
+f 447/194/4 598/230/4 619/227/4 465/226/4
+f 389/231/4 537/232/4 516/239/4 368/240/4
+f 202/241/8 201/188/8 647/233/8 648/242/8
+f 497/229/3 651/228/3 583/227/3 434/226/3
+f 200/188/7 202/241/7 648/242/7 646/233/7
+f 373/205/4 521/206/4 531/198/4 383/207/4
+f 419/211/6 568/212/6 575/213/6 426/214/6
+f 412/201/3 561/202/3 521/203/3 373/204/3
+f 392/205/3 540/206/3 609/198/3 457/207/3
+f 487/214/3 641/213/3 566/212/3 417/211/3
+f 492/204/4 493/205/4 345/160/4 344/157/4
+f 70/158/9 516/203/9 519/243/9 73/244/9
+f 468/226/5 622/227/5 601/230/5 449/194/5
+f 369/240/5 517/239/5 536/232/5 388/231/5
+f 73/244/8 519/243/8 517/206/8 71/159/8
+f 427/214/4 576/213/4 581/212/4 432/211/4
+f 432/226/6 581/227/6 592/228/6 441/229/6
+f 395/204/6 543/203/6 558/202/6 409/201/6
+f 452/207/5 604/198/5 616/206/5 463/205/5
+f 443/193/6 594/221/6 644/220/6 490/219/6
+f 504/201/4 356/156/4 348/168/4 496/211/4
+f 455/207/6 607/198/6 542/206/6 394/205/6
+f 415/211/6 564/212/6 573/213/6 424/214/6
+f 437/210/4 587/197/4 572/209/4 423/208/4
+f 474/208/6 628/209/6 618/197/6 464/210/6
+f 511/205/4 665/206/4 661/197/4 507/210/4
+f 369/205/6 368/204/6 224/157/6 225/160/6
+f 411/211/6 560/212/6 580/213/6 431/214/6
+f 498/245/3 652/246/3 537/203/3 389/204/3
+f 435/211/5 584/212/5 575/227/5 426/226/5
+f 399/211/6 547/212/6 584/213/6 435/214/6
+f 74/159/7 520/206/7 514/243/7 68/244/7
+f 68/244/10 514/243/10 513/203/10 67/158/10
+f 347/160/5 495/205/5 490/204/5 342/157/5
+f 203/175/9 199/247/9 645/248/9 649/220/9
+f 199/247/10 198/175/10 644/220/10 645/248/10
+f 243/157/4 387/204/4 389/204/4 245/157/4
+f 245/157/3 389/204/3 388/205/3 244/160/3
+f 390/205/5 246/160/5 244/160/5 388/205/5
+f 387/204/6 243/157/6 246/160/6 390/205/6
+f 488/210/5 439/207/5 295/161/5 340/165/5
+f 641/222/9 195/223/9 126/224/9 572/225/9
+f 423/226/6 279/180/6 280/169/6 424/214/6
+f 678/226/6 676/180/6 677/169/6 679/214/6
+f 487/215/5 424/208/5 280/164/5 339/172/5
+f 652/189/9 206/190/9 102/191/9 548/192/9
+f 401/201/6 400/211/6 256/168/6 257/156/6
+f 498/231/5 401/218/5 257/173/5 350/186/5
+f 439/229/6 438/193/6 294/177/6 295/181/6
+f 642/236/9 196/237/9 143/238/9 589/235/9
+f 454/210/6 499/207/6 351/161/6 310/165/6
+f 499/218/4 453/231/4 309/186/4 351/173/4
+f 160/237/8 159/238/8 605/235/8 606/236/8
+f 473/215/6 486/208/6 338/164/6 326/172/6
+f 486/208/4 471/215/4 324/172/4 338/164/4
+f 181/223/8 179/224/8 625/225/8 627/222/8
+f 489/207/4 507/210/4 359/165/4 341/161/4
+f 508/231/6 489/218/6 341/173/6 360/186/6
+f 216/190/8 215/191/8 661/192/8 662/189/8
+f 497/229/3 349/181/3 298/177/3 442/193/3
+f 497/201/5 441/211/5 297/168/5 349/156/5
+f 147/190/10 146/191/10 592/192/10 593/189/10
+f 282/180/5 353/169/5 501/214/5 426/226/5
+f 353/169/3 283/180/3 427/226/3 501/214/3
+f 129/224/10 575/225/10 576/222/10 130/223/10
+f 265/177/5 355/183/5 503/194/5 409/193/5
+f 355/156/3 266/168/3 410/211/3 503/201/3
+f 113/237/10 112/238/10 558/235/10 559/236/10
+f 295/88/2 676/89/2 293/85/2 340/86/2 296/87/2
+f 677/90/2 674/1/2 263/83/2 292/84/2
+f 324/110/2 333/81/2 331/93/2 329/146/2 327/137/2 673/69/2 335/63/2 322/124/2 323/123/2 325/135/2 337/64/2 336/68/2 330/136/2 328/145/2 334/94/2 332/80/2 326/109/2
+f 322/124/2 680/108/2 682/98/2 352/122/2 323/123/2
+f 288/59/2 283/125/2 282/126/2 291/60/2 289/55/2 287/132/2 285/128/2 677/90/2 292/84/2 280/115/2 281/114/2 279/121/2 293/85/2 676/89/2 286/127/2 284/131/2 290/56/2
+f 238/41/2 321/99/2 681/107/2 236/52/2
+f 669/91/2 307/78/2 240/15/2 242/30/2
+f 234/16/2 667/77/2 316/73/2 232/27/2
+f 314/62/2 335/63/2 673/69/2 312/70/2
+f 171/159/4 671/160/4 669/161/4 154/162/4
+f 157/166/4 307/165/4 667/164/4 165/163/4
+f 139/179/6 676/180/6 295/181/6 144/182/6
+f 192/155/4 673/156/4 327/157/4 182/158/4
+f 82/159/3 236/160/3 681/161/3 175/162/3
+f 154/162/6 669/161/6 242/160/6 88/159/6
+f 142/162/5 677/161/5 285/160/5 132/159/5
+f 164/167/5 314/168/5 680/169/5 174/170/5
+f 133/159/4 286/160/4 676/161/4 139/162/4
+f 174/166/3 680/165/3 322/164/3 177/163/3
+f 175/170/4 681/169/4 311/168/4 161/167/4
+f 72/159/3 226/160/3 671/161/3 171/162/3
+f 165/162/6 667/161/6 234/160/6 80/159/6
+f 208/163/6 352/164/6 682/165/6 176/166/6
+f 162/166/3 312/165/3 673/164/3 192/163/3
+f 176/179/5 682/180/5 305/183/5 155/184/5
+f 108/167/6 674/168/6 677/169/6 142/170/6
+f 116/159/4 269/160/4 674/161/4 108/162/4
+f 672/30/1 462/31/1 374/32/1 370/33/1
+f 414/48/1 403/8/1 405/7/1 420/55/1 422/56/1 409/57/1 410/58/1 419/59/1 421/60/1 399/9/1 404/12/1 411/54/1 413/53/1 675/61/1 407/62/1 415/63/1 417/64/1 400/65/1 402/66/1 401/67/1 416/68/1 418/69/1 406/70/1 408/71/1 412/49/1
+f 459/80/1 461/81/1 450/79/1 452/78/1 463/15/1 464/14/1 456/82/1 458/83/1 466/84/1 468/85/1 449/86/1 448/87/1 447/88/1 465/89/1 467/90/1 455/1/1 457/4/1 462/31/1 672/30/1 670/91/1 451/92/1 668/93/1 460/94/1 453/95/1 454/96/1
+f 439/46/1 440/45/1 488/97/1 437/98/1 678/99/1
+f 679/107/1 436/108/1 407/62/1 675/61/1
+f 432/20/1 434/19/1 428/42/1 430/41/1 678/99/1 437/98/1 423/122/1 425/123/1 424/124/1 436/108/1 679/107/1 429/52/1 431/51/1 433/11/1 435/10/1 426/125/1 427/126/1
+f 670/91/1 386/129/1 384/130/1 451/92/1
+f 378/146/1 376/145/1 460/94/1 668/93/1
+f 672/205/4 617/206/4 600/198/4 670/207/4
+f 451/210/4 603/197/4 611/209/4 668/208/4
+f 678/226/6 585/227/6 590/228/6 439/229/6
+f 670/207/6 600/198/6 534/206/6 386/205/6
+f 679/207/5 588/198/5 578/206/5 429/205/5
+f 430/205/4 579/206/4 585/198/4 678/207/4
+f 370/205/3 518/206/3 617/198/3 672/207/3
+f 668/207/6 611/198/6 526/206/6 378/205/6
+f 675/211/6 554/212/6 588/213/6 679/214/6
+f 413/205/4 562/206/4 554/198/4 675/207/4
+f 667/164/4 668/208/4 460/215/4 316/172/4
+f 316/161/3 460/207/3 459/210/3 315/165/3
+f 461/208/5 317/164/5 315/172/5 459/215/5
+f 668/207/6 667/161/6 317/165/6 461/210/6
+f 331/161/4 478/207/4 480/210/4 333/165/4
+f 333/164/3 480/208/3 479/215/3 332/172/3
+f 481/207/5 334/161/5 332/165/5 479/210/5
+f 478/208/6 331/164/6 334/172/6 481/215/6
+f 361/157/4 509/204/4 511/205/4 363/160/4
+f 363/173/3 511/218/3 510/231/3 362/186/3
+f 512/204/5 364/157/5 362/160/5 510/205/5
+f 509/218/6 361/173/6 364/186/6 512/231/6
+f 231/157/4 375/204/4 377/204/4 233/157/4
+f 233/157/3 377/204/3 376/205/3 232/160/3
+f 378/205/5 234/160/5 232/160/5 376/205/5
+f 375/204/6 231/157/6 234/160/6 378/205/6
+f 669/161/4 670/207/4 451/210/4 307/165/4
+f 307/161/3 451/207/3 450/210/3 306/165/3
+f 452/207/5 308/161/5 306/165/5 450/210/5
+f 670/207/6 669/161/6 308/165/6 452/210/6
+f 327/157/4 474/204/4 476/205/4 329/160/4
+f 329/164/3 476/208/3 475/215/3 328/172/3
+f 477/204/5 330/157/5 328/160/5 475/205/5
+f 474/208/6 327/164/6 330/172/6 477/215/6
+f 271/164/4 415/208/4 417/215/4 273/172/4
+f 273/168/3 417/211/3 416/201/3 272/156/3
+f 418/208/5 274/164/5 272/172/5 416/215/5
+f 415/211/6 271/168/6 274/156/6 418/201/6
+f 239/157/4 383/204/4 385/204/4 241/157/4
+f 241/157/3 385/204/3 384/205/3 240/160/3
+f 386/205/5 242/160/5 240/160/5 384/205/5
+f 383/204/6 239/157/6 242/160/6 386/205/6
+f 318/157/4 462/204/4 672/205/4 671/160/4
+f 671/161/3 672/207/3 463/210/3 319/165/3
+f 464/204/5 320/157/5 319/160/5 463/205/5
+f 462/207/6 318/161/6 320/165/6 464/210/6
+f 335/168/4 482/211/4 484/201/4 673/156/4
+f 673/164/3 484/208/3 483/215/3 336/172/3
+f 485/211/5 337/168/5 336/156/5 483/201/5
+f 482/208/6 335/164/6 337/172/6 485/215/6
+f 674/161/4 675/207/4 407/210/4 263/165/4
+f 263/168/3 407/211/3 406/201/3 262/156/3
+f 408/207/5 264/161/5 262/165/5 406/210/5
+f 675/211/6 674/168/6 264/156/6 408/201/6
+f 223/157/4 367/204/4 373/204/4 229/157/4
+f 229/157/3 373/204/3 370/205/3 226/160/3
+f 374/205/5 230/160/5 226/160/5 370/205/5
+f 367/204/6 223/157/6 230/160/6 374/205/6
+f 311/168/4 455/211/4 457/201/4 313/156/4
+f 313/161/3 457/207/3 456/210/3 312/165/3
+f 458/211/5 314/168/5 312/156/5 456/201/5
+f 455/207/6 311/161/6 314/165/6 458/210/6
+f 676/161/4 678/207/4 437/210/4 293/165/4
+f 293/180/3 437/226/3 436/214/3 292/169/3
+f 679/207/5 677/161/5 292/165/5 436/210/5
+f 267/157/4 411/204/4 413/205/4 269/160/4
+f 269/168/3 413/211/3 412/201/3 268/156/3
+f 414/204/5 270/157/5 268/160/5 412/205/5
+f 411/211/6 267/168/6 270/156/6 414/201/6
+f 247/157/4 391/204/4 393/204/4 249/157/4
+f 249/157/3 393/204/3 392/205/3 248/160/3
+f 394/205/5 250/160/5 248/160/5 392/205/5
+f 391/204/6 247/157/6 250/160/6 394/205/6
+f 321/180/4 465/226/4 467/214/4 681/169/4
+f 681/161/3 467/207/3 466/210/3 680/165/3
+f 468/226/5 682/180/5 680/169/5 466/214/5
+f 465/207/6 321/161/6 682/165/6 468/210/6
+f 284/157/4 428/204/4 430/205/4 286/160/4
+f 286/180/3 430/226/3 429/214/3 285/169/3
+f 431/204/5 287/157/5 285/160/5 429/205/5
+f 428/226/6 284/180/6 287/169/6 431/214/6
+f 255/168/4 399/211/4 404/201/4 260/156/4
+f 260/168/3 404/211/3 403/201/3 259/156/3
+f 405/211/5 261/168/5 259/156/5 403/201/5
+f 399/211/6 255/168/6 261/156/6 405/201/6
+f 235/157/4 379/204/4 381/204/4 237/157/4
+f 237/157/3 381/204/3 380/205/3 236/160/3
+f 382/205/5 238/160/5 236/160/5 380/205/5
+f 379/204/6 235/157/6 238/160/6 382/205/6
+f 299/157/4 443/204/4 445/205/4 301/160/4
+f 301/177/3 445/193/3 444/229/3 300/181/3
+f 446/204/5 302/157/5 300/160/5 444/205/5
+f 443/193/6 299/177/6 302/181/6 446/229/6
+f 288/168/4 432/211/4 434/201/4 290/156/4
+f 290/180/3 434/226/3 433/214/3 289/169/3
+f 435/211/5 291/168/5 289/156/5 433/201/5
+f 432/226/6 288/180/6 291/169/6 435/214/6
+f 275/180/4 419/226/4 421/214/4 277/169/4
+f 277/168/3 421/211/3 420/201/3 276/156/3
+f 422/226/5 278/180/5 276/169/5 420/214/5
+f 419/211/6 275/168/6 278/156/6 422/201/6
+f 251/157/4 395/204/4 397/204/4 253/157/4
+f 253/157/3 397/204/3 396/205/3 252/160/3
+f 398/205/5 254/160/5 252/160/5 396/205/5
+f 395/204/6 251/157/6 254/160/6 398/205/6
+g bottle.1_Cylinder.007_bottle.1_Cylinder.007_bottles-green
+s 1
+f 27/249/11 24/250/12 38/251/13 39/252/14
+f 64/253/15 31/254/16 32/255/17 65/256/18
+f 47/257/19 17/258/1 45/259/20
+f 19/260/21 14/261/22 2/262/2
+f 5/263/23 3/264/24 1/265/25 4/266/26
+f 24/250/12 27/249/11 26/267/27 25/268/28
+f 29/269/29 27/249/11 39/252/14 40/270/30
+f 21/271/31 23/272/32 60/273/33 59/274/34
+f 57/275/35 16/276/36 17/258/1
+f 15/277/37 13/278/38 12/279/39 14/280/22
+f 7/281/40 5/263/23 4/266/26 6/282/41
+f 54/283/42 17/258/1 52/284/43
+f 31/254/16 28/285/44 29/269/29 30/286/45
+f 41/287/46 40/288/30 11/289/47 13/278/38
+f 26/267/27 27/249/11 29/269/29 28/285/44
+f 45/259/20 17/258/1 16/276/36
+f 36/290/48 20/291/49 35/292/50 43/293/51
+f 35/292/50 20/291/49 21/271/31 34/294/52
+f 42/295/53 33/296/54 30/286/45 41/297/46
+f 66/256/55 65/298/18 32/299/17 34/255/52
+f 15/300/37 14/301/22 19/280/21 18/277/56
+f 40/288/30 39/302/14 9/303/57 11/289/47
+f 56/304/58 58/305/59 57/306/35 55/307/60
+f 54/308/42 52/309/43 51/310/61 53/311/62
+f 9/303/57 7/281/40 6/282/41 8/312/63
+f 25/268/28 23/272/32 22/313/64 24/250/12
+f 6/314/41 4/315/26 2/262/2
+f 48/316/65 46/317/66 60/273/33 61/318/67
+f 13/278/38 11/289/47 10/319/68 12/279/39
+f 28/285/44 31/254/16 64/253/15 63/320/69
+f 59/274/34 60/273/33 46/317/66 44/321/70
+f 1/265/25 3/264/24 18/322/56 19/323/21
+f 4/315/26 1/324/25 2/262/2
+f 59/274/34 44/321/70 58/325/59 66/326/55
+f 23/272/32 25/268/28 61/318/67 60/273/33
+f 63/320/69 62/327/71 26/267/27 28/285/44
+f 10/328/68 8/329/63 2/262/2
+f 52/309/43 50/330/72 49/331/73 51/310/61
+f 43/332/51 42/333/53 15/300/37 18/277/56
+f 38/334/13 7/281/40 9/303/57 39/302/14
+f 8/329/63 6/314/41 2/262/2
+f 41/297/46 30/286/45 29/269/29 40/270/30
+f 50/335/72 17/258/1 47/257/19
+f 50/330/72 47/336/19 48/316/65 49/331/73
+f 55/337/60 57/275/35 17/258/1
+f 56/305/58 53/311/62 64/253/15 65/256/18
+f 53/311/62 51/310/61 63/320/69 64/253/15
+f 47/336/19 45/338/20 46/317/66 48/316/65
+f 55/337/60 17/258/1 54/283/42
+f 58/305/59 56/304/58 65/298/18 66/256/55
+f 31/254/16 30/286/45 33/296/54 32/255/17
+f 14/261/22 12/339/39 2/262/2
+f 52/284/43 17/258/1 50/335/72
+f 34/255/52 32/299/17 33/340/54 35/296/50
+f 36/341/48 43/342/51 18/322/56 3/264/24
+f 59/274/34 66/326/55 34/294/52 21/271/31
+f 37/343/74 36/341/48 3/264/24 5/263/23
+f 1/324/25 19/260/21 2/262/2
+f 58/325/59 44/321/70 16/344/36 57/345/35
+f 55/306/60 54/308/42 53/311/62 56/305/58
+f 24/250/12 22/313/64 37/346/74 38/251/13
+f 49/331/73 62/327/71 63/320/69 51/310/61
+f 33/340/54 42/347/53 43/295/51 35/296/50
+f 46/317/66 45/338/20 16/344/36 44/321/70
+f 36/290/48 37/346/74 22/313/64 20/291/49
+f 38/334/13 37/343/74 5/263/23 7/281/40
+f 49/331/73 48/316/65 61/318/67 62/327/71
+f 42/332/53 41/287/46 13/278/38 15/277/37
+f 61/318/67 25/268/28 26/267/27 62/327/71
+f 23/272/32 21/271/31 20/291/49 22/313/64
+f 9/303/57 8/312/63 10/319/68 11/289/47
+f 10/328/68 2/262/2 12/339/39
+f 709/249/11 706/250/12 720/251/13 721/252/14
+f 746/253/15 713/254/16 714/255/17 747/256/18
+f 729/257/19 699/258/1 727/259/20
+f 701/260/21 696/261/22 684/262/2
+f 687/263/23 685/264/24 683/265/75 686/266/76
+f 706/250/12 709/249/11 708/267/27 707/268/28
+f 711/269/29 709/249/11 721/252/14 722/270/30
+f 703/271/31 705/272/32 742/273/33 741/274/34
+f 739/275/35 698/276/36 699/258/1
+f 697/277/37 695/278/38 694/279/39 696/280/22
+f 689/281/40 687/263/23 686/266/76 688/282/77
+f 736/283/42 699/258/1 734/284/43
+f 713/254/16 710/285/44 711/269/29 712/286/45
+f 723/287/46 722/288/30 693/289/47 695/278/38
+f 708/267/27 709/249/11 711/269/29 710/285/44
+f 727/259/20 699/258/1 698/276/36
+f 718/290/48 702/291/49 717/292/50 725/293/51
+f 717/292/50 702/291/49 703/271/31 716/294/52
+f 724/295/53 715/296/54 712/286/45 723/297/46
+f 748/256/55 747/298/18 714/299/17 716/255/52
+f 697/300/37 696/301/22 701/280/21 700/277/56
+f 722/288/30 721/302/14 691/303/57 693/289/47
+f 738/304/58 740/305/59 739/306/35 737/307/60
+f 736/308/42 734/309/43 733/310/61 735/311/62
+f 691/303/57 689/281/40 688/282/77 690/312/63
+f 707/268/28 705/272/32 704/313/78 706/250/12
+f 688/314/77 686/315/76 684/262/2
+f 730/316/65 728/317/66 742/273/33 743/318/67
+f 695/278/38 693/289/47 692/319/68 694/279/39
+f 710/285/44 713/254/16 746/253/15 745/320/69
+f 741/274/34 742/273/33 728/317/66 726/321/70
+f 683/265/75 685/264/24 700/322/56 701/323/21
+f 686/315/76 683/324/75 684/262/2
+f 741/274/34 726/321/70 740/325/59 748/326/55
+f 705/272/32 707/268/28 743/318/67 742/273/33
+f 745/320/69 744/327/71 708/267/27 710/285/44
+f 692/328/68 690/329/63 684/262/2
+f 734/309/43 732/330/72 731/331/73 733/310/61
+f 725/332/51 724/333/53 697/300/37 700/277/56
+f 720/334/13 689/281/40 691/303/57 721/302/14
+f 690/329/63 688/314/77 684/262/2
+f 723/297/46 712/286/45 711/269/29 722/270/30
+f 732/335/72 699/258/1 729/257/19
+f 732/330/72 729/336/19 730/316/65 731/331/73
+f 737/337/60 739/275/35 699/258/1
+f 738/305/58 735/311/62 746/253/15 747/256/18
+f 735/311/62 733/310/61 745/320/69 746/253/15
+f 729/336/19 727/338/20 728/317/66 730/316/65
+f 737/337/60 699/258/1 736/283/42
+f 740/305/59 738/304/58 747/298/18 748/256/55
+f 713/254/16 712/286/45 715/296/54 714/255/17
+f 696/261/22 694/339/39 684/262/2
+f 734/284/43 699/258/1 732/335/72
+f 716/255/52 714/299/17 715/340/54 717/296/50
+f 718/341/48 725/342/51 700/322/56 685/264/24
+f 741/274/34 748/326/55 716/294/52 703/271/31
+f 719/343/74 718/341/48 685/264/24 687/263/23
+f 683/324/75 701/260/21 684/262/2
+f 740/325/59 726/321/70 698/344/36 739/345/35
+f 737/306/60 736/308/42 735/311/62 738/305/58
+f 706/250/12 704/313/78 719/346/74 720/251/13
+f 731/331/73 744/327/71 745/320/69 733/310/61
+f 715/340/54 724/347/53 725/295/51 717/296/50
+f 728/317/66 727/338/20 698/344/36 726/321/70
+f 718/290/48 719/346/74 704/313/78 702/291/49
+f 720/334/13 719/343/74 687/263/23 689/281/40
+f 731/331/73 730/316/65 743/318/67 744/327/71
+f 724/332/53 723/287/46 695/278/38 697/277/37
+f 743/318/67 707/268/28 708/267/27 744/327/71
+f 705/272/32 703/271/31 702/291/49 704/313/78
+f 691/303/57 690/312/63 692/319/68 693/289/47
+f 692/328/68 684/262/2 694/339/39
+f 775/249/11 772/250/12 786/251/13 787/252/14
+f 812/253/15 779/254/16 780/255/17 813/256/18
+f 795/257/19 765/258/1 793/259/20
+f 767/260/21 762/261/22 750/262/2
+f 753/263/23 751/264/24 749/265/75 752/266/26
+f 772/250/12 775/249/11 774/267/27 773/268/28
+f 777/269/29 775/249/11 787/252/14 788/270/30
+f 769/271/31 771/272/32 808/273/33 807/274/34
+f 805/275/35 764/276/36 765/258/1
+f 763/277/37 761/278/38 760/279/39 762/280/22
+f 755/281/40 753/263/23 752/266/26 754/282/77
+f 802/283/42 765/258/1 800/284/43
+f 779/254/16 776/285/44 777/269/29 778/286/45
+f 789/287/46 788/288/30 759/289/47 761/278/38
+f 774/267/27 775/249/11 777/269/29 776/285/44
+f 793/259/20 765/258/1 764/276/36
+f 784/290/48 768/291/49 783/292/50 791/293/51
+f 783/292/50 768/291/49 769/271/31 782/294/52
+f 790/295/53 781/296/54 778/286/45 789/297/46
+f 814/256/55 813/298/18 780/299/17 782/255/52
+f 763/300/37 762/301/22 767/280/21 766/277/56
+f 788/288/30 787/302/14 757/303/57 759/289/47
+f 804/304/58 806/305/59 805/306/35 803/307/60
+f 802/308/42 800/309/43 799/310/61 801/311/62
+f 757/303/57 755/281/40 754/282/77 756/312/63
+f 773/268/28 771/272/32 770/313/64 772/250/12
+f 754/314/77 752/315/26 750/262/2
+f 796/316/65 794/317/66 808/273/33 809/318/67
+f 761/278/38 759/289/47 758/319/68 760/279/39
+f 776/285/44 779/254/16 812/253/15 811/320/69
+f 807/274/34 808/273/33 794/317/66 792/321/70
+f 749/265/75 751/264/24 766/322/56 767/323/21
+f 752/315/26 749/324/75 750/262/2
+f 807/274/34 792/321/70 806/325/59 814/326/55
+f 771/272/32 773/268/28 809/318/67 808/273/33
+f 811/320/69 810/327/71 774/267/27 776/285/44
+f 758/328/68 756/329/63 750/262/2
+f 800/309/43 798/330/72 797/331/73 799/310/61
+f 791/332/51 790/333/53 763/300/37 766/277/56
+f 786/334/13 755/281/40 757/303/57 787/302/14
+f 756/329/63 754/314/77 750/262/2
+f 789/297/46 778/286/45 777/269/29 788/270/30
+f 798/335/72 765/258/1 795/257/19
+f 798/330/72 795/336/19 796/316/65 797/331/73
+f 803/337/60 805/275/35 765/258/1
+f 804/305/58 801/311/62 812/253/15 813/256/18
+f 801/311/62 799/310/61 811/320/69 812/253/15
+f 795/336/19 793/338/20 794/317/66 796/316/65
+f 803/337/60 765/258/1 802/283/42
+f 806/305/59 804/304/58 813/298/18 814/256/55
+f 779/254/16 778/286/45 781/296/54 780/255/17
+f 762/261/22 760/339/39 750/262/2
+f 800/284/43 765/258/1 798/335/72
+f 782/255/52 780/299/17 781/340/54 783/296/50
+f 784/341/48 791/342/51 766/322/56 751/264/24
+f 807/274/34 814/326/55 782/294/52 769/271/31
+f 785/343/74 784/341/48 751/264/24 753/263/23
+f 749/324/75 767/260/21 750/262/2
+f 806/325/59 792/321/70 764/344/36 805/345/35
+f 803/306/60 802/308/42 801/311/62 804/305/58
+f 772/250/12 770/313/64 785/346/74 786/251/13
+f 797/331/73 810/327/71 811/320/69 799/310/61
+f 781/340/54 790/347/53 791/295/51 783/296/50
+f 794/317/66 793/338/20 764/344/36 792/321/70
+f 784/290/48 785/346/74 770/313/64 768/291/49
+f 786/334/13 785/343/74 753/263/23 755/281/40
+f 797/331/73 796/316/65 809/318/67 810/327/71
+f 790/332/53 789/287/46 761/278/38 763/277/37
+f 809/318/67 773/268/28 774/267/27 810/327/71
+f 771/272/32 769/271/31 768/291/49 770/313/64
+f 757/303/57 756/312/63 758/319/68 759/289/47
+f 758/328/68 750/262/2 760/339/39
+f 1461/311/62 1459/310/61 1471/320/69 1472/253/15
+f 1412/315/26 1409/324/75 1410/262/2
+f 1431/272/32 1433/268/28 1469/318/67 1468/273/33
+f 1437/269/29 1435/249/11 1447/252/14 1448/270/30
+f 1436/285/44 1439/254/16 1472/253/15 1471/320/69
+f 1409/265/75 1411/264/24 1426/322/56 1427/323/21
+f 1454/317/66 1453/338/20 1424/344/36 1452/321/70
+f 1467/274/34 1468/273/33 1454/317/66 1452/321/70
+f 1423/300/37 1422/301/22 1427/280/21 1426/277/56
+f 1444/290/48 1445/346/74 1430/313/64 1428/291/49
+f 1434/267/27 1435/249/11 1437/269/29 1436/285/44
+f 1415/281/40 1413/263/23 1412/266/26 1414/282/77
+f 1457/331/73 1456/316/65 1469/318/67 1470/327/71
+f 1467/274/34 1452/321/70 1466/325/59 1474/326/55
+f 1460/284/43 1425/258/1 1458/335/72
+f 1409/324/75 1427/260/21 1410/262/2
+f 1414/314/77 1412/315/26 1410/262/2
+f 1445/343/74 1444/341/48 1411/264/24 1413/263/23
+f 1432/250/12 1435/249/11 1434/267/27 1433/268/28
+f 1462/283/42 1425/258/1 1460/284/43
+f 1463/306/60 1462/308/42 1461/311/62 1464/305/58
+f 1444/341/48 1451/342/51 1426/322/56 1411/264/24
+f 1450/332/53 1449/287/46 1421/278/38 1423/277/37
+f 1450/295/53 1441/296/54 1438/286/45 1449/297/46
+f 1423/277/37 1421/278/38 1420/279/39 1422/280/22
+f 1466/325/59 1452/321/70 1424/344/36 1465/345/35
+f 1439/254/16 1438/286/45 1441/296/54 1440/255/17
+f 1444/290/48 1428/291/49 1443/292/50 1451/293/51
+f 1451/332/51 1450/333/53 1423/300/37 1426/277/56
+f 1427/260/21 1422/261/22 1410/262/2
+f 1449/287/46 1448/288/30 1419/289/47 1421/278/38
+f 1469/318/67 1433/268/28 1434/267/27 1470/327/71
+f 1448/288/30 1447/302/14 1417/303/57 1419/289/47
+f 1429/271/31 1431/272/32 1468/273/33 1467/274/34
+f 1413/263/23 1411/264/24 1409/265/75 1412/266/26
+f 1462/308/42 1460/309/43 1459/310/61 1461/311/62
+f 1464/305/58 1461/311/62 1472/253/15 1473/256/18
+f 1455/257/19 1425/258/1 1453/259/20
+f 1460/309/43 1458/330/72 1457/331/73 1459/310/61
+f 1456/316/65 1454/317/66 1468/273/33 1469/318/67
+f 1464/304/58 1466/305/59 1465/306/35 1463/307/60
+f 1418/328/68 1410/262/2 1420/339/39
+f 1471/320/69 1470/327/71 1434/267/27 1436/285/44
+f 1422/261/22 1420/339/39 1410/262/2
+f 1463/337/60 1465/275/35 1425/258/1
+f 1458/335/72 1425/258/1 1455/257/19
+f 1418/328/68 1416/329/63 1410/262/2
+f 1421/278/38 1419/289/47 1418/319/68 1420/279/39
+f 1446/334/13 1415/281/40 1417/303/57 1447/302/14
+f 1432/250/12 1430/313/64 1445/346/74 1446/251/13
+f 1431/272/32 1429/271/31 1428/291/49 1430/313/64
+f 1455/336/19 1453/338/20 1454/317/66 1456/316/65
+f 1467/274/34 1474/326/55 1442/294/52 1429/271/31
+f 1433/268/28 1431/272/32 1430/313/64 1432/250/12
+f 1472/253/15 1439/254/16 1440/255/17 1473/256/18
+f 1463/337/60 1425/258/1 1462/283/42
+f 1446/334/13 1445/343/74 1413/263/23 1415/281/40
+f 1453/259/20 1425/258/1 1424/276/36
+f 1417/303/57 1416/312/63 1418/319/68 1419/289/47
+f 1466/305/59 1464/304/58 1473/298/18 1474/256/55
+f 1435/249/11 1432/250/12 1446/251/13 1447/252/14
+f 1441/340/54 1450/347/53 1451/295/51 1443/296/50
+f 1416/329/63 1414/314/77 1410/262/2
+f 1449/297/46 1438/286/45 1437/269/29 1448/270/30
+f 1457/331/73 1470/327/71 1471/320/69 1459/310/61
+f 1439/254/16 1436/285/44 1437/269/29 1438/286/45
+f 1474/256/55 1473/298/18 1440/299/17 1442/255/52
+f 1443/292/50 1428/291/49 1429/271/31 1442/294/52
+f 1417/303/57 1415/281/40 1414/282/77 1416/312/63
+f 1458/330/72 1455/336/19 1456/316/65 1457/331/73
+f 1465/275/35 1424/276/36 1425/258/1
+f 1442/255/52 1440/299/17 1441/340/54 1443/296/50
+f 1493/316/65 1495/317/66 1481/273/33 1480/318/67
+f 1506/292/50 1521/291/49 1520/271/31 1507/294/52
+f 1491/335/72 1524/258/1 1494/257/19
+f 1508/340/54 1499/347/53 1498/295/51 1506/296/50
+f 1480/318/67 1516/268/28 1515/267/27 1479/327/71
+f 1528/278/38 1530/289/47 1531/319/68 1529/279/39
+f 1487/308/42 1489/309/43 1490/310/61 1488/311/62
+f 1537/315/26 1540/324/25 1539/262/2
+f 1488/311/62 1490/310/61 1478/320/69 1477/253/15
+f 1527/261/22 1529/339/39 1539/262/2
+f 1486/306/60 1487/308/42 1488/311/62 1485/305/58
+f 1533/329/63 1535/314/77 1539/262/2
+f 1485/304/58 1483/305/59 1484/306/35 1486/307/60
+f 1489/284/43 1524/258/1 1491/335/72
+f 1532/303/57 1534/281/40 1535/282/77 1533/312/63
+f 1494/336/19 1496/338/20 1495/317/66 1493/316/65
+f 1518/272/32 1516/268/28 1480/318/67 1481/273/33
+f 1531/328/68 1533/329/63 1539/262/2
+f 1475/256/55 1476/298/18 1509/299/17 1507/255/52
+f 1496/259/20 1524/258/1 1525/276/36
+f 1483/305/59 1485/304/58 1476/298/18 1475/256/55
+f 1505/341/48 1498/342/51 1523/322/56 1538/264/24
+f 1477/253/15 1510/254/16 1509/255/17 1476/256/18
+f 1517/250/12 1514/249/11 1515/267/27 1516/268/28
+f 1540/324/25 1522/260/21 1539/262/2
+f 1482/274/34 1481/273/33 1495/317/66 1497/321/70
+f 1495/317/66 1496/338/20 1525/344/36 1497/321/70
+f 1534/281/40 1536/263/23 1537/266/26 1535/282/77
+f 1507/255/52 1509/299/17 1508/340/54 1506/296/50
+f 1501/288/30 1502/302/14 1532/303/57 1530/289/47
+f 1510/254/16 1513/285/44 1512/269/29 1511/286/45
+f 1518/272/32 1520/271/31 1521/291/49 1519/313/64
+f 1532/303/57 1533/312/63 1531/319/68 1530/289/47
+f 1500/287/46 1501/288/30 1530/289/47 1528/278/38
+f 1513/285/44 1510/254/16 1477/253/15 1478/320/69
+f 1516/268/28 1518/272/32 1519/313/64 1517/250/12
+f 1505/290/48 1504/346/74 1519/313/64 1521/291/49
+f 1520/271/31 1518/272/32 1481/273/33 1482/274/34
+f 1486/337/60 1524/258/1 1487/283/42
+f 1504/343/74 1505/341/48 1538/264/24 1536/263/23
+f 1503/334/13 1504/343/74 1536/263/23 1534/281/40
+f 1526/300/37 1527/301/22 1522/280/21 1523/277/56
+f 1491/330/72 1494/336/19 1493/316/65 1492/331/73
+f 1526/277/37 1528/278/38 1529/279/39 1527/280/22
+f 1498/332/51 1499/333/53 1526/300/37 1523/277/56
+f 1522/260/21 1527/261/22 1539/262/2
+f 1536/263/23 1538/264/24 1540/265/25 1537/266/26
+f 1487/283/42 1524/258/1 1489/284/43
+f 1503/334/13 1534/281/40 1532/303/57 1502/302/14
+f 1514/249/11 1517/250/12 1503/251/13 1502/252/14
+f 1499/295/53 1508/296/54 1511/286/45 1500/297/46
+f 1492/331/73 1493/316/65 1480/318/67 1479/327/71
+f 1500/297/46 1511/286/45 1512/269/29 1501/270/30
+f 1505/290/48 1521/291/49 1506/292/50 1498/293/51
+f 1517/250/12 1519/313/64 1504/346/74 1503/251/13
+f 1482/274/34 1497/321/70 1483/325/59 1475/326/55
+f 1492/331/73 1479/327/71 1478/320/69 1490/310/61
+f 1531/328/68 1539/262/2 1529/339/39
+f 1486/337/60 1484/275/35 1524/258/1
+f 1494/257/19 1524/258/1 1496/259/20
+f 1540/265/25 1538/264/24 1523/322/56 1522/323/21
+f 1512/269/29 1514/249/11 1502/252/14 1501/270/30
+f 1515/267/27 1514/249/11 1512/269/29 1513/285/44
+f 1485/305/58 1488/311/62 1477/253/15 1476/256/18
+f 1478/320/69 1479/327/71 1515/267/27 1513/285/44
+f 1483/325/59 1497/321/70 1525/344/36 1484/345/35
+f 1484/275/35 1525/276/36 1524/258/1
+f 1510/254/16 1511/286/45 1508/296/54 1509/255/17
+f 1535/314/77 1537/315/26 1539/262/2
+f 1489/309/43 1491/330/72 1492/331/73 1490/310/61
+f 1482/274/34 1475/326/55 1507/294/52 1520/271/31
+f 1499/332/53 1500/287/46 1528/278/38 1526/277/37
+f 1593/311/62 1591/310/61 1603/320/69 1604/253/15
+f 1544/315/76 1541/324/75 1542/262/2
+f 1563/272/32 1565/268/28 1601/318/67 1600/273/33
+f 1569/269/29 1567/249/11 1579/252/14 1580/270/30
+f 1568/285/44 1571/254/16 1604/253/15 1603/320/69
+f 1541/265/75 1543/264/24 1558/322/56 1559/323/21
+f 1586/317/66 1585/338/20 1556/344/36 1584/321/70
+f 1599/274/34 1600/273/33 1586/317/66 1584/321/70
+f 1555/300/37 1554/301/22 1559/280/21 1558/277/56
+f 1576/290/48 1577/346/74 1562/313/64 1560/291/49
+f 1566/267/27 1567/249/11 1569/269/29 1568/285/44
+f 1547/281/40 1545/263/23 1544/266/76 1546/282/41
+f 1589/331/73 1588/316/65 1601/318/67 1602/327/71
+f 1599/274/34 1584/321/70 1598/325/59 1606/326/55
+f 1592/284/43 1557/258/1 1590/335/72
+f 1541/324/75 1559/260/21 1542/262/2
+f 1546/314/41 1544/315/76 1542/262/2
+f 1577/343/74 1576/341/48 1543/264/24 1545/263/23
+f 1564/250/12 1567/249/11 1566/267/27 1565/268/28
+f 1594/283/42 1557/258/1 1592/284/43
+f 1595/306/60 1594/308/42 1593/311/62 1596/305/58
+f 1576/341/48 1583/342/51 1558/322/56 1543/264/24
+f 1582/332/53 1581/287/46 1553/278/38 1555/277/37
+f 1582/295/53 1573/296/54 1570/286/45 1581/297/46
+f 1555/277/37 1553/278/38 1552/279/39 1554/280/22
+f 1598/325/59 1584/321/70 1556/344/36 1597/345/35
+f 1571/254/16 1570/286/45 1573/296/54 1572/255/17
+f 1576/290/48 1560/291/49 1575/292/50 1583/293/51
+f 1583/332/51 1582/333/53 1555/300/37 1558/277/56
+f 1559/260/21 1554/261/22 1542/262/2
+f 1581/287/46 1580/288/30 1551/289/47 1553/278/38
+f 1601/318/67 1565/268/28 1566/267/27 1602/327/71
+f 1580/288/30 1579/302/14 1549/303/57 1551/289/47
+f 1561/271/31 1563/272/32 1600/273/33 1599/274/34
+f 1545/263/23 1543/264/24 1541/265/75 1544/266/76
+f 1594/308/42 1592/309/43 1591/310/61 1593/311/62
+f 1596/305/58 1593/311/62 1604/253/15 1605/256/18
+f 1587/257/19 1557/258/1 1585/259/20
+f 1592/309/43 1590/330/72 1589/331/73 1591/310/61
+f 1588/316/65 1586/317/66 1600/273/33 1601/318/67
+f 1596/305/58 1598/325/59 1597/345/35 1595/306/60
+f 1550/328/68 1542/262/2 1552/339/39
+f 1603/320/69 1602/327/71 1566/267/27 1568/285/44
+f 1554/261/22 1552/339/39 1542/262/2
+f 1595/337/60 1597/275/35 1557/258/1
+f 1590/335/72 1557/258/1 1587/257/19
+f 1550/328/68 1548/329/63 1542/262/2
+f 1553/278/38 1551/289/47 1550/319/68 1552/279/39
+f 1578/334/13 1547/281/40 1549/303/57 1579/302/14
+f 1564/250/12 1562/313/64 1577/346/74 1578/251/13
+f 1563/272/32 1561/271/31 1560/291/49 1562/313/64
+f 1587/336/19 1585/338/20 1586/317/66 1588/316/65
+f 1599/274/34 1606/326/55 1574/294/52 1561/271/31
+f 1565/268/28 1563/272/32 1562/313/64 1564/250/12
+f 1604/253/15 1571/254/16 1572/255/17 1605/256/18
+f 1595/337/60 1557/258/1 1594/283/42
+f 1578/334/13 1577/343/74 1545/263/23 1547/281/40
+f 1585/259/20 1557/258/1 1556/276/36
+f 1549/303/57 1548/312/63 1550/319/68 1551/289/47
+f 1598/305/59 1596/304/58 1605/298/18 1606/256/55
+f 1567/249/11 1564/250/12 1578/251/13 1579/252/14
+f 1573/340/54 1582/347/53 1583/295/51 1575/296/50
+f 1548/329/63 1546/314/41 1542/262/2
+f 1581/297/46 1570/286/45 1569/269/29 1580/270/30
+f 1589/331/73 1602/327/71 1603/320/69 1591/310/61
+f 1571/254/16 1568/285/44 1569/269/29 1570/286/45
+f 1606/256/55 1605/298/18 1572/299/17 1574/255/52
+f 1575/292/50 1560/291/49 1561/271/31 1574/294/52
+f 1549/303/57 1547/281/40 1546/282/41 1548/312/63
+f 1590/330/72 1587/336/19 1588/316/65 1589/331/73
+f 1597/275/35 1556/276/36 1557/258/1
+f 1574/255/52 1572/299/17 1573/340/54 1575/296/50
+g bottle.1_Cylinder.007_bottle.1_Cylinder.007_bottles-violet
+f 1171/249/11 1168/250/12 1182/251/13 1183/252/14
+f 1208/253/15 1175/254/16 1176/255/17 1209/256/18
+f 1191/257/19 1161/258/1 1189/259/20
+f 1163/260/21 1158/261/22 1146/262/2
+f 1149/263/23 1147/264/24 1145/265/25 1148/266/26
+f 1168/250/12 1171/249/11 1170/267/79 1169/268/28
+f 1173/269/29 1171/249/11 1183/252/14 1184/270/30
+f 1165/271/31 1167/272/32 1204/273/33 1203/274/34
+f 1201/275/35 1160/276/36 1161/258/1
+f 1159/277/37 1157/278/38 1156/279/39 1158/280/22
+f 1151/281/40 1149/263/23 1148/266/26 1150/282/77
+f 1198/283/42 1161/258/1 1196/284/43
+f 1175/254/16 1172/285/44 1173/269/29 1174/286/45
+f 1185/287/46 1184/288/30 1155/289/47 1157/278/38
+f 1170/267/79 1171/249/11 1173/269/29 1172/285/44
+f 1189/259/20 1161/258/1 1160/276/36
+f 1180/290/48 1164/291/49 1179/292/50 1187/293/51
+f 1179/292/50 1164/291/49 1165/271/31 1178/294/52
+f 1186/295/53 1177/296/54 1174/286/45 1185/297/46
+f 1210/256/55 1209/298/18 1176/299/17 1178/255/52
+f 1159/300/37 1158/301/22 1163/280/21 1162/277/56
+f 1184/288/30 1183/302/14 1153/303/57 1155/289/47
+f 1200/304/58 1202/305/59 1201/306/35 1199/307/60
+f 1198/308/42 1196/309/43 1195/310/61 1197/311/62
+f 1153/303/57 1151/281/40 1150/282/77 1152/312/63
+f 1169/268/28 1167/272/32 1166/313/64 1168/250/12
+f 1150/314/77 1148/315/26 1146/262/2
+f 1192/316/65 1190/317/66 1204/273/33 1205/318/67
+f 1157/278/38 1155/289/47 1154/319/68 1156/279/39
+f 1172/285/44 1175/254/16 1208/253/15 1207/320/69
+f 1203/274/34 1204/273/33 1190/317/66 1188/321/70
+f 1145/265/25 1147/264/24 1162/322/56 1163/323/21
+f 1148/315/26 1145/324/25 1146/262/2
+f 1203/274/34 1188/321/70 1202/325/59 1210/326/55
+f 1167/272/32 1169/268/28 1205/318/67 1204/273/33
+f 1207/320/69 1206/327/71 1170/267/79 1172/285/44
+f 1154/328/68 1152/329/63 1146/262/2
+f 1196/309/43 1194/330/72 1193/331/73 1195/310/61
+f 1187/332/51 1186/333/53 1159/300/37 1162/277/56
+f 1182/334/13 1151/281/40 1153/303/57 1183/302/14
+f 1152/329/63 1150/314/77 1146/262/2
+f 1185/297/46 1174/286/45 1173/269/29 1184/270/30
+f 1194/335/72 1161/258/1 1191/257/19
+f 1194/330/72 1191/336/19 1192/316/65 1193/331/73
+f 1199/337/60 1201/275/35 1161/258/1
+f 1200/305/58 1197/311/62 1208/253/15 1209/256/18
+f 1197/311/62 1195/310/61 1207/320/69 1208/253/15
+f 1191/336/19 1189/338/20 1190/317/66 1192/316/65
+f 1199/337/60 1161/258/1 1198/283/42
+f 1202/305/59 1200/304/58 1209/298/18 1210/256/55
+f 1175/254/16 1174/286/45 1177/296/54 1176/255/17
+f 1158/261/22 1156/339/39 1146/262/2
+f 1196/284/43 1161/258/1 1194/335/72
+f 1178/255/52 1176/299/17 1177/340/54 1179/296/50
+f 1180/341/48 1187/342/51 1162/322/56 1147/264/24
+f 1203/274/34 1210/326/55 1178/294/52 1165/271/31
+f 1181/343/74 1180/341/48 1147/264/24 1149/263/23
+f 1145/324/25 1163/260/21 1146/262/2
+f 1202/325/59 1188/321/70 1160/344/36 1201/345/35
+f 1199/306/60 1198/308/42 1197/311/62 1200/305/58
+f 1168/250/12 1166/313/64 1181/346/74 1182/251/13
+f 1193/331/73 1206/327/71 1207/320/69 1195/310/61
+f 1177/340/54 1186/347/53 1187/295/51 1179/296/50
+f 1190/317/66 1189/338/20 1160/344/36 1188/321/70
+f 1180/290/48 1181/346/74 1166/313/64 1164/291/49
+f 1182/334/13 1181/343/74 1149/263/23 1151/281/40
+f 1193/331/73 1192/316/65 1205/318/67 1206/327/71
+f 1186/332/53 1185/287/46 1157/278/38 1159/277/37
+f 1205/318/67 1169/268/28 1170/267/79 1206/327/71
+f 1167/272/32 1165/271/31 1164/291/49 1166/313/64
+f 1153/303/57 1152/312/63 1154/319/68 1155/289/47
+f 1154/328/68 1146/262/2 1156/339/39
+f 1237/249/11 1234/250/12 1248/251/13 1249/252/14
+f 1274/253/15 1241/254/16 1242/255/17 1275/256/18
+f 1257/257/19 1227/258/1 1255/259/20
+f 1229/260/21 1224/261/22 1212/262/2
+f 1215/263/23 1213/264/24 1211/265/75 1214/266/26
+f 1234/250/12 1237/249/11 1236/267/27 1235/268/28
+f 1239/269/29 1237/249/11 1249/252/14 1250/270/30
+f 1231/271/31 1233/272/32 1270/273/33 1269/274/34
+f 1267/275/35 1226/276/36 1227/258/1
+f 1225/277/37 1223/278/38 1222/279/39 1224/280/22
+f 1217/281/40 1215/263/23 1214/266/26 1216/282/41
+f 1264/283/42 1227/258/1 1262/284/43
+f 1241/254/16 1238/285/44 1239/269/29 1240/286/45
+f 1251/287/46 1250/288/30 1221/289/47 1223/278/38
+f 1236/267/27 1237/249/11 1239/269/29 1238/285/44
+f 1255/259/20 1227/258/1 1226/276/36
+f 1246/290/48 1230/291/49 1245/292/50 1253/293/51
+f 1245/292/50 1230/291/49 1231/271/31 1244/294/52
+f 1252/295/53 1243/296/54 1240/286/45 1251/297/46
+f 1276/256/55 1275/298/18 1242/299/17 1244/255/52
+f 1225/300/37 1224/301/22 1229/280/21 1228/277/56
+f 1250/288/30 1249/302/14 1219/303/57 1221/289/47
+f 1266/304/58 1268/305/59 1267/306/35 1265/307/60
+f 1264/308/42 1262/309/43 1261/310/61 1263/311/62
+f 1219/303/57 1217/281/40 1216/282/41 1218/312/63
+f 1235/268/28 1233/272/32 1232/313/64 1234/250/12
+f 1216/314/41 1214/315/26 1212/262/2
+f 1258/316/65 1256/317/66 1270/273/33 1271/318/67
+f 1223/278/38 1221/289/47 1220/319/68 1222/279/39
+f 1238/285/44 1241/254/16 1274/253/15 1273/320/69
+f 1269/274/34 1270/273/33 1256/317/66 1254/321/70
+f 1211/265/75 1213/264/24 1228/322/56 1229/323/21
+f 1214/315/26 1211/324/75 1212/262/2
+f 1269/274/34 1254/321/70 1268/325/59 1276/326/55
+f 1233/272/32 1235/268/28 1271/318/67 1270/273/33
+f 1273/320/69 1272/327/71 1236/267/27 1238/285/44
+f 1220/328/68 1218/329/63 1212/262/2
+f 1262/309/43 1260/330/72 1259/331/73 1261/310/61
+f 1253/332/51 1252/333/53 1225/300/37 1228/277/56
+f 1248/334/13 1217/281/40 1219/303/57 1249/302/14
+f 1218/329/63 1216/314/41 1212/262/2
+f 1251/297/46 1240/286/45 1239/269/29 1250/270/30
+f 1260/335/72 1227/258/1 1257/257/19
+f 1260/330/72 1257/336/19 1258/316/65 1259/331/73
+f 1265/337/60 1267/275/35 1227/258/1
+f 1266/305/58 1263/311/62 1274/253/15 1275/256/18
+f 1263/311/62 1261/310/61 1273/320/69 1274/253/15
+f 1257/336/19 1255/338/20 1256/317/66 1258/316/65
+f 1265/337/60 1227/258/1 1264/283/42
+f 1268/305/59 1266/304/58 1275/298/18 1276/256/55
+f 1241/254/16 1240/286/45 1243/296/54 1242/255/17
+f 1224/261/22 1222/339/39 1212/262/2
+f 1262/284/43 1227/258/1 1260/335/72
+f 1244/255/52 1242/299/17 1243/340/54 1245/296/50
+f 1246/341/48 1253/342/51 1228/322/56 1213/264/24
+f 1269/274/34 1276/326/55 1244/294/52 1231/271/31
+f 1247/343/74 1246/341/48 1213/264/24 1215/263/23
+f 1211/324/75 1229/260/21 1212/262/2
+f 1268/325/59 1254/321/70 1226/344/36 1267/345/35
+f 1265/306/60 1264/308/42 1263/311/62 1266/305/58
+f 1234/250/12 1232/313/64 1247/346/74 1248/251/13
+f 1259/331/73 1272/327/71 1273/320/69 1261/310/61
+f 1243/340/54 1252/347/53 1253/295/51 1245/296/50
+f 1256/317/66 1255/338/20 1226/344/36 1254/321/70
+f 1246/290/48 1247/346/74 1232/313/64 1230/291/49
+f 1248/334/13 1247/343/74 1215/263/23 1217/281/40
+f 1259/331/73 1258/316/65 1271/318/67 1272/327/71
+f 1252/332/53 1251/287/46 1223/278/38 1225/277/37
+f 1271/318/67 1235/268/28 1236/267/27 1272/327/71
+f 1233/272/32 1231/271/31 1230/291/49 1232/313/64
+f 1219/303/57 1218/312/63 1220/319/68 1221/289/47
+f 1220/328/68 1212/262/2 1222/339/39
+f 1303/249/11 1300/250/12 1314/251/13 1315/252/14
+f 1340/253/15 1307/254/16 1308/255/17 1341/256/18
+f 1323/257/19 1293/258/1 1321/259/20
+f 1295/260/21 1290/261/22 1278/262/2
+f 1281/263/23 1279/264/24 1277/265/25 1280/266/26
+f 1300/250/12 1303/249/11 1302/267/27 1301/268/28
+f 1305/269/29 1303/249/11 1315/252/14 1316/270/30
+f 1297/271/31 1299/272/32 1336/273/33 1335/274/34
+f 1333/275/35 1292/276/36 1293/258/1
+f 1291/277/37 1289/278/38 1288/279/39 1290/280/22
+f 1283/281/40 1281/263/23 1280/266/26 1282/282/77
+f 1330/283/42 1293/258/1 1328/284/43
+f 1307/254/16 1304/285/44 1305/269/29 1306/286/45
+f 1317/287/46 1316/288/30 1287/289/47 1289/278/38
+f 1302/267/27 1303/249/11 1305/269/29 1304/285/44
+f 1321/259/20 1293/258/1 1292/276/36
+f 1312/290/48 1296/291/49 1311/292/50 1319/293/51
+f 1311/292/50 1296/291/49 1297/271/31 1310/294/52
+f 1318/295/53 1309/296/54 1306/286/45 1317/297/46
+f 1342/256/55 1341/298/18 1308/299/17 1310/255/52
+f 1291/300/37 1290/301/22 1295/280/21 1294/277/56
+f 1316/288/30 1315/302/14 1285/303/57 1287/289/47
+f 1332/304/58 1334/305/59 1333/306/35 1331/307/60
+f 1330/308/42 1328/309/43 1327/310/61 1329/311/62
+f 1285/303/57 1283/281/40 1282/282/77 1284/312/63
+f 1301/268/28 1299/272/32 1298/313/64 1300/250/12
+f 1282/314/77 1280/315/26 1278/262/2
+f 1324/316/65 1322/317/66 1336/273/33 1337/318/67
+f 1289/278/38 1287/289/47 1286/319/68 1288/279/39
+f 1304/285/44 1307/254/16 1340/253/15 1339/320/69
+f 1335/274/34 1336/273/33 1322/317/66 1320/321/70
+f 1277/265/25 1279/264/24 1294/322/56 1295/323/21
+f 1280/315/26 1277/324/25 1278/262/2
+f 1335/274/34 1320/321/70 1334/325/59 1342/326/55
+f 1299/272/32 1301/268/28 1337/318/67 1336/273/33
+f 1339/320/69 1338/327/71 1302/267/27 1304/285/44
+f 1286/328/68 1284/329/63 1278/262/2
+f 1328/309/43 1326/330/72 1325/331/73 1327/310/61
+f 1319/332/51 1318/333/53 1291/300/37 1294/277/56
+f 1314/334/13 1283/281/40 1285/303/57 1315/302/14
+f 1284/329/63 1282/314/77 1278/262/2
+f 1317/297/46 1306/286/45 1305/269/29 1316/270/30
+f 1326/335/72 1293/258/1 1323/257/19
+f 1326/330/72 1323/336/19 1324/316/65 1325/331/73
+f 1331/337/60 1333/275/35 1293/258/1
+f 1332/305/58 1329/311/62 1340/253/15 1341/256/18
+f 1329/311/62 1327/310/61 1339/320/69 1340/253/15
+f 1323/336/19 1321/338/20 1322/317/66 1324/316/65
+f 1331/337/60 1293/258/1 1330/283/42
+f 1334/305/59 1332/304/58 1341/298/18 1342/256/55
+f 1307/254/16 1306/286/45 1309/296/54 1308/255/17
+f 1290/261/22 1288/339/39 1278/262/2
+f 1328/284/43 1293/258/1 1326/335/72
+f 1310/255/52 1308/299/17 1309/340/54 1311/296/50
+f 1312/341/48 1319/342/51 1294/322/56 1279/264/24
+f 1335/274/34 1342/326/55 1310/294/52 1297/271/31
+f 1313/343/74 1312/341/48 1279/264/24 1281/263/23
+f 1277/324/25 1295/260/21 1278/262/2
+f 1334/325/59 1320/321/70 1292/344/36 1333/345/35
+f 1331/306/60 1330/308/42 1329/311/62 1332/305/58
+f 1300/250/12 1298/313/64 1313/346/74 1314/251/13
+f 1325/331/73 1338/327/71 1339/320/69 1327/310/61
+f 1309/340/54 1318/347/53 1319/295/51 1311/296/50
+f 1322/317/66 1321/338/20 1292/344/36 1320/321/70
+f 1312/290/48 1313/346/74 1298/313/64 1296/291/49
+f 1314/334/13 1313/343/74 1281/263/23 1283/281/40
+f 1325/331/73 1324/316/65 1337/318/67 1338/327/71
+f 1318/332/53 1317/287/46 1289/278/38 1291/277/37
+f 1337/318/67 1301/268/28 1302/267/27 1338/327/71
+f 1299/272/32 1297/271/31 1296/291/49 1298/313/64
+f 1285/303/57 1284/312/63 1286/319/68 1287/289/47
+f 1286/328/68 1278/262/2 1288/339/39
+f 1625/316/65 1627/317/66 1613/273/33 1612/318/67
+f 1638/292/50 1653/291/49 1652/271/31 1639/294/52
+f 1623/335/72 1656/258/1 1626/257/19
+f 1640/340/54 1631/347/53 1630/295/51 1638/296/50
+f 1612/318/67 1648/268/28 1647/267/27 1611/327/71
+f 1660/278/38 1662/289/47 1663/319/68 1661/279/39
+f 1619/308/42 1621/309/43 1622/310/61 1620/311/62
+f 1669/315/76 1672/324/75 1671/262/2
+f 1620/311/62 1622/310/61 1610/320/69 1609/253/15
+f 1659/261/22 1661/339/39 1671/262/2
+f 1618/306/60 1619/308/42 1620/311/62 1617/305/58
+f 1665/329/63 1667/314/77 1671/262/2
+f 1617/304/58 1615/305/59 1616/306/35 1618/307/60
+f 1621/284/43 1656/258/1 1623/335/72
+f 1664/303/57 1666/281/40 1667/282/77 1665/312/63
+f 1626/336/19 1628/338/20 1627/317/66 1625/316/65
+f 1650/272/32 1648/268/28 1612/318/67 1613/273/33
+f 1663/328/68 1665/329/63 1671/262/2
+f 1607/256/55 1608/298/18 1641/299/17 1639/255/52
+f 1628/259/20 1656/258/1 1657/276/36
+f 1615/305/59 1617/304/58 1608/298/18 1607/256/55
+f 1637/341/48 1630/342/51 1655/322/56 1670/264/24
+f 1609/253/15 1642/254/16 1641/255/17 1608/256/18
+f 1649/250/12 1646/249/11 1647/267/27 1648/268/28
+f 1672/324/75 1654/260/21 1671/262/2
+f 1614/274/34 1613/273/33 1627/317/66 1629/321/70
+f 1627/317/66 1628/338/20 1657/344/36 1629/321/70
+f 1666/281/40 1668/263/23 1669/266/76 1667/282/77
+f 1639/255/52 1641/299/17 1640/340/54 1638/296/50
+f 1633/288/30 1634/302/14 1664/303/57 1662/289/47
+f 1642/254/16 1645/285/44 1644/269/29 1643/286/45
+f 1650/272/32 1652/271/31 1653/291/49 1651/313/64
+f 1664/303/57 1665/312/63 1663/319/68 1662/289/47
+f 1632/287/46 1633/288/30 1662/289/47 1660/278/38
+f 1645/285/44 1642/254/16 1609/253/15 1610/320/69
+f 1648/268/28 1650/272/32 1651/313/64 1649/250/12
+f 1637/290/48 1636/346/74 1651/313/64 1653/291/49
+f 1652/271/31 1650/272/32 1613/273/33 1614/274/34
+f 1618/337/60 1656/258/1 1619/283/42
+f 1636/343/74 1637/341/48 1670/264/24 1668/263/23
+f 1635/334/13 1636/343/74 1668/263/23 1666/281/40
+f 1658/300/37 1659/301/22 1654/280/21 1655/277/56
+f 1623/330/72 1626/336/19 1625/316/65 1624/331/73
+f 1658/277/37 1660/278/38 1661/279/39 1659/280/22
+f 1630/332/51 1631/333/53 1658/300/37 1655/277/56
+f 1654/260/21 1659/261/22 1671/262/2
+f 1668/263/23 1670/264/24 1672/265/75 1669/266/76
+f 1619/283/42 1656/258/1 1621/284/43
+f 1635/334/13 1666/281/40 1664/303/57 1634/302/14
+f 1646/249/11 1649/250/12 1635/251/13 1634/252/14
+f 1631/295/53 1640/296/54 1643/286/45 1632/297/46
+f 1624/331/73 1625/316/65 1612/318/67 1611/327/71
+f 1632/297/46 1643/286/45 1644/269/29 1633/270/30
+f 1637/290/48 1653/291/49 1638/292/50 1630/293/51
+f 1649/250/12 1651/313/64 1636/346/74 1635/251/13
+f 1614/274/34 1629/321/70 1615/325/59 1607/326/55
+f 1624/331/73 1611/327/71 1610/320/69 1622/310/61
+f 1663/328/68 1671/262/2 1661/339/39
+f 1618/337/60 1616/275/35 1656/258/1
+f 1626/257/19 1656/258/1 1628/259/20
+f 1672/265/75 1670/264/24 1655/322/56 1654/323/21
+f 1644/269/29 1646/249/11 1634/252/14 1633/270/30
+f 1647/267/27 1646/249/11 1644/269/29 1645/285/44
+f 1617/305/58 1620/311/62 1609/253/15 1608/256/18
+f 1610/320/69 1611/327/71 1647/267/27 1645/285/44
+f 1615/325/59 1629/321/70 1657/344/36 1616/345/35
+f 1616/275/35 1657/276/36 1656/258/1
+f 1642/254/16 1643/286/45 1640/296/54 1641/255/17
+f 1667/314/77 1669/315/76 1671/262/2
+f 1621/309/43 1623/330/72 1624/331/73 1622/310/61
+f 1614/274/34 1607/326/55 1639/294/52 1652/271/31
+f 1631/332/53 1632/287/46 1660/278/38 1658/277/37
+f 1691/316/65 1693/317/66 1679/273/33 1678/318/67
+f 1704/292/50 1719/291/49 1718/271/31 1705/294/52
+f 1689/335/72 1722/258/1 1692/257/19
+f 1706/340/54 1697/347/53 1696/295/51 1704/296/50
+f 1678/318/67 1714/268/28 1713/267/27 1677/327/71
+f 1726/278/38 1728/289/47 1729/319/68 1727/279/39
+f 1685/308/42 1687/309/43 1688/310/61 1686/311/62
+f 1735/315/76 1738/324/75 1737/262/2
+f 1686/311/62 1688/310/61 1676/320/69 1675/253/15
+f 1725/261/22 1727/339/39 1737/262/2
+f 1684/306/60 1685/308/42 1686/311/62 1683/305/58
+f 1731/329/63 1733/314/77 1737/262/2
+f 1683/304/58 1681/305/59 1682/306/35 1684/307/60
+f 1687/284/43 1722/258/1 1689/335/72
+f 1730/303/57 1732/281/40 1733/282/77 1731/312/63
+f 1692/336/19 1694/338/20 1693/317/66 1691/316/65
+f 1716/272/32 1714/268/28 1678/318/67 1679/273/33
+f 1729/328/68 1731/329/63 1737/262/2
+f 1673/256/55 1674/298/18 1707/299/17 1705/255/52
+f 1694/259/20 1722/258/1 1723/276/36
+f 1681/305/59 1683/304/58 1674/298/18 1673/256/55
+f 1703/341/48 1696/342/51 1721/322/56 1736/264/24
+f 1675/253/15 1708/254/16 1707/255/17 1674/256/18
+f 1715/250/12 1712/249/11 1713/267/27 1714/268/28
+f 1738/324/75 1720/260/21 1737/262/2
+f 1680/274/34 1679/273/33 1693/317/66 1695/321/70
+f 1693/317/66 1694/338/20 1723/344/36 1695/321/70
+f 1732/281/40 1734/263/23 1735/266/76 1733/282/77
+f 1705/255/52 1707/299/17 1706/340/54 1704/296/50
+f 1699/288/30 1700/302/14 1730/303/57 1728/289/47
+f 1708/254/16 1711/285/44 1710/269/29 1709/286/45
+f 1716/272/32 1718/271/31 1719/291/49 1717/313/64
+f 1730/303/57 1731/312/63 1729/319/68 1728/289/47
+f 1698/287/46 1699/288/30 1728/289/47 1726/278/38
+f 1711/285/44 1708/254/16 1675/253/15 1676/320/69
+f 1714/268/28 1716/272/32 1717/313/64 1715/250/12
+f 1703/290/48 1702/346/74 1717/313/64 1719/291/49
+f 1718/271/31 1716/272/32 1679/273/33 1680/274/34
+f 1684/337/60 1722/258/1 1685/283/42
+f 1702/343/74 1703/341/48 1736/264/24 1734/263/23
+f 1701/334/13 1702/343/74 1734/263/23 1732/281/40
+f 1724/300/37 1725/301/22 1720/280/21 1721/277/56
+f 1689/330/72 1692/336/19 1691/316/65 1690/331/73
+f 1724/277/37 1726/278/38 1727/279/39 1725/280/22
+f 1696/332/51 1697/333/53 1724/300/37 1721/277/56
+f 1720/260/21 1725/261/22 1737/262/2
+f 1734/263/23 1736/264/24 1738/265/75 1735/266/76
+f 1685/283/42 1722/258/1 1687/284/43
+f 1701/334/13 1732/281/40 1730/303/57 1700/302/14
+f 1712/249/11 1715/250/12 1701/251/13 1700/252/14
+f 1697/295/53 1706/296/54 1709/286/45 1698/297/46
+f 1690/331/73 1691/316/65 1678/318/67 1677/327/71
+f 1698/297/46 1709/286/45 1710/269/29 1699/270/30
+f 1703/290/48 1719/291/49 1704/292/50 1696/293/51
+f 1715/250/12 1717/313/64 1702/346/74 1701/251/13
+f 1680/274/34 1695/321/70 1681/325/59 1673/326/55
+f 1690/331/73 1677/327/71 1676/320/69 1688/310/61
+f 1729/328/68 1737/262/2 1727/339/39
+f 1684/337/60 1682/275/35 1722/258/1
+f 1692/257/19 1722/258/1 1694/259/20
+f 1738/265/75 1736/264/24 1721/322/56 1720/323/21
+f 1710/269/29 1712/249/11 1700/252/14 1699/270/30
+f 1713/267/27 1712/249/11 1710/269/29 1711/285/44
+f 1683/305/58 1686/311/62 1675/253/15 1674/256/18
+f 1676/320/69 1677/327/71 1713/267/27 1711/285/44
+f 1681/325/59 1695/321/70 1723/344/36 1682/345/35
+f 1682/275/35 1723/276/36 1722/258/1
+f 1708/254/16 1709/286/45 1706/296/54 1707/255/17
+f 1733/314/77 1735/315/76 1737/262/2
+f 1687/309/43 1689/330/72 1690/331/73 1688/310/61
+f 1680/274/34 1673/326/55 1705/294/52 1718/271/31
+f 1697/332/53 1698/287/46 1726/278/38 1724/277/37
+f 1889/316/65 1891/317/66 1877/273/33 1876/318/67
+f 1902/292/50 1917/291/49 1916/271/31 1903/294/52
+f 1887/335/72 1920/258/1 1890/257/19
+f 1904/340/54 1895/347/53 1894/295/51 1902/296/50
+f 1876/318/67 1912/268/28 1911/267/27 1875/327/71
+f 1924/278/38 1926/289/47 1927/319/68 1925/279/39
+f 1883/308/42 1885/309/43 1886/310/61 1884/311/62
+f 1933/315/26 1936/324/75 1935/262/2
+f 1884/311/62 1886/310/61 1874/320/69 1873/253/15
+f 1923/261/22 1925/339/39 1935/262/2
+f 1882/306/60 1883/308/42 1884/311/62 1881/305/58
+f 1929/329/63 1931/314/77 1935/262/2
+f 1881/304/58 1879/305/59 1880/306/35 1882/307/60
+f 1885/284/43 1920/258/1 1887/335/72
+f 1928/303/57 1930/281/40 1931/282/77 1929/312/63
+f 1890/336/19 1892/338/20 1891/317/66 1889/316/65
+f 1914/272/32 1912/268/28 1876/318/67 1877/273/33
+f 1927/328/68 1929/329/63 1935/262/2
+f 1871/256/55 1872/298/18 1905/299/17 1903/255/52
+f 1892/259/20 1920/258/1 1921/276/36
+f 1879/305/59 1881/304/58 1872/298/18 1871/256/55
+f 1901/341/48 1894/342/51 1919/322/56 1934/264/24
+f 1873/253/15 1906/254/16 1905/255/17 1872/256/18
+f 1913/250/12 1910/249/11 1911/267/27 1912/268/28
+f 1936/324/75 1918/260/21 1935/262/2
+f 1878/274/34 1877/273/33 1891/317/66 1893/321/70
+f 1891/317/66 1892/338/20 1921/344/36 1893/321/70
+f 1930/281/40 1932/263/23 1933/266/26 1931/282/77
+f 1903/255/52 1905/299/17 1904/340/54 1902/296/50
+f 1897/288/30 1898/302/14 1928/303/57 1926/289/47
+f 1906/254/16 1909/285/44 1908/269/29 1907/286/45
+f 1914/272/32 1916/271/31 1917/291/49 1915/313/64
+f 1928/303/57 1929/312/63 1927/319/68 1926/289/47
+f 1896/287/46 1897/288/30 1926/289/47 1924/278/38
+f 1909/285/44 1906/254/16 1873/253/15 1874/320/69
+f 1912/268/28 1914/272/32 1915/313/64 1913/250/12
+f 1901/290/48 1900/346/74 1915/313/64 1917/291/49
+f 1916/271/31 1914/272/32 1877/273/33 1878/274/34
+f 1882/337/60 1920/258/1 1883/283/42
+f 1900/343/74 1901/341/48 1934/264/24 1932/263/23
+f 1899/334/13 1900/343/74 1932/263/23 1930/281/40
+f 1922/300/37 1923/301/22 1918/280/21 1919/277/56
+f 1887/330/72 1890/336/19 1889/316/65 1888/331/73
+f 1922/277/37 1924/278/38 1925/279/39 1923/280/22
+f 1894/332/51 1895/333/53 1922/300/37 1919/277/56
+f 1918/260/21 1923/261/22 1935/262/2
+f 1932/263/23 1934/264/24 1936/265/75 1933/266/26
+f 1883/283/42 1920/258/1 1885/284/43
+f 1899/334/13 1930/281/40 1928/303/57 1898/302/14
+f 1910/249/11 1913/250/12 1899/251/13 1898/252/14
+f 1895/295/53 1904/296/54 1907/286/45 1896/297/46
+f 1888/331/73 1889/316/65 1876/318/67 1875/327/71
+f 1896/297/46 1907/286/45 1908/269/29 1897/270/30
+f 1901/290/48 1917/291/49 1902/292/50 1894/293/51
+f 1913/250/12 1915/313/64 1900/346/74 1899/251/13
+f 1878/274/34 1893/321/70 1879/325/59 1871/326/55
+f 1888/331/73 1875/327/71 1874/320/69 1886/310/61
+f 1927/328/68 1935/262/2 1925/339/39
+f 1882/337/60 1880/275/35 1920/258/1
+f 1890/257/19 1920/258/1 1892/259/20
+f 1936/265/75 1934/264/24 1919/322/56 1918/323/21
+f 1908/269/29 1910/249/11 1898/252/14 1897/270/30
+f 1911/267/27 1910/249/11 1908/269/29 1909/285/44
+f 1881/305/58 1884/311/62 1873/253/15 1872/256/18
+f 1874/320/69 1875/327/71 1911/267/27 1909/285/44
+f 1879/325/59 1893/321/70 1921/344/36 1880/345/35
+f 1880/275/35 1921/276/36 1920/258/1
+f 1906/254/16 1907/286/45 1904/296/54 1905/255/17
+f 1931/314/77 1933/315/26 1935/262/2
+f 1885/309/43 1887/330/72 1888/331/73 1886/310/61
+f 1878/274/34 1871/326/55 1903/294/52 1916/271/31
+f 1895/332/53 1896/287/46 1924/278/38 1922/277/37
+f 2153/316/65 2155/317/66 2141/273/33 2140/318/67
+f 2166/292/50 2181/291/49 2180/271/31 2167/294/52
+f 2151/335/72 2184/258/1 2154/257/19
+f 2168/340/54 2159/347/53 2158/295/51 2166/296/50
+f 2140/318/67 2176/268/28 2175/267/27 2139/327/71
+f 2188/278/38 2190/289/47 2191/319/68 2189/279/39
+f 2147/308/42 2149/309/43 2150/310/61 2148/311/62
+f 2197/315/26 2200/324/25 2199/262/2
+f 2148/311/62 2150/310/61 2138/320/69 2137/253/15
+f 2187/261/22 2189/339/39 2199/262/2
+f 2146/306/60 2147/308/42 2148/311/62 2145/305/58
+f 2193/329/63 2195/314/77 2199/262/2
+f 2145/304/58 2143/305/59 2144/306/35 2146/307/60
+f 2149/284/43 2184/258/1 2151/335/72
+f 2192/303/57 2194/281/40 2195/282/77 2193/312/63
+f 2154/336/19 2156/338/20 2155/317/66 2153/316/65
+f 2178/272/32 2176/268/28 2140/318/67 2141/273/33
+f 2191/328/68 2193/329/63 2199/262/2
+f 2135/256/55 2136/298/18 2169/299/17 2167/255/52
+f 2156/259/20 2184/258/1 2185/276/36
+f 2143/305/59 2145/304/58 2136/298/18 2135/256/55
+f 2165/341/48 2158/342/51 2183/322/56 2198/264/24
+f 2137/253/15 2170/254/16 2169/255/17 2136/256/18
+f 2177/250/12 2174/249/11 2175/267/27 2176/268/28
+f 2200/324/25 2182/260/21 2199/262/2
+f 2142/274/34 2141/273/33 2155/317/66 2157/321/70
+f 2155/317/66 2156/338/20 2185/344/36 2157/321/70
+f 2194/281/40 2196/263/23 2197/266/26 2195/282/77
+f 2167/255/52 2169/299/17 2168/340/54 2166/296/50
+f 2161/288/30 2162/302/14 2192/303/57 2190/289/47
+f 2170/254/16 2173/285/44 2172/269/29 2171/286/45
+f 2178/272/32 2180/271/31 2181/291/49 2179/313/64
+f 2192/303/57 2193/312/63 2191/319/68 2190/289/47
+f 2160/287/46 2161/288/30 2190/289/47 2188/278/38
+f 2173/285/44 2170/254/16 2137/253/15 2138/320/69
+f 2176/268/28 2178/272/32 2179/313/64 2177/250/12
+f 2165/290/48 2164/346/74 2179/313/64 2181/291/49
+f 2180/271/31 2178/272/32 2141/273/33 2142/274/34
+f 2146/337/60 2184/258/1 2147/283/42
+f 2164/343/74 2165/341/48 2198/264/24 2196/263/23
+f 2163/334/13 2164/343/74 2196/263/23 2194/281/40
+f 2186/300/37 2187/301/22 2182/280/21 2183/277/56
+f 2151/330/72 2154/336/19 2153/316/65 2152/331/73
+f 2186/277/37 2188/278/38 2189/279/39 2187/280/22
+f 2158/332/51 2159/333/53 2186/300/37 2183/277/56
+f 2182/260/21 2187/261/22 2199/262/2
+f 2196/263/23 2198/264/24 2200/265/25 2197/266/26
+f 2147/283/42 2184/258/1 2149/284/43
+f 2163/334/13 2194/281/40 2192/303/57 2162/302/14
+f 2174/249/11 2177/250/12 2163/251/13 2162/252/14
+f 2159/295/53 2168/296/54 2171/286/45 2160/297/46
+f 2152/331/73 2153/316/65 2140/318/67 2139/327/71
+f 2160/297/46 2171/286/45 2172/269/29 2161/270/30
+f 2165/290/48 2181/291/49 2166/292/50 2158/293/51
+f 2177/250/12 2179/313/64 2164/346/74 2163/251/13
+f 2142/274/34 2157/321/70 2143/325/59 2135/326/55
+f 2152/331/73 2139/327/71 2138/320/69 2150/310/61
+f 2191/328/68 2199/262/2 2189/339/39
+f 2146/337/60 2144/275/35 2184/258/1
+f 2154/257/19 2184/258/1 2156/259/20
+f 2200/265/25 2198/264/24 2183/322/56 2182/323/21
+f 2172/269/29 2174/249/11 2162/252/14 2161/270/30
+f 2175/267/27 2174/249/11 2172/269/29 2173/285/44
+f 2145/305/58 2148/311/62 2137/253/15 2136/256/18
+f 2138/320/69 2139/327/71 2175/267/27 2173/285/44
+f 2143/325/59 2157/321/70 2185/344/36 2144/345/35
+f 2144/275/35 2185/276/36 2184/258/1
+f 2170/254/16 2171/286/45 2168/296/54 2169/255/17
+f 2195/314/77 2197/315/26 2199/262/2
+f 2149/309/43 2151/330/72 2152/331/73 2150/310/61
+f 2142/274/34 2135/326/55 2167/294/52 2180/271/31
+f 2159/332/53 2160/287/46 2188/278/38 2186/277/37
+g bottle.1_Cylinder.007_bottle.1_Cylinder.007_bottles-red
+f 841/249/11 838/250/12 852/251/13 853/252/14
+f 878/253/15 845/254/16 846/255/17 879/256/18
+f 861/257/19 831/258/1 859/259/20
+f 833/260/21 828/261/22 816/262/2
+f 819/263/23 817/264/24 815/265/75 818/266/26
+f 838/250/12 841/249/11 840/267/27 839/268/28
+f 843/269/29 841/249/11 853/252/14 854/270/30
+f 835/271/31 837/272/32 874/273/33 873/274/34
+f 871/275/35 830/276/36 831/258/1
+f 829/277/37 827/278/38 826/279/39 828/280/22
+f 821/281/40 819/263/23 818/266/26 820/282/77
+f 868/283/42 831/258/1 866/284/43
+f 845/254/16 842/285/44 843/269/29 844/286/45
+f 855/287/46 854/288/30 825/289/47 827/278/38
+f 840/267/27 841/249/11 843/269/29 842/285/44
+f 859/259/20 831/258/1 830/276/36
+f 850/290/48 834/291/49 849/292/50 857/293/51
+f 849/292/50 834/291/49 835/271/31 848/294/52
+f 856/295/53 847/296/54 844/286/45 855/297/46
+f 880/256/55 879/298/18 846/299/17 848/255/52
+f 829/300/37 828/301/22 833/280/21 832/277/56
+f 854/288/30 853/302/14 823/303/57 825/289/47
+f 870/304/58 872/305/59 871/306/35 869/307/60
+f 868/308/42 866/309/43 865/310/61 867/311/62
+f 823/303/57 821/281/40 820/282/77 822/312/63
+f 839/268/28 837/272/32 836/313/64 838/250/12
+f 820/314/77 818/315/26 816/262/2
+f 862/316/65 860/317/66 874/273/33 875/318/67
+f 827/278/38 825/289/47 824/319/68 826/279/39
+f 842/285/44 845/254/16 878/253/15 877/320/69
+f 873/274/34 874/273/33 860/317/66 858/321/70
+f 815/265/75 817/264/24 832/322/56 833/323/21
+f 818/315/26 815/324/75 816/262/2
+f 873/274/34 858/321/70 872/325/59 880/326/55
+f 837/272/32 839/268/28 875/318/67 874/273/33
+f 877/320/69 876/327/71 840/267/27 842/285/44
+f 824/328/68 822/329/63 816/262/2
+f 866/309/43 864/330/72 863/331/73 865/310/61
+f 857/332/51 856/333/53 829/300/37 832/277/56
+f 852/334/13 821/281/40 823/303/57 853/302/14
+f 822/329/63 820/314/77 816/262/2
+f 855/297/46 844/286/45 843/269/29 854/270/30
+f 864/335/72 831/258/1 861/257/19
+f 864/330/72 861/336/19 862/316/65 863/331/73
+f 869/337/60 871/275/35 831/258/1
+f 870/305/58 867/311/62 878/253/15 879/256/18
+f 867/311/62 865/310/61 877/320/69 878/253/15
+f 861/336/19 859/338/20 860/317/66 862/316/65
+f 869/337/60 831/258/1 868/283/42
+f 872/305/59 870/304/58 879/298/18 880/256/55
+f 845/254/16 844/286/45 847/296/54 846/255/17
+f 828/261/22 826/339/39 816/262/2
+f 866/284/43 831/258/1 864/335/72
+f 848/255/52 846/299/17 847/340/54 849/296/50
+f 850/341/48 857/342/51 832/322/56 817/264/24
+f 873/274/34 880/326/55 848/294/52 835/271/31
+f 851/343/74 850/341/48 817/264/24 819/263/23
+f 815/324/75 833/260/21 816/262/2
+f 872/325/59 858/321/70 830/344/36 871/345/35
+f 869/306/60 868/308/42 867/311/62 870/305/58
+f 838/250/12 836/313/64 851/346/74 852/251/13
+f 863/331/73 876/327/71 877/320/69 865/310/61
+f 847/340/54 856/347/53 857/295/51 849/296/50
+f 860/317/66 859/338/20 830/344/36 858/321/70
+f 850/290/48 851/346/74 836/313/64 834/291/49
+f 852/334/13 851/343/74 819/263/23 821/281/40
+f 863/331/73 862/316/65 875/318/67 876/327/71
+f 856/332/53 855/287/46 827/278/38 829/277/37
+f 875/318/67 839/268/28 840/267/27 876/327/71
+f 837/272/32 835/271/31 834/291/49 836/313/64
+f 823/303/57 822/312/63 824/319/68 825/289/47
+f 824/328/68 816/262/2 826/339/39
+f 907/249/11 904/250/12 918/251/13 919/252/14
+f 944/253/15 911/254/16 912/255/17 945/256/18
+f 927/257/19 897/258/1 925/259/20
+f 899/260/21 894/261/22 882/262/2
+f 885/263/23 883/264/24 881/265/75 884/266/26
+f 904/250/12 907/249/11 906/267/27 905/268/28
+f 909/269/29 907/249/11 919/252/14 920/270/30
+f 901/271/31 903/272/32 940/273/33 939/274/34
+f 937/275/35 896/276/36 897/258/1
+f 895/277/37 893/278/38 892/279/39 894/280/22
+f 887/281/40 885/263/23 884/266/26 886/282/77
+f 934/283/42 897/258/1 932/284/43
+f 911/254/16 908/285/44 909/269/29 910/286/45
+f 921/287/46 920/288/30 891/289/47 893/278/38
+f 906/267/27 907/249/11 909/269/29 908/285/44
+f 925/259/20 897/258/1 896/276/36
+f 916/290/48 900/291/49 915/292/50 923/293/51
+f 915/292/50 900/291/49 901/271/31 914/294/52
+f 922/295/53 913/296/54 910/286/45 921/297/46
+f 946/256/55 945/298/18 912/299/17 914/255/52
+f 895/300/37 894/301/22 899/280/21 898/277/56
+f 920/288/30 919/302/14 889/303/57 891/289/47
+f 936/304/58 938/305/59 937/306/35 935/307/60
+f 934/308/42 932/309/43 931/310/61 933/311/62
+f 889/303/57 887/281/40 886/282/77 888/312/63
+f 905/268/28 903/272/32 902/313/64 904/250/12
+f 886/314/77 884/315/26 882/262/2
+f 928/316/65 926/317/66 940/273/33 941/318/67
+f 893/278/38 891/289/47 890/319/68 892/279/39
+f 908/285/44 911/254/16 944/253/15 943/320/69
+f 939/274/34 940/273/33 926/317/66 924/321/70
+f 881/265/75 883/264/24 898/322/56 899/323/21
+f 884/315/26 881/324/75 882/262/2
+f 939/274/34 924/321/70 938/325/59 946/326/55
+f 903/272/32 905/268/28 941/318/67 940/273/33
+f 943/320/69 942/327/71 906/267/27 908/285/44
+f 890/328/68 888/329/63 882/262/2
+f 932/309/43 930/330/72 929/331/73 931/310/61
+f 923/332/51 922/333/53 895/300/37 898/277/56
+f 918/334/13 887/281/40 889/303/57 919/302/14
+f 888/329/63 886/314/77 882/262/2
+f 921/297/46 910/286/45 909/269/29 920/270/30
+f 930/335/72 897/258/1 927/257/19
+f 930/330/72 927/336/19 928/316/65 929/331/73
+f 935/337/60 937/275/35 897/258/1
+f 936/305/58 933/311/62 944/253/15 945/256/18
+f 933/311/62 931/310/61 943/320/69 944/253/15
+f 927/336/19 925/338/20 926/317/66 928/316/65
+f 935/337/60 897/258/1 934/283/42
+f 938/305/59 936/304/58 945/298/18 946/256/55
+f 911/254/16 910/286/45 913/296/54 912/255/17
+f 894/261/22 892/339/39 882/262/2
+f 932/284/43 897/258/1 930/335/72
+f 914/255/52 912/299/17 913/340/54 915/296/50
+f 916/341/48 923/342/51 898/322/56 883/264/24
+f 939/274/34 946/326/55 914/294/52 901/271/31
+f 917/343/74 916/341/48 883/264/24 885/263/23
+f 881/324/75 899/260/21 882/262/2
+f 938/325/59 924/321/70 896/344/36 937/345/35
+f 935/306/60 934/308/42 933/311/62 936/305/58
+f 904/250/12 902/313/64 917/346/74 918/251/13
+f 929/331/73 942/327/71 943/320/69 931/310/61
+f 913/340/54 922/347/53 923/295/51 915/296/50
+f 926/317/66 925/338/20 896/344/36 924/321/70
+f 916/290/48 917/346/74 902/313/64 900/291/49
+f 918/334/13 917/343/74 885/263/23 887/281/40
+f 929/331/73 928/316/65 941/318/67 942/327/71
+f 922/332/53 921/287/46 893/278/38 895/277/37
+f 941/318/67 905/268/28 906/267/27 942/327/71
+f 903/272/32 901/271/31 900/291/49 902/313/64
+f 889/303/57 888/312/63 890/319/68 891/289/47
+f 890/328/68 882/262/2 892/339/39
+f 973/249/11 970/250/12 984/251/13 985/252/14
+f 1010/253/15 977/254/16 978/255/17 1011/256/18
+f 993/257/19 963/258/1 991/259/20
+f 965/260/21 960/261/22 948/262/2
+f 951/263/23 949/264/24 947/265/75 950/266/26
+f 970/250/12 973/249/11 972/267/27 971/268/28
+f 975/269/29 973/249/11 985/252/14 986/270/30
+f 967/271/31 969/272/32 1006/273/33 1005/274/34
+f 1003/275/35 962/276/36 963/258/1
+f 961/277/37 959/278/38 958/279/39 960/280/22
+f 953/281/40 951/263/23 950/266/26 952/282/77
+f 1000/283/42 963/258/1 998/284/43
+f 977/254/16 974/285/44 975/269/29 976/286/45
+f 987/287/46 986/288/30 957/289/47 959/278/38
+f 972/267/27 973/249/11 975/269/29 974/285/44
+f 991/259/20 963/258/1 962/276/36
+f 982/290/48 966/291/49 981/292/50 989/293/51
+f 981/292/50 966/291/49 967/271/31 980/294/52
+f 988/295/53 979/296/54 976/286/45 987/297/46
+f 1012/256/55 1011/298/18 978/299/17 980/255/52
+f 961/300/37 960/301/22 965/280/21 964/277/56
+f 986/288/30 985/302/14 955/303/57 957/289/47
+f 1002/304/58 1004/305/59 1003/306/35 1001/307/60
+f 1000/308/42 998/309/43 997/310/61 999/311/62
+f 955/303/57 953/281/40 952/282/77 954/312/63
+f 971/268/28 969/272/32 968/313/64 970/250/12
+f 952/314/77 950/315/26 948/262/2
+f 994/316/65 992/317/66 1006/273/33 1007/318/67
+f 959/278/38 957/289/47 956/319/68 958/279/39
+f 974/285/44 977/254/16 1010/253/15 1009/320/69
+f 1005/274/34 1006/273/33 992/317/66 990/321/70
+f 947/265/75 949/264/24 964/322/56 965/323/21
+f 950/315/26 947/324/75 948/262/2
+f 1005/274/34 990/321/70 1004/325/59 1012/326/55
+f 969/272/32 971/268/28 1007/318/67 1006/273/33
+f 1009/320/69 1008/327/71 972/267/27 974/285/44
+f 956/328/68 954/329/63 948/262/2
+f 998/309/43 996/330/72 995/331/73 997/310/61
+f 989/332/51 988/333/53 961/300/37 964/277/56
+f 984/334/13 953/281/40 955/303/57 985/302/14
+f 954/329/63 952/314/77 948/262/2
+f 987/297/46 976/286/45 975/269/29 986/270/30
+f 996/335/72 963/258/1 993/257/19
+f 996/330/72 993/336/19 994/316/65 995/331/73
+f 1001/337/60 1003/275/35 963/258/1
+f 1002/305/58 999/311/62 1010/253/15 1011/256/18
+f 999/311/62 997/310/61 1009/320/69 1010/253/15
+f 993/336/19 991/338/20 992/317/66 994/316/65
+f 1001/337/60 963/258/1 1000/283/42
+f 1004/305/59 1002/304/58 1011/298/18 1012/256/55
+f 977/254/16 976/286/45 979/296/54 978/255/17
+f 960/261/22 958/339/39 948/262/2
+f 998/284/43 963/258/1 996/335/72
+f 980/255/52 978/299/17 979/340/54 981/296/50
+f 982/341/48 989/342/51 964/322/56 949/264/24
+f 1005/274/34 1012/326/55 980/294/52 967/271/31
+f 983/343/74 982/341/48 949/264/24 951/263/23
+f 947/324/75 965/260/21 948/262/2
+f 1004/325/59 990/321/70 962/344/36 1003/345/35
+f 1001/306/60 1000/308/42 999/311/62 1002/305/58
+f 970/250/12 968/313/64 983/346/74 984/251/13
+f 995/331/73 1008/327/71 1009/320/69 997/310/61
+f 979/340/54 988/347/53 989/295/51 981/296/50
+f 992/317/66 991/338/20 962/344/36 990/321/70
+f 982/290/48 983/346/74 968/313/64 966/291/49
+f 984/334/13 983/343/74 951/263/23 953/281/40
+f 995/331/73 994/316/65 1007/318/67 1008/327/71
+f 988/332/53 987/287/46 959/278/38 961/277/37
+f 1007/318/67 971/268/28 972/267/27 1008/327/71
+f 969/272/32 967/271/31 966/291/49 968/313/64
+f 955/303/57 954/312/63 956/319/68 957/289/47
+f 956/328/68 948/262/2 958/339/39
+f 1795/328/68 1803/262/2 1793/339/39
+f 1796/303/57 1797/312/63 1795/319/68 1794/289/47
+f 1782/272/32 1784/271/31 1785/291/49 1783/313/64
+f 1744/318/67 1780/268/28 1779/267/79 1743/327/71
+f 1763/332/53 1764/287/46 1792/278/38 1790/277/37
+f 1756/331/73 1757/316/65 1744/318/67 1743/327/71
+f 1767/334/13 1768/343/74 1800/263/23 1798/281/40
+f 1769/290/48 1768/346/74 1783/313/64 1785/291/49
+f 1759/317/66 1760/338/20 1789/344/36 1761/321/70
+f 1772/340/54 1763/347/53 1762/295/51 1770/296/50
+f 1756/331/73 1743/327/71 1742/320/69 1754/310/61
+f 1781/250/12 1783/313/64 1768/346/74 1767/251/13
+f 1750/306/60 1751/308/42 1752/311/62 1749/305/58
+f 1747/325/59 1761/321/70 1789/344/36 1748/345/35
+f 1804/324/25 1786/260/21 1803/262/2
+f 1768/343/74 1769/341/48 1802/264/24 1800/263/23
+f 1746/274/34 1739/326/55 1771/294/52 1784/271/31
+f 1769/341/48 1762/342/51 1787/322/56 1802/264/24
+f 1771/255/52 1773/299/17 1772/340/54 1770/296/50
+f 1753/284/43 1788/258/1 1755/335/72
+f 1791/261/22 1793/339/39 1803/262/2
+f 1774/254/16 1775/286/45 1772/296/54 1773/255/17
+f 1747/305/59 1749/304/58 1740/298/18 1739/256/55
+f 1750/337/60 1788/258/1 1751/283/42
+f 1758/336/19 1760/338/20 1759/317/66 1757/316/65
+f 1752/311/62 1754/310/61 1742/320/69 1741/253/15
+f 1749/305/58 1752/311/62 1741/253/15 1740/256/18
+f 1750/337/60 1748/275/35 1788/258/1
+f 1755/330/72 1758/336/19 1757/316/65 1756/331/73
+f 1755/335/72 1788/258/1 1758/257/19
+f 1764/297/46 1775/286/45 1776/269/29 1765/270/30
+f 1797/329/63 1799/314/77 1803/262/2
+f 1767/334/13 1798/281/40 1796/303/57 1766/302/14
+f 1762/332/51 1763/333/53 1790/300/37 1787/277/56
+f 1753/309/43 1755/330/72 1756/331/73 1754/310/61
+f 1795/328/68 1797/329/63 1803/262/2
+f 1742/320/69 1743/327/71 1779/267/79 1777/285/44
+f 1782/272/32 1780/268/28 1744/318/67 1745/273/33
+f 1746/274/34 1761/321/70 1747/325/59 1739/326/55
+f 1801/315/26 1804/324/25 1803/262/2
+f 1804/265/25 1802/264/24 1787/322/56 1786/323/21
+f 1746/274/34 1745/273/33 1759/317/66 1761/321/70
+f 1777/285/44 1774/254/16 1741/253/15 1742/320/69
+f 1792/278/38 1794/289/47 1795/319/68 1793/279/39
+f 1757/316/65 1759/317/66 1745/273/33 1744/318/67
+f 1799/314/77 1801/315/26 1803/262/2
+f 1780/268/28 1782/272/32 1783/313/64 1781/250/12
+f 1796/303/57 1798/281/40 1799/282/77 1797/312/63
+f 1751/308/42 1753/309/43 1754/310/61 1752/311/62
+f 1749/304/58 1747/305/59 1748/306/35 1750/307/60
+f 1765/288/30 1766/302/14 1796/303/57 1794/289/47
+f 1790/300/37 1791/301/22 1786/280/21 1787/277/56
+f 1739/256/55 1740/298/18 1773/299/17 1771/255/52
+f 1763/295/53 1772/296/54 1775/286/45 1764/297/46
+f 1770/292/50 1785/291/49 1784/271/31 1771/294/52
+f 1769/290/48 1785/291/49 1770/292/50 1762/293/51
+f 1760/259/20 1788/258/1 1789/276/36
+f 1779/267/79 1778/249/11 1776/269/29 1777/285/44
+f 1764/287/46 1765/288/30 1794/289/47 1792/278/38
+f 1774/254/16 1777/285/44 1776/269/29 1775/286/45
+f 1751/283/42 1788/258/1 1753/284/43
+f 1798/281/40 1800/263/23 1801/266/26 1799/282/77
+f 1790/277/37 1792/278/38 1793/279/39 1791/280/22
+f 1748/275/35 1789/276/36 1788/258/1
+f 1784/271/31 1782/272/32 1745/273/33 1746/274/34
+f 1776/269/29 1778/249/11 1766/252/14 1765/270/30
+f 1781/250/12 1778/249/11 1779/267/79 1780/268/28
+f 1800/263/23 1802/264/24 1804/265/25 1801/266/26
+f 1786/260/21 1791/261/22 1803/262/2
+f 1758/257/19 1788/258/1 1760/259/20
+f 1741/253/15 1774/254/16 1773/255/17 1740/256/18
+f 1778/249/11 1781/250/12 1767/251/13 1766/252/14
+f 1861/328/68 1869/262/2 1859/339/39
+f 1862/303/57 1863/312/63 1861/319/68 1860/289/47
+f 1848/272/32 1850/271/31 1851/291/49 1849/313/64
+f 1810/318/67 1846/268/28 1845/267/79 1809/327/71
+f 1829/332/53 1830/287/46 1858/278/38 1856/277/37
+f 1822/331/73 1823/316/65 1810/318/67 1809/327/71
+f 1833/334/13 1834/343/74 1866/263/23 1864/281/40
+f 1835/290/48 1834/346/74 1849/313/64 1851/291/49
+f 1825/317/66 1826/338/20 1855/344/36 1827/321/70
+f 1838/340/54 1829/347/53 1828/295/51 1836/296/50
+f 1822/331/73 1809/327/71 1808/320/69 1820/310/61
+f 1847/250/12 1849/313/64 1834/346/74 1833/251/13
+f 1816/306/60 1817/308/42 1818/311/62 1815/305/58
+f 1813/325/59 1827/321/70 1855/344/36 1814/345/35
+f 1870/324/75 1852/260/21 1869/262/2
+f 1834/343/74 1835/341/48 1868/264/24 1866/263/23
+f 1812/274/34 1805/326/55 1837/294/52 1850/271/31
+f 1835/341/48 1828/342/51 1853/322/56 1868/264/24
+f 1837/255/52 1839/299/17 1838/340/54 1836/296/50
+f 1819/284/43 1854/258/1 1821/335/72
+f 1857/261/22 1859/339/39 1869/262/2
+f 1840/254/16 1841/286/45 1838/296/54 1839/255/17
+f 1813/305/59 1815/304/58 1806/298/18 1805/256/55
+f 1816/337/60 1854/258/1 1817/283/42
+f 1824/336/19 1826/338/20 1825/317/66 1823/316/65
+f 1818/311/62 1820/310/61 1808/320/69 1807/253/15
+f 1815/305/58 1818/311/62 1807/253/15 1806/256/18
+f 1816/337/60 1814/275/35 1854/258/1
+f 1821/330/72 1824/336/19 1823/316/65 1822/331/73
+f 1821/335/72 1854/258/1 1824/257/19
+f 1830/297/46 1841/286/45 1842/269/29 1831/270/30
+f 1863/329/63 1865/314/77 1869/262/2
+f 1833/334/13 1864/281/40 1862/303/57 1832/302/14
+f 1828/332/51 1829/333/53 1856/300/37 1853/277/56
+f 1819/309/43 1821/330/72 1822/331/73 1820/310/61
+f 1861/328/68 1863/329/63 1869/262/2
+f 1808/320/69 1809/327/71 1845/267/79 1843/285/44
+f 1848/272/32 1846/268/28 1810/318/67 1811/273/33
+f 1812/274/34 1827/321/70 1813/325/59 1805/326/55
+f 1867/315/76 1870/324/75 1869/262/2
+f 1870/265/75 1868/264/24 1853/322/56 1852/323/21
+f 1812/274/34 1811/273/33 1825/317/66 1827/321/70
+f 1843/285/44 1840/254/16 1807/253/15 1808/320/69
+f 1858/278/38 1860/289/47 1861/319/68 1859/279/39
+f 1823/316/65 1825/317/66 1811/273/33 1810/318/67
+f 1865/314/77 1867/315/76 1869/262/2
+f 1846/268/28 1848/272/32 1849/313/64 1847/250/12
+f 1862/303/57 1864/281/40 1865/282/77 1863/312/63
+f 1817/308/42 1819/309/43 1820/310/61 1818/311/62
+f 1815/304/58 1813/305/59 1814/306/35 1816/307/60
+f 1831/288/30 1832/302/14 1862/303/57 1860/289/47
+f 1856/300/37 1857/301/22 1852/280/21 1853/277/56
+f 1805/256/55 1806/298/18 1839/299/17 1837/255/52
+f 1829/295/53 1838/296/54 1841/286/45 1830/297/46
+f 1836/292/50 1851/291/49 1850/271/31 1837/294/52
+f 1835/290/48 1851/291/49 1836/292/50 1828/293/51
+f 1826/259/20 1854/258/1 1855/276/36
+f 1845/267/79 1844/249/11 1842/269/29 1843/285/44
+f 1830/287/46 1831/288/30 1860/289/47 1858/278/38
+f 1840/254/16 1843/285/44 1842/269/29 1841/286/45
+f 1817/283/42 1854/258/1 1819/284/43
+f 1864/281/40 1866/263/23 1867/266/76 1865/282/77
+f 1856/277/37 1858/278/38 1859/279/39 1857/280/22
+f 1814/275/35 1855/276/36 1854/258/1
+f 1850/271/31 1848/272/32 1811/273/33 1812/274/34
+f 1842/269/29 1844/249/11 1832/252/14 1831/270/30
+f 1847/250/12 1844/249/11 1845/267/79 1846/268/28
+f 1866/263/23 1868/264/24 1870/265/75 1867/266/76
+f 1852/260/21 1857/261/22 1869/262/2
+f 1824/257/19 1854/258/1 1826/259/20
+f 1807/253/15 1840/254/16 1839/255/17 1806/256/18
+f 1844/249/11 1847/250/12 1833/251/13 1832/252/14
+f 2125/328/68 2133/262/2 2123/339/39
+f 2126/303/57 2127/312/63 2125/319/68 2124/289/47
+f 2112/272/32 2114/271/31 2115/291/49 2113/313/64
+f 2074/318/67 2110/268/28 2109/267/27 2073/327/71
+f 2093/332/53 2094/287/46 2122/278/38 2120/277/37
+f 2086/331/73 2087/316/65 2074/318/67 2073/327/71
+f 2097/334/13 2098/343/74 2130/263/23 2128/281/40
+f 2099/290/48 2098/346/74 2113/313/64 2115/291/49
+f 2089/317/66 2090/338/20 2119/344/36 2091/321/70
+f 2102/340/54 2093/347/53 2092/295/51 2100/296/50
+f 2086/331/73 2073/327/71 2072/320/69 2084/310/61
+f 2111/250/12 2113/313/64 2098/346/74 2097/251/13
+f 2080/306/60 2081/308/42 2082/311/62 2079/305/58
+f 2077/325/59 2091/321/70 2119/344/36 2078/345/35
+f 2134/324/75 2116/260/21 2133/262/2
+f 2098/343/74 2099/341/48 2132/264/24 2130/263/23
+f 2076/274/34 2069/326/55 2101/294/52 2114/271/31
+f 2099/341/48 2092/342/51 2117/322/56 2132/264/24
+f 2101/255/52 2103/299/17 2102/340/54 2100/296/50
+f 2083/284/43 2118/258/1 2085/335/72
+f 2121/261/22 2123/339/39 2133/262/2
+f 2104/254/16 2105/286/45 2102/296/54 2103/255/17
+f 2077/305/59 2079/304/58 2070/298/18 2069/256/55
+f 2080/337/60 2118/258/1 2081/283/42
+f 2088/336/19 2090/338/20 2089/317/66 2087/316/65
+f 2082/311/62 2084/310/61 2072/320/69 2071/253/15
+f 2079/305/58 2082/311/62 2071/253/15 2070/256/18
+f 2080/337/60 2078/275/35 2118/258/1
+f 2085/330/72 2088/336/19 2087/316/65 2086/331/73
+f 2085/335/72 2118/258/1 2088/257/19
+f 2094/297/46 2105/286/45 2106/269/29 2095/270/30
+f 2127/329/63 2129/314/77 2133/262/2
+f 2097/334/13 2128/281/40 2126/303/57 2096/302/14
+f 2092/332/51 2093/333/53 2120/300/37 2117/277/56
+f 2083/309/43 2085/330/72 2086/331/73 2084/310/61
+f 2125/328/68 2127/329/63 2133/262/2
+f 2072/320/69 2073/327/71 2109/267/27 2107/285/44
+f 2112/272/32 2110/268/28 2074/318/67 2075/273/33
+f 2076/274/34 2091/321/70 2077/325/59 2069/326/55
+f 2131/315/26 2134/324/75 2133/262/2
+f 2134/265/75 2132/264/24 2117/322/56 2116/323/21
+f 2076/274/34 2075/273/33 2089/317/66 2091/321/70
+f 2107/285/44 2104/254/16 2071/253/15 2072/320/69
+f 2122/278/38 2124/289/47 2125/319/68 2123/279/39
+f 2087/316/65 2089/317/66 2075/273/33 2074/318/67
+f 2129/314/77 2131/315/26 2133/262/2
+f 2110/268/28 2112/272/32 2113/313/64 2111/250/12
+f 2126/303/57 2128/281/40 2129/282/77 2127/312/63
+f 2081/308/42 2083/309/43 2084/310/61 2082/311/62
+f 2079/304/58 2077/305/59 2078/306/35 2080/307/60
+f 2095/288/30 2096/302/14 2126/303/57 2124/289/47
+f 2120/300/37 2121/301/22 2116/280/21 2117/277/56
+f 2069/256/55 2070/298/18 2103/299/17 2101/255/52
+f 2093/295/53 2102/296/54 2105/286/45 2094/297/46
+f 2100/292/50 2115/291/49 2114/271/31 2101/294/52
+f 2099/290/48 2115/291/49 2100/292/50 2092/293/51
+f 2090/259/20 2118/258/1 2119/276/36
+f 2109/267/27 2108/249/11 2106/269/29 2107/285/44
+f 2094/287/46 2095/288/30 2124/289/47 2122/278/38
+f 2104/254/16 2107/285/44 2106/269/29 2105/286/45
+f 2081/283/42 2118/258/1 2083/284/43
+f 2128/281/40 2130/263/23 2131/266/26 2129/282/77
+f 2120/277/37 2122/278/38 2123/279/39 2121/280/22
+f 2078/275/35 2119/276/36 2118/258/1
+f 2114/271/31 2112/272/32 2075/273/33 2076/274/34
+f 2106/269/29 2108/249/11 2096/252/14 2095/270/30
+f 2111/250/12 2108/249/11 2109/267/27 2110/268/28
+f 2130/263/23 2132/264/24 2134/265/75 2131/266/26
+f 2116/260/21 2121/261/22 2133/262/2
+f 2088/257/19 2118/258/1 2090/259/20
+f 2071/253/15 2104/254/16 2103/255/17 2070/256/18
+f 2108/249/11 2111/250/12 2097/251/13 2096/252/14
+g bottle.1_Cylinder.007_bottle.1_Cylinder.007_bottles-burgundy
+f 1039/249/11 1036/250/12 1050/251/13 1051/252/14
+f 1076/253/15 1043/254/16 1044/255/17 1077/256/18
+f 1059/257/19 1029/258/1 1057/259/20
+f 1031/260/21 1026/261/22 1014/262/2
+f 1017/263/23 1015/264/24 1013/265/75 1016/266/26
+f 1036/250/12 1039/249/11 1038/267/27 1037/268/28
+f 1041/269/29 1039/249/11 1051/252/14 1052/270/30
+f 1033/271/31 1035/272/32 1072/273/33 1071/274/34
+f 1069/275/35 1028/276/36 1029/258/1
+f 1027/277/37 1025/278/38 1024/279/39 1026/280/22
+f 1019/281/40 1017/263/23 1016/266/26 1018/282/77
+f 1066/283/42 1029/258/1 1064/284/43
+f 1043/254/16 1040/285/44 1041/269/29 1042/286/45
+f 1053/287/46 1052/288/30 1023/289/47 1025/278/38
+f 1038/267/27 1039/249/11 1041/269/29 1040/285/44
+f 1057/259/20 1029/258/1 1028/276/36
+f 1048/290/48 1032/291/49 1047/292/50 1055/293/51
+f 1047/292/50 1032/291/49 1033/271/31 1046/294/52
+f 1054/295/53 1045/296/80 1042/286/45 1053/297/46
+f 1078/256/55 1077/298/18 1044/299/17 1046/255/52
+f 1027/300/37 1026/301/22 1031/280/21 1030/277/56
+f 1052/288/30 1051/302/14 1021/303/57 1023/289/47
+f 1068/304/58 1070/305/59 1069/306/35 1067/307/60
+f 1066/308/42 1064/309/43 1063/310/61 1065/311/62
+f 1021/303/57 1019/281/40 1018/282/77 1020/312/63
+f 1037/268/28 1035/272/32 1034/313/64 1036/250/12
+f 1018/314/77 1016/315/26 1014/262/2
+f 1060/316/65 1058/317/66 1072/273/33 1073/318/67
+f 1025/278/38 1023/289/47 1022/319/68 1024/279/39
+f 1040/285/44 1043/254/16 1076/253/15 1075/320/69
+f 1071/274/34 1072/273/33 1058/317/66 1056/321/70
+f 1013/265/75 1015/264/24 1030/322/56 1031/323/21
+f 1016/315/26 1013/324/75 1014/262/2
+f 1071/274/34 1056/321/70 1070/325/59 1078/326/55
+f 1035/272/32 1037/268/28 1073/318/67 1072/273/33
+f 1075/320/69 1074/327/71 1038/267/27 1040/285/44
+f 1022/328/68 1020/329/63 1014/262/2
+f 1064/309/43 1062/330/72 1061/331/73 1063/310/61
+f 1055/332/51 1054/333/53 1027/300/37 1030/277/56
+f 1050/334/13 1019/281/40 1021/303/57 1051/302/14
+f 1020/329/63 1018/314/77 1014/262/2
+f 1053/297/46 1042/286/45 1041/269/29 1052/270/30
+f 1062/335/72 1029/258/1 1059/257/19
+f 1062/330/72 1059/336/19 1060/316/65 1061/331/73
+f 1067/337/60 1069/275/35 1029/258/1
+f 1068/305/58 1065/311/62 1076/253/15 1077/256/18
+f 1065/311/62 1063/310/61 1075/320/69 1076/253/15
+f 1059/336/19 1057/338/20 1058/317/66 1060/316/65
+f 1067/337/60 1029/258/1 1066/283/42
+f 1070/305/59 1068/304/58 1077/298/18 1078/256/55
+f 1043/254/16 1042/286/45 1045/296/80 1044/255/17
+f 1026/261/22 1024/339/39 1014/262/2
+f 1064/284/43 1029/258/1 1062/335/72
+f 1046/255/52 1044/299/17 1045/340/80 1047/296/50
+f 1048/341/48 1055/342/51 1030/322/56 1015/264/24
+f 1071/274/34 1078/326/55 1046/294/52 1033/271/31
+f 1049/343/74 1048/341/48 1015/264/24 1017/263/23
+f 1013/324/75 1031/260/21 1014/262/2
+f 1070/325/59 1056/321/70 1028/344/36 1069/345/35
+f 1067/306/60 1066/308/42 1065/311/62 1068/305/58
+f 1036/250/12 1034/313/64 1049/346/74 1050/251/13
+f 1061/331/73 1074/327/71 1075/320/69 1063/310/61
+f 1045/340/80 1054/347/53 1055/295/51 1047/296/50
+f 1058/317/66 1057/338/20 1028/344/36 1056/321/70
+f 1048/290/48 1049/346/74 1034/313/64 1032/291/49
+f 1050/334/13 1049/343/74 1017/263/23 1019/281/40
+f 1061/331/73 1060/316/65 1073/318/67 1074/327/71
+f 1054/332/53 1053/287/46 1025/278/38 1027/277/37
+f 1073/318/67 1037/268/28 1038/267/27 1074/327/71
+f 1035/272/32 1033/271/31 1032/291/49 1034/313/64
+f 1021/303/57 1020/312/63 1022/319/68 1023/289/47
+f 1022/328/68 1014/262/2 1024/339/39
+f 1105/249/11 1102/250/12 1116/251/13 1117/252/14
+f 1142/253/15 1109/254/16 1110/255/17 1143/256/18
+f 1125/257/19 1095/258/1 1123/259/20
+f 1097/260/21 1092/261/22 1080/262/2
+f 1083/263/23 1081/264/24 1079/265/25 1082/266/26
+f 1102/250/12 1105/249/11 1104/267/79 1103/268/28
+f 1107/269/29 1105/249/11 1117/252/14 1118/270/30
+f 1099/271/31 1101/272/32 1138/273/33 1137/274/34
+f 1135/275/35 1094/276/36 1095/258/1
+f 1093/277/37 1091/278/38 1090/279/39 1092/280/22
+f 1085/281/40 1083/263/23 1082/266/26 1084/282/77
+f 1132/283/42 1095/258/1 1130/284/43
+f 1109/254/16 1106/285/44 1107/269/29 1108/286/45
+f 1119/287/46 1118/288/30 1089/289/47 1091/278/38
+f 1104/267/79 1105/249/11 1107/269/29 1106/285/44
+f 1123/259/20 1095/258/1 1094/276/36
+f 1114/290/48 1098/291/49 1113/292/50 1121/293/51
+f 1113/292/50 1098/291/49 1099/271/31 1112/294/52
+f 1120/295/53 1111/296/54 1108/286/45 1119/297/46
+f 1144/256/55 1143/298/18 1110/299/17 1112/255/52
+f 1093/300/37 1092/301/22 1097/280/21 1096/277/56
+f 1118/288/30 1117/302/14 1087/303/57 1089/289/47
+f 1134/304/58 1136/305/59 1135/306/35 1133/307/60
+f 1132/308/42 1130/309/43 1129/310/61 1131/311/62
+f 1087/303/57 1085/281/40 1084/282/77 1086/312/63
+f 1103/268/28 1101/272/32 1100/313/64 1102/250/12
+f 1084/314/77 1082/315/26 1080/262/2
+f 1126/316/65 1124/317/66 1138/273/33 1139/318/67
+f 1091/278/38 1089/289/47 1088/319/68 1090/279/39
+f 1106/285/44 1109/254/16 1142/253/15 1141/320/69
+f 1137/274/34 1138/273/33 1124/317/66 1122/321/70
+f 1079/265/25 1081/264/24 1096/322/56 1097/323/21
+f 1082/315/26 1079/324/25 1080/262/2
+f 1137/274/34 1122/321/70 1136/325/59 1144/326/55
+f 1101/272/32 1103/268/28 1139/318/67 1138/273/33
+f 1141/320/69 1140/327/71 1104/267/79 1106/285/44
+f 1088/328/68 1086/329/63 1080/262/2
+f 1130/309/43 1128/330/72 1127/331/73 1129/310/61
+f 1121/332/51 1120/333/53 1093/300/37 1096/277/56
+f 1116/334/13 1085/281/40 1087/303/57 1117/302/14
+f 1086/329/63 1084/314/77 1080/262/2
+f 1119/297/46 1108/286/45 1107/269/29 1118/270/30
+f 1128/335/72 1095/258/1 1125/257/19
+f 1128/330/72 1125/336/19 1126/316/65 1127/331/73
+f 1133/337/60 1135/275/35 1095/258/1
+f 1134/305/58 1131/311/62 1142/253/15 1143/256/18
+f 1131/311/62 1129/310/61 1141/320/69 1142/253/15
+f 1125/336/19 1123/338/20 1124/317/66 1126/316/65
+f 1133/337/60 1095/258/1 1132/283/42
+f 1136/305/59 1134/304/58 1143/298/18 1144/256/55
+f 1109/254/16 1108/286/45 1111/296/54 1110/255/17
+f 1092/261/22 1090/339/39 1080/262/2
+f 1130/284/43 1095/258/1 1128/335/72
+f 1112/255/52 1110/299/17 1111/340/54 1113/296/50
+f 1114/341/48 1121/342/51 1096/322/56 1081/264/24
+f 1137/274/34 1144/326/55 1112/294/52 1099/271/31
+f 1115/343/74 1114/341/48 1081/264/24 1083/263/23
+f 1079/324/25 1097/260/21 1080/262/2
+f 1136/325/59 1122/321/70 1094/344/36 1135/345/35
+f 1133/306/60 1132/308/42 1131/311/62 1134/305/58
+f 1102/250/12 1100/313/64 1115/346/74 1116/251/13
+f 1127/331/73 1140/327/71 1141/320/69 1129/310/61
+f 1111/340/54 1120/347/53 1121/295/51 1113/296/50
+f 1124/317/66 1123/338/20 1094/344/36 1122/321/70
+f 1114/290/48 1115/346/74 1100/313/64 1098/291/49
+f 1116/334/13 1115/343/74 1083/263/23 1085/281/40
+f 1127/331/73 1126/316/65 1139/318/67 1140/327/71
+f 1120/332/53 1119/287/46 1091/278/38 1093/277/37
+f 1139/318/67 1103/268/28 1104/267/79 1140/327/71
+f 1101/272/32 1099/271/31 1098/291/49 1100/313/64
+f 1087/303/57 1086/312/63 1088/319/68 1089/289/47
+f 1088/328/68 1080/262/2 1090/339/39
+f 1369/249/11 1366/250/12 1380/251/13 1381/252/14
+f 1406/253/15 1373/254/16 1374/255/17 1407/256/18
+f 1389/257/19 1359/258/1 1387/259/20
+f 1361/260/21 1356/261/22 1344/262/2
+f 1347/263/23 1345/264/24 1343/265/75 1346/266/76
+f 1366/250/12 1369/249/11 1368/267/27 1367/268/28
+f 1371/269/29 1369/249/11 1381/252/14 1382/270/30
+f 1363/271/31 1365/272/32 1402/273/33 1401/274/34
+f 1399/275/35 1358/276/36 1359/258/1
+f 1357/277/37 1355/278/38 1354/279/39 1356/280/22
+f 1349/281/40 1347/263/23 1346/266/76 1348/282/77
+f 1396/283/42 1359/258/1 1394/284/43
+f 1373/254/16 1370/285/44 1371/269/29 1372/286/45
+f 1383/287/46 1382/288/30 1353/289/47 1355/278/38
+f 1368/267/27 1369/249/11 1371/269/29 1370/285/44
+f 1387/259/20 1359/258/1 1358/276/36
+f 1378/290/48 1362/291/49 1377/292/50 1385/293/51
+f 1377/292/50 1362/291/49 1363/271/31 1376/294/52
+f 1384/295/53 1375/296/54 1372/286/45 1383/297/46
+f 1408/256/55 1407/298/18 1374/299/17 1376/255/52
+f 1357/300/37 1356/301/22 1361/280/21 1360/277/56
+f 1382/288/30 1381/302/14 1351/303/57 1353/289/47
+f 1398/304/58 1400/305/59 1399/306/35 1397/307/60
+f 1396/308/42 1394/309/43 1393/310/61 1395/311/62
+f 1351/303/57 1349/281/40 1348/282/77 1350/312/63
+f 1367/268/28 1365/272/32 1364/313/64 1366/250/12
+f 1348/314/77 1346/315/76 1344/262/2
+f 1390/316/65 1388/317/66 1402/273/33 1403/318/67
+f 1355/278/38 1353/289/47 1352/319/68 1354/279/39
+f 1370/285/44 1373/254/16 1406/253/15 1405/320/69
+f 1401/274/34 1402/273/33 1388/317/66 1386/321/70
+f 1343/265/75 1345/264/24 1360/322/56 1361/323/21
+f 1346/315/76 1343/324/75 1344/262/2
+f 1401/274/34 1386/321/70 1400/325/59 1408/326/55
+f 1365/272/32 1367/268/28 1403/318/67 1402/273/33
+f 1405/320/69 1404/327/71 1368/267/27 1370/285/44
+f 1352/328/68 1350/329/63 1344/262/2
+f 1394/309/43 1392/330/72 1391/331/73 1393/310/61
+f 1385/332/51 1384/333/53 1357/300/37 1360/277/56
+f 1380/334/13 1349/281/40 1351/303/57 1381/302/14
+f 1350/329/63 1348/314/77 1344/262/2
+f 1383/297/46 1372/286/45 1371/269/29 1382/270/30
+f 1392/335/72 1359/258/1 1389/257/19
+f 1392/330/72 1389/336/19 1390/316/65 1391/331/73
+f 1397/337/60 1399/275/35 1359/258/1
+f 1398/305/58 1395/311/62 1406/253/15 1407/256/18
+f 1395/311/62 1393/310/61 1405/320/69 1406/253/15
+f 1389/336/19 1387/338/20 1388/317/66 1390/316/65
+f 1397/337/60 1359/258/1 1396/283/42
+f 1400/305/59 1398/304/58 1407/298/18 1408/256/55
+f 1373/254/16 1372/286/45 1375/296/54 1374/255/17
+f 1356/261/22 1354/339/39 1344/262/2
+f 1394/284/43 1359/258/1 1392/335/72
+f 1376/255/52 1374/299/17 1375/340/54 1377/296/50
+f 1378/341/48 1385/342/51 1360/322/56 1345/264/24
+f 1401/274/34 1408/326/55 1376/294/52 1363/271/31
+f 1379/343/74 1378/341/48 1345/264/24 1347/263/23
+f 1343/324/75 1361/260/21 1344/262/2
+f 1400/325/59 1386/321/70 1358/344/36 1399/345/35
+f 1397/306/60 1396/308/42 1395/311/62 1398/305/58
+f 1366/250/12 1364/313/64 1379/346/74 1380/251/13
+f 1391/331/73 1404/327/71 1405/320/69 1393/310/61
+f 1375/340/54 1384/347/53 1385/295/51 1377/296/50
+f 1388/317/66 1387/338/20 1358/344/36 1386/321/70
+f 1378/290/48 1379/346/74 1364/313/64 1362/291/49
+f 1380/334/13 1379/343/74 1347/263/23 1349/281/40
+f 1391/331/73 1390/316/65 1403/318/67 1404/327/71
+f 1384/332/53 1383/287/46 1355/278/38 1357/277/37
+f 1403/318/67 1367/268/28 1368/267/27 1404/327/71
+f 1365/272/32 1363/271/31 1362/291/49 1364/313/64
+f 1351/303/57 1350/312/63 1352/319/68 1353/289/47
+f 1352/328/68 1344/262/2 1354/339/39
+f 1963/249/11 1960/250/12 1974/251/13 1975/252/14
+f 2000/253/15 1967/254/16 1968/255/17 2001/256/18
+f 1983/257/19 1953/258/1 1981/259/20
+f 1955/260/21 1950/261/22 1938/262/2
+f 1941/263/23 1939/264/24 1937/265/25 1940/266/26
+f 1960/250/12 1963/249/11 1962/267/27 1961/268/28
+f 1965/269/29 1963/249/11 1975/252/14 1976/270/30
+f 1957/271/31 1959/272/32 1996/273/33 1995/274/34
+f 1993/275/35 1952/276/36 1953/258/1
+f 1951/277/37 1949/278/38 1948/279/39 1950/280/22
+f 1943/281/40 1941/263/23 1940/266/26 1942/282/77
+f 1990/283/42 1953/258/1 1988/284/43
+f 1967/254/16 1964/285/44 1965/269/29 1966/286/45
+f 1977/287/46 1976/288/30 1947/289/47 1949/278/38
+f 1962/267/27 1963/249/11 1965/269/29 1964/285/44
+f 1981/259/20 1953/258/1 1952/276/36
+f 1972/290/48 1956/291/49 1971/292/50 1979/293/51
+f 1971/292/50 1956/291/49 1957/271/31 1970/294/52
+f 1978/295/53 1969/296/54 1966/286/45 1977/297/46
+f 2002/256/55 2001/298/18 1968/299/17 1970/255/52
+f 1951/300/37 1950/301/22 1955/280/21 1954/277/56
+f 1976/288/30 1975/302/14 1945/303/57 1947/289/47
+f 1992/304/58 1994/305/59 1993/306/35 1991/307/60
+f 1990/308/42 1988/309/43 1987/310/61 1989/311/62
+f 1945/303/57 1943/281/40 1942/282/77 1944/312/63
+f 1961/268/28 1959/272/32 1958/313/64 1960/250/12
+f 1942/314/77 1940/315/26 1938/262/2
+f 1984/316/65 1982/317/66 1996/273/33 1997/318/67
+f 1949/278/38 1947/289/47 1946/319/68 1948/279/39
+f 1964/285/44 1967/254/16 2000/253/15 1999/320/69
+f 1995/274/34 1996/273/33 1982/317/66 1980/321/70
+f 1937/265/25 1939/264/24 1954/322/56 1955/323/21
+f 1940/315/26 1937/324/25 1938/262/2
+f 1995/274/34 1980/321/70 1994/325/59 2002/326/55
+f 1959/272/32 1961/268/28 1997/318/67 1996/273/33
+f 1999/320/69 1998/327/71 1962/267/27 1964/285/44
+f 1946/328/68 1944/329/63 1938/262/2
+f 1988/309/43 1986/330/72 1985/331/73 1987/310/61
+f 1979/332/51 1978/333/53 1951/300/37 1954/277/56
+f 1974/334/13 1943/281/40 1945/303/57 1975/302/14
+f 1944/329/63 1942/314/77 1938/262/2
+f 1977/297/46 1966/286/45 1965/269/29 1976/270/30
+f 1986/335/72 1953/258/1 1983/257/19
+f 1986/330/72 1983/336/19 1984/316/65 1985/331/73
+f 1991/337/60 1993/275/35 1953/258/1
+f 1992/305/58 1989/311/62 2000/253/15 2001/256/18
+f 1989/311/62 1987/310/61 1999/320/69 2000/253/15
+f 1983/336/19 1981/338/20 1982/317/66 1984/316/65
+f 1991/337/60 1953/258/1 1990/283/42
+f 1994/305/59 1992/304/58 2001/298/18 2002/256/55
+f 1967/254/16 1966/286/45 1969/296/54 1968/255/17
+f 1950/261/22 1948/339/39 1938/262/2
+f 1988/284/43 1953/258/1 1986/335/72
+f 1970/255/52 1968/299/17 1969/340/54 1971/296/50
+f 1972/341/48 1979/342/51 1954/322/56 1939/264/24
+f 1995/274/34 2002/326/55 1970/294/52 1957/271/31
+f 1973/343/74 1972/341/48 1939/264/24 1941/263/23
+f 1937/324/25 1955/260/21 1938/262/2
+f 1994/325/59 1980/321/70 1952/344/36 1993/345/35
+f 1991/306/60 1990/308/42 1989/311/62 1992/305/58
+f 1960/250/12 1958/313/64 1973/346/74 1974/251/13
+f 1985/331/73 1998/327/71 1999/320/69 1987/310/61
+f 1969/340/54 1978/347/53 1979/295/51 1971/296/50
+f 1982/317/66 1981/338/20 1952/344/36 1980/321/70
+f 1972/290/48 1973/346/74 1958/313/64 1956/291/49
+f 1974/334/13 1973/343/74 1941/263/23 1943/281/40
+f 1985/331/73 1984/316/65 1997/318/67 1998/327/71
+f 1978/332/53 1977/287/46 1949/278/38 1951/277/37
+f 1997/318/67 1961/268/28 1962/267/27 1998/327/71
+f 1959/272/32 1957/271/31 1956/291/49 1958/313/64
+f 1945/303/57 1944/312/63 1946/319/68 1947/289/47
+f 1946/328/68 1938/262/2 1948/339/39
+f 2029/249/11 2026/250/12 2040/251/13 2041/252/14
+f 2066/253/15 2033/254/16 2034/255/17 2067/256/18
+f 2049/257/19 2019/258/1 2047/259/20
+f 2021/260/21 2016/261/22 2004/262/2
+f 2007/263/23 2005/264/24 2003/265/75 2006/266/26
+f 2026/250/12 2029/249/11 2028/267/27 2027/268/28
+f 2031/269/29 2029/249/11 2041/252/14 2042/270/30
+f 2023/271/31 2025/272/32 2062/273/33 2061/274/34
+f 2059/275/35 2018/276/36 2019/258/1
+f 2017/277/37 2015/278/38 2014/279/39 2016/280/22
+f 2009/281/40 2007/263/23 2006/266/26 2008/282/77
+f 2056/283/42 2019/258/1 2054/284/43
+f 2033/254/16 2030/285/44 2031/269/29 2032/286/45
+f 2043/287/46 2042/288/30 2013/289/47 2015/278/38
+f 2028/267/27 2029/249/11 2031/269/29 2030/285/44
+f 2047/259/20 2019/258/1 2018/276/36
+f 2038/290/48 2022/291/49 2037/292/50 2045/293/51
+f 2037/292/50 2022/291/49 2023/271/31 2036/294/52
+f 2044/295/53 2035/296/54 2032/286/45 2043/297/46
+f 2068/256/55 2067/298/18 2034/299/17 2036/255/52
+f 2017/300/37 2016/301/22 2021/280/21 2020/277/56
+f 2042/288/30 2041/302/14 2011/303/57 2013/289/47
+f 2058/304/58 2060/305/59 2059/306/35 2057/307/60
+f 2056/308/42 2054/309/43 2053/310/61 2055/311/62
+f 2011/303/57 2009/281/40 2008/282/77 2010/312/63
+f 2027/268/28 2025/272/32 2024/313/64 2026/250/12
+f 2008/314/77 2006/315/26 2004/262/2
+f 2050/316/65 2048/317/66 2062/273/33 2063/318/67
+f 2015/278/38 2013/289/47 2012/319/68 2014/279/39
+f 2030/285/44 2033/254/16 2066/253/15 2065/320/69
+f 2061/274/34 2062/273/33 2048/317/66 2046/321/70
+f 2003/265/75 2005/264/24 2020/322/56 2021/323/21
+f 2006/315/26 2003/324/75 2004/262/2
+f 2061/274/34 2046/321/70 2060/325/59 2068/326/55
+f 2025/272/32 2027/268/28 2063/318/67 2062/273/33
+f 2065/320/69 2064/327/71 2028/267/27 2030/285/44
+f 2012/328/68 2010/329/63 2004/262/2
+f 2054/309/43 2052/330/72 2051/331/73 2053/310/61
+f 2045/332/51 2044/333/53 2017/300/37 2020/277/56
+f 2040/334/13 2009/281/40 2011/303/57 2041/302/14
+f 2010/329/63 2008/314/77 2004/262/2
+f 2043/297/46 2032/286/45 2031/269/29 2042/270/30
+f 2052/335/72 2019/258/1 2049/257/19
+f 2052/330/72 2049/336/19 2050/316/65 2051/331/73
+f 2057/337/60 2059/275/35 2019/258/1
+f 2058/305/58 2055/311/62 2066/253/15 2067/256/18
+f 2055/311/62 2053/310/61 2065/320/69 2066/253/15
+f 2049/336/19 2047/338/20 2048/317/66 2050/316/65
+f 2057/337/60 2019/258/1 2056/283/42
+f 2060/305/59 2058/304/58 2067/298/18 2068/256/55
+f 2033/254/16 2032/286/45 2035/296/54 2034/255/17
+f 2016/261/22 2014/339/39 2004/262/2
+f 2054/284/43 2019/258/1 2052/335/72
+f 2036/255/52 2034/299/17 2035/340/54 2037/296/50
+f 2038/341/48 2045/342/51 2020/322/56 2005/264/24
+f 2061/274/34 2068/326/55 2036/294/52 2023/271/31
+f 2039/343/74 2038/341/48 2005/264/24 2007/263/23
+f 2003/324/75 2021/260/21 2004/262/2
+f 2060/325/59 2046/321/70 2018/344/36 2059/345/35
+f 2057/306/60 2056/308/42 2055/311/62 2058/305/58
+f 2026/250/12 2024/313/64 2039/346/74 2040/251/13
+f 2051/331/73 2064/327/71 2065/320/69 2053/310/61
+f 2035/340/54 2044/347/53 2045/295/51 2037/296/50
+f 2048/317/66 2047/338/20 2018/344/36 2046/321/70
+f 2038/290/48 2039/346/74 2024/313/64 2022/291/49
+f 2040/334/13 2039/343/74 2007/263/23 2009/281/40
+f 2051/331/73 2050/316/65 2063/318/67 2064/327/71
+f 2044/332/53 2043/287/46 2015/278/38 2017/277/37
+f 2063/318/67 2027/268/28 2028/267/27 2064/327/71
+f 2025/272/32 2023/271/31 2022/291/49 2024/313/64
+f 2011/303/57 2010/312/63 2012/319/68 2013/289/47
+f 2012/328/68 2004/262/2 2014/339/39
diff --git a/homedecor_modpack/homedecor/office.lua b/homedecor_modpack/homedecor/office.lua
new file mode 100644
index 0000000..1da21dc
--- /dev/null
+++ b/homedecor_modpack/homedecor/office.lua
@@ -0,0 +1,118 @@
+local S = homedecor.gettext
+
+homedecor.register("filing_cabinet", {
+ description = S("Filing Cabinet"),
+ mesh = "homedecor_filing_cabinet.obj",
+ tiles = {
+ homedecor.plain_wood,
+ "homedecor_filing_cabinet_front.png",
+ "homedecor_filing_cabinet_bottom.png"
+ },
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ infotext=S("Filing cabinet"),
+ inventory = {
+ size=16,
+ lockable=true,
+ },
+})
+
+local desk_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 0.5 }
+}
+homedecor.register("desk", {
+ description = "Desk",
+ mesh = "homedecor_desk.obj",
+ tiles = {
+ homedecor.plain_wood,
+ "homedecor_desk_drawers.png",
+ "homedecor_generic_metal_black.png",
+ },
+ inventory_image = "homedecor_desk_inv.png",
+ selection_box = desk_cbox,
+ collision_box = desk_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ groups = { snappy = 3 },
+ expand = { right="placeholder" },
+ inventory = {
+ size=24,
+ lockable=true,
+ },
+})
+minetest.register_alias("homedecor:desk_r", "air")
+
+local globe_cbox = {
+ type = "fixed",
+ fixed = { -0.4, -0.5, -0.3, 0.3, 0.3, 0.3 }
+}
+
+homedecor.register("desk_globe", {
+ description = "Desk globe",
+ mesh = "homedecor_desk_globe.obj",
+ tiles = {
+ "homedecor_generic_wood_red.png",
+ "homedecor_generic_metal_black.png^[brighten",
+ "homedecor_earth.png"
+ },
+ inventory_image = "homedecor_desk_globe_inv.png",
+ selection_box = globe_cbox,
+ collision_box = globe_cbox,
+ groups = {choppy=2},
+ walkable = false,
+ sounds = default.node_sound_wood_defaults(),
+})
+
+homedecor.register("calendar", {
+ description = "Calendar",
+ mesh = "homedecor_calendar.obj",
+ tiles = {"homedecor_calendar.png"},
+ inventory_image = "homedecor_calendar_inv.png",
+ wield_image = "homedecor_calendar_inv.png",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ selection_box = {
+ type = "wallmounted",
+ wall_side = { -8/16, -8/16, -4/16, -5/16, 5/16, 4/16 },
+ wall_bottom = { -4/16, -8/16, -8/16, 4/16, -5/16, 5/16 },
+ wall_top = { -4/16, 5/16, -8/16, 4/16, 8/16, 5/16 }
+ },
+ groups = {choppy=2,attached_node=1},
+ legacy_wallmounted = true,
+ sounds = default.node_sound_defaults(),
+ infotext = "Date (right-click to update):\n" .. os.date("%Y-%m-%d"), -- ISO 8601 format
+ on_rightclick = function(pos, node, clicker)
+ local meta = minetest.get_meta(pos)
+ local date = os.date("%Y-%m-%d")
+ meta:set_string("infotext", "Date (right-click to update):\n"..date)
+ end
+})
+
+local ofchairs_sbox = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, -8/16, 8/16, 29/32, 8/16 }
+}
+local ofchairs_cbox = {
+ type = "fixed",
+ fixed = {
+ { -5/16, 1/16, -7/16, 5/16, 4/16, 7/16 }, -- seat
+ { -5/16, 4/16, 4/16, 5/16, 29/32, 15/32 }, -- seatback
+ { -1/16, -11/32, -1/16, 1/16, 1/16, 1/16 }, -- cylinder
+ { -8/16, -8/16, -8/16, 8/16, -11/32, 8/16 } -- legs/wheels
+ }
+}
+
+for _, c in pairs({"basic", "upscale"}) do
+ homedecor.register("office_chair_"..c, {
+ description = "Office chair ("..c..")",
+ drawtype = "mesh",
+ tiles = { "homedecor_office_chair_"..c..".png" },
+ mesh = "homedecor_office_chair_"..c..".obj",
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = ofchairs_sbox,
+ collision_box = ofchairs_cbox,
+ expand = { top = "placeholder" },
+ on_rotate = screwdriver.rotate_simple
+ })
+end
diff --git a/homedecor_modpack/homedecor/roofing.lua b/homedecor_modpack/homedecor/roofing.lua
new file mode 100644
index 0000000..df06bd9
--- /dev/null
+++ b/homedecor_modpack/homedecor/roofing.lua
@@ -0,0 +1,318 @@
+local S = homedecor.gettext
+
+minetest.register_node("homedecor:skylight", {
+ description = S("Glass Skylight"),
+ drawtype = "raillike",
+ tiles = { "default_glass.png" },
+ wield_image = "default_glass.png",
+ inventory_image = "homedecor_skylight_inv.png",
+ groups = { snappy = 3 },
+ paramtype = "light",
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = homedecor.nodebox.slab_y(0.1),
+})
+
+minetest.register_node("homedecor:skylight_frosted", {
+ description = S("Glass Skylight Frosted"),
+ drawtype = "raillike",
+ tiles = { "homedecor_skylight_frosted.png" },
+ wield_image = "homedecor_skylight_frosted.png",
+ inventory_image = "homedecor_skylight_frosted_inv.png",
+ use_texture_alpha = true,
+ groups = { snappy = 3 },
+ paramtype = "light",
+ sounds = default.node_sound_glass_defaults(),
+ selection_box = homedecor.nodebox.slab_y(0.1),
+})
+
+for _, s in pairs({"asphalt", "terracotta", "wood"}) do
+ minetest.register_node("homedecor:shingles_"..s, {
+ description = S("Shingles ("..s..")"),
+ drawtype = "raillike",
+ tiles = { "homedecor_shingles_"..s..".png" },
+ wield_image = "homedecor_shingles_"..s..".png",
+ inventory_image = "homedecor_shingles_"..s.."_inv.png",
+ paramtype = "light",
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = homedecor.nodebox.slab_y(0.1),
+ })
+end
+
+local slope_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ {-0.5, -0.25, -0.25, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.25, 0.5},
+ {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
+ }
+}
+
+local ocorner_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ {-0.5, -0.25, -0.25, 0.25, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.25, 0.5},
+ {-0.5, 0.25, 0.25, -0.25, 0.5, 0.5}
+ }
+}
+
+local icorner_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, -- NodeBox5
+ {-0.5, -0.5, -0.25, 0.5, 0, 0.5}, -- NodeBox6
+ {-0.5, -0.5, -0.5, 0.25, 0, 0.5}, -- NodeBox7
+ {-0.5, 0, -0.5, 0, 0.25, 0.5}, -- NodeBox8
+ {-0.5, 0, 0, 0.5, 0.25, 0.5}, -- NodeBox9
+ {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}, -- NodeBox10
+ {-0.5, 0.25, -0.5, -0.25, 0.5, 0.5}, -- NodeBox11
+ }
+}
+
+homedecor.register_outer_corner = function(modname, subname, groups, slope_image, description)
+ local tiles = slope_image
+
+ if type(slope_image) ~= "table" then
+ tiles = { "homedecor_slope_outer_corner_"..slope_image..".png" }
+ end
+
+ minetest.register_node(modname..":shingle_outer_corner_" .. subname, {
+ description = S(description.. " (outer corner)"),
+ drawtype = "mesh",
+ mesh = "homedecor_slope_outer_corner.obj",
+ tiles = tiles,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = ocorner_cbox,
+ collision_box = ocorner_cbox,
+ groups = groups,
+ on_place = minetest.rotate_node,
+ sounds = default.node_sound_wood_defaults()
+ })
+end
+
+homedecor.register_inner_corner = function(modname, subname, groups, slope_image, description)
+ local tiles = slope_image
+
+ if type(slope_image) ~= "table" then
+ tiles = { "homedecor_slope_outer_corner_"..slope_image..".png" }
+ end
+
+ minetest.register_node(modname..":shingle_inner_corner_" .. subname, {
+ description = S(description.. " (inner corner)"),
+ drawtype = "mesh",
+ mesh = "homedecor_slope_inner_corner.obj",
+ tiles = tiles,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ collision_box = icorner_cbox,
+ groups = groups,
+ on_place = minetest.rotate_node,
+ sounds = default.node_sound_wood_defaults()
+ })
+end
+
+homedecor.register_slope = function(modname, subname, recipeitem, groups, slope_image, description)
+ local tiles = slope_image
+
+ if type(slope_image) ~= "table" then
+ tiles = { "homedecor_slope_outer_corner_"..slope_image..".png" }
+ end
+
+ minetest.register_node(modname..":shingle_side_" .. subname, {
+ description = S(description),
+ drawtype = "mesh",
+ mesh = "homedecor_slope.obj",
+ tiles = tiles,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = slope_cbox,
+ collision_box = slope_cbox,
+ groups = groups,
+ on_place = minetest.rotate_node,
+ sounds = default.node_sound_wood_defaults()
+ })
+
+ -- convert between flat shingles and slopes
+
+ minetest.register_craft({
+ output = modname..":shingle_side_"..subname.." 3",
+ recipe = {
+ {recipeitem, recipeitem, recipeitem}
+ }
+ })
+
+ minetest.register_craft({
+ output = recipeitem.." 3",
+ recipe = {
+ {modname..":shingle_side_"..subname, modname..":shingle_side_"..subname, modname..":shingle_side_"..subname},
+ }
+ })
+
+ -- craft outer corners
+
+ minetest.register_craft({
+ output = modname..":shingle_outer_corner_"..subname.." 3",
+ recipe = {
+ { "", recipeitem, "" },
+ { recipeitem, "", recipeitem }
+ }
+ })
+
+ minetest.register_craft({
+ output = modname..":shingle_outer_corner_"..subname.." 3",
+ recipe = {
+ { "", modname..":shingle_side_"..subname, "" },
+ { modname..":shingle_side_"..subname, "", modname..":shingle_side_"..subname },
+ }
+ })
+
+ -- craft inner corners
+
+ minetest.register_craft({
+ output = modname..":shingle_inner_corner_"..subname.." 3",
+ recipe = {
+ {recipeitem, recipeitem},
+ {"", recipeitem}
+ }
+ })
+
+ minetest.register_craft({
+ output = modname..":shingle_inner_corner_"..subname.." 3",
+ recipe = {
+ {modname..":shingle_side_"..subname, modname..":shingle_side_"..subname},
+ {"", modname..":shingle_side_"..subname}
+ }
+ })
+ -- convert between flat shingles and inner/outer corners
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem.." 1",
+ recipe = { modname..":shingle_outer_corner_"..subname }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem.." 1",
+ recipe = { modname..":shingle_inner_corner_"..subname }
+ })
+end
+
+minetest.register_craft( {
+ output = "homedecor:shingle_side_glass",
+ recipe = {
+ { "homedecor:skylight", "homedecor:skylight", "homedecor:skylight" }
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:roof_tile_terracotta 8",
+ recipe = {
+ { "homedecor:shingle_outer_corner_terracotta", "homedecor:shingle_outer_corner_terracotta" }
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:roof_tile_terracotta 8",
+ recipe = {
+ { "homedecor:shingle_inner_corner_terracotta", "homedecor:shingle_inner_corner_terracotta" }
+ }
+})
+
+minetest.register_craft( {
+ output = "homedecor:roof_tile_terracotta 8",
+ recipe = {
+ { "homedecor:shingle_side_terracotta", "homedecor:shingle_side_terracotta" }
+ }
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shingle_inner_corner_wood",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shingle_outer_corner_wood",
+ burntime = 30,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shingle_side_wood",
+ burntime = 30,
+})
+
+homedecor.register_roof = function(modname, subname, groups, slope_image , description)
+ homedecor.register_outer_corner(modname, subname, groups, slope_image, description)
+ homedecor.register_inner_corner(modname, subname, groups, slope_image, description)
+end
+
+-- corners
+
+homedecor.register_roof("homedecor", "wood",
+ { snappy = 3 },
+ { "homedecor_shingles_wood.png" },
+ "Wood Shingles"
+)
+
+homedecor.register_roof("homedecor", "asphalt",
+ { snappy = 3 },
+ { "homedecor_shingles_asphalt.png" },
+ "Asphalt Shingles"
+)
+
+homedecor.register_roof("homedecor", "terracotta",
+ { snappy = 3 },
+ { "homedecor_shingles_terracotta.png" },
+ "Terracotta Shingles"
+)
+
+-- register just the slopes
+
+homedecor.register_slope("homedecor", "wood",
+ "homedecor:shingles_wood",
+ { snappy = 3 },
+ { "homedecor_shingles_wood.png" },
+ "Wood Shingles"
+)
+
+homedecor.register_slope("homedecor", "asphalt",
+ "homedecor:shingles_asphalt",
+ { snappy = 3 },
+ { "homedecor_shingles_asphalt.png" },
+ "Asphalt Shingles"
+)
+
+homedecor.register_slope("homedecor", "terracotta",
+ "homedecor:shingles_terracotta",
+ { snappy = 3 },
+ { "homedecor_shingles_terracotta.png" },
+ "Terracotta Shingles"
+)
+
+homedecor.register_slope("homedecor", "glass",
+ "homedecor:shingles_glass",
+ { snappy = 3 },
+ { "homedecor_shingles_glass.png", "homedecor_shingles_wood.png" },
+ "Glass Shingles"
+)
+
+
+homedecor.register("chimney", {
+ description = "Chimney",
+ mesh = "homedecor_chimney.obj",
+ tiles = {
+ "homedecor_chimney_tb.png",
+ "default_brick.png"
+ },
+ selection_box = homedecor.nodebox.bar_y(0.25),
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults()
+})
diff --git a/homedecor_modpack/homedecor/shutters.lua b/homedecor_modpack/homedecor/shutters.lua
new file mode 100644
index 0000000..05a359f
--- /dev/null
+++ b/homedecor_modpack/homedecor/shutters.lua
@@ -0,0 +1,52 @@
+-- Various kinds of window shutters
+
+local S = homedecor.gettext
+
+local shutters = {
+ {"oak", "Unpainted oak", "#bf8a51:200" },
+ {"mahogany", "Mahogany", "#822606:200" },
+ {"red", "Red", "#d00000:150" },
+ {"yellow", "Yellow", "#ffff00:150" },
+ {"forest_green", "Forest green", "#006000:150" },
+ {"light_blue", "Light blue", "#1963c7:150" },
+ {"violet", "Violet", "#6000ff:150" },
+ {"black", "Black", "#000000:200" },
+ {"dark_grey", "Dark grey", "#202020:200" },
+ {"grey", "Grey", "#c0c0c0:150" },
+ {"white", "White", "#ffffff:150" },
+}
+
+local shutter_cbox = {
+ type = "wallmounted",
+ wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 }
+}
+
+for i in ipairs(shutters) do
+ local name = shutters[i][1]
+ local desc = shutters[i][2]
+ local hue = shutters[i][3]
+
+ local tile = "homedecor_window_shutter.png^[colorize:"..hue
+ local inv = "homedecor_window_shutter_inv.png^[colorize:"..hue
+
+ homedecor.register("shutter_"..name, {
+ mesh = "homedecor_window_shutter.obj",
+ tiles = { tile },
+ description = S("Wooden Shutter ("..desc..")"),
+ inventory_image = inv,
+ wield_image = inv,
+ paramtype2 = "wallmounted",
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = shutter_cbox,
+ node_box = shutter_cbox,
+ -- collision_box doesn't accept type="wallmounted", but node_box
+ -- does. Said nodeboxes create a custom collision box but are
+ -- invisible themselves because drawtype="mesh".
+ })
+end
+
+minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet")
+
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_book_close.ogg b/homedecor_modpack/homedecor/sounds/homedecor_book_close.ogg
new file mode 100644
index 0000000..22116a3
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_book_close.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_door_close.ogg b/homedecor_modpack/homedecor/sounds/homedecor_door_close.ogg
new file mode 100644
index 0000000..c85b915
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_door_close.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_door_open.ogg b/homedecor_modpack/homedecor/sounds/homedecor_door_open.ogg
new file mode 100644
index 0000000..16198d9
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_door_open.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_doorbell.ogg b/homedecor_modpack/homedecor/sounds/homedecor_doorbell.ogg
new file mode 100644
index 0000000..bdf4cea
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_doorbell.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_faucet.ogg b/homedecor_modpack/homedecor/sounds/homedecor_faucet.ogg
new file mode 100644
index 0000000..8c79074
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_faucet.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_gate_open_close.ogg b/homedecor_modpack/homedecor/sounds/homedecor_gate_open_close.ogg
new file mode 100644
index 0000000..d5f1d96
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_gate_open_close.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_shower.ogg b/homedecor_modpack/homedecor/sounds/homedecor_shower.ogg
new file mode 100644
index 0000000..4675b79
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_shower.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_telephone_ringing.ogg b/homedecor_modpack/homedecor/sounds/homedecor_telephone_ringing.ogg
new file mode 100644
index 0000000..8272ab1
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_telephone_ringing.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_toilet_flush.ogg b/homedecor_modpack/homedecor/sounds/homedecor_toilet_flush.ogg
new file mode 100644
index 0000000..e15a583
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_toilet_flush.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/homedecor_trash_all.ogg b/homedecor_modpack/homedecor/sounds/homedecor_trash_all.ogg
new file mode 100644
index 0000000..85c3f66
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/homedecor_trash_all.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/insert_coin.ogg b/homedecor_modpack/homedecor/sounds/insert_coin.ogg
new file mode 100644
index 0000000..2ee99d5
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/insert_coin.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/sounds/toaster.ogg b/homedecor_modpack/homedecor/sounds/toaster.ogg
new file mode 100644
index 0000000..c3d5a80
--- /dev/null
+++ b/homedecor_modpack/homedecor/sounds/toaster.ogg
Binary files differ
diff --git a/homedecor_modpack/homedecor/tables.lua b/homedecor_modpack/homedecor/tables.lua
new file mode 100644
index 0000000..9910cec
--- /dev/null
+++ b/homedecor_modpack/homedecor/tables.lua
@@ -0,0 +1,189 @@
+-- Various kinds of tables
+
+local S = homedecor.gettext
+
+local materials = {
+ {"glass","Glass"},
+ {"wood","Wood"}
+}
+
+local tables_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
+}
+
+for i in ipairs(materials) do
+ local m = materials[i][1]
+ local d = materials[i][2]
+ local s = nil
+
+ if m == "glass" then
+ s = default.node_sound_glass_defaults()
+ else
+ s = default.node_sound_wood_defaults()
+ end
+
+-- small square tables
+
+ homedecor.register(m.."_table_small_square", {
+ description = S(d.." Table (Small, Square)"),
+ mesh = "homedecor_table_small_square.obj",
+ tiles = { 'homedecor_'..m..'_table_small_square.png' },
+ wield_image = 'homedecor_'..m..'_table_small_square_inv.png',
+ inventory_image = 'homedecor_'..m..'_table_small_square_inv.png',
+ groups = { snappy = 3 },
+ sounds = s,
+ selection_box = tables_cbox,
+ collision_box = tables_cbox,
+ on_place = minetest.rotate_node
+ })
+
+-- small round tables
+
+ homedecor.register(m..'_table_small_round', {
+ description = S(d.." Table (Small, Round)"),
+ mesh = "homedecor_table_small_round.obj",
+ tiles = { "homedecor_"..m.."_table_small_round.png" },
+ wield_image = 'homedecor_'..m..'_table_small_round_inv.png',
+ inventory_image = 'homedecor_'..m..'_table_small_round_inv.png',
+ groups = { snappy = 3 },
+ sounds = s,
+ selection_box = tables_cbox,
+ collision_box = tables_cbox,
+ on_place = minetest.rotate_node
+ })
+
+-- Large square table pieces
+
+ homedecor.register(m..'_table_large', {
+ description = S(d.." Table Piece (large)"),
+ tiles = {
+ 'homedecor_'..m..'_table_large_tb.png',
+ 'homedecor_'..m..'_table_large_tb.png',
+ 'homedecor_'..m..'_table_large_edges.png',
+ 'homedecor_'..m..'_table_large_edges.png',
+ 'homedecor_'..m..'_table_large_edges.png',
+ 'homedecor_'..m..'_table_large_edges.png'
+ },
+ wield_image = 'homedecor_'..m..'_table_large_inv.png',
+ inventory_image = 'homedecor_'..m..'_table_large_inv.png',
+ groups = { snappy = 3 },
+ sounds = s,
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
+ },
+ selection_box = tables_cbox,
+ on_place = minetest.rotate_node
+ })
+
+ minetest.register_alias('homedecor:'..m..'_table_large_b', 'homedecor:'..m..'_table_large')
+ minetest.register_alias('homedecor:'..m..'_table_small_square_b', 'homedecor:'..m..'_table_small_square')
+ minetest.register_alias('homedecor:'..m..'_table_small_round_b', 'homedecor:'..m..'_table_small_round')
+
+end
+
+-- conversion routines for old non-6dfacedir tables
+
+local tlist_s = {}
+local tlist_t = {}
+local dirs2 = { 9, 18, 7, 12 }
+
+for i in ipairs(materials) do
+ local m = materials[i][1]
+ table.insert(tlist_s, "homedecor:"..m.."_table_large_s")
+ table.insert(tlist_s, "homedecor:"..m.."_table_small_square_s")
+ table.insert(tlist_s, "homedecor:"..m.."_table_small_round_s")
+
+ table.insert(tlist_t, "homedecor:"..m.."_table_large_t")
+ table.insert(tlist_t, "homedecor:"..m.."_table_small_square_t")
+ table.insert(tlist_t, "homedecor:"..m.."_table_small_round_t")
+end
+
+minetest.register_abm({
+ nodenames = tlist_s,
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local newnode = string.sub(node.name, 1, -3) -- strip the "_s" from the name
+ local fdir = node.param2 or 0
+ minetest.set_node(pos, {name = newnode, param2 = dirs2[fdir+1]})
+ end
+})
+
+minetest.register_abm({
+ nodenames = tlist_t,
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local newnode = string.sub(node.name, 1, -3) -- strip the "_t" from the name
+ minetest.set_node(pos, { name = newnode, param2 = 20 })
+ end
+})
+
+-- other tables
+
+homedecor.register("utility_table_top", {
+ description = S("Utility Table"),
+ tiles = {
+ 'homedecor_utility_table_tb.png',
+ 'homedecor_utility_table_tb.png',
+ 'homedecor_utility_table_edges.png',
+ 'homedecor_utility_table_edges.png',
+ 'homedecor_utility_table_edges.png',
+ 'homedecor_utility_table_edges.png'
+ },
+ wield_image = 'homedecor_utility_table_tb.png',
+ inventory_image = 'homedecor_utility_table_tb.png',
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ paramtype2 = "wallmounted",
+ node_box = {
+ type = "wallmounted",
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
+ wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 },
+ },
+ selection_box = {
+ type = "wallmounted",
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
+ wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 },
+ },
+})
+
+-- Various kinds of table legs
+
+local materials = {"brass", "wrought_iron"}
+
+for _, t in ipairs(materials) do
+homedecor.register("table_legs_"..t, {
+ description = S("Table Legs ("..t..")"),
+ drawtype = "plantlike",
+ tiles = {"homedecor_table_legs_"..t..".png"},
+ inventory_image = "homedecor_table_legs_"..t..".png",
+ wield_image = "homedecor_table_legs_"..t..".png",
+ walkable = false,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.37, -0.5, -0.37, 0.37, 0.5, 0.37 }
+ },
+})
+end
+
+homedecor.register("utility_table_legs", {
+ description = S("Legs for Utility Table"),
+ drawtype = "plantlike",
+ tiles = { 'homedecor_utility_table_legs.png' },
+ inventory_image = 'homedecor_utility_table_legs_inv.png',
+ wield_image = 'homedecor_utility_table_legs.png',
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.37, -0.5, -0.37, 0.37, 0.5, 0.37 }
+ },
+})
diff --git a/homedecor_modpack/homedecor/textures/3dforniture_taps_brass_inv.png b/homedecor_modpack/homedecor/textures/3dforniture_taps_brass_inv.png
new file mode 100644
index 0000000..16801db
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/3dforniture_taps_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/3dforniture_taps_inv.png b/homedecor_modpack/homedecor/textures/3dforniture_taps_inv.png
new file mode 100644
index 0000000..e177b53
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/3dforniture_taps_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/flowers_bonsai.png b/homedecor_modpack/homedecor/textures/flowers_bonsai.png
new file mode 100644
index 0000000..bdc95ee
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/flowers_bonsai.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/flowers_cactus.png b/homedecor_modpack/homedecor/textures/flowers_cactus.png
new file mode 100644
index 0000000..e3c03da
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/flowers_cactus.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/forniture_chains_inv.png b/homedecor_modpack/homedecor/textures/forniture_chains_inv.png
new file mode 100644
index 0000000..4fd4900
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/forniture_chains_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/forniture_coal.png b/homedecor_modpack/homedecor/textures/forniture_coal.png
new file mode 100644
index 0000000..7da54a0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/forniture_coal.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/forniture_marble_base_ducha_top.png b/homedecor_modpack/homedecor/textures/forniture_marble_base_ducha_top.png
new file mode 100644
index 0000000..5a24c79
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/forniture_marble_base_ducha_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/forniture_marble_top_toilet.png b/homedecor_modpack/homedecor/textures/forniture_marble_top_toilet.png
new file mode 100644
index 0000000..0a8d19c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/forniture_marble_top_toilet.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/forniture_torch_flame.png b/homedecor_modpack/homedecor/textures/forniture_torch_flame.png
new file mode 100644
index 0000000..b280b00
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/forniture_torch_flame.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/forniture_torch_inv.png b/homedecor_modpack/homedecor/textures/forniture_torch_inv.png
new file mode 100644
index 0000000..a648b54
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/forniture_torch_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_4_bottles_brown_inv.png b/homedecor_modpack/homedecor/textures/homedecor_4_bottles_brown_inv.png
new file mode 100644
index 0000000..1ba0c98
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_4_bottles_brown_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_4_bottles_green_inv.png b/homedecor_modpack/homedecor/textures/homedecor_4_bottles_green_inv.png
new file mode 100644
index 0000000..dccf150
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_4_bottles_green_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_4_bottles_multi_inv.png b/homedecor_modpack/homedecor/textures/homedecor_4_bottles_multi_inv.png
new file mode 100644
index 0000000..6ebc807
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_4_bottles_multi_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ac.png b/homedecor_modpack/homedecor/textures/homedecor_ac.png
new file mode 100644
index 0000000..3c5b80d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ac.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_back.png b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_back.png
new file mode 100644
index 0000000..faee42d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_bottom.png
new file mode 100644
index 0000000..136e39e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_front.png b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_front.png
new file mode 100644
index 0000000..8ada01a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_inv.png b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_inv.png
new file mode 100644
index 0000000..ebb882c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_sides.png b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_sides.png
new file mode 100644
index 0000000..372e77e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_top.png b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_top.png
new file mode 100644
index 0000000..d1978e6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_alarm_clock_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_analog_clock_back.png b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_back.png
new file mode 100644
index 0000000..0de135b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_analog_clock_face.png b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_face.png
new file mode 100644
index 0000000..ff0d0ec
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_face.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_analog_clock_plastic_inv.png b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_plastic_inv.png
new file mode 100644
index 0000000..990c4a7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_plastic_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_analog_clock_wood_inv.png b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_wood_inv.png
new file mode 100644
index 0000000..b378783
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_analog_clock_wood_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_banister_brass_inv.png b/homedecor_modpack/homedecor/textures/homedecor_banister_brass_inv.png
new file mode 100644
index 0000000..03e70df
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_banister_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_banister_white_dark_inv.png b/homedecor_modpack/homedecor/textures/homedecor_banister_white_dark_inv.png
new file mode 100644
index 0000000..c650a95
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_banister_white_dark_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_banister_wood_inv.png b/homedecor_modpack/homedecor/textures/homedecor_banister_wood_inv.png
new file mode 100644
index 0000000..06531e5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_banister_wood_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_banister_wrought_iron_inv.png b/homedecor_modpack/homedecor/textures/homedecor_banister_wrought_iron_inv.png
new file mode 100644
index 0000000..452932f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_banister_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_barbecue_meat.png b/homedecor_modpack/homedecor/textures/homedecor_barbecue_meat.png
new file mode 100644
index 0000000..6179462
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_barbecue_meat.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_cup.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_cup.png
new file mode 100644
index 0000000..d6897ba
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_cup.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_inv.png
new file mode 100644
index 0000000..fb5944a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_mirror.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_mirror.png
new file mode 100644
index 0000000..c5cb6b6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_mirror.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothbrush.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothbrush.png
new file mode 100644
index 0000000..d857abe
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothbrush.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothpaste.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothpaste.png
new file mode 100644
index 0000000..32fdfca
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_toothpaste.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_tray.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_tray.png
new file mode 100644
index 0000000..45ecb59
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_set_tray.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_sink_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_sink_inv.png
new file mode 100644
index 0000000..44918f3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_sink_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_bg.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_bg.png
new file mode 100644
index 0000000..1a20457
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_bg.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_fg.png b/homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_fg.png
new file mode 100644
index 0000000..b741d56
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bathroom_tiles_fg.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bed_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_bed_bottom.png
new file mode 100644
index 0000000..3451655
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bed_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bed_frame.png b/homedecor_modpack/homedecor/textures/homedecor_bed_frame.png
new file mode 100644
index 0000000..b334e40
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bed_frame.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bed_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bed_inv.png
new file mode 100644
index 0000000..c670b45
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bed_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_inv.png
new file mode 100644
index 0000000..5f8c93e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_overlay_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_overlay_inv.png
new file mode 100644
index 0000000..7a3d6e0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bed_kingsize_overlay_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bed_overlay_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bed_overlay_inv.png
new file mode 100644
index 0000000..b3d53ba
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bed_overlay_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_beer_mug.png b/homedecor_modpack/homedecor/textures/homedecor_beer_mug.png
new file mode 100644
index 0000000..2a80924
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_beer_mug.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_beer_mug_inv.png b/homedecor_modpack/homedecor/textures/homedecor_beer_mug_inv.png
new file mode 100644
index 0000000..1887d5d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_beer_mug_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_beertap_inv.png b/homedecor_modpack/homedecor/textures/homedecor_beertap_inv.png
new file mode 100644
index 0000000..3090df1
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_beertap_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bench_large_1_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bench_large_1_inv.png
new file mode 100644
index 0000000..b9eb36c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bench_large_1_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bench_large_2_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bench_large_2_inv.png
new file mode 100644
index 0000000..961be62
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bench_large_2_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_blank_canvas.png b/homedecor_modpack/homedecor/textures/homedecor_blank_canvas.png
new file mode 100644
index 0000000..88c0f42
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_blank_canvas.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_blanktile.png b/homedecor_modpack/homedecor/textures/homedecor_blanktile.png
new file mode 100644
index 0000000..c22f319
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_blanktile.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_book_cover.png b/homedecor_modpack/homedecor/textures/homedecor_book_cover.png
new file mode 100644
index 0000000..f5c5083
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_book_cover.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_book_cover_trim.png b/homedecor_modpack/homedecor/textures/homedecor_book_cover_trim.png
new file mode 100644
index 0000000..5425385
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_book_cover_trim.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_book_edges.png b/homedecor_modpack/homedecor/textures/homedecor_book_edges.png
new file mode 100644
index 0000000..5b48944
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_book_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_book_inv.png b/homedecor_modpack/homedecor/textures/homedecor_book_inv.png
new file mode 100644
index 0000000..b8dd243
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_book_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_book_pages.png b/homedecor_modpack/homedecor/textures/homedecor_book_pages.png
new file mode 100644
index 0000000..d4bad77
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_book_pages.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_book_trim_inv.png b/homedecor_modpack/homedecor/textures/homedecor_book_trim_inv.png
new file mode 100644
index 0000000..7096703
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_book_trim_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_brown.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown.png
new file mode 100644
index 0000000..a13b221
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_brown2.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown2.png
new file mode 100644
index 0000000..ab3364f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_brown3.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown3.png
new file mode 100644
index 0000000..614a042
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown3.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_brown4.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown4.png
new file mode 100644
index 0000000..d9c578a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown4.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_brown_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown_inv.png
new file mode 100644
index 0000000..aff22d0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_brown_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_green.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_green.png
new file mode 100644
index 0000000..b8a4846
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_green.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_bottle_green_inv.png b/homedecor_modpack/homedecor/textures/homedecor_bottle_green_inv.png
new file mode 100644
index 0000000..1f06e80
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_bottle_green_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_brass_ingot.png b/homedecor_modpack/homedecor/textures/homedecor_brass_ingot.png
new file mode 100644
index 0000000..c2e06ff
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_brass_ingot.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_calendar.png b/homedecor_modpack/homedecor/textures/homedecor_calendar.png
new file mode 100644
index 0000000..0407a75
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_calendar.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_calendar_inv.png b/homedecor_modpack/homedecor/textures/homedecor_calendar_inv.png
new file mode 100644
index 0000000..8d705f6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_calendar_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_candle_flame.png b/homedecor_modpack/homedecor/textures/homedecor_candle_flame.png
new file mode 100644
index 0000000..a34b9a5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_candle_flame.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_candle_inv.png b/homedecor_modpack/homedecor/textures/homedecor_candle_inv.png
new file mode 100644
index 0000000..f1709ca
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_candle_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_candle_sides.png b/homedecor_modpack/homedecor/textures/homedecor_candle_sides.png
new file mode 100644
index 0000000..d709a8c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_candle_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_candle_thin_inv.png b/homedecor_modpack/homedecor/textures/homedecor_candle_thin_inv.png
new file mode 100644
index 0000000..2a89446
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_candle_thin_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_candlestick_brass_inv.png b/homedecor_modpack/homedecor/textures/homedecor_candlestick_brass_inv.png
new file mode 100644
index 0000000..eeae63f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_candlestick_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_candlestick_wrought_iron_inv.png b/homedecor_modpack/homedecor/textures/homedecor_candlestick_wrought_iron_inv.png
new file mode 100644
index 0000000..f87b383
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_candlestick_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cardbox_big_sides.png b/homedecor_modpack/homedecor/textures/homedecor_cardbox_big_sides.png
new file mode 100644
index 0000000..67fb05e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cardbox_big_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cardbox_big_tb.png b/homedecor_modpack/homedecor/textures/homedecor_cardbox_big_tb.png
new file mode 100644
index 0000000..6a57cd5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cardbox_big_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cardbox_sides.png b/homedecor_modpack/homedecor/textures/homedecor_cardbox_sides.png
new file mode 100644
index 0000000..830bced
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cardbox_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cardbox_tb.png b/homedecor_modpack/homedecor/textures/homedecor_cardbox_tb.png
new file mode 100644
index 0000000..da82386
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cardbox_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_bottom.png
new file mode 100644
index 0000000..04a333b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_inv.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_inv.png
new file mode 100644
index 0000000..f887b38
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_sides.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_sides.png
new file mode 100644
index 0000000..82bae2f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_top.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_top.png
new file mode 100644
index 0000000..1362609
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_fan_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_glass.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_glass.png
new file mode 100644
index 0000000..410349d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_inv.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_inv.png
new file mode 100644
index 0000000..265f2c8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_lamp_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_lantern_inv.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_lantern_inv.png
new file mode 100644
index 0000000..85b2c54
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_lantern_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_paint.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_paint.png
new file mode 100644
index 0000000..305209e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_paint.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_paint_roller.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_paint_roller.png
new file mode 100644
index 0000000..cecc3bc
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_paint_roller.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ceiling_tile.png b/homedecor_modpack/homedecor/textures/homedecor_ceiling_tile.png
new file mode 100644
index 0000000..3e29f95
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ceiling_tile.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_chainlink_brass.png b/homedecor_modpack/homedecor/textures/homedecor_chainlink_brass.png
new file mode 100644
index 0000000..9a1ad87
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_chainlink_brass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_chainlink_steel.png b/homedecor_modpack/homedecor/textures/homedecor_chainlink_steel.png
new file mode 100644
index 0000000..d7132c3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_chainlink_steel.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_chimney_tb.png b/homedecor_modpack/homedecor/textures/homedecor_chimney_tb.png
new file mode 100644
index 0000000..80161e6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_chimney_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female1.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female1.png
new file mode 100644
index 0000000..7d52b2c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female1.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female1_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female1_preview.png
new file mode 100644
index 0000000..3d0fa6b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female1_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female2.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female2.png
new file mode 100644
index 0000000..4244e35
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female2_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female2_preview.png
new file mode 100644
index 0000000..9d3bc2b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female2_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female3.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female3.png
new file mode 100644
index 0000000..7e09536
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female3.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female3_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female3_preview.png
new file mode 100644
index 0000000..4a6ea13
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female3_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female4.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female4.png
new file mode 100644
index 0000000..3e64c5d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female4.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female4_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female4_preview.png
new file mode 100644
index 0000000..b8eea30
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female4_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female5.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female5.png
new file mode 100644
index 0000000..ad634f4
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female5.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_female5_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_female5_preview.png
new file mode 100644
index 0000000..f07d654
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_female5_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male1.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male1.png
new file mode 100644
index 0000000..614c71f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male1.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male1_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male1_preview.png
new file mode 100644
index 0000000..c00be6b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male1_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male2.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male2.png
new file mode 100644
index 0000000..f7264b5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male2_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male2_preview.png
new file mode 100644
index 0000000..b3196c7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male2_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male3.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male3.png
new file mode 100644
index 0000000..92d88f3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male3.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male3_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male3_preview.png
new file mode 100644
index 0000000..2d0e187
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male3_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male4.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male4.png
new file mode 100644
index 0000000..53eaaa2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male4.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male4_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male4_preview.png
new file mode 100644
index 0000000..feaf41d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male4_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male5.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male5.png
new file mode 100644
index 0000000..ac8caa8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male5.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_clothes_male5_preview.png b/homedecor_modpack/homedecor/textures/homedecor_clothes_male5_preview.png
new file mode 100644
index 0000000..4036b1a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_clothes_male5_preview.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coatrack_inv.png b/homedecor_modpack/homedecor/textures/homedecor_coatrack_inv.png
new file mode 100644
index 0000000..9d4018e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coatrack_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coatrack_wallmount_inv.png b/homedecor_modpack/homedecor/textures/homedecor_coatrack_wallmount_inv.png
new file mode 100644
index 0000000..8d776a3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coatrack_wallmount_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cobweb.png b/homedecor_modpack/homedecor/textures/homedecor_cobweb.png
new file mode 100644
index 0000000..9e8cdc6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cobweb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cobweb_plantlike.png b/homedecor_modpack/homedecor/textures/homedecor_cobweb_plantlike.png
new file mode 100644
index 0000000..593f59e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cobweb_plantlike.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cobweb_torchlike.png b/homedecor_modpack/homedecor/textures/homedecor_cobweb_torchlike.png
new file mode 100644
index 0000000..827d7bf
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cobweb_torchlike.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_case.png b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_case.png
new file mode 100644
index 0000000..ebc3541
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_case.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_cup.png b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_cup.png
new file mode 100644
index 0000000..3422dee
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_cup.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_decanter.png b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_decanter.png
new file mode 100644
index 0000000..f7a5f86
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_decanter.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_inv.png b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_inv.png
new file mode 100644
index 0000000..57fe7df
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coffeemaker_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_coin.png b/homedecor_modpack/homedecor/textures/homedecor_coin.png
new file mode 100644
index 0000000..84b0932
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_coin.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_copper_pans_inv.png b/homedecor_modpack/homedecor/textures/homedecor_copper_pans_inv.png
new file mode 100644
index 0000000..08e21d2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_copper_pans_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_copper_strip.png b/homedecor_modpack/homedecor/textures/homedecor_copper_strip.png
new file mode 100644
index 0000000..22e572a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_copper_strip.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_copper_wire.png b/homedecor_modpack/homedecor/textures/homedecor_copper_wire.png
new file mode 100644
index 0000000..e33eb22
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_copper_wire.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_curtain.png b/homedecor_modpack/homedecor/textures/homedecor_curtain.png
new file mode 100644
index 0000000..97ef90d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_curtain.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_curtain_open.png b/homedecor_modpack/homedecor/textures/homedecor_curtain_open.png
new file mode 100644
index 0000000..8a71ae2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_curtain_open.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_curtainrod_brass_inv.png b/homedecor_modpack/homedecor/textures/homedecor_curtainrod_brass_inv.png
new file mode 100644
index 0000000..a2ffacf
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_curtainrod_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_curtainrod_wood_inv.png b/homedecor_modpack/homedecor/textures/homedecor_curtainrod_wood_inv.png
new file mode 100644
index 0000000..5712d36
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_curtainrod_wood_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_curtainrod_wrought_iron_inv.png b/homedecor_modpack/homedecor/textures/homedecor_curtainrod_wrought_iron_inv.png
new file mode 100644
index 0000000..914fc7f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_curtainrod_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cutlery_set.png b/homedecor_modpack/homedecor/textures/homedecor_cutlery_set.png
new file mode 100644
index 0000000..57b27bf
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cutlery_set.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_cutlery_set_inv.png b/homedecor_modpack/homedecor/textures/homedecor_cutlery_set_inv.png
new file mode 100644
index 0000000..9dcd1df
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_cutlery_set_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dartboard.png b/homedecor_modpack/homedecor/textures/homedecor_dartboard.png
new file mode 100644
index 0000000..91edbc0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dartboard.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dartboard_inv.png b/homedecor_modpack/homedecor/textures/homedecor_dartboard_inv.png
new file mode 100644
index 0000000..9eee775
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dartboard_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_deckchair.png b/homedecor_modpack/homedecor/textures/homedecor_deckchair.png
new file mode 100644
index 0000000..47b7752
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_deckchair.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_deckchair_striped_blue.png b/homedecor_modpack/homedecor/textures/homedecor_deckchair_striped_blue.png
new file mode 100644
index 0000000..ac24eda
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_deckchair_striped_blue.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_drawers.png b/homedecor_modpack/homedecor/textures/homedecor_desk_drawers.png
new file mode 100644
index 0000000..f25fff2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_drawers.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_fan_body.png b/homedecor_modpack/homedecor/textures/homedecor_desk_fan_body.png
new file mode 100644
index 0000000..7e35364
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_fan_body.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_fan_inv.png b/homedecor_modpack/homedecor/textures/homedecor_desk_fan_inv.png
new file mode 100644
index 0000000..3b91997
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_fan_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_globe_inv.png b/homedecor_modpack/homedecor/textures/homedecor_desk_globe_inv.png
new file mode 100644
index 0000000..c5558c9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_globe_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_inv.png b/homedecor_modpack/homedecor/textures/homedecor_desk_inv.png
new file mode 100644
index 0000000..fb59d07
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_lamp_metal_inv.png b/homedecor_modpack/homedecor/textures/homedecor_desk_lamp_metal_inv.png
new file mode 100644
index 0000000..bd59d29
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_lamp_metal_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_desk_lamp_stem_inv.png b/homedecor_modpack/homedecor/textures/homedecor_desk_lamp_stem_inv.png
new file mode 100644
index 0000000..293db54
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_desk_lamp_stem_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_digital_clock_back.png b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_back.png
new file mode 100644
index 0000000..f4ddf49
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_digital_clock_edges.png b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_edges.png
new file mode 100644
index 0000000..03ea8cd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_digital_clock_front.png b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_front.png
new file mode 100644
index 0000000..02c02cf
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_digital_clock_inv.png b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_inv.png
new file mode 100644
index 0000000..ad9a657
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_digital_clock_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dishwasher_back.png b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_back.png
new file mode 100644
index 0000000..17c7dec
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dishwasher_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_bottom.png
new file mode 100644
index 0000000..7798e53
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dishwasher_front.png b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_front.png
new file mode 100644
index 0000000..a8cd657
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dishwasher_sides.png b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_sides.png
new file mode 100644
index 0000000..6bd93d7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dishwasher_top.png b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_top.png
new file mode 100644
index 0000000..de344c5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dishwasher_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_doghouse_inv.png b/homedecor_modpack/homedecor/textures/homedecor_doghouse_inv.png
new file mode 100644
index 0000000..81d2a73
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_doghouse_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_bedroom.png b/homedecor_modpack/homedecor/textures/homedecor_door_bedroom.png
new file mode 100644
index 0000000..f94875f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_bedroom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_bedroom_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_bedroom_inv.png
new file mode 100644
index 0000000..f87065e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_bedroom_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany.png b/homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany.png
new file mode 100644
index 0000000..e2f51f7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany_inv.png
new file mode 100644
index 0000000..08cd6f3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_closet_mahogany_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_closet_oak.png b/homedecor_modpack/homedecor/textures/homedecor_door_closet_oak.png
new file mode 100644
index 0000000..9355e85
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_closet_oak.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_closet_oak_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_closet_oak_inv.png
new file mode 100644
index 0000000..42cdc9b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_closet_oak_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy.png b/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy.png
new file mode 100644
index 0000000..9f89482
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_insert.png b/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_insert.png
new file mode 100644
index 0000000..ddc5d22
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_insert.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_inv.png
new file mode 100644
index 0000000..a7ec3f3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_exterior_fancy_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_glass.png b/homedecor_modpack/homedecor/textures/homedecor_door_glass.png
new file mode 100644
index 0000000..4e5ea5a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_glass_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_glass_inv.png
new file mode 100644
index 0000000..fb5cd19
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_glass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_japanese_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_japanese_inv.png
new file mode 100644
index 0000000..7c3a0a2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_japanese_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_insert.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_insert.png
new file mode 100644
index 0000000..892f306
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_insert.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany.png
new file mode 100644
index 0000000..ca0ca15
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany_inv.png
new file mode 100644
index 0000000..36271dd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_mahogany_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak.png
new file mode 100644
index 0000000..0f08771
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak_inv.png
new file mode 100644
index 0000000..5e4707c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_oak_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white.png
new file mode 100644
index 0000000..202e600
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white_inv.png
new file mode 100644
index 0000000..61c50ad
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_glass_white_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_plain.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_plain.png
new file mode 100644
index 0000000..6b12552
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_plain.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wood_plain_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_wood_plain_inv.png
new file mode 100644
index 0000000..0e9e7a0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wood_plain_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_woodglass2.png b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass2.png
new file mode 100644
index 0000000..ee8ca2b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_woodglass2_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass2_inv.png
new file mode 100644
index 0000000..9afd7cf
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass2_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_inv.png
new file mode 100644
index 0000000..646e17c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea.png b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea.png
new file mode 100644
index 0000000..2d5902a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea_insert.png b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea_insert.png
new file mode 100644
index 0000000..12fb2c6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_woodglass_typea_insert.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron.png b/homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron.png
new file mode 100644
index 0000000..e39b46a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron_inv.png b/homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron_inv.png
new file mode 100644
index 0000000..083b4c0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_door_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_doorbell.png b/homedecor_modpack/homedecor/textures/homedecor_doorbell.png
new file mode 100644
index 0000000..03387d7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_doorbell.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_doorbell_inv.png b/homedecor_modpack/homedecor/textures/homedecor_doorbell_inv.png
new file mode 100644
index 0000000..378b7a7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_doorbell_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_drawer_small.png b/homedecor_modpack/homedecor/textures/homedecor_drawer_small.png
new file mode 100644
index 0000000..2958a0e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_drawer_small.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dryer_back.png b/homedecor_modpack/homedecor/textures/homedecor_dryer_back.png
new file mode 100644
index 0000000..b085c63
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dryer_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dryer_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_dryer_bottom.png
new file mode 100644
index 0000000..25f7416
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dryer_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dryer_front.png b/homedecor_modpack/homedecor/textures/homedecor_dryer_front.png
new file mode 100644
index 0000000..2fc8d8e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dryer_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dryer_sides.png b/homedecor_modpack/homedecor/textures/homedecor_dryer_sides.png
new file mode 100644
index 0000000..6cb3c8f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dryer_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dryer_top.png b/homedecor_modpack/homedecor/textures/homedecor_dryer_top.png
new file mode 100644
index 0000000..f416845
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dryer_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvd_player.png b/homedecor_modpack/homedecor/textures/homedecor_dvd_player.png
new file mode 100644
index 0000000..357a28d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvd_player.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_back.png b/homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_back.png
new file mode 100644
index 0000000..8e98d91
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_front.png b/homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_front.png
new file mode 100644
index 0000000..642eaa9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdcd_cabinet_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_back.png b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_back.png
new file mode 100644
index 0000000..2b125d8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_bottom.png
new file mode 100644
index 0000000..b73ec44
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_front.png b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_front.png
new file mode 100644
index 0000000..c955ff5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_inv.png b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_inv.png
new file mode 100644
index 0000000..025b585
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_sides.png b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_sides.png
new file mode 100644
index 0000000..19983fb
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_top.png b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_top.png
new file mode 100644
index 0000000..983ad37
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_dvdvcr_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_earth.png b/homedecor_modpack/homedecor/textures/homedecor_earth.png
new file mode 100644
index 0000000..511b3e9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_earth.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_embers.png b/homedecor_modpack/homedecor/textures/homedecor_embers.png
new file mode 100644
index 0000000..2e7dda5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_embers.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fan_blades.png b/homedecor_modpack/homedecor/textures/homedecor_fan_blades.png
new file mode 100644
index 0000000..efb9f7c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fan_blades.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_barbed_wire.png b/homedecor_modpack/homedecor/textures/homedecor_fence_barbed_wire.png
new file mode 100644
index 0000000..1fd22a7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_barbed_wire.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_brass.png b/homedecor_modpack/homedecor/textures/homedecor_fence_brass.png
new file mode 100644
index 0000000..bb4bf10
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_brass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_front.png b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_front.png
new file mode 100644
index 0000000..07a48d3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_top.png b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_top.png
new file mode 100644
index 0000000..324109d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_corner_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_fb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_fb.png
new file mode 100644
index 0000000..21a09d7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_fb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_sides.png b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_sides.png
new file mode 100644
index 0000000..a120207
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_tb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_tb.png
new file mode 100644
index 0000000..c1f9cfb
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_chainlink_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_sides.png b/homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_sides.png
new file mode 100644
index 0000000..b544fa5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_tb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_tb.png
new file mode 100644
index 0000000..d6d6ba2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_corner_wrought_iron_2_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_picket.png b/homedecor_modpack/homedecor/textures/homedecor_fence_picket.png
new file mode 100644
index 0000000..7c98218
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_picket.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_picket_backside.png b/homedecor_modpack/homedecor/textures/homedecor_fence_picket_backside.png
new file mode 100644
index 0000000..4bc274c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_picket_backside.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_picket_white.png b/homedecor_modpack/homedecor/textures/homedecor_fence_picket_white.png
new file mode 100644
index 0000000..b1a142e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_picket_white.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_picket_white_backside.png b/homedecor_modpack/homedecor/textures/homedecor_fence_picket_white_backside.png
new file mode 100644
index 0000000..3fb1a9d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_picket_white_backside.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside.png
new file mode 100644
index 0000000..fef1f0c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside2.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside2.png
new file mode 100644
index 0000000..fef1f0c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_backside2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_front.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_front.png
new file mode 100644
index 0000000..cc34e1b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_right.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_right.png
new file mode 100644
index 0000000..f1f0e25
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_right.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_tb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_tb.png
new file mode 100644
index 0000000..ff4dd2e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_corner_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_front.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_front.png
new file mode 100644
index 0000000..a7a8652
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_sides.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_sides.png
new file mode 100644
index 0000000..9f45299
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_tb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_tb.png
new file mode 100644
index 0000000..076dba6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_privacy_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron.png b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron.png
new file mode 100644
index 0000000..b5d37a8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_fb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_fb.png
new file mode 100644
index 0000000..f2fd501
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_fb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_sides.png b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_sides.png
new file mode 100644
index 0000000..4e89163
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_tb.png b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_tb.png
new file mode 100644
index 0000000..6e36033
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fence_wrought_iron_2_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_bottom.png
new file mode 100644
index 0000000..a896a30
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_front.png b/homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_front.png
new file mode 100644
index 0000000..b434932
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_filing_cabinet_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_filter.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_filter.png
new file mode 100644
index 0000000..2d5b187
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_filter.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes.png
new file mode 100644
index 0000000..0db50a7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes_lighted.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes_lighted.png
new file mode 100644
index 0000000..baf4d88
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_fishes_lighted.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel.png
new file mode 100644
index 0000000..13249e8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel_lighted.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel_lighted.png
new file mode 100644
index 0000000..c17846b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_gravel_lighted.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_sides.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_sides.png
new file mode 100644
index 0000000..21b02f6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_sides_lighted.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_sides_lighted.png
new file mode 100644
index 0000000..6fe49aa
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_sides_lighted.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top.png
new file mode 100644
index 0000000..aac2972
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top_lighted.png b/homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top_lighted.png
new file mode 100644
index 0000000..b69ff10
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_fishtank_water_top_lighted.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flower_pot_black.png b/homedecor_modpack/homedecor/textures/homedecor_flower_pot_black.png
new file mode 100644
index 0000000..612cc23
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flower_pot_black.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flower_pot_green.png b/homedecor_modpack/homedecor/textures/homedecor_flower_pot_green.png
new file mode 100644
index 0000000..d36acac
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flower_pot_green.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flower_pot_terracotta.png b/homedecor_modpack/homedecor/textures/homedecor_flower_pot_terracotta.png
new file mode 100644
index 0000000..8468daa
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flower_pot_terracotta.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flowerbox_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_bottom.png
new file mode 100644
index 0000000..665cdc6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flowerbox_inv.png b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_inv.png
new file mode 100644
index 0000000..7a5cfee
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flowerbox_sides.png b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_sides.png
new file mode 100644
index 0000000..414afad
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flowerbox_top.png b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_top.png
new file mode 100644
index 0000000..11ade60
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flowerbox_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_flowerpot_small_inv.png b/homedecor_modpack/homedecor/textures/homedecor_flowerpot_small_inv.png
new file mode 100644
index 0000000..e28545a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_flowerpot_small_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_edges.png b/homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_edges.png
new file mode 100644
index 0000000..000185a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_fb.png b/homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_fb.png
new file mode 100644
index 0000000..6cdc974
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_barbed_wire_fb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_fb.png b/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_fb.png
new file mode 100644
index 0000000..9453b45
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_fb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_lr.png b/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_lr.png
new file mode 100644
index 0000000..bd80d4c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_lr.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_tb.png b/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_tb.png
new file mode 100644
index 0000000..8ced2b9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_chainlink_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_picket_back.png b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_back.png
new file mode 100644
index 0000000..8ab5c9c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_picket_front.png b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_front.png
new file mode 100644
index 0000000..858da6b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_back.png b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_back.png
new file mode 100644
index 0000000..bb608de
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_front.png b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_front.png
new file mode 100644
index 0000000..a85aaa2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_gate_picket_white_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_black.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_black.png
new file mode 100644
index 0000000..c543746
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_black.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_brass.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_brass.png
new file mode 100644
index 0000000..e2fb20d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_brass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_bright.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_bright.png
new file mode 100644
index 0000000..da12452
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_bright.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold.png
new file mode 100644
index 0000000..dda7f2d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold2.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold2.png
new file mode 100644
index 0000000..e549900
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_gold2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_lines_overlay.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_lines_overlay.png
new file mode 100644
index 0000000..1b7af73
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_lines_overlay.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_metal_wrought_iron.png b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_wrought_iron.png
new file mode 100644
index 0000000..b98e3bc
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_metal_wrought_iron.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_plastic_black.png b/homedecor_modpack/homedecor/textures/homedecor_generic_plastic_black.png
new file mode 100644
index 0000000..3aa3493
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_plastic_black.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_quilted_paper.png b/homedecor_modpack/homedecor/textures/homedecor_generic_quilted_paper.png
new file mode 100644
index 0000000..c2de1d8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_quilted_paper.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_terrycloth.png b/homedecor_modpack/homedecor/textures/homedecor_generic_terrycloth.png
new file mode 100644
index 0000000..7265e3c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_terrycloth.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_wood_boards_overlay.png b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_boards_overlay.png
new file mode 100644
index 0000000..20de5ac
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_boards_overlay.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_wood_luxury.png b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_luxury.png
new file mode 100644
index 0000000..a03d17c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_luxury.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_wood_old.png b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_old.png
new file mode 100644
index 0000000..0111890
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_old.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_wood_plain.png b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_plain.png
new file mode 100644
index 0000000..4df1e39
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_plain.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_generic_wood_red.png b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_red.png
new file mode 100644
index 0000000..f2a3088
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_generic_wood_red.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_face_clean.png b/homedecor_modpack/homedecor/textures/homedecor_glass_face_clean.png
new file mode 100644
index 0000000..18271fe
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_face_clean.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_edges.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_edges.png
new file mode 100644
index 0000000..3225bf7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_inv.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_inv.png
new file mode 100644
index 0000000..f6580c4
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_tb.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_tb.png
new file mode 100644
index 0000000..5862450
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_large_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round.png
new file mode 100644
index 0000000..99cb543
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round_inv.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round_inv.png
new file mode 100644
index 0000000..1ff5d25
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_round_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square.png
new file mode 100644
index 0000000..0f6078b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square_inv.png b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square_inv.png
new file mode 100644
index 0000000..2898c21
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glass_table_small_square_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides.png
new file mode 100644
index 0000000..79dbc83
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides_ceiling.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides_ceiling.png
new file mode 100644
index 0000000..3ef2c37
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_sides_ceiling.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_tb.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_tb.png
new file mode 100644
index 0000000..3aa2387
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_white_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides.png
new file mode 100644
index 0000000..b79be07
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides_ceiling.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides_ceiling.png
new file mode 100644
index 0000000..a9d397a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_sides_ceiling.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_tb.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_tb.png
new file mode 100644
index 0000000..daf03ab
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_cube_yellow_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_white_sides.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_white_sides.png
new file mode 100644
index 0000000..a7dbd08
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_white_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_yellow_sides.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_yellow_sides.png
new file mode 100644
index 0000000..847f75e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thick_yellow_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_white_sides.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_white_sides.png
new file mode 100644
index 0000000..c256a2a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_white_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_yellow_sides.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_yellow_sides.png
new file mode 100644
index 0000000..0a93a70
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_thin_yellow_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_white_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_white_bottom.png
new file mode 100644
index 0000000..47681a9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_white_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_white_top.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_white_top.png
new file mode 100644
index 0000000..f1def03
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_white_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_bottom.png
new file mode 100644
index 0000000..4c74957
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_top.png b/homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_top.png
new file mode 100644
index 0000000..7317e9d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_glowlight_yellow_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face.png b/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face.png
new file mode 100644
index 0000000..de61fbc
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face_edge.png b/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face_edge.png
new file mode 100644
index 0000000..7991f3b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_face_edge.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_inv.png b/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_inv.png
new file mode 100644
index 0000000..26b25e9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_grandfather_clock_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ground_lantern_inv.png b/homedecor_modpack/homedecor/textures/homedecor_ground_lantern_inv.png
new file mode 100644
index 0000000..3e94072
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ground_lantern_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_hanging_lantern_inv.png b/homedecor_modpack/homedecor/textures/homedecor_hanging_lantern_inv.png
new file mode 100644
index 0000000..a5e9a58
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_hanging_lantern_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_heater_back.png b/homedecor_modpack/homedecor/textures/homedecor_heater_back.png
new file mode 100644
index 0000000..ea846b9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_heater_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_heater_front.png b/homedecor_modpack/homedecor/textures/homedecor_heater_front.png
new file mode 100644
index 0000000..8ea9400
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_heater_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_heater_inv.png b/homedecor_modpack/homedecor/textures/homedecor_heater_inv.png
new file mode 100644
index 0000000..d10ade7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_heater_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_heater_sides.png b/homedecor_modpack/homedecor/textures/homedecor_heater_sides.png
new file mode 100644
index 0000000..2e4f0fa
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_heater_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_heater_tb.png b/homedecor_modpack/homedecor/textures/homedecor_heater_tb.png
new file mode 100644
index 0000000..dcfa522
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_heater_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_heating_element.png b/homedecor_modpack/homedecor/textures/homedecor_heating_element.png
new file mode 100644
index 0000000..42e00b7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_heating_element.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_ic.png b/homedecor_modpack/homedecor/textures/homedecor_ic.png
new file mode 100644
index 0000000..4c88894
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_ic.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_japanese_paper.png b/homedecor_modpack/homedecor/textures/homedecor_japanese_paper.png
new file mode 100644
index 0000000..b4a09d1
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_japanese_paper.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_jpn_door_inv.png b/homedecor_modpack/homedecor/textures/homedecor_jpn_door_inv.png
new file mode 100644
index 0000000..189fb58
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_jpn_door_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_bevel.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_bevel.png
new file mode 100644
index 0000000..137eb3e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_bevel.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front.png
new file mode 100644
index 0000000..1021b2d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front_half.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front_half.png
new file mode 100644
index 0000000..bd211e6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_front_half.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top.png
new file mode 100644
index 0000000..983f482
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_granite.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_granite.png
new file mode 100644
index 0000000..82b4bdb
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_granite.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_marble.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_marble.png
new file mode 100644
index 0000000..7f5c1a3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_marble.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_steel.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_steel.png
new file mode 100644
index 0000000..9cc6c7b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_steel.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_wood.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_wood.png
new file mode 100644
index 0000000..983f482
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_cabinet_top_wood.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_faucet_inv.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_faucet_inv.png
new file mode 100644
index 0000000..f1cbe58
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_faucet_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_kitchen_sink_top.png b/homedecor_modpack/homedecor/textures/homedecor_kitchen_sink_top.png
new file mode 100644
index 0000000..a4f7544
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_kitchen_sink_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_lattice.png b/homedecor_modpack/homedecor/textures/homedecor_lattice.png
new file mode 100644
index 0000000..dacc251
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_lattice.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_large.png b/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_large.png
new file mode 100644
index 0000000..ac32230
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_large.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_sides.png b/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_sides.png
new file mode 100644
index 0000000..48c517f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_tb.png b/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_tb.png
new file mode 100644
index 0000000..eb28a0d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_lattice_lantern_small_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_lattice_vegetal.png b/homedecor_modpack/homedecor/textures/homedecor_lattice_vegetal.png
new file mode 100644
index 0000000..b188ec6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_lattice_vegetal.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_light.png b/homedecor_modpack/homedecor/textures/homedecor_light.png
new file mode 100644
index 0000000..ca304e9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_light.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_light_switch_back.png b/homedecor_modpack/homedecor/textures/homedecor_light_switch_back.png
new file mode 100644
index 0000000..8ad7c7e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_light_switch_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_light_switch_edges.png b/homedecor_modpack/homedecor/textures/homedecor_light_switch_edges.png
new file mode 100644
index 0000000..0db6f43
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_light_switch_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_light_switch_front.png b/homedecor_modpack/homedecor/textures/homedecor_light_switch_front.png
new file mode 100644
index 0000000..f91ab5e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_light_switch_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_light_switch_inv.png b/homedecor_modpack/homedecor/textures/homedecor_light_switch_inv.png
new file mode 100644
index 0000000..80bf972
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_light_switch_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_marble.png b/homedecor_modpack/homedecor/textures/homedecor_marble.png
new file mode 100644
index 0000000..9aca475
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_marble.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inside.png b/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inside.png
new file mode 100644
index 0000000..c5cb3e0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inside.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inv.png b/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inv.png
new file mode 100644
index 0000000..d3664bd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_mirror.png b/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_mirror.png
new file mode 100644
index 0000000..9bc2dfb
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_medicine_cabinet_mirror.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_microwave_front.png b/homedecor_modpack/homedecor/textures/homedecor_microwave_front.png
new file mode 100644
index 0000000..8d5319b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_microwave_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_microwave_front_active.png b/homedecor_modpack/homedecor/textures/homedecor_microwave_front_active.png
new file mode 100644
index 0000000..e438a10
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_microwave_front_active.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_microwave_top.png b/homedecor_modpack/homedecor/textures/homedecor_microwave_top.png
new file mode 100644
index 0000000..8f5c3ff
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_microwave_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_motor.png b/homedecor_modpack/homedecor/textures/homedecor_motor.png
new file mode 100644
index 0000000..f19ec0a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_motor.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_1_drawer_front.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_1_drawer_front.png
new file mode 100644
index 0000000..a746efa
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_1_drawer_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_2_drawer_front.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_2_drawer_front.png
new file mode 100644
index 0000000..17b016a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_2_drawer_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_back.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_back.png
new file mode 100644
index 0000000..45a9b7a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_lr.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_lr.png
new file mode 100644
index 0000000..aae8c58
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_lr.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_tb.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_tb.png
new file mode 100644
index 0000000..553a17e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_mahogany_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_1_drawer_front.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_1_drawer_front.png
new file mode 100644
index 0000000..30fcd1e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_1_drawer_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_2_drawer_front.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_2_drawer_front.png
new file mode 100644
index 0000000..07f4c45
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_2_drawer_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_back.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_back.png
new file mode 100644
index 0000000..d1ba23f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_lr.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_lr.png
new file mode 100644
index 0000000..12f1555
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_lr.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_tb.png b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_tb.png
new file mode 100644
index 0000000..f61e63e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_nightstand_oak_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_office_chair_basic.png b/homedecor_modpack/homedecor/textures/homedecor_office_chair_basic.png
new file mode 100644
index 0000000..a12d1d9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_office_chair_basic.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_office_chair_upscale.png b/homedecor_modpack/homedecor/textures/homedecor_office_chair_upscale.png
new file mode 100644
index 0000000..cf21dd5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_office_chair_upscale.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oil_extract.png b/homedecor_modpack/homedecor/textures/homedecor_oil_extract.png
new file mode 100644
index 0000000..e34623d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oil_extract.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_glass.png b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_glass.png
new file mode 100644
index 0000000..3d78e26
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_inv.png b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_inv.png
new file mode 100644
index 0000000..084d1f6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop.png b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop.png
new file mode 100644
index 0000000..2b051b9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop_inv.png b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop_inv.png
new file mode 100644
index 0000000..be014c6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_tabletop_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_wick.png b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_wick.png
new file mode 100644
index 0000000..a888d61
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oil_lamp_wick.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_openframe_bookshelf_books.png b/homedecor_modpack/homedecor/textures/homedecor_openframe_bookshelf_books.png
new file mode 100644
index 0000000..ab677ab
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_openframe_bookshelf_books.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_outlet_back.png b/homedecor_modpack/homedecor/textures/homedecor_outlet_back.png
new file mode 100644
index 0000000..010dcb2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_outlet_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_outlet_edges.png b/homedecor_modpack/homedecor/textures/homedecor_outlet_edges.png
new file mode 100644
index 0000000..1b86f80
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_outlet_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_outlet_inv.png b/homedecor_modpack/homedecor/textures/homedecor_outlet_inv.png
new file mode 100644
index 0000000..0cf5efd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_outlet_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_oven_bottom.png
new file mode 100644
index 0000000..56550a6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_front.png b/homedecor_modpack/homedecor/textures/homedecor_oven_front.png
new file mode 100644
index 0000000..07a9275
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_front_active.png b/homedecor_modpack/homedecor/textures/homedecor_oven_front_active.png
new file mode 100644
index 0000000..0194b5a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_front_active.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_side.png b/homedecor_modpack/homedecor/textures/homedecor_oven_side.png
new file mode 100644
index 0000000..6694b34
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_side.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_steel_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_bottom.png
new file mode 100644
index 0000000..56550a6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_steel_front.png b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_front.png
new file mode 100644
index 0000000..a5935a9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_steel_front_active.png b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_front_active.png
new file mode 100644
index 0000000..73d48f5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_front_active.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_steel_side.png b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_side.png
new file mode 100644
index 0000000..778e581
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_side.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_steel_top.png b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_top.png
new file mode 100644
index 0000000..f2a80f9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_steel_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_oven_top.png b/homedecor_modpack/homedecor/textures/homedecor_oven_top.png
new file mode 100644
index 0000000..cd2f6b4
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_oven_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting1.png b/homedecor_modpack/homedecor/textures/homedecor_painting1.png
new file mode 100644
index 0000000..be637df
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting1.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting10.png b/homedecor_modpack/homedecor/textures/homedecor_painting10.png
new file mode 100644
index 0000000..4e1d5fe
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting10.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting11.png b/homedecor_modpack/homedecor/textures/homedecor_painting11.png
new file mode 100644
index 0000000..5c9133d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting11.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting12.png b/homedecor_modpack/homedecor/textures/homedecor_painting12.png
new file mode 100644
index 0000000..04d9e0c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting12.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting13.png b/homedecor_modpack/homedecor/textures/homedecor_painting13.png
new file mode 100644
index 0000000..9a9f28c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting13.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting14.png b/homedecor_modpack/homedecor/textures/homedecor_painting14.png
new file mode 100644
index 0000000..b7e7080
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting14.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting15.png b/homedecor_modpack/homedecor/textures/homedecor_painting15.png
new file mode 100644
index 0000000..3e6010f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting15.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting16.png b/homedecor_modpack/homedecor/textures/homedecor_painting16.png
new file mode 100644
index 0000000..2e487ef
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting16.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting17.png b/homedecor_modpack/homedecor/textures/homedecor_painting17.png
new file mode 100644
index 0000000..c4ba281
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting17.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting18.png b/homedecor_modpack/homedecor/textures/homedecor_painting18.png
new file mode 100644
index 0000000..04b7403
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting18.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting19.png b/homedecor_modpack/homedecor/textures/homedecor_painting19.png
new file mode 100644
index 0000000..65a3fb3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting19.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting2.png b/homedecor_modpack/homedecor/textures/homedecor_painting2.png
new file mode 100644
index 0000000..abb3fa0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting20.png b/homedecor_modpack/homedecor/textures/homedecor_painting20.png
new file mode 100644
index 0000000..f5e6628
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting20.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting3.png b/homedecor_modpack/homedecor/textures/homedecor_painting3.png
new file mode 100644
index 0000000..55d8b5c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting3.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting4.png b/homedecor_modpack/homedecor/textures/homedecor_painting4.png
new file mode 100644
index 0000000..be4268c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting4.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting5.png b/homedecor_modpack/homedecor/textures/homedecor_painting5.png
new file mode 100644
index 0000000..c5600de
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting5.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting6.png b/homedecor_modpack/homedecor/textures/homedecor_painting6.png
new file mode 100644
index 0000000..d296cb6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting6.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting7.png b/homedecor_modpack/homedecor/textures/homedecor_painting7.png
new file mode 100644
index 0000000..6f251b8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting7.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting8.png b/homedecor_modpack/homedecor/textures/homedecor_painting8.png
new file mode 100644
index 0000000..5944044
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting8.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting9.png b/homedecor_modpack/homedecor/textures/homedecor_painting9.png
new file mode 100644
index 0000000..c8147c9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting9.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_painting_back.png b/homedecor_modpack/homedecor/textures/homedecor_painting_back.png
new file mode 100644
index 0000000..68dbbf5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_painting_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_paper_towel_inv.png b/homedecor_modpack/homedecor/textures/homedecor_paper_towel_inv.png
new file mode 100644
index 0000000..b7d14b4
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_paper_towel_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_paraffin.png b/homedecor_modpack/homedecor/textures/homedecor_paraffin.png
new file mode 100644
index 0000000..77d2bbd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_paraffin.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_piano_inv.png b/homedecor_modpack/homedecor/textures/homedecor_piano_inv.png
new file mode 100644
index 0000000..f061022
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_piano_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_piano_keys.png b/homedecor_modpack/homedecor/textures/homedecor_piano_keys.png
new file mode 100644
index 0000000..6453436
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_piano_keys.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_picture_frame1_inv.png b/homedecor_modpack/homedecor/textures/homedecor_picture_frame1_inv.png
new file mode 100644
index 0000000..cf74685
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_picture_frame1_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_picture_frame2_inv.png b/homedecor_modpack/homedecor/textures/homedecor_picture_frame2_inv.png
new file mode 100644
index 0000000..e35af61
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_picture_frame2_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_picture_frame_back.png b/homedecor_modpack/homedecor/textures/homedecor_picture_frame_back.png
new file mode 100644
index 0000000..9e4489c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_picture_frame_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_picture_frame_image1.png b/homedecor_modpack/homedecor/textures/homedecor_picture_frame_image1.png
new file mode 100644
index 0000000..6c92937
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_picture_frame_image1.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_picture_frame_image2.png b/homedecor_modpack/homedecor/textures/homedecor_picture_frame_image2.png
new file mode 100644
index 0000000..689a354
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_picture_frame_image2.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_glass.png b/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_glass.png
new file mode 100644
index 0000000..91f160e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_inv.png b/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_inv.png
new file mode 100644
index 0000000..8ca81fd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_streamers.png b/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_streamers.png
new file mode 100644
index 0000000..206f7f7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_plasma_ball_streamers.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_plasma_storm.png b/homedecor_modpack/homedecor/textures/homedecor_plasma_storm.png
new file mode 100644
index 0000000..42b7ca4
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_plasma_storm.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_plastic_sheeting.png b/homedecor_modpack/homedecor/textures/homedecor_plastic_sheeting.png
new file mode 100644
index 0000000..034dcc2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_plastic_sheeting.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_plastic_strips.png b/homedecor_modpack/homedecor/textures/homedecor_plastic_strips.png
new file mode 100644
index 0000000..6ec83a8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_plastic_strips.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pole_brass_inv.png b/homedecor_modpack/homedecor/textures/homedecor_pole_brass_inv.png
new file mode 100644
index 0000000..cba8a3d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pole_brass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pole_wrought_iron_inv.png b/homedecor_modpack/homedecor/textures/homedecor_pole_wrought_iron_inv.png
new file mode 100644
index 0000000..0f8e303
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pole_wrought_iron_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_polished_copper.png b/homedecor_modpack/homedecor/textures/homedecor_polished_copper.png
new file mode 100644
index 0000000..672abe2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_polished_copper.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pool_table_baize.png b/homedecor_modpack/homedecor/textures/homedecor_pool_table_baize.png
new file mode 100644
index 0000000..039118c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pool_table_baize.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pool_table_balls.png b/homedecor_modpack/homedecor/textures/homedecor_pool_table_balls.png
new file mode 100644
index 0000000..1cd04b6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pool_table_balls.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pool_table_cue.png b/homedecor_modpack/homedecor/textures/homedecor_pool_table_cue.png
new file mode 100644
index 0000000..fe12d47
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pool_table_cue.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pool_table_inv.png b/homedecor_modpack/homedecor/textures/homedecor_pool_table_inv.png
new file mode 100644
index 0000000..33ce3d5
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pool_table_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_pool_table_pockets.png b/homedecor_modpack/homedecor/textures/homedecor_pool_table_pockets.png
new file mode 100644
index 0000000..28145d4
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_pool_table_pockets.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_power_crystal.png b/homedecor_modpack/homedecor/textures/homedecor_power_crystal.png
new file mode 100644
index 0000000..f1c28e8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_power_crystal.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_projection_screen.png b/homedecor_modpack/homedecor/textures/homedecor_projection_screen.png
new file mode 100644
index 0000000..1c87c00
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_projection_screen.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_projection_screen_inv.png b/homedecor_modpack/homedecor/textures/homedecor_projection_screen_inv.png
new file mode 100644
index 0000000..bc62699
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_projection_screen_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_radiator_controls.png b/homedecor_modpack/homedecor/textures/homedecor_radiator_controls.png
new file mode 100644
index 0000000..28d088b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_radiator_controls.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_radiator_inv.png b/homedecor_modpack/homedecor/textures/homedecor_radiator_inv.png
new file mode 100644
index 0000000..3059f0a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_radiator_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel.png b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel.png
new file mode 100644
index 0000000..7bfe2bb
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel_inv.png b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel_inv.png
new file mode 100644
index 0000000..ef02873
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_steel_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_refrigerator_white.png b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_white.png
new file mode 100644
index 0000000..ee6156a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_white.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_refrigerator_white_inv.png b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_white_inv.png
new file mode 100644
index 0000000..0271e39
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_refrigerator_white_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_roof_tile_terracotta.png b/homedecor_modpack/homedecor/textures/homedecor_roof_tile_terracotta.png
new file mode 100644
index 0000000..e57a135
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_roof_tile_terracotta.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_rope_texture.png b/homedecor_modpack/homedecor/textures/homedecor_rope_texture.png
new file mode 100644
index 0000000..ee4d9d2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_rope_texture.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_rug_large.png b/homedecor_modpack/homedecor/textures/homedecor_rug_large.png
new file mode 100644
index 0000000..b2a441d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_rug_large.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_rug_persian.png b/homedecor_modpack/homedecor/textures/homedecor_rug_persian.png
new file mode 100644
index 0000000..ccbd741
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_rug_persian.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_rug_small.png b/homedecor_modpack/homedecor/textures/homedecor_rug_small.png
new file mode 100644
index 0000000..b2a441d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_rug_small.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt.png
new file mode 100644
index 0000000..8086a16
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt_inv.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt_inv.png
new file mode 100644
index 0000000..d36ca09
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_asphalt_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_glass.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_glass.png
new file mode 100644
index 0000000..c567eb3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta.png
new file mode 100644
index 0000000..4dc43a7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta_inv.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta_inv.png
new file mode 100644
index 0000000..6b02cb8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_terracotta_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_wood.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_wood.png
new file mode 100644
index 0000000..46781f1
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_wood.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shingles_wood_inv.png b/homedecor_modpack/homedecor/textures/homedecor_shingles_wood_inv.png
new file mode 100644
index 0000000..018dad0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shingles_wood_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shower_head.png b/homedecor_modpack/homedecor/textures/homedecor_shower_head.png
new file mode 100644
index 0000000..750d9db
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shower_head.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shower_head_inv.png b/homedecor_modpack/homedecor/textures/homedecor_shower_head_inv.png
new file mode 100644
index 0000000..46d1cf8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shower_head_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_green.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_green.png
new file mode 100644
index 0000000..7434857
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_green.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_green_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_green_bottom.png
new file mode 100644
index 0000000..e8c4a13
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_green_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_red.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_red.png
new file mode 100644
index 0000000..76ec3de
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_red.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_red_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_red_bottom.png
new file mode 100644
index 0000000..1f289fc
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_red_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_roots.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_roots.png
new file mode 100644
index 0000000..b33659e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_roots.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow.png
new file mode 100644
index 0000000..1a8a496
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow_bottom.png
new file mode 100644
index 0000000..8fd3010
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_shrubbery_yellow_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post.png b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post.png
new file mode 100644
index 0000000..02b3cc9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_back.png b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_back.png
new file mode 100644
index 0000000..a520018
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_bottom.png
new file mode 100644
index 0000000..8281d88
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_front.png b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_front.png
new file mode 100644
index 0000000..f3c7c6a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_side.png b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_side.png
new file mode 100644
index 0000000..05b5c85
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_side.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_top.png b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_top.png
new file mode 100644
index 0000000..ebdb241
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_brass_post_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post.png b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post.png
new file mode 100644
index 0000000..94b2a6b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_back.png b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_back.png
new file mode 100644
index 0000000..a0c6e59
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_bottom.png
new file mode 100644
index 0000000..20fdc2c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_front.png b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_front.png
new file mode 100644
index 0000000..5447134
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_side.png b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_side.png
new file mode 100644
index 0000000..a0a3656
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_side.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_top.png b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_top.png
new file mode 100644
index 0000000..0cfcd1d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sign_wrought_iron_post_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_silicon.png b/homedecor_modpack/homedecor/textures/homedecor_silicon.png
new file mode 100644
index 0000000..847b366
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_silicon.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_skateboard.png b/homedecor_modpack/homedecor/textures/homedecor_skateboard.png
new file mode 100644
index 0000000..10a5ffd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_skateboard.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_skateboard_inv.png b/homedecor_modpack/homedecor/textures/homedecor_skateboard_inv.png
new file mode 100644
index 0000000..d7fc7b7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_skateboard_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_skylight_frosted.png b/homedecor_modpack/homedecor/textures/homedecor_skylight_frosted.png
new file mode 100644
index 0000000..810b63c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_skylight_frosted.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_skylight_frosted_inv.png b/homedecor_modpack/homedecor/textures/homedecor_skylight_frosted_inv.png
new file mode 100644
index 0000000..e00585b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_skylight_frosted_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_skylight_inv.png b/homedecor_modpack/homedecor/textures/homedecor_skylight_inv.png
new file mode 100644
index 0000000..c437052
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_skylight_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_soda_can.png b/homedecor_modpack/homedecor/textures/homedecor_soda_can.png
new file mode 100644
index 0000000..2797b6e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_soda_can.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_soda_machine.png b/homedecor_modpack/homedecor/textures/homedecor_soda_machine.png
new file mode 100644
index 0000000..82f0ab9
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_soda_machine.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_speaker_driver.png b/homedecor_modpack/homedecor/textures/homedecor_speaker_driver.png
new file mode 100644
index 0000000..d41f217
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_speaker_driver.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_speaker_driver_inv.png b/homedecor_modpack/homedecor/textures/homedecor_speaker_driver_inv.png
new file mode 100644
index 0000000..729c1d6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_speaker_driver_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_speaker_front.png b/homedecor_modpack/homedecor/textures/homedecor_speaker_front.png
new file mode 100644
index 0000000..a2e53e0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_speaker_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_speaker_open_front.png b/homedecor_modpack/homedecor/textures/homedecor_speaker_open_front.png
new file mode 100644
index 0000000..c02286a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_speaker_open_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_speaker_sides.png b/homedecor_modpack/homedecor/textures/homedecor_speaker_sides.png
new file mode 100644
index 0000000..67b586e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_speaker_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_sport_bench_inv.png b/homedecor_modpack/homedecor/textures/homedecor_sport_bench_inv.png
new file mode 100644
index 0000000..f6bccfa
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_sport_bench_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stained_glass.png b/homedecor_modpack/homedecor/textures/homedecor_stained_glass.png
new file mode 100644
index 0000000..43e86bc
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stained_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_standing_lamp_foot_inv.png b/homedecor_modpack/homedecor/textures/homedecor_standing_lamp_foot_inv.png
new file mode 100644
index 0000000..8efd5ba
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_standing_lamp_foot_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_standing_lamp_top_inv.png b/homedecor_modpack/homedecor/textures/homedecor_standing_lamp_top_inv.png
new file mode 100644
index 0000000..216df54
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_standing_lamp_top_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_steam.png b/homedecor_modpack/homedecor/textures/homedecor_steam.png
new file mode 100644
index 0000000..2de3d1b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_steam.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_steel_strip.png b/homedecor_modpack/homedecor/textures/homedecor_steel_strip.png
new file mode 100644
index 0000000..6384dc8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_steel_strip.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_steel_wire.png b/homedecor_modpack/homedecor/textures/homedecor_steel_wire.png
new file mode 100644
index 0000000..6534de0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_steel_wire.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stereo_back.png b/homedecor_modpack/homedecor/textures/homedecor_stereo_back.png
new file mode 100644
index 0000000..319e88d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stereo_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stereo_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_stereo_bottom.png
new file mode 100644
index 0000000..c52580e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stereo_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stereo_front.png b/homedecor_modpack/homedecor/textures/homedecor_stereo_front.png
new file mode 100644
index 0000000..1ba3b99
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stereo_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stereo_left.png b/homedecor_modpack/homedecor/textures/homedecor_stereo_left.png
new file mode 100644
index 0000000..857f16a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stereo_left.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stereo_top.png b/homedecor_modpack/homedecor/textures/homedecor_stereo_top.png
new file mode 100644
index 0000000..90b908d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stereo_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_stonepath_inv.png b/homedecor_modpack/homedecor/textures/homedecor_stonepath_inv.png
new file mode 100644
index 0000000..e5f3123
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_stonepath_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_swing_inv.png b/homedecor_modpack/homedecor/textures/homedecor_swing_inv.png
new file mode 100644
index 0000000..e10cf78
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_swing_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_swing_top.png b/homedecor_modpack/homedecor/textures/homedecor_swing_top.png
new file mode 100644
index 0000000..4ef1b24
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_swing_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_swingrope_sides.png b/homedecor_modpack/homedecor/textures/homedecor_swingrope_sides.png
new file mode 100644
index 0000000..3c1270f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_swingrope_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_table_lamp_foot_inv.png b/homedecor_modpack/homedecor/textures/homedecor_table_lamp_foot_inv.png
new file mode 100644
index 0000000..eb29b0c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_table_lamp_foot_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_table_lamp_top_inv.png b/homedecor_modpack/homedecor/textures/homedecor_table_lamp_top_inv.png
new file mode 100644
index 0000000..c48029e
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_table_lamp_top_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_table_legs_brass.png b/homedecor_modpack/homedecor/textures/homedecor_table_legs_brass.png
new file mode 100644
index 0000000..219c517
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_table_legs_brass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_table_legs_wrought_iron.png b/homedecor_modpack/homedecor/textures/homedecor_table_legs_wrought_iron.png
new file mode 100644
index 0000000..54d02ee
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_table_legs_wrought_iron.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png b/homedecor_modpack/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png
new file mode 100644
index 0000000..077dd46
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_tatami.png b/homedecor_modpack/homedecor/textures/homedecor_tatami.png
new file mode 100644
index 0000000..da40bd1
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_tatami.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_telephone_base.png b/homedecor_modpack/homedecor/textures/homedecor_telephone_base.png
new file mode 100644
index 0000000..50bc8ae
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_telephone_base.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_telephone_cord.png b/homedecor_modpack/homedecor/textures/homedecor_telephone_cord.png
new file mode 100644
index 0000000..7a089ed
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_telephone_cord.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_telephone_dial.png b/homedecor_modpack/homedecor/textures/homedecor_telephone_dial.png
new file mode 100644
index 0000000..7189601
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_telephone_dial.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_telephone_handset.png b/homedecor_modpack/homedecor/textures/homedecor_telephone_handset.png
new file mode 100644
index 0000000..1c5c0d8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_telephone_handset.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_telephone_inv.png b/homedecor_modpack/homedecor/textures/homedecor_telephone_inv.png
new file mode 100644
index 0000000..793533a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_telephone_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_television_back.png b/homedecor_modpack/homedecor/textures/homedecor_television_back.png
new file mode 100644
index 0000000..33bb786
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_television_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_television_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_television_bottom.png
new file mode 100644
index 0000000..1e9c9fe
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_television_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_television_front.png b/homedecor_modpack/homedecor/textures/homedecor_television_front.png
new file mode 100644
index 0000000..c8d76e7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_television_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_television_front_animated.png b/homedecor_modpack/homedecor/textures/homedecor_television_front_animated.png
new file mode 100644
index 0000000..4599427
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_television_front_animated.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_television_left.png b/homedecor_modpack/homedecor/textures/homedecor_television_left.png
new file mode 100644
index 0000000..03bdfd6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_television_left.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_television_top.png b/homedecor_modpack/homedecor/textures/homedecor_television_top.png
new file mode 100644
index 0000000..4c01844
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_television_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_terracotta_base.png b/homedecor_modpack/homedecor/textures/homedecor_terracotta_base.png
new file mode 100644
index 0000000..9f04aad
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_terracotta_base.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_toaster_inv.png b/homedecor_modpack/homedecor/textures/homedecor_toaster_inv.png
new file mode 100644
index 0000000..7291c0b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_toaster_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_toaster_sides.png b/homedecor_modpack/homedecor/textures/homedecor_toaster_sides.png
new file mode 100644
index 0000000..79395ac
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_toaster_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_toaster_toploaf.png b/homedecor_modpack/homedecor/textures/homedecor_toaster_toploaf.png
new file mode 100644
index 0000000..9cad61f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_toaster_toploaf.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_toilet_paper_inv.png b/homedecor_modpack/homedecor/textures/homedecor_toilet_paper_inv.png
new file mode 100644
index 0000000..d5d1835
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_toilet_paper_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_drawers.png b/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_drawers.png
new file mode 100644
index 0000000..28d857c
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_drawers.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_inv.png b/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_inv.png
new file mode 100644
index 0000000..56f8b20
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_misc.png b/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_misc.png
new file mode 100644
index 0000000..a3237a0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_tool_cabinet_misc.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_towel_rod_inv.png b/homedecor_modpack/homedecor/textures/homedecor_towel_rod_inv.png
new file mode 100644
index 0000000..11b22ca
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_towel_rod_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_trash_can.png b/homedecor_modpack/homedecor/textures/homedecor_trash_can.png
new file mode 100644
index 0000000..da5a3b0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_trash_can.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_trash_can_green_inv.png b/homedecor_modpack/homedecor/textures/homedecor_trash_can_green_inv.png
new file mode 100644
index 0000000..23104dd
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_trash_can_green_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_trash_can_inv.png b/homedecor_modpack/homedecor/textures/homedecor_trash_can_inv.png
new file mode 100644
index 0000000..f257d70
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_trash_can_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_trophy_inv.png b/homedecor_modpack/homedecor/textures/homedecor_trophy_inv.png
new file mode 100644
index 0000000..62ece3f
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_trophy_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_utility_table_edges.png b/homedecor_modpack/homedecor/textures/homedecor_utility_table_edges.png
new file mode 100644
index 0000000..b4b8a1d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_utility_table_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_utility_table_legs.png b/homedecor_modpack/homedecor/textures/homedecor_utility_table_legs.png
new file mode 100644
index 0000000..3fad577
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_utility_table_legs.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_utility_table_legs_inv.png b/homedecor_modpack/homedecor/textures/homedecor_utility_table_legs_inv.png
new file mode 100644
index 0000000..7df2965
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_utility_table_legs_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_utility_table_tb.png b/homedecor_modpack/homedecor/textures/homedecor_utility_table_tb.png
new file mode 100644
index 0000000..7a134e7
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_utility_table_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_vcr.png b/homedecor_modpack/homedecor/textures/homedecor_vcr.png
new file mode 100644
index 0000000..964464b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_vcr.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wall_lamp_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wall_lamp_inv.png
new file mode 100644
index 0000000..12a3d42
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wall_lamp_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wall_sconce_back.png b/homedecor_modpack/homedecor/textures/homedecor_wall_sconce_back.png
new file mode 100644
index 0000000..292433d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wall_sconce_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wall_sconce_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wall_sconce_inv.png
new file mode 100644
index 0000000..cab4269
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wall_sconce_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wardrobe_doors.png b/homedecor_modpack/homedecor/textures/homedecor_wardrobe_doors.png
new file mode 100644
index 0000000..b9c73f2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wardrobe_doors.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wardrobe_drawers.png b/homedecor_modpack/homedecor/textures/homedecor_wardrobe_drawers.png
new file mode 100644
index 0000000..270add6
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wardrobe_drawers.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wardrobe_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wardrobe_inv.png
new file mode 100644
index 0000000..334f9a2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wardrobe_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_washing_machine_back.png b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_back.png
new file mode 100644
index 0000000..cca307a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_washing_machine_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_bottom.png
new file mode 100644
index 0000000..9aea7ab
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_washing_machine_front.png b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_front.png
new file mode 100644
index 0000000..42af474
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_front.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_washing_machine_sides.png b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_sides.png
new file mode 100644
index 0000000..e52d5e3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_washing_machine_top.png b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_top.png
new file mode 100644
index 0000000..8fb23ac
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_washing_machine_top.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_water_particle.png b/homedecor_modpack/homedecor/textures/homedecor_water_particle.png
new file mode 100644
index 0000000..58a2a2d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_water_particle.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_bottom.png b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_bottom.png
new file mode 100644
index 0000000..ec37ebb
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_bottom.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_brown.png b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_brown.png
new file mode 100644
index 0000000..b10ed22
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_brown.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_green.png b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_green.png
new file mode 100644
index 0000000..c58ac96
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_green.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_grey.png b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_grey.png
new file mode 100644
index 0000000..8fa9dd2
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_welcome_mat_grey.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_well_inv.png b/homedecor_modpack/homedecor/textures/homedecor_well_inv.png
new file mode 100644
index 0000000..90c094a
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_well_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_window_frame.png b/homedecor_modpack/homedecor/textures/homedecor_window_frame.png
new file mode 100644
index 0000000..7209ace
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_window_frame.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_window_quartered.png b/homedecor_modpack/homedecor/textures/homedecor_window_quartered.png
new file mode 100644
index 0000000..6d42b95
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_window_quartered.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_window_shutter.png b/homedecor_modpack/homedecor/textures/homedecor_window_shutter.png
new file mode 100644
index 0000000..4335eab
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_window_shutter.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_window_shutter_inv.png b/homedecor_modpack/homedecor/textures/homedecor_window_shutter_inv.png
new file mode 100644
index 0000000..c3f54aa
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_window_shutter_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_window_sides.png b/homedecor_modpack/homedecor/textures/homedecor_window_sides.png
new file mode 100644
index 0000000..dc1ad37
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_window_sides.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_windowblind_strings.png b/homedecor_modpack/homedecor/textures/homedecor_windowblind_strings.png
new file mode 100644
index 0000000..78b9568
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_windowblind_strings.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_windowblind_thick_inv.png b/homedecor_modpack/homedecor/textures/homedecor_windowblind_thick_inv.png
new file mode 100644
index 0000000..63c2ded
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_windowblind_thick_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_windowblind_thin_inv.png b/homedecor_modpack/homedecor/textures/homedecor_windowblind_thin_inv.png
new file mode 100644
index 0000000..5e70dfe
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_windowblind_thin_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_windowblinds.png b/homedecor_modpack/homedecor/textures/homedecor_windowblinds.png
new file mode 100644
index 0000000..fc4ea6b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_windowblinds.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wine_rack_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wine_rack_inv.png
new file mode 100644
index 0000000..6281131
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wine_rack_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_edges.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_edges.png
new file mode 100644
index 0000000..b4b8a1d
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_edges.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_inv.png
new file mode 100644
index 0000000..92fc76b
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_tb.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_tb.png
new file mode 100644
index 0000000..e3615c8
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_large_tb.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round.png
new file mode 100644
index 0000000..74810c0
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round_inv.png
new file mode 100644
index 0000000..d5e5609
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_round_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square.png
new file mode 100644
index 0000000..bdd4129
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square_inv.png b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square_inv.png
new file mode 100644
index 0000000..4e5e2b3
--- /dev/null
+++ b/homedecor_modpack/homedecor/textures/homedecor_wood_table_small_square_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor/trash_cans.lua b/homedecor_modpack/homedecor/trash_cans.lua
new file mode 100644
index 0000000..a7aa5d3
--- /dev/null
+++ b/homedecor_modpack/homedecor/trash_cans.lua
@@ -0,0 +1,64 @@
+local S = homedecor.gettext
+
+local tg_cbox = {
+ type = "fixed",
+ fixed = { -0.35, -0.5, -0.35, 0.35, 0.4, 0.35 }
+}
+
+homedecor.register("trash_can_green", {
+ drawtype = "mesh",
+ mesh = "homedecor_trash_can_green.obj",
+ tiles = { "homedecor_pool_table_baize.png" },
+ inventory_image = "homedecor_trash_can_green_inv.png",
+ description = "Trash Can (green)",
+ groups = {snappy=3},
+ selection_box = tg_cbox,
+ collision_box = tg_cbox,
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.set_node(pos, {name = "homedecor:trash_can_green_open", param2 = node.param2})
+ end
+})
+
+homedecor.register("trash_can_green_open", {
+ drawtype = "mesh",
+ mesh = "homedecor_trash_can_green_open.obj",
+ tiles = { "homedecor_pool_table_baize.png" },
+ groups = {snappy=3, not_in_creative_inventory=1},
+ selection_box = tg_cbox,
+ collision_box = tg_cbox,
+ drop = "homedecor:trash_can_green",
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.set_node(pos, {name = "homedecor:trash_can_green", param2 = node.param2})
+ end,
+ infotext="Trash Can",
+ inventory= {
+ size = 9,
+ formspec = "size[8,9]" .. default.gui_bg .. default.gui_bg_img .. default.gui_slots ..
+ "button[2.5,3.8;3,1;empty;Empty Trash]"..
+ "list[context;main;2.5,0.5;3,3;]"..
+ "list[current_player;main;0,5;8,4;]",
+ },
+ on_receive_fields = function(pos, formname, fields, sender)
+ if fields.empty then
+ local meta = minetest.get_meta(pos)
+ meta:get_inventory():set_list("main", {})
+ minetest.sound_play("homedecor_trash_all", {to_player=sender:get_player_name(), gain = 1.0})
+ end
+ end
+})
+
+local trash_cbox = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0.125, 0.25 }
+}
+
+homedecor.register("trash_can", {
+ drawtype = "mesh",
+ mesh = "homedecor_trash_can.obj",
+ tiles = { "homedecor_trash_can.png" },
+ inventory_image = "homedecor_trash_can_inv.png",
+ description = "Trash Can (small)",
+ groups = {snappy=3},
+ selection_box = trash_cbox,
+ collision_box = trash_cbox,
+})
diff --git a/homedecor_modpack/homedecor/wardrobe.lua b/homedecor_modpack/homedecor/wardrobe.lua
new file mode 100644
index 0000000..86b29ef
--- /dev/null
+++ b/homedecor_modpack/homedecor/wardrobe.lua
@@ -0,0 +1,73 @@
+local S = homedecor.gettext
+
+local wd_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
+}
+
+homedecor.register("wardrobe", {
+ mesh = "homedecor_bedroom_wardrobe.obj",
+ tiles = {
+ homedecor.plain_wood,
+ "homedecor_wardrobe_drawers.png",
+ "homedecor_wardrobe_doors.png"
+ },
+ inventory_image = "homedecor_wardrobe_inv.png",
+ description = "Wardrobe",
+ groups = {snappy=3},
+ selection_box = wd_cbox,
+ collision_box = wd_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ expand = { top="placeholder" },
+ on_rotate = screwdriver.rotate_simple,
+ infotext = "Wardrobe",
+ inventory = {
+ size = 10
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local skins = {"male1", "male2", "male3", "male4", "male5"}
+ -- textures made by the Minetest community (mostly Calinou and Jordach)
+ local clothes_strings = ""
+ for i = 1,5 do
+ clothes_strings = clothes_strings..
+ "image_button_exit["..(i-1)..".5,0;1.1,2;homedecor_clothes_"..skins[i].."_preview.png;"..skins[i]..";]"..
+ "image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skins[i].."_preview.png;fe"..skins[i]..";]"
+ end
+ meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots..
+ "vertlabel[0,0.5;CLOTHES]"..
+ clothes_strings..
+ "vertlabel[0,5.2;STORAGE]"..
+ "list[current_name;main;0.5,4.5;5,2;]"..
+ "list[current_player;main;0.5,6.8;5,2;]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ local skins = {"male1", "male2", "male3", "male4", "male5"}
+ local playerName = sender:get_player_name()
+ local armor_mod = minetest.get_modpath("3d_armor")
+
+ for i = 1,5 do
+ if fields[skins[i]] then
+ if armor_mod then -- if 3D_armor's installed, let it set the skin
+ armor.textures[playerName].skin = "homedecor_clothes_"..skins[i]..".png"
+ armor:update_player_visuals(sender)
+ break
+ end
+ default.player_set_textures(sender, { "homedecor_clothes_"..skins[i]..".png" })
+ break
+ elseif fields["fe"..skins[i]] then
+ if armor_mod then
+ armor.textures[playerName].skin = "homedecor_clothes_fe"..skins[i]..".png"
+ armor:update_player_visuals(sender)
+ break
+ end
+ default.player_set_textures(sender, { skin = "homedecor_clothes_fe"..skins[i]..".png" })
+ break
+ end
+ end
+ end
+})
+
+minetest.register_alias("homedecor:wardrobe_bottom", "homedecor:wardrobe")
+minetest.register_alias("homedecor:wardrobe_top", "air")
diff --git a/homedecor_modpack/homedecor/window_treatments.lua b/homedecor_modpack/homedecor/window_treatments.lua
new file mode 100644
index 0000000..2d9b125
--- /dev/null
+++ b/homedecor_modpack/homedecor/window_treatments.lua
@@ -0,0 +1,219 @@
+local S = homedecor.gettext
+
+homedecor.register("window_quartered", {
+ description = "Window (quartered)",
+ tiles = {
+ "homedecor_window_sides.png",
+ "homedecor_window_sides.png",
+ "homedecor_window_sides.png",
+ "homedecor_window_sides.png",
+ "homedecor_window_quartered.png",
+ "homedecor_window_quartered.png"
+ },
+ use_texture_alpha = true,
+ groups = {snappy=3},
+ sounds = default.node_sound_glass_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.025, 0.5, 0.5, 0}, -- NodeBox1
+ {-0.5, 0.4375, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox2
+ {-0.5, -0.5, -0.0625, 0.5, -0.4375, 0.0625}, -- NodeBox3
+ {-0.5, -0.0625, -0.025, 0.5, 0.0625, 0.025}, -- NodeBox4
+ {0.4375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox5
+ {-0.5, -0.5, -0.0625, -0.4375, 0.5, 0.0625}, -- NodeBox6
+ {-0.0625, -0.5, -0.025, 0.0625, 0.5, 0.025}, -- NodeBox7
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625}
+ }
+})
+
+homedecor.register("window_plain", {
+ description = "Window (plain)",
+ tiles = {
+ "homedecor_window_sides.png",
+ "homedecor_window_sides.png",
+ "homedecor_window_sides.png",
+ "homedecor_window_sides.png",
+ "homedecor_window_frame.png",
+ "homedecor_window_frame.png"
+ },
+ use_texture_alpha = true,
+ groups = {snappy=3},
+ sounds = default.node_sound_glass_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.025, 0.5, 0.5, 0}, -- NodeBox1
+ {-0.5, 0.4375, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox2
+ {-0.5, -0.5, -0.0625, 0.5, -0.4375, 0.0625}, -- NodeBox3
+ {0.4375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox4
+ {-0.5, -0.5, -0.0625, -0.4375, 0.5, 0.0625}, -- NodeBox5
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625}
+ }
+})
+
+local wb1_cbox = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, 5/16, 8/16, 8/16, 8/16 },
+}
+
+homedecor.register("blinds_thick", {
+ description = "Window Blinds (thick)",
+ mesh = "homedecor_windowblind_thick.obj",
+ inventory_image = "homedecor_windowblind_thick_inv.png",
+ tiles = {
+ "homedecor_windowblind_strings.png",
+ "homedecor_windowblinds.png"
+ },
+ walkable = false,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = wb1_cbox
+})
+
+local wb2_cbox = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
+}
+
+homedecor.register("blinds_thin", {
+ description = "Window Blinds (thin)",
+ mesh = "homedecor_windowblind_thin.obj",
+ inventory_image = "homedecor_windowblind_thin_inv.png",
+ tiles = {
+ "homedecor_windowblind_strings.png",
+ "homedecor_windowblinds.png"
+ },
+ walkable = false,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = wb2_cbox
+})
+
+local curtaincolors = {
+ { "red", "#ad2323e0:175" },
+ { "green", "#27a927e0:175" },
+ { "blue", "#2626c6e0:175" },
+ { "white", "#ffffffe0:175" },
+ { "pink", "#ff8fb7e0:175" },
+ { "violet", "#7f29d7e0:175" },
+}
+
+for c in ipairs(curtaincolors) do
+ local color = curtaincolors[c][1]
+ local hue = curtaincolors[c][2]
+ local color_d = S(curtaincolors[c][1])
+
+ homedecor.register("curtain_"..color, {
+ description = S("Curtains (%s)"):format(color_d),
+ tiles = { "homedecor_curtain.png^[colorize:"..hue },
+ inventory_image = "homedecor_curtain.png^[colorize:"..hue,
+ wield_image = "homedecor_curtain.png^[colorize:"..hue,
+ drawtype = 'signlike',
+ use_texture_alpha = true,
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ paramtype2 = 'wallmounted',
+ selection_box = { type = "wallmounted" },
+ -- Open the curtains
+ on_rightclick = function(pos, node, clicker, itemstack)
+ local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
+ if string.find(topnode.name, "homedecor:curtainrod") then
+ local fdir = node.param2
+ minetest.set_node(pos, { name = "homedecor:curtain_open_"..color, param2 = fdir })
+ end
+ end
+ })
+
+ homedecor.register("curtain_open_"..color, {
+ description = S("Curtains (%s)"):format(color_d),
+ tiles = { "homedecor_curtain_open.png^[colorize:"..hue },
+ inventory_image = "homedecor_curtain_open.png^[colorize:"..hue,
+ wield_image = "homedecor_curtain_open.png^[colorize:"..hue,
+ drawtype = 'signlike',
+ use_texture_alpha = true,
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ paramtype2 = 'wallmounted',
+ selection_box = { type = "wallmounted" },
+ -- Close the curtains
+ on_rightclick = function(pos, node, clicker, itemstack)
+ local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
+ if string.find(topnode.name, "homedecor:curtainrod") then
+ local fdir = node.param2
+ minetest.set_node(pos, { name = "homedecor:curtain_"..color, param2 = fdir })
+ end
+ end
+ })
+
+end
+
+local mats = {
+ { "brass", "Brass", "homedecor_generic_metal_brass.png" },
+ { "wrought_iron", "Wrought iron", "homedecor_generic_metal_wrought_iron.png" },
+ { "wood", "Wooden", "default_wood.png" }
+}
+
+for i in ipairs(mats) do
+ local material = mats[i][1]
+ local mat_name = mats[i][2]
+ local texture = mats[i][3]
+ homedecor.register("curtainrod_"..material, {
+ tiles = { texture },
+ inventory_image = "homedecor_curtainrod_"..material.."_inv.png",
+ description = "Curtain Rod ("..mat_name..")",
+ groups = { snappy = 3 },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.375, 0.5, -0.4375, 0.4375},
+ {-0.4375, -0.5, 0.4375, -0.375, -0.4375, 0.5},
+ {0.375, -0.5, 0.4375, 0.4375, -0.4375, 0.5}
+ }
+ }
+ })
+end
+
+homedecor.register("window_flowerbox", {
+ description = "Window flowerbow",
+ tiles = {
+ "homedecor_flowerbox_top.png",
+ "homedecor_flowerbox_bottom.png",
+ "homedecor_flowerbox_sides.png"
+ },
+ inventory_image = "homedecor_flowerbox_inv.png",
+ sounds = default.node_sound_stone_defaults(),
+ groups = { snappy = 3 },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.375, 0.25, -0.125, 0.375, 0.5, 0.375}, -- NodeBox1
+ {-0.3125, 0.4375, 0.375, -0.25, 0.4875, 0.5}, -- NodeBox2
+ {0.25, 0.4375, 0.375, 0.3125, 0.4875, 0.5}, -- NodeBox3
+ }
+ }
+})
+
+homedecor.register("stained_glass", {
+ description = "Stained Glass",
+ tiles = {"homedecor_stained_glass.png"},
+ inventory_image = "homedecor_stained_glass.png",
+ groups = {snappy=3},
+ use_texture_alpha = true,
+ light_source = 3,
+ sounds = default.node_sound_glass_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = { {-0.5, -0.5, 0.46875, 0.5, 0.5, 0.5} }
+ }
+})
diff --git a/homedecor_modpack/homedecor_3d_extras/copyright.txt b/homedecor_modpack/homedecor_3d_extras/copyright.txt
new file mode 100644
index 0000000..690bdc5
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/copyright.txt
@@ -0,0 +1,12 @@
+Most code and all textures by Vanessa Ezekowitz.
+
+Some code copied and modified from the game's default mods (especially
+doors) and ironzorg's flowers mod.
+
+Licenses:
+* For the lua code, LGPL.
+* For the door open/close sound, CC-By-SA 3.0 by Slanesh on freesound.org
+ http://freesound.org/people/Slanesh/sounds/31768/
+* For the gate open/close sound, CC0, by j1987 on freesound.org
+ http://freesound.org/people/j1987/sounds/106116/
+* For all images and everything else, WTFPL.
diff --git a/homedecor_modpack/homedecor_3d_extras/depends.txt b/homedecor_modpack/homedecor_3d_extras/depends.txt
new file mode 100644
index 0000000..e6de01a
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/depends.txt
@@ -0,0 +1,3 @@
+default
+moreblocks?
+vessels?
diff --git a/homedecor_modpack/homedecor_3d_extras/init.lua b/homedecor_modpack/homedecor_3d_extras/init.lua
new file mode 100644
index 0000000..0b18d92
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/init.lua
@@ -0,0 +1,92 @@
+minetest.override_item("default:bookshelf", {
+ drawtype = "mesh",
+ mesh = "3dbookshelf.obj",
+ tiles = {
+ "default_wood.png",
+ "default_wood.png^3dbookshelf_inside_back.png",
+ "3dbookshelf_books.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+})
+
+if minetest.get_modpath("vessels")
+ and minetest.registered_nodes["vessels:shelf"]
+ and minetest.registered_nodes["vessels:glass_bottle"]
+ and minetest.registered_nodes["vessels:drinking_glass"] then
+
+ minetest.override_item("vessels:shelf", {
+ drawtype = "mesh",
+ mesh = "3dvessels_shelf.obj",
+ tiles = {
+ "default_wood.png",
+ "default_wood.png^3dbookshelf_inside_back.png",
+ "3dvessels_shelf_glass.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ use_texture_alpha = true
+ })
+
+ local sbox = {
+ type = "fixed",
+ fixed = { -0.15, -0.5, -0.15, 0.15, -0.1, 0.15 }
+ }
+
+ minetest.override_item("vessels:glass_bottle", {
+ drawtype = "mesh",
+ mesh = "3dvessels_bottle.obj",
+ tiles = {"3dvessels_shelf_glass.png"},
+ inventory_image = "3dvessels_glass_bottle_inv.png",
+ wield_image = "3dvessels_glass_bottle_inv.png",
+ use_texture_alpha = true,
+ selection_box = sbox
+ })
+
+ minetest.override_item("vessels:steel_bottle", {
+ drawtype = "mesh",
+ mesh = "3dvessels_bottle_steel.obj",
+ tiles = {"bottle_metal_bright.png"},
+ inventory_image = "3dvessels_steel_bottle_inv.png",
+ wield_image = "3dvessels_steel_bottle_inv.png",
+ selection_box = sbox
+ })
+
+ minetest.override_item("vessels:drinking_glass", {
+ drawtype = "mesh",
+ mesh = "3dvessels_drink.obj",
+ tiles = {"3dvessels_shelf_glass.png"},
+ inventory_image = "3dvessels_drinking_glass_inv.png",
+ wield_image = "3dvessels_drinking_glass_inv.png",
+ use_texture_alpha = true,
+ selection_box = sbox
+ })
+end
+
+if minetest.get_modpath("moreblocks") then
+ minetest.override_item("moreblocks:empty_bookshelf", {
+ drawtype = "nodebox",
+ tiles = {
+ "default_wood.png^[transformR180",
+ "default_wood.png",
+ "default_wood.png^[transformR90",
+ "default_wood.png^[transformR270",
+ "default_wood.png^3dbookshelf_inside_back.png",
+ "default_wood.png^3dbookshelf_inside_back.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.1875, 0.5, 0.5, 0.1875},
+ {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5},
+ {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5},
+ {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5},
+ {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
+ {-0.5, -0.0625, -0.5, 0.5, 0.0625, 0.5},
+ }
+ }
+ })
+end
+
diff --git a/homedecor_modpack/homedecor_3d_extras/models/3dbookshelf.obj b/homedecor_modpack/homedecor_3d_extras/models/3dbookshelf.obj
new file mode 100644
index 0000000..29308a0
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/models/3dbookshelf.obj
@@ -0,0 +1,696 @@
+# Blender v2.73 (sub 0) OBJ File: '3dbookshelf.blend'
+# www.blender.org
+o bookshelf_nodebox-39
+v 0.437500 0.437500 0.500000
+v 0.437500 0.437500 0.125000
+v 0.437500 -0.437500 0.125000
+v 0.437500 -0.062500 0.125000
+v -0.437500 -0.062500 0.125000
+v -0.437500 -0.062500 -0.500000
+v -0.437500 -0.062500 -0.125000
+v 0.437500 -0.062500 -0.500000
+v 0.437500 -0.062500 -0.125000
+v -0.437500 -0.062500 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.437500 -0.437500 0.500000
+v -0.437500 -0.437500 0.125000
+v -0.437500 0.437500 -0.500000
+v -0.437500 0.437500 -0.125000
+v -0.437500 0.062500 -0.125000
+v -0.437500 0.437500 0.125000
+v -0.437500 0.062500 0.125000
+v 0.437500 -0.437500 -0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.500000 -0.500000
+v 0.437500 -0.437500 -0.125000
+v -0.437500 -0.437500 -0.500000
+v -0.437500 0.437500 0.500000
+v 0.437500 -0.437500 0.500000
+v 0.437500 0.062500 0.500000
+v 0.437500 -0.062500 0.500000
+v 0.437500 0.062500 0.125000
+v -0.437500 0.062500 0.500000
+v -0.437500 0.062500 -0.500000
+v 0.437500 0.437500 -0.125000
+v 0.437500 0.437500 -0.500000
+v 0.437500 0.062500 -0.125000
+v 0.437500 0.375000 -0.125000
+v 0.437500 0.375000 -0.500000
+v 0.312500 0.375000 -0.500000
+v -0.312500 0.250000 -0.125000
+v -0.250000 0.250000 -0.125000
+v -0.250000 0.250000 -0.437500
+v 0.000000 0.312500 -0.437500
+v 0.000000 0.062500 -0.437500
+v -0.062500 0.062500 -0.437500
+v -0.312500 0.062500 -0.437500
+v -0.312500 0.250000 -0.437500
+v 0.000000 -0.187500 -0.437500
+v 0.000000 -0.187500 -0.468750
+v 0.000000 -0.437500 -0.437500
+v 0.000000 0.312500 -0.125000
+v 0.000000 0.437500 -0.125000
+v 0.312500 0.312500 -0.406250
+v 0.312500 0.062500 -0.500000
+v 0.312500 0.062500 -0.406250
+v 0.187500 0.375000 -0.437500
+v 0.187500 0.375000 -0.468750
+v 0.187500 0.062500 -0.437500
+v -0.187500 0.062500 -0.468750
+v -0.250000 0.062500 -0.468750
+v -0.250000 0.312500 -0.468750
+v -0.250000 -0.125000 -0.125000
+v -0.250000 -0.125000 -0.437500
+v -0.250000 -0.062500 -0.125000
+v -0.437500 -0.125000 -0.437500
+v -0.375000 -0.125000 -0.437500
+v -0.375000 -0.437500 -0.437500
+v 0.125000 0.437500 -0.468750
+v 0.125000 0.062500 -0.468750
+v 0.000000 0.062500 -0.468750
+v -0.125000 0.375000 -0.125000
+v -0.125000 0.250000 -0.437500
+v -0.125000 0.250000 -0.125000
+v -0.125000 -0.187500 -0.437500
+v -0.125000 -0.437500 -0.437500
+v -0.250000 -0.437500 -0.437500
+v 0.125000 -0.187500 -0.125000
+v 0.125000 -0.187500 -0.437500
+v 0.125000 -0.125000 -0.125000
+v -0.250000 -0.062500 -0.468750
+v -0.250000 -0.437500 -0.468750
+v -0.375000 -0.437500 -0.468750
+v 0.250000 0.375000 -0.468750
+v 0.250000 0.062500 -0.468750
+v 0.062500 -0.187500 -0.468750
+v 0.062500 -0.437500 -0.468750
+v 0.125000 0.375000 -0.437500
+v -0.437500 0.375000 -0.468750
+v -0.437500 0.375000 -0.125000
+v -0.312500 0.375000 -0.125000
+v -0.187500 0.250000 -0.125000
+v -0.187500 0.250000 -0.437500
+v -0.187500 0.312500 -0.125000
+v -0.312500 0.375000 -0.468750
+v -0.312500 0.062500 -0.468750
+v -0.437500 0.062500 -0.468750
+v -0.062500 -0.187500 -0.468750
+v -0.062500 -0.437500 -0.468750
+v -0.125000 -0.437500 -0.468750
+v 0.250000 -0.187500 -0.437500
+v 0.250000 -0.187500 -0.125000
+v 0.250000 -0.125000 -0.125000
+v -0.375000 -0.062500 -0.125000
+v -0.062500 0.312500 -0.437500
+v 0.125000 -0.125000 -0.468750
+v 0.062500 -0.125000 -0.468750
+v -0.062500 0.375000 -0.125000
+v -0.062500 0.312500 -0.125000
+v -0.125000 -0.187500 -0.468750
+v -0.125000 0.062500 -0.437500
+v -0.187500 0.062500 -0.437500
+v -0.062500 -0.187500 -0.437500
+v -0.062500 -0.437500 -0.437500
+v -0.125000 0.375000 -0.468750
+v -0.062500 0.375000 -0.468750
+v -0.062500 0.062500 -0.468750
+v -0.375000 -0.125000 -0.125000
+v 0.125000 0.437500 -0.125000
+v 0.125000 0.375000 -0.125000
+v 0.250000 0.312500 -0.406250
+v 0.250000 0.062500 -0.406250
+v 0.250000 -0.437500 -0.437500
+v 0.312500 0.312500 -0.125000
+v 0.437500 -0.437500 -0.468750
+v 0.250000 -0.437500 -0.468750
+v 0.250000 -0.125000 -0.468750
+v -0.250000 0.312500 -0.125000
+v 0.437500 -0.125000 -0.125000
+v 0.437500 -0.125000 -0.468750
+v 0.437500 0.062500 -0.500000
+v 0.062500 -0.187500 -0.125000
+v 0.062500 -0.125000 -0.125000
+v 0.500000 -0.500000 -0.500000
+v -0.437500 -0.437500 -0.125000
+v 0.312500 0.375000 -0.125000
+v -0.250000 0.062500 -0.437500
+v 0.000000 0.437500 -0.468750
+v -0.187500 0.312500 -0.468750
+v -0.437500 -0.437500 -0.437500
+v -0.125000 0.062500 -0.468750
+v 0.125000 -0.437500 -0.437500
+v 0.125000 -0.437500 -0.468750
+v -0.375000 -0.062500 -0.468750
+v 0.187500 0.062500 -0.468750
+v 0.000000 -0.437500 -0.468750
+v 0.125000 0.062500 -0.437500
+v -0.437500 -0.125000 -0.125000
+v 0.250000 0.375000 -0.125000
+v 0.250000 0.312500 -0.125000
+v -0.187500 -0.187500 -0.125000
+v -0.187500 -0.187500 -0.437500
+v -0.250000 -0.125000 -0.125000
+v -0.250000 -0.125000 -0.437500
+v -0.187500 -0.125000 -0.125000
+v -0.187500 -0.125000 -0.437500
+v -0.437500 0.375000 0.125000
+v -0.437500 0.375000 0.500000
+v -0.312500 0.375000 0.500000
+v 0.312500 0.250000 0.125000
+v 0.250000 0.250000 0.125000
+v 0.250000 0.250000 0.437500
+v 0.000000 0.312500 0.437500
+v 0.000000 0.062500 0.437500
+v 0.062500 0.062500 0.437500
+v 0.312500 0.062500 0.437500
+v 0.312500 0.250000 0.437500
+v 0.000000 -0.187500 0.437500
+v 0.000000 -0.187500 0.468750
+v 0.000000 -0.437500 0.437500
+v 0.000000 0.312500 0.125000
+v 0.000000 0.437500 0.125000
+v -0.312500 0.312500 0.406250
+v -0.312500 0.062500 0.500000
+v -0.312500 0.062500 0.406250
+v -0.187500 0.375000 0.437500
+v -0.187500 0.375000 0.468750
+v -0.187500 0.062500 0.437500
+v 0.187500 0.062500 0.468750
+v 0.250000 0.062500 0.468750
+v 0.250000 0.312500 0.468750
+v 0.250000 -0.125000 0.125000
+v 0.250000 -0.125000 0.437500
+v 0.250000 -0.062500 0.125000
+v 0.437500 -0.125000 0.437500
+v 0.375000 -0.125000 0.437500
+v 0.375000 -0.437500 0.437500
+v -0.125000 0.437500 0.468750
+v -0.125000 0.062500 0.468750
+v 0.000000 0.062500 0.468750
+v 0.125000 0.375000 0.125000
+v 0.125000 0.250000 0.437500
+v 0.125000 0.250000 0.125000
+v 0.125000 -0.187500 0.437500
+v 0.125000 -0.437500 0.437500
+v 0.250000 -0.437500 0.437500
+v -0.125000 -0.187500 0.125000
+v -0.125000 -0.187500 0.437500
+v -0.125000 -0.125000 0.125000
+v 0.250000 -0.062500 0.468750
+v 0.250000 -0.437500 0.468750
+v 0.375000 -0.437500 0.468750
+v -0.250000 0.375000 0.468750
+v -0.250000 0.062500 0.468750
+v -0.062500 -0.187500 0.468750
+v -0.062500 -0.437500 0.468750
+v -0.125000 0.375000 0.437500
+v 0.437500 0.375000 0.468750
+v 0.437500 0.375000 0.125000
+v 0.312500 0.375000 0.125000
+v 0.187500 0.250000 0.125000
+v 0.187500 0.250000 0.437500
+v 0.187500 0.312500 0.125000
+v 0.312500 0.375000 0.468750
+v 0.312500 0.062500 0.468750
+v 0.437500 0.062500 0.468750
+v 0.062500 -0.187500 0.468750
+v 0.062500 -0.437500 0.468750
+v 0.125000 -0.437500 0.468750
+v -0.250000 -0.187500 0.437500
+v -0.250000 -0.187500 0.125000
+v -0.250000 -0.125000 0.125000
+v 0.375000 -0.062500 0.125000
+v 0.062500 0.312500 0.437500
+v -0.125000 -0.125000 0.468750
+v -0.062500 -0.125000 0.468750
+v 0.062500 0.375000 0.125000
+v 0.062500 0.312500 0.125000
+v 0.125000 -0.187500 0.468750
+v 0.125000 0.062500 0.437500
+v 0.187500 0.062500 0.437500
+v 0.062500 -0.187500 0.437500
+v 0.062500 -0.437500 0.437500
+v 0.125000 0.375000 0.468750
+v 0.062500 0.375000 0.468750
+v 0.062500 0.062500 0.468750
+v 0.375000 -0.125000 0.125000
+v -0.125000 0.437500 0.125000
+v -0.125000 0.375000 0.125000
+v -0.250000 0.312500 0.406250
+v -0.250000 0.062500 0.406250
+v -0.250000 -0.437500 0.437500
+v -0.312500 0.312500 0.125000
+v -0.437500 -0.437500 0.468750
+v -0.250000 -0.437500 0.468750
+v -0.250000 -0.125000 0.468750
+v 0.250000 0.312500 0.125000
+v -0.437500 -0.125000 0.125000
+v -0.437500 -0.125000 0.468750
+v -0.437500 0.062500 0.500000
+v -0.062500 -0.187500 0.125000
+v -0.062500 -0.125000 0.125000
+v -0.312500 0.375000 0.125000
+v 0.250000 0.062500 0.437500
+v 0.000000 0.437500 0.468750
+v 0.187500 0.312500 0.468750
+v 0.437500 -0.437500 0.437500
+v 0.125000 0.062500 0.468750
+v -0.125000 -0.437500 0.437500
+v -0.125000 -0.437500 0.468750
+v 0.375000 -0.062500 0.468750
+v -0.187500 0.062500 0.468750
+v 0.000000 -0.437500 0.468750
+v -0.125000 0.062500 0.437500
+v 0.437500 -0.125000 0.125000
+v -0.250000 0.375000 0.125000
+v -0.250000 0.312500 0.125000
+v 0.187500 -0.187500 0.125000
+v 0.187500 -0.187500 0.437500
+v 0.250000 -0.125000 0.125000
+v 0.250000 -0.125000 0.437500
+v 0.187500 -0.125000 0.125000
+v 0.187500 -0.125000 0.437500
+vt 0.937500 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.000000
+vt 0.937500 0.000000
+vt 0.062500 -0.000000
+vt 0.062500 0.375000
+vt 0.937500 0.562500
+vt 0.937500 0.437500
+vt 0.937500 0.062500
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.062500 1.000000
+vt 0.062500 0.625000
+vt 0.937500 0.625000
+vt 0.437500 0.625000
+vt 0.437500 1.000000
+vt 0.562500 0.625000
+vt 0.562500 1.000000
+vt 0.000000 0.000000
+vt 0.000000 1.000000
+vt 0.062500 0.562500
+vt 0.062500 0.437500
+vt 0.062500 0.062500
+vt 0.062500 0.937500
+vt 0.437500 0.000000
+vt 0.437500 0.375000
+vt 0.875000 0.281250
+vt 0.906250 0.281250
+vt 0.906250 0.421875
+vt 0.875000 0.421875
+vt 0.593750 0.453125
+vt 0.531250 0.453125
+vt 0.531250 0.281250
+vt 0.593750 0.281250
+vt 0.375000 0.281250
+vt 0.406250 0.281250
+vt 0.406250 0.375000
+vt 0.375000 0.375000
+vt 0.046875 0.750000
+vt 0.031250 0.750000
+vt 0.031250 0.625000
+vt 0.046875 0.625000
+vt 0.687500 0.781250
+vt 0.671875 0.781250
+vt 0.671875 0.906250
+vt 0.687500 0.968750
+vt 0.453125 0.687500
+vt 0.265625 0.687500
+vt 0.312500 0.656250
+vt 0.453125 0.656250
+vt 0.515625 0.968750
+vt 0.515625 0.906250
+vt 0.312500 0.375000
+vt 0.312500 0.281250
+vt 0.343750 0.281250
+vt 0.343750 0.375000
+vt 0.781250 0.031250
+vt 0.812500 0.031250
+vt 0.812500 0.203125
+vt 0.781250 0.203125
+vt 0.187500 0.281250
+vt 0.187500 0.437500
+vt 0.156250 0.437500
+vt 0.156250 0.281250
+vt 0.281250 0.406250
+vt 0.250000 0.406250
+vt 0.250000 0.281250
+vt 0.281250 0.281250
+vt 0.281250 0.875000
+vt 0.109375 0.875000
+vt 0.125000 0.843750
+vt 0.281250 0.843750
+vt 0.468750 0.031250
+vt 0.468750 0.187500
+vt 0.437500 0.187500
+vt 0.437500 0.031250
+vt 0.875000 0.031250
+vt 0.968750 0.031250
+vt 0.968750 0.203125
+vt 0.875000 0.203125
+vt 0.312500 0.437500
+vt 0.281250 0.437500
+vt 0.312500 0.156250
+vt 0.281250 0.156250
+vt 0.281250 0.031250
+vt 0.312500 0.031250
+vt 0.125000 0.406250
+vt 0.093750 0.406250
+vt 0.093750 0.281250
+vt 0.125000 0.281250
+vt 0.687500 0.718750
+vt 0.515625 0.718750
+vt 0.515625 0.656250
+vt 0.671875 0.656250
+vt 0.906250 0.812500
+vt 0.921875 0.812500
+vt 0.921875 0.968750
+vt 0.906250 0.937500
+vt 0.671875 0.937500
+vt 0.250000 0.156250
+vt 0.250000 0.031250
+vt 0.921875 0.718750
+vt 0.750000 0.718750
+vt 0.750000 0.750000
+vt 0.921875 0.750000
+vt 0.187500 0.781250
+vt 0.203125 0.750000
+vt 0.203125 0.593750
+vt 0.187500 0.593750
+vt 0.750000 0.968750
+vt 0.750000 0.937500
+vt 0.812500 0.187500
+vt 0.875000 0.187500
+vt 0.718750 0.453125
+vt 0.687500 0.453125
+vt 0.687500 0.281250
+vt 0.718750 0.281250
+vt 0.250000 0.468750
+vt 0.187500 0.468750
+vt 0.906250 0.718750
+vt 0.906250 0.593750
+vt 0.921875 0.593750
+vt 0.437500 0.218750
+vt 0.375000 0.218750
+vt 0.375000 0.031250
+vt 0.343750 0.406250
+vt 0.375000 0.406250
+vt 0.453125 0.968750
+vt 0.281250 0.968750
+vt 0.281250 0.937500
+vt 0.421875 0.937500
+vt 0.515625 0.937500
+vt 0.593750 0.437500
+vt 0.625000 0.281250
+vt 0.625000 0.437500
+vt 0.968750 0.281250
+vt 0.968750 0.468750
+vt 0.906250 0.468750
+vt 0.265625 0.531250
+vt 0.312500 0.531250
+vt 0.656250 0.453125
+vt 0.625000 0.453125
+vt 0.656250 0.281250
+vt 0.046875 0.937500
+vt 0.031250 0.968750
+vt 0.031250 0.812500
+vt 0.046875 0.812500
+vt 0.687500 0.437500
+vt 0.656250 0.437500
+vt 0.093750 0.437500
+vt 0.031250 0.437500
+vt 0.031250 0.281250
+vt 0.187500 0.187500
+vt 0.187500 0.031250
+vt 0.218750 0.031250
+vt 0.218750 0.156250
+vt 0.218750 0.187500
+vt 0.125000 0.437500
+vt 0.109375 0.687500
+vt 0.109375 0.562500
+vt 0.125000 0.562500
+vt 0.125000 0.687500
+vt -1.296875 1.078125
+vt -1.343750 1.234375
+vt 0.906250 0.906250
+vt 0.437500 0.968750
+vt 0.437500 0.812500
+vt 0.453125 0.812500
+vt 0.109375 0.750000
+vt 0.125000 0.750000
+vt 0.359375 0.781250
+vt 0.359375 0.750000
+vt 0.671875 0.562500
+vt 0.687500 0.562500
+vt 0.203125 0.968750
+vt 0.203125 0.937500
+vt 0.468750 0.437500
+vt 0.406250 0.437500
+vt 0.468750 0.281250
+vt 0.421875 0.812500
+vt 0.812500 0.281250
+vt 0.843750 0.437500
+vt 0.750000 0.281250
+vt 0.750000 0.437500
+vt 0.718750 0.437500
+vt 0.750000 0.906250
+vt 0.187500 0.156250
+vt 0.125000 0.156250
+vt 0.125000 0.031250
+vt 0.031250 0.187500
+vt 0.031250 0.031250
+vt 0.125000 0.187500
+vt 0.531250 0.031250
+vt 0.562500 0.031250
+vt 0.562500 0.187500
+vt 0.531250 0.187500
+vt 0.718750 0.187500
+vt 0.656250 0.031250
+vt 0.656250 0.187500
+vt 0.625000 0.187500
+vt 0.625000 0.031250
+vt 0.375000 0.187500
+vt 0.343750 0.187500
+vt 0.343750 0.156250
+vt 0.718750 0.203125
+vt 0.687500 0.203125
+vt 0.687500 0.187500
+vt 0.750000 0.203125
+vt 0.750000 0.187500
+vt 0.812500 0.437500
+vt 0.875000 0.453125
+vt 0.843750 0.453125
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+g bookshelf_nodebox-39_wood
+s off
+f 2/1/1 32/2/1 30/3/1 1/4/1
+f 16/5/2 29/4/2 3/1/2 17/6/2
+f 30/7/3 31/8/3 29/9/3 13/10/3 24/11/3 1/12/3
+f 131/13/2 34/14/2 20/15/2 37/16/2
+f 135/15/2 26/16/2 23/13/2 27/14/2
+f 36/14/4 35/15/4 19/16/4 18/13/4
+f 26/15/1 9/17/1 8/18/1 23/14/1
+f 33/5/2 30/4/2 32/1/2 22/6/2
+f 2/6/4 1/5/4 28/4/4 21/1/4
+f 34/18/5 18/14/5 19/15/5 20/17/5
+f 15/10/6 12/11/6 18/12/6 34/7/6 6/8/6 27/9/6
+f 5/1/4 4/6/4 31/5/4 10/4/4
+f 7/19/5 135/16/5 27/13/5 6/20/5
+f 10/3/5 16/4/5 17/1/5 5/2/5
+f 9/15/4 7/16/4 6/13/4 8/14/4
+f 14/21/1 11/10/1 12/11/1 15/22/1
+f 11/21/2 24/10/2 25/11/2 12/22/2
+f 134/22/4 13/21/4 14/10/4 15/11/4
+f 25/22/5 24/21/5 13/10/5 134/11/5
+f 6/8/6 34/7/6 131/23/6 8/24/6
+f 25/22/6 134/21/6 23/25/6 8/24/6 131/23/6 36/26/6
+f 33/23/3 28/26/3 11/22/3 14/21/3 16/25/3 10/24/3
+f 13/10/3 29/9/3 16/25/3 14/21/3
+f 10/24/3 31/8/3 30/7/3 33/23/3
+f 36/13/1 131/20/1 37/19/1 35/16/1
+f 36/26/6 18/12/6 12/11/6 25/22/6
+f 23/25/6 134/21/6 15/10/6 27/9/6
+f 11/22/3 28/26/3 1/12/3 24/11/3
+f 29/5/1 31/27/1 4/28/1 3/6/1
+f 21/6/5 28/5/5 33/27/5 22/28/5
+g bookshelf_nodebox-39_inside-back
+f 32/23/3 2/26/3 21/12/3 22/7/3
+f 135/9/6 7/8/6 9/24/6 26/25/6
+f 35/26/6 37/23/6 20/7/6 19/12/6
+f 17/9/3 3/25/3 4/24/3 5/8/3
+g bookshelf_nodebox-39_books
+f 150/29/2 124/30/2 54/31/2 121/32/2
+f 95/33/2 89/34/2 90/35/2 91/36/2
+f 137/37/6 47/38/6 48/39/6 43/40/6
+f 75/41/1 110/42/1 100/43/1 76/44/1
+f 71/45/1 45/46/1 44/47/1 138/48/1
+f 136/49/1 40/50/1 54/51/1 124/52/1
+f 53/53/1 138/48/1 44/47/1 52/54/1
+f 73/55/6 111/56/6 112/57/6 93/58/6
+f 133/59/2 80/60/2 106/61/2 107/62/2
+f 147/63/6 88/64/6 57/65/6 59/66/6
+f 105/67/6 44/68/6 45/69/6 46/70/6
+f 128/71/1 62/72/1 43/73/1 42/74/1
+f 140/75/6 66/76/6 67/77/6 68/78/6
+f 103/79/2 129/80/2 130/81/2 127/82/2
+f 141/56/6 115/83/6 116/84/6 117/70/6
+f 110/85/6 98/86/6 99/87/6 100/88/6
+f 121/89/6 54/90/6 56/91/6 122/92/6
+f 95/93/5 91/94/5 41/95/5 48/96/5
+f 46/97/5 117/98/5 116/99/5 105/100/5
+f 147/46/5 70/45/5 69/48/5 88/101/5
+f 113/86/6 49/102/6 51/103/6 114/87/6
+f 86/104/1 132/105/1 133/106/1 107/107/1
+f 81/108/5 64/109/5 77/110/5 82/111/5
+f 116/99/5 108/112/5 109/113/5 105/100/5
+f 79/114/2 78/60/2 102/79/2 101/115/2
+f 116/116/2 115/117/2 72/118/2 108/119/2
+f 83/111/1 68/110/1 67/109/1 144/108/1
+f 138/120/6 69/121/6 70/63/6 71/69/6
+f 106/107/5 79/122/5 142/123/5 143/124/5
+f 144/125/6 81/126/6 82/127/6 83/78/6
+f 93/73/5 139/72/5 94/71/5 92/74/5
+f 139/128/6 60/57/6 61/37/6 62/129/6
+f 84/130/5 149/131/5 150/132/5 121/133/5
+f 69/48/5 119/53/5 120/134/5 88/101/5
+f 79/122/5 106/107/5 80/106/5 78/105/5
+f 48/135/2 41/36/2 42/136/2 43/137/2
+f 136/30/2 38/138/2 39/139/2 40/140/2
+f 54/51/1 40/50/1 55/141/1 56/142/1
+f 114/43/5 99/44/5 98/41/5 113/42/5
+f 139/143/2 62/144/2 128/136/2 94/145/2
+f 101/146/1 127/147/1 126/148/1 123/149/1
+f 73/150/2 93/151/2 92/145/2 74/118/2
+f 55/91/6 40/152/6 39/153/6 131/154/6
+f 106/155/6 143/156/6 87/157/6 86/158/6 107/159/6
+f 145/66/6 58/65/6 84/160/6 85/92/6
+f 50/161/1 146/162/1 51/163/1 49/164/1
+f 151/165/5 152/166/5 156/166/5 155/165/5
+f 115/99/1 141/98/1 111/97/1 73/167/1
+f 58/168/1 145/169/1 59/170/1 57/130/1
+f 61/171/1 137/172/1 43/73/1 62/72/1
+f 64/109/5 81/108/5 65/173/5 63/174/5
+f 47/175/5 96/176/5 95/93/5 48/96/5
+f 103/177/1 127/147/1 101/146/1 102/178/1
+f 139/72/5 93/73/5 112/172/5 60/171/5
+f 89/179/6 95/180/6 96/38/6 97/181/6
+f 104/173/1 144/108/1 67/109/1 118/174/1
+f 84/130/5 121/133/5 122/182/5 85/170/5
+f 120/183/2 149/29/2 57/184/2
+f 109/119/2 52/185/2 44/186/2 105/187/2
+f 115/99/1 73/167/1 74/188/1 72/112/1
+f 146/103/6 50/102/6 86/158/6 87/157/6
+f 142/156/6 79/189/6 101/190/6 123/191/6
+f 130/192/6 125/193/6 126/191/6 127/194/6
+f 148/195/2 118/196/2 67/197/2 66/198/2
+f 113/199/2 151/200/2 132/59/2
+f 156/201/2 154/202/2 153/203/2 155/200/2
+f 64/204/6 156/205/6 152/206/6
+f 267/29/2 243/30/2 173/31/2 240/32/2
+f 214/33/2 208/34/2 209/35/2 210/36/2
+f 254/37/3 166/38/3 167/39/3 162/40/3
+f 194/41/5 229/42/5 219/43/5 195/44/5
+f 190/45/5 164/46/5 163/47/5 255/48/5
+f 253/49/5 159/50/5 173/51/5 243/52/5
+f 172/53/5 255/48/5 163/47/5 171/54/5
+f 192/55/3 230/56/3 231/57/3 212/58/3
+f 252/59/2 199/60/2 225/61/2 226/62/2
+f 264/63/3 207/64/3 176/65/3 178/66/3
+f 224/67/3 163/68/3 164/69/3 165/70/3
+f 247/71/5 181/72/5 162/73/5 161/74/5
+f 257/75/3 185/76/3 186/77/3 187/78/3
+f 222/79/2 248/80/2 249/81/2 246/82/2
+f 258/56/3 234/83/3 235/84/3 236/70/3
+f 229/85/3 217/86/3 218/87/3 219/88/3
+f 240/89/3 173/90/3 175/91/3 241/92/3
+f 214/93/1 210/94/1 160/95/1 167/96/1
+f 165/97/1 236/98/1 235/99/1 224/100/1
+f 264/46/1 189/45/1 188/48/1 207/101/1
+f 232/86/3 168/102/3 170/103/3 233/87/3
+f 205/104/5 251/105/5 252/106/5 226/107/5
+f 200/108/1 183/109/1 196/110/1 201/111/1
+f 235/99/1 227/112/1 228/113/1 224/100/1
+f 198/114/2 197/60/2 221/79/2 220/115/2
+f 235/116/2 234/117/2 191/118/2 227/119/2
+f 202/111/5 187/110/5 186/109/5 261/108/5
+f 255/120/3 188/121/3 189/63/3 190/69/3
+f 225/107/1 198/122/1 259/123/1 260/124/1
+f 261/125/3 200/126/3 201/127/3 202/78/3
+f 212/73/1 256/72/1 213/71/1 211/74/1
+f 256/128/3 179/57/3 180/37/3 181/129/3
+f 203/130/1 266/131/1 267/132/1 240/133/1
+f 188/48/1 238/53/1 239/134/1 207/101/1
+f 198/122/1 225/107/1 199/106/1 197/105/1
+f 167/135/2 160/36/2 161/136/2 162/137/2
+f 253/30/2 157/138/2 158/139/2 159/140/2
+f 173/51/5 159/50/5 174/141/5 175/142/5
+f 233/43/1 218/44/1 217/41/1 232/42/1
+f 256/143/2 181/144/2 247/136/2 213/145/2
+f 220/146/5 246/147/5 245/148/5 242/149/5
+f 192/150/2 212/151/2 211/145/2 193/118/2
+f 174/91/3 159/152/3 158/153/3 250/154/3
+f 225/155/3 260/156/3 206/157/3 205/158/3 226/159/3
+f 262/66/3 177/65/3 203/160/3 204/92/3
+f 169/161/5 263/162/5 170/163/5 168/164/5
+f 268/165/1 269/166/1 273/166/1 272/165/1
+f 234/99/5 258/98/5 230/97/5 192/167/5
+f 177/168/5 262/169/5 178/170/5 176/130/5
+f 180/171/5 254/172/5 162/73/5 181/72/5
+f 183/109/1 200/108/1 184/173/1 182/174/1
+f 166/175/1 215/176/1 214/93/1 167/96/1
+f 222/177/5 246/147/5 220/146/5 221/178/5
+f 256/72/1 212/73/1 231/172/1 179/171/1
+f 208/179/3 214/180/3 215/38/3 216/181/3
+f 223/173/5 261/108/5 186/109/5 237/174/5
+f 203/130/1 240/133/1 241/182/1 204/170/1
+f 239/183/2 266/29/2 176/184/2
+f 228/119/2 171/185/2 163/186/2 224/187/2
+f 234/99/5 192/167/5 193/188/5 191/112/5
+f 263/103/3 169/102/3 205/158/3 206/157/3
+f 259/156/3 198/189/3 220/190/3 242/191/3
+f 249/192/3 244/193/3 245/191/3 246/194/3
+f 265/195/2 237/196/2 186/197/2 185/198/2
+f 232/199/2 268/200/2 251/59/2
+f 273/201/2 271/202/2 270/203/2 272/200/2
+f 183/204/3 273/205/3 269/206/3
+f 98/207/2 110/208/2 75/209/2
+f 86/62/2 50/210/2 49/211/2
+f 113/199/2 98/207/2 75/209/2
+f 132/59/2 86/62/2 49/211/2
+f 151/200/2 113/199/2 75/209/2
+f 75/209/2 152/201/2 151/200/2
+f 113/199/2 132/59/2 49/211/2
+f 217/207/2 229/208/2 194/209/2
+f 205/62/2 169/210/2 168/211/2
+f 232/199/2 217/207/2 194/209/2
+f 251/59/2 205/62/2 168/211/2
+f 268/200/2 232/199/2 194/209/2
+f 194/209/2 269/201/2 268/200/2
+f 232/199/2 251/59/2 168/211/2
+f 152/206/6 77/127/6 64/204/6
+f 152/206/6 75/85/6 76/88/6
+f 64/204/3 154/204/3 156/205/3
+f 152/206/6 76/88/6 77/127/6
+f 269/206/3 196/127/3 183/204/3
+f 269/206/3 194/85/3 195/88/3
+f 183/204/3 271/204/3 273/205/3
+f 269/206/3 195/88/3 196/127/3
+f 57/184/2 88/212/2 120/183/2
+f 84/213/2 58/214/2 57/184/2
+f 57/184/2 149/29/2 84/213/2
+f 176/184/2 207/212/2 239/183/2
+f 203/213/2 177/214/2 176/184/2
+f 176/184/2 266/29/2 203/213/2
diff --git a/homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle.obj b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle.obj
new file mode 100644
index 0000000..03e780b
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle.obj
@@ -0,0 +1,216 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib 3dvesselbottle.mtl
+o glass_bottle
+v 0.012054 -0.152742 0.028345
+v 0.010687 -0.139846 0.025046
+v -0.010104 -0.139846 0.025046
+v -0.011470 -0.152742 0.028345
+v -0.024805 -0.139846 0.010345
+v -0.028104 -0.152742 0.011711
+v -0.024805 -0.139846 -0.010446
+v -0.028104 -0.152742 -0.011813
+v -0.010103 -0.139846 -0.025148
+v -0.011470 -0.152742 -0.028447
+v 0.010687 -0.139846 -0.025148
+v 0.012054 -0.152742 -0.028447
+v 0.025389 -0.139846 -0.010446
+v 0.028688 -0.152742 -0.011813
+v 0.025389 -0.139846 0.010345
+v 0.028688 -0.152742 0.011711
+v 0.031611 -0.499996 0.075560
+v -0.031027 -0.499996 0.075560
+v -0.075319 -0.499996 0.031268
+v -0.075319 -0.499996 -0.031370
+v -0.031027 -0.499996 -0.075662
+v 0.031611 -0.499996 -0.075662
+v 0.075903 -0.499996 -0.031370
+v 0.075903 -0.499996 0.031268
+v 0.084304 -0.294604 -0.034850
+v 0.019356 -0.191432 -0.007947
+v 0.019356 -0.191432 0.007846
+v 0.084304 -0.294604 0.034748
+v 0.008188 -0.191432 0.019013
+v 0.035091 -0.294604 0.083961
+v 0.035091 -0.294604 -0.084063
+v 0.008188 -0.191432 -0.019115
+v -0.034507 -0.294604 -0.084063
+v -0.007604 -0.191432 -0.019115
+v -0.083720 -0.294604 -0.034850
+v -0.018772 -0.191432 -0.007947
+v -0.083720 -0.294604 0.034748
+v -0.018772 -0.191432 0.007846
+v -0.034507 -0.294604 0.083961
+v -0.007605 -0.191432 0.019013
+v 0.008188 -0.165639 0.019013
+v -0.007605 -0.165639 0.019013
+v -0.018772 -0.165639 0.007846
+v -0.018772 -0.165639 -0.007947
+v -0.007604 -0.165639 -0.019115
+v 0.008188 -0.165639 -0.019115
+v 0.019356 -0.165639 -0.007947
+v 0.019356 -0.165639 0.007846
+v 0.037642 -0.464327 0.090121
+v 0.039774 -0.371983 0.095268
+v -0.039190 -0.371983 0.095268
+v -0.037059 -0.464327 0.090121
+v -0.095027 -0.371983 0.039431
+v -0.089880 -0.464327 0.037300
+v -0.095027 -0.371983 -0.039533
+v -0.089880 -0.464327 -0.037401
+v -0.039190 -0.371983 -0.095370
+v -0.037058 -0.464327 -0.090223
+v 0.039774 -0.371983 -0.095370
+v 0.037642 -0.464327 -0.090223
+v 0.095611 -0.371983 -0.039533
+v 0.090464 -0.464327 -0.037401
+v 0.090464 -0.464327 0.037300
+v 0.095611 -0.371983 0.039431
+vt 0.250000 0.750000
+vt 0.250000 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.750000
+vt 0.000000 0.875000
+vt 0.000000 0.750000
+vt 1.000000 0.750000
+vt 1.000000 0.875000
+vt 0.875000 0.875000
+vt 0.875000 0.750000
+vt 0.750000 0.875000
+vt 0.750000 0.750000
+vt 0.625000 0.875000
+vt 0.625000 0.750000
+vt 0.500000 0.875000
+vt 0.500000 0.750000
+vt 0.375000 0.750000
+vt 0.375000 0.875000
+vt 0.500000 0.375000
+vt 0.500000 0.500000
+vt 0.375000 0.500000
+vt 0.375000 0.375000
+vt 0.250000 0.500000
+vt 0.250000 0.375000
+vt 0.625000 0.375000
+vt 0.625000 0.500000
+vt 0.750000 0.375000
+vt 0.750000 0.500000
+vt 0.875000 0.375000
+vt 0.875000 0.500000
+vt 1.000000 0.375000
+vt 1.000000 0.500000
+vt 0.125000 0.375000
+vt 0.125000 0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.375000
+vt 0.250000 0.625000
+vt 0.125000 0.625000
+vt 0.000000 0.625000
+vt 1.000000 0.625000
+vt 0.875000 0.625000
+vt 0.750000 0.625000
+vt 0.625000 0.625000
+vt 0.500000 0.625000
+vt 0.375000 0.625000
+vt 0.250000 0.125000
+vt 0.250000 0.250000
+vt 0.125000 0.250000
+vt 0.125000 0.125000
+vt 0.000000 0.250000
+vt 0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 0.875000 0.250000
+vt 0.875000 0.125000
+vt 0.750000 0.250000
+vt 0.750000 0.125000
+vt 0.625000 0.250000
+vt 0.625000 0.125000
+vt 0.500000 0.250000
+vt 0.500000 0.125000
+vt 0.375000 0.125000
+vt 0.375000 0.250000
+vt 0.500000 -0.000000
+vt 0.375000 -0.000000
+vt 0.250000 -0.000000
+vt 0.625000 -0.000000
+vt 0.750000 -0.000000
+vt 0.875000 -0.000000
+vt 1.000000 0.000000
+vt 0.125000 -0.000000
+vt 0.000000 0.000000
+vt 0.341044 0.514065
+vt 0.341044 0.485935
+vt 0.360935 0.466044
+vt 0.389065 0.466044
+vt 0.408956 0.485935
+vt 0.408956 0.514065
+vt 0.389065 0.533956
+vt 0.360935 0.533956
+vt 0.727303 0.457625
+vt 0.667375 0.397697
+vt 0.582625 0.397697
+vt 0.522698 0.457625
+vt 0.522698 0.542375
+vt 0.582625 0.602302
+vt 0.667375 0.602302
+vt 0.727303 0.542375
+usemtl None
+s 1
+f 1/1 2/2 3/3 4/4
+f 4/4 3/3 5/5 6/6
+f 6/7 5/8 7/9 8/10
+f 8/10 7/9 9/11 10/12
+f 10/12 9/11 11/13 12/14
+f 12/14 11/13 13/15 14/16
+f 16/17 15/18 2/2 1/1
+f 14/16 13/15 15/18 16/17
+f 25/19 26/20 27/21 28/22
+f 28/22 27/21 29/23 30/24
+f 31/25 32/26 26/20 25/19
+f 33/27 34/28 32/26 31/25
+f 35/29 36/30 34/28 33/27
+f 37/31 38/32 36/30 35/29
+f 39/33 40/34 38/35 37/36
+f 30/24 29/23 40/34 39/33
+f 41/37 1/1 4/4 42/38
+f 42/38 4/4 6/6 43/39
+f 43/40 6/7 8/10 44/41
+f 44/41 8/10 10/12 45/42
+f 45/42 10/12 12/14 46/43
+f 46/43 12/14 14/16 47/44
+f 48/45 16/17 1/1 41/37
+f 26/20 47/44 48/45 27/21
+f 27/21 48/45 41/37 29/23
+f 32/26 46/43 47/44 26/20
+f 34/28 45/42 46/43 32/26
+f 36/30 44/41 45/42 34/28
+f 38/32 43/40 44/41 36/30
+f 40/34 42/38 43/39 38/35
+f 29/23 41/37 42/38 40/34
+f 49/46 50/47 51/48 52/49
+f 52/49 51/48 53/50 54/51
+f 54/52 53/53 55/54 56/55
+f 56/55 55/54 57/56 58/57
+f 58/57 57/56 59/58 60/59
+f 60/59 59/58 61/60 62/61
+f 63/62 64/63 50/47 49/46
+f 62/61 61/60 64/63 63/62
+f 47/44 14/16 16/17 48/45
+f 23/64 62/61 63/62 24/65
+f 24/65 63/62 49/46 17/66
+f 22/67 60/59 62/61 23/64
+f 21/68 58/57 60/59 22/67
+f 20/69 56/55 58/57 21/68
+f 19/70 54/52 56/55 20/69
+f 18/71 52/49 54/51 19/72
+f 50/47 30/24 39/33 51/48
+f 51/48 39/33 37/36 53/50
+f 53/53 37/31 35/29 55/54
+f 55/54 35/29 33/27 57/56
+f 57/56 33/27 31/25 59/58
+f 59/58 31/25 25/19 61/60
+f 64/63 28/22 30/24 50/47
+f 61/60 25/19 28/22 64/63
+f 17/66 49/46 52/49 18/71
+f 15/73 13/74 11/75 9/76 7/77 5/78 3/79 2/80
+f 20/81 21/82 22/83 23/84 24/85 17/86 18/87 19/88
diff --git a/homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle_steel.obj b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle_steel.obj
new file mode 100644
index 0000000..a82ec17
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_bottle_steel.obj
@@ -0,0 +1,180 @@
+# Blender v2.73 (sub 0) OBJ File: ''
+# www.blender.org
+o glass_bottle
+v 0.018918 -0.139846 0.044919
+v -0.018336 -0.139846 0.044919
+v -0.044678 -0.139846 0.018577
+v -0.044678 -0.139846 -0.018677
+v -0.018334 -0.139846 -0.045021
+v 0.018918 -0.139846 -0.045021
+v 0.045262 -0.139846 -0.018677
+v 0.045262 -0.139846 0.018577
+v 0.125195 -0.294604 -0.051788
+v 0.045233 -0.191432 -0.018665
+v 0.045233 -0.191432 0.018565
+v 0.125195 -0.294604 0.051685
+v 0.018906 -0.191432 0.044889
+v 0.052029 -0.294604 0.124852
+v 0.052029 -0.294604 -0.124954
+v 0.018906 -0.191432 -0.044992
+v -0.051445 -0.294604 -0.124954
+v -0.018321 -0.191432 -0.044992
+v -0.124611 -0.294604 -0.051788
+v -0.044648 -0.191432 -0.018665
+v -0.124611 -0.294604 0.051685
+v -0.044648 -0.191432 0.018565
+v -0.051445 -0.294604 0.124852
+v -0.018324 -0.191432 0.044889
+v 0.052035 -0.464327 0.124870
+v -0.051453 -0.464327 0.124870
+v -0.124629 -0.464327 0.051694
+v -0.124629 -0.464327 -0.051794
+v -0.051451 -0.464327 -0.124972
+v 0.052035 -0.464327 -0.124972
+v 0.125213 -0.464327 -0.051794
+v 0.125213 -0.464327 0.051694
+v 0.105041 -0.499996 -0.043439
+v 0.105041 -0.499996 0.043337
+v 0.043680 -0.499996 0.104698
+v 0.043680 -0.499996 -0.104800
+v -0.043096 -0.499996 -0.104800
+v -0.104457 -0.499996 -0.043439
+v -0.104457 -0.499996 0.043337
+v -0.043096 -0.499996 0.104698
+vt 0.750000 0.562500
+vt 0.750000 0.687500
+vt 0.625000 0.687500
+vt 0.625000 0.562500
+vt 0.500000 0.375000
+vt 0.500000 0.562500
+vt 0.375000 0.562500
+vt 0.375000 0.375000
+vt 0.250000 0.562500
+vt 0.250000 0.375000
+vt 0.625000 0.375000
+vt 0.750000 0.375000
+vt 0.875000 0.375000
+vt 0.875000 0.562500
+vt 1.000000 0.375000
+vt 1.000000 0.562500
+vt 0.125000 0.375000
+vt 0.125000 0.562500
+vt 0.000000 0.562500
+vt 0.000000 0.375000
+vt 0.250000 0.687500
+vt 0.375000 0.687500
+vt 1.000000 0.687500
+vt 0.875000 0.687500
+vt 0.500000 0.687500
+vt 0.125000 0.687500
+vt 0.000000 0.687500
+vt 0.875000 0.125000
+vt 1.000000 0.125000
+vt 0.625000 0.125000
+vt 0.750000 0.125000
+vt 0.375000 0.125000
+vt 0.500000 0.125000
+vt 0.250000 0.125000
+vt 0.125000 0.125000
+vt 0.000000 0.125000
+vt 0.500000 -0.000000
+vt 0.375000 -0.000000
+vt 0.250000 -0.000000
+vt 0.625000 -0.000000
+vt 0.750000 -0.000000
+vt 0.875000 -0.000000
+vt 1.000000 0.000000
+vt 0.125000 -0.000000
+vt 0.000000 0.000000
+vt 0.602303 0.167375
+vt 0.602303 0.082625
+vt 0.542375 0.022697
+vt 0.457625 0.022697
+vt 0.397698 0.082625
+vt 0.397698 0.167375
+vt 0.457625 0.227302
+vt 0.542375 0.227302
+vt 0.783956 0.889065
+vt 0.764065 0.908956
+vt 0.735935 0.908956
+vt 0.716044 0.889065
+vt 0.716044 0.860935
+vt 0.735935 0.841044
+vt 0.764065 0.841044
+vt 0.783956 0.860935
+vn -0.355200 0.371800 -0.857600
+vn -0.297200 0.630000 -0.717400
+vn 0.297200 0.630000 -0.717400
+vn 0.355200 0.371800 -0.857600
+vn 0.875900 0.317800 -0.362800
+vn 0.857600 0.371800 -0.355200
+vn 0.857600 0.371800 0.355200
+vn 0.875900 0.317800 0.362800
+vn 0.355200 0.371800 0.857600
+vn 0.362800 0.317800 0.875900
+vn 0.362800 0.317800 -0.875900
+vn -0.362800 0.317800 -0.875900
+vn -0.875900 0.317800 -0.362800
+vn -0.857600 0.371800 -0.355200
+vn -0.875900 0.317800 0.362800
+vn -0.857600 0.371800 0.355200
+vn -0.362800 0.317800 0.875900
+vn -0.355200 0.371800 0.857600
+vn 0.297200 0.630000 0.717500
+vn 0.717400 0.630000 0.297200
+vn -0.717500 0.630000 0.297200
+vn -0.717500 0.630000 -0.297200
+vn 0.717400 0.630000 -0.297200
+vn -0.297200 0.630000 0.717500
+vn -0.893200 -0.255300 -0.370000
+vn -0.893200 -0.255300 0.370000
+vn 0.370000 -0.255300 -0.893200
+vn -0.370000 -0.255300 -0.893200
+vn 0.893200 -0.255300 0.370000
+vn 0.893200 -0.255300 -0.370000
+vn 0.370000 -0.255300 0.893200
+vn -0.370000 -0.255300 0.893200
+vn 0.527200 -0.821200 -0.218400
+vn 0.527200 -0.821200 0.218400
+vn 0.218400 -0.821200 0.527200
+vn 0.218400 -0.821200 -0.527200
+vn -0.218400 -0.821200 -0.527200
+vn -0.527200 -0.821200 -0.218400
+vn -0.527200 -0.821200 0.218400
+vn -0.218400 -0.821200 0.527200
+g glass_bottle_glass_bottle_None
+s 1
+f 18/1/1 5/2/2 6/3/3 16/4/4
+f 9/5/5 10/6/6 11/7/7 12/8/8
+f 12/8/8 11/7/7 13/9/9 14/10/10
+f 15/11/11 16/4/4 10/6/6 9/5/5
+f 17/12/12 18/1/1 16/4/4 15/11/11
+f 19/13/13 20/14/14 18/1/1 17/12/12
+f 21/15/15 22/16/16 20/14/14 19/13/13
+f 23/17/17 24/18/18 22/19/16 21/20/15
+f 14/10/10 13/9/9 24/18/18 23/17/17
+f 1/21/19 13/9/9 11/7/7 8/22/20
+f 22/16/16 3/23/21 4/24/22 20/14/14
+f 20/14/14 4/24/22 5/2/2 18/1/1
+f 10/6/6 7/25/23 8/22/20 11/7/7
+f 2/26/24 3/27/21 22/19/16 24/18/18
+f 13/9/9 1/21/19 2/26/24 24/18/18
+f 16/4/4 6/3/3 7/25/23 10/6/6
+f 21/15/15 19/13/13 28/28/25 27/29/26
+f 17/12/12 15/11/11 30/30/27 29/31/28
+f 9/5/5 12/8/8 32/32/29 31/33/30
+f 12/8/8 14/10/10 25/34/31 32/32/29
+f 14/10/10 23/17/17 26/35/32 25/34/31
+f 23/17/17 21/20/15 27/36/26 26/35/32
+f 19/13/13 17/12/12 29/31/28 28/28/25
+f 33/37/33 31/33/30 32/32/29 34/38/34
+f 34/38/34 32/32/29 25/34/31 35/39/35
+f 36/40/36 30/30/27 31/33/30 33/37/33
+f 37/41/37 29/31/28 30/30/27 36/40/36
+f 38/42/38 28/28/25 29/31/28 37/41/37
+f 39/43/39 27/29/26 28/28/25 38/42/38
+f 40/44/40 26/35/32 27/36/26 39/45/39
+f 35/39/35 25/34/31 26/35/32 40/44/40
+f 39/46/39 38/47/38 37/48/37 36/49/36 33/50/33 34/51/34 35/52/35 40/53/40
+f 3/54/21 2/55/24 1/56/19 8/57/20 7/58/23 6/59/3 5/60/2 4/61/22
+f 30/30/27 15/11/11 9/5/5 31/33/30
diff --git a/homedecor_modpack/homedecor_3d_extras/models/3dvessels_drink.obj b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_drink.obj
new file mode 100644
index 0000000..f6cefac
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_drink.obj
@@ -0,0 +1,204 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib 3dvesseldrink.mtl
+o Torus.001
+v 0.027435 -0.500000 0.137430
+v -0.027433 -0.500000 0.137430
+v -0.078125 -0.500000 0.116433
+v -0.116923 -0.500000 0.077635
+v -0.137920 -0.500000 0.026944
+v -0.137920 -0.500000 -0.027925
+v -0.116923 -0.500000 -0.078617
+v -0.078125 -0.500000 -0.117415
+v -0.027433 -0.500000 -0.138412
+v 0.027435 -0.500000 -0.138412
+v 0.078127 -0.500000 -0.117415
+v 0.116925 -0.500000 -0.078617
+v 0.137922 -0.500000 -0.027925
+v 0.137922 -0.500000 0.026943
+v 0.116925 -0.500000 0.077635
+v 0.078127 -0.500000 0.116433
+v 0.078127 -0.125001 0.116433
+v 0.116925 -0.125001 0.077635
+v 0.102550 -0.125001 0.068030
+v 0.068522 -0.125001 0.102058
+v 0.078127 -0.125001 -0.117415
+v 0.027435 -0.125001 -0.138412
+v 0.024062 -0.125001 -0.121456
+v 0.068522 -0.125001 -0.103040
+v -0.137921 -0.125001 -0.027925
+v -0.137921 -0.125001 0.026944
+v -0.120964 -0.125001 0.023571
+v -0.120964 -0.125001 -0.024552
+v 0.027435 -0.125001 0.137430
+v 0.024062 -0.125001 0.120474
+v 0.116925 -0.125001 -0.078617
+v 0.102550 -0.125001 -0.069012
+v -0.116923 -0.125001 -0.078617
+v -0.102548 -0.125001 -0.069012
+v 0.137922 -0.125001 -0.027925
+v 0.120966 -0.125001 -0.024552
+v -0.078125 -0.125001 0.116433
+v -0.027433 -0.125001 0.137430
+v -0.024061 -0.125001 0.120474
+v -0.068520 -0.125001 0.102058
+v -0.078125 -0.125001 -0.117415
+v -0.068520 -0.125001 -0.103040
+v 0.137922 -0.125001 0.026943
+v 0.120966 -0.125001 0.023571
+v -0.116923 -0.125001 0.077635
+v -0.102548 -0.125001 0.068030
+v -0.027433 -0.125001 -0.138412
+v -0.024061 -0.125001 -0.121456
+v -0.102548 -0.487780 0.068030
+v -0.120964 -0.487780 0.023571
+v 0.102550 -0.487780 0.068030
+v 0.068522 -0.487780 0.102058
+v -0.024061 -0.487780 -0.121456
+v -0.068520 -0.487780 -0.103040
+v 0.068522 -0.487780 -0.103040
+v 0.102550 -0.487780 -0.069012
+v -0.102548 -0.487780 -0.069012
+v -0.068520 -0.487780 0.102058
+v 0.120966 -0.487780 0.023571
+v 0.024062 -0.487780 -0.121456
+v -0.120964 -0.487780 -0.024552
+v -0.024060 -0.487780 0.120474
+v 0.120966 -0.487780 -0.024552
+v 0.024062 -0.487780 0.120474
+vt 0.625000 0.906250
+vt 0.687500 0.906250
+vt 0.687500 0.937500
+vt 0.625000 0.937500
+vt 0.937500 0.906250
+vt 1.000000 0.906250
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.250000 0.906250
+vt 0.312500 0.906250
+vt 0.312500 0.937500
+vt 0.250000 0.937500
+vt 0.562500 0.906250
+vt 0.562500 0.937500
+vt 0.875000 0.906250
+vt 0.875000 0.937500
+vt 0.187500 0.906250
+vt 0.187500 0.937500
+vt 0.812500 0.906250
+vt 0.812500 0.937500
+vt 0.437500 0.906250
+vt 0.500000 0.906250
+vt 0.500000 0.937500
+vt 0.437500 0.937500
+vt 0.125000 0.906250
+vt 0.125000 0.937500
+vt 0.750000 0.906250
+vt 0.750000 0.937500
+vt 0.375000 0.906250
+vt 0.375000 0.937500
+vt 0.062500 0.906250
+vt 0.062500 0.937500
+vt -0.000000 0.906250
+vt -0.000000 0.937500
+vt 0.375000 1.000000
+vt 0.312500 1.000000
+vt 0.125000 0.406250
+vt 0.187500 0.406250
+vt 0.687500 1.000000
+vt 0.625000 1.000000
+vt 0.937500 0.406250
+vt 1.000000 0.406250
+vt 0.062500 1.000000
+vt 0.125000 1.000000
+vt 0.375000 0.406250
+vt 0.437500 0.406250
+vt 0.687500 0.406250
+vt 0.750000 0.406250
+vt 0.937500 1.000000
+vt 0.875000 1.000000
+vt 0.250000 0.406250
+vt 0.187500 1.000000
+vt 0.500000 0.406250
+vt 0.812500 0.406250
+vt 0.437500 1.000000
+vt 0.750000 1.000000
+vt 0.562500 0.406250
+vt -0.000000 0.406250
+vt 0.062500 0.406250
+vt 1.000000 1.000000
+vt 0.312500 0.406250
+vt 0.625000 0.406250
+vt 0.250000 1.000000
+vt 0.875000 0.406250
+vt 0.500000 1.000000
+vt 0.812500 1.000000
+vt 0.562500 1.000000
+vt -0.000000 1.000000
+vt 0.681251 0.549764
+vt 0.681251 0.621226
+vt 0.653904 0.687248
+vt 0.603372 0.737779
+vt 0.537350 0.765126
+vt 0.465889 0.765126
+vt 0.399867 0.737779
+vt 0.349335 0.687248
+vt 0.321988 0.621226
+vt 0.321988 0.549764
+vt 0.349335 0.483742
+vt 0.399867 0.433211
+vt 0.465889 0.405864
+vt 0.537350 0.405864
+vt 0.603372 0.433211
+vt 0.653903 0.483742
+usemtl None
+s 1
+f 17/1 18/2 19/3 20/4
+f 21/5 22/6 23/7 24/8
+f 25/9 26/10 27/11 28/12
+f 29/13 17/1 20/4 30/14
+f 31/15 21/5 24/8 32/16
+f 33/17 25/9 28/12 34/18
+f 35/19 31/15 32/16 36/20
+f 37/21 38/22 39/23 40/24
+f 41/25 33/17 34/18 42/26
+f 43/27 35/19 36/20 44/28
+f 45/29 37/21 40/24 46/30
+f 47/31 41/25 42/26 48/32
+f 18/2 43/27 44/28 19/3
+f 22/33 47/31 48/32 23/34
+f 38/22 29/13 30/14 39/23
+f 49/35 50/36 27/11 46/30
+f 8/37 7/38 33/17 41/25
+f 51/39 52/40 20/4 19/3
+f 11/41 10/42 22/6 21/5
+f 53/43 48/32 42/26 54/44
+f 4/45 3/46 37/21 45/29
+f 15/47 14/48 43/27 18/2
+f 55/49 56/50 32/16 24/8
+f 7/38 6/51 25/9 33/17
+f 57/52 54/44 42/26 34/18
+f 3/46 2/53 38/22 37/21
+f 14/48 13/54 35/19 43/27
+f 58/55 49/35 46/30 40/24
+f 59/56 51/39 19/3 44/28
+f 2/53 1/57 29/13 38/22
+f 10/58 9/59 47/31 22/33
+f 60/60 55/49 24/8 23/7
+f 6/51 5/61 26/10 25/9
+f 1/57 16/62 17/1 29/13
+f 61/63 57/52 34/18 28/12
+f 13/54 12/64 31/15 35/19
+f 62/65 58/55 40/24 39/23
+f 63/66 59/56 44/28 36/20
+f 9/59 8/37 41/25 47/31
+f 64/67 62/65 39/23 30/14
+f 53/43 60/68 23/34 48/32
+f 5/61 4/45 45/29 26/10
+f 16/62 15/47 18/2 17/1
+f 50/36 61/63 28/12 27/11
+f 52/40 64/67 30/14 20/4
+f 12/64 11/41 21/5 31/15
+f 56/50 63/66 36/20 32/16
+f 26/10 45/29 46/30 27/11
+f 49/55 58/65 62/67 64/40 52/39 51/56 59/66 63/50 56/49 55/60 60/43 53/44 54/52 57/63 61/36 50/35
+f 5/69 6/70 7/71 8/72 9/73 10/74 11/75 12/76 13/77 14/78 15/79 16/80 1/81 2/82 3/83 4/84
diff --git a/homedecor_modpack/homedecor_3d_extras/models/3dvessels_shelf.obj b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_shelf.obj
new file mode 100644
index 0000000..979864c
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/models/3dvessels_shelf.obj
@@ -0,0 +1,1730 @@
+# Blender v2.73 (sub 0) OBJ File: '3dvessels-shelf.blend'
+# www.blender.org
+o bookshelf_nodebox-39
+v 0.437500 0.437500 0.500000
+v 0.437500 0.437500 0.125000
+v 0.437500 -0.437500 0.125000
+v 0.437500 -0.062500 0.125000
+v -0.437500 -0.062500 0.125000
+v -0.437500 -0.062500 -0.500000
+v -0.437500 -0.062500 -0.125000
+v 0.437500 -0.062500 -0.500000
+v 0.437500 -0.062500 -0.125000
+v -0.437500 -0.062500 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.437500 -0.437500 0.500000
+v -0.437500 -0.437500 0.125000
+v -0.437500 0.437500 -0.500000
+v -0.437500 0.437500 -0.125000
+v -0.437500 0.062500 -0.125000
+v -0.437500 0.437500 0.125000
+v -0.437500 0.062500 0.125000
+v 0.437500 -0.437500 -0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.500000 -0.500000
+v 0.437500 -0.437500 -0.125000
+v -0.437500 -0.437500 -0.500000
+v -0.437500 0.437500 0.500000
+v 0.437500 -0.437500 0.500000
+v 0.437500 0.062500 0.500000
+v 0.437500 -0.062500 0.500000
+v 0.437500 0.062500 0.125000
+v -0.437500 0.062500 0.500000
+v -0.437500 0.062500 -0.500000
+v 0.437500 0.437500 -0.125000
+v 0.437500 0.437500 -0.500000
+v 0.437500 0.062500 -0.125000
+v 0.437500 0.062500 -0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.437500 -0.437500 -0.125000
+v -0.281319 -0.436495 0.236889
+v -0.260395 -0.076345 0.287403
+v -0.218681 -0.436495 0.236889
+v -0.239604 -0.076345 0.287403
+v -0.174389 -0.436495 0.281181
+v -0.224903 -0.076345 0.302104
+v -0.174389 -0.436495 0.343819
+v -0.224903 -0.076345 0.322895
+v -0.218681 -0.436495 0.388111
+v -0.239604 -0.076345 0.337597
+v -0.281319 -0.436495 0.388111
+v -0.260395 -0.076345 0.337597
+v -0.325611 -0.436495 0.343819
+v -0.275097 -0.076345 0.322895
+v -0.325611 -0.436495 0.281181
+v -0.275097 -0.076345 0.302104
+v -0.257896 -0.127931 0.293436
+v -0.242103 -0.127931 0.293436
+v -0.230936 -0.127931 0.304603
+v -0.230936 -0.127931 0.320396
+v -0.242103 -0.127931 0.331564
+v -0.257896 -0.127931 0.331564
+v -0.269064 -0.127931 0.320396
+v -0.269064 -0.127931 0.304603
+v -0.257896 -0.102138 0.293436
+v -0.278396 -0.089241 0.300738
+v -0.278396 -0.089241 0.324262
+v -0.261762 -0.089241 0.340896
+v -0.238238 -0.089241 0.340896
+v -0.221604 -0.089241 0.324262
+v -0.221604 -0.089241 0.300738
+v -0.238238 -0.089241 0.284104
+v -0.261762 -0.089241 0.284104
+v -0.242103 -0.102138 0.293436
+v -0.230936 -0.102138 0.304603
+v -0.230936 -0.102138 0.320396
+v -0.242103 -0.102138 0.331564
+v -0.257896 -0.102138 0.331564
+v -0.269064 -0.102138 0.320396
+v -0.269064 -0.102138 0.304603
+v -0.289482 -0.308482 0.217181
+v -0.210518 -0.308482 0.217181
+v -0.154681 -0.308482 0.273018
+v -0.154681 -0.308482 0.351982
+v -0.210518 -0.308482 0.407819
+v -0.289482 -0.308482 0.407819
+v -0.345319 -0.308482 0.351982
+v -0.345319 -0.308482 0.273018
+v -0.284799 -0.231103 0.228488
+v -0.212649 -0.400826 0.222328
+v -0.159828 -0.400826 0.275149
+v -0.159828 -0.400826 0.349850
+v -0.212649 -0.400826 0.402672
+v -0.287350 -0.400826 0.402672
+v -0.340172 -0.400826 0.349850
+v -0.340172 -0.400826 0.275149
+v -0.287350 -0.400826 0.222328
+v -0.215201 -0.231103 0.228488
+v -0.165988 -0.231103 0.277701
+v -0.165988 -0.231103 0.347299
+v -0.215201 -0.231103 0.396512
+v -0.284799 -0.231103 0.396512
+v -0.334012 -0.231103 0.347299
+v -0.334012 -0.231103 0.277701
+v -0.031319 -0.436495 0.236889
+v -0.010395 -0.076345 0.287403
+v 0.031319 -0.436495 0.236889
+v 0.010396 -0.076345 0.287403
+v 0.075611 -0.436495 0.281181
+v 0.025097 -0.076345 0.302104
+v 0.075611 -0.436495 0.343819
+v 0.025097 -0.076345 0.322895
+v 0.031319 -0.436495 0.388111
+v 0.010396 -0.076345 0.337597
+v -0.031319 -0.436495 0.388111
+v -0.010395 -0.076345 0.337597
+v -0.075611 -0.436495 0.343819
+v -0.025097 -0.076345 0.322895
+v -0.075611 -0.436495 0.281181
+v -0.025097 -0.076345 0.302104
+v -0.007896 -0.127931 0.293436
+v 0.007897 -0.127931 0.293436
+v 0.019064 -0.127931 0.304603
+v 0.019064 -0.127931 0.320396
+v 0.007897 -0.127931 0.331564
+v -0.007896 -0.127931 0.331564
+v -0.019064 -0.127931 0.320396
+v -0.019064 -0.127931 0.304603
+v -0.007896 -0.102138 0.293436
+v -0.028396 -0.089241 0.300738
+v -0.028396 -0.089241 0.324262
+v -0.011762 -0.089241 0.340896
+v 0.011762 -0.089241 0.340896
+v 0.028396 -0.089241 0.324262
+v 0.028396 -0.089241 0.300738
+v 0.011762 -0.089241 0.284104
+v -0.011762 -0.089241 0.284104
+v 0.007897 -0.102138 0.293436
+v 0.019064 -0.102138 0.304603
+v 0.019064 -0.102138 0.320396
+v 0.007897 -0.102138 0.331564
+v -0.007896 -0.102138 0.331564
+v -0.019064 -0.102138 0.320396
+v -0.019064 -0.102138 0.304603
+v -0.039482 -0.308482 0.217181
+v 0.039482 -0.308482 0.217181
+v 0.095319 -0.308482 0.273018
+v 0.095319 -0.308482 0.351982
+v 0.039482 -0.308482 0.407819
+v -0.039482 -0.308482 0.407819
+v -0.095319 -0.308482 0.351982
+v -0.095319 -0.308482 0.273018
+v -0.034799 -0.231103 0.228488
+v 0.037351 -0.400826 0.222328
+v 0.090172 -0.400826 0.275149
+v 0.090172 -0.400826 0.349850
+v 0.037351 -0.400826 0.402672
+v -0.037350 -0.400826 0.402672
+v -0.090172 -0.400826 0.349850
+v -0.090172 -0.400826 0.275149
+v -0.037350 -0.400826 0.222328
+v 0.034799 -0.231103 0.228488
+v 0.084012 -0.231103 0.277701
+v 0.084012 -0.231103 0.347299
+v 0.034799 -0.231103 0.396512
+v -0.034799 -0.231103 0.396512
+v -0.084012 -0.231103 0.347299
+v -0.084012 -0.231103 0.277701
+v 0.218681 -0.436495 0.236889
+v 0.239605 -0.076345 0.287403
+v 0.281319 -0.436495 0.236889
+v 0.260396 -0.076345 0.287403
+v 0.325611 -0.436495 0.281181
+v 0.275097 -0.076345 0.302104
+v 0.325611 -0.436495 0.343819
+v 0.275097 -0.076345 0.322895
+v 0.281319 -0.436495 0.388111
+v 0.260396 -0.076345 0.337597
+v 0.218681 -0.436495 0.388111
+v 0.239605 -0.076345 0.337597
+v 0.174389 -0.436495 0.343819
+v 0.224903 -0.076345 0.322895
+v 0.174389 -0.436495 0.281181
+v 0.224903 -0.076345 0.302104
+v 0.242104 -0.127931 0.293436
+v 0.257897 -0.127931 0.293436
+v 0.269064 -0.127931 0.304603
+v 0.269064 -0.127931 0.320396
+v 0.257897 -0.127931 0.331564
+v 0.242104 -0.127931 0.331564
+v 0.230936 -0.127931 0.320396
+v 0.230936 -0.127931 0.304603
+v 0.242104 -0.102138 0.293436
+v 0.221604 -0.089241 0.300738
+v 0.221604 -0.089241 0.324262
+v 0.238238 -0.089241 0.340896
+v 0.261762 -0.089241 0.340896
+v 0.278396 -0.089241 0.324262
+v 0.278396 -0.089241 0.300738
+v 0.261762 -0.089241 0.284104
+v 0.238238 -0.089241 0.284104
+v 0.257897 -0.102138 0.293436
+v 0.269064 -0.102138 0.304603
+v 0.269064 -0.102138 0.320396
+v 0.257897 -0.102138 0.331564
+v 0.242104 -0.102138 0.331564
+v 0.230936 -0.102138 0.320396
+v 0.230936 -0.102138 0.304603
+v 0.210518 -0.308482 0.217181
+v 0.289482 -0.308482 0.217181
+v 0.345319 -0.308482 0.273018
+v 0.345319 -0.308482 0.351982
+v 0.289482 -0.308482 0.407819
+v 0.210518 -0.308482 0.407819
+v 0.154681 -0.308482 0.351982
+v 0.154681 -0.308482 0.273018
+v 0.215201 -0.231103 0.228488
+v 0.287351 -0.400826 0.222328
+v 0.340172 -0.400826 0.275149
+v 0.340172 -0.400826 0.349850
+v 0.287351 -0.400826 0.402672
+v 0.212650 -0.400826 0.402672
+v 0.159828 -0.400826 0.349850
+v 0.159828 -0.400826 0.275149
+v 0.212650 -0.400826 0.222328
+v 0.284799 -0.231103 0.228488
+v 0.334012 -0.231103 0.277701
+v 0.334012 -0.231103 0.347299
+v 0.284799 -0.231103 0.396512
+v 0.215201 -0.231103 0.396512
+v 0.165988 -0.231103 0.347299
+v 0.165988 -0.231103 0.277701
+v -0.281319 0.063505 0.236889
+v -0.260395 0.423655 0.287403
+v -0.218681 0.063505 0.236889
+v -0.239604 0.423655 0.287403
+v -0.174389 0.063505 0.281181
+v -0.224903 0.423655 0.302104
+v -0.174389 0.063505 0.343819
+v -0.224903 0.423655 0.322895
+v -0.218681 0.063505 0.388111
+v -0.239604 0.423655 0.337597
+v -0.281319 0.063505 0.388111
+v -0.260395 0.423655 0.337597
+v -0.325611 0.063505 0.343819
+v -0.275097 0.423655 0.322895
+v -0.325611 0.063505 0.281181
+v -0.275097 0.423655 0.302104
+v -0.257896 0.372069 0.293436
+v -0.242103 0.372069 0.293436
+v -0.230936 0.372069 0.304603
+v -0.230936 0.372069 0.320396
+v -0.242103 0.372069 0.331564
+v -0.257896 0.372069 0.331564
+v -0.269064 0.372069 0.320396
+v -0.269064 0.372069 0.304603
+v -0.257896 0.397862 0.293436
+v -0.278396 0.410759 0.300738
+v -0.278396 0.410759 0.324262
+v -0.261762 0.410759 0.340896
+v -0.238238 0.410759 0.340896
+v -0.221604 0.410759 0.324262
+v -0.221604 0.410759 0.300738
+v -0.238238 0.410759 0.284104
+v -0.261762 0.410759 0.284104
+v -0.242103 0.397862 0.293436
+v -0.230936 0.397862 0.304603
+v -0.230936 0.397862 0.320396
+v -0.242103 0.397862 0.331564
+v -0.257896 0.397862 0.331564
+v -0.269064 0.397862 0.320396
+v -0.269064 0.397862 0.304603
+v -0.289482 0.191518 0.217181
+v -0.210518 0.191518 0.217181
+v -0.154681 0.191518 0.273018
+v -0.154681 0.191518 0.351982
+v -0.210518 0.191518 0.407819
+v -0.289482 0.191518 0.407819
+v -0.345319 0.191518 0.351982
+v -0.345319 0.191518 0.273018
+v -0.284799 0.268897 0.228488
+v -0.212649 0.099174 0.222328
+v -0.159828 0.099174 0.275149
+v -0.159828 0.099174 0.349850
+v -0.212649 0.099174 0.402672
+v -0.287350 0.099174 0.402672
+v -0.340172 0.099174 0.349850
+v -0.340172 0.099174 0.275149
+v -0.287350 0.099174 0.222328
+v -0.215201 0.268897 0.228488
+v -0.165988 0.268897 0.277701
+v -0.165988 0.268897 0.347299
+v -0.215201 0.268897 0.396512
+v -0.284799 0.268897 0.396512
+v -0.334012 0.268897 0.347299
+v -0.334012 0.268897 0.277701
+v -0.031319 0.063505 0.236889
+v -0.010395 0.423655 0.287403
+v 0.031319 0.063505 0.236889
+v 0.010396 0.423655 0.287403
+v 0.075611 0.063505 0.281181
+v 0.025097 0.423655 0.302104
+v 0.075611 0.063505 0.343819
+v 0.025097 0.423655 0.322895
+v 0.031319 0.063505 0.388111
+v 0.010396 0.423655 0.337597
+v -0.031319 0.063505 0.388111
+v -0.010395 0.423655 0.337597
+v -0.075611 0.063505 0.343819
+v -0.025097 0.423655 0.322895
+v -0.075611 0.063505 0.281181
+v -0.025097 0.423655 0.302104
+v -0.007896 0.372069 0.293436
+v 0.007897 0.372069 0.293436
+v 0.019064 0.372069 0.304603
+v 0.019064 0.372069 0.320396
+v 0.007897 0.372069 0.331564
+v -0.007896 0.372069 0.331564
+v -0.019064 0.372069 0.320396
+v -0.019064 0.372069 0.304603
+v -0.007896 0.397862 0.293436
+v -0.028396 0.410759 0.300738
+v -0.028396 0.410759 0.324262
+v -0.011762 0.410759 0.340896
+v 0.011762 0.410759 0.340896
+v 0.028396 0.410759 0.324262
+v 0.028396 0.410759 0.300738
+v 0.011762 0.410759 0.284104
+v -0.011762 0.410759 0.284104
+v 0.007897 0.397862 0.293436
+v 0.019064 0.397862 0.304603
+v 0.019064 0.397862 0.320396
+v 0.007897 0.397862 0.331564
+v -0.007896 0.397862 0.331564
+v -0.019064 0.397862 0.320396
+v -0.019064 0.397862 0.304603
+v -0.039482 0.191518 0.217181
+v 0.039482 0.191518 0.217181
+v 0.095319 0.191518 0.273018
+v 0.095319 0.191518 0.351982
+v 0.039482 0.191518 0.407819
+v -0.039482 0.191518 0.407819
+v -0.095319 0.191518 0.351982
+v -0.095319 0.191518 0.273018
+v -0.034799 0.268897 0.228488
+v 0.037351 0.099174 0.222328
+v 0.090172 0.099174 0.275149
+v 0.090172 0.099174 0.349850
+v 0.037351 0.099174 0.402672
+v -0.037350 0.099174 0.402672
+v -0.090172 0.099174 0.349850
+v -0.090172 0.099174 0.275149
+v -0.037350 0.099174 0.222328
+v 0.034799 0.268897 0.228488
+v 0.084012 0.268897 0.277701
+v 0.084012 0.268897 0.347299
+v 0.034799 0.268897 0.396512
+v -0.034799 0.268897 0.396512
+v -0.084012 0.268897 0.347299
+v -0.084012 0.268897 0.277701
+v 0.218681 0.063505 0.236889
+v 0.239605 0.423655 0.287403
+v 0.281319 0.063505 0.236889
+v 0.260396 0.423655 0.287403
+v 0.325611 0.063505 0.281181
+v 0.275097 0.423655 0.302104
+v 0.325611 0.063505 0.343819
+v 0.275097 0.423655 0.322895
+v 0.281319 0.063505 0.388111
+v 0.260396 0.423655 0.337597
+v 0.218681 0.063505 0.388111
+v 0.239605 0.423655 0.337597
+v 0.174389 0.063505 0.343819
+v 0.224903 0.423655 0.322895
+v 0.174389 0.063505 0.281181
+v 0.224903 0.423655 0.302104
+v 0.242104 0.372069 0.293436
+v 0.257897 0.372069 0.293436
+v 0.269064 0.372069 0.304603
+v 0.269064 0.372069 0.320396
+v 0.257897 0.372069 0.331564
+v 0.242104 0.372069 0.331564
+v 0.230936 0.372069 0.320396
+v 0.230936 0.372069 0.304603
+v 0.242104 0.397862 0.293436
+v 0.221604 0.410759 0.300738
+v 0.221604 0.410759 0.324262
+v 0.238238 0.410759 0.340896
+v 0.261762 0.410759 0.340896
+v 0.278396 0.410759 0.324262
+v 0.278396 0.410759 0.300738
+v 0.261762 0.410759 0.284104
+v 0.238238 0.410759 0.284104
+v 0.257897 0.397862 0.293436
+v 0.269064 0.397862 0.304603
+v 0.269064 0.397862 0.320396
+v 0.257897 0.397862 0.331564
+v 0.242104 0.397862 0.331564
+v 0.230936 0.397862 0.320396
+v 0.230936 0.397862 0.304603
+v 0.210518 0.191518 0.217181
+v 0.289482 0.191518 0.217181
+v 0.345319 0.191518 0.273018
+v 0.345319 0.191518 0.351982
+v 0.289482 0.191518 0.407819
+v 0.210518 0.191518 0.407819
+v 0.154681 0.191518 0.351982
+v 0.154681 0.191518 0.273018
+v 0.215201 0.268897 0.228488
+v 0.287351 0.099174 0.222328
+v 0.340172 0.099174 0.275149
+v 0.340172 0.099174 0.349850
+v 0.287351 0.099174 0.402672
+v 0.212650 0.099174 0.402672
+v 0.159828 0.099174 0.349850
+v 0.159828 0.099174 0.275149
+v 0.212650 0.099174 0.222328
+v 0.284799 0.268897 0.228488
+v 0.334012 0.268897 0.277701
+v 0.334012 0.268897 0.347299
+v 0.284799 0.268897 0.396512
+v 0.215201 0.268897 0.396512
+v 0.165988 0.268897 0.347299
+v 0.165988 0.268897 0.277701
+v 0.281319 -0.436495 -0.236889
+v 0.260395 -0.076345 -0.287403
+v 0.218681 -0.436495 -0.236889
+v 0.239605 -0.076345 -0.287403
+v 0.174389 -0.436495 -0.281181
+v 0.224903 -0.076345 -0.302104
+v 0.174389 -0.436495 -0.343819
+v 0.224903 -0.076345 -0.322895
+v 0.218681 -0.436495 -0.388111
+v 0.239605 -0.076345 -0.337597
+v 0.281319 -0.436495 -0.388111
+v 0.260395 -0.076345 -0.337597
+v 0.325611 -0.436495 -0.343819
+v 0.275097 -0.076345 -0.322895
+v 0.325611 -0.436495 -0.281181
+v 0.275097 -0.076345 -0.302104
+v 0.257896 -0.127931 -0.293436
+v 0.242104 -0.127931 -0.293436
+v 0.230936 -0.127931 -0.304603
+v 0.230936 -0.127931 -0.320396
+v 0.242104 -0.127931 -0.331564
+v 0.257896 -0.127931 -0.331564
+v 0.269064 -0.127931 -0.320396
+v 0.269064 -0.127931 -0.304603
+v 0.257896 -0.102138 -0.293436
+v 0.278396 -0.089241 -0.300738
+v 0.278396 -0.089241 -0.324262
+v 0.261762 -0.089241 -0.340896
+v 0.238238 -0.089241 -0.340896
+v 0.221604 -0.089241 -0.324262
+v 0.221604 -0.089241 -0.300738
+v 0.238238 -0.089241 -0.284104
+v 0.261762 -0.089241 -0.284104
+v 0.242104 -0.102138 -0.293436
+v 0.230936 -0.102138 -0.304603
+v 0.230936 -0.102138 -0.320396
+v 0.242104 -0.102138 -0.331564
+v 0.257896 -0.102138 -0.331564
+v 0.269064 -0.102138 -0.320396
+v 0.269064 -0.102138 -0.304603
+v 0.289482 -0.308482 -0.217181
+v 0.210518 -0.308482 -0.217181
+v 0.154681 -0.308482 -0.273018
+v 0.154681 -0.308482 -0.351982
+v 0.210518 -0.308482 -0.407818
+v 0.289482 -0.308482 -0.407818
+v 0.345319 -0.308482 -0.351982
+v 0.345319 -0.308482 -0.273018
+v 0.284799 -0.231103 -0.228488
+v 0.212649 -0.400826 -0.222328
+v 0.159828 -0.400826 -0.275149
+v 0.159828 -0.400826 -0.349850
+v 0.212650 -0.400826 -0.402672
+v 0.287350 -0.400826 -0.402672
+v 0.340172 -0.400826 -0.349850
+v 0.340172 -0.400826 -0.275149
+v 0.287350 -0.400826 -0.222328
+v 0.215201 -0.231103 -0.228488
+v 0.165988 -0.231103 -0.277701
+v 0.165988 -0.231103 -0.347299
+v 0.215201 -0.231103 -0.396512
+v 0.284799 -0.231103 -0.396512
+v 0.334012 -0.231103 -0.347299
+v 0.334012 -0.231103 -0.277701
+v 0.031319 -0.436495 -0.236889
+v 0.010395 -0.076345 -0.287403
+v -0.031319 -0.436495 -0.236889
+v -0.010395 -0.076345 -0.287403
+v -0.075611 -0.436495 -0.281181
+v -0.025097 -0.076345 -0.302104
+v -0.075611 -0.436495 -0.343819
+v -0.025097 -0.076345 -0.322895
+v -0.031319 -0.436495 -0.388111
+v -0.010395 -0.076345 -0.337597
+v 0.031319 -0.436495 -0.388111
+v 0.010395 -0.076345 -0.337597
+v 0.075611 -0.436495 -0.343819
+v 0.025097 -0.076345 -0.322895
+v 0.075611 -0.436495 -0.281181
+v 0.025097 -0.076345 -0.302104
+v 0.007896 -0.127931 -0.293436
+v -0.007896 -0.127931 -0.293436
+v -0.019064 -0.127931 -0.304603
+v -0.019064 -0.127931 -0.320396
+v -0.007896 -0.127931 -0.331564
+v 0.007896 -0.127931 -0.331564
+v 0.019064 -0.127931 -0.320396
+v 0.019064 -0.127931 -0.304603
+v 0.007896 -0.102138 -0.293436
+v 0.028396 -0.089241 -0.300738
+v 0.028396 -0.089241 -0.324262
+v 0.011762 -0.089241 -0.340896
+v -0.011762 -0.089241 -0.340896
+v -0.028396 -0.089241 -0.324262
+v -0.028396 -0.089241 -0.300738
+v -0.011762 -0.089241 -0.284104
+v 0.011762 -0.089241 -0.284104
+v -0.007896 -0.102138 -0.293436
+v -0.019064 -0.102138 -0.304603
+v -0.019064 -0.102138 -0.320396
+v -0.007896 -0.102138 -0.331564
+v 0.007896 -0.102138 -0.331564
+v 0.019064 -0.102138 -0.320396
+v 0.019064 -0.102138 -0.304603
+v 0.039482 -0.308482 -0.217181
+v -0.039482 -0.308482 -0.217181
+v -0.095319 -0.308482 -0.273018
+v -0.095319 -0.308482 -0.351982
+v -0.039482 -0.308482 -0.407819
+v 0.039482 -0.308482 -0.407819
+v 0.095319 -0.308482 -0.351982
+v 0.095319 -0.308482 -0.273018
+v 0.034799 -0.231103 -0.228488
+v -0.037351 -0.400826 -0.222328
+v -0.090172 -0.400826 -0.275149
+v -0.090172 -0.400826 -0.349850
+v -0.037350 -0.400826 -0.402672
+v 0.037350 -0.400826 -0.402672
+v 0.090172 -0.400826 -0.349850
+v 0.090172 -0.400826 -0.275149
+v 0.037350 -0.400826 -0.222328
+v -0.034799 -0.231103 -0.228488
+v -0.084012 -0.231103 -0.277701
+v -0.084012 -0.231103 -0.347299
+v -0.034799 -0.231103 -0.396512
+v 0.034799 -0.231103 -0.396512
+v 0.084012 -0.231103 -0.347299
+v 0.084012 -0.231103 -0.277701
+v -0.218681 -0.436495 -0.236889
+v -0.239605 -0.076345 -0.287403
+v -0.281319 -0.436495 -0.236889
+v -0.260396 -0.076345 -0.287403
+v -0.325611 -0.436495 -0.281181
+v -0.275097 -0.076345 -0.302104
+v -0.325611 -0.436495 -0.343819
+v -0.275097 -0.076345 -0.322895
+v -0.281319 -0.436495 -0.388111
+v -0.260395 -0.076345 -0.337597
+v -0.218681 -0.436495 -0.388111
+v -0.239605 -0.076345 -0.337597
+v -0.174389 -0.436495 -0.343819
+v -0.224903 -0.076345 -0.322895
+v -0.174389 -0.436495 -0.281181
+v -0.224903 -0.076345 -0.302104
+v -0.242104 -0.127931 -0.293436
+v -0.257897 -0.127931 -0.293436
+v -0.269064 -0.127931 -0.304603
+v -0.269064 -0.127931 -0.320396
+v -0.257896 -0.127931 -0.331564
+v -0.242104 -0.127931 -0.331564
+v -0.230936 -0.127931 -0.320396
+v -0.230936 -0.127931 -0.304603
+v -0.242104 -0.102138 -0.293436
+v -0.221604 -0.089241 -0.300738
+v -0.221604 -0.089241 -0.324262
+v -0.238238 -0.089241 -0.340896
+v -0.261762 -0.089241 -0.340896
+v -0.278396 -0.089241 -0.324262
+v -0.278396 -0.089241 -0.300738
+v -0.261762 -0.089241 -0.284104
+v -0.238238 -0.089241 -0.284104
+v -0.257897 -0.102138 -0.293436
+v -0.269064 -0.102138 -0.304603
+v -0.269064 -0.102138 -0.320396
+v -0.257896 -0.102138 -0.331564
+v -0.242104 -0.102138 -0.331564
+v -0.230936 -0.102138 -0.320396
+v -0.230936 -0.102138 -0.304603
+v -0.210518 -0.308482 -0.217181
+v -0.289482 -0.308482 -0.217181
+v -0.345319 -0.308482 -0.273018
+v -0.345319 -0.308482 -0.351982
+v -0.289482 -0.308482 -0.407819
+v -0.210518 -0.308482 -0.407819
+v -0.154681 -0.308482 -0.351982
+v -0.154681 -0.308482 -0.273018
+v -0.215201 -0.231103 -0.228488
+v -0.287351 -0.400826 -0.222328
+v -0.340172 -0.400826 -0.275149
+v -0.340172 -0.400826 -0.349850
+v -0.287350 -0.400826 -0.402672
+v -0.212650 -0.400826 -0.402672
+v -0.159828 -0.400826 -0.349850
+v -0.159828 -0.400826 -0.275149
+v -0.212650 -0.400826 -0.222328
+v -0.284799 -0.231103 -0.228488
+v -0.334012 -0.231103 -0.277701
+v -0.334012 -0.231103 -0.347299
+v -0.284799 -0.231103 -0.396512
+v -0.215201 -0.231103 -0.396512
+v -0.165988 -0.231103 -0.347299
+v -0.165988 -0.231103 -0.277701
+v 0.281319 0.063505 -0.236889
+v 0.260395 0.423655 -0.287403
+v 0.218681 0.063505 -0.236889
+v 0.239605 0.423655 -0.287403
+v 0.174389 0.063505 -0.281181
+v 0.224903 0.423655 -0.302104
+v 0.174389 0.063505 -0.343819
+v 0.224903 0.423655 -0.322895
+v 0.218681 0.063505 -0.388111
+v 0.239605 0.423655 -0.337597
+v 0.281319 0.063505 -0.388111
+v 0.260395 0.423655 -0.337597
+v 0.325611 0.063505 -0.343819
+v 0.275097 0.423655 -0.322895
+v 0.325611 0.063505 -0.281181
+v 0.275097 0.423655 -0.302104
+v 0.257896 0.372069 -0.293436
+v 0.242104 0.372069 -0.293436
+v 0.230936 0.372069 -0.304603
+v 0.230936 0.372069 -0.320396
+v 0.242104 0.372069 -0.331564
+v 0.257896 0.372069 -0.331564
+v 0.269064 0.372069 -0.320396
+v 0.269064 0.372069 -0.304603
+v 0.257896 0.397862 -0.293436
+v 0.278396 0.410759 -0.300738
+v 0.278396 0.410759 -0.324262
+v 0.261762 0.410759 -0.340896
+v 0.238238 0.410759 -0.340896
+v 0.221604 0.410759 -0.324262
+v 0.221604 0.410759 -0.300738
+v 0.238238 0.410759 -0.284104
+v 0.261762 0.410759 -0.284104
+v 0.242104 0.397862 -0.293436
+v 0.230936 0.397862 -0.304603
+v 0.230936 0.397862 -0.320396
+v 0.242104 0.397862 -0.331564
+v 0.257896 0.397862 -0.331564
+v 0.269064 0.397862 -0.320396
+v 0.269064 0.397862 -0.304603
+v 0.289482 0.191518 -0.217181
+v 0.210518 0.191518 -0.217181
+v 0.154681 0.191518 -0.273018
+v 0.154681 0.191518 -0.351982
+v 0.210518 0.191518 -0.407818
+v 0.289482 0.191518 -0.407818
+v 0.345319 0.191518 -0.351982
+v 0.345319 0.191518 -0.273018
+v 0.284799 0.268897 -0.228488
+v 0.212649 0.099174 -0.222328
+v 0.159828 0.099174 -0.275149
+v 0.159828 0.099174 -0.349850
+v 0.212650 0.099174 -0.402672
+v 0.287350 0.099174 -0.402672
+v 0.340172 0.099174 -0.349850
+v 0.340172 0.099174 -0.275149
+v 0.287350 0.099174 -0.222328
+v 0.215201 0.268897 -0.228488
+v 0.165988 0.268897 -0.277701
+v 0.165988 0.268897 -0.347299
+v 0.215201 0.268897 -0.396512
+v 0.284799 0.268897 -0.396512
+v 0.334012 0.268897 -0.347299
+v 0.334012 0.268897 -0.277701
+v 0.031319 0.063505 -0.236889
+v 0.010395 0.423655 -0.287403
+v -0.031319 0.063505 -0.236889
+v -0.010395 0.423655 -0.287403
+v -0.075611 0.063505 -0.281181
+v -0.025097 0.423655 -0.302104
+v -0.075611 0.063505 -0.343819
+v -0.025097 0.423655 -0.322895
+v -0.031319 0.063505 -0.388111
+v -0.010395 0.423655 -0.337597
+v 0.031319 0.063505 -0.388111
+v 0.010395 0.423655 -0.337597
+v 0.075611 0.063505 -0.343819
+v 0.025097 0.423655 -0.322895
+v 0.075611 0.063505 -0.281181
+v 0.025097 0.423655 -0.302104
+v 0.007896 0.372069 -0.293436
+v -0.007896 0.372069 -0.293436
+v -0.019064 0.372069 -0.304603
+v -0.019064 0.372069 -0.320396
+v -0.007896 0.372069 -0.331564
+v 0.007896 0.372069 -0.331564
+v 0.019064 0.372069 -0.320396
+v 0.019064 0.372069 -0.304603
+v 0.007896 0.397862 -0.293436
+v 0.028396 0.410759 -0.300738
+v 0.028396 0.410759 -0.324262
+v 0.011762 0.410759 -0.340896
+v -0.011762 0.410759 -0.340896
+v -0.028396 0.410759 -0.324262
+v -0.028396 0.410759 -0.300738
+v -0.011762 0.410759 -0.284104
+v 0.011762 0.410759 -0.284104
+v -0.007896 0.397862 -0.293436
+v -0.019064 0.397862 -0.304603
+v -0.019064 0.397862 -0.320396
+v -0.007896 0.397862 -0.331564
+v 0.007896 0.397862 -0.331564
+v 0.019064 0.397862 -0.320396
+v 0.019064 0.397862 -0.304603
+v 0.039482 0.191518 -0.217181
+v -0.039482 0.191518 -0.217181
+v -0.095319 0.191518 -0.273018
+v -0.095319 0.191518 -0.351982
+v -0.039482 0.191518 -0.407819
+v 0.039482 0.191518 -0.407819
+v 0.095319 0.191518 -0.351982
+v 0.095319 0.191518 -0.273018
+v 0.034799 0.268897 -0.228488
+v -0.037351 0.099174 -0.222328
+v -0.090172 0.099174 -0.275149
+v -0.090172 0.099174 -0.349850
+v -0.037350 0.099174 -0.402672
+v 0.037350 0.099174 -0.402672
+v 0.090172 0.099174 -0.349850
+v 0.090172 0.099174 -0.275149
+v 0.037350 0.099174 -0.222328
+v -0.034799 0.268897 -0.228488
+v -0.084012 0.268897 -0.277701
+v -0.084012 0.268897 -0.347299
+v -0.034799 0.268897 -0.396512
+v 0.034799 0.268897 -0.396512
+v 0.084012 0.268897 -0.347299
+v 0.084012 0.268897 -0.277701
+v -0.218681 0.063505 -0.236889
+v -0.239605 0.423655 -0.287403
+v -0.281319 0.063505 -0.236889
+v -0.260396 0.423655 -0.287403
+v -0.325611 0.063505 -0.281181
+v -0.275097 0.423655 -0.302104
+v -0.325611 0.063505 -0.343819
+v -0.275097 0.423655 -0.322895
+v -0.281319 0.063505 -0.388111
+v -0.260395 0.423655 -0.337597
+v -0.218681 0.063505 -0.388111
+v -0.239605 0.423655 -0.337597
+v -0.174389 0.063505 -0.343819
+v -0.224903 0.423655 -0.322895
+v -0.174389 0.063505 -0.281181
+v -0.224903 0.423655 -0.302104
+v -0.242104 0.372069 -0.293436
+v -0.257897 0.372069 -0.293436
+v -0.269064 0.372069 -0.304603
+v -0.269064 0.372069 -0.320396
+v -0.257896 0.372069 -0.331564
+v -0.242104 0.372069 -0.331564
+v -0.230936 0.372069 -0.320396
+v -0.230936 0.372069 -0.304603
+v -0.242104 0.397862 -0.293436
+v -0.221604 0.410759 -0.300738
+v -0.221604 0.410759 -0.324262
+v -0.238238 0.410759 -0.340896
+v -0.261762 0.410759 -0.340896
+v -0.278396 0.410759 -0.324262
+v -0.278396 0.410759 -0.300738
+v -0.261762 0.410759 -0.284104
+v -0.238238 0.410759 -0.284104
+v -0.257897 0.397862 -0.293436
+v -0.269064 0.397862 -0.304603
+v -0.269064 0.397862 -0.320396
+v -0.257896 0.397862 -0.331564
+v -0.242104 0.397862 -0.331564
+v -0.230936 0.397862 -0.320396
+v -0.230936 0.397862 -0.304603
+v -0.210518 0.191518 -0.217181
+v -0.289482 0.191518 -0.217181
+v -0.345319 0.191518 -0.273018
+v -0.345319 0.191518 -0.351982
+v -0.289482 0.191518 -0.407819
+v -0.210518 0.191518 -0.407819
+v -0.154681 0.191518 -0.351982
+v -0.154681 0.191518 -0.273018
+v -0.215201 0.268897 -0.228488
+v -0.287351 0.099174 -0.222328
+v -0.340172 0.099174 -0.275149
+v -0.340172 0.099174 -0.349850
+v -0.287350 0.099174 -0.402672
+v -0.212650 0.099174 -0.402672
+v -0.159828 0.099174 -0.349850
+v -0.159828 0.099174 -0.275149
+v -0.212650 0.099174 -0.222328
+v -0.284799 0.268897 -0.228488
+v -0.334012 0.268897 -0.277701
+v -0.334012 0.268897 -0.347299
+v -0.284799 0.268897 -0.396512
+v -0.215201 0.268897 -0.396512
+v -0.165988 0.268897 -0.347299
+v -0.165988 0.268897 -0.277701
+vt 0.937500 0.375000
+vt 0.562500 0.375000
+vt 0.562500 0.000000
+vt 0.937500 0.000000
+vt 0.062500 -0.000000
+vt 0.062500 0.375000
+vt 0.937500 0.562500
+vt 0.937500 0.437500
+vt 0.937500 0.062500
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 0.937500
+vt 0.937500 1.000000
+vt 0.062500 1.000000
+vt 0.062500 0.625000
+vt 0.937500 0.625000
+vt 0.437500 0.625000
+vt 0.437500 1.000000
+vt 0.562500 0.625000
+vt 0.562500 1.000000
+vt 0.000000 0.000000
+vt 0.000000 1.000000
+vt 0.062500 0.562500
+vt 0.062500 0.437500
+vt 0.062500 0.062500
+vt 0.062500 0.937500
+vt 0.437500 0.000000
+vt 0.437500 0.375000
+vt 0.250000 0.750000
+vt 0.250000 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.750000
+vt 0.000000 0.875000
+vt 0.000000 0.750000
+vt 1.000000 0.750000
+vt 1.000000 0.875000
+vt 0.875000 0.875000
+vt 0.875000 0.750000
+vt 0.750000 0.875000
+vt 0.750000 0.750000
+vt 0.625000 0.875000
+vt 0.625000 0.750000
+vt 0.500000 0.875000
+vt 0.500000 0.750000
+vt 0.389065 0.533956
+vt 0.360935 0.533956
+vt 0.341044 0.514065
+vt 0.341044 0.485935
+vt 0.360935 0.466044
+vt 0.389065 0.466044
+vt 0.408956 0.485935
+vt 0.408956 0.514065
+vt 0.375000 0.750000
+vt 0.375000 0.875000
+vt 0.582625 0.602302
+vt 0.667375 0.602302
+vt 0.727303 0.542375
+vt 0.727303 0.457625
+vt 0.667375 0.397697
+vt 0.582625 0.397697
+vt 0.522698 0.457625
+vt 0.522698 0.542375
+vt 0.500000 0.375000
+vt 0.500000 0.500000
+vt 0.375000 0.500000
+vt 0.375000 0.375000
+vt 0.250000 0.500000
+vt 0.250000 0.375000
+vt 0.625000 0.375000
+vt 0.625000 0.500000
+vt 0.750000 0.375000
+vt 0.750000 0.500000
+vt 0.875000 0.375000
+vt 0.875000 0.500000
+vt 1.000000 0.375000
+vt 1.000000 0.500000
+vt 0.125000 0.375000
+vt 0.125000 0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.375000
+vt 0.250000 0.625000
+vt 0.125000 0.625000
+vt 0.000000 0.625000
+vt 1.000000 0.625000
+vt 0.875000 0.625000
+vt 0.750000 0.625000
+vt 0.625000 0.625000
+vt 0.500000 0.625000
+vt 0.375000 0.625000
+vt 0.250000 0.125000
+vt 0.250000 0.250000
+vt 0.125000 0.250000
+vt 0.125000 0.125000
+vt 0.000000 0.250000
+vt 0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 0.875000 0.250000
+vt 0.875000 0.125000
+vt 0.750000 0.250000
+vt 0.750000 0.125000
+vt 0.625000 0.250000
+vt 0.625000 0.125000
+vt 0.500000 0.250000
+vt 0.500000 0.125000
+vt 0.375000 0.125000
+vt 0.375000 0.250000
+vt 0.500000 -0.000000
+vt 0.375000 -0.000000
+vt 0.250000 -0.000000
+vt 0.625000 -0.000000
+vt 0.750000 -0.000000
+vt 0.875000 -0.000000
+vt 0.125000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn -0.376600 -0.177600 -0.909200
+vn -0.262100 0.728500 -0.632800
+vn 0.262100 0.728500 -0.632800
+vn 0.376600 -0.177600 -0.909200
+vn 0.632800 0.728500 -0.262100
+vn 0.909200 -0.177600 -0.376600
+vn 0.632800 0.728500 0.262100
+vn 0.909200 -0.177600 0.376600
+vn 0.262100 0.728500 0.632800
+vn 0.376600 -0.177600 0.909200
+vn -0.262100 0.728500 0.632800
+vn -0.376600 -0.177600 0.909200
+vn -0.632800 0.728500 0.262100
+vn -0.909200 -0.177600 0.376600
+vn -0.632800 0.728500 -0.262100
+vn -0.909200 -0.177600 -0.376600
+vn -0.240200 -0.778300 -0.580000
+vn 0.240200 -0.778300 -0.580000
+vn 0.580000 -0.778300 -0.240200
+vn 0.580000 -0.778300 0.240200
+vn 0.240200 -0.778300 0.580000
+vn -0.240200 -0.778300 0.580000
+vn -0.580000 -0.778300 0.240200
+vn -0.580000 -0.778300 -0.240200
+vn -0.864900 0.351400 0.358300
+vn -0.876200 0.317100 0.362900
+vn -0.876200 0.317100 -0.362900
+vn -0.864900 0.351400 -0.358300
+vn -0.362900 0.317100 -0.876200
+vn -0.358300 0.351400 -0.864900
+vn -0.358300 0.351400 0.864900
+vn -0.362900 0.317100 0.876200
+vn 0.358300 0.351400 0.864900
+vn 0.362900 0.317100 0.876200
+vn 0.864900 0.351400 0.358300
+vn 0.876200 0.317100 0.362900
+vn 0.864900 0.351400 -0.358300
+vn 0.876200 0.317100 -0.362900
+vn 0.358300 0.351400 -0.864900
+vn 0.362900 0.317100 -0.876200
+vn -0.358000 -0.353600 -0.864200
+vn 0.358000 -0.353600 -0.864200
+vn 0.864200 -0.353600 -0.358000
+vn 0.864200 -0.353600 0.358000
+vn 0.358000 -0.353600 0.864200
+vn -0.358000 -0.353600 0.864200
+vn -0.864200 -0.353600 0.358000
+vn -0.864200 -0.353600 -0.358000
+vn -0.372700 -0.226600 -0.899800
+vn -0.382200 0.047000 -0.922800
+vn 0.382200 0.047000 -0.922800
+vn 0.372700 -0.226600 -0.899800
+vn 0.922800 0.047000 -0.382200
+vn 0.899800 -0.226600 -0.372700
+vn 0.922800 0.047000 0.382200
+vn 0.899800 -0.226600 0.372700
+vn 0.382200 0.047000 0.922800
+vn 0.372700 -0.226600 0.899800
+vn -0.382200 0.047000 0.922800
+vn -0.372700 -0.226600 0.899800
+vn -0.922800 0.047000 0.382200
+vn -0.899800 -0.226600 0.372700
+vn -0.899800 -0.226600 -0.372700
+vn -0.922800 0.047000 -0.382200
+g bookshelf_nodebox-39_wood
+s off
+f 2/1/1 32/2/1 30/3/1 1/4/1
+f 16/5/2 29/4/2 3/1/2 17/6/2
+f 30/7/3 31/8/3 29/9/3 13/10/3 24/11/3 1/12/3
+f 38/13/2 34/14/2 20/15/2 37/16/2
+f 40/15/2 26/16/2 23/13/2 27/14/2
+f 36/14/4 35/15/4 19/16/4 18/13/4
+f 26/15/1 9/17/1 8/18/1 23/14/1
+f 33/5/2 30/4/2 32/1/2 22/6/2
+f 2/6/4 1/5/4 28/4/4 21/1/4
+f 34/18/5 18/14/5 19/15/5 20/17/5
+f 15/10/6 12/11/6 18/12/6 34/7/6 6/8/6 27/9/6
+f 5/1/4 4/6/4 31/5/4 10/4/4
+f 7/19/5 40/16/5 27/13/5 6/20/5
+f 10/3/5 16/4/5 17/1/5 5/2/5
+f 9/15/4 7/16/4 6/13/4 8/14/4
+f 14/21/1 11/10/1 12/11/1 15/22/1
+f 11/21/2 24/10/2 25/11/2 12/22/2
+f 39/22/4 13/21/4 14/10/4 15/11/4
+f 25/22/5 24/21/5 13/10/5 39/11/5
+f 6/8/6 34/7/6 38/23/6 8/24/6
+f 25/22/6 39/21/6 23/25/6 8/24/6 38/23/6 36/26/6
+f 33/23/3 28/26/3 11/22/3 14/21/3 16/25/3 10/24/3
+f 13/10/3 29/9/3 16/25/3 14/21/3
+f 10/24/3 31/8/3 30/7/3 33/23/3
+f 36/13/1 38/20/1 37/19/1 35/16/1
+f 36/26/6 18/12/6 12/11/6 25/22/6
+f 23/25/6 39/21/6 15/10/6 27/9/6
+f 11/22/3 28/26/3 1/12/3 24/11/3
+f 29/5/1 31/27/1 4/28/1 3/6/1
+f 21/6/5 28/5/5 33/27/5 22/28/5
+g bookshelf_nodebox-39_inside-back
+f 32/23/3 2/26/3 21/12/3 22/7/3
+f 40/9/6 7/8/6 9/24/6 26/25/6
+f 35/26/6 37/23/6 20/7/6 19/12/6
+f 17/9/3 3/25/3 4/24/3 5/8/3
+g bookshelf_nodebox-39_bottles
+s 1
+f 73/29/7 42/30/8 44/31/9 72/32/10
+f 72/32/10 44/31/9 46/33/11 71/34/12
+f 71/35/12 46/36/11 48/37/13 70/38/14
+f 70/38/14 48/37/13 50/39/15 69/40/16
+f 69/40/16 50/39/15 52/41/17 68/42/18
+f 68/42/18 52/41/17 54/43/19 67/44/20
+f 44/45/9 42/46/8 56/47/21 54/48/19 52/49/17 50/50/15 48/51/13 46/52/11
+f 66/53/22 56/54/21 42/30/8 73/29/7
+f 67/44/20 54/43/19 56/54/21 66/53/22
+f 41/55/23 43/56/24 45/57/25 47/58/26 49/59/27 51/60/28 53/61/29 55/62/30
+f 103/63/31 63/64/32 64/65/33 104/66/34
+f 104/66/34 64/65/33 57/67/35 89/68/36
+f 102/69/37 62/70/38 63/64/32 103/63/31
+f 101/71/39 61/72/40 62/70/38 102/69/37
+f 100/73/41 60/74/42 61/72/40 101/71/39
+f 99/75/43 59/76/44 60/74/42 100/73/41
+f 98/77/45 58/78/46 59/79/44 99/80/43
+f 89/68/36 57/67/35 58/78/46 98/77/45
+f 65/81/47 73/29/7 72/32/10 74/82/48
+f 74/82/48 72/32/10 71/34/12 75/83/49
+f 75/84/49 71/35/12 70/38/14 76/85/50
+f 76/85/50 70/38/14 69/40/16 77/86/51
+f 77/86/51 69/40/16 68/42/18 78/87/52
+f 78/87/52 68/42/18 67/44/20 79/88/53
+f 80/89/54 66/53/22 73/29/7 65/81/47
+f 63/64/32 79/88/53 80/89/54 64/65/33
+f 64/65/33 80/89/54 65/81/47 57/67/35
+f 62/70/38 78/87/52 79/88/53 63/64/32
+f 61/72/40 77/86/51 78/87/52 62/70/38
+f 60/74/42 76/85/50 77/86/51 61/72/40
+f 59/76/44 75/84/49 76/85/50 60/74/42
+f 58/78/46 74/82/48 75/83/49 59/79/44
+f 57/67/35 65/81/47 74/82/48 58/78/46
+f 97/90/55 81/91/56 82/92/57 90/93/58
+f 90/93/58 82/92/57 83/94/59 91/95/60
+f 91/96/60 83/97/59 84/98/61 92/99/62
+f 92/99/62 84/98/61 85/100/63 93/101/64
+f 93/101/64 85/100/63 86/102/65 94/103/66
+f 94/103/66 86/102/65 87/104/67 95/105/68
+f 96/106/69 88/107/70 81/91/56 97/90/55
+f 95/105/68 87/104/67 88/107/70 96/106/69
+f 79/88/53 67/44/20 66/53/22 80/89/54
+f 53/108/29 95/105/68 96/106/69 55/109/30
+f 55/109/30 96/106/69 97/90/55 41/110/23
+f 51/111/28 94/103/66 95/105/68 53/108/29
+f 49/112/27 93/101/64 94/103/66 51/111/28
+f 47/113/26 92/99/62 93/101/64 49/112/27
+f 45/10/25 91/96/60 92/99/62 47/113/26
+f 43/114/24 90/93/58 91/95/60 45/21/25
+f 81/91/56 89/68/36 98/77/45 82/92/57
+f 82/92/57 98/77/45 99/80/43 83/94/59
+f 83/97/59 99/75/43 100/73/41 84/98/61
+f 84/98/61 100/73/41 101/71/39 85/100/63
+f 85/100/63 101/71/39 102/69/37 86/102/65
+f 86/102/65 102/69/37 103/63/31 87/104/67
+f 88/107/70 104/66/34 89/68/36 81/91/56
+f 87/104/67 103/63/31 104/66/34 88/107/70
+f 41/110/23 97/90/55 90/93/58 43/114/24
+f 137/29/7 106/30/8 108/31/9 136/32/10
+f 136/32/10 108/31/9 110/33/11 135/34/12
+f 135/35/12 110/36/11 112/37/13 134/38/14
+f 134/38/14 112/37/13 114/39/15 133/40/16
+f 133/40/16 114/39/15 116/41/17 132/42/18
+f 132/42/18 116/41/17 118/43/19 131/44/20
+f 108/45/9 106/46/8 120/47/21 118/48/19 116/49/17 114/50/15 112/51/13 110/52/11
+f 130/53/22 120/54/21 106/30/8 137/29/7
+f 131/44/20 118/43/19 120/54/21 130/53/22
+f 105/55/23 107/56/24 109/57/25 111/58/26 113/59/27 115/60/28 117/61/29 119/62/30
+f 167/63/31 127/64/32 128/65/33 168/66/34
+f 168/66/34 128/65/33 121/67/35 153/68/36
+f 166/69/37 126/70/38 127/64/32 167/63/31
+f 165/71/39 125/72/40 126/70/38 166/69/37
+f 164/73/41 124/74/42 125/72/40 165/71/39
+f 163/75/43 123/76/44 124/74/42 164/73/41
+f 162/77/45 122/78/46 123/79/44 163/80/43
+f 153/68/36 121/67/35 122/78/46 162/77/45
+f 129/81/47 137/29/7 136/32/10 138/82/48
+f 138/82/48 136/32/10 135/34/12 139/83/49
+f 139/84/49 135/35/12 134/38/14 140/85/50
+f 140/85/50 134/38/14 133/40/16 141/86/51
+f 141/86/51 133/40/16 132/42/18 142/87/52
+f 142/87/52 132/42/18 131/44/20 143/88/53
+f 144/89/54 130/53/22 137/29/7 129/81/47
+f 127/64/32 143/88/53 144/89/54 128/65/33
+f 128/65/33 144/89/54 129/81/47 121/67/35
+f 126/70/38 142/87/52 143/88/53 127/64/32
+f 125/72/40 141/86/51 142/87/52 126/70/38
+f 124/74/42 140/85/50 141/86/51 125/72/40
+f 123/76/44 139/84/49 140/85/50 124/74/42
+f 122/78/46 138/82/48 139/83/49 123/79/44
+f 121/67/35 129/81/47 138/82/48 122/78/46
+f 161/90/55 145/91/56 146/92/57 154/93/58
+f 154/93/58 146/92/57 147/94/59 155/95/60
+f 155/96/60 147/97/59 148/98/61 156/99/62
+f 156/99/62 148/98/61 149/100/63 157/101/64
+f 157/101/64 149/100/63 150/102/65 158/103/66
+f 158/103/66 150/102/65 151/104/67 159/105/68
+f 160/106/69 152/107/70 145/91/56 161/90/55
+f 159/105/68 151/104/67 152/107/70 160/106/69
+f 143/88/53 131/44/20 130/53/22 144/89/54
+f 117/108/29 159/105/68 160/106/69 119/109/30
+f 119/109/30 160/106/69 161/90/55 105/110/23
+f 115/111/28 158/103/66 159/105/68 117/108/29
+f 113/112/27 157/101/64 158/103/66 115/111/28
+f 111/113/26 156/99/62 157/101/64 113/112/27
+f 109/10/25 155/96/60 156/99/62 111/113/26
+f 107/114/24 154/93/58 155/95/60 109/21/25
+f 145/91/56 153/68/36 162/77/45 146/92/57
+f 146/92/57 162/77/45 163/80/43 147/94/59
+f 147/97/59 163/75/43 164/73/41 148/98/61
+f 148/98/61 164/73/41 165/71/39 149/100/63
+f 149/100/63 165/71/39 166/69/37 150/102/65
+f 150/102/65 166/69/37 167/63/31 151/104/67
+f 152/107/70 168/66/34 153/68/36 145/91/56
+f 151/104/67 167/63/31 168/66/34 152/107/70
+f 105/110/23 161/90/55 154/93/58 107/114/24
+f 201/29/7 170/30/8 172/31/9 200/32/10
+f 200/32/10 172/31/9 174/33/11 199/34/12
+f 199/35/12 174/36/11 176/37/13 198/38/14
+f 198/38/14 176/37/13 178/39/15 197/40/16
+f 197/40/16 178/39/15 180/41/17 196/42/18
+f 196/42/18 180/41/17 182/43/19 195/44/20
+f 172/45/9 170/46/8 184/47/21 182/48/19 180/49/17 178/50/15 176/51/13 174/52/11
+f 194/53/22 184/54/21 170/30/8 201/29/7
+f 195/44/20 182/43/19 184/54/21 194/53/22
+f 169/55/23 171/56/24 173/57/25 175/58/26 177/59/27 179/60/28 181/61/29 183/62/30
+f 231/63/31 191/64/32 192/65/33 232/66/34
+f 232/66/34 192/65/33 185/67/35 217/68/36
+f 230/69/37 190/70/38 191/64/32 231/63/31
+f 229/71/39 189/72/40 190/70/38 230/69/37
+f 228/73/41 188/74/42 189/72/40 229/71/39
+f 227/75/43 187/76/44 188/74/42 228/73/41
+f 226/77/45 186/78/46 187/79/44 227/80/43
+f 217/68/36 185/67/35 186/78/46 226/77/45
+f 193/81/47 201/29/7 200/32/10 202/82/48
+f 202/82/48 200/32/10 199/34/12 203/83/49
+f 203/84/49 199/35/12 198/38/14 204/85/50
+f 204/85/50 198/38/14 197/40/16 205/86/51
+f 205/86/51 197/40/16 196/42/18 206/87/52
+f 206/87/52 196/42/18 195/44/20 207/88/53
+f 208/89/54 194/53/22 201/29/7 193/81/47
+f 191/64/32 207/88/53 208/89/54 192/65/33
+f 192/65/33 208/89/54 193/81/47 185/67/35
+f 190/70/38 206/87/52 207/88/53 191/64/32
+f 189/72/40 205/86/51 206/87/52 190/70/38
+f 188/74/42 204/85/50 205/86/51 189/72/40
+f 187/76/44 203/84/49 204/85/50 188/74/42
+f 186/78/46 202/82/48 203/83/49 187/79/44
+f 185/67/35 193/81/47 202/82/48 186/78/46
+f 225/90/55 209/91/56 210/92/57 218/93/58
+f 218/93/58 210/92/57 211/94/59 219/95/60
+f 219/96/60 211/97/59 212/98/61 220/99/62
+f 220/99/62 212/98/61 213/100/63 221/101/64
+f 221/101/64 213/100/63 214/102/65 222/103/66
+f 222/103/66 214/102/65 215/104/67 223/105/68
+f 224/106/69 216/107/70 209/91/56 225/90/55
+f 223/105/68 215/104/67 216/107/70 224/106/69
+f 207/88/53 195/44/20 194/53/22 208/89/54
+f 181/108/29 223/105/68 224/106/69 183/109/30
+f 183/109/30 224/106/69 225/90/55 169/110/23
+f 179/111/28 222/103/66 223/105/68 181/108/29
+f 177/112/27 221/101/64 222/103/66 179/111/28
+f 175/113/26 220/99/62 221/101/64 177/112/27
+f 173/10/25 219/96/60 220/99/62 175/113/26
+f 171/114/24 218/93/58 219/95/60 173/21/25
+f 209/91/56 217/68/36 226/77/45 210/92/57
+f 210/92/57 226/77/45 227/80/43 211/94/59
+f 211/97/59 227/75/43 228/73/41 212/98/61
+f 212/98/61 228/73/41 229/71/39 213/100/63
+f 213/100/63 229/71/39 230/69/37 214/102/65
+f 214/102/65 230/69/37 231/63/31 215/104/67
+f 216/107/70 232/66/34 217/68/36 209/91/56
+f 215/104/67 231/63/31 232/66/34 216/107/70
+f 169/110/23 225/90/55 218/93/58 171/114/24
+f 265/29/7 234/30/8 236/31/9 264/32/10
+f 264/32/10 236/31/9 238/33/11 263/34/12
+f 263/35/12 238/36/11 240/37/13 262/38/14
+f 262/38/14 240/37/13 242/39/15 261/40/16
+f 261/40/16 242/39/15 244/41/17 260/42/18
+f 260/42/18 244/41/17 246/43/19 259/44/20
+f 236/45/9 234/46/8 248/47/21 246/48/19 244/49/17 242/50/15 240/51/13 238/52/11
+f 258/53/22 248/54/21 234/30/8 265/29/7
+f 259/44/20 246/43/19 248/54/21 258/53/22
+f 233/55/23 235/56/24 237/57/25 239/58/26 241/59/27 243/60/28 245/61/29 247/62/30
+f 295/63/31 255/64/32 256/65/33 296/66/34
+f 296/66/34 256/65/33 249/67/35 281/68/36
+f 294/69/37 254/70/38 255/64/32 295/63/31
+f 293/71/39 253/72/40 254/70/38 294/69/37
+f 292/73/41 252/74/42 253/72/40 293/71/39
+f 291/75/43 251/76/44 252/74/42 292/73/41
+f 290/77/45 250/78/46 251/79/44 291/80/43
+f 281/68/36 249/67/35 250/78/46 290/77/45
+f 257/81/47 265/29/7 264/32/10 266/82/48
+f 266/82/48 264/32/10 263/34/12 267/83/49
+f 267/84/49 263/35/12 262/38/14 268/85/50
+f 268/85/50 262/38/14 261/40/16 269/86/51
+f 269/86/51 261/40/16 260/42/18 270/87/52
+f 270/87/52 260/42/18 259/44/20 271/88/53
+f 272/89/54 258/53/22 265/29/7 257/81/47
+f 255/64/32 271/88/53 272/89/54 256/65/33
+f 256/65/33 272/89/54 257/81/47 249/67/35
+f 254/70/38 270/87/52 271/88/53 255/64/32
+f 253/72/40 269/86/51 270/87/52 254/70/38
+f 252/74/42 268/85/50 269/86/51 253/72/40
+f 251/76/44 267/84/49 268/85/50 252/74/42
+f 250/78/46 266/82/48 267/83/49 251/79/44
+f 249/67/35 257/81/47 266/82/48 250/78/46
+f 289/90/55 273/91/56 274/92/57 282/93/58
+f 282/93/58 274/92/57 275/94/59 283/95/60
+f 283/96/60 275/97/59 276/98/61 284/99/62
+f 284/99/62 276/98/61 277/100/63 285/101/64
+f 285/101/64 277/100/63 278/102/65 286/103/66
+f 286/103/66 278/102/65 279/104/67 287/105/68
+f 288/106/69 280/107/70 273/91/56 289/90/55
+f 287/105/68 279/104/67 280/107/70 288/106/69
+f 271/88/53 259/44/20 258/53/22 272/89/54
+f 245/108/29 287/105/68 288/106/69 247/109/30
+f 247/109/30 288/106/69 289/90/55 233/110/23
+f 243/111/28 286/103/66 287/105/68 245/108/29
+f 241/112/27 285/101/64 286/103/66 243/111/28
+f 239/113/26 284/99/62 285/101/64 241/112/27
+f 237/10/25 283/96/60 284/99/62 239/113/26
+f 235/114/24 282/93/58 283/95/60 237/21/25
+f 273/91/56 281/68/36 290/77/45 274/92/57
+f 274/92/57 290/77/45 291/80/43 275/94/59
+f 275/97/59 291/75/43 292/73/41 276/98/61
+f 276/98/61 292/73/41 293/71/39 277/100/63
+f 277/100/63 293/71/39 294/69/37 278/102/65
+f 278/102/65 294/69/37 295/63/31 279/104/67
+f 280/107/70 296/66/34 281/68/36 273/91/56
+f 279/104/67 295/63/31 296/66/34 280/107/70
+f 233/110/23 289/90/55 282/93/58 235/114/24
+f 329/29/7 298/30/8 300/31/9 328/32/10
+f 328/32/10 300/31/9 302/33/11 327/34/12
+f 327/35/12 302/36/11 304/37/13 326/38/14
+f 326/38/14 304/37/13 306/39/15 325/40/16
+f 325/40/16 306/39/15 308/41/17 324/42/18
+f 324/42/18 308/41/17 310/43/19 323/44/20
+f 300/45/9 298/46/8 312/47/21 310/48/19 308/49/17 306/50/15 304/51/13 302/52/11
+f 322/53/22 312/54/21 298/30/8 329/29/7
+f 323/44/20 310/43/19 312/54/21 322/53/22
+f 297/55/23 299/56/24 301/57/25 303/58/26 305/59/27 307/60/28 309/61/29 311/62/30
+f 359/63/31 319/64/32 320/65/33 360/66/34
+f 360/66/34 320/65/33 313/67/35 345/68/36
+f 358/69/37 318/70/38 319/64/32 359/63/31
+f 357/71/39 317/72/40 318/70/38 358/69/37
+f 356/73/41 316/74/42 317/72/40 357/71/39
+f 355/75/43 315/76/44 316/74/42 356/73/41
+f 354/77/45 314/78/46 315/79/44 355/80/43
+f 345/68/36 313/67/35 314/78/46 354/77/45
+f 321/81/47 329/29/7 328/32/10 330/82/48
+f 330/82/48 328/32/10 327/34/12 331/83/49
+f 331/84/49 327/35/12 326/38/14 332/85/50
+f 332/85/50 326/38/14 325/40/16 333/86/51
+f 333/86/51 325/40/16 324/42/18 334/87/52
+f 334/87/52 324/42/18 323/44/20 335/88/53
+f 336/89/54 322/53/22 329/29/7 321/81/47
+f 319/64/32 335/88/53 336/89/54 320/65/33
+f 320/65/33 336/89/54 321/81/47 313/67/35
+f 318/70/38 334/87/52 335/88/53 319/64/32
+f 317/72/40 333/86/51 334/87/52 318/70/38
+f 316/74/42 332/85/50 333/86/51 317/72/40
+f 315/76/44 331/84/49 332/85/50 316/74/42
+f 314/78/46 330/82/48 331/83/49 315/79/44
+f 313/67/35 321/81/47 330/82/48 314/78/46
+f 353/90/55 337/91/56 338/92/57 346/93/58
+f 346/93/58 338/92/57 339/94/59 347/95/60
+f 347/96/60 339/97/59 340/98/61 348/99/62
+f 348/99/62 340/98/61 341/100/63 349/101/64
+f 349/101/64 341/100/63 342/102/65 350/103/66
+f 350/103/66 342/102/65 343/104/67 351/105/68
+f 352/106/69 344/107/70 337/91/56 353/90/55
+f 351/105/68 343/104/67 344/107/70 352/106/69
+f 335/88/53 323/44/20 322/53/22 336/89/54
+f 309/108/29 351/105/68 352/106/69 311/109/30
+f 311/109/30 352/106/69 353/90/55 297/110/23
+f 307/111/28 350/103/66 351/105/68 309/108/29
+f 305/112/27 349/101/64 350/103/66 307/111/28
+f 303/113/26 348/99/62 349/101/64 305/112/27
+f 301/10/25 347/96/60 348/99/62 303/113/26
+f 299/114/24 346/93/58 347/95/60 301/21/25
+f 337/91/56 345/68/36 354/77/45 338/92/57
+f 338/92/57 354/77/45 355/80/43 339/94/59
+f 339/97/59 355/75/43 356/73/41 340/98/61
+f 340/98/61 356/73/41 357/71/39 341/100/63
+f 341/100/63 357/71/39 358/69/37 342/102/65
+f 342/102/65 358/69/37 359/63/31 343/104/67
+f 344/107/70 360/66/34 345/68/36 337/91/56
+f 343/104/67 359/63/31 360/66/34 344/107/70
+f 297/110/23 353/90/55 346/93/58 299/114/24
+f 393/29/7 362/30/8 364/31/9 392/32/10
+f 392/32/10 364/31/9 366/33/11 391/34/12
+f 391/35/12 366/36/11 368/37/13 390/38/14
+f 390/38/14 368/37/13 370/39/15 389/40/16
+f 389/40/16 370/39/15 372/41/17 388/42/18
+f 388/42/18 372/41/17 374/43/19 387/44/20
+f 364/45/9 362/46/8 376/47/21 374/48/19 372/49/17 370/50/15 368/51/13 366/52/11
+f 386/53/22 376/54/21 362/30/8 393/29/7
+f 387/44/20 374/43/19 376/54/21 386/53/22
+f 361/55/23 363/56/24 365/57/25 367/58/26 369/59/27 371/60/28 373/61/29 375/62/30
+f 423/63/31 383/64/32 384/65/33 424/66/34
+f 424/66/34 384/65/33 377/67/35 409/68/36
+f 422/69/37 382/70/38 383/64/32 423/63/31
+f 421/71/39 381/72/40 382/70/38 422/69/37
+f 420/73/41 380/74/42 381/72/40 421/71/39
+f 419/75/43 379/76/44 380/74/42 420/73/41
+f 418/77/45 378/78/46 379/79/44 419/80/43
+f 409/68/36 377/67/35 378/78/46 418/77/45
+f 385/81/47 393/29/7 392/32/10 394/82/48
+f 394/82/48 392/32/10 391/34/12 395/83/49
+f 395/84/49 391/35/12 390/38/14 396/85/50
+f 396/85/50 390/38/14 389/40/16 397/86/51
+f 397/86/51 389/40/16 388/42/18 398/87/52
+f 398/87/52 388/42/18 387/44/20 399/88/53
+f 400/89/54 386/53/22 393/29/7 385/81/47
+f 383/64/32 399/88/53 400/89/54 384/65/33
+f 384/65/33 400/89/54 385/81/47 377/67/35
+f 382/70/38 398/87/52 399/88/53 383/64/32
+f 381/72/40 397/86/51 398/87/52 382/70/38
+f 380/74/42 396/85/50 397/86/51 381/72/40
+f 379/76/44 395/84/49 396/85/50 380/74/42
+f 378/78/46 394/82/48 395/83/49 379/79/44
+f 377/67/35 385/81/47 394/82/48 378/78/46
+f 417/90/55 401/91/56 402/92/57 410/93/58
+f 410/93/58 402/92/57 403/94/59 411/95/60
+f 411/96/60 403/97/59 404/98/61 412/99/62
+f 412/99/62 404/98/61 405/100/63 413/101/64
+f 413/101/64 405/100/63 406/102/65 414/103/66
+f 414/103/66 406/102/65 407/104/67 415/105/68
+f 416/106/69 408/107/70 401/91/56 417/90/55
+f 415/105/68 407/104/67 408/107/70 416/106/69
+f 399/88/53 387/44/20 386/53/22 400/89/54
+f 373/108/29 415/105/68 416/106/69 375/109/30
+f 375/109/30 416/106/69 417/90/55 361/110/23
+f 371/111/28 414/103/66 415/105/68 373/108/29
+f 369/112/27 413/101/64 414/103/66 371/111/28
+f 367/113/26 412/99/62 413/101/64 369/112/27
+f 365/10/25 411/96/60 412/99/62 367/113/26
+f 363/114/24 410/93/58 411/95/60 365/21/25
+f 401/91/56 409/68/36 418/77/45 402/92/57
+f 402/92/57 418/77/45 419/80/43 403/94/59
+f 403/97/59 419/75/43 420/73/41 404/98/61
+f 404/98/61 420/73/41 421/71/39 405/100/63
+f 405/100/63 421/71/39 422/69/37 406/102/65
+f 406/102/65 422/69/37 423/63/31 407/104/67
+f 408/107/70 424/66/34 409/68/36 401/91/56
+f 407/104/67 423/63/31 424/66/34 408/107/70
+f 361/110/23 417/90/55 410/93/58 363/114/24
+f 457/29/16 426/30/15 428/31/17 456/32/18
+f 456/32/18 428/31/17 430/33/19 455/34/20
+f 455/35/20 430/36/19 432/37/21 454/38/22
+f 454/38/22 432/37/21 434/39/8 453/40/7
+f 453/40/7 434/39/8 436/41/9 452/42/10
+f 452/42/10 436/41/9 438/43/11 451/44/12
+f 428/45/17 426/46/15 440/47/13 438/48/11 436/49/9 434/50/8 432/51/21 430/52/19
+f 450/53/14 440/54/13 426/30/15 457/29/16
+f 451/44/12 438/43/11 440/54/13 450/53/14
+f 425/55/27 427/56/28 429/57/29 431/58/30 433/59/23 435/60/24 437/61/25 439/62/26
+f 487/63/43 447/64/44 448/65/42 488/66/41
+f 488/66/41 448/65/42 441/67/40 473/68/39
+f 486/69/45 446/70/46 447/64/44 487/63/43
+f 485/71/36 445/72/35 446/70/46 486/69/45
+f 484/73/34 444/74/33 445/72/35 485/71/36
+f 483/75/31 443/76/32 444/74/33 484/73/34
+f 482/77/37 442/78/38 443/79/32 483/80/31
+f 473/68/39 441/67/40 442/78/38 482/77/37
+f 449/81/51 457/29/16 456/32/18 458/82/52
+f 458/82/52 456/32/18 455/34/20 459/83/53
+f 459/84/53 455/35/20 454/38/22 460/85/54
+f 460/85/54 454/38/22 453/40/7 461/86/47
+f 461/86/47 453/40/7 452/42/10 462/87/48
+f 462/87/48 452/42/10 451/44/12 463/88/49
+f 464/89/50 450/53/14 457/29/16 449/81/51
+f 447/64/44 463/88/49 464/89/50 448/65/42
+f 448/65/42 464/89/50 449/81/51 441/67/40
+f 446/70/46 462/87/48 463/88/49 447/64/44
+f 445/72/35 461/86/47 462/87/48 446/70/46
+f 444/74/33 460/85/54 461/86/47 445/72/35
+f 443/76/32 459/84/53 460/85/54 444/74/33
+f 442/78/38 458/82/52 459/83/53 443/79/32
+f 441/67/40 449/81/51 458/82/52 442/78/38
+f 481/90/64 465/91/63 466/92/65 474/93/66
+f 474/93/66 466/92/65 467/94/67 475/95/68
+f 475/96/68 467/97/67 468/98/70 476/99/69
+f 476/99/69 468/98/70 469/100/56 477/101/55
+f 477/101/55 469/100/56 470/102/57 478/103/58
+f 478/103/58 470/102/57 471/104/59 479/105/60
+f 480/106/62 472/107/61 465/91/63 481/90/64
+f 479/105/60 471/104/59 472/107/61 480/106/62
+f 463/88/49 451/44/12 450/53/14 464/89/50
+f 437/108/25 479/105/60 480/106/62 439/109/26
+f 439/109/26 480/106/62 481/90/64 425/110/27
+f 435/111/24 478/103/58 479/105/60 437/108/25
+f 433/112/23 477/101/55 478/103/58 435/111/24
+f 431/113/30 476/99/69 477/101/55 433/112/23
+f 429/10/29 475/96/68 476/99/69 431/113/30
+f 427/114/28 474/93/66 475/95/68 429/21/29
+f 465/91/63 473/68/39 482/77/37 466/92/65
+f 466/92/65 482/77/37 483/80/31 467/94/67
+f 467/97/67 483/75/31 484/73/34 468/98/70
+f 468/98/70 484/73/34 485/71/36 469/100/56
+f 469/100/56 485/71/36 486/69/45 470/102/57
+f 470/102/57 486/69/45 487/63/43 471/104/59
+f 472/107/61 488/66/41 473/68/39 465/91/63
+f 471/104/59 487/63/43 488/66/41 472/107/61
+f 425/110/27 481/90/64 474/93/66 427/114/28
+f 521/29/16 490/30/15 492/31/17 520/32/18
+f 520/32/18 492/31/17 494/33/19 519/34/20
+f 519/35/20 494/36/19 496/37/21 518/38/22
+f 518/38/22 496/37/21 498/39/8 517/40/7
+f 517/40/7 498/39/8 500/41/9 516/42/10
+f 516/42/10 500/41/9 502/43/11 515/44/12
+f 492/45/17 490/46/15 504/47/13 502/48/11 500/49/9 498/50/8 496/51/21 494/52/19
+f 514/53/14 504/54/13 490/30/15 521/29/16
+f 515/44/12 502/43/11 504/54/13 514/53/14
+f 489/55/27 491/56/28 493/57/29 495/58/30 497/59/23 499/60/24 501/61/25 503/62/26
+f 551/63/43 511/64/44 512/65/42 552/66/41
+f 552/66/41 512/65/42 505/67/40 537/68/39
+f 550/69/45 510/70/46 511/64/44 551/63/43
+f 549/71/36 509/72/35 510/70/46 550/69/45
+f 548/73/34 508/74/33 509/72/35 549/71/36
+f 547/75/31 507/76/32 508/74/33 548/73/34
+f 546/77/37 506/78/38 507/79/32 547/80/31
+f 537/68/39 505/67/40 506/78/38 546/77/37
+f 513/81/51 521/29/16 520/32/18 522/82/52
+f 522/82/52 520/32/18 519/34/20 523/83/53
+f 523/84/53 519/35/20 518/38/22 524/85/54
+f 524/85/54 518/38/22 517/40/7 525/86/47
+f 525/86/47 517/40/7 516/42/10 526/87/48
+f 526/87/48 516/42/10 515/44/12 527/88/49
+f 528/89/50 514/53/14 521/29/16 513/81/51
+f 511/64/44 527/88/49 528/89/50 512/65/42
+f 512/65/42 528/89/50 513/81/51 505/67/40
+f 510/70/46 526/87/48 527/88/49 511/64/44
+f 509/72/35 525/86/47 526/87/48 510/70/46
+f 508/74/33 524/85/54 525/86/47 509/72/35
+f 507/76/32 523/84/53 524/85/54 508/74/33
+f 506/78/38 522/82/52 523/83/53 507/79/32
+f 505/67/40 513/81/51 522/82/52 506/78/38
+f 545/90/64 529/91/63 530/92/65 538/93/66
+f 538/93/66 530/92/65 531/94/67 539/95/68
+f 539/96/68 531/97/67 532/98/70 540/99/69
+f 540/99/69 532/98/70 533/100/56 541/101/55
+f 541/101/55 533/100/56 534/102/57 542/103/58
+f 542/103/58 534/102/57 535/104/59 543/105/60
+f 544/106/62 536/107/61 529/91/63 545/90/64
+f 543/105/60 535/104/59 536/107/61 544/106/62
+f 527/88/49 515/44/12 514/53/14 528/89/50
+f 501/108/25 543/105/60 544/106/62 503/109/26
+f 503/109/26 544/106/62 545/90/64 489/110/27
+f 499/111/24 542/103/58 543/105/60 501/108/25
+f 497/112/23 541/101/55 542/103/58 499/111/24
+f 495/113/30 540/99/69 541/101/55 497/112/23
+f 493/10/29 539/96/68 540/99/69 495/113/30
+f 491/114/28 538/93/66 539/95/68 493/21/29
+f 529/91/63 537/68/39 546/77/37 530/92/65
+f 530/92/65 546/77/37 547/80/31 531/94/67
+f 531/97/67 547/75/31 548/73/34 532/98/70
+f 532/98/70 548/73/34 549/71/36 533/100/56
+f 533/100/56 549/71/36 550/69/45 534/102/57
+f 534/102/57 550/69/45 551/63/43 535/104/59
+f 536/107/61 552/66/41 537/68/39 529/91/63
+f 535/104/59 551/63/43 552/66/41 536/107/61
+f 489/110/27 545/90/64 538/93/66 491/114/28
+f 585/29/16 554/30/15 556/31/17 584/32/18
+f 584/32/18 556/31/17 558/33/19 583/34/20
+f 583/35/20 558/36/19 560/37/21 582/38/22
+f 582/38/22 560/37/21 562/39/8 581/40/7
+f 581/40/7 562/39/8 564/41/9 580/42/10
+f 580/42/10 564/41/9 566/43/11 579/44/12
+f 556/45/17 554/46/15 568/47/13 566/48/11 564/49/9 562/50/8 560/51/21 558/52/19
+f 578/53/14 568/54/13 554/30/15 585/29/16
+f 579/44/12 566/43/11 568/54/13 578/53/14
+f 553/55/27 555/56/28 557/57/29 559/58/30 561/59/23 563/60/24 565/61/25 567/62/26
+f 615/63/43 575/64/44 576/65/42 616/66/41
+f 616/66/41 576/65/42 569/67/40 601/68/39
+f 614/69/45 574/70/46 575/64/44 615/63/43
+f 613/71/36 573/72/35 574/70/46 614/69/45
+f 612/73/34 572/74/33 573/72/35 613/71/36
+f 611/75/31 571/76/32 572/74/33 612/73/34
+f 610/77/37 570/78/38 571/79/32 611/80/31
+f 601/68/39 569/67/40 570/78/38 610/77/37
+f 577/81/51 585/29/16 584/32/18 586/82/52
+f 586/82/52 584/32/18 583/34/20 587/83/53
+f 587/84/53 583/35/20 582/38/22 588/85/54
+f 588/85/54 582/38/22 581/40/7 589/86/47
+f 589/86/47 581/40/7 580/42/10 590/87/48
+f 590/87/48 580/42/10 579/44/12 591/88/49
+f 592/89/50 578/53/14 585/29/16 577/81/51
+f 575/64/44 591/88/49 592/89/50 576/65/42
+f 576/65/42 592/89/50 577/81/51 569/67/40
+f 574/70/46 590/87/48 591/88/49 575/64/44
+f 573/72/35 589/86/47 590/87/48 574/70/46
+f 572/74/33 588/85/54 589/86/47 573/72/35
+f 571/76/32 587/84/53 588/85/54 572/74/33
+f 570/78/38 586/82/52 587/83/53 571/79/32
+f 569/67/40 577/81/51 586/82/52 570/78/38
+f 609/90/64 593/91/63 594/92/65 602/93/66
+f 602/93/66 594/92/65 595/94/67 603/95/68
+f 603/96/68 595/97/67 596/98/70 604/99/69
+f 604/99/69 596/98/70 597/100/56 605/101/55
+f 605/101/55 597/100/56 598/102/57 606/103/58
+f 606/103/58 598/102/57 599/104/59 607/105/60
+f 608/106/62 600/107/61 593/91/63 609/90/64
+f 607/105/60 599/104/59 600/107/61 608/106/62
+f 591/88/49 579/44/12 578/53/14 592/89/50
+f 565/108/25 607/105/60 608/106/62 567/109/26
+f 567/109/26 608/106/62 609/90/64 553/110/27
+f 563/111/24 606/103/58 607/105/60 565/108/25
+f 561/112/23 605/101/55 606/103/58 563/111/24
+f 559/113/30 604/99/69 605/101/55 561/112/23
+f 557/10/29 603/96/68 604/99/69 559/113/30
+f 555/114/28 602/93/66 603/95/68 557/21/29
+f 593/91/63 601/68/39 610/77/37 594/92/65
+f 594/92/65 610/77/37 611/80/31 595/94/67
+f 595/97/67 611/75/31 612/73/34 596/98/70
+f 596/98/70 612/73/34 613/71/36 597/100/56
+f 597/100/56 613/71/36 614/69/45 598/102/57
+f 598/102/57 614/69/45 615/63/43 599/104/59
+f 600/107/61 616/66/41 601/68/39 593/91/63
+f 599/104/59 615/63/43 616/66/41 600/107/61
+f 553/110/27 609/90/64 602/93/66 555/114/28
+f 649/29/16 618/30/15 620/31/17 648/32/18
+f 648/32/18 620/31/17 622/33/19 647/34/20
+f 647/35/20 622/36/19 624/37/21 646/38/22
+f 646/38/22 624/37/21 626/39/8 645/40/7
+f 645/40/7 626/39/8 628/41/9 644/42/10
+f 644/42/10 628/41/9 630/43/11 643/44/12
+f 620/45/17 618/46/15 632/47/13 630/48/11 628/49/9 626/50/8 624/51/21 622/52/19
+f 642/53/14 632/54/13 618/30/15 649/29/16
+f 643/44/12 630/43/11 632/54/13 642/53/14
+f 617/55/27 619/56/28 621/57/29 623/58/30 625/59/23 627/60/24 629/61/25 631/62/26
+f 679/63/43 639/64/44 640/65/42 680/66/41
+f 680/66/41 640/65/42 633/67/40 665/68/39
+f 678/69/45 638/70/46 639/64/44 679/63/43
+f 677/71/36 637/72/35 638/70/46 678/69/45
+f 676/73/34 636/74/33 637/72/35 677/71/36
+f 675/75/31 635/76/32 636/74/33 676/73/34
+f 674/77/37 634/78/38 635/79/32 675/80/31
+f 665/68/39 633/67/40 634/78/38 674/77/37
+f 641/81/51 649/29/16 648/32/18 650/82/52
+f 650/82/52 648/32/18 647/34/20 651/83/53
+f 651/84/53 647/35/20 646/38/22 652/85/54
+f 652/85/54 646/38/22 645/40/7 653/86/47
+f 653/86/47 645/40/7 644/42/10 654/87/48
+f 654/87/48 644/42/10 643/44/12 655/88/49
+f 656/89/50 642/53/14 649/29/16 641/81/51
+f 639/64/44 655/88/49 656/89/50 640/65/42
+f 640/65/42 656/89/50 641/81/51 633/67/40
+f 638/70/46 654/87/48 655/88/49 639/64/44
+f 637/72/35 653/86/47 654/87/48 638/70/46
+f 636/74/33 652/85/54 653/86/47 637/72/35
+f 635/76/32 651/84/53 652/85/54 636/74/33
+f 634/78/38 650/82/52 651/83/53 635/79/32
+f 633/67/40 641/81/51 650/82/52 634/78/38
+f 673/90/64 657/91/63 658/92/65 666/93/66
+f 666/93/66 658/92/65 659/94/67 667/95/68
+f 667/96/68 659/97/67 660/98/70 668/99/69
+f 668/99/69 660/98/70 661/100/56 669/101/55
+f 669/101/55 661/100/56 662/102/57 670/103/58
+f 670/103/58 662/102/57 663/104/59 671/105/60
+f 672/106/62 664/107/61 657/91/63 673/90/64
+f 671/105/60 663/104/59 664/107/61 672/106/62
+f 655/88/49 643/44/12 642/53/14 656/89/50
+f 629/108/25 671/105/60 672/106/62 631/109/26
+f 631/109/26 672/106/62 673/90/64 617/110/27
+f 627/111/24 670/103/58 671/105/60 629/108/25
+f 625/112/23 669/101/55 670/103/58 627/111/24
+f 623/113/30 668/99/69 669/101/55 625/112/23
+f 621/10/29 667/96/68 668/99/69 623/113/30
+f 619/114/28 666/93/66 667/95/68 621/21/29
+f 657/91/63 665/68/39 674/77/37 658/92/65
+f 658/92/65 674/77/37 675/80/31 659/94/67
+f 659/97/67 675/75/31 676/73/34 660/98/70
+f 660/98/70 676/73/34 677/71/36 661/100/56
+f 661/100/56 677/71/36 678/69/45 662/102/57
+f 662/102/57 678/69/45 679/63/43 663/104/59
+f 664/107/61 680/66/41 665/68/39 657/91/63
+f 663/104/59 679/63/43 680/66/41 664/107/61
+f 617/110/27 673/90/64 666/93/66 619/114/28
+f 713/29/16 682/30/15 684/31/17 712/32/18
+f 712/32/18 684/31/17 686/33/19 711/34/20
+f 711/35/20 686/36/19 688/37/21 710/38/22
+f 710/38/22 688/37/21 690/39/8 709/40/7
+f 709/40/7 690/39/8 692/41/9 708/42/10
+f 708/42/10 692/41/9 694/43/11 707/44/12
+f 684/45/17 682/46/15 696/47/13 694/48/11 692/49/9 690/50/8 688/51/21 686/52/19
+f 706/53/14 696/54/13 682/30/15 713/29/16
+f 707/44/12 694/43/11 696/54/13 706/53/14
+f 681/55/27 683/56/28 685/57/29 687/58/30 689/59/23 691/60/24 693/61/25 695/62/26
+f 743/63/43 703/64/44 704/65/42 744/66/41
+f 744/66/41 704/65/42 697/67/40 729/68/39
+f 742/69/45 702/70/46 703/64/44 743/63/43
+f 741/71/36 701/72/35 702/70/46 742/69/45
+f 740/73/34 700/74/33 701/72/35 741/71/36
+f 739/75/31 699/76/32 700/74/33 740/73/34
+f 738/77/37 698/78/38 699/79/32 739/80/31
+f 729/68/39 697/67/40 698/78/38 738/77/37
+f 705/81/51 713/29/16 712/32/18 714/82/52
+f 714/82/52 712/32/18 711/34/20 715/83/53
+f 715/84/53 711/35/20 710/38/22 716/85/54
+f 716/85/54 710/38/22 709/40/7 717/86/47
+f 717/86/47 709/40/7 708/42/10 718/87/48
+f 718/87/48 708/42/10 707/44/12 719/88/49
+f 720/89/50 706/53/14 713/29/16 705/81/51
+f 703/64/44 719/88/49 720/89/50 704/65/42
+f 704/65/42 720/89/50 705/81/51 697/67/40
+f 702/70/46 718/87/48 719/88/49 703/64/44
+f 701/72/35 717/86/47 718/87/48 702/70/46
+f 700/74/33 716/85/54 717/86/47 701/72/35
+f 699/76/32 715/84/53 716/85/54 700/74/33
+f 698/78/38 714/82/52 715/83/53 699/79/32
+f 697/67/40 705/81/51 714/82/52 698/78/38
+f 737/90/64 721/91/63 722/92/65 730/93/66
+f 730/93/66 722/92/65 723/94/67 731/95/68
+f 731/96/68 723/97/67 724/98/70 732/99/69
+f 732/99/69 724/98/70 725/100/56 733/101/55
+f 733/101/55 725/100/56 726/102/57 734/103/58
+f 734/103/58 726/102/57 727/104/59 735/105/60
+f 736/106/62 728/107/61 721/91/63 737/90/64
+f 735/105/60 727/104/59 728/107/61 736/106/62
+f 719/88/49 707/44/12 706/53/14 720/89/50
+f 693/108/25 735/105/60 736/106/62 695/109/26
+f 695/109/26 736/106/62 737/90/64 681/110/27
+f 691/111/24 734/103/58 735/105/60 693/108/25
+f 689/112/23 733/101/55 734/103/58 691/111/24
+f 687/113/30 732/99/69 733/101/55 689/112/23
+f 685/10/29 731/96/68 732/99/69 687/113/30
+f 683/114/28 730/93/66 731/95/68 685/21/29
+f 721/91/63 729/68/39 738/77/37 722/92/65
+f 722/92/65 738/77/37 739/80/31 723/94/67
+f 723/97/67 739/75/31 740/73/34 724/98/70
+f 724/98/70 740/73/34 741/71/36 725/100/56
+f 725/100/56 741/71/36 742/69/45 726/102/57
+f 726/102/57 742/69/45 743/63/43 727/104/59
+f 728/107/61 744/66/41 729/68/39 721/91/63
+f 727/104/59 743/63/43 744/66/41 728/107/61
+f 681/110/27 737/90/64 730/93/66 683/114/28
+f 777/29/16 746/30/15 748/31/17 776/32/18
+f 776/32/18 748/31/17 750/33/19 775/34/20
+f 775/35/20 750/36/19 752/37/21 774/38/22
+f 774/38/22 752/37/21 754/39/8 773/40/7
+f 773/40/7 754/39/8 756/41/9 772/42/10
+f 772/42/10 756/41/9 758/43/11 771/44/12
+f 748/45/17 746/46/15 760/47/13 758/48/11 756/49/9 754/50/8 752/51/21 750/52/19
+f 770/53/14 760/54/13 746/30/15 777/29/16
+f 771/44/12 758/43/11 760/54/13 770/53/14
+f 745/55/27 747/56/28 749/57/29 751/58/30 753/59/23 755/60/24 757/61/25 759/62/26
+f 807/63/43 767/64/44 768/65/42 808/66/41
+f 808/66/41 768/65/42 761/67/40 793/68/39
+f 806/69/45 766/70/46 767/64/44 807/63/43
+f 805/71/36 765/72/35 766/70/46 806/69/45
+f 804/73/34 764/74/33 765/72/35 805/71/36
+f 803/75/31 763/76/32 764/74/33 804/73/34
+f 802/77/37 762/78/38 763/79/32 803/80/31
+f 793/68/39 761/67/40 762/78/38 802/77/37
+f 769/81/51 777/29/16 776/32/18 778/82/52
+f 778/82/52 776/32/18 775/34/20 779/83/53
+f 779/84/53 775/35/20 774/38/22 780/85/54
+f 780/85/54 774/38/22 773/40/7 781/86/47
+f 781/86/47 773/40/7 772/42/10 782/87/48
+f 782/87/48 772/42/10 771/44/12 783/88/49
+f 784/89/50 770/53/14 777/29/16 769/81/51
+f 767/64/44 783/88/49 784/89/50 768/65/42
+f 768/65/42 784/89/50 769/81/51 761/67/40
+f 766/70/46 782/87/48 783/88/49 767/64/44
+f 765/72/35 781/86/47 782/87/48 766/70/46
+f 764/74/33 780/85/54 781/86/47 765/72/35
+f 763/76/32 779/84/53 780/85/54 764/74/33
+f 762/78/38 778/82/52 779/83/53 763/79/32
+f 761/67/40 769/81/51 778/82/52 762/78/38
+f 801/90/64 785/91/63 786/92/65 794/93/66
+f 794/93/66 786/92/65 787/94/67 795/95/68
+f 795/96/68 787/97/67 788/98/70 796/99/69
+f 796/99/69 788/98/70 789/100/56 797/101/55
+f 797/101/55 789/100/56 790/102/57 798/103/58
+f 798/103/58 790/102/57 791/104/59 799/105/60
+f 800/106/62 792/107/61 785/91/63 801/90/64
+f 799/105/60 791/104/59 792/107/61 800/106/62
+f 783/88/49 771/44/12 770/53/14 784/89/50
+f 757/108/25 799/105/60 800/106/62 759/109/26
+f 759/109/26 800/106/62 801/90/64 745/110/27
+f 755/111/24 798/103/58 799/105/60 757/108/25
+f 753/112/23 797/101/55 798/103/58 755/111/24
+f 751/113/30 796/99/69 797/101/55 753/112/23
+f 749/10/29 795/96/68 796/99/69 751/113/30
+f 747/114/28 794/93/66 795/95/68 749/21/29
+f 785/91/63 793/68/39 802/77/37 786/92/65
+f 786/92/65 802/77/37 803/80/31 787/94/67
+f 787/97/67 803/75/31 804/73/34 788/98/70
+f 788/98/70 804/73/34 805/71/36 789/100/56
+f 789/100/56 805/71/36 806/69/45 790/102/57
+f 790/102/57 806/69/45 807/63/43 791/104/59
+f 792/107/61 808/66/41 793/68/39 785/91/63
+f 791/104/59 807/63/43 808/66/41 792/107/61
+f 745/110/27 801/90/64 794/93/66 747/114/28
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_books.png b/homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_books.png
new file mode 100644
index 0000000..6f2be28
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_books.png
Binary files differ
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_inside_back.png b/homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_inside_back.png
new file mode 100644
index 0000000..3fb49da
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/3dbookshelf_inside_back.png
Binary files differ
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_drinking_glass_inv.png b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_drinking_glass_inv.png
new file mode 100644
index 0000000..13f3f88
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_drinking_glass_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_glass_bottle_inv.png b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_glass_bottle_inv.png
new file mode 100644
index 0000000..20a42d6
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_glass_bottle_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_shelf_glass.png b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_shelf_glass.png
new file mode 100644
index 0000000..101666f
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_shelf_glass.png
Binary files differ
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_steel_bottle_inv.png b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_steel_bottle_inv.png
new file mode 100644
index 0000000..bfecba7
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/3dvessels_steel_bottle_inv.png
Binary files differ
diff --git a/homedecor_modpack/homedecor_3d_extras/textures/bottle_metal_bright.png b/homedecor_modpack/homedecor_3d_extras/textures/bottle_metal_bright.png
new file mode 100644
index 0000000..c0d9c2e
--- /dev/null
+++ b/homedecor_modpack/homedecor_3d_extras/textures/bottle_metal_bright.png
Binary files differ
diff --git a/homedecor_modpack/inbox/depends.txt b/homedecor_modpack/inbox/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/homedecor_modpack/inbox/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/homedecor_modpack/inbox/init.lua b/homedecor_modpack/inbox/init.lua
new file mode 100644
index 0000000..7e5867a
--- /dev/null
+++ b/homedecor_modpack/inbox/init.lua
@@ -0,0 +1,107 @@
+local inbox = {}
+screwdriver = screwdriver or {}
+
+minetest.register_craft({
+ output ="inbox:empty",
+ recipe = {
+ {"","default:steel_ingot",""},
+ {"default:steel_ingot","","default:steel_ingot"},
+ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}
+ }
+})
+
+local mb_cbox = {
+ type = "fixed",
+ fixed = { -5/16, -8/16, -8/16, 5/16, 2/16, 8/16 }
+}
+
+minetest.register_node("inbox:empty", {
+ paramtype = "light",
+ drawtype = "mesh",
+ mesh = "inbox_mailbox.obj",
+ description = "Mailbox",
+ tiles = {
+ "inbox_red_metal.png",
+ "inbox_white_metal.png",
+ "inbox_grey_metal.png",
+ },
+ inventory_image = "mailbox_inv.png",
+ selection_box = mb_cbox,
+ collision_box = mb_cbox,
+ paramtype2 = "facedir",
+ groups = {choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.rotate_simple,
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos)
+ local owner = placer:get_player_name()
+ meta:set_string("owner", owner)
+ meta:set_string("infotext", owner.."'s Mailbox")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ inv:set_size("drop", 1)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ local meta = minetest.get_meta(pos)
+ local player = clicker:get_player_name()
+ local owner = meta:get_string("owner")
+ local meta = minetest.get_meta(pos)
+ if owner == player then
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ "default:chest_locked",
+ inbox.get_inbox_formspec(pos))
+ else
+ minetest.show_formspec(
+ clicker:get_player_name(),
+ "default:chest_locked",
+ inbox.get_inbox_insert_formspec(pos))
+ end
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local owner = meta:get_string("owner")
+ local inv = meta:get_inventory()
+ return player:get_player_name() == owner and inv:is_empty("main")
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if listname == "drop" and inv:room_for_item("main", stack) then
+ inv:remove_item("drop", stack)
+ inv:add_item("main", stack)
+ end
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if listname == "main" then
+ return 0
+ end
+ if listname == "drop" then
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if inv:room_for_item("main", stack) then
+ return -1
+ else
+ return 0
+ end
+ end
+ end,
+})
+
+function inbox.get_inbox_formspec(pos)
+ local spos = pos.x .. "," .. pos.y .. "," ..pos.z
+ local formspec =
+ "size[8,9]"..
+ "list[nodemeta:".. spos .. ";main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]"
+ return formspec
+end
+
+function inbox.get_inbox_insert_formspec(pos)
+ local spos = pos.x .. "," .. pos.y .. "," ..pos.z
+ local formspec =
+ "size[8,9]"..
+ "list[nodemeta:".. spos .. ";drop;3.5,2;1,1;]"..
+ "list[current_player;main;0,5;8,4;]"
+ return formspec
+end
diff --git a/homedecor_modpack/inbox/models/inbox_mailbox.obj b/homedecor_modpack/inbox/models/inbox_mailbox.obj
new file mode 100644
index 0000000..95b2156
--- /dev/null
+++ b/homedecor_modpack/inbox/models/inbox_mailbox.obj
@@ -0,0 +1,275 @@
+# Blender v2.73 (sub 0) OBJ File: 'mailbox.blend'
+# www.blender.org
+o Cylinder
+v 0.312500 -0.500000 -0.500000
+v 0.312500 -0.500000 0.500000
+v -0.312500 -0.500000 0.500000
+v -0.312500 -0.500000 -0.500000
+v -0.230971 -0.082709 0.437500
+v -0.250001 -0.178381 0.437500
+v 0.250001 -0.178381 0.437500
+v 0.230971 -0.082709 0.437500
+v 0.000000 0.125000 0.500000
+v -0.000000 0.125000 -0.500000
+v -0.119589 0.101212 0.500000
+v -0.119589 0.101212 -0.500000
+v -0.220971 0.033471 0.500000
+v -0.220971 0.033471 -0.500000
+v -0.288712 -0.067911 0.500000
+v -0.288712 -0.067911 -0.500000
+v -0.312500 -0.187500 0.500000
+v -0.312500 -0.187500 -0.500000
+v 0.176777 -0.001603 0.437500
+v 0.095671 0.052590 0.437500
+v 0.095671 0.052590 -0.500000
+v 0.176777 -0.001603 -0.500000
+v 0.230971 -0.082709 -0.500000
+v 0.250001 -0.178381 -0.500000
+v -0.250001 -0.178381 -0.500000
+v -0.230971 -0.082709 -0.500000
+v -0.176778 -0.001603 -0.500000
+v -0.095671 0.052590 -0.500000
+v -0.000000 0.071621 -0.500000
+v -0.250001 -0.437501 -0.500000
+v 0.250001 -0.437501 -0.500000
+v 0.000000 -0.067809 0.500000
+v 0.312500 -0.187500 0.500000
+v 0.312500 -0.187500 -0.500000
+v 0.288712 -0.067911 0.500000
+v 0.288712 -0.067911 -0.500000
+v 0.220971 0.033471 0.500000
+v 0.220971 0.033471 -0.500000
+v 0.119588 0.101212 0.500000
+v 0.119588 0.101212 -0.500000
+v -0.176778 -0.001603 0.437500
+v -0.095671 0.052590 0.437500
+v 0.000000 0.071621 0.437500
+v -0.250001 -0.437501 0.437500
+v 0.250001 -0.437501 0.437500
+v 0.000000 -0.082627 0.437500
+v -0.312500 -0.250000 -0.375000
+v -0.312500 -0.250000 -0.312500
+v -0.343750 -0.250000 -0.312500
+v -0.343750 -0.250000 -0.375000
+v -0.312500 0.250000 -0.375000
+v -0.312500 0.250000 -0.312500
+v -0.343750 0.250000 -0.312500
+v -0.343750 0.250000 -0.375000
+v -0.320312 0.125000 -0.312500
+v -0.320312 0.125000 -0.187500
+v -0.335937 0.125000 -0.187500
+v -0.335937 0.125000 -0.312500
+v -0.320312 0.250000 -0.312500
+v -0.320312 0.250000 -0.187500
+v -0.335937 0.250000 -0.187500
+v -0.335937 0.250000 -0.312500
+vt 0.000000 0.000000
+vt 0.181818 0.000000
+vt 0.181818 1.000000
+vt 0.000000 1.000000
+vt 0.818182 0.000000
+vt 0.909091 0.000000
+vt 0.909091 1.000000
+vt 0.818182 1.000000
+vt 0.363637 1.000000
+vt 0.363637 0.000000
+vt 0.454545 0.000000
+vt 0.454546 1.000000
+vt 0.545455 0.500000
+vt 0.545455 0.625000
+vt 0.454546 0.625000
+vt 0.454546 0.500000
+vt 0.636364 0.500000
+vt 0.636364 0.625000
+vt 0.454546 0.250000
+vt 0.818182 0.250000
+vt 0.818182 0.500000
+vt 0.954545 0.000000
+vt 0.954545 0.250000
+vt 0.909091 0.250000
+vt 0.909091 0.500000
+vt 0.954545 0.500000
+vt 1.000000 0.000000
+vt 1.000000 0.250000
+vt 0.973553 0.716044
+vt 0.933816 0.766735
+vt 0.804196 0.716095
+vt 0.437572 0.500000
+vt 0.507722 0.511894
+vt 0.493693 0.536205
+vt 0.437572 0.526690
+vt 0.987507 0.656250
+vt 0.567193 0.545764
+vt 0.606930 0.596456
+vt 0.573059 0.603855
+vt 0.541269 0.563301
+vt 0.000000 0.500000
+vt 0.366623 0.000000
+vt 0.366623 0.500000
+vt 0.874346 0.800606
+vt 0.620884 0.656250
+vt 0.634838 0.716044
+vt 0.674575 0.766735
+vt 0.734045 0.800606
+vt 0.804196 0.812500
+vt 0.987507 0.500000
+vt 0.620884 0.500000
+vt 0.584222 0.651690
+vt 0.620884 0.812500
+vt 0.584222 0.781251
+vt 0.254261 0.812500
+vt 0.254261 0.656250
+vt 0.290922 0.651690
+vt 0.290922 0.781251
+vt 0.268214 0.596456
+vt 0.302085 0.603855
+vt 0.307951 0.545765
+vt 0.333875 0.563302
+vt 0.367422 0.511894
+vt 0.381452 0.536205
+vt 0.116656 0.500000
+vt 0.116656 1.000000
+vt 0.050576 1.000000
+vt 0.050576 0.500000
+vt 1.000000 0.500000
+vt 0.936921 0.500000
+vt 0.936921 0.000000
+vt 0.865741 0.500000
+vt 0.865741 0.000000
+vt 0.683312 0.000000
+vt 0.683312 0.500000
+vt 0.549052 0.000000
+vt 0.549052 0.500000
+vt 0.620232 0.000000
+vt 0.620233 0.500000
+vt 0.188180 0.500000
+vt 0.188180 1.000000
+vt 0.254260 0.500000
+vt 0.254261 1.000000
+vt 0.000000 0.703643
+vt 0.000000 0.414971
+vt 0.648062 0.414971
+vt 0.648062 0.703643
+vt 0.820879 0.711328
+vt 1.000000 0.711328
+vt 1.000000 1.000000
+vt 0.820879 1.000000
+vt 0.648062 0.855664
+vt 0.661216 0.800429
+vt 0.754688 0.855664
+vt 0.698678 0.753603
+vt 0.754744 0.722315
+vt 0.754745 0.989013
+vt 0.698679 0.957725
+vt 0.661216 0.910899
+vt 0.000000 0.160377
+vt 0.000000 0.108347
+vt 0.648062 0.108347
+vt 0.648062 0.160377
+vt 0.648062 0.957694
+vt 0.648061 1.000000
+vt 0.000000 0.957694
+vt 0.648062 0.904383
+vt 0.000000 0.904383
+vt 0.648062 0.848183
+vt 0.000000 0.848183
+vt 0.000000 0.309258
+vt 0.648062 0.309258
+vt 0.000000 0.365304
+vt 0.648062 0.365304
+vt 0.000000 0.052030
+vt 0.648062 0.000000
+vt 0.648062 0.052030
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.382700 0.923900 -0.000000
+vn -0.707100 0.707100 0.000000
+vn -0.923900 0.382700 0.000000
+vn -0.995200 0.098000 0.000000
+vn 0.995200 0.098000 -0.000000
+vn 0.923900 0.382700 -0.000000
+vn 0.707100 0.707100 -0.000000
+vn 0.382700 0.923900 -0.000000
+vn 0.382700 -0.923900 -0.000000
+vn 0.707100 -0.707100 -0.000000
+vn 0.923900 -0.382700 -0.000000
+vn 0.995200 -0.098000 -0.000000
+vn -0.995200 -0.098000 0.000000
+vn -0.923900 -0.382700 0.000000
+vn -0.707100 -0.707100 0.000000
+vn -0.382700 -0.923900 0.000000
+g Cylinder_Cylinder_flag
+s off
+f 51/1/1 52/2/1 48/3/1 47/4/1
+f 52/5/2 53/6/2 49/7/2 48/8/2
+f 53/9/3 54/3/3 50/2/3 49/10/3
+f 54/10/4 51/11/4 47/12/4 50/9/4
+f 47/13/5 48/14/5 49/15/5 50/16/5
+f 54/14/6 53/13/6 52/17/6 51/18/6
+f 59/16/1 60/19/1 56/20/1 55/21/1
+f 60/6/2 61/22/2 57/23/2 56/24/2
+f 61/19/3 62/11/3 58/5/3 57/20/3
+f 55/25/5 56/24/5 57/23/5 58/26/5
+f 62/27/6 61/28/6 60/23/6 59/22/6
+g Cylinder_Cylinder_outside
+f 35/29/2 37/30/2 32/31/2
+f 10/32/4 40/33/4 21/34/4 29/35/4
+f 33/36/2 35/29/2 32/31/2
+f 38/37/4 36/38/4 23/39/4 22/40/4
+f 1/41/5 2/1/5 3/42/5 4/43/5
+f 37/30/2 39/44/2 32/31/2
+f 17/45/2 33/36/2 32/31/2
+f 15/46/2 17/45/2 32/31/2
+f 13/47/2 15/46/2 32/31/2
+f 11/48/2 13/47/2 32/31/2
+f 9/49/2 11/48/2 32/31/2
+f 2/50/2 33/36/2 17/45/2 3/51/2
+f 39/44/2 9/49/2 32/31/2
+f 40/33/4 38/37/4 22/40/4 21/34/4
+f 36/38/4 34/45/4 24/52/4 23/39/4
+f 34/45/4 1/53/4 31/54/4 24/52/4
+f 4/55/4 18/56/4 25/57/4 30/58/4
+f 18/56/4 16/59/4 26/60/4 25/57/4
+f 16/59/4 14/61/4 27/62/4 26/60/4
+f 14/61/4 12/63/4 28/64/4 27/62/4
+f 12/63/4 10/32/4 29/35/4 28/64/4
+f 1/53/4 4/55/4 30/58/4 31/54/4
+s 1
+f 9/65/6 10/66/6 12/67/7 11/68/7
+f 11/68/7 12/67/7 14/4/8 13/41/8
+f 13/27/8 14/69/8 16/70/9 15/71/9
+f 15/71/9 16/70/9 18/72/10 17/73/10
+f 3/74/3 17/73/10 18/72/10 4/75/3
+f 2/43/1 1/42/1 34/76/11 33/77/11
+f 33/77/11 34/76/11 36/78/12 35/79/12
+f 35/79/12 36/78/12 38/74/13 37/75/13
+f 39/80/14 40/81/14 10/66/6 9/65/6
+f 37/82/13 38/83/13 40/81/14 39/80/14
+g Cylinder_Cylinder_inside
+s off
+f 31/84/6 30/85/6 44/86/6 45/87/6
+f 7/88/4 45/89/4 44/90/4 6/91/4
+f 43/92/4 20/93/4 46/94/4
+f 20/93/4 19/95/4 46/94/4
+f 19/95/4 8/96/4 46/94/4
+f 8/96/4 7/88/4 46/94/4
+f 7/88/4 6/91/4 46/94/4
+f 6/91/4 5/97/4 46/94/4
+f 5/97/4 41/98/4 46/94/4
+f 41/98/4 42/99/4 46/94/4
+f 42/99/4 43/92/4 46/94/4
+s 1
+f 28/100/15 29/101/5 43/102/5 42/103/15
+f 27/104/16 28/105/15 42/4/15 41/106/16
+f 26/107/17 27/104/16 41/106/16 5/108/17
+f 25/109/18 26/107/17 5/108/17 6/110/18
+f 30/87/1 25/109/18 6/110/18 44/84/1
+f 24/111/19 31/100/3 45/103/3 7/112/19
+f 23/113/20 24/111/19 7/112/19 8/114/20
+f 22/85/21 23/113/20 8/114/20 19/86/21
+f 21/115/22 22/1/21 19/116/21 20/117/22
+f 29/101/5 21/115/22 20/117/22 43/102/5
diff --git a/homedecor_modpack/inbox/textures/inbox_grey_metal.png b/homedecor_modpack/inbox/textures/inbox_grey_metal.png
new file mode 100644
index 0000000..a34fc84
--- /dev/null
+++ b/homedecor_modpack/inbox/textures/inbox_grey_metal.png
Binary files differ
diff --git a/homedecor_modpack/inbox/textures/inbox_red_metal.png b/homedecor_modpack/inbox/textures/inbox_red_metal.png
new file mode 100644
index 0000000..684e311
--- /dev/null
+++ b/homedecor_modpack/inbox/textures/inbox_red_metal.png
Binary files differ
diff --git a/homedecor_modpack/inbox/textures/inbox_white_metal.png b/homedecor_modpack/inbox/textures/inbox_white_metal.png
new file mode 100644
index 0000000..01cbd9a
--- /dev/null
+++ b/homedecor_modpack/inbox/textures/inbox_white_metal.png
Binary files differ
diff --git a/homedecor_modpack/inbox/textures/mailbox_inv.png b/homedecor_modpack/inbox/textures/mailbox_inv.png
new file mode 100644
index 0000000..8adf3ea
--- /dev/null
+++ b/homedecor_modpack/inbox/textures/mailbox_inv.png
Binary files differ
diff --git a/homedecor_modpack/itemframes/depends.txt b/homedecor_modpack/itemframes/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/homedecor_modpack/itemframes/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/homedecor_modpack/itemframes/init.lua b/homedecor_modpack/itemframes/init.lua
new file mode 100644
index 0000000..000eab6
--- /dev/null
+++ b/homedecor_modpack/itemframes/init.lua
@@ -0,0 +1,243 @@
+local tmp = {}
+screwdriver = screwdriver or {}
+
+minetest.register_entity("itemframes:item",{
+ hp_max = 1,
+ visual="wielditem",
+ visual_size={x=.33,y=.33},
+ collisionbox = {0,0,0,0,0,0},
+ physical=false,
+ textures={"air"},
+ on_activate = function(self, staticdata)
+ if tmp.nodename ~= nil and tmp.texture ~= nil then
+ self.nodename = tmp.nodename
+ tmp.nodename = nil
+ self.texture = tmp.texture
+ tmp.texture = nil
+ else
+ if staticdata ~= nil and staticdata ~= "" then
+ local data = staticdata:split(';')
+ if data and data[1] and data[2] then
+ self.nodename = data[1]
+ self.texture = data[2]
+ end
+ end
+ end
+ if self.texture ~= nil then
+ self.object:set_properties({textures={self.texture}})
+ end
+ if self.nodename == "itemframes:pedestal" then
+ self.object:set_properties({automatic_rotate=1})
+ end
+ end,
+ get_staticdata = function(self)
+ if self.nodename ~= nil and self.texture ~= nil then
+ return self.nodename .. ';' .. self.texture
+ end
+ return ""
+ end,
+})
+
+
+local facedir = {}
+facedir[0] = {x=0,y=0,z=1}
+facedir[1] = {x=1,y=0,z=0}
+facedir[2] = {x=0,y=0,z=-1}
+facedir[3] = {x=-1,y=0,z=0}
+
+local remove_item = function(pos, node)
+ local objs = nil
+ if node.name == "itemframes:frame" then
+ objs = minetest.get_objects_inside_radius(pos, .5)
+ elseif node.name == "itemframes:pedestal" then
+ objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y+1,z=pos.z}, .5)
+ end
+ if objs then
+ for _, obj in ipairs(objs) do
+ if obj and obj:get_luaentity() and obj:get_luaentity().name == "itemframes:item" then
+ obj:remove()
+ end
+ end
+ end
+end
+
+local update_item = function(pos, node)
+ remove_item(pos, node)
+ local meta = minetest.get_meta(pos)
+ if meta:get_string("item") ~= "" then
+ if node.name == "itemframes:frame" then
+ local posad = facedir[node.param2]
+ if not posad then return end
+ pos.x = pos.x + posad.x*6.5/16
+ pos.y = pos.y + posad.y*6.5/16
+ pos.z = pos.z + posad.z*6.5/16
+ elseif node.name == "itemframes:pedestal" then
+ pos.y = pos.y + 12/16+.33
+ end
+ tmp.nodename = node.name
+ tmp.texture = ItemStack(meta:get_string("item")):get_name()
+ local e = minetest.add_entity(pos,"itemframes:item")
+ if node.name == "itemframes:frame" then
+ local yaw = math.pi*2 - node.param2 * math.pi/2
+ e:setyaw(yaw)
+ end
+ end
+end
+
+local drop_item = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ if meta:get_string("item") ~= "" then
+ if node.name == "itemframes:frame" then
+ minetest.add_item(pos, meta:get_string("item"))
+ elseif node.name == "itemframes:pedestal" then
+ minetest.add_item({x=pos.x,y=pos.y+1,z=pos.z}, meta:get_string("item"))
+ end
+ meta:set_string("item","")
+ end
+ remove_item(pos, node)
+end
+
+minetest.register_node("itemframes:frame",{
+ description = "Item frame",
+ drawtype = "nodebox",
+ node_box = { type = "fixed", fixed = {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5} },
+ selection_box = { type = "fixed", fixed = {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5} },
+ tiles = {"itemframes_frame.png"},
+ inventory_image = "itemframes_frame.png",
+ wield_image = "itemframes_frame.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ groups = { choppy=2,dig_immediate=2 },
+ legacy_wallmounted = true,
+ sounds = default.node_sound_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner",placer:get_player_name())
+ meta:set_string("infotext","Item frame (owned by "..placer:get_player_name()..")")
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ if not itemstack then return end
+ local meta = minetest.get_meta(pos)
+ if clicker:get_player_name() == meta:get_string("owner") then
+ drop_item(pos,node)
+ local s = itemstack:take_item()
+ meta:set_string("item",s:to_string())
+ update_item(pos,node)
+ end
+ return itemstack
+ end,
+ on_punch = function(pos,node,puncher)
+ local meta = minetest.get_meta(pos)
+ if puncher:get_player_name() == meta:get_string("owner") then
+ drop_item(pos, node)
+ end
+ end,
+ can_dig = function(pos,player)
+
+ local meta = minetest.get_meta(pos)
+ return player:get_player_name() == meta:get_string("owner")
+ end,
+ on_destruct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local node = minetest.get_node(pos)
+ if meta:get_string("item") ~= "" then
+ drop_item(pos, node)
+ end
+ end,
+})
+
+
+minetest.register_node("itemframes:pedestal",{
+ description = "Pedestal",
+ drawtype = "nodebox",
+ node_box = { type = "fixed", fixed = {
+ {-7/16, -8/16, -7/16, 7/16, -7/16, 7/16}, -- bottom plate
+ {-6/16, -7/16, -6/16, 6/16, -6/16, 6/16}, -- bottom plate (upper)
+ {-0.25, -6/16, -0.25, 0.25, 11/16, 0.25}, -- pillar
+ {-7/16, 11/16, -7/16, 7/16, 12/16, 7/16}, -- top plate
+ } },
+ --selection_box = { type = "fixed", fixed = {-7/16, -0.5, -7/16, 7/16, 12/16, 7/16} },
+ tiles = {"itemframes_pedestal.png"},
+ paramtype = "light",
+ groups = { cracky=3 },
+ sounds = default.node_sound_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner",placer:get_player_name())
+ meta:set_string("infotext","Pedestal (owned by "..placer:get_player_name()..")")
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack)
+ if not itemstack then return end
+ local meta = minetest.get_meta(pos)
+ if clicker:get_player_name() == meta:get_string("owner") then
+ drop_item(pos,node)
+ local s = itemstack:take_item()
+ meta:set_string("item",s:to_string())
+ update_item(pos,node)
+ end
+ return itemstack
+ end,
+ on_punch = function(pos,node,puncher)
+ local meta = minetest.get_meta(pos)
+ if puncher:get_player_name() == meta:get_string("owner") then
+ drop_item(pos,node)
+ end
+ end,
+ can_dig = function(pos,player)
+
+ local meta = minetest.get_meta(pos)
+ return player:get_player_name() == meta:get_string("owner")
+ end,
+ on_destruct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local node = minetest.get_node(pos)
+ if meta:get_string("item") ~= "" then
+ drop_item(pos, node)
+ end
+ end,
+})
+
+-- automatically restore entities lost from frames/pedestals
+-- due to /clearobjects or similar
+
+minetest.register_abm({
+ nodenames = { "itemframes:frame", "itemframes:pedestal" },
+ interval = 15,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local num
+
+ if node.name == "itemframes:frame" then
+ num = #minetest.get_objects_inside_radius(pos, 0.5)
+ elseif node.name == "itemframes:pedestal" then
+ pos.y = pos.y + 1
+ num = #minetest.get_objects_inside_radius(pos, 0.5)
+ pos.y = pos.y - 1
+ end
+
+ if num > 0 then return end
+ update_item(pos, node)
+ end
+})
+
+-- crafts
+
+minetest.register_craft({
+ output = 'itemframes:frame',
+ recipe = {
+ {'group:stick', 'group:stick', 'group:stick'},
+ {'group:stick', 'default:paper', 'default:stick'},
+ {'group:stick', 'group:stick', 'group:stick'},
+ }
+})
+minetest.register_craft({
+ output = 'itemframes:pedestal',
+ recipe = {
+ {'default:stone', 'default:stone', 'default:stone'},
+ {'', 'default:stone', ''},
+ {'default:stone', 'default:stone', 'default:stone'},
+ }
+})
diff --git a/homedecor_modpack/itemframes/textures/itemframes_frame.png b/homedecor_modpack/itemframes/textures/itemframes_frame.png
new file mode 100644
index 0000000..5373c45
--- /dev/null
+++ b/homedecor_modpack/itemframes/textures/itemframes_frame.png
Binary files differ
diff --git a/homedecor_modpack/itemframes/textures/itemframes_pedestal.png b/homedecor_modpack/itemframes/textures/itemframes_pedestal.png
new file mode 100644
index 0000000..a269b0b
--- /dev/null
+++ b/homedecor_modpack/itemframes/textures/itemframes_pedestal.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/README.txt b/homedecor_modpack/lavalamp/README.txt
new file mode 100644
index 0000000..c192e25
--- /dev/null
+++ b/homedecor_modpack/lavalamp/README.txt
@@ -0,0 +1,42 @@
+Lava Lamps (lavalamp) mod for Minetest
+
+
+by thefamilygrog66
+
+Description:
+Coloured Lava Lamps, loosely based on Tonyka's wall torches from the 3dforniture/homedecor mod. There are 6 colours in all: red, orange, yellow, green, blue, violet.
+
+After placing a lava lamp, the player can turn it off/on again by right-clicking on it.
+
+Recipe:
+
++---------------+
+| coloured wool |
++---------------+
+| water bucket |
++---------------+
+| black wool |
++---------------+
+
+Mod dependencies: wool, bucket
+
+License:
+Sourcecode: WTFPL (see below)
+Graphics: WTFPL (see below)
+
+See also:
+http://minetest.net/
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/homedecor_modpack/lavalamp/depends.txt b/homedecor_modpack/lavalamp/depends.txt
new file mode 100644
index 0000000..29a8e95
--- /dev/null
+++ b/homedecor_modpack/lavalamp/depends.txt
@@ -0,0 +1,2 @@
+wool
+bucket \ No newline at end of file
diff --git a/homedecor_modpack/lavalamp/init.lua b/homedecor_modpack/lavalamp/init.lua
new file mode 100644
index 0000000..8e0c3d5
--- /dev/null
+++ b/homedecor_modpack/lavalamp/init.lua
@@ -0,0 +1,82 @@
+local lavalamps_list = {
+ { "Red Lava Lamp", "red"},
+ { "Orange Lava Lamp", "orange"},
+ { "Yellow Lava Lamp", "yellow"},
+ { "Green Lava Lamp", "green"},
+ { "Blue Lava Lamp", "blue"},
+ { "Violet Lava Lamp", "violet"},
+}
+
+for i in ipairs(lavalamps_list) do
+ local lavalampdesc = lavalamps_list[i][1]
+ local colour = lavalamps_list[i][2]
+
+ minetest.register_node("lavalamp:"..colour, {
+ description = lavalampdesc,
+ drawtype = "mesh",
+ mesh = "lavalamp.obj",
+ tiles = {
+ "lavalamp_metal.png",
+ {
+ name="lavalamp_lamp_anim_"..colour..".png",
+ animation={
+ type="vertical_frames",
+ aspect_w=40,
+ aspect_h=40,
+ length=6.0,
+ },
+ },
+ },
+ inventory_image = "lavalamp_lamp_"..colour.."_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ light_source = 14,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 },
+ },
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ on_rightclick = function(pos, node, clicker)
+ node.name = "lavalamp:"..colour.."_off"
+ minetest.set_node(pos, node)
+ end,
+ })
+
+ minetest.register_node("lavalamp:"..colour.."_off", {
+ description = lavalampdesc.." off",
+ drawtype = "mesh",
+ mesh = "lavalamp.obj",
+ tiles = {
+ "lavalamp_metal.png",
+ "lavalamp_lamp_off.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 },
+ },
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ drop = "lavalamp:"..colour,
+ on_rightclick = function(pos, node, clicker)
+ node.name = "lavalamp:"..colour
+ minetest.set_node(pos, node)
+ end,
+ })
+
+ minetest.register_craft({
+ output = "lavalamp:"..colour,
+ recipe = {
+ {"", "wool:"..colour, "", },
+ {"", "bucket:bucket_water", "", },
+ {"", "wool:black", "", }
+ }
+ })
+
+end
diff --git a/homedecor_modpack/lavalamp/models/lavalamp.obj b/homedecor_modpack/lavalamp/models/lavalamp.obj
new file mode 100644
index 0000000..321ea74
--- /dev/null
+++ b/homedecor_modpack/lavalamp/models/lavalamp.obj
@@ -0,0 +1,550 @@
+# Blender v2.73 (sub 0) OBJ File: 'lava-lamp.blend'
+# www.blender.org
+o Cylinder
+v 0.017236 0.500000 -0.017236
+v 0.106066 -0.500000 -0.106066
+v 0.009328 0.500000 -0.022520
+v 0.057403 -0.500000 -0.138582
+v 0.000000 0.500000 -0.024375
+v 0.000000 -0.500000 -0.150000
+v 0.057403 0.000000 -0.138582
+v 0.000000 0.000000 -0.150000
+v 0.138582 -0.500000 -0.057403
+v 0.022520 0.500000 -0.009328
+v 0.150000 -0.500000 0.000000
+v 0.024375 0.500000 -0.000000
+v 0.138582 -0.500000 0.057403
+v 0.022520 0.500000 0.009328
+v 0.106066 -0.500000 0.106066
+v 0.017236 0.500000 0.017236
+v 0.057403 -0.500000 0.138582
+v 0.009328 0.500000 0.022520
+v 0.000000 -0.500000 0.150000
+v 0.000000 0.500000 0.024375
+v -0.057402 -0.500000 0.138582
+v -0.009328 0.500000 0.022520
+v -0.106066 -0.500000 0.106066
+v -0.017236 0.500000 0.017236
+v -0.138582 -0.500000 0.057403
+v -0.022520 0.500000 0.009328
+v -0.150000 -0.500000 -0.000000
+v -0.024375 0.500000 -0.000000
+v -0.138582 -0.500000 -0.057403
+v -0.022520 0.500000 -0.009328
+v -0.106066 -0.500000 -0.106066
+v -0.017236 0.500000 -0.017236
+v -0.057402 -0.500000 -0.138582
+v -0.009328 0.500000 -0.022520
+v 0.106066 0.000000 -0.106066
+v 0.138582 0.000000 -0.057403
+v 0.150000 0.000000 0.000000
+v 0.138582 0.000000 0.057403
+v 0.106066 0.000000 0.106066
+v 0.057403 0.000000 0.138582
+v 0.000000 0.000000 0.150000
+v -0.057402 0.000000 0.138582
+v -0.106066 0.000000 0.106066
+v -0.138582 0.000000 0.057403
+v -0.150000 0.000000 -0.000000
+v -0.138582 0.000000 -0.057403
+v -0.106066 0.000000 -0.106066
+v -0.057402 0.000000 -0.138582
+v 0.032145 -0.250000 -0.077606
+v 0.059397 -0.250000 -0.059397
+v 0.077606 -0.250000 -0.032145
+v 0.084000 -0.250000 0.000000
+v 0.077606 -0.250000 0.032145
+v 0.059397 -0.250000 0.059397
+v 0.032145 -0.250000 0.077606
+v 0.000000 -0.250000 0.084000
+v -0.032145 -0.250000 0.077606
+v -0.059397 -0.250000 0.059397
+v -0.077606 -0.250000 0.032145
+v -0.084000 -0.250000 -0.000000
+v -0.077606 -0.250000 -0.032145
+v -0.059397 -0.250000 -0.059397
+v 0.000000 -0.250000 -0.084000
+v -0.032145 -0.250000 -0.077606
+v -0.124724 0.125000 -0.051662
+v -0.095459 0.125000 -0.095459
+v 0.000000 0.375000 -0.059400
+v 0.045922 -0.375000 -0.110866
+v -0.051662 0.125000 -0.124724
+v 0.084853 -0.375000 -0.084853
+v -0.135000 0.125000 -0.000000
+v 0.110866 -0.375000 -0.045922
+v -0.124724 0.125000 0.051662
+v 0.120000 -0.375000 0.000000
+v -0.095459 0.125000 0.095459
+v 0.110866 -0.375000 0.045922
+v -0.051662 0.125000 0.124724
+v 0.084853 -0.375000 0.084853
+v 0.000000 0.125000 0.135000
+v 0.045922 -0.375000 0.110866
+v 0.051662 0.125000 0.124724
+v 0.000000 -0.375000 0.120000
+v 0.095459 0.125000 0.095459
+v -0.045922 -0.375000 0.110866
+v 0.124724 0.125000 0.051662
+v -0.084853 -0.375000 0.084853
+v 0.135000 0.125000 0.000000
+v -0.110866 -0.375000 0.045922
+v 0.124724 0.125000 -0.051662
+v -0.120000 -0.375000 -0.000000
+v 0.095459 0.125000 -0.095459
+v -0.110866 -0.375000 -0.045922
+v 0.051662 0.125000 -0.124724
+v -0.084853 -0.375000 -0.084853
+v 0.000000 -0.125000 -0.150000
+v -0.045922 -0.375000 -0.110866
+v -0.054878 0.375000 -0.022731
+v -0.042002 0.375000 -0.042002
+v 0.000000 0.125000 -0.135000
+v 0.057403 -0.125000 -0.138582
+v -0.022731 0.375000 -0.054878
+v 0.106066 -0.125000 -0.106066
+v -0.059400 0.375000 -0.000000
+v 0.138582 -0.125000 -0.057403
+v -0.054878 0.375000 0.022731
+v 0.150000 -0.125000 0.000000
+v -0.042002 0.375000 0.042002
+v 0.138582 -0.125000 0.057403
+v -0.022731 0.375000 0.054878
+v 0.106066 -0.125000 0.106066
+v 0.000000 0.375000 0.059400
+v 0.057403 -0.125000 0.138582
+v 0.022731 0.375000 0.054878
+v 0.000000 -0.125000 0.150000
+v 0.042002 0.375000 0.042002
+v -0.057402 -0.125000 0.138582
+v 0.054878 0.375000 0.022731
+v -0.106066 -0.125000 0.106066
+v 0.059400 0.375000 0.000000
+v -0.138582 -0.125000 0.057403
+v 0.054878 0.375000 -0.022731
+v -0.150000 -0.125000 -0.000000
+v 0.042002 0.375000 -0.042002
+v -0.138582 -0.125000 -0.057403
+v 0.022731 0.375000 -0.054878
+v -0.106066 -0.125000 -0.106066
+v 0.000000 -0.375000 -0.120000
+v -0.057402 -0.125000 -0.138582
+vt 0.875000 0.062500
+vt 0.750000 0.062500
+vt 0.750000 0.000000
+vt 0.875000 0.000000
+vt 0.125000 0.937500
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+vt 0.125000 0.875000
+vt 0.000000 0.812500
+vt 0.125000 0.812500
+vt 0.000000 0.750000
+vt 0.125000 0.750000
+vt 0.875000 1.000000
+vt 0.750000 1.000000
+vt 0.750000 0.937500
+vt 0.875000 0.937500
+vt 0.000000 0.687500
+vt 0.125000 0.687500
+vt 0.000000 0.625000
+vt 0.125000 0.625000
+vt 0.875000 0.875000
+vt 0.750000 0.875000
+vt 0.750000 0.812500
+vt 0.875000 0.812500
+vt 0.000000 0.562500
+vt 0.125000 0.562500
+vt 0.000000 0.500000
+vt 0.125000 0.500000
+vt 0.000000 0.437500
+vt 0.125000 0.437500
+vt 0.750000 0.750000
+vt 0.875000 0.750000
+vt 0.000000 0.375000
+vt 0.125000 0.375000
+vt 0.000000 0.312500
+vt 0.125000 0.312500
+vt 0.000000 0.250000
+vt 0.125000 0.250000
+vt 0.000000 0.187500
+vt 0.125000 0.187500
+vt 0.875000 0.625000
+vt 0.750000 0.625000
+vt 0.750000 0.562500
+vt 0.875000 0.562500
+vt 0.000000 0.125000
+vt 0.125000 0.125000
+vt 0.000000 0.062500
+vt 0.125000 0.062500
+vt 0.125000 1.000000
+vt 0.000000 1.000000
+vt 0.625000 0.625000
+vt 0.720671 0.605970
+vt 0.801777 0.551777
+vt 0.855970 0.470671
+vt 0.875000 0.375000
+vt 0.855970 0.279329
+vt 0.801777 0.198223
+vt 0.720671 0.144030
+vt 0.625000 0.125000
+vt 0.529329 0.144030
+vt 0.448223 0.198223
+vt 0.394030 0.279329
+vt 0.375000 0.375000
+vt 0.394030 0.470671
+vt 0.448223 0.551777
+vt 0.529329 0.605970
+vt 0.000000 0.000000
+vt 0.125000 0.000000
+vt 0.875000 0.125000
+vt 0.750000 0.125000
+vt 0.250000 0.875000
+vt 0.297836 0.865485
+vt 0.338388 0.838388
+vt 0.365485 0.797835
+vt 0.375000 0.750000
+vt 0.365485 0.702165
+vt 0.338388 0.661612
+vt 0.297836 0.634515
+vt 0.250000 0.625000
+vt 0.202164 0.634515
+vt 0.161612 0.661612
+vt 0.134515 0.702165
+vt 0.134515 0.797835
+vt 0.161612 0.838388
+vt 0.202164 0.865485
+vt 0.875000 0.187500
+vt 0.750000 0.187500
+vt 0.875000 0.250000
+vt 0.750000 0.250000
+vt 0.875000 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.875000 0.437500
+vt 0.750000 0.437500
+vt 0.875000 0.500000
+vt 0.750000 0.500000
+vt 0.875000 0.687500
+vt 0.750000 0.687500
+vt 1.000000 0.750000
+vt 1.000000 0.687500
+vt 1.000000 0.625000
+vt 1.000000 0.562500
+vt 1.000000 0.500000
+vt 1.000000 0.437500
+vt 1.000000 0.375000
+vt 1.000000 0.312500
+vt 1.000000 0.250000
+vt 1.000000 0.187500
+vt 1.000000 0.125000
+vt 1.000000 0.062500
+vt 0.625000 0.562500
+vt 0.625000 0.812500
+vt 0.625000 0.750000
+vt 0.625000 0.937500
+vt 0.625000 0.875000
+vt 0.625000 1.000000
+vt 0.625000 0.062500
+vt 0.625000 0.000000
+vt 1.000000 0.812500
+vt 0.625000 0.187500
+vt 1.000000 0.937500
+vt 1.000000 0.875000
+vt 0.625000 0.250000
+vt 0.625000 0.312500
+vt 0.625000 0.375000
+vt 0.625000 0.437500
+vt 1.000000 1.000000
+vt 0.625000 0.500000
+vt 0.625000 0.687500
+vt 1.000000 0.000000
+vt 0.250000 -0.000000
+vt 0.250000 0.250000
+vt 0.375000 0.250000
+vt 0.375000 -0.000000
+vt 0.500000 0.250000
+vt 0.500000 -0.000000
+vt 0.500000 1.000000
+vt 0.500000 0.500000
+vt 0.375000 1.000000
+vt 0.375000 0.500000
+vt 0.250000 1.000000
+vt 0.250000 0.500000
+vn -0.967100 0.254400 0.000000
+vn -0.994200 -0.107600 0.000000
+vn -0.918500 -0.107600 -0.380400
+vn -0.893500 0.254400 -0.370100
+vn 0.000000 0.269800 -0.962900
+vn 0.000000 0.761600 -0.648000
+vn 0.248000 0.761600 -0.598700
+vn 0.368500 0.269800 -0.889600
+vn 0.458200 0.761600 -0.458200
+vn 0.680900 0.269800 -0.680900
+vn 0.598700 0.761600 -0.248000
+vn 0.889600 0.269800 -0.368500
+vn -0.703000 -0.107600 -0.703000
+vn -0.683800 0.254400 -0.683800
+vn 0.648000 0.761600 0.000000
+vn 0.962900 0.269800 0.000000
+vn 0.598700 0.761600 0.248000
+vn 0.889600 0.269800 0.368500
+vn -0.370100 0.254400 -0.893500
+vn -0.380400 -0.107600 -0.918500
+vn 0.000000 -0.107600 -0.994200
+vn 0.000000 0.254400 -0.967100
+vn 0.458200 0.761600 0.458200
+vn 0.680900 0.269800 0.680900
+vn 0.248000 0.761600 0.598700
+vn 0.368500 0.269800 0.889600
+vn 0.000000 0.761600 0.648000
+vn 0.000000 0.269800 0.962900
+vn 0.380400 -0.107600 -0.918500
+vn 0.370100 0.254400 -0.893500
+vn -0.248000 0.761600 0.598700
+vn -0.368500 0.269800 0.889600
+vn -0.458200 0.761600 0.458200
+vn -0.680900 0.269800 0.680900
+vn -0.598700 0.761600 0.248000
+vn -0.889600 0.269800 0.368500
+vn -0.648000 0.761600 0.000000
+vn -0.962900 0.269800 -0.000000
+vn 0.893500 0.254400 -0.370100
+vn 0.918500 -0.107600 -0.380400
+vn 0.994200 -0.107600 0.000000
+vn 0.967100 0.254400 0.000000
+vn -0.598700 0.761600 -0.248000
+vn -0.889600 0.269800 -0.368500
+vn -0.458200 0.761600 -0.458200
+vn -0.680900 0.269800 -0.680900
+vn -0.368500 0.269800 -0.889600
+vn -0.248000 0.761600 -0.598700
+vn 0.312900 -0.575600 -0.755500
+vn 0.578200 -0.575600 -0.578200
+vn 0.755500 -0.575600 -0.312900
+vn 0.817700 -0.575600 0.000000
+vn 0.755500 -0.575600 0.312900
+vn 0.578200 -0.575600 0.578200
+vn 0.312900 -0.575600 0.755500
+vn 0.000000 -0.575600 0.817700
+vn -0.312900 -0.575600 0.755500
+vn -0.578200 -0.575600 0.578200
+vn -0.755500 -0.575600 0.312900
+vn -0.817700 -0.575600 0.000000
+vn -0.755500 -0.575600 -0.312900
+vn -0.578200 -0.575600 -0.578200
+vn -0.312900 -0.575600 -0.755500
+vn 0.000000 -0.575600 -0.817700
+vn -0.893500 0.254400 0.370100
+vn -0.918500 -0.107600 0.380400
+vn -0.683800 0.254400 0.683800
+vn -0.703000 -0.107600 0.703000
+vn -0.370100 0.254400 0.893500
+vn -0.380400 -0.107600 0.918500
+vn 0.000000 0.254400 0.967100
+vn 0.000000 -0.107600 0.994200
+vn 0.370100 0.254400 0.893500
+vn 0.380400 -0.107600 0.918500
+vn 0.683800 0.254400 0.683800
+vn 0.703000 -0.107600 0.703000
+vn 0.893500 0.254400 0.370100
+vn 0.918500 -0.107600 0.380400
+vn 0.683800 0.254400 -0.683800
+vn 0.703000 -0.107600 -0.703000
+vn 0.817000 -0.466900 -0.338400
+vn 0.884300 -0.466900 0.000000
+vn 0.000000 -0.466900 -0.884300
+vn 0.338400 -0.466900 -0.817000
+vn -0.625300 -0.466900 -0.625300
+vn -0.338400 -0.466900 -0.817000
+vn -0.817000 -0.466900 -0.338400
+vn -0.884300 -0.466900 -0.000000
+vn -0.817000 -0.466900 0.338400
+vn -0.625300 -0.466900 0.625300
+vn -0.338400 -0.466900 0.817000
+vn 0.000000 -0.466900 0.884300
+vn 0.338400 -0.466900 0.817000
+vn 0.625300 -0.466900 0.625300
+vn 0.817000 -0.466900 0.338400
+vn 0.625300 -0.466900 -0.625300
+vn 0.000000 0.289500 0.957200
+vn -0.366300 0.289500 0.884300
+vn -0.374700 0.202900 0.904600
+vn 0.000000 0.202900 0.979200
+vn 0.382700 0.000000 -0.923900
+vn 0.382000 0.059200 -0.922200
+vn 0.705900 0.059200 -0.705900
+vn 0.707100 0.000000 -0.707100
+vn 0.922200 0.059200 -0.382000
+vn 0.923900 0.000000 -0.382700
+vn 1.000000 0.000000 0.000000
+vn 0.998200 0.059200 0.000000
+vn 0.922200 0.059200 0.382000
+vn 0.923900 0.000000 0.382700
+vn -0.676800 0.289500 0.676800
+vn -0.692400 0.202900 0.692400
+vn 0.705900 0.059200 0.705900
+vn 0.707100 0.000000 0.707100
+vn 0.382000 0.059200 0.922200
+vn 0.382700 0.000000 0.923900
+vn -0.884300 0.289500 0.366300
+vn -0.904600 0.202900 0.374700
+vn 0.000000 0.059200 0.998200
+vn 0.000000 0.000000 1.000000
+vn -0.382000 0.059200 0.922200
+vn -0.382700 0.000000 0.923900
+vn -0.957200 0.289500 -0.000000
+vn -0.979200 0.202900 0.000000
+vn -0.705900 0.059200 0.705900
+vn -0.707100 0.000000 0.707100
+vn -0.922200 0.059200 0.382000
+vn -0.923900 0.000000 0.382700
+vn -0.998200 0.059200 0.000000
+vn -1.000000 0.000000 -0.000000
+vn -0.884300 0.289500 -0.366300
+vn -0.904600 0.202900 -0.374700
+vn -0.922200 0.059200 -0.382000
+vn -0.923900 0.000000 -0.382700
+vn -0.676800 0.289500 -0.676800
+vn -0.692400 0.202900 -0.692400
+vn -0.705900 0.059200 -0.705900
+vn -0.707100 0.000000 -0.707100
+vn -0.366300 0.289500 -0.884300
+vn 0.000000 0.289500 -0.957200
+vn 0.000000 0.202900 -0.979200
+vn -0.374700 0.202900 -0.904600
+vn -0.382700 0.000000 -0.923900
+vn -0.382000 0.059200 -0.922200
+vn 0.000000 0.059200 -0.998200
+vn 0.000000 0.000000 -1.000000
+vn 0.366300 0.289500 0.884300
+vn 0.374700 0.202900 0.904600
+vn 0.676800 0.289500 0.676800
+vn 0.692400 0.202900 0.692400
+vn 0.884300 0.289500 0.366300
+vn 0.904600 0.202900 0.374700
+vn 0.957200 0.289500 0.000000
+vn 0.979200 0.202900 0.000000
+vn 0.884300 0.289500 -0.366300
+vn 0.904600 0.202900 -0.374700
+vn 0.676800 0.289500 -0.676800
+vn 0.692400 0.202900 -0.692400
+vn 0.366300 0.289500 -0.884300
+vn 0.374700 0.202900 -0.904600
+g Cylinder_Cylinder_metal
+s 1
+f 90/1/1 60/2/2 61/3/3 92/4/4
+f 67/5/5 5/6/6 3/7/7 125/8/8
+f 125/8/8 3/7/7 1/9/9 123/10/10
+f 123/10/10 1/9/9 10/11/11 121/12/12
+f 92/13/4 61/14/3 62/15/13 94/16/14
+f 121/12/12 10/11/11 12/17/15 119/18/16
+f 119/18/16 12/17/15 14/19/17 117/20/18
+f 96/21/19 64/22/20 63/23/21 127/24/22
+f 117/20/18 14/19/17 16/25/23 115/26/24
+f 115/26/24 16/25/23 18/27/25 113/28/26
+f 94/16/14 62/15/13 64/22/20 96/21/19
+f 113/28/26 18/27/25 20/29/27 111/30/28
+f 127/24/22 63/23/21 49/31/29 68/32/30
+f 111/30/28 20/29/27 22/33/31 109/34/32
+f 109/34/32 22/33/31 24/35/33 107/36/34
+f 107/36/34 24/35/33 26/37/35 105/38/36
+f 105/38/36 26/37/35 28/39/37 103/40/38
+f 72/41/39 51/42/40 52/43/41 74/44/42
+f 103/40/38 28/39/37 30/45/43 97/46/44
+f 97/46/44 30/45/43 32/47/45 98/48/46
+f 101/49/47 34/50/48 5/6/6 67/5/5
+f 4/51/49 2/52/50 9/53/51 11/54/52 13/55/53 15/56/54 17/57/55 19/58/56 21/59/57 23/60/58 25/61/59 27/62/60 29/63/61 31/64/62 33/65/63 6/66/64
+f 98/48/46 32/47/45 34/67/48 101/68/47
+f 88/69/65 59/70/66 60/2/2 90/1/1
+f 1/71/9 3/72/7 5/73/6 34/74/48 32/75/45 30/76/43 28/77/37 26/78/35 24/79/33 22/80/31 20/81/27 18/82/25 16/12/23 14/83/17 12/84/15 10/85/11
+f 86/86/67 58/87/68 59/70/66 88/69/65
+f 84/88/69 57/89/70 58/87/68 86/86/67
+f 82/90/71 56/91/72 57/89/70 84/88/69
+f 80/55/73 55/92/74 56/91/72 82/90/71
+f 78/93/75 54/94/76 55/92/74 80/55/73
+f 76/95/77 53/96/78 54/94/76 78/93/75
+f 74/44/42 52/43/41 53/96/78 76/95/77
+f 70/97/79 50/98/80 51/42/40 72/41/39
+f 68/32/30 49/31/29 50/98/80 70/97/79
+f 4/99/49 68/32/30 70/97/79 2/100/50
+f 2/100/50 70/97/79 72/41/39 9/101/51
+f 11/102/52 74/44/42 76/95/77 13/103/53
+f 13/103/53 76/95/77 78/93/75 15/104/54
+f 15/104/54 78/93/75 80/55/73 17/105/55
+f 17/105/55 80/55/73 82/90/71 19/106/56
+f 19/106/56 82/90/71 84/88/69 21/107/57
+f 21/107/57 84/88/69 86/86/67 23/108/58
+f 23/108/58 86/86/67 88/69/65 25/109/59
+f 25/109/59 88/69/65 90/1/1 27/110/60
+f 51/42/40 104/51/81 106/111/82 52/43/41
+f 63/23/21 95/112/83 100/113/84 49/31/29
+f 62/15/13 126/114/85 128/115/86 64/22/20
+f 9/101/51 72/41/39 74/44/42 11/102/52
+f 64/22/20 128/115/86 95/112/83 63/23/21
+f 61/14/3 124/116/87 126/114/85 62/15/13
+f 60/2/2 122/117/88 124/118/87 61/3/3
+f 59/70/66 120/59/89 122/117/88 60/2/2
+f 6/119/64 127/24/22 68/32/30 4/99/49
+f 58/87/68 118/120/90 120/59/89 59/70/66
+f 31/121/62 94/16/14 96/21/19 33/122/63
+f 57/89/70 116/123/91 118/120/90 58/87/68
+f 56/91/72 114/124/92 116/123/91 57/89/70
+f 33/122/63 96/21/19 127/24/22 6/119/64
+f 55/92/74 112/125/93 114/124/92 56/91/72
+f 54/94/76 110/126/94 112/125/93 55/92/74
+f 29/127/61 92/13/4 94/16/14 31/121/62
+f 53/96/78 108/128/95 110/126/94 54/94/76
+f 52/43/41 106/111/82 108/128/95 53/96/78
+f 50/98/80 102/129/96 104/51/81 51/42/40
+f 49/31/29 100/113/84 102/129/96 50/98/80
+f 27/110/60 90/1/1 92/4/4 29/130/61
+g Cylinder_Cylinder_glass
+f 111/13/97 109/14/98 77/96/99 79/95/100
+f 100/131/101 7/132/102 35/133/103 102/134/104
+f 102/134/104 35/133/103 36/135/105 104/136/106
+f 106/118/107 37/123/108 38/89/109 108/3/110
+f 109/14/98 107/116/111 75/128/112 77/96/99
+f 108/3/110 38/89/109 39/88/113 110/4/114
+f 110/4/114 39/88/113 40/107/115 112/130/116
+f 107/116/111 105/137/117 73/138/118 75/128/112
+f 112/130/116 40/107/115 41/88/119 114/4/120
+f 114/4/120 41/88/119 42/89/121 116/3/122
+f 105/137/117 103/139/123 71/140/124 73/138/118
+f 116/3/122 42/89/121 43/123/125 118/118/126
+f 118/118/126 43/123/125 44/135/127 120/136/128
+f 120/136/128 44/135/127 45/133/129 122/134/130
+f 103/139/123 97/141/131 65/142/132 71/140/124
+f 122/134/130 45/133/129 46/132/133 124/131/134
+f 97/141/131 98/49/135 66/28/136 65/142/132
+f 124/131/134 46/132/133 47/38/137 126/68/138
+f 101/50/139 67/49/140 99/28/141 69/27/142
+f 128/67/143 48/37/144 8/38/145 95/68/146
+f 126/68/138 47/38/137 48/37/144 128/67/143
+f 95/68/146 8/38/145 7/132/102 100/131/101
+f 104/136/106 36/135/105 37/123/108 106/118/107
+f 113/127/147 111/13/97 79/95/100 81/103/148
+f 115/13/149 113/127/147 81/103/148 83/95/150
+f 117/14/151 115/13/149 83/95/150 85/96/152
+f 119/116/153 117/14/151 85/96/152 87/128/154
+f 121/137/155 119/116/153 87/128/154 89/138/156
+f 123/139/157 121/137/155 89/138/156 91/140/158
+f 125/141/159 123/139/157 91/140/158 93/142/160
+f 99/28/141 67/49/140 125/141/159 93/142/160
+f 8/38/145 99/28/141 93/142/160 7/132/102
+f 7/132/102 93/142/160 91/140/158 35/133/103
+f 35/133/103 91/140/158 89/138/156 36/135/105
+f 36/135/105 89/138/156 87/128/154 37/123/108
+f 37/123/108 87/128/154 85/96/152 38/89/109
+f 38/89/109 85/96/152 83/95/150 39/88/113
+f 39/88/113 83/95/150 81/103/148 40/107/115
+f 40/107/115 81/103/148 79/95/100 41/88/119
+f 41/88/119 79/95/100 77/96/99 42/89/121
+f 47/38/137 66/28/136 69/27/142 48/37/144
+f 48/37/144 69/27/142 99/28/141 8/38/145
+f 46/132/133 65/142/132 66/28/136 47/38/137
+f 45/133/129 71/140/124 65/142/132 46/132/133
+f 44/135/127 73/138/118 71/140/124 45/133/129
+f 43/123/125 75/128/112 73/138/118 44/135/127
+f 42/89/121 77/96/99 75/128/112 43/123/125
+f 98/49/135 101/50/139 69/27/142 66/28/136
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_blue.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_blue.png
new file mode 100644
index 0000000..2c08584
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_blue.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_green.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_green.png
new file mode 100644
index 0000000..40f5ac1
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_green.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_orange.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_orange.png
new file mode 100644
index 0000000..98eb4da
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_orange.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_red.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_red.png
new file mode 100644
index 0000000..9a4d706
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_red.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_violet.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_violet.png
new file mode 100644
index 0000000..8b09496
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_violet.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_yellow.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_yellow.png
new file mode 100644
index 0000000..1c1af2c
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_anim_yellow.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_blue_inv.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_blue_inv.png
new file mode 100644
index 0000000..144643f
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_blue_inv.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_green_inv.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_green_inv.png
new file mode 100644
index 0000000..594f82d
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_green_inv.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_off.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_off.png
new file mode 100644
index 0000000..704f9c5
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_off.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_orange_inv.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_orange_inv.png
new file mode 100644
index 0000000..da41b96
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_orange_inv.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_red_inv.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_red_inv.png
new file mode 100644
index 0000000..04296c6
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_red_inv.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_violet_inv.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_violet_inv.png
new file mode 100644
index 0000000..c599731
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_violet_inv.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_lamp_yellow_inv.png b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_yellow_inv.png
new file mode 100644
index 0000000..6c2b21a
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_lamp_yellow_inv.png
Binary files differ
diff --git a/homedecor_modpack/lavalamp/textures/lavalamp_metal.png b/homedecor_modpack/lavalamp/textures/lavalamp_metal.png
new file mode 100644
index 0000000..a34fc84
--- /dev/null
+++ b/homedecor_modpack/lavalamp/textures/lavalamp_metal.png
Binary files differ
diff --git a/homedecor_modpack/lrfurn/README.txt b/homedecor_modpack/lrfurn/README.txt
new file mode 100644
index 0000000..de8ee8d
--- /dev/null
+++ b/homedecor_modpack/lrfurn/README.txt
@@ -0,0 +1,85 @@
+Living Room Furniture (lrfurn) mod for Minetest
+
+
+by thefamilygrog66
+
+Description:
+Coloured Long Sofas (3 blocks wide), Sofas (2 blocks wide), Armchairs, Coffee Tables and End Tables, loosely based on PilzAdam's beds mod. There are 9 colours in all: red, orange, yellow, green, blue, violet, black, grey and white.
+
+When you right-click on a long sofa, sofa or armchair, it transports you onto it, and replenishes your HP. Good if you've just escaped nasty mobs, didn't fare so well in battle, or just had a bad fall. The coffee table - which isn't coloured, just wooden - is pretty much just for decoration. It stands half a block high and nearly 2 blocks long. The end table is similar to the coffee table, though roughly half the length (i.e. only one block) and square.
+
+Recipes:
+
+ Long Sofa
+
+ +---------------+---------------+---------------+
+ | coloured wool | coloured wool | coloured wool |
+ +---------------+---------------+---------------+
+ | wood slab | wood slab | wood slab |
+ +---------------+---------------+---------------+
+ | stick | stick | stick |
+ +---------------+---------------+---------------+
+
+ Sofa
+
+ +---------------+---------------+-------+
+ | coloured wool | coloured wool | |
+ +---------------+---------------+-------+
+ | wood slab | wood slab | |
+ +---------------+---------------+-------+
+ | stick | stick | |
+ +---------------+---------------+-------+
+
+ Armchair
+
+ +---------------+-------+-------+
+ | coloured wool | | |
+ +---------------+-------+-------+
+ | wood slab | | |
+ +---------------+-------+-------+
+ | stick | | |
+ +---------------+-------+-------+
+
+ Coffee Table (only wood texture)
+
+ +-----------+-----------+-----------+
+ | | | |
+ +-----------+-----------+-----------+
+ | wood slab | wood slab | wood slab |
+ +-----------+-----------+-----------+
+ | stick | | stick |
+ +-----------+-----------+-----------+
+
+ End Table (only wood texture)
+
+ +-----------+-----------+-----------+
+ | | | |
+ +-----------+-----------+-----------+
+ | wood slab | wood slab | |
+ +-----------+-----------+-----------+
+ | stick | stick | |
+ +-----------+-----------+-----------+
+
+
+Mod dependencies: default, wool
+
+License:
+Sourcecode: WTFPL (see below)
+Graphics: WTFPL (see below)
+
+See also:
+http://minetest.net/
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/homedecor_modpack/lrfurn/armchairs.lua b/homedecor_modpack/lrfurn/armchairs.lua
new file mode 100644
index 0000000..39999dd
--- /dev/null
+++ b/homedecor_modpack/lrfurn/armchairs.lua
@@ -0,0 +1,59 @@
+
+local armchair_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
+ {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
+ }
+}
+
+for i in ipairs(lrfurn.colors) do
+ local colour = lrfurn.colors[i][1]
+ local hue = lrfurn.colors[i][2]
+
+ minetest.register_node("lrfurn:armchair_"..colour, {
+ description = "Armchair ("..colour..")",
+ drawtype = "mesh",
+ mesh = "lrfurn_armchair.obj",
+ tiles = {
+ "lrfurn_bg_white.png^[colorize:"..hue.."^lrfurn_sofa_overlay.png",
+ "lrfurn_sofa_bottom.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = armchair_cbox,
+ on_rightclick = function(pos, node, clicker)
+ if not clicker:is_player() then
+ return
+ end
+ pos.y = pos.y-0.5
+ clicker:setpos(pos)
+ clicker:set_hp(20)
+ end
+ })
+
+ minetest.register_craft({
+ output = "lrfurn:armchair_"..colour,
+ recipe = {
+ {"wool:"..colour, "", "", },
+ {"stairs:slab_wood", "", "", },
+ {"group:stick", "", "", }
+ }
+ })
+
+ minetest.register_craft({
+ output = "lrfurn:armchair_"..colour,
+ recipe = {
+ {"wool:"..colour, "", "", },
+ {"moreblocks:slab_wood", "", "", },
+ {"group:stick", "", "", }
+ }
+ })
+
+end
+
+if minetest.setting_get("log_mods") then
+ minetest.log("action", "armchairs loaded")
+end
diff --git a/homedecor_modpack/lrfurn/coffeetable.lua b/homedecor_modpack/lrfurn/coffeetable.lua
new file mode 100644
index 0000000..afce15e
--- /dev/null
+++ b/homedecor_modpack/lrfurn/coffeetable.lua
@@ -0,0 +1,124 @@
+minetest.register_node("lrfurn:coffeetable_back", {
+ description = "Coffee Table",
+ drawtype = "nodebox",
+ tiles = {"lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ --legs
+ {-0.375, -0.5, -0.375, -0.3125, -0.0625, -0.3125},
+ {0.3125, -0.5, -0.375, 0.375, -0.0625, -0.3125},
+
+ --tabletop
+ {-0.4375, -0.0625, -0.4375, 0.4375, 0, 0.5},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.5, -0.4375, 0.4375, 0.0, 1.4375},
+ }
+ },
+
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ if minetest.is_protected(pos, placer:get_player_name()) then return true end
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+
+ if lrfurn.check_forward(pos, fdir, false, placer) then
+
+ node.name = "lrfurn:coffeetable_front"
+ if param2 == 0 then
+ pos.z = pos.z+1
+ elseif param2 == 1 then
+ pos.x = pos.x+1
+ elseif param2 == 2 then
+ pos.z = pos.z-1
+ elseif param2 == 3 then
+ pos.x = pos.x-1
+ end
+ minetest.set_node(pos, node)
+ else
+ minetest.chat_send_player(placer:get_player_name(), "No room to place the coffee table!")
+ minetest.set_node(pos, {name = "air"})
+ return true
+ end
+
+ end,
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ if minetest.is_protected(pos, digger:get_player_name()) then return true end
+
+ local param2 = oldnode.param2
+ if param2 == 0 then
+ pos.z = pos.z+1
+ elseif param2 == 1 then
+ pos.x = pos.x+1
+ elseif param2 == 2 then
+ pos.z = pos.z-1
+ elseif param2 == 3 then
+ pos.x = pos.x-1
+ end
+
+ if minetest.is_protected(pos, digger:get_player_name()) then return true end
+
+ if (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "lrfurn:coffeetable_front")
+ and (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).param2 == param2) then
+ minetest.remove_node(pos)
+ end
+ end,
+})
+
+minetest.register_node("lrfurn:coffeetable_front", {
+ drawtype = "nodebox",
+ tiles = {"lrfurn_coffeetable_front.png", "lrfurn_coffeetable_front.png", "lrfurn_coffeetable_front.png", "lrfurn_coffeetable_front.png", "lrfurn_coffeetable_front.png", "lrfurn_coffeetable_front.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ --legs
+ {-0.375, -0.5, 0.3125, -0.3125, -0.0625, 0.375},
+ {0.3125, -0.5, 0.3125, 0.375, -0.0625, 0.375},
+
+ --tabletop
+ {-0.4375, -0.0625, -0.5, 0.4375, 0, 0.4375},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0},
+ }
+ },
+})
+
+minetest.register_alias("lrfurn:coffeetable", "lrfurn:coffeetable_back")
+
+minetest.register_craft({
+ output = "lrfurn:coffeetable",
+ recipe = {
+ {"", "", "", },
+ {"stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood", },
+ {"group:stick", "", "group:stick", }
+ }
+})
+
+minetest.register_craft({
+ output = "lrfurn:coffeetable",
+ recipe = {
+ {"", "", "", },
+ {"moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood", },
+ {"group:stick", "", "group:stick", }
+ }
+})
+
+if minetest.setting_get("log_mods") then
+ minetest.log("action", "coffeetable loaded")
+end
diff --git a/homedecor_modpack/lrfurn/depends.txt b/homedecor_modpack/lrfurn/depends.txt
new file mode 100644
index 0000000..470ec30
--- /dev/null
+++ b/homedecor_modpack/lrfurn/depends.txt
@@ -0,0 +1,2 @@
+default
+wool
diff --git a/homedecor_modpack/lrfurn/endtable.lua b/homedecor_modpack/lrfurn/endtable.lua
new file mode 100644
index 0000000..fa3940a
--- /dev/null
+++ b/homedecor_modpack/lrfurn/endtable.lua
@@ -0,0 +1,50 @@
+minetest.register_node("lrfurn:endtable", {
+ description = "End Table",
+ drawtype = "nodebox",
+ tiles = {"lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = {
+ type = "fixed",
+ fixed = {
+ --legs
+ {-0.375, -0.5, -0.375, -0.3125, -0.0625, -0.3125},
+ {0.3125, -0.5, -0.375, 0.375, -0.0625, -0.3125},
+ {-0.375, -0.5, 0.3125, -0.3125, -0.0625, 0.375},
+ {0.3125, -0.5, 0.3125, 0.375, -0.0625, 0.375},
+
+ --tabletop
+ {-0.4375, -0.0625, -0.4375, 0.4375, 0, 0.4375},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.5, -0.4375, 0.4375, 0.0, 0.4375},
+ }
+ },
+})
+
+minetest.register_craft({
+ output = "lrfurn:endtable",
+ recipe = {
+ {"", "", "", },
+ {"stairs:slab_wood", "stairs:slab_wood", "", },
+ {"group:stick", "group:stick", "", }
+ }
+})
+
+minetest.register_craft({
+ output = "lrfurn:endtable",
+ recipe = {
+ {"", "", "", },
+ {"moreblocks:slab_wood", "moreblocks:slab_wood", "", },
+ {"group:stick", "group:stick", "", }
+ }
+})
+
+if minetest.setting_get("log_mods") then
+ minetest.log("action", "endtable loaded")
+end
diff --git a/homedecor_modpack/lrfurn/init.lua b/homedecor_modpack/lrfurn/init.lua
new file mode 100644
index 0000000..64e2ab9
--- /dev/null
+++ b/homedecor_modpack/lrfurn/init.lua
@@ -0,0 +1,64 @@
+lrfurn = {}
+screwdriver = screwdriver or {}
+
+lrfurn.fdir_to_fwd = {
+ { 0, 1 },
+ { 1, 0 },
+ { 0, -1 },
+ { -1, 0 },
+}
+
+lrfurn.colors = { -- mod changed to use colorize feature of minetest engine (cg72)
+ { "black", "#000000:230" },
+ { "brown", "#251005:225" },
+ { "blue", "#0000d0:225" },
+ { "cyan", "#009fa7:250" },
+ { "dark_grey", "#101010:175" },
+ { "dark_green", "#007000:230" },
+ { "green", "#00d000:250" },
+ { "grey", "#101010:100" },
+ { "magenta", "#e0048b:250" },
+ { "orange", "#ee9000:240" },
+ { "pink", "#ff90b0:250" },
+ { "red", "#800000:240" },
+ { "violet", "#9000d0:250" },
+ { "white", "#000000:000" },
+ { "yellow", "#dde000:240" }
+}
+
+function lrfurn.check_forward(pos, fdir, long, placer)
+ if not fdir or fdir > 3 then fdir = 0 end
+
+ local pos2 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1], y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2] }
+ local pos3 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1] * 2, y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2] * 2 }
+
+ local node2 = minetest.get_node(pos2)
+ if node2 and node2.name ~= "air" then
+ return false
+ elseif minetest.is_protected(pos2, placer:get_player_name()) then
+ if not long then
+ minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where other end goes!")
+ else
+ minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the middle or far end goes!")
+ end
+ return false
+ end
+
+ if long then
+ local node3 = minetest.get_node(pos3)
+ if node3 and node3.name ~= "air" then
+ return false
+ elseif minetest.is_protected(pos3, placer:get_player_name()) then
+ minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the other end goes!")
+ return false
+ end
+ end
+
+ return true
+end
+
+dofile(minetest.get_modpath("lrfurn").."/longsofas.lua")
+dofile(minetest.get_modpath("lrfurn").."/sofas.lua")
+dofile(minetest.get_modpath("lrfurn").."/armchairs.lua")
+dofile(minetest.get_modpath("lrfurn").."/coffeetable.lua")
+dofile(minetest.get_modpath("lrfurn").."/endtable.lua")
diff --git a/homedecor_modpack/lrfurn/longsofas.lua b/homedecor_modpack/lrfurn/longsofas.lua
new file mode 100644
index 0000000..3bcd8ec
--- /dev/null
+++ b/homedecor_modpack/lrfurn/longsofas.lua
@@ -0,0 +1,85 @@
+
+local longsofa_sbox = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 2.5}
+}
+
+local longsofa_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 2.5 },
+ {-0.5, -0.5, 0.5, -0.4, 0.5, 2.5 }
+ }
+}
+
+for i in ipairs(lrfurn.colors) do
+ local colour = lrfurn.colors[i][1]
+ local hue = lrfurn.colors[i][2]
+
+ minetest.register_node("lrfurn:longsofa_"..colour, {
+ description = "Long Sofa ("..colour..")",
+ drawtype = "mesh",
+ mesh = "lrfurn_sofa_long.obj",
+ tiles = {
+ "lrfurn_bg_white.png^[colorize:"..hue.."^lrfurn_sofa_overlay.png",
+ "lrfurn_sofa_bottom.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = longsofa_sbox,
+ node_box = longsofa_cbox,
+ on_rotate = screwdriver.disallow,
+
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ if minetest.is_protected(pos, placer:get_player_name()) then return true end
+
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
+
+ if lrfurn.check_forward(pos, fdir, true, placer) then
+ minetest.set_node(pos, {name = "lrfurn:longsofa_"..colour, param2 = fdir})
+ itemstack:take_item()
+ else
+ minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
+ minetest.set_node(pos, { name = "air" })
+ end
+ return itemstack
+ end,
+ on_rightclick = function(pos, node, clicker)
+ if not clicker:is_player() then
+ return
+ end
+ pos.y = pos.y-0.5
+ clicker:setpos(pos)
+ clicker:set_hp(20)
+ end
+ })
+
+ minetest.register_alias("lrfurn:longsofa_left_"..colour, "air")
+ minetest.register_alias("lrfurn:longsofa_middle_"..colour, "air")
+ minetest.register_alias("lrfurn:longsofa_right_"..colour, "lrfurn:longsofa_"..colour)
+
+ minetest.register_craft({
+ output = "lrfurn:longsofa_"..colour,
+ recipe = {
+ {"wool:"..colour, "wool:"..colour, "wool:"..colour, },
+ {"stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood", },
+ {"group:stick", "group:stick", "group:stick", }
+ }
+ })
+
+ minetest.register_craft({
+ output = "lrfurn:longsofa_"..colour,
+ recipe = {
+ {"wool:"..colour, "wool:"..colour, "wool:"..colour, },
+ {"moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood", },
+ {"group:stick", "group:stick", "group:stick", }
+ }
+ })
+
+end
+
+if minetest.setting_get("log_mods") then
+ minetest.log("action", "long sofas loaded")
+end
diff --git a/homedecor_modpack/lrfurn/models/lrfurn_armchair.obj b/homedecor_modpack/lrfurn/models/lrfurn_armchair.obj
new file mode 100644
index 0000000..78a85c2
--- /dev/null
+++ b/homedecor_modpack/lrfurn/models/lrfurn_armchair.obj
@@ -0,0 +1,575 @@
+# Blender v2.73 (sub 0) OBJ File: 'lrfurn-armchair.blend'
+# www.blender.org
+o Cylinder
+v 0.464844 0.234375 0.312500
+v -0.500000 0.460938 0.464844
+v -0.312500 0.187500 -0.437500
+v 0.500000 0.421875 0.316406
+v 0.500000 0.421875 0.496094
+v 0.312500 -0.078125 0.312500
+v 0.312500 -0.078125 -0.500000
+v 0.496094 0.187500 -0.500000
+v 0.500000 0.187500 0.312500
+v 0.312500 0.187500 0.312500
+v 0.316406 0.187500 -0.500000
+v -0.500000 0.460938 0.347656
+v -0.500000 0.476562 0.406250
+v -0.312500 -0.062500 0.250000
+v -0.347656 0.234375 0.312500
+v -0.437500 0.437500 0.500000
+v -0.437500 0.437500 0.312500
+v -0.312500 -0.078125 0.312500
+v 0.464844 0.218750 -0.500000
+v 0.347656 0.234375 0.312500
+v 0.347656 0.218750 -0.500000
+v -0.312500 -0.062500 -0.437500
+v 0.406250 0.234375 -0.500000
+v 0.406250 0.250000 0.312500
+v 0.500000 0.476562 0.406250
+v -0.437500 0.500000 0.406250
+v 0.500000 0.460938 0.464844
+v -0.437500 0.484375 0.347656
+v 0.500000 0.460938 0.347656
+v -0.437500 0.484375 0.464844
+v 0.000000 -0.039062 0.312500
+v -0.000000 -0.039062 -0.500000
+v -0.312500 -0.078125 -0.500000
+v -0.347656 0.218750 -0.500000
+v 0.250000 -0.046875 -0.500000
+v 0.250000 -0.046875 0.312500
+v -0.000000 0.000000 -0.437500
+v 0.312500 -0.062500 -0.437500
+v 0.250000 -0.015625 -0.437500
+v 0.000000 0.000000 0.250000
+v 0.312500 -0.062500 0.250000
+v 0.250000 -0.015625 0.250000
+v -2.426160 -0.153004 0.228538
+v 0.500000 0.187500 -0.437500
+v 0.312500 0.187500 -0.437500
+v -0.500000 0.421875 0.316406
+v -0.312500 0.187500 0.312500
+v 0.464844 0.234375 -0.437500
+v -0.500000 0.421875 0.496094
+v 0.347656 0.234375 -0.437500
+v -0.316406 0.187500 -0.500000
+v 0.406250 0.250000 -0.437500
+v -0.312500 -0.078125 0.312500
+v 0.437500 0.437500 0.312500
+v 0.437500 0.437500 0.500000
+v 0.000000 0.437500 0.312500
+v 0.437500 0.500000 0.406250
+v 0.437500 0.484375 0.347656
+v 0.437500 0.484375 0.464844
+v -0.500000 -0.187500 0.500000
+v -0.000000 -0.187500 -0.500000
+v 0.500000 -0.187500 0.500000
+v -0.312500 -0.078125 -0.500000
+v -0.500000 -0.187500 -0.500000
+v 0.500000 -0.187500 -0.500000
+v -0.464844 0.234375 -0.437500
+v -0.347656 0.234375 -0.437500
+v 0.500000 -0.375000 0.500000
+v 0.500000 -0.375000 -0.500000
+v 0.437500 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.375000
+v 0.375000 -0.500000 -0.375000
+v 0.375000 -0.500000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.375000
+v 0.375000 -0.375000 -0.375000
+v 0.375000 -0.375000 -0.437500
+v -0.500000 0.187500 -0.437500
+v -0.500000 0.460938 0.464844
+v -0.500000 0.460938 0.347656
+v -0.500000 0.476562 0.406250
+v -0.406250 0.250000 0.312500
+v -0.406250 0.234375 -0.500000
+v -0.464844 0.234375 0.312500
+v -0.496094 0.187500 -0.500000
+v 0.437500 -0.500000 0.375000
+v 0.437500 -0.500000 0.437500
+v 0.375000 -0.500000 0.437500
+v 0.375000 -0.500000 0.375000
+v 0.437500 -0.375000 0.375000
+v 0.437500 -0.375000 0.437500
+v 0.375000 -0.375000 0.437500
+v 0.375000 -0.375000 0.375000
+v -0.500000 0.187500 0.312500
+v -0.316406 0.187500 -0.500000
+v -0.312500 -0.078125 -0.500000
+v -0.500000 0.421875 0.316406
+v -0.500000 0.421875 0.496094
+v -0.464844 0.218750 -0.500000
+v -0.347656 0.234375 0.312500
+v -0.347656 0.218750 -0.500000
+v -0.500000 -0.375000 0.500000
+v -0.500000 -0.375000 -0.500000
+v -0.500000 -0.187500 0.500000
+v -0.500000 -0.187500 -0.500000
+v -0.500000 -0.375000 -0.500000
+v -0.500000 -0.375000 0.500000
+v -0.375000 -0.500000 -0.437500
+v -0.375000 -0.500000 -0.375000
+v -0.437500 -0.500000 -0.375000
+v -0.437500 -0.500000 -0.437500
+v -0.375000 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.375000
+v -0.437500 -0.375000 -0.375000
+v -0.437500 -0.375000 -0.437500
+v -0.375000 -0.500000 0.375000
+v -0.375000 -0.500000 0.437500
+v -0.437500 -0.500000 0.437500
+v -0.437500 -0.500000 0.375000
+v -0.375000 -0.375000 0.375000
+v -0.375000 -0.375000 0.437500
+v -0.437500 -0.375000 0.437500
+v -0.437500 -0.375000 0.375000
+v -0.406250 0.250000 -0.437500
+v -0.500000 -0.187500 0.500000
+v -0.500000 -0.187500 -0.500000
+v -0.347656 0.234375 -0.437500
+v -0.437500 0.437500 0.500000
+v -0.437500 0.437500 0.312500
+v -0.437500 0.500000 0.406250
+v -0.437500 0.484375 0.347656
+v -0.437500 0.484375 0.464844
+v 0.000000 -0.039062 0.312500
+v -0.000000 -0.039062 -0.500000
+v -0.250000 -0.046875 -0.500000
+v -0.250000 -0.046875 0.312500
+v -0.000000 0.000000 -0.437500
+v -0.312500 -0.062500 -0.437500
+v -0.250000 -0.015625 -0.437500
+v 0.000000 0.000000 0.250000
+v -0.250000 -0.015625 0.250000
+v -0.312500 -0.062500 0.250000
+v 0.000000 0.437500 0.500000
+v 0.000000 0.500000 0.406250
+v 0.000000 0.484375 0.347656
+v 0.000000 0.484375 0.464844
+v 0.000000 -0.187500 0.500000
+vt 0.140470 0.234971
+vt 0.140470 0.272035
+vt 0.078047 0.270084
+vt 0.062442 0.262281
+vt 0.015625 0.234971
+vt 0.703125 0.562500
+vt 0.703125 0.546875
+vt 0.718750 0.546875
+vt 0.718750 0.562500
+vt 0.749590 0.202859
+vt 0.749590 0.190887
+vt 0.765553 0.186896
+vt 0.765553 0.196873
+vt 0.305134 0.884532
+vt 0.476969 0.822047
+vt 0.492591 0.884532
+vt 0.249108 0.918025
+vt 0.062649 0.918025
+vt 0.062649 0.906371
+vt 0.249108 0.906371
+vt 0.305134 0.822047
+vt 0.516834 0.906371
+vt 0.532373 0.906371
+vt 0.532373 0.918025
+vt 0.516834 0.914140
+vt 0.031250 0.562500
+vt 0.031250 0.750000
+vt 0.015625 0.750000
+vt 0.015625 0.562500
+vt 0.062500 0.562500
+vt 0.062500 0.750000
+vt 0.046875 0.750000
+vt 0.046875 0.562500
+vt 0.749864 0.503824
+vt 0.749864 0.515528
+vt 0.640625 0.515528
+vt 0.640625 0.503824
+vt 0.727431 0.453105
+vt 0.742061 0.457007
+vt 0.765470 0.499922
+vt 0.015625 0.499922
+vt 0.039033 0.457007
+vt 0.031231 0.503824
+vt 0.062500 0.734375
+vt 0.078125 0.734375
+vt 0.078125 0.750000
+vt 0.171875 0.734375
+vt 0.171875 0.750000
+vt 0.024403 0.453105
+vt 0.492591 0.818141
+vt 0.015625 0.441401
+vt 0.640625 0.234971
+vt 0.703047 0.270084
+vt 0.640625 0.272035
+vt 0.718653 0.262281
+vt 0.289513 0.884532
+vt 0.289513 0.818141
+vt 0.148438 0.765625
+vt 0.148438 0.779712
+vt 0.031250 0.779712
+vt 0.031250 0.765625
+vt 0.015625 0.196873
+vt 0.015625 0.186896
+vt 0.031589 0.190887
+vt 0.031589 0.202859
+vt 0.727572 0.974351
+vt 0.742139 0.978235
+vt 0.742139 0.984062
+vt 0.727572 0.980178
+vt 0.756706 0.974351
+vt 0.756706 0.980178
+vt 0.053909 0.980178
+vt 0.039342 0.984062
+vt 0.039342 0.978236
+vt 0.053909 0.974351
+vt 0.031231 0.515528
+vt 0.015625 0.509676
+vt 0.024774 0.980178
+vt 0.024774 0.974351
+vt 0.609375 0.562500
+vt 0.609375 0.546875
+vt 0.756692 0.453105
+vt 0.078125 0.546875
+vt 0.171875 0.546875
+vt 0.171875 0.562500
+vt 0.078125 0.562500
+vt 0.062500 0.546875
+vt 0.053664 0.453105
+vt 0.765470 0.441401
+vt 0.718653 0.441401
+vt 0.046875 0.546875
+vt 0.031250 0.546875
+vt 0.015625 0.546875
+vt 0.765470 0.509676
+vt 0.264646 0.914140
+vt 0.264646 0.906371
+vt 0.016600 0.328605
+vt 0.024403 0.336408
+vt 0.039033 0.340309
+vt 0.053664 0.336408
+vt 0.061466 0.328605
+vt 0.148438 0.750000
+vt 0.637844 0.202859
+vt 0.637844 0.190887
+vt 0.017005 0.964640
+vt 0.061678 0.964640
+vt 0.765470 0.234971
+vt 0.016034 0.813142
+vt 0.264646 0.813142
+vt 0.062442 0.441401
+vt 0.140470 0.503824
+vt 0.477287 0.976904
+vt 0.305452 0.914419
+vt 0.477287 0.914419
+vt 0.734375 0.562500
+vt 0.734375 0.750000
+vt 0.718750 0.750000
+vt 0.734375 0.546875
+vt 0.492909 0.976904
+vt 0.492909 0.910513
+vt 0.289831 0.910513
+vt 0.289831 0.976904
+vt 0.765553 0.031250
+vt 0.765625 0.546875
+vt 0.765625 0.562500
+vt 0.750000 0.562500
+vt 0.750000 0.546875
+vt 0.719628 0.328605
+vt 0.727431 0.336408
+vt 0.742061 0.340309
+vt 0.756692 0.336408
+vt 0.764494 0.328605
+vt 0.719803 0.964639
+vt 0.718832 0.906371
+vt 0.765625 0.750000
+vt 0.750000 0.750000
+vt 0.718832 0.918025
+vt 0.764475 0.964639
+vt 0.516834 0.813142
+vt 0.765447 0.813142
+vt 0.015625 0.031250
+vt 0.703125 0.734375
+vt 0.718750 0.734375
+vt 0.609375 0.734375
+vt 0.609375 0.750000
+vt 0.703125 0.750000
+vt 0.062442 0.375077
+vt 0.078047 0.382880
+vt 0.703047 0.382880
+vt 0.718653 0.375077
+vt 0.140470 0.384831
+vt 0.640625 0.384831
+vt 0.143334 0.190887
+vt 0.143334 0.202859
+vt 0.734375 0.765625
+vt 0.617188 0.765625
+vt 0.617188 0.750000
+vt 0.734375 0.779712
+vt 0.617188 0.779712
+vt 0.140470 0.515528
+vt 0.143334 0.031250
+vt 0.637844 0.031250
+vt -0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.312500
+vt 0.500000 0.312500
+vt -0.000000 0.312500
+vt 0.937500 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.000000
+vt 0.937500 0.000000
+vt 0.125000 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.000000
+vt 0.125000 0.000000
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.937500
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.062500 0.062500
+vt 0.125000 0.062500
+vt 0.875000 0.937500
+vt 0.875000 0.875000
+vt 0.937500 0.875000
+vt 0.937500 0.937500
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vn -0.000000 0.000000 -1.000000
+vn -0.310300 0.927700 -0.207300
+vn -0.192600 0.560200 -0.805600
+vn -0.505100 0.808100 -0.303000
+vn -0.557500 0.814600 -0.160300
+vn 0.146800 0.831000 0.536500
+vn 0.075700 0.338900 0.937700
+vn 0.689700 0.205200 0.694400
+vn 0.746300 0.537600 0.392500
+vn -0.943400 0.329600 -0.035700
+vn -1.000000 -0.000000 0.000000
+vn -0.586900 0.195600 -0.785700
+vn 0.535500 0.839600 -0.090600
+vn 0.352300 0.517700 -0.779600
+vn 0.981900 0.156900 -0.105900
+vn 0.943000 0.330000 -0.042000
+vn -0.999800 0.004100 -0.017300
+vn -0.701300 0.265500 -0.661600
+vn -0.943000 0.330000 -0.042000
+vn -0.535500 0.839600 -0.090600
+vn -0.386900 0.578400 -0.718100
+vn 0.000000 0.992800 -0.119800
+vn 0.005700 0.640900 -0.767500
+vn -0.344000 0.509500 -0.788700
+vn -0.000000 0.600000 -0.800000
+vn -0.000000 0.828700 -0.559600
+vn -0.000000 0.316200 -0.948700
+vn 0.098200 0.368400 -0.924400
+vn -0.005700 0.640900 -0.767500
+vn -0.030800 -0.005100 -0.999500
+vn -0.817000 -0.001200 -0.576600
+vn 0.687300 0.202400 -0.697500
+vn 0.077600 0.335500 -0.938800
+vn 0.557500 0.814600 0.160300
+vn 0.310300 0.927700 0.207300
+vn 0.297500 0.865300 0.403400
+vn 0.505100 0.808100 0.303000
+vn 0.053500 0.966600 0.250500
+vn 0.040800 0.870800 0.489900
+vn -0.767600 0.000000 -0.641000
+vn -0.024000 0.512200 -0.858500
+vn -0.706800 0.266200 -0.655400
+vn -0.528800 0.004000 -0.848700
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.828700 0.559600
+vn 0.173500 0.984800 0.000000
+vn -0.282800 0.774700 0.565600
+vn -0.210900 0.597700 0.773500
+vn -0.299000 0.813400 0.498900
+vn -0.282800 0.774700 -0.565600
+vn -0.351100 0.936300 0.000000
+vn -0.299000 0.813400 -0.498900
+vn 0.146800 0.831000 -0.536500
+vn 0.779200 0.626800 0.000000
+vn 0.746300 0.537600 -0.392500
+vn -0.053500 0.966600 -0.250500
+vn -0.352300 0.517700 -0.779600
+vn 0.297500 0.865300 -0.403400
+vn 0.040800 0.870800 -0.489900
+vn 0.053500 0.966600 -0.250500
+vn 0.310300 0.927700 -0.207300
+vn 0.505100 0.808100 -0.303000
+vn 0.557500 0.814600 -0.160300
+vn -0.981900 0.156900 -0.105900
+vn 0.586900 0.195600 -0.785700
+vn 0.000000 0.671300 -0.741200
+vn 0.386900 0.578400 -0.718100
+vn -0.210900 0.597700 -0.773500
+vn 0.701300 0.265500 -0.661600
+vn 0.000000 0.316200 0.948700
+vn -0.707100 0.000800 -0.707100
+vn 0.707100 0.000300 0.707100
+vn 0.833200 0.000900 -0.553000
+vn 0.943400 0.329600 -0.035700
+vn 1.000000 0.000000 0.000000
+vn 0.999800 0.004100 -0.017300
+vn 0.781700 0.621700 -0.048700
+vn 0.800000 0.600000 -0.000000
+vn 0.757800 0.644100 -0.104200
+vn 0.933300 0.351600 -0.073100
+vn 0.999500 0.007600 -0.032200
+vn 0.767600 0.000000 -0.641000
+vn 0.114000 0.427600 -0.896800
+vn 0.255800 0.959200 -0.120500
+vn -0.819400 0.003700 0.573200
+vn -0.707100 0.000300 0.707100
+vn -0.027100 0.002700 0.999600
+vn -0.310300 0.927700 0.207300
+vn -0.557500 0.814600 0.160300
+vn -0.053500 0.966600 0.250500
+vn -0.040800 0.870800 0.489900
+vn -0.297500 0.865300 0.403400
+vn -0.505100 0.808100 0.303000
+vn 0.000000 0.600000 0.800000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_upholstery
+s off
+f 61/1/1 134/2/1 35/3/1
+f 7/4/1 61/1/1 35/3/1
+f 7/4/1 65/5/1 61/1/1
+s 1
+f 139/6/2 135/7/3 33/8/4 138/9/5
+f 59/10/6 55/11/7 5/12/8 27/13/9
+f 45/14/10 41/15/11 10/16/12
+f 48/17/13 1/18/14 9/19/15 44/20/16
+f 41/15/11 45/14/10 38/21/17
+f 85/22/18 78/23/19 66/24/20 99/25/21
+f 52/26/22 24/27/23 1/28/14 48/29/13
+f 45/30/10 10/31/12 20/32/24 50/33/20
+f 17/34/25 28/35/26 145/36/26 56/37/27
+f 100/38/28 82/39/29 129/34/30
+f 97/40/31 129/34/30 82/39/29
+f 4/41/32 24/42/23 54/43/33
+f 41/44/34 42/45/35 36/46/36 6/31/37
+f 42/45/35 40/47/38 31/48/39 36/46/36
+f 50/33/20 20/32/24 24/27/23 52/26/22
+f 4/41/32 1/49/14 24/42/23
+f 6/50/40 10/16/12 41/15/11
+f 1/49/14 4/41/32 9/51/15
+f 61/52/1 135/53/3 134/54/41
+f 96/55/1 135/53/3 61/52/1
+f 45/14/10 11/56/42 7/57/43 38/21/17
+f 144/58/44 146/59/45 59/60/6 57/61/46
+f 2/62/47 49/63/48 128/64/48 132/65/49
+f 12/66/50 13/67/51 130/68/51 131/69/52
+f 13/67/51 2/70/47 132/71/49 130/68/51
+f 58/72/53 57/73/46 25/74/54 29/75/55
+f 54/43/33 58/76/53 29/77/55 4/41/32
+f 57/73/46 59/78/6 27/79/9 25/74/54
+f 137/80/56 134/81/41 135/7/3 139/6/2
+f 82/39/29 84/82/57 97/40/31
+f 35/83/58 32/84/59 37/85/60 39/86/61
+f 7/87/62 35/83/58 39/86/61 38/30/63
+f 20/88/24 54/43/33 24/42/23
+f 84/82/57 94/89/64 97/40/31
+f 47/90/65 100/38/28 56/37/27
+f 39/86/61 37/85/60 40/47/38 42/45/35
+f 38/30/63 39/86/61 42/45/35 41/44/34
+f 21/91/21 50/33/20 52/26/22 23/92/66
+f 11/87/42 45/30/10 50/33/20 21/91/21
+f 23/92/66 52/26/22 48/29/13 19/93/67
+f 46/40/68 12/94/50 131/35/52 129/34/68
+f 19/95/67 48/17/13 44/20/16 8/96/69
+f 8/97/69 7/4/43 19/98/67
+f 19/98/67 7/4/43 23/99/66
+f 21/100/21 23/99/66 7/4/43
+f 7/4/43 11/101/42 21/100/21
+f 145/102/26 144/58/44 57/61/46 58/27/53
+f 146/103/45 143/104/70 55/11/7 59/10/6
+f 5/105/8 9/19/15 27/79/9
+f 27/79/9 9/19/15 25/74/54
+f 25/74/54 9/19/15 29/75/55
+f 9/19/15 4/106/32 29/75/55
+f 126/107/71 96/55/1 61/52/1
+f 62/108/72 65/109/73 9/19/15
+f 9/19/15 65/109/73 44/20/16
+f 44/20/16 65/109/73 8/96/69
+f 7/4/43 8/97/69 65/5/73
+f 100/38/28 129/34/30 56/37/27
+f 10/110/12 56/111/27 20/88/24
+f 3/112/74 14/113/75 22/114/76
+f 127/115/77 15/116/78 47/117/65 3/9/74
+f 54/43/33 20/88/24 56/111/27
+f 34/118/79 127/115/77 3/9/74 51/8/80
+f 51/119/80 3/112/74 22/114/76 63/120/81
+f 53/121/82 14/113/75 47/122/65
+f 47/122/65 14/113/75 3/112/74
+f 5/105/8 62/108/72 9/19/15
+f 55/11/7 62/123/72 5/12/8
+f 99/124/21 66/125/20 124/126/22 83/127/66
+f 95/128/1 96/55/1 101/129/83
+f 101/129/83 96/55/1 83/130/66
+f 83/130/66 96/55/1 99/131/21
+f 99/131/21 96/55/1 85/132/18
+f 97/133/31 94/134/64 80/66/11
+f 80/66/11 94/134/64 81/67/11
+f 66/125/20 84/135/57 82/136/29 124/126/22
+f 78/23/19 94/134/64 84/137/57 66/24/20
+f 124/126/22 82/136/29 100/116/28 67/115/84
+f 83/127/66 124/126/22 67/115/84 101/118/83
+f 81/67/11 94/134/64 79/70/11
+f 94/134/64 98/138/85 79/70/11
+f 96/55/1 126/107/71 85/132/18
+f 85/22/18 126/139/71 78/23/19
+f 78/23/19 126/139/71 94/134/64
+f 126/139/71 125/140/86 94/134/64
+f 94/134/64 125/140/86 98/138/85
+f 128/64/87 98/63/85 125/141/86
+f 141/142/88 139/6/2 138/9/5 142/143/89
+f 140/144/90 137/80/56 139/6/2 141/142/88
+f 133/145/91 140/144/90 141/142/88 136/146/92
+f 136/146/92 141/142/88 142/143/89 18/117/93
+f 6/147/40 36/148/1 10/110/12
+f 136/149/1 53/150/82 47/90/65
+f 47/90/65 56/37/27 136/149/1
+f 56/111/27 10/110/12 36/148/1
+f 36/148/1 133/151/1 56/111/27
+f 136/149/1 56/37/27 133/152/1
+f 30/65/45 16/64/94 143/153/70 146/154/45
+f 28/116/26 26/155/44 144/156/44 145/157/26
+f 26/155/44 30/158/45 146/159/45 144/156/44
+f 56/111/27 145/160/26 58/76/53 54/43/33
+f 143/153/70 128/64/87 125/141/86
+f 62/123/72 55/11/7 143/104/70
+f 125/141/86 147/161/95 143/153/70
+f 143/104/70 147/162/95 62/123/72
+g Cylinder_Cylinder_bottom
+s off
+f 69/163/1 103/164/1 64/165/1 61/166/1 65/167/1
+f 68/163/75 69/164/75 65/165/75 62/167/75
+f 68/164/95 62/165/95 60/167/95 102/163/95
+f 74/168/75 75/169/75 71/170/75 70/171/75
+f 75/168/95 76/169/95 72/170/95 71/171/95
+f 76/172/11 77/173/11 73/174/11 72/175/11
+f 77/172/1 74/173/1 70/174/1 73/175/1
+f 70/176/96 71/177/96 72/178/96 73/179/96
+f 69/180/96 68/181/96 102/182/96 103/183/96
+f 90/172/75 91/173/75 87/174/75 86/175/75
+f 91/168/95 92/169/95 88/170/95 87/171/95
+f 92/168/11 93/169/11 89/170/11 88/171/11
+f 93/172/1 90/173/1 86/174/1 89/175/1
+f 86/173/96 87/184/96 88/185/96 89/172/96
+f 106/163/11 107/164/11 104/165/11 105/167/11
+f 112/168/75 113/169/75 109/170/75 108/171/75
+f 113/172/95 114/173/95 110/174/95 109/175/95
+f 114/172/11 115/173/11 111/174/11 110/175/11
+f 115/168/1 112/169/1 108/170/1 111/171/1
+f 108/186/96 109/187/96 110/188/96 111/189/96
+f 120/172/75 121/173/75 117/174/75 116/175/75
+f 121/172/95 122/173/95 118/174/95 117/175/95
+f 122/168/11 123/169/11 119/170/11 118/171/11
+f 123/168/1 120/169/1 116/170/1 119/171/1
+f 116/169/96 117/190/96 118/191/96 119/168/96
diff --git a/homedecor_modpack/lrfurn/models/lrfurn_sofa_long.obj b/homedecor_modpack/lrfurn/models/lrfurn_sofa_long.obj
new file mode 100644
index 0000000..99d0db6
--- /dev/null
+++ b/homedecor_modpack/lrfurn/models/lrfurn_sofa_long.obj
@@ -0,0 +1,715 @@
+# Blender v2.73 (sub 0) OBJ File: 'lrfurn-sofa-long.blend'
+# www.blender.org
+o Cylinder
+v 0.312500 0.234375 -0.464844
+v -0.500000 0.218750 2.347656
+v 0.312500 0.234375 2.347656
+v -0.500000 0.218750 2.464844
+v 0.316406 0.421875 -0.500000
+v 0.496094 0.421875 -0.500000
+v 0.496094 0.421875 2.500000
+v 0.316406 0.421875 2.500000
+v 0.312500 -0.078125 -0.312500
+v -0.500000 -0.078125 -0.312500
+v -0.500000 0.187500 -0.496094
+v 0.312500 0.187500 -0.500000
+v 0.312500 0.187500 -0.312500
+v -0.500000 0.187500 -0.316406
+v -0.500000 -0.078125 2.312500
+v 0.312500 -0.078125 2.312500
+v -0.500000 0.187500 2.316406
+v 0.312500 0.187500 2.312500
+v 0.312500 0.187500 2.500000
+v -0.500000 0.187500 2.496094
+v -0.500000 -0.078125 0.500000
+v 0.500000 0.437500 0.500000
+v 0.312500 0.437500 0.500000
+v 0.312500 -0.078125 0.500000
+v 0.500000 0.437500 1.500000
+v 0.312500 -0.078125 1.500000
+v -0.500000 -0.078125 1.500000
+v 0.312500 0.437500 1.500000
+v 0.312500 0.234375 2.464844
+v -0.500000 0.218750 -0.464844
+v 0.312500 0.234375 -0.347656
+v -0.500000 0.218750 -0.347656
+v -0.500000 0.234375 2.406250
+v 0.312500 0.250000 2.406250
+v -0.500000 0.234375 -0.406250
+v 0.312500 0.250000 -0.406250
+v 0.406250 0.476562 -0.500000
+v 0.406250 0.476562 2.500000
+v 0.406250 0.500000 0.500000
+v 0.406250 0.500000 1.500000
+v 0.464844 0.460938 -0.500000
+v 0.347656 0.460938 2.500000
+v 0.347656 0.484375 0.500000
+v 0.347656 0.484375 1.500000
+v 0.347656 0.460938 -0.500000
+v 0.464844 0.460938 2.500000
+v 0.464844 0.484375 0.500000
+v 0.464844 0.484375 1.500000
+v 0.312500 -0.039062 1.906250
+v -0.500000 -0.039062 1.000000
+v 0.312500 -0.039062 0.093750
+v 0.312500 -0.039062 1.000000
+v -0.500000 -0.039062 0.093750
+v -0.500000 -0.039062 1.906250
+v 0.312500 -0.046875 1.562500
+v -0.500000 -0.046875 0.562500
+v -0.500000 -0.046875 2.250000
+v 0.312500 -0.046875 0.437500
+v -0.500000 -0.046875 0.437500
+v 0.312500 -0.046875 1.437500
+v 0.312500 -0.046875 0.562500
+v -0.500000 -0.046875 -0.250000
+v 0.312500 -0.046875 -0.250000
+v -0.500000 -0.046875 1.437500
+v 0.312500 -0.046875 2.250000
+v -0.500000 -0.046875 1.562500
+v -0.437500 0.000000 0.093750
+v -0.437500 0.000000 1.906250
+v -0.437500 -0.062500 -0.312500
+v -0.437500 -0.062500 2.312500
+v -0.437500 -0.062500 1.500000
+v -0.437500 -0.062500 0.500000
+v -0.437500 0.000000 1.000000
+v -0.437500 -0.015625 1.562500
+v -0.437500 -0.015625 -0.250000
+v -0.437500 -0.015625 1.437500
+v -0.437500 -0.015625 2.250000
+v -0.437500 -0.015625 0.437500
+v -0.437500 -0.015625 0.562500
+v 0.250000 0.000000 0.093750
+v 0.250000 0.000000 1.906250
+v 0.250000 -0.062500 -0.312500
+v 0.250000 -0.062500 1.500000
+v 0.250000 -0.015625 1.562500
+v 0.250000 -0.015625 -0.250000
+v 0.250000 -0.015625 2.250000
+v 0.250000 -0.015625 0.437500
+v 0.250000 -0.062500 2.312500
+v 0.250000 -0.062500 0.500000
+v 0.250000 0.000000 1.000000
+v 0.250000 -0.015625 1.437500
+v 0.250000 -0.015625 0.562500
+v 0.228538 -0.153004 2.426160
+v -0.437500 0.187500 -0.500000
+v -0.437500 0.187500 -0.312500
+v -0.437500 0.187500 2.312500
+v -0.437500 0.187500 2.500000
+v -0.437500 0.234375 -0.464844
+v -0.437500 0.234375 2.347656
+v -0.437500 0.234375 -0.347656
+v -0.437500 0.234375 2.464844
+v -0.437500 0.250000 -0.406250
+v -0.437500 0.250000 2.406250
+v 0.312500 0.437500 -0.437500
+v 0.500000 0.437500 2.437500
+v 0.500000 0.437500 -0.437500
+v 0.312500 0.437500 2.437500
+v 0.406250 0.500000 2.437500
+v 0.406250 0.500000 -0.437500
+v 0.347656 0.484375 -0.437500
+v 0.347656 0.484375 2.437500
+v 0.464844 0.484375 2.437500
+v 0.464844 0.484375 -0.437500
+v 0.500000 -0.187500 0.500000
+v 0.500000 -0.187500 1.500000
+v 0.500000 -0.187500 2.500000
+v 0.500000 -0.187500 -0.500000
+v -0.500000 -0.187500 2.500000
+v -0.500000 -0.187500 1.500000
+v -0.500000 -0.187500 0.500000
+v -0.500000 -0.187500 -0.500000
+v -0.500000 -0.375000 2.500000
+v 0.500000 -0.375000 2.500000
+v 0.500000 -0.375000 -0.500000
+v -0.500000 -0.375000 -0.500000
+v -0.437500 -0.500000 -0.437500
+v -0.375000 -0.500000 -0.437500
+v -0.375000 -0.500000 -0.375000
+v -0.437500 -0.500000 -0.375000
+v -0.437500 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.375000
+v -0.437500 -0.375000 -0.375000
+v -0.437500 -0.500000 2.375000
+v -0.375000 -0.500000 2.375000
+v -0.375000 -0.500000 2.437500
+v -0.437500 -0.500000 2.437500
+v -0.437500 -0.375000 2.375000
+v -0.375000 -0.375000 2.375000
+v -0.375000 -0.375000 2.437500
+v -0.437500 -0.375000 2.437500
+v 0.375000 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.375000
+v 0.375000 -0.500000 -0.375000
+v 0.375000 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.375000
+v 0.375000 -0.375000 -0.375000
+v 0.375000 -0.500000 2.375000
+v 0.437500 -0.500000 2.375000
+v 0.437500 -0.500000 2.437500
+v 0.375000 -0.500000 2.437500
+v 0.375000 -0.375000 2.375000
+v 0.437500 -0.375000 2.375000
+v 0.437500 -0.375000 2.437500
+v 0.375000 -0.375000 2.437500
+v -0.437500 -0.500000 0.968750
+v -0.375000 -0.500000 0.968750
+v -0.375000 -0.500000 1.031250
+v -0.437500 -0.500000 1.031250
+v -0.437500 -0.375000 0.968750
+v -0.375000 -0.375000 0.968750
+v -0.375000 -0.375000 1.031250
+v -0.437500 -0.375000 1.031250
+v 0.375000 -0.500000 0.968750
+v 0.437500 -0.500000 0.968750
+v 0.437500 -0.500000 1.031250
+v 0.375000 -0.500000 1.031250
+v 0.375000 -0.375000 0.968750
+v 0.437500 -0.375000 0.968750
+v 0.437500 -0.375000 1.031250
+v 0.375000 -0.375000 1.031250
+v 0.500000 -0.375000 0.500000
+v -0.500000 -0.375000 0.500000
+v -0.500000 -0.375000 1.500000
+v 0.500000 -0.375000 1.500000
+vt 0.250000 0.383435
+vt 0.265625 0.375706
+vt 0.265625 0.503232
+vt 0.281250 0.734375
+vt 0.281250 0.750000
+vt 0.265625 0.750000
+vt 0.265625 0.734375
+vt 0.390625 0.734375
+vt 0.390625 0.750000
+vt 0.750000 0.201141
+vt 0.750000 0.187500
+vt 0.765625 0.187500
+vt 0.305134 0.884532
+vt 0.476969 0.822047
+vt 0.492591 0.884532
+vt 0.249108 0.918025
+vt 0.062649 0.918025
+vt 0.062649 0.906371
+vt 0.249108 0.906371
+vt 0.305134 0.822047
+vt 0.734375 0.562500
+vt 0.734375 0.750000
+vt 0.718750 0.750000
+vt 0.718750 0.562500
+vt 0.171875 0.734375
+vt 0.250000 0.734375
+vt 0.250000 0.750000
+vt 0.171875 0.750000
+vt 0.609375 0.562500
+vt 0.609375 0.546875
+vt 0.703125 0.546875
+vt 0.703125 0.562500
+vt 0.265625 0.201141
+vt 0.265625 0.187500
+vt 0.515625 0.187500
+vt 0.515625 0.201141
+vt 0.031250 0.201141
+vt 0.031250 0.187500
+vt 0.031250 0.562500
+vt 0.031250 0.750000
+vt 0.015625 0.750000
+vt 0.015625 0.562500
+vt 0.718750 0.546875
+vt 0.515625 0.734375
+vt 0.515625 0.750000
+vt 0.500000 0.750000
+vt 0.500000 0.734375
+vt 0.750000 0.562500
+vt 0.750000 0.750000
+vt 0.062500 0.562500
+vt 0.062500 0.750000
+vt 0.046875 0.750000
+vt 0.046875 0.562500
+vt 0.265625 0.514825
+vt 0.031250 0.514825
+vt 0.031250 0.503232
+vt 0.053711 0.452995
+vt 0.062500 0.441401
+vt 0.015625 0.499368
+vt 0.532373 0.906371
+vt 0.718832 0.906371
+vt 0.718832 0.918025
+vt 0.532373 0.918025
+vt 0.062500 0.734375
+vt 0.078125 0.734375
+vt 0.078125 0.750000
+vt 0.515625 0.562500
+vt 0.515625 0.546875
+vt 0.531250 0.546875
+vt 0.531250 0.562500
+vt 0.742188 0.456859
+vt 0.765625 0.499368
+vt 0.727539 0.452995
+vt 0.765625 0.441401
+vt 0.756836 0.452995
+vt 0.515625 0.503232
+vt 0.718750 0.441401
+vt 0.765625 0.562500
+vt 0.765625 0.750000
+vt 0.015625 0.441401
+vt 0.024414 0.452995
+vt 0.492591 0.818141
+vt 0.039062 0.456859
+vt 0.289513 0.884532
+vt 0.289513 0.818141
+vt 0.727572 0.974351
+vt 0.742139 0.978235
+vt 0.719803 0.964639
+vt 0.765625 0.509029
+vt 0.750000 0.514825
+vt 0.750000 0.503232
+vt 0.756706 0.974351
+vt 0.756706 0.980178
+vt 0.742139 0.984062
+vt 0.265625 0.765625
+vt 0.265625 0.779712
+vt 0.031250 0.779712
+vt 0.031250 0.765625
+vt 0.477287 0.976904
+vt 0.305452 0.914419
+vt 0.477287 0.914419
+vt 0.289831 0.976904
+vt 0.289831 0.910513
+vt 0.492909 0.976904
+vt 0.492909 0.910513
+vt 0.756836 0.337900
+vt 0.718750 0.264013
+vt 0.764648 0.330122
+vt 0.742187 0.341789
+vt 0.727539 0.337900
+vt 0.719727 0.330122
+vt 0.750000 0.765625
+vt 0.515625 0.765625
+vt 0.053909 0.980178
+vt 0.039342 0.984062
+vt 0.039342 0.978236
+vt 0.053909 0.974351
+vt 0.015625 0.509029
+vt 0.515625 0.514825
+vt 0.750000 0.779712
+vt 0.515625 0.779712
+vt 0.024774 0.980178
+vt 0.024774 0.974351
+vt 0.164062 0.385367
+vt 0.078125 0.383435
+vt 0.515625 0.375706
+vt 0.531250 0.383435
+vt 0.617188 0.385367
+vt 0.703125 0.383435
+vt 0.500000 0.383435
+vt 0.390625 0.385367
+vt 0.281250 0.383435
+vt 0.531250 0.734375
+vt 0.609375 0.734375
+vt 0.078125 0.546875
+vt 0.171875 0.546875
+vt 0.171875 0.562500
+vt 0.078125 0.562500
+vt 0.500000 0.546875
+vt 0.500000 0.562500
+vt 0.390625 0.562500
+vt 0.390625 0.546875
+vt 0.062500 0.546875
+vt 0.703125 0.734375
+vt 0.718750 0.734375
+vt 0.250000 0.546875
+vt 0.265625 0.546875
+vt 0.265625 0.562500
+vt 0.250000 0.562500
+vt 0.281250 0.562500
+vt 0.281250 0.546875
+vt 0.062500 0.375706
+vt 0.718750 0.375706
+vt 0.609375 0.750000
+vt 0.703125 0.750000
+vt 0.531250 0.750000
+vt 0.765625 0.546875
+vt 0.750000 0.546875
+vt 0.046875 0.546875
+vt 0.031250 0.546875
+vt 0.516834 0.906371
+vt 0.516834 0.914140
+vt 0.734375 0.546875
+vt 0.015625 0.546875
+vt 0.264646 0.914140
+vt 0.264646 0.906371
+vt 0.016602 0.330122
+vt 0.062500 0.264013
+vt 0.024414 0.337900
+vt 0.039062 0.341789
+vt 0.053711 0.337900
+vt 0.061523 0.330122
+vt 0.727572 0.980178
+vt 0.015625 0.187500
+vt 0.764475 0.964639
+vt 0.017005 0.964640
+vt 0.061678 0.964640
+vt 0.265625 0.031250
+vt 0.015625 0.031250
+vt 0.515625 0.031250
+vt 0.016034 0.813142
+vt 0.264646 0.813142
+vt 0.015625 0.236792
+vt 0.078125 0.271791
+vt 0.265625 0.236792
+vt 0.164062 0.273735
+vt 0.250000 0.271791
+vt 0.265625 0.264013
+vt 0.281250 0.271791
+vt 0.390625 0.273735
+vt 0.515625 0.236792
+vt 0.500000 0.271791
+vt 0.515625 0.264013
+vt 0.531250 0.271791
+vt 0.617187 0.273735
+vt 0.703125 0.271791
+vt 0.765625 0.236792
+vt 0.516834 0.813142
+vt 0.765447 0.813142
+vt 0.765625 0.031250
+vt -0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.312500
+vt -0.000000 0.312500
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.000000
+vt 0.937500 0.000000
+vt 0.125000 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.000000
+vt 0.125000 0.000000
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.937500
+vt 0.875000 0.937500
+vt 0.875000 0.875000
+vt 0.937500 0.875000
+vt 0.937500 0.937500
+vt 0.062500 0.062500
+vt 0.125000 0.062500
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vt 0.531250 0.125000
+vt 0.468750 0.125000
+vt 0.468750 0.000000
+vt 0.531250 0.000000
+vt 0.468750 0.937500
+vt 0.468750 0.875000
+vt 0.531250 0.875000
+vt 0.531250 0.937500
+vt 0.468750 0.062500
+vt 0.531250 0.062500
+vn -1.000000 0.000000 0.000000
+vn -0.948700 0.316200 0.000000
+vn 0.207400 0.931200 -0.299600
+vn 0.404600 0.867500 -0.289300
+vn 0.351100 0.936300 0.000000
+vn 0.193100 0.981200 0.000000
+vn 0.251900 0.967700 0.000000
+vn 0.490300 0.871600 -0.000000
+vn 0.536500 0.831000 -0.146800
+vn 0.937700 0.338900 -0.075700
+vn 0.694400 0.205200 -0.689700
+vn 0.392500 0.537600 -0.746300
+vn -0.035700 0.329600 0.943400
+vn 0.000000 -0.000000 1.000000
+vn -0.785700 0.195600 0.586900
+vn -0.090600 0.839600 -0.535500
+vn -0.779600 0.517700 -0.352300
+vn -0.105900 0.156900 -0.981900
+vn -0.042000 0.330000 -0.943000
+vn -0.017300 0.004100 0.999800
+vn -0.788400 0.511400 -0.341800
+vn -0.785700 0.195600 -0.586900
+vn -0.035700 0.329600 -0.943400
+vn 0.251500 0.967800 0.000000
+vn 0.207400 0.930000 0.303500
+vn 0.404200 0.866700 0.292300
+vn -0.251500 0.967800 0.000000
+vn -0.860000 0.510300 0.000000
+vn -0.805300 0.561700 0.189400
+vn -0.207400 0.930000 0.303500
+vn 0.559600 0.828700 0.000000
+vn 0.948700 0.316200 0.000000
+vn 0.536500 0.831000 0.146800
+vn 0.937700 0.338900 0.075700
+vn -0.119800 0.992800 0.000000
+vn -0.760700 0.649000 0.002000
+vn -0.973400 0.205400 -0.101100
+vn -0.160300 0.814600 0.557500
+vn 0.404600 0.867500 0.289300
+vn 0.207400 0.931200 0.299600
+vn -0.760700 0.649000 -0.002000
+vn -0.788400 0.511400 0.341800
+vn -0.090600 0.839600 0.535500
+vn -0.559600 0.828700 0.000000
+vn -0.536500 0.831000 -0.146800
+vn -0.940200 0.331200 -0.079300
+vn -0.699900 0.200500 -0.685500
+vn -0.042000 0.330000 0.943000
+vn -0.105900 0.156900 0.981900
+vn -0.779600 0.517700 0.352300
+vn 0.160300 0.814600 -0.557500
+vn 0.207400 0.930000 -0.303500
+vn 0.404200 0.866700 -0.292300
+vn 0.303000 0.808100 -0.505100
+vn -0.193100 0.981200 0.000000
+vn -0.902600 0.430500 0.000000
+vn -0.805300 0.561700 -0.189400
+vn -0.207400 0.930000 -0.303500
+vn -0.699900 0.200500 0.685500
+vn -0.641000 0.000000 0.767600
+vn -0.655400 0.266200 0.706800
+vn -0.973400 0.205400 0.101100
+vn -0.392500 0.537600 0.746300
+vn 0.000000 0.626800 0.779200
+vn -0.536500 0.831000 0.146800
+vn -0.940200 0.331200 0.079300
+vn 0.392500 0.537600 0.746300
+vn 0.000000 0.984800 0.173500
+vn 0.000000 1.000000 0.000000
+vn 0.000000 0.984800 -0.173500
+vn 0.000000 0.000000 -1.000000
+vn -0.017300 0.004100 -0.999800
+vn -0.641000 0.000000 -0.767600
+vn -0.655400 0.266200 -0.706800
+vn -0.718100 0.578400 0.386900
+vn -0.661600 0.265500 0.701300
+vn -0.741200 0.671300 0.000000
+vn -0.718100 0.578400 -0.386900
+vn 0.000000 0.626800 -0.779200
+vn -0.392500 0.537600 -0.746300
+vn -0.805200 0.562500 0.187600
+vn -0.207400 0.931200 0.299600
+vn -0.251900 0.967700 0.000000
+vn -0.860700 0.509200 0.000000
+vn -0.160300 0.814600 -0.557500
+vn 0.160300 0.814600 0.557500
+vn -0.207400 0.931200 -0.299600
+vn -0.805200 0.562500 -0.187600
+vn 0.303000 0.808100 0.505100
+vn -0.661600 0.265500 -0.701300
+vn 0.694400 0.205200 0.689700
+vn 1.000000 0.000000 -0.000000
+vn 0.707100 0.000300 0.707100
+vn 0.707100 0.000300 -0.707100
+vn -0.707100 0.000800 -0.707100
+vn -0.707100 0.000800 0.707100
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_upholstery
+s 1
+f 58/1/1 24/2/1 23/3/2
+f 92/4/3 61/5/4 24/6/5 89/7/6
+f 90/8/7 52/9/8 61/5/4 92/4/3
+f 113/10/9 106/11/10 6/12/11 41/12/12
+f 95/13/13 82/14/14 13/15/15
+f 98/16/16 1/17/17 12/18/18 94/19/19
+f 82/14/14 95/13/13 69/20/20
+f 99/21/16 3/22/21 18/23/22 96/24/23
+f 80/25/24 87/26/25 58/27/26 51/28/8
+f 87/26/25 89/7/6 24/6/5 58/27/26
+f 68/29/27 54/30/28 57/31/29 77/32/30
+f 48/33/31 25/34/32 22/35/32 47/36/31
+f 112/37/33 105/38/34 25/34/32 48/33/31
+f 102/39/35 36/40/36 1/41/17 98/42/16
+f 77/32/30 57/31/29 15/43/37 70/24/38
+f 83/44/6 26/45/5 60/46/39 91/47/40
+f 103/48/35 34/49/41 3/22/21 99/21/16
+f 95/50/13 13/51/15 31/52/42 100/53/43
+f 23/3/2 43/54/44 110/55/45 104/56/46
+f 31/57/42 23/3/2 104/56/46
+f 13/58/15 23/3/2 31/57/42
+f 5/59/47 31/57/42 104/56/46
+f 97/60/48 19/61/49 29/62/50 101/63/43
+f 82/64/51 85/65/52 63/66/53 9/51/54
+f 71/67/55 27/68/56 66/69/57 74/70/58
+f 34/71/41 8/72/59 3/73/21
+f 91/47/40 60/46/39 52/9/8 90/8/7
+f 85/65/52 80/25/24 51/28/8 63/66/53
+f 100/53/43 31/52/42 36/40/36 102/39/35
+f 19/74/49 8/72/59 29/75/50
+f 74/70/58 66/69/57 54/30/28 68/29/27
+f 3/73/21 28/76/2 18/77/22
+f 101/78/43 29/79/50 34/49/41 103/48/35
+f 12/80/18 1/81/17 5/59/47
+f 9/82/60 13/15/15 82/14/14
+f 36/83/36 5/59/47 1/81/17
+f 5/59/47 36/83/36 31/57/42
+f 8/72/59 34/71/41 29/75/50
+f 95/13/13 14/84/61 10/85/62 69/20/20
+f 42/86/63 19/61/49 38/87/64
+f 8/88/59 19/61/49 42/86/63
+f 8/72/59 42/89/63 111/90/65 107/91/66
+f 38/87/64 46/92/67 112/93/33 108/94/68
+f 39/95/69 47/96/31 113/97/9 109/98/70
+f 96/99/23 88/100/71 70/101/72
+f 18/102/22 88/100/71 96/99/23
+f 16/103/73 88/100/71 18/102/22
+f 17/104/74 96/99/23 70/101/72 15/105/37
+f 4/106/75 15/107/37 20/108/76
+f 33/109/77 15/107/37 4/106/75
+f 2/110/78 15/107/37 33/109/77
+f 17/111/74 15/107/37 2/110/78
+f 111/49/65 108/112/68 40/113/69 44/45/44
+f 44/45/44 40/113/69 39/95/69 43/6/44
+f 110/114/45 109/115/70 37/116/79 45/117/80
+f 104/56/46 110/55/45 45/118/80 5/59/47
+f 28/76/2 44/119/44 43/54/44 23/3/2
+f 107/91/66 111/90/65 44/119/44 28/76/2
+f 108/112/68 112/120/33 48/121/31 40/113/69
+f 40/113/69 48/121/31 47/96/31 39/95/69
+f 109/115/70 113/122/9 41/123/12 37/116/79
+f 58/1/1 23/3/2 51/124/1
+f 51/124/1 23/3/2 63/125/1
+f 26/126/1 55/127/1 28/76/2
+f 55/127/1 49/128/1 28/76/2
+f 49/128/1 65/129/1 28/76/2
+f 26/126/1 28/76/2 60/130/1
+f 60/130/1 28/76/2 52/131/1
+f 61/132/1 52/131/1 23/3/2
+f 24/2/1 61/132/1 23/3/2
+f 28/76/2 23/3/2 52/131/1
+f 84/133/52 74/70/58 68/29/27 81/134/24
+f 62/135/57 53/136/28 67/137/27 75/138/58
+f 64/139/81 76/140/82 73/141/83 50/142/84
+f 83/44/6 71/67/55 74/70/58 84/133/52
+f 10/143/62 62/135/57 75/138/58 69/50/85
+f 27/68/56 71/67/55 76/140/82 64/139/81
+f 86/144/25 77/32/30 70/24/38 88/145/86
+f 81/134/24 68/29/27 77/32/30 86/144/25
+f 59/146/29 21/147/56 72/148/55 78/149/30
+f 53/136/28 59/146/29 78/149/30 67/137/27
+f 50/142/84 73/141/83 79/150/87 56/151/88
+f 56/151/88 79/150/87 72/148/55 21/147/56
+f 9/152/60 63/125/1 13/58/15
+f 23/3/2 13/58/15 63/125/1
+f 16/153/73 18/77/22 65/129/1
+f 28/76/2 65/129/1 18/77/22
+f 49/154/8 81/134/24 86/144/25 65/155/26
+f 65/155/26 86/144/25 88/145/86 16/23/89
+f 26/45/5 83/44/6 84/133/52 55/156/53
+f 55/156/53 84/133/52 81/134/24 49/154/8
+f 75/138/58 67/137/27 80/25/24 85/65/52
+f 76/140/82 91/47/40 90/8/7 73/141/83
+f 69/50/85 75/138/58 85/65/52 82/64/51
+f 71/67/55 83/44/6 91/47/40 76/140/82
+f 78/149/30 72/148/55 89/7/6 87/26/25
+f 67/137/27 78/149/30 87/26/25 80/25/24
+f 73/141/83 90/8/7 92/4/3 79/150/87
+f 79/150/87 92/4/3 89/7/6 72/148/55
+f 4/157/75 101/78/43 103/48/35 33/158/77
+f 32/159/75 100/53/43 102/39/35 35/160/77
+f 20/161/76 97/60/48 101/63/43 4/162/75
+f 14/143/61 95/50/13 100/53/43 32/159/75
+f 33/158/77 103/48/35 99/21/16 2/163/78
+f 35/160/77 102/39/35 98/42/16 30/164/78
+f 2/163/78 99/21/16 96/24/23 17/43/74
+f 30/165/78 98/16/16 94/19/19 11/166/90
+f 11/167/90 10/168/62 30/169/78
+f 30/169/78 10/168/62 35/170/77
+f 32/171/75 35/170/77 10/168/62
+f 10/168/62 14/172/61 32/171/75
+f 43/6/44 39/95/69 109/98/70 110/40/45
+f 42/86/63 38/87/64 108/94/68 111/173/65
+f 46/174/67 7/174/91 105/38/34 112/37/33
+f 47/36/31 22/35/32 106/11/10 113/10/9
+f 38/87/64 19/61/49 46/92/67
+f 19/61/49 7/175/91 46/92/67
+f 6/176/11 12/18/18 41/123/12
+f 41/123/12 12/18/18 37/116/79
+f 37/116/79 12/18/18 45/117/80
+f 12/18/18 5/177/47 45/117/80
+f 3/73/21 8/72/59 107/91/66
+f 107/91/66 28/76/2 3/73/21
+f 115/178/92 25/34/32 116/179/93
+f 25/34/32 105/38/34 116/179/93
+f 7/174/91 116/179/93 105/38/34
+f 25/34/32 115/178/92 114/180/92 22/35/32
+f 117/181/94 121/182/95 12/18/18
+f 12/18/18 121/182/95 94/19/19
+f 94/19/19 121/182/95 11/166/90
+f 10/168/62 11/167/90 121/183/95
+f 62/184/57 10/168/62 120/185/1
+f 62/184/57 120/185/1 53/186/28
+f 53/186/28 120/185/1 59/187/29
+f 59/187/29 120/185/1 21/188/56
+f 121/183/95 120/185/1 10/168/62
+f 21/188/56 120/185/1 56/189/88
+f 56/189/88 120/185/1 50/190/84
+f 120/185/1 119/191/1 50/190/84
+f 50/190/84 119/191/1 64/192/81
+f 64/192/81 119/191/1 27/193/56
+f 27/193/56 119/191/1 66/194/57
+f 66/194/57 119/191/1 54/195/28
+f 54/195/28 119/191/1 57/196/29
+f 57/196/29 119/191/1 15/107/37
+f 119/191/1 118/197/96 15/107/37
+f 15/107/37 118/197/96 20/108/76
+f 20/161/76 118/198/96 97/60/48
+f 97/60/48 118/198/96 19/61/49
+f 118/198/96 116/199/93 19/61/49
+f 19/61/49 116/199/93 7/175/91
+f 6/176/11 117/181/94 12/18/18
+f 106/11/10 117/200/94 6/12/11
+f 22/35/32 117/200/94 106/11/10
+f 22/35/32 114/180/92 117/200/94
+g Cylinder_Cylinder_bottom
+s off
+f 125/201/1 175/202/1 120/203/1 121/204/1
+f 175/201/1 176/202/1 119/203/1 120/204/1
+f 176/201/1 122/202/1 118/203/1 119/204/1
+f 122/201/14 123/202/14 116/203/14 118/204/14
+f 124/201/71 125/202/71 121/203/71 117/204/71
+f 124/202/92 117/203/92 114/204/92 174/201/92
+f 177/201/92 174/202/92 114/203/92 115/204/92
+f 123/201/92 177/202/92 115/203/92 116/204/92
+f 176/205/97 177/206/97 123/207/97 122/208/97
+f 130/209/71 131/210/71 127/211/71 126/212/71
+f 131/209/92 132/210/92 128/211/92 127/212/92
+f 132/213/14 133/214/14 129/215/14 128/216/14
+f 133/213/1 130/214/1 126/215/1 129/216/1
+f 126/217/97 127/218/97 128/219/97 129/220/97
+f 138/209/71 139/210/71 135/211/71 134/212/71
+f 139/213/92 140/214/92 136/215/92 135/216/92
+f 140/213/14 141/214/14 137/215/14 136/216/14
+f 141/209/1 138/210/1 134/211/1 137/212/1
+f 134/221/97 135/222/97 136/223/97 137/224/97
+f 125/205/97 124/206/97 174/207/97 175/208/97
+f 146/213/71 147/214/71 143/215/71 142/216/71
+f 147/209/92 148/210/92 144/211/92 143/212/92
+f 148/209/14 149/210/14 145/211/14 144/212/14
+f 149/213/1 146/214/1 142/215/1 145/216/1
+f 142/214/97 143/225/97 144/226/97 145/213/97
+f 154/213/71 155/214/71 151/215/71 150/216/71
+f 155/213/92 156/214/92 152/215/92 151/216/92
+f 156/209/14 157/210/14 153/211/14 152/212/14
+f 157/209/1 154/210/1 150/211/1 153/212/1
+f 150/210/97 151/227/97 152/228/97 153/209/97
+f 162/209/71 163/210/71 159/211/71 158/212/71
+f 163/229/92 164/230/92 160/231/92 159/232/92
+f 164/213/14 165/214/14 161/215/14 160/216/14
+f 165/229/1 162/230/1 158/231/1 161/232/1
+f 158/233/97 159/234/97 160/235/97 161/236/97
+f 170/213/71 171/214/71 167/215/71 166/216/71
+f 171/229/92 172/230/92 168/231/92 167/232/92
+f 172/209/14 173/210/14 169/211/14 168/212/14
+f 173/229/1 170/230/1 166/231/1 169/232/1
+f 166/230/97 167/237/97 168/238/97 169/229/97
+f 175/205/97 174/206/97 177/207/97 176/208/97
diff --git a/homedecor_modpack/lrfurn/models/lrfurn_sofa_short.obj b/homedecor_modpack/lrfurn/models/lrfurn_sofa_short.obj
new file mode 100644
index 0000000..a11e01b
--- /dev/null
+++ b/homedecor_modpack/lrfurn/models/lrfurn_sofa_short.obj
@@ -0,0 +1,595 @@
+# Blender v2.73 (sub 0) OBJ File: 'lrfurn-sofa-short.blend'
+# www.blender.org
+o Cylinder
+v 0.312500 0.234375 -0.464844
+v -0.500000 0.218750 1.347656
+v 0.312500 0.234375 1.347656
+v -0.500000 0.218750 1.464844
+v 0.316406 0.421875 -0.500000
+v 0.496094 0.421875 -0.500000
+v 0.496094 0.421875 1.500000
+v 0.316406 0.421875 1.500000
+v 0.312500 -0.078125 -0.312500
+v -0.500000 -0.078125 -0.312500
+v -0.500000 0.187500 -0.496094
+v 0.312500 0.187500 -0.500000
+v 0.312500 0.187500 -0.312500
+v -0.500000 0.187500 -0.316406
+v -0.500000 -0.078125 1.312500
+v 0.312500 -0.078125 1.312500
+v -0.500000 0.187500 1.316406
+v 0.312500 0.187500 1.312500
+v 0.312500 0.187500 1.500000
+v -0.500000 0.187500 1.496094
+v -0.500000 -0.078125 0.500000
+v 0.500000 0.437500 0.500000
+v 0.312500 0.437500 0.500000
+v 0.312500 -0.078125 0.500000
+v 0.312500 0.234375 1.464844
+v -0.500000 0.218750 -0.464844
+v 0.312500 0.234375 -0.347656
+v -0.500000 0.218750 -0.347656
+v -0.500000 0.234375 1.406250
+v 0.312500 0.250000 1.406250
+v -0.500000 0.234375 -0.406250
+v 0.312500 0.250000 -0.406250
+v 0.406250 0.476562 -0.500000
+v 0.406250 0.476562 1.500000
+v 0.406250 0.500000 0.500000
+v 0.464844 0.460938 -0.500000
+v 0.347656 0.460938 1.500000
+v 0.347656 0.484375 0.500000
+v 0.347656 0.460938 -0.500000
+v 0.464844 0.460938 1.500000
+v 0.464844 0.484375 0.500000
+v 0.312500 -0.039062 0.906250
+v 0.312500 -0.039062 0.093750
+v -0.500000 -0.039062 0.093750
+v -0.500000 -0.039062 0.906250
+v 0.312500 -0.046875 0.562500
+v -0.500000 -0.046875 1.250000
+v 0.312500 -0.046875 0.437500
+v -0.500000 -0.046875 0.437500
+v -0.500000 -0.046875 -0.250000
+v 0.312500 -0.046875 -0.250000
+v 0.312500 -0.046875 1.250000
+v -0.500000 -0.046875 0.562500
+v -0.437500 0.000000 0.093750
+v -0.437500 0.000000 0.906250
+v -0.437500 -0.062500 -0.312500
+v -0.437500 -0.062500 1.312500
+v -0.437500 -0.062500 0.500000
+v -0.437500 -0.015625 0.562500
+v -0.437500 -0.015625 -0.250000
+v -0.437500 -0.015625 1.250000
+v -0.437500 -0.015625 0.437500
+v 0.250000 0.000000 0.093750
+v 0.250000 0.000000 0.906250
+v 0.250000 -0.062500 -0.312500
+v 0.250000 -0.015625 0.562500
+v 0.250000 -0.015625 -0.250000
+v 0.250000 -0.015625 1.250000
+v 0.250000 -0.015625 0.437500
+v 0.250000 -0.062500 1.312500
+v 0.250000 -0.062500 0.500000
+v 0.228538 -0.153004 2.426160
+v -0.437500 0.187500 -0.500000
+v -0.437500 0.187500 -0.312500
+v -0.437500 0.187500 1.312500
+v -0.437500 0.187500 1.500000
+v -0.437500 0.234375 -0.464844
+v -0.437500 0.234375 1.347656
+v -0.437500 0.234375 -0.347656
+v -0.437500 0.234375 1.464844
+v -0.437500 0.250000 -0.406250
+v -0.437500 0.250000 1.406250
+v 0.312500 0.437500 -0.437500
+v 0.500000 0.437500 1.437500
+v 0.500000 0.437500 -0.437500
+v 0.312500 0.437500 1.437500
+v 0.406250 0.500000 1.437500
+v 0.406250 0.500000 -0.437500
+v 0.347656 0.484375 -0.437500
+v 0.347656 0.484375 1.437500
+v 0.464844 0.484375 1.437500
+v 0.464844 0.484375 -0.437500
+v 0.500000 -0.187500 0.500000
+v 0.500000 -0.187500 1.500000
+v 0.500000 -0.187500 -0.500000
+v -0.500000 -0.187500 1.500000
+v -0.500000 -0.187500 0.500000
+v -0.500000 -0.187500 -0.500000
+v -0.500000 -0.375000 1.500000
+v 0.500000 -0.375000 1.500000
+v 0.500000 -0.375000 -0.500000
+v -0.500000 -0.375000 -0.500000
+v -0.437500 -0.500000 -0.437500
+v -0.375000 -0.500000 -0.437500
+v -0.375000 -0.500000 -0.375000
+v -0.437500 -0.500000 -0.375000
+v -0.437500 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.437500
+v -0.375000 -0.375000 -0.375000
+v -0.437500 -0.375000 -0.375000
+v -0.437500 -0.500000 1.375000
+v -0.375000 -0.500000 1.375000
+v -0.375000 -0.500000 1.437500
+v -0.437500 -0.500000 1.437500
+v -0.437500 -0.375000 1.375000
+v -0.375000 -0.375000 1.375000
+v -0.375000 -0.375000 1.437500
+v -0.437500 -0.375000 1.437500
+v 0.375000 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.437500
+v 0.437500 -0.500000 -0.375000
+v 0.375000 -0.500000 -0.375000
+v 0.375000 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.375000
+v 0.375000 -0.375000 -0.375000
+v 0.375000 -0.500000 1.375000
+v 0.437500 -0.500000 1.375000
+v 0.437500 -0.500000 1.437500
+v 0.375000 -0.500000 1.437500
+v 0.375000 -0.375000 1.375000
+v 0.437500 -0.375000 1.375000
+v 0.437500 -0.375000 1.437500
+v 0.375000 -0.375000 1.437500
+v 0.500000 -0.375000 0.500000
+v -0.500000 -0.375000 0.500000
+vt 0.250000 0.383435
+vt 0.265625 0.375706
+vt 0.265625 0.503232
+vt 0.750000 0.201141
+vt 0.750000 0.187500
+vt 0.765625 0.187500
+vt 0.305134 0.884532
+vt 0.476969 0.822047
+vt 0.492591 0.884532
+vt 0.249108 0.918025
+vt 0.062649 0.918025
+vt 0.062649 0.906371
+vt 0.249108 0.906371
+vt 0.305134 0.822047
+vt 0.734375 0.562500
+vt 0.734375 0.750000
+vt 0.718750 0.750000
+vt 0.718750 0.562500
+vt 0.171875 0.734375
+vt 0.250000 0.734375
+vt 0.250000 0.750000
+vt 0.171875 0.750000
+vt 0.265625 0.734375
+vt 0.265625 0.750000
+vt 0.609375 0.562500
+vt 0.609375 0.546875
+vt 0.703125 0.546875
+vt 0.703125 0.562500
+vt 0.031250 0.562500
+vt 0.031250 0.750000
+vt 0.015625 0.750000
+vt 0.015625 0.562500
+vt 0.718750 0.546875
+vt 0.750000 0.562500
+vt 0.750000 0.750000
+vt 0.062500 0.562500
+vt 0.062500 0.750000
+vt 0.046875 0.750000
+vt 0.046875 0.562500
+vt 0.265625 0.514825
+vt 0.031250 0.514825
+vt 0.031250 0.503232
+vt 0.053711 0.452995
+vt 0.062500 0.441401
+vt 0.015625 0.499368
+vt 0.532373 0.906371
+vt 0.718832 0.906371
+vt 0.718832 0.918025
+vt 0.532373 0.918025
+vt 0.062500 0.734375
+vt 0.078125 0.734375
+vt 0.078125 0.750000
+vt 0.742188 0.456859
+vt 0.765625 0.499368
+vt 0.727539 0.452995
+vt 0.765625 0.441401
+vt 0.756836 0.452995
+vt 0.531250 0.562500
+vt 0.531250 0.546875
+vt 0.765625 0.562500
+vt 0.765625 0.750000
+vt 0.015625 0.441401
+vt 0.024414 0.452995
+vt 0.492591 0.818141
+vt 0.039062 0.456859
+vt 0.289513 0.884532
+vt 0.289513 0.818141
+vt 0.727572 0.974351
+vt 0.742139 0.978235
+vt 0.719803 0.964639
+vt 0.765625 0.509029
+vt 0.750000 0.514825
+vt 0.750000 0.503232
+vt 0.756706 0.974351
+vt 0.756706 0.980178
+vt 0.742139 0.984062
+vt 0.265625 0.765625
+vt 0.265625 0.779712
+vt 0.031250 0.779712
+vt 0.031250 0.765625
+vt 0.477287 0.976904
+vt 0.305452 0.914419
+vt 0.477287 0.914419
+vt 0.289831 0.976904
+vt 0.289831 0.910513
+vt 0.492909 0.976904
+vt 0.492909 0.910513
+vt 0.756836 0.337900
+vt 0.718750 0.264013
+vt 0.764648 0.330122
+vt 0.742187 0.341789
+vt 0.727539 0.337900
+vt 0.719727 0.330122
+vt 0.053909 0.980178
+vt 0.039342 0.984062
+vt 0.039342 0.978236
+vt 0.053909 0.974351
+vt 0.015625 0.509029
+vt 0.024774 0.980178
+vt 0.024774 0.974351
+vt 0.164062 0.385367
+vt 0.078125 0.383435
+vt 0.531250 0.734375
+vt 0.609375 0.734375
+vt 0.078125 0.546875
+vt 0.171875 0.546875
+vt 0.171875 0.562500
+vt 0.078125 0.562500
+vt 0.062500 0.546875
+vt 0.703125 0.734375
+vt 0.718750 0.734375
+vt 0.250000 0.546875
+vt 0.265625 0.546875
+vt 0.265625 0.562500
+vt 0.250000 0.562500
+vt 0.062500 0.375706
+vt 0.718750 0.375706
+vt 0.718750 0.441401
+vt 0.703125 0.383435
+vt 0.609375 0.750000
+vt 0.703125 0.750000
+vt 0.531250 0.750000
+vt 0.515625 0.236792
+vt 0.765625 0.236792
+vt 0.703125 0.271791
+vt 0.617187 0.273735
+vt 0.531250 0.271791
+vt 0.765625 0.546875
+vt 0.750000 0.546875
+vt 0.046875 0.546875
+vt 0.031250 0.546875
+vt 0.516834 0.906371
+vt 0.516834 0.914140
+vt 0.734375 0.546875
+vt 0.015625 0.546875
+vt 0.264646 0.914140
+vt 0.264646 0.906371
+vt 0.016602 0.330122
+vt 0.062500 0.264013
+vt 0.024414 0.337900
+vt 0.039062 0.341789
+vt 0.053711 0.337900
+vt 0.061523 0.330122
+vt 0.727572 0.980178
+vt 0.015625 0.187500
+vt 0.031250 0.187500
+vt 0.031250 0.201141
+vt 0.515625 0.201141
+vt 0.515625 0.187500
+vt 0.764475 0.964639
+vt 0.017005 0.964640
+vt 0.061678 0.964640
+vt 0.015625 0.031250
+vt 0.515625 0.264013
+vt 0.016034 0.813142
+vt 0.264646 0.813142
+vt 0.015625 0.236792
+vt 0.078125 0.271791
+vt 0.265625 0.236792
+vt 0.164062 0.273735
+vt 0.250000 0.271791
+vt 0.265625 0.264013
+vt 0.265625 0.187500
+vt 0.265625 0.031250
+vt 0.515625 0.503232
+vt 0.515625 0.750000
+vt 0.515625 0.734375
+vt 0.516834 0.813142
+vt 0.765447 0.813142
+vt 0.765625 0.031250
+vt 0.515625 0.031250
+vt 0.515625 0.562500
+vt 0.617188 0.385367
+vt 0.531250 0.383435
+vt 0.515625 0.375706
+vt 0.750000 0.765625
+vt 0.750000 0.779712
+vt 0.515625 0.779712
+vt 0.515625 0.765625
+vt 0.515625 0.514825
+vt 0.515625 0.546875
+vt 0.265625 0.201141
+vt -0.000000 0.125000
+vt 1.000000 0.125000
+vt 1.000000 0.312500
+vt -0.000000 0.312500
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.937500 0.125000
+vt 0.875000 0.125000
+vt 0.875000 0.000000
+vt 0.937500 0.000000
+vt 0.125000 0.125000
+vt 0.062500 0.125000
+vt 0.062500 0.000000
+vt 0.125000 0.000000
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.937500
+vt 0.875000 0.937500
+vt 0.875000 0.875000
+vt 0.937500 0.875000
+vt 0.937500 0.937500
+vt 0.062500 0.062500
+vt 0.125000 0.062500
+vt 0.875000 0.062500
+vt 0.937500 0.062500
+vn -1.000000 0.000000 0.000000
+vn -0.948700 0.316200 0.000000
+vn 0.536500 0.831000 -0.146800
+vn 0.937700 0.338900 -0.075700
+vn 0.694400 0.205200 -0.689700
+vn 0.392500 0.537600 -0.746300
+vn -0.035700 0.329600 0.943400
+vn 0.000000 -0.000000 1.000000
+vn -0.785700 0.195600 0.586900
+vn -0.090600 0.839600 -0.535500
+vn -0.779600 0.517700 -0.352300
+vn -0.105900 0.156900 -0.981900
+vn -0.042000 0.330000 -0.943000
+vn -0.017300 0.004100 0.999800
+vn -0.788400 0.511400 -0.341800
+vn -0.785700 0.195600 -0.586900
+vn -0.035700 0.329600 -0.943400
+vn 0.251500 0.967800 0.000000
+vn 0.207400 0.930000 0.303500
+vn 0.404200 0.866700 0.292300
+vn 0.490300 0.871600 -0.000000
+vn 0.193100 0.981200 0.000000
+vn 0.351100 0.936300 -0.000000
+vn -0.251500 0.967800 0.000000
+vn -0.860000 0.510300 0.000000
+vn -0.805300 0.561700 0.189400
+vn -0.207400 0.930000 0.303500
+vn -0.119800 0.992800 0.000000
+vn -0.760700 0.649000 0.002000
+vn -0.973400 0.205400 -0.101100
+vn -0.160300 0.814600 0.557500
+vn -0.760700 0.649000 -0.002000
+vn -0.788400 0.511400 0.341800
+vn -0.090600 0.839600 0.535500
+vn -0.559600 0.828700 0.000000
+vn -0.536500 0.831000 -0.146800
+vn -0.940200 0.331200 -0.079300
+vn -0.699900 0.200500 -0.685500
+vn -0.042000 0.330000 0.943000
+vn -0.105900 0.156900 0.981900
+vn -0.779600 0.517700 0.352300
+vn 0.160300 0.814600 -0.557500
+vn 0.207400 0.930000 -0.303500
+vn 0.404200 0.866700 -0.292300
+vn 0.303000 0.808100 -0.505100
+vn -0.699900 0.200500 0.685500
+vn -0.207400 0.930000 -0.303500
+vn -0.805300 0.561700 -0.189400
+vn -0.641000 0.000000 0.767600
+vn -0.655400 0.266200 0.706800
+vn -0.973400 0.205400 0.101100
+vn -0.392500 0.537600 0.746300
+vn 0.000000 0.626800 0.779200
+vn -0.536500 0.831000 0.146800
+vn -0.940200 0.331200 0.079300
+vn 0.392500 0.537600 0.746300
+vn 0.536500 0.831000 0.146800
+vn 0.000000 0.984800 0.173500
+vn 0.000000 1.000000 0.000000
+vn 0.559600 0.828700 0.000000
+vn 0.000000 0.984800 -0.173500
+vn 0.000000 0.000000 -1.000000
+vn -0.017300 0.004100 -0.999800
+vn -0.641000 0.000000 -0.767600
+vn -0.655400 0.266200 -0.706800
+vn -0.718100 0.578400 0.386900
+vn -0.661600 0.265500 0.701300
+vn -0.741200 0.671300 0.000000
+vn -0.718100 0.578400 -0.386900
+vn 0.000000 0.626800 -0.779200
+vn -0.392500 0.537600 -0.746300
+vn -0.160300 0.814600 -0.557500
+vn 0.160300 0.814600 0.557500
+vn -0.902600 0.430500 0.000000
+vn -0.193100 0.981200 0.000000
+vn 0.303000 0.808100 0.505100
+vn -0.707100 0.000800 0.707100
+vn -0.661600 0.265500 -0.701300
+vn 0.694400 0.205200 0.689700
+vn 0.937700 0.338900 0.075700
+vn 0.948700 0.316200 0.000000
+vn 0.707100 0.000300 0.707100
+vn 0.707100 0.000300 -0.707100
+vn -0.707100 0.000800 -0.707100
+vn 1.000000 0.000000 -0.000000
+vn 0.000000 -1.000000 0.000000
+g Cylinder_Cylinder_upholstery
+s 1
+f 48/1/1 24/2/1 23/3/2
+f 92/4/3 85/5/4 6/6/5 36/6/6
+f 74/7/7 65/8/8 13/9/9
+f 77/10/10 1/11/11 12/12/12 73/13/13
+f 65/8/8 74/7/7 56/14/14
+f 78/15/10 3/16/15 18/17/16 75/18/17
+f 63/19/18 69/20/19 48/21/20 43/22/21
+f 69/20/19 71/23/22 24/24/23 48/21/20
+f 55/25/24 45/26/25 47/27/26 61/28/27
+f 81/29/28 32/30/29 1/31/11 77/32/10
+f 61/28/27 47/27/26 15/33/30 57/18/31
+f 82/34/28 30/35/32 3/16/15 78/15/10
+f 74/36/7 13/37/9 27/38/33 79/39/34
+f 23/3/2 38/40/35 89/41/36 83/42/37
+f 27/43/33 23/3/2 83/42/37
+f 13/44/9 23/3/2 27/43/33
+f 5/45/38 27/43/33 83/42/37
+f 76/46/39 19/47/40 25/48/41 80/49/34
+f 65/50/42 67/51/43 51/52/44 9/37/45
+f 30/53/32 8/54/46 3/55/15
+f 67/51/43 63/19/18 43/22/21 51/52/44
+f 79/39/34 27/38/33 32/30/29 81/29/28
+f 19/56/40 8/54/46 25/57/41
+f 59/58/47 53/59/48 45/26/25 55/25/24
+f 80/60/34 25/61/41 30/35/32 82/34/28
+f 12/62/12 1/63/11 5/45/38
+f 9/64/49 13/9/9 65/8/8
+f 32/65/29 5/45/38 1/63/11
+f 5/45/38 32/65/29 27/43/33
+f 8/54/46 30/53/32 25/57/41
+f 74/7/7 14/66/50 10/67/51 56/14/14
+f 37/68/52 19/47/40 34/69/53
+f 8/70/46 19/47/40 37/68/52
+f 8/54/46 37/71/52 90/72/54 86/73/55
+f 34/69/53 40/74/56 91/75/57 87/76/58
+f 35/77/59 41/78/60 92/79/3 88/80/61
+f 75/81/17 70/82/62 57/83/63
+f 18/84/16 70/82/62 75/81/17
+f 16/85/64 70/82/62 18/84/16
+f 17/86/65 75/81/17 57/83/63 15/87/30
+f 4/88/66 15/89/30 20/90/67
+f 29/91/68 15/89/30 4/88/66
+f 2/92/69 15/89/30 29/91/68
+f 17/93/65 15/89/30 2/92/69
+f 89/94/36 88/95/61 33/96/70 39/97/71
+f 83/42/37 89/41/36 39/98/71 5/45/38
+f 88/95/61 92/99/3 36/100/6 33/96/70
+f 48/1/1 23/3/2 43/101/1
+f 43/101/1 23/3/2 51/102/1
+f 66/103/43 59/58/47 55/25/24 64/104/18
+f 50/105/48 44/106/25 54/107/24 60/108/47
+f 10/109/51 50/105/48 60/108/47 56/36/72
+f 68/110/19 61/28/27 57/18/31 70/111/73
+f 64/104/18 55/25/24 61/28/27 68/110/19
+f 49/112/26 21/113/74 58/114/75 62/115/27
+f 44/106/25 49/112/26 62/115/27 54/107/24
+f 9/116/49 51/102/1 13/44/9
+f 23/3/2 13/44/9 51/102/1
+f 16/117/64 18/118/16 52/119/1
+f 42/120/21 64/104/18 68/110/19 52/121/20
+f 52/121/20 68/110/19 70/111/73 16/17/76
+f 46/122/44 66/103/43 64/104/18 42/120/21
+f 60/108/47 54/107/24 63/19/18 67/51/43
+f 97/123/1 96/124/77 15/89/30
+f 56/36/72 60/108/47 67/51/43 65/50/42
+f 47/125/26 97/123/1 15/89/30
+f 62/115/27 58/114/75 71/23/22 69/20/19
+f 54/107/24 62/115/27 69/20/19 63/19/18
+f 45/126/25 97/123/1 47/125/26
+f 53/127/48 97/123/1 45/126/25
+f 4/128/66 80/60/34 82/34/28 29/129/68
+f 28/130/66 79/39/34 81/29/28 31/131/68
+f 20/132/67 76/46/39 80/49/34 4/133/66
+f 14/109/50 74/36/7 79/39/34 28/130/66
+f 29/129/68 82/34/28 78/15/10 2/134/69
+f 31/131/68 81/29/28 77/32/10 26/135/69
+f 2/134/69 78/15/10 75/18/17 17/33/65
+f 26/136/69 77/10/10 73/13/13 11/137/78
+f 11/138/78 10/139/51 26/140/69
+f 26/140/69 10/139/51 31/141/68
+f 28/142/66 31/141/68 10/139/51
+f 10/139/51 14/143/50 28/142/66
+f 38/24/35 35/77/59 88/80/61 89/30/36
+f 37/68/52 34/69/53 87/76/58 90/144/54
+f 40/145/56 7/145/79 84/146/80 91/147/57
+f 41/148/60 22/149/81 85/5/4 92/4/3
+f 34/69/53 19/47/40 40/74/56
+f 19/47/40 7/150/79 40/74/56
+f 6/151/5 12/12/12 36/100/6
+f 36/100/6 12/12/12 33/96/70
+f 33/96/70 12/12/12 39/97/71
+f 12/12/12 5/152/38 39/97/71
+f 3/55/15 8/54/46 86/73/55
+f 7/145/79 94/153/82 84/146/80
+f 21/154/74 97/123/1 53/127/48
+f 95/155/83 98/156/84 12/12/12
+f 12/12/12 98/156/84 73/13/13
+f 73/13/13 98/156/84 11/137/78
+f 10/139/51 11/138/78 98/157/84
+f 50/158/48 10/139/51 97/159/1
+f 50/158/48 97/159/1 44/160/25
+f 44/160/25 97/159/1 49/161/26
+f 49/161/26 97/159/1 21/162/74
+f 98/157/84 97/159/1 10/139/51
+f 22/163/81 84/146/80 94/153/82
+f 93/164/85 22/163/81 94/153/82
+f 86/73/55 23/165/2 3/55/15
+f 24/166/23 71/167/22 66/103/43 46/122/44
+f 23/165/2 52/119/1 18/118/16
+f 15/89/30 96/124/77 20/90/67
+f 20/132/67 96/168/77 76/46/39
+f 76/46/39 96/168/77 19/47/40
+f 96/168/77 94/169/82 19/47/40
+f 19/47/40 94/169/82 7/150/79
+f 6/151/5 95/155/83 12/12/12
+f 85/5/4 95/170/83 6/6/5
+f 22/149/81 95/170/83 85/5/4
+f 22/149/81 93/171/85 95/170/83
+f 71/167/22 58/172/75 59/58/47 66/103/43
+f 42/173/1 52/119/1 23/165/2
+f 46/174/1 42/173/1 23/165/2
+f 24/175/1 46/174/1 23/165/2
+f 87/176/58 91/177/57 41/178/60 35/179/59
+f 86/73/55 90/72/54 38/180/35 23/165/2
+f 90/35/54 87/176/58 35/179/59 38/166/35
+f 3/55/15 23/165/2 18/118/16
+f 58/172/75 21/181/74 53/59/48 59/58/47
+f 91/147/57 84/146/80 22/163/81 41/182/60
+g Cylinder_Cylinder_bottom
+s off
+f 102/183/1 136/184/1 97/185/1 98/186/1
+f 99/183/8 100/184/8 94/185/8 96/186/8
+f 101/183/62 102/184/62 98/185/62 95/186/62
+f 136/187/86 135/188/86 100/189/86 99/190/86
+f 101/184/85 95/185/85 93/186/85 135/183/85
+f 100/183/85 135/184/85 93/185/85 94/186/85
+f 107/191/62 108/192/62 104/193/62 103/194/62
+f 108/191/85 109/192/85 105/193/85 104/194/85
+f 109/195/8 110/196/8 106/197/8 105/198/8
+f 110/195/1 107/196/1 103/197/1 106/198/1
+f 103/199/86 104/200/86 105/201/86 106/202/86
+f 115/191/62 116/192/62 112/193/62 111/194/62
+f 116/195/85 117/196/85 113/197/85 112/198/85
+f 117/195/8 118/196/8 114/197/8 113/198/8
+f 118/191/1 115/192/1 111/193/1 114/194/1
+f 111/203/86 112/204/86 113/205/86 114/206/86
+f 102/187/86 101/188/86 135/189/86 136/190/86
+f 123/195/62 124/196/62 120/197/62 119/198/62
+f 124/191/85 125/192/85 121/193/85 120/194/85
+f 125/191/8 126/192/8 122/193/8 121/194/8
+f 126/195/1 123/196/1 119/197/1 122/198/1
+f 119/196/86 120/207/86 121/208/86 122/195/86
+f 131/195/62 132/196/62 128/197/62 127/198/62
+f 132/195/85 133/196/85 129/197/85 128/198/85
+f 133/191/8 134/192/8 130/193/8 129/194/8
+f 134/191/1 131/192/1 127/193/1 130/194/1
+f 127/192/86 128/209/86 129/210/86 130/191/86
+f 136/183/1 99/184/1 96/185/1 97/186/1
diff --git a/homedecor_modpack/lrfurn/sofas.lua b/homedecor_modpack/lrfurn/sofas.lua
new file mode 100644
index 0000000..1f7c217
--- /dev/null
+++ b/homedecor_modpack/lrfurn/sofas.lua
@@ -0,0 +1,86 @@
+
+
+local sofa_sbox = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 1.5}
+}
+
+local sofa_cbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 1.5 },
+ {-0.5, -0.5, 0.5, -0.4, 0.5, 1.5 }
+ }
+}
+
+for i in ipairs(lrfurn.colors) do
+ local colour = lrfurn.colors[i][1]
+ local hue = lrfurn.colors[i][2]
+
+ minetest.register_node("lrfurn:sofa_"..colour, {
+ description = "Sofa ("..colour..")",
+ drawtype = "mesh",
+ mesh = "lrfurn_sofa_short.obj",
+ tiles = {
+ "lrfurn_bg_white.png^[colorize:"..hue.."^lrfurn_sofa_overlay.png",
+ "lrfurn_sofa_bottom.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = sofa_sbox,
+ node_box = sofa_cbox,
+ on_rotate = screwdriver.disallow,
+
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ if minetest.is_protected(pos, placer:get_player_name()) then return true end
+
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
+
+ if lrfurn.check_forward(pos, fdir, false, placer) then
+ minetest.set_node(pos, {name = "lrfurn:sofa_"..colour, param2 = fdir})
+ itemstack:take_item()
+ else
+ minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
+ minetest.set_node(pos, { name = "air" })
+
+ end
+ return itemstack
+ end,
+ on_rightclick = function(pos, node, clicker)
+ if not clicker:is_player() then
+ return
+ end
+ pos.y = pos.y-0.5
+ clicker:setpos(pos)
+ clicker:set_hp(20)
+ end
+ })
+
+ minetest.register_alias("lrfurn:sofa_left_"..colour, "air")
+ minetest.register_alias("lrfurn:sofa_right_"..colour, "lrfurn:sofa_"..colour)
+
+ minetest.register_craft({
+ output = "lrfurn:sofa_"..colour,
+ recipe = {
+ {"wool:"..colour, "wool:"..colour, "", },
+ {"stairs:slab_wood", "stairs:slab_wood", "", },
+ {"group:stick", "group:stick", "", }
+ }
+ })
+
+ minetest.register_craft({
+ output = "lrfurn:sofa_"..colour,
+ recipe = {
+ {"wool:"..colour, "wool:"..colour, "", },
+ {"moreblocks:slab_wood", "moreblocks:slab_wood", "", },
+ {"group:stick", "group:stick", "", }
+ }
+ })
+
+end
+
+if minetest.setting_get("log_mods") then
+ minetest.log("action", "sofas loaded")
+end
diff --git a/homedecor_modpack/lrfurn/textures/lrfurn_bg_white.png b/homedecor_modpack/lrfurn/textures/lrfurn_bg_white.png
new file mode 100644
index 0000000..a5adc1f
--- /dev/null
+++ b/homedecor_modpack/lrfurn/textures/lrfurn_bg_white.png
Binary files differ
diff --git a/homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_back.png b/homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_back.png
new file mode 100644
index 0000000..04894fd
--- /dev/null
+++ b/homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_back.png
Binary files differ
diff --git a/homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_front.png b/homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_front.png
new file mode 100644
index 0000000..65d4f51
--- /dev/null
+++ b/homedecor_modpack/lrfurn/textures/lrfurn_coffeetable_front.png
Binary files differ
diff --git a/homedecor_modpack/lrfurn/textures/lrfurn_sofa_bottom.png b/homedecor_modpack/lrfurn/textures/lrfurn_sofa_bottom.png
new file mode 100644
index 0000000..e72944a
--- /dev/null
+++ b/homedecor_modpack/lrfurn/textures/lrfurn_sofa_bottom.png
Binary files differ
diff --git a/homedecor_modpack/lrfurn/textures/lrfurn_sofa_overlay.png b/homedecor_modpack/lrfurn/textures/lrfurn_sofa_overlay.png
new file mode 100644
index 0000000..d02df2d
--- /dev/null
+++ b/homedecor_modpack/lrfurn/textures/lrfurn_sofa_overlay.png
Binary files differ
diff --git a/homedecor_modpack/modpack.txt b/homedecor_modpack/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/homedecor_modpack/modpack.txt
diff --git a/homedecor_modpack/plasmascreen/README.md b/homedecor_modpack/plasmascreen/README.md
new file mode 100644
index 0000000..4f33864
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/README.md
@@ -0,0 +1,16 @@
+PLASMASCREEN
+============
+
+Mod adding a plasma screen TV for Minetest.
+
+This mod adds a 2x3 plasma screen TV using a single large mesh node.
+
+Point at the bottom center position where you want the TV to go, when placing.
+
+Note: If you're at a really steep view angle when trying to place a screen,
+the mod may occasionally refuse to place it (or it just appears for a moment).
+Just move over a bit, so that your target position is more directly in front
+of you.
+
+Code, textures and model are WTFPL.
+
diff --git a/homedecor_modpack/plasmascreen/depends.txt b/homedecor_modpack/plasmascreen/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/homedecor_modpack/plasmascreen/init.lua b/homedecor_modpack/plasmascreen/init.lua
new file mode 100644
index 0000000..839fa1f
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/init.lua
@@ -0,0 +1,185 @@
+screwdriver = screwdriver or {}
+
+minetest.register_node("plasmascreen:stand", {
+ description = "Plasma Screen TV Stand",
+ tiles = {"plasmascreen_back.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0.5000,-0.5000,0.0625,-0.5000,-0.4375,-0.5000}, --NodeBox 1
+ {-0.1875,-0.5000,-0.3750,0.1875,0.1250,-0.1250}, --NodeBox 2
+ {-0.5000,-0.2500,-0.5000,0.5000,0.5000,-0.3750}, --NodeBox 3
+ {-0.3750,-0.1875,-0.3750,0.3750,0.3125,-0.2500}, --NodeBox 4
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5000, -0.5000, -0.5000, 0.5000, 0.5000, 0.0000},
+ }
+ },
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
+})
+
+minetest.register_alias("plasmascreen:screen1", "air")
+minetest.register_alias("plasmascreen:screen2", "air")
+minetest.register_alias("plasmascreen:screen3", "air")
+minetest.register_alias("plasmascreen:screen4", "air")
+minetest.register_alias("plasmascreen:screen5", "plasmascreen:tv")
+minetest.register_alias("plasmascreen:screen6", "air")
+
+local fdir_to_left = {
+ { -1, 0 },
+ { 0, 1 },
+ { 1, 0 },
+ { 0, -1 },
+}
+
+local fdir_to_right = {
+ { 1, 0 },
+ { 0, -1 },
+ { -1, 0 },
+ { 0, 1 },
+}
+
+local tv_cbox = {
+ type = "fixed",
+ fixed = {-1.5050, -0.3125, 0.3700, 1.5050, 1.5050, 0.5050}
+}
+
+local function checkwall(pos)
+
+ local fdir = minetest.get_node(pos).param2
+
+ local dxl = fdir_to_left[fdir + 1][1] -- dxl = "[D]elta [X] [L]eft"
+ local dzl = fdir_to_left[fdir + 1][2] -- Z left
+
+ local dxr = fdir_to_right[fdir + 1][1] -- X right
+ local dzr = fdir_to_right[fdir + 1][2] -- Z right
+
+ local node1 = minetest.get_node({x=pos.x+dxl, y=pos.y, z=pos.z+dzl})
+ if not node1 or not minetest.registered_nodes[node1.name]
+ or not minetest.registered_nodes[node1.name].buildable_to then
+ return false
+ end
+
+ local node2 = minetest.get_node({x=pos.x+dxr, y=pos.y, z=pos.z+dzr})
+ if not node2 or not minetest.registered_nodes[node2.name]
+ or not minetest.registered_nodes[node2.name].buildable_to then
+ return false
+ end
+
+ local node3 = minetest.get_node({x=pos.x+dxl, y=pos.y+1, z=pos.z+dzl})
+ if not node3 or not minetest.registered_nodes[node3.name]
+ or not minetest.registered_nodes[node3.name].buildable_to then
+ return false
+ end
+
+ local node4 = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
+ if not node4 or not minetest.registered_nodes[node4.name]
+ or not minetest.registered_nodes[node4.name].buildable_to then
+ return false
+ end
+
+ local node5 = minetest.get_node({x=pos.x+dxr, y=pos.y+1, z=pos.z+dzr})
+ if not node5 or not minetest.registered_nodes[node5.name]
+ or not minetest.registered_nodes[node5.name].buildable_to then
+ return false
+ end
+
+ return true
+end
+
+minetest.register_node("plasmascreen:tv", {
+ description = "Plasma TV",
+ drawtype = "mesh",
+ mesh = "plasmascreen_tv.obj",
+ tiles = {
+ "plasmascreen_case.png",
+ { name="plasmascreen_video.png",
+ animation={
+ type="vertical_frames",
+ aspect_w = 42,
+ aspect_h = 23,
+ length = 44
+ }
+ }
+
+ },
+ inventory_image = "plasmascreen_tv_inv.png",
+ wield_image = "plasmascreen_tv_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = 10,
+ selection_box = tv_cbox,
+ collision_box = tv_cbox,
+ on_rotate = screwdriver.disallow,
+ groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2},
+ after_place_node = function(pos, placer, itemstack)
+ if not checkwall(pos) then
+ minetest.set_node(pos, {name = "air"})
+ return true -- "API: If return true no item is taken from itemstack"
+ end
+ end,
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.set_node(pos, {name = "plasmascreen:tv_off", param2 = node.param2})
+ end
+})
+
+minetest.register_node("plasmascreen:tv_off", {
+ description = "Plasma TV (off)",
+ drawtype = "mesh",
+ mesh = "plasmascreen_tv.obj",
+ tiles = {
+ "plasmascreen_case_off.png",
+ "plasmascreen_screen_off.png",
+ },
+ inventory_image = "plasmascreen_tv_inv.png",
+ wield_image = "plasmascreen_tv_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = 10,
+ selection_box = tv_cbox,
+ collision_box = tv_cbox,
+ on_rotate = screwdriver.disallow,
+ groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
+ after_place_node = function(pos, placer, itemstack)
+ if not checkwall(pos) then
+ minetest.set_node(pos, {name = "air"})
+ return true -- "API: If return true no item is taken from itemstack"
+ end
+ end,
+ on_punch = function(pos, node, puncher, pointed_thing)
+ minetest.set_node(pos, {name = "plasmascreen:tv", param2 = node.param2})
+ end,
+ drop = "plasmascreen:tv"
+})
+
+-- crafting recipes
+
+minetest.register_craft({
+ output = "plasmascreen:tv",
+ recipe = {
+ {'default:glass', 'default:coal_lump', 'default:glass'},
+ {'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
+ {'default:glass', 'default:glass', 'default:glass'},
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "plasmascreen:tv",
+ recipe = {'homedecor:television', 'homedecor:television'},
+})
+
+minetest.register_craft({
+ output = "plasmascreen:stand",
+ recipe = {
+ {'', '', ''},
+ {'', 'default:steel_ingot', ''},
+ {'group:stick', 'default:coal_lump', 'group:stick'},
+ }
+})
diff --git a/homedecor_modpack/plasmascreen/models/plasmascreen_tv.obj b/homedecor_modpack/plasmascreen/models/plasmascreen_tv.obj
new file mode 100644
index 0000000..af2df0e
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/models/plasmascreen_tv.obj
@@ -0,0 +1,135 @@
+# Blender v2.73 (sub 0) OBJ File: 'plasmascreen.blend'
+# www.blender.org
+o Cylinder
+v -1.500000 -0.312500 0.500000
+v -1.500000 -0.312500 0.375000
+v 1.500000 -0.312500 0.375000
+v 1.500000 -0.312500 0.500000
+v -1.500000 1.500000 0.500000
+v -1.500000 1.500000 0.375000
+v 1.500000 1.500000 0.375000
+v 1.500000 1.500000 0.500000
+v -1.312500 -0.125000 0.437500
+v 1.375000 1.375000 0.375000
+v -1.312500 1.312500 0.437500
+v 1.375000 -0.187500 0.375000
+v -1.375000 1.375000 0.375000
+v 1.312500 -0.125000 0.437500
+v -1.375000 -0.187500 0.375000
+v 1.312500 1.312500 0.437500
+v 1.500000 1.375000 0.375000
+v 1.500000 -0.187500 0.375000
+v -1.500000 1.375000 0.375000
+v -1.500000 -0.187500 0.375000
+v -1.312500 -0.187500 0.375000
+v -1.312500 1.375000 0.375000
+v 1.312500 -0.187500 0.375000
+v 1.312500 1.375000 0.375000
+v -1.375000 -0.125000 0.375000
+v -1.375000 1.312500 0.375000
+v 1.375000 -0.125000 0.375000
+v 1.375000 1.312500 0.375000
+v -1.312811 -0.125310 0.437500
+v -1.312811 1.312810 0.437500
+v 1.312811 -0.125310 0.437500
+v 1.312811 1.312810 0.437500
+vt 0.953125 0.984375
+vt 0.921875 0.984375
+vt 0.921875 0.531250
+vt 0.953125 0.531250
+vt 0.906250 0.984375
+vt 0.875000 0.984375
+vt 0.875000 0.531250
+vt 0.906250 0.531250
+vt 0.812500 0.984375
+vt 0.781250 0.984375
+vt 0.781250 0.593750
+vt 0.812500 0.593750
+vt 0.015625 0.953125
+vt 0.765625 0.953125
+vt 0.765625 0.984375
+vt 0.015625 0.984375
+vt 0.015625 0.812500
+vt 0.765625 0.812500
+vt 0.765625 0.843750
+vt 0.015625 0.843750
+vt 0.765625 0.796875
+vt 0.015625 0.796875
+vt 0.015625 0.343750
+vt 0.765625 0.343750
+vt 0.828125 0.593750
+vt 0.859375 0.593750
+vt 0.859375 0.984375
+vt 0.828125 0.984375
+vt 0.015625 0.890625
+vt 0.015625 0.859375
+vt 0.765625 0.859375
+vt 0.765625 0.890625
+vt 0.015625 0.937500
+vt 0.015625 0.906250
+vt 0.765625 0.906250
+vt 0.765625 0.937500
+vt 0.031250 0.296875
+vt 0.031250 0.281250
+vt 0.687500 0.281250
+vt 0.687500 0.296875
+vt 0.687500 0.312500
+vt 0.687500 0.328125
+vt 0.031250 0.328125
+vt 0.031250 0.312500
+vt 0.375000 0.250000
+vt 0.375000 0.265625
+vt 0.015625 0.265625
+vt 0.015625 0.250000
+vt 0.703125 0.296875
+vt 0.703125 0.281250
+vt 0.015625 0.234375
+vt 0.015625 0.218750
+vt 0.375000 0.218750
+vt 0.375000 0.234375
+vt 0.703125 0.328125
+vt 0.703125 0.312500
+vt 0.015625 0.328125
+vt 0.015625 0.312500
+vt 0.015625 0.281250
+vt 0.015625 0.296875
+vt 1.000000 1.000000
+vt -0.000000 1.000000
+vt -0.000000 -0.000000
+vt 1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.707100 0.000000 -0.707100
+vn 0.000000 -0.707100 0.707100
+g Cylinder_Cylinder_case
+s off
+f 5/1/1 6/2/1 2/3/1 1/4/1
+f 7/5/2 8/6/2 4/7/2 3/8/2
+f 10/9/3 17/10/3 18/11/3 12/12/3
+f 5/13/4 8/14/4 7/15/4 6/16/4
+f 2/17/5 3/18/5 4/19/5 1/20/5
+f 8/21/6 5/22/6 1/23/6 4/24/6
+f 15/25/3 20/26/3 19/27/3 13/28/3
+f 18/29/3 3/30/3 2/31/3 20/32/3
+f 7/33/3 17/34/3 19/35/3 6/36/3
+f 14/37/7 23/38/7 21/39/7 9/40/7
+f 11/41/8 22/42/8 24/43/8 16/44/8
+f 16/45/9 28/46/9 27/47/9 14/48/9
+f 25/49/10 9/40/10 15/50/10
+f 15/50/7 9/40/7 21/39/7
+f 9/51/10 25/52/10 26/53/10 11/54/10
+f 13/55/10 11/41/10 26/56/10
+f 22/42/8 11/41/8 13/55/8
+f 10/57/8 16/44/8 24/43/8
+f 28/58/9 16/44/9 10/57/9
+f 12/59/9 14/37/9 27/60/9
+f 23/38/11 12/59/11 14/37/11
+g Cylinder_Cylinder_screen
+f 30/61/3 32/62/3 31/63/3 29/64/3
diff --git a/homedecor_modpack/plasmascreen/textures/plasmascreen_back.png b/homedecor_modpack/plasmascreen/textures/plasmascreen_back.png
new file mode 100644
index 0000000..a9c4375
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/textures/plasmascreen_back.png
Binary files differ
diff --git a/homedecor_modpack/plasmascreen/textures/plasmascreen_case.png b/homedecor_modpack/plasmascreen/textures/plasmascreen_case.png
new file mode 100644
index 0000000..4fc269e
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/textures/plasmascreen_case.png
Binary files differ
diff --git a/homedecor_modpack/plasmascreen/textures/plasmascreen_case_off.png b/homedecor_modpack/plasmascreen/textures/plasmascreen_case_off.png
new file mode 100644
index 0000000..f31329e
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/textures/plasmascreen_case_off.png
Binary files differ
diff --git a/homedecor_modpack/plasmascreen/textures/plasmascreen_screen_off.png b/homedecor_modpack/plasmascreen/textures/plasmascreen_screen_off.png
new file mode 100644
index 0000000..56cc203
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/textures/plasmascreen_screen_off.png
Binary files differ
diff --git a/homedecor_modpack/plasmascreen/textures/plasmascreen_tv_inv.png b/homedecor_modpack/plasmascreen/textures/plasmascreen_tv_inv.png
new file mode 100644
index 0000000..7bd7395
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/textures/plasmascreen_tv_inv.png
Binary files differ
diff --git a/homedecor_modpack/plasmascreen/textures/plasmascreen_video.png b/homedecor_modpack/plasmascreen/textures/plasmascreen_video.png
new file mode 100644
index 0000000..d6e6298
--- /dev/null
+++ b/homedecor_modpack/plasmascreen/textures/plasmascreen_video.png
Binary files differ
diff --git a/ilights/README.md b/ilights/README.md
new file mode 100644
index 0000000..6ee5445
--- /dev/null
+++ b/ilights/README.md
@@ -0,0 +1,4 @@
+ilights
+=======
+
+Repo for ilights mod
diff --git a/ilights/depends.txt b/ilights/depends.txt
new file mode 100644
index 0000000..b08c42c
--- /dev/null
+++ b/ilights/depends.txt
@@ -0,0 +1,4 @@
+default
+dye
+intllib?
+
diff --git a/ilights/init.lua b/ilights/init.lua
new file mode 100644
index 0000000..d8de447
--- /dev/null
+++ b/ilights/init.lua
@@ -0,0 +1,89 @@
+-- Industrial lights mod by DanDuncombe
+-- License: CC-By-Sa
+
+ilights = {}
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+
+if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
+ ilights.expect_infinite_stacks = false
+else
+ ilights.expect_infinite_stacks = true
+end
+
+ilights.modpath = minetest.get_modpath("ilights")
+
+-- The important stuff!
+
+ilights.types = {
+ {"white", "White", "#ffffff" },
+ {"grey", "Grey", "#a0a0a0" },
+ {"black", "Black", "#000000" },
+ {"red", "Red", "#ff0000" },
+ {"yellow", "Yellow", "#ffff00" },
+ {"green", "Green", "#00ff00" },
+ {"cyan", "Cyan", "#00ffff" },
+ {"blue", "Blue", "#0000ff" },
+ {"magenta", "Magenta", "#ff00ff" },
+ {"orange", "Orange", "#ff8000" },
+ {"violet", "Violet", "#8000ff" },
+ {"dark_grey", "Dark Grey", "#404040" },
+ {"dark_green", "Dark Green", "#008000" },
+ {"pink", "Pink", "#ffb0ff" },
+ {"brown", "Brown", "#604000" },
+}
+
+local lamp_cbox = {
+ type = "fixed",
+ fixed = { -11/32, -8/16, -11/32, 11/32, 4/16, 11/32 }
+}
+
+for _, row in ipairs(ilights.types) do
+ local name = row[1]
+ local desc = row[2]
+ local colordef = row[3]
+
+ -- Node Definition
+
+ minetest.register_node("ilights:light_"..name, {
+ description = desc.." Industrial Light",
+ drawtype = "mesh",
+ mesh = "ilights_lamp.obj",
+ tiles = {
+ "ilights_lamp_base.png",
+ "ilights_lamp_cage.png",
+ "ilights_lamp_bulb.png^[colorize:"..colordef..":200",
+ "ilights_lamp_bulb_base.png",
+ "ilights_lamp_lens.png^[colorize:"..colordef.."20:75"
+ },
+ use_texture_alpha = true,
+ groups = {cracky=3},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = 15,
+ selection_box = lamp_cbox,
+ collision_box = lamp_cbox,
+ on_place = minetest.rotate_node
+ })
+
+ if name then
+
+ --Choose craft material
+ minetest.register_craft({
+ output = "ilights:light_"..name.." 3",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "dye:"..name, "default:glass", "dye:"..name },
+ { "default:steel_ingot", "default:torch", "default:steel_ingot" }
+ },
+ })
+
+ end
+end
+
diff --git a/ilights/models/ilights_lamp.obj b/ilights/models/ilights_lamp.obj
new file mode 100644
index 0000000..988c6f6
--- /dev/null
+++ b/ilights/models/ilights_lamp.obj
@@ -0,0 +1,2287 @@
+# Blender v2.73 (sub 0) OBJ File: 'industrial-light.blend'
+# www.blender.org
+o cage_Cylinder.004
+v -0.000146 -0.324541 -0.050004
+v -0.019282 -0.324541 -0.046198
+v -0.035504 -0.324541 -0.035358
+v -0.046344 -0.324541 -0.019136
+v -0.050150 -0.324541 -0.000000
+v -0.046344 -0.324541 0.019135
+v -0.035504 -0.324541 0.035358
+v -0.019282 -0.324541 0.046197
+v -0.000146 -0.324541 0.050004
+v 0.018990 -0.324541 0.046197
+v 0.035212 -0.324541 0.035358
+v 0.046052 -0.324541 0.019135
+v 0.049858 -0.324541 -0.000000
+v 0.046052 -0.324541 -0.019136
+v 0.035212 -0.324541 -0.035358
+v 0.018990 -0.324541 -0.046198
+v -0.000146 -0.394724 -0.280733
+v -0.000146 -0.499999 -0.280733
+v -0.107578 -0.394724 -0.259363
+v -0.107578 -0.499999 -0.259363
+v -0.198654 -0.394724 -0.198508
+v -0.198654 -0.499999 -0.198508
+v -0.259509 -0.394724 -0.107432
+v -0.259509 -0.499999 -0.107432
+v -0.280878 -0.394724 -0.000000
+v -0.280878 -0.499999 -0.000000
+v -0.259509 -0.394724 0.107432
+v -0.259509 -0.499999 0.107432
+v -0.198654 -0.394724 0.198508
+v -0.198654 -0.499999 0.198508
+v -0.107578 -0.394724 0.259363
+v -0.107578 -0.499999 0.259363
+v -0.000146 -0.394724 0.280732
+v -0.000146 -0.499999 0.280732
+v 0.107286 -0.394724 0.259363
+v 0.107286 -0.499999 0.259363
+v 0.198362 -0.394724 0.198508
+v 0.198362 -0.499999 0.198508
+v 0.259217 -0.394724 0.107432
+v 0.259217 -0.499999 0.107432
+v 0.280586 -0.394724 -0.000000
+v 0.280586 -0.499999 -0.000000
+v 0.259217 -0.394724 -0.107432
+v 0.259217 -0.499999 -0.107432
+v 0.198362 -0.394724 -0.198508
+v 0.198362 -0.499999 -0.198508
+v 0.107286 -0.394724 -0.259363
+v 0.107286 -0.499999 -0.259363
+v -0.000146 -0.324541 -0.350916
+v -0.000146 -0.394724 -0.350916
+v -0.134436 -0.324541 -0.324204
+v -0.134436 -0.394724 -0.324204
+v -0.248281 -0.324541 -0.248135
+v -0.248281 -0.394724 -0.248135
+v -0.324350 -0.324541 -0.134290
+v -0.324350 -0.394724 -0.134290
+v -0.351062 -0.324541 -0.000000
+v -0.351062 -0.394724 -0.000000
+v -0.324350 -0.324541 0.134290
+v -0.324350 -0.394724 0.134290
+v -0.248281 -0.324541 0.248135
+v -0.248281 -0.394724 0.248135
+v -0.134436 -0.324541 0.324204
+v -0.134436 -0.394724 0.324204
+v -0.000146 -0.324541 0.350916
+v -0.000146 -0.394724 0.350916
+v 0.134144 -0.324541 0.324204
+v 0.134144 -0.394724 0.324204
+v 0.247989 -0.324541 0.248135
+v 0.247989 -0.394724 0.248135
+v 0.324058 -0.324541 0.134290
+v 0.324058 -0.394724 0.134290
+v 0.350770 -0.324541 -0.000000
+v 0.350770 -0.394724 -0.000000
+v 0.324058 -0.324541 -0.134290
+v 0.324058 -0.394724 -0.134290
+v 0.247989 -0.324541 -0.248135
+v 0.247989 -0.394724 -0.248135
+v 0.134144 -0.324541 -0.324204
+v 0.134144 -0.394724 -0.324204
+v -0.000146 -0.499999 -0.000000
+v -0.000146 0.026373 -0.210548
+v -0.000146 -0.324541 -0.210548
+v -0.080719 0.026373 -0.194521
+v -0.080719 -0.324541 -0.194521
+v -0.149025 0.026373 -0.148880
+v -0.149026 -0.324541 -0.148880
+v -0.194666 0.026373 -0.080573
+v -0.194666 -0.324541 -0.080573
+v -0.210693 0.026373 -0.000000
+v -0.210693 -0.324541 -0.000000
+v -0.194666 0.026373 0.080573
+v -0.194666 -0.324541 0.080573
+v -0.149025 0.026373 0.148880
+v -0.149026 -0.324541 0.148879
+v -0.080719 0.026373 0.194520
+v -0.080719 -0.324541 0.194520
+v -0.000146 0.026373 0.210547
+v -0.000146 -0.324541 0.210547
+v 0.080427 0.026373 0.194520
+v 0.080427 -0.324541 0.194520
+v 0.148734 0.026373 0.148880
+v 0.148734 -0.324541 0.148879
+v 0.194375 0.026373 0.080573
+v 0.194375 -0.324541 0.080573
+v 0.210402 0.026373 -0.000000
+v 0.210402 -0.324541 -0.000000
+v 0.194375 0.026373 -0.080573
+v 0.194375 -0.324541 -0.080573
+v 0.148734 0.026373 -0.148880
+v 0.148734 -0.324541 -0.148880
+v 0.080427 0.026373 -0.194521
+v 0.080427 -0.324541 -0.194521
+v -0.000146 0.166739 -0.000000
+v -0.000146 0.145684 -0.119446
+v -0.045856 0.145684 -0.110354
+v -0.084607 0.145684 -0.084461
+v -0.110500 0.145684 -0.045710
+v -0.119592 0.145684 -0.000000
+v -0.110500 0.145684 0.045710
+v -0.084607 0.145684 0.084461
+v -0.045856 0.145684 0.110354
+v -0.000146 0.145684 0.119446
+v 0.045564 0.145684 0.110354
+v 0.084315 0.145684 0.084461
+v 0.110208 0.145684 0.045710
+v 0.119300 0.145684 -0.000000
+v 0.110208 0.145684 -0.045710
+v 0.084315 0.145684 -0.084461
+v 0.045564 0.145684 -0.110354
+v -0.000146 0.096556 -0.179170
+v -0.021132 0.166739 -0.050666
+v -0.038924 0.166739 -0.038778
+v -0.050812 0.166739 -0.020987
+v -0.054987 0.166739 0.000000
+v -0.050812 0.166739 0.020987
+v -0.038924 0.166739 0.038778
+v -0.021132 0.166739 0.050666
+v -0.000146 0.166739 0.054841
+v 0.020841 0.166739 0.050666
+v 0.038632 0.166739 0.038778
+v 0.050520 0.166739 0.020987
+v 0.054695 0.166739 -0.000000
+v 0.050520 0.166739 -0.020987
+v 0.038632 0.166739 -0.038778
+v 0.020841 0.166739 -0.050666
+v -0.000146 0.166739 -0.054841
+v -0.068711 0.096556 -0.165531
+v -0.126838 0.096556 -0.126692
+v -0.165677 0.096556 -0.068565
+v -0.179315 0.096556 -0.000000
+v -0.165677 0.096556 0.068565
+v -0.126838 0.096556 0.126692
+v -0.068711 0.096556 0.165531
+v -0.000146 0.096556 0.179170
+v 0.068419 0.096556 0.165531
+v 0.126546 0.096556 0.126692
+v 0.165385 0.096556 0.068565
+v 0.179024 0.096556 -0.000000
+v 0.165385 0.096556 -0.068565
+v 0.126546 0.096556 -0.126692
+v 0.068419 0.096556 -0.165531
+v -0.295718 0.007850 -0.081729
+v -0.283854 -0.013423 -0.078550
+v -0.260127 -0.013423 -0.072192
+v -0.248263 0.007850 -0.069013
+v -0.260127 0.029123 -0.072192
+v -0.283854 0.029123 -0.078550
+v -0.216519 0.007850 -0.218904
+v -0.207834 -0.013423 -0.210219
+v -0.190465 -0.013423 -0.192850
+v -0.181780 0.007850 -0.184165
+v -0.190465 0.029123 -0.192850
+v -0.207834 0.029123 -0.210219
+v -0.079344 0.007850 -0.298102
+v -0.076165 -0.013423 -0.286239
+v -0.069807 -0.013423 -0.262512
+v -0.066628 0.007850 -0.250648
+v -0.069807 0.029123 -0.262512
+v -0.076165 0.029123 -0.286239
+v 0.079053 0.007850 -0.298102
+v 0.075874 -0.013423 -0.286239
+v 0.069516 -0.013423 -0.262512
+v 0.066337 0.007850 -0.250648
+v 0.069516 0.029123 -0.262512
+v 0.075874 0.029123 -0.286239
+v 0.216228 0.007850 -0.218904
+v 0.207543 -0.013423 -0.210219
+v 0.190174 -0.013423 -0.192850
+v 0.181489 0.007850 -0.184165
+v 0.190174 0.029123 -0.192850
+v 0.207543 0.029123 -0.210219
+v 0.295426 0.007850 -0.081729
+v 0.283563 -0.013424 -0.078550
+v 0.259836 -0.013424 -0.072192
+v 0.247972 0.007850 -0.069013
+v 0.259836 0.029123 -0.072192
+v 0.283563 0.029123 -0.078550
+v 0.295426 0.007850 0.076668
+v 0.283563 -0.013424 0.073489
+v 0.259836 -0.013424 0.067131
+v 0.247972 0.007850 0.063953
+v 0.259836 0.029123 0.067131
+v 0.283563 0.029123 0.073489
+v 0.216228 0.007850 0.213843
+v 0.207544 -0.013424 0.205159
+v 0.190174 -0.013424 0.187789
+v 0.181489 0.007850 0.179104
+v 0.190174 0.029123 0.187789
+v 0.207544 0.029123 0.205159
+v 0.079053 0.007850 0.293042
+v 0.075874 -0.013424 0.281178
+v 0.069516 -0.013424 0.257451
+v 0.066337 0.007850 0.245587
+v 0.069516 0.029123 0.257451
+v 0.075874 0.029123 0.281178
+v -0.079344 0.007850 0.293042
+v -0.076165 -0.013424 0.281178
+v -0.069807 -0.013424 0.257451
+v -0.066629 0.007850 0.245587
+v -0.069807 0.029123 0.257451
+v -0.076165 0.029123 0.281178
+v -0.216519 0.007850 0.213843
+v -0.207835 -0.013424 0.205159
+v -0.190465 -0.013424 0.187789
+v -0.181780 0.007850 0.179105
+v -0.190465 0.029123 0.187789
+v -0.207835 0.029123 0.205159
+v -0.295718 0.007850 0.076668
+v -0.283854 -0.013423 0.073489
+v -0.260127 -0.013423 0.067131
+v -0.248263 0.007850 0.063953
+v -0.260127 0.029123 0.067131
+v -0.283854 0.029123 0.073489
+v -0.295718 -0.222743 -0.081729
+v -0.283854 -0.244016 -0.078550
+v -0.260127 -0.244016 -0.072192
+v -0.248263 -0.222743 -0.069013
+v -0.260127 -0.201470 -0.072192
+v -0.283854 -0.201470 -0.078550
+v -0.216519 -0.222743 -0.218904
+v -0.207835 -0.244016 -0.210219
+v -0.190465 -0.244016 -0.192850
+v -0.181780 -0.222743 -0.184165
+v -0.190465 -0.201470 -0.192850
+v -0.207834 -0.201470 -0.210219
+v -0.079344 -0.222743 -0.298102
+v -0.076165 -0.244016 -0.286239
+v -0.069807 -0.244016 -0.262512
+v -0.066629 -0.222743 -0.250648
+v -0.069807 -0.201470 -0.262512
+v -0.076165 -0.201470 -0.286239
+v 0.079053 -0.222743 -0.298102
+v 0.075874 -0.244016 -0.286239
+v 0.069516 -0.244016 -0.262512
+v 0.066337 -0.222743 -0.250648
+v 0.069516 -0.201470 -0.262512
+v 0.075874 -0.201470 -0.286239
+v 0.216228 -0.222743 -0.218904
+v 0.207543 -0.244016 -0.210219
+v 0.190174 -0.244016 -0.192850
+v 0.181489 -0.222743 -0.184165
+v 0.190174 -0.201470 -0.192850
+v 0.207543 -0.201470 -0.210219
+v 0.295426 -0.222743 -0.081729
+v 0.283563 -0.244016 -0.078550
+v 0.259836 -0.244016 -0.072192
+v 0.247972 -0.222743 -0.069013
+v 0.259836 -0.201470 -0.072192
+v 0.283563 -0.201470 -0.078550
+v 0.295426 -0.222743 0.076668
+v 0.283563 -0.244016 0.073489
+v 0.259836 -0.244016 0.067131
+v 0.247972 -0.222743 0.063953
+v 0.259836 -0.201470 0.067131
+v 0.283563 -0.201470 0.073489
+v 0.216228 -0.222743 0.213843
+v 0.207543 -0.244016 0.205159
+v 0.190174 -0.244016 0.187789
+v 0.181489 -0.222743 0.179104
+v 0.190174 -0.201470 0.187789
+v 0.207544 -0.201470 0.205159
+v 0.079053 -0.222743 0.293042
+v 0.075874 -0.244016 0.281178
+v 0.069516 -0.244016 0.257451
+v 0.066337 -0.222743 0.245587
+v 0.069516 -0.201470 0.257451
+v 0.075874 -0.201470 0.281178
+v -0.079344 -0.222743 0.293042
+v -0.076165 -0.244016 0.281178
+v -0.069807 -0.244016 0.257451
+v -0.066629 -0.222743 0.245587
+v -0.069807 -0.201470 0.257451
+v -0.076165 -0.201470 0.281178
+v -0.216519 -0.222743 0.213843
+v -0.207835 -0.244016 0.205159
+v -0.190465 -0.244016 0.187789
+v -0.181780 -0.222743 0.179104
+v -0.190465 -0.201470 0.187789
+v -0.207835 -0.201470 0.205159
+v -0.295718 -0.222743 0.076668
+v -0.283854 -0.244016 0.073489
+v -0.260127 -0.244016 0.067131
+v -0.248263 -0.222743 0.063953
+v -0.260127 -0.201470 0.067131
+v -0.283854 -0.201470 0.073489
+v -0.091347 0.228308 0.021907
+v -0.079252 0.206618 0.018666
+v -0.055060 0.206618 0.012184
+v -0.042964 0.228308 0.008943
+v -0.055060 0.249998 0.012184
+v -0.079252 0.249998 0.018666
+v -0.091347 0.228308 -0.026968
+v -0.079252 0.206619 -0.023727
+v -0.055060 0.206618 -0.017245
+v -0.042964 0.228308 -0.014003
+v -0.055060 0.249998 -0.017245
+v -0.079252 0.249998 -0.023727
+v -0.066910 0.228308 -0.069295
+v -0.058055 0.206619 -0.060440
+v -0.040346 0.206619 -0.042730
+v -0.031491 0.228308 -0.033876
+v -0.040346 0.249998 -0.042730
+v -0.058055 0.249998 -0.060440
+v -0.024583 0.228308 -0.093732
+v -0.021342 0.206619 -0.081636
+v -0.014860 0.206619 -0.057445
+v -0.011619 0.228308 -0.045349
+v -0.014860 0.249998 -0.057445
+v -0.021342 0.249998 -0.081636
+v 0.024292 0.228308 -0.093732
+v 0.021051 0.206619 -0.081636
+v 0.014569 0.206618 -0.057445
+v 0.011328 0.228308 -0.045349
+v 0.014569 0.249998 -0.057445
+v 0.021051 0.249998 -0.081636
+v 0.066619 0.228308 -0.069295
+v 0.057764 0.206618 -0.060440
+v 0.040055 0.206618 -0.042730
+v 0.031200 0.228308 -0.033876
+v 0.040055 0.249998 -0.042730
+v 0.057764 0.249998 -0.060440
+v 0.091056 0.228308 -0.026968
+v 0.078961 0.206618 -0.023727
+v 0.054769 0.206618 -0.017245
+v 0.042673 0.228308 -0.014003
+v 0.054769 0.249998 -0.017245
+v 0.078961 0.249998 -0.023727
+v 0.091056 0.228308 0.021907
+v 0.078961 0.206618 0.018666
+v 0.054769 0.206618 0.012184
+v 0.042673 0.228308 0.008943
+v 0.054769 0.249998 0.012184
+v 0.078961 0.249998 0.018666
+v 0.066619 0.228308 0.064234
+v 0.057764 0.206618 0.055379
+v 0.040055 0.206618 0.037670
+v 0.031200 0.228308 0.028815
+v 0.040055 0.249998 0.037670
+v 0.057764 0.249998 0.055379
+v 0.024292 0.228308 0.088672
+v 0.021051 0.206618 0.076576
+v 0.014569 0.206618 0.052384
+v 0.011328 0.228308 0.040288
+v 0.014569 0.249998 0.052384
+v 0.021051 0.249998 0.076576
+v -0.024583 0.228308 0.088672
+v -0.021342 0.206618 0.076576
+v -0.014860 0.206618 0.052384
+v -0.011619 0.228308 0.040288
+v -0.014860 0.249998 0.052384
+v -0.021342 0.249998 0.076576
+v -0.066910 0.228308 0.064234
+v -0.058055 0.206618 0.055379
+v -0.040346 0.206618 0.037670
+v -0.031491 0.228308 0.028815
+v -0.040346 0.249998 0.037670
+v -0.058055 0.249998 0.055379
+v 0.273430 0.031395 0.022982
+v 0.273430 -0.324539 0.022982
+v 0.295524 0.031395 0.010226
+v 0.295524 -0.324539 0.010226
+v 0.295524 0.031395 -0.015286
+v 0.295524 -0.324539 -0.015286
+v 0.273430 0.031395 -0.028042
+v 0.273430 -0.324539 -0.028042
+v 0.251336 0.031395 -0.015286
+v 0.251336 -0.324539 -0.015286
+v 0.251336 0.031395 0.010226
+v 0.251336 -0.324539 0.010226
+v 0.252375 0.101578 0.022982
+v 0.272787 0.110033 0.010226
+v 0.272787 0.110033 -0.015286
+v 0.252375 0.101578 -0.028042
+v 0.231963 0.093123 -0.015286
+v 0.231963 0.093123 0.010226
+v 0.204462 0.159400 0.022982
+v 0.220085 0.175023 0.010226
+v 0.220085 0.175023 -0.015286
+v 0.204462 0.159400 -0.028042
+v 0.188839 0.143777 -0.015286
+v 0.188839 0.143777 0.010226
+v 0.140798 0.202009 0.022982
+v 0.149253 0.222421 0.010226
+v 0.149253 0.222421 -0.015286
+v 0.140798 0.202009 -0.028042
+v 0.132343 0.181597 -0.015286
+v 0.132343 0.181597 0.010226
+v 0.068939 0.228867 0.022982
+v 0.073212 0.249443 0.010226
+v 0.073212 0.249443 -0.015286
+v 0.068939 0.228867 -0.028042
+v 0.068939 0.206773 -0.015286
+v 0.068939 0.206773 0.010226
+v -0.273619 0.031395 -0.028042
+v -0.273619 -0.324539 -0.028042
+v -0.295713 0.031395 -0.015286
+v -0.295713 -0.324539 -0.015286
+v -0.295713 0.031395 0.010226
+v -0.295713 -0.324539 0.010226
+v -0.273619 0.031395 0.022982
+v -0.273619 -0.324539 0.022981
+v -0.251525 0.031395 0.010226
+v -0.251525 -0.324539 0.010226
+v -0.251525 0.031395 -0.015286
+v -0.251525 -0.324539 -0.015286
+v -0.252564 0.101578 -0.028042
+v -0.272976 0.110033 -0.015286
+v -0.272976 0.110033 0.010226
+v -0.252564 0.101578 0.022982
+v -0.232152 0.093123 0.010226
+v -0.232152 0.093123 -0.015286
+v -0.204651 0.159400 -0.028042
+v -0.220274 0.175023 -0.015286
+v -0.220274 0.175023 0.010226
+v -0.204651 0.159400 0.022982
+v -0.189029 0.143778 0.010226
+v -0.189029 0.143778 -0.015286
+v -0.140988 0.202009 -0.028042
+v -0.149443 0.222421 -0.015286
+v -0.149443 0.222421 0.010226
+v -0.140988 0.202009 0.022982
+v -0.132533 0.181597 0.010226
+v -0.132533 0.181597 -0.015286
+v -0.069129 0.228867 -0.028042
+v -0.073401 0.249443 -0.015286
+v -0.073401 0.249443 0.010226
+v -0.069129 0.228867 0.022982
+v -0.069129 0.206773 0.010226
+v -0.069129 0.206773 -0.015286
+v 0.114574 0.031394 0.247105
+v 0.114574 -0.324539 0.247105
+v 0.136667 0.031394 0.259861
+v 0.136667 -0.324539 0.259861
+v 0.158761 0.031394 0.247105
+v 0.158761 -0.324539 0.247105
+v 0.158761 0.031394 0.221593
+v 0.158761 -0.324539 0.221593
+v 0.136667 0.031394 0.208837
+v 0.136667 -0.324539 0.208837
+v 0.114574 0.031394 0.221593
+v 0.114574 -0.324539 0.221593
+v 0.104046 0.101578 0.228871
+v 0.125299 0.110033 0.240170
+v 0.147393 0.110033 0.227414
+v 0.148234 0.101578 0.203359
+v 0.126981 0.093123 0.192059
+v 0.104887 0.093123 0.204815
+v 0.080090 0.159400 0.187377
+v 0.098948 0.175023 0.194529
+v 0.121042 0.175023 0.181773
+v 0.124278 0.159400 0.161865
+v 0.105419 0.143777 0.154713
+v 0.083325 0.143777 0.167469
+v 0.048258 0.202009 0.132243
+v 0.063532 0.222421 0.133187
+v 0.085626 0.222421 0.120431
+v 0.092446 0.202009 0.106731
+v 0.077171 0.181597 0.105787
+v 0.055077 0.181597 0.118542
+v 0.012328 0.228867 0.070011
+v 0.025511 0.249443 0.067333
+v 0.047605 0.249443 0.054577
+v 0.056516 0.228867 0.044499
+v 0.045469 0.206773 0.050877
+v 0.023375 0.206773 0.063633
+v -0.114763 0.031395 -0.252165
+v -0.114763 -0.324539 -0.252165
+v -0.136857 0.031395 -0.264921
+v -0.136857 -0.324539 -0.264921
+v -0.158951 0.031395 -0.252165
+v -0.158951 -0.324539 -0.252166
+v -0.158951 0.031395 -0.226654
+v -0.158951 -0.324539 -0.226654
+v -0.136857 0.031395 -0.213898
+v -0.136857 -0.324539 -0.213898
+v -0.114763 0.031395 -0.226654
+v -0.114763 -0.324539 -0.226654
+v -0.104236 0.101578 -0.233931
+v -0.125489 0.110033 -0.245231
+v -0.147582 0.110033 -0.232475
+v -0.148423 0.101578 -0.208419
+v -0.127170 0.093123 -0.197120
+v -0.105076 0.093123 -0.209876
+v -0.080279 0.159400 -0.192437
+v -0.099137 0.175023 -0.199589
+v -0.121231 0.175023 -0.186833
+v -0.124467 0.159400 -0.166926
+v -0.105609 0.143778 -0.159774
+v -0.083515 0.143778 -0.172530
+v -0.048447 0.202009 -0.137303
+v -0.063722 0.222421 -0.138247
+v -0.085816 0.222421 -0.125491
+v -0.092635 0.202009 -0.111791
+v -0.077361 0.181597 -0.110847
+v -0.055267 0.181597 -0.123603
+v -0.012518 0.228867 -0.075071
+v -0.025701 0.249443 -0.072393
+v -0.047795 0.249443 -0.059637
+v -0.056706 0.228867 -0.049559
+v -0.045659 0.206773 -0.055937
+v -0.023565 0.206773 -0.068693
+v -0.158951 0.031395 0.221593
+v -0.158951 -0.324539 0.221593
+v -0.158951 0.031395 0.247105
+v -0.158951 -0.324539 0.247105
+v -0.136857 0.031395 0.259861
+v -0.136857 -0.324539 0.259861
+v -0.114763 0.031395 0.247105
+v -0.114763 -0.324539 0.247105
+v -0.114763 0.031395 0.221593
+v -0.114763 -0.324539 0.221593
+v -0.136857 0.031395 0.208837
+v -0.136857 -0.324539 0.208837
+v -0.148423 0.101578 0.203359
+v -0.147583 0.110033 0.227414
+v -0.125489 0.110033 0.240170
+v -0.104236 0.101578 0.228871
+v -0.105077 0.093123 0.204815
+v -0.127170 0.093123 0.192059
+v -0.124467 0.159400 0.161865
+v -0.121231 0.175023 0.181773
+v -0.099137 0.175023 0.194529
+v -0.080279 0.159400 0.187377
+v -0.083515 0.143777 0.167469
+v -0.105609 0.143777 0.154713
+v -0.092635 0.202009 0.106731
+v -0.085816 0.222421 0.120431
+v -0.063722 0.222421 0.133187
+v -0.048447 0.202009 0.132243
+v -0.055267 0.181597 0.118542
+v -0.077361 0.181597 0.105786
+v -0.056706 0.228867 0.044499
+v -0.047795 0.249443 0.054577
+v -0.025701 0.249443 0.067333
+v -0.012518 0.228867 0.070011
+v -0.023565 0.206773 0.063633
+v -0.045659 0.206773 0.050877
+v 0.158762 0.031395 -0.226654
+v 0.158761 -0.324539 -0.226654
+v 0.158762 0.031395 -0.252165
+v 0.158762 -0.324539 -0.252165
+v 0.136668 0.031395 -0.264921
+v 0.136668 -0.324539 -0.264921
+v 0.114574 0.031395 -0.252165
+v 0.114574 -0.324539 -0.252165
+v 0.114574 0.031395 -0.226654
+v 0.114574 -0.324539 -0.226654
+v 0.136668 0.031395 -0.213898
+v 0.136668 -0.324539 -0.213898
+v 0.148234 0.101578 -0.208419
+v 0.147393 0.110033 -0.232475
+v 0.125299 0.110033 -0.245231
+v 0.104046 0.101578 -0.233931
+v 0.104887 0.093123 -0.209876
+v 0.126981 0.093123 -0.197120
+v 0.124278 0.159400 -0.166926
+v 0.121042 0.175023 -0.186833
+v 0.098948 0.175023 -0.199589
+v 0.080090 0.159400 -0.192437
+v 0.083325 0.143778 -0.172530
+v 0.105419 0.143778 -0.159774
+v 0.092446 0.202009 -0.111791
+v 0.085626 0.222421 -0.125491
+v 0.063532 0.222421 -0.138247
+v 0.048258 0.202009 -0.137303
+v 0.055077 0.181597 -0.123603
+v 0.077171 0.181597 -0.110847
+v 0.056516 0.228867 -0.049559
+v 0.047605 0.249443 -0.059637
+v 0.025512 0.249443 -0.072393
+v 0.012328 0.228867 -0.075071
+v 0.023375 0.206773 -0.068693
+v 0.045469 0.206773 -0.055937
+v -0.000146 -0.338235 -0.350916
+v -0.134436 -0.338235 -0.324204
+v -0.248281 -0.338235 -0.248135
+v -0.324350 -0.338235 -0.134290
+v -0.351062 -0.338235 -0.000000
+v -0.324350 -0.338235 0.134290
+v -0.248281 -0.338235 0.248135
+v -0.134436 -0.338235 0.324204
+v -0.000146 -0.338235 0.350916
+v 0.134144 -0.338235 0.324204
+v 0.247989 -0.338235 0.248135
+v 0.324058 -0.338235 0.134290
+v 0.350770 -0.338235 -0.000000
+v 0.324058 -0.338235 -0.134290
+v 0.247989 -0.338235 -0.248135
+v 0.134144 -0.338235 -0.324204
+v -0.000146 -0.271438 -0.049716
+v -0.035300 -0.271438 -0.035154
+v -0.049861 -0.271438 -0.000000
+v -0.035300 -0.271438 0.035154
+v -0.000146 -0.271438 0.049715
+v 0.035008 -0.271438 0.035154
+v 0.049569 -0.271438 -0.000000
+v 0.035008 -0.271438 -0.035154
+v -0.000146 0.108671 -0.039456
+v -0.028045 0.108671 -0.027900
+v -0.039602 0.108671 -0.000000
+v -0.028045 0.108671 0.027899
+v -0.000146 0.108671 0.039456
+v 0.027753 0.108671 0.027899
+v 0.039310 0.108671 -0.000000
+v 0.027753 0.108671 -0.027900
+v -0.093497 -0.045772 0.093351
+v -0.132164 -0.045772 -0.000000
+v 0.093205 -0.045772 -0.093351
+v -0.093497 -0.045772 -0.093351
+v 0.131872 -0.045772 -0.000000
+v 0.093205 -0.045772 0.093351
+v -0.000146 -0.045772 0.132018
+v -0.000146 -0.045772 -0.132018
+v -0.089453 0.034592 0.089307
+v -0.126445 0.034592 -0.000000
+v 0.047697 -0.176411 -0.047843
+v -0.089453 0.034592 -0.089307
+v 0.067514 -0.176411 -0.000000
+v 0.047697 -0.176411 0.047843
+v -0.000146 -0.176411 0.067660
+v -0.000146 0.034592 -0.126299
+v -0.047989 -0.176411 0.047843
+v -0.067806 -0.176411 -0.000000
+v 0.089161 0.034592 -0.089307
+v -0.047989 -0.176411 -0.047843
+v 0.126153 0.034592 -0.000000
+v 0.089161 0.034592 0.089307
+v -0.000146 0.034592 0.126299
+v -0.000146 -0.176411 -0.067660
+v -0.069942 0.082106 0.069795
+v -0.098852 0.082106 -0.000000
+v 0.035008 -0.223925 -0.035154
+v -0.069942 0.082106 -0.069796
+v 0.049569 -0.223925 -0.000000
+v 0.035008 -0.223925 0.035154
+v -0.000146 -0.223925 0.049715
+v -0.000146 0.082106 -0.098706
+v -0.076040 -0.128897 0.075894
+v -0.107477 -0.128897 -0.000000
+v -0.076040 -0.128897 -0.075895
+v -0.000146 -0.128897 -0.107331
+v 0.075748 -0.128897 -0.075895
+v 0.107185 -0.128897 -0.000000
+v 0.075749 -0.128897 0.075894
+v -0.000146 -0.128897 0.107331
+v -0.035300 -0.223925 0.035154
+v -0.049861 -0.223925 -0.000000
+v 0.069650 0.082106 -0.069796
+v -0.035300 -0.223925 -0.035154
+v 0.098560 0.082106 -0.000000
+v 0.069650 0.082106 0.069795
+v -0.000146 0.082106 0.098706
+v -0.000146 -0.223925 -0.049716
+v -0.000146 0.108671 -0.000000
+v -0.000146 -0.324540 -0.154732
+v -0.109558 -0.324540 -0.109412
+v -0.154878 -0.324540 -0.000000
+v -0.109558 -0.324540 0.109412
+v -0.000146 -0.324540 0.154732
+v 0.109266 -0.324540 0.109412
+v 0.154586 -0.324540 -0.000000
+v 0.109266 -0.324540 -0.109412
+v -0.059057 -0.324540 -0.142224
+v -0.142369 -0.324540 -0.058911
+v -0.142369 -0.324540 0.058911
+v -0.059057 -0.324540 0.142223
+v 0.058765 -0.324540 0.142223
+v 0.142077 -0.324540 0.058911
+v 0.142077 -0.324540 -0.058911
+v 0.058765 -0.324540 -0.142224
+vt 0.125000 0.093750
+vt 0.125000 0.031250
+vt 0.187500 0.031250
+vt 0.187500 0.093750
+vt 0.250000 0.031250
+vt 0.250000 0.093750
+vt 0.312500 0.031250
+vt 0.312500 0.093750
+vt 0.375000 0.031250
+vt 0.375000 0.093750
+vt 0.437500 0.031250
+vt 0.437500 0.093750
+vt 0.500000 0.031250
+vt 0.500000 0.093750
+vt 0.500000 0.156250
+vt 0.500000 0.218750
+vt 0.437500 0.218750
+vt 0.437500 0.156250
+vt 0.375000 0.218750
+vt 0.375000 0.156250
+vt 0.312500 0.218750
+vt 0.312500 0.156250
+vt 0.250000 0.218750
+vt 0.250000 0.156250
+vt 0.187500 0.218750
+vt 0.187500 0.156250
+vt 0.125000 0.218750
+vt 0.125000 0.156250
+vt 0.062500 0.218750
+vt 0.062500 0.156250
+vt 0.000000 0.218750
+vt 0.000000 0.156250
+vt 0.062500 0.093750
+vt 0.062500 0.031250
+vt 0.000000 0.093750
+vt 0.000000 0.031250
+vt 0.562500 0.703124
+vt 0.524831 0.703124
+vt 0.524831 0.609374
+vt 0.562500 0.609374
+vt 0.524831 0.515624
+vt 0.562500 0.515624
+vt 0.484375 0.437500
+vt 0.484375 0.475169
+vt 0.390625 0.475169
+vt 0.390625 0.437500
+vt 0.296875 0.475169
+vt 0.296875 0.437500
+vt 0.203125 0.475169
+vt 0.203125 0.437500
+vt 0.109375 0.475169
+vt 0.109375 0.437500
+vt 0.031250 0.515624
+vt 0.068919 0.515624
+vt 0.068919 0.609374
+vt 0.031250 0.609374
+vt 0.068919 0.703124
+vt 0.031250 0.703124
+vt 0.068919 0.796874
+vt 0.031250 0.796874
+vt 0.068919 0.890624
+vt 0.031250 0.890624
+vt 0.109375 0.968750
+vt 0.109375 0.931080
+vt 0.203125 0.931080
+vt 0.203125 0.968750
+vt 0.296875 0.931080
+vt 0.296875 0.968750
+vt 0.390625 0.931080
+vt 0.390625 0.968750
+vt 0.484375 0.931080
+vt 0.484375 0.968750
+vt 0.465358 0.633337
+vt 0.479239 0.703125
+vt 0.296875 0.703125
+vt 0.562500 0.796874
+vt 0.524831 0.796874
+vt 0.562500 0.890624
+vt 0.524831 0.890624
+vt 0.465358 0.772912
+vt 0.425826 0.832076
+vt 0.366663 0.871607
+vt 0.296875 0.885489
+vt 0.227087 0.871607
+vt 0.167924 0.832076
+vt 0.128392 0.772912
+vt 0.114511 0.703125
+vt 0.128392 0.633337
+vt 0.167924 0.574174
+vt 0.227087 0.534642
+vt 0.296875 0.520761
+vt 0.366663 0.534642
+vt 0.425826 0.574174
+vt 0.135686 0.541935
+vt 0.209640 0.492521
+vt 0.384110 0.492521
+vt 0.458064 0.541935
+vt 0.507479 0.615890
+vt 0.507479 0.790359
+vt 0.458064 0.864313
+vt 0.384110 0.913728
+vt 0.209640 0.913728
+vt 0.135686 0.864313
+vt 0.086271 0.790359
+vt 0.086271 0.615890
+vt 0.726902 0.335598
+vt 0.737499 0.342679
+vt 0.662273 0.524291
+vt 0.587902 0.474598
+vt 0.719821 0.325001
+vt 0.538209 0.400227
+vt 0.717334 0.312500
+vt 0.520759 0.312500
+vt 0.719821 0.299999
+vt 0.538209 0.224773
+vt 0.726902 0.289402
+vt 0.587902 0.150402
+vt 0.737499 0.282321
+vt 0.662273 0.100709
+vt 0.750000 0.279834
+vt 0.750000 0.083259
+vt 0.762501 0.282321
+vt 0.837727 0.100709
+vt 0.773098 0.289402
+vt 0.912098 0.150402
+vt 0.780179 0.299999
+vt 0.961791 0.224773
+vt 0.782666 0.312500
+vt 0.979241 0.312500
+vt 0.780179 0.325001
+vt 0.961791 0.400227
+vt 0.773098 0.335598
+vt 0.912098 0.474598
+vt 0.762501 0.342679
+vt 0.837727 0.524291
+vt 0.750000 0.345166
+vt 0.750000 0.541741
+vt 0.571706 0.890624
+vt 0.571706 0.796874
+vt 0.571706 0.703124
+vt 0.390625 0.977955
+vt 0.484375 0.977955
+vt 0.296875 0.977955
+vt 0.203125 0.977955
+vt 0.109375 0.977955
+vt 0.022044 0.796874
+vt 0.022044 0.890624
+vt 0.022044 0.703124
+vt 0.022044 0.609374
+vt 0.022044 0.515624
+vt 0.203125 0.428294
+vt 0.109375 0.428294
+vt 0.296875 0.428294
+vt 0.390625 0.428294
+vt 0.484375 0.428294
+vt 0.571706 0.609374
+vt 0.571706 0.515624
+vt 0.500000 0.875000
+vt 0.437500 0.875000
+vt 0.437500 0.812500
+vt 0.500000 0.812500
+vt 0.437500 0.750000
+vt 0.500000 0.750000
+vt 0.437500 0.687500
+vt 0.500000 0.687500
+vt 0.437500 0.625000
+vt 0.500000 0.625000
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.437500 0.937500
+vt 0.500000 0.937500
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.375000 0.750000
+vt 0.375000 0.687500
+vt 0.375000 0.625000
+vt 0.375000 1.000000
+vt 0.375000 0.937500
+vt 0.312500 0.875000
+vt 0.312500 0.812500
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.312500 0.625000
+vt 0.312500 1.000000
+vt 0.312500 0.937500
+vt 0.250000 0.875000
+vt 0.250000 0.812500
+vt 0.250000 0.750000
+vt 0.250000 0.687500
+vt 0.250000 0.625000
+vt 0.250000 1.000000
+vt 0.250000 0.937500
+vt 0.187500 0.875000
+vt 0.187500 0.812500
+vt 0.187500 0.750000
+vt 0.187500 0.687500
+vt 0.187500 0.625000
+vt 0.187500 1.000000
+vt 0.187500 0.937500
+vt 0.125000 0.875000
+vt 0.125000 0.812500
+vt 0.125000 0.750000
+vt 0.125000 0.687500
+vt 0.125000 0.625000
+vt 0.125000 1.000000
+vt 0.125000 0.937500
+vt 0.062500 0.875000
+vt 0.062500 0.812500
+vt 0.062500 0.750000
+vt 0.062500 0.687500
+vt 0.062500 0.625000
+vt 0.062500 1.000000
+vt 0.062500 0.937500
+vt 0.000000 0.875000
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 0.000000 1.000000
+vt 0.000000 0.937500
+vt 0.750000 0.875000
+vt 0.687500 0.875000
+vt 0.687500 0.812500
+vt 0.750000 0.812500
+vt 0.687500 0.750000
+vt 0.750000 0.750000
+vt 0.687500 0.687500
+vt 0.750000 0.687500
+vt 0.687500 0.625000
+vt 0.750000 0.625000
+vt 0.750000 1.000000
+vt 0.687500 1.000000
+vt 0.687500 0.937500
+vt 0.750000 0.937500
+vt 0.625000 0.875000
+vt 0.625000 0.812500
+vt 0.625000 0.750000
+vt 0.625000 0.687500
+vt 0.625000 0.625000
+vt 0.625000 1.000000
+vt 0.625000 0.937500
+vt 0.562500 0.875000
+vt 0.562500 0.812500
+vt 0.562500 0.750000
+vt 0.562500 0.687500
+vt 0.562500 0.625000
+vt 0.562500 1.000000
+vt 0.562500 0.937500
+vt 0.437500 0.125000
+vt 0.500000 0.125000
+vt 0.500000 0.187500
+vt 0.437500 0.187500
+vt 0.500000 0.250000
+vt 0.437500 0.250000
+vt 0.500000 0.312500
+vt 0.437500 0.312500
+vt 0.500000 0.375000
+vt 0.437500 0.375000
+vt 0.437500 0.000000
+vt 0.500000 0.000000
+vt 0.500000 0.062500
+vt 0.437500 0.062500
+vt 0.562500 0.125000
+vt 0.562500 0.187500
+vt 0.562500 0.250000
+vt 0.562500 0.312500
+vt 0.562500 0.375000
+vt 0.562500 0.000000
+vt 0.562500 0.062500
+vt 0.625000 0.125000
+vt 0.625000 0.187500
+vt 0.625000 0.250000
+vt 0.625000 0.312500
+vt 0.625000 0.375000
+vt 0.625000 0.000000
+vt 0.625000 0.062500
+vt 0.687500 0.125000
+vt 0.687500 0.187500
+vt 0.687500 0.250000
+vt 0.687500 0.312500
+vt 0.687500 0.375000
+vt 0.687500 0.000000
+vt 0.687500 0.062500
+vt 0.750000 0.125000
+vt 0.750000 0.187500
+vt 0.750000 0.250000
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.750000 0.000000
+vt 0.750000 0.062500
+vt 0.812500 0.125000
+vt 0.812500 0.187500
+vt 0.812500 0.250000
+vt 0.812500 0.312500
+vt 0.812500 0.375000
+vt 0.812500 0.000000
+vt 0.812500 0.062500
+vt 0.875000 0.125000
+vt 0.875000 0.187500
+vt 0.875000 0.250000
+vt 0.875000 0.312500
+vt 0.875000 0.375000
+vt 0.875000 0.000000
+vt 0.875000 0.062500
+vt 0.937500 0.125000
+vt 0.937500 0.187500
+vt 0.937500 0.250000
+vt 0.937500 0.312500
+vt 0.937500 0.375000
+vt 0.937500 0.000000
+vt 0.937500 0.062500
+vt 1.000000 0.125000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 1.000000 0.312500
+vt 1.000000 0.375000
+vt 1.000000 0.000000
+vt 1.000000 0.062500
+vt 0.250000 0.125000
+vt 0.312500 0.125000
+vt 0.312500 0.187500
+vt 0.250000 0.187500
+vt 0.312500 0.250000
+vt 0.250000 0.250000
+vt 0.312500 0.312500
+vt 0.250000 0.312500
+vt 0.312500 0.375000
+vt 0.250000 0.375000
+vt 0.250000 0.000000
+vt 0.312500 0.000000
+vt 0.312500 0.062500
+vt 0.250000 0.062500
+vt 0.375000 0.125000
+vt 0.375000 0.187500
+vt 0.375000 0.250000
+vt 0.375000 0.312500
+vt 0.375000 0.375000
+vt 0.375000 0.000000
+vt 0.375000 0.062500
+vt 0.062500 0.250000
+vt 0.062500 0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.250000
+vt 0.375000 0.500000
+vt 0.312500 0.500000
+vt 0.250000 0.500000
+vt 0.187500 0.500000
+vt 0.187500 0.250000
+vt 0.125000 0.250000
+vt 0.125000 0.500000
+vt 0.062500 0.187500
+vt 0.125000 0.187500
+vt 0.062500 0.125000
+vt 0.125000 0.125000
+vt 0.187500 0.187500
+vt 0.000000 0.187500
+vt 0.062500 0.062500
+vt 0.125000 0.062500
+vt 0.187500 0.125000
+vt 0.000000 0.125000
+vt 0.062500 -0.000000
+vt 0.125000 -0.000000
+vt 0.187500 0.062500
+vt 0.000000 0.062500
+vt 0.187500 -0.000000
+vt 0.000000 -0.000000
+vt 1.000000 0.875000
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.875000
+vt 0.500000 0.562500
+vt 0.375000 0.562500
+vt 1.000000 0.562500
+vt 0.875000 0.562500
+vt 0.000000 0.375000
+vt 0.125000 0.375000
+vt 0.125000 0.562500
+vt 0.000000 0.562500
+vt 0.250000 0.562500
+vt 0.750000 0.562500
+vt 0.625000 0.562500
+vt 1.000000 0.750000
+vt 0.875000 0.750000
+vt 0.728932 0.363362
+vt 0.699138 0.333568
+vt 0.699138 0.291432
+vt 0.728932 0.261638
+vt 0.771068 0.261638
+vt 0.800862 0.291432
+vt 0.800862 0.333568
+vt 0.771068 0.363362
+vt 0.500000 0.565189
+vt 0.546095 0.546095
+vt 0.571733 0.673178
+vt 0.565189 0.500000
+vt 0.673178 0.571733
+vt 0.546095 0.453905
+vt 0.673178 0.428267
+vt 0.500000 0.434811
+vt 0.571733 0.326822
+vt 0.453905 0.453905
+vt 0.428267 0.326822
+vt 0.434811 0.500000
+vt 0.326822 0.428267
+vt 0.453905 0.546095
+vt 0.326822 0.571733
+vt 0.428267 0.673178
+vt 0.500000 0.702891
+vt 0.643465 0.643465
+vt 0.702891 0.500000
+vt 0.643465 0.356535
+vt 0.500000 0.297110
+vt 0.356535 0.356535
+vt 0.297109 0.500000
+vt 0.356535 0.643465
+vt 0.062500 0.562500
+vt 0.187500 0.562500
+vt 0.312500 0.562500
+vt 0.437500 0.562500
+vt 0.562500 0.562500
+vt 0.687500 0.562500
+vt 0.812500 0.562500
+vt 0.812500 0.937500
+vt 0.875000 0.937500
+vt 0.536015 0.286015
+vt 0.519491 0.297056
+vt 0.937500 0.937500
+vt 0.937500 0.562500
+vt 1.000000 0.937500
+vt 0.563679 0.403736
+vt 0.500000 0.416403
+vt 0.500000 0.360934
+vt 0.542453 0.352490
+vt 0.547056 0.269491
+vt 0.550933 0.250000
+vt 0.547056 0.230509
+vt 0.536015 0.213985
+vt 0.519491 0.202944
+vt 0.500000 0.199067
+vt 0.480509 0.202944
+vt 0.463985 0.213985
+vt 0.452945 0.230509
+vt 0.449068 0.250000
+vt 0.452945 0.269491
+vt 0.463985 0.286015
+vt 0.480509 0.297056
+vt 0.500000 0.300933
+vt 0.617664 0.367664
+vt 0.578443 0.328443
+vt 0.653736 0.313679
+vt 0.602490 0.292453
+vt 0.666402 0.250000
+vt 0.610935 0.250000
+vt 0.653736 0.186321
+vt 0.602490 0.207547
+vt 0.617664 0.132336
+vt 0.578443 0.171557
+vt 0.563679 0.096265
+vt 0.542453 0.147510
+vt 0.500000 0.083598
+vt 0.500000 0.139065
+vt 0.436321 0.096265
+vt 0.457547 0.147510
+vt 0.382336 0.132336
+vt 0.421558 0.171557
+vt 0.346265 0.186321
+vt 0.397510 0.207547
+vt 0.333598 0.250000
+vt 0.389065 0.250000
+vt 0.346265 0.313679
+vt 0.397510 0.292453
+vt 0.382336 0.367664
+vt 0.421558 0.328443
+vt 0.436321 0.403735
+vt 0.457547 0.352490
+vt 0.812500 1.000000
+vt 0.937500 1.000000
+vn 0.000000 -0.753700 -0.657100
+vn 0.000000 -0.665700 -0.746200
+vn -0.285500 -0.665700 -0.689400
+vn -0.251500 -0.753700 -0.607100
+vn -0.527600 -0.665700 -0.527600
+vn -0.464600 -0.753700 -0.464600
+vn -0.689400 -0.665700 -0.285500
+vn -0.607100 -0.753700 -0.251500
+vn -0.746200 -0.665700 0.000000
+vn -0.657100 -0.753700 0.000000
+vn -0.689400 -0.665700 0.285500
+vn -0.607100 -0.753700 0.251500
+vn -0.527600 -0.665700 0.527600
+vn -0.464600 -0.753700 0.464600
+vn -0.285500 -0.665700 0.689400
+vn -0.251500 -0.753700 0.607100
+vn 0.000000 -0.665700 0.746200
+vn 0.000000 -0.753700 0.657100
+vn 0.285500 -0.665700 0.689400
+vn 0.251500 -0.753700 0.607100
+vn 0.527600 -0.665700 0.527600
+vn 0.464600 -0.753700 0.464600
+vn 0.689400 -0.665700 0.285500
+vn 0.607100 -0.753700 0.251500
+vn 0.746200 -0.665700 0.000000
+vn 0.657100 -0.753700 0.000000
+vn 0.689400 -0.665700 -0.285500
+vn 0.607100 -0.753700 -0.251500
+vn 0.527600 -0.665700 -0.527600
+vn 0.464600 -0.753700 -0.464600
+vn 0.251500 -0.753700 -0.607100
+vn 0.285500 -0.665700 -0.689400
+vn -0.000000 0.000000 -1.000000
+vn -0.382700 0.000000 -0.923900
+vn -0.707100 0.000000 -0.707100
+vn -0.923900 0.000000 -0.382700
+vn -1.000000 0.000000 -0.000000
+vn -0.923900 -0.000000 0.382700
+vn -0.707100 -0.000000 0.707100
+vn -0.382700 -0.000000 0.923900
+vn -0.000000 -0.000000 1.000000
+vn 0.382700 -0.000000 0.923900
+vn 0.707100 -0.000000 0.707100
+vn 0.923900 -0.000000 0.382700
+vn 1.000000 -0.000000 -0.000000
+vn 0.923900 -0.000000 -0.382700
+vn 0.707100 0.000000 -0.707100
+vn 0.000000 -1.000000 0.000000
+vn 0.382700 0.000000 -0.923900
+vn -0.000000 1.000000 -0.000000
+vn -0.285500 0.665700 -0.689400
+vn -0.527600 0.665700 -0.527600
+vn -0.689400 0.665700 -0.285500
+vn -0.746200 0.665700 0.000000
+vn -0.689400 0.665700 0.285500
+vn -0.527600 0.665700 0.527600
+vn -0.285500 0.665700 0.689400
+vn 0.000000 0.665700 0.746200
+vn 0.285500 0.665700 0.689400
+vn 0.527600 0.665700 0.527600
+vn 0.689400 0.665700 0.285500
+vn 0.746200 0.665700 0.000000
+vn 0.689400 0.665700 -0.285500
+vn 0.527600 0.665700 -0.527600
+vn 0.285500 0.665700 -0.689400
+vn 0.000000 0.665700 -0.746200
+vn -0.965900 0.000000 -0.258800
+vn -0.394100 -0.830300 -0.394100
+vn -0.538300 -0.830300 -0.144200
+vn 0.305800 -0.901600 0.305800
+vn 0.417700 -0.901600 0.111900
+vn 0.965900 0.000000 0.258800
+vn 0.305800 0.901600 0.305800
+vn 0.417700 0.901600 0.111900
+vn -0.394100 0.830300 -0.394100
+vn -0.538300 0.830300 -0.144200
+vn -0.258800 0.000000 -0.965900
+vn -0.144200 -0.830300 -0.538300
+vn 0.111900 -0.901600 0.417700
+vn 0.258800 0.000000 0.965900
+vn 0.111900 0.901600 0.417700
+vn -0.144200 0.830300 -0.538300
+vn 0.258800 0.000000 -0.965900
+vn 0.144200 -0.830300 -0.538300
+vn -0.111900 -0.901600 0.417700
+vn -0.258800 0.000000 0.965900
+vn -0.111900 0.901600 0.417700
+vn 0.144200 0.830300 -0.538300
+vn 0.394100 -0.830300 -0.394100
+vn -0.305800 -0.901600 0.305800
+vn -0.305800 0.901600 0.305800
+vn 0.394100 0.830300 -0.394100
+vn 0.965900 0.000000 -0.258800
+vn 0.538300 -0.830300 -0.144200
+vn -0.417700 -0.901600 0.111900
+vn -0.965900 0.000000 0.258800
+vn -0.417700 0.901600 0.111900
+vn 0.538300 0.830300 -0.144200
+vn 0.538300 -0.830300 0.144200
+vn -0.417700 -0.901600 -0.111900
+vn -0.417700 0.901600 -0.111900
+vn 0.538300 0.830300 0.144200
+vn 0.394100 -0.830300 0.394100
+vn -0.305800 -0.901600 -0.305800
+vn -0.305800 0.901600 -0.305800
+vn 0.394100 0.830300 0.394100
+vn 0.144200 -0.830300 0.538300
+vn -0.111900 -0.901600 -0.417700
+vn -0.111900 0.901600 -0.417700
+vn 0.144200 0.830300 0.538300
+vn -0.144200 -0.830300 0.538300
+vn 0.111900 -0.901600 -0.417700
+vn 0.111900 0.901600 -0.417700
+vn -0.144200 0.830300 0.538300
+vn -0.394100 -0.830300 0.394100
+vn 0.305800 -0.901600 -0.305800
+vn 0.305800 0.901600 -0.305800
+vn -0.394100 0.830300 0.394100
+vn -0.538300 -0.830300 0.144200
+vn 0.417700 -0.901600 -0.111900
+vn 0.417700 0.901600 -0.111900
+vn -0.538300 0.830300 0.144200
+vn 0.045500 0.011900 0.998900
+vn 0.866000 -0.000000 0.500000
+vn 0.868100 0.120600 0.481500
+vn 0.866000 0.000000 -0.500000
+vn 0.868100 0.120600 -0.481500
+vn 0.045500 0.011900 -0.998900
+vn -0.866000 0.000000 -0.500000
+vn -0.842900 -0.132100 -0.521600
+vn -0.842900 -0.132100 0.521600
+vn -0.866000 0.000000 0.500000
+vn 0.054500 0.032700 0.998000
+vn -0.742400 -0.411600 0.528600
+vn 0.030300 0.034600 0.998900
+vn -0.569100 -0.639000 0.517500
+vn -0.742400 -0.411600 -0.528600
+vn 0.054500 0.032700 -0.998000
+vn 0.781300 0.406200 -0.473800
+vn 0.781300 0.406200 0.473800
+vn 0.017100 0.032500 0.999300
+vn -0.399700 -0.760900 0.511200
+vn -0.569100 -0.639000 -0.517500
+vn 0.030300 0.034600 -0.998900
+vn 0.592200 0.648300 -0.478500
+vn 0.592200 0.648300 0.478500
+vn 0.025600 0.083400 0.996200
+vn -0.307600 -0.784100 0.539100
+vn -0.399700 -0.760900 -0.511200
+vn 0.017100 0.032500 -0.999300
+vn 0.393300 0.783900 -0.480400
+vn 0.393300 0.783900 0.480400
+vn -0.307600 -0.784100 -0.539100
+vn 0.025600 0.083400 -0.996200
+vn 0.296700 0.828400 -0.475100
+vn 0.296700 0.828400 0.475100
+vn -0.045500 0.011900 -0.998900
+vn -0.868100 0.120600 -0.481500
+vn -0.868100 0.120600 0.481500
+vn -0.045500 0.011900 0.998900
+vn 0.842900 -0.132100 0.521600
+vn 0.842900 -0.132100 -0.521600
+vn -0.054500 0.032700 -0.998000
+vn 0.742400 -0.411600 -0.528600
+vn -0.030300 0.034600 -0.998900
+vn 0.569100 -0.639000 -0.517500
+vn 0.742400 -0.411600 0.528600
+vn -0.054500 0.032700 0.998000
+vn -0.781300 0.406200 0.473800
+vn -0.781300 0.406200 -0.473800
+vn -0.017100 0.032500 -0.999300
+vn 0.399700 -0.760900 -0.511200
+vn 0.569100 -0.639000 0.517500
+vn -0.030300 0.034600 0.998900
+vn -0.592200 0.648300 0.478500
+vn -0.592200 0.648300 -0.478500
+vn -0.025600 0.083400 -0.996200
+vn 0.307600 -0.784100 -0.539100
+vn 0.399700 -0.760900 0.511200
+vn -0.017100 0.032500 0.999300
+vn -0.393300 0.783900 0.480400
+vn -0.393300 0.783900 -0.480400
+vn 0.307600 -0.784100 0.539100
+vn -0.025600 0.083400 0.996200
+vn -0.296700 0.828400 0.475100
+vn -0.296700 0.828400 -0.475100
+vn -0.842300 0.011900 0.538800
+vn 0.017000 0.120600 0.992600
+vn 0.851000 0.120600 0.511000
+vn 0.887800 0.011900 -0.460000
+vn 0.030300 -0.132100 -0.990800
+vn -0.873200 -0.132100 -0.469100
+vn -0.837000 0.032700 0.546200
+vn -0.829000 -0.411600 -0.378600
+vn -0.849900 0.034600 0.525700
+vn -0.732700 -0.639000 -0.234100
+vn 0.086600 -0.411600 -0.907200
+vn 0.891500 0.032700 -0.451800
+vn 0.801000 0.406200 0.439700
+vn -0.019700 0.406200 0.913500
+vn -0.856800 0.032500 0.514500
+vn -0.642500 -0.760900 -0.090500
+vn 0.163600 -0.639000 -0.751600
+vn 0.880200 0.034600 -0.473200
+vn 0.710500 0.648300 0.273600
+vn -0.118300 0.648300 0.752100
+vn -0.849900 0.083400 0.520200
+vn -0.620700 -0.784100 0.003200
+vn 0.242800 -0.760900 -0.601700
+vn 0.874000 0.032500 -0.484800
+vn 0.612700 0.783900 0.100400
+vn -0.219400 0.783900 0.580800
+vn 0.313100 -0.784100 -0.535900
+vn 0.875500 0.083400 -0.476000
+vn 0.559800 0.828400 0.019500
+vn -0.263000 0.828400 0.494500
+vn 0.842300 0.011900 -0.538800
+vn -0.017000 0.120600 -0.992600
+vn -0.851000 0.120600 -0.511000
+vn -0.887800 0.011900 0.460000
+vn -0.030300 -0.132100 0.990800
+vn 0.873200 -0.132100 0.469100
+vn 0.837000 0.032700 -0.546200
+vn 0.829000 -0.411600 0.378600
+vn 0.849900 0.034600 -0.525700
+vn 0.732700 -0.639000 0.234100
+vn -0.086600 -0.411600 0.907200
+vn -0.891500 0.032700 0.451800
+vn -0.801000 0.406200 -0.439700
+vn 0.019700 0.406200 -0.913500
+vn 0.856800 0.032500 -0.514500
+vn 0.642500 -0.760900 0.090500
+vn -0.163600 -0.639000 0.751600
+vn -0.880200 0.034600 0.473200
+vn -0.710500 0.648300 -0.273600
+vn 0.118300 0.648300 -0.752100
+vn 0.849900 0.083400 -0.520200
+vn 0.620700 -0.784100 -0.003200
+vn -0.242800 -0.760900 0.601700
+vn -0.874000 0.032500 0.484800
+vn -0.612700 0.783900 -0.100400
+vn 0.219400 0.783900 -0.580800
+vn -0.313100 -0.784100 0.535900
+vn -0.875500 0.083400 0.476000
+vn -0.559800 0.828400 -0.019500
+vn 0.263000 0.828400 -0.494500
+vn -0.887800 0.011900 -0.460000
+vn -0.851000 0.120600 0.511000
+vn -0.017000 0.120600 0.992600
+vn 0.842300 0.011900 0.538800
+vn 0.873200 -0.132100 -0.469100
+vn -0.030300 -0.132100 -0.990800
+vn -0.891500 0.032700 -0.451800
+vn -0.086600 -0.411600 -0.907200
+vn -0.880200 0.034600 -0.473200
+vn -0.163600 -0.639000 -0.751600
+vn 0.829000 -0.411600 -0.378600
+vn 0.837000 0.032700 0.546200
+vn 0.019700 0.406200 0.913500
+vn -0.801000 0.406200 0.439700
+vn -0.874000 0.032500 -0.484800
+vn -0.242800 -0.760900 -0.601700
+vn 0.732700 -0.639000 -0.234100
+vn 0.849900 0.034600 0.525700
+vn 0.118300 0.648300 0.752100
+vn -0.710500 0.648300 0.273600
+vn -0.875500 0.083400 -0.476000
+vn -0.313100 -0.784100 -0.535900
+vn 0.642500 -0.760900 -0.090500
+vn 0.856800 0.032500 0.514500
+vn 0.219400 0.783900 0.580800
+vn -0.612700 0.783900 0.100400
+vn 0.620700 -0.784100 0.003200
+vn 0.849900 0.083400 0.520200
+vn 0.263000 0.828400 0.494500
+vn -0.559800 0.828400 0.019500
+vn 0.887800 0.011900 0.460000
+vn 0.851000 0.120600 -0.511000
+vn 0.017000 0.120600 -0.992600
+vn -0.842300 0.011900 -0.538800
+vn -0.873200 -0.132100 0.469100
+vn 0.030300 -0.132100 0.990800
+vn 0.891500 0.032700 0.451800
+vn 0.086600 -0.411600 0.907200
+vn 0.880200 0.034600 0.473200
+vn 0.163600 -0.639000 0.751600
+vn -0.829000 -0.411600 0.378600
+vn -0.837000 0.032700 -0.546200
+vn -0.019700 0.406200 -0.913500
+vn 0.801000 0.406200 -0.439700
+vn 0.874000 0.032500 0.484800
+vn 0.242800 -0.760900 0.601700
+vn -0.732700 -0.639000 0.234100
+vn -0.849900 0.034600 -0.525700
+vn -0.118300 0.648300 -0.752100
+vn 0.710500 0.648300 -0.273600
+vn 0.875500 0.083400 0.476000
+vn 0.313100 -0.784100 0.535900
+vn -0.642500 -0.760900 0.090500
+vn -0.856800 0.032500 -0.514500
+vn -0.219400 0.783900 -0.580800
+vn 0.612700 0.783900 -0.100400
+vn -0.620700 -0.784100 -0.003200
+vn -0.849900 0.083400 -0.520200
+vn -0.263000 0.828400 -0.494500
+vn 0.559800 0.828400 -0.019500
+vn -0.499900 0.707200 -0.499900
+vn -0.707000 0.707200 0.000000
+vn -0.257900 0.966200 0.000000
+vn -0.182400 0.966200 -0.182400
+vn 0.707000 0.707200 0.000000
+vn 0.257900 0.966200 0.000000
+vn 0.182400 0.966200 0.182400
+vn 0.499900 0.707200 0.499900
+vn 0.000000 0.966200 0.257900
+vn 0.000000 0.707200 0.707000
+vn -0.182400 0.966200 0.182400
+vn -0.499900 0.707200 0.499900
+vn 0.630400 -0.453000 -0.630400
+vn 0.000000 -0.453000 -0.891400
+vn 0.000000 -0.104200 -0.994500
+vn 0.703200 -0.104200 -0.703200
+vn -0.852400 -0.522800 0.000000
+vn -0.602800 -0.522800 0.602800
+vn -0.630400 -0.453000 0.630400
+vn -0.891400 -0.453000 0.000000
+vn 0.000000 -0.453000 0.891400
+vn 0.000000 -0.104200 0.994500
+vn -0.703200 -0.104200 0.703200
+vn 0.630400 -0.453000 0.630400
+vn 0.703200 -0.104200 0.703200
+vn 0.994500 -0.104200 0.000000
+vn 0.678900 0.279800 -0.678900
+vn 0.960100 0.279800 0.000000
+vn 0.891400 -0.453000 0.000000
+vn 0.000000 0.279800 -0.960100
+vn -0.994500 -0.104200 0.000000
+vn -0.703200 -0.104200 -0.703200
+vn -0.630400 -0.453000 -0.630400
+vn -0.661500 -0.353300 -0.661500
+vn -0.935500 -0.353300 -0.000000
+vn -0.602800 -0.522800 -0.602800
+vn 0.000000 0.707200 -0.707000
+vn 0.499900 0.707200 -0.499900
+vn -0.678900 0.279800 -0.678900
+vn 0.935500 -0.353300 -0.000000
+vn 0.852400 -0.522800 0.000000
+vn 0.602800 -0.522800 0.602800
+vn 0.661500 -0.353300 0.661500
+vn 0.000000 -0.522800 0.852400
+vn -0.000000 -0.353300 0.935500
+vn -0.661500 -0.353300 0.661500
+vn 0.000000 0.279800 0.960100
+vn -0.678900 0.279800 0.678900
+vn 0.678900 0.279800 0.678900
+vn 0.602800 -0.522800 -0.602800
+vn 0.000000 -0.522800 -0.852400
+vn -0.960100 0.279800 0.000000
+vn 0.000000 0.966200 -0.257900
+vn 0.182400 0.966200 -0.182400
+vn 0.661500 -0.353300 -0.661500
+vn -0.000000 -0.353300 -0.935500
+vn 0.562300 0.606300 -0.562300
+vn 0.000000 0.606300 -0.795200
+vn -0.562300 0.606300 -0.562300
+vn 0.795200 0.606300 0.000000
+vn -0.562300 0.606300 0.562300
+vn 0.000000 0.606300 0.795200
+vn 0.562300 0.606300 0.562300
+vn -0.795200 0.606300 0.000000
+vn 0.172900 0.892100 -0.417400
+vn 0.417400 0.892100 -0.172900
+vn 0.417400 0.892100 0.172900
+vn 0.172900 0.892100 0.417400
+vn -0.172900 0.892100 0.417400
+vn -0.417400 0.892100 0.172900
+vn -0.417400 0.892100 -0.172900
+vn -0.172900 0.892100 -0.417400
+vn 0.000000 0.892400 -0.451200
+vn 0.319100 0.892400 -0.319100
+vn 0.451200 0.892400 0.000000
+vn 0.319100 0.892400 0.319100
+vn -0.000000 0.892400 0.451200
+vn -0.319100 0.892400 0.319100
+vn -0.451200 0.892400 0.000000
+vn -0.319100 0.892400 -0.319100
+vn 0.000000 0.203600 -0.979000
+vn -0.374600 0.203600 -0.904500
+vn -0.692300 0.203600 -0.692300
+vn -0.904500 0.203600 -0.374600
+vn -0.979000 0.203600 0.000000
+vn -0.904500 0.203600 0.374600
+vn -0.692300 0.203600 0.692300
+vn -0.374600 0.203600 0.904500
+vn 0.000000 0.203600 0.979000
+vn 0.374600 0.203600 0.904500
+vn 0.692300 0.203600 0.692300
+vn 0.904500 0.203600 0.374600
+vn 0.979000 0.203600 0.000000
+vn 0.904500 0.203600 -0.374600
+vn 0.692300 0.203600 -0.692300
+vn 0.124300 0.984400 -0.124300
+vn 0.067300 0.984400 -0.162500
+vn 0.374600 0.203600 -0.904500
+vn 0.308100 0.592900 -0.743900
+vn 0.000000 0.592900 -0.805200
+vn 0.000000 0.867000 -0.498300
+vn 0.190700 0.867000 -0.460400
+vn 0.162500 0.984400 -0.067300
+vn 0.175800 0.984400 0.000000
+vn 0.162500 0.984400 0.067300
+vn 0.124300 0.984400 0.124300
+vn 0.067300 0.984400 0.162500
+vn 0.000000 0.984400 0.175800
+vn -0.067300 0.984400 0.162500
+vn -0.124300 0.984400 0.124300
+vn -0.162500 0.984400 0.067300
+vn -0.175800 0.984400 0.000000
+vn -0.162500 0.984400 -0.067300
+vn -0.124300 0.984400 -0.124300
+vn -0.067300 0.984400 -0.162500
+vn 0.000000 0.984400 -0.175800
+vn 0.569400 0.592900 -0.569400
+vn 0.352400 0.867000 -0.352400
+vn 0.743900 0.592900 -0.308100
+vn 0.460400 0.867000 -0.190700
+vn 0.805200 0.592900 0.000000
+vn 0.498300 0.867000 0.000000
+vn 0.743900 0.592900 0.308100
+vn 0.460400 0.867000 0.190700
+vn 0.569400 0.592900 0.569400
+vn 0.352400 0.867000 0.352400
+vn 0.308100 0.592900 0.743900
+vn 0.190700 0.867000 0.460400
+vn 0.000000 0.592900 0.805200
+vn 0.000000 0.867000 0.498300
+vn -0.308100 0.592900 0.743900
+vn -0.190700 0.867000 0.460400
+vn -0.569400 0.592900 0.569400
+vn -0.352400 0.867000 0.352400
+vn -0.743900 0.592900 0.308100
+vn -0.460400 0.867000 0.190700
+vn -0.805200 0.592900 0.000000
+vn -0.498300 0.867000 0.000000
+vn -0.743900 0.592900 -0.308100
+vn -0.460400 0.867000 -0.190700
+vn -0.569400 0.592900 -0.569400
+vn -0.352400 0.867000 -0.352400
+vn -0.308100 0.592900 -0.743900
+vn -0.190700 0.867000 -0.460400
+g cage_Cylinder.004_base
+s 1
+f 17/1/1 18/2/2 20/3/3 19/4/4
+f 19/4/4 20/3/3 22/5/5 21/6/6
+f 21/6/6 22/5/5 24/7/7 23/8/8
+f 23/8/8 24/7/7 26/9/9 25/10/10
+f 25/10/10 26/9/9 28/11/11 27/12/12
+f 27/12/12 28/11/11 30/13/13 29/14/14
+f 29/15/14 30/16/13 32/17/15 31/18/16
+f 31/18/16 32/17/15 34/19/17 33/20/18
+f 33/20/18 34/19/17 36/21/19 35/22/20
+f 35/22/20 36/21/19 38/23/21 37/24/22
+f 37/24/22 38/23/21 40/25/23 39/26/24
+f 39/26/24 40/25/23 42/27/25 41/28/26
+f 41/28/26 42/27/25 44/29/27 43/30/28
+f 43/30/28 44/29/27 46/31/29 45/32/30
+f 47/33/31 48/34/32 18/2/2 17/1/1
+f 45/35/30 46/36/29 48/34/32 47/33/31
+f 595/37/33 50/38/2 52/39/3 596/40/34
+f 596/40/34 52/39/3 54/41/5 597/42/35
+f 597/43/35 54/44/5 56/45/7 598/46/36
+f 598/46/36 56/45/7 58/47/9 599/48/37
+f 599/48/37 58/47/9 60/49/11 600/50/38
+f 600/50/38 60/49/11 62/51/13 601/52/39
+f 601/53/39 62/54/13 64/55/15 602/56/40
+f 602/56/40 64/55/15 66/57/17 603/58/41
+f 603/58/41 66/57/17 68/59/19 604/60/42
+f 604/60/42 68/59/19 70/61/21 605/62/43
+f 605/63/43 70/64/21 72/65/23 606/66/44
+f 606/66/44 72/65/23 74/67/25 607/68/45
+f 607/68/45 74/67/25 76/69/27 608/70/46
+f 608/70/46 76/69/27 78/71/29 609/72/47
+f 20/73/3 18/74/2 81/75/48
+f 610/76/49 80/77/32 50/38/2 595/37/33
+f 609/78/47 78/79/29 80/77/32 610/76/49
+f 18/74/2 48/80/32 81/75/48
+f 48/80/32 46/81/29 81/75/48
+f 46/81/29 44/82/27 81/75/48
+f 44/82/27 42/83/25 81/75/48
+f 42/83/25 40/84/23 81/75/48
+f 40/84/23 38/85/21 81/75/48
+f 38/85/21 36/86/19 81/75/48
+f 36/86/19 34/87/17 81/75/48
+f 34/87/17 32/88/15 81/75/48
+f 32/88/15 30/89/13 81/75/48
+f 30/89/13 28/90/11 81/75/48
+f 28/90/11 26/91/9 81/75/48
+f 26/91/9 24/92/7 81/75/48
+f 24/92/7 22/93/5 81/75/48
+f 22/93/5 20/73/3 81/75/48
+f 27/90/12 29/89/14 62/94/13 60/95/11
+f 25/91/10 27/90/12 60/95/11 58/47/9
+f 23/92/8 25/91/10 58/47/9 56/96/7
+f 21/93/6 23/92/8 56/96/7 54/97/5
+f 19/73/4 21/93/6 54/97/5 52/98/3
+f 17/74/1 19/73/4 52/98/3 50/38/2
+f 47/80/31 17/74/1 50/38/2 80/99/32
+f 45/81/30 47/80/31 80/99/32 78/100/29
+f 43/82/28 45/81/30 78/100/29 76/101/27
+f 41/83/26 43/82/28 76/101/27 74/67/25
+f 39/84/24 41/83/26 74/67/25 72/102/23
+f 37/85/22 39/84/24 72/102/23 70/103/21
+f 35/86/20 37/85/22 70/103/21 68/104/19
+f 33/87/18 35/86/20 68/104/19 66/57/17
+f 31/88/16 33/87/18 66/57/17 64/105/15
+f 29/89/14 31/88/16 64/105/15 62/94/13
+f 3/106/50 2/107/50 51/108/51 53/109/52
+f 4/110/50 3/106/50 53/109/52 55/111/53
+f 5/112/50 4/110/50 55/111/53 57/113/54
+f 6/114/50 5/112/50 57/113/54 59/115/55
+f 7/116/50 6/114/50 59/115/55 61/117/56
+f 8/118/50 7/116/50 61/117/56 63/119/57
+f 9/120/50 8/118/50 63/119/57 65/121/58
+f 10/122/50 9/120/50 65/121/58 67/123/59
+f 11/124/50 10/122/50 67/123/59 69/125/60
+f 12/126/50 11/124/50 69/125/60 71/127/61
+f 13/128/50 12/126/50 71/127/61 73/129/62
+f 14/130/50 13/128/50 73/129/62 75/131/63
+f 15/132/50 14/130/50 75/131/63 77/133/64
+f 16/134/50 15/132/50 77/133/64 79/135/65
+f 1/136/50 16/134/50 79/135/65 49/137/66
+f 2/107/50 1/136/50 49/137/66 51/108/51
+f 77/138/64 609/78/47 610/76/49 79/139/65
+f 79/139/65 610/76/49 595/37/33 49/140/66
+f 75/141/63 608/70/46 609/72/47 77/142/64
+f 73/143/62 607/68/45 608/70/46 75/141/63
+f 71/144/61 606/66/44 607/68/45 73/143/62
+f 69/145/60 605/63/43 606/66/44 71/144/61
+f 67/146/59 604/60/42 605/62/43 69/147/60
+f 65/148/58 603/58/41 604/60/42 67/146/59
+f 63/149/57 602/56/40 603/58/41 65/148/58
+f 61/150/56 601/53/39 602/56/40 63/149/57
+f 59/151/55 600/50/38 601/52/39 61/152/56
+f 57/153/54 599/48/37 600/50/38 59/151/55
+f 55/154/53 598/46/36 599/48/37 57/153/54
+f 53/155/52 597/43/35 598/46/36 55/154/53
+f 51/156/51 596/40/34 597/42/35 53/157/52
+f 49/140/66 595/37/33 596/40/34 51/156/51
+g cage_Cylinder.004_cage
+f 163/158/67 169/159/35 170/160/68 164/161/69
+f 164/161/69 170/160/68 171/162/70 165/163/71
+f 165/163/71 171/162/70 172/164/43 166/165/72
+f 166/165/72 172/164/43 173/166/73 167/167/74
+f 167/168/74 173/169/73 174/170/75 168/171/76
+f 163/158/67 168/171/76 174/170/75 169/159/35
+f 169/159/35 175/172/77 176/173/78 170/160/68
+f 170/160/68 176/173/78 177/174/79 171/162/70
+f 171/162/70 177/174/79 178/175/80 172/164/43
+f 172/164/43 178/175/80 179/176/81 173/166/73
+f 173/169/73 179/177/81 180/178/82 174/170/75
+f 174/170/75 180/178/82 175/172/77 169/159/35
+f 175/172/77 181/179/83 182/180/84 176/173/78
+f 176/173/78 182/180/84 183/181/85 177/174/79
+f 177/174/79 183/181/85 184/182/86 178/175/80
+f 178/175/80 184/182/86 185/183/87 179/176/81
+f 179/177/81 185/184/87 186/185/88 180/178/82
+f 180/178/82 186/185/88 181/179/83 175/172/77
+f 181/179/83 187/186/47 188/187/89 182/180/84
+f 182/180/84 188/187/89 189/188/90 183/181/85
+f 183/181/85 189/188/90 190/189/39 184/182/86
+f 184/182/86 190/189/39 191/190/91 185/183/87
+f 185/184/87 191/191/91 192/192/92 186/185/88
+f 186/185/88 192/192/92 187/186/47 181/179/83
+f 187/186/47 193/193/93 194/194/94 188/187/89
+f 188/187/89 194/194/94 195/195/95 189/188/90
+f 189/188/90 195/195/95 196/196/96 190/189/39
+f 190/189/39 196/196/96 197/197/97 191/190/91
+f 191/191/91 197/198/97 198/199/98 192/192/92
+f 192/192/92 198/199/98 193/193/93 187/186/47
+f 193/193/93 199/200/72 200/201/99 194/194/94
+f 194/194/94 200/201/99 201/202/100 195/195/95
+f 195/195/95 201/202/100 202/203/67 196/196/96
+f 196/196/96 202/203/67 203/204/101 197/197/97
+f 197/198/97 203/205/101 204/206/102 198/199/98
+f 198/199/98 204/206/102 199/200/72 193/193/93
+f 199/200/72 205/207/43 206/208/103 200/201/99
+f 200/201/99 206/208/103 207/209/104 201/202/100
+f 201/202/100 207/209/104 208/210/35 202/203/67
+f 202/203/67 208/210/35 209/211/105 203/204/101
+f 203/205/101 209/212/105 210/213/106 204/206/102
+f 204/206/102 210/213/106 205/207/43 199/200/72
+f 205/207/43 211/214/80 212/215/107 206/208/103
+f 206/208/103 212/215/107 213/216/108 207/209/104
+f 207/209/104 213/216/108 214/217/77 208/210/35
+f 208/210/35 214/217/77 215/218/109 209/211/105
+f 209/212/105 215/219/109 216/220/110 210/213/106
+f 210/213/106 216/220/110 211/214/80 205/207/43
+f 211/221/80 217/222/86 218/223/111 212/224/107
+f 212/224/107 218/223/111 219/225/112 213/226/108
+f 213/226/108 219/225/112 220/227/83 214/228/77
+f 214/228/77 220/227/83 221/229/113 215/230/109
+f 215/231/109 221/232/113 222/233/114 216/234/110
+f 216/234/110 222/233/114 217/222/86 211/221/80
+f 217/222/86 223/235/39 224/236/115 218/223/111
+f 218/223/111 224/236/115 225/237/116 219/225/112
+f 219/225/112 225/237/116 226/238/47 220/227/83
+f 220/227/83 226/238/47 227/239/117 221/229/113
+f 221/232/113 227/240/117 228/241/118 222/233/114
+f 222/233/114 228/241/118 223/235/39 217/222/86
+f 223/235/39 229/242/96 230/243/119 224/236/115
+f 224/236/115 230/243/119 231/244/120 225/237/116
+f 225/237/116 231/244/120 232/245/93 226/238/47
+f 226/238/47 232/245/93 233/246/121 227/239/117
+f 227/240/117 233/247/121 234/248/122 228/241/118
+f 228/241/118 234/248/122 229/242/96 223/235/39
+f 229/242/96 163/158/67 164/161/69 230/243/119
+f 230/243/119 164/161/69 165/163/71 231/244/120
+f 231/244/120 165/163/71 166/165/72 232/245/93
+f 232/245/93 166/165/72 167/167/74 233/246/121
+f 233/247/121 167/168/74 168/171/76 234/248/122
+f 234/248/122 168/171/76 163/158/67 229/242/96
+f 235/158/67 241/159/35 242/160/68 236/161/69
+f 236/161/69 242/160/68 243/162/70 237/163/71
+f 237/163/71 243/162/70 244/164/43 238/165/72
+f 238/165/72 244/164/43 245/166/73 239/167/74
+f 239/168/74 245/169/73 246/170/75 240/171/76
+f 235/158/67 240/171/76 246/170/75 241/159/35
+f 241/159/35 247/172/77 248/173/78 242/160/68
+f 242/160/68 248/173/78 249/174/79 243/162/70
+f 243/162/70 249/174/79 250/175/80 244/164/43
+f 244/164/43 250/175/80 251/176/81 245/166/73
+f 245/169/73 251/177/81 252/178/82 246/170/75
+f 246/170/75 252/178/82 247/172/77 241/159/35
+f 247/172/77 253/179/83 254/180/84 248/173/78
+f 248/173/78 254/180/84 255/181/85 249/174/79
+f 249/174/79 255/181/85 256/182/86 250/175/80
+f 250/175/80 256/182/86 257/183/87 251/176/81
+f 251/177/81 257/184/87 258/185/88 252/178/82
+f 252/178/82 258/185/88 253/179/83 247/172/77
+f 253/179/83 259/186/47 260/187/89 254/180/84
+f 254/180/84 260/187/89 261/188/90 255/181/85
+f 255/181/85 261/188/90 262/189/39 256/182/86
+f 256/182/86 262/189/39 263/190/91 257/183/87
+f 257/184/87 263/191/91 264/192/92 258/185/88
+f 258/185/88 264/192/92 259/186/47 253/179/83
+f 259/186/47 265/193/93 266/194/94 260/187/89
+f 260/187/89 266/194/94 267/195/95 261/188/90
+f 261/188/90 267/195/95 268/196/96 262/189/39
+f 262/189/39 268/196/96 269/197/97 263/190/91
+f 263/191/91 269/198/97 270/199/98 264/192/92
+f 264/192/92 270/199/98 265/193/93 259/186/47
+f 265/193/93 271/200/72 272/201/99 266/194/94
+f 266/194/94 272/201/99 273/202/100 267/195/95
+f 267/195/95 273/202/100 274/203/67 268/196/96
+f 268/196/96 274/203/67 275/204/101 269/197/97
+f 269/198/97 275/205/101 276/206/102 270/199/98
+f 270/199/98 276/206/102 271/200/72 265/193/93
+f 271/200/72 277/207/43 278/208/103 272/201/99
+f 272/201/99 278/208/103 279/209/104 273/202/100
+f 273/202/100 279/209/104 280/210/35 274/203/67
+f 274/203/67 280/210/35 281/211/105 275/204/101
+f 275/205/101 281/212/105 282/213/106 276/206/102
+f 276/206/102 282/213/106 277/207/43 271/200/72
+f 277/207/43 283/214/80 284/215/107 278/208/103
+f 278/208/103 284/215/107 285/216/108 279/209/104
+f 279/209/104 285/216/108 286/217/77 280/210/35
+f 280/210/35 286/217/77 287/218/109 281/211/105
+f 281/212/105 287/219/109 288/220/110 282/213/106
+f 282/213/106 288/220/110 283/214/80 277/207/43
+f 283/221/80 289/222/86 290/223/111 284/224/107
+f 284/224/107 290/223/111 291/225/112 285/226/108
+f 285/226/108 291/225/112 292/227/83 286/228/77
+f 286/228/77 292/227/83 293/229/113 287/230/109
+f 287/231/109 293/232/113 294/233/114 288/234/110
+f 288/234/110 294/233/114 289/222/86 283/221/80
+f 289/222/86 295/235/39 296/236/115 290/223/111
+f 290/223/111 296/236/115 297/237/116 291/225/112
+f 291/225/112 297/237/116 298/238/47 292/227/83
+f 292/227/83 298/238/47 299/239/117 293/229/113
+f 293/232/113 299/240/117 300/241/118 294/233/114
+f 294/233/114 300/241/118 295/235/39 289/222/86
+f 295/235/39 301/242/96 302/243/119 296/236/115
+f 296/236/115 302/243/119 303/244/120 297/237/116
+f 297/237/116 303/244/120 304/245/93 298/238/47
+f 298/238/47 304/245/93 305/246/121 299/239/117
+f 299/240/117 305/247/121 306/248/122 300/241/118
+f 300/241/118 306/248/122 301/242/96 295/235/39
+f 301/242/96 235/158/67 236/161/69 302/243/119
+f 302/243/119 236/161/69 237/163/71 303/244/120
+f 303/244/120 237/163/71 238/165/72 304/245/93
+f 304/245/93 238/165/72 239/167/74 305/246/121
+f 305/247/121 239/168/74 240/171/76 306/248/122
+f 306/248/122 240/171/76 235/158/67 301/242/96
+f 307/249/96 313/250/67 314/251/69 308/252/119
+f 308/252/119 314/251/69 315/253/71 309/254/120
+f 309/254/120 315/253/71 316/255/72 310/256/93
+f 310/256/93 316/255/72 317/257/74 311/258/121
+f 311/259/121 317/260/74 318/261/76 312/262/122
+f 307/249/96 312/262/122 318/261/76 313/250/67
+f 313/250/67 319/263/35 320/264/68 314/251/69
+f 314/251/69 320/264/68 321/265/70 315/253/71
+f 315/253/71 321/265/70 322/266/43 316/255/72
+f 316/255/72 322/266/43 323/267/73 317/257/74
+f 317/260/74 323/268/73 324/269/75 318/261/76
+f 318/261/76 324/269/75 319/263/35 313/250/67
+f 319/263/35 325/270/77 326/271/78 320/264/68
+f 320/264/68 326/271/78 327/272/79 321/265/70
+f 321/265/70 327/272/79 328/273/80 322/266/43
+f 322/266/43 328/273/80 329/274/81 323/267/73
+f 323/268/73 329/275/81 330/276/82 324/269/75
+f 324/269/75 330/276/82 325/270/77 319/263/35
+f 325/270/77 331/277/83 332/278/84 326/271/78
+f 326/271/78 332/278/84 333/279/85 327/272/79
+f 327/272/79 333/279/85 334/280/86 328/273/80
+f 328/273/80 334/280/86 335/281/87 329/274/81
+f 329/275/81 335/282/87 336/283/88 330/276/82
+f 330/276/82 336/283/88 331/277/83 325/270/77
+f 331/277/83 337/284/47 338/285/89 332/278/84
+f 332/278/84 338/285/89 339/286/90 333/279/85
+f 333/279/85 339/286/90 340/287/39 334/280/86
+f 334/280/86 340/287/39 341/288/91 335/281/87
+f 335/282/87 341/289/91 342/290/92 336/283/88
+f 336/283/88 342/290/92 337/284/47 331/277/83
+f 337/284/47 343/291/93 344/292/94 338/285/89
+f 338/285/89 344/292/94 345/293/95 339/286/90
+f 339/286/90 345/293/95 346/294/96 340/287/39
+f 340/287/39 346/294/96 347/295/97 341/288/91
+f 341/289/91 347/296/97 348/297/98 342/290/92
+f 342/290/92 348/297/98 343/291/93 337/284/47
+f 343/291/93 349/298/72 350/299/99 344/292/94
+f 344/292/94 350/299/99 351/300/100 345/293/95
+f 345/293/95 351/300/100 352/301/67 346/294/96
+f 346/294/96 352/301/67 353/302/101 347/295/97
+f 347/296/97 353/303/101 354/304/102 348/297/98
+f 348/297/98 354/304/102 349/298/72 343/291/93
+f 349/298/72 355/305/43 356/306/103 350/299/99
+f 350/299/99 356/306/103 357/307/104 351/300/100
+f 351/300/100 357/307/104 358/308/35 352/301/67
+f 352/301/67 358/308/35 359/309/105 353/302/101
+f 353/303/101 359/310/105 360/311/106 354/304/102
+f 354/304/102 360/311/106 355/305/43 349/298/72
+f 355/305/43 361/312/80 362/313/107 356/306/103
+f 356/306/103 362/313/107 363/314/108 357/307/104
+f 357/307/104 363/314/108 364/315/77 358/308/35
+f 358/308/35 364/315/77 365/316/109 359/309/105
+f 359/310/105 365/317/109 366/318/110 360/311/106
+f 360/311/106 366/318/110 361/312/80 355/305/43
+f 361/319/80 367/320/86 368/321/111 362/322/107
+f 362/322/107 368/321/111 369/323/112 363/324/108
+f 363/324/108 369/323/112 370/325/83 364/326/77
+f 364/326/77 370/325/83 371/327/113 365/328/109
+f 365/329/109 371/330/113 372/331/114 366/332/110
+f 366/332/110 372/331/114 367/320/86 361/319/80
+f 367/320/86 373/333/39 374/334/115 368/321/111
+f 368/321/111 374/334/115 375/335/116 369/323/112
+f 369/323/112 375/335/116 376/336/47 370/325/83
+f 370/325/83 376/336/47 377/337/117 371/327/113
+f 371/330/113 377/338/117 378/339/118 372/331/114
+f 372/331/114 378/339/118 373/333/39 367/320/86
+f 373/333/39 307/249/96 308/252/119 374/334/115
+f 374/334/115 308/252/119 309/254/120 375/335/116
+f 375/335/116 309/254/120 310/256/93 376/336/47
+f 376/336/47 310/256/93 311/258/121 377/337/117
+f 377/338/117 311/259/121 312/262/122 378/339/118
+f 378/339/118 312/262/122 307/249/96 373/333/39
+f 379/340/123 380/341/41 382/342/124 381/343/125
+f 381/335/125 382/344/124 384/345/126 383/323/127
+f 383/323/127 384/345/126 386/346/33 385/324/128
+f 385/324/128 386/346/33 388/347/129 387/348/130
+f 389/349/131 390/350/132 380/341/41 379/340/123
+f 387/348/130 388/347/129 390/350/132 389/349/131
+f 389/349/131 379/340/123 391/351/133 396/352/134
+f 396/352/134 391/351/133 397/353/135 402/354/136
+f 387/348/130 389/349/131 396/352/134 395/355/137
+f 385/324/128 387/348/130 395/355/137 394/322/138
+f 383/323/127 385/324/128 394/322/138 393/321/139
+f 381/335/125 383/323/127 393/321/139 392/334/140
+f 379/340/123 381/343/125 392/356/140 391/351/133
+f 402/354/136 397/353/135 403/357/141 408/358/142
+f 395/355/137 396/352/134 402/354/136 401/359/143
+f 394/322/138 395/355/137 401/359/143 400/319/144
+f 393/321/139 394/322/138 400/319/144 399/320/145
+f 392/334/140 393/321/139 399/320/145 398/333/146
+f 391/351/133 392/356/140 398/360/146 397/353/135
+f 408/358/142 403/357/141 409/361/147 414/362/148
+f 401/359/143 402/354/136 408/358/142 407/363/149
+f 400/319/144 401/359/143 407/363/149 406/332/150
+f 399/320/145 400/319/144 406/332/150 405/331/151
+f 398/333/146 399/320/145 405/331/151 404/339/152
+f 397/353/135 398/360/146 404/364/152 403/357/141
+f 407/363/149 408/358/142 414/362/148 413/365/153
+f 406/332/150 407/363/149 413/365/153 412/329/154
+f 405/331/151 406/332/150 412/329/154 411/330/155
+f 404/339/152 405/331/151 411/330/155 410/338/156
+f 403/357/141 404/364/152 410/366/156 409/361/147
+f 415/340/157 416/341/33 418/342/129 417/343/158
+f 417/335/158 418/344/129 420/345/132 419/323/159
+f 419/323/159 420/345/132 422/346/41 421/324/160
+f 421/324/160 422/346/41 424/347/124 423/348/161
+f 425/349/162 426/350/126 416/341/33 415/340/157
+f 423/348/161 424/347/124 426/350/126 425/349/162
+f 425/349/162 415/340/157 427/351/163 432/352/164
+f 432/352/164 427/351/163 433/353/165 438/354/166
+f 423/348/161 425/349/162 432/352/164 431/355/167
+f 421/324/160 423/348/161 431/355/167 430/322/168
+f 419/323/159 421/324/160 430/322/168 429/321/169
+f 417/335/158 419/323/159 429/321/169 428/334/170
+f 415/340/157 417/343/158 428/356/170 427/351/163
+f 438/354/166 433/353/165 439/357/171 444/358/172
+f 431/355/167 432/352/164 438/354/166 437/359/173
+f 430/322/168 431/355/167 437/359/173 436/319/174
+f 429/321/169 430/322/168 436/319/174 435/320/175
+f 428/334/170 429/321/169 435/320/175 434/333/176
+f 427/351/163 428/356/170 434/360/176 433/353/165
+f 444/358/172 439/357/171 445/361/177 450/362/178
+f 437/359/173 438/354/166 444/358/172 443/363/179
+f 436/319/174 437/359/173 443/363/179 442/332/180
+f 435/320/175 436/319/174 442/332/180 441/331/181
+f 434/333/176 435/320/175 441/331/181 440/339/182
+f 433/353/165 434/360/176 440/364/182 439/357/171
+f 443/363/179 444/358/172 450/362/178 449/365/183
+f 442/332/180 443/363/179 449/365/183 448/329/184
+f 441/331/181 442/332/180 448/329/184 447/330/185
+f 440/339/182 441/331/181 447/330/185 446/338/186
+f 439/357/171 440/364/182 446/366/186 445/361/177
+f 451/340/187 452/341/132 454/342/41 453/343/188
+f 453/335/188 454/344/41 456/345/124 455/323/189
+f 455/323/189 456/345/124 458/346/126 457/324/190
+f 457/324/190 458/346/126 460/347/33 459/348/191
+f 461/349/192 462/350/129 452/341/132 451/340/187
+f 459/348/191 460/347/33 462/350/129 461/349/192
+f 461/349/192 451/340/187 463/351/193 468/352/194
+f 468/352/194 463/351/193 469/353/195 474/354/196
+f 459/348/191 461/349/192 468/352/194 467/355/197
+f 457/324/190 459/348/191 467/355/197 466/322/198
+f 455/323/189 457/324/190 466/322/198 465/321/199
+f 453/335/188 455/323/189 465/321/199 464/334/200
+f 451/340/187 453/343/188 464/356/200 463/351/193
+f 474/354/196 469/353/195 475/357/201 480/358/202
+f 467/355/197 468/352/194 474/354/196 473/359/203
+f 466/322/198 467/355/197 473/359/203 472/319/204
+f 465/321/199 466/322/198 472/319/204 471/320/205
+f 464/334/200 465/321/199 471/320/205 470/333/206
+f 463/351/193 464/356/200 470/360/206 469/353/195
+f 480/358/202 475/357/201 481/361/207 486/362/208
+f 473/359/203 474/354/196 480/358/202 479/363/209
+f 472/319/204 473/359/203 479/363/209 478/332/210
+f 471/320/205 472/319/204 478/332/210 477/331/211
+f 470/333/206 471/320/205 477/331/211 476/339/212
+f 469/353/195 470/360/206 476/364/212 475/357/201
+f 479/363/209 480/358/202 486/362/208 485/365/213
+f 478/332/210 479/363/209 485/365/213 484/329/214
+f 477/331/211 478/332/210 484/329/214 483/330/215
+f 476/339/212 477/331/211 483/330/215 482/338/216
+f 475/357/201 476/364/212 482/366/216 481/361/207
+f 487/340/217 488/341/126 490/342/33 489/343/218
+f 489/335/218 490/344/33 492/345/129 491/323/219
+f 491/323/219 492/345/129 494/346/132 493/324/220
+f 493/324/220 494/346/132 496/347/41 495/348/221
+f 497/349/222 498/350/124 488/341/126 487/340/217
+f 495/348/221 496/347/41 498/350/124 497/349/222
+f 497/349/222 487/340/217 499/351/223 504/352/224
+f 504/352/224 499/351/223 505/353/225 510/354/226
+f 495/348/221 497/349/222 504/352/224 503/355/227
+f 493/324/220 495/348/221 503/355/227 502/322/228
+f 491/323/219 493/324/220 502/322/228 501/321/229
+f 489/335/218 491/323/219 501/321/229 500/334/230
+f 487/340/217 489/343/218 500/356/230 499/351/223
+f 510/354/226 505/353/225 511/357/231 516/358/232
+f 503/355/227 504/352/224 510/354/226 509/359/233
+f 502/322/228 503/355/227 509/359/233 508/319/234
+f 501/321/229 502/322/228 508/319/234 507/320/235
+f 500/334/230 501/321/229 507/320/235 506/333/236
+f 499/351/223 500/356/230 506/360/236 505/353/225
+f 516/358/232 511/357/231 517/361/237 522/362/238
+f 509/359/233 510/354/226 516/358/232 515/363/239
+f 508/319/234 509/359/233 515/363/239 514/332/240
+f 507/320/235 508/319/234 514/332/240 513/331/241
+f 506/333/236 507/320/235 513/331/241 512/339/242
+f 505/353/225 506/360/236 512/364/242 511/357/231
+f 515/363/239 516/358/232 522/362/238 521/365/243
+f 514/332/240 515/363/239 521/365/243 520/329/244
+f 513/331/241 514/332/240 520/329/244 519/330/245
+f 512/339/242 513/331/241 519/330/245 518/338/246
+f 511/357/231 512/364/242 518/366/246 517/361/237
+f 523/340/247 524/341/129 526/342/132 525/343/248
+f 525/335/248 526/344/132 528/345/41 527/323/249
+f 527/323/249 528/345/41 530/346/124 529/324/250
+f 529/324/250 530/346/124 532/347/126 531/348/251
+f 533/349/252 534/350/33 524/341/129 523/340/247
+f 531/348/251 532/347/126 534/350/33 533/349/252
+f 533/349/252 523/340/247 535/351/253 540/352/254
+f 540/352/254 535/351/253 541/353/255 546/354/256
+f 531/348/251 533/349/252 540/352/254 539/355/257
+f 529/324/250 531/348/251 539/355/257 538/322/258
+f 527/323/249 529/324/250 538/322/258 537/321/259
+f 525/335/248 527/323/249 537/321/259 536/334/260
+f 523/340/247 525/343/248 536/356/260 535/351/253
+f 546/354/256 541/353/255 547/357/261 552/358/262
+f 539/355/257 540/352/254 546/354/256 545/359/263
+f 538/322/258 539/355/257 545/359/263 544/319/264
+f 537/321/259 538/322/258 544/319/264 543/320/265
+f 536/334/260 537/321/259 543/320/265 542/333/266
+f 535/351/253 536/356/260 542/360/266 541/353/255
+f 552/358/262 547/357/261 553/361/267 558/362/268
+f 545/359/263 546/354/256 552/358/262 551/363/269
+f 544/319/264 545/359/263 551/363/269 550/332/270
+f 543/320/265 544/319/264 550/332/270 549/331/271
+f 542/333/266 543/320/265 549/331/271 548/339/272
+f 541/353/255 542/360/266 548/364/272 547/357/261
+f 551/363/269 552/358/262 558/362/268 557/365/273
+f 550/332/270 551/363/269 557/365/273 556/329/274
+f 549/331/271 550/332/270 556/329/274 555/330/275
+f 548/339/272 549/331/271 555/330/275 554/338/276
+f 547/357/261 548/364/272 554/366/276 553/361/267
+f 559/340/277 560/341/124 562/342/126 561/343/278
+f 561/335/278 562/344/126 564/345/33 563/323/279
+f 563/323/279 564/345/33 566/346/129 565/324/280
+f 565/324/280 566/346/129 568/347/132 567/348/281
+f 569/349/282 570/350/41 560/341/124 559/340/277
+f 567/348/281 568/347/132 570/350/41 569/349/282
+f 569/349/282 559/340/277 571/351/283 576/352/284
+f 576/352/284 571/351/283 577/353/285 582/354/286
+f 567/348/281 569/349/282 576/352/284 575/355/287
+f 565/324/280 567/348/281 575/355/287 574/322/288
+f 563/323/279 565/324/280 574/322/288 573/321/289
+f 561/335/278 563/323/279 573/321/289 572/334/290
+f 559/340/277 561/343/278 572/356/290 571/351/283
+f 582/354/286 577/353/285 583/357/291 588/358/292
+f 575/355/287 576/352/284 582/354/286 581/359/293
+f 574/322/288 575/355/287 581/359/293 580/319/294
+f 573/321/289 574/322/288 580/319/294 579/320/295
+f 572/334/290 573/321/289 579/320/295 578/333/296
+f 571/351/283 572/356/290 578/360/296 577/353/285
+f 588/358/292 583/357/291 589/361/297 594/362/298
+f 581/359/293 582/354/286 588/358/292 587/363/299
+f 580/319/294 581/359/293 587/363/299 586/332/300
+f 579/320/295 580/319/294 586/332/300 585/331/301
+f 578/333/296 579/320/295 585/331/301 584/339/302
+f 577/353/285 578/360/296 584/364/302 583/357/291
+f 587/363/299 588/358/292 594/362/298 593/365/303
+f 586/332/300 587/363/299 593/365/303 592/329/304
+f 585/331/301 586/332/300 592/329/304 591/330/305
+f 584/339/302 585/331/301 591/330/305 590/338/306
+f 583/357/291 584/364/302 590/366/306 589/361/297
+g cage_Cylinder.004_bulb
+f 654/235/307 652/221/308 621/231/309 620/240/310
+f 671/186/311 625/191/312 624/205/313 672/200/314
+f 672/200/314 624/205/313 623/219/315 673/214/316
+f 673/367/316 623/368/315 622/369/317 651/370/318
+f 663/337/319 662/257/320 634/371/321 629/372/322
+f 644/286/323 643/300/324 659/302/325 660/288/326
+f 659/302/325 666/316/327 633/373/328 627/374/329
+f 666/375/327 665/376/330 632/377/331 633/378/328
+f 631/379/332 629/372/322 645/174/333 647/188/334
+f 665/376/330 664/328/335 631/379/332 632/377/331
+f 629/372/322 634/371/321 642/163/336 645/174/333
+f 664/328/335 663/337/319 629/372/322 631/379/332
+f 660/288/326 628/380/337 630/381/338 661/274/339
+f 670/270/340 668/284/341 644/286/323 646/272/342
+f 645/174/333 642/163/336 658/158/343 669/172/344
+f 642/163/336 638/237/345 654/235/307 658/158/343
+f 647/188/334 645/174/333 669/172/344 671/186/311
+f 655/319/346 639/324/347 640/349/348 656/354/349
+f 656/354/349 640/349/348 641/343/350 657/360/351
+f 657/312/351 641/314/350 643/300/324 667/298/352
+f 668/284/341 667/298/352 643/300/324 644/286/323
+f 652/221/308 651/370/318 622/369/317 621/231/309
+f 627/374/329 633/373/328 649/382/353 635/383/354
+f 633/378/328 632/377/331 648/202/355 649/216/353
+f 639/324/347 637/335/356 663/337/319 664/328/335
+f 632/377/331 631/379/332 647/188/334 648/202/355
+f 637/335/356 650/253/357 662/257/320 663/337/319
+f 661/274/339 630/381/338 634/371/321 662/257/320
+f 630/381/338 628/380/337 636/226/358 638/237/345
+f 619/384/359 620/385/310 675/287/50
+f 669/172/344 626/177/360 625/191/312 671/186/311
+f 658/158/343 619/168/359 626/177/360 669/172/344
+f 658/158/343 654/235/307 620/240/310 619/168/359
+f 646/272/342 644/286/323 660/288/326 661/274/339
+f 650/253/357 646/272/342 661/274/339 662/257/320
+f 634/371/321 630/381/338 638/237/345 642/163/336
+f 636/226/358 635/383/354 651/370/318 652/221/308
+f 640/349/348 639/324/347 664/328/335 665/376/330
+f 641/343/350 640/349/348 665/376/330 666/375/327
+f 643/300/324 641/314/350 666/316/327 659/302/325
+f 659/302/325 627/374/329 628/380/337 660/288/326
+f 628/380/337 627/374/329 635/383/354 636/226/358
+f 635/383/354 649/382/353 673/367/316 651/370/318
+f 649/216/353 648/202/355 672/200/314 673/214/316
+f 653/333/361 637/335/356 639/324/347 655/319/346
+f 648/202/355 647/188/334 671/186/311 672/200/314
+f 674/250/362 650/253/357 637/335/356 653/333/361
+f 674/250/362 670/270/340 646/272/342 650/253/357
+f 638/237/345 636/226/358 652/221/308 654/235/307
+f 620/385/310 621/386/309 675/287/50
+f 621/386/309 622/387/317 675/287/50
+f 622/387/317 623/388/315 675/287/50
+f 623/388/315 624/389/313 675/287/50
+f 624/389/313 625/390/312 675/287/50
+f 625/390/312 626/391/360 675/287/50
+f 626/391/360 619/384/359 675/287/50
+g cage_Cylinder.004_brass
+f 618/338/363 611/260/364 674/250/33 653/333/47
+f 611/260/364 612/275/365 670/270/35 674/250/33
+f 617/329/366 618/338/363 653/333/47 655/319/45
+f 614/303/367 615/317/368 657/312/41 667/298/39
+f 615/366/368 616/362/369 656/354/43 657/360/41
+f 616/362/369 617/329/366 655/319/45 656/354/43
+f 612/275/365 613/289/370 668/284/37 670/270/35
+f 613/289/370 614/303/367 667/298/39 668/284/37
+f 611/392/364 618/393/363 691/394/371
+f 618/393/363 617/395/366 690/396/372
+f 617/395/366 616/397/369 689/398/373
+f 616/397/369 615/399/368 688/400/374
+f 615/399/368 614/401/367 687/402/375
+f 614/401/367 613/403/370 686/404/376
+f 613/403/370 612/405/365 685/406/377
+f 612/405/365 611/392/364 684/407/378
+f 691/394/371 676/408/379 611/392/364
+f 618/393/363 683/409/380 691/394/371
+f 690/396/372 683/409/380 618/393/363
+f 617/395/366 682/410/381 690/396/372
+f 689/398/373 682/410/381 617/395/366
+f 616/397/369 681/411/382 689/398/373
+f 688/400/374 681/411/382 616/397/369
+f 615/399/368 680/412/383 688/400/374
+f 687/402/375 680/412/383 615/399/368
+f 614/401/367 679/413/384 687/402/375
+f 686/404/376 679/413/384 614/401/367
+f 613/403/370 678/414/385 686/404/376
+f 685/406/377 678/414/385 613/403/370
+f 612/405/365 677/415/386 685/406/377
+f 684/407/378 677/415/386 612/405/365
+f 611/392/364 676/408/379 684/407/378
+g cage_Cylinder.004_lens
+f 82/220/387 83/378/33 85/416/34 84/213/388
+f 84/213/388 85/416/34 87/377/35 86/206/389
+f 86/206/389 87/377/35 89/417/36 88/199/390
+f 88/199/390 89/417/36 91/379/37 90/192/391
+f 90/192/391 91/379/37 93/418/38 92/185/392
+f 92/185/392 93/418/38 95/372/39 94/178/393
+f 94/178/393 95/372/39 97/419/40 96/170/394
+f 96/170/394 97/419/40 99/371/41 98/171/395
+f 98/171/395 99/371/41 101/420/42 100/248/396
+f 100/248/396 101/420/42 103/381/43 102/241/397
+f 102/241/397 103/381/43 105/421/44 104/233/398
+f 104/233/398 105/421/44 107/380/45 106/234/399
+f 106/234/399 107/380/45 109/422/46 108/423/400
+f 108/423/400 109/422/46 111/374/47 110/424/401
+f 145/425/402 146/426/403 114/253/50
+f 112/427/404 113/428/49 83/373/33 82/429/387
+f 110/424/401 111/374/47 113/428/49 112/427/404
+f 162/430/405 131/431/406 115/432/407 130/433/408
+f 144/434/409 145/425/402 114/253/50
+f 143/435/410 144/434/409 114/253/50
+f 142/436/411 143/435/410 114/253/50
+f 141/437/412 142/436/411 114/253/50
+f 140/438/413 141/437/412 114/253/50
+f 139/439/414 140/438/413 114/253/50
+f 138/440/415 139/439/414 114/253/50
+f 137/441/416 138/440/415 114/253/50
+f 136/442/417 137/441/416 114/253/50
+f 135/443/418 136/442/417 114/253/50
+f 134/444/419 135/443/418 114/253/50
+f 133/445/420 134/444/419 114/253/50
+f 132/446/421 133/445/420 114/253/50
+f 147/447/422 132/446/421 114/253/50
+f 161/448/423 162/430/405 130/433/408 129/449/424
+f 160/450/425 161/448/423 129/449/424 128/451/426
+f 159/452/427 160/450/425 128/451/426 127/453/428
+f 158/454/429 159/452/427 127/453/428 126/455/430
+f 157/456/431 158/454/429 126/455/430 125/457/432
+f 156/458/433 157/456/431 125/457/432 124/459/434
+f 155/460/435 156/458/433 124/459/434 123/461/436
+f 154/462/437 155/460/435 123/461/436 122/463/438
+f 153/464/439 154/462/437 122/463/438 121/465/440
+f 152/466/441 153/464/439 121/465/440 120/467/442
+f 151/468/443 152/466/441 120/467/442 119/469/444
+f 150/470/445 151/468/443 119/469/444 118/471/446
+f 149/472/447 150/470/445 118/471/446 117/473/448
+f 148/474/449 149/472/447 117/473/448 116/475/450
+f 131/431/406 148/474/449 116/475/450 115/432/407
+f 82/220/387 84/213/388 148/212/449 131/219/406
+f 84/213/388 86/206/389 149/205/447 148/212/449
+f 86/206/389 88/199/390 150/198/445 149/205/447
+f 88/199/390 90/192/391 151/191/443 150/198/445
+f 90/192/391 92/185/392 152/184/441 151/191/443
+f 92/185/392 94/178/393 153/177/439 152/184/441
+f 94/178/393 96/170/394 154/169/437 153/177/439
+f 96/170/394 98/171/395 155/168/435 154/169/437
+f 98/171/395 100/248/396 156/247/433 155/168/435
+f 100/248/396 102/241/397 157/240/431 156/247/433
+f 102/241/397 104/233/398 158/232/429 157/240/431
+f 104/233/398 106/234/399 159/231/427 158/232/429
+f 106/234/399 108/423/400 160/476/425 159/231/427
+f 108/423/400 110/424/401 161/369/423 160/476/425
+f 110/424/401 112/427/404 162/477/405 161/369/423
+f 130/433/408 115/432/407 147/447/422 146/426/403
+f 129/449/424 130/433/408 146/426/403 145/425/402
+f 128/451/426 129/449/424 145/425/402 144/434/409
+f 127/453/428 128/451/426 144/434/409 143/435/410
+f 126/455/430 127/453/428 143/435/410 142/436/411
+f 125/457/432 126/455/430 142/436/411 141/437/412
+f 124/459/434 125/457/432 141/437/412 140/438/413
+f 123/461/436 124/459/434 140/438/413 139/439/414
+f 122/463/438 123/461/436 139/439/414 138/440/415
+f 121/465/440 122/463/438 138/440/415 137/441/416
+f 120/467/442 121/465/440 137/441/416 136/442/417
+f 119/469/444 120/467/442 136/442/417 135/443/418
+f 118/471/446 119/469/444 135/443/418 134/444/419
+f 117/473/448 118/471/446 134/444/419 133/445/420
+f 116/475/450 117/473/448 133/445/420 132/446/421
+f 112/427/404 82/429/387 131/368/406 162/477/405
+f 115/432/407 116/475/450 132/446/421 147/447/422
+f 146/426/403 147/447/422 114/253/50
diff --git a/ilights/textures/ilights_lamp_base.png b/ilights/textures/ilights_lamp_base.png
new file mode 100644
index 0000000..335eb50
--- /dev/null
+++ b/ilights/textures/ilights_lamp_base.png
Binary files differ
diff --git a/ilights/textures/ilights_lamp_bulb.png b/ilights/textures/ilights_lamp_bulb.png
new file mode 100644
index 0000000..053b20f
--- /dev/null
+++ b/ilights/textures/ilights_lamp_bulb.png
Binary files differ
diff --git a/ilights/textures/ilights_lamp_bulb_base.png b/ilights/textures/ilights_lamp_bulb_base.png
new file mode 100644
index 0000000..7f9d299
--- /dev/null
+++ b/ilights/textures/ilights_lamp_bulb_base.png
Binary files differ
diff --git a/ilights/textures/ilights_lamp_cage.png b/ilights/textures/ilights_lamp_cage.png
new file mode 100644
index 0000000..fbbb40a
--- /dev/null
+++ b/ilights/textures/ilights_lamp_cage.png
Binary files differ
diff --git a/ilights/textures/ilights_lamp_lens.png b/ilights/textures/ilights_lamp_lens.png
new file mode 100644
index 0000000..50f2214
--- /dev/null
+++ b/ilights/textures/ilights_lamp_lens.png
Binary files differ
diff --git a/inventory_sorter/README b/inventory_sorter/README
new file mode 100644
index 0000000..2fe55bb
--- /dev/null
+++ b/inventory_sorter/README
@@ -0,0 +1,9 @@
+To craft a sorting wand:
+
+S S X
+S S X
+X S X
+
+To sort your own inventory use /sort
+
+TODO: sort your hotbar separately
diff --git a/inventory_sorter/depends.txt b/inventory_sorter/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/inventory_sorter/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/inventory_sorter/init.lua b/inventory_sorter/init.lua
new file mode 100644
index 0000000..b758529
--- /dev/null
+++ b/inventory_sorter/init.lua
@@ -0,0 +1,245 @@
+--------------------------------------------------------
+-- supporting junk
+
+
+function min(a,b)
+ if a < b then
+ return a
+ else
+ return b
+ end
+end
+
+if not string.starts then
+ function string.starts(String,Start)
+ return string.sub(String,1,string.len(Start))==Start
+ end
+end
+
+--------------------------------------------------------
+
+function sortInventory(inv,sorter)
+ local tabl = inv:get_list("main")
+ if(tabl == nil) then
+ -- we don't sort furnaces!
+ return false
+ end
+
+ table.sort(tabl,sorter)
+ -- note take_item will set the name to '' when empty
+ -- NEVER reduce the inventory array size for chests
+ inv:set_list('main',tabl)
+ return true
+end
+
+sorters = {
+ wise = function(a,b)
+ -- XXX: this needs to have stricter ordering!
+ -- (why is air scoring higher than the end?)
+ if(a == nil) then
+ if b == nil then
+ return true
+ else
+ return false
+ end
+ elseif b == nil then
+ return true
+ end
+
+ local aname = a:get_name()
+ local bname = b:get_name()
+ -- make sure empty slots go at the end
+
+ if(string.len(aname) == 0) then
+ return false
+ end
+ if(string.len(bname) == 0) then
+ return true
+ end
+
+ -- if the nodes are entirely different, sorted
+ if (aname ~= bname) then
+ return aname < bname
+ end
+
+ -- same node types
+ -- may need to collapse the two together!
+ local bothmax = a:get_stack_max()
+ if bothmax == 1 then
+ -- it's unstackable
+ local awear = a:get_wear()
+ local bwear = b:get_wear()
+ return awear < bwear
+ end
+ local acount = a:get_count()
+ local bcount = b:get_count()
+ if(acount == bothmax) then
+ --print('same?',acount,bcount,bothmax)
+ return bcount ~= bothmax
+ elseif (bcount == bothmax) then
+ --print('bcount bothmax derp')
+ return false
+ end
+ local num = min(bcount,bothmax-acount)
+ a:add_item(b:take_item(num))
+ -- nothing can have both count AND wear, right?
+ -- now a:count > b:count so a should go first
+ --print('numnum',num)
+ return true
+ end,
+ amount = function(a,b)
+ return a:get_count() > b:get_count()
+ end,
+ wear = function(a,b)
+ return a:get_wear() < b:get_wear()
+ end,
+ -- etc...
+}
+
+function registerWand(method,sorter)
+ if method == nil then
+ name = "inventory_sorter:wand"
+ sorter = sorters.wise
+ assert(sorter ~= nil)
+ desc = 'Chest Sorter'
+ image = 'inventory_sorter_wand.png'
+ else
+ name = "inventory_sorter:wand_"..method
+ desc = "Chest Sorter ("..method..')'
+ image = 'inventory_sorter_wand_'..method..'.png'
+ end
+
+ minetest.register_tool(name, {
+ description = desc,
+ inventory_image = image,
+ wield_image = image,
+ stack_max = 1,
+ tool_capabilities = {
+ full_punch_interval=0,
+ max_drop_level=0
+ },
+ on_use = function(self,user,punched)
+ local pos = minetest.get_pointed_thing_position(punched)
+ if pos==nil then
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if(inv == nil) then
+ minetest.chat_send_player(user:get_player_name(),"That can't be sorted.","Sorter -!-")
+ return
+ end
+ -- this isn't exported, but default locked chest does this
+ local owner = meta:get_string("owner")
+ if(owner ~= nil and string.len(owner) ~= 0 and user:get_player_name() ~= owner) then
+ minetest.chat_send_player(user:get_player_name(),"That's not yours!","Sorter -!-")
+ return
+ end
+ -- Sokomine's shared chest locks
+ if locks ~= nil then
+ if punched == nil or punched.name == nil then
+ punched = minetest.get_node(pos)
+ end
+ if punched and punched.name:starts('locks:') and not locks:lock_allow_use(pos,user) then
+ -- the error has already been reported (yay side effects)
+ return
+ end
+ end
+
+ if(sortInventory(inv,sorter)) then
+ minetest.chat_send_player(user:get_player_name(),"Chest sorted.","Sorter -!-")
+ end
+ end
+ })
+end
+
+function debugSorter(a,b)
+ result = sorters.wise(a,b)
+ function derp(a)
+ return a:get_name()..":"..a:get_count()..":"..a:get_wear()
+ end
+ if a then
+ a = derp(a)
+ end
+ if b then
+ b = derp(b)
+ end
+ if result then
+ print('a goes first',a,b)
+ else
+ print('b goes first',a,b)
+ end
+ return result
+end
+function test()
+ function thingy(name,stack_max)
+ return {
+ get_name=function(self) return name end,
+ get_stack_max=function(self) return stack_max end,
+ get_count=function(self) return stack_max end,
+ get_wear=function(self) return 1/stack_max end,
+ take_item=function() end,
+ add_item=function() end,
+ derp=function()
+ return name..', '..tostring(stack_max)
+ end
+ }
+ end
+ tabl = {thingy('thing1',1),thingy('hting2',1),nil,thingy('thing1',2),thingy('thing1',4),thingy('thing1',10)}
+ table.sort(tabl,sorter)
+ for n,v in pairs(tabl) do
+ print(n,v:get_name(),v:get_count())
+ end
+end
+-- test()
+-- print('yay')
+-- error('...')
+
+for name,sorter in pairs(sorters) do
+ registerWand(name,sorter)
+end
+
+registerWand()
+
+minetest.register_craft({
+ output = 'inventory_sorter:wand',
+ recipe = {
+ {'default:stick','default:stick',''},
+ {'default:stick','default:stick',''},
+ {'','default:stick',''}
+ }
+})
+
+-- is this one automatic...?
+
+minetest.register_craft({
+ output = 'inventory_sorter:wand',
+ recipe = {
+ {'','default:stick','default:stick'},
+ {'','default:stick','default:stick'},
+ {'','','default:stick'}
+ }
+})
+
+minetest.register_chatcommand('sort',{
+ params = '[optional algorithm: amount,wear]',
+ description = 'Sort your inventory! No takebacks.',
+ privs={interact=true},
+ func = function(name,param)
+ local sorter = sorters.wise;
+ if string.len(param) > 0 then
+ sorter = sorters[param];
+ if sorter == nil then
+ minetest.chat_send_player(name,"/sort [algorithm]","Sorter -!-")
+ minetest.chat_send_player(name,"Valid algorithms:","Sorter -!-")
+ for n,v in pairs(sorters) do
+ minetest.chat_send_player(name,' '..n,"Sorter -!-")
+ end
+ return;
+ end
+ end
+ if(sortInventory(minetest.get_player_by_name(name):get_inventory(),sorter)) then
+ minetest.chat_send_player(name,"Sorted.","Sorter -!-")
+ end
+ end
+})
diff --git a/inventory_sorter/textures/inventory_sorter_wand.png b/inventory_sorter/textures/inventory_sorter_wand.png
new file mode 100644
index 0000000..9ebb488
--- /dev/null
+++ b/inventory_sorter/textures/inventory_sorter_wand.png
Binary files differ
diff --git a/inventory_sorter/textures/inventory_sorter_wand_amount.png b/inventory_sorter/textures/inventory_sorter_wand_amount.png
new file mode 120000
index 0000000..d17e14b
--- /dev/null
+++ b/inventory_sorter/textures/inventory_sorter_wand_amount.png
@@ -0,0 +1 @@
+inventory_sorter_wand.png \ No newline at end of file
diff --git a/inventory_sorter/textures/inventory_sorter_wand_wear.png b/inventory_sorter/textures/inventory_sorter_wand_wear.png
new file mode 120000
index 0000000..d17e14b
--- /dev/null
+++ b/inventory_sorter/textures/inventory_sorter_wand_wear.png
@@ -0,0 +1 @@
+inventory_sorter_wand.png \ No newline at end of file
diff --git a/inventory_sorter/textures/inventory_sorter_wand_wise.png b/inventory_sorter/textures/inventory_sorter_wand_wise.png
new file mode 120000
index 0000000..d17e14b
--- /dev/null
+++ b/inventory_sorter/textures/inventory_sorter_wand_wise.png
@@ -0,0 +1 @@
+inventory_sorter_wand.png \ No newline at end of file
diff --git a/item_tweaks/init.lua b/item_tweaks/init.lua
new file mode 100644
index 0000000..efad17f
--- /dev/null
+++ b/item_tweaks/init.lua
@@ -0,0 +1,3 @@
+local modpath = minetest.get_modpath(minetest.get_current_modname())
+
+dofile(modpath.."/item_drop.lua")
diff --git a/item_tweaks/item_drop.lua b/item_tweaks/item_drop.lua
new file mode 100644
index 0000000..beed1c7
--- /dev/null
+++ b/item_tweaks/item_drop.lua
@@ -0,0 +1,314 @@
+-- item_drop code by cyisfor
+-- https://github.com/cyisfor/item_drop
+
+
+if drops == nil then
+ drops = {}
+end
+
+local movers = {}
+
+local removedAlreadyDammit = {}
+
+vector.fixedNormalize = function(v)
+ assert(v)
+ local len = vector.length(v)
+ if len == 0 then
+ -- no length 1 vector will ever equal this
+ return vector.new(0,0,0)
+ else
+ return vector.divide(v, len)
+ end
+end
+
+if not vector.dot then
+ vector.dot = function(p1,p2)
+ return p1.x * p2.x + p1.y * p2.y + p1.z * p2.z
+ end
+end
+
+local function removeObject(object)
+ movers[object] = nil
+ removedAlreadyDammit[object] = true
+ object:remove()
+end
+
+local function removeObjectWithSound(object)
+ movers[object] = nil
+ removedAlreadyDammit[object] = true
+ local pos=object:getpos()
+ minetest.sound_play("item_gone", {
+ pos=pos,
+ gain = 0.2,
+ max_hear_distance = 32,
+ })
+ object:remove()
+end
+
+-- returns whether the pickup failed or not.
+-- nil pickupRadius means to infinity and beyond
+local function pickup(player, inv, object, pickupRadius)
+ if removedAlreadyDammit[object] then
+ -- this gets called after the timeout, as well as when it hits the player
+ return true
+ end
+ if player == nil then return true end
+
+ -- itemstring is serialized item so includes metadata
+ local lua = object:get_luaentity()
+ item = ItemStack(lua.itemstring)
+ if inv and inv:room_for_item("main", item) then
+ inv:add_item("main", item)
+ if object:get_luaentity().itemstring ~= "" then
+ minetest.sound_play("item_drop_pickup", {
+ to_player = player:get_player_name(),
+ gain = 0.4,
+ })
+ end
+ lua.itemstring = ''
+ removeObject(object)
+ return false
+ else
+ return true
+ end
+end
+
+local function isGood(object)
+ -- only want items swooping up after players, not after chests!
+ if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
+ return true
+ else
+ return false
+ end
+end
+
+local function stop(object)
+ movers[object] = nil
+ -- no pickup, even though it's close, so
+ -- stop moving towards the player
+ object:setvelocity({x=0, y=0, z=0})
+ object:setacceleration({x=0, y=0, z=0})
+ -- also we can walk on it and it can push pressure plates
+ -- physical_state = false means "please make us physical again"
+ local lua = object:get_luaentity()
+ if lua then
+ lua.physical_state = false
+ end
+ --object:set_properties({
+ -- physical = true
+ --})
+end
+
+local function pickupOrStop(object, inv, player, pickupRadius)
+ local lua = object:get_luaentity()
+ if object == nil or lua == nil or lua.itemstring == nil then
+ return
+ end
+ if pickup(player, inv, object, pickupRadius) then
+ stop(object)
+ end
+end
+
+-- GMass... it's the player's mass if the player were a giant planetlike object
+-- which things orbit around
+-- in the following units:
+-- if G = 6.67×10−11 then
+-- GMass = 1 for 14,992,503,748 kilograms
+drops.playerGMass = 1.7
+-- the player is faaaaaaaat
+
+local function moveTowards(object, player, pickupRadius, attractRadius)
+ -- move it towards the player, then pick it up after a delay!
+ local pos1 = player:getpos()
+ if pos1 == nil then return end
+ local pos2 = object:getpos()
+ if pos2 == nil then return end
+ pos1.y = pos1.y+0.5 -- head towards player's belt
+ local direct = vector.subtract(pos1, pos2)
+ local R = vector.length(direct)
+ v = object:getvelocity()
+ stopped = v.x == 0 and v.y == 0 and v.z == 0
+ -- when direction(X) = direction(V) we passed the player
+ -- so project V onto X. If same, passed. If not, approaching.
+ -- projection = norm(X) * (length(V) * cos(theta))
+ -- => length(V) * dot(V,X) / length(V) / length(X)
+ -- = dot(V,X) / length(X)
+ -- if X is normalized, length(X) == 1 so... dot product!
+ -- sign(dot) > 0 = same direction sign(dot)< 0 = different
+ direct = vector.fixedNormalize(direct)
+
+ -- idea, set velocity not acceleration but set it
+ -- not to velocity + acceleration, but to the projection of that
+ -- onto the direction vector. object will always have velocity towards YOU
+
+ if R > attractRadius then
+ stop(object)
+ return
+ end
+ if R < pickupRadius or (not stopped and vector.dot(v,direct) < 0) then
+ pickupOrStop(object,player:get_inventory(),player,nil)
+ return
+ end
+ -- Fg = G*M1*M2/R^2
+ -- M1*A1 = G * M1 * M2 / R^2
+ -- A1 = G * M2 / R ^2
+ -- G = whatever it takes for stuff to orbit around the player
+ -- and the weight of the player is ^^^
+ -- A1 = C / R^2
+ local A
+ A = drops.playerGMass / R^2
+ A = math.max(A,2*drops.playerGMass)
+ object:setacceleration(vector.multiply(direct,A))
+end
+
+if minetest.setting_get("enable_item_pickup") == "true" then
+ local tickets = 0 -- XXX: oy vey
+ moveDelay = 0
+ minetest.register_globalstep(function(dtime)
+ -- it's much more efficient to just restart... no way to unregister_globalstep right?
+ if not minetest.setting_get("enable_item_pickup") then return end
+ moveDelay = moveDelay + dtime
+ local pickupRadius = tonumber(minetest.setting_get("pickup_radius"))
+ local attractRadius = tonumber(minetest.setting_get("attract_radius"))
+ if not pickupRadius then pickupRadius = 0.5 end
+ if not attractRadius then attractRadius = 3 end
+
+ if moveDelay > 0.1 then
+ moveDelay = 0
+ -- correct your trajectory while moving
+ for object,pair in pairs(movers) do
+ local player = pair[1]
+ moveTowards(object,player,pickupRadius,attractRadius)
+ end
+ end
+ for _, player in ipairs(minetest.get_connected_players()) do
+ if player:get_hp() > 0 or not minetest.setting_getbool("enable_damage") then
+ local playerPosition = player:getpos()
+ if playerPosition ~= nil then
+ playerPosition.y = playerPosition.y + 0.5
+ local inv = player:get_inventory()
+
+ for _, object in ipairs(minetest.get_objects_inside_radius(playerPosition, 3)) do
+ if isGood(object) and (object:get_luaentity().dropped_by ~= player:get_player_name() or object:get_luaentity().age > 3) and
+ inv and
+ inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring))
+ then
+ local ticket = tickets
+ movers[object] = {player,ticket}
+ tickets = tickets + 1
+ moveTowards(object, player, pickupRadius, attractRadius)
+ -- make sure object doesn't push the player around!
+ object:get_luaentity().physical_state = true
+ object:get_luaentity().object:set_properties({
+ physical = false,
+ collide_with_objects = false,
+ weight = 0
+ })
+ -- pleeease no immortal orbiting entities
+ -- unless you want them to be >:)
+ minetest.after(30, function(object)
+ -- only if it's still moving
+ -- but what if it started moving a second time?
+ pair = movers[object]
+ if pair and pair[2] == ticket then
+ stop(object)
+ end
+ end, object)
+ end
+ end
+ end
+ end
+ end
+ end)
+end
+
+if minetest.setting_get("enable_item_drops") == "true" then
+ local old_handle_node_drops = minetest.handle_node_drops
+
+ function new_handle_node_drops(pos, drops, digger)
+ if digger and digger.is_fake_player then
+ return old_handle_node_drops(pos, drops, digger)
+ end
+ local inv
+ -- the digger might be a node, like a constructor
+ if minetest.setting_getbool("creative_mode") and digger and digger:is_player() then
+ inv = digger:get_inventory()
+ end
+ for _, item in ipairs(drops) do
+ local count, name
+ if type(item) == "string" then
+ count = 1
+ name = item
+ else
+ count = item:get_count()
+ name = item:get_name()
+ end
+ -- Only drop the item if not in creative, or if the item is not in creative inventory
+ if not inv or not inv:contains_item("main", ItemStack(name)) then
+ for i=1, count do
+ local obj = minetest.add_item(pos, item)
+ if obj ~= nil then
+ local x = math.random(1, 5)
+ if math.random(1, 2) == 1 then
+ x = -x
+ end
+ local z = math.random(1, 5)
+ if math.random(1, 2) == 1 then
+ z = -z
+ end
+ -- hurl it out into space at a random velocity
+ -- (still falling though)
+ obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
+ end
+ end
+ end
+ end
+ -- the items have been dropped. Don't use builtin/item.lua or it could put the items
+ -- into an inventory! (see quarry)
+ -- return old_handle_node_drops(pos, drops, digger)
+ end
+
+ function checkSetting(pos, drops, digger)
+ if minetest.setting_get("enable_item_drops") == "true" then
+ return new_handle_node_drops(pos, drops, digger)
+ else
+ return old_handle_node_drops(pos, drops, digger)
+ end
+ end
+ minetest.handle_node_drops = checkSetting
+
+end
+
+function minetest.item_drop(itemstack, dropper, pos)
+ if dropper and dropper.get_player_name then
+ local v = dropper:get_look_dir()
+ local p = {x=pos.x+v.x, y=pos.y+1.5+v.y, z=pos.z+v.z}
+ local r
+ if dropper:get_player_control().sneak then
+ r = itemstack
+ itemstack = itemstack:to_table()
+ itemstack.count = 1
+ itemstack = ItemStack(itemstack)
+ r:take_item()
+ else
+ r = ItemStack("")
+ end
+ minetest.sound_play("item_drop", {
+ pos=pos,
+ gain = 1.0,
+ max_hear_distance = 32,
+ })
+ local obj = minetest.add_item(p, itemstack)
+ if obj then
+ v.x = v.x*2
+ v.y = v.y*2 + 1
+ v.z = v.z*2
+ obj:setvelocity(v)
+ obj:get_luaentity().dropped_by = dropper:get_player_name()
+ end
+ return r
+ else
+ minetest.add_item(pos, itemstack)
+ return ItemStack("")
+ end
+end
diff --git a/item_tweaks/sounds/item_drop.ogg b/item_tweaks/sounds/item_drop.ogg
new file mode 100644
index 0000000..ced91f8
--- /dev/null
+++ b/item_tweaks/sounds/item_drop.ogg
Binary files differ
diff --git a/item_tweaks/sounds/item_drop_pickup.1.ogg b/item_tweaks/sounds/item_drop_pickup.1.ogg
new file mode 100644
index 0000000..2ae432d
--- /dev/null
+++ b/item_tweaks/sounds/item_drop_pickup.1.ogg
Binary files differ
diff --git a/item_tweaks/sounds/item_drop_pickup.2.ogg b/item_tweaks/sounds/item_drop_pickup.2.ogg
new file mode 100644
index 0000000..f58bf08
--- /dev/null
+++ b/item_tweaks/sounds/item_drop_pickup.2.ogg
Binary files differ
diff --git a/item_tweaks/sounds/item_drop_pickup.3.ogg b/item_tweaks/sounds/item_drop_pickup.3.ogg
new file mode 100644
index 0000000..cf57c94
--- /dev/null
+++ b/item_tweaks/sounds/item_drop_pickup.3.ogg
Binary files differ
diff --git a/item_tweaks/sounds/item_drop_pickup.4.ogg b/item_tweaks/sounds/item_drop_pickup.4.ogg
new file mode 100644
index 0000000..bfe99d9
--- /dev/null
+++ b/item_tweaks/sounds/item_drop_pickup.4.ogg
Binary files differ
diff --git a/jumping/README.md b/jumping/README.md
new file mode 100644
index 0000000..17e3a09
--- /dev/null
+++ b/jumping/README.md
@@ -0,0 +1,7 @@
+Jumping
+
+Jumping is a mod for minetest that adds trampolines, cushions, ...
+
+License: GPLv3
+
+Creator: Jeija
diff --git a/jumping/jumping/init.lua b/jumping/jumping/init.lua
new file mode 100644
index 0000000..7937c63
--- /dev/null
+++ b/jumping/jumping/init.lua
@@ -0,0 +1,74 @@
+local trampolinebox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.2, -0.5, 0.5, 0, 0.5},
+
+ {-0.5, -0.5, -0.5, -0.4, -0.2, -0.4},
+ { 0.4, -0.5, -0.5, 0.5, -0.2, -0.4},
+ { 0.4, -0.5, 0.4, 0.5, -0.2, 0.5},
+ {-0.5, -0.5, 0.4, -0.4, -0.2, 0.5},
+ }
+}
+
+local cushionbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.3, 0.5},
+ }
+}
+
+local trampoline_punch = function(pos, node)
+ local id = string.sub(node.name, #node.name)
+ id = id + 1
+ if id == 7 then id = 1 end
+ minetest.add_node(pos, {name = string.sub(node.name, 1, #node.name - 1)..id})
+end
+
+for i = 1, 6 do
+ minetest.register_node("jumping:trampoline"..i, {
+ description = "Trampoline",
+ drawtype = "nodebox",
+ node_box = trampolinebox,
+ selection_box = trampolinebox,
+ paramtype = "light",
+ on_punch = trampoline_punch,
+ tiles = {
+ "jumping_trampoline_top.png",
+ "jumping_trampoline_bottom.png",
+ "jumping_trampoline_sides.png^jumping_trampoline_sides_overlay"..i..".png"
+ },
+ groups = {dig_immediate=2, bouncy=20+i*20, fall_damage_add_percent=-70},
+ })
+end
+
+minetest.register_node("jumping:cushion", {
+ description = "Cushion",
+ drawtype = "nodebox",
+ node_box = cushionbox,
+ selection_box = cushionbox,
+ paramtype = "light",
+ tiles = {
+ "jumping_cushion_tb.png",
+ "jumping_cushion_tb.png",
+ "jumping_cushion_sides.png"
+ },
+ groups = {dig_immediate=2, disable_jump=1, fall_damage_add_percent=-100},
+})
+
+minetest.register_craft({
+ output = "jumping:trampoline1",
+ recipe = {
+ {"default:wood", "default:wood", "default:wood"},
+ {"default:leaves", "default:leaves", "default:leaves"},
+ {"default:stick", "default:stick", "default:stick"}
+ }
+})
+
+minetest.register_craft({
+ output = "jumping:cushion",
+ recipe = {
+ {"default:leaves", "default:leaves", "default:leaves"},
+ {"default:leaves", "default:leaves", "default:leaves"},
+ {"default:stick", "default:stick", "default:stick"}
+ }
+})
diff --git a/jumping/jumping/textures/jumping_cushion_sides.png b/jumping/jumping/textures/jumping_cushion_sides.png
new file mode 100644
index 0000000..8c6de57
--- /dev/null
+++ b/jumping/jumping/textures/jumping_cushion_sides.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_cushion_tb.png b/jumping/jumping/textures/jumping_cushion_tb.png
new file mode 100644
index 0000000..09b50e8
--- /dev/null
+++ b/jumping/jumping/textures/jumping_cushion_tb.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_bottom.png b/jumping/jumping/textures/jumping_trampoline_bottom.png
new file mode 100644
index 0000000..cd9da65
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_bottom.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides.png b/jumping/jumping/textures/jumping_trampoline_sides.png
new file mode 100644
index 0000000..a5f3689
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides_overlay1.png b/jumping/jumping/textures/jumping_trampoline_sides_overlay1.png
new file mode 100644
index 0000000..aebcf05
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides_overlay1.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides_overlay2.png b/jumping/jumping/textures/jumping_trampoline_sides_overlay2.png
new file mode 100644
index 0000000..74f43fa
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides_overlay2.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides_overlay3.png b/jumping/jumping/textures/jumping_trampoline_sides_overlay3.png
new file mode 100644
index 0000000..d619fcc
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides_overlay3.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides_overlay4.png b/jumping/jumping/textures/jumping_trampoline_sides_overlay4.png
new file mode 100644
index 0000000..f1679e6
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides_overlay4.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides_overlay5.png b/jumping/jumping/textures/jumping_trampoline_sides_overlay5.png
new file mode 100644
index 0000000..2af894d
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides_overlay5.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_sides_overlay6.png b/jumping/jumping/textures/jumping_trampoline_sides_overlay6.png
new file mode 100644
index 0000000..3c2fa6e
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_sides_overlay6.png
Binary files differ
diff --git a/jumping/jumping/textures/jumping_trampoline_top.png b/jumping/jumping/textures/jumping_trampoline_top.png
new file mode 100644
index 0000000..a927fdb
--- /dev/null
+++ b/jumping/jumping/textures/jumping_trampoline_top.png
Binary files differ
diff --git a/jumping/modpack.txt b/jumping/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jumping/modpack.txt
diff --git a/legacy/depends.txt b/legacy/depends.txt
new file mode 100644
index 0000000..3a7daa1
--- /dev/null
+++ b/legacy/depends.txt
@@ -0,0 +1,2 @@
+default
+
diff --git a/legacy/init.lua b/legacy/init.lua
new file mode 100644
index 0000000..1cb99ef
--- /dev/null
+++ b/legacy/init.lua
@@ -0,0 +1,107 @@
+-- legacy (Minetest 0.4 mod)
+-- Provides as much backwards-compatibility as feasible
+
+--
+-- Aliases to support loading 0.3 and old 0.4 worlds and inventories
+--
+
+minetest.register_alias("stone", "default:stone")
+minetest.register_alias("stone_with_coal", "default:stone_with_coal")
+minetest.register_alias("stone_with_iron", "default:stone_with_iron")
+minetest.register_alias("dirt_with_grass", "default:dirt_with_grass")
+minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps")
+minetest.register_alias("dirt", "default:dirt")
+minetest.register_alias("sand", "default:sand")
+minetest.register_alias("gravel", "default:gravel")
+minetest.register_alias("sandstone", "default:sandstone")
+minetest.register_alias("clay", "default:clay")
+minetest.register_alias("brick", "default:brick")
+minetest.register_alias("tree", "default:tree")
+minetest.register_alias("jungletree", "default:jungletree")
+minetest.register_alias("junglegrass", "default:junglegrass")
+minetest.register_alias("leaves", "default:leaves")
+minetest.register_alias("cactus", "default:cactus")
+minetest.register_alias("papyrus", "default:papyrus")
+minetest.register_alias("bookshelf", "default:bookshelf")
+minetest.register_alias("glass", "default:glass")
+minetest.register_alias("wooden_fence", "default:fence_wood")
+minetest.register_alias("rail", "default:rail")
+minetest.register_alias("ladder", "default:ladder")
+minetest.register_alias("wood", "default:wood")
+minetest.register_alias("mese", "default:mese")
+minetest.register_alias("cloud", "default:cloud")
+minetest.register_alias("water_flowing", "default:water_flowing")
+minetest.register_alias("water_source", "default:water_source")
+minetest.register_alias("lava_flowing", "default:lava_flowing")
+minetest.register_alias("lava_source", "default:lava_source")
+minetest.register_alias("torch", "default:torch")
+minetest.register_alias("sign_wall", "default:sign_wall")
+minetest.register_alias("furnace", "default:furnace")
+minetest.register_alias("chest", "default:chest")
+minetest.register_alias("locked_chest", "default:chest_locked")
+minetest.register_alias("cobble", "default:cobble")
+minetest.register_alias("mossycobble", "default:mossycobble")
+minetest.register_alias("steelblock", "default:steelblock")
+minetest.register_alias("nyancat", "default:nyancat")
+minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow")
+minetest.register_alias("sapling", "default:sapling")
+minetest.register_alias("apple", "default:apple")
+
+minetest.register_alias("WPick", "default:pick_wood")
+minetest.register_alias("STPick", "default:pick_stone")
+minetest.register_alias("SteelPick", "default:pick_steel")
+minetest.register_alias("MesePick", "default:pick_mese")
+minetest.register_alias("WShovel", "default:shovel_wood")
+minetest.register_alias("STShovel", "default:shovel_stone")
+minetest.register_alias("SteelShovel", "default:shovel_steel")
+minetest.register_alias("WAxe", "default:axe_wood")
+minetest.register_alias("STAxe", "default:axe_stone")
+minetest.register_alias("SteelAxe", "default:axe_steel")
+minetest.register_alias("WSword", "default:sword_wood")
+minetest.register_alias("STSword", "default:sword_stone")
+minetest.register_alias("SteelSword", "default:sword_steel")
+
+minetest.register_alias("Stick", "default:stick")
+minetest.register_alias("paper", "default:paper")
+minetest.register_alias("book", "default:book")
+minetest.register_alias("lump_of_coal", "default:coal_lump")
+minetest.register_alias("lump_of_iron", "default:iron_lump")
+minetest.register_alias("lump_of_clay", "default:clay_lump")
+minetest.register_alias("steel_ingot", "default:steel_ingot")
+minetest.register_alias("clay_brick", "default:clay_brick")
+minetest.register_alias("scorched_stuff", "default:scorched_stuff")
+
+--
+-- Old items
+--
+
+minetest.register_craftitem(":rat", {
+ description = "Rat",
+ inventory_image = "rat.png",
+})
+
+minetest.register_craftitem(":cooked_rat", {
+ description = "Cooked rat",
+ inventory_image = "cooked_rat.png",
+ on_use = minetest.item_eat(6),
+})
+
+minetest.register_craftitem(":firefly", {
+ description = "Firefly",
+ inventory_image = "firefly.png",
+ groups = {not_in_creative_inventory=1},
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "cooked_rat",
+ recipe = "rat",
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "scorched_stuff",
+ recipe = "cooked_rat",
+})
+
+-- END
diff --git a/legacy/textures/apple_iron.png b/legacy/textures/apple_iron.png
new file mode 100644
index 0000000..b1d1804
--- /dev/null
+++ b/legacy/textures/apple_iron.png
Binary files differ
diff --git a/legacy/textures/cooked_rat.png b/legacy/textures/cooked_rat.png
new file mode 100644
index 0000000..db80298
--- /dev/null
+++ b/legacy/textures/cooked_rat.png
Binary files differ
diff --git a/legacy/textures/dungeon_master.png b/legacy/textures/dungeon_master.png
new file mode 100644
index 0000000..56caa50
--- /dev/null
+++ b/legacy/textures/dungeon_master.png
Binary files differ
diff --git a/legacy/textures/fireball.png b/legacy/textures/fireball.png
new file mode 100644
index 0000000..ed21a5b
--- /dev/null
+++ b/legacy/textures/fireball.png
Binary files differ
diff --git a/legacy/textures/firefly.png b/legacy/textures/firefly.png
new file mode 100644
index 0000000..41bb25d
--- /dev/null
+++ b/legacy/textures/firefly.png
Binary files differ
diff --git a/legacy/textures/oerkki1.png b/legacy/textures/oerkki1.png
new file mode 100644
index 0000000..7321d3d
--- /dev/null
+++ b/legacy/textures/oerkki1.png
Binary files differ
diff --git a/legacy/textures/oerkki1_damaged.png b/legacy/textures/oerkki1_damaged.png
new file mode 100644
index 0000000..0ab50c8
--- /dev/null
+++ b/legacy/textures/oerkki1_damaged.png
Binary files differ
diff --git a/legacy/textures/rat.png b/legacy/textures/rat.png
new file mode 100644
index 0000000..e62e603
--- /dev/null
+++ b/legacy/textures/rat.png
Binary files differ
diff --git a/locks/README.md b/locks/README.md
new file mode 100644
index 0000000..03f6534
--- /dev/null
+++ b/locks/README.md
@@ -0,0 +1,36 @@
+This Mod for Minetest adds objects that can be locked and shared.
+
+It is written so that other objects/mods can easily use the functions provided here.
+
+Comes with modified chest, sign and xyz' xdoor2 as sample objects.
+New: Furnaces added.
+For the (unmodified) xdoors2, see http://minetest.net/forum/viewtopic.php?id=2757. Chest and sign take their textures out of default.
+The textures (lock, key and keychain) have been provided by Addi. Please consult textures/licence.txt.
+The code of the lock mod has been written by Sokomine.
+
+A player may open/use a shared locked object if he/she is/has...
+- the owner
+- diglocks priv (may dig up shared locked objects)
+- openlocks priv (object may only be used - i.e. take something out of a chest, open a door - not digged up!)
+- has been added by the owner with the /add playername command
+- member of a playergroup that has been added with /add :playergroupname command (provided the playergroups mod is installed)
+- typed in the correct password that the owner did set with /set thisisthepassword
+
+Adds lock, key and keychain.
+- lock: craftitem to create shared locked objects (chests, signs, doors)
+- key: needed to open your own shared locked objects (a keychain is ok as well)
+- keychain: needed to open the shared locked objects of other players
+The tools do not have to be wielded. They just have to be in the players' inventory.
+Keys and keychains are not specific to a selected lock. They fit all locks - provided the player may open/use the object.
+Thus it is sufficient to carry around only one keychain to open all shared locked objects the player has access to.
+
+If you do not want any of the objects chest, sign and/or door, just remove the corresponding lines from the init.lua:
+dofile(minetest.get_modpath("locks").."/shared_locked_chest.lua");
+dofile(minetest.get_modpath("locks").."/shared_locked_sign_wall.lua");
+dofile(minetest.get_modpath("locks").."/shared_locked_xdoors2.lua");
+dofile(minetest.get_modpath("locks").."/shared_locked_furnace.lua");
+
+I hope this mod will be helpful.
+
+Sokomine
+
diff --git a/locks/depends.txt b/locks/depends.txt
new file mode 100644
index 0000000..7f4b9d7
--- /dev/null
+++ b/locks/depends.txt
@@ -0,0 +1,2 @@
+default
+pipeworks?
diff --git a/locks/init.lua b/locks/init.lua
new file mode 100644
index 0000000..2a35b02
--- /dev/null
+++ b/locks/init.lua
@@ -0,0 +1,611 @@
+
+
+
+--[[
+ Shared locked objects (Mod for MineTest)
+ Allows to restrict usage of blocks to a certain player or a group of
+ players.
+ Copyright (C) 2013 Sokomine
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+--]]
+
+-- Version 1.20
+
+-- Changelog:
+-- 08.05.2014 * Changed animation of shared locked furnace (removed pipeworks overlay on front, changed to new animation type)
+-- 10.01.2013 * Added command to toggle for pipeworks output
+-- * Added pipeworks support for chests and furnace.
+-- 17.12.2013 * aborting input with ESC is possible again
+-- 01.09.2013 * fixed bug in input sanitization
+-- 31.08.2013 * changed receipe for key to avoid crafting conflickt with screwdriver
+-- 10.07.2013 * removed a potential bug (now uses string:gmatch)
+-- * added shared locked furnaces
+
+
+
+locks = {};
+
+minetest.register_privilege("openlocks", { description = "allows to open/use all locked objects", give_to_singleplayer = false});
+minetest.register_privilege("diglocks", { description = "allows to open/use and dig up all locked objects", give_to_singleplayer = false});
+
+
+locks.pipeworks_enabled = false;
+
+if( minetest.get_modpath("pipeworks") ~= nil ) then
+ locks.pipeworks_enabled = true;
+end
+
+-- initializes a lock (that is: prepare the metadata so that it can store data)
+-- default_formspec is the formspec that will be used on right click; the input field for the commands has to exist
+-- Call this in on_construct in register_node. Excample:
+-- on_construct = function(pos)
+-- locks:lock_init( pos, "" );
+-- end;
+
+function locks:lock_init( pos, default_formspec )
+
+ if( pos == nil ) then
+ print( "Error: [locks] lock_init: pos is nil");
+ return;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ if( meta == nil ) then
+ print( "Error: [locks] lock_init: unable to get meta data");
+ return;
+ end
+
+ -- this will be changed after the node is placed
+ meta:set_string("infotext", "Locked object");
+ -- prepare the field for the owner
+ meta:set_string("owner", "");
+ -- this is the list of players/groups that may unlock the lock even if they are not the owner
+ meta:set_string("allowed_users","");
+ -- objects can be unlocked by passwords as well (if it is set)
+ meta:set_string("password","");
+ -- the last player who entered the right password (to save space this is not a list)
+ meta:set_string("pw_user","");
+ -- this formspec is presented on right-click for every user
+ meta:set_string("formspec", default_formspec);
+ -- by default, do not send output to pipework tubes
+ meta:set_int( "allow_pipeworks", 0 );
+end
+
+
+-- returns the information stored in the metadata strings (like owner etc.)
+function locks:get_lockdata( pos )
+ if( pos == nil ) then
+ return;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ if( meta == nil) then
+ return;
+ end
+
+ return{ infotext = (meta:get_string( "infotext" ) or ""),
+ owner = (meta:get_string( "owner" ) or ""),
+ allowed_users = (meta:get_string( "allowed_users" ) or ""),
+ password = (meta:get_string( "password" ) or ""),
+ pw_user = (meta:get_string( "w_user" ) or ""),
+ formspec = (meta:get_string( "formspec" ) or "")
+ };
+end
+
+
+-- sets all the metadata the look needs (used e.g. in doors)
+function locks:set_lockdata( pos, data )
+ if( pos == nil ) then
+ return;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ if( meta == nil) then
+ return;
+ end
+
+ meta:set_string("infotext", (data.infotext or ""));
+ meta:set_string("owner", (data.owner or ""));
+ meta:set_string("allowed_users",(data.allowed_users or ""));
+ meta:set_string("password", (data.password or ""));
+ meta:set_string("pw_user", (data.pw_user or ""));
+ meta:set_string("formspec", (data.formspec or ""));
+end
+
+
+
+
+-- Set the owner of the locked object.
+-- Call this in after_place_node in register_node. Example:
+-- after_place_node = function(pos, placer)
+-- locks:lock_set_owner( pos, placer, "Shared locked object" );
+-- end,
+function locks:lock_set_owner( pos, player_or_name, description )
+
+ if( pos == nil or player_or_name == nil ) then
+ print( "Error: [locks] Missing/wrong parameters to lock_set_owner");
+ return false;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ if( meta == nil ) then
+ print( "Error: [locks] lock_set_owner: unable to get meta data");
+ return;
+ end
+
+ -- accepts a name or a player object
+ if( type( player_or_name )~="string") then
+ player_or_name = player_or_name:get_player_name();
+ end
+
+ meta:set_string("owner", player_or_name or "");
+ -- add the name of the owner to the description
+ meta:set_string("infotext", ( description or "Shared lockecd object" ).." (owned by "..meta:get_string("owner")..")");
+end
+
+
+
+-- The locked object can only be digged by the owner OR by people with the diglocks priv
+-- Call this in can_dig in register_node. Example:
+-- can_dig = function(pos,player)
+-- return locks:lock_allow_dig( pos, player );
+-- end
+function locks:lock_allow_dig( pos, player )
+
+ if( pos == nil or player == nil ) then
+ print( "Error: [locks] Missing/wrong parameters to lock_allow_dig");
+ return false;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ local lock_owner = meta:get_string("owner");
+
+ -- locks who lost their owner can be opened/digged by anyone
+ if( meta == nil or lock_owner == nil or lock_owner == "") then
+ return true;
+ end
+
+ -- the owner can dig up his own locked objects
+ if( player:get_player_name() == meta:get_string("owner")) then
+ return true;
+ end
+
+ -- players with diglocks priv can dig up locked objects as well
+ if( minetest.check_player_privs(player:get_player_name(), {diglocks=true})) then
+ return true;
+ end
+
+ return false; -- fallback
+end
+
+
+-- The locked object can only be used (i.e. opened, stuff taken out, changed, ... - depends on object) if this
+-- function returns true. Call it wherever appropriate (usually in on_punch in register_node). Example:
+-- on_punch = function(pos,player)
+-- if( !locks:lock_allow_use( pos, player ) then
+-- print( "Sorry, you have no access here.");
+-- else
+-- do_what_this_object_is_good_for( pos, puncher );
+-- end
+-- end
+
+function locks:lock_allow_use( pos, player )
+
+ if( pos == nil or player == nil ) then
+ print( "Error: [locks] Missing/wrong parameters to lock_allow_use");
+ return false;
+ end
+
+ local name = player:get_player_name();
+ local meta = minetest.env:get_meta(pos);
+
+ -- pipeworks sends a special username
+ if( name == ':pipeworks' or (player.is_fake_player and player.is_fake_player==":pipeworks")) then
+ if( meta:get_int( 'allow_pipeworks' ) == 1 ) then
+ return true;
+ else
+ return false;
+ end
+ end
+
+ -- the player has to have a key or a keychain to open his own shared locked objects
+ if( name == meta:get_string("owner")) then
+
+ if( not( player:get_inventory():contains_item("main","locks:keychain 1"))
+ and not( player:get_inventory():contains_item("main","locks:key 1"))) then
+ minetest.chat_send_player( name, "You do not have a key or a keychain. Without that you can't use your shared locked objects!");
+ return false;
+ end
+
+ -- the player has to have a keychain to open shared locked objects of other players
+ else
+
+ if( not( player:get_inventory():contains_item("main","locks:keychain 1"))) then
+ minetest.chat_send_player(name, "You do not have a keychain. Without that you can't open shared locked objects of other players!");
+ return false;
+ end
+ end
+
+ -- if the user would even be allowed to dig this node up, using the node is allowed as well
+ if( locks:lock_allow_dig( pos, player )) then
+ return true;
+ end
+
+
+ if( meta == nil ) then
+ minetest.chat_send_player( name, "Error: Could not access metadata of this shared locked object.");
+ return false;
+ end
+
+ -- players with openlocks priv can open locked objects
+ if( minetest.check_player_privs(name, {openlocks=true})) then
+ return true;
+ end
+
+ -- the player might be specificly allowed to use this object through allowed_users
+ local liste = meta:get_string("allowed_users"):split( "," );
+ for i in ipairs( liste ) do
+
+ if( liste[i] == name ) then
+ return true;
+ end
+
+ -- the player might member of a playergroup that is allowed to use this object
+ if( liste[i]:sub(1,1) == ":"
+ and playergroups ~= nil
+ and playergroups:is_group_member( meta:get_string("owner"), liste[i]:sub(2), name )) then
+ return true;
+ end
+
+ end
+
+
+ -- the player may have entered the right password
+ if( name == meta:get_string("pw_user")) then
+ return true;
+ end
+
+ -- the lock may have a password set. If this is the case then ask the user for it
+ if( meta:get_string( "password" ) and meta:get_string( "password" ) ~= "" ) then
+ minetest.chat_send_player(name, "Access denied. Right-click and enter password first!");
+ return false;
+ end
+
+ return false; -- fallback
+
+end
+
+
+
+-- Method for the lock to get password and configuration data
+-- Call in on_receive_fields in register_node. Example:
+-- on_receive_fields = function(pos, formname, fields, sender)
+-- locks:lock_handle_input( pos, formname, fields, sender );
+-- end,
+function locks:lock_handle_input( pos, formname, fields, player )
+
+ if( pos == nil or player == nil ) then
+ print( "Error: [locks] Missing/wrong parameters to lock_handle_input");
+ return false;
+ end
+
+ local meta = minetest.env:get_meta(pos);
+ if( meta == nil ) then
+ print( "Error: [locks] lock_handle_input: unable to get meta data");
+ return;
+ end
+
+ -- is this input the lock is supposed to handle?
+ if( ( not( fields.locks_sent_lock_command )
+ or fields.locks_sent_lock_command == "" )
+ and (fields.quit and (fields.quit==true or fields.quit=='true'))) then
+-- or not( fields.locks_sent_input )
+ return;
+ end
+
+ name = player:get_player_name();
+
+ if( fields.locks_sent_lock_command == "/help" ) then
+
+ if( name == meta:get_string( "owner" )) then
+ minetest.chat_send_player(name, "The following commands are available to you, the owner of this object, only:\n"..
+ " /help Shows this help text.\n"..
+ " /add <name> Player <name> can now unlock this object with any key.\n"..
+ " /del <name> Player <name> can no longer use this object.\n"..
+ " /list Shows a list of players who can use this object.\n"..
+ " /set <password> Sets a password. Everyone who types that in can use the object.\n"..
+ " /pipeworks Toggles permission for pipeworks to take inventory out of the shared locked object.\n");
+
+ else if( locks:lock_allow_use( pos, player )) then
+ minetest.chat_send_player(name, "This locked object is owned by "..tostring( meta:get_string( "owner" ))..".\n"..
+ "You do have access to it.\n");
+
+ else if( meta:get_string( "password" ) ~= "" ) then
+ minetest.chat_send_player(name, "This locked object is owned by "..tostring( meta:get_string( "owner" ))..".\n"..
+ "Enter the correct password to gain access.\n");
+
+ else
+ minetest.chat_send_player(name, "This locked object is owned by "..tostring( meta:get_string( "owner" ))..".\n"..
+ "There is no password set. You can only gain access if the owner grants it to you.");
+
+ end end end -- lua is not the most intuitive language here....
+ return;
+ end -- of /help
+
+ -- sanitize player input
+ if( fields.locks_sent_lock_command:match("[^%a%d%s_%- /%:]")) then
+ minetest.chat_send_player(name, "Input contains unsupported characters. Allowed: a-z, A-Z, 0-9, _, -, :.");
+ return;
+ end
+
+ if( #fields.locks_sent_lock_command > 60) then
+ minetest.chat_send_player(name, "Input too long. Only up to 80 characters supported.");
+ return;
+ end
+
+
+ -- other players can only try to input the correct password
+ if( name ~= meta:get_string( "owner" )) then
+
+ -- no need to bother with trying other PWs if none is set...
+ if( meta:get_string("password")=="" ) then
+ minetest.chat_send_player(name, "There is no password set. Access denied.");
+ return;
+ end
+
+ -- the player may have entered the right password already
+ if( name == meta:get_string("pw_user")) then
+ -- nothing to do - the player entered the right pw alredy
+ minetest.chat_send_player(name, "You have entered the right password already. Access granted.");
+ return;
+ end
+
+ if( fields.locks_sent_lock_command ~= meta:get_string("password")) then
+ minetest.chat_send_player(name, "Wrong password. Access denied.");
+ return;
+ end
+
+ -- store the last user (this one) who entered the right pw
+ meta:set_string( "pw_user", name );
+
+ minetest.chat_send_player(name, "Password confirmed. Access granted.");
+ return;
+ end
+
+ local txt = "";
+
+
+ if( fields.locks_sent_lock_command == "/list" ) then
+
+ if( meta:get_string("allowed_users")=="" ) then
+ txt = "No other users are allowed to use this object (except those with global privs like moderators/admins).";
+ else
+ txt = "You granted the following users/groups of users access to this object:\n";
+ local liste = meta:get_string("allowed_users"):split( "," );
+ for i in ipairs( liste ) do
+ txt = txt.." "..tostring(liste[i]);
+ end
+ end
+
+ if( meta:get_string( "password" ) == "" ) then
+ txt = txt.."\nThere is no password set. That means no one can get access through a password.";
+ else
+ txt = txt.."\nThe password for this lock is: \""..tostring( meta:get_string( "password" ).."\"");
+ end
+
+ if( not( minetest.get_modpath("pipeworks") )) then
+ txt = txt.."\nThe pipeworks mod is not installed. Install it if you wish support for tubes.";
+ elseif( meta:get_int( "allow_pipeworks" ) == 1 ) then
+ txt = txt.."\nTubes from pipeworks may be used to extract items out of/add items to this shared locked object.";
+ else
+ txt = txt.."\nInput from tubes is accepted, but output to them is denied (default).";
+ end
+
+ minetest.chat_send_player(name, txt );
+ return;
+ end -- of /list
+
+
+ -- toggle tube output on/off
+ if( fields.locks_sent_lock_command == "/pipeworks" ) then
+
+ if( meta:get_int('allow_pipeworks') == 1 ) then
+ meta:set_int('allow_pipeworks', 0 );
+ minetest.chat_send_player( name, 'Output to pipework tubes is now DISABLED (input is still acceped).');
+ return;
+ else
+ meta:set_int('allow_pipeworks', 1 );
+ minetest.chat_send_player( name, 'Output to pipework tubes is now ENABLED. Connected tubes may insert and remove items.');
+ return;
+ end
+ end
+
+-- -- all other commands take exactly one parameter
+ local help = fields.locks_sent_lock_command:split( " " );
+
+ print( tostring( help[1] ));
+ print( tostring( help[2] ));
+
+
+ -- set/change a password
+ if( help[1]=="/set" ) then
+
+ -- if empty password then delete it
+ if( help[2]==nil ) then
+ help[2] = "";
+ end
+
+ minetest.chat_send_player(name, "Old password: \""..tostring( meta:get_string( "password" ))..
+ "\"\n Changed to new password: \""..tostring( help[2]).."\".");
+
+
+ meta:set_string( "password", help[2]);
+ -- reset the list of users who typed the right password
+ meta:set_string("pw_users","");
+
+ if( help[2]=="") then
+ minetest.chat_send_player(name, "The password is empty and thus will be disabled.");
+ end
+ return;
+ end
+
+ if( help[2]==nil or help[2]=="") then
+ minetest.chat_send_player(name, "Error: Missing parameter (player name) for command \""..tostring( help[1] ).."\"." );
+ return;
+ end
+
+ -- for add and del: check if the player is already in the list
+
+ local found = false;
+ local anz = 0;
+ local liste = meta:get_string("allowed_users"):split( "," );
+ for i in ipairs( liste ) do
+
+ anz = anz + 1; -- count players
+ if( tostring( liste[i] ) == help[2] ) then
+ found = true;
+ end
+
+ end
+
+ if( help[1]=="/add" and found==true ) then
+ minetest.chat_send_player(name, "Player \""..tostring( help[2] ).."\" is already allowed to use this locked object. Nothing to do.");
+ return;
+ end
+
+ if( help[1]=="/del" and found==false) then
+ minetest.chat_send_player(name, "Player \""..tostring( help[2] ).."\" is not amongst the players allowed to use this locked object. Nothing to do.");
+ return;
+ end
+
+
+ if( help[1]=="/add" ) then
+
+ if( anz >= 6 ) then
+ minetest.chat_send_player(name, "Sorry, no more players can be added. To save space, only up to 6 players can be added. For more players please use groups!");
+ return;
+ end
+
+ if( name == help[2] ) then
+ minetest.chat_send_player(name, "You are already owner of this object.");
+ return;
+ end
+
+ -- the player might try to add a playergroup
+ if( help[2]:sub(1,1) == ":" ) then
+
+ if( not( playergroups )) then
+ minetest.chat_send_player(name, "Sorry, this server does not support playergroups.");
+ return;
+ end
+
+ if( #help[2]<2 ) then
+ minetest.chat_send_player(name, "Please specify the name of the playergroup you want to add!");
+ return;
+ end
+
+ if( not( playergroups:is_playergroup(meta:get_string("owner"), help[2]:sub(2) ))) then
+ minetest.chat_send_player(name, "You do not have a playergroup named \""..tostring( help[2]:sub(2)).."\".");
+ return;
+ end
+
+ else
+
+ -- check if the player exists
+ local privs = minetest.get_player_privs( help[2] );
+ if( not( privs ) or not( privs.interact )) then
+ minetest.chat_send_player(name, "Player \""..help[2].."\" not found or has no interact privs.");
+ return;
+ end
+ end
+
+ meta:set_string( "allowed_users", meta:get_string("allowed_users")..","..help[2] );
+
+ if( help[2]:sub(1,1) == ":" ) then
+ minetest.chat_send_player(name, "All members of your playergroup "..tostring(help[2]:sub(2)).." may now use/access this locked object.");
+ else
+ minetest.chat_send_player(name, help[2].." may now use/access this locked object.");
+ end
+ return;
+ end
+
+
+ if( help[1]=="/del" ) then
+
+ userlist = meta:get_string("allowed_users"):split( ","..help[2] );
+ meta:set_string( "allowed_users", ( userlist[1] or "" )..(userlist[2] or "" ));
+
+ minetest.chat_send_player(name, "Access for player \""..tostring(help[2]).."\" has been revoked.");
+ return;
+ end
+
+ minetest.chat_send_player(name, "Error: Command \""..tostring(help[1]).."\" not understood.");
+end
+
+
+
+-- craftitem; that can be used to craft shared locked objects
+minetest.register_craftitem("locks:lock", {
+ description = "Lock to lock and share objects",
+ image = "locks_lock16.png",
+});
+
+
+minetest.register_craft({
+ output = "locks:lock 2",
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot','default:steel_ingot'},
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'', 'default:steel_ingot',''},
+ }
+ });
+
+
+-- a key allowes to open your own shared locked objects
+minetest.register_craftitem("locks:key", {
+ description = "Key to open your own shared locked objects",
+ image = "locks_key32.png",
+});
+
+minetest.register_craft({
+ output = "locks:key",
+ recipe = {
+ {'', 'default:stick', ''},
+ {'', 'default:steel_ingot',''},
+ }
+ });
+
+
+
+-- in order to open shared locked objects of other players, a keychain is needed (plus the owner has to admit it via /add playername or through /set password)
+minetest.register_craftitem("locks:keychain", {
+ description = "Keychain to open shared locked objects of others",
+ image = "locks_keychain32.png",
+});
+
+minetest.register_craft({
+ output = "locks:keychain",
+ recipe = {
+ {'', 'default:steel_ingot', '' },
+ {'locks:key', 'locks:key', 'locks:key'},
+ }
+ });
+
+dofile(minetest.get_modpath("locks").."/shared_locked_chest.lua");
+dofile(minetest.get_modpath("locks").."/shared_locked_sign_wall.lua");
+dofile(minetest.get_modpath("locks").."/shared_locked_xdoors2.lua");
+dofile(minetest.get_modpath("locks").."/shared_locked_furnace.lua");
+
+
diff --git a/locks/liscence.txt b/locks/liscence.txt
new file mode 100644
index 0000000..7dd6dff
--- /dev/null
+++ b/locks/liscence.txt
@@ -0,0 +1,19 @@
+License of locks mod for Minetest-c55
+-------------------------------------
+
+
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
diff --git a/locks/shared_locked_chest.lua b/locks/shared_locked_chest.lua
new file mode 100644
index 0000000..66496b1
--- /dev/null
+++ b/locks/shared_locked_chest.lua
@@ -0,0 +1,137 @@
+-- 09.01.13 Added support for pipeworks.
+
+
+locks.chest_add = {};
+locks.chest_add.tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
+ "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"};
+locks.chest_add.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2};
+locks.chest_add.tube = {};
+
+-- additional/changed definitions for pipeworks;
+-- taken from pipeworks/compat.lua
+if( locks.pipeworks_enabled ) then
+ locks.chest_add.tiles = {
+ "default_chest_top.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_top.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png"};
+ locks.chest_add.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,
+ tubedevice = 1, tubedevice_receiver = 1 };
+ locks.chest_add.tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.env:get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item("main", stack)
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.env:get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("main", stack)
+ end,
+ input_inventory = "main",
+ connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1}
+ };
+end
+
+
+minetest.register_node("locks:shared_locked_chest", {
+ description = "Shared locked chest",
+ tiles = locks.chest_add.tiles,
+ paramtype2 = "facedir",
+ groups = locks.chest_add.groups,
+ tube = locks.chest_add.tube,
+ legacy_facedir_simple = true,
+
+ on_construct = function(pos)
+ local meta = minetest.env:get_meta(pos)
+ -- prepare the lock of the chest
+ locks:lock_init( pos,
+ "size[8,10]"..
+-- "field[0.5,0.2;8,1.0;locks_sent_lock_command;Locked chest. Type password, command or /help for help:;]"..
+-- "button_exit[3,0.8;2,1.0;locks_sent_input;Proceed]"..
+ "list[current_name;main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "field[0.3,9.6;6,0.7;locks_sent_lock_command;Locked chest. Type /help for help:;]"..
+ "background[-0.5,-0.65;9,11.2;bg_shared_locked_chest.jpg]"..
+ "button_exit[6.3,9.2;1.7,0.7;locks_sent_input;Proceed]" );
+-- "size[8,9]"..
+-- "list[current_name;main;0,0;8,4;]"..
+-- "list[current_player;main;0,5;8,4;]");
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+
+ after_place_node = function(pos, placer)
+
+ if( locks.pipeworks_enabled ) then
+ pipeworks.scan_for_tube_objects( pos );
+ end
+
+ locks:lock_set_owner( pos, placer, "Shared locked chest" );
+ end,
+
+
+ can_dig = function(pos,player)
+
+ if( not(locks:lock_allow_dig( pos, player ))) then
+ return false;
+ end
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ locks:lock_handle_input( pos, formname, fields, sender );
+ end,
+
+
+
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ return count;
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ return stack:get_count()
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in locked shared chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to locked shared chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from locked shared chest at "..minetest.pos_to_string(pos))
+ end,
+
+
+ after_dig_node = function( pos )
+ if( locks.pipeworks_enabled ) then
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ end
+})
+
+minetest.register_craft({
+ output = 'locks:shared_locked_chest',
+ recipe = {
+ { 'default:chest', 'locks:lock', '' },
+ },
+})
+
+print( "[Mod] locks: loading locks:shared_locked_chest");
diff --git a/locks/shared_locked_furnace.lua b/locks/shared_locked_furnace.lua
new file mode 100644
index 0000000..1543c7b
--- /dev/null
+++ b/locks/shared_locked_furnace.lua
@@ -0,0 +1,436 @@
+
+-- this is a (slightly!) modified copy of minetest_game/mods/default/nodes.lua,
+-- containing only the furnace and adopted slightly for my locks mod
+
+
+-- 09.01.13 Added support for pipeworks.
+
+
+locks.furnace_add = {};
+locks.furnace_add.tiles_normal = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
+ "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front.png"};
+locks.furnace_add.tiles_active = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
+ "default_furnace_side.png", "default_furnace_side.png", --"default_furnace_front_active.png"};
+ {
+ image = "default_furnace_front_active.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 1.5
+ },
+ }};
+locks.furnace_add.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2};
+locks.furnace_add.tube = {};
+
+-- additional/changed definitions for pipeworks;
+-- taken from pipeworks/compat.lua
+if( locks.pipeworks_enabled ) then
+
+ locks.furnace_add.tiles_normal = {
+ "default_furnace_top.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_bottom.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_front.png" };
+
+
+ locks.furnace_add.tiles_active = {
+ "default_furnace_top.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_bottom.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ {
+ image = "default_furnace_front_active.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 1.5
+ },
+ }};
+-- "default_furnace_front_active.png" };
+
+
+ locks.furnace_add.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,
+ tubedevice = 1, tubedevice_receiver = 1 };
+ locks.furnace_add.tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.env:get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y == 1 then
+ return inv:add_item("fuel",stack)
+ else
+ return inv:add_item("src",stack)
+ end
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.env:get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y == 1 then
+ return inv:room_for_item("fuel", stack)
+ else
+ return inv:room_for_item("src", stack)
+ end
+ end,
+ input_inventory = "dst",
+ connect_sides = {left=1, right=1, back=1, front=1, bottom=1, top=1}
+ };
+end
+
+
+function locks.get_furnace_active_formspec(pos, percent)
+ local formspec =
+ "size[8,9]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
+ (100-percent)..":default_furnace_fire_fg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;1,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "background[-0.5,-0.65;9,10.35;bg_shared_locked_furnace.jpg]"..
+
+ "field[0.3,4.5;6,0.7;locks_sent_lock_command;Locked furnace. Type /help for help:;]"..
+ "button_exit[6.3,4;1.7,0.7;locks_sent_input;Proceed]" ;
+ return formspec
+end
+
+locks.furnace_inactive_formspec =
+ "size[8,9]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;1,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "background[-0.5,-0.65;9,10.35;bg_shared_locked_furnace.jpg]"..
+ "field[0.3,4.5;6,0.7;locks_sent_lock_command;Locked furnace. Type /help for help:;]"..
+ "button_exit[6.3,4;1.7,0.7;locks_sent_input;Proceed]" ;
+
+minetest.register_node("locks:shared_locked_furnace", {
+ description = "Shared locked furnace",
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ legacy_facedir_simple = true,
+
+ tiles = locks.furnace_add.tiles_normal,
+ groups = locks.furnace_add.groups,
+ tube = locks.furnace_add.tube,
+
+-- sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ locks:lock_init( pos, locks.furnace_inactive_formspec)
+ meta:set_string("infotext", "Shared locked furnace")
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+
+ after_place_node = function(pos, placer)
+ if( locks.pipeworks_enabled ) then
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ locks:lock_set_owner( pos, placer, "Shared locked furnace" );
+ end,
+ after_dig_node = function(pos)
+ if( locks.pipeworks_enabled ) then
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ end,
+
+ can_dig = function(pos,player)
+ if( not(locks:lock_allow_dig( pos, player ))) then
+ return false;
+ end
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ elseif not inv:is_empty("dst") then
+ return false
+ elseif not inv:is_empty("src") then
+ return false
+ end
+ return true
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ locks:lock_handle_input( pos, formname, fields, sender );
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if listname == "fuel" then
+ if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
+ if inv:is_empty("src") then
+ meta:set_string("infotext","Furnace is empty")
+ end
+ return stack:get_count()
+ else
+ return 0
+ end
+ elseif listname == "src" then
+ return stack:get_count()
+ elseif listname == "dst" then
+ return 0
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local stack = inv:get_stack(from_list, from_index)
+ if to_list == "fuel" then
+ if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
+ if inv:is_empty("src") then
+ meta:set_string("infotext","Furnace is empty")
+ end
+ return count
+ else
+ return 0
+ end
+ elseif to_list == "src" then
+ return count
+ elseif to_list == "dst" then
+ return 0
+ end
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ return stack:get_count()
+ end,
+})
+
+minetest.register_node("locks:shared_locked_furnace_active", {
+ description = "Furnace",
+ paramtype2 = "facedir",
+ light_source = 8,
+ drop = "locks:shared_locked_furnace",
+ groups = {cracky=2, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+
+ tiles = locks.furnace_add.tiles_active,
+ groups = locks.furnace_add.groups,
+ tube = locks.furnace_add.tube,
+
+-- sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ locks:lock_init( pos, locks.furnace_inactive_formspec)
+ meta:set_string("infotext", "Shared locked furnace");
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = function(pos,player)
+ if( not(locks:lock_allow_dig( pos, player ))) then
+ return false;
+ end
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ elseif not inv:is_empty("dst") then
+ return false
+ elseif not inv:is_empty("src") then
+ return false
+ end
+ return true
+ end,
+
+ after_place_node = function(pos, placer)
+ if( locks.pipeworks_enabled ) then
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ locks:lock_set_owner( pos, placer, "Shared locked furnace (active)" );
+ end,
+ after_dig_node = function(pos)
+ if( locks.pipeworks_enabled ) then
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ locks:lock_handle_input( pos, formname, fields, sender );
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if listname == "fuel" then
+ if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
+ if inv:is_empty("src") then
+ meta:set_string("infotext","Shared locked furnace (empty)")
+ end
+ return stack:get_count()
+ else
+ return 0
+ end
+ elseif listname == "src" then
+ return stack:get_count()
+ elseif listname == "dst" then
+ return 0
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local stack = inv:get_stack(from_list, from_index)
+ if to_list == "fuel" then
+ if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
+ if inv:is_empty("src") then
+ meta:set_string("infotext","Shared locked furnace (empty)")
+ end
+ return count
+ else
+ return 0
+ end
+ elseif to_list == "src" then
+ return count
+ elseif to_list == "dst" then
+ return 0
+ end
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if( not( locks:lock_allow_use( pos, player ))) then
+ return 0;
+ end
+ return stack:get_count()
+ end,
+})
+
+-- better make this a function specific to this mod to avoid trouble with the same function in default
+locks.hacky_swap_node = function(pos,name)
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local meta0 = meta:to_table()
+ if node.name == name then
+ return
+ end
+ node.name = name
+ local meta0 = meta:to_table()
+ minetest.set_node(pos,node)
+ meta = minetest.get_meta(pos)
+ meta:from_table(meta0)
+end
+
+minetest.register_abm({
+ nodenames = {"locks:shared_locked_furnace","locks:shared_locked_furnace_active"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ for i, name in ipairs({
+ "fuel_totaltime",
+ "fuel_time",
+ "src_totaltime",
+ "src_time"
+ }) do
+ if meta:get_string(name) == "" then
+ meta:set_float(name, 0.0)
+ end
+ end
+
+ local inv = meta:get_inventory()
+
+ local srclist = inv:get_list("src")
+ local cooked = nil
+ local aftercooked
+
+ if srclist then
+ cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+
+ local was_active = false
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ was_active = true
+ meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
+ meta:set_float("src_time", meta:get_float("src_time") + 1)
+ if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
+ -- check if there's room for output in "dst" list
+ if inv:room_for_item("dst",cooked.item) then
+ -- Put result in "dst" list
+ inv:add_item("dst", cooked.item)
+ -- take stuff from "src" list
+ inv:set_stack("src", 1, aftercooked.items[1])
+ else
+ print("Could not insert '"..cooked.item:to_string().."'")
+ end
+ meta:set_string("src_time", 0)
+ end
+ end
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ local percent = math.floor(meta:get_float("fuel_time") /
+ meta:get_float("fuel_totaltime") * 100)
+ meta:set_string("infotext","Shared locked furnace active: "..percent.."%")
+ locks.hacky_swap_node(pos,"locks:shared_locked_furnace_active")
+ meta:set_string("formspec",locks.get_furnace_active_formspec(pos, percent))
+ return
+ end
+
+ local fuel = nil
+ local afterfuel
+ local cooked = nil
+ local fuellist = inv:get_list("fuel")
+ local srclist = inv:get_list("src")
+
+ if srclist then
+ cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+ if fuellist then
+ fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
+ end
+
+ if not( fuel) or fuel.time <= 0 then
+ meta:set_string("infotext","Shared locked furnace out of fuel")
+ locks.hacky_swap_node(pos,"locks:shared_locked_furnace")
+ meta:set_string("formspec", locks.furnace_inactive_formspec)
+ return
+ end
+
+ if cooked.item:is_empty() then
+ if was_active then
+ meta:set_string("infotext","Shared locked furnace is empty")
+ locks.hacky_swap_node(pos,"locks:shared_locked_furnace")
+ meta:set_string("formspec", locks.furnace_inactive_formspec)
+ end
+ return
+ end
+
+ meta:set_string("fuel_totaltime", fuel.time)
+ meta:set_string("fuel_time", 0)
+
+ inv:set_stack("fuel", 1, afterfuel.items[1])
+ end,
+})
+
+
+minetest.register_craft({
+ output = 'locks:shared_locked_furnace',
+ recipe = {
+ { 'default:furnace', 'locks:lock', '' },
+ },
+})
+
+print( "[Mod] locks: loading locks:shared_locked_furnace");
+
+
diff --git a/locks/shared_locked_sign_wall.lua b/locks/shared_locked_sign_wall.lua
new file mode 100644
index 0000000..2dcf19e
--- /dev/null
+++ b/locks/shared_locked_sign_wall.lua
@@ -0,0 +1,77 @@
+
+-- allow aborting with ESC in newer Versions of MT again
+
+-- a sign
+minetest.register_node("locks:shared_locked_sign_wall", {
+ description = "Shared locked sign",
+ drawtype = "signlike",
+ tiles = {"default_sign_wall.png"},
+ inventory_image = "default_sign_wall.png",
+ wield_image = "default_sign_wall.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "wallmounted",
+ --wall_top = <default>
+ --wall_bottom = <default>
+ --wall_side = <default>
+ },
+ groups = {choppy=2,dig_immediate=2},
+ legacy_wallmounted = true,
+
+
+ on_construct = function(pos)
+ local meta = minetest.env:get_meta(pos)
+ -- prepare the lock of the sign
+ locks:lock_init( pos,
+ "size[8,4]"..
+ "field[0.3,0.6;6,0.7;text;Text:;${text}]"..
+ "field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]"..
+ "button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]"..
+ "background[-0.5,-0.5;9,5;bg_shared_locked_sign.jpg]" );
+ end,
+
+ after_place_node = function(pos, placer)
+ locks:lock_set_owner( pos, placer, "Shared locked sign" );
+ end,
+
+
+ can_dig = function(pos,player)
+ return locks:lock_allow_dig( pos, player );
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+
+ -- if the user already has the right to use this and did input text
+ if( fields.text
+ and ( not(fields.locks_sent_lock_command)
+ or fields.locks_sent_lock_command=="")
+ and locks:lock_allow_use( pos, sender )) then
+
+ --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
+ local meta = minetest.env:get_meta(pos)
+ fields.text = fields.text or "";
+ print((sender:get_player_name() or "").." wrote \""..fields.text..
+ "\" to sign at "..minetest.pos_to_string(pos));
+ meta:set_string("text", fields.text);
+ meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]");
+
+ -- a command for the lock?
+ else
+ locks:lock_handle_input( pos, formname, fields, sender );
+ end
+
+ end,
+ });
+
+
+minetest.register_craft({
+ output = 'locks:shared_locked_sign_wall',
+ recipe = {
+ { 'default:sign_wall', 'locks:lock', '' },
+ },
+})
+
+print( "[Mod] locks: loading locks:shared_locked_sign_wall");
diff --git a/locks/shared_locked_xdoors2.lua b/locks/shared_locked_xdoors2.lua
new file mode 100644
index 0000000..1af36fc
--- /dev/null
+++ b/locks/shared_locked_xdoors2.lua
@@ -0,0 +1,212 @@
+-- xDoors² mod by xyz
+-- modified by Sokomine to allow locked doors that can only be opened/closed/dig up by the player who placed them
+-- a little bit modified by addi to allow someone with the priv "opendoors" to open/close/dig all locked doors.
+-- Sokomine: modified again so that it uses the new locks-mod
+
+local door_bottom = {-0.5, -0.5, -0.5, 0.5, 0.5, -0.4}
+local door_top = {
+ {-0.5, -0.5, -0.5, -0.3, 0.5, -0.4},
+ {0.3, -0.5, -0.5, 0.5, 0.5, -0.4},
+ {-0.3, 0.3, -0.5, 0.3, 0.5, -0.4},
+ {-0.3, -0.5, -0.5, 0.3, -0.4, -0.4},
+ {-0.05, -0.4, -0.5, 0.05, 0.3, -0.4},
+ {-0.3, -0.1, -0.5, -0.05, 0, -0.4},
+ {0.05, -0.1, -0.5, 0.3, 0, -0.4}
+}
+
+local is_top = function(name)
+ return name:sub(12, 12) == "t"
+end
+
+
+local xdoors2_transform = function(pos, node, puncher)
+
+ if( not( locks:lock_allow_use( pos, puncher ))) then
+ minetest.chat_send_player( puncher:get_player_name(), "This door is locked. It can only be opened by its owner or people with a key that fits.");
+ return;
+ end
+
+ if is_top(node.name) then
+ pos = {x = pos.x, y = pos.y - 1, z = pos.z}
+ end
+ local t = 3 - node.name:sub(-1)
+ local p2 = 0
+ if t == 2 then
+ p2 = (node.param2 + 1) % 4
+ else
+ p2 = (node.param2 + 3) % 4
+ end
+
+ local olddata = locks:get_lockdata( pos );
+ minetest.env:add_node(pos, {name = "locks:door_bottom_"..t, param2 = p2})
+ minetest.env:add_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "locks:door_top_"..t, param2 = p2})
+
+ -- remember who owns the door, what passwords are set etc.
+ locks:set_lockdata( pos, olddata );
+ locks:set_lockdata( {x = pos.x, y = pos.y + 1, z = pos.z}, olddata );
+end
+
+
+local xdoors2_destruct = function(pos, oldnode)
+ if is_top(oldnode.name) then
+ pos = {x = pos.x, y = pos.y - 1, z = pos.z}
+ end
+ minetest.env:remove_node(pos)
+ minetest.env:remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
+end
+
+for i = 1, 2 do
+ minetest.register_node("locks:door_top_"..i, {
+ tiles = {"xdoors2_side.png", "xdoors2_side.png", "xdoors2_top.png", "xdoors2_bottom.png", "xdoors2_top_"..(3 - i)..".png", "xdoors2_top_"..i..".png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ drop = "locks:door",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = door_top
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = door_bottom
+ },
+ on_punch = xdoors2_transform,
+ after_dig_node = xdoors2_destruct,
+
+ on_construct = function(pos)
+ locks:lock_init( pos,
+ "size[8,2]"..
+ "field[0.3,0.6;6,0.7;locks_sent_lock_command;Locked door. Type /help for help:;]"..
+ "button_exit[6.3,1.2;1.7,0.7;locks_sent_input;Proceed]" );
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ locks:lock_handle_input( pos, formname, fields, sender );
+ end,
+
+ can_dig = function(pos,player)
+ return locks:lock_allow_dig( pos, player );
+ end
+ })
+ minetest.register_node("locks:door_bottom_"..i, {
+ tiles = {"xdoors2_side.png", "xdoors2_side.png", "xdoors2_top.png", "xdoors2_bottom.png", "locks_xdoors2_bottom_"..(3 - i)..".png", "locks_xdoors2_bottom_"..i..".png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ drop = "locks:door",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = door_bottom
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = door_bottom
+ },
+ on_punch = xdoors2_transform,
+ after_dig_node = xdoors2_destruct,
+
+ on_construct = function(pos)
+ locks:lock_init( pos,
+ "size[8,2]"..
+ "field[0.3,0.6;6,0.7;locks_sent_lock_command;Locked door. Type /help for help:;]"..
+ "button_exit[6.3,0.2;1.7,0.7;locks_sent_input;Proceed]" );
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ locks:lock_handle_input( pos, formname, fields, sender );
+ end,
+
+ can_dig = function(pos,player)
+ return locks:lock_allow_dig( pos, player );
+ end
+ })
+end
+
+local delta = {
+ {x = -1, z = 0},
+ {x = 0, z = 1},
+ {x = 1, z = 0},
+ {x = 0, z = -1}
+}
+
+minetest.register_node("locks:door", {
+ description = "Shared locked Wooden Door",
+ node_placement_prediction = "",
+ inventory_image = 'locks_xdoors2_door.png',
+ wield_image = 'xdoors2_door.png',
+ stack_max = 1,
+ on_place = function(itemstack, placer, pointed_thing)
+ local above = pointed_thing.above
+
+ -- there should be 2 empty nodes
+ if minetest.env:get_node({x = above.x, y = above.y + 1, z = above.z}).name ~= "air" then
+ return itemstack
+ end
+
+ local fdir = 0
+ local placer_pos = placer:getpos()
+ if placer_pos then
+ dir = {
+ x = above.x - placer_pos.x,
+ y = above.y - placer_pos.y,
+ z = above.z - placer_pos.z
+ }
+ fdir = minetest.dir_to_facedir(dir)
+ end
+
+ local t = 1
+ local another_door = minetest.env:get_node({x = above.x + delta[fdir + 1].x, y = above.y, z = above.z + delta[fdir + 1].z})
+ if (another_door.name:sub(-1) == "1" and another_door.param2 == fdir)
+ or (another_door.name:sub(-1) == "2" and another_door.param2 == (fdir + 1) % 4) then
+ t = 2
+ end
+
+ minetest.env:add_node(above, {name = "locks:door_bottom_"..t, param2 = fdir})
+ minetest.env:add_node({x = above.x, y = above.y + 1, z = above.z}, {name = "locks:door_top_"..t, param2 = fdir})
+
+ -- store who owns the door; the other data can be default for now
+ locks:lock_set_owner( above, placer:get_player_name() or "", "Shared locked door");
+ locks:lock_set_owner( {x = above.x, y = above.y + 1, z = above.z}, placer:get_player_name() or "", "Shared locked door");
+
+ return ItemStack("")
+ end
+})
+
+
+-- if xdoors2 is installed
+if( minetest.get_modpath("xdoors2") ~= nil ) then
+ minetest.register_craft({
+ output = 'locks:door',
+ recipe = {
+ { 'xdoors2:door', 'locks:lock', '' },
+ },
+ });
+
+-- if the normal doors are installed
+else if( minetest.get_modpath("doors") ~= nil ) then
+
+ minetest.register_craft({
+ output = 'locks:door',
+ recipe = {
+ { 'doors:door_wood', 'locks:lock', '' },
+ },
+ })
+
+-- fallback if no doors can be found
+else
+ minetest.register_craft({
+ output = 'locks:door',
+ recipe = {
+ { 'default:wood', 'default:wood', '' },
+ { 'default:wood', 'default:wood', 'locks:lock' },
+ { 'default:wood', 'default:wood', '' },
+ },
+ });
+end
+end -- of previous else
+
+
+
+print( "[Mod] locks: loading locks:door");
diff --git a/locks/textures/bg_shared_locked_chest.jpg b/locks/textures/bg_shared_locked_chest.jpg
new file mode 100644
index 0000000..531b004
--- /dev/null
+++ b/locks/textures/bg_shared_locked_chest.jpg
Binary files differ
diff --git a/locks/textures/bg_shared_locked_furnace.jpg b/locks/textures/bg_shared_locked_furnace.jpg
new file mode 100644
index 0000000..f77d584
--- /dev/null
+++ b/locks/textures/bg_shared_locked_furnace.jpg
Binary files differ
diff --git a/locks/textures/bg_shared_locked_sign.jpg b/locks/textures/bg_shared_locked_sign.jpg
new file mode 100644
index 0000000..866a622
--- /dev/null
+++ b/locks/textures/bg_shared_locked_sign.jpg
Binary files differ
diff --git a/locks/textures/licence.txt b/locks/textures/licence.txt
new file mode 100644
index 0000000..2591083
--- /dev/null
+++ b/locks/textures/licence.txt
@@ -0,0 +1,88 @@
+Licence for the following grafiks:
+lock
+key
+keychain
+
+author: addi
+
+This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
+http://creativecommons.org/licenses/by-sa/3.0/
+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+You are free:
+
+ to Share — to copy, distribute and transmit the work
+ to Remix — to adapt the work
+
+
+Under the following conditions:
+
+ Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
+
+ Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+ License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
+ "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.
+ "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.
+ "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
+ "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
+ "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
+ "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
+ "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
+ "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+ "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
+ "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+ to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
+ to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
+ to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
+ to Distribute and Publicly Perform Adaptations.
+
+ For the avoidance of doubt:
+ Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
+ Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
+ Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.
+ You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
+ If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
+ Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+ Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+ If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+ This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+ The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
diff --git a/locks/textures/locks_key16.png b/locks/textures/locks_key16.png
new file mode 100644
index 0000000..ed4d1f8
--- /dev/null
+++ b/locks/textures/locks_key16.png
Binary files differ
diff --git a/locks/textures/locks_key32.png b/locks/textures/locks_key32.png
new file mode 100644
index 0000000..07d6edd
--- /dev/null
+++ b/locks/textures/locks_key32.png
Binary files differ
diff --git a/locks/textures/locks_keychain16.png b/locks/textures/locks_keychain16.png
new file mode 100644
index 0000000..0b5f5d6
--- /dev/null
+++ b/locks/textures/locks_keychain16.png
Binary files differ
diff --git a/locks/textures/locks_keychain32.png b/locks/textures/locks_keychain32.png
new file mode 100644
index 0000000..39439e2
--- /dev/null
+++ b/locks/textures/locks_keychain32.png
Binary files differ
diff --git a/locks/textures/locks_lock16.png b/locks/textures/locks_lock16.png
new file mode 100644
index 0000000..6c841d6
--- /dev/null
+++ b/locks/textures/locks_lock16.png
Binary files differ
diff --git a/locks/textures/locks_lock32.png b/locks/textures/locks_lock32.png
new file mode 100644
index 0000000..139b332
--- /dev/null
+++ b/locks/textures/locks_lock32.png
Binary files differ
diff --git a/locks/textures/locks_xdoors2_bottom_1.png b/locks/textures/locks_xdoors2_bottom_1.png
new file mode 100644
index 0000000..0c6609e
--- /dev/null
+++ b/locks/textures/locks_xdoors2_bottom_1.png
Binary files differ
diff --git a/locks/textures/locks_xdoors2_bottom_2.png b/locks/textures/locks_xdoors2_bottom_2.png
new file mode 100644
index 0000000..b20cdf4
--- /dev/null
+++ b/locks/textures/locks_xdoors2_bottom_2.png
Binary files differ
diff --git a/locks/textures/locks_xdoors2_door.png b/locks/textures/locks_xdoors2_door.png
new file mode 100644
index 0000000..cc3d0d3
--- /dev/null
+++ b/locks/textures/locks_xdoors2_door.png
Binary files differ
diff --git a/locks/textures/xdoors2_bottom.png b/locks/textures/xdoors2_bottom.png
new file mode 100644
index 0000000..15ce4bd
--- /dev/null
+++ b/locks/textures/xdoors2_bottom.png
Binary files differ
diff --git a/locks/textures/xdoors2_side.png b/locks/textures/xdoors2_side.png
new file mode 100644
index 0000000..4c8937d
--- /dev/null
+++ b/locks/textures/xdoors2_side.png
Binary files differ
diff --git a/locks/textures/xdoors2_top.png b/locks/textures/xdoors2_top.png
new file mode 100644
index 0000000..2009fb9
--- /dev/null
+++ b/locks/textures/xdoors2_top.png
Binary files differ
diff --git a/locks/textures/xdoors2_top_1.png b/locks/textures/xdoors2_top_1.png
new file mode 100644
index 0000000..49b3c22
--- /dev/null
+++ b/locks/textures/xdoors2_top_1.png
Binary files differ
diff --git a/locks/textures/xdoors2_top_2.png b/locks/textures/xdoors2_top_2.png
new file mode 100644
index 0000000..c30539e
--- /dev/null
+++ b/locks/textures/xdoors2_top_2.png
Binary files differ
diff --git a/locks/textures/xdoors2locked_bottom_1.png b/locks/textures/xdoors2locked_bottom_1.png
new file mode 100644
index 0000000..db458a5
--- /dev/null
+++ b/locks/textures/xdoors2locked_bottom_1.png
Binary files differ
diff --git a/locks/textures/xdoors2locked_bottom_2.png b/locks/textures/xdoors2locked_bottom_2.png
new file mode 100644
index 0000000..5f7221b
--- /dev/null
+++ b/locks/textures/xdoors2locked_bottom_2.png
Binary files differ
diff --git a/locks/textures/xdoors2locked_door.png b/locks/textures/xdoors2locked_door.png
new file mode 100644
index 0000000..6247067
--- /dev/null
+++ b/locks/textures/xdoors2locked_door.png
Binary files differ
diff --git a/maptools/LICENSE.md b/maptools/LICENSE.md
new file mode 100644
index 0000000..ca48e3a
--- /dev/null
+++ b/maptools/LICENSE.md
@@ -0,0 +1,14 @@
+zlib license
+============
+
+Copyright (c) 2012-2015 Calinou and contributors
+
+**This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.**
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
diff --git a/maptools/NODES.md b/maptools/NODES.md
new file mode 100644
index 0000000..f5ce3cc
--- /dev/null
+++ b/maptools/NODES.md
@@ -0,0 +1,45 @@
+Item names for spawning the items using /give or /giveme
+========================================================
+
+Items
+-----
+
+* `admin_pick:` magenta pickaxe, infinite durability, mines everything including unbreakable blocks instantly. No drops. Don't put this pickaxe in the hands of a griefer, of course.
+
+* `admin_pick_with_drops:` same as admin pickaxe, but drops stuff.
+
+* `infinite_fuel:` fuel lasting for a (near)-infinite time. Don't worry about the "near" * it lasts for about 50 in-real-life years.
+
+* `super_apple:` a yellow apple which heals 20 HP.
+
+* `copper_coin,`
+* `silver_coin,`
+* `gold_coin:` these have nothing to do with the More Ores mod; they can be used as a currency for trading, or as an universal currency for mods that add shops.
+
+Blocks
+------
+
+**[!]** denotes an unpointable, unbreakable block; be very careful with them, they cannot be removed by hand (they can only be removed with WorldEdit or similar).
+
+
+* `(block)_u` : unbreakable, non-flammable, non-falling, non-decaying blocks, most common blocks have their unbreakable form (examples: maptools:stone or maptools:wood for unbreakable stone/wood). Examples: `stone_u`, `wood_u`, `glass_u`, …
+
+* `full_grass:` unbreakable block with the grass texture on all sides.
+
+* `player_clip:` **[!]** invisible block, not pointable.
+
+* `full_clip:` invisible block, pointable. Also available as a thin face: full_clip_face.
+
+* `smoke_block:` some smoke (does not harm players or entities).
+
+* `no_build:` **[!]** very basic building prevention.
+
+* `no_interact:` prevents interacting through the block (opening chests, furnaces, attacking entities, …).
+
+* `damage_(1…5):` **[!]** damaging blocks. The damage is in half hearts and ranges from 1 to 5 (0.5 to 2.5 hearts damage every second).
+
+* `kill:` **[!]** instant kill (deals 10 heart damage) blocks.
+
+* `light_block:` **[!]** invisible non-solid block, prevents light from passing through.
+
+* `light_bulb:` **[!]** invisible non-solid block, emitting a good amount of light.
diff --git a/maptools/README.md b/maptools/README.md
new file mode 100644
index 0000000..3a428b7
--- /dev/null
+++ b/maptools/README.md
@@ -0,0 +1,11 @@
+Map Tools
+=========
+
+Map Tools for Minetest <http://minetest.net>, a free/libre infinite
+world block sandbox game.
+
+To install, just clone this repository into your "mods" directory.
+
+Map Tools code is licensed under the zlib license, textures are by Calinou and are licensed under CC BY-SA 3.0 Unported.
+
+**Forum topic:** <https://forum.minetest.net/viewtopic.php?f=11&t=1882>
diff --git a/maptools/aliases.lua b/maptools/aliases.lua
new file mode 100644
index 0000000..f1f0cc5
--- /dev/null
+++ b/maptools/aliases.lua
@@ -0,0 +1,96 @@
+--[[
+Map Tools: alias definitions
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+minetest.register_alias("adminpick", "maptools:pick_admin")
+minetest.register_alias("adminpickaxe", "maptools:pick_admin")
+minetest.register_alias("admin_pick", "maptools:pick_admin")
+minetest.register_alias("admin_pickaxe", "maptools:pick_admin")
+minetest.register_alias("pick_admin", "maptools:pick_admin")
+minetest.register_alias("pickaxe_admin", "maptools:pick_admin")
+minetest.register_alias("pickadmin", "maptools:pick_admin")
+minetest.register_alias("pickaxeadmin", "maptools:pick_admin")
+minetest.register_alias("adminpickdrops", "maptools:pick_admin_with_drops")
+minetest.register_alias("adminpickaxedrops", "maptools:pick_admin_with_drops")
+minetest.register_alias("admin_pick_drops", "maptools:pick_admin_with_drops")
+minetest.register_alias("admin_pickaxe_drops", "maptools:pick_admin_with_drops")
+minetest.register_alias("pick_admin_drops", "maptools:pick_admin_with_drops")
+minetest.register_alias("pickaxe_admin_drops", "maptools:pick_admin_with_drops")
+minetest.register_alias("pickadmindrops", "maptools:pick_admin_with_drops")
+minetest.register_alias("pickaxeadmindrops", "maptools:pick_admin_with_drops")
+minetest.register_alias("infinitefuel", "maptools:infinitefuel")
+minetest.register_alias("infinite_fuel", "maptools:infinitefuel")
+minetest.register_alias("ifuel", "maptools:infinitefuel")
+minetest.register_alias("superapple", "maptools:superapple")
+minetest.register_alias("super_apple", "maptools:superapple")
+minetest.register_alias("sapple", "maptools:superapple")
+minetest.register_alias("nobuild", "maptools:nobuild")
+minetest.register_alias("nointeract", "maptools:nointeract")
+minetest.register_alias("damage_1", "maptools:damage_1")
+minetest.register_alias("damage_2", "maptools:damage_2")
+minetest.register_alias("damage_3", "maptools:damage_3")
+minetest.register_alias("damage_4", "maptools:damage_4")
+minetest.register_alias("damage_5", "maptools:damage_5")
+minetest.register_alias("pusher_1", "maptools:pusher_1")
+minetest.register_alias("pusher_2", "maptools:pusher_2")
+minetest.register_alias("pusher_3", "maptools:pusher_3")
+minetest.register_alias("pusher_4", "maptools:pusher_4")
+minetest.register_alias("pusher_5", "maptools:pusher_5")
+minetest.register_alias("pusher_6", "maptools:pusher_6")
+minetest.register_alias("pusher_7", "maptools:pusher_7")
+minetest.register_alias("pusher_8", "maptools:pusher_8")
+minetest.register_alias("pusher_9", "maptools:pusher_9")
+minetest.register_alias("pusher_10", "maptools:pusher_10")
+minetest.register_alias("killblock", "maptools:kill")
+minetest.register_alias("kill_block", "maptools:kill")
+minetest.register_alias("lightblock", "maptools:lightblock")
+minetest.register_alias("light_block", "maptools:lightblock")
+minetest.register_alias("lightbulb", "maptools:lightbulb")
+minetest.register_alias("light_bulb", "maptools:lightbulb")
+minetest.register_alias("playerclip", "maptools:playerclip")
+minetest.register_alias("player_clip", "maptools:playerclip")
+minetest.register_alias("pclip", "maptools:playerclip")
+minetest.register_alias("fullclip", "maptools:fullclip")
+minetest.register_alias("full_clip", "maptools:fullclip")
+minetest.register_alias("fclip", "maptools:fullclip")
+minetest.register_alias("full_clip", "maptools:fullclip")
+minetest.register_alias("full_clip_face", "maptools:fullclip_face")
+minetest.register_alias("fullclip_face", "maptools:fullclip_face")
+minetest.register_alias("fullclipface", "maptools:fullclip_face")
+minetest.register_alias("player_clip_bottom", "maptools:playerclip_bottom")
+minetest.register_alias("playerclip_bottom", "maptools:playerclip_bottom")
+minetest.register_alias("playerclipbottom", "maptools:playerclip_bottom")
+minetest.register_alias("player_clip_top", "maptools:playerclip_top")
+minetest.register_alias("playerclip_top", "maptools:playerclip_top")
+minetest.register_alias("playercliptop", "maptools:playerclip_top")
+minetest.register_alias("permanentfire", "maptools:permanent_fire")
+minetest.register_alias("permanent_fire", "maptools:permanent_fire")
+minetest.register_alias("pfire", "maptools:permanent_fire")
+minetest.register_alias("fakefire", "maptools:fake_fire")
+minetest.register_alias("fake_fire", "maptools:fake_fire")
+minetest.register_alias("ffire", "maptools:fake_fire")
+minetest.register_alias("igniter", "maptools:igniter")
+
+minetest.register_alias("stone_u", "maptools:stone")
+minetest.register_alias("tree_u", "maptools:tree")
+minetest.register_alias("cobble_u", "maptools:cobble")
+minetest.register_alias("wood_u", "maptools:wood")
+minetest.register_alias("sand_u", "maptools:sand")
+minetest.register_alias("gravel_u", "maptools:gravel")
+minetest.register_alias("brick_u", "maptools:brick")
+minetest.register_alias("dirt_u", "maptools:dirt")
+minetest.register_alias("glass_u", "maptools:glass")
+minetest.register_alias("sandstone_u", "maptools:sandstone")
+minetest.register_alias("desert_stone_u", "maptools:desert_stone")
+minetest.register_alias("desertstone_u", "maptools:desert_stone")
+minetest.register_alias("desert_sand_u", "maptools:desert_sand")
+minetest.register_alias("desertsand_u", "maptools:desert_sand")
+minetest.register_alias("leaves_u", "maptools:leaves")
+minetest.register_alias("grass_u", "maptools:grass")
+minetest.register_alias("fullgrass", "maptools:fullgrass")
+minetest.register_alias("fullgrass_u", "maptools:fullgrass")
+minetest.register_alias("mossycobble_u", "maptools:mossycobble")
+minetest.register_alias("mossy_cobble_u", "maptools:mossycobble")
diff --git a/maptools/config.lua b/maptools/config.lua
new file mode 100644
index 0000000..63f1a26
--- /dev/null
+++ b/maptools/config.lua
@@ -0,0 +1,29 @@
+--[[
+Map Tools: configuration handling
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+maptools.config = {}
+
+local function getbool_default(setting, default)
+ local value = minetest.setting_getbool(setting)
+ if value == nil then
+ value = default
+ end
+ return value
+end
+
+local function setting(settingtype, name, default)
+ if settingtype == "bool" then
+ maptools.config[name] =
+ getbool_default("maptools." .. name, default)
+ else
+ maptools.config[name] =
+ minetest.setting_get("maptools." .. name) or default
+ end
+end
+
+-- Show Map Tools stuff in creative inventory (1 or 0):
+setting("integer", "hide_from_creative_inventory", 1)
diff --git a/maptools/craftitems.lua b/maptools/craftitems.lua
new file mode 100644
index 0000000..c311aa9
--- /dev/null
+++ b/maptools/craftitems.lua
@@ -0,0 +1,47 @@
+--[[
+Map Tools: item definitions
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = maptools.intllib
+
+maptools.creative = maptools.config["hide_from_creative_inventory"]
+
+minetest.register_craftitem("maptools:copper_coin", {
+ description = S("Copper Coin"),
+ inventory_image = "maptools_copper_coin.png",
+ wield_scale = {x = 0.5, y = 0.5, z = 0.25},
+ stack_max = 10000,
+ groups = {not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_craftitem("maptools:silver_coin", {
+ description = S("Silver Coin"),
+ inventory_image = "maptools_silver_coin.png",
+ wield_scale = {x = 0.5, y = 0.5, z = 0.25},
+ stack_max = 10000,
+ groups = {not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_craftitem("maptools:gold_coin", {
+ description = S("Gold Coin"),
+ inventory_image = "maptools_gold_coin.png",
+ wield_scale = {x = 0.5, y = 0.5, z = 0.25},
+ stack_max = 10000,
+ groups = {not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_craftitem("maptools:infinitefuel", {
+ description = S("Infinite Fuel"),
+ inventory_image = "maptools_infinitefuel.png",
+ stack_max = 10000,
+ groups = {not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "maptools:infinitefuel",
+ burntime = 1000000000,
+})
diff --git a/maptools/default_nodes.lua b/maptools/default_nodes.lua
new file mode 100644
index 0000000..7c1e135
--- /dev/null
+++ b/maptools/default_nodes.lua
@@ -0,0 +1,389 @@
+--[[
+Map Tools: unbreakable default nodes
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = maptools.intllib
+
+maptools.creative = maptools.config["hide_from_creative_inventory"]
+
+minetest.register_node("maptools:stone", {
+ description = S("Unbreakable Stone"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_stone.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:stonebrick", {
+ description = S("Unbreakable Stone Brick"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_stone_brick.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:tree", {
+ description = S("Unbreakable Tree"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_wood_defaults(),
+ on_place = minetest.rotate_node
+})
+
+minetest.register_node("maptools:jungletree", {
+ description = S("Unbreakable Jungle Tree"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_wood_defaults(),
+ on_place = minetest.rotate_node
+})
+
+minetest.register_node("maptools:cactus", {
+ description = S("Unbreakable Cactus"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_wood_defaults(),
+ on_place = minetest.rotate_node
+})
+
+minetest.register_node("maptools:papyrus", {
+ description = S("Unbreakable Papyrus"),
+ drawtype = "plantlike",
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_papyrus.png"},
+ inventory_image = "default_papyrus.png",
+ wield_image = "default_papyrus.png",
+ walkable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}
+ },
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("maptools:dirt", {
+ description = S("Unbreakable Dirt"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_dirt.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_dirt_defaults(),
+})
+
+minetest.register_node("maptools:wood", {
+ description = S("Unbreakable Wooden Planks"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_wood.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("maptools:junglewood", {
+ description = S("Unbreakable Junglewood Planks"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_junglewood.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("maptools:glass", {
+ description = S("Unbreakable Glass"),
+ range = 12,
+ stack_max = 10000,
+ drawtype = "glasslike",
+ tiles = {"default_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_node("maptools:leaves", {
+ description = S("Unbreakable Leaves"),
+ range = 12,
+ stack_max = 10000,
+ drawtype = "allfaces_optional",
+ tiles = {"default_leaves.png"},
+ paramtype = "light",
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+minetest.register_node("maptools:sand", {
+ description = S("Unbreakable Sand"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_sand.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_sand_defaults(),
+})
+
+minetest.register_node("maptools:gravel", {
+ description = S("Unbreakable Gravel"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_gravel.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_gravel_footstep", gain=0.35},
+ dug = {name="default_gravel_footstep", gain=0.6},
+ }),
+})
+
+minetest.register_node("maptools:clay", {
+ description = S("Unbreakable Clay"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_clay.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_dirt_defaults(),
+})
+
+minetest.register_node("maptools:desert_sand", {
+ description = S("Unbreakable Desert Sand"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_desert_sand.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_sand_defaults(),
+})
+
+minetest.register_node("maptools:sandstone", {
+ description = S("Unbreakable Sandstone"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_sandstone.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:sandstone_brick", {
+ description = S("Unbreakable Sandstone Brick"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_sandstone_brick.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:desert_stone", {
+ description = S("Unbreakable Desert Stone"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_desert_stone.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:desert_cobble", {
+ description = S("Unbreakable Desert Cobble"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_desert_cobble.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:desert_stonebrick", {
+ description = S("Unbreakable Desert Stone Brick"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_desert_stone_brick.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:grass", {
+ description = S("Unbreakable Dirt with Grass"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain = 0.4},
+ }),
+})
+
+minetest.register_node("maptools:fullgrass", {
+ description = S("Unbreakable Full Grass"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_grass.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+for slab_num = 1,3,1 do
+ minetest.register_node("maptools:slab_grass_" .. slab_num * 4, {
+ description = S("Grass Slab"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^maptools_grass_side_" .. slab_num * 4 .. ".png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.5 + slab_num * 0.25, 0.5},
+ },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_dirt_defaults({footstep = {name="default_grass_footstep", gain = 0.4}}),
+ })
+end
+
+minetest.register_node("maptools:cobble", {
+ description = S("Unbreakable Cobblestone"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_cobble.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:mossycobble", {
+ description = S("Unbreakable Mossy Cobblestone"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_mossycobble.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:brick", {
+ description = S("Unbreakable Brick"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_brick.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:coalblock", {
+ description = S("Unbreakable Coal Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_coal_block.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+
+minetest.register_node("maptools:steelblock", {
+ description = S("Unbreakable Steel Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_steel_block.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:goldblock", {
+ description = S("Unbreakable Gold Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_gold_block.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:copperblock", {
+ description = S("Unbreakable Copper Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_copper_block.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:bronzeblock", {
+ description = S("Unbreakable Bronze Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_bronze_block.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:diamondblock", {
+ description = S("Unbreakable Diamond Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"default_diamond_block.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+-- Farming:
+
+minetest.register_node("maptools:soil_wet", {
+ description = "Wet Soil",
+ range = 12,
+ stack_max = 10000,
+ tiles = {"farming_soil_wet.png", "farming_soil_wet_side.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative, soil = 3, wet = 1, grassland = 1},
+ sounds = default.node_sound_dirt_defaults(),
+})
+
+minetest.register_node("maptools:desert_sand_soil_wet", {
+ description = "Wet Desert Sand Soil",
+ range = 12,
+ stack_max = 10000,
+ drop = "",
+ tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"},
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative, soil = 3, wet = 1, desert = 1},
+ sounds = default.node_sound_sand_defaults(),
+})
diff --git a/maptools/depends.txt b/maptools/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/maptools/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/maptools/init.lua b/maptools/init.lua
new file mode 100644
index 0000000..dbff209
--- /dev/null
+++ b/maptools/init.lua
@@ -0,0 +1,32 @@
+--[[
+=====================================================================
+** Map Tools **
+By Calinou.
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+=====================================================================
+--]]
+
+maptools = {}
+
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+maptools.intllib = S
+
+local modpath = minetest.get_modpath("maptools")
+
+dofile(modpath .. "/config.lua")
+dofile(modpath .. "/aliases.lua")
+dofile(modpath .. "/craftitems.lua")
+dofile(modpath .. "/default_nodes.lua")
+dofile(modpath .. "/nodes.lua")
+dofile(modpath .. "/tools.lua")
+
+if minetest.setting_getbool("log_mods") then
+ minetest.log("action", S("[maptools] loaded."))
+end
diff --git a/maptools/locale/es.txt b/maptools/locale/es.txt
new file mode 100644
index 0000000..1bc96f2
--- /dev/null
+++ b/maptools/locale/es.txt
@@ -0,0 +1,39 @@
+# Translation by kaeza
+
+[maptools] loaded. = [maptools] cargado.
+
+Cloud = Nube
+Infinite Fuel = Combustible Infinito
+Admin Pickaxe = Pico de Administrador
+Copper Coin = Moneda de Cobre
+Silver Coin = Moneda de Plata
+Gold Coin = Moneda de Oro
+Super Apple = Super Manzana
+Fake Ladder = Escalera Falsa
+Smoke Block = Bloque de Humo
+Damaging Block: %s = Bloque Dañino: %s
+Kill Block = Bloque Mortal
+Build Prevention = Bloqueador de Construcción
+Interact Prevention = Bloqueador de Interacción
+Climb Block = Bloque Escalable
+Light Block = Bloqueador de Luz
+Light Bulb = Lamparilla
+Player Clip = Bloqueo de Jugador
+Full Clip = Bloqueo Total
+
+Unbreakable Stone = Piedra Irrompible
+Unbreakable Sand = Arena Irrompible
+Unbreakable Desert Stone = Piedra Desértica Irrompible
+Unbreakable Desert Sand = Arena Desértica Irrompible
+Unbreakable Gravel = Gravilla Irrompible
+Unbreakable Dirt = Tierra Irrompible
+Unbreakable Dirt with Grass = Hierba Irrompible
+Unbreakable Full Grass= Bloque de Hierba Irrompible
+Unbreakable Brick = Ladrillos Irrompibles
+Unbreakable Wooden Planks = Planchas de Madera Irrompibles
+Unbreakable Tree = Tronco de Ãrbol Irrompible
+Unbreakable Glass = Cristal Irrompible
+Unbreakable Sandstone = Arenisca Irrompible
+Unbreakable Leaves = Foliaje Irrompible
+Unbreakable Cobblestone = Guijarros Irrompibles
+Unbreakable Mossy Cobblestone = Guijarros Enmohecidos Irrompibles
diff --git a/maptools/locale/fr.txt b/maptools/locale/fr.txt
new file mode 100644
index 0000000..d137871
--- /dev/null
+++ b/maptools/locale/fr.txt
@@ -0,0 +1,47 @@
+# Translation by Calinou
+
+[maptools] loaded. = [maptools] a été chargé.
+
+Cloud = Nuage
+Infinite Fuel = Carburant infini
+Admin Pickaxe = Pioche d'administrateur
+Admin Pickaxe With Drops = Pioche d'administrateur qui donne des objets
+Copper Coin = Pièce de cuivre
+Silver Coin = Pièce d'argent
+Gold Coin = Pièce d'or
+Super Apple = Super pomme
+Fake Ladder = Fausse échelle
+Smoke Block = Bloc de fumée
+Damaging Block: %s = Bloc de dégâts : %s
+Kill Block = Bloc qui tue
+Build Prevention = Prévention de construction
+Interact Prevention = Prévention d'interaction
+Climb Block = Bloc à grimper
+Light Block = Bloqueur de lumière
+Light Bulb = Bloc lumineux
+Player Clip = Bloque-joueurs
+Player Clip Bottom Face = Face inférieure de bloque-joueurs
+Player Clip Top Face = Face supérieure de bloque-joueurs
+Full Clip = Bloque-tout
+Full Clip Face = Face de bloque-tout
+Permanent Fire = Feu permanent
+Fake Fire = Faux feu
+Igniter = Incendieur
+Pusher: %s = Pousseur : %s
+
+Unbreakable Stone = Pierre incassable
+Unbreakable Sand = Sable incassable
+Unbreakable Desert Stone = Pierre de désert incassable
+Unbreakable Desert Sand = Sable de désert incassable
+Unbreakable Gravel = Gravier incassable
+Unbreakable Dirt = Terre incassable
+Unbreakable Dirt with Grass = Herbe incassable
+Unbreakable Full Grass= Bloc d'herbe incassable
+Unbreakable Brick = Briques incassables
+Unbreakable Wooden Planks = Planches de bois incassables
+Unbreakable Tree = Tronc d'arbre incassable
+Unbreakable Glass = Verre incassable
+Unbreakable Sandstone = Grès incassable
+Unbreakable Leaves = Feuillage incassable
+Unbreakable Cobblestone = Pierre taillée incassable
+Unbreakable Mossy Cobblestone = Pierre taillée mousseusse incassable
diff --git a/maptools/nodes.lua b/maptools/nodes.lua
new file mode 100644
index 0000000..8ceef64
--- /dev/null
+++ b/maptools/nodes.lua
@@ -0,0 +1,429 @@
+--[[
+Map Tools: node definitions
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = maptools.intllib
+
+maptools.creative = maptools.config["hide_from_creative_inventory"]
+
+-- Redefine cloud so that the admin pickaxe can mine it:
+minetest.register_node(":default:cloud", {
+ description = S("Cloud"),
+ tiles = {"default_cloud.png"},
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_defaults(),
+})
+
+-- Nodes
+-- =====
+
+minetest.register_node("maptools:black", {
+ description = S("Black"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"black.png"},
+ drop = "",
+ post_effect_color = {a=255, r=0, g=0, b=0},
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:white", {
+ description = S("White"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"white.png"},
+ drop = "",
+ post_effect_color = {a=255, r=128, g=128, b=128},
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("maptools:playerclip", {
+ description = S("Player Clip"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_green.png",
+ drawtype = "airlike",
+ paramtype = "light",
+ pointable = false,
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:fake_walkable", {
+ description = S("Player Clip"),
+ drawtype = "nodebox",
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_green.png",
+ drawtype = "airlike",
+ paramtype = "light",
+ pointable = false,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0},
+ },
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:fullclip", {
+ description = S("Full Clip"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_blue.png",
+ drawtype = "airlike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:fake_walkable_pointable", {
+ description = S("Player Clip"),
+ drawtype = "nodebox",
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_green.png",
+ drawtype = "airlike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0},
+ },
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:ignore_like", {
+ description = S("Ignore-like"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_pink.png",
+ tiles = {"invisible.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:ignore_like_no_clip", {
+ description = S("Ignore-like (no clip)"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_purple.png",
+ tiles = {"invisible.png"},
+ paramtype = "light",
+ walkable = false,
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+
+minetest.register_node("maptools:ignore_like_no_point", {
+ description = S("Ignore-like (no point)"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_purple.png",
+ tiles = {"invisible.png"},
+ paramtype = "light",
+ pointable = false,
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:ignore_like_no_clip_no_point", {
+ description = S("Ignore-like (no clip, no point)"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_pink.png",
+ tiles = {"invisible.png"},
+ paramtype = "light",
+ walkable = false,
+ pointable = false,
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:fullclip_face", {
+ description = S("Full Clip Face"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_white.png",
+ drawtype = "nodebox",
+ tiles = {"invisible.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative, fall_damage_add_percent=-100},
+})
+
+minetest.register_node("maptools:playerclip_bottom", {
+ description = S("Player Clip Bottom Face"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_orange.png",
+ drawtype = "nodebox",
+ tiles = {"invisible.png"},
+ pointable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative, fall_damage_add_percent=-100},
+})
+
+minetest.register_node("maptools:playerclip_top", {
+ description = S("Player Clip Top Face"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_yellow.png",
+ drawtype = "nodebox",
+ tiles = {"invisible.png"},
+ pointable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, 0.4999, -0.5, 0.5, 0.5, 0.5},
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative, fall_damage_add_percent=-100},
+})
+
+for pusher_num=1,10,1 do
+minetest.register_node("maptools:pusher_" .. pusher_num, {
+ description = S("Pusher (%s)"):format(pusher_num),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^default_apple.png",
+ drawtype = "nodebox",
+ tiles = {"invisible.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.4999, 0.5},
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative, fall_damage_add_percent=-100, bouncy=pusher_num*100},
+})
+end
+
+minetest.register_node("maptools:lightbulb", {
+ description = S("Light Bulb"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^default_mese_crystal_fragment.png",
+ drawtype = "airlike",
+ walkable = false,
+ pointable = false,
+ light_source = 15,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:nobuild", {
+ description = S("Build Prevention"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^bones_bones.png",
+ drawtype = "airlike",
+ walkable = false,
+ pointable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:nointeract", {
+ description = S("Interact Prevention"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^default_scorched_stuff.png",
+ drawtype = "airlike",
+ walkable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:climb", {
+ description = S("Climb Block"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^default_ladder.png",
+ drawtype = "airlike",
+ walkable = false,
+ climbable = true,
+ pointable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+for damage_num=1,5,1 do
+minetest.register_node("maptools:damage_" .. damage_num, {
+ description = S("Damaging Block (%s)"):format(damage_num),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^farming_cotton_" .. damage_num .. ".png",
+ drawtype = "airlike",
+ walkable = false,
+ pointable = false,
+ damage_per_second = damage_num,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+end
+
+minetest.register_node("maptools:kill", {
+ description = S("Kill Block"),
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^dye_black.png",
+ drawtype = "airlike",
+ walkable = false,
+ pointable = false,
+ damage_per_second = 20,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+})
+
+minetest.register_node("maptools:smoke", {
+ description = S("Smoke Block"),
+ range = 12,
+ stack_max = 10000,
+ tiles = {"maptools_smoke.png"},
+ drawtype = "allfaces_optional",
+ walkable = false,
+ paramtype = "light",
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ post_effect_color = {a=192, r=96, g=96, b=96},
+})
+
+minetest.register_node("maptools:ladder", {
+ description = S("Fake Ladder"),
+ range = 12,
+ stack_max = 10000,
+ drawtype = "signlike",
+ tiles = {"default_ladder.png"},
+ inventory_image = "default_ladder.png",
+ wield_image = "default_ladder.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "wallmounted",
+ },
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("maptools:permanent_fire", {
+ description = S("Permanent Fire"),
+ range = 12,
+ stack_max = 10000,
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {{
+ name="fire_basic_flame_animated.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},
+ }},
+ inventory_image = "fire_basic_flame.png",
+ light_source = 14,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sunlight_propagates = true,
+ walkable = false,
+ damage_per_second = 4,
+})
+
+minetest.register_node("maptools:fake_fire", {
+ description = S("Fake Fire"),
+ range = 12,
+ stack_max = 10000,
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {{
+ name="fire_basic_flame_animated.png",
+ animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},
+ }},
+ inventory_image = "fire_basic_flame.png",
+ light_source = 14,
+ drop = "",
+ groups = {unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sunlight_propagates = true,
+ walkable = false,
+})
+
+minetest.register_node("maptools:igniter", {
+ drawtype = "airlike",
+ range = 12,
+ stack_max = 10000,
+ inventory_image = "default_steel_block.png^crosshair.png",
+ description = S("Igniter"),
+ paramtype = "light",
+ inventory_image = "fire_basic_flame.png",
+ drop = "",
+ groups = {igniter=2, unbreakable = 1, not_in_creative_inventory = maptools.creative},
+ sunlight_propagates = true,
+ pointable = false,
+ walkable = false,
+})
+
+minetest.register_node("maptools:superapple", {
+ description = S("Super Apple"),
+ range = 12,
+ stack_max = 10000,
+ drawtype = "plantlike",
+ visual_scale = 1.0,
+ tiles = {"maptools_superapple.png"},
+ inventory_image = "maptools_superapple.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
+ },
+ walkable = false,
+ groups = {fleshy=3, dig_immediate=3, not_in_creative_inventory = maptools.creative},
+ on_use = minetest.item_eat(20),
+ sounds = default.node_sound_defaults(),
+})
diff --git a/maptools/textures/black.png b/maptools/textures/black.png
new file mode 100644
index 0000000..aac403d
--- /dev/null
+++ b/maptools/textures/black.png
Binary files differ
diff --git a/maptools/textures/fire_basic_flame.png b/maptools/textures/fire_basic_flame.png
new file mode 100644
index 0000000..e3c52b0
--- /dev/null
+++ b/maptools/textures/fire_basic_flame.png
Binary files differ
diff --git a/maptools/textures/fire_basic_flame_animated.png b/maptools/textures/fire_basic_flame_animated.png
new file mode 100644
index 0000000..6f5f8ac
--- /dev/null
+++ b/maptools/textures/fire_basic_flame_animated.png
Binary files differ
diff --git a/maptools/textures/invisible.png b/maptools/textures/invisible.png
new file mode 100644
index 0000000..4b5b302
--- /dev/null
+++ b/maptools/textures/invisible.png
Binary files differ
diff --git a/maptools/textures/maptools_adminpick.png b/maptools/textures/maptools_adminpick.png
new file mode 100644
index 0000000..04824eb
--- /dev/null
+++ b/maptools/textures/maptools_adminpick.png
Binary files differ
diff --git a/maptools/textures/maptools_adminpick_with_drops.png b/maptools/textures/maptools_adminpick_with_drops.png
new file mode 100644
index 0000000..8f7cf7b
--- /dev/null
+++ b/maptools/textures/maptools_adminpick_with_drops.png
Binary files differ
diff --git a/maptools/textures/maptools_copper_coin.png b/maptools/textures/maptools_copper_coin.png
new file mode 100644
index 0000000..26d22a8
--- /dev/null
+++ b/maptools/textures/maptools_copper_coin.png
Binary files differ
diff --git a/maptools/textures/maptools_gold_coin.png b/maptools/textures/maptools_gold_coin.png
new file mode 100644
index 0000000..40f14a9
--- /dev/null
+++ b/maptools/textures/maptools_gold_coin.png
Binary files differ
diff --git a/maptools/textures/maptools_grass_side_12.png b/maptools/textures/maptools_grass_side_12.png
new file mode 100644
index 0000000..6b26435
--- /dev/null
+++ b/maptools/textures/maptools_grass_side_12.png
Binary files differ
diff --git a/maptools/textures/maptools_grass_side_4.png b/maptools/textures/maptools_grass_side_4.png
new file mode 100644
index 0000000..ea87a38
--- /dev/null
+++ b/maptools/textures/maptools_grass_side_4.png
Binary files differ
diff --git a/maptools/textures/maptools_grass_side_8.png b/maptools/textures/maptools_grass_side_8.png
new file mode 100644
index 0000000..6db2502
--- /dev/null
+++ b/maptools/textures/maptools_grass_side_8.png
Binary files differ
diff --git a/maptools/textures/maptools_infinitefuel.png b/maptools/textures/maptools_infinitefuel.png
new file mode 100644
index 0000000..163f171
--- /dev/null
+++ b/maptools/textures/maptools_infinitefuel.png
Binary files differ
diff --git a/maptools/textures/maptools_silver_coin.png b/maptools/textures/maptools_silver_coin.png
new file mode 100644
index 0000000..284c671
--- /dev/null
+++ b/maptools/textures/maptools_silver_coin.png
Binary files differ
diff --git a/maptools/textures/maptools_smoke.png b/maptools/textures/maptools_smoke.png
new file mode 100644
index 0000000..c50b7e3
--- /dev/null
+++ b/maptools/textures/maptools_smoke.png
Binary files differ
diff --git a/maptools/textures/maptools_superapple.png b/maptools/textures/maptools_superapple.png
new file mode 100644
index 0000000..6833827
--- /dev/null
+++ b/maptools/textures/maptools_superapple.png
Binary files differ
diff --git a/maptools/textures/white.png b/maptools/textures/white.png
new file mode 100644
index 0000000..2d8d70f
--- /dev/null
+++ b/maptools/textures/white.png
Binary files differ
diff --git a/maptools/tools.lua b/maptools/tools.lua
new file mode 100644
index 0000000..6ce8b6c
--- /dev/null
+++ b/maptools/tools.lua
@@ -0,0 +1,61 @@
+--[[
+Map Tools: tool definitions
+
+Copyright (c) 2012-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = maptools.intllib
+
+maptools.creative = maptools.config["hide_from_creative_inventory"]
+
+minetest.register_tool("maptools:pick_admin", {
+ description = S("Admin Pickaxe"),
+ range = 12,
+ inventory_image = "maptools_adminpick.png",
+ groups = {not_in_creative_inventory = maptools.creative},
+ tool_capabilities = {
+ full_punch_interval = 0.1,
+ max_drop_level = 3,
+ groupcaps= {
+ unbreakable = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ fleshy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ choppy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ bendy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ cracky = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ crumbly = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ snappy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ },
+ damage_groups = {fleshy = 1000},
+ },
+})
+
+minetest.register_tool("maptools:pick_admin_with_drops", {
+ description = S("Admin Pickaxe with Drops"),
+ range = 12,
+ inventory_image = "maptools_adminpick_with_drops.png",
+ groups = {not_in_creative_inventory = maptools.creative},
+ tool_capabilities = {
+ full_punch_interval = 0.35,
+ max_drop_level = 3,
+ groupcaps = {
+ unbreakable = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ fleshy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ choppy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ bendy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ cracky = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ crumbly = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ snappy = {times={[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 3},
+ },
+ damage_groups = {fleshy = 1000},
+ },
+})
+
+minetest.register_on_punchnode(function(pos, node, puncher)
+ if puncher:get_wielded_item():get_name() == "maptools:pick_admin"
+ and minetest.get_node(pos).name ~= "air" then
+ minetest.log("action", puncher:get_player_name() .. " digs " .. minetest.get_node(pos).name .. " at " .. minetest.pos_to_string(pos) .. " using an Admin Pickaxe.")
+ minetest.remove_node(pos) -- The node is removed directly, which means it even works on non-empty containers and group-less nodes.
+ nodeupdate(pos) -- Run node update actions like falling nodes.
+ end
+end)
diff --git a/markers/README.md b/markers/README.md
new file mode 100644
index 0000000..ffa3179
--- /dev/null
+++ b/markers/README.md
@@ -0,0 +1,3 @@
+
+This is work in progress.
+
diff --git a/markers/areas.lua b/markers/areas.lua
new file mode 100644
index 0000000..f804f7f
--- /dev/null
+++ b/markers/areas.lua
@@ -0,0 +1,865 @@
+
+-- TODO: offer teleport button?
+
+-- Temporary compatibility function - see minetest PR#1180
+if not vector.interpolate then
+ vector.interpolate = function(pos1, pos2, factor)
+ return {x = pos1.x + (pos2.x - pos1.x) * factor,
+ y = pos1.y + (pos2.y - pos1.y) * factor,
+ z = pos1.z + (pos2.z - pos1.z) * factor}
+ end
+end
+
+-- taken from mobf
+local COLOR_RED = "#FF0000";
+local COLOR_GREEN = "#00FF00";
+local COLOR_WHITE = "#FFFFFF";
+
+
+-- we need to store which list we present to which player
+markers.menu_data_by_player = {}
+
+
+markers.get_area_by_pos = function(pos)
+
+ local found_areas = {};
+ for id, area in pairs(areas.areas) do
+ if( pos.x >= area.pos1.x and pos.x <= area.pos2.x and
+ pos.y >= area.pos1.y and pos.y <= area.pos2.y and
+ pos.z >= area.pos1.z and pos.z <= area.pos2.z )then
+
+ area[ 'id' ] = id;
+ table.insert(found_areas, area );
+ end
+ end
+ return found_areas;
+end
+
+
+
+-- ppos: current player (or marker stone) position - used for sorting the list
+-- mode: can be pos, player, all, subarea, main_areas
+-- mode_data: content depends on mode
+-- selected: display information about the area the player single-clicked on
+markers.get_area_list_formspec = function(ppos, player, mode, pos, mode_data, selected )
+
+
+ local id_list = {};
+ local title = '???';
+ local tlabel = '';
+
+ -- expects a position in mode_data
+ if( mode=='pos' ) then
+ -- title would be too long for a label
+ title = 'All areas which contain position..';
+ tlabel = '<'..minetest.pos_to_string( mode_data )..'>:';
+
+ for id, area in pairs(areas.areas) do
+
+ if( mode_data.x >= area.pos1.x and mode_data.x <= area.pos2.x and
+ mode_data.y >= area.pos1.y and mode_data.y <= area.pos2.y and
+ mode_data.z >= area.pos1.z and mode_data.z <= area.pos2.z )then
+
+ table.insert( id_list, id );
+ end
+ end
+
+ -- expects a playername in mode_data
+ elseif( mode=='player' ) then
+
+ title = 'All areas owned by player..';
+ tlabel = '<'..tostring( mode_data )..'>:';
+
+ for id, area in pairs(areas.areas) do
+
+ if( area.owner == mode_data ) then
+ table.insert( id_list, id );
+ end
+ end
+
+ -- expects an area_id in mode_data
+ elseif( mode=='subareas' ) then
+
+ title = 'All subareas of area..';
+ tlabel = '<'..tostring( areas.areas[ mode_data ].name )..'> ['..tostring( mode_data )..']:';
+
+ for id, area in pairs(areas.areas) do
+
+ if( area.parent and area.parent == mode_data ) then
+ table.insert( id_list, id );
+ end
+ end
+
+ -- show only areas that do not have parents
+ elseif( mode=='main_areas' ) then
+ title = 'All main areas withhin '..tostring( markers.AREA_RANGE )..' m:';
+ tlabel = '*all main areas*';
+ for id, area in pairs(areas.areas) do
+
+ if( not( area.parent )
+ -- ppos is always available
+ and( (area.pos1.x >= ppos.x-markers.AREA_RANGE and area.pos1.x <= ppos.x+markers.AREA_RANGE )
+ or(area.pos2.x >= ppos.x-markers.AREA_RANGE and area.pos2.x <= ppos.x+markers.AREA_RANGE ))
+ and( (area.pos1.y >= ppos.y-markers.AREA_RANGE and area.pos1.y <= ppos.y+markers.AREA_RANGE )
+ or(area.pos2.y >= ppos.y-markers.AREA_RANGE and area.pos2.y <= ppos.y+markers.AREA_RANGE ))
+ and( (area.pos1.z >= ppos.z-markers.AREA_RANGE and area.pos1.z <= ppos.z+markers.AREA_RANGE )
+ or(area.pos2.z >= ppos.z-markers.AREA_RANGE and area.pos2.z <= ppos.z+markers.AREA_RANGE ))) then
+ table.insert( id_list, id );
+ end
+ end
+
+
+ elseif( mode=='all' ) then
+ title = 'All areas withhin '..tostring( markers.AREA_RANGE )..' m:';
+ tlabel = '*all areas*';
+
+ for id, area in pairs(areas.areas) do
+ if( ( (area.pos1.x >= ppos.x-markers.AREA_RANGE and area.pos1.x <= ppos.x+markers.AREA_RANGE )
+ or(area.pos2.x >= ppos.x-markers.AREA_RANGE and area.pos2.x <= ppos.x+markers.AREA_RANGE ))
+ and( (area.pos1.y >= ppos.y-markers.AREA_RANGE and area.pos1.y <= ppos.y+markers.AREA_RANGE )
+ or(area.pos2.y >= ppos.y-markers.AREA_RANGE and area.pos2.y <= ppos.y+markers.AREA_RANGE ))
+ and( (area.pos1.z >= ppos.z-markers.AREA_RANGE and area.pos1.z <= ppos.z+markers.AREA_RANGE )
+ or(area.pos2.z >= ppos.z-markers.AREA_RANGE and area.pos2.z <= ppos.z+markers.AREA_RANGE ))) then
+ table.insert( id_list, id );
+ end
+ end
+ end
+
+ -- Sort the list of areas so the nearest comes first
+ local nearsorter = function(a, b)
+ return vector.distance(vector.interpolate(areas.areas[a].pos1, areas.areas[a].pos2, 0.5), ppos) <
+ vector.distance(vector.interpolate(areas.areas[b].pos1, areas.areas[b].pos2, 0.5), ppos)
+ end
+ table.sort(id_list, nearsorter)
+
+ local formspec = 'size[10,9]';
+
+ title = minetest.formspec_escape( title );
+ tlabel = minetest.formspec_escape( tlabel );
+
+ formspec = formspec..
+ "label[0.5,0;"..title.."]"..
+ "label[4.7,0;"..tlabel.."]"..
+ "label[0.5,8.5;Doubleclick to select area.]"..
+ "label[4.7,8.5;Areas found: "..tostring( #id_list )..".]"..
+ "textlist[0.5,0.5;7,8;markers_area_list_selection;";
+
+ local liste = '';
+ for i,v in ipairs( id_list ) do
+ if( liste ~= '' ) then
+ liste = liste..',';
+ end
+ liste = liste..minetest.formspec_escape( areas:toString( v ) );
+
+ end
+
+ -- highlight selected entry
+ if( selected ) then
+ formspec = formspec..liste..';'..selected..';false]';
+ else
+ formspec = formspec..liste..';]';
+ end
+
+ local pname = player:get_player_name();
+ if( not( markers.menu_data_by_player[ pname ] )) then
+ markers.menu_data_by_player[ pname ] = {};
+ end
+
+ -- display information about the location of the area the player clicked on
+ if( selected
+ and id_list[ selected ]
+ and areas.areas[ id_list[ selected ]] ) then
+
+ local this_area = areas.areas[ id_list[ selected ]];
+
+ local subareas = {};
+ for i,v in pairs( areas.areas ) do
+ if( v.parent and v.parent == id_list[ selected ]) then
+ table.insert( subareas, i );
+ end
+ end
+
+ formspec = formspec..
+ markers.show_compass_marker( 8.5, 3.0, false, pos, this_area.pos1, this_area.pos2 );
+
+
+ if( this_area.parent) then
+ formspec = formspec..
+ 'button[8.0,0.5;2,0.5;show_parent;'..
+ minetest.formspec_escape( areas.areas[ this_area.parent ].name )..']';
+ end
+
+ if( #subareas > 0 ) then
+ formspec = formspec..
+ 'button[8.0,1.0;2,0.5;list_subareas;'..
+ minetest.formspec_escape( 'List subareas ('..tostring( #subareas )..')')..']';
+ end
+
+
+ if( mode=='player' ) then
+ formspec = formspec..
+ 'label[8.0,1.5;'..
+ minetest.formspec_escape( this_area.owner..'\'s areas')..']';
+ else
+ formspec = formspec..
+ 'button[8.0,1.5;2,0.5;list_player_areas;'..
+ minetest.formspec_escape( this_area.owner..'\'s areas')..']';
+ end
+
+ end
+
+ formspec = formspec..
+ 'button[8.0,8.5;2,0.5;list_main_areas;List all main areas]';
+
+ -- we need to remember especially the id_list - else it would be impossible to know what the
+ -- player selected
+ markers.menu_data_by_player[ pname ] = {
+ typ = 'area_list',
+ mode = mode,
+ pos = pos,
+ mode_data = mode_data,
+ list = id_list,
+
+ selected = id_list[ selected ],
+ };
+
+
+ return formspec;
+end
+
+
+
+
+-- shows a formspec with information about a particular area
+-- pos is the position of the marker stone or place where the player clicked
+-- with the land title register; it is used for relative display of coordinates
+markers.get_area_desc_formspec = function( id, player, pos )
+
+ if( not( areas.areas ) or not( id ) or not( areas.areas[ id ] )) then
+ return 'field[info;Error:;Area not found.]';
+ end
+ local this_area = areas.areas[ id ];
+
+ local pname = player:get_player_name();
+
+ -- show some buttons only if area is owned by the player
+ local is_owner = false;
+
+ if( this_area.owner == pname ) then
+ is_owner = true;
+ end
+
+ local formspec = 'size[10,9]'..
+ 'label[2.5,0.0;Area information and management]'..
+ 'button_exit[4.7,7.0;1,0.5;abort;OK]';
+
+ -- general information about the area
+ formspec = formspec..
+ 'label[0.5,1.0;This is area number ]'..
+ 'label[4.7,1.0;'..tostring( id )..']'..
+
+ 'label[0.5,1.5;The area is called ]'..
+ 'label[4.7,1.5;'..minetest.formspec_escape( this_area.name or '-not set-')..']'..
+
+ 'label[0.5,2.0;It is owned by ]'..
+ 'label[4.7,2.0;'..minetest.formspec_escape( this_area.owner)..']';
+
+
+ -- these functions are only available to the owner of the area
+ if( is_owner ) then
+ formspec = formspec..
+ 'button_exit[8.0,0.0;2,0.5;change_owner;Change owner]'..
+ 'button_exit[8.0,1.0;2,0.5;delete;Delete]'..
+ 'button_exit[8.0,1.5;2,0.5;rename;Rename]'..
+ 'button_exit[8.0,2.0;2,0.5;list_player_areas;My areas]';
+
+ -- subareas of own areas can be deleted (but not renamed)
+ elseif( not( is_owner )
+ and this_area.parent
+ and areas.areas[ this_area.parent ]
+ and areas.areas[ this_area.parent ].owner == pname ) then
+
+ formspec = formspec..
+ 'button_exit[8.0,1.0;2,0.5;delete;Delete subarea]'..
+ 'button_exit[8.0,2.0;2,0.5;list_player_areas;Player\'s areas]';
+
+ else
+ formspec = formspec..
+ 'button_exit[8.0,2.0;2,0.5;list_player_areas;Player\'s areas]';
+ end
+
+
+ -- players with the areas priv get an extra menu
+ if( minetest.check_player_privs(pname, {areas=true})) then
+ formspec = formspec..
+ 'label[8.0,6.0;Admin commands:]'..
+ 'button_exit[8.0,6.5;2,0.5;change_owner;Change owner]'..
+ 'button_exit[8.0,7.0;2,0.5;delete;Delete]'..
+ 'button_exit[8.0,7.5;2,0.5;rename;Rename]';
+ end
+
+
+ -- show subowners and areas with the same coordinates
+ formspec = formspec..
+ 'label[0.5,2.5;Further owners of the entire area:]';
+ local further_owners = {};
+ for i, area in pairs(areas.areas) do
+ if( i ~= id and
+ this_area.pos1.x == area.pos1.x and this_area.pos2.x == area.pos2.x and
+ this_area.pos1.y == area.pos1.y and this_area.pos2.y == area.pos2.y and
+ this_area.pos1.z == area.pos1.z and this_area.pos2.z == area.pos2.z )then
+
+ table.insert( further_owners, area.owner );
+ end
+ end
+ if( #further_owners > 0 ) then
+
+ formspec = formspec..
+ 'label[4.7,2.5;'..minetest.formspec_escape( table.concat( further_owners, ', '))..'.]';
+
+ -- deleting subowners is done by deleting their areas
+ if( is_owner ) then
+ formspec = formspec..
+ 'button_exit[8.0,2.5;2,0.5;add_owner;Add]';
+ end
+ else
+ formspec = formspec..
+ 'label[4.7,2.5;-none-]';
+
+ if( is_owner ) then
+ formspec = formspec..
+ 'button_exit[8.0,2.5;2,0.5;add_owner;Add]';
+ end
+ end
+
+
+ -- is the area a subarea?
+ if( this_area.parent ) then
+ formspec = formspec..
+ 'label[0.5,3.0;This area is a sub-area of area]'..
+ 'label[4.7,3.0;'..minetest.formspec_escape( areas.areas[ this_area.parent ].name..' ['..this_area.parent..']' )..']'..
+ 'button_exit[8.0,3.0;2,0.5;show_parent;Show main area]';
+ end
+
+
+ -- does the area have subareas, i.e. is it a parent area for others?
+ local sub_areas = {};
+ for i, area in pairs(areas.areas) do
+ if( i ~= id and
+ area.parent == id ) then
+
+ table.insert( sub_areas, i );
+ end
+ end
+ if( #sub_areas > 0 ) then
+
+ formspec = formspec..
+ 'label[0.5,4.0;Number of defined subareas:]'..
+ 'label[4.7,4.0;'..tostring( #sub_areas )..']'..
+ 'button_exit[8.0,4.0;2,0.5;list_subareas;List subareas]';
+ else
+ formspec = formspec..
+ 'label[0.5,4.0;There are no subareas defined.]';
+ end
+
+
+ -- give information about the size of the area
+ local length_x = (math.abs( this_area.pos2.x - this_area.pos1.x )+1);
+ local length_y = (math.abs( this_area.pos2.y - this_area.pos1.y )+1);
+ local length_z = (math.abs( this_area.pos2.z - this_area.pos1.z )+1);
+
+ formspec = formspec..
+ 'label[0.5,4.5;The area extends from]'..
+ 'label[4.7,4.5;'..minetest.pos_to_string( this_area.pos1 )..' to '..minetest.pos_to_string( this_area.pos2 )..'.]'..
+ 'label[4.7,4.75;It spans '..tostring( length_x )..
+ ' x '..tostring( length_z )..
+ ' = '..tostring( length_x * length_z )..
+ ' m^2. Height: '..tostring( length_y )..' m.]';
+
+
+ formspec = formspec..
+ markers.show_compass_marker( 2.0, 7.0, true, pos, this_area.pos1, this_area.pos2 );
+
+-- TODO: buy / sell button
+
+ local pname = player:get_player_name();
+ if( not( markers.menu_data_by_player[ pname ] )) then
+ markers.menu_data_by_player[ pname ] = {};
+ end
+
+ -- we need to remember especially the id_list - else it would be impossible to know what the
+ -- player selected
+ markers.menu_data_by_player[ pname ] =
+ { typ = 'show_area',
+ mode = nil,
+ pos = pos,
+ mode_data = nil,
+ list = nil,
+
+ selected = id,
+ };
+
+ return formspec;
+end
+
+
+
+-- shows where the area (defined by pos1/pos2) is located relative to the given position pos
+-- row_offset/col_offset are offsets for the formspec
+markers.show_compass_marker = function( col_offset, row_offset, with_text, pos, pos1, pos2 )
+
+ local formspec = '';
+-- TODO: show up/down information somehow
+-- TODO: what if checked with a land claim register?
+
+ -- if possible, show how far the area streches into each direction relative to pos
+ if( pos.x >= pos1.x and pos.x <= pos2.x
+ and pos.y >= pos1.y and pos.y <= pos2.y
+ and pos.z >= pos1.z and pos.z <= pos2.z ) then
+
+ if( with_text ) then
+ formspec = formspec..
+ 'label[0.5,5.5;Dimensions of the area in relation to..]'..
+-- TODO: check if there is a marker; else write 'position you clicked on'
+ 'label[4.7,5.5;the marker at '..minetest.pos_to_string( pos )..':]'..
+ 'button_exit[8.0,5.5;2,0.5;list_areas_at;Local areas]';
+ end
+ formspec = formspec..
+ 'image['..col_offset..','..row_offset..';1,1;markers_stone.png]'..
+ 'label['..(col_offset-0.8)..','..(row_offset+0.05)..';'..tostring( pos.x - pos1.x )..' m W]'..
+ 'label['..(col_offset+1.0)..','..(row_offset+0.05)..';'..tostring( pos2.x - pos.x )..' m E]'..
+ 'label['..(col_offset+0.1)..','..(row_offset+0.80)..';'..tostring( pos.z - pos1.z )..' m S]'..
+ 'label['..(col_offset+0.1)..','..(row_offset-0.80)..';'..tostring( pos2.z - pos.z )..' m N]';
+
+ -- else show how far the area is away
+ else
+
+ local starts_north = '';
+ local starts_south = '';
+ local starts_east = '';
+ local starts_west = '';
+ if( pos.z > pos2.z ) then
+ starts_north = '';
+ starts_south = tostring( pos.z - pos2.z )..' m S';
+ else
+ starts_north = tostring( pos1.z - pos.z )..' m N';
+ starts_south = '';
+ end
+ if( pos.x > pos2.x ) then
+ starts_east = '';
+ starts_west = tostring( pos.x - pos2.x )..' m W';
+ else
+ starts_east = tostring( pos1.x - pos.x )..' m E';
+ starts_west = '';
+ end
+
+
+ if( with_text ) then
+ formspec = formspec..
+ 'label[0.5,5.5;Position of the area in relation to..]'..
+-- TODO: check if there is a marker; else write 'position you clicked on'
+ 'label[4.7,5.5;the marker at '..minetest.pos_to_string( pos )..':]'..
+ 'button_exit[8.0,5.5;2,0.5;list_areas_at;Local areas]';
+ end
+ formspec = formspec..
+ 'image['..col_offset..','..row_offset..';1,1;compass_side_top.png]'..
+ 'label['..(col_offset-0.8)..','..(row_offset+0.05)..';'..starts_west..']'..
+ 'label['..(col_offset+1.0)..','..(row_offset+0.05)..';'..starts_east..']'..
+ 'label['..(col_offset+0.1)..','..(row_offset-0.80)..';'..starts_north..']'..
+ 'label['..(col_offset+0.1)..','..(row_offset+0.80)..';'..starts_south..']';
+ end
+
+ return formspec;
+end
+
+
+
+-- formspec input needs to be handled diffrently
+markers.form_input_handler_areas = function( player, formname, fields)
+
+ local pname = player:get_player_name();
+ local ppos = player:getpos()
+
+ if( formname ~= "markers:info"
+ or not( player )
+ or not( markers.menu_data_by_player[ pname ] )) then
+
+ return false;
+ end
+
+ local menu_data = markers.menu_data_by_player[ pname ];
+ local formspec = '';
+
+
+ -- rename an area
+ if( fields.rename
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ]
+ and areas.areas[ menu_data.selected ].owner == pname ) then
+
+ local area = areas.areas[ menu_data.selected ];
+ if( not( area.name )) then
+ area.name = '-enter area name-';
+ end
+ formspec = 'field[rename_new_name;Enter new name for area:;'..minetest.formspec_escape( area.name )..']';
+
+ elseif( fields.rename_new_name
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ]
+ and ((areas.areas[ menu_data.selected ].owner == pname )
+ or minetest.check_player_privs(pname, {areas=true}))) then
+
+ local area = areas.areas[ menu_data.selected ];
+
+ -- actually rename the area
+ areas.areas[ menu_data.selected ].name = fields.rename_new_name;
+ areas:save();
+
+ minetest.chat_send_player( pname, 'Area successfully renamed.');
+ -- shwo the renamed area
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+
+
+ -- change owner the area
+ elseif( fields.change_owner
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ] ) then
+
+ -- there are no checks here - those happen when the area is transferred
+ local area = areas.areas[ menu_data.selected ];
+ formspec = 'field[change_owner_name;Give area \"'..minetest.formspec_escape( area.name )..'\" to player:;-enter name of NEW OWNER-]';
+
+ elseif( fields.change_owner_name
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ] ) then
+
+ local area = areas.areas[ menu_data.selected ];
+
+ -- only own areas can be transfered to another player (or if the areas priv is there)
+ if( area.owner ~= pname
+ and not( minetest.check_player_privs(pname, {areas=true}))) then
+
+ minetest.chat_send_player( pname, 'Permission denied. You do not own the area.');
+
+ elseif( not( areas:player_exists( fields.change_owner_name ))) then
+
+ minetest.chat_send_player( pname, 'That player does not exist.');
+
+ else
+ -- actually change the owner
+ areas.areas[ menu_data.selected ].owner = fields.change_owner_name;
+ areas:save()
+
+ minetest.chat_send_player( pname, 'Your area '..tostring( area.name )..' has been transfered to '..tostring( fields.change_owner_name )..'.');
+
+ minetest.chat_send_player( fields.change_owner_name, pname..'" has given you control over an area.')
+ end
+
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+
+ -- add an owner to the entire area
+ elseif( fields.add_owner
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ]
+ and areas.areas[ menu_data.selected ].owner == pname ) then
+
+ local area = areas.areas[ menu_data.selected ];
+ formspec = 'field[add_owner_name;Grant access to area \"'..minetest.formspec_escape( area.name )..'\" to player:;-enter player name-]';
+
+ elseif( fields.add_owner_name
+ -- the player has to own the area already; we need a diffrent name here
+ and fields.add_owner_name ~= pname
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ]
+ and areas.areas[ menu_data.selected ].owner == pname ) then
+
+ local area = areas.areas[ menu_data.selected ];
+
+ -- does the player exist?
+ if( not( areas:player_exists( fields.add_owner_name ))) then
+ minetest.chat_send_player( pname, 'That player does not exist.');
+ -- show the formspec
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+ else
+ -- log the creation of the new area
+ minetest.log("action", pname.." runs /add_owner through the markers-mod. Owner = "..fields.add_owner_name..
+ " AreaName = "..area.name.." ParentID = "..menu_data.selected..
+ " StartPos = "..area.pos1.x..","..area.pos1.y..","..area.pos1.z..
+ " EndPos = " ..area.pos2.x..","..area.pos2.y..","..area.pos2.z)
+
+ -- take the name from the old/parent area
+ local new_id = areas:add( fields.add_owner_name, area.name, area.pos1, area.pos2, menu_data.selected );
+ areas:save()
+
+
+ minetest.chat_send_player( fields.add_owner_name,
+ "You have been granted control over area #"..
+ new_id..". Type /list_areas to show your areas.")
+
+ minetest.chat_send_player( pname, 'The player may now build and dig in your area.');
+ -- shwo the new area
+ markers.menu_data_by_player[ pname ].selected = new_id;
+ formspec = markers.get_area_desc_formspec( new_id, player, menu_data.pos );
+ end
+
+
+
+ -- delete area
+ elseif( fields.delete
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ] ) then
+
+ local area = areas.areas[ menu_data.selected ];
+
+ -- a player can only delete own areas or subareas of own areas
+ if( area.owner ~= pname
+ and not( area.parent
+ and areas.areas[ area.parent ]
+ and areas.areas[ area.parent ].owner
+ and areas.areas[ area.parent ].owner == pname )
+ and not( minetest.check_player_privs(pname, {areas=true}))) then
+
+ minetest.chat_send_player( pname, 'Permission denied. You own neither the area itshelf nor its parent area.');
+ -- shwo the area where the renaming failed
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+ else
+
+ formspec = 'field[rename_new_name;Enter new name for area:;'..minetest.formspec_escape( area.name )..']';
+ formspec = 'field[delete_confirm;'..minetest.formspec_escape( 'Really delete area \"'..area.name..
+ '\" (owned by '..area.owner..')? Confirm with YES:')..';-type yes in capitals to confirm-]';
+
+ end
+
+ elseif( fields.delete_confirm
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ] ) then
+
+ local area = areas.areas[ menu_data.selected ];
+ local old_owner = area.owner;
+
+ local subareas = {};
+ for i,v in pairs( areas.areas ) do
+ if( v.parent and v.parent == menu_data.selected ) then
+ table.insert( subareas, i );
+ end
+ end
+
+ -- a player can only delete own areas or subareas of own areas
+ if( area.owner ~= pname
+ and not( area.parent
+ and areas.areas[ area.parent ]
+ and areas.areas[ area.parent ].owner
+ and areas.areas[ area.parent ].owner == pname )
+ and not( minetest.check_player_privs(pname, {areas=true}))) then
+
+ minetest.chat_send_player( pname, 'Permission denied. You own neither the area itshelf nor its parent area.');
+ -- shwo the renamed area
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+ -- avoid accidents
+ elseif( fields.delete_confirm ~= 'YES' ) then
+ minetest.chat_send_player( pname, 'Delition of area \"'..tostring( area.name )..'\" (owned by '..old_owner..') aborted.');
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+ -- only areas without subareas can be deleted
+ elseif( #subareas > 0 ) then
+ minetest.chat_send_player( pname, 'The area has '..tostring( #subareas )..' subarea(s). Please delete those first!');
+ formspec = markers.get_area_desc_formspec( menu_data.selected, player, menu_data.pos );
+
+ else
+
+ minetest.chat_send_player( pname, 'Area \"'..tostring( area.name )..'\" (owned by '..old_owner..') deleted.');
+ -- really delete
+ areas:remove( menu_data.selected, false ); -- no recursive delete
+ areas:save();
+ -- show the list of areas owned by the previous owner
+ formspec = markers.get_area_list_formspec(ppos, player, 'player', menu_data.pos, old_owner, nil );
+ end
+
+
+
+ elseif( fields.show_parent
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ]
+ and areas.areas[ menu_data.selected ].parent ) then
+
+ formspec = markers.get_area_desc_formspec( areas.areas[ menu_data.selected ].parent, player, menu_data.pos );
+
+
+ elseif( fields.list_player_areas
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ] ) then
+
+ formspec = markers.get_area_list_formspec(ppos, player, 'player', menu_data.pos, areas.areas[ menu_data.selected ].owner, nil );
+
+
+ elseif( fields.list_subareas
+ and menu_data.selected
+ and areas.areas[ menu_data.selected ] ) then
+
+ formspec = markers.get_area_list_formspec(ppos, player, 'subareas', menu_data.pos, menu_data.selected, nil );
+
+
+ elseif( fields.list_main_areas ) then
+
+ formspec = markers.get_area_list_formspec(ppos, player, 'main_areas', menu_data.pos, nil, nil );
+
+ elseif( fields.list_areas_at
+ and menu_data.pos ) then
+
+ formspec = markers.get_area_list_formspec(ppos, player, 'pos', menu_data.pos, menu_data.pos, nil );
+
+
+ elseif( fields.markers_area_list_selection
+ and menu_data.typ
+ and menu_data.typ == 'area_list'
+ and menu_data.list
+ and #menu_data.list > 0 ) then
+
+
+ local field_data = fields.markers_area_list_selection:split( ':' );
+ if( not( field_data ) or #field_data < 2 ) then
+ field_data = { '', '' };
+ end
+
+ local selected = tonumber( field_data[ 2 ] );
+ if( field_data[1]=='DCL' ) then
+
+ -- on doubleclick, show detailed area information
+ formspec = markers.get_area_desc_formspec( tonumber( menu_data.list[ selected ] ), player, menu_data.pos );
+ else
+
+ -- on single click, just show the position of that particular area
+ formspec = markers.get_area_list_formspec(ppos, player, menu_data.mode, menu_data.pos, menu_data.mode_data, selected );
+ end
+
+ else
+ return false;
+ end
+
+
+ minetest.show_formspec( pname, "markers:info", formspec )
+ return true;
+end
+
+
+
+-- search the area at the given position pos that might be of most intrest to the player
+markers.show_marker_stone_formspec = function( player, pos )
+
+ local pname = player:get_player_name();
+ local ppos = pos
+
+ -- this table stores the list the player may have selected from; at the beginning, there is no list
+ if( not( markers.menu_data_by_player[ pname ] )) then
+ markers.menu_data_by_player[ pname ] = {
+ typ = 'area_list',
+ mode = 'main_areas',
+ pos = pos,
+ mode_data = pos,
+ list = {},
+
+ selected = nil,
+ };
+ end
+
+
+ local formspec = '';
+
+ local found_areas = {};
+ local min_area_size = 100000000000;
+
+ for id, area in pairs(areas.areas) do
+ if( pos.x >= area.pos1.x and pos.x <= area.pos2.x and
+ pos.y >= area.pos1.y and pos.y <= area.pos2.y and
+ pos.z >= area.pos1.z and pos.z <= area.pos2.z )then
+
+ -- ignore y (height) value because some areas may go from bottom to top
+ local area_size = math.abs( area.pos2.x - area.pos1.x )
+ * math.abs( area.pos2.z - area.pos1.z );
+
+ -- collect subareas that have the same size
+ if( area_size == min_area_size ) then
+ table.insert(found_areas, id );
+ -- we have found a smaller area - that is more intresting here
+ elseif( area_size <= min_area_size ) then
+ found_areas = {};
+ min_area_size = area_size;
+ table.insert(found_areas, id );
+ end
+ end
+ end
+
+ -- no areas found; display error message and selection menu
+ if( #found_areas < 1 ) then
+
+ formspec = 'size[4,3]'..
+ 'label[0.5,0.5;This position is not protected.]'..
+ 'button[1.0,1.5;2,0.5;list_main_areas;List all main areas]'..
+ 'button_exit[3.0,1.5;1,0.5;abort;OK]';
+
+ -- found exactly one areaa - display it
+ elseif( #found_areas == 1 ) then
+
+ formspec = markers.get_area_desc_formspec( found_areas[ 1 ], player, pos );
+
+ -- found more than one area; we have saved only those with the smallest size
+ else
+
+ local own_area = 0;
+ local parent_area = 0;
+ local upper_area = 0;
+ for i,v in ipairs( found_areas ) do
+
+ local area = areas.areas[ v ];
+
+ -- owned by player?
+ if( area.owner == pname ) then
+ own_area = v;
+
+ -- parentless area?
+ elseif( not( area.parent )) then
+ parent_area = v;
+
+ -- the parent has diffrent coordinates?
+ elseif( areas.areas[ area.parent ].pos1.x ~= area.pos1.x
+ or areas.areas[ area.parent ].pos1.y ~= area.pos1.y
+ or areas.areas[ area.parent ].pos1.z ~= area.pos1.z
+ or areas.areas[ area.parent ].pos2.x ~= area.pos2.x
+ or areas.areas[ area.parent ].pos2.y ~= area.pos2.y
+ or areas.areas[ area.parent ].pos2.z ~= area.pos2.z ) then
+ upper_area = v;
+ end
+ end
+
+ -- the area owned by the player is most intresting
+ if( own_area > 0 ) then
+
+ formspec = markers.get_area_desc_formspec( own_area, player, pos );
+
+ -- if the player owns none of these areas, show the topmost (parentless) area
+ elseif( parent_area > 0 ) then
+
+ formspec = markers.get_area_desc_formspec( parent_area, player, pos );
+
+ -- an area which has a parent with diffrent coordinates from its child may (or may not) be the
+ -- parent of all these subareas we've found here; there is no guarantee, but it's a best guess.
+ -- If it is not good enough, then the player can still search for himshelf.
+ elseif( upper_area > 0 ) then
+
+ formspec = markers.get_area_desc_formspec( upper_area, player, pos );
+
+ -- our superficial analysis of the structure of the areas failed; it is up to the player to
+ -- find out which of the candidates he is intrested in; we list them all
+ else
+
+ formspec = markers.get_area_list_formspec(ppos, player, 'pos', pos, pos, nil );
+ end
+ end
+
+ minetest.show_formspec( player:get_player_name(), "markers:info", formspec );
+end
diff --git a/markers/config.lua b/markers/config.lua
new file mode 100644
index 0000000..f29e46e
--- /dev/null
+++ b/markers/config.lua
@@ -0,0 +1,36 @@
+
+-- stores up to 4 marker positions for each player
+markers.positions = {}
+
+-- store the positions of that many markers for each player (until server restart)
+markers.MAX_MARKERS = 50;
+
+-- the protection against digging of the marker by other players expires after this time
+markers.EXPIRE_AFTER = 60*60*24;
+
+-- self-protected areas can not get higher than 100 blocks
+markers.MAX_HEIGHT = 100;
+
+-- only areas up to this size (in square meters) can be protected
+markers.MAX_SIZE = 1024; -- 32m * 32m = 1024 m^2
+
+-- show only areas withhin this range when showing the list of ALL areas
+-- (else it does get too crowded on multiplayer servers)
+-- set to something >60000 in order to view all areas; set to a smaller
+-- value (i.e. 500) on multiplayer servers with many protected areas
+
+if( #areas.areas > 1000 ) then
+ markers.AREA_RANGE = 100;
+elseif( #areas.areas > 100 ) then
+ markers.AREA_RANGE = 1000;
+else
+ markers.AREA_RANGE = 100000;
+end
+
+-- for most cases, the default values ought to work
+--markers.AREA_RANGE = 100000;
+
+if( io.open(minetest.get_worldpath().."/markers_settings.txt","r")) then
+ io.close()
+ dofile(minetest.get_worldpath().."/markers_settings.txt")
+end
diff --git a/markers/depends.txt b/markers/depends.txt
new file mode 100644
index 0000000..a18cd91
--- /dev/null
+++ b/markers/depends.txt
@@ -0,0 +1 @@
+areas
diff --git a/markers/init.lua b/markers/init.lua
new file mode 100644
index 0000000..2e72af0
--- /dev/null
+++ b/markers/init.lua
@@ -0,0 +1,536 @@
+
+-- markers are useful for measuring distances and for marking areas
+-- markers are protected from digging by other players for one day
+-- (the protection for the *marker* auto-expires then, and it can be digged)
+
+markers = {}
+
+dofile(minetest.get_modpath("markers").."/config.lua");
+dofile(minetest.get_modpath("markers").."/areas.lua");
+dofile(minetest.get_modpath("markers").."/marker_stone.lua");
+dofile(minetest.get_modpath("markers").."/land_title_register.lua");
+
+
+-- returns the first area found
+markers.get_area_by_pos1_pos2 = function(pos1, pos2)
+ for id, area in pairs(areas.areas) do
+
+ if( ((area.pos1.x == pos1.x and area.pos1.z == pos1.z )
+ or (area.pos1.x == pos1.x and area.pos1.z == pos2.z )
+ or (area.pos1.x == pos2.x and area.pos1.z == pos1.z )
+ or (area.pos1.x == pos2.x and area.pos1.z == pos2.z ))
+
+ and((area.pos2.x == pos1.x and area.pos2.z == pos1.z )
+ or (area.pos2.x == pos1.x and area.pos2.z == pos2.z )
+ or (area.pos2.x == pos2.x and area.pos2.z == pos1.z )
+ or (area.pos2.x == pos2.x and area.pos2.z == pos2.z ))) then
+
+ -- at least pos1 needs to have a hight value that fits in
+ if( (area.pos1.y <= pos1.y and area.pos2.y >= pos1.y)
+ or (area.pos1.y >= pos1.y and area.pos2.y <= pos1.y)) then
+
+ local found = area;
+ found[ 'id' ] = id;
+ return found;
+
+ end
+ end
+ end
+ return nil;
+end
+
+
+
+
+
+
+-- this function is supposed to return a text string describing the price of the land between po1 and pos2
+-- You can return somethiing like "for free" or "the promise to build anything good" as well as any
+-- real prices in credits or materials - it's really just a text here.
+-- Make sure you do not charge the player more than what you ask here.
+markers.calculate_area_price_text = function( pos1, pos2, playername )
+
+ local price = ( math.abs( pos1.x - pos2.x )+1 )
+ * ( math.abs( pos1.z - pos2.z )+1 );
+
+-- * math.ceil( ( math.abs( pos1.y - pos2.y )+1 )/10);
+
+ return tostring( price )..' credits';
+end
+
+
+
+
+markers.marker_placed = function( pos, placer, itemstack )
+
+ if( not( pos ) or not( placer )) then
+ return;
+ end
+
+ local meta = minetest.get_meta( pos );
+ local name = placer:get_player_name();
+
+ meta:set_string( 'infotext', 'Marker at '..minetest.pos_to_string( pos )..
+ ' (placed by '..tostring( name )..'). '..
+ 'Right-click to update.');
+ meta:set_string( 'owner', name );
+ -- this allows protection of this particular marker to expire
+ meta:set_string( 'time', tostring( os.time()) );
+
+ local txt = '';
+
+ if( not( markers.positions[ name ] ) or #markers.positions[name]<1) then
+ markers.positions[ name ] = {};
+ markers.positions[ name ][ 1 ] = pos;
+
+ minetest.chat_send_player( name,
+ 'First marker set to position '..
+ minetest.pos_to_string( markers.positions[ name ][ 1 ] )..
+ '. Please place a second marker to measure distance. '..
+ 'Place four markers in a square to define an area.');
+ else
+ table.insert( markers.positions[ name ], pos );
+
+ local n = #markers.positions[ name ];
+
+ local dx = markers.positions[ name ][ n ].x - markers.positions[ name ][ n-1 ].x;
+ local dy = markers.positions[ name ][ n ].y - markers.positions[ name ][ n-1 ].y;
+ local dz = markers.positions[ name ][ n ].z - markers.positions[ name ][ n-1 ].z;
+
+ local dir_name = "unknown";
+ local d = 0;
+ if( dx == 0 and dz > 0 ) then dir_name = "north"; d = math.abs(dz);
+ elseif( dx == 0 and dz < 0 ) then dir_name = "south"; d = math.abs(dz);
+ elseif( dz == 0 and dx > 0 ) then dir_name = "east"; d = math.abs(dx);
+ elseif( dz == 0 and dx < 0 ) then dir_name = "west"; d = math.abs(dx);
+ elseif( dx == 0 and dz == 0 and dy > 0 ) then dir_name = "above"; d = math.abs(dy);
+ elseif( dx == 0 and dz == 0 and dy < 0 ) then dir_name = "below"; d = math.abs(dy);
+ else
+
+ local area = (math.abs( dx )+1)
+ * (math.abs( dz )+1);
+ local volume = area * (math.abs( dy )+1);
+
+ minetest.chat_send_player( name, 'This marker is at '..
+ minetest.pos_to_string( markers.positions[ name ][ n ] )..', while the last one is at '..
+ minetest.pos_to_string( markers.positions[ name ][ n-1 ] )..'. Distance (x/y/z): '..
+ tostring(math.abs(dx))..'/'..
+ tostring(math.abs(dy))..'/'..
+ tostring(math.abs(dz))..
+ '. Area: '..tostring( area )..' m^2. Volume: '..tostring( volume )..' m^3.');
+ end
+
+ -- this marker is aligned to the last one
+ if( d > 0 ) then
+ minetest.chat_send_player( name, 'Marker placed at '..minetest.pos_to_string( pos )..
+ '. Relative to the marker you placed before, this one is '..
+ tostring( d )..' m '..dir_name..'.');
+ end
+
+ -- make sure the list does not grow too large
+ if( n > markers.MAX_MARKERS ) then
+ table.remove( markers.positions[ name ], 1 );
+ end
+ end
+end
+
+
+
+markers.marker_can_dig = function(pos,player)
+
+ if( not( pos ) or not( player )) then
+ return true;
+ end
+
+ local meta = minetest.get_meta( pos );
+ local owner = meta:get_string( 'owner' );
+ local time = meta:get_string( 'time' );
+
+ -- can the marker be removed?
+ if( not( owner )
+ or owner==''
+ or not( time )
+ or time==''
+ or (os.time() - tonumber( time )) > markers.EXPIRE_AFTER ) then
+
+ return true;
+
+ -- marker whose data got lost anyway
+ elseif( not( markers.positions[ owner ] )
+ or #markers.positions[ owner ] < 1 ) then
+
+ return true;
+
+ -- marker owned by someone else and still in use
+ elseif( owner ~= player:get_player_name()) then
+
+ minetest.chat_send_player( player:get_player_name(),
+ 'Sorry, this marker belongs to '..tostring( owner )..
+ '. If you still want to remove it, try again in '..
+ ( tostring( markers.EXPIRE_AFTER + tonumber( time ) - os.time()))..' seconds.');
+ return false;
+
+ end
+
+ return true;
+end
+
+
+
+
+markers.marker_after_dig_node = function(pos, oldnode, oldmetadata, digger)
+
+ if( not(oldmetadata ) or not(oldmetadata['fields'])) then
+ return;
+ end
+
+ local owner = oldmetadata['fields']['owner'];
+ if( not( owner )
+ or owner==''
+ or not( markers.positions[ owner ] )
+ or #markers.positions[ owner ] < 1 ) then
+
+ return;
+ end
+
+ -- remove the markers position from our table of stored positions
+ local found = 0;
+ for i,v in ipairs( markers.positions[ owner ] ) do
+ if( v.x == pos.x
+ and v.y == pos.y
+ and v.z == pos.z ) then
+ found = i;
+ end
+ end
+ if( found ~= 0 ) then
+ table.remove( markers.positions[ owner ], found );
+ end
+ return true;
+end
+
+
+--this function returns a min_pos and max_pos that are the corners
+--of a box that contains ALL of the players active markers.
+markers.get_box_from_markers = function(name)
+ if (not name) or (not (markers.positions[ name ][ 1 ] )) then
+ return {x=0,y=0,z=0},{x=1,y=1,z=1}
+ end
+ local min_pos={}
+ min_pos.x = markers.positions[ name ][ 1 ].x
+ min_pos.y = markers.positions[ name ][ 1 ].y
+ min_pos.z = markers.positions[ name ][ 1 ].z
+ local max_pos={}
+ max_pos.x = markers.positions[ name ][ 1 ].x
+ max_pos.y = markers.positions[ name ][ 1 ].y
+ max_pos.z = markers.positions[ name ][ 1 ].z
+ for i,p in ipairs( markers.positions[ name ] ) do
+ if p.x < min_pos.x then min_pos.x = p.x end
+ if p.x > max_pos.x then max_pos.x = p.x end
+ if p.y < min_pos.y then min_pos.y = p.y end
+ if p.y > max_pos.y then max_pos.y = p.y end
+ if p.z < min_pos.z then min_pos.z = p.z end
+ if p.z > max_pos.z then max_pos.z = p.z end
+ end
+ --print("getbox: min_pos.x="..min_pos.x.." y="..min_pos.y.." z="..min_pos.z)
+ --print(" : max_pos.x="..max_pos.x.." y="..max_pos.y.." z="..max_pos.z)
+ return min_pos, max_pos
+end --get_box_from_markers
+
+
+
+markers.get_marker_formspec = function(player, pos, error_msg)
+ local formspec = "";
+
+ local meta = minetest.get_meta( pos );
+ local owner = meta:get_string( 'owner' );
+
+ local name = player:get_player_name();
+
+ local formspec_info = "size[6,4]"..
+ "button_exit[2,2.5;1,0.5;abort;OK]"..
+ "textarea[1,1;4,2;info;Information;";
+ if( owner ~= nil and owner ~= '' and owner ~= name ) then
+ return formspec_info.."This marker\ncan only be used by\n"..tostring( owner )..", who\nplaced the markers.]";
+ end
+
+ if( not( markers.positions[ name ]) or #markers.positions[name]<1) then
+ return formspec_info.."Information about the positions\nof your other markers\ngot lost.\nPlease dig and place\nyour markers again!]";
+ end
+
+ local n = #markers.positions[ name ];
+
+ if ( n < 2 ) then
+ return formspec_info.."Please place 2 or more markers\n - at least one in each corner\n of your area first]";
+ end
+
+
+ local coords={}
+ coords[1],coords[2] = markers.get_box_from_markers(name)
+
+ -- save data
+ meta:set_string( 'coords', minetest.serialize( coords ) );
+
+ if( not( coords ) or #coords < 2 or not( coords[1] ) or not( coords[2] )) then
+ return formspec_info.."Error in markers.]";
+ end
+
+ -- the coordinates are set; we may present an input form now
+
+ -- has the area already been defined?
+ local area = markers.get_area_by_pos1_pos2( coords[1], coords[2] );
+
+
+ local size = (math.abs( coords[1].x - coords[2].x )+1)
+ * (math.abs( coords[1].z - coords[2].z )+1);
+
+ -- check if area is too large
+ if( markers.MAX_SIZE < size ) then
+ return formspec_info.."Error: You can only protect\nareas of up to "..tostring( markers.MAX_SIZE ).."m^2.\n"..
+ "Your marked area is "..tostring( size ).." m^2 large.]";
+ end
+
+ local formspec = 'size[10,7]'..
+ 'label[0.5,1;The area you marked extends from]'..
+ 'label[4.7,1;'..minetest.pos_to_string( coords[ 1 ] )..' to '..minetest.pos_to_string( coords[ 2 ] )..'.]'..
+ 'label[4.7,1.5;It spans '..tostring( math.abs( coords[1].x - coords[2].x )+1 )..
+ ' x '..tostring( math.abs( coords[1].z - coords[2].z )+1 )..
+ ' = '..tostring( size )..' m^2.]';
+
+ -- display the error message (if there is any)
+ if( error_msg ~= nil ) then
+ formspec = formspec..
+ 'label[0.5,0.0;Error: ]'..
+ 'textarea[5.0,0;4,1.5;info;;'..error_msg..']';
+ end
+
+ if( area and area['id'] ) then
+ formspec = formspec..
+ 'label[0.5,2.0;This is area number ]'..
+ 'label[4.7,2.0;'..tostring( area['id'] )..'.]'..
+ 'label[0.5,2.5;It is owned by ]'..
+ 'label[4.7,2.5;'..tostring( area['owner'] )..'.]'..
+ 'label[0.5,3.0;The area is called ]'..
+ 'label[4.7,3.0;'..tostring( area['name'] )..'.]'..
+ "button_exit[2,6.0;2,0.5;abort;OK]";
+ else
+ formspec = formspec..
+-- 'label[0.5,2.0;Buying this area will cost you ]'..
+-- 'label[4.7,2.0;'..markers.calculate_area_price_text( coords[1], coords[2], name )..'.]'..
+
+ 'label[0.5,3.0;Your area ought to go..]'..
+ 'label[0.5,3.5;this many blocks up:]'..
+ 'field[5.0,4.0;1,0.5;add_height;;40]'..
+ 'label[6.0,3.5;(above '..coords[2].y..' )]'..
+
+ 'label[0.5,4.0;and this many blocks down:]'..
+ 'field[5.0,4.5;1,0.5;add_depth;;10]'..
+ 'label[6.0,4.0;(below '..coords[1].y..' )]'..
+
+ 'label[0.5,4.5;The area shall be named]'..
+ 'field[5.0,5.0;6,0.5;set_area_name;;please enter a name]'..
+
+ "button_exit[2,6.0;2,0.5;abort;Abort]"..
+ -- code the position in the "Buy area" field
+ "button_exit[6,6.0;2,0.5;"..minetest.pos_to_string(pos)..";Protect area]";
+ end
+
+ return formspec;
+end
+
+
+
+-- protect/buy an area
+markers.marker_on_receive_fields = function(pos, formname, fields, sender)
+
+ if( not( pos )) then
+ minetest.chat_send_player( name, 'Sorry, could not find the marker you where using to access this formspec.' );
+ return;
+ end
+
+
+ local meta = minetest.get_meta( pos );
+
+ local name = sender:get_player_name();
+
+ local coords_string = meta:get_string( 'coords' );
+ if( not( coords_string ) or coords_string == '' ) then
+ minetest.chat_send_player( name, 'Could not find marked area. Please dig and place your markers again!');
+ return;
+ end
+ local coords = minetest.deserialize( coords_string );
+
+
+ -- do not protect areas twice
+ local area = markers.get_area_by_pos1_pos2( coords[1], coords[2] );
+ if( area ) then
+
+ minetest.chat_send_player( name, 'This area is already protected.');
+ return;
+ end
+
+
+ -- check input
+ local add_height = tonumber( fields['add_height'] );
+ local add_depth = tonumber( fields['add_depth'] );
+
+ local error_msg = '';
+ if( not( add_height ) or add_height < 0 or add_height > markers.MAX_HEIGHT ) then
+ minetest.chat_send_player( name, 'Please enter a number between 0 and '..tostring( markers.MAX_HEIGHT )..
+ ' in the field where the height of your area is requested. Your area will stretch that many blocks '..
+ 'up into the sky from the position of this marker onward.');
+ error_msg = 'The height value\nhas to be larger than 0\nand smaller than '..tostring( markers.MAX_HEIGHT );
+
+ elseif( not( add_depth ) or add_depth < 0 or add_depth > markers.MAX_HEIGHT ) then
+ minetest.chat_send_player( name, 'Please enter a number between 0 and '..tostring( markers.MAX_HEIGHT )..
+ ' in the field where the depth of your area is requested. Your area will stretch that many blocks '..
+ 'into the ground from the position of this marker onward.');
+ error_msg = 'The depth value\nhas to be larger than 0\nand smaller than '..tostring( markers.MAX_HEIGHT );
+
+ elseif( add_height + add_depth > markers.MAX_HEIGHT ) then
+ minetest.chat_send_player( name, 'Sorry, your area exceeds the height limit. Height and depth added have to '..
+ 'be smaller than '..tostring( markers.MAX_HEIGHT )..'.');
+ error_msg = 'height + depth has to\nbe smaller than '..tostring( markers.MAX_HEIGHT )..'.'
+
+ elseif( not( fields[ 'set_area_name' ] ) or fields['set_area_name'] == 'please enter a name' ) then
+ minetest.chat_send_player( name, 'Please provide a name for your area, i.e. \"'..
+ tostring( name )..'s first house\" The name ought to describe what you intend to build here.');
+ error_msg = 'Please provide a\nname for your area!';
+
+ else
+ error_msg = nil;
+ end
+
+
+ if( error_msg ~= nil ) then
+ minetest.show_formspec( name, "markers:mark", markers.get_marker_formspec(sender, pos, error_msg));
+ return;
+ end
+
+
+ -- those coords lack the height component
+ local pos1 = coords[1];
+ local pos2 = coords[2];
+ -- apply height values from the formspeck
+ pos1.y = pos1.y - add_depth;
+ pos2.y = pos2.y + add_height;
+
+ pos1, pos2 = areas:sortPos( pos1, pos2 );
+
+ --minetest.chat_send_player('singleplayer','INPUT: '..minetest.serialize( pos1 )..' pos2: '..minetest.serialize( pos2 ));
+ minetest.log("action", "[markers] /protect invoked, owner="..name..
+ " areaname="..fields['set_area_name']..
+ " startpos="..minetest.pos_to_string(pos1)..
+ " endpos=" ..minetest.pos_to_string(pos2));
+
+ local canAdd, errMsg = areas:canPlayerAddArea(pos1, pos2, name)
+ if not canAdd then
+ minetest.chat_send_player(name, "You can't protect that area: "..errMsg)
+ minetest.show_formspec( name, "markers:mark", markers.get_marker_formspec(sender, pos, errMsg));
+ return
+ end
+
+ local id = areas:add(name, fields['set_area_name'], pos1, pos2, nil)
+ areas:save()
+
+ minetest.chat_send_player(name, "Area protected. ID: "..id)
+
+ minetest.show_formspec( name, "markers:mark", markers.get_marker_formspec(sender, pos, nil));
+end
+
+
+
+-- formspec input needs to be handled diffrently
+markers.form_input_handler = function( player, formname, fields)
+
+ if( formname == "markers:mark" ) then
+
+
+ if( not(fields) or fields['abort']) then
+ return true;
+ end
+
+ --- decode the position of the marker (which is hidden in the Buy-buttons name
+ local pos = {};
+ for k, v in pairs( fields ) do
+ if( v == 'Protect area' ) then
+ pos = minetest.string_to_pos( k );
+ end
+ end
+ if( pos and pos.x and pos.y and pos.z ) then
+ markers.marker_on_receive_fields(pos, formname, fields, player);
+ end
+ return true;
+
+
+ elseif( formname == "markers:info"
+ and player
+ and markers.menu_data_by_player[ player:get_player_name() ] ) then
+
+ local res = markers.form_input_handler_areas( player, formname, fields);
+ if( res ) then
+ return true;
+ end
+
+ -- TODO
+-- minetest.chat_send_player('singleplayer','MARKERS:INFO WITH '..minetest.serialize( fields ));
+
+ else
+ -- TODO
+-- minetest.chat_send_player('singleplayer','YOU CALLED '..tostring( formname )..' WITH '..minetest.serialize( fields ));
+
+ end
+
+ return false;
+
+end
+
+minetest.register_on_player_receive_fields( markers.form_input_handler)
+
+
+
+
+minetest.register_node("markers:mark", {
+ description = "Marker",
+ tiles = {"markers_mark.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, --fixed on both buttons dig client crash
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -0.1, -0.5, -0.1, 0.1, 1.5, 0.1 },
+ },
+ },
+
+ after_place_node = function(pos, placer, itemstack)
+ markers.marker_placed( pos, placer, itemstack );
+ end,
+
+ -- the node is digged immediately, so we may as well do all the work in can_dig (any wrong digs are not that critical)
+ can_dig = function(pos,player)
+ return markers.marker_can_dig( pos, player );
+ end,
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ return markers.marker_after_dig_node( pos, oldnode, oldmetadata, digger );
+ end,
+
+ on_rightclick = function(pos, node, clicker)
+
+ minetest.show_formspec( clicker:get_player_name(),
+ "markers:mark",
+ markers.get_marker_formspec(clicker, pos, nil)
+ );
+ end,
+})
+
+
+minetest.register_craft({
+ output = "markers:mark 4",
+ recipe = { { "group:stick" },
+ { "default:apple" },
+ { "group:stick" },
+ } });
+
diff --git a/markers/land_title_register.lua b/markers/land_title_register.lua
new file mode 100644
index 0000000..4156acb
--- /dev/null
+++ b/markers/land_title_register.lua
@@ -0,0 +1,74 @@
+
+
+minetest.register_tool( "markers:land_title_register",
+{
+ description = "Land title register. Left-click with it to get information about who owns the land you clicked on.",
+ groups = {},
+ inventory_image = "default_book.png", -- TODO
+ wield_image = "",
+ wield_scale = {x=1,y=1,z=1},
+ stack_max = 1, -- there is no need to have more than one
+ liquids_pointable = true, -- ground with only water on can be owned as well
+ -- the tool_capabilities are completely irrelevant here - no need to dig
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ groupcaps={
+ fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0}
+ }
+ },
+ node_placement_prediction = nil,
+
+ on_place = function(itemstack, placer, pointed_thing)
+
+ if( placer == nil or pointed_thing == nil) then
+ return itemstack; -- nothing consumed
+ end
+ local name = placer:get_player_name();
+
+ -- the position is what we're actually looking for
+ local pos = minetest.get_pointed_thing_position( pointed_thing, false ); -- not above
+
+ if( not( pos ) or not( pos.x )) then
+ minetest.chat_send_player( name, "Position not found.");
+ return itemstack;
+ end
+
+ -- this function shows the formspec with the information about the area(s)
+ markers.show_marker_stone_formspec( placer, pos );
+
+ return itemstack; -- nothing consumed, nothing changed
+ end,
+
+
+ on_use = function(itemstack, placer, pointed_thing)
+
+ if( placer == nil or pointed_thing == nil) then
+ return itemstack; -- nothing consumed
+ end
+ local name = placer:get_player_name();
+
+ local pos = minetest.get_pointed_thing_position( pointed_thing, false ); -- not above
+
+ if( not( pos ) or not( pos.x )) then
+ minetest.chat_send_player( name, "Position not found.");
+ return itemstack;
+ end
+
+ -- this function shows the formspec with the information about the area(s)
+ markers.show_marker_stone_formspec( placer, pos );
+
+ return itemstack; -- nothing consumed, nothing changed
+ end,
+})
+
+
+minetest.register_craft({
+ output = "markers:land_title_register",
+ recipe = { { "markers:mark" },
+ { "markers:stone" },
+ { "default:book"}
+ } });
+
diff --git a/markers/marker_stone.lua b/markers/marker_stone.lua
new file mode 100644
index 0000000..c687502
--- /dev/null
+++ b/markers/marker_stone.lua
@@ -0,0 +1,24 @@
+
+minetest.register_node("markers:stone", {
+ description = "Boundary marker for land administration",
+ tiles = {"markers_stone.png", "markers_stone.png", "markers_stone_side.png",
+ "markers_stone_side.png", "markers_stone_side.png", "markers_stone_side.png" },
+-- no facedir here - we want a fixed north indication!
+-- paramtype2 = "facedir",
+ groups = {cracky=2},
+ legacy_facedir_simple = true,
+ is_ground_content = false,
+
+ on_rightclick = function(pos, node, clicker)
+
+ markers.show_marker_stone_formspec( clicker, pos );
+ end,
+})
+
+
+minetest.register_craft({
+ output = "markers:stone",
+ recipe = { { "markers:mark" },
+ { "default:cobble" },
+ } });
+
diff --git a/markers/textures/compass_side_top.png b/markers/textures/compass_side_top.png
new file mode 100644
index 0000000..3c87c57
--- /dev/null
+++ b/markers/textures/compass_side_top.png
Binary files differ
diff --git a/markers/textures/markers_mark.png b/markers/textures/markers_mark.png
new file mode 100644
index 0000000..76cc6c0
--- /dev/null
+++ b/markers/textures/markers_mark.png
Binary files differ
diff --git a/markers/textures/markers_stone.png b/markers/textures/markers_stone.png
new file mode 100644
index 0000000..73962bb
--- /dev/null
+++ b/markers/textures/markers_stone.png
Binary files differ
diff --git a/markers/textures/markers_stone_side.png b/markers/textures/markers_stone_side.png
new file mode 100644
index 0000000..7230e74
--- /dev/null
+++ b/markers/textures/markers_stone_side.png
Binary files differ
diff --git a/memorandum/depends.txt b/memorandum/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/memorandum/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/memorandum/init.lua b/memorandum/init.lua
new file mode 100644
index 0000000..7542f13
--- /dev/null
+++ b/memorandum/init.lua
@@ -0,0 +1,361 @@
+-----------------------------------------------------------------------------------------------
+local title = "Memorandum"
+local version = "0.0.9"
+local mname = "memorandum"
+-----------------------------------------------------------------------------------------------
+-- { left , bottom , front , right , top , back }
+local sheet = { -1/2 , -1/2 , -1/2 , 1/2 , -7/16 , 1/2 }
+local info = 'On this piece of paper is written: "'
+local sign = '" Signed by '
+
+minetest.register_craftitem(":default:paper", {
+ description = "Paper",
+ inventory_image = "default_paper.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ local pt = pointed_thing
+ local direction = minetest.dir_to_facedir(placer:get_look_dir())
+ local there = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ if minetest.get_node(there).name == "air" then
+ minetest.add_node(there, {name="memorandum:letter_empty", param2=direction})
+ itemstack:take_item()
+ return itemstack
+ end
+ end,
+})
+
+minetest.register_node("memorandum:letter_empty", {
+ drawtype = "nodebox",
+ tiles = {"memorandum_letter_empty.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ node_box = {type = "fixed", fixed = sheet},
+ groups = {snappy=3,dig_immediate=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string(
+ "formspec",
+ "size[10,7]"..
+ "field[1,1;8.5,1;text; Write a Letter;${text}]"..
+ "field[1,3;4.25,1;signed; Sign Letter (optional);${signed}]"..
+ "button_exit[0.75,5;4.25,1;text,signed;Done]"
+ )
+ meta:set_string("infotext", info..'"')
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ fields.text = fields.text
+ fields.signed = fields.signed
+ --[[print((sender:get_player_name() or "").." wrote \""..fields.text..
+ "\" to paper at "..minetest.pos_to_string(pos))]]
+ local direction = minetest.get_node(pos).param2
+ if fields.text ~= "" then
+ minetest.add_node(pos, {name="memorandum:letter_written", param2=direction})
+ end
+ meta:set_string("text", fields.text)
+ meta:set_string("signed", "")
+ if fields.text then
+ if fields.signed ~= "" then
+ meta:set_string("signed", fields.signed)
+ meta:set_string("infotext", info..fields.text..sign..fields.signed)
+ else
+ meta:set_string("infotext", info..fields.text..'" Unsigned')
+ end
+ else
+ meta:set_string("infotext", "" )
+ end
+ end,
+ on_dig = function(pos, node, digger)
+ if digger:is_player() and digger:get_inventory() then
+ digger:get_inventory():add_item("main", {name="default:paper", count=1, wear=0, metadata=""})
+ end
+ minetest.remove_node(pos)
+ end,
+})
+
+minetest.register_craftitem("memorandum:letter", {
+ description = "Letter",
+ inventory_image = "default_paper.png^memorandum_letters.png",
+ stack_max = 1,
+ groups = {not_in_creative_inventory=1},
+ on_use = function(itemstack, user, pointed_thing)
+ local player = user:get_player_name()
+ local text = itemstack:get_metadata()
+ local scnt = string.sub (text, -2, -1)
+ if scnt == "00" then
+ mssg = string.sub (text, 1, -3)
+ sgnd = ""
+ elseif tonumber(scnt) == nil then -- to support previous versions
+ mssg = string.sub (text, 37, -1)
+ sgnd = ""
+ else
+ mssg = string.sub (text, 1, -scnt -3)
+ sgnd = string.sub (text, -scnt-2, -3)
+ end
+ if scnt == "00" or tonumber(scnt) == nil then
+ minetest.chat_send_player(player, info..mssg..'" Unsigned', false)
+ else
+ minetest.chat_send_player(player, info..mssg..sign..sgnd, false)
+ end
+ end,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pt = pointed_thing
+ local there = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ local direction = minetest.dir_to_facedir(placer:get_look_dir())
+ local meta = minetest.get_meta(there)
+ local text = itemstack:get_metadata()
+ local scnt = string.sub (text, -2, -1)
+ if scnt == "00" then
+ mssg = string.sub (text, 1, -3)
+ sgnd = ""
+ elseif tonumber(scnt) == nil then -- to support previous versions
+ mssg = string.sub (text, 37, -1)
+ sgnd = ""
+ else
+ mssg = string.sub (text, 1, -scnt -3)
+ sgnd = string.sub (text, -scnt-2, -3)
+ end
+ if minetest.get_node(there).name == "air" then
+ minetest.add_node(there, {name="memorandum:letter_written", param2=direction})
+ if scnt == "00" or tonumber(scnt) == nil then
+ meta:set_string("infotext", info..mssg..'" Unsigned')
+ else
+ meta:set_string("infotext", info..mssg..sign..sgnd)
+ end
+ meta:set_string("text", mssg)
+ meta:set_string("signed", sgnd)
+ itemstack:take_item()
+ return itemstack
+ end
+ end,
+})
+
+minetest.register_node("memorandum:letter_written", {
+ drawtype = "nodebox",
+ tiles = {"memorandum_letter_empty.png^memorandum_letter_text.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ node_box = {type = "fixed", fixed = sheet},
+ groups = {snappy=3,dig_immediate=3,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+ on_receive_fields = function(pos, formname, fields, sender)
+ local item = sender:get_wielded_item()
+ if item:get_name() == "memorandum:eraser" then
+ local meta = minetest.get_meta(pos)
+ fields.text = fields.text
+ fields.signed = fields.signed
+ --[[print((sender:get_player_name() or "").." wrote \""..fields.text..
+ "\" to paper at "..minetest.pos_to_string(pos))]]
+ local direction = minetest.get_node(pos).param2
+ if fields.text == "" then
+ minetest.add_node(pos, {name="memorandum:letter_empty", param2=direction})
+ end
+ meta:set_string("text", fields.text)
+ meta:set_string("signed", "")
+ if fields.text then
+ if fields.signed ~= "" then
+ meta:set_string("signed", fields.signed)
+ meta:set_string("infotext", info..fields.text..sign..fields.signed)
+ else
+ meta:set_string("infotext", info..fields.text..'" Unsigned')
+ end
+ else
+ meta:set_string("infotext", "" )
+ end
+ end
+ end,
+ on_dig = function(pos, node, digger)
+ if digger:is_player() and digger:get_inventory() then
+ local meta = minetest.get_meta(pos)
+ local text = meta:get_string("text")
+ local signed = meta:get_string("signed")
+ local signcount = string.len(signed)
+ local item = digger:get_wielded_item()
+ local inv = digger:get_inventory()
+ if string.len(signed) < 10 then
+ signcount = "0"..string.len(signed)
+ end
+ if signed == '" Unsigned' then
+ signcount = "00"
+ end
+ if item:get_name() == "vessels:glass_bottle" then
+ inv:remove_item("main", "vessels:glass_bottle")
+ inv:add_item("main", {name="memorandum:message", count=1, wear=0, metadata=text..signed..signcount})
+ else
+ inv:add_item("main", {name="memorandum:letter", count=1, wear=0, metadata=text..signed..signcount})
+ end
+ end
+ minetest.remove_node(pos)
+ end,
+})
+
+local function eraser_wear(itemstack, user, pointed_thing, uses)
+ itemstack:add_wear(65535/(uses-1))
+ return itemstack
+end
+
+minetest.register_tool("memorandum:eraser", {
+ description = "Eraser",
+ inventory_image = "memorandum_eraser.png",
+ wield_image = "memorandum_eraser.png^[transformR90",--^[transformFX",
+ wield_scale = {x = 0.5, y = 0.5, z = 1},
+ on_use = function(itemstack, user, pointed_thing)
+ local pt = pointed_thing
+ if pt and pt.under then
+ local node = minetest.get_node(pt.under)
+ local meta = minetest.get_meta(pt.under)
+ local player = user:get_player_name()
+ local signer = meta:get_string("signed")
+ if string.find(node.name, "memorandum:letter_written") then
+ if signer == player or signer == "" then
+ meta:set_string(
+ "formspec",
+ "size[10,7]"..
+ "field[1,1;8.5,1;text; Edit Text;${text}]"..
+ "field[1,3;4.25,1;signed; Edit Signature;${signed}]"..
+ "button_exit[0.75,5;4.25,1;text,signed;Done]"
+ )
+ if not minetest.setting_getbool("creative_mode") then
+ return eraser_wear(itemstack, user, pointed_thing, 30)
+ else
+ return {name="memorandum:eraser", count=1, wear=0, metadata=""}
+ end
+ end
+ end
+ end
+ end,
+})
+
+minetest.register_node("memorandum:message", {
+ description = "Message in a Bottle",
+ drawtype = "plantlike",
+ tiles = {"vessels_glass_bottle.png^memorandum_message.png"},
+ inventory_image = "vessels_glass_bottle_inv.png^memorandum_message.png",
+ wield_image = "vessels_glass_bottle.png^memorandum_message.png",
+ paramtype = "light",
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/4, -1/2, -1/4, 1/4, 4/10, 1/4}
+ },
+ stack_max = 1,
+ groups = {vessel=1,dig_immediate=3,attached_node=1,not_in_creative_inventory=1},
+ --sounds = default.node_sound_glass_defaults(),
+ on_use = function(itemstack, user, pointed_thing)
+ local pt = pointed_thing
+ if pt.under then
+ local there = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ local meta = minetest.get_meta(there)
+ local text = itemstack:get_metadata()
+ local scnt = string.sub (text, -2, -1)
+ if scnt == "00" then
+ mssg = string.sub (text, 1, -3)
+ sgnd = ""
+ elseif tonumber(scnt) == nil then -- to support previous versions
+ mssg = string.sub (text, 37, -1)
+ sgnd = ""
+ else
+ mssg = string.sub (text, 1, -scnt -3)
+ sgnd = string.sub (text, -scnt-2, -3)
+ end
+ if minetest.get_node(there).name == "air" then
+ minetest.add_node(there, {name="memorandum:letter_written", param2=math.random(0,3)})
+ if scnt == "00" or tonumber(scnt) == nil then
+ meta:set_string("infotext", info..mssg..'" Unsigned')
+ else
+ meta:set_string("infotext", info..mssg..sign..sgnd)
+ end
+ meta:set_string("text", mssg)
+ meta:set_string("signed", sgnd)
+ itemstack:take_item()
+ user:get_inventory():add_item("main", {name="vessels:glass_bottle", count=1, wear=0, metadata=""})
+ return itemstack
+ end
+ end
+ end,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pt = pointed_thing
+ local there = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ local meta = minetest.get_meta(there)
+ local text = itemstack:get_metadata()
+ local scnt = string.sub (text, -2, -1)
+ if scnt == "00" then
+ mssg = string.sub (text, 1, -3)
+ sgnd = ""
+ elseif tonumber(scnt) == nil then -- to support previous versions
+ mssg = string.sub (text, 37, -1)
+ sgnd = ""
+ else
+ mssg = string.sub (text, 1, -scnt -3)
+ sgnd = string.sub (text, -scnt-2, -3)
+ end
+ if minetest.get_node(there).name == "air" then
+ minetest.add_node(there, {name="memorandum:message"})
+ meta:set_string("text", mssg)
+ meta:set_string("signed", sgnd)
+ itemstack:take_item()
+ return itemstack
+ end
+ end,
+ on_dig = function(pos, node, digger)
+ if digger:is_player() and digger:get_inventory() then
+ local meta = minetest.get_meta(pos)
+ local text = meta:get_string("text")
+ local signed = meta:get_string("signed")
+ local signcount = string.len(signed)
+ local item = digger:get_wielded_item()
+ if string.len(signed) < 10 then
+ signcount = "0"..string.len(signed)
+ end
+ if signed == '" Unsigned' then
+ signcount = "00"
+ end
+ digger:get_inventory():add_item("main", {name="memorandum:message", count=1, wear=0, metadata=text..signed..signcount})
+ end
+ minetest.remove_node(pos)
+ end,
+})
+
+if minetest.get_modpath("farming") ~= nil then
+minetest.register_craft({
+ type = "shapeless",
+ output = "memorandum:eraser",
+ recipe = {"farming:bread"},
+})
+end
+if minetest.get_modpath("candles") ~= nil then
+minetest.register_craft({
+ type = "shapeless",
+ output = "memorandum:eraser",
+ recipe = {"candles:wax"},
+})
+end
+if minetest.get_modpath("bees") ~= nil then
+minetest.register_craft({
+ type = "shapeless",
+ output = "memorandum:eraser",
+ recipe = {"bees:honey_comb"},
+})
+end
+if minetest.get_modpath("technic") ~= nil then
+minetest.register_craft({
+ type = "shapeless",
+ output = "memorandum:eraser",
+ recipe = {"technic:raw_latex"},
+})
+end
+
+--[[minetest.register_craft({
+ type = "shapeless",
+ output = "default:paper",
+ recipe = {"memorandum:letter","memorandum:eraser"},
+ replacements = {
+ {"memorandum:eraser", "memorandum:eraser"}
+ },
+})]]
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+-----------------------------------------------------------------------------------------------
diff --git a/memorandum/textures/alternates/memorandum_eraser.png b/memorandum/textures/alternates/memorandum_eraser.png
new file mode 100644
index 0000000..4ec390e
--- /dev/null
+++ b/memorandum/textures/alternates/memorandum_eraser.png
Binary files differ
diff --git a/memorandum/textures/memorandum_eraser.png b/memorandum/textures/memorandum_eraser.png
new file mode 100644
index 0000000..1b25084
--- /dev/null
+++ b/memorandum/textures/memorandum_eraser.png
Binary files differ
diff --git a/memorandum/textures/memorandum_letter_empty.png b/memorandum/textures/memorandum_letter_empty.png
new file mode 100644
index 0000000..1c9f6ba
--- /dev/null
+++ b/memorandum/textures/memorandum_letter_empty.png
Binary files differ
diff --git a/memorandum/textures/memorandum_letter_text.png b/memorandum/textures/memorandum_letter_text.png
new file mode 100644
index 0000000..81f27af
--- /dev/null
+++ b/memorandum/textures/memorandum_letter_text.png
Binary files differ
diff --git a/memorandum/textures/memorandum_letters.png b/memorandum/textures/memorandum_letters.png
new file mode 100644
index 0000000..fb25500
--- /dev/null
+++ b/memorandum/textures/memorandum_letters.png
Binary files differ
diff --git a/memorandum/textures/memorandum_message.png b/memorandum/textures/memorandum_message.png
new file mode 100644
index 0000000..8a82157
--- /dev/null
+++ b/memorandum/textures/memorandum_message.png
Binary files differ
diff --git a/mesecons/LICENSE.txt b/mesecons/LICENSE.txt
new file mode 100644
index 0000000..0d2fd18
--- /dev/null
+++ b/mesecons/LICENSE.txt
@@ -0,0 +1,532 @@
+The LGPLv3 applies to all code in this project.
+The CC-BY-SA-3.0 license applies to textures and any other content in this project which is not source code.
+
+=================================================================
+
+GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+=================================================================
+
+Creative Commons Legal Code
+
+Attribution-ShareAlike 3.0 Unported
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+ other pre-existing works, such as a translation, adaptation,
+ derivative work, arrangement of music or other alterations of a
+ literary or artistic work, or phonogram or performance and includes
+ cinematographic adaptations or any other form in which the Work may be
+ recast, transformed, or adapted including in any form recognizably
+ derived from the original, except that a work that constitutes a
+ Collection will not be considered an Adaptation for the purpose of
+ this License. For the avoidance of doubt, where the Work is a musical
+ work, performance or phonogram, the synchronization of the Work in
+ timed-relation with a moving image ("synching") will be considered an
+ Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+ encyclopedias and anthologies, or performances, phonograms or
+ broadcasts, or other works or subject matter other than works listed
+ in Section 1(f) below, which, by reason of the selection and
+ arrangement of their contents, constitute intellectual creations, in
+ which the Work is included in its entirety in unmodified form along
+ with one or more other contributions, each constituting separate and
+ independent works in themselves, which together are assembled into a
+ collective whole. A work that constitutes a Collection will not be
+ considered an Adaptation (as defined below) for the purposes of this
+ License.
+ c. "Creative Commons Compatible License" means a license that is listed
+ at http://creativecommons.org/compatiblelicenses that has been
+ approved by Creative Commons as being essentially equivalent to this
+ License, including, at a minimum, because that license: (i) contains
+ terms that have the same purpose, meaning and effect as the License
+ Elements of this License; and, (ii) explicitly permits the relicensing
+ of adaptations of works made available under that license under this
+ License or a Creative Commons jurisdiction license with the same
+ License Elements as this License.
+ d. "Distribute" means to make available to the public the original and
+ copies of the Work or Adaptation, as appropriate, through sale or
+ other transfer of ownership.
+ e. "License Elements" means the following high-level license attributes
+ as selected by Licensor and indicated in the title of this License:
+ Attribution, ShareAlike.
+ f. "Licensor" means the individual, individuals, entity or entities that
+ offer(s) the Work under the terms of this License.
+ g. "Original Author" means, in the case of a literary or artistic work,
+ the individual, individuals, entity or entities who created the Work
+ or if no individual or entity can be identified, the publisher; and in
+ addition (i) in the case of a performance the actors, singers,
+ musicians, dancers, and other persons who act, sing, deliver, declaim,
+ play in, interpret or otherwise perform literary or artistic works or
+ expressions of folklore; (ii) in the case of a phonogram the producer
+ being the person or legal entity who first fixes the sounds of a
+ performance or other sounds; and, (iii) in the case of broadcasts, the
+ organization that transmits the broadcast.
+ h. "Work" means the literary and/or artistic work offered under the terms
+ of this License including without limitation any production in the
+ literary, scientific and artistic domain, whatever may be the mode or
+ form of its expression including digital form, such as a book,
+ pamphlet and other writing; a lecture, address, sermon or other work
+ of the same nature; a dramatic or dramatico-musical work; a
+ choreographic work or entertainment in dumb show; a musical
+ composition with or without words; a cinematographic work to which are
+ assimilated works expressed by a process analogous to cinematography;
+ a work of drawing, painting, architecture, sculpture, engraving or
+ lithography; a photographic work to which are assimilated works
+ expressed by a process analogous to photography; a work of applied
+ art; an illustration, map, plan, sketch or three-dimensional work
+ relative to geography, topography, architecture or science; a
+ performance; a broadcast; a phonogram; a compilation of data to the
+ extent it is protected as a copyrightable work; or a work performed by
+ a variety or circus performer to the extent it is not otherwise
+ considered a literary or artistic work.
+ i. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License with
+ respect to the Work, or who has received express permission from the
+ Licensor to exercise rights under this License despite a previous
+ violation.
+ j. "Publicly Perform" means to perform public recitations of the Work and
+ to communicate to the public those public recitations, by any means or
+ process, including by wire or wireless means or public digital
+ performances; to make available to the public Works in such a way that
+ members of the public may access these Works from a place and at a
+ place individually chosen by them; to perform the Work to the public
+ by any means or process and the communication to the public of the
+ performances of the Work, including by public digital performance; to
+ broadcast and rebroadcast the Work by any means including signs,
+ sounds or images.
+ k. "Reproduce" means to make copies of the Work by any means including
+ without limitation by sound or visual recordings and the right of
+ fixation and reproducing fixations of the Work, including storage of a
+ protected performance or phonogram in digital form or other electronic
+ medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+ Collections, and to Reproduce the Work as incorporated in the
+ Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+ including any translation in any medium, takes reasonable steps to
+ clearly label, demarcate or otherwise identify that changes were made
+ to the original Work. For example, a translation could be marked "The
+ original work was translated from English to Spanish," or a
+ modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+ in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme cannot be waived, the Licensor
+ reserves the exclusive right to collect such royalties for any
+ exercise by You of the rights granted under this License;
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme can be waived, the Licensor waives the
+ exclusive right to collect such royalties for any exercise by You
+ of the rights granted under this License; and,
+ iii. Voluntary License Schemes. The Licensor waives the right to
+ collect royalties, whether individually or, in the event that the
+ Licensor is a member of a collecting society that administers
+ voluntary licensing schemes, via that society, from any exercise
+ by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+ of this License. You must include a copy of, or the Uniform Resource
+ Identifier (URI) for, this License with every copy of the Work You
+ Distribute or Publicly Perform. You may not offer or impose any terms
+ on the Work that restrict the terms of this License or the ability of
+ the recipient of the Work to exercise the rights granted to that
+ recipient under the terms of the License. You may not sublicense the
+ Work. You must keep intact all notices that refer to this License and
+ to the disclaimer of warranties with every copy of the Work You
+ Distribute or Publicly Perform. When You Distribute or Publicly
+ Perform the Work, You may not impose any effective technological
+ measures on the Work that restrict the ability of a recipient of the
+ Work from You to exercise the rights granted to that recipient under
+ the terms of the License. This Section 4(a) applies to the Work as
+ incorporated in a Collection, but this does not require the Collection
+ apart from the Work itself to be made subject to the terms of this
+ License. If You create a Collection, upon notice from any Licensor You
+ must, to the extent practicable, remove from the Collection any credit
+ as required by Section 4(c), as requested. If You create an
+ Adaptation, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Adaptation any credit as required by
+ Section 4(c), as requested.
+ b. You may Distribute or Publicly Perform an Adaptation only under the
+ terms of: (i) this License; (ii) a later version of this License with
+ the same License Elements as this License; (iii) a Creative Commons
+ jurisdiction license (either this or a later license version) that
+ contains the same License Elements as this License (e.g.,
+ Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
+ License. If you license the Adaptation under one of the licenses
+ mentioned in (iv), you must comply with the terms of that license. If
+ you license the Adaptation under the terms of any of the licenses
+ mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
+ comply with the terms of the Applicable License generally and the
+ following provisions: (I) You must include a copy of, or the URI for,
+ the Applicable License with every copy of each Adaptation You
+ Distribute or Publicly Perform; (II) You may not offer or impose any
+ terms on the Adaptation that restrict the terms of the Applicable
+ License or the ability of the recipient of the Adaptation to exercise
+ the rights granted to that recipient under the terms of the Applicable
+ License; (III) You must keep intact all notices that refer to the
+ Applicable License and to the disclaimer of warranties with every copy
+ of the Work as included in the Adaptation You Distribute or Publicly
+ Perform; (IV) when You Distribute or Publicly Perform the Adaptation,
+ You may not impose any effective technological measures on the
+ Adaptation that restrict the ability of a recipient of the Adaptation
+ from You to exercise the rights granted to that recipient under the
+ terms of the Applicable License. This Section 4(b) applies to the
+ Adaptation as incorporated in a Collection, but this does not require
+ the Collection apart from the Adaptation itself to be made subject to
+ the terms of the Applicable License.
+ c. If You Distribute, or Publicly Perform the Work or any Adaptations or
+ Collections, You must, unless a request has been made pursuant to
+ Section 4(a), keep intact all copyright notices for the Work and
+ provide, reasonable to the medium or means You are utilizing: (i) the
+ name of the Original Author (or pseudonym, if applicable) if supplied,
+ and/or if the Original Author and/or Licensor designate another party
+ or parties (e.g., a sponsor institute, publishing entity, journal) for
+ attribution ("Attribution Parties") in Licensor's copyright notice,
+ terms of service or by other reasonable means, the name of such party
+ or parties; (ii) the title of the Work if supplied; (iii) to the
+ extent reasonably practicable, the URI, if any, that Licensor
+ specifies to be associated with the Work, unless such URI does not
+ refer to the copyright notice or licensing information for the Work;
+ and (iv) , consistent with Ssection 3(b), in the case of an
+ Adaptation, a credit identifying the use of the Work in the Adaptation
+ (e.g., "French translation of the Work by Original Author," or
+ "Screenplay based on original Work by Original Author"). The credit
+ required by this Section 4(c) may be implemented in any reasonable
+ manner; provided, however, that in the case of a Adaptation or
+ Collection, at a minimum such credit will appear, if a credit for all
+ contributing authors of the Adaptation or Collection appears, then as
+ part of these credits and in a manner at least as prominent as the
+ credits for the other contributing authors. For the avoidance of
+ doubt, You may only use the credit required by this Section for the
+ purpose of attribution in the manner set out above and, by exercising
+ Your rights under this License, You may not implicitly or explicitly
+ assert or imply any connection with, sponsorship or endorsement by the
+ Original Author, Licensor and/or Attribution Parties, as appropriate,
+ of You or Your use of the Work, without the separate, express prior
+ written permission of the Original Author, Licensor and/or Attribution
+ Parties.
+ d. Except as otherwise agreed in writing by the Licensor or as may be
+ otherwise permitted by applicable law, if You Reproduce, Distribute or
+ Publicly Perform the Work either by itself or as part of any
+ Adaptations or Collections, You must not distort, mutilate, modify or
+ take other derogatory action in relation to the Work which would be
+ prejudicial to the Original Author's honor or reputation. Licensor
+ agrees that in those jurisdictions (e.g. Japan), in which any exercise
+ of the right granted in Section 3(b) of this License (the right to
+ make Adaptations) would be deemed to be a distortion, mutilation,
+ modification or other derogatory action prejudicial to the Original
+ Author's honor and reputation, the Licensor will waive or not assert,
+ as appropriate, this Section, to the fullest extent permitted by the
+ applicable national law, to enable You to reasonably exercise Your
+ right under Section 3(b) of this License (right to make Adaptations)
+ but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Adaptations or Collections
+ from You under this License, however, will not have their licenses
+ terminated provided such individuals or entities remain in full
+ compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+ survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+ perpetual (for the duration of the applicable copyright in the Work).
+ Notwithstanding the above, Licensor reserves the right to release the
+ Work under different license terms or to stop distributing the Work at
+ any time; provided, however that any such election will not serve to
+ withdraw this License (or any other license that has been, or is
+ required to be, granted under the terms of this License), and this
+ License will continue in full force and effect unless terminated as
+ stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+ the Licensor offers to the recipient a license to the Work on the same
+ terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+ offers to the recipient a license to the original Work on the same
+ terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of
+ the remainder of the terms of this License, and without further action
+ by the parties to this agreement, such provision shall be reformed to
+ the minimum extent necessary to make such provision valid and
+ enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in writing
+ and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+ respect to the Work licensed here. There are no understandings,
+ agreements or representations with respect to the Work not specified
+ here. Licensor shall not be bound by any additional provisions that
+ may appear in any communication from You. This License may not be
+ modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+ License were drafted utilizing the terminology of the Berne Convention
+ for the Protection of Literary and Artistic Works (as amended on
+ September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+ Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+ and the Universal Copyright Convention (as revised on July 24, 1971).
+ These rights and subject matter take effect in the relevant
+ jurisdiction in which the License terms are sought to be enforced
+ according to the corresponding provisions of the implementation of
+ those treaty provisions in the applicable national law. If the
+ standard suite of rights granted under applicable copyright law
+ includes additional rights not granted under this License, such
+ additional rights are deemed to be included in the License; this
+ License is not intended to restrict the license of any rights under
+ applicable law.
+
+
+Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, Creative Commons does not authorize
+ the use by either party of the trademark "Creative Commons" or any
+ related trademark or logo of Creative Commons without the prior
+ written consent of Creative Commons. Any permitted use will be in
+ compliance with Creative Commons' then-current trademark usage
+ guidelines, as may be published on its website or otherwise made
+ available upon request from time to time. For the avoidance of doubt,
+ this trademark restriction does not form part of the License.
+
+ Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/mesecons/README.md b/mesecons/README.md
new file mode 100644
index 0000000..5de72c7
--- /dev/null
+++ b/mesecons/README.md
@@ -0,0 +1,78 @@
+ ########################################################################
+ ## __ __ _____ _____ _____ _____ _____ _ _ _____ ##
+ ## | \ / | | ___| | ___| | ___| | ___| | _ | | \ | | | ___| ##
+ ## | \/ | | |___ | |___ | |___ | | | | | | | \| | | |___ ##
+ ## | |\__/| | | ___| |___ | | ___| | | | | | | | | |___ | ##
+ ## | | | | | |___ ___| | | |___ | |___ | |_| | | |\ | ___| | ##
+ ## |_| |_| |_____| |_____| |_____| |_____| |_____| |_| \_| |_____| ##
+ ## ##
+ ########################################################################
+
+MESECONS by Jeija and contributors
+
+Mezzee-what?
+------------
+[Mesecons](http://mesecons.net/)! They're yellow, they're conductive, and they'll add a whole new dimension to Minetest's gameplay.
+
+Mesecons is a mod for [Minetest](http://minetest.net/) that implements a ton of items related to digital circuitry, such as wires, buttons, lights, and even programmable controllers. Among other things, there are also pistons, solar panels, pressure plates, and note blocks.
+
+Mesecons has a similar goal to Redstone in Minecraft, but works in its own way, with different rules and mechanics.
+
+OK, I want in.
+--------------
+Go get it!
+
+[DOWNLOADS PAGE](http://mesecons.net/downloads.php)
+
+Now go ahead and install it like any other Minetest mod. Don't know how? Check out [the wonderful page about it](http://wiki.minetest.com/wiki/Mods) over at the Minetest Wiki. For your convenience, here's a quick summary:
+
+1. If Mesecons is still in a ZIP file, extract the folder inside to somewhere on the computer.
+2. Make sure that when you open the folder, you can directly find `README.md` in the listing. If you just see another folder, move that folder up one level and delete the old one.
+3. Open up the Minetest mods folder - usually `/mods/`. If you see the `minetest` or folder inside of that, that is your mod folder instead.
+4. Copy the Mesecons folder into the mods folder.
+
+Don't like some parts of Mesecons? Open up the Mesecons folder and delete the subfolder containing the mod you don't want. If you didn't want movestones, for example, all you have to do is delete the `mesecons_movestones` folder and they will no longer be available.
+
+There are no dependencies - it will work right after installing!
+
+How do I use this thing?
+------------------------
+How about a [quick overview video](https://www.youtube.com/watch?v=6kmeQj6iW5k)?
+
+Or maybe a [comprehensive reference](http://mesecons.net/items.php) is your style?
+
+An overview for the very newest of new beginners? How does [this one](http://uberi.mesecons.net/projects/MeseconsBasics/index.html) look?
+
+Want to get more into building? Why not check out the [Mesecons Laboratory](http://uberi.mesecons.net/), a website dedicated to advanced Mesecons builders?
+
+Want to contribute to Mesecons itself? Check out the [source code](https://github.com/Jeija/minetest-mod-mesecons)!
+
+Who wrote it anyways?
+---------------------
+These awesome people made Mesecons possible!
+
+| Contributor | Contribution |
+| --------------- | -------------------------------- |
+| Jat15 | Various tweaks. |
+| Jeija | **Main developer! Everything.** |
+| Jordach | Noteblock sounds. |
+| khonkhortistan | Code, recipes, textures. |
+| Kotolegokot | Nodeboxes for items. |
+| minerd247 | Textures. |
+| Nore/Novatux | Code. |
+| RealBadAngel | Fixes, improvements. |
+| sfan5 | Code, recipes, textures. |
+| suzenako | Piston sounds. |
+| Uberi/Temperest | Code, textures, documentation. |
+| VanessaE | Code, recipes, textures, design. |
+| Whiskers75 | Logic gates implementation. |
+
+There are also a whole bunch of other people helping with everything from code to testing and feedback. Mesecons would also not be possible without their help!
+
+Alright, how can I use it?
+--------------------------
+All textures in this project are licensed under the CC-BY-SA 3.0 (Creative Commons Attribution-ShareAlike 3.0 Generic). That means you can distribute and remix them as much as you want to, under the condition that you give credit to the authors and the project, and that if you remix and release them, they must be under the same or similar license to this one.
+
+All code in this project is licensed under the LGPL version 3 or later. That means you have unlimited freedom to distribute and modify the work however you see fit, provided that if you decide to distribute it or any modified versions of it, you must also use the same license. The LGPL also grants the additional freedom to write extensions for the software and distribute them without the extensions being subject to the terms of the LGPL, although the software itself retains its license.
+
+No warranty is provided, express or implied, for any part of the project.
diff --git a/mesecons/documentation.json b/mesecons/documentation.json
new file mode 100644
index 0000000..8cc0254
--- /dev/null
+++ b/mesecons/documentation.json
@@ -0,0 +1,62 @@
+{
+ "Conductors" : {
+ "Mesecon" : "mesecons/doc/mesecon",
+ "Insulated Wire" : "mesecons_insulated/doc/insulated",
+ "T-Junction" : "mesecons_extrawires/doc/tjunction",
+ "Crossing" : "mesecons_extrawires/doc/crossing",
+ "Corner" : "mesecons_extrawires/doc/corner",
+ "Vertical Wire" : "mesecons_extrawires/doc/vertical",
+ "Mese" : "mesecons_extrawires/doc/mese"
+ },
+ "Receptors" : {
+ "Power Plant" : "mesecons_powerplant/doc/powerplant",
+ "Blinky Plant" : "mesecons_blinkyplant/doc/blinkyplant",
+ "Switch" : "mesecons_switch/doc/switch",
+ "Object Detector" : "mesecons_detector/doc/objectdetector",
+ "Node Detector" : "mesecons_detector/doc/nodedetector",
+ "Wall Lever" : "mesecons_walllever/doc/walllever",
+ "Pressure Plate" : "mesecons_pressureplates/doc/pressureplate_wood",
+ "Pressure Plate" : "mesecons_pressureplates/doc/pressureplate_stone",
+ "Water Turbine" : "mesecons_hydroturbine/doc/waterturbine",
+ "Solar Panel" : "mesecons_solarpanel/doc/solarpanel",
+ "Wall Button" : "mesecons_button/doc/button"
+ },
+ "Effectors" : {
+ "Noteblock" : "mesecons_noteblock/doc/noteblock",
+ "Lamp" : "mesecons_lamp/doc/lamp",
+ "Piston" : "mesecons_pistons/doc/piston",
+ "Sticky Piston" : "mesecons_pistons/doc/piston_sticky",
+ "Movestone" : "mesecons_movestones/doc/movestone",
+ "Sticky Movestone" : "mesecons_movestones/doc/movestone_sticky",
+ "Removestone" : "mesecons_random/doc/removestone",
+ "Ghoststone" : "mesecons_random/doc/ghoststone",
+ "Command Block" : "mesecons_commandblock/doc/commandblock",
+ "Lightstones" : {
+ "Dark Grey" : "mesecons_lightstone/doc/lightstone_darkgrey",
+ "Light Grey" : "mesecons_lightstone/doc/lightstone_lightgrey",
+ "Green" : "mesecons_lightstone/doc/lightstone_green",
+ "Red" : "mesecons_lightstone/doc/lightstone_red",
+ "Blue" : "mesecons_lightstone/doc/lightstone_blue",
+ "Yellow" : "mesecons_lightstone/doc/lightstone_yellow"
+ }
+ },
+ "Logic" : {
+ "Luacontroller" : "mesecons_luacontroller/doc/luacontroller",
+ "Torch" : "mesecons_torch/doc/torch",
+ "Delayer" : "mesecons_delayer/doc/delayer",
+ "Gates" : {
+ "Diode" : "mesecons_gates/doc/diode",
+ "NOT Gate" : "mesecons_gates/doc/not",
+ "AND Gate" : "mesecons_gates/doc/and",
+ "NAND Gate" : "mesecons_gates/doc/nand",
+ "OR Gate" : "mesecons_gates/doc/or",
+ "NOR Gate" : "mesecons_gates/doc/nor",
+ "XOR Gate" : "mesecons_gates/doc/xor"
+ }
+ },
+ "Crafts" : {
+ "Silicon" : "mesecons_materials/doc/silicon",
+ "Glue" : "mesecons_materials/doc/glue",
+ "Fiber" : "mesecons_materials/doc/fiber"
+ }
+}
diff --git a/mesecons/mesecons/VERSION b/mesecons/mesecons/VERSION
new file mode 100644
index 0000000..75b9e03
--- /dev/null
+++ b/mesecons/mesecons/VERSION
@@ -0,0 +1 @@
+0.41 DEV
diff --git a/mesecons/mesecons/actionqueue.lua b/mesecons/mesecons/actionqueue.lua
new file mode 100644
index 0000000..fa4079f
--- /dev/null
+++ b/mesecons/mesecons/actionqueue.lua
@@ -0,0 +1,118 @@
+mesecon.queue.actions={} -- contains all ActionQueue actions
+
+function mesecon.queue:add_function(name, func)
+ mesecon.queue.funcs[name] = func
+end
+
+-- If add_action with twice the same overwritecheck and same position are called, the first one is overwritten
+-- use overwritecheck nil to never overwrite, but just add the event to the queue
+-- priority specifies the order actions are executed within one globalstep, highest first
+-- should be between 0 and 1
+function mesecon.queue:add_action(pos, func, params, time, overwritecheck, priority)
+ -- Create Action Table:
+ time = time or 0 -- time <= 0 --> execute, time > 0 --> wait time until execution
+ priority = priority or 1
+ local action = { pos=mesecon.tablecopy(pos),
+ func=func,
+ params=mesecon.tablecopy(params or {}),
+ time=time,
+ owcheck=(overwritecheck and mesecon.tablecopy(overwritecheck)) or nil,
+ priority=priority}
+
+ local toremove = nil
+ -- Otherwise, add the action to the queue
+ if overwritecheck then -- check if old action has to be overwritten / removed:
+ for i, ac in ipairs(mesecon.queue.actions) do
+ if(mesecon.cmpPos(pos, ac.pos)
+ and mesecon.cmpAny(overwritecheck, ac.owcheck)) then
+ toremove = i
+ break
+ end
+ end
+ end
+
+ if (toremove ~= nil) then
+ table.remove(mesecon.queue.actions, toremove)
+ end
+
+ table.insert(mesecon.queue.actions, action)
+end
+
+-- execute the stored functions on a globalstep
+-- if however, the pos of a function is not loaded (get_node_or_nil == nil), do NOT execute the function
+-- this makes sure that resuming mesecons circuits when restarting minetest works fine
+-- However, even that does not work in some cases, that's why we delay the time the globalsteps
+-- start to be execute by 5 seconds
+local get_highest_priority = function (actions)
+ local highestp = -1
+ local highesti
+ for i, ac in ipairs(actions) do
+ if ac.priority > highestp then
+ highestp = ac.priority
+ highesti = i
+ end
+ end
+
+ return highesti
+end
+
+local m_time = 0
+local resumetime = mesecon.setting("resumetime", 4)
+minetest.register_globalstep(function (dtime)
+ m_time = m_time + dtime
+ -- don't even try if server has not been running for XY seconds; resumetime = time to wait
+ -- after starting the server before processing the ActionQueue, don't set this too low
+ if (m_time < resumetime) then return end
+ local actions = mesecon.tablecopy(mesecon.queue.actions)
+ local actions_now={}
+
+ mesecon.queue.actions = {}
+
+ -- sort actions into two categories:
+ -- those toexecute now (actions_now) and those to execute later (mesecon.queue.actions)
+ for i, ac in ipairs(actions) do
+ if ac.time > 0 then
+ ac.time = ac.time - dtime -- executed later
+ table.insert(mesecon.queue.actions, ac)
+ else
+ table.insert(actions_now, ac)
+ end
+ end
+
+ while(#actions_now > 0) do -- execute highest priorities first, until all are executed
+ local hp = get_highest_priority(actions_now)
+ mesecon.queue:execute(actions_now[hp])
+ table.remove(actions_now, hp)
+ end
+end)
+
+function mesecon.queue:execute(action)
+ mesecon.queue.funcs[action.func](action.pos, unpack(action.params))
+end
+
+
+-- Store and read the ActionQueue to / from a file
+-- so that upcoming actions are remembered when the game
+-- is restarted
+
+local wpath = minetest.get_worldpath()
+local function file2table(filename)
+ local f = io.open(filename, "r")
+ if f==nil then return {} end
+ local t = f:read("*all")
+ f:close()
+ if t=="" or t==nil then return {} end
+ return minetest.deserialize(t)
+end
+
+local function table2file(filename, table)
+ local f = io.open(filename, "w")
+ f:write(minetest.serialize(table))
+ f:close()
+end
+
+mesecon.queue.actions = file2table(wpath.."/mesecon_actionqueue")
+
+minetest.register_on_shutdown(function()
+ mesecon.queue.actions = table2file(wpath.."/mesecon_actionqueue", mesecon.queue.actions)
+end)
diff --git a/mesecons/mesecons/depends.txt b/mesecons/mesecons/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/mesecons/mesecons/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/mesecons/mesecons/doc/mesecon/description.html b/mesecons/mesecons/doc/mesecon/description.html
new file mode 100644
index 0000000..a22ec65
--- /dev/null
+++ b/mesecons/mesecons/doc/mesecon/description.html
@@ -0,0 +1 @@
+ Mesecons are the wires, use them to connect effectors with receptors.
diff --git a/mesecons/mesecons/doc/mesecon/preview.png b/mesecons/mesecons/doc/mesecon/preview.png
new file mode 100755
index 0000000..f81e5cb
--- /dev/null
+++ b/mesecons/mesecons/doc/mesecon/preview.png
Binary files differ
diff --git a/mesecons/mesecons/doc/mesecon/recipe.png b/mesecons/mesecons/doc/mesecon/recipe.png
new file mode 100644
index 0000000..72f9210
--- /dev/null
+++ b/mesecons/mesecons/doc/mesecon/recipe.png
Binary files differ
diff --git a/mesecons/mesecons/init.lua b/mesecons/mesecons/init.lua
new file mode 100644
index 0000000..8645f03
--- /dev/null
+++ b/mesecons/mesecons/init.lua
@@ -0,0 +1,139 @@
+-- |\ /| ____ ____ ____ _____ ____ _____
+-- | \ / | | | | | | | |\ | |
+-- | \/ | |___ ____ |___ | | | | \ | |____
+-- | | | | | | | | | \ | |
+-- | | |___ ____| |___ |____ |____| | \| ____|
+-- by Jeija, Uberi (Temperest), sfan5, VanessaE
+--
+--
+--
+-- This mod adds mesecons[=minecraft redstone] and different receptors/effectors to minetest.
+-- See the documentation on the forum for additional information, especially about crafting
+--
+--
+-- For developer documentation see the Developers' section on mesecons.TK
+--
+--
+--
+--Quick draft for the mesecons array in the node's definition
+--mesecons =
+--{
+-- receptor =
+-- {
+-- state = mesecon.state.on/off
+-- rules = rules/get_rules
+-- },
+-- effector =
+-- {
+-- action_on = function
+-- action_off = function
+-- action_change = function
+-- rules = rules/get_rules
+-- },
+-- conductor =
+-- {
+-- state = mesecon.state.on/off
+-- offstate = opposite state (for state = on only)
+-- onstate = opposite state (for state = off only)
+-- rules = rules/get_rules
+-- }
+--}
+
+-- PUBLIC VARIABLES
+mesecon={} -- contains all functions and all global variables
+mesecon.queue={} -- contains the ActionQueue
+mesecon.queue.funcs={} -- contains all ActionQueue functions
+
+-- Settings
+dofile(minetest.get_modpath("mesecons").."/settings.lua")
+
+-- Utilities like comparing positions,
+-- adding positions and rules,
+-- mostly things that make the source look cleaner
+dofile(minetest.get_modpath("mesecons").."/util.lua");
+
+-- Presets (eg default rules)
+dofile(minetest.get_modpath("mesecons").."/presets.lua");
+
+-- The ActionQueue
+-- Saves all the actions that have to be execute in the future
+dofile(minetest.get_modpath("mesecons").."/actionqueue.lua");
+
+-- Internal stuff
+-- This is the most important file
+-- it handles signal transmission and basically everything else
+-- It is also responsible for managing the nodedef things,
+-- like calling action_on/off/change
+dofile(minetest.get_modpath("mesecons").."/internal.lua");
+
+-- API
+-- these are the only functions you need to remember
+
+mesecon.queue:add_function("receptor_on", function (pos, rules)
+ rules = rules or mesecon.rules.default
+
+ -- if area (any of the rule targets) is not loaded, keep trying and call this again later
+ for _, rule in ipairs(mesecon.flattenrules(rules)) do
+ local np = mesecon.addPosRule(pos, rule)
+ -- if area is not loaded, keep trying
+ if minetest.get_node_or_nil(np) == nil then
+ mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
+ return
+ end
+ end
+
+ -- execute action
+ for _, rule in ipairs(mesecon.flattenrules(rules)) do
+ local np = mesecon.addPosRule(pos, rule)
+ local rulenames = mesecon.rules_link_rule_all(pos, rule)
+ for _, rulename in ipairs(rulenames) do
+ mesecon.turnon(np, rulename)
+ end
+ end
+end)
+
+function mesecon.receptor_on(pos, rules)
+ mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
+end
+
+mesecon.queue:add_function("receptor_off", function (pos, rules)
+ rules = rules or mesecon.rules.default
+
+ -- if area (any of the rule targets) is not loaded, keep trying and call this again later
+ for _, rule in ipairs(mesecon.flattenrules(rules)) do
+ local np = mesecon.addPosRule(pos, rule)
+ if minetest.get_node_or_nil(np) == nil then
+ mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
+ return
+ end
+ end
+
+ for _, rule in ipairs(mesecon.flattenrules(rules)) do
+ local np = mesecon.addPosRule(pos, rule)
+ local rulenames = mesecon.rules_link_rule_all(pos, rule)
+ for _, rulename in ipairs(rulenames) do
+ if not mesecon.connected_to_receptor(np, mesecon.invertRule(rule)) then
+ mesecon.turnoff(np, rulename)
+ else
+ mesecon.changesignal(np, minetest.get_node(np), rulename, mesecon.state.off, 2)
+ end
+ end
+ end
+end)
+
+function mesecon.receptor_off(pos, rules)
+ mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
+end
+
+
+print("[OK] Mesecons")
+
+-- Deprecated stuff
+-- To be removed in future releases
+dofile(minetest.get_modpath("mesecons").."/legacy.lua");
+
+--The actual wires
+dofile(minetest.get_modpath("mesecons").."/wires.lua");
+
+--Services like turnoff receptor on dignode and so on
+dofile(minetest.get_modpath("mesecons").."/services.lua");
diff --git a/mesecons/mesecons/internal.lua b/mesecons/mesecons/internal.lua
new file mode 100644
index 0000000..741abf1
--- /dev/null
+++ b/mesecons/mesecons/internal.lua
@@ -0,0 +1,652 @@
+-- Internal.lua - The core of mesecons
+--
+-- For more practical developer resources see http://mesecons.net/developers.php
+--
+-- Function overview
+-- mesecon.get_effector(nodename) --> Returns the mesecons.effector -specifictation in the nodedef by the nodename
+-- mesecon.get_receptor(nodename) --> Returns the mesecons.receptor -specifictation in the nodedef by the nodename
+-- mesecon.get_conductor(nodename) --> Returns the mesecons.conductor-specifictation in the nodedef by the nodename
+-- mesecon.get_any_inputrules (node) --> Returns the rules of a node if it is a conductor or an effector
+-- mesecon.get_any_outputrules (node) --> Returns the rules of a node if it is a conductor or a receptor
+
+-- RECEPTORS
+-- mesecon.is_receptor(nodename) --> Returns true if nodename is a receptor
+-- mesecon.is_receptor_on(nodename --> Returns true if nodename is an receptor with state = mesecon.state.on
+-- mesecon.is_receptor_off(nodename) --> Returns true if nodename is an receptor with state = mesecon.state.off
+-- mesecon.receptor_get_rules(node) --> Returns the rules of the receptor (mesecon.rules.default if none specified)
+
+-- EFFECTORS
+-- mesecon.is_effector(nodename) --> Returns true if nodename is an effector
+-- mesecon.is_effector_on(nodename) --> Returns true if nodename is an effector with nodedef.mesecons.effector.action_off
+-- mesecon.is_effector_off(nodename) --> Returns true if nodename is an effector with nodedef.mesecons.effector.action_on
+-- mesecon.effector_get_rules(node) --> Returns the input rules of the effector (mesecon.rules.default if none specified)
+
+-- SIGNALS
+-- mesecon.activate(pos, node, depth) --> Activates the effector node at the specific pos (calls nodedef.mesecons.effector.action_on), higher depths are executed later
+-- mesecon.deactivate(pos, node, depth) --> Deactivates the effector node at the specific pos (calls nodedef.mesecons.effector.action_off), higher depths are executed later
+-- mesecon.changesignal(pos, node, rulename, newstate, depth) --> Changes the effector node at the specific pos (calls nodedef.mesecons.effector.action_change), higher depths are executed later
+
+-- CONDUCTORS
+-- mesecon.is_conductor(nodename) --> Returns true if nodename is a conductor
+-- mesecon.is_conductor_on(node --> Returns true if node is a conductor with state = mesecon.state.on
+-- mesecon.is_conductor_off(node) --> Returns true if node is a conductor with state = mesecon.state.off
+-- mesecon.get_conductor_on(node_off) --> Returns the onstate nodename of the conductor
+-- mesecon.get_conductor_off(node_on) --> Returns the offstate nodename of the conductor
+-- mesecon.conductor_get_rules(node) --> Returns the input+output rules of a conductor (mesecon.rules.default if none specified)
+
+-- HIGH-LEVEL Internals
+-- mesecon.is_power_on(pos) --> Returns true if pos emits power in any way
+-- mesecon.is_power_off(pos) --> Returns true if pos does not emit power in any way
+-- mesecon.turnon(pos, link) --> link is the input rule that caused calling turnon, turns on every connected node, iterative
+-- mesecon.turnoff(pos, link) --> link is the input rule that caused calling turnoff, turns off every connected node, iterative
+-- mesecon.connected_to_receptor(pos, link) --> Returns true if pos is connected to a receptor directly or via conductors, iterative
+-- mesecon.rules_link(output, input, dug_outputrules) --> Returns true if outputposition + outputrules = inputposition and inputposition + inputrules = outputposition (if the two positions connect)
+-- mesecon.rules_link_anydir(outp., inp., d_outpr.) --> Same as rules mesecon.rules_link but also returns true if output and input are swapped
+-- mesecon.is_powered(pos) --> Returns true if pos is powered by a receptor or a conductor
+
+-- RULES ROTATION helpers
+-- mesecon.rotate_rules_right(rules)
+-- mesecon.rotate_rules_left(rules)
+-- mesecon.rotate_rules_up(rules)
+-- mesecon.rotate_rules_down(rules)
+-- These functions return rules that have been rotated in the specific direction
+
+-- General
+function mesecon.get_effector(nodename)
+ if minetest.registered_nodes[nodename]
+ and minetest.registered_nodes[nodename].mesecons
+ and minetest.registered_nodes[nodename].mesecons.effector then
+ return minetest.registered_nodes[nodename].mesecons.effector
+ end
+end
+
+function mesecon.get_receptor(nodename)
+ if minetest.registered_nodes[nodename]
+ and minetest.registered_nodes[nodename].mesecons
+ and minetest.registered_nodes[nodename].mesecons.receptor then
+ return minetest.registered_nodes[nodename].mesecons.receptor
+ end
+end
+
+function mesecon.get_conductor(nodename)
+ if minetest.registered_nodes[nodename]
+ and minetest.registered_nodes[nodename].mesecons
+ and minetest.registered_nodes[nodename].mesecons.conductor then
+ return minetest.registered_nodes[nodename].mesecons.conductor
+ end
+end
+
+function mesecon.get_any_outputrules (node)
+ if mesecon.is_conductor(node.name) then
+ return mesecon.conductor_get_rules(node)
+ elseif mesecon.is_receptor(node.name) then
+ return mesecon.receptor_get_rules(node)
+ end
+end
+
+function mesecon.get_any_inputrules (node)
+ if mesecon.is_conductor(node.name) then
+ return mesecon.conductor_get_rules(node)
+ elseif mesecon.is_effector(node.name) then
+ return mesecon.effector_get_rules(node)
+ end
+end
+
+function mesecon.get_any_rules (node)
+ return mesecon.mergetable(mesecon.get_any_inputrules(node) or {},
+ mesecon.get_any_outputrules(node) or {})
+end
+
+-- Receptors
+-- Nodes that can power mesecons
+function mesecon.is_receptor_on(nodename)
+ local receptor = mesecon.get_receptor(nodename)
+ if receptor and receptor.state == mesecon.state.on then
+ return true
+ end
+ return false
+end
+
+function mesecon.is_receptor_off(nodename)
+ local receptor = mesecon.get_receptor(nodename)
+ if receptor and receptor.state == mesecon.state.off then
+ return true
+ end
+ return false
+end
+
+function mesecon.is_receptor(nodename)
+ local receptor = mesecon.get_receptor(nodename)
+ if receptor then
+ return true
+ end
+ return false
+end
+
+function mesecon.receptor_get_rules(node)
+ local receptor = mesecon.get_receptor(node.name)
+ if receptor then
+ local rules = receptor.rules
+ if type(rules) == 'function' then
+ return rules(node)
+ elseif rules then
+ return rules
+ end
+ end
+
+ return mesecon.rules.default
+end
+
+-- Effectors
+-- Nodes that can be powered by mesecons
+function mesecon.is_effector_on(nodename)
+ local effector = mesecon.get_effector(nodename)
+ if effector and effector.action_off then
+ return true
+ end
+ return false
+end
+
+function mesecon.is_effector_off(nodename)
+ local effector = mesecon.get_effector(nodename)
+ if effector and effector.action_on then
+ return true
+ end
+ return false
+end
+
+function mesecon.is_effector(nodename)
+ local effector = mesecon.get_effector(nodename)
+ if effector then
+ return true
+ end
+ return false
+end
+
+function mesecon.effector_get_rules(node)
+ local effector = mesecon.get_effector(node.name)
+ if effector then
+ local rules = effector.rules
+ if type(rules) == 'function' then
+ return rules(node)
+ elseif rules then
+ return rules
+ end
+ end
+ return mesecon.rules.default
+end
+
+-- #######################
+-- # Signals (effectors) #
+-- #######################
+
+-- Activation:
+mesecon.queue:add_function("activate", function (pos, rulename)
+ local node = minetest.get_node(pos)
+ local effector = mesecon.get_effector(node.name)
+
+ if effector and effector.action_on then
+ effector.action_on(pos, node, rulename)
+ end
+end)
+
+function mesecon.activate(pos, node, rulename, depth)
+ if rulename == nil then
+ for _,rule in ipairs(mesecon.effector_get_rules(node)) do
+ mesecon.activate(pos, node, rule, depth + 1)
+ end
+ return
+ end
+ mesecon.queue:add_action(pos, "activate", {rulename}, nil, rulename, 1 / depth)
+end
+
+
+-- Deactivation
+mesecon.queue:add_function("deactivate", function (pos, rulename)
+ local node = minetest.get_node(pos)
+ local effector = mesecon.get_effector(node.name)
+
+ if effector and effector.action_off then
+ effector.action_off(pos, node, rulename)
+ end
+end)
+
+function mesecon.deactivate(pos, node, rulename, depth)
+ if rulename == nil then
+ for _,rule in ipairs(mesecon.effector_get_rules(node)) do
+ mesecon.deactivate(pos, node, rule, depth + 1)
+ end
+ return
+ end
+ mesecon.queue:add_action(pos, "deactivate", {rulename}, nil, rulename, 1 / depth)
+end
+
+
+-- Change
+mesecon.queue:add_function("change", function (pos, rulename, changetype)
+ local node = minetest.get_node(pos)
+ local effector = mesecon.get_effector(node.name)
+
+ if effector and effector.action_change then
+ effector.action_change(pos, node, rulename, changetype)
+ end
+end)
+
+function mesecon.changesignal(pos, node, rulename, newstate, depth)
+ if rulename == nil then
+ for _,rule in ipairs(mesecon.effector_get_rules(node)) do
+ mesecon.changesignal(pos, node, rule, newstate, depth + 1)
+ end
+ return
+ end
+
+ -- Include "change" in overwritecheck so that it cannot be overwritten
+ -- by "active" / "deactivate" that will be called upon the node at the same time.
+ local overwritecheck = {"change", rulename}
+ mesecon.queue:add_action(pos, "change", {rulename, newstate}, nil, overwritecheck, 1 / depth)
+end
+
+-- Conductors
+
+function mesecon.is_conductor_on(node, rulename)
+ local conductor = mesecon.get_conductor(node.name)
+ if conductor then
+ if conductor.state then
+ return conductor.state == mesecon.state.on
+ end
+ if conductor.states then
+ if not rulename then
+ return mesecon.getstate(node.name, conductor.states) ~= 1
+ end
+ local bit = mesecon.rule2bit(rulename, mesecon.conductor_get_rules(node))
+ local binstate = mesecon.getbinstate(node.name, conductor.states)
+ return mesecon.get_bit(binstate, bit)
+ end
+ end
+ return false
+end
+
+function mesecon.is_conductor_off(node, rulename)
+ local conductor = mesecon.get_conductor(node.name)
+ if conductor then
+ if conductor.state then
+ return conductor.state == mesecon.state.off
+ end
+ if conductor.states then
+ if not rulename then
+ return mesecon.getstate(node.name, conductor.states) == 1
+ end
+ local bit = mesecon.rule2bit(rulename, mesecon.conductor_get_rules(node))
+ local binstate = mesecon.getbinstate(node.name, conductor.states)
+ return not mesecon.get_bit(binstate, bit)
+ end
+ end
+ return false
+end
+
+function mesecon.is_conductor(nodename)
+ local conductor = mesecon.get_conductor(nodename)
+ if conductor then
+ return true
+ end
+ return false
+end
+
+function mesecon.get_conductor_on(node_off, rulename)
+ local conductor = mesecon.get_conductor(node_off.name)
+ if conductor then
+ if conductor.onstate then
+ return conductor.onstate
+ end
+ if conductor.states then
+ local bit = mesecon.rule2bit(rulename, mesecon.conductor_get_rules(node_off))
+ local binstate = mesecon.getbinstate(node_off.name, conductor.states)
+ binstate = mesecon.set_bit(binstate, bit, "1")
+ return conductor.states[tonumber(binstate,2)+1]
+ end
+ end
+ return offstate
+end
+
+function mesecon.get_conductor_off(node_on, rulename)
+ local conductor = mesecon.get_conductor(node_on.name)
+ if conductor then
+ if conductor.offstate then
+ return conductor.offstate
+ end
+ if conductor.states then
+ local bit = mesecon.rule2bit(rulename, mesecon.conductor_get_rules(node_on))
+ local binstate = mesecon.getbinstate(node_on.name, conductor.states)
+ binstate = mesecon.set_bit(binstate, bit, "0")
+ return conductor.states[tonumber(binstate,2)+1]
+ end
+ end
+ return onstate
+end
+
+function mesecon.conductor_get_rules(node)
+ local conductor = mesecon.get_conductor(node.name)
+ if conductor then
+ local rules = conductor.rules
+ if type(rules) == 'function' then
+ return rules(node)
+ elseif rules then
+ return rules
+ end
+ end
+ return mesecon.rules.default
+end
+
+-- some more general high-level stuff
+
+function mesecon.is_power_on(pos, rulename)
+ local node = minetest.get_node(pos)
+ if mesecon.is_conductor_on(node, rulename) or mesecon.is_receptor_on(node.name) then
+ return true
+ end
+ return false
+end
+
+function mesecon.is_power_off(pos, rulename)
+ local node = minetest.get_node(pos)
+ if mesecon.is_conductor_off(node, rulename) or mesecon.is_receptor_off(node.name) then
+ return true
+ end
+ return false
+end
+
+function mesecon.turnon(pos, link)
+ local frontiers = {{pos = pos, link = link}}
+
+ local depth = 1
+ while frontiers[depth] do
+ local f = frontiers[depth]
+ local node = minetest.get_node_or_nil(f.pos)
+
+ -- area not loaded, postpone action
+ if not node then
+ mesecon.queue:add_action(f.pos, "turnon", {link}, nil, true)
+ elseif mesecon.is_conductor_off(node, f.link) then
+ local rules = mesecon.conductor_get_rules(node)
+
+ minetest.swap_node(f.pos, {name = mesecon.get_conductor_on(node, f.link),
+ param2 = node.param2})
+
+ -- call turnon on neighbors: normal rules
+ for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
+ local np = mesecon.addPosRule(f.pos, r)
+
+ -- area not loaded, postpone action
+ if not minetest.get_node_or_nil(np) then
+ mesecon.queue:add_action(np, "turnon", {rulename},
+ nil, true)
+ else
+ local links = mesecon.rules_link_rule_all(f.pos, r)
+ for _, l in ipairs(links) do
+ table.insert(frontiers, {pos = np, link = l})
+ end
+ end
+ end
+ elseif mesecon.is_effector(node.name) then
+ mesecon.changesignal(f.pos, node, f.link, mesecon.state.on, depth)
+ if mesecon.is_effector_off(node.name) then
+ mesecon.activate(f.pos, node, f.link, depth)
+ end
+ end
+ depth = depth + 1
+ end
+end
+
+mesecon.queue:add_function("turnon", function (pos, rulename, recdepth)
+ mesecon.turnon(pos, rulename, recdepth)
+end)
+
+function mesecon.turnoff(pos, link)
+ local frontiers = {{pos = pos, link = link}}
+
+ local depth = 1
+ while frontiers[depth] do
+ local f = frontiers[depth]
+ local node = minetest.get_node_or_nil(f.pos)
+
+ -- area not loaded, postpone action
+ if not node then
+ mesecon.queue:add_action(f.pos, "turnoff", {link}, nil, true)
+ elseif mesecon.is_conductor_on(node, f.link) then
+ local rules = mesecon.conductor_get_rules(node)
+
+ minetest.swap_node(f.pos, {name = mesecon.get_conductor_off(node, f.link),
+ param2 = node.param2})
+
+ -- call turnoff on neighbors: normal rules
+ for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
+ local np = mesecon.addPosRule(f.pos, r)
+
+ -- area not loaded, postpone action
+ if not minetest.get_node_or_nil(np) then
+ mesecon.queue:add_action(np, "turnoff", {rulename},
+ nil, true)
+ else
+ local links = mesecon.rules_link_rule_all(f.pos, r)
+ for _, l in ipairs(links) do
+ table.insert(frontiers, {pos = np, link = l})
+ end
+ end
+ end
+ elseif mesecon.is_effector(node.name) then
+ mesecon.changesignal(f.pos, node, f.link, mesecon.state.off, depth)
+ if mesecon.is_effector_on(node.name) and not mesecon.is_powered(f.pos) then
+ mesecon.deactivate(f.pos, node, f.link, depth)
+ end
+ end
+ depth = depth + 1
+ end
+end
+
+mesecon.queue:add_function("turnoff", function (pos, rulename, recdepth)
+ mesecon.turnoff(pos, rulename, recdepth)
+end)
+
+
+function mesecon.connected_to_receptor(pos, link)
+ local node = minetest.get_node(pos)
+
+ -- Check if conductors around are connected
+ local rules = mesecon.get_any_inputrules(node)
+ if not rules then return false end
+
+ for _, rule in ipairs(mesecon.rule2meta(link, rules)) do
+ local links = mesecon.rules_link_rule_all_inverted(pos, rule)
+ for _, l in ipairs(links) do
+ local np = mesecon.addPosRule(pos, l)
+ if mesecon.find_receptor_on(np, mesecon.invertRule(l)) then
+ return true
+ end
+ end
+ end
+
+ return false
+end
+
+function mesecon.find_receptor_on(pos, link)
+ local frontiers = {{pos = pos, link = link}}
+ local checked = {}
+
+ -- List of positions that have been searched for onstate receptors
+ local depth = 1
+ while frontiers[depth] do
+ local f = frontiers[depth]
+ local node = minetest.get_node_or_nil(f.pos)
+
+ if not node then return false end
+ if mesecon.is_receptor_on(node.name) then return true end
+ if mesecon.is_conductor_on(node, f.link) then
+ local rules = mesecon.conductor_get_rules(node)
+
+ -- call turnoff on neighbors: normal rules
+ for _, r in ipairs(mesecon.rule2meta(f.link, rules)) do
+ local np = mesecon.addPosRule(f.pos, r)
+
+ local links = mesecon.rules_link_rule_all_inverted(f.pos, r)
+ for _, l in ipairs(links) do
+ local checkedstring = np.x..np.y..np.z..l.x..l.y..l.z
+ if not checked[checkedstring] then
+ table.insert(frontiers, {pos = np, link = l})
+ checked[checkedstring] = true
+ end
+ end
+ end
+
+ end
+ depth = depth + 1
+ end
+end
+
+function mesecon.rules_link(output, input, dug_outputrules) --output/input are positions (outputrules optional, used if node has been dug), second return value: the name of the affected input rule
+ local outputnode = minetest.get_node(output)
+ local inputnode = minetest.get_node(input)
+ local outputrules = dug_outputrules or mesecon.get_any_outputrules (outputnode)
+ local inputrules = mesecon.get_any_inputrules (inputnode)
+ if not outputrules or not inputrules then
+ return
+ end
+
+ for _, outputrule in ipairs(mesecon.flattenrules(outputrules)) do
+ -- Check if output sends to input
+ if mesecon.cmpPos(mesecon.addPosRule(output, outputrule), input) then
+ for _, inputrule in ipairs(mesecon.flattenrules(inputrules)) do
+ -- Check if input accepts from output
+ if mesecon.cmpPos(mesecon.addPosRule(input, inputrule), output) then
+ return true, inputrule
+ end
+ end
+ end
+ end
+ return false
+end
+
+function mesecon.rules_link_rule_all(output, rule)
+ local input = mesecon.addPosRule(output, rule)
+ local inputnode = minetest.get_node(input)
+ local inputrules = mesecon.get_any_inputrules (inputnode)
+ if not inputrules then
+ return {}
+ end
+ local rules = {}
+
+ for _, inputrule in ipairs(mesecon.flattenrules(inputrules)) do
+ -- Check if input accepts from output
+ if mesecon.cmpPos(mesecon.addPosRule(input, inputrule), output) then
+ table.insert(rules, inputrule)
+ end
+ end
+ return rules
+end
+
+function mesecon.rules_link_rule_all_inverted(input, rule)
+ --local irule = mesecon.invertRule(rule)
+ local output = mesecon.addPosRule(input, rule)
+ local outputnode = minetest.get_node(output)
+ local outputrules = mesecon.get_any_outputrules (outputnode)
+ if not outputrules then
+ return {}
+ end
+ local rules = {}
+
+ for _, outputrule in ipairs(mesecon.flattenrules(outputrules)) do
+ if mesecon.cmpPos(mesecon.addPosRule(output, outputrule), input) then
+ table.insert(rules, mesecon.invertRule(outputrule))
+ end
+ end
+ return rules
+end
+
+function mesecon.rules_link_anydir(pos1, pos2)
+ return mesecon.rules_link(pos1, pos2) or mesecon.rules_link(pos2, pos1)
+end
+
+function mesecon.is_powered(pos, rule)
+ local node = minetest.get_node(pos)
+ local rules = mesecon.get_any_inputrules(node)
+ if not rules then return false end
+
+ -- List of nodes that send out power to pos
+ local sourcepos = {}
+
+ if not rule then
+ for _, rule in ipairs(mesecon.flattenrules(rules)) do
+ local rulenames = mesecon.rules_link_rule_all_inverted(pos, rule)
+ for _, rname in ipairs(rulenames) do
+ local np = mesecon.addPosRule(pos, rname)
+ local nn = minetest.get_node(np)
+ if (mesecon.is_conductor_on (nn, mesecon.invertRule(rname))
+ or mesecon.is_receptor_on (nn.name)) then
+ table.insert(sourcepos, np)
+ end
+ end
+ end
+ else
+ local rulenames = mesecon.rules_link_rule_all_inverted(pos, rule)
+ for _, rname in ipairs(rulenames) do
+ local np = mesecon.addPosRule(pos, rname)
+ local nn = minetest.get_node(np)
+ if (mesecon.is_conductor_on (nn, mesecon.invertRule(rname))
+ or mesecon.is_receptor_on (nn.name)) then
+ table.insert(sourcepos, np)
+ end
+ end
+ end
+
+ -- Return FALSE if not powered, return list of sources if is powered
+ if (#sourcepos == 0) then return false
+ else return sourcepos end
+end
+
+--Rules rotation Functions:
+function mesecon.rotate_rules_right(rules)
+ local nr = {}
+ for i, rule in ipairs(rules) do
+ table.insert(nr, {
+ x = -rule.z,
+ y = rule.y,
+ z = rule.x,
+ name = rule.name})
+ end
+ return nr
+end
+
+function mesecon.rotate_rules_left(rules)
+ local nr = {}
+ for i, rule in ipairs(rules) do
+ table.insert(nr, {
+ x = rule.z,
+ y = rule.y,
+ z = -rule.x,
+ name = rule.name})
+ end
+ return nr
+end
+
+function mesecon.rotate_rules_down(rules)
+ local nr = {}
+ for i, rule in ipairs(rules) do
+ table.insert(nr, {
+ x = -rule.y,
+ y = rule.x,
+ z = rule.z,
+ name = rule.name})
+ end
+ return nr
+end
+
+function mesecon.rotate_rules_up(rules)
+ local nr = {}
+ for i, rule in ipairs(rules) do
+ table.insert(nr, {
+ x = rule.y,
+ y = -rule.x,
+ z = rule.z,
+ name = rule.name})
+ end
+ return nr
+end
diff --git a/mesecons/mesecons/legacy.lua b/mesecons/mesecons/legacy.lua
new file mode 100644
index 0000000..6d8ccca
--- /dev/null
+++ b/mesecons/mesecons/legacy.lua
@@ -0,0 +1,30 @@
+-- Ugly hack to prevent breaking compatibility with other mods
+-- Just remove the following two functions to delete the hack, to be done when other mods have updated
+function mesecon.receptor_on(self, pos, rules)
+ if (self.receptor_on) then
+ print("[Mesecons] Warning: A mod with mesecon support called mesecon:receptor_on.")
+ print("[Mesecons] If you are the programmer of this mod, please update it ")
+ print("[Mesecons] to use mesecon.receptor_on instead. mesecon:* is deprecated")
+ print("[Mesecons] Otherwise, please make sure you're running the latest version")
+ print("[Mesecons] of that mod and inform the mod creator.")
+ else
+ rules = pos
+ pos = self
+ end
+ mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules)
+end
+
+function mesecon.receptor_off(self, pos, rules)
+ if (self.receptor_off) then
+ print("[Mesecons] Warning: A mod with mesecon support called mesecon:receptor_off.")
+ print("[Mesecons] If you are the programmer of this mod, please update it ")
+ print("[Mesecons] to use mesecon.receptor_off instead. mesecon:* is deprecated")
+ print("[Mesecons] Otherwise, please make sure you're running the latest version")
+ print("[Mesecons] of that mod and inform the mod creator.")
+ else
+ rules = pos
+ pos = self
+ end
+ mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules)
+end
+
diff --git a/mesecons/mesecons/oldwires.lua b/mesecons/mesecons/oldwires.lua
new file mode 100644
index 0000000..b3b09e5
--- /dev/null
+++ b/mesecons/mesecons/oldwires.lua
@@ -0,0 +1,38 @@
+minetest.register_node("mesecons:mesecon_off", {
+ drawtype = "raillike",
+ tiles = {"jeija_mesecon_off.png", "jeija_mesecon_curved_off.png", "jeija_mesecon_t_junction_off.png", "jeija_mesecon_crossing_off.png"},
+ inventory_image = "jeija_mesecon_off.png",
+ wield_image = "jeija_mesecon_off.png",
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5},
+ },
+ groups = {dig_immediate=3, mesecon=1, mesecon_conductor_craftable=1},
+ description="Mesecons",
+ mesecons = {conductor={
+ state = mesecon.state.off,
+ onstate = "mesecons:mesecon_on"
+ }}
+})
+
+minetest.register_node("mesecons:mesecon_on", {
+ drawtype = "raillike",
+ tiles = {"jeija_mesecon_on.png", "jeija_mesecon_curved_on.png", "jeija_mesecon_t_junction_on.png", "jeija_mesecon_crossing_on.png"},
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5},
+ },
+ groups = {dig_immediate=3, not_in_creaive_inventory=1, mesecon=1},
+ drop = "mesecons:mesecon_off 1",
+ light_source = default.LIGHT_MAX-11,
+ mesecons = {conductor={
+ state = mesecon.state.on,
+ offstate = "mesecons:mesecon_off"
+ }}
+})
diff --git a/mesecons/mesecons/presets.lua b/mesecons/mesecons/presets.lua
new file mode 100644
index 0000000..2f2f643
--- /dev/null
+++ b/mesecons/mesecons/presets.lua
@@ -0,0 +1,55 @@
+mesecon.rules = {}
+mesecon.state = {}
+
+mesecon.rules.default =
+{{x=0, y=0, z=-1},
+ {x=1, y=0, z=0},
+ {x=-1, y=0, z=0},
+ {x=0, y=0, z=1},
+ {x=1, y=1, z=0},
+ {x=1, y=-1, z=0},
+ {x=-1, y=1, z=0},
+ {x=-1, y=-1, z=0},
+ {x=0, y=1, z=1},
+ {x=0, y=-1, z=1},
+ {x=0, y=1, z=-1},
+ {x=0, y=-1, z=-1}}
+
+mesecon.rules.pplate = mesecon.mergetable(mesecon.rules.default, {{x=0, y=-2, z=0}})
+
+mesecon.rules.buttonlike =
+{{x = 1, y = 0, z = 0},
+ {x = 1, y = 1, z = 0},
+ {x = 1, y =-1, z = 0},
+ {x = 1, y =-1, z = 1},
+ {x = 1, y =-1, z =-1},
+ {x = 2, y = 0, z = 0}}
+
+mesecon.rules.flat =
+{{x = 1, y = 0, z = 0},
+ {x =-1, y = 0, z = 0},
+ {x = 0, y = 0, z = 1},
+ {x = 0, y = 0, z =-1}}
+
+mesecon.rules.alldirs =
+{{x= 1, y= 0, z= 0},
+ {x=-1, y= 0, z= 0},
+ {x= 0, y= 1, z= 0},
+ {x= 0, y=-1, z= 0},
+ {x= 0, y= 0, z= 1},
+ {x= 0, y= 0, z=-1}}
+
+mesecon.rules.buttonlike_get = function(node)
+ local rules = mesecon.rules.buttonlike
+ if node.param2 == 2 then
+ rules=mesecon.rotate_rules_left(rules)
+ elseif node.param2 == 3 then
+ rules=mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules))
+ elseif node.param2 == 0 then
+ rules=mesecon.rotate_rules_right(rules)
+ end
+ return rules
+end
+
+mesecon.state.on = "on"
+mesecon.state.off = "off"
diff --git a/mesecons/mesecons/services.lua b/mesecons/mesecons/services.lua
new file mode 100644
index 0000000..215fb31
--- /dev/null
+++ b/mesecons/mesecons/services.lua
@@ -0,0 +1,100 @@
+-- Dig and place services
+
+mesecon.on_placenode = function (pos, node)
+ mesecon.update_autoconnect(pos, node)
+
+ -- Receptors: Send on signal when active
+ if mesecon.is_receptor_on(node.name) then
+ mesecon.receptor_on(pos, mesecon.receptor_get_rules(node))
+ end
+
+ -- Conductors: Send turnon signal when powered or replace by respective offstate conductor
+ -- if placed conductor is an onstate one
+ if mesecon.is_conductor(node.name) then
+ local sources = mesecon.is_powered(pos)
+ if sources then
+ -- also call receptor_on if itself is powered already, so that neighboring
+ -- conductors will be activated (when pushing an on-conductor with a piston)
+ for _, s in ipairs(sources) do
+ local rule = {x = pos.x - s.x, y = pos.y - s.y, z = pos.z - s.z}
+ mesecon.turnon(pos, rule)
+ end
+ --mesecon.receptor_on (pos, mesecon.conductor_get_rules(node))
+ elseif mesecon.is_conductor_on(node) then
+ minetest.swap_node(pos, {name = mesecon.get_conductor_off(node)})
+ end
+ end
+
+ -- Effectors: Send changesignal and activate or deactivate
+ if mesecon.is_effector(node.name) then
+ local powered_rules = {}
+ local unpowered_rules = {}
+
+ -- for each input rule, check if powered
+ for _, r in ipairs(mesecon.effector_get_rules(node)) do
+ local powered = mesecon.is_powered(pos, r)
+ if powered then table.insert(powered_rules, r)
+ else table.insert(unpowered_rules, r) end
+
+ local state = powered and mesecon.state.on or mesecon.state.off
+ mesecon.changesignal(pos, node, r, state, 1)
+ end
+
+ if (#powered_rules > 0) then
+ for _, r in ipairs(powered_rules) do
+ mesecon.activate(pos, node, r, 1)
+ end
+ else
+ for _, r in ipairs(unpowered_rules) do
+ mesecon.deactivate(pos, node, r, 1)
+ end
+ end
+ end
+end
+
+mesecon.on_dignode = function (pos, node)
+ if mesecon.is_conductor_on(node) then
+ mesecon.receptor_off(pos, mesecon.conductor_get_rules(node))
+ elseif mesecon.is_receptor_on(node.name) then
+ mesecon.receptor_off(pos, mesecon.receptor_get_rules(node))
+ end
+ mesecon.queue:add_action(pos, "update_autoconnect", {node})
+end
+
+mesecon.queue:add_function("update_autoconnect", mesecon.update_autoconnect)
+
+minetest.register_on_placenode(mesecon.on_placenode)
+minetest.register_on_dignode(mesecon.on_dignode)
+
+-- Overheating service for fast circuits
+
+-- returns true if heat is too high
+mesecon.do_overheat = function(pos)
+ local meta = minetest.get_meta(pos)
+ local heat = meta:get_int("heat") or 0
+
+ heat = heat + 1
+ meta:set_int("heat", heat)
+
+ if heat < mesecon.setting("overheat_max", 20) then
+ mesecon.queue:add_action(pos, "cooldown", {}, 1, nil, 0)
+ else
+ return true
+ end
+
+ return false
+end
+
+
+mesecon.queue:add_function("cooldown", function (pos)
+ if minetest.get_item_group(minetest.get_node(pos).name, "overheat") == 0 then
+ return -- node has been moved, this one does not use overheating - ignore
+ end
+
+ local meta = minetest.get_meta(pos)
+ local heat = meta:get_int("heat")
+
+ if (heat > 0) then
+ meta:set_int("heat", heat - 1)
+ end
+end)
diff --git a/mesecons/mesecons/settings.lua b/mesecons/mesecons/settings.lua
new file mode 100644
index 0000000..50240c3
--- /dev/null
+++ b/mesecons/mesecons/settings.lua
@@ -0,0 +1,15 @@
+-- SETTINGS
+function mesecon.setting(setting, default)
+ if type(default) == "boolean" then
+ local read = minetest.setting_getbool("mesecon."..setting)
+ if read == nil then
+ return default
+ else
+ return read
+ end
+ elseif type(default) == "string" then
+ return minetest.setting_get("mesecon."..setting) or default
+ elseif type(default) == "number" then
+ return tonumber(minetest.setting_get("mesecon."..setting) or default)
+ end
+end
diff --git a/mesecons/mesecons/textures/mesecons_wire_inv.png b/mesecons/mesecons/textures/mesecons_wire_inv.png
new file mode 100644
index 0000000..a3930cb
--- /dev/null
+++ b/mesecons/mesecons/textures/mesecons_wire_inv.png
Binary files differ
diff --git a/mesecons/mesecons/textures/mesecons_wire_off.png b/mesecons/mesecons/textures/mesecons_wire_off.png
new file mode 100644
index 0000000..58164fa
--- /dev/null
+++ b/mesecons/mesecons/textures/mesecons_wire_off.png
Binary files differ
diff --git a/mesecons/mesecons/textures/mesecons_wire_on.png b/mesecons/mesecons/textures/mesecons_wire_on.png
new file mode 100644
index 0000000..98a86c8
--- /dev/null
+++ b/mesecons/mesecons/textures/mesecons_wire_on.png
Binary files differ
diff --git a/mesecons/mesecons/util.lua b/mesecons/mesecons/util.lua
new file mode 100644
index 0000000..dd33f1c
--- /dev/null
+++ b/mesecons/mesecons/util.lua
@@ -0,0 +1,211 @@
+function mesecon.move_node(pos, newpos)
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos):to_table()
+ minetest.remove_node(pos)
+ minetest.add_node(newpos, node)
+ minetest.get_meta(pos):from_table(meta)
+end
+
+function mesecon.flattenrules(allrules)
+--[[
+ {
+ {
+ {xyz},
+ {xyz},
+ },
+ {
+ {xyz},
+ {xyz},
+ },
+ }
+--]]
+ if allrules[1] and
+ allrules[1].x then
+ return allrules
+ end
+
+ local shallowrules = {}
+ for _, metarule in ipairs( allrules) do
+ for _, rule in ipairs(metarule ) do
+ table.insert(shallowrules, rule)
+ end
+ end
+ return shallowrules
+--[[
+ {
+ {xyz},
+ {xyz},
+ {xyz},
+ {xyz},
+ }
+--]]
+end
+
+function mesecon.rule2bit(findrule, allrules)
+ --get the bit of the metarule the rule is in, or bit 1
+ if (allrules[1] and
+ allrules[1].x) or
+ not findrule then
+ return 1
+ end
+ for m,metarule in ipairs( allrules) do
+ for _, rule in ipairs(metarule ) do
+ if mesecon.cmpPos(findrule, rule) then
+ return m
+ end
+ end
+ end
+end
+
+function mesecon.rule2metaindex(findrule, allrules)
+ --get the metarule the rule is in, or allrules
+ if allrules[1].x then
+ return nil
+ end
+
+ if not(findrule) then
+ return mesecon.flattenrules(allrules)
+ end
+
+ for m, metarule in ipairs( allrules) do
+ for _, rule in ipairs(metarule ) do
+ if mesecon.cmpPos(findrule, rule) then
+ return m
+ end
+ end
+ end
+end
+
+function mesecon.rule2meta(findrule, allrules)
+ if #allrules == 0 then return {} end
+
+ local index = mesecon.rule2metaindex(findrule, allrules)
+ if index == nil then
+ if allrules[1].x then
+ return allrules
+ else
+ return {}
+ end
+ end
+ return allrules[index]
+end
+
+function mesecon.dec2bin(n)
+ local x, y = math.floor(n / 2), n % 2
+ if (n > 1) then
+ return mesecon.dec2bin(x)..y
+ else
+ return ""..y
+ end
+end
+
+function mesecon.getstate(nodename, states)
+ for state, name in ipairs(states) do
+ if name == nodename then
+ return state
+ end
+ end
+ error(nodename.." doesn't mention itself in "..dump(states))
+end
+
+function mesecon.getbinstate(nodename, states)
+ return mesecon.dec2bin(mesecon.getstate(nodename, states)-1)
+end
+
+function mesecon.get_bit(binary,bit)
+ bit = bit or 1
+ local c = binary:len()-(bit-1)
+ return binary:sub(c,c) == "1"
+end
+
+function mesecon.set_bit(binary,bit,value)
+ if value == "1" then
+ if not mesecon.get_bit(binary,bit) then
+ return mesecon.dec2bin(tonumber(binary,2)+math.pow(2,bit-1))
+ end
+ elseif value == "0" then
+ if mesecon.get_bit(binary,bit) then
+ return mesecon.dec2bin(tonumber(binary,2)-math.pow(2,bit-1))
+ end
+ end
+ return binary
+
+end
+
+function mesecon.invertRule(r)
+ return {x = -r.x, y = -r.y, z = -r.z}
+end
+
+function mesecon.addPosRule(p, r)
+ return {x = p.x + r.x, y = p.y + r.y, z = p.z + r.z}
+end
+
+function mesecon.cmpPos(p1, p2)
+ return (p1.x == p2.x and p1.y == p2.y and p1.z == p2.z)
+end
+
+function mesecon.tablecopy(table) -- deep table copy
+ if type(table) ~= "table" then return table end -- no need to copy
+ local newtable = {}
+
+ for idx, item in pairs(table) do
+ if type(item) == "table" then
+ newtable[idx] = mesecon.tablecopy(item)
+ else
+ newtable[idx] = item
+ end
+ end
+
+ return newtable
+end
+
+function mesecon.cmpAny(t1, t2)
+ if type(t1) ~= type(t2) then return false end
+ if type(t1) ~= "table" and type(t2) ~= "table" then return t1 == t2 end
+
+ for i, e in pairs(t1) do
+ if not mesecon.cmpAny(e, t2[i]) then return false end
+ end
+
+ return true
+end
+
+-- does not overwrite values; number keys (ipairs) are appended, not overwritten
+function mesecon.mergetable(source, dest)
+ local rval = mesecon.tablecopy(dest)
+
+ for k, v in pairs(source) do
+ rval[k] = dest[k] or mesecon.tablecopy(v)
+ end
+ for i, v in ipairs(source) do
+ table.insert(rval, mesecon.tablecopy(v))
+ end
+
+ return rval
+end
+
+function mesecon.register_node(name, spec_common, spec_off, spec_on)
+ spec_common.drop = spec_common.drop or name .. "_off"
+ spec_common.__mesecon_basename = name
+ spec_on.__mesecon_state = "on"
+ spec_off.__mesecon_state = "off"
+
+ spec_on = mesecon.mergetable(spec_common, spec_on);
+ spec_off = mesecon.mergetable(spec_common, spec_off);
+
+ minetest.register_node(name .. "_on", spec_on)
+ minetest.register_node(name .. "_off", spec_off)
+end
+
+-- swap onstate and offstate nodes, returns new state
+function mesecon.flipstate(pos, node)
+ local nodedef = minetest.registered_nodes[node.name]
+ local newstate
+ if (nodedef.__mesecon_state == "on") then newstate = "off" end
+ if (nodedef.__mesecon_state == "off") then newstate = "on" end
+
+ minetest.swap_node(pos, {name = nodedef.__mesecon_basename .. "_" .. newstate,
+ param2 = node.param2})
+
+ return newstate
+end
diff --git a/mesecons/mesecons/wires.lua b/mesecons/mesecons/wires.lua
new file mode 100644
index 0000000..18ae8f5
--- /dev/null
+++ b/mesecons/mesecons/wires.lua
@@ -0,0 +1,250 @@
+-- naming scheme: wire:(xp)(zp)(xm)(zm)(xpyp)(zpyp)(xmyp)(zmyp)_on/off
+-- where x= x direction, z= z direction, y= y direction, p = +1, m = -1, e.g. xpym = {x=1, y=-1, z=0}
+-- The (xp)/(zpyp)/.. statements shall be replaced by either 0 or 1
+-- Where 0 means the wire has no visual connection to that direction and
+-- 1 means that the wire visually connects to that other node.
+
+-- #######################
+-- ## Update wire looks ##
+-- #######################
+
+-- self_pos = pos of any mesecon node, from_pos = pos of conductor to getconnect for
+local wire_getconnect = function (from_pos, self_pos)
+ local node = minetest.get_node(self_pos)
+ if minetest.registered_nodes[node.name]
+ and minetest.registered_nodes[node.name].mesecons then
+ -- rules of node to possibly connect to
+ local rules = {}
+ if (minetest.registered_nodes[node.name].mesecon_wire) then
+ rules = mesecon.rules.default
+ else
+ rules = mesecon.get_any_rules(node)
+ end
+
+ for _, r in ipairs(mesecon.flattenrules(rules)) do
+ if (mesecon.cmpPos(mesecon.addPosRule(self_pos, r), from_pos)) then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+-- Update this node
+local wire_updateconnect = function (pos)
+ local connections = {}
+
+ for _, r in ipairs(mesecon.rules.default) do
+ if wire_getconnect(pos, mesecon.addPosRule(pos, r)) then
+ table.insert(connections, r)
+ end
+ end
+
+ local nid = {}
+ for _, vec in ipairs(connections) do
+ -- flat component
+ if vec.x == 1 then nid[0] = "1" end
+ if vec.z == 1 then nid[1] = "1" end
+ if vec.x == -1 then nid[2] = "1" end
+ if vec.z == -1 then nid[3] = "1" end
+
+ -- slopy component
+ if vec.y == 1 then
+ if vec.x == 1 then nid[4] = "1" end
+ if vec.z == 1 then nid[5] = "1" end
+ if vec.x == -1 then nid[6] = "1" end
+ if vec.z == -1 then nid[7] = "1" end
+ end
+ end
+
+ local nodeid = (nid[0] or "0")..(nid[1] or "0")..(nid[2] or "0")..(nid[3] or "0")
+ ..(nid[4] or "0")..(nid[5] or "0")..(nid[6] or "0")..(nid[7] or "0")
+
+ local state_suffix = string.find(minetest.get_node(pos).name, "_off") and "_off" or "_on"
+ minetest.set_node(pos, {name = "mesecons:wire_"..nodeid..state_suffix})
+end
+
+local update_on_place_dig = function (pos, node)
+ -- Update placed node (get_node again as it may have been dug)
+ local nn = minetest.get_node(pos)
+ if (minetest.registered_nodes[nn.name])
+ and (minetest.registered_nodes[nn.name].mesecon_wire) then
+ wire_updateconnect(pos)
+ end
+
+ -- Update nodes around it
+ local rules = {}
+ if minetest.registered_nodes[node.name]
+ and minetest.registered_nodes[node.name].mesecon_wire then
+ rules = mesecon.rules.default
+ else
+ rules = mesecon.get_any_rules(node)
+ end
+ if (not rules) then return end
+
+ for _, r in ipairs(mesecon.flattenrules(rules)) do
+ local np = mesecon.addPosRule(pos, r)
+ if minetest.registered_nodes[minetest.get_node(np).name]
+ and minetest.registered_nodes[minetest.get_node(np).name].mesecon_wire then
+ wire_updateconnect(np)
+ end
+ end
+end
+
+function mesecon.update_autoconnect(pos, node)
+ if (not node) then node = minetest.get_node(pos) end
+ update_on_place_dig(pos, node)
+end
+
+-- ############################
+-- ## Wire node registration ##
+-- ############################
+-- Nodeboxes:
+local box_center = {-1/16, -.5, -1/16, 1/16, -.5+1/16, 1/16}
+local box_bump1 = { -2/16, -8/16, -2/16, 2/16, -13/32, 2/16 }
+
+local nbox_nid =
+{
+ [0] = {1/16, -.5, -1/16, 8/16, -.5+1/16, 1/16}, -- x positive
+ [1] = {-1/16, -.5, 1/16, 1/16, -.5+1/16, 8/16}, -- z positive
+ [2] = {-8/16, -.5, -1/16, -1/16, -.5+1/16, 1/16}, -- x negative
+ [3] = {-1/16, -.5, -8/16, 1/16, -.5+1/16, -1/16}, -- z negative
+
+ [4] = {.5-1/16, -.5+1/16, -1/16, .5, .4999+1/16, 1/16}, -- x positive up
+ [5] = {-1/16, -.5+1/16, .5-1/16, 1/16, .4999+1/16, .5}, -- z positive up
+ [6] = {-.5, -.5+1/16, -1/16, -.5+1/16, .4999+1/16, 1/16}, -- x negative up
+ [7] = {-1/16, -.5+1/16, -.5, 1/16, .4999+1/16, -.5+1/16} -- z negative up
+}
+
+local tiles_off = { "mesecons_wire_off.png" }
+local tiles_on = { "mesecons_wire_on.png" }
+
+local selectionbox =
+{
+ type = "fixed",
+ fixed = {-.5, -.5, -.5, .5, -.5+4/16, .5}
+}
+
+-- go to the next nodeid (ex.: 01000011 --> 01000100)
+local nid_inc = function() end
+nid_inc = function (nid)
+ local i = 0
+ while nid[i-1] ~= 1 do
+ nid[i] = (nid[i] ~= 1) and 1 or 0
+ i = i + 1
+ end
+
+ -- BUT: Skip impossible nodeids:
+ if ((nid[0] == 0 and nid[4] == 1) or (nid[1] == 0 and nid[5] == 1)
+ or (nid[2] == 0 and nid[6] == 1) or (nid[3] == 0 and nid[7] == 1)) then
+ return nid_inc(nid)
+ end
+
+ return i <= 8
+end
+
+register_wires = function()
+ local nid = {}
+ while true do
+ -- Create group specifiction and nodeid string (see note above for details)
+ local nodeid = (nid[0] or "0")..(nid[1] or "0")..(nid[2] or "0")..(nid[3] or "0")
+ ..(nid[4] or "0")..(nid[5] or "0")..(nid[6] or "0")..(nid[7] or "0")
+
+ -- Calculate nodebox
+ local nodebox = {type = "fixed", fixed={box_center}}
+ for i=0,7 do
+ if nid[i] == 1 then
+ table.insert(nodebox.fixed, nbox_nid[i])
+ end
+ end
+
+ -- Add bump to nodebox if curved
+ if (nid[0] == 1 and nid[1] == 1) or (nid[1] == 1 and nid[2] == 1)
+ or (nid[2] == 1 and nid[3] == 1) or (nid[3] == 1 and nid[0] == 1) then
+ table.insert(nodebox.fixed, box_bump1)
+ end
+
+ -- If nothing to connect to, still make a nodebox of a straight wire
+ if nodeid == "00000000" then
+ nodebox.fixed = {-8/16, -.5, -1/16, 8/16, -.5+1/16, 1/16}
+ end
+
+ local rules = {}
+ if (nid[0] == 1) then table.insert(rules, vector.new( 1, 0, 0)) end
+ if (nid[1] == 1) then table.insert(rules, vector.new( 0, 0, 1)) end
+ if (nid[2] == 1) then table.insert(rules, vector.new(-1, 0, 0)) end
+ if (nid[3] == 1) then table.insert(rules, vector.new( 0, 0, -1)) end
+
+ if (nid[0] == 1) then table.insert(rules, vector.new( 1, -1, 0)) end
+ if (nid[1] == 1) then table.insert(rules, vector.new( 0, -1, 1)) end
+ if (nid[2] == 1) then table.insert(rules, vector.new(-1, -1, 0)) end
+ if (nid[3] == 1) then table.insert(rules, vector.new( 0, -1, -1)) end
+
+ if (nid[4] == 1) then table.insert(rules, vector.new( 1, 1, 0)) end
+ if (nid[5] == 1) then table.insert(rules, vector.new( 0, 1, 1)) end
+ if (nid[6] == 1) then table.insert(rules, vector.new(-1, 1, 0)) end
+ if (nid[7] == 1) then table.insert(rules, vector.new( 0, 1, -1)) end
+
+ local meseconspec_off = { conductor = {
+ rules = rules,
+ state = mesecon.state.off,
+ onstate = "mesecons:wire_"..nodeid.."_on"
+ }}
+
+ local meseconspec_on = { conductor = {
+ rules = rules,
+ state = mesecon.state.on,
+ offstate = "mesecons:wire_"..nodeid.."_off"
+ }}
+
+ local groups_on = {dig_immediate = 3, mesecon_conductor_craftable = 1,
+ not_in_creative_inventory = 1}
+ local groups_off = {dig_immediate = 3, mesecon_conductor_craftable = 1}
+ if nodeid ~= "00000000" then
+ groups_off["not_in_creative_inventory"] = 1
+ end
+
+ mesecon.register_node("mesecons:wire_"..nodeid, {
+ description = "Mesecon",
+ drawtype = "nodebox",
+ inventory_image = "mesecons_wire_inv.png",
+ wield_image = "mesecons_wire_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ selection_box = selectionbox,
+ node_box = nodebox,
+ walkable = false,
+ drop = "mesecons:wire_00000000_off",
+ mesecon_wire = true
+ }, {tiles = tiles_off, mesecons = meseconspec_off, groups = groups_off},
+ {tiles = tiles_on, mesecons = meseconspec_on, groups = groups_on})
+
+ if (nid_inc(nid) == false) then return end
+ end
+end
+register_wires()
+
+-- ##############
+-- ## Crafting ##
+-- ##############
+minetest.register_craft({
+ type = "cooking",
+ output = "mesecons:wire_00000000_off 2",
+ recipe = "default:mese_crystal_fragment",
+ cooktime = 3,
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "mesecons:wire_00000000_off 18",
+ recipe = "default:mese_crystal",
+ cooktime = 15,
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "mesecons:wire_00000000_off 162",
+ recipe = "default:mese",
+ cooktime = 30,
+})
diff --git a/mesecons/mesecons_alias/depends.txt b/mesecons/mesecons_alias/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_alias/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_alias/init.lua b/mesecons/mesecons_alias/init.lua
new file mode 100644
index 0000000..395c368
--- /dev/null
+++ b/mesecons/mesecons_alias/init.lua
@@ -0,0 +1,38 @@
+-- This file registers aliases for the /give /giveme commands.
+
+minetest.register_alias("mesecons:removestone", "mesecons_random:removestone")
+minetest.register_alias("mesecons:power_plant", "mesecons_powerplant:power_plant")
+minetest.register_alias("mesecons:powerplant", "mesecons_powerplant:power_plant")
+minetest.register_alias("mesecons:meselamp", "mesecons_lamp:lamp_off")
+minetest.register_alias("mesecons:mesecon", "mesecons:wire_00000000_off")
+minetest.register_alias("mesecons:object_detector", "mesecons_detector:object_detector_off")
+minetest.register_alias("mesecons:wireless_inverter", "mesecons_wireless:wireless_inverter_on")
+minetest.register_alias("mesecons:wireless_receiver", "mesecons_wireless:wireless_receiver_off")
+minetest.register_alias("mesecons:wireless_transmitter", "mesecons_wireless:wireless_transmitter_off")
+minetest.register_alias("mesecons:switch", "mesecons_switch:mesecon_switch_off")
+minetest.register_alias("mesecons:button", "mesecons_button:button_off")
+minetest.register_alias("mesecons:piston", "mesecons_pistons:piston_normal_off")
+minetest.register_alias("mesecons:blinky_plant", "mesecons_blinkyplant:blinky_plant_off")
+minetest.register_alias("mesecons:mesecon_torch", "mesecons_torch:mesecon_torch_on")
+minetest.register_alias("mesecons:torch", "mesecons_torch:mesecon_torch_on")
+minetest.register_alias("mesecons:hydro_turbine", "mesecons_hydroturbine:hydro_turbine_off")
+minetest.register_alias("mesecons:pressure_plate_stone", "mesecons_pressureplates:pressure_plate_stone_off")
+minetest.register_alias("mesecons:pressure_plate_wood", "mesecons_pressureplates:pressure_plate_wood_off")
+minetest.register_alias("mesecons:mesecon_socket", "mesecons_temperest:mesecon_socket_off")
+minetest.register_alias("mesecons:mesecon_inverter", "mesecons_temperest:mesecon_inverter_on")
+minetest.register_alias("mesecons:movestone", "mesecons_movestones:movestone")
+minetest.register_alias("mesecons:sticky_movestone", "mesecons_movestones:sticky_movestone")
+minetest.register_alias("mesecons:noteblock", "mesecons_noteblock:noteblock")
+minetest.register_alias("mesecons:microcontroller", "mesecons_microcontroller:microcontroller0000")
+minetest.register_alias("mesecons:delayer", "mesecons_delayer:delayer_off_1")
+minetest.register_alias("mesecons:solarpanel", "mesecons_solarpanel:solar_panel_off")
+
+
+--Backwards compatibility
+minetest.register_alias("mesecons:mesecon_off", "mesecons:wire_00000000_off")
+minetest.register_alias("mesecons_pistons:piston_sticky", "mesecons_pistons:piston_sticky_on")
+minetest.register_alias("mesecons_pistons:piston_normal", "mesecons_pistons:piston_normal_on")
+minetest.register_alias("mesecons_pistons:piston_up_normal", "mesecons_pistons:piston_up_normal_on")
+minetest.register_alias("mesecons_pistons:piston_down_normal", "mesecons_pistons:piston_down_normal_on")
+minetest.register_alias("mesecons_pistons:piston_up_sticky", "mesecons_pistons:piston_up_sticky_on")
+minetest.register_alias("mesecons_pistons:piston_down_sticky", "mesecons_pistons:piston_down_sticky_on")
diff --git a/mesecons/mesecons_blinkyplant/depends.txt b/mesecons/mesecons_blinkyplant/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_blinkyplant/doc/blinkyplant/description.html b/mesecons/mesecons_blinkyplant/doc/blinkyplant/description.html
new file mode 100644
index 0000000..2a7db48
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/doc/blinkyplant/description.html
@@ -0,0 +1 @@
+The blinky plants toggles between on and off state every three seconds. Can be used to make clocks. Also works after having restarted the game.
diff --git a/mesecons/mesecons_blinkyplant/doc/blinkyplant/preview.png b/mesecons/mesecons_blinkyplant/doc/blinkyplant/preview.png
new file mode 100755
index 0000000..40ce5b5
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/doc/blinkyplant/preview.png
Binary files differ
diff --git a/mesecons/mesecons_blinkyplant/doc/blinkyplant/recipe.png b/mesecons/mesecons_blinkyplant/doc/blinkyplant/recipe.png
new file mode 100644
index 0000000..6f1e148
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/doc/blinkyplant/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_blinkyplant/init.lua b/mesecons/mesecons_blinkyplant/init.lua
new file mode 100644
index 0000000..8d2aa6e
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/init.lua
@@ -0,0 +1,51 @@
+-- The BLINKY_PLANT
+
+local toggle_timer = function (pos)
+ local timer = minetest.get_node_timer(pos)
+ if timer:is_started() then
+ timer:stop()
+ else
+ timer:start(mesecon.setting("blinky_plant_interval", 3))
+ end
+end
+
+local on_timer = function (pos)
+ local node = minetest.get_node(pos)
+ if(mesecon.flipstate(pos, node) == "on") then
+ mesecon.receptor_on(pos)
+ else
+ mesecon.receptor_off(pos)
+ end
+ toggle_timer(pos)
+end
+
+mesecon.register_node("mesecons_blinkyplant:blinky_plant", {
+ description="Blinky Plant",
+ drawtype = "plantlike",
+ inventory_image = "jeija_blinky_plant_off.png",
+ paramtype = "light",
+ walkable = false,
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3},
+ },
+ on_timer = on_timer,
+ on_rightclick = toggle_timer,
+ on_construct = toggle_timer
+},{
+ tiles = {"jeija_blinky_plant_off.png"},
+ groups = {dig_immediate=3},
+ mesecons = {receptor = { state = mesecon.state.off }}
+},{
+ tiles = {"jeija_blinky_plant_on.png"},
+ groups = {dig_immediate=3, not_in_creative_inventory=1},
+ mesecons = {receptor = { state = mesecon.state.on }}
+})
+
+minetest.register_craft({
+ output = "mesecons_blinkyplant:blinky_plant_off 1",
+ recipe = { {"","group:mesecon_conductor_craftable",""},
+ {"","group:mesecon_conductor_craftable",""},
+ {"group:sapling","group:sapling","group:sapling"}}
+})
diff --git a/mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png b/mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png
new file mode 100644
index 0000000..4f507da
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png
Binary files differ
diff --git a/mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png b/mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png
new file mode 100644
index 0000000..f77a134
--- /dev/null
+++ b/mesecons/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png
Binary files differ
diff --git a/mesecons/mesecons_button/depends.txt b/mesecons/mesecons_button/depends.txt
new file mode 100644
index 0000000..19c798c
--- /dev/null
+++ b/mesecons/mesecons_button/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+mesecons_receiver
diff --git a/mesecons/mesecons_button/doc/button/description.html b/mesecons/mesecons_button/doc/button/description.html
new file mode 100644
index 0000000..ae6bf07
--- /dev/null
+++ b/mesecons/mesecons_button/doc/button/description.html
@@ -0,0 +1 @@
+This receptor can be attached to walls. It turns on for 1 second if it's punched.
diff --git a/mesecons/mesecons_button/doc/button/preview.png b/mesecons/mesecons_button/doc/button/preview.png
new file mode 100644
index 0000000..b69f8f4
--- /dev/null
+++ b/mesecons/mesecons_button/doc/button/preview.png
Binary files differ
diff --git a/mesecons/mesecons_button/doc/button/recipe.png b/mesecons/mesecons_button/doc/button/recipe.png
new file mode 100644
index 0000000..c6232b4
--- /dev/null
+++ b/mesecons/mesecons_button/doc/button/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_button/init.lua b/mesecons/mesecons_button/init.lua
new file mode 100644
index 0000000..f287d52
--- /dev/null
+++ b/mesecons/mesecons_button/init.lua
@@ -0,0 +1,98 @@
+-- WALL BUTTON
+-- A button that when pressed emits power for 1 second
+-- and then turns off again
+
+mesecon.button_turnoff = function (pos)
+ local node = minetest.get_node(pos)
+ if node.name=="mesecons_button:button_on" then --has not been dug
+ minetest.swap_node(pos, {name = "mesecons_button:button_off", param2=node.param2})
+ minetest.sound_play("mesecons_button_pop", {pos=pos})
+ local rules = mesecon.rules.buttonlike_get(node)
+ mesecon.receptor_off(pos, rules)
+ end
+end
+
+minetest.register_node("mesecons_button:button_off", {
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_off.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ legacy_wallmounted = true,
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "fixed",
+ fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button
+ { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself
+ }
+ },
+ groups = {dig_immediate=2, mesecon_needs_receiver = 1},
+ description = "Button",
+ on_rightclick = function (pos, node)
+ minetest.swap_node(pos, {name = "mesecons_button:button_on", param2=node.param2})
+ mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node))
+ minetest.sound_play("mesecons_button_push", {pos=pos})
+ minetest.after(1, mesecon.button_turnoff, pos)
+ end,
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.off,
+ rules = mesecon.rules.buttonlike_get
+ }}
+})
+
+minetest.register_node("mesecons_button:button_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_sides.png",
+ "jeija_wall_button_on.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ legacy_wallmounted = true,
+ walkable = false,
+ light_source = default.LIGHT_MAX-7,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "fixed",
+ fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 },
+ { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 }
+ }
+ },
+ groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
+ drop = 'mesecons_button:button_off',
+ description = "Button",
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.on,
+ rules = mesecon.rules.buttonlike_get
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_button:button_off 2",
+ recipe = {
+ {"group:mesecon_conductor_craftable","default:stone"},
+ }
+})
diff --git a/mesecons/mesecons_button/sounds/mesecons_button_pop.ogg b/mesecons/mesecons_button/sounds/mesecons_button_pop.ogg
new file mode 100644
index 0000000..9d56bb8
--- /dev/null
+++ b/mesecons/mesecons_button/sounds/mesecons_button_pop.ogg
Binary files differ
diff --git a/mesecons/mesecons_button/sounds/mesecons_button_push.ogg b/mesecons/mesecons_button/sounds/mesecons_button_push.ogg
new file mode 100644
index 0000000..53d45c1
--- /dev/null
+++ b/mesecons/mesecons_button/sounds/mesecons_button_push.ogg
Binary files differ
diff --git a/mesecons/mesecons_button/textures/jeija_wall_button_off.png b/mesecons/mesecons_button/textures/jeija_wall_button_off.png
new file mode 100644
index 0000000..0e3ff25
--- /dev/null
+++ b/mesecons/mesecons_button/textures/jeija_wall_button_off.png
Binary files differ
diff --git a/mesecons/mesecons_button/textures/jeija_wall_button_on.png b/mesecons/mesecons_button/textures/jeija_wall_button_on.png
new file mode 100644
index 0000000..1d97464
--- /dev/null
+++ b/mesecons/mesecons_button/textures/jeija_wall_button_on.png
Binary files differ
diff --git a/mesecons/mesecons_button/textures/jeija_wall_button_sides.png b/mesecons/mesecons_button/textures/jeija_wall_button_sides.png
new file mode 100644
index 0000000..9b79b57
--- /dev/null
+++ b/mesecons/mesecons_button/textures/jeija_wall_button_sides.png
Binary files differ
diff --git a/mesecons/mesecons_commandblock/depends.txt b/mesecons/mesecons_commandblock/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_commandblock/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_commandblock/doc/commandblock/description.html b/mesecons/mesecons_commandblock/doc/commandblock/description.html
new file mode 100644
index 0000000..405b7e55
--- /dev/null
+++ b/mesecons/mesecons_commandblock/doc/commandblock/description.html
@@ -0,0 +1 @@
+There is no crafting recipe as this should only be available for server admins. Quite similar to the Minecraft counterpart. Executes server commands.
diff --git a/mesecons/mesecons_commandblock/doc/commandblock/preview.png b/mesecons/mesecons_commandblock/doc/commandblock/preview.png
new file mode 100644
index 0000000..d89cc7b
--- /dev/null
+++ b/mesecons/mesecons_commandblock/doc/commandblock/preview.png
Binary files differ
diff --git a/mesecons/mesecons_commandblock/init.lua b/mesecons/mesecons_commandblock/init.lua
new file mode 100644
index 0000000..8fd23f6
--- /dev/null
+++ b/mesecons/mesecons_commandblock/init.lua
@@ -0,0 +1,195 @@
+minetest.register_chatcommand("say", {
+ params = "<text>",
+ description = "Say <text> as the server",
+ privs = {server=true},
+ func = function(name, param)
+ minetest.chat_send_all(name .. ": " .. param)
+ end
+})
+
+minetest.register_chatcommand("tell", {
+ params = "<name> <text>",
+ description = "Say <text> to <name> privately",
+ func = function(name, param)
+ local found, _, target, message = param:find("^([^%s]+)%s+(.*)$")
+ if found == nil then
+ minetest.chat_send_player(name, "Invalid usage: " .. param)
+ return
+ end
+ if not minetest.get_player_by_name(target) then
+ minetest.chat_send_player(name, "Invalid target: " .. target)
+ end
+ minetest.chat_send_player(target, name .. " whispers: " .. message, false)
+ end
+})
+
+minetest.register_chatcommand("hp", {
+ params = "<name> <value>",
+ description = "Set health of <name> to <value> hitpoints",
+ privs = {ban=true},
+ func = function(name, param)
+ local found, _, target, value = param:find("^([^%s]+)%s+(%d+)$")
+ if found == nil then
+ minetest.chat_send_player(name, "Invalid usage: " .. param)
+ return
+ end
+ local player = minetest.get_player_by_name(target)
+ if player then
+ player:set_hp(value)
+ else
+ minetest.chat_send_player(name, "Invalid target: " .. target)
+ end
+ end
+})
+
+local function initialize_data(meta)
+ local commands = meta:get_string("commands")
+ meta:set_string("formspec",
+ "invsize[9,5;]" ..
+ "textarea[0.5,0.5;8.5,4;commands;Commands;"..commands.."]" ..
+ "label[1,3.8;@nearest, @farthest, and @random are replaced by the respective player names]" ..
+ "button_exit[3.3,4.5;2,1;submit;Submit]")
+ local owner = meta:get_string("owner")
+ if owner == "" then
+ owner = "not owned"
+ else
+ owner = "owned by " .. owner
+ end
+ meta:set_string("infotext", "Command Block\n" ..
+ "(" .. owner .. ")\n" ..
+ "Commands: "..commands)
+end
+
+local function construct(pos)
+ local meta = minetest.get_meta(pos)
+
+ meta:set_string("commands", "tell @nearest Commandblock unconfigured")
+
+ meta:set_string("owner", "")
+
+ initialize_data(meta)
+end
+
+local function after_place(pos, placer)
+ if placer then
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name())
+ initialize_data(meta)
+ end
+end
+
+local function receive_fields(pos, formname, fields, sender)
+ if not fields.submit then
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ if owner ~= "" and sender:get_player_name() ~= owner then
+ return
+ end
+ meta:set_string("commands", fields.commands)
+
+ initialize_data(meta)
+end
+
+local function resolve_commands(commands, pos)
+ local nearest, farthest = nil, nil
+ local min_distance, max_distance = math.huge, -1
+ local players = minetest.get_connected_players()
+ for index, player in pairs(players) do
+ local distance = vector.distance(pos, player:getpos())
+ if distance < min_distance then
+ min_distance = distance
+ nearest = player:get_player_name()
+ end
+ if distance > max_distance then
+ max_distance = distance
+ farthest = player:get_player_name()
+ end
+ end
+ local random = players[math.random(#players)]:get_player_name()
+ commands = commands:gsub("@nearest", nearest)
+ commands = commands:gsub("@farthest", farthest)
+ commands = commands:gsub("@random", random)
+ return commands
+end
+
+local function commandblock_action_on(pos, node)
+ if node.name ~= "mesecons_commandblock:commandblock_off" then
+ return
+ end
+
+ minetest.swap_node(pos, {name = "mesecons_commandblock:commandblock_on"})
+
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ if owner == "" then
+ return
+ end
+
+ local commands = resolve_commands(meta:get_string("commands"), pos)
+ for _, command in pairs(commands:split("\n")) do
+ local pos = command:find(" ")
+ local cmd, param = command, ""
+ if pos then
+ cmd = command:sub(1, pos - 1)
+ param = command:sub(pos + 1)
+ end
+ local cmddef = minetest.chatcommands[cmd]
+ if not cmddef then
+ minetest.chat_send_player(owner, "The command "..cmd.." does not exist")
+ return
+ end
+ local has_privs, missing_privs = minetest.check_player_privs(owner, cmddef.privs)
+ if not has_privs then
+ minetest.chat_send_player(owner, "You don't have permission "
+ .."to run "..cmd
+ .." (missing privileges: "
+ ..table.concat(missing_privs, ", ")..")")
+ return
+ end
+ cmddef.func(owner, param)
+ end
+end
+
+local function commandblock_action_off(pos, node)
+ if node.name == "mesecons_commandblock:commandblock_on" then
+ minetest.swap_node(pos, {name = "mesecons_commandblock:commandblock_off"})
+ end
+end
+
+local function can_dig(pos, player)
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ return owner == "" or owner == player:get_player_name()
+end
+
+minetest.register_node("mesecons_commandblock:commandblock_off", {
+ description = "Command Block",
+ tiles = {"jeija_commandblock_off.png"},
+ inventory_image = minetest.inventorycube("jeija_commandblock_off.png"),
+ groups = {cracky=2, mesecon_effector_off=1},
+ on_construct = construct,
+ after_place_node = after_place,
+ on_receive_fields = receive_fields,
+ can_dig = can_dig,
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {effector = {
+ action_on = commandblock_action_on
+ }}
+})
+
+minetest.register_node("mesecons_commandblock:commandblock_on", {
+ tiles = {"jeija_commandblock_on.png"},
+ groups = {cracky=2, mesecon_effector_on=1, not_in_creative_inventory=1},
+ light_source = 10,
+ drop = "mesecons_commandblock:commandblock_off",
+ on_construct = construct,
+ after_place_node = after_place,
+ on_receive_fields = receive_fields,
+ can_dig = can_dig,
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {effector = {
+ action_off = commandblock_action_off
+ }}
+})
diff --git a/mesecons/mesecons_commandblock/textures/jeija_close_window.png b/mesecons/mesecons_commandblock/textures/jeija_close_window.png
new file mode 100644
index 0000000..5c27c6c
--- /dev/null
+++ b/mesecons/mesecons_commandblock/textures/jeija_close_window.png
Binary files differ
diff --git a/mesecons/mesecons_commandblock/textures/jeija_commandblock_off.png b/mesecons/mesecons_commandblock/textures/jeija_commandblock_off.png
new file mode 100644
index 0000000..c05b616
--- /dev/null
+++ b/mesecons/mesecons_commandblock/textures/jeija_commandblock_off.png
Binary files differ
diff --git a/mesecons/mesecons_commandblock/textures/jeija_commandblock_on.png b/mesecons/mesecons_commandblock/textures/jeija_commandblock_on.png
new file mode 100644
index 0000000..7fc35b6
--- /dev/null
+++ b/mesecons/mesecons_commandblock/textures/jeija_commandblock_on.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/depends.txt b/mesecons/mesecons_delayer/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_delayer/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_delayer/doc/delayer/description.html b/mesecons/mesecons_delayer/doc/delayer/description.html
new file mode 100644
index 0000000..f3a5280
--- /dev/null
+++ b/mesecons/mesecons_delayer/doc/delayer/description.html
@@ -0,0 +1 @@
+The delayer delays the signal from the input for a determined time. The time can be set by punching the delayer. Possible delays are: 0.1 seconds, 0.3 seconds, 0.5 seconds and 1 second. You may try to use it for creating songs with the noteblock.
diff --git a/mesecons/mesecons_delayer/doc/delayer/preview.png b/mesecons/mesecons_delayer/doc/delayer/preview.png
new file mode 100644
index 0000000..c57c728
--- /dev/null
+++ b/mesecons/mesecons_delayer/doc/delayer/preview.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/doc/delayer/recipe.png b/mesecons/mesecons_delayer/doc/delayer/recipe.png
new file mode 100644
index 0000000..ea394aa
--- /dev/null
+++ b/mesecons/mesecons_delayer/doc/delayer/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/init.lua b/mesecons/mesecons_delayer/init.lua
new file mode 100644
index 0000000..da576ad
--- /dev/null
+++ b/mesecons/mesecons_delayer/init.lua
@@ -0,0 +1,179 @@
+-- Function that get the input/output rules of the delayer
+local delayer_get_output_rules = function(node)
+ local rules = {{x = 0, y = 0, z = 1}}
+ for i = 0, node.param2 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+ return rules
+end
+
+local delayer_get_input_rules = function(node)
+ local rules = {{x = 0, y = 0, z = -1}}
+ for i = 0, node.param2 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+ return rules
+end
+
+-- Functions that are called after the delay time
+
+local delayer_activate = function(pos, node)
+ local def = minetest.registered_nodes[node.name]
+ local time = def.delayer_time
+ minetest.swap_node(pos, {name = def.delayer_onstate, param2=node.param2})
+ mesecon.queue:add_action(pos, "receptor_on", {delayer_get_output_rules(node)}, time, nil)
+end
+
+local delayer_deactivate = function(pos, node)
+ local def = minetest.registered_nodes[node.name]
+ local time = def.delayer_time
+ minetest.swap_node(pos, {name = def.delayer_offstate, param2=node.param2})
+ mesecon.queue:add_action(pos, "receptor_off", {delayer_get_output_rules(node)}, time, nil)
+end
+
+-- Register the 2 (states) x 4 (delay times) delayers
+
+for i = 1, 4 do
+local groups = {}
+if i == 1 then
+ groups = {bendy=2,snappy=1,dig_immediate=2}
+else
+ groups = {bendy=2,snappy=1,dig_immediate=2, not_in_creative_inventory=1}
+end
+
+local delaytime
+if i == 1 then delaytime = 0.1
+elseif i == 2 then delaytime = 0.3
+elseif i == 3 then delaytime = 0.5
+elseif i == 4 then delaytime = 1.0 end
+
+boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 }, -- the main slab
+
+ { -2/16, -7/16, -4/16, 2/16, -26/64, -3/16 }, -- the jeweled "on" indicator
+ { -3/16, -7/16, -3/16, 3/16, -26/64, -2/16 },
+ { -4/16, -7/16, -2/16, 4/16, -26/64, 2/16 },
+ { -3/16, -7/16, 2/16, 3/16, -26/64, 3/16 },
+ { -2/16, -7/16, 3/16, 2/16, -26/64, 4/16 },
+
+ { -6/16, -7/16, -6/16, -4/16, -27/64, -4/16 }, -- the timer indicator
+ { -8/16, -8/16, -1/16, -6/16, -7/16, 1/16 }, -- the two wire stubs
+ { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 }}
+
+minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), {
+ description = "Delayer",
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_delayer_off_"..tostring(i)..".png",
+ "mesecons_delayer_bottom.png",
+ "mesecons_delayer_ends_off.png",
+ "mesecons_delayer_ends_off.png",
+ "mesecons_delayer_sides_off.png",
+ "mesecons_delayer_sides_off.png"
+ },
+ inventory_image = "mesecons_delayer_off_1.png",
+ wield_image = "mesecons_delayer_off_1.png",
+ walkable = true,
+ selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 },
+ },
+ node_box = {
+ type = "fixed",
+ fixed = boxes
+ },
+ groups = groups,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ drop = 'mesecons_delayer:delayer_off_1',
+ on_punch = function (pos, node)
+ if node.name=="mesecons_delayer:delayer_off_1" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_off_2", param2=node.param2})
+ elseif node.name=="mesecons_delayer:delayer_off_2" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_off_3", param2=node.param2})
+ elseif node.name=="mesecons_delayer:delayer_off_3" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_off_4", param2=node.param2})
+ elseif node.name=="mesecons_delayer:delayer_off_4" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_off_1", param2=node.param2})
+ end
+ end,
+ delayer_time = delaytime,
+ delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i),
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {
+ receptor =
+ {
+ state = mesecon.state.off,
+ rules = delayer_get_output_rules
+ },
+ effector =
+ {
+ rules = delayer_get_input_rules,
+ action_on = delayer_activate
+ }
+ }
+})
+
+
+minetest.register_node("mesecons_delayer:delayer_on_"..tostring(i), {
+ description = "You hacker you",
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_delayer_on_"..tostring(i)..".png",
+ "mesecons_delayer_bottom.png",
+ "mesecons_delayer_ends_on.png",
+ "mesecons_delayer_ends_on.png",
+ "mesecons_delayer_sides_on.png",
+ "mesecons_delayer_sides_on.png"
+ },
+ walkable = true,
+ selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 },
+ },
+ node_box = {
+ type = "fixed",
+ fixed = boxes
+ },
+ groups = {bendy = 2, snappy = 1, dig_immediate = 2, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ drop = 'mesecons_delayer:delayer_off_1',
+ on_punch = function (pos, node)
+ if node.name=="mesecons_delayer:delayer_on_1" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_on_2", param2=node.param2})
+ elseif node.name=="mesecons_delayer:delayer_on_2" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_on_3", param2=node.param2})
+ elseif node.name=="mesecons_delayer:delayer_on_3" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_on_4", param2=node.param2})
+ elseif node.name=="mesecons_delayer:delayer_on_4" then
+ minetest.swap_node(pos, {name = "mesecons_delayer:delayer_on_1", param2=node.param2})
+ end
+ end,
+ delayer_time = delaytime,
+ delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i),
+ mesecons = {
+ receptor =
+ {
+ state = mesecon.state.on,
+ rules = delayer_get_output_rules
+ },
+ effector =
+ {
+ rules = delayer_get_input_rules,
+ action_off = delayer_deactivate
+ }
+ }
+})
+end
+
+minetest.register_craft({
+ output = "mesecons_delayer:delayer_off_1",
+ recipe = {
+ {"mesecons_torch:mesecon_torch_on", "group:mesecon_conductor_craftable", "mesecons_torch:mesecon_torch_on"},
+ {"default:cobble","default:cobble", "default:cobble"},
+ }
+})
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_bottom.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_bottom.png
new file mode 100644
index 0000000..2e49d31
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_bottom.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_ends_off.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_ends_off.png
new file mode 100644
index 0000000..0242deb
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_ends_off.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_ends_on.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_ends_on.png
new file mode 100644
index 0000000..19ae0cb
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_ends_on.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_off_1.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_1.png
new file mode 100644
index 0000000..7372b37
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_1.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_off_2.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_2.png
new file mode 100644
index 0000000..e34f0ac
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_2.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_off_3.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_3.png
new file mode 100644
index 0000000..091adbc
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_3.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_off_4.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_4.png
new file mode 100644
index 0000000..7ecc9b6
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_off_4.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_on_1.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_1.png
new file mode 100644
index 0000000..61f52f2
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_1.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_on_2.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_2.png
new file mode 100644
index 0000000..7bd363f
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_2.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_on_3.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_3.png
new file mode 100644
index 0000000..b93f725
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_3.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_on_4.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_4.png
new file mode 100644
index 0000000..ca90a1e
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_on_4.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_sides_off.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_sides_off.png
new file mode 100644
index 0000000..79f3d59
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_sides_off.png
Binary files differ
diff --git a/mesecons/mesecons_delayer/textures/mesecons_delayer_sides_on.png b/mesecons/mesecons_delayer/textures/mesecons_delayer_sides_on.png
new file mode 100644
index 0000000..1c8edaa
--- /dev/null
+++ b/mesecons/mesecons_delayer/textures/mesecons_delayer_sides_on.png
Binary files differ
diff --git a/mesecons/mesecons_detector/depends.txt b/mesecons/mesecons_detector/depends.txt
new file mode 100644
index 0000000..bc7b062
--- /dev/null
+++ b/mesecons/mesecons_detector/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+mesecons_materials
diff --git a/mesecons/mesecons_detector/doc/nodedetector/description.html b/mesecons/mesecons_detector/doc/nodedetector/description.html
new file mode 100644
index 0000000..be34fde
--- /dev/null
+++ b/mesecons/mesecons_detector/doc/nodedetector/description.html
@@ -0,0 +1,6 @@
+The node detector is a receptor. It changes its state when either any node
+or a specific node is detected. Right-click it to set a nodename to scan for.
+It can also receive digiline signals. You can either send "GET" and it will
+respond with the detected nodename or you can send any other string and it will
+set this string as the node to scan for.
+Nodenames must include the mod they reside in, so for instance default:dirt, not just dirt.
diff --git a/mesecons/mesecons_detector/doc/nodedetector/preview.png b/mesecons/mesecons_detector/doc/nodedetector/preview.png
new file mode 100644
index 0000000..1f78161
--- /dev/null
+++ b/mesecons/mesecons_detector/doc/nodedetector/preview.png
Binary files differ
diff --git a/mesecons/mesecons_detector/doc/nodedetector/recipe.png b/mesecons/mesecons_detector/doc/nodedetector/recipe.png
new file mode 100644
index 0000000..958c7e6
--- /dev/null
+++ b/mesecons/mesecons_detector/doc/nodedetector/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_detector/doc/objectdetector/description.html b/mesecons/mesecons_detector/doc/objectdetector/description.html
new file mode 100644
index 0000000..c8315e8
--- /dev/null
+++ b/mesecons/mesecons_detector/doc/objectdetector/description.html
@@ -0,0 +1,3 @@
+The object detector is a receptor. It changes its state when a player approaches.
+Right-click it to set a name to scan for.
+It can also receive digiline signals which are the name to scan for on the specified channel in the right-click menu.
diff --git a/mesecons/mesecons_detector/doc/objectdetector/preview.png b/mesecons/mesecons_detector/doc/objectdetector/preview.png
new file mode 100644
index 0000000..85c4dea
--- /dev/null
+++ b/mesecons/mesecons_detector/doc/objectdetector/preview.png
Binary files differ
diff --git a/mesecons/mesecons_detector/doc/objectdetector/recipe.png b/mesecons/mesecons_detector/doc/objectdetector/recipe.png
new file mode 100644
index 0000000..a1cee00
--- /dev/null
+++ b/mesecons/mesecons_detector/doc/objectdetector/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_detector/init.lua b/mesecons/mesecons_detector/init.lua
new file mode 100644
index 0000000..084535b
--- /dev/null
+++ b/mesecons/mesecons_detector/init.lua
@@ -0,0 +1,272 @@
+local GET_COMMAND = "GET"
+
+-- Object detector
+-- Detects players in a certain radius
+-- The radius can be specified in mesecons/settings.lua
+
+local object_detector_make_formspec = function (pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "size[9,2.5]" ..
+ "field[0.3, 0;9,2;scanname;Name of player to scan for (empty for any):;${scanname}]"..
+ "field[0.3,1.5;4,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
+ "button_exit[7,0.75;2,3;;Save]")
+end
+
+local object_detector_on_receive_fields = function(pos, formname, fields)
+ if not fields.scanname or not fields.digiline_channel then return end;
+
+ local meta = minetest.get_meta(pos)
+ meta:set_string("scanname", fields.scanname)
+ meta:set_string("digiline_channel", fields.digiline_channel)
+ object_detector_make_formspec(pos)
+end
+
+-- returns true if player was found, false if not
+local object_detector_scan = function (pos)
+ local objs = minetest.get_objects_inside_radius(pos, mesecon.setting("detector_radius", 6))
+ for k, obj in pairs(objs) do
+ local isname = obj:get_player_name() -- "" is returned if it is not a player; "" ~= nil!
+ local scanname = minetest.get_meta(pos):get_string("scanname")
+ if (isname == scanname and isname ~= "") or (isname ~= "" and scanname == "") then -- player with scanname found or not scanname specified
+ return true
+ end
+ end
+ return false
+end
+
+-- set player name when receiving a digiline signal on a specific channel
+local object_detector_digiline = {
+ effector = {
+ action = function (pos, node, channel, msg)
+ local meta = minetest.get_meta(pos)
+ local active_channel = meta:get_string("digiline_channel")
+ if channel == active_channel then
+ meta:set_string("scanname", msg)
+ object_detector_make_formspec(pos)
+ end
+ end,
+ }
+}
+
+minetest.register_node("mesecons_detector:object_detector_off", {
+ tiles = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png", "jeija_object_detector_off.png"},
+ paramtype = "light",
+ walkable = true,
+ groups = {cracky=3},
+ description="Player Detector",
+ mesecons = {receptor = {
+ state = mesecon.state.off,
+ rules = mesecon.rules.pplate
+ }},
+ on_construct = object_detector_make_formspec,
+ on_receive_fields = object_detector_on_receive_fields,
+ sounds = default.node_sound_stone_defaults(),
+ digiline = object_detector_digiline
+})
+
+minetest.register_node("mesecons_detector:object_detector_on", {
+ tiles = {"default_steel_block.png", "default_steel_block.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png", "jeija_object_detector_on.png"},
+ paramtype = "light",
+ walkable = true,
+ groups = {cracky=3,not_in_creative_inventory=1},
+ drop = 'mesecons_detector:object_detector_off',
+ mesecons = {receptor = {
+ state = mesecon.state.on,
+ rules = mesecon.rules.pplate
+ }},
+ on_construct = object_detector_make_formspec,
+ on_receive_fields = object_detector_on_receive_fields,
+ sounds = default.node_sound_stone_defaults(),
+ digiline = object_detector_digiline
+})
+
+minetest.register_craft({
+ output = 'mesecons_detector:object_detector_off',
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "default:steel_ingot"},
+ {"default:steel_ingot", "group:mesecon_conductor_craftable", "default:steel_ingot"},
+ }
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_detector:object_detector_off"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos)
+ if object_detector_scan(pos) then
+ minetest.swap_node(pos, {name = "mesecons_detector:object_detector_on"})
+ mesecon.receptor_on(pos, mesecon.rules.pplate)
+ end
+ end,
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_detector:object_detector_on"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos)
+ if not object_detector_scan(pos) then
+ minetest.swap_node(pos, {name = "mesecons_detector:object_detector_off"})
+ mesecon.receptor_off(pos, mesecon.rules.pplate)
+ end
+ end,
+})
+
+-- Node detector
+-- Detects the node in front of it
+
+local node_detector_make_formspec = function (pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "size[9,2.5]" ..
+ "field[0.3, 0;9,2;scanname;Name of node to scan for (empty for any):;${scanname}]"..
+ "field[0.3,1.5;4,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
+ "button_exit[7,0.75;2,3;;Save]")
+end
+
+local node_detector_on_receive_fields = function(pos, formname, fields)
+ if not fields.scanname or not fields.digiline_channel then return end;
+
+ local meta = minetest.get_meta(pos)
+ meta:set_string("scanname", fields.scanname)
+ meta:set_string("digiline_channel", fields.digiline_channel)
+ node_detector_make_formspec(pos)
+end
+
+-- returns true if player was found, false if not
+local node_detector_scan = function (pos)
+ if not pos then return end
+ local node = minetest.get_node_or_nil(pos)
+ if not node then return end
+ local scandir = minetest.facedir_to_dir(node.param2)
+ if not scandir then return end
+ local frontpos = vector.subtract(pos, scandir)
+ local frontnode = minetest.get_node(frontpos)
+ local meta = minetest.get_meta(pos)
+ return (frontnode.name == meta:get_string("scanname")) or
+ (frontnode.name ~= "air" and frontnode.name ~= "ignore" and meta:get_string("scanname") == "")
+end
+
+-- set player name when receiving a digiline signal on a specific channel
+local node_detector_digiline = {
+ effector = {
+ action = function (pos, node, channel, msg)
+ local meta = minetest.get_meta(pos)
+ local active_channel = meta:get_string("digiline_channel")
+ if channel == active_channel then
+ if msg == GET_COMMAND then
+ local frontpos = vector.subtract(pos, minetest.facedir_to_dir(node.param2))
+ local name = minetest.get_node(frontpos).name
+ digiline:receptor_send(pos, digiline.rules.default, channel, name)
+ else
+ meta:set_string("scanname", msg)
+ node_detector_make_formspec(pos)
+ end
+ end
+ end,
+ },
+ receptor = {}
+}
+
+minetest.register_node("mesecons_detector:node_detector_off", {
+ tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "jeija_node_detector_off.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ groups = {cracky=3},
+ description="Node Detector",
+ mesecons = {receptor = {
+ state = mesecon.state.off
+ }},
+ on_construct = node_detector_make_formspec,
+ on_receive_fields = node_detector_on_receive_fields,
+ after_place_node = function (pos, placer)
+ local placer_pos = placer:getpos()
+
+ --correct for the player's height
+ if placer:is_player() then placer_pos.y = placer_pos.y + 1.5 end
+
+ --correct for 6d facedir
+ if placer_pos then
+ local dir = {
+ x = pos.x - placer_pos.x,
+ y = pos.y - placer_pos.y,
+ z = pos.z - placer_pos.z
+ }
+ local node = minetest.get_node(pos)
+ node.param2 = minetest.dir_to_facedir(dir, true)
+ minetest.set_node(pos, node)
+ minetest.log("action", "real (6d) facedir: " .. node.param2)
+ end
+ end,
+ sounds = default.node_sound_stone_defaults(),
+ digiline = node_detector_digiline
+})
+
+minetest.register_node("mesecons_detector:node_detector_on", {
+ tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "jeija_node_detector_on.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ groups = {cracky=3,not_in_creative_inventory=1},
+ drop = 'mesecons_detector:node_detector_off',
+ mesecons = {receptor = {
+ state = mesecon.state.on
+ }},
+ on_construct = node_detector_make_formspec,
+ on_receive_fields = node_detector_on_receive_fields,
+ after_place_node = function (pos, placer)
+ local placer_pos = placer:getpos()
+
+ --correct for the player's height
+ if placer:is_player() then placer_pos.y = placer_pos.y + 1.5 end
+
+ --correct for 6d facedir
+ if placer_pos then
+ local dir = {
+ x = pos.x - placer_pos.x,
+ y = pos.y - placer_pos.y,
+ z = pos.z - placer_pos.z
+ }
+ local node = minetest.get_node(pos)
+ node.param2 = minetest.dir_to_facedir(dir, true)
+ minetest.set_node(pos, node)
+ minetest.log("action", "real (6d) facedir: " .. node.param2)
+ end
+ end,
+ sounds = default.node_sound_stone_defaults(),
+ digiline = node_detector_digiline
+})
+
+minetest.register_craft({
+ output = 'mesecons_detector:node_detector_off',
+ recipe = {
+ {"default:steel_ingot", "group:mesecon_conductor_craftable", "default:steel_ingot"},
+ {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ }
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_detector:node_detector_off"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node)
+ if node_detector_scan(pos) then
+ minetest.swap_node(pos, {name = "mesecons_detector:node_detector_on", param2 = node.param2})
+ mesecon.receptor_on(pos)
+ end
+ end,
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_detector:node_detector_on"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node)
+ if not node_detector_scan(pos) then
+ minetest.swap_node(pos, {name = "mesecons_detector:node_detector_off", param2 = node.param2})
+ mesecon.receptor_off(pos)
+ end
+ end,
+})
diff --git a/mesecons/mesecons_detector/textures/jeija_node_detector_off.png b/mesecons/mesecons_detector/textures/jeija_node_detector_off.png
new file mode 100644
index 0000000..6d130ad
--- /dev/null
+++ b/mesecons/mesecons_detector/textures/jeija_node_detector_off.png
Binary files differ
diff --git a/mesecons/mesecons_detector/textures/jeija_node_detector_on.png b/mesecons/mesecons_detector/textures/jeija_node_detector_on.png
new file mode 100644
index 0000000..926a9d1
--- /dev/null
+++ b/mesecons/mesecons_detector/textures/jeija_node_detector_on.png
Binary files differ
diff --git a/mesecons/mesecons_detector/textures/jeija_object_detector_off.png b/mesecons/mesecons_detector/textures/jeija_object_detector_off.png
new file mode 100644
index 0000000..825d78f
--- /dev/null
+++ b/mesecons/mesecons_detector/textures/jeija_object_detector_off.png
Binary files differ
diff --git a/mesecons/mesecons_detector/textures/jeija_object_detector_on.png b/mesecons/mesecons_detector/textures/jeija_object_detector_on.png
new file mode 100644
index 0000000..96f8ba3
--- /dev/null
+++ b/mesecons/mesecons_detector/textures/jeija_object_detector_on.png
Binary files differ
diff --git a/mesecons/mesecons_doors/depends.txt b/mesecons/mesecons_doors/depends.txt
new file mode 100644
index 0000000..ed2fcd8
--- /dev/null
+++ b/mesecons/mesecons_doors/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+doors
diff --git a/mesecons/mesecons_doors/init.lua b/mesecons/mesecons_doors/init.lua
new file mode 100644
index 0000000..7346128
--- /dev/null
+++ b/mesecons/mesecons_doors/init.lua
@@ -0,0 +1,84 @@
+-- Modified, from minetest_game/mods/doors/init.lua
+local function on_rightclick(pos, dir, check_name, replace, replace_dir, params)
+ pos.y = pos.y + dir
+ if not minetest.get_node(pos).name == check_name then
+ return
+ end
+ local p2 = minetest.get_node(pos).param2
+ p2 = params[p2 + 1]
+
+ minetest.swap_node(pos, {name = replace_dir, param2 = p2})
+
+ pos.y = pos.y - dir
+ minetest.swap_node(pos, {name = replace, param2 = p2})
+
+ if (minetest.get_meta(pos):get_int("right") ~= 0) == (params[1] ~= 3) then
+ minetest.sound_play("doors_door_close", {pos = pos, gain = 0.3, max_hear_distance = 10})
+ else
+ minetest.sound_play("doors_door_open", {pos = pos, gain = 0.3, max_hear_distance = 10})
+ end
+end
+
+local function meseconify_door(name)
+ if not minetest.registered_items[name] then return end
+
+ local function toggle_state1 (pos, node)
+ on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0})
+ end
+
+ local function toggle_state2 (pos, node)
+ on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2})
+ end
+
+ minetest.override_item(name.."_b_1", {
+ mesecons = {effector = {
+ action_on = toggle_state1,
+ action_off = toggle_state1,
+ rules = mesecon.rules.pplate
+ }},
+ })
+
+ minetest.override_item(name.."_b_2", {
+ mesecons = {effector = {
+ action_on = toggle_state2,
+ action_off = toggle_state2,
+ rules = mesecon.rules.pplate
+ }},
+ })
+end
+
+meseconify_door("doors:door_wood")
+meseconify_door("doors:door_steel")
+meseconify_door("doors:door_glass")
+meseconify_door("doors:door_obsidian_glass")
+
+-- Trapdoor
+local function trapdoor_switch(pos, node)
+ local state = minetest.get_meta(pos):get_int("state")
+
+ if state == 1 then
+ minetest.sound_play("doors_door_close", {pos = pos, gain = 0.3, max_hear_distance = 10})
+ minetest.set_node(pos, {name="doors:trapdoor", param2 = node.param2})
+ else
+ minetest.sound_play("doors_door_open", {pos = pos, gain = 0.3, max_hear_distance = 10})
+ minetest.set_node(pos, {name="doors:trapdoor_open", param2 = node.param2})
+ end
+
+ minetest.get_meta(pos):set_int("state", state == 1 and 0 or 1)
+end
+
+if minetest.registered_nodes["doors:trapdoor"] then
+ minetest.override_item("doors:trapdoor", {
+ mesecons = {effector = {
+ action_on = trapdoor_switch,
+ action_off = trapdoor_switch
+ }},
+ })
+
+ minetest.override_item("doors:trapdoor_open", {
+ mesecons = {effector = {
+ action_on = trapdoor_switch,
+ action_off = trapdoor_switch
+ }},
+ })
+end
diff --git a/mesecons/mesecons_extrawires/corner.lua b/mesecons/mesecons_extrawires/corner.lua
new file mode 100644
index 0000000..1e29870
--- /dev/null
+++ b/mesecons/mesecons_extrawires/corner.lua
@@ -0,0 +1,83 @@
+local corner_nodebox = {
+ type = "fixed",
+ fixed = {{ -16/32-0.001, -17/32, -3/32, 0, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32+0.001, 3/32, -13/32, 3/32}}
+}
+
+local corner_selectionbox = {
+ type = "fixed",
+ fixed = { -16/32-0.001, -18/32, -16/32, 5/32, -12/32, 5/32 },
+}
+
+local corner_get_rules = function (node)
+ local rules =
+ {{x = 1, y = 0, z = 0},
+ {x = 0, y = 0, z = -1}}
+
+ for i = 0, node.param2 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+
+ return rules
+end
+
+minetest.register_node("mesecons_extrawires:corner_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_insulated_wire_curved_tb_on.png",
+ "jeija_insulated_wire_curved_tb_on.png^[transformR270",
+ "jeija_insulated_wire_sides_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_sides_on.png",
+ "jeija_insulated_wire_ends_on.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = corner_selectionbox,
+ node_box = corner_nodebox,
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ drop = "mesecons_extrawires:corner_off",
+ mesecons = {conductor =
+ {
+ state = mesecon.state.on,
+ rules = corner_get_rules,
+ offstate = "mesecons_extrawires:corner_off"
+ }}
+})
+
+minetest.register_node("mesecons_extrawires:corner_off", {
+ drawtype = "nodebox",
+ description = "Mesecon Corner",
+ tiles = {
+ "jeija_insulated_wire_curved_tb_off.png",
+ "jeija_insulated_wire_curved_tb_off.png^[transformR270",
+ "jeija_insulated_wire_sides_off.png",
+ "jeija_insulated_wire_ends_off.png",
+ "jeija_insulated_wire_sides_off.png",
+ "jeija_insulated_wire_ends_off.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = corner_selectionbox,
+ node_box = corner_nodebox,
+ groups = {dig_immediate = 3},
+ mesecons = {conductor =
+ {
+ state = mesecon.state.off,
+ rules = corner_get_rules,
+ onstate = "mesecons_extrawires:corner_on"
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_extrawires:corner_off 3",
+ recipe = {
+ {"", "", ""},
+ {"mesecons_insulated:insulated_off", "mesecons_insulated:insulated_off", ""},
+ {"", "mesecons_insulated:insulated_off", ""},
+ }
+})
diff --git a/mesecons/mesecons_extrawires/crossover.lua b/mesecons/mesecons_extrawires/crossover.lua
new file mode 100644
index 0000000..4ecfc12
--- /dev/null
+++ b/mesecons/mesecons_extrawires/crossover.lua
@@ -0,0 +1,176 @@
+function crossover_get_rules(node)
+ return {
+ {--first wire
+ {x=-1,y=0,z=0},
+ {x=1,y=0,z=0},
+ },
+ {--second wire
+ {x=0,y=0,z=-1},
+ {x=0,y=0,z=1},
+ },
+ }
+end
+
+local crossover_states = {
+ "mesecons_extrawires:crossover_off",
+ "mesecons_extrawires:crossover_01",
+ "mesecons_extrawires:crossover_10",
+ "mesecons_extrawires:crossover_on",
+}
+
+minetest.register_node("mesecons_extrawires:crossover_off", {
+ description = "Insulated Crossover",
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_insulated_wire_crossing_tb_off.png",
+ "jeija_insulated_wire_crossing_tb_off.png",
+ "jeija_insulated_wire_ends_off.png"
+ },
+ paramtype = "light",
+ walkable = false,
+ stack_max = 99,
+ selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
+ { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
+ { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
+ { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
+ { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
+ },
+ },
+ groups = {dig_immediate=3, mesecon=3},
+ mesecons = {
+ conductor = {
+ states = crossover_states,
+ rules = crossover_get_rules(),
+ }
+ },
+})
+
+minetest.register_node("mesecons_extrawires:crossover_01", {
+ description = "You hacker you!",
+ drop = "mesecons_extrawires:crossover_off",
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_insulated_wire_crossing_tb_01.png",
+ "jeija_insulated_wire_crossing_tb_01.png",
+ "jeija_insulated_wire_ends_01x.png",
+ "jeija_insulated_wire_ends_01x.png",
+ "jeija_insulated_wire_ends_01z.png",
+ "jeija_insulated_wire_ends_01z.png"
+ },
+ paramtype = "light",
+ walkable = false,
+ stack_max = 99,
+ selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
+ { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
+ { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
+ { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
+ { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
+ },
+ },
+ groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
+ mesecons = {
+ conductor = {
+ states = crossover_states,
+ rules = crossover_get_rules(),
+ }
+ },
+})
+
+minetest.register_node("mesecons_extrawires:crossover_10", {
+ description = "You hacker you!",
+ drop = "mesecons_extrawires:crossover_off",
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_insulated_wire_crossing_tb_10.png",
+ "jeija_insulated_wire_crossing_tb_10.png",
+ "jeija_insulated_wire_ends_10x.png",
+ "jeija_insulated_wire_ends_10x.png",
+ "jeija_insulated_wire_ends_10z.png",
+ "jeija_insulated_wire_ends_10z.png"
+ },
+ paramtype = "light",
+ walkable = false,
+ stack_max = 99,
+ selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
+ { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
+ { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
+ { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
+ { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
+ },
+ },
+ groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
+ mesecons = {
+ conductor = {
+ states = crossover_states,
+ rules = crossover_get_rules(),
+ }
+ },
+})
+
+minetest.register_node("mesecons_extrawires:crossover_on", {
+ description = "You hacker you!",
+ drop = "mesecons_extrawires:crossover_off",
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_insulated_wire_crossing_tb_on.png",
+ "jeija_insulated_wire_crossing_tb_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_ends_on.png"
+ },
+ paramtype = "light",
+ walkable = false,
+ stack_max = 99,
+ selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
+ { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
+ { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
+ { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
+ { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
+ },
+ },
+ groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
+ mesecons = {
+ conductor = {
+ states = crossover_states,
+ rules = crossover_get_rules(),
+ }
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "mesecons_extrawires:crossover_off",
+ recipe = {
+ "mesecons_insulated:insulated_off",
+ "mesecons_insulated:insulated_off",
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "mesecons_insulated:insulated_off 2",
+ recipe = {
+ "mesecons_extrawires:crossover_off",
+ },
+})
diff --git a/mesecons/mesecons_extrawires/depends.txt b/mesecons/mesecons_extrawires/depends.txt
new file mode 100644
index 0000000..aca967d
--- /dev/null
+++ b/mesecons/mesecons_extrawires/depends.txt
@@ -0,0 +1,2 @@
+default
+mesecons
diff --git a/mesecons/mesecons_extrawires/doc/corner/description.html b/mesecons/mesecons_extrawires/doc/corner/description.html
new file mode 100644
index 0000000..92de8b0
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/corner/description.html
@@ -0,0 +1 @@
+Insulated corners are conductors that only conduct between the inputs (also not up or down). When placing they always point to the left in direction of your vision.
diff --git a/mesecons/mesecons_extrawires/doc/corner/preview.png b/mesecons/mesecons_extrawires/doc/corner/preview.png
new file mode 100644
index 0000000..9713229
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/corner/preview.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/corner/recipe.png b/mesecons/mesecons_extrawires/doc/corner/recipe.png
new file mode 100644
index 0000000..ac85b01
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/corner/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/crossing/description.html b/mesecons/mesecons_extrawires/doc/crossing/description.html
new file mode 100644
index 0000000..aa4cf25
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/crossing/description.html
@@ -0,0 +1 @@
+Insulated crossing are conductors that conduct two signals between the opposing sides, the signals are insulated to each other.
diff --git a/mesecons/mesecons_extrawires/doc/crossing/preview.png b/mesecons/mesecons_extrawires/doc/crossing/preview.png
new file mode 100644
index 0000000..66aaa05
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/crossing/preview.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/crossing/recipe.png b/mesecons/mesecons_extrawires/doc/crossing/recipe.png
new file mode 100644
index 0000000..ac37401
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/crossing/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/mese/description.html b/mesecons/mesecons_extrawires/doc/mese/description.html
new file mode 100644
index 0000000..1a14864
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/mese/description.html
@@ -0,0 +1 @@
+The basic prerequesite for mesecons, can be crafted into wires and other stuff. Have a look at the <a href="http://wiki.minetest.net/Mese">Minetest Wiki</a> for more information. Mese is a conductor. It conducts in all six directions: Up/Down/Left/Right/Forward/Backward
diff --git a/mesecons/mesecons_extrawires/doc/mese/preview.png b/mesecons/mesecons_extrawires/doc/mese/preview.png
new file mode 100644
index 0000000..3ce0ea4
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/mese/preview.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/mese/recipe.png b/mesecons/mesecons_extrawires/doc/mese/recipe.png
new file mode 100644
index 0000000..904cf0b
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/mese/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/tjunction/description.html b/mesecons/mesecons_extrawires/doc/tjunction/description.html
new file mode 100644
index 0000000..f655a5d
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/tjunction/description.html
@@ -0,0 +1 @@
+Insulated T-Junctions are conductors that only conduct between the inputs (also not up or down).
diff --git a/mesecons/mesecons_extrawires/doc/tjunction/preview.png b/mesecons/mesecons_extrawires/doc/tjunction/preview.png
new file mode 100644
index 0000000..4dec841
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/tjunction/preview.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/tjunction/recipe.png b/mesecons/mesecons_extrawires/doc/tjunction/recipe.png
new file mode 100644
index 0000000..8602941
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/tjunction/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/vertical/description.html b/mesecons/mesecons_extrawires/doc/vertical/description.html
new file mode 100644
index 0000000..df09b94
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/vertical/description.html
@@ -0,0 +1 @@
+Vertical Mesecons only conduct up and down. Plates appear at the ends, at that place they also conduct to the side.
diff --git a/mesecons/mesecons_extrawires/doc/vertical/preview.png b/mesecons/mesecons_extrawires/doc/vertical/preview.png
new file mode 100644
index 0000000..aad6ea8
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/vertical/preview.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/doc/vertical/recipe.png b/mesecons/mesecons_extrawires/doc/vertical/recipe.png
new file mode 100644
index 0000000..83bc498
--- /dev/null
+++ b/mesecons/mesecons_extrawires/doc/vertical/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_extrawires/init.lua b/mesecons/mesecons_extrawires/init.lua
new file mode 100644
index 0000000..b22f2e5
--- /dev/null
+++ b/mesecons/mesecons_extrawires/init.lua
@@ -0,0 +1,5 @@
+dofile(minetest.get_modpath("mesecons_extrawires").."/crossover.lua");
+dofile(minetest.get_modpath("mesecons_extrawires").."/tjunction.lua");
+dofile(minetest.get_modpath("mesecons_extrawires").."/corner.lua");
+dofile(minetest.get_modpath("mesecons_extrawires").."/vertical.lua");
+dofile(minetest.get_modpath("mesecons_extrawires").."/mesewire.lua");
diff --git a/mesecons/mesecons_extrawires/mesewire.lua b/mesecons/mesecons_extrawires/mesewire.lua
new file mode 100644
index 0000000..150178c
--- /dev/null
+++ b/mesecons/mesecons_extrawires/mesewire.lua
@@ -0,0 +1,30 @@
+local mesewire_rules =
+{
+ {x = 1, y = 0, z = 0},
+ {x =-1, y = 0, z = 0},
+ {x = 0, y = 1, z = 0},
+ {x = 0, y =-1, z = 0},
+ {x = 0, y = 0, z = 1},
+ {x = 0, y = 0, z =-1},
+}
+
+minetest.override_item("default:mese", {
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ onstate = "mesecons_extrawires:mese_powered",
+ rules = mesewire_rules
+ }}
+})
+
+minetest.register_node("mesecons_extrawires:mese_powered", {
+ tiles = {minetest.registered_nodes["default:mese"].tiles[1].."^[brighten"},
+ is_ground_content = true,
+ groups = {cracky=1, not_in_creative_inventory = 1},
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ offstate = "default:mese",
+ rules = mesewire_rules
+ }},
+ drop = "default:mese"
+})
diff --git a/mesecons/mesecons_extrawires/tjunction.lua b/mesecons/mesecons_extrawires/tjunction.lua
new file mode 100644
index 0000000..1091e83
--- /dev/null
+++ b/mesecons/mesecons_extrawires/tjunction.lua
@@ -0,0 +1,84 @@
+local tjunction_nodebox = {
+ type = "fixed",
+ fixed = {{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
+ { -3/32, -17/32, -16/32+0.001, 3/32, -13/32, -3/32},}
+}
+
+local tjunction_selectionbox = {
+ type = "fixed",
+ fixed = { -16/32-0.001, -18/32, -16/32, 16/32+0.001, -12/32, 7/32 },
+}
+
+local tjunction_get_rules = function (node)
+ local rules =
+ {{x = 0, y = 0, z = 1},
+ {x = 1, y = 0, z = 0},
+ {x = 0, y = 0, z = -1}}
+
+ for i = 0, node.param2 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+
+ return rules
+end
+
+minetest.register_node("mesecons_extrawires:tjunction_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_insulated_wire_tjunction_tb_on.png",
+ "jeija_insulated_wire_tjunction_tb_on.png^[transformR180",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_sides_on.png",
+ "jeija_insulated_wire_ends_on.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = tjunction_selectionbox,
+ node_box = tjunction_nodebox,
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ drop = "mesecons_extrawires:tjunction_off",
+ mesecons = {conductor =
+ {
+ state = mesecon.state.on,
+ rules = tjunction_get_rules,
+ offstate = "mesecons_extrawires:tjunction_off"
+ }}
+})
+
+minetest.register_node("mesecons_extrawires:tjunction_off", {
+ drawtype = "nodebox",
+ description = "T-junction",
+ tiles = {
+ "jeija_insulated_wire_tjunction_tb_off.png",
+ "jeija_insulated_wire_tjunction_tb_off.png^[transformR180",
+ "jeija_insulated_wire_ends_off.png",
+ "jeija_insulated_wire_ends_off.png",
+ "jeija_insulated_wire_sides_off.png",
+ "jeija_insulated_wire_ends_off.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = tjunction_selectionbox,
+ node_box = tjunction_nodebox,
+ groups = {dig_immediate = 3},
+ mesecons = {conductor =
+ {
+ state = mesecon.state.off,
+ rules = tjunction_get_rules,
+ onstate = "mesecons_extrawires:tjunction_on"
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_extrawires:tjunction_off 3",
+ recipe = {
+ {"", "", ""},
+ {"mesecons_insulated:insulated_off", "mesecons_insulated:insulated_off", "mesecons_insulated:insulated_off"},
+ {"", "mesecons_insulated:insulated_off", ""},
+ }
+})
diff --git a/mesecons/mesecons_extrawires/vertical.lua b/mesecons/mesecons_extrawires/vertical.lua
new file mode 100644
index 0000000..cac2ae2
--- /dev/null
+++ b/mesecons/mesecons_extrawires/vertical.lua
@@ -0,0 +1,183 @@
+local vertical_box = {
+ type = "fixed",
+ fixed = {-1/16, -8/16, -1/16, 1/16, 8/16, 1/16}
+}
+
+local top_box = {
+ type = "fixed",
+ fixed = {{-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}}
+}
+
+local bottom_box = {
+ type = "fixed",
+ fixed = {
+ {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16},
+ {-1/16, -7/16, -1/16, 1/16, 8/16, 1/16},
+ }
+}
+
+local vertical_rules = {
+ {x=0, y=1, z=0},
+ {x=0, y=-1, z=0}
+}
+
+local top_rules = {
+ {x=1,y=0, z=0},
+ {x=-1,y=0, z=0},
+ {x=0,y=0, z=1},
+ {x=0,y=0, z=-1},
+ {x=0,y=-1, z=0}
+}
+
+local bottom_rules = {
+ {x=1, y=0, z=0},
+ {x=-1, y=0, z=0},
+ {x=0, y=0, z=1},
+ {x=0, y=0, z=-1},
+ {x=0, y=1, z=0},
+ {x=0, y=2, z=0} -- receive power from pressure plate / detector / ... 2 nodes above
+}
+
+local vertical_updatepos = function (pos)
+ local node = minetest.get_node(pos)
+ if minetest.registered_nodes[node.name]
+ and minetest.registered_nodes[node.name].is_vertical_conductor then
+ local node_above = minetest.get_node(mesecon.addPosRule(pos, vertical_rules[1]))
+ local node_below = minetest.get_node(mesecon.addPosRule(pos, vertical_rules[2]))
+ local namestate = minetest.registered_nodes[node.name].vertical_conductor_state
+
+ local above = minetest.registered_nodes[node_above.name]
+ and minetest.registered_nodes[node_above.name].is_vertical_conductor
+ local below = minetest.registered_nodes[node_below.name]
+ and minetest.registered_nodes[node_below.name].is_vertical_conductor
+
+ local basename = "mesecons_extrawires:vertical_"
+ if above and below then -- above and below: vertical mesecon
+ minetest.add_node(pos, {name = basename .. namestate})
+ elseif above and not below then -- above only: bottom
+ minetest.add_node(pos, {name = basename .. "bottom_" .. namestate})
+ elseif not above and below then -- below only: top
+ minetest.add_node(pos, {name = basename .. "top_" .. namestate})
+ else -- no vertical wire above, no vertical wire below: use bottom
+ minetest.add_node(pos, {name = basename .. "bottom_" .. namestate})
+ end
+ mesecon.update_autoconnect(pos)
+ end
+end
+
+local vertical_update = function (pos, node)
+ vertical_updatepos(pos) -- this one
+ vertical_updatepos(mesecon.addPosRule(pos, vertical_rules[1])) -- above
+ vertical_updatepos(mesecon.addPosRule(pos, vertical_rules[2])) -- below
+end
+
+-- Vertical wire
+mesecon.register_node("mesecons_extrawires:vertical", {
+ description = "Vertical mesecon",
+ drawtype = "nodebox",
+ walkable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ selection_box = vertical_box,
+ node_box = vertical_box,
+ is_vertical_conductor = true,
+ drop = "mesecons_extrawires:vertical_off",
+ after_place_node = vertical_update,
+ after_dig_node = vertical_update
+},{
+ tiles = {"mesecons_wire_off.png"},
+ groups = {dig_immediate=3},
+ vertical_conductor_state = "off",
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ onstate = "mesecons_extrawires:vertical_on",
+ rules = vertical_rules,
+ }}
+},{
+ tiles = {"mesecons_wire_on.png"},
+ groups = {dig_immediate=3, not_in_creative_inventory=1},
+ vertical_conductor_state = "on",
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ offstate = "mesecons_extrawires:vertical_off",
+ rules = vertical_rules,
+ }}
+})
+
+-- Vertical wire top
+mesecon.register_node("mesecons_extrawires:vertical_top", {
+ description = "Vertical mesecon",
+ drawtype = "nodebox",
+ walkable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {dig_immediate=3, not_in_creative_inventory=1},
+ selection_box = top_box,
+ node_box = top_box,
+ is_vertical_conductor = true,
+ drop = "mesecons_extrawires:vertical_off",
+ after_place_node = vertical_update,
+ after_dig_node = vertical_update
+},{
+ tiles = {"mesecons_wire_off.png"},
+ vertical_conductor_state = "off",
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ onstate = "mesecons_extrawires:vertical_top_on",
+ rules = top_rules,
+ }}
+},{
+ tiles = {"mesecons_wire_on.png"},
+ vertical_conductor_state = "on",
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ offstate = "mesecons_extrawires:vertical_top_off",
+ rules = top_rules,
+ }}
+})
+
+-- Vertical wire bottom
+mesecon.register_node("mesecons_extrawires:vertical_bottom", {
+ description = "Vertical mesecon",
+ drawtype = "nodebox",
+ walkable = false,
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ selection_box = bottom_box,
+ node_box = bottom_box,
+ is_vertical_conductor = true,
+ drop = "mesecons_extrawires:vertical_off",
+ after_place_node = vertical_update,
+ after_dig_node = vertical_update
+},{
+ tiles = {"mesecons_wire_off.png"},
+ vertical_conductor_state = "off",
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ onstate = "mesecons_extrawires:vertical_bottom_on",
+ rules = bottom_rules,
+ }}
+},{
+ tiles = {"mesecons_wire_on.png"},
+ vertical_conductor_state = "on",
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ offstate = "mesecons_extrawires:vertical_bottom_off",
+ rules = bottom_rules,
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_extrawires:vertical_off 3",
+ recipe = {
+ {"mesecons:wire_00000000_off"},
+ {"mesecons:wire_00000000_off"},
+ {"mesecons:wire_00000000_off"}
+ }
+})
+
+minetest.register_craft({
+ output = "mesecons:wire_00000000_off",
+ recipe = {{"mesecons_extrawires:vertical_off"}}
+})
diff --git a/mesecons/mesecons_gates/depends.txt b/mesecons/mesecons_gates/depends.txt
new file mode 100644
index 0000000..f3e0392
--- /dev/null
+++ b/mesecons/mesecons_gates/depends.txt
@@ -0,0 +1,6 @@
+mesecons
+mesecons_microcontroller
+mesecons_delayer
+
+mesecons_torch
+mesecons_materials
diff --git a/mesecons/mesecons_gates/doc/and/description.html b/mesecons/mesecons_gates/doc/and/description.html
new file mode 100644
index 0000000..eafbeda
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/and/description.html
@@ -0,0 +1 @@
+And gates power their output if both inputs (from left and right) are powered.
diff --git a/mesecons/mesecons_gates/doc/and/preview.png b/mesecons/mesecons_gates/doc/and/preview.png
new file mode 100644
index 0000000..b2b5301
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/and/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/and/recipe.png b/mesecons/mesecons_gates/doc/and/recipe.png
new file mode 100644
index 0000000..ae6bf63
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/and/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/diode/description.html b/mesecons/mesecons_gates/doc/diode/description.html
new file mode 100644
index 0000000..174fd64
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/diode/description.html
@@ -0,0 +1 @@
+Mesecon diodes, just like real ones, only transfer power (signals) in one direction only.
diff --git a/mesecons/mesecons_gates/doc/diode/preview.png b/mesecons/mesecons_gates/doc/diode/preview.png
new file mode 100644
index 0000000..ced541b
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/diode/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/diode/recipe.png b/mesecons/mesecons_gates/doc/diode/recipe.png
new file mode 100644
index 0000000..71086bf
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/diode/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/nand/description.html b/mesecons/mesecons_gates/doc/nand/description.html
new file mode 100644
index 0000000..a520fd2
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/nand/description.html
@@ -0,0 +1 @@
+Nand gates do not power their output if both inputs (from left and right) are powered, but power it in every other case.
diff --git a/mesecons/mesecons_gates/doc/nand/preview.png b/mesecons/mesecons_gates/doc/nand/preview.png
new file mode 100644
index 0000000..d8db780
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/nand/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/nand/recipe.png b/mesecons/mesecons_gates/doc/nand/recipe.png
new file mode 100644
index 0000000..e6118b3
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/nand/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/nor/description.html b/mesecons/mesecons_gates/doc/nor/description.html
new file mode 100644
index 0000000..cfcd4c0
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/nor/description.html
@@ -0,0 +1 @@
+Nor gates only power their output if none of their two inputs is powered. They are basically or gates with a not gate at their output.
diff --git a/mesecons/mesecons_gates/doc/nor/preview.png b/mesecons/mesecons_gates/doc/nor/preview.png
new file mode 100644
index 0000000..b6d2781
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/nor/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/nor/recipe.png b/mesecons/mesecons_gates/doc/nor/recipe.png
new file mode 100644
index 0000000..a2063c7
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/nor/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/not/description.html b/mesecons/mesecons_gates/doc/not/description.html
new file mode 100644
index 0000000..8bd6795
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/not/description.html
@@ -0,0 +1 @@
+Not gates invert signals, just like a mesecon torch does, but faster. The input is at the opposite side of the output.
diff --git a/mesecons/mesecons_gates/doc/not/preview.png b/mesecons/mesecons_gates/doc/not/preview.png
new file mode 100644
index 0000000..4a33cd1
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/not/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/not/recipe.png b/mesecons/mesecons_gates/doc/not/recipe.png
new file mode 100644
index 0000000..ee1c0d6
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/not/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/or/description.html b/mesecons/mesecons_gates/doc/or/description.html
new file mode 100644
index 0000000..0a74abd
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/or/description.html
@@ -0,0 +1 @@
+Or gates power their output if either of their inputs (or both) are powered. You could basically get the same behaviour with two diodes, but or gates save some space.
diff --git a/mesecons/mesecons_gates/doc/or/preview.png b/mesecons/mesecons_gates/doc/or/preview.png
new file mode 100644
index 0000000..b7a8cdc
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/or/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/or/recipe.png b/mesecons/mesecons_gates/doc/or/recipe.png
new file mode 100644
index 0000000..b94169d
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/or/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/xor/description.html b/mesecons/mesecons_gates/doc/xor/description.html
new file mode 100644
index 0000000..f52f3fc
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/xor/description.html
@@ -0,0 +1 @@
+XOR gates power their output if only one input is powered, they're off if either both or none of the inputs is powered.
diff --git a/mesecons/mesecons_gates/doc/xor/preview.png b/mesecons/mesecons_gates/doc/xor/preview.png
new file mode 100644
index 0000000..3d3941e
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/xor/preview.png
Binary files differ
diff --git a/mesecons/mesecons_gates/doc/xor/recipe.png b/mesecons/mesecons_gates/doc/xor/recipe.png
new file mode 100644
index 0000000..1e129bf
--- /dev/null
+++ b/mesecons/mesecons_gates/doc/xor/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_gates/init.lua b/mesecons/mesecons_gates/init.lua
new file mode 100644
index 0000000..f3d6f09
--- /dev/null
+++ b/mesecons/mesecons_gates/init.lua
@@ -0,0 +1,134 @@
+local nodebox = {
+ type = "fixed",
+ fixed = {{-8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }},
+}
+
+local function gate_rotate_rules(node, rules)
+ for rotations = 0, node.param2 - 1 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+ return rules
+end
+
+local function gate_get_output_rules(node)
+ return gate_rotate_rules(node, {{x=1, y=0, z=0}})
+end
+
+local function gate_get_input_rules_oneinput(node)
+ return gate_rotate_rules(node, {{x=-1, y=0, z=0}})
+end
+
+local function gate_get_input_rules_twoinputs(node)
+ return gate_rotate_rules(node, {{x=0, y=0, z=1, name="input1"},
+ {x=0, y=0, z=-1, name="input2"}})
+end
+
+local function set_gate(pos, node, state)
+ local gate = minetest.registered_nodes[node.name]
+
+ if mesecon.do_overheat(pos) then
+ minetest.remove_node(pos)
+ mesecon.receptor_off(pos, gate_get_output_rules(node))
+ minetest.add_item(pos, gate.drop)
+ elseif state then
+ minetest.swap_node(pos, {name = gate.onstate, param2=node.param2})
+ mesecon.receptor_on(pos, gate_get_output_rules(node))
+ else
+ minetest.swap_node(pos, {name = gate.offstate, param2=node.param2})
+ mesecon.receptor_off(pos, gate_get_output_rules(node))
+ end
+end
+
+local function update_gate(pos, node, link, newstate)
+ local gate = minetest.registered_nodes[node.name]
+
+ if gate.inputnumber == 1 then
+ set_gate(pos, node, gate.assess(newstate == "on"))
+ elseif gate.inputnumber == 2 then
+ local meta = minetest.get_meta(pos)
+ meta:set_int(link.name, newstate == "on" and 1 or 0)
+
+ local val1 = meta:get_int("input1") == 1
+ local val2 = meta:get_int("input2") == 1
+ set_gate(pos, node, gate.assess(val1, val2))
+ end
+end
+
+function register_gate(name, inputnumber, assess, recipe)
+ local get_inputrules = inputnumber == 2 and gate_get_input_rules_twoinputs or
+ gate_get_input_rules_oneinput
+ local description = "Mesecons Logic Gate: "..name
+
+ local basename = "mesecons_gates:"..name
+ mesecon.register_node(basename, {
+ description = description,
+ inventory_image = "jeija_gate_off.png^jeija_gate_"..name..".png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ drop = basename.."_off",
+ selection_box = nodebox,
+ node_box = nodebox,
+ walkable = true,
+ sounds = default.node_sound_stone_defaults(),
+ assess = assess,
+ onstate = basename.."_on",
+ offstate = basename.."_off",
+ inputnumber = inputnumber
+ },{
+ tiles = {"jeija_microcontroller_bottom.png^".."jeija_gate_off.png^"..
+ "jeija_gate_"..name..".png"},
+ groups = {dig_immediate = 2, overheat = 1},
+ mesecons = { receptor = {
+ state = "off",
+ rules = gate_get_output_rules
+ }, effector = {
+ rules = get_inputrules,
+ action_change = update_gate
+ }}
+ },{
+ tiles = {"jeija_microcontroller_bottom.png^".."jeija_gate_on.png^"..
+ "jeija_gate_"..name..".png"},
+ groups = {dig_immediate = 2, not_in_creative_inventory = 1, overheat = 1},
+ mesecons = { receptor = {
+ state = "on",
+ rules = gate_get_output_rules
+ }, effector = {
+ rules = get_inputrules,
+ action_change = update_gate
+ }}
+ })
+
+ minetest.register_craft({output = basename.."_off", recipe = recipe})
+end
+
+register_gate("diode", 1, function (input) return input end,
+ {{"mesecons:mesecon", "mesecons_torch:mesecon_torch_on", "mesecons_torch:mesecon_torch_on"}})
+
+register_gate("not", 1, function (input) return not input end,
+ {{"mesecons:mesecon", "mesecons_torch:mesecon_torch_on", "mesecons:mesecon"}})
+
+register_gate("and", 2, function (val1, val2) return val1 and val2 end,
+ {{"mesecons:mesecon", "", ""},
+ {"", "mesecons_materials:silicon", "mesecons:mesecon"},
+ {"mesecons:mesecon", "", ""}})
+
+register_gate("nand", 2, function (val1, val2) return not (val1 and val2) end,
+ {{"mesecons:mesecon", "", ""},
+ {"", "mesecons_materials:silicon", "mesecons_torch:mesecon_torch_on"},
+ {"mesecons:mesecon", "", ""}})
+
+register_gate("xor", 2, function (val1, val2) return (val1 or val2) and not (val1 and val2) end,
+ {{"mesecons:mesecon", "", ""},
+ {"", "mesecons_materials:silicon", "mesecons_materials:silicon"},
+ {"mesecons:mesecon", "", ""}})
+
+register_gate("nor", 2, function (val1, val2) return not (val1 or val2) end,
+ {{"mesecons:mesecon", "", ""},
+ {"", "mesecons:mesecon", "mesecons_torch:mesecon_torch_on"},
+ {"mesecons:mesecon", "", ""}})
+
+register_gate("or", 2, function (val1, val2) return (val1 or val2) end,
+ {{"mesecons:mesecon", "", ""},
+ {"", "mesecons:mesecon", "mesecons:mesecon"},
+ {"mesecons:mesecon", "", ""}})
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_and.png b/mesecons/mesecons_gates/textures/jeija_gate_and.png
new file mode 100644
index 0000000..0ddc043
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_and.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_diode.png b/mesecons/mesecons_gates/textures/jeija_gate_diode.png
new file mode 100644
index 0000000..ffa403f
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_diode.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_nand.png b/mesecons/mesecons_gates/textures/jeija_gate_nand.png
new file mode 100644
index 0000000..0e4294e
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_nand.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_nor.png b/mesecons/mesecons_gates/textures/jeija_gate_nor.png
new file mode 100644
index 0000000..c4298e3
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_nor.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_not.png b/mesecons/mesecons_gates/textures/jeija_gate_not.png
new file mode 100644
index 0000000..939fb76
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_not.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_off.png b/mesecons/mesecons_gates/textures/jeija_gate_off.png
new file mode 100644
index 0000000..44017b0
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_off.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_on.png b/mesecons/mesecons_gates/textures/jeija_gate_on.png
new file mode 100644
index 0000000..47028a8
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_on.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_or.png b/mesecons/mesecons_gates/textures/jeija_gate_or.png
new file mode 100644
index 0000000..09f0661
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_or.png
Binary files differ
diff --git a/mesecons/mesecons_gates/textures/jeija_gate_xor.png b/mesecons/mesecons_gates/textures/jeija_gate_xor.png
new file mode 100644
index 0000000..afbd6ab
--- /dev/null
+++ b/mesecons/mesecons_gates/textures/jeija_gate_xor.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/depends.txt b/mesecons/mesecons_hydroturbine/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_hydroturbine/doc/waterturbine/description.html b/mesecons/mesecons_hydroturbine/doc/waterturbine/description.html
new file mode 100644
index 0000000..4b4e5a0
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/doc/waterturbine/description.html
@@ -0,0 +1 @@
+Water turbines are receptors that turn on if flowing water is above them.
diff --git a/mesecons/mesecons_hydroturbine/doc/waterturbine/preview.png b/mesecons/mesecons_hydroturbine/doc/waterturbine/preview.png
new file mode 100644
index 0000000..14be16e
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/doc/waterturbine/preview.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/doc/waterturbine/recipe.png b/mesecons/mesecons_hydroturbine/doc/waterturbine/recipe.png
new file mode 100644
index 0000000..8eb5365
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/doc/waterturbine/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/init.lua b/mesecons/mesecons_hydroturbine/init.lua
new file mode 100644
index 0000000..d1c08f7
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/init.lua
@@ -0,0 +1,92 @@
+-- HYDRO_TURBINE
+-- Water turbine:
+-- Active if flowing >water< above it
+-- (does not work with other liquids)
+
+minetest.register_node("mesecons_hydroturbine:hydro_turbine_off", {
+ drawtype = "mesh",
+ mesh = "jeija_hydro_turbine.obj",
+ tiles = {
+ "jeija_hydro_turbine_sides_off.png",
+ "jeija_hydro_turbine_top_bottom.png",
+ "jeija_hydro_turbine_turbine_top_bottom.png",
+ "jeija_hydro_turbine_turbine_misc.png"
+ },
+ inventory_image = "jeija_hydro_turbine_inv.png",
+ wield_scale = {x=0.75, y=0.75, z=0.75},
+ groups = {dig_immediate=2},
+ description="Water Turbine",
+ paramtype = "light",
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 },
+ },
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.off
+ }}
+})
+
+minetest.register_node("mesecons_hydroturbine:hydro_turbine_on", {
+ drawtype = "mesh",
+ mesh = "jeija_hydro_turbine.obj",
+ wield_scale = {x=0.75, y=0.75, z=0.75},
+ tiles = {
+ "jeija_hydro_turbine_sides_on.png",
+ "jeija_hydro_turbine_top_bottom.png",
+ "jeija_hydro_turbine_turbine_top_bottom.png",
+ "jeija_hydro_turbine_turbine_misc.png"
+ },
+ inventory_image = "jeija_hydro_turbine_inv.png",
+ drop = "mesecons_hydroturbine:hydro_turbine_off 1",
+ groups = {dig_immediate=2,not_in_creative_inventory=1},
+ description="Water Turbine",
+ paramtype = "light",
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 },
+ },
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.on
+ }}
+})
+
+
+minetest.register_abm({
+nodenames = {"mesecons_hydroturbine:hydro_turbine_off"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
+ if minetest.get_node(waterpos).name=="default:water_flowing" then
+ minetest.add_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"})
+ nodeupdate(pos)
+ mesecon.receptor_on(pos)
+ end
+ end,
+})
+
+minetest.register_abm({
+nodenames = {"mesecons_hydroturbine:hydro_turbine_on"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
+ if minetest.get_node(waterpos).name~="default:water_flowing" then
+ minetest.add_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"})
+ nodeupdate(pos)
+ mesecon.receptor_off(pos)
+ end
+ end,
+})
+
+minetest.register_craft({
+ output = "mesecons_hydroturbine:hydro_turbine_off 2",
+ recipe = {
+ {"","default:stick", ""},
+ {"default:stick", "default:steel_ingot", "default:stick"},
+ {"","default:stick", ""},
+ }
+})
+
diff --git a/mesecons/mesecons_hydroturbine/models/jeija_hydro_turbine.obj b/mesecons/mesecons_hydroturbine/models/jeija_hydro_turbine.obj
new file mode 100644
index 0000000..84a1a44
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/models/jeija_hydro_turbine.obj
@@ -0,0 +1,429 @@
+# Blender v2.73 (sub 0) OBJ File: 'mesecons-water-turbine.blend'
+# www.blender.org
+o Cylinder.002_Cylinder.003
+v 0.000000 0.500000 -0.150000
+v 0.000000 0.562500 -0.150000
+v 0.106066 0.500000 -0.106066
+v 0.106066 0.562500 -0.106066
+v 0.150000 0.500000 0.000000
+v 0.150000 0.562500 0.000000
+v 0.106066 0.500000 0.106066
+v 0.106066 0.562500 0.106066
+v -0.000000 0.500000 0.150000
+v -0.000000 0.562500 0.150000
+v -0.106066 0.500000 0.106066
+v -0.106066 0.562500 0.106066
+v -0.150000 0.500000 -0.000000
+v -0.150000 0.562500 -0.000000
+v -0.106066 0.500000 -0.106066
+v -0.106066 0.562500 -0.106066
+v 0.097545 0.625000 -0.490393
+v -0.097545 0.625000 -0.490393
+v -0.277785 0.625000 -0.415735
+v -0.415735 0.625000 -0.277785
+v -0.490393 0.625000 -0.097545
+v -0.490393 0.625000 0.097545
+v -0.415735 0.625000 0.277785
+v -0.277785 0.625000 0.415735
+v -0.097545 0.625000 0.490393
+v 0.097545 0.625000 0.490393
+v 0.277785 0.625000 0.415735
+v 0.415735 0.625000 0.277785
+v 0.490393 0.625000 0.097545
+v 0.490393 0.625000 -0.097545
+v 0.415735 0.625000 -0.277785
+v 0.277785 0.625000 -0.415735
+v 0.097545 0.656250 -0.490393
+v -0.097545 0.656250 -0.490393
+v -0.277785 0.656250 -0.415735
+v -0.415735 0.656250 -0.277785
+v -0.490393 0.656250 -0.097545
+v -0.490393 0.656250 0.097545
+v -0.415735 0.656250 0.277785
+v -0.277785 0.656250 0.415735
+v -0.097545 0.656250 0.490393
+v 0.097545 0.656250 0.490393
+v 0.277785 0.656250 0.415735
+v 0.415735 0.656250 0.277785
+v 0.490393 0.656250 0.097545
+v 0.490393 0.656250 -0.097545
+v 0.415735 0.656250 -0.277785
+v 0.277785 0.656250 -0.415735
+v 0.116233 0.634645 -0.436100
+v 0.116233 1.482640 -0.436100
+v 0.299524 0.634645 -0.186124
+v 0.299524 1.482640 -0.186124
+v 0.343405 0.634645 0.080186
+v 0.343405 1.482640 0.080186
+v 0.186124 0.634645 0.299524
+v 0.186124 1.482640 0.299524
+v -0.080186 0.634645 0.343405
+v -0.080186 1.482640 0.343405
+v -0.299524 0.634645 0.186124
+v -0.299524 1.482640 0.186124
+v -0.343405 0.634645 -0.080186
+v -0.343405 1.482640 -0.080186
+v -0.186124 0.634645 -0.299524
+v -0.186124 1.482640 -0.299524
+v 0.080186 0.634645 -0.343405
+v 0.080186 1.482640 -0.343405
+v 0.390559 1.482640 -0.226180
+v 0.390559 0.634645 -0.226180
+v 0.436100 1.482640 0.116233
+v 0.436100 0.634645 0.116233
+v 0.226180 1.482640 0.390559
+v 0.226180 0.634645 0.390559
+v -0.116233 1.482640 0.436100
+v -0.116233 0.634645 0.436100
+v -0.390559 1.482640 0.226180
+v -0.390559 0.634645 0.226180
+v -0.436100 1.482640 -0.116233
+v -0.436100 0.634645 -0.116233
+v -0.226180 1.482640 -0.390559
+v -0.226180 0.634645 -0.390559
+v 0.108975 0.634645 -0.430778
+v 0.292266 0.634645 -0.180802
+v 0.292266 1.482640 -0.180802
+v 0.108975 1.482640 -0.430778
+v 0.381664 0.634645 -0.227549
+v 0.334509 0.634645 0.078817
+v 0.334509 1.482640 0.078817
+v 0.381664 1.482640 -0.227549
+v 0.430778 0.634645 0.108975
+v 0.180802 0.634645 0.292266
+v 0.180802 1.482640 0.292266
+v 0.430778 1.482640 0.108975
+v 0.227549 0.634645 0.381664
+v -0.078817 0.634645 0.334509
+v -0.078817 1.482640 0.334509
+v 0.227549 1.482640 0.381664
+v -0.108975 0.634645 0.430778
+v -0.292266 0.634645 0.180802
+v -0.292266 1.482640 0.180802
+v -0.108975 1.482640 0.430778
+v -0.381664 0.634645 0.227549
+v -0.334509 0.634645 -0.078817
+v -0.334509 1.482640 -0.078817
+v -0.381664 1.482640 0.227549
+v -0.227549 0.634645 -0.381663
+v 0.078817 0.634645 -0.334509
+v 0.078817 1.482640 -0.334509
+v -0.227549 1.482640 -0.381663
+v -0.430779 0.634645 -0.108975
+v -0.180802 0.634645 -0.292266
+v -0.180802 1.482640 -0.292266
+v -0.430779 1.482640 -0.108975
+v 0.097545 1.500000 -0.490393
+v -0.097545 1.500000 -0.490393
+v -0.277785 1.500000 -0.415735
+v -0.415735 1.500000 -0.277785
+v -0.490393 1.500000 -0.097545
+v -0.490393 1.500000 0.097545
+v -0.415735 1.500000 0.277785
+v -0.277785 1.500000 0.415735
+v -0.097545 1.500000 0.490393
+v 0.097545 1.500000 0.490393
+v 0.277785 1.500000 0.415735
+v 0.415735 1.500000 0.277785
+v 0.490393 1.500000 0.097545
+v 0.490393 1.500000 -0.097545
+v 0.415735 1.500000 -0.277785
+v 0.277785 1.500000 -0.415735
+v 0.097545 1.468750 -0.490393
+v -0.097545 1.468750 -0.490393
+v -0.277785 1.468750 -0.415735
+v -0.415735 1.468750 -0.277785
+v -0.490393 1.468750 -0.097545
+v -0.490393 1.468750 0.097545
+v -0.415735 1.468750 0.277785
+v -0.277785 1.468750 0.415735
+v -0.097545 1.468750 0.490393
+v 0.097545 1.468750 0.490393
+v 0.277785 1.468750 0.415735
+v 0.415735 1.468750 0.277785
+v 0.490393 1.468750 0.097545
+v 0.490393 1.468750 -0.097545
+v 0.415735 1.468750 -0.277785
+v 0.277785 1.468750 -0.415735
+v 0.025624 0.559630 -0.061863
+v 0.025624 1.481372 -0.061863
+v 0.061863 0.559630 -0.025624
+v 0.061863 1.481372 -0.025624
+v 0.061863 0.559630 0.025624
+v 0.061863 1.481372 0.025624
+v 0.025624 0.559630 0.061863
+v 0.025624 1.481372 0.061863
+v -0.025624 0.559630 0.061863
+v -0.025624 1.481372 0.061863
+v -0.061863 0.559630 0.025624
+v -0.061863 1.481372 0.025624
+v -0.061863 0.559630 -0.025624
+v -0.061863 1.481372 -0.025624
+v -0.025624 0.559630 -0.061863
+v -0.025624 1.481372 -0.061863
+v 0.499775 -0.499550 -0.499775
+v 0.499775 -0.499550 0.499775
+v -0.499775 -0.499550 0.499775
+v -0.499775 -0.499550 -0.499775
+v 0.499775 0.500000 -0.499775
+v 0.499775 0.500000 0.499775
+v -0.499775 0.500000 0.499775
+v -0.499775 0.500000 -0.499775
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.400544 1.000000
+vt 0.599456 1.000000
+vt 0.783227 0.923880
+vt 0.923880 0.783227
+vt 1.000000 0.599456
+vt 1.000000 0.400544
+vt 0.923880 0.216773
+vt 0.783227 0.076120
+vt 0.599456 0.000000
+vt 0.400544 0.000000
+vt 0.216773 0.076121
+vt 0.076120 0.216773
+vt 0.000000 0.400544
+vt 0.000000 0.599456
+vt 0.076121 0.783227
+vt 0.216773 0.923880
+vt 0.500000 0.343750
+vt 0.531250 0.343750
+vt 0.531250 0.375000
+vt 0.500000 0.375000
+vt 0.531250 0.406250
+vt 0.500000 0.406250
+vt 0.500000 0.531250
+vt 0.531250 0.531250
+vt 0.531250 0.500000
+vt 0.500000 0.500000
+vt 0.531250 0.468750
+vt 0.500000 0.468750
+vt 0.531250 0.437500
+vt 0.500000 0.437500
+vt 0.593750 0.468750
+vt 0.625000 0.437500
+vt 0.656250 0.437500
+vt 0.687500 0.468750
+vt 0.687500 0.500000
+vt 0.656250 0.531250
+vt 0.625000 0.531250
+vt 0.593750 0.500000
+vt 0.500000 0.312500
+vt 0.531250 0.312500
+vt 0.500000 0.281250
+vt 0.531250 0.281250
+vt 0.156250 0.750000
+vt 0.156250 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.750000
+vt 0.156250 0.625000
+vt 0.125000 0.625000
+vt 0.156250 0.500000
+vt 0.125000 0.500000
+vt 0.156250 0.375000
+vt 0.125000 0.375000
+vt 0.156250 0.250000
+vt 0.125000 0.250000
+vt 0.250000 0.500000
+vt 0.250000 0.625000
+vt 0.218750 0.625000
+vt 0.218750 0.500000
+vt 0.156250 0.125000
+vt 0.125000 0.125000
+vt 0.156250 -0.000000
+vt 0.125000 -0.000000
+vt 0.250000 0.375000
+vt 0.218750 0.375000
+vt 0.250000 0.875000
+vt 0.250000 1.000000
+vt 0.218750 1.000000
+vt 0.218750 0.875000
+vt 0.250000 0.250000
+vt 0.218750 0.250000
+vt 0.250000 0.750000
+vt 0.218750 0.750000
+vt 0.250000 0.125000
+vt 0.218750 0.125000
+vt 0.250000 -0.000000
+vt 0.218750 -0.000000
+vt 0.156250 1.000000
+vt 0.125000 1.000000
+vt 0.781250 0.593750
+vt 0.781250 0.968750
+vt 0.656250 0.968750
+vt 0.656250 0.593750
+vt 0.625000 0.593750
+vt 0.625000 0.968750
+vt 0.500000 0.968750
+vt 0.500000 0.593750
+vt 0.406250 -0.000000
+vt 0.437500 -0.000000
+vt 0.437500 0.125000
+vt 0.406250 0.125000
+vt 0.312500 0.875000
+vt 0.343750 0.875000
+vt 0.343750 1.000000
+vt 0.312500 1.000000
+vt 0.312500 0.750000
+vt 0.343750 0.750000
+vt 0.312500 0.625000
+vt 0.343750 0.625000
+vt 0.312500 0.500000
+vt 0.343750 0.500000
+vt 0.406250 0.750000
+vt 0.437500 0.750000
+vt 0.437500 0.875000
+vt 0.406250 0.875000
+vt 0.312500 0.375000
+vt 0.343750 0.375000
+vt 0.312500 0.250000
+vt 0.343750 0.250000
+vt 0.406250 0.625000
+vt 0.437500 0.625000
+vt 0.312500 0.125000
+vt 0.343750 0.125000
+vt 0.406250 0.500000
+vt 0.437500 0.500000
+vt 0.312500 -0.000000
+vt 0.343750 -0.000000
+vt 0.406250 0.375000
+vt 0.437500 0.375000
+vt 0.437500 1.000000
+vt 0.406250 1.000000
+vt 0.406250 0.250000
+vt 0.437500 0.250000
+vt 0.031250 0.937500
+vt 0.062500 0.937500
+vt 0.062500 0.968750
+vt 0.031250 0.968750
+vt 0.031250 0.718750
+vt 0.062500 0.718750
+vt 0.062500 0.750000
+vt 0.031250 0.750000
+vt 0.062500 0.781250
+vt 0.031250 0.781250
+vt 0.062500 0.812500
+vt 0.031250 0.812500
+vt 0.062500 0.843750
+vt 0.031250 0.843750
+vt 0.062500 0.875000
+vt 0.031250 0.875000
+vt 0.031250 0.906250
+vt 0.062500 0.906250
+vn 1.000000 0.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn -1.000000 -0.000000 -0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.382700 0.000000 -0.923900
+vn 0.923900 0.000000 -0.382700
+vn 0.923900 0.000000 0.382700
+vn 0.382700 0.000000 0.923900
+vn -0.382700 0.000000 0.923900
+vn -0.923900 0.000000 0.382700
+vn -0.382700 0.000000 -0.923900
+vn -0.923900 0.000000 -0.382700
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.806400 0.000000 -0.591300
+vn 0.988400 0.000000 0.152100
+vn 0.591300 0.000000 0.806400
+vn -0.152100 0.000000 0.988400
+vn -0.806400 0.000000 0.591300
+vn -0.988400 0.000000 -0.152100
+vn 0.152100 0.000000 -0.988400
+vn -0.591300 0.000000 -0.806400
+g Cylinder.002_Cylinder.003_sides
+s off
+f 161/1/1 165/2/1 166/3/1 162/4/1
+f 162/1/2 166/2/2 167/3/2 163/4/2
+f 163/4/3 167/3/3 168/2/3 164/1/3
+f 165/2/4 161/1/4 164/4/4 168/3/4
+g Cylinder.002_Cylinder.003_top-bottom
+f 161/2/5 162/1/5 163/4/5 164/3/5
+f 165/2/6 168/3/6 167/4/6 166/1/6
+g Cylinder.002_Cylinder.003_turbine-top-bottom
+f 130/5/5 129/6/5 144/7/5 143/8/5 142/9/5 141/10/5 140/11/5 139/12/5 138/13/5 137/14/5 136/15/5 135/16/5 134/17/5 133/18/5 132/19/5 131/20/5
+f 18/5/5 17/6/5 32/7/5 31/8/5 30/9/5 29/10/5 28/11/5 27/12/5 26/13/5 25/14/5 24/15/5 23/16/5 22/17/5 21/18/5 20/19/5 19/20/5
+f 33/6/6 34/5/6 35/20/6 36/19/6 37/18/6 38/17/6 39/16/6 40/15/6 41/14/6 42/13/6 43/12/6 44/11/6 45/10/6 46/9/6 47/8/6 48/7/6
+f 113/6/6 114/5/6 115/20/6 116/19/6 117/18/6 118/17/6 119/16/6 120/15/6 121/14/6 122/13/6 123/12/6 124/11/6 125/10/6 126/9/6 127/8/6 128/7/6
+g Cylinder.002_Cylinder.003_turbine-blades-etc
+f 1/21/7 2/22/7 4/23/7 3/24/7
+f 3/24/8 4/23/8 6/25/8 5/26/8
+f 5/27/9 6/28/9 8/29/9 7/30/9
+f 7/30/10 8/29/10 10/31/10 9/32/10
+f 9/32/11 10/31/11 12/33/11 11/34/11
+f 11/34/12 12/33/12 14/25/12 13/26/12
+f 4/35/6 2/36/6 16/37/6 14/38/6 12/39/6 10/40/6 8/41/6 6/42/6
+f 15/43/13 16/44/13 2/22/13 1/21/13
+f 13/45/14 14/46/14 16/44/14 15/43/14
+f 27/47/15 28/48/15 44/49/15 43/50/15
+f 26/51/10 27/47/10 43/50/10 42/52/10
+f 25/53/2 26/51/2 42/52/2 41/54/2
+f 24/55/11 25/53/11 41/54/11 40/56/11
+f 23/57/16 24/55/16 40/56/16 39/58/16
+f 17/59/4 18/60/4 34/61/4 33/62/4
+f 22/63/12 23/57/12 39/58/12 38/64/12
+f 21/65/3 22/63/3 38/64/3 37/66/3
+f 32/67/7 17/59/7 33/62/7 48/68/7
+f 20/69/14 21/70/14 37/71/14 36/72/14
+f 31/73/17 32/67/17 48/68/17 47/74/17
+f 19/75/18 20/69/18 36/72/18 35/76/18
+f 30/77/8 31/73/8 47/74/8 46/78/8
+f 18/60/13 19/75/13 35/76/13 34/61/13
+f 29/79/1 30/77/1 46/78/1 45/80/1
+f 28/48/9 29/81/9 45/82/9 44/49/9
+f 49/83/19 50/84/19 52/85/19 51/86/19
+f 68/86/20 67/83/20 54/84/20 53/85/20
+f 70/83/21 69/84/21 56/85/21 55/86/21
+f 72/84/22 71/85/22 58/86/22 57/83/22
+f 74/83/23 73/84/23 60/85/23 59/86/23
+f 76/83/24 75/84/24 62/85/24 61/86/24
+f 80/84/25 79/85/25 66/86/25 65/83/25
+f 78/83/26 77/84/26 64/85/26 63/86/26
+f 81/87/23 82/88/23 83/89/23 84/90/23
+f 85/88/24 86/89/24 87/90/24 88/87/24
+f 89/89/26 90/90/26 91/87/26 92/88/26
+f 93/90/25 94/87/25 95/88/25 96/89/25
+f 97/90/19 98/87/19 99/88/19 100/89/19
+f 101/87/20 102/88/20 103/89/20 104/90/20
+f 105/90/22 106/87/22 107/88/22 108/89/22
+f 109/89/21 110/90/21 111/87/21 112/88/21
+f 75/88/22 76/87/22 101/86/22 104/85/22
+f 71/88/20 72/87/20 93/86/20 96/85/20
+f 67/86/25 68/85/25 85/88/25 88/87/25
+f 79/86/24 80/85/24 105/88/24 108/87/24
+f 77/88/23 78/87/23 109/86/23 112/85/23
+f 73/88/21 74/87/21 97/86/21 100/85/21
+f 69/86/19 70/85/19 89/88/19 92/87/19
+f 50/86/26 49/85/26 81/88/26 84/87/26
+f 123/91/15 139/92/15 140/93/15 124/94/15
+f 122/95/10 138/96/10 139/97/10 123/98/10
+f 121/99/2 137/100/2 138/96/2 122/95/2
+f 120/101/11 136/102/11 137/100/11 121/99/11
+f 119/103/16 135/104/16 136/102/16 120/101/16
+f 113/105/4 129/106/4 130/107/4 114/108/4
+f 118/109/12 134/110/12 135/104/12 119/103/12
+f 117/111/3 133/112/3 134/110/3 118/109/3
+f 128/113/7 144/114/7 129/106/7 113/105/7
+f 116/115/14 132/116/14 133/112/14 117/111/14
+f 127/117/17 143/118/17 144/114/17 128/113/17
+f 115/119/18 131/120/18 132/116/18 116/115/18
+f 126/121/8 142/122/8 143/118/8 127/117/8
+f 114/108/13 130/107/13 131/123/13 115/124/13
+f 125/125/1 141/126/1 142/122/1 126/121/1
+f 124/94/9 140/93/9 141/126/9 125/125/9
+f 145/127/17 146/128/17 148/129/17 147/130/17
+f 147/131/1 148/132/1 150/133/1 149/134/1
+f 149/134/15 150/133/15 152/135/15 151/136/15
+f 151/136/2 152/135/2 154/137/2 153/138/2
+f 153/138/16 154/137/16 156/139/16 155/140/16
+f 155/140/3 156/139/3 158/141/3 157/142/3
+f 159/143/4 160/144/4 146/128/4 145/127/4
+f 157/142/18 158/141/18 160/144/18 159/143/18
diff --git a/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png
new file mode 100644
index 0000000..4cc9f20
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png
new file mode 100644
index 0000000..89975e8
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png
new file mode 100644
index 0000000..759388a
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_top_bottom.png b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_top_bottom.png
new file mode 100644
index 0000000..37d634f
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_top_bottom.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.png b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.png
new file mode 100644
index 0000000..45a720b
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.png
Binary files differ
diff --git a/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.png b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.png
new file mode 100644
index 0000000..fa76591
--- /dev/null
+++ b/mesecons/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/depends.txt b/mesecons/mesecons_insulated/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_insulated/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_insulated/doc/insulated/description.html b/mesecons/mesecons_insulated/doc/insulated/description.html
new file mode 100644
index 0000000..df2a6df
--- /dev/null
+++ b/mesecons/mesecons_insulated/doc/insulated/description.html
@@ -0,0 +1 @@
+ Insulated mesecons are conductors that only conduct in one direction (and also not up or down).
diff --git a/mesecons/mesecons_insulated/doc/insulated/preview.png b/mesecons/mesecons_insulated/doc/insulated/preview.png
new file mode 100644
index 0000000..bf544e8
--- /dev/null
+++ b/mesecons/mesecons_insulated/doc/insulated/preview.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/doc/insulated/recipe.png b/mesecons/mesecons_insulated/doc/insulated/recipe.png
new file mode 100644
index 0000000..f2a731a
--- /dev/null
+++ b/mesecons/mesecons_insulated/doc/insulated/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/init.lua b/mesecons/mesecons_insulated/init.lua
new file mode 100644
index 0000000..c6fc05e
--- /dev/null
+++ b/mesecons/mesecons_insulated/init.lua
@@ -0,0 +1,80 @@
+function insulated_wire_get_rules(node)
+ local rules = {{x = 1, y = 0, z = 0},
+ {x =-1, y = 0, z = 0}}
+ if node.param2 == 1 or node.param2 == 3 then
+ return mesecon.rotate_rules_right(rules)
+ end
+ return rules
+end
+
+minetest.register_node("mesecons_insulated:insulated_on", {
+ drawtype = "nodebox",
+ description = "Insulated Mesecon",
+ tiles = {
+ "jeija_insulated_wire_sides_on.png",
+ "jeija_insulated_wire_sides_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_ends_on.png",
+ "jeija_insulated_wire_sides_on.png",
+ "jeija_insulated_wire_sides_on.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "fixed",
+ fixed = { -16/32-0.001, -18/32, -7/32, 16/32+0.001, -12/32, 7/32 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }
+ },
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ drop = "mesecons_insulated:insulated_off",
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ offstate = "mesecons_insulated:insulated_off",
+ rules = insulated_wire_get_rules
+ }}
+})
+
+minetest.register_node("mesecons_insulated:insulated_off", {
+ drawtype = "nodebox",
+ description = "Insulated Mesecon",
+ tiles = {
+ "jeija_insulated_wire_sides_off.png",
+ "jeija_insulated_wire_sides_off.png",
+ "jeija_insulated_wire_ends_off.png",
+ "jeija_insulated_wire_ends_off.png",
+ "jeija_insulated_wire_sides_off.png",
+ "jeija_insulated_wire_sides_off.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "fixed",
+ fixed = { -16/32-0.001, -18/32, -7/32, 16/32+0.001, -12/32, 7/32 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }
+ },
+ groups = {dig_immediate = 3},
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ onstate = "mesecons_insulated:insulated_on",
+ rules = insulated_wire_get_rules
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_insulated:insulated_off 3",
+ recipe = {
+ {"mesecons_materials:fiber", "mesecons_materials:fiber", "mesecons_materials:fiber"},
+ {"mesecons:wire_00000000_off", "mesecons:wire_00000000_off", "mesecons:wire_00000000_off"},
+ {"mesecons_materials:fiber", "mesecons_materials:fiber", "mesecons_materials:fiber"},
+ }
+})
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png
new file mode 100644
index 0000000..d872b2b
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png
new file mode 100644
index 0000000..ae06dea
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png
new file mode 100644
index 0000000..41b5ff4
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png
new file mode 100644
index 0000000..154288b
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png
new file mode 100644
index 0000000..85ca90b
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png
new file mode 100644
index 0000000..772d9a6
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png
new file mode 100644
index 0000000..b742152
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png
new file mode 100644
index 0000000..497a467
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png
new file mode 100644
index 0000000..d407cff
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png
new file mode 100644
index 0000000..830d390
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png
new file mode 100644
index 0000000..89a8385
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png
new file mode 100644
index 0000000..75cf435
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png
new file mode 100644
index 0000000..db33f14
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png
new file mode 100644
index 0000000..f76e9a8
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png
new file mode 100644
index 0000000..a897b29
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png
Binary files differ
diff --git a/mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png
new file mode 100644
index 0000000..8fc312b
--- /dev/null
+++ b/mesecons/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png
Binary files differ
diff --git a/mesecons/mesecons_lamp/depends.txt b/mesecons/mesecons_lamp/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_lamp/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_lamp/doc/lamp/description.html b/mesecons/mesecons_lamp/doc/lamp/description.html
new file mode 100644
index 0000000..5bfe6c5
--- /dev/null
+++ b/mesecons/mesecons_lamp/doc/lamp/description.html
@@ -0,0 +1 @@
+Lamps are effectors that if powered emit light.
diff --git a/mesecons/mesecons_lamp/doc/lamp/preview.png b/mesecons/mesecons_lamp/doc/lamp/preview.png
new file mode 100644
index 0000000..a581cb3
--- /dev/null
+++ b/mesecons/mesecons_lamp/doc/lamp/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lamp/doc/lamp/recipe.png b/mesecons/mesecons_lamp/doc/lamp/recipe.png
new file mode 100644
index 0000000..77570bd
--- /dev/null
+++ b/mesecons/mesecons_lamp/doc/lamp/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lamp/init.lua b/mesecons/mesecons_lamp/init.lua
new file mode 100644
index 0000000..362453c
--- /dev/null
+++ b/mesecons/mesecons_lamp/init.lua
@@ -0,0 +1,61 @@
+-- MESELAMPS
+-- A lamp is "is an electrical device used to create artificial light" (wikipedia)
+-- guess what?
+
+mesecon_lamp_box = {
+ type = "wallmounted",
+ wall_top = {-0.3125,0.375,-0.3125,0.3125,0.5,0.3125},
+ wall_bottom = {-0.3125,-0.5,-0.3125,0.3125,-0.375,0.3125},
+ wall_side = {-0.375,-0.3125,-0.3125,-0.5,0.3125,0.3125},
+}
+
+minetest.register_node("mesecons_lamp:lamp_on", {
+ drawtype = "nodebox",
+ tiles = {"jeija_meselamp_on.png"},
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ legacy_wallmounted = true,
+ sunlight_propagates = true,
+ walkable = true,
+ light_source = default.LIGHT_MAX,
+ node_box = mesecon_lamp_box,
+ selection_box = mesecon_lamp_box,
+ groups = {dig_immediate=3,not_in_creative_inventory=1, mesecon_effector_on = 1},
+ drop="mesecons_lamp:lamp_off 1",
+ sounds = default.node_sound_glass_defaults(),
+ mesecons = {effector = {
+ action_off = function (pos, node)
+ minetest.swap_node(pos, {name = "mesecons_lamp:lamp_off", param2 = node.param2})
+ end
+ }}
+})
+
+minetest.register_node("mesecons_lamp:lamp_off", {
+ drawtype = "nodebox",
+ tiles = {"jeija_meselamp_off.png"},
+ inventory_image = "jeija_meselamp.png",
+ wield_image = "jeija_meselamp.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ walkable = true,
+ node_box = mesecon_lamp_box,
+ selection_box = mesecon_lamp_box,
+ groups = {dig_immediate=3, mesecon_receptor_off = 1, mesecon_effector_off = 1},
+ description="Meselamp",
+ sounds = default.node_sound_glass_defaults(),
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.swap_node(pos, {name = "mesecons_lamp:lamp_on", param2 = node.param2})
+ end
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_lamp:lamp_off 1",
+ recipe = {
+ {"", "default:glass", ""},
+ {"group:mesecon_conductor_craftable", "default:steel_ingot", "group:mesecon_conductor_craftable"},
+ {"", "default:glass", ""},
+ }
+})
diff --git a/mesecons/mesecons_lamp/textures/jeija_meselamp.png b/mesecons/mesecons_lamp/textures/jeija_meselamp.png
new file mode 100644
index 0000000..5456ee9
--- /dev/null
+++ b/mesecons/mesecons_lamp/textures/jeija_meselamp.png
Binary files differ
diff --git a/mesecons/mesecons_lamp/textures/jeija_meselamp_off.png b/mesecons/mesecons_lamp/textures/jeija_meselamp_off.png
new file mode 100644
index 0000000..67bd7fd
--- /dev/null
+++ b/mesecons/mesecons_lamp/textures/jeija_meselamp_off.png
Binary files differ
diff --git a/mesecons/mesecons_lamp/textures/jeija_meselamp_on.png b/mesecons/mesecons_lamp/textures/jeija_meselamp_on.png
new file mode 100644
index 0000000..2316e00
--- /dev/null
+++ b/mesecons/mesecons_lamp/textures/jeija_meselamp_on.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/depends.txt b/mesecons/mesecons_lightstone/depends.txt
new file mode 100644
index 0000000..f9705e0
--- /dev/null
+++ b/mesecons/mesecons_lightstone/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+dye
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_blue/description.html b/mesecons/mesecons_lightstone/doc/lightstone_blue/description.html
new file mode 100644
index 0000000..813e6ea
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_blue/description.html
@@ -0,0 +1 @@
+Effector, glows blue when powered.
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_blue/preview.png b/mesecons/mesecons_lightstone/doc/lightstone_blue/preview.png
new file mode 100644
index 0000000..579f719
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_blue/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_blue/recipe.png b/mesecons/mesecons_lightstone/doc/lightstone_blue/recipe.png
new file mode 100644
index 0000000..ce8ebd7
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_blue/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/description.html b/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/description.html
new file mode 100644
index 0000000..826ca0f
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/description.html
@@ -0,0 +1 @@
+Effector, glows dark grey when powered.
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/preview.png b/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/preview.png
new file mode 100644
index 0000000..56fe6ea
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png b/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png
new file mode 100644
index 0000000..fed0db2
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_green/description.html b/mesecons/mesecons_lightstone/doc/lightstone_green/description.html
new file mode 100644
index 0000000..cb5b515
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_green/description.html
@@ -0,0 +1 @@
+Effector, glows green when powered.
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_green/preview.png b/mesecons/mesecons_lightstone/doc/lightstone_green/preview.png
new file mode 100644
index 0000000..9efc774
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_green/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_green/recipe.png b/mesecons/mesecons_lightstone/doc/lightstone_green/recipe.png
new file mode 100644
index 0000000..6690064
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_green/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/description.html b/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/description.html
new file mode 100644
index 0000000..990b501
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/description.html
@@ -0,0 +1 @@
+Effector, glows light grey when powered.
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/preview.png b/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/preview.png
new file mode 100644
index 0000000..0084fa3
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png b/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png
new file mode 100644
index 0000000..e790012
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_red/description.html b/mesecons/mesecons_lightstone/doc/lightstone_red/description.html
new file mode 100644
index 0000000..699b1ee
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_red/description.html
@@ -0,0 +1 @@
+Effector, glows red when powered.
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_red/preview.png b/mesecons/mesecons_lightstone/doc/lightstone_red/preview.png
new file mode 100644
index 0000000..5fd3eba
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_red/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_red/recipe.png b/mesecons/mesecons_lightstone/doc/lightstone_red/recipe.png
new file mode 100644
index 0000000..7791a99
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_red/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_yellow/description.html b/mesecons/mesecons_lightstone/doc/lightstone_yellow/description.html
new file mode 100644
index 0000000..2bed7f2
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_yellow/description.html
@@ -0,0 +1 @@
+Effector, glows yellow when powered.
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_yellow/preview.png b/mesecons/mesecons_lightstone/doc/lightstone_yellow/preview.png
new file mode 100644
index 0000000..fb9f644
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_yellow/preview.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/doc/lightstone_yellow/recipe.png b/mesecons/mesecons_lightstone/doc/lightstone_yellow/recipe.png
new file mode 100644
index 0000000..f17e9d4
--- /dev/null
+++ b/mesecons/mesecons_lightstone/doc/lightstone_yellow/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/init.lua b/mesecons/mesecons_lightstone/init.lua
new file mode 100644
index 0000000..da7cc41
--- /dev/null
+++ b/mesecons/mesecons_lightstone/init.lua
@@ -0,0 +1,60 @@
+local lightstone_rules = {
+ {x=0, y=0, z=-1},
+ {x=1, y=0, z=0},
+ {x=-1, y=0, z=0},
+ {x=0, y=0, z=1},
+ {x=1, y=1, z=0},
+ {x=1, y=-1, z=0},
+ {x=-1, y=1, z=0},
+ {x=-1, y=-1, z=0},
+ {x=0, y=1, z=1},
+ {x=0, y=-1, z=1},
+ {x=0, y=1, z=-1},
+ {x=0, y=-1, z=-1},
+ {x=0, y=-1, z=0},
+}
+
+function mesecon.lightstone_add(name, base_item, texture_off, texture_on)
+ minetest.register_node("mesecons_lightstone:lightstone_" .. name .. "_off", {
+ tiles = {texture_off},
+ groups = {cracky=2, mesecon_effector_off = 1, mesecon = 2},
+ description=name.." Lightstone",
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {effector = {
+ rules = lightstone_rules,
+ action_on = function (pos, node)
+ minetest.swap_node(pos, {name = "mesecons_lightstone:lightstone_" .. name .. "_on", param2 = node.param2})
+ end,
+ }}
+ })
+ minetest.register_node("mesecons_lightstone:lightstone_" .. name .. "_on", {
+ tiles = {texture_on},
+ groups = {cracky=2,not_in_creative_inventory=1, mesecon = 2},
+ drop = "mesecons_lightstone:lightstone_" .. name .. "_off",
+ light_source = default.LIGHT_MAX-2,
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {effector = {
+ rules = lightstone_rules,
+ action_off = function (pos, node)
+ minetest.swap_node(pos, {name = "mesecons_lightstone:lightstone_" .. name .. "_off", param2 = node.param2})
+ end,
+ }}
+ })
+
+ minetest.register_craft({
+ output = "mesecons_lightstone:lightstone_" .. name .. "_off",
+ recipe = {
+ {"",base_item,""},
+ {base_item,"default:torch",base_item},
+ {"","group:mesecon_conductor_craftable",""}
+ }
+ })
+end
+
+
+mesecon.lightstone_add("red", "dye:red", "jeija_lightstone_red_off.png", "jeija_lightstone_red_on.png")
+mesecon.lightstone_add("green", "dye:green", "jeija_lightstone_green_off.png", "jeija_lightstone_green_on.png")
+mesecon.lightstone_add("blue", "dye:blue", "jeija_lightstone_blue_off.png", "jeija_lightstone_blue_on.png")
+mesecon.lightstone_add("gray", "dye:grey", "jeija_lightstone_gray_off.png", "jeija_lightstone_gray_on.png")
+mesecon.lightstone_add("darkgray", "dye:dark_grey", "jeija_lightstone_darkgray_off.png", "jeija_lightstone_darkgray_on.png")
+mesecon.lightstone_add("yellow", "dye:yellow", "jeija_lightstone_yellow_off.png", "jeija_lightstone_yellow_on.png")
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_off.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_off.png
new file mode 100644
index 0000000..09acc22
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_off.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_on.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_on.png
new file mode 100644
index 0000000..93c8638
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_blue_on.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png
new file mode 100644
index 0000000..7e5aae7
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png
new file mode 100644
index 0000000..e6d4d00
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_off.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_off.png
new file mode 100644
index 0000000..f168fc2
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_off.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_on.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_on.png
new file mode 100644
index 0000000..24c5470
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_gray_on.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_green_off.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_green_off.png
new file mode 100644
index 0000000..2f214fa
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_green_off.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_green_on.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_green_on.png
new file mode 100644
index 0000000..225bf4e
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_green_on.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_red_off.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_red_off.png
new file mode 100644
index 0000000..3c828b2
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_red_off.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_red_on.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_red_on.png
new file mode 100644
index 0000000..512b0fe
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_red_on.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png
new file mode 100644
index 0000000..2e7fed0
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png
Binary files differ
diff --git a/mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png b/mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png
new file mode 100644
index 0000000..8943aca
--- /dev/null
+++ b/mesecons/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/depends.txt b/mesecons/mesecons_luacontroller/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_luacontroller/doc/luacontroller/description.html b/mesecons/mesecons_luacontroller/doc/luacontroller/description.html
new file mode 100644
index 0000000..ca14615
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/doc/luacontroller/description.html
@@ -0,0 +1,5 @@
+The luacontroller is an advanced programmable component.
+You can simply code it in the language mesecons uses itself: Lua!
+All the code runs in a sandbox, so it's completely safe (but I won't guarantee that for absolute certainty!).
+
+<a href="http://mesecons.net/luacontroller/">Documentation is available here!</a>
diff --git a/mesecons/mesecons_luacontroller/doc/luacontroller/preview.png b/mesecons/mesecons_luacontroller/doc/luacontroller/preview.png
new file mode 100644
index 0000000..f16c9d0
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/doc/luacontroller/preview.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/doc/luacontroller/recipe.png b/mesecons/mesecons_luacontroller/doc/luacontroller/recipe.png
new file mode 100644
index 0000000..529b66d
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/doc/luacontroller/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/init.lua b/mesecons/mesecons_luacontroller/init.lua
new file mode 100644
index 0000000..839d150
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/init.lua
@@ -0,0 +1,642 @@
+-- ______
+-- |
+-- |
+-- | __ ___ _ __ _ _
+-- | | | | | |\ | | |_| | | | | |_ |_|
+-- |___| |______ |__| | \| | | \ |__| |_ |_ |_ |\
+-- |
+-- |
+--
+
+-- Reference
+-- ports = get_real_port_states(pos): gets if inputs are powered from outside
+-- newport = merge_port_states(state1, state2): just does result = state1 or state2 for every port
+-- set_port(pos, rule, state): activates/deactivates the mesecons according to the port states
+-- set_port_states(pos, ports): Applies new port states to a LuaController at pos
+-- run(pos): runs the code in the controller at pos
+-- reset_meta(pos, code, errmsg): performs a software-reset, installs new code and prints error messages
+-- resetn(pos): performs a hardware reset, turns off all ports
+--
+-- The Sandbox
+-- The whole code of the controller runs in a sandbox,
+-- a very restricted environment.
+-- However, as this does not prevent you from using e.g. loops,
+-- we need to check for these prohibited commands first.
+-- Actually the only way to damage the server is to
+-- use too much memory from the sandbox.
+-- You can add more functions to the environment
+-- (see where local env is defined)
+-- Something nice to play is is appending minetest.env to it.
+
+local BASENAME = "mesecons_luacontroller:luacontroller"
+
+local rules = {
+ a = {x = -1, y = 0, z = 0, name="A"},
+ b = {x = 0, y = 0, z = 1, name="B"},
+ c = {x = 1, y = 0, z = 0, name="C"},
+ d = {x = 0, y = 0, z = -1, name="D"},
+}
+
+
+------------------
+-- Action stuff --
+------------------
+-- These helpers are required to set the port states of the luacontroller
+
+local function update_real_port_states(pos, rule_name, new_state)
+ local meta = minetest.get_meta(pos)
+ if rule_name == nil then
+ meta:set_int("real_portstates", 1)
+ return
+ end
+ local n = meta:get_int("real_portstates") - 1
+ local L = {}
+ for i = 1, 4 do
+ L[i] = n % 2
+ n = math.floor(n / 2)
+ end
+ -- (0,-1) (-1,0) (1,0) (0,1)
+ local pos_to_side = { 4, 1, nil, 3, 2 }
+ if rule_name.x == nil then
+ for _, rname in ipairs(rule_name) do
+ local port = pos_to_side[rname.x + (2 * rname.z) + 3]
+ L[port] = (newstate == "on") and 1 or 0
+ end
+ else
+ local port = pos_to_side[rule_name.x + (2 * rule_name.z) + 3]
+ L[port] = (new_state == "on") and 1 or 0
+ end
+ meta:set_int("real_portstates",
+ 1 +
+ 1 * L[1] +
+ 2 * L[2] +
+ 4 * L[3] +
+ 8 * L[4])
+end
+
+
+local port_names = {"a", "b", "c", "d"}
+
+local function get_real_port_states(pos)
+ -- Determine if ports are powered (by itself or from outside)
+ local meta = minetest.get_meta(pos)
+ local L = {}
+ local n = meta:get_int("real_portstates") - 1
+ for _, name in ipairs(port_names) do
+ L[name] = ((n % 2) == 1)
+ n = math.floor(n / 2)
+ end
+ return L
+end
+
+
+local function merge_port_states(ports, vports)
+ return {
+ a = ports.a or vports.a,
+ b = ports.b or vports.b,
+ c = ports.c or vports.c,
+ d = ports.d or vports.d,
+ }
+end
+
+local function generate_name(ports)
+ local d = ports.d and 1 or 0
+ local c = ports.c and 1 or 0
+ local b = ports.b and 1 or 0
+ local a = ports.a and 1 or 0
+ return BASENAME..d..c..b..a
+end
+
+
+local function set_port(pos, rule, state)
+ if state then
+ mesecon.receptor_on(pos, {rule})
+ else
+ mesecon.receptor_off(pos, {rule})
+ end
+end
+
+
+local function clean_port_states(ports)
+ ports.a = ports.a and true or false
+ ports.b = ports.b and true or false
+ ports.c = ports.c and true or false
+ ports.d = ports.d and true or false
+end
+
+
+local function set_port_states(pos, ports)
+ local node = minetest.get_node(pos)
+ local name = node.name
+ clean_port_states(ports)
+ local vports = minetest.registered_nodes[name].virtual_portstates
+ local new_name = generate_name(ports)
+
+ if name ~= new_name and vports then
+ -- Problem:
+ -- We need to place the new node first so that when turning
+ -- off some port, it won't stay on because the rules indicate
+ -- there is an onstate output port there.
+ -- When turning the output off then, it will however cause feedback
+ -- so that the luacontroller will receive an "off" event by turning
+ -- its output off.
+ -- Solution / Workaround:
+ -- Remember which output was turned off and ignore next "off" event.
+ local meta = minetest.get_meta(pos)
+ local ign = minetest.deserialize(meta:get_string("ignore_offevents")) or {}
+ if ports.a and not vports.a and not mesecon.is_powered(pos, rules.a) then ign.A = true end
+ if ports.b and not vports.b and not mesecon.is_powered(pos, rules.b) then ign.B = true end
+ if ports.c and not vports.c and not mesecon.is_powered(pos, rules.c) then ign.C = true end
+ if ports.d and not vports.d and not mesecon.is_powered(pos, rules.d) then ign.D = true end
+ meta:set_string("ignore_offevents", minetest.serialize(ign))
+
+ minetest.swap_node(pos, {name = new_name, param2 = node.param2})
+
+ if ports.a ~= vports.a then set_port(pos, rules.a, ports.a) end
+ if ports.b ~= vports.b then set_port(pos, rules.b, ports.b) end
+ if ports.c ~= vports.c then set_port(pos, rules.c, ports.c) end
+ if ports.d ~= vports.d then set_port(pos, rules.d, ports.d) end
+ end
+end
+
+
+-----------------
+-- Overheating --
+-----------------
+local function burn_controller(pos)
+ local node = minetest.get_node(pos)
+ node.name = BASENAME.."_burnt"
+ minetest.swap_node(pos, node)
+ minetest.get_meta(pos):set_string("lc_memory", "");
+ -- Wait for pending operations
+ minetest.after(0.2, mesecon.receptor_off, pos, mesecon.rules.flat)
+end
+
+local function overheat(pos, meta)
+ if mesecon.do_overheat(pos) then -- If too hot
+ burn_controller(pos)
+ return true
+ end
+end
+
+------------------------
+-- Ignored off events --
+------------------------
+
+local function ignore_event(event, meta)
+ if event.type ~= "off" then return false end
+ local ignore_offevents = minetest.deserialize(meta:get_string("ignore_offevents")) or {}
+ if ignore_offevents[event.pin.name] then
+ ignore_offevents[event.pin.name] = nil
+ meta:set_string("ignore_offevents", minetest.serialize(ignore_offevents))
+ return true
+ end
+end
+
+-------------------------
+-- Parsing and running --
+-------------------------
+
+local function safe_print(param)
+ print(dump(param))
+end
+
+local function safe_date()
+ return(os.date("*t",os.time()))
+end
+
+local function remove_functions(x)
+ local tp = type(x)
+ if tp == "table" then
+ for key, value in pairs(x) do
+ local key_t, val_t = type(key), type(value)
+ if key_t == "function" or val_t == "function" then
+ x[key] = nil
+ else
+ if key_t == "table" then
+ remove_functions(key)
+ end
+ if val_t == "table" then
+ remove_functions(value)
+ end
+ end
+ end
+ elseif tp == "function" then
+ return nil
+ end
+ return x
+end
+
+local function get_interrupt(pos)
+ -- iid = interrupt id
+ local function interrupt(time, iid)
+ if type(time) ~= "number" then return end
+ local luac_id = minetest.get_meta(pos):get_int("luac_id")
+ mesecon.queue:add_action(pos, "lc_interrupt", {luac_id, iid}, time, iid, 1)
+ end
+ return interrupt
+end
+
+
+local function get_digiline_send(pos)
+ if not digiline then return end
+ return function(channel, msg)
+ minetest.after(0, function()
+ digiline:receptor_send(pos, digiline.rules.default, channel, msg)
+ end)
+ end
+end
+
+
+local safe_globals = {
+ "assert", "error", "ipairs", "next", "pairs", "pcall", "select",
+ "tonumber", "tostring", "type", "unpack", "_VERSION", "xpcall",
+}
+local function create_environment(pos, mem, event)
+ -- Gather variables for the environment
+ local vports = minetest.registered_nodes[minetest.get_node(pos).name].virtual_portstates
+ local vports_copy = {}
+ for k, v in pairs(vports) do vports_copy[k] = v end
+ local rports = get_real_port_states(pos)
+
+ -- Create new library tables on each call to prevent one LuaController
+ -- from breaking a library and messing up other LuaControllers.
+ local env = {
+ pin = merge_port_states(vports, rports),
+ port = vports_copy,
+ event = event,
+ mem = mem,
+ heat = minetest.get_meta(pos):get_int("heat"),
+ heat_max = mesecon.setting("overheat_max", 20),
+ print = safe_print,
+ interrupt = get_interrupt(pos),
+ digiline_send = get_digiline_send(pos),
+ string = {
+ byte = string.byte,
+ char = string.char,
+ format = string.format,
+ gsub = string.gsub,
+ len = string.len,
+ lower = string.lower,
+ upper = string.upper,
+ rep = string.rep,
+ reverse = string.reverse,
+ sub = string.sub,
+ },
+ math = {
+ abs = math.abs,
+ acos = math.acos,
+ asin = math.asin,
+ atan = math.atan,
+ atan2 = math.atan2,
+ ceil = math.ceil,
+ cos = math.cos,
+ cosh = math.cosh,
+ deg = math.deg,
+ exp = math.exp,
+ floor = math.floor,
+ fmod = math.fmod,
+ frexp = math.frexp,
+ huge = math.huge,
+ ldexp = math.ldexp,
+ log = math.log,
+ log10 = math.log10,
+ max = math.max,
+ min = math.min,
+ modf = math.modf,
+ pi = math.pi,
+ pow = math.pow,
+ rad = math.rad,
+ random = math.random,
+ sin = math.sin,
+ sinh = math.sinh,
+ sqrt = math.sqrt,
+ tan = math.tan,
+ tanh = math.tanh,
+ },
+ table = {
+ concat = table.concat,
+ insert = table.insert,
+ maxn = table.maxn,
+ remove = table.remove,
+ sort = table.sort,
+ },
+ os = {
+ clock = os.clock,
+ difftime = os.difftime,
+ time = os.time,
+ datetable = safe_date,
+ },
+ }
+ env._G = env
+
+ for _, name in pairs(safe_globals) do
+ env[name] = _G[name]
+ end
+
+ return env
+end
+
+
+local function timeout()
+ debug.sethook() -- Clear hook
+ error("Code timed out!")
+end
+
+
+local function code_prohibited(code)
+ -- LuaJIT doesn't increment the instruction counter when running
+ -- loops, so we have to sanitize inputs if we're using LuaJIT.
+ if not jit then
+ return false
+ end
+ local prohibited = {"while", "for", "do", "repeat", "until", "goto"}
+ code = " "..code.." "
+ for _, p in ipairs(prohibited) do
+ if string.find(code, "[^%w_]"..p.."[^%w_]") then
+ return "Prohibited command: "..p
+ end
+ end
+end
+
+
+local function create_sandbox(code, env)
+ if code:byte(1) == 27 then
+ return nil, "Binary code prohibited."
+ end
+ local f, msg = loadstring(code)
+ if not f then return nil, msg end
+ setfenv(f, env)
+
+ return function(...)
+ debug.sethook(timeout, "", 10000)
+ local ok, ret = pcall(f, ...)
+ debug.sethook() -- Clear hook
+ if not ok then error(ret) end
+ return ret
+ end
+end
+
+
+local function load_memory(meta)
+ return minetest.deserialize(meta:get_string("lc_memory")) or {}
+end
+
+
+local function save_memory(pos, meta, mem)
+ local memstring = minetest.serialize(remove_functions(mem))
+ local memsize_max = mesecon.setting("luacontroller_memsize", 100000)
+
+ if (#memstring <= memsize_max) then
+ meta:set_string("lc_memory", memstring)
+ else
+ print("Error: Luacontroller memory overflow. "..memsize_max.." bytes available, "
+ ..#memstring.." required. Controller overheats.")
+ burn_controller(pos)
+ end
+end
+
+
+local function run(pos, event)
+ local meta = minetest.get_meta(pos)
+ if overheat(pos) then return end
+ if ignore_event(event, meta) then return end
+
+ -- Load code & mem from meta
+ local mem = load_memory(meta)
+ local code = meta:get_string("code")
+
+ local err = code_prohibited(code)
+ if err then return err end
+
+ -- Create environment
+ local env = create_environment(pos, mem, event)
+
+ -- Create the sandbox and execute code
+ local f, msg = create_sandbox(code, env)
+ if not f then return msg end
+ local success, msg = pcall(f)
+ if not success then return msg end
+ if type(env.port) ~= "table" then
+ return "Ports set are invalid."
+ end
+
+ -- Actually set the ports
+ set_port_states(pos, env.port)
+
+ -- Save memory. This may burn the luacontroller if a memory overflow occurs.
+ save_memory(pos, meta, env.mem)
+end
+
+mesecon.queue:add_function("lc_interrupt", function (pos, luac_id, iid)
+ -- There is no luacontroller anymore / it has been reprogrammed / replaced / burnt
+ if (minetest.get_meta(pos):get_int("luac_id") ~= luac_id) then return end
+ if (minetest.registered_nodes[minetest.get_node(pos).name].is_burnt) then return end
+ run(pos, {type="interrupt", iid = iid})
+end)
+
+local function reset_meta(pos, code, errmsg)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("code", code)
+ code = minetest.formspec_escape(code or "")
+ errmsg = minetest.formspec_escape(errmsg or "")
+ meta:set_string("formspec", "size[10,8]"..
+ "background[-0.2,-0.25;10.4,8.75;jeija_luac_background.png]"..
+ "textarea[0.2,0.6;10.2,5;code;;"..code.."]"..
+ "image_button[3.75,6;2.5,1;jeija_luac_runbutton.png;program;]"..
+ "image_button_exit[9.72,-0.25;0.425,0.4;jeija_close_window.png;exit;]"..
+ "label[0.1,5;"..errmsg.."]")
+ meta:set_int("heat", 0)
+ meta:set_int("luac_id", math.random(1, 65535))
+end
+
+local function reset(pos)
+ set_port_states(pos, {a=false, b=false, c=false, d=false})
+end
+
+
+-----------------------
+-- Node Registration --
+-----------------------
+
+local output_rules = {}
+local input_rules = {}
+
+local node_box = {
+ type = "fixed",
+ fixed = {
+ {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, -- Bottom slab
+ {-5/16, -7/16, -5/16, 5/16, -6/16, 5/16}, -- Circuit board
+ {-3/16, -6/16, -3/16, 3/16, -5/16, 3/16}, -- IC
+ }
+}
+
+local selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 },
+}
+
+local digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ run(pos, {type = "digiline", channel = channel, msg = msg})
+ end
+ }
+}
+local function on_receive_fields(pos, form_name, fields)
+ if not fields.program then
+ return
+ end
+ reset(pos)
+ reset_meta(pos, fields.code)
+ local err = run(pos, {type="program"})
+ if err then
+ print(err)
+ reset_meta(pos, fields.code, err)
+ end
+end
+
+for a = 0, 1 do -- 0 = off 1 = on
+for b = 0, 1 do
+for c = 0, 1 do
+for d = 0, 1 do
+ local cid = tostring(d)..tostring(c)..tostring(b)..tostring(a)
+ local node_name = BASENAME..cid
+ local top = "jeija_luacontroller_top.png"
+ if a == 1 then
+ top = top.."^jeija_luacontroller_LED_A.png"
+ end
+ if b == 1 then
+ top = top.."^jeija_luacontroller_LED_B.png"
+ end
+ if c == 1 then
+ top = top.."^jeija_luacontroller_LED_C.png"
+ end
+ if d == 1 then
+ top = top.."^jeija_luacontroller_LED_D.png"
+ end
+
+ local groups
+ if a + b + c + d ~= 0 then
+ groups = {dig_immediate=2, not_in_creative_inventory=1, overheat = 1}
+ else
+ groups = {dig_immediate=2, overheat = 1}
+ end
+
+ output_rules[cid] = {}
+ input_rules[cid] = {}
+ if a == 1 then table.insert(output_rules[cid], rules.a) end
+ if b == 1 then table.insert(output_rules[cid], rules.b) end
+ if c == 1 then table.insert(output_rules[cid], rules.c) end
+ if d == 1 then table.insert(output_rules[cid], rules.d) end
+
+ if a == 0 then table.insert( input_rules[cid], rules.a) end
+ if b == 0 then table.insert( input_rules[cid], rules.b) end
+ if c == 0 then table.insert( input_rules[cid], rules.c) end
+ if d == 0 then table.insert( input_rules[cid], rules.d) end
+
+ local mesecons = {
+ effector = {
+ rules = input_rules[cid],
+ action_change = function (pos, _, rule_name, new_state)
+ update_real_port_states(pos, rule_name, new_state)
+ run(pos, {type=new_state, pin=rule_name})
+ end,
+ },
+ receptor = {
+ state = mesecon.state.on,
+ rules = output_rules[cid]
+ }
+ }
+
+ minetest.register_node(node_name, {
+ description = "LuaController",
+ drawtype = "nodebox",
+ tiles = {
+ top,
+ "jeija_microcontroller_bottom.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png"
+ },
+ inventory_image = top,
+ paramtype = "light",
+ groups = groups,
+ drop = BASENAME.."0000",
+ sunlight_propagates = true,
+ selection_box = selection_box,
+ node_box = node_box,
+ on_construct = reset_meta,
+ on_receive_fields = on_receive_fields,
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = mesecons,
+ digiline = digiline,
+ -- Virtual portstates are the ports that
+ -- the node shows as powered up (light up).
+ virtual_portstates = {
+ a = a == 1,
+ b = b == 1,
+ c = c == 1,
+ d = d == 1,
+ },
+ after_dig_node = function (pos, node)
+ mesecon.receptor_off(pos, output_rules)
+ end,
+ is_luacontroller = true,
+ })
+end
+end
+end
+end
+
+------------------------------
+-- Overheated LuaController --
+------------------------------
+
+minetest.register_node(BASENAME .. "_burnt", {
+ drawtype = "nodebox",
+ tiles = {
+ "jeija_luacontroller_burnt_top.png",
+ "jeija_microcontroller_bottom.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png"
+ },
+ inventory_image = "jeija_luacontroller_burnt_top.png",
+ is_burnt = true,
+ paramtype = "light",
+ groups = {dig_immediate=2, not_in_creative_inventory=1},
+ drop = BASENAME.."0000",
+ sunlight_propagates = true,
+ selection_box = selection_box,
+ node_box = node_box,
+ on_construct = reset_meta,
+ on_receive_fields = on_receive_fields,
+ sounds = default.node_sound_stone_defaults(),
+ virtual_portstates = {a = false, b = false, c = false, d = false},
+ mesecons = {
+ effector = {
+ rules = mesecon.rules.flat,
+ action_change = function(pos, _, rule_name, new_state)
+ update_real_port_states(pos, rule_name, new_state)
+ end,
+ },
+ },
+})
+
+------------------------
+-- Craft Registration --
+------------------------
+
+minetest.register_craft({
+ output = BASENAME.."0000 2",
+ recipe = {
+ {'mesecons_materials:silicon', 'mesecons_materials:silicon', 'group:mesecon_conductor_craftable'},
+ {'mesecons_materials:silicon', 'mesecons_materials:silicon', 'group:mesecon_conductor_craftable'},
+ {'group:mesecon_conductor_craftable', 'group:mesecon_conductor_craftable', ''},
+ }
+})
+
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luac_background.png b/mesecons/mesecons_luacontroller/textures/jeija_luac_background.png
new file mode 100644
index 0000000..40e316c
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luac_background.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luac_runbutton.png b/mesecons/mesecons_luacontroller/textures/jeija_luac_runbutton.png
new file mode 100644
index 0000000..157507f
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luac_runbutton.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png
new file mode 100644
index 0000000..a187e8e
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png
new file mode 100644
index 0000000..738ba96
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png
new file mode 100644
index 0000000..abe0fe6
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png
new file mode 100644
index 0000000..cc10170
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png
new file mode 100644
index 0000000..d1a17af
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png
Binary files differ
diff --git a/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_top.png b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_top.png
new file mode 100644
index 0000000..3128230
--- /dev/null
+++ b/mesecons/mesecons_luacontroller/textures/jeija_luacontroller_top.png
Binary files differ
diff --git a/mesecons/mesecons_materials/depends.txt b/mesecons/mesecons_materials/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_materials/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_materials/doc/fiber/description.html b/mesecons/mesecons_materials/doc/fiber/description.html
new file mode 100644
index 0000000..23a414a
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/fiber/description.html
@@ -0,0 +1 @@
+Craftitem: It can't be placed! Made by cooking glue in the furnace. Used for insulated mesecon crafting.
diff --git a/mesecons/mesecons_materials/doc/fiber/preview.png b/mesecons/mesecons_materials/doc/fiber/preview.png
new file mode 100644
index 0000000..cad9645
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/fiber/preview.png
Binary files differ
diff --git a/mesecons/mesecons_materials/doc/fiber/recipe.png b/mesecons/mesecons_materials/doc/fiber/recipe.png
new file mode 100644
index 0000000..7a53123
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/fiber/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_materials/doc/glue/description.html b/mesecons/mesecons_materials/doc/glue/description.html
new file mode 100644
index 0000000..a18490c
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/glue/description.html
@@ -0,0 +1 @@
+Craftitem: It can't be placed! Made by cooking saplings in furnace. Used for sticky pistons and sticky movestones.
diff --git a/mesecons/mesecons_materials/doc/glue/preview.png b/mesecons/mesecons_materials/doc/glue/preview.png
new file mode 100644
index 0000000..0158f9c
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/glue/preview.png
Binary files differ
diff --git a/mesecons/mesecons_materials/doc/glue/recipe.png b/mesecons/mesecons_materials/doc/glue/recipe.png
new file mode 100644
index 0000000..b20ce66
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/glue/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_materials/doc/silicon/description.html b/mesecons/mesecons_materials/doc/silicon/description.html
new file mode 100644
index 0000000..a2ae598
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/silicon/description.html
@@ -0,0 +1 @@
+Silicon is just a craftitem: It can't be placed. You'll need it in order to craft other items.
diff --git a/mesecons/mesecons_materials/doc/silicon/preview.png b/mesecons/mesecons_materials/doc/silicon/preview.png
new file mode 100644
index 0000000..cd52dbd
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/silicon/preview.png
Binary files differ
diff --git a/mesecons/mesecons_materials/doc/silicon/recipe.png b/mesecons/mesecons_materials/doc/silicon/recipe.png
new file mode 100644
index 0000000..9e8b332
--- /dev/null
+++ b/mesecons/mesecons_materials/doc/silicon/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_materials/init.lua b/mesecons/mesecons_materials/init.lua
new file mode 100644
index 0000000..eb19c3e
--- /dev/null
+++ b/mesecons/mesecons_materials/init.lua
@@ -0,0 +1,41 @@
+-- Glue and fiber
+minetest.register_craftitem("mesecons_materials:glue", {
+ image = "mesecons_glue.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+ description="Glue",
+})
+
+minetest.register_craftitem("mesecons_materials:fiber", {
+ image = "mesecons_fiber.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+ description="Fiber",
+})
+
+minetest.register_craft({
+ output = "mesecons_materials:glue 2",
+ type = "cooking",
+ recipe = "group:sapling",
+ cooktime = 2
+})
+
+minetest.register_craft({
+ output = "mesecons_materials:fiber 6",
+ type = "cooking",
+ recipe = "mesecons_materials:glue",
+ cooktime = 4
+})
+
+-- Silicon
+minetest.register_craftitem("mesecons_materials:silicon", {
+ image = "mesecons_silicon.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+ description="Silicon",
+})
+
+minetest.register_craft({
+ output = "mesecons_materials:silicon 4",
+ recipe = {
+ {"group:sand", "group:sand"},
+ {"group:sand", "default:steel_ingot"},
+ }
+})
diff --git a/mesecons/mesecons_materials/textures/mesecons_fiber.png b/mesecons/mesecons_materials/textures/mesecons_fiber.png
new file mode 100644
index 0000000..e8c7b08
--- /dev/null
+++ b/mesecons/mesecons_materials/textures/mesecons_fiber.png
Binary files differ
diff --git a/mesecons/mesecons_materials/textures/mesecons_glue.png b/mesecons/mesecons_materials/textures/mesecons_glue.png
new file mode 100644
index 0000000..2f351d1
--- /dev/null
+++ b/mesecons/mesecons_materials/textures/mesecons_glue.png
Binary files differ
diff --git a/mesecons/mesecons_materials/textures/mesecons_silicon.png b/mesecons/mesecons_materials/textures/mesecons_silicon.png
new file mode 100644
index 0000000..a7b0d52
--- /dev/null
+++ b/mesecons/mesecons_materials/textures/mesecons_silicon.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/MeseconMicro.odt b/mesecons/mesecons_microcontroller/MeseconMicro.odt
new file mode 100644
index 0000000..be82d1b
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/MeseconMicro.odt
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/MeseconMicro.pdf b/mesecons/mesecons_microcontroller/MeseconMicro.pdf
new file mode 100644
index 0000000..7ab7484
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/MeseconMicro.pdf
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/depends.txt b/mesecons/mesecons_microcontroller/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_microcontroller/init.lua b/mesecons/mesecons_microcontroller/init.lua
new file mode 100644
index 0000000..6778a10
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/init.lua
@@ -0,0 +1,692 @@
+EEPROM_SIZE = 255
+
+local microc_rules = {}
+
+for a = 0, 1 do
+for b = 0, 1 do
+for c = 0, 1 do
+for d = 0, 1 do
+local nodename = "mesecons_microcontroller:microcontroller"..tostring(d)..tostring(c)..tostring(b)..tostring(a)
+local top = "jeija_microcontroller_top.png"
+if tostring(a) == "1" then
+ top = top.."^jeija_microcontroller_LED_A.png"
+end
+if tostring(b) == "1" then
+ top = top.."^jeija_microcontroller_LED_B.png"
+end
+if tostring(c) == "1" then
+ top = top.."^jeija_microcontroller_LED_C.png"
+end
+if tostring(d) == "1" then
+ top = top.."^jeija_microcontroller_LED_D.png"
+end
+if tostring(d)..tostring(c)..tostring(b)..tostring(a) ~= "0000" then
+ groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3, overheat = 1}
+else
+ groups = {dig_immediate=2, mesecon = 3, overheat = 1}
+end
+local rules={}
+if (a == 1) then table.insert(rules, {x = -1, y = 0, z = 0}) end
+if (b == 1) then table.insert(rules, {x = 0, y = 0, z = 1}) end
+if (c == 1) then table.insert(rules, {x = 1, y = 0, z = 0}) end
+if (d == 1) then table.insert(rules, {x = 0, y = 0, z = -1}) end
+
+local input_rules={}
+if (a == 0) then table.insert(input_rules, {x = -1, y = 0, z = 0, name = "A"}) end
+if (b == 0) then table.insert(input_rules, {x = 0, y = 0, z = 1, name = "B"}) end
+if (c == 0) then table.insert(input_rules, {x = 1, y = 0, z = 0, name = "C"}) end
+if (d == 0) then table.insert(input_rules, {x = 0, y = 0, z = -1, name = "D"}) end
+microc_rules[nodename] = rules
+
+local mesecons = {effector =
+{
+ rules = input_rules,
+ action_change = function (pos, node, rulename, newstate)
+ yc_update_real_portstates(pos, node, rulename, newstate)
+ update_yc(pos)
+ end
+}}
+if nodename ~= "mesecons_microcontroller:microcontroller0000" then
+ mesecons.receptor = {
+ state = mesecon.state.on,
+ rules = rules
+ }
+end
+
+minetest.register_node(nodename, {
+ description = "Microcontroller",
+ drawtype = "nodebox",
+ tiles = {
+ top,
+ "jeija_microcontroller_bottom.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png",
+ "jeija_microcontroller_sides.png"
+ },
+
+ sunlight_propagates = true,
+ paramtype = "light",
+ walkable = true,
+ groups = groups,
+ drop = "mesecons_microcontroller:microcontroller0000 1",
+ selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 },
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, -- bottom slab
+ { -5/16, -7/16, -5/16, 5/16, -6/16, 5/16 }, -- circuit board
+ { -3/16, -6/16, -3/16, 3/16, -5/16, 3/16 }, -- IC
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("code", "")
+ meta:set_string("formspec", "size[9,2.5]"..
+ "field[0.256,-0.2;9,2;code;Code:;]"..
+ "button[0 ,0.2;1.5,3;band;AND]"..
+ "button[1.5,0.2;1.5,3;bxor;XOR]"..
+ "button[3 ,0.2;1.5,3;bnot;NOT]"..
+ "button[4.5,0.2;1.5,3;bnand;NAND]"..
+ "button[6 ,0.2;1.5,3;btflop;T-Flop]"..
+ "button[7.5,0.2;1.5,3;brsflop;RS-Flop]"..
+ "button_exit[3.5,1;2,3;program;Program]")
+ meta:set_string("infotext", "Unprogrammed Microcontroller")
+ local r = ""
+ for i=1, EEPROM_SIZE+1 do r=r.."0" end --Generate a string with EEPROM_SIZE*"0"
+ meta:set_string("eeprom", r)
+ end,
+ on_receive_fields = function(pos, formanme, fields, sender)
+ local meta = minetest.get_meta(pos)
+ if fields.band then
+ fields.code = "sbi(C, A&B) :A and B are inputs, C is output"
+ elseif fields.bxor then
+ fields.code = "sbi(C, A~B) :A and B are inputs, C is output"
+ elseif fields.bnot then
+ fields.code = "sbi(B, !A) :A is input, B is output"
+ elseif fields.bnand then
+ fields.code = "sbi(C, !A|!B) :A and B are inputs, C is output"
+ elseif fields.btflop then
+ fields.code = "if(A)sbi(1,1);if(!A&#1)sbi(B,!B)sbi(1,0); if(C)off(B,1); :A is input, B is output (Q), C is reset, toggles with falling edge"
+ elseif fields.brsflop then
+ fields.code = "if(A)on(C);if(B)off(C); :A is S (Set), B is R (Reset), C is output (R dominates)"
+ end
+ if fields.code == nil then return end
+
+ meta:set_string("code", fields.code)
+ meta:set_string("formspec", "size[9,2.5]"..
+ "field[0.256,-0.2;9,2;code;Code:;"..minetest.formspec_escape(fields.code).."]"..
+ "button[0 ,0.2;1.5,3;band;AND]"..
+ "button[1.5,0.2;1.5,3;bxor;XOR]"..
+ "button[3 ,0.2;1.5,3;bnot;NOT]"..
+ "button[4.5,0.2;1.5,3;bnand;NAND]"..
+ "button[6 ,0.2;1.5,3;btflop;T-Flop]"..
+ "button[7.5,0.2;1.5,3;brsflop;RS-Flop]"..
+ "button_exit[3.5,1;2,3;program;Program]")
+ meta:set_string("infotext", "Programmed Microcontroller")
+ yc_reset (pos)
+ update_yc(pos)
+ end,
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = mesecons,
+ after_dig_node = function (pos, node)
+ rules = microc_rules[node.name]
+ mesecon.receptor_off(pos, rules)
+ end,
+})
+end
+end
+end
+end
+
+minetest.register_craft({
+ output = 'craft "mesecons_microcontroller:microcontroller0000" 2',
+ recipe = {
+ {'mesecons_materials:silicon', 'mesecons_materials:silicon', 'group:mesecon_conductor_craftable'},
+ {'mesecons_materials:silicon', 'mesecons_materials:silicon', 'group:mesecon_conductor_craftable'},
+ {'group:mesecon_conductor_craftable', 'group:mesecon_conductor_craftable', ''},
+ }
+})
+
+function yc_reset(pos)
+ yc_action(pos, {a=false, b=false, c=false, d=false})
+ local meta = minetest.get_meta(pos)
+ meta:set_int("afterid", 0)
+ local r = ""
+ for i=1, EEPROM_SIZE+1 do r=r.."0" end --Generate a string with EEPROM_SIZE*"0"
+ meta:set_string("eeprom", r)
+end
+
+function update_yc(pos)
+ local meta = minetest.get_meta(pos)
+
+ if (mesecon.do_overheat(pos)) then
+ minetest.remove_node(pos)
+ minetest.after(0.2, function (pos)
+ mesecon.receptor_off(pos, mesecon.rules.flat)
+ end , pos) -- wait for pending parsings
+ minetest.add_item(pos, "mesecons_microcontroller:microcontroller0000")
+ end
+
+ local code = meta:get_string("code")
+ code = yc_code_remove_commentary(code)
+ code = string.gsub(code, " ", "") --Remove all spaces
+ code = string.gsub(code, " ", "") --Remove all tabs
+ if yc_parsecode(code, pos) == nil then
+ meta:set_string("infotext", "Code not valid!\n"..code)
+ else
+ meta:set_string("infotext", "Working Microcontroller\n"..code)
+ end
+end
+
+
+--Code Parsing
+function yc_code_remove_commentary(code)
+ local is_string = false
+ for i = 1, #code do
+ if code:sub(i, i) == '"' then
+ is_string = not is_string --toggle is_string
+ elseif code:sub(i, i) == ":" and not is_string then
+ return code:sub(1, i-1)
+ end
+ end
+ return code
+end
+
+function yc_parsecode(code, pos)
+ local meta = minetest.get_meta(pos)
+ local endi = 1
+ local Lreal = yc_get_real_portstates(pos)
+ local Lvirtual = yc_get_virtual_portstates(pos)
+ if Lvirtual == nil then return nil end
+ local c
+ local eeprom = meta:get_string("eeprom")
+ while true do
+ local command, params
+ command, endi = parse_get_command(code, endi)
+ if command == nil then return nil end
+ if command == true then break end --end of code
+ if command == "if" then
+ local r
+ r, endi = yc_command_if(code, endi, yc_merge_portstates(Lreal, Lvirtual), eeprom)
+ if r == nil then return nil end
+ if r == true then -- nothing
+ elseif r == false then
+ local endi_new = yc_skip_to_else (code, endi)
+ if endi_new == nil then --else > not found
+ endi = yc_skip_to_endif(code, endi)
+ else
+ endi = endi_new
+ end
+ if endi == nil then return nil end
+ end
+ else
+ params, endi = parse_get_params(code, endi)
+ if not params then return nil end
+ end
+ if command == "on" then
+ L = yc_command_on (params, Lvirtual)
+ elseif command == "off" then
+ L = yc_command_off(params, Lvirtual)
+ elseif command == "print" then
+ local su = yc_command_print(params, eeprom, yc_merge_portstates(Lreal, Lvirtual))
+ if su ~= true then return nil end
+ elseif command == "after" then
+ local su = yc_command_after(params, pos)
+ if su == nil then return nil end
+ elseif command == "sbi" then
+ local new_eeprom
+ new_eeprom, Lvirtual = yc_command_sbi (params, eeprom, yc_merge_portstates(Lreal, Lvirtual), Lvirtual)
+ if new_eeprom == nil then return nil
+ else eeprom = new_eeprom end
+ elseif command == "if" then --nothing
+ else
+ return nil
+ end
+ if Lvirtual == nil then return nil end
+ if eeprom == nil then return nil else
+ minetest.get_meta(pos):set_string("eeprom", eeprom) end
+ end
+ yc_action(pos, Lvirtual)
+ return true
+end
+
+function parse_get_command(code, starti)
+ i = starti
+ local s
+ while s ~= "" do
+ s = string.sub(code, i, i)
+ if s == "(" then
+ return string.sub(code, starti, i-1), i + 1 -- i: ( i+1 after (
+ end
+ if s == ";" and starti == i then
+ starti = starti + 1
+ i = starti
+ elseif s == ">" then
+ starti = yc_skip_to_endif(code, starti)
+ if starti == nil then return nil end
+ i = starti
+ else
+ i = i + 1
+ end
+ end
+
+ if starti == i-1 then
+ return true, true
+ end
+ return nil, nil
+end
+
+function parse_get_params(code, starti)
+ i = starti
+ local s
+ local params = {}
+ local is_string = false
+ while s ~= "" do
+ s = string.sub(code, i, i)
+ if code:sub(i, i) == '"' then
+ is_string = (is_string==false) --toggle is_string
+ end
+ if s == ")" and is_string == false then
+ table.insert(params, string.sub(code, starti, i-1)) -- i: ) i+1 after )
+ return params, i + 1
+ end
+ if s == "," and is_string == false then
+ table.insert(params, string.sub(code, starti, i-1)) -- i: ) i+1 after )
+ starti = i + 1
+ end
+ i = i + 1
+ end
+ return nil, nil
+end
+
+function yc_parse_get_eeprom_param(cond, starti)
+ i = starti
+ local s
+ local addr
+ while s ~= "" do
+ s = string.sub(cond, i, i)
+ if string.find("0123456789", s) == nil or s == "" then
+ addr = string.sub(cond, starti, i-1) -- i: last number i+1 after last number
+ return addr, i
+ end
+ if s == "," then return nil, nil end
+ i = i + 1
+ end
+ return nil, nil
+end
+
+function yc_skip_to_endif(code, starti)
+ local i = starti
+ local s = false
+ local open_ifs = 1
+ while s ~= nil and s~= "" do
+ s = code:sub(i, i)
+ if s == "i" and code:sub(i+1, i+1) == "f" then --if in µCScript
+ open_ifs = open_ifs + 1
+ end
+ if s == ";" then
+ open_ifs = open_ifs - 1
+ end
+ if open_ifs == 0 then
+ return i + 1
+ end
+ i = i + 1
+ end
+ return nil
+end
+
+function yc_skip_to_else(code, starti)
+ local i = starti
+ local s = false
+ local open_ifs = 1
+ while s ~= nil and s~= "" do
+ s = code:sub(i, i)
+ if s == "i" and code:sub(i+1, i+1) == "f" then --if in µCScript
+ open_ifs = open_ifs + 1
+ end
+ if s == ";" then
+ open_ifs = open_ifs - 1
+ end
+ if open_ifs == 1 and s == ">" then
+ return i + 1
+ end
+ i = i + 1
+ end
+ return nil
+end
+
+--Commands
+function yc_command_on(params, L)
+ local rules = {}
+ for i, port in ipairs(params) do
+ L = yc_set_portstate (port, true, L)
+ end
+ return L
+end
+
+function yc_command_off(params, L)
+ local rules = {}
+ for i, port in ipairs(params) do
+ L = yc_set_portstate (port, false, L)
+ end
+ return L
+end
+
+function yc_command_print(params, eeprom, L)
+ local s = ""
+ for i, param in ipairs(params) do
+ if param:sub(1,1) == '"' and param:sub(#param, #param) == '"' then
+ s = s..param:sub(2, #param-1)
+ else
+ r = yc_command_parsecondition(param, L, eeprom)
+ if r == "1" or r == "0" then
+ s = s..r
+ else return nil end
+ end
+ end
+ print(s) --don't remove
+ return true
+end
+
+function yc_command_sbi(params, eeprom, L, Lv)
+ if params[1]==nil or params[2]==nil or params[3] ~=nil then return nil end
+ local status = yc_command_parsecondition(params[2], L, eeprom)
+
+ if status == nil then return nil, nil end
+
+ if string.find("ABCD", params[1])~=nil and #params[1]==1 then --is a port
+ if status == "1" then
+ Lv = yc_set_portstate (params[1], true, Lv)
+ else
+ Lv = yc_set_portstate (params[1], false, Lv)
+ end
+ return eeprom, Lv;
+ end
+
+ --is an eeprom address
+ local new_eeprom = "";
+ for i=1, #eeprom do
+ if tonumber(params[1])==i then
+ new_eeprom = new_eeprom..status
+ else
+ new_eeprom = new_eeprom..eeprom:sub(i, i)
+ end
+ end
+ return new_eeprom, Lv
+end
+
+-- after (delay)
+function yc_command_after(params, pos)
+ if params[1] == nil or params[2] == nil or params[3] ~= nil then return nil end
+
+ --get time (maximum time is 200)
+ local time = tonumber(params[1])
+ if time == nil or time > 200 then
+ return nil
+ end
+
+ --get code in quotes "code"
+ if string.sub(params[2], 1, 1) ~= '"' or string.sub(params[2], #params[2], #params[2]) ~= '"' then return nil end
+ local code = string.sub(params[2], 2, #params[2] - 1)
+
+ local afterid = math.random(10000)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("afterid", afterid)
+ minetest.after(time, yc_command_after_execute, {pos = pos, code = code, afterid = afterid})
+ return true
+end
+
+function yc_command_after_execute(params)
+ local meta = minetest.get_meta(params.pos)
+ if meta:get_int("afterid") == params.afterid then --make sure the node has not been changed
+ if yc_parsecode(params.code, params.pos) == nil then
+ meta:set_string("infotext", "Code in after() not valid!")
+ else
+ if code ~= nil then
+ meta:set_string("infotext", "Working Microcontroller\n"..code)
+ else
+ meta:set_string("infotext", "Working Microcontroller")
+ end
+ end
+ end
+end
+
+--If
+function yc_command_if(code, starti, L, eeprom)
+ local cond, endi = yc_command_if_getcondition(code, starti)
+ if cond == nil then return nil end
+
+ cond = yc_command_parsecondition(cond, L, eeprom)
+
+ local result
+ if cond == "0" then result = false
+ elseif cond == "1" then result = true end
+ if not result then end
+ return result, endi --endi from local cond, endi = yc_command_if_getcondition(code, starti)
+end
+
+--Condition parsing
+function yc_command_if_getcondition(code, starti)
+ i = starti
+ local s
+ local brackets = 1 --1 Bracket to close
+ while s ~= "" do
+ s = string.sub(code, i, i)
+
+ if s == ")" then
+ brackets = brackets - 1
+ end
+
+ if s == "(" then
+ brackets = brackets + 1
+ end
+
+ if brackets == 0 then
+ return string.sub(code, starti, i-1), i + 1 -- i: ( i+1 after (
+ end
+
+ i = i + 1
+ end
+ return nil, nil
+end
+
+function yc_command_parsecondition(cond, L, eeprom)
+ cond = string.gsub(cond, "A", tonumber(L.a and 1 or 0))
+ cond = string.gsub(cond, "B", tonumber(L.b and 1 or 0))
+ cond = string.gsub(cond, "C", tonumber(L.c and 1 or 0))
+ cond = string.gsub(cond, "D", tonumber(L.d and 1 or 0))
+
+
+ local i = 1
+ local l = string.len(cond)
+ while i<=l do
+ local s = cond:sub(i,i)
+ if s == "#" then
+ local addr, endi = yc_parse_get_eeprom_param(cond, i+1)
+ local buf = yc_eeprom_read(tonumber(addr), eeprom)
+ if buf == nil then return nil end
+ local call = cond:sub(i, endi-1)
+ cond = string.gsub(cond, call, buf)
+ i = 0
+ l = string.len(cond)
+ end
+ i = i + 1
+ end
+
+ cond = string.gsub(cond, "!0", "1")
+ cond = string.gsub(cond, "!1", "0")
+
+ local i = 2
+ local l = string.len(cond)
+ while i<=l do
+ local s = cond:sub(i,i)
+ local b = tonumber(cond:sub(i-1, i-1))
+ local a = tonumber(cond:sub(i+1, i+1))
+ if cond:sub(i+1, i+1) == nil then break end
+ if s == "=" then
+ if a==nil then return nil end
+ if b==nil then return nil end
+ if a == b then buf = "1" end
+ if a ~= b then buf = "0" end
+ cond = string.gsub(cond, b..s..a, buf)
+ i = 1
+ l = string.len(cond)
+ end
+ i = i + 1
+ end
+
+ local i = 2
+ local l = string.len(cond)
+ while i<=l do
+ local s = cond:sub(i,i)
+ local b = tonumber(cond:sub(i-1, i-1))
+ local a = tonumber(cond:sub(i+1, i+1))
+ if cond:sub(i+1, i+1) == nil then break end
+ if s == "&" then
+ if a==nil then return nil end
+ local buf = ((a==1) and (b==1))
+ if buf == true then buf = "1" end
+ if buf == false then buf = "0" end
+ cond = string.gsub(cond, b..s..a, buf)
+ i = 1
+ l = string.len(cond)
+ end
+ if s == "|" then
+ if a==nil then return nil end
+ local buf = ((a == 1) or (b == 1))
+ if buf == true then buf = "1" end
+ if buf == false then buf = "0" end
+ cond = string.gsub(cond, b..s..a, buf)
+ i = 1
+ l = string.len(cond)
+ end
+ if s == "~" then
+ if a==nil then return nil end
+ local buf = (((a == 1) or (b == 1)) and not((a==1) and (b==1)))
+ if buf == true then buf = "1" end
+ if buf == false then buf = "0" end
+ cond = string.gsub(cond, b..s..a, buf)
+ i = 1
+ l = string.len(cond)
+ end
+ i = i + 1
+ end
+
+ return cond
+end
+
+--Virtual-Hardware functions
+function yc_eeprom_read(number, eeprom)
+ if not number then return end
+ return eeprom:sub(number, number)
+end
+
+--Real I/O functions
+function yc_action(pos, L) --L-->Lvirtual
+ local Lv = yc_get_virtual_portstates(pos)
+ local name = "mesecons_microcontroller:microcontroller"
+ ..tonumber(L.d and 1 or 0)
+ ..tonumber(L.c and 1 or 0)
+ ..tonumber(L.b and 1 or 0)
+ ..tonumber(L.a and 1 or 0)
+ local node = minetest.get_node(pos)
+ minetest.swap_node(pos, {name = name, param2 = node.param2})
+
+ yc_action_setports(pos, L, Lv)
+end
+
+function yc_action_setports(pos, L, Lv)
+ local name = "mesecons_microcontroller:microcontroller"
+ local rules
+ if Lv.a ~= L.a then
+ rules = microc_rules[name.."0001"]
+ if L.a == true then mesecon.receptor_on(pos, rules)
+ else mesecon.receptor_off(pos, rules) end
+ end
+ if Lv.b ~= L.b then
+ rules = microc_rules[name.."0010"]
+ if L.b == true then mesecon.receptor_on(pos, rules)
+ else mesecon.receptor_off(pos, rules) end
+ end
+ if Lv.c ~= L.c then
+ rules = microc_rules[name.."0100"]
+ if L.c == true then mesecon.receptor_on(pos, rules)
+ else mesecon.receptor_off(pos, rules) end
+ end
+ if Lv.d ~= L.d then
+ rules = microc_rules[name.."1000"]
+ if L.d == true then mesecon.receptor_on(pos, rules)
+ else mesecon.receptor_off(pos, rules) end
+ end
+end
+
+function yc_set_portstate(port, state, L)
+ if port == "A" then L.a = state
+ elseif port == "B" then L.b = state
+ elseif port == "C" then L.c = state
+ elseif port == "D" then L.d = state
+ else return nil end
+ return L
+end
+
+function yc_update_real_portstates(pos, node, rulename, newstate)
+ local meta = minetest.get_meta(pos)
+ if rulename == nil then
+ meta:set_int("real_portstates", 1)
+ return
+ end
+ local n = meta:get_int("real_portstates") - 1
+ local L = {}
+ for i = 1, 4 do
+ L[i] = n%2
+ n = math.floor(n/2)
+ end
+ if rulename.x == nil then
+ for _, rname in ipairs(rulename) do
+ local port = ({4, 1, nil, 3, 2})[rname.x+2*rname.z+3]
+ L[port] = (newstate == "on") and 1 or 0
+ end
+ else
+ local port = ({4, 1, nil, 3, 2})[rulename.x+2*rulename.z+3]
+ L[port] = (newstate == "on") and 1 or 0
+ end
+ meta:set_int("real_portstates", 1 + L[1] + 2*L[2] + 4*L[3] + 8*L[4])
+end
+
+function yc_get_real_portstates(pos) -- determine if ports are powered (by itself or from outside)
+ local meta = minetest.get_meta(pos)
+ local L = {}
+ local n = meta:get_int("real_portstates") - 1
+ for _, index in ipairs({"a", "b", "c", "d"}) do
+ L[index] = ((n%2) == 1)
+ n = math.floor(n/2)
+ end
+ return L
+end
+
+function yc_get_virtual_portstates(pos) -- portstates according to the name
+ local name = minetest.get_node(pos).name
+ local b, a = string.find(name, ":microcontroller")
+ if a == nil then return nil end
+ a = a + 1
+
+ local Lvirtual = {a=false, b=false, c=false, d=false}
+ if name:sub(a , a ) == "1" then Lvirtual.d = true end
+ if name:sub(a+1, a+1) == "1" then Lvirtual.c = true end
+ if name:sub(a+2, a+2) == "1" then Lvirtual.b = true end
+ if name:sub(a+3, a+3) == "1" then Lvirtual.a = true end
+ return Lvirtual
+end
+
+function yc_merge_portstates(Lreal, Lvirtual)
+ local L = {a=false, b=false, c=false, d=false}
+ if Lvirtual.a or Lreal.a then L.a = true end
+ if Lvirtual.b or Lreal.b then L.b = true end
+ if Lvirtual.c or Lreal.c then L.c = true end
+ if Lvirtual.d or Lreal.d then L.d = true end
+ return L
+end
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_A.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_A.png
new file mode 100644
index 0000000..64526cf
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_A.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_B.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_B.png
new file mode 100644
index 0000000..1f7b451
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_B.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_C.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_C.png
new file mode 100644
index 0000000..399cc2c
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_C.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_D.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_D.png
new file mode 100644
index 0000000..506389c
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_LED_D.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_bottom.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_bottom.png
new file mode 100644
index 0000000..3a9161e
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_bottom.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_sides.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_sides.png
new file mode 100644
index 0000000..b367644
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_sides.png
Binary files differ
diff --git a/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_top.png b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_top.png
new file mode 100644
index 0000000..438c934
--- /dev/null
+++ b/mesecons/mesecons_microcontroller/textures/jeija_microcontroller_top.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/depends.txt b/mesecons/mesecons_movestones/depends.txt
new file mode 100644
index 0000000..a596cf8
--- /dev/null
+++ b/mesecons/mesecons_movestones/depends.txt
@@ -0,0 +1,3 @@
+mesecons
+mesecons_materials
+mesecons_mvps
diff --git a/mesecons/mesecons_movestones/doc/movestone/description.html b/mesecons/mesecons_movestones/doc/movestone/description.html
new file mode 100644
index 0000000..8555a9e
--- /dev/null
+++ b/mesecons/mesecons_movestones/doc/movestone/description.html
@@ -0,0 +1 @@
+Movestones are effectors that push the blocks in front of them. They move along on the right side of a mesecon wire track.
diff --git a/mesecons/mesecons_movestones/doc/movestone/preview.png b/mesecons/mesecons_movestones/doc/movestone/preview.png
new file mode 100644
index 0000000..bda64db
--- /dev/null
+++ b/mesecons/mesecons_movestones/doc/movestone/preview.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/doc/movestone/recipe.png b/mesecons/mesecons_movestones/doc/movestone/recipe.png
new file mode 100644
index 0000000..f3d45df
--- /dev/null
+++ b/mesecons/mesecons_movestones/doc/movestone/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/doc/movestone_sticky/description.html b/mesecons/mesecons_movestones/doc/movestone_sticky/description.html
new file mode 100644
index 0000000..460c277
--- /dev/null
+++ b/mesecons/mesecons_movestones/doc/movestone_sticky/description.html
@@ -0,0 +1 @@
+Movestones are effectors that push the blocks in front of them. They move along on the right side of a mesecon wire track. Sticky ones also pull blocks.
diff --git a/mesecons/mesecons_movestones/doc/movestone_sticky/preview.png b/mesecons/mesecons_movestones/doc/movestone_sticky/preview.png
new file mode 100644
index 0000000..85f9213
--- /dev/null
+++ b/mesecons/mesecons_movestones/doc/movestone_sticky/preview.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/doc/movestone_sticky/recipe.png b/mesecons/mesecons_movestones/doc/movestone_sticky/recipe.png
new file mode 100644
index 0000000..bbf0a94
--- /dev/null
+++ b/mesecons/mesecons_movestones/doc/movestone_sticky/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/init.lua b/mesecons/mesecons_movestones/init.lua
new file mode 100644
index 0000000..52a5605
--- /dev/null
+++ b/mesecons/mesecons_movestones/init.lua
@@ -0,0 +1,156 @@
+-- MOVESTONE
+-- Non-sticky:
+-- Moves along mesecon lines
+-- Pushes all blocks in front of it
+--
+-- Sticky one
+-- Moves along mesecon lines
+-- Pushes all block in front of it
+-- Pull all blocks in its back
+
+function mesecon.get_movestone_direction(pos)
+ local lpos
+ local rules = {
+ {x=0, y=1, z=-1},
+ {x=0, y=0, z=-1},
+ {x=0, y=-1, z=-1},
+ {x=0, y=1, z=1},
+ {x=0, y=-1, z=1},
+ {x=0, y=0, z=1},
+ {x=1, y=0, z=0},
+ {x=1, y=1, z=0},
+ {x=1, y=-1, z=0},
+ {x=-1, y=1, z=0},
+ {x=-1, y=-1, z=0},
+ {x=-1, y=0, z=0}}
+
+ lpos = {x=pos.x+1, y=pos.y, z=pos.z}
+ for n = 1, 3 do
+ if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+ return {x=0, y=0, z=-1}
+ end
+ end
+
+ lpos = {x = pos.x-1, y = pos.y, z = pos.z}
+ for n=4, 6 do
+ if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+ return {x=0, y=0, z=1}
+ end
+ end
+
+ lpos = {x = pos.x, y = pos.y, z = pos.z+1}
+ for n=7, 9 do
+ if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+ return {x=-1, y=0, z=0}
+ end
+ end
+
+ lpos = {x = pos.x, y = pos.y, z = pos.z-1}
+ for n=10, 12 do
+ if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+ return {x=1, y=0, z=0}
+ end
+ end
+end
+
+function mesecon.register_movestone(name, def, is_sticky)
+ local timer_interval = 1 / mesecon.setting("movestone_speed", 3)
+ local name_active = name.."_active"
+
+ local function movestone_move (pos)
+ if minetest.get_node(pos).name ~= name_active then
+ return
+ end
+
+ local direction = mesecon.get_movestone_direction(pos)
+ if not direction then
+ minetest.set_node(pos, {name = name})
+ return
+ end
+ local frontpos = vector.add(pos, direction)
+ local backpos = vector.subtract(pos, direction)
+
+ -- ### Step 1: Push nodes in front ###
+ local maxpush = mesecon.setting("movestone_max_push", 50)
+ local maxpull = mesecon.setting("movestone_max_pull", 50)
+ local success, stack, oldstack = mesecon.mvps_push(frontpos, direction, maxpush)
+ if success then
+ mesecon.mvps_process_stack(stack)
+ mesecon.mvps_move_objects(frontpos, direction, oldstack)
+ -- Too large stack/stopper in the way: try again very soon
+ else
+ minetest.after(0.05, movestone_move, pos)
+ return
+ end
+
+ -- ### Step 2: Move the movestone ###
+ local node = minetest.get_node(pos)
+ minetest.set_node(frontpos, node)
+ minetest.remove_node(pos)
+ mesecon.on_dignode(pos, node)
+ mesecon.on_placenode(frontpos, node)
+ minetest.after(timer_interval, movestone_move, frontpos)
+
+ -- ### Step 3: If sticky, pull stack behind ###
+ if is_sticky then
+ mesecon.mvps_pull_all(backpos, direction, maxpull)
+ end
+ end
+
+ def.mesecons = {effector = {
+ action_on = function (pos)
+ if minetest.get_node(pos).name ~= name_active then
+ minetest.set_node(pos, {name = name_active})
+ movestone_move(pos)
+ end
+ end,
+ action_off = function (pos)
+ minetest.set_node(pos, {name = name})
+ end
+ }}
+
+ def.drop = name
+
+ minetest.register_node(name, def)
+
+ -- active node only
+ local def_active = table.copy(def)
+ def_active.groups.not_in_creative_inventory = 1
+ minetest.register_node(name_active, def_active)
+end
+
+mesecon.register_movestone("mesecons_movestones:movestone", {
+ tiles = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_arrows.png", "jeija_movestone_arrows.png"},
+ groups = {cracky=3},
+ description="Movestone",
+ sounds = default.node_sound_stone_defaults()
+}, false)
+
+minetest.register_craft({
+ output = "mesecons_movestones:movestone 2",
+ recipe = {
+ {"default:stone", "default:stone", "default:stone"},
+ {"group:mesecon_conductor_craftable", "group:mesecon_conductor_craftable", "group:mesecon_conductor_craftable"},
+ {"default:stone", "default:stone", "default:stone"},
+ }
+})
+
+-- STICKY_MOVESTONE
+mesecon.register_movestone("mesecons_movestones:sticky_movestone", {
+ tiles = {"jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_movestone_side.png", "jeija_sticky_movestone.png", "jeija_sticky_movestone.png"},
+ inventory_image = minetest.inventorycube("jeija_sticky_movestone.png", "jeija_movestone_side.png", "jeija_movestone_side.png"),
+ groups = {cracky=3},
+ description="Sticky Movestone",
+ sounds = default.node_sound_stone_defaults(),
+}, true)
+
+minetest.register_craft({
+ output = "mesecons_movestones:sticky_movestone 2",
+ recipe = {
+ {"mesecons_materials:glue", "mesecons_movestones:movestone", "mesecons_materials:glue"},
+ }
+})
+
+-- Don't allow pushing movestones while they're active
+mesecon.register_mvps_stopper("mesecons_movestones:movestone_active")
+mesecon.register_mvps_stopper("mesecons_movestones:sticky_movestone_active")
diff --git a/mesecons/mesecons_movestones/textures/jeija_movestone_arrows.png b/mesecons/mesecons_movestones/textures/jeija_movestone_arrows.png
new file mode 100644
index 0000000..358c357
--- /dev/null
+++ b/mesecons/mesecons_movestones/textures/jeija_movestone_arrows.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/textures/jeija_movestone_side.png b/mesecons/mesecons_movestones/textures/jeija_movestone_side.png
new file mode 100644
index 0000000..de753ef
--- /dev/null
+++ b/mesecons/mesecons_movestones/textures/jeija_movestone_side.png
Binary files differ
diff --git a/mesecons/mesecons_movestones/textures/jeija_sticky_movestone.png b/mesecons/mesecons_movestones/textures/jeija_sticky_movestone.png
new file mode 100644
index 0000000..8953cf1
--- /dev/null
+++ b/mesecons/mesecons_movestones/textures/jeija_sticky_movestone.png
Binary files differ
diff --git a/mesecons/mesecons_mvps/depends.txt b/mesecons/mesecons_mvps/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_mvps/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_mvps/init.lua b/mesecons/mesecons_mvps/init.lua
new file mode 100644
index 0000000..beec94b
--- /dev/null
+++ b/mesecons/mesecons_mvps/init.lua
@@ -0,0 +1,238 @@
+--register stoppers for movestones/pistons
+
+mesecon.mvps_stoppers = {}
+mesecon.on_mvps_move = {}
+mesecon.mvps_unmov = {}
+
+--- Objects (entities) that cannot be moved
+function mesecon.register_mvps_unmov(objectname)
+ mesecon.mvps_unmov[objectname] = true;
+end
+
+function mesecon.is_mvps_unmov(objectname)
+ return mesecon.mvps_unmov[objectname]
+end
+
+-- Nodes that cannot be pushed / pulled by movestones, pistons
+function mesecon.is_mvps_stopper(node, pushdir, stack, stackid)
+ local get_stopper = mesecon.mvps_stoppers[node.name]
+ if type (get_stopper) == "function" then
+ get_stopper = get_stopper(node, pushdir, stack, stackid)
+ end
+ return get_stopper
+end
+
+function mesecon.register_mvps_stopper(nodename, get_stopper)
+ if get_stopper == nil then
+ get_stopper = true
+ end
+ mesecon.mvps_stoppers[nodename] = get_stopper
+end
+
+-- Functions to be called on mvps movement
+function mesecon.register_on_mvps_move(callback)
+ mesecon.on_mvps_move[#mesecon.on_mvps_move+1] = callback
+end
+
+local function on_mvps_move(moved_nodes)
+ for _, callback in ipairs(mesecon.on_mvps_move) do
+ callback(moved_nodes)
+ end
+end
+
+function mesecon.mvps_process_stack(stack)
+ -- update mesecons for placed nodes ( has to be done after all nodes have been added )
+ for _, n in ipairs(stack) do
+ mesecon.on_placenode(n.pos, minetest.get_node(n.pos))
+ end
+end
+
+function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky)
+ -- determine the number of nodes to be pushed
+ local nodes = {}
+ local frontiers = {pos}
+
+ while #frontiers > 0 do
+ local np = frontiers[1]
+ local nn = minetest.get_node(np)
+
+ if nn.name ~= "air"
+ and minetest.registered_nodes[nn.name]
+ and minetest.registered_nodes[nn.name].liquidtype == "none" then
+ table.insert(nodes, {node = nn, pos = np})
+ if #nodes > maximum then return nil end
+
+ -- add connected nodes to frontiers, connected is a vector list
+ -- the vectors must be absolute positions
+ local connected = {}
+ if minetest.registered_nodes[nn.name]
+ and minetest.registered_nodes[nn.name].mvps_sticky then
+ connected = minetest.registered_nodes[nn.name].mvps_sticky(np, nn)
+ end
+
+ table.insert(connected, vector.add(np, dir))
+
+ -- If adjacent node is sticky block and connects add that
+ -- position to the connected table
+ for _, r in ipairs(mesecon.rules.alldirs) do
+ local adjpos = vector.add(np, r)
+ local adjnode = minetest.get_node(adjpos)
+ if minetest.registered_nodes[adjnode.name]
+ and minetest.registered_nodes[adjnode.name].mvps_sticky then
+ local sticksto = minetest.registered_nodes[adjnode.name]
+ .mvps_sticky(adjpos, adjnode)
+
+ -- connects to this position?
+ for _, link in ipairs(sticksto) do
+ if vector.equals(link, np) then
+ table.insert(connected, adjpos)
+ end
+ end
+ end
+ end
+
+ if all_pull_sticky then
+ table.insert(connected, vector.subtract(np, dir))
+ end
+
+ -- Make sure there are no duplicates in frontiers / nodes before
+ -- adding nodes in "connected" to frontiers
+ for _, cp in ipairs(connected) do
+ local duplicate = false
+ for _, rp in ipairs(nodes) do
+ if vector.equals(cp, rp.pos) then
+ duplicate = true
+ end
+ end
+ for _, fp in ipairs(frontiers) do
+ if vector.equals(cp, fp) then
+ duplicate = true
+ end
+ end
+ if not duplicate then
+ table.insert(frontiers, cp)
+ end
+ end
+ end
+ table.remove(frontiers, 1)
+ end
+
+ return nodes
+end
+
+function mesecon.mvps_push(pos, dir, maximum)
+ return mesecon.mvps_push_or_pull(pos, dir, dir, maximum)
+end
+
+function mesecon.mvps_pull_all(pos, dir, maximum)
+ return mesecon.mvps_push_or_pull(pos, vector.multiply(dir, -1), dir, maximum, true)
+end
+
+function mesecon.mvps_pull_single(pos, dir, maximum)
+ return mesecon.mvps_push_or_pull(pos, vector.multiply(dir, -1), dir, maximum)
+end
+
+-- pos: pos of mvps; stackdir: direction of building the stack
+-- movedir: direction of actual movement
+-- maximum: maximum nodes to be pushed
+-- all_pull_sticky: All nodes are sticky in the direction that they are pulled from
+function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, all_pull_sticky)
+ local nodes = mesecon.mvps_get_stack(pos, movedir, maximum, all_pull_sticky)
+
+ if not nodes then return end
+ -- determine if one of the nodes blocks the push / pull
+ for id, n in ipairs(nodes) do
+ if mesecon.is_mvps_stopper(n.node, movedir, nodes, id) then
+ return
+ end
+ end
+
+ -- remove all nodes
+ for _, n in ipairs(nodes) do
+ n.meta = minetest.get_meta(n.pos):to_table()
+ minetest.remove_node(n.pos)
+ end
+
+ -- update mesecons for removed nodes ( has to be done after all nodes have been removed )
+ for _, n in ipairs(nodes) do
+ mesecon.on_dignode(n.pos, n.node)
+ end
+
+ -- add nodes
+ for _, n in ipairs(nodes) do
+ local np = mesecon.addPosRule(n.pos, movedir)
+
+ minetest.add_node(np, n.node)
+ minetest.get_meta(np):from_table(n.meta)
+ end
+
+ local moved_nodes = {}
+ local oldstack = mesecon.tablecopy(nodes)
+ for i in ipairs(nodes) do
+ moved_nodes[i] = {}
+ moved_nodes[i].oldpos = nodes[i].pos
+ nodes[i].pos = mesecon.addPosRule(nodes[i].pos, movedir)
+ moved_nodes[i].pos = nodes[i].pos
+ moved_nodes[i].node = nodes[i].node
+ moved_nodes[i].meta = nodes[i].meta
+ end
+
+ on_mvps_move(moved_nodes)
+
+ return true, nodes, oldstack
+end
+
+mesecon.register_on_mvps_move(function(moved_nodes)
+ for _, n in ipairs(moved_nodes) do
+ mesecon.on_placenode(n.pos, n.node)
+ mesecon.update_autoconnect(n.pos)
+ end
+end)
+
+function mesecon.mvps_move_objects(pos, dir, nodestack)
+ local objects_to_move = {}
+
+ -- Move object at tip of stack
+ local pushpos = mesecon.addPosRule(pos, -- get pos at tip of stack
+ {x = dir.x * #nodestack,
+ y = dir.y * #nodestack,
+ z = dir.z * #nodestack})
+
+
+ local objects = minetest.get_objects_inside_radius(pushpos, 1)
+ for _, obj in ipairs(objects) do
+ table.insert(objects_to_move, obj)
+ end
+
+ -- Move objects lying/standing on the stack (before it was pushed - oldstack)
+ if tonumber(minetest.setting_get("movement_gravity")) > 0 and dir.y == 0 then
+ -- If gravity positive and dir horizontal, push players standing on the stack
+ for _, n in ipairs(nodestack) do
+ local p_above = mesecon.addPosRule(n.pos, {x=0, y=1, z=0})
+ local objects = minetest.get_objects_inside_radius(p_above, 1)
+ for _, obj in ipairs(objects) do
+ table.insert(objects_to_move, obj)
+ end
+ end
+ end
+
+ for _, obj in ipairs(objects_to_move) do
+ local entity = obj:get_luaentity()
+ if not entity or not mesecon.is_mvps_unmov(entity.name) then
+ local np = mesecon.addPosRule(obj:getpos(), dir)
+
+ --move only if destination is not solid
+ local nn = minetest.get_node(np)
+ if not ((not minetest.registered_nodes[nn.name])
+ or minetest.registered_nodes[nn.name].walkable) then
+ obj:setpos(np)
+ end
+ end
+ end
+end
+
+mesecon.register_mvps_stopper("doors:door_steel_b_1")
+mesecon.register_mvps_stopper("doors:door_steel_t_1")
+mesecon.register_mvps_stopper("doors:door_steel_b_2")
+mesecon.register_mvps_stopper("doors:door_steel_t_2")
+mesecon.register_mvps_stopper("default:chest_locked")
diff --git a/mesecons/mesecons_noteblock/depends.txt b/mesecons/mesecons_noteblock/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_noteblock/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_noteblock/doc/noteblock/description.html b/mesecons/mesecons_noteblock/doc/noteblock/description.html
new file mode 100644
index 0000000..729bfe1
--- /dev/null
+++ b/mesecons/mesecons_noteblock/doc/noteblock/description.html
@@ -0,0 +1,13 @@
+This effector makes a sound if powered and can be used for making music. Normally it makes piano sounds. The sound frequency can be changed by punching the block. There are some special sounds that depend on the block below:
+<table colspace="5">
+<tr><th>Block Below</th><th>Effect</th></tr>
+<tr><td>Glass</td><td>Hihat</td></tr>
+<tr><td>Stone</td><td>Kick</td></tr>
+<tr><td>Chest</td><td>Snare</td></tr>
+<tr><td>Tree</td><td>Crash</td></tr>
+<tr><td>Glass</td><td>Hihat</td></tr>
+<tr><td>Wood</td><td>Lite Crash</td></tr>
+<tr><td>Coal Block</td><td>Explosion Sound </td></tr>
+<tr><td>Lava Source</td><td>Fire Sound</td></tr>
+<tr><td>Steel Block</td><td>Raises the pitch by one octave</td></tr>
+</table>
diff --git a/mesecons/mesecons_noteblock/doc/noteblock/preview.png b/mesecons/mesecons_noteblock/doc/noteblock/preview.png
new file mode 100644
index 0000000..c4991fb
--- /dev/null
+++ b/mesecons/mesecons_noteblock/doc/noteblock/preview.png
Binary files differ
diff --git a/mesecons/mesecons_noteblock/doc/noteblock/recipe.png b/mesecons/mesecons_noteblock/doc/noteblock/recipe.png
new file mode 100644
index 0000000..d3c3675
--- /dev/null
+++ b/mesecons/mesecons_noteblock/doc/noteblock/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_noteblock/init.lua b/mesecons/mesecons_noteblock/init.lua
new file mode 100644
index 0000000..d5e49ff
--- /dev/null
+++ b/mesecons/mesecons_noteblock/init.lua
@@ -0,0 +1,69 @@
+minetest.register_node("mesecons_noteblock:noteblock", {
+ description = "Noteblock",
+ tiles = {"mesecons_noteblock.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
+ on_punch = function(pos, node) -- change sound when punched
+ node.param2 = (node.param2+1)%12
+ mesecon.noteblock_play(pos, node.param2)
+ minetest.add_node(pos, node)
+ end,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector = { -- play sound when activated
+ action_on = function(pos, node)
+ mesecon.noteblock_play(pos, node.param2)
+ end
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_noteblock:noteblock 1",
+ recipe = {
+ {"group:wood", "group:wood", "group:wood"},
+ {"group:mesecon_conductor_craftable", "default:steel_ingot", "group:mesecon_conductor_craftable"},
+ {"group:wood", "group:wood", "group:wood"},
+ }
+})
+
+local soundnames = {
+ [0] = "mesecons_noteblock_csharp",
+ "mesecons_noteblock_d",
+ "mesecons_noteblock_dsharp",
+ "mesecons_noteblock_e",
+ "mesecons_noteblock_f",
+ "mesecons_noteblock_fsharp",
+ "mesecons_noteblock_g",
+ "mesecons_noteblock_gsharp",
+
+ "mesecons_noteblock_a",
+ "mesecons_noteblock_asharp",
+ "mesecons_noteblock_b",
+ "mesecons_noteblock_c"
+}
+
+local node_sounds = {
+ ["default:glass"] = "mesecons_noteblock_hihat",
+ ["default:stone"] = "mesecons_noteblock_kick",
+ ["default:lava_source"] = "fire_large",
+ ["default:chest"] = "mesecons_noteblock_snare",
+ ["default:tree"] = "mesecons_noteblock_crash",
+ ["default:wood"] = "mesecons_noteblock_litecrash",
+ ["default:coalblock"] = "tnt_explode",
+}
+
+mesecon.noteblock_play = function(pos, param2)
+ pos.y = pos.y-1
+ local nodeunder = minetest.get_node(pos).name
+ local soundname = node_sounds[nodeunder]
+ if not soundname then
+ soundname = soundnames[param2]
+ if not soundname then
+ minetest.log("error", "[mesecons_noteblock] No soundname found, test param2")
+ return
+ end
+ if nodeunder == "default:steelblock" then
+ soundname = soundname.. 2
+ end
+ end
+ pos.y = pos.y+1
+ minetest.sound_play(soundname, {pos = pos})
+end
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg
new file mode 100644
index 0000000..331fc1c
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a2.ogg
new file mode 100644
index 0000000..695b0f4
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_a2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg
new file mode 100644
index 0000000..db96aed
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp2.ogg
new file mode 100644
index 0000000..27bd09d
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_asharp2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg
new file mode 100644
index 0000000..810fe18
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b2.ogg
new file mode 100644
index 0000000..3de1250
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_b2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg
new file mode 100644
index 0000000..5c60d31
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c2.ogg
new file mode 100644
index 0000000..724db7d
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_c2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_crash.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_crash.ogg
new file mode 100644
index 0000000..0308d11
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_crash.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg
new file mode 100644
index 0000000..12c1ef3
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp2.ogg
new file mode 100644
index 0000000..fc7f6c8
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_csharp2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg
new file mode 100644
index 0000000..929b7fb
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d2.ogg
new file mode 100644
index 0000000..dfd702b
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_d2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg
new file mode 100644
index 0000000..eb6045d
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp2.ogg
new file mode 100644
index 0000000..5ac16dd
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_dsharp2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg
new file mode 100644
index 0000000..94977e0
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e2.ogg
new file mode 100644
index 0000000..1dcc0c4
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_e2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg
new file mode 100644
index 0000000..221d926
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f2.ogg
new file mode 100644
index 0000000..acf10db
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_f2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg
new file mode 100644
index 0000000..7af83a8
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp2.ogg
new file mode 100644
index 0000000..a96f637
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_fsharp2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg
new file mode 100644
index 0000000..480ca36
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g2.ogg
new file mode 100644
index 0000000..917b2b9
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_g2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg
new file mode 100644
index 0000000..2e71fea
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp2.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp2.ogg
new file mode 100644
index 0000000..941c685
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_gsharp2.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_hihat.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_hihat.ogg
new file mode 100644
index 0000000..0afa7c0
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_hihat.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg
new file mode 100644
index 0000000..10d585b
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_kick.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_litecrash.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_litecrash.ogg
new file mode 100644
index 0000000..79ab256
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_litecrash.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg
new file mode 100644
index 0000000..83a7944
--- /dev/null
+++ b/mesecons/mesecons_noteblock/sounds/mesecons_noteblock_snare.ogg
Binary files differ
diff --git a/mesecons/mesecons_noteblock/textures/mesecons_noteblock.png b/mesecons/mesecons_noteblock/textures/mesecons_noteblock.png
new file mode 100644
index 0000000..7158a49
--- /dev/null
+++ b/mesecons/mesecons_noteblock/textures/mesecons_noteblock.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/depends.txt b/mesecons/mesecons_pistons/depends.txt
new file mode 100644
index 0000000..01f085b
--- /dev/null
+++ b/mesecons/mesecons_pistons/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+mesecons_mvps
diff --git a/mesecons/mesecons_pistons/doc/piston/description.html b/mesecons/mesecons_pistons/doc/piston/description.html
new file mode 100644
index 0000000..d95dfb9
--- /dev/null
+++ b/mesecons/mesecons_pistons/doc/piston/description.html
@@ -0,0 +1 @@
+Pistons are effectors, they push up to 20 blocks in front of them. The push direction can be set by placing them from different angles.
diff --git a/mesecons/mesecons_pistons/doc/piston/preview.png b/mesecons/mesecons_pistons/doc/piston/preview.png
new file mode 100644
index 0000000..9e9ede3
--- /dev/null
+++ b/mesecons/mesecons_pistons/doc/piston/preview.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/doc/piston/recipe.png b/mesecons/mesecons_pistons/doc/piston/recipe.png
new file mode 100644
index 0000000..0a71159
--- /dev/null
+++ b/mesecons/mesecons_pistons/doc/piston/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/doc/piston_sticky/description.html b/mesecons/mesecons_pistons/doc/piston_sticky/description.html
new file mode 100644
index 0000000..3974097
--- /dev/null
+++ b/mesecons/mesecons_pistons/doc/piston_sticky/description.html
@@ -0,0 +1 @@
+Sticky pistons are effectors, they push up to 20 blocks in front of them. The push direction can be set by placing them from different angles. Sticky ones also pull 1 block.
diff --git a/mesecons/mesecons_pistons/doc/piston_sticky/preview.png b/mesecons/mesecons_pistons/doc/piston_sticky/preview.png
new file mode 100644
index 0000000..716d675
--- /dev/null
+++ b/mesecons/mesecons_pistons/doc/piston_sticky/preview.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/doc/piston_sticky/recipe.png b/mesecons/mesecons_pistons/doc/piston_sticky/recipe.png
new file mode 100644
index 0000000..3520736
--- /dev/null
+++ b/mesecons/mesecons_pistons/doc/piston_sticky/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/init.lua b/mesecons/mesecons_pistons/init.lua
new file mode 100644
index 0000000..bad061a
--- /dev/null
+++ b/mesecons/mesecons_pistons/init.lua
@@ -0,0 +1,761 @@
+-- Get mesecon rules of pistons
+piston_rules =
+{{x=0, y=0, z=1}, --everything apart from z- (pusher side)
+ {x=1, y=0, z=0},
+ {x=-1, y=0, z=0},
+ {x=1, y=1, z=0},
+ {x=1, y=-1, z=0},
+ {x=-1, y=1, z=0},
+ {x=-1, y=-1, z=0},
+ {x=0, y=1, z=1},
+ {x=0, y=-1, z=1}}
+
+local piston_up_rules =
+{{x=0, y=0, z=-1}, --everything apart from y+ (pusher side)
+ {x=1, y=0, z=0},
+ {x=-1, y=0, z=0},
+ {x=0, y=0, z=1},
+ {x=1, y=-1, z=0},
+ {x=-1, y=-1, z=0},
+ {x=0, y=-1, z=1},
+ {x=0, y=-1, z=-1}}
+
+local piston_down_rules =
+{{x=0, y=0, z=-1}, --everything apart from y- (pusher side)
+ {x=1, y=0, z=0},
+ {x=-1, y=0, z=0},
+ {x=0, y=0, z=1},
+ {x=1, y=1, z=0},
+ {x=-1, y=1, z=0},
+ {x=0, y=1, z=1},
+ {x=0, y=1, z=-1}}
+
+local piston_get_rules = function (node)
+ local rules = piston_rules
+ for i = 1, node.param2 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+ return rules
+end
+
+piston_facedir_direction = function (node)
+ local rules = {{x = 0, y = 0, z = -1}}
+ for i = 1, node.param2 do
+ rules = mesecon.rotate_rules_left(rules)
+ end
+ return rules[1]
+end
+
+piston_get_direction = function(dir, node)
+ if type(dir) == "function" then
+ return dir(node)
+ else
+ return dir
+ end
+end
+
+local piston_remove_pusher = function(pos, node)
+ local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
+ local dir = piston_get_direction(pistonspec.dir, node)
+ local pusherpos = mesecon.addPosRule(pos, dir)
+ local pushername = minetest.get_node(pusherpos).name
+
+ -- make sure there actually is a pusher (for compatibility reasons mainly)
+ if pushername ~= pistonspec.pusher then
+ return
+ end
+
+ minetest.remove_node(pusherpos)
+ minetest.sound_play("piston_retract", {
+ pos = pos,
+ max_hear_distance = 20,
+ gain = 0.3,
+ })
+ nodeupdate(pusherpos)
+end
+
+local piston_on = function(pos, node)
+ local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
+
+ local dir = piston_get_direction(pistonspec.dir, node)
+ local np = mesecon.addPosRule(pos, dir)
+ local maxpush = mesecon.setting("piston_max_push", 15)
+ local success, stack, oldstack = mesecon.mvps_push(np, dir, maxpush)
+ if success then
+ minetest.add_node(pos, {param2 = node.param2, name = pistonspec.onname})
+ minetest.add_node(np, {param2 = node.param2, name = pistonspec.pusher})
+ minetest.sound_play("piston_extend", {
+ pos = pos,
+ max_hear_distance = 20,
+ gain = 0.3,
+ })
+ mesecon.mvps_process_stack(stack)
+ mesecon.mvps_move_objects(np, dir, oldstack)
+ end
+end
+
+local piston_off = function(pos, node)
+ local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
+ minetest.add_node(pos, {param2 = node.param2, name = pistonspec.offname})
+ piston_remove_pusher(pos, node)
+
+ if pistonspec.sticky then
+ local maxpull = mesecon.setting("piston_max_pull", 15)
+ local dir = piston_get_direction(pistonspec.dir, node)
+ local pullpos = vector.add(pos, vector.multiply(dir, 2))
+ local stack = mesecon.mvps_pull_single(pullpos, vector.multiply(dir, -1), maxpull)
+ mesecon.mvps_process_stack(pos, dir, stack)
+ end
+end
+
+local piston_orientate = function(pos, placer)
+ -- not placed by player
+ if not placer then return end
+
+ -- placer pitch in degrees
+ local pitch = placer:get_look_pitch() * (180 / math.pi)
+
+ local node = minetest.get_node(pos)
+ local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
+ if pitch > 55 then --looking upwards
+ minetest.add_node(pos, {name=pistonspec.piston_down})
+ elseif pitch < -55 then --looking downwards
+ minetest.add_node(pos, {name=pistonspec.piston_up})
+ end
+end
+
+
+-- Horizontal pistons
+
+local pt = 3/16 -- pusher thickness
+
+local piston_pusher_box = {
+ type = "fixed",
+ fixed = {
+ {-2/16, -2/16, -.5 + pt, 2/16, 2/16, .5 + pt},
+ {-.5 , -.5 , -.5 , .5 , .5 , -.5 + pt},
+ }
+}
+
+local piston_on_box = {
+ type = "fixed",
+ fixed = {
+ {-.5, -.5, -.5 + pt, .5, .5, .5}
+ }
+}
+
+
+-- Normal (non-sticky) ones:
+
+local pistonspec_normal = {
+ offname = "mesecons_pistons:piston_normal_off",
+ onname = "mesecons_pistons:piston_normal_on",
+ dir = piston_facedir_direction,
+ pusher = "mesecons_pistons:piston_pusher_normal",
+ piston_down = "mesecons_pistons:piston_down_normal_off",
+ piston_up = "mesecons_pistons:piston_up_normal_off",
+}
+
+-- offstate
+minetest.register_node("mesecons_pistons:piston_normal_off", {
+ description = "Piston",
+ tiles = {
+ "mesecons_piston_top.png",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_left.png",
+ "mesecons_piston_right.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_pusher_front.png"
+ },
+ groups = {cracky = 3},
+ paramtype2 = "facedir",
+ after_place_node = piston_orientate,
+ mesecons_piston = pistonspec_normal,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_on = piston_on,
+ rules = piston_get_rules
+ }}
+})
+
+-- onstate
+minetest.register_node("mesecons_pistons:piston_normal_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_top.png",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_left.png",
+ "mesecons_piston_right.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_on_front.png"
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_normal_off",
+ after_dig_node = piston_remove_pusher,
+ node_box = piston_on_box,
+ selection_box = piston_on_box,
+ mesecons_piston = pistonspec_normal,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_off = piston_off,
+ rules = piston_get_rules
+ }}
+})
+
+-- pusher
+minetest.register_node("mesecons_pistons:piston_pusher_normal", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_pusher_top.png",
+ "mesecons_piston_pusher_bottom.png",
+ "mesecons_piston_pusher_left.png",
+ "mesecons_piston_pusher_right.png",
+ "mesecons_piston_pusher_back.png",
+ "mesecons_piston_pusher_front.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ diggable = false,
+ corresponding_piston = "mesecons_pistons:piston_normal_on",
+ selection_box = piston_pusher_box,
+ node_box = piston_pusher_box,
+})
+
+-- Sticky ones
+
+local pistonspec_sticky = {
+ offname = "mesecons_pistons:piston_sticky_off",
+ onname = "mesecons_pistons:piston_sticky_on",
+ dir = piston_facedir_direction,
+ pusher = "mesecons_pistons:piston_pusher_sticky",
+ sticky = true,
+ piston_down = "mesecons_pistons:piston_down_sticky_off",
+ piston_up = "mesecons_pistons:piston_up_sticky_off",
+}
+
+-- offstate
+minetest.register_node("mesecons_pistons:piston_sticky_off", {
+ description = "Sticky Piston",
+ tiles = {
+ "mesecons_piston_top.png",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_left.png",
+ "mesecons_piston_right.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_pusher_front_sticky.png"
+ },
+ groups = {cracky = 3},
+ paramtype2 = "facedir",
+ after_place_node = piston_orientate,
+ mesecons_piston = pistonspec_sticky,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_on = piston_on,
+ rules = piston_get_rules
+ }}
+})
+
+-- onstate
+minetest.register_node("mesecons_pistons:piston_sticky_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_top.png",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_left.png",
+ "mesecons_piston_right.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_on_front.png"
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_sticky_off",
+ after_dig_node = piston_remove_pusher,
+ node_box = piston_on_box,
+ selection_box = piston_on_box,
+ mesecons_piston = pistonspec_sticky,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_off = piston_off,
+ rules = piston_get_rules
+ }}
+})
+
+-- pusher
+minetest.register_node("mesecons_pistons:piston_pusher_sticky", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_pusher_top.png",
+ "mesecons_piston_pusher_bottom.png",
+ "mesecons_piston_pusher_left.png",
+ "mesecons_piston_pusher_right.png",
+ "mesecons_piston_pusher_back.png",
+ "mesecons_piston_pusher_front_sticky.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ diggable = false,
+ corresponding_piston = "mesecons_pistons:piston_sticky_on",
+ selection_box = piston_pusher_box,
+ node_box = piston_pusher_box,
+})
+
+--
+--
+-- UP
+--
+--
+
+local piston_up_pusher_box = {
+ type = "fixed",
+ fixed = {
+ {-2/16, -.5 - pt, -2/16, 2/16, .5 - pt, 2/16},
+ {-.5 , .5 - pt, -.5 , .5 , .5 , .5},
+ }
+}
+
+local piston_up_on_box = {
+ type = "fixed",
+ fixed = {
+ {-.5, -.5, -.5 , .5, .5-pt, .5}
+ }
+}
+
+-- Normal
+
+local pistonspec_normal_up = {
+ offname = "mesecons_pistons:piston_up_normal_off",
+ onname = "mesecons_pistons:piston_up_normal_on",
+ dir = {x = 0, y = 1, z = 0},
+ pusher = "mesecons_pistons:piston_up_pusher_normal"
+}
+
+-- offstate
+minetest.register_node("mesecons_pistons:piston_up_normal_off", {
+ tiles = {
+ "mesecons_piston_pusher_front.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_left.png^[transformR270",
+ "mesecons_piston_right.png^[transformR90",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_top.png^[transformR180",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_normal_off",
+ mesecons_piston = pistonspec_normal_up,
+ mesecons = {effector={
+ action_on = piston_on,
+ rules = piston_up_rules,
+ }}
+})
+
+-- onstate
+minetest.register_node("mesecons_pistons:piston_up_normal_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_on_front.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_left.png^[transformR270",
+ "mesecons_piston_right.png^[transformR90",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_top.png^[transformR180",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_normal_off",
+ after_dig_node = piston_remove_pusher,
+ node_box = piston_up_on_box,
+ selection_box = piston_up_on_box,
+ mesecons_piston = pistonspec_normal_up,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_off = piston_off,
+ rules = piston_up_rules,
+ }}
+})
+
+-- pusher
+minetest.register_node("mesecons_pistons:piston_up_pusher_normal", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_pusher_front.png",
+ "mesecons_piston_pusher_back.png",
+ "mesecons_piston_pusher_left.png^[transformR270",
+ "mesecons_piston_pusher_right.png^[transformR90",
+ "mesecons_piston_pusher_bottom.png",
+ "mesecons_piston_pusher_top.png^[transformR180",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ diggable = false,
+ corresponding_piston = "mesecons_pistons:piston_up_normal_on",
+ selection_box = piston_up_pusher_box,
+ node_box = piston_up_pusher_box,
+})
+
+
+
+-- Sticky
+
+
+local pistonspec_sticky_up = {
+ offname = "mesecons_pistons:piston_up_sticky_off",
+ onname = "mesecons_pistons:piston_up_sticky_on",
+ dir = {x = 0, y = 1, z = 0},
+ pusher = "mesecons_pistons:piston_up_pusher_sticky",
+ sticky = true
+}
+
+-- offstate
+minetest.register_node("mesecons_pistons:piston_up_sticky_off", {
+ tiles = {
+ "mesecons_piston_pusher_front_sticky.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_left.png^[transformR270",
+ "mesecons_piston_right.png^[transformR90",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_top.png^[transformR180",
+ "mesecons_piston_tb.png"
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_sticky_off",
+ mesecons_piston = pistonspec_sticky_up,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_on = piston_on,
+ rules = piston_up_rules,
+ }}
+})
+
+-- onstate
+minetest.register_node("mesecons_pistons:piston_up_sticky_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_on_front.png",
+ "mesecons_piston_back.png",
+ "mesecons_piston_left.png^[transformR270",
+ "mesecons_piston_right.png^[transformR90",
+ "mesecons_piston_bottom.png",
+ "mesecons_piston_top.png^[transformR180",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_normal_off",
+ after_dig_node = piston_remove_pusher,
+ node_box = piston_up_on_box,
+ selection_box = piston_up_on_box,
+ mesecons_piston = pistonspec_sticky_up,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_off = piston_off,
+ rules = piston_up_rules,
+ }}
+})
+
+-- pusher
+minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_pusher_front_sticky.png",
+ "mesecons_piston_pusher_back.png",
+ "mesecons_piston_pusher_left.png^[transformR270",
+ "mesecons_piston_pusher_right.png^[transformR90",
+ "mesecons_piston_pusher_bottom.png",
+ "mesecons_piston_pusher_top.png^[transformR180",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ diggable = false,
+ corresponding_piston = "mesecons_pistons:piston_up_sticky_on",
+ selection_box = piston_up_pusher_box,
+ node_box = piston_up_pusher_box,
+})
+
+--
+--
+-- DOWN
+--
+--
+
+local piston_down_pusher_box = {
+ type = "fixed",
+ fixed = {
+ {-2/16, -.5 + pt, -2/16, 2/16, .5 + pt, 2/16},
+ {-.5 , -.5 , -.5 , .5 , -.5 + pt, .5},
+ }
+}
+
+local piston_down_on_box = {
+ type = "fixed",
+ fixed = {
+ {-.5, -.5+pt, -.5 , .5, .5, .5}
+ }
+}
+
+
+
+-- Normal
+
+local pistonspec_normal_down = {
+ offname = "mesecons_pistons:piston_down_normal_off",
+ onname = "mesecons_pistons:piston_down_normal_on",
+ dir = {x = 0, y = -1, z = 0},
+ pusher = "mesecons_pistons:piston_down_pusher_normal",
+}
+
+-- offstate
+minetest.register_node("mesecons_pistons:piston_down_normal_off", {
+ tiles = {
+ "mesecons_piston_back.png",
+ "mesecons_piston_pusher_front.png",
+ "mesecons_piston_left.png^[transformR90",
+ "mesecons_piston_right.png^[transformR270",
+ "mesecons_piston_bottom.png^[transformR180",
+ "mesecons_piston_top.png",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_normal_off",
+ mesecons_piston = pistonspec_normal_down,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_on = piston_on,
+ rules = piston_down_rules,
+ }}
+})
+
+-- onstate
+minetest.register_node("mesecons_pistons:piston_down_normal_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_back.png",
+ "mesecons_piston_on_front.png",
+ "mesecons_piston_left.png^[transformR90",
+ "mesecons_piston_right.png^[transformR270",
+ "mesecons_piston_bottom.png^[transformR180",
+ "mesecons_piston_top.png",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_normal_off",
+ after_dig_node = piston_remove_pusher,
+ node_box = piston_down_on_box,
+ selection_box = piston_down_on_box,
+ mesecons_piston = pistonspec_normal_down,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_off = piston_off,
+ rules = piston_down_rules,
+ }}
+})
+
+-- pusher
+minetest.register_node("mesecons_pistons:piston_down_pusher_normal", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_pusher_back.png",
+ "mesecons_piston_pusher_front.png",
+ "mesecons_piston_pusher_left.png^[transformR90",
+ "mesecons_piston_pusher_right.png^[transformR270",
+ "mesecons_piston_pusher_bottom.png^[transformR180",
+ "mesecons_piston_pusher_top.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ diggable = false,
+ corresponding_piston = "mesecons_pistons:piston_down_normal_on",
+ selection_box = piston_down_pusher_box,
+ node_box = piston_down_pusher_box,
+})
+
+-- Sticky
+
+local pistonspec_sticky_down = {
+ onname = "mesecons_pistons:piston_down_sticky_on",
+ offname = "mesecons_pistons:piston_down_sticky_off",
+ dir = {x = 0, y = -1, z = 0},
+ pusher = "mesecons_pistons:piston_down_pusher_sticky",
+ sticky = true
+}
+
+-- offstate
+minetest.register_node("mesecons_pistons:piston_down_sticky_off", {
+ tiles = {
+ "mesecons_piston_back.png",
+ "mesecons_piston_pusher_front_sticky.png",
+ "mesecons_piston_left.png^[transformR90",
+ "mesecons_piston_right.png^[transformR270",
+ "mesecons_piston_bottom.png^[transformR180",
+ "mesecons_piston_top.png",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_sticky_off",
+ mesecons_piston = pistonspec_sticky_down,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_on = piston_on,
+ rules = piston_down_rules,
+ }}
+})
+
+-- onstate
+minetest.register_node("mesecons_pistons:piston_down_sticky_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_back.png",
+ "mesecons_piston_on_front.png",
+ "mesecons_piston_left.png^[transformR90",
+ "mesecons_piston_right.png^[transformR270",
+ "mesecons_piston_bottom.png^[transformR180",
+ "mesecons_piston_top.png",
+ },
+ inventory_image = "mesecons_piston_top.png",
+ wield_image = "mesecons_piston_top.png",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drop = "mesecons_pistons:piston_sticky_off",
+ after_dig_node = piston_remove_pusher,
+ node_box = piston_down_on_box,
+ selection_box = piston_down_on_box,
+ mesecons_piston = pistonspec_sticky_down,
+ sounds = default.node_sound_wood_defaults(),
+ mesecons = {effector={
+ action_off = piston_off,
+ rules = piston_down_rules,
+ }}
+})
+
+-- pusher
+minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", {
+ drawtype = "nodebox",
+ tiles = {
+ "mesecons_piston_pusher_back.png",
+ "mesecons_piston_pusher_front_sticky.png",
+ "mesecons_piston_pusher_left.png^[transformR90",
+ "mesecons_piston_pusher_right.png^[transformR270",
+ "mesecons_piston_pusher_bottom.png^[transformR180",
+ "mesecons_piston_pusher_top.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ diggable = false,
+ corresponding_piston = "mesecons_pistons:piston_down_sticky_on",
+ selection_box = piston_down_pusher_box,
+ node_box = piston_down_pusher_box,
+})
+
+
+-- Register pushers as stoppers if they would be seperated from the piston
+local piston_pusher_get_stopper = function (node, dir, stack, stackid)
+ if (stack[stackid + 1]
+ and stack[stackid + 1].node.name == minetest.registered_nodes[node.name].corresponding_piston
+ and stack[stackid + 1].node.param2 == node.param2)
+ or (stack[stackid - 1]
+ and stack[stackid - 1].node.name == minetest.registered_nodes[node.name].corresponding_piston
+ and stack[stackid - 1].node.param2 == node.param2) then
+ return false
+ end
+ return true
+end
+
+local piston_pusher_up_down_get_stopper = function (node, dir, stack, stackid)
+ if (stack[stackid + 1]
+ and stack[stackid + 1].node.name == minetest.registered_nodes[node.name].corresponding_piston)
+ or (stack[stackid - 1]
+ and stack[stackid - 1].node.name == minetest.registered_nodes[node.name].corresponding_piston) then
+ return false
+ end
+ return true
+end
+
+mesecon.register_mvps_stopper("mesecons_pistons:piston_pusher_normal", piston_pusher_get_stopper)
+mesecon.register_mvps_stopper("mesecons_pistons:piston_pusher_sticky", piston_pusher_get_stopper)
+
+mesecon.register_mvps_stopper("mesecons_pistons:piston_up_pusher_normal", piston_pusher_up_down_get_stopper)
+mesecon.register_mvps_stopper("mesecons_pistons:piston_up_pusher_sticky", piston_pusher_up_down_get_stopper)
+
+mesecon.register_mvps_stopper("mesecons_pistons:piston_down_pusher_normal", piston_pusher_up_down_get_stopper)
+mesecon.register_mvps_stopper("mesecons_pistons:piston_down_pusher_sticky", piston_pusher_up_down_get_stopper)
+
+
+-- Register pistons as stoppers if they would be seperated from the stopper
+local piston_up_down_get_stopper = function (node, dir, stack, stackid)
+ if (stack[stackid + 1]
+ and stack[stackid + 1].node.name == minetest.registered_nodes[node.name].mesecons_piston.pusher)
+ or (stack[stackid - 1]
+ and stack[stackid - 1].node.name == minetest.registered_nodes[node.name].mesecons_piston.pusher) then
+ return false
+ end
+ return true
+end
+
+local piston_get_stopper = function (node, dir, stack, stackid)
+ pistonspec = minetest.registered_nodes[node.name].mesecons_piston
+ dir = piston_get_direction(pistonspec.dir, node)
+ local pusherpos = mesecon.addPosRule(stack[stackid].pos, dir)
+ local pushernode = minetest.get_node(pusherpos)
+
+ if minetest.registered_nodes[node.name].mesecons_piston.pusher == pushernode.name then
+ for _, s in ipairs(stack) do
+ if mesecon.cmpPos(s.pos, pusherpos) -- pusher is also to be pushed
+ and s.node.param2 == node.param2 then
+ return false
+ end
+ end
+ end
+ return true
+end
+
+mesecon.register_mvps_stopper("mesecons_pistons:piston_normal_on", piston_get_stopper)
+mesecon.register_mvps_stopper("mesecons_pistons:piston_sticky_on", piston_get_stopper)
+
+mesecon.register_mvps_stopper("mesecons_pistons:piston_up_normal_on", piston_up_down_get_stopper)
+mesecon.register_mvps_stopper("mesecons_pistons:piston_up_sticky_on", piston_up_down_get_stopper)
+
+mesecon.register_mvps_stopper("mesecons_pistons:piston_down_normal_on", piston_up_down_get_stopper)
+mesecon.register_mvps_stopper("mesecons_pistons:piston_down_sticky_on", piston_up_down_get_stopper)
+
+--craft recipes
+minetest.register_craft({
+ output = "mesecons_pistons:piston_normal_off 2",
+ recipe = {
+ {"group:wood", "group:wood", "group:wood"},
+ {"default:cobble", "default:steel_ingot", "default:cobble"},
+ {"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
+ }
+})
+
+minetest.register_craft({
+ output = "mesecons_pistons:piston_sticky_off",
+ recipe = {
+ {"mesecons_materials:glue"},
+ {"mesecons_pistons:piston_normal_off"},
+ }
+})
diff --git a/mesecons/mesecons_pistons/sounds/piston_extend.ogg b/mesecons/mesecons_pistons/sounds/piston_extend.ogg
new file mode 100644
index 0000000..e234ad9
--- /dev/null
+++ b/mesecons/mesecons_pistons/sounds/piston_extend.ogg
Binary files differ
diff --git a/mesecons/mesecons_pistons/sounds/piston_retract.ogg b/mesecons/mesecons_pistons/sounds/piston_retract.ogg
new file mode 100644
index 0000000..feb9f04
--- /dev/null
+++ b/mesecons/mesecons_pistons/sounds/piston_retract.ogg
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_back.png b/mesecons/mesecons_pistons/textures/mesecons_piston_back.png
new file mode 100644
index 0000000..6a57dce
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_back.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_bottom.png b/mesecons/mesecons_pistons/textures/mesecons_piston_bottom.png
new file mode 100644
index 0000000..5a3af9b
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_bottom.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_left.png b/mesecons/mesecons_pistons/textures/mesecons_piston_left.png
new file mode 100644
index 0000000..215dd73
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_left.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_on_front.png b/mesecons/mesecons_pistons/textures/mesecons_piston_on_front.png
new file mode 100644
index 0000000..0ade67e
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_on_front.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_back.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_back.png
new file mode 100644
index 0000000..fe87943
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_back.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png
new file mode 100644
index 0000000..87c4e81
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front.png
new file mode 100644
index 0000000..8ec9dc6
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png
new file mode 100644
index 0000000..e38b4e6
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_left.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_left.png
new file mode 100644
index 0000000..bc5495b
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_left.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_right.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_right.png
new file mode 100644
index 0000000..32ee32f
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_right.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_top.png b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_top.png
new file mode 100644
index 0000000..72f04e9
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_pusher_top.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_right.png b/mesecons/mesecons_pistons/textures/mesecons_piston_right.png
new file mode 100644
index 0000000..176463c
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_right.png
Binary files differ
diff --git a/mesecons/mesecons_pistons/textures/mesecons_piston_top.png b/mesecons/mesecons_pistons/textures/mesecons_piston_top.png
new file mode 100644
index 0000000..5c8bace
--- /dev/null
+++ b/mesecons/mesecons_pistons/textures/mesecons_piston_top.png
Binary files differ
diff --git a/mesecons/mesecons_powerplant/depends.txt b/mesecons/mesecons_powerplant/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_powerplant/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_powerplant/doc/powerplant/description.html b/mesecons/mesecons_powerplant/doc/powerplant/description.html
new file mode 100644
index 0000000..12abbbb
--- /dev/null
+++ b/mesecons/mesecons_powerplant/doc/powerplant/description.html
@@ -0,0 +1 @@
+A power plant is a receptor that is always turned on: It provides energy.
diff --git a/mesecons/mesecons_powerplant/doc/powerplant/preview.png b/mesecons/mesecons_powerplant/doc/powerplant/preview.png
new file mode 100644
index 0000000..473d15c
--- /dev/null
+++ b/mesecons/mesecons_powerplant/doc/powerplant/preview.png
Binary files differ
diff --git a/mesecons/mesecons_powerplant/doc/powerplant/recipe.png b/mesecons/mesecons_powerplant/doc/powerplant/recipe.png
new file mode 100644
index 0000000..04a4002
--- /dev/null
+++ b/mesecons/mesecons_powerplant/doc/powerplant/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_powerplant/init.lua b/mesecons/mesecons_powerplant/init.lua
new file mode 100644
index 0000000..a5e3327
--- /dev/null
+++ b/mesecons/mesecons_powerplant/init.lua
@@ -0,0 +1,31 @@
+-- The POWER_PLANT
+-- Just emits power. always.
+
+minetest.register_node("mesecons_powerplant:power_plant", {
+ drawtype = "plantlike",
+ visual_scale = 1,
+ tiles = {"jeija_power_plant.png"},
+ inventory_image = "jeija_power_plant.png",
+ paramtype = "light",
+ walkable = false,
+ groups = {dig_immediate=3, mesecon = 2},
+ light_source = default.LIGHT_MAX-9,
+ description="Power Plant",
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3},
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.on
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_powerplant:power_plant 1",
+ recipe = {
+ {"group:mesecon_conductor_craftable"},
+ {"group:mesecon_conductor_craftable"},
+ {"group:sapling"},
+ }
+})
diff --git a/mesecons/mesecons_powerplant/textures/jeija_power_plant.png b/mesecons/mesecons_powerplant/textures/jeija_power_plant.png
new file mode 100644
index 0000000..edc8891
--- /dev/null
+++ b/mesecons/mesecons_powerplant/textures/jeija_power_plant.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/depends.txt b/mesecons/mesecons_pressureplates/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_pressureplates/doc/pressureplate_stone/description.html b/mesecons/mesecons_pressureplates/doc/pressureplate_stone/description.html
new file mode 100644
index 0000000..3edc95b
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/doc/pressureplate_stone/description.html
@@ -0,0 +1 @@
+This receptor turns on if there's an object above it. And object can be a player, an item, a mob...
diff --git a/mesecons/mesecons_pressureplates/doc/pressureplate_stone/preview.png b/mesecons/mesecons_pressureplates/doc/pressureplate_stone/preview.png
new file mode 100644
index 0000000..235ffc4
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/doc/pressureplate_stone/preview.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/doc/pressureplate_stone/recipe.png b/mesecons/mesecons_pressureplates/doc/pressureplate_stone/recipe.png
new file mode 100644
index 0000000..62acf45
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/doc/pressureplate_stone/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/doc/pressureplate_wood/description.html b/mesecons/mesecons_pressureplates/doc/pressureplate_wood/description.html
new file mode 100644
index 0000000..3edc95b
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/doc/pressureplate_wood/description.html
@@ -0,0 +1 @@
+This receptor turns on if there's an object above it. And object can be a player, an item, a mob...
diff --git a/mesecons/mesecons_pressureplates/doc/pressureplate_wood/preview.png b/mesecons/mesecons_pressureplates/doc/pressureplate_wood/preview.png
new file mode 100644
index 0000000..7063cb0
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/doc/pressureplate_wood/preview.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/doc/pressureplate_wood/recipe.png b/mesecons/mesecons_pressureplates/doc/pressureplate_wood/recipe.png
new file mode 100644
index 0000000..429d491
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/doc/pressureplate_wood/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/init.lua b/mesecons/mesecons_pressureplates/init.lua
new file mode 100644
index 0000000..b00db9a
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/init.lua
@@ -0,0 +1,94 @@
+local pp_box_off = {
+ type = "fixed",
+ fixed = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+}
+
+local pp_box_on = {
+ type = "fixed",
+ fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 },
+}
+
+pp_on_timer = function (pos, elapsed)
+ local node = minetest.get_node(pos)
+ local basename = minetest.registered_nodes[node.name].pressureplate_basename
+
+ -- This is a workaround for a strange bug that occurs when the server is started
+ -- For some reason the first time on_timer is called, the pos is wrong
+ if not basename then return end
+
+ local objs = minetest.get_objects_inside_radius(pos, 1)
+ local two_below = mesecon.addPosRule(pos, {x = 0, y = -2, z = 0})
+
+ if objs[1] == nil and node.name == basename .. "_on" then
+ minetest.add_node(pos, {name = basename .. "_off"})
+ mesecon.receptor_off(pos, mesecon.rules.pplate)
+ elseif node.name == basename .. "_off" then
+ for k, obj in pairs(objs) do
+ local objpos = obj:getpos()
+ if objpos.y > pos.y-1 and objpos.y < pos.y then
+ minetest.add_node(pos, {name = basename .. "_on"})
+ mesecon.receptor_on(pos, mesecon.rules.pplate )
+ end
+ end
+ end
+ return true
+end
+
+-- Register a Pressure Plate
+-- offstate: name of the pressure plate when inactive
+-- onstate: name of the pressure plate when active
+-- description: description displayed in the player's inventory
+-- tiles_off: textures of the pressure plate when inactive
+-- tiles_on: textures of the pressure plate when active
+-- image: inventory and wield image of the pressure plate
+-- recipe: crafting recipe of the pressure plate
+
+function mesecon.register_pressure_plate(basename, description, textures_off, textures_on, image_w, image_i, recipe)
+ mesecon.register_node(basename, {
+ drawtype = "nodebox",
+ inventory_image = image_i,
+ wield_image = image_w,
+ paramtype = "light",
+ description = description,
+ pressureplate_basename = basename,
+ on_timer = pp_on_timer,
+ on_construct = function(pos)
+ minetest.get_node_timer(pos):start(mesecon.setting("pplate_interval", 0.1))
+ end,
+ },{
+ mesecons = {receptor = { state = mesecon.state.off, rules = mesecon.rules.pplate }},
+ node_box = pp_box_off,
+ selection_box = pp_box_off,
+ groups = {snappy = 2, oddly_breakable_by_hand = 3},
+ tiles = textures_off
+ },{
+ mesecons = {receptor = { state = mesecon.state.on, rules = mesecon.rules.pplate }},
+ node_box = pp_box_on,
+ selection_box = pp_box_on,
+ groups = {snappy = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1},
+ tiles = textures_on
+ })
+
+ minetest.register_craft({
+ output = basename .. "_off",
+ recipe = recipe,
+ })
+end
+
+mesecon.register_pressure_plate(
+ "mesecons_pressureplates:pressure_plate_wood",
+ "Wooden Pressure Plate",
+ {"jeija_pressure_plate_wood_off.png","jeija_pressure_plate_wood_off.png","jeija_pressure_plate_wood_off_edges.png"},
+ {"jeija_pressure_plate_wood_on.png","jeija_pressure_plate_wood_on.png","jeija_pressure_plate_wood_on_edges.png"},
+ "jeija_pressure_plate_wood_wield.png",
+ "jeija_pressure_plate_wood_inv.png",
+ {{"group:wood", "group:wood"}})
+
+mesecon.register_pressure_plate(
+ "mesecons_pressureplates:pressure_plate_stone",
+ "Stone Pressure Plate",
+ {"jeija_pressure_plate_stone_off.png","jeija_pressure_plate_stone_off.png","jeija_pressure_plate_stone_off_edges.png"},
+ {"jeija_pressure_plate_stone_on.png","jeija_pressure_plate_stone_on.png","jeija_pressure_plate_stone_on_edges.png"},
+ "jeija_pressure_plate_stone_wield.png",
+ "jeija_pressure_plate_stone_inv.png",
+ {{"default:cobble", "default:cobble"}})
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png
new file mode 100644
index 0000000..bfe5a1d
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png
new file mode 100644
index 0000000..46140da
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png
new file mode 100644
index 0000000..2ad9acc
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png
new file mode 100644
index 0000000..dc64931
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png
new file mode 100644
index 0000000..51add95
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png
new file mode 100644
index 0000000..c533567
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png
new file mode 100644
index 0000000..36dacd0
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png
new file mode 100644
index 0000000..ca98757
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png
new file mode 100644
index 0000000..665ae97
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png
new file mode 100644
index 0000000..e1a7d8e
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png
new file mode 100644
index 0000000..358f2ea
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png
Binary files differ
diff --git a/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png
new file mode 100644
index 0000000..50b321d
--- /dev/null
+++ b/mesecons/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png
Binary files differ
diff --git a/mesecons/mesecons_random/depends.txt b/mesecons/mesecons_random/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_random/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_random/doc/ghoststone/description.html b/mesecons/mesecons_random/doc/ghoststone/description.html
new file mode 100644
index 0000000..138a2b3
--- /dev/null
+++ b/mesecons/mesecons_random/doc/ghoststone/description.html
@@ -0,0 +1 @@
+Ghoststones disappear when powered, just like Removestones. But in contrast to Removestones, they Reappear again when not powered anymore and they are also conductive.
diff --git a/mesecons/mesecons_random/doc/ghoststone/preview.png b/mesecons/mesecons_random/doc/ghoststone/preview.png
new file mode 100644
index 0000000..4ab33fb
--- /dev/null
+++ b/mesecons/mesecons_random/doc/ghoststone/preview.png
Binary files differ
diff --git a/mesecons/mesecons_random/doc/ghoststone/recipe.png b/mesecons/mesecons_random/doc/ghoststone/recipe.png
new file mode 100644
index 0000000..3bd385d
--- /dev/null
+++ b/mesecons/mesecons_random/doc/ghoststone/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_random/doc/removestone/description.html b/mesecons/mesecons_random/doc/removestone/description.html
new file mode 100644
index 0000000..d540fe9
--- /dev/null
+++ b/mesecons/mesecons_random/doc/removestone/description.html
@@ -0,0 +1 @@
+Removestones are propably the simplest effectors possible. They simply disappear when powered.
diff --git a/mesecons/mesecons_random/doc/removestone/preview.png b/mesecons/mesecons_random/doc/removestone/preview.png
new file mode 100644
index 0000000..15caf3f
--- /dev/null
+++ b/mesecons/mesecons_random/doc/removestone/preview.png
Binary files differ
diff --git a/mesecons/mesecons_random/doc/removestone/recipe.png b/mesecons/mesecons_random/doc/removestone/recipe.png
new file mode 100644
index 0000000..f271963
--- /dev/null
+++ b/mesecons/mesecons_random/doc/removestone/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_random/init.lua b/mesecons/mesecons_random/init.lua
new file mode 100644
index 0000000..0136309
--- /dev/null
+++ b/mesecons/mesecons_random/init.lua
@@ -0,0 +1,85 @@
+-- REMOVESTONE
+
+minetest.register_node("mesecons_random:removestone", {
+ tiles = {"jeija_removestone.png"},
+ inventory_image = minetest.inventorycube("jeija_removestone_inv.png"),
+ groups = {cracky=3},
+ description="Removestone",
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.remove_node(pos)
+ mesecon.update_autoconnect(pos)
+ end
+ }}
+})
+
+minetest.register_craft({
+ output = 'mesecons_random:removestone 4',
+ recipe = {
+ {"", "default:cobble", ""},
+ {"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
+ {"", "default:cobble", ""},
+ }
+})
+
+-- GHOSTSTONE
+
+minetest.register_node("mesecons_random:ghoststone", {
+ description="ghoststone",
+ tiles = {"jeija_ghoststone.png"},
+ is_ground_content = true,
+ inventory_image = minetest.inventorycube("jeija_ghoststone_inv.png"),
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ rules = { --axes
+ {x = -1, y = 0, z = 0},
+ {x = 1, y = 0, z = 0},
+ {x = 0, y = -1, z = 0},
+ {x = 0, y = 1, z = 0},
+ {x = 0, y = 0, z = -1},
+ {x = 0, y = 0, z = 1},
+ },
+ onstate = "mesecons_random:ghoststone_active"
+ }}
+})
+
+minetest.register_node("mesecons_random:ghoststone_active", {
+ drawtype = "airlike",
+ pointable = false,
+ walkable = false,
+ diggable = false,
+ sunlight_propagates = true,
+ paramtype = "light",
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ rules = {
+ {x = -1, y = 0, z = 0},
+ {x = 1, y = 0, z = 0},
+ {x = 0, y = -1, z = 0},
+ {x = 0, y = 1, z = 0},
+ {x = 0, y = 0, z = -1},
+ {x = 0, y = 0, z = 1},
+ },
+ offstate = "mesecons_random:ghoststone"
+ }},
+ on_construct = function(pos)
+ --remove shadow
+ pos2 = {x = pos.x, y = pos.y + 1, z = pos.z}
+ if ( minetest.get_node(pos2).name == "air" ) then
+ minetest.dig_node(pos2)
+ end
+ end
+})
+
+
+minetest.register_craft({
+ output = 'mesecons_random:ghoststone 4',
+ recipe = {
+ {"default:steel_ingot", "default:cobble", "default:steel_ingot"},
+ {"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
+ {"default:steel_ingot", "default:cobble", "default:steel_ingot"},
+ }
+})
diff --git a/mesecons/mesecons_random/textures/jeija_ghoststone.png b/mesecons/mesecons_random/textures/jeija_ghoststone.png
new file mode 100644
index 0000000..1917b7c
--- /dev/null
+++ b/mesecons/mesecons_random/textures/jeija_ghoststone.png
Binary files differ
diff --git a/mesecons/mesecons_random/textures/jeija_ghoststone_inv.png b/mesecons/mesecons_random/textures/jeija_ghoststone_inv.png
new file mode 100644
index 0000000..c715d7f
--- /dev/null
+++ b/mesecons/mesecons_random/textures/jeija_ghoststone_inv.png
Binary files differ
diff --git a/mesecons/mesecons_random/textures/jeija_removestone.png b/mesecons/mesecons_random/textures/jeija_removestone.png
new file mode 100644
index 0000000..1917b7c
--- /dev/null
+++ b/mesecons/mesecons_random/textures/jeija_removestone.png
Binary files differ
diff --git a/mesecons/mesecons_random/textures/jeija_removestone_inv.png b/mesecons/mesecons_random/textures/jeija_removestone_inv.png
new file mode 100644
index 0000000..c715d7f
--- /dev/null
+++ b/mesecons/mesecons_random/textures/jeija_removestone_inv.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/depends.txt b/mesecons/mesecons_receiver/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_receiver/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_receiver/init.lua b/mesecons/mesecons_receiver/init.lua
new file mode 100644
index 0000000..4d60365
--- /dev/null
+++ b/mesecons/mesecons_receiver/init.lua
@@ -0,0 +1,158 @@
+rcvboxes = {
+ { -3/16, -3/16, -8/16 , 3/16, 3/16 , -13/32 }, -- the smaller bump
+ { -1/32, -1/32, -3/2 , 1/32, 1/32 , -1/2 }, -- the wire through the block
+ { -2/32, -1/2 , -.5 , 2/32, 0 , -.5002+3/32 }, -- the vertical wire bit
+ { -2/32, -1/2 , -7/16+0.002 , 2/32, -14/32, 16/32+0.001 } -- the horizontal wire
+}
+
+local receiver_get_rules = function (node)
+ local rules = { {x = 1, y = 0, z = 0},
+ {x = -2, y = 0, z = 0}}
+ if node.param2 == 2 then
+ rules = mesecon.rotate_rules_left(rules)
+ elseif node.param2 == 3 then
+ rules = mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules))
+ elseif node.param2 == 0 then
+ rules = mesecon.rotate_rules_right(rules)
+ end
+ return rules
+end
+
+minetest.register_node("mesecons_receiver:receiver_on", {
+ drawtype = "nodebox",
+ tiles = {
+ "receiver_top_on.png",
+ "receiver_bottom_on.png",
+ "receiver_lr_on.png",
+ "receiver_lr_on.png",
+ "receiver_fb_on.png",
+ "receiver_fb_on.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = rcvboxes
+ },
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ drop = "mesecons:wire_00000000_off",
+ mesecons = {conductor = {
+ state = mesecon.state.on,
+ rules = receiver_get_rules,
+ offstate = "mesecons_receiver:receiver_off"
+ }}
+})
+
+minetest.register_node("mesecons_receiver:receiver_off", {
+ drawtype = "nodebox",
+ description = "You hacker you",
+ tiles = {
+ "receiver_top_off.png",
+ "receiver_bottom_off.png",
+ "receiver_lr_off.png",
+ "receiver_lr_off.png",
+ "receiver_fb_off.png",
+ "receiver_fb_off.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = rcvboxes
+ },
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ drop = "mesecons:wire_00000000_off",
+ mesecons = {conductor = {
+ state = mesecon.state.off,
+ rules = receiver_get_rules,
+ onstate = "mesecons_receiver:receiver_on"
+ }}
+})
+
+function mesecon.receiver_get_pos_from_rcpt(pos, param2)
+ local rules = {{x = 2, y = 0, z = 0}}
+ if param2 == nil then param2 = minetest.get_node(pos).param2 end
+ if param2 == 2 then
+ rules = mesecon.rotate_rules_left(rules)
+ elseif param2 == 3 then
+ rules = mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules))
+ elseif param2 == 0 then
+ rules = mesecon.rotate_rules_right(rules)
+ end
+ local np = { x = pos.x + rules[1].x,
+ y = pos.y + rules[1].y,
+ z = pos.z + rules[1].z}
+ return np
+end
+
+function mesecon.receiver_place(rcpt_pos)
+ local node = minetest.get_node(rcpt_pos)
+ local pos = mesecon.receiver_get_pos_from_rcpt(rcpt_pos, node.param2)
+ local nn = minetest.get_node(pos)
+
+ if string.find(nn.name, "mesecons:wire_") ~= nil then
+ minetest.dig_node(pos)
+ if mesecon.is_power_on(rcpt_pos) then
+ minetest.add_node(pos, {name = "mesecons_receiver:receiver_on", param2 = node.param2})
+ mesecon.receptor_on(pos, receiver_get_rules(node))
+ else
+ minetest.add_node(pos, {name = "mesecons_receiver:receiver_off", param2 = node.param2})
+ end
+ mesecon.update_autoconnect(pos)
+ end
+end
+
+function mesecon.receiver_remove(rcpt_pos, dugnode)
+ local pos = mesecon.receiver_get_pos_from_rcpt(rcpt_pos, dugnode.param2)
+ local nn = minetest.get_node(pos)
+ if string.find(nn.name, "mesecons_receiver:receiver_") ~=nil then
+ minetest.dig_node(pos)
+ local node = {name = "mesecons:wire_00000000_off"}
+ minetest.add_node(pos, node)
+ mesecon.update_autoconnect(pos)
+ mesecon.on_placenode(pos, node)
+ end
+end
+
+minetest.register_on_placenode(function (pos, node)
+ if minetest.get_item_group(node.name, "mesecon_needs_receiver") == 1 then
+ mesecon.receiver_place(pos)
+ end
+end)
+
+minetest.register_on_dignode(function(pos, node)
+ if minetest.get_item_group(node.name, "mesecon_needs_receiver") == 1 then
+ mesecon.receiver_remove(pos, node)
+ end
+end)
+
+minetest.register_on_placenode(function (pos, node)
+ if string.find(node.name, "mesecons:wire_") ~=nil then
+ local rules = { {x = 2, y = 0, z = 0},
+ {x =-2, y = 0, z = 0},
+ {x = 0, y = 0, z = 2},
+ {x = 0, y = 0, z =-2}}
+ local i = 1
+ while rules[i] ~= nil do
+ local np = { x = pos.x + rules[i].x,
+ y = pos.y + rules[i].y,
+ z = pos.z + rules[i].z}
+ if minetest.get_item_group(minetest.get_node(np).name, "mesecon_needs_receiver") == 1 then
+ mesecon.receiver_place(np)
+ end
+ i = i + 1
+ end
+ end
+end)
diff --git a/mesecons/mesecons_receiver/textures/receiver_bottom_off.png b/mesecons/mesecons_receiver/textures/receiver_bottom_off.png
new file mode 100644
index 0000000..b95903e
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_bottom_off.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_bottom_on.png b/mesecons/mesecons_receiver/textures/receiver_bottom_on.png
new file mode 100644
index 0000000..d0b7006
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_bottom_on.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_fb_off.png b/mesecons/mesecons_receiver/textures/receiver_fb_off.png
new file mode 100644
index 0000000..aed3008
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_fb_off.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_fb_on.png b/mesecons/mesecons_receiver/textures/receiver_fb_on.png
new file mode 100644
index 0000000..0916736
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_fb_on.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_lr_off.png b/mesecons/mesecons_receiver/textures/receiver_lr_off.png
new file mode 100644
index 0000000..1fb2b3a
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_lr_off.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_lr_on.png b/mesecons/mesecons_receiver/textures/receiver_lr_on.png
new file mode 100644
index 0000000..087c0b4
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_lr_on.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_top_off.png b/mesecons/mesecons_receiver/textures/receiver_top_off.png
new file mode 100644
index 0000000..ae50106
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_top_off.png
Binary files differ
diff --git a/mesecons/mesecons_receiver/textures/receiver_top_on.png b/mesecons/mesecons_receiver/textures/receiver_top_on.png
new file mode 100644
index 0000000..5b48cac
--- /dev/null
+++ b/mesecons/mesecons_receiver/textures/receiver_top_on.png
Binary files differ
diff --git a/mesecons/mesecons_solarpanel/depends.txt b/mesecons/mesecons_solarpanel/depends.txt
new file mode 100644
index 0000000..bc7b062
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+mesecons_materials
diff --git a/mesecons/mesecons_solarpanel/doc/solarpanel/description.html b/mesecons/mesecons_solarpanel/doc/solarpanel/description.html
new file mode 100644
index 0000000..f8e7450
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/doc/solarpanel/description.html
@@ -0,0 +1 @@
+Solar Panel are light receptors: they turn on if there is enough light.
diff --git a/mesecons/mesecons_solarpanel/doc/solarpanel/preview.png b/mesecons/mesecons_solarpanel/doc/solarpanel/preview.png
new file mode 100644
index 0000000..b773195
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/doc/solarpanel/preview.png
Binary files differ
diff --git a/mesecons/mesecons_solarpanel/doc/solarpanel/recipe.png b/mesecons/mesecons_solarpanel/doc/solarpanel/recipe.png
new file mode 100644
index 0000000..3a3d799
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/doc/solarpanel/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_solarpanel/init.lua b/mesecons/mesecons_solarpanel/init.lua
new file mode 100644
index 0000000..bc5a408
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/init.lua
@@ -0,0 +1,95 @@
+-- Solar Panel
+minetest.register_node("mesecons_solarpanel:solar_panel_on", {
+ drawtype = "nodebox",
+ tiles = { "jeija_solar_panel.png", },
+ inventory_image = "jeija_solar_panel.png",
+ wield_image = "jeija_solar_panel.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ is_ground_content = true,
+ node_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ selection_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ drop = "mesecons_solarpanel:solar_panel_off",
+ groups = {dig_immediate=3, not_in_creative_inventory = 1},
+ sounds = default.node_sound_glass_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.on
+ }}
+})
+
+-- Solar Panel
+minetest.register_node("mesecons_solarpanel:solar_panel_off", {
+ drawtype = "nodebox",
+ tiles = { "jeija_solar_panel.png", },
+ inventory_image = "jeija_solar_panel.png",
+ wield_image = "jeija_solar_panel.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ is_ground_content = true,
+ node_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ selection_box = {
+ type = "wallmounted",
+ wall_bottom = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
+ wall_top = { -7/16, 7/16, -7/16, 7/16, 8/16, 7/16 },
+ wall_side = { -8/16, -7/16, -7/16, -7/16, 7/16, 7/16 },
+ },
+ groups = {dig_immediate=3},
+ description="Solar Panel",
+ sounds = default.node_sound_glass_defaults(),
+ mesecons = {receptor = {
+ state = mesecon.state.off
+ }}
+})
+
+minetest.register_craft({
+ output = "mesecons_solarpanel:solar_panel_off 1",
+ recipe = {
+ {"mesecons_materials:silicon", "mesecons_materials:silicon"},
+ {"mesecons_materials:silicon", "mesecons_materials:silicon"},
+ }
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_solarpanel:solar_panel_off"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local light = minetest.get_node_light(pos, nil)
+
+ if light >= 12 then
+ minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2})
+ mesecon.receptor_on(pos)
+ end
+ end,
+})
+
+minetest.register_abm(
+ {nodenames = {"mesecons_solarpanel:solar_panel_on"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local light = minetest.get_node_light(pos, nil)
+
+ if light < 12 then
+ minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2})
+ mesecon.receptor_off(pos)
+ end
+ end,
+})
diff --git a/mesecons/mesecons_solarpanel/textures/jeija_solar_panel.png b/mesecons/mesecons_solarpanel/textures/jeija_solar_panel.png
new file mode 100644
index 0000000..a7b0f75
--- /dev/null
+++ b/mesecons/mesecons_solarpanel/textures/jeija_solar_panel.png
Binary files differ
diff --git a/mesecons/mesecons_stickyblocks/depends.txt b/mesecons/mesecons_stickyblocks/depends.txt
new file mode 100644
index 0000000..01f085b
--- /dev/null
+++ b/mesecons/mesecons_stickyblocks/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+mesecons_mvps
diff --git a/mesecons/mesecons_stickyblocks/init.lua b/mesecons/mesecons_stickyblocks/init.lua
new file mode 100644
index 0000000..659a227
--- /dev/null
+++ b/mesecons/mesecons_stickyblocks/init.lua
@@ -0,0 +1,16 @@
+-- Sticky blocks can be used together with pistons or movestones to push / pull
+-- structures that are "glued" together using sticky blocks
+
+-- All sides sticky block
+minetest.register_node("mesecons_stickyblocks:sticky_block_all", {
+ description = "All-sides sticky block",
+ tiles = {"default_grass.png^default_footprint.png"},
+ groups = {dig_immediate=2},
+ mvps_sticky = function (pos, node)
+ local connected = {}
+ for _, r in ipairs(mesecon.rules.alldirs) do
+ table.insert(connected, vector.add(pos, r))
+ end
+ return connected
+ end
+})
diff --git a/mesecons/mesecons_switch/depends.txt b/mesecons/mesecons_switch/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_switch/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_switch/doc/switch/description.html b/mesecons/mesecons_switch/doc/switch/description.html
new file mode 100644
index 0000000..3ef4ace
--- /dev/null
+++ b/mesecons/mesecons_switch/doc/switch/description.html
@@ -0,0 +1 @@
+The switch is a receptor. It changes its state as when punched.
diff --git a/mesecons/mesecons_switch/doc/switch/preview.png b/mesecons/mesecons_switch/doc/switch/preview.png
new file mode 100644
index 0000000..0a0487d
--- /dev/null
+++ b/mesecons/mesecons_switch/doc/switch/preview.png
Binary files differ
diff --git a/mesecons/mesecons_switch/doc/switch/recipe.png b/mesecons/mesecons_switch/doc/switch/recipe.png
new file mode 100644
index 0000000..6db6464
--- /dev/null
+++ b/mesecons/mesecons_switch/doc/switch/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_switch/init.lua b/mesecons/mesecons_switch/init.lua
new file mode 100644
index 0000000..3d59c0a
--- /dev/null
+++ b/mesecons/mesecons_switch/init.lua
@@ -0,0 +1,35 @@
+-- mesecons_switch
+
+mesecon.register_node("mesecons_switch:mesecon_switch", {
+ paramtype2="facedir",
+ description="Switch",
+ sounds = default.node_sound_stone_defaults(),
+ on_rightclick = function (pos, node)
+ if(mesecon.flipstate(pos, node) == "on") then
+ mesecon.receptor_on(pos)
+ else
+ mesecon.receptor_off(pos)
+ end
+ minetest.sound_play("mesecons_switch", {pos=pos})
+ end
+},{
+ groups = {dig_immediate=2},
+ tiles = { "mesecons_switch_side.png", "mesecons_switch_side.png",
+ "mesecons_switch_side.png", "mesecons_switch_side.png",
+ "mesecons_switch_side.png", "mesecons_switch_off.png"},
+ mesecons = {receptor = { state = mesecon.state.off }}
+},{
+ groups = {dig_immediate=2, not_in_creative_inventory=1},
+ tiles = { "mesecons_switch_side.png", "mesecons_switch_side.png",
+ "mesecons_switch_side.png", "mesecons_switch_side.png",
+ "mesecons_switch_side.png", "mesecons_switch_on.png"},
+ mesecons = {receptor = { state = mesecon.state.on }}
+})
+
+minetest.register_craft({
+ output = "mesecons_switch:mesecon_switch_off 2",
+ recipe = {
+ {"default:steel_ingot", "default:cobble", "default:steel_ingot"},
+ {"group:mesecon_conductor_craftable","", "group:mesecon_conductor_craftable"},
+ }
+})
diff --git a/mesecons/mesecons_switch/sounds/mesecons_switch.ogg b/mesecons/mesecons_switch/sounds/mesecons_switch.ogg
new file mode 100644
index 0000000..53d45c1
--- /dev/null
+++ b/mesecons/mesecons_switch/sounds/mesecons_switch.ogg
Binary files differ
diff --git a/mesecons/mesecons_switch/textures/mesecons_switch_off.png b/mesecons/mesecons_switch/textures/mesecons_switch_off.png
new file mode 100644
index 0000000..2a75ef3
--- /dev/null
+++ b/mesecons/mesecons_switch/textures/mesecons_switch_off.png
Binary files differ
diff --git a/mesecons/mesecons_switch/textures/mesecons_switch_on.png b/mesecons/mesecons_switch/textures/mesecons_switch_on.png
new file mode 100644
index 0000000..9df3450
--- /dev/null
+++ b/mesecons/mesecons_switch/textures/mesecons_switch_on.png
Binary files differ
diff --git a/mesecons/mesecons_switch/textures/mesecons_switch_side.png b/mesecons/mesecons_switch/textures/mesecons_switch_side.png
new file mode 100644
index 0000000..fb5db33
--- /dev/null
+++ b/mesecons/mesecons_switch/textures/mesecons_switch_side.png
Binary files differ
diff --git a/mesecons/mesecons_torch/depends.txt b/mesecons/mesecons_torch/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons/mesecons_torch/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons/mesecons_torch/doc/torch/description.html b/mesecons/mesecons_torch/doc/torch/description.html
new file mode 100644
index 0000000..da7f19c
--- /dev/null
+++ b/mesecons/mesecons_torch/doc/torch/description.html
@@ -0,0 +1 @@
+The torch is an inverter, it may take up to 1 second until the signal has passed through. The input is 2 blocks away in the direction of the stick, outputs are around the mesecon glow.
diff --git a/mesecons/mesecons_torch/doc/torch/preview.png b/mesecons/mesecons_torch/doc/torch/preview.png
new file mode 100644
index 0000000..fa32543
--- /dev/null
+++ b/mesecons/mesecons_torch/doc/torch/preview.png
Binary files differ
diff --git a/mesecons/mesecons_torch/doc/torch/recipe.png b/mesecons/mesecons_torch/doc/torch/recipe.png
new file mode 100644
index 0000000..529d99f
--- /dev/null
+++ b/mesecons/mesecons_torch/doc/torch/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_torch/init.lua b/mesecons/mesecons_torch/init.lua
new file mode 100644
index 0000000..5d1ad8f
--- /dev/null
+++ b/mesecons/mesecons_torch/init.lua
@@ -0,0 +1,118 @@
+--MESECON TORCHES
+
+local rotate_torch_rules = function (rules, param2)
+ if param2 == 5 then
+ return mesecon.rotate_rules_right(rules)
+ elseif param2 == 2 then
+ return mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules)) --180 degrees
+ elseif param2 == 4 then
+ return mesecon.rotate_rules_left(rules)
+ elseif param2 == 1 then
+ return mesecon.rotate_rules_down(rules)
+ elseif param2 == 0 then
+ return mesecon.rotate_rules_up(rules)
+ else
+ return rules
+ end
+end
+
+local torch_get_output_rules = function(node)
+ local rules = {
+ {x = 1, y = 0, z = 0},
+ {x = 0, y = 0, z = 1},
+ {x = 0, y = 0, z =-1},
+ {x = 0, y = 1, z = 0},
+ {x = 0, y =-1, z = 0}}
+
+ return rotate_torch_rules(rules, node.param2)
+end
+
+local torch_get_input_rules = function(node)
+ local rules = {{x = -2, y = 0, z = 0},
+ {x = -1, y = 1, z = 0}}
+
+ return rotate_torch_rules(rules, node.param2)
+end
+
+minetest.register_craft({
+ output = "mesecons_torch:mesecon_torch_on 4",
+ recipe = {
+ {"group:mesecon_conductor_craftable"},
+ {"default:stick"},}
+})
+
+local torch_selectionbox =
+{
+ type = "wallmounted",
+ wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1},
+ wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1},
+ wall_side = {-0.5, -0.1, -0.1, -0.5+0.6, 0.1, 0.1},
+}
+
+minetest.register_node("mesecons_torch:mesecon_torch_off", {
+ drawtype = "torchlike",
+ tiles = {"jeija_torches_off.png", "jeija_torches_off_ceiling.png", "jeija_torches_off_side.png"},
+ inventory_image = "jeija_torches_off.png",
+ paramtype = "light",
+ walkable = false,
+ paramtype2 = "wallmounted",
+ selection_box = torch_selectionbox,
+ groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+ drop = "mesecons_torch:mesecon_torch_on",
+ mesecons = {receptor = {
+ state = mesecon.state.off,
+ rules = torch_get_output_rules
+ }}
+})
+
+minetest.register_node("mesecons_torch:mesecon_torch_on", {
+ drawtype = "torchlike",
+ tiles = {"jeija_torches_on.png", "jeija_torches_on_ceiling.png", "jeija_torches_on_side.png"},
+ inventory_image = "jeija_torches_on.png",
+ wield_image = "jeija_torches_on.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ paramtype2 = "wallmounted",
+ selection_box = torch_selectionbox,
+ groups = {dig_immediate=3},
+ light_source = default.LIGHT_MAX-5,
+ description="Mesecon Torch",
+ mesecons = {receptor = {
+ state = mesecon.state.on,
+ rules = torch_get_output_rules
+ }},
+})
+
+minetest.register_abm({
+ nodenames = {"mesecons_torch:mesecon_torch_off","mesecons_torch:mesecon_torch_on"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node)
+ local is_powered = false
+ for _, rule in ipairs(torch_get_input_rules(node)) do
+ local src = mesecon.addPosRule(pos, rule)
+ if mesecon.is_power_on(src) then
+ is_powered = true
+ end
+ end
+
+ if is_powered then
+ if node.name == "mesecons_torch:mesecon_torch_on" then
+ minetest.swap_node(pos, {name = "mesecons_torch:mesecon_torch_off", param2 = node.param2})
+ mesecon.receptor_off(pos, torch_get_output_rules(node))
+ end
+ elseif node.name == "mesecons_torch:mesecon_torch_off" then
+ minetest.swap_node(pos, {name = "mesecons_torch:mesecon_torch_on", param2 = node.param2})
+ mesecon.receptor_on(pos, torch_get_output_rules(node))
+ end
+ end
+})
+
+-- Param2 Table (Block Attached To)
+-- 5 = z-1
+-- 3 = x-1
+-- 4 = z+1
+-- 2 = x+1
+-- 0 = y+1
+-- 1 = y-1
diff --git a/mesecons/mesecons_torch/textures/jeija_torches_off.png b/mesecons/mesecons_torch/textures/jeija_torches_off.png
new file mode 100644
index 0000000..537920c
--- /dev/null
+++ b/mesecons/mesecons_torch/textures/jeija_torches_off.png
Binary files differ
diff --git a/mesecons/mesecons_torch/textures/jeija_torches_off_ceiling.png b/mesecons/mesecons_torch/textures/jeija_torches_off_ceiling.png
new file mode 100644
index 0000000..3934e6e
--- /dev/null
+++ b/mesecons/mesecons_torch/textures/jeija_torches_off_ceiling.png
Binary files differ
diff --git a/mesecons/mesecons_torch/textures/jeija_torches_off_side.png b/mesecons/mesecons_torch/textures/jeija_torches_off_side.png
new file mode 100644
index 0000000..ecb2951
--- /dev/null
+++ b/mesecons/mesecons_torch/textures/jeija_torches_off_side.png
Binary files differ
diff --git a/mesecons/mesecons_torch/textures/jeija_torches_on.png b/mesecons/mesecons_torch/textures/jeija_torches_on.png
new file mode 100644
index 0000000..a93dcc2
--- /dev/null
+++ b/mesecons/mesecons_torch/textures/jeija_torches_on.png
Binary files differ
diff --git a/mesecons/mesecons_torch/textures/jeija_torches_on_ceiling.png b/mesecons/mesecons_torch/textures/jeija_torches_on_ceiling.png
new file mode 100644
index 0000000..24fe201
--- /dev/null
+++ b/mesecons/mesecons_torch/textures/jeija_torches_on_ceiling.png
Binary files differ
diff --git a/mesecons/mesecons_torch/textures/jeija_torches_on_side.png b/mesecons/mesecons_torch/textures/jeija_torches_on_side.png
new file mode 100644
index 0000000..fe7dfd2
--- /dev/null
+++ b/mesecons/mesecons_torch/textures/jeija_torches_on_side.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/depends.txt b/mesecons/mesecons_walllever/depends.txt
new file mode 100644
index 0000000..19c798c
--- /dev/null
+++ b/mesecons/mesecons_walllever/depends.txt
@@ -0,0 +1,2 @@
+mesecons
+mesecons_receiver
diff --git a/mesecons/mesecons_walllever/doc/walllever/description.html b/mesecons/mesecons_walllever/doc/walllever/description.html
new file mode 100644
index 0000000..ea5a0ed
--- /dev/null
+++ b/mesecons/mesecons_walllever/doc/walllever/description.html
@@ -0,0 +1 @@
+A receptor just like a switch, but it can be attached to walls.
diff --git a/mesecons/mesecons_walllever/doc/walllever/preview.png b/mesecons/mesecons_walllever/doc/walllever/preview.png
new file mode 100644
index 0000000..e8d2015
--- /dev/null
+++ b/mesecons/mesecons_walllever/doc/walllever/preview.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/doc/walllever/recipe.png b/mesecons/mesecons_walllever/doc/walllever/recipe.png
new file mode 100644
index 0000000..0ad7c92
--- /dev/null
+++ b/mesecons/mesecons_walllever/doc/walllever/recipe.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/init.lua b/mesecons/mesecons_walllever/init.lua
new file mode 100644
index 0000000..9ae0655
--- /dev/null
+++ b/mesecons/mesecons_walllever/init.lua
@@ -0,0 +1,61 @@
+-- WALL LEVER
+-- Basically a switch that can be attached to a wall
+-- Powers the block 2 nodes behind (using a receiver)
+mesecon.register_node("mesecons_walllever:wall_lever", {
+ description="Lever",
+ drawtype = "mesh",
+ inventory_image = "jeija_wall_lever_inv.png",
+ wield_image = "jeija_wall_lever_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -8/16, 3/16, 8/16, 8/16, 8/16 },
+ },
+ sounds = default.node_sound_wood_defaults(),
+ on_rightclick = function (pos, node)
+ if(mesecon.flipstate(pos, node) == "on") then
+ mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node))
+ else
+ mesecon.receptor_off(pos, mesecon.rules.buttonlike_get(node))
+ end
+ minetest.sound_play("mesecons_lever", {pos=pos})
+ end
+},{
+ tiles = {
+ "jeija_wall_lever_lever_light_off.png",
+ "jeija_wall_lever_front.png",
+ "jeija_wall_lever_front_bump.png",
+ "jeija_wall_lever_back_edges.png"
+ },
+ mesh="jeija_wall_lever_off.obj",
+ mesecons = {receptor = {
+ rules = mesecon.rules.buttonlike_get,
+ state = mesecon.state.off
+ }},
+ groups = {dig_immediate = 2, mesecon_needs_receiver = 1}
+},{
+ tiles = {
+ "jeija_wall_lever_lever_light_on.png",
+ "jeija_wall_lever_front.png",
+ "jeija_wall_lever_front_bump.png",
+ "jeija_wall_lever_back_edges.png"
+ },
+ mesh="jeija_wall_lever_on.obj",
+ mesecons = {receptor = {
+ rules = mesecon.rules.buttonlike_get,
+ state = mesecon.state.on
+ }},
+ groups = {dig_immediate = 2, mesecon_needs_receiver = 1, not_in_creative_inventory = 1}
+})
+
+minetest.register_craft({
+ output = "mesecons_walllever:wall_lever_off 2",
+ recipe = {
+ {"group:mesecon_conductor_craftable"},
+ {"default:stone"},
+ {"default:stick"},
+ }
+})
diff --git a/mesecons/mesecons_walllever/models/jeija_wall_lever_off.obj b/mesecons/mesecons_walllever/models/jeija_wall_lever_off.obj
new file mode 100644
index 0000000..334b54b
--- /dev/null
+++ b/mesecons/mesecons_walllever/models/jeija_wall_lever_off.obj
@@ -0,0 +1,216 @@
+# Blender v2.73 (sub 0) OBJ File: 'mesecons-wall-lever-off.blend'
+# www.blender.org
+o nodebox-5
+v 0.281250 0.156250 0.312500
+v -0.375000 0.375000 0.375000
+v -0.375000 -0.375000 0.375000
+v 0.343751 0.218750 0.375000
+v 0.343751 -0.218752 0.375000
+v 0.375000 0.375000 0.375000
+v 0.375000 -0.375000 0.375000
+v 0.281250 -0.156250 0.312500
+v -0.062500 -0.055586 0.191789
+v -0.062500 -0.087939 0.312529
+v -0.062500 -0.413939 0.225178
+v -0.062500 -0.381586 0.104437
+v -0.343751 0.218750 0.375000
+v 0.062500 -0.055586 0.191789
+v 0.062500 -0.087939 0.312529
+v -0.343751 -0.218752 0.375000
+v 0.062500 -0.413939 0.225178
+v 0.062500 -0.381586 0.104437
+v 0.375000 -0.375000 0.500000
+v 0.375000 0.375000 0.500000
+v -0.375000 -0.375000 0.500000
+v -0.375000 0.375000 0.500000
+v -0.281250 0.156250 0.312500
+v -0.281250 -0.156250 0.312500
+v -0.250000 0.125000 0.312500
+v -0.250000 -0.125000 0.312500
+v 0.250000 0.125000 0.312500
+v 0.250000 -0.125000 0.312500
+v -0.250000 0.125000 0.250000
+v -0.250000 -0.125000 0.250000
+v 0.250000 0.125000 0.250000
+v 0.250000 -0.125000 0.250000
+v 0.125000 -0.062500 0.187500
+v 0.125000 0.062500 0.187500
+v -0.125000 -0.062500 0.187500
+v -0.125000 0.062500 0.187500
+v 0.062500 -0.031251 0.176992
+v 0.062500 0.031250 0.176992
+v -0.062498 -0.031251 0.176992
+v -0.062498 0.031250 0.176992
+v -0.187500 -0.093750 0.208750
+v 0.187500 0.093750 0.208750
+v 0.187500 -0.093750 0.208750
+v -0.187500 0.093750 0.208750
+v -0.375000 0.375000 0.375000
+v -0.375000 -0.375000 0.375000
+v 0.375000 0.375000 0.375000
+v 0.375000 -0.375000 0.375000
+v 0.375000 -0.375000 0.500000
+v 0.375000 0.375000 0.500000
+v -0.375000 -0.375000 0.500000
+v -0.375000 0.375000 0.500000
+vt 0.312500 0.437500
+vt 0.312500 0.000000
+vt 0.437500 0.000000
+vt 0.437500 0.437500
+vt 0.687500 0.187500
+vt 0.812500 0.187500
+vt 0.812500 0.312500
+vt 0.687500 0.312500
+vt 0.187500 0.437500
+vt 0.062500 0.437500
+vt 0.062500 0.000000
+vt 0.187500 0.000000
+vt 0.875000 0.796875
+vt 0.375000 0.796875
+vt 0.343750 0.765625
+vt 0.906250 0.765625
+vt 0.203125 0.875000
+vt 0.203125 0.625000
+vt 0.234375 0.593750
+vt 0.234375 0.906250
+vt 0.875000 0.890625
+vt 0.906250 0.921875
+vt 0.343750 0.921875
+vt 0.375000 0.890625
+vt 0.109375 0.875000
+vt 0.078125 0.906250
+vt 0.078125 0.593750
+vt 0.109375 0.625000
+vt 0.562500 0.437500
+vt 0.562500 0.000000
+vt 0.218880 0.343823
+vt 0.218880 0.656178
+vt 0.156408 0.718649
+vt 0.156408 0.281350
+vt 0.968592 0.718649
+vt 0.968592 0.281350
+vt 0.999827 0.125174
+vt 0.999827 0.874827
+vt 0.781120 0.656178
+vt 0.843592 0.718649
+vt 0.843592 0.281350
+vt 0.781120 0.343823
+vt 0.843592 0.156350
+vt 0.156408 0.156350
+vt 0.125173 0.000174
+vt 0.874827 0.000174
+vt 0.031408 0.718649
+vt 0.000173 0.874827
+vt 0.000173 0.125174
+vt 0.031408 0.281350
+vt 0.843592 0.843649
+vt 0.874827 0.999827
+vt 0.125173 0.999827
+vt 0.156408 0.843649
+vt 0.250000 0.625000
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vt 0.250000 0.687500
+vt 0.250000 0.375000
+vt 0.250000 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.812500 0.375000
+vt 0.812500 0.625000
+vt 0.187500 0.625000
+vt 0.187500 0.375000
+vt 0.625000 0.562500
+vt 0.562500 0.531250
+vt 0.562500 0.468750
+vt 0.625000 0.437500
+vt 0.437500 0.468750
+vt 0.437500 0.531250
+vt 0.375000 0.437500
+vt 0.375000 0.562500
+vt 0.312500 0.406250
+vt 0.687500 0.406250
+vt 0.312500 0.593750
+vt 0.687500 0.593750
+vt 1.000000 0.000000
+vt 1.000000 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.000000
+vt 0.000000 0.875000
+vt 0.000000 0.000000
+vt 1.000000 1.000000
+vt 0.125000 1.000000
+vn 0.000000 -0.258800 0.965900
+vn 0.000000 -0.965900 -0.258800
+vn 0.000000 0.258800 -0.965900
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.707100 0.000000 -0.707100
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.141100 0.273900 -0.951300
+vn -0.054600 0.137500 -0.989000
+vn -0.054600 -0.137500 -0.989000
+vn -0.141100 -0.273900 -0.951300
+vn 0.054600 -0.137500 -0.989000
+vn 0.054600 0.137500 -0.989000
+vn 0.141100 -0.273900 -0.951300
+vn 0.141100 0.273900 -0.951300
+vn 0.269900 -0.421500 -0.865700
+vn -0.269900 -0.421500 -0.865700
+vn 0.269900 0.421500 -0.865700
+vn -0.269900 0.421500 -0.865700
+vn -0.395600 0.336800 -0.854500
+vn 0.395600 0.336800 -0.854500
+vn 0.395600 -0.336800 -0.854500
+vn -0.395600 -0.336800 -0.854500
+vn 0.000000 -0.000000 1.000000
+g nodebox-5_nodebox-5_lever-light
+s off
+f 17/1/1 15/2/1 10/3/1 11/4/1
+f 18/5/2 17/6/2 11/7/2 12/8/2
+f 18/9/3 12/10/3 9/11/3 14/12/3
+f 26/13/4 28/14/4 8/15/4 24/16/4
+f 25/17/4 26/18/4 24/19/4 23/20/4
+f 25/21/4 23/22/4 1/23/4 27/24/4
+f 27/25/4 1/26/4 8/27/4 28/28/4
+f 12/29/5 11/4/5 10/3/5 9/30/5
+f 18/9/6 14/12/6 15/2/6 17/1/6
+g nodebox-5_nodebox-5_front
+f 8/31/7 1/32/7 4/33/7 5/34/7
+f 13/35/4 16/36/4 3/37/4 2/38/4
+f 1/32/8 23/39/8 13/40/8 4/33/8
+f 8/31/9 5/34/9 16/41/9 24/42/9
+f 24/42/10 16/41/10 13/40/10 23/39/10
+f 16/43/4 5/44/4 7/45/4 3/46/4
+f 4/47/4 6/48/4 7/49/4 5/50/4
+f 13/51/4 2/52/4 6/53/4 4/54/4
+g nodebox-5_nodebox-5_front-bump
+f 31/55/11 29/56/11 25/57/11 27/58/11
+f 32/59/12 28/60/12 26/61/12 30/62/12
+f 30/62/5 26/63/5 25/64/5 29/56/5
+f 32/59/6 31/55/6 27/65/6 28/66/6
+s 1
+f 36/67/13 40/68/14 39/69/15 35/70/16
+f 37/71/17 39/69/15 40/68/14 38/72/18
+f 35/70/16 39/69/15 37/71/17 33/73/19
+f 33/73/19 37/71/17 38/72/18 34/74/20
+f 34/74/20 38/72/18 40/68/14 36/67/13
+f 33/73/19 43/75/21 41/76/22 35/70/16
+f 33/73/19 34/74/20 42/77/23 43/75/21
+f 35/70/16 41/76/22 44/78/24 36/67/13
+f 42/77/23 44/78/24 29/56/25 31/55/26
+f 43/75/21 32/59/27 30/62/28 41/76/22
+f 43/75/21 42/77/23 31/55/26 32/59/27
+f 41/76/22 30/62/28 29/56/25 44/78/24
+f 34/74/20 36/67/13 44/78/24 42/77/23
+g nodebox-5_nodebox-5_back-edges
+s off
+f 19/79/29 20/80/29 22/81/29 21/82/29
+f 7/82/6 6/81/6 20/83/6 19/84/6
+f 3/82/5 21/84/5 22/83/5 2/81/5
+f 48/85/12 49/80/12 51/81/12 46/86/12
+f 47/85/11 45/86/11 52/81/11 50/80/11
diff --git a/mesecons/mesecons_walllever/models/jeija_wall_lever_on.obj b/mesecons/mesecons_walllever/models/jeija_wall_lever_on.obj
new file mode 100644
index 0000000..a806be8
--- /dev/null
+++ b/mesecons/mesecons_walllever/models/jeija_wall_lever_on.obj
@@ -0,0 +1,216 @@
+# Blender v2.73 (sub 0) OBJ File: 'mesecons-wall-lever.blend'
+# www.blender.org
+o nodebox-5
+v 0.281250 0.156250 0.312500
+v -0.375000 0.375000 0.375000
+v -0.375000 -0.375000 0.375000
+v 0.343751 0.218750 0.375000
+v 0.343751 -0.218752 0.375000
+v 0.375000 0.375000 0.375000
+v 0.375000 -0.375000 0.375000
+v 0.281250 -0.156250 0.312500
+v -0.062500 0.075354 0.315617
+v -0.062500 0.043002 0.194876
+v -0.062500 0.369002 0.107525
+v -0.062500 0.401354 0.228266
+v -0.343751 0.218750 0.375000
+v 0.062500 0.075354 0.315617
+v 0.062500 0.043002 0.194876
+v -0.343751 -0.218752 0.375000
+v 0.062500 0.369002 0.107525
+v 0.062500 0.401354 0.228266
+v 0.375000 -0.375000 0.500000
+v 0.375000 0.375000 0.500000
+v -0.375000 -0.375000 0.500000
+v -0.375000 0.375000 0.500000
+v -0.281250 0.156250 0.312500
+v -0.281250 -0.156250 0.312500
+v -0.250000 0.125000 0.312500
+v -0.250000 -0.125000 0.312500
+v 0.250000 0.125000 0.312500
+v 0.250000 -0.125000 0.312500
+v -0.250000 0.125000 0.250000
+v -0.250000 -0.125000 0.250000
+v 0.250000 0.125000 0.250000
+v 0.250000 -0.125000 0.250000
+v 0.125000 -0.062500 0.187500
+v 0.125000 0.062500 0.187500
+v -0.125000 -0.062500 0.187500
+v -0.125000 0.062500 0.187500
+v 0.062500 -0.031251 0.176992
+v 0.062500 0.031250 0.176992
+v -0.062498 -0.031251 0.176992
+v -0.062498 0.031250 0.176992
+v -0.187500 -0.093750 0.208750
+v 0.187500 0.093750 0.208750
+v 0.187500 -0.093750 0.208750
+v -0.187500 0.093750 0.208750
+v -0.375000 0.375000 0.375000
+v -0.375000 -0.375000 0.375000
+v 0.375000 0.375000 0.375000
+v 0.375000 -0.375000 0.375000
+v 0.375000 -0.375000 0.500000
+v 0.375000 0.375000 0.500000
+v -0.375000 -0.375000 0.500000
+v -0.375000 0.375000 0.500000
+vt 0.312500 0.437500
+vt 0.312500 0.000000
+vt 0.437500 0.000000
+vt 0.437500 0.437500
+vt 0.687500 0.187500
+vt 0.812500 0.187500
+vt 0.812500 0.312500
+vt 0.687500 0.312500
+vt 0.187500 0.437500
+vt 0.062500 0.437500
+vt 0.062500 0.000000
+vt 0.187500 0.000000
+vt 0.875000 0.796875
+vt 0.375000 0.796875
+vt 0.343750 0.765625
+vt 0.906250 0.765625
+vt 0.203125 0.875000
+vt 0.203125 0.625000
+vt 0.234375 0.593750
+vt 0.234375 0.906250
+vt 0.875000 0.890625
+vt 0.906250 0.921875
+vt 0.343750 0.921875
+vt 0.375000 0.890625
+vt 0.109375 0.875000
+vt 0.078125 0.906250
+vt 0.078125 0.593750
+vt 0.109375 0.625000
+vt 0.562500 0.437500
+vt 0.562500 0.000000
+vt 0.218880 0.343823
+vt 0.218880 0.656178
+vt 0.156408 0.718649
+vt 0.156408 0.281350
+vt 0.968592 0.718649
+vt 0.968592 0.281350
+vt 0.999827 0.125174
+vt 0.999827 0.874827
+vt 0.781120 0.656178
+vt 0.843592 0.718649
+vt 0.843592 0.281350
+vt 0.781120 0.343823
+vt 0.843592 0.156350
+vt 0.156408 0.156350
+vt 0.125173 0.000174
+vt 0.874827 0.000174
+vt 0.031408 0.718649
+vt 0.000173 0.874827
+vt 0.000173 0.125174
+vt 0.031408 0.281350
+vt 0.843592 0.843649
+vt 0.874827 0.999827
+vt 0.125173 0.999827
+vt 0.156408 0.843649
+vt 0.250000 0.625000
+vt 0.750000 0.625000
+vt 0.750000 0.687500
+vt 0.250000 0.687500
+vt 0.250000 0.375000
+vt 0.250000 0.312500
+vt 0.750000 0.312500
+vt 0.750000 0.375000
+vt 0.812500 0.375000
+vt 0.812500 0.625000
+vt 0.187500 0.625000
+vt 0.187500 0.375000
+vt 0.625000 0.562500
+vt 0.562500 0.531250
+vt 0.562500 0.468750
+vt 0.625000 0.437500
+vt 0.437500 0.468750
+vt 0.437500 0.531250
+vt 0.375000 0.437500
+vt 0.375000 0.562500
+vt 0.312500 0.406250
+vt 0.687500 0.406250
+vt 0.312500 0.593750
+vt 0.687500 0.593750
+vt 1.000000 0.000000
+vt 1.000000 0.875000
+vt 0.125000 0.875000
+vt 0.125000 0.000000
+vt 0.000000 0.875000
+vt 0.000000 0.000000
+vt 1.000000 1.000000
+vt 0.125000 1.000000
+vn 0.000000 -0.258800 -0.965900
+vn 0.000000 0.965900 -0.258800
+vn 0.000000 0.258800 0.965900
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.707100 0.000000 -0.707100
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.141100 0.273900 -0.951300
+vn -0.054600 0.137500 -0.989000
+vn -0.054600 -0.137500 -0.989000
+vn -0.141100 -0.273900 -0.951300
+vn 0.054600 -0.137500 -0.989000
+vn 0.054600 0.137500 -0.989000
+vn 0.141100 -0.273900 -0.951300
+vn 0.141100 0.273900 -0.951300
+vn 0.269900 -0.421500 -0.865700
+vn -0.269900 -0.421500 -0.865700
+vn 0.269900 0.421500 -0.865700
+vn -0.269900 0.421500 -0.865700
+vn -0.395600 0.336800 -0.854500
+vn 0.395600 0.336800 -0.854500
+vn 0.395600 -0.336800 -0.854500
+vn -0.395600 -0.336800 -0.854500
+vn 0.000000 -0.000000 1.000000
+g nodebox-5_nodebox-5_lever-light
+s off
+f 17/1/1 15/2/1 10/3/1 11/4/1
+f 18/5/2 17/6/2 11/7/2 12/8/2
+f 18/9/3 12/10/3 9/11/3 14/12/3
+f 26/13/4 28/14/4 8/15/4 24/16/4
+f 25/17/4 26/18/4 24/19/4 23/20/4
+f 25/21/4 23/22/4 1/23/4 27/24/4
+f 27/25/4 1/26/4 8/27/4 28/28/4
+f 12/29/5 11/4/5 10/3/5 9/30/5
+f 18/9/6 14/12/6 15/2/6 17/1/6
+g nodebox-5_nodebox-5_front
+f 8/31/7 1/32/7 4/33/7 5/34/7
+f 13/35/4 16/36/4 3/37/4 2/38/4
+f 1/32/8 23/39/8 13/40/8 4/33/8
+f 8/31/9 5/34/9 16/41/9 24/42/9
+f 24/42/10 16/41/10 13/40/10 23/39/10
+f 16/43/4 5/44/4 7/45/4 3/46/4
+f 4/47/4 6/48/4 7/49/4 5/50/4
+f 13/51/4 2/52/4 6/53/4 4/54/4
+g nodebox-5_nodebox-5_front-bump
+f 31/55/11 29/56/11 25/57/11 27/58/11
+f 32/59/12 28/60/12 26/61/12 30/62/12
+f 30/62/5 26/63/5 25/64/5 29/56/5
+f 32/59/6 31/55/6 27/65/6 28/66/6
+s 1
+f 36/67/13 40/68/14 39/69/15 35/70/16
+f 37/71/17 39/69/15 40/68/14 38/72/18
+f 35/70/16 39/69/15 37/71/17 33/73/19
+f 33/73/19 37/71/17 38/72/18 34/74/20
+f 34/74/20 38/72/18 40/68/14 36/67/13
+f 33/73/19 43/75/21 41/76/22 35/70/16
+f 33/73/19 34/74/20 42/77/23 43/75/21
+f 35/70/16 41/76/22 44/78/24 36/67/13
+f 42/77/23 44/78/24 29/56/25 31/55/26
+f 43/75/21 32/59/27 30/62/28 41/76/22
+f 43/75/21 42/77/23 31/55/26 32/59/27
+f 41/76/22 30/62/28 29/56/25 44/78/24
+f 34/74/20 36/67/13 44/78/24 42/77/23
+g nodebox-5_nodebox-5_back-edges
+s off
+f 19/79/29 20/80/29 22/81/29 21/82/29
+f 7/82/6 6/81/6 20/83/6 19/84/6
+f 3/82/5 21/84/5 22/83/5 2/81/5
+f 48/85/12 49/80/12 51/81/12 46/86/12
+f 47/85/11 45/86/11 52/81/11 50/80/11
diff --git a/mesecons/mesecons_walllever/sounds/mesecons_lever.ogg b/mesecons/mesecons_walllever/sounds/mesecons_lever.ogg
new file mode 100644
index 0000000..53d45c1
--- /dev/null
+++ b/mesecons/mesecons_walllever/sounds/mesecons_lever.ogg
Binary files differ
diff --git a/mesecons/mesecons_walllever/textures/jeija_wall_lever_back_edges.png b/mesecons/mesecons_walllever/textures/jeija_wall_lever_back_edges.png
new file mode 100644
index 0000000..936b454
--- /dev/null
+++ b/mesecons/mesecons_walllever/textures/jeija_wall_lever_back_edges.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/textures/jeija_wall_lever_front.png b/mesecons/mesecons_walllever/textures/jeija_wall_lever_front.png
new file mode 100644
index 0000000..1bd747a
--- /dev/null
+++ b/mesecons/mesecons_walllever/textures/jeija_wall_lever_front.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/textures/jeija_wall_lever_front_bump.png b/mesecons/mesecons_walllever/textures/jeija_wall_lever_front_bump.png
new file mode 100644
index 0000000..5c2a88a
--- /dev/null
+++ b/mesecons/mesecons_walllever/textures/jeija_wall_lever_front_bump.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/textures/jeija_wall_lever_inv.png b/mesecons/mesecons_walllever/textures/jeija_wall_lever_inv.png
new file mode 100644
index 0000000..474f8c1
--- /dev/null
+++ b/mesecons/mesecons_walllever/textures/jeija_wall_lever_inv.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png b/mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png
new file mode 100644
index 0000000..2b47c7d
--- /dev/null
+++ b/mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png
Binary files differ
diff --git a/mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png b/mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png
new file mode 100644
index 0000000..83b83a0
--- /dev/null
+++ b/mesecons/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png
Binary files differ
diff --git a/mesecons/modpack.txt b/mesecons/modpack.txt
new file mode 100644
index 0000000..33d91f5
--- /dev/null
+++ b/mesecons/modpack.txt
@@ -0,0 +1 @@
+The presence of this file indicates that the current folder is a modpack. \ No newline at end of file
diff --git a/misc_overrides/depends.txt b/misc_overrides/depends.txt
new file mode 100644
index 0000000..22e37c4
--- /dev/null
+++ b/misc_overrides/depends.txt
@@ -0,0 +1,8 @@
+default
+farming
+biome_lib
+youngtrees
+ferns
+dryplants
+farming_plus
+technic_chests
diff --git a/misc_overrides/init.lua b/misc_overrides/init.lua
new file mode 100644
index 0000000..c3dd0a5
--- /dev/null
+++ b/misc_overrides/init.lua
@@ -0,0 +1,47 @@
+-- This file just makes some tweaks to the various default plants and some
+-- non-default ones that depend on biome_lib, to make them wave if the
+-- appropriate shader is enabled. This code is temporary and will be trimmed
+-- down as the mods supplying those objects are updated.
+
+-- default stuff
+
+for i = 1, 5 do
+ minetest.override_item("default:grass_"..i, { waving = 1 })
+end
+
+minetest.override_item("default:junglegrass", { waving = 1 })
+
+-- farming, farming_plus
+
+for i = 1, 8 do
+ minetest.override_item("farming:wheat_"..i, { waving = 1 })
+ minetest.override_item("farming:cotton_"..i, { waving = 1 })
+end
+
+minetest.override_item("farming:weed", { waving = 1 })
+
+-- Undergrowth modpack
+
+minetest.override_item("youngtrees:youngtree_top", { waving = 1 })
+
+-- Ferns mod
+
+for i = 1, 3 do
+ minetest.override_item("ferns:fern_0"..i, { waving = 1 })
+end
+
+minetest.override_item("ferns:tree_fern_leaves", { waving = 1 })
+
+-- Dryplants mod
+
+minetest.override_item("dryplants:reedmace_height_2", { waving = 1 })
+minetest.override_item("dryplants:reedmace_height_3", { waving = 1 })
+minetest.override_item("dryplants:reedmace_height_3_spikes", { waving = 1 })
+minetest.override_item("dryplants:juncus", { waving = 1 })
+minetest.override_item("dryplants:juncus_02", { waving = 1 })
+
+-- Farming plus
+
+minetest.override_item("farming_plus:banana_leaves", { waving = 1 })
+minetest.override_item("farming_plus:cocoa_leaves", { waving = 1 })
+
diff --git a/misc_overrides/textures/technic_chest_form_bg.png b/misc_overrides/textures/technic_chest_form_bg.png
new file mode 100644
index 0000000..ea26ae4
--- /dev/null
+++ b/misc_overrides/textures/technic_chest_form_bg.png
Binary files differ
diff --git a/moreblocks/LICENSE.md b/moreblocks/LICENSE.md
new file mode 100644
index 0000000..45c5ff5
--- /dev/null
+++ b/moreblocks/LICENSE.md
@@ -0,0 +1,14 @@
+zlib license
+============
+
+Copyright (c) 2011-2015 Calinou and contributors
+
+**This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.**
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
diff --git a/moreblocks/README.md b/moreblocks/README.md
new file mode 100644
index 0000000..228ce97
--- /dev/null
+++ b/moreblocks/README.md
@@ -0,0 +1,11 @@
+More Blocks
+===========
+
+More Blocks for Minetest <http://minetest.net>, a free/libre infinite
+world block sandbox game.
+
+To install, just clone this repository into your "mods" directory.
+
+More Blocks code is licensed under the zlib license, textures are by Calinou and are licensed under CC BY-SA 3.0 Unported.
+
+**Forum topic:** <https://forum.minetest.net/viewtopic.php?f=11&t=509>
diff --git a/moreblocks/aliases.lua b/moreblocks/aliases.lua
new file mode 100644
index 0000000..15f7b6b
--- /dev/null
+++ b/moreblocks/aliases.lua
@@ -0,0 +1,78 @@
+--[[
+More Blocks: alias definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+-- More Blocks aliases:
+minetest.register_alias("sweeper", "moreblocks:sweeper")
+minetest.register_alias("circular_saw", "moreblocks:circular_saw")
+minetest.register_alias("jungle_stick", "moreblocks:jungle_stick")
+
+-- Old block/item replacement:
+minetest.register_alias("moreblocks:oerkkiblock", "default:mossycobble")
+minetest.register_alias("moreblocks:screwdriver", "screwdriver:screwdriver")
+
+-- Node and item renaming:
+minetest.register_alias("moreblocks:stone_bricks", "default:stonebrick")
+minetest.register_alias("moreblocks:stonebrick", "default:stonebrick")
+minetest.register_alias("moreblocks:junglewood", "default:junglewood")
+minetest.register_alias("moreblocks:jungle_wood", "default:junglewood")
+
+for _, t in pairs(circular_saw.names) do
+ minetest.register_alias("moreblocks:" .. t[1] .. "_jungle_wood" .. t[2],
+ "moreblocks:" .. t[1] .. "_junglewood" .. t[2])
+end
+minetest.register_alias("moreblocks:horizontaltree", "moreblocks:horizontal_tree")
+minetest.register_alias("moreblocks:horizontaljungletree", "moreblocks:horizontal_jungle_tree")
+minetest.register_alias("moreblocks:stonesquare", "moreblocks:stone_tile")
+minetest.register_alias("moreblocks:circlestonebrick", "moreblocks:circle_stone_bricks")
+minetest.register_alias("moreblocks:ironstonebrick", "moreblocks:iron_stone_bricks")
+minetest.register_alias("moreblocks:fence_junglewood", "moreblocks:fence_jungle_wood")
+minetest.register_alias("moreblocks:coalstone", "moreblocks:coal_stone")
+minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone")
+minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile")
+minetest.register_alias("moreblocks:woodtile_full", "moreblocks:wood_tile_full")
+minetest.register_alias("moreblocks:woodtile_centered", "moreblocks:wood_tile_centered")
+minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_up")
+minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down")
+minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left")
+minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right")
+minetest.register_alias("moreblocks:coalglass", "moreblocks:coal_glass")
+minetest.register_alias("moreblocks:ironglass", "moreblocks:iron_glass")
+minetest.register_alias("moreblocks:glowglass", "moreblocks:glow_glass")
+minetest.register_alias("moreblocks:superglowglass", "moreblocks:super_glow_glass")
+minetest.register_alias("moreblocks:trapglass", "moreblocks:trap_glass")
+minetest.register_alias("moreblocks:trapstone", "moreblocks:trap_stone")
+minetest.register_alias("moreblocks:cactuschecker", "moreblocks:cactus_checker")
+minetest.register_alias("moreblocks:coalchecker", "moreblocks:coal_checker")
+minetest.register_alias("moreblocks:ironchecker", "moreblocks:iron_checker")
+minetest.register_alias("moreblocks:cactusbrick", "moreblocks:cactus_brick")
+minetest.register_alias("moreblocks:cleanglass", "moreblocks:clean_glass")
+minetest.register_alias("moreblocks:emptybookshelf", "moreblocks:empty_bookshelf")
+minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick")
+minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile")
+minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree")
+
+-- ABM for horizontal trees (fix facedir):
+local horizontal_tree_convert_facedir = {7, 12, 9, 18}
+
+minetest.register_abm({
+ nodenames = {"moreblocks:horizontal_tree","moreblocks:horizontal_jungle_tree"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node)
+ if node.name == "moreblocks:horizontal_tree" then
+ node.name = "default:tree"
+ else
+ node.name = "default:jungletree"
+ end
+ node.param2 = node.param2 < 3 and node.param2 or 0
+ minetest.set_node(pos, {
+ name = node.name,
+ param2 = horizontal_tree_convert_facedir[node.param2 + 1]
+ })
+ end,
+})
+
diff --git a/moreblocks/circular_saw.lua b/moreblocks/circular_saw.lua
new file mode 100644
index 0000000..dd945b8
--- /dev/null
+++ b/moreblocks/circular_saw.lua
@@ -0,0 +1,414 @@
+--[[
+More Blocks: circular saw
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+circular_saw = {}
+
+circular_saw.known_stairs = setmetatable({}, {
+ __newindex = function(k, v)
+ local modname = minetest.get_current_modname()
+ print(("WARNING: mod %s tried to add node %s to the circular saw"
+ .. " manually."):format(modname, v))
+ end,
+})
+
+-- This is populated by stairsplus:register_all:
+circular_saw.known_nodes = {}
+
+-- How many microblocks does this shape at the output inventory cost:
+-- It may cause slight loss, but no gain.
+circular_saw.cost_in_microblocks = {
+ 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 3, 2, 4, 2, 4, 5, 6,
+ 7, 1, 1, 2, 4, 6, 7, 8,
+ 3, 1, 1, 2, 4, 4, 2, 6,
+ 7, 3, 7, 7, 4, 8, 3, 2,
+ 6, 2, 1, 3, 4,
+}
+
+circular_saw.names = {
+ {"micro", "_1"},
+ {"panel", "_1"},
+ {"micro", "_2"},
+ {"panel", "_2"},
+ {"micro", "_4"},
+ {"panel", "_4"},
+ {"micro", ""},
+ {"panel", ""},
+ {"micro", "_12"},
+ {"panel", "_12"},
+ {"micro", "_14"},
+ {"panel", "_14"},
+ {"micro", "_15"},
+ {"panel", "_15"},
+ {"stair", "_outer"},
+ {"stair", ""},
+ {"stair", "_inner"},
+ {"slab", "_1"},
+ {"slab", "_2"},
+ {"slab", "_quarter"},
+ {"slab", ""},
+ {"slab", "_three_quarter"},
+ {"slab", "_14"},
+ {"slab", "_15"},
+ {"stair", "_half"},
+ {"stair", "_alt_1"},
+ {"stair", "_alt_2"},
+ {"stair", "_alt_4"},
+ {"stair", "_alt"},
+ {"slope", ""},
+ {"slope", "_half"},
+ {"slope", "_half_raised"},
+ {"slope", "_inner"},
+ {"slope", "_inner_half"},
+ {"slope", "_inner_half_raised"},
+ {"slope", "_inner_cut"},
+ {"slope", "_inner_cut_half"},
+ {"slope", "_inner_cut_half_raised"},
+ {"slope", "_outer"},
+ {"slope", "_outer_half"},
+ {"slope", "_outer_half_raised"},
+ {"slope", "_outer_cut"},
+ {"slope", "_outer_cut_half"},
+ {"slope", "_outer_cut_half_raised"},
+ {"slope", "_cut"},
+}
+
+function circular_saw:get_cost(inv, stackname)
+ for i, item in pairs(inv:get_list("output")) do
+ if item:get_name() == stackname then
+ return circular_saw.cost_in_microblocks[i]
+ end
+ end
+end
+
+function circular_saw:get_output_inv(modname, material, amount, max)
+ if (not max or max < 1 or max > 99) then max = 99 end
+
+ local list = {}
+ local pos = #list
+
+ -- If there is nothing inside, display empty inventory:
+ if amount < 1 then
+ return list
+ end
+
+ for i = 1, #circular_saw.names do
+ local t = circular_saw.names[i]
+ local cost = circular_saw.cost_in_microblocks[i]
+ local balance = math.min(math.floor(amount/cost), max)
+ local nodename = modname .. ":" .. t[1] .. "_" .. material .. t[2]
+ if minetest.registered_nodes[nodename] then
+ pos = pos + 1
+ list[pos] = nodename .. " " .. balance
+ end
+ end
+ return list
+end
+
+
+-- Reset empty circular_saw after last full block has been taken out
+-- (or the circular_saw has been placed the first time)
+-- Note: max_offered is not reset:
+function circular_saw:reset(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+
+ inv:set_list("input", {})
+ inv:set_list("micro", {})
+ inv:set_list("output", {})
+ meta:set_int("anz", 0)
+
+ meta:set_string("infotext",
+ S("Circular Saw is empty (owned by %s)")
+ :format(meta:get_string("owner") or ""))
+end
+
+
+-- Player has taken something out of the box or placed something inside
+-- that amounts to count microblocks:
+function circular_saw:update_inventory(pos, amount)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+
+ amount = meta:get_int("anz") + amount
+
+ -- The material is recycled automaticly.
+ inv:set_list("recycle", {})
+
+ if amount < 1 then -- If the last block is taken out.
+ self:reset(pos)
+ return
+ end
+
+ local stack = inv:get_stack("input", 1)
+ -- At least one "normal" block is necessary to see what kind of stairs are requested.
+ if stack:is_empty() then
+ -- Any microblocks not taken out yet are now lost.
+ -- (covers material loss in the machine)
+ self:reset(pos)
+ return
+
+ end
+ local node_name = stack:get_name() or ""
+ local name_parts = circular_saw.known_nodes[node_name] or ""
+ local modname = name_parts[1] or ""
+ local material = name_parts[2] or ""
+
+ inv:set_list("input", { -- Display as many full blocks as possible:
+ node_name.. " " .. math.floor(amount / 8)
+ })
+
+ -- The stairnodes made of default nodes use moreblocks namespace, other mods keep own:
+ if modname == "default" then
+ modname = "moreblocks"
+ end
+ -- print("circular_saw set to " .. modname .. " : "
+ -- .. material .. " with " .. (amount) .. " microblocks.")
+
+ -- 0-7 microblocks may remain left-over:
+ inv:set_list("micro", {
+ modname .. ":micro_" .. material .. "_bottom " .. (amount % 8)
+ })
+ -- Display:
+ inv:set_list("output",
+ self:get_output_inv(modname, material, amount,
+ meta:get_int("max_offered")))
+ -- Store how many microblocks are available:
+ meta:set_int("anz", amount)
+
+ meta:set_string("infotext",
+ S("Circular Saw is working on %s (owned by %s)")
+ :format(material, meta:get_string("owner") or ""))
+end
+
+
+-- The amount of items offered per shape can be configured:
+function circular_saw.on_receive_fields(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ local max = tonumber(fields.max_offered)
+ if max and max > 0 then
+ meta:set_string("max_offered", max)
+ -- Update to show the correct number of items:
+ circular_saw:update_inventory(pos, 0)
+ end
+end
+
+
+-- Moving the inventory of the circular_saw around is not allowed because it
+-- is a fictional inventory. Moving inventory around would be rather
+-- impractical and make things more difficult to calculate:
+function circular_saw.allow_metadata_inventory_move(
+ pos, from_list, from_index, to_list, to_index, count, player)
+ return 0
+end
+
+
+-- Only input- and recycle-slot are intended as input slots:
+function circular_saw.allow_metadata_inventory_put(
+ pos, listname, index, stack, player)
+ -- The player is not allowed to put something in there:
+ if listname == "output" or listname == "micro" then
+ return 0
+ end
+
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local stackname = stack:get_name()
+ local count = stack:get_count()
+
+ -- Only alow those items that are offered in the output inventory to be recycled:
+ if listname == "recycle" then
+ if not inv:contains_item("output", stackname) then
+ return 0
+ end
+ local stackmax = stack:get_stack_max()
+ local instack = inv:get_stack("input", 1)
+ local microstack = inv:get_stack("micro", 1)
+ local incount = instack:get_count()
+ local incost = (incount * 8) + microstack:get_count()
+ local maxcost = (stackmax * 8) + 7
+ local cost = circular_saw:get_cost(inv, stackname)
+ if (incost + cost) > maxcost then
+ return math.max((maxcost - incost) / cost, 0)
+ end
+ return count
+ end
+
+ -- Only accept certain blocks as input which are known to be craftable into stairs:
+ if listname == "input" then
+ if not inv:is_empty("input") then
+ if inv:get_stack("input", index):get_name() ~= stackname then
+ return 0
+ end
+ end
+ if not inv:is_empty("micro") then
+ local microstackname = inv:get_stack("micro", 1):get_name():gsub("^.+:micro_", "", 1)
+ local cutstackname = stackname:gsub("^.+:", "", 1)
+ if microstackname ~= cutstackname then
+ return 0
+ end
+ end
+ for name, t in pairs(circular_saw.known_nodes) do
+ if name == stackname and inv:room_for_item("input", stack) then
+ return count
+ end
+ end
+ return 0
+ end
+end
+
+-- Taking is allowed from all slots (even the internal microblock slot).
+-- Putting something in is slightly more complicated than taking anything
+-- because we have to make sure it is of a suitable material:
+function circular_saw.on_metadata_inventory_put(
+ pos, listname, index, stack, player)
+ -- We need to find out if the circular_saw is already set to a
+ -- specific material or not:
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local stackname = stack:get_name()
+ local count = stack:get_count()
+
+ -- Putting something into the input slot is only possible if that had
+ -- been empty before or did contain something of the same material:
+ if listname == "input" then
+ -- Each new block is worth 8 microblocks:
+ circular_saw:update_inventory(pos, 8 * count)
+ elseif listname == "recycle" then
+ -- Lets look which shape this represents:
+ local cost = circular_saw:get_cost(inv, stackname)
+ circular_saw:update_inventory(pos, cost * count)
+ end
+end
+
+function circular_saw.on_metadata_inventory_take(
+ pos, listname, index, stack, player)
+
+ -- Prevent (inbuilt) swapping between inventories with different blocks
+ -- corrupting player inventory or Saw with 'unknown' items.
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local input_stack = inv:get_stack(listname, index)
+ if not input_stack:is_empty() and input_stack:get_name()~=stack:get_name() then
+ local player_inv = player:get_inventory()
+ if player_inv:room_for_item("main", input_stack) then
+ player_inv:add_item("main", input_stack)
+ end
+
+ circular_saw:reset(pos)
+ return
+ end
+
+ -- If it is one of the offered stairs: find out how many
+ -- microblocks have to be substracted:
+ if listname == "output" then
+ -- We do know how much each block at each position costs:
+ local cost = circular_saw.cost_in_microblocks[index]
+ * stack:get_count()
+
+ circular_saw:update_inventory(pos, -cost)
+ elseif listname == "micro" then
+ -- Each microblock costs 1 microblock:
+ circular_saw:update_inventory(pos, -stack:get_count())
+ elseif listname == "input" then
+ -- Each normal (= full) block taken costs 8 microblocks:
+ circular_saw:update_inventory(pos, 8 * -stack:get_count())
+ end
+ -- The recycle field plays no role here since it is processed immediately.
+end
+
+gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
+
+function circular_saw.on_construct(pos)
+ local meta = minetest.get_meta(pos)
+ local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots
+ meta:set_string("formspec", "size[11,10]"..fancy_inv..
+ "label[0,0;" ..S("Input\nmaterial").. "]" ..
+ "list[current_name;input;1.5,0;1,1;]" ..
+ "label[0,1;" ..S("Left-over").. "]" ..
+ "list[current_name;micro;1.5,1;1,1;]" ..
+ "label[0,2;" ..S("Recycle\noutput").. "]" ..
+ "list[current_name;recycle;1.5,2;1,1;]" ..
+ "field[0.3,3.5;1,1;max_offered;" ..S("Max").. ":;${max_offered}]" ..
+ "button[1,3.2;1,1;Set;" ..S("Set").. "]" ..
+ "list[current_name;output;2.8,0;8,6;]" ..
+ "list[current_player;main;1.5,6.25;8,4;]")
+
+ meta:set_int("anz", 0) -- No microblocks inside yet.
+ meta:set_string("max_offered", 99) -- How many items of this kind are offered by default?
+ meta:set_string("infotext", S("Circular Saw is empty"))
+
+ local inv = meta:get_inventory()
+ inv:set_size("input", 1) -- Input slot for full blocks of material x.
+ inv:set_size("micro", 1) -- Storage for 1-7 surplus microblocks.
+ inv:set_size("recycle", 1) -- Surplus partial blocks can be placed here.
+ inv:set_size("output", 6*8) -- 6x8 versions of stair-parts of material x.
+
+ circular_saw:reset(pos)
+end
+
+
+function circular_saw.can_dig(pos,player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if not inv:is_empty("input") or
+ not inv:is_empty("micro") or
+ not inv:is_empty("recycle") then
+ return false
+ end
+ -- Can be dug by anyone when empty, not only by the owner:
+ return true
+end
+
+minetest.register_node("moreblocks:circular_saw", {
+ description = S("Circular Saw"),
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg
+ {0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg
+ {-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg
+ {0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg
+ {-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop
+ {-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top)
+ {-0.01, 0.375, -0.1875, 0.01, 0.4375, 0.1875}, -- Saw blade (bottom)
+ {-0.25, -0.0625, -0.25, 0.25, 0.25, 0.25}, -- Motor case
+ },
+ },
+ tiles = {"moreblocks_circular_saw_top.png",
+ "moreblocks_circular_saw_bottom.png",
+ "moreblocks_circular_saw_side.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ groups = {choppy = 2,oddly_breakable_by_hand = 2},
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = circular_saw.on_construct,
+ can_dig = circular_saw.can_dig,
+ -- Set the owner of this circular saw.
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos)
+ local owner = placer and placer:get_player_name() or ""
+ meta:set_string("owner", owner)
+ meta:set_string("infotext",
+ S("Circular Saw is empty (owned by %s)")
+ :format(owner))
+ end,
+
+ -- The amount of items offered per shape can be configured:
+ on_receive_fields = circular_saw.on_receive_fields,
+ allow_metadata_inventory_move = circular_saw.allow_metadata_inventory_move,
+ -- Only input- and recycle-slot are intended as input slots:
+ allow_metadata_inventory_put = circular_saw.allow_metadata_inventory_put,
+ -- Taking is allowed from all slots (even the internal microblock slot). Moving is forbidden.
+ -- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material:
+ on_metadata_inventory_put = circular_saw.on_metadata_inventory_put,
+ on_metadata_inventory_take = circular_saw.on_metadata_inventory_take,
+})
diff --git a/moreblocks/config.lua b/moreblocks/config.lua
new file mode 100644
index 0000000..d646dac
--- /dev/null
+++ b/moreblocks/config.lua
@@ -0,0 +1,29 @@
+--[[
+More Blocks: configuration handling
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+moreblocks.config = {}
+
+local function getbool_default(setting, default)
+ local value = minetest.setting_getbool(setting)
+ if value == nil then
+ value = default
+ end
+ return value
+end
+
+local function setting(settingtype, name, default)
+ if settingtype == "bool" then
+ moreblocks.config[name] =
+ getbool_default("moreblocks." .. name, default)
+ else
+ moreblocks.config[name] =
+ minetest.setting_get("moreblocks." .. name) or default
+ end
+end
+
+-- Show stairs/slabs/panels/microblocks in creative inventory (true or false):
+setting("bool", "stairsplus_in_creative_inventory", false)
diff --git a/moreblocks/crafting.lua b/moreblocks/crafting.lua
new file mode 100644
index 0000000..c85cc3f
--- /dev/null
+++ b/moreblocks/crafting.lua
@@ -0,0 +1,469 @@
+--[[
+More Blocks: crafting recipes
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+minetest.register_craft({
+ output = "default:stick",
+ recipe = {{"default:dry_shrub"},}
+})
+
+minetest.register_craft({
+ output = "default:stick",
+ recipe = {{"default:sapling"},}
+})
+
+minetest.register_craft({
+ output = "default:stick",
+ recipe = {{"default:junglesapling"},}
+})
+
+minetest.register_craft({
+ output = "default:wood",
+ recipe = {
+ {"default:stick", "default:stick"},
+ {"default:stick", "default:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "default:junglewood",
+ recipe = {
+ {"moreblocks:jungle_stick", "moreblocks:jungle_stick"},
+ {"moreblocks:jungle_stick", "moreblocks:jungle_stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "default:dirt_with_grass",
+ type = "shapeless",
+ recipe = {"default:junglegrass", "default:dirt"},
+})
+
+minetest.register_craft({
+ output = "default:dirt_with_grass",
+ type = "shapeless",
+ recipe = {"default:mese", "default:dirt"},
+})
+
+minetest.register_craft({
+ output = "default:mossycobble",
+ type = "shapeless",
+ recipe = {"default:junglegrass", "default:cobble"},
+})
+
+minetest.register_craft({
+ output = "default:mossycobble",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "default:cobble"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile 9",
+ recipe = {
+ {"default:wood", "default:wood", "default:wood"},
+ {"default:wood", "default:wood", "default:wood"},
+ {"default:wood", "default:wood", "default:wood"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_flipped",
+ recipe = {{"moreblocks:wood_tile"},}
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_center 9",
+ recipe = {
+ {"default:wood", "default:wood", "default:wood"},
+ {"default:wood", "moreblocks:wood_tile", "default:wood"},
+ {"default:wood", "default:wood", "default:wood"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_full 4",
+ recipe = {
+ {"moreblocks:wood_tile", "moreblocks:wood_tile"},
+ {"moreblocks:wood_tile", "moreblocks:wood_tile"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_up",
+ recipe = {
+ {"default:stick"},
+ {"moreblocks:wood_tile_center"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_down",
+ recipe = {
+ {"moreblocks:wood_tile_center"},
+ {"default:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_left",
+ recipe = {
+ {"default:stick", "moreblocks:wood_tile_center"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:wood_tile_right",
+ recipe = {
+ {"moreblocks:wood_tile_center", "default:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:junglestick 4",
+ recipe = {{"default:junglewood"},}
+})
+
+minetest.register_craft({
+ output = "moreblocks:fence_jungle_wood 2",
+ recipe = {
+ {"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"},
+ {"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:circle_stone_bricks 8",
+ recipe = {
+ {"default:stone", "default:stone", "default:stone"},
+ {"default:stone", "", "default:stone"},
+ {"default:stone", "default:stone", "default:stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:all_faces_tree 8",
+ recipe = {
+ {"default:tree", "default:tree", "default:tree"},
+ {"default:tree", "", "default:tree"},
+ {"default:tree", "default:tree", "default:tree"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:all_faces_jungle_tree 8",
+ recipe = {
+ {"default:jungletree", "default:jungletree", "default:jungletree"},
+ {"default:jungletree", "", "default:jungletree"},
+ {"default:jungletree", "default:jungletree", "default:jungletree"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:sweeper 4",
+ recipe = {
+ {"default:junglegrass"},
+ {"default:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:stone_tile 4",
+ recipe = {
+ {"default:cobble", "default:cobble"},
+ {"default:cobble", "default:cobble"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:split_stone_tile",
+ recipe = {
+ {"moreblocks:stone_tile"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:split_stone_tile_alt",
+ recipe = {
+ {"moreblocks:split_stone_tile"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:grey_bricks 2",
+ type = "shapeless",
+ recipe = {"default:stone", "default:brick"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:grey_bricks 2",
+ type = "shapeless",
+ recipe = {"default:stonebrick", "default:brick"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:empty_bookshelf",
+ type = "shapeless",
+ recipe = {"moreblocks:sweeper", "default:bookshelf"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:coal_stone_bricks 4",
+ recipe = {
+ {"moreblocks:coal_stone", "moreblocks:coal_stone"},
+ {"moreblocks:coal_stone", "moreblocks:coal_stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:iron_stone_bricks 4",
+ recipe = {
+ {"moreblocks:iron_stone", "moreblocks:iron_stone"},
+ {"moreblocks:iron_stone", "moreblocks:iron_stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:plankstone 4",
+ recipe = {
+ {"default:stone", "default:wood"},
+ {"default:wood", "default:stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:plankstone 4",
+ recipe = {
+ {"default:wood", "default:stone"},
+ {"default:stone", "default:wood"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:coal_checker 4",
+ recipe = {
+ {"default:stone", "default:coal_lump"},
+ {"default:coal_lump", "default:stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:coal_checker 4",
+ recipe = {
+ {"default:coal_lump", "default:stone"},
+ {"default:stone", "default:coal_lump"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:iron_checker 4",
+ recipe = {
+ {"default:steel_ingot", "default:stone"},
+ {"default:stone", "default:steel_ingot"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:iron_checker 4",
+ recipe = {
+ {"default:stone", "default:steel_ingot"},
+ {"default:steel_ingot", "default:stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "default:chest_locked",
+ type = "shapeless",
+ recipe = {"default:steel_ingot", "default:chest"},
+})
+minetest.register_craft({
+ output = "default:chest_locked",
+ type = "shapeless",
+ recipe = {"default:copper_ingot", "default:chest"},
+})
+
+minetest.register_craft({
+ output = "default:chest_locked",
+ type = "shapeless",
+ recipe = {"default:bronze_ingot", "default:chest"},
+})
+
+minetest.register_craft({
+ output = "default:chest_locked",
+ type = "shapeless",
+ recipe = {"default:gold_ingot", "default:chest"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:iron_glass",
+ type = "shapeless",
+ recipe = {"default:steel_ingot", "default:glass"},
+})
+
+minetest.register_craft({
+ output = "default:glass",
+ type = "shapeless",
+ recipe = {"default:coal_lump", "moreblocks:iron_glass"},
+})
+
+
+minetest.register_craft({
+ output = "moreblocks:coal_glass",
+ type = "shapeless",
+ recipe = {"default:coal_lump", "default:glass"},
+})
+
+minetest.register_craft({
+ output = "default:glass",
+ type = "shapeless",
+ recipe = {"default:steel_ingot", "moreblocks:coal_glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:clean_glass",
+ type = "shapeless",
+ recipe = {"moreblocks:sweeper", "default:glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:glow_glass",
+ type = "shapeless",
+ recipe = {"default:torch", "default:glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:trap_glow_glass",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "default:glass", "default:torch"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:trap_glow_glass",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "moreblocks:glow_glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:super_glow_glass",
+ type = "shapeless",
+ recipe = {"default:torch", "default:torch", "default:glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:super_glow_glass",
+ type = "shapeless",
+ recipe = {"default:torch", "moreblocks:glow_glass"},
+})
+
+
+minetest.register_craft({
+ output = "moreblocks:trap_super_glow_glass",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "default:glass", "default:torch", "default:torch"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:trap_super_glow_glass",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "moreblocks:super_glow_glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:coal_stone",
+ type = "shapeless",
+ recipe = {"default:coal_lump", "default:stone"},
+})
+
+minetest.register_craft({
+ output = "default:stone",
+ type = "shapeless",
+ recipe = {"default:steel_ingot", "moreblocks:coal_stone"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:iron_stone",
+ type = "shapeless",
+ recipe = {"default:steel_ingot", "default:stone"},
+})
+
+minetest.register_craft({
+ output = "default:stone",
+ type = "shapeless",
+ recipe = {"default:coal_lump", "moreblocks:iron_stone"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:trap_stone",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "default:stone"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:trap_glass",
+ type = "shapeless",
+ recipe = {"default:mese_crystal_fragment", "default:glass"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:cactus_brick",
+ type = "shapeless",
+ recipe = {"default:cactus", "default:brick"},
+})
+
+minetest.register_craft({
+ output = "moreblocks:cactus_checker 4",
+ recipe = {
+ {"default:cactus", "default:stone"},
+ {"default:stone", "default:cactus"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:cactuschecker 4",
+ recipe = {
+ {"default:stone", "default:cactus"},
+ {"default:cactus", "default:stone"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:rope 3",
+ recipe = {
+ {"default:junglegrass"},
+ {"default:junglegrass"},
+ {"default:junglegrass"},
+ }
+})
+
+minetest.register_craft({
+ output = "moreblocks:cobble_compressed",
+ recipe = {
+ {"default:cobble", "default:cobble", "default:cobble"},
+ {"default:cobble", "default:cobble", "default:cobble"},
+ {"default:cobble", "default:cobble", "default:cobble"},
+ }
+})
+
+minetest.register_craft({
+ output = "default:cobble 9",
+ recipe = {
+ {"moreblocks:cobble_compressed"},
+ }
+})
+
+minetest.register_craft({
+ type = "cooking", output = "moreblocks:tar", recipe = "default:gravel",
+})
+
+if minetest.setting_getbool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true thenâ€
+ minetest.register_craft({
+ output = "moreblocks:circular_saw",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "group:wood", "group:wood", "group:wood"},
+ { "group:wood", "", "group:wood"},
+ }
+ })
+end
diff --git a/moreblocks/depends.txt b/moreblocks/depends.txt
new file mode 100644
index 0000000..198fe8a
--- /dev/null
+++ b/moreblocks/depends.txt
@@ -0,0 +1,2 @@
+default
+intllib?
diff --git a/moreblocks/init.lua b/moreblocks/init.lua
new file mode 100644
index 0000000..2919a30
--- /dev/null
+++ b/moreblocks/init.lua
@@ -0,0 +1,33 @@
+--[[
+=====================================================================
+** More Blocks **
+By Calinou, with the help of ShadowNinja and VanessaE.
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+=====================================================================
+--]]
+
+moreblocks = {}
+
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+moreblocks.intllib = S
+
+local modpath = minetest.get_modpath("moreblocks")
+
+dofile(modpath .. "/config.lua")
+dofile(modpath .. "/circular_saw.lua")
+dofile(modpath .. "/stairsplus/init.lua")
+dofile(modpath .. "/nodes.lua")
+dofile(modpath .. "/redefinitions.lua")
+dofile(modpath .. "/crafting.lua")
+dofile(modpath .. "/aliases.lua")
+
+if minetest.setting_getbool("log_mods") then
+ minetest.log("action", S("[moreblocks] loaded."))
+end
diff --git a/moreblocks/locale/de.txt b/moreblocks/locale/de.txt
new file mode 100644
index 0000000..542f977
--- /dev/null
+++ b/moreblocks/locale/de.txt
@@ -0,0 +1,67 @@
+# Translation by Xanthin
+
+###init.lua###
+[moreblocks] loaded. = [moreblocks] geladen.
+
+###nodes.lua###
+Jungle Wood Fence = Tropenholzzaun
+Empty Bookshelf = Leeres Buecherregal
+Clean Glass = Klares Glas
+Plankstone = Brettstein
+Wooden Tile = Holzfliese
+Full Wooden Tile = Vollholzfliese
+Centered Wooden Tile = Holzfliese mittig
+Up Wooden Tile = Holzfliese oben
+Down Wooden Tile = Holzfliese unten
+Left Wooden Tile = Holzfliese links
+Right Wooden Tile = Holzfliese rechts
+Circle Stone Bricks = Kreissteinziegel
+Stone Tile = Steinfliese
+Split Stone Tile = Geteilte Steinfliese
+Glow Glass = Leuchtglas
+Super Glow Glass = Superleuchtglas
+Coal Glass = Kohleglas
+Iron Glass = Eisenglas
+Coal Checker = Karierte Kohle
+Iron Checker = Kariertes Eisen
+Trap Stone = Steinfalle
+Trap Glass = Glasfalle
+Trap Glow Glass = Leuchtglasfalle
+Trap Super Glow Glass = Superleuchtglasfalle
+Coal Stone = Kohlestein
+Iron Stone = Eisenstein
+Coal Stone Bricks = Kohlesteinziegel
+Iron Stone Bricks = Eisensteinziegel
+Cactus Checker = Karierter Kaktus
+Cactus Brick = Kaktusziegel
+Sweeper = Besen
+Jungle Stick = Tropenholzstock
+Rope = Seil
+All-faces Tree = Baumscheibenstamm
+
+###circular_saw.lua###
+Circular Saw = Kreissaege
+Circular saw, empty (owned by %s) = Kreissaege, leer (gehoert %s)
+Circular saw, working with %s (owned by %s) = Kreissaege, arbeitet mit %s (gehoert %s)
+Circular saw, empty = Kreissaege, leer
+Circular saw is empty (owned by %s) = Kreissaege ist leer (gehoert %s)
+
+Input\nmaterial = Ausgangs-\nmaterial
+Left-over = Rest
+Max = Anzahl
+Set = Ok
+Recycle\noutput = Wiederver-\nwerten
+
+###./stairsplus/*###
+%s Stairs = %streppe
+%s Slab = %sstufe
+%s Panel = %spaneel
+%s Microblock = %smikroblock
+
+%s Pane = %sscheibe
+%s Fence = %szaun
+
+###ownership.lua###
+someone = jemand
+Sorry, %s owns that spot. = Tut mir leid, %s gehoert diese Stelle.
+
diff --git a/moreblocks/locale/es.txt b/moreblocks/locale/es.txt
new file mode 100644
index 0000000..d11ba49
--- /dev/null
+++ b/moreblocks/locale/es.txt
@@ -0,0 +1,52 @@
+# Translation by kaeza
+
+[moreblocks] loaded. = [moreblocks] cargado.
+
+Jungle Wooden Planks = Tablones de madera de jungla
+Empty Bookshelf = Estante para libros vacío
+Clean Glass = Cristal Limpio
+Plankstone = Tablones de piedra
+Wooden Tile = Parquet
+Full Wooden Tile = Parquet Completo
+Centered Wooden Tile = Parquet Centrado
+Up Wooden Tile = Parquet Superior
+Down Wooden Tile = Parquet Inferior
+Left Wooden Tile = Parquet Izquierdo
+Right Wooden Tile = Parquet Derecho
+Circle Stone Bricks = Bloques de Piedra Circulares
+Stone Tile = Baldosa de Piedra
+Split Stone Tile = Baldosas de Piedra Partida
+Glow Glass = Cristal Brillante
+Super Glow Glass = Cristal Súper Brillante
+Coal Glass = Cristal con Carbón
+Iron Glass = Cristal con Hierro
+Coal Checker = Cuadros de Carbón
+Iron Checker = Cuadros de Hierro
+Trap Stone = Piedra Trampa
+Trap Glass = Cristal Trampa
+Coal Stone = Carbón y Piedra
+Iron Stone = Hierro y Piedra
+Cactus Checker = Cuadros de Cactus
+Cactus Brick = Ladrillos de Cactus
+Sweeper = Limpiador
+Jungle Stick = Varita de Madera de Jungla
+Horizontal Tree = Tronco de árbol horizontal
+Horizontal Jungle Tree = Tronco de árbol de la jungla horizontal
+Rope = Soga
+All-faces Tree = Tronco de Ãrbol
+
+%s Stairs = Escalera de %s
+%s Slab = Losa de %s
+%s Panel = Panel de %s
+%s Microblock = Microbloque de %s
+
+Wooden = Madera
+Papyrus = Papiro
+Dry Shrub = Arbusto Desértico
+Sapling = Brote de Ãrbol
+Wooden Planks = Tablones de Madera
+Ladder = Escalera de Mano
+Glass = Cristal
+
+%s Pane = Panel de %s
+%s Fence = Valla de %s
diff --git a/moreblocks/locale/fr.txt b/moreblocks/locale/fr.txt
new file mode 100644
index 0000000..6bd7f98
--- /dev/null
+++ b/moreblocks/locale/fr.txt
@@ -0,0 +1,72 @@
+# Translation by Calinou
+
+###init.lua###
+[moreblocks] loaded. = [moreblocks] a été chargé.
+
+Jungle Wooden Planks = Planches de bois de jungle
+Empty Bookshelf = Ètagère vide
+Clean Glass = Verre propre
+Plankstone = Pierre-bois
+Wooden Tile = Dalle en bois
+Full Wooden Tile = Dalle en bois complète
+Centered Wooden Tile = Dalle en bois centrée
+Up Wooden Tile = Dalle en bois vers le haut
+Down Wooden Tile = Dalle en bois vers le bas
+Left Wooden Tile = Dalle en bois vers la gauche
+Right Wooden Tile = Dalle en bois vers la droite
+Circle Stone Bricks = Briques en pierre circulaires
+Stone Tile = Dalle en pierre
+Split Stone Tile = Dalle en pierre découpée
+Glow Glass = Verre brillant
+Super Glow Glass = Verre très brillant
+Coal Glass = Verre de charbon
+Iron Glass = Verre de fer
+Coal Checker = Damier en charbon
+Iron Checker = Damier en fer
+Trap Stone = Pierre traversable
+Trap Glass = Verre traversable
+Trap Glow Glass = Verre brillant traversable
+Trap Super Glow Glass = Verre très brillant traversable
+Coal Stone = Pierre de charbon
+Iron Stone = Pierre de fer
+Coal Stone Bricks = Briques en pierre de charbon
+Iron Stone Bricks = Briques en pierre de fer
+Cactus Checker = Damier en cactus
+Cactus Brick = Briques de cactus
+Sweeper = Balai
+Jungle Stick = Bâton en bois de jungle
+Horizontal Tree = Tronc d'arbre horizontal
+Horizontal Jungle Tree = Tronc d'arbre de jungle horizontal
+Rope = Corde
+All-faces Tree = Tronc d'arbre
+
+###redefinition.lua###
+Wooden = bois
+Papyrus = Papyrus
+Dry Shrub = Buisson mort
+Sapling = Pousse d'arbre
+Wooden Planks = Planches de bois
+Ladder = Échelle
+Glass = Verre
+
+###circular_saw.lua###
+Circular Saw = Scie circulaire
+Circular saw, empty (owned by %s) = Scie circulaire, vide (propriété de %s)
+Circular saw, working with %s (owned by %s) = Scie circulaire, manipule %s (propriété de %s)
+Circular saw, empty = Scie circulaire, vide
+Circular saw is empty (owned by %s) = Scie circulaire est vide (propriété de %s)
+
+Input material = Entrée du matériel
+Rest/microblocks = Reste/microbloc
+Max: = Max:
+Set = Fixer
+Recycle output = Recyclage
+
+###./stairsplus/*###
+%s Stairs = Escaliers en %s
+%s Slab = Demi-dalle en %s
+%s Panel = Barre en %s
+%s Microblock = Microbloc en %s
+
+%s Pane = Panneau en %s
+%s Fence = Barrière en %s \ No newline at end of file
diff --git a/moreblocks/locale/template.txt b/moreblocks/locale/template.txt
new file mode 100644
index 0000000..2b88227
--- /dev/null
+++ b/moreblocks/locale/template.txt
@@ -0,0 +1,64 @@
+###init.lua###
+[moreblocks] loaded. =
+
+###nodes.lua###
+Jungle Wood Fence =
+Empty Bookshelf =
+Clean Glass =
+Plankstone =
+Wooden Tile =
+Full Wooden Tile =
+Centered Wooden Tile =
+Up Wooden Tile =
+Down Wooden Tile =
+Left Wooden Tile =
+Right Wooden Tile =
+Circle Stone Bricks =
+Stone Tile =
+Split Stone Tile =
+Glow Glass =
+Super Glow Glass =
+Coal Glass =
+Iron Glass =
+Coal Checker =
+Iron Checker =
+Trap Stone =
+Trap Glass =
+Trap Glow Glass =
+Trap Super Glow Glass =
+Coal Stone =
+Iron Stone =
+Coal Stone Bricks =
+Iron Stone Bricks =
+Cactus Checker =
+Cactus Brick =
+Sweeper =
+Jungle Stick =
+Rope =
+All-faces Tree =
+
+###circular_saw.lua###
+Circular Saw =
+Circular saw, empty (owned by %s) =
+Circular saw, working with %s (owned by %s) =
+Circular saw, empty =
+Circular saw is empty (owned by %s) =
+
+Input\nmaterial =
+Left-over =
+Max =
+Set =
+Recycle\noutput =
+
+###ownership.lua###
+someone =
+Sorry, %s owns that spot. =
+
+###./stairsplus/*###
+%s Stairs =
+%s Slab =
+%s Panel =
+%s Microblock =
+
+%s Pane =
+%s Fence =
diff --git a/moreblocks/models/moreblocks_slope.obj b/moreblocks/models/moreblocks_slope.obj
new file mode 100644
index 0000000..22a833f
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope.obj
@@ -0,0 +1,26 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope.mtl
+o Cube_Cube.002
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.707100 -0.707100
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/3/2 3/4/2 5/1/2 6/2/2
+f 2/1/3 5/3/3 3/4/3
+f 1/2/4 4/3/4 6/4/4
+f 2/1/5 1/2/5 6/3/5 5/4/5
diff --git a/moreblocks/models/moreblocks_slope_cut.obj b/moreblocks/models/moreblocks_slope_cut.obj
new file mode 100644
index 0000000..a9ea83d
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_cut.obj
@@ -0,0 +1,33 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_cut.mtl
+o moreblocks_slope_cut
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.000000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 0.500000
+vt 1.000000 0.500000
+vt 0.000000 1.000000
+vt 0.500000 0.000000
+vt 0.500000 2.000000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn -0.408200 0.816500 -0.408200
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 2/1/2 5/2/2 6/5/2 3/6/2
+f 2/3/3 1/6/3 7/1/3 5/2/3
+f 7/7/4 4/3/4 3/8/4 6/6/4
+f 5/1/5 7/2/5 6/4/5
+f 7/1/6 1/2/6 4/5/6
diff --git a/moreblocks/models/moreblocks_slope_half.obj b/moreblocks/models/moreblocks_slope_half.obj
new file mode 100644
index 0000000..a6b1a56
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_half.obj
@@ -0,0 +1,28 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_half.mtl
+o Cube_Cube.002
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.894400 -0.447200
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/3/2 3/4/2 5/5/2 6/6/2
+f 2/1/3 5/3/3 3/4/3
+f 1/2/4 4/3/4 6/4/4
+f 2/5/5 1/6/5 6/3/5 5/4/5
diff --git a/moreblocks/models/moreblocks_slope_half_raised.obj b/moreblocks/models/moreblocks_slope_half_raised.obj
new file mode 100644
index 0000000..6f985e3
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_half_raised.obj
@@ -0,0 +1,32 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_half_raised.mtl
+o Cube.001
+v -0.500000 0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 0.894400 -0.447200
+usemtl None.001
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 2/5/2 5/2/2 6/3/2 3/4/2
+f 5/5/3 7/6/3 8/3/3 6/4/3
+f 7/1/4 1/6/4 4/3/4 8/4/4
+f 4/4/5 3/1/5 6/6/5 8/3/5
+f 2/4/6 1/1/6 7/6/6 5/3/6
diff --git a/moreblocks/models/moreblocks_slope_inner.obj b/moreblocks/models/moreblocks_slope_inner.obj
new file mode 100644
index 0000000..d4a444e
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_inner.obj
@@ -0,0 +1,35 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_inner.mtl
+o Cube_Cube.000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.707100 0.707100 0.000000
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/1/2 6/3/2 7/4/2
+f 5/1/3 2/2/3 6/4/3
+f 1/2/4 4/3/4 8/4/4
+f 8/1/5 4/2/5 3/3/5 7/4/5
+f 7/3/6 3/4/6 2/1/6 5/2/6
+f 2/1/7 1/2/7 8/3/7
+l 7 9
+l 2 9
diff --git a/moreblocks/models/moreblocks_slope_inner_cut.obj b/moreblocks/models/moreblocks_slope_inner_cut.obj
new file mode 100644
index 0000000..b687b11
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_inner_cut.obj
@@ -0,0 +1,32 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_inner_cut.mtl
+o moreblocks_slope_inner_cut
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn -0.577400 0.577400 -0.577400
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/1/2 1/2/2 4/3/2 6/4/2
+f 2/1/3 1/2/3 5/3/3 7/4/3
+f 6/1/4 4/2/4 3/3/4
+f 7/1/5 5/2/5 6/3/5
+f 2/1/6 7/2/6 3/4/6
+f 7/5/7 6/3/7 3/4/7
diff --git a/moreblocks/models/moreblocks_slope_inner_cut_half.obj b/moreblocks/models/moreblocks_slope_inner_cut_half.obj
new file mode 100644
index 0000000..82a387b
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_inner_cut_half.obj
@@ -0,0 +1,34 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_inner_cut_half.mtl
+o moreblocks_slope_inner_cut_half
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn -0.408200 0.816500 -0.408200
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/1/2 1/2/2 4/3/2 6/4/2
+f 2/1/3 1/2/3 5/5/3 7/6/3
+f 6/1/4 4/2/4 3/5/4
+f 7/1/5 5/2/5 6/3/5
+f 2/1/6 7/2/6 3/4/6
+f 7/7/7 6/5/7 3/6/7
diff --git a/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj b/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj
new file mode 100644
index 0000000..8231ee4
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj
@@ -0,0 +1,35 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_inner_cut_half_raised.mtl
+o moreblocks_slope_inner_cut_half_raised
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.000000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.500000
+vt 1.000000 0.500000
+vt 0.500000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.000000 0.000000 -1.000000
+vn -0.408200 0.816500 -0.408200
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/1/2 1/2/2 4/3/2 6/4/2
+f 2/1/3 1/2/3 5/3/3 7/4/3
+f 6/1/4 4/2/4 3/3/4
+f 7/1/5 5/2/5 6/3/5 8/5/5
+f 2/1/6 7/2/6 8/6/6 3/4/6
+f 8/7/7 6/3/7 3/4/7
diff --git a/moreblocks/models/moreblocks_slope_inner_half.obj b/moreblocks/models/moreblocks_slope_inner_half.obj
new file mode 100644
index 0000000..3e54dea
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_inner_half.obj
@@ -0,0 +1,35 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_inner_half.mtl
+o Cube_Cube.001
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.000000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.894400 -0.447200
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.447200 0.894400 0.000000
+usemtl None.002
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/1/2 6/3/2 7/4/2
+f 5/1/3 2/2/3 6/4/3
+f 1/2/4 4/3/4 8/4/4
+f 8/1/5 4/2/5 3/3/5 7/4/5
+f 7/3/6 3/4/6 2/1/6 5/2/6
+f 2/1/7 1/2/7 8/3/7
+l 7 9
+l 2 9
diff --git a/moreblocks/models/moreblocks_slope_inner_half_raised.obj b/moreblocks/models/moreblocks_slope_inner_half_raised.obj
new file mode 100644
index 0000000..e6c2205
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_inner_half_raised.obj
@@ -0,0 +1,38 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_inner_half_raised.mtl
+o Cube_Cube.003
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.894400 -0.447200
+vn 0.000000 -0.000000 1.000000
+vn -0.447200 0.894400 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 0.000000 -1.000000
+vn -1.000000 0.000000 0.000000
+usemtl None.003
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/1/2 2/2/2 6/4/2
+f 7/3/3 3/4/3 2/1/3 5/2/3
+f 2/2/4 1/3/4 8/4/4
+f 7/1/5 9/2/5 4/3/5 3/4/5
+f 6/5/6 1/2/6 4/3/6 9/4/6
+f 7/4/7 5/1/7 6/6/7 9/3/7
+l 2 10
+l 7 10
diff --git a/moreblocks/models/moreblocks_slope_outer.obj b/moreblocks/models/moreblocks_slope_outer.obj
new file mode 100644
index 0000000..b8f4e9e
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_outer.obj
@@ -0,0 +1,25 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_outer.mtl
+o Cube_Cube.004
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn -0.707100 0.707100 0.000000
+vn 0.000000 0.707100 -0.707100
+usemtl None
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/2/2 1/3/2 4/4/2
+f 2/3/3 1/4/3 5/1/3
+f 5/1/4 3/3/4 2/4/4
+f 5/2/5 4/3/5 3/4/5
diff --git a/moreblocks/models/moreblocks_slope_outer_cut.obj b/moreblocks/models/moreblocks_slope_outer_cut.obj
new file mode 100644
index 0000000..e6cbfb4
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_outer_cut.obj
@@ -0,0 +1,23 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_outer_cut.mtl
+o Cube.002
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.577400 0.577400 -0.577400
+usemtl None.004
+s off
+f 1/1/1 2/2/1 3/3/1
+f 4/3/2 1/4/2 3/2/2
+f 3/2/3 2/3/3 4/4/3
+f 2/3/4 1/5/4 4/2/4
diff --git a/moreblocks/models/moreblocks_slope_outer_cut_half.obj b/moreblocks/models/moreblocks_slope_outer_cut_half.obj
new file mode 100644
index 0000000..bd64194
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_outer_cut_half.obj
@@ -0,0 +1,24 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_outer_cut_half.mtl
+o Cube.003
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.000000 0.500000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.408200 0.816500 -0.408200
+usemtl None.005
+s off
+f 1/1/1 2/2/1 3/3/1
+f 4/3/2 1/4/2 3/2/2
+f 3/2/3 2/3/3 4/5/3
+f 2/3/4 1/6/4 4/2/4
diff --git a/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj b/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj
new file mode 100644
index 0000000..c65e08d
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj
@@ -0,0 +1,28 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_outer_cut_half_raised.mtl
+o Cube_Cube.005
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 1.000000 0.500000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.408200 0.816500 -0.408200
+vn -0.707100 0.000000 -0.707100
+usemtl None.006
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/5/2 3/2/2 5/3/2 6/6/2
+f 2/5/3 5/3/3 3/4/3
+f 1/2/4 4/3/4 6/4/4
+f 2/3/5 1/6/5 6/1/5 5/2/5
diff --git a/moreblocks/models/moreblocks_slope_outer_half.obj b/moreblocks/models/moreblocks_slope_outer_half.obj
new file mode 100644
index 0000000..7bbb38d
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_outer_half.obj
@@ -0,0 +1,27 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_outer_half.mtl
+o Cube.004
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.000000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.894400 -0.447200
+vn -0.447200 0.894400 0.000000
+usemtl None.007
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 5/5/2 1/3/2 4/4/2
+f 3/4/3 5/6/3 4/3/3
+f 2/4/4 5/2/4 3/3/4
+f 1/4/5 5/1/5 2/3/5
diff --git a/moreblocks/models/moreblocks_slope_outer_half_raised.obj b/moreblocks/models/moreblocks_slope_outer_half_raised.obj
new file mode 100644
index 0000000..51a929a
--- /dev/null
+++ b/moreblocks/models/moreblocks_slope_outer_half_raised.obj
@@ -0,0 +1,34 @@
+# Blender v2.72 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib moreblocks_slope_outer_half_raised.mtl
+o Cube_Cube.006
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 1.000000 0.500000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.894400 -0.447200
+vn -1.000000 0.000000 0.000000
+vn -0.447200 0.894400 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 -0.000000
+usemtl None.008
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/5/2 3/2/2 5/3/2 6/6/2
+f 7/3/3 4/5/3 6/2/3
+f 1/6/4 7/1/4 8/2/4 2/3/4
+f 7/3/5 1/4/5 4/5/5
+f 6/1/6 5/2/6 8/3/6 7/6/6
+f 5/5/7 3/2/7 2/3/7 8/4/7
diff --git a/moreblocks/nodes.lua b/moreblocks/nodes.lua
new file mode 100644
index 0000000..810df36
--- /dev/null
+++ b/moreblocks/nodes.lua
@@ -0,0 +1,372 @@
+--[[
+More Blocks: node definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+local sound_wood = default.node_sound_wood_defaults()
+local sound_stone = default.node_sound_stone_defaults()
+local sound_glass = default.node_sound_glass_defaults()
+local sound_leaves = default.node_sound_leaves_defaults()
+
+local function tile_tiles(name)
+ local tex = "moreblocks_" ..name.. ".png"
+ return {tex, tex, tex, tex, tex.. "^[transformR90", tex.. "^[transformR90"}
+end
+
+local nodes = {
+ ["wood_tile"] = {
+ description = S("Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^moreblocks_wood_tile.png",
+ "default_wood.png^moreblocks_wood_tile.png",
+ "default_wood.png^moreblocks_wood_tile.png",
+ "default_wood.png^moreblocks_wood_tile.png",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR90",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR90"},
+ sounds = sound_wood,
+ },
+ ["wood_tile_flipped"] = {
+ description = S("Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^moreblocks_wood_tile.png^[transformR90",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR90",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR90",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR90",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR180",
+ "default_wood.png^moreblocks_wood_tile.png^[transformR180"},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["wood_tile_center"] = {
+ description = S("Centered Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^moreblocks_wood_tile_center.png"},
+ sounds = sound_wood,
+ },
+ ["wood_tile_full"] = {
+ description = S("Full Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = tile_tiles("wood_tile_full"),
+ sounds = sound_wood,
+ },
+ ["wood_tile_up"] = {
+ description = S("Upwards Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^moreblocks_wood_tile_up.png"},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["wood_tile_down"] = {
+ description = S("Downwards Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^[transformR180^moreblocks_wood_tile_up.png^[transformR180"},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["wood_tile_left"] = {
+ description = S("Leftwards Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^[transformR270^moreblocks_wood_tile_up.png^[transformR270"},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["wood_tile_right"] = {
+ description = S("Rightwards Wooden Tile"),
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ tiles = {"default_wood.png^[transformR90^moreblocks_wood_tile_up.png^[transformR90"},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["circle_stone_bricks"] = {
+ description = S("Circle Stone Bricks"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["grey_bricks"] = {
+ description = S("Stone Bricks"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["coal_stone_bricks"] = {
+ description = S("Coal Stone Bricks"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["iron_stone_bricks"] = {
+ description = S("Iron Stone Bricks"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["stone_tile"] = {
+ description = S("Stone Tile"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["split_stone_tile"] = {
+ description = S("Split Stone Tile"),
+ tiles = {"moreblocks_split_stone_tile_top.png",
+ "moreblocks_split_stone_tile.png"},
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["split_stone_tile_alt"] = {
+ description = S("Checkered Stone Tile"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["tar"] = {
+ description = S("Tar"),
+ groups = {cracky = 2, tar_block = 1},
+ sounds = sound_stone,
+ },
+ ["cobble_compressed"] = {
+ description = S("Compressed Cobblestone"),
+ groups = {cracky = 1},
+ sounds = sound_stone,
+ },
+ ["plankstone"] = {
+ description = S("Plankstone"),
+ groups = {cracky = 3},
+ tiles = tile_tiles("plankstone"),
+ sounds = sound_stone,
+ },
+ ["iron_glass"] = {
+ description = S("Iron Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_iron_glass.png", "moreblocks_iron_glass_detail.png"},
+ tiles = {"moreblocks_iron_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ },
+ ["coal_glass"] = {
+ description = S("Coal Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_coal_glass.png", "moreblocks_coal_glass_detail.png"},
+ tiles = {"moreblocks_coal_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ },
+ ["clean_glass"] = {
+ description = S("Clean Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_clean_glass.png", "moreblocks_clean_glass_detail.png"},
+ tiles = {"moreblocks_clean_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ },
+ ["cactus_brick"] = {
+ description = S("Cactus Brick"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["cactus_checker"] = {
+ description = S("Cactus Checker"),
+ groups = {cracky = 3},
+ tiles = {"default_stone.png^moreblocks_cactus_checker.png",
+ "default_stone.png^moreblocks_cactus_checker.png",
+ "default_stone.png^moreblocks_cactus_checker.png",
+ "default_stone.png^moreblocks_cactus_checker.png",
+ "default_stone.png^moreblocks_cactus_checker.png^[transformR90",
+ "default_stone.png^moreblocks_cactus_checker.png^[transformR90"},
+ sounds = sound_stone,
+ },
+ ["empty_bookshelf"] = {
+ description = S("Empty Bookshelf"),
+ tiles = {"default_wood.png", "default_wood.png",
+ "moreblocks_empty_bookshelf.png"},
+ groups = {snappy = 2, choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["coal_stone"] = {
+ description = S("Coal Stone"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["iron_stone"] = {
+ description = S("Iron Stone"),
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["coal_checker"] = {
+ description = S("Coal Checker"),
+ tiles = {"default_stone.png^moreblocks_coal_checker.png",
+ "default_stone.png^moreblocks_coal_checker.png",
+ "default_stone.png^moreblocks_coal_checker.png",
+ "default_stone.png^moreblocks_coal_checker.png",
+ "default_stone.png^moreblocks_coal_checker.png^[transformR90",
+ "default_stone.png^moreblocks_coal_checker.png^[transformR90"},
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["iron_checker"] = {
+ description = S("Iron Checker"),
+ tiles = {"default_stone.png^moreblocks_iron_checker.png",
+ "default_stone.png^moreblocks_iron_checker.png",
+ "default_stone.png^moreblocks_iron_checker.png",
+ "default_stone.png^moreblocks_iron_checker.png",
+ "default_stone.png^moreblocks_iron_checker.png^[transformR90",
+ "default_stone.png^moreblocks_iron_checker.png^[transformR90"},
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ },
+ ["trap_stone"] = {
+ description = S("Trap Stone"),
+ walkable = false,
+ groups = {cracky = 3},
+ sounds = sound_stone,
+ no_stairs = true,
+ },
+ ["trap_glass"] = {
+ description = S("Trap Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_trap_glass.png", "default_glass_detail.png"},
+ tiles = {"moreblocks_trap_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ no_stairs = true,
+ },
+ ["fence_jungle_wood"] = {
+ description = S("Jungle Wood Fence"),
+ drawtype = "fencelike",
+ tiles = {"default_junglewood.png"},
+ inventory_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126",
+ wield_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126",
+ paramtype = "light",
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
+ sounds = sound_wood,
+ no_stairs = true,
+ },
+ ["all_faces_tree"] = {
+ description = S("All-faces Tree"),
+ tiles = {"default_tree_top.png"},
+ groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
+ sounds = sound_wood,
+ furnace_burntime = 30,
+ },
+ ["all_faces_jungle_tree"] = {
+ description = S("All-faces Jungle Tree"),
+ tiles = {"default_jungletree_top.png"},
+ groups = {tree = 1,snappy = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
+ sounds = sound_wood,
+ furnace_burntime = 30,
+ },
+ ["glow_glass"] = {
+ description = S("Glow Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_glow_glass.png", "moreblocks_glow_glass_detail.png"},
+ tiles = {"moreblocks_glow_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 11,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ },
+ ["trap_glow_glass"] = {
+ description = S("Trap Glow Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_trap_glass.png", "moreblocks_glow_glass_detail.png"},
+ tiles = {"moreblocks_trap_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 11,
+ walkable = false,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ no_stairs = true,
+ },
+ ["super_glow_glass"] = {
+ description = S("Super Glow Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"},
+ tiles = {"moreblocks_super_glow_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 15,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ },
+ ["trap_super_glow_glass"] = {
+ description = S("Trap Super Glow Glass"),
+ drawtype = "glasslike_framed_optional",
+ --tiles = {"moreblocks_trap_super_glow_glass.png", "moreblocks_super_glow_glass_detail.png"},
+ tiles = {"moreblocks_trap_super_glow_glass.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ light_source = 15,
+ walkable = false,
+ groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3},
+ sounds = sound_glass,
+ no_stairs = true,
+ },
+ ["rope"] = {
+ description = S("Rope"),
+ drawtype = "signlike",
+ inventory_image = "moreblocks_rope.png",
+ wield_image = "moreblocks_rope.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "wallmounted",
+ walkable = false,
+ climbable = true,
+ selection_box = {type = "wallmounted",},
+ groups = {snappy = 3, flammable = 2},
+ sounds = sound_leaves,
+ no_stairs = true,
+ },
+}
+
+for name, def in pairs(nodes) do
+ def.tiles = def.tiles or {"moreblocks_" ..name.. ".png"}
+ minetest.register_node("moreblocks:" ..name, def)
+ minetest.register_alias(name, "moreblocks:" ..name)
+ if not def.no_stairs then
+ local groups = {}
+ for k, v in pairs(def.groups) do groups[k] = v end
+ stairsplus:register_all("moreblocks", name, "moreblocks:" ..name, {
+ description = def.description,
+ groups = groups,
+ tiles = def.tiles,
+ sunlight_propagates = def.sunlight_propagates,
+ light_source = def.light_source,
+ sounds = def.sounds,
+ })
+ end
+end
+
+
+-- Items
+
+minetest.register_craftitem("moreblocks:sweeper", {
+ description = S("Sweeper"),
+ inventory_image = "moreblocks_sweeper.png",
+})
+
+minetest.register_craftitem("moreblocks:jungle_stick", {
+ description = S("Jungle Stick"),
+ inventory_image = "moreblocks_junglestick.png",
+ groups = {stick= 1},
+})
+
+minetest.register_craftitem("moreblocks:nothing", {
+ inventory_image = "invisible.png",
+ on_use = function() end,
+})
+
diff --git a/moreblocks/ownership.lua b/moreblocks/ownership.lua
new file mode 100644
index 0000000..1c2431b
--- /dev/null
+++ b/moreblocks/ownership.lua
@@ -0,0 +1,41 @@
+--[[
+More Blocks: ownership handling
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.gettext
+
+function moreblocks.node_is_owned(pos, placer)
+ local ownername = false
+ if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
+ if HasOwner(pos, placer) then -- returns true if the node is owned
+ if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
+ if type(getLastOwner) == "function" then -- ...is an old version
+ ownername = getLastOwner(pos)
+ elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
+ ownername = GetNodeOwnerName(pos)
+ else
+ ownername = S("someone")
+ end
+ end
+ end
+
+ elseif type(isprotect)=="function" then -- glomie's protection mod
+ if not isprotect(5, pos, placer) then
+ ownername = S("someone")
+ end
+ elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
+ if not protector.can_dig(5, pos, placer) then
+ ownername = S("someone")
+ end
+ end
+
+ if ownername ~= false then
+ minetest.chat_send_player( placer:get_player_name(), S("Sorry, %s owns that spot."):format(ownername) )
+ return true
+ else
+ return false
+ end
+end
diff --git a/moreblocks/redefinitions.lua b/moreblocks/redefinitions.lua
new file mode 100644
index 0000000..9dc7ae3
--- /dev/null
+++ b/moreblocks/redefinitions.lua
@@ -0,0 +1,100 @@
+--[[
+More Blocks: redefinitions of default stuff
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+-- Redefinitions of some default crafting recipes:
+
+minetest.register_craft({
+ output = "default:sign_wall 4",
+ recipe = {
+ {"default:wood", "default:wood", "default:wood"},
+ {"default:wood", "default:wood", "default:wood"},
+ {"", "default:stick", ""},
+ }
+})
+
+minetest.register_craft({
+ output = "default:ladder 4",
+ recipe = {
+ {"default:stick", "", "default:stick"},
+ {"default:stick", "default:stick", "default:stick"},
+ {"default:stick", "", "default:stick"},
+ }
+})
+
+minetest.register_craft({
+ output = "default:paper 4",
+ recipe = {
+ {"default:papyrus", "default:papyrus", "default:papyrus"},
+ }
+})
+
+minetest.register_craft({
+ output = "default:rail 24",
+ recipe = {
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ {"default:steel_ingot", "default:stick", "default:steel_ingot"},
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ }
+})
+
+minetest.register_craft({
+ type = "toolrepair",
+ additional_wear = -0.10, -- Tool repair buff (10% bonus instead of 2%).
+})
+
+-- Redefinitions of some default nodes
+-- ===================================
+
+-- Let there be light. This makes some nodes let light pass through:
+minetest.override_item("default:ladder", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:sapling", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:dry_shrub", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:papyrus", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:fence_wood", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:junglegrass", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:junglesapling", {
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+minetest.override_item("default:grass_1", {
+ inventory_image = "default_grass_3.png", -- Use a bigger inventory image.
+ wield_image = "default_grass_3.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+})
+
+for i = 2, 5 do
+ minetest.override_item("default:grass_" ..i, {
+ paramtype = "light",
+ sunlight_propagates = true,
+ })
+end
diff --git a/moreblocks/stairsplus/API.md b/moreblocks/stairsplus/API.md
new file mode 100644
index 0000000..2db0f2b
--- /dev/null
+++ b/moreblocks/stairsplus/API.md
@@ -0,0 +1,24 @@
+API documentation for Stairs+
+=============================
+
+* `stairsplus:register_all(modname, subname, recipeitem, fields)`
+ Registers a stair, slab, panel, microblock, and any other types of
+ nodes to be added in the future.
+ This also registers the node with the circular saw.
+ Example:
+ ```lua
+ stairsplus:register_all("moreblocks", "wood", "defaut:wood", {
+ description = "Wooden",
+ tiles = {"default_wood.png"},
+ groups = {oddly_breakabe_by_hand=1},
+ sounds = default.node_sound_wood_defaults(),
+ })
+ ```
+The following register only a particular type of microblock.
+You will probably never want to use them directly:
+
+* `stairsplus:register_stair(modname, subname, recipeitem, fields)`
+* `stairsplus:register_slab(modname, subname, recipeitem, fields)`
+* `stairsplus:register_panel(modname, subname, recipeitem, fields)`
+* `stairsplus:register_micro(modname, subname, recipeitem, fields)`
+
diff --git a/moreblocks/stairsplus/aliases.lua b/moreblocks/stairsplus/aliases.lua
new file mode 100644
index 0000000..c235d34
--- /dev/null
+++ b/moreblocks/stairsplus/aliases.lua
@@ -0,0 +1,70 @@
+--[[
+More Blocks: alias definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local function register_stairsplus_alias(modname, origname, newname)
+ minetest.register_alias(modname.. ":slab_" ..origname, "moreblocks:slab_" ..newname)
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_inverted", "moreblocks:slab_" ..newname.. "_inverted")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_wall", "moreblocks:slab_" ..newname.. "_wall")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_quarter", "moreblocks:slab_" ..newname.. "_quarter")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_quarter_inverted", "moreblocks:slab_" ..newname.. "_quarter_inverted")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_quarter_wall", "moreblocks:slab_" ..newname.. "_quarter_wall")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_three_quarter", "moreblocks:slab_" ..newname.. "_three_quarter")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_three_quarter_inverted", "moreblocks:slab_" ..newname.. "_three_quarter_inverted")
+ minetest.register_alias(modname.. ":slab_" ..origname.. "_three_quarter_wall", "moreblocks:slab_" ..newname.. "_three_quarter_wall")
+ minetest.register_alias(modname.. ":stair_" ..origname, "moreblocks:stair_" ..newname)
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_inverted", "moreblocks:stair_" ..newname.. "_inverted")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_wall", "moreblocks:stair_" ..newname.. "_wall")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_wall_half", "moreblocks:stair_" ..newname.. "_wall_half")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_wall_half_inverted", "moreblocks:stair_" ..newname.. "_wall_half_inverted")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_half", "moreblocks:stair_" ..newname.. "_half")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_half_inverted", "moreblocks:stair_" ..newname.. "_half_inverted")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_right_half", "moreblocks:stair_" ..newname.. "_right_half")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_right_half_inverted", "moreblocks:stair_" ..newname.. "_right_half_inverted")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_wall_half", "moreblocks:stair_" ..newname.. "_wall_half")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_wall_half_inverted", "moreblocks:stair_" ..newname.. "_wall_half_inverted")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_inner", "moreblocks:stair_" ..newname.. "_inner")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_inner_inverted", "moreblocks:stair_" ..newname.. "_inner_inverted")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_outer", "moreblocks:stair_" ..newname.. "_outer")
+ minetest.register_alias(modname.. ":stair_" ..origname.. "_outer_inverted", "moreblocks:stair_" ..newname.. "_outer_inverted")
+ minetest.register_alias(modname.. ":panel_" ..origname.. "_bottom", "moreblocks:panel_" ..newname.. "_bottom")
+ minetest.register_alias(modname.. ":panel_" ..origname.. "_top", "moreblocks:panel_" ..newname.. "_top")
+ minetest.register_alias(modname.. ":panel_" ..origname.. "_vertical", "moreblocks:panel_" ..newname.. "_vertical")
+ minetest.register_alias(modname.. ":micro_" ..origname.. "_bottom", "moreblocks:micro_" ..newname.. "_bottom")
+ minetest.register_alias(modname.. ":micro_" ..origname.. "_top", "moreblocks:micro_" ..newname.. "_top")
+end
+
+register_stairsplus_alias("stairsplus", "stone", "stone")
+register_stairsplus_alias("stairsplus", "wood", "wood")
+register_stairsplus_alias("stairsplus", "pinewood", "pinewood")
+register_stairsplus_alias("stairsplus", "cobble", "cobble")
+register_stairsplus_alias("stairsplus", "brick", "brick")
+register_stairsplus_alias("stairsplus", "sandstone", "sandstone")
+register_stairsplus_alias("stairsplus", "glass", "glass")
+register_stairsplus_alias("stairsplus", "tree", "tree")
+register_stairsplus_alias("stairsplus", "jungletree", "jungletree")
+register_stairsplus_alias("stairsplus", "pinetree", "pinetree")
+register_stairsplus_alias("stairsplus", "desert_stone", "desert_stone")
+register_stairsplus_alias("stairsplus", "steelblock", "steelblock")
+register_stairsplus_alias("stairsplus", "mossycobble", "mossycobble")
+
+register_stairsplus_alias("moreblocks", "coalstone", "coal_stone")
+register_stairsplus_alias("moreblocks", "junglewood", "jungle_wood")
+register_stairsplus_alias("moreblocks", "circlestonebrick", "circle_stone_bricks")
+register_stairsplus_alias("moreblocks", "ironstone", "iron_stone")
+register_stairsplus_alias("moreblocks", "coalglass", "coal_glass")
+register_stairsplus_alias("moreblocks", "ironglass", "iron_glass")
+register_stairsplus_alias("moreblocks", "glowglass", "glow_glass")
+register_stairsplus_alias("moreblocks", "superglowglass", "super_glow_glass")
+register_stairsplus_alias("moreblocks", "coalchecker", "coal_checker")
+register_stairsplus_alias("moreblocks", "ironchecker", "iron_checker")
+register_stairsplus_alias("moreblocks", "cactuschecker", "cactus_checker")
+register_stairsplus_alias("moreblocks", "ironstonebrick", "iron_stone_bricks")
+register_stairsplus_alias("moreblocks", "stonesquare", "stone_tile")
+register_stairsplus_alias("moreblocks", "splitstonesquare", "split_stone_tile")
+register_stairsplus_alias("moreblocks", "woodtile", "wood_tile")
+register_stairsplus_alias("moreblocks", "woodtile_centered", "wood_tile_centered")
+register_stairsplus_alias("moreblocks", "woodtile_full", "wood_tile_full")
diff --git a/moreblocks/stairsplus/conversion.lua b/moreblocks/stairsplus/conversion.lua
new file mode 100644
index 0000000..13966b6
--- /dev/null
+++ b/moreblocks/stairsplus/conversion.lua
@@ -0,0 +1,139 @@
+--[[
+More Blocks: conversion
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+-- Function to convert all stairs/slabs/etc nodes from
+-- inverted, wall, etc to regular + 6d facedir
+
+local dirs1 = {21, 20, 23, 22, 21}
+local dirs2 = {15, 8, 17, 6, 15}
+local dirs3 = {14, 11, 16, 5, 14}
+
+function stairsplus:register_6dfacedir_conversion(modname, material)
+ --print("Register stairsplus 6d facedir conversion")
+ --print('ABM for '..modname..' "'..material..'"')
+
+ local objects_list1 = {
+ modname.. ":slab_" ..material.. "_inverted",
+ modname.. ":slab_" ..material.. "_quarter_inverted",
+ modname.. ":slab_" ..material.. "_three_quarter_inverted",
+ modname.. ":stair_" ..material.. "_inverted",
+ modname.. ":stair_" ..material.. "_wall",
+ modname.. ":stair_" ..material.. "_wall_half",
+ modname.. ":stair_" ..material.. "_wall_half_inverted",
+ modname.. ":stair_" ..material.. "_half_inverted",
+ modname.. ":stair_" ..material.. "_right_half_inverted",
+ modname.. ":panel_" ..material.. "_vertical",
+ modname.. ":panel_" ..material.. "_top",
+ }
+
+ local objects_list2 = {
+ modname.. ":slab_" ..material.. "_wall",
+ modname.. ":slab_" ..material.. "_quarter_wall",
+ modname.. ":slab_" ..material.. "_three_quarter_wall",
+ modname.. ":stair_" ..material.. "_inner_inverted",
+ modname.. ":stair_" ..material.. "_outer_inverted",
+ modname.. ":micro_" ..material.. "_top"
+ }
+
+ for _, object in pairs(objects_list1) do
+ local flip_upside_down = false
+ local flip_to_wall = false
+
+ local dest_object = object
+
+ if string.find(dest_object, "_inverted") then
+ flip_upside_down = true
+ dest_object = string.gsub(dest_object, "_inverted", "")
+ end
+
+ if string.find(object, "_top") then
+ flip_upside_down = true
+ dest_object = string.gsub(dest_object, "_top", "")
+ end
+
+ if string.find(dest_object, "_wall") then
+ flip_to_wall = true
+ dest_object = string.gsub(dest_object, "_wall", "")
+ end
+
+ if string.find(dest_object, "_vertical") then
+ flip_to_wall = true
+ dest_object = string.gsub(dest_object, "_vertical", "")
+ end
+
+ if string.find(dest_object, "_half") and not string.find(dest_object, "_right_half") then
+ dest_object = string.gsub(dest_object, "_half", "_right_half")
+ elseif string.find(dest_object, "_right_half") then
+ dest_object = string.gsub(dest_object, "_right_half", "_half")
+ end
+
+ --print(" +---> convert " ..object)
+ --print(" | to " ..dest_object)
+
+ minetest.register_abm({
+ nodenames = {object},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2 or 0
+
+ if flip_upside_down and not flip_to_wall then
+ nfdir = dirs1[fdir + 2]
+ elseif flip_to_wall and not flip_upside_down then
+ nfdir = dirs2[fdir + 1]
+ elseif flip_to_wall and flip_upside_down then
+ nfdir = dirs3[fdir + 2]
+ end
+ minetest.set_node(pos, {name = dest_object, param2 = nfdir})
+ end
+ })
+ end
+
+ for _, object in pairs(objects_list2) do
+ local flip_upside_down = false
+ local flip_to_wall = false
+
+ local dest_object = object
+
+ if string.find(dest_object, "_inverted") then
+ flip_upside_down = true
+ dest_object = string.gsub(dest_object, "_inverted", "")
+ end
+
+ if string.find(dest_object, "_top") then
+ flip_upside_down = true
+ dest_object = string.gsub(dest_object, "_top", "")
+ end
+
+ if string.find(dest_object, "_wall") then
+ flip_to_wall = true
+ dest_object = string.gsub(dest_object, "_wall", "")
+ end
+
+ --print(" +---> convert " ..object)
+ --print(" | to " ..dest_object)
+
+ minetest.register_abm({
+ nodenames = {object},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2
+ local nfdir = 20
+
+ if flip_upside_down and not flip_to_wall then
+ nfdir = dirs1[fdir + 1]
+ elseif flip_to_wall and not flip_upside_down then
+ nfdir = dirs2[fdir + 2]
+
+ end
+ minetest.set_node(pos, {name = dest_object, param2 = nfdir})
+ end
+ })
+ end
+end
+
diff --git a/moreblocks/stairsplus/init.lua b/moreblocks/stairsplus/init.lua
new file mode 100644
index 0000000..2a959c0
--- /dev/null
+++ b/moreblocks/stairsplus/init.lua
@@ -0,0 +1,61 @@
+--[[
+More Blocks: Stairs+
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+-- Nodes will be called <modname>:{stair,slab,panel,micro}_<subname>
+
+local modpath = minetest.get_modpath("moreblocks").. "/stairsplus"
+
+stairsplus = {}
+stairsplus.expect_infinite_stacks = false
+
+if not minetest.get_modpath("unified_inventory")
+and minetest.setting_getbool("creative_mode") then
+ stairsplus.expect_infinite_stacks = true
+end
+
+function stairsplus:prepare_groups(groups)
+ result = {}
+ if groups then
+ for k, v in pairs(groups) do
+ if k ~= "wood" and k ~= "stone" then
+ result[k] = v
+ end
+ end
+ end
+ if not moreblocks.config.stairsplus_in_creative_inventory then
+ result.not_in_creative_inventory = 1
+ end
+ return result
+end
+
+function stairsplus:register_all(modname, subname, recipeitem, fields)
+ self:register_stair(modname, subname, recipeitem, fields)
+ self:register_slab (modname, subname, recipeitem, fields)
+ self:register_slope(modname, subname, recipeitem, fields)
+ self:register_panel(modname, subname, recipeitem, fields)
+ self:register_micro(modname, subname, recipeitem, fields)
+ -- self:register_6dfacedir_conversion(modname, subname) -- Not needed as of Q3 2013, uncomment to fix old maps.
+end
+
+function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light)
+ stairsplus:register_all(modname, subname, recipeitem, {
+ groups = groups,
+ tiles = images,
+ description = description,
+ drop = drop,
+ light_source = light
+ })
+end
+
+-- dofile(modpath.. "/aliases.lua") -- Not needed as of Q2 2013, uncomment to fix old maps.
+-- dofile(modpath.. "/conversion.lua") -- Not needed as of Q2 2013, uncomment to fix old maps.
+dofile(modpath .. "/stairs.lua")
+dofile(modpath .. "/slabs.lua")
+dofile(modpath .. "/slopes.lua")
+dofile(modpath .. "/panels.lua")
+dofile(modpath .. "/microblocks.lua")
+dofile(modpath .. "/registrations.lua")
diff --git a/moreblocks/stairsplus/microblocks.lua b/moreblocks/stairsplus/microblocks.lua
new file mode 100644
index 0000000..680b3ca
--- /dev/null
+++ b/moreblocks/stairsplus/microblocks.lua
@@ -0,0 +1,138 @@
+--[[
+More Blocks: microblock definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+-- Node will be called <modname>:micro_<subname>
+
+function register_micro(modname, subname, recipeitem, groups, images, description, drop, light)
+ stairsplus:register_micro(modname, subname, recipeitem, {
+ groups = groups,
+ tiles = images,
+ description = description,
+ drop = drop,
+ light_source = light,
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+function stairsplus:register_micro(modname, subname, recipeitem, fields)
+ local defs = {
+ [""] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, 0, 0.5},
+ },
+ },
+ ["_1"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, -0.4375, 0.5},
+ },
+ },
+ ["_2"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, -0.375, 0.5},
+ },
+ },
+ ["_4"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, -0.25, 0.5},
+ },
+ },
+ ["_12"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, 0.25, 0.5},
+ },
+ },
+ ["_14"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, 0.375, 0.5},
+ },
+ },
+ ["_15"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0, 0.4375, 0.5},
+ },
+ }
+ }
+
+ local desc = S("%s Microblock"):format(fields.description)
+ for alternate, def in pairs(defs) do
+ for k, v in pairs(fields) do
+ def[k] = v
+ end
+ def.drawtype = "nodebox"
+ def.paramtype = "light"
+ def.paramtype2 = "facedir"
+ def.on_place = minetest.rotate_node
+ def.groups = stairsplus:prepare_groups(fields.groups)
+ def.description = desc
+ if fields.drop then
+ def.drop = modname.. ":micro_" ..fields.drop..alternate
+ end
+ minetest.register_node(":" ..modname.. ":micro_" ..subname..alternate, def)
+ end
+ minetest.register_alias(modname.. ":micro_" ..subname.. "_bottom", modname.. ":micro_" ..subname)
+
+ circular_saw.known_nodes[recipeitem] = {modname, subname}
+
+ -- Some saw-less recipes:
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":micro_" .. subname .. " 7",
+ recipe = {modname .. ":stair_" .. subname .. "_inner"},
+ })
+
+ minetest.register_craft({
+ output = modname .. ":micro_" .. subname .. " 6",
+ type = "shapeless",
+ recipe = {modname .. ":stair_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":micro_" .. subname .. " 5",
+ recipe = {modname .. ":stair_" .. subname .. "_outer"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":micro_" .. subname .. " 4",
+ recipe = {modname .. ":slab_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":micro_" .. subname .. " 4",
+ recipe = {modname .. ":stair_" .. subname .. "_alt"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":micro_" .. subname .. " 3",
+ recipe = {modname .. ":stair_" .. subname .. "_right_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":micro_" .. subname .. " 2",
+ recipe = {modname .. ":panel_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+end
diff --git a/moreblocks/stairsplus/panels.lua b/moreblocks/stairsplus/panels.lua
new file mode 100644
index 0000000..4fb3f13
--- /dev/null
+++ b/moreblocks/stairsplus/panels.lua
@@ -0,0 +1,118 @@
+--[[
+More Blocks: panel definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+-- Node will be called <modname>:panel_<subname>
+
+function register_panel(modname, subname, recipeitem, groups, images, description, drop, light)
+ stairsplus:register_panel(modname, subname, recipeitem, {
+ groups = groups,
+ tiles = images,
+ description = description,
+ drop = drop,
+ light_source = light,
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+function stairsplus:register_panel(modname, subname, recipeitem, fields)
+ local defs = {
+ [""] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5},
+ },
+ },
+ ["_1"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, -0.4375, 0.5},
+ },
+ },
+ ["_2"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, -0.375, 0.5},
+ },
+ },
+ ["_4"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, -0.25, 0.5},
+ },
+ },
+ ["_12"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, 0.25, 0.5},
+ },
+ },
+ ["_14"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, 0.375, 0.5},
+ },
+ },
+ ["_15"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, 0, 0.5, 0.4375, 0.5},
+ },
+ }
+ }
+
+ local desc = S("%s Panel"):format(fields.description)
+ for alternate, def in pairs(defs) do
+ for k, v in pairs(fields) do
+ def[k] = v
+ end
+ def.drawtype = "nodebox"
+ def.paramtype = "light"
+ def.paramtype2 = "facedir"
+ def.on_place = minetest.rotate_node
+ def.description = desc
+ def.groups = stairsplus:prepare_groups(fields.groups)
+ if fields.drop then
+ def.drop = modname.. ":panel_" ..fields.drop..alternate
+ end
+ minetest.register_node(":" ..modname.. ":panel_" ..subname..alternate, def)
+ end
+ minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname)
+
+ circular_saw.known_nodes[recipeitem] = {modname, subname}
+
+ -- Some saw-less recipes:
+
+ minetest.register_craft({
+ output = modname .. ":panel_" .. subname .. " 12",
+ recipe = {
+ {recipeitem, ""},
+ {recipeitem, recipeitem},
+ },
+ })
+
+ minetest.register_craft({
+ output = modname .. ":panel_" .. subname .. " 12",
+ recipe = {
+ {"", recipeitem},
+ {recipeitem, recipeitem},
+ },
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":panel_" .. subname,
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
+ })
+end
diff --git a/moreblocks/stairsplus/registrations.lua b/moreblocks/stairsplus/registrations.lua
new file mode 100644
index 0000000..3e08565
--- /dev/null
+++ b/moreblocks/stairsplus/registrations.lua
@@ -0,0 +1,57 @@
+--[[
+More Blocks: registrations
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local default_nodes = { -- Default stairs/slabs/panels/microblocks:
+ "stone",
+ "cobble",
+ "mossycobble",
+ "brick",
+ "sandstone",
+ "steelblock",
+ "goldblock",
+ "copperblock",
+ "bronzeblock",
+ "diamondblock",
+ "desert_stone",
+ "desert_cobble",
+ "meselamp",
+ "glass",
+ "tree",
+ "wood",
+ "jungletree",
+ "junglewood",
+ "pine_tree",
+ "pine_wood",
+ "acacia_tree",
+ "acacia_wood",
+ "obsidian",
+ "obsidian_glass",
+ "stonebrick",
+ "desert_stonebrick",
+ "sandstonebrick",
+ "obsidianbrick",
+}
+
+for _, name in pairs(default_nodes) do
+ local nodename = "default:" .. name
+ local ndef = minetest.registered_nodes[nodename]
+ if ndef then
+ local drop
+ if type(ndef.drop) == "string" then
+ drop = ndef.drop:sub(9)
+ end
+ stairsplus:register_all("moreblocks", name, nodename, {
+ description = ndef.description,
+ drop = drop,
+ groups = ndef.groups,
+ sounds = ndef.sounds,
+ tiles = ndef.tiles,
+ sunlight_propagates = true,
+ light_source = ndef.light_source
+ })
+ end
+end
diff --git a/moreblocks/stairsplus/slabs.lua b/moreblocks/stairsplus/slabs.lua
new file mode 100644
index 0000000..cc3502c
--- /dev/null
+++ b/moreblocks/stairsplus/slabs.lua
@@ -0,0 +1,209 @@
+--[[
+More Blocks: slab definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+-- Node will be called <modname>:slab_<subname>
+
+function register_slab(modname, subname, recipeitem, groups, images, description, drop, light)
+ stairsplus:register_slab(modname, subname, recipeitem, {
+ groups = groups,
+ tiles = images,
+ description = description,
+ drop = drop,
+ light_source = light,
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+function stairsplus:register_slab(modname, subname, recipeitem, fields)
+ local defs = {
+ [""] = 8,
+ ["_quarter"] = 4,
+ ["_three_quarter"] = 12,
+ ["_1"] = 1,
+ ["_2"] = 2,
+ ["_14"] = 14,
+ ["_15"] = 15,
+ }
+
+ local desc_base = S("%s Slab"):format(fields.description)
+ for alternate, num in pairs(defs) do
+ local def = {
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, (num/16)-0.5, 0.5},
+ }
+ }
+ for k, v in pairs(fields) do
+ def[k] = v
+ end
+ def.drawtype = "nodebox"
+ def.paramtype = "light"
+ def.paramtype2 = "facedir"
+ def.on_place = minetest.rotate_node
+ def.description = ("%s (%d/16)"):format(desc_base, num)
+ def.groups = stairsplus:prepare_groups(fields.groups)
+ if fields.drop then
+ def.drop = modname.. ":slab_" .. fields.drop .. alternate
+ end
+ minetest.register_node(":" .. modname .. ":slab_" .. subname .. alternate, def)
+ end
+ minetest.register_alias("stairs:slab_" .. subname, modname .. ":slab_" .. subname)
+
+ circular_saw.known_nodes[recipeitem] = {modname, subname}
+
+ -- Some saw-less recipes:
+
+ minetest.register_craft({
+ output = modname .. ":slab_" .. subname .. " 6",
+ recipe = {{recipeitem, recipeitem, recipeitem}},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ -- uncomment this rule when conflict is no longer likely to happen
+ -- https://github.com/minetest/minetest/issues/2881
+ -- minetest.register_craft({
+ -- type = "shapeless",
+ -- output = modname .. ":slab_" .. subname,
+ -- recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
+ -- })
+
+ -- then remove these two
+ minetest.register_craft({
+ output = modname .. ":slab_" .. subname,
+ recipe = {{modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}},
+ })
+
+ minetest.register_craft({
+ output = modname .. ":slab_" .. subname,
+ recipe = {
+ {modname .. ":panel_" .. subname},
+ {modname .. ":panel_" .. subname},
+ },
+ })
+ ------------------------------
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_quarter"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slab_" .. subname .. "_15", modname .. ":slab_" .. subname .. "_1"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_quarter",
+ recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_quarter",
+ recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_2",
+ recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_three_quarter",
+ recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname .. "_quarter"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_three_quarter",
+ recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_three_quarter",
+ recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_14",
+ recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_14",
+ recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. "_15",
+ recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_1"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname .. " 3",
+ recipe = {modname .. ":stair_" .. subname, modname .. ":stair_" .. subname},
+ })
+end
diff --git a/moreblocks/stairsplus/slopes.lua b/moreblocks/stairsplus/slopes.lua
new file mode 100644
index 0000000..49058e3
--- /dev/null
+++ b/moreblocks/stairsplus/slopes.lua
@@ -0,0 +1,347 @@
+--[[
+More Blocks: slope definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+local box_slope = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ {-0.5, -0.25, -0.25, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.25, 0.5},
+ {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5}
+ }
+}
+
+local box_slope_half = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
+ {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
+ {-0.5, -0.25, 0, 0.5, -0.125, 0.5},
+ {-0.5, -0.125, 0.25, 0.5, 0, 0.5},
+ }
+}
+
+local box_slope_half_raised = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
+ {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
+ {-0.5, 0.25, 0, 0.5, 0.375, 0.5},
+ {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
+ }
+}
+
+--==============================================================
+
+local box_slope_inner = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ {-0.5, -0.5, -0.25, 0.5, 0, 0.5},
+ {-0.5, -0.5, -0.5, 0.25, 0, 0.5},
+ {-0.5, 0, -0.5, 0, 0.25, 0.5},
+ {-0.5, 0, 0, 0.5, 0.25, 0.5},
+ {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5},
+ {-0.5, 0.25, -0.5, -0.25, 0.5, 0.5},
+ }
+}
+
+local box_slope_inner_half = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
+ {-0.5, -0.375, -0.25, 0.5, -0.25, 0.5},
+ {-0.5, -0.375, -0.5, 0.25, -0.25, 0.5},
+ {-0.5, -0.25, -0.5, 0, -0.125, 0.5},
+ {-0.5, -0.25, 0, 0.5, -0.125, 0.5},
+ {-0.5, -0.125, 0.25, 0.5, 0, 0.5},
+ {-0.5, -0.125, -0.5, -0.25, 0, 0.5},
+ }
+}
+
+local box_slope_inner_half_raised = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
+ {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5},
+ {-0.5, 0.125, -0.5, 0.25, 0.25, 0.5},
+ {-0.5, 0.25, -0.5, 0, 0.375, 0.5},
+ {-0.5, 0.25, 0, 0.5, 0.375, 0.5},
+ {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5},
+ {-0.5, 0.375, -0.5, -0.25, 0.5, 0.5},
+ }
+}
+
+--==============================================================
+
+local box_slope_outer = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
+ {-0.5, -0.25, -0.25, 0.25, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.25, 0.5},
+ {-0.5, 0.25, 0.25, -0.25, 0.5, 0.5}
+ }
+}
+
+local box_slope_outer_half = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
+ {-0.5, -0.375, -0.25, 0.25, -0.25, 0.5},
+ {-0.5, -0.25, 0, 0, -0.125, 0.5},
+ {-0.5, -0.125, 0.25, -0.25, 0, 0.5}
+ }
+}
+
+local box_slope_outer_half_raised = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.125, 0.5},
+ {-0.5, 0.125, -0.25, 0.25, 0.25, 0.5},
+ {-0.5, 0.25, 0, 0, 0.375, 0.5},
+ {-0.5, 0.375, 0.25, -0.25, 0.5, 0.5}
+ }
+}
+
+-- Node will be called <modname>:slope_<subname>
+
+function register_slope(modname, subname, recipeitem, groups, images, description, drop, light)
+ stairsplus:register_slope(modname, subname, recipeitem, {
+ groups = groups,
+ tiles = images,
+ description = description,
+ drop = drop,
+ light_source = light,
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+function stairsplus:register_slope(modname, subname, recipeitem, fields)
+ local defs = {
+ [""] = {
+ mesh = "moreblocks_slope.obj",
+ collision_box = box_slope,
+ selection_box = box_slope,
+
+ },
+ ["_half"] = {
+ mesh = "moreblocks_slope_half.obj",
+ collision_box = box_slope_half,
+ selection_box = box_slope_half,
+ },
+ ["_half_raised"] = {
+ mesh = "moreblocks_slope_half_raised.obj",
+ collision_box = box_slope_half_raised,
+ selection_box = box_slope_half_raised,
+ },
+
+--==============================================================
+
+ ["_inner"] = {
+ mesh = "moreblocks_slope_inner.obj",
+ collision_box = box_slope_inner,
+ selection_box = box_slope_inner,
+ },
+ ["_inner_half"] = {
+ mesh = "moreblocks_slope_inner_half.obj",
+ collision_box = box_slope_inner_half,
+ selection_box = box_slope_inner_half,
+ },
+ ["_inner_half_raised"] = {
+ mesh = "moreblocks_slope_inner_half_raised.obj",
+ collision_box = box_slope_inner_half_raised,
+ selection_box = box_slope_inner_half_raised,
+ },
+
+--==============================================================
+
+ ["_inner_cut"] = {
+ mesh = "moreblocks_slope_inner_cut.obj",
+ collision_box = box_slope_inner,
+ selection_box = box_slope_inner,
+ },
+ ["_inner_cut_half"] = {
+ mesh = "moreblocks_slope_inner_cut_half.obj",
+ collision_box = box_slope_inner_half,
+ selection_box = box_slope_inner_half,
+ },
+ ["_inner_cut_half_raised"] = {
+ mesh = "moreblocks_slope_inner_cut_half_raised.obj",
+ collision_box = box_slope_inner_half_raised,
+ selection_box = box_slope_inner_half_raised,
+ },
+
+--==============================================================
+
+ ["_outer"] = {
+ mesh = "moreblocks_slope_outer.obj",
+ collision_box = box_slope_outer,
+ selection_box = box_slope_outer,
+ },
+ ["_outer_half"] = {
+ mesh = "moreblocks_slope_outer_half.obj",
+ collision_box = box_slope_outer_half,
+ selection_box = box_slope_outer_half,
+ },
+ ["_outer_half_raised"] = {
+ mesh = "moreblocks_slope_outer_half_raised.obj",
+ collision_box = box_slope_outer_half_raised,
+ selection_box = box_slope_outer_half_raised,
+ },
+
+--==============================================================
+
+ ["_outer_cut"] = {
+ mesh = "moreblocks_slope_outer_cut.obj",
+ collision_box = box_slope_outer,
+ selection_box = box_slope_outer,
+ },
+ ["_outer_cut_half"] = {
+ mesh = "moreblocks_slope_outer_cut_half.obj",
+ collision_box = box_slope_outer_half,
+ selection_box = box_slope_outer_half,
+ },
+ ["_outer_cut_half_raised"] = {
+ mesh = "moreblocks_slope_outer_cut_half_raised.obj",
+ collision_box = box_slope_outer_half_raised,
+ selection_box = box_slope_outer_half_raised,
+ },
+ ["_cut"] = {
+ mesh = "moreblocks_slope_cut.obj",
+ collision_box = box_slope_outer,
+ selection_box = box_slope_outer,
+ },
+ }
+
+ local desc = S("%s Slope"):format(fields.description)
+ for alternate, def in pairs(defs) do
+ for k, v in pairs(fields) do
+ def[k] = v
+ end
+ def.drawtype = "mesh"
+ def.paramtype = "light"
+ def.paramtype2 = "facedir"
+ def.on_place = minetest.rotate_node
+ def.description = desc
+ def.groups = stairsplus:prepare_groups(fields.groups)
+ if fields.drop then
+ def.drop = modname.. ":slope_" ..fields.drop..alternate
+ end
+ minetest.register_node(":" ..modname.. ":slope_" ..subname..alternate, def)
+ end
+
+ circular_saw.known_nodes[recipeitem] = {modname, subname}
+
+ -- Some saw-less recipes:
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname, modname .. ":slope_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half_raised"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
+ modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_outer", modname .. ":slope_" .. subname .. "_inner"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half_raised"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_outer_half_raised", modname .. ":slope_" .. subname .. "_inner_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_outer_cut", modname .. ":slope_" .. subname .. "_inner_cut"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half_raised"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = recipeitem,
+ recipe = {modname .. ":slope_" .. subname .. "_cut", modname .. ":slope_" .. subname .. "_cut"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slab_" .. subname,
+ recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slope_" .. subname .. "_half_raised",
+ recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
+ modname .. ":slope_" .. subname .. "_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slope_" .. subname .. "_half_raised",
+ recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slope_" .. subname .. "_inner_half_raised",
+ recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slope_" .. subname .. "_outer_half_raised",
+ recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_outer_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":slope_" .. subname .. "_inner_cut_half_raised",
+ recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_cut_half"},
+ })
+end
diff --git a/moreblocks/stairsplus/stairs.lua b/moreblocks/stairsplus/stairs.lua
new file mode 100644
index 0000000..dde6d50
--- /dev/null
+++ b/moreblocks/stairsplus/stairs.lua
@@ -0,0 +1,224 @@
+--[[
+More Blocks: stair definitions
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+local S = moreblocks.intllib
+
+-- Node will be called <modname>:stair_<subname>
+
+function register_stair(modname, subname, recipeitem, groups, images, description, drop, light)
+ stairsplus:register_stair(modname, subname, recipeitem, {
+ groups = groups,
+ tiles = images,
+ description = description,
+ drop = drop,
+ light_source = light,
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+function stairsplus:register_stair(modname, subname, recipeitem, fields)
+ local defs = {
+ [""] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ },
+ ["_half"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.5, 0.5},
+ },
+ },
+ },
+ ["_right_half" ]= {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0, -0.5, -0.5, 0.5, 0, 0.5},
+ {0, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ },
+ ["_inner"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ {-0.5, 0, -0.5, 0, 0.5, 0},
+ },
+ },
+ },
+ ["_outer"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ {-0.5, 0, 0, 0, 0.5, 0.5},
+ },
+ },
+ },
+ ["_alt"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0, 0},
+ {-0.5, 0, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ },
+ ["_alt_1"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.0625, -0.5, 0.5, 0, 0},
+ {-0.5, 0.4375, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ },
+ ["_alt_2"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.125, -0.5, 0.5, 0, 0},
+ {-0.5, 0.375, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ },
+ ["_alt_4"] = {
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.25, -0.5, 0.5, 0, 0},
+ {-0.5, 0.25, 0, 0.5, 0.5, 0.5},
+ },
+ },
+ },
+ }
+
+ local desc = S("%s Stairs"):format(fields.description)
+ for alternate, def in pairs(defs) do
+ for k, v in pairs(fields) do
+ def[k] = v
+ end
+ def.drawtype = "nodebox"
+ def.paramtype = "light"
+ def.paramtype2 = "facedir"
+ def.on_place = minetest.rotate_node
+ def.description = desc
+ def.groups = stairsplus:prepare_groups(fields.groups)
+ if fields.drop then
+ def.drop = modname .. ":stair_" .. fields.drop .. alternate
+ end
+ minetest.register_node(":" .. modname .. ":stair_" .. subname .. alternate, def)
+ end
+ minetest.register_alias("stairs:stair_" .. subname, modname .. ":stair_" .. subname)
+
+ circular_saw.known_nodes[recipeitem] = {modname, subname}
+
+ -- Some saw-less recipes:
+
+ minetest.register_craft({
+ output = modname .. ":stair_" .. subname .. " 8",
+ recipe = {
+ {recipeitem, "", ""},
+ {recipeitem, recipeitem, ""},
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+
+ minetest.register_craft({
+ output = modname .. ":stair_" .. subname .. " 8",
+ recipe = {
+ {"", "", recipeitem},
+ {"", recipeitem, recipeitem},
+ {recipeitem, recipeitem, recipeitem},
+ },
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname,
+ recipe = {modname .. ":panel_" .. subname, modname .. ":slab_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname,
+ recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname .. "_outer",
+ recipe = {modname .. ":micro_" .. subname, modname .. ":slab_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname .. "_half",
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname .. "_half",
+ recipe = {modname .. ":panel_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname .. "_right_half",
+ recipe = {modname .. ":stair_" .. subname .. "_half"},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname,
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname .. "_inner",
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname .. "_outer",
+ recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = modname .. ":stair_" .. subname,
+ recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
+ })
+
+ minetest.register_craft({ -- See mirrored variation of the recipe below.
+ output = modname .. ":stair_" .. subname .. "_alt",
+ recipe = {
+ {modname .. ":panel_" .. subname, ""},
+ {"" , modname .. ":panel_" .. subname},
+ },
+ })
+
+ minetest.register_craft({ -- Mirrored variation of the recipe above.
+ output = modname .. ":stair_" .. subname .. "_alt",
+ recipe = {
+ {"" , modname .. ":panel_" .. subname},
+ {modname .. ":panel_" .. subname, ""},
+ },
+ })
+end
diff --git a/moreblocks/textures/default_brick.png b/moreblocks/textures/default_brick.png
new file mode 100644
index 0000000..9c76033
--- /dev/null
+++ b/moreblocks/textures/default_brick.png
Binary files differ
diff --git a/moreblocks/textures/default_fence_overlay.png b/moreblocks/textures/default_fence_overlay.png
new file mode 100644
index 0000000..780e736
--- /dev/null
+++ b/moreblocks/textures/default_fence_overlay.png
Binary files differ
diff --git a/moreblocks/textures/invisible.png b/moreblocks/textures/invisible.png
new file mode 100644
index 0000000..4b5b302
--- /dev/null
+++ b/moreblocks/textures/invisible.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_cactus_brick.png b/moreblocks/textures/moreblocks_cactus_brick.png
new file mode 100644
index 0000000..0e8c2c9
--- /dev/null
+++ b/moreblocks/textures/moreblocks_cactus_brick.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_cactus_checker.png b/moreblocks/textures/moreblocks_cactus_checker.png
new file mode 100644
index 0000000..99c2677
--- /dev/null
+++ b/moreblocks/textures/moreblocks_cactus_checker.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_circle_stone_bricks.png b/moreblocks/textures/moreblocks_circle_stone_bricks.png
new file mode 100644
index 0000000..4ca0134
--- /dev/null
+++ b/moreblocks/textures/moreblocks_circle_stone_bricks.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_circular_saw_bottom.png b/moreblocks/textures/moreblocks_circular_saw_bottom.png
new file mode 100644
index 0000000..1522829
--- /dev/null
+++ b/moreblocks/textures/moreblocks_circular_saw_bottom.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_circular_saw_side.png b/moreblocks/textures/moreblocks_circular_saw_side.png
new file mode 100644
index 0000000..ce9e16f
--- /dev/null
+++ b/moreblocks/textures/moreblocks_circular_saw_side.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_circular_saw_top.png b/moreblocks/textures/moreblocks_circular_saw_top.png
new file mode 100644
index 0000000..96f3350
--- /dev/null
+++ b/moreblocks/textures/moreblocks_circular_saw_top.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_clean_glass.png b/moreblocks/textures/moreblocks_clean_glass.png
new file mode 100644
index 0000000..140ee2b
--- /dev/null
+++ b/moreblocks/textures/moreblocks_clean_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_clean_glass_detail.png b/moreblocks/textures/moreblocks_clean_glass_detail.png
new file mode 100644
index 0000000..71414e8
--- /dev/null
+++ b/moreblocks/textures/moreblocks_clean_glass_detail.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_coal_checker.png b/moreblocks/textures/moreblocks_coal_checker.png
new file mode 100644
index 0000000..3df90c3
--- /dev/null
+++ b/moreblocks/textures/moreblocks_coal_checker.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_coal_glass.png b/moreblocks/textures/moreblocks_coal_glass.png
new file mode 100644
index 0000000..5cb7227
--- /dev/null
+++ b/moreblocks/textures/moreblocks_coal_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_coal_glass_detail.png b/moreblocks/textures/moreblocks_coal_glass_detail.png
new file mode 100644
index 0000000..5ea081f
--- /dev/null
+++ b/moreblocks/textures/moreblocks_coal_glass_detail.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_coal_glass_stairsplus.png b/moreblocks/textures/moreblocks_coal_glass_stairsplus.png
new file mode 100644
index 0000000..8086a28
--- /dev/null
+++ b/moreblocks/textures/moreblocks_coal_glass_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_coal_stone.png b/moreblocks/textures/moreblocks_coal_stone.png
new file mode 100644
index 0000000..1e514ed
--- /dev/null
+++ b/moreblocks/textures/moreblocks_coal_stone.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_coal_stone_bricks.png b/moreblocks/textures/moreblocks_coal_stone_bricks.png
new file mode 100644
index 0000000..366e445
--- /dev/null
+++ b/moreblocks/textures/moreblocks_coal_stone_bricks.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_cobble_compressed.png b/moreblocks/textures/moreblocks_cobble_compressed.png
new file mode 100644
index 0000000..94d02b5
--- /dev/null
+++ b/moreblocks/textures/moreblocks_cobble_compressed.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_empty_bookshelf.png b/moreblocks/textures/moreblocks_empty_bookshelf.png
new file mode 100644
index 0000000..af874d7
--- /dev/null
+++ b/moreblocks/textures/moreblocks_empty_bookshelf.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_fence_jungle_wood.png b/moreblocks/textures/moreblocks_fence_jungle_wood.png
new file mode 100644
index 0000000..b59db10
--- /dev/null
+++ b/moreblocks/textures/moreblocks_fence_jungle_wood.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_fence_wood.png b/moreblocks/textures/moreblocks_fence_wood.png
new file mode 100644
index 0000000..e3510c5
--- /dev/null
+++ b/moreblocks/textures/moreblocks_fence_wood.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_glass.png b/moreblocks/textures/moreblocks_glass.png
new file mode 100644
index 0000000..912b029
--- /dev/null
+++ b/moreblocks/textures/moreblocks_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_glass_stairsplus.png b/moreblocks/textures/moreblocks_glass_stairsplus.png
new file mode 100644
index 0000000..b879ec3
--- /dev/null
+++ b/moreblocks/textures/moreblocks_glass_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_glow_glass.png b/moreblocks/textures/moreblocks_glow_glass.png
new file mode 100644
index 0000000..843bebf
--- /dev/null
+++ b/moreblocks/textures/moreblocks_glow_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_glow_glass_detail.png b/moreblocks/textures/moreblocks_glow_glass_detail.png
new file mode 100644
index 0000000..ea67bc3
--- /dev/null
+++ b/moreblocks/textures/moreblocks_glow_glass_detail.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_glow_glass_stairsplus.png b/moreblocks/textures/moreblocks_glow_glass_stairsplus.png
new file mode 100644
index 0000000..cdb8044
--- /dev/null
+++ b/moreblocks/textures/moreblocks_glow_glass_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_grey_bricks.png b/moreblocks/textures/moreblocks_grey_bricks.png
new file mode 100644
index 0000000..9839ca2
--- /dev/null
+++ b/moreblocks/textures/moreblocks_grey_bricks.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_iron_checker.png b/moreblocks/textures/moreblocks_iron_checker.png
new file mode 100644
index 0000000..d27f4df
--- /dev/null
+++ b/moreblocks/textures/moreblocks_iron_checker.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_iron_glass.png b/moreblocks/textures/moreblocks_iron_glass.png
new file mode 100644
index 0000000..51be0d6
--- /dev/null
+++ b/moreblocks/textures/moreblocks_iron_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_iron_glass_detail.png b/moreblocks/textures/moreblocks_iron_glass_detail.png
new file mode 100644
index 0000000..2b8fc12
--- /dev/null
+++ b/moreblocks/textures/moreblocks_iron_glass_detail.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_iron_glass_stairsplus.png b/moreblocks/textures/moreblocks_iron_glass_stairsplus.png
new file mode 100644
index 0000000..52e3bf3
--- /dev/null
+++ b/moreblocks/textures/moreblocks_iron_glass_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_iron_stone.png b/moreblocks/textures/moreblocks_iron_stone.png
new file mode 100644
index 0000000..20c42f3
--- /dev/null
+++ b/moreblocks/textures/moreblocks_iron_stone.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_iron_stone_bricks.png b/moreblocks/textures/moreblocks_iron_stone_bricks.png
new file mode 100644
index 0000000..1f817f8
--- /dev/null
+++ b/moreblocks/textures/moreblocks_iron_stone_bricks.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_junglestick.png b/moreblocks/textures/moreblocks_junglestick.png
new file mode 100644
index 0000000..7c6c462
--- /dev/null
+++ b/moreblocks/textures/moreblocks_junglestick.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_obsidian_glass_stairsplus.png b/moreblocks/textures/moreblocks_obsidian_glass_stairsplus.png
new file mode 100644
index 0000000..3eb22d0
--- /dev/null
+++ b/moreblocks/textures/moreblocks_obsidian_glass_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_plankstone.png b/moreblocks/textures/moreblocks_plankstone.png
new file mode 100644
index 0000000..b1a65c5
--- /dev/null
+++ b/moreblocks/textures/moreblocks_plankstone.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_plankstone_2.png b/moreblocks/textures/moreblocks_plankstone_2.png
new file mode 100644
index 0000000..953c2f5
--- /dev/null
+++ b/moreblocks/textures/moreblocks_plankstone_2.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_rope.png b/moreblocks/textures/moreblocks_rope.png
new file mode 100644
index 0000000..19787fe
--- /dev/null
+++ b/moreblocks/textures/moreblocks_rope.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_split_stone_tile.png b/moreblocks/textures/moreblocks_split_stone_tile.png
new file mode 100644
index 0000000..d7d69af
--- /dev/null
+++ b/moreblocks/textures/moreblocks_split_stone_tile.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_split_stone_tile_alt.png b/moreblocks/textures/moreblocks_split_stone_tile_alt.png
new file mode 100644
index 0000000..9d11b4f
--- /dev/null
+++ b/moreblocks/textures/moreblocks_split_stone_tile_alt.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_split_stone_tile_top.png b/moreblocks/textures/moreblocks_split_stone_tile_top.png
new file mode 100644
index 0000000..3c8eb6d
--- /dev/null
+++ b/moreblocks/textures/moreblocks_split_stone_tile_top.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_stone_tile.png b/moreblocks/textures/moreblocks_stone_tile.png
new file mode 100644
index 0000000..c2083ea
--- /dev/null
+++ b/moreblocks/textures/moreblocks_stone_tile.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_super_glow_glass.png b/moreblocks/textures/moreblocks_super_glow_glass.png
new file mode 100644
index 0000000..a9d4c5f
--- /dev/null
+++ b/moreblocks/textures/moreblocks_super_glow_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_super_glow_glass_detail.png b/moreblocks/textures/moreblocks_super_glow_glass_detail.png
new file mode 100644
index 0000000..e321a5c
--- /dev/null
+++ b/moreblocks/textures/moreblocks_super_glow_glass_detail.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png b/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png
new file mode 100644
index 0000000..9118c78
--- /dev/null
+++ b/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_sweeper.png b/moreblocks/textures/moreblocks_sweeper.png
new file mode 100644
index 0000000..34f1cde
--- /dev/null
+++ b/moreblocks/textures/moreblocks_sweeper.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_tar.png b/moreblocks/textures/moreblocks_tar.png
new file mode 100644
index 0000000..e1eb427
--- /dev/null
+++ b/moreblocks/textures/moreblocks_tar.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_trap_glass.png b/moreblocks/textures/moreblocks_trap_glass.png
new file mode 100644
index 0000000..25c3387
--- /dev/null
+++ b/moreblocks/textures/moreblocks_trap_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_trap_glow_glass.png b/moreblocks/textures/moreblocks_trap_glow_glass.png
new file mode 100644
index 0000000..1096dd7
--- /dev/null
+++ b/moreblocks/textures/moreblocks_trap_glow_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_trap_stone.png b/moreblocks/textures/moreblocks_trap_stone.png
new file mode 100644
index 0000000..764aa81
--- /dev/null
+++ b/moreblocks/textures/moreblocks_trap_stone.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_trap_super_glow_glass.png b/moreblocks/textures/moreblocks_trap_super_glow_glass.png
new file mode 100644
index 0000000..fef974b
--- /dev/null
+++ b/moreblocks/textures/moreblocks_trap_super_glow_glass.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_tree_stairsplus.png b/moreblocks/textures/moreblocks_tree_stairsplus.png
new file mode 100644
index 0000000..60100c9
--- /dev/null
+++ b/moreblocks/textures/moreblocks_tree_stairsplus.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_wood_tile.png b/moreblocks/textures/moreblocks_wood_tile.png
new file mode 100644
index 0000000..d0faa3d
--- /dev/null
+++ b/moreblocks/textures/moreblocks_wood_tile.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_wood_tile_center.png b/moreblocks/textures/moreblocks_wood_tile_center.png
new file mode 100644
index 0000000..02b0f84
--- /dev/null
+++ b/moreblocks/textures/moreblocks_wood_tile_center.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_wood_tile_full.png b/moreblocks/textures/moreblocks_wood_tile_full.png
new file mode 100644
index 0000000..7ec7f05
--- /dev/null
+++ b/moreblocks/textures/moreblocks_wood_tile_full.png
Binary files differ
diff --git a/moreblocks/textures/moreblocks_wood_tile_up.png b/moreblocks/textures/moreblocks_wood_tile_up.png
new file mode 100644
index 0000000..3f6a2f2
--- /dev/null
+++ b/moreblocks/textures/moreblocks_wood_tile_up.png
Binary files differ
diff --git a/moreores/LICENSE.md b/moreores/LICENSE.md
new file mode 100644
index 0000000..45c5ff5
--- /dev/null
+++ b/moreores/LICENSE.md
@@ -0,0 +1,14 @@
+zlib license
+============
+
+Copyright (c) 2011-2015 Calinou and contributors
+
+**This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.**
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
diff --git a/moreores/README.md b/moreores/README.md
new file mode 100644
index 0000000..f54dda7
--- /dev/null
+++ b/moreores/README.md
@@ -0,0 +1,11 @@
+More Ores
+=========
+
+More Ores for Minetest <http://minetest.net>, a free/libre infinite
+world block sandbox game.
+
+To install, just clone this repository into your "mods" directory.
+
+More Ores code is licensed under the zlib license, textures are by Calinou and are licensed under CC BY-SA 3.0 Unported.
+
+**Forum topic:** <https://forum.minetest.net/viewtopic.php?f=11&t=549>
diff --git a/moreores/_config.txt b/moreores/_config.txt
new file mode 100644
index 0000000..e716b2e
--- /dev/null
+++ b/moreores/_config.txt
@@ -0,0 +1,27 @@
+------------------------------------------------------------------------------
+------------------------------ CONFIGURATION ---------------------------------
+------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+-------- Change settings by changing the values after the "=". ---------------
+------------------------------------------------------------------------------
+
+-- Chunk sizes for ore generation (bigger = ore deposits are more scattered around)
+moreores_tin_chunk_size = 7
+moreores_silver_chunk_size = 11
+moreores_mithril_chunk_size = 11
+
+-- Amount of ore per chunk (higher = bigger ore deposits)
+moreores_tin_ore_per_chunk = 3
+moreores_silver_ore_per_chunk = 4
+moreores_mithril_ore_per_chunk = 1
+
+-- Minimal depths of ore generation (Y coordinate, 0 being sea level by default)
+moreores_tin_min_depth = -31000
+moreores_silver_min_depth = -31000
+moreores_mithril_min_depth = -31000
+
+-- Maximal depths of ore generation (Y coordinate, 0 being sea level by default)
+moreores_tin_max_depth = 8
+moreores_silver_max_depth = -2
+moreores_mithril_max_depth = -512
diff --git a/moreores/depends.txt b/moreores/depends.txt
new file mode 100644
index 0000000..0219052
--- /dev/null
+++ b/moreores/depends.txt
@@ -0,0 +1,2 @@
+default
+mg?
diff --git a/moreores/init.lua b/moreores/init.lua
new file mode 100644
index 0000000..ff5f94e
--- /dev/null
+++ b/moreores/init.lua
@@ -0,0 +1,365 @@
+--[[
+=====================================================================
+** More Ores **
+By Calinou, with the help of Nore.
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+=====================================================================
+--]]
+
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+
+local modpath = minetest.get_modpath("moreores")
+
+dofile(modpath .. "/_config.txt")
+
+-- `mg` support:
+if minetest.get_modpath("mg") then
+ dofile(modpath .. "/mg.lua")
+end
+
+-- Utility functions
+-- =================
+
+local default_stone_sounds = default.node_sound_stone_defaults()
+
+local function hoe_on_use(itemstack, user, pointed_thing, uses)
+ local pt = pointed_thing
+ -- Check if pointing at a node:
+ if not pt then
+ return
+ end
+ if pt.type ~= "node" then
+ return
+ end
+
+ local under = minetest.get_node(pt.under)
+ local pos = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z}
+ local above = minetest.get_node(pos)
+
+ -- Return if any of the nodes is not registered:
+ if not minetest.registered_nodes[under.name] then return end
+ if not minetest.registered_nodes[above.name] then return end
+
+ -- Check if the node above the pointed thing is air:
+ if above.name ~= "air" then return end
+
+ -- Check if pointing at dirt:
+ if minetest.get_item_group(under.name, "soil") ~= 1 then return end
+
+ -- Turn the node into soil, wear out item and play sound:
+ minetest.set_node(pt.under, {name ="farming:soil"})
+ minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5})
+ itemstack:add_wear(65535 / (uses - 1))
+ return itemstack
+end
+
+local function get_recipe(c, name)
+ if name == "sword" then
+ return {{c}, {c}, {"group:stick"}}
+ end
+ if name == "shovel" then
+ return {{c}, {"group:stick"}, {"group:stick"}}
+ end
+ if name == "axe" then
+ return {{c, c}, {c, "group:stick"}, {"", "group:stick"}}
+ end
+ if name == "pick" then
+ return {{c, c, c}, {"", "group:stick", ""}, {"", "group:stick", ""}}
+ end
+ if name == "hoe" then
+ return {{c, c}, {"", "group:stick"}, {"", "group:stick"}}
+ end
+ if name == "block" then
+ return {{c, c, c}, {c, c, c}, {c, c, c}}
+ end
+ if name == "lockedchest" then
+ return {{"group:wood", "group:wood", "group:wood"}, {"group:wood", c, "group:wood"}, {"group:wood", "group:wood", "group:wood"}}
+ end
+end
+
+local function add_ore(modname, description, mineral_name, oredef)
+ local img_base = modname .. "_" .. mineral_name
+ local toolimg_base = modname .. "_tool_"..mineral_name
+ local tool_base = modname .. ":"
+ local tool_post = "_" .. mineral_name
+ local item_base = tool_base .. mineral_name
+ local ingot = item_base .. "_ingot"
+ local lump_item = item_base .. "_lump"
+ local ingotcraft = ingot
+
+ if oredef.makes.ore then
+ minetest.register_node(modname .. ":mineral_" .. mineral_name, {
+ description = S("%s Ore"):format(S(description)),
+ tiles = {"default_stone.png^" .. modname .. "_mineral_" .. mineral_name .. ".png"},
+ groups = {cracky = 3},
+ sounds = default_stone_sounds,
+ drop = lump_item
+ })
+ end
+
+ if oredef.makes.block then
+ local block_item = item_base .. "_block"
+ minetest.register_node(block_item, {
+ description = S("%s Block"):format(S(description)),
+ tiles = { img_base .. "_block.png" },
+ groups = {snappy = 1, bendy = 2, cracky = 1, melty = 2, level= 2},
+ sounds = default_stone_sounds
+ })
+ minetest.register_alias(mineral_name.."_block", block_item)
+ if oredef.makes.ingot then
+ minetest.register_craft( {
+ output = block_item,
+ recipe = get_recipe(ingot, "block")
+ })
+ minetest.register_craft( {
+ output = ingot .. " 9",
+ recipe = {
+ { block_item }
+ }
+ })
+ end
+ end
+
+ if oredef.makes.lump then
+ minetest.register_craftitem(lump_item, {
+ description = S("%s Lump"):format(S(description)),
+ inventory_image = img_base .. "_lump.png",
+ })
+ minetest.register_alias(mineral_name .. "_lump", lump_item)
+ if oredef.makes.ingot then
+ minetest.register_craft({
+ type = "cooking",
+ output = ingot,
+ recipe = lump_item
+ })
+ end
+ end
+
+ if oredef.makes.ingot then
+ minetest.register_craftitem(ingot, {
+ description = S("%s Ingot"):format(S(description)),
+ inventory_image = img_base .. "_ingot.png",
+ })
+ minetest.register_alias(mineral_name .. "_ingot", ingot)
+ end
+
+ if oredef.makes.chest then
+ minetest.register_craft( {
+ output = "default:chest_locked",
+ recipe = {
+ {ingot},
+ {"default:chest"}
+ }
+ })
+ minetest.register_craft( {
+ output = "default:chest_locked",
+ recipe = get_recipe(ingot, "lockedchest")
+ })
+ end
+
+ oredef.oredef.ore_type = "scatter"
+ oredef.oredef.ore = modname .. ":mineral_" .. mineral_name
+ oredef.oredef.wherein = "default:stone"
+
+ minetest.register_ore(oredef.oredef)
+
+ for tool_name, tooldef in pairs(oredef.tools) do
+ local tdef = {
+ description = "",
+ inventory_image = toolimg_base .. tool_name .. ".png",
+ tool_capabilities = {
+ max_drop_level = 3,
+ groupcaps = tooldef
+ }
+ }
+
+ if tool_name == "sword" then
+ tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval
+ tdef.tool_capabilities.damage_groups = oredef.damage_groups
+ tdef.description = S("%s Sword"):format(S(description))
+ end
+
+ if tool_name == "pick" then
+ tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval
+ tdef.tool_capabilities.damage_groups = oredef.damage_groups
+ tdef.description = S("%s Pickaxe"):format(S(description))
+ end
+
+ if tool_name == "axe" then
+ tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval
+ tdef.tool_capabilities.damage_groups = oredef.damage_groups
+ tdef.description = S("%s Axe"):format(S(description))
+ end
+
+ if tool_name == "shovel" then
+ tdef.full_punch_interval = oredef.full_punch_interval
+ tdef.tool_capabilities.damage_groups = oredef.damage_groups
+ tdef.description = S("%s Shovel"):format(S(description))
+ end
+
+ if tool_name == "hoe" then
+ tdef.description = S("%s Hoe"):format(S(description))
+ local uses = tooldef.uses
+ tooldef.uses = nil
+ tdef.on_use = function(itemstack, user, pointed_thing)
+ return hoe_on_use(itemstack, user, pointed_thing, uses)
+ end
+ end
+
+ local fulltool_name = tool_base .. tool_name .. tool_post
+ minetest.register_tool(fulltool_name, tdef)
+ minetest.register_alias(tool_name .. tool_post, fulltool_name)
+ if oredef.makes.ingot then
+ minetest.register_craft({
+ output = fulltool_name,
+ recipe = get_recipe(ingot, tool_name)
+ })
+ end
+ end
+end
+
+-- Add everything:
+local modname = "moreores"
+
+local oredefs = {
+ silver = {
+ description = "Silver",
+ makes = {ore = true, block = true, lump = true, ingot = true, chest = true},
+ oredef = {clust_scarcity = moreores_silver_chunk_size * moreores_silver_chunk_size * moreores_silver_chunk_size,
+ clust_num_ores = moreores_silver_ore_per_chunk,
+ clust_size = moreores_silver_chunk_size,
+ y_min = moreores_silver_min_depth,
+ y_max = moreores_silver_max_depth
+ },
+ tools = {
+ pick = {
+ cracky = {times = {[1] = 2.60, [2] = 1.00, [3] = 0.60}, uses = 100, maxlevel= 1}
+ },
+ hoe = {
+ uses = 300
+ },
+ shovel = {
+ crumbly = {times = {[1] = 1.10, [2] = 0.40, [3] = 0.25}, uses = 100, maxlevel= 1}
+ },
+ axe = {
+ choppy = {times = {[1] = 2.50, [2] = 0.80, [3] = 0.50}, uses = 100, maxlevel= 1},
+ fleshy = {times = {[2] = 1.10, [3] = 0.60}, uses = 100, maxlevel= 1}
+ },
+ sword = {
+ fleshy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel= 1},
+ snappy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel= 1},
+ choppy = {times = {[3] = 0.80}, uses = 100, maxlevel= 0}
+ },
+ },
+ full_punch_interval = 1.0,
+ damage_groups = {fleshy = 6},
+ },
+ tin = {
+ description = "Tin",
+ makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
+ oredef = {clust_scarcity = moreores_tin_chunk_size * moreores_tin_chunk_size * moreores_tin_chunk_size,
+ clust_num_ores = moreores_tin_ore_per_chunk,
+ clust_size = moreores_tin_chunk_size,
+ y_min = moreores_tin_min_depth,
+ y_max = moreores_tin_max_depth
+ },
+ tools = {},
+ },
+ mithril = {
+ description = "Mithril",
+ makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
+ oredef = {clust_scarcity = moreores_mithril_chunk_size * moreores_mithril_chunk_size * moreores_mithril_chunk_size,
+ clust_num_ores = moreores_mithril_ore_per_chunk,
+ clust_size = moreores_mithril_chunk_size,
+ y_min = moreores_mithril_min_depth,
+ y_max = moreores_mithril_max_depth
+ },
+ tools = {
+ pick = {
+ cracky = {times = {[1] = 2.25, [2] = 0.55, [3] = 0.35}, uses = 200, maxlevel= 1}
+ },
+ hoe = {
+ uses = 1000
+ },
+ shovel = {
+ crumbly = {times = {[1] = 0.70, [2] = 0.35, [3] = 0.20}, uses = 200, maxlevel= 1}
+ },
+ axe = {
+ choppy = {times = {[1] = 1.75, [2] = 0.45, [3] = 0.45}, uses = 200, maxlevel= 1},
+ fleshy = {times = {[2] = 0.95, [3] = 0.30}, uses = 200, maxlevel= 1}
+ },
+ sword = {
+ fleshy = {times = {[2] = 0.65, [3] = 0.25}, uses = 200, maxlevel= 1},
+ snappy = {times = {[2] = 0.70, [3] = 0.25}, uses = 200, maxlevel= 1},
+ choppy = {times = {[3] = 0.65}, uses = 200, maxlevel= 0}
+ }
+ },
+ full_punch_interval = 0.45,
+ damage_groups = {fleshy = 9},
+ }
+}
+
+for orename,def in pairs(oredefs) do
+ add_ore(modname, def.description, orename, def)
+end
+
+-- Copper rail (special node):
+minetest.register_craft({
+ output = "moreores:copper_rail 24",
+ recipe = {
+ {"default:copper_ingot", "", "default:copper_ingot"},
+ {"default:copper_ingot", "group:stick", "default:copper_ingot"},
+ {"default:copper_ingot", "", "default:copper_ingot"}
+ }
+})
+
+-- Bronze has some special cases, because it is made from copper and tin:
+minetest.register_craft( {
+ type = "shapeless",
+ output = "default:bronze_ingot 3",
+ recipe = {
+ "moreores:tin_ingot",
+ "default:copper_ingot",
+ "default:copper_ingot",
+ }
+})
+
+-- Unique node:
+minetest.register_node("moreores:copper_rail", {
+ description = S("Copper Rail"),
+ drawtype = "raillike",
+ tiles = {"moreores_copper_rail.png", "moreores_copper_rail_curved.png", "moreores_copper_rail_t_junction.png", "moreores_copper_rail_crossing.png"},
+ inventory_image = "moreores_copper_rail.png",
+ wield_image = "moreores_copper_rail.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {bendy = 2,snappy = 1,dig_immediate = 2,rail= 1, connect_to_raillike = 1},
+ mesecons = {
+ effector = {
+ action_on = function(pos, node)
+ minetest.get_meta(pos):set_string("cart_acceleration", "0.5")
+ end,
+
+ action_off = function(pos, node)
+ minetest.get_meta(pos):set_string("cart_acceleration", "0")
+ end,
+ },
+ },
+})
+
+
+if minetest.setting_getbool("log_mods") then
+ minetest.log("action", S("[moreores] loaded."))
+end
diff --git a/moreores/locale/de.txt b/moreores/locale/de.txt
new file mode 100644
index 0000000..2eb6075
--- /dev/null
+++ b/moreores/locale/de.txt
@@ -0,0 +1,22 @@
+# Translation by Xanthin
+
+[moreores] loaded. = [moreores] geladen.
+
+%s Ore = %serz
+%s Lump = %sklumpen
+%s Ingot = %sbarren
+%s Block = %sblock
+%s Pickaxe = %sspitzhacke
+%s Shovel = %sschaufel
+%s Axe = %saxt
+%s Sword = %sschwert
+%s Hoe = %shacke
+
+Copper = Kupfer
+Tin = Zinn
+Bronze = Bronze
+Silver = Silber
+Gold = Gold
+Mithril = Mithril
+
+Copper Rail = Kupferschiene
diff --git a/moreores/locale/es.txt b/moreores/locale/es.txt
new file mode 100644
index 0000000..1344a5a
--- /dev/null
+++ b/moreores/locale/es.txt
@@ -0,0 +1,21 @@
+# Translation by kaeza
+
+[moreores] loaded. = [moreores] cargado.
+
+%s Ore = Mineral de %s
+%s Lump = Pepita de %s
+%s Ingot = Lingote de %s
+%s Block = Bloque de %s
+%s Pickaxe = Pico de %s
+%s Shovel = Pala de %s
+%s Axe = Hacha de %s
+%s Sword = Espada de %s
+
+Copper = cobre
+Tin = estaño
+Bronze = bronce
+Silver = plata
+Gold = oro
+Mithril = mitrilo
+
+Copper Rail = Riel de Cobre
diff --git a/moreores/locale/fr.txt b/moreores/locale/fr.txt
new file mode 100644
index 0000000..65687fa
--- /dev/null
+++ b/moreores/locale/fr.txt
@@ -0,0 +1,21 @@
+# Translation by Calinou
+
+[moreores] loaded. = [moreores] a été chargé.
+
+%s Ore = Minerai en %s
+%s Lump = Roche en %s
+%s Ingot = Lingot en %s
+%s Block = Bloc en %s
+%s Pickaxe = Pioche en %s
+%s Shovel = Pelle en %s
+%s Axe = Hache en %s
+%s Sword = Épée en %s
+
+Copper = cuivre
+Tin = étain
+Bronze = bronze
+Silver = argent
+Gold = or
+Mithril = mithril
+
+Copper Rail = Rail en cuivre
diff --git a/moreores/locale/it.txt b/moreores/locale/it.txt
new file mode 100644
index 0000000..dcd8c52
--- /dev/null
+++ b/moreores/locale/it.txt
@@ -0,0 +1,21 @@
+# Translation by Pagliaccio
+
+[moreores] loaded. = [moreores] caricato.
+
+%s Ore = Minerale di %s
+%s Lump = %s grezzo
+%s Ingot = Lingotto di %s
+%s Block = Blocco di %s
+%s Pickaxe = Piccone di %s
+%s Shovel = Badile di %s
+%s Axe = Ascia di %s
+%s Sword = Spada di %s
+
+Copper = Rame
+Tin = Stagno
+Bronze = Bronzo
+Silver = Argento
+Gold = Oro
+Mithril = Mithril
+
+Copper Rail = Binario di rame \ No newline at end of file
diff --git a/moreores/locale/tr.txt b/moreores/locale/tr.txt
new file mode 100644
index 0000000..4f20286
--- /dev/null
+++ b/moreores/locale/tr.txt
@@ -0,0 +1,25 @@
+# Translation by Mahmutelmas06
+# mahmutelmas06@hotmail.com
+# Türkçe Çeviri
+# Turkish translation
+# Language 2 letter iso code is "tr"
+
+[moreores] loaded. = [moreores] yüklendi.
+
+%s Ore = %s madeni
+%s Lump = %s yığını
+%s Ingot = %s külçesi
+%s Block = %s blok
+%s Pickaxe = %s kazma
+%s Shovel = %s kürek
+%s Axe = %s balta
+%s Sword = %s kılıç
+
+Copper = Bakır
+Tin = Kalay
+Bronze = Bronz
+Silver = Gümüş
+Gold = Altın
+Mithril = Mithril
+
+Copper Rail = Bakır ray
diff --git a/moreores/mg.lua b/moreores/mg.lua
new file mode 100644
index 0000000..e323b74
--- /dev/null
+++ b/moreores/mg.lua
@@ -0,0 +1,53 @@
+--[[
+More Ores: `mg` mod support
+
+Copyright (c) 2011-2015 Calinou and contributors.
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+mg.register_ore({
+ name = "moreores:mineral_tin",
+ wherein = "default:stone",
+ seeddiff = 8,
+ maxvdistance = 10.5,
+ maxheight = 8,
+ seglenghtn = 15,
+ seglenghtdev = 6,
+ segincln = 0,
+ segincldev = 0.6,
+ turnangle = 57,
+ forkturnangle = 57,
+ numperblock = 2
+})
+
+mg.register_ore({
+ name = "moreores:mineral_silver",
+ wherein = "default:stone",
+ seeddiff = 9,
+ maxvdistance = 10.5,
+ maxheight = -2,
+ seglenghtn = 15,
+ seglenghtdev = 6,
+ sizen = 60,
+ sizedev = 30,
+ segincln = 0,
+ segincldev = 0.6,
+ turnangle = 57,
+ forkturnangle = 57,
+ numperblock = 2
+})
+
+mg.register_ore({
+ name = "moreores:mineral_mithril",
+ wherein = "default:stone",
+ seeddiff = 10,
+ maxvdistance = 10.5,
+ maxheight = -512,
+ seglenghtn = 2,
+ seglenghtdev = 4,
+ sizen = 12,
+ sizedev = 5,
+ segincln = 0,
+ segincldev = 0.6,
+ turnangle = 57,
+})
diff --git a/moreores/textures/moreores_copper_rail.png b/moreores/textures/moreores_copper_rail.png
new file mode 100644
index 0000000..91fb824
--- /dev/null
+++ b/moreores/textures/moreores_copper_rail.png
Binary files differ
diff --git a/moreores/textures/moreores_copper_rail_crossing.png b/moreores/textures/moreores_copper_rail_crossing.png
new file mode 100644
index 0000000..bc78b47
--- /dev/null
+++ b/moreores/textures/moreores_copper_rail_crossing.png
Binary files differ
diff --git a/moreores/textures/moreores_copper_rail_curved.png b/moreores/textures/moreores_copper_rail_curved.png
new file mode 100644
index 0000000..47ba6e0
--- /dev/null
+++ b/moreores/textures/moreores_copper_rail_curved.png
Binary files differ
diff --git a/moreores/textures/moreores_copper_rail_t_junction.png b/moreores/textures/moreores_copper_rail_t_junction.png
new file mode 100644
index 0000000..aac2981
--- /dev/null
+++ b/moreores/textures/moreores_copper_rail_t_junction.png
Binary files differ
diff --git a/moreores/textures/moreores_mineral_mithril.png b/moreores/textures/moreores_mineral_mithril.png
new file mode 100644
index 0000000..ed0fbf2
--- /dev/null
+++ b/moreores/textures/moreores_mineral_mithril.png
Binary files differ
diff --git a/moreores/textures/moreores_mineral_silver.png b/moreores/textures/moreores_mineral_silver.png
new file mode 100644
index 0000000..93f9f43
--- /dev/null
+++ b/moreores/textures/moreores_mineral_silver.png
Binary files differ
diff --git a/moreores/textures/moreores_mineral_tin.png b/moreores/textures/moreores_mineral_tin.png
new file mode 100644
index 0000000..232d4b5
--- /dev/null
+++ b/moreores/textures/moreores_mineral_tin.png
Binary files differ
diff --git a/moreores/textures/moreores_mithril_block.png b/moreores/textures/moreores_mithril_block.png
new file mode 100644
index 0000000..133a93b
--- /dev/null
+++ b/moreores/textures/moreores_mithril_block.png
Binary files differ
diff --git a/moreores/textures/moreores_mithril_ingot.png b/moreores/textures/moreores_mithril_ingot.png
new file mode 100644
index 0000000..9065e6a
--- /dev/null
+++ b/moreores/textures/moreores_mithril_ingot.png
Binary files differ
diff --git a/moreores/textures/moreores_mithril_lump.png b/moreores/textures/moreores_mithril_lump.png
new file mode 100644
index 0000000..6c7f30c
--- /dev/null
+++ b/moreores/textures/moreores_mithril_lump.png
Binary files differ
diff --git a/moreores/textures/moreores_silver_block.png b/moreores/textures/moreores_silver_block.png
new file mode 100644
index 0000000..6806b5c
--- /dev/null
+++ b/moreores/textures/moreores_silver_block.png
Binary files differ
diff --git a/moreores/textures/moreores_silver_ingot.png b/moreores/textures/moreores_silver_ingot.png
new file mode 100644
index 0000000..86dd54e
--- /dev/null
+++ b/moreores/textures/moreores_silver_ingot.png
Binary files differ
diff --git a/moreores/textures/moreores_silver_lump.png b/moreores/textures/moreores_silver_lump.png
new file mode 100644
index 0000000..e815ef0
--- /dev/null
+++ b/moreores/textures/moreores_silver_lump.png
Binary files differ
diff --git a/moreores/textures/moreores_tin_block.png b/moreores/textures/moreores_tin_block.png
new file mode 100644
index 0000000..72759b0
--- /dev/null
+++ b/moreores/textures/moreores_tin_block.png
Binary files differ
diff --git a/moreores/textures/moreores_tin_ingot.png b/moreores/textures/moreores_tin_ingot.png
new file mode 100644
index 0000000..eed5361
--- /dev/null
+++ b/moreores/textures/moreores_tin_ingot.png
Binary files differ
diff --git a/moreores/textures/moreores_tin_lump.png b/moreores/textures/moreores_tin_lump.png
new file mode 100644
index 0000000..72bd339
--- /dev/null
+++ b/moreores/textures/moreores_tin_lump.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_mithrilaxe.png b/moreores/textures/moreores_tool_mithrilaxe.png
new file mode 100644
index 0000000..46f7776
--- /dev/null
+++ b/moreores/textures/moreores_tool_mithrilaxe.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_mithrilhoe.png b/moreores/textures/moreores_tool_mithrilhoe.png
new file mode 100644
index 0000000..4a58e8f
--- /dev/null
+++ b/moreores/textures/moreores_tool_mithrilhoe.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_mithrilpick.png b/moreores/textures/moreores_tool_mithrilpick.png
new file mode 100644
index 0000000..efe9443
--- /dev/null
+++ b/moreores/textures/moreores_tool_mithrilpick.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_mithrilshovel.png b/moreores/textures/moreores_tool_mithrilshovel.png
new file mode 100644
index 0000000..128e9f7
--- /dev/null
+++ b/moreores/textures/moreores_tool_mithrilshovel.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_mithrilsword.png b/moreores/textures/moreores_tool_mithrilsword.png
new file mode 100644
index 0000000..cd1d864
--- /dev/null
+++ b/moreores/textures/moreores_tool_mithrilsword.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_silveraxe.png b/moreores/textures/moreores_tool_silveraxe.png
new file mode 100644
index 0000000..31d9acf
--- /dev/null
+++ b/moreores/textures/moreores_tool_silveraxe.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_silverhoe.png b/moreores/textures/moreores_tool_silverhoe.png
new file mode 100644
index 0000000..f384113
--- /dev/null
+++ b/moreores/textures/moreores_tool_silverhoe.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_silverpick.png b/moreores/textures/moreores_tool_silverpick.png
new file mode 100644
index 0000000..4194c6e
--- /dev/null
+++ b/moreores/textures/moreores_tool_silverpick.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_silvershovel.png b/moreores/textures/moreores_tool_silvershovel.png
new file mode 100644
index 0000000..9f9cfbe
--- /dev/null
+++ b/moreores/textures/moreores_tool_silvershovel.png
Binary files differ
diff --git a/moreores/textures/moreores_tool_silversword.png b/moreores/textures/moreores_tool_silversword.png
new file mode 100644
index 0000000..1393df5
--- /dev/null
+++ b/moreores/textures/moreores_tool_silversword.png
Binary files differ
diff --git a/moretrees/LICENSE b/moretrees/LICENSE
new file mode 100644
index 0000000..c4742e6
--- /dev/null
+++ b/moretrees/LICENSE
@@ -0,0 +1,392 @@
+Minetest mod moretrees
+======================
+
+All source code:
+ © 2013, Vanessa Ezekowitz <vanessaezekowitz@gmail.com>
+ Published under the terms and conditions of the WTFPL.
+All sapling textures (textures/*_sapling.png):
+ © 2013, Tim Huppertz <mitroman@naturalnet.de>
+ Published under the terms and conditions of CC-BY-SA-3.0 Unported.
+All other textures:
+ © 2013, Vanessa Ezekowitz <vanessaezekowitz@gmail.com>
+ Published under the terms and conditions of CC-BY-SA-3.0 Unported.
+
+-------------------------------------------------------------------------------
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+This license is commonly known as "WTFPL".
+
+-------------------------------------------------------------------------------
+
+Creative Commons Legal Code
+
+Attribution-ShareAlike 3.0 Unported
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+ other pre-existing works, such as a translation, adaptation,
+ derivative work, arrangement of music or other alterations of a
+ literary or artistic work, or phonogram or performance and includes
+ cinematographic adaptations or any other form in which the Work may be
+ recast, transformed, or adapted including in any form recognizably
+ derived from the original, except that a work that constitutes a
+ Collection will not be considered an Adaptation for the purpose of
+ this License. For the avoidance of doubt, where the Work is a musical
+ work, performance or phonogram, the synchronization of the Work in
+ timed-relation with a moving image ("synching") will be considered an
+ Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+ encyclopedias and anthologies, or performances, phonograms or
+ broadcasts, or other works or subject matter other than works listed
+ in Section 1(f) below, which, by reason of the selection and
+ arrangement of their contents, constitute intellectual creations, in
+ which the Work is included in its entirety in unmodified form along
+ with one or more other contributions, each constituting separate and
+ independent works in themselves, which together are assembled into a
+ collective whole. A work that constitutes a Collection will not be
+ considered an Adaptation (as defined below) for the purposes of this
+ License.
+ c. "Creative Commons Compatible License" means a license that is listed
+ at http://creativecommons.org/compatiblelicenses that has been
+ approved by Creative Commons as being essentially equivalent to this
+ License, including, at a minimum, because that license: (i) contains
+ terms that have the same purpose, meaning and effect as the License
+ Elements of this License; and, (ii) explicitly permits the relicensing
+ of adaptations of works made available under that license under this
+ License or a Creative Commons jurisdiction license with the same
+ License Elements as this License.
+ d. "Distribute" means to make available to the public the original and
+ copies of the Work or Adaptation, as appropriate, through sale or
+ other transfer of ownership.
+ e. "License Elements" means the following high-level license attributes
+ as selected by Licensor and indicated in the title of this License:
+ Attribution, ShareAlike.
+ f. "Licensor" means the individual, individuals, entity or entities that
+ offer(s) the Work under the terms of this License.
+ g. "Original Author" means, in the case of a literary or artistic work,
+ the individual, individuals, entity or entities who created the Work
+ or if no individual or entity can be identified, the publisher; and in
+ addition (i) in the case of a performance the actors, singers,
+ musicians, dancers, and other persons who act, sing, deliver, declaim,
+ play in, interpret or otherwise perform literary or artistic works or
+ expressions of folklore; (ii) in the case of a phonogram the producer
+ being the person or legal entity who first fixes the sounds of a
+ performance or other sounds; and, (iii) in the case of broadcasts, the
+ organization that transmits the broadcast.
+ h. "Work" means the literary and/or artistic work offered under the terms
+ of this License including without limitation any production in the
+ literary, scientific and artistic domain, whatever may be the mode or
+ form of its expression including digital form, such as a book,
+ pamphlet and other writing; a lecture, address, sermon or other work
+ of the same nature; a dramatic or dramatico-musical work; a
+ choreographic work or entertainment in dumb show; a musical
+ composition with or without words; a cinematographic work to which are
+ assimilated works expressed by a process analogous to cinematography;
+ a work of drawing, painting, architecture, sculpture, engraving or
+ lithography; a photographic work to which are assimilated works
+ expressed by a process analogous to photography; a work of applied
+ art; an illustration, map, plan, sketch or three-dimensional work
+ relative to geography, topography, architecture or science; a
+ performance; a broadcast; a phonogram; a compilation of data to the
+ extent it is protected as a copyrightable work; or a work performed by
+ a variety or circus performer to the extent it is not otherwise
+ considered a literary or artistic work.
+ i. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License with
+ respect to the Work, or who has received express permission from the
+ Licensor to exercise rights under this License despite a previous
+ violation.
+ j. "Publicly Perform" means to perform public recitations of the Work and
+ to communicate to the public those public recitations, by any means or
+ process, including by wire or wireless means or public digital
+ performances; to make available to the public Works in such a way that
+ members of the public may access these Works from a place and at a
+ place individually chosen by them; to perform the Work to the public
+ by any means or process and the communication to the public of the
+ performances of the Work, including by public digital performance; to
+ broadcast and rebroadcast the Work by any means including signs,
+ sounds or images.
+ k. "Reproduce" means to make copies of the Work by any means including
+ without limitation by sound or visual recordings and the right of
+ fixation and reproducing fixations of the Work, including storage of a
+ protected performance or phonogram in digital form or other electronic
+ medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+ Collections, and to Reproduce the Work as incorporated in the
+ Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+ including any translation in any medium, takes reasonable steps to
+ clearly label, demarcate or otherwise identify that changes were made
+ to the original Work. For example, a translation could be marked "The
+ original work was translated from English to Spanish," or a
+ modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+ in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme cannot be waived, the Licensor
+ reserves the exclusive right to collect such royalties for any
+ exercise by You of the rights granted under this License;
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme can be waived, the Licensor waives the
+ exclusive right to collect such royalties for any exercise by You
+ of the rights granted under this License; and,
+ iii. Voluntary License Schemes. The Licensor waives the right to
+ collect royalties, whether individually or, in the event that the
+ Licensor is a member of a collecting society that administers
+ voluntary licensing schemes, via that society, from any exercise
+ by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+ of this License. You must include a copy of, or the Uniform Resource
+ Identifier (URI) for, this License with every copy of the Work You
+ Distribute or Publicly Perform. You may not offer or impose any terms
+ on the Work that restrict the terms of this License or the ability of
+ the recipient of the Work to exercise the rights granted to that
+ recipient under the terms of the License. You may not sublicense the
+ Work. You must keep intact all notices that refer to this License and
+ to the disclaimer of warranties with every copy of the Work You
+ Distribute or Publicly Perform. When You Distribute or Publicly
+ Perform the Work, You may not impose any effective technological
+ measures on the Work that restrict the ability of a recipient of the
+ Work from You to exercise the rights granted to that recipient under
+ the terms of the License. This Section 4(a) applies to the Work as
+ incorporated in a Collection, but this does not require the Collection
+ apart from the Work itself to be made subject to the terms of this
+ License. If You create a Collection, upon notice from any Licensor You
+ must, to the extent practicable, remove from the Collection any credit
+ as required by Section 4(c), as requested. If You create an
+ Adaptation, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Adaptation any credit as required by
+ Section 4(c), as requested.
+ b. You may Distribute or Publicly Perform an Adaptation only under the
+ terms of: (i) this License; (ii) a later version of this License with
+ the same License Elements as this License; (iii) a Creative Commons
+ jurisdiction license (either this or a later license version) that
+ contains the same License Elements as this License (e.g.,
+ Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
+ License. If you license the Adaptation under one of the licenses
+ mentioned in (iv), you must comply with the terms of that license. If
+ you license the Adaptation under the terms of any of the licenses
+ mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
+ comply with the terms of the Applicable License generally and the
+ following provisions: (I) You must include a copy of, or the URI for,
+ the Applicable License with every copy of each Adaptation You
+ Distribute or Publicly Perform; (II) You may not offer or impose any
+ terms on the Adaptation that restrict the terms of the Applicable
+ License or the ability of the recipient of the Adaptation to exercise
+ the rights granted to that recipient under the terms of the Applicable
+ License; (III) You must keep intact all notices that refer to the
+ Applicable License and to the disclaimer of warranties with every copy
+ of the Work as included in the Adaptation You Distribute or Publicly
+ Perform; (IV) when You Distribute or Publicly Perform the Adaptation,
+ You may not impose any effective technological measures on the
+ Adaptation that restrict the ability of a recipient of the Adaptation
+ from You to exercise the rights granted to that recipient under the
+ terms of the Applicable License. This Section 4(b) applies to the
+ Adaptation as incorporated in a Collection, but this does not require
+ the Collection apart from the Adaptation itself to be made subject to
+ the terms of the Applicable License.
+ c. If You Distribute, or Publicly Perform the Work or any Adaptations or
+ Collections, You must, unless a request has been made pursuant to
+ Section 4(a), keep intact all copyright notices for the Work and
+ provide, reasonable to the medium or means You are utilizing: (i) the
+ name of the Original Author (or pseudonym, if applicable) if supplied,
+ and/or if the Original Author and/or Licensor designate another party
+ or parties (e.g., a sponsor institute, publishing entity, journal) for
+ attribution ("Attribution Parties") in Licensor's copyright notice,
+ terms of service or by other reasonable means, the name of such party
+ or parties; (ii) the title of the Work if supplied; (iii) to the
+ extent reasonably practicable, the URI, if any, that Licensor
+ specifies to be associated with the Work, unless such URI does not
+ refer to the copyright notice or licensing information for the Work;
+ and (iv) , consistent with Ssection 3(b), in the case of an
+ Adaptation, a credit identifying the use of the Work in the Adaptation
+ (e.g., "French translation of the Work by Original Author," or
+ "Screenplay based on original Work by Original Author"). The credit
+ required by this Section 4(c) may be implemented in any reasonable
+ manner; provided, however, that in the case of a Adaptation or
+ Collection, at a minimum such credit will appear, if a credit for all
+ contributing authors of the Adaptation or Collection appears, then as
+ part of these credits and in a manner at least as prominent as the
+ credits for the other contributing authors. For the avoidance of
+ doubt, You may only use the credit required by this Section for the
+ purpose of attribution in the manner set out above and, by exercising
+ Your rights under this License, You may not implicitly or explicitly
+ assert or imply any connection with, sponsorship or endorsement by the
+ Original Author, Licensor and/or Attribution Parties, as appropriate,
+ of You or Your use of the Work, without the separate, express prior
+ written permission of the Original Author, Licensor and/or Attribution
+ Parties.
+ d. Except as otherwise agreed in writing by the Licensor or as may be
+ otherwise permitted by applicable law, if You Reproduce, Distribute or
+ Publicly Perform the Work either by itself or as part of any
+ Adaptations or Collections, You must not distort, mutilate, modify or
+ take other derogatory action in relation to the Work which would be
+ prejudicial to the Original Author's honor or reputation. Licensor
+ agrees that in those jurisdictions (e.g. Japan), in which any exercise
+ of the right granted in Section 3(b) of this License (the right to
+ make Adaptations) would be deemed to be a distortion, mutilation,
+ modification or other derogatory action prejudicial to the Original
+ Author's honor and reputation, the Licensor will waive or not assert,
+ as appropriate, this Section, to the fullest extent permitted by the
+ applicable national law, to enable You to reasonably exercise Your
+ right under Section 3(b) of this License (right to make Adaptations)
+ but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Adaptations or Collections
+ from You under this License, however, will not have their licenses
+ terminated provided such individuals or entities remain in full
+ compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+ survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+ perpetual (for the duration of the applicable copyright in the Work).
+ Notwithstanding the above, Licensor reserves the right to release the
+ Work under different license terms or to stop distributing the Work at
+ any time; provided, however that any such election will not serve to
+ withdraw this License (or any other license that has been, or is
+ required to be, granted under the terms of this License), and this
+ License will continue in full force and effect unless terminated as
+ stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+ the Licensor offers to the recipient a license to the Work on the same
+ terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+ offers to the recipient a license to the original Work on the same
+ terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of
+ the remainder of the terms of this License, and without further action
+ by the parties to this agreement, such provision shall be reformed to
+ the minimum extent necessary to make such provision valid and
+ enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in writing
+ and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+ respect to the Work licensed here. There are no understandings,
+ agreements or representations with respect to the Work not specified
+ here. Licensor shall not be bound by any additional provisions that
+ may appear in any communication from You. This License may not be
+ modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+ License were drafted utilizing the terminology of the Berne Convention
+ for the Protection of Literary and Artistic Works (as amended on
+ September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+ Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+ and the Universal Copyright Convention (as revised on July 24, 1971).
+ These rights and subject matter take effect in the relevant
+ jurisdiction in which the License terms are sought to be enforced
+ according to the corresponding provisions of the implementation of
+ those treaty provisions in the applicable national law. If the
+ standard suite of rights granted under applicable copyright law
+ includes additional rights not granted under this License, such
+ additional rights are deemed to be included in the License; this
+ License is not intended to restrict the license of any rights under
+ applicable law.
+
+
+Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, Creative Commons does not authorize
+ the use by either party of the trademark "Creative Commons" or any
+ related trademark or logo of Creative Commons without the prior
+ written consent of Creative Commons. Any permitted use will be in
+ compliance with Creative Commons' then-current trademark usage
+ guidelines, as may be published on its website or otherwise made
+ available upon request from time to time. For the avoidance of doubt,
+ this trademark restriction does not form part of the License.
+
+ Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/moretrees/README.md b/moretrees/README.md
new file mode 100644
index 0000000..905cefa
--- /dev/null
+++ b/moretrees/README.md
@@ -0,0 +1,11 @@
+More trees!
+
+This mod adds a whole bunch of new types of trees to the game
+
+Much of the code here came from cisoun's conifers mod and bas080's
+jungle trees mod, and big contributions by RealBadAngel.
+
+Brought together into one mod and made L-systems compatible by Vanessa
+Ezekowitz.
+
+Dependencies: <a href="https://forum.minetest.net/viewtopic.php?f=11&t=12999">biome_lib</a> and default
diff --git a/moretrees/biome_defs.lua b/moretrees/biome_defs.lua
new file mode 100644
index 0000000..34d8e4e
--- /dev/null
+++ b/moretrees/biome_defs.lua
@@ -0,0 +1,188 @@
+
+moretrees.beech_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 8,
+ seed_diff = 2,
+ rarity = 50,
+ max_count = 20,
+}
+
+moretrees.palm_biome = {
+ surface = "default:sand",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 5,
+ seed_diff = 330,
+ min_elevation = -1,
+ max_elevation = 1,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 15,
+ near_nodes_count = 10,
+ temp_min = 0.25,
+ temp_max = -0.15,
+ rarity = 50,
+ max_count = 10,
+}
+
+moretrees.apple_tree_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 331,
+ min_elevation = 1,
+ max_elevation = 10,
+ temp_min = 0.1,
+ temp_max = -0.15,
+ rarity = 75,
+ max_count = 5,
+}
+
+moretrees.oak_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 15,
+ seed_diff = 332,
+ min_elevation = 0,
+ max_elevation = 10,
+ temp_min = 0.4,
+ temp_max = 0.2,
+ rarity = 50,
+ max_count = 5,
+}
+
+moretrees.sequoia_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 333,
+ min_elevation = 0,
+ max_elevation = 10,
+ temp_min = 1,
+ temp_max = -0.4,
+ rarity = 90,
+ max_count = 5,
+}
+
+moretrees.birch_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 5,
+ seed_diff = 334,
+ min_elevation = 10,
+ max_elevation = 15,
+ temp_min = 0.9,
+ temp_max = 0.3,
+ rarity = 50,
+ max_count = 10,
+}
+
+moretrees.willow_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 337,
+ min_elevation = -5,
+ max_elevation = 5,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 15,
+ near_nodes_count = 5,
+ rarity = 75,
+ max_count = 5,
+}
+
+moretrees.acacia_biome = {
+ surface = { "default:dirt_with_grass", "default:dirt_with_dry_grass", "default:desert_sand" },
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 15,
+ seed_diff = 1,
+ rarity = 50,
+ max_count = 15,
+ plantlife_limit = -1,
+ humidity_min = 0.3,
+ humidity_max = 0,
+}
+
+moretrees.rubber_tree_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 338,
+ min_elevation = -5,
+ max_elevation = 5,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 15,
+ near_nodes_count = 10,
+ temp_min = -0.15,
+ rarity = 75,
+ max_count = 10,
+}
+
+moretrees.jungletree_biome = {
+ surface = {
+ "default:dirt",
+ "default:dirt_with_grass",
+ "woodsoils:dirt_with_leaves_1",
+ "woodsoils:grass_with_leaves_1",
+ "woodsoils:grass_with_leaves_2"
+ },
+ avoid_nodes = {"moretrees:jungletree_trunk"},
+ max_count = 12,
+ avoid_radius = 3,
+ rarity = 85,
+ seed_diff = 329,
+ min_elevation = 1,
+ near_nodes = {"default:jungletree"},
+ near_nodes_size = 6,
+ near_nodes_vertical = 2,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+}
+
+moretrees.spruce_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 335,
+ min_elevation = 20,
+ temp_min = 0.9,
+ temp_max = 0.7,
+ rarity = 50,
+ max_count = 5,
+}
+
+moretrees.pine_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 336,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 15,
+ near_nodes_count = 5,
+ rarity = 50,
+ max_count = 10,
+}
+
+moretrees.fir_biome = {
+ surface = "default:dirt_with_grass",
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 359,
+ min_elevation = 25,
+ temp_min = 0.9,
+ temp_max = 0.3,
+ rarity = 50,
+ max_count = 10,
+}
+
+moretrees.fir_biome_snow = {
+ surface = {"snow:dirt_with_snow", "snow:snow"},
+ below_nodes = {"default:dirt", "default:dirt_with_grass", "snow:dirt_with_snow"},
+ avoid_nodes = moretrees.avoidnodes,
+ avoid_radius = 10,
+ seed_diff = 359,
+ rarity = 50,
+ max_count = 10,
+ check_air = false,
+ delete_above = true,
+ spawn_replace_node = true
+}
diff --git a/moretrees/crafts.lua b/moretrees/crafts.lua
new file mode 100644
index 0000000..515a097
--- /dev/null
+++ b/moretrees/crafts.lua
@@ -0,0 +1,151 @@
+local S = moretrees.intllib
+
+for i in ipairs(moretrees.treelist) do
+ local treename = moretrees.treelist[i][1]
+
+ minetest.register_craft({
+ output = "moretrees:"..treename.."_trunk 2",
+ recipe = {
+ {"moretrees:"..treename.."_trunk_sideways"},
+ {"moretrees:"..treename.."_trunk_sideways"}
+ }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "moretrees:"..treename.."_planks 4",
+ recipe = {
+ "moretrees:"..treename.."_trunk"
+ }
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "moretrees:"..treename.."_planks 4",
+ recipe = {
+ "moretrees:"..treename.."_trunk_sideways"
+ }
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "moretrees:"..treename.."_sapling",
+ burntime = 10,
+ })
+end
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "moretrees:rubber_tree_planks 4",
+ recipe = {
+ "moretrees:rubber_tree_trunk_empty"
+ }
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "group:moretrees_leaves",
+ burntime = 1,
+})
+
+-- Food recipes!
+
+minetest.register_craftitem("moretrees:coconut_milk", {
+ description = S("Coconut Milk"),
+ inventory_image = "moretrees_coconut_milk_inv.png",
+ wield_image = "moretrees_coconut_milk.png",
+ on_use = minetest.item_eat(2),
+})
+
+minetest.register_craftitem("moretrees:raw_coconut", {
+ description = S("Raw Coconut"),
+ inventory_image = "moretrees_raw_coconut.png",
+ on_use = minetest.item_eat(4),
+})
+
+minetest.register_craftitem("moretrees:acorn_muffin_batter", {
+ description = S("Acorn Muffin batter"),
+ inventory_image = "moretrees_acorn_muffin_batter.png",
+})
+
+minetest.register_craftitem("moretrees:acorn_muffin", {
+ description = S("Acorn Muffin"),
+ inventory_image = "moretrees_acorn_muffin.png",
+ on_use = minetest.item_eat(4),
+})
+
+minetest.register_craftitem("moretrees:spruce_nuts", {
+ description = S("Roasted Spruce Cone Nuts"),
+ inventory_image = "moretrees_spruce_nuts.png",
+ on_use = minetest.item_eat(1),
+})
+
+minetest.register_craftitem("moretrees:pine_nuts", {
+ description = S("Roasted Pine Cone Nuts"),
+ inventory_image = "moretrees_pine_nuts.png",
+ on_use = minetest.item_eat(1),
+})
+
+minetest.register_craftitem("moretrees:fir_nuts", {
+ description = S("Roasted Fir Cone Nuts"),
+ inventory_image = "moretrees_fir_nuts.png",
+ on_use = minetest.item_eat(1),
+})
+
+for i in ipairs(moretrees.cutting_tools) do
+ local tool = moretrees.cutting_tools[i]
+ minetest.register_craft({
+ type = "shapeless",
+ output = "moretrees:coconut_milk",
+ recipe = {
+ "moretrees:coconut",
+ "vessels:drinking_glass",
+ tool
+ },
+ replacements = {
+ { "moretrees:coconut", "moretrees:raw_coconut" },
+ { tool, tool }
+ }
+ })
+end
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "moretrees:acorn_muffin_batter",
+ recipe = {
+ "moretrees:acorn",
+ "moretrees:acorn",
+ "moretrees:acorn",
+ "moretrees:acorn",
+ "moretrees:coconut_milk",
+ },
+ replacements = {
+ { "moretrees:coconut_milk", "vessels:drinking_glass" }
+ }
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "moretrees:acorn_muffin 4",
+ recipe = "moretrees:acorn_muffin_batter",
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "moretrees:spruce_nuts 4",
+ recipe = "moretrees:spruce_cone",
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "moretrees:pine_nuts 4",
+ recipe = "moretrees:pine_cone",
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "moretrees:fir_nuts 4",
+ recipe = "moretrees:fir_cone",
+})
+
+
diff --git a/moretrees/default_settings.txt b/moretrees/default_settings.txt
new file mode 100644
index 0000000..a34ea23
--- /dev/null
+++ b/moretrees/default_settings.txt
@@ -0,0 +1,68 @@
+-- Global configuration variables
+
+-- Enable the various kinds of trees.
+
+moretrees.enable_apple_tree = true
+moretrees.enable_oak = true
+moretrees.enable_sequoia = true
+moretrees.enable_palm = true
+moretrees.enable_pine = true
+moretrees.enable_rubber_tree = true
+moretrees.enable_willow = true
+moretrees.enable_acacia = true
+moretrees.enable_birch = true
+moretrees.enable_spruce = true
+moretrees.enable_jungle_tree = true
+moretrees.enable_fir = true
+moretrees.enable_beech = false
+
+-- set this to true to make moretrees spawn saplings at mapgen time instead
+-- of fully-grown trees, which will grow into full trees after a very short
+-- delay. This reduces mapgen lag in some situations.
+
+moretrees.spawn_saplings = false
+
+-- Set this to true to allow defining stairs/slabs/etc. If Moreblocks is
+-- installed, this will use that mod's Stairs Plus component. Otherwise, it
+-- will use the default stairs mod in minetest_game, if present
+
+moretrees.enable_stairs = true
+
+-- Set this to true if you want the plantlike drawtype for leaves, which
+-- improves some peoples' framerates without resorting to making leaf nodes opaque.
+-- Affects default leaves and default jungle leaves also.
+
+moretrees.plantlike_leaves = false
+
+-- Enable this if you want moretrees to redefine default apples so that they
+-- fall when leaves decay/are dug.
+
+moretrees.enable_redefine_apple = true
+
+-- Set this to true to enable leaf decay of all trees except the default ones.
+
+moretrees.enable_leafdecay = true
+
+-- various related settings to configure leaf decay.
+
+moretrees.leafdecay_delay = 2
+moretrees.leafdecay_chance = 5
+moretrees.leafdecay_radius = 5
+moretrees.palm_leafdecay_radius = 10
+
+-- Change these settings if you want default trees to be gradually cut down
+-- above the elevation where firs normally generate.
+
+moretrees.firs_remove_default_trees = false
+moretrees.firs_remove_interval = 2
+moretrees.firs_remove_chance = 150
+
+-- Sapling settings
+
+moretrees.sapling_interval = 500
+moretrees.sapling_chance = 20
+
+-- If this variable is set to true, drop leaves out as entities during leaf
+-- decay, rather than just disappearing them.
+
+moretrees.decay_leaves_as_items = false
diff --git a/moretrees/depends.txt b/moretrees/depends.txt
new file mode 100644
index 0000000..c666762
--- /dev/null
+++ b/moretrees/depends.txt
@@ -0,0 +1,6 @@
+default
+biome_lib
+stairs?
+moreblocks?
+intllib?
+
diff --git a/moretrees/init.lua b/moretrees/init.lua
new file mode 100644
index 0000000..d2c5128
--- /dev/null
+++ b/moretrees/init.lua
@@ -0,0 +1,299 @@
+-- More trees! 2013-04-07
+--
+-- This mod adds more types of trees to the game
+--
+-- Some of the node definitions and textures came from cisoun's conifers mod
+-- and bas080's jungle trees mod.
+--
+-- Brought together into one mod and made L-systems compatible by Vanessa
+-- Ezekowitz.
+--
+-- Firs and Jungle tree axioms/rules by Vanessa Ezekowitz, with the
+-- latter having been tweaked by RealBadAngel, most other axioms/rules written
+-- by RealBadAngel.
+--
+-- License: WTFPL for all parts (code and textures, including those copied
+-- from the the old jungletree and conifers mods).
+
+moretrees = {}
+
+-- Read the default config file (and if necessary, copy it to the world folder).
+
+local worldpath=minetest.get_worldpath()
+local modpath=minetest.get_modpath("moretrees")
+
+dofile(modpath.."/default_settings.txt")
+
+if io.open(worldpath.."/moretrees_settings.txt","r") then
+ io.close()
+ dofile(worldpath.."/moretrees_settings.txt")
+end
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+moretrees.intllib = S
+
+-- clone node
+
+function moretrees.clone_node(name)
+ local node2 = {}
+ local node = minetest.registered_nodes[name]
+ for k,v in pairs(node) do
+ node2[k]=v
+ end
+ return node2
+end
+
+-- infinite stacks checking
+
+if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
+ moretrees.expect_infinite_stacks = false
+else
+ moretrees.expect_infinite_stacks = true
+end
+
+-- tables, load other files
+
+moretrees.cutting_tools = {
+ "default:axe_bronze",
+ "default:axe_diamond",
+ "default:axe_mese",
+ "default:axe_steel",
+ "glooptest:axe_alatro",
+ "glooptest:axe_arol",
+ "moreores:axe_mithril",
+ "moreores:axe_silver",
+ "titanium:axe",
+}
+
+dofile(modpath.."/tree_models.lua")
+dofile(modpath.."/node_defs.lua")
+dofile(modpath.."/biome_defs.lua")
+dofile(modpath.."/saplings.lua")
+dofile(modpath.."/crafts.lua")
+
+-- tree spawning setup
+
+if moretrees.spawn_saplings then
+ moretrees.spawn_beech_object = "moretrees:beech_sapling_ongen"
+ moretrees.spawn_apple_tree_object = "moretrees:apple_tree_sapling_ongen"
+ moretrees.spawn_oak_object = "moretrees:oak_sapling_ongen"
+ moretrees.spawn_sequoia_object = "moretrees:sequoia_sapling_ongen"
+ moretrees.spawn_palm_object = "moretrees:palm_sapling_ongen"
+ moretrees.spawn_pine_object = "moretrees:pine_sapling_ongen"
+ moretrees.spawn_rubber_tree_object = "moretrees:rubber_tree_sapling_ongen"
+ moretrees.spawn_willow_object = "moretrees:willow_sapling_ongen"
+ moretrees.spawn_acacia_object = "moretrees:acacia_sapling_ongen"
+ moretrees.spawn_birch_object = "moretrees:birch_sapling_ongen"
+ moretrees.spawn_spruce_object = "moretrees:spruce_sapling_ongen"
+ moretrees.spawn_jungletree_object = "moretrees:jungletree_sapling_ongen"
+ moretrees.spawn_fir_object = "moretrees:fir_sapling_ongen"
+ moretrees.spawn_fir_snow_object = "snow:sapling_pine"
+else
+ moretrees.spawn_beech_object = moretrees.beech_model
+ moretrees.spawn_apple_tree_object = moretrees.apple_tree_model
+ moretrees.spawn_oak_object = moretrees.oak_model
+ moretrees.spawn_sequoia_object = moretrees.sequoia_model
+ moretrees.spawn_palm_object = moretrees.palm_model
+ moretrees.spawn_pine_object = moretrees.pine_model
+ moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model
+ moretrees.spawn_willow_object = moretrees.willow_model
+ moretrees.spawn_acacia_object = moretrees.acacia_model
+ moretrees.spawn_birch_object = "moretrees.grow_birch"
+ moretrees.spawn_spruce_object = "moretrees.grow_spruce"
+ moretrees.spawn_jungletree_object = "moretrees.grow_jungletree"
+ moretrees.spawn_fir_object = "moretrees.grow_fir"
+ moretrees.spawn_fir_snow_object = "moretrees.grow_fir_snow"
+end
+
+if moretrees.enable_beech then
+ biome_lib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object)
+end
+
+if moretrees.enable_apple_tree then
+ biome_lib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object)
+end
+
+if moretrees.enable_oak then
+ biome_lib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object)
+end
+
+if moretrees.enable_sequoia then
+ biome_lib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object)
+end
+
+if moretrees.enable_palm then
+ biome_lib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object)
+end
+
+if moretrees.enable_pine then
+ biome_lib:register_generate_plant(moretrees.pine_biome, moretrees.spawn_pine_object)
+end
+
+if moretrees.enable_rubber_tree then
+ biome_lib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object)
+end
+
+if moretrees.enable_willow then
+ biome_lib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object)
+end
+
+if moretrees.enable_acacia then
+ biome_lib:register_generate_plant(moretrees.acacia_biome, moretrees.spawn_acacia_object)
+end
+
+if moretrees.enable_birch then
+ biome_lib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object)
+end
+
+if moretrees.enable_spruce then
+ biome_lib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object)
+end
+
+if moretrees.enable_jungle_tree then
+ biome_lib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object)
+end
+
+if moretrees.enable_fir then
+ biome_lib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object)
+ if minetest.get_modpath("snow") then
+ biome_lib:register_generate_plant(moretrees.fir_biome_snow, moretrees.spawn_fir_snow_object)
+ end
+end
+
+-- Code to spawn a birch tree
+
+function moretrees.grow_birch(pos)
+ minetest.remove_node(pos)
+ if math.random(1,2) == 1 then
+ minetest.spawn_tree(pos, moretrees.birch_model1)
+ else
+ minetest.spawn_tree(pos, moretrees.birch_model2)
+ end
+end
+
+-- Code to spawn a spruce tree
+
+function moretrees.grow_spruce(pos)
+ minetest.remove_node(pos)
+ if math.random(1,2) == 1 then
+ minetest.spawn_tree(pos, moretrees.spruce_model1)
+ else
+ minetest.spawn_tree(pos, moretrees.spruce_model2)
+ end
+end
+
+-- Code to spawn jungle trees
+
+moretrees.jt_axiom1 = "FFFA"
+moretrees.jt_rules_a1 = "FFF[&&-FBf[&&&Ff]^^^Ff][&&+FBFf[&&&FFf]^^^Ff][&&---FBFf[&&&Ff]^^^Ff][&&+++FBFf[&&&Ff]^^^Ff]F/A"
+moretrees.jt_rules_b1 = "[-Ff&f][+Ff&f]B"
+
+moretrees.jt_axiom2 = "FFFFFA"
+moretrees.jt_rules_a2 = "FFFFF[&&-FFFBF[&&&FFff]^^^FFf][&&+FFFBFF[&&&FFff]^^^FFf][&&---FFFBFF[&&&FFff]^^^FFf][&&+++FFFBFF[&&&FFff]^^^FFf]FF/A"
+moretrees.jt_rules_b2 = "[-FFf&ff][+FFf&ff]B"
+
+moretrees.ct_rules_a1 = "FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A"
+moretrees.ct_rules_b1 = "[-FBf][+FBf]"
+
+moretrees.ct_rules_a2 = "FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A"
+moretrees.ct_rules_b2 = "[-fB][+fB]"
+
+function moretrees.grow_jungletree(pos)
+ local r1 = math.random(2)
+ local r2 = math.random(3)
+ if r1 == 1 then
+ moretrees.jungletree_model.leaves2 = "moretrees:jungletree_leaves_red"
+ else
+ moretrees.jungletree_model.leaves2 = "moretrees:jungletree_leaves_yellow"
+ end
+ moretrees.jungletree_model.leaves2_chance = math.random(25, 75)
+
+ if r2 == 1 then
+ moretrees.jungletree_model.trunk_type = "single"
+ moretrees.jungletree_model.iterations = 2
+ moretrees.jungletree_model.axiom = moretrees.jt_axiom1
+ moretrees.jungletree_model.rules_a = moretrees.jt_rules_a1
+ moretrees.jungletree_model.rules_b = moretrees.jt_rules_b1
+ elseif r2 == 2 then
+ moretrees.jungletree_model.trunk_type = "double"
+ moretrees.jungletree_model.iterations = 4
+ moretrees.jungletree_model.axiom = moretrees.jt_axiom2
+ moretrees.jungletree_model.rules_a = moretrees.jt_rules_a2
+ moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2
+ elseif r2 == 3 then
+ moretrees.jungletree_model.trunk_type = "crossed"
+ moretrees.jungletree_model.iterations = 4
+ moretrees.jungletree_model.axiom = moretrees.jt_axiom2
+ moretrees.jungletree_model.rules_a = moretrees.jt_rules_a2
+ moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2
+ end
+
+ minetest.remove_node(pos)
+ local leaves = minetest.find_nodes_in_area({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y+10, z = pos.z+1}, "default:leaves")
+ for leaf in ipairs(leaves) do
+ minetest.remove_node(leaves[leaf])
+ end
+ minetest.spawn_tree(pos, moretrees.jungletree_model)
+end
+
+-- code to spawn fir trees
+
+function moretrees.grow_fir(pos)
+ if math.random(2) == 1 then
+ moretrees.fir_model.leaves="moretrees:fir_leaves"
+ else
+ moretrees.fir_model.leaves="moretrees:fir_leaves_bright"
+ end
+ if math.random(2) == 1 then
+ moretrees.fir_model.rules_a = moretrees.ct_rules_a1
+ moretrees.fir_model.rules_b = moretrees.ct_rules_b1
+ else
+ moretrees.fir_model.rules_a = moretrees.ct_rules_a2
+ moretrees.fir_model.rules_b = moretrees.ct_rules_b2
+ end
+
+ moretrees.fir_model.iterations = 7
+ moretrees.fir_model.random_level = 5
+
+ minetest.remove_node(pos)
+ local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves")
+ for leaf in ipairs(leaves) do
+ minetest.remove_node(leaves[leaf])
+ end
+ minetest.spawn_tree(pos,moretrees.fir_model)
+end
+
+-- same thing, but a smaller version that grows only in snow biomes
+
+function moretrees.grow_fir_snow(pos)
+ if math.random(2) == 1 then
+ moretrees.fir_model.leaves="moretrees:fir_leaves"
+ else
+ moretrees.fir_model.leaves="moretrees:fir_leaves_bright"
+ end
+ if math.random(2) == 1 then
+ moretrees.fir_model.rules_a = moretrees.ct_rules_a1
+ moretrees.fir_model.rules_b = moretrees.ct_rules_b1
+ else
+ moretrees.fir_model.rules_a = moretrees.ct_rules_a2
+ moretrees.fir_model.rules_b = moretrees.ct_rules_b2
+ end
+
+ moretrees.fir_model.iterations = 2
+ moretrees.fir_model.random_level = 2
+
+ minetest.remove_node(pos)
+ local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves")
+ for leaf in ipairs(leaves) do
+ minetest.remove_node(leaves[leaf])
+ end
+ minetest.spawn_tree(pos,moretrees.fir_model)
+end
+
+print(S("[Moretrees] Loaded (2013-02-11)"))
diff --git a/moretrees/locale/de.txt b/moretrees/locale/de.txt
new file mode 100644
index 0000000..cab8d6f
--- /dev/null
+++ b/moretrees/locale/de.txt
@@ -0,0 +1,73 @@
+# Translation by Xanthin
+
+### crafts.lua ###
+Coconut Milk = Kokosnussmilch
+Raw Coconut = Kokosnussfleisch
+Acorn Muffin batter = Eichelmuffinteig
+Acorn Muffin = Eichelmuffin
+Roasted Spruce Cone Nuts = Geroestete Fichtenzapfen
+Roasted Pine Cone Nuts = Geroestete Kiefernzapfen
+Roasted Fir Cone Nuts = Geroestete Tannenzapfen
+
+### node_defs.lua ###
+Beech Tree Trunk = Buchenstamm
+Apple Tree Trunk = Apfelbaumstamm
+Oak Tree Trunk = Eichenstamm
+Giant Sequoia Trunk = Riesenmammutbaumstamm
+Birch Tree Trunk = Birkenstamm
+Palm Tree Trunk = Palmenstamm
+Spruce Tree Trunk = Fichtenstamm
+Pine Tree Trunk = Kiefernstamm
+Willow Tree Trunk = Weidenstamm
+Rubber Tree Trunk = Gummibaumstamm
+Jungle Tree Trunk = Tropenbaumstamm
+Douglas Fir Trunk = Douglasienstamm
+Beech Tree Planks = Buchebretter
+Apple Tree Planks = Apfelbaumbretter
+Oak Tree Planks = Eichenbretter
+Giant Sequoia Planks = Riesenmammutbaumbretter
+Birch Tree Planks = Birkebretter
+Palm Tree Planks = Palmenbretter
+Spruce Tree Planks = Fichtenbretter
+Pine Tree Planks = Kiefernbretter
+Willow Tree Planks = Weidenbretter
+Rubber Tree Planks = Gummibaumbretter
+Jungle Tree Planks = Tropenholzbretter
+Douglas Fir Planks = Douglasienbretter
+Beech Tree Sapling = Buchesetzling
+Apple Tree Sapling = Apfelbaumsetzling
+Oak Tree Sapling = Eichensetzling
+Giant Sequoia Sapling = Riesenmammutbaumsetzling
+Birch Tree Sapling = Birkensetzling
+Palm Tree Sapling = Palmensetzling
+Spruce Tree Sapling = Fichtensetzling
+Pine Tree Sapling = Kiefernsetzling
+Willow Tree Sapling = Weidensetzling
+Rubber Tree Sapling = Gummibaumsetzling
+Jungle Tree Sapling = Tropenbaumsetzling
+Douglas Fir Sapling = Douglasiensetzling
+Beech Tree Leaves = Buchenlaub
+Apple Tree Leaves = Apfelbaumlaub
+Oak Tree Leaves = Eichenlaub
+Giant Sequoia Leaves = Riesenmammutbaumlaub
+Birch Tree Leaves = Birkenlaub
+Palm Tree Leaves = Palmenlaub
+Spruce Tree Leaves = Fichtennadeln
+Pine Tree Leaves = Kiefernnadeln
+Willow Tree Leaves = Weidenlaub
+Rubber Tree Leaves = Gummibaumlaub
+Jungle Tree Leaves = Tropenbaumlaub
+Douglas Fir Leaves = Douglasiennadeln
+
+Acorn = Eichel
+Coconut = Kokosnuss
+Spruce Cone = Fichtenzapfen
+Pine Cone = Kiefernzapfen
+Fir Cone = Tannenzapfen
+Jungle Sapling = Tropenbaumsetzling
+Jungle Tree Leaves (Yellow) = Tropenbaumlaub (gelb)
+Jungle Tree Leaves (Red) = Tropenbaumlaub (rot)
+Douglas Fir Leaves (Bright) = Douglasiennadeln (breit)
+Rubber Tree Trunk (Empty) = Gummibaumstamm (leer)
+
+[Moretrees] Loaded (2013-02-11) = [Moretrees] geladen (2013-02-11)
diff --git a/moretrees/locale/template.txt b/moretrees/locale/template.txt
new file mode 100644
index 0000000..8c167f5
--- /dev/null
+++ b/moretrees/locale/template.txt
@@ -0,0 +1,73 @@
+# Template
+
+### crafts.lua ###
+Coconut Milk =
+Raw Coconut =
+Acorn Muffin batter =
+Acorn Muffin =
+Roasted Spruce Cone Nuts =
+Roasted Pine Cone Nuts =
+Roasted Fir Cone Nuts =
+
+### node_defs.lua ###
+Beech Tree Trunk =
+Apple Tree Trunk =
+Oak Tree Trunk =
+Giant Sequoia Trunk =
+Birch Tree Trunk =
+Palm Tree Trunk =
+Spruce Tree Trunk =
+Pine Tree Trunk =
+Willow Tree Trunk =
+Rubber Tree Trunk =
+Jungle Tree Trunk =
+Douglas Fir Trunk =
+Beech Tree Planks =
+Apple Tree Planks =
+Oak Tree Planks =
+Giant Sequoia Planks =
+Birch Tree Planks =
+Palm Tree Planks =
+Spruce Tree Planks =
+Pine Tree Planks =
+Willow Tree Planks =
+Rubber Tree Planks =
+Jungle Tree Planks =
+Douglas Fir Planks =
+Beech Tree Sapling =
+Apple Tree Sapling =
+Oak Tree Sapling =
+Giant Sequoia Sapling =
+Birch Tree Sapling =
+Palm Tree Sapling =
+Spruce Tree Sapling =
+Pine Tree Sapling =
+Willow Tree Sapling =
+Rubber Tree Sapling =
+Jungle Tree Sapling =
+Douglas Fir Sapling =
+Beech Tree Leaves =
+Apple Tree Leaves =
+Oak Tree Leaves =
+Giant Sequoia Leaves =
+Birch Tree Leaves =
+Palm Tree Leaves =
+Spruce Tree Leaves =
+Pine Tree Leaves =
+Willow Tree Leaves =
+Rubber Tree Leaves =
+Jungle Tree Leaves =
+Douglas Fir Leaves =
+
+Acorn =
+Coconut =
+Spruce Cone =
+Pine Cone =
+Fir Cone =
+Jungle Sapling =
+Jungle Tree Leaves (Yellow) =
+Jungle Tree Leaves (Red) =
+Douglas Fir Leaves (Bright) =
+Rubber Tree Trunk (Empty) =
+
+[Moretrees] Loaded (2013-02-11) =
diff --git a/moretrees/node_defs.lua b/moretrees/node_defs.lua
new file mode 100644
index 0000000..8328bef
--- /dev/null
+++ b/moretrees/node_defs.lua
@@ -0,0 +1,430 @@
+local S = moretrees.intllib
+
+moretrees.avoidnodes = {}
+
+moretrees.treelist = {
+ {"beech", "Beech Tree"},
+ {"apple_tree", "Apple Tree"},
+ {"oak", "Oak Tree", "acorn", "Acorn", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
+ {"sequoia", "Giant Sequoia"},
+ {"birch", "Birch Tree"},
+ {"palm", "Palm Tree", "coconut", "Coconut", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 },
+ {"spruce", "Spruce Tree", "spruce_cone", "Spruce Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
+ {"willow", "Willow Tree"},
+ {"rubber_tree", "Rubber Tree"},
+ {"fir", "Douglas Fir", "fir_cone", "Fir Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
+
+ {"jungletree", "Jungle Tree", nil, nil, nil, nil, "default_junglesapling.png" },
+ {"pine", "Pine Tree", "pine_cone", "Pine Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8, "default_pine_sapling.png" },
+ {"acacia", "Acacia Tree", nil, nil, nil, nil, "default_acacia_sapling.png" },
+}
+
+local dirs1 = { 21, 20, 23, 22, 21 }
+local dirs2 = { 12, 9, 18, 7, 12 }
+local dirs3 = { 14, 11, 16, 5, 14 }
+
+local moretrees_new_leaves_drawtype = "allfaces_optional"
+local moretrees_plantlike_leaves_visual_scale = 1
+
+if moretrees.plantlike_leaves then
+ moretrees_new_leaves_drawtype = "plantlike"
+ moretrees_plantlike_leaves_visual_scale = 1.189
+end
+
+-- redefine default leaves to handle plantlike and/or leaf decay options
+
+if moretrees.plantlike_leaves then
+ minetest.override_item("default:leaves", {
+ inventory_image = minetest.inventorycube("default_leaves.png"),
+ drawtype = "plantlike",
+ visual_scale = 1.189
+ })
+else
+ minetest.override_item("default:leaves", {
+ waving = 1
+ })
+end
+
+-- redefine default jungle leaves for same
+
+if moretrees.plantlike_leaves then
+ minetest.override_item("default:jungleleaves", {
+ inventory_image = minetest.inventorycube("default_jungleleaves.png"),
+ drawtype = "plantlike",
+ visual_scale = 1.189
+ })
+else
+ minetest.override_item("default:jungleleaves", {
+ waving = 1
+ })
+end
+
+for i in ipairs(moretrees.treelist) do
+ local treename = moretrees.treelist[i][1]
+ local treedesc = moretrees.treelist[i][2]
+ local fruit = moretrees.treelist[i][3]
+ local fruitdesc = moretrees.treelist[i][4]
+ local selbox = moretrees.treelist[i][5]
+ local vscale = moretrees.treelist[i][6]
+
+ local saptex = moretrees.treelist[i][7]
+
+ if treename ~= "jungletree" -- the default game provides jungle tree, acacia, and pine trunk/planks nodes.
+ and treename ~= "acacia"
+ and treename ~= "pine" then
+
+ saptex = "moretrees_"..treename.."_sapling.png"
+
+ minetest.register_node("moretrees:"..treename.."_trunk", {
+ description = S(treedesc.." Trunk"),
+ tiles = {
+ "moretrees_"..treename.."_trunk_top.png",
+ "moretrees_"..treename.."_trunk_top.png",
+ "moretrees_"..treename.."_trunk.png"
+ },
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+ on_place = minetest.rotate_node,
+ })
+
+ minetest.register_node("moretrees:"..treename.."_planks", {
+ description = S(treedesc.." Planks"),
+ tiles = {"moretrees_"..treename.."_wood.png"},
+ is_ground_content = true,
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+ })
+
+ minetest.register_node("moretrees:"..treename.."_sapling", {
+ description = S(treedesc.." Sapling"),
+ drawtype = "plantlike",
+ tiles = {saptex},
+ inventory_image = saptex,
+ paramtype = "light",
+ paramtype2 = "waving",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
+ },
+ groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
+ sounds = default.node_sound_defaults(),
+ })
+
+ -- player will get a sapling with 1/100 chance
+ -- player will get leaves only if he/she gets no saplings,
+ -- this is because max_items is 1
+
+ local droprarity = 100
+ local decay = moretrees.leafdecay_radius
+
+ if treename == "palm" then
+ droprarity = 20
+ decay = moretrees.palm_leafdecay_radius
+ end
+
+ local moretrees_leaves_inventory_image = nil
+ local moretrees_new_leaves_waving = nil
+
+ if moretrees.plantlike_leaves then
+ moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png")
+ else
+ moretrees_new_leaves_waving = 1
+ end
+
+ minetest.register_node("moretrees:"..treename.."_leaves", {
+ description = S(treedesc.." Leaves"),
+ drawtype = moretrees_new_leaves_drawtype,
+ waving = moretrees_new_leaves_waving,
+ visual_scale = moretrees_plantlike_leaves_visual_scale,
+ tiles = { "moretrees_"..treename.."_leaves.png" },
+ inventory_image = moretrees_leaves_inventory_image,
+ paramtype = "light",
+ groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = decay},
+ sounds = default.node_sound_leaves_defaults(),
+
+ drop = {
+ max_items = 1,
+ items = {
+ {items = {"moretrees:"..treename.."_sapling"}, rarity = droprarity },
+ {items = {"moretrees:"..treename.."_leaves"} }
+ }
+ },
+ })
+
+ if moretrees.enable_stairs then
+ if minetest.get_modpath("moreblocks") then
+
+ -- stairsplus:register_all(modname, subname, recipeitem, {fields})
+
+ stairsplus:register_all(
+ "moretrees",
+ treename.."_trunk",
+ "moretrees:"..treename.."_trunk",
+ {
+ groups = { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2, not_in_creative_inventory=1 },
+ tiles = {
+ "moretrees_"..treename.."_trunk_top.png",
+ "moretrees_"..treename.."_trunk_top.png",
+ "moretrees_"..treename.."_trunk.png"
+ },
+ description = S(treedesc.." Trunk"),
+ drop = treename.."_trunk",
+ }
+ )
+
+ stairsplus:register_all(
+ "moretrees",
+ treename.."_planks",
+ "moretrees:"..treename.."_planks",
+ {
+ groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 },
+ tiles = { "moretrees_"..treename.."_wood.png" },
+ description = S(treedesc.." Planks"),
+ drop = treename.."_planks",
+ }
+ )
+ elseif minetest.get_modpath("stairs") then
+ stairs.register_stair_and_slab(
+ "moretrees_"..treename.."_trunk",
+ "moretrees:"..treename.."_trunk",
+ { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2 },
+ { "moretrees_"..treename.."_trunk_top.png",
+ "moretrees_"..treename.."_trunk_top.png",
+ "moretrees_"..treename.."_trunk.png"
+ },
+ S(treedesc.." Trunk Stair"),
+ S(treedesc.." Trunk Slab"),
+ default.node_sound_wood_defaults()
+ )
+
+ stairs.register_stair_and_slab(
+ "moretrees_"..treename.."_planks",
+ "moretrees:"..treename.."_planks",
+ { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 },
+ { "moretrees_"..treename.."_wood.png" },
+ S(treedesc.." Planks Stair"),
+ S(treedesc.." Planks Slab"),
+ default.node_sound_wood_defaults()
+ )
+
+ end
+ end
+ end
+
+ minetest.register_node("moretrees:"..treename.."_sapling_ongen", {
+ description = S(treedesc.." Sapling"),
+ drawtype = "plantlike",
+ tiles = {saptex},
+ inventory_image = saptex,
+ paramtype = "light",
+ paramtype2 = "waving",
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
+ },
+ groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,not_in_creative_inventory=1,sapling=1},
+ sounds = default.node_sound_defaults(),
+ drop = "moretrees:"..treename.."_sapling"
+ })
+
+ if fruit then
+ minetest.register_node("moretrees:"..fruit, {
+ description = S(fruitdesc),
+ drawtype = "plantlike",
+ tiles = { "moretrees_"..fruit..".png" },
+ inventory_image = "moretrees_"..fruit..".png^[transformR180",
+ wield_image = "moretrees_"..fruit..".png^[transformR180",
+ visual_scale = vscale,
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = selbox
+ },
+ groups = {fleshy=3,dig_immediate=3,flammable=2, attached_node=1},
+ sounds = default.node_sound_defaults(),
+ })
+ end
+
+ minetest.register_abm({
+ nodenames = { "moretrees:"..treename.."_trunk_sideways" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2 or 0
+ nfdir = dirs2[fdir+1]
+ minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir})
+ end,
+ })
+
+ table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_trunk")
+
+ if moretrees.spawn_saplings then
+ table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling")
+ table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling_ongen")
+ end
+end
+
+-- Extra nodes for jungle trees:
+
+local jungleleaves = {"yellow","red"}
+local jungleleavesnames = {"Yellow", "Red"}
+for color = 1, #jungleleaves do
+ local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color]
+
+ local moretrees_leaves_inventory_image = nil
+
+ if moretrees.plantlike_leaves then
+ moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_jungletree_leaves_"..jungleleaves[color]..".png")
+ else
+ moretrees_new_leaves_waving = 1
+ end
+
+ minetest.register_node(leave_name, {
+ description = S("Jungle Tree Leaves ("..jungleleavesnames[color]..")"),
+ drawtype = moretrees_new_leaves_drawtype,
+ waving = moretrees_new_leaves_waving,
+ visual_scale = moretrees_plantlike_leaves_visual_scale,
+ tiles = {"moretrees_jungletree_leaves_"..jungleleaves[color]..".png"},
+ inventory_image = moretrees_leaves_inventory_image,
+ paramtype = "light",
+ groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = moretrees.leafdecay_radius },
+ drop = {
+ max_items = 1,
+ items = {
+ {items = {"default:junglesapling"}, rarity = 100 },
+ {items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} }
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ })
+end
+
+-- Extra needles for firs
+
+local moretrees_leaves_inventory_image = nil
+
+if moretrees.plantlike_leaves then
+ moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_fir_leaves_bright.png")
+end
+
+minetest.register_node("moretrees:fir_leaves_bright", {
+ drawtype = moretrees_new_leaves_drawtype,
+ waving = moretrees_new_leaves_waving,
+ visual_scale = moretrees_plantlike_leaves_visual_scale,
+ description = S("Douglas Fir Leaves (Bright)"),
+ tiles = { "moretrees_fir_leaves_bright.png" },
+ inventory_image = moretrees_leaves_inventory_image,
+ paramtype = "light",
+ groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = moretrees.leafdecay_radius },
+ drop = {
+ max_items = 1,
+ items = {
+ {items = {'moretrees:fir_sapling'}, rarity = 100 },
+ {items = {'moretrees:fir_leaves_bright'} }
+ }
+ },
+ sounds = default.node_sound_leaves_defaults()
+})
+
+if moretrees.enable_redefine_apple then
+ local appledef = moretrees.clone_node("default:apple")
+ appledef.groups.attached_node = 1
+ minetest.register_node(":default:apple", appledef)
+end
+
+table.insert(moretrees.avoidnodes, "default:jungletree")
+table.insert(moretrees.avoidnodes, "default:pine_tree")
+table.insert(moretrees.avoidnodes, "default:acacia_tree")
+table.insert(moretrees.avoidnodes, "moretrees:fir_trunk")
+table.insert(moretrees.avoidnodes, "default:tree")
+
+if moretrees.spawn_saplings then
+ table.insert(moretrees.avoidnodes, "snow:sapling_pine")
+ table.insert(moretrees.avoidnodes, "default:junglesapling")
+ table.insert(moretrees.avoidnodes, "default:pine_sapling")
+ table.insert(moretrees.avoidnodes, "default:acacia_sapling")
+end
+
+-- "empty" (tapped) rubber tree nodes
+
+minetest.register_node("moretrees:rubber_tree_trunk_empty", {
+ description = S("Rubber Tree Trunk (Empty)"),
+ tiles = {
+ "moretrees_rubber_tree_trunk_top.png",
+ "moretrees_rubber_tree_trunk_top.png",
+ "moretrees_rubber_tree_trunk_empty.png"
+ },
+ is_ground_content = true,
+ groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+ paramtype2 = "facedir",
+ on_place = minetest.rotate_node,
+})
+
+minetest.register_abm({
+ nodenames = { "moretrees:rubber_tree_trunk_empty_sideways" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2 or 0
+ nfdir = dirs2[fdir+1]
+ minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir})
+ end,
+})
+
+-- To get Moretrees to generate its own jungle trees among the default mapgen
+-- we need our own copy of that node, which moretrees will match against.
+
+local jungle_tree = moretrees.clone_node("default:jungletree")
+minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
+
+-- For compatibility with old nodes, recently-changed nodes, and default nodes
+
+minetest.register_alias("technic:rubber_tree_full", "moretrees:rubber_tree_trunk")
+minetest.register_alias("farming_plus:rubber_tree_full", "moretrees:rubber_tree_trunk")
+minetest.register_alias("farming:rubber_tree_full", "moretrees:rubber_tree_trunk")
+
+minetest.register_alias("technic:rubber_leaves", "moretrees:rubber_tree_leaves")
+minetest.register_alias("farming_plus:rubber_leaves", "moretrees:rubber_tree_leaves")
+minetest.register_alias("farming:rubber_leaves", "moretrees:rubber_tree_leaves")
+
+minetest.register_alias("technic:rubber_tree_sapling", "moretrees:rubber_tree_sapling")
+minetest.register_alias("farming_plus:rubber_sapling", "moretrees:rubber_tree_sapling")
+minetest.register_alias("farming:rubber_sapling", "moretrees:rubber_tree_sapling")
+
+minetest.register_alias("moretrees:conifer_trunk", "moretrees:fir_trunk")
+minetest.register_alias("moretrees:conifer_trunk_sideways", "moretrees:fir_trunk_sideways")
+minetest.register_alias("moretrees:conifer_leaves", "moretrees:fir_leaves")
+minetest.register_alias("moretrees:conifer_leaves_bright", "moretrees:fir_leaves_bright")
+minetest.register_alias("moretrees:conifer_sapling", "moretrees:fir_sapling")
+
+minetest.register_alias("conifers:trunk", "moretrees:fir_trunk")
+minetest.register_alias("conifers:trunk_reversed", "moretrees:fir_trunk_sideways")
+minetest.register_alias("conifers:leaves", "moretrees:fir_leaves")
+minetest.register_alias("conifers:leaves_special", "moretrees:fir_leaves_bright")
+minetest.register_alias("conifers:sapling", "moretrees:fir_sapling")
+
+minetest.register_alias("moretrees:jungletree_sapling", "default:junglesapling")
+minetest.register_alias("moretrees:jungletree_trunk_sideways", "moreblocks:horizontal_jungle_tree")
+minetest.register_alias("moretrees:jungletree_planks", "default:junglewood")
+minetest.register_alias("moretrees:jungletree_leaves_green", "default:jungleleaves")
+
+minetest.register_alias("jungletree:leaves_green", "default:jungleleaves")
+minetest.register_alias("jungletree:leaves_red", "moretrees:jungletree_leaves_red")
+minetest.register_alias("jungletree:leaves_yellow", "moretrees:jungletree_leaves_yellow")
+
+minetest.register_alias("moretrees:acacia_trunk", "default:acacia_tree")
+minetest.register_alias("moretrees:acacia_planks", "default:acacia_wood")
+minetest.register_alias("moretrees:acacia_sapling", "default:acacia_sapling")
+minetest.register_alias("moretrees:acacia_leaves", "default:acacia_leaves")
+
+minetest.register_alias("moretrees:pine_trunk", "default:pine_tree")
+minetest.register_alias("moretrees:pine_planks", "default:pine_wood")
+minetest.register_alias("moretrees:pine_sapling", "default:pine_sapling")
+minetest.register_alias("moretrees:pine_leaves", "default:pine_needles")
diff --git a/moretrees/saplings.lua b/moretrees/saplings.lua
new file mode 100644
index 0000000..8004612
--- /dev/null
+++ b/moretrees/saplings.lua
@@ -0,0 +1,93 @@
+-- sapling growth
+
+for i in ipairs(moretrees.treelist) do
+ local treename = moretrees.treelist[i][1]
+ local tree_model = treename.."_model"
+ local tree_biome = treename.."_biome"
+
+ if treename ~= "birch" and treename ~= "spruce" and treename ~= "fir" and treename ~= "jungletree" then
+
+ biome_lib:dbg(dump(moretrees[tree_biome].surface))
+ biome_lib:grow_plants({
+ grow_delay = moretrees.sapling_interval,
+ grow_chance = moretrees.sapling_chance,
+ grow_plant = "moretrees:"..treename.."_sapling",
+ grow_nodes = moretrees[tree_biome].surface,
+ grow_function = moretrees[tree_model],
+ })
+
+ biome_lib:grow_plants({
+ grow_delay = 2,
+ grow_chance = 30,
+ grow_plant = "moretrees:"..treename.."_sapling_ongen",
+ grow_nodes = moretrees[tree_biome].surface,
+ grow_function = moretrees[tree_model],
+ })
+
+ end
+end
+
+biome_lib:grow_plants({
+ grow_delay = moretrees.sapling_interval,
+ grow_chance = moretrees.sapling_chance,
+ grow_plant = "moretrees:birch_sapling",
+ grow_nodes = moretrees.birch_biome.surface,
+ grow_function = "moretrees.grow_birch"
+})
+
+biome_lib:grow_plants({
+ grow_delay = 2,
+ grow_chance = 30,
+ grow_plant = "moretrees:birch_sapling_ongen",
+ grow_nodes = moretrees.birch_biome.surface,
+ grow_function = "moretrees.grow_birch"
+})
+
+biome_lib:grow_plants({
+ grow_delay = moretrees.sapling_interval,
+ grow_chance = moretrees.sapling_chance,
+ grow_plant = "moretrees:spruce_sapling",
+ grow_nodes = moretrees.spruce_biome.surface,
+ grow_function = "moretrees.grow_spruce"
+})
+
+biome_lib:grow_plants({
+ grow_delay = 2,
+ grow_chance = 30,
+ grow_plant = "moretrees:spruce_sapling_ongen",
+ grow_nodes = moretrees.spruce_biome.surface,
+ grow_function = "moretrees.grow_spruce"
+})
+
+biome_lib:grow_plants({
+ grow_delay = moretrees.sapling_interval,
+ grow_chance = moretrees.sapling_chance,
+ grow_plant = "moretrees:fir_sapling",
+ grow_nodes = moretrees.fir_biome.surface,
+ grow_function = "moretrees.grow_fir"
+})
+
+biome_lib:grow_plants({
+ grow_delay = 2,
+ grow_chance = 30,
+ grow_plant = "moretrees:fir_sapling_ongen",
+ grow_nodes = moretrees.fir_biome.surface,
+ grow_function = "moretrees.grow_fir"
+})
+
+biome_lib:grow_plants({
+ grow_delay = moretrees.sapling_interval,
+ grow_chance = moretrees.sapling_chance,
+ grow_plant = "default:junglesapling",
+ grow_nodes = moretrees.jungletree_biome.surface,
+ grow_function = "moretrees.grow_jungletree"
+})
+
+biome_lib:grow_plants({
+ grow_delay = 2,
+ grow_chance = 30,
+ grow_plant = "moretrees:jungletree_sapling_ongen",
+ grow_nodes = moretrees.jungletree_biome.surface,
+ grow_function = "moretrees.grow_jungletree"
+})
+
diff --git a/moretrees/textures/moretrees_acorn.png b/moretrees/textures/moretrees_acorn.png
new file mode 100644
index 0000000..dc2ef32
--- /dev/null
+++ b/moretrees/textures/moretrees_acorn.png
Binary files differ
diff --git a/moretrees/textures/moretrees_acorn_muffin.png b/moretrees/textures/moretrees_acorn_muffin.png
new file mode 100644
index 0000000..166ca83
--- /dev/null
+++ b/moretrees/textures/moretrees_acorn_muffin.png
Binary files differ
diff --git a/moretrees/textures/moretrees_acorn_muffin_batter.png b/moretrees/textures/moretrees_acorn_muffin_batter.png
new file mode 100644
index 0000000..b22e749
--- /dev/null
+++ b/moretrees/textures/moretrees_acorn_muffin_batter.png
Binary files differ
diff --git a/moretrees/textures/moretrees_apple_tree_leaves.png b/moretrees/textures/moretrees_apple_tree_leaves.png
new file mode 100644
index 0000000..75ec063
--- /dev/null
+++ b/moretrees/textures/moretrees_apple_tree_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_apple_tree_sapling.png b/moretrees/textures/moretrees_apple_tree_sapling.png
new file mode 100644
index 0000000..04f93fd
--- /dev/null
+++ b/moretrees/textures/moretrees_apple_tree_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_apple_tree_trunk.png b/moretrees/textures/moretrees_apple_tree_trunk.png
new file mode 100644
index 0000000..573fd85
--- /dev/null
+++ b/moretrees/textures/moretrees_apple_tree_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_apple_tree_trunk_top.png b/moretrees/textures/moretrees_apple_tree_trunk_top.png
new file mode 100644
index 0000000..d261753
--- /dev/null
+++ b/moretrees/textures/moretrees_apple_tree_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_apple_tree_wood.png b/moretrees/textures/moretrees_apple_tree_wood.png
new file mode 100644
index 0000000..242f3ee
--- /dev/null
+++ b/moretrees/textures/moretrees_apple_tree_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_beech_leaves.png b/moretrees/textures/moretrees_beech_leaves.png
new file mode 100644
index 0000000..8463f53
--- /dev/null
+++ b/moretrees/textures/moretrees_beech_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_beech_sapling.png b/moretrees/textures/moretrees_beech_sapling.png
new file mode 100644
index 0000000..ff42cc4
--- /dev/null
+++ b/moretrees/textures/moretrees_beech_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_beech_trunk.png b/moretrees/textures/moretrees_beech_trunk.png
new file mode 100644
index 0000000..06b4ae9
--- /dev/null
+++ b/moretrees/textures/moretrees_beech_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_beech_trunk_top.png b/moretrees/textures/moretrees_beech_trunk_top.png
new file mode 100644
index 0000000..7285985
--- /dev/null
+++ b/moretrees/textures/moretrees_beech_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_beech_wood.png b/moretrees/textures/moretrees_beech_wood.png
new file mode 100644
index 0000000..d6e3f9d
--- /dev/null
+++ b/moretrees/textures/moretrees_beech_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_birch_leaves.png b/moretrees/textures/moretrees_birch_leaves.png
new file mode 100644
index 0000000..547f133
--- /dev/null
+++ b/moretrees/textures/moretrees_birch_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_birch_sapling.png b/moretrees/textures/moretrees_birch_sapling.png
new file mode 100644
index 0000000..afb03f3
--- /dev/null
+++ b/moretrees/textures/moretrees_birch_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_birch_trunk.png b/moretrees/textures/moretrees_birch_trunk.png
new file mode 100644
index 0000000..2b222f7
--- /dev/null
+++ b/moretrees/textures/moretrees_birch_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_birch_trunk_top.png b/moretrees/textures/moretrees_birch_trunk_top.png
new file mode 100644
index 0000000..6e5b3bb
--- /dev/null
+++ b/moretrees/textures/moretrees_birch_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_birch_wood.png b/moretrees/textures/moretrees_birch_wood.png
new file mode 100644
index 0000000..621f8ee
--- /dev/null
+++ b/moretrees/textures/moretrees_birch_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_coconut.png b/moretrees/textures/moretrees_coconut.png
new file mode 100644
index 0000000..2107b5f
--- /dev/null
+++ b/moretrees/textures/moretrees_coconut.png
Binary files differ
diff --git a/moretrees/textures/moretrees_coconut_milk.png b/moretrees/textures/moretrees_coconut_milk.png
new file mode 100644
index 0000000..9a54ad8
--- /dev/null
+++ b/moretrees/textures/moretrees_coconut_milk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_coconut_milk_inv.png b/moretrees/textures/moretrees_coconut_milk_inv.png
new file mode 100644
index 0000000..f636578
--- /dev/null
+++ b/moretrees/textures/moretrees_coconut_milk_inv.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_cone.png b/moretrees/textures/moretrees_fir_cone.png
new file mode 100644
index 0000000..45eef92
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_cone.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_leaves.png b/moretrees/textures/moretrees_fir_leaves.png
new file mode 100644
index 0000000..6643b87
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_leaves_bright.png b/moretrees/textures/moretrees_fir_leaves_bright.png
new file mode 100644
index 0000000..e3b2e6f
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_leaves_bright.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_nuts.png b/moretrees/textures/moretrees_fir_nuts.png
new file mode 100644
index 0000000..a534149
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_nuts.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_sapling.png b/moretrees/textures/moretrees_fir_sapling.png
new file mode 100644
index 0000000..642123c
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_trunk.png b/moretrees/textures/moretrees_fir_trunk.png
new file mode 100644
index 0000000..cc0c559
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_trunk_top.png b/moretrees/textures/moretrees_fir_trunk_top.png
new file mode 100644
index 0000000..d17decf
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_fir_wood.png b/moretrees/textures/moretrees_fir_wood.png
new file mode 100644
index 0000000..7f49079
--- /dev/null
+++ b/moretrees/textures/moretrees_fir_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_jungletree_leaves_green.png b/moretrees/textures/moretrees_jungletree_leaves_green.png
new file mode 100644
index 0000000..52d4a5a
--- /dev/null
+++ b/moretrees/textures/moretrees_jungletree_leaves_green.png
Binary files differ
diff --git a/moretrees/textures/moretrees_jungletree_leaves_red.png b/moretrees/textures/moretrees_jungletree_leaves_red.png
new file mode 100644
index 0000000..d26593e
--- /dev/null
+++ b/moretrees/textures/moretrees_jungletree_leaves_red.png
Binary files differ
diff --git a/moretrees/textures/moretrees_jungletree_leaves_yellow.png b/moretrees/textures/moretrees_jungletree_leaves_yellow.png
new file mode 100644
index 0000000..d116455
--- /dev/null
+++ b/moretrees/textures/moretrees_jungletree_leaves_yellow.png
Binary files differ
diff --git a/moretrees/textures/moretrees_oak_leaves.png b/moretrees/textures/moretrees_oak_leaves.png
new file mode 100644
index 0000000..aa587c5
--- /dev/null
+++ b/moretrees/textures/moretrees_oak_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_oak_sapling.png b/moretrees/textures/moretrees_oak_sapling.png
new file mode 100644
index 0000000..eef6a72
--- /dev/null
+++ b/moretrees/textures/moretrees_oak_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_oak_trunk.png b/moretrees/textures/moretrees_oak_trunk.png
new file mode 100644
index 0000000..b0ca910
--- /dev/null
+++ b/moretrees/textures/moretrees_oak_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_oak_trunk_top.png b/moretrees/textures/moretrees_oak_trunk_top.png
new file mode 100644
index 0000000..526d302
--- /dev/null
+++ b/moretrees/textures/moretrees_oak_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_oak_wood.png b/moretrees/textures/moretrees_oak_wood.png
new file mode 100644
index 0000000..05d02f9
--- /dev/null
+++ b/moretrees/textures/moretrees_oak_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_palm_leaves.png b/moretrees/textures/moretrees_palm_leaves.png
new file mode 100644
index 0000000..90b0700
--- /dev/null
+++ b/moretrees/textures/moretrees_palm_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_palm_sapling.png b/moretrees/textures/moretrees_palm_sapling.png
new file mode 100644
index 0000000..aaa3415
--- /dev/null
+++ b/moretrees/textures/moretrees_palm_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_palm_trunk.png b/moretrees/textures/moretrees_palm_trunk.png
new file mode 100644
index 0000000..da255bc
--- /dev/null
+++ b/moretrees/textures/moretrees_palm_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_palm_trunk_top.png b/moretrees/textures/moretrees_palm_trunk_top.png
new file mode 100644
index 0000000..fe07ae3
--- /dev/null
+++ b/moretrees/textures/moretrees_palm_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_palm_wood.png b/moretrees/textures/moretrees_palm_wood.png
new file mode 100644
index 0000000..c0c0ed6
--- /dev/null
+++ b/moretrees/textures/moretrees_palm_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_pine_cone.png b/moretrees/textures/moretrees_pine_cone.png
new file mode 100644
index 0000000..5e1fae9
--- /dev/null
+++ b/moretrees/textures/moretrees_pine_cone.png
Binary files differ
diff --git a/moretrees/textures/moretrees_pine_nuts.png b/moretrees/textures/moretrees_pine_nuts.png
new file mode 100644
index 0000000..e39f895
--- /dev/null
+++ b/moretrees/textures/moretrees_pine_nuts.png
Binary files differ
diff --git a/moretrees/textures/moretrees_raw_coconut.png b/moretrees/textures/moretrees_raw_coconut.png
new file mode 100644
index 0000000..ca318ed
--- /dev/null
+++ b/moretrees/textures/moretrees_raw_coconut.png
Binary files differ
diff --git a/moretrees/textures/moretrees_rubber_tree_leaves.png b/moretrees/textures/moretrees_rubber_tree_leaves.png
new file mode 100644
index 0000000..e35f51b
--- /dev/null
+++ b/moretrees/textures/moretrees_rubber_tree_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_rubber_tree_sapling.png b/moretrees/textures/moretrees_rubber_tree_sapling.png
new file mode 100644
index 0000000..d2e06d0
--- /dev/null
+++ b/moretrees/textures/moretrees_rubber_tree_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_rubber_tree_trunk.png b/moretrees/textures/moretrees_rubber_tree_trunk.png
new file mode 100644
index 0000000..c5da574
--- /dev/null
+++ b/moretrees/textures/moretrees_rubber_tree_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_rubber_tree_trunk_empty.png b/moretrees/textures/moretrees_rubber_tree_trunk_empty.png
new file mode 100644
index 0000000..55423bc
--- /dev/null
+++ b/moretrees/textures/moretrees_rubber_tree_trunk_empty.png
Binary files differ
diff --git a/moretrees/textures/moretrees_rubber_tree_trunk_top.png b/moretrees/textures/moretrees_rubber_tree_trunk_top.png
new file mode 100644
index 0000000..25b86a9
--- /dev/null
+++ b/moretrees/textures/moretrees_rubber_tree_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_rubber_tree_wood.png b/moretrees/textures/moretrees_rubber_tree_wood.png
new file mode 100644
index 0000000..3c83f0e
--- /dev/null
+++ b/moretrees/textures/moretrees_rubber_tree_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_sequoia_leaves.png b/moretrees/textures/moretrees_sequoia_leaves.png
new file mode 100644
index 0000000..594c958
--- /dev/null
+++ b/moretrees/textures/moretrees_sequoia_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_sequoia_sapling.png b/moretrees/textures/moretrees_sequoia_sapling.png
new file mode 100644
index 0000000..b11bc0b
--- /dev/null
+++ b/moretrees/textures/moretrees_sequoia_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_sequoia_trunk.png b/moretrees/textures/moretrees_sequoia_trunk.png
new file mode 100644
index 0000000..552cdf5
--- /dev/null
+++ b/moretrees/textures/moretrees_sequoia_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_sequoia_trunk_top.png b/moretrees/textures/moretrees_sequoia_trunk_top.png
new file mode 100644
index 0000000..d1891fd
--- /dev/null
+++ b/moretrees/textures/moretrees_sequoia_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_sequoia_wood.png b/moretrees/textures/moretrees_sequoia_wood.png
new file mode 100644
index 0000000..2e43595
--- /dev/null
+++ b/moretrees/textures/moretrees_sequoia_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_cone.png b/moretrees/textures/moretrees_spruce_cone.png
new file mode 100644
index 0000000..1c9da85
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_cone.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_leaves.png b/moretrees/textures/moretrees_spruce_leaves.png
new file mode 100644
index 0000000..6643b87
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_nuts.png b/moretrees/textures/moretrees_spruce_nuts.png
new file mode 100644
index 0000000..130c11c
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_nuts.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_sapling.png b/moretrees/textures/moretrees_spruce_sapling.png
new file mode 100644
index 0000000..0275afb
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_trunk.png b/moretrees/textures/moretrees_spruce_trunk.png
new file mode 100644
index 0000000..cc0c559
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_trunk_top.png b/moretrees/textures/moretrees_spruce_trunk_top.png
new file mode 100644
index 0000000..3876c5b
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_spruce_wood.png b/moretrees/textures/moretrees_spruce_wood.png
new file mode 100644
index 0000000..47aa326
--- /dev/null
+++ b/moretrees/textures/moretrees_spruce_wood.png
Binary files differ
diff --git a/moretrees/textures/moretrees_willow_leaves.png b/moretrees/textures/moretrees_willow_leaves.png
new file mode 100644
index 0000000..e1d26d9
--- /dev/null
+++ b/moretrees/textures/moretrees_willow_leaves.png
Binary files differ
diff --git a/moretrees/textures/moretrees_willow_sapling.png b/moretrees/textures/moretrees_willow_sapling.png
new file mode 100644
index 0000000..18414de
--- /dev/null
+++ b/moretrees/textures/moretrees_willow_sapling.png
Binary files differ
diff --git a/moretrees/textures/moretrees_willow_trunk.png b/moretrees/textures/moretrees_willow_trunk.png
new file mode 100644
index 0000000..a3bd5f0
--- /dev/null
+++ b/moretrees/textures/moretrees_willow_trunk.png
Binary files differ
diff --git a/moretrees/textures/moretrees_willow_trunk_top.png b/moretrees/textures/moretrees_willow_trunk_top.png
new file mode 100644
index 0000000..c54c182
--- /dev/null
+++ b/moretrees/textures/moretrees_willow_trunk_top.png
Binary files differ
diff --git a/moretrees/textures/moretrees_willow_wood.png b/moretrees/textures/moretrees_willow_wood.png
new file mode 100644
index 0000000..21c5742
--- /dev/null
+++ b/moretrees/textures/moretrees_willow_wood.png
Binary files differ
diff --git a/moretrees/tree_biomes.txt b/moretrees/tree_biomes.txt
new file mode 100644
index 0000000..3e4533c
--- /dev/null
+++ b/moretrees/tree_biomes.txt
@@ -0,0 +1,34 @@
+
+ Elevation Temperature Nearness to Nearby What nodes Perlin Avoid
+Tree type (m) (approx., °C) some node water to spawn on seed diff radius
+-----------------------------------------------------------------------------------------------------------------------
+jungle tree - 5 to +10 above +15 water, 20 10 dirt_with_grass 329 5
+fir above +25 -20 to +10 n/a n/a dirt_with_grass 359 8
+firs on snow above +15 -20 to +10 n/a n/a snow:snow 359 8
+palm - 1 to + 1 +15 to +32 water, 15 10 sand 330 5
+apple + 1 to +10 +23 to +32 n/a n/a dirt_with grass 331 15
+oak 0 to +10 + 4 to +16 n/a n/a dirt_with grass 332 15
+sequoia 0 to +10 -30 to +50 n/a n/a dirt_with grass 333 10
+birch +10 to +15 -20 to +10 n/a n/a dirt_with grass 334 5
+spruce above +20 -20 to +10 n/a n/a dirt_with grass 335 10
+pine n/a n/a water, 15 5 dirt_with grass 336 10
+willow - 5 to + 5 n/a water, 15 5 dirt_with grass 337 20
+acacia n/a n/a n/a n/a dirt_with_grass,
+ desert_sand n/a 15
+rubber - 5 to + 5 above +32 water, 15 10 dirt_with_grass 338 20
+
+beech n/a n/a n/a n/a dirt_with_grass 2 10
+
+
+Notes:
+------
+
+Beech trees are meant to replace default trees, but are themselves disabled by default. They grow in the same areas
+as the default ones do, and under the same conditions.
+
+Acacia trees depend on humidity as their primary control, and they don't use the fertile ground option. They grow near
+the edges of a desert biome, occasionally into the grass beyond, and anywhere else on desert sand or dirt with grass,
+where the humidity is low (but not bone dry).
+
+Fir trees appear in a snow biome only with older versions of SPlizard's Snow Biomes mod. In more recent versions,
+these trees will not grow, due to an engine bug.
diff --git a/moretrees/tree_models.lua b/moretrees/tree_models.lua
new file mode 100644
index 0000000..3443057
--- /dev/null
+++ b/moretrees/tree_models.lua
@@ -0,0 +1,246 @@
+moretrees.beech_model={
+ axiom="FFFFFBFB",
+ rules_a="[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fdd]]",
+ rules_b="[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&Fd]//d[+^d][--&d]]",
+ rules_c="/",
+ rules_d="F",
+ trunk="moretrees:beech_trunk",
+ leaves="moretrees:beech_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true
+}
+
+moretrees.apple_tree_model={
+ axiom="FFFFFAFFBF",
+ rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
+ rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
+ trunk="moretrees:apple_tree_trunk",
+ leaves="moretrees:apple_tree_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true,
+ fruit="default:apple",
+ fruit_chance=15,
+}
+
+moretrees.oak_model={
+ axiom="FFFFFFA",
+ rules_a="[&FFBFA]////[&BFFFA]////[&FBFFA]",
+ rules_b="[&FFFA]////[&FFFA]////[&FFFA]",
+ trunk="moretrees:oak_trunk",
+ leaves="moretrees:oak_leaves",
+ angle=30,
+ iterations=5,
+ random_level=2,
+ trunk_type="crossed",
+ thin_branches=false,
+ fruit="moretrees:acorn",
+ fruit_chance=3,
+}
+
+moretrees.sequoia_model={
+ axiom="FFFFFFFFFFddccA///cccFddcFA///ddFcFA/cFFddFcdBddd/A/ccdcddd/ccAddddcFBcccAccFdFcFBcccc/BFdFFcFFdcccc/B",
+ rules_a="[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]",
+ rules_b="[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]",
+ rules_c="/",
+ rules_d="F",
+ trunk="moretrees:sequoia_trunk",
+ leaves="moretrees:sequoia_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="crossed",
+ thin_branches=true
+}
+
+moretrees.birch_model1={
+ axiom="FFFFFdddccA/FFFFFFcA/FFFFFFcB",
+ rules_a="[&&&dddd^^ddddddd][&&&---dddd^^ddddddd][&&&+++dddd^^ddddddd][&&&++++++dddd^^ddddddd]",
+ rules_b="[&&&ddd^^ddddd][&&&---ddd^^ddddd][&&&+++ddd^^ddddd][&&&++++++ddd^^ddddd]",
+ rules_c="/",
+ rules_d="F",
+ trunk="moretrees:birch_trunk",
+ leaves="moretrees:birch_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true
+}
+
+moretrees.birch_model2={
+ axiom="FFFdddccA/FFFFFccA/FFFFFccB",
+ rules_a="[&&&dFFF^^FFFdd][&&&---dFFF^^FFFdd][&&&+++dFFF^^FFFdd][&&&++++++dFFF^^FFFdd]",
+ rules_b="[&&&dFF^^FFFd][&&&---dFFF^^FFFd][&&&+++dFF^^FFFd][&&&++++++dFF^^FFFd]",
+ rules_c="/",
+ rules_d="F",
+ trunk="moretrees:birch_trunk",
+ leaves="moretrees:birch_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true
+}
+
+moretrees.palm_model={
+ axiom="FFcccccc&FFFFFddd[^&&&GR][^///&&&GR][^//////&&&GR][^***&&&GR]FA//A//A//A//A//A",
+ rules_a="[&fb&bbb[++f--&ffff&ff][--f++&ffff&ff]&ffff&bbbb&b]",
+ rules_b="f",
+ rules_c="/",
+ rules_d="F",
+ trunk="moretrees:palm_trunk",
+ leaves="moretrees:palm_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true,
+ fruit="moretrees:coconut",
+ fruit_chance=0
+}
+
+moretrees.spruce_model1={
+ axiom="FFFFFAFFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]",
+ rules_a="[&&&FFFFFF^^FFF][&&&++FFFFFF^^FFF][&&&++++FFFFFF^^FFF][&&&++++++FFFFFF^^FFF][&&&--FFFFFF^^FFF][&&&----FFFFFF^^FFF]",
+ rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]",
+ rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]",
+ rules_d="[&&&FFF^^FFF][&&&++FFF^^FFF][&&&++++FFF^^FFF][&&&++++++FFF^^FFF][&&&--FFF^^FFF][&&&----FFF^^FFF]",
+ trunk="moretrees:spruce_trunk",
+ leaves="moretrees:spruce_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="crossed",
+ thin_branches=true,
+ fruit="moretrees:spruce_cone",
+ fruit_chance=8
+}
+
+moretrees.spruce_model2={
+ axiom="FFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]",
+ rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]",
+ rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]",
+ rules_d="[&&&FFF^^FFF][&&&++FFF^^FFF][&&&++++FFF^^FFF][&&&++++++FFF^^FFF][&&&--FFF^^FFF][&&&----FFF^^FFF]",
+ trunk="moretrees:spruce_trunk",
+ leaves="moretrees:spruce_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="crossed",
+ thin_branches=true,
+ fruit="moretrees:spruce_cone",
+ fruit_chance=8
+}
+
+moretrees.pine_model={
+ axiom="FFFFFcccdddB///cFdFB////cFdFB///cFdFB///cFdFA///cFdFA///cFdFB[FF]f",
+ rules_a="[&&&TTTT[++^TFdd][--&TFd]//Tdd[+^Fd][--&Fdd]]",
+ rules_b="[&&&TTT[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]",
+ rules_c="/",
+ rules_d="F",
+ trunk="default:pine_tree",
+ leaves="default:pine_needles",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true,
+ fruit="moretrees:pine_cone",
+ fruit_chance=8
+}
+
+moretrees.willow_model={
+ axiom="FFFFFFFFccA",
+ rules_a="[&FF&FFFF&&F&FFFFFFFdddd][**&FF&FFFF&&F&FFFFFFFdddd][//&FF&FFFF&&F&FFFFFFFdddd][////&FF&FFFF&&F&FFFFFFFdddd][//////&FF&FFFF&&F&FFFFFFFdddd][////////&FF&FFFF&&F&FFFFFFFdddd]",
+ rules_c="/",
+ rules_d="F",
+ trunk="moretrees:willow_trunk",
+ leaves="moretrees:willow_leaves",
+ angle=30,
+ iterations=2,
+ random_level=0,
+ trunk_type="crossed",
+ thin_branches=true
+}
+
+moretrees.acacia_model={
+ axiom="FFFFFFccccA",
+ rules_a = "[B]//[B]//[B]//[B]",
+ rules_b = "&TTTT&TT^^G&&----GGGGGG++GGG++" -- line up with the "canvas" edge
+ .."fffffffGG++G++" -- first layer, drawn in a zig-zag raster pattern
+ .."Gffffffff--G--"
+ .."ffffffffG++G++"
+ .."fffffffff--G--"
+ .."fffffffff++G++"
+ .."fffffffff--G--"
+ .."ffffffffG++G++"
+ .."Gffffffff--G--"
+ .."fffffffGG"
+ .."^^G&&----GGGGGGG++GGGGGG++" -- re-align to second layer canvas edge
+ .."ffffGGG++G++" -- second layer
+ .."GGfffff--G--"
+ .."ffffffG++G++"
+ .."fffffff--G--"
+ .."ffffffG++G++"
+ .."GGfffff--G--"
+ .."ffffGGG",
+ rules_c = "/",
+ trunk="default:acacia_tree",
+ leaves="default:acacia_leaves",
+ angle=45,
+ iterations=3,
+ random_level=0,
+ trunk_type="single",
+ thin_branches=true,
+}
+
+moretrees.rubber_tree_model={
+ axiom="FFFFA",
+ rules_a="[&FFBFA]////[&BFFFA]////[&FBFFA]",
+ rules_b="[&FFA]////[&FFA]////[&FFA]",
+ trunk="moretrees:rubber_tree_trunk",
+ leaves="moretrees:rubber_tree_leaves",
+ angle=35,
+ iterations=3,
+ random_level=1,
+ trunk_type="double",
+ thin_branches=true
+}
+
+moretrees.jungletree_model={
+ axiom=nil,
+ rules_a=nil,
+ rules_b=nil,
+ trunk="moretrees:jungletree_trunk",
+ leaves="default:jungleleaves",
+ leaves2=nil,
+ leaves2_chance=nil,
+ angle=45,
+ iterations=nil,
+ random_level=2,
+ trunk_type=nil,
+ thin_branches=true,
+ fruit_chance=15,
+ fruit="vines:vine"
+}
+
+moretrees.fir_model={
+ axiom="FFFAF[&&-F][&&+F][&&---F][&&+++F]Fff",
+ rules_a=nil,
+ rules_b=nil,
+ trunk="moretrees:fir_trunk",
+ leaves=nil,
+ angle=45,
+ iterations=7,
+ random_level=5,
+ trunk_type="single",
+ thin_branches=true,
+ fruit="moretrees:fir_cone",
+ fruit_chance=8
+}
diff --git a/nixie_tubes/LICENSE b/nixie_tubes/LICENSE
new file mode 100644
index 0000000..801d59d
--- /dev/null
+++ b/nixie_tubes/LICENSE
@@ -0,0 +1,191 @@
+(This file copied from Digilines mod)
+
+The LGPLv3 applies to all code in this project.
+The WTFPL applies to textures and any other content in this project which is
+not source code.
+
+=============================================================
+
+GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+
+=============================================================
+
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/nixie_tubes/README.md b/nixie_tubes/README.md
new file mode 100644
index 0000000..46b6f39
--- /dev/null
+++ b/nixie_tubes/README.md
@@ -0,0 +1,33 @@
+# nixie_tubes mod
+
+*by Vanessa Ezekowitz*
+
+This mod provides a set of classic Nixie tubes, and a set of alphanumeric 15-segment tubes similar to Burroughs B-7971, controlled by Mesecons' Digilines mod.
+
+Simply place a tube, right-click it, and set a channel.
+
+Then send a character or one of several control words to that channel from a Mesecons Lua Controller and the tube will try to display it.
+
+The classic tubes are numeric with colon and period symbols, and hence will respond to the literal numbers 0-9, and the words "colon", "period", and "off". Any other symbol or word is ignored.
+
+The alphanumeric tubes respond to characters from the standard 7-bit ASCII character set, along with these messages:
+
+* "off", "colon" and "period" act the same as on the numeric tubes. Note that neither a colon nor a period actually look all that great on a 15-segment
+ display, so use a classic tube for those, if you can.
+* "del" or character code 127 displays an all-on square, but without segment #15 (the bottom, chevron-shaped one).
+* "allon" or character code 128 will display an all-on square, with segment #15 lit also.
+* "cursor" or character code 129 will display just segment 15.
+
+Any unrecognized word or symbol outside the 32-129 range is ignored.
+
+The Decatron tubes respond to 0-9 and "off", same as the others, along with the following actions:
+
+* "inc" will increment the tube's current number value. If the value overflows from 9 back to 0, the tube will generate a "carry" message.
+* "dec" will decrement the current value. If the value wraps from 0 back to 9, the tube will send out a "borrow" message.
+* "get" will query the current state of the tube, responding with a single digit 0-9 or the word "off".
+
+Tubes emit a small amount of light when displaying something.
+
+Nixies can only be mounted on the floor, while Decatrons can be mounted on a wall (or a ceiling if so desired).
+
+A Decatron has a small grey spot on its internal insulator to mark the "0" position.
diff --git a/nixie_tubes/depends.txt b/nixie_tubes/depends.txt
new file mode 100644
index 0000000..2cec86e
--- /dev/null
+++ b/nixie_tubes/depends.txt
@@ -0,0 +1,2 @@
+default
+digilines
diff --git a/nixie_tubes/description.txt b/nixie_tubes/description.txt
new file mode 100644
index 0000000..e93f904
--- /dev/null
+++ b/nixie_tubes/description.txt
@@ -0,0 +1 @@
+This mod provides a set of classic Nixie tubes, and a set of alphanumeric 15-segment tubes similar to Burroughs B-7971, controlled by Mesecons' Digilines mod.
diff --git a/nixie_tubes/init.lua b/nixie_tubes/init.lua
new file mode 100644
index 0000000..97bbd68
--- /dev/null
+++ b/nixie_tubes/init.lua
@@ -0,0 +1,413 @@
+-- simple nixie tubes mod
+-- by Vanessa Ezekowitz
+
+nixie_tubes = {}
+
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+
+local nixie_types = {
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "colon",
+ "period",
+ "off"
+}
+
+local tube_cbox = {
+ type = "fixed",
+ fixed = { -11/32, -8/16, -11/32, 11/32, 8/16, 11/32 }
+}
+
+-- the following functions based on the so-named ones in Jeija's digilines mod
+
+local reset_meta = function(pos)
+ minetest.get_meta(pos):set_string("formspec", "field[channel;Channel;${channel}]")
+end
+
+local on_digiline_receive_std = function(pos, node, channel, msg)
+ local meta = minetest.get_meta(pos)
+ local setchan = meta:get_string("channel")
+ if setchan ~= channel then return end
+ local num = tonumber(msg)
+ if msg == "colon" or msg == "period" or msg == "off" or (num and (num >= 0 and num <= 9)) then
+ minetest.swap_node(pos, { name = "nixie_tubes:tube_"..msg, param2 = node.param2})
+ end
+end
+
+local on_digiline_receive_deca = function(pos, node, channel, msg)
+
+ local meta = minetest.get_meta(pos)
+ local setchan = meta:get_string("channel")
+ if setchan ~= channel then return end
+ local tubenum = string.gsub(node.name, "nixie_tubes:decatron_", "")
+ local num = tonumber(msg)
+
+ if msg == "off" or (num and (num >= 0 and num <= 9)) then
+ minetest.swap_node(pos, { name = "nixie_tubes:decatron_"..msg, param2 = node.param2})
+
+ elseif msg == "inc" then
+ num = (tonumber(tubenum) or 0) + 1
+ if num > 9 then
+ num = 0
+ digiline:receptor_send(pos, digiline.rules.default, channel, "carry")
+ end
+ minetest.swap_node(pos, { name = "nixie_tubes:decatron_"..num, param2 = node.param2})
+
+ elseif msg == "dec" then
+ num = (tonumber(tubenum) or 0) - 1
+ if num < 0 then
+ num = 9
+ digiline:receptor_send(pos, digiline.rules.default, channel, "borrow")
+ end
+ minetest.swap_node(pos, { name = "nixie_tubes:decatron_"..num, param2 = node.param2})
+
+ elseif msg == "get" then
+ digiline:receptor_send(pos, digiline.rules.default, channel, tubenum)
+
+ end
+end
+
+-- the nodes:
+
+for _,tube in ipairs(nixie_types) do
+ local groups = { cracky = 2, not_in_creative_inventory = 1}
+ local light = LIGHT_MAX-4
+ local light2 = LIGHT_MAX-5
+ local description = S("Nixie Tube ("..tube..")")
+ local description2 = S("Decatron ("..tube..")")
+ local cathode = "nixie_tube_cathode_off.png^nixie_tube_cathode_"..tube..".png"
+ local cathode2 = "decatron_cathode_"..tube..".png"
+
+ if tube == "off" then
+ groups = {cracky = 2}
+ light = nil
+ light2 = nil
+ description = S("Nixie Tube")
+ description2 = S("Decatron")
+ cathode = "nixie_tube_cathode_off.png"
+ cathode2 = "nixie_tube_blank.png"
+ end
+
+ minetest.register_node("nixie_tubes:tube_"..tube, {
+ description = description,
+ drawtype = "mesh",
+ mesh = "nixie_tube.obj",
+ tiles = {
+ "nixie_tube_base.png",
+ "nixie_tube_backing.png",
+ cathode,
+ "nixie_tube_anode.png",
+ "nixie_tube_glass.png",
+ },
+ use_texture_alpha = true,
+ groups = groups,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = light,
+ selection_box = tube_cbox,
+ collision_box = tube_cbox,
+ on_construct = function(pos)
+ reset_meta(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = on_digiline_receive_std
+ },
+ },
+ drop = "nixie_tubes:tube_off"
+ })
+
+ if tube ~= "colon" and tube ~= "period" then
+ minetest.register_node("nixie_tubes:decatron_"..tube, {
+ description = description2,
+ drawtype = "mesh",
+ mesh = "decatron.obj",
+ tiles = {
+ "nixie_tube_base.png",
+ "decatron_internals.png",
+ "decatron_anode.png",
+ "decatron_cathode_pins.png",
+ cathode2,
+ "nixie_tube_glass.png",
+ },
+ use_texture_alpha = true,
+ groups = groups,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = light2,
+ selection_box = tube_cbox,
+ collision_box = tube_cbox,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ minetest.set_node(pos, { name = "air"})
+ minetest.rotate_node(itemstack, placer, pointed_thing)
+ if minetest.get_node(pos).param2 == 12 then
+ minetest.set_node(pos, { name = "nixie_tubes:decatron_off", param2 = 15 })
+ end
+ end,
+ on_construct = function(pos)
+ reset_meta(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = on_digiline_receive_deca
+ },
+ },
+ drop = "nixie_tubes:decatron_off"
+ })
+ end
+end
+
+-- Alpha-numeric tubes (Burroughs B-7971 or similar)
+
+--[[
+
+Map of display wires:
+
+ --1------
+ |\ |8 /|
+ 6| \ | / |2
+ | 7\ | /9 |
+ | \|/ |
+14--> ---- ---- <--10
+ | /|\ |
+ |13/ | \11|
+ 5| / | \ |3
+ |/ 12| \|
+ ------4--
+ _
+ --¯¯ ¯¯-- <--15
+
+-- Wire positions in table:
+-- char = { 1, 2, 3, 4, .... , 13, 14, 15 }
+
+]]--
+
+local alnum_chars = {
+ { " ", { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }, -- 32
+ { "!", { 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0 } },
+ { '"', { 0,0,0,0,0,1,0,1,0,0,0,0,0,0,0 } },
+ { "#", { 0,1,1,1,0,0,0,1,0,1,0,1,0,1,0 } },
+ { "$", { 1,0,1,1,0,1,0,1,0,1,0,1,0,1,0 } },
+ { "%", { 0,0,1,0,0,1,0,0,1,0,0,0,1,0,0 } },
+ { "&", { 1,0,0,1,1,0,1,0,1,0,1,0,0,1,0 } },
+ { "'", { 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 } },
+ { "(", { 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0 } },
+ { ")", { 0,0,0,0,0,0,1,0,0,0,0,0,1,0,0 } },
+ { "*", { 0,0,0,0,0,0,1,1,1,1,1,1,1,1,0 } },
+ { "+", { 0,0,0,0,0,0,0,1,0,1,0,1,0,1,0 } },
+ { ",", { 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 } },
+ { "-", { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 } },
+ { ".", { 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 } },
+ { "/", { 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0 } },
+ { "0", { 1,1,1,1,1,1,0,0,1,0,0,0,1,0,0 } }, -- 48
+ { "1", { 0,1,1,0,0,0,0,0,1,0,0,0,0,0,0 } },
+ { "2", { 1,1,0,1,0,0,0,0,0,1,0,0,1,0,0 } },
+ { "3", { 1,1,1,1,0,0,0,0,0,1,0,0,0,0,0 } },
+ { "4", { 0,1,1,0,0,1,0,0,0,1,0,0,0,1,0 } },
+ { "5", { 1,0,1,1,0,1,0,0,0,1,0,0,0,1,0 } },
+ { "6", { 1,0,1,1,1,1,0,0,0,1,0,0,0,1,0 } },
+ { "7", { 1,0,0,0,0,0,0,0,1,0,0,1,0,0,0 } },
+ { "8", { 1,1,1,1,1,1,0,0,0,1,0,0,0,1,0 } },
+ { "9", { 1,1,1,0,0,1,0,0,0,1,0,0,0,1,0 } },
+ { ":", { 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0 } }, -- 58
+ { ";", { 0,0,0,0,0,0,0,1,0,0,0,0,1,0,0 } },
+ { "<", { 0,0,0,0,0,0,0,0,1,0,1,0,0,1,0 } },
+ { "=", { 0,0,0,1,0,0,0,0,0,1,0,0,0,1,0 } },
+ { ">", { 0,0,0,0,0,0,1,0,0,1,0,0,1,0,0 } },
+ { "?", { 1,1,0,0,0,0,0,0,0,1,0,1,0,0,0 } },
+ { "@", { 1,1,0,1,1,1,0,1,0,1,0,0,0,0,0 } }, -- 64
+ { "A", { 1,1,1,0,1,1,0,0,0,1,0,0,0,1,0 } },
+ { "B", { 1,1,1,1,0,0,0,1,0,1,0,1,0,0,0 } },
+ { "C", { 1,0,0,1,1,1,0,0,0,0,0,0,0,0,0 } },
+ { "D", { 1,1,1,1,0,0,0,1,0,0,0,1,0,0,0 } },
+ { "E", { 1,0,0,1,1,1,0,0,0,0,0,0,0,1,0 } },
+ { "F", { 1,0,0,0,1,1,0,0,0,0,0,0,0,1,0 } },
+ { "G", { 1,0,1,1,1,1,0,0,0,1,0,0,0,0,0 } },
+ { "H", { 0,1,1,0,1,1,0,0,0,1,0,0,0,1,0 } },
+ { "I", { 1,0,0,1,0,0,0,1,0,0,0,1,0,0,0 } },
+ { "J", { 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0 } },
+ { "K", { 0,0,0,0,1,1,0,0,1,0,1,0,0,1,0 } },
+ { "L", { 0,0,0,1,1,1,0,0,0,0,0,0,0,0,0 } },
+ { "M", { 0,1,1,0,1,1,1,0,1,0,0,0,0,0,0 } },
+ { "N", { 0,1,1,0,1,1,1,0,0,0,1,0,0,0,0 } },
+ { "O", { 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0 } },
+ { "P", { 1,1,0,0,1,1,0,0,0,1,0,0,0,1,0 } },
+ { "Q", { 1,1,1,1,1,1,0,0,0,0,1,0,0,0,0 } },
+ { "R", { 1,1,0,0,1,1,0,0,0,1,1,0,0,1,0 } },
+ { "S", { 1,0,1,1,0,1,0,0,0,1,0,0,0,1,0 } },
+ { "T", { 1,0,0,0,0,0,0,1,0,0,0,1,0,0,0 } },
+ { "U", { 0,1,1,1,1,1,0,0,0,0,0,0,0,0,0 } },
+ { "V", { 0,0,0,0,1,1,0,0,1,0,0,0,1,0,0 } },
+ { "W", { 0,1,1,0,1,1,0,0,0,0,1,0,1,0,0 } },
+ { "X", { 0,0,0,0,0,0,1,0,1,0,1,0,1,0,0 } },
+ { "Y", { 0,0,0,0,0,0,1,0,1,0,0,1,0,0,0 } },
+ { "Z", { 1,0,0,1,0,0,0,0,1,0,0,0,1,0,0 } },
+ { "[", { 1,0,0,1,1,1,0,0,0,0,0,0,0,0,0 } }, -- 91
+ { "\\", { 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0 } },
+ { "]", { 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 } },
+ { "^", { 0,0,0,0,0,0,0,0,0,0,1,0,1,0,0 } },
+ { "_", { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 } },
+ { "`", { 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 } },
+ { "a", { 1,1,1,1,0,0,0,0,0,1,0,0,1,0,0 } }, -- 97
+ { "b", { 0,0,0,1,1,1,0,0,0,0,1,0,0,1,0 } },
+ { "c", { 0,0,0,1,1,0,0,0,0,1,0,0,0,1,0 } },
+ { "d", { 0,1,1,1,0,0,0,0,0,1,0,0,1,0,0 } },
+ { "e", { 0,0,0,1,1,0,0,0,0,0,0,0,1,1,0 } },
+ { "f", { 1,0,0,0,1,1,0,0,0,0,0,0,0,1,0 } },
+ { "g", { 1,1,1,1,0,0,1,0,0,1,0,0,0,0,0 } },
+ { "h", { 0,0,0,0,1,1,0,0,0,0,1,0,0,1,0 } },
+ { "i", { 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 } },
+ { "j", { 0,1,1,1,0,0,0,0,0,0,0,0,0,0,0 } },
+ { "k", { 0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 } },
+ { "l", { 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0 } },
+ { "m", { 0,0,1,0,1,0,0,0,0,1,0,1,0,1,0 } },
+ { "n", { 0,0,0,0,1,0,0,0,0,0,1,0,0,1,0 } },
+ { "o", { 0,0,1,1,1,0,0,0,0,1,0,0,0,1,0 } },
+ { "p", { 1,0,0,0,1,1,0,0,1,0,0,0,0,1,0 } },
+ { "q", { 1,1,1,0,0,0,1,0,0,1,0,0,0,0,0 } },
+ { "r", { 0,0,0,0,1,0,0,0,0,0,0,0,0,1,0 } },
+ { "s", { 0,0,0,1,0,0,0,0,0,1,1,0,0,0,0 } },
+ { "t", { 0,0,0,1,1,1,0,0,0,0,0,0,0,1,0 } },
+ { "u", { 0,0,1,1,1,0,0,0,0,0,0,0,0,0,0 } },
+ { "v", { 0,0,0,0,1,0,0,0,0,0,0,0,1,0,0 } },
+ { "w", { 0,0,1,0,1,0,0,0,0,0,1,0,1,0,0 } },
+ { "x", { 0,0,0,0,0,0,1,0,1,0,1,0,1,0,0 } },
+ { "y", { 0,0,0,0,0,0,1,0,1,0,0,0,1,0,0 } },
+ { "z", { 0,0,0,4,0,0,0,0,0,0,0,0,1,1,0 } },
+ { "{", { 1,0,0,1,0,0,1,0,0,0,0,0,1,1,0 } },
+ { "|", { 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0 } },
+ { "}", { 1,0,0,1,0,0,0,0,1,1,1,0,0,0,0 } },
+ { "~", { 0,1,0,0,0,1,1,0,0,1,0,0,0,0,0 } },
+ { string.char(127), { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 } }, -- "DEL"
+ { string.char(128), { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 } }, -- all-on
+ { string.char(129), { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } }, -- "cursor" segment
+}
+
+local on_digiline_receive_alnum = function(pos, node, channel, msg)
+ local meta = minetest.get_meta(pos)
+ local setchan = meta:get_string("channel")
+ if setchan ~= channel then return end
+ if msg and msg ~= "" then
+ local asc = string.byte(msg)
+ if msg == "off" then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_32", param2 = node.param2})
+ elseif msg == "colon" then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_58", param2 = node.param2})
+ elseif msg == "period" then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_46", param2 = node.param2})
+ elseif msg == "del" then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_127", param2 = node.param2})
+ elseif msg == "allon" then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_128", param2 = node.param2})
+ elseif msg == "cursor" then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_129", param2 = node.param2})
+ elseif asc > 31 and alnum_chars[asc - 31] then
+ minetest.swap_node(pos, { name = "nixie_tubes:alnum_"..asc, param2 = node.param2})
+ end
+ end
+end
+
+for i in ipairs(alnum_chars) do
+ local char = alnum_chars[i][1]
+ local bits = alnum_chars[i][2]
+
+ local groups = { cracky = 2, not_in_creative_inventory = 1}
+ local light = LIGHT_MAX-4
+ local description = S("Alphanumeric Nixie Tube ("..char..")")
+
+ local wires = "nixie_tube_alnum_wires.png"
+ for j = 1, 15 do
+ if bits[j] == 1 then
+ wires = wires.."^nixie_tube_alnum_seg_"..j..".png"
+ end
+ end
+
+ if char == " " then
+ groups = {cracky = 2}
+ light = nil
+ description = S("Alphanumeric Nixie Tube")
+ wires = "nixie_tube_alnum_wires.png"
+ end
+
+ minetest.register_node("nixie_tubes:alnum_"..string.byte(char), {
+ description = description,
+ drawtype = "mesh",
+ mesh = "nixie_tube.obj",
+ tiles = {
+ "nixie_tube_base.png",
+ "nixie_tube_backing.png",
+ wires,
+ "nixie_tube_anode.png",
+ "nixie_tube_glass.png",
+ },
+ use_texture_alpha = true,
+ groups = groups,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = light,
+ selection_box = tube_cbox,
+ collision_box = tube_cbox,
+ on_construct = function(pos)
+ reset_meta(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = on_digiline_receive_alnum
+ },
+ },
+ drop = "nixie_tubes:alnum_32"
+ })
+end
+
+-- crafts
+
+minetest.register_craft({
+ output = "nixie_tubes:tube_off 4",
+ recipe = {
+ { "", "default:glass", "" },
+ { "default:glass", "default:sign_wall", "default:glass" },
+ { "default:glass", "default:mese_crystal_fragment", "default:glass" }
+ },
+})
+
+
+minetest.register_craft({
+ output = "nixie_tubes:alnum_32 4",
+ recipe = {
+ { "", "default:glass", "" },
+ { "default:glass", "default:sign_wall", "default:glass" },
+ { "default:glass", "default:mese_crystal", "default:glass" }
+ },
+})
+
diff --git a/nixie_tubes/models/decatron.obj b/nixie_tubes/models/decatron.obj
new file mode 100644
index 0000000..27b71d7
--- /dev/null
+++ b/nixie_tubes/models/decatron.obj
@@ -0,0 +1,1225 @@
+# Blender v2.73 (sub 0) OBJ File: 'decatron.blend'
+# www.blender.org
+o nixie_Cylinder.009
+v 0.349999 -0.500000 0.000000
+v 0.323357 -0.500000 0.133939
+v 0.247486 -0.500000 0.247486
+v 0.133939 -0.500000 0.323357
+v 0.000000 -0.500000 0.349999
+v -0.133939 -0.500000 0.323357
+v -0.247486 -0.500000 0.247486
+v -0.323357 -0.500000 0.133939
+v -0.349999 -0.500000 0.000000
+v -0.323357 -0.500000 -0.133939
+v -0.247486 -0.500000 -0.247486
+v -0.133939 -0.500000 -0.323357
+v -0.000000 -0.500000 -0.349999
+v 0.133939 -0.500000 -0.323357
+v 0.247486 -0.500000 -0.247486
+v 0.323357 -0.500000 -0.133939
+v -0.000000 -0.227297 0.000000
+v -0.000000 -0.500000 0.000000
+v 0.323357 -0.250001 0.133939
+v 0.247486 -0.250001 0.247486
+v 0.133939 -0.250001 0.323357
+v 0.000000 -0.250001 0.349999
+v -0.133939 -0.250001 0.323357
+v -0.247486 -0.250001 0.247486
+v -0.323357 -0.250001 0.133939
+v -0.349999 -0.250001 0.000000
+v -0.323357 -0.250001 -0.133939
+v -0.247486 -0.250001 -0.247486
+v -0.133939 -0.250001 -0.323357
+v -0.000000 -0.250001 -0.349999
+v 0.133939 -0.250001 -0.323357
+v 0.247486 -0.250001 -0.247486
+v 0.323357 -0.250001 -0.133939
+v 0.349999 -0.250001 0.000000
+v 0.326386 -0.227297 0.000000
+v 0.301541 -0.227297 0.124903
+v 0.230790 -0.227297 0.230790
+v 0.124903 -0.227297 0.301541
+v 0.000000 -0.227297 0.326386
+v -0.124903 -0.227297 0.301541
+v -0.230790 -0.227297 0.230790
+v -0.301541 -0.227297 0.124903
+v -0.326386 -0.227297 0.000000
+v -0.301541 -0.227297 -0.124902
+v -0.230790 -0.227297 -0.230790
+v -0.124903 -0.227297 -0.301541
+v -0.000000 -0.227297 -0.326386
+v 0.124903 -0.227297 -0.301541
+v 0.230790 -0.227297 -0.230790
+v 0.301541 -0.227297 -0.124902
+v 0.207637 0.464059 -0.086006
+v 0.158918 0.464059 -0.158918
+v 0.086006 0.464059 -0.207637
+v -0.000000 0.464059 -0.224745
+v -0.086006 0.464059 -0.207637
+v -0.158919 0.464059 -0.158918
+v -0.207637 0.464059 -0.086006
+v -0.224745 0.464059 0.000000
+v -0.207637 0.464059 0.086006
+v -0.158918 0.464059 0.158919
+v -0.086006 0.464059 0.207637
+v 0.000000 0.464059 0.224745
+v 0.086006 0.464059 0.207637
+v 0.158918 0.464059 0.158918
+v 0.207637 0.464059 0.086006
+v 0.326386 0.287854 0.000000
+v 0.301541 0.287854 -0.124902
+v 0.230790 0.287854 -0.230790
+v 0.124903 0.287854 -0.301541
+v -0.000000 0.287854 -0.326386
+v -0.124903 0.287854 -0.301541
+v -0.230790 0.287854 -0.230790
+v -0.301541 0.287854 -0.124902
+v -0.326386 0.287854 0.000000
+v -0.301541 0.287854 0.124903
+v -0.230790 0.287854 0.230790
+v -0.124903 0.287854 0.301541
+v 0.000000 0.287854 0.326386
+v 0.124903 0.287854 0.301541
+v 0.230790 0.287854 0.230790
+v 0.301541 0.287854 0.124903
+v 0.224745 0.464059 0.000000
+v 0.280086 0.375956 -0.116015
+v 0.214368 0.375956 -0.214368
+v 0.116015 0.375956 -0.280086
+v -0.000000 0.375956 -0.303163
+v -0.116015 0.375956 -0.280086
+v -0.214368 0.375956 -0.214368
+v -0.280086 0.375956 -0.116015
+v -0.303163 0.375956 0.000000
+v -0.280086 0.375956 0.116015
+v -0.214368 0.375956 0.214368
+v -0.116015 0.375956 0.280086
+v 0.000000 0.375956 0.303163
+v 0.116015 0.375956 0.280086
+v 0.214368 0.375956 0.214368
+v 0.280086 0.375956 0.116015
+v 0.303163 0.375956 0.000000
+v -0.000000 0.499996 0.000000
+v 0.041885 0.499996 -0.017349
+v 0.032057 0.499996 -0.032057
+v 0.017349 0.499996 -0.041885
+v -0.000000 0.499996 -0.045336
+v -0.017349 0.499996 -0.041885
+v -0.032057 0.499996 -0.032057
+v -0.041885 0.499996 -0.017349
+v -0.045336 0.499996 0.000000
+v -0.041885 0.499996 0.017349
+v -0.032057 0.499996 0.032057
+v -0.017349 0.499996 0.041885
+v 0.000000 0.499996 0.045336
+v 0.017349 0.499996 0.041885
+v 0.032057 0.499996 0.032057
+v 0.041885 0.499996 0.017349
+v 0.045336 0.499996 0.000000
+v 0.301541 -0.227297 -0.124902
+v 0.230790 -0.227297 -0.230790
+v 0.124903 -0.227297 -0.301541
+v -0.000000 -0.227297 -0.326386
+v -0.124903 -0.227297 -0.301541
+v -0.230790 -0.227297 -0.230790
+v -0.301541 -0.227297 -0.124902
+v -0.326386 -0.227297 0.000000
+v -0.301541 -0.227297 0.124903
+v -0.230790 -0.227297 0.230790
+v -0.124903 -0.227297 0.301541
+v 0.000000 -0.227297 0.326386
+v 0.124903 -0.227297 0.301541
+v 0.230790 -0.227297 0.230790
+v 0.301541 -0.227297 0.124903
+v 0.326386 -0.227297 0.000000
+v 0.147416 0.489328 0.000000
+v 0.136194 0.489328 0.056414
+v 0.104239 0.489328 0.104239
+v 0.056414 0.489328 0.136195
+v 0.000000 0.489328 0.147416
+v -0.056414 0.489328 0.136195
+v -0.104239 0.489328 0.104239
+v -0.136194 0.489328 0.056414
+v -0.147416 0.489328 0.000000
+v -0.136195 0.489328 -0.056414
+v -0.104239 0.489328 -0.104239
+v -0.056414 0.489328 -0.136194
+v -0.000000 0.489328 -0.147416
+v 0.056414 0.489328 -0.136194
+v 0.104239 0.489328 -0.104239
+v 0.136195 0.489328 -0.056414
+v 0.182642 0.475456 0.036330
+v 0.154837 0.475456 0.103459
+v 0.103459 0.475456 0.154837
+v 0.036330 0.475456 0.182643
+v -0.036330 0.475456 0.182643
+v -0.103459 0.475456 0.154837
+v -0.154837 0.475456 0.103459
+v -0.182642 0.475456 0.036330
+v -0.182642 0.475456 -0.036330
+v -0.154837 0.475456 -0.103459
+v -0.103459 0.475456 -0.154837
+v -0.036330 0.475456 -0.182642
+v 0.036330 0.475456 -0.182642
+v 0.103459 0.475456 -0.154837
+v 0.182642 0.475456 -0.036330
+v 0.154837 0.475456 -0.103459
+v 0.256519 0.416957 0.051025
+v 0.217466 0.416957 0.145306
+v 0.145306 0.416957 0.217466
+v 0.051025 0.416957 0.256519
+v -0.051025 0.416957 0.256519
+v -0.145306 0.416957 0.217466
+v -0.217466 0.416957 0.145306
+v -0.256519 0.416957 0.051025
+v -0.256519 0.416957 -0.051025
+v -0.217466 0.416957 -0.145306
+v -0.145306 0.416957 -0.217466
+v -0.051025 0.416957 -0.256519
+v 0.051025 0.416957 -0.256519
+v 0.145306 0.416957 -0.217466
+v 0.256519 0.416957 -0.051025
+v 0.217466 0.416957 -0.145306
+v 0.303030 0.330972 0.060276
+v 0.256897 0.330972 0.171653
+v 0.171653 0.330972 0.256897
+v 0.060277 0.330972 0.303030
+v -0.060277 0.330972 0.303030
+v -0.171653 0.330972 0.256897
+v -0.256897 0.330972 0.171653
+v -0.303030 0.330972 0.060277
+v -0.303031 0.330972 -0.060276
+v -0.256897 0.330972 -0.171653
+v -0.171653 0.330972 -0.256897
+v -0.060277 0.330972 -0.303030
+v 0.060277 0.330972 -0.303030
+v 0.171653 0.330972 -0.256897
+v 0.303031 0.330972 -0.060276
+v 0.256897 0.330972 -0.171653
+v 0.096678 -0.024066 0.070240
+v 0.119500 -0.024066 -0.000000
+v 0.119500 -0.250000 -0.000000
+v 0.317357 0.256231 -0.000000
+v 0.096678 -0.250000 0.070240
+v 0.256747 0.256231 0.186538
+v 0.036928 -0.250000 0.113651
+v 0.098069 0.256231 0.301824
+v -0.036928 -0.250000 0.113651
+v -0.098069 0.256231 0.301824
+v -0.096678 -0.250000 0.070240
+v -0.256747 0.256231 0.186538
+v -0.119500 -0.250000 0.000000
+v -0.317357 0.256231 0.000000
+v -0.096678 -0.250000 -0.070240
+v -0.256747 0.256231 -0.186538
+v -0.036928 -0.250000 -0.113651
+v -0.098069 0.256231 -0.301824
+v 0.036928 -0.250000 -0.113651
+v 0.098069 0.256231 -0.301824
+v 0.096678 -0.250000 -0.070240
+v 0.256747 0.256231 -0.186538
+v 0.036928 -0.024066 0.113651
+v -0.036928 -0.024066 0.113651
+v -0.096678 -0.024066 0.070240
+v -0.119500 -0.024066 0.000000
+v -0.096678 -0.024066 -0.070240
+v -0.036928 -0.024066 -0.113651
+v 0.036928 -0.024066 -0.113651
+v 0.096678 -0.024066 -0.070240
+v 0.096678 0.093867 -0.070240
+v 0.036928 0.093867 -0.113651
+v 0.119500 0.093867 -0.000000
+v -0.036928 0.093867 -0.113651
+v -0.096678 0.093867 -0.070240
+v -0.119500 0.093867 0.000000
+v -0.096678 0.093867 0.070240
+v -0.036928 0.093867 0.113651
+v 0.036928 0.093867 0.113651
+v 0.096678 0.093867 0.070240
+v 0.317332 0.175898 -0.000000
+v 0.256727 0.175898 -0.186523
+v 0.098061 0.175898 -0.301801
+v -0.098061 0.175898 -0.301801
+v -0.256727 0.175898 -0.186523
+v -0.317332 0.175898 0.000000
+v -0.256727 0.175898 0.186523
+v -0.098061 0.175898 0.301801
+v 0.098061 0.175898 0.301801
+v 0.256727 0.175898 0.186523
+v 0.096678 -0.188128 0.070240
+v 0.036928 -0.188128 0.113651
+v -0.036928 -0.188128 0.113651
+v -0.096678 -0.188128 0.070240
+v -0.119500 -0.188128 0.000000
+v -0.096678 -0.188128 -0.070240
+v -0.036928 -0.188128 -0.113651
+v 0.036928 -0.188128 -0.113651
+v 0.119500 -0.188128 -0.000000
+v 0.096678 -0.188128 -0.070240
+v 0.061561 -0.106097 -0.000000
+v 0.049804 -0.106097 0.036184
+v 0.019023 -0.106097 0.058548
+v -0.019023 -0.106097 0.058548
+v -0.049804 -0.106097 0.036184
+v -0.061561 -0.106097 0.000000
+v -0.049804 -0.106097 -0.036184
+v -0.019023 -0.106097 -0.058548
+v 0.019023 -0.106097 -0.058548
+v 0.049804 -0.106097 -0.036184
+v -0.221607 0.336504 -0.161007
+v -0.273921 0.336504 0.000000
+v -0.221607 0.336504 0.161007
+v -0.084646 0.336504 0.260514
+v 0.084646 0.336504 0.260514
+v 0.273900 0.256171 -0.000000
+v 0.221590 0.256171 0.160994
+v 0.084640 0.256171 0.260495
+v -0.084640 0.256171 0.260495
+v -0.221590 0.256171 0.160995
+v -0.273900 0.256171 0.000000
+v -0.221590 0.256171 -0.160994
+v -0.084640 0.256171 -0.260495
+v 0.084640 0.256171 -0.260495
+v 0.221590 0.256171 -0.160995
+v 0.119500 0.253981 -0.000000
+v 0.119500 0.320332 -0.000000
+v 0.096678 0.253981 0.070240
+v 0.096678 0.320332 0.070240
+v 0.036928 0.253981 0.113651
+v 0.036928 0.320332 0.113651
+v -0.036928 0.253981 0.113651
+v -0.036928 0.320332 0.113651
+v -0.096678 0.253981 0.070240
+v -0.096678 0.320332 0.070240
+v -0.119500 0.253981 0.000000
+v -0.119500 0.320332 0.000000
+v -0.096678 0.253981 -0.070240
+v -0.096678 0.320332 -0.070240
+v -0.036928 0.253981 -0.113651
+v -0.036928 0.320332 -0.113651
+v 0.036928 0.253981 -0.113651
+v 0.036928 0.320332 -0.113651
+v 0.096678 0.253981 -0.070240
+v 0.096678 0.320332 -0.070240
+v 0.273799 0.336504 -0.000000
+v 0.221508 0.336504 -0.160935
+v 0.084609 0.336504 -0.260398
+v -0.084609 0.336504 -0.260398
+v 0.221508 0.336504 0.160935
+v 0.117966 0.317873 -0.000000
+v 0.095436 0.317873 0.069338
+v 0.036453 0.317873 0.112192
+v -0.036453 0.317873 0.112192
+v -0.095436 0.317873 0.069339
+v -0.117966 0.317873 0.000000
+v -0.095436 0.317873 -0.069338
+v -0.036453 0.317873 -0.112192
+v 0.036453 0.317873 -0.112192
+v 0.095436 0.317873 -0.069338
+v 0.190983 0.325972 -0.062054
+v 0.118034 0.325972 -0.162460
+v -0.000000 0.325972 -0.200811
+v -0.118034 0.325971 -0.162460
+v -0.190983 0.325972 -0.062054
+v -0.190983 0.325972 0.062054
+v -0.118034 0.325972 0.162460
+v 0.000000 0.325971 0.200811
+v 0.190983 0.325972 0.062054
+v 0.118034 0.325972 0.162460
+v -0.220928 0.336504 0.160514
+v -0.273082 0.336504 0.000000
+v -0.220928 0.336504 -0.160514
+v -0.084387 0.336504 -0.259717
+v 0.084387 0.336504 -0.259717
+v 0.273061 0.256171 -0.000000
+v 0.220911 0.256171 -0.160501
+v 0.084381 0.256171 -0.259697
+v -0.084381 0.256171 -0.259697
+v -0.220911 0.256171 -0.160502
+v -0.273061 0.256171 0.000000
+v -0.220911 0.256171 0.160502
+v -0.084381 0.256171 0.259697
+v 0.084381 0.256171 0.259697
+v 0.220911 0.256171 0.160502
+v 0.272961 0.336504 -0.000000
+v 0.220830 0.336504 0.160442
+v 0.084350 0.336504 0.259601
+v -0.084349 0.336504 0.259601
+v 0.220830 0.336504 -0.160442
+v -0.220152 0.336504 0.159950
+v -0.272123 0.336504 0.000000
+v -0.220152 0.336504 -0.159950
+v -0.084091 0.336504 -0.258804
+v 0.084091 0.336504 -0.258804
+v 0.272102 0.256171 -0.000000
+v 0.220135 0.256171 -0.159938
+v 0.084084 0.256171 -0.258785
+v -0.084084 0.256171 -0.258785
+v -0.220135 0.256171 -0.159938
+v -0.272102 0.256171 0.000000
+v -0.220135 0.256171 0.159938
+v -0.084084 0.256171 0.258785
+v 0.084084 0.256171 0.258785
+v 0.220135 0.256171 0.159938
+v 0.272002 0.336504 -0.000000
+v 0.220054 0.336504 0.159879
+v 0.084053 0.336504 0.258689
+v -0.084053 0.336504 0.258689
+v 0.220054 0.336504 -0.159879
+v -0.219464 0.336504 -0.159450
+v -0.271273 0.336504 0.000000
+v -0.219464 0.336504 0.159450
+v -0.083828 0.336504 0.257996
+v 0.083828 0.336504 0.257996
+v 0.271252 0.256171 -0.000000
+v 0.219447 0.256171 0.159438
+v 0.083822 0.256171 0.257976
+v -0.083821 0.256171 0.257976
+v -0.219447 0.256171 0.159438
+v -0.271252 0.256171 0.000000
+v -0.219447 0.256171 -0.159438
+v -0.083822 0.256171 -0.257976
+v 0.083821 0.256171 -0.257976
+v 0.219447 0.256171 -0.159438
+v 0.271152 0.336504 -0.000000
+v 0.219366 0.336504 -0.159379
+v 0.083790 0.336504 -0.257881
+v -0.083791 0.336504 -0.257881
+v 0.219366 0.336504 0.159379
+v 0.000000 -0.060385 0.089254
+v -0.052462 -0.060385 0.072208
+v -0.084886 -0.060385 0.027581
+v -0.084886 -0.060385 -0.027581
+v -0.052462 -0.060385 -0.072208
+v -0.000000 -0.060385 -0.089254
+v 0.084886 -0.060385 -0.027581
+v 0.084886 -0.060385 0.027581
+v 0.052462 -0.060385 -0.072208
+v 0.052462 -0.060385 0.072208
+v 0.052462 -0.151808 0.072208
+v 0.052462 -0.151808 -0.072208
+v 0.084886 -0.151808 0.027581
+v 0.084886 -0.151808 -0.027581
+v -0.000000 -0.151808 -0.089254
+v -0.052462 -0.151808 -0.072208
+v -0.084886 -0.151808 -0.027581
+v -0.084886 -0.151808 0.027581
+v -0.052462 -0.151808 0.072208
+v 0.000000 -0.151808 0.089254
+v 0.131780 0.142064 -0.181380
+v 0.213225 0.142064 -0.069281
+v -0.000000 0.142064 -0.224198
+v -0.131780 0.142064 -0.181380
+v -0.213225 0.142064 -0.069281
+v -0.213225 0.142064 0.069281
+v -0.131780 0.142064 0.181380
+v 0.000000 0.142064 0.224198
+v 0.131780 0.142064 0.181380
+v 0.213225 0.142064 0.069281
+vt 0.500000 0.750000
+vt 0.595671 0.730970
+vt 0.500000 0.500000
+vt 0.437500 0.000000
+vt 0.437500 0.250000
+vt 0.375000 0.250000
+vt 0.375000 0.000000
+vt 0.312500 0.250000
+vt 0.312500 0.000000
+vt 0.250000 0.250000
+vt 0.250000 0.000000
+vt 0.187500 0.250000
+vt 0.187500 0.000000
+vt 0.125000 0.250000
+vt 0.125000 0.000000
+vt 0.062500 0.250000
+vt 0.062500 0.000000
+vt 0.000000 0.250000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.000000
+vt 0.875000 0.250000
+vt 0.875000 0.000000
+vt 0.812500 0.250000
+vt 0.812500 0.000000
+vt 0.750000 0.250000
+vt 0.750000 0.000000
+vt 0.687500 0.250000
+vt 0.687500 0.000000
+vt 0.625000 0.250000
+vt 0.625000 0.000000
+vt 0.562500 0.250000
+vt 0.562500 0.000000
+vt 0.500000 0.000000
+vt 0.500000 0.250000
+vt 0.676777 0.676777
+vt 0.500000 0.733134
+vt 0.589216 0.715388
+vt 0.664850 0.664850
+vt 0.715388 0.589216
+vt 0.730970 0.595671
+vt 0.733134 0.500000
+vt 0.750000 0.500000
+vt 0.715388 0.410784
+vt 0.730970 0.404329
+vt 0.664850 0.335149
+vt 0.676777 0.323223
+vt 0.589216 0.284612
+vt 0.595671 0.269030
+vt 0.500000 0.266866
+vt 0.410784 0.284612
+vt 0.404329 0.269030
+vt 0.335150 0.335149
+vt 0.323223 0.323223
+vt 0.284612 0.410784
+vt 0.269030 0.404329
+vt 0.266866 0.500000
+vt 0.250000 0.500000
+vt 0.284612 0.589217
+vt 0.269030 0.595671
+vt 0.335150 0.664851
+vt 0.323223 0.676777
+vt 0.404329 0.730970
+vt 0.410784 0.715388
+vt 0.875000 0.500000
+vt 0.812500 0.389311
+vt 0.250000 0.875000
+vt 0.250000 1.000000
+vt 0.125000 1.000000
+vt 0.125000 0.875000
+vt 0.875000 0.750000
+vt 0.750000 0.750000
+vt 0.687500 0.389311
+vt -0.000000 1.000000
+vt -0.000000 0.875000
+vt 1.000000 0.500000
+vt 1.000000 0.750000
+vt 0.625000 0.500000
+vt 0.562500 0.389311
+vt 1.000000 0.875000
+vt 1.000000 1.000000
+vt 0.875000 1.000000
+vt 0.875000 0.875000
+vt 0.625000 0.750000
+vt 0.437500 0.389311
+vt 0.750000 1.000000
+vt 0.750000 0.875000
+vt 0.375000 0.750000
+vt 0.375000 0.500000
+vt 0.312500 0.389311
+vt 0.625000 1.000000
+vt 0.625000 0.875000
+vt 0.250000 0.750000
+vt 0.125000 0.500000
+vt 0.062500 0.389311
+vt 0.500000 1.000000
+vt 0.500000 0.875000
+vt 0.125000 0.750000
+vt -0.000000 0.750000
+vt -0.000000 0.500000
+vt 0.187500 0.389311
+vt 0.375000 1.000000
+vt 0.375000 0.875000
+vt 0.125000 0.062500
+vt 0.062500 0.145516
+vt 0.500000 0.998244
+vt 0.572441 0.974707
+vt 0.617212 0.913084
+vt 0.617212 0.836916
+vt 0.572441 0.775293
+vt 0.500000 0.751756
+vt 0.427559 0.775293
+vt 0.382788 0.836916
+vt 0.382788 0.913085
+vt 0.427559 0.974707
+vt 0.062500 0.823443
+vt 0.312500 0.823443
+vt 0.437500 0.823443
+vt 0.562500 0.823443
+vt 0.687500 0.823443
+vt 0.812500 0.823443
+vt 0.937500 0.823443
+vt 0.187500 0.823443
+vt -0.000000 0.062500
+vt 0.250000 0.062500
+vt 0.375000 0.062500
+vt 0.500000 0.062500
+vt 0.625000 0.062500
+vt 0.750000 0.062500
+vt 0.875000 0.062500
+vt 0.187500 0.145516
+vt 0.312500 0.145516
+vt 0.437500 0.145516
+vt 0.562500 0.145516
+vt 0.687500 0.145516
+vt 0.812500 0.145516
+vt 1.000000 0.062500
+vt 0.937500 0.145516
+vt 0.937500 0.389311
+vt 0.250000 0.125000
+vt 0.125000 0.125000
+vt -0.000000 0.125000
+vt 1.000000 0.125000
+vt 0.875000 0.125000
+vt 0.750000 0.125000
+vt 0.625000 0.125000
+vt 0.500000 0.125000
+vt 0.375000 0.125000
+vt 0.617946 0.662339
+vt 0.500000 0.700662
+vt 0.382054 0.662339
+vt 0.309159 0.562008
+vt 0.309159 0.437992
+vt 0.382054 0.337661
+vt 0.500000 0.299338
+vt 0.617946 0.337661
+vt 0.690840 0.437992
+vt 0.690840 0.562008
+vt 0.625000 0.646142
+vt 0.375000 0.646142
+vt 0.125000 0.646142
+vt 0.875000 0.896142
+vt 0.625000 0.896142
+vt 0.375000 0.896142
+vt 0.125000 0.896142
+vt 0.125000 0.396142
+vt 0.375000 0.396142
+vt 0.875000 0.646142
+vt 0.250000 0.320312
+vt 0.125000 0.320312
+vt 1.000000 0.320312
+vt 0.875000 0.320312
+vt 0.750000 0.320312
+vt 0.625000 0.320312
+vt 0.500000 0.320312
+vt 0.375000 0.320312
+vt 0.000000 0.320312
+vt 0.875000 0.445312
+vt 0.812500 0.469977
+vt 0.750000 0.445312
+vt 0.687500 0.469977
+vt 0.625000 0.445312
+vt 0.562500 0.469977
+vt 0.500000 0.445312
+vt 0.437500 0.469977
+vt 0.375000 0.445312
+vt 0.312500 0.469977
+vt 0.250000 0.445312
+vt 0.187500 0.469977
+vt 0.125000 0.445312
+vt 0.062500 0.469977
+vt 1.000000 0.445312
+vt 0.937500 0.469977
+vt 1.000000 0.375000
+vt 0.937500 0.407722
+vt 0.875000 0.375000
+vt 0.812500 0.407722
+vt 0.750000 0.375000
+vt 0.687500 0.407722
+vt 0.625000 0.375000
+vt 0.562500 0.407722
+vt 0.500000 0.375000
+vt 0.437500 0.407722
+vt 0.375000 0.375000
+vt 0.312500 0.407722
+vt 0.250000 0.375000
+vt 0.187500 0.407722
+vt 0.125000 0.375000
+vt 0.062500 0.407722
+vt 0.937500 0.347077
+vt 0.537472 0.537472
+vt 0.520280 0.548959
+vt 0.548959 0.520280
+vt 0.552993 0.500000
+vt 0.548959 0.479721
+vt 0.537472 0.462529
+vt 0.520280 0.451041
+vt 0.500000 0.447008
+vt 0.479721 0.451041
+vt 0.462529 0.462529
+vt 0.451041 0.479721
+vt 0.447007 0.500000
+vt 0.451041 0.520280
+vt 0.462529 0.537472
+vt 0.479721 0.548959
+vt 0.500000 0.552993
+vt 0.812500 0.347077
+vt 0.687500 0.347077
+vt 0.562500 0.347077
+vt 0.437500 0.347077
+vt 0.312500 0.347077
+vt 0.187500 0.347077
+vt 0.062500 0.347077
+vt 0.378156 0.621844
+vt 0.434059 0.659197
+vt 0.500000 0.672314
+vt 0.340803 0.565942
+vt 0.327687 0.500000
+vt 0.340803 0.434059
+vt 0.378156 0.378156
+vt 0.434059 0.340803
+vt 0.500000 0.327687
+vt 0.565942 0.340803
+vt 0.621844 0.378156
+vt 0.659197 0.434059
+vt 0.672314 0.500000
+vt 0.659197 0.565942
+vt 0.621844 0.621844
+vt 0.565942 0.659197
+vt 0.000000 0.445312
+vt 0.000000 0.375000
+g nixie_Cylinder.009_base
+s 1
+f 1/1 2/2 18/3
+f 1/4 34/5 19/6 2/7
+f 2/7 19/6 20/8 3/9
+f 3/9 20/8 21/10 4/11
+f 4/11 21/10 22/12 5/13
+f 5/13 22/12 23/14 6/15
+f 6/15 23/14 24/16 7/17
+f 7/17 24/16 25/18 8/19
+f 8/20 25/21 26/22 9/23
+f 9/23 26/22 27/24 10/25
+f 10/25 27/24 28/26 11/27
+f 11/27 28/26 29/28 12/29
+f 12/29 29/28 30/30 13/31
+f 13/31 30/30 31/32 14/33
+f 14/33 31/32 32/34 15/35
+f 16/36 33/37 34/5 1/4
+f 15/35 32/34 33/37 16/36
+f 2/2 3/38 18/3
+f 34/1 35/39 36/40 19/2
+f 19/2 36/40 37/41 20/38
+f 20/38 37/41 38/42 21/43
+f 21/43 38/42 39/44 22/45
+f 22/45 39/44 40/46 23/47
+f 23/47 40/46 41/48 24/49
+f 24/49 41/48 42/50 25/51
+f 25/51 42/50 43/52 26/37
+f 26/37 43/52 44/53 27/54
+f 27/54 44/53 45/55 28/56
+f 28/56 45/55 46/57 29/58
+f 29/58 46/57 47/59 30/60
+f 30/60 47/59 48/61 31/62
+f 31/62 48/61 49/63 32/64
+f 33/65 50/66 35/39 34/1
+f 32/64 49/63 50/66 33/65
+f 3/38 4/43 18/3
+f 4/43 5/45 18/3
+f 5/45 6/47 18/3
+f 6/47 7/49 18/3
+f 7/49 8/51 18/3
+f 8/51 9/37 18/3
+f 9/37 10/54 18/3
+f 10/54 11/56 18/3
+f 11/56 12/58 18/3
+f 12/58 13/60 18/3
+f 13/60 14/62 18/3
+f 14/62 15/64 18/3
+f 15/64 16/65 18/3
+f 16/65 1/1 18/3
+f 50/66 35/39 17/3
+f 35/39 36/40 17/3
+f 36/40 37/41 17/3
+f 37/41 38/42 17/3
+f 38/42 39/44 17/3
+f 39/44 40/46 17/3
+f 40/46 41/48 17/3
+f 41/48 42/50 17/3
+f 42/50 43/52 17/3
+f 43/52 44/53 17/3
+f 44/53 45/55 17/3
+f 45/55 46/57 17/3
+f 46/57 47/59 17/3
+f 47/59 48/61 17/3
+f 48/61 49/63 17/3
+f 49/63 50/66 17/3
+g nixie_Cylinder.009_internals
+f 259/24 219/67 387/68
+f 236/69 199/70 201/71 245/72
+f 219/67 233/73 232/74 220/45
+f 260/28 220/45 388/75
+f 245/72 201/71 203/76 244/77
+f 218/78 234/79 233/73 219/67
+f 261/32 221/80 389/81
+f 244/82 203/83 205/84 243/85
+f 221/80 231/86 230/1 222/3
+f 262/37 222/3 390/87
+f 243/85 205/84 207/88 242/89
+f 222/3 230/1 229/90 223/91
+f 263/6 223/91 391/92
+f 242/89 207/88 209/93 241/94
+f 223/91 229/90 227/95 224/60
+f 265/14 225/96 392/97
+f 241/94 209/93 211/98 240/99
+f 225/96 226/100 228/101 197/102
+f 256/10 197/60 393/103
+f 240/99 211/98 213/104 239/105
+f 264/10 224/60 394/103
+f 257/14 196/96 395/97
+f 239/105 213/104 215/70 238/69
+f 201/19 199/19 217/19 215/19 213/19 211/19 209/19 207/19 205/19 203/19
+f 237/72 217/71 199/76 236/77
+f 238/69 215/70 217/71 237/72
+f 224/60 227/95 226/100 225/96
+f 246/106 257/14 396/107
+f 198/108 200/109 202/110 204/111 206/112 208/113 210/114 212/115 214/116 216/117
+f 220/45 232/74 231/86 221/80
+f 196/96 235/100 234/101 218/102
+f 226/100 237/72 407/118
+f 229/90 239/105 408/119
+f 230/1 240/99 409/120
+f 231/86 241/94 410/121
+f 232/74 242/89 411/122
+f 233/73 243/85 412/123
+f 234/79 244/82 413/124
+f 235/100 245/72 414/118
+f 228/95 236/69 415/125
+f 197/60 228/95 235/100 196/96
+f 200/15 246/106 247/126 202/19
+f 214/11 253/127 255/106 216/15
+f 198/11 254/127 246/106 200/15
+f 216/15 255/106 254/126 198/19
+f 212/7 252/128 253/127 214/11
+f 210/36 251/129 252/128 212/7
+f 208/33 250/130 251/129 210/36
+f 206/29 249/131 250/130 208/33
+f 204/25 248/132 249/131 206/29
+f 253/127 264/10 397/133
+f 254/127 256/10 398/133
+f 255/106 265/14 399/107
+f 252/128 263/6 400/134
+f 251/129 262/37 401/135
+f 250/130 261/32 402/136
+f 249/131 260/28 403/137
+f 248/132 259/24 404/138
+f 247/139 258/21 405/140
+f 227/95 238/69 406/125
+f 202/20 247/139 248/132 204/25
+f 258/21 218/78 386/141
+f 218/78 219/67 386/141
+f 219/67 259/24 386/141
+f 259/24 258/21 386/141
+f 219/67 220/45 387/68
+f 220/45 260/28 387/68
+f 260/28 259/24 387/68
+f 220/45 221/80 388/75
+f 221/80 261/32 388/75
+f 261/32 260/28 388/75
+f 221/80 222/3 389/81
+f 222/3 262/37 389/81
+f 262/37 261/32 389/81
+f 222/3 223/91 390/87
+f 223/91 263/6 390/87
+f 263/6 262/37 390/87
+f 223/91 224/60 391/92
+f 224/60 264/10 391/92
+f 264/10 263/6 391/92
+f 225/96 197/102 392/97
+f 197/102 256/18 392/97
+f 256/18 265/14 392/97
+f 197/60 196/96 393/103
+f 196/96 257/14 393/103
+f 257/14 256/10 393/103
+f 224/60 225/96 394/103
+f 225/96 265/14 394/103
+f 265/14 264/10 394/103
+f 196/96 218/102 395/97
+f 218/102 258/18 395/97
+f 258/18 257/14 395/97
+f 257/14 258/18 396/107
+f 258/18 247/126 396/107
+f 247/126 246/106 396/107
+f 264/10 265/14 397/133
+f 265/14 255/106 397/133
+f 255/106 253/127 397/133
+f 256/10 257/14 398/133
+f 257/14 246/106 398/133
+f 246/106 254/127 398/133
+f 265/14 256/18 399/107
+f 256/18 254/126 399/107
+f 254/126 255/106 399/107
+f 263/6 264/10 400/134
+f 264/10 253/127 400/134
+f 253/127 252/128 400/134
+f 262/37 263/6 401/135
+f 263/6 252/128 401/135
+f 252/128 251/129 401/135
+f 261/32 262/37 402/136
+f 262/37 251/129 402/136
+f 251/129 250/130 402/136
+f 260/28 261/32 403/137
+f 261/32 250/130 403/137
+f 250/130 249/131 403/137
+f 259/24 260/28 404/138
+f 260/28 249/131 404/138
+f 249/131 248/132 404/138
+f 258/21 259/24 405/140
+f 259/24 248/132 405/140
+f 248/132 247/139 405/140
+f 238/69 237/72 406/125
+f 237/72 226/100 406/125
+f 226/100 227/95 406/125
+f 237/72 236/77 407/118
+f 236/77 228/101 407/118
+f 228/101 226/100 407/118
+f 239/105 238/69 408/119
+f 238/69 227/95 408/119
+f 227/95 229/90 408/119
+f 240/99 239/105 409/120
+f 239/105 229/90 409/120
+f 229/90 230/1 409/120
+f 241/94 240/99 410/121
+f 240/99 230/1 410/121
+f 230/1 231/86 410/121
+f 242/89 241/94 411/122
+f 241/94 231/86 411/122
+f 231/86 232/74 411/122
+f 243/85 242/89 412/123
+f 242/89 232/74 412/123
+f 232/74 233/73 412/123
+f 244/82 243/85 413/124
+f 243/85 233/73 413/124
+f 233/73 234/79 413/124
+f 245/72 244/77 414/118
+f 244/77 234/101 414/118
+f 234/101 235/100 414/118
+f 236/69 245/72 415/125
+f 245/72 235/100 415/125
+f 235/100 228/95 415/125
+g nixie_Cylinder.009_anode
+f 281/142 282/10 284/14 283/143
+f 283/143 284/14 286/18 285/144
+f 285/20 286/145 288/146 287/25
+f 287/25 288/146 290/147 289/29
+f 289/29 290/147 292/148 291/33
+f 291/33 292/148 294/149 293/36
+f 293/36 294/149 296/150 295/7
+f 295/7 296/150 298/142 297/11
+f 284/151 282/152 300/153 298/154 296/155 294/156 292/157 290/158 288/159 286/160
+f 299/15 300/143 282/144 281/19
+f 297/11 298/142 300/143 299/15
+g nixie_Cylinder.009_cathode-pins
+f 337/79 326/83 327/88 336/74
+f 336/74 327/88 328/98 335/1
+f 335/1 328/98 329/70 334/95
+f 334/95 329/70 330/76 333/101
+f 331/78 341/79 342/74 340/45
+f 340/45 342/74 343/1 339/3
+f 339/3 343/1 344/95 338/60
+f 338/60 344/95 326/101 337/102
+f 332/10 345/60 341/102 331/18
+f 333/37 330/3 345/60 332/10
+f 357/79 356/74 347/88 346/83
+f 356/74 355/1 348/98 347/88
+f 355/1 354/95 349/70 348/98
+f 354/95 353/101 350/76 349/70
+f 351/78 360/45 362/74 361/79
+f 360/45 359/3 363/1 362/74
+f 359/3 358/60 364/95 363/1
+f 358/60 357/102 346/101 364/95
+f 352/10 351/18 361/102 365/60
+f 353/37 352/10 365/60 350/3
+g nixie_Cylinder.009_cathode-lighting
+f 277/79 276/74 267/88 266/83
+f 276/74 275/1 268/98 267/88
+f 275/1 274/95 269/70 268/98
+f 274/95 273/101 270/76 269/70
+f 315/45 317/161 314/3
+f 314/3 318/162 313/60
+f 313/60 319/163 312/102
+f 312/79 320/164 311/74
+f 311/74 321/165 310/1
+f 310/1 322/166 309/95
+f 309/95 323/167 308/101
+f 307/10 324/168 306/18
+f 308/37 325/169 307/10
+f 306/78 316/170 315/45
+f 315/45 316/170 302/74
+f 302/74 316/170 301/79
+f 301/79 316/170 306/78
+f 314/3 317/161 303/1
+f 303/1 317/161 302/74
+f 302/74 317/161 315/45
+f 313/60 318/162 304/95
+f 304/95 318/162 303/1
+f 303/1 318/162 314/3
+f 304/95 319/163 313/60
+f 306/18 324/168 301/102
+f 301/102 324/168 305/60
+f 305/60 324/168 307/10
+f 307/10 325/169 305/60
+f 271/78 280/45 302/74 301/79
+f 280/45 279/3 303/1 302/74
+f 279/3 278/60 304/95 303/1
+f 278/60 277/102 266/101 304/95
+f 272/10 271/18 301/102 305/60
+f 273/37 272/10 305/60 270/3
+f 312/102 319/163 266/101
+f 266/101 319/163 304/95
+f 311/74 320/164 267/88
+f 267/88 320/164 266/83
+f 266/83 320/164 312/79
+f 310/1 321/165 268/98
+f 268/98 321/165 267/88
+f 267/88 321/165 311/74
+f 309/95 322/166 269/70
+f 269/70 322/166 268/98
+f 268/98 322/166 310/1
+f 308/101 323/167 270/76
+f 270/76 323/167 269/70
+f 269/70 323/167 309/95
+f 305/60 325/169 270/3
+f 270/3 325/169 308/37
+f 377/79 376/74 367/88 366/83
+f 376/74 375/1 368/98 367/88
+f 375/1 374/95 369/70 368/98
+f 374/95 373/101 370/76 369/70
+f 371/78 380/45 382/74 381/79
+f 380/45 379/3 383/1 382/74
+f 379/3 378/60 384/95 383/1
+f 378/60 377/102 366/101 384/95
+f 372/10 371/18 381/102 385/60
+f 373/37 372/10 385/60 370/3
+g nixie_Cylinder.009_glass
+f 68/171 67/172 116/15 117/11
+f 131/20 66/173 81/174 130/25
+f 81/174 80/175 129/29 130/25
+f 80/175 79/176 128/33 129/29
+f 79/176 78/177 127/36 128/33
+f 78/177 77/178 126/7 127/36
+f 77/178 76/171 125/11 126/7
+f 76/171 75/172 124/15 125/11
+f 75/172 74/179 123/19 124/15
+f 74/173 73/174 122/25 123/20
+f 73/174 72/175 121/29 122/25
+f 72/175 71/176 120/33 121/29
+f 71/176 70/177 119/36 120/33
+f 70/177 69/178 118/7 119/36
+f 69/178 68/171 117/11 118/7
+f 67/172 66/179 131/19 116/15
+f 65/180 133/67 149/181
+f 64/182 134/45 150/183
+f 63/184 135/80 151/185
+f 62/186 136/3 152/187
+f 61/188 137/91 153/189
+f 60/190 138/60 154/191
+f 59/192 139/96 155/193
+f 58/194 140/78 156/195
+f 57/180 141/67 157/181
+f 56/182 142/45 158/183
+f 55/184 143/80 159/185
+f 54/186 144/3 160/187
+f 53/188 145/91 161/189
+f 51/192 147/96 162/193
+f 52/190 146/60 163/191
+f 98/196 82/194 164/197
+f 97/198 65/180 165/199
+f 96/200 64/182 166/201
+f 95/202 63/184 167/203
+f 94/204 62/186 168/205
+f 93/206 61/188 169/207
+f 92/208 60/190 170/209
+f 91/210 59/192 171/211
+f 90/196 58/194 172/197
+f 89/198 57/180 173/199
+f 88/200 56/182 174/201
+f 87/202 55/184 175/203
+f 86/204 54/186 176/205
+f 85/206 53/188 177/207
+f 83/210 51/192 178/211
+f 84/208 52/190 179/209
+f 66/173 98/196 180/212
+f 113/213 114/214 99/3
+f 112/215 113/213 99/3
+f 111/216 112/215 99/3
+f 110/217 111/216 99/3
+f 109/218 110/217 99/3
+f 108/219 109/218 99/3
+f 107/220 108/219 99/3
+f 106/221 107/220 99/3
+f 105/222 106/221 99/3
+f 104/223 105/222 99/3
+f 103/224 104/223 99/3
+f 102/225 103/224 99/3
+f 101/226 102/225 99/3
+f 100/227 101/226 99/3
+f 115/228 100/227 99/3
+f 81/174 97/198 181/229
+f 80/175 96/200 182/230
+f 79/176 95/202 183/231
+f 78/177 94/204 184/232
+f 77/178 93/206 185/233
+f 76/171 92/208 186/234
+f 75/172 91/210 187/235
+f 74/173 90/196 188/212
+f 73/174 89/198 189/229
+f 72/175 88/200 190/230
+f 71/176 87/202 191/231
+f 70/177 86/204 192/232
+f 69/178 85/206 193/233
+f 67/172 83/210 194/235
+f 68/171 84/208 195/234
+f 114/214 115/228 99/3
+f 146/236 101/226 100/227 147/237
+f 147/237 100/227 115/228 132/238
+f 145/239 102/225 101/226 146/236
+f 144/240 103/224 102/225 145/239
+f 143/241 104/223 103/224 144/240
+f 142/242 105/222 104/223 143/241
+f 141/243 106/221 105/222 142/242
+f 140/244 107/220 106/221 141/243
+f 139/245 108/219 107/220 140/244
+f 138/246 109/218 108/219 139/245
+f 137/247 110/217 109/218 138/246
+f 136/248 111/216 110/217 137/247
+f 135/249 112/215 111/216 136/248
+f 134/250 113/213 112/215 135/249
+f 133/251 114/214 113/213 134/250
+f 132/238 115/228 114/214 133/251
+f 82/194 132/78 148/195
+f 132/78 133/67 148/195
+f 133/67 65/180 148/195
+f 65/180 82/194 148/195
+f 133/67 134/45 149/181
+f 134/45 64/182 149/181
+f 64/182 65/180 149/181
+f 134/45 135/80 150/183
+f 135/80 63/184 150/183
+f 63/184 64/182 150/183
+f 135/80 136/3 151/185
+f 136/3 62/186 151/185
+f 62/186 63/184 151/185
+f 136/3 137/91 152/187
+f 137/91 61/188 152/187
+f 61/188 62/186 152/187
+f 137/91 138/60 153/189
+f 138/60 60/190 153/189
+f 60/190 61/188 153/189
+f 138/60 139/96 154/191
+f 139/96 59/192 154/191
+f 59/192 60/190 154/191
+f 139/96 140/102 155/193
+f 140/102 58/252 155/193
+f 58/252 59/192 155/193
+f 140/78 141/67 156/195
+f 141/67 57/180 156/195
+f 57/180 58/194 156/195
+f 141/67 142/45 157/181
+f 142/45 56/182 157/181
+f 56/182 57/180 157/181
+f 142/45 143/80 158/183
+f 143/80 55/184 158/183
+f 55/184 56/182 158/183
+f 143/80 144/3 159/185
+f 144/3 54/186 159/185
+f 54/186 55/184 159/185
+f 144/3 145/91 160/187
+f 145/91 53/188 160/187
+f 53/188 54/186 160/187
+f 145/91 146/60 161/189
+f 146/60 52/190 161/189
+f 52/190 53/188 161/189
+f 147/96 132/102 162/193
+f 132/102 82/252 162/193
+f 82/252 51/192 162/193
+f 146/60 147/96 163/191
+f 147/96 51/192 163/191
+f 51/192 52/190 163/191
+f 82/194 65/180 164/197
+f 65/180 97/198 164/197
+f 97/198 98/196 164/197
+f 65/180 64/182 165/199
+f 64/182 96/200 165/199
+f 96/200 97/198 165/199
+f 64/182 63/184 166/201
+f 63/184 95/202 166/201
+f 95/202 96/200 166/201
+f 63/184 62/186 167/203
+f 62/186 94/204 167/203
+f 94/204 95/202 167/203
+f 62/186 61/188 168/205
+f 61/188 93/206 168/205
+f 93/206 94/204 168/205
+f 61/188 60/190 169/207
+f 60/190 92/208 169/207
+f 92/208 93/206 169/207
+f 60/190 59/192 170/209
+f 59/192 91/210 170/209
+f 91/210 92/208 170/209
+f 59/192 58/252 171/211
+f 58/252 90/253 171/211
+f 90/253 91/210 171/211
+f 58/194 57/180 172/197
+f 57/180 89/198 172/197
+f 89/198 90/196 172/197
+f 57/180 56/182 173/199
+f 56/182 88/200 173/199
+f 88/200 89/198 173/199
+f 56/182 55/184 174/201
+f 55/184 87/202 174/201
+f 87/202 88/200 174/201
+f 55/184 54/186 175/203
+f 54/186 86/204 175/203
+f 86/204 87/202 175/203
+f 54/186 53/188 176/205
+f 53/188 85/206 176/205
+f 85/206 86/204 176/205
+f 53/188 52/190 177/207
+f 52/190 84/208 177/207
+f 84/208 85/206 177/207
+f 51/192 82/252 178/211
+f 82/252 98/253 178/211
+f 98/253 83/210 178/211
+f 52/190 51/192 179/209
+f 51/192 83/210 179/209
+f 83/210 84/208 179/209
+f 98/196 97/198 180/212
+f 97/198 81/174 180/212
+f 81/174 66/173 180/212
+f 97/198 96/200 181/229
+f 96/200 80/175 181/229
+f 80/175 81/174 181/229
+f 96/200 95/202 182/230
+f 95/202 79/176 182/230
+f 79/176 80/175 182/230
+f 95/202 94/204 183/231
+f 94/204 78/177 183/231
+f 78/177 79/176 183/231
+f 94/204 93/206 184/232
+f 93/206 77/178 184/232
+f 77/178 78/177 184/232
+f 93/206 92/208 185/233
+f 92/208 76/171 185/233
+f 76/171 77/178 185/233
+f 92/208 91/210 186/234
+f 91/210 75/172 186/234
+f 75/172 76/171 186/234
+f 91/210 90/253 187/235
+f 90/253 74/179 187/235
+f 74/179 75/172 187/235
+f 90/196 89/198 188/212
+f 89/198 73/174 188/212
+f 73/174 74/173 188/212
+f 89/198 88/200 189/229
+f 88/200 72/175 189/229
+f 72/175 73/174 189/229
+f 88/200 87/202 190/230
+f 87/202 71/176 190/230
+f 71/176 72/175 190/230
+f 87/202 86/204 191/231
+f 86/204 70/177 191/231
+f 70/177 71/176 191/231
+f 86/204 85/206 192/232
+f 85/206 69/178 192/232
+f 69/178 70/177 192/232
+f 85/206 84/208 193/233
+f 84/208 68/171 193/233
+f 68/171 69/178 193/233
+f 83/210 98/253 194/235
+f 98/253 66/179 194/235
+f 66/179 67/172 194/235
+f 84/208 83/210 195/234
+f 83/210 67/172 195/234
+f 67/172 68/171 195/234
diff --git a/nixie_tubes/models/nixie_tube.obj b/nixie_tubes/models/nixie_tube.obj
new file mode 100644
index 0000000..e2d8f8d
--- /dev/null
+++ b/nixie_tubes/models/nixie_tube.obj
@@ -0,0 +1,712 @@
+# Blender v2.73 (sub 0) OBJ File: 'nixie.blend'
+# www.blender.org
+o nixie_Cylinder.009
+v 0.000000 -0.500000 -0.349999
+v 0.133939 -0.500000 -0.323357
+v 0.247486 -0.500000 -0.247486
+v 0.323357 -0.500000 -0.133939
+v 0.349999 -0.500000 0.000000
+v 0.323357 -0.500000 0.133939
+v 0.247486 -0.500000 0.247486
+v 0.133939 -0.500000 0.323357
+v 0.000000 -0.500000 0.349999
+v -0.133939 -0.500000 0.323357
+v -0.247486 -0.500000 0.247486
+v -0.323357 -0.500000 0.133939
+v -0.349999 -0.500000 -0.000000
+v -0.323357 -0.500000 -0.133939
+v -0.247486 -0.500000 -0.247486
+v -0.133938 -0.500000 -0.323357
+v 0.000000 -0.227297 0.000000
+v 0.000000 -0.500000 0.000000
+v 0.133939 -0.250001 -0.323357
+v 0.247486 -0.250001 -0.247486
+v 0.323357 -0.250001 -0.133939
+v 0.349999 -0.250001 0.000000
+v 0.323357 -0.250001 0.133939
+v 0.247486 -0.250001 0.247486
+v 0.133939 -0.250001 0.323357
+v 0.000000 -0.250001 0.349999
+v -0.133939 -0.250001 0.323357
+v -0.247486 -0.250001 0.247486
+v -0.323357 -0.250001 0.133939
+v -0.349999 -0.250001 -0.000000
+v -0.323357 -0.250001 -0.133939
+v -0.247486 -0.250001 -0.247486
+v -0.133938 -0.250001 -0.323357
+v 0.000000 -0.250001 -0.349999
+v 0.000000 -0.227297 -0.326386
+v 0.124903 -0.227297 -0.301541
+v 0.230790 -0.227297 -0.230790
+v 0.301541 -0.227297 -0.124903
+v 0.326386 -0.227297 0.000000
+v 0.301541 -0.227297 0.124903
+v 0.230790 -0.227297 0.230790
+v 0.124903 -0.227297 0.301541
+v 0.000000 -0.227297 0.326386
+v -0.124902 -0.227297 0.301541
+v -0.230790 -0.227297 0.230790
+v -0.301541 -0.227297 0.124903
+v -0.326386 -0.227297 0.000000
+v -0.301541 -0.227297 -0.124903
+v -0.230790 -0.227297 -0.230790
+v -0.124902 -0.227297 -0.301541
+v -0.086006 0.464059 -0.207637
+v -0.158918 0.464059 -0.158919
+v -0.207637 0.464059 -0.086006
+v -0.224745 0.464059 0.000000
+v -0.207637 0.464059 0.086006
+v -0.158918 0.464059 0.158919
+v -0.086006 0.464059 0.207637
+v 0.000000 0.464059 0.224745
+v 0.086006 0.464059 0.207637
+v 0.158919 0.464059 0.158918
+v 0.207637 0.464059 0.086006
+v 0.224745 0.464059 0.000000
+v 0.207637 0.464059 -0.086006
+v 0.158919 0.464059 -0.158918
+v 0.086006 0.464059 -0.207637
+v 0.000000 0.287854 -0.326386
+v -0.124902 0.287854 -0.301541
+v -0.230790 0.287854 -0.230790
+v -0.301541 0.287854 -0.124903
+v -0.326386 0.287854 0.000000
+v -0.301541 0.287854 0.124903
+v -0.230790 0.287854 0.230790
+v -0.124902 0.287854 0.301541
+v 0.000000 0.287854 0.326386
+v 0.124903 0.287854 0.301541
+v 0.230790 0.287854 0.230790
+v 0.301541 0.287854 0.124903
+v 0.326386 0.287854 0.000000
+v 0.301541 0.287854 -0.124903
+v 0.230790 0.287854 -0.230790
+v 0.124903 0.287854 -0.301541
+v 0.000000 0.464059 -0.224745
+v -0.116015 0.375956 -0.280086
+v -0.214368 0.375956 -0.214368
+v -0.280086 0.375956 -0.116015
+v -0.303163 0.375956 0.000000
+v -0.280086 0.375956 0.116015
+v -0.214368 0.375956 0.214368
+v -0.116015 0.375956 0.280086
+v 0.000000 0.375956 0.303163
+v 0.116015 0.375956 0.280086
+v 0.214368 0.375956 0.214368
+v 0.280086 0.375956 0.116015
+v 0.303163 0.375956 0.000000
+v 0.280086 0.375956 -0.116015
+v 0.214368 0.375956 -0.214368
+v 0.116015 0.375956 -0.280086
+v 0.000000 0.375956 -0.303163
+v 0.000000 0.499996 0.000000
+v -0.017349 0.499996 -0.041885
+v -0.032057 0.499996 -0.032057
+v -0.041885 0.499996 -0.017349
+v -0.045336 0.499996 0.000000
+v -0.041885 0.499996 0.017349
+v -0.032057 0.499996 0.032057
+v -0.017349 0.499996 0.041885
+v 0.000000 0.499996 0.045336
+v 0.017349 0.499996 0.041885
+v 0.032057 0.499996 0.032057
+v 0.041885 0.499996 0.017349
+v 0.045336 0.499996 0.000000
+v 0.041885 0.499996 -0.017349
+v 0.032057 0.499996 -0.032057
+v 0.017349 0.499996 -0.041885
+v 0.000000 0.499996 -0.045336
+v -0.124902 -0.227297 -0.301541
+v -0.230790 -0.227297 -0.230790
+v -0.301541 -0.227297 -0.124903
+v -0.326386 -0.227297 0.000000
+v -0.301541 -0.227297 0.124903
+v -0.230790 -0.227297 0.230790
+v -0.124902 -0.227297 0.301541
+v 0.000000 -0.227297 0.326386
+v 0.124903 -0.227297 0.301541
+v 0.230790 -0.227297 0.230790
+v 0.301541 -0.227297 0.124903
+v 0.326386 -0.227297 0.000000
+v 0.301541 -0.227297 -0.124903
+v 0.230790 -0.227297 -0.230790
+v 0.124903 -0.227297 -0.301541
+v 0.000000 -0.227297 -0.326386
+v 0.000000 0.489328 -0.147416
+v 0.056414 0.489328 -0.136194
+v 0.104239 0.489328 -0.104239
+v 0.136195 0.489328 -0.056414
+v 0.147416 0.489328 0.000000
+v 0.136195 0.489328 0.056414
+v 0.104239 0.489328 0.104239
+v 0.056414 0.489328 0.136194
+v 0.000000 0.489328 0.147416
+v -0.056414 0.489328 0.136195
+v -0.104239 0.489328 0.104239
+v -0.136194 0.489328 0.056414
+v -0.147416 0.489328 0.000000
+v -0.136194 0.489328 -0.056414
+v -0.104239 0.489328 -0.104239
+v -0.056414 0.489328 -0.136195
+v -0.224443 -0.231638 -0.000969
+v -0.224444 0.401803 -0.000969
+v 0.224447 -0.231638 -0.000969
+v 0.224447 0.401804 -0.000969
+v 0.000002 -0.231638 -0.123652
+v 0.000001 0.401804 -0.123652
+v -0.182487 -0.231638 -0.073743
+v 0.182490 0.401804 -0.073743
+v 0.182490 -0.231638 -0.073743
+v -0.182487 0.401804 -0.073743
+v -0.229076 -0.231638 -0.015446
+v 0.229079 0.401804 -0.015446
+v 0.124738 -0.231638 -0.102105
+v -0.124735 0.401804 -0.102105
+v -0.124735 -0.231638 -0.102105
+v 0.124738 0.401804 -0.102105
+v 0.229080 -0.231638 -0.015446
+v -0.229076 0.401803 -0.015446
+v 0.249582 0.401804 0.050941
+v 0.249582 -0.231638 0.050941
+v -0.249579 0.401803 0.050941
+v -0.249579 -0.231638 0.050941
+v 0.000002 -0.231638 -0.007523
+v 0.000001 0.401803 -0.007523
+v 0.036330 0.475456 -0.182642
+v 0.103459 0.475456 -0.154837
+v 0.154837 0.475456 -0.103459
+v 0.182643 0.475456 -0.036330
+v 0.182643 0.475456 0.036330
+v 0.154837 0.475456 0.103459
+v 0.103459 0.475456 0.154837
+v 0.036330 0.475456 0.182642
+v -0.036330 0.475456 0.182642
+v -0.103459 0.475456 0.154837
+v -0.154837 0.475456 0.103459
+v -0.182642 0.475456 0.036330
+v -0.182642 0.475456 -0.036330
+v -0.154837 0.475456 -0.103459
+v -0.036330 0.475456 -0.182642
+v -0.103459 0.475456 -0.154837
+v 0.051025 0.416957 -0.256519
+v 0.145306 0.416957 -0.217466
+v 0.217466 0.416957 -0.145306
+v 0.256519 0.416957 -0.051025
+v 0.256519 0.416957 0.051025
+v 0.217466 0.416957 0.145306
+v 0.145306 0.416957 0.217466
+v 0.051025 0.416957 0.256519
+v -0.051025 0.416957 0.256519
+v -0.145306 0.416957 0.217466
+v -0.217466 0.416957 0.145306
+v -0.256519 0.416957 0.051025
+v -0.256519 0.416957 -0.051025
+v -0.217466 0.416957 -0.145306
+v -0.051025 0.416957 -0.256519
+v -0.145306 0.416957 -0.217466
+v 0.060277 0.330972 -0.303030
+v 0.171653 0.330972 -0.256897
+v 0.256897 0.330972 -0.171653
+v 0.303030 0.330972 -0.060276
+v 0.303030 0.330972 0.060277
+v 0.256897 0.330972 0.171653
+v 0.171653 0.330972 0.256897
+v 0.060277 0.330972 0.303030
+v -0.060276 0.330972 0.303031
+v -0.171653 0.330972 0.256897
+v -0.256897 0.330972 0.171653
+v -0.303030 0.330972 0.060277
+v -0.303030 0.330972 -0.060277
+v -0.256897 0.330972 -0.171653
+v -0.060276 0.330972 -0.303031
+v -0.171653 0.330972 -0.256897
+vt 0.500000 0.750000
+vt 0.595671 0.730970
+vt 0.500000 0.500000
+vt 0.437500 0.000000
+vt 0.437500 0.250000
+vt 0.375000 0.250000
+vt 0.375000 0.000000
+vt 0.312500 0.250000
+vt 0.312500 0.000000
+vt 0.250000 0.250000
+vt 0.250000 0.000000
+vt 0.187500 0.250000
+vt 0.187500 0.000000
+vt 0.125000 0.250000
+vt 0.125000 0.000000
+vt 0.062500 0.250000
+vt 0.062500 0.000000
+vt 0.000000 0.250000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.000000
+vt 0.875000 0.250000
+vt 0.875000 0.000000
+vt 0.812500 0.250000
+vt 0.812500 0.000000
+vt 0.750000 0.250000
+vt 0.750000 0.000000
+vt 0.687500 0.250000
+vt 0.687500 0.000000
+vt 0.625000 0.250000
+vt 0.625000 0.000000
+vt 0.562500 0.250000
+vt 0.562500 0.000000
+vt 0.500000 0.000000
+vt 0.500000 0.250000
+vt 0.676777 0.676777
+vt 0.500000 0.733134
+vt 0.589216 0.715388
+vt 0.664850 0.664850
+vt 0.715388 0.589216
+vt 0.730970 0.595671
+vt 0.733134 0.500000
+vt 0.750000 0.500000
+vt 0.715388 0.410784
+vt 0.730970 0.404329
+vt 0.664850 0.335149
+vt 0.676777 0.323223
+vt 0.589216 0.284612
+vt 0.595671 0.269030
+vt 0.500000 0.266866
+vt 0.410784 0.284612
+vt 0.404329 0.269030
+vt 0.335150 0.335149
+vt 0.323223 0.323223
+vt 0.284612 0.410784
+vt 0.269030 0.404329
+vt 0.266866 0.500000
+vt 0.250000 0.500000
+vt 0.284612 0.589217
+vt 0.269030 0.595671
+vt 0.335150 0.664851
+vt 0.323223 0.676777
+vt 0.404329 0.730970
+vt 0.410784 0.715388
+vt 0.000000 1.000000
+vt 1.000000 1.000000
+vt 0.500000 1.000000
+vt 0.093750 1.000000
+vt 0.093750 0.000000
+vt 0.906250 0.000000
+vt 0.906250 1.000000
+vt 0.718750 0.000000
+vt 0.718750 1.000000
+vt 0.812500 1.000000
+vt 0.312500 1.000000
+vt 0.218750 1.000000
+vt 0.218750 0.000000
+vt 0.125000 1.000000
+vt 0.250000 0.320312
+vt 0.125000 0.320312
+vt 1.000000 0.320312
+vt 0.875000 0.320312
+vt 0.750000 0.320312
+vt 0.625000 0.320312
+vt 0.500000 0.320312
+vt 0.375000 0.320312
+vt 0.000000 0.320312
+vt 0.875000 0.445312
+vt 0.875000 0.500000
+vt 0.812500 0.469977
+vt 0.750000 0.445312
+vt 0.687500 0.469977
+vt 0.625000 0.445312
+vt 0.625000 0.500000
+vt 0.562500 0.469977
+vt 0.500000 0.445312
+vt 0.437500 0.469977
+vt 0.375000 0.445312
+vt 0.375000 0.500000
+vt 0.312500 0.469977
+vt 0.250000 0.445312
+vt 0.187500 0.469977
+vt 0.125000 0.445312
+vt 0.125000 0.500000
+vt 0.062500 0.469977
+vt 1.000000 0.445312
+vt 1.000000 0.500000
+vt 0.937500 0.469977
+vt 1.000000 0.375000
+vt 0.937500 0.407722
+vt 0.875000 0.375000
+vt 0.812500 0.407722
+vt 0.750000 0.375000
+vt 0.687500 0.407722
+vt 0.625000 0.375000
+vt 0.562500 0.407722
+vt 0.500000 0.375000
+vt 0.437500 0.407722
+vt 0.375000 0.375000
+vt 0.312500 0.407722
+vt 0.250000 0.375000
+vt 0.187500 0.407722
+vt 0.125000 0.375000
+vt 0.062500 0.407722
+vt 0.937500 0.347077
+vt 0.537472 0.537472
+vt 0.520280 0.548959
+vt 0.548959 0.520280
+vt 0.552993 0.500000
+vt 0.548959 0.479721
+vt 0.537472 0.462529
+vt 0.520280 0.451041
+vt 0.500000 0.447008
+vt 0.479721 0.451041
+vt 0.462529 0.462529
+vt 0.451041 0.479721
+vt 0.447007 0.500000
+vt 0.451041 0.520280
+vt 0.462529 0.537472
+vt 0.479721 0.548959
+vt 0.500000 0.552993
+vt 0.812500 0.347077
+vt 0.687500 0.347077
+vt 0.562500 0.347077
+vt 0.437500 0.347077
+vt 0.312500 0.347077
+vt 0.187500 0.347077
+vt 0.062500 0.347077
+vt 0.378156 0.621844
+vt 0.434059 0.659197
+vt 0.500000 0.672314
+vt 0.340803 0.565942
+vt 0.327687 0.500000
+vt 0.340803 0.434059
+vt 0.378156 0.378156
+vt 0.434059 0.340803
+vt 0.500000 0.327687
+vt 0.565942 0.340803
+vt 0.621844 0.378156
+vt 0.659197 0.434059
+vt 0.672314 0.500000
+vt 0.659197 0.565942
+vt 0.621844 0.621844
+vt 0.565942 0.659197
+vt 0.000000 0.500000
+vt 0.000000 0.445312
+vt 0.000000 0.375000
+g nixie_Cylinder.009_base
+s 1
+f 1/1 2/2 18/3
+f 1/4 34/5 19/6 2/7
+f 2/7 19/6 20/8 3/9
+f 3/9 20/8 21/10 4/11
+f 4/11 21/10 22/12 5/13
+f 5/13 22/12 23/14 6/15
+f 6/15 23/14 24/16 7/17
+f 7/17 24/16 25/18 8/19
+f 8/20 25/21 26/22 9/23
+f 9/23 26/22 27/24 10/25
+f 10/25 27/24 28/26 11/27
+f 11/27 28/26 29/28 12/29
+f 12/29 29/28 30/30 13/31
+f 13/31 30/30 31/32 14/33
+f 14/33 31/32 32/34 15/35
+f 16/36 33/37 34/5 1/4
+f 15/35 32/34 33/37 16/36
+f 2/2 3/38 18/3
+f 34/1 35/39 36/40 19/2
+f 19/2 36/40 37/41 20/38
+f 20/38 37/41 38/42 21/43
+f 21/43 38/42 39/44 22/45
+f 22/45 39/44 40/46 23/47
+f 23/47 40/46 41/48 24/49
+f 24/49 41/48 42/50 25/51
+f 25/51 42/50 43/52 26/37
+f 26/37 43/52 44/53 27/54
+f 27/54 44/53 45/55 28/56
+f 28/56 45/55 46/57 29/58
+f 29/58 46/57 47/59 30/60
+f 30/60 47/59 48/61 31/62
+f 31/62 48/61 49/63 32/64
+f 33/65 50/66 35/39 34/1
+f 32/64 49/63 50/66 33/65
+f 3/38 4/43 18/3
+f 4/43 5/45 18/3
+f 5/45 6/47 18/3
+f 6/47 7/49 18/3
+f 7/49 8/51 18/3
+f 8/51 9/37 18/3
+f 9/37 10/54 18/3
+f 10/54 11/56 18/3
+f 11/56 12/58 18/3
+f 12/58 13/60 18/3
+f 13/60 14/62 18/3
+f 14/62 15/64 18/3
+f 15/64 16/65 18/3
+f 16/65 1/1 18/3
+f 50/66 35/39 17/3
+f 35/39 36/40 17/3
+f 36/40 37/41 17/3
+f 37/41 38/42 17/3
+f 38/42 39/44 17/3
+f 39/44 40/46 17/3
+f 40/46 41/48 17/3
+f 41/48 42/50 17/3
+f 42/50 43/52 17/3
+f 43/52 44/53 17/3
+f 44/53 45/55 17/3
+f 45/55 46/57 17/3
+f 46/57 47/59 17/3
+f 47/59 48/61 17/3
+f 48/61 49/63 17/3
+f 49/63 50/66 17/3
+g nixie_Cylinder.009_backing
+f 169/67 168/68 166/20 167/19
+g nixie_Cylinder.009_cathode
+f 170/36 171/69 151/70 150/71
+f 148/72 149/73 171/69 170/36
+g nixie_Cylinder.009_anode
+f 162/74 161/75 153/69 152/36
+f 158/72 165/73 157/76 154/27
+f 160/9 163/77 155/78 156/79
+f 152/36 153/69 163/77 160/9
+f 154/27 157/76 161/75 162/74
+f 156/79 155/78 159/80 164/15
+f 164/15 159/80 166/67 167/19
+f 169/20 168/68 165/73 158/72
+g nixie_Cylinder.009_glass
+f 68/81 67/82 116/15 117/11
+f 131/20 66/83 81/84 130/25
+f 81/84 80/85 129/29 130/25
+f 80/85 79/86 128/33 129/29
+f 79/86 78/87 127/36 128/33
+f 78/87 77/88 126/7 127/36
+f 77/88 76/81 125/11 126/7
+f 76/81 75/82 124/15 125/11
+f 75/82 74/89 123/19 124/15
+f 74/83 73/84 122/25 123/20
+f 73/84 72/85 121/29 122/25
+f 72/85 71/86 120/33 121/29
+f 71/86 70/87 119/36 120/33
+f 70/87 69/88 118/7 119/36
+f 69/88 68/81 117/11 118/7
+f 67/82 66/89 131/19 116/15
+f 65/90 133/91 173/92
+f 64/93 134/45 174/94
+f 63/95 135/96 175/97
+f 62/98 136/3 176/99
+f 61/100 137/101 177/102
+f 60/103 138/60 178/104
+f 59/105 139/106 179/107
+f 58/108 140/109 180/110
+f 57/90 141/91 181/92
+f 56/93 142/45 182/94
+f 55/95 143/96 183/97
+f 54/98 144/3 184/99
+f 53/100 145/101 185/102
+f 51/105 147/106 186/107
+f 52/103 146/60 187/104
+f 98/111 82/108 188/112
+f 97/113 65/90 189/114
+f 96/115 64/93 190/116
+f 95/117 63/95 191/118
+f 94/119 62/98 192/120
+f 93/121 61/100 193/122
+f 92/123 60/103 194/124
+f 91/125 59/105 195/126
+f 90/111 58/108 196/112
+f 89/113 57/90 197/114
+f 88/115 56/93 198/116
+f 87/117 55/95 199/118
+f 86/119 54/98 200/120
+f 85/121 53/100 201/122
+f 83/125 51/105 202/126
+f 84/123 52/103 203/124
+f 66/83 98/111 204/127
+f 113/128 114/129 99/3
+f 112/130 113/128 99/3
+f 111/131 112/130 99/3
+f 110/132 111/131 99/3
+f 109/133 110/132 99/3
+f 108/134 109/133 99/3
+f 107/135 108/134 99/3
+f 106/136 107/135 99/3
+f 105/137 106/136 99/3
+f 104/138 105/137 99/3
+f 103/139 104/138 99/3
+f 102/140 103/139 99/3
+f 101/141 102/140 99/3
+f 100/142 101/141 99/3
+f 115/143 100/142 99/3
+f 81/84 97/113 205/144
+f 80/85 96/115 206/145
+f 79/86 95/117 207/146
+f 78/87 94/119 208/147
+f 77/88 93/121 209/148
+f 76/81 92/123 210/149
+f 75/82 91/125 211/150
+f 74/83 90/111 212/127
+f 73/84 89/113 213/144
+f 72/85 88/115 214/145
+f 71/86 87/117 215/146
+f 70/87 86/119 216/147
+f 69/88 85/121 217/148
+f 67/82 83/125 218/150
+f 68/81 84/123 219/149
+f 114/129 115/143 99/3
+f 146/151 101/141 100/142 147/152
+f 147/152 100/142 115/143 132/153
+f 145/154 102/140 101/141 146/151
+f 144/155 103/139 102/140 145/154
+f 143/156 104/138 103/139 144/155
+f 142/157 105/137 104/138 143/156
+f 141/158 106/136 105/137 142/157
+f 140/159 107/135 106/136 141/158
+f 139/160 108/134 107/135 140/159
+f 138/161 109/133 108/134 139/160
+f 137/162 110/132 109/133 138/161
+f 136/163 111/131 110/132 137/162
+f 135/164 112/130 111/131 136/163
+f 134/165 113/128 112/130 135/164
+f 133/166 114/129 113/128 134/165
+f 132/153 115/143 114/129 133/166
+f 82/108 132/109 172/110
+f 132/109 133/91 172/110
+f 133/91 65/90 172/110
+f 65/90 82/108 172/110
+f 133/91 134/45 173/92
+f 134/45 64/93 173/92
+f 64/93 65/90 173/92
+f 134/45 135/96 174/94
+f 135/96 63/95 174/94
+f 63/95 64/93 174/94
+f 135/96 136/3 175/97
+f 136/3 62/98 175/97
+f 62/98 63/95 175/97
+f 136/3 137/101 176/99
+f 137/101 61/100 176/99
+f 61/100 62/98 176/99
+f 137/101 138/60 177/102
+f 138/60 60/103 177/102
+f 60/103 61/100 177/102
+f 138/60 139/106 178/104
+f 139/106 59/105 178/104
+f 59/105 60/103 178/104
+f 139/106 140/167 179/107
+f 140/167 58/168 179/107
+f 58/168 59/105 179/107
+f 140/109 141/91 180/110
+f 141/91 57/90 180/110
+f 57/90 58/108 180/110
+f 141/91 142/45 181/92
+f 142/45 56/93 181/92
+f 56/93 57/90 181/92
+f 142/45 143/96 182/94
+f 143/96 55/95 182/94
+f 55/95 56/93 182/94
+f 143/96 144/3 183/97
+f 144/3 54/98 183/97
+f 54/98 55/95 183/97
+f 144/3 145/101 184/99
+f 145/101 53/100 184/99
+f 53/100 54/98 184/99
+f 145/101 146/60 185/102
+f 146/60 52/103 185/102
+f 52/103 53/100 185/102
+f 147/106 132/167 186/107
+f 132/167 82/168 186/107
+f 82/168 51/105 186/107
+f 146/60 147/106 187/104
+f 147/106 51/105 187/104
+f 51/105 52/103 187/104
+f 82/108 65/90 188/112
+f 65/90 97/113 188/112
+f 97/113 98/111 188/112
+f 65/90 64/93 189/114
+f 64/93 96/115 189/114
+f 96/115 97/113 189/114
+f 64/93 63/95 190/116
+f 63/95 95/117 190/116
+f 95/117 96/115 190/116
+f 63/95 62/98 191/118
+f 62/98 94/119 191/118
+f 94/119 95/117 191/118
+f 62/98 61/100 192/120
+f 61/100 93/121 192/120
+f 93/121 94/119 192/120
+f 61/100 60/103 193/122
+f 60/103 92/123 193/122
+f 92/123 93/121 193/122
+f 60/103 59/105 194/124
+f 59/105 91/125 194/124
+f 91/125 92/123 194/124
+f 59/105 58/168 195/126
+f 58/168 90/169 195/126
+f 90/169 91/125 195/126
+f 58/108 57/90 196/112
+f 57/90 89/113 196/112
+f 89/113 90/111 196/112
+f 57/90 56/93 197/114
+f 56/93 88/115 197/114
+f 88/115 89/113 197/114
+f 56/93 55/95 198/116
+f 55/95 87/117 198/116
+f 87/117 88/115 198/116
+f 55/95 54/98 199/118
+f 54/98 86/119 199/118
+f 86/119 87/117 199/118
+f 54/98 53/100 200/120
+f 53/100 85/121 200/120
+f 85/121 86/119 200/120
+f 53/100 52/103 201/122
+f 52/103 84/123 201/122
+f 84/123 85/121 201/122
+f 51/105 82/168 202/126
+f 82/168 98/169 202/126
+f 98/169 83/125 202/126
+f 52/103 51/105 203/124
+f 51/105 83/125 203/124
+f 83/125 84/123 203/124
+f 98/111 97/113 204/127
+f 97/113 81/84 204/127
+f 81/84 66/83 204/127
+f 97/113 96/115 205/144
+f 96/115 80/85 205/144
+f 80/85 81/84 205/144
+f 96/115 95/117 206/145
+f 95/117 79/86 206/145
+f 79/86 80/85 206/145
+f 95/117 94/119 207/146
+f 94/119 78/87 207/146
+f 78/87 79/86 207/146
+f 94/119 93/121 208/147
+f 93/121 77/88 208/147
+f 77/88 78/87 208/147
+f 93/121 92/123 209/148
+f 92/123 76/81 209/148
+f 76/81 77/88 209/148
+f 92/123 91/125 210/149
+f 91/125 75/82 210/149
+f 75/82 76/81 210/149
+f 91/125 90/169 211/150
+f 90/169 74/89 211/150
+f 74/89 75/82 211/150
+f 90/111 89/113 212/127
+f 89/113 73/84 212/127
+f 73/84 74/83 212/127
+f 89/113 88/115 213/144
+f 88/115 72/85 213/144
+f 72/85 73/84 213/144
+f 88/115 87/117 214/145
+f 87/117 71/86 214/145
+f 71/86 72/85 214/145
+f 87/117 86/119 215/146
+f 86/119 70/87 215/146
+f 70/87 71/86 215/146
+f 86/119 85/121 216/147
+f 85/121 69/88 216/147
+f 69/88 70/87 216/147
+f 85/121 84/123 217/148
+f 84/123 68/81 217/148
+f 68/81 69/88 217/148
+f 83/125 98/169 218/150
+f 98/169 66/89 218/150
+f 66/89 67/82 218/150
+f 84/123 83/125 219/149
+f 83/125 67/82 219/149
+f 67/82 68/81 219/149
diff --git a/nixie_tubes/screenshot.png b/nixie_tubes/screenshot.png
new file mode 100644
index 0000000..38523ac
--- /dev/null
+++ b/nixie_tubes/screenshot.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_anode.png b/nixie_tubes/textures/decatron_anode.png
new file mode 100644
index 0000000..98ad8c7
--- /dev/null
+++ b/nixie_tubes/textures/decatron_anode.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_0.png b/nixie_tubes/textures/decatron_cathode_0.png
new file mode 100644
index 0000000..be1fff0
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_0.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_1.png b/nixie_tubes/textures/decatron_cathode_1.png
new file mode 100644
index 0000000..4171fc3
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_1.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_2.png b/nixie_tubes/textures/decatron_cathode_2.png
new file mode 100644
index 0000000..ef8ca2a
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_2.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_3.png b/nixie_tubes/textures/decatron_cathode_3.png
new file mode 100644
index 0000000..a3509df
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_3.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_4.png b/nixie_tubes/textures/decatron_cathode_4.png
new file mode 100644
index 0000000..0f38c4e
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_4.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_5.png b/nixie_tubes/textures/decatron_cathode_5.png
new file mode 100644
index 0000000..60a8717
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_5.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_6.png b/nixie_tubes/textures/decatron_cathode_6.png
new file mode 100644
index 0000000..8fb1bef
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_6.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_7.png b/nixie_tubes/textures/decatron_cathode_7.png
new file mode 100644
index 0000000..5925788
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_7.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_8.png b/nixie_tubes/textures/decatron_cathode_8.png
new file mode 100644
index 0000000..c3009ca
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_8.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_9.png b/nixie_tubes/textures/decatron_cathode_9.png
new file mode 100644
index 0000000..dd19aa5
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_9.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_cathode_pins.png b/nixie_tubes/textures/decatron_cathode_pins.png
new file mode 100644
index 0000000..d7a9d25
--- /dev/null
+++ b/nixie_tubes/textures/decatron_cathode_pins.png
Binary files differ
diff --git a/nixie_tubes/textures/decatron_internals.png b/nixie_tubes/textures/decatron_internals.png
new file mode 100644
index 0000000..170eea6
--- /dev/null
+++ b/nixie_tubes/textures/decatron_internals.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_1.png b/nixie_tubes/textures/nixie_tube_alnum_seg_1.png
new file mode 100644
index 0000000..3cc70b0
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_1.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_10.png b/nixie_tubes/textures/nixie_tube_alnum_seg_10.png
new file mode 100644
index 0000000..8b01a26
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_10.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_11.png b/nixie_tubes/textures/nixie_tube_alnum_seg_11.png
new file mode 100644
index 0000000..0664dcb
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_11.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_12.png b/nixie_tubes/textures/nixie_tube_alnum_seg_12.png
new file mode 100644
index 0000000..4739711
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_12.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_13.png b/nixie_tubes/textures/nixie_tube_alnum_seg_13.png
new file mode 100644
index 0000000..92d4980
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_13.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_14.png b/nixie_tubes/textures/nixie_tube_alnum_seg_14.png
new file mode 100644
index 0000000..8cfccb1
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_14.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_15.png b/nixie_tubes/textures/nixie_tube_alnum_seg_15.png
new file mode 100644
index 0000000..61aeead
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_15.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_2.png b/nixie_tubes/textures/nixie_tube_alnum_seg_2.png
new file mode 100644
index 0000000..34bd0a5
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_2.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_3.png b/nixie_tubes/textures/nixie_tube_alnum_seg_3.png
new file mode 100644
index 0000000..94f95f2
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_3.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_4.png b/nixie_tubes/textures/nixie_tube_alnum_seg_4.png
new file mode 100644
index 0000000..5b435d7
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_4.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_5.png b/nixie_tubes/textures/nixie_tube_alnum_seg_5.png
new file mode 100644
index 0000000..3abdd45
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_5.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_6.png b/nixie_tubes/textures/nixie_tube_alnum_seg_6.png
new file mode 100644
index 0000000..8d1f0a8
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_6.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_7.png b/nixie_tubes/textures/nixie_tube_alnum_seg_7.png
new file mode 100644
index 0000000..9bcdcb1
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_7.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_8.png b/nixie_tubes/textures/nixie_tube_alnum_seg_8.png
new file mode 100644
index 0000000..7668d42
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_8.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_seg_9.png b/nixie_tubes/textures/nixie_tube_alnum_seg_9.png
new file mode 100644
index 0000000..30bf7db
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_seg_9.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_alnum_wires.png b/nixie_tubes/textures/nixie_tube_alnum_wires.png
new file mode 100644
index 0000000..f993a8a
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_alnum_wires.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_anode.png b/nixie_tubes/textures/nixie_tube_anode.png
new file mode 100644
index 0000000..4d7329e
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_anode.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_backing.png b/nixie_tubes/textures/nixie_tube_backing.png
new file mode 100644
index 0000000..23874db
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_backing.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_base.png b/nixie_tubes/textures/nixie_tube_base.png
new file mode 100644
index 0000000..9f6b13f
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_base.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_blank.png b/nixie_tubes/textures/nixie_tube_blank.png
new file mode 100644
index 0000000..37c28e7
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_blank.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_0.png b/nixie_tubes/textures/nixie_tube_cathode_0.png
new file mode 100644
index 0000000..3b9032d
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_0.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_1.png b/nixie_tubes/textures/nixie_tube_cathode_1.png
new file mode 100644
index 0000000..5a12a64
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_1.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_2.png b/nixie_tubes/textures/nixie_tube_cathode_2.png
new file mode 100644
index 0000000..d8cba25
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_2.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_3.png b/nixie_tubes/textures/nixie_tube_cathode_3.png
new file mode 100644
index 0000000..7e3c758
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_3.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_4.png b/nixie_tubes/textures/nixie_tube_cathode_4.png
new file mode 100644
index 0000000..c2b8e81
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_4.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_5.png b/nixie_tubes/textures/nixie_tube_cathode_5.png
new file mode 100644
index 0000000..67383d6
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_5.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_6.png b/nixie_tubes/textures/nixie_tube_cathode_6.png
new file mode 100644
index 0000000..3a56552
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_6.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_7.png b/nixie_tubes/textures/nixie_tube_cathode_7.png
new file mode 100644
index 0000000..07ceafb
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_7.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_8.png b/nixie_tubes/textures/nixie_tube_cathode_8.png
new file mode 100644
index 0000000..95e2809
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_8.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_9.png b/nixie_tubes/textures/nixie_tube_cathode_9.png
new file mode 100644
index 0000000..8aaf82d
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_9.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_colon.png b/nixie_tubes/textures/nixie_tube_cathode_colon.png
new file mode 100644
index 0000000..97fd6a6
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_colon.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_off.png b/nixie_tubes/textures/nixie_tube_cathode_off.png
new file mode 100644
index 0000000..97d5591
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_off.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_cathode_period.png b/nixie_tubes/textures/nixie_tube_cathode_period.png
new file mode 100644
index 0000000..f9b668f
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_cathode_period.png
Binary files differ
diff --git a/nixie_tubes/textures/nixie_tube_glass.png b/nixie_tubes/textures/nixie_tube_glass.png
new file mode 100644
index 0000000..a50754b
--- /dev/null
+++ b/nixie_tubes/textures/nixie_tube_glass.png
Binary files differ
diff --git a/notice/init.lua b/notice/init.lua
new file mode 100644
index 0000000..9f703c8
--- /dev/null
+++ b/notice/init.lua
@@ -0,0 +1,53 @@
+
+notice = { }
+
+function notice.send(target, text)
+ local player = minetest.get_player_by_name(target)
+ if not player then
+ return false, ("There's no player named '%s'."):format(target)
+ end
+ local fs = { }
+ --[[
+ for _, line in ipairs(text:split("|")) do
+ table.insert(fs, ("label[1,%f;%s]"):format(y+1, minetest.formspec_escape(line)))
+ y = y + 0.5
+ end
+ --]]
+ local lines = { }
+ for i, line in ipairs(text:split("|")) do
+ local lt = { }
+ for i = 1, #line, 40 do
+ table.insert(lt, line:sub(i, i+39))
+ end
+ lines[i] = table.concat(lt, "\n")
+ end
+ text = table.concat(lines, "\n")
+ text = minetest.formspec_escape(text)
+ table.insert(fs, "size[8,4]")
+ table.insert(fs, "label[1,.2;"..text.."]")
+ table.insert(fs, "button_exit[3,3.2;2,0.5;ok;OK]")
+ fs = table.concat(fs)
+ minetest.after(0.5, function()
+ minetest.show_formspec(target, "notice:notice", fs)
+ end)
+ return true
+end
+
+minetest.register_privilege("notice", "Send notices to players.")
+
+minetest.register_chatcommand("notice", {
+ params = "<player> <text>",
+ privs = { notice=true, },
+ description = "Show a notice to a player.",
+ func = function(name, params)
+ local target, text = params:match("(%S+)%s+(.+)")
+ if not (target and text) then
+ return false, "Usage: /notice <player> <text>"
+ end
+ local ok, err = notice.send(target, text)
+ if not ok then
+ return false, err
+ end
+ return true, "Notice sent!"
+ end,
+}) \ No newline at end of file
diff --git a/pipeworks/LICENSE b/pipeworks/LICENSE
new file mode 100644
index 0000000..eb930e9
--- /dev/null
+++ b/pipeworks/LICENSE
@@ -0,0 +1,17 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+----------
+
+This license is commonly known as "WTFPL".
diff --git a/pipeworks/README b/pipeworks/README
new file mode 100644
index 0000000..7a34618
--- /dev/null
+++ b/pipeworks/README
@@ -0,0 +1,22 @@
+This mod uses nodeboxes to supply a complete set of 3D pipes and tubes,
+along devices that work with them.
+
+See https://github.com/VanessaE/pipeworks/wiki/ for detailed information about usage of this mod.
+
+Unlike the previous version of this mod, these pipes are rounded, and when
+placed, they'll automatically join together as needed. Pipes can go vertically
+or horizontally, and there are enough nodes defined to allow for all possible
+connections. Valves and pumps can only be placed horizontally, and will
+automatically rotate and join with neighboring pipes as objects are added, as
+well as joining with each other under certain circumstances.
+
+Pipes come in two variants: one type bears one or more dark windows on each
+pipe, suggesting they're empty, while the other type bears green-tinted
+windows, as if full (the two colors should also be easy to select if you want
+to change them in a paint program). These windows only appear on straight
+lengths and on certain junctions.
+
+This mod is a work in progress.
+
+Please note that owing to the nature of this mod, I have opted to use 64px
+textures. Anything less just looks terrible.
diff --git a/pipeworks/autocrafter.lua b/pipeworks/autocrafter.lua
new file mode 100644
index 0000000..6d00a7c
--- /dev/null
+++ b/pipeworks/autocrafter.lua
@@ -0,0 +1,368 @@
+local autocrafterCache = {} -- caches some recipe data to avoid to call the slow function minetest.get_craft_result() every second
+
+local craft_time = 1
+
+local function count_index(invlist)
+ local index = {}
+ for _, stack in pairs(invlist) do
+ if not stack:is_empty() then
+ local stack_name = stack:get_name()
+ index[stack_name] = (index[stack_name] or 0) + stack:get_count()
+ end
+ end
+ return index
+end
+
+local function get_item_info(stack)
+ local name = stack:get_name()
+ local def = minetest.registered_items[name]
+ local description = def and def.description or "Unknown item"
+ return description, name
+end
+
+local function get_craft(pos, inventory, hash)
+ local hash = hash or minetest.hash_node_position(pos)
+ local craft = autocrafterCache[hash]
+ if not craft then
+ local recipe = inventory:get_list("recipe")
+ local output, decremented_input = minetest.get_craft_result({method = "normal", width = 3, items = recipe})
+ craft = {recipe = recipe, consumption=count_index(recipe), output = output, decremented_input = decremented_input}
+ autocrafterCache[hash] = craft
+ end
+ return craft
+end
+
+local function autocraft(inventory, craft)
+ if not craft then return false end
+ local output_item = craft.output.item
+
+ -- check if we have enough room in dst
+ if not inventory:room_for_item("dst", output_item) then return false end
+ local consumption = craft.consumption
+ local inv_index = count_index(inventory:get_list("src"))
+ -- check if we have enough material available
+ for itemname, number in pairs(consumption) do
+ if (not inv_index[itemname]) or inv_index[itemname] < number then return false end
+ end
+ -- consume material
+ for itemname, number in pairs(consumption) do
+ for i = 1, number do -- We have to do that since remove_item does not work if count > stack_max
+ inventory:remove_item("src", ItemStack(itemname))
+ end
+ end
+
+ -- craft the result into the dst inventory and add any "replacements" as well
+ inventory:add_item("dst", output_item)
+ for i = 1, 9 do
+ inventory:add_item("dst", craft.decremented_input.items[i])
+ end
+ return true
+end
+
+-- returns false to stop the timer, true to continue running
+-- is started only from start_autocrafter(pos) after sanity checks and cached recipe
+local function run_autocrafter(pos, elapsed)
+ local meta = minetest.get_meta(pos)
+ local inventory = meta:get_inventory()
+ local craft = get_craft(pos, inventory)
+ local output_item = craft.output.item
+ -- only use crafts that have an actual result
+ if output_item:is_empty() then
+ meta:set_string("infotext", "unconfigured Autocrafter: unknown recipe")
+ return false
+ end
+
+ for step = 1, math.floor(elapsed/craft_time) do
+ local continue = autocraft(inventory, craft)
+ if not continue then return false end
+ end
+ return true
+end
+
+local function start_crafter(pos)
+ local meta = minetest.get_meta(pos)
+ if meta:get_int("enabled") == 1 then
+ local timer = minetest.get_node_timer(pos)
+ if not timer:is_started() then
+ timer:start(craft_time)
+ end
+ end
+end
+
+local function after_inventory_change(pos)
+ start_crafter(pos)
+end
+
+-- note, that this function assumes allready being updated to virtual items
+-- and doesn't handle recipes with stacksizes > 1
+local function after_recipe_change(pos, inventory)
+ local meta = minetest.get_meta(pos)
+ -- if we emptied the grid, there's no point in keeping it running or cached
+ if inventory:is_empty("recipe") then
+ minetest.get_node_timer(pos):stop()
+ autocrafterCache[minetest.hash_node_position(pos)] = nil
+ meta:set_string("infotext", "unconfigured Autocrafter")
+ return
+ end
+ local recipe_changed = false
+ local recipe = inventory:get_list("recipe")
+
+ local hash = minetest.hash_node_position(pos)
+ local craft = autocrafterCache[hash]
+
+ if craft then
+ -- check if it changed
+ local cached_recipe = craft.recipe
+ for i = 1, 9 do
+ if recipe[i]:get_name() ~= cached_recipe[i]:get_name() then
+ autocrafterCache[hash] = nil -- invalidate recipe
+ craft = nil
+ break
+ end
+ end
+ end
+
+ craft = craft or get_craft(pos, inventory, hash)
+ local output_item = craft.output.item
+ local description, name = get_item_info(output_item)
+ meta:set_string("infotext", string.format("'%s' Autocrafter (%s)", description, name))
+ inventory:set_stack("output", 1, output_item)
+
+ after_inventory_change(pos)
+end
+
+-- clean out unknown items and groups, which would be handled like unknown items in the crafting grid
+-- if minetest supports query by group one day, this might replace them
+-- with a canonical version instead
+local function normalize(item_list)
+ for i = 1, #item_list do
+ local name = item_list[i]
+ if not minetest.registered_items[name] then
+ item_list[i] = ""
+ end
+ end
+ return item_list
+end
+
+local function on_output_change(pos, inventory, stack)
+ if not stack then
+ inventory:set_list("output", {})
+ inventory:set_list("recipe", {})
+ else
+ local input = minetest.get_craft_recipe(stack:get_name())
+ if not input.items or input.type ~= "normal" then return end
+ local items, width = normalize(input.items), input.width
+ local item_idx, width_idx = 1, 1
+ for i = 1, 9 do
+ if width_idx <= width then
+ inventory:set_stack("recipe", i, items[item_idx])
+ item_idx = item_idx + 1
+ else
+ inventory:set_stack("recipe", i, ItemStack(""))
+ end
+ width_idx = (width_idx < 3) and (width_idx + 1) or 1
+ end
+ -- we'll set the output slot in after_recipe_change to the actual result of the new recipe
+ end
+ after_recipe_change(pos, inventory)
+end
+
+-- returns false if we shouldn't bother attempting to start the timer again after this
+local function update_meta(meta, enabled)
+ local state = enabled and "on" or "off"
+ meta:set_int("enabled", enabled and 1 or 0)
+ meta:set_string("formspec",
+ "size[8,11]"..
+ "list[context;recipe;0,0;3,3;]"..
+ "image[3,1;1,1;gui_hb_bg.png^[colorize:#141318:255]"..
+ "list[context;output;3,1;1,1;]"..
+ "image_button[3,2;1,1;pipeworks_button_" .. state .. ".png;" .. state .. ";;;false;pipeworks_button_interm.png]" ..
+ "list[context;src;0,3.5;8,3;]"..
+ "list[context;dst;4,0;4,3;]"..
+ default.gui_bg..
+ default.gui_bg_img..
+ default.gui_slots..
+ default.get_hotbar_bg(0,7) ..
+ "list[current_player;main;0,7;8,4;]")
+
+ -- toggling the button doesn't quite call for running a recipe change check
+ -- so instead we run a minimal version for infotext setting only
+ -- this might be more written code, but actually executes less
+ local output = meta:get_inventory():get_stack("output", 1)
+ if output:is_empty() then -- doesn't matter if paused or not
+ meta:set_string("infotext", "unconfigured Autocrafter")
+ return false
+ end
+
+ local description, name = get_item_info(output)
+ local infotext = enabled and string.format("'%s' Autocrafter (%s)", description, name)
+ or string.format("paused '%s' Autocrafter", description)
+
+ meta:set_string("infotext", infotext)
+ return enabled
+end
+
+-- 1st version of the autocrafter had actual items in the crafting grid
+-- the 2nd replaced these with virtual items, dropped the content on update and set "virtual_items" to string "1"
+-- the third added an output inventory, changed the formspec and added a button for enabling/disabling
+-- so we work out way backwards on this history and update each single case to the newest version
+local function upgrade_autocrafter(pos, meta)
+ local meta = meta or minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+
+ if inv:get_size("output") == 0 then -- we are version 2 or 1
+ inv:set_size("output", 1)
+ -- migrate the old autocrafters into an "enabled" state
+ update_meta(meta, true)
+
+ if meta:get_string("virtual_items") == "1" then -- we are version 2
+ -- we allready dropped stuff, so lets remove the metadatasetting (we are not being called again for this node)
+ meta:set_string("virtual_items", "")
+ else -- we are version 1
+ local recipe = inv:get_list("recipe")
+ if not recipe then return end
+ for idx, stack in ipairs(recipe) do
+ if not stack:is_empty() then
+ minetest.item_drop(stack, nil, pos)
+ stack:set_count(1)
+ stack:set_wear(0)
+ inv:set_stack("recipe", idx, stack)
+ end
+ end
+ end
+
+ -- update the recipe, cache, and start the crafter
+ autocrafterCache[minetest.hash_node_position(pos)] = nil
+ after_recipe_change(pos, inv)
+ end
+end
+
+minetest.register_node("pipeworks:autocrafter", {
+ description = "Autocrafter",
+ drawtype = "normal",
+ tiles = {"pipeworks_autocrafter.png"},
+ groups = {snappy = 3, tubedevice = 1, tubedevice_receiver = 1},
+ tube = {insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local added = inv:add_item("src", stack)
+ after_inventory_change(pos)
+ return added
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("src", stack)
+ end,
+ input_inventory = "dst",
+ connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ inv:set_size("src", 3*8)
+ inv:set_size("recipe", 3*3)
+ inv:set_size("dst", 4*3)
+ inv:set_size("output", 1)
+ update_meta(meta, false)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if not pipeworks.may_configure(pos, sender) then return end
+ local meta = minetest.get_meta(pos)
+ if fields.on then
+ update_meta(meta, false)
+ minetest.get_node_timer(pos):stop()
+ elseif fields.off then
+ if update_meta(meta, true) then
+ start_crafter(pos)
+ end
+ end
+ end,
+ can_dig = function(pos, player)
+ upgrade_autocrafter(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return (inv:is_empty("src") and inv:is_empty("dst"))
+ end,
+ after_place_node = pipeworks.scan_for_tube_objects,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_tube_objects(pos)
+ end,
+ on_destruct = function(pos)
+ autocrafterCache[minetest.hash_node_position(pos)] = nil
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ upgrade_autocrafter(pos)
+ local inv = minetest.get_meta(pos):get_inventory()
+ if listname == "recipe" then
+ stack:set_count(1)
+ inv:set_stack(listname, index, stack)
+ after_recipe_change(pos, inv)
+ return 0
+ elseif listname == "output" then
+ on_output_change(pos, inv, stack)
+ return 0
+ end
+ after_inventory_change(pos)
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then
+ minetest.log("action", string.format("%s attempted to take from autocrafter at %s", player:get_player_name(), minetest.pos_to_string(pos)))
+ return 0
+ end
+ upgrade_autocrafter(pos)
+ local inv = minetest.get_meta(pos):get_inventory()
+ if listname == "recipe" then
+ inv:set_stack(listname, index, ItemStack(""))
+ after_recipe_change(pos, inv)
+ return 0
+ elseif listname == "output" then
+ on_output_change(pos, inv, nil)
+ return 0
+ end
+ after_inventory_change(pos)
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ upgrade_autocrafter(pos)
+ local inv = minetest.get_meta(pos):get_inventory()
+ local stack = inv:get_stack(from_list, from_index)
+
+ if to_list == "output" then
+ on_output_change(pos, inv, stack)
+ return 0
+ elseif from_list == "output" then
+ on_output_change(pos, inv, nil)
+ if to_list ~= "recipe" then
+ return 0
+ end -- else fall through to recipe list handling
+ end
+
+ if from_list == "recipe" or to_list == "recipe" then
+ if from_list == "recipe" then
+ inv:set_stack(from_list, from_index, ItemStack(""))
+ end
+ if to_list == "recipe" then
+ stack:set_count(1)
+ inv:set_stack(to_list, to_index, stack)
+ end
+ after_recipe_change(pos, inv)
+ return 0
+ end
+
+ after_inventory_change(pos)
+ return count
+ end,
+ on_timer = run_autocrafter
+})
+
+minetest.register_craft( {
+ output = "pipeworks:autocrafter 2",
+ recipe = {
+ { "default:steel_ingot", "default:mese_crystal", "default:steel_ingot" },
+ { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "default:mese_crystal", "default:steel_ingot" }
+ },
+})
diff --git a/pipeworks/autoplace_pipes.lua b/pipeworks/autoplace_pipes.lua
new file mode 100644
index 0000000..4fc3665
--- /dev/null
+++ b/pipeworks/autoplace_pipes.lua
@@ -0,0 +1,200 @@
+-- autorouting for pipes
+local tube_table = {[0] = 1, 2, 2, 4, 2, 4, 4, 5, 2, 3, 4, 6, 4, 6, 5, 7, 2, 4, 3, 6, 4, 5, 6, 7, 4, 6, 6, 8, 5, 7, 7, 9, 2, 4, 4, 5, 3, 6, 6, 7, 4, 6, 5, 7, 6, 8, 7, 9, 4, 5, 6, 7, 6, 7, 8, 9, 5, 7, 7, 9, 7, 9, 9, 10}
+local tube_table_facedirs = {[0] = 0, 0, 5, 0, 3, 4, 3, 0, 2, 0, 2, 0, 6, 4, 3, 0, 7, 12, 5, 12, 7, 4, 5, 5, 18, 20, 16, 0, 7, 4, 7, 0, 1, 8, 1, 1, 1, 13, 1, 1, 10, 8, 2, 2, 17, 4, 3, 6, 9, 9, 9, 9, 21, 13, 1, 1, 10, 10, 11, 2, 19, 4, 3, 0}
+local function autoroute_pipes(pos)
+ local nctr = minetest.get_node(pos)
+ local state = "_empty"
+ if (string.find(nctr.name, "pipeworks:pipe_") == nil) then return end
+ if (string.find(nctr.name, "_loaded") ~= nil) then state = "_loaded" end
+ local nsurround = pipeworks.scan_pipe_surroundings(pos)
+
+ if nsurround == 0 then nsurround = 9 end
+ minetest.swap_node(pos, {name = "pipeworks:pipe_"..tube_table[nsurround]..state,
+ param2 = tube_table_facedirs[nsurround]})
+end
+
+function pipeworks.scan_for_pipe_objects(pos)
+ autoroute_pipes({ x=pos.x-1, y=pos.y , z=pos.z })
+ autoroute_pipes({ x=pos.x+1, y=pos.y , z=pos.z })
+ autoroute_pipes({ x=pos.x , y=pos.y-1, z=pos.z })
+ autoroute_pipes({ x=pos.x , y=pos.y+1, z=pos.z })
+ autoroute_pipes({ x=pos.x , y=pos.y , z=pos.z-1 })
+ autoroute_pipes({ x=pos.x , y=pos.y , z=pos.z+1 })
+ autoroute_pipes(pos)
+end
+
+-- auto-rotation code for various devices the tubes attach to
+
+function pipeworks.scan_pipe_surroundings(pos)
+ local pxm=0
+ local pxp=0
+ local pym=0
+ local pyp=0
+ local pzm=0
+ local pzp=0
+
+ local nxm = minetest.get_node({ x=pos.x-1, y=pos.y , z=pos.z })
+ local nxp = minetest.get_node({ x=pos.x+1, y=pos.y , z=pos.z })
+ local nym = minetest.get_node({ x=pos.x , y=pos.y-1, z=pos.z })
+ local nyp = minetest.get_node({ x=pos.x , y=pos.y+1, z=pos.z })
+ local nzm = minetest.get_node({ x=pos.x , y=pos.y , z=pos.z-1 })
+ local nzp = minetest.get_node({ x=pos.x , y=pos.y , z=pos.z+1 })
+
+ if (string.find(nxm.name, "pipeworks:pipe_") ~= nil) then pxm=1 end
+ if (string.find(nxp.name, "pipeworks:pipe_") ~= nil) then pxp=1 end
+ if (string.find(nym.name, "pipeworks:pipe_") ~= nil) then pym=1 end
+ if (string.find(nyp.name, "pipeworks:pipe_") ~= nil) then pyp=1 end
+ if (string.find(nzm.name, "pipeworks:pipe_") ~= nil) then pzm=1 end
+ if (string.find(nzp.name, "pipeworks:pipe_") ~= nil) then pzp=1 end
+
+-- Special handling for valves...
+
+ if (string.find(nxm.name, "pipeworks:valve") ~= nil)
+ and (nxm.param2 == 0 or nxm.param2 == 2) then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:valve") ~= nil)
+ and (nxp.param2 == 0 or nxp.param2 == 2) then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:valve") ~= nil)
+ and (nzm.param2 == 1 or nzm.param2 == 3) then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:valve") ~= nil)
+ and (nzp.param2 == 1 or nzp.param2 == 3) then
+ pzp=1
+ end
+
+-- ...flow sensors...
+
+ if (string.find(nxm.name, "pipeworks:flow_sensor") ~= nil)
+ and (nxm.param2 == 0 or nxm.param2 == 2) then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:flow_sensor") ~= nil)
+ and (nxp.param2 == 0 or nxp.param2 == 2) then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:flow_sensor") ~= nil)
+ and (nzm.param2 == 1 or nzm.param2 == 3) then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:flow_sensor") ~= nil)
+ and (nzp.param2 == 1 or nzp.param2 == 3) then
+ pzp=1
+ end
+
+-- ...spigots...
+
+ if (string.find(nxm.name, "pipeworks:spigot") ~= nil)
+ and nxm.param2 == 1 then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:spigot") ~= nil)
+ and nxp.param2 == 3 then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:spigot") ~= nil)
+ and nzm.param2 == 0 then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:spigot") ~= nil)
+ and nzp.param2 == 2 then
+ pzp=1
+ end
+
+-- ...sealed pipe entry/exit...
+
+ if (string.find(nxm.name, "pipeworks:entry_panel") ~= nil)
+ and (nxm.param2 == 1 or nxm.param2 == 3) then
+ pxm=1
+ end
+
+ if (string.find(nxp.name, "pipeworks:entry_panel") ~= nil)
+ and (nxp.param2 == 1 or nxp.param2 == 3) then
+ pxp=1
+ end
+
+ if (string.find(nzm.name, "pipeworks:entry_panel") ~= nil)
+ and (nzm.param2 == 0 or nzm.param2 == 2) then
+ pzm=1
+ end
+
+ if (string.find(nzp.name, "pipeworks:entry_panel") ~= nil)
+ and (nzp.param2 == 0 or nzp.param2 == 2) then
+ pzp=1
+ end
+
+ if (string.find(nym.name, "pipeworks:entry_panel") ~= nil)
+ and nym.param2 == 13 then
+ pym=1
+ end
+
+ if (string.find(nyp.name, "pipeworks:entry_panel") ~= nil)
+ and nyp.param2 == 13 then
+ pyp=1
+ end
+
+
+-- ...pumps, grates...
+
+ if (string.find(nym.name, "pipeworks:grating") ~= nil) or
+ (string.find(nym.name, "pipeworks:pump") ~= nil) then
+ pym=1
+ end
+
+-- ...fountainheads...
+
+ if (string.find(nyp.name, "pipeworks:fountainhead") ~= nil) then
+ pyp=1
+ end
+
+-- ... and storage tanks.
+
+ if (string.find(nym.name, "pipeworks:storage_tank_") ~= nil) then
+ pym=1
+ end
+
+ if (string.find(nyp.name, "pipeworks:storage_tank_") ~= nil) then
+ pyp=1
+ end
+
+-- ...extra devices specified via the function's parameters
+-- ...except that this part is not implemented yet
+--
+-- xxx = nxm, nxp, nym, nyp, nzm, or nzp depending on the direction to check
+-- yyy = pxm, pxp, pym, pyp, pzm, or pzp accordingly.
+--
+-- if string.find(xxx.name, "modname:nodename") ~= nil then
+-- yyy = 1
+-- end
+--
+-- for example:
+--
+-- if string.find(nym.name, "aero:outlet") ~= nil then
+-- pym = 1
+-- end
+--
+
+ return pxm+8*pxp+2*pym+16*pyp+4*pzm+32*pzp
+end
+
+function pipeworks.look_for_stackable_tanks(pos)
+ local tym = minetest.get_node({ x=pos.x , y=pos.y-1, z=pos.z })
+
+ if string.find(tym.name, "pipeworks:storage_tank_") ~= nil or
+ string.find(tym.name, "pipeworks:expansion_tank_") ~= nil then
+ minetest.add_node(pos, { name = "pipeworks:expansion_tank_0", param2 = tym.param2})
+ end
+end
+
diff --git a/pipeworks/autoplace_tubes.lua b/pipeworks/autoplace_tubes.lua
new file mode 100644
index 0000000..280bd60
--- /dev/null
+++ b/pipeworks/autoplace_tubes.lua
@@ -0,0 +1,122 @@
+-- autorouting for pneumatic tubes
+
+local function is_tube(nodename)
+ return table.contains(pipeworks.tubenodes, nodename)
+end
+
+--a function for determining which side of the node we are on
+local function nodeside(node, tubedir)
+ if node.param2 < 0 or node.param2 > 23 then
+ node.param2 = 0
+ end
+
+ local backdir = minetest.facedir_to_dir(node.param2)
+ local back = vector.dot(backdir, tubedir)
+ if back == 1 then
+ return "back"
+ elseif back == -1 then
+ return "front"
+ end
+
+ local topdir = minetest.facedir_to_top_dir(node.param2)
+ local top = vector.dot(topdir, tubedir)
+ if top == 1 then
+ return "top"
+ elseif top == -1 then
+ return "bottom"
+ end
+
+ local rightdir = minetest.facedir_to_right_dir(node.param2)
+ local right = vector.dot(rightdir, tubedir)
+ if right == 1 then
+ return "right"
+ else
+ return "left"
+ end
+end
+
+local vts = {0, 3, 1, 4, 2, 5}
+local tube_table = {[0] = 1, 2, 2, 4, 2, 4, 4, 5, 2, 3, 4, 6, 4, 6, 5, 7, 2, 4, 3, 6, 4, 5, 6, 7, 4, 6, 6, 8, 5, 7, 7, 9, 2, 4, 4, 5, 3, 6, 6, 7, 4, 6, 5, 7, 6, 8, 7, 9, 4, 5, 6, 7, 6, 7, 8, 9, 5, 7, 7, 9, 7, 9, 9, 10}
+local tube_table_facedirs = {[0] = 0, 0, 5, 0, 3, 4, 3, 0, 2, 0, 2, 0, 6, 4, 3, 0, 7, 12, 5, 12, 7, 4, 5, 5, 18, 20, 16, 0, 7, 4, 7, 0, 1, 8, 1, 1, 1, 13, 1, 1, 10, 8, 2, 2, 17, 4, 3, 6, 9, 9, 9, 9, 21, 13, 1, 1, 10, 10, 11, 2, 19, 4, 3, 0}
+local function tube_autoroute(pos)
+ local active = {0, 0, 0, 0, 0, 0}
+ local nctr = minetest.get_node(pos)
+ if not is_tube(nctr.name) then return end
+
+ local adjustments = {
+ {x = -1, y = 0, z = 0},
+ {x = 1, y = 0, z = 0},
+ {x = 0, y = -1, z = 0},
+ {x = 0, y = 1, z = 0},
+ {x = 0, y = 0, z = -1},
+ {x = 0, y = 0, z = 1}
+ }
+ -- xm = 1, xp = 2, ym = 3, yp = 4, zm = 5, zp = 6
+
+ local positions = {}
+ local nodes = {}
+ for i, adj in ipairs(adjustments) do
+ positions[i] = vector.add(pos, adj)
+ nodes[i] = minetest.get_node(positions[i])
+ end
+
+ for i, node in ipairs(nodes) do
+ local idef = minetest.registered_nodes[node.name]
+ -- handle the tubes themselves
+ if is_tube(node.name) then
+ active[i] = 1
+ -- handle new style connectors
+ elseif idef and idef.tube and idef.tube.connect_sides then
+ local dir = adjustments[i]
+ if idef.tube.connect_sides[nodeside(node, vector.multiply(dir, -1))] then
+ active[i] = 1
+ end
+ end
+ end
+
+ -- all sides checked, now figure which tube to use.
+
+ local nodedef = minetest.registered_nodes[nctr.name]
+ local basename = nodedef.basename
+ if nodedef.style == "old" then
+ local nsurround = ""
+ for i, n in ipairs(active) do
+ nsurround = nsurround..n
+ end
+ nctr.name = basename.."_"..nsurround
+ elseif nodedef.style == "6d" then
+ local s = 0
+ for i, n in ipairs(active) do
+ if n == 1 then
+ s = s + 2^vts[i]
+ end
+ end
+ nctr.name = basename.."_"..tube_table[s]
+ nctr.param2 = tube_table_facedirs[s]
+ end
+ minetest.swap_node(pos, nctr)
+end
+
+function pipeworks.scan_for_tube_objects(pos)
+ for side = 0, 6 do
+ tube_autoroute(vector.add(pos, directions.side_to_dir(side)))
+ end
+end
+
+function pipeworks.after_place(pos)
+ pipeworks.scan_for_tube_objects(pos)
+end
+
+function pipeworks.after_dig(pos)
+ pipeworks.scan_for_tube_objects(pos)
+end
+
+if minetest.get_modpath("mesecons_mvps") then
+ mesecon.register_on_mvps_move(function(moved_nodes)
+ for _, n in ipairs(moved_nodes) do
+ pipeworks.scan_for_tube_objects(n.pos)
+ pipeworks.scan_for_tube_objects(n.oldpos)
+ end
+ end)
+end
+
diff --git a/pipeworks/changelog.txt b/pipeworks/changelog.txt
new file mode 100644
index 0000000..251df29
--- /dev/null
+++ b/pipeworks/changelog.txt
@@ -0,0 +1,93 @@
+Changelog
+---------
+
+2013-01-13: Tubes can transport items now! Namely, I added Novatux/Nore's item
+transport mod as a default part of this mod, to make tubes do something useful!
+Thanks to Nore and RealBadAngel for the code contributions!
+
+2013-01-05: made storage tanks connect from top/bottom, made storage tank and
+pipe textures use the ^ combine operator so they can show the actual liquid
+going through the pipes/tanks.
+
+2013-01-04 (a bit later): Made pipes able to carry water! It was just a minor
+logic error resulting from moving the water flowing code into it's own file
+when I originally imported it. Many thanks to Mauvebic for writing it!
+
+2013-01-04: First stage of integrating Mauvebic's water flowing code. This is
+experimental and doesn't move water yet - but at least it doesn't break
+anything :-)
+
+2013-01-01: Various minor tweaks to textures, facedir settings, some other
+stuff. Changed crafting recipes to account for revamped pumps, valves, etc.
+Now requires the moreores mod and most recent git (for mese crystal fragments)
+to craft a pump. Added a "sealed" entry/exit panel (really just a horizontal
+pipe with a metal panel overlayed into the middle). Also, tweaked pipes to
+always drop the empty ones. Revamped pumps so that now they should sit in/on
+liquid and be connected only from the top, relegated grates to decorational-
+only, added outlet spigot. Got rid of a few obsolete textures. Got rid of
+that whole _x and _z naming thing - now all directional devices (pumps, valves,
+spigots, tanks) use facedir. Valves, spigots no longer auto-rotate to find
+nearby pipes.
+
+2012-09-17: Added test object for pneumatic tube autorouting code, made tubes
+connect to it and any object that bears groups={tubedevice=1} (connects to any
+side)
+
+2012-09-05: All recipes doubled except for junglegrass -> plastic sheet (since
+that is derived from home decor)
+
+2012-09-02: Fixed plastic sheeting recipe. Added crafting recipes for various
+objects, with options: If homedecor is installed, use the plastic sheeting
+therein. If not, we define it manually. If the Technic mod is installed,
+don't define any recipes at all. Also removed the extra "loaded!" messages and
+tweaked the default pipe alias to point to something that is actually visible
+:-)
+
+2012-09-01: flattened wielded pipe segment.
+
+2012-08-24: Added square-ish pneumatic tubes with their own autoplace code
+(does not connect to steel pipes or pipe-oriented devices), then revised their
+textures shortly after. Fixed a recursion bug that sometimes caused a stack
+overflow. Old pipes were overriding the pipeworks:pipe defintion that belongs
+with the new pipes.
+
+2012-08-22: Added outlet grate, made it participate in autoplace algorithm.
+Extended storage tank to show fill level in 10% steps (0% to 100%). Added
+"expansion tank" that appears if the user stacks tanks upwards. (Downwards is
+not checked).
+
+2012-08-21: Made storage tank participate in autoplace algorithm. Tuned API a
+little to allow for more flexible placement. Re-organized code a bit to allow
+for some upcoming rules changes. Made storage tanks' upper/lower fittins and
+intake grate participate in autoplace algorithm.
+
+2012-08-20: Added temporary nodes for storage tank and intake grating, but
+without autoplace.
+
+2012-08-19: Pumps and valves now fully participate in the
+auto-rotate/auto-place algorithm.
+
+2012-08-18: Total rewrite again. All pipes are now nice and round-looking, and
+they auto-connect! Also added temporary nodes for pump and valve (each with an
+on/off setting - punch to change). No crafting recipes yet and the pipes still
+don't do anything useful yet. Soon.
+
+2012-08-06: Moved this changelog off the forum post and into a separate file.
+
+2012-08-05 (multiple updates): Rewrote pipeworks to use loops and tables to
+create the nodes. Requires far less code now. Added -X, +X, -Y, +Y, -Z, +Z
+capped stubs and a short centered horizontal segment. Changed node definitions
+so that the aforementioned "short centered" segment is given on dig/drop.
+Renamed it to just "pipeworks:pipe" (and pipe_loaded). Added empty/loaded
+indicator images to the capped ends, removed some redundant comments. Made the
+empty/loaded indication at the capped end more prominent.
+
+2012-07-21: Added screenshot showing pipes as they look now that nodebox
+texture rotation is fixed.
+
+2012-07-18: Changed the mod name and all internals to 'pipeworks' instead of
+'pipes'... after a couple of mistakes :-)
+
+2012-07-12: moved project to github.
+
+2012-06-23: Initial release, followed by reworking the textures a bit.
diff --git a/pipeworks/common.lua b/pipeworks/common.lua
new file mode 100644
index 0000000..1ee734f
--- /dev/null
+++ b/pipeworks/common.lua
@@ -0,0 +1,157 @@
+----------------------
+-- Vector functions --
+----------------------
+
+function vector.cross(a, b)
+ return {
+ x = a.y * b.z - a.z * b.y,
+ y = a.z * b.x - a.x * b.z,
+ z = a.x * b.y - a.y * b.x
+ }
+end
+
+function vector.dot(a, b)
+ return a.x * b.x + a.y * b.y + a.z * b.z
+end
+
+-----------------------
+-- Facedir functions --
+-----------------------
+
+function minetest.facedir_to_top_dir(facedir)
+ return ({[0] = {x = 0, y = 1, z = 0},
+ {x = 0, y = 0, z = 1},
+ {x = 0, y = 0, z = -1},
+ {x = 1, y = 0, z = 0},
+ {x = -1, y = 0, z = 0},
+ {x = 0, y = -1, z = 0}})
+ [math.floor(facedir / 4)]
+end
+
+function minetest.facedir_to_right_dir(facedir)
+ return vector.cross(
+ minetest.facedir_to_top_dir(facedir),
+ minetest.facedir_to_dir(facedir)
+ )
+end
+
+directions = {}
+function directions.side_to_dir(side)
+ return ({[0] = vector.new(),
+ vector.new( 0, 1, 0),
+ vector.new( 0, -1, 0),
+ vector.new( 1, 0, 0),
+ vector.new(-1, 0, 0),
+ vector.new( 0, 0, 1),
+ vector.new( 0, 0, -1)
+ })[side]
+end
+
+function directions.dir_to_side(dir)
+ local c = vector.dot(dir, vector.new(1, 2, 3)) + 4
+ return ({6, 2, 4, 0, 3, 1, 5})[c]
+end
+
+----------------------
+-- String functions --
+----------------------
+
+--[[function string.split(str, sep)
+ local fields = {}
+ local index = 1
+ local expr = "([^"..sep.."])+"
+ string.gsub(str, expr, function(substring)
+ fields[index] = substring
+ index = index + 1
+ end)
+ return fields
+end]]
+
+function string.startswith(str, substr)
+ return str:sub(1, substr:len()) == substr
+end
+
+---------------------
+-- Table functions --
+---------------------
+
+function table.contains(tbl, element)
+ for _, elt in pairs(tbl) do
+ if elt == element then
+ return true
+ end
+ end
+ return false
+end
+
+function table.extend(tbl, tbl2)
+ local index = #tbl + 1
+ for _, elt in ipairs(tbl2) do
+ tbl[index] = elt
+ index = index + 1
+ end
+end
+
+function table.recursive_replace(tbl, pattern, replace_with)
+ if type(tbl) == "table" then
+ local tbl2 = {}
+ for key, value in pairs(tbl) do
+ tbl2[key] = table.recursive_replace(value, pattern, replace_with)
+ end
+ return tbl2
+ elseif type(tbl) == "string" then
+ return tbl:gsub(pattern, replace_with)
+ else
+ return tbl
+ end
+end
+
+------------------------
+-- Formspec functions --
+------------------------
+
+fs_helpers = {}
+function fs_helpers.on_receive_fields(pos, fields)
+ local meta = minetest.get_meta(pos)
+ for field, value in pairs(fields) do
+ if field:startswith("fs_helpers_cycling:") then
+ local l = field:split(":")
+ local new_value = tonumber(l[2])
+ local meta_name = l[3]
+ meta:set_int(meta_name, new_value)
+ end
+ end
+end
+
+function fs_helpers.cycling_button(meta, base, meta_name, values)
+ local current_value = meta:get_int(meta_name)
+ local new_value = (current_value + 1) % (#values)
+ local val = values[current_value + 1]
+ local text
+ local texture_name = nil
+ local addopts = nil
+ --when we get a table, we know the caller wants an image_button
+ if type(val) == "table" then
+ text = val["text"]
+ texture_name = val["texture"]
+ addopts = val["addopts"]
+ else
+ text = val
+ end
+ local field = "fs_helpers_cycling:"..new_value..":"..meta_name
+ return base..";"..(texture_name and texture_name..";" or "")..field..";"..minetest.formspec_escape(text)..(addopts and ";"..addopts or "").."]"
+end
+
+---------
+-- Env --
+---------
+
+function minetest.load_position(pos)
+ if pos.x < -30912 or pos.y < -30912 or pos.z < -30912 or
+ pos.x > 30927 or pos.y > 30927 or pos.z > 30927 then return end
+ if minetest.get_node_or_nil(pos) then
+ return
+ end
+ local vm = minetest.get_voxel_manip()
+ vm:read_from_map(pos, pos)
+end
diff --git a/pipeworks/compat.lua b/pipeworks/compat.lua
new file mode 100644
index 0000000..c89e492
--- /dev/null
+++ b/pipeworks/compat.lua
@@ -0,0 +1,145 @@
+-- this bit of code modifies the default chests and furnaces to be compatible
+-- with pipeworks.
+
+minetest.override_item("default:furnace", {
+ tiles = {
+ "default_furnace_top.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_bottom.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_front.png"
+ },
+ groups = {cracky = 2, tubedevice = 1, tubedevice_receiver = 1},
+ tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y == 1 then
+ return inv:add_item("fuel",stack)
+ else
+ return inv:add_item("src",stack)
+ end
+ end,
+ can_insert = function(pos,node,stack,direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y == 1 then
+ return inv:room_for_item("fuel", stack)
+ else
+ return inv:room_for_item("src", stack)
+ end
+ end,
+ input_inventory = "dst",
+ connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig
+})
+
+minetest.override_item("default:furnace_active", {
+ tiles = {
+ "default_furnace_top.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_bottom.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ "default_furnace_side.png^pipeworks_tube_connection_stony.png",
+ {
+ image = "default_furnace_front_active.png",
+ backface_culling = false,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 1.5
+ },
+ }
+ },
+ groups = {cracky = 2, tubedevice = 1, tubedevice_receiver = 1, not_in_creative_inventory = 1},
+ tube = {
+ insert_object = function(pos,node,stack,direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y == 1 then
+ return inv:add_item("fuel", stack)
+ else
+ return inv:add_item("src", stack)
+ end
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y == 1 then
+ return inv:room_for_item("fuel", stack)
+ else
+ return inv:room_for_item("src", stack)
+ end
+ end,
+ input_inventory = "dst",
+ connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig
+})
+
+minetest.override_item("default:chest", {
+ tiles = {
+ "default_chest_top.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_top.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_front.png"
+ },
+ groups = {choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, tubedevice_receiver = 1},
+ tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item("main", stack)
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("main", stack)
+ end,
+ input_inventory = "main",
+ connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig
+})
+
+minetest.override_item("default:chest_locked", {
+ tiles = {
+ "default_chest_top.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_top.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_side.png^pipeworks_tube_connection_wooden.png",
+ "default_chest_lock.png"
+ },
+ groups = {choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, tubedevice_receiver = 1},
+ tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item("main", stack)
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("main", stack)
+ end,
+ connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
+ },
+ after_place_node = function (pos, placer)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name() or "")
+ meta:set_string("infotext", "Locked Chest (owned by "..
+ meta:get_string("owner")..")")
+ pipeworks.after_place(pos)
+ end,
+ after_dig_node = pipeworks.after_dig
+})
+
diff --git a/pipeworks/crafts.lua b/pipeworks/crafts.lua
new file mode 100644
index 0000000..63a04b7
--- /dev/null
+++ b/pipeworks/crafts.lua
@@ -0,0 +1,151 @@
+-- Crafting recipes for pipes
+
+minetest.register_craft( {
+ output = "pipeworks:pipe_1_empty 12",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
+ { "", "", "" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:spigot 3",
+ recipe = {
+ { "pipeworks:pipe_1_empty", "" },
+ { "", "pipeworks:pipe_1_empty" },
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:entry_panel_empty 2",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "", "pipeworks:pipe_1_empty", "" },
+ { "", "default:steel_ingot", "" },
+ },
+})
+
+-- Various ancillary pipe devices
+
+minetest.register_craft( {
+ output = "pipeworks:pump_off 2",
+ recipe = {
+ { "default:stone", "default:steel_ingot", "default:stone" },
+ { "default:copper_ingot", "default:mese_crystal_fragment", "default:copper_ingot" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:valve_off_empty 2",
+ recipe = {
+ { "", "group:stick", "" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
+ { "", "default:steel_ingot", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:storage_tank_0 2",
+ recipe = {
+ { "", "default:steel_ingot", "default:steel_ingot" },
+ { "default:steel_ingot", "default:glass", "default:steel_ingot" },
+ { "default:steel_ingot", "default:steel_ingot", "" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:grating 2",
+ recipe = {
+ { "default:steel_ingot", "", "default:steel_ingot" },
+ { "", "pipeworks:pipe_1_empty", "" },
+ { "default:steel_ingot", "", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:flow_sensor_empty 2",
+ recipe = {
+ { "pipeworks:pipe_1_empty", "mesecons:mesecon", "pipeworks:pipe_1_empty" },
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:fountainhead 2",
+ recipe = {
+ { "pipeworks:pipe_1_empty" },
+ { "pipeworks:pipe_1_empty" }
+ },
+})
+
+
+-- Crafting recipes for pneumatic tubes
+
+-- If homedecor is not installed, we need to register its crafting chain for
+-- plastic sheeting so that pipeworks remains compatible with it.
+
+if minetest.get_modpath("homedecor") == nil then
+
+ minetest.register_craftitem(":homedecor:oil_extract", {
+ description = "Oil extract",
+ inventory_image = "homedecor_oil_extract.png",
+ })
+
+ minetest.register_craftitem(":homedecor:paraffin", {
+ description = "Unprocessed paraffin",
+ inventory_image = "homedecor_paraffin.png",
+ })
+
+ minetest.register_alias("homedecor:plastic_base", "homedecor:paraffin")
+
+ minetest.register_craftitem(":homedecor:plastic_sheeting", {
+ description = "Plastic sheet",
+ inventory_image = "homedecor_plastic_sheeting.png",
+ })
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:oil_extract 4",
+ recipe = {
+ "group:leaves",
+ "group:leaves",
+ "group:leaves",
+ "group:leaves",
+ "group:leaves",
+ "group:leaves"
+ }
+ })
+
+ minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:paraffin",
+ recipe = "homedecor:oil_extract",
+ })
+
+ minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:plastic_sheeting",
+ recipe = "homedecor:paraffin",
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:oil_extract",
+ burntime = 30,
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:paraffin",
+ burntime = 30,
+ })
+
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:plastic_sheeting",
+ burntime = 30,
+ })
+end
+
+
diff --git a/pipeworks/decorative_tubes.lua b/pipeworks/decorative_tubes.lua
new file mode 100644
index 0000000..39ba8f3
--- /dev/null
+++ b/pipeworks/decorative_tubes.lua
@@ -0,0 +1,83 @@
+local straight = function(pos, node, velocity, stack) return {velocity} end
+
+minetest.register_node("pipeworks:steel_block_embedded_tube", {
+ description = "Airtight steelblock embedded tube",
+ tiles = {
+ "default_steel_block.png", "default_steel_block.png",
+ "default_steel_block.png", "default_steel_block.png",
+ "default_steel_block.png^pipeworks_tube_connection_metallic.png",
+ "default_steel_block.png^pipeworks_tube_connection_metallic.png",
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=1, oddly_breakable_by_hand = 1, tubedevice = 1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ tube = {
+ connect_sides = {front = 1, back = 1,},
+ priority = 50,
+ can_go = straight,
+ can_insert = function(pos, node, stack, direction)
+ local dir = minetest.facedir_to_dir(node.param2)
+ return vector.equals(dir, direction) or vector.equals(vector.multiply(dir, -1), direction)
+ end,
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig,
+})
+
+minetest.register_craft( {
+ output = "pipeworks:steel_block_embedded_tube 1",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
+ { "default:steel_ingot", "pipeworks:tube_1", "default:steel_ingot" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+local pane_box = {
+ type = "fixed",
+ fixed = {
+ { -9/64, -9/64, -8/16, 9/64, 9/64, 8/16 }, -- tube
+ { -8/16, -8/16, -1/16, 8/16, 8/16, 1/16 } -- pane
+ }
+}
+minetest.register_node("pipeworks:steel_pane_embedded_tube", {
+ drawtype = "nodebox",
+ description = "Airtight panel embedded tube ",
+ tiles = {
+ "pipeworks_pane_embedded_tube_sides.png^[transformR90",
+ "pipeworks_pane_embedded_tube_sides.png^[transformR90",
+ "pipeworks_pane_embedded_tube_sides.png",
+ "pipeworks_pane_embedded_tube_sides.png",
+ "pipeworks_pane_embedded_tube_ends.png", "pipeworks_pane_embedded_tube_ends.png",
+ },
+ node_box = pane_box,
+ selection_box = pane_box,
+ collision_box = pane_box,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=1, oddly_breakable_by_hand = 1, tubedevice = 1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ tube = {
+ connect_sides = {front = 1, back = 1,},
+ priority = 50,
+ can_go = straight,
+ can_insert = function(pos, node, stack, direction)
+ local dir = minetest.facedir_to_dir(node.param2)
+ return vector.equals(dir, direction) or vector.equals(vector.multiply(dir, -1), direction)
+ end,
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig,
+})
+
+minetest.register_craft( {
+ output = "pipeworks:steel_pane_embedded_tube 1",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "", "pipeworks:tube_1", "" },
+ { "", "default:steel_ingot", "" }
+ },
+})
diff --git a/pipeworks/default_settings.txt b/pipeworks/default_settings.txt
new file mode 100644
index 0000000..bbf02ce
--- /dev/null
+++ b/pipeworks/default_settings.txt
@@ -0,0 +1,22 @@
+-- Various settings
+
+pipeworks.enable_pipes = true
+pipeworks.enable_autocrafter = true
+pipeworks.enable_deployer = true
+pipeworks.enable_dispenser = true
+pipeworks.enable_node_breaker = true
+pipeworks.enable_teleport_tube = true
+pipeworks.enable_pipe_devices = true
+pipeworks.enable_redefines = true
+pipeworks.enable_mese_tube = true
+pipeworks.enable_detector_tube = true
+pipeworks.enable_conductor_tube = true
+pipeworks.enable_accelerator_tube = true
+pipeworks.enable_crossing_tube = true
+pipeworks.enable_sand_tube = true
+pipeworks.enable_mese_sand_tube = true
+pipeworks.enable_one_way_tube = true
+pipeworks.enable_priority_tube = true
+pipeworks.enable_cyclic_mode = true
+
+pipeworks.delete_item_on_clearobject = true \ No newline at end of file
diff --git a/pipeworks/depends.txt b/pipeworks/depends.txt
new file mode 100644
index 0000000..02a542c
--- /dev/null
+++ b/pipeworks/depends.txt
@@ -0,0 +1,3 @@
+default
+mesecons?
+mesecons_mvps?
diff --git a/pipeworks/devices.lua b/pipeworks/devices.lua
new file mode 100644
index 0000000..52f3002
--- /dev/null
+++ b/pipeworks/devices.lua
@@ -0,0 +1,572 @@
+-- List of devices that should participate in the autoplace algorithm
+
+local pipereceptor_on = nil
+local pipereceptor_off = nil
+
+if mesecon then
+ pipereceptor_on = {
+ receptor = {
+ state = mesecon.state.on,
+ rules = pipeworks.mesecons_rules
+ }
+ }
+
+ pipereceptor_off = {
+ receptor = {
+ state = mesecon.state.off,
+ rules = pipeworks.mesecons_rules
+ }
+ }
+end
+
+local pipes_devicelist = {
+ "pump",
+ "valve",
+ "storage_tank_0",
+ "storage_tank_1",
+ "storage_tank_2",
+ "storage_tank_3",
+ "storage_tank_4",
+ "storage_tank_5",
+ "storage_tank_6",
+ "storage_tank_7",
+ "storage_tank_8",
+ "storage_tank_9",
+ "storage_tank_10"
+}
+
+-- Now define the nodes.
+
+local states = { "on", "off" }
+local dgroups = ""
+
+for s in ipairs(states) do
+
+ if states[s] == "off" then
+ dgroups = {snappy=3, pipe=1}
+ else
+ dgroups = {snappy=3, pipe=1, not_in_creative_inventory=1}
+ end
+
+ minetest.register_node("pipeworks:pump_"..states[s], {
+ description = "Pump/Intake Module",
+ drawtype = "mesh",
+ mesh = "pipeworks_pump.obj",
+ tiles = { "pipeworks_pump_"..states[s]..".png" },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = dgroups,
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ drop = "pipeworks:pump_off",
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.add_node(pos,{name="pipeworks:pump_on", param2 = node.param2})
+ end,
+ action_off = function (pos, node)
+ minetest.add_node(pos,{name="pipeworks:pump_off", param2 = node.param2})
+ end
+ }},
+ on_punch = function(pos, node, puncher)
+ local fdir = minetest.get_node(pos).param2
+ minetest.add_node(pos, { name = "pipeworks:pump_"..states[3-s], param2 = fdir })
+ end
+ })
+
+ minetest.register_node("pipeworks:valve_"..states[s].."_empty", {
+ description = "Valve",
+ drawtype = "mesh",
+ mesh = "pipeworks_valve_"..states[s]..".obj",
+ tiles = { "pipeworks_valve.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -4/16, -5/16, 8/16, 5/16, 5/16 }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -8/16, -4/16, -5/16, 8/16, 5/16, 5/16 }
+ },
+ groups = dgroups,
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ drop = "pipeworks:valve_off_empty",
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.add_node(pos,{name="pipeworks:valve_on_empty", param2 = node.param2})
+ end,
+ action_off = function (pos, node)
+ minetest.add_node(pos,{name="pipeworks:valve_off_empty", param2 = node.param2})
+ end
+ }},
+ on_punch = function(pos, node, puncher)
+ local fdir = minetest.get_node(pos).param2
+ minetest.add_node(pos, { name = "pipeworks:valve_"..states[3-s].."_empty", param2 = fdir })
+ end
+ })
+end
+
+minetest.register_node("pipeworks:valve_on_loaded", {
+ description = "Valve",
+ drawtype = "mesh",
+ mesh = "pipeworks_valve_on.obj",
+ tiles = { "pipeworks_valve.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = {
+ type = "fixed",
+ fixed = { -8/16, -4/16, -5/16, 8/16, 5/16, 5/16 }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -8/16, -4/16, -5/16, 8/16, 5/16, 5/16 }
+ },
+ groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ drop = "pipeworks:valve_off_empty",
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.add_node(pos,{name="pipeworks:valve_on_empty", param2 = node.param2})
+ end,
+ action_off = function (pos, node)
+ minetest.add_node(pos,{name="pipeworks:valve_off_empty", param2 = node.param2})
+ end
+ }},
+ on_punch = function(pos, node, puncher)
+ local fdir = minetest.get_node(pos).param2
+ minetest.add_node(pos, { name = "pipeworks:valve_off_empty", param2 = fdir })
+ end
+})
+
+-- grating
+
+minetest.register_node("pipeworks:grating", {
+ description = "Decorative grating",
+ tiles = {
+ "pipeworks_grating_top.png",
+ "pipeworks_grating_sides.png",
+ "pipeworks_grating_sides.png",
+ "pipeworks_grating_sides.png",
+ "pipeworks_grating_sides.png",
+ "pipeworks_grating_sides.png"
+ },
+ sunlight_propagates = true,
+ paramtype = "light",
+ groups = {snappy=3, pipe=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+})
+
+-- outlet spigot
+
+minetest.register_node("pipeworks:spigot", {
+ description = "Spigot outlet",
+ drawtype = "mesh",
+ mesh = "pipeworks_spigot.obj",
+ tiles = { "pipeworks_spigot.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = { -2/16, -6/16, -2/16, 2/16, 2/16, 8/16 }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -2/16, -6/16, -2/16, 2/16, 2/16, 8/16 }
+ }
+})
+
+minetest.register_node("pipeworks:spigot_pouring", {
+ description = "Spigot outlet",
+ drawtype = "mesh",
+ mesh = "pipeworks_spigot_pouring.obj",
+ tiles = {
+ {
+ name = "default_water_flowing_animated.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 0.8,
+ },
+ },
+ { name = "pipeworks_spigot.png" }
+ },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = { -2/16, -6/16, -2/16, 2/16, 2/16, 8/16 }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -2/16, -6/16, -2/16, 2/16, 2/16, 8/16 }
+ },
+ drop = "pipeworks:spigot",
+})
+
+-- sealed pipe entry/exit (horizontal pipe passing through a metal
+-- wall, for use in places where walls should look like they're airtight)
+
+local panel_cbox = {
+ type = "fixed",
+ fixed = {
+ { -2/16, -2/16, -8/16, 2/16, 2/16, 8/16 },
+ { -8/16, -8/16, -1/16, 8/16, 8/16, 1/16 }
+ }
+}
+
+minetest.register_node("pipeworks:entry_panel_empty", {
+ description = "Airtight Pipe entry/exit",
+ drawtype = "mesh",
+ mesh = "pipeworks_entry_panel.obj",
+ tiles = { "pipeworks_entry_panel.png" },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ selection_box = panel_cbox,
+ collision_box = panel_cbox,
+ on_place = function(itemstack, placer, pointed_thing)
+ local playername = placer:get_player_name()
+ if not minetest.is_protected(pointed_thing.under, playername)
+ and not minetest.is_protected(pointed_thing.above, playername) then
+ local node = minetest.get_node(pointed_thing.under)
+
+ if not minetest.registered_nodes[node.name]
+ or not minetest.registered_nodes[node.name].on_rightclick then
+ local pitch = placer:get_look_pitch()
+ local above = pointed_thing.above
+ local under = pointed_thing.under
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local undernode = minetest.get_node(under)
+ local abovenode = minetest.get_node(above)
+ local uname = undernode.name
+ local aname = abovenode.name
+ local isabove = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
+ local pos1 = above
+
+ if above.x == under.x
+ and above.z == under.z
+ and ( string.find(uname, "pipeworks:pipe_")
+ or string.find(uname, "pipeworks:storage_")
+ or string.find(uname, "pipeworks:expansion_")
+ or ( string.find(uname, "pipeworks:grating") and not isabove )
+ or ( string.find(uname, "pipeworks:pump_") and not isabove )
+ or ( string.find(uname, "pipeworks:entry_panel")
+ and undernode.param2 == 13 )
+ )
+ then
+ fdir = 13
+ end
+
+ if minetest.registered_nodes[uname]["buildable_to"] then
+ pos1 = under
+ end
+
+ if not minetest.registered_nodes[minetest.get_node(pos1).name]["buildable_to"] then return end
+
+ minetest.add_node(pos1, {name = "pipeworks:entry_panel_empty", param2 = fdir })
+ pipeworks.scan_for_pipe_objects(pos1)
+
+ if not pipeworks.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+
+ else
+ minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
+ end
+ end
+ return itemstack
+ end
+})
+
+minetest.register_node("pipeworks:entry_panel_loaded", {
+ description = "Airtight Pipe entry/exit",
+ drawtype = "mesh",
+ mesh = "pipeworks_entry_panel.obj",
+ tiles = { "pipeworks_entry_panel.png" },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ selection_box = panel_cbox,
+ collision_box = panel_cbox,
+ drop = "pipeworks:entry_panel_empty"
+})
+
+minetest.register_node("pipeworks:flow_sensor_empty", {
+ description = "Flow Sensor",
+ drawtype = "mesh",
+ mesh = "pipeworks_flow_sensor.obj",
+ tiles = { "pipeworks_flow_sensor_off.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ on_construct = function(pos)
+ if mesecon then
+ mesecon.receptor_off(pos, rules)
+ end
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -2/16, -2/16, 8/16, 2/16, 2/16 },
+ { -4/16, -3/16, -3/16, 4/16, 3/16, 3/16 },
+ }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -2/16, -2/16, 8/16, 2/16, 2/16 },
+ { -4/16, -3/16, -3/16, 4/16, 3/16, 3/16 },
+ }
+ },
+ mesecons = pipereceptor_off
+})
+
+minetest.register_node("pipeworks:flow_sensor_loaded", {
+ description = "Flow sensor (on)",
+ drawtype = "mesh",
+ mesh = "pipeworks_flow_sensor.obj",
+ tiles = { "pipeworks_flow_sensor_on.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ on_construct = function(pos)
+ if mesecon then
+ mesecon.receptor_on(pos, rules)
+ end
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -2/16, -2/16, 8/16, 2/16, 2/16 },
+ { -4/16, -3/16, -3/16, 4/16, 3/16, 3/16 },
+ }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = {
+ { -8/16, -2/16, -2/16, 8/16, 2/16, 2/16 },
+ { -4/16, -3/16, -3/16, 4/16, 3/16, 3/16 },
+ }
+ },
+ drop = "pipeworks:flow_sensor_empty",
+ mesecons = pipereceptor_on
+})
+
+-- tanks
+
+for fill = 0, 10 do
+ local filldesc="empty"
+ local sgroups = {snappy=3, pipe=1, tankfill=fill+1}
+ local image = nil
+
+ if fill ~= 0 then
+ filldesc=fill.."0% full"
+ sgroups = {snappy=3, pipe=1, tankfill=fill+1, not_in_creative_inventory=1}
+ image = "pipeworks_storage_tank_fittings.png"
+ end
+
+ minetest.register_node("pipeworks:expansion_tank_"..fill, {
+ description = "Expansion Tank ("..filldesc..")... You hacker, you.",
+ tiles = {
+ "pipeworks_storage_tank_fittings.png",
+ "pipeworks_storage_tank_fittings.png",
+ "pipeworks_storage_tank_back.png",
+ "pipeworks_storage_tank_back.png",
+ "pipeworks_storage_tank_back.png",
+ pipeworks.liquid_texture.."^pipeworks_storage_tank_front_"..fill..".png"
+ },
+ inventory_image = image,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy=3, pipe=1, tankfill=fill+1, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ drop = "pipeworks:storage_tank_0",
+ after_place_node = function(pos)
+ pipeworks.look_for_stackable_tanks(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ })
+
+ minetest.register_node("pipeworks:storage_tank_"..fill, {
+ description = "Fluid Storage Tank ("..filldesc..")",
+ tiles = {
+ "pipeworks_storage_tank_fittings.png",
+ "pipeworks_storage_tank_fittings.png",
+ "pipeworks_storage_tank_back.png",
+ "pipeworks_storage_tank_back.png",
+ "pipeworks_storage_tank_back.png",
+ pipeworks.liquid_texture.."^pipeworks_storage_tank_front_"..fill..".png"
+ },
+ inventory_image = image,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = sgroups,
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ drop = "pipeworks:storage_tank_0",
+ after_place_node = function(pos)
+ pipeworks.look_for_stackable_tanks(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ })
+end
+
+-- fountainhead
+
+minetest.register_node("pipeworks:fountainhead", {
+ description = "Fountainhead",
+ drawtype = "mesh",
+ mesh = "pipeworks_fountainhead.obj",
+ tiles = { "pipeworks_fountainhead.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ groups = {snappy=3, pipe=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ on_construct = function(pos)
+ if mesecon then
+ mesecon.receptor_on(pos, rules)
+ end
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = { -2/16, -8/16, -2/16, 2/16, 8/16, 2/16 }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -2/16, -8/16, -2/16, 2/16, 8/16, 2/16 }
+ },
+})
+
+minetest.register_node("pipeworks:fountainhead_pouring", {
+ description = "Fountainhead",
+ drawtype = "mesh",
+ mesh = "pipeworks_fountainhead.obj",
+ tiles = { "pipeworks_fountainhead.png" },
+ sunlight_propagates = true,
+ paramtype = "light",
+ groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ on_construct = function(pos)
+ if mesecon then
+ mesecon.receptor_on(pos, rules)
+ end
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = { -2/16, -8/16, -2/16, 2/16, 8/16, 2/16 }
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = { -2/16, -8/16, -2/16, 2/16, 8/16, 2/16 }
+ },
+ drop = "pipeworks:fountainhead"
+})
+
+minetest.register_alias("pipeworks:valve_off_loaded", "pipeworks:valve_off_empty")
+minetest.register_alias("pipeworks:entry_panel", "pipeworks:entry_panel_empty")
+
diff --git a/pipeworks/filter-injector.lua b/pipeworks/filter-injector.lua
new file mode 100644
index 0000000..bcfcbc9
--- /dev/null
+++ b/pipeworks/filter-injector.lua
@@ -0,0 +1,239 @@
+local function delay(x)
+ return (function() return x end)
+end
+
+local function set_filter_infotext(data, meta)
+ local infotext = data.wise_desc.." Filter-Injector"
+ if meta:get_int("slotseq_mode") == 2 then
+ infotext = infotext .. " (slot #"..meta:get_int("slotseq_index").." next)"
+ end
+ meta:set_string("infotext", infotext)
+end
+
+local function set_filter_formspec(data, meta)
+ local itemname = data.wise_desc.." Filter-Injector"
+ local formspec = "size[8,8.5]"..
+ "item_image[0,0;1,1;pipeworks:"..data.name.."]"..
+ "label[1,0;"..minetest.formspec_escape(itemname).."]"..
+ "label[0,1;Prefer item types:]"..
+ "list[context;main;0,1.5;8,2;]"..
+ fs_helpers.cycling_button(meta, "button[0,3.5;4,1", "slotseq_mode",
+ {"Sequence slots by Priority",
+ "Sequence slots Randomly",
+ "Sequence slots by Rotation"})..
+ "list[current_player;main;0,4.5;8,4;]"
+ meta:set_string("formspec", formspec)
+end
+
+-- todo SOON: this function has *way too many* parameters
+local function grabAndFire(data,slotseq_mode,filtmeta,frominv,frominvname,frompos,fromnode,filterfor,fromtube,fromdef,dir,fakePlayer,all)
+ local sposes = {}
+ for spos,stack in ipairs(frominv:get_list(frominvname)) do
+ local matches
+ if filterfor == "" then
+ matches = stack:get_name() ~= ""
+ else
+ matches = stack:get_name() == filterfor.name
+ end
+ if matches then table.insert(sposes, spos) end
+ end
+ if #sposes == 0 then return false end
+ if slotseq_mode == 1 then
+ for i = #sposes, 2, -1 do
+ local j = math.random(i)
+ local t = sposes[j]
+ sposes[j] = sposes[i]
+ sposes[i] = t
+ end
+ elseif slotseq_mode == 2 then
+ local headpos = filtmeta:get_int("slotseq_index")
+ table.sort(sposes, function (a, b)
+ if a >= headpos then
+ if b < headpos then return true end
+ else
+ if b >= headpos then return false end
+ end
+ return a < b
+ end)
+ end
+ for _, spos in ipairs(sposes) do
+ local stack = frominv:get_stack(frominvname, spos)
+ local doRemove = stack:get_count()
+ if fromtube.can_remove then
+ doRemove = fromtube.can_remove(frompos, fromnode, stack, dir)
+ elseif fromdef.allow_metadata_inventory_take then
+ doRemove = fromdef.allow_metadata_inventory_take(frompos, frominvname,spos, stack, fakePlayer)
+ end
+ -- stupid lack of continue statements grumble
+ if doRemove > 0 then
+ if slotseq_mode == 2 then
+ local nextpos = spos + 1
+ if nextpos > frominv:get_size(frominvname) then
+ nextpos = 1
+ end
+ filtmeta:set_int("slotseq_index", nextpos)
+ set_filter_infotext(data, filtmeta)
+ end
+ local item
+ local count
+ if all then
+ count = math.min(stack:get_count(), doRemove)
+ if filterfor.count and filterfor.count > 1 then
+ count = math.min(filterfor.count, count)
+ end
+ else
+ count = 1
+ end
+ if fromtube.remove_items then
+ -- it could be the entire stack...
+ item = fromtube.remove_items(frompos, fromnode, stack, dir, count)
+ else
+ item = stack:take_item(count)
+ frominv:set_stack(frominvname, spos, stack)
+ if fromdef.on_metadata_inventory_take then
+ fromdef.on_metadata_inventory_take(frompos, frominvname, spos, item, fakePlayer)
+ end
+ end
+ local pos = vector.add(frompos, vector.multiply(dir, 1.4))
+ local start_pos = vector.add(frompos, dir)
+ local item1 = pipeworks.tube_inject_item(pos, start_pos, dir, item)
+ return true-- only fire one item, please
+ end
+ end
+ return false
+end
+
+local function punch_filter(data, filtpos, filtnode)
+ local filtmeta = minetest.get_meta(filtpos)
+ local filtinv = filtmeta:get_inventory()
+ local owner = filtmeta:get_string("owner")
+ local fakePlayer = {
+ get_player_name = delay(owner),
+ is_fake_player = ":pipeworks",
+ } -- TODO: use a mechanism as the wielder one
+ local dir = minetest.facedir_to_right_dir(filtnode.param2)
+ local frompos = vector.subtract(filtpos, dir)
+ local fromnode = minetest.get_node(frompos)
+ if not fromnode then return end
+ local fromdef = minetest.registered_nodes[fromnode.name]
+ if not fromdef then return end
+ local fromtube = fromdef.tube
+ if not (fromtube and fromtube.input_inventory) then return end
+ local filters = {}
+ for _, filterstack in ipairs(filtinv:get_list("main")) do
+ local filtername = filterstack:get_name()
+ local filtercount = filterstack:get_count()
+ if filtername ~= "" then table.insert(filters, {name = filtername, count = filtercount}) end
+ end
+ if #filters == 0 then table.insert(filters, "") end
+ local slotseq_mode = filtmeta:get_int("slotseq_mode")
+ local frommeta = minetest.get_meta(frompos)
+ local frominv = frommeta:get_inventory()
+ if fromtube.before_filter then fromtube.before_filter(frompos) end
+ for _, frominvname in ipairs(type(fromtube.input_inventory) == "table" and fromtube.input_inventory or {fromtube.input_inventory}) do
+ local done = false
+ for _, filterfor in ipairs(filters) do
+ if grabAndFire(data, slotseq_mode, filtmeta, frominv, frominvname, frompos, fromnode, filterfor, fromtube, fromdef, dir, fakePlayer, data.stackwise) then
+ done = true
+ break
+ end
+ end
+ if done then break end
+ end
+ if fromtube.after_filter then fromtube.after_filter(frompos) end
+end
+
+for _, data in ipairs({
+ {
+ name = "filter",
+ wise_desc = "Itemwise",
+ stackwise = false,
+ },
+ {
+ name = "mese_filter",
+ wise_desc = "Stackwise",
+ stackwise = true,
+ },
+}) do
+ minetest.register_node("pipeworks:"..data.name, {
+ description = data.wise_desc.." Filter-Injector",
+ tiles = {
+ "pipeworks_"..data.name.."_top.png",
+ "pipeworks_"..data.name.."_top.png",
+ "pipeworks_"..data.name.."_output.png",
+ "pipeworks_"..data.name.."_input.png",
+ "pipeworks_"..data.name.."_side.png",
+ "pipeworks_"..data.name.."_top.png",
+ },
+ paramtype2 = "facedir",
+ groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, mesecon = 2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ set_filter_formspec(data, meta)
+ set_filter_infotext(data, meta)
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*2)
+ end,
+ after_place_node = function (pos, placer)
+ minetest.get_meta(pos):set_string("owner", placer:get_player_name())
+ pipeworks.after_place(pos)
+ end,
+ after_dig_node = pipeworks.after_dig,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if not pipeworks.may_configure(pos, sender) then return end
+ fs_helpers.on_receive_fields(pos, fields)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("slotseq_index", 1)
+ set_filter_formspec(data, meta)
+ set_filter_infotext(data, meta)
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ return count
+ end,
+ can_dig = function(pos, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ mesecons = {
+ effector = {
+ action_on = function(pos, node)
+ punch_filter(data, pos, node)
+ end,
+ },
+ },
+ tube = {connect_sides = {right = 1}},
+ on_punch = function (pos, node, puncher)
+ punch_filter(data, pos, node)
+ end,
+ })
+end
+
+minetest.register_craft( {
+ output = "pipeworks:filter 2",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:plastic_sheeting" },
+ { "group:stick", "default:mese_crystal", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:mese_filter 2",
+ recipe = {
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:plastic_sheeting" },
+ { "group:stick", "default:mese", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "default:steel_ingot", "homedecor:plastic_sheeting" }
+ },
+})
diff --git a/pipeworks/flowing_logic.lua b/pipeworks/flowing_logic.lua
new file mode 100644
index 0000000..e0a6236
--- /dev/null
+++ b/pipeworks/flowing_logic.lua
@@ -0,0 +1,121 @@
+-- This file provides the actual flow and pathfinding logic that makes water
+-- move through the pipes.
+--
+-- Contributed by mauvebic, 2013-01-03, rewritten a bit by Vanessa Ezekowitz
+--
+
+local finitewater = minetest.setting_getbool("liquid_finite")
+
+pipeworks.check_for_liquids = function(pos)
+ local coords = {
+ {x=pos.x,y=pos.y-1,z=pos.z},
+ {x=pos.x,y=pos.y+1,z=pos.z},
+ {x=pos.x-1,y=pos.y,z=pos.z},
+ {x=pos.x+1,y=pos.y,z=pos.z},
+ {x=pos.x,y=pos.y,z=pos.z-1},
+ {x=pos.x,y=pos.y,z=pos.z+1}, }
+ for i =1,6 do
+ local name = minetest.get_node(coords[i]).name
+ if name and string.find(name,"water") then
+ if finitewater then minetest.remove_node(coords[i]) end
+ return true
+ end
+ end
+ return false
+end
+
+pipeworks.check_for_inflows = function(pos,node)
+ local coords = {
+ {x=pos.x,y=pos.y-1,z=pos.z},
+ {x=pos.x,y=pos.y+1,z=pos.z},
+ {x=pos.x-1,y=pos.y,z=pos.z},
+ {x=pos.x+1,y=pos.y,z=pos.z},
+ {x=pos.x,y=pos.y,z=pos.z-1},
+ {x=pos.x,y=pos.y,z=pos.z+1}, }
+ local newnode = false
+ local source = false
+ for i =1,6 do
+ if newnode then break end
+ local name = minetest.get_node(coords[i]).name
+ if name and (name == "pipeworks:pump_on" and pipeworks.check_for_liquids(coords[i])) or string.find(name,"_loaded") then
+ if string.find(name,"_loaded") then
+ source = minetest.get_meta(coords[i]):get_string("source")
+ if source == minetest.pos_to_string(pos) then break end
+ end
+ newnode = string.gsub(node.name,"empty","loaded")
+ source = {x=coords[i].x,y=coords[i].y,z=coords[i].z}
+ end
+ end
+ if newnode then
+ minetest.add_node(pos,{name=newnode, param2 = node.param2})
+ minetest.get_meta(pos):set_string("source",minetest.pos_to_string(source))
+ end
+end
+
+pipeworks.check_sources = function(pos,node)
+ local sourcepos = minetest.string_to_pos(minetest.get_meta(pos):get_string("source"))
+ if not sourcepos then return end
+ local source = minetest.get_node(sourcepos).name
+ local newnode = false
+ if source and not ((source == "pipeworks:pump_on" and pipeworks.check_for_liquids(sourcepos)) or string.find(source,"_loaded") or source == "ignore" ) then
+ newnode = string.gsub(node.name,"loaded","empty")
+ end
+
+ if newnode then
+ minetest.add_node(pos,{name=newnode, param2 = node.param2})
+ minetest.get_meta(pos):set_string("source","")
+ end
+end
+
+pipeworks.spigot_check = function(pos, node)
+ local belowname = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name
+ if belowname and (belowname == "air" or belowname == "default:water_flowing" or belowname == "default:water_source") then
+ local spigotname = minetest.get_node(pos).name
+ local fdir=node.param2
+ local check = {
+ {x=pos.x,y=pos.y,z=pos.z+1},
+ {x=pos.x+1,y=pos.y,z=pos.z},
+ {x=pos.x,y=pos.y,z=pos.z-1},
+ {x=pos.x-1,y=pos.y,z=pos.z}
+ }
+ local near_node = minetest.get_node(check[fdir+1])
+ if near_node and string.find(near_node.name, "_loaded") then
+ if spigotname and spigotname == "pipeworks:spigot" then
+ minetest.add_node(pos,{name = "pipeworks:spigot_pouring", param2 = fdir})
+ if finitewater or belowname ~= "default:water_source" then
+ minetest.add_node({x=pos.x,y=pos.y-1,z=pos.z},{name = "default:water_source"})
+ end
+ end
+ else
+ if spigotname == "pipeworks:spigot_pouring" then
+ minetest.add_node({x=pos.x,y=pos.y,z=pos.z},{name = "pipeworks:spigot", param2 = fdir})
+ if belowname == "default:water_source" and not finitewater then
+ minetest.remove_node({x=pos.x,y=pos.y-1,z=pos.z})
+ end
+ end
+ end
+ end
+end
+
+pipeworks.fountainhead_check = function(pos, node)
+ local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name
+ if abovename and (abovename == "air" or abovename == "default:water_flowing" or abovename == "default:water_source") then
+ local fountainhead_name = minetest.get_node(pos).name
+ local near_node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
+ if near_node and string.find(near_node.name, "_loaded") then
+ if fountainhead_name and fountainhead_name == "pipeworks:fountainhead" then
+ minetest.add_node(pos,{name = "pipeworks:fountainhead_pouring"})
+ if finitewater or abovename ~= "default:water_source" then
+ minetest.add_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "default:water_source"})
+ end
+ end
+ else
+ if fountainhead_name == "pipeworks:fountainhead_pouring" then
+ minetest.add_node({x=pos.x,y=pos.y,z=pos.z},{name = "pipeworks:fountainhead"})
+ if abovename == "default:water_source" and not finitewater then
+ minetest.remove_node({x=pos.x,y=pos.y+1,z=pos.z})
+ end
+ end
+ end
+ end
+end
diff --git a/pipeworks/init.lua b/pipeworks/init.lua
new file mode 100644
index 0000000..92ce02c
--- /dev/null
+++ b/pipeworks/init.lua
@@ -0,0 +1,115 @@
+-- Pipeworks mod by Vanessa Ezekowitz - 2013-07-13
+--
+-- This mod supplies various steel pipes and plastic pneumatic tubes
+-- and devices that they can connect to.
+--
+-- License: WTFPL
+--
+
+pipeworks = {}
+
+local DEBUG = false
+
+pipeworks.worldpath = minetest.get_worldpath()
+pipeworks.modpath = minetest.get_modpath("pipeworks")
+
+dofile(pipeworks.modpath.."/default_settings.txt")
+
+-- Read the external config file if it exists.
+if io.open(pipeworks.worldpath.."/pipeworks_settings.txt","r") then
+ dofile(pipeworks.worldpath.."/pipeworks_settings.txt")
+ io.close()
+end
+
+-- Random variables
+
+pipeworks.expect_infinite_stacks = true
+if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
+ pipeworks.expect_infinite_stacks = false
+end
+
+pipeworks.meseadjlist={{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=0,y=1,z=0},{x=0,y=-1,z=0},{x=1,y=0,z=0},{x=-1,y=0,z=0}}
+
+pipeworks.rules_all = {{x=0, y=0, z=1},{x=0, y=0, z=-1},{x=1, y=0, z=0},{x=-1, y=0, z=0},
+ {x=0, y=1, z=1},{x=0, y=1, z=-1},{x=1, y=1, z=0},{x=-1, y=1, z=0},
+ {x=0, y=-1, z=1},{x=0, y=-1, z=-1},{x=1, y=-1, z=0},{x=-1, y=-1, z=0},
+ {x=0, y=1, z=0}, {x=0, y=-1, z=0}}
+
+pipeworks.mesecons_rules={{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=1,z=0},{x=0,y=-1,z=0}}
+
+pipeworks.liquid_texture = "default_water.png"
+
+-- Helper functions
+
+function pipeworks.fix_image_names(table, replacement)
+ local outtable={}
+ for i in ipairs(table) do
+ outtable[i]=string.gsub(table[i], "_XXXXX", replacement)
+ end
+
+ return outtable
+end
+
+function pipeworks.add_node_box(t, b)
+ if not t or not b then return end
+ for i in ipairs(b)
+ do table.insert(t, b[i])
+ end
+end
+
+function pipeworks.may_configure(pos, player)
+ local name = player:get_player_name()
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+
+ if owner ~= "" then -- wielders and filters
+ return owner == name
+ end
+ return not minetest.is_protected(pos, name)
+end
+
+function pipeworks.replace_name(tbl,tr,name)
+ local ntbl={}
+ for key,i in pairs(tbl) do
+ if type(i)=="string" then
+ ntbl[key]=string.gsub(i,tr,name)
+ elseif type(i)=="table" then
+ ntbl[key]=pipeworks.replace_name(i,tr,name)
+ else
+ ntbl[key]=i
+ end
+ end
+ return ntbl
+end
+
+-------------------------------------------
+-- Load the various other parts of the mod
+
+dofile(pipeworks.modpath.."/common.lua")
+dofile(pipeworks.modpath.."/models.lua")
+dofile(pipeworks.modpath.."/autoplace_pipes.lua")
+dofile(pipeworks.modpath.."/autoplace_tubes.lua")
+dofile(pipeworks.modpath.."/luaentity.lua")
+dofile(pipeworks.modpath.."/item_transport.lua")
+dofile(pipeworks.modpath.."/flowing_logic.lua")
+dofile(pipeworks.modpath.."/crafts.lua")
+dofile(pipeworks.modpath.."/tube_registration.lua")
+dofile(pipeworks.modpath.."/routing_tubes.lua")
+dofile(pipeworks.modpath.."/sorting_tubes.lua")
+dofile(pipeworks.modpath.."/vacuum_tubes.lua")
+dofile(pipeworks.modpath.."/signal_tubes.lua")
+dofile(pipeworks.modpath.."/decorative_tubes.lua")
+dofile(pipeworks.modpath.."/filter-injector.lua")
+dofile(pipeworks.modpath.."/trashcan.lua")
+dofile(pipeworks.modpath.."/wielder.lua")
+
+if pipeworks.enable_pipes then dofile(pipeworks.modpath.."/pipes.lua") end
+if pipeworks.enable_teleport_tube then dofile(pipeworks.modpath.."/teleport_tube.lua") end
+if pipeworks.enable_pipe_devices then dofile(pipeworks.modpath.."/devices.lua") end
+if pipeworks.enable_redefines then dofile(pipeworks.modpath.."/compat.lua") end
+if pipeworks.enable_autocrafter then dofile(pipeworks.modpath.."/autocrafter.lua") end
+
+minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty")
+
+print("Pipeworks loaded!")
+
diff --git a/pipeworks/item_transport.lua b/pipeworks/item_transport.lua
new file mode 100644
index 0000000..e38125d
--- /dev/null
+++ b/pipeworks/item_transport.lua
@@ -0,0 +1,286 @@
+function pipeworks.tube_item(pos, item)
+ error("obsolete pipeworks.tube_item() called; change caller to use pipeworks.tube_inject_item() instead")
+end
+
+function pipeworks.tube_inject_item(pos, start_pos, velocity, item)
+ -- Take item in any format
+ local stack = ItemStack(item)
+ local obj = luaentity.add_entity(pos, "pipeworks:tubed_item")
+ obj:set_item(stack:to_string())
+ obj.start_pos = vector.new(start_pos)
+ obj:setvelocity(velocity)
+ --obj:set_color("red") -- todo: this is test-only code
+ return obj
+end
+
+-- adding two tube functions
+-- can_remove(pos,node,stack,dir) returns the maximum number of items of that stack that can be removed
+-- remove_items(pos,node,stack,dir,count) removes count items and returns them
+-- both optional w/ sensible defaults and fallback to normal allow_* function
+-- XXX: possibly change insert_object to insert_item
+
+local adjlist={{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=0,y=1,z=0},{x=0,y=-1,z=0},{x=1,y=0,z=0},{x=-1,y=0,z=0}}
+
+function pipeworks.notvel(tbl, vel)
+ local tbl2={}
+ for _,val in ipairs(tbl) do
+ if val.x ~= -vel.x or val.y ~= -vel.y or val.z ~= -vel.z then table.insert(tbl2, val) end
+ end
+ return tbl2
+end
+
+local function go_next(pos, velocity, stack)
+ local next_positions = {}
+ local max_priority = 0
+ local cnode = minetest.get_node(pos)
+ local cmeta = minetest.get_meta(pos)
+ local can_go
+ local speed = math.abs(velocity.x + velocity.y + velocity.z)
+ if speed == 0 then
+ speed = 1
+ end
+ local vel = {x = velocity.x/speed, y = velocity.y/speed, z = velocity.z/speed,speed=speed}
+ if speed >= 4.1 then
+ speed = 4
+ elseif speed >= 1.1 then
+ speed = speed - 0.1
+ else
+ speed = 1
+ end
+ vel.speed = speed
+ if minetest.registered_nodes[cnode.name] and minetest.registered_nodes[cnode.name].tube and minetest.registered_nodes[cnode.name].tube.can_go then
+ can_go = minetest.registered_nodes[cnode.name].tube.can_go(pos, cnode, vel, stack)
+ else
+ can_go = pipeworks.notvel(adjlist, vel)
+ end
+ for _, vect in ipairs(can_go) do
+ local npos = vector.add(pos, vect)
+ minetest.load_position(npos)
+ local node = minetest.get_node(npos)
+ local reg_node = minetest.registered_nodes[node.name]
+ if reg_node then
+ local tube_def = reg_node.tube
+ local tubedevice = minetest.get_item_group(node.name, "tubedevice")
+ local tube_priority = (tube_def and tube_def.priority) or 100
+ if tubedevice > 0 and tube_priority >= max_priority then
+ if not tube_def or not tube_def.can_insert or
+ tube_def.can_insert(npos, node, stack, vect) then
+ if tube_priority > max_priority then
+ max_priority = tube_priority
+ next_positions = {}
+ end
+ next_positions[#next_positions + 1] = {pos = npos, vect = vect}
+ end
+ end
+ end
+ end
+
+ if not next_positions[1] then
+ return false, nil
+ end
+
+ local n = (cmeta:get_int("tubedir") % (#next_positions)) + 1
+ if pipeworks.enable_cyclic_mode then
+ cmeta:set_int("tubedir", n)
+ end
+ local new_velocity = vector.multiply(next_positions[n].vect, vel.speed)
+ return true, new_velocity
+end
+
+minetest.register_entity("pipeworks:tubed_item", {
+ initial_properties = {
+ hp_max = 1,
+ physical = false,
+ collisionbox = {0.1, 0.1, 0.1, 0.1, 0.1, 0.1},
+ visual = "wielditem",
+ visual_size = {x = 0.15, y = 0.15},
+ textures = {""},
+ spritediv = {x = 1, y = 1},
+ initial_sprite_basepos = {x = 0, y = 0},
+ is_visible = false,
+ },
+
+ physical_state = false,
+
+ from_data = function(self, itemstring)
+ local stack = ItemStack(itemstring)
+ local itemtable = stack:to_table()
+ local itemname = nil
+ if itemtable then
+ itemname = stack:to_table().name
+ end
+ local item_texture = nil
+ local item_type = ""
+ if minetest.registered_items[itemname] then
+ item_texture = minetest.registered_items[itemname].inventory_image
+ item_type = minetest.registered_items[itemname].type
+ end
+ self.object:set_properties({
+ is_visible = true,
+ textures = {stack:get_name()}
+ })
+ local def = stack:get_definition()
+ self.object:setyaw((def and def.type == "node") and 0 or math.pi * 0.25)
+ end,
+
+ get_staticdata = luaentity.get_staticdata,
+ on_activate = function(self, staticdata) -- Legacy code, should be replaced later by luaentity.on_activate
+ if staticdata == "" or staticdata == nil then
+ return
+ end
+ if staticdata == "toremove" then
+ self.object:remove()
+ return
+ end
+ local item = minetest.deserialize(staticdata)
+ pipeworks.tube_inject_item(self.object:getpos(), item.start_pos, item.velocity, item.itemstring)
+ self.object:remove()
+ end,
+})
+
+minetest.register_entity("pipeworks:color_entity", {
+ initial_properties = {
+ hp_max = 1,
+ physical = false,
+ collisionbox = {0.1, 0.1, 0.1, 0.1, 0.1, 0.1},
+ visual = "cube",
+ visual_size = {x = 3.5, y = 3.5, z = 3.5}, -- todo: find correct size
+ textures = {""},
+ is_visible = false,
+ },
+
+ physical_state = false,
+
+ from_data = function(self, color)
+ local t = "pipeworks_color_"..color..".png"
+ local prop = {
+ is_visible = true,
+ visual = "cube",
+ textures = {t, t, t, t, t, t} -- todo: textures
+ }
+ self.object:set_properties(prop)
+ end,
+
+ get_staticdata = luaentity.get_staticdata,
+ on_activate = luaentity.on_activate,
+})
+
+luaentity.register_entity("pipeworks:tubed_item", {
+ itemstring = '',
+ item_entity = nil,
+ color_entity = nil,
+ color = nil,
+ start_pos = nil,
+
+ set_item = function(self, item)
+ local itemstring = ItemStack(item):to_string() -- Accept any input format
+ if self.itemstring == itemstring then
+ return
+ end
+ if self.item_entity then
+ self:remove_attached_entity(self.item_entity)
+ end
+ self.itemstring = itemstring
+ self.item_entity = self:add_attached_entity("pipeworks:tubed_item", itemstring)
+ end,
+
+ set_color = function(self, color)
+ if self.color == color then
+ return
+ end
+ self.color = color
+ if self.color_entity then
+ self:remove_attached_entity(self.color_entity)
+ end
+ if color then
+ self.color_entity = self:add_attached_entity("pipeworks:color_entity", color)
+ else
+ self.color_entity = nil
+ end
+ end,
+
+ on_step = function(self, dtime)
+ if self.start_pos == nil then
+ local pos = self:getpos()
+ self.start_pos = vector.round(pos)
+ self:setpos(pos)
+ end
+
+ local pos = self:getpos()
+ local stack = ItemStack(self.itemstring)
+ local drop_pos
+
+ local velocity = self:getvelocity()
+
+ local moved = false
+ local speed = math.abs(velocity.x + velocity.y + velocity.z)
+ if speed == 0 then
+ speed = 1
+ moved = true
+ end
+ local vel = {x = velocity.x / speed, y = velocity.y / speed, z = velocity.z / speed, speed = speed}
+
+ if vector.distance(pos, self.start_pos) >= 1 then
+ self.start_pos = vector.add(self.start_pos, vel)
+ moved = true
+ end
+
+ minetest.load_position(self.start_pos)
+ local node = minetest.get_node(self.start_pos)
+ if moved and minetest.get_item_group(node.name, "tubedevice_receiver") == 1 then
+ local leftover
+ if minetest.registered_nodes[node.name].tube and minetest.registered_nodes[node.name].tube.insert_object then
+ leftover = minetest.registered_nodes[node.name].tube.insert_object(self.start_pos, node, stack, vel)
+ else
+ leftover = stack
+ end
+ if leftover:is_empty() then
+ self:remove()
+ return
+ end
+ velocity = vector.multiply(velocity, -1)
+ self:setvelocity(velocity)
+ self:set_item(leftover:to_string())
+ return
+ end
+
+ if moved then
+ local found_next, new_velocity = go_next(self.start_pos, velocity, stack) -- todo: color
+ if not found_next then
+ drop_pos = minetest.find_node_near(vector.add(self.start_pos, velocity), 1, "air")
+ if drop_pos then
+ minetest.item_drop(stack, nil, drop_pos)
+ self:remove()
+ return
+ end
+ end
+
+ if new_velocity and not vector.equals(velocity, new_velocity) then
+ self:setpos(self.start_pos)
+ self:setvelocity(new_velocity)
+ end
+ end
+ end
+})
+
+if minetest.get_modpath("mesecons_mvps") then
+ mesecon.register_mvps_unmov("pipeworks:tubed_item")
+ mesecon.register_mvps_unmov("pipeworks:color_entity")
+ mesecon.register_on_mvps_move(function(moved_nodes)
+ local moved = {}
+ for _, n in ipairs(moved_nodes) do
+ moved[minetest.hash_node_position(n.oldpos)] = vector.subtract(n.pos, n.oldpos)
+ end
+ for id, entity in pairs(luaentity.entities) do
+ if entity.name == "pipeworks:tubed_item" then
+ local pos = entity:getpos()
+ local rpos = vector.round(pos)
+ local dir = moved[minetest.hash_node_position(rpos)]
+ if dir then
+ entity:setpos(vector.add(pos, dir))
+ entity.start_pos = vector.add(entity.start_pos, dir)
+ end
+ end
+ end
+ end)
+end
diff --git a/pipeworks/legacy.lua b/pipeworks/legacy.lua
new file mode 100644
index 0000000..b36cded
--- /dev/null
+++ b/pipeworks/legacy.lua
@@ -0,0 +1,59 @@
+
+if not minetest.get_modpath("auto_tree_tap") and
+ minetest.get_modpath("technic") then
+
+ minetest.register_abm({
+ nodenames = { "auto_tree_tap:off", "auto_tree_tap:on" },
+ chance = 1,
+ interval = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ inv:set_size("pick", 1)
+ inv:set_size("ghost_pick", 1)
+ inv:set_size("main", 100)
+ minetest.set_node(pos, {name = "pipeworks:nodebreaker_off", param2 = fdir})
+ minetest.registered_nodes["pipeworks:nodebreaker_off"].on_punch(pos, node)
+ inv:set_stack("pick", 1, ItemStack("technic:treetap"))
+ end
+ })
+
+ minetest.register_node(":auto_tree_tap:off", {
+ description = "Auto-Tap",
+ tiles = {"pipeworks_nodebreaker_top_off.png","pipeworks_nodebreaker_bottom_off.png","pipeworks_nodebreaker_side2_off.png","pipeworks_nodebreaker_side1_off.png",
+ "pipeworks_nodebreaker_back.png","pipeworks_nodebreaker_front_off.png"},
+ is_ground_content = true,
+ paramtype2 = "facedir",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2,tubedevice=1, not_in_creative_inventory=1 },
+ sounds = default.node_sound_stone_defaults(),
+ tube = {connect_sides={back=1}},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ inv:set_size("pick", 1)
+ inv:set_stack("pick", 1, ItemStack("default:pick_mese"))
+ end,
+ after_place_node = function (pos, placer)
+ pipeworks.scan_for_tube_objects(pos, placer)
+ local placer_pos = placer:getpos()
+
+ --correct for the player's height
+ if placer:is_player() then placer_pos.y = placer_pos.y + 1.5 end
+
+ --correct for 6d facedir
+ if placer_pos then
+ local dir = {
+ x = pos.x - placer_pos.x,
+ y = pos.y - placer_pos.y,
+ z = pos.z - placer_pos.z
+ }
+ local node = minetest.get_node(pos)
+ node.param2 = minetest.dir_to_facedir(dir, true)
+ minetest.set_node(pos, node)
+ minetest.log("action", "real (6d) facedir: " .. node.param2)
+ end
+ end,
+ after_dig_node = pipeworks.scan_for_tube_objects,
+ })
+end
diff --git a/pipeworks/luaentity.lua b/pipeworks/luaentity.lua
new file mode 100644
index 0000000..665e055
--- /dev/null
+++ b/pipeworks/luaentity.lua
@@ -0,0 +1,351 @@
+local max_entity_id = 1000000000000 -- If you need more, there's a problem with your code
+
+luaentity = {}
+
+luaentity.registered_entities = {}
+
+local filename = minetest.get_worldpath().."/luaentities"
+local function read_file()
+ local f = io.open(filename, "r")
+ if f == nil then return {} end
+ local t = f:read("*all")
+ f:close()
+ if t == "" or t == nil then return {} end
+ return minetest.deserialize(t) or {}
+end
+
+local function write_file(tbl)
+ local f = io.open(filename, "w")
+ f:write(minetest.serialize(tbl))
+ f:close()
+end
+
+local function read_entities()
+ local t = read_file()
+ for _, entity in pairs(t) do
+ setmetatable(entity, luaentity.registered_entities[entity.name])
+ end
+ return t
+end
+
+local function write_entities()
+ for _, entity in pairs(luaentity.entities) do
+ setmetatable(entity, nil)
+ for _, attached in pairs(entity._attached_entities) do
+ if attached.entity then
+ attached.entity:remove()
+ attached.entity = nil
+ end
+ end
+ entity._attached_entities_master = nil
+ end
+ write_file(luaentity.entities)
+end
+
+minetest.register_on_shutdown(write_entities)
+luaentity.entities_index = 0
+
+local function get_blockpos(pos)
+ return {x = math.floor(pos.x / 16),
+ y = math.floor(pos.y / 16),
+ z = math.floor(pos.z / 16)}
+end
+
+local active_blocks = {} -- These only contain active blocks near players (i.e., not forceloaded ones)
+local handle_active_blocks_step = 2
+local handle_active_blocks_timer = 0
+minetest.register_globalstep(function(dtime)
+ handle_active_blocks_timer = handle_active_blocks_timer + dtime
+ if handle_active_blocks_timer >= handle_active_blocks_step then
+ handle_active_blocks_timer = handle_active_blocks_timer - handle_active_blocks_step
+ local active_block_range = tonumber(minetest.setting_get("active_block_range")) or 2
+ local new_active_blocks = {}
+ for _, player in ipairs(minetest.get_connected_players()) do
+ local blockpos = get_blockpos(player:getpos())
+ local minp = vector.subtract(blockpos, active_block_range)
+ local maxp = vector.add(blockpos, active_block_range)
+
+ for x = minp.x, maxp.x do
+ for y = minp.y, maxp.y do
+ for z = minp.z, maxp.z do
+ local pos = {x = x, y = y, z = z}
+ new_active_blocks[minetest.hash_node_position(pos)] = pos
+ end
+ end
+ end
+ end
+ active_blocks = new_active_blocks
+ -- todo: callbacks on block load/unload
+ end
+end)
+
+local function is_active(pos)
+ return active_blocks[minetest.hash_node_position(get_blockpos(pos))] ~= nil
+end
+
+local entitydef_default = {
+ _attach = function(self, attached, attach_to)
+ local attached_def = self._attached_entities[attached]
+ local attach_to_def = self._attached_entities[attach_to]
+ attached_def.entity:set_attach(
+ attach_to_def.entity, "",
+ vector.subtract(attached_def.offset, attach_to_def.offset), -- todo: Does not work because is object space
+ vector.new(0, 0, 0)
+ )
+ end,
+ _set_master = function(self, index)
+ self._attached_entities_master = index
+ if not index then
+ return
+ end
+ local def = self._attached_entities[index]
+ if not def.entity then
+ return
+ end
+ def.entity:setpos(vector.add(self._pos, def.offset))
+ def.entity:setvelocity(self._velocity)
+ def.entity:setacceleration(self._acceleration)
+ end,
+ _attach_all = function(self)
+ local master = self._attached_entities_master
+ if not master then
+ return
+ end
+ for id, entity in pairs(self._attached_entities) do
+ if id ~= master and entity.entity then
+ self:_attach(id, master)
+ end
+ end
+ end,
+ _detach_all = function(self)
+ local master = self._attached_entities_master
+ for id, entity in pairs(self._attached_entities) do
+ if id ~= master and entity.entity then
+ entity.entity:set_detach()
+ end
+ end
+ end,
+ _add_attached = function(self, index)
+ local entity = self._attached_entities[index]
+ if entity.entity then
+ return
+ end
+ local entity_pos = vector.add(self._pos, entity.offset)
+ if not is_active(entity_pos) then
+ return
+ end
+ local ent = minetest.add_entity(entity_pos, entity.name):get_luaentity()
+ ent:from_data(entity.data)
+ ent.parent_id = self._id
+ ent.attached_id = index
+ entity.entity = ent.object
+ local master = self._attached_entities_master
+ if master then
+ self:_attach(index, master)
+ else
+ self:_set_master(index)
+ end
+ end,
+ _remove_attached = function(self, index)
+ local master = self._attached_entities_master
+ local entity = self._attached_entities[index]
+ local ent = entity and entity.entity
+ if entity then entity.entity = nil end
+ if index == master then
+ self:_detach_all()
+ local newmaster
+ for id, attached in pairs(self._attached_entities) do
+ if id ~= master and attached.entity then
+ newmaster = id
+ break
+ end
+ end
+ self:_set_master(newmaster)
+ self:_attach_all()
+ elseif master and ent then
+ ent:set_detach()
+ end
+ if ent then
+ ent:remove()
+ end
+ end,
+ _add_loaded = function(self)
+ for id, _ in pairs(self._attached_entities) do
+ self:_add_attached(id)
+ end
+ end,
+ getid = function(self)
+ return self._id
+ end,
+ getpos = function(self)
+ return vector.new(self._pos)
+ end,
+ setpos = function(self, pos)
+ self._pos = vector.new(pos)
+ --for _, entity in pairs(self._attached_entities) do
+ -- if entity.entity then
+ -- entity.entity:setpos(vector.add(self._pos, entity.offset))
+ -- end
+ --end
+ local master = self._attached_entities_master
+ if master then
+ local master_def = self._attached_entities[master]
+ master_def.entity:setpos(vector.add(self._pos, master_def.offset))
+ end
+ end,
+ getvelocity = function(self)
+ return vector.new(self._velocity)
+ end,
+ setvelocity = function(self, velocity)
+ self._velocity = vector.new(velocity)
+ local master = self._attached_entities_master
+ if master then
+ self._attached_entities[master].entity:setvelocity(self._velocity)
+ end
+ end,
+ getacceleration = function(self)
+ return vector.new(self._acceleration)
+ end,
+ setacceleration = function(self, acceleration)
+ self._acceleration = vector.new(acceleration)
+ local master = self._attached_entities_master
+ if master then
+ self._attached_entities[master].entity:setacceleration(self._acceleration)
+ end
+ end,
+ remove = function(self)
+ self:_detach_all()
+ for _, entity in pairs(self._attached_entities) do
+ if entity.entity then
+ entity.entity:remove()
+ end
+ end
+ luaentity.entities[self._id] = nil
+ end,
+ add_attached_entity = function(self, name, data, offset)
+ local index = #self._attached_entities + 1
+ self._attached_entities[index] = {
+ name = name,
+ data = data,
+ offset = vector.new(offset),
+ }
+ self:_add_attached(index)
+ return index
+ end,
+ remove_attached_entity = function(self, index)
+ self:_remove_attached(index)
+ self._attached_entities[index] = nil
+ end,
+}
+
+function luaentity.register_entity(name, prototype)
+ -- name = check_modname_prefix(name)
+ prototype.name = name
+ setmetatable(prototype, {__index = entitydef_default})
+ prototype.__index = prototype -- Make it possible to use it as metatable
+ luaentity.registered_entities[name] = prototype
+end
+
+-- function luaentity.get_entity_definition(entity)
+-- return luaentity.registered_entities[entity.name]
+-- end
+
+function luaentity.add_entity(pos, name)
+ if not luaentity.entities then
+ minetest.after(0, luaentity.add_entity, vector.new(pos), name)
+ return
+ end
+ local index = luaentity.entities_index
+ while luaentity.entities[index] do
+ index = index + 1
+ if index >= max_entity_id then
+ index = 0
+ end
+ end
+ luaentity.entities_index = index
+
+ local entity = {
+ name = name,
+ _id = index,
+ _pos = vector.new(pos),
+ _velocity = {x = 0, y = 0, z = 0},
+ _acceleration = {x = 0, y = 0, z = 0},
+ _attached_entities = {},
+ }
+
+ local prototype = luaentity.registered_entities[name]
+ setmetatable(entity, prototype) -- Default to prototype for other methods
+ luaentity.entities[index] = entity
+
+ if entity.on_activate then
+ entity:on_activate()
+ end
+ return entity
+end
+
+-- todo: check if remove in get_staticdata works
+function luaentity.get_staticdata(self)
+ local parent = luaentity.entities[self.parent_id]
+ if parent and parent._remove_attached then
+ parent:_remove_attached(self.attached_id)
+ end
+ return "toremove"
+end
+
+function luaentity.on_activate(self, staticdata)
+ if staticdata == "toremove" then
+ self.object:remove()
+ end
+end
+
+function luaentity.get_objects_inside_radius(pos, radius)
+ local objects = {}
+ local index = 1
+ for id, entity in pairs(luaentity.entities) do
+ if vector.distance(pos, entity:getpos()) <= radius then
+ objects[index] = entity
+ index = index + 1
+ end
+ end
+end
+
+minetest.register_globalstep(function(dtime)
+ if not luaentity.entities then
+ luaentity.entities = read_entities()
+ end
+ for id, entity in pairs(luaentity.entities) do
+ local master = entity._attached_entities_master
+ local master_def = master and entity._attached_entities[master]
+ local master_entity = master_def and master_def.entity
+ local master_entity_pos = master_entity and master_entity:getpos()
+ if master_entity_pos then
+ entity._pos = vector.subtract(master_entity_pos, master_def.offset)
+ entity._velocity = master_entity:getvelocity()
+ entity._acceleration = master_entity:getacceleration()
+ else
+ entity._pos = vector.add(vector.add(
+ entity._pos,
+ vector.multiply(entity._velocity, dtime)),
+ vector.multiply(entity._acceleration, 0.5 * dtime * dtime))
+ entity._velocity = vector.add(
+ entity._velocity,
+ vector.multiply(entity._acceleration, dtime))
+ end
+ if master and not master_entity_pos then -- The entity has somehow been cleared
+ if pipeworks.delete_item_on_clearobject then
+ entity:remove()
+ else
+ entity:_remove_attached(master)
+ entity:_add_loaded()
+ if entity.on_step then
+ entity:on_step(dtime)
+ end
+ end
+ else
+ entity:_add_loaded()
+ if entity.on_step then
+ entity:on_step(dtime)
+ end
+ end
+ end
+end)
diff --git a/pipeworks/models.lua b/pipeworks/models.lua
new file mode 100644
index 0000000..3be773c
--- /dev/null
+++ b/pipeworks/models.lua
@@ -0,0 +1,49 @@
+-----------------------------------
+-- The various pipe select boxes
+
+pipeworks.pipe_selectboxes = {
+ { -32/64, -8/64, -8/64, 8/64, 8/64, 8/64 },
+ { -8/64 , -8/64, -8/64, 32/64, 8/64, 8/64 },
+ { -8/64 , -32/64, -8/64, 8/64, 8/64, 8/64 },
+ { -8/64 , -8/64, -8/64, 8/64, 32/64, 8/64 },
+ { -8/64 , -8/64, -32/64, 8/64, 8/64, 8/64 },
+ { -8/64 , -8/64, -8/64, 8/64, 8/64, 32/64 }
+}
+
+-- Tube models
+
+pipeworks.tube_leftstub = {
+ { -32/64, -9/64, -9/64, 9/64, 9/64, 9/64 }, -- tube segment against -X face
+}
+
+pipeworks.tube_rightstub = {
+ { -9/64, -9/64, -9/64, 32/64, 9/64, 9/64 }, -- tube segment against +X face
+}
+
+pipeworks.tube_bottomstub = {
+ { -9/64, -32/64, -9/64, 9/64, 9/64, 9/64 }, -- tube segment against -Y face
+}
+
+pipeworks.tube_topstub = {
+ { -9/64, -9/64, -9/64, 9/64, 32/64, 9/64 }, -- tube segment against +Y face
+}
+
+pipeworks.tube_frontstub = {
+ { -9/64, -9/64, -32/64, 9/64, 9/64, 9/64 }, -- tube segment against -Z face
+}
+
+pipeworks.tube_backstub = {
+ { -9/64, -9/64, -9/64, 9/64, 9/64, 32/64 }, -- tube segment against -Z face
+}
+
+pipeworks.tube_boxes = {pipeworks.tube_leftstub, pipeworks.tube_rightstub, pipeworks.tube_bottomstub, pipeworks.tube_topstub, pipeworks.tube_frontstub, pipeworks.tube_backstub}
+
+pipeworks.tube_selectboxes = {
+ { -32/64, -10/64, -10/64, 10/64, 10/64, 10/64 },
+ { -10/64 , -10/64, -10/64, 32/64, 10/64, 10/64 },
+ { -10/64 , -32/64, -10/64, 10/64, 10/64, 10/64 },
+ { -10/64 , -10/64, -10/64, 10/64, 32/64, 10/64 },
+ { -10/64 , -10/64, -32/64, 10/64, 10/64, 10/64 },
+ { -10/64 , -10/64, -10/64, 10/64, 10/64, 32/64 }
+}
+
diff --git a/pipeworks/models/pipeworks_entry_panel.obj b/pipeworks/models/pipeworks_entry_panel.obj
new file mode 100644
index 0000000..27577d7
--- /dev/null
+++ b/pipeworks/models/pipeworks_entry_panel.obj
@@ -0,0 +1,390 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-entry-panel.blend'
+# www.blender.org
+o Cube.001
+v 0.030483 -0.153248 -0.468750
+v 0.030483 -0.153248 -0.500000
+v -0.030483 -0.153248 -0.468750
+v -0.030483 -0.153248 -0.500000
+v -0.086808 -0.129917 -0.468750
+v -0.086808 -0.129917 -0.500000
+v -0.129917 -0.086808 -0.468750
+v -0.129917 -0.086808 -0.500000
+v -0.153248 -0.030483 -0.468750
+v -0.153248 -0.030483 -0.500000
+v -0.153248 0.030483 -0.468750
+v -0.153248 0.030483 -0.500000
+v -0.129917 0.086808 -0.468750
+v -0.129917 0.086808 -0.500000
+v -0.086808 0.129917 -0.468750
+v -0.086808 0.129917 -0.500000
+v -0.030483 0.153248 -0.468750
+v -0.030483 0.153247 -0.500000
+v 0.030483 0.153248 -0.468750
+v 0.030483 0.153248 -0.500000
+v 0.086808 0.129917 -0.468750
+v 0.086808 0.129917 -0.500000
+v 0.129917 0.086808 -0.468750
+v 0.129917 0.086808 -0.500000
+v 0.153248 0.030483 -0.468750
+v 0.153248 0.030483 -0.500000
+v 0.153248 -0.030483 -0.468750
+v 0.153248 -0.030483 -0.500000
+v 0.129917 -0.086808 -0.468750
+v 0.129917 -0.086808 -0.500000
+v 0.086808 -0.129917 -0.468750
+v 0.086808 -0.129917 -0.500000
+v 0.024386 -0.122598 -0.468750
+v -0.024386 -0.122598 -0.468750
+v -0.069446 -0.103934 -0.468750
+v -0.103934 -0.069446 -0.468750
+v -0.122598 -0.024386 -0.468750
+v -0.122598 0.024386 -0.468750
+v -0.103934 0.069446 -0.468750
+v -0.069446 0.103934 -0.468750
+v -0.024386 0.122598 -0.468750
+v 0.024386 0.122598 -0.468750
+v 0.069446 0.103934 -0.468750
+v 0.103934 0.069446 -0.468750
+v 0.122598 0.024386 -0.468750
+v 0.122598 -0.024387 -0.468750
+v 0.103934 -0.069447 -0.468750
+v 0.069446 -0.103934 -0.468750
+v 0.000000 -0.000000 -0.468750
+v 0.000000 -0.000000 -0.500000
+v -0.103934 -0.069446 0.468750
+v -0.069447 -0.103933 0.468750
+v -0.024387 -0.122598 0.468750
+v 0.024386 -0.122598 0.468750
+v 0.086808 -0.129917 0.500000
+v 0.086808 -0.129917 0.468750
+v 0.129917 -0.086808 0.500000
+v 0.129917 -0.086808 0.468750
+v 0.153247 -0.030483 0.500000
+v 0.153247 -0.030483 0.468750
+v 0.153247 0.030483 0.500000
+v 0.153247 0.030483 0.468750
+v 0.129917 0.086808 0.500000
+v 0.129917 0.086808 0.468750
+v 0.086808 0.129917 0.500000
+v 0.086808 0.129917 0.468750
+v 0.030483 0.153248 0.500000
+v 0.030483 0.153248 0.468750
+v -0.030483 0.153248 0.500000
+v -0.030483 0.153248 0.468750
+v -0.086808 0.129917 0.500000
+v -0.086808 0.129917 0.468750
+v -0.129917 0.086808 0.500000
+v -0.129917 0.086808 0.468750
+v -0.153248 0.030483 0.500000
+v -0.153248 0.030483 0.468750
+v -0.153248 -0.030483 0.500000
+v -0.153248 -0.030483 0.468750
+v -0.129917 -0.086808 0.500000
+v -0.129917 -0.086808 0.468750
+v -0.086808 -0.129917 0.500000
+v -0.086808 -0.129917 0.468750
+v -0.030483 -0.153247 0.500000
+v -0.030483 -0.153247 0.468750
+v 0.030483 -0.153247 0.500000
+v 0.030483 -0.153247 0.468750
+v -0.122598 -0.024386 0.468750
+v -0.122598 0.024387 0.468750
+v -0.103934 0.069447 0.468750
+v -0.069447 0.103934 0.468750
+v -0.024387 0.122598 0.468750
+v 0.024386 0.122598 0.468750
+v 0.069446 0.103934 0.468750
+v 0.103933 0.069447 0.468750
+v 0.122598 0.024387 0.468750
+v 0.122598 -0.024386 0.468750
+v 0.103933 -0.069446 0.468750
+v 0.069446 -0.103933 0.468750
+v -0.000000 0.000000 0.468750
+v -0.000000 0.000000 0.500000
+v 0.500000 -0.500000 0.062500
+v -0.500000 -0.500000 0.062500
+v -0.500000 -0.500000 -0.062500
+v 0.500000 -0.500000 -0.062500
+v 0.500000 0.500000 0.062500
+v -0.500000 0.500000 0.062500
+v -0.500000 0.500000 -0.062500
+v 0.500000 0.500000 -0.062500
+vt 0.871212 0.265152
+vt 0.840909 0.265152
+vt 0.840909 0.295455
+vt 0.871212 0.295455
+vt 0.810606 0.265152
+vt 0.810606 0.295455
+vt 0.780303 0.265152
+vt 0.780303 0.295455
+vt 0.750000 0.265152
+vt 0.750000 0.295455
+vt 0.719697 0.265152
+vt 0.719697 0.295455
+vt 0.689394 0.265152
+vt 0.689394 0.295455
+vt 0.659091 0.265152
+vt 0.659091 0.295455
+vt 0.628788 0.265152
+vt 0.628788 0.295455
+vt 0.598485 0.265152
+vt 0.598485 0.295455
+vt 0.568182 0.265152
+vt 0.568182 0.295455
+vt 0.537879 0.265152
+vt 0.537879 0.295455
+vt 0.507576 0.265152
+vt 0.507576 0.295455
+vt 0.992424 0.265152
+vt 0.962121 0.265152
+vt 0.962121 0.295455
+vt 0.992424 0.295455
+vt 0.931818 0.265152
+vt 0.931818 0.295455
+vt 0.901515 0.265152
+vt 0.901515 0.295455
+vt 0.613449 0.318703
+vt 0.597693 0.397916
+vt 0.581936 0.318703
+vt 0.765436 0.318703
+vt 0.781192 0.397916
+vt 0.796949 0.318703
+vt 0.826063 0.330762
+vt 0.848346 0.353045
+vt 0.860405 0.382159
+vt 0.860405 0.413672
+vt 0.848346 0.442786
+vt 0.826063 0.465069
+vt 0.796949 0.477128
+vt 0.765436 0.477128
+vt 0.736322 0.465069
+vt 0.714039 0.442786
+vt 0.701980 0.413672
+vt 0.701980 0.382159
+vt 0.714039 0.353045
+vt 0.736322 0.330762
+vt 0.552823 0.330762
+vt 0.530540 0.353045
+vt 0.518480 0.382159
+vt 0.518480 0.413672
+vt 0.530540 0.442786
+vt 0.552822 0.465069
+vt 0.581936 0.477128
+vt 0.613449 0.477128
+vt 0.642563 0.465069
+vt 0.664846 0.442786
+vt 0.676906 0.413672
+vt 0.676906 0.382159
+vt 0.664846 0.353045
+vt 0.642563 0.330762
+vt 0.598485 0.250000
+vt 0.598485 0.007576
+vt 0.628788 0.007576
+vt 0.628788 0.250000
+vt 0.552823 0.330759
+vt 0.581937 0.318699
+vt 0.597694 0.397912
+vt 0.530540 0.353042
+vt 0.518481 0.382156
+vt 0.518481 0.413668
+vt 0.530540 0.442782
+vt 0.552823 0.465065
+vt 0.581937 0.477125
+vt 0.613450 0.477125
+vt 0.642564 0.465065
+vt 0.664847 0.442782
+vt 0.676906 0.413668
+vt 0.676906 0.382156
+vt 0.664847 0.353042
+vt 0.642564 0.330759
+vt 0.613450 0.318699
+vt 0.736320 0.330759
+vt 0.765434 0.318699
+vt 0.781190 0.397912
+vt 0.714037 0.353041
+vt 0.701978 0.382156
+vt 0.701978 0.413668
+vt 0.714037 0.442782
+vt 0.736320 0.465065
+vt 0.765434 0.477125
+vt 0.796947 0.477125
+vt 0.826061 0.465065
+vt 0.848344 0.442782
+vt 0.860403 0.413668
+vt 0.860403 0.382156
+vt 0.848344 0.353041
+vt 0.826061 0.330759
+vt 0.796947 0.318699
+vt 0.931818 0.250000
+vt 0.931818 0.007576
+vt 0.962121 0.007576
+vt 0.962121 0.250000
+vt 0.871212 0.250000
+vt 0.871212 0.007576
+vt 0.901515 0.007576
+vt 0.901515 0.250000
+vt 0.780303 0.250000
+vt 0.780303 0.007576
+vt 0.810606 0.007576
+vt 0.810606 0.250000
+vt 0.840909 0.250000
+vt 0.840909 0.007576
+vt 0.750000 0.250000
+vt 0.750000 0.007576
+vt 0.719697 0.250000
+vt 0.719697 0.007576
+vt 0.689394 0.250000
+vt 0.689394 0.007576
+vt 0.659091 0.250000
+vt 0.659091 0.007576
+vt 0.568182 0.250000
+vt 0.568182 0.007576
+vt 0.537879 0.250000
+vt 0.537879 0.007576
+vt 0.507576 0.250000
+vt 0.507576 0.007576
+vt 0.992424 0.007576
+vt 0.992424 0.250000
+vt 0.507576 0.507576
+vt 0.992424 0.507576
+vt 0.992424 0.992424
+vt 0.507576 0.992424
+vt 0.068182 0.492424
+vt 0.007576 0.492424
+vt 0.007576 0.007576
+vt 0.068182 0.007576
+vt 0.492424 0.992424
+vt 0.007576 0.992424
+vt 0.007576 0.507576
+vt 0.492424 0.507576
+vt 0.295455 0.492424
+vt 0.234848 0.492424
+vt 0.234848 0.007576
+vt 0.295455 0.007576
+vt 0.219697 0.007576
+vt 0.219697 0.492424
+vt 0.159091 0.492424
+vt 0.159091 0.007576
+vt 0.083333 0.492424
+vt 0.083333 0.007576
+vt 0.143939 0.007576
+vt 0.143939 0.492424
+s off
+f 1/1 3/2 4/3 2/4
+f 3/2 5/5 6/6 4/3
+f 5/5 7/7 8/8 6/6
+f 7/7 9/9 10/10 8/8
+f 9/9 11/11 12/12 10/10
+f 11/11 13/13 14/14 12/12
+f 13/13 15/15 16/16 14/14
+f 15/15 17/17 18/18 16/16
+f 17/17 19/19 20/20 18/18
+f 19/19 21/21 22/22 20/20
+f 21/21 23/23 24/24 22/22
+f 23/23 25/25 26/26 24/24
+f 25/27 27/28 28/29 26/30
+f 27/28 29/31 30/32 28/29
+f 31/33 1/1 2/4 32/34
+f 29/31 31/33 32/34 30/32
+f 4/35 50/36 2/37
+f 1/38 49/39 3/40
+f 3/40 49/39 5/41
+f 5/41 49/39 7/42
+f 7/42 49/39 9/43
+f 9/43 49/39 11/44
+f 11/44 49/39 13/45
+f 13/45 49/39 15/46
+f 15/46 49/39 17/47
+f 17/47 49/39 19/48
+f 19/48 49/39 21/49
+f 21/49 49/39 23/50
+f 23/50 49/39 25/51
+f 25/51 49/39 27/52
+f 27/52 49/39 29/53
+f 29/53 49/39 31/54
+f 31/54 49/39 1/38
+f 2/37 50/36 32/55
+f 32/55 50/36 30/56
+f 30/56 50/36 28/57
+f 28/57 50/36 26/58
+f 26/58 50/36 24/59
+f 24/59 50/36 22/60
+f 22/60 50/36 20/61
+f 20/61 50/36 18/62
+f 18/62 50/36 16/63
+f 16/63 50/36 14/64
+f 14/64 50/36 12/65
+f 12/65 50/36 10/66
+f 10/66 50/36 8/67
+f 8/67 50/36 6/68
+f 6/68 50/36 4/35
+f 41/69 91/70 92/71 42/72
+f 81/73 83/74 100/75
+f 79/76 81/73 100/75
+f 77/77 79/76 100/75
+f 75/78 77/77 100/75
+f 73/79 75/78 100/75
+f 71/80 73/79 100/75
+f 69/81 71/80 100/75
+f 67/82 69/81 100/75
+f 65/83 67/82 100/75
+f 63/84 65/83 100/75
+f 61/85 63/84 100/75
+f 59/86 61/85 100/75
+f 57/87 59/86 100/75
+f 55/88 57/87 100/75
+f 85/89 55/88 100/75
+f 56/90 86/91 99/92
+f 58/93 56/90 99/92
+f 60/94 58/93 99/92
+f 62/95 60/94 99/92
+f 64/96 62/95 99/92
+f 66/97 64/96 99/92
+f 68/98 66/97 99/92
+f 70/99 68/98 99/92
+f 72/100 70/99 99/92
+f 74/101 72/100 99/92
+f 76/102 74/101 99/92
+f 78/103 76/102 99/92
+f 80/104 78/103 99/92
+f 82/105 80/104 99/92
+f 84/106 82/105 99/92
+f 86/91 84/106 99/92
+f 83/74 85/89 100/75
+f 58/22 57/21 55/19 56/20
+f 56/20 55/19 85/17 86/18
+f 60/24 59/23 57/21 58/22
+f 62/26 61/25 59/23 60/24
+f 64/29 63/28 61/27 62/30
+f 66/32 65/31 63/28 64/29
+f 68/34 67/33 65/31 66/32
+f 70/4 69/1 67/33 68/34
+f 72/3 71/2 69/1 70/4
+f 74/6 73/5 71/2 72/3
+f 76/8 75/7 73/5 74/6
+f 78/10 77/9 75/7 76/8
+f 80/12 79/11 77/9 78/10
+f 82/14 81/13 79/11 80/12
+f 84/16 83/15 81/13 82/14
+f 86/18 85/17 83/15 84/16
+f 36/107 51/108 87/109 37/110
+f 34/111 53/112 52/113 35/114
+f 47/115 97/116 98/117 48/118
+f 33/119 54/120 53/112 34/111
+f 35/114 52/113 51/108 36/107
+f 48/118 98/117 54/120 33/119
+f 46/121 96/122 97/116 47/115
+f 45/123 95/124 96/122 46/121
+f 44/125 94/126 95/124 45/123
+f 43/127 93/128 94/126 44/125
+f 42/72 92/71 93/128 43/127
+f 40/129 90/130 91/70 41/69
+f 39/131 89/132 90/130 40/129
+f 38/133 88/134 89/132 39/131
+f 37/110 87/109 88/135 38/136
+f 105/137 106/138 102/139 101/140
+f 106/141 107/142 103/143 102/144
+f 107/145 108/146 104/147 103/148
+f 108/149 105/150 101/151 104/152
+f 101/153 102/154 103/155 104/156
+f 108/157 107/158 106/159 105/160
diff --git a/pipeworks/models/pipeworks_flow_sensor.obj b/pipeworks/models/pipeworks_flow_sensor.obj
new file mode 100644
index 0000000..f0ba87e
--- /dev/null
+++ b/pipeworks/models/pipeworks_flow_sensor.obj
@@ -0,0 +1,390 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-flow-sensor.blend'
+# www.blender.org
+o Cube.001
+v -0.468750 -0.153248 -0.030483
+v -0.500000 -0.153248 -0.030483
+v -0.468750 -0.153248 0.030483
+v -0.500000 -0.153248 0.030483
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.030483 0.153248
+v -0.500000 -0.030483 0.153248
+v -0.468750 0.030483 0.153248
+v -0.500000 0.030483 0.153248
+v -0.468750 0.086808 0.129917
+v -0.500000 0.086808 0.129917
+v -0.468750 0.129917 0.086808
+v -0.500000 0.129917 0.086808
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153247 0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.030483 -0.153248
+v -0.500000 0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.122598 -0.024386
+v -0.468750 -0.122598 0.024386
+v -0.468750 -0.103934 0.069446
+v -0.468750 -0.069446 0.103934
+v -0.468750 -0.024386 0.122598
+v -0.468750 0.024386 0.122598
+v -0.468750 0.069446 0.103934
+v -0.468750 0.103934 0.069446
+v -0.468750 0.122598 0.024386
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.069446 -0.103934
+v -0.468750 0.024386 -0.122598
+v -0.468750 -0.024387 -0.122598
+v -0.468750 -0.069447 -0.103934
+v -0.468750 -0.103934 -0.069446
+v -0.468750 -0.000000 -0.000000
+v -0.500000 -0.000000 -0.000000
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.103933 0.069447
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.122598 -0.024386
+v 0.500000 -0.129917 -0.086807
+v 0.468750 -0.129917 -0.086807
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.468750 -0.030483 -0.153247
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.153248 -0.030483
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.129917 0.086808
+v 0.468750 0.129917 0.086808
+v 0.500000 0.086808 0.129917
+v 0.468750 0.086808 0.129917
+v 0.500000 0.030483 0.153248
+v 0.468750 0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.153247 0.030483
+v 0.468750 -0.153247 0.030483
+v 0.500000 -0.153247 -0.030483
+v 0.468750 -0.153247 -0.030483
+v 0.468750 -0.024386 0.122598
+v 0.468750 0.024387 0.122598
+v 0.468750 0.069447 0.103934
+v 0.468750 0.103934 0.069447
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.069447 -0.103933
+v 0.468750 0.024387 -0.122598
+v 0.468750 -0.024386 -0.122598
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103933 -0.069446
+v 0.468750 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+v 0.250000 -0.187500 0.187500
+v -0.250000 -0.187500 0.187500
+v -0.250000 -0.187500 -0.187500
+v 0.250000 -0.187500 -0.187500
+v 0.250000 0.187500 0.187500
+v -0.250000 0.187500 0.187500
+v -0.250000 0.187500 -0.187500
+v 0.250000 0.187500 -0.187500
+vt 0.813725 0.460784
+vt 0.774510 0.460784
+vt 0.774510 0.500000
+vt 0.813725 0.500000
+vt 0.735294 0.460784
+vt 0.735294 0.500000
+vt 0.696078 0.460784
+vt 0.696078 0.500000
+vt 0.656863 0.460784
+vt 0.656863 0.500000
+vt 0.617647 0.460784
+vt 0.617647 0.500000
+vt 0.578431 0.460784
+vt 0.578431 0.500000
+vt 0.539216 0.460784
+vt 0.539216 0.500000
+vt 0.500000 0.460784
+vt 0.500000 0.500000
+vt 0.460784 0.460784
+vt 0.460784 0.500000
+vt 0.421569 0.460784
+vt 0.421569 0.500000
+vt 0.382353 0.460784
+vt 0.382353 0.500000
+vt 0.343137 0.460784
+vt 0.343137 0.500000
+vt 0.970588 0.460784
+vt 0.931373 0.460784
+vt 0.931373 0.500000
+vt 0.970588 0.500000
+vt 0.892157 0.460784
+vt 0.892157 0.500000
+vt 0.852941 0.460784
+vt 0.852941 0.500000
+vt 0.480968 0.531171
+vt 0.460590 0.633014
+vt 0.440211 0.531171
+vt 0.677539 0.531171
+vt 0.697917 0.633014
+vt 0.718296 0.531171
+vt 0.755950 0.546676
+vt 0.784770 0.575325
+vt 0.800366 0.612756
+vt 0.800366 0.653272
+vt 0.784770 0.690703
+vt 0.755950 0.719352
+vt 0.718296 0.734857
+vt 0.677539 0.734857
+vt 0.639884 0.719352
+vt 0.611065 0.690703
+vt 0.595468 0.653272
+vt 0.595468 0.612756
+vt 0.611065 0.575325
+vt 0.639885 0.546676
+vt 0.402557 0.546676
+vt 0.373737 0.575325
+vt 0.358140 0.612756
+vt 0.358140 0.653272
+vt 0.373737 0.690703
+vt 0.402557 0.719352
+vt 0.440211 0.734857
+vt 0.480968 0.734857
+vt 0.518622 0.719352
+vt 0.547442 0.690703
+vt 0.563039 0.653272
+vt 0.563039 0.612756
+vt 0.547442 0.575325
+vt 0.518622 0.546676
+vt 0.460784 0.441176
+vt 0.460784 0.127451
+vt 0.500000 0.127451
+vt 0.500000 0.441176
+vt 0.402558 0.546671
+vt 0.440212 0.531167
+vt 0.460591 0.633009
+vt 0.373738 0.575320
+vt 0.358141 0.612752
+vt 0.358141 0.653267
+vt 0.373738 0.690699
+vt 0.402558 0.719348
+vt 0.440212 0.734852
+vt 0.480969 0.734852
+vt 0.518623 0.719348
+vt 0.547443 0.690699
+vt 0.563040 0.653267
+vt 0.563040 0.612752
+vt 0.547443 0.575320
+vt 0.518623 0.546671
+vt 0.480969 0.531167
+vt 0.639882 0.546671
+vt 0.677537 0.531167
+vt 0.697915 0.633009
+vt 0.611063 0.575320
+vt 0.595466 0.612752
+vt 0.595466 0.653267
+vt 0.611063 0.690699
+vt 0.639882 0.719347
+vt 0.677537 0.734852
+vt 0.718293 0.734852
+vt 0.755947 0.719347
+vt 0.784767 0.690699
+vt 0.800364 0.653267
+vt 0.800364 0.612752
+vt 0.784767 0.575320
+vt 0.755948 0.546671
+vt 0.718293 0.531167
+vt 0.892157 0.441176
+vt 0.892157 0.127451
+vt 0.931373 0.127451
+vt 0.931373 0.441176
+vt 0.813725 0.441176
+vt 0.813725 0.127451
+vt 0.852941 0.127451
+vt 0.852941 0.441176
+vt 0.696078 0.441176
+vt 0.696078 0.127451
+vt 0.735294 0.127451
+vt 0.735294 0.441176
+vt 0.774510 0.441176
+vt 0.774510 0.127451
+vt 0.656863 0.441176
+vt 0.656863 0.127451
+vt 0.617647 0.441176
+vt 0.617647 0.127451
+vt 0.578431 0.441176
+vt 0.578431 0.127451
+vt 0.539216 0.441176
+vt 0.539216 0.127451
+vt 0.421569 0.441176
+vt 0.421569 0.127451
+vt 0.382353 0.441176
+vt 0.382353 0.127451
+vt 0.343137 0.441176
+vt 0.343137 0.127451
+vt 0.970588 0.127451
+vt 0.970588 0.441176
+vt 0.009804 0.500000
+vt 0.323529 0.500000
+vt 0.323529 0.735294
+vt 0.009804 0.735294
+vt 0.264706 0.990196
+vt 0.264706 0.754902
+vt 0.500000 0.754902
+vt 0.500000 0.990196
+vt 0.519608 0.754902
+vt 0.833333 0.754902
+vt 0.833333 0.990196
+vt 0.519608 0.990196
+vt 0.245098 0.754902
+vt 0.245098 0.990196
+vt 0.009804 0.990196
+vt 0.009804 0.754902
+vt 0.323529 0.245098
+vt 0.009804 0.245098
+vt 0.009804 0.009804
+vt 0.323529 0.009804
+vt 0.009804 0.254902
+vt 0.323529 0.254902
+vt 0.323529 0.490196
+vt 0.009804 0.490196
+s off
+f 1/1 3/2 4/3 2/4
+f 3/2 5/5 6/6 4/3
+f 5/5 7/7 8/8 6/6
+f 7/7 9/9 10/10 8/8
+f 9/9 11/11 12/12 10/10
+f 11/11 13/13 14/14 12/12
+f 13/13 15/15 16/16 14/14
+f 15/15 17/17 18/18 16/16
+f 17/17 19/19 20/20 18/18
+f 19/19 21/21 22/22 20/20
+f 21/21 23/23 24/24 22/22
+f 23/23 25/25 26/26 24/24
+f 25/27 27/28 28/29 26/30
+f 27/28 29/31 30/32 28/29
+f 31/33 1/1 2/4 32/34
+f 29/31 31/33 32/34 30/32
+f 4/35 50/36 2/37
+f 1/38 49/39 3/40
+f 3/40 49/39 5/41
+f 5/41 49/39 7/42
+f 7/42 49/39 9/43
+f 9/43 49/39 11/44
+f 11/44 49/39 13/45
+f 13/45 49/39 15/46
+f 15/46 49/39 17/47
+f 17/47 49/39 19/48
+f 19/48 49/39 21/49
+f 21/49 49/39 23/50
+f 23/50 49/39 25/51
+f 25/51 49/39 27/52
+f 27/52 49/39 29/53
+f 29/53 49/39 31/54
+f 31/54 49/39 1/38
+f 2/37 50/36 32/55
+f 32/55 50/36 30/56
+f 30/56 50/36 28/57
+f 28/57 50/36 26/58
+f 26/58 50/36 24/59
+f 24/59 50/36 22/60
+f 22/60 50/36 20/61
+f 20/61 50/36 18/62
+f 18/62 50/36 16/63
+f 16/63 50/36 14/64
+f 14/64 50/36 12/65
+f 12/65 50/36 10/66
+f 10/66 50/36 8/67
+f 8/67 50/36 6/68
+f 6/68 50/36 4/35
+f 41/69 91/70 92/71 42/72
+f 81/73 83/74 100/75
+f 79/76 81/73 100/75
+f 77/77 79/76 100/75
+f 75/78 77/77 100/75
+f 73/79 75/78 100/75
+f 71/80 73/79 100/75
+f 69/81 71/80 100/75
+f 67/82 69/81 100/75
+f 65/83 67/82 100/75
+f 63/84 65/83 100/75
+f 61/85 63/84 100/75
+f 59/86 61/85 100/75
+f 57/87 59/86 100/75
+f 55/88 57/87 100/75
+f 85/89 55/88 100/75
+f 56/90 86/91 99/92
+f 58/93 56/90 99/92
+f 60/94 58/93 99/92
+f 62/95 60/94 99/92
+f 64/96 62/95 99/92
+f 66/97 64/96 99/92
+f 68/98 66/97 99/92
+f 70/99 68/98 99/92
+f 72/100 70/99 99/92
+f 74/101 72/100 99/92
+f 76/102 74/101 99/92
+f 78/103 76/102 99/92
+f 80/104 78/103 99/92
+f 82/105 80/104 99/92
+f 84/106 82/105 99/92
+f 86/91 84/106 99/92
+f 83/74 85/89 100/75
+f 58/22 57/21 55/19 56/20
+f 56/20 55/19 85/17 86/18
+f 60/24 59/23 57/21 58/22
+f 62/26 61/25 59/23 60/24
+f 64/29 63/28 61/27 62/30
+f 66/32 65/31 63/28 64/29
+f 68/34 67/33 65/31 66/32
+f 70/4 69/1 67/33 68/34
+f 72/3 71/2 69/1 70/4
+f 74/6 73/5 71/2 72/3
+f 76/8 75/7 73/5 74/6
+f 78/10 77/9 75/7 76/8
+f 80/12 79/11 77/9 78/10
+f 82/14 81/13 79/11 80/12
+f 84/16 83/15 81/13 82/14
+f 86/18 85/17 83/15 84/16
+f 36/107 51/108 87/109 37/110
+f 34/111 53/112 52/113 35/114
+f 47/115 97/116 98/117 48/118
+f 33/119 54/120 53/112 34/111
+f 35/114 52/113 51/108 36/107
+f 48/118 98/117 54/120 33/119
+f 46/121 96/122 97/116 47/115
+f 45/123 95/124 96/122 46/121
+f 44/125 94/126 95/124 45/123
+f 43/127 93/128 94/126 44/125
+f 42/72 92/71 93/128 43/127
+f 40/129 90/130 91/70 41/69
+f 39/131 89/132 90/130 40/129
+f 38/133 88/134 89/132 39/131
+f 37/110 87/109 88/135 38/136
+f 105/137 106/138 102/139 101/140
+f 106/141 107/142 103/143 102/144
+f 107/145 108/146 104/147 103/148
+f 108/149 105/150 101/151 104/152
+f 101/153 102/154 103/155 104/156
+f 108/157 107/158 106/159 105/160
diff --git a/pipeworks/models/pipeworks_fountainhead.obj b/pipeworks/models/pipeworks_fountainhead.obj
new file mode 100644
index 0000000..7685dbf
--- /dev/null
+++ b/pipeworks/models/pipeworks_fountainhead.obj
@@ -0,0 +1,352 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-fountainhead.blend'
+# www.blender.org
+o Cube.001
+v 0.153248 -0.468750 -0.030483
+v 0.153248 -0.500000 -0.030483
+v 0.153248 -0.468750 0.030483
+v 0.153248 -0.500000 0.030483
+v 0.129917 -0.468750 0.086808
+v 0.129917 -0.500000 0.086808
+v 0.086808 -0.468750 0.129917
+v 0.086808 -0.500000 0.129917
+v 0.030483 -0.468750 0.153248
+v 0.030483 -0.500000 0.153248
+v -0.030483 -0.468750 0.153248
+v -0.030483 -0.500000 0.153248
+v -0.086808 -0.468750 0.129917
+v -0.086808 -0.500000 0.129917
+v -0.129917 -0.468750 0.086808
+v -0.129917 -0.500000 0.086808
+v -0.153247 -0.468750 0.030483
+v -0.153247 -0.500000 0.030483
+v -0.153247 -0.468750 -0.030483
+v -0.153247 -0.500000 -0.030483
+v -0.129917 -0.468750 -0.086808
+v -0.129917 -0.500000 -0.086808
+v -0.086808 -0.468750 -0.129917
+v -0.086807 -0.500000 -0.129917
+v -0.030482 -0.468750 -0.153248
+v -0.030482 -0.500000 -0.153248
+v 0.030483 -0.468750 -0.153248
+v 0.030483 -0.500000 -0.153248
+v 0.086808 -0.468750 -0.129917
+v 0.086808 -0.500000 -0.129917
+v 0.129918 -0.468750 -0.086808
+v 0.129918 -0.500000 -0.086808
+v 0.122598 -0.468750 -0.024386
+v 0.122598 -0.468750 0.024386
+v 0.103934 -0.468750 0.069446
+v 0.069447 -0.468750 0.103934
+v 0.024387 -0.468750 0.122598
+v -0.024386 -0.468750 0.122598
+v -0.069446 -0.468750 0.103934
+v -0.103933 -0.468750 0.069446
+v -0.122598 -0.468750 0.024386
+v -0.122598 -0.468750 -0.024386
+v -0.103933 -0.468750 -0.069446
+v -0.069446 -0.468750 -0.103934
+v -0.024386 -0.468750 -0.122598
+v 0.024387 -0.468750 -0.122598
+v 0.069447 -0.468750 -0.103934
+v 0.103934 -0.468750 -0.069446
+v 0.000000 -0.468750 0.000000
+v 0.000000 -0.500000 -0.000000
+v 0.069446 0.312500 0.103934
+v 0.103933 0.312500 0.069447
+v 0.122598 0.312500 0.024387
+v 0.122598 0.312500 -0.024386
+v 0.129917 0.500000 -0.086808
+v 0.129917 0.312500 -0.086808
+v 0.086808 0.500000 -0.129917
+v 0.086808 0.312500 -0.129917
+v 0.030483 0.500000 -0.153247
+v 0.030483 0.312500 -0.153248
+v -0.030483 0.500000 -0.153247
+v -0.030483 0.312500 -0.153248
+v -0.086808 0.500000 -0.129917
+v -0.086808 0.312500 -0.129917
+v -0.129918 0.500000 -0.086808
+v -0.129918 0.312500 -0.086808
+v -0.153248 0.500000 -0.030483
+v -0.153248 0.312500 -0.030483
+v -0.153248 0.500000 0.030483
+v -0.153248 0.312500 0.030483
+v -0.129918 0.500000 0.086808
+v -0.129918 0.312500 0.086808
+v -0.086808 0.500000 0.129917
+v -0.086808 0.312500 0.129917
+v -0.030483 0.500000 0.153248
+v -0.030483 0.312500 0.153248
+v 0.030482 0.500000 0.153248
+v 0.030482 0.312500 0.153248
+v 0.086807 0.500000 0.129917
+v 0.086807 0.312500 0.129917
+v 0.129917 0.500000 0.086808
+v 0.129917 0.312500 0.086808
+v 0.153247 0.500000 0.030483
+v 0.153247 0.312500 0.030483
+v 0.153247 0.500000 -0.030483
+v 0.153247 0.312500 -0.030483
+v 0.024386 0.312500 0.122598
+v -0.024387 0.312500 0.122598
+v -0.069447 0.312500 0.103934
+v -0.103934 0.312500 0.069446
+v -0.122599 0.312500 0.024386
+v -0.122599 0.312500 -0.024386
+v -0.103934 0.312500 -0.069446
+v -0.069447 0.312500 -0.103934
+v -0.024387 0.312500 -0.122598
+v 0.024386 0.312500 -0.122598
+v 0.069446 0.312500 -0.103933
+v 0.103933 0.312500 -0.069446
+v -0.000000 0.312500 0.000000
+v -0.000000 0.500000 0.000000
+vt 0.680556 0.486111
+vt 0.625000 0.486111
+vt 0.625000 0.652778
+vt 0.680556 0.652778
+vt 0.569444 0.486111
+vt 0.569444 0.652778
+vt 0.513889 0.486111
+vt 0.513889 0.652778
+vt 0.458333 0.486111
+vt 0.458333 0.652778
+vt 0.402778 0.486111
+vt 0.402778 0.652778
+vt 0.347222 0.486111
+vt 0.347222 0.652778
+vt 0.291667 0.486111
+vt 0.291667 0.652778
+vt 0.236111 0.486111
+vt 0.236111 0.652778
+vt 0.180556 0.486111
+vt 0.180556 0.652778
+vt 0.125000 0.486111
+vt 0.125000 0.652778
+vt 0.069444 0.486111
+vt 0.069444 0.652778
+vt 0.013889 0.486111
+vt 0.013889 0.652778
+vt 0.902778 0.486111
+vt 0.847222 0.486111
+vt 0.847222 0.652778
+vt 0.902778 0.652778
+vt 0.791667 0.486111
+vt 0.791667 0.652778
+vt 0.736111 0.486111
+vt 0.736111 0.652778
+vt 0.194034 0.696809
+vt 0.165430 0.839757
+vt 0.136827 0.696809
+vt 0.469943 0.696809
+vt 0.498546 0.839757
+vt 0.527150 0.696809
+vt 0.580002 0.718572
+vt 0.620453 0.758784
+vt 0.642345 0.811323
+vt 0.642345 0.868191
+vt 0.620453 0.920730
+vt 0.580002 0.960942
+vt 0.527149 0.982704
+vt 0.469943 0.982704
+vt 0.417091 0.960942
+vt 0.376639 0.920730
+vt 0.354747 0.868191
+vt 0.354747 0.811323
+vt 0.376639 0.758784
+vt 0.417091 0.718572
+vt 0.083975 0.718572
+vt 0.043524 0.758784
+vt 0.021631 0.811323
+vt 0.021631 0.868191
+vt 0.043523 0.920730
+vt 0.083975 0.960942
+vt 0.136827 0.982704
+vt 0.194034 0.982704
+vt 0.246886 0.960942
+vt 0.287337 0.920730
+vt 0.309229 0.868191
+vt 0.309229 0.811323
+vt 0.287337 0.758784
+vt 0.246886 0.718572
+vt 0.180556 0.458333
+vt 0.180556 0.013889
+vt 0.236111 0.013889
+vt 0.236111 0.458333
+vt 0.750889 0.718565
+vt 0.803741 0.696803
+vt 0.832345 0.839750
+vt 0.710438 0.758777
+vt 0.688546 0.811316
+vt 0.688546 0.868184
+vt 0.710438 0.920723
+vt 0.750889 0.960935
+vt 0.803741 0.982698
+vt 0.860948 0.982698
+vt 0.913800 0.960935
+vt 0.954251 0.920723
+vt 0.976143 0.868184
+vt 0.976143 0.811316
+vt 0.954251 0.758777
+vt 0.913800 0.718565
+vt 0.860948 0.696803
+vt 0.417087 0.718565
+vt 0.469939 0.696803
+vt 0.498543 0.839750
+vt 0.376636 0.758777
+vt 0.354744 0.811316
+vt 0.354744 0.868184
+vt 0.376636 0.920723
+vt 0.417087 0.960935
+vt 0.469939 0.982698
+vt 0.527146 0.982698
+vt 0.579998 0.960935
+vt 0.620449 0.920723
+vt 0.642341 0.868184
+vt 0.642341 0.811316
+vt 0.620449 0.758777
+vt 0.579998 0.718565
+vt 0.527146 0.696803
+vt 0.791667 0.458333
+vt 0.791667 0.013889
+vt 0.847222 0.013889
+vt 0.847222 0.458333
+vt 0.680556 0.458333
+vt 0.680556 0.013889
+vt 0.736111 0.013889
+vt 0.736111 0.458333
+vt 0.513889 0.458333
+vt 0.513889 0.013889
+vt 0.569444 0.013889
+vt 0.569444 0.458333
+vt 0.625000 0.458333
+vt 0.625000 0.013889
+vt 0.458333 0.458333
+vt 0.458333 0.013889
+vt 0.402778 0.458333
+vt 0.402778 0.013889
+vt 0.347222 0.458333
+vt 0.347222 0.013889
+vt 0.291667 0.458333
+vt 0.291667 0.013889
+vt 0.125000 0.458333
+vt 0.125000 0.013889
+vt 0.069444 0.458333
+vt 0.069444 0.013889
+vt 0.013889 0.458333
+vt 0.013889 0.013889
+vt 0.902778 0.013889
+vt 0.902778 0.458333
+s off
+f 1/1 3/2 4/3 2/4
+f 3/2 5/5 6/6 4/3
+f 5/5 7/7 8/8 6/6
+f 7/7 9/9 10/10 8/8
+f 9/9 11/11 12/12 10/10
+f 11/11 13/13 14/14 12/12
+f 13/13 15/15 16/16 14/14
+f 15/15 17/17 18/18 16/16
+f 17/17 19/19 20/20 18/18
+f 19/19 21/21 22/22 20/20
+f 21/21 23/23 24/24 22/22
+f 23/23 25/25 26/26 24/24
+f 25/27 27/28 28/29 26/30
+f 27/28 29/31 30/32 28/29
+f 31/33 1/1 2/4 32/34
+f 29/31 31/33 32/34 30/32
+f 4/35 50/36 2/37
+f 1/38 49/39 3/40
+f 3/40 49/39 5/41
+f 5/41 49/39 7/42
+f 7/42 49/39 9/43
+f 9/43 49/39 11/44
+f 11/44 49/39 13/45
+f 13/45 49/39 15/46
+f 15/46 49/39 17/47
+f 17/47 49/39 19/48
+f 19/48 49/39 21/49
+f 21/49 49/39 23/50
+f 23/50 49/39 25/51
+f 25/51 49/39 27/52
+f 27/52 49/39 29/53
+f 29/53 49/39 31/54
+f 31/54 49/39 1/38
+f 2/37 50/36 32/55
+f 32/55 50/36 30/56
+f 30/56 50/36 28/57
+f 28/57 50/36 26/58
+f 26/58 50/36 24/59
+f 24/59 50/36 22/60
+f 22/60 50/36 20/61
+f 20/61 50/36 18/62
+f 18/62 50/36 16/63
+f 16/63 50/36 14/64
+f 14/64 50/36 12/65
+f 12/65 50/36 10/66
+f 10/66 50/36 8/67
+f 8/67 50/36 6/68
+f 6/68 50/36 4/35
+f 41/69 91/70 92/71 42/72
+f 81/73 83/74 100/75
+f 79/76 81/73 100/75
+f 77/77 79/76 100/75
+f 75/78 77/77 100/75
+f 73/79 75/78 100/75
+f 71/80 73/79 100/75
+f 69/81 71/80 100/75
+f 67/82 69/81 100/75
+f 65/83 67/82 100/75
+f 63/84 65/83 100/75
+f 61/85 63/84 100/75
+f 59/86 61/85 100/75
+f 57/87 59/86 100/75
+f 55/88 57/87 100/75
+f 85/89 55/88 100/75
+f 56/90 86/91 99/92
+f 58/93 56/90 99/92
+f 60/94 58/93 99/92
+f 62/95 60/94 99/92
+f 64/96 62/95 99/92
+f 66/97 64/96 99/92
+f 68/98 66/97 99/92
+f 70/99 68/98 99/92
+f 72/100 70/99 99/92
+f 74/101 72/100 99/92
+f 76/102 74/101 99/92
+f 78/103 76/102 99/92
+f 80/104 78/103 99/92
+f 82/105 80/104 99/92
+f 84/106 82/105 99/92
+f 86/91 84/106 99/92
+f 83/74 85/89 100/75
+f 58/22 57/21 55/19 56/20
+f 56/20 55/19 85/17 86/18
+f 60/24 59/23 57/21 58/22
+f 62/26 61/25 59/23 60/24
+f 64/29 63/28 61/27 62/30
+f 66/32 65/31 63/28 64/29
+f 68/34 67/33 65/31 66/32
+f 70/4 69/1 67/33 68/34
+f 72/3 71/2 69/1 70/4
+f 74/6 73/5 71/2 72/3
+f 76/8 75/7 73/5 74/6
+f 78/10 77/9 75/7 76/8
+f 80/12 79/11 77/9 78/10
+f 82/14 81/13 79/11 80/12
+f 84/16 83/15 81/13 82/14
+f 86/18 85/17 83/15 84/16
+f 36/107 51/108 87/109 37/110
+f 34/111 53/112 52/113 35/114
+f 47/115 97/116 98/117 48/118
+f 33/119 54/120 53/112 34/111
+f 35/114 52/113 51/108 36/107
+f 48/118 98/117 54/120 33/119
+f 46/121 96/122 97/116 47/115
+f 45/123 95/124 96/122 46/121
+f 44/125 94/126 95/124 45/123
+f 43/127 93/128 94/126 44/125
+f 42/72 92/71 93/128 43/127
+f 40/129 90/130 91/70 41/69
+f 39/131 89/132 90/130 40/129
+f 38/133 88/134 89/132 39/131
+f 37/110 87/109 88/135 38/136
diff --git a/pipeworks/models/pipeworks_pipe_10.obj b/pipeworks/models/pipeworks_pipe_10.obj
new file mode 100644
index 0000000..9edb938
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_10.obj
@@ -0,0 +1,891 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-6way.blend'
+# www.blender.org
+mtllib pipeworks_pipe_10.mtl
+o Cube.000
+v 0.069446 -0.468750 -0.103934
+v 0.103933 -0.468750 -0.069446
+v 0.122598 -0.468750 -0.024386
+v 0.122598 -0.468750 0.024386
+v 0.129917 -0.500000 0.086808
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.500000 0.129917
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.500000 0.153247
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.500000 0.153247
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.500000 0.129917
+v -0.086808 -0.468750 0.129917
+v -0.129918 -0.500000 0.086808
+v -0.129917 -0.468750 0.086808
+v -0.153248 -0.500000 0.030483
+v -0.153248 -0.468750 0.030483
+v -0.153248 -0.500000 -0.030483
+v -0.153248 -0.468750 -0.030483
+v -0.129918 -0.500000 -0.086808
+v -0.129917 -0.468750 -0.086808
+v -0.086808 -0.500000 -0.129917
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.500000 -0.153248
+v -0.030483 -0.468750 -0.153248
+v 0.030482 -0.500000 -0.153248
+v 0.030482 -0.468750 -0.153248
+v 0.086807 -0.500000 -0.129917
+v 0.086807 -0.468750 -0.129917
+v 0.129917 -0.500000 -0.086808
+v 0.129917 -0.468750 -0.086808
+v 0.153247 -0.500000 -0.030483
+v 0.153247 -0.468750 -0.030483
+v 0.153247 -0.500000 0.030483
+v 0.153247 -0.468750 0.030483
+v 0.024386 -0.468750 -0.122598
+v -0.024387 -0.468750 -0.122598
+v -0.069447 -0.468750 -0.103934
+v -0.103934 -0.468750 -0.069446
+v -0.122599 -0.468750 -0.024386
+v -0.122599 -0.468750 0.024386
+v -0.103934 -0.468750 0.069446
+v -0.069447 -0.468750 0.103934
+v -0.024387 -0.468750 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.069446 -0.468750 0.103933
+v 0.103933 -0.468750 0.069446
+v -0.000000 -0.468750 -0.000000
+v -0.000000 -0.500000 -0.000000
+v -0.024386 -0.024391 -0.122598
+v -0.069446 -0.024391 -0.103934
+v -0.103934 -0.024391 -0.069446
+v -0.122598 -0.024391 -0.024386
+v -0.122598 -0.024391 0.024386
+v -0.103934 -0.024391 0.069446
+v -0.069446 -0.024391 0.103934
+v -0.024386 -0.024391 0.122598
+v 0.024386 -0.024391 0.122598
+v 0.103934 -0.024391 0.069446
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 -0.069446
+v 0.122598 -0.024391 -0.024386
+v 0.122598 -0.024391 0.024386
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v 0.153248 0.468750 0.030483
+v 0.153248 0.500000 0.030483
+v 0.153248 0.468750 -0.030483
+v 0.153248 0.500000 -0.030483
+v 0.129917 0.468750 -0.086808
+v 0.129917 0.500000 -0.086808
+v 0.086808 0.468750 -0.129917
+v 0.086808 0.500000 -0.129917
+v 0.030483 0.468750 -0.153248
+v 0.030483 0.500000 -0.153248
+v -0.030483 0.468750 -0.153248
+v -0.030483 0.500000 -0.153248
+v -0.086808 0.468750 -0.129917
+v -0.086808 0.500000 -0.129917
+v -0.129917 0.468750 -0.086808
+v -0.129917 0.500000 -0.086808
+v -0.153247 0.468750 -0.030483
+v -0.153247 0.500000 -0.030483
+v -0.153247 0.468750 0.030483
+v -0.153247 0.500000 0.030483
+v -0.129917 0.468750 0.086808
+v -0.129917 0.500000 0.086808
+v -0.086808 0.468750 0.129917
+v -0.086808 0.500000 0.129917
+v -0.030483 0.468750 0.153248
+v -0.030483 0.500000 0.153248
+v 0.030483 0.468750 0.153248
+v 0.030483 0.500000 0.153248
+v 0.086808 0.468750 0.129917
+v 0.086808 0.500000 0.129917
+v 0.129917 0.468750 0.086808
+v 0.129918 0.500000 0.086808
+v 0.122598 0.468750 0.024386
+v 0.122598 0.468750 -0.024386
+v 0.103934 0.468750 -0.069446
+v 0.069447 0.468750 -0.103934
+v 0.024387 0.468750 -0.122598
+v -0.024386 0.468750 -0.122598
+v -0.069446 0.468750 -0.103934
+v -0.103933 0.468750 -0.069446
+v -0.122598 0.468750 -0.024386
+v -0.122598 0.468750 0.024386
+v -0.103933 0.468750 0.069446
+v -0.069446 0.468750 0.103934
+v -0.024386 0.468750 0.122598
+v 0.024387 0.468750 0.122598
+v 0.069447 0.468750 0.103934
+v 0.103934 0.468750 0.069446
+v 0.000000 0.468750 -0.000000
+v 0.000000 0.500000 0.000000
+v -0.024386 0.024390 -0.122598
+v -0.069446 0.024390 -0.103934
+v -0.103934 0.024390 -0.069446
+v -0.122598 0.024390 -0.024386
+v -0.122598 0.024390 0.024386
+v -0.103934 0.024390 0.069446
+v -0.069446 0.024390 0.103934
+v -0.024386 0.024389 0.122598
+v 0.024386 0.024389 0.122598
+v 0.103934 0.024390 0.069446
+v 0.069446 0.024390 0.103934
+v 0.103934 0.024390 -0.069446
+v 0.122598 0.024390 -0.024386
+v 0.122598 0.024390 0.024386
+v 0.069446 0.024390 -0.103934
+v 0.024386 0.024390 -0.122598
+v 0.468750 -0.153248 0.030483
+v 0.500000 -0.153248 0.030483
+v 0.468750 -0.153248 -0.030483
+v 0.500000 -0.153248 -0.030483
+v 0.468750 -0.129917 -0.086808
+v 0.500000 -0.129917 -0.086808
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.030483 -0.153248
+v 0.500000 -0.030483 -0.153248
+v 0.468750 0.030483 -0.153248
+v 0.500000 0.030483 -0.153248
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153247 -0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.129917 0.086808
+v 0.500000 0.129917 0.086808
+v 0.468750 0.086808 0.129917
+v 0.500000 0.086808 0.129917
+v 0.468750 0.030483 0.153248
+v 0.500000 0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.122598 0.024386
+v 0.468750 -0.122598 -0.024386
+v 0.468750 -0.103934 -0.069446
+v 0.468750 -0.069446 -0.103934
+v 0.468750 -0.024386 -0.122598
+v 0.468750 0.024386 -0.122598
+v 0.468750 0.069446 -0.103934
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.122598 0.024386
+v 0.468750 0.103934 0.069446
+v 0.468750 0.069446 0.103934
+v 0.468750 0.024386 0.122598
+v 0.468750 -0.024387 0.122598
+v 0.468750 -0.069447 0.103934
+v 0.468750 -0.103934 0.069446
+v 0.468750 -0.000000 -0.000000
+v 0.500000 -0.000000 0.000000
+v -0.468750 -0.069446 -0.103934
+v -0.468750 -0.103933 -0.069446
+v -0.468750 -0.122598 -0.024387
+v -0.468750 -0.122598 0.024386
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.030483 0.153247
+v -0.468750 -0.030483 0.153248
+v -0.500000 0.030483 0.153247
+v -0.468750 0.030483 0.153248
+v -0.500000 0.086808 0.129917
+v -0.468750 0.086808 0.129917
+v -0.500000 0.129917 0.086808
+v -0.468750 0.129917 0.086808
+v -0.500000 0.153248 0.030483
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.030483 -0.153248
+v -0.468750 0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.153247 -0.030483
+v -0.468750 -0.153247 -0.030483
+v -0.500000 -0.153247 0.030483
+v -0.468750 -0.153247 0.030483
+v -0.468750 -0.024386 -0.122598
+v -0.468750 0.024387 -0.122598
+v -0.468750 0.069447 -0.103934
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.122598 0.024386
+v -0.468750 0.103934 0.069446
+v -0.468750 0.069447 0.103934
+v -0.468750 0.024387 0.122598
+v -0.468750 -0.024386 0.122598
+v -0.468750 -0.069446 0.103933
+v -0.468750 -0.103933 0.069446
+v -0.468750 0.000000 -0.000000
+v -0.500000 0.000000 -0.000000
+v 0.069446 -0.103934 0.468750
+v 0.103933 -0.069447 0.468750
+v 0.122598 -0.024387 0.468750
+v 0.122598 0.024386 0.468750
+v 0.129917 0.086807 0.500000
+v 0.129917 0.086807 0.468750
+v 0.086808 0.129917 0.500000
+v 0.086808 0.129917 0.468750
+v 0.030483 0.153247 0.500000
+v 0.030483 0.153247 0.468750
+v -0.030483 0.153247 0.500000
+v -0.030483 0.153247 0.468750
+v -0.086808 0.129917 0.500000
+v -0.086808 0.129917 0.468750
+v -0.129918 0.086808 0.500000
+v -0.129917 0.086808 0.468750
+v -0.153248 0.030483 0.500000
+v -0.153248 0.030483 0.468750
+v -0.153248 -0.030483 0.500000
+v -0.153248 -0.030483 0.468750
+v -0.129918 -0.086808 0.500000
+v -0.129917 -0.086808 0.468750
+v -0.086808 -0.129917 0.500000
+v -0.086808 -0.129917 0.468750
+v -0.030483 -0.153248 0.500000
+v -0.030483 -0.153248 0.468750
+v 0.030482 -0.153248 0.500000
+v 0.030482 -0.153248 0.468750
+v 0.086807 -0.129917 0.500000
+v 0.086807 -0.129917 0.468750
+v 0.129917 -0.086808 0.500000
+v 0.129917 -0.086808 0.468750
+v 0.153247 -0.030483 0.500000
+v 0.153247 -0.030483 0.468750
+v 0.153247 0.030483 0.500000
+v 0.153247 0.030483 0.468750
+v 0.024386 -0.122598 0.468750
+v -0.024387 -0.122598 0.468750
+v -0.069447 -0.103934 0.468750
+v -0.103934 -0.069447 0.468750
+v -0.122599 -0.024387 0.468750
+v -0.122599 0.024386 0.468750
+v -0.103934 0.069446 0.468750
+v -0.069447 0.103933 0.468750
+v -0.024387 0.122598 0.468750
+v 0.024386 0.122598 0.468750
+v 0.069446 0.103933 0.468750
+v 0.103933 0.069446 0.468750
+v -0.000000 -0.000000 0.468750
+v -0.000000 -0.000000 0.500000
+v -0.024386 -0.122598 0.024391
+v -0.069446 -0.103934 0.024391
+v -0.103934 -0.069446 0.024391
+v -0.122598 -0.024386 0.024391
+v -0.122598 0.024386 0.024391
+v -0.103934 0.069446 0.024391
+v -0.069446 0.103934 0.024391
+v -0.024386 0.122598 0.024391
+v 0.024386 0.122598 0.024391
+v 0.103934 0.069446 0.024391
+v 0.069446 0.103934 0.024391
+v 0.103934 -0.069446 0.024391
+v 0.122598 -0.024386 0.024391
+v 0.122598 0.024386 0.024391
+v 0.069446 -0.103934 0.024391
+v 0.024386 -0.122598 0.024391
+v 0.153248 0.030483 -0.468750
+v 0.153248 0.030483 -0.500000
+v 0.153248 -0.030483 -0.468750
+v 0.153248 -0.030483 -0.500000
+v 0.129917 -0.086808 -0.468750
+v 0.129917 -0.086808 -0.500000
+v 0.086808 -0.129917 -0.468750
+v 0.086808 -0.129917 -0.500000
+v 0.030483 -0.153248 -0.468750
+v 0.030483 -0.153248 -0.500000
+v -0.030483 -0.153248 -0.468750
+v -0.030483 -0.153248 -0.500000
+v -0.086808 -0.129917 -0.468750
+v -0.086808 -0.129917 -0.500000
+v -0.129917 -0.086808 -0.468750
+v -0.129917 -0.086808 -0.500000
+v -0.153247 -0.030483 -0.468750
+v -0.153247 -0.030483 -0.500000
+v -0.153247 0.030483 -0.468750
+v -0.153247 0.030483 -0.500000
+v -0.129917 0.086808 -0.468750
+v -0.129917 0.086808 -0.500000
+v -0.086808 0.129917 -0.468750
+v -0.086808 0.129917 -0.500000
+v -0.030483 0.153248 -0.468750
+v -0.030483 0.153248 -0.500000
+v 0.030483 0.153248 -0.468750
+v 0.030483 0.153248 -0.500000
+v 0.086808 0.129917 -0.468750
+v 0.086808 0.129917 -0.500000
+v 0.129917 0.086808 -0.468750
+v 0.129918 0.086808 -0.500000
+v 0.122598 0.024386 -0.468750
+v 0.122598 -0.024386 -0.468750
+v 0.103934 -0.069446 -0.468750
+v 0.069447 -0.103934 -0.468750
+v 0.024387 -0.122598 -0.468750
+v -0.024386 -0.122598 -0.468750
+v -0.069446 -0.103934 -0.468750
+v -0.103933 -0.069446 -0.468750
+v -0.122598 -0.024386 -0.468750
+v -0.122598 0.024386 -0.468750
+v -0.103933 0.069446 -0.468750
+v -0.069446 0.103934 -0.468750
+v -0.024386 0.122598 -0.468750
+v 0.024387 0.122598 -0.468750
+v 0.069447 0.103934 -0.468750
+v 0.103934 0.069446 -0.468750
+v 0.000000 -0.000000 -0.468750
+v 0.000000 0.000000 -0.500000
+v -0.024386 -0.122598 -0.024390
+v -0.069446 -0.103934 -0.024391
+v -0.103934 -0.069446 -0.024391
+v -0.122598 -0.024386 -0.024391
+v -0.122598 0.024386 -0.024391
+v -0.103934 0.069446 -0.024390
+v -0.069446 0.103934 -0.024390
+v -0.024386 0.122598 -0.024389
+v 0.024386 0.122598 -0.024389
+v 0.103934 0.069446 -0.024390
+v 0.069446 0.103934 -0.024390
+v 0.103934 -0.069446 -0.024390
+v 0.122598 -0.024386 -0.024390
+v 0.122598 0.024386 -0.024390
+v 0.069446 -0.103934 -0.024390
+v 0.024386 -0.122598 -0.024390
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.218363 0.657325
+vt 0.185866 0.820702
+vt 0.153368 0.657325
+vt 0.531836 0.657325
+vt 0.564334 0.820702
+vt 0.596832 0.657325
+vt 0.656879 0.682198
+vt 0.702838 0.728156
+vt 0.727710 0.788204
+vt 0.727710 0.853199
+vt 0.702838 0.913247
+vt 0.656879 0.959205
+vt 0.596831 0.984078
+vt 0.531836 0.984078
+vt 0.471788 0.959205
+vt 0.425830 0.913247
+vt 0.400957 0.853199
+vt 0.400957 0.788204
+vt 0.425830 0.728156
+vt 0.471789 0.682198
+vt 0.093321 0.682198
+vt 0.047362 0.728156
+vt 0.022489 0.788204
+vt 0.022489 0.853199
+vt 0.047362 0.913247
+vt 0.093320 0.959205
+vt 0.153368 0.984078
+vt 0.218363 0.984078
+vt 0.278411 0.959205
+vt 0.324369 0.913247
+vt 0.349242 0.853199
+vt 0.349242 0.788204
+vt 0.324369 0.728156
+vt 0.278411 0.682198
+vt 0.187500 0.515625
+vt 0.250000 0.515625
+vt 0.875000 0.515625
+vt 0.937500 0.515625
+vt 0.750000 0.515625
+vt 0.812500 0.515625
+vt 0.562500 0.515625
+vt 0.625000 0.515625
+vt 0.687500 0.515625
+vt 0.500000 0.515625
+vt 0.437500 0.515625
+vt 0.375000 0.515625
+vt 0.312500 0.515625
+vt 0.125000 0.515625
+vt 0.062500 0.515625
+vt 0.000000 0.515625
+vt 1.000000 0.515625
+usemtl None
+s off
+f 54/1 41/2 42/3 55/4
+f 31/5 33/6 50/7
+f 29/8 31/5 50/7
+f 27/9 29/8 50/7
+f 25/10 27/9 50/7
+f 23/11 25/10 50/7
+f 21/12 23/11 50/7
+f 19/13 21/12 50/7
+f 17/14 19/13 50/7
+f 15/15 17/14 50/7
+f 13/16 15/15 50/7
+f 11/17 13/16 50/7
+f 9/18 11/17 50/7
+f 7/19 9/18 50/7
+f 5/20 7/19 50/7
+f 35/21 5/20 50/7
+f 6/22 36/23 49/24
+f 8/25 6/22 49/24
+f 10/26 8/25 49/24
+f 12/27 10/26 49/24
+f 14/28 12/27 49/24
+f 16/29 14/28 49/24
+f 18/30 16/29 49/24
+f 20/31 18/30 49/24
+f 22/32 20/31 49/24
+f 24/33 22/32 49/24
+f 26/34 24/33 49/24
+f 28/35 26/34 49/24
+f 30/36 28/35 49/24
+f 32/37 30/36 49/24
+f 34/38 32/37 49/24
+f 36/23 34/38 49/24
+f 33/6 35/21 50/7
+f 8/39 7/40 5/41 6/42
+f 6/42 5/41 35/43 36/44
+f 10/45 9/46 7/40 8/39
+f 12/47 11/48 9/46 10/45
+f 14/49 13/50 11/51 12/52
+f 16/53 15/54 13/50 14/49
+f 18/55 17/56 15/54 16/53
+f 20/57 19/58 17/56 18/55
+f 22/59 21/60 19/58 20/57
+f 24/61 23/62 21/60 22/59
+f 26/63 25/64 23/62 24/61
+f 28/65 27/66 25/64 26/63
+f 30/67 29/68 27/66 28/65
+f 32/69 31/70 29/68 30/67
+f 34/71 33/72 31/70 32/69
+f 36/44 35/43 33/72 34/71
+f 65/73 1/74 37/75 66/76
+f 63/77 3/78 2/79 62/80
+f 61/81 47/82 48/83 60/84
+f 64/85 4/86 3/78 63/77
+f 62/80 2/79 1/74 65/73
+f 60/84 48/83 4/86 64/85
+f 59/87 46/88 47/82 61/81
+f 58/89 45/90 46/88 59/87
+f 57/91 44/92 45/90 58/89
+f 56/93 43/94 44/92 57/91
+f 55/4 42/3 43/94 56/93
+f 53/95 40/96 41/2 54/1
+f 52/97 39/98 40/96 53/95
+f 51/99 38/100 39/98 52/97
+f 66/76 37/75 38/101 51/102
+f 67/58 69/60 70/59 68/57
+f 69/60 71/62 72/61 70/59
+f 71/62 73/64 74/63 72/61
+f 73/64 75/66 76/65 74/63
+f 75/66 77/68 78/67 76/65
+f 77/68 79/70 80/69 78/67
+f 79/70 81/72 82/71 80/69
+f 81/72 83/43 84/44 82/71
+f 83/43 85/41 86/42 84/44
+f 85/41 87/40 88/39 86/42
+f 87/40 89/46 90/45 88/39
+f 89/46 91/48 92/47 90/45
+f 91/51 93/50 94/49 92/52
+f 93/50 95/54 96/53 94/49
+f 97/56 67/58 68/57 98/55
+f 95/54 97/56 98/55 96/53
+f 70/103 116/104 68/105
+f 67/106 115/107 69/108
+f 69/108 115/107 71/109
+f 71/109 115/107 73/110
+f 73/110 115/107 75/111
+f 75/111 115/107 77/112
+f 77/112 115/107 79/113
+f 79/113 115/107 81/114
+f 81/114 115/107 83/115
+f 83/115 115/107 85/116
+f 85/116 115/107 87/117
+f 87/117 115/107 89/118
+f 89/118 115/107 91/119
+f 91/119 115/107 93/120
+f 93/120 115/107 95/121
+f 95/121 115/107 97/122
+f 97/122 115/107 67/106
+f 68/105 116/104 98/123
+f 98/123 116/104 96/124
+f 96/124 116/104 94/125
+f 94/125 116/104 92/126
+f 92/126 116/104 90/127
+f 90/127 116/104 88/128
+f 88/128 116/104 86/129
+f 86/129 116/104 84/130
+f 84/130 116/104 82/131
+f 82/131 116/104 80/132
+f 80/132 116/104 78/133
+f 78/133 116/104 76/134
+f 76/134 116/104 74/135
+f 74/135 116/104 72/136
+f 72/136 116/104 70/103
+f 107/137 120/1 121/4 108/138
+f 102/139 131/73 132/76 103/140
+f 100/141 129/77 128/80 101/142
+f 113/143 127/81 126/84 114/144
+f 99/145 130/85 129/77 100/141
+f 101/142 128/80 131/73 102/139
+f 114/144 126/84 130/85 99/145
+f 112/146 125/87 127/81 113/143
+f 111/147 124/89 125/87 112/146
+f 110/148 123/91 124/89 111/147
+f 109/149 122/93 123/91 110/148
+f 108/138 121/4 122/93 109/149
+f 106/150 119/95 120/1 107/137
+f 105/151 118/97 119/95 106/150
+f 104/152 117/99 118/97 105/151
+f 103/140 132/76 117/102 104/153
+f 133/58 135/60 136/59 134/57
+f 135/60 137/62 138/61 136/59
+f 137/62 139/64 140/63 138/61
+f 139/64 141/66 142/65 140/63
+f 141/66 143/68 144/67 142/65
+f 143/68 145/70 146/69 144/67
+f 145/70 147/72 148/71 146/69
+f 147/72 149/43 150/44 148/71
+f 149/43 151/41 152/42 150/44
+f 151/41 153/40 154/39 152/42
+f 153/40 155/46 156/45 154/39
+f 155/46 157/48 158/47 156/45
+f 157/51 159/50 160/49 158/52
+f 159/50 161/54 162/53 160/49
+f 163/56 133/58 134/57 164/55
+f 161/54 163/56 164/55 162/53
+f 136/103 182/104 134/105
+f 133/106 181/107 135/108
+f 135/108 181/107 137/109
+f 137/109 181/107 139/110
+f 139/110 181/107 141/111
+f 141/111 181/107 143/112
+f 143/112 181/107 145/113
+f 145/113 181/107 147/114
+f 147/114 181/107 149/115
+f 149/115 181/107 151/116
+f 151/116 181/107 153/117
+f 153/117 181/107 155/118
+f 155/118 181/107 157/119
+f 157/119 181/107 159/120
+f 159/120 181/107 161/121
+f 161/121 181/107 163/122
+f 163/122 181/107 133/106
+f 134/105 182/104 164/123
+f 164/123 182/104 162/124
+f 162/124 182/104 160/125
+f 160/125 182/104 158/126
+f 158/126 182/104 156/127
+f 156/127 182/104 154/128
+f 154/128 182/104 152/129
+f 152/129 182/104 150/130
+f 150/130 182/104 148/131
+f 148/131 182/104 146/132
+f 146/132 182/104 144/133
+f 144/133 182/104 142/134
+f 142/134 182/104 140/135
+f 140/135 182/104 138/136
+f 138/136 182/104 136/103
+f 173/137 223/2 224/3 174/138
+f 213/5 215/6 232/7
+f 211/8 213/5 232/7
+f 209/9 211/8 232/7
+f 207/10 209/9 232/7
+f 205/11 207/10 232/7
+f 203/12 205/11 232/7
+f 201/13 203/12 232/7
+f 199/14 201/13 232/7
+f 197/15 199/14 232/7
+f 195/16 197/15 232/7
+f 193/17 195/16 232/7
+f 191/18 193/17 232/7
+f 189/19 191/18 232/7
+f 187/20 189/19 232/7
+f 217/21 187/20 232/7
+f 188/22 218/23 231/24
+f 190/25 188/22 231/24
+f 192/26 190/25 231/24
+f 194/27 192/26 231/24
+f 196/28 194/27 231/24
+f 198/29 196/28 231/24
+f 200/30 198/29 231/24
+f 202/31 200/30 231/24
+f 204/32 202/31 231/24
+f 206/33 204/32 231/24
+f 208/34 206/33 231/24
+f 210/35 208/34 231/24
+f 212/36 210/35 231/24
+f 214/37 212/36 231/24
+f 216/38 214/37 231/24
+f 218/23 216/38 231/24
+f 215/6 217/21 232/7
+f 190/39 189/40 187/41 188/42
+f 188/42 187/41 217/43 218/44
+f 192/45 191/46 189/40 190/39
+f 194/47 193/48 191/46 192/45
+f 196/49 195/50 193/51 194/52
+f 198/53 197/54 195/50 196/49
+f 200/55 199/56 197/54 198/53
+f 202/57 201/58 199/56 200/55
+f 204/59 203/60 201/58 202/57
+f 206/61 205/62 203/60 204/59
+f 208/63 207/64 205/62 206/61
+f 210/65 209/66 207/64 208/63
+f 212/67 211/68 209/66 210/65
+f 214/69 213/70 211/68 212/67
+f 216/71 215/72 213/70 214/69
+f 218/44 217/43 215/72 216/71
+f 168/139 183/74 219/75 169/140
+f 166/141 185/78 184/79 167/142
+f 179/143 229/82 230/83 180/144
+f 165/145 186/86 185/78 166/141
+f 167/142 184/79 183/74 168/139
+f 180/144 230/83 186/86 165/145
+f 178/146 228/88 229/82 179/143
+f 177/147 227/90 228/88 178/146
+f 176/148 226/92 227/90 177/147
+f 175/149 225/94 226/92 176/148
+f 174/138 224/3 225/94 175/149
+f 172/150 222/96 223/2 173/137
+f 171/151 221/98 222/96 172/150
+f 170/152 220/100 221/98 171/151
+f 169/140 219/75 220/101 170/153
+f 286/1 273/2 274/3 287/4
+f 263/5 265/6 282/7
+f 261/8 263/5 282/7
+f 259/9 261/8 282/7
+f 257/10 259/9 282/7
+f 255/11 257/10 282/7
+f 253/12 255/11 282/7
+f 251/13 253/12 282/7
+f 249/14 251/13 282/7
+f 247/15 249/14 282/7
+f 245/16 247/15 282/7
+f 243/17 245/16 282/7
+f 241/18 243/17 282/7
+f 239/19 241/18 282/7
+f 237/20 239/19 282/7
+f 267/21 237/20 282/7
+f 238/22 268/23 281/24
+f 240/25 238/22 281/24
+f 242/26 240/25 281/24
+f 244/27 242/26 281/24
+f 246/28 244/27 281/24
+f 248/29 246/28 281/24
+f 250/30 248/29 281/24
+f 252/31 250/30 281/24
+f 254/32 252/31 281/24
+f 256/33 254/32 281/24
+f 258/34 256/33 281/24
+f 260/35 258/34 281/24
+f 262/36 260/35 281/24
+f 264/37 262/36 281/24
+f 266/38 264/37 281/24
+f 268/23 266/38 281/24
+f 265/6 267/21 282/7
+f 240/39 239/40 237/41 238/42
+f 238/42 237/41 267/43 268/44
+f 242/45 241/46 239/40 240/39
+f 244/47 243/48 241/46 242/45
+f 246/49 245/50 243/51 244/52
+f 248/53 247/54 245/50 246/49
+f 250/55 249/56 247/54 248/53
+f 252/57 251/58 249/56 250/55
+f 254/59 253/60 251/58 252/57
+f 256/61 255/62 253/60 254/59
+f 258/63 257/64 255/62 256/61
+f 260/65 259/66 257/64 258/63
+f 262/67 261/68 259/66 260/65
+f 264/69 263/70 261/68 262/67
+f 266/71 265/72 263/70 264/69
+f 268/44 267/43 265/72 266/71
+f 297/73 233/74 269/75 298/76
+f 295/77 235/78 234/79 294/80
+f 293/81 279/82 280/83 292/84
+f 296/85 236/86 235/78 295/77
+f 294/80 234/79 233/74 297/73
+f 292/84 280/83 236/86 296/85
+f 291/87 278/88 279/82 293/81
+f 290/89 277/90 278/88 291/87
+f 289/91 276/92 277/90 290/89
+f 288/93 275/94 276/92 289/91
+f 287/4 274/3 275/94 288/93
+f 285/95 272/96 273/2 286/1
+f 284/97 271/98 272/96 285/95
+f 283/99 270/100 271/98 284/97
+f 298/76 269/75 270/101 283/102
+f 299/58 301/60 302/59 300/57
+f 301/60 303/62 304/61 302/59
+f 303/62 305/64 306/63 304/61
+f 305/64 307/66 308/65 306/63
+f 307/66 309/68 310/67 308/65
+f 309/68 311/70 312/69 310/67
+f 311/70 313/72 314/71 312/69
+f 313/72 315/43 316/44 314/71
+f 315/43 317/41 318/42 316/44
+f 317/41 319/40 320/39 318/42
+f 319/40 321/46 322/45 320/39
+f 321/46 323/48 324/47 322/45
+f 323/51 325/50 326/49 324/52
+f 325/50 327/54 328/53 326/49
+f 329/56 299/58 300/57 330/55
+f 327/54 329/56 330/55 328/53
+f 302/103 348/104 300/105
+f 299/106 347/107 301/108
+f 301/108 347/107 303/109
+f 303/109 347/107 305/110
+f 305/110 347/107 307/111
+f 307/111 347/107 309/112
+f 309/112 347/107 311/113
+f 311/113 347/107 313/114
+f 313/114 347/107 315/115
+f 315/115 347/107 317/116
+f 317/116 347/107 319/117
+f 319/117 347/107 321/118
+f 321/118 347/107 323/119
+f 323/119 347/107 325/120
+f 325/120 347/107 327/121
+f 327/121 347/107 329/122
+f 329/122 347/107 299/106
+f 300/105 348/104 330/123
+f 330/123 348/104 328/124
+f 328/124 348/104 326/125
+f 326/125 348/104 324/126
+f 324/126 348/104 322/127
+f 322/127 348/104 320/128
+f 320/128 348/104 318/129
+f 318/129 348/104 316/130
+f 316/130 348/104 314/131
+f 314/131 348/104 312/132
+f 312/132 348/104 310/133
+f 310/133 348/104 308/134
+f 308/134 348/104 306/135
+f 306/135 348/104 304/136
+f 304/136 348/104 302/103
+f 339/137 352/1 353/4 340/138
+f 334/139 363/73 364/76 335/140
+f 332/141 361/77 360/80 333/142
+f 345/143 359/81 358/84 346/144
+f 331/145 362/85 361/77 332/141
+f 333/142 360/80 363/73 334/139
+f 346/144 358/84 362/85 331/145
+f 344/146 357/87 359/81 345/143
+f 343/147 356/89 357/87 344/146
+f 342/148 355/91 356/89 343/147
+f 341/149 354/93 355/91 342/148
+f 340/138 353/4 354/93 341/149
+f 338/150 351/95 352/1 339/137
+f 337/151 350/97 351/95 338/150
+f 336/152 349/99 350/97 337/151
+f 335/140 364/76 349/102 336/153
diff --git a/pipeworks/models/pipeworks_pipe_2.obj b/pipeworks/models/pipeworks_pipe_2.obj
new file mode 100644
index 0000000..c75bca4
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_2.obj
@@ -0,0 +1,392 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-stub-end.blend'
+# www.blender.org
+o pipe.001_Cylinder.000
+v 0.024386 -0.024391 0.122598
+v 0.024386 -0.024391 -0.122598
+v 0.468750 -0.024387 0.122599
+v 0.468750 0.024386 0.122599
+v 0.024391 0.024386 0.122598
+v 0.500000 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.500000 -0.000000 0.000001
+v 0.500000 -0.129917 -0.086807
+v 0.500000 -0.153248 -0.030482
+v 0.500000 -0.153248 0.030483
+v 0.500000 -0.129917 0.086808
+v 0.500000 -0.086808 0.129918
+v 0.500000 -0.030483 0.153248
+v 0.500000 0.030483 0.153248
+v 0.500000 0.086808 0.129918
+v 0.500000 0.129917 0.086808
+v 0.500000 0.153247 0.030483
+v 0.500000 0.153247 -0.030482
+v 0.500000 0.129917 -0.086807
+v 0.500000 0.086808 -0.129917
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.086808 -0.129917
+v 0.468750 0.030483 -0.153247
+v 0.468750 -0.000000 -0.000000
+v 0.468750 0.129917 -0.086807
+v 0.468750 0.153247 -0.030482
+v 0.468750 0.153247 0.030483
+v 0.468750 0.129917 0.086808
+v 0.468750 0.086808 0.129918
+v 0.468750 0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.468750 -0.086808 0.129918
+v 0.468750 -0.129917 0.086808
+v 0.468750 -0.153248 0.030483
+v 0.468750 -0.153248 -0.030482
+v 0.468750 -0.129917 -0.086807
+v 0.468750 -0.086808 -0.129917
+v 0.468750 -0.030483 -0.153247
+v 0.024391 -0.103934 -0.069446
+v 0.468750 -0.103934 -0.069446
+v 0.468750 -0.122598 -0.024386
+v 0.024391 -0.122598 -0.024386
+v 0.468750 -0.024387 -0.122598
+v 0.468750 -0.069447 -0.103933
+v 0.024391 -0.069446 -0.103934
+v 0.468750 0.103933 -0.069446
+v 0.468750 0.069446 -0.103933
+v 0.024391 0.069446 -0.103934
+v 0.024391 0.024386 -0.122598
+v 0.468750 0.024386 -0.122598
+v 0.024391 0.122598 -0.024386
+v 0.468750 0.122598 -0.024386
+v 0.024391 0.122598 0.024386
+v 0.468750 0.122598 0.024387
+v 0.024391 0.103934 0.069446
+v 0.468750 0.103933 0.069447
+v 0.024391 0.069446 0.103934
+v 0.468750 0.069446 0.103934
+v 0.024391 -0.069446 0.103934
+v 0.468750 -0.069447 0.103934
+v 0.024391 -0.103934 0.069446
+v 0.468750 -0.103934 0.069447
+v 0.024391 -0.122598 0.024386
+v 0.468750 -0.122598 0.024387
+v 0.024390 0.103934 -0.069446
+v -0.042016 -0.000000 0.000000
+v -0.034206 -0.012195 0.061299
+v -0.034203 -0.034723 0.051967
+v -0.034203 -0.061299 0.012193
+v -0.034203 -0.061299 -0.012193
+v -0.034203 -0.051967 -0.034723
+v -0.034203 -0.051967 0.034723
+v -0.034203 -0.034723 -0.051967
+v -0.034206 -0.012196 -0.061299
+v -0.034203 0.012193 -0.061299
+v -0.034203 0.034723 -0.051967
+v -0.034203 0.051967 -0.034723
+v -0.034203 0.061299 -0.012193
+v -0.034203 0.061299 0.012193
+v -0.034203 0.051967 0.034723
+v -0.034203 0.034723 0.051967
+v -0.034203 0.012193 0.061299
+v -0.042017 -0.006098 0.030650
+v -0.042016 -0.017362 0.025984
+v -0.042016 -0.030650 0.006097
+v -0.042016 -0.030650 -0.006096
+v -0.042016 -0.025984 -0.017361
+v -0.014672 -0.077950 0.052085
+v -0.042016 -0.017362 -0.025983
+v -0.042017 -0.006098 -0.030649
+v -0.042016 0.006096 -0.030649
+v -0.042016 0.017361 -0.025983
+v -0.042016 0.025983 -0.017362
+v -0.042016 0.030649 -0.006096
+v -0.042016 0.030649 0.006097
+v -0.042016 0.025983 0.017362
+v -0.042016 0.017361 0.025984
+v -0.042016 0.006096 0.030650
+v -0.014675 -0.018293 0.091949
+v -0.014672 -0.052084 0.077951
+v -0.014672 -0.091948 0.018290
+v -0.014672 -0.091949 -0.018289
+v -0.014672 -0.077951 -0.052084
+v -0.042016 -0.025984 0.017362
+v -0.014672 -0.052085 -0.077950
+v -0.014675 -0.018293 -0.091948
+v -0.014672 0.018289 -0.091948
+v -0.014672 0.052084 -0.077950
+v -0.014672 0.077950 -0.052085
+v -0.014672 0.091948 -0.018289
+v -0.014672 0.091949 0.018290
+v -0.014672 0.077951 0.052085
+v -0.014672 0.052085 0.077951
+v -0.014672 0.018290 0.091949
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.812500 0.265625
+vt 0.812500 0.015625
+vt 0.625000 0.265625
+vt 0.625000 0.015625
+vt 0.687500 0.015625
+vt 0.687500 0.265625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.500000 0.015625
+vt 0.500000 0.265625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.250000 0.265625
+vt 0.250000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.125000 0.015625
+vt 0.125000 0.265625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.648437 0.265625
+vt 0.414062 0.265625
+vt 0.531250 0.265625
+vt 0.632812 0.265625
+vt 0.617187 0.265625
+vt 0.601562 0.265625
+vt 0.585937 0.265625
+vt 0.570312 0.265625
+vt 0.554687 0.265625
+vt 0.539062 0.265625
+vt 0.523437 0.265625
+vt 0.507812 0.265625
+vt 0.492187 0.265625
+vt 0.476562 0.265625
+vt 0.460937 0.265625
+vt 0.445312 0.265625
+vt 0.429687 0.265625
+vt 0.882812 0.265625
+vt 0.179687 0.265625
+vt 0.296875 0.265625
+vt 0.765625 0.265625
+vt 0.835937 0.265625
+vt 0.734375 0.265625
+vt 0.789062 0.265625
+vt 0.703125 0.265625
+vt 0.742187 0.265625
+vt 0.671875 0.265625
+vt 0.695312 0.265625
+vt 0.640625 0.265625
+vt 0.609375 0.265625
+vt 0.578125 0.265625
+vt 0.546875 0.265625
+vt 0.515625 0.265625
+vt 0.484375 0.265625
+vt 0.453125 0.265625
+vt 0.367187 0.265625
+vt 0.421875 0.265625
+vt 0.320312 0.265625
+vt 0.390625 0.265625
+vt 0.273437 0.265625
+vt 0.359375 0.265625
+vt 0.226562 0.265625
+vt 0.328125 0.265625
+s off
+f 6/1 7/2 8/3
+f 9/4 6/1 8/3
+f 10/5 9/4 8/3
+f 11/6 10/5 8/3
+f 12/7 11/6 8/3
+f 13/8 12/7 8/3
+f 14/9 13/8 8/3
+f 15/10 14/9 8/3
+f 16/11 15/10 8/3
+f 17/12 16/11 8/3
+f 18/13 17/12 8/3
+f 19/14 18/13 8/3
+f 20/15 19/14 8/3
+f 21/16 20/15 8/3
+f 22/17 21/16 8/3
+f 23/18 24/19 25/20
+f 26/21 23/18 25/20
+f 27/22 26/21 25/20
+f 28/23 27/22 25/20
+f 29/24 28/23 25/20
+f 30/25 29/24 25/20
+f 31/26 30/25 25/20
+f 32/27 31/26 25/20
+f 33/28 32/27 25/20
+f 34/29 33/28 25/20
+f 35/30 34/29 25/20
+f 36/31 35/30 25/20
+f 37/32 36/31 25/20
+f 38/33 37/32 25/20
+f 39/34 38/33 25/20
+f 24/19 39/34 25/20
+f 7/2 22/17 8/3
+f 26/35 20/36 21/37 23/38
+f 23/38 21/37 22/39 24/40
+f 27/41 19/42 20/36 26/35
+f 28/43 18/44 19/42 27/41
+f 29/45 17/46 18/47 28/48
+f 30/49 16/50 17/46 29/45
+f 31/51 15/52 16/50 30/49
+f 32/53 14/54 15/52 31/51
+f 33/55 13/56 14/54 32/53
+f 34/57 12/58 13/56 33/55
+f 35/59 11/60 12/58 34/57
+f 36/61 10/62 11/60 35/59
+f 37/63 9/64 10/62 36/61
+f 38/65 6/66 9/64 37/63
+f 39/67 7/68 6/66 38/65
+f 24/40 22/39 7/68 39/67
+f 40/69 41/70 42/71 43/72
+f 46/73 45/74 41/70 40/69
+f 49/75 48/76 51/77 50/78
+f 54/79 55/80 53/81 52/82
+f 56/83 57/84 55/80 54/79
+f 58/85 59/86 57/84 56/83
+f 5/87 4/88 59/86 58/85
+f 62/89 63/90 61/91 60/92
+f 64/93 65/94 63/90 62/89
+f 43/72 42/71 65/95 64/96
+f 1/97 3/98 4/88 5/87
+f 2/99 44/100 45/74 46/73
+f 66/101 47/102 48/76 49/75
+f 50/78 51/77 44/100 2/99
+f 52/82 53/81 47/102 66/101
+f 60/92 61/91 3/98 1/97
+f 86/103 105/104 67/105
+f 87/106 86/103 67/105
+f 88/107 87/106 67/105
+f 90/108 88/107 67/105
+f 91/109 90/108 67/105
+f 92/110 91/109 67/105
+f 93/111 92/110 67/105
+f 94/112 93/111 67/105
+f 95/113 94/112 67/105
+f 96/114 95/113 67/105
+f 97/115 96/114 67/105
+f 98/116 97/115 67/105
+f 99/117 98/116 67/105
+f 84/118 99/117 67/105
+f 85/119 84/118 67/105
+f 105/104 85/119 67/105
+f 102/120 89/121 73/122 70/123
+f 103/124 102/120 70/123 71/125
+f 104/126 103/124 71/125 72/127
+f 106/128 104/126 72/127 74/129
+f 107/130 106/128 74/129 75/131
+f 108/103 107/130 75/131 76/132
+f 109/108 108/103 76/132 77/133
+f 110/111 109/108 77/133 78/134
+f 111/114 110/111 78/134 79/135
+f 112/117 111/114 79/135 80/136
+f 113/104 112/117 80/136 81/137
+f 114/138 113/104 81/137 82/139
+f 115/140 114/138 82/139 83/141
+f 100/142 115/140 83/141 68/143
+f 101/144 100/142 68/143 69/145
+f 89/121 101/144 69/145 73/122
+f 70/123 73/122 105/104 86/103
+f 71/125 70/123 86/103 87/106
+f 72/127 71/125 87/106 88/107
+f 74/129 72/127 88/107 90/108
+f 75/131 74/129 90/108 91/109
+f 76/132 75/131 91/109 92/110
+f 77/133 76/132 92/110 93/111
+f 78/134 77/133 93/111 94/112
+f 79/135 78/134 94/112 95/113
+f 80/136 79/135 95/113 96/114
+f 81/137 80/136 96/114 97/115
+f 82/139 81/137 97/115 98/116
+f 83/141 82/139 98/116 99/117
+f 68/143 83/141 99/117 84/118
+f 69/145 68/143 84/118 85/119
+f 73/122 69/145 85/119 105/104
+f 64/96 62/89 89/121 102/120
+f 43/72 64/96 102/120 103/124
+f 40/69 43/72 103/124 104/126
+f 46/73 40/69 104/126 106/128
+f 2/99 46/73 106/128 107/130
+f 50/78 2/99 107/130 108/103
+f 49/75 50/78 108/103 109/108
+f 66/101 49/75 109/108 110/111
+f 52/82 66/101 110/111 111/114
+f 54/79 52/82 111/114 112/117
+f 56/83 54/79 112/117 113/104
+f 58/85 56/83 113/104 114/138
+f 5/87 58/85 114/138 115/140
+f 1/97 5/87 115/140 100/142
+f 60/92 1/97 100/142 101/144
+f 62/89 60/92 101/144 89/121
diff --git a/pipeworks/models/pipeworks_pipe_3.obj b/pipeworks/models/pipeworks_pipe_3.obj
new file mode 100644
index 0000000..f126551
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_3.obj
@@ -0,0 +1,354 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-2way-straight.blend'
+# www.blender.org
+mtllib pipeworks_pipe_3.mtl
+o Cube.001
+v 0.468750 -0.153248 0.030483
+v 0.500000 -0.153248 0.030483
+v 0.468750 -0.153248 -0.030483
+v 0.500000 -0.153248 -0.030483
+v 0.468750 -0.129917 -0.086808
+v 0.500000 -0.129917 -0.086808
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.030483 -0.153248
+v 0.500000 -0.030483 -0.153248
+v 0.468750 0.030483 -0.153248
+v 0.500000 0.030483 -0.153248
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153247 -0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.129917 0.086808
+v 0.500000 0.129917 0.086808
+v 0.468750 0.086808 0.129917
+v 0.500000 0.086808 0.129917
+v 0.468750 0.030483 0.153248
+v 0.500000 0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.122598 0.024386
+v 0.468750 -0.122598 -0.024386
+v 0.468750 -0.103934 -0.069446
+v 0.468750 -0.069446 -0.103934
+v 0.468750 -0.024386 -0.122598
+v 0.468750 0.024386 -0.122598
+v 0.468750 0.069446 -0.103934
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.122598 0.024386
+v 0.468750 0.103934 0.069446
+v 0.468750 0.069446 0.103934
+v 0.468750 0.024386 0.122598
+v 0.468750 -0.024387 0.122598
+v 0.468750 -0.069447 0.103934
+v 0.468750 -0.103934 0.069446
+v 0.468750 -0.000000 -0.000000
+v 0.500000 -0.000000 0.000000
+v -0.468750 -0.069446 -0.103934
+v -0.468750 -0.103933 -0.069446
+v -0.468750 -0.122598 -0.024387
+v -0.468750 -0.122598 0.024386
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.030483 0.153247
+v -0.468750 -0.030483 0.153248
+v -0.500000 0.030483 0.153247
+v -0.468750 0.030483 0.153248
+v -0.500000 0.086808 0.129917
+v -0.468750 0.086808 0.129917
+v -0.500000 0.129917 0.086808
+v -0.468750 0.129917 0.086808
+v -0.500000 0.153248 0.030483
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.030483 -0.153248
+v -0.468750 0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.153247 -0.030483
+v -0.468750 -0.153247 -0.030483
+v -0.500000 -0.153247 0.030483
+v -0.468750 -0.153247 0.030483
+v -0.468750 -0.024386 -0.122598
+v -0.468750 0.024387 -0.122598
+v -0.468750 0.069447 -0.103934
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.122598 0.024386
+v -0.468750 0.103934 0.069446
+v -0.468750 0.069447 0.103934
+v -0.468750 0.024387 0.122598
+v -0.468750 -0.024386 0.122598
+v -0.468750 -0.069446 0.103933
+v -0.468750 -0.103933 0.069446
+v -0.468750 0.000000 -0.000000
+v -0.500000 0.000000 -0.000000
+vt 0.750000 0.546875
+vt 0.687500 0.546875
+vt 0.687500 0.609375
+vt 0.750000 0.609375
+vt 0.625000 0.546875
+vt 0.625000 0.609375
+vt 0.562500 0.546875
+vt 0.562500 0.609375
+vt 0.500000 0.546875
+vt 0.500000 0.609375
+vt 0.437500 0.546875
+vt 0.437500 0.609375
+vt 0.375000 0.546875
+vt 0.375000 0.609375
+vt 0.312500 0.546875
+vt 0.312500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.125000 0.546875
+vt 0.125000 0.609375
+vt 0.062500 0.546875
+vt 0.062500 0.609375
+vt 0.000000 0.546875
+vt 0.000000 0.609375
+vt 1.000000 0.546875
+vt 0.937500 0.546875
+vt 0.937500 0.609375
+vt 1.000000 0.609375
+vt 0.875000 0.546875
+vt 0.875000 0.609375
+vt 0.812500 0.546875
+vt 0.812500 0.609375
+vt 0.218363 0.657325
+vt 0.185866 0.820702
+vt 0.153368 0.657325
+vt 0.531836 0.657325
+vt 0.564334 0.820702
+vt 0.596832 0.657325
+vt 0.656879 0.682198
+vt 0.702838 0.728156
+vt 0.727710 0.788204
+vt 0.727710 0.853199
+vt 0.702838 0.913247
+vt 0.656879 0.959205
+vt 0.596831 0.984078
+vt 0.531836 0.984078
+vt 0.471788 0.959205
+vt 0.425830 0.913247
+vt 0.400957 0.853199
+vt 0.400957 0.788204
+vt 0.425830 0.728156
+vt 0.471789 0.682198
+vt 0.093321 0.682198
+vt 0.047362 0.728156
+vt 0.022489 0.788204
+vt 0.022489 0.853199
+vt 0.047362 0.913247
+vt 0.093320 0.959205
+vt 0.153368 0.984078
+vt 0.218363 0.984078
+vt 0.278411 0.959205
+vt 0.324369 0.913247
+vt 0.349242 0.853199
+vt 0.349242 0.788204
+vt 0.324369 0.728156
+vt 0.278411 0.682198
+vt 0.187500 0.515625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.515625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.875000 0.515625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.515625
+vt 0.750000 0.515625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.515625
+vt 0.562500 0.515625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.515625
+vt 0.687500 0.515625
+vt 0.687500 0.015625
+vt 0.500000 0.515625
+vt 0.500000 0.015625
+vt 0.437500 0.515625
+vt 0.437500 0.015625
+vt 0.375000 0.515625
+vt 0.375000 0.015625
+vt 0.312500 0.515625
+vt 0.312500 0.015625
+vt 0.125000 0.515625
+vt 0.125000 0.015625
+vt 0.062500 0.515625
+vt 0.062500 0.015625
+vt 0.000000 0.515625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.515625
+usemtl None
+s off
+f 1/1 3/2 4/3 2/4
+f 3/2 5/5 6/6 4/3
+f 5/5 7/7 8/8 6/6
+f 7/7 9/9 10/10 8/8
+f 9/9 11/11 12/12 10/10
+f 11/11 13/13 14/14 12/12
+f 13/13 15/15 16/16 14/14
+f 15/15 17/17 18/18 16/16
+f 17/17 19/19 20/20 18/18
+f 19/19 21/21 22/22 20/20
+f 21/21 23/23 24/24 22/22
+f 23/23 25/25 26/26 24/24
+f 25/27 27/28 28/29 26/30
+f 27/28 29/31 30/32 28/29
+f 31/33 1/1 2/4 32/34
+f 29/31 31/33 32/34 30/32
+f 4/35 50/36 2/37
+f 1/38 49/39 3/40
+f 3/40 49/39 5/41
+f 5/41 49/39 7/42
+f 7/42 49/39 9/43
+f 9/43 49/39 11/44
+f 11/44 49/39 13/45
+f 13/45 49/39 15/46
+f 15/46 49/39 17/47
+f 17/47 49/39 19/48
+f 19/48 49/39 21/49
+f 21/49 49/39 23/50
+f 23/50 49/39 25/51
+f 25/51 49/39 27/52
+f 27/52 49/39 29/53
+f 29/53 49/39 31/54
+f 31/54 49/39 1/38
+f 2/37 50/36 32/55
+f 32/55 50/36 30/56
+f 30/56 50/36 28/57
+f 28/57 50/36 26/58
+f 26/58 50/36 24/59
+f 24/59 50/36 22/60
+f 22/60 50/36 20/61
+f 20/61 50/36 18/62
+f 18/62 50/36 16/63
+f 16/63 50/36 14/64
+f 14/64 50/36 12/65
+f 12/65 50/36 10/66
+f 10/66 50/36 8/67
+f 8/67 50/36 6/68
+f 6/68 50/36 4/35
+f 41/69 91/70 92/71 42/72
+f 81/73 83/74 100/75
+f 79/76 81/73 100/75
+f 77/77 79/76 100/75
+f 75/78 77/77 100/75
+f 73/79 75/78 100/75
+f 71/80 73/79 100/75
+f 69/81 71/80 100/75
+f 67/82 69/81 100/75
+f 65/83 67/82 100/75
+f 63/84 65/83 100/75
+f 61/85 63/84 100/75
+f 59/86 61/85 100/75
+f 57/87 59/86 100/75
+f 55/88 57/87 100/75
+f 85/89 55/88 100/75
+f 56/90 86/91 99/92
+f 58/93 56/90 99/92
+f 60/94 58/93 99/92
+f 62/95 60/94 99/92
+f 64/96 62/95 99/92
+f 66/97 64/96 99/92
+f 68/98 66/97 99/92
+f 70/99 68/98 99/92
+f 72/100 70/99 99/92
+f 74/101 72/100 99/92
+f 76/102 74/101 99/92
+f 78/103 76/102 99/92
+f 80/104 78/103 99/92
+f 82/105 80/104 99/92
+f 84/106 82/105 99/92
+f 86/91 84/106 99/92
+f 83/74 85/89 100/75
+f 58/22 57/21 55/19 56/20
+f 56/20 55/19 85/17 86/18
+f 60/24 59/23 57/21 58/22
+f 62/26 61/25 59/23 60/24
+f 64/29 63/28 61/27 62/30
+f 66/32 65/31 63/28 64/29
+f 68/34 67/33 65/31 66/32
+f 70/4 69/1 67/33 68/34
+f 72/3 71/2 69/1 70/4
+f 74/6 73/5 71/2 72/3
+f 76/8 75/7 73/5 74/6
+f 78/10 77/9 75/7 76/8
+f 80/12 79/11 77/9 78/10
+f 82/14 81/13 79/11 80/12
+f 84/16 83/15 81/13 82/14
+f 86/18 85/17 83/15 84/16
+f 36/107 51/108 87/109 37/110
+f 34/111 53/112 52/113 35/114
+f 47/115 97/116 98/117 48/118
+f 33/119 54/120 53/112 34/111
+f 35/114 52/113 51/108 36/107
+f 48/118 98/117 54/120 33/119
+f 46/121 96/122 97/116 47/115
+f 45/123 95/124 96/122 46/121
+f 44/125 94/126 95/124 45/123
+f 43/127 93/128 94/126 44/125
+f 42/72 92/71 93/128 43/127
+f 40/129 90/130 91/70 41/69
+f 39/131 89/132 90/130 40/129
+f 38/133 88/134 89/132 39/131
+f 37/110 87/109 88/135 38/136
diff --git a/pipeworks/models/pipeworks_pipe_4.obj b/pipeworks/models/pipeworks_pipe_4.obj
new file mode 100644
index 0000000..0ef583f
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_4.obj
@@ -0,0 +1,478 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-2way-corner.blend'
+# www.blender.org
+mtllib pipeworks_pipe_4.mtl
+o pipe.001_Cylinder.000
+v -0.024386 -0.024391 0.122598
+v -0.024387 -0.468750 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.024386 -0.024391 0.122598
+v -0.086808 -0.500000 -0.129917
+v -0.030483 -0.500000 -0.153247
+v -0.000000 -0.500000 0.000000
+v -0.129917 -0.500000 -0.086808
+v -0.153248 -0.500000 -0.030483
+v -0.153248 -0.500000 0.030483
+v -0.129917 -0.500000 0.086808
+v -0.086808 -0.500000 0.129917
+v -0.030483 -0.500000 0.153248
+v 0.030483 -0.500000 0.153248
+v 0.086808 -0.500000 0.129917
+v 0.129917 -0.500000 0.086808
+v 0.153247 -0.500000 0.030483
+v 0.153248 -0.500000 -0.030483
+v 0.129917 -0.500000 -0.086808
+v 0.086808 -0.500000 -0.129917
+v 0.030483 -0.500000 -0.153247
+v 0.086808 -0.468750 -0.129917
+v 0.030483 -0.468750 -0.153248
+v -0.000000 -0.468750 0.000000
+v 0.129917 -0.468750 -0.086808
+v 0.153248 -0.468750 -0.030483
+v 0.153247 -0.468750 0.030483
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.468750 0.129917
+v -0.129917 -0.468750 0.086808
+v -0.153248 -0.468750 0.030483
+v -0.153248 -0.468750 -0.030483
+v -0.129917 -0.468750 -0.086808
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.468750 -0.153248
+v -0.103934 -0.024391 -0.069446
+v -0.103934 -0.468750 -0.069446
+v -0.122598 -0.468750 -0.024386
+v -0.122598 -0.024391 -0.024386
+v -0.024386 -0.024391 -0.122598
+v -0.024386 -0.468750 -0.122598
+v -0.069446 -0.468750 -0.103933
+v -0.069446 -0.024391 -0.103934
+v 0.103934 -0.024391 -0.069446
+v 0.103933 -0.468750 -0.069446
+v 0.069446 -0.468750 -0.103934
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v 0.024386 -0.468750 -0.122598
+v 0.122598 -0.024391 -0.024386
+v 0.122598 -0.468750 -0.024386
+v 0.122598 -0.024391 0.024386
+v 0.122598 -0.468750 0.024386
+v 0.103934 -0.024391 0.069446
+v 0.103933 -0.468750 0.069447
+v 0.069446 -0.024391 0.103934
+v 0.069446 -0.468750 0.103934
+v -0.069446 -0.024391 0.103934
+v -0.069447 -0.468750 0.103934
+v -0.103934 -0.024391 0.069446
+v -0.103934 -0.468750 0.069446
+v -0.122598 -0.024391 0.024386
+v -0.122598 -0.468750 0.024386
+v -0.041924 0.041589 0.103934
+v -0.041925 0.041589 -0.103934
+v -0.010062 0.009727 -0.122598
+v -0.079509 0.079173 -0.024386
+v -0.066311 0.065976 -0.069446
+v -0.024663 0.094826 -0.069446
+v -0.011464 0.062964 0.103934
+v -0.024662 0.094827 0.069446
+v -0.031805 0.112070 0.024386
+v -0.031805 0.112070 -0.024386
+v 0.005779 0.021334 -0.122598
+v -0.011464 0.062964 -0.103934
+v 0.005780 0.021334 0.122598
+v -0.079509 0.079173 0.024386
+v -0.066311 0.065976 0.069446
+v 0.468750 -0.024387 0.122599
+v 0.468750 0.024386 0.122599
+v 0.024391 0.024386 0.122598
+v 0.500000 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.500000 -0.000000 0.000001
+v 0.500000 -0.129917 -0.086807
+v 0.500000 -0.153248 -0.030482
+v 0.500000 -0.153248 0.030483
+v 0.500000 -0.129917 0.086808
+v 0.500000 -0.086808 0.129918
+v 0.500000 -0.030483 0.153248
+v 0.500000 0.030483 0.153248
+v 0.500000 0.086808 0.129918
+v 0.500000 0.129917 0.086808
+v 0.500000 0.153247 0.030483
+v 0.500000 0.153247 -0.030482
+v 0.500000 0.129917 -0.086807
+v 0.500000 0.086808 -0.129917
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.086808 -0.129917
+v 0.468750 0.030483 -0.153247
+v 0.468750 -0.000000 -0.000000
+v 0.468750 0.129917 -0.086807
+v 0.468750 0.153247 -0.030482
+v 0.468750 0.153247 0.030483
+v 0.468750 0.129917 0.086808
+v 0.468750 0.086808 0.129918
+v 0.468750 0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.468750 -0.086808 0.129918
+v 0.468750 -0.129917 0.086808
+v 0.468750 -0.153248 0.030483
+v 0.468750 -0.153248 -0.030482
+v 0.468750 -0.129917 -0.086807
+v 0.468750 -0.086808 -0.129917
+v 0.468750 -0.030483 -0.153247
+v 0.024391 -0.103934 -0.069446
+v 0.468750 -0.103934 -0.069446
+v 0.468750 -0.122598 -0.024386
+v 0.024391 -0.122598 -0.024386
+v 0.468750 -0.024387 -0.122598
+v 0.468750 -0.069447 -0.103933
+v 0.024391 -0.069446 -0.103934
+v 0.468750 0.103933 -0.069446
+v 0.468750 0.069446 -0.103933
+v 0.024391 0.069446 -0.103934
+v 0.024391 0.024386 -0.122598
+v 0.468750 0.024386 -0.122598
+v 0.024391 0.122598 -0.024386
+v 0.468750 0.122598 -0.024386
+v 0.024391 0.122598 0.024386
+v 0.468750 0.122598 0.024387
+v 0.024391 0.103934 0.069446
+v 0.468750 0.103933 0.069447
+v 0.024391 0.069446 0.103934
+v 0.468750 0.069446 0.103934
+v 0.024391 -0.069446 0.103934
+v 0.468750 -0.069447 0.103934
+v 0.024391 -0.103934 0.069446
+v 0.468750 -0.103934 0.069447
+v 0.024391 -0.122598 0.024386
+v 0.468750 -0.122598 0.024387
+v 0.024390 0.103934 -0.069446
+v -0.020763 -0.005780 0.122598
+v -0.111499 0.031804 0.024386
+v -0.094256 0.024662 0.069446
+v -0.062393 0.011464 0.103934
+v -0.062393 0.011464 -0.103934
+v -0.020763 -0.005780 -0.122598
+v -0.111499 0.031804 -0.024386
+v -0.094256 0.024662 -0.069446
+v -0.010062 0.009727 0.122598
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.201671 0.341280
+vt 0.315528 0.341280
+vt 0.307071 0.384726
+vt 0.531250 0.296875
+vt 0.531250 0.343750
+vt 0.484375 0.343750
+vt 0.484375 0.296875
+vt 0.437500 0.343750
+vt 0.437500 0.296875
+vt 0.390625 0.296875
+vt 0.390625 0.343750
+vt 0.343750 0.343750
+vt 0.343750 0.296875
+vt 0.578125 0.296875
+vt 0.578125 0.343750
+vt 0.625000 0.296875
+vt 0.625000 0.343750
+vt 0.671875 0.296875
+vt 0.671875 0.343750
+vt 0.801371 0.340121
+vt 0.695971 0.383568
+vt 0.687514 0.340121
+vt 0.720953 0.419768
+vt 0.757935 0.446864
+vt 0.801382 0.453989
+vt 0.625000 0.484375
+vt 0.625000 0.437500
+vt 0.671875 0.437500
+vt 0.671875 0.484375
+vt 0.625000 0.390625
+vt 0.671875 0.390625
+vt 0.578125 0.390625
+vt 0.531250 0.390625
+vt 0.484375 0.390625
+vt 0.437500 0.390625
+vt 0.282090 0.420927
+vt 0.245108 0.448023
+vt 0.201660 0.455148
+vt 0.390625 0.390625
+vt 0.343750 0.390625
+vt 0.390625 0.437500
+vt 0.343750 0.437500
+vt 0.343750 0.484375
+vt 0.390625 0.484375
+vt 0.437500 0.437500
+vt 0.437500 0.484375
+vt 0.484375 0.437500
+vt 0.484375 0.484375
+vt 0.531250 0.437500
+vt 0.531250 0.484375
+vt 0.578125 0.484375
+vt 0.578125 0.437500
+usemtl None
+s off
+f 1/1 2/2 3/3 4/4
+f 5/5 6/6 7/7
+f 8/8 5/5 7/7
+f 9/9 8/8 7/7
+f 10/10 9/9 7/7
+f 11/11 10/10 7/7
+f 12/12 11/11 7/7
+f 13/13 12/12 7/7
+f 14/14 13/13 7/7
+f 15/15 14/14 7/7
+f 16/16 15/15 7/7
+f 17/17 16/16 7/7
+f 18/18 17/17 7/7
+f 19/19 18/18 7/7
+f 20/20 19/19 7/7
+f 21/21 20/20 7/7
+f 22/22 23/23 24/24
+f 25/25 22/22 24/24
+f 26/26 25/25 24/24
+f 27/27 26/26 24/24
+f 28/28 27/27 24/24
+f 29/29 28/28 24/24
+f 30/30 29/29 24/24
+f 31/31 30/30 24/24
+f 32/32 31/31 24/24
+f 33/33 32/32 24/24
+f 34/34 33/33 24/24
+f 35/35 34/34 24/24
+f 36/36 35/35 24/24
+f 37/37 36/36 24/24
+f 38/38 37/37 24/24
+f 23/23 38/38 24/24
+f 6/6 21/21 7/7
+f 25/39 19/40 20/41 22/42
+f 22/42 20/41 21/43 23/44
+f 26/45 18/46 19/40 25/39
+f 27/47 17/48 18/46 26/45
+f 28/49 16/50 17/51 27/52
+f 29/53 15/54 16/50 28/49
+f 30/55 14/56 15/54 29/53
+f 31/57 13/58 14/56 30/55
+f 32/59 12/60 13/58 31/57
+f 33/61 11/62 12/60 32/59
+f 34/63 10/64 11/62 33/61
+f 35/65 9/66 10/64 34/63
+f 36/67 8/68 9/66 35/65
+f 37/69 5/70 8/68 36/67
+f 38/71 6/72 5/70 37/69
+f 23/44 21/43 6/72 38/71
+f 39/73 40/74 41/75 42/76
+f 43/77 44/78 45/79 46/80
+f 47/81 48/82 49/83 50/84
+f 51/85 52/86 44/78 43/77
+f 46/80 45/79 40/74 39/73
+f 50/84 49/83 52/86 51/85
+f 53/87 54/88 48/82 47/81
+f 55/89 56/90 54/88 53/87
+f 57/91 58/92 56/90 55/89
+f 59/93 60/94 58/92 57/91
+f 4/4 3/3 60/94 59/93
+f 2/2 1/1 61/95 62/96
+f 63/97 64/98 62/96 61/95
+f 65/99 66/100 64/98 63/97
+f 42/76 41/75 66/101 65/102
+f 85/5 86/6 87/7
+f 88/8 85/5 87/7
+f 89/9 88/8 87/7
+f 90/10 89/9 87/7
+f 91/11 90/10 87/7
+f 92/12 91/11 87/7
+f 93/13 92/12 87/7
+f 94/14 93/13 87/7
+f 95/15 94/14 87/7
+f 96/16 95/15 87/7
+f 97/17 96/16 87/7
+f 98/18 97/17 87/7
+f 99/19 98/18 87/7
+f 100/20 99/19 87/7
+f 101/21 100/20 87/7
+f 102/22 103/23 104/24
+f 105/25 102/22 104/24
+f 106/26 105/25 104/24
+f 107/27 106/26 104/24
+f 108/28 107/27 104/24
+f 109/29 108/28 104/24
+f 110/30 109/29 104/24
+f 111/31 110/30 104/24
+f 112/32 111/31 104/24
+f 113/33 112/32 104/24
+f 114/34 113/33 104/24
+f 115/35 114/34 104/24
+f 116/36 115/35 104/24
+f 117/37 116/36 104/24
+f 118/38 117/37 104/24
+f 103/23 118/38 104/24
+f 86/6 101/21 87/7
+f 105/39 99/40 100/41 102/42
+f 102/42 100/41 101/43 103/44
+f 106/45 98/46 99/40 105/39
+f 107/47 97/48 98/46 106/45
+f 108/49 96/50 97/51 107/52
+f 109/53 95/54 96/50 108/49
+f 110/55 94/56 95/54 109/53
+f 111/57 93/58 94/56 110/55
+f 112/59 92/60 93/58 111/57
+f 113/61 91/62 92/60 112/59
+f 114/63 90/64 91/62 113/61
+f 115/65 89/66 90/64 114/63
+f 116/67 88/68 89/66 115/65
+f 117/69 85/70 88/68 116/67
+f 118/71 86/72 85/70 117/69
+f 103/44 101/43 86/72 118/71
+f 119/73 120/74 121/75 122/76
+f 125/80 124/79 120/74 119/73
+f 128/84 127/83 130/86 129/85
+f 133/89 134/90 132/88 131/87
+f 135/91 136/92 134/90 133/89
+f 137/93 138/94 136/92 135/91
+f 84/4 83/3 138/94 137/93
+f 141/97 142/98 140/96 139/95
+f 143/99 144/100 142/98 141/97
+f 122/76 121/75 144/101 143/102
+f 4/1 82/2 83/3 84/4
+f 51/77 123/78 124/79 125/80
+f 145/81 126/82 127/83 128/84
+f 129/85 130/86 123/78 51/77
+f 131/87 132/88 126/82 145/81
+f 139/95 140/96 82/2 4/1
+f 51/103 43/104 151/105
+f 65/106 147/107 152/108 42/109
+f 42/109 152/108 153/110 39/111
+f 46/112 39/111 153/110 150/113
+f 46/112 150/113 151/114 43/115
+f 65/106 63/116 148/117 147/107
+f 63/116 61/118 149/119 148/117
+f 61/118 1/120 146/121 149/119
+f 4/122 146/123 1/124
+f 4/122 154/125 146/123
+f 4/122 79/126 154/125
+f 79/126 4/122 84/127
+f 137/128 73/129 79/130 84/131
+f 73/129 67/132 154/133 79/130
+f 149/119 146/121 154/133 67/132
+f 81/134 148/117 149/119 67/132
+f 80/135 147/107 148/117 81/134
+f 80/135 70/136 152/108 147/107
+f 70/136 71/137 153/110 152/108
+f 51/103 151/105 69/138
+f 51/103 69/138 77/139
+f 77/139 129/140 51/103
+f 150/113 68/141 69/142 151/114
+f 78/143 77/144 69/142 68/141
+f 68/141 150/113 153/110 71/137
+f 129/145 77/144 78/143 128/146
+f 78/143 68/141 71/137 72/147
+f 78/143 72/147 145/148 128/146
+f 76/149 72/147 71/137 70/136
+f 76/149 131/150 145/148 72/147
+f 80/135 75/151 76/149 70/136
+f 133/152 131/150 76/149 75/151
+f 135/153 133/152 75/151 74/154
+f 75/151 80/135 81/134 74/154
+f 74/154 81/134 67/132 73/129
+f 137/128 135/153 74/154 73/129
diff --git a/pipeworks/models/pipeworks_pipe_5.obj b/pipeworks/models/pipeworks_pipe_5.obj
new file mode 100644
index 0000000..abf8b97
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_5.obj
@@ -0,0 +1,542 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-3way-corner.blend'
+# www.blender.org
+o pipe.001_Cylinder.000
+v 0.122598 -0.024391 0.024386
+v 0.122598 -0.468750 0.024387
+v 0.122598 -0.468750 -0.024386
+v 0.122598 -0.024391 -0.024386
+v -0.129917 -0.500000 0.086808
+v -0.153247 -0.500000 0.030483
+v 0.000000 -0.500000 -0.000000
+v -0.086808 -0.500000 0.129917
+v -0.030483 -0.500000 0.153248
+v 0.030483 -0.500000 0.153248
+v 0.086808 -0.500000 0.129917
+v 0.129917 -0.500000 0.086808
+v 0.153248 -0.500000 0.030483
+v 0.153248 -0.500000 -0.030483
+v 0.129917 -0.500000 -0.086808
+v 0.086808 -0.500000 -0.129917
+v 0.030483 -0.500000 -0.153247
+v -0.030483 -0.500000 -0.153248
+v -0.086808 -0.500000 -0.129917
+v -0.129917 -0.500000 -0.086808
+v -0.153247 -0.500000 -0.030483
+v -0.129917 -0.468750 -0.086808
+v -0.153248 -0.468750 -0.030483
+v 0.000000 -0.468750 -0.000000
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.468750 -0.153248
+v 0.030483 -0.468750 -0.153247
+v 0.086808 -0.468750 -0.129917
+v 0.129917 -0.468750 -0.086808
+v 0.153248 -0.468750 -0.030483
+v 0.153248 -0.468750 0.030483
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.468750 0.129917
+v -0.129917 -0.468750 0.086808
+v -0.153248 -0.468750 0.030483
+v -0.069446 -0.024391 0.103934
+v -0.069446 -0.468750 0.103934
+v -0.024386 -0.468750 0.122598
+v -0.024386 -0.024391 0.122598
+v -0.122598 -0.024391 0.024386
+v -0.122598 -0.468750 0.024386
+v -0.103933 -0.468750 0.069446
+v -0.103934 -0.024391 0.069446
+v -0.069446 -0.024391 -0.103934
+v -0.069446 -0.468750 -0.103933
+v -0.103934 -0.468750 -0.069446
+v -0.103934 -0.024391 -0.069446
+v -0.122598 -0.024391 -0.024386
+v -0.122598 -0.468750 -0.024386
+v -0.024386 -0.024391 -0.122598
+v -0.024386 -0.468750 -0.122598
+v 0.024386 -0.024391 -0.122598
+v 0.024386 -0.468750 -0.122598
+v 0.069446 -0.024391 -0.103934
+v 0.069447 -0.468750 -0.103933
+v 0.103934 -0.024391 -0.069446
+v 0.103934 -0.468750 -0.069446
+v 0.103934 -0.024391 0.069446
+v 0.103934 -0.468750 0.069447
+v 0.069446 -0.024391 0.103934
+v 0.069446 -0.468750 0.103934
+v 0.024386 -0.024391 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.500000 -0.129917 0.086808
+v 0.500000 -0.153248 0.030483
+v 0.500000 0.000000 0.000000
+v 0.500000 -0.086808 0.129917
+v 0.500000 -0.030483 0.153248
+v 0.500000 0.030483 0.153248
+v 0.500000 0.086808 0.129917
+v 0.500000 0.129917 0.086808
+v 0.500000 0.153248 0.030483
+v 0.500000 0.153248 -0.030483
+v 0.500000 0.129917 -0.086808
+v 0.500000 0.086808 -0.129917
+v 0.500000 0.030483 -0.153247
+v 0.500000 -0.030483 -0.153247
+v 0.500000 -0.086808 -0.129917
+v 0.500000 -0.129917 -0.086807
+v 0.500000 -0.153248 -0.030482
+v 0.468750 -0.129917 -0.086807
+v 0.468750 -0.153248 -0.030483
+v 0.468750 -0.000000 0.000000
+v 0.468750 -0.086808 -0.129917
+v 0.468750 -0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.468750 0.086808 -0.129917
+v 0.468750 0.129917 -0.086808
+v 0.468750 0.153248 -0.030483
+v 0.468750 0.153248 0.030483
+v 0.468750 0.129917 0.086808
+v 0.468750 0.086808 0.129917
+v 0.468750 0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.468750 -0.086808 0.129917
+v 0.468750 -0.129917 0.086808
+v 0.468750 -0.153248 0.030483
+v 0.024386 -0.069446 0.103934
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.024386 0.122598
+v 0.024386 -0.122598 0.024386
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.103934 0.069447
+v 0.024386 -0.103934 0.069446
+v 0.024386 -0.069446 -0.103934
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103934 -0.069446
+v 0.024386 -0.103934 -0.069446
+v 0.468750 -0.122598 -0.024386
+v 0.468750 -0.024386 -0.122598
+v 0.024386 0.024386 -0.122598
+v 0.468750 0.024386 -0.122598
+v 0.024386 0.069446 -0.103934
+v 0.468750 0.069446 -0.103933
+v 0.024386 0.103934 -0.069446
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.103934 0.069447
+v 0.468750 0.069446 0.103934
+v 0.468750 0.024386 0.122598
+v 0.122599 -0.024387 -0.468750
+v 0.122599 0.024386 -0.468750
+v 0.122598 0.024386 -0.024391
+v -0.129917 -0.086808 -0.500000
+v -0.153247 -0.030483 -0.500000
+v 0.000001 0.000000 -0.500000
+v -0.086807 -0.129917 -0.500000
+v -0.030482 -0.153248 -0.500000
+v 0.030483 -0.153248 -0.500000
+v 0.086808 -0.129917 -0.500000
+v 0.129918 -0.086808 -0.500000
+v 0.153248 -0.030483 -0.500000
+v 0.153248 0.030483 -0.500000
+v 0.129918 0.086808 -0.500000
+v 0.086808 0.129917 -0.500000
+v 0.030483 0.153247 -0.500000
+v -0.030482 0.153247 -0.500000
+v -0.086807 0.129917 -0.500000
+v -0.129917 0.086808 -0.500000
+v -0.153247 0.030483 -0.500000
+v -0.129917 0.086808 -0.468750
+v -0.153247 0.030483 -0.468750
+v 0.000000 0.000000 -0.468750
+v -0.086807 0.129917 -0.468750
+v -0.030482 0.153247 -0.468750
+v 0.030483 0.153247 -0.468750
+v 0.086808 0.129917 -0.468750
+v 0.129918 0.086808 -0.468750
+v 0.153248 0.030483 -0.468750
+v 0.153248 -0.030483 -0.468750
+v 0.129918 -0.086808 -0.468750
+v 0.086808 -0.129917 -0.468750
+v 0.030483 -0.153248 -0.468750
+v -0.030482 -0.153248 -0.468750
+v -0.086807 -0.129917 -0.468750
+v -0.129917 -0.086808 -0.468750
+v -0.153247 -0.030483 -0.468750
+v -0.069446 -0.103934 -0.024391
+v -0.069446 -0.103934 -0.468750
+v -0.024386 -0.122598 -0.468750
+v -0.024386 -0.122598 -0.024391
+v -0.122598 -0.024387 -0.468750
+v -0.103933 -0.069447 -0.468750
+v -0.103934 -0.069446 -0.024391
+v -0.069446 0.103933 -0.468750
+v -0.103933 0.069446 -0.468750
+v -0.103934 0.069446 -0.024391
+v -0.122598 0.024386 -0.024391
+v -0.122598 0.024386 -0.468750
+v -0.024386 0.122598 -0.024391
+v -0.024386 0.122598 -0.468750
+v 0.024386 0.122598 -0.024391
+v 0.024387 0.122598 -0.468750
+v 0.069446 0.103934 -0.024391
+v 0.069447 0.103933 -0.468750
+v 0.103934 0.069446 -0.024391
+v 0.103934 0.069446 -0.468750
+v 0.103934 -0.069446 -0.024391
+v 0.103934 -0.069447 -0.468750
+v 0.069446 -0.103934 -0.024391
+v 0.069447 -0.103934 -0.468750
+v 0.024386 -0.122598 -0.024391
+v 0.024387 -0.122598 -0.468750
+v -0.069446 0.103934 -0.024390
+v 0.024386 0.024386 0.122594
+v 0.024386 0.069446 0.103930
+v 0.024386 0.103933 0.069442
+v 0.024386 0.122598 0.024382
+v -0.028389 0.109793 0.028385
+v -0.109793 0.028389 0.028387
+v -0.028389 0.028389 0.109791
+v -0.073974 0.029365 0.073972
+v -0.073974 0.070067 0.028386
+v -0.028389 0.070067 0.073971
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.934657 0.863213
+vt 0.901601 0.899049
+vt 0.865820 0.861492
+vt 0.925541 0.762929
+vt 0.899262 0.810455
+vt 0.865821 0.758725
+vt 0.832379 0.810455
+vt 0.806102 0.762929
+vt 0.959958 0.821457
+vt 0.796982 0.863213
+vt 0.973651 0.780138
+vt 0.830039 0.899049
+vt 0.865820 0.923510
+vt 0.757989 0.745545
+vt 0.793772 0.721082
+vt 0.757989 0.780138
+vt 0.937873 0.721082
+vt 0.973654 0.745543
+vt 0.771681 0.821457
+vt 0.840522 0.707845
+vt 0.891124 0.707845
+s off
+f 1/1 2/2 3/3 4/4
+f 5/5 6/6 7/7
+f 8/8 5/5 7/7
+f 9/9 8/8 7/7
+f 10/10 9/9 7/7
+f 11/11 10/10 7/7
+f 12/12 11/11 7/7
+f 13/13 12/12 7/7
+f 14/14 13/13 7/7
+f 15/15 14/14 7/7
+f 16/16 15/15 7/7
+f 17/17 16/16 7/7
+f 18/18 17/17 7/7
+f 19/19 18/18 7/7
+f 20/20 19/19 7/7
+f 21/21 20/20 7/7
+f 22/22 23/23 24/24
+f 25/25 22/22 24/24
+f 26/26 25/25 24/24
+f 27/27 26/26 24/24
+f 28/28 27/27 24/24
+f 29/29 28/28 24/24
+f 30/30 29/29 24/24
+f 31/31 30/30 24/24
+f 32/32 31/31 24/24
+f 33/33 32/32 24/24
+f 34/34 33/33 24/24
+f 35/35 34/34 24/24
+f 36/36 35/35 24/24
+f 37/37 36/36 24/24
+f 38/38 37/37 24/24
+f 23/23 38/38 24/24
+f 6/6 21/21 7/7
+f 25/39 19/40 20/41 22/42
+f 22/42 20/41 21/43 23/44
+f 26/45 18/46 19/40 25/39
+f 27/47 17/48 18/46 26/45
+f 28/49 16/50 17/51 27/52
+f 29/53 15/54 16/50 28/49
+f 30/55 14/56 15/54 29/53
+f 31/57 13/58 14/56 30/55
+f 32/59 12/60 13/58 31/57
+f 33/61 11/62 12/60 32/59
+f 34/63 10/64 11/62 33/61
+f 35/65 9/66 10/64 34/63
+f 36/67 8/68 9/66 35/65
+f 37/69 5/70 8/68 36/67
+f 38/71 6/72 5/70 37/69
+f 23/44 21/43 6/72 38/71
+f 39/73 40/74 41/75 42/76
+f 43/77 44/78 45/79 46/80
+f 47/81 48/82 49/83 50/84
+f 51/85 52/86 44/78 43/77
+f 46/80 45/79 40/74 39/73
+f 50/84 49/83 52/86 51/85
+f 53/87 54/88 48/82 47/81
+f 55/89 56/90 54/88 53/87
+f 57/91 58/92 56/90 55/89
+f 59/93 60/94 58/92 57/91
+f 4/4 3/3 60/94 59/93
+f 2/2 1/1 61/95 62/96
+f 63/97 64/98 62/96 61/95
+f 65/99 66/100 64/98 63/97
+f 42/76 41/75 66/101 65/102
+f 69/5 70/6 71/7
+f 72/8 69/5 71/7
+f 73/9 72/8 71/7
+f 74/10 73/9 71/7
+f 75/11 74/10 71/7
+f 76/12 75/11 71/7
+f 77/13 76/12 71/7
+f 78/14 77/13 71/7
+f 79/15 78/14 71/7
+f 80/16 79/15 71/7
+f 81/17 80/16 71/7
+f 82/18 81/17 71/7
+f 83/19 82/18 71/7
+f 84/20 83/19 71/7
+f 85/21 84/20 71/7
+f 86/22 87/23 88/24
+f 89/25 86/22 88/24
+f 90/26 89/25 88/24
+f 91/27 90/26 88/24
+f 92/28 91/27 88/24
+f 93/29 92/28 88/24
+f 94/30 93/29 88/24
+f 95/31 94/30 88/24
+f 96/32 95/31 88/24
+f 97/33 96/32 88/24
+f 98/34 97/33 88/24
+f 99/35 98/34 88/24
+f 100/36 99/35 88/24
+f 101/37 100/36 88/24
+f 102/38 101/37 88/24
+f 87/23 102/38 88/24
+f 70/6 85/21 71/7
+f 89/39 83/40 84/41 86/42
+f 86/42 84/41 85/43 87/44
+f 90/45 82/46 83/40 89/39
+f 91/47 81/48 82/46 90/45
+f 92/49 80/50 81/51 91/52
+f 93/53 79/54 80/50 92/49
+f 94/55 78/56 79/54 93/53
+f 95/57 77/58 78/56 94/55
+f 96/59 76/60 77/58 95/57
+f 97/61 75/62 76/60 96/59
+f 98/63 74/64 75/62 97/61
+f 99/65 73/66 74/64 98/63
+f 100/67 72/68 73/66 99/65
+f 101/69 69/70 72/68 100/67
+f 102/71 70/72 69/70 101/69
+f 87/44 85/43 70/72 102/71
+f 106/77 107/78 108/79 109/80
+f 110/81 111/82 112/83 113/84
+f 109/80 108/79 104/74 103/73
+f 118/91 119/92 117/90 116/89
+f 120/93 121/94 119/92 118/91
+f 128/5 129/6 130/7
+f 131/8 128/5 130/7
+f 132/9 131/8 130/7
+f 133/10 132/9 130/7
+f 134/11 133/10 130/7
+f 135/12 134/11 130/7
+f 136/13 135/12 130/7
+f 137/14 136/13 130/7
+f 138/15 137/14 130/7
+f 139/16 138/15 130/7
+f 140/17 139/16 130/7
+f 141/18 140/17 130/7
+f 142/19 141/18 130/7
+f 143/20 142/19 130/7
+f 144/21 143/20 130/7
+f 145/22 146/23 147/24
+f 148/25 145/22 147/24
+f 149/26 148/25 147/24
+f 150/27 149/26 147/24
+f 151/28 150/27 147/24
+f 152/29 151/28 147/24
+f 153/30 152/29 147/24
+f 154/31 153/30 147/24
+f 155/32 154/31 147/24
+f 156/33 155/32 147/24
+f 157/34 156/33 147/24
+f 158/35 157/34 147/24
+f 159/36 158/35 147/24
+f 160/37 159/36 147/24
+f 161/38 160/37 147/24
+f 146/23 161/38 147/24
+f 129/6 144/21 130/7
+f 148/39 142/40 143/41 145/42
+f 145/42 143/41 144/43 146/44
+f 149/45 141/46 142/40 148/39
+f 150/47 140/48 141/46 149/45
+f 151/49 139/50 140/51 150/52
+f 152/53 138/54 139/50 151/49
+f 153/55 137/56 138/54 152/53
+f 154/57 136/58 137/56 153/55
+f 155/59 135/60 136/58 154/57
+f 156/61 134/62 135/60 155/59
+f 157/63 133/64 134/62 156/61
+f 158/65 132/66 133/64 157/63
+f 159/67 131/68 132/66 158/65
+f 160/69 128/70 131/68 159/67
+f 161/71 129/72 128/70 160/69
+f 146/44 144/43 129/72 161/71
+f 162/73 163/74 164/75 165/76
+f 168/80 167/79 163/74 162/73
+f 171/84 170/83 173/86 172/85
+f 176/89 177/90 175/88 174/87
+f 178/91 179/92 177/90 176/89
+f 180/93 181/94 179/92 178/91
+f 127/4 126/3 181/94 180/93
+f 184/97 185/98 183/96 182/95
+f 186/99 187/100 185/98 184/97
+f 165/76 164/75 187/101 186/102
+f 191/103 192/104 193/105
+f 195/106 198/107 196/108
+f 198/107 193/105 197/109
+f 198/107 197/109 196/108
+f 196/108 197/109 194/110
+f 190/111 191/103 198/107
+f 193/105 188/112 197/109
+f 193/105 198/107 191/103
+f 195/106 190/111 198/107
+f 190/111 195/106 189/113
+f 192/1 67/2 68/3 176/4
+f 103/73 104/74 105/75 65/76
+f 186/85 114/86 107/78 106/77
+f 113/84 112/83 114/86 186/85
+f 55/87 115/88 111/82 110/81
+f 116/89 117/90 115/88 55/87
+f 176/4 68/3 121/94 120/93
+f 191/95 122/96 67/2 192/1
+f 190/97 123/98 122/96 191/95
+f 189/99 124/100 123/98 190/97
+f 65/76 105/75 124/101 189/102
+f 4/1 125/2 126/3 127/4
+f 51/77 166/78 167/79 168/80
+f 188/81 169/82 170/83 171/84
+f 172/85 173/86 166/78 51/77
+f 174/87 175/88 169/82 188/81
+f 182/95 183/96 125/2 4/1
+f 174/114 192/104 176/115
+f 51/116 43/117 172/118
+f 42/119 65/120 189/113
+f 192/104 174/114 193/105
+f 188/112 193/105 174/114
+f 188/112 171/121 197/109
+f 46/122 39/123 196/108
+f 195/106 196/108 39/123
+f 194/110 46/122 196/108
+f 194/110 197/109 171/121
+f 171/121 172/118 194/110
+f 43/117 194/110 172/118
+f 46/122 194/110 43/117
+f 39/123 42/119 195/106
+f 189/113 195/106 42/119
diff --git a/pipeworks/models/pipeworks_pipe_6.obj b/pipeworks/models/pipeworks_pipe_6.obj
new file mode 100644
index 0000000..0744c45
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_6.obj
@@ -0,0 +1,499 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-3way.blend'
+# www.blender.org
+o Cube.000
+v -0.069446 -0.468750 0.103934
+v -0.103933 -0.468750 0.069446
+v -0.122598 -0.468750 0.024386
+v -0.122598 -0.468750 -0.024386
+v -0.129917 -0.500000 -0.086808
+v -0.129917 -0.468750 -0.086808
+v -0.086808 -0.500000 -0.129917
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.500000 -0.153248
+v -0.030483 -0.468750 -0.153248
+v 0.030483 -0.500000 -0.153247
+v 0.030483 -0.468750 -0.153247
+v 0.086808 -0.500000 -0.129917
+v 0.086808 -0.468750 -0.129917
+v 0.129917 -0.500000 -0.086808
+v 0.129917 -0.468750 -0.086808
+v 0.153248 -0.500000 -0.030483
+v 0.153248 -0.468750 -0.030483
+v 0.153248 -0.500000 0.030483
+v 0.153248 -0.468750 0.030483
+v 0.129917 -0.500000 0.086808
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.500000 0.129917
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.500000 0.153248
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.500000 0.153248
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.500000 0.129917
+v -0.086808 -0.468750 0.129917
+v -0.129917 -0.500000 0.086808
+v -0.129917 -0.468750 0.086808
+v -0.153247 -0.500000 0.030483
+v -0.153248 -0.468750 0.030483
+v -0.153247 -0.500000 -0.030483
+v -0.153248 -0.468750 -0.030483
+v -0.024386 -0.468750 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.069446 -0.468750 0.103934
+v 0.103934 -0.468750 0.069447
+v 0.122598 -0.468750 0.024387
+v 0.122598 -0.468750 -0.024386
+v 0.103934 -0.468750 -0.069446
+v 0.069447 -0.468750 -0.103933
+v 0.024386 -0.468750 -0.122598
+v -0.024386 -0.468750 -0.122598
+v -0.069446 -0.468750 -0.103933
+v -0.103934 -0.468750 -0.069446
+v 0.000000 -0.468750 0.000000
+v 0.000000 -0.500000 0.000000
+v 0.024386 -0.024391 0.122598
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 0.069446
+v 0.122598 -0.024391 0.024386
+v 0.122598 -0.024391 -0.024386
+v 0.103934 -0.024391 -0.069446
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v -0.024386 -0.024391 -0.122598
+v -0.103934 -0.024391 -0.069446
+v -0.069446 -0.024391 -0.103934
+v -0.103934 -0.024391 0.069446
+v -0.122598 -0.024391 0.024386
+v -0.122598 -0.024391 -0.024386
+v -0.069446 -0.024391 0.103934
+v -0.024386 -0.024391 0.122598
+v -0.468750 -0.153248 -0.030483
+v -0.500000 -0.153248 -0.030483
+v -0.468750 -0.153248 0.030483
+v -0.500000 -0.153248 0.030483
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.030483 0.153248
+v -0.500000 -0.030483 0.153248
+v -0.468750 0.030483 0.153248
+v -0.500000 0.030483 0.153248
+v -0.468750 0.086808 0.129917
+v -0.500000 0.086808 0.129917
+v -0.468750 0.129917 0.086808
+v -0.500000 0.129917 0.086808
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153248 0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.030483 -0.153248
+v -0.500000 0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.122598 -0.024386
+v -0.468750 -0.122598 0.024386
+v -0.468750 -0.103934 0.069446
+v -0.468750 -0.069446 0.103934
+v -0.468750 -0.024386 0.122598
+v -0.468750 0.024386 0.122598
+v -0.468750 0.069446 0.103934
+v -0.468750 0.103934 0.069446
+v -0.468750 0.122598 0.024386
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.069446 -0.103934
+v -0.468750 0.024386 -0.122598
+v -0.468750 -0.024386 -0.122598
+v -0.468750 -0.069446 -0.103934
+v -0.468750 -0.103934 -0.069446
+v -0.468750 0.000000 -0.000000
+v -0.500000 -0.000000 -0.000000
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.103934 0.069447
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.122598 -0.024386
+v 0.500000 -0.129917 -0.086807
+v 0.468750 -0.129917 -0.086807
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.468750 -0.030483 -0.153247
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.153248 -0.030483
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.129917 0.086808
+v 0.468750 0.129917 0.086808
+v 0.500000 0.086808 0.129917
+v 0.468750 0.086808 0.129917
+v 0.500000 0.030483 0.153248
+v 0.468750 0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.153248 0.030483
+v 0.468750 -0.153248 0.030483
+v 0.500000 -0.153248 -0.030482
+v 0.468750 -0.153248 -0.030483
+v 0.468750 -0.024386 0.122598
+v 0.468750 0.024386 0.122598
+v 0.468750 0.069446 0.103934
+v 0.468750 0.103934 0.069447
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.069446 -0.103933
+v 0.468750 0.024386 -0.122598
+v 0.468750 -0.024386 -0.122598
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103934 -0.069446
+v 0.468750 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.218363 0.657325
+vt 0.185866 0.820702
+vt 0.153368 0.657325
+vt 0.531836 0.657325
+vt 0.564334 0.820702
+vt 0.596832 0.657325
+vt 0.656879 0.682198
+vt 0.702838 0.728156
+vt 0.727710 0.788204
+vt 0.727710 0.853199
+vt 0.702838 0.913247
+vt 0.656879 0.959205
+vt 0.596831 0.984078
+vt 0.531836 0.984078
+vt 0.471788 0.959205
+vt 0.425830 0.913247
+vt 0.400957 0.853199
+vt 0.400957 0.788204
+vt 0.425830 0.728156
+vt 0.471789 0.682198
+vt 0.093321 0.682198
+vt 0.047362 0.728156
+vt 0.022489 0.788204
+vt 0.022489 0.853199
+vt 0.047362 0.913247
+vt 0.093320 0.959205
+vt 0.153368 0.984078
+vt 0.218363 0.984078
+vt 0.278411 0.959205
+vt 0.324369 0.913247
+vt 0.349242 0.853199
+vt 0.349242 0.788204
+vt 0.324369 0.728156
+vt 0.278411 0.682198
+vt 0.187500 0.515625
+vt 0.250000 0.515625
+vt 0.875000 0.515625
+vt 0.937500 0.515625
+vt 0.750000 0.515625
+vt 0.812500 0.515625
+vt 0.562500 0.515625
+vt 0.625000 0.515625
+vt 0.687500 0.515625
+vt 0.500000 0.515625
+vt 0.437500 0.515625
+vt 0.375000 0.515625
+vt 0.312500 0.515625
+vt 0.125000 0.515625
+vt 0.062500 0.515625
+vt 0.000000 0.515625
+vt 1.000000 0.515625
+s off
+f 54/1 41/2 42/3 55/4
+f 31/5 33/6 50/7
+f 29/8 31/5 50/7
+f 27/9 29/8 50/7
+f 25/10 27/9 50/7
+f 23/11 25/10 50/7
+f 21/12 23/11 50/7
+f 19/13 21/12 50/7
+f 17/14 19/13 50/7
+f 15/15 17/14 50/7
+f 13/16 15/15 50/7
+f 11/17 13/16 50/7
+f 9/18 11/17 50/7
+f 7/19 9/18 50/7
+f 5/20 7/19 50/7
+f 35/21 5/20 50/7
+f 6/22 36/23 49/24
+f 8/25 6/22 49/24
+f 10/26 8/25 49/24
+f 12/27 10/26 49/24
+f 14/28 12/27 49/24
+f 16/29 14/28 49/24
+f 18/30 16/29 49/24
+f 20/31 18/30 49/24
+f 22/32 20/31 49/24
+f 24/33 22/32 49/24
+f 26/34 24/33 49/24
+f 28/35 26/34 49/24
+f 30/36 28/35 49/24
+f 32/37 30/36 49/24
+f 34/38 32/37 49/24
+f 36/23 34/38 49/24
+f 33/6 35/21 50/7
+f 8/39 7/40 5/41 6/42
+f 6/42 5/41 35/43 36/44
+f 10/45 9/46 7/40 8/39
+f 12/47 11/48 9/46 10/45
+f 14/49 13/50 11/51 12/52
+f 16/53 15/54 13/50 14/49
+f 18/55 17/56 15/54 16/53
+f 20/57 19/58 17/56 18/55
+f 22/59 21/60 19/58 20/57
+f 24/61 23/62 21/60 22/59
+f 26/63 25/64 23/62 24/61
+f 28/65 27/66 25/64 26/63
+f 30/67 29/68 27/66 28/65
+f 32/69 31/70 29/68 30/67
+f 34/71 33/72 31/70 32/69
+f 36/44 35/43 33/72 34/71
+f 65/73 1/74 37/75 66/76
+f 63/77 3/78 2/79 62/80
+f 61/81 47/82 48/83 60/84
+f 64/85 4/86 3/78 63/77
+f 62/80 2/79 1/74 65/73
+f 60/84 48/83 4/86 64/85
+f 59/87 46/88 47/82 61/81
+f 58/89 45/90 46/88 59/87
+f 57/91 44/92 45/90 58/89
+f 56/93 43/94 44/92 57/91
+f 55/4 42/3 43/94 56/93
+f 53/95 40/96 41/2 54/1
+f 52/97 39/98 40/96 53/95
+f 51/99 38/100 39/98 52/97
+f 66/76 37/75 38/101 51/102
+f 67/58 69/60 70/59 68/57
+f 69/60 71/62 72/61 70/59
+f 71/62 73/64 74/63 72/61
+f 73/64 75/66 76/65 74/63
+f 75/66 77/68 78/67 76/65
+f 77/68 79/70 80/69 78/67
+f 79/70 81/72 82/71 80/69
+f 81/72 83/43 84/44 82/71
+f 83/43 85/41 86/42 84/44
+f 85/41 87/40 88/39 86/42
+f 87/40 89/46 90/45 88/39
+f 89/46 91/48 92/47 90/45
+f 91/51 93/50 94/49 92/52
+f 93/50 95/54 96/53 94/49
+f 97/56 67/58 68/57 98/55
+f 95/54 97/56 98/55 96/53
+f 70/103 116/104 68/105
+f 67/106 115/107 69/108
+f 69/108 115/107 71/109
+f 71/109 115/107 73/110
+f 73/110 115/107 75/111
+f 75/111 115/107 77/112
+f 77/112 115/107 79/113
+f 79/113 115/107 81/114
+f 81/114 115/107 83/115
+f 83/115 115/107 85/116
+f 85/116 115/107 87/117
+f 87/117 115/107 89/118
+f 89/118 115/107 91/119
+f 91/119 115/107 93/120
+f 93/120 115/107 95/121
+f 95/121 115/107 97/122
+f 97/122 115/107 67/106
+f 68/105 116/104 98/123
+f 98/123 116/104 96/124
+f 96/124 116/104 94/125
+f 94/125 116/104 92/126
+f 92/126 116/104 90/127
+f 90/127 116/104 88/128
+f 88/128 116/104 86/129
+f 86/129 116/104 84/130
+f 84/130 116/104 82/131
+f 82/131 116/104 80/132
+f 80/132 116/104 78/133
+f 78/133 116/104 76/134
+f 76/134 116/104 74/135
+f 74/135 116/104 72/136
+f 72/136 116/104 70/103
+f 107/137 157/2 158/3 108/138
+f 147/5 149/6 166/7
+f 145/8 147/5 166/7
+f 143/9 145/8 166/7
+f 141/10 143/9 166/7
+f 139/11 141/10 166/7
+f 137/12 139/11 166/7
+f 135/13 137/12 166/7
+f 133/14 135/13 166/7
+f 131/15 133/14 166/7
+f 129/16 131/15 166/7
+f 127/17 129/16 166/7
+f 125/18 127/17 166/7
+f 123/19 125/18 166/7
+f 121/20 123/19 166/7
+f 151/21 121/20 166/7
+f 122/22 152/23 165/24
+f 124/25 122/22 165/24
+f 126/26 124/25 165/24
+f 128/27 126/26 165/24
+f 130/28 128/27 165/24
+f 132/29 130/28 165/24
+f 134/30 132/29 165/24
+f 136/31 134/30 165/24
+f 138/32 136/31 165/24
+f 140/33 138/32 165/24
+f 142/34 140/33 165/24
+f 144/35 142/34 165/24
+f 146/36 144/35 165/24
+f 148/37 146/36 165/24
+f 150/38 148/37 165/24
+f 152/23 150/38 165/24
+f 149/6 151/21 166/7
+f 124/39 123/40 121/41 122/42
+f 122/42 121/41 151/43 152/44
+f 126/45 125/46 123/40 124/39
+f 128/47 127/48 125/46 126/45
+f 130/49 129/50 127/51 128/52
+f 132/53 131/54 129/50 130/49
+f 134/55 133/56 131/54 132/53
+f 136/57 135/58 133/56 134/55
+f 138/59 137/60 135/58 136/57
+f 140/61 139/62 137/60 138/59
+f 142/63 141/64 139/62 140/61
+f 144/65 143/66 141/64 142/63
+f 146/67 145/68 143/66 144/65
+f 148/69 147/70 145/68 146/67
+f 150/71 149/72 147/70 148/69
+f 152/44 151/43 149/72 150/71
+f 102/139 117/74 153/75 103/140
+f 100/141 119/78 118/79 101/142
+f 113/143 163/82 164/83 114/144
+f 99/145 120/86 119/78 100/141
+f 101/142 118/79 117/74 102/139
+f 114/144 164/83 120/86 99/145
+f 112/146 162/88 163/82 113/143
+f 111/147 161/90 162/88 112/146
+f 110/148 160/92 161/90 111/147
+f 109/149 159/94 160/92 110/148
+f 108/138 158/3 159/94 109/149
+f 106/150 156/96 157/2 107/137
+f 105/151 155/98 156/96 106/150
+f 104/152 154/100 155/98 105/151
+f 103/140 153/75 154/101 104/153
diff --git a/pipeworks/models/pipeworks_pipe_7.obj b/pipeworks/models/pipeworks_pipe_7.obj
new file mode 100644
index 0000000..d299361
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_7.obj
@@ -0,0 +1,629 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-4way-corner.blend'
+# www.blender.org
+o Cube.000
+v -0.069446 -0.468750 0.103934
+v -0.103933 -0.468750 0.069446
+v -0.122598 -0.468750 0.024386
+v -0.122598 -0.468750 -0.024386
+v -0.129917 -0.500000 -0.086808
+v -0.129917 -0.468750 -0.086808
+v -0.086808 -0.500000 -0.129917
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.500000 -0.153248
+v -0.030483 -0.468750 -0.153248
+v 0.030483 -0.500000 -0.153247
+v 0.030483 -0.468750 -0.153247
+v 0.086808 -0.500000 -0.129917
+v 0.086808 -0.468750 -0.129917
+v 0.129917 -0.500000 -0.086808
+v 0.129917 -0.468750 -0.086808
+v 0.153248 -0.500000 -0.030483
+v 0.153248 -0.468750 -0.030483
+v 0.153248 -0.500000 0.030483
+v 0.153248 -0.468750 0.030483
+v 0.129917 -0.500000 0.086808
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.500000 0.129917
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.500000 0.153248
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.500000 0.153248
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.500000 0.129917
+v -0.086808 -0.468750 0.129917
+v -0.129917 -0.500000 0.086808
+v -0.129917 -0.468750 0.086808
+v -0.153247 -0.500000 0.030483
+v -0.153248 -0.468750 0.030483
+v -0.153247 -0.500000 -0.030483
+v -0.153248 -0.468750 -0.030483
+v -0.024386 -0.468750 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.069446 -0.468750 0.103934
+v 0.103934 -0.468750 0.069447
+v 0.122598 -0.468750 0.024387
+v 0.122598 -0.468750 -0.024386
+v 0.103934 -0.468750 -0.069446
+v 0.069447 -0.468750 -0.103933
+v 0.024386 -0.468750 -0.122598
+v -0.024386 -0.468750 -0.122598
+v -0.069446 -0.468750 -0.103933
+v -0.103934 -0.468750 -0.069446
+v 0.000000 -0.468750 0.000000
+v 0.000000 -0.500000 0.000000
+v 0.024386 -0.024391 0.122598
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 0.069446
+v 0.122598 -0.024391 0.024386
+v 0.122598 -0.024391 -0.024386
+v 0.103934 -0.024391 -0.069446
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v -0.024386 -0.024391 -0.122598
+v -0.103934 -0.024391 -0.069446
+v -0.069446 -0.024391 -0.103934
+v -0.103934 -0.024391 0.069446
+v -0.122598 -0.024391 0.024386
+v -0.122598 -0.024391 -0.024386
+v -0.069446 -0.024391 0.103934
+v -0.024386 -0.024391 0.122598
+v -0.468750 -0.153248 -0.030483
+v -0.500000 -0.153248 -0.030483
+v -0.468750 -0.153248 0.030483
+v -0.500000 -0.153248 0.030483
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.030483 0.153248
+v -0.500000 -0.030483 0.153248
+v -0.468750 0.030483 0.153248
+v -0.500000 0.030483 0.153248
+v -0.468750 0.086808 0.129917
+v -0.500000 0.086808 0.129917
+v -0.468750 0.129917 0.086808
+v -0.500000 0.129917 0.086808
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153248 0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.030483 -0.153248
+v -0.500000 0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.122598 -0.024386
+v -0.468750 -0.122598 0.024386
+v -0.468750 -0.103934 0.069446
+v -0.468750 -0.069446 0.103934
+v -0.468750 -0.024386 0.122598
+v -0.468750 0.024386 0.122598
+v -0.468750 0.069446 0.103934
+v -0.468750 0.103934 0.069446
+v -0.468750 0.122598 0.024386
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.069446 -0.103934
+v -0.468750 0.024386 -0.122598
+v -0.468750 -0.024386 -0.122598
+v -0.468750 -0.069446 -0.103934
+v -0.468750 -0.103934 -0.069446
+v -0.468750 0.000000 -0.000000
+v -0.500000 -0.000000 -0.000000
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.103934 0.069447
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.122598 -0.024386
+v 0.500000 -0.129917 -0.086807
+v 0.468750 -0.129917 -0.086807
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.468750 -0.030483 -0.153247
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.153248 -0.030483
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.129917 0.086808
+v 0.468750 0.129917 0.086808
+v 0.500000 0.086808 0.129917
+v 0.468750 0.086808 0.129917
+v 0.500000 0.030483 0.153248
+v 0.468750 0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.153248 0.030483
+v 0.468750 -0.153248 0.030483
+v 0.500000 -0.153248 -0.030482
+v 0.468750 -0.153248 -0.030483
+v 0.468750 -0.024386 0.122598
+v 0.468750 0.024386 0.122598
+v 0.468750 0.069446 0.103934
+v 0.468750 0.103934 0.069447
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.069446 -0.103933
+v 0.468750 0.024386 -0.122598
+v 0.468750 -0.024386 -0.122598
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103934 -0.069446
+v 0.468750 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+v -0.069446 -0.103934 -0.468750
+v -0.103933 -0.069447 -0.468750
+v -0.122598 -0.024387 -0.468750
+v -0.122598 0.024386 -0.468750
+v -0.129917 0.086808 -0.500000
+v -0.129917 0.086808 -0.468750
+v -0.086807 0.129917 -0.500000
+v -0.086807 0.129917 -0.468750
+v -0.030482 0.153247 -0.500000
+v -0.030482 0.153247 -0.468750
+v 0.030483 0.153247 -0.500000
+v 0.030483 0.153247 -0.468750
+v 0.086808 0.129917 -0.500000
+v 0.086808 0.129917 -0.468750
+v 0.129918 0.086808 -0.500000
+v 0.129918 0.086808 -0.468750
+v 0.153248 0.030483 -0.500000
+v 0.153248 0.030483 -0.468750
+v 0.153248 -0.030483 -0.500000
+v 0.153248 -0.030483 -0.468750
+v 0.129918 -0.086808 -0.500000
+v 0.129918 -0.086808 -0.468750
+v 0.086808 -0.129917 -0.500000
+v 0.086808 -0.129917 -0.468750
+v 0.030483 -0.153248 -0.500000
+v 0.030483 -0.153248 -0.468750
+v -0.030482 -0.153248 -0.500000
+v -0.030482 -0.153248 -0.468750
+v -0.086807 -0.129917 -0.500000
+v -0.086807 -0.129917 -0.468750
+v -0.129917 -0.086808 -0.500000
+v -0.129917 -0.086808 -0.468750
+v -0.153247 -0.030483 -0.500000
+v -0.153247 -0.030483 -0.468750
+v -0.153247 0.030483 -0.500000
+v -0.153247 0.030483 -0.468750
+v -0.024386 -0.122598 -0.468750
+v 0.024387 -0.122598 -0.468750
+v 0.069447 -0.103934 -0.468750
+v 0.103934 -0.069447 -0.468750
+v 0.122599 -0.024387 -0.468750
+v 0.122599 0.024386 -0.468750
+v 0.103934 0.069446 -0.468750
+v 0.069447 0.103933 -0.468750
+v 0.024387 0.122598 -0.468750
+v -0.024386 0.122598 -0.468750
+v -0.069446 0.103933 -0.468750
+v -0.103933 0.069446 -0.468750
+v 0.000000 -0.000000 -0.468750
+v 0.000001 -0.000000 -0.500000
+v 0.024386 -0.122598 -0.024391
+v 0.069446 -0.103934 -0.024391
+v 0.103934 -0.069446 -0.024391
+v 0.122598 -0.024386 -0.024391
+v 0.122598 0.024386 -0.024391
+v 0.103934 0.069446 -0.024391
+v 0.069446 0.103934 -0.024391
+v 0.024386 0.122598 -0.024391
+v -0.024386 0.122598 -0.024391
+v -0.103934 0.069446 -0.024391
+v -0.069446 0.103934 -0.024391
+v -0.103934 -0.069446 -0.024391
+v -0.122598 -0.024386 -0.024391
+v -0.122598 0.024386 -0.024391
+v -0.069446 -0.103934 -0.024391
+v -0.024386 -0.122598 -0.024391
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.218363 0.657325
+vt 0.185866 0.820702
+vt 0.153368 0.657325
+vt 0.531836 0.657325
+vt 0.564334 0.820702
+vt 0.596832 0.657325
+vt 0.656879 0.682198
+vt 0.702838 0.728156
+vt 0.727710 0.788204
+vt 0.727710 0.853199
+vt 0.702838 0.913247
+vt 0.656879 0.959205
+vt 0.596831 0.984078
+vt 0.531836 0.984078
+vt 0.471788 0.959205
+vt 0.425830 0.913247
+vt 0.400957 0.853199
+vt 0.400957 0.788204
+vt 0.425830 0.728156
+vt 0.471789 0.682198
+vt 0.093321 0.682198
+vt 0.047362 0.728156
+vt 0.022489 0.788204
+vt 0.022489 0.853199
+vt 0.047362 0.913247
+vt 0.093320 0.959205
+vt 0.153368 0.984078
+vt 0.218363 0.984078
+vt 0.278411 0.959205
+vt 0.324369 0.913247
+vt 0.349242 0.853199
+vt 0.349242 0.788204
+vt 0.324369 0.728156
+vt 0.278411 0.682198
+vt 0.187500 0.515625
+vt 0.250000 0.515625
+vt 0.875000 0.515625
+vt 0.937500 0.515625
+vt 0.750000 0.515625
+vt 0.812500 0.515625
+vt 0.562500 0.515625
+vt 0.625000 0.515625
+vt 0.687500 0.515625
+vt 0.500000 0.515625
+vt 0.437500 0.515625
+vt 0.375000 0.515625
+vt 0.312500 0.515625
+vt 0.125000 0.515625
+vt 0.062500 0.515625
+vt 0.000000 0.515625
+vt 1.000000 0.515625
+s off
+f 54/1 41/2 42/3 55/4
+f 31/5 33/6 50/7
+f 29/8 31/5 50/7
+f 27/9 29/8 50/7
+f 25/10 27/9 50/7
+f 23/11 25/10 50/7
+f 21/12 23/11 50/7
+f 19/13 21/12 50/7
+f 17/14 19/13 50/7
+f 15/15 17/14 50/7
+f 13/16 15/15 50/7
+f 11/17 13/16 50/7
+f 9/18 11/17 50/7
+f 7/19 9/18 50/7
+f 5/20 7/19 50/7
+f 35/21 5/20 50/7
+f 6/22 36/23 49/24
+f 8/25 6/22 49/24
+f 10/26 8/25 49/24
+f 12/27 10/26 49/24
+f 14/28 12/27 49/24
+f 16/29 14/28 49/24
+f 18/30 16/29 49/24
+f 20/31 18/30 49/24
+f 22/32 20/31 49/24
+f 24/33 22/32 49/24
+f 26/34 24/33 49/24
+f 28/35 26/34 49/24
+f 30/36 28/35 49/24
+f 32/37 30/36 49/24
+f 34/38 32/37 49/24
+f 36/23 34/38 49/24
+f 33/6 35/21 50/7
+f 8/39 7/40 5/41 6/42
+f 6/42 5/41 35/43 36/44
+f 10/45 9/46 7/40 8/39
+f 12/47 11/48 9/46 10/45
+f 14/49 13/50 11/51 12/52
+f 16/53 15/54 13/50 14/49
+f 18/55 17/56 15/54 16/53
+f 20/57 19/58 17/56 18/55
+f 22/59 21/60 19/58 20/57
+f 24/61 23/62 21/60 22/59
+f 26/63 25/64 23/62 24/61
+f 28/65 27/66 25/64 26/63
+f 30/67 29/68 27/66 28/65
+f 32/69 31/70 29/68 30/67
+f 34/71 33/72 31/70 32/69
+f 36/44 35/43 33/72 34/71
+f 65/73 1/74 37/75 66/76
+f 63/77 3/78 2/79 62/80
+f 61/81 47/82 48/83 60/84
+f 64/85 4/86 3/78 63/77
+f 62/80 2/79 1/74 65/73
+f 60/84 48/83 4/86 64/85
+f 59/87 46/88 47/82 61/81
+f 58/89 45/90 46/88 59/87
+f 57/91 44/92 45/90 58/89
+f 56/93 43/94 44/92 57/91
+f 55/4 42/3 43/94 56/93
+f 53/95 40/96 41/2 54/1
+f 52/97 39/98 40/96 53/95
+f 51/99 38/100 39/98 52/97
+f 66/76 37/75 38/101 51/102
+f 67/58 69/60 70/59 68/57
+f 69/60 71/62 72/61 70/59
+f 71/62 73/64 74/63 72/61
+f 73/64 75/66 76/65 74/63
+f 75/66 77/68 78/67 76/65
+f 77/68 79/70 80/69 78/67
+f 79/70 81/72 82/71 80/69
+f 81/72 83/43 84/44 82/71
+f 83/43 85/41 86/42 84/44
+f 85/41 87/40 88/39 86/42
+f 87/40 89/46 90/45 88/39
+f 89/46 91/48 92/47 90/45
+f 91/51 93/50 94/49 92/52
+f 93/50 95/54 96/53 94/49
+f 97/56 67/58 68/57 98/55
+f 95/54 97/56 98/55 96/53
+f 70/103 116/104 68/105
+f 67/106 115/107 69/108
+f 69/108 115/107 71/109
+f 71/109 115/107 73/110
+f 73/110 115/107 75/111
+f 75/111 115/107 77/112
+f 77/112 115/107 79/113
+f 79/113 115/107 81/114
+f 81/114 115/107 83/115
+f 83/115 115/107 85/116
+f 85/116 115/107 87/117
+f 87/117 115/107 89/118
+f 89/118 115/107 91/119
+f 91/119 115/107 93/120
+f 93/120 115/107 95/121
+f 95/121 115/107 97/122
+f 97/122 115/107 67/106
+f 68/105 116/104 98/123
+f 98/123 116/104 96/124
+f 96/124 116/104 94/125
+f 94/125 116/104 92/126
+f 92/126 116/104 90/127
+f 90/127 116/104 88/128
+f 88/128 116/104 86/129
+f 86/129 116/104 84/130
+f 84/130 116/104 82/131
+f 82/131 116/104 80/132
+f 80/132 116/104 78/133
+f 78/133 116/104 76/134
+f 76/134 116/104 74/135
+f 74/135 116/104 72/136
+f 72/136 116/104 70/103
+f 107/137 157/2 158/3 108/138
+f 147/5 149/6 166/7
+f 145/8 147/5 166/7
+f 143/9 145/8 166/7
+f 141/10 143/9 166/7
+f 139/11 141/10 166/7
+f 137/12 139/11 166/7
+f 135/13 137/12 166/7
+f 133/14 135/13 166/7
+f 131/15 133/14 166/7
+f 129/16 131/15 166/7
+f 127/17 129/16 166/7
+f 125/18 127/17 166/7
+f 123/19 125/18 166/7
+f 121/20 123/19 166/7
+f 151/21 121/20 166/7
+f 122/22 152/23 165/24
+f 124/25 122/22 165/24
+f 126/26 124/25 165/24
+f 128/27 126/26 165/24
+f 130/28 128/27 165/24
+f 132/29 130/28 165/24
+f 134/30 132/29 165/24
+f 136/31 134/30 165/24
+f 138/32 136/31 165/24
+f 140/33 138/32 165/24
+f 142/34 140/33 165/24
+f 144/35 142/34 165/24
+f 146/36 144/35 165/24
+f 148/37 146/36 165/24
+f 150/38 148/37 165/24
+f 152/23 150/38 165/24
+f 149/6 151/21 166/7
+f 124/39 123/40 121/41 122/42
+f 122/42 121/41 151/43 152/44
+f 126/45 125/46 123/40 124/39
+f 128/47 127/48 125/46 126/45
+f 130/49 129/50 127/51 128/52
+f 132/53 131/54 129/50 130/49
+f 134/55 133/56 131/54 132/53
+f 136/57 135/58 133/56 134/55
+f 138/59 137/60 135/58 136/57
+f 140/61 139/62 137/60 138/59
+f 142/63 141/64 139/62 140/61
+f 144/65 143/66 141/64 142/63
+f 146/67 145/68 143/66 144/65
+f 148/69 147/70 145/68 146/67
+f 150/71 149/72 147/70 148/69
+f 152/44 151/43 149/72 150/71
+f 102/139 117/74 153/75 103/140
+f 100/141 119/78 118/79 101/142
+f 113/143 163/82 164/83 114/144
+f 99/145 120/86 119/78 100/141
+f 101/142 118/79 117/74 102/139
+f 114/144 164/83 120/86 99/145
+f 112/146 162/88 163/82 113/143
+f 111/147 161/90 162/88 112/146
+f 110/148 160/92 161/90 111/147
+f 109/149 159/94 160/92 110/148
+f 108/138 158/3 159/94 109/149
+f 106/150 156/96 157/2 107/137
+f 105/151 155/98 156/96 106/150
+f 104/152 154/100 155/98 105/151
+f 103/140 153/75 154/101 104/153
+f 220/1 207/2 208/3 221/4
+f 197/5 199/6 216/7
+f 195/8 197/5 216/7
+f 193/9 195/8 216/7
+f 191/10 193/9 216/7
+f 189/11 191/10 216/7
+f 187/12 189/11 216/7
+f 185/13 187/12 216/7
+f 183/14 185/13 216/7
+f 181/15 183/14 216/7
+f 179/16 181/15 216/7
+f 177/17 179/16 216/7
+f 175/18 177/17 216/7
+f 173/19 175/18 216/7
+f 171/20 173/19 216/7
+f 201/21 171/20 216/7
+f 172/22 202/23 215/24
+f 174/25 172/22 215/24
+f 176/26 174/25 215/24
+f 178/27 176/26 215/24
+f 180/28 178/27 215/24
+f 182/29 180/28 215/24
+f 184/30 182/29 215/24
+f 186/31 184/30 215/24
+f 188/32 186/31 215/24
+f 190/33 188/32 215/24
+f 192/34 190/33 215/24
+f 194/35 192/34 215/24
+f 196/36 194/35 215/24
+f 198/37 196/36 215/24
+f 200/38 198/37 215/24
+f 202/23 200/38 215/24
+f 199/6 201/21 216/7
+f 174/39 173/40 171/41 172/42
+f 172/42 171/41 201/43 202/44
+f 176/45 175/46 173/40 174/39
+f 178/47 177/48 175/46 176/45
+f 180/49 179/50 177/51 178/52
+f 182/53 181/54 179/50 180/49
+f 184/55 183/56 181/54 182/53
+f 186/57 185/58 183/56 184/55
+f 188/59 187/60 185/58 186/57
+f 190/61 189/62 187/60 188/59
+f 192/63 191/64 189/62 190/61
+f 194/65 193/66 191/64 192/63
+f 196/67 195/68 193/66 194/65
+f 198/69 197/70 195/68 196/67
+f 200/71 199/72 197/70 198/69
+f 202/44 201/43 199/72 200/71
+f 231/73 167/74 203/75 232/76
+f 229/77 169/78 168/79 228/80
+f 227/81 213/82 214/83 226/84
+f 230/85 170/86 169/78 229/77
+f 228/80 168/79 167/74 231/73
+f 226/84 214/83 170/86 230/85
+f 225/87 212/88 213/82 227/81
+f 224/89 211/90 212/88 225/87
+f 223/91 210/92 211/90 224/89
+f 222/93 209/94 210/92 223/91
+f 221/4 208/3 209/94 222/93
+f 219/95 206/96 207/2 220/1
+f 218/97 205/98 206/96 219/95
+f 217/99 204/100 205/98 218/97
+f 232/76 203/75 204/101 217/102
diff --git a/pipeworks/models/pipeworks_pipe_8.obj b/pipeworks/models/pipeworks_pipe_8.obj
new file mode 100644
index 0000000..5dc58f9
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_8.obj
@@ -0,0 +1,631 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-4way.blend'
+# www.blender.org
+mtllib pipeworks_pipe_8.mtl
+o Cube.000
+v 0.069446 -0.468750 -0.103934
+v 0.103933 -0.468750 -0.069446
+v 0.122598 -0.468750 -0.024386
+v 0.122598 -0.468750 0.024386
+v 0.129917 -0.500000 0.086808
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.500000 0.129917
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.500000 0.153247
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.500000 0.153247
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.500000 0.129917
+v -0.086808 -0.468750 0.129917
+v -0.129918 -0.500000 0.086808
+v -0.129917 -0.468750 0.086808
+v -0.153248 -0.500000 0.030483
+v -0.153248 -0.468750 0.030483
+v -0.153248 -0.500000 -0.030483
+v -0.153248 -0.468750 -0.030483
+v -0.129918 -0.500000 -0.086808
+v -0.129917 -0.468750 -0.086808
+v -0.086808 -0.500000 -0.129917
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.500000 -0.153248
+v -0.030483 -0.468750 -0.153248
+v 0.030482 -0.500000 -0.153248
+v 0.030482 -0.468750 -0.153248
+v 0.086807 -0.500000 -0.129917
+v 0.086807 -0.468750 -0.129917
+v 0.129917 -0.500000 -0.086808
+v 0.129917 -0.468750 -0.086808
+v 0.153247 -0.500000 -0.030483
+v 0.153247 -0.468750 -0.030483
+v 0.153247 -0.500000 0.030483
+v 0.153247 -0.468750 0.030483
+v 0.024386 -0.468750 -0.122598
+v -0.024387 -0.468750 -0.122598
+v -0.069447 -0.468750 -0.103934
+v -0.103934 -0.468750 -0.069446
+v -0.122599 -0.468750 -0.024386
+v -0.122599 -0.468750 0.024386
+v -0.103934 -0.468750 0.069446
+v -0.069447 -0.468750 0.103934
+v -0.024387 -0.468750 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.069446 -0.468750 0.103933
+v 0.103933 -0.468750 0.069446
+v -0.000000 -0.468750 -0.000000
+v -0.000000 -0.500000 -0.000000
+v -0.024386 -0.024391 -0.122598
+v -0.069446 -0.024391 -0.103934
+v -0.103934 -0.024391 -0.069446
+v -0.122598 -0.024391 -0.024386
+v -0.122598 -0.024391 0.024386
+v -0.103934 -0.024391 0.069446
+v -0.069446 -0.024391 0.103934
+v -0.024386 -0.024391 0.122598
+v 0.024386 -0.024391 0.122598
+v 0.103934 -0.024391 0.069446
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 -0.069446
+v 0.122598 -0.024391 -0.024386
+v 0.122598 -0.024391 0.024386
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v 0.153248 0.468750 0.030483
+v 0.153248 0.500000 0.030483
+v 0.153248 0.468750 -0.030483
+v 0.153248 0.500000 -0.030483
+v 0.129917 0.468750 -0.086808
+v 0.129917 0.500000 -0.086808
+v 0.086808 0.468750 -0.129917
+v 0.086808 0.500000 -0.129917
+v 0.030483 0.468750 -0.153248
+v 0.030483 0.500000 -0.153248
+v -0.030483 0.468750 -0.153248
+v -0.030483 0.500000 -0.153248
+v -0.086808 0.468750 -0.129917
+v -0.086808 0.500000 -0.129917
+v -0.129917 0.468750 -0.086808
+v -0.129917 0.500000 -0.086808
+v -0.153247 0.468750 -0.030483
+v -0.153247 0.500000 -0.030483
+v -0.153247 0.468750 0.030483
+v -0.153247 0.500000 0.030483
+v -0.129917 0.468750 0.086808
+v -0.129917 0.500000 0.086808
+v -0.086808 0.468750 0.129917
+v -0.086808 0.500000 0.129917
+v -0.030483 0.468750 0.153248
+v -0.030483 0.500000 0.153248
+v 0.030483 0.468750 0.153248
+v 0.030483 0.500000 0.153248
+v 0.086808 0.468750 0.129917
+v 0.086808 0.500000 0.129917
+v 0.129917 0.468750 0.086808
+v 0.129918 0.500000 0.086808
+v 0.122598 0.468750 0.024386
+v 0.122598 0.468750 -0.024386
+v 0.103934 0.468750 -0.069446
+v 0.069447 0.468750 -0.103934
+v 0.024387 0.468750 -0.122598
+v -0.024386 0.468750 -0.122598
+v -0.069446 0.468750 -0.103934
+v -0.103933 0.468750 -0.069446
+v -0.122598 0.468750 -0.024386
+v -0.122598 0.468750 0.024386
+v -0.103933 0.468750 0.069446
+v -0.069446 0.468750 0.103934
+v -0.024386 0.468750 0.122598
+v 0.024387 0.468750 0.122598
+v 0.069447 0.468750 0.103934
+v 0.103934 0.468750 0.069446
+v 0.000000 0.468750 -0.000000
+v 0.000000 0.500000 0.000000
+v -0.024386 0.024390 -0.122598
+v -0.069446 0.024390 -0.103934
+v -0.103934 0.024390 -0.069446
+v -0.122598 0.024390 -0.024386
+v -0.122598 0.024390 0.024386
+v -0.103934 0.024390 0.069446
+v -0.069446 0.024390 0.103934
+v -0.024386 0.024389 0.122598
+v 0.024386 0.024389 0.122598
+v 0.103934 0.024390 0.069446
+v 0.069446 0.024390 0.103934
+v 0.103934 0.024390 -0.069446
+v 0.122598 0.024390 -0.024386
+v 0.122598 0.024390 0.024386
+v 0.069446 0.024390 -0.103934
+v 0.024386 0.024390 -0.122598
+v 0.468750 -0.153248 0.030483
+v 0.500000 -0.153248 0.030483
+v 0.468750 -0.153248 -0.030483
+v 0.500000 -0.153248 -0.030483
+v 0.468750 -0.129917 -0.086808
+v 0.500000 -0.129917 -0.086808
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.030483 -0.153248
+v 0.500000 -0.030483 -0.153248
+v 0.468750 0.030483 -0.153248
+v 0.500000 0.030483 -0.153248
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153247 -0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.129917 0.086808
+v 0.500000 0.129917 0.086808
+v 0.468750 0.086808 0.129917
+v 0.500000 0.086808 0.129917
+v 0.468750 0.030483 0.153248
+v 0.500000 0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.122598 0.024386
+v 0.468750 -0.122598 -0.024386
+v 0.468750 -0.103934 -0.069446
+v 0.468750 -0.069446 -0.103934
+v 0.468750 -0.024386 -0.122598
+v 0.468750 0.024386 -0.122598
+v 0.468750 0.069446 -0.103934
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.122598 0.024386
+v 0.468750 0.103934 0.069446
+v 0.468750 0.069446 0.103934
+v 0.468750 0.024386 0.122598
+v 0.468750 -0.024387 0.122598
+v 0.468750 -0.069447 0.103934
+v 0.468750 -0.103934 0.069446
+v 0.468750 -0.000000 -0.000000
+v 0.500000 -0.000000 0.000000
+v -0.468750 -0.069446 -0.103934
+v -0.468750 -0.103933 -0.069446
+v -0.468750 -0.122598 -0.024387
+v -0.468750 -0.122598 0.024386
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.030483 0.153247
+v -0.468750 -0.030483 0.153248
+v -0.500000 0.030483 0.153247
+v -0.468750 0.030483 0.153248
+v -0.500000 0.086808 0.129917
+v -0.468750 0.086808 0.129917
+v -0.500000 0.129917 0.086808
+v -0.468750 0.129917 0.086808
+v -0.500000 0.153248 0.030483
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.030483 -0.153248
+v -0.468750 0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.153247 -0.030483
+v -0.468750 -0.153247 -0.030483
+v -0.500000 -0.153247 0.030483
+v -0.468750 -0.153247 0.030483
+v -0.468750 -0.024386 -0.122598
+v -0.468750 0.024387 -0.122598
+v -0.468750 0.069447 -0.103934
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.122598 0.024386
+v -0.468750 0.103934 0.069446
+v -0.468750 0.069447 0.103934
+v -0.468750 0.024387 0.122598
+v -0.468750 -0.024386 0.122598
+v -0.468750 -0.069446 0.103933
+v -0.468750 -0.103933 0.069446
+v -0.468750 0.000000 -0.000000
+v -0.500000 0.000000 -0.000000
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.218363 0.657325
+vt 0.185866 0.820702
+vt 0.153368 0.657325
+vt 0.531836 0.657325
+vt 0.564334 0.820702
+vt 0.596832 0.657325
+vt 0.656879 0.682198
+vt 0.702838 0.728156
+vt 0.727710 0.788204
+vt 0.727710 0.853199
+vt 0.702838 0.913247
+vt 0.656879 0.959205
+vt 0.596831 0.984078
+vt 0.531836 0.984078
+vt 0.471788 0.959205
+vt 0.425830 0.913247
+vt 0.400957 0.853199
+vt 0.400957 0.788204
+vt 0.425830 0.728156
+vt 0.471789 0.682198
+vt 0.093321 0.682198
+vt 0.047362 0.728156
+vt 0.022489 0.788204
+vt 0.022489 0.853199
+vt 0.047362 0.913247
+vt 0.093320 0.959205
+vt 0.153368 0.984078
+vt 0.218363 0.984078
+vt 0.278411 0.959205
+vt 0.324369 0.913247
+vt 0.349242 0.853199
+vt 0.349242 0.788204
+vt 0.324369 0.728156
+vt 0.278411 0.682198
+vt 0.187500 0.515625
+vt 0.250000 0.515625
+vt 0.875000 0.515625
+vt 0.937500 0.515625
+vt 0.750000 0.515625
+vt 0.812500 0.515625
+vt 0.562500 0.515625
+vt 0.625000 0.515625
+vt 0.687500 0.515625
+vt 0.500000 0.515625
+vt 0.437500 0.515625
+vt 0.375000 0.515625
+vt 0.312500 0.515625
+vt 0.125000 0.515625
+vt 0.062500 0.515625
+vt 0.000000 0.515625
+vt 1.000000 0.515625
+usemtl None
+s off
+f 54/1 41/2 42/3 55/4
+f 31/5 33/6 50/7
+f 29/8 31/5 50/7
+f 27/9 29/8 50/7
+f 25/10 27/9 50/7
+f 23/11 25/10 50/7
+f 21/12 23/11 50/7
+f 19/13 21/12 50/7
+f 17/14 19/13 50/7
+f 15/15 17/14 50/7
+f 13/16 15/15 50/7
+f 11/17 13/16 50/7
+f 9/18 11/17 50/7
+f 7/19 9/18 50/7
+f 5/20 7/19 50/7
+f 35/21 5/20 50/7
+f 6/22 36/23 49/24
+f 8/25 6/22 49/24
+f 10/26 8/25 49/24
+f 12/27 10/26 49/24
+f 14/28 12/27 49/24
+f 16/29 14/28 49/24
+f 18/30 16/29 49/24
+f 20/31 18/30 49/24
+f 22/32 20/31 49/24
+f 24/33 22/32 49/24
+f 26/34 24/33 49/24
+f 28/35 26/34 49/24
+f 30/36 28/35 49/24
+f 32/37 30/36 49/24
+f 34/38 32/37 49/24
+f 36/23 34/38 49/24
+f 33/6 35/21 50/7
+f 8/39 7/40 5/41 6/42
+f 6/42 5/41 35/43 36/44
+f 10/45 9/46 7/40 8/39
+f 12/47 11/48 9/46 10/45
+f 14/49 13/50 11/51 12/52
+f 16/53 15/54 13/50 14/49
+f 18/55 17/56 15/54 16/53
+f 20/57 19/58 17/56 18/55
+f 22/59 21/60 19/58 20/57
+f 24/61 23/62 21/60 22/59
+f 26/63 25/64 23/62 24/61
+f 28/65 27/66 25/64 26/63
+f 30/67 29/68 27/66 28/65
+f 32/69 31/70 29/68 30/67
+f 34/71 33/72 31/70 32/69
+f 36/44 35/43 33/72 34/71
+f 65/73 1/74 37/75 66/76
+f 63/77 3/78 2/79 62/80
+f 61/81 47/82 48/83 60/84
+f 64/85 4/86 3/78 63/77
+f 62/80 2/79 1/74 65/73
+f 60/84 48/83 4/86 64/85
+f 59/87 46/88 47/82 61/81
+f 58/89 45/90 46/88 59/87
+f 57/91 44/92 45/90 58/89
+f 56/93 43/94 44/92 57/91
+f 55/4 42/3 43/94 56/93
+f 53/95 40/96 41/2 54/1
+f 52/97 39/98 40/96 53/95
+f 51/99 38/100 39/98 52/97
+f 66/76 37/75 38/101 51/102
+f 67/58 69/60 70/59 68/57
+f 69/60 71/62 72/61 70/59
+f 71/62 73/64 74/63 72/61
+f 73/64 75/66 76/65 74/63
+f 75/66 77/68 78/67 76/65
+f 77/68 79/70 80/69 78/67
+f 79/70 81/72 82/71 80/69
+f 81/72 83/43 84/44 82/71
+f 83/43 85/41 86/42 84/44
+f 85/41 87/40 88/39 86/42
+f 87/40 89/46 90/45 88/39
+f 89/46 91/48 92/47 90/45
+f 91/51 93/50 94/49 92/52
+f 93/50 95/54 96/53 94/49
+f 97/56 67/58 68/57 98/55
+f 95/54 97/56 98/55 96/53
+f 70/103 116/104 68/105
+f 67/106 115/107 69/108
+f 69/108 115/107 71/109
+f 71/109 115/107 73/110
+f 73/110 115/107 75/111
+f 75/111 115/107 77/112
+f 77/112 115/107 79/113
+f 79/113 115/107 81/114
+f 81/114 115/107 83/115
+f 83/115 115/107 85/116
+f 85/116 115/107 87/117
+f 87/117 115/107 89/118
+f 89/118 115/107 91/119
+f 91/119 115/107 93/120
+f 93/120 115/107 95/121
+f 95/121 115/107 97/122
+f 97/122 115/107 67/106
+f 68/105 116/104 98/123
+f 98/123 116/104 96/124
+f 96/124 116/104 94/125
+f 94/125 116/104 92/126
+f 92/126 116/104 90/127
+f 90/127 116/104 88/128
+f 88/128 116/104 86/129
+f 86/129 116/104 84/130
+f 84/130 116/104 82/131
+f 82/131 116/104 80/132
+f 80/132 116/104 78/133
+f 78/133 116/104 76/134
+f 76/134 116/104 74/135
+f 74/135 116/104 72/136
+f 72/136 116/104 70/103
+f 107/137 120/1 121/4 108/138
+f 102/139 131/73 132/76 103/140
+f 100/141 129/77 128/80 101/142
+f 113/143 127/81 126/84 114/144
+f 99/145 130/85 129/77 100/141
+f 101/142 128/80 131/73 102/139
+f 114/144 126/84 130/85 99/145
+f 112/146 125/87 127/81 113/143
+f 111/147 124/89 125/87 112/146
+f 110/148 123/91 124/89 111/147
+f 109/149 122/93 123/91 110/148
+f 108/138 121/4 122/93 109/149
+f 106/150 119/95 120/1 107/137
+f 105/151 118/97 119/95 106/150
+f 104/152 117/99 118/97 105/151
+f 103/140 132/76 117/102 104/153
+f 133/58 135/60 136/59 134/57
+f 135/60 137/62 138/61 136/59
+f 137/62 139/64 140/63 138/61
+f 139/64 141/66 142/65 140/63
+f 141/66 143/68 144/67 142/65
+f 143/68 145/70 146/69 144/67
+f 145/70 147/72 148/71 146/69
+f 147/72 149/43 150/44 148/71
+f 149/43 151/41 152/42 150/44
+f 151/41 153/40 154/39 152/42
+f 153/40 155/46 156/45 154/39
+f 155/46 157/48 158/47 156/45
+f 157/51 159/50 160/49 158/52
+f 159/50 161/54 162/53 160/49
+f 163/56 133/58 134/57 164/55
+f 161/54 163/56 164/55 162/53
+f 136/103 182/104 134/105
+f 133/106 181/107 135/108
+f 135/108 181/107 137/109
+f 137/109 181/107 139/110
+f 139/110 181/107 141/111
+f 141/111 181/107 143/112
+f 143/112 181/107 145/113
+f 145/113 181/107 147/114
+f 147/114 181/107 149/115
+f 149/115 181/107 151/116
+f 151/116 181/107 153/117
+f 153/117 181/107 155/118
+f 155/118 181/107 157/119
+f 157/119 181/107 159/120
+f 159/120 181/107 161/121
+f 161/121 181/107 163/122
+f 163/122 181/107 133/106
+f 134/105 182/104 164/123
+f 164/123 182/104 162/124
+f 162/124 182/104 160/125
+f 160/125 182/104 158/126
+f 158/126 182/104 156/127
+f 156/127 182/104 154/128
+f 154/128 182/104 152/129
+f 152/129 182/104 150/130
+f 150/130 182/104 148/131
+f 148/131 182/104 146/132
+f 146/132 182/104 144/133
+f 144/133 182/104 142/134
+f 142/134 182/104 140/135
+f 140/135 182/104 138/136
+f 138/136 182/104 136/103
+f 173/137 223/2 224/3 174/138
+f 213/5 215/6 232/7
+f 211/8 213/5 232/7
+f 209/9 211/8 232/7
+f 207/10 209/9 232/7
+f 205/11 207/10 232/7
+f 203/12 205/11 232/7
+f 201/13 203/12 232/7
+f 199/14 201/13 232/7
+f 197/15 199/14 232/7
+f 195/16 197/15 232/7
+f 193/17 195/16 232/7
+f 191/18 193/17 232/7
+f 189/19 191/18 232/7
+f 187/20 189/19 232/7
+f 217/21 187/20 232/7
+f 188/22 218/23 231/24
+f 190/25 188/22 231/24
+f 192/26 190/25 231/24
+f 194/27 192/26 231/24
+f 196/28 194/27 231/24
+f 198/29 196/28 231/24
+f 200/30 198/29 231/24
+f 202/31 200/30 231/24
+f 204/32 202/31 231/24
+f 206/33 204/32 231/24
+f 208/34 206/33 231/24
+f 210/35 208/34 231/24
+f 212/36 210/35 231/24
+f 214/37 212/36 231/24
+f 216/38 214/37 231/24
+f 218/23 216/38 231/24
+f 215/6 217/21 232/7
+f 190/39 189/40 187/41 188/42
+f 188/42 187/41 217/43 218/44
+f 192/45 191/46 189/40 190/39
+f 194/47 193/48 191/46 192/45
+f 196/49 195/50 193/51 194/52
+f 198/53 197/54 195/50 196/49
+f 200/55 199/56 197/54 198/53
+f 202/57 201/58 199/56 200/55
+f 204/59 203/60 201/58 202/57
+f 206/61 205/62 203/60 204/59
+f 208/63 207/64 205/62 206/61
+f 210/65 209/66 207/64 208/63
+f 212/67 211/68 209/66 210/65
+f 214/69 213/70 211/68 212/67
+f 216/71 215/72 213/70 214/69
+f 218/44 217/43 215/72 216/71
+f 168/139 183/74 219/75 169/140
+f 166/141 185/78 184/79 167/142
+f 179/143 229/82 230/83 180/144
+f 165/145 186/86 185/78 166/141
+f 167/142 184/79 183/74 168/139
+f 180/144 230/83 186/86 165/145
+f 178/146 228/88 229/82 179/143
+f 177/147 227/90 228/88 178/146
+f 176/148 226/92 227/90 177/147
+f 175/149 225/94 226/92 176/148
+f 174/138 224/3 225/94 175/149
+f 172/150 222/96 223/2 173/137
+f 171/151 221/98 222/96 172/150
+f 170/152 220/100 221/98 171/151
+f 169/140 219/75 220/101 170/153
diff --git a/pipeworks/models/pipeworks_pipe_9.obj b/pipeworks/models/pipeworks_pipe_9.obj
new file mode 100644
index 0000000..8c6e03b
--- /dev/null
+++ b/pipeworks/models/pipeworks_pipe_9.obj
@@ -0,0 +1,759 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-5way.blend'
+# www.blender.org
+o Cube.000
+v -0.069446 -0.468750 0.103934
+v -0.103933 -0.468750 0.069446
+v -0.122598 -0.468750 0.024386
+v -0.122598 -0.468750 -0.024386
+v -0.129917 -0.500000 -0.086808
+v -0.129917 -0.468750 -0.086808
+v -0.086808 -0.500000 -0.129917
+v -0.086808 -0.468750 -0.129917
+v -0.030483 -0.500000 -0.153248
+v -0.030483 -0.468750 -0.153248
+v 0.030483 -0.500000 -0.153247
+v 0.030483 -0.468750 -0.153247
+v 0.086808 -0.500000 -0.129917
+v 0.086808 -0.468750 -0.129917
+v 0.129917 -0.500000 -0.086808
+v 0.129917 -0.468750 -0.086808
+v 0.153248 -0.500000 -0.030483
+v 0.153248 -0.468750 -0.030483
+v 0.153248 -0.500000 0.030483
+v 0.153248 -0.468750 0.030483
+v 0.129917 -0.500000 0.086808
+v 0.129917 -0.468750 0.086808
+v 0.086808 -0.500000 0.129917
+v 0.086808 -0.468750 0.129917
+v 0.030483 -0.500000 0.153248
+v 0.030483 -0.468750 0.153248
+v -0.030483 -0.500000 0.153248
+v -0.030483 -0.468750 0.153248
+v -0.086808 -0.500000 0.129917
+v -0.086808 -0.468750 0.129917
+v -0.129917 -0.500000 0.086808
+v -0.129917 -0.468750 0.086808
+v -0.153247 -0.500000 0.030483
+v -0.153248 -0.468750 0.030483
+v -0.153247 -0.500000 -0.030483
+v -0.153248 -0.468750 -0.030483
+v -0.024386 -0.468750 0.122598
+v 0.024386 -0.468750 0.122598
+v 0.069446 -0.468750 0.103934
+v 0.103934 -0.468750 0.069447
+v 0.122598 -0.468750 0.024387
+v 0.122598 -0.468750 -0.024386
+v 0.103934 -0.468750 -0.069446
+v 0.069447 -0.468750 -0.103933
+v 0.024386 -0.468750 -0.122598
+v -0.024386 -0.468750 -0.122598
+v -0.069446 -0.468750 -0.103933
+v -0.103934 -0.468750 -0.069446
+v 0.000000 -0.468750 0.000000
+v 0.000000 -0.500000 0.000000
+v 0.024386 -0.024391 0.122598
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 0.069446
+v 0.122598 -0.024391 0.024386
+v 0.122598 -0.024391 -0.024386
+v 0.103934 -0.024391 -0.069446
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v -0.024386 -0.024391 -0.122598
+v -0.103934 -0.024391 -0.069446
+v -0.069446 -0.024391 -0.103934
+v -0.103934 -0.024391 0.069446
+v -0.122598 -0.024391 0.024386
+v -0.122598 -0.024391 -0.024386
+v -0.069446 -0.024391 0.103934
+v -0.024386 -0.024391 0.122598
+v -0.153248 0.468750 -0.030483
+v -0.153248 0.500000 -0.030483
+v -0.153248 0.468750 0.030483
+v -0.153248 0.500000 0.030483
+v -0.129917 0.468750 0.086808
+v -0.129917 0.500000 0.086808
+v -0.086808 0.468750 0.129917
+v -0.086808 0.500000 0.129917
+v -0.030483 0.468750 0.153248
+v -0.030483 0.500000 0.153248
+v 0.030483 0.468750 0.153248
+v 0.030483 0.500000 0.153248
+v 0.086808 0.468750 0.129917
+v 0.086808 0.500000 0.129917
+v 0.129917 0.468750 0.086808
+v 0.129917 0.500000 0.086808
+v 0.153248 0.468750 0.030483
+v 0.153248 0.500000 0.030483
+v 0.153248 0.468750 -0.030483
+v 0.153248 0.500000 -0.030483
+v 0.129917 0.468750 -0.086808
+v 0.129917 0.500000 -0.086808
+v 0.086808 0.468750 -0.129917
+v 0.086808 0.500000 -0.129917
+v 0.030483 0.468750 -0.153248
+v 0.030483 0.500000 -0.153248
+v -0.030483 0.468750 -0.153248
+v -0.030483 0.500000 -0.153248
+v -0.086808 0.468750 -0.129917
+v -0.086808 0.500000 -0.129917
+v -0.129917 0.468750 -0.086808
+v -0.129917 0.500000 -0.086808
+v -0.122598 0.468750 -0.024386
+v -0.122598 0.468750 0.024386
+v -0.103934 0.468750 0.069446
+v -0.069446 0.468750 0.103934
+v -0.024386 0.468750 0.122598
+v 0.024386 0.468750 0.122598
+v 0.069446 0.468750 0.103934
+v 0.103934 0.468750 0.069446
+v 0.122598 0.468750 0.024386
+v 0.122598 0.468750 -0.024386
+v 0.103934 0.468750 -0.069446
+v 0.069446 0.468750 -0.103934
+v 0.024386 0.468750 -0.122598
+v -0.024386 0.468750 -0.122598
+v -0.069446 0.468750 -0.103934
+v -0.103934 0.468750 -0.069446
+v -0.000000 0.468750 0.000000
+v -0.000000 0.500000 -0.000000
+v 0.024386 0.024390 0.122598
+v 0.069446 0.024390 0.103934
+v 0.103934 0.024390 0.069446
+v 0.122598 0.024390 0.024386
+v 0.122598 0.024390 -0.024386
+v 0.103934 0.024390 -0.069446
+v 0.069446 0.024390 -0.103934
+v 0.024386 0.024389 -0.122598
+v -0.024386 0.024389 -0.122598
+v -0.103934 0.024390 -0.069446
+v -0.069446 0.024390 -0.103934
+v -0.103934 0.024390 0.069446
+v -0.122598 0.024390 0.024386
+v -0.122598 0.024390 -0.024386
+v -0.069446 0.024390 0.103934
+v -0.024386 0.024390 0.122598
+v -0.468750 -0.153248 -0.030483
+v -0.500000 -0.153248 -0.030483
+v -0.468750 -0.153248 0.030483
+v -0.500000 -0.153248 0.030483
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.030483 0.153248
+v -0.500000 -0.030483 0.153248
+v -0.468750 0.030483 0.153248
+v -0.500000 0.030483 0.153248
+v -0.468750 0.086808 0.129917
+v -0.500000 0.086808 0.129917
+v -0.468750 0.129917 0.086808
+v -0.500000 0.129917 0.086808
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153248 0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.030483 -0.153248
+v -0.500000 0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.122598 -0.024386
+v -0.468750 -0.122598 0.024386
+v -0.468750 -0.103934 0.069446
+v -0.468750 -0.069446 0.103934
+v -0.468750 -0.024386 0.122598
+v -0.468750 0.024386 0.122598
+v -0.468750 0.069446 0.103934
+v -0.468750 0.103934 0.069446
+v -0.468750 0.122598 0.024386
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.069446 -0.103934
+v -0.468750 0.024386 -0.122598
+v -0.468750 -0.024386 -0.122598
+v -0.468750 -0.069446 -0.103934
+v -0.468750 -0.103934 -0.069446
+v -0.468750 0.000000 -0.000000
+v -0.500000 -0.000000 -0.000000
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.103934 0.069447
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.122598 -0.024386
+v 0.500000 -0.129917 -0.086807
+v 0.468750 -0.129917 -0.086807
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.468750 -0.030483 -0.153247
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.153248 -0.030483
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.129917 0.086808
+v 0.468750 0.129917 0.086808
+v 0.500000 0.086808 0.129917
+v 0.468750 0.086808 0.129917
+v 0.500000 0.030483 0.153248
+v 0.468750 0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.086808 0.129917
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.153248 0.030483
+v 0.468750 -0.153248 0.030483
+v 0.500000 -0.153248 -0.030482
+v 0.468750 -0.153248 -0.030483
+v 0.468750 -0.024386 0.122598
+v 0.468750 0.024386 0.122598
+v 0.468750 0.069446 0.103934
+v 0.468750 0.103934 0.069447
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.069446 -0.103933
+v 0.468750 0.024386 -0.122598
+v 0.468750 -0.024386 -0.122598
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103934 -0.069446
+v 0.468750 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+v -0.069446 -0.103934 -0.468750
+v -0.103933 -0.069447 -0.468750
+v -0.122598 -0.024387 -0.468750
+v -0.122598 0.024386 -0.468750
+v -0.129917 0.086808 -0.500000
+v -0.129917 0.086808 -0.468750
+v -0.086807 0.129917 -0.500000
+v -0.086807 0.129917 -0.468750
+v -0.030482 0.153247 -0.500000
+v -0.030482 0.153247 -0.468750
+v 0.030483 0.153247 -0.500000
+v 0.030483 0.153247 -0.468750
+v 0.086808 0.129917 -0.500000
+v 0.086808 0.129917 -0.468750
+v 0.129918 0.086808 -0.500000
+v 0.129918 0.086808 -0.468750
+v 0.153248 0.030483 -0.500000
+v 0.153248 0.030483 -0.468750
+v 0.153248 -0.030483 -0.500000
+v 0.153248 -0.030483 -0.468750
+v 0.129918 -0.086808 -0.500000
+v 0.129918 -0.086808 -0.468750
+v 0.086808 -0.129917 -0.500000
+v 0.086808 -0.129917 -0.468750
+v 0.030483 -0.153248 -0.500000
+v 0.030483 -0.153248 -0.468750
+v -0.030482 -0.153248 -0.500000
+v -0.030482 -0.153248 -0.468750
+v -0.086807 -0.129917 -0.500000
+v -0.086807 -0.129917 -0.468750
+v -0.129917 -0.086808 -0.500000
+v -0.129917 -0.086808 -0.468750
+v -0.153247 -0.030483 -0.500000
+v -0.153247 -0.030483 -0.468750
+v -0.153247 0.030483 -0.500000
+v -0.153247 0.030483 -0.468750
+v -0.024386 -0.122598 -0.468750
+v 0.024387 -0.122598 -0.468750
+v 0.069447 -0.103934 -0.468750
+v 0.103934 -0.069447 -0.468750
+v 0.122599 -0.024387 -0.468750
+v 0.122599 0.024386 -0.468750
+v 0.103934 0.069446 -0.468750
+v 0.069447 0.103933 -0.468750
+v 0.024387 0.122598 -0.468750
+v -0.024386 0.122598 -0.468750
+v -0.069446 0.103933 -0.468750
+v -0.103933 0.069446 -0.468750
+v 0.000000 -0.000000 -0.468750
+v 0.000001 -0.000000 -0.500000
+v 0.024386 -0.122598 -0.024391
+v 0.069446 -0.103934 -0.024391
+v 0.103934 -0.069446 -0.024391
+v 0.122598 -0.024386 -0.024391
+v 0.122598 0.024386 -0.024391
+v 0.103934 0.069446 -0.024391
+v 0.069446 0.103934 -0.024391
+v 0.024386 0.122598 -0.024391
+v -0.024386 0.122598 -0.024391
+v -0.103934 0.069446 -0.024391
+v -0.069446 0.103934 -0.024391
+v -0.103934 -0.069446 -0.024391
+v -0.122598 -0.024386 -0.024391
+v -0.122598 0.024386 -0.024391
+v -0.069446 -0.103934 -0.024391
+v -0.024386 -0.122598 -0.024391
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.250000 0.015625
+vt 0.250000 0.265625
+vt 0.093322 0.682190
+vt 0.153370 0.657318
+vt 0.185867 0.820694
+vt 0.047364 0.728149
+vt 0.022491 0.788196
+vt 0.022491 0.853192
+vt 0.047364 0.913239
+vt 0.093322 0.959198
+vt 0.153370 0.984070
+vt 0.218365 0.984070
+vt 0.278413 0.959198
+vt 0.324371 0.913239
+vt 0.349244 0.853192
+vt 0.349244 0.788196
+vt 0.324371 0.728149
+vt 0.278413 0.682190
+vt 0.218365 0.657318
+vt 0.471785 0.682190
+vt 0.531832 0.657318
+vt 0.564330 0.820694
+vt 0.425826 0.728149
+vt 0.400953 0.788196
+vt 0.400953 0.853192
+vt 0.425826 0.913239
+vt 0.471785 0.959198
+vt 0.531832 0.984070
+vt 0.596827 0.984070
+vt 0.656875 0.959198
+vt 0.702834 0.913239
+vt 0.727706 0.853192
+vt 0.727706 0.788196
+vt 0.702834 0.728149
+vt 0.656875 0.682190
+vt 0.596827 0.657318
+vt 0.125000 0.609375
+vt 0.125000 0.546875
+vt 0.187500 0.546875
+vt 0.187500 0.609375
+vt 0.250000 0.546875
+vt 0.250000 0.609375
+vt 0.062500 0.609375
+vt 0.062500 0.546875
+vt 0.000000 0.609375
+vt 0.000000 0.546875
+vt 0.937500 0.609375
+vt 0.937500 0.546875
+vt 1.000000 0.546875
+vt 1.000000 0.609375
+vt 0.875000 0.609375
+vt 0.875000 0.546875
+vt 0.812500 0.609375
+vt 0.812500 0.546875
+vt 0.750000 0.609375
+vt 0.750000 0.546875
+vt 0.687500 0.609375
+vt 0.687500 0.546875
+vt 0.625000 0.609375
+vt 0.625000 0.546875
+vt 0.562500 0.609375
+vt 0.562500 0.546875
+vt 0.500000 0.609375
+vt 0.500000 0.546875
+vt 0.437500 0.609375
+vt 0.437500 0.546875
+vt 0.375000 0.609375
+vt 0.375000 0.546875
+vt 0.312500 0.609375
+vt 0.312500 0.546875
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.812500 0.015625
+vt 0.812500 0.265625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.625000 0.015625
+vt 0.625000 0.265625
+vt 0.687500 0.265625
+vt 0.687500 0.015625
+vt 0.500000 0.265625
+vt 0.500000 0.015625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.125000 0.265625
+vt 0.125000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.218363 0.657325
+vt 0.185866 0.820702
+vt 0.153368 0.657325
+vt 0.531836 0.657325
+vt 0.564334 0.820702
+vt 0.596832 0.657325
+vt 0.656879 0.682198
+vt 0.702838 0.728156
+vt 0.727710 0.788204
+vt 0.727710 0.853199
+vt 0.702838 0.913247
+vt 0.656879 0.959205
+vt 0.596831 0.984078
+vt 0.531836 0.984078
+vt 0.471788 0.959205
+vt 0.425830 0.913247
+vt 0.400957 0.853199
+vt 0.400957 0.788204
+vt 0.425830 0.728156
+vt 0.471789 0.682198
+vt 0.093321 0.682198
+vt 0.047362 0.728156
+vt 0.022489 0.788204
+vt 0.022489 0.853199
+vt 0.047362 0.913247
+vt 0.093320 0.959205
+vt 0.153368 0.984078
+vt 0.218363 0.984078
+vt 0.278411 0.959205
+vt 0.324369 0.913247
+vt 0.349242 0.853199
+vt 0.349242 0.788204
+vt 0.324369 0.728156
+vt 0.278411 0.682198
+vt 0.187500 0.515625
+vt 0.250000 0.515625
+vt 0.875000 0.515625
+vt 0.937500 0.515625
+vt 0.750000 0.515625
+vt 0.812500 0.515625
+vt 0.562500 0.515625
+vt 0.625000 0.515625
+vt 0.687500 0.515625
+vt 0.500000 0.515625
+vt 0.437500 0.515625
+vt 0.375000 0.515625
+vt 0.312500 0.515625
+vt 0.125000 0.515625
+vt 0.062500 0.515625
+vt 0.000000 0.515625
+vt 1.000000 0.515625
+s off
+f 54/1 41/2 42/3 55/4
+f 31/5 33/6 50/7
+f 29/8 31/5 50/7
+f 27/9 29/8 50/7
+f 25/10 27/9 50/7
+f 23/11 25/10 50/7
+f 21/12 23/11 50/7
+f 19/13 21/12 50/7
+f 17/14 19/13 50/7
+f 15/15 17/14 50/7
+f 13/16 15/15 50/7
+f 11/17 13/16 50/7
+f 9/18 11/17 50/7
+f 7/19 9/18 50/7
+f 5/20 7/19 50/7
+f 35/21 5/20 50/7
+f 6/22 36/23 49/24
+f 8/25 6/22 49/24
+f 10/26 8/25 49/24
+f 12/27 10/26 49/24
+f 14/28 12/27 49/24
+f 16/29 14/28 49/24
+f 18/30 16/29 49/24
+f 20/31 18/30 49/24
+f 22/32 20/31 49/24
+f 24/33 22/32 49/24
+f 26/34 24/33 49/24
+f 28/35 26/34 49/24
+f 30/36 28/35 49/24
+f 32/37 30/36 49/24
+f 34/38 32/37 49/24
+f 36/23 34/38 49/24
+f 33/6 35/21 50/7
+f 8/39 7/40 5/41 6/42
+f 6/42 5/41 35/43 36/44
+f 10/45 9/46 7/40 8/39
+f 12/47 11/48 9/46 10/45
+f 14/49 13/50 11/51 12/52
+f 16/53 15/54 13/50 14/49
+f 18/55 17/56 15/54 16/53
+f 20/57 19/58 17/56 18/55
+f 22/59 21/60 19/58 20/57
+f 24/61 23/62 21/60 22/59
+f 26/63 25/64 23/62 24/61
+f 28/65 27/66 25/64 26/63
+f 30/67 29/68 27/66 28/65
+f 32/69 31/70 29/68 30/67
+f 34/71 33/72 31/70 32/69
+f 36/44 35/43 33/72 34/71
+f 65/73 1/74 37/75 66/76
+f 63/77 3/78 2/79 62/80
+f 61/81 47/82 48/83 60/84
+f 64/85 4/86 3/78 63/77
+f 62/80 2/79 1/74 65/73
+f 60/84 48/83 4/86 64/85
+f 59/87 46/88 47/82 61/81
+f 58/89 45/90 46/88 59/87
+f 57/91 44/92 45/90 58/89
+f 56/93 43/94 44/92 57/91
+f 55/4 42/3 43/94 56/93
+f 53/95 40/96 41/2 54/1
+f 52/97 39/98 40/96 53/95
+f 51/99 38/100 39/98 52/97
+f 66/76 37/75 38/101 51/102
+f 67/58 69/60 70/59 68/57
+f 69/60 71/62 72/61 70/59
+f 71/62 73/64 74/63 72/61
+f 73/64 75/66 76/65 74/63
+f 75/66 77/68 78/67 76/65
+f 77/68 79/70 80/69 78/67
+f 79/70 81/72 82/71 80/69
+f 81/72 83/43 84/44 82/71
+f 83/43 85/41 86/42 84/44
+f 85/41 87/40 88/39 86/42
+f 87/40 89/46 90/45 88/39
+f 89/46 91/48 92/47 90/45
+f 91/51 93/50 94/49 92/52
+f 93/50 95/54 96/53 94/49
+f 97/56 67/58 68/57 98/55
+f 95/54 97/56 98/55 96/53
+f 70/103 116/104 68/105
+f 67/106 115/107 69/108
+f 69/108 115/107 71/109
+f 71/109 115/107 73/110
+f 73/110 115/107 75/111
+f 75/111 115/107 77/112
+f 77/112 115/107 79/113
+f 79/113 115/107 81/114
+f 81/114 115/107 83/115
+f 83/115 115/107 85/116
+f 85/116 115/107 87/117
+f 87/117 115/107 89/118
+f 89/118 115/107 91/119
+f 91/119 115/107 93/120
+f 93/120 115/107 95/121
+f 95/121 115/107 97/122
+f 97/122 115/107 67/106
+f 68/105 116/104 98/123
+f 98/123 116/104 96/124
+f 96/124 116/104 94/125
+f 94/125 116/104 92/126
+f 92/126 116/104 90/127
+f 90/127 116/104 88/128
+f 88/128 116/104 86/129
+f 86/129 116/104 84/130
+f 84/130 116/104 82/131
+f 82/131 116/104 80/132
+f 80/132 116/104 78/133
+f 78/133 116/104 76/134
+f 76/134 116/104 74/135
+f 74/135 116/104 72/136
+f 72/136 116/104 70/103
+f 107/137 120/1 121/4 108/138
+f 102/139 131/73 132/76 103/140
+f 100/141 129/77 128/80 101/142
+f 113/143 127/81 126/84 114/144
+f 99/145 130/85 129/77 100/141
+f 101/142 128/80 131/73 102/139
+f 114/144 126/84 130/85 99/145
+f 112/146 125/87 127/81 113/143
+f 111/147 124/89 125/87 112/146
+f 110/148 123/91 124/89 111/147
+f 109/149 122/93 123/91 110/148
+f 108/138 121/4 122/93 109/149
+f 106/150 119/95 120/1 107/137
+f 105/151 118/97 119/95 106/150
+f 104/152 117/99 118/97 105/151
+f 103/140 132/76 117/102 104/153
+f 133/58 135/60 136/59 134/57
+f 135/60 137/62 138/61 136/59
+f 137/62 139/64 140/63 138/61
+f 139/64 141/66 142/65 140/63
+f 141/66 143/68 144/67 142/65
+f 143/68 145/70 146/69 144/67
+f 145/70 147/72 148/71 146/69
+f 147/72 149/43 150/44 148/71
+f 149/43 151/41 152/42 150/44
+f 151/41 153/40 154/39 152/42
+f 153/40 155/46 156/45 154/39
+f 155/46 157/48 158/47 156/45
+f 157/51 159/50 160/49 158/52
+f 159/50 161/54 162/53 160/49
+f 163/56 133/58 134/57 164/55
+f 161/54 163/56 164/55 162/53
+f 136/103 182/104 134/105
+f 133/106 181/107 135/108
+f 135/108 181/107 137/109
+f 137/109 181/107 139/110
+f 139/110 181/107 141/111
+f 141/111 181/107 143/112
+f 143/112 181/107 145/113
+f 145/113 181/107 147/114
+f 147/114 181/107 149/115
+f 149/115 181/107 151/116
+f 151/116 181/107 153/117
+f 153/117 181/107 155/118
+f 155/118 181/107 157/119
+f 157/119 181/107 159/120
+f 159/120 181/107 161/121
+f 161/121 181/107 163/122
+f 163/122 181/107 133/106
+f 134/105 182/104 164/123
+f 164/123 182/104 162/124
+f 162/124 182/104 160/125
+f 160/125 182/104 158/126
+f 158/126 182/104 156/127
+f 156/127 182/104 154/128
+f 154/128 182/104 152/129
+f 152/129 182/104 150/130
+f 150/130 182/104 148/131
+f 148/131 182/104 146/132
+f 146/132 182/104 144/133
+f 144/133 182/104 142/134
+f 142/134 182/104 140/135
+f 140/135 182/104 138/136
+f 138/136 182/104 136/103
+f 173/137 223/2 224/3 174/138
+f 213/5 215/6 232/7
+f 211/8 213/5 232/7
+f 209/9 211/8 232/7
+f 207/10 209/9 232/7
+f 205/11 207/10 232/7
+f 203/12 205/11 232/7
+f 201/13 203/12 232/7
+f 199/14 201/13 232/7
+f 197/15 199/14 232/7
+f 195/16 197/15 232/7
+f 193/17 195/16 232/7
+f 191/18 193/17 232/7
+f 189/19 191/18 232/7
+f 187/20 189/19 232/7
+f 217/21 187/20 232/7
+f 188/22 218/23 231/24
+f 190/25 188/22 231/24
+f 192/26 190/25 231/24
+f 194/27 192/26 231/24
+f 196/28 194/27 231/24
+f 198/29 196/28 231/24
+f 200/30 198/29 231/24
+f 202/31 200/30 231/24
+f 204/32 202/31 231/24
+f 206/33 204/32 231/24
+f 208/34 206/33 231/24
+f 210/35 208/34 231/24
+f 212/36 210/35 231/24
+f 214/37 212/36 231/24
+f 216/38 214/37 231/24
+f 218/23 216/38 231/24
+f 215/6 217/21 232/7
+f 190/39 189/40 187/41 188/42
+f 188/42 187/41 217/43 218/44
+f 192/45 191/46 189/40 190/39
+f 194/47 193/48 191/46 192/45
+f 196/49 195/50 193/51 194/52
+f 198/53 197/54 195/50 196/49
+f 200/55 199/56 197/54 198/53
+f 202/57 201/58 199/56 200/55
+f 204/59 203/60 201/58 202/57
+f 206/61 205/62 203/60 204/59
+f 208/63 207/64 205/62 206/61
+f 210/65 209/66 207/64 208/63
+f 212/67 211/68 209/66 210/65
+f 214/69 213/70 211/68 212/67
+f 216/71 215/72 213/70 214/69
+f 218/44 217/43 215/72 216/71
+f 168/139 183/74 219/75 169/140
+f 166/141 185/78 184/79 167/142
+f 179/143 229/82 230/83 180/144
+f 165/145 186/86 185/78 166/141
+f 167/142 184/79 183/74 168/139
+f 180/144 230/83 186/86 165/145
+f 178/146 228/88 229/82 179/143
+f 177/147 227/90 228/88 178/146
+f 176/148 226/92 227/90 177/147
+f 175/149 225/94 226/92 176/148
+f 174/138 224/3 225/94 175/149
+f 172/150 222/96 223/2 173/137
+f 171/151 221/98 222/96 172/150
+f 170/152 220/100 221/98 171/151
+f 169/140 219/75 220/101 170/153
+f 286/1 273/2 274/3 287/4
+f 263/5 265/6 282/7
+f 261/8 263/5 282/7
+f 259/9 261/8 282/7
+f 257/10 259/9 282/7
+f 255/11 257/10 282/7
+f 253/12 255/11 282/7
+f 251/13 253/12 282/7
+f 249/14 251/13 282/7
+f 247/15 249/14 282/7
+f 245/16 247/15 282/7
+f 243/17 245/16 282/7
+f 241/18 243/17 282/7
+f 239/19 241/18 282/7
+f 237/20 239/19 282/7
+f 267/21 237/20 282/7
+f 238/22 268/23 281/24
+f 240/25 238/22 281/24
+f 242/26 240/25 281/24
+f 244/27 242/26 281/24
+f 246/28 244/27 281/24
+f 248/29 246/28 281/24
+f 250/30 248/29 281/24
+f 252/31 250/30 281/24
+f 254/32 252/31 281/24
+f 256/33 254/32 281/24
+f 258/34 256/33 281/24
+f 260/35 258/34 281/24
+f 262/36 260/35 281/24
+f 264/37 262/36 281/24
+f 266/38 264/37 281/24
+f 268/23 266/38 281/24
+f 265/6 267/21 282/7
+f 240/39 239/40 237/41 238/42
+f 238/42 237/41 267/43 268/44
+f 242/45 241/46 239/40 240/39
+f 244/47 243/48 241/46 242/45
+f 246/49 245/50 243/51 244/52
+f 248/53 247/54 245/50 246/49
+f 250/55 249/56 247/54 248/53
+f 252/57 251/58 249/56 250/55
+f 254/59 253/60 251/58 252/57
+f 256/61 255/62 253/60 254/59
+f 258/63 257/64 255/62 256/61
+f 260/65 259/66 257/64 258/63
+f 262/67 261/68 259/66 260/65
+f 264/69 263/70 261/68 262/67
+f 266/71 265/72 263/70 264/69
+f 268/44 267/43 265/72 266/71
+f 297/73 233/74 269/75 298/76
+f 295/77 235/78 234/79 294/80
+f 293/81 279/82 280/83 292/84
+f 296/85 236/86 235/78 295/77
+f 294/80 234/79 233/74 297/73
+f 292/84 280/83 236/86 296/85
+f 291/87 278/88 279/82 293/81
+f 290/89 277/90 278/88 291/87
+f 289/91 276/92 277/90 290/89
+f 288/93 275/94 276/92 289/91
+f 287/4 274/3 275/94 288/93
+f 285/95 272/96 273/2 286/1
+f 284/97 271/98 272/96 285/95
+f 283/99 270/100 271/98 284/97
+f 298/76 269/75 270/101 283/102
diff --git a/pipeworks/models/pipeworks_pump.obj b/pipeworks/models/pipeworks_pump.obj
new file mode 100644
index 0000000..f05dd02
--- /dev/null
+++ b/pipeworks/models/pipeworks_pump.obj
@@ -0,0 +1,282 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-pump.blend'
+# www.blender.org
+mtllib pipeworks_pump.mtl
+o Cube
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.375000 0.500000
+v -0.500000 -0.375000 -0.500000
+v 0.500000 -0.375000 -0.500000
+v 0.500000 -0.375000 0.500000
+v -0.437500 -0.375000 0.437500
+v -0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 -0.437500
+v 0.437500 -0.375000 0.437500
+v -0.437500 0.375000 0.437500
+v -0.437500 0.375000 -0.437500
+v 0.437500 0.375000 -0.437500
+v 0.437500 0.375000 0.437500
+v 0.153248 0.468750 0.030483
+v 0.153248 0.500000 0.030483
+v 0.153248 0.468750 -0.030483
+v 0.153248 0.500000 -0.030483
+v 0.129917 0.468750 -0.086808
+v 0.129917 0.500000 -0.086808
+v 0.086808 0.468750 -0.129917
+v 0.086808 0.500000 -0.129917
+v 0.030483 0.468750 -0.153248
+v 0.030483 0.500000 -0.153248
+v -0.030483 0.468750 -0.153248
+v -0.030483 0.500000 -0.153248
+v -0.086808 0.468750 -0.129917
+v -0.086808 0.500000 -0.129917
+v -0.129917 0.468750 -0.086808
+v -0.129917 0.500000 -0.086808
+v -0.153247 0.468750 -0.030483
+v -0.153247 0.500000 -0.030483
+v -0.153247 0.468750 0.030483
+v -0.153247 0.500000 0.030483
+v -0.129917 0.468750 0.086808
+v -0.129917 0.500000 0.086808
+v -0.086808 0.468750 0.129917
+v -0.086808 0.500000 0.129917
+v -0.030483 0.468750 0.153248
+v -0.030483 0.500000 0.153248
+v 0.030483 0.468750 0.153248
+v 0.030483 0.500000 0.153248
+v 0.086808 0.468750 0.129917
+v 0.086808 0.500000 0.129917
+v 0.129917 0.468750 0.086808
+v 0.129918 0.500000 0.086808
+v 0.122598 0.468750 0.024386
+v 0.122598 0.468750 -0.024386
+v 0.103934 0.468750 -0.069446
+v 0.069447 0.468750 -0.103934
+v 0.024387 0.468750 -0.122598
+v -0.024386 0.468750 -0.122598
+v -0.069446 0.468750 -0.103934
+v -0.103933 0.468750 -0.069446
+v -0.122598 0.468750 -0.024386
+v -0.122598 0.468750 0.024386
+v -0.103933 0.468750 0.069446
+v -0.069446 0.468750 0.103934
+v -0.024386 0.468750 0.122598
+v 0.024387 0.468750 0.122598
+v 0.069447 0.468750 0.103934
+v 0.103934 0.468750 0.069446
+v 0.000000 0.468750 -0.000000
+v 0.000000 0.500000 0.000000
+v 0.122598 0.375003 0.024386
+v 0.122598 0.375003 -0.024386
+v 0.103934 0.375003 -0.069446
+v 0.069446 0.375003 0.103934
+v 0.103934 0.375003 0.069446
+v 0.024386 0.375003 0.122598
+v -0.024386 0.375003 0.122598
+v -0.069446 0.375003 0.103934
+v -0.103934 0.375003 0.069446
+v -0.122598 0.375003 0.024386
+v -0.122598 0.375003 -0.024386
+v -0.103934 0.375003 -0.069446
+v -0.069446 0.375003 -0.103934
+v -0.024386 0.375003 -0.122598
+v 0.069446 0.375003 -0.103934
+v 0.024386 0.375003 -0.122598
+vt 0.714844 0.761719
+vt 0.714844 0.511719
+vt 0.746094 0.511719
+vt 0.746094 0.761719
+vt 0.621094 0.761719
+vt 0.621094 0.511719
+vt 0.652344 0.511719
+vt 0.652344 0.761719
+vt 0.683594 0.761719
+vt 0.683594 0.511719
+vt 0.996094 0.511719
+vt 0.996094 0.761719
+vt 0.996094 0.261719
+vt 0.746094 0.261719
+vt 0.230469 0.261719
+vt 0.449219 0.261719
+vt 0.449219 0.433594
+vt 0.230469 0.433594
+vt 0.222656 0.613281
+vt 0.003906 0.613281
+vt 0.003906 0.441406
+vt 0.222656 0.441406
+vt 0.222656 0.433594
+vt 0.003906 0.433594
+vt 0.003906 0.261719
+vt 0.222656 0.261719
+vt 0.675781 0.433594
+vt 0.457031 0.433594
+vt 0.457031 0.261719
+vt 0.675781 0.261719
+vt 0.230469 0.660156
+vt 0.230469 0.441406
+vt 0.449219 0.441406
+vt 0.449219 0.660156
+vt 0.750000 0.996094
+vt 0.812500 0.996094
+vt 0.812500 0.945313
+vt 0.750000 0.945313
+vt 0.875000 0.996094
+vt 0.875000 0.945313
+vt 0.937500 0.996094
+vt 0.937500 0.945313
+vt 1.000000 0.996094
+vt 1.000000 0.945313
+vt 0.000000 0.996094
+vt 0.062500 0.996094
+vt 0.062500 0.945313
+vt 0.000000 0.945313
+vt 0.125000 0.996094
+vt 0.125000 0.945313
+vt 0.187500 0.996094
+vt 0.187500 0.945313
+vt 0.250000 0.996094
+vt 0.250000 0.945313
+vt 0.312500 0.996094
+vt 0.312500 0.945313
+vt 0.375000 0.996094
+vt 0.375000 0.945313
+vt 0.437500 0.996094
+vt 0.437500 0.945313
+vt 0.500000 0.996094
+vt 0.500000 0.945313
+vt 0.562500 0.996094
+vt 0.562500 0.945313
+vt 0.625000 0.996094
+vt 0.625000 0.945313
+vt 0.687500 0.996094
+vt 0.687500 0.945313
+vt 0.007550 0.738767
+vt 0.046892 0.730976
+vt 0.007550 0.723186
+vt 0.101275 0.738767
+vt 0.140617 0.730976
+vt 0.101275 0.723186
+vt 0.107265 0.708790
+vt 0.118332 0.697773
+vt 0.132792 0.691810
+vt 0.148443 0.691810
+vt 0.162903 0.697773
+vt 0.173970 0.708790
+vt 0.179959 0.723186
+vt 0.179959 0.738767
+vt 0.173970 0.753163
+vt 0.162903 0.764180
+vt 0.148443 0.770143
+vt 0.132792 0.770143
+vt 0.118332 0.764180
+vt 0.107265 0.753163
+vt 0.013540 0.708790
+vt 0.024607 0.697773
+vt 0.039067 0.691810
+vt 0.054718 0.691810
+vt 0.069178 0.697773
+vt 0.080245 0.708790
+vt 0.086234 0.723186
+vt 0.086234 0.738767
+vt 0.080245 0.753162
+vt 0.069178 0.764180
+vt 0.054718 0.770143
+vt 0.039067 0.770143
+vt 0.024607 0.764180
+vt 0.013540 0.753162
+vt 0.250000 0.777344
+vt 0.312500 0.777344
+vt 0.937500 0.777344
+vt 1.000000 0.777344
+vt 0.812500 0.777344
+vt 0.875000 0.777344
+vt 0.625000 0.777344
+vt 0.687500 0.777344
+vt 0.750000 0.777344
+vt 0.562500 0.777344
+vt 0.500000 0.777344
+vt 0.437500 0.777344
+vt 0.375000 0.777344
+vt 0.187500 0.777344
+vt 0.125000 0.777344
+vt 0.062500 0.777344
+vt 0.000000 0.777344
+usemtl None
+s off
+f 5/1 6/2 2/3 1/4
+f 6/5 7/6 3/7 2/8
+f 7/9 8/10 4/2 3/1
+f 8/10 5/9 1/8 4/7
+f 1/4 2/3 3/11 4/12
+f 8/13 7/11 6/3 5/14
+f 13/15 14/16 10/17 9/18
+f 14/19 15/20 11/21 10/22
+f 15/23 16/24 12/25 11/26
+f 16/27 13/28 9/29 12/30
+f 16/31 15/32 14/33 13/34
+f 17/35 19/36 20/37 18/38
+f 19/36 21/39 22/40 20/37
+f 21/39 23/41 24/42 22/40
+f 23/41 25/43 26/44 24/42
+f 25/45 27/46 28/47 26/48
+f 27/46 29/49 30/50 28/47
+f 29/49 31/51 32/52 30/50
+f 31/51 33/53 34/54 32/52
+f 33/53 35/55 36/56 34/54
+f 35/55 37/57 38/58 36/56
+f 37/57 39/59 40/60 38/58
+f 39/59 41/61 42/62 40/60
+f 41/61 43/63 44/64 42/62
+f 43/63 45/65 46/66 44/64
+f 47/67 17/35 18/38 48/68
+f 45/65 47/67 48/68 46/66
+f 20/69 66/70 18/71
+f 17/72 65/73 19/74
+f 19/74 65/73 21/75
+f 21/75 65/73 23/76
+f 23/76 65/73 25/77
+f 25/77 65/73 27/78
+f 27/78 65/73 29/79
+f 29/79 65/73 31/80
+f 31/80 65/73 33/81
+f 33/81 65/73 35/82
+f 35/82 65/73 37/83
+f 37/83 65/73 39/84
+f 39/84 65/73 41/85
+f 41/85 65/73 43/86
+f 43/86 65/73 45/87
+f 45/87 65/73 47/88
+f 47/88 65/73 17/72
+f 18/71 66/70 48/89
+f 48/89 66/70 46/90
+f 46/90 66/70 44/91
+f 44/91 66/70 42/92
+f 42/92 66/70 40/93
+f 40/93 66/70 38/94
+f 38/94 66/70 36/95
+f 36/95 66/70 34/96
+f 34/96 66/70 32/97
+f 32/97 66/70 30/98
+f 30/98 66/70 28/99
+f 28/99 66/70 26/100
+f 26/100 66/70 24/101
+f 24/101 66/70 22/102
+f 22/102 66/70 20/69
+f 57/54 77/103 76/104 58/56
+f 52/42 81/105 82/106 53/44
+f 50/37 68/107 69/108 51/40
+f 63/66 70/109 71/110 64/68
+f 49/38 67/111 68/107 50/37
+f 51/40 69/108 81/105 52/42
+f 64/68 71/110 67/111 49/38
+f 62/64 72/112 70/109 63/66
+f 61/62 73/113 72/112 62/64
+f 60/60 74/114 73/113 61/62
+f 59/58 75/115 74/114 60/60
+f 58/56 76/104 75/115 59/58
+f 56/52 78/116 77/103 57/54
+f 55/50 79/117 78/116 56/52
+f 54/47 80/118 79/117 55/50
+f 53/48 82/119 80/118 54/47
diff --git a/pipeworks/models/pipeworks_spigot.obj b/pipeworks/models/pipeworks_spigot.obj
new file mode 100644
index 0000000..f6e80c9
--- /dev/null
+++ b/pipeworks/models/pipeworks_spigot.obj
@@ -0,0 +1,512 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-spigot.blend'
+# www.blender.org
+mtllib pipeworks_spigot.mtl
+o pipe.000_Cylinder.001
+v -0.122598 -0.024391 -0.024386
+v -0.122598 -0.024391 0.024386
+v 0.129917 -0.250000 -0.086808
+v 0.153247 -0.250000 -0.030483
+v -0.000000 -0.250000 -0.000000
+v 0.086808 -0.250000 -0.129917
+v 0.030483 -0.250000 -0.153248
+v -0.030483 -0.250000 -0.153248
+v -0.086808 -0.250000 -0.129917
+v -0.129917 -0.250000 -0.086808
+v -0.153248 -0.250000 -0.030483
+v -0.153248 -0.250000 0.030483
+v -0.129917 -0.250000 0.086808
+v -0.086808 -0.250000 0.129917
+v -0.030483 -0.250000 0.153247
+v 0.030483 -0.250000 0.153248
+v 0.086808 -0.250000 0.129917
+v 0.129917 -0.250000 0.086808
+v 0.153247 -0.250000 0.030483
+v 0.129917 -0.187500 0.086808
+v 0.153248 -0.187500 0.030483
+v -0.000000 -0.187500 -0.000000
+v 0.086808 -0.187500 0.129917
+v 0.030483 -0.187500 0.153248
+v -0.030483 -0.187500 0.153247
+v -0.086808 -0.187500 0.129917
+v -0.129917 -0.187500 0.086808
+v -0.153248 -0.187500 0.030483
+v -0.153248 -0.187500 -0.030483
+v -0.129917 -0.187500 -0.086808
+v -0.086808 -0.187500 -0.129917
+v -0.030483 -0.187500 -0.153248
+v 0.030483 -0.187500 -0.153248
+v 0.086808 -0.187500 -0.129917
+v 0.129917 -0.187500 -0.086808
+v 0.153248 -0.187500 -0.030483
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v 0.122598 -0.024391 -0.024386
+v 0.103934 -0.024391 -0.069446
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 0.069446
+v 0.122598 -0.024391 0.024386
+v 0.024386 -0.024391 0.122598
+v -0.024386 -0.024391 0.122598
+v -0.069446 -0.024391 0.103934
+v -0.103934 -0.024391 0.069446
+v -0.103934 -0.024391 -0.069446
+v -0.069446 -0.024391 -0.103934
+v -0.024386 -0.024391 -0.122598
+v -0.103934 0.041589 -0.041924
+v 0.103934 0.041589 -0.041925
+v 0.122598 0.009727 -0.010062
+v 0.024386 0.079173 -0.079509
+v 0.069446 0.065976 -0.066311
+v 0.069446 0.094826 -0.024663
+v -0.103934 0.062964 -0.011464
+v -0.069446 0.094827 -0.024662
+v -0.024386 0.112070 -0.031805
+v 0.024386 0.112070 -0.031805
+v 0.122598 0.021334 0.005779
+v 0.103934 0.062964 -0.011464
+v -0.122598 0.021334 0.005780
+v -0.024386 0.079173 -0.079509
+v -0.069446 0.065976 -0.066311
+v -0.122599 -0.024387 0.468750
+v -0.122599 0.024386 0.468750
+v -0.122598 0.024386 0.024391
+v 0.129917 -0.086808 0.500000
+v 0.153247 -0.030483 0.500000
+v -0.000001 0.000000 0.500000
+v 0.086807 -0.129917 0.500000
+v 0.030482 -0.153248 0.500000
+v -0.030483 -0.153248 0.500000
+v -0.086808 -0.129917 0.500000
+v -0.129918 -0.086808 0.500000
+v -0.153248 -0.030483 0.500000
+v -0.153248 0.030483 0.500000
+v -0.129918 0.086808 0.500000
+v -0.086808 0.129917 0.500000
+v -0.030483 0.153247 0.500000
+v 0.030482 0.153247 0.500000
+v 0.086807 0.129917 0.500000
+v 0.129917 0.086808 0.500000
+v 0.153247 0.030483 0.500000
+v 0.129917 0.086808 0.468750
+v 0.153247 0.030483 0.468750
+v 0.000000 0.000000 0.468750
+v 0.086807 0.129917 0.468750
+v 0.030482 0.153247 0.468750
+v -0.030483 0.153247 0.468750
+v -0.086808 0.129917 0.468750
+v -0.129918 0.086808 0.468750
+v -0.153248 0.030483 0.468750
+v -0.153248 -0.030483 0.468750
+v -0.129918 -0.086808 0.468750
+v -0.086808 -0.129917 0.468750
+v -0.030483 -0.153248 0.468750
+v 0.030482 -0.153248 0.468750
+v 0.086807 -0.129917 0.468750
+v 0.129917 -0.086808 0.468750
+v 0.153247 -0.030483 0.468750
+v 0.069446 -0.103934 0.024391
+v 0.069446 -0.103934 0.468750
+v 0.024386 -0.122598 0.468750
+v 0.024386 -0.122598 0.024391
+v 0.122598 -0.024387 0.468750
+v 0.103933 -0.069447 0.468750
+v 0.103934 -0.069446 0.024391
+v 0.069446 0.103933 0.468750
+v 0.103933 0.069446 0.468750
+v 0.103934 0.069446 0.024391
+v 0.122598 0.024386 0.024391
+v 0.122598 0.024386 0.468750
+v 0.024386 0.122598 0.024391
+v 0.024386 0.122598 0.468750
+v -0.024386 0.122598 0.024391
+v -0.024387 0.122598 0.468750
+v -0.069446 0.103934 0.024391
+v -0.069447 0.103933 0.468750
+v -0.103934 0.069446 0.024391
+v -0.103934 0.069446 0.468750
+v -0.103934 -0.069446 0.024391
+v -0.103934 -0.069447 0.468750
+v -0.069446 -0.103934 0.024391
+v -0.069447 -0.103934 0.468750
+v -0.024386 -0.122598 0.024391
+v -0.024387 -0.122598 0.468750
+v 0.069446 0.103934 0.024390
+v -0.122598 -0.005780 -0.020763
+v -0.024386 0.031804 -0.111499
+v -0.069446 0.024662 -0.094256
+v -0.103934 0.011464 -0.062393
+v 0.103934 0.011464 -0.062393
+v 0.122598 -0.005780 -0.020763
+v 0.024386 0.031804 -0.111499
+v 0.069446 0.024662 -0.094256
+v -0.122598 0.009727 -0.010062
+v -0.122598 -0.246570 0.024386
+v -0.103934 -0.246570 0.069446
+v -0.069447 -0.246570 0.103934
+v -0.122598 -0.246570 -0.024386
+v 0.069446 -0.246571 0.103933
+v 0.122598 -0.246571 0.024386
+v 0.103934 -0.246571 0.069446
+v 0.103933 -0.246571 -0.069446
+v -0.024386 -0.246570 0.122598
+v 0.122598 -0.246571 -0.024386
+v -0.024386 -0.246571 -0.122598
+v 0.024386 -0.246571 -0.122598
+v 0.069446 -0.246571 -0.103934
+v -0.103934 -0.246570 -0.069446
+v -0.069446 -0.246570 -0.103934
+v 0.024386 -0.246570 0.122598
+vt 0.139725 0.682190
+vt 0.199773 0.657318
+vt 0.232270 0.820694
+vt 0.093767 0.728149
+vt 0.068894 0.788196
+vt 0.068894 0.853192
+vt 0.093767 0.913239
+vt 0.139725 0.959198
+vt 0.199773 0.984070
+vt 0.264768 0.984070
+vt 0.324816 0.959198
+vt 0.370774 0.913239
+vt 0.395647 0.853192
+vt 0.395647 0.788196
+vt 0.370774 0.728149
+vt 0.324816 0.682190
+vt 0.264768 0.657318
+vt 0.487410 0.682190
+vt 0.547457 0.657318
+vt 0.579955 0.820694
+vt 0.441451 0.728149
+vt 0.416578 0.788196
+vt 0.416578 0.853192
+vt 0.441451 0.913239
+vt 0.487410 0.959198
+vt 0.547457 0.984070
+vt 0.612452 0.984070
+vt 0.672500 0.959198
+vt 0.718459 0.913239
+vt 0.743331 0.853192
+vt 0.743331 0.788196
+vt 0.718459 0.728149
+vt 0.672500 0.682190
+vt 0.612452 0.657318
+vt 0.125000 0.640625
+vt 0.125000 0.578125
+vt 0.187500 0.578125
+vt 0.187500 0.640625
+vt 0.250000 0.578125
+vt 0.250000 0.640625
+vt 0.062500 0.640625
+vt 0.062500 0.578125
+vt 0.000000 0.640625
+vt 0.000000 0.578125
+vt 0.937500 0.640625
+vt 0.937500 0.578125
+vt 1.000000 0.578125
+vt 1.000000 0.640625
+vt 0.875000 0.640625
+vt 0.875000 0.578125
+vt 0.812500 0.640625
+vt 0.812500 0.578125
+vt 0.750000 0.640625
+vt 0.750000 0.578125
+vt 0.687500 0.640625
+vt 0.687500 0.578125
+vt 0.625000 0.640625
+vt 0.625000 0.578125
+vt 0.562500 0.640625
+vt 0.562500 0.578125
+vt 0.500000 0.640625
+vt 0.500000 0.578125
+vt 0.437500 0.640625
+vt 0.437500 0.578125
+vt 0.375000 0.640625
+vt 0.375000 0.578125
+vt 0.312500 0.640625
+vt 0.312500 0.578125
+vt 0.187500 0.453125
+vt 0.125000 0.453125
+vt 0.139892 0.682190
+vt 0.199940 0.657318
+vt 0.232437 0.820694
+vt 0.093934 0.728149
+vt 0.069061 0.788196
+vt 0.069061 0.853192
+vt 0.093934 0.913239
+vt 0.139892 0.959198
+vt 0.199940 0.984070
+vt 0.264935 0.984070
+vt 0.324983 0.959198
+vt 0.370941 0.913239
+vt 0.395814 0.853192
+vt 0.395814 0.788196
+vt 0.370941 0.728149
+vt 0.324983 0.682190
+vt 0.264935 0.657318
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.812500 0.265625
+vt 0.812500 0.015625
+vt 0.625000 0.265625
+vt 0.625000 0.015625
+vt 0.687500 0.015625
+vt 0.687500 0.265625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.500000 0.015625
+vt 0.500000 0.265625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.250000 0.265625
+vt 0.250000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.125000 0.015625
+vt 0.125000 0.265625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.000000 0.999989
+vt 0.000000 0.890943
+vt 0.041611 0.899043
+vt 0.941956 0.794823
+vt 0.941956 0.841698
+vt 0.895081 0.841698
+vt 0.895081 0.794823
+vt 0.848206 0.841698
+vt 0.848206 0.794823
+vt 0.801331 0.794823
+vt 0.801331 0.841698
+vt 0.754456 0.841698
+vt 0.754456 0.794823
+vt 0.988831 0.794823
+vt 0.988831 0.841698
+vt 0.941956 0.701073
+vt 0.941956 0.747948
+vt 0.895081 0.747948
+vt 0.895081 0.701073
+vt 0.041611 0.741571
+vt 0.000000 0.749671
+vt 0.076282 0.717645
+vt 0.102233 0.682226
+vt 0.109057 0.640614
+vt 0.754456 0.747948
+vt 0.801331 0.747948
+vt 0.848206 0.747948
+vt 0.848206 0.701073
+vt 0.941956 0.888573
+vt 0.988831 0.888573
+vt 0.895081 0.888573
+vt 0.848206 0.888573
+vt 0.076282 0.922969
+vt 0.102233 0.958388
+vt 0.109057 1.000000
+vt 0.801331 0.888573
+vt 0.754456 0.888573
+vt 0.801331 0.935448
+vt 0.754456 0.935448
+vt 0.754456 0.982323
+vt 0.801331 0.982323
+vt 0.848206 0.935448
+vt 0.848206 0.982323
+vt 0.895081 0.935448
+vt 0.895081 0.982323
+vt 0.941956 0.935448
+vt 0.941956 0.982323
+vt 0.988831 0.982323
+vt 0.988831 0.935448
+vt 0.801331 0.701073
+vt 0.754456 0.701073
+vt 0.250000 0.453125
+vt 0.875000 0.453125
+vt 0.937500 0.453125
+vt 0.750000 0.453125
+vt 0.812500 0.453125
+vt 0.562500 0.453125
+vt 0.625000 0.453125
+vt 0.687500 0.453125
+vt 0.500000 0.453125
+vt 0.437500 0.453125
+vt 0.375000 0.453125
+vt 0.312500 0.453125
+vt 0.062500 0.453125
+vt 0.000000 0.453125
+vt 1.000000 0.453125
+g pipe.000_Cylinder.001_metal
+usemtl metal
+s off
+f 3/1 4/2 5/3
+f 6/4 3/1 5/3
+f 7/5 6/4 5/3
+f 8/6 7/5 5/3
+f 9/7 8/6 5/3
+f 10/8 9/7 5/3
+f 11/9 10/8 5/3
+f 12/10 11/9 5/3
+f 13/11 12/10 5/3
+f 14/12 13/11 5/3
+f 15/13 14/12 5/3
+f 16/14 15/13 5/3
+f 17/15 16/14 5/3
+f 18/16 17/15 5/3
+f 19/17 18/16 5/3
+f 20/18 21/19 22/20
+f 23/21 20/18 22/20
+f 24/22 23/21 22/20
+f 25/23 24/22 22/20
+f 26/24 25/23 22/20
+f 27/25 26/24 22/20
+f 28/26 27/25 22/20
+f 29/27 28/26 22/20
+f 30/28 29/27 22/20
+f 31/29 30/28 22/20
+f 32/30 31/29 22/20
+f 33/31 32/30 22/20
+f 34/32 33/31 22/20
+f 35/33 34/32 22/20
+f 36/34 35/33 22/20
+f 21/19 36/34 22/20
+f 4/2 19/17 5/3
+f 23/35 17/36 18/37 20/38
+f 20/38 18/37 19/39 21/40
+f 24/41 16/42 17/36 23/35
+f 25/43 15/44 16/42 24/41
+f 26/45 14/46 15/47 25/48
+f 27/49 13/50 14/46 26/45
+f 28/51 12/52 13/50 27/49
+f 29/53 11/54 12/52 28/51
+f 30/55 10/56 11/54 29/53
+f 31/57 9/58 10/56 30/55
+f 32/59 8/60 9/58 31/57
+f 33/61 7/62 8/60 32/59
+f 34/63 6/64 7/62 33/61
+f 35/65 3/66 6/64 34/63
+f 36/67 4/68 3/66 35/65
+f 21/40 19/39 4/68 36/67
+f 142/69 1/37 48/36 152/70
+f 69/71 70/72 71/73
+f 72/74 69/71 71/73
+f 73/75 72/74 71/73
+f 74/76 73/75 71/73
+f 75/77 74/76 71/73
+f 76/78 75/77 71/73
+f 77/79 76/78 71/73
+f 78/80 77/79 71/73
+f 79/81 78/80 71/73
+f 80/82 79/81 71/73
+f 81/83 80/82 71/73
+f 82/84 81/83 71/73
+f 83/85 82/84 71/73
+f 84/86 83/85 71/73
+f 85/87 84/86 71/73
+f 86/18 87/19 88/20
+f 89/21 86/18 88/20
+f 90/22 89/21 88/20
+f 91/23 90/22 88/20
+f 92/24 91/23 88/20
+f 93/25 92/24 88/20
+f 94/26 93/25 88/20
+f 95/27 94/26 88/20
+f 96/28 95/27 88/20
+f 97/29 96/28 88/20
+f 98/30 97/29 88/20
+f 99/31 98/30 88/20
+f 100/32 99/31 88/20
+f 101/33 100/32 88/20
+f 102/34 101/33 88/20
+f 87/19 102/34 88/20
+f 70/72 85/87 71/73
+f 89/35 83/36 84/37 86/38
+f 86/38 84/37 85/39 87/40
+f 90/41 82/42 83/36 89/35
+f 91/43 81/44 82/42 90/41
+f 92/45 80/46 81/47 91/48
+f 93/49 79/50 80/46 92/45
+f 94/51 78/52 79/50 93/49
+f 95/53 77/54 78/52 94/51
+f 96/55 76/56 77/54 95/53
+f 97/57 75/58 76/56 96/55
+f 98/59 74/60 75/58 97/57
+f 99/61 73/62 74/60 98/59
+f 100/63 72/64 73/62 99/61
+f 101/65 69/66 72/64 100/63
+f 102/67 70/68 69/66 101/65
+f 87/40 85/39 70/68 102/67
+f 103/88 104/89 105/90 106/91
+f 109/92 108/93 104/89 103/88
+f 112/94 111/95 114/96 113/97
+f 117/98 118/99 116/100 115/101
+f 119/102 120/103 118/99 117/98
+f 121/104 122/105 120/103 119/102
+f 68/106 67/107 122/105 121/104
+f 125/108 126/109 124/110 123/111
+f 127/112 128/113 126/109 125/108
+f 106/91 105/90 128/114 127/115
+f 2/116 66/117 67/107 68/106
+f 43/118 107/119 108/93 109/92
+f 129/120 110/121 111/95 112/94
+f 113/97 114/96 107/119 43/118
+f 115/101 116/100 110/121 129/120
+f 123/111 124/110 66/117 2/116
+f 43/122 39/123 135/124
+f 50/125 131/126 136/127 38/128
+f 38/128 136/127 137/129 37/130
+f 40/131 37/130 137/129 134/132
+f 40/131 134/132 135/133 39/134
+f 50/125 49/135 132/136 131/126
+f 49/137 48/138 133/139 132/140
+f 48/138 1/125 130/128 133/139
+f 2/43 130/141 1/142
+f 2/43 138/143 130/141
+f 2/43 63/144 138/143
+f 63/144 2/43 68/145
+f 121/146 57/147 63/131 68/134
+f 57/147 51/148 138/130 63/131
+f 133/139 130/128 138/130 51/148
+f 65/149 132/140 133/139 51/148
+f 64/150 131/126 132/136 65/151
+f 64/150 54/152 136/127 131/126
+f 54/152 55/153 137/129 136/127
+f 43/122 135/124 53/154
+f 43/122 53/154 61/155
+f 61/155 113/156 43/122
+f 134/132 52/157 53/158 135/133
+f 62/159 61/160 53/158 52/157
+f 52/157 134/132 137/129 55/153
+f 113/161 61/160 62/159 112/162
+f 62/159 52/157 55/153 56/163
+f 62/159 56/163 129/164 112/162
+f 60/165 56/163 55/153 54/152
+f 60/165 115/166 129/164 56/163
+f 64/150 59/167 60/165 54/152
+f 117/168 115/166 60/165 59/167
+f 119/169 117/168 59/167 58/170
+f 59/167 64/150 65/151 58/170
+f 58/171 65/149 51/148 57/147
+f 121/146 119/172 58/171 57/147
+f 1/37 142/69 139/173 2/39
+f 37/50 151/174 150/175 38/46
+f 39/54 148/176 146/177 40/52
+f 41/60 143/178 145/179 42/58
+f 43/56 144/180 148/176 39/54
+f 40/52 146/177 151/174 37/50
+f 42/58 145/179 144/180 43/56
+f 44/62 154/181 143/178 41/60
+f 45/64 147/182 154/181 44/62
+f 46/66 141/183 147/182 45/64
+f 47/68 140/184 141/183 46/66
+f 2/39 139/173 140/184 47/68
+f 49/42 153/185 152/70 48/36
+f 50/44 149/186 153/185 49/42
+f 38/46 150/175 149/187 50/47
diff --git a/pipeworks/models/pipeworks_spigot_pouring.obj b/pipeworks/models/pipeworks_spigot_pouring.obj
new file mode 100644
index 0000000..50f653c
--- /dev/null
+++ b/pipeworks/models/pipeworks_spigot_pouring.obj
@@ -0,0 +1,634 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-spigot-pouring.blend'
+# www.blender.org
+mtllib pipeworks_spigot_pouring.mtl
+o pipe.001_Cylinder.000
+v -0.094401 -0.559070 0.018777
+v -0.080029 -0.559070 0.053473
+v -0.053474 -0.559070 0.080029
+v -0.094401 -0.559070 -0.018778
+v 0.053473 -0.559070 0.080029
+v 0.094400 -0.559070 0.018777
+v 0.080029 -0.559070 0.053473
+v 0.080029 -0.559071 -0.053474
+v -0.018777 -0.559070 0.094400
+v 0.094400 -0.559071 -0.018777
+v -0.018777 -0.559071 -0.094401
+v 0.018777 -0.559071 -0.094401
+v 0.053473 -0.559071 -0.080029
+v -0.080029 -0.559070 -0.053474
+v -0.053474 -0.559070 -0.080029
+v 0.018777 -0.559070 0.094400
+v -0.000000 -0.559070 -0.000000
+v -0.094401 -0.243141 0.018777
+v -0.080029 -0.243141 0.053473
+v -0.053474 -0.243141 0.080029
+v -0.094401 -0.243141 -0.018778
+v 0.053473 -0.243141 0.080029
+v 0.094400 -0.243141 0.018777
+v 0.080029 -0.243141 0.053473
+v 0.080029 -0.243141 -0.053474
+v -0.018777 -0.243141 0.094400
+v 0.094400 -0.243141 -0.018777
+v -0.018777 -0.243141 -0.094401
+v 0.018777 -0.243141 -0.094401
+v 0.053473 -0.243141 -0.080029
+v -0.080029 -0.243141 -0.053474
+v -0.053474 -0.243141 -0.080029
+v 0.018777 -0.243141 0.094400
+vt 0.499995 0.000000
+vt 0.374998 0.000000
+vt 0.375003 1.000000
+vt 0.500001 1.000000
+vt 0.249999 0.000000
+vt 0.250003 1.000000
+vt 0.124999 0.000000
+vt 0.125002 1.000000
+vt 0.874999 0.000000
+vt 0.750001 0.000000
+vt 0.750000 1.000000
+vt 0.874999 1.000000
+vt 0.625002 0.000000
+vt 0.624999 1.000000
+vt 0.500003 0.000000
+vt 0.499998 1.000000
+vt 0.375006 0.000000
+vt 0.375000 1.000000
+vt 0.250008 0.000000
+vt 0.250001 1.000000
+vt 0.125008 0.000000
+vt 0.000010 0.000000
+vt 0.000000 1.000000
+vt 0.125000 1.000000
+vt 0.749993 0.000000
+vt 0.624993 0.000000
+vt 0.625001 1.000000
+vt 0.750002 1.000000
+vt 0.999987 0.000000
+vt 0.874991 0.000000
+vt 0.875002 1.000000
+vt 1.000000 1.000000
+vt 0.999997 0.000000
+vt 0.999998 1.000000
+vt 0.000003 1.000000
+vt 0.000002 0.000000
+vt 0.000000 0.400543
+vt 0.076119 0.216772
+vt 0.500000 0.500000
+vt 0.216773 0.076119
+vt 0.400545 0.000000
+vt 0.599455 0.000000
+vt 0.783226 0.076119
+vt 0.923879 0.216773
+vt 1.000000 0.400544
+vt 1.000000 0.599455
+vt 0.923881 0.783226
+vt 0.783227 0.923879
+vt 0.599455 1.000000
+vt 0.400545 1.000000
+vt 0.216772 0.923879
+vt 0.076119 0.783227
+vt 0.000000 0.599455
+g pipe.001_Cylinder.000_water
+usemtl water
+s off
+f 12/1 11/2 28/3 29/4
+f 11/2 15/5 32/6 28/3
+f 15/5 14/7 31/8 32/6
+f 1/9 2/10 19/11 18/12
+f 2/10 3/13 20/14 19/11
+f 3/13 9/15 26/16 20/14
+f 9/15 16/17 33/18 26/16
+f 16/17 5/19 22/20 33/18
+f 7/21 6/22 23/23 24/24
+f 8/25 13/26 30/27 25/28
+f 6/29 10/30 27/31 23/32
+f 5/19 7/21 24/24 22/20
+f 10/30 8/25 25/28 27/31
+f 13/26 12/1 29/4 30/27
+f 4/33 1/9 18/12 21/34
+f 21/35 31/8 14/7 4/36
+f 4/37 14/38 17/39
+f 14/38 15/40 17/39
+f 15/40 11/41 17/39
+f 11/41 12/42 17/39
+f 12/42 13/43 17/39
+f 13/43 8/44 17/39
+f 8/44 10/45 17/39
+f 10/45 6/46 17/39
+f 6/46 7/47 17/39
+f 7/47 5/48 17/39
+f 5/48 16/49 17/39
+f 16/49 9/50 17/39
+f 9/50 3/51 17/39
+f 3/51 2/52 17/39
+f 2/52 1/53 17/39
+f 1/53 4/37 17/39
+o pipe.000_Cylinder.001
+v -0.122598 -0.024391 -0.024386
+v -0.122598 -0.024391 0.024386
+v 0.129917 -0.250000 -0.086808
+v 0.153247 -0.250000 -0.030483
+v -0.000000 -0.250000 -0.000000
+v 0.086808 -0.250000 -0.129917
+v 0.030483 -0.250000 -0.153248
+v -0.030483 -0.250000 -0.153248
+v -0.086808 -0.250000 -0.129917
+v -0.129917 -0.250000 -0.086808
+v -0.153248 -0.250000 -0.030483
+v -0.153248 -0.250000 0.030483
+v -0.129917 -0.250000 0.086808
+v -0.086808 -0.250000 0.129917
+v -0.030483 -0.250000 0.153247
+v 0.030483 -0.250000 0.153248
+v 0.086808 -0.250000 0.129917
+v 0.129917 -0.250000 0.086808
+v 0.153247 -0.250000 0.030483
+v 0.129917 -0.187500 0.086808
+v 0.153248 -0.187500 0.030483
+v -0.000000 -0.187500 -0.000000
+v 0.086808 -0.187500 0.129917
+v 0.030483 -0.187500 0.153248
+v -0.030483 -0.187500 0.153247
+v -0.086808 -0.187500 0.129917
+v -0.129917 -0.187500 0.086808
+v -0.153248 -0.187500 0.030483
+v -0.153248 -0.187500 -0.030483
+v -0.129917 -0.187500 -0.086808
+v -0.086808 -0.187500 -0.129917
+v -0.030483 -0.187500 -0.153248
+v 0.030483 -0.187500 -0.153248
+v 0.086808 -0.187500 -0.129917
+v 0.129917 -0.187500 -0.086808
+v 0.153248 -0.187500 -0.030483
+v 0.069446 -0.024391 -0.103934
+v 0.024386 -0.024391 -0.122598
+v 0.122598 -0.024391 -0.024386
+v 0.103934 -0.024391 -0.069446
+v 0.069446 -0.024391 0.103934
+v 0.103934 -0.024391 0.069446
+v 0.122598 -0.024391 0.024386
+v 0.024386 -0.024391 0.122598
+v -0.024386 -0.024391 0.122598
+v -0.069446 -0.024391 0.103934
+v -0.103934 -0.024391 0.069446
+v -0.103934 -0.024391 -0.069446
+v -0.069446 -0.024391 -0.103934
+v -0.024386 -0.024391 -0.122598
+v -0.103934 0.041589 -0.041924
+v 0.103934 0.041589 -0.041925
+v 0.122598 0.009727 -0.010062
+v 0.024386 0.079173 -0.079509
+v 0.069446 0.065976 -0.066311
+v 0.069446 0.094826 -0.024663
+v -0.103934 0.062964 -0.011464
+v -0.069446 0.094827 -0.024662
+v -0.024386 0.112070 -0.031805
+v 0.024386 0.112070 -0.031805
+v 0.122598 0.021334 0.005779
+v 0.103934 0.062964 -0.011464
+v -0.122598 0.021334 0.005780
+v -0.024386 0.079173 -0.079509
+v -0.069446 0.065976 -0.066311
+v -0.122599 -0.024387 0.468750
+v -0.122599 0.024386 0.468750
+v -0.122598 0.024386 0.024391
+v 0.129917 -0.086808 0.500000
+v 0.153247 -0.030483 0.500000
+v -0.000001 0.000000 0.500000
+v 0.086807 -0.129917 0.500000
+v 0.030482 -0.153248 0.500000
+v -0.030483 -0.153248 0.500000
+v -0.086808 -0.129917 0.500000
+v -0.129918 -0.086808 0.500000
+v -0.153248 -0.030483 0.500000
+v -0.153248 0.030483 0.500000
+v -0.129918 0.086808 0.500000
+v -0.086808 0.129917 0.500000
+v -0.030483 0.153247 0.500000
+v 0.030482 0.153247 0.500000
+v 0.086807 0.129917 0.500000
+v 0.129917 0.086808 0.500000
+v 0.153247 0.030483 0.500000
+v 0.129917 0.086808 0.468750
+v 0.153247 0.030483 0.468750
+v 0.000000 0.000000 0.468750
+v 0.086807 0.129917 0.468750
+v 0.030482 0.153247 0.468750
+v -0.030483 0.153247 0.468750
+v -0.086808 0.129917 0.468750
+v -0.129918 0.086808 0.468750
+v -0.153248 0.030483 0.468750
+v -0.153248 -0.030483 0.468750
+v -0.129918 -0.086808 0.468750
+v -0.086808 -0.129917 0.468750
+v -0.030483 -0.153248 0.468750
+v 0.030482 -0.153248 0.468750
+v 0.086807 -0.129917 0.468750
+v 0.129917 -0.086808 0.468750
+v 0.153247 -0.030483 0.468750
+v 0.069446 -0.103934 0.024391
+v 0.069446 -0.103934 0.468750
+v 0.024386 -0.122598 0.468750
+v 0.024386 -0.122598 0.024391
+v 0.122598 -0.024387 0.468750
+v 0.103933 -0.069447 0.468750
+v 0.103934 -0.069446 0.024391
+v 0.069446 0.103933 0.468750
+v 0.103933 0.069446 0.468750
+v 0.103934 0.069446 0.024391
+v 0.122598 0.024386 0.024391
+v 0.122598 0.024386 0.468750
+v 0.024386 0.122598 0.024391
+v 0.024386 0.122598 0.468750
+v -0.024386 0.122598 0.024391
+v -0.024387 0.122598 0.468750
+v -0.069446 0.103934 0.024391
+v -0.069447 0.103933 0.468750
+v -0.103934 0.069446 0.024391
+v -0.103934 0.069446 0.468750
+v -0.103934 -0.069446 0.024391
+v -0.103934 -0.069447 0.468750
+v -0.069446 -0.103934 0.024391
+v -0.069447 -0.103934 0.468750
+v -0.024386 -0.122598 0.024391
+v -0.024387 -0.122598 0.468750
+v 0.069446 0.103934 0.024390
+v -0.122598 -0.005780 -0.020763
+v -0.024386 0.031804 -0.111499
+v -0.069446 0.024662 -0.094256
+v -0.103934 0.011464 -0.062393
+v 0.103934 0.011464 -0.062393
+v 0.122598 -0.005780 -0.020763
+v 0.024386 0.031804 -0.111499
+v 0.069446 0.024662 -0.094256
+v -0.122598 0.009727 -0.010062
+v -0.122598 -0.246570 0.024386
+v -0.103934 -0.246570 0.069446
+v -0.069447 -0.246570 0.103934
+v -0.122598 -0.246570 -0.024386
+v 0.069446 -0.246571 0.103933
+v 0.122598 -0.246571 0.024386
+v 0.103934 -0.246571 0.069446
+v 0.103933 -0.246571 -0.069446
+v -0.024386 -0.246570 0.122598
+v 0.122598 -0.246571 -0.024386
+v -0.024386 -0.246571 -0.122598
+v 0.024386 -0.246571 -0.122598
+v 0.069446 -0.246571 -0.103934
+v -0.103934 -0.246570 -0.069446
+v -0.069446 -0.246570 -0.103934
+v 0.024386 -0.246570 0.122598
+vt 0.139725 0.682190
+vt 0.199773 0.657318
+vt 0.232270 0.820694
+vt 0.093767 0.728149
+vt 0.068894 0.788196
+vt 0.068894 0.853192
+vt 0.093767 0.913239
+vt 0.139725 0.959198
+vt 0.199773 0.984070
+vt 0.264768 0.984070
+vt 0.324816 0.959198
+vt 0.370774 0.913239
+vt 0.395647 0.853192
+vt 0.395647 0.788196
+vt 0.370774 0.728149
+vt 0.324816 0.682190
+vt 0.264768 0.657318
+vt 0.487410 0.682190
+vt 0.547457 0.657318
+vt 0.579955 0.820694
+vt 0.441451 0.728149
+vt 0.416578 0.788196
+vt 0.416578 0.853192
+vt 0.441451 0.913239
+vt 0.487410 0.959198
+vt 0.547457 0.984070
+vt 0.612452 0.984070
+vt 0.672500 0.959198
+vt 0.718459 0.913239
+vt 0.743331 0.853192
+vt 0.743331 0.788196
+vt 0.718459 0.728149
+vt 0.672500 0.682190
+vt 0.612452 0.657318
+vt 0.125000 0.640625
+vt 0.125000 0.578125
+vt 0.187500 0.578125
+vt 0.187500 0.640625
+vt 0.250000 0.578125
+vt 0.250000 0.640625
+vt 0.062500 0.640625
+vt 0.062500 0.578125
+vt 0.000000 0.640625
+vt 0.000000 0.578125
+vt 0.937500 0.640625
+vt 0.937500 0.578125
+vt 1.000000 0.578125
+vt 1.000000 0.640625
+vt 0.875000 0.640625
+vt 0.875000 0.578125
+vt 0.812500 0.640625
+vt 0.812500 0.578125
+vt 0.750000 0.640625
+vt 0.750000 0.578125
+vt 0.687500 0.640625
+vt 0.687500 0.578125
+vt 0.625000 0.640625
+vt 0.625000 0.578125
+vt 0.562500 0.640625
+vt 0.562500 0.578125
+vt 0.500000 0.640625
+vt 0.500000 0.578125
+vt 0.437500 0.640625
+vt 0.437500 0.578125
+vt 0.375000 0.640625
+vt 0.375000 0.578125
+vt 0.312500 0.640625
+vt 0.312500 0.578125
+vt 0.187500 0.453125
+vt 0.125000 0.453125
+vt 0.139892 0.682190
+vt 0.199940 0.657318
+vt 0.232437 0.820694
+vt 0.093934 0.728149
+vt 0.069061 0.788196
+vt 0.069061 0.853192
+vt 0.093934 0.913239
+vt 0.139892 0.959198
+vt 0.199940 0.984070
+vt 0.264935 0.984070
+vt 0.324983 0.959198
+vt 0.370941 0.913239
+vt 0.395814 0.853192
+vt 0.395814 0.788196
+vt 0.370941 0.728149
+vt 0.324983 0.682190
+vt 0.264935 0.657318
+vt 0.875000 0.265625
+vt 0.875000 0.015625
+vt 0.937500 0.015625
+vt 0.937500 0.265625
+vt 0.812500 0.265625
+vt 0.812500 0.015625
+vt 0.625000 0.265625
+vt 0.625000 0.015625
+vt 0.687500 0.015625
+vt 0.687500 0.265625
+vt 0.437500 0.265625
+vt 0.437500 0.015625
+vt 0.500000 0.015625
+vt 0.500000 0.265625
+vt 0.375000 0.265625
+vt 0.375000 0.015625
+vt 0.312500 0.265625
+vt 0.312500 0.015625
+vt 0.250000 0.265625
+vt 0.250000 0.015625
+vt 0.062500 0.265625
+vt 0.062500 0.015625
+vt 0.125000 0.015625
+vt 0.125000 0.265625
+vt 0.000000 0.265625
+vt 0.000000 0.015625
+vt 1.000000 0.015625
+vt 1.000000 0.265625
+vt 0.187500 0.265625
+vt 0.187500 0.015625
+vt 0.750000 0.265625
+vt 0.750000 0.015625
+vt 0.562500 0.265625
+vt 0.562500 0.015625
+vt 0.000000 0.999989
+vt 0.000000 0.890943
+vt 0.041611 0.899043
+vt 0.941956 0.794823
+vt 0.941956 0.841698
+vt 0.895081 0.841698
+vt 0.895081 0.794823
+vt 0.848206 0.841698
+vt 0.848206 0.794823
+vt 0.801331 0.794823
+vt 0.801331 0.841698
+vt 0.754456 0.841698
+vt 0.754456 0.794823
+vt 0.988831 0.794823
+vt 0.988831 0.841698
+vt 0.941956 0.701073
+vt 0.941956 0.747948
+vt 0.895081 0.747948
+vt 0.895081 0.701073
+vt 0.041611 0.741571
+vt 0.000000 0.749671
+vt 0.076282 0.717645
+vt 0.102233 0.682226
+vt 0.109057 0.640614
+vt 0.754456 0.747948
+vt 0.801331 0.747948
+vt 0.848206 0.747948
+vt 0.848206 0.701073
+vt 0.941956 0.888573
+vt 0.988831 0.888573
+vt 0.895081 0.888573
+vt 0.848206 0.888573
+vt 0.076282 0.922969
+vt 0.102233 0.958388
+vt 0.109057 1.000000
+vt 0.801331 0.888573
+vt 0.754456 0.888573
+vt 0.801331 0.935448
+vt 0.754456 0.935448
+vt 0.754456 0.982323
+vt 0.801331 0.982323
+vt 0.848206 0.935448
+vt 0.848206 0.982323
+vt 0.895081 0.935448
+vt 0.895081 0.982323
+vt 0.941956 0.935448
+vt 0.941956 0.982323
+vt 0.988831 0.982323
+vt 0.988831 0.935448
+vt 0.801331 0.701073
+vt 0.754456 0.701073
+vt 0.250000 0.453125
+vt 0.875000 0.453125
+vt 0.937500 0.453125
+vt 0.750000 0.453125
+vt 0.812500 0.453125
+vt 0.562500 0.453125
+vt 0.625000 0.453125
+vt 0.687500 0.453125
+vt 0.500000 0.453125
+vt 0.437500 0.453125
+vt 0.375000 0.453125
+vt 0.312500 0.453125
+vt 0.062500 0.453125
+vt 0.000000 0.453125
+vt 1.000000 0.453125
+g pipe.000_Cylinder.001_metal
+usemtl metal
+s off
+f 36/54 37/55 38/56
+f 39/57 36/54 38/56
+f 40/58 39/57 38/56
+f 41/59 40/58 38/56
+f 42/60 41/59 38/56
+f 43/61 42/60 38/56
+f 44/62 43/61 38/56
+f 45/63 44/62 38/56
+f 46/64 45/63 38/56
+f 47/65 46/64 38/56
+f 48/66 47/65 38/56
+f 49/67 48/66 38/56
+f 50/68 49/67 38/56
+f 51/69 50/68 38/56
+f 52/70 51/69 38/56
+f 53/71 54/72 55/73
+f 56/74 53/71 55/73
+f 57/75 56/74 55/73
+f 58/76 57/75 55/73
+f 59/77 58/76 55/73
+f 60/78 59/77 55/73
+f 61/79 60/78 55/73
+f 62/80 61/79 55/73
+f 63/81 62/80 55/73
+f 64/82 63/81 55/73
+f 65/83 64/82 55/73
+f 66/84 65/83 55/73
+f 67/85 66/84 55/73
+f 68/86 67/85 55/73
+f 69/87 68/86 55/73
+f 54/72 69/87 55/73
+f 37/55 52/70 38/56
+f 56/88 50/89 51/90 53/91
+f 53/91 51/90 52/92 54/93
+f 57/94 49/95 50/89 56/88
+f 58/96 48/97 49/95 57/94
+f 59/98 47/99 48/100 58/101
+f 60/102 46/103 47/99 59/98
+f 61/104 45/105 46/103 60/102
+f 62/106 44/107 45/105 61/104
+f 63/108 43/109 44/107 62/106
+f 64/110 42/111 43/109 63/108
+f 65/112 41/113 42/111 64/110
+f 66/114 40/115 41/113 65/112
+f 67/116 39/117 40/115 66/114
+f 68/118 36/119 39/117 67/116
+f 69/120 37/121 36/119 68/118
+f 54/93 52/92 37/121 69/120
+f 175/122 34/90 81/89 185/123
+f 102/124 103/125 104/126
+f 105/127 102/124 104/126
+f 106/128 105/127 104/126
+f 107/129 106/128 104/126
+f 108/130 107/129 104/126
+f 109/131 108/130 104/126
+f 110/132 109/131 104/126
+f 111/133 110/132 104/126
+f 112/134 111/133 104/126
+f 113/135 112/134 104/126
+f 114/136 113/135 104/126
+f 115/137 114/136 104/126
+f 116/138 115/137 104/126
+f 117/139 116/138 104/126
+f 118/140 117/139 104/126
+f 119/71 120/72 121/73
+f 122/74 119/71 121/73
+f 123/75 122/74 121/73
+f 124/76 123/75 121/73
+f 125/77 124/76 121/73
+f 126/78 125/77 121/73
+f 127/79 126/78 121/73
+f 128/80 127/79 121/73
+f 129/81 128/80 121/73
+f 130/82 129/81 121/73
+f 131/83 130/82 121/73
+f 132/84 131/83 121/73
+f 133/85 132/84 121/73
+f 134/86 133/85 121/73
+f 135/87 134/86 121/73
+f 120/72 135/87 121/73
+f 103/125 118/140 104/126
+f 122/88 116/89 117/90 119/91
+f 119/91 117/90 118/92 120/93
+f 123/94 115/95 116/89 122/88
+f 124/96 114/97 115/95 123/94
+f 125/98 113/99 114/100 124/101
+f 126/102 112/103 113/99 125/98
+f 127/104 111/105 112/103 126/102
+f 128/106 110/107 111/105 127/104
+f 129/108 109/109 110/107 128/106
+f 130/110 108/111 109/109 129/108
+f 131/112 107/113 108/111 130/110
+f 132/114 106/115 107/113 131/112
+f 133/116 105/117 106/115 132/114
+f 134/118 102/119 105/117 133/116
+f 135/120 103/121 102/119 134/118
+f 120/93 118/92 103/121 135/120
+f 136/141 137/142 138/143 139/144
+f 142/145 141/146 137/142 136/141
+f 145/147 144/148 147/149 146/150
+f 150/151 151/152 149/153 148/154
+f 152/155 153/156 151/152 150/151
+f 154/157 155/158 153/156 152/155
+f 101/159 100/160 155/158 154/157
+f 158/161 159/162 157/163 156/164
+f 160/165 161/166 159/162 158/161
+f 139/144 138/143 161/167 160/168
+f 35/169 99/170 100/160 101/159
+f 76/171 140/172 141/146 142/145
+f 162/173 143/174 144/148 145/147
+f 146/150 147/149 140/172 76/171
+f 148/154 149/153 143/174 162/173
+f 156/164 157/163 99/170 35/169
+f 76/175 72/176 168/177
+f 83/178 164/179 169/180 71/181
+f 71/181 169/180 170/182 70/183
+f 73/184 70/183 170/182 167/185
+f 73/184 167/185 168/186 72/187
+f 83/178 82/188 165/189 164/179
+f 82/190 81/191 166/192 165/193
+f 81/191 34/178 163/181 166/192
+f 35/96 163/194 34/195
+f 35/96 171/196 163/194
+f 35/96 96/197 171/196
+f 96/197 35/96 101/198
+f 154/199 90/200 96/184 101/187
+f 90/200 84/201 171/183 96/184
+f 166/192 163/181 171/183 84/201
+f 98/202 165/193 166/192 84/201
+f 97/203 164/179 165/189 98/204
+f 97/203 87/205 169/180 164/179
+f 87/205 88/206 170/182 169/180
+f 76/175 168/177 86/207
+f 76/175 86/207 94/208
+f 94/208 146/209 76/175
+f 167/185 85/210 86/211 168/186
+f 95/212 94/213 86/211 85/210
+f 85/210 167/185 170/182 88/206
+f 146/214 94/213 95/212 145/215
+f 95/212 85/210 88/206 89/216
+f 95/212 89/216 162/217 145/215
+f 93/218 89/216 88/206 87/205
+f 93/218 148/219 162/217 89/216
+f 97/203 92/220 93/218 87/205
+f 150/221 148/219 93/218 92/220
+f 152/222 150/221 92/220 91/223
+f 92/220 97/203 98/204 91/223
+f 91/224 98/202 84/201 90/200
+f 154/199 152/225 91/224 90/200
+f 34/90 175/122 172/226 35/92
+f 70/103 184/227 183/228 71/99
+f 72/107 181/229 179/230 73/105
+f 74/113 176/231 178/232 75/111
+f 76/109 177/233 181/229 72/107
+f 73/105 179/230 184/227 70/103
+f 75/111 178/232 177/233 76/109
+f 77/115 187/234 176/231 74/113
+f 78/117 180/235 187/234 77/115
+f 79/119 174/236 180/235 78/117
+f 80/121 173/237 174/236 79/119
+f 35/92 172/226 173/237 80/121
+f 82/95 186/238 185/123 81/89
+f 83/97 182/239 186/238 82/95
+f 71/99 183/228 182/240 83/100
diff --git a/pipeworks/models/pipeworks_valve_off.obj b/pipeworks/models/pipeworks_valve_off.obj
new file mode 100644
index 0000000..c5f71be
--- /dev/null
+++ b/pipeworks/models/pipeworks_valve_off.obj
@@ -0,0 +1,458 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-valve-off.blend'
+# www.blender.org
+mtllib pipeworks_valve_off.mtl
+o Cube.003
+v 0.062500 0.281250 -0.312500
+v 0.062500 0.281250 0.093750
+v -0.062500 0.281250 0.093750
+v -0.062500 0.281250 -0.312500
+v 0.062500 0.343750 -0.312500
+v 0.062500 0.343750 0.093750
+v -0.062500 0.343750 0.093750
+v -0.062500 0.343750 -0.312500
+v 0.031250 0.250000 -0.031250
+v 0.031250 0.250000 0.031250
+v -0.031250 0.250000 0.031250
+v -0.031250 0.250000 -0.031250
+v 0.031250 0.281250 -0.031250
+v 0.031250 0.281250 0.031250
+v -0.031250 0.281250 0.031250
+v -0.031250 0.281250 -0.031250
+v 0.250000 -0.250000 -0.250000
+v 0.250000 -0.250000 0.250000
+v -0.250000 -0.250000 0.250000
+v -0.250000 -0.250000 -0.250000
+v 0.250000 0.250000 -0.250000
+v 0.250000 0.250000 0.250000
+v -0.250000 0.250000 0.250000
+v -0.250000 0.250000 -0.250000
+v -0.468750 -0.153248 -0.030483
+v -0.500000 -0.153248 -0.030483
+v -0.468750 -0.153248 0.030483
+v -0.500000 -0.153248 0.030483
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.030483 0.153248
+v -0.500000 -0.030483 0.153248
+v -0.468750 0.030483 0.153248
+v -0.500000 0.030483 0.153248
+v -0.468750 0.086808 0.129917
+v -0.500000 0.086808 0.129917
+v -0.468750 0.129917 0.086808
+v -0.500000 0.129917 0.086808
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153247 0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.030483 -0.153248
+v -0.500000 0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.122598 -0.024386
+v -0.468750 -0.122598 0.024386
+v -0.468750 -0.103934 0.069446
+v -0.468750 -0.069446 0.103934
+v -0.468750 -0.024386 0.122598
+v -0.468750 0.024386 0.122598
+v -0.468750 0.069446 0.103934
+v -0.468750 0.103934 0.069446
+v -0.468750 0.122598 0.024386
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.069446 -0.103934
+v -0.468750 0.024386 -0.122598
+v -0.468750 -0.024387 -0.122598
+v -0.468750 -0.069447 -0.103934
+v -0.468750 -0.103934 -0.069446
+v -0.468750 -0.000000 -0.000000
+v -0.500000 -0.000000 -0.000000
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.103933 0.069447
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.122598 -0.024386
+v 0.500000 -0.129917 -0.086807
+v 0.468750 -0.129917 -0.086807
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.468750 -0.030483 -0.153247
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.153248 -0.030483
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.129917 0.086808
+v 0.468750 0.129917 0.086808
+v 0.500000 0.086808 0.129917
+v 0.468750 0.086808 0.129917
+v 0.500000 0.030483 0.153248
+v 0.468750 0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.086807 0.129917
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.153247 0.030483
+v 0.468750 -0.153247 0.030483
+v 0.500000 -0.153247 -0.030483
+v 0.468750 -0.153247 -0.030483
+v 0.468750 -0.024386 0.122598
+v 0.468750 0.024387 0.122598
+v 0.468750 0.069447 0.103934
+v 0.468750 0.103934 0.069447
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.069447 -0.103933
+v 0.468750 0.024387 -0.122598
+v 0.468750 -0.024386 -0.122598
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103933 -0.069446
+v 0.468750 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+vt 0.265625 0.234375
+vt 0.468750 0.234375
+vt 0.468750 0.265625
+vt 0.265625 0.265625
+vt 0.265625 0.187500
+vt 0.328125 0.187500
+vt 0.328125 0.218750
+vt 0.265625 0.218750
+vt 0.468750 0.312500
+vt 0.265625 0.312500
+vt 0.265625 0.281250
+vt 0.468750 0.281250
+vt 0.406250 0.218750
+vt 0.343750 0.218750
+vt 0.343750 0.187500
+vt 0.406250 0.187500
+vt 0.468750 0.468750
+vt 0.265625 0.468750
+vt 0.265625 0.406250
+vt 0.468750 0.406250
+vt 0.468750 0.390625
+vt 0.265625 0.390625
+vt 0.265625 0.328125
+vt 0.468750 0.328125
+vt 0.039062 0.203125
+vt 0.007812 0.203125
+vt 0.007812 0.187500
+vt 0.039062 0.187500
+vt 0.085938 0.203125
+vt 0.054688 0.203125
+vt 0.054688 0.187500
+vt 0.085938 0.187500
+vt 0.148438 0.187500
+vt 0.179688 0.187500
+vt 0.179688 0.203125
+vt 0.148438 0.203125
+vt 0.132812 0.203125
+vt 0.101562 0.203125
+vt 0.101562 0.187500
+vt 0.132812 0.187500
+vt 0.515625 0.484375
+vt 0.515625 0.734375
+vt 0.265625 0.734375
+vt 0.265625 0.484375
+vt 0.000000 0.468750
+vt 0.000000 0.218750
+vt 0.250000 0.218750
+vt 0.250000 0.468750
+vt 0.515625 1.000000
+vt 0.265625 1.000000
+vt 0.265625 0.750000
+vt 0.515625 0.750000
+vt 0.250000 0.734375
+vt 0.000000 0.734375
+vt 0.000000 0.484375
+vt 0.250000 0.484375
+vt 0.781250 1.000000
+vt 0.531250 1.000000
+vt 0.531250 0.750000
+vt 0.781250 0.750000
+vt 0.000847 0.750015
+vt 0.250216 0.750015
+vt 0.250216 0.999385
+vt 0.000847 0.999385
+vt 0.867188 0.273438
+vt 0.835938 0.273438
+vt 0.835938 0.304688
+vt 0.867188 0.304688
+vt 0.804688 0.273438
+vt 0.804688 0.304688
+vt 0.773438 0.273438
+vt 0.773438 0.304688
+vt 0.742188 0.273438
+vt 0.742188 0.304688
+vt 0.710938 0.273438
+vt 0.710938 0.304688
+vt 0.679688 0.273438
+vt 0.679688 0.304688
+vt 0.648438 0.273438
+vt 0.648438 0.304688
+vt 0.617188 0.273438
+vt 0.617188 0.304688
+vt 0.585938 0.273438
+vt 0.585938 0.304688
+vt 0.554688 0.273438
+vt 0.554688 0.304688
+vt 0.523438 0.273438
+vt 0.523438 0.304688
+vt 0.492188 0.273438
+vt 0.492188 0.304688
+vt 0.992188 0.273438
+vt 0.960938 0.273438
+vt 0.960938 0.304688
+vt 0.992188 0.304688
+vt 0.929688 0.273438
+vt 0.929688 0.304688
+vt 0.898438 0.273438
+vt 0.898438 0.304688
+vt 0.600936 0.328499
+vt 0.584692 0.410164
+vt 0.568448 0.328499
+vt 0.757628 0.328499
+vt 0.773872 0.410164
+vt 0.790117 0.328499
+vt 0.820132 0.340932
+vt 0.843105 0.363905
+vt 0.855537 0.393920
+vt 0.855537 0.426408
+vt 0.843105 0.456424
+vt 0.820132 0.479396
+vt 0.790117 0.491829
+vt 0.757628 0.491829
+vt 0.727613 0.479396
+vt 0.704640 0.456424
+vt 0.692207 0.426408
+vt 0.692207 0.393920
+vt 0.704640 0.363905
+vt 0.727613 0.340932
+vt 0.538432 0.340932
+vt 0.515460 0.363905
+vt 0.503027 0.393920
+vt 0.503027 0.426408
+vt 0.515460 0.456424
+vt 0.538432 0.479396
+vt 0.568448 0.491829
+vt 0.600936 0.491829
+vt 0.630951 0.479396
+vt 0.653924 0.456424
+vt 0.666357 0.426408
+vt 0.666357 0.393920
+vt 0.653924 0.363905
+vt 0.630951 0.340932
+vt 0.585938 0.257812
+vt 0.585938 0.007812
+vt 0.617188 0.007812
+vt 0.617188 0.257812
+vt 0.538433 0.340928
+vt 0.568449 0.328495
+vt 0.584693 0.410160
+vt 0.515460 0.363901
+vt 0.503028 0.393916
+vt 0.503028 0.426405
+vt 0.515460 0.456420
+vt 0.538433 0.479393
+vt 0.568449 0.491826
+vt 0.600937 0.491826
+vt 0.630952 0.479393
+vt 0.653925 0.456420
+vt 0.666358 0.426405
+vt 0.666358 0.393916
+vt 0.653925 0.363901
+vt 0.630952 0.340928
+vt 0.600937 0.328495
+vt 0.727611 0.340928
+vt 0.757626 0.328495
+vt 0.773870 0.410160
+vt 0.704638 0.363901
+vt 0.692205 0.393916
+vt 0.692205 0.426405
+vt 0.704638 0.456420
+vt 0.727611 0.479393
+vt 0.757626 0.491826
+vt 0.790115 0.491826
+vt 0.820130 0.479393
+vt 0.843103 0.456420
+vt 0.855535 0.426405
+vt 0.855535 0.393916
+vt 0.843103 0.363901
+vt 0.820130 0.340928
+vt 0.790115 0.328495
+vt 0.929688 0.257812
+vt 0.929688 0.007812
+vt 0.960938 0.007812
+vt 0.960938 0.257812
+vt 0.867188 0.257812
+vt 0.867188 0.007812
+vt 0.898438 0.007812
+vt 0.898438 0.257812
+vt 0.773438 0.257812
+vt 0.773438 0.007812
+vt 0.804688 0.007812
+vt 0.804688 0.257812
+vt 0.835938 0.257812
+vt 0.835938 0.007812
+vt 0.742188 0.257812
+vt 0.742188 0.007812
+vt 0.710938 0.257812
+vt 0.710938 0.007812
+vt 0.679688 0.257812
+vt 0.679688 0.007812
+vt 0.648438 0.257812
+vt 0.648438 0.007812
+vt 0.554688 0.257812
+vt 0.554688 0.007812
+vt 0.523438 0.257812
+vt 0.523438 0.007812
+vt 0.492188 0.257812
+vt 0.492188 0.007812
+vt 0.992188 0.007812
+vt 0.992188 0.257812
+usemtl None
+s off
+f 5/1 6/2 2/3 1/4
+f 6/5 7/6 3/7 2/8
+f 7/9 8/10 4/11 3/12
+f 8/13 5/14 1/15 4/16
+f 1/17 2/18 3/19 4/20
+f 8/21 7/22 6/23 5/24
+f 13/25 14/26 10/27 9/28
+f 14/29 15/30 11/31 10/32
+f 15/33 16/34 12/35 11/36
+f 16/37 13/38 9/39 12/40
+f 21/41 22/42 18/43 17/44
+f 22/45 23/46 19/47 18/48
+f 23/49 24/50 20/51 19/52
+f 24/53 21/54 17/55 20/56
+f 17/57 18/58 19/59 20/60
+f 24/61 23/62 22/63 21/64
+f 25/65 27/66 28/67 26/68
+f 27/66 29/69 30/70 28/67
+f 29/69 31/71 32/72 30/70
+f 31/71 33/73 34/74 32/72
+f 33/73 35/75 36/76 34/74
+f 35/75 37/77 38/78 36/76
+f 37/77 39/79 40/80 38/78
+f 39/79 41/81 42/82 40/80
+f 41/81 43/83 44/84 42/82
+f 43/83 45/85 46/86 44/84
+f 45/85 47/87 48/88 46/86
+f 47/87 49/89 50/90 48/88
+f 49/91 51/92 52/93 50/94
+f 51/92 53/95 54/96 52/93
+f 55/97 25/65 26/68 56/98
+f 53/95 55/97 56/98 54/96
+f 28/99 74/100 26/101
+f 25/102 73/103 27/104
+f 27/104 73/103 29/105
+f 29/105 73/103 31/106
+f 31/106 73/103 33/107
+f 33/107 73/103 35/108
+f 35/108 73/103 37/109
+f 37/109 73/103 39/110
+f 39/110 73/103 41/111
+f 41/111 73/103 43/112
+f 43/112 73/103 45/113
+f 45/113 73/103 47/114
+f 47/114 73/103 49/115
+f 49/115 73/103 51/116
+f 51/116 73/103 53/117
+f 53/117 73/103 55/118
+f 55/118 73/103 25/102
+f 26/101 74/100 56/119
+f 56/119 74/100 54/120
+f 54/120 74/100 52/121
+f 52/121 74/100 50/122
+f 50/122 74/100 48/123
+f 48/123 74/100 46/124
+f 46/124 74/100 44/125
+f 44/125 74/100 42/126
+f 42/126 74/100 40/127
+f 40/127 74/100 38/128
+f 38/128 74/100 36/129
+f 36/129 74/100 34/130
+f 34/130 74/100 32/131
+f 32/131 74/100 30/132
+f 30/132 74/100 28/99
+f 65/133 115/134 116/135 66/136
+f 105/137 107/138 124/139
+f 103/140 105/137 124/139
+f 101/141 103/140 124/139
+f 99/142 101/141 124/139
+f 97/143 99/142 124/139
+f 95/144 97/143 124/139
+f 93/145 95/144 124/139
+f 91/146 93/145 124/139
+f 89/147 91/146 124/139
+f 87/148 89/147 124/139
+f 85/149 87/148 124/139
+f 83/150 85/149 124/139
+f 81/151 83/150 124/139
+f 79/152 81/151 124/139
+f 109/153 79/152 124/139
+f 80/154 110/155 123/156
+f 82/157 80/154 123/156
+f 84/158 82/157 123/156
+f 86/159 84/158 123/156
+f 88/160 86/159 123/156
+f 90/161 88/160 123/156
+f 92/162 90/161 123/156
+f 94/163 92/162 123/156
+f 96/164 94/163 123/156
+f 98/165 96/164 123/156
+f 100/166 98/165 123/156
+f 102/167 100/166 123/156
+f 104/168 102/167 123/156
+f 106/169 104/168 123/156
+f 108/170 106/169 123/156
+f 110/155 108/170 123/156
+f 107/138 109/153 124/139
+f 82/86 81/85 79/83 80/84
+f 80/84 79/83 109/81 110/82
+f 84/88 83/87 81/85 82/86
+f 86/90 85/89 83/87 84/88
+f 88/93 87/92 85/91 86/94
+f 90/96 89/95 87/92 88/93
+f 92/98 91/97 89/95 90/96
+f 94/68 93/65 91/97 92/98
+f 96/67 95/66 93/65 94/68
+f 98/70 97/69 95/66 96/67
+f 100/72 99/71 97/69 98/70
+f 102/74 101/73 99/71 100/72
+f 104/76 103/75 101/73 102/74
+f 106/78 105/77 103/75 104/76
+f 108/80 107/79 105/77 106/78
+f 110/82 109/81 107/79 108/80
+f 60/171 75/172 111/173 61/174
+f 58/175 77/176 76/177 59/178
+f 71/179 121/180 122/181 72/182
+f 57/183 78/184 77/176 58/175
+f 59/178 76/177 75/172 60/171
+f 72/182 122/181 78/184 57/183
+f 70/185 120/186 121/180 71/179
+f 69/187 119/188 120/186 70/185
+f 68/189 118/190 119/188 69/187
+f 67/191 117/192 118/190 68/189
+f 66/136 116/135 117/192 67/191
+f 64/193 114/194 115/134 65/133
+f 63/195 113/196 114/194 64/193
+f 62/197 112/198 113/196 63/195
+f 61/174 111/173 112/199 62/200
diff --git a/pipeworks/models/pipeworks_valve_on.obj b/pipeworks/models/pipeworks_valve_on.obj
new file mode 100644
index 0000000..ba08b30
--- /dev/null
+++ b/pipeworks/models/pipeworks_valve_on.obj
@@ -0,0 +1,458 @@
+# Blender v2.69 (sub 0) OBJ File: 'pipe-valve-on.blend'
+# www.blender.org
+mtllib pipeworks_valve_on.mtl
+o Cube.003
+v 0.312500 0.281250 0.062500
+v -0.093750 0.281250 0.062500
+v -0.093750 0.281250 -0.062500
+v 0.312500 0.281250 -0.062500
+v 0.312500 0.343750 0.062500
+v -0.093750 0.343750 0.062500
+v -0.093750 0.343750 -0.062500
+v 0.312500 0.343750 -0.062500
+v 0.031250 0.250000 -0.031250
+v 0.031250 0.250000 0.031250
+v -0.031250 0.250000 0.031250
+v -0.031250 0.250000 -0.031250
+v 0.031250 0.281250 -0.031250
+v 0.031250 0.281250 0.031250
+v -0.031250 0.281250 0.031250
+v -0.031250 0.281250 -0.031250
+v 0.250000 -0.250000 -0.250000
+v 0.250000 -0.250000 0.250000
+v -0.250000 -0.250000 0.250000
+v -0.250000 -0.250000 -0.250000
+v 0.250000 0.250000 -0.250000
+v 0.250000 0.250000 0.250000
+v -0.250000 0.250000 0.250000
+v -0.250000 0.250000 -0.250000
+v -0.468750 -0.153248 -0.030483
+v -0.500000 -0.153248 -0.030483
+v -0.468750 -0.153248 0.030483
+v -0.500000 -0.153248 0.030483
+v -0.468750 -0.129917 0.086808
+v -0.500000 -0.129917 0.086808
+v -0.468750 -0.086808 0.129917
+v -0.500000 -0.086808 0.129917
+v -0.468750 -0.030483 0.153248
+v -0.500000 -0.030483 0.153248
+v -0.468750 0.030483 0.153248
+v -0.500000 0.030483 0.153248
+v -0.468750 0.086808 0.129917
+v -0.500000 0.086808 0.129917
+v -0.468750 0.129917 0.086808
+v -0.500000 0.129917 0.086808
+v -0.468750 0.153248 0.030483
+v -0.500000 0.153247 0.030483
+v -0.468750 0.153248 -0.030483
+v -0.500000 0.153248 -0.030483
+v -0.468750 0.129917 -0.086808
+v -0.500000 0.129917 -0.086808
+v -0.468750 0.086808 -0.129917
+v -0.500000 0.086808 -0.129917
+v -0.468750 0.030483 -0.153248
+v -0.500000 0.030483 -0.153248
+v -0.468750 -0.030483 -0.153248
+v -0.500000 -0.030483 -0.153248
+v -0.468750 -0.086808 -0.129917
+v -0.500000 -0.086808 -0.129917
+v -0.468750 -0.129917 -0.086808
+v -0.500000 -0.129917 -0.086808
+v -0.468750 -0.122598 -0.024386
+v -0.468750 -0.122598 0.024386
+v -0.468750 -0.103934 0.069446
+v -0.468750 -0.069446 0.103934
+v -0.468750 -0.024386 0.122598
+v -0.468750 0.024386 0.122598
+v -0.468750 0.069446 0.103934
+v -0.468750 0.103934 0.069446
+v -0.468750 0.122598 0.024386
+v -0.468750 0.122598 -0.024386
+v -0.468750 0.103934 -0.069446
+v -0.468750 0.069446 -0.103934
+v -0.468750 0.024386 -0.122598
+v -0.468750 -0.024387 -0.122598
+v -0.468750 -0.069447 -0.103934
+v -0.468750 -0.103934 -0.069446
+v -0.468750 -0.000000 -0.000000
+v -0.500000 -0.000000 -0.000000
+v 0.468750 -0.069446 0.103934
+v 0.468750 -0.103933 0.069447
+v 0.468750 -0.122598 0.024387
+v 0.468750 -0.122598 -0.024386
+v 0.500000 -0.129917 -0.086807
+v 0.468750 -0.129917 -0.086807
+v 0.500000 -0.086808 -0.129917
+v 0.468750 -0.086808 -0.129917
+v 0.500000 -0.030483 -0.153247
+v 0.468750 -0.030483 -0.153247
+v 0.500000 0.030483 -0.153247
+v 0.468750 0.030483 -0.153247
+v 0.500000 0.086808 -0.129917
+v 0.468750 0.086808 -0.129917
+v 0.500000 0.129917 -0.086808
+v 0.468750 0.129917 -0.086808
+v 0.500000 0.153248 -0.030483
+v 0.468750 0.153248 -0.030483
+v 0.500000 0.153248 0.030483
+v 0.468750 0.153248 0.030483
+v 0.500000 0.129917 0.086808
+v 0.468750 0.129917 0.086808
+v 0.500000 0.086808 0.129917
+v 0.468750 0.086808 0.129917
+v 0.500000 0.030483 0.153248
+v 0.468750 0.030483 0.153248
+v 0.500000 -0.030483 0.153248
+v 0.468750 -0.030483 0.153248
+v 0.500000 -0.086807 0.129917
+v 0.468750 -0.086808 0.129917
+v 0.500000 -0.129917 0.086808
+v 0.468750 -0.129917 0.086808
+v 0.500000 -0.153247 0.030483
+v 0.468750 -0.153247 0.030483
+v 0.500000 -0.153247 -0.030483
+v 0.468750 -0.153247 -0.030483
+v 0.468750 -0.024386 0.122598
+v 0.468750 0.024387 0.122598
+v 0.468750 0.069447 0.103934
+v 0.468750 0.103934 0.069447
+v 0.468750 0.122598 0.024387
+v 0.468750 0.122598 -0.024386
+v 0.468750 0.103934 -0.069446
+v 0.468750 0.069447 -0.103933
+v 0.468750 0.024387 -0.122598
+v 0.468750 -0.024386 -0.122598
+v 0.468750 -0.069446 -0.103933
+v 0.468750 -0.103933 -0.069446
+v 0.468750 0.000000 0.000000
+v 0.500000 0.000000 0.000000
+vt 0.265625 0.234375
+vt 0.468750 0.234375
+vt 0.468750 0.265625
+vt 0.265625 0.265625
+vt 0.265625 0.187500
+vt 0.328125 0.187500
+vt 0.328125 0.218750
+vt 0.265625 0.218750
+vt 0.468750 0.312500
+vt 0.265625 0.312500
+vt 0.265625 0.281250
+vt 0.468750 0.281250
+vt 0.406250 0.218750
+vt 0.343750 0.218750
+vt 0.343750 0.187500
+vt 0.406250 0.187500
+vt 0.468750 0.468750
+vt 0.265625 0.468750
+vt 0.265625 0.406250
+vt 0.468750 0.406250
+vt 0.468750 0.390625
+vt 0.265625 0.390625
+vt 0.265625 0.328125
+vt 0.468750 0.328125
+vt 0.039062 0.203125
+vt 0.007812 0.203125
+vt 0.007812 0.187500
+vt 0.039062 0.187500
+vt 0.085938 0.203125
+vt 0.054688 0.203125
+vt 0.054688 0.187500
+vt 0.085938 0.187500
+vt 0.148438 0.187500
+vt 0.179688 0.187500
+vt 0.179688 0.203125
+vt 0.148438 0.203125
+vt 0.132812 0.203125
+vt 0.101562 0.203125
+vt 0.101562 0.187500
+vt 0.132812 0.187500
+vt 0.515625 0.484375
+vt 0.515625 0.734375
+vt 0.265625 0.734375
+vt 0.265625 0.484375
+vt 0.000000 0.468750
+vt 0.000000 0.218750
+vt 0.250000 0.218750
+vt 0.250000 0.468750
+vt 0.515625 1.000000
+vt 0.265625 1.000000
+vt 0.265625 0.750000
+vt 0.515625 0.750000
+vt 0.250000 0.734375
+vt 0.000000 0.734375
+vt 0.000000 0.484375
+vt 0.250000 0.484375
+vt 0.781250 1.000000
+vt 0.531250 1.000000
+vt 0.531250 0.750000
+vt 0.781250 0.750000
+vt 0.000847 0.750015
+vt 0.250216 0.750015
+vt 0.250216 0.999385
+vt 0.000847 0.999385
+vt 0.867188 0.273438
+vt 0.835938 0.273438
+vt 0.835938 0.304688
+vt 0.867188 0.304688
+vt 0.804688 0.273438
+vt 0.804688 0.304688
+vt 0.773438 0.273438
+vt 0.773438 0.304688
+vt 0.742188 0.273438
+vt 0.742188 0.304688
+vt 0.710938 0.273438
+vt 0.710938 0.304688
+vt 0.679688 0.273438
+vt 0.679688 0.304688
+vt 0.648438 0.273438
+vt 0.648438 0.304688
+vt 0.617188 0.273438
+vt 0.617188 0.304688
+vt 0.585938 0.273438
+vt 0.585938 0.304688
+vt 0.554688 0.273438
+vt 0.554688 0.304688
+vt 0.523438 0.273438
+vt 0.523438 0.304688
+vt 0.492188 0.273438
+vt 0.492188 0.304688
+vt 0.992188 0.273438
+vt 0.960938 0.273438
+vt 0.960938 0.304688
+vt 0.992188 0.304688
+vt 0.929688 0.273438
+vt 0.929688 0.304688
+vt 0.898438 0.273438
+vt 0.898438 0.304688
+vt 0.600936 0.328499
+vt 0.584692 0.410164
+vt 0.568448 0.328499
+vt 0.757628 0.328499
+vt 0.773872 0.410164
+vt 0.790117 0.328499
+vt 0.820132 0.340932
+vt 0.843105 0.363905
+vt 0.855537 0.393920
+vt 0.855537 0.426408
+vt 0.843105 0.456424
+vt 0.820132 0.479396
+vt 0.790117 0.491829
+vt 0.757628 0.491829
+vt 0.727613 0.479396
+vt 0.704640 0.456424
+vt 0.692207 0.426408
+vt 0.692207 0.393920
+vt 0.704640 0.363905
+vt 0.727613 0.340932
+vt 0.538432 0.340932
+vt 0.515460 0.363905
+vt 0.503027 0.393920
+vt 0.503027 0.426408
+vt 0.515460 0.456424
+vt 0.538432 0.479396
+vt 0.568448 0.491829
+vt 0.600936 0.491829
+vt 0.630951 0.479396
+vt 0.653924 0.456424
+vt 0.666357 0.426408
+vt 0.666357 0.393920
+vt 0.653924 0.363905
+vt 0.630951 0.340932
+vt 0.585938 0.257812
+vt 0.585938 0.007812
+vt 0.617188 0.007812
+vt 0.617188 0.257812
+vt 0.538433 0.340928
+vt 0.568449 0.328495
+vt 0.584693 0.410160
+vt 0.515460 0.363901
+vt 0.503028 0.393916
+vt 0.503028 0.426405
+vt 0.515460 0.456420
+vt 0.538433 0.479393
+vt 0.568449 0.491826
+vt 0.600937 0.491826
+vt 0.630952 0.479393
+vt 0.653925 0.456420
+vt 0.666358 0.426405
+vt 0.666358 0.393916
+vt 0.653925 0.363901
+vt 0.630952 0.340928
+vt 0.600937 0.328495
+vt 0.727611 0.340928
+vt 0.757626 0.328495
+vt 0.773870 0.410160
+vt 0.704638 0.363901
+vt 0.692205 0.393916
+vt 0.692205 0.426405
+vt 0.704638 0.456420
+vt 0.727611 0.479393
+vt 0.757626 0.491826
+vt 0.790115 0.491826
+vt 0.820130 0.479393
+vt 0.843103 0.456420
+vt 0.855535 0.426405
+vt 0.855535 0.393916
+vt 0.843103 0.363901
+vt 0.820130 0.340928
+vt 0.790115 0.328495
+vt 0.929688 0.257812
+vt 0.929688 0.007812
+vt 0.960938 0.007812
+vt 0.960938 0.257812
+vt 0.867188 0.257812
+vt 0.867188 0.007812
+vt 0.898438 0.007812
+vt 0.898438 0.257812
+vt 0.773438 0.257812
+vt 0.773438 0.007812
+vt 0.804688 0.007812
+vt 0.804688 0.257812
+vt 0.835938 0.257812
+vt 0.835938 0.007812
+vt 0.742188 0.257812
+vt 0.742188 0.007812
+vt 0.710938 0.257812
+vt 0.710938 0.007812
+vt 0.679688 0.257812
+vt 0.679688 0.007812
+vt 0.648438 0.257812
+vt 0.648438 0.007812
+vt 0.554688 0.257812
+vt 0.554688 0.007812
+vt 0.523438 0.257812
+vt 0.523438 0.007812
+vt 0.492188 0.257812
+vt 0.492188 0.007812
+vt 0.992188 0.007812
+vt 0.992188 0.257812
+usemtl None
+s off
+f 5/1 6/2 2/3 1/4
+f 6/5 7/6 3/7 2/8
+f 7/9 8/10 4/11 3/12
+f 8/13 5/14 1/15 4/16
+f 1/17 2/18 3/19 4/20
+f 8/21 7/22 6/23 5/24
+f 13/25 14/26 10/27 9/28
+f 14/29 15/30 11/31 10/32
+f 15/33 16/34 12/35 11/36
+f 16/37 13/38 9/39 12/40
+f 21/41 22/42 18/43 17/44
+f 22/45 23/46 19/47 18/48
+f 23/49 24/50 20/51 19/52
+f 24/53 21/54 17/55 20/56
+f 17/57 18/58 19/59 20/60
+f 24/61 23/62 22/63 21/64
+f 25/65 27/66 28/67 26/68
+f 27/66 29/69 30/70 28/67
+f 29/69 31/71 32/72 30/70
+f 31/71 33/73 34/74 32/72
+f 33/73 35/75 36/76 34/74
+f 35/75 37/77 38/78 36/76
+f 37/77 39/79 40/80 38/78
+f 39/79 41/81 42/82 40/80
+f 41/81 43/83 44/84 42/82
+f 43/83 45/85 46/86 44/84
+f 45/85 47/87 48/88 46/86
+f 47/87 49/89 50/90 48/88
+f 49/91 51/92 52/93 50/94
+f 51/92 53/95 54/96 52/93
+f 55/97 25/65 26/68 56/98
+f 53/95 55/97 56/98 54/96
+f 28/99 74/100 26/101
+f 25/102 73/103 27/104
+f 27/104 73/103 29/105
+f 29/105 73/103 31/106
+f 31/106 73/103 33/107
+f 33/107 73/103 35/108
+f 35/108 73/103 37/109
+f 37/109 73/103 39/110
+f 39/110 73/103 41/111
+f 41/111 73/103 43/112
+f 43/112 73/103 45/113
+f 45/113 73/103 47/114
+f 47/114 73/103 49/115
+f 49/115 73/103 51/116
+f 51/116 73/103 53/117
+f 53/117 73/103 55/118
+f 55/118 73/103 25/102
+f 26/101 74/100 56/119
+f 56/119 74/100 54/120
+f 54/120 74/100 52/121
+f 52/121 74/100 50/122
+f 50/122 74/100 48/123
+f 48/123 74/100 46/124
+f 46/124 74/100 44/125
+f 44/125 74/100 42/126
+f 42/126 74/100 40/127
+f 40/127 74/100 38/128
+f 38/128 74/100 36/129
+f 36/129 74/100 34/130
+f 34/130 74/100 32/131
+f 32/131 74/100 30/132
+f 30/132 74/100 28/99
+f 65/133 115/134 116/135 66/136
+f 105/137 107/138 124/139
+f 103/140 105/137 124/139
+f 101/141 103/140 124/139
+f 99/142 101/141 124/139
+f 97/143 99/142 124/139
+f 95/144 97/143 124/139
+f 93/145 95/144 124/139
+f 91/146 93/145 124/139
+f 89/147 91/146 124/139
+f 87/148 89/147 124/139
+f 85/149 87/148 124/139
+f 83/150 85/149 124/139
+f 81/151 83/150 124/139
+f 79/152 81/151 124/139
+f 109/153 79/152 124/139
+f 80/154 110/155 123/156
+f 82/157 80/154 123/156
+f 84/158 82/157 123/156
+f 86/159 84/158 123/156
+f 88/160 86/159 123/156
+f 90/161 88/160 123/156
+f 92/162 90/161 123/156
+f 94/163 92/162 123/156
+f 96/164 94/163 123/156
+f 98/165 96/164 123/156
+f 100/166 98/165 123/156
+f 102/167 100/166 123/156
+f 104/168 102/167 123/156
+f 106/169 104/168 123/156
+f 108/170 106/169 123/156
+f 110/155 108/170 123/156
+f 107/138 109/153 124/139
+f 82/86 81/85 79/83 80/84
+f 80/84 79/83 109/81 110/82
+f 84/88 83/87 81/85 82/86
+f 86/90 85/89 83/87 84/88
+f 88/93 87/92 85/91 86/94
+f 90/96 89/95 87/92 88/93
+f 92/98 91/97 89/95 90/96
+f 94/68 93/65 91/97 92/98
+f 96/67 95/66 93/65 94/68
+f 98/70 97/69 95/66 96/67
+f 100/72 99/71 97/69 98/70
+f 102/74 101/73 99/71 100/72
+f 104/76 103/75 101/73 102/74
+f 106/78 105/77 103/75 104/76
+f 108/80 107/79 105/77 106/78
+f 110/82 109/81 107/79 108/80
+f 60/171 75/172 111/173 61/174
+f 58/175 77/176 76/177 59/178
+f 71/179 121/180 122/181 72/182
+f 57/183 78/184 77/176 58/175
+f 59/178 76/177 75/172 60/171
+f 72/182 122/181 78/184 57/183
+f 70/185 120/186 121/180 71/179
+f 69/187 119/188 120/186 70/185
+f 68/189 118/190 119/188 69/187
+f 67/191 117/192 118/190 68/189
+f 66/136 116/135 117/192 67/191
+f 64/193 114/194 115/134 65/133
+f 63/195 113/196 114/194 64/193
+f 62/197 112/198 113/196 63/195
+f 61/174 111/173 112/199 62/200
diff --git a/pipeworks/pipes.lua b/pipeworks/pipes.lua
new file mode 100644
index 0000000..2056fdf
--- /dev/null
+++ b/pipeworks/pipes.lua
@@ -0,0 +1,222 @@
+-- This file supplies the steel pipes
+
+local REGISTER_COMPATIBILITY = true
+
+local pipes_empty_nodenames = {}
+local pipes_full_nodenames = {}
+
+local vti = {4, 3, 2, 1, 6, 5}
+local cconnects = {{}, {1}, {1, 2}, {1, 3}, {1, 3, 5}, {1, 2, 3}, {1, 2, 3, 5}, {1, 2, 3, 4}, {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5, 6}}
+for index, connects in ipairs(cconnects) do
+ local outsel = {}
+
+ local jx = 0
+ local jy = 0
+ local jz = 0
+ for _, v in ipairs(connects) do
+ if v == 1 or v == 2 then
+ jx = jx + 1
+ elseif v == 3 or v == 4 then
+ jy = jy + 1
+ else
+ jz = jz + 1
+ end
+ table.insert(outsel, pipeworks.pipe_selectboxes[v])
+ end
+
+ if #connects == 1 then
+ local v = connects[1]
+ v = v-1 + 2*(v%2) -- Opposite side
+ end
+
+ local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
+ local pipedesc = "Pipe segement".." "..dump(connects).."... You hacker, you."
+ local image = nil
+
+ if #connects == 0 then
+ pgroups = {snappy = 3, tube = 1}
+ pipedesc = "Pipe segment"
+ image = "pipeworks_pipe_inv.png"
+ end
+
+ local outimg_e = { "pipeworks_pipe_plain.png" }
+ local outimg_l = { "pipeworks_pipe_plain.png" }
+
+ if index == 3 then
+ outimg_e = { "pipeworks_pipe_3_empty.png" }
+ outimg_l = { "pipeworks_pipe_3_loaded.png" }
+ end
+
+ local mesh = "pipeworks_pipe_"..index..".obj"
+
+ if index == 1 then
+ mesh = "pipeworks_pipe_3.obj"
+ end
+
+ minetest.register_node("pipeworks:pipe_"..index.."_empty", {
+ description = pipedesc,
+ drawtype = "mesh",
+ mesh = mesh,
+ tiles = outimg_e,
+ sunlight_propagates = true,
+ inventory_image = image,
+ wield_image = image,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = {
+ type = "fixed",
+ fixed = outsel
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = outsel
+ },
+ groups = pgroups,
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ drop = "pipeworks:pipe_1_empty",
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end
+ })
+
+ local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1}
+
+ minetest.register_node("pipeworks:pipe_"..index.."_loaded", {
+ description = pipedesc,
+ drawtype = "mesh",
+ mesh = mesh,
+ tiles = outimg_l,
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ selection_box = {
+ type = "fixed",
+ fixed = outsel
+ },
+ collision_box = {
+ type = "fixed",
+ fixed = outsel
+ },
+ groups = pgroups,
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ drop = "pipeworks:pipe_1_empty",
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ after_dig_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end
+ })
+
+ table.insert(pipes_empty_nodenames, "pipeworks:pipe_"..index.."_empty")
+ table.insert(pipes_full_nodenames, "pipeworks:pipe_"..index.."_loaded")
+end
+
+
+
+if REGISTER_COMPATIBILITY then
+ local cempty = "pipeworks:pipe_compatibility_empty"
+ local cloaded = "pipeworks:pipe_compatibility_loaded"
+ minetest.register_node(cempty, {
+ drawtype = "airlike",
+ sunlight_propagates = true,
+ paramtype = "light",
+ inventory_image = "pipeworks_pipe_inv.png",
+ wield_image = "pipeworks_pipe_inv.png",
+ description = "Pipe Segment (legacy)",
+ groups = {not_in_creative_inventory = 1, pipe_to_update = 1},
+ drop = "pipeworks:pipe_1_empty",
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ })
+ minetest.register_node(cloaded, {
+ drawtype = "airlike",
+ sunlight_propagates = true,
+ paramtype = "light",
+ inventory_image = "pipeworks_pipe_inv.png",
+ groups = {not_in_creative_inventory = 1, pipe_to_update = 1},
+ drop = "pipeworks:pipe_1_empty",
+ after_place_node = function(pos)
+ pipeworks.scan_for_pipe_objects(pos)
+ end,
+ })
+ for xm = 0, 1 do
+ for xp = 0, 1 do
+ for ym = 0, 1 do
+ for yp = 0, 1 do
+ for zm = 0, 1 do
+ for zp = 0, 1 do
+ local pname = xm..xp..ym..yp..zm..zp
+ minetest.register_alias("pipeworks:pipe_"..pname.."_empty", cempty)
+ minetest.register_alias("pipeworks:pipe_"..pname.."_loaded", cloaded)
+ end
+ end
+ end
+ end
+ end
+ end
+ minetest.register_abm({
+ nodenames = {"group:pipe_to_update"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local minp = {x = pos.x-1, y = pos.y-1, z = pos.z-1}
+ local maxp = {x = pos.x+1, y = pos.y+1, z = pos.z+1}
+ if table.getn(minetest.find_nodes_in_area(minp, maxp, "ignore")) == 0 then
+ pipeworks.scan_for_pipe_objects(pos)
+ end
+ end
+ })
+end
+
+table.insert(pipes_empty_nodenames,"pipeworks:valve_on_empty")
+table.insert(pipes_empty_nodenames,"pipeworks:valve_off_empty")
+table.insert(pipes_empty_nodenames,"pipeworks:entry_panel_empty")
+table.insert(pipes_empty_nodenames,"pipeworks:flow_sensor_empty")
+
+table.insert(pipes_full_nodenames,"pipeworks:valve_on_loaded")
+table.insert(pipes_full_nodenames,"pipeworks:entry_panel_loaded")
+table.insert(pipes_full_nodenames,"pipeworks:flow_sensor_loaded")
+
+minetest.register_abm({
+ nodenames = pipes_empty_nodenames,
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pipeworks.check_for_inflows(pos,node)
+ end
+})
+
+minetest.register_abm({
+ nodenames = pipes_full_nodenames,
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pipeworks.check_sources(pos,node)
+ end
+})
+
+minetest.register_abm({
+ nodenames = {"pipeworks:spigot","pipeworks:spigot_pouring"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pipeworks.spigot_check(pos,node)
+ end
+})
+
+minetest.register_abm({
+ nodenames = {"pipeworks:fountainhead","pipeworks:fountainhead_pouring"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pipeworks.fountainhead_check(pos,node)
+ end
+})
+
diff --git a/pipeworks/routing_tubes.lua b/pipeworks/routing_tubes.lua
new file mode 100644
index 0000000..8620d20
--- /dev/null
+++ b/pipeworks/routing_tubes.lua
@@ -0,0 +1,119 @@
+-- the default tube and default textures
+pipeworks.register_tube("pipeworks:tube", "Pneumatic tube segment")
+minetest.register_craft( {
+ output = "pipeworks:tube_1 6",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "", "", "" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+-- the high priority tube is a low-cpu replacement for sorting tubes in situations
+-- where players would use them for simple routing (turning off paths)
+-- without doing actual sorting, like at outputs of tubedevices that might both accept and eject items
+if pipeworks.enable_priority_tube then
+ local color = "#ff3030:128"
+ pipeworks.register_tube("pipeworks:priority_tube", {
+ description = "High Priority Tube Segment",
+ inventory_image = "pipeworks_tube_inv.png^[colorize:" .. color,
+ plain = { "pipeworks_tube_plain.png^[colorize:" .. color },
+ noctr = { "pipeworks_tube_noctr.png^[colorize:" .. color },
+ ends = { "pipeworks_tube_end.png^[colorize:" .. color },
+ short = "pipeworks_tube_short.png^[colorize:" .. color,
+ node_def = {
+ tube = { priority = 150 } -- higher than tubedevices (100)
+ },
+ })
+ minetest.register_craft( {
+ output = "pipeworks:priority_tube_1 6",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:gold_ingot", "", "default:gold_ingot" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+end
+
+if pipeworks.enable_accelerator_tube then
+ pipeworks.register_tube("pipeworks:accelerator_tube", {
+ description = "Accelerating Pneumatic Tube Segment",
+ inventory_image = "pipeworks_accelerator_tube_inv.png",
+ plain = { "pipeworks_accelerator_tube_plain.png" },
+ noctr = { "pipeworks_accelerator_tube_noctr.png" },
+ ends = { "pipeworks_accelerator_tube_end.png" },
+ short = "pipeworks_accelerator_tube_short.png",
+ node_def = {
+ tube = {can_go = function(pos, node, velocity, stack)
+ velocity.speed = velocity.speed+1
+ return pipeworks.notvel(pipeworks.meseadjlist, velocity)
+ end}
+ },
+ })
+ minetest.register_craft( {
+ output = "pipeworks:accelerator_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:mese_crystal_fragment", "default:steel_ingot", "default:mese_crystal_fragment" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+end
+
+if pipeworks.enable_crossing_tube then
+ pipeworks.register_tube("pipeworks:crossing_tube", {
+ description = "Crossing Pneumatic Tube Segment",
+ inventory_image = "pipeworks_crossing_tube_inv.png",
+ plain = { "pipeworks_crossing_tube_plain.png" },
+ noctr = { "pipeworks_crossing_tube_noctr.png" },
+ ends = { "pipeworks_crossing_tube_end.png" },
+ short = "pipeworks_crossing_tube_short.png",
+ node_def = {
+ tube = {can_go = function(pos, node, velocity, stack) return {velocity} end }
+ },
+ })
+ minetest.register_craft( {
+ output = "pipeworks:crossing_tube_1 5",
+ recipe = {
+ { "", "pipeworks:tube_1", "" },
+ { "pipeworks:tube_1", "pipeworks:tube_1", "pipeworks:tube_1" },
+ { "", "pipeworks:tube_1", "" }
+ },
+ })
+end
+
+if pipeworks.enable_one_way_tube then
+ minetest.register_node("pipeworks:one_way_tube", {
+ description = "One way tube",
+ tiles = {"pipeworks_one_way_tube_top.png", "pipeworks_one_way_tube_top.png", "pipeworks_one_way_tube_output.png",
+ "pipeworks_one_way_tube_input.png", "pipeworks_one_way_tube_side.png", "pipeworks_one_way_tube_top.png"},
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {type = "fixed",
+ fixed = {{-1/2, -9/64, -9/64, 1/2, 9/64, 9/64}}},
+ groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1},
+ sounds = default.node_sound_wood_defaults(),
+ tube = {
+ connect_sides = {left = 1, right = 1},
+ can_go = function(pos, node, velocity, stack)
+ return {velocity}
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local dir = minetest.facedir_to_right_dir(node.param2)
+ return vector.equals(dir, direction)
+ end,
+ priority = 75 -- Higher than normal tubes, but lower than receivers
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig,
+ })
+ minetest.register_craft({
+ output = "pipeworks:one_way_tube 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "group:stick", "default:mese_crystal", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+end
diff --git a/pipeworks/signal_tubes.lua b/pipeworks/signal_tubes.lua
new file mode 100644
index 0000000..bfce14a
--- /dev/null
+++ b/pipeworks/signal_tubes.lua
@@ -0,0 +1,111 @@
+if pipeworks.enable_detector_tube then
+ local detector_tube_step = 2 * tonumber(minetest.setting_get("dedicated_server_step"))
+ pipeworks.register_tube("pipeworks:detector_tube_on", {
+ description = "Detecting Pneumatic Tube Segment on (you hacker you)",
+ inventory_image = "pipeworks_detector_tube_inv.png",
+ plain = { "pipeworks_detector_tube_plain.png" },
+ node_def = {
+ tube = {can_go = function(pos, node, velocity, stack)
+ local meta = minetest.get_meta(pos)
+ local name = minetest.get_node(pos).name
+ local nitems = meta:get_int("nitems")+1
+ meta:set_int("nitems", nitems)
+ local saved_pos = vector.new(pos)
+ minetest.after(detector_tube_step, minetest.registered_nodes[name].item_exit, saved_pos)
+ return pipeworks.notvel(pipeworks.meseadjlist,velocity)
+ end},
+ groups = {mesecon = 2, not_in_creative_inventory = 1},
+ drop = "pipeworks:detector_tube_off_1",
+ mesecons = {receptor = {state = "on", rules = pipeworks.mesecons_rules}},
+ item_exit = function(pos)
+ local meta = minetest.get_meta(pos)
+ local nitems = meta:get_int("nitems")-1
+ local node = minetest.get_node(pos)
+ local name = node.name
+ local fdir = node.param2
+ if nitems == 0 then
+ minetest.set_node(pos, {name = string.gsub(name, "on", "off"), param2 = fdir})
+ mesecon.receptor_off(pos, pipeworks.mesecons_rules)
+ else
+ meta:set_int("nitems", nitems)
+ end
+ end,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("nitems", 1)
+ local name = minetest.get_node(pos).name
+ local saved_pos = vector.new(pos)
+ minetest.after(detector_tube_step, minetest.registered_nodes[name].item_exit, saved_pos)
+ end,
+ },
+ })
+ pipeworks.register_tube("pipeworks:detector_tube_off", {
+ description = "Detecting Pneumatic Tube Segment",
+ inventory_image = "pipeworks_detector_tube_inv.png",
+ plain = { "pipeworks_detector_tube_plain.png" },
+ node_def = {
+ tube = {can_go = function(pos, node, velocity, stack)
+ local node = minetest.get_node(pos)
+ local name = node.name
+ local fdir = node.param2
+ minetest.set_node(pos,{name = string.gsub(name, "off", "on"), param2 = fdir})
+ mesecon.receptor_on(pos, pipeworks.mesecons_rules)
+ return pipeworks.notvel(pipeworks.meseadjlist, velocity)
+ end},
+ groups = {mesecon = 2},
+ mesecons = {receptor = {state = "off", rules = pipeworks.mesecons_rules }},
+ },
+ })
+
+ minetest.register_craft( {
+ output = "pipeworks:conductor_tube_off_1 6",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "mesecons:mesecon", "mesecons:mesecon", "mesecons:mesecon" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+end
+
+if pipeworks.enable_conductor_tube then
+ pipeworks.register_tube("pipeworks:conductor_tube_off", {
+ description = "Conducting Pneumatic Tube Segment",
+ inventory_image = "pipeworks_conductor_tube_inv.png",
+ short = "pipeworks_conductor_tube_short.png",
+ plain = { "pipeworks_conductor_tube_plain.png" },
+ noctr = { "pipeworks_conductor_tube_noctr.png" },
+ ends = { "pipeworks_conductor_tube_end.png" },
+ node_def = {
+ groups = {mesecon = 2},
+ mesecons = {conductor = {state = "off",
+ rules = pipeworks.mesecons_rules,
+ onstate = "pipeworks:conductor_tube_on_#id"}}
+ },
+ })
+ pipeworks.register_tube("pipeworks:conductor_tube_on", {
+ description = "Conducting Pneumatic Tube Segment on (you hacker you)",
+ inventory_image = "pipeworks_conductor_tube_inv.png",
+ short = "pipeworks_conductor_tube_short.png",
+ plain = { "pipeworks_conductor_tube_on_plain.png" },
+ noctr = { "pipeworks_conductor_tube_on_noctr.png" },
+ ends = { "pipeworks_conductor_tube_on_end.png" },
+ node_def = {
+ groups = {mesecon = 2, not_in_creative_inventory = 1},
+ drop = "pipeworks:conductor_tube_off_1",
+ mesecons = {conductor = {state = "on",
+ rules = pipeworks.mesecons_rules,
+ offstate = "pipeworks:conductor_tube_off_#id"}}
+ },
+ })
+
+ minetest.register_craft( {
+ output = "pipeworks:detector_tube_off_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "mesecons:mesecon", "mesecons_materials:silicon", "mesecons:mesecon" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+end
+
+
diff --git a/pipeworks/sorting_tubes.lua b/pipeworks/sorting_tubes.lua
new file mode 100644
index 0000000..795291b
--- /dev/null
+++ b/pipeworks/sorting_tubes.lua
@@ -0,0 +1,148 @@
+if pipeworks.enable_mese_tube then
+ local function update_formspec(pos)
+ local meta = minetest.get_meta(pos)
+ local old_formspec = meta:get_string("formspec")
+ if string.find(old_formspec, "button1") then -- Old version
+ local inv = meta:get_inventory()
+ for i = 1, 6 do
+ for _, stack in ipairs(inv:get_list("line"..i)) do
+ minetest.item_drop(stack, nil, pos)
+ end
+ end
+ end
+ local buttons_formspec = ""
+ for i = 0, 5 do
+ buttons_formspec = buttons_formspec .. fs_helpers.cycling_button(meta,
+ "image_button[7,"..(i)..";1,1", "l"..(i+1).."s",
+ {{text="",texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, {text="",texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"}})
+ end
+ meta:set_string("formspec",
+ "size[8,11]"..
+ "list[context;line1;1,0;6,1;]"..
+ "list[context;line2;1,1;6,1;]"..
+ "list[context;line3;1,2;6,1;]"..
+ "list[context;line4;1,3;6,1;]"..
+ "list[context;line5;1,4;6,1;]"..
+ "list[context;line6;1,5;6,1;]"..
+ "image[0,0;1,1;pipeworks_white.png]"..
+ "image[0,1;1,1;pipeworks_black.png]"..
+ "image[0,2;1,1;pipeworks_green.png]"..
+ "image[0,3;1,1;pipeworks_yellow.png]"..
+ "image[0,4;1,1;pipeworks_blue.png]"..
+ "image[0,5;1,1;pipeworks_red.png]"..
+ buttons_formspec..
+ "list[current_player;main;0,7;8,4;]")
+ end
+
+ pipeworks.register_tube("pipeworks:mese_tube", {
+ description = "Sorting Pneumatic Tube Segment",
+ inventory_image = "pipeworks_mese_tube_inv.png",
+ noctr = {"pipeworks_mese_tube_noctr_1.png", "pipeworks_mese_tube_noctr_2.png", "pipeworks_mese_tube_noctr_3.png",
+ "pipeworks_mese_tube_noctr_4.png", "pipeworks_mese_tube_noctr_5.png", "pipeworks_mese_tube_noctr_6.png"},
+ plain = {"pipeworks_mese_tube_plain_1.png", "pipeworks_mese_tube_plain_2.png", "pipeworks_mese_tube_plain_3.png",
+ "pipeworks_mese_tube_plain_4.png", "pipeworks_mese_tube_plain_5.png", "pipeworks_mese_tube_plain_6.png"},
+ ends = { "pipeworks_mese_tube_end.png" },
+ short = "pipeworks_mese_tube_short.png",
+ no_facedir = true, -- Must use old tubes, since the textures are rotated with 6d ones
+ node_def = {
+ tube = {can_go = function(pos, node, velocity, stack)
+ local tbl, tbln = {}, 0
+ local found, foundn = {}, 0
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local name = stack:get_name()
+ for i, vect in ipairs(pipeworks.meseadjlist) do
+ local npos = vector.add(pos, vect)
+ local node = minetest.get_node(npos)
+ local reg_node = minetest.registered_nodes[node.name]
+ if meta:get_int("l"..i.."s") == 1 and reg_node then
+ local tube_def = reg_node.tube
+ if not tube_def or not tube_def.can_insert or
+ tube_def.can_insert(npos, node, stack, vect) then
+ local invname = "line"..i
+ local is_empty = true
+ for _, st in ipairs(inv:get_list(invname)) do
+ if not st:is_empty() then
+ is_empty = false
+ if st:get_name() == name then
+ foundn = foundn + 1
+ found[foundn] = vect
+ end
+ end
+ end
+ if is_empty then
+ tbln = tbln + 1
+ tbl[tbln] = vect
+ end
+ end
+ end
+ end
+ return (foundn > 0) and found or tbl
+ end},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ for i = 1, 6 do
+ meta:set_int("l"..tostring(i).."s", 1)
+ inv:set_size("line"..tostring(i), 6*1)
+ end
+ update_formspec(pos)
+ meta:set_string("infotext", "Sorting pneumatic tube")
+ end,
+ on_punch = update_formspec,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if not pipeworks.may_configure(pos, sender) then return end
+ fs_helpers.on_receive_fields(pos, fields)
+ update_formspec(pos)
+ end,
+ can_dig = function(pos, player)
+ update_formspec(pos) -- so non-virtual items would be dropped for old tubes
+ return true
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ update_formspec(pos) -- For old tubes
+ local inv = minetest.get_meta(pos):get_inventory()
+ local stack_copy = ItemStack(stack)
+ stack_copy:set_count(1)
+ inv:set_stack(listname, index, stack_copy)
+ return 0
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ update_formspec(pos) -- For old tubes
+ local inv = minetest.get_meta(pos):get_inventory()
+ inv:set_stack(listname, index, ItemStack(""))
+ return 0
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ update_formspec(pos) -- For old tubes
+ local inv = minetest.get_meta(pos):get_inventory()
+ inv:set_stack(from_list, from_index, ItemStack(""))
+ return 0
+ end,
+ },
+ })
+
+ minetest.register_craft( {
+ output = "pipeworks:mese_tube_000000 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "", "default:mese_crystal", "" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "pipeworks:mese_tube_000000",
+ recipe = {
+ "pipeworks:tube_1",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment"
+ },
+ })
+end
diff --git a/pipeworks/teleport_tube.lua b/pipeworks/teleport_tube.lua
new file mode 100644
index 0000000..3a870f5
--- /dev/null
+++ b/pipeworks/teleport_tube.lua
@@ -0,0 +1,242 @@
+local filename=minetest.get_worldpath() .. "/teleport_tubes"
+
+local tp_tube_db = nil -- nil forces a read
+local tp_tube_db_version = 2.0
+
+local function hash(pos)
+ return string.format("%d", minetest.hash_node_position(pos))
+end
+
+local function save_tube_db()
+ local file, err = io.open(filename, "w")
+ if file then
+ tp_tube_db.version = tp_tube_db_version
+ file:write(minetest.serialize(tp_tube_db))
+ tp_tube_db.version = nil
+ io.close(file)
+ else
+ error(err)
+ end
+end
+
+local function migrate_tube_db()
+ local tmp_db = {}
+ tp_tube_db.version = nil
+ for key, val in pairs(tp_tube_db) do
+ if(val.channel ~= "") then -- skip unconfigured tubes
+ tmp_db[hash(val)] = val
+ end
+ end
+ tp_tube_db = tmp_db
+ save_tube_db()
+end
+
+local function read_tube_db()
+ local file = io.open(filename, "r")
+ if file ~= nil then
+ local file_content = file:read("*all")
+ io.close(file)
+
+ if file_content and file_content ~= "" then
+ tp_tube_db = minetest.deserialize(file_content)
+ if(not tp_tube_db.version or tonumber(tp_tube_db.version) < tp_tube_db_version) then
+ migrate_tube_db()
+ end
+ tp_tube_db.version = nil -- we add it back when saving
+ return tp_tube_db -- we read sucessfully
+ end
+ end
+ tp_tube_db = {}
+ return tp_tube_db
+end
+
+-- updates or adds a tube
+local function set_tube(pos, channel, can_receive)
+ local tubes = tp_tube_db or read_tube_db()
+ local hash = hash(pos)
+ local tube = tubes[hash]
+ if tube then
+ tube.channel = channel
+ tube.cr = can_receive
+ save_tube_db()
+ return
+ end
+
+ -- we haven't found any tp tube to update, so lets add it
+ tp_tube_db[hash] = {x=pos.x,y=pos.y,z=pos.z,channel=channel,cr=can_receive}
+ save_tube_db()
+end
+
+local function remove_tube(pos)
+ local tubes = tp_tube_db or read_tube_db()
+ tubes[hash(pos)] = nil
+ save_tube_db()
+end
+
+local function read_node_with_vm(pos)
+ local vm = VoxelManip()
+ local MinEdge, MaxEdge = vm:read_from_map(pos, pos)
+ local data = vm:get_data()
+ local area = VoxelArea:new({MinEdge = MinEdge, MaxEdge = MaxEdge})
+ return minetest.get_name_from_content_id(data[area:index(pos.x, pos.y, pos.z)])
+end
+
+local function get_receivers(pos, channel)
+ local tubes = tp_tube_db or read_tube_db()
+ local receivers = {}
+ local dirty = false
+ for key, val in pairs(tubes) do
+ -- skip all non-receivers and the tube that it came from as early as possible, as this is called often
+ if (val.cr == 1 and val.channel == channel and (val.x ~= pos.x or val.y ~= pos.y or val.z ~= pos.z)) then
+ local is_loaded = (minetest.get_node_or_nil(val) ~= nil)
+ local node_name = is_loaded and minetest.get_node(pos).name or read_node_with_vm(val)
+
+ if minetest.registered_nodes[node_name] and minetest.registered_nodes[node_name].is_teleport_tube then
+ table.insert(receivers, val)
+ else
+ tp_tube_db[key] = nil
+ dirty = true
+ end
+ end
+ end
+ if dirty then
+ save_tube_db()
+ end
+ return receivers
+end
+
+local function update_meta(meta, can_receive)
+ meta:set_int("can_receive", can_receive and 1 or 0)
+ local cr_state = can_receive and "on" or "off"
+ meta:set_string("formspec","size[8.6,2.2]"..
+ "field[0.6,0.6;7,1;channel;Channel:;${channel}]"..
+ "label[7.3,0;Receive]"..
+ "image_button[7.3,0.3;1,1;pipeworks_button_" .. cr_state .. ".png;cr" .. (can_receive and 0 or 1) .. ";;;false;pipeworks_button_interm.png]"..
+ "image[0.3,1.3;1,1;pipeworks_teleport_tube_inv.png]"..
+ "label[1.6,1.2;channels are public by default]" ..
+ "label[1.6,1.5;use <player>:<channel> for fully private channels]" ..
+ "label[1.6,1.8;use <player>\\;<channel> for private receivers]" ..
+ default.gui_bg..
+ default.gui_bg_img)
+end
+
+pipeworks.register_tube("pipeworks:teleport_tube", {
+ description = "Teleporting Pneumatic Tube Segment",
+ inventory_image = "pipeworks_teleport_tube_inv.png",
+ noctr = { "pipeworks_teleport_tube_noctr.png" },
+ plain = { "pipeworks_teleport_tube_plain.png" },
+ ends = { "pipeworks_teleport_tube_end.png" },
+ short = "pipeworks_teleport_tube_short.png",
+ node_def = {
+ is_teleport_tube = true,
+ tube = {
+ can_go = function(pos,node,velocity,stack)
+ velocity.x = 0
+ velocity.y = 0
+ velocity.z = 0
+
+ local channel = minetest.get_meta(pos):get_string("channel")
+ if channel == "" then return {} end
+
+ local target = get_receivers(pos, channel)
+ if target[1] == nil then return {} end
+
+ local d = math.random(1,#target)
+ pos.x = target[d].x
+ pos.y = target[d].y
+ pos.z = target[d].z
+ return pipeworks.meseadjlist
+ end
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ update_meta(meta, true)
+ meta:set_string("infotext", "unconfigured Teleportation Tube")
+ end,
+ on_receive_fields = function(pos,formname,fields,sender)
+ if not fields.channel -- ignore escaping or clientside manipulation of the form
+ or not pipeworks.may_configure(pos, sender) then
+ return
+ end
+ local new_channel = tostring(fields.channel):trim()
+
+ local meta = minetest.get_meta(pos)
+ local can_receive = meta:get_int("can_receive")
+
+ -- check for private channels each time before actually changing anything
+ -- to not even allow switching between can_receive states of private channels
+ if new_channel ~= "" then
+ local sender_name = sender:get_player_name()
+ local name, mode = new_channel:match("^([^:;]+)([:;])")
+ if name and mode and name ~= sender_name then
+ --channels starting with '[name]:' can only be used by the named player
+ if mode == ":" then
+ minetest.chat_send_player(sender_name, "Sorry, channel '"..new_channel.."' is reserved for exclusive use by "..name)
+ return
+
+ --channels starting with '[name];' can be used by other players, but cannot be received from
+ elseif mode == ";" and (fields.cr1 or (can_receive ~= 0 and not fields.cr0)) then
+ minetest.chat_send_player(sender_name, "Sorry, receiving from channel '"..new_channel.."' is reserved for "..name)
+ return
+ end
+ end
+ end
+
+ local dirty = false
+
+ -- was the channel changed?
+ local channel = meta:get_string("channel")
+ if new_channel ~= channel then
+ channel = new_channel
+ meta:set_string("channel", channel)
+ dirty = true
+ end
+
+ -- test if a can_receive button was pressed
+ if fields.cr0 and can_receive ~= 0 then
+ can_receive = 0
+ update_meta(meta, false)
+ dirty = true
+ elseif fields.cr1 and can_receive ~= 1 then
+ can_receive = 1
+ update_meta(meta, true)
+ dirty = true
+ end
+
+ -- save if we changed something, handle the empty channel while we're at it
+ if dirty then
+ if channel ~= "" then
+ set_tube(pos, channel, can_receive)
+ local cr_description = (can_receive == 1) and "sending and receiving" or "sending"
+ meta:set_string("infotext", string.format("Teleportation Tube %s on '%s'", cr_description, channel))
+ else
+ -- remove empty channel tubes, to not have to search through them
+ remove_tube(pos)
+ meta:set_string("infotext", "unconfigured Teleportation Tube")
+ end
+ end
+ end,
+ on_destruct = function(pos)
+ remove_tube(pos)
+ end
+ },
+})
+minetest.register_craft( {
+ output = "pipeworks:teleport_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:desert_stone", "default:mese", "default:desert_stone" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+if minetest.get_modpath("mesecons_mvps") ~= nil then
+ mesecon.register_on_mvps_move(function(moved_nodes)
+ for _, n in ipairs(moved_nodes) do
+ if string.find(n.node.name, "pipeworks:teleport_tube") ~= nil then
+ local meta = minetest.get_meta(n.pos)
+ set_tube(n.pos, meta:get_string("channel"), meta:get_int("can_receive"))
+ end
+ end
+ end)
+end
diff --git a/pipeworks/textures/homedecor_oil_extract.png b/pipeworks/textures/homedecor_oil_extract.png
new file mode 100644
index 0000000..b945a9e
--- /dev/null
+++ b/pipeworks/textures/homedecor_oil_extract.png
Binary files differ
diff --git a/pipeworks/textures/homedecor_paraffin.png b/pipeworks/textures/homedecor_paraffin.png
new file mode 100644
index 0000000..77d2bbd
--- /dev/null
+++ b/pipeworks/textures/homedecor_paraffin.png
Binary files differ
diff --git a/pipeworks/textures/homedecor_plastic_sheeting.png b/pipeworks/textures/homedecor_plastic_sheeting.png
new file mode 100644
index 0000000..fba0ccd
--- /dev/null
+++ b/pipeworks/textures/homedecor_plastic_sheeting.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_accelerator_tube_end.png b/pipeworks/textures/pipeworks_accelerator_tube_end.png
new file mode 100644
index 0000000..6839165
--- /dev/null
+++ b/pipeworks/textures/pipeworks_accelerator_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_accelerator_tube_inv.png b/pipeworks/textures/pipeworks_accelerator_tube_inv.png
new file mode 100644
index 0000000..743956a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_accelerator_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_accelerator_tube_noctr.png b/pipeworks/textures/pipeworks_accelerator_tube_noctr.png
new file mode 100644
index 0000000..fa0daa6
--- /dev/null
+++ b/pipeworks/textures/pipeworks_accelerator_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_accelerator_tube_plain.png b/pipeworks/textures/pipeworks_accelerator_tube_plain.png
new file mode 100644
index 0000000..8256d05
--- /dev/null
+++ b/pipeworks/textures/pipeworks_accelerator_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_accelerator_tube_short.png b/pipeworks/textures/pipeworks_accelerator_tube_short.png
new file mode 100644
index 0000000..1444b43
--- /dev/null
+++ b/pipeworks/textures/pipeworks_accelerator_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_autocrafter.png b/pipeworks/textures/pipeworks_autocrafter.png
new file mode 100644
index 0000000..1643e82
--- /dev/null
+++ b/pipeworks/textures/pipeworks_autocrafter.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_black.png b/pipeworks/textures/pipeworks_black.png
new file mode 100644
index 0000000..34afad8
--- /dev/null
+++ b/pipeworks/textures/pipeworks_black.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_blue.png b/pipeworks/textures/pipeworks_blue.png
new file mode 100644
index 0000000..64c8a6f
--- /dev/null
+++ b/pipeworks/textures/pipeworks_blue.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_button_interm.png b/pipeworks/textures/pipeworks_button_interm.png
new file mode 100644
index 0000000..47320ce
--- /dev/null
+++ b/pipeworks/textures/pipeworks_button_interm.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_button_off.png b/pipeworks/textures/pipeworks_button_off.png
new file mode 100644
index 0000000..319fc6e
--- /dev/null
+++ b/pipeworks/textures/pipeworks_button_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_button_on.png b/pipeworks/textures/pipeworks_button_on.png
new file mode 100644
index 0000000..a9884cf
--- /dev/null
+++ b/pipeworks/textures/pipeworks_button_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_end.png b/pipeworks/textures/pipeworks_conductor_tube_end.png
new file mode 100644
index 0000000..5942662
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_inv.png b/pipeworks/textures/pipeworks_conductor_tube_inv.png
new file mode 100644
index 0000000..6323937
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_noctr.png b/pipeworks/textures/pipeworks_conductor_tube_noctr.png
new file mode 100644
index 0000000..f5e0501
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_on_end.png b/pipeworks/textures/pipeworks_conductor_tube_on_end.png
new file mode 100644
index 0000000..46d0e30
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_on_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_on_noctr.png b/pipeworks/textures/pipeworks_conductor_tube_on_noctr.png
new file mode 100644
index 0000000..27d2483
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_on_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_on_plain.png b/pipeworks/textures/pipeworks_conductor_tube_on_plain.png
new file mode 100644
index 0000000..c58eaf2
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_on_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_plain.png b/pipeworks/textures/pipeworks_conductor_tube_plain.png
new file mode 100644
index 0000000..e0891ed
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_conductor_tube_short.png b/pipeworks/textures/pipeworks_conductor_tube_short.png
new file mode 100644
index 0000000..7ec809a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_conductor_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_crossing_tube_end.png b/pipeworks/textures/pipeworks_crossing_tube_end.png
new file mode 100644
index 0000000..7b51ce3
--- /dev/null
+++ b/pipeworks/textures/pipeworks_crossing_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_crossing_tube_inv.png b/pipeworks/textures/pipeworks_crossing_tube_inv.png
new file mode 100644
index 0000000..2ee350b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_crossing_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_crossing_tube_noctr.png b/pipeworks/textures/pipeworks_crossing_tube_noctr.png
new file mode 100644
index 0000000..fdef1be
--- /dev/null
+++ b/pipeworks/textures/pipeworks_crossing_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_crossing_tube_plain.png b/pipeworks/textures/pipeworks_crossing_tube_plain.png
new file mode 100644
index 0000000..0ed695f
--- /dev/null
+++ b/pipeworks/textures/pipeworks_crossing_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_crossing_tube_short.png b/pipeworks/textures/pipeworks_crossing_tube_short.png
new file mode 100644
index 0000000..ef191de
--- /dev/null
+++ b/pipeworks/textures/pipeworks_crossing_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_back.png b/pipeworks/textures/pipeworks_deployer_back.png
new file mode 100644
index 0000000..4e08be3
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_back.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_bottom.png b/pipeworks/textures/pipeworks_deployer_bottom.png
new file mode 100644
index 0000000..fcb863c
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_bottom.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_front_off.png b/pipeworks/textures/pipeworks_deployer_front_off.png
new file mode 100644
index 0000000..a314c8b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_front_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_front_on.png b/pipeworks/textures/pipeworks_deployer_front_on.png
new file mode 100644
index 0000000..a59a61e
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_front_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_side.png b/pipeworks/textures/pipeworks_deployer_side.png
new file mode 100644
index 0000000..2c7da56
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_side.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_side1.png b/pipeworks/textures/pipeworks_deployer_side1.png
new file mode 100644
index 0000000..2c7da56
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_side1.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_side2.png b/pipeworks/textures/pipeworks_deployer_side2.png
new file mode 100644
index 0000000..eb24061
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_side2.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_deployer_top.png b/pipeworks/textures/pipeworks_deployer_top.png
new file mode 100644
index 0000000..f331212
--- /dev/null
+++ b/pipeworks/textures/pipeworks_deployer_top.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_detector_tube_end.png b/pipeworks/textures/pipeworks_detector_tube_end.png
new file mode 100644
index 0000000..e9d01ba
--- /dev/null
+++ b/pipeworks/textures/pipeworks_detector_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_detector_tube_inv.png b/pipeworks/textures/pipeworks_detector_tube_inv.png
new file mode 100644
index 0000000..0e3b7d8
--- /dev/null
+++ b/pipeworks/textures/pipeworks_detector_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_detector_tube_noctr.png b/pipeworks/textures/pipeworks_detector_tube_noctr.png
new file mode 100644
index 0000000..6f07886
--- /dev/null
+++ b/pipeworks/textures/pipeworks_detector_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_detector_tube_plain.png b/pipeworks/textures/pipeworks_detector_tube_plain.png
new file mode 100644
index 0000000..6a9845c
--- /dev/null
+++ b/pipeworks/textures/pipeworks_detector_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_detector_tube_short.png b/pipeworks/textures/pipeworks_detector_tube_short.png
new file mode 100644
index 0000000..6729c53
--- /dev/null
+++ b/pipeworks/textures/pipeworks_detector_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_back.png b/pipeworks/textures/pipeworks_dispenser_back.png
new file mode 100644
index 0000000..ce447bd
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_back.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_bottom.png b/pipeworks/textures/pipeworks_dispenser_bottom.png
new file mode 100644
index 0000000..16dc584
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_bottom.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_front_off.png b/pipeworks/textures/pipeworks_dispenser_front_off.png
new file mode 100644
index 0000000..b0c9e4a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_front_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_front_on.png b/pipeworks/textures/pipeworks_dispenser_front_on.png
new file mode 100644
index 0000000..c9fff11
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_front_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_side1.png b/pipeworks/textures/pipeworks_dispenser_side1.png
new file mode 100644
index 0000000..bd17852
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_side1.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_side2.png b/pipeworks/textures/pipeworks_dispenser_side2.png
new file mode 100644
index 0000000..005d9a5
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_side2.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_dispenser_top.png b/pipeworks/textures/pipeworks_dispenser_top.png
new file mode 100644
index 0000000..7dd49ad
--- /dev/null
+++ b/pipeworks/textures/pipeworks_dispenser_top.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_entry_panel.png b/pipeworks/textures/pipeworks_entry_panel.png
new file mode 100644
index 0000000..040f408
--- /dev/null
+++ b/pipeworks/textures/pipeworks_entry_panel.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_filter_input.png b/pipeworks/textures/pipeworks_filter_input.png
new file mode 100644
index 0000000..187c402
--- /dev/null
+++ b/pipeworks/textures/pipeworks_filter_input.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_filter_output.png b/pipeworks/textures/pipeworks_filter_output.png
new file mode 100644
index 0000000..db7af08
--- /dev/null
+++ b/pipeworks/textures/pipeworks_filter_output.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_filter_side.png b/pipeworks/textures/pipeworks_filter_side.png
new file mode 100644
index 0000000..be1577a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_filter_side.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_filter_top.png b/pipeworks/textures/pipeworks_filter_top.png
new file mode 100644
index 0000000..45b6b5a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_filter_top.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_flow_sensor_off.png b/pipeworks/textures/pipeworks_flow_sensor_off.png
new file mode 100644
index 0000000..10c6846
--- /dev/null
+++ b/pipeworks/textures/pipeworks_flow_sensor_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_flow_sensor_on.png b/pipeworks/textures/pipeworks_flow_sensor_on.png
new file mode 100644
index 0000000..03e054a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_flow_sensor_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_fountainhead.png b/pipeworks/textures/pipeworks_fountainhead.png
new file mode 100644
index 0000000..4affa69
--- /dev/null
+++ b/pipeworks/textures/pipeworks_fountainhead.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_grating_sides.png b/pipeworks/textures/pipeworks_grating_sides.png
new file mode 100644
index 0000000..28ce593
--- /dev/null
+++ b/pipeworks/textures/pipeworks_grating_sides.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_grating_top.png b/pipeworks/textures/pipeworks_grating_top.png
new file mode 100644
index 0000000..6e876fa
--- /dev/null
+++ b/pipeworks/textures/pipeworks_grating_top.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_green.png b/pipeworks/textures/pipeworks_green.png
new file mode 100644
index 0000000..3f42f9f
--- /dev/null
+++ b/pipeworks/textures/pipeworks_green.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_filter_input.png b/pipeworks/textures/pipeworks_mese_filter_input.png
new file mode 100644
index 0000000..58095d0
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_filter_input.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_filter_output.png b/pipeworks/textures/pipeworks_mese_filter_output.png
new file mode 100644
index 0000000..a39e5a8
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_filter_output.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_filter_side.png b/pipeworks/textures/pipeworks_mese_filter_side.png
new file mode 100644
index 0000000..3438ce1
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_filter_side.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_filter_top.png b/pipeworks/textures/pipeworks_mese_filter_top.png
new file mode 100644
index 0000000..aa4f67c
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_filter_top.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_sand_tube_end.png b/pipeworks/textures/pipeworks_mese_sand_tube_end.png
new file mode 100644
index 0000000..fa59f37
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_sand_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_sand_tube_inv.png b/pipeworks/textures/pipeworks_mese_sand_tube_inv.png
new file mode 100644
index 0000000..8b1b5e1
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_sand_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_sand_tube_noctr.png b/pipeworks/textures/pipeworks_mese_sand_tube_noctr.png
new file mode 100644
index 0000000..f26f39d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_sand_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_sand_tube_plain.png b/pipeworks/textures/pipeworks_mese_sand_tube_plain.png
new file mode 100644
index 0000000..8a48599
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_sand_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_sand_tube_short.png b/pipeworks/textures/pipeworks_mese_sand_tube_short.png
new file mode 100644
index 0000000..78ca710
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_sand_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_end.png b/pipeworks/textures/pipeworks_mese_tube_end.png
new file mode 100644
index 0000000..b47281a
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_inv.png b/pipeworks/textures/pipeworks_mese_tube_inv.png
new file mode 100644
index 0000000..4b15ef9
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_noctr_1.png b/pipeworks/textures/pipeworks_mese_tube_noctr_1.png
new file mode 100644
index 0000000..c9661a7
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_noctr_1.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_noctr_2.png b/pipeworks/textures/pipeworks_mese_tube_noctr_2.png
new file mode 100644
index 0000000..ffe53b7
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_noctr_2.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_noctr_3.png b/pipeworks/textures/pipeworks_mese_tube_noctr_3.png
new file mode 100644
index 0000000..b65c0e2
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_noctr_3.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_noctr_4.png b/pipeworks/textures/pipeworks_mese_tube_noctr_4.png
new file mode 100644
index 0000000..278c7e8
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_noctr_4.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_noctr_5.png b/pipeworks/textures/pipeworks_mese_tube_noctr_5.png
new file mode 100644
index 0000000..4b75ae2
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_noctr_5.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_noctr_6.png b/pipeworks/textures/pipeworks_mese_tube_noctr_6.png
new file mode 100644
index 0000000..e2bd483
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_noctr_6.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_plain_1.png b/pipeworks/textures/pipeworks_mese_tube_plain_1.png
new file mode 100644
index 0000000..47ce4ed
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_plain_1.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_plain_2.png b/pipeworks/textures/pipeworks_mese_tube_plain_2.png
new file mode 100644
index 0000000..12d7966
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_plain_2.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_plain_3.png b/pipeworks/textures/pipeworks_mese_tube_plain_3.png
new file mode 100644
index 0000000..4d3d415
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_plain_3.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_plain_4.png b/pipeworks/textures/pipeworks_mese_tube_plain_4.png
new file mode 100644
index 0000000..f4c3370
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_plain_4.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_plain_5.png b/pipeworks/textures/pipeworks_mese_tube_plain_5.png
new file mode 100644
index 0000000..fbe8de0
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_plain_5.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_plain_6.png b/pipeworks/textures/pipeworks_mese_tube_plain_6.png
new file mode 100644
index 0000000..76b49e3
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_plain_6.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_mese_tube_short.png b/pipeworks/textures/pipeworks_mese_tube_short.png
new file mode 100644
index 0000000..fd12ccd
--- /dev/null
+++ b/pipeworks/textures/pipeworks_mese_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_back.png b/pipeworks/textures/pipeworks_nodebreaker_back.png
new file mode 100644
index 0000000..3006cb7
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_back.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_bottom_off.png b/pipeworks/textures/pipeworks_nodebreaker_bottom_off.png
new file mode 100644
index 0000000..c7a48d4
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_bottom_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_bottom_on.png b/pipeworks/textures/pipeworks_nodebreaker_bottom_on.png
new file mode 100644
index 0000000..e14ca32
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_bottom_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_front_off.png b/pipeworks/textures/pipeworks_nodebreaker_front_off.png
new file mode 100644
index 0000000..36a5a50
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_front_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_front_on.png b/pipeworks/textures/pipeworks_nodebreaker_front_on.png
new file mode 100644
index 0000000..bf7fe70
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_front_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_side1_off.png b/pipeworks/textures/pipeworks_nodebreaker_side1_off.png
new file mode 100644
index 0000000..30769fa
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_side1_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_side1_on.png b/pipeworks/textures/pipeworks_nodebreaker_side1_on.png
new file mode 100644
index 0000000..ff0a893
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_side1_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_side2_off.png b/pipeworks/textures/pipeworks_nodebreaker_side2_off.png
new file mode 100644
index 0000000..babb681
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_side2_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_side2_on.png b/pipeworks/textures/pipeworks_nodebreaker_side2_on.png
new file mode 100644
index 0000000..ed0e12e
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_side2_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_top_off.png b/pipeworks/textures/pipeworks_nodebreaker_top_off.png
new file mode 100644
index 0000000..fb86b95
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_top_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_nodebreaker_top_on.png b/pipeworks/textures/pipeworks_nodebreaker_top_on.png
new file mode 100644
index 0000000..97da74d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_nodebreaker_top_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_one_way_tube_input.png b/pipeworks/textures/pipeworks_one_way_tube_input.png
new file mode 100644
index 0000000..8490858
--- /dev/null
+++ b/pipeworks/textures/pipeworks_one_way_tube_input.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_one_way_tube_output.png b/pipeworks/textures/pipeworks_one_way_tube_output.png
new file mode 100644
index 0000000..8490858
--- /dev/null
+++ b/pipeworks/textures/pipeworks_one_way_tube_output.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_one_way_tube_side.png b/pipeworks/textures/pipeworks_one_way_tube_side.png
new file mode 100644
index 0000000..9881be2
--- /dev/null
+++ b/pipeworks/textures/pipeworks_one_way_tube_side.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_one_way_tube_top.png b/pipeworks/textures/pipeworks_one_way_tube_top.png
new file mode 100644
index 0000000..5ade427
--- /dev/null
+++ b/pipeworks/textures/pipeworks_one_way_tube_top.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pane_embedded_tube_ends.png b/pipeworks/textures/pipeworks_pane_embedded_tube_ends.png
new file mode 100644
index 0000000..8c424a8
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pane_embedded_tube_ends.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pane_embedded_tube_sides.png b/pipeworks/textures/pipeworks_pane_embedded_tube_sides.png
new file mode 100644
index 0000000..befe525
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pane_embedded_tube_sides.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pipe_3_empty.png b/pipeworks/textures/pipeworks_pipe_3_empty.png
new file mode 100644
index 0000000..d13ec77
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pipe_3_empty.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pipe_3_loaded.png b/pipeworks/textures/pipeworks_pipe_3_loaded.png
new file mode 100644
index 0000000..c086e19
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pipe_3_loaded.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pipe_inv.png b/pipeworks/textures/pipeworks_pipe_inv.png
new file mode 100644
index 0000000..0a17d0c
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pipe_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pipe_plain.png b/pipeworks/textures/pipeworks_pipe_plain.png
new file mode 100644
index 0000000..7cbc11b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pipe_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_plastic_sheeting.png b/pipeworks/textures/pipeworks_plastic_sheeting.png
new file mode 100644
index 0000000..3834df7
--- /dev/null
+++ b/pipeworks/textures/pipeworks_plastic_sheeting.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pump_off.png b/pipeworks/textures/pipeworks_pump_off.png
new file mode 100644
index 0000000..28d2311
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pump_off.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_pump_on.png b/pipeworks/textures/pipeworks_pump_on.png
new file mode 100644
index 0000000..50a8bbf
--- /dev/null
+++ b/pipeworks/textures/pipeworks_pump_on.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_red.png b/pipeworks/textures/pipeworks_red.png
new file mode 100644
index 0000000..33812bd
--- /dev/null
+++ b/pipeworks/textures/pipeworks_red.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_sand_tube_end.png b/pipeworks/textures/pipeworks_sand_tube_end.png
new file mode 100644
index 0000000..8cccaf4
--- /dev/null
+++ b/pipeworks/textures/pipeworks_sand_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_sand_tube_inv.png b/pipeworks/textures/pipeworks_sand_tube_inv.png
new file mode 100644
index 0000000..3afb05d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_sand_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_sand_tube_noctr.png b/pipeworks/textures/pipeworks_sand_tube_noctr.png
new file mode 100644
index 0000000..a9c6d2d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_sand_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_sand_tube_plain.png b/pipeworks/textures/pipeworks_sand_tube_plain.png
new file mode 100644
index 0000000..d665081
--- /dev/null
+++ b/pipeworks/textures/pipeworks_sand_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_sand_tube_short.png b/pipeworks/textures/pipeworks_sand_tube_short.png
new file mode 100644
index 0000000..8dcf2b4
--- /dev/null
+++ b/pipeworks/textures/pipeworks_sand_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_spigot.png b/pipeworks/textures/pipeworks_spigot.png
new file mode 100644
index 0000000..a79dbf8
--- /dev/null
+++ b/pipeworks/textures/pipeworks_spigot.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_back.png b/pipeworks/textures/pipeworks_storage_tank_back.png
new file mode 100644
index 0000000..3b6a16b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_back.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_fittings.png b/pipeworks/textures/pipeworks_storage_tank_fittings.png
new file mode 100644
index 0000000..f3b8b24
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_fittings.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_0.png b/pipeworks/textures/pipeworks_storage_tank_front_0.png
new file mode 100644
index 0000000..72c6f6b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_0.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_1.png b/pipeworks/textures/pipeworks_storage_tank_front_1.png
new file mode 100644
index 0000000..889893b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_1.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_10.png b/pipeworks/textures/pipeworks_storage_tank_front_10.png
new file mode 100644
index 0000000..f48a738
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_10.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_2.png b/pipeworks/textures/pipeworks_storage_tank_front_2.png
new file mode 100644
index 0000000..a36bc24
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_2.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_3.png b/pipeworks/textures/pipeworks_storage_tank_front_3.png
new file mode 100644
index 0000000..4575e37
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_3.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_4.png b/pipeworks/textures/pipeworks_storage_tank_front_4.png
new file mode 100644
index 0000000..47d9669
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_4.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_5.png b/pipeworks/textures/pipeworks_storage_tank_front_5.png
new file mode 100644
index 0000000..17eaf69
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_5.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_6.png b/pipeworks/textures/pipeworks_storage_tank_front_6.png
new file mode 100644
index 0000000..77619e3
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_6.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_7.png b/pipeworks/textures/pipeworks_storage_tank_front_7.png
new file mode 100644
index 0000000..ffebf9b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_7.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_8.png b/pipeworks/textures/pipeworks_storage_tank_front_8.png
new file mode 100644
index 0000000..4974a82
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_8.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_storage_tank_front_9.png b/pipeworks/textures/pipeworks_storage_tank_front_9.png
new file mode 100644
index 0000000..87b6d79
--- /dev/null
+++ b/pipeworks/textures/pipeworks_storage_tank_front_9.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_teleport_tube_end.png b/pipeworks/textures/pipeworks_teleport_tube_end.png
new file mode 100644
index 0000000..7a27150
--- /dev/null
+++ b/pipeworks/textures/pipeworks_teleport_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_teleport_tube_inv.png b/pipeworks/textures/pipeworks_teleport_tube_inv.png
new file mode 100644
index 0000000..d12b896
--- /dev/null
+++ b/pipeworks/textures/pipeworks_teleport_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_teleport_tube_noctr.png b/pipeworks/textures/pipeworks_teleport_tube_noctr.png
new file mode 100644
index 0000000..ac7364d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_teleport_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_teleport_tube_plain.png b/pipeworks/textures/pipeworks_teleport_tube_plain.png
new file mode 100644
index 0000000..0a859f2
--- /dev/null
+++ b/pipeworks/textures/pipeworks_teleport_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_teleport_tube_short.png b/pipeworks/textures/pipeworks_teleport_tube_short.png
new file mode 100644
index 0000000..f82d082
--- /dev/null
+++ b/pipeworks/textures/pipeworks_teleport_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_testobject.png b/pipeworks/textures/pipeworks_testobject.png
new file mode 100644
index 0000000..d54c024
--- /dev/null
+++ b/pipeworks/textures/pipeworks_testobject.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_trashcan_bottom.png b/pipeworks/textures/pipeworks_trashcan_bottom.png
new file mode 100644
index 0000000..91fd944
--- /dev/null
+++ b/pipeworks/textures/pipeworks_trashcan_bottom.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_trashcan_side.png b/pipeworks/textures/pipeworks_trashcan_side.png
new file mode 100644
index 0000000..cf0a3bf
--- /dev/null
+++ b/pipeworks/textures/pipeworks_trashcan_side.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_connection_metallic.png b/pipeworks/textures/pipeworks_tube_connection_metallic.png
new file mode 100644
index 0000000..10becfe
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_connection_metallic.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_connection_stony.png b/pipeworks/textures/pipeworks_tube_connection_stony.png
new file mode 100644
index 0000000..6ed02a4
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_connection_stony.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_connection_wooden.png b/pipeworks/textures/pipeworks_tube_connection_wooden.png
new file mode 100644
index 0000000..ff199ca
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_connection_wooden.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_end.png b/pipeworks/textures/pipeworks_tube_end.png
new file mode 100644
index 0000000..e9d01ba
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_end.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_inv.png b/pipeworks/textures/pipeworks_tube_inv.png
new file mode 100644
index 0000000..51c728d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_inv.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_noctr.png b/pipeworks/textures/pipeworks_tube_noctr.png
new file mode 100644
index 0000000..6f07886
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_noctr.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_plain.png b/pipeworks/textures/pipeworks_tube_plain.png
new file mode 100644
index 0000000..9d6442b
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_plain.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_short.png b/pipeworks/textures/pipeworks_tube_short.png
new file mode 100644
index 0000000..6729c53
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_short.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_tube_transparent.png b/pipeworks/textures/pipeworks_tube_transparent.png
new file mode 100644
index 0000000..aa4418d
--- /dev/null
+++ b/pipeworks/textures/pipeworks_tube_transparent.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_valve.png b/pipeworks/textures/pipeworks_valve.png
new file mode 100644
index 0000000..60ef960
--- /dev/null
+++ b/pipeworks/textures/pipeworks_valve.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_white.png b/pipeworks/textures/pipeworks_white.png
new file mode 100644
index 0000000..faf0ec1
--- /dev/null
+++ b/pipeworks/textures/pipeworks_white.png
Binary files differ
diff --git a/pipeworks/textures/pipeworks_yellow.png b/pipeworks/textures/pipeworks_yellow.png
new file mode 100644
index 0000000..ce1af41
--- /dev/null
+++ b/pipeworks/textures/pipeworks_yellow.png
Binary files differ
diff --git a/pipeworks/trashcan.lua b/pipeworks/trashcan.lua
new file mode 100644
index 0000000..87980ab
--- /dev/null
+++ b/pipeworks/trashcan.lua
@@ -0,0 +1,49 @@
+minetest.register_node("pipeworks:trashcan", {
+ description = "Trash Can",
+ drawtype = "normal",
+ tiles = {
+ "pipeworks_trashcan_bottom.png",
+ "pipeworks_trashcan_bottom.png",
+ "pipeworks_trashcan_side.png",
+ "pipeworks_trashcan_side.png",
+ "pipeworks_trashcan_side.png",
+ "pipeworks_trashcan_side.png",
+ },
+ groups = {snappy = 3, tubedevice = 1, tubedevice_receiver = 1},
+ tube = {
+ insert_object = function(pos, node, stack, direction)
+ return ItemStack("")
+ end,
+ connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1},
+ priority = 1, -- Lower than anything else
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",
+ "size[8,7]"..
+ "item_image[0,0;1,1;pipeworks:trashcan]"..
+ "label[1,0;Trash Can]"..
+ "list[context;trash;3.5,1;1,1;]"..
+ default.gui_bg..
+ default.gui_bg_img..
+ default.gui_slots..
+ default.get_hotbar_bg(0,3) ..
+ "list[current_player;main;0,3;8,4;]")
+ meta:set_string("infotext", "Trash Can")
+ meta:get_inventory():set_size("trash", 1)
+ end,
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.get_meta(pos):get_inventory():set_stack(listname, index, ItemStack(""))
+ end,
+})
+
+minetest.register_craft({
+ output = "pipeworks:trashcan",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:steel_ingot", "", "default:steel_ingot" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
+ },
+})
diff --git a/pipeworks/tube_registration.lua b/pipeworks/tube_registration.lua
new file mode 100644
index 0000000..c926216
--- /dev/null
+++ b/pipeworks/tube_registration.lua
@@ -0,0 +1,240 @@
+-- This file supplies the various kinds of pneumatic tubes
+
+local tubenodes = {}
+pipeworks.tubenodes = tubenodes
+
+minetest.register_alias("pipeworks:tube", "pipeworks:tube_000000")
+
+-- now, a function to define the tubes
+
+local REGISTER_COMPATIBILITY = true
+
+local vti = {4, 3, 2, 1, 6, 5}
+
+local default_noctrs = { "pipeworks_tube_noctr.png" }
+local default_plain = { "pipeworks_tube_plain.png" }
+local default_ends = { "pipeworks_tube_end.png" }
+
+local texture_mt = {
+ __index = function(table, key)
+ local size, idx = #table, tonumber(key)
+ if size > 0 then -- avoid endless loops with empty tables
+ while idx > size do idx = idx - size end
+ return table[idx]
+ end
+ end
+}
+
+local register_one_tube = function(name, tname, dropname, desc, plain, noctrs, ends, short, inv, special, connects, style)
+ noctrs = noctrs or default_noctrs
+ setmetatable(noctrs, texture_mt)
+ plain = plain or default_plain
+ setmetatable(plain, texture_mt)
+ ends = ends or default_ends
+ setmetatable(ends, texture_mt)
+ short = short or "pipeworks_tube_short.png"
+ inv = inv or "pipeworks_tube_inv.png"
+
+ local outboxes = {}
+ local outsel = {}
+ local outimgs = {}
+
+ for i = 1, 6 do
+ outimgs[vti[i]] = plain[i]
+ end
+
+ for _, v in ipairs(connects) do
+ table.extend(outboxes, pipeworks.tube_boxes[v])
+ table.insert(outsel, pipeworks.tube_selectboxes[v])
+ outimgs[vti[v]] = noctrs[v]
+ end
+
+ if #connects == 1 then
+ local v = connects[1]
+ v = v-1 + 2*(v%2) -- Opposite side
+ outimgs[vti[v]] = ends[v]
+ end
+
+ local tgroups = {snappy = 3, tube = 1, tubedevice = 1, not_in_creative_inventory = 1}
+ local tubedesc = string.format("%s %s... You hacker, you.", desc, dump(connects))
+ local iimg = plain[1]
+ local wscale = {x = 1, y = 1, z = 1}
+
+ if #connects == 0 then
+ tgroups = {snappy = 3, tube = 1, tubedevice = 1}
+ tubedesc = desc
+ iimg=inv
+ outimgs = {
+ short, short,
+ ends[3],ends[4],
+ short, short
+ }
+ outboxes = { -24/64, -9/64, -9/64, 24/64, 9/64, 9/64 }
+ outsel = { -24/64, -10/64, -10/64, 24/64, 10/64, 10/64 }
+ wscale = {x = 1, y = 1, z = 0.01}
+ end
+
+ local rname = string.format("%s_%s", name, tname)
+ table.insert(tubenodes, rname)
+
+ local nodedef = {
+ description = tubedesc,
+ drawtype = "nodebox",
+ tiles = outimgs,
+ sunlight_propagates = true,
+ inventory_image = iimg,
+ wield_image = iimg,
+ wield_scale = wscale,
+ paramtype = "light",
+ selection_box = {
+ type = "fixed",
+ fixed = outsel
+ },
+ node_box = {
+ type = "fixed",
+ fixed = outboxes
+ },
+ groups = tgroups,
+ sounds = default.node_sound_wood_defaults(),
+ walkable = true,
+ stack_max = 99,
+ basename = name,
+ style = style,
+ drop = string.format("%s_%s", name, dropname),
+ tubelike = 1,
+ tube = {
+ connect_sides = {front = 1, back = 1, left = 1, right = 1, top = 1, bottom = 1},
+ priority = 50
+ },
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig
+ }
+ if style == "6d" then
+ nodedef.paramtype2 = "facedir"
+ end
+
+ if special == nil then special = {} end
+
+ for key, value in pairs(special) do
+ --if key == "after_dig_node" or key == "after_place_node" then
+ -- nodedef[key.."_"] = value
+ if key == "groups" then
+ for group, val in pairs(value) do
+ nodedef.groups[group] = val
+ end
+ elseif key == "tube" then
+ for key, val in pairs(value) do
+ nodedef.tube[key] = val
+ end
+ else
+ nodedef[key] = table.recursive_replace(value, "#id", tname)
+ end
+ end
+
+ minetest.register_node(rname, nodedef)
+end
+
+local register_all_tubes = function(name, desc, plain, noctrs, ends, short, inv, special, old_registration)
+ if old_registration then
+ for xm = 0, 1 do
+ for xp = 0, 1 do
+ for ym = 0, 1 do
+ for yp = 0, 1 do
+ for zm = 0, 1 do
+ for zp = 0, 1 do
+ local connects = {}
+ if xm == 1 then
+ connects[#connects+1] = 1
+ end
+ if xp == 1 then
+ connects[#connects+1] = 2
+ end
+ if ym == 1 then
+ connects[#connects+1] = 3
+ end
+ if yp == 1 then
+ connects[#connects+1] = 4
+ end
+ if zm == 1 then
+ connects[#connects+1] = 5
+ end
+ if zp == 1 then
+ connects[#connects+1] = 6
+ end
+ local tname = xm..xp..ym..yp..zm..zp
+ register_one_tube(name, tname, "000000", desc, plain, noctrs, ends, short, inv, special, connects, "old")
+ end
+ end
+ end
+ end
+ end
+ end
+ else
+ -- 6d tubes: uses only 10 nodes instead of 64, but the textures must be rotated
+ local cconnects = {{}, {1}, {1, 2}, {1, 3}, {1, 3, 5}, {1, 2, 3}, {1, 2, 3, 5}, {1, 2, 3, 4}, {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5, 6}}
+ for index, connects in ipairs(cconnects) do
+ register_one_tube(name, tostring(index), "1", desc, plain, noctrs, ends, short, inv, special, connects, "6d")
+ end
+ if REGISTER_COMPATIBILITY then
+ local cname = name.."_compatibility"
+ minetest.register_node(cname, {
+ drawtype = "airlike",
+ style = "6d",
+ basename = name,
+ inventory_image = inv,
+ wield_image = inv,
+ paramtype = "light",
+ sunlight_propagates = true,
+ description = "Pneumatic tube segment (legacy)",
+ after_place_node = pipeworks.after_place,
+ groups = {not_in_creative_inventory = 1, tube_to_update = 1, tube = 1},
+ tube = {connect_sides = {front = 1, back = 1, left = 1, right = 1, top = 1, bottom = 1}},
+ drop = name.."_1",
+ })
+ table.insert(tubenodes, cname)
+ for xm = 0, 1 do
+ for xp = 0, 1 do
+ for ym = 0, 1 do
+ for yp = 0, 1 do
+ for zm = 0, 1 do
+ for zp = 0, 1 do
+ local tname = xm..xp..ym..yp..zm..zp
+ minetest.register_alias(name.."_"..tname, cname)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+pipeworks.register_tube = function(name, def, ...)
+ if type(def) == "table" then
+ register_all_tubes(name, def.description,
+ def.plain, def.noctr, def.ends, def.short,
+ def.inventory_image, def.node_def, def.no_facedir)
+ else
+ -- we assert to be the old function with the second parameter being the description
+ -- function(name, desc, plain, noctrs, ends, short, inv, special, old_registration)
+ assert(type(def) == "string", "invalid arguments to pipeworks.register_tube")
+ register_all_tubes(name, def, ...)
+ end
+end
+
+
+if REGISTER_COMPATIBILITY then
+ minetest.register_abm({
+ nodenames = {"group:tube_to_update"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local minp = vector.subtract(pos, 1)
+ local maxp = vector.add(pos, 1)
+ if table.getn(minetest.find_nodes_in_area(minp, maxp, "ignore")) == 0 then
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ end
+ })
+end
diff --git a/pipeworks/vacuum_tubes.lua b/pipeworks/vacuum_tubes.lua
new file mode 100644
index 0000000..51f6f81
--- /dev/null
+++ b/pipeworks/vacuum_tubes.lua
@@ -0,0 +1,122 @@
+if pipeworks.enable_sand_tube then
+ pipeworks.register_tube("pipeworks:sand_tube", {
+ description = "Vacuuming Pneumatic Tube Segment",
+ inventory_image = "pipeworks_sand_tube_inv.png",
+ short = "pipeworks_sand_tube_short.png",
+ noctr = { "pipeworks_sand_tube_noctr.png" },
+ plain = { "pipeworks_sand_tube_plain.png" },
+ ends = { "pipeworks_sand_tube_end.png" },
+ node_def = { groups = {vacuum_tube = 1}},
+ })
+
+ minetest.register_craft( {
+ output = "pipeworks:sand_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "group:sand", "group:sand", "group:sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+
+ minetest.register_craft( {
+ output = "pipeworks:sand_tube_1",
+ recipe = {
+ { "group:sand", "pipeworks:tube_1", "group:sand" },
+ },
+ })
+end
+
+if pipeworks.enable_mese_sand_tube then
+ pipeworks.register_tube("pipeworks:mese_sand_tube", {
+ description = "Adjustable Vacuuming Pneumatic Tube Segment",
+ inventory_image = "pipeworks_mese_sand_tube_inv.png",
+ short = "pipeworks_mese_sand_tube_short.png",
+ noctr = { "pipeworks_mese_sand_tube_noctr.png" },
+ plain = { "pipeworks_mese_sand_tube_plain.png" },
+ ends = { "pipeworks_mese_sand_tube_end.png" },
+ node_def = {
+ groups = {vacuum_tube = 1},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("dist", 0)
+ meta:set_string("formspec", "size[2.1,0.8]"..
+ "image[0,0;1,1;pipeworks_mese_sand_tube_inv.png]"..
+ "field[1.3,0.4;1,1;dist;radius;${dist}]"..
+ default.gui_bg..
+ default.gui_bg_img)
+ meta:set_string("infotext", "Adjustable Vacuuming Pneumatic Tube Segment")
+ end,
+ on_receive_fields = function(pos,formname,fields,sender)
+ if not pipeworks.may_configure(pos, sender) then return end
+ local meta = minetest.get_meta(pos)
+ local dist = tonumber(fields.dist)
+ if dist then
+ dist = math.max(0, dist)
+ dist = math.min(8, dist)
+ meta:set_int("dist", dist)
+ meta:set_string("infotext", ("Adjustable Vacuuming Pneumatic Tube Segment (%dm)"):format(dist))
+ end
+ end,
+ },
+ })
+
+ minetest.register_craft( {
+ output = "pipeworks:mese_sand_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "group:sand", "default:mese_crystal", "group:sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "pipeworks:mese_sand_tube_1",
+ recipe = {
+ "pipeworks:sand_tube_1",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment"
+ },
+ })
+end
+
+local sqrt_3 = math.sqrt(3)
+local tube_inject_item = pipeworks.tube_inject_item
+local get_objects_inside_radius = minetest.get_objects_inside_radius
+local function vacuum(pos, radius)
+ radius = radius + 0.5
+ for _, object in pairs(get_objects_inside_radius(pos, sqrt_3 * radius)) do
+ local lua_entity = object:get_luaentity()
+ if not object:is_player() and lua_entity and lua_entity.name == "__builtin:item" then
+ local obj_pos = object:getpos()
+ local x1, y1, z1 = pos.x, pos.y, pos.z
+ local x2, y2, z2 = obj_pos.x, obj_pos.y, obj_pos.z
+
+ if x1 - radius <= x2 and x2 <= x1 + radius
+ and y1 - radius <= y2 and y2 <= y1 + radius
+ and z1 - radius <= z2 and z2 <= z1 + radius then
+ if lua_entity.itemstring ~= "" then
+ tube_inject_item(pos, pos, vector.new(0, 0, 0), lua_entity.itemstring)
+ lua_entity.itemstring = ""
+ end
+ object:remove()
+ end
+ end
+ end
+end
+
+minetest.register_abm({nodenames = {"group:vacuum_tube"},
+ interval = 1,
+ chance = 1,
+ label = "Vacuum tubes",
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ if node.name:find("pipeworks:sand_tube") then
+ vacuum(pos, 2)
+ else
+ local radius = minetest.get_meta(pos):get_int("dist")
+ vacuum(pos, radius)
+ end
+ end
+})
diff --git a/pipeworks/wielder.lua b/pipeworks/wielder.lua
new file mode 100644
index 0000000..3cb1649
--- /dev/null
+++ b/pipeworks/wielder.lua
@@ -0,0 +1,456 @@
+local assumed_eye_pos = vector.new(0, 1.5, 0)
+
+local function vector_copy(v)
+ return { x = v.x, y = v.y, z = v.z }
+end
+
+local function delay(x)
+ return (function() return x end)
+end
+
+local function set_wielder_formspec(data, meta)
+ meta:set_string("formspec",
+ "invsize[8,"..(6+data.wield_inv_height)..";]"..
+ "item_image[0,0;1,1;"..data.name_base.."_off]"..
+ "label[1,0;"..minetest.formspec_escape(data.description).."]"..
+ "list[current_name;"..minetest.formspec_escape(data.wield_inv_name)..";"..((8-data.wield_inv_width)*0.5)..",1;"..data.wield_inv_width..","..data.wield_inv_height..";]"..
+ "list[current_player;main;0,"..(2+data.wield_inv_height)..";8,4;]")
+ meta:set_string("infotext", data.description)
+end
+
+local function wielder_on(data, wielder_pos, wielder_node)
+ data.fixup_node(wielder_pos, wielder_node)
+ if wielder_node.name ~= data.name_base.."_off" then return end
+ wielder_node.name = data.name_base.."_on"
+ minetest.swap_node(wielder_pos, wielder_node)
+ nodeupdate(wielder_pos)
+ local wielder_meta = minetest.get_meta(wielder_pos)
+ local inv = wielder_meta:get_inventory()
+ local wield_inv_name = data.wield_inv_name
+ local wieldindex, wieldstack
+ for i, stack in ipairs(inv:get_list(wield_inv_name)) do
+ if not stack:is_empty() then
+ wieldindex = i
+ wieldstack = stack
+ break
+ end
+ end
+ if not wieldindex then
+ if not data.ghost_inv_name then return end
+ wield_inv_name = data.ghost_inv_name
+ inv:set_stack(wield_inv_name, 1, ItemStack(data.ghost_tool))
+ wieldindex = 1
+ wieldstack = inv:get_stack(wield_inv_name, 1)
+ end
+ local dir = minetest.facedir_to_dir(wielder_node.param2)
+ -- under/above is currently intentionally left switched
+ -- even though this causes some problems with deployers and e.g. seeds
+ -- as there are some issues related to nodebreakers otherwise breaking 2 nodes afar.
+ -- solidity would have to be checked as well,
+ -- but would open a whole can of worms related to difference in nodebreaker/deployer behavior
+ -- and the problems of wielders acting on themselves if below is solid
+ local under_pos = vector.subtract(wielder_pos, dir)
+ local above_pos = vector.subtract(under_pos, dir)
+ local pitch
+ local yaw
+ if dir.z < 0 then
+ yaw = 0
+ pitch = 0
+ elseif dir.z > 0 then
+ yaw = math.pi
+ pitch = 0
+ elseif dir.x < 0 then
+ yaw = 3*math.pi/2
+ pitch = 0
+ elseif dir.x > 0 then
+ yaw = math.pi/2
+ pitch = 0
+ elseif dir.y > 0 then
+ yaw = 0
+ pitch = -math.pi/2
+ else
+ yaw = 0
+ pitch = math.pi/2
+ end
+ local virtplayer = {
+ get_inventory_formspec = delay(wielder_meta:get_string("formspec")),
+ get_look_dir = delay(vector.multiply(dir, -1)),
+ get_look_pitch = delay(pitch),
+ get_look_yaw = delay(yaw),
+ get_player_control = delay({ jump=false, right=false, left=false, LMB=false, RMB=false, sneak=data.sneak, aux1=false, down=false, up=false }),
+ get_player_control_bits = delay(data.sneak and 64 or 0),
+ get_player_name = delay(data.masquerade_as_owner and wielder_meta:get_string("owner") or ":pipeworks:"..minetest.pos_to_string(wielder_pos)),
+ is_player = delay(true),
+ is_fake_player = true,
+ set_inventory_formspec = delay(),
+ getpos = delay(vector.subtract(wielder_pos, assumed_eye_pos)),
+ get_hp = delay(20),
+ get_inventory = delay(inv),
+ get_wielded_item = delay(wieldstack),
+ get_wield_index = delay(wieldindex),
+ get_wield_list = delay(wield_inv_name),
+ moveto = delay(),
+ punch = delay(),
+ remove = delay(),
+ right_click = delay(),
+ setpos = delay(),
+ set_hp = delay(),
+ set_properties = delay(),
+ set_wielded_item = function(self, item)
+ wieldstack = item
+ inv:set_stack(wield_inv_name, wieldindex, item)
+ end,
+ set_animation = delay(),
+ set_attach = delay(),
+ set_detach = delay(),
+ set_bone_position = delay(),
+ hud_change = delay(),
+ get_breath = delay(11),
+ -- TODO "implement" all these
+ -- set_armor_groups
+ -- get_armor_groups
+ -- get_animation
+ -- get_attach
+ -- get_bone_position
+ -- get_properties
+ -- get_player_velocity
+ -- set_look_pitch
+ -- set_look_yaw
+ -- set_breath
+ -- set_physics_override
+ -- get_physics_override
+ -- hud_add
+ -- hud_remove
+ -- hud_get
+ -- hud_set_flags
+ -- hud_get_flags
+ -- hud_set_hotbar_itemcount
+ -- hud_get_hotbar_itemcount
+ -- hud_set_hotbar_image
+ -- hud_get_hotbar_image
+ -- hud_set_hotbar_selected_image
+ -- hud_get_hotbar_selected_image
+ -- hud_replace_builtin
+ -- set_sky
+ -- get_sky
+ -- override_day_night_ratio
+ -- get_day_night_ratio
+ -- set_local_animation
+ }
+ local pointed_thing = { type="node", under=under_pos, above=above_pos }
+ data.act(virtplayer, pointed_thing)
+ if data.eject_drops then
+ for i, stack in ipairs(inv:get_list("main")) do
+ if not stack:is_empty() then
+ pipeworks.tube_inject_item(wielder_pos, wielder_pos, dir, stack)
+ inv:set_stack("main", i, ItemStack(""))
+ end
+ end
+ end
+end
+
+local function wielder_off(data, pos, node)
+ if node.name == data.name_base.."_on" then
+ node.name = data.name_base.."_off"
+ minetest.swap_node(pos, node)
+ nodeupdate(pos)
+ end
+end
+
+local function register_wielder(data)
+ data.fixup_node = data.fixup_node or function (pos, node) end
+ data.fixup_oldmetadata = data.fixup_oldmetadata or function (m) return m end
+ for _, state in ipairs({ "off", "on" }) do
+ local groups = { snappy=2, choppy=2, oddly_breakable_by_hand=2, mesecon=2, tubedevice=1, tubedevice_receiver=1 }
+ if state == "on" then groups.not_in_creative_inventory = 1 end
+ local tile_images = {}
+ for _, face in ipairs({ "top", "bottom", "side2", "side1", "back", "front" }) do
+ table.insert(tile_images, data.texture_base.."_"..face..(data.texture_stateful[face] and "_"..state or "")..".png")
+ end
+ minetest.register_node(data.name_base.."_"..state, {
+ description = data.description,
+ tiles = tile_images,
+ mesecons = {
+ effector = {
+ rules = pipeworks.rules_all,
+ action_on = function (pos, node)
+ wielder_on(data, pos, node)
+ end,
+ action_off = function (pos, node)
+ wielder_off(data, pos, node)
+ end,
+ },
+ },
+ tube = {
+ can_insert = function(pos, node, stack, tubedir)
+ if not data.tube_permit_anteroposterior_insert then
+ local nodedir = minetest.facedir_to_dir(node.param2)
+ if vector.equals(tubedir, nodedir) or vector.equals(tubedir, vector.multiply(nodedir, -1)) then
+ return false
+ end
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item(data.wield_inv_name, stack)
+ end,
+ insert_object = function(pos, node, stack, tubedir)
+ if not data.tube_permit_anteroposterior_insert then
+ local nodedir = minetest.facedir_to_dir(node.param2)
+ if vector.equals(tubedir, nodedir) or vector.equals(tubedir, vector.multiply(nodedir, -1)) then
+ return stack
+ end
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item(data.wield_inv_name, stack)
+ end,
+ input_inventory = data.wield_inv_name,
+ connect_sides = data.tube_connect_sides,
+ can_remove = function(pos, node, stack, tubedir)
+ return stack:get_count()
+ end,
+ },
+ is_ground_content = true,
+ paramtype2 = "facedir",
+ tubelike = 1,
+ groups = groups,
+ sounds = default.node_sound_stone_defaults(),
+ drop = data.name_base.."_off",
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ set_wielder_formspec(data, meta)
+ local inv = meta:get_inventory()
+ inv:set_size(data.wield_inv_name, data.wield_inv_width*data.wield_inv_height)
+ if data.ghost_inv_name then
+ inv:set_size(data.ghost_inv_name, 1)
+ end
+ if data.eject_drops then
+ inv:set_size("main", 100)
+ end
+ end,
+ after_place_node = function (pos, placer)
+ pipeworks.scan_for_tube_objects(pos)
+ local placer_pos = placer:getpos()
+ if placer_pos and placer:is_player() then placer_pos = vector.add(placer_pos, assumed_eye_pos) end
+ if placer_pos then
+ local dir = vector.subtract(pos, placer_pos)
+ local node = minetest.get_node(pos)
+ node.param2 = minetest.dir_to_facedir(dir, true)
+ minetest.set_node(pos, node)
+ minetest.log("action", "real (6d) facedir: " .. node.param2)
+ end
+ minetest.get_meta(pos):set_string("owner", placer:get_player_name())
+ end,
+ can_dig = (data.can_dig_nonempty_wield_inv and delay(true) or function(pos, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:is_empty(data.wield_inv_name)
+ end),
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ -- The legacy-node fixup is done here in a
+ -- different form from the standard fixup,
+ -- rather than relying on a standard fixup
+ -- in an on_dig callback, because some
+ -- non-standard diggers (such as technic's
+ -- mining drill) don't respect on_dig.
+ oldmetadata = data.fixup_oldmetadata(oldmetadata)
+ for _, stack in ipairs(oldmetadata.inventory[data.wield_inv_name] or {}) do
+ if not stack:is_empty() then
+ minetest.add_item(pos, stack)
+ end
+ end
+ pipeworks.scan_for_tube_objects(pos)
+ end,
+ on_punch = data.fixup_node,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ if not pipeworks.may_configure(pos, player) then return 0 end
+ return count
+ end
+ })
+ end
+end
+
+if pipeworks.enable_node_breaker then
+ local data
+ data = {
+ name_base = "pipeworks:nodebreaker",
+ description = "Node Breaker",
+ texture_base = "pipeworks_nodebreaker",
+ texture_stateful = { top = true, bottom = true, side2 = true, side1 = true, front = true },
+ tube_connect_sides = { top=1, bottom=1, left=1, right=1, back=1 },
+ tube_permit_anteroposterior_insert = false,
+ wield_inv_name = "pick",
+ wield_inv_width = 1,
+ wield_inv_height = 1,
+ can_dig_nonempty_wield_inv = true,
+ ghost_inv_name = "ghost_pick",
+ ghost_tool = "default:pick_mese",
+ fixup_node = function (pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ -- Node breakers predating the visible pick slot
+ -- may have been partially updated. This code
+ -- fully updates them. Some have been observed
+ -- to have no pick slot at all; first add one.
+ if inv:get_size("pick") ~= 1 then
+ inv:set_size("pick", 1)
+ end
+ -- Originally, they had a ghost pick in a "pick"
+ -- inventory, no other inventory, and no form.
+ -- The partial update of early with-form node
+ -- breaker code gives them "ghost_pick" and "main"
+ -- inventories, but leaves the old ghost pick in
+ -- the "pick" inventory, and doesn't add a form.
+ -- First perform that partial update.
+ if inv:get_size("ghost_pick") ~= 1 then
+ inv:set_size("ghost_pick", 1)
+ inv:set_size("main", 100)
+ end
+ -- If the node breaker predates the visible pick
+ -- slot, which we can detect by it not having a
+ -- form, then the pick slot needs to be cleared
+ -- of the old ghost pick.
+ if (meta:get_string("formspec") or "") == "" then
+ inv:set_stack("pick", 1, ItemStack(""))
+ end
+ -- Finally, unconditionally set the formspec
+ -- and infotext. This not only makes the
+ -- pick slot visible for node breakers where
+ -- it wasn't before; it also updates the form
+ -- for node breakers that had an older version
+ -- of the form, and sets infotext where it was
+ -- missing for early with-form node breakers.
+ set_wielder_formspec(data, meta)
+ end,
+ fixup_oldmetadata = function (oldmetadata)
+ -- Node breakers predating the visible pick slot,
+ -- with node form, kept their ghost pick in an
+ -- inventory named "pick", the same name as the
+ -- later visible pick slot. The pick must be
+ -- removed to avoid spilling it.
+ if not oldmetadata.fields.formspec then
+ return { inventory = { pick = {} }, fields = oldmetadata.fields }
+ else
+ return oldmetadata
+ end
+ end,
+ masquerade_as_owner = true,
+ sneak = false,
+ act = function(virtplayer, pointed_thing)
+ local wieldstack = virtplayer:get_wielded_item()
+ local oldwieldstack = ItemStack(wieldstack)
+ local on_use = (minetest.registered_items[wieldstack:get_name()] or {}).on_use
+ if on_use then
+ wieldstack = on_use(wieldstack, virtplayer, pointed_thing) or wieldstack
+ virtplayer:set_wielded_item(wieldstack)
+ else
+ local under_node = minetest.get_node(pointed_thing.under)
+ local on_dig = (minetest.registered_nodes[under_node.name] or {on_dig=minetest.node_dig}).on_dig
+ on_dig(pointed_thing.under, under_node, virtplayer)
+ wieldstack = virtplayer:get_wielded_item()
+ end
+ local wieldname = wieldstack:get_name()
+ if wieldname == oldwieldstack:get_name() then
+ -- don't mechanically wear out tool
+ if wieldstack:get_count() == oldwieldstack:get_count() and
+ wieldstack:get_metadata() == oldwieldstack:get_metadata() and
+ ((minetest.registered_items[wieldstack:get_name()] or {}).wear_represents or "mechanical_wear") == "mechanical_wear" then
+ virtplayer:set_wielded_item(oldwieldstack)
+ end
+ elseif wieldname ~= "" then
+ -- tool got replaced by something else:
+ -- treat it as a drop
+ virtplayer:get_inventory():add_item("main", wieldstack)
+ virtplayer:set_wielded_item(ItemStack(""))
+ end
+ end,
+ eject_drops = true,
+ }
+ register_wielder(data)
+ minetest.register_craft({
+ output = "pipeworks:nodebreaker_off",
+ recipe = {
+ { "group:wood", "default:pick_mese", "group:wood" },
+ { "default:stone", "mesecons:piston", "default:stone" },
+ { "default:stone", "mesecons:mesecon", "default:stone" },
+ }
+ })
+ -- aliases for when someone had technic installed, but then uninstalled it but not pipeworks
+ minetest.register_alias("technic:nodebreaker_off", "pipeworks:nodebreaker_off")
+ minetest.register_alias("technic:nodebreaker_on", "pipeworks:nodebreaker_on")
+ minetest.register_alias("technic:node_breaker_off", "pipeworks:nodebreaker_off")
+ minetest.register_alias("technic:node_breaker_on", "pipeworks:nodebreaker_on")
+ -- turn legacy auto-tree-taps into node breakers
+ dofile(pipeworks.modpath.."/legacy.lua")
+end
+
+if pipeworks.enable_deployer then
+ register_wielder({
+ name_base = "pipeworks:deployer",
+ description = "Deployer",
+ texture_base = "pipeworks_deployer",
+ texture_stateful = { front = true },
+ tube_connect_sides = { back=1 },
+ tube_permit_anteroposterior_insert = true,
+ wield_inv_name = "main",
+ wield_inv_width = 3,
+ wield_inv_height = 3,
+ can_dig_nonempty_wield_inv = false,
+ masquerade_as_owner = true,
+ sneak = false,
+ act = function(virtplayer, pointed_thing)
+ local wieldstack = virtplayer:get_wielded_item()
+ virtplayer:set_wielded_item((minetest.registered_items[wieldstack:get_name()] or {on_place=minetest.item_place}).on_place(wieldstack, virtplayer, pointed_thing) or wieldstack)
+ end,
+ eject_drops = false,
+ })
+ minetest.register_craft({
+ output = "pipeworks:deployer_off",
+ recipe = {
+ { "group:wood", "default:chest", "group:wood" },
+ { "default:stone", "mesecons:piston", "default:stone" },
+ { "default:stone", "mesecons:mesecon", "default:stone" },
+ }
+ })
+ -- aliases for when someone had technic installed, but then uninstalled it but not pipeworks
+ minetest.register_alias("technic:deployer_off", "pipeworks:deployer_off")
+ minetest.register_alias("technic:deployer_on", "pipeworks:deployer_on")
+end
+
+if pipeworks.enable_dispenser then
+ register_wielder({
+ name_base = "pipeworks:dispenser",
+ description = "Dispenser",
+ texture_base = "pipeworks_dispenser",
+ texture_stateful = { front = true },
+ tube_connect_sides = { back=1 },
+ tube_permit_anteroposterior_insert = true,
+ wield_inv_name = "main",
+ wield_inv_width = 3,
+ wield_inv_height = 3,
+ can_dig_nonempty_wield_inv = false,
+ masquerade_as_owner = false,
+ sneak = true,
+ act = function(virtplayer, pointed_thing)
+ local wieldstack = virtplayer:get_wielded_item()
+ virtplayer:set_wielded_item((minetest.registered_items[wieldstack:get_name()] or {on_drop=minetest.item_drop}).on_drop(wieldstack, virtplayer, virtplayer:getpos()) or wieldstack)
+ end,
+ eject_drops = false,
+ })
+ minetest.register_craft({
+ output = "pipeworks:dispenser_off",
+ recipe = {
+ { "default:desert_sand", "default:chest", "default:desert_sand" },
+ { "default:stone", "mesecons:piston", "default:stone" },
+ { "default:stone", "mesecons:mesecon", "default:stone" },
+ }
+ })
+end
diff --git a/plantlife_modpack/3dmushrooms/depends.txt b/plantlife_modpack/3dmushrooms/depends.txt
new file mode 100644
index 0000000..abb01ae
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/depends.txt
@@ -0,0 +1,2 @@
+default
+flowers
diff --git a/plantlife_modpack/3dmushrooms/init.lua b/plantlife_modpack/3dmushrooms/init.lua
new file mode 100644
index 0000000..369da9c
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/init.lua
@@ -0,0 +1,68 @@
+
+-- 3D Mushroom mod by VanessaE
+--
+-- License: WTFPL for everything.
+
+mushroom = {}
+
+minetest.override_item("flowers:mushroom_fertile_brown", {
+ drawtype = "mesh",
+ mesh = "3dmushrooms.obj",
+ tiles = {"3dmushrooms_brown.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
+ },
+ inventory_image = "3dmushrooms_brown_inv.png"
+})
+
+minetest.override_item("flowers:mushroom_brown", {
+ drawtype = "mesh",
+ mesh = "3dmushrooms.obj",
+ tiles = {"3dmushrooms_brown.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
+ },
+ inventory_image = "3dmushrooms_brown_inv.png"
+})
+
+minetest.override_item("flowers:mushroom_fertile_red", {
+ drawtype = "mesh",
+ mesh = "3dmushrooms.obj",
+ tiles = {"3dmushrooms_red.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
+ },
+ inventory_image = "3dmushrooms_red_inv.png"
+})
+
+minetest.override_item("flowers:mushroom_red", {
+ drawtype = "mesh",
+ mesh = "3dmushrooms.obj",
+ tiles = {"3dmushrooms_red.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
+ },
+ inventory_image = "3dmushrooms_red_inv.png"
+})
+
+-- aliases to the default mushrooms
+
+minetest.register_alias("mushroom:brown", "flowers:mushroom_brown")
+minetest.register_alias("mushroom:brown_natural", "flowers:mushroom_fertile_brown")
+minetest.register_alias("mushroom:spore_brown", "flowers:mushroom_spores_brown")
+minetest.register_alias("mushroom:spore2", "flowers:mushroom_spores_brown")
+minetest.register_alias("mushroom:brown_essence", "flowers:mushroom_brown")
+
+minetest.register_alias("mushroom:red", "flowers:mushroom_red")
+minetest.register_alias("mushroom:red_natural", "flowers:mushroom_fertile_red")
+minetest.register_alias("mushroom:spore_red", "flowers:mushroom_spores_red")
+minetest.register_alias("mushroom:spore1", "flowers:mushroom_spores_red")
+minetest.register_alias("mushroom:poison", "flowers:mushroom_red")
+
+minetest.register_alias("mushroom:identifier", "default:mese_crystal_fragment")
+
+print("[3D Mushrooms] loaded.")
diff --git a/plantlife_modpack/3dmushrooms/models/3dmushrooms.obj b/plantlife_modpack/3dmushrooms/models/3dmushrooms.obj
new file mode 100644
index 0000000..bce1ed6
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/models/3dmushrooms.obj
@@ -0,0 +1,329 @@
+# Blender v2.73 (sub 0) OBJ File: 'plantlife_mushroom.blend'
+# www.blender.org
+o Cylinder
+v 0.261489 -0.177877 -0.000000
+v 0.165972 -0.203714 -0.000000
+v 0.210761 -0.224729 -0.000000
+v 0.258520 -0.211811 -0.000000
+v 0.185335 -0.171215 -0.184553
+v 0.116925 -0.199423 -0.118862
+v 0.148161 -0.219252 -0.151707
+v 0.182366 -0.205148 -0.184553
+v 0.001484 -0.155130 -0.260997
+v -0.001484 -0.189063 -0.168096
+v -0.002969 -0.206030 -0.214547
+v -0.001484 -0.189063 -0.260997
+v -0.182366 -0.139045 -0.184553
+v -0.119894 -0.178704 -0.118862
+v -0.154099 -0.192808 -0.151707
+v -0.185335 -0.172979 -0.184553
+v -0.258520 -0.132382 -0.000000
+v -0.168941 -0.174413 -0.000000
+v -0.216699 -0.187331 -0.000000
+v -0.261489 -0.166316 -0.000000
+v -0.182366 -0.139045 0.184553
+v -0.119894 -0.178704 0.118862
+v -0.154099 -0.192808 0.151707
+v -0.185335 -0.172979 0.184553
+v 0.001484 -0.155130 0.260997
+v -0.001484 -0.189063 0.168096
+v -0.002969 -0.206030 0.214547
+v -0.001484 -0.189063 0.260997
+v 0.185335 -0.171215 0.184553
+v 0.116925 -0.199423 0.118862
+v 0.148161 -0.219252 0.151708
+v 0.182366 -0.205148 0.184553
+v 0.059333 -0.075538 0.000000
+v 0.044915 -0.074277 -0.034942
+v 0.010106 -0.071232 -0.049416
+v -0.024704 -0.068186 -0.034942
+v -0.039122 -0.066925 0.000000
+v -0.024704 -0.068186 0.034942
+v 0.010106 -0.071232 0.049416
+v 0.044915 -0.074277 0.034942
+v 0.004580 -0.119744 -0.206430
+v 0.149993 -0.132466 -0.145968
+v 0.004580 -0.119744 0.206430
+v -0.140833 -0.107022 0.145968
+v 0.210225 -0.137736 -0.000000
+v 0.149993 -0.132466 0.145968
+v -0.201064 -0.101752 -0.000000
+v -0.140833 -0.107022 -0.145968
+v 0.033054 -0.500000 -0.079800
+v 0.025067 -0.177627 -0.060518
+v 0.079800 -0.500000 -0.033054
+v 0.060518 -0.177627 -0.025067
+v 0.079800 -0.500000 0.033054
+v 0.060518 -0.177627 0.025067
+v 0.033054 -0.500000 0.079800
+v 0.025067 -0.177627 0.060518
+v -0.033054 -0.500000 0.079800
+v -0.025067 -0.177627 0.060518
+v -0.079800 -0.500000 0.033054
+v -0.060518 -0.177627 0.025067
+v -0.079800 -0.500000 -0.033054
+v -0.060518 -0.177627 -0.025067
+v -0.033054 -0.500000 -0.079800
+v -0.025067 -0.177627 -0.060518
+v 0.014323 -0.253674 -0.065067
+v 0.012105 -0.382623 -0.072780
+v 0.052438 -0.253674 -0.026952
+v 0.054739 -0.382623 -0.030146
+v 0.052438 -0.253674 0.026952
+v 0.054739 -0.382623 0.030146
+v 0.014323 -0.253674 0.065067
+v 0.012105 -0.382623 0.072780
+v -0.039580 -0.253674 0.065067
+v -0.048187 -0.382623 0.072780
+v -0.077695 -0.253674 0.026952
+v -0.090820 -0.382623 0.030146
+v -0.077695 -0.253674 -0.026952
+v -0.090820 -0.382623 -0.030146
+v -0.039580 -0.253674 -0.065067
+v -0.048187 -0.382623 -0.072780
+vt 0.261010 0.917920
+vt 0.235559 0.983636
+vt 0.016350 0.764426
+vt 0.080814 0.737724
+vt 0.545568 0.235207
+vt 0.764778 0.454417
+vt 0.690996 0.484978
+vt 0.517617 0.311599
+vt 0.235559 0.235207
+vt 0.515845 0.302693
+vt 0.261010 0.302693
+vt 0.578125 0.234375
+vt 0.765625 0.234375
+vt 0.765625 0.312500
+vt 0.578125 0.312500
+vt 0.015625 0.234375
+vt 0.203125 0.234375
+vt 0.203125 0.312500
+vt 0.015625 0.312500
+vt 0.390625 0.312500
+vt 0.578125 0.390625
+vt 0.390625 0.390625
+vt 0.016350 0.454417
+vt 0.080814 0.482889
+vt 0.545569 0.983636
+vt 0.515845 0.917920
+vt 0.099043 0.730173
+vt 0.272422 0.903553
+vt 0.290733 0.368408
+vt 0.490395 0.368408
+vt 0.149550 0.709253
+vt 0.149550 0.509591
+vt 0.764778 0.764426
+vt 0.696041 0.737725
+vt 0.696041 0.482889
+vt 0.099043 0.484978
+vt 0.203125 0.390625
+vt 0.765625 0.390625
+vt 0.272422 0.311599
+vt 0.631577 0.509591
+vt 0.390625 0.234375
+vt 0.517617 0.903553
+vt 0.690996 0.730173
+vt 0.432320 0.675133
+vt 0.473823 0.633629
+vt 0.015625 0.390625
+vt 0.490395 0.850435
+vt 0.290733 0.850435
+vt 0.631577 0.709253
+vt 0.373624 0.533431
+vt 0.332121 0.574934
+vt 0.473823 0.574934
+vt 0.432320 0.533431
+vt 0.332121 0.633630
+vt 0.373624 0.675133
+vt 0.935126 0.767633
+vt 0.998032 0.830539
+vt 0.998032 0.919502
+vt 0.935126 0.982408
+vt 0.846164 0.982408
+vt 0.783257 0.919502
+vt 0.783258 0.830539
+vt 0.846164 0.767633
+vt 0.375000 0.187500
+vt 0.375000 0.031250
+vt 0.500000 0.031250
+vt 0.500000 0.187500
+vt 0.625000 0.031250
+vt 0.625000 0.187500
+vt 0.750000 0.031250
+vt 0.750000 0.187500
+vt 0.875000 0.031250
+vt 0.875000 0.187500
+vt 1.000000 0.031250
+vt 1.000000 0.187500
+vt 0.000000 0.031250
+vt 0.125000 0.031250
+vt 0.125000 0.187500
+vt 0.000000 0.187500
+vt 0.250000 0.031250
+vt 0.250000 0.187500
+vt 0.542224 0.015885
+vt 0.601585 0.075246
+vt 0.601585 0.159195
+vt 0.542224 0.218556
+vt 0.458275 0.218556
+vt 0.398914 0.159195
+vt 0.398914 0.075246
+vt 0.458275 0.015885
+vt 0.625000 0.125000
+vt 0.500000 0.125000
+vt 0.750000 0.125000
+vt 0.875000 0.125000
+vt 1.000000 0.125000
+vt 0.125000 0.125000
+vt 0.000000 0.125000
+vt 0.250000 0.125000
+vt 0.375000 0.125000
+vn -0.147000 -0.987300 0.060400
+vn -0.648700 -0.460200 0.606100
+vn -0.898800 -0.438400 0.000000
+vn -0.172000 -0.985100 0.000000
+vn 0.672500 0.376500 0.637100
+vn 0.935400 0.353500 0.000000
+vn 0.529200 0.848500 0.000000
+vn 0.396700 0.860200 0.320400
+vn -0.044900 -0.513100 -0.857100
+vn 0.558900 -0.565900 -0.606100
+vn -0.026600 -0.997800 -0.060400
+vn -0.086800 -0.992500 -0.085500
+vn -0.044900 -0.513100 0.857100
+vn 0.037800 0.432000 0.901100
+vn -0.596900 0.487600 0.637100
+vn -0.648700 -0.460200 -0.606100
+vn -0.596900 0.487600 -0.637100
+vn 0.037800 0.432000 -0.901100
+vn 0.809000 -0.587800 0.000000
+vn 0.672500 0.376500 -0.637100
+vn -0.147000 -0.987300 -0.060400
+vn -0.086800 -0.992500 0.085500
+vn -0.859800 0.510500 0.000000
+vn -0.372100 0.928200 0.000000
+vn -0.240600 0.916500 -0.319400
+vn -0.085100 -0.972600 0.216400
+vn -0.237500 -0.959200 0.153000
+vn 0.130500 -0.991400 0.000000
+vn 0.067400 -0.985900 0.153000
+vn 0.558900 -0.565900 0.606100
+vn -0.026600 -0.997800 0.060400
+vn -0.001700 -1.000000 0.000000
+vn -0.240600 0.916500 0.319400
+vn 0.077500 0.888400 0.452400
+vn -0.300700 -0.953700 0.000000
+vn 0.077500 0.888400 -0.452400
+vn 0.396700 0.860200 -0.320400
+vn 0.086200 0.978700 -0.186300
+vn 0.217800 0.967000 -0.132200
+vn -0.085100 -0.972600 -0.216400
+vn 0.067400 -0.985900 -0.153000
+vn -0.237500 -0.959200 -0.153000
+vn 0.086200 0.978700 0.186300
+vn -0.044600 0.990300 0.131300
+vn 0.272600 0.962100 0.000000
+vn 0.217800 0.967000 0.132200
+vn -0.098600 0.995100 0.000000
+vn -0.044600 0.990300 -0.131300
+vn -0.273500 -0.626100 -0.730200
+vn -0.402500 0.040600 -0.914500
+vn 0.360300 0.084000 -0.929000
+vn 0.335600 -0.581700 -0.740900
+vn 0.369900 0.027700 -0.928600
+vn 0.921100 -0.031200 -0.388000
+vn 0.913800 0.116800 -0.388800
+vn 0.921100 -0.031200 0.388000
+vn 0.913800 0.116800 0.388800
+vn 0.369900 0.027700 0.928600
+vn 0.360300 0.084000 0.929000
+vn -0.391600 0.105700 0.914000
+vn -0.402500 0.040600 0.914500
+vn -0.914200 0.156600 0.373800
+vn -0.927200 0.012400 0.374500
+vn -0.914200 0.156600 -0.373800
+vn -0.927200 0.012400 -0.374500
+vn -0.391600 0.105700 -0.914000
+vn 0.774400 -0.552100 -0.309000
+vn 0.774400 -0.552100 0.309000
+vn 0.335600 -0.581700 0.740900
+vn -0.273500 -0.626100 0.730200
+vn -0.690800 -0.658600 0.298100
+vn -0.690800 -0.658600 -0.298100
+vn 0.416700 -0.004500 -0.909100
+vn 0.925800 -0.089300 -0.367400
+vn 0.925800 -0.089300 0.367400
+vn 0.416700 -0.004500 0.909100
+vn -0.344300 0.121400 0.931000
+vn -0.896600 0.212200 0.388700
+vn -0.896600 0.212200 -0.388700
+vn -0.344300 0.121400 -0.931000
+s 1
+f 23/1/1 24/2/2 20/3/3 19/4/4
+f 29/5/5 1/6/6 45/7/7 46/8/8
+f 12/9/9 8/5/10 7/10/11 11/11/12
+f 24/12/2 28/13/13 25/14/14 21/15/15
+f 12/16/9 16/17/16 13/18/17 9/19/18
+f 4/20/19 8/15/10 5/21/20 1/22/6
+f 16/23/16 12/9/9 11/11/12 15/24/21
+f 28/25/13 24/2/2 23/1/1 27/26/22
+f 13/2/17 17/3/23 47/27/24 48/28/25
+f 10/29/26 11/11/12 7/10/11 6/30/27
+f 18/31/28 19/4/4 15/24/21 14/32/29
+f 4/6/19 32/33/30 31/34/31 3/35/32
+f 17/3/23 21/23/15 44/36/33 47/27/24
+f 32/18/30 4/20/19 1/22/6 29/37/5
+f 8/5/10 4/6/19 3/35/32 7/10/11
+f 8/15/10 12/14/9 9/38/18 5/21/20
+f 25/9/14 29/5/5 46/8/8 43/39/34
+f 6/30/27 7/10/11 3/35/32 2/40/35
+f 16/17/16 20/41/3 17/20/23 13/18/17
+f 31/34/31 32/33/30 28/25/13 27/26/22
+f 5/33/20 9/25/18 41/42/36 42/43/37
+f 41/42/36 35/44/38 34/45/39 42/43/37
+f 15/24/21 11/11/12 10/29/26 14/32/29
+f 20/41/3 24/12/2 21/15/15 17/20/23
+f 1/6/6 5/33/20 42/43/37 45/7/7
+f 19/4/4 20/3/3 16/23/16 15/24/21
+f 28/19/13 32/18/30 29/37/5 25/46/14
+f 26/47/40 27/26/22 23/1/1 22/48/41
+f 21/23/15 25/9/14 43/39/34 44/36/33
+f 9/25/18 13/2/17 48/28/25 41/42/36
+f 23/1/1 19/4/4 18/31/28 22/48/41
+f 2/40/35 3/35/32 31/34/31 30/49/42
+f 43/39/34 39/50/43 38/51/44 44/36/33
+f 45/7/7 33/52/45 40/53/46 46/8/8
+f 42/43/37 34/45/39 33/52/45 45/7/7
+f 46/8/8 40/53/46 39/50/43 43/39/34
+f 44/36/33 38/51/44 37/54/47 47/27/24
+f 47/27/24 37/54/47 36/55/48 48/28/25
+f 48/28/25 36/55/48 35/44/38 41/42/36
+f 35/44/38 36/55/48 37/54/47 38/51/44 39/50/43 40/53/46 33/52/45 34/45/39
+f 6/56/27 2/57/35 30/58/42 26/59/40 22/60/41 18/61/28 14/62/29 10/63/26
+f 63/64/49 80/65/50 66/66/51 49/67/52
+f 65/66/53 67/68/54 68/69/55 66/67/51
+f 67/68/54 69/70/56 70/71/57 68/69/55
+f 69/70/56 71/72/58 72/73/59 70/71/57
+f 71/72/58 73/74/60 74/75/61 72/73/59
+f 73/76/60 75/77/62 76/78/63 74/79/61
+f 75/77/62 77/80/64 78/81/65 76/78/63
+f 77/80/64 79/65/66 80/64/50 78/81/65
+f 49/82/52 51/83/67 53/84/68 55/85/69 57/86/70 59/87/71 61/88/72 63/89/49
+f 50/66/73 52/68/74 67/90/54 65/91/53
+f 52/68/74 54/70/75 69/92/56 67/90/54
+f 66/66/51 68/68/55 51/69/67 49/67/52
+f 54/70/75 56/72/76 71/93/58 69/92/56
+f 68/68/55 70/70/57 53/71/68 51/69/67
+f 56/72/76 58/74/77 73/94/60 71/93/58
+f 70/70/57 72/72/59 55/73/69 53/71/68
+f 58/76/77 60/77/78 75/95/62 73/96/60
+f 72/72/59 74/74/61 57/75/70 55/73/69
+f 60/77/78 62/80/79 77/97/64 75/95/62
+f 74/76/61 76/77/63 59/78/71 57/79/70
+f 62/80/79 64/65/80 79/98/66 77/97/64
+f 76/77/63 78/80/65 61/81/72 59/78/71
+f 31/34/31 27/26/22 26/47/40 30/49/42
+f 78/80/65 80/65/50 63/64/49 61/81/72
+f 79/98/66 64/65/80 50/66/73 65/91/53
+f 79/65/66 65/66/53 66/67/51 80/64/50
diff --git a/plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown.png b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown.png
new file mode 100644
index 0000000..c36f524
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown.png
Binary files differ
diff --git a/plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown_inv.png b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown_inv.png
new file mode 100644
index 0000000..c9a7b3c
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_brown_inv.png
Binary files differ
diff --git a/plantlife_modpack/3dmushrooms/textures/3dmushrooms_red.png b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_red.png
new file mode 100644
index 0000000..dc80e32
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_red.png
Binary files differ
diff --git a/plantlife_modpack/3dmushrooms/textures/3dmushrooms_red_inv.png b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_red_inv.png
new file mode 100644
index 0000000..796f867
--- /dev/null
+++ b/plantlife_modpack/3dmushrooms/textures/3dmushrooms_red_inv.png
Binary files differ
diff --git a/plantlife_modpack/LICENSE b/plantlife_modpack/LICENSE
new file mode 100644
index 0000000..594ea2a
--- /dev/null
+++ b/plantlife_modpack/LICENSE
@@ -0,0 +1,336 @@
+Sunflower model and textures by kaeza (CC-BY-SA 3.0).
+
+For the code, Ironzorg's textures, and everything else: WTFPL
+
+For Mossmanikin's mods (Ferns, Dryplans, and the components
+from the Undergrowth modpack), and all of my own textures:
+CC-By-SA 3.0
+
+----------
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+ This license is also known as "WTFPL"
+
+-----------
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
+CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
+PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
+WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW
+IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
+AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS
+LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS
+YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE
+OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ "Collective Work" means a work, such as a periodical issue,
+anthology or encyclopedia, in which the Work in its entirety in
+unmodified form, along with one or more other contributions,
+constituting separate and independent works in themselves, are
+assembled into a collective whole. A work that constitutes a
+Collective Work will not be considered a Derivative Work (as
+defined below) for the purposes of this License.
+ "Creative Commons Compatible License" means a license that is
+listed at http://creativecommons.org/compatiblelicenses that has
+been approved by Creative Commons as being essentially equivalent
+to this License, including, at a minimum, because that license:
+(i) contains terms that have the same purpose, meaning and effect
+as the License Elements of this License; and, (ii) explicitly
+permits the relicensing of derivatives of works made available
+under that license under this License or either a Creative Commons
+unported license or a Creative Commons jurisdiction license with
+the same License Elements as this License.
+ "Derivative Work" means a work based upon the Work or upon the
+Work and other pre-existing works, such as a translation, musical
+arrangement, dramatization, fictionalization, motion picture
+version, sound recording, art reproduction, abridgment,
+condensation, or any other form in which the Work may be recast,
+transformed, or adapted, except that a work that constitutes a
+Collective Work will not be considered a Derivative Work for the
+purpose of this License. For the avoidance of doubt, where the
+Work is a musical composition or sound recording, the
+synchronization of the Work in timed-relation with a moving image
+("synching") will be considered a Derivative Work for the purpose
+of this License.
+ "License Elements" means the following high-level license
+attributes as selected by Licensor and indicated in the title of
+this License: Attribution, ShareAlike.
+ "Licensor" means the individual, individuals, entity or
+entities that offers the Work under the terms of this License.
+ "Original Author" means the individual, individuals, entity or
+entities who created the Work.
+ "Work" means the copyrightable work of authorship offered
+under the terms of this License.
+ "You" means an individual or entity exercising rights under
+this License who has not previously violated the terms of this
+License with respect to the Work, or who has received express
+permission from the Licensor to exercise rights under this License
+despite a previous violation.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce,
+limit, or restrict any rights arising from fair use, first sale or
+other limitations on the exclusive rights of the copyright owner
+under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this
+License, Licensor hereby grants You a worldwide, royalty-free,
+non-exclusive, perpetual (for the duration of the applicable
+copyright) license to exercise the rights in the Work as stated
+below:
+
+ to reproduce the Work, to incorporate the Work into one or
+more Collective Works, and to reproduce the Work as incorporated
+in the Collective Works;
+ to create and reproduce Derivative Works provided that any
+such Derivative Work, including any translation in any medium,
+takes reasonable steps to clearly label, demarcate or otherwise
+identify that changes were made to the original Work. For example,
+a translation could be marked "The original work was translated
+from English to Spanish," or a modification could indicate "The
+original work has been modified.";
+ to distribute copies or phonorecords of, display publicly,
+perform publicly, and perform publicly by means of a digital audio
+transmission the Work including as incorporated in Collective
+Works;
+ to distribute copies or phonorecords of, display publicly,
+perform publicly, and perform publicly by means of a digital audio
+transmission Derivative Works.
+
+ For the avoidance of doubt, where the Work is a musical
+composition:
+ Performance Royalties Under Blanket Licenses. Licensor
+waives the exclusive right to collect, whether individually or, in
+the event that Licensor is a member of a performance rights
+society (e.g. ASCAP, BMI, SESAC), via that society, royalties for
+the public performance or public digital performance (e.g.
+webcast) of the Work.
+ Mechanical Rights and Statutory Royalties. Licensor waives
+the exclusive right to collect, whether individually or via a
+music rights agency or designated agent (e.g. Harry Fox Agency),
+royalties for any phonorecord You create from the Work ("cover
+version") and distribute, subject to the compulsory license
+created by 17 USC Section 115 of the US Copyright Act (or the
+equivalent in other jurisdictions).
+ Webcasting Rights and Statutory Royalties. For the avoidance
+of doubt, where the Work is a sound recording, Licensor waives the
+exclusive right to collect, whether individually or via a
+performance-rights society (e.g. SoundExchange), royalties for the
+public digital performance (e.g. webcast) of the Work, subject to
+the compulsory license created by 17 USC Section 114 of the US
+Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether
+now known or hereafter devised. The above rights include the right
+to make such modifications as are technically necessary to
+exercise the rights in other media and formats. All rights not
+expressly granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is
+expressly made subject to and limited by the following
+restrictions:
+
+ You may distribute, publicly display, publicly perform, or
+publicly digitally perform the Work only under the terms of this
+License, and You must include a copy of, or the Uniform Resource
+Identifier for, this License with every copy or phonorecord of the
+Work You distribute, publicly display, publicly perform, or
+publicly digitally perform. You may not offer or impose any terms
+on the Work that restrict the terms of this License or the ability
+of a recipient of the Work to exercise of the rights granted to
+that recipient under the terms of the License. You may not
+sublicense the Work. You must keep intact all notices that refer
+to this License and to the disclaimer of warranties. When You
+distribute, publicly display, publicly perform, or publicly
+digitally perform the Work, You may not impose any technological
+measures on the Work that restrict the ability of a recipient of
+the Work from You to exercise of the rights granted to that
+recipient under the terms of the License. This Section 4(a)
+applies to the Work as incorporated in a Collective Work, but this
+does not require the Collective Work apart from the Work itself to
+be made subject to the terms of this License. If You create a
+Collective Work, upon notice from any Licensor You must, to the
+extent practicable, remove from the Collective Work any credit as
+required by Section 4(c), as requested. If You create a Derivative
+Work, upon notice from any Licensor You must, to the extent
+practicable, remove from the Derivative Work any credit as
+required by Section 4(c), as requested.
+ You may distribute, publicly display, publicly perform, or
+publicly digitally perform a Derivative Work only under: (i) the
+terms of this License; (ii) a later version of this License with
+the same License Elements as this License; (iii) either the
+Creative Commons (Unported) license or a Creative Commons
+jurisdiction license (either this or a later license version) that
+contains the same License Elements as this License (e.g.
+Attribution-ShareAlike 3.0 (Unported)); (iv) a Creative Commons
+Compatible License. If you license the Derivative Work under one
+of the licenses mentioned in (iv), you must comply with the terms
+of that license. If you license the Derivative Work under the
+terms of any of the licenses mentioned in (i), (ii) or (iii) (the
+"Applicable License"), you must comply with the terms of the
+Applicable License generally and with the following provisions:
+(I) You must include a copy of, or the Uniform Resource Identifier
+for, the Applicable License with every copy or phonorecord of each
+Derivative Work You distribute, publicly display, publicly
+perform, or publicly digitally perform; (II) You may not offer or
+impose any terms on the Derivative Works that restrict the terms
+of the Applicable License or the ability of a recipient of the
+Work to exercise the rights granted to that recipient under the
+terms of the Applicable License; (III) You must keep intact all
+notices that refer to the Applicable License and to the disclaimer
+of warranties; and, (IV) when You distribute, publicly display,
+publicly perform, or publicly digitally perform the Work, You may
+not impose any technological measures on the Derivative Work that
+restrict the ability of a recipient of the Derivative Work from
+You to exercise the rights granted to that recipient under the
+terms of the Applicable License. This Section 4(b) applies to the
+Derivative Work as incorporated in a Collective Work, but this
+does not require the Collective Work apart from the Derivative
+Work itself to be made subject to the terms of the Applicable
+License.
+ If You distribute, publicly display, publicly perform, or
+publicly digitally perform the Work (as defined in Section 1
+above) or any Derivative Works (as defined in Section 1 above) or
+Collective Works (as defined in Section 1 above), You must, unless
+a request has been made pursuant to Section 4(a), keep intact all
+copyright notices for the Work and provide, reasonable to the
+medium or means You are utilizing: (i) the name of the Original
+Author (or pseudonym, if applicable) if supplied, and/or (ii) if
+the Original Author and/or Licensor designate another party or
+parties (e.g. a sponsor institute, publishing entity, journal) for
+attribution ("Attribution Parties") in Licensor's copyright
+notice, terms of service or by other reasonable means, the name of
+such party or parties; the title of the Work if supplied; to the
+extent reasonably practicable, the Uniform Resource Identifier, if
+any, that Licensor specifies to be associated with the Work,
+unless such URI does not refer to the copyright notice or
+licensing information for the Work; and, consistent with Section
+3(b) in the case of a Derivative Work, a credit identifying the
+use of the Work in the Derivative Work (e.g., "French translation
+of the Work by Original Author," or "Screenplay based on original
+Work by Original Author"). The credit required by this Section
+4(c) may be implemented in any reasonable manner; provided,
+however, that in the case of a Derivative Work or Collective Work,
+at a minimum such credit will appear, if a credit for all
+contributing authors of the Derivative Work or Collective Work
+appears, then as part of these credits and in a manner at least as
+prominent as the credits for the other contributing authors. For
+the avoidance of doubt, You may only use the credit required by
+this Section for the purpose of attribution in the manner set out
+above and, by exercising Your rights under this License, You may
+not implicitly or explicitly assert or imply any connection with,
+sponsorship or endorsement by the Original Author, Licensor and/or
+Attribution Parties, as appropriate, of You or Your use of the
+Work, without the separate, express prior written permission of
+the Original Author, Licensor and/or Attribution Parties.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING,
+LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY
+RIGHTS HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR
+MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE
+WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE
+OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE
+OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT
+ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY
+NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
+APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
+LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE
+OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE
+WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+7. Termination
+
+ This License and the rights granted hereunder will terminate
+automatically upon any breach by You of the terms of this License.
+Individuals or entities who have received Derivative Works or
+Collective Works from You under this License, however, will not
+have their licenses terminated provided such individuals or
+entities remain in full compliance with those licenses. Sections
+1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ Subject to the above terms and conditions, the license granted
+here is perpetual (for the duration of the applicable copyright in
+the Work). Notwithstanding the above, Licensor reserves the right
+to release the Work under different license terms or to stop
+distributing the Work at any time; provided, however that any such
+election will not serve to withdraw this License (or any other
+license that has been, or is required to be, granted under the
+terms of this License), and this License will continue in full
+force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ Each time You distribute or publicly digitally perform the
+Work (as defined in Section 1 above) or a Collective Work (as
+defined in Section 1 above), the Licensor offers to the recipient
+a license to the Work on the same terms and conditions as the
+license granted to You under this License.
+ Each time You distribute or publicly digitally perform a
+Derivative Work, Licensor offers to the recipient a license to the
+original Work on the same terms and conditions as the license
+granted to You under this License.
+ If any provision of this License is invalid or unenforceable
+under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this License, and
+without further action by the parties to this agreement, such
+provision shall be reformed to the minimum extent necessary to
+make such provision valid and enforceable.
+ No term or provision of this License shall be deemed waived
+and no breach consented to unless such waiver or consent shall be
+in writing and signed by the party to be charged with such waiver
+or consent.
+ This License constitutes the entire agreement between the
+parties with respect to the Work licensed here. There are no
+understandings, agreements or representations with respect to the
+Work not specified here. Licensor shall not be bound by any
+additional provisions that may appear in any communication from
+You. This License may not be modified without the mutual written
+agreement of the Licensor and You.
+
+ Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no
+warranty whatsoever in connection with the Work. Creative Commons
+will not be liable to You or any party on any legal theory for any
+damages whatsoever, including without limitation any general,
+special, incidental or consequential damages arising in connection
+to this license. Notwithstanding the foregoing two (2) sentences,
+if Creative Commons has expressly identified itself as the
+Licensor hereunder, it shall have all rights and obligations of
+Licensor.
+
+ Except for the limited purpose of indicating to the public
+that the Work is licensed under the CCPL, Creative Commons does
+not authorize the use by either party of the trademark "Creative
+Commons" or any related trademark or logo of Creative Commons
+without the prior written consent of Creative Commons. Any
+permitted use will be in compliance with Creative Commons'
+then-current trademark usage guidelines, as may be published on
+its website or otherwise made available upon request from time to
+time. For the avoidance of doubt, this trademark restriction does
+not form part of this License.
+
+ Creative Commons may be contacted at
+http://creativecommons.org/.
+
diff --git a/plantlife_modpack/README b/plantlife_modpack/README
new file mode 100644
index 0000000..8c62e49
--- /dev/null
+++ b/plantlife_modpack/README
@@ -0,0 +1,72 @@
+README file for Plantlife mod, by Vanessa Ezekowitz
+---------------------------------------------------
+
+Plantlife is a combined form of my Flowers and Poison Ivy mods and an expanded
+version of the old Bushes mod, now called bushes_classic. The entire package
+has been significantly rewritten and re-organized. This mod supplies all
+three of these components and should be 100% compatible with mods that used
+the old versions.
+
+Its purpose is to add various kinds of flowers, cotton plants, water foliage,
+poison ivy, and fruit bushes, obviously. :-) All of these are spawned as
+normal nodes and can be collected and used in any recipes that depend on the
+old mods.
+
+Spawning of plants is sensitive to the amount of available light. Flowers,
+cotton, and waterlilies only spawn when there at least a signficant amount of
+light. Seaweed will grow only in dimly-lit areas. Poison ivy also grows only
+in the daytime, but require less light than flowers.
+
+Growing of poison ivy will only occur for plants that are on the same surface
+that is necessary for them to spawn on, so they won't grow if placed on e.g.
+cobble or homedecor flower pot, etc. This doesn't affect wall-climbing poison
+ivy, since it uses a different growth pattern.
+
+All plants use multiple controls provided by biome_lib, to keep where they
+grow under control - no more random spread of plants! In addition, the density
+of the plants in any region they appear in has been fixed and brought under
+control.
+
+Poison ivy is found sparsely among junglegrass, but will not grow near flowers.
+
+------------------------------------------------------------------------------
+
+Important details:
+
+Configuration: Any of the three components of this mod can be disabled
+by just removing their respective directories.
+
+Dependencies: Just the game's default stuff.
+
+Recommends: Nothing in particular.
+
+Conflicts: This mod should not be installed alongside the original, separate
+Poison Ivy, or old Bushes mods. If those exist, delete them, as this mod
+supplies their functionality. If you still use the old Jungle Grass mod
+either as previously supplied with this modpack, or in its standalone form,
+you'll want to delete the "junglegrass" directory from this modpack to get rid
+of the aliases-to-air that it supplies.
+
+Software Requirements: This mod requires Minetest 0.4.11 or later. It is
+unlikely to work with old versions.
+
+------------------------------------------------------------------------------
+
+Crafting:
+
+For crafting recipes, please see the forum thread for this modpack:
+
+https://forum.minetest.net/viewtopic.php?f=11&t=3898
+
+------------------------------------------------------------------------------
+
+Notes:
+
+Poison Ivy will spawn on grass and in some cases, on vertical surfaces
+including trees and jungle trees where they meet the dirt or grass. Ivy
+previously spawned on the ground taller/thicker or start climbing up said
+vertical surfaces and trees.
+
+At present, the poison ivy presents little more than an annoyance - they can
+only be cut down and either re-planted or thrown away. No damage is done by
+harvesting them, yet. ;-)
diff --git a/plantlife_modpack/along_shore/depends.txt b/plantlife_modpack/along_shore/depends.txt
new file mode 100644
index 0000000..a63765a
--- /dev/null
+++ b/plantlife_modpack/along_shore/depends.txt
@@ -0,0 +1,3 @@
+default
+biome_lib
+flowers_plus? \ No newline at end of file
diff --git a/plantlife_modpack/along_shore/init.lua b/plantlife_modpack/along_shore/init.lua
new file mode 100644
index 0000000..719d324
--- /dev/null
+++ b/plantlife_modpack/along_shore/init.lua
@@ -0,0 +1,9 @@
+-----------------------------------------------------------------------------------------------
+local title = "Along the Shore"
+local version = "0.0.4"
+local mname = "along_shore"
+-----------------------------------------------------------------------------------------------
+
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+----------------------------------------------------------------------------------------------- \ No newline at end of file
diff --git a/plantlife_modpack/along_shore/textures/along_shore_seaweed_1Darker.png b/plantlife_modpack/along_shore/textures/along_shore_seaweed_1Darker.png
new file mode 100644
index 0000000..b5bd99c
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/along_shore_seaweed_1Darker.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/credit_textures.txt b/plantlife_modpack/along_shore/textures/credit_textures.txt
new file mode 100644
index 0000000..89b4ce7
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/credit_textures.txt
@@ -0,0 +1,30 @@
+-------------------------------------------------------------
+Credit for textures of "along_shore"
+-------------------------------------------------------------
+(If more than one author is listed the names are in alphabetical order)
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+FOLDER TEXTURE AUTHORS
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+../along_shore/textures along_shore_seaweed_1Darker.png Neuromancer, VanessaE
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+../along_shore/textures/old (along_shore_empty.png) (Mossmanikin)
+ along_shore_lilypads_1.png Mossmanikin, Neuromancer
+ along_shore_lilypads_2.png Mossmanikin, Neuromancer
+ along_shore_lilypads_3.png Mossmanikin, Neuromancer
+ along_shore_lilypads_4.png Mossmanikin, Neuromancer
+ along_shore_pondscum_1.png Neuromancer
+ along_shore_seaweed_1.png Neuromancer, VanessaE
+ along_shore_seaweed_2.png Mossmanikin, Neuromancer, VanessaE
+ along_shore_seaweed_3.png Mossmanikin, Neuromancer, VanessaE
+ along_shore_seaweed_4.png Mossmanikin, Neuromancer, VanessaE
+ flowers_seaweed.png Neuromancer, VanessaE
+ flowers_waterlily.png Mossmanikin, VanessaE
+ flowers_waterlily_22.5.png Mossmanikin, VanessaE
+ flowers_waterlily_45.png Mossmanikin, VanessaE
+ flowers_waterlily_67.5.png Mossmanikin, VanessaE
+ lillypad3Flower16x.png Neuromancer
+ LillyPad3x16.png Neuromancer
+ lillyPad5x16.png Neuromancer
+ MultiLilly16x.png Neuromancer
+ pondscum16xc.png Neuromancer
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/plantlife_modpack/along_shore/textures/old/LillyPad3x16.png b/plantlife_modpack/along_shore/textures/old/LillyPad3x16.png
new file mode 100644
index 0000000..7d840bd
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/LillyPad3x16.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/MultiLilly16x.png b/plantlife_modpack/along_shore/textures/old/MultiLilly16x.png
new file mode 100644
index 0000000..474ad05
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/MultiLilly16x.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_empty.png b/plantlife_modpack/along_shore/textures/old/along_shore_empty.png
new file mode 100644
index 0000000..2f6464b
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_empty.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_1.png b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_1.png
new file mode 100644
index 0000000..a075ba9
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_1.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_2.png b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_2.png
new file mode 100644
index 0000000..90f5364
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_2.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_3.png b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_3.png
new file mode 100644
index 0000000..94d00d2
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_3.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_4.png b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_4.png
new file mode 100644
index 0000000..9b6387f
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_lilypads_4.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_pondscum_1.png b/plantlife_modpack/along_shore/textures/old/along_shore_pondscum_1.png
new file mode 100644
index 0000000..3502354
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_pondscum_1.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_1.png b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_1.png
new file mode 100644
index 0000000..7595ebc
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_1.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_2.png b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_2.png
new file mode 100644
index 0000000..0b24730
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_2.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_3.png b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_3.png
new file mode 100644
index 0000000..d9b7f43
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_3.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_4.png b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_4.png
new file mode 100644
index 0000000..887c183
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/along_shore_seaweed_4.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/flowers_seaweed.png b/plantlife_modpack/along_shore/textures/old/flowers_seaweed.png
new file mode 100644
index 0000000..7595ebc
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/flowers_seaweed.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/flowers_waterlily.png b/plantlife_modpack/along_shore/textures/old/flowers_waterlily.png
new file mode 100644
index 0000000..040a397
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/flowers_waterlily.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/flowers_waterlily_22.5.png b/plantlife_modpack/along_shore/textures/old/flowers_waterlily_22.5.png
new file mode 100644
index 0000000..c409bcb
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/flowers_waterlily_22.5.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/flowers_waterlily_45.png b/plantlife_modpack/along_shore/textures/old/flowers_waterlily_45.png
new file mode 100644
index 0000000..c870df4
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/flowers_waterlily_45.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/flowers_waterlily_67.5.png b/plantlife_modpack/along_shore/textures/old/flowers_waterlily_67.5.png
new file mode 100644
index 0000000..5b9291b
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/flowers_waterlily_67.5.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/lillyPad5x16.png b/plantlife_modpack/along_shore/textures/old/lillyPad5x16.png
new file mode 100644
index 0000000..761beb9
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/lillyPad5x16.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/lillypad3Flower16x.png b/plantlife_modpack/along_shore/textures/old/lillypad3Flower16x.png
new file mode 100644
index 0000000..541200f
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/lillypad3Flower16x.png
Binary files differ
diff --git a/plantlife_modpack/along_shore/textures/old/pondscum16xc.png b/plantlife_modpack/along_shore/textures/old/pondscum16xc.png
new file mode 100644
index 0000000..3502354
--- /dev/null
+++ b/plantlife_modpack/along_shore/textures/old/pondscum16xc.png
Binary files differ
diff --git a/plantlife_modpack/bushes/depends.txt b/plantlife_modpack/bushes/depends.txt
new file mode 100644
index 0000000..f82a423
--- /dev/null
+++ b/plantlife_modpack/bushes/depends.txt
@@ -0,0 +1,4 @@
+default
+biome_lib
+stonage?
+sumpf?
diff --git a/plantlife_modpack/bushes/init.lua b/plantlife_modpack/bushes/init.lua
new file mode 100644
index 0000000..3dc9801
--- /dev/null
+++ b/plantlife_modpack/bushes/init.lua
@@ -0,0 +1,257 @@
+-- Bushes Mod by Mossmanikin, Evergreen, & Neuromancer
+-- The initial code for this was taken from Mossmanikin's Grasses Mod, then heavilly modified by Neuromancer for this mod.
+-- Mossmanikin also greatly helped with providing samples for coding.
+-- bush leaf textures are cc-by-sa 3.0. from VannessaE's moretrees mod. (Leaf texture created by RealBadAngel or VanessaE)
+-- Branch textures created by Neuromancer.
+-- Licence for Code and Non-Bush leaf code is WTFPL.
+
+ abstract_bushes = {}
+
+ minetest.register_node("bushes:youngtree2_bottom", {
+ description = "Young Tree 2 (bottom)",
+ drawtype="nodebox",
+ tiles = {"bushes_youngtree2trunk.png"},
+ inventory_image = "bushes_youngtree2trunk_inv.png",
+ wield_image = "bushes_youngtree2trunk_inv.png",
+paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+node_box = {
+ type = "fixed",
+ fixed = {
+ --{0.375000,-0.500000,-0.500000,0.500000,0.500000,-0.375000}, --NodeBox 1
+ {-0.0612,-0.500000,-0.500000,0.0612,0.500000,-0.375000}, --NodeBox 1
+ }
+},
+ groups = {snappy=3,flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'default:stick'
+})
+
+ local BushBranchCenter = { {1,1}, {3,2} }
+for i in pairs(BushBranchCenter) do
+ local Num = BushBranchCenter[i][1]
+ local TexNum = BushBranchCenter[i][2]
+ minetest.register_node("bushes:bushbranches"..Num, {
+ description = "Bush Branches "..Num,
+ drawtype = "nodebox",
+ tiles = {
+ "bushes_leaves_"..TexNum..".png",
+ "bushes_branches_center_"..TexNum..".png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0, -1/2, -1/2, -1/4, 1/2, 1/2},
+ {0, -1/2, -1/2, 1/4, 1/2, 1/2}
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2},
+ },
+ inventory_image = "bushes_branches_center_"..TexNum..".png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ groups = {
+ -- tree=1, -- MM: disabled because some recipes use group:tree for trunks
+ snappy=3,
+ flammable=2,
+ leaves=1
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'default:stick 4'
+ })
+end
+
+local BushBranchSide = { {2,1}, {4,2} }
+for i in pairs(BushBranchSide) do
+ local Num = BushBranchSide[i][1]
+ local TexNum = BushBranchSide[i][2]
+ minetest.register_node("bushes:bushbranches"..Num, {
+ description = "Bush Branches "..Num,
+ drawtype = "nodebox",
+ tiles = {
+--[[top]] "bushes_leaves_"..TexNum..".png",
+--[[bottom]]"bushes_branches_center_"..TexNum..".png",
+--[[right]] "bushes_branches_left_"..TexNum..".png",
+--[[left]] "bushes_branches_right_"..TexNum..".png", -- MM: We could also mirror the previous here,
+--[[back]] "bushes_branches_center_"..TexNum..".png",-- unless U really want 'em 2 B different
+--[[front]] "bushes_branches_right_"..TexNum..".png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {
+-- { left , bottom , front, right , top , back }
+ {0.137748,-0.491944, 0.5 ,-0.125000,-0.179444,-0.007790}, --NodeBox 1
+ {0.262748,-0.185995, 0.5 ,-0.237252, 0.126505,-0.260269}, --NodeBox 2
+ {0.500000, 0.125000, 0.5 ,-0.500000, 0.500000,-0.500000}, --NodeBox 3
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2},
+ },
+ inventory_image = "bushes_branches_right_"..TexNum..".png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ groups = {
+ -- tree=1, -- MM: disabled because some recipes use group:tree for trunks
+ snappy=3,
+ flammable=2,
+ leaves=1
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'default:stick 3'
+ })
+end
+
+local BushLeafNode = { {1}, {2}}
+for i in pairs(BushLeafNode) do
+ local Num = BushLeafNode[i][1]
+ minetest.register_node("bushes:BushLeaves"..Num, {
+ description = "Bush Leaves "..Num,
+ drawtype = "allfaces_optional",
+ tiles = {"bushes_leaves_"..Num..".png"},
+ paramtype = "light",
+ groups = { -- MM: Should we add leafdecay?
+ snappy=3,
+ flammable=2,
+ attached_node=1
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ })
+end
+
+abstract_bushes.grow_bush = function(pos)
+ local leaf_type = math.random(1,2)
+ local bush_side_height = math.random(0,1)
+ local chance_of_bush_node_right = math.random(1,10)
+ if chance_of_bush_node_right> 5 then
+ local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z}
+ abstract_bushes.grow_bush_node(right_pos,3,leaf_type)
+ end
+ local chance_of_bush_node_left = math.random(1,10)
+ if chance_of_bush_node_left> 5 then
+ bush_side_height = math.random(0,1)
+ local left_pos = {x=pos.x-1, y=pos.y+bush_side_height, z=pos.z}
+ abstract_bushes.grow_bush_node(left_pos,1,leaf_type)
+ end
+ local chance_of_bush_node_front = math.random(1,10)
+ if chance_of_bush_node_front> 5 then
+ bush_side_height = math.random(0,1)
+ local front_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z+1}
+ abstract_bushes.grow_bush_node(front_pos,2,leaf_type)
+ end
+ local chance_of_bush_node_back = math.random(1,10)
+ if chance_of_bush_node_back> 5 then
+ bush_side_height = math.random(0,1)
+ local back_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z-1}
+ abstract_bushes.grow_bush_node(back_pos,0,leaf_type)
+ end
+
+abstract_bushes.grow_bush_node(pos,5,leaf_type)
+end
+
+abstract_bushes.grow_bush_node = function(pos,dir, leaf_type)
+
+
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z}
+
+ local bush_branch_type = 2
+
+ -- MM: I'm not sure if it's slower now than before...
+ if dir ~= 5 and leaf_type == 1 then
+ bush_branch_type = 2
+ end
+ if dir ~= 5 and leaf_type == 2 then
+ bush_branch_type = 4
+ end
+ if dir == 5 and leaf_type == 1 then
+ bush_branch_type = 1
+ dir = 1
+ end
+ if dir == 5 and leaf_type == 2 then
+ bush_branch_type = 3
+ dir = 1
+ end
+
+ if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
+ or minetest.get_node(right_here).name == "default:junglegrass" then
+ minetest.set_node(right_here, {name="bushes:bushbranches"..bush_branch_type , param2=dir})
+ --minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
+ minetest.set_node(above_right_here, {name="bushes:BushLeaves"..leaf_type})
+ local chance_of_high_leaves = math.random(1,10)
+ if chance_of_high_leaves> 5 then
+ local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
+ --minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
+ minetest.set_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type})
+ end
+ end
+end
+
+
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "stoneage:grass_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = 15, --10,15
+ rarity = 101 - 4, --3,4
+ min_elevation = 1, -- above sea level
+ plantlife_limit = -0.9,
+ },
+ abstract_bushes.grow_bush
+)
+
+ abstract_bushes.grow_youngtree2 = function(pos)
+ local height = math.random(4,5)
+ abstract_bushes.grow_youngtree_node2(pos,height)
+end
+
+abstract_bushes.grow_youngtree_node2 = function(pos, height)
+
+
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z}
+ local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
+ local three_above_right_here = {x=pos.x, y=pos.y+4, z=pos.z}
+
+ if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
+ or minetest.get_node(right_here).name == "default:junglegrass" then
+ if height == 4 then
+ local two_above_right_here_south = {x=pos.x, y=pos.y+3, z=pos.z-1}
+ local three_above_right_here_south = {x=pos.x, y=pos.y+4, z=pos.z-1}
+ minetest.set_node(right_here, {name="bushes:youngtree2_bottom"})
+ minetest.set_node(above_right_here, {name="bushes:youngtree2_bottom"})
+ minetest.set_node(two_above_right_here, {name="bushes:bushbranches2" , param2=2})
+ minetest.set_node(two_above_right_here_south, {name="bushes:bushbranches2" , param2=0})
+ minetest.set_node(three_above_right_here, {name="bushes:BushLeaves1" })
+ minetest.set_node(three_above_right_here_south, {name="bushes:BushLeaves1" })
+ end
+
+ end
+end
+
+
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "stoneage:grass_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = 55, --10,15
+ rarity = 101 - 4, --3,4
+ min_elevation = 1, -- above sea level
+ plantlife_limit = -0.9,
+ },
+ abstract_bushes.grow_youngtree2
+)
+
+ --http://dev.minetest.net/Node_Drawtypes
diff --git a/plantlife_modpack/bushes/textures/bushes_branches_center_1.png b/plantlife_modpack/bushes/textures/bushes_branches_center_1.png
new file mode 100644
index 0000000..bac3ee4
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_branches_center_1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_branches_center_2.png b/plantlife_modpack/bushes/textures/bushes_branches_center_2.png
new file mode 100644
index 0000000..c21edf6
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_branches_center_2.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_branches_left_1.png b/plantlife_modpack/bushes/textures/bushes_branches_left_1.png
new file mode 100644
index 0000000..120f100
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_branches_left_1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_branches_left_2.png b/plantlife_modpack/bushes/textures/bushes_branches_left_2.png
new file mode 100644
index 0000000..1c17bac
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_branches_left_2.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_branches_right_1.png b/plantlife_modpack/bushes/textures/bushes_branches_right_1.png
new file mode 100644
index 0000000..af5de67
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_branches_right_1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_branches_right_2.png b/plantlife_modpack/bushes/textures/bushes_branches_right_2.png
new file mode 100644
index 0000000..8fb8332
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_branches_right_2.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_leaves_1.png b/plantlife_modpack/bushes/textures/bushes_leaves_1.png
new file mode 100644
index 0000000..594c958
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_leaves_1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_leaves_2.png b/plantlife_modpack/bushes/textures/bushes_leaves_2.png
new file mode 100644
index 0000000..e6de482
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_leaves_2.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_youngtree2trunk.png b/plantlife_modpack/bushes/textures/bushes_youngtree2trunk.png
new file mode 100644
index 0000000..ea685e3
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_youngtree2trunk.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/bushes_youngtree2trunk_inv.png b/plantlife_modpack/bushes/textures/bushes_youngtree2trunk_inv.png
new file mode 100644
index 0000000..7d6728f
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/bushes_youngtree2trunk_inv.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BlockBranch1.png b/plantlife_modpack/bushes/textures/old & unused/BlockBranch1.png
new file mode 100644
index 0000000..28fe91f
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BlockBranch1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BlockBranch1L.png b/plantlife_modpack/bushes/textures/old & unused/BlockBranch1L.png
new file mode 100644
index 0000000..1d8a8e2
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BlockBranch1L.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BlockBranch1R.png b/plantlife_modpack/bushes/textures/old & unused/BlockBranch1R.png
new file mode 100644
index 0000000..514b888
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BlockBranch1R.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranches1.png b/plantlife_modpack/bushes/textures/old & unused/BushBranches1.png
new file mode 100644
index 0000000..5bb2b46
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranches1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm.png b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm.png
new file mode 100644
index 0000000..5574f38
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm2.png b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm2.png
new file mode 100644
index 0000000..6ffd2f3
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm2.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm3.png b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm3.png
new file mode 100644
index 0000000..5bb9bf5
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm3.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm4.png b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm4.png
new file mode 100644
index 0000000..b204fef
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranches1sm4.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranchesCenter.png b/plantlife_modpack/bushes/textures/old & unused/BushBranchesCenter.png
new file mode 100644
index 0000000..0c9b5af
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranchesCenter.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranchesSide1.png b/plantlife_modpack/bushes/textures/old & unused/BushBranchesSide1.png
new file mode 100644
index 0000000..ca95dd3
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranchesSide1.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/BushBranchesSide2.png b/plantlife_modpack/bushes/textures/old & unused/BushBranchesSide2.png
new file mode 100644
index 0000000..d62499e
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/BushBranchesSide2.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/blank.png b/plantlife_modpack/bushes/textures/old & unused/blank.png
new file mode 100644
index 0000000..ed495a8
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/blank.png
Binary files differ
diff --git a/plantlife_modpack/bushes/textures/old & unused/moretrees_pine_leaves3.png b/plantlife_modpack/bushes/textures/old & unused/moretrees_pine_leaves3.png
new file mode 100644
index 0000000..57d077d
--- /dev/null
+++ b/plantlife_modpack/bushes/textures/old & unused/moretrees_pine_leaves3.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/cooking.lua b/plantlife_modpack/bushes_classic/cooking.lua
new file mode 100644
index 0000000..c672975
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/cooking.lua
@@ -0,0 +1,118 @@
+local S = biome_lib.intllib
+
+-- Basket
+
+minetest.register_craft({
+ output = "bushes:basket_empty",
+ recipe = {
+ { "default:stick", "default:stick", "default:stick" },
+ { "", "default:stick", "" },
+ },
+})
+
+-- Sugar
+
+minetest.register_craftitem(":bushes:sugar", {
+ description = S("Sugar"),
+ inventory_image = "bushes_sugar.png",
+ on_use = minetest.item_eat(1),
+ groups = {food_sugar=1}
+})
+
+minetest.register_craft({
+ output = "bushes:sugar 1",
+ recipe = {
+ { "default:papyrus", "default:papyrus" },
+ },
+})
+
+for i, berry in ipairs(bushes_classic.bushes) do
+ local desc = bushes_classic.bushes_descriptions[i]
+
+ minetest.register_craftitem(":bushes:"..berry.."_pie_raw", {
+ description = S("Raw "..desc.." pie"),
+ inventory_image = "bushes_"..berry.."_pie_raw.png",
+ on_use = minetest.item_eat(4),
+ })
+
+ if berry ~= "mixed_berry" then
+
+ if berry == "strawberry" and minetest.registered_nodes["farming_plus:strawberry"] then
+ -- Special case for strawberries, when farming_plus is in use. Use
+ -- the item from that mod, but redefine it so it has the right
+ -- groups and does't look so ugly!
+ minetest.register_craftitem(":farming_plus:strawberry_item", {
+ description = S("Strawberry"),
+ inventory_image = "bushes_"..berry..".png",
+ on_use = minetest.item_eat(2),
+ groups = {berry=1, strawberry=1}
+ })
+ minetest.register_alias("bushes:strawberry", "farming_plus:strawberry_item")
+ else
+ minetest.register_craftitem(":bushes:"..berry, {
+ description = desc,
+ inventory_image = "bushes_"..berry..".png",
+ groups = {berry = 1, [berry] = 1},
+ on_use = minetest.item_eat(1),
+ })
+ end
+ minetest.register_craft({
+ output = "bushes:"..berry.."_pie_raw 1",
+ recipe = {
+ { "group:food_sugar", "farming:flour", "group:food_sugar" },
+ { "group:"..berry, "group:"..berry, "group:"..berry },
+ },
+ })
+ end
+
+ -- Cooked pie
+
+ minetest.register_craftitem(":bushes:"..berry.."_pie_cooked", {
+ description = S("Cooked "..desc.." pie"),
+ inventory_image = "bushes_"..berry.."_pie_cooked.png",
+ on_use = minetest.item_eat(6),
+ })
+
+ minetest.register_craft({
+ type = "cooking",
+ output = "bushes:"..berry.."_pie_cooked",
+ recipe = "bushes:"..berry.."_pie_raw",
+ cooktime = 30,
+ })
+
+ -- slice of pie
+
+ minetest.register_craftitem(":bushes:"..berry.."_pie_slice", {
+ description = S("Slice of "..desc.." pie"),
+ inventory_image = "bushes_"..berry.."_pie_slice.png",
+ on_use = minetest.item_eat(1),
+ })
+
+ minetest.register_craft({
+ output = "bushes:"..berry.."_pie_slice 6",
+ recipe = {
+ { "bushes:"..berry.."_pie_cooked" },
+ },
+ })
+
+ -- Basket with pies
+
+ minetest.register_craft({
+ output = "bushes:basket_"..berry.." 1",
+ recipe = {
+ { "bushes:"..berry.."_pie_cooked", "bushes:"..berry.."_pie_cooked", "bushes:"..berry.."_pie_cooked" },
+ { "", "bushes:basket_empty", "" },
+ },
+ })
+end
+
+minetest.register_craft({
+ output = "bushes:mixed_berry_pie_raw 2",
+ recipe = {
+ { "group:food_sugar", "farming:flour", "group:food_sugar" },
+ { "group:berry", "group:berry", "group:berry" },
+ { "group:berry", "group:berry", "group:berry" },
+ },
+})
+
+
diff --git a/plantlife_modpack/bushes_classic/depends.txt b/plantlife_modpack/bushes_classic/depends.txt
new file mode 100644
index 0000000..16347c6
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/depends.txt
@@ -0,0 +1,3 @@
+biome_lib
+farming?
+farming_plus?
diff --git a/plantlife_modpack/bushes_classic/image_credits.txt b/plantlife_modpack/bushes_classic/image_credits.txt
new file mode 100644
index 0000000..a4ddc51
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/image_credits.txt
@@ -0,0 +1,5 @@
+strawberry: http://www.clker.com/clipart-4060.html
+blueberry: http://www.clker.com/clipart-cerezafiro12.html
+blackberry: http://www.clker.com/clipart-blackberry-2.html
+raspberry: http://www.clker.com/clipart-simple-raspberry.html
+gooseberry: http://www.clker.com/clipart-26281.html
diff --git a/plantlife_modpack/bushes_classic/init.lua b/plantlife_modpack/bushes_classic/init.lua
new file mode 100644
index 0000000..021f569
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/init.lua
@@ -0,0 +1,59 @@
+-- Bushes classic mod originally by unknown
+-- now maintained by VanessaE
+--
+-- License: WTFPL
+
+local S = biome_lib.intllib
+
+bushes_classic = {}
+
+bushes_classic.bushes = {
+ "strawberry",
+ "blackberry",
+ "blueberry",
+ "raspberry",
+ "gooseberry",
+ "mixed_berry"
+}
+
+bushes_classic.bushes_descriptions = {
+ "Strawberry",
+ "Blackberry",
+ "Blueberry",
+ "Raspberry",
+ "Gooseberry",
+ "Mixed Berry"
+}
+
+bushes_classic.spawn_list = {}
+
+local modpath = minetest.get_modpath('bushes_classic')
+dofile(modpath..'/cooking.lua')
+dofile(modpath..'/nodes.lua')
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = 3600,
+ spawn_plants = bushes_classic.spawn_list,
+ avoid_radius = 10,
+ spawn_chance = 100,
+ spawn_surfaces = {
+ "default:dirt_with_grass",
+ "woodsoils:dirt_with_leaves_1",
+ "woodsoils:grass_with_leaves_1",
+ "woodsoils:grass_with_leaves_2",
+ "farming:soil",
+ "farming:soil_wet"
+ },
+ avoid_nodes = {"group:bush"},
+ seed_diff = 545342534, -- chosen by a fair mashing of the keyboard - guaranteed to be random :P
+ plantlife_limit = -0.1,
+ light_min = 10,
+ temp_min = 0.15, -- approx 20C
+ temp_max = -0.15, -- approx 35C
+ humidity_min = 0, -- 50% RH
+ humidity_max = -1, -- 100% RH
+})
+
+minetest.register_alias("bushes:basket_pies", "bushes:basket_strawberry")
+
+print(S("[Bushes] Loaded."))
diff --git a/plantlife_modpack/bushes_classic/locale/de.txt b/plantlife_modpack/bushes_classic/locale/de.txt
new file mode 100644
index 0000000..3724274
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/locale/de.txt
@@ -0,0 +1,43 @@
+# Translation by Xanthin
+
+Strawberry = Erdbeere
+Blackberry = Brombeere
+Blueberry = Blaubeere
+Raspberry = Himbeere
+Gooseberry = Stachelbeere
+Mixed Berry = Beerenmix
+Basket with Strawberry Pies = Korb mit Erdbeertorten
+Basket with Blackberry Pies = Korb mit Brombeertorten
+Basket with Blueberry Pies = Korb mit Blaubeertorten
+Basket with Raspberry Pies = Korb mit Himbeertorten
+Basket with Gooseberry Pies = Korb mit Stachelbeertorten
+Basket with Mixed Berry Pies = Korb mit Beerenmixtorten
+currently fruitless = zur Zeit fruechteloser
+Strawberry Bush = Erdbeerbusch
+Blackberry Bush = Brombeerbusch
+Blueberry Bush = Blaubeerbusch
+Raspberry Bush = Himbeerbusch
+Gooseberry Bush = Stachelbeerbusch
+Mixed Berry Bush = Beerenmixbusch
+Basket = Korb
+Sugar = Zucker
+Raw Strawberry pie = Rohe Erdbeertorte
+Raw Blackberry pie = Rohe Brombeertorte
+Raw Blueberry pie = Rohe Blaubeertorte
+Raw Raspberry pie = Rohe Himbeertorte
+Raw Gooseberry pie = Rohe Stachelbeertorte
+Raw Mixed Berry pie = Rohe Beerenmixtorte
+Cooked Strawberry pie = Erdbeertorte
+Cooked Blackberry pie = Brombeertorte
+Cooked Blueberry pie = Blaubeertorte
+Cooked Raspberry pie = Himbeertorte
+Cooked Gooseberry pie = Stachelbeertorte
+Cooked Mixed Berry pie = Beerenmixtorte
+Slice of Strawberry pie = Erdbeertortenstueck
+Slice of Blackberry pie = Brombeertortenstueck
+Slice of Blueberry pie = Blaubeertortenstueck
+Slice of Raspberry pie = Himbeertortenstueck
+Slice of Gooseberry pie = Stachelbeertortenstueck
+Slice of Mixed Berry pie = Beerenmixtortenstueck
+
+[Bushes] Loaded. = [Bushes] Geladen.
diff --git a/plantlife_modpack/bushes_classic/locale/fr.txt b/plantlife_modpack/bushes_classic/locale/fr.txt
new file mode 100644
index 0000000..ce80613
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/locale/fr.txt
@@ -0,0 +1,43 @@
+# Template
+
+Strawberry = Fraise
+Blackberry = Mûre
+Blueberry = Myrtille
+Raspberry = Framboise
+Gooseberry = Groseille
+Mixed Berry = Mélange de baies
+Basket with Strawberry Pies = Panier de tartes aux fraises
+Basket with Blackberry Pies = Panier de tartes aux mûres
+Basket with Blueberry Pies = Panier de tartes aux myrtilles
+Basket with Raspberry Pies = Panier de tartes aux framboises
+Basket with Gooseberry Pies = Panier de tartes aux groseilles
+Basket with Mixed Berry Pies = Panier de tartes au mélange de baies
+currently fruitless = actuellement sans fruit
+Strawberry Bush = Buisson à fraise
+Blackberry Bush = Buisson à mûre
+Blueberry Bush = Buisson à myrtille
+Raspberry Bush = Buisson à framboise
+Gooseberry Bush = Buisson à groseille
+Mixed Berry Bush = Buisson de baies mélangées
+Basket = Panier
+Sugar = Sucre
+Raw Strawberry pie = Tarte crue aux fraises
+Raw Blackberry pie = Tarte crue aux mûres
+Raw Blueberry pie = Tarte crue aux myrtilles
+Raw Raspberry pie = Tarte crue aux framboises
+Raw Gooseberry pie = Tarte crue aux groseilles
+Raw Mixed Berry pie = Tarte crue au mélange de baies
+Cooked Strawberry pie = Tarte cuite aux fraises
+Cooked Blackberry pie = Tarte cuite aux mûres
+Cooked Blueberry pie = Tarte cuite aux myrtilles
+Cooked Raspberry pie = Tarte cuite aux framboises
+Cooked Gooseberry pie = Tarte cuite aux groseilles
+Cooked Mixed Berry pie = Tarte cuite au mélange de baies
+Slice of Strawberry pie = Part de tarte aux fraises
+Slice of Blackberry pie = Part de tarte aux mûres
+Slice of Blueberry pie = Part de tarte aux myrtilles
+Slice of Raspberry pie = Part de tarts aux framboises
+Slice of Gooseberry pie = Part de tarte aux groseilles
+Slice of Mixed Berry pie = Part de tarte au mélange de baies
+
+[Bushes] Loaded. = [Buissons] Chargés.
diff --git a/plantlife_modpack/bushes_classic/locale/template.txt b/plantlife_modpack/bushes_classic/locale/template.txt
new file mode 100644
index 0000000..6c35312
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/locale/template.txt
@@ -0,0 +1,43 @@
+# Template
+
+Strawberry =
+Blackberry =
+Blueberry =
+Raspberry =
+Gooseberry =
+Mixed Berry =
+Basket with Strawberry Pies =
+Basket with Blackberry Pies =
+Basket with Blueberry Pies =
+Basket with Raspberry Pies =
+Basket with Gooseberry Pies =
+Basket with Mixed Berry Pies =
+currently fruitless =
+Strawberry Bush =
+Blackberry Bush =
+Blueberry Bush =
+Raspberry Bush =
+Gooseberry Bush =
+Mixed Berry Bush =
+Basket =
+Sugar =
+Raw Strawberry pie =
+Raw Blackberry pie =
+Raw Blueberry pie =
+Raw Raspberry pie =
+Raw Gooseberry pie =
+Raw Mixed Berry pie =
+Cooked Strawberry pie =
+Cooked Blackberry pie =
+Cooked Blueberry pie =
+Cooked Raspberry pie =
+Cooked Gooseberry pie =
+Cooked Mixed Berry pie =
+Slice of Strawberry pie =
+Slice of Blackberry pie =
+Slice of Blueberry pie =
+Slice of Raspberry pie =
+Slice of Gooseberry pie =
+Slice of Mixed Berry pie =
+
+[Bushes] Loaded. =
diff --git a/plantlife_modpack/bushes_classic/locale/tr.txt b/plantlife_modpack/bushes_classic/locale/tr.txt
new file mode 100644
index 0000000..0472921
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/locale/tr.txt
@@ -0,0 +1,44 @@
+# Turkish translation
+# mahmutelmas06@hotmail.com
+
+Strawberry = Çilek
+Blackberry = Böğürtlen
+Blueberry = Yaban mersini
+Raspberry = Ahududu
+Gooseberry = Bektaşi üzümü
+Mixed Berry = Dut
+Basket with Strawberry Pies = Çilekli pasta sepeti
+Basket with Blackberry Pies = Böğürtlenli pasta sepeti
+Basket with Blueberry Pies = Yaban mersini pastalı sepet
+Basket with Raspberry Pies = Ahududulu pasta sepeti
+Basket with Gooseberry Pies = Bektaşi üzümlü pasta sepeti
+Basket with Mixed Berry Pies = Dutlu pasta sepeti
+currently fruitless = ÅŸu anda meyvesiz
+Strawberry Bush = Çilek fidanı
+Blackberry Bush = Böğürtlen fidanı
+Blueberry Bush = Yaban mersini fidanı
+Raspberry Bush = Ahududu fidanı
+Gooseberry Bush = Bektaşi üzümü fidanı
+Mixed Berry Bush = Dut fidanı
+Basket = Sepet
+Sugar = Åžeker
+Raw Strawberry pie = Çilekli çiğ pasta
+Raw Blackberry pie = Böğürtlenli çiğ pasta
+Raw Blueberry pie = Yaban mersinli çiğ pasta
+Raw Raspberry pie = Ahududulu çiğ pasta
+Raw Gooseberry pie = Bektaşi üzümlü çiğ pasta
+Raw Mixed Berry pie = Dutlu çiğ pasta
+Cooked Strawberry pie = Pişmiş çilekli pasta
+Cooked Blackberry pie = Pişmiş böğürtlenli pasta
+Cooked Blueberry pie = PiÅŸmiÅŸ yaban mersinli pasta
+Cooked Raspberry pie = PiÅŸmiÅŸ ahududulu pasta
+Cooked Gooseberry pie = Pişmiş bektaşi üzümlü pasta
+Cooked Mixed Berry pie = PiÅŸmiÅŸ dutlu pasta
+Slice of Strawberry pie = Çilekli pasta dilimi
+Slice of Blackberry pie = Böğürtlenli pasta dilimi
+Slice of Blueberry pie = Yaban mersinli pasta dilimi
+Slice of Raspberry pie = Ahududulu pasta dilimi
+Slice of Gooseberry pie = Bektaşi üzümlü pasta dilimi
+Slice of Mixed Berry pie = Dutlu pasta dilimi
+
+[Bushes] Loaded. = [Bushes] yüklendi.
diff --git a/plantlife_modpack/bushes_classic/models/bushes_basket_empty.obj b/plantlife_modpack/bushes_classic/models/bushes_basket_empty.obj
new file mode 100644
index 0000000..0179c31
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/models/bushes_basket_empty.obj
@@ -0,0 +1,46 @@
+# Blender v2.73 (sub 0) OBJ File: 'basket-of-pies.blend'
+# www.blender.org
+o basket_Cube.001
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.437500 0.500000 0.437500
+v -0.437500 0.500000 -0.437500
+v 0.437500 0.500000 -0.437500
+v 0.437500 0.500000 0.437500
+v -0.437500 -0.437500 0.437500
+v -0.437500 -0.437500 -0.437500
+v 0.437500 -0.437500 -0.437500
+v 0.437500 -0.437500 0.437500
+vt 0.484848 0.984848
+vt 0.015152 0.984848
+vt 0.015152 0.515152
+vt 0.484848 0.515152
+vt 0.515152 0.984848
+vt 0.515152 0.515152
+vt 0.984848 0.515152
+vt 0.984848 0.984848
+vt 0.954545 0.545455
+vt 0.545455 0.545455
+vt 0.954545 0.954545
+vt 0.545455 0.954545
+s off
+f 5/1 6/2 2/3 1/4
+f 6/1 7/2 3/3 2/4
+f 7/1 8/2 4/3 3/4
+f 8/1 5/2 1/3 4/4
+f 1/5 2/6 3/7 4/8
+f 5/6 8/7 12/9 9/10
+f 8/7 7/8 11/11 12/9
+f 7/8 6/5 10/12 11/11
+f 6/5 5/6 9/10 10/12
+f 9/1 12/2 16/3 13/4
+f 12/1 11/2 15/3 16/4
+f 11/1 10/2 14/3 15/4
+f 10/1 9/2 13/3 14/4
+f 13/10 16/9 15/11 14/12
diff --git a/plantlife_modpack/bushes_classic/models/bushes_basket_full.obj b/plantlife_modpack/bushes_classic/models/bushes_basket_full.obj
new file mode 100644
index 0000000..5a3e1a8
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/models/bushes_basket_full.obj
@@ -0,0 +1,330 @@
+# Blender v2.73 (sub 0) OBJ File: 'basket-of-pies.blend'
+# www.blender.org
+o pies_Cylinder
+v -0.089468 -0.116804 -0.438000
+v -0.116691 -0.091480 -0.438000
+v 0.024696 0.005921 -0.404659
+v -0.002527 0.031245 -0.404659
+v 0.121480 0.109962 -0.309713
+v 0.094258 0.135286 -0.309713
+v 0.186149 0.179480 -0.167615
+v 0.158927 0.204804 -0.167615
+v 0.208858 0.203891 0.000000
+v 0.181635 0.229215 0.000000
+v 0.186149 0.179480 0.167615
+v 0.158927 0.204804 0.167615
+v 0.121480 0.109962 0.309713
+v 0.094258 0.135286 0.309713
+v 0.024696 0.005921 0.404659
+v -0.002527 0.031245 0.404659
+v -0.089468 -0.116804 0.438000
+v -0.116691 -0.091480 0.438000
+v -0.230856 -0.214204 0.404659
+v -0.327640 -0.318245 0.309713
+v -0.392309 -0.387763 0.167615
+v -0.415018 -0.412175 -0.000000
+v -0.392309 -0.387763 -0.167615
+v -0.327640 -0.318245 -0.309713
+v -0.230856 -0.214204 -0.404659
+v -0.135230 -0.074234 -0.383250
+v -0.035336 0.033150 -0.354077
+v 0.049350 0.124186 -0.270999
+v 0.105936 0.185014 -0.146663
+v 0.125806 0.206374 0.000000
+v 0.105936 0.185014 0.146663
+v 0.049350 0.124186 0.270999
+v -0.035336 0.033150 0.354077
+v -0.135230 -0.074234 0.383250
+v -0.235124 -0.181618 0.354077
+v -0.319810 -0.272654 0.270999
+v -0.376395 -0.333482 0.146663
+v -0.396266 -0.354842 -0.000000
+v -0.376395 -0.333482 -0.146664
+v -0.319810 -0.272654 -0.270999
+v -0.235124 -0.181618 -0.354077
+v 0.071215 -0.085999 -0.438000
+v 0.041377 -0.063816 -0.438000
+v 0.171221 0.048513 -0.404659
+v 0.141384 0.070697 -0.404659
+v 0.256002 0.162547 -0.309713
+v 0.226165 0.184731 -0.309713
+v 0.312652 0.238743 -0.167615
+v 0.282814 0.260926 -0.167615
+v 0.332544 0.265499 0.000000
+v 0.302707 0.287682 0.000000
+v 0.312652 0.238743 0.167615
+v 0.282814 0.260926 0.167615
+v 0.256002 0.162547 0.309713
+v 0.226165 0.184731 0.309713
+v 0.171221 0.048513 0.404659
+v 0.141383 0.070697 0.404659
+v 0.071215 -0.085999 0.438000
+v 0.041377 -0.063816 0.438000
+v -0.058629 -0.198328 0.404659
+v -0.058629 -0.198328 -0.404659
+v 0.021058 -0.048709 -0.383250
+v 0.108564 0.068989 -0.354077
+v 0.182747 0.168769 -0.270999
+v 0.232315 0.235440 -0.146663
+v 0.249721 0.258852 0.000000
+v 0.232315 0.235440 0.146663
+v 0.182747 0.168769 0.270999
+v 0.108564 0.068989 0.354077
+v 0.021058 -0.048709 0.383250
+v -0.066448 -0.166408 0.354077
+v -0.140632 -0.266188 0.270999
+v -0.190200 -0.332858 0.146663
+v -0.207605 -0.356270 -0.000000
+v -0.190199 -0.332858 -0.146664
+v -0.140631 -0.266188 -0.270999
+v -0.066448 -0.166408 -0.354077
+v 0.220377 -0.057101 -0.438000
+v 0.188086 -0.038671 -0.438000
+v 0.303465 0.088470 -0.404659
+v 0.271175 0.106901 -0.404659
+v 0.373905 0.211880 -0.309713
+v 0.341614 0.230311 -0.309713
+v 0.420971 0.294340 -0.167615
+v 0.388680 0.312771 -0.167615
+v 0.437498 0.323296 0.000000
+v 0.405208 0.341727 0.000000
+v 0.420971 0.294340 0.167615
+v 0.388680 0.312771 0.167615
+v 0.373905 0.211880 0.309713
+v 0.341614 0.230311 0.309713
+v 0.303465 0.088470 0.404659
+v 0.271175 0.106901 0.404659
+v 0.220377 -0.057101 0.438000
+v 0.188086 -0.038671 0.438000
+v 0.104997 -0.184242 0.404659
+v 0.104997 -0.184242 -0.404659
+v 0.166096 -0.026119 -0.383250
+v 0.238799 0.101256 -0.354077
+v 0.300433 0.209240 -0.270999
+v 0.341616 0.281392 -0.146663
+v 0.356078 0.306728 0.000000
+v 0.341616 0.281392 0.146664
+v 0.300433 0.209240 0.270999
+v 0.238799 0.101256 0.354077
+v 0.166096 -0.026119 0.383250
+v 0.093393 -0.153495 0.354077
+v 0.031759 -0.261478 0.270999
+v -0.009424 -0.333631 0.146663
+v -0.023885 -0.358967 -0.000000
+v -0.009424 -0.333631 -0.146664
+v 0.031759 -0.261478 -0.270999
+v 0.093394 -0.153495 -0.354077
+vt 0.000000 0.054054
+vt 0.000000 0.000000
+vt 0.062500 0.000000
+vt 0.062500 0.054054
+vt 0.125000 0.000000
+vt 0.125000 0.054054
+vt 0.187500 0.000000
+vt 0.187500 0.054054
+vt 0.250000 0.000000
+vt 0.250000 0.054054
+vt 0.312500 0.000000
+vt 0.312500 0.054054
+vt 0.375000 0.000000
+vt 0.375000 0.054054
+vt 0.437500 0.000000
+vt 0.437500 0.054054
+vt 0.500000 0.000000
+vt 0.500000 0.054054
+vt 0.055610 0.293778
+vt 0.110171 0.184656
+vt 0.123905 0.225763
+vt 0.076165 0.321244
+vt 0.316174 0.801264
+vt 0.253798 0.852938
+vt 0.186282 0.852938
+vt 0.123905 0.801264
+vt 0.076165 0.705782
+vt 0.050327 0.581029
+vt 0.050327 0.445997
+vt 0.186282 0.174088
+vt 0.253798 0.174089
+vt 0.316174 0.225763
+vt 0.363915 0.321245
+vt 0.389752 0.445997
+vt 0.389752 0.581029
+vt 0.363915 0.705782
+vt 0.384468 0.733249
+vt 0.329907 0.842371
+vt 0.055610 0.733249
+vt 0.026082 0.590674
+vt 0.384468 0.293778
+vt 0.413996 0.436353
+vt 0.258619 0.901428
+vt 0.181458 0.901428
+vt 0.181458 0.125599
+vt 0.258619 0.125599
+vt 0.026082 0.436353
+vt 0.413996 0.590674
+vt 0.110171 0.842371
+vt 0.329907 0.184656
+vt 0.076566 0.705251
+vt 0.050729 0.580498
+vt 0.050729 0.445466
+vt 0.076566 0.320713
+vt 0.124307 0.225232
+vt 0.186684 0.173557
+vt 0.254199 0.173557
+vt 0.316576 0.225232
+vt 0.364317 0.320713
+vt 0.390154 0.445466
+vt 0.390154 0.580498
+vt 0.364317 0.705251
+vt 0.316576 0.800732
+vt 0.254199 0.852407
+vt 0.186684 0.852407
+vt 0.124307 0.800732
+vt 0.110573 0.841838
+vt 0.056012 0.732716
+vt 0.330309 0.841838
+vt 0.259022 0.900894
+vt 0.026484 0.590141
+vt 0.026484 0.435819
+vt 0.414398 0.435819
+vt 0.414398 0.590141
+vt 0.181861 0.900894
+vt 0.384870 0.732716
+vt 0.384870 0.293245
+vt 0.389637 0.582094
+vt 0.363799 0.706847
+vt 0.316059 0.802329
+vt 0.253682 0.854003
+vt 0.186166 0.854003
+vt 0.123790 0.802329
+vt 0.076049 0.706847
+vt 0.050212 0.582094
+vt 0.050212 0.447062
+vt 0.076049 0.322309
+vt 0.123790 0.226828
+vt 0.186166 0.175153
+vt 0.253682 0.175153
+vt 0.316058 0.226828
+vt 0.363799 0.322310
+vt 0.389637 0.447062
+vt 0.413881 0.437419
+vt 0.413881 0.591741
+vt 0.258504 0.126666
+vt 0.329792 0.185722
+vt 0.384353 0.734315
+vt 0.329792 0.843437
+vt 0.055495 0.294844
+vt 0.110056 0.185722
+vt 0.384353 0.294844
+vt 0.181343 0.126666
+vt 0.025967 0.437419
+g pies_Cylinder_pie
+s off
+f 1/1 2/2 4/3 3/4
+f 3/4 4/3 6/5 5/6
+f 5/6 6/5 8/7 7/8
+f 7/8 8/7 10/9 9/10
+f 9/10 10/9 12/11 11/12
+f 11/12 12/11 14/13 13/14
+f 13/14 14/13 16/15 15/16
+f 15/16 16/15 18/17 17/18
+f 20/19 19/20 35/21 36/22
+f 27/23 26/24 41/25 40/26 39/27 38/28 37/29 36/22 35/21 34/30 33/31 32/32 31/33 30/34 29/35 28/36
+f 6/37 4/38 27/23 28/36
+f 23/39 22/40 38/28 39/27
+f 12/41 10/42 30/34 31/33
+f 2/43 25/44 41/25 26/24
+f 4/38 2/43 26/24 27/23
+f 18/45 16/46 33/31 34/30
+f 21/47 20/19 36/22 37/29
+f 8/48 6/37 28/36 29/35
+f 24/49 23/39 39/27 40/26
+f 14/50 12/41 31/33 32/32
+f 19/20 18/45 34/30 35/21
+f 22/40 21/47 37/29 38/28
+f 10/42 8/48 29/35 30/34
+f 25/44 24/49 40/26 41/25
+f 16/46 14/50 32/32 33/31
+f 42/1 43/2 45/3 44/4
+f 44/4 45/3 47/5 46/6
+f 46/6 47/5 49/7 48/8
+f 48/8 49/7 51/9 50/10
+f 50/10 51/9 53/11 52/12
+f 52/12 53/11 55/13 54/14
+f 54/14 55/13 57/15 56/16
+f 56/16 57/15 59/17 58/18
+f 63/51 62/52 77/53 76/54 75/55 74/56 73/57 72/58 71/59 70/60 69/61 68/62 67/63 66/64 65/65 64/66
+f 47/67 45/68 63/51 64/66
+f 53/69 51/70 66/64 67/63
+f 43/71 61/72 77/53 62/52
+f 45/68 43/71 62/52 63/51
+f 59/73 57/74 69/61 70/60
+f 49/75 47/67 64/66 65/65
+f 55/76 53/69 67/63 68/62
+f 60/77 59/73 70/60 71/59
+f 51/70 49/75 65/65 66/64
+f 57/74 55/76 68/62 69/61
+f 78/1 79/2 81/3 80/4
+f 80/4 81/3 83/5 82/6
+f 82/6 83/5 85/7 84/8
+f 84/8 85/7 87/9 86/10
+f 86/10 87/9 89/11 88/12
+f 88/12 89/11 91/13 90/14
+f 90/14 91/13 93/15 92/16
+f 92/16 93/15 95/17 94/18
+f 99/78 98/79 113/80 112/81 111/82 110/83 109/84 108/85 107/86 106/87 105/88 104/89 103/90 102/91 101/92 100/93
+f 83/94 81/95 99/78 100/93
+f 89/96 87/97 102/91 103/90
+f 79/98 97/99 113/80 98/79
+f 81/95 79/98 98/79 99/78
+f 95/100 93/101 105/88 106/87
+f 85/102 83/94 100/93 101/92
+f 91/103 89/96 103/90 104/89
+f 96/104 95/100 106/87 107/86
+f 87/97 85/102 101/92 102/91
+f 93/101 91/103 104/89 105/88
+o basket_Cube.001
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.437500 0.500000 0.437500
+v -0.437500 0.500000 -0.437500
+v 0.437500 0.500000 -0.437500
+v 0.437500 0.500000 0.437500
+v -0.437500 -0.437500 0.437500
+v -0.437500 -0.437500 -0.437500
+v 0.437500 -0.437500 -0.437500
+v 0.437500 -0.437500 0.437500
+vt 0.484848 0.984848
+vt 0.015152 0.984848
+vt 0.015152 0.515152
+vt 0.484848 0.515152
+vt 0.515152 0.984848
+vt 0.515152 0.515152
+vt 0.984848 0.515152
+vt 0.984848 0.984848
+vt 0.954545 0.545455
+vt 0.545455 0.545455
+vt 0.954545 0.954545
+vt 0.545455 0.954545
+g basket_Cube.001_basket
+s off
+f 118/105 119/106 115/107 114/108
+f 119/105 120/106 116/107 115/108
+f 120/105 121/106 117/107 116/108
+f 121/105 118/106 114/107 117/108
+f 114/109 115/110 116/111 117/112
+f 118/110 121/111 125/113 122/114
+f 121/111 120/112 124/115 125/113
+f 120/112 119/109 123/116 124/115
+f 119/109 118/110 122/114 123/116
+f 122/105 125/106 129/107 126/108
+f 125/105 124/106 128/107 129/108
+f 124/105 123/106 127/107 128/108
+f 123/105 122/106 126/107 127/108
+f 126/114 129/113 128/115 127/116
diff --git a/plantlife_modpack/bushes_classic/models/bushes_bush.obj b/plantlife_modpack/bushes_classic/models/bushes_bush.obj
new file mode 100644
index 0000000..a69bfce
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/models/bushes_bush.obj
@@ -0,0 +1,329 @@
+# Blender v2.73 (sub 0) OBJ File: 'bush.blend'
+# www.blender.org
+o nodebox-4
+v 0.467076 -0.122686 -0.190481
+v -0.453590 -0.119789 -0.192145
+v 0.420865 -0.181680 -0.171396
+v -0.429008 -0.188000 -0.182314
+v -0.450977 0.041977 -0.191409
+v -0.271687 -0.294075 -0.114977
+v -0.096925 -0.495759 -0.044091
+v -0.070286 -0.344209 -0.030750
+v -0.163971 -0.173437 -0.403793
+v -0.188139 -0.116431 0.446425
+v 0.069865 0.462329 0.170043
+v -0.175980 -0.180649 0.417932
+v -0.184276 0.039248 0.437271
+v -0.121692 -0.319322 0.290049
+v -0.039557 -0.495759 0.097032
+v -0.029307 -0.346230 0.070496
+v -0.440307 0.205163 -0.203598
+v -0.440281 0.206327 0.191785
+v -0.339366 0.327086 -0.144329
+v -0.267923 0.418413 0.108270
+v -0.264994 0.405691 -0.113216
+v 0.173823 0.186657 0.424935
+v -0.172109 0.470396 -0.073638
+v -0.090743 0.491063 -0.039539
+v -0.173625 0.180559 0.412022
+v 0.108534 0.404586 0.263698
+v -0.137870 0.317286 0.327397
+v 0.149454 0.342906 0.361857
+v -0.115069 0.426252 0.274637
+v 0.116858 -0.311812 0.284557
+v -0.074459 0.465500 0.178311
+v -0.036397 0.486640 0.094150
+v 0.044199 -0.495759 -0.101459
+v 0.034559 -0.377127 -0.079219
+v 0.116886 -0.299764 -0.276145
+v -0.172864 0.462259 0.069984
+v 0.173974 -0.178414 -0.411782
+v 0.191827 0.042411 -0.453422
+v 0.190055 -0.117435 -0.449613
+v -0.136929 0.321997 -0.339476
+v 0.101567 -0.495759 0.039664
+v 0.076778 -0.365788 0.030191
+v 0.292232 -0.320027 0.121743
+v -0.067752 0.451498 -0.167691
+v 0.433751 -0.189348 0.181586
+v 0.457624 0.044950 0.184732
+v 0.473778 -0.128221 0.198329
+v -0.113891 -0.307852 -0.282552
+v 0.081961 0.458662 -0.191580
+v 0.042947 0.491063 -0.093885
+v 0.109202 0.397842 -0.257691
+v 0.145450 0.328672 -0.343352
+v 0.191241 0.038411 0.444768
+v -0.184306 0.045052 -0.456452
+v -0.289997 -0.318897 0.117161
+v 0.182461 0.185982 -0.431178
+v 0.180190 0.469152 0.074510
+v 0.097292 0.491063 0.039804
+v 0.264954 0.412421 0.110505
+v 0.355939 0.336100 0.148277
+v -0.474575 0.042725 0.191924
+v -0.169486 0.185035 -0.418844
+v -0.445009 -0.118527 0.180804
+v 0.427054 0.187979 0.172057
+v 0.350926 0.339079 -0.143384
+v 0.189060 -0.125023 0.462241
+v 0.269270 -0.290650 -0.109472
+v 0.175816 -0.186803 0.429367
+v 0.259570 0.406980 -0.105942
+v -0.103158 0.398344 -0.255462
+v -0.339105 0.330270 0.137302
+v -0.186029 -0.123369 -0.460126
+v -0.418539 -0.180131 0.169838
+v 0.041492 0.491063 0.094145
+v 0.487251 0.041118 -0.191308
+v 0.173059 0.459504 -0.070716
+v 0.460259 0.206607 -0.196213
+v 0.108065 0.487446 -0.045199
+v -0.103423 0.491173 0.040772
+v -0.040665 0.496765 -0.107957
+v -0.070153 -0.343292 0.028053
+v -0.028215 -0.347521 -0.072596
+v 0.028031 -0.329368 0.067986
+v 0.075170 -0.358957 -0.031186
+v -0.037332 -0.495759 -0.099759
+v 0.099867 -0.495759 -0.041867
+v -0.095225 -0.495759 0.037440
+v 0.041974 -0.495759 0.095332
+v 0.001777 0.503796 -0.003546
+v 0.002321 -0.495758 -0.002214
+vt 0.875000 0.281250
+vt 1.000000 0.281250
+vt 1.000000 0.421875
+vt 0.875000 0.421875
+vt 0.375000 0.125000
+vt 0.500000 0.125000
+vt 0.500000 0.234375
+vt 0.375000 0.234375
+vt 0.625000 0.234375
+vt 0.625000 0.281250
+vt 0.500000 0.281250
+vt 0.500000 0.609375
+vt 0.500000 0.656250
+vt 0.375000 0.656250
+vt 0.375000 0.609375
+vt 0.625000 0.421875
+vt 0.500000 0.421875
+vt 0.375000 0.281250
+vt 0.375000 0.421875
+vt 0.125000 0.609375
+vt 0.125000 0.656250
+vt 0.000000 0.656250
+vt 0.000000 0.609375
+vt 0.846670 0.983596
+vt 0.823789 0.862038
+vt 0.861831 0.862038
+vt 0.500000 0.531250
+vt 0.375000 0.531250
+vt 0.234375 0.609375
+vt 0.234375 0.531250
+vt 0.875000 0.234375
+vt 0.750000 0.234375
+vt 0.750000 0.125000
+vt 0.875000 0.125000
+vt 0.125000 0.234375
+vt 0.125000 0.125000
+vt 0.234375 0.125000
+vt 0.234375 0.234375
+vt 0.125000 0.281250
+vt 0.234375 0.281250
+vt 0.234375 0.421875
+vt 0.125000 0.421875
+vt 0.125000 0.703125
+vt 0.000000 0.703125
+vt 0.875000 0.656250
+vt 0.750000 0.656250
+vt 0.750000 0.609375
+vt 0.875000 0.609375
+vt 0.625000 0.656250
+vt 0.625000 0.609375
+vt 0.234375 0.656250
+vt 0.375000 0.703125
+vt 0.234375 0.703125
+vt 0.125000 0.531250
+vt 0.875000 0.531250
+vt 1.000000 0.531250
+vt 1.000000 0.609375
+vt 0.500000 0.703125
+vt 0.000000 0.421875
+vt 0.000000 0.531250
+vt 0.875000 0.703125
+vt 0.750000 0.703125
+vt 0.328125 0.812500
+vt 0.328125 0.875000
+vt 0.265625 0.890625
+vt 0.265625 0.781250
+vt 0.750000 0.531250
+vt 1.000000 0.234375
+vt -0.000000 0.281250
+vt 0.000000 0.234375
+vt 0.375000 0.921875
+vt 0.328125 0.984375
+vt 0.562500 0.812500
+vt 0.500000 0.828125
+vt 0.625000 0.125000
+vt 0.625000 0.531250
+vt 0.970570 0.983596
+vt 0.918853 0.862038
+vt 0.983390 0.862038
+vt 1.000000 0.703125
+vt 1.000000 0.656250
+vt 0.694849 0.983596
+vt 0.653099 0.862038
+vt 0.703461 0.862038
+vt 0.453125 1.000000
+vt 0.437500 0.937500
+vt 0.546875 0.937500
+vt 0.375000 0.765625
+vt 0.625000 0.703125
+vt 0.750000 0.281250
+vt 0.000000 0.125000
+vt 0.781059 0.974219
+vt 0.740272 0.862038
+vt 0.773590 0.862038
+vt 0.823762 0.862067
+vt 0.773656 0.862066
+vt 0.800723 0.801332
+vt 0.750000 0.421875
+vt 1.000000 0.125000
+vt 0.881508 0.980225
+vt 0.923791 0.982865
+vt 0.819499 0.959318
+vt 0.634200 0.973424
+vt 0.659430 0.971277
+vt 0.724959 0.956989
+vt 0.755822 0.968617
+vt 0.125000 0.000000
+vt 0.234375 0.000000
+vt 0.375000 0.000000
+vt 0.500000 0.000000
+vt 0.750000 0.000000
+vt 0.875000 0.000000
+vt 1.000000 0.000000
+vt 0.625000 0.000000
+vt 0.000000 0.000000
+vt 0.618713 0.862038
+vt 0.453125 0.781250
+vt 0.484375 0.890625
+vt 0.406250 0.859375
+vt 0.738525 0.828462
+vt 0.741806 0.778103
+vt 0.777683 0.740596
+vt 0.827789 0.740597
+vt 0.862920 0.774201
+vt 0.859639 0.824560
+s off
+f 63/1 10/2 13/3 61/4
+f 67/5 35/6 37/7 3/8
+f 9/9 72/10 39/11 37/7
+f 52/12 51/13 69/14 65/15
+f 72/10 54/16 38/17 39/11
+f 1/18 39/11 38/17 75/19
+f 28/20 26/21 29/22 27/23
+f 82/24 33/25 85/26
+f 75/19 38/17 56/27 77/28
+f 77/28 65/15 60/29 64/30
+f 73/31 4/32 6/33 55/34
+f 68/35 30/36 43/37 45/38
+f 66/39 47/40 46/41 53/42
+f 11/43 31/44 29/22 26/21
+f 20/45 21/46 19/47 71/48
+f 70/49 40/50 19/47 21/46
+f 59/51 69/14 76/52 57/53
+f 3/8 37/7 39/11 1/18
+f 28/20 22/54 64/30 60/29
+f 71/48 18/55 25/56 27/57
+f 69/14 51/13 49/58 76/52
+f 13/59 53/42 22/54 25/60
+f 36/61 23/62 21/46 20/45
+f 58/63 74/64 11/65 57/66
+f 57/53 11/43 26/21 59/51
+f 19/47 17/67 18/55 71/48
+f 73/31 12/68 10/2 63/1
+f 68/35 66/39 10/69 12/70
+f 74/64 32/71 31/72 11/65
+f 53/42 46/41 64/30 22/54
+f 25/56 18/55 61/4 13/3
+f 49/58 44/73 80/74
+f 45/38 3/8 1/18 47/40
+f 9/9 48/75 6/33 4/32
+f 62/76 40/50 52/12 56/27
+f 81/77 7/78 87/79
+f 31/80 36/61 20/45 29/81
+f 83/82 15/83 88/84
+f 36/85 79/86 23/87
+f 78/88 58/63 57/66
+f 17/67 19/47 40/50 62/76
+f 45/38 47/40 66/39 68/35
+f 51/13 70/49 44/89 49/58
+f 4/32 73/31 63/1 2/90
+f 12/70 14/91 30/36 68/35
+f 84/92 41/93 86/94
+f 33/95 86/96 90/97
+f 70/49 21/46 23/62 44/89
+f 54/16 62/76 56/27 38/17
+f 29/81 20/45 71/48 27/57
+f 37/7 35/6 48/75 9/9
+f 5/98 17/67 62/76 54/16
+f 18/55 17/67 5/98 61/4
+f 10/69 66/39 53/42 13/59
+f 12/68 73/31 55/34 14/99
+f 51/13 52/12 40/50 70/49
+f 27/23 25/60 22/54 28/20
+f 65/15 69/14 59/51 60/29
+f 56/27 52/12 65/15 77/28
+f 46/41 75/19 77/28 64/30
+f 60/29 59/51 26/21 28/20
+f 47/40 1/18 75/19 46/41
+f 2/90 5/98 54/16 72/10
+f 4/32 2/90 72/10 9/9
+f 43/37 67/5 3/8 45/38
+f 2/90 63/1 61/4 5/98
+f 82/100 7/78 8/101
+f 82/24 34/102 33/25
+f 81/103 15/83 16/104
+f 81/77 8/101 7/78
+f 83/82 41/93 42/105
+f 83/82 16/104 15/83
+f 84/92 33/25 34/102
+f 84/92 42/106 41/93
+f 30/36 83/107 42/108 43/37
+f 42/108 84/109 67/5 43/37
+f 67/5 84/109 34/110 35/6
+f 55/34 6/33 8/111 81/112
+f 55/34 81/112 16/113 14/99
+f 34/110 82/114 48/75 35/6
+f 48/75 82/114 8/111 6/33
+f 30/36 14/91 16/115 83/107
+f 7/78 82/100 85/26
+f 15/83 81/103 87/116
+f 41/93 83/82 88/84
+f 33/25 84/92 86/94
+f 80/74 50/117 49/58
+f 23/87 24/118 80/74
+f 80/74 44/73 23/87
+f 79/86 36/85 31/72
+f 79/86 24/118 23/87
+f 31/72 32/71 79/86
+f 78/88 49/58 50/117
+f 78/88 57/66 76/52
+f 76/52 49/58 78/88
+f 24/118 79/86 89/119
+f 79/86 32/71 89/119
+f 32/71 74/64 89/119
+f 74/64 58/63 89/119
+f 58/63 78/88 89/119
+f 78/88 50/117 89/119
+f 50/117 80/74 89/119
+f 80/74 24/118 89/119
+f 86/96 41/120 90/97
+f 41/120 88/121 90/97
+f 88/121 15/122 90/97
+f 15/122 87/123 90/97
+f 87/123 7/124 90/97
+f 7/124 85/125 90/97
+f 85/125 33/95 90/97
diff --git a/plantlife_modpack/bushes_classic/nodes.lua b/plantlife_modpack/bushes_classic/nodes.lua
new file mode 100644
index 0000000..352e2a9
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/nodes.lua
@@ -0,0 +1,214 @@
+local S = biome_lib.intllib
+
+plantlife_bushes = {}
+
+-- TODO: add support for nodebreakers? those dig like mese picks
+plantlife_bushes.after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ if not (digger and pos and oldnode) then
+ return
+ end
+
+ -- find out which bush type we are dealing with
+ local bush_name = ""
+ local can_harvest = false
+
+ if oldnode.name == "bushes:fruitless_bush" then
+ -- this bush has not grown fruits yet (but will eventually)
+ bush_name = oldmetadata.fields.bush_type
+ -- no fruits to be found, so can_harvest stays false
+ else
+ local name_parts = oldnode.name:split(":")
+ if #name_parts >= 2 and name_parts[2] ~= nil then
+
+ name_parts = name_parts[2]:split("_")
+
+ if #name_parts >= 2 and name_parts[1] ~= nil then
+ bush_name = name_parts[1]
+ -- this bush really carries fruits
+ can_harvest = true
+ end
+ end
+ end
+
+ -- find out which tool the digger was wielding (if any)
+ local toolstack = digger:get_wielded_item()
+ local capabilities = toolstack:get_tool_capabilities()
+
+ -- what the player will get
+ local harvested
+
+ -- failure to find out what the tool can do: destroy the bush and return nothing
+ local groupcaps = capabilities.groupcaps
+ if not groupcaps then
+ return
+
+ -- digging with the hand or something like that
+ elseif groupcaps.snappy then
+
+ -- plant a new bush without fruits
+ minetest.set_node(pos, {type = "node", name = "bushes:fruitless_bush"})
+ local meta = minetest.get_meta(pos)
+ meta:set_string('bush_type', bush_name)
+
+ -- construct the stack of fruits the player will get
+ -- only bushes that have grown fruits can actually give fruits
+ if can_harvest then
+ local amount = "4"
+ harvested = "bushes:" .. bush_name .. " " .. amount
+ end
+
+ -- something like a shovel
+ elseif groupcaps.crumbly then
+
+ -- with a chance of 1/3, return 2 bushes
+ local amount
+ if math.random(1,3) == 1 then
+ amount = "2"
+ else
+ amount = "1"
+ end
+ -- return the bush itself
+ harvested = "bushes:" .. bush_name .. "_bush "..amount
+
+ -- something like an axe
+ elseif groupcaps.choppy then
+
+ -- the amount of sticks may vary
+ local amount = math.random(4, 20)
+ -- return some sticks
+ harvested = "default:stick " .. amount
+
+ -- nothing known - destroy the plant
+ else
+ return
+ end
+
+ -- give the harvested result to the player
+ if harvested then
+ --minetest.chat_send_player("singleplayer","you would now get "..tostring( harvested ) );
+ local itemstack = ItemStack(harvested)
+ local inventory = digger:get_inventory()
+ if inventory:room_for_item("main", itemstack) then
+ inventory:add_item("main", itemstack)
+ else
+ minetest.item_drop(itemstack, digger, pos)
+ end
+ end
+end
+
+plantlife_bushes.after_place_node = function(pos, placer, itemstack)
+
+ if not (itemstack and pos) then
+ return
+ end
+
+ local name_parts = itemstack:get_name():split(":")
+ if #name_parts < 2 or name_parts[2] == nil then
+ return
+ end
+
+ name_parts = name_parts[2]:split("_")
+
+ if #name_parts < 2 or name_parts[1] == nil then
+ return
+ end
+
+ minetest.set_node(pos, {name = "bushes:fruitless_bush"})
+ local meta = minetest.get_meta(pos)
+ meta:set_string("bush_type", name_parts[1])
+end
+
+-- regrow berries (uses a base abm instead of biome_lib because of the use of metadata).
+
+minetest.register_abm({
+ nodenames = {"bushes:fruitless_bush"},
+ neighbors = {"group:soil", "group:potting_soil"},
+ interval = 500,
+ chance = 5,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+
+ local meta = minetest.get_meta(pos)
+ local bush_name = meta:get_string("bush_type")
+
+ if bush_name and bush_name ~= "" then
+ local dirtpos = {x = pos.x, y = pos.y-1, z = pos.z}
+ local dirt = minetest.get_node(dirtpos)
+ local is_soil = minetest.get_item_group(dirt.name, "soil") or minetest.get_item_group(dirt.name, "potting_soil")
+
+ if is_soil and (dirt.name == "farming:soil_wet" or math.random(1,3) == 1) then
+ minetest.set_node( pos, {name = "bushes:" .. bush_name .. "_bush"})
+ end
+ end
+ end
+})
+
+-- Define the basket and bush nodes
+
+for i, bush_name in ipairs(bushes_classic.bushes) do
+
+ local desc = bushes_classic.bushes_descriptions[i]
+
+ minetest.register_node(":bushes:basket_"..bush_name, {
+ description = S("Basket with "..desc.." Pies"),
+ drawtype = "mesh",
+ mesh = "bushes_basket_full.obj",
+ tiles = {
+ "bushes_basket_pie_"..bush_name..".png",
+ "bushes_basket.png"
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ on_use = minetest.item_eat(18),
+ groups = { dig_immediate = 3 },
+ })
+
+ local texture_top, texture_bottom
+
+ local groups = {snappy = 3, bush = 1, flammable = 2, attached_node=1}
+ if bush_name == "mixed_berry" then
+ bush_name = "fruitless";
+ desc = S("currently fruitless");
+ texture_top = "bushes_fruitless_bush_top.png"
+ texture_bottom = "bushes_fruitless_bush_bottom.png"
+ groups.not_in_creative_inventory = 1
+ else
+ texture_top = "bushes_bush_top.png"
+ texture_bottom = "bushes_bush_bottom.png"
+ end
+
+ minetest.register_node(":bushes:" .. bush_name .. "_bush", {
+ description = S(desc.." Bush"),
+ drawtype = "mesh",
+ mesh = "bushes_bush.obj",
+ tiles = {"bushes_bush_"..bush_name..".png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ groups = groups,
+ sounds = default.node_sound_leaves_defaults(),
+ drop = "",
+ after_dig_node = function( pos, oldnode, oldmetadata, digger )
+ return plantlife_bushes.after_dig_node(pos, oldnode, oldmetadata, digger);
+ end,
+ after_place_node = function( pos, placer, itemstack )
+ return plantlife_bushes.after_place_node(pos, placer, itemstack);
+ end,
+ })
+
+ -- do not spawn fruitless bushes
+ if bush_name ~= "fruitless" then
+ table.insert(bushes_classic.spawn_list, "bushes:"..bush_name.."_bush")
+ end
+end
+
+minetest.register_node(":bushes:basket_empty", {
+ description = S("Basket"),
+ drawtype = "mesh",
+ mesh = "bushes_basket_empty.obj",
+ tiles = { "bushes_basket.png" },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = { dig_immediate = 3 },
+})
+
+
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket.png b/plantlife_modpack/bushes_classic/textures/bushes_basket.png
new file mode 100644
index 0000000..4384fba
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blackberry.png b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blackberry.png
new file mode 100644
index 0000000..83ee63c
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blackberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blueberry.png b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blueberry.png
new file mode 100644
index 0000000..9f9b2c6
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_blueberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_gooseberry.png b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_gooseberry.png
new file mode 100644
index 0000000..d6bdff4
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_gooseberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_mixed_berry.png b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_mixed_berry.png
new file mode 100644
index 0000000..ff271ff
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_mixed_berry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_raspberry.png b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_raspberry.png
new file mode 100644
index 0000000..3bfd42f
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_raspberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_strawberry.png b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_strawberry.png
new file mode 100644
index 0000000..c27b0b3
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_basket_pie_strawberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blackberry.png b/plantlife_modpack/bushes_classic/textures/bushes_blackberry.png
new file mode 100644
index 0000000..76b742b
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blackberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_cooked.png b/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_cooked.png
new file mode 100644
index 0000000..a6af5ca
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_cooked.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_raw.png b/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_raw.png
new file mode 100644
index 0000000..c37f987
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_raw.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_slice.png b/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_slice.png
new file mode 100644
index 0000000..90be80e
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blackberry_pie_slice.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blueberry.png b/plantlife_modpack/bushes_classic/textures/bushes_blueberry.png
new file mode 100644
index 0000000..e15047f
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blueberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_cooked.png b/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_cooked.png
new file mode 100644
index 0000000..11ce60f
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_cooked.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_raw.png b/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_raw.png
new file mode 100644
index 0000000..6e8dd9e
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_raw.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_slice.png b/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_slice.png
new file mode 100644
index 0000000..eb6bf5a
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_blueberry_pie_slice.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_bush_blackberry.png b/plantlife_modpack/bushes_classic/textures/bushes_bush_blackberry.png
new file mode 100644
index 0000000..fa76c61
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_bush_blackberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_bush_blueberry.png b/plantlife_modpack/bushes_classic/textures/bushes_bush_blueberry.png
new file mode 100644
index 0000000..3a305ca
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_bush_blueberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_bush_fruitless.png b/plantlife_modpack/bushes_classic/textures/bushes_bush_fruitless.png
new file mode 100644
index 0000000..ffa2e0a
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_bush_fruitless.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_bush_gooseberry.png b/plantlife_modpack/bushes_classic/textures/bushes_bush_gooseberry.png
new file mode 100644
index 0000000..52eca60
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_bush_gooseberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_bush_raspberry.png b/plantlife_modpack/bushes_classic/textures/bushes_bush_raspberry.png
new file mode 100644
index 0000000..01809de
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_bush_raspberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_bush_strawberry.png b/plantlife_modpack/bushes_classic/textures/bushes_bush_strawberry.png
new file mode 100644
index 0000000..a5060e2
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_bush_strawberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_gooseberry.png b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry.png
new file mode 100644
index 0000000..e712cad
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_cooked.png b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_cooked.png
new file mode 100644
index 0000000..caa4e92
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_cooked.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_raw.png b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_raw.png
new file mode 100644
index 0000000..baf5af7
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_raw.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_slice.png b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_slice.png
new file mode 100644
index 0000000..5cf2844
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_gooseberry_pie_slice.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_cooked.png b/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_cooked.png
new file mode 100644
index 0000000..351a269
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_cooked.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_raw.png b/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_raw.png
new file mode 100644
index 0000000..6486989
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_raw.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_slice.png b/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_slice.png
new file mode 100644
index 0000000..8844c3d
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_mixed_berry_pie_slice.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_raspberry.png b/plantlife_modpack/bushes_classic/textures/bushes_raspberry.png
new file mode 100644
index 0000000..034fd48
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_raspberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_cooked.png b/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_cooked.png
new file mode 100644
index 0000000..afeb7d8
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_cooked.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_raw.png b/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_raw.png
new file mode 100644
index 0000000..bb76a1d
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_raw.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_slice.png b/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_slice.png
new file mode 100644
index 0000000..a094488
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_raspberry_pie_slice.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_strawberry.png b/plantlife_modpack/bushes_classic/textures/bushes_strawberry.png
new file mode 100644
index 0000000..b6a74b6
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_strawberry.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_cooked.png b/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_cooked.png
new file mode 100644
index 0000000..3d034ea
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_cooked.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_raw.png b/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_raw.png
new file mode 100644
index 0000000..932c073
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_raw.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_slice.png b/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_slice.png
new file mode 100644
index 0000000..f8d1d36
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_strawberry_pie_slice.png
Binary files differ
diff --git a/plantlife_modpack/bushes_classic/textures/bushes_sugar.png b/plantlife_modpack/bushes_classic/textures/bushes_sugar.png
new file mode 100644
index 0000000..726196b
--- /dev/null
+++ b/plantlife_modpack/bushes_classic/textures/bushes_sugar.png
Binary files differ
diff --git a/plantlife_modpack/cavestuff/depends.txt b/plantlife_modpack/cavestuff/depends.txt
new file mode 100644
index 0000000..3a7daa1
--- /dev/null
+++ b/plantlife_modpack/cavestuff/depends.txt
@@ -0,0 +1,2 @@
+default
+
diff --git a/plantlife_modpack/cavestuff/init.lua b/plantlife_modpack/cavestuff/init.lua
new file mode 100644
index 0000000..f2bed1a
--- /dev/null
+++ b/plantlife_modpack/cavestuff/init.lua
@@ -0,0 +1,12 @@
+-----------------------------------------------------------------------------------------------
+local title = "Cave Stuff"
+local version = "0.0.3"
+local mname = "cavestuff"
+-----------------------------------------------------------------------------------------------
+
+dofile(minetest.get_modpath("cavestuff").."/nodes.lua")
+dofile(minetest.get_modpath("cavestuff").."/mapgen.lua")
+
+-----------------------------------------------------------------------------------------------
+
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
diff --git a/plantlife_modpack/cavestuff/mapgen.lua b/plantlife_modpack/cavestuff/mapgen.lua
new file mode 100644
index 0000000..a91a2f0
--- /dev/null
+++ b/plantlife_modpack/cavestuff/mapgen.lua
@@ -0,0 +1,52 @@
+--Map Generation Stuff
+
+minetest.register_on_generated(function(minp, maxp, seed)
+ if maxp.y >= 2 and minp.y <= 0 then
+ -- Generate pebbles
+ local perlin1 = minetest.get_perlin(329, 3, 0.6, 100)
+ -- Assume X and Z lengths are equal
+ local divlen = 16
+ local divs = (maxp.x-minp.x)/divlen+1;
+ for divx=0,divs-1 do
+ for divz=0,divs-1 do
+ local x0 = minp.x + math.floor((divx+0)*divlen)
+ local z0 = minp.z + math.floor((divz+0)*divlen)
+ local x1 = minp.x + math.floor((divx+1)*divlen)
+ local z1 = minp.z + math.floor((divz+1)*divlen)
+ -- Determine pebble amount from perlin noise
+ local pebble_amount = math.floor(perlin1:get2d({x=x0, y=z0}) ^ 2 * 2)
+ -- Find random positions for pebbles based on this random
+ local pr = PseudoRandom(seed+1)
+ for i=0,pebble_amount do
+ local x = pr:next(x0, x1)
+ local z = pr:next(z0, z1)
+ -- Find ground level (0...15)
+ local ground_y = nil
+ for y=30,0,-1 do
+ if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then
+ ground_y = y
+ break
+ end
+ end
+
+ if ground_y then
+ local p = {x=x,y=ground_y+1,z=z}
+ local nn = minetest.get_node(p).name
+ -- Check if the node can be replaced
+ if minetest.registered_nodes[nn] and
+ minetest.registered_nodes[nn].buildable_to then
+ nn = minetest.get_node({x=x,y=ground_y,z=z}).name
+ -- If desert sand, add dry shrub
+ if nn == "default:dirt_with_grass" then
+ minetest.set_node(p,{name="cavestuff:pebble_"..pr:next(1,2), param2=math.random(0,3)})
+ elseif nn == "default:desert_sand" then
+ minetest.set_node(p,{name="cavestuff:desert_pebble_"..pr:next(1,2), param2=math.random(0,3)})
+ end
+ end
+ end
+
+ end
+ end
+ end
+ end
+end)
diff --git a/plantlife_modpack/cavestuff/models/cavestuff_pebble.obj b/plantlife_modpack/cavestuff/models/cavestuff_pebble.obj
new file mode 100644
index 0000000..243d1ce
--- /dev/null
+++ b/plantlife_modpack/cavestuff/models/cavestuff_pebble.obj
@@ -0,0 +1,279 @@
+# Blender v2.69 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib cavestuff_pebble.mtl
+o Icosphere.001_Icosphere.002
+v -0.000327 -0.410467 0.180121
+v -0.235610 -0.410468 0.155391
+v -0.284796 -0.410468 -0.076018
+v -0.121985 -0.209219 0.205980
+v -0.284738 -0.218753 0.040139
+v -0.201573 -0.219323 -0.168447
+v -0.100950 -0.116906 0.005837
+v -0.088586 -0.496875 -0.111804
+v -0.196648 -0.428134 -0.159917
+v -0.209011 -0.497294 -0.042276
+v -0.041805 -0.497429 0.108278
+v -0.180101 -0.487871 0.093742
+v -0.120956 -0.428134 0.196184
+v -0.288163 -0.428135 0.045629
+v -0.147553 -0.309844 -0.213938
+v -0.268157 -0.309844 -0.144718
+v -0.192465 -0.309844 0.211384
+v -0.054169 -0.309844 0.225920
+v -0.324717 -0.309844 -0.017682
+v -0.288965 -0.319377 0.114387
+v -0.023183 -0.210866 0.195570
+v -0.221888 -0.201086 0.143956
+v -0.275798 -0.233149 -0.072011
+v -0.160094 -0.150509 -0.096605
+v -0.113314 -0.150508 0.123477
+v -0.216653 -0.160042 0.030431
+v 0.073364 -0.397538 -0.267606
+v 0.268711 -0.397538 -0.091716
+v 0.161795 -0.397537 0.148424
+v 0.199614 -0.173928 -0.211396
+v 0.254265 -0.173928 0.045725
+v 0.026620 -0.195887 0.177156
+v -0.061812 -0.173929 -0.238874
+v 0.049992 -0.055394 -0.045225
+v 0.178551 -0.485125 -0.072552
+v 0.063729 -0.498396 -0.175936
+v 0.192289 -0.417167 -0.203264
+v -0.056339 -0.417167 -0.229396
+v -0.070077 -0.496109 -0.098684
+v 0.115708 -0.497252 0.068599
+v 0.244268 -0.417167 0.041273
+v 0.027763 -0.417167 0.166272
+v -0.001987 -0.285733 -0.289762
+v -0.109557 -0.285733 -0.245455
+v 0.258217 -0.285733 -0.165444
+v 0.151676 -0.285733 -0.273611
+v 0.235777 -0.285733 0.122059
+v 0.298622 -0.285733 -0.019093
+v 0.101971 -0.285733 0.199312
+v 0.072221 -0.154299 -0.256722
+v 0.258006 -0.154298 -0.089439
+v 0.156323 -0.154299 0.138946
+v 0.137937 -0.086893 -0.142897
+v -0.015725 -0.073070 -0.159049
+v 0.170060 -0.073069 0.008234
+v 0.036254 -0.095028 0.085487
+v -0.059660 -0.090744 -0.028814
+v -0.016904 -0.495185 -0.020480
+v -0.038530 -0.134593 0.104482
+v 0.018559 -0.297788 0.203363
+vt 0.999784 0.777888
+vt 0.781916 0.751069
+vt 0.930695 0.535842
+vt 0.718554 0.493678
+vt 0.498343 0.500066
+vt 0.612704 0.301958
+vt 0.278288 0.491767
+vt 0.136170 0.301428
+vt 0.385039 0.315647
+vt 0.861174 0.302958
+vt 0.817615 0.924676
+vt 0.662334 0.996212
+vt 0.719667 0.785775
+vt 0.955856 0.540882
+vt 0.919844 0.749017
+vt 0.810792 0.580191
+vt 0.698724 0.249779
+vt 0.882029 0.358101
+vt 0.648319 0.423681
+vt 0.738504 0.311189
+vt 0.859769 0.100574
+vt 0.955856 0.301223
+vt 0.603011 0.109855
+vt 0.889116 0.979094
+vt 0.625593 0.954685
+vt 0.572947 0.723101
+vt 0.629662 0.708272
+vt 0.361849 0.694965
+vt 0.626863 0.523494
+vt 0.877334 0.514944
+vt 0.753445 0.687054
+vt 0.678897 0.522004
+vt 0.804007 0.322784
+vt 0.508145 0.125975
+vt 0.614686 0.322544
+vt 0.274631 0.088482
+vt 0.046907 0.080882
+vt 0.724191 0.150589
+vt 0.955856 0.101994
+vt 0.459738 0.810380
+vt 0.524431 0.596612
+vt 0.614955 0.619521
+vt 0.385224 0.455707
+vt 0.518113 0.743431
+vt 0.397247 0.481913
+vt 0.473092 0.333636
+vt 0.593136 0.806842
+vt 0.542133 0.566645
+vt 0.245991 0.361941
+vt 0.291514 0.126530
+vt 0.515385 0.289890
+vt 0.348981 0.560141
+vt 0.480373 0.537386
+vt 0.705144 0.472239
+vt 0.601667 0.722403
+vt 0.283471 0.700220
+vt 0.061144 0.812481
+vt 0.120014 0.502516
+vt 0.080353 0.535703
+vt 0.356859 0.719702
+vt 0.417004 0.243099
+vt 0.001005 0.468262
+vt 0.186797 0.314823
+vt 0.187216 0.555587
+vt 0.094383 0.931756
+vt 0.003057 0.709324
+vt 0.238065 0.772821
+vt 0.569632 0.999536
+vt 0.323797 1.000000
+vt 0.482075 0.313011
+vt 0.735871 0.182001
+vt 0.032983 0.251846
+vt 0.574313 0.080491
+vt 0.318361 0.961238
+vt 0.229901 0.178033
+vt 0.256609 0.467686
+vt 0.464307 0.768933
+vt 0.865183 0.712997
+vt 0.725052 0.926500
+vt 0.093408 0.705147
+vt 0.230523 0.921209
+vt 0.968797 0.984796
+vt 0.210756 0.792236
+vt 0.477482 0.962103
+vt 0.256493 0.223509
+vt 0.000000 0.255402
+vt 0.543998 0.500902
+vt 0.362414 0.637562
+vt 0.469769 0.648982
+vt 0.379376 0.894841
+vt 0.246514 0.544201
+vt 0.117965 0.884444
+vt 0.047032 0.632888
+vt 0.079441 0.605161
+vt 0.000000 0.325670
+vt 0.241712 0.163133
+vt 0.470206 0.343559
+usemtl None
+s off
+f 2/1 13/2 17/3
+f 3/4 14/5 19/6
+f 2/7 17/8 20/9
+f 3/4 19/6 16/10
+f 4/11 21/12 25/13
+f 5/14 22/15 26/16
+f 6/17 23/18 24/19
+f 9/20 10/21 3/22
+f 9/20 8/23 10/21
+f 12/24 13/2 2/1
+f 12/24 11/25 13/2
+f 11/25 1/26 13/2
+f 10/27 14/5 3/4
+f 10/27 12/28 14/5
+f 12/28 2/7 14/5
+f 15/29 16/30 6/31
+f 15/29 9/20 16/30
+f 9/20 3/22 16/30
+f 17/3 18/32 4/33
+f 17/3 13/2 18/32
+f 13/2 1/26 18/32
+f 19/6 20/9 5/34
+f 19/6 14/5 20/9
+f 14/5 2/7 20/9
+f 18/32 21/35 4/33
+f 20/9 22/36 5/34
+f 20/9 17/8 22/36
+f 17/8 4/37 22/36
+f 16/10 23/38 6/39
+f 16/10 19/6 23/38
+f 19/6 5/34 23/38
+f 56/40 57/41 7/42
+f 57/41 54/43 24/19
+f 1/26 42/44 49/45
+f 38/46 9/20 15/29
+f 25/13 21/12 59/47
+f 15/29 6/31 44/48
+f 26/16 25/13 7/42
+f 26/16 22/15 25/13
+f 22/15 4/11 25/13
+f 24/19 26/16 7/42
+f 24/19 23/18 26/16
+f 23/18 5/14 26/16
+f 27/49 36/50 38/46
+f 32/51 21/35 49/45
+f 27/49 38/46 43/52
+f 28/53 37/54 45/55
+f 29/56 41/57 47/58
+f 1/26 11/25 42/44
+f 27/49 43/52 46/59
+f 28/53 45/55 48/60
+f 29/56 47/58 49/45
+f 6/17 24/19 33/61
+f 30/62 50/63 53/64
+f 31/65 51/66 55/67
+f 32/68 52/69 56/40
+f 35/70 37/54 28/53
+f 35/70 36/71 37/54
+f 36/50 27/49 37/72
+f 9/20 38/46 8/23
+f 38/46 36/50 39/73
+f 40/74 41/57 29/56
+f 40/75 35/70 41/76
+f 35/70 28/53 41/76
+f 44/48 38/46 15/29
+f 38/46 39/73 8/23
+f 40/74 29/56 42/44
+f 43/52 44/48 33/77
+f 43/52 38/46 44/48
+f 45/55 46/78 30/79
+f 45/55 37/54 46/78
+f 37/72 27/49 46/59
+f 47/80 48/60 31/81
+f 47/80 41/76 48/60
+f 41/76 28/53 48/60
+f 11/25 40/74 42/44
+f 42/44 29/56 49/45
+f 46/78 50/82 30/79
+f 46/59 43/52 50/83
+f 43/52 33/77 50/83
+f 48/60 51/84 31/81
+f 48/60 45/55 51/84
+f 45/55 30/79 51/84
+f 49/45 52/85 32/51
+f 49/45 47/58 52/85
+f 47/58 31/86 52/85
+f 18/32 1/26 60/87
+f 21/35 18/32 60/87
+f 6/31 33/77 44/48
+f 53/64 54/43 34/88
+f 53/64 50/63 54/43
+f 50/63 33/61 54/43
+f 55/67 53/64 34/88
+f 55/67 51/66 53/64
+f 51/66 30/62 53/64
+f 56/40 55/67 34/88
+f 56/40 52/69 55/67
+f 52/69 31/65 55/67
+f 57/41 56/40 34/88
+f 21/12 32/68 56/40
+f 25/13 59/47 7/42
+f 54/43 57/41 34/88
+f 7/42 57/41 24/19
+f 33/61 24/19 54/43
+f 11/89 12/90 58/91
+f 12/90 10/92 58/91
+f 10/92 8/93 58/91
+f 8/93 39/94 58/91
+f 39/94 36/95 58/91
+f 36/95 35/96 58/91
+f 35/96 40/97 58/91
+f 40/97 11/89 58/91
+f 21/12 56/40 59/47
+f 59/47 56/40 7/42
+f 1/26 49/45 60/87
+f 49/45 21/35 60/87
diff --git a/plantlife_modpack/cavestuff/nodes.lua b/plantlife_modpack/cavestuff/nodes.lua
new file mode 100644
index 0000000..dc537cf
--- /dev/null
+++ b/plantlife_modpack/cavestuff/nodes.lua
@@ -0,0 +1,145 @@
+--Rocks
+
+local cbox = {
+ type = "fixed",
+ fixed = {-5/16, -8/16, -6/16, 5/16, -1/32, 5/16},
+}
+
+minetest.register_node("cavestuff:pebble_1",{
+ description = "Pebble",
+ drawtype = "mesh",
+ mesh = "cavestuff_pebble.obj",
+ tiles = {"undergrowth_pebble.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=3, stone=1},
+ selection_box = cbox,
+ collision_box = cbox,
+ on_place = function(itemstack, placer, pointed_thing)
+ -- place a random pebble node
+ local stack = ItemStack("cavestuff:pebble_"..math.random(1,2))
+ local ret = minetest.item_place(stack, placer, pointed_thing)
+ return ItemStack("cavestuff:pebble_1 "..itemstack:get_count()-(1-ret:get_count()))
+ end,
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("cavestuff:pebble_2",{
+ drawtype = "mesh",
+ mesh = "cavestuff_pebble.obj",
+ tiles = {"undergrowth_pebble.png"},
+ drop = "cavestuff:pebble_1",
+ tiles = {"undergrowth_pebble.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=3, stone=1, not_in_creative_inventory=1},
+ selection_box = cbox,
+ collision_box = cbox,
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("cavestuff:desert_pebble_1",{
+ description = "Desert Pebble",
+ drawtype = "mesh",
+ mesh = "cavestuff_pebble.obj",
+ tiles = {"default_desert_stone.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=3, stone=1},
+ selection_box = cbox,
+ collision_box = cbox,
+ on_place = function(itemstack, placer, pointed_thing)
+ -- place a random pebble node
+ local stack = ItemStack("cavestuff:desert_pebble_"..math.random(1,2))
+ local ret = minetest.item_place(stack, placer, pointed_thing)
+ return ItemStack("cavestuff:desert_pebble_1 "..itemstack:get_count()-(1-ret:get_count()))
+ end,
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("cavestuff:desert_pebble_2",{
+ drawtype = "mesh",
+ mesh = "cavestuff_pebble.obj",
+ drop = "cavestuff:desert_pebble_1",
+ tiles = {"default_desert_stone.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=3, stone=1, not_in_creative__inventory=1},
+ selection_box = cbox,
+ collision_box = cbox,
+ sounds = default.node_sound_stone_defaults(),
+})
+
+--Staclactites
+
+minetest.register_node("cavestuff:stalactite_1",{
+ drawtype="nodebox",
+ tiles = {"undergrowth_pebble.png"},
+ groups = {cracky=3,attached_node=1},
+ description = "Stalactite",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.187500,0.425000,-0.150003,0.162500,0.500000,0.162500},
+ {-0.112500,0.162500,-0.100000,0.087500,0.475000,0.087500},
+ {-0.062500,-0.275000,-0.062500,0.062500,0.500000,0.062500},
+ {-0.037500,-0.837500,0.037500,0.037500,0.500000,-0.025000},
+ }
+ },
+
+ on_place = function(itemstack, placer, pointed_thing)
+ local pt = pointed_thing
+ if minetest.get_node(pt.under).name=="default:stone"
+ and minetest.get_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}).name=="air"
+ and minetest.get_node({x=pt.under.x, y=pt.under.y-2, z=pt.under.z}).name=="air" then
+ minetest.set_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}, {name="cavestuff:stalactite_"..math.random(1,3)})
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ end
+ return itemstack
+ end,
+})
+
+minetest.register_node("cavestuff:stalactite_2",{
+ drawtype="nodebox",
+ tiles = {"undergrowth_pebble.png"},
+ groups = {cracky=3,attached_node=1,not_in_creative_inventory=1},
+ drop = "cavestuff:stalactite_1",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.187500,0.387500,-0.150003,0.162500,0.500000,0.162500},
+ {-0.112500,0.112500,-0.100000,0.087500,0.475000,0.087500},
+ {-0.062500,-0.675000,-0.062500,0.062500,0.500000,0.062500},
+ {-0.037500,-0.975000,0.037500,0.037500,0.500000,-0.025000},
+ }
+ },
+})
+
+minetest.register_node("cavestuff:stalactite_3",{
+ drawtype="nodebox",
+ tiles = {"undergrowth_pebble.png"},
+ groups = {cracky=3,attached_node=1,not_in_creative_inventory=1},
+ drop = "cavestuff:stalactite_1",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.187500,0.387500,-0.150003,0.162500,0.500000,0.162500},
+ {-0.112500,0.037500,-0.100000,0.087500,0.475000,0.087500},
+ {-0.062500,-0.437500,-0.062500,0.062500,0.500000,0.062500},
+ {-0.037500,-1.237500,0.037500,0.037500,0.500000,-0.025000},
+ }
+ },
+})
+
+--Stalagmites
+
+
+
diff --git a/plantlife_modpack/cavestuff/textures/undergrowth_desert_pebble.png b/plantlife_modpack/cavestuff/textures/undergrowth_desert_pebble.png
new file mode 100644
index 0000000..966e937
--- /dev/null
+++ b/plantlife_modpack/cavestuff/textures/undergrowth_desert_pebble.png
Binary files differ
diff --git a/plantlife_modpack/cavestuff/textures/undergrowth_pebble.png b/plantlife_modpack/cavestuff/textures/undergrowth_pebble.png
new file mode 100644
index 0000000..306ca6a
--- /dev/null
+++ b/plantlife_modpack/cavestuff/textures/undergrowth_pebble.png
Binary files differ
diff --git a/plantlife_modpack/copyright.txt b/plantlife_modpack/copyright.txt
new file mode 100644
index 0000000..63d2431
--- /dev/null
+++ b/plantlife_modpack/copyright.txt
@@ -0,0 +1,10 @@
+Ironzorg's Flowers mod served as the basis for the three mods that eventually
+went into creating this file. Any code still remaining from that mod is
+entirely his work (though I'm pretty sure it's all been phased out).
+
+Flowers textures by Ironzorg.
+
+Junglegrass textures are modified copies of the original one from the game's
+default set.
+
+All remaining code, textures, etc. by Vanessa Ezekowitz.
diff --git a/plantlife_modpack/dryplants/crafting.lua b/plantlife_modpack/dryplants/crafting.lua
new file mode 100644
index 0000000..69154b5
--- /dev/null
+++ b/plantlife_modpack/dryplants/crafting.lua
@@ -0,0 +1,360 @@
+-----------------------------------------------------------------------------------------------
+-- Dry Plants - Recipes 0.1.0 -- Short Grass -> Dirt
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- License (everything): WTFPL
+-- Looked at code from: darkage, default, farming, sickle, stairs
+-- Dependencies: default, farming
+-- Supports: flint, stoneage, sumpf
+-----------------------------------------------------------------------------------------------
+
+-----------------------------------------------------------------------------------------------
+-- Short Grass
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({
+ output = "default:dirt",
+ recipe = {
+ {"dryplants:grass_short"},
+ }
+})
+
+-----------------------------------------------------------------------------------------------
+-- Cut Grass
+-----------------------------------------------------------------------------------------------
+-- grass recipes (remove roots)
+minetest.register_craft({
+ output = "dryplants:grass",
+ recipe = {
+ {"default:grass_1"},
+ }
+})
+minetest.register_craft({
+ output = "dryplants:grass",
+ recipe = {
+ {"default:junglegrass"},
+ }
+})
+if minetest.get_modpath("sumpf") ~= nil then
+ minetest.register_craft({
+ output = "dryplants:grass",
+ recipe = {
+ {"sumpf:gras"},
+ }
+ })
+end
+
+-----------------------------------------------------------------------------------------------
+-- Sickle
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({
+ output = "dryplants:sickle",
+ recipe = {
+ {"group:stone",""},
+ {"", "default:stick"},
+ {"default:stick",""}
+ }
+})
+if minetest.get_modpath("flint") ~= nil then
+ minetest.register_craft({
+ output = "dryplants:sickle",
+ recipe = {
+ {"flint:flintstone",""},
+ {"", "default:stick"},
+ {"default:stick",""}
+ }
+ })
+end
+if minetest.get_modpath("stoneage") ~= nil then
+ minetest.register_craft({
+ output = "dryplants:sickle",
+ recipe = {
+ {"stoneage:silex",""},
+ {"", "default:stick"},
+ {"default:stick",""}
+ }
+ })
+end
+
+-----------------------------------------------------------------------------------------------
+-- Hay
+-----------------------------------------------------------------------------------------------
+--cooking
+minetest.register_craft({
+ type = "cooking",
+ output = "dryplants:hay",
+ recipe = "dryplants:grass",
+ cooktime = 2,
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "dryplants:hay",
+ burntime = 1,
+})
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- papyrus -> wetreed
+ output = "dryplants:wetreed 2",
+ recipe = {
+ {"default:papyrus","default:papyrus"},
+ {"default:papyrus","default:papyrus"},
+ }
+})
+minetest.register_craft({ -- reedmace_sapling -> wetreed
+ output = "dryplants:wetreed 2",
+ recipe = {
+ {"dryplants:reedmace_sapling","dryplants:reedmace_sapling"},
+ {"dryplants:reedmace_sapling","dryplants:reedmace_sapling"},
+ }
+})
+minetest.register_craft({ -- reedmace_top -> wetreed
+ output = "dryplants:wetreed 2",
+ recipe = {
+ {"dryplants:reedmace_top","dryplants:reedmace_top"},
+ {"dryplants:reedmace_top","dryplants:reedmace_top"},
+ }
+})
+minetest.register_craft({ -- reedmace -> wetreed
+ output = "dryplants:wetreed 2",
+ recipe = {
+ {"dryplants:reedmace","dryplants:reedmace"},
+ {"dryplants:reedmace","dryplants:reedmace"},
+ }
+})
+minetest.register_craft({ -- reedmace_bottom -> wetreed
+ output = "dryplants:wetreed 2",
+ recipe = {
+ {"dryplants:reedmace_bottom","dryplants:reedmace_bottom"},
+ {"dryplants:reedmace_bottom","dryplants:reedmace_bottom"},
+ }
+})
+
+
+local ReeD = {
+ {"wetreed"},
+ {"reed"}
+}
+for i in pairs(ReeD) do
+ local reed = "dryplants:"..ReeD[i][1]
+ local slab = reed.."_slab"
+ local roof = reed.."_roof"
+ local corner = roof.."_corner"
+ local corner_2 = corner.."_2"
+-----------------------------------------------------------------------------------------------
+-- Block
+-----------------------------------------------------------------------------------------------
+ minetest.register_craft({ -- slab -> block
+ output = reed,
+ recipe = {
+ {slab},
+ {slab},
+ }
+ })
+ minetest.register_craft({ -- roof -> block
+ output = reed,
+ recipe = {
+ {roof},
+ {roof},
+ }
+ })
+ minetest.register_craft({ -- corner -> block
+ type = "shapeless",
+ output = reed.." 3",
+ recipe = {corner,corner,corner,corner,corner,corner,corner,corner}, -- 8x
+ })
+ minetest.register_craft({ -- corner_2 -> block
+ type = "shapeless",
+ output = reed.." 3",
+ recipe = {corner_2,corner_2,corner_2,corner_2,corner_2,corner_2,corner_2,corner_2}, -- 8x
+ })
+-----------------------------------------------------------------------------------------------
+-- Slab
+-----------------------------------------------------------------------------------------------
+ minetest.register_craft({ -- block -> slab
+ output = slab.." 6",
+ recipe = {
+ {reed,reed,reed},
+ }
+ })
+ minetest.register_craft({ -- roof -> slab
+ output = slab,
+ recipe = {
+ {roof},
+ }
+ })
+ minetest.register_craft({ -- corner -> slab
+ output = slab.." 3",
+ recipe = {
+ {corner,corner},
+ {corner,corner},
+ }
+ })
+ minetest.register_craft({ -- corner_2 -> slab
+ output = slab.." 3",
+ recipe = {
+ {corner_2,corner_2},
+ {corner_2,corner_2},
+ }
+ })
+-----------------------------------------------------------------------------------------------
+-- Roof
+-----------------------------------------------------------------------------------------------
+ minetest.register_craft({ -- block -> roof
+ output = roof.." 4",
+ recipe = {
+ {reed,""},
+ {"",reed},
+ }
+ })
+ minetest.register_craft({ -- block -> roof
+ output = roof.." 4",
+ recipe = {
+ {"",reed},
+ {reed,""},
+ }
+ })
+ minetest.register_craft({ -- slab -> roof
+ output = roof,
+ recipe = {
+ {slab},
+ }
+ })
+-----------------------------------------------------------------------------------------------
+-- Roof Corner
+-----------------------------------------------------------------------------------------------
+ minetest.register_craft({ -- block -> corner
+ output = corner.." 8",
+ recipe = {
+ {"",reed,""},
+ {reed,"",reed},
+ }
+ })
+ minetest.register_craft({ -- corner_2 -> corner
+ output = corner,
+ recipe = {
+ {corner_2},
+ }
+ })
+-----------------------------------------------------------------------------------------------
+-- Roof Corner 2
+-----------------------------------------------------------------------------------------------
+ minetest.register_craft({ -- block -> corner_2
+ output = corner_2.." 8",
+ recipe = {
+ {reed,"",reed},
+ {"",reed,""},
+ }
+ })
+ minetest.register_craft({ -- corner -> corner_2
+ output = corner_2,
+ recipe = {
+ {corner},
+ }
+ })
+end
+
+-----------------------------------------------------------------------------------------------
+-- Reed
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- hay -> reed
+ output = "dryplants:reed 2",
+ recipe = {
+ {"dryplants:hay","dryplants:hay"},
+ {"dryplants:hay","dryplants:hay"},
+ }
+})
+--cooking
+minetest.register_craft({ -- wetreed -> reed
+ type = "cooking",
+ output = "dryplants:reed",
+ recipe = "dryplants:wetreed",
+ cooktime = 2,
+})
+--fuel
+minetest.register_craft({
+ type = "fuel",
+ recipe = "dryplants:reed",
+ burntime = 4,
+})
+-----------------------------------------------------------------------------------------------
+-- Reed Slab
+-----------------------------------------------------------------------------------------------
+--cooking
+minetest.register_craft({ -- wetreed_slab -> reed_slab
+ type = "cooking",
+ output = "dryplants:reed_slab",
+ recipe = "dryplants:wetreed_slab",
+ cooktime = 1,
+})
+--fuel
+minetest.register_craft({
+ type = "fuel",
+ recipe = "dryplants:reed_slab",
+ burntime = 2,
+})
+-----------------------------------------------------------------------------------------------
+-- Reed Roof
+-----------------------------------------------------------------------------------------------
+--cooking
+minetest.register_craft({ -- wetreed_roof -> reed_roof
+ type = "cooking",
+ output = "dryplants:reed_roof",
+ recipe = "dryplants:wetreed_roof",
+ cooktime = 1,
+})
+--fuel
+minetest.register_craft({
+ type = "fuel",
+ recipe = "dryplants:reed_roof",
+ burntime = 2,
+})
+-----------------------------------------------------------------------------------------------
+-- Reed Roof Corner
+-----------------------------------------------------------------------------------------------
+--cooking
+minetest.register_craft({ -- wetreed_roof_corner -> reed_roof_corner
+ type = "cooking",
+ output = "dryplants:reed_roof_corner",
+ recipe = "dryplants:wetreed_roof_corner",
+ cooktime = 1,
+})
+--fuel
+minetest.register_craft({
+ type = "fuel",
+ recipe = "dryplants:reed_roof_corner",
+ burntime = 2,
+})
+-----------------------------------------------------------------------------------------------
+-- Wet Reed Roof Corner 2
+-----------------------------------------------------------------------------------------------
+--cooking
+minetest.register_craft({ -- wetreed_roof_corner -> reed_roof_corner
+ type = "cooking",
+ output = "dryplants:reed_roof_corner_2",
+ recipe = "dryplants:wetreed_roof_corner_2",
+ cooktime = 1,
+})
+--fuel
+minetest.register_craft({
+ type = "fuel",
+ recipe = "dryplants:reed_roof_corner_2",
+ burntime = 2,
+})
+-----------------------------------------------------------------------------------------------
+-- Dandelion Leave
+-----------------------------------------------------------------------------------------------
+--[[minetest.register_craftitem("dryplants:dandelion_leave", {
+ description = "Dandelion Leave",
+ inventory_image = "dryplants_dandelion_leave.png",
+ on_use = minetest.item_eat(1),
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = "dryplants:dandelion_leave 4",
+ recipe = {"flowers:dandelion_yellow"},
+ replacements = {
+ {"flowers:dandelion_yellow", "dye:yellow"}
+ },
+})]] \ No newline at end of file
diff --git a/plantlife_modpack/dryplants/depends.txt b/plantlife_modpack/dryplants/depends.txt
new file mode 100644
index 0000000..059033e
--- /dev/null
+++ b/plantlife_modpack/dryplants/depends.txt
@@ -0,0 +1,3 @@
+default
+biome_lib
+farming?
diff --git a/plantlife_modpack/dryplants/init.lua b/plantlife_modpack/dryplants/init.lua
new file mode 100644
index 0000000..e6baa7a
--- /dev/null
+++ b/plantlife_modpack/dryplants/init.lua
@@ -0,0 +1,203 @@
+-----------------------------------------------------------------------------------------------
+local title = "Grasses" -- former "Dry plants"
+local version = "0.1.5"
+local mname = "dryplants"
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- textures & ideas partly by Neuromancer
+
+-- License (everything): WTFPL
+-- Contains code from: default, farming
+-- Looked at code from: darkage, sickle, stairs
+-- Dependencies: default, farming, biome_lib
+-- Supports:
+-----------------------------------------------------------------------------------------------
+abstract_dryplants = {}
+
+dofile(minetest.get_modpath("dryplants").."/crafting.lua")
+dofile(minetest.get_modpath("dryplants").."/settings.txt")
+dofile(minetest.get_modpath("dryplants").."/reed.lua")
+if REEDMACE_GENERATES == true then
+dofile(minetest.get_modpath("dryplants").."/reedmace.lua")
+end
+if SMALL_JUNCUS_GENERATES == true then
+dofile(minetest.get_modpath("dryplants").."/juncus.lua")
+end
+if EXTRA_TALL_GRASS_GENERATES == true then
+dofile(minetest.get_modpath("dryplants").."/moregrass.lua")
+end
+--dofile(minetest.get_modpath("dryplants").."/meadowvariation.lua")
+
+-----------------------------------------------------------------------------------------------
+-- Sickle
+-----------------------------------------------------------------------------------------------
+local function sickle_can_break(pos, deff, player)
+ local def = ItemStack({name=deff.name}):get_definition()
+
+ if not def.diggable or (def.can_dig and not def.can_dig(pos,player)) then
+ minetest.log("info", player:get_player_name() .. " tried to sickle "
+ .. def.name .. " which is not diggable "
+ .. minetest.pos_to_string(pos))
+ return
+ end
+
+ if minetest.is_protected(pos, player:get_player_name()) then
+ minetest.log("action", player:get_player_name()
+ .. " tried to sickle " .. def.name
+ .. " at protected position "
+ .. minetest.pos_to_string(pos))
+ minetest.record_protection_violation(pos, player:get_player_name())
+ return
+ end
+
+ return true
+end
+-- turns nodes with group flora=1 & flower=0 into cut grass
+local function sickle_on_use(itemstack, user, pointed_thing, uses)
+ local pt = pointed_thing
+ -- check if pointing at a node
+ if not pt then
+ return
+ end
+ if pt.type ~= "node" then
+ return
+ end
+
+ local under = minetest.get_node(pt.under)
+ local above_pos = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ local above = minetest.get_node(above_pos)
+
+ -- return if any of the nodes is not registered
+ if not minetest.registered_nodes[under.name] then
+ return
+ end
+ if not minetest.registered_nodes[above.name] then
+ return
+ end
+
+ if not sickle_can_break(pt.under, under, user) then
+ return
+ end
+ -- check if something that can be cut using fine tools
+ if minetest.get_item_group(under.name, "snappy") > 0 then
+ -- check if flora but no flower
+ if minetest.get_item_group(under.name, "flora") == 1 and minetest.get_item_group(under.name, "flower") == 0 then
+ -- turn the node into cut grass, wear out item and play sound
+ minetest.set_node(pt.under, {name="dryplants:grass"})
+ else -- otherwise dig the node
+ if not minetest.node_dig(pt.under, under, user) then
+ return
+ end
+ end
+ minetest.sound_play("default_dig_crumbly", {
+ pos = pt.under,
+ gain = 0.5,
+ })
+ itemstack:add_wear(65535/(uses-1))
+ return itemstack
+ elseif string.find(under.name, "default:dirt_with_grass") then
+ if minetest.is_protected(above_pos, user:get_player_name()) or above.name ~= "air" then
+ return
+ end
+ minetest.set_node(pt.under, {name="dryplants:grass_short"})
+ minetest.set_node(above_pos, {name="dryplants:grass"})
+ minetest.sound_play("default_dig_crumbly", {
+ pos = pt.under,
+ gain = 0.5,
+ })
+ itemstack:add_wear(65535/(uses-1))
+ return itemstack
+ end
+end
+-- the tool
+minetest.register_tool("dryplants:sickle", {
+ description = "Sickle",
+ inventory_image = "dryplants_sickle.png",
+ on_use = function(itemstack, user, pointed_thing)
+ return sickle_on_use(itemstack, user, pointed_thing, 220)
+ end,
+})
+
+-----------------------------------------------------------------------------------------------
+-- Cut Grass
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:grass", {
+ description = "Cut Grass",
+ inventory_image = "dryplants_grass.png",
+ wield_image = "dryplants_grass.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"dryplants_grass.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Cut Grass becomes Hay over time
+-----------------------------------------------------------------------------------------------
+minetest.register_abm({
+ nodenames = {"dryplants:grass"},
+ interval = HAY_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
+ chance = 1,
+ action = function(pos)
+ minetest.set_node(pos, {name="dryplants:hay"})
+ end,
+})
+
+-----------------------------------------------------------------------------------------------
+-- Hay
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:hay", {
+ description = "Hay",
+ inventory_image = "dryplants_hay.png",
+ wield_image = "dryplants_hay.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"dryplants_hay.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Short Grass
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:grass_short", {
+ description = "Short Grass",
+ tiles = {"default_grass.png^dryplants_grass_short.png", "default_dirt.png", "default_dirt.png^default_grass_side.png^dryplants_grass_short_side.png"},
+ is_ground_content = true,
+ groups = {crumbly=3,soil=1,not_in_creative_inventory=1},
+ --drop = 'default:dirt',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Short Grass becomes Dirt with Grass over time
+-----------------------------------------------------------------------------------------------
+minetest.register_abm({
+ nodenames = {"dryplants:grass_short"},
+ interval = GRASS_REGROWING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
+ chance = 100/GRASS_REGROWING_CHANCE,
+ action = function(pos)
+ -- Only become dirt with grass if no cut grass or hay lies on top
+ local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
+ if above.name ~= "dryplants:grass" and above.name ~= "dryplants:hay" then
+ minetest.set_node(pos, {name="default:dirt_with_grass"})
+ end
+ end,
+})
+
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+-----------------------------------------------------------------------------------------------
diff --git a/plantlife_modpack/dryplants/juncus.lua b/plantlife_modpack/dryplants/juncus.lua
new file mode 100644
index 0000000..bfbf23c
--- /dev/null
+++ b/plantlife_modpack/dryplants/juncus.lua
@@ -0,0 +1,133 @@
+-----------------------------------------------------------------------------------------------
+-- Grasses - Juncus 0.0.5
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- textures & ideas partly by Neuromancer
+
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default
+-----------------------------------------------------------------------------------------------
+
+abstract_dryplants.grow_juncus = function(pos)
+ local juncus_type = math.random(2,3)
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
+ or minetest.get_node(right_here).name == "default:junglegrass" then
+ if juncus_type == 2 then
+ minetest.set_node(right_here, {name="dryplants:juncus_02"})
+ else
+ minetest.set_node(right_here, {name="dryplants:juncus"})
+ end
+ end
+end
+
+minetest.register_node("dryplants:juncus", {
+ description = "Juncus",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ tiles = {"dryplants_juncus_03.png"},
+ inventory_image = "dryplants_juncus_inv.png",
+ walkable = false,
+ buildable_to = true,
+ groups = {
+ snappy=3,
+ flammable=2,
+ attached_node=1,
+ flora=1
+ --not_in_creative_inventory=1
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+ on_place = function(itemstack, placer, pointed_thing)
+ local playername = placer:get_player_name()
+ if minetest.is_protected(pointed_thing.above, playername) or
+ minetest.is_protected(pointed_thing.under, playername) then
+ minetest.chat_send_player(playername, "Someone else owns that spot.")
+ return
+ end
+ local pos = pointed_thing.under
+ local juncus_type = math.random(2,3)
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ if juncus_type == 2 then
+ minetest.set_node(right_here, {name="dryplants:juncus_02"})
+ else
+ minetest.set_node(right_here, {name="dryplants:juncus"})
+ end
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+ end,
+})
+minetest.register_node("dryplants:juncus_02", {
+ description = "Juncus",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ tiles = {"dryplants_juncus_02.png"},
+ walkable = false,
+ buildable_to = true,
+ groups = {
+ snappy=3,
+ flammable=2,
+ attached_node=1,
+ flora=1,
+ not_in_creative_inventory=1
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+ drop = "dryplants:juncus",
+})
+-----------------------------------------------------------------------------------------------
+-- GENERATE SMALL JUNCUS
+-----------------------------------------------------------------------------------------------
+-- near water or swamp
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ --"default:desert_sand",
+ --"default:sand",
+ "stoneage:grass_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = JUNCUS_NEAR_WATER_PER_MAPBLOCK,
+ rarity = 101 - JUNCUS_NEAR_WATER_RARITY,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_juncus
+)
+-- at dunes/beach
+biome_lib:register_generate_plant({
+ surface = {
+ --"default:dirt_with_grass",
+ --"default:desert_sand",
+ "default:sand",
+ --"stoneage:grass_with_silex",
+ --"sumpf:peat",
+ --"sumpf:sumpf"
+ },
+ max_count = JUNCUS_AT_BEACH_PER_MAPBLOCK,
+ rarity = 101 - JUNCUS_AT_BEACH_RARITY,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"default:dirt_with_grass"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_juncus
+)
diff --git a/plantlife_modpack/dryplants/meadowvariation.lua b/plantlife_modpack/dryplants/meadowvariation.lua
new file mode 100644
index 0000000..8477657
--- /dev/null
+++ b/plantlife_modpack/dryplants/meadowvariation.lua
@@ -0,0 +1,26 @@
+-----------------------------------------------------------------------------------------------
+-- Grasses - Meadow Variation 0.0.1
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default
+-----------------------------------------------------------------------------------------------
+
+abstract_dryplants.grow_grass_variation = function(pos)
+ local right_here = {x=pos.x, y=pos.y, z=pos.z}
+ minetest.set_node(right_here, {name="dryplants:grass_short"})
+end
+
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ },
+ max_count = 4800,
+ rarity = 25,
+ min_elevation = 1, -- above sea level
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_grass_variation
+)
diff --git a/plantlife_modpack/dryplants/models/plantlike.obj b/plantlife_modpack/dryplants/models/plantlike.obj
new file mode 100644
index 0000000..4b38d39
--- /dev/null
+++ b/plantlife_modpack/dryplants/models/plantlike.obj
@@ -0,0 +1,28 @@
+# Blender v2.73 (sub 0) OBJ File: ''
+# www.blender.org
+o Cylinder
+v 0.359670 -0.500000 0.347329
+v 0.359670 0.500000 0.347329
+v -0.359670 -0.500000 -0.347329
+v -0.359670 0.500000 -0.347329
+v 0.347329 0.500000 -0.359670
+v 0.347329 -0.500000 -0.359670
+v -0.347329 0.500000 0.359670
+v -0.347329 -0.500000 0.359670
+v 0.359670 -0.500000 0.347329
+v 0.359670 0.500000 0.347329
+v -0.359670 -0.500000 -0.347329
+v -0.359670 0.500000 -0.347329
+v 0.347329 0.500000 -0.359670
+v 0.347329 -0.500000 -0.359670
+v -0.347329 0.500000 0.359670
+v -0.347329 -0.500000 0.359670
+vt 1.000000 -0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt -0.000000 0.000000
+s off
+f 1/1 2/2 4/3 3/4
+f 8/1 7/2 5/3 6/4
+f 9/1 11/4 12/3 10/2
+f 16/1 14/4 13/3 15/2
diff --git a/plantlife_modpack/dryplants/moregrass.lua b/plantlife_modpack/dryplants/moregrass.lua
new file mode 100644
index 0000000..88761c8
--- /dev/null
+++ b/plantlife_modpack/dryplants/moregrass.lua
@@ -0,0 +1,33 @@
+-----------------------------------------------------------------------------------------------
+-- Grasses - More Tall Grass 0.0.2
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default
+-----------------------------------------------------------------------------------------------
+
+abstract_dryplants.grow_grass = function(pos)
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ local grass_size = math.random(1,5)
+ if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
+ or minetest.get_node(right_here).name == "default:junglegrass" then
+ minetest.set_node(right_here, {name="default:grass_"..grass_size})
+ end
+end
+
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "stoneage:grass_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = TALL_GRASS_PER_MAPBLOCK,
+ rarity = 101 - TALL_GRASS_RARITY,
+ min_elevation = 1, -- above sea level
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_grass
+)
diff --git a/plantlife_modpack/dryplants/reed.lua b/plantlife_modpack/dryplants/reed.lua
new file mode 100644
index 0000000..6f29028
--- /dev/null
+++ b/plantlife_modpack/dryplants/reed.lua
@@ -0,0 +1,380 @@
+-----------------------------------------------------------------------------------------------
+-- Dry Plants - Reed 0.0.5
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- License (everything): WTFPL
+-- Looked at code from: darkage, default, stairs
+-- Dependencies: default
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("stairs:stair_wetreed", "dryplants:wetreed_roof")
+minetest.register_alias("stairs:slab_wetreed", "dryplants:wetreed_slab")
+minetest.register_alias("stairs:stair_reed", "dryplants:reed_roof")
+minetest.register_alias("stairs:slab_reed", "dryplants:reed_slab")
+
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:wetreed", {
+ description = "Wet Reed",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed_wet.png"},
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed Slab
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:wetreed_slab", {
+ description = "Wet Reed Slab",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed_wet.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed Roof
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:wetreed_roof", {
+ description = "Wet Reed Roof",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed_wet.png"},
+ node_box = {
+ type = "fixed",
+-- { left , bottom , front , right , top , back }
+ fixed = {
+ {-1/2, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 0, 0},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 0, 0},
+ }
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+if AUTO_ROOF_CORNER == true then
+
+ local CoRNeR = {
+-- MaTeRiaL
+ {"wetreed"},
+ {"reed"}
+ }
+
+ for i in pairs(CoRNeR) do
+
+ local MaTeRiaL = CoRNeR[i][1]
+ local roof = "dryplants:"..MaTeRiaL.."_roof"
+ local corner = "dryplants:"..MaTeRiaL.."_roof_corner"
+ local corner_2 = "dryplants:"..MaTeRiaL.."_roof_corner_2"
+
+ minetest.register_abm({
+ nodenames = {roof},
+ interval = 1,
+ chance = 1,
+ action = function(pos)
+
+ local node_east = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z })
+ local node_west = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z })
+ local node_north = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
+ local node_south = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
+ -- corner 1
+ if ((node_west.name == roof and node_west.param2 == 0)
+ or (node_west.name == corner and node_west.param2 == 1))
+ and ((node_north.name == roof and node_north.param2 == 3)
+ or (node_north.name == corner and node_north.param2 == 3))
+ then
+ minetest.set_node(pos, {name=corner, param2=0})
+ end
+
+ if ((node_north.name == roof and node_north.param2 == 1)
+ or (node_north.name == corner and node_north.param2 == 2))
+ and ((node_east.name == roof and node_east.param2 == 0)
+ or (node_east.name == corner and node_east.param2 == 0))
+ then
+ minetest.set_node(pos, {name=corner, param2=1})
+ end
+
+ if ((node_east.name == roof and node_east.param2 == 2)
+ or (node_east.name == corner and node_east.param2 == 3))
+ and ((node_south.name == roof and node_south.param2 == 1)
+ or (node_south.name == corner and node_south.param2 == 1))
+ then
+ minetest.set_node(pos, {name=corner, param2=2})
+ end
+
+ if ((node_south.name == roof and node_south.param2 == 3)
+ or (node_south.name == corner and node_south.param2 == 0))
+ and ((node_west.name == roof and node_west.param2 == 2)
+ or (node_west.name == corner and node_west.param2 == 2))
+ then
+ minetest.set_node(pos, {name=corner, param2=3})
+ end
+ -- corner 2
+ if ((node_west.name == roof and node_west.param2 == 2)
+ or (node_west.name == corner_2 and node_west.param2 == 1))
+ and ((node_north.name == roof and node_north.param2 == 1)
+ or (node_north.name == corner_2 and node_north.param2 == 3))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=0})
+ end
+
+ if ((node_north.name == roof and node_north.param2 == 3)
+ or (node_north.name == corner_2 and node_north.param2 == 2))
+ and ((node_east.name == roof and node_east.param2 == 2)
+ or (node_east.name == corner_2 and node_east.param2 == 0))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=1})
+ end
+
+ if ((node_east.name == roof and node_east.param2 == 0)
+ or (node_east.name == corner_2 and node_east.param2 == 3))
+ and ((node_south.name == roof and node_south.param2 == 3)
+ or (node_south.name == corner_2 and node_south.param2 == 1))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=2})
+ end
+
+ if ((node_south.name == roof and node_south.param2 == 1)
+ or (node_south.name == corner_2 and node_south.param2 == 0))
+ and ((node_west.name == roof and node_west.param2 == 0)
+ or (node_west.name == corner_2 and node_west.param2 == 2))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=3})
+ end
+
+ end,
+ })
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed Roof Corner
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:wetreed_roof_corner", {
+ description = "Wet Reed Roof Corner",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed_wet.png"},
+ node_box = {
+ type = "fixed",
+-- { left , bottom , front , right , top , back }
+ fixed = {
+ {-1/2, 0, 0, 0, 1/2, 1/2},
+ {0, -1/2, 0, 1/2, 0, 1/2},
+ {-1/2, -1/2, -1/2, 0, 0, 0},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 0, 0, 0, 1/2, 1/2},
+ {0, -1/2, 0, 1/2, 0, 1/2},
+ {-1/2, -1/2, -1/2, 0, 0, 0},
+ }
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed Roof Corner 2
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:wetreed_roof_corner_2", {
+ description = "Wet Reed Roof Corner 2",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed_wet.png"},
+ node_box = {
+ type = "fixed",
+-- { left , bottom , front , right , top , back }
+ fixed = {
+ {-1/2, -1/2, 0, 0, 0, 1/2},
+ {0, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, 0, -1/2, 0, 1/2, 0},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 0, 0, 0, 1/2},
+ {0, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, 0, -1/2, 0, 1/2, 0},
+ }
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Wet Reed becomes (dry) Reed over time
+-----------------------------------------------------------------------------------------------
+if REED_WILL_DRY == true then
+
+ local DRyiNG = {
+-- WeT DRy
+ {"dryplants:wetreed", "dryplants:reed"},
+ {"dryplants:wetreed_slab", "dryplants:reed_slab"},
+ {"dryplants:wetreed_roof", "dryplants:reed_roof"},
+ {"dryplants:wetreed_roof_corner", "dryplants:reed_roof_corner"},
+ {"dryplants:wetreed_roof_corner_2", "dryplants:reed_roof_corner_2"}
+ }
+ for i in pairs(DRyiNG) do
+
+ local WeT = DRyiNG[i][1]
+ local DRy = DRyiNG[i][2]
+
+ minetest.register_abm({
+ nodenames = {WeT},
+ interval = REED_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
+ chance = 1,
+ action = function(pos)
+ local direction = minetest.get_node(pos).param2
+ minetest.set_node(pos, {name=DRy, param2=direction})
+ end,
+ })
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- Reed
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reed", {
+ description = "Reed",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed.png"},
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Reed Slab
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reed_slab", {
+ description = "Reed Slab",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Reed Roof
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reed_roof", {
+ description = "Reed Roof",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed.png"},
+ node_box = {
+ type = "fixed",
+-- { left , bottom , front , right , top , back }
+ fixed = {
+ {-1/2, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 0, 0},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 0, 0},
+ }
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Reed Roof Corner
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reed_roof_corner", {
+ description = "Reed Roof Corner",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed.png"},
+ node_box = {
+ type = "fixed",
+-- { left , bottom , front , right , top , back }
+ fixed = {
+ {-1/2, 0, 0, 0, 1/2, 1/2},
+ {0, -1/2, 0, 1/2, 0, 1/2},
+ {-1/2, -1/2, -1/2, 0, 0, 0},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 0, 0, 0, 1/2, 1/2},
+ {0, -1/2, 0, 1/2, 0, 1/2},
+ {-1/2, -1/2, -1/2, 0, 0, 0},
+ }
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- Reed Roof Corner 2
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reed_roof_corner_2", {
+ description = "Reed Roof Corner 2",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"dryplants_reed.png"},
+ node_box = {
+ type = "fixed",
+-- { left , bottom , front , right , top , back }
+ fixed = {
+ {-1/2, -1/2, 0, 0, 0, 1/2},
+ {0, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, 0, -1/2, 0, 1/2, 0},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 0, 0, 0, 1/2},
+ {0, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, 0, -1/2, 0, 1/2, 0},
+ }
+ },
+ groups = {snappy=3, flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+})
diff --git a/plantlife_modpack/dryplants/reedmace.lua b/plantlife_modpack/dryplants/reedmace.lua
new file mode 100644
index 0000000..9547c7a
--- /dev/null
+++ b/plantlife_modpack/dryplants/reedmace.lua
@@ -0,0 +1,411 @@
+-----------------------------------------------------------------------------------------------
+-- Grasses - Reedmace 0.1.1
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- textures & ideas partly by Neuromancer
+
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default, trees
+-----------------------------------------------------------------------------------------------
+
+-- NOTES (from wikipedia, some of this might get implemented)
+-- rhizomes are edible
+-- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus
+-- leaf bases can be eaten raw or cooked
+-- sheath can be removed from the developing green flower spike, which can then be boiled and eaten like corn on the cob
+-- pollen can be collected and used as a flour supplement or thickener
+-- Typha stems and leaves can be used to make paper
+-- The seed hairs were used by some Native American groups as tinder for starting fires
+
+-----------------------------------------------------------------------------------------------
+-- REEDMACE SHAPES
+-----------------------------------------------------------------------------------------------
+
+abstract_dryplants.grow_reedmace = function(pos)
+ local size = math.random(1,3)
+ local spikes = math.random(1,3)
+ local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
+ local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
+ local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
+ if minetest.get_node(pos_01).name == "air" -- bug fix
+ or minetest.get_node(pos_01).name == "dryplants:reedmace_sapling" then
+ if minetest.get_node(pos_02).name ~= "air" then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_top"})
+ elseif minetest.get_node(pos_03).name ~= "air" then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_2"})
+ elseif size == 1 then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_top"})
+ elseif size == 2 then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_2"})
+ elseif size == 3 then
+ if spikes == 1 then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_3_spikes"})
+ else
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_3"})
+ end
+ end
+ end
+end
+
+abstract_dryplants.grow_reedmace_water = function(pos)
+ local size = math.random(1,3)
+ local spikes = math.random(1,3)
+ local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
+ local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
+ local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
+ local pos_04 = {x = pos.x, y = pos.y + 4, z = pos.z}
+ minetest.add_entity(pos_01, "dryplants:reedmace_water_entity")
+ if minetest.get_node(pos_02).name == "air" then -- bug fix
+ if minetest.get_node(pos_03).name ~= "air" then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_top"})
+ elseif minetest.get_node(pos_04).name ~= "air" then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_2"})
+ elseif size == 1 then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_top"})
+ elseif size == 2 then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_2"})
+ elseif size == 3 then
+ if spikes == 1 then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_3_spikes"})
+ else
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_3"})
+ end
+ end
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- REEDMACE SPIKES
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_spikes", {
+ description = "Reedmace",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_spikes.png"},
+ inventory_image = "dryplants_reedmace_spikes.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE height: 1
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_top", {
+ description = "Reedmace, height: 1",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_top.png"},
+ inventory_image = "dryplants_reedmace_top.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE height: 2
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_height_2", {
+ description = "Reedmace, height: 2",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_height_2.png"},
+ inventory_image = "dryplants_reedmace_top.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE height: 3
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_height_3", {
+ description = "Reedmace, height: 3",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_height_3.png"},
+ inventory_image = "dryplants_reedmace_top.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE height: 3 & Spikes
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_height_3_spikes", {
+ description = "Reedmace, height: 3 & Spikes",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_height_3_spikes.png"},
+ inventory_image = "dryplants_reedmace_top.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE STEMS
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace", {
+ description = "Reedmace",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"dryplants_reedmace.png"},
+ inventory_image = "dryplants_reedmace.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+ after_destruct = function(pos,oldnode)
+ local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
+ if node.name == "dryplants:reedmace_top"
+ or node.name == "dryplants:reedmace_spikes" then
+ minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
+ minetest.add_item(pos,"dryplants:reedmace_sapling")
+ end
+ end,
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE BOTTOM
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_bottom", {
+ description = "Reedmace",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_bottom.png"},
+ inventory_image = "dryplants_reedmace_bottom.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ not_in_creative_inventory=1
+ },
+ drop = 'dryplants:reedmace_sapling',
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+ after_destruct = function(pos,oldnode)
+ local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
+ if node.name == "dryplants:reedmace"
+ or node.name == "dryplants:reedmace_top"
+ or node.name == "dryplants:reedmace_spikes" then
+ minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
+ minetest.add_item(pos,"dryplants:reedmace_sapling")
+ end
+ end,
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE "SAPLING" (the drop from the above)
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_sapling", {
+ description = "Reedmace",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_sapling.png"},
+ inventory_image = "dryplants_reedmace_sapling.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ attached_node=1
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-- abm
+minetest.register_abm({
+ nodenames = "dryplants:reedmace_sapling",
+ interval = REEDMACE_GROWING_TIME,
+ chance = 100/REEDMACE_GROWING_CHANCE,
+ action = function(pos, node, _, _)
+ if string.find(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z }).name, "default:water")
+ or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}).name, "default:water")
+ or string.find(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z }).name, "default:water")
+ or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}).name, "default:water") then
+ if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
+ abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
+ end
+ minetest.set_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
+ else
+ abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
+ end
+ end
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE WATER (for entity)
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_water", {
+ description = "Reedmace",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"dryplants_reedmace_water.png"},
+ inventory_image = "dryplants_reedmace_water.png",
+ groups = {not_in_creative_inventory=1},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- REEDMACE WATER ENTITY
+-----------------------------------------------------------------------------------------------
+minetest.register_entity("dryplants:reedmace_water_entity",{
+ visual = "mesh",
+ mesh = "plantlike.obj",
+ visual_size = {x=10, y=10},
+ textures = {"dryplants_reedmace_water.png"},
+ collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
+ on_punch = function(self, puncher)
+ if puncher:is_player() and puncher:get_inventory() then
+ if not minetest.setting_getbool("creative_mode") then
+ puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling")
+ end
+ self.object:remove()
+ end
+ end,
+})
+-----------------------------------------------------------------------------------------------
+-- SPAWN REEDMACE
+-----------------------------------------------------------------------------------------------
+--[[biome_lib:spawn_on_surfaces({
+ spawn_delay = 1200,
+ spawn_plants = {"dryplants:reedmace_sapling"},
+ spawn_chance = 400,
+ spawn_surfaces = {
+ "default:dirt_with_grass",
+ "default:desert_sand",
+ "default:sand",
+ "dryplants:grass_short",
+ "stoneage:grass_with_silex"
+ },
+ seed_diff = 329,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+})]]
+-----------------------------------------------------------------------------------------------
+-- GENERATE REEDMACE
+-----------------------------------------------------------------------------------------------
+-- near water or swamp
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "default:desert_sand",
+ "stoneage:grass_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = REEDMACE_NEAR_WATER_PER_MAPBLOCK,
+ rarity = 101 - REEDMACE_NEAR_WATER_RARITY,
+ --rarity = 60,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_reedmace
+)
+-- in water
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt",
+ "default:dirt_with_grass",
+ --"default:desert_sand",
+ --"stoneage:grass_with_silex",
+ "stoneage:sand_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = REEDMACE_IN_WATER_PER_MAPBLOCK,
+ rarity = 101 - REEDMACE_IN_WATER_RARITY,
+ --rarity = 35,
+ min_elevation = 0, -- a bit below sea level
+ max_elevation = 0, -- ""
+ near_nodes = {"default:water_source","sumpf:dirtywater_source"},
+ near_nodes_size = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_reedmace_water
+)
+-- for oases & tropical beaches & tropical swamps
+biome_lib:register_generate_plant({
+ surface = {
+ "default:sand",
+ "sumpf:sumpf"
+ },
+ max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK,
+ rarity = 101 - REEDMACE_FOR_OASES_RARITY,
+ --rarity = 10,
+ neighbors = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
+ ncount = 1,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"default:desert_sand","sumpf:sumpf"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_dryplants.grow_reedmace
+)
diff --git a/plantlife_modpack/dryplants/settings.txt b/plantlife_modpack/dryplants/settings.txt
new file mode 100644
index 0000000..cc12a9c
--- /dev/null
+++ b/plantlife_modpack/dryplants/settings.txt
@@ -0,0 +1,52 @@
+-- Here you can enable/disable the different plants
+REEDMACE_GENERATES = true
+SMALL_JUNCUS_GENERATES = true
+EXTRA_TALL_GRASS_GENERATES = true
+
+
+
+-- Amount of Reedmace near water or swamp
+REEDMACE_NEAR_WATER_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
+REEDMACE_NEAR_WATER_RARITY = 40 -- percent
+
+-- Amount of Reedmace in water
+REEDMACE_IN_WATER_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
+REEDMACE_IN_WATER_RARITY = 65 -- percent
+
+-- Amount of Reedmace for oases, tropical beaches and tropical swamps
+REEDMACE_FOR_OASES_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
+REEDMACE_FOR_OASES_RARITY = 90 -- percent
+
+-- growing of reedmace sapling
+REEDMACE_GROWING_TIME = 600 -- seconds
+REEDMACE_GROWING_CHANCE = 5 -- percent
+
+
+
+-- Amount of small Juncus near water or swamp
+JUNCUS_NEAR_WATER_PER_MAPBLOCK = 70 -- plants per 80x80x80 nodes (absolute maximum number)
+JUNCUS_NEAR_WATER_RARITY = 75 -- percent
+
+-- Amount of small Juncus at dunes/beach
+JUNCUS_AT_BEACH_PER_MAPBLOCK = 70 -- plants per 80x80x80 nodes (absolute maximum number)
+JUNCUS_AT_BEACH_RARITY = 75 -- percent
+
+
+
+-- Tall Grass on dirt with grass
+TALL_GRASS_PER_MAPBLOCK = 4800 -- plants per 80x80x80 nodes (absolute maximum number)
+TALL_GRASS_RARITY = 75 -- percent
+
+
+
+-- short grass becomes dirt with grass again
+GRASS_REGROWING_TIME = 1200 -- seconds
+GRASS_REGROWING_CHANCE = 5 -- percent
+
+HAY_DRYING_TIME = 3600 -- seconds
+
+REED_WILL_DRY = false -- wet reed nodes will become dry reed nodes
+REED_DRYING_TIME = 3600 -- seconds
+
+AUTO_ROOF_CORNER = true
+
diff --git a/plantlife_modpack/dryplants/textures/default_grass_1.png b/plantlife_modpack/dryplants/textures/default_grass_1.png
new file mode 100644
index 0000000..8820e7e
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/default_grass_1.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/default_grass_2.png b/plantlife_modpack/dryplants/textures/default_grass_2.png
new file mode 100644
index 0000000..9929548
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/default_grass_2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/default_grass_3.png b/plantlife_modpack/dryplants/textures/default_grass_3.png
new file mode 100644
index 0000000..4d62f69
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/default_grass_3.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/default_grass_4.png b/plantlife_modpack/dryplants/textures/default_grass_4.png
new file mode 100644
index 0000000..8ad76c5
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/default_grass_4.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/default_grass_5.png b/plantlife_modpack/dryplants/textures/default_grass_5.png
new file mode 100644
index 0000000..799b0fd
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/default_grass_5.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_grass.png b/plantlife_modpack/dryplants/textures/dryplants_grass.png
new file mode 100644
index 0000000..cbd276e
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_grass.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_grass_short.png b/plantlife_modpack/dryplants/textures/dryplants_grass_short.png
new file mode 100644
index 0000000..30553aa
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_grass_short.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_grass_short_side.png b/plantlife_modpack/dryplants/textures/dryplants_grass_short_side.png
new file mode 100644
index 0000000..bc27507
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_grass_short_side.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_hay.png b/plantlife_modpack/dryplants/textures/dryplants_hay.png
new file mode 100644
index 0000000..600c508
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_hay.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_juncus_02.png b/plantlife_modpack/dryplants/textures/dryplants_juncus_02.png
new file mode 100644
index 0000000..2e4f840
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_juncus_02.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_juncus_03.png b/plantlife_modpack/dryplants/textures/dryplants_juncus_03.png
new file mode 100644
index 0000000..ff3d9c5
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_juncus_03.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_juncus_inv.png b/plantlife_modpack/dryplants/textures/dryplants_juncus_inv.png
new file mode 100644
index 0000000..d5b9dca
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_juncus_inv.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reed.png b/plantlife_modpack/dryplants/textures/dryplants_reed.png
new file mode 100644
index 0000000..b350a78
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reed.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reed_wet.png b/plantlife_modpack/dryplants/textures/dryplants_reed_wet.png
new file mode 100644
index 0000000..cd4488a
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reed_wet.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace.png
new file mode 100644
index 0000000..d14686f
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_bottom.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_bottom.png
new file mode 100644
index 0000000..d83c36d
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_bottom.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_2.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_2.png
new file mode 100644
index 0000000..4ac816a
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3.png
new file mode 100644
index 0000000..5cbd8d8
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3_spikes.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3_spikes.png
new file mode 100644
index 0000000..16a29b3
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_height_3_spikes.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_sapling.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_sapling.png
new file mode 100644
index 0000000..04b8c1f
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_sapling.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_spikes.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_spikes.png
new file mode 100644
index 0000000..4a23745
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_spikes.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_top.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_top.png
new file mode 100644
index 0000000..8532ece
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_top.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_reedmace_water.png b/plantlife_modpack/dryplants/textures/dryplants_reedmace_water.png
new file mode 100644
index 0000000..3ebf93c
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_reedmace_water.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/dryplants_sickle.png b/plantlife_modpack/dryplants/textures/dryplants_sickle.png
new file mode 100644
index 0000000..e496062
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/dryplants_sickle.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/big_pic_8.png b/plantlife_modpack/dryplants/textures/not_in_use/big_pic_8.png
new file mode 100644
index 0000000..aac9520
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/big_pic_8.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/big_pic_9.png b/plantlife_modpack/dryplants/textures/not_in_use/big_pic_9.png
new file mode 100644
index 0000000..1ebe95c
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/big_pic_9.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_cattailsG_m2.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_cattailsG_m2.png
new file mode 100644
index 0000000..0a2cae1
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_cattailsG_m2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_left.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_left.png
new file mode 100644
index 0000000..b771a55
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_left.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_right.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_right.png
new file mode 100644
index 0000000..a9f4b7e
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_right.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_whole2.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_whole2.png
new file mode 100644
index 0000000..67c3cb8
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_02_whole2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_left.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_left.png
new file mode 100644
index 0000000..dc8a33e
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_left.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_right.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_right.png
new file mode 100644
index 0000000..23b5cf3
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_right.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_whole2.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_whole2.png
new file mode 100644
index 0000000..d494ae4
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_juncus_03_whole2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_01.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_01.png
new file mode 100644
index 0000000..aaab5fe
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_01.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_02.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_02.png
new file mode 100644
index 0000000..5c8751a
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_02.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_03.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_03.png
new file mode 100644
index 0000000..342b8b8
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_03.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_04.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_04.png
new file mode 100644
index 0000000..a1d708d
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_04.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_left.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_left.png
new file mode 100644
index 0000000..643bbea
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_left.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_right.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_right.png
new file mode 100644
index 0000000..d415003
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_bottom_right.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_left.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_left.png
new file mode 100644
index 0000000..1a3bd92
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_left.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_right.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_right.png
new file mode 100644
index 0000000..b178d4a
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_right.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_left.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_left.png
new file mode 100644
index 0000000..18ae716
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_left.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_right.png b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_right.png
new file mode 100644
index 0000000..e511b24
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/dryplants_reedmace_top_right.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/reedmace2.png b/plantlife_modpack/dryplants/textures/not_in_use/reedmace2.png
new file mode 100644
index 0000000..ca505bd
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/reedmace2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/reedmace3.png b/plantlife_modpack/dryplants/textures/not_in_use/reedmace3.png
new file mode 100644
index 0000000..d2ec729
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/reedmace3.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/reedmace4.png b/plantlife_modpack/dryplants/textures/not_in_use/reedmace4.png
new file mode 100644
index 0000000..9ba759b
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/reedmace4.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/reedtest.png b/plantlife_modpack/dryplants/textures/not_in_use/reedtest.png
new file mode 100644
index 0000000..33822ef
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/reedtest.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/not_in_use/texturing.png b/plantlife_modpack/dryplants/textures/not_in_use/texturing.png
new file mode 100644
index 0000000..6a18fda
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/not_in_use/texturing.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old3.png b/plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old3.png
new file mode 100644
index 0000000..f6f6c5b
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old3.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old4.png b/plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old4.png
new file mode 100644
index 0000000..6e7611c
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_grass_short_old4.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_left_old.png b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_left_old.png
new file mode 100644
index 0000000..ce49ec2
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_left_old.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_right_old.png b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_right_old.png
new file mode 100644
index 0000000..e512a77
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_02_right_old.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_left_old.png b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_left_old.png
new file mode 100644
index 0000000..7644a0d
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_left_old.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_right_old.png b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_right_old.png
new file mode 100644
index 0000000..801cf23
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_juncus_03_right_old.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_left_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_left_old2.png
new file mode 100644
index 0000000..7d25e49
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_left_old2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_old4.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_old4.png
new file mode 100644
index 0000000..a02b19b
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_old4.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_right_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_right_old2.png
new file mode 100644
index 0000000..0b13beb
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_bottom_right_old2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_left_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_left_old2.png
new file mode 100644
index 0000000..784d45d
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_left_old2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_old8.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_old8.png
new file mode 100644
index 0000000..1498b5f
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_old8.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_right_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_right_old2.png
new file mode 100644
index 0000000..db758c4
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_right_old2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_spikes_old3.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_spikes_old3.png
new file mode 100644
index 0000000..207a747
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_spikes_old3.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_left_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_left_old2.png
new file mode 100644
index 0000000..6d9afce
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_left_old2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_old3.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_old3.png
new file mode 100644
index 0000000..6eedad4
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_old3.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_right_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_right_old2.png
new file mode 100644
index 0000000..333f587
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_top_right_old2.png
Binary files differ
diff --git a/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_water_old2.png b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_water_old2.png
new file mode 100644
index 0000000..6b10bff
--- /dev/null
+++ b/plantlife_modpack/dryplants/textures/old/dryplants_reedmace_water_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/crafting.lua b/plantlife_modpack/ferns/crafting.lua
new file mode 100644
index 0000000..8d8b3ed
--- /dev/null
+++ b/plantlife_modpack/ferns/crafting.lua
@@ -0,0 +1,104 @@
+-----------------------------------------------------------------------------------------------
+-- Ferns - Crafting 0.0.5
+-----------------------------------------------------------------------------------------------
+-- (by Mossmanikin)
+-- License (everything): WTFPL
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({
+ type = "shapeless",
+ output = "ferns:fiddlehead 3",
+ recipe = {"ferns:fern_01"},
+ replacements = {
+ {"ferns:fern_01", "ferns:ferntuber"}
+ },
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "ferns:fiddlehead 3",
+ recipe = {"ferns:tree_fern_leaves"},
+ replacements = {
+ {"ferns:tree_fern_leaves", "ferns:sapling_tree_fern"}
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- FIDDLEHEAD
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("archaeplantae:fiddlehead", "ferns:fiddlehead")
+
+minetest.register_craftitem("ferns:fiddlehead", {
+ description = "Fiddlehead",
+ inventory_image = "ferns_fiddlehead.png",
+ on_use = minetest.item_eat(-1), -- slightly poisonous when raw
+})
+minetest.register_craft({
+ type = "cooking",
+ output = "ferns:fiddlehead_roasted",
+ recipe = "ferns:fiddlehead",
+ cooktime = 1,
+})
+minetest.register_craftitem("ferns:fiddlehead_roasted", {
+ description = "Roasted Fiddlehead",
+ inventory_image = "ferns_fiddlehead_roasted.png",
+ on_use = minetest.item_eat(1), -- edible when cooked
+})
+-----------------------------------------------------------------------------------------------
+-- FERN TUBER
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("archaeplantae:ferntuber", "ferns:ferntuber")
+
+minetest.register_craftitem("ferns:ferntuber", {
+ description = "Fern Tuber",
+ inventory_image = "ferns_ferntuber.png",
+})
+minetest.register_craft({
+ type = "cooking",
+ output = "ferns:ferntuber_roasted",
+ recipe = "ferns:ferntuber",
+ cooktime = 3,
+})
+
+minetest.register_alias("archaeplantae:ferntuber_roasted", "ferns:ferntuber_roasted")
+
+minetest.register_craftitem("ferns:ferntuber_roasted", {
+ description = "Roasted Fern Tuber",
+ inventory_image = "ferns_ferntuber_roasted.png",
+ on_use = minetest.item_eat(3),
+})
+-----------------------------------------------------------------------------------------------
+-- HORSETAIL (EQUISETUM) --> GREEN DYE https://en.wikipedia.org/wiki/Equisetum
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({
+ type = "shapeless",
+ output = "dye:green",
+ recipe = {"group:horsetail"},
+})
+-----------------------------------------------------------------------------------------------
+-- GLUE WOODEN TOOLS with RESIN & POLISH them with HORSETAIL (planned)
+-----------------------------------------------------------------------------------------------
+--[[minetest.register_craft({
+ type = "shapeless",
+ output = "default:pick_wood",
+ recipe = {"default:pick_wood","group:horsetail","farming:string","default:stick"},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:shovel_wood",
+ recipe = {"default:shovel_wood","group:horsetail","farming:string","default:stick"},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:axe_wood",
+ recipe = {"default:axe_wood","group:horsetail","farming:string","default:stick"},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:sword_wood",
+ recipe = {"default:sword_wood","group:horsetail","farming:string","default:stick"},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = "farming:hoe_wood",
+ recipe = {"farming:hoe_wood","group:horsetail","farming:string","default:stick"},
+})]]
+
diff --git a/plantlife_modpack/ferns/depends.txt b/plantlife_modpack/ferns/depends.txt
new file mode 100644
index 0000000..9d994c0
--- /dev/null
+++ b/plantlife_modpack/ferns/depends.txt
@@ -0,0 +1,2 @@
+default
+biome_lib \ No newline at end of file
diff --git a/plantlife_modpack/ferns/fern.lua b/plantlife_modpack/ferns/fern.lua
new file mode 100644
index 0000000..51cac8f
--- /dev/null
+++ b/plantlife_modpack/ferns/fern.lua
@@ -0,0 +1,196 @@
+-----------------------------------------------------------------------------------------------
+-- Ferns - Fern 0.1.0
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default, flowers, painting, trees
+-- Dependencies: biome_lib
+-- Supports: dryplants, stoneage, sumpf
+-----------------------------------------------------------------------------------------------
+-- some inspiration from here
+-- https://en.wikipedia.org/wiki/Athyrium_yokoscense
+-- http://www.mygarden.net.au/gardening/athyrium-yokoscense/3900/1
+-----------------------------------------------------------------------------------------------
+
+assert(abstract_ferns.config.enable_lady_fern == true)
+
+-- Maintain backward compatibilty
+minetest.register_alias("archaeplantae:fern", "ferns:fern_03")
+minetest.register_alias("archaeplantae:fern_mid", "ferns:fern_02")
+minetest.register_alias("archaeplantae:fern_small", "ferns:fern_01")
+minetest.register_alias("ferns:fern_04", "ferns:fern_02") -- for placing
+
+local nodenames = {}
+
+local function create_nodes()
+ local images = { "ferns_fern.png", "ferns_fern_mid.png", "ferns_fern_big.png" }
+ local vscales = { 1, 2, 2.2 }
+ local descs = { "Lady-fern (Athyrium)", nil, nil }
+
+ for i = 1, 3 do
+ local node_on_place = nil
+ if i == 1 then
+ node_on_place = function(itemstack, placer, pointed_thing)
+ -- place a random fern
+ local stack = ItemStack("ferns:fern_0"..math.random(1,4))
+ local ret = minetest.item_place(stack, placer, pointed_thing)
+ return ItemStack("ferns:fern_01 "..itemstack:get_count()-(1-ret:get_count())) -- TODO FIXME?
+ end
+ end
+ nodenames[i] = "ferns:fern_"..string.format("%02d", i)
+ minetest.register_node(nodenames[i], {
+ description = descs[i] or ("Lady-fern (Athyrium) " .. string.format("%02d", i)),
+ inventory_image = "ferns_fern.png",
+ drawtype = "plantlike",
+ visual_scale = vscales[i],
+ paramtype = "light",
+ tiles = { images[i] },
+ walkable = false,
+ buildable_to = true,
+ groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+ drop = "ferns:fern_01",
+ on_place = node_on_place
+ })
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- Init
+-----------------------------------------------------------------------------------------------
+
+create_nodes()
+
+-----------------------------------------------------------------------------------------------
+-- Spawning
+-----------------------------------------------------------------------------------------------
+
+if abstract_ferns.config.lady_ferns_near_tree == true then
+ biome_lib:register_generate_plant({ -- near trees (woodlands)
+ surface = {
+ "default:dirt_with_grass",
+ "default:mossycobble",
+ "default:desert_sand",
+ "default:sand",
+ "default:jungletree",
+ "stoneage:grass_with_silex",
+ "sumpf:sumpf"
+ },
+ max_count = 30,
+ rarity = 62,--63,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"group:tree"},
+ near_nodes_size = 3,--4,
+ near_nodes_vertical = 2,--3,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 0.4,
+ temp_max = -0.5, -- 55 °C (too hot?)
+ temp_min = 0.75, -- -12 °C
+ random_facedir = { 0, 179 },
+ },
+ nodenames
+ )
+end
+
+if abstract_ferns.config.lady_ferns_near_rock == true then
+ biome_lib:register_generate_plant({ -- near stone (mountains)
+ surface = {
+ "default:dirt_with_grass",
+ "default:mossycobble",
+ "group:falling_node",
+ --"default:jungletree",
+ "stoneage:grass_with_silex",
+ "sumpf:sumpf"
+ },
+ max_count = 35,
+ rarity = 40,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"group:stone"},
+ near_nodes_size = 1,
+ near_nodes_count = 16,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 0.4,
+ temp_max = -0.5, -- 55 °C (too hot?)
+ temp_min = 0.75, -- -12 °C
+ random_facedir = { 0, 179 },
+ },
+ nodenames
+ )
+end
+
+if abstract_ferns.config.lady_ferns_near_ores == true then -- this one causes a huge fps drop
+ biome_lib:register_generate_plant({ -- near ores (potential mining sites)
+ surface = {
+ "default:dirt_with_grass",
+ "default:mossycobble",
+ "default:stone_with_coal",
+ "default:stone_with_iron",
+ "moreores:mineral_tin",
+ "moreores:mineral_silver",
+ "sumpf:sumpf"
+ },
+ max_count = 1200,--1600, -- maybe too much? :D
+ rarity = 25,--15,
+ min_elevation = 1, -- above sea level
+ near_nodes = {
+ "default:stone_with_iron",
+ --"default:stone_with_copper",
+ --"default:stone_with_mese",
+ --"default:stone_with_gold",
+ --"default:stone_with_diamond",
+ "moreores:mineral_tin",
+ "moreores:mineral_silver"
+ --"moreores:mineral_mithril"
+ },
+ near_nodes_size = 2,
+ near_nodes_vertical = 4,--5,--6,
+ near_nodes_count = 2,--3,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 0.4,
+ temp_max = -0.5, -- 55 °C (too hot?)
+ temp_min = 0.75, -- -12 °C
+ random_facedir = { 0, 179 },
+ },
+ nodenames
+ )
+end
+
+if abstract_ferns.config.lady_ferns_in_groups == true then -- this one is meant as a replacement of Ferns_near_Ores
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "default:mossycobble",
+ "default:stone_with_coal",
+ "default:stone_with_iron",
+ "moreores:mineral_tin",
+ "moreores:mineral_silver",
+ "sumpf:sumpf"
+ },
+ max_count = 70,
+ rarity = 25,--15,
+ min_elevation = 1, -- above sea level
+ near_nodes = {
+ "default:stone"
+ },
+ near_nodes_size = 2,
+ near_nodes_vertical = 2,--6,
+ near_nodes_count = 3,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 0.4,
+ temp_max = -0.5, -- 55 °C (too hot?)
+ temp_min = 0.75, -- -12 °C
+ random_facedir = { 0, 179 },
+ },
+ nodenames
+ )
+end
diff --git a/plantlife_modpack/ferns/gianttreefern.lua b/plantlife_modpack/ferns/gianttreefern.lua
new file mode 100644
index 0000000..bc6516b
--- /dev/null
+++ b/plantlife_modpack/ferns/gianttreefern.lua
@@ -0,0 +1,336 @@
+-----------------------------------------------------------------------------------------------
+-- Ferns - Giant Tree Fern 0.1.1
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: 4seasons, default
+-- Supports: vines
+-----------------------------------------------------------------------------------------------
+
+assert(abstract_ferns.config.enable_giant_treefern == true)
+
+-- lot of code, lot to load
+
+abstract_ferns.grow_giant_tree_fern = function(pos)
+ local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
+ if minetest.get_node(pos_01).name ~= "air"
+ and minetest.get_node(pos_01).name ~= "ferns:sapling_giant_tree_fern"
+ and minetest.get_node(pos_01).name ~= "default:junglegrass" then
+ return
+ end
+
+ local size = math.random(12,16) -- min of range must be >= 4
+
+ local leafchecks = {
+ {
+ direction = 3,
+ positions = {
+ {x = pos.x + 1, y = pos.y + size - 1, z = pos.z },
+ {x = pos.x + 2, y = pos.y + size , z = pos.z },
+ {x = pos.x + 3, y = pos.y + size - 1, z = pos.z },
+ {x = pos.x + 4, y = pos.y + size - 2, z = pos.z }
+ }
+ },
+ {
+ direction = 1,
+ positions = {
+ {x = pos.x - 1, y = pos.y + size - 1, z = pos.z },
+ {x = pos.x - 2, y = pos.y + size, z = pos.z },
+ {x = pos.x - 3, y = pos.y + size - 1, z = pos.z },
+ {x = pos.x - 4, y = pos.y + size - 2, z = pos.z }
+ }
+ },
+ {
+ direction = 2,
+ positions = {
+ {x = pos.x , y = pos.y + size - 1, z = pos.z + 1},
+ {x = pos.x , y = pos.y + size , z = pos.z + 2},
+ {x = pos.x , y = pos.y + size - 1, z = pos.z + 3},
+ {x = pos.x , y = pos.y + size - 2, z = pos.z + 4}
+ }
+ },
+ {
+ direction = 0,
+ positions = {
+ {x = pos.x , y = pos.y + size - 1, z = pos.z - 1},
+ {x = pos.x , y = pos.y + size , z = pos.z - 2},
+ {x = pos.x , y = pos.y + size - 1, z = pos.z - 3},
+ {x = pos.x , y = pos.y + size - 2, z = pos.z - 4}
+ }
+ }
+ }
+
+ for i = 1, size-3 do
+ minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, {name="ferns:fern_trunk_big"})
+ end
+ minetest.set_node({x = pos.x, y = pos.y + size-2, z = pos.z}, {name="ferns:fern_trunk_big_top"})
+ minetest.set_node({x = pos.x, y = pos.y + size-1, z = pos.z}, {name="ferns:tree_fern_leaves_giant"})
+
+ -- all the checking for air below is to prevent some ugly bugs (incomplete trunks of neighbouring trees), it's a bit slower, but worth the result
+
+ -- assert(#leafchecks == 4)
+ for i = 1, 4 do
+ local positions = leafchecks[i].positions
+ local rot = leafchecks[i].direction
+ local endpos = 4 -- If the loop below adds all intermediate leaves then the "terminating" leaf will be at positions[4]
+ -- assert(#positions == 4)
+ -- add leaves so long as the destination nodes are air
+ for j = 1, 3 do
+ if minetest.get_node(positions[j]).name == "air" then
+ minetest.set_node(positions[j], {name="ferns:tree_fern_leave_big"})
+ else
+ endpos = j
+ break
+ end
+ end
+ -- add the terminating leaf if required and possible
+ if endpos == 4 and minetest.get_node(positions[endpos]).name == "air" then
+ minetest.set_node(positions[endpos], {name="ferns:tree_fern_leave_big_end", param2=rot})
+ end
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- GIANT TREE FERN LEAVES
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:tree_fern_leaves_giant", {
+ description = "Tree Fern Crown (Dicksonia)",
+ drawtype = "plantlike",
+ visual_scale = math.sqrt(8),
+ wield_scale = {x=0.175, y=0.175, z=0.175},
+ paramtype = "light",
+ tiles = {"ferns_fern_tree_giant.png"},
+ inventory_image = "ferns_fern_tree.png",
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ attached_node=1,
+ not_in_creative_inventory=1
+ },
+ drop = {
+ max_items = 2,
+ items = {
+ {
+ -- occasionally, drop a second sapling instead of leaves
+ -- (extra saplings can also be obtained by replanting and
+ -- reharvesting leaves)
+ items = {"ferns:sapling_giant_tree_fern"},
+ rarity = 10,
+ },
+ {
+ items = {"ferns:sapling_giant_tree_fern"},
+ },
+ {
+ items = {"ferns:tree_fern_leaves_giant"},
+ }
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- GIANT TREE FERN LEAVE PART
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:tree_fern_leave_big", {
+ description = "Giant Tree Fern Leaves",
+ drawtype = "raillike",
+ paramtype = "light",
+ tiles = {
+ "ferns_tree_fern_leave_big.png",
+ },
+ walkable = false,
+ groups = {
+ snappy=3,
+ flammable=2,
+ attached_node=1,
+ not_in_creative_inventory=1
+ },
+ drop = "",
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- GIANT TREE FERN LEAVE END
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:tree_fern_leave_big_end", {
+ description = "Giant Tree Fern Leave End",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = { "ferns_tree_fern_leave_big_end.png" },
+ walkable = false,
+ node_box = {
+ type = "fixed",
+-- {left, bottom, front, right, top, back }
+ fixed = {-1/2, -1/2, 1/2, 1/2, 33/64, 1/2},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, 1/2, 1/2, 33/64, 1/2},
+ },
+ groups = {
+ snappy=3,
+ flammable=2,
+ attached_node=1,
+ not_in_creative_inventory=1
+ },
+ drop = "",
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- GIANT TREE FERN TRUNK TOP
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:fern_trunk_big_top", {
+ description = "Giant Fern Trunk",
+ drawtype = "nodebox",
+ paramtype = "light",
+ tiles = {
+ "ferns_fern_trunk_big_top.png^ferns_tree_fern_leave_big_cross.png",
+ "ferns_fern_trunk_big_top.png^ferns_tree_fern_leave_big_cross.png",
+ "ferns_fern_trunk_big.png"
+ },
+ node_box = {
+ type = "fixed",
+-- {left, bottom, front, right, top, back }
+ fixed = {
+ {-1/2, 33/64, -1/2, 1/2, 33/64, 1/2},
+ {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4},
+ },
+ groups = {
+ tree=1,
+ choppy=2,
+ oddly_breakable_by_hand=2,
+ flammable=3,
+ wood=1,
+ not_in_creative_inventory=1,
+ leafdecay=3 -- to support vines
+ },
+ drop = "ferns:fern_trunk_big",
+ sounds = default.node_sound_wood_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- GIANT TREE FERN TRUNK
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:fern_trunk_big", {
+ description = "Giant Fern Trunk",
+ drawtype = "nodebox",
+ paramtype = "light",
+ tiles = {
+ "ferns_fern_trunk_big_top.png",
+ "ferns_fern_trunk_big_top.png",
+ "ferns_fern_trunk_big.png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4},
+ },
+ groups = {tree=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+ after_destruct = function(pos,oldnode)
+ local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
+ if node.name == "ferns:fern_trunk_big" or node.name == "ferns:fern_trunk_big_top" then
+ minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
+ minetest.add_item(pos,"ferns:fern_trunk_big")
+ end
+ end,
+})
+
+-----------------------------------------------------------------------------------------------
+-- GIANT TREE FERN SAPLING
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:sapling_giant_tree_fern", {
+ description = "Giant Tree Fern Sapling",
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = {"ferns_sapling_tree_fern_giant.png"},
+ inventory_image = "ferns_sapling_tree_fern_giant.png",
+ walkable = false,
+ groups = {snappy=3,flammable=2,flora=1,attached_node=1},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+})
+
+-- abm
+minetest.register_abm({
+ nodenames = "ferns:sapling_giant_tree_fern",
+ interval = 1000,
+ chance = 4,
+ action = function(pos, node, _, _)
+ abstract_ferns.grow_giant_tree_fern({x = pos.x, y = pos.y-1, z = pos.z})
+ end
+})
+
+-----------------------------------------------------------------------------------------------
+-- GENERATE GIANT TREE FERN
+-----------------------------------------------------------------------------------------------
+
+-- in jungles
+if abstract_ferns.config.enable_giant_treeferns_in_jungle == true then
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "default:sand",
+ "default:desert_sand"--,
+ --"dryplants:grass_short"
+ },
+ max_count = 12,--27,
+ avoid_nodes = {"group:tree"},
+ avoid_radius = 3,--4,
+ rarity = 85,
+ seed_diff = 329,
+ min_elevation = 1,
+ near_nodes = {"default:jungletree"},
+ near_nodes_size = 6,
+ near_nodes_vertical = 2,--4,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_ferns.grow_giant_tree_fern
+ )
+end
+
+-- for oases & tropical beaches
+if abstract_ferns.config.enable_giant_treeferns_in_oases == true then
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:sand"--,
+ --"default:desert_sand"
+ },
+ max_count = 10,--27,
+ rarity = 90,
+ seed_diff = 329,
+ neighbors = {"default:desert_sand"},
+ ncount = 1,
+ min_elevation = 1,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 1.0,
+ temp_max = -1.0,
+ temp_min = 1.0,
+ },
+ abstract_ferns.grow_giant_tree_fern
+ )
+end
diff --git a/plantlife_modpack/ferns/horsetail.lua b/plantlife_modpack/ferns/horsetail.lua
new file mode 100644
index 0000000..b87f1f9
--- /dev/null
+++ b/plantlife_modpack/ferns/horsetail.lua
@@ -0,0 +1,156 @@
+-----------------------------------------------------------------------------------------------
+-- Archae Plantae - Horsetail 0.0.5
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default, flowers, trees
+-- Dependencies: biome_lib
+-- Supports: dryplants, stoneage, sumpf
+-----------------------------------------------------------------------------------------------
+
+assert(abstract_ferns.config.enable_horsetails == true)
+
+-----------------------------------------------------------------------------------------------
+-- HORSETAIL (EQUISETUM)
+-----------------------------------------------------------------------------------------------
+
+local node_names = {}
+
+local function create_nodes()
+ local selection_boxes = {
+ { -0.15, -1/2, -0.15, 0.15, -1/16, 0.15 },
+ { -0.15, -1/2, -0.15, 0.15, 1/16, 0.15 },
+ { -0.15, -1/2, -0.15, 0.15, 4/16, 0.15 },
+ { -0.15, -1/2, -0.15, 0.15, 7/16, 0.15 },
+ }
+
+ for i = 1, 4 do
+ local node_name = "ferns:horsetail_" .. string.format("%02d", i)
+ local node_img = "ferns_horsetail_" .. string.format("%02d", i) .. ".png"
+ local node_desc
+ local node_on_use = nil
+ local node_drop = "ferns:horsetail_04"
+
+ if i == 1 then
+ node_desc = "Young Horsetail (Equisetum)"
+ node_on_use = minetest.item_eat(1) -- young ones edible https://en.wikipedia.org/wiki/Equisetum
+ node_drop = node_name
+ elseif i == 4 then
+ node_desc = "Horsetail (Equisetum)"
+ else
+ node_desc = "Horsetail (Equisetum) ".. string.format("%02d", i)
+ end
+
+ node_names[i] = node_name
+
+ minetest.register_node(node_name, {
+ description = node_desc,
+ drawtype = "plantlike",
+ paramtype = "light",
+ tiles = { node_img },
+ inventory_image = node_img,
+ walkable = false,
+ buildable_to = true,
+ groups = {snappy=3,flammable=2,attached_node=1,horsetail=1},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = selection_boxes[i],
+ },
+ on_use = node_on_use,
+ drop = node_drop,
+ })
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- Init
+-----------------------------------------------------------------------------------------------
+
+create_nodes()
+
+-----------------------------------------------------------------------------------------------
+-- Spawning
+-----------------------------------------------------------------------------------------------
+if abstract_ferns.config.enable_horsetails_spawning == true then
+ biome_lib:spawn_on_surfaces({
+ spawn_delay = 1200,
+ spawn_plants = node_names,
+ spawn_chance = 400,
+ spawn_surfaces = {
+ "default:dirt_with_grass",
+ "default:desert_sand",
+ "default:sand",
+ "dryplants:grass_short",
+ "stoneage:grass_with_silex",
+ "default:mossycobble",
+ "default:gravel"
+ },
+ seed_diff = 329,
+ min_elevation = 1, -- above sea level
+ near_nodes = {"default:water_source","default:gravel"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ --random_facedir = { 0, 179 },
+ })
+end
+
+-----------------------------------------------------------------------------------------------
+-- Generating
+-----------------------------------------------------------------------------------------------
+
+if abstract_ferns.config.enable_horsetails_on_grass == true then
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "sumpf:sumpf"
+ },
+ max_count = 35,
+ rarity = 40,
+ min_elevation = 1, -- above sea level
+ near_nodes = {
+ "group:water", -- likes water (of course)
+ "default:gravel", -- near those on gravel
+ "default:sand", -- some like sand
+ "default:clay", -- some like clay
+ "stoneage:grass_with_silex",
+ "default:mossycobble",
+ "default:cobble",
+ "sumpf:sumpf"
+ },
+ near_nodes_size = 3,
+ near_nodes_vertical = 2,--3,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ humidity_min = 0.4,
+ temp_max = -0.5, -- 55 °C
+ temp_min = 0.53, -- 0 °C, dies back in winter
+ --random_facedir = { 0, 179 },
+ },
+ node_names
+ )
+end
+
+if abstract_ferns.config.enable_horsetails_on_stones == true then
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:gravel", -- roots go deep
+ "default:mossycobble",
+ "stoneage:dirt_with_silex",
+ "stoneage:grass_with_silex",
+ "stoneage:sand_with_silex", -- roots go deep
+ },
+ max_count = 35,
+ rarity = 20,
+ min_elevation = 1, -- above sea level
+ plantlife_limit = -0.9,
+ humidity_min = 0.4,
+ temp_max = -0.5, -- 55 °C
+ temp_min = 0.53, -- 0 °C, dies back in winter
+ --random_facedir = { 0, 179 },
+ },
+ node_names
+ )
+end
diff --git a/plantlife_modpack/ferns/init.lua b/plantlife_modpack/ferns/init.lua
new file mode 100644
index 0000000..b629d5d
--- /dev/null
+++ b/plantlife_modpack/ferns/init.lua
@@ -0,0 +1,69 @@
+-----------------------------------------------------------------------------------------------
+local title = "Ferns" -- former "Archae Plantae"
+local version = "0.2.0"
+local mname = "ferns" -- former "archaeplantae"
+-----------------------------------------------------------------------------------------------
+-- (by Mossmanikin)
+-- License (everything): WTFPL
+-----------------------------------------------------------------------------------------------
+
+abstract_ferns = {}
+
+dofile(minetest.get_modpath("ferns").."/settings.lua")
+
+if abstract_ferns.config.enable_lady_fern == true then
+ dofile(minetest.get_modpath("ferns").."/fern.lua")
+end
+
+if abstract_ferns.config.enable_horsetails == true then
+ dofile(minetest.get_modpath("ferns").."/horsetail.lua")
+end
+
+if abstract_ferns.config.enable_treefern == true then
+ dofile(minetest.get_modpath("ferns").."/treefern.lua")
+end
+
+if abstract_ferns.config.enable_giant_treefern == true then
+ dofile(minetest.get_modpath("ferns").."/gianttreefern.lua")
+end
+
+dofile(minetest.get_modpath("ferns").."/crafting.lua")
+
+
+-----------------------------------------------------------------------------
+-- TESTS
+-----------------------------------------------------------------------------
+local run_tests = true -- set to false to skip
+
+if run_tests then
+
+ -- These are, essentially, unit tests to make sure that all required item
+ -- strings are registered. The init sequence is not time critical so leaving
+ -- them here won't affect performance.
+
+ -- Check node names
+ if abstract_ferns.config.enable_horsetails then
+ print("[Mod] " ..title.. " Checking horsetail item strings")
+ assert(minetest.registered_items["ferns:horsetail_01"] ~= nil)
+ assert(minetest.registered_items["ferns:horsetail_02"] ~= nil)
+ assert(minetest.registered_items["ferns:horsetail_03"] ~= nil)
+ assert(minetest.registered_items["ferns:horsetail_04"] ~= nil)
+ end
+ if abstract_ferns.config.enable_lady_fern then
+ print("[Mod] ".. title .." Checking lady fern item strings")
+ assert(minetest.registered_items["ferns:fern_01"] ~= nil)
+ assert(minetest.registered_items["ferns:fern_02"] ~= nil)
+ assert(minetest.registered_items["ferns:fern_03"] ~= nil)
+ end
+ if abstract_ferns.config.enable_treefern then
+ print("[Mod] ".. title .." Checking tree fern item strings")
+ assert(minetest.registered_items["ferns:tree_fern_leaves"] ~= nil)
+ assert(minetest.registered_items["ferns:tree_fern_leaves_02"] ~= nil)
+ assert(minetest.registered_items["ferns:fern_trunk"] ~= nil)
+ assert(minetest.registered_items["ferns:sapling_tree_fern"] ~= nil)
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+-----------------------------------------------------------------------------------------------
diff --git a/plantlife_modpack/ferns/settings.lua b/plantlife_modpack/ferns/settings.lua
new file mode 100644
index 0000000..8254fcf
--- /dev/null
+++ b/plantlife_modpack/ferns/settings.lua
@@ -0,0 +1,43 @@
+-- In case you don't wanna have errors:
+
+-- Only change what's behind a "=" (or "--").
+-- Don't use caps (behind a "=").
+
+-- If there's a "false" (behind a "=") you can change it to "true" (and the other way around).
+-- Spelling is important.
+-- If "true" or "false" is necessary as setting, everything(!) which is not spelled "true" will be read as if it were "false" (even "1", "True"...)
+
+-- If you wanna comment something (for example to remember the default value), you can do this by putting "--" in front of the comment.
+-- You can put "--" at the end of a line with "=" in it, or at the beginning of an empty/new line (minetest will ignore what's behind it then).
+-- But don't put "--" in front of a line with "=" in it (or else minetest will ignore the setting and you might get an error).
+
+-- If something is still unclear, don't hesitate to post your question @ https://forum.minetest.net/viewtopic.php?id=6921
+
+abstract_ferns.config = {}
+
+-- Which plants should generate/spawn?
+abstract_ferns.config.enable_lady_fern = true
+abstract_ferns.config.enable_horsetails = true
+abstract_ferns.config.enable_treefern = true
+abstract_ferns.config.enable_giant_treefern = true
+
+-- Where should they generate/spawn? (if they generate/spawn)
+--
+-- Lady-Fern
+abstract_ferns.config.lady_ferns_near_tree = true
+abstract_ferns.config.lady_ferns_near_rock = true
+abstract_ferns.config.lady_ferns_near_ores = true -- if there's a bunch of ferns there's ores nearby, this one causes a huge fps drop
+abstract_ferns.config.lady_ferns_in_groups = false -- this one is meant as a replacement of Ferns_near_Ores: ferns tend to generate in groups, less fps drop, no hint for nearby ores
+--
+-- Horsetails
+abstract_ferns.config.enable_horsetails_spawning = false -- horsetails will grow in already explored areas, over time, near water or gravel
+abstract_ferns.config.enable_horsetails_on_grass = true -- on dirt with grass and swamp (sumpf mod)
+abstract_ferns.config.enable_horsetails_on_stones = true -- on gravel, mossy cobble and silex (stoneage mod)
+--
+-- Tree_Fern
+abstract_ferns.config.enable_treeferns_in_jungle = true
+abstract_ferns.config.enable_treeferns_in_oases = true -- for oases and tropical beaches
+--
+-- Giant_Tree_Fern
+abstract_ferns.config.enable_giant_treeferns_in_jungle = true
+abstract_ferns.config.enable_giant_treeferns_in_oases = true -- for oases and tropical beaches
diff --git a/plantlife_modpack/ferns/textures/ferns_5.png b/plantlife_modpack/ferns/textures/ferns_5.png
new file mode 100644
index 0000000..7e40665
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_5.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_6.png b/plantlife_modpack/ferns/textures/ferns_6.png
new file mode 100644
index 0000000..107bbf6
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_6.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_7.png b/plantlife_modpack/ferns/textures/ferns_7.png
new file mode 100644
index 0000000..b1ac1f5
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_7.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_8.png b/plantlife_modpack/ferns/textures/ferns_8.png
new file mode 100644
index 0000000..db5510b
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_8.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern.png b/plantlife_modpack/ferns/textures/ferns_fern.png
new file mode 100644
index 0000000..7884e5a
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_big.png b/plantlife_modpack/ferns/textures/ferns_fern_big.png
new file mode 100644
index 0000000..42deb95
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_big.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_mid.png b/plantlife_modpack/ferns/textures/ferns_fern_mid.png
new file mode 100644
index 0000000..3213308
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_mid.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_tree.png b/plantlife_modpack/ferns/textures/ferns_fern_tree.png
new file mode 100644
index 0000000..8daeafd
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_tree.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_tree_giant.png b/plantlife_modpack/ferns/textures/ferns_fern_tree_giant.png
new file mode 100644
index 0000000..2e3adb7
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_tree_giant.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_tree_inv.png b/plantlife_modpack/ferns/textures/ferns_fern_tree_inv.png
new file mode 100644
index 0000000..5417669
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_tree_inv.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_tree_tl.png b/plantlife_modpack/ferns/textures/ferns_fern_tree_tl.png
new file mode 100644
index 0000000..16b6e3a
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_tree_tl.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_tree_tr.png b/plantlife_modpack/ferns/textures/ferns_fern_tree_tr.png
new file mode 100644
index 0000000..768430f
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_tree_tr.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_trunk.png b/plantlife_modpack/ferns/textures/ferns_fern_trunk.png
new file mode 100644
index 0000000..a8e1bf6
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_trunk.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_trunk_big.png b/plantlife_modpack/ferns/textures/ferns_fern_trunk_big.png
new file mode 100644
index 0000000..24ede0a
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_trunk_big.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_trunk_big_top.png b/plantlife_modpack/ferns/textures/ferns_fern_trunk_big_top.png
new file mode 100644
index 0000000..3e3c829
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_trunk_big_top.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fern_trunk_top.png b/plantlife_modpack/ferns/textures/ferns_fern_trunk_top.png
new file mode 100644
index 0000000..8b259cc
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fern_trunk_top.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_ferntuber.png b/plantlife_modpack/ferns/textures/ferns_ferntuber.png
new file mode 100644
index 0000000..2d6785d
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_ferntuber.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_ferntuber_roasted.png b/plantlife_modpack/ferns/textures/ferns_ferntuber_roasted.png
new file mode 100644
index 0000000..f62a88d
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_ferntuber_roasted.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fiddlehead.png b/plantlife_modpack/ferns/textures/ferns_fiddlehead.png
new file mode 100644
index 0000000..0925c78
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fiddlehead.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_fiddlehead_roasted.png b/plantlife_modpack/ferns/textures/ferns_fiddlehead_roasted.png
new file mode 100644
index 0000000..9f4943c
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_fiddlehead_roasted.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_horsetail_01.png b/plantlife_modpack/ferns/textures/ferns_horsetail_01.png
new file mode 100644
index 0000000..60d3ca6
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_horsetail_01.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_horsetail_02.png b/plantlife_modpack/ferns/textures/ferns_horsetail_02.png
new file mode 100644
index 0000000..3c7edf7
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_horsetail_02.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_horsetail_03.png b/plantlife_modpack/ferns/textures/ferns_horsetail_03.png
new file mode 100644
index 0000000..5d28a46
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_horsetail_03.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_horsetail_04.png b/plantlife_modpack/ferns/textures/ferns_horsetail_04.png
new file mode 100644
index 0000000..a8254ed
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_horsetail_04.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_sapling_tree_fern.png b/plantlife_modpack/ferns/textures/ferns_sapling_tree_fern.png
new file mode 100644
index 0000000..b459d48
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_sapling_tree_fern.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_sapling_tree_fern_giant.png b/plantlife_modpack/ferns/textures/ferns_sapling_tree_fern_giant.png
new file mode 100644
index 0000000..e556016
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_sapling_tree_fern_giant.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big.png b/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big.png
new file mode 100644
index 0000000..09cc001
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_cross.png b/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_cross.png
new file mode 100644
index 0000000..48f7e2c
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_cross.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_end.png b/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_end.png
new file mode 100644
index 0000000..d0064fe
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/ferns_tree_fern_leave_big_end.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/archaeplantae_horsetails.png b/plantlife_modpack/ferns/textures/not_in_use/archaeplantae_horsetails.png
new file mode 100644
index 0000000..6ba89c1
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/archaeplantae_horsetails.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/big picture 3.png b/plantlife_modpack/ferns/textures/not_in_use/big picture 3.png
new file mode 100644
index 0000000..de344e6
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/big picture 3.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_left.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_left.png
new file mode 100644
index 0000000..0fdf515
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_left.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_right.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_right.png
new file mode 100644
index 0000000..d30def0
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_big_right.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_left.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_left.png
new file mode 100644
index 0000000..d146df3
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_left.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_right.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_right.png
new file mode 100644
index 0000000..e10460a
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_mid_right.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_bl.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_bl.png
new file mode 100644
index 0000000..e2fdb67
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_bl.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_br.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_br.png
new file mode 100644
index 0000000..eb547e8
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_tree_br.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png
new file mode 100644
index 0000000..7a12671
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/archaeplantae_fern_old4.png b/plantlife_modpack/ferns/textures/old/archaeplantae_fern_old4.png
new file mode 100644
index 0000000..a3d403c
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/archaeplantae_fern_old4.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/comb.png b/plantlife_modpack/ferns/textures/old/comb.png
new file mode 100644
index 0000000..ea1e19f
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/comb.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_5_old.png b/plantlife_modpack/ferns/textures/old/ferns_5_old.png
new file mode 100644
index 0000000..5676278
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_5_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_6_old.png b/plantlife_modpack/ferns/textures/old/ferns_6_old.png
new file mode 100644
index 0000000..36d6040
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_6_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_7_old.png b/plantlife_modpack/ferns/textures/old/ferns_7_old.png
new file mode 100644
index 0000000..8aabe61
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_7_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_big_old.png b/plantlife_modpack/ferns/textures/old/ferns_fern_big_old.png
new file mode 100644
index 0000000..d17ed11
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_big_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_mid_old.png b/plantlife_modpack/ferns/textures/old/ferns_fern_mid_old.png
new file mode 100644
index 0000000..08513c2
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_mid_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_tree_old.png b/plantlife_modpack/ferns/textures/old/ferns_fern_tree_old.png
new file mode 100644
index 0000000..4599672
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_tree_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_old2.png b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_old2.png
new file mode 100644
index 0000000..a048ee0
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old.png b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old.png
new file mode 100644
index 0000000..d83151f
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old2.png b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old2.png
new file mode 100644
index 0000000..244ddfe
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_big_top_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_top_old.png b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_top_old.png
new file mode 100644
index 0000000..872fdab
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_fern_trunk_top_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_horsetail_01_old2.png b/plantlife_modpack/ferns/textures/old/ferns_horsetail_01_old2.png
new file mode 100644
index 0000000..7d55718
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_horsetail_01_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_horsetail_02_old2.png b/plantlife_modpack/ferns/textures/old/ferns_horsetail_02_old2.png
new file mode 100644
index 0000000..d0b5563
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_horsetail_02_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_horsetail_03_old2.png b/plantlife_modpack/ferns/textures/old/ferns_horsetail_03_old2.png
new file mode 100644
index 0000000..42cf76e
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_horsetail_03_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_horsetail_04_old2.png b/plantlife_modpack/ferns/textures/old/ferns_horsetail_04_old2.png
new file mode 100644
index 0000000..600ebe7
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_horsetail_04_old2.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png b/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png
new file mode 100644
index 0000000..00ec9d8
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_end_old.png b/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_end_old.png
new file mode 100644
index 0000000..ce1a87d
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_end_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_old.png b/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_old.png
new file mode 100644
index 0000000..b568383
--- /dev/null
+++ b/plantlife_modpack/ferns/textures/old/ferns_tree_fern_leave_big_old.png
Binary files differ
diff --git a/plantlife_modpack/ferns/treefern.lua b/plantlife_modpack/ferns/treefern.lua
new file mode 100644
index 0000000..4ba502b
--- /dev/null
+++ b/plantlife_modpack/ferns/treefern.lua
@@ -0,0 +1,228 @@
+-----------------------------------------------------------------------------------------------
+-- Ferns - Tree Fern 0.1.1
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- License (everything): WTFPL
+-- Contains code from: biome_lib
+-- Looked at code from: default , trees
+-----------------------------------------------------------------------------------------------
+
+assert(abstract_ferns.config.enable_treefern == true)
+
+abstract_ferns.grow_tree_fern = function(pos)
+
+ local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
+ if minetest.get_node(pos_01).name ~= "air"
+ and minetest.get_node(pos_01).name ~= "ferns:sapling_tree_fern"
+ and minetest.get_node(pos_01).name ~= "default:junglegrass" then
+ return
+ end
+
+ local size = math.random(1, 4) + math.random(1, 4)
+ if (size > 5) then
+ size = 10 - size
+ end
+ size = size + 1
+ local crown = ({ "ferns:tree_fern_leaves", "ferns:tree_fern_leaves_02" })[math.random(1, 2)]
+
+ local i = 1
+ while (i < size-1) do
+ if minetest.get_node({x = pos.x, y = pos.y + i + 1, z = pos.z}).name ~= "air" then
+ break
+ end
+ minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = "ferns:fern_trunk" })
+ i = i + 1
+ end
+
+ minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = crown })
+end
+
+-----------------------------------------------------------------------------------------------
+-- TREE FERN LEAVES
+-----------------------------------------------------------------------------------------------
+
+-- TODO: Both of these nodes look the same?
+
+minetest.register_node("ferns:tree_fern_leaves", {
+ description = "Tree Fern Crown (Dicksonia)",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ --tiles = {"[combine:32x32:0,0=top_left.png:0,16=bottom_left.png:16,0=top_right.png:16,16=bottom_right.png"},
+ tiles = {"ferns_fern_tree.png"},
+ inventory_image = "ferns_fern_tree_inv.png",
+ walkable = false,
+ groups = {snappy=3,flammable=2,attached_node=1},
+ drop = {
+ max_items = 2,
+ items = {
+ {
+ -- occasionally, drop a second sapling instead of leaves
+ -- (extra saplings can also be obtained by replanting and
+ -- reharvesting leaves)
+ items = {"ferns:sapling_tree_fern"},
+ rarity = 10,
+ },
+ {
+ items = {"ferns:sapling_tree_fern"},
+ },
+ {
+ items = {"ferns:tree_fern_leaves"},
+ }
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+})
+minetest.register_node("ferns:tree_fern_leaves_02", {
+ drawtype = "plantlike",
+ visual_scale = 2,
+ paramtype = "light",
+ tiles = {"ferns_fern_big.png"},
+ walkable = false,
+ groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1},
+ drop = {
+ max_items = 2,
+ items = {
+ {
+ -- occasionally, drop a second sapling instead of leaves
+ -- (extra saplings can also be obtained by replanting and
+ -- reharvesting leaves)
+ items = {"ferns:sapling_tree_fern"},
+ rarity = 10,
+ },
+ {
+ items = {"ferns:sapling_tree_fern"},
+ },
+ {
+ items = {"ferns:tree_fern_leaves"},
+ }
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+})
+-----------------------------------------------------------------------------------------------
+-- FERN TRUNK
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:fern_trunk", {
+ description = "Fern Trunk (Dicksonia)",
+ drawtype = "nodebox",
+ paramtype = "light",
+ tiles = {
+ "ferns_fern_trunk_top.png",
+ "ferns_fern_trunk_top.png",
+ "ferns_fern_trunk.png"
+ },
+ node_box = {
+ type = "fixed",
+ fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {tree=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+ after_destruct = function(pos,oldnode)
+ local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
+ if node.name == "ferns:fern_trunk" then
+ minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
+ minetest.add_item(pos,"ferns:fern_trunk")
+ end
+ end,
+})
+
+-----------------------------------------------------------------------------------------------
+-- TREE FERN SAPLING
+-----------------------------------------------------------------------------------------------
+minetest.register_node("ferns:sapling_tree_fern", {
+ description = "Tree Fern Sapling (Dicksonia)",
+ drawtype = "plantlike",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"ferns_sapling_tree_fern.png"},
+ inventory_image = "ferns_sapling_tree_fern.png",
+ walkable = false,
+ groups = {snappy=3,flammable=2,flora=1,attached_node=1},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
+ },
+})
+-- abm
+minetest.register_abm({
+ nodenames = "ferns:sapling_tree_fern",
+ interval = 1000,
+ chance = 4,
+ action = function(pos, node, _, _)
+ abstract_ferns.grow_tree_fern({x = pos.x, y = pos.y-1, z = pos.z})
+ end
+})
+
+-----------------------------------------------------------------------------------------------
+-- GENERATE TREE FERN
+-----------------------------------------------------------------------------------------------
+
+-- in jungles
+if abstract_ferns.config.enable_treeferns_in_jungle == true then
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "default:sand",
+ "default:desert_sand",
+ },
+ max_count = 35,--27,
+ avoid_nodes = {"default:tree"},
+ avoid_radius = 4,
+ rarity = 50,
+ seed_diff = 329,
+ min_elevation = -10,
+ near_nodes = {"default:jungletree"},
+ near_nodes_size = 6,
+ near_nodes_vertical = 2,--4,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 0.4,
+ temp_max = -0.5,
+ temp_min = 0.13,
+ },
+ abstract_ferns.grow_tree_fern
+ )
+end
+
+-- for oases & tropical beaches
+if abstract_ferns.config.enable_treeferns_in_oases == true then
+ biome_lib:register_generate_plant({
+ surface = {
+ "default:sand"--,
+ --"default:desert_sand"
+ },
+ max_count = 35,
+ rarity = 50,
+ seed_diff = 329,
+ neighbors = {"default:desert_sand"},
+ ncount = 1,
+ min_elevation = 1,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ humidity_max = -1.0,
+ humidity_min = 1.0,
+ temp_max = -1.0,
+ temp_min = 1.0,
+ },
+ abstract_ferns.grow_tree_fern
+)
+end
diff --git a/plantlife_modpack/flowers_plus/depends.txt b/plantlife_modpack/flowers_plus/depends.txt
new file mode 100644
index 0000000..37952da
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/depends.txt
@@ -0,0 +1,2 @@
+biome_lib
+farming?
diff --git a/plantlife_modpack/flowers_plus/flowers-changelog.txt b/plantlife_modpack/flowers_plus/flowers-changelog.txt
new file mode 100644
index 0000000..fbe7518
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/flowers-changelog.txt
@@ -0,0 +1,24 @@
+Changelog
+---------
+
+2012-08-06: Tweaked selection boxes on all nodes. Tweaked seaweed to use
+signlike instead of raillike drawtype, (still forced to only spawn flat as
+usual). Adjusted light level limits to give it more time to grow. Created
+this changelog file using github commit messages as the basis. Shrunk the
+geranium flower down a bit to better match the others.
+
+2012-08-03: Tuned out the random-numbers-inside-ABM stuff. Uses the ABM's
+chance setting instead. Should be approximately the same as before, but
+hopefully using a tad less CPU. Minor tweak to ABM interval/growing delay.
+
+2012-08-01: Added blue geranium to the collection of flowers.
+
+2012-07-31: Disable debug by default.
+
+2012-07-30: many updates over the course of the day - first commit, removed
+some redundant files, added wield/inventory image entries for each item, to
+force the game to draw them properly (these shouldn't be needed, must be a
+bug). Tweaked spawn code so that the radius check also includes the name of
+the item being spawned as well as items in group:flower, that way all items can
+have a radius test, and not just those in group:flower. Fiddled with the spawn
+rates a bit.
diff --git a/plantlife_modpack/flowers_plus/init.lua b/plantlife_modpack/flowers_plus/init.lua
new file mode 100644
index 0000000..f8aa93d
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/init.lua
@@ -0,0 +1,479 @@
+local S = biome_lib.intllib
+
+-- This file supplies a few additional plants and some related crafts
+-- for the plantlife modpack. Last revision: 2013-04-24
+
+flowers_plus = {}
+
+local SPAWN_DELAY = 1000
+local SPAWN_CHANCE = 200
+local flowers_seed_diff = 329
+local lilies_max_count = 320
+local lilies_rarity = 33
+local seaweed_max_count = 320
+local seaweed_rarity = 33
+local sunflowers_max_count = 10
+local sunflowers_rarity = 25
+
+-- register the various rotations of waterlilies
+
+local lilies_list = {
+ { nil , nil , 1 },
+ { "225", "22.5" , 2 },
+ { "45" , "45" , 3 },
+ { "675", "67.5" , 4 },
+ { "s1" , "small_1" , 5 },
+ { "s2" , "small_2" , 6 },
+ { "s3" , "small_3" , 7 },
+ { "s4" , "small_4" , 8 },
+}
+
+for i in ipairs(lilies_list) do
+ local deg1 = ""
+ local deg2 = ""
+ local lily_groups = {snappy = 3,flammable=2,flower=1}
+
+ if lilies_list[i][1] ~= nil then
+ deg1 = "_"..lilies_list[i][1]
+ deg2 = "_"..lilies_list[i][2]
+ lily_groups = { snappy = 3,flammable=2,flower=1, not_in_creative_inventory=1 }
+ end
+
+ minetest.register_node(":flowers:waterlily"..deg1, {
+ description = S("Waterlily"),
+ drawtype = "nodebox",
+ tiles = {
+ "flowers_waterlily"..deg2..".png",
+ "flowers_waterlily"..deg2..".png^[transformFY"
+ },
+ inventory_image = "flowers_waterlily.png",
+ wield_image = "flowers_waterlily.png",
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ groups = lily_groups,
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.4, -0.5, -0.4, 0.4, -0.45, 0.4 },
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.49, -0.5, 0.5, -0.49, 0.5 },
+ },
+ buildable_to = true,
+
+ liquids_pointable = true,
+ drop = "flowers:waterlily",
+ on_place = function(itemstack, placer, pointed_thing)
+ local keys=placer:get_player_control()
+ local pt = pointed_thing
+
+ local place_pos = nil
+ local top_pos = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ local under_node = minetest.get_node(pt.under)
+ local above_node = minetest.get_node(pt.above)
+ local top_node = minetest.get_node(top_pos)
+
+ if biome_lib:get_nodedef_field(under_node.name, "buildable_to") then
+ if under_node.name ~= "default:water_source" then
+ place_pos = pt.under
+ elseif top_node.name ~= "default:water_source"
+ and biome_lib:get_nodedef_field(top_node.name, "buildable_to") then
+ place_pos = top_pos
+ else
+ return
+ end
+ elseif biome_lib:get_nodedef_field(above_node.name, "buildable_to") then
+ place_pos = pt.above
+ end
+
+ if place_pos and not minetest.is_protected(place_pos, placer:get_player_name()) then
+
+ local nodename = "default:cobble" -- if this block appears, something went....wrong :-)
+
+ if not keys["sneak"] then
+ local node = minetest.get_node(pt.under)
+ local waterlily = math.random(1,8)
+ if waterlily == 1 then
+ nodename = "flowers:waterlily"
+ elseif waterlily == 2 then
+ nodename = "flowers:waterlily_225"
+ elseif waterlily == 3 then
+ nodename = "flowers:waterlily_45"
+ elseif waterlily == 4 then
+ nodename = "flowers:waterlily_675"
+ elseif waterlily == 5 then
+ nodename = "flowers:waterlily_s1"
+ elseif waterlily == 6 then
+ nodename = "flowers:waterlily_s2"
+ elseif waterlily == 7 then
+ nodename = "flowers:waterlily_s3"
+ elseif waterlily == 8 then
+ nodename = "flowers:waterlily_s4"
+ end
+ minetest.set_node(place_pos, {name = nodename, param2 = math.random(0,3) })
+ else
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.set_node(place_pos, {name = "flowers:waterlily", param2 = fdir})
+ end
+
+ if not biome_lib.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ return itemstack
+ end
+ end,
+ })
+end
+
+local algae_list = { {nil}, {2}, {3}, {4} }
+
+for i in ipairs(algae_list) do
+ local num = ""
+ local algae_groups = {snappy = 3,flammable=2,flower=1}
+
+ if algae_list[i][1] ~= nil then
+ num = "_"..algae_list[i][1]
+ algae_groups = { snappy = 3,flammable=2,flower=1, not_in_creative_inventory=1 }
+ end
+
+ minetest.register_node(":flowers:seaweed"..num, {
+ description = S("Seaweed"),
+ drawtype = "nodebox",
+ tiles = {
+ "flowers_seaweed"..num..".png",
+ "flowers_seaweed"..num..".png^[transformFY"
+ },
+ inventory_image = "flowers_seaweed_2.png",
+ wield_image = "flowers_seaweed_2.png",
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ groups = algae_groups,
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.4, -0.5, -0.4, 0.4, -0.45, 0.4 },
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.49, -0.5, 0.5, -0.49, 0.5 },
+ },
+ buildable_to = true,
+
+ liquids_pointable = true,
+ drop = "flowers:seaweed",
+ on_place = function(itemstack, placer, pointed_thing)
+ local keys=placer:get_player_control()
+ local pt = pointed_thing
+
+ local place_pos = nil
+ local top_pos = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
+ local under_node = minetest.get_node(pt.under)
+ local above_node = minetest.get_node(pt.above)
+ local top_node = minetest.get_node(top_pos)
+
+ if biome_lib:get_nodedef_field(under_node.name, "buildable_to") then
+ if under_node.name ~= "default:water_source" then
+ place_pos = pt.under
+ elseif top_node.name ~= "default:water_source"
+ and biome_lib:get_nodedef_field(top_node.name, "buildable_to") then
+ place_pos = top_pos
+ else
+ return
+ end
+ elseif biome_lib:get_nodedef_field(above_node.name, "buildable_to") then
+ place_pos = pt.above
+ end
+
+ if not minetest.is_protected(place_pos, placer:get_player_name()) then
+
+ local nodename = "default:cobble" -- :D
+
+ if not keys["sneak"] then
+ --local node = minetest.get_node(pt.under)
+ local seaweed = math.random(1,4)
+ if seaweed == 1 then
+ nodename = "flowers:seaweed"
+ elseif seaweed == 2 then
+ nodename = "flowers:seaweed_2"
+ elseif seaweed == 3 then
+ nodename = "flowers:seaweed_3"
+ elseif seaweed == 4 then
+ nodename = "flowers:seaweed_4"
+ end
+ minetest.set_node(place_pos, {name = nodename, param2 = math.random(0,3) })
+ else
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.set_node(place_pos, {name = "flowers:seaweed", param2 = fdir})
+ end
+
+ if not biome_lib.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ return itemstack
+ end
+ end,
+ })
+end
+
+local box = {
+ type="fixed",
+ fixed = { { -0.2, -0.5, -0.2, 0.2, 0.5, 0.2 } },
+}
+
+local sunflower_drop = "farming:seed_wheat"
+if minetest.registered_items["farming:seed_spelt"] then
+ sunflower_drop = "farming:seed_spelt"
+end
+
+minetest.register_node(":flowers:sunflower", {
+ description = "Sunflower",
+ drawtype = "mesh",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ inventory_image = "flowers_sunflower_inv.png",
+ mesh = "flowers_sunflower.obj",
+ tiles = { "flowers_sunflower.png" },
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ groups = { dig_immediate=3, flora=1, flammable=3 },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = box,
+ collision_box = box,
+ drop = {
+ max_items = 1,
+ items = {
+ {items = {sunflower_drop}, rarity = 8},
+ {items = {"flowers:sunflower"}},
+ }
+ }
+})
+
+local extra_aliases = {
+ "waterlily",
+ "waterlily_225",
+ "waterlily_45",
+ "waterlily_675",
+ "seaweed"
+}
+
+for i in ipairs(extra_aliases) do
+ local flower = extra_aliases[i]
+ minetest.register_alias("flowers:flower_"..flower, "flowers:"..flower)
+end
+
+minetest.register_alias( "trunks:lilypad" , "flowers:waterlily_s1" )
+minetest.register_alias( "along_shore:lilypads_1" , "flowers:waterlily_s1" )
+minetest.register_alias( "along_shore:lilypads_2" , "flowers:waterlily_s2" )
+minetest.register_alias( "along_shore:lilypads_3" , "flowers:waterlily_s3" )
+minetest.register_alias( "along_shore:lilypads_4" , "flowers:waterlily_s4" )
+minetest.register_alias( "along_shore:pondscum_1" , "flowers:seaweed" )
+minetest.register_alias( "along_shore:seaweed_1" , "flowers:seaweed" )
+minetest.register_alias( "along_shore:seaweed_2" , "flowers:seaweed_2" )
+minetest.register_alias( "along_shore:seaweed_3" , "flowers:seaweed_3" )
+minetest.register_alias( "along_shore:seaweed_4" , "flowers:seaweed_4" )
+
+-- ongen registrations
+
+flowers_plus.grow_waterlily = function(pos)
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ for i in ipairs(lilies_list) do
+ local chance = math.random(1,8)
+ local ext = ""
+ local num = lilies_list[i][3]
+
+ if lilies_list[i][1] ~= nil then
+ ext = "_"..lilies_list[i][1]
+ end
+
+ if chance == num then
+ minetest.set_node(right_here, {name="flowers:waterlily"..ext, param2=math.random(0,3)})
+ end
+ end
+end
+
+biome_lib:register_generate_plant({
+ surface = {"default:water_source"},
+ max_count = lilies_max_count,
+ rarity = lilies_rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"default:dirt_with_grass"},
+ near_nodes_size = 4,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ temp_max = -0.22,
+ temp_min = 0.22,
+ },
+ flowers_plus.grow_waterlily
+)
+
+flowers_plus.grow_seaweed = function(pos)
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ minetest.set_node(right_here, {name="along_shore:seaweed_"..math.random(1,4), param2=math.random(1,3)})
+end
+
+biome_lib:register_generate_plant({
+ surface = {"default:water_source"},
+ max_count = seaweed_max_count,
+ rarity = seaweed_rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"default:dirt_with_grass"},
+ near_nodes_size = 4,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ flowers_plus.grow_seaweed
+)
+
+-- seaweed at beaches
+-- MM: not satisfied with it, but IMHO some beaches should have some algae
+biome_lib:register_generate_plant({
+ surface = {"default:water_source"},
+ max_count = seaweed_max_count,
+ rarity = seaweed_rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"default:sand"},
+ near_nodes_size = 1,
+ near_nodes_vertical = 0,
+ near_nodes_count = 3,
+ plantlife_limit = -0.9,
+ temp_max = -0.64, -- MM: more or less random values, just to make sure it's not everywhere
+ temp_min = -0.22, -- MM: more or less random values, just to make sure it's not everywhere
+ },
+ flowers_plus.grow_seaweed
+)
+biome_lib:register_generate_plant({
+ surface = {"default:sand"},
+ max_count = seaweed_max_count*2,
+ rarity = seaweed_rarity/2,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"default:water_source"},
+ near_nodes_size = 1,
+ near_nodes_vertical = 0,
+ near_nodes_count = 3,
+ plantlife_limit = -0.9,
+ temp_max = -0.64, -- MM: more or less random values, just to make sure it's not everywhere
+ temp_min = -0.22, -- MM: more or less random values, just to make sure it's not everywhere
+ },
+ flowers_plus.grow_seaweed
+)
+
+biome_lib:register_generate_plant({
+ surface = {"default:dirt_with_grass"},
+ avoid_nodes = { "flowers:sunflower" },
+ max_count = sunflowers_max_count,
+ rarity = sunflowers_rarity,
+ min_elevation = 0,
+ plantlife_limit = -0.9,
+ temp_max = 0.53,
+ random_facedir = {0,3},
+ },
+ "flowers:sunflower"
+)
+
+-- spawn ABM registrations
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = SPAWN_DELAY/2,
+ spawn_plants = {
+ "flowers:waterlily",
+ "flowers:waterlily_225",
+ "flowers:waterlily_45",
+ "flowers:waterlily_675",
+ "flowers:waterlily_s1",
+ "flowers:waterlily_s2",
+ "flowers:waterlily_s3",
+ "flowers:waterlily_s4"
+ },
+ avoid_radius = 2.5,
+ spawn_chance = SPAWN_CHANCE*4,
+ spawn_surfaces = {"default:water_source"},
+ avoid_nodes = {"group:flower", "group:flora" },
+ seed_diff = flowers_seed_diff,
+ light_min = 9,
+ depth_max = 2,
+ random_facedir = {0,3}
+})
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = SPAWN_DELAY*2,
+ spawn_plants = {"flowers:seaweed"},
+ spawn_chance = SPAWN_CHANCE*2,
+ spawn_surfaces = {"default:water_source"},
+ avoid_nodes = {"group:flower", "group:flora"},
+ seed_diff = flowers_seed_diff,
+ light_min = 4,
+ light_max = 10,
+ neighbors = {"default:dirt_with_grass"},
+ facedir = 1
+})
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = SPAWN_DELAY*2,
+ spawn_plants = {"flowers:seaweed"},
+ spawn_chance = SPAWN_CHANCE*2,
+ spawn_surfaces = {"default:dirt_with_grass"},
+ avoid_nodes = {"group:flower", "group:flora" },
+ seed_diff = flowers_seed_diff,
+ light_min = 4,
+ light_max = 10,
+ neighbors = {"default:water_source"},
+ ncount = 1,
+ facedir = 1
+})
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = SPAWN_DELAY*2,
+ spawn_plants = {"flowers:seaweed"},
+ spawn_chance = SPAWN_CHANCE*2,
+ spawn_surfaces = {"default:stone"},
+ avoid_nodes = {"group:flower", "group:flora" },
+ seed_diff = flowers_seed_diff,
+ light_min = 4,
+ light_max = 10,
+ neighbors = {"default:water_source"},
+ ncount = 6,
+ facedir = 1
+})
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = SPAWN_DELAY*2,
+ spawn_plants = {"flowers:sunflower"},
+ spawn_chance = SPAWN_CHANCE*2,
+ spawn_surfaces = {"default:dirt_with_grass"},
+ avoid_nodes = {"group:flower", "flowers:sunflower"},
+ seed_diff = flowers_seed_diff,
+ light_min = 11,
+ light_max = 14,
+ min_elevation = 0,
+ plantlife_limit = -0.9,
+ temp_max = 0.53,
+ random_facedir = {0,3},
+ avoid_radius = 5
+})
+
+-- Cotton plants are now provided by the default "farming" mod.
+-- old cotton plants -> farming cotton stage 8
+-- cotton wads -> string (can be crafted into wool blocks)
+-- potted cotton plants -> potted white dandelions
+
+minetest.register_alias("flowers:cotton_plant", "farming:cotton_8")
+minetest.register_alias("flowers:flower_cotton", "farming:cotton_8")
+minetest.register_alias("flowers:flower_cotton_pot", "flowers:potted_dandelion_white")
+minetest.register_alias("flowers:potted_cotton_plant", "flowers:potted_dandelion_white")
+minetest.register_alias("flowers:cotton", "farming:string")
+minetest.register_alias("flowers:cotton_wad", "farming:string")
+minetest.register_alias("sunflower:sunflower", "flowers:sunflower")
+
+print(S("[Flowers] Loaded."))
diff --git a/plantlife_modpack/flowers_plus/locale/de.txt b/plantlife_modpack/flowers_plus/locale/de.txt
new file mode 100644
index 0000000..5195be7
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/locale/de.txt
@@ -0,0 +1,13 @@
+# Translation by Xanthin
+
+Waterlily = Seerose
+Seaweed = Seetang
+Potted Rose = Eingetopfte Rose
+Potted Tulip = Eingetopfte Tulpe
+Potted Yellow Dandelion = Eingetopfter Loewenzahn
+Potted White Dandelion = Eingetopfte Pusteblume
+Potted Blue Geranium = Eingetopfte blaue Geranie
+Potted Viola = Eingetopftes Veilchen
+Flower Pot = Blumentopf
+
+[Flowers] Loaded. = [Flowers] Geladen.
diff --git a/plantlife_modpack/flowers_plus/locale/fr.txt b/plantlife_modpack/flowers_plus/locale/fr.txt
new file mode 100644
index 0000000..c4f4737
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/locale/fr.txt
@@ -0,0 +1,13 @@
+# Template
+
+Waterlily = Nénuphar
+Seaweed = Algues
+Potted Rose = Rose en pot
+Potted Tulip = Tulipe en pot
+Potted Yellow Dandelion = Pissenlit jaune en pot
+Potted White Dandelion = Pissenlit blanc en pot
+Potted Blue Geranium = Géranium bleu en pot
+Potted Viola = Violette en pot
+Flower Pot = Fleurs en pot
+
+[Flowers] Loaded. = [Fleurs] Chargées.
diff --git a/plantlife_modpack/flowers_plus/locale/template.txt b/plantlife_modpack/flowers_plus/locale/template.txt
new file mode 100644
index 0000000..42ac830
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/locale/template.txt
@@ -0,0 +1,13 @@
+# Template
+
+Waterlily =
+Seaweed =
+Potted Rose =
+Potted Tulip =
+Potted Yellow Dandelion =
+Potted White Dandelion =
+Potted Blue Geranium =
+Potted Viola =
+Flower Pot =
+
+[Flowers] Loaded. =
diff --git a/plantlife_modpack/flowers_plus/models/flowers_sunflower.obj b/plantlife_modpack/flowers_plus/models/flowers_sunflower.obj
new file mode 100644
index 0000000..35beb8d
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/models/flowers_sunflower.obj
@@ -0,0 +1,73 @@
+# Blender v2.70 (sub 0) OBJ File: 'sunflower.blend'
+# www.blender.org
+mtllib sunflower_sunflower.mtl
+o Cube
+v -0.015625 -0.500000 0.028125
+v -0.015625 -0.500000 -0.028125
+v 0.028125 -0.500000 -0.028125
+v 0.028125 -0.500000 0.028125
+v -0.015625 0.790890 0.028125
+v -0.015625 0.689140 -0.028125
+v 0.028125 0.689140 -0.028125
+v 0.028125 0.790890 0.028125
+v 0.250000 0.533494 -0.125000
+v -0.250000 0.533494 -0.125000
+v 0.250000 0.966506 0.125000
+v -0.250000 0.966506 0.125000
+v 0.267063 0.373606 -0.088749
+v 0.044375 0.303464 -0.141576
+v 0.239202 0.473737 0.108253
+v -0.008452 0.378817 0.108253
+v 0.017721 0.016639 -0.112053
+v -0.231280 0.110242 -0.115181
+v -0.030356 -0.036246 0.146223
+v -0.252831 0.028885 0.088910
+v 0.062500 0.641747 -0.057917
+v -0.106953 0.097386 -0.113617
+v -0.006318 -0.053008 0.024707
+v 0.118968 0.360674 0.006909
+v 0.116101 0.452031 0.108253
+v 0.017962 0.298392 -0.019504
+v 0.145794 0.358736 -0.115163
+v 0.240237 0.375544 0.033323
+v -0.224509 0.021356 -0.032606
+v -0.131273 0.023638 0.117567
+v -0.102951 0.016109 -0.003950
+vt 0.750000 0.875000
+vt 0.625000 0.875000
+vt 0.625000 0.750000
+vt 0.750000 0.750000
+vt 0.750000 1.000000
+vt 0.625000 1.000000
+vt 0.625000 0.500000
+vt 0.500000 0.500000
+vt 0.500000 1.000000
+vt 0.000100 0.500100
+vt 0.499900 0.500100
+vt 0.499900 0.999900
+vt 0.000100 0.999900
+vt 0.250000 0.250000
+vt 0.500000 0.250000
+vt 0.250000 0.500000
+vt 0.000000 0.250000
+vt 0.000000 0.000000
+vt 0.250000 0.000000
+vt 0.000000 0.500000
+vt 0.500000 0.000000
+usemtl Sunflower
+s off
+f 1/1 2/2 3/3 4/4
+f 5/5 8/6 7/2 6/1
+f 1/7 5/8 6/9 2/6
+f 2/7 6/6 7/9 3/8
+f 3/7 7/8 8/9 4/6
+f 5/7 1/8 4/9 8/6
+f 9/10 10/11 12/12 11/13
+f 24/14 26/15 16/8 25/16
+f 31/14 29/17 20/18 30/19
+f 17/8 22/16 31/14 23/15
+f 22/16 18/20 29/17 31/14
+f 27/19 14/21 26/15 24/14
+f 13/18 27/19 24/14 28/17
+f 23/15 31/14 30/19 19/21
+f 28/17 24/14 25/16 15/20
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_seaweed.png b/plantlife_modpack/flowers_plus/textures/flowers_seaweed.png
new file mode 100644
index 0000000..b5bd99c
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_seaweed.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_seaweedLight.png b/plantlife_modpack/flowers_plus/textures/flowers_seaweedLight.png
new file mode 100644
index 0000000..7595ebc
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_seaweedLight.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_seaweed_2.png b/plantlife_modpack/flowers_plus/textures/flowers_seaweed_2.png
new file mode 100644
index 0000000..0b24730
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_seaweed_2.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_seaweed_3.png b/plantlife_modpack/flowers_plus/textures/flowers_seaweed_3.png
new file mode 100644
index 0000000..d9b7f43
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_seaweed_3.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_seaweed_4.png b/plantlife_modpack/flowers_plus/textures/flowers_seaweed_4.png
new file mode 100644
index 0000000..887c183
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_seaweed_4.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_sunflower.png b/plantlife_modpack/flowers_plus/textures/flowers_sunflower.png
new file mode 100644
index 0000000..fb95cb4
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_sunflower.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_sunflower_inv.png b/plantlife_modpack/flowers_plus/textures/flowers_sunflower_inv.png
new file mode 100644
index 0000000..c36ed01
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_sunflower_inv.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily.png
new file mode 100644
index 0000000..7b58bb2
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_22.5.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_22.5.png
new file mode 100644
index 0000000..73647ac
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_22.5.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_45.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_45.png
new file mode 100644
index 0000000..7ca683e
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_45.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_67.5.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_67.5.png
new file mode 100644
index 0000000..234da60
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_67.5.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_1.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_1.png
new file mode 100644
index 0000000..a2d88cd
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_1.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_2.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_2.png
new file mode 100644
index 0000000..7d2ba86
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_2.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_3.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_3.png
new file mode 100644
index 0000000..bfcab90
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_3.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_4.png b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_4.png
new file mode 100644
index 0000000..8119ea7
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/flowers_waterlily_small_4.png
Binary files differ
diff --git a/plantlife_modpack/flowers_plus/textures/tr.txt b/plantlife_modpack/flowers_plus/textures/tr.txt
new file mode 100644
index 0000000..9e6372e
--- /dev/null
+++ b/plantlife_modpack/flowers_plus/textures/tr.txt
@@ -0,0 +1,14 @@
+# Turkish translation
+# mahmutelmas06@hotmail.com
+
+Waterlily = Nilüfer
+Seaweed = Deniz yosunu
+Potted Rose = Saksı gülü
+Potted Tulip = Saksı lalesi
+Potted Yellow Dandelion = Sarı hindiba
+Potted White Dandelion = Beyaz hindiba
+Potted Blue Geranium = Mavi hindiba
+Potted Viola = Saksı Menekşesi
+Flower Pot = Saksı
+
+[Flowers] Loaded. = [Flowers] yüklendi.
diff --git a/plantlife_modpack/junglegrass/init.lua b/plantlife_modpack/junglegrass/init.lua
new file mode 100644
index 0000000..a394d93
--- /dev/null
+++ b/plantlife_modpack/junglegrass/init.lua
@@ -0,0 +1,3 @@
+minetest.register_alias("junglegrass:shortest", "air")
+minetest.register_alias("junglegrass:short", "air")
+minetest.register_alias("junglegrass:medium", "air")
diff --git a/plantlife_modpack/modpack.txt b/plantlife_modpack/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/plantlife_modpack/modpack.txt
diff --git a/plantlife_modpack/molehills/depends.txt b/plantlife_modpack/molehills/depends.txt
new file mode 100644
index 0000000..4e35179
--- /dev/null
+++ b/plantlife_modpack/molehills/depends.txt
@@ -0,0 +1,2 @@
+default
+biome_lib \ No newline at end of file
diff --git a/plantlife_modpack/molehills/init.lua b/plantlife_modpack/molehills/init.lua
new file mode 100644
index 0000000..d0a1941
--- /dev/null
+++ b/plantlife_modpack/molehills/init.lua
@@ -0,0 +1,78 @@
+-----------------------------------------------------------------------------------------------
+local title = "Mole Hills"
+local version = "0.0.3"
+local mname = "molehills"
+-----------------------------------------------------------------------------------------------
+-- Idea by Sokomine
+-- Code & textures by Mossmanikin
+
+abstract_molehills = {}
+
+dofile(minetest.get_modpath("molehills").."/molehills_settings.txt")
+
+-----------------------------------------------------------------------------------------------
+-- NoDe
+-----------------------------------------------------------------------------------------------
+
+local mh_cbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.125, 0.5}
+}
+
+minetest.register_node("molehills:molehill",{
+ drawtype = "mesh",
+ mesh = "molehill_molehill.obj",
+ description = "Mole Hill",
+ inventory_image = "molehills_side.png",
+ tiles = { "molehills_dirt.png" },
+ paramtype = "light",
+ selection_box = mh_cbox,
+ collision_box = mh_cbox,
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- CRaFTiNG
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- molehills --> dirt
+ output = "default:dirt",
+ recipe = {
+ {"molehills:molehill","molehills:molehill"},
+ {"molehills:molehill","molehills:molehill"},
+ }
+})
+
+-----------------------------------------------------------------------------------------------
+-- GeNeRaTiNG
+-----------------------------------------------------------------------------------------------
+abstract_molehills.place_molehill = function(pos)
+ local right_here = {x=pos.x , y=pos.y+1, z=pos.z }
+ if minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z }).name ~= "air"
+ and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z }).name ~= "air"
+ and minetest.get_node({x=pos.x , y=pos.y, z=pos.z+1}).name ~= "air"
+ and minetest.get_node({x=pos.x , y=pos.y, z=pos.z-1}).name ~= "air"
+ and minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z+1}).name ~= "air"
+ and minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1}).name ~= "air"
+ and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1}).name ~= "air"
+ and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1}).name ~= "air" then
+ minetest.set_node(right_here, {name="molehills:molehill"})
+ end
+end
+
+biome_lib:register_generate_plant({
+ surface = {"default:dirt_with_grass"},
+ max_count = Molehills_Max_Count,
+ rarity = Molehills_Rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ avoid_nodes = {"group:tree","group:liquid","group:stone","group:falling_node"--[[,"air"]]},
+ avoid_radius = 4,
+ plantlife_limit = -0.3,
+ },
+ abstract_molehills.place_molehill
+)
+
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+-----------------------------------------------------------------------------------------------
diff --git a/plantlife_modpack/molehills/models/molehill_molehill.obj b/plantlife_modpack/molehills/models/molehill_molehill.obj
new file mode 100644
index 0000000..5b9c084
--- /dev/null
+++ b/plantlife_modpack/molehills/models/molehill_molehill.obj
@@ -0,0 +1,197 @@
+# Blender v2.73 (sub 0) OBJ File: 'anthill.blend'
+# www.blender.org
+o Cylinder_Cylinder.001
+v 0.099056 -0.499969 -0.498228
+v 0.038417 -0.200463 -0.141682
+v 0.255808 -0.499933 -0.402046
+v 0.095605 -0.174690 -0.147239
+v 0.423075 -0.499913 -0.296918
+v 0.102439 -0.169033 -0.075679
+v 0.444026 -0.499843 -0.095234
+v 0.125298 -0.217477 -0.063343
+v 0.468682 -0.499958 0.074790
+v 0.157655 -0.214352 0.001348
+v 0.396548 -0.500000 0.246048
+v 0.133778 -0.189245 0.108513
+v 0.280708 -0.500000 0.383197
+v 0.070517 -0.218946 0.104754
+v 0.089852 -0.499943 0.434316
+v 0.048523 -0.205247 0.128681
+v -0.093309 -0.499902 0.467111
+v -0.039037 -0.211895 0.149030
+v -0.272965 -0.499875 0.396496
+v -0.108297 -0.175918 0.104100
+v -0.388317 -0.499877 0.239075
+v -0.139068 -0.179051 0.073370
+v -0.437531 -0.499999 0.063918
+v -0.141812 -0.255882 0.005117
+v -0.458429 -0.499805 -0.104397
+v -0.189265 -0.217436 -0.065303
+v -0.385597 -0.499914 -0.288584
+v -0.112692 -0.207830 -0.096879
+v -0.248347 -0.499927 -0.384586
+v -0.083136 -0.202256 -0.170048
+v -0.095346 -0.499958 -0.514449
+v -0.023049 -0.216681 -0.204058
+v 0.071880 -0.343843 -0.343933
+v 0.189128 -0.354687 -0.277980
+v 0.311273 -0.378789 -0.248498
+v 0.296760 -0.346318 -0.056661
+v 0.332231 -0.342427 0.044933
+v 0.259921 -0.360316 0.147910
+v 0.213270 -0.362883 0.253745
+v 0.059007 -0.360067 0.351374
+v -0.068448 -0.357957 0.335642
+v -0.164888 -0.343166 0.232553
+v -0.269761 -0.352370 0.140734
+v -0.367168 -0.370891 0.062326
+v -0.294491 -0.324099 -0.079712
+v -0.276314 -0.352585 -0.236032
+v -0.206169 -0.372829 -0.314307
+v -0.065547 -0.371444 -0.355380
+v 0.000709 -0.156135 -0.047193
+vt 0.572002 0.826281
+vt 0.535907 0.620231
+vt 0.597591 0.625892
+vt 0.604963 0.552988
+vt 0.830215 0.729053
+vt 0.629619 0.540419
+vt 0.814561 0.533613
+vt 0.664520 0.474514
+vt 0.638766 0.365335
+vt 0.774826 0.325198
+vt 0.570532 0.369165
+vt 0.724507 0.217375
+vt 0.546808 0.344788
+vt 0.452364 0.324057
+vt 0.420641 0.133939
+vt 0.377660 0.369831
+vt 0.316619 0.238965
+vt 0.344469 0.401138
+vt 0.203502 0.332509
+vt 0.341509 0.470674
+vt 0.290325 0.542416
+vt 0.176827 0.557096
+vt 0.372919 0.574586
+vt 0.196433 0.716353
+vt 0.404798 0.649130
+vt 0.469609 0.683778
+vt 0.272092 0.796098
+vt 0.770390 0.885486
+vt 0.973405 0.572910
+vt 0.591386 0.033412
+vt 0.226599 0.867698
+vt 0.423770 0.837943
+vt 0.601314 0.983475
+vt 0.078559 0.769893
+vt 0.000000 0.582245
+vt 0.098436 0.412390
+vt 0.075624 0.232320
+vt 0.200045 0.071942
+vt 0.558116 0.117912
+vt 0.922195 0.225217
+vt 0.852821 0.430110
+vt 0.698467 0.759089
+vt 0.495235 0.523967
+vt 0.391629 1.000000
+vt 0.022541 0.410768
+vt 0.797247 0.085491
+vt 0.393825 0.000000
+vt 0.950807 0.778383
+vt 1.000000 0.399692
+g Cylinder_Cylinder.001_None
+s 1
+f 33/1 2/2 4/3
+f 4/3 6/4 35/5
+f 35/5 6/4 8/6
+f 36/7 8/6 10/8
+f 10/8 12/9 38/10
+f 12/9 14/11 39/12
+f 39/12 14/11 16/13
+f 16/13 18/14 41/15
+f 18/14 20/16 42/17
+f 20/16 22/18 43/19
+f 43/19 22/18 24/20
+f 24/20 26/21 45/22
+f 26/21 28/23 46/24
+f 46/24 28/23 30/25
+f 32/26 2/2 33/1
+f 47/27 30/25 32/26
+f 3/28 7/29 15/30
+f 29/31 47/27 48/32
+f 48/32 33/1 1/33
+f 27/34 46/24 47/27
+f 25/35 45/22 46/24
+f 44/36 45/22 25/35
+f 21/37 43/19 44/36
+f 42/17 43/19 21/37
+f 41/15 42/17 19/38
+f 15/30 40/39 41/15
+f 39/12 40/39 15/30
+f 11/40 38/10 39/12
+f 37/41 38/10 11/40
+f 7/29 36/7 37/41
+f 35/5 36/7 7/29
+f 3/28 34/42 35/5
+f 33/1 34/42 3/28
+f 4/3 2/2 49/43
+f 2/2 32/26 49/43
+f 32/26 30/25 49/43
+f 30/25 28/23 49/43
+f 28/23 26/21 49/43
+f 26/21 24/20 49/43
+f 24/20 22/18 49/43
+f 22/18 20/16 49/43
+f 20/16 18/14 49/43
+f 18/14 16/13 49/43
+f 16/13 14/11 49/43
+f 14/11 12/9 49/43
+f 12/9 10/8 49/43
+f 10/8 8/6 49/43
+f 8/6 6/4 49/43
+f 6/4 4/3 49/43
+f 34/42 33/1 4/3
+f 34/42 4/3 35/5
+f 36/7 35/5 8/6
+f 37/41 36/7 10/8
+f 37/41 10/8 38/10
+f 38/10 12/9 39/12
+f 40/39 39/12 16/13
+f 40/39 16/13 41/15
+f 41/15 18/14 42/17
+f 42/17 20/16 43/19
+f 44/36 43/19 24/20
+f 44/36 24/20 45/22
+f 45/22 26/21 46/24
+f 47/27 46/24 30/25
+f 48/32 32/26 33/1
+f 48/32 47/27 32/26
+f 29/31 31/44 1/33
+f 23/45 27/34 29/31
+f 27/34 23/45 25/35
+f 15/30 19/38 21/37
+f 11/40 13/46 15/30
+f 15/30 17/47 19/38
+f 3/28 23/45 29/31
+f 29/31 1/33 3/28
+f 3/28 5/48 7/29
+f 7/29 9/49 11/40
+f 23/45 15/30 21/37
+f 15/30 23/45 3/28
+f 15/30 7/29 11/40
+f 31/44 29/31 48/32
+f 31/44 48/32 1/33
+f 29/31 27/34 47/27
+f 27/34 25/35 46/24
+f 23/45 44/36 25/35
+f 23/45 21/37 44/36
+f 19/38 42/17 21/37
+f 17/47 41/15 19/38
+f 17/47 15/30 41/15
+f 13/46 39/12 15/30
+f 13/46 11/40 39/12
+f 9/49 37/41 11/40
+f 9/49 7/29 37/41
+f 5/48 35/5 7/29
+f 5/48 3/28 35/5
+f 1/33 33/1 3/28
diff --git a/plantlife_modpack/molehills/molehills_settings.txt b/plantlife_modpack/molehills/molehills_settings.txt
new file mode 100644
index 0000000..2079574
--- /dev/null
+++ b/plantlife_modpack/molehills/molehills_settings.txt
@@ -0,0 +1,6 @@
+-- Settings for generation of stuff (at map-generation time)
+
+Molehills_Max_Count = 320 -- absolute maximum number in an area of 80x80x80 nodes
+
+Molehills_Rarity = 87 -- larger values make molehills more rare (100 means chance of 0 %)
+
diff --git a/plantlife_modpack/molehills/textures/molehills_dirt.png b/plantlife_modpack/molehills/textures/molehills_dirt.png
new file mode 100644
index 0000000..79ffa85
--- /dev/null
+++ b/plantlife_modpack/molehills/textures/molehills_dirt.png
Binary files differ
diff --git a/plantlife_modpack/molehills/textures/molehills_side.png b/plantlife_modpack/molehills/textures/molehills_side.png
new file mode 100644
index 0000000..554bbec
--- /dev/null
+++ b/plantlife_modpack/molehills/textures/molehills_side.png
Binary files differ
diff --git a/plantlife_modpack/molehills/textures/old & unused/molehill_side.png b/plantlife_modpack/molehills/textures/old & unused/molehill_side.png
new file mode 100644
index 0000000..5f0f976
--- /dev/null
+++ b/plantlife_modpack/molehills/textures/old & unused/molehill_side.png
Binary files differ
diff --git a/plantlife_modpack/molehills/textures/old & unused/molehill_top.png b/plantlife_modpack/molehills/textures/old & unused/molehill_top.png
new file mode 100644
index 0000000..55cc541
--- /dev/null
+++ b/plantlife_modpack/molehills/textures/old & unused/molehill_top.png
Binary files differ
diff --git a/plantlife_modpack/nature_classic/blossom.lua b/plantlife_modpack/nature_classic/blossom.lua
new file mode 100644
index 0000000..62947b5
--- /dev/null
+++ b/plantlife_modpack/nature_classic/blossom.lua
@@ -0,0 +1,75 @@
+-- Blossoms and such
+
+local function spawn_apple_under(pos)
+ local below = {
+ x = pos.x,
+ y = pos.y - 1,
+ z = pos.z,
+ }
+ if minetest.get_node(below).name == "air" then
+ minetest.set_node(below, { name = "default:apple" })
+ end
+end
+
+minetest.register_node(":"..nature.blossom_node, {
+ description = "Apple blossoms",
+ drawtype = "allfaces_optional",
+ tiles = nature.blossom_textures,
+ paramtype = "light",
+ groups = { snappy = 3, leafdecay = 3, flammable = 2, leafdecay = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ waving = 1
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = nature.blossom_node,
+ burntime = 2,
+})
+
+-- these ABMs can get heavy, so just enqueue the nodes
+
+-- Adding Blossoms
+-- Limit mass changes after block has not been loaded for some time:
+-- Run ABM with higher frequency, but don't enqueue all blocks
+minetest.register_abm({
+ nodenames = { nature.blossom_leaves },
+ interval = nature.blossom_delay / nature.leaves_blossom_chance,
+ chance = nature.leaves_blossom_chance,
+
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ if math.random(nature.leaves_blossom_chance) == 1 then
+ nature.enqueue_node(pos, node, nature.blossom_node)
+ end
+ end
+})
+
+-- Removing blossoms
+-- Limit mass changes after block has not been loaded for some time:
+-- Run ABM with higher frequency, but don't enqueue all blocks
+minetest.register_abm({
+ nodenames = { nature.blossom_node },
+ interval = nature.blossom_delay / nature.blossom_leaves_chance,
+ chance = nature.blossom_leaves_chance,
+
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ if math.random(nature.blossom_leaves_chance) == 1 then
+ nature.enqueue_node(pos, node, nature.blossom_leaves)
+ end
+ end
+})
+
+-- Spawning apples
+-- Limit mass changes after block has not been loaded for some time:
+-- spawn apples with 25% chance, but with 4 times higher frequency
+minetest.register_abm({
+ nodenames = { nature.blossom_node },
+ interval = nature.apple_delay / 4,
+ chance = nature.apple_chance,
+
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ if math.random(4) == 1 and nature.dtime < 0.2 and not minetest.find_node_near(pos, nature.apple_spread, { "default:apple" }) then
+ spawn_apple_under(pos)
+ end
+ end
+})
diff --git a/plantlife_modpack/nature_classic/config.lua b/plantlife_modpack/nature_classic/config.lua
new file mode 100644
index 0000000..8f67b1c
--- /dev/null
+++ b/plantlife_modpack/nature_classic/config.lua
@@ -0,0 +1,6 @@
+-- Set on which distance from water can the tree still grow.
+-- Grows anywhere if set to -1.
+nature.distance_from_water = 20
+
+-- Minimum light level needed to grow. Default is 8, which means daylight.
+nature.minimum_growth_light = 8
diff --git a/plantlife_modpack/nature_classic/depends.txt b/plantlife_modpack/nature_classic/depends.txt
new file mode 100644
index 0000000..1246684
--- /dev/null
+++ b/plantlife_modpack/nature_classic/depends.txt
@@ -0,0 +1,2 @@
+default
+moretrees?
diff --git a/plantlife_modpack/nature_classic/global_function.lua b/plantlife_modpack/nature_classic/global_function.lua
new file mode 100644
index 0000000..3a5b9e3
--- /dev/null
+++ b/plantlife_modpack/nature_classic/global_function.lua
@@ -0,0 +1,82 @@
+-- helper functions
+
+local function process_blossom_queue_item()
+ local pos = nature.blossomqueue[1][1]
+ local node = nature.blossomqueue[1][2]
+ local replace = nature.blossomqueue[1][3]
+ if (nature.blossomqueue[1][3] == nature.blossom_node and not nature:is_near_water(pos)) then
+ table.remove(nature.blossomqueue, 1) -- don't grow if it's not near water, pop from queue.
+ return
+ end
+ nature:grow_node(pos, replace) -- now actually grow it.
+ table.remove(nature.blossomqueue, 1)
+end
+
+minetest.register_globalstep(function(dtime)
+ nature.dtime = dtime
+ if #nature.blossomqueue > 0 and dtime < 0.2 then
+ local i = 1
+ if dtime < 0.1 then
+ i = i + 4
+ end
+ if dtime < 0.05 then
+ i = i + 10
+ end
+ while #nature.blossomqueue > 0 and i > 0 do
+ process_blossom_queue_item()
+ i = i - 1
+ end
+ end
+end)
+
+function nature.enqueue_node(pos, node, replace)
+ local idx = #nature.blossomqueue
+ if idx < nature.blossomqueue_max then
+ local enqueue_prob = 0
+ if idx < nature.blossomqueue_max * 0.8 then
+ enqueue_prob = 1
+ else
+ -- Reduce queue growth as it gets closer to its max.
+ enqueue_prob = 1 - (idx - nature.blossomqueue_max * 0.8) / (nature.blossomqueue_max * 0.2)
+ end
+ if enqueue_prob == 1 or math.random(100) <= 100 * enqueue_prob then
+ nature.blossomqueue[idx+1] = {}
+ nature.blossomqueue[idx+1][1] = pos
+ nature.blossomqueue[idx+1][2] = node
+ nature.blossomqueue[idx+1][3] = replace
+ end
+ end
+end
+
+local function set_young_node(pos)
+ local meta = minetest.get_meta(pos)
+
+ meta:set_int(nature.meta_blossom_time, minetest.get_gametime())
+end
+
+local function is_not_young(pos)
+ local meta = minetest.get_meta(pos)
+
+ local blossom_time = meta:get_int(nature.meta_blossom_time)
+ return not (blossom_time and minetest.get_gametime() - blossom_time < nature.blossom_duration)
+end
+
+function nature:grow_node(pos, nodename)
+ if pos ~= nil then
+ local light_enough = (minetest.get_node_light(pos, nil) or 0)
+ >= nature.minimum_growth_light
+
+ if is_not_young(pos) and light_enough then
+ minetest.set_node(pos, { name = nodename })
+ set_young_node(pos)
+
+ minetest.log("info", nodename .. " has grown at " .. pos.x .. ","
+ .. pos.y .. "," .. pos.z)
+ end
+ end
+end
+
+function nature:is_near_water(pos)
+ return nature.distance_from_water == -1 or minetest.find_node_near(pos, nature.distance_from_water,
+ { "default:water_source" }) ~= nil
+end
diff --git a/plantlife_modpack/nature_classic/init.lua b/plantlife_modpack/nature_classic/init.lua
new file mode 100644
index 0000000..47fd9bf
--- /dev/null
+++ b/plantlife_modpack/nature_classic/init.lua
@@ -0,0 +1,41 @@
+-- Nature Classic mod
+-- Originally by neko259
+
+-- Nature is slowly capturing the world!
+
+local current_mod_name = minetest.get_current_modname()
+
+nature = {}
+nature.blossomqueue = {}
+nature.blossomqueue_max = 1000
+
+nature.blossom_node = "nature:blossom"
+nature.blossom_leaves = "default:leaves"
+nature.blossom_textures = { "default_leaves.png^nature_blossom.png" }
+
+if minetest.get_modpath("moretrees") then
+ nature.blossom_node = "moretrees:apple_blossoms"
+ nature.blossom_leaves = "moretrees:apple_tree_leaves"
+ nature.blossom_textures = { "moretrees_apple_tree_leaves.png^nature_blossom.png" }
+ minetest.register_alias("nature:blossom", "default:leaves")
+end
+
+nature.leaves_blossom_chance = 15
+nature.blossom_leaves_chance = 5
+nature.blossom_delay = 3600
+nature.apple_delay = 3600
+nature.apple_chance = 10
+nature.apple_spread = 2
+
+nature.meta_blossom_time = "blossom_time"
+nature.blossom_duration = nature.blossom_delay
+
+function dumppos(pos)
+ return "("..pos.x..","..pos.y..","..pos.z..")"
+end
+
+dofile(minetest.get_modpath(current_mod_name) .. "/config.lua")
+dofile(minetest.get_modpath(current_mod_name) .. "/global_function.lua")
+dofile(minetest.get_modpath(current_mod_name) .. "/blossom.lua")
+
+minetest.log("info", "[Nature Classic] loaded!")
diff --git a/plantlife_modpack/nature_classic/textures/nature_blossom.png b/plantlife_modpack/nature_classic/textures/nature_blossom.png
new file mode 100644
index 0000000..9d90336
--- /dev/null
+++ b/plantlife_modpack/nature_classic/textures/nature_blossom.png
Binary files differ
diff --git a/plantlife_modpack/poisonivy/depends.txt b/plantlife_modpack/poisonivy/depends.txt
new file mode 100644
index 0000000..249cc74
--- /dev/null
+++ b/plantlife_modpack/poisonivy/depends.txt
@@ -0,0 +1,2 @@
+biome_lib
+
diff --git a/plantlife_modpack/poisonivy/init.lua b/plantlife_modpack/poisonivy/init.lua
new file mode 100644
index 0000000..466b930
--- /dev/null
+++ b/plantlife_modpack/poisonivy/init.lua
@@ -0,0 +1,103 @@
+-- This file supplies poison ivy for the plantlife modpack
+-- Last revision: 2013-01-24
+
+local S = biome_lib.intllib
+
+local SPAWN_DELAY = 1000
+local SPAWN_CHANCE = 200
+local GROW_DELAY = 500
+local GROW_CHANCE = 30
+local poisonivy_seed_diff = 339
+local walls_list = {
+ "default:dirt",
+ "default:dirt_with_grass",
+ "default:stone",
+ "default:cobble",
+ "default:mossycobble",
+ "default:brick",
+ "default:tree",
+ "default:jungletree",
+ "default:stone_with_coal",
+ "default:stone_with_iron"
+},
+minetest.register_node('poisonivy:seedling', {
+ description = S("Poison ivy (seedling)"),
+ drawtype = 'plantlike',
+ waving = 1,
+ tiles = { 'poisonivy_seedling.png' },
+ inventory_image = 'poisonivy_seedling.png',
+ wield_image = 'poisonivy_seedling.png',
+ sunlight_propagates = true,
+ paramtype = 'light',
+ walkable = false,
+ groups = { snappy = 3, poisonivy=1, flora_block=1 },
+ sounds = default.node_sound_leaves_defaults(),
+ buildable_to = true,
+})
+
+minetest.register_node('poisonivy:sproutling', {
+ description = S("Poison ivy (sproutling)"),
+ drawtype = 'plantlike',
+ waving = 1,
+ tiles = { 'poisonivy_sproutling.png' },
+ inventory_image = 'poisonivy_sproutling.png',
+ wield_image = 'poisonivy_sproutling.png',
+ sunlight_propagates = true,
+ paramtype = 'light',
+ walkable = false,
+ groups = { snappy = 3, poisonivy=1, flora_block=1 },
+ sounds = default.node_sound_leaves_defaults(),
+ buildable_to = true,
+})
+
+minetest.register_node('poisonivy:climbing', {
+ description = S("Poison ivy (climbing plant)"),
+ drawtype = 'signlike',
+ tiles = { 'poisonivy_climbing.png' },
+ inventory_image = 'poisonivy_climbing.png',
+ wield_image = 'poisonivy_climbing.png',
+ sunlight_propagates = true,
+ paramtype = 'light',
+ paramtype2 = 'wallmounted',
+ walkable = false,
+ groups = { snappy = 3, poisonivy=1, flora_block=1 },
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "wallmounted",
+ --wall_side = = <default>
+ },
+ buildable_to = true,
+})
+
+biome_lib:spawn_on_surfaces({
+ spawn_delay = SPAWN_DELAY,
+ spawn_plants = {"poisonivy:seedling"},
+ avoid_radius = 10,
+ spawn_chance = SPAWN_CHANCE/10,
+ spawn_surfaces = {"default:dirt_with_grass"},
+ avoid_nodes = {"group:poisonivy", "group:flower", "group:flora"},
+ seed_diff = poisonivy_seed_diff,
+ light_min = 7,
+ alt_wallnode = "poisonivy:climbing",
+ verticals_list = walls_list
+})
+
+biome_lib:grow_plants({
+ grow_delay = SPAWN_DELAY,
+ grow_chance = GROW_CHANCE,
+ grow_plant = "poisonivy:seedling",
+ grow_result = "poisonivy:sproutling",
+ grow_nodes = {"default:dirt_with_grass"}
+})
+
+biome_lib:grow_plants({
+ grow_delay = GROW_DELAY,
+ grow_chance = GROW_CHANCE*2,
+ grow_plant = "poisonivy:climbing",
+ need_wall = true,
+ grow_vertically = true,
+ verticals_list = walls_list,
+ ground_nodes = {"default:dirt_with_grass"}
+})
+
+print(S("[Poison Ivy] Loaded."))
diff --git a/plantlife_modpack/poisonivy/locale/de.txt b/plantlife_modpack/poisonivy/locale/de.txt
new file mode 100644
index 0000000..5c099ce
--- /dev/null
+++ b/plantlife_modpack/poisonivy/locale/de.txt
@@ -0,0 +1,7 @@
+# Translation by Xanthin
+
+Poison ivy (seedling) = Giftefeu (Saemling)
+Poison ivy (sproutling) = Giftefeu (Sproessling)
+Poison ivy (climbing plant) = Giftefeu (Kletterpflanze)
+
+[Poison Ivy] Loaded. = [Poison Ivy] Geladen.
diff --git a/plantlife_modpack/poisonivy/locale/fr.txt b/plantlife_modpack/poisonivy/locale/fr.txt
new file mode 100644
index 0000000..f033dc3
--- /dev/null
+++ b/plantlife_modpack/poisonivy/locale/fr.txt
@@ -0,0 +1,7 @@
+# Template
+
+Poison ivy (seedling) = Sumac vénéneux (semis)
+Poison ivy (sproutling) = Sumac vénéneux (pousse)
+Poison ivy (climbing plant) = Sumac vénéneux (grimpant)
+
+[Poison Ivy] Loaded. = [Sumac vénéneux] Chargé.
diff --git a/plantlife_modpack/poisonivy/locale/template.txt b/plantlife_modpack/poisonivy/locale/template.txt
new file mode 100644
index 0000000..35fb12d
--- /dev/null
+++ b/plantlife_modpack/poisonivy/locale/template.txt
@@ -0,0 +1,7 @@
+# Template
+
+Poison ivy (seedling) =
+Poison ivy (sproutling) =
+Poison ivy (climbing plant) =
+
+[Poison Ivy] Loaded. =
diff --git a/plantlife_modpack/poisonivy/locale/tr.txt b/plantlife_modpack/poisonivy/locale/tr.txt
new file mode 100644
index 0000000..a7a5b69
--- /dev/null
+++ b/plantlife_modpack/poisonivy/locale/tr.txt
@@ -0,0 +1,7 @@
+# Turkish translation by mahmutelmas06
+
+Poison ivy (seedling) = Sarmaşık (Fidan)
+Poison ivy (sproutling) = Sarmaşık (Filiz)
+Poison ivy (climbing plant) = Sarmaşık (Dolanan)
+
+[Poison Ivy] Loaded. = Sarmaşık yüklendi
diff --git a/plantlife_modpack/poisonivy/textures/poisonivy_climbing.png b/plantlife_modpack/poisonivy/textures/poisonivy_climbing.png
new file mode 100644
index 0000000..f53f7a3
--- /dev/null
+++ b/plantlife_modpack/poisonivy/textures/poisonivy_climbing.png
Binary files differ
diff --git a/plantlife_modpack/poisonivy/textures/poisonivy_seedling.png b/plantlife_modpack/poisonivy/textures/poisonivy_seedling.png
new file mode 100644
index 0000000..281fa75
--- /dev/null
+++ b/plantlife_modpack/poisonivy/textures/poisonivy_seedling.png
Binary files differ
diff --git a/plantlife_modpack/poisonivy/textures/poisonivy_sproutling.png b/plantlife_modpack/poisonivy/textures/poisonivy_sproutling.png
new file mode 100644
index 0000000..92d2742
--- /dev/null
+++ b/plantlife_modpack/poisonivy/textures/poisonivy_sproutling.png
Binary files differ
diff --git a/plantlife_modpack/trunks/crafting.lua b/plantlife_modpack/trunks/crafting.lua
new file mode 100644
index 0000000..02f3991
--- /dev/null
+++ b/plantlife_modpack/trunks/crafting.lua
@@ -0,0 +1,133 @@
+-- Code by Mossmanikin
+-----------------------------------------------------------------------------------------------
+-- TWiGS
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- *leaves --> twigs
+ output = "trunks:twig_1 2",
+ recipe = {{"group:leafdecay"}}
+})
+if minetest.get_modpath("moretrees") ~= nil then
+minetest.register_craft({ -- moretrees_leaves --> twigs
+ output = "trunks:twig_1 2",
+ recipe = {{"group:moretrees_leaves"}}
+})
+minetest.register_craft({ -- except moretrees:palm_leaves
+ output = "moretrees:palm_leaves",
+ recipe = {{"moretrees:palm_leaves"}}
+})
+end
+if minetest.get_modpath("bushes") ~= nil then
+minetest.register_craft({ -- BushLeaves --> twigs
+ output = "trunks:twig_1 2",
+ recipe = {{"bushes:BushLeaves1"}}
+})
+minetest.register_craft({
+ output = "trunks:twig_1 2",
+ recipe = {{"bushes:BushLeaves2"}}
+})
+minetest.register_craft({ -- bushbranches --> twigs
+ output = "trunks:twig_1 4",
+ recipe = {{"bushes:bushbranches1"}}
+})
+minetest.register_craft({
+ output = "trunks:twig_1 4",
+ recipe = {{"bushes:bushbranches2"}}
+})
+minetest.register_craft({
+ output = "trunks:twig_1 4",
+ recipe = {{"bushes:bushbranches2a"}}
+})
+minetest.register_craft({
+ output = "trunks:twig_1 4",
+ recipe = {{"bushes:bushbranches3"}}
+})
+end
+minetest.register_craft({ -- twigs block --> twigs
+ output = "trunks:twig_1 8",
+ recipe = {{"trunks:twigs"}}
+})
+minetest.register_craft({ -- twigs_slab --> twigs
+ output = "trunks:twig_1 4",
+ recipe = {{"trunks:twigs_slab"}}
+})
+minetest.register_craft({ -- twigs_roof --> twigs
+ output = "trunks:twig_1 4",
+ recipe = {{"trunks:twigs_roof"}}
+})
+minetest.register_craft({ -- twigs_roof_corner --> twigs
+ output = "trunks:twig_1 3",
+ recipe = {{"trunks:twigs_roof_corner"}}
+})
+minetest.register_craft({ -- twigs_roof_corner_2 --> twigs
+ output = "trunks:twig_1 3",
+ recipe = {{"trunks:twigs_roof_corner_2"}}
+})
+-----------------------------------------------------------------------------------------------
+-- STiCK
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- twig --> stick
+ output = "default:stick",
+ recipe = {{"trunks:twig_1"}}
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS BLoCK
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- twigs --> twigs block
+ output = "trunks:twigs",
+ recipe = {
+ {"trunks:twig_1","trunks:twig_1","trunks:twig_1"},
+ {"trunks:twig_1", "" ,"trunks:twig_1"},
+ {"trunks:twig_1","trunks:twig_1","trunks:twig_1"},
+ }
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS SLaBS
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- twigs blocks --> twigs_slabs
+ output = "trunks:twigs_slab 6",
+ recipe = {
+ {"trunks:twigs","trunks:twigs","trunks:twigs"},
+ }
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS RooFS
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- twigs blocks --> twigs_roofs
+ output = "trunks:twigs_roof 4",
+ recipe = {
+ {"trunks:twigs",""},
+ {"","trunks:twigs"},
+ }
+})
+minetest.register_craft({
+ output = "trunks:twigs_roof 4",
+ recipe = {
+ {"","trunks:twigs"},
+ {"trunks:twigs",""},
+ }
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS RooF CoRNeRS
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- twigs blocks --> twigs_roof_corners
+ output = "trunks:twigs_roof_corner 8",
+ recipe = {
+ { "" ,"trunks:twigs", "" },
+ {"trunks:twigs", "" ,"trunks:twigs"},
+ }
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS RooF CoRNeRS 2
+-----------------------------------------------------------------------------------------------
+minetest.register_craft({ -- twigs blocks --> twigs_roof_corner_2's
+ output = "trunks:twigs_roof_corner_2 8",
+ recipe = {
+ {"trunks:twigs", "" ,"trunks:twigs"},
+ { "" ,"trunks:twigs", "" },
+ }
+}) \ No newline at end of file
diff --git a/plantlife_modpack/trunks/depends.txt b/plantlife_modpack/trunks/depends.txt
new file mode 100644
index 0000000..99cfba1
--- /dev/null
+++ b/plantlife_modpack/trunks/depends.txt
@@ -0,0 +1,6 @@
+default
+biome_lib
+bushes?
+ferns?
+moretrees?
+trees? \ No newline at end of file
diff --git a/plantlife_modpack/trunks/generating.lua b/plantlife_modpack/trunks/generating.lua
new file mode 100644
index 0000000..e544a21
--- /dev/null
+++ b/plantlife_modpack/trunks/generating.lua
@@ -0,0 +1,554 @@
+-- Code by Mossmanikin, Neuromancer, and others
+
+local function clone_node(name)
+ local node2 = {}
+ local node = minetest.registered_nodes[name]
+ for k,v in pairs(node) do
+ node2[k]=v
+ end
+ return node2
+end
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS
+-----------------------------------------------------------------------------------------------
+
+abstract_trunks.place_twig = function(pos)
+ local twig_size = math.random(1,27)
+
+ local right_here = {x=pos.x , y=pos.y+1, z=pos.z }
+ local north = {x=pos.x , y=pos.y+1, z=pos.z+1}
+ local north_east = {x=pos.x+1, y=pos.y+1, z=pos.z+1}
+ local east = {x=pos.x+1, y=pos.y+1, z=pos.z }
+ local south_east = {x=pos.x+1, y=pos.y+1, z=pos.z-1}
+ local south = {x=pos.x , y=pos.y+1, z=pos.z-1}
+ local south_west = {x=pos.x-1, y=pos.y+1, z=pos.z-1}
+ local west = {x=pos.x-1, y=pos.y+1, z=pos.z }
+ local north_west = {x=pos.x-1, y=pos.y+1, z=pos.z+1}
+
+ local node_here = minetest.get_node(right_here)
+ local node_north = minetest.get_node(north)
+ local node_n_e = minetest.get_node(north_east)
+ local node_east = minetest.get_node(east)
+ local node_s_e = minetest.get_node(south_east)
+ local node_south = minetest.get_node(south)
+ local node_s_w = minetest.get_node(south_west)
+ local node_west = minetest.get_node(west)
+ local node_n_w = minetest.get_node(north_west)
+-- small twigs
+ if twig_size <= 16 then
+ minetest.set_node(right_here, {name="trunks:twig_"..math.random(1,4), param2=math.random(0,3)})
+ end
+-- big twigs
+ if Big_Twigs == true then
+-- big twig 1
+ if twig_size == 17 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z+1}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_5"})
+ end
+ if minetest.registered_nodes[node_n_e.name].buildable_to then
+ minetest.set_node(north_east, {name="trunks:twig_7"})
+ end
+ if minetest.registered_nodes[node_east.name].buildable_to then
+ minetest.set_node(east, {name="trunks:twig_8"})
+ end
+ end
+ elseif twig_size == 18 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z-1}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_5", param2=1})
+ end
+ if minetest.registered_nodes[node_s_e.name].buildable_to then
+ minetest.set_node(south_east, {name="trunks:twig_7", param2=1})
+ end
+ if minetest.registered_nodes[node_south.name].buildable_to then
+ minetest.set_node(south, {name="trunks:twig_8", param2=1})
+ end
+ end
+ elseif twig_size == 19 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z-1}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_5", param2=2})
+ end
+ if minetest.registered_nodes[node_s_w.name].buildable_to then
+ minetest.set_node(south_west, {name="trunks:twig_7", param2=2})
+ end
+ if minetest.registered_nodes[node_west.name].buildable_to then
+ minetest.set_node(west, {name="trunks:twig_8", param2=2})
+ end
+ end
+ elseif twig_size == 20 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z+1}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_5", param2=3})
+ end
+ if minetest.registered_nodes[node_n_w.name].buildable_to then
+ minetest.set_node(north_west, {name="trunks:twig_7", param2=3})
+ end
+ if minetest.registered_nodes[node_north.name].buildable_to then
+ minetest.set_node(north, {name="trunks:twig_8", param2=3})
+ end
+ end
+-- big twig 2
+ elseif twig_size == 21 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z+1}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z+1}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_9"})
+ end
+ if minetest.registered_nodes[node_north.name].buildable_to then
+ minetest.set_node(north, {name="trunks:twig_10"})
+ end
+ if minetest.registered_nodes[node_n_e.name].buildable_to then
+ minetest.set_node(north_east, {name="trunks:twig_11"})
+ end
+ end
+ elseif twig_size == 22 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x+1,y=pos.y,z=pos.z-1}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_9", param2=1})
+ end
+ if minetest.registered_nodes[node_east.name].buildable_to then
+ minetest.set_node(east, {name="trunks:twig_10", param2=1})
+ end
+ if minetest.registered_nodes[node_s_e.name].buildable_to then
+ minetest.set_node(south_east, {name="trunks:twig_11", param2=1})
+ end
+ end
+ elseif twig_size == 23 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x,y=pos.y,z=pos.z-1}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z-1}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_9", param2=2})
+ end
+ if minetest.registered_nodes[node_south.name].buildable_to then
+ minetest.set_node(south, {name="trunks:twig_10", param2=2})
+ end
+ if minetest.registered_nodes[node_s_w.name].buildable_to then
+ minetest.set_node(south_west, {name="trunks:twig_11", param2=2})
+ end
+ end
+ elseif twig_size == 24 then
+ if not (minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z}).name].buildable_to
+ or minetest.registered_nodes[minetest.get_node({x=pos.x-1,y=pos.y,z=pos.z+1}).name].buildable_to) then
+
+ if minetest.registered_nodes[node_here.name].buildable_to then
+ minetest.set_node(right_here, {name="trunks:twig_9", param2=3})
+ end
+ if minetest.registered_nodes[node_west.name].buildable_to then
+ minetest.set_node(west, {name="trunks:twig_10", param2=3})
+ end
+ if minetest.registered_nodes[node_n_w.name].buildable_to then
+ minetest.set_node(north_west, {name="trunks:twig_11", param2=3})
+ end
+ end
+ elseif twig_size <= 25 then
+ minetest.set_node(right_here, {name="trunks:twig_"..math.random(12,13), param2=math.random(0,3)})
+ end
+ end
+end
+
+if Twigs_on_ground == true then
+biome_lib:register_generate_plant({
+ surface = {"default:dirt_with_grass"},
+ max_count = Twigs_on_ground_Max_Count,
+ rarity = Twigs_on_ground_Rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"group:tree","ferns:fern_03","ferns:fern_02","ferns:fern_01"},
+ near_nodes_size = 3,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_trunks.place_twig
+)
+end
+
+if Twigs_on_water == true then
+biome_lib:register_generate_plant({
+ surface = {"default:water_source"},
+ max_count = Twigs_on_water_Max_Count,
+ rarity = Twigs_on_water_Rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"group:tree"},
+ near_nodes_size = 3,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_trunks.place_twig
+)
+end
+
+-----------------------------------------------------------------------------------------------
+-- TRuNKS
+-----------------------------------------------------------------------------------------------
+local TRuNKS = {
+-- MoD TRuNK NR
+ {"default", "tree", 1},
+ {"default", "jungletree", 2},
+ {"default", "pine_tree", 12},
+
+ {"trees", "tree_conifer", 3},
+ {"trees", "tree_mangrove", 4},
+ {"trees", "tree_palm", 5},
+
+ {"moretrees", "apple_tree_trunk", 6},
+ {"moretrees", "beech_trunk", 7},
+ {"moretrees", "birch_trunk", 8},
+ {"moretrees", "fir_trunk", 9},
+ {"moretrees", "oak_trunk", 10},
+ {"moretrees", "palm_trunk", 11},
+ {"moretrees", "rubber_tree_trunk", 13},
+ {"moretrees", "rubber_tree_trunk_empty", 14},
+ {"moretrees", "sequoia_trunk", 15},
+ {"moretrees", "spruce_trunk", 16},
+ {"moretrees", "willow_trunk", 17},
+}
+
+if Horizontal_Trunks == true then -- see settings.txt
+for i in pairs(TRuNKS) do
+ local MoD = TRuNKS[i][1]
+ local TRuNK = TRuNKS[i][2]
+ local NR = TRuNKS[i][3]
+ local trunkname = MoD..":"..TRuNK
+ if minetest.get_modpath(MoD) ~= nil
+ and NR < 6 -- moretrees trunks allready have facedir
+ and minetest.registered_nodes[trunkname] then -- the node being called exists.
+ temptrunk = clone_node(trunkname)
+ temptrunk.paramtype2 = "facedir"
+ minetest.register_node(":"..trunkname, temptrunk)
+ end
+end
+end
+
+abstract_trunks.place_trunk = function(pos)
+
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ local north = {x=pos.x, y=pos.y+1, z=pos.z+1}
+ local north2 = {x=pos.x, y=pos.y+1, z=pos.z+2}
+ local south = {x=pos.x, y=pos.y+1, z=pos.z-1}
+ local south2 = {x=pos.x, y=pos.y+1, z=pos.z-2}
+ local west = {x=pos.x-1, y=pos.y+1, z=pos.z}
+ local west2 = {x=pos.x-2, y=pos.y+1, z=pos.z}
+ local east = {x=pos.x+1, y=pos.y+1, z=pos.z}
+ local east2 = {x=pos.x+2, y=pos.y+1, z=pos.z}
+
+ local node_here = minetest.get_node(right_here)
+ local node_north = minetest.get_node(north)
+ local node_north2 = minetest.get_node(north2)
+ local node_south = minetest.get_node(south)
+ local node_south2 = minetest.get_node(south2)
+ local node_west = minetest.get_node(west)
+ local node_west2 = minetest.get_node(west2)
+ local node_east = minetest.get_node(east)
+ local node_east2 = minetest.get_node(east2)
+ if minetest.registered_nodes[node_here.name].buildable_to then -- instead of check_air = true,
+ for i in pairs(TRuNKS) do
+ local MoD = TRuNKS[i][1]
+ local TRuNK = TRuNKS[i][2]
+ local NR = TRuNKS[i][3]
+ local chance = math.random(1, 17)
+ local length = math.random(3,5)
+ if chance == NR then
+ local trunk_type = math.random(1,3)
+ if trunk_type == 1 then
+ if minetest.get_modpath(MoD) ~= nil then
+ minetest.set_node(right_here, {name=MoD..":"..TRuNK})
+ else
+ minetest.set_node(right_here, {name="default:tree"})
+ end
+ elseif trunk_type == 2 and Horizontal_Trunks == true then
+ if minetest.get_modpath(MoD) ~= nil then
+ if minetest.registered_nodes[node_north.name].buildable_to then
+ minetest.set_node(north, {name=MoD..":"..TRuNK, param2=4})
+ end
+
+ if length >= 4 and minetest.registered_nodes[node_north2.name].buildable_to then
+ minetest.set_node(north2, {name=MoD..":"..TRuNK, param2=4})
+ end
+
+ minetest.set_node(right_here, {name=MoD..":"..TRuNK, param2=4})
+ if minetest.registered_nodes[node_south.name].buildable_to then
+ minetest.set_node(south, {name=MoD..":"..TRuNK, param2=4})
+ end
+ if length == 5 and minetest.registered_nodes[node_south2.name].buildable_to then
+ minetest.set_node(south2, {name=MoD..":"..TRuNK, param2=4})
+ end
+ else
+ if minetest.registered_nodes[node_north.name].buildable_to then
+ minetest.set_node(north, {name="default:tree", param2=4})
+ end
+ if length >= 4 and minetest.registered_nodes[node_north2.name].buildable_to then
+ minetest.set_node(north2, {name="default:tree", param2=4})
+ end
+ minetest.set_node(right_here, {name="default:tree", param2=4})
+ if minetest.registered_nodes[node_south.name].buildable_to then
+ minetest.set_node(south, {name="default:tree", param2=4})
+ end
+ if length == 5 and minetest.registered_nodes[node_south2.name].buildable_to then
+ minetest.set_node(south2, {name="default:tree", param2=4})
+ end
+ end
+ elseif trunk_type == 3 and Horizontal_Trunks == true then
+ if minetest.get_modpath(MoD) ~= nil then
+ if minetest.registered_nodes[node_west.name].buildable_to then
+ minetest.set_node(west, {name=MoD..":"..TRuNK, param2=12})
+ end
+ if length >= 4 and minetest.registered_nodes[node_west2.name].buildable_to then
+ minetest.set_node(west2, {name=MoD..":"..TRuNK, param2=12})
+ end
+ minetest.set_node(right_here, {name=MoD..":"..TRuNK, param2=12})
+ if minetest.registered_nodes[node_east.name].buildable_to then
+ minetest.set_node(east, {name=MoD..":"..TRuNK, param2=12})
+ end
+ if length == 5 and minetest.registered_nodes[node_east2.name].buildable_to then
+ minetest.set_node(east2, {name=MoD..":"..TRuNK, param2=12})
+ end
+ else
+ if minetest.registered_nodes[node_west.name].buildable_to then
+ minetest.set_node(west, {name="default:tree", param2=12})
+ end
+ if length >= 4 and minetest.registered_nodes[node_west2.name].buildable_to then
+ minetest.set_node(west2, {name="default:tree", param2=12})
+ end
+ minetest.set_node(right_here, {name="default:tree", param2=12})
+ if minetest.registered_nodes[node_east.name].buildable_to then
+ minetest.set_node(east, {name="default:tree", param2=12})
+ end
+ if length == 5 and minetest.registered_nodes[node_east2.name].buildable_to then
+ minetest.set_node(east2, {name="default:tree", param2=12})
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+biome_lib:register_generate_plant({
+ surface = {"default:dirt_with_grass"},
+ max_count = Trunks_Max_Count, -- 320,
+ rarity = Trunks_Rarity, -- 99,
+ min_elevation = 1,
+ max_elevation = 40,
+ avoid_nodes = {"group:tree"},
+ avoid_radius = 1,
+ near_nodes = {"group:tree","ferns:fern_03","ferns:fern_02","ferns:fern_01"},
+ near_nodes_size = 3,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_trunks.place_trunk
+)
+
+-----------------------------------------------------------------------------------------------
+-- MoSS & FuNGuS -- on ground
+-----------------------------------------------------------------------------------------------
+if Moss_on_ground == true then
+abstract_trunks.grow_moss_on_ground = function(pos)
+ local on_ground = {x=pos.x, y=pos.y+1, z=pos.z}
+ local moss_type = math.random(1,21)
+
+ if moss_type == 1 then
+ minetest.set_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3)})
+ else
+ minetest.set_node(on_ground, {name="trunks:moss", param2=math.random(0,3)})
+ end
+
+end
+
+biome_lib:register_generate_plant({
+ surface = {"default:dirt_with_grass"},
+ max_count = Moss_on_ground_Max_Count,
+ rarity = Moss_on_ground_Rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {
+ "group:tree",
+ "ferns:fern_03",
+ "ferns:fern_02",
+ "ferns:fern_01"
+ },
+ near_nodes_size = 2,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -0.9,
+ },
+ abstract_trunks.grow_moss_on_ground
+)
+end
+
+-----------------------------------------------------------------------------------------------
+-- MoSS & FuNGuS -- on trunks
+-----------------------------------------------------------------------------------------------
+if Moss_on_trunk == true then
+abstract_trunks.grow_moss_on_trunk = function(pos)
+ local on_ground = {x=pos.x, y=pos.y+1, z=pos.z}
+ local at_side_n = {x=pos.x, y=pos.y, z=pos.z+1}
+ local at_side_e = {x=pos.x+1, y=pos.y, z=pos.z}
+ local at_side_s = {x=pos.x, y=pos.y, z=pos.z-1}
+ local at_side_w = {x=pos.x-1, y=pos.y, z=pos.z}
+ local undrneath = {x=pos.x, y=pos.y-1, z=pos.z}
+
+ local node_here = minetest.get_node(on_ground)
+ local node_north = minetest.get_node(at_side_n)
+ local node_east = minetest.get_node(at_side_e)
+ local node_south = minetest.get_node(at_side_s)
+ local node_west = minetest.get_node(at_side_w)
+ local node_under = minetest.get_node(undrneath)
+
+ --if minetest.get_item_group(node_under.name, "tree") < 1 then
+ local moss_type = math.random(1,41)
+ if minetest.registered_nodes[node_here.name].buildable_to then -- instead of check_air = true,
+ if moss_type == 1 then
+ minetest.set_node(on_ground, {name="trunks:moss_fungus", param2=math.random(0,3) --[[1]]})
+ elseif moss_type < 22 then
+ minetest.set_node(on_ground, {name="trunks:moss", param2=math.random(0,3) --[[1]]})
+ end
+ end
+ local moss_type = math.random(1,31) -- cliche of more moss at north
+ if minetest.registered_nodes[node_north.name].buildable_to then -- instead of check_air = true,
+ if moss_type == 1 then
+ minetest.set_node(at_side_n, {name="trunks:moss_fungus", param2=math.random(4,7)}) -- 5,4,6,7
+ elseif moss_type < 22 then
+ minetest.set_node(at_side_n, {name="trunks:moss", param2=math.random(4,7)})
+ end
+ end
+ local moss_type = math.random(1,41)
+ if minetest.registered_nodes[node_east.name].buildable_to then -- instead of check_air = true,
+ if moss_type == 1 then
+ minetest.set_node(at_side_e, {name="trunks:moss_fungus", param2=math.random(12,15)})
+ elseif moss_type < 22 then
+ minetest.set_node(at_side_e, {name="trunks:moss", param2=math.random(12,15)})
+ end
+ end
+ local moss_type = math.random(1,41)
+ if minetest.registered_nodes[node_south.name].buildable_to then -- instead of check_air = true,
+ if moss_type == 1 then
+ minetest.set_node(at_side_s, {name="trunks:moss_fungus", param2=math.random(8,11)})
+ elseif moss_type < 22 then
+ minetest.set_node(at_side_s, {name="trunks:moss", param2=math.random(8,11)})
+ end
+ end
+ local moss_type = math.random(1,41)
+ if minetest.registered_nodes[node_west.name].buildable_to then -- instead of check_air = true,
+ if moss_type == 1 then
+ minetest.set_node(at_side_w, {name="trunks:moss_fungus", param2=math.random(16,19)})
+ elseif moss_type < 22 then
+ minetest.set_node(at_side_w, {name="trunks:moss", param2=math.random(16,19)})
+ end
+ end
+ --end
+end
+
+biome_lib:register_generate_plant({
+ surface = {
+ "default:tree",
+ "default:jungletree",
+ "default:pine_tree",
+ "trees:tree_conifer",
+ "trees:tree_mangrove",
+ --"trees:tree_palm",
+ "moretrees:apple_tree_trunk",
+ "moretrees:beech_trunk",
+ "moretrees:birch_trunk",
+ "moretrees:fir_trunk",
+ "moretrees:oak_trunk",
+ --"moretrees:palm_trunk",
+ "moretrees:rubber_tree_trunk",
+ "moretrees:rubber_tree_trunk_empty",
+ "moretrees:sequoia_trunk",
+ "moretrees:spruce_trunk",
+ "moretrees:willow_trunk",
+ "default:mossycobble"
+ },
+ max_count = Moss_on_trunk_Max_Count,
+ rarity = Moss_on_trunk_Rarity,
+ min_elevation = 1,
+ max_elevation = 40,
+ plantlife_limit = -0.9,
+ check_air = false,
+ },
+ "abstract_trunks.grow_moss_on_trunk"
+)
+end
+
+-----------------------------------------------------------------------------------------------
+-- RooTS
+-----------------------------------------------------------------------------------------------
+if Roots == true then -- see settings.txt
+
+abstract_trunks.grow_roots = function(pos)
+ local twig_size = math.random(1,27)
+
+ local right_here = {x=pos.x , y=pos.y , z=pos.z }
+ local below = {x=pos.x , y=pos.y-1, z=pos.z }
+ local north = {x=pos.x , y=pos.y , z=pos.z+1}
+ local east = {x=pos.x+1, y=pos.y , z=pos.z }
+ local south = {x=pos.x , y=pos.y , z=pos.z-1}
+ local west = {x=pos.x-1, y=pos.y , z=pos.z }
+
+ local node_here = minetest.get_node(right_here)
+ local node_below = minetest.get_node(below)
+ local node_north = minetest.get_node(north)
+ local node_east = minetest.get_node(east)
+ local node_south = minetest.get_node(south)
+ local node_west = minetest.get_node(west)
+
+ for i in pairs(TRuNKS) do
+ local MoD = TRuNKS[i][1]
+ local TRuNK = TRuNKS[i][2]
+ if minetest.get_modpath(MoD) ~= nil
+ and node_here.name == MoD..":"..TRuNK
+ and string.find(node_below.name, "dirt")
+ and node_here.param2 == 0 then
+ if minetest.registered_nodes[node_north.name].buildable_to then
+ minetest.set_node(north, {name="trunks:"..TRuNK.."root", param2=2})
+ end
+ if minetest.registered_nodes[node_east.name].buildable_to then
+ minetest.set_node(east, {name="trunks:"..TRuNK.."root", param2=3})
+ end
+ if minetest.registered_nodes[node_south.name].buildable_to then
+ minetest.set_node(south, {name="trunks:"..TRuNK.."root", param2=0})
+ end
+ if minetest.registered_nodes[node_west.name].buildable_to then
+ minetest.set_node(west, {name="trunks:"..TRuNK.."root", param2=1})
+ end
+ end
+ end
+end
+
+biome_lib:register_generate_plant({
+ surface = {"group:tree"},
+ max_count = 1000,
+ rarity = 1,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"default:dirt_with_grass"},
+ near_nodes_size = 1,
+ near_nodes_vertical = 1,
+ near_nodes_count = 1,
+ plantlife_limit = -1,
+ check_air = false,
+ },
+ "abstract_trunks.grow_roots"
+)
+
+end
diff --git a/plantlife_modpack/trunks/init.lua b/plantlife_modpack/trunks/init.lua
new file mode 100644
index 0000000..ee9427d
--- /dev/null
+++ b/plantlife_modpack/trunks/init.lua
@@ -0,0 +1,17 @@
+-----------------------------------------------------------------------------------------------
+local title = "Trunks"
+local version = "0.1.4"
+local mname = "trunks"
+-----------------------------------------------------------------------------------------------
+-- Code by Mossmanikin & Neuromancer
+
+abstract_trunks = {}
+
+dofile(minetest.get_modpath("trunks").."/trunks_settings.txt")
+dofile(minetest.get_modpath("trunks").."/generating.lua")
+dofile(minetest.get_modpath("trunks").."/nodes.lua")
+dofile(minetest.get_modpath("trunks").."/crafting.lua")
+
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+----------------------------------------------------------------------------------------------- \ No newline at end of file
diff --git a/plantlife_modpack/trunks/nodes.lua b/plantlife_modpack/trunks/nodes.lua
new file mode 100644
index 0000000..f490871
--- /dev/null
+++ b/plantlife_modpack/trunks/nodes.lua
@@ -0,0 +1,368 @@
+-- Code by Mossmanikin & Neuromancer
+-----------------------------------------------------------------------------------------------
+-- TWiGS
+-----------------------------------------------------------------------------------------------
+-- For compatibility with older stuff
+minetest.register_alias("trunks:twig", "trunks:twig_1")
+
+local flat_stick = {-1/2, -1/2, -1/2, 1/2, -7/16, 1/2}
+local NoDe = { {1}, {2}, {3}, {4}, {5}, --[[{6},]] {7}, {8}, {9}, {10}, {11}, {12}, {13} }
+
+
+for i in pairs(NoDe) do
+ local NR = NoDe[i][1]
+ local iNV = NR - 1
+ minetest.register_node("trunks:twig_"..NR, {
+ description = "Twig",
+ inventory_image = "trunks_twig_"..NR..".png",
+ wield_image = "trunks_twig_"..NR..".png",
+ drawtype = "nodebox",
+ tiles = {
+ "trunks_twig_"..NR..".png",
+ "trunks_twig_"..NR..".png^[transformFY", -- mirror
+ "trunks_twig_6.png" -- empty
+ },
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = false,
+ sunlight_propagates = true,
+ buildable_to = true,
+ node_box = {type = "fixed", fixed = flat_stick},
+ groups = {
+ choppy=2,
+ oddly_breakable_by_hand=2,
+ flammable=3,
+ attached_node=1,
+ not_in_creative_inventory=iNV
+ },
+ drop = "trunks:twig_1",
+ sounds = default.node_sound_leaves_defaults(),
+ liquids_pointable = true,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pt = pointed_thing
+ local direction = minetest.dir_to_facedir(placer:get_look_dir())
+ if minetest.get_node(pt.above).name=="air" then
+ minetest.set_node(pt.above, {name="trunks:twig_"..math.random(1,4), param2=direction})
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+ end
+ end,
+ })
+end
+
+-----------------------------------------------------------------------------------------------
+-- MoSS
+-----------------------------------------------------------------------------------------------
+local flat_moss = {-1/2, -1/2, -1/2, 1/2, -15/32--[[<-flickers if smaller]], 1/2}
+
+minetest.register_node("trunks:moss", {
+ description = "Moss",
+ drawtype = "nodebox",--"signlike",
+ tiles = {"trunks_moss.png"},
+ inventory_image = "trunks_moss.png",
+ wield_image = "trunks_moss.png",
+ paramtype = "light",
+ paramtype2 = "facedir",--"wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ node_box = {type = "fixed", fixed = flat_moss},
+ selection_box = {type = "fixed", fixed = flat_stick},--{type = "wallmounted"},
+ groups = {snappy = 3, flammable = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- MoSS & FuNGuS
+-----------------------------------------------------------------------------------------------
+minetest.register_node("trunks:moss_fungus", {
+ description = "Moss with Fungus",
+ drawtype = "nodebox",--"signlike",
+ tiles = {"trunks_moss_fungus.png"},
+ inventory_image = "trunks_moss_fungus.png",
+ wield_image = "trunks_moss_fungus.png",
+ paramtype = "light",
+ paramtype2 = "facedir",--"wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ node_box = {type = "fixed", fixed = flat_moss},
+ selection_box = {type = "fixed", fixed = flat_stick},--{type = "wallmounted"},
+ groups = {snappy = 3, flammable = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS BLoCK
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("woodstuff:twigs", "trunks:twigs")
+
+minetest.register_node("trunks:twigs", {
+ description = "Twigs Block",
+ paramtype2 = "facedir",
+ tiles = {"trunks_twigs.png"},
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS SLaB
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("woodstuff:twigs_slab", "trunks:twigs_slab")
+
+minetest.register_node("trunks:twigs_slab", {
+ description = "Twigs Slab",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"trunks_twigs.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
+ },
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS RooF
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("woodstuff:twigs_roof", "trunks:twigs_roof")
+
+minetest.register_node("trunks:twigs_roof", {
+ description = "Twigs Roof",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {"trunks_twigs.png"},
+ node_box = {
+ type = "fixed",
+-- { left, bottom, front, right, top, back }
+ fixed = {
+ {-1/2, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 0, 0},
+ }
+ },
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS RooF CoRNeR
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("woodstuff:twigs_roof_corner", "trunks:twigs_roof_corner")
+
+minetest.register_node("trunks:twigs_roof_corner", {
+ description = "Twigs Roof Corner 1",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {
+ "trunks_twigs_corner.png",
+ "trunks_twigs_corner.png",
+ "trunks_twigs.png"
+ },
+ node_box = {
+ type = "fixed",
+-- { left, bottom, front, right, top, back }
+ fixed = {
+ {-1/2, 0, 0, 0, 1/2, 1/2},
+ {0, -1/2, 0, 1/2, 0, 1/2},
+ {-1/2, -1/2, -1/2, 0, 0, 0},
+ }
+ },
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+-----------------------------------------------------------------------------------------------
+-- TWiGS RooF CoRNeR 2
+-----------------------------------------------------------------------------------------------
+minetest.register_alias("woodstuff:twigs_roof_corner_2", "trunks:twigs_roof_corner_2")
+
+minetest.register_node("trunks:twigs_roof_corner_2", {
+ description = "Twigs Roof Corner 2",
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {
+ "trunks_twigs_corner.png",
+ "trunks_twigs_corner.png",
+ "trunks_twigs.png"
+ },
+ node_box = {
+ type = "fixed",
+-- { left, bottom, front, right, top, back }
+ fixed = {
+ {-1/2, -1/2, 0, 0, 0, 1/2},
+ {0, 0, 0, 1/2, 1/2, 1/2},
+ {-1/2, 0, -1/2, 0, 1/2, 0},
+ }
+ },
+ groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+if Auto_Roof_Corner == true then
+
+ local roof = "trunks:twigs_roof"
+ local corner = "trunks:twigs_roof_corner"
+ local corner_2 = "trunks:twigs_roof_corner_2"
+
+ minetest.register_abm({
+ nodenames = {roof},
+ interval = 1,
+ chance = 1,
+ action = function(pos)
+
+ local node_east = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z })
+ local node_west = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z })
+ local node_north = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
+ local node_south = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
+ -- corner 1
+ if ((node_west.name == roof and node_west.param2 == 0)
+ or (node_west.name == corner and node_west.param2 == 1))
+ and ((node_north.name == roof and node_north.param2 == 3)
+ or (node_north.name == corner and node_north.param2 == 3))
+ then
+ minetest.set_node(pos, {name=corner, param2=0})
+ end
+
+ if ((node_north.name == roof and node_north.param2 == 1)
+ or (node_north.name == corner and node_north.param2 == 2))
+ and ((node_east.name == roof and node_east.param2 == 0)
+ or (node_east.name == corner and node_east.param2 == 0))
+ then
+ minetest.set_node(pos, {name=corner, param2=1})
+ end
+
+ if ((node_east.name == roof and node_east.param2 == 2)
+ or (node_east.name == corner and node_east.param2 == 3))
+ and ((node_south.name == roof and node_south.param2 == 1)
+ or (node_south.name == corner and node_south.param2 == 1))
+ then
+ minetest.set_node(pos, {name=corner, param2=2})
+ end
+
+ if ((node_south.name == roof and node_south.param2 == 3)
+ or (node_south.name == corner and node_south.param2 == 0))
+ and ((node_west.name == roof and node_west.param2 == 2)
+ or (node_west.name == corner and node_west.param2 == 2))
+ then
+ minetest.set_node(pos, {name=corner, param2=3})
+ end
+ -- corner 2
+ if ((node_west.name == roof and node_west.param2 == 2)
+ or (node_west.name == corner_2 and node_west.param2 == 1))
+ and ((node_north.name == roof and node_north.param2 == 1)
+ or (node_north.name == corner_2 and node_north.param2 == 3))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=0})
+ end
+
+ if ((node_north.name == roof and node_north.param2 == 3)
+ or (node_north.name == corner_2 and node_north.param2 == 2))
+ and ((node_east.name == roof and node_east.param2 == 2)
+ or (node_east.name == corner_2 and node_east.param2 == 0))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=1})
+ end
+
+ if ((node_east.name == roof and node_east.param2 == 0)
+ or (node_east.name == corner_2 and node_east.param2 == 3))
+ and ((node_south.name == roof and node_south.param2 == 3)
+ or (node_south.name == corner_2 and node_south.param2 == 1))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=2})
+ end
+
+ if ((node_south.name == roof and node_south.param2 == 1)
+ or (node_south.name == corner_2 and node_south.param2 == 0))
+ and ((node_west.name == roof and node_west.param2 == 0)
+ or (node_west.name == corner_2 and node_west.param2 == 2))
+ then
+ minetest.set_node(pos, {name=corner_2, param2=3})
+ end
+
+ end,
+ })
+end
+
+-- MM: The following stuff is just for testing purposes for now; no generating of roots.
+-- I'm not satisfied with this; they should be either bigger or a different drawtype.
+-----------------------------------------------------------------------------------------------
+-- RooTS
+-----------------------------------------------------------------------------------------------
+if Roots == true then -- see settings.txt
+
+local roots_cube = {-2/16, -1/2, -3/16, 2/16, 1/16, 1/2}
+
+local roots_sheet = {0, -1/2, -1/2, 0, 1/16, 1/2}
+
+local TRuNKS = {
+-- MoD TRuNK
+ {"default", "tree" },
+ {"default", "jungletree" },
+ {"default", "pine_tree" },
+
+ {"trees", "tree_conifer" },
+ {"trees", "tree_mangrove" },
+ {"trees", "tree_palm" },
+
+ {"moretrees", "apple_tree_trunk" },
+ {"moretrees", "beech_trunk" },
+ {"moretrees", "birch_trunk" },
+ {"moretrees", "fir_trunk" },
+ {"moretrees", "oak_trunk" },
+ {"moretrees", "palm_trunk" },
+ {"moretrees", "rubber_tree_trunk" },
+ {"moretrees", "rubber_tree_trunk_empty" },
+ {"moretrees", "sequoia_trunk" },
+ {"moretrees", "spruce_trunk" },
+ {"moretrees", "willow_trunk" },
+}
+
+for i in pairs(TRuNKS) do
+ local MoD = TRuNKS[i][1]
+ local TRuNK = TRuNKS[i][2]
+ if minetest.get_modpath(MoD) ~= nil then
+
+ local node = minetest.registered_nodes[MoD..":"..TRuNK]
+ if node then
+ local des = node.description
+
+ minetest.register_node("trunks:"..TRuNK.."root", {
+ description = des.." Root",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = {
+--[[top]] MoD.."_"..TRuNK..".png",
+--[[bottom]] MoD.."_"..TRuNK..".png",
+--[[right]] MoD.."_"..TRuNK..".png^trunks_root_mask.png^[makealpha:0,0,0",
+--[[left]] MoD.."_"..TRuNK..".png^trunks_root_mask.png^[transformFX^[makealpha:0,0,0",
+--[[back]] MoD.."_"..TRuNK..".png",
+--[[front]] MoD.."_"..TRuNK..".png"
+ },
+ drawtype = "nodebox",
+ selection_box = {type = "fixed", fixed = roots_cube},
+ node_box = {type = "fixed", fixed = roots_sheet},
+ groups = {
+ tree=1,
+ snappy=1,
+ choppy=2,
+ oddly_breakable_by_hand=1,
+ flammable=2--,
+ --not_in_creative_inventory=1 -- atm in inv for testing
+ },
+ --drop = "trunks:twig_1", -- not sure about this yet
+ sounds = default.node_sound_wood_defaults(),
+ })
+
+ else
+ print(string.format("[Trunks] warning: tree type '%s:%s' not found", MoD, TRuNK))
+ end
+ end
+end
+end
+
+minetest.register_alias("trunks:pine_trunkroot", "trunks:pine_treeroot")
diff --git a/plantlife_modpack/trunks/textures/credit_textures.txt b/plantlife_modpack/trunks/textures/credit_textures.txt
new file mode 100644
index 0000000..b3893d5
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/credit_textures.txt
@@ -0,0 +1,34 @@
+-------------------------------------------------------------
+Credit for textures of "trunks"
+-------------------------------------------------------------
+(If more than one author is listed the names are in alphabetical order)
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+FOLDER TEXTURE AUTHORS
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+../trunks/textures trunks_moss.png Neuromancer
+ trunks_moss_fungus.png Neuromancer
+ trunks_twig_1.png Mossmanikin
+ trunks_twig_2.png Mossmanikin, Neuromancer
+ trunks_twig_3.png Mossmanikin, Neuromancer
+ trunks_twig_4.png Mossmanikin, Neuromancer
+ trunks_twig_5.png Mossmanikin, Neuromancer
+ (trunks_twig_6.png) (Mossmanikin)
+ trunks_twig_7.png Mossmanikin, Neuromancer
+ trunks_twig_8.png Mossmanikin, Neuromancer
+ trunks_twig_9.png Mossmanikin, Neuromancer
+ trunks_twig_10.png Mossmanikin, Neuromancer
+ trunks_twig_11.png Mossmanikin, Neuromancer
+ trunks_twigs.png Mossmanikin
+ trunks_twigs_corner.png Mossmanikin
+ trunks_twigs_top.png Mossmanikin
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+../trunks/textures/old & unused comboSticks.png Mossmanikin, Neuromancer
+ comboSticks_2.png Mossmanikin, Neuromancer
+ trunks_twig_1e.png Mossmanikin, Neuromancer
+ trunks_twig_1n.png Mossmanikin, Neuromancer
+ trunks_twig_2n.png Mossmanikin, Neuromancer
+ trunks_twig_3n.png Mossmanikin, Neuromancer
+ trunks_twig_4n.png Mossmanikin, Neuromancer
+ trunks_twig_5-8.png Mossmanikin, Neuromancer
+ trunks_twig_9-12.png Mossmanikin, Neuromancer
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/plantlife_modpack/trunks/textures/old & unused/comboSticks.png b/plantlife_modpack/trunks/textures/old & unused/comboSticks.png
new file mode 100644
index 0000000..e3b7770
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/comboSticks.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/comboSticks_2.png b/plantlife_modpack/trunks/textures/old & unused/comboSticks_2.png
new file mode 100644
index 0000000..2053592
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/comboSticks_2.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_root_mask_old.png b/plantlife_modpack/trunks/textures/old & unused/trunks_root_mask_old.png
new file mode 100644
index 0000000..51071c3
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_root_mask_old.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_1e.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_1e.png
new file mode 100644
index 0000000..518955c
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_1e.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_1n.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_1n.png
new file mode 100644
index 0000000..157c957
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_1n.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_2n.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_2n.png
new file mode 100644
index 0000000..9945f22
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_2n.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_3n.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_3n.png
new file mode 100644
index 0000000..6aacf9d
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_3n.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_4n.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_4n.png
new file mode 100644
index 0000000..c5286b6
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_4n.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_5-8.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_5-8.png
new file mode 100644
index 0000000..9dda478
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_5-8.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/old & unused/trunks_twig_9-12.png b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_9-12.png
new file mode 100644
index 0000000..42a5d45
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/old & unused/trunks_twig_9-12.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_moss.png b/plantlife_modpack/trunks/textures/trunks_moss.png
new file mode 100644
index 0000000..5ffe58f
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_moss.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_moss_fungus.png b/plantlife_modpack/trunks/textures/trunks_moss_fungus.png
new file mode 100644
index 0000000..fcd4ae2
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_moss_fungus.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_root_mask.png b/plantlife_modpack/trunks/textures/trunks_root_mask.png
new file mode 100644
index 0000000..5bfdac6
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_root_mask.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_1.png b/plantlife_modpack/trunks/textures/trunks_twig_1.png
new file mode 100644
index 0000000..066bbfa
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_1.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_10.png b/plantlife_modpack/trunks/textures/trunks_twig_10.png
new file mode 100644
index 0000000..062d8f6
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_10.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_11.png b/plantlife_modpack/trunks/textures/trunks_twig_11.png
new file mode 100644
index 0000000..d9f41f8
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_11.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_12.png b/plantlife_modpack/trunks/textures/trunks_twig_12.png
new file mode 100644
index 0000000..b8cf458
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_12.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_13.png b/plantlife_modpack/trunks/textures/trunks_twig_13.png
new file mode 100644
index 0000000..64b08eb
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_13.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_2.png b/plantlife_modpack/trunks/textures/trunks_twig_2.png
new file mode 100644
index 0000000..826253c
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_2.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_3.png b/plantlife_modpack/trunks/textures/trunks_twig_3.png
new file mode 100644
index 0000000..4038e03
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_3.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_4.png b/plantlife_modpack/trunks/textures/trunks_twig_4.png
new file mode 100644
index 0000000..971d649
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_4.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_5.png b/plantlife_modpack/trunks/textures/trunks_twig_5.png
new file mode 100644
index 0000000..5f74334
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_5.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_6.png b/plantlife_modpack/trunks/textures/trunks_twig_6.png
new file mode 100644
index 0000000..2f6464b
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_6.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_7.png b/plantlife_modpack/trunks/textures/trunks_twig_7.png
new file mode 100644
index 0000000..8b5e4e1
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_7.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_8.png b/plantlife_modpack/trunks/textures/trunks_twig_8.png
new file mode 100644
index 0000000..a9441e9
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_8.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twig_9.png b/plantlife_modpack/trunks/textures/trunks_twig_9.png
new file mode 100644
index 0000000..3e7a3f3
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twig_9.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twigs.png b/plantlife_modpack/trunks/textures/trunks_twigs.png
new file mode 100644
index 0000000..20ae6ca
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twigs.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twigs_corner.png b/plantlife_modpack/trunks/textures/trunks_twigs_corner.png
new file mode 100644
index 0000000..60871bf
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twigs_corner.png
Binary files differ
diff --git a/plantlife_modpack/trunks/textures/trunks_twigs_top.png b/plantlife_modpack/trunks/textures/trunks_twigs_top.png
new file mode 100644
index 0000000..baf797c
--- /dev/null
+++ b/plantlife_modpack/trunks/textures/trunks_twigs_top.png
Binary files differ
diff --git a/plantlife_modpack/trunks/trunks_settings.txt b/plantlife_modpack/trunks/trunks_settings.txt
new file mode 100644
index 0000000..7fe8822
--- /dev/null
+++ b/plantlife_modpack/trunks/trunks_settings.txt
@@ -0,0 +1,70 @@
+-- Settings for generation of stuff (at map-generation time)
+
+
+
+
+
+Horizontal_Trunks = true
+
+
+
+Trunks_Max_Count = 320 -- absolute maximum number in an area of 80x80x80 nodes
+
+
+Trunks_Rarity = 99 -- larger values make trunks more rare (100 means chance of 0 %)
+
+
+
+
+
+Big_Twigs = true -- twigs larger than one node
+Twigs_on_ground = true
+
+
+
+Twigs_on_ground_Max_Count = 640 -- absolute maximum number in an area of 80x80x80 nodes
+
+Twigs_on_ground_Rarity = 66 -- larger values make twigs more rare (100 means chance of 0 %)
+
+
+
+
+
+Twigs_on_water = true
+
+
+
+Twigs_on_water_Max_Count = 320 -- absolute maximum number in an area of 80x80x80 nodes
+
+
+Twigs_on_water_Rarity = 33 -- larger values make twigs more rare (100 means chance of 0 %)
+
+
+
+
+
+Moss_on_ground = true
+
+
+
+Moss_on_ground_Max_Count = 400 -- absolute maximum number in an area of 80x80x80 nodes
+
+Moss_on_ground_Rarity = 79 -- larger values makes moss more rare (100 means chance of 0 %)
+
+
+
+
+
+Moss_on_trunk = true
+
+
+
+Moss_on_trunk_Max_Count = 640 -- absolute maximum number in an area of 80x80x80 nodes
+
+Moss_on_trunk_Rarity = 24 -- larger values makes moss more rare (100 means chance of 0 %)
+
+
+Auto_Roof_Corner = true -- behavior is similar (not the same!) to the one of minecraft stairs
+
+
+Roots = true \ No newline at end of file
diff --git a/plantlife_modpack/vines/LICENSE.md b/plantlife_modpack/vines/LICENSE.md
new file mode 100644
index 0000000..fb67788
--- /dev/null
+++ b/plantlife_modpack/vines/LICENSE.md
@@ -0,0 +1,4 @@
+License
+=======
+- Code WTFPL
+- Texture CC
diff --git a/plantlife_modpack/vines/README.md b/plantlife_modpack/vines/README.md
new file mode 100644
index 0000000..386dcae
--- /dev/null
+++ b/plantlife_modpack/vines/README.md
@@ -0,0 +1,56 @@
+# Vines
+
+## Features
+- Rope block for spawning rope that slowly drops into the deep.
+- Vines are climbable and slowly grow downward.
+- Shears that allow the collecting of vines.
+- Spawns vines on jungletree leaves.
+- Roots on the bottom of dirt and dirt with grass nodes.
+- Spawns vines on trees located in swampy area.
+- Jungle vines that spawn on the side of jungletrees
+
+## API
+The API is very minimal. It allows the registering of vines and the spawning of
+existing vines on nodes of your own.
+
+If you want vines to spawn on a certain node then you can choose which vine by
+adding to the node groups the unique group of that vine. This is determined by
+the name of the vine ( see vines.lua ) appended with '_vines'.
+An example would be.
+
+"willow_vines" or "jungle_vines"
+
+There are two types of vines. One that spawns at the bottom of nodes and uses the
+plantlike drawtype, and vines that spawn on the side that use signlike
+drawtype. The type is determined by the spawn_on_side property in the biome
+table.
+
+### Example
+*taken from mod*
+
+```lua
+
+ vines.register_vine( name, definitions, biome )
+
+ --e.g.
+
+ vines.register_vine( 'vine', {
+ description = "Vines",
+ average_length = 9
+ }, biome )
+
+```
+
+### definitions
+|key| type| description|
+|---| ---| ---|
+|description| string|The vine's tooltip description|
+|average_length|int| The average length of vines|
+
+For biome definitions please see the [biome_lib API documentation](https://github.com/VanessaE/biome_lib/blob/master/API.txt)
+
+## Notice
+Vines use after_destruct on registered leave nodes to remove vines from which
+the leaves are removed. This is done by using the override function.
+Malfunctions may occur if other mods override the after_destruct of these nodes
+also.
diff --git a/plantlife_modpack/vines/aliases.lua b/plantlife_modpack/vines/aliases.lua
new file mode 100644
index 0000000..fce7218
--- /dev/null
+++ b/plantlife_modpack/vines/aliases.lua
@@ -0,0 +1,11 @@
+-- used to remove the old vine nodes. This gives room for the new nodes
+minetest.register_alias( 'vines:root', 'air' )
+minetest.register_alias( 'vines:root_rotten', 'air' )
+minetest.register_alias( 'vines:vine', 'air' )
+minetest.register_alias( 'vines:vine_rotten', 'air' )
+minetest.register_alias( 'vines:side', 'air' )
+minetest.register_alias( 'vines:side_rotten', 'air' )
+minetest.register_alias( 'vines:jungle', 'air' )
+minetest.register_alias( 'vines:jungle_rotten', 'air' )
+minetest.register_alias( 'vines:willow', 'air' )
+minetest.register_alias( 'vines:willow_rotten', 'air' )
diff --git a/plantlife_modpack/vines/crafts.lua b/plantlife_modpack/vines/crafts.lua
new file mode 100644
index 0000000..19e658b
--- /dev/null
+++ b/plantlife_modpack/vines/crafts.lua
@@ -0,0 +1,14 @@
+minetest.register_craft({
+ output = 'vines:rope_block',
+ recipe = vines.recipes['rope_block']
+})
+
+minetest.register_craft({
+ output = 'vines:shears',
+ recipe = vines.recipes['shears']
+})
+
+minetest.register_craftitem("vines:vines", {
+ description = "Vines",
+ inventory_image = "vines_item.png",
+})
diff --git a/plantlife_modpack/vines/depends.txt b/plantlife_modpack/vines/depends.txt
new file mode 100644
index 0000000..573e6e1
--- /dev/null
+++ b/plantlife_modpack/vines/depends.txt
@@ -0,0 +1,3 @@
+default
+biome_lib
+moretrees?
diff --git a/plantlife_modpack/vines/functions.lua b/plantlife_modpack/vines/functions.lua
new file mode 100644
index 0000000..db120a6
--- /dev/null
+++ b/plantlife_modpack/vines/functions.lua
@@ -0,0 +1,132 @@
+vines.register_vine = function( name, defs, biome )
+ local biome = biome
+ local groups = { vines=1, snappy=3, flammable=2 }
+
+ local vine_name_end = 'vines:'..name..'_end'
+ local vine_name_middle = 'vines:'..name..'_middle'
+
+ local vine_image_end = "vines_"..name.."_end.png"
+ local vine_image_middle = "vines_"..name.."_middle.png"
+
+ local drop_node = vine_name_end
+
+ biome.spawn_plants = { vine_name_end }
+
+ local vine_group = 'group:'..name..'_vines'
+ biome.spawn_surfaces[ #biome.spawn_surfaces + 1 ] = vine_group
+
+ local selection_box = { type = "wallmounted", }
+ local drawtype = 'signlike'
+ if ( not biome.spawn_on_side ) then
+ --different properties for bottom and side vines.
+ selection_box = { type = "fixed", fixed = { -0.4, -1/2, -0.4, 0.4, 1/2, 0.4 }, }
+ drawtype = 'plantlike'
+ end
+
+ minetest.register_node( vine_name_end, {
+ description = defs.description,
+ walkable = false,
+ climbable = true,
+ wield_image = vine_image_end,
+ drop = "",
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ buildable_to = true,
+ tiles = { vine_image_end },
+ drawtype = drawtype,
+ inventory_image = vine_image_end,
+ groups = groups,
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = selection_box,
+ on_construct = function( pos )
+ local timer = minetest.get_node_timer( pos )
+ timer:start( math.random(5, 10) )
+ end,
+ on_timer = function( pos )
+ local node = minetest.get_node( pos )
+ local bottom = {x=pos.x, y=pos.y-1, z=pos.z}
+ local bottom_node = minetest.get_node( bottom )
+ if bottom_node.name == "air" then
+ if not ( math.random( defs.average_length ) == 1 ) then
+ minetest.set_node( pos, { name = vine_name_middle, param2 = node.param2 } )
+ minetest.set_node( bottom, { name = node.name, param2 = node.param2 } )
+ local timer = minetest.get_node_timer( bottom_node )
+ timer:start( math.random(5, 10) )
+ end
+ end
+ end,
+ after_dig_node = function(pos, node, oldmetadata, user)
+ vines.dig_vine( pos, drop_node, user )
+ end
+ })
+
+
+ minetest.register_node( vine_name_middle, {
+ description = "Matured "..defs.description,
+ walkable = false,
+ climbable = true,
+ drop = "",
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ buildable_to = true,
+ tiles = { vine_image_middle },
+ wield_image = vine_image_middle,
+ drawtype = drawtype,
+ inventory_image = vine_image_middle,
+ groups = groups,
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = selection_box,
+ on_destruct = function( pos )
+ local node = minetest.get_node( pos )
+ local bottom = {x=pos.x, y=pos.y-1, z=pos.z}
+ local bottom_node = minetest.get_node( bottom )
+ if minetest.get_item_group( bottom_node.name, "vines") then
+ minetest.remove_node( bottom )
+ end
+ end,
+ after_dig_node = function( pos, node, oldmetadata, user )
+ vines.dig_vine( pos, drop_node, user )
+ end
+ })
+
+ biome_lib:spawn_on_surfaces( biome )
+
+ local override_nodes = function( nodes, defs )
+ local function override( index, registered )
+ local node = nodes[ index ]
+ if index > #nodes then return registered end
+ if minetest.registered_nodes[node] then
+ minetest.override_item( node, defs )
+ registered[#registered+1] = node
+ end
+ override( index+1, registered )
+ end
+ override( 1, {} )
+ end
+
+ override_nodes( biome.spawn_surfaces,{
+ after_destruct = function( pos )
+ local pos_min = { x = pos.x -1, y = pos.y - 1, z = pos.z - 1 }
+ local pos_max = { x = pos.x +1, y = pos.y + 1, z = pos.z + 1 }
+ local positions = minetest.find_nodes_in_area( pos_min, pos_max, "group:vines" )
+ for index, position in pairs(positions) do
+ minetest.remove_node( position )
+ end
+ end
+ })
+
+end
+
+vines.dig_vine = function( pos, node_name, user )
+ --only dig give the vine if shears are used
+ if not user then return false end
+ local wielded = user:get_wielded_item()
+ if 'vines:shears' == wielded:get_name() then
+ local inv = user:get_inventory()
+ if inv then
+ inv:add_item("main", ItemStack( node_name ))
+ end
+ end
+end
diff --git a/plantlife_modpack/vines/init.lua b/plantlife_modpack/vines/init.lua
new file mode 100644
index 0000000..72eda93
--- /dev/null
+++ b/plantlife_modpack/vines/init.lua
@@ -0,0 +1,14 @@
+vines = {
+ name = 'vines',
+ recipes = {}
+}
+
+dofile( minetest.get_modpath( vines.name ) .. "/functions.lua" )
+dofile( minetest.get_modpath( vines.name ) .. "/aliases.lua" )
+dofile( minetest.get_modpath( vines.name ) .. "/recipes.lua" )
+dofile( minetest.get_modpath( vines.name ) .. "/crafts.lua" )
+dofile( minetest.get_modpath( vines.name ) .. "/nodes.lua" )
+dofile( minetest.get_modpath( vines.name ) .. "/shear.lua" )
+dofile( minetest.get_modpath( vines.name ) .. "/vines.lua" )
+
+print("[Vines] Loaded!")
diff --git a/plantlife_modpack/vines/nodes.lua b/plantlife_modpack/vines/nodes.lua
new file mode 100644
index 0000000..9d7df00
--- /dev/null
+++ b/plantlife_modpack/vines/nodes.lua
@@ -0,0 +1,83 @@
+minetest.register_node("vines:rope_block", {
+ description = "Rope",
+ sunlight_propagates = true,
+ paramtype = "light",
+ tiles = {
+ "default_wood.png^vines_rope.png",
+ "default_wood.png^vines_rope.png",
+ "default_wood.png",
+ "default_wood.png",
+ "default_wood.png^vines_rope.png",
+ "default_wood.png^vines_rope.png",
+ },
+ groups = { flammable=2, choppy=2, oddly_breakable_by_hand=1 },
+ after_place_node = function(pos)
+ local p = {x=pos.x, y=pos.y-1, z=pos.z}
+ local n = minetest.get_node(p)
+ if n.name == "air" then
+ minetest.add_node(p, {name="vines:rope_end"})
+ end
+ end,
+ after_dig_node = function(pos, node, digger)
+ local p = {x=pos.x, y=pos.y-1, z=pos.z}
+ local n = minetest.get_node(p)
+ while ( n.name == 'vines:rope' or n.name == 'vines:rope_end' ) do
+ minetest.remove_node(p)
+ p = {x=p.x, y=p.y-1, z=p.z}
+ n = minetest.get_node(p)
+ end
+ end
+})
+
+minetest.register_node("vines:rope", {
+ description = "Rope",
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ drop = "",
+ tiles = { "vines_rope.png" },
+ drawtype = "plantlike",
+ groups = {flammable=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+})
+
+minetest.register_node("vines:rope_end", {
+ description = "Rope",
+ walkable = false,
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+ drop = "",
+ tiles = { "vines_rope_end.png" },
+ drawtype = "plantlike",
+ groups = {flammable=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+ after_place_node = function(pos)
+ yesh = {x = pos.x, y= pos.y-1, z=pos.z}
+ minetest.add_node(yesh, {name="vines:rope"})
+ end,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ on_construct = function( pos )
+ local timer = minetest.get_node_timer( pos )
+ timer:start( 1 )
+ end,
+ on_timer = function( pos, elapsed )
+ local p = {x=pos.x, y=pos.y-1, z=pos.z}
+ local n = minetest.get_node(p)
+ if n.name == "air" then
+ minetest.set_node(pos, {name="vines:rope"})
+ minetest.add_node(p, {name="vines:rope_end"})
+ else
+ local timer = minetest.get_node_timer( pos )
+ timer:start( 1 )
+ end
+ end
+})
diff --git a/plantlife_modpack/vines/recipes.lua b/plantlife_modpack/vines/recipes.lua
new file mode 100644
index 0000000..d2b928a
--- /dev/null
+++ b/plantlife_modpack/vines/recipes.lua
@@ -0,0 +1,12 @@
+vines.recipes['rope_block'] = {
+ {'', 'default:wood', ''},
+ {'', 'group:vines', ''},
+ {'', 'group:vines', ''}
+}
+
+vines.recipes['shears'] = {
+ {'', 'default:steel_ingot', ''},
+ {'default:stick', 'default:wood', 'default:steel_ingot'},
+ {'', '', 'default:stick'}
+}
+
diff --git a/plantlife_modpack/vines/shear.lua b/plantlife_modpack/vines/shear.lua
new file mode 100644
index 0000000..e6d915a
--- /dev/null
+++ b/plantlife_modpack/vines/shear.lua
@@ -0,0 +1,15 @@
+minetest.register_tool("vines:shears", {
+ description = "Shears",
+ inventory_image = "vines_shears.png",
+ wield_image = "vines_shears.png",
+ stack_max = 1,
+ max_drop_level=3,
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ groupcaps={
+ snappy={times={[3]=0.2}, maxwear=0.05, maxlevel=3},
+ wool={times={[3]=0.2}, maxwear=0.05, maxlevel=3}
+ }
+ },
+})
diff --git a/plantlife_modpack/vines/textures/vines_item.png b/plantlife_modpack/vines/textures/vines_item.png
new file mode 100644
index 0000000..c66242e
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_item.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_jungle_end.png b/plantlife_modpack/vines/textures/vines_jungle_end.png
new file mode 100644
index 0000000..6c8d339
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_jungle_end.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_jungle_middle.png b/plantlife_modpack/vines/textures/vines_jungle_middle.png
new file mode 100644
index 0000000..bf838a5
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_jungle_middle.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_root_end.png b/plantlife_modpack/vines/textures/vines_root_end.png
new file mode 100644
index 0000000..4fc3f87
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_root_end.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_root_middle.png b/plantlife_modpack/vines/textures/vines_root_middle.png
new file mode 100644
index 0000000..49f88c0
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_root_middle.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_rope.png b/plantlife_modpack/vines/textures/vines_rope.png
new file mode 100644
index 0000000..0045c4c
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_rope.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_rope_end.png b/plantlife_modpack/vines/textures/vines_rope_end.png
new file mode 100644
index 0000000..faf2c71
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_rope_end.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_shears.png b/plantlife_modpack/vines/textures/vines_shears.png
new file mode 100644
index 0000000..c4c39f9
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_shears.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_side_end.png b/plantlife_modpack/vines/textures/vines_side_end.png
new file mode 100644
index 0000000..5b3b28f
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_side_end.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_side_middle.png b/plantlife_modpack/vines/textures/vines_side_middle.png
new file mode 100644
index 0000000..2576e93
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_side_middle.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_vine_end.png b/plantlife_modpack/vines/textures/vines_vine_end.png
new file mode 100644
index 0000000..062857b
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_vine_end.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_vine_middle.png b/plantlife_modpack/vines/textures/vines_vine_middle.png
new file mode 100644
index 0000000..8afffe8
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_vine_middle.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_willow_end.png b/plantlife_modpack/vines/textures/vines_willow_end.png
new file mode 100644
index 0000000..b5b8e59
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_willow_end.png
Binary files differ
diff --git a/plantlife_modpack/vines/textures/vines_willow_middle.png b/plantlife_modpack/vines/textures/vines_willow_middle.png
new file mode 100644
index 0000000..ca0b831
--- /dev/null
+++ b/plantlife_modpack/vines/textures/vines_willow_middle.png
Binary files differ
diff --git a/plantlife_modpack/vines/vines.lua b/plantlife_modpack/vines/vines.lua
new file mode 100644
index 0000000..82c5b2a
--- /dev/null
+++ b/plantlife_modpack/vines/vines.lua
@@ -0,0 +1,104 @@
+vines.register_vine( 'root', {
+ description = "Roots",
+ average_length = 9,
+},{
+ choose_random_wall = true,
+ avoid_nodes = {"vines:root_middle"},
+ avoid_radius = 5,
+ spawn_delay = 500,
+ spawn_chance = 10,
+ spawn_surfaces = {
+ "default:dirt_with_grass",
+ "default:dirt"
+ },
+ spawn_on_bottom = true,
+ plantlife_limit = -0.6,
+ humidity_min = 0.4,
+})
+
+vines.register_vine( 'vine', {
+ description = "Vines",
+ average_length = 5,
+},{
+ choose_random_wall = true,
+ avoid_nodes = {"group:vines"},
+ avoid_radius = 5,
+ spawn_delay = 500,
+ spawn_chance = 100,
+ spawn_surfaces = {
+ "default:jungleleaves",
+ "moretrees:jungletree_leaves_red",
+ "moretrees:jungletree_leaves_yellow",
+ "moretrees:jungletree_leaves_green"
+ },
+ spawn_on_bottom = true,
+ plantlife_limit = -0.9,
+ humidity_min = 0.7,
+})
+
+vines.register_vine( 'side', {
+ description = "Vines",
+ average_length = 6,
+},{
+ choose_random_wall = true,
+ avoid_nodes = {"group:vines", "default:apple"},
+ choose_random_wall = true,
+ avoid_radius = 3,
+ spawn_delay = 500,
+ spawn_chance = 100,
+ spawn_surfaces = {
+ "default:jungleleaves",
+ "moretrees:jungletree_leaves_red",
+ "moretrees:jungletree_leaves_yellow",
+ "moretrees:jungletree_leaves_green"
+ },
+ spawn_on_side = true,
+ plantlife_limit = -0.9,
+ humidity_min = 0.4,
+})
+
+vines.register_vine( "jungle", {
+ description = "Jungle Vines",
+ average_length = 7,
+},{
+ choose_random_wall = true,
+ neighbors = {
+ "default:jungleleaves",
+ "moretrees:jungletree_leaves_red",
+ "moretrees:jungletree_leaves_yellow",
+ "moretrees:jungletree_leaves_green"
+ },
+ avoid_nodes = {
+ "vines:jungle_middle",
+ "vines:jungle_end",
+ },
+ avoid_radius = 5,
+ spawn_delay = 500,
+ spawn_chance = 100,
+ spawn_surfaces = {
+ "default:jungletree",
+ "moretrees:jungletree_trunk"
+ },
+ spawn_on_side = true,
+ plantlife_limit = -0.9,
+ humidity_min = 0.2,
+})
+
+vines.register_vine( 'willow', {
+ description = "Willow Vines",
+ average_length = 9,
+},{
+ choose_random_wall = true,
+ avoid_nodes = { "vines:willow_middle" },
+ avoid_radius = 5,
+ near_nodes = { 'default:water_source' },
+ near_nodes_size = 1,
+ near_nodes_count = 1,
+ near_nodes_vertical = 7,
+ plantlife_limit = -0.8,
+ spawn_chance = 10,
+ spawn_delay = 500,
+ spawn_on_side = true,
+ spawn_surfaces = {"moretrees:willow_leaves"},
+ humidity_min = 0.5
+})
diff --git a/plantlife_modpack/woodsoils/depends.txt b/plantlife_modpack/woodsoils/depends.txt
new file mode 100644
index 0000000..c95a2bf
--- /dev/null
+++ b/plantlife_modpack/woodsoils/depends.txt
@@ -0,0 +1,7 @@
+default
+biome_lib
+bushes?
+ferns?
+moretrees?
+trees?
+trunks? \ No newline at end of file
diff --git a/plantlife_modpack/woodsoils/generating.lua b/plantlife_modpack/woodsoils/generating.lua
new file mode 100644
index 0000000..1d03ed7
--- /dev/null
+++ b/plantlife_modpack/woodsoils/generating.lua
@@ -0,0 +1,151 @@
+-- generating of forest soils
+
+local RaDiuS = {
+-- WE1 NS1 WE2 NS2 WE3 NS3
+ {-1,-2, -2,-2, -2,-3},
+ { 0,-2, -3,-1, -3,-2},
+ { 1,-2, -3, 0, -4,-1},
+ {-2,-1, -3, 1, -4, 0},
+ {-1,-1, -2, 2, -4, 1},
+ { 0,-1, -1, 3, -3, 2},
+ { 1,-1, 0, 3, -2, 3},
+ { 2,-1, 1, 3, -1, 4},
+ {-2, 0, 2, 2, 0, 4},
+ {-1, 0, 3, 1, 1, 4},
+ { 0, 0, 3, 0, 2, 3},
+ { 1, 0, 3,-1, 3, 2},
+ { 2, 0, 2,-2, 4, 1},
+ {-2, 1, 1,-3, 4, 0},
+ {-1, 1, 0,-3, 4,-1},
+ { 0, 1, -1,-3, 3,-2},
+ { 1, 1, 0, 0, 2,-3},
+ { 2, 1, 0, 0, 1,-4},
+ {-1, 2, 0, 0, 0,-4},
+ { 0, 2, 0, 0, -1,-4},
+ { 1, 2, 0, 0, 0, 0},
+}
+-- e = + , n = +
+abstract_woodsoils.place_soil = function(pos)
+
+ if minetest.get_item_group(minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name, "soil") > 0
+ or minetest.get_item_group(minetest.get_node({x=pos.x,y=pos.y-2,z=pos.z}).name, "soil") > 0 then
+ for i in pairs(RaDiuS) do
+ local WE1 = RaDiuS[i][1]
+ local NS1 = RaDiuS[i][2]
+ local WE2 = RaDiuS[i][3]
+ local NS2 = RaDiuS[i][4]
+ local WE3 = RaDiuS[i][5]
+ local NS3 = RaDiuS[i][6]
+ local radius_1a = {x=pos.x+WE1,y=pos.y-1,z=pos.z+NS1}
+ local radius_1b = {x=pos.x+WE1,y=pos.y-2,z=pos.z+NS1}
+ local radius_2a = {x=pos.x+WE2,y=pos.y-1,z=pos.z+NS2}
+ local radius_2b = {x=pos.x+WE2,y=pos.y-2,z=pos.z+NS2}
+ local radius_3a = {x=pos.x+WE3,y=pos.y-1,z=pos.z+NS3}
+ local radius_3b = {x=pos.x+WE3,y=pos.y-2,z=pos.z+NS3}
+ --local node_1a = minetest.get_node(radius_1a)
+ --local node_1b = minetest.get_node(radius_1b)
+ local node_2a = minetest.get_node(radius_2a)
+ local node_2b = minetest.get_node(radius_2b)
+ local node_3a = minetest.get_node(radius_3a)
+ local node_3b = minetest.get_node(radius_3b)
+ -- Dirt with Leaves 1
+ if minetest.get_item_group(minetest.get_node(radius_1a).name, "soil") > 0 then
+ minetest.set_node(radius_1a, {name="woodsoils:dirt_with_leaves_1"})
+ end
+ if minetest.get_item_group(minetest.get_node(radius_1b).name, "soil") > 0 then
+ minetest.set_node(radius_1b, {name="woodsoils:dirt_with_leaves_1"})
+ end
+ -- Grass with Leaves 2
+ if string.find(node_2a.name, "dirt_with_grass") then
+ minetest.set_node(radius_2a, {name="woodsoils:grass_with_leaves_2"})
+ end
+ if string.find(node_2b.name, "dirt_with_grass") then
+ minetest.set_node(radius_2b, {name="woodsoils:grass_with_leaves_2"})
+ end
+ -- Grass with Leaves 1
+ if string.find(node_3a.name, "dirt_with_grass") then
+ minetest.set_node(radius_3a, {name="woodsoils:grass_with_leaves_1"})
+ end
+ if string.find(node_3b.name, "dirt_with_grass") then
+ minetest.set_node(radius_3b, {name="woodsoils:grass_with_leaves_1"})
+ end
+ end
+ end
+end
+
+biome_lib:register_generate_plant({
+ surface = {
+ "group:tree",
+ "ferns:fern_03",
+ "ferns:fern_02",
+ "ferns:fern_01"
+ },
+ max_count = 1000,
+ rarity = 1,
+ min_elevation = 1,
+ max_elevation = 40,
+ near_nodes = {"group:tree","ferns:fern_03","ferns:fern_02","ferns:fern_01"},
+ near_nodes_size = 5,
+ near_nodes_vertical = 1,
+ near_nodes_count = 4,
+ plantlife_limit = -1,
+ check_air = false,
+ },
+ "abstract_woodsoils.place_soil"
+)
+
+biome_lib:register_generate_plant({
+ surface = {
+ "moretrees:apple_tree_sapling_ongen",
+ "moretrees:beech_sapling_ongen",
+ "moretrees:birch_sapling_ongen",
+ "moretrees:fir_sapling_ongen",
+ "moretrees:jungletree_sapling_ongen",
+ "moretrees:oak_sapling_ongen",
+ "moretrees:palm_sapling_ongen",
+ "moretrees:rubber_tree_sapling_ongen",
+ "moretrees:sequoia_sapling_ongen",
+ "moretrees:spruce_sapling_ongen",
+ "moretrees:willow_sapling_ongen"
+ },
+ max_count = 1000,
+ rarity = 2,
+ min_elevation = 1,
+ max_elevation = 40,
+ plantlife_limit = -0.9,
+ check_air = false,
+ },
+ "abstract_woodsoils.place_soil"
+)
+
+minetest.register_abm({
+ nodenames = {"default:papyrus"},
+ neighbors = {
+ "woodsoils:dirt_with_leaves_1",
+ "woodsoils:dirt_with_leaves_2",
+ "woodsoils:grass_with_leaves_1",
+ "woodsoils:grass_with_leaves_2"
+ },
+ interval = 50,
+ chance = 20,
+ action = function(pos, node)
+ pos.y = pos.y-1
+ local name = minetest.get_node(pos).name
+ if string.find(name, "_with_leaves_") then
+ if minetest.find_node_near(pos, 3, {"group:water"}) == nil then
+ return
+ end
+ pos.y = pos.y+1
+ local height = 0
+ while minetest.get_node(pos).name == "default:papyrus" and height < 4 do
+ height = height+1
+ pos.y = pos.y+1
+ end
+ if height < 4 then
+ if minetest.get_node(pos).name == "air" then
+ minetest.set_node(pos, {name="default:papyrus"})
+ end
+ end
+ end
+ end,
+})
diff --git a/plantlife_modpack/woodsoils/init.lua b/plantlife_modpack/woodsoils/init.lua
new file mode 100644
index 0000000..9037d45
--- /dev/null
+++ b/plantlife_modpack/woodsoils/init.lua
@@ -0,0 +1,29 @@
+-----------------------------------------------------------------------------------------------
+local title = "Wood Soils" -- former "Forest Soils"
+local version = "0.0.9"
+local mname = "woodsoils" -- former "forestsoils"
+-----------------------------------------------------------------------------------------------
+
+abstract_woodsoils = {}
+
+dofile(minetest.get_modpath("woodsoils").."/nodes.lua")
+dofile(minetest.get_modpath("woodsoils").."/generating.lua")
+
+-- felt like playing a bit :D
+--[[print(" _____ __")
+print("_/ ____\\___________ ____ _______/ |_")
+print("\\ __\\/ _ \\_ __ \\_/ __ \\ / ___/\\ __\\")
+print(" | | ( <_> ) | \\/\\ ___/ \\___ \\ | |")
+print(" |__| \\____/|__| \\___ >____ > |__|")
+print(" \\/ \\/")
+
+print(" .__.__")
+print(" __________ |__| | ______")
+print(" / ___/ _ \\| | | / ___/")
+print(" \\___ ( <_> ) | |__\\___ \\")
+print("/____ >____/|__|____/____ >")
+print(" \\/ \\/")]]
+
+-----------------------------------------------------------------------------------------------
+print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
+----------------------------------------------------------------------------------------------- \ No newline at end of file
diff --git a/plantlife_modpack/woodsoils/nodes.lua b/plantlife_modpack/woodsoils/nodes.lua
new file mode 100644
index 0000000..e80c522
--- /dev/null
+++ b/plantlife_modpack/woodsoils/nodes.lua
@@ -0,0 +1,79 @@
+-- nodes
+
+minetest.register_node("woodsoils:dirt_with_leaves_1", {
+ description = "Forest Soil 1",
+ tiles = {
+ "default_dirt.png^woodsoils_ground_cover.png",
+ "default_dirt.png",
+ "default_dirt.png^woodsoils_ground_cover_side.png"},
+ is_ground_content = true,
+ groups = {
+ crumbly=3,
+ soil=1--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'default:dirt',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+minetest.register_node("woodsoils:dirt_with_leaves_2", {
+ description = "Forest Soil 2",
+ tiles = {
+ "woodsoils_ground.png",
+ "default_dirt.png",
+ "default_dirt.png^woodsoils_ground_side.png"},
+ is_ground_content = true,
+ groups = {
+ crumbly=3,
+ soil=1--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'default:dirt',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+minetest.register_node("woodsoils:grass_with_leaves_1", {
+ description = "Forest Soil 3",
+ tiles = {
+ "default_grass.png^woodsoils_ground_cover2.png",
+ "default_dirt.png",
+ "default_dirt.png^default_grass_side.png^woodsoils_ground_cover_side2.png"},
+ is_ground_content = true,
+ groups = {
+ crumbly=3,
+ soil=1--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'default:dirt',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+minetest.register_node("woodsoils:grass_with_leaves_2", {
+ description = "Forest Soil 4",
+ tiles = {
+ "default_grass.png^woodsoils_ground_cover.png",
+ "default_dirt.png",
+ "default_dirt.png^default_grass_side.png^woodsoils_ground_cover_side.png"},
+ is_ground_content = true,
+ groups = {
+ crumbly=3,
+ soil=1--,
+ --not_in_creative_inventory=1
+ },
+ drop = 'default:dirt',
+ sounds = default.node_sound_dirt_defaults({
+ footstep = {name="default_grass_footstep", gain=0.4},
+ }),
+})
+
+-- For compatibility with older stuff
+minetest.register_alias("forestsoils:dirt_with_leaves_1", "woodsoils:dirt_with_leaves_1")
+minetest.register_alias("forestsoils:dirt_with_leaves_2", "woodsoils:dirt_with_leaves_2")
+minetest.register_alias("forestsoils:grass_with_leaves_1", "woodsoils:grass_with_leaves_1")
+minetest.register_alias("forestsoils:grass_with_leaves_2", "woodsoils:grass_with_leaves_2")
diff --git a/plantlife_modpack/woodsoils/textures/credit_textures.txt b/plantlife_modpack/woodsoils/textures/credit_textures.txt
new file mode 100644
index 0000000..45d582d
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/credit_textures.txt
@@ -0,0 +1,16 @@
+-------------------------------------------------------------
+Credit for textures of "woodsoils"
+-------------------------------------------------------------
+(If more than one author is listed the names are in alphabetical order)
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+FOLDER TEXTURE AUTHORS
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+../woodsoils/textures woodsoils_ground.png Mossmanikin
+ woodsoils_ground_cover.png Mossmanikin
+ woodsoils_ground_cover_side.png Mossmanikin
+ woodsoils_ground_cover_side2.png Mossmanikin
+ woodsoils_ground_cover2.png Mossmanikin
+ woodsoils_ground_side.png Mossmanikin
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+../woodsoils/textures/not in use woodsoils.png Mossmanikin
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/plantlife_modpack/woodsoils/textures/not in use/woodsoils.png b/plantlife_modpack/woodsoils/textures/not in use/woodsoils.png
new file mode 100644
index 0000000..67253bc
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/not in use/woodsoils.png
Binary files differ
diff --git a/plantlife_modpack/woodsoils/textures/woodsoils_ground.png b/plantlife_modpack/woodsoils/textures/woodsoils_ground.png
new file mode 100644
index 0000000..907b345
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/woodsoils_ground.png
Binary files differ
diff --git a/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover.png b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover.png
new file mode 100644
index 0000000..103f103
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover.png
Binary files differ
diff --git a/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover2.png b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover2.png
new file mode 100644
index 0000000..ec18dd6
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover2.png
Binary files differ
diff --git a/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side.png b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side.png
new file mode 100644
index 0000000..d21f2b9
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side.png
Binary files differ
diff --git a/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side2.png b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side2.png
new file mode 100644
index 0000000..f4e4ce6
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/woodsoils_ground_cover_side2.png
Binary files differ
diff --git a/plantlife_modpack/woodsoils/textures/woodsoils_ground_side.png b/plantlife_modpack/woodsoils/textures/woodsoils_ground_side.png
new file mode 100644
index 0000000..08fb4be
--- /dev/null
+++ b/plantlife_modpack/woodsoils/textures/woodsoils_ground_side.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/depends.txt b/plantlife_modpack/youngtrees/depends.txt
new file mode 100644
index 0000000..4e35179
--- /dev/null
+++ b/plantlife_modpack/youngtrees/depends.txt
@@ -0,0 +1,2 @@
+default
+biome_lib \ No newline at end of file
diff --git a/plantlife_modpack/youngtrees/init.lua b/plantlife_modpack/youngtrees/init.lua
new file mode 100644
index 0000000..183e86e
--- /dev/null
+++ b/plantlife_modpack/youngtrees/init.lua
@@ -0,0 +1,146 @@
+abstract_youngtrees = {}
+
+minetest.register_node("youngtrees:bamboo", {
+ description = "Young Bamboo Tree",
+ drawtype="nodebox",
+ tiles = {"bamboo.png"},
+ paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.058251,-0.500000,-0.413681,0.066749,0.500000,-0.282500}, --NodeBox 1
+ {-0.058251,-0.500000,-0.103123,0.066749,0.500000,0.038672}, --NodeBox 2
+ {-0.058251,-0.500000,0.181227,0.066749,0.500000,0.342500}, --NodeBox 3
+ }
+ },
+ groups = {snappy=3,flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'trunks:twig_1'
+})
+
+minetest.register_node("youngtrees:youngtree2_middle",{
+ description = "Young Tree 2 (middle)",
+ drawtype="nodebox",
+ tiles = {"youngtree2branch.png"},
+ inventory_image = "youngtree2branch.png",
+ wield_image = "youngtree2branch.png",
+ paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0.125000,-0.500000,-0.500000,0.500000,-0.187500,-0.125000}, --NodeBox 1
+ {-0.187500,-0.187500,-0.500000,0.500000,0.125000,0.250000}, --NodeBox 2
+ {-0.500000,0.125000,-0.500000,0.500000,0.500000,0.500000}, --NodeBox 3
+ }
+ },
+ groups = {snappy=3,flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'trunks:twig_1'
+})
+
+minetest.register_node("youngtrees:youngtree_top", {
+ description = "Young Tree (top)",
+ drawtype = "plantlike",
+ tiles = {"youngtree16xa.png"},
+ inventory_image = "youngtree16xa.png",
+ wield_image = "youngtree16xa.png",
+ paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+ groups = {snappy=3,flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'trunks:twig_1'
+})
+
+
+minetest.register_node("youngtrees:youngtree_middle", {
+ description = "Young Tree (middle)",
+ drawtype = "plantlike",
+ tiles = {"youngtree16xb.png"},
+ inventory_image = "youngtree16xb.png",
+ wield_image = "youngtree16xb.png",
+ paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+ groups = {snappy=3,flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'trunks:twig_1'
+})
+
+
+
+minetest.register_node("youngtrees:youngtree_bottom", {
+ description = "Young Tree (bottom)",
+ drawtype = "plantlike",
+ tiles = {"youngtree16xc.png"},
+ inventory_image = "youngtree16xc.png",
+ wield_image = "youngtree16xc.png",
+ paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
+ },
+ groups = {snappy=3,flammable=2},
+ sounds = default.node_sound_leaves_defaults(),
+ drop = 'trunks:twig_1'
+})
+
+
+ abstract_youngtrees.grow_youngtree = function(pos)
+ local height = math.random(1,3)
+ abstract_youngtrees.grow_youngtree_node(pos,height)
+end
+
+abstract_youngtrees.grow_youngtree_node = function(pos, height)
+
+
+ local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
+ local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z}
+
+ if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
+ or minetest.get_node(right_here).name == "default:junglegrass" then
+ if height == 1 then
+ minetest.set_node(right_here, {name="youngtrees:youngtree_top"})
+ end
+ if height == 2 then
+ minetest.set_node(right_here, {name="youngtrees:youngtree_bottom"})
+ minetest.set_node(above_right_here, {name="youngtrees:youngtree_top"})
+ end
+ if height == 3 then
+ local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
+ minetest.set_node(right_here, {name="youngtrees:youngtree_bottom"})
+ minetest.set_node(above_right_here, {name="youngtrees:youngtree_middle"})
+ minetest.set_node(two_above_right_here, {name="youngtrees:youngtree_top"})
+ end
+ end
+end
+
+
+biome_lib:register_generate_plant({
+ surface = {
+ "default:dirt_with_grass",
+ "stoneage:grass_with_silex",
+ "sumpf:peat",
+ "sumpf:sumpf"
+ },
+ max_count = 55, --10,15
+ rarity = 101 - 4, --3,4
+ min_elevation = 1, -- above sea level
+ plantlife_limit = -0.9,
+ },
+ abstract_youngtrees.grow_youngtree
+)
diff --git a/plantlife_modpack/youngtrees/textures/bamboo.png b/plantlife_modpack/youngtrees/textures/bamboo.png
new file mode 100644
index 0000000..018d42e
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/bamboo.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/textures/unused/sapling.png b/plantlife_modpack/youngtrees/textures/unused/sapling.png
new file mode 100644
index 0000000..a3d5127
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/unused/sapling.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/textures/unused/sapling16x.png b/plantlife_modpack/youngtrees/textures/unused/sapling16x.png
new file mode 100644
index 0000000..45b86ee
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/unused/sapling16x.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/textures/youngtree16xa.png b/plantlife_modpack/youngtrees/textures/youngtree16xa.png
new file mode 100644
index 0000000..9bba623
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/youngtree16xa.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/textures/youngtree16xb.png b/plantlife_modpack/youngtrees/textures/youngtree16xb.png
new file mode 100644
index 0000000..d83b7a3
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/youngtree16xb.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/textures/youngtree16xc.png b/plantlife_modpack/youngtrees/textures/youngtree16xc.png
new file mode 100644
index 0000000..cfe3cf1
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/youngtree16xc.png
Binary files differ
diff --git a/plantlife_modpack/youngtrees/textures/youngtree2branch.png b/plantlife_modpack/youngtrees/textures/youngtree2branch.png
new file mode 100644
index 0000000..89b2f23
--- /dev/null
+++ b/plantlife_modpack/youngtrees/textures/youngtree2branch.png
Binary files differ
diff --git a/plasticbox/COPYING b/plasticbox/COPYING
new file mode 100644
index 0000000..ee7d6a5
--- /dev/null
+++ b/plasticbox/COPYING
@@ -0,0 +1,14 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/plasticbox/README.md b/plasticbox/README.md
new file mode 100644
index 0000000..8a5e911
--- /dev/null
+++ b/plasticbox/README.md
@@ -0,0 +1,28 @@
+plasticbox
+==========
+Plastic Box Mod for Minetest
+
+* Written by cheapie and kizeren
+* Textures by VanessaE
+* Licensed under WTFPL
+
+Crafting:
+
+-Plain Plastic Box-
+
+* XXX
+* X-X
+* XXX
+
+X is Plastic Sheets (from homedecor/pipeworks), - is nothing
+(It's a ring of plastic sheets like is done with wood for chests, if the above diagram is mangled)
+
+-Colored Plastic Boxes-
+
+Plain plastic box and a dye. (shapeless)
+
+Buckets can also be crafted from plastic sheets in place of steel ingots.
+
+Recycling:
+
+There are two ways to recycle plastic boxes. If you have Technic installed, plastic boxes of any color can be ground to 2 "plastic powder" and sheets to one powder. Without Technic, craft 4 plastic boxes (plain only) in a square to get 7 powder. In either case, the powder can be cooked in a furnace to make plastic sheets, from which more boxes (or other plastic items) can be made.
diff --git a/plasticbox/depends.txt b/plasticbox/depends.txt
new file mode 100644
index 0000000..42f64ae
--- /dev/null
+++ b/plasticbox/depends.txt
@@ -0,0 +1,4 @@
+homedecor
+technic?
+bucket?
+pipeworks?
diff --git a/plasticbox/init.lua b/plasticbox/init.lua
new file mode 100644
index 0000000..256f972
--- /dev/null
+++ b/plasticbox/init.lua
@@ -0,0 +1,351 @@
+plasticbox = {}
+plasticbox.colorlist = {
+ {"black", "Black Plastic"},
+ {"blue", "Blue Plastic"},
+ {"brown", "Brown Plastic"},
+ {"cyan", "Cyan Plastic"},
+ {"green", "Green Plastic"},
+ {"grey", "Grey Plastic"},
+ {"magenta", "Magenta Plastic"},
+ {"orange", "Orange Plastic"},
+ {"pink", "Pink Plastic"},
+ {"red", "Red Plastic"},
+ {"violet", "Violet Plastic"},
+ {"white", "White Plastic"},
+ {"yellow", "Yellow Plastic"},
+}
+
+
+
+--Register Nodes, assign textures, blah, blah...
+minetest.register_node("plasticbox:plasticbox", {
+ description = "Plain Plastic Box",
+ tiles = {"plasticbox.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_black", {
+ description = "Black Plastic Box",
+ tiles = {"plasticbox_black.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_blue", {
+ description = "Blue Plastic Box",
+ tiles = {"plasticbox_blue.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_brown", {
+ description = "Brown Plastic Box",
+ tiles = {"plasticbox_brown.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_cyan", {
+ description = "Cyan Plastic Box",
+ tiles = {"plasticbox_cyan.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_darkgreen", {
+ description = "Dark Green Plastic Box",
+ tiles = {"plasticbox_darkgreen.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_darkgrey", {
+ description = "Dark Gray Plastic Box",
+ tiles = {"plasticbox_darkgrey.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_green", {
+ description = "Green Plastic Box",
+ tiles = {"plasticbox_green.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_grey", {
+ description = "Gray Plastic Box",
+ tiles = {"plasticbox_grey.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_magenta", {
+ description = "Magenta Plastic Box",
+ tiles = {"plasticbox_magenta.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_orange", {
+ description = "Orange Plastic Box",
+ tiles = {"plasticbox_orange.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_pink", {
+ description = "Pink Plastic Box",
+ tiles = {"plasticbox_pink.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_red", {
+ description = "Red Plastic Box",
+ tiles = {"plasticbox_red.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_violet", {
+ description = "Violet Plastic Box",
+ tiles = {"plasticbox_violet.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_white", {
+ description = "White Plastic Box",
+ tiles = {"plasticbox_white.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_node("plasticbox:plasticbox_yellow", {
+ description = "Yellow Plastic Box",
+ tiles = {"plasticbox_yellow.png"},
+ is_ground_content = true,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+minetest.register_craftitem("plasticbox:plastic_powder", {
+ image = "plastic_powder.png",
+ description="Plastic Powder",
+})
+
+
+--Register craft for plain box
+minetest.register_craft( {
+ output = "plasticbox:plasticbox 4",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+
+minetest.register_craft( {
+ output = "homedecor:plastic_sheeting 7",
+ recipe = {
+ { "plasticbox:plasticbox", "plasticbox:plasticbox" },
+ { "plasticbox:plasticbox", "plasticbox:plasticbox" },
+ },
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "homedecor:plastic_sheeting",
+ recipe = "plasticbox:plastic_powder",
+})
+
+--Register crafts for colored boxes
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_black',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_black'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_blue',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_blue'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_brown',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_brown'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_cyan',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_cyan'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_green',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_green'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_grey',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_grey'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_magenta',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_magenta'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_orange',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_orange'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_pink',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_pink'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_red',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_red'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_violet',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_violet'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_white',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_white'},
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'plasticbox:plasticbox_yellow',
+ recipe = {'plasticbox:plasticbox', 'group:basecolor_yellow'},
+})
+
+--ugly below here.
+
+if minetest.get_modpath("moreblocks") then
+ register_stair(
+ "plasticbox",
+ "plasticbox",
+ "plasticbox:plasticbox",
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox.png",
+ },
+ "Plastic",
+ "plasticbox",
+ 0
+ )
+ register_slab(
+ "plasticbox",
+ "plasticbox",
+ "plasticbox:plasticbox",
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox.png",
+ },
+ "Plastic",
+ "plasticbox",
+ 0
+ )
+
+ register_panel(
+ "plasticbox",
+ "plasticbox",
+ "plasticbox:plasticbox",
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox.png",
+ },
+ "Plastic",
+ "plasticbox",
+ 0
+ )
+
+ register_micro(
+ "plasticbox",
+ "plasticbox",
+ "plasticbox:plasticbox",
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox.png",
+ },
+ "Plastic",
+ "plasticbox",
+ 0
+ )
+ table.insert(circular_saw.known_stairs, "plasticbox:plasticbox")
+
+end
+
+
+
+for i in ipairs(plasticbox.colorlist) do
+ local colorname = plasticbox.colorlist[i][1]
+ local desc = plasticbox.colorlist[i][2]
+
+ if minetest.get_modpath("moreblocks") then
+ register_stair(
+ "plasticbox",
+ "plasticbox_"..colorname,
+ "plasticbox:plasticbox_"..colorname,
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox_"..colorname..".png",
+ },
+ desc,
+ "plasticbox_"..colorname,
+ 0
+ )
+ register_slab(
+ "plasticbox",
+ "plasticbox_"..colorname,
+ "plasticbox:plasticbox_"..colorname,
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox_"..colorname..".png",
+ },
+ desc,
+ "plasticbox_"..colorname,
+ 0
+ )
+
+ register_panel(
+ "plasticbox",
+ "plasticbox_"..colorname,
+ "plasticbox:plasticbox_"..colorname,
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox_"..colorname..".png",
+ },
+ desc,
+ "plasticbox_"..colorname,
+ 0
+ )
+
+ register_micro(
+ "plasticbox",
+ "plasticbox_"..colorname,
+ "plasticbox:plasticbox_"..colorname,
+ { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
+ { "plasticbox_"..colorname..".png",
+ },
+ desc,
+ "plasticbox_"..colorname,
+ 0
+ )
+ table.insert(circular_saw.known_stairs, "plasticbox:plasticbox_"..colorname)
+
+ end
+end
+
+--Crafting recipes involving other mods
+if minetest.get_modpath("bucket") then
+minetest.register_craft( {
+ output = "bucket:bucket_empty",
+ recipe = {
+ { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" },
+ { "", "homedecor:plastic_sheeting", "" },
+ },
+})
+end
diff --git a/plasticbox/textures/plastic_powder.png b/plasticbox/textures/plastic_powder.png
new file mode 100644
index 0000000..3dde702
--- /dev/null
+++ b/plasticbox/textures/plastic_powder.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox.png b/plasticbox/textures/plasticbox.png
new file mode 100644
index 0000000..4f9bbc9
--- /dev/null
+++ b/plasticbox/textures/plasticbox.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_black.png b/plasticbox/textures/plasticbox_black.png
new file mode 100644
index 0000000..d0409b3
--- /dev/null
+++ b/plasticbox/textures/plasticbox_black.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_blue.png b/plasticbox/textures/plasticbox_blue.png
new file mode 100644
index 0000000..fa29a0f
--- /dev/null
+++ b/plasticbox/textures/plasticbox_blue.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_brown.png b/plasticbox/textures/plasticbox_brown.png
new file mode 100644
index 0000000..6164f9f
--- /dev/null
+++ b/plasticbox/textures/plasticbox_brown.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_cyan.png b/plasticbox/textures/plasticbox_cyan.png
new file mode 100644
index 0000000..4eefe78
--- /dev/null
+++ b/plasticbox/textures/plasticbox_cyan.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_darkgreen.png b/plasticbox/textures/plasticbox_darkgreen.png
new file mode 100644
index 0000000..cb021e5
--- /dev/null
+++ b/plasticbox/textures/plasticbox_darkgreen.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_darkgrey.png b/plasticbox/textures/plasticbox_darkgrey.png
new file mode 100644
index 0000000..d20c724
--- /dev/null
+++ b/plasticbox/textures/plasticbox_darkgrey.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_green.png b/plasticbox/textures/plasticbox_green.png
new file mode 100644
index 0000000..1811f19
--- /dev/null
+++ b/plasticbox/textures/plasticbox_green.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_grey.png b/plasticbox/textures/plasticbox_grey.png
new file mode 100644
index 0000000..cbed434
--- /dev/null
+++ b/plasticbox/textures/plasticbox_grey.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_magenta.png b/plasticbox/textures/plasticbox_magenta.png
new file mode 100644
index 0000000..f390bc6
--- /dev/null
+++ b/plasticbox/textures/plasticbox_magenta.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_orange.png b/plasticbox/textures/plasticbox_orange.png
new file mode 100644
index 0000000..df004a9
--- /dev/null
+++ b/plasticbox/textures/plasticbox_orange.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_pink.png b/plasticbox/textures/plasticbox_pink.png
new file mode 100644
index 0000000..c315b65
--- /dev/null
+++ b/plasticbox/textures/plasticbox_pink.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_red.png b/plasticbox/textures/plasticbox_red.png
new file mode 100644
index 0000000..e7c5aac
--- /dev/null
+++ b/plasticbox/textures/plasticbox_red.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_violet.png b/plasticbox/textures/plasticbox_violet.png
new file mode 100644
index 0000000..428738b
--- /dev/null
+++ b/plasticbox/textures/plasticbox_violet.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_white.png b/plasticbox/textures/plasticbox_white.png
new file mode 100644
index 0000000..ec4a403
--- /dev/null
+++ b/plasticbox/textures/plasticbox_white.png
Binary files differ
diff --git a/plasticbox/textures/plasticbox_yellow.png b/plasticbox/textures/plasticbox_yellow.png
new file mode 100644
index 0000000..c0e2679
--- /dev/null
+++ b/plasticbox/textures/plasticbox_yellow.png
Binary files differ
diff --git a/player_textures/README.txt b/player_textures/README.txt
new file mode 100644
index 0000000..ffd9dc1
--- /dev/null
+++ b/player_textures/README.txt
@@ -0,0 +1,15 @@
+Player Textures Mod for Minetest
+================================
+
+This mod allows players to use different textures. Just place the texture in
+the player_textures/textures/ folder like this:
+player_<player_name>.png
+and the player with the name <player_name> will have this textures.
+
+License of source code:
+-----------------------
+WTFPL
+
+License of the example textures:
+--------------------------------
+WTFPL
diff --git a/player_textures/depends.txt b/player_textures/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/player_textures/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/player_textures/init.lua b/player_textures/init.lua
new file mode 100644
index 0000000..c38b347
--- /dev/null
+++ b/player_textures/init.lua
@@ -0,0 +1,27 @@
+local mod_path = minetest.get_modpath(minetest.get_current_modname())
+local got_tex = {}
+local got_gdl = minetest.get_dir_list
+
+if got_gdl then
+ for _, name in pairs(minetest.get_dir_list(mod_path.."/textures")) do
+ if name:sub(1, 7) == "player_" then
+ local player_name = name:sub(8):match("(.+)%.")
+ got_tex[player_name] = true
+ end
+ end
+end
+
+minetest.register_on_joinplayer(function(player)
+ local player_name = player:get_player_name()
+ local tex = "player_"..player_name..".png"
+ if got_gdl then
+ if not got_tex[player_name] then return end
+ else
+ if not io.open(mod_path.."/textures/"..tex) then
+ return
+ end
+ end
+ player:set_properties({textures = {tex}})
+end)
+
+
diff --git a/player_textures/textures/player_Calinou.png b/player_textures/textures/player_Calinou.png
new file mode 100644
index 0000000..fb3026d
--- /dev/null
+++ b/player_textures/textures/player_Calinou.png
Binary files differ
diff --git a/player_textures/textures/player_Evergreen.png b/player_textures/textures/player_Evergreen.png
new file mode 100644
index 0000000..39b9bee
--- /dev/null
+++ b/player_textures/textures/player_Evergreen.png
Binary files differ
diff --git a/player_textures/textures/player_Jordach.png b/player_textures/textures/player_Jordach.png
new file mode 100644
index 0000000..d1204a6
--- /dev/null
+++ b/player_textures/textures/player_Jordach.png
Binary files differ
diff --git a/player_textures/textures/player_PilzAdam.png b/player_textures/textures/player_PilzAdam.png
new file mode 100644
index 0000000..795b7a0
--- /dev/null
+++ b/player_textures/textures/player_PilzAdam.png
Binary files differ
diff --git a/player_textures/textures/player_PilzAdam_back.png b/player_textures/textures/player_PilzAdam_back.png
new file mode 100644
index 0000000..588e5fb
--- /dev/null
+++ b/player_textures/textures/player_PilzAdam_back.png
Binary files differ
diff --git a/player_textures/textures/player_ShadowNinja.png b/player_textures/textures/player_ShadowNinja.png
new file mode 100644
index 0000000..a1d49cf
--- /dev/null
+++ b/player_textures/textures/player_ShadowNinja.png
Binary files differ
diff --git a/player_textures/textures/player_Sokomine.png b/player_textures/textures/player_Sokomine.png
new file mode 100644
index 0000000..5885f1a
--- /dev/null
+++ b/player_textures/textures/player_Sokomine.png
Binary files differ
diff --git a/player_textures/textures/player_VanessaEzekowitz.png b/player_textures/textures/player_VanessaEzekowitz.png
new file mode 100644
index 0000000..4a47814
--- /dev/null
+++ b/player_textures/textures/player_VanessaEzekowitz.png
Binary files differ
diff --git a/player_textures/textures/player_Zeg9.png b/player_textures/textures/player_Zeg9.png
new file mode 100644
index 0000000..ca604be
--- /dev/null
+++ b/player_textures/textures/player_Zeg9.png
Binary files differ
diff --git a/player_textures/textures/player_cheapie.png b/player_textures/textures/player_cheapie.png
new file mode 100644
index 0000000..19c2eff
--- /dev/null
+++ b/player_textures/textures/player_cheapie.png
Binary files differ
diff --git a/player_textures/textures/player_crazyginger72.png b/player_textures/textures/player_crazyginger72.png
new file mode 100644
index 0000000..dabe922
--- /dev/null
+++ b/player_textures/textures/player_crazyginger72.png
Binary files differ
diff --git a/player_textures/textures/player_kaeza.png b/player_textures/textures/player_kaeza.png
new file mode 100644
index 0000000..fcfb03b
--- /dev/null
+++ b/player_textures/textures/player_kaeza.png
Binary files differ
diff --git a/player_textures/textures/player_oOChainLynxOo.png b/player_textures/textures/player_oOChainLynxOo.png
new file mode 100644
index 0000000..6987918
--- /dev/null
+++ b/player_textures/textures/player_oOChainLynxOo.png
Binary files differ
diff --git a/player_textures/textures/player_playzooki.png b/player_textures/textures/player_playzooki.png
new file mode 100644
index 0000000..dbf9925
--- /dev/null
+++ b/player_textures/textures/player_playzooki.png
Binary files differ
diff --git a/player_textures/textures/player_sdzen.png b/player_textures/textures/player_sdzen.png
new file mode 100644
index 0000000..2fd9973
--- /dev/null
+++ b/player_textures/textures/player_sdzen.png
Binary files differ
diff --git a/player_textures/textures/player_shadowzone.png b/player_textures/textures/player_shadowzone.png
new file mode 100644
index 0000000..4255bfb
--- /dev/null
+++ b/player_textures/textures/player_shadowzone.png
Binary files differ
diff --git a/prefab/README.md b/prefab/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/prefab/README.md
diff --git a/prefab/crafting.lua b/prefab/crafting.lua
new file mode 100644
index 0000000..77f7e87
--- /dev/null
+++ b/prefab/crafting.lua
@@ -0,0 +1,167 @@
+minetest.register_craft({
+ output = 'prefab:concrete 4',
+ recipe = {
+ {'default:stone', 'default:gravel', 'default:stone'},
+ {'default:gravel', 'default:stone', 'default:gravel'},
+ {'default:stone', 'default:gravel', 'default:stone'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_with_grass',
+ recipe = {
+ {'default:grass_1'},
+ {'prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_wall 3',
+ recipe = {
+ {'prefab:concrete'},
+ {'prefab:concrete'},
+ {'prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_stair 4',
+ recipe = {
+ {'prefab:concrete', '', ''},
+ {'prefab:concrete', 'prefab:concrete', ''},
+ {'prefab:concrete', 'prefab:concrete', 'prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_stair_inverted',
+ recipe = {
+ {'prefab:concrete_stair'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_slab 6',
+ recipe = {
+ {'prefab:concrete', 'prefab:concrete', 'prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_slab_inverted',
+ recipe = {
+ {'prefab:concrete_slab'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_slit 4',
+ recipe = {
+ {'prefab:concrete', 'prefab:concrete', 'prefab:concrete'},
+ {'', '', ''},
+ {'prefab:concrete', 'prefab:concrete', 'prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_window 6',
+ recipe = {
+ {'prefab:concrete', 'prefab:concrete', 'prefab:concrete'},
+ {'prefab:concrete', 'default:glass', 'prefab:concrete'},
+ {'prefab:concrete', 'prefab:concrete', 'prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_ladder',
+ recipe = {
+ {'prefab:concrete'},
+ {'default:ladder'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_fence',
+ recipe = {
+ {'prefab:concrete'},
+ {'default:fence_wood'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_door',
+ recipe = {
+ {'prefab:concrete'},
+ {'doors:door_wood'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_cylinder 4',
+ recipe = {
+ {'prefab:concrete','','prefab:concrete'},
+ {'prefab:concrete','','prefab:concrete'},
+ {'prefab:concrete','','prefab:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_bollard 2',
+ recipe = {
+ {'prefab:concrete_slab'},
+ {'prefab:concrete_fence'},
+ {'prefab:concrete_slab'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_bench 2',
+ recipe = {
+ {'prefab:concrete_slab'},
+ {'prefab:concrete_fence'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_railing 2',
+ recipe = {
+ {'prefab:concrete_fence','prefab:concrete_fence'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_railing_corner 2',
+ recipe = {
+ {'prefab:concrete_railing','prefab:concrete_railing'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:electric_fence 2',
+ recipe = {
+ {'default:steel_ingot','default:steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:electric_fence_corner 2',
+ recipe = {
+ {'prefab:electric_fence','prefab:concrete_fence'},
+ {'','prefab:electric_fence'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:electric_fence_end',
+ recipe = {
+ {'prefab:concrete_fence','default:steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'prefab:concrete_catwalk 4',
+ recipe = {
+ {'prefab:concrete_railing','','prefab:concrete_railing'},
+ {'prefab:concrete_slab','prefab:concrete_slab','prefab:concrete_slab'},
+ }
+}) \ No newline at end of file
diff --git a/prefab/depends.txt b/prefab/depends.txt
new file mode 100644
index 0000000..f2c4494
--- /dev/null
+++ b/prefab/depends.txt
@@ -0,0 +1,2 @@
+default
+doors
diff --git a/prefab/init.lua b/prefab/init.lua
new file mode 100644
index 0000000..d1c7918
--- /dev/null
+++ b/prefab/init.lua
@@ -0,0 +1,422 @@
+--This is a mod by DanDuncombe that adds pre-fabricated concrete stuff to Minetest
+--It is CC-By-Sa for everything.
+print("Prefab mod loading....")
+dofile(minetest.get_modpath("prefab").."/crafting.lua")
+print("Prefab Crafting loaded!")
+dofile(minetest.get_modpath("prefab").."/other.lua")
+print("Prefab Other loaded!")
+print("Prefab Loaded!")
+
+minetest.register_node("prefab:concrete", {
+ drawtype = "normal",
+ description = "Block of Prefab Concrete",
+ paramtype = "light",
+ tiles = {"prefab_concrete.png"},
+ is_ground_content = false,
+ drop = "prefab:concrete",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_with_grass", {
+ description = "Prefab Concrete with Grass",
+ paramtype = "light",
+ tiles = {"default_grass.png",
+ "prefab_concrete.png",
+ "prefab_concrete_grass.png",},
+ is_ground_content = false,
+ drop = "prefab:concrete",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_wall", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Wall Section",
+ tiles = {"prefab_concrete.png",
+ "prefab_concrete.png",
+ "prefab_concrete_wall.png",
+ "prefab_concrete_wall.png",
+ "prefab_concrete_wall.png",
+ "prefab_concrete_wall.png"},
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.437500,0.500000,0.500000,0.437500},
+ {-0.437500,-0.500000,-0.500000,0.437500,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_wall",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_stair", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Stair",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.000000,0.500000},
+ {-0.500000,-0.500000,0.000000,0.500000,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_stair",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_slab", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Slab",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.000000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_slab",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_stair_inverted", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Stair (inverted)",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.000000,-0.500000,0.500000,0.500000,0.500000},
+ {-0.500000,-0.500000,-0.062500,0.500000,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_stair",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_slab_inverted", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Slab (inverted)",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.000000,-0.500000,0.500000,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_slab",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_slit", {
+ drawtype = "nodebox",
+ description = "Prefab Horizontal Concrete Slit",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.000000,0.500000},
+ {-0.500000,0.187500,-0.500000,0.500000,0.500000,0.500000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_slit",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_window", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Framed Window",
+ tiles = {"prefab_concrete.png",
+ "prefab_concrete.png",
+ "prefab_concrete.png",
+ "prefab_concrete.png",
+ "prefab_concrete_window.png",
+ "prefab_concrete_window.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.250000,0.500000},
+ {-0.500000,0.250000,-0.500000,0.500000,0.500000,0.500000},
+ {0.250000,-0.500000,-0.500000,0.500000,0.500000,0.500000},
+ {-0.500000,-0.500000,-0.500000,-0.250000,0.500000,0.500000},
+ {-0.500000,-0.500000,-0.000000,0.500000,0.500000,0.000000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_window",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_ladder", {
+ drawtype = "signlike",
+ description = "Prefab Concrete Ladder",
+ tiles = {"prefab_concrete_ladder.png"},
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ climbable = true,
+ is_ground_content = false,
+ selection_box = {
+ type = "wallmounted",
+ },
+ drop = "prefab:concrete_ladder",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_fence", {
+ description = "Prefab Concrete Fence",
+ drawtype = "fencelike",
+ paramtype = "light",
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ tiles = {"prefab_concrete.png"},
+ is_ground_content = false,
+ drop = "prefab:concrete_fence",
+ groups = {cracky=2},
+})
+
+doors.register_door("prefab:concrete_door", {
+ description = "Prefab Concrete Door",
+ inventory_image = "prefab_concrete_door.png",
+ groups = {cracky=2,door=1},
+ tiles_bottom = {"prefab_concrete_door_bottom.png", "prefab_concrete_grey.png"},
+ tiles_top = {"prefab_concrete_door_top.png", "prefab_concrete_grey.png"},
+ only_placer_can_open = true,
+})
+
+minetest.register_node("prefab:concrete_cylinder", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Cylinder",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0.375000,-0.500000,-0.500000,0.500000,0.500000,0.500000},
+ {-0.5,-0.500000,0.375000,0.500000,0.500000,0.500000},
+ {-0.500000,-0.500000,-0.500000,-0.375000,0.500000,0.500000},
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.375000},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,0.500000,0.500000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_cylinder",
+ groups = {cracky=2,falling_node=1},
+})
+
+minetest.register_node("prefab:concrete_bollard", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Bollard",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.312500,-0.500000,-0.312500,0.312500,-0.312500,0.312500},
+ {-0.250000,-0.500000,-0.250000,0.250000,-0.250000,0.250000},
+ {-0.187500,-0.500000,-0.187500,0.187500,0.062500,0.187500},
+ {-0.250000,0.062500,-0.250000,0.250000,0.125000,0.250000},
+ {-0.312500,0.125000,-0.312500,0.312500,0.250000,0.312500},
+ {-0.250000,0.250000,-0.250000,0.250000,0.312500,0.250000},
+ {-0.187500,0.312500,-0.187500,0.187500,0.375000,0.187500},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.350000,-0.500000,-0.350000,0.350000,0.400000,0.350000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_bollard",
+ groups = {cracky=2,falling_node=1},
+})
+
+minetest.register_node("prefab:concrete_bench", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Bench",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.125000,-0.500000,-0.062500,0.125000,0.062500,0.062500},
+ {-0.500000,0.062500,-0.312500,0.500000,0.187500,0.312500},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.350000,0.500000,0.300000,0.350000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_bench",
+ groups = {cracky=2,falling_node=1},
+})
+
+minetest.register_node("prefab:concrete_railing", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Railing",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0.062500,-0.500000,0.062500,-0.062500,0.187500,-0.062500},
+ {-0.500000,0.187500,-0.062500,0.500000,0.312500,0.062500},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_railing",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_railing_corner", {
+ drawtype = "nodebox",
+ description = "Prefab Concrete Railing Corner",
+ tiles = {"prefab_concrete.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0.062500,-0.500000,0.062500,-0.062500,0.187500,-0.062500},
+ {-0.500000,0.187500,-0.062500,0.062500,0.312500,0.062500},
+ {-0.062500,0.187500,-0.500000,0.062500,0.312500,0.062500},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:concrete_railing",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:electric_fence", {
+ drawtype = "nodebox",
+ description = "Electric Fence",
+ tiles = {"prefab_electric_fence.png"},
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.062500,-0.062500,0.500000,0.187500,0.062500},
+ {-0.500000,-0.250000,-0.062500,0.500000,-0.125000,0.062500},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:electric_fence",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:electric_fence_corner", {
+ drawtype = "nodebox",
+ description = "Electric Fence Corner",
+ tiles = {"prefab_electric_fence_corner_top.png",
+ "prefab_electric_fence_corner_top.png",
+ "prefab_electric_fence_corner_side1.png",
+ "prefab_electric_fence_corner_side2.png",
+ "prefab_electric_fence_corner_side1.png",
+ "prefab_electric_fence_corner_side2.png"},
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "facedir",
+
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.062500,-0.062500,0.062500,0.187500,0.062500},
+ {-0.500000,-0.250000,-0.062500,0.062500,-0.125000,0.062500},
+ {-0.062500,0.062500,-0.062500,0.062500,0.187500,0.500000},
+ {-0.062500,-0.250000,-0.062500,0.062500,-0.125000,0.500000},
+ {-0.125000,-0.500000,-0.125000,0.125000,0.500000,0.125000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:electric_fence_corner",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:electric_fence_end", {
+ drawtype = "nodebox",
+ description = "Electric Fence End",
+ tiles = {"prefab_electric_fence_end1.png",
+ "prefab_electric_fence_end1.png",
+ "prefab_concrete.png",
+ "prefab_concrete.png",
+ "prefab_electric_fence_end2.png",
+ "prefab_electric_fence_end1.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,0.062500,-0.062500,0.500000,0.187500,0.062500},
+ {-0.500000,-0.250000,-0.062500,0.500000,-0.125000,0.062500},
+ {-0.500000,-0.500000,-0.250000,-0.375000,0.500000,0.250000},
+ {-0.375000,-0.437500,-0.250000,-0.250000,0.375000,0.250000},
+ {0.250000,-0.312500,-0.125000,0.375000,0.250000,0.125000},
+ {0.000000,-0.312500,-0.125000,0.125000,0.250000,0.125000},
+ },
+ },
+ is_ground_content = false,
+ drop = "prefab:electric_fence_end",
+ groups = {cracky=2},
+})
+
+minetest.register_node("prefab:concrete_catwalk",{
+ drawtype="nodebox",
+ description= "Prefab Concrete Catwalk",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ tiles = { 'prefab_concrete.png', },
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.500000,-0.500000,-0.500000,0.500000,-0.375000,0.500000},
+ {-0.500000,-0.500000,-0.062500,-0.437500,0.500000,0.062500},
+ {0.443299,-0.500000,-0.062500,0.500000,0.500000,0.062500},
+ {0.443299,0.448454,-0.500000,0.500000,0.500000,0.500000},
+ {-0.500000,0.448454,-0.500000,-0.437500,0.500000,0.500000},
+ },
+ },
+ groups={cracky=2},
+ drop = "prefab:concrete_catwalk",
+})
diff --git a/prefab/models/barge.obj b/prefab/models/barge.obj
new file mode 100644
index 0000000..ec351e2
--- /dev/null
+++ b/prefab/models/barge.obj
@@ -0,0 +1,822 @@
+# Blender v2.68 (sub 0) OBJ File: 'boat.blend'
+# www.blender.org
+mtllib barge.mtl
+o boat.001_boat
+v -6.965515 6.393098 -6.000000
+v -6.965515 3.393098 -6.000000
+v -6.965516 3.393098 -9.000000
+v -6.965516 6.393098 -9.000000
+v -9.965515 6.393098 -5.999999
+v -9.965515 3.393098 -5.999999
+v -9.965516 3.393098 -9.000000
+v -9.965516 6.393098 -9.000000
+v -9.965515 6.393098 -2.999999
+v -9.965515 3.393098 -2.999999
+v -9.965515 3.393098 -5.999999
+v -9.965515 6.393098 -5.999999
+v -12.965515 6.393098 -2.999998
+v -12.965515 3.393098 -2.999998
+v -12.965515 3.393098 -5.999999
+v -12.965515 6.393098 -5.999999
+v -12.965515 6.393098 0.000002
+v -12.965515 3.393098 0.000002
+v -12.965515 3.393098 -2.999998
+v -12.965515 6.393098 -2.999998
+v -15.965515 6.393098 0.000002
+v -15.965515 3.393098 0.000002
+v -15.965515 3.393098 -2.999998
+v -15.965515 6.393098 -2.999998
+v -12.965517 6.393098 3.000002
+v -12.965517 3.393098 3.000002
+v -12.965517 3.393098 0.000002
+v -12.965517 6.393098 0.000002
+v -15.965517 6.393098 3.000001
+v -15.965517 3.393098 3.000001
+v -15.965517 3.393098 0.000002
+v -15.965517 6.393098 0.000002
+v -9.965517 6.393098 6.000000
+v -9.965517 3.393098 6.000000
+v -9.965517 3.393098 3.000002
+v -9.965517 6.393098 3.000002
+v -12.965515 6.393098 6.000001
+v -12.965515 3.393098 6.000001
+v -12.965517 3.393098 3.000002
+v -12.965517 6.393098 3.000002
+v -6.965516 6.393098 9.000000
+v -6.965516 3.393098 9.000000
+v -6.965518 3.393098 6.000000
+v -6.965518 6.393098 6.000000
+v -9.965516 6.393098 9.000000
+v -9.965516 3.393098 9.000000
+v -9.965517 3.393098 6.000000
+v -9.965517 6.393098 6.000000
+v -9.965517 3.393098 3.000002
+v -9.965517 0.393098 3.000002
+v -9.965517 0.393098 0.000001
+v -9.965517 3.393098 0.000001
+v -12.965517 3.393098 3.000002
+v -12.965517 0.393098 3.000002
+v -12.965517 0.393098 0.000002
+v -12.965517 3.393098 0.000002
+v -9.965517 3.393098 0.000001
+v -9.965517 0.393098 0.000001
+v -9.965517 0.393098 -2.999999
+v -9.965517 3.393098 -2.999999
+v -12.965517 3.393098 0.000002
+v -12.965517 0.393098 0.000002
+v -12.965517 0.393098 -2.999998
+v -12.965517 3.393098 -2.999998
+v -6.965518 0.393098 0.000001
+v -6.965518 -2.606902 0.000001
+v -6.965517 -2.606902 -2.999999
+v -6.965517 0.393098 -2.999999
+v -9.965517 0.393098 0.000001
+v -9.965517 -2.606902 0.000001
+v -9.965517 -2.606902 -2.999999
+v -9.965517 0.393098 -2.999999
+v -6.965518 0.393098 3.000001
+v -6.965518 -2.606902 3.000001
+v -6.965518 -2.606902 0.000001
+v -6.965518 0.393098 0.000001
+v -9.965517 0.393098 3.000002
+v -9.965517 -2.606902 3.000002
+v -9.965517 -2.606902 0.000001
+v -9.965517 0.393098 0.000001
+v -6.965518 3.393098 6.000000
+v -6.965518 0.393098 6.000000
+v -6.965518 0.393098 3.000001
+v -6.965518 3.393098 3.000001
+v -9.965517 3.393098 6.000000
+v -9.965517 0.393098 6.000000
+v -9.965517 0.393098 3.000002
+v -9.965517 3.393098 3.000002
+v -6.965517 3.393098 -2.999999
+v -6.965517 0.393098 -2.999999
+v -6.965516 0.393098 -6.000000
+v -6.965516 3.393098 -6.000000
+v -9.965517 3.393098 -2.999999
+v -9.965517 0.393098 -2.999999
+v -9.965517 0.393098 -5.999999
+v -9.965517 3.393098 -5.999999
+v -3.965517 6.393098 -6.000000
+v -3.965517 3.393098 -6.000000
+v -3.965516 3.393098 -8.999999
+v -3.965516 6.393098 -8.999999
+v -6.965515 6.393098 -6.000000
+v -6.965515 3.393098 -6.000000
+v -6.965516 3.393098 -9.000000
+v -6.965516 6.393098 -9.000000
+v -3.965516 6.393098 9.000001
+v -3.965516 3.393098 9.000001
+v -3.965516 3.393098 6.000000
+v -3.965516 6.393098 6.000000
+v -6.965516 6.393098 9.000000
+v -6.965516 3.393098 9.000000
+v -6.965518 3.393098 6.000000
+v -6.965518 6.393098 6.000000
+v -3.965517 0.393098 0.000001
+v -3.965517 -2.606902 0.000001
+v -3.965517 -2.606902 -2.999999
+v -3.965517 0.393098 -2.999999
+v -6.965518 0.393098 0.000001
+v -6.965518 -2.606902 0.000001
+v -6.965517 -2.606902 -2.999999
+v -6.965517 0.393098 -2.999999
+v -3.965517 0.393098 3.000001
+v -3.965517 -2.606902 3.000001
+v -3.965517 -2.606902 0.000001
+v -3.965517 0.393098 0.000001
+v -6.965518 0.393098 3.000001
+v -6.965518 -2.606902 3.000001
+v -6.965518 -2.606902 0.000001
+v -6.965518 0.393098 0.000001
+v -3.965516 3.393098 6.000000
+v -3.965516 0.393098 6.000000
+v -3.965517 0.393098 3.000001
+v -3.965517 3.393098 3.000001
+v -6.965518 3.393098 6.000000
+v -6.965518 0.393098 6.000000
+v -6.965518 0.393098 3.000001
+v -6.965518 3.393098 3.000001
+v -3.965517 3.393098 -2.999999
+v -3.965517 0.393098 -2.999999
+v -3.965518 0.393098 -6.000000
+v -3.965518 3.393098 -6.000000
+v -6.965517 3.393098 -2.999999
+v -6.965517 0.393098 -2.999999
+v -6.965516 0.393098 -6.000000
+v -6.965516 3.393098 -6.000000
+v -0.965516 6.393098 -6.000001
+v -0.965516 3.393098 -6.000001
+v -0.965516 3.393098 -9.000001
+v -0.965516 6.393098 -9.000001
+v -3.965517 6.393098 -6.000000
+v -3.965517 3.393098 -6.000000
+v -3.965516 3.393098 -8.999999
+v -3.965516 6.393098 -8.999999
+v -0.965516 6.393098 8.999999
+v -0.965516 3.393098 8.999999
+v -0.965517 3.393098 6.000000
+v -0.965517 6.393098 6.000000
+v -3.965516 6.393098 9.000001
+v -3.965516 3.393098 9.000001
+v -3.965516 3.393098 6.000000
+v -3.965516 6.393098 6.000000
+v -0.965517 0.393098 0.000001
+v -0.965517 -2.606902 0.000001
+v -0.965518 -2.606902 -2.999999
+v -0.965518 0.393098 -2.999999
+v -3.965517 0.393098 0.000001
+v -3.965517 -2.606902 0.000001
+v -3.965517 -2.606902 -2.999999
+v -3.965517 0.393098 -2.999999
+v -0.965517 0.393098 3.000001
+v -0.965517 -2.606902 3.000001
+v -0.965517 -2.606902 0.000001
+v -0.965517 0.393098 0.000001
+v -3.965517 0.393098 3.000001
+v -3.965517 -2.606902 3.000001
+v -3.965517 -2.606902 0.000001
+v -3.965517 0.393098 0.000001
+v -0.965517 3.393098 6.000000
+v -0.965517 0.393098 6.000000
+v -0.965517 0.393098 3.000001
+v -0.965517 3.393098 3.000001
+v -3.965516 3.393098 6.000000
+v -3.965516 0.393098 6.000000
+v -3.965517 0.393098 3.000001
+v -3.965517 3.393098 3.000001
+v -0.965518 3.393098 -2.999999
+v -0.965518 0.393098 -2.999999
+v -0.965517 0.393098 -6.000001
+v -0.965517 3.393098 -6.000001
+v -3.965517 3.393098 -2.999999
+v -3.965517 0.393098 -2.999999
+v -3.965518 0.393098 -6.000000
+v -3.965518 3.393098 -6.000000
+v 2.034484 6.393098 -6.000000
+v 2.034484 3.393098 -6.000000
+v 2.034484 3.393098 -9.000001
+v 2.034484 6.393098 -9.000001
+v -0.965516 6.393098 -6.000001
+v -0.965516 3.393098 -6.000001
+v -0.965516 3.393098 -9.000001
+v -0.965516 6.393098 -9.000001
+v 2.034484 6.393098 8.999999
+v 2.034484 3.393098 8.999999
+v 2.034483 3.393098 6.000000
+v 2.034483 6.393098 6.000000
+v -0.965516 6.393098 8.999999
+v -0.965516 3.393098 8.999999
+v -0.965517 3.393098 6.000000
+v -0.965517 6.393098 6.000000
+v 2.034483 0.393098 0.000000
+v 2.034483 -2.606902 0.000000
+v 2.034483 -2.606902 -2.999999
+v 2.034483 0.393098 -2.999999
+v -0.965517 0.393098 0.000001
+v -0.965517 -2.606902 0.000001
+v -0.965518 -2.606902 -2.999999
+v -0.965518 0.393098 -2.999999
+v 2.034483 0.393098 3.000000
+v 2.034483 -2.606902 3.000000
+v 2.034483 -2.606902 0.000000
+v 2.034483 0.393098 0.000000
+v -0.965517 0.393098 3.000001
+v -0.965517 -2.606902 3.000001
+v -0.965517 -2.606902 0.000001
+v -0.965517 0.393098 0.000001
+v 2.034483 3.393098 6.000000
+v 2.034483 0.393098 6.000000
+v 2.034483 0.393098 3.000000
+v 2.034483 3.393098 3.000000
+v -0.965517 3.393098 6.000000
+v -0.965517 0.393098 6.000000
+v -0.965517 0.393098 3.000001
+v -0.965517 3.393098 3.000001
+v 2.034483 3.393098 -2.999999
+v 2.034483 0.393098 -2.999999
+v 2.034483 0.393098 -6.000000
+v 2.034483 3.393098 -6.000000
+v -0.965518 3.393098 -2.999999
+v -0.965518 0.393098 -2.999999
+v -0.965517 0.393098 -6.000001
+v -0.965517 3.393098 -6.000001
+v 5.034483 6.393098 -6.000001
+v 5.034483 3.393098 -6.000001
+v 5.034483 3.393098 -9.000002
+v 5.034483 6.393098 -9.000002
+v 2.034484 6.393098 -6.000000
+v 2.034484 3.393098 -6.000000
+v 2.034484 3.393098 -9.000001
+v 2.034484 6.393098 -9.000001
+v 5.034484 6.393098 8.999998
+v 5.034484 3.393098 8.999998
+v 5.034484 3.393098 6.000000
+v 5.034484 6.393098 6.000000
+v 2.034484 6.393098 8.999999
+v 2.034484 3.393098 8.999999
+v 2.034483 3.393098 6.000000
+v 2.034483 6.393098 6.000000
+v 5.034483 0.393098 0.000000
+v 5.034483 -2.606902 0.000000
+v 5.034483 -2.606902 -3.000000
+v 5.034483 0.393098 -3.000000
+v 2.034483 0.393098 0.000000
+v 2.034483 -2.606902 0.000000
+v 2.034483 -2.606902 -2.999999
+v 2.034483 0.393098 -2.999999
+v 5.034483 0.393098 3.000000
+v 5.034483 -2.606902 3.000000
+v 5.034483 -2.606902 0.000000
+v 5.034483 0.393098 0.000000
+v 2.034483 0.393098 3.000000
+v 2.034483 -2.606902 3.000000
+v 2.034483 -2.606902 0.000000
+v 2.034483 0.393098 0.000000
+v 5.034484 3.393098 6.000000
+v 5.034484 0.393098 6.000000
+v 5.034483 0.393098 3.000000
+v 5.034483 3.393098 3.000000
+v 2.034483 3.393098 6.000000
+v 2.034483 0.393098 6.000000
+v 2.034483 0.393098 3.000000
+v 2.034483 3.393098 3.000000
+v 5.034483 3.393098 -3.000000
+v 5.034483 0.393098 -3.000000
+v 5.034482 0.393098 -6.000001
+v 5.034482 3.393098 -6.000001
+v 2.034483 3.393098 -2.999999
+v 2.034483 0.393098 -2.999999
+v 2.034483 0.393098 -6.000000
+v 2.034483 3.393098 -6.000000
+v 8.034485 6.393098 -6.000001
+v 8.034485 3.393098 -6.000001
+v 8.034484 3.393098 -9.000001
+v 8.034484 6.393098 -9.000001
+v 5.034483 6.393098 -6.000001
+v 5.034483 3.393098 -6.000001
+v 5.034483 3.393098 -9.000002
+v 5.034483 6.393098 -9.000002
+v 8.034484 6.393098 8.999999
+v 8.034484 3.393098 8.999999
+v 8.034483 3.393098 6.000000
+v 8.034483 6.393098 6.000000
+v 5.034484 6.393098 8.999998
+v 5.034484 3.393098 8.999998
+v 5.034484 3.393098 6.000000
+v 5.034484 6.393098 6.000000
+v 8.034483 0.393098 -0.000000
+v 8.034483 -2.606902 -0.000000
+v 8.034483 -2.606902 -2.999999
+v 8.034483 0.393098 -2.999999
+v 5.034483 0.393098 0.000000
+v 5.034483 -2.606902 0.000000
+v 5.034483 -2.606902 -3.000000
+v 5.034483 0.393098 -3.000000
+v 8.034483 0.393098 3.000000
+v 8.034483 -2.606902 3.000000
+v 8.034483 -2.606902 -0.000000
+v 8.034483 0.393098 -0.000000
+v 5.034483 0.393098 3.000000
+v 5.034483 -2.606902 3.000000
+v 5.034483 -2.606902 0.000000
+v 5.034483 0.393098 0.000000
+v 8.034483 3.393098 6.000000
+v 8.034483 0.393098 6.000000
+v 8.034483 0.393098 3.000000
+v 8.034483 3.393098 3.000000
+v 5.034484 3.393098 6.000000
+v 5.034484 0.393098 6.000000
+v 5.034483 0.393098 3.000000
+v 5.034483 3.393098 3.000000
+v 8.034483 3.393098 -2.999999
+v 8.034483 0.393098 -2.999999
+v 8.034483 0.393098 -6.000001
+v 8.034483 3.393098 -6.000001
+v 5.034483 3.393098 -3.000000
+v 5.034483 0.393098 -3.000000
+v 5.034482 0.393098 -6.000001
+v 5.034482 3.393098 -6.000001
+v 11.034483 6.393098 -6.000001
+v 11.034483 3.393098 -6.000001
+v 11.034484 3.393098 -9.000001
+v 11.034484 6.393098 -9.000001
+v 8.034485 6.393098 -6.000001
+v 8.034485 3.393098 -6.000001
+v 8.034484 3.393098 -9.000001
+v 8.034484 6.393098 -9.000001
+v 11.034484 6.393098 8.999999
+v 11.034484 3.393098 8.999999
+v 11.034483 3.393098 6.000000
+v 11.034483 6.393098 6.000000
+v 8.034484 6.393098 8.999999
+v 8.034484 3.393098 8.999999
+v 8.034483 3.393098 6.000000
+v 8.034483 6.393098 6.000000
+v 11.034483 0.393098 -0.000000
+v 11.034483 -2.606902 -0.000000
+v 11.034483 -2.606902 -3.000000
+v 11.034483 0.393098 -3.000000
+v 8.034483 0.393098 -0.000000
+v 8.034483 -2.606902 -0.000000
+v 8.034483 -2.606902 -2.999999
+v 8.034483 0.393098 -2.999999
+v 11.034483 0.393098 3.000000
+v 11.034483 -2.606902 3.000000
+v 11.034483 -2.606902 -0.000000
+v 11.034483 0.393098 -0.000000
+v 8.034483 0.393098 3.000000
+v 8.034483 -2.606902 3.000000
+v 8.034483 -2.606902 -0.000000
+v 8.034483 0.393098 -0.000000
+v 11.034483 3.393098 6.000000
+v 11.034483 0.393098 6.000000
+v 11.034483 0.393098 3.000000
+v 11.034483 3.393098 3.000000
+v 8.034483 3.393098 6.000000
+v 8.034483 0.393098 6.000000
+v 8.034483 0.393098 3.000000
+v 8.034483 3.393098 3.000000
+v 11.034483 3.393098 -3.000000
+v 11.034483 0.393098 -3.000000
+v 11.034483 0.393098 -6.000001
+v 11.034483 3.393098 -6.000001
+v 8.034483 3.393098 -2.999999
+v 8.034483 0.393098 -2.999999
+v 8.034483 0.393098 -6.000001
+v 8.034483 3.393098 -6.000001
+v 14.034485 6.393098 -3.000000
+v 14.034485 3.393098 -3.000000
+v 14.034485 3.393098 -6.000001
+v 14.034485 6.393098 -6.000001
+v 11.034483 6.393098 -3.000000
+v 11.034483 3.393098 -3.000000
+v 11.034483 3.393098 -6.000001
+v 11.034483 6.393098 -6.000001
+v 14.034485 6.393098 -0.000000
+v 14.034485 3.393098 -0.000000
+v 14.034485 3.393098 -3.000000
+v 14.034485 6.393098 -3.000000
+v 11.034485 6.393098 -0.000000
+v 11.034485 3.393098 -0.000000
+v 11.034483 3.393098 -3.000000
+v 11.034483 6.393098 -3.000000
+v 14.034485 6.393098 3.000000
+v 14.034485 3.393098 3.000000
+v 14.034485 3.393098 -0.000000
+v 14.034485 6.393098 -0.000000
+v 11.034485 6.393098 3.000000
+v 11.034485 3.393098 3.000000
+v 11.034485 3.393098 -0.000000
+v 11.034485 6.393098 -0.000000
+v 14.034485 6.393098 5.999999
+v 14.034485 3.393098 5.999999
+v 14.034485 3.393098 3.000000
+v 14.034485 6.393098 3.000000
+v 11.034485 6.393098 6.000000
+v 11.034485 3.393098 6.000000
+v 11.034485 3.393098 3.000000
+v 11.034485 6.393098 3.000000
+v 14.034485 3.393098 -3.000000
+v 14.034485 0.393098 -3.000000
+v 14.034485 0.393098 -6.000001
+v 14.034485 3.393098 -6.000001
+v 11.034483 3.393098 -3.000000
+v 11.034483 0.393098 -3.000000
+v 11.034483 0.393098 -6.000001
+v 11.034483 3.393098 -6.000001
+v 14.034485 3.393098 -0.000000
+v 14.034485 0.393098 -0.000000
+v 14.034485 0.393098 -3.000000
+v 14.034485 3.393098 -3.000000
+v 11.034485 3.393098 -0.000000
+v 11.034485 0.393098 -0.000000
+v 11.034483 0.393098 -3.000000
+v 11.034483 3.393098 -3.000000
+v 14.034485 3.393098 3.000000
+v 14.034485 0.393098 3.000000
+v 14.034485 0.393098 -0.000000
+v 14.034485 3.393098 -0.000000
+v 11.034485 3.393098 3.000000
+v 11.034485 0.393098 3.000000
+v 11.034485 0.393098 -0.000000
+v 11.034485 3.393098 -0.000000
+v 14.034485 3.393098 5.999999
+v 14.034485 0.393098 5.999999
+v 14.034485 0.393098 3.000000
+v 14.034485 3.393098 3.000000
+v 11.034485 3.393098 6.000000
+v 11.034485 0.393098 6.000000
+v 11.034485 0.393098 3.000000
+v 11.034485 3.393098 3.000000
+v 14.034485 0.393098 -0.000000
+v 14.034485 -2.606902 -0.000000
+v 14.034485 -2.606902 -3.000000
+v 14.034485 0.393098 -3.000000
+v 11.034485 0.393098 -0.000000
+v 11.034485 -2.606902 -0.000000
+v 11.034483 -2.606902 -3.000000
+v 11.034483 0.393098 -3.000000
+v 14.034485 0.393098 3.000000
+v 14.034485 -2.606902 3.000000
+v 14.034485 -2.606902 -0.000000
+v 14.034485 0.393098 -0.000000
+v 11.034485 0.393098 3.000000
+v 11.034485 -2.606902 3.000000
+v 11.034485 -2.606902 -0.000000
+v 11.034485 0.393098 -0.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+usemtl Material
+s off
+f 5/1 8/2 7/3 6/4
+f 3/3 7/4 8/1 4/2
+f 5/3 1/4 4/1 8/2
+f 6/1 2/2 1/3 5/4
+f 7/1 3/2 2/3 6/4
+f 4/1 1/2 2/3 3/4
+f 13/1 16/2 15/3 14/4
+f 11/3 15/4 16/1 12/2
+f 13/4 9/1 12/2 16/3
+f 14/1 10/2 9/3 13/4
+f 15/1 11/2 10/3 14/4
+f 12/3 9/4 10/1 11/2
+f 21/1 24/2 23/3 22/4
+f 19/3 23/4 24/1 20/2
+f 21/4 17/1 20/2 24/3
+f 22/1 18/2 17/3 21/4
+f 23/1 19/2 18/3 22/4
+f 20/3 17/4 18/1 19/2
+f 29/1 32/2 31/3 30/4
+f 27/1 31/2 32/3 28/4
+f 29/4 25/1 28/2 32/3
+f 30/3 26/4 25/1 29/2
+f 31/1 27/2 26/3 30/4
+f 28/3 25/4 26/1 27/2
+f 37/1 40/2 39/3 38/4
+f 35/1 39/2 40/3 36/4
+f 37/4 33/1 36/2 40/3
+f 38/3 34/4 33/1 37/2
+f 39/1 35/2 34/3 38/4
+f 36/3 33/4 34/1 35/2
+f 45/1 48/2 47/3 46/4
+f 43/1 47/2 48/3 44/4
+f 45/1 41/2 44/3 48/4
+f 46/3 42/4 41/1 45/2
+f 47/1 43/2 42/3 46/4
+f 44/1 41/2 42/3 43/4
+f 53/1 56/2 55/3 54/4
+f 51/1 55/2 56/3 52/4
+f 53/4 49/1 52/2 56/3
+f 54/1 50/2 49/3 53/4
+f 55/1 51/2 50/3 54/4
+f 52/1 49/2 50/3 51/4
+f 61/1 64/2 63/3 62/4
+f 59/1 63/2 64/3 60/4
+f 61/4 57/1 60/2 64/3
+f 62/1 58/2 57/3 61/4
+f 63/1 59/2 58/3 62/4
+f 60/1 57/2 58/3 59/4
+f 69/1 72/2 71/3 70/4
+f 67/1 71/2 72/3 68/4
+f 69/1 65/2 68/3 72/4
+f 70/1 66/2 65/3 69/4
+f 71/1 67/2 66/3 70/4
+f 68/1 65/2 66/3 67/4
+f 77/1 80/2 79/3 78/4
+f 75/1 79/2 80/3 76/4
+f 77/1 73/2 76/3 80/4
+f 78/1 74/2 73/3 77/4
+f 79/1 75/2 74/3 78/4
+f 76/1 73/2 74/3 75/4
+f 85/1 88/2 87/3 86/4
+f 83/1 87/2 88/3 84/4
+f 85/3 81/4 84/1 88/2
+f 86/1 82/2 81/3 85/4
+f 87/1 83/2 82/3 86/4
+f 84/1 81/2 82/3 83/4
+f 93/1 96/2 95/3 94/4
+f 91/1 95/2 96/3 92/4
+f 93/1 89/2 92/3 96/4
+f 94/1 90/2 89/3 93/4
+f 95/1 91/2 90/3 94/4
+f 92/1 89/2 90/3 91/4
+f 101/1 104/2 103/3 102/4
+f 99/3 103/4 104/1 100/2
+f 101/3 97/4 100/1 104/2
+f 102/1 98/2 97/3 101/4
+f 103/1 99/2 98/3 102/4
+f 100/1 97/2 98/3 99/4
+f 109/1 112/2 111/3 110/4
+f 107/1 111/2 112/3 108/4
+f 109/1 105/2 108/3 112/4
+f 110/3 106/4 105/1 109/2
+f 111/1 107/2 106/3 110/4
+f 108/1 105/2 106/3 107/4
+f 117/1 120/2 119/3 118/4
+f 115/1 119/2 120/3 116/4
+f 117/1 113/2 116/3 120/4
+f 118/1 114/2 113/3 117/4
+f 119/1 115/2 114/3 118/4
+f 116/1 113/2 114/3 115/4
+f 125/1 128/2 127/3 126/4
+f 123/1 127/2 128/3 124/4
+f 125/1 121/2 124/3 128/4
+f 126/1 122/2 121/3 125/4
+f 127/1 123/2 122/3 126/4
+f 124/1 121/2 122/3 123/4
+f 133/1 136/2 135/3 134/4
+f 131/1 135/2 136/3 132/4
+f 133/3 129/4 132/1 136/2
+f 134/1 130/2 129/3 133/4
+f 135/1 131/2 130/3 134/4
+f 132/1 129/2 130/3 131/4
+f 141/1 144/2 143/3 142/4
+f 139/1 143/2 144/3 140/4
+f 141/1 137/2 140/3 144/4
+f 142/1 138/2 137/3 141/4
+f 143/1 139/2 138/3 142/4
+f 140/1 137/2 138/3 139/4
+f 149/1 152/2 151/3 150/4
+f 147/3 151/4 152/1 148/2
+f 149/3 145/4 148/1 152/2
+f 150/1 146/2 145/3 149/4
+f 151/1 147/2 146/3 150/4
+f 148/1 145/2 146/3 147/4
+f 157/1 160/2 159/3 158/4
+f 155/1 159/2 160/3 156/4
+f 157/1 153/2 156/3 160/4
+f 158/3 154/4 153/1 157/2
+f 159/1 155/2 154/3 158/4
+f 156/1 153/2 154/3 155/4
+f 165/1 168/2 167/3 166/4
+f 163/1 167/2 168/3 164/4
+f 165/1 161/2 164/3 168/4
+f 166/1 162/2 161/3 165/4
+f 167/1 163/2 162/3 166/4
+f 164/1 161/2 162/3 163/4
+f 173/1 176/2 175/3 174/4
+f 171/1 175/2 176/3 172/4
+f 173/1 169/2 172/3 176/4
+f 174/1 170/2 169/3 173/4
+f 175/1 171/2 170/3 174/4
+f 172/1 169/2 170/3 171/4
+f 181/1 184/2 183/3 182/4
+f 179/1 183/2 184/3 180/4
+f 181/3 177/4 180/1 184/2
+f 182/1 178/2 177/3 181/4
+f 183/1 179/2 178/3 182/4
+f 180/1 177/2 178/3 179/4
+f 189/1 192/2 191/3 190/4
+f 187/1 191/2 192/3 188/4
+f 189/1 185/2 188/3 192/4
+f 190/1 186/2 185/3 189/4
+f 191/1 187/2 186/3 190/4
+f 188/1 185/2 186/3 187/4
+f 197/1 200/2 199/3 198/4
+f 195/3 199/4 200/1 196/2
+f 197/3 193/4 196/1 200/2
+f 198/1 194/2 193/3 197/4
+f 199/1 195/2 194/3 198/4
+f 196/1 193/2 194/3 195/4
+f 205/1 208/2 207/3 206/4
+f 203/1 207/2 208/3 204/4
+f 205/1 201/2 204/3 208/4
+f 206/3 202/4 201/1 205/2
+f 207/1 203/2 202/3 206/4
+f 204/1 201/2 202/3 203/4
+f 213/1 216/2 215/3 214/4
+f 211/1 215/2 216/3 212/4
+f 213/1 209/2 212/3 216/4
+f 214/1 210/2 209/3 213/4
+f 215/1 211/2 210/3 214/4
+f 212/1 209/2 210/3 211/4
+f 221/1 224/2 223/3 222/4
+f 219/1 223/2 224/3 220/4
+f 221/1 217/2 220/3 224/4
+f 222/1 218/2 217/3 221/4
+f 223/1 219/2 218/3 222/4
+f 220/1 217/2 218/3 219/4
+f 229/1 232/2 231/3 230/4
+f 227/1 231/2 232/3 228/4
+f 229/3 225/4 228/1 232/2
+f 230/1 226/2 225/3 229/4
+f 231/1 227/2 226/3 230/4
+f 228/1 225/2 226/3 227/4
+f 237/1 240/2 239/3 238/4
+f 235/1 239/2 240/3 236/4
+f 237/1 233/2 236/3 240/4
+f 238/1 234/2 233/3 237/4
+f 239/1 235/2 234/3 238/4
+f 236/1 233/2 234/3 235/4
+f 245/1 248/2 247/3 246/4
+f 243/3 247/4 248/1 244/2
+f 245/3 241/4 244/1 248/2
+f 246/1 242/2 241/3 245/4
+f 247/1 243/2 242/3 246/4
+f 244/1 241/2 242/3 243/4
+f 253/1 256/2 255/3 254/4
+f 251/1 255/2 256/3 252/4
+f 253/1 249/2 252/3 256/4
+f 254/3 250/4 249/1 253/2
+f 255/1 251/2 250/3 254/4
+f 252/1 249/2 250/3 251/4
+f 261/1 264/2 263/3 262/4
+f 259/1 263/2 264/3 260/4
+f 261/1 257/2 260/3 264/4
+f 262/1 258/2 257/3 261/4
+f 263/1 259/2 258/3 262/4
+f 260/1 257/2 258/3 259/4
+f 269/1 272/2 271/3 270/4
+f 267/1 271/2 272/3 268/4
+f 269/1 265/2 268/3 272/4
+f 270/1 266/2 265/3 269/4
+f 271/1 267/2 266/3 270/4
+f 268/1 265/2 266/3 267/4
+f 277/1 280/2 279/3 278/4
+f 275/1 279/2 280/3 276/4
+f 277/3 273/4 276/1 280/2
+f 278/1 274/2 273/3 277/4
+f 279/1 275/2 274/3 278/4
+f 276/1 273/2 274/3 275/4
+f 285/1 288/2 287/3 286/4
+f 283/1 287/2 288/3 284/4
+f 285/1 281/2 284/3 288/4
+f 286/1 282/2 281/3 285/4
+f 287/1 283/2 282/3 286/4
+f 284/1 281/2 282/3 283/4
+f 293/1 296/2 295/3 294/4
+f 291/3 295/4 296/1 292/2
+f 293/3 289/4 292/1 296/2
+f 294/1 290/2 289/3 293/4
+f 295/1 291/2 290/3 294/4
+f 292/1 289/2 290/3 291/4
+f 301/1 304/2 303/3 302/4
+f 299/1 303/2 304/3 300/4
+f 301/1 297/2 300/3 304/4
+f 302/3 298/4 297/1 301/2
+f 303/1 299/2 298/3 302/4
+f 300/1 297/2 298/3 299/4
+f 309/1 312/2 311/3 310/4
+f 307/1 311/2 312/3 308/4
+f 309/1 305/2 308/3 312/4
+f 310/1 306/2 305/3 309/4
+f 311/1 307/2 306/3 310/4
+f 308/1 305/2 306/3 307/4
+f 317/1 320/2 319/3 318/4
+f 315/1 319/2 320/3 316/4
+f 317/1 313/2 316/3 320/4
+f 318/1 314/2 313/3 317/4
+f 319/1 315/2 314/3 318/4
+f 316/1 313/2 314/3 315/4
+f 325/1 328/2 327/3 326/4
+f 323/1 327/2 328/3 324/4
+f 325/3 321/4 324/1 328/2
+f 326/1 322/2 321/3 325/4
+f 327/1 323/2 322/3 326/4
+f 324/1 321/2 322/3 323/4
+f 333/1 336/2 335/3 334/4
+f 331/1 335/2 336/3 332/4
+f 333/1 329/2 332/3 336/4
+f 334/1 330/2 329/3 333/4
+f 335/1 331/2 330/3 334/4
+f 332/1 329/2 330/3 331/4
+f 341/1 344/2 343/3 342/4
+f 339/3 343/4 344/1 340/2
+f 341/3 337/4 340/1 344/2
+f 342/1 338/2 337/3 341/4
+f 343/1 339/2 338/3 342/4
+f 340/1 337/2 338/3 339/4
+f 349/1 352/2 351/3 350/4
+f 347/1 351/2 352/3 348/4
+f 349/1 345/2 348/3 352/4
+f 350/3 346/4 345/1 349/2
+f 351/1 347/2 346/3 350/4
+f 348/1 345/2 346/3 347/4
+f 357/1 360/2 359/3 358/4
+f 355/1 359/2 360/3 356/4
+f 357/1 353/2 356/3 360/4
+f 358/1 354/2 353/3 357/4
+f 359/1 355/2 354/3 358/4
+f 356/1 353/2 354/3 355/4
+f 365/1 368/2 367/3 366/4
+f 363/1 367/2 368/3 364/4
+f 365/1 361/2 364/3 368/4
+f 366/1 362/2 361/3 365/4
+f 367/1 363/2 362/3 366/4
+f 364/1 361/2 362/3 363/4
+f 373/1 376/2 375/3 374/4
+f 371/1 375/2 376/3 372/4
+f 373/3 369/4 372/1 376/2
+f 374/1 370/2 369/3 373/4
+f 375/1 371/2 370/3 374/4
+f 372/1 369/2 370/3 371/4
+f 381/1 384/2 383/3 382/4
+f 379/1 383/2 384/3 380/4
+f 381/1 377/2 380/3 384/4
+f 382/1 378/2 377/3 381/4
+f 383/1 379/2 378/3 382/4
+f 380/1 377/2 378/3 379/4
+f 389/3 392/4 391/1 390/2
+f 387/3 391/4 392/1 388/2
+f 389/1 385/2 388/3 392/4
+f 390/1 386/2 385/3 389/4
+f 391/1 387/2 386/3 390/4
+f 388/1 385/2 386/3 387/4
+f 397/3 400/4 399/1 398/2
+f 395/1 399/2 400/3 396/4
+f 397/1 393/2 396/3 400/4
+f 398/1 394/2 393/3 397/4
+f 399/1 395/2 394/3 398/4
+f 396/1 393/2 394/3 395/4
+f 405/3 408/4 407/1 406/2
+f 403/1 407/2 408/3 404/4
+f 405/1 401/2 404/3 408/4
+f 406/1 402/2 401/3 405/4
+f 407/1 403/2 402/3 406/4
+f 404/1 401/2 402/3 403/4
+f 413/3 416/4 415/1 414/2
+f 411/1 415/2 416/3 412/4
+f 413/1 409/2 412/3 416/4
+f 414/3 410/4 409/1 413/2
+f 415/1 411/2 410/3 414/4
+f 412/1 409/2 410/3 411/4
+f 421/1 424/2 423/3 422/4
+f 419/1 423/2 424/3 420/4
+f 421/1 417/2 420/3 424/4
+f 422/1 418/2 417/3 421/4
+f 423/1 419/2 418/3 422/4
+f 420/1 417/2 418/3 419/4
+f 429/1 432/2 431/3 430/4
+f 427/1 431/2 432/3 428/4
+f 429/1 425/2 428/3 432/4
+f 430/1 426/2 425/3 429/4
+f 431/1 427/2 426/3 430/4
+f 428/1 425/2 426/3 427/4
+f 437/1 440/2 439/3 438/4
+f 435/1 439/2 440/3 436/4
+f 437/1 433/2 436/3 440/4
+f 438/1 434/2 433/3 437/4
+f 439/1 435/2 434/3 438/4
+f 436/1 433/2 434/3 435/4
+f 445/1 448/2 447/3 446/4
+f 443/1 447/2 448/3 444/4
+f 445/1 441/2 444/3 448/4
+f 446/1 442/2 441/3 445/4
+f 447/1 443/2 442/3 446/4
+f 444/1 441/2 442/3 443/4
+f 453/1 456/2 455/3 454/4
+f 451/1 455/2 456/3 452/4
+f 453/1 449/2 452/3 456/4
+f 454/1 450/2 449/3 453/4
+f 455/1 451/2 450/3 454/4
+f 452/1 449/2 450/3 451/4
+f 461/1 464/2 463/3 462/4
+f 459/1 463/2 464/3 460/4
+f 461/1 457/2 460/3 464/4
+f 462/1 458/2 457/3 461/4
+f 463/1 459/2 458/3 462/4
+f 460/1 457/2 458/3 459/4
diff --git a/prefab/other.lua b/prefab/other.lua
new file mode 100644
index 0000000..4bb4b3e
--- /dev/null
+++ b/prefab/other.lua
@@ -0,0 +1,169 @@
+
+--
+-- Helper functions
+--
+
+local function is_water(pos)
+ local nn = minetest.get_node(pos).name
+ return minetest.get_item_group(nn, "water") ~= 0
+end
+
+local function get_sign(i)
+ if i == 0 then
+ return 0
+ else
+ return i/math.abs(i)
+ end
+end
+
+local function get_velocity(v, yaw, y)
+ local x = math.cos(yaw)*v
+ local z = math.sin(yaw)*v
+ return {x=x, y=y, z=z}
+end
+
+local function get_v(v)
+ return math.sqrt(v.x^2+v.z^2)
+end
+
+--
+-- Cart entity
+--
+
+local boat = {
+ physical = true,
+ collisionbox = {-2.4,-1,-2.4, 2.4,2.0,2.4},
+ visual = "mesh",
+ visual_size = {x=2.0,y=2.0},
+ mesh = "barge.obj",
+ textures = {"prefab_concrete_boat.png"},
+
+ driver = nil,
+ v = 0,
+}
+
+function boat:on_rightclick(clicker)
+ if not clicker or not clicker:is_player() then
+ return
+ end
+ if self.driver and clicker == self.driver then
+ self.driver = nil
+ clicker:set_detach()
+ elseif not self.driver then
+ self.driver = clicker
+ clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
+ self.object:setyaw(clicker:get_look_yaw())
+ end
+end
+
+function boat:on_activate(staticdata, dtime_s)
+ self.object:set_armor_groups({immortal=1})
+ if staticdata then
+ self.v = tonumber(staticdata)
+ end
+end
+
+function boat:get_staticdata()
+ return tostring(v)
+end
+
+function boat:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
+ self.object:remove()
+ if puncher and puncher:is_player() then
+ puncher:get_inventory():add_item("main", "prefab:boat")
+ end
+end
+
+function boat:on_step(dtime)
+ self.v = get_v(self.object:getvelocity())*get_sign(self.v)
+ if self.driver then
+ local ctrl = self.driver:get_player_control()
+ if ctrl.up then
+ self.v = self.v+0.03
+ end
+ if ctrl.down then
+ self.v = self.v-0.03
+ end
+ if ctrl.left then
+ self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120)
+ end
+ if ctrl.right then
+ self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120)
+ end
+ end
+ local s = get_sign(self.v)
+ self.v = self.v - 0.02*s
+ if s ~= get_sign(self.v) then
+ self.object:setvelocity({x=0, y=0, z=0})
+ self.v = 0
+ return
+ end
+ if math.abs(self.v) > 4.5 then
+ self.v = 4.5*get_sign(self.v)
+ end
+
+ local p = self.object:getpos()
+ p.y = p.y-0.5
+ if not is_water(p) then
+ if minetest.registered_nodes[minetest.get_node(p).name].walkable then
+ self.v = 0
+ end
+ self.object:setacceleration({x=0, y=-10, z=0})
+ self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
+ else
+ p.y = p.y+1
+ if is_water(p) then
+ self.object:setacceleration({x=0, y=3, z=0})
+ local y = self.object:getvelocity().y
+ if y > 2 then
+ y = 2
+ end
+ if y < 0 then
+ self.object:setacceleration({x=0, y=10, z=0})
+ end
+ self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y))
+ else
+ self.object:setacceleration({x=0, y=0, z=0})
+ if math.abs(self.object:getvelocity().y) < 1 then
+ local pos = self.object:getpos()
+ pos.y = math.floor(pos.y)+0.5
+ self.object:setpos(pos)
+ self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
+ else
+ self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
+ end
+ end
+ end
+end
+
+minetest.register_entity("prefab:boat", boat)
+
+
+minetest.register_craftitem("prefab:boat", {
+ description = "Prefab Concrete Barge",
+ inventory_image = "prefab_boat_inventory.png",
+ wield_scale = {x=2, y=2, z=1},
+ liquids_pointable = true,
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return
+ end
+ if not is_water(pointed_thing.under) then
+ return
+ end
+ pointed_thing.under.y = pointed_thing.under.y-0.5
+ minetest.add_entity(pointed_thing.under, "prefab:boat")
+ itemstack:take_item()
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = "prefab:boat",
+ recipe = {
+ {"", "", ""},
+ {"prefab:concrete_slab", "", "prefab:concrete_slab"},
+ {"prefab:concrete_slab", "prefab:concrete_slab", "prefab:concrete_slab"},
+ },
+})
diff --git a/prefab/textures/prefab_boat_inventory.png b/prefab/textures/prefab_boat_inventory.png
new file mode 100644
index 0000000..5af30c2
--- /dev/null
+++ b/prefab/textures/prefab_boat_inventory.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete.png b/prefab/textures/prefab_concrete.png
new file mode 100644
index 0000000..0f711fa
--- /dev/null
+++ b/prefab/textures/prefab_concrete.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_boat.png b/prefab/textures/prefab_concrete_boat.png
new file mode 100644
index 0000000..f9028ed
--- /dev/null
+++ b/prefab/textures/prefab_concrete_boat.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_door.png b/prefab/textures/prefab_concrete_door.png
new file mode 100644
index 0000000..cbf9a85
--- /dev/null
+++ b/prefab/textures/prefab_concrete_door.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_door_bottom.png b/prefab/textures/prefab_concrete_door_bottom.png
new file mode 100644
index 0000000..350e4a7
--- /dev/null
+++ b/prefab/textures/prefab_concrete_door_bottom.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_door_top.png b/prefab/textures/prefab_concrete_door_top.png
new file mode 100644
index 0000000..a90fe02
--- /dev/null
+++ b/prefab/textures/prefab_concrete_door_top.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_grass.png b/prefab/textures/prefab_concrete_grass.png
new file mode 100644
index 0000000..0477cfe
--- /dev/null
+++ b/prefab/textures/prefab_concrete_grass.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_grey.png b/prefab/textures/prefab_concrete_grey.png
new file mode 100644
index 0000000..885784b
--- /dev/null
+++ b/prefab/textures/prefab_concrete_grey.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_ladder.png b/prefab/textures/prefab_concrete_ladder.png
new file mode 100644
index 0000000..19d82ee
--- /dev/null
+++ b/prefab/textures/prefab_concrete_ladder.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_wall.png b/prefab/textures/prefab_concrete_wall.png
new file mode 100644
index 0000000..1e1112c
--- /dev/null
+++ b/prefab/textures/prefab_concrete_wall.png
Binary files differ
diff --git a/prefab/textures/prefab_concrete_window.png b/prefab/textures/prefab_concrete_window.png
new file mode 100644
index 0000000..2e90baa
--- /dev/null
+++ b/prefab/textures/prefab_concrete_window.png
Binary files differ
diff --git a/prefab/textures/prefab_electric_fence.png b/prefab/textures/prefab_electric_fence.png
new file mode 100644
index 0000000..babd429
--- /dev/null
+++ b/prefab/textures/prefab_electric_fence.png
Binary files differ
diff --git a/prefab/textures/prefab_electric_fence_corner_side1.png b/prefab/textures/prefab_electric_fence_corner_side1.png
new file mode 100644
index 0000000..637ab1f
--- /dev/null
+++ b/prefab/textures/prefab_electric_fence_corner_side1.png
Binary files differ
diff --git a/prefab/textures/prefab_electric_fence_corner_side2.png b/prefab/textures/prefab_electric_fence_corner_side2.png
new file mode 100644
index 0000000..3daaab3
--- /dev/null
+++ b/prefab/textures/prefab_electric_fence_corner_side2.png
Binary files differ
diff --git a/prefab/textures/prefab_electric_fence_corner_top.png b/prefab/textures/prefab_electric_fence_corner_top.png
new file mode 100644
index 0000000..0c1fdc6
--- /dev/null
+++ b/prefab/textures/prefab_electric_fence_corner_top.png
Binary files differ
diff --git a/prefab/textures/prefab_electric_fence_end1.png b/prefab/textures/prefab_electric_fence_end1.png
new file mode 100644
index 0000000..91f874d
--- /dev/null
+++ b/prefab/textures/prefab_electric_fence_end1.png
Binary files differ
diff --git a/prefab/textures/prefab_electric_fence_end2.png b/prefab/textures/prefab_electric_fence_end2.png
new file mode 100644
index 0000000..5810b1c
--- /dev/null
+++ b/prefab/textures/prefab_electric_fence_end2.png
Binary files differ
diff --git a/quartz/README.txt b/quartz/README.txt
new file mode 100644
index 0000000..8e6fd5d
--- /dev/null
+++ b/quartz/README.txt
@@ -0,0 +1,82 @@
+ ___ _ __ __ _
+ / _ \ _ _ __ _ _ __| |_ ____ | \/ | ___ __| |
+ | | | | | | |/ _` | '__| __|_ / | |\/| |/ _ \ / _` |
+ | |_| | |_| | (_| | | | |_ / / | | | | (_) | (_| |
+ \__\_\\__,_|\__,_|_| \__/___| |_| |_|\___/ \__,_|
+
+
+This mod adds quartz ore and some decorative blocks to minetest.
+
+
+Crafting:
+
+Quartz Block:
+c = quartz crystal x = nothing
+
+x|x|x
+-----
+c|c|x
+-----
+c|c|x
+
+Quartz Pillar:
+q = quartz block x = nothing
+
+x|x|x
+-----
+x|q|x
+-----
+x|x|x
+
+
+Quartz Slab:
+q = quartz block x = nothing
+
+x|x|x
+-----
+x|x|x
+-----
+q|q|q
+
+Quartz Stairs:
+q = quartz block x = nothing
+
+q|x|x
+q|q|x
+q|q|q
+
+Quartz Pillar Slab:
+q = quartz pillar x = nothing
+
+x|x|x
+-----
+x|x|x
+-----
+q|q|q
+
+Chiseled Quartz:
+q = quartz slab x = nothing
+
+x|x|x
+-----
+x|q|x
+-----
+x|q|x
+
+Quartz Crystal Piece (usless as of now):
+c = quartz crystal x = nothing
+
+x|x|x
+-----
+x|c|x
+-----
+x|x|x
+
+
+License:
+
+CC BY-SA 3.0
+
+More info at http://creativecommons.org/licenses/by-sa/3.0/
+
+
diff --git a/quartz/depends.txt b/quartz/depends.txt
new file mode 100644
index 0000000..40c22ed
--- /dev/null
+++ b/quartz/depends.txt
@@ -0,0 +1,3 @@
+default,
+stairs,
+moreblocks?
diff --git a/quartz/init.lua b/quartz/init.lua
new file mode 100644
index 0000000..6b1f7e8
--- /dev/null
+++ b/quartz/init.lua
@@ -0,0 +1,190 @@
+dofile(minetest.get_modpath("quartz").."/settings.txt")
+
+--Node Registration
+
+--Quartz Crystal
+minetest.register_craftitem("quartz:quartz_crystal", {
+ description = "Quartz Crystal",
+ inventory_image = "quartz_crystal_full.png",
+})
+minetest.register_craftitem("quartz:quartz_crystal_piece", {
+ description = "Quartz Crystal Piece",
+ inventory_image = "quartz_crystal_piece.png",
+})
+
+--Ore
+minetest.register_node("quartz:quartz_ore", {
+ description = "Quartz Ore",
+ tiles = {"default_stone.png^quartz_ore.png"},
+ groups = {cracky=3, stone=1},
+ drop = 'quartz:quartz_crystal',
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "quartz:quartz_ore",
+ wherein = "default:stone",
+ clust_scarcity = 10*10*10,
+ clust_num_ores = 6,
+ clust_size = 5,
+ y_min = -31000,
+ y_max = -5,
+})
+
+--Quartz Block
+minetest.register_node("quartz:block", {
+ description = "Quartz Block",
+ tiles = {"quartz_block.png"},
+ groups = {cracky=3, oddly_breakable_by_hand=1},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+--Chiseled Quartz
+minetest.register_node("quartz:chiseled", {
+ description = "Chiseled Quartz",
+ tiles = {"quartz_chiseled.png"},
+ groups = {cracky=3, oddly_breakable_by_hand=1},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+--Quartz Pillar
+minetest.register_node("quartz:pillar", {
+ description = "Quartz Pillar",
+ paramtype2 = "facedir",
+ tiles = {"quartz_pillar_top.png", "quartz_pillar_top.png", "quartz_pillar_side.png"},
+ groups = {cracky=3, oddly_breakable_by_hand=1},
+ sounds = default.node_sound_glass_defaults(),
+ on_place = minetest.rotate_node
+})
+
+
+--Stairs & Slabs
+stairs.register_stair_and_slab("quartzblock", "quartz:block",
+ {cracky=3, oddly_breakable_by_hand=1},
+ {"quartz_block.png"},
+ "Quartz stair",
+ "Quartz slab",
+ default.node_sound_glass_defaults())
+
+stairs.register_slab("quartzstair", "quartz:pillar",
+ {cracky=3, oddly_breakable_by_hand=1},
+ {"quartz_pillar_top.png", "quartz_pillar_top.png", "quartz_pillar_side.png"},
+ "Quartz Pillar stair",
+ "Quartz Pillar slab",
+ default.node_sound_glass_defaults())
+
+
+
+
+
+
+
+--Crafting
+
+--Quartz Crystal Piece
+minetest.register_craft({
+ output = '"quartz:quartz_crystal_piece" 3',
+ recipe = {
+ {'quartz:quartz_crystal'}
+ }
+})
+
+--Quartz Block
+minetest.register_craft({
+ output = '"quartz:block" 4',
+ recipe = {
+ {'quartz:quartz_crystal', 'quartz:quartz_crystal', ''},
+ {'quartz:quartz_crystal', 'quartz:quartz_crystal', ''},
+ {'', '', ''}
+ }
+})
+
+--Chiseled Quartz
+minetest.register_craft({
+ output = 'quartz:chiseled 2',
+ recipe = {
+ {'stairs:slab_quartzblock', '', ''},
+ {'stairs:slab_quartzblock', '', ''},
+ {'', '', ''},
+ }
+})
+
+--Chiseled Quartz(for stairsplus)
+minetest.register_craft({
+ output = 'quartz:chiseled 2',
+ recipe = {
+ {'quartz:slab_block', '', ''},
+ {'quartz:slab_block', '', ''},
+ {'', '', ''},
+ }
+})
+
+--Quartz Pillar
+minetest.register_craft({
+ output = 'quartz:pillar 2',
+ recipe = {
+ {'quartz:block', '', ''},
+ {'quartz:block', '', ''},
+ {'', '', ''},
+ }
+})
+
+--abms
+local dirs2 = { 12, 9, 18, 7, 12 }
+
+minetest.register_abm({
+ nodenames = { "quartz:pillar_horizontal" },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local fdir = node.param2 or 0
+ nfdir = dirs2[fdir+1]
+ minetest.add_node(pos, {name = "quartz:pillar", param2 = nfdir})
+ end,
+})
+
+--These are deprecated, don't use them
+
+if enable_horizontal_pillar then
+ --Quartz Pillar (horizontal)
+ minetest.register_node("quartz:pillar_horizontal", {
+ description = "Quartz Pillar Horizontal",
+ tiles = {"quartz_pillar_side.png", "quartz_pillar_side.png", "quartz_pillar_side.png^[transformR90",
+ "quartz_pillar_side.png^[transformR90", "quartz_pillar_top.png", "quartz_pillar_top.png"},
+ paramtype2 = "facedir",
+ drop = 'quartz:pillar',
+ groups = {cracky=3, oddly_breakable_by_hand=1, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ })
+end
+
+
+--Compatibility with stairsplus
+
+if minetest.get_modpath("moreblocks") and enable_stairsplus then
+ register_stair_slab_panel_micro("quartz", "block", "quartz:block",
+ {cracky=3},
+ {"quartz_block.png"},
+ "Quartz Block",
+ "block",
+ 0)
+
+ register_stair_slab_panel_micro("quartz", "chiseled", "quartz:chiseled",
+ {cracky=3},
+ {"quartz_chiseled.png"},
+ "Chiseled Quartz",
+ "chiseled",
+ 0)
+
+ register_stair_slab_panel_micro("quartz", "pillar", "quartz:pillar",
+ {cracky=3},
+ {"quartz_pillar_top.png", "quartz_pillar_top.png", "quartz_pillar_side.png"},
+ "Quartz Pillar",
+ "pillar",
+ 0)
+
+ table.insert(circular_saw.known_stairs, "quartz:block")
+ table.insert(circular_saw.known_stairs, "quartz:chiseled")
+ table.insert(circular_saw.known_stairs, "quartz:pillar")
+end
diff --git a/quartz/settings.txt b/quartz/settings.txt
new file mode 100644
index 0000000..246021e
--- /dev/null
+++ b/quartz/settings.txt
@@ -0,0 +1,7 @@
+-- Set this to true to allow usage of the stairsplus mod in moreblocks
+
+enable_stairsplus = false
+
+-- This enables the old horizontal pillar block(deprecated, be sure to convert them back to normal pillars)
+
+enable_horizontal_pillar = true
diff --git a/quartz/textures/quartz_block.png b/quartz/textures/quartz_block.png
new file mode 100644
index 0000000..802b3d5
--- /dev/null
+++ b/quartz/textures/quartz_block.png
Binary files differ
diff --git a/quartz/textures/quartz_chiseled.png b/quartz/textures/quartz_chiseled.png
new file mode 100644
index 0000000..aef1c2f
--- /dev/null
+++ b/quartz/textures/quartz_chiseled.png
Binary files differ
diff --git a/quartz/textures/quartz_crystal_full.png b/quartz/textures/quartz_crystal_full.png
new file mode 100644
index 0000000..c647df0
--- /dev/null
+++ b/quartz/textures/quartz_crystal_full.png
Binary files differ
diff --git a/quartz/textures/quartz_crystal_piece.png b/quartz/textures/quartz_crystal_piece.png
new file mode 100644
index 0000000..45e448f
--- /dev/null
+++ b/quartz/textures/quartz_crystal_piece.png
Binary files differ
diff --git a/quartz/textures/quartz_ore.png b/quartz/textures/quartz_ore.png
new file mode 100644
index 0000000..805666a
--- /dev/null
+++ b/quartz/textures/quartz_ore.png
Binary files differ
diff --git a/quartz/textures/quartz_pillar_side.png b/quartz/textures/quartz_pillar_side.png
new file mode 100644
index 0000000..71a5c30
--- /dev/null
+++ b/quartz/textures/quartz_pillar_side.png
Binary files differ
diff --git a/quartz/textures/quartz_pillar_side_horizontal.png b/quartz/textures/quartz_pillar_side_horizontal.png
new file mode 100644
index 0000000..4d58985
--- /dev/null
+++ b/quartz/textures/quartz_pillar_side_horizontal.png
Binary files differ
diff --git a/quartz/textures/quartz_pillar_top.png b/quartz/textures/quartz_pillar_top.png
new file mode 100644
index 0000000..9ad9a03
--- /dev/null
+++ b/quartz/textures/quartz_pillar_top.png
Binary files differ
diff --git a/replacer/README.md b/replacer/README.md
new file mode 100644
index 0000000..5f263f1
--- /dev/null
+++ b/replacer/README.md
@@ -0,0 +1,45 @@
+ Replacement tool for creative building (Mod for MineTest)
+
+This tool is helpful for creative purposes (i.e. build a wall and "paint" windows into it).
+It replaces nodes with a previously selected other type of node (i.e. places said windows
+into a brick wall).
+
+Crafting: chest - -
+ - stick -
+ - - chest
+Or just use /giveme replacer:replacer
+
+Usage: Right-click on a node of that type you want to replace other nodes with.
+ Left-click (normal usage) on any nodes you want to replace with the type you previously right-clicked on.
+ SHIFT-Right-click in order to store a new pattern.
+
+When in creative mode, the node will just be replaced. Your inventory will not be changed.
+
+When not in creative mode, digging will be simulated and you will get what was there. In return, the replacement node
+will be taken from your inventory.
+
+
+The second tool included in this mod is the inspector.
+
+Crafting: torch
+ stick
+
+Just wield it and click on any node or entity you want to know more about. A limited craft-guide is included.
+
+
+
+ Copyright (C) 2013,2014,2015 Sokomine
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
diff --git a/replacer/check_owner.lua b/replacer/check_owner.lua
new file mode 100644
index 0000000..f8e843f
--- /dev/null
+++ b/replacer/check_owner.lua
@@ -0,0 +1,37 @@
+-- taken from Vanessa Ezekowitz' homedecor mod
+-- see http://forum.minetest.net/viewtopic.php?pid=26061 or https://github.com/VanessaE/homedecor for details!
+function replacer_homedecor_node_is_owned(pos, placer)
+
+ if type( minetest.is_protected == "function") then
+ return minetest.is_protected( pos, placer:get_player_name() );
+ end
+
+
+ local ownername = false
+ if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
+ if HasOwner(pos, placer) then -- returns true if the node is owned
+ if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
+ if type(getLastOwner) == "function" then -- ...is an old version
+ ownername = getLastOwner(pos)
+ elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
+ ownername = GetNodeOwnerName(pos)
+ else
+ ownername = "someone"
+ end
+ end
+ end
+
+ elseif type(isprotect)=="function" then -- glomie's protection mod
+ if not isprotect(5, pos, placer) then
+ ownername = "someone"
+ end
+ end
+
+ if ownername ~= false then
+ minetest.chat_send_player( placer:get_player_name(), "Sorry, "..ownername.." owns that spot." )
+ return true
+ else
+ return false
+ end
+end
+
diff --git a/replacer/depends.txt b/replacer/depends.txt
new file mode 100644
index 0000000..fef1434
--- /dev/null
+++ b/replacer/depends.txt
@@ -0,0 +1,2 @@
+default?
+dye?
diff --git a/replacer/init.lua b/replacer/init.lua
new file mode 100644
index 0000000..6b7732c
--- /dev/null
+++ b/replacer/init.lua
@@ -0,0 +1,238 @@
+
+
+--[[
+ Replacement tool for creative building (Mod for MineTest)
+ Copyright (C) 2013 Sokomine
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+--]]
+
+-- Version 3.0
+
+-- Changelog:
+-- 02.10.2014 * Some more improvements for inspect-tool. Added craft-guide.
+-- 01.10.2014 * Added inspect-tool.
+-- 12.01.2013 * If digging the node was unsuccessful, then the replacement will now fail
+-- (instead of destroying the old node with its metadata; i.e. chests with content)
+-- 20.11.2013 * if the server version is new enough, minetest.is_protected is used
+-- in order to check if the replacement is allowed
+-- 24.04.2013 * param1 and param2 are now stored
+-- * hold sneak + right click to store new pattern
+-- * right click: place one of the itmes
+-- * receipe changed
+-- * inventory image added
+
+-- adds a function to check ownership of a node; taken from VanessaEs homedecor mod
+dofile(minetest.get_modpath("replacer").."/check_owner.lua");
+
+replacer = {};
+
+-- adds a tool for inspecting nodes and entities
+dofile(minetest.get_modpath("replacer").."/inspect.lua");
+
+minetest.register_tool( "replacer:replacer",
+{
+ description = "Node replacement tool",
+ groups = {},
+ inventory_image = "replacer_replacer.png",
+ wield_image = "",
+ wield_scale = {x=1,y=1,z=1},
+ stack_max = 1, -- it has to store information - thus only one can be stacked
+ liquids_pointable = true, -- it is ok to painit in/with water
+ -- the tool_capabilities are of nearly no intrest here
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ groupcaps={
+ -- For example:
+ fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0}
+ }
+ },
+ node_placement_prediction = nil,
+ metadata = "default:dirt", -- default replacement: common dirt
+
+ on_place = function(itemstack, placer, pointed_thing)
+
+ if( placer == nil or pointed_thing == nil) then
+ return itemstack; -- nothing consumed
+ end
+ local name = placer:get_player_name();
+ --minetest.chat_send_player( name, "You PLACED this on "..minetest.serialize( pointed_thing )..".");
+
+ local keys=placer:get_player_control();
+
+ -- just place the stored node if now new one is to be selected
+ if( not( keys["sneak"] )) then
+
+ return replacer.replace( itemstack, placer, pointed_thing, 0 ); end
+
+
+ if( pointed_thing.type ~= "node" ) then
+ minetest.chat_send_player( name, " Error: No node selected.");
+ return nil;
+ end
+
+ local pos = minetest.get_pointed_thing_position( pointed_thing, under );
+ local node = minetest.get_node_or_nil( pos );
+
+ --minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
+
+ local item = itemstack:to_table();
+ -- make sure metadata is always set
+ if( node ~= nil and node.name ) then
+ item[ "metadata" ] = node.name..' '..node.param1..' '..node.param2;
+ else
+ item[ "metadata" ] = "default:dirt 0 0";
+ end
+ itemstack:replace( item );
+
+ minetest.chat_send_player( name, "Node replacement tool set to: '"..item[ "metadata" ].."'.");
+
+ return itemstack; -- nothing consumed but data changed
+ end,
+
+
+-- on_drop = func(itemstack, dropper, pos),
+
+ on_use = function(itemstack, user, pointed_thing)
+
+ return replacer.replace( itemstack, user, pointed_thing, above );
+ end,
+})
+
+
+replacer.replace = function( itemstack, user, pointed_thing, mode )
+
+ if( user == nil or pointed_thing == nil) then
+ return nil;
+ end
+ local name = user:get_player_name();
+ --minetest.chat_send_player( name, "You USED this on "..minetest.serialize( pointed_thing )..".");
+
+ if( pointed_thing.type ~= "node" ) then
+ minetest.chat_send_player( name, " Error: No node.");
+ return nil;
+ end
+
+ local pos = minetest.get_pointed_thing_position( pointed_thing, mode );
+ local node = minetest.get_node_or_nil( pos );
+
+ --minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
+
+ if( node == nil ) then
+
+ minetest.chat_send_player( name, "Error: Target node not yet loaded. Please wait a moment for the server to catch up.");
+ return nil;
+ end
+
+
+ local item = itemstack:to_table();
+
+ -- make sure it is defined
+ if( not( item[ "metadata"] ) or item["metadata"]=="" ) then
+ item["metadata"] = "default:dirt 0 0";
+ end
+
+ -- regain information about nodename, param1 and param2
+ local daten = item[ "metadata"]:split( " " );
+ -- the old format stored only the node name
+ if( #daten < 3 ) then
+ daten[2] = 0;
+ daten[3] = 0;
+ end
+
+ -- if someone else owns that node then we can not change it
+ if( replacer_homedecor_node_is_owned(pos, user)) then
+
+ return nil;
+ end
+
+ -- do not replace if there is nothing to be done
+ if( node.name == daten[1] ) then
+
+ -- the node itshelf remains the same, but the orientation was changed
+ if( node.param1 ~= daten[2] or node.param2 ~= daten[3] ) then
+ minetest.add_node( pos, { name = node.name, param1 = daten[2], param2 = daten[3] } );
+ end
+
+ return nil;
+ end
+
+
+ -- in survival mode, the player has to provide the node he wants to be placed
+ if( not(minetest.setting_getbool("creative_mode") )) then
+
+ -- players usually don't carry dirt_with_grass around; it's safe to assume normal dirt here
+ -- fortionately, dirt and dirt_with_grass does not make use of rotation
+ if( daten[1] == "default:dirt_with_grass" ) then
+ daten[1] = "default:dirt";
+ item["metadata"] = "default:dirt 0 0";
+ end
+
+ -- does the player carry at least one of the desired nodes with him?
+ if( not( user:get_inventory():contains_item("main", daten[1]))) then
+
+
+ minetest.chat_send_player( name, "You have no further '"..( daten[1] or "?" ).."'. Replacement failed.");
+ return nil;
+ end
+
+
+
+ -- give the player the item by simulating digging if possible
+ if( node.name ~= "air"
+ and node.name ~= "ignore"
+ and node.name ~= "default:lava_source"
+ and node.name ~= "default:lava_flowing"
+ and node.name ~= "default:water_source"
+ and node.name ~= "default:water_flowing" ) then
+
+ minetest.node_dig( pos, node, user );
+
+ local digged_node = minetest.get_node_or_nil( pos );
+ if( not( digged_node )
+ or digged_node.name == node.name ) then
+
+ minetest.chat_send_player( name, "Replacing '"..( node.name or "air" ).."' with '"..( item[ "metadata"] or "?" ).."' failed. Unable to remove old node.");
+ return nil;
+ end
+
+ end
+
+ -- consume the item
+ user:get_inventory():remove_item("main", daten[1].." 1");
+
+ --user:get_inventory():add_item( "main", node.name.." 1");
+ end
+
+ --minetest.chat_send_player( name, "Replacing node '"..( node.name or "air" ).."' with '"..( item[ "metadata"] or "?" ).."'.");
+
+ --minetest.place_node( pos, { name = item[ "metadata" ] } );
+ minetest.add_node( pos, { name = daten[1], param1 = daten[2], param2 = daten[3] } );
+ return nil; -- no item shall be removed from inventory
+ end
+
+
+minetest.register_craft({
+ output = 'replacer:replacer',
+ recipe = {
+ { 'default:chest', '', '' },
+ { '', 'default:stick', '' },
+ { '', '', 'default:chest' },
+ }
+})
+
+
diff --git a/replacer/inspect.lua b/replacer/inspect.lua
new file mode 100644
index 0000000..6db5c74
--- /dev/null
+++ b/replacer/inspect.lua
@@ -0,0 +1,412 @@
+
+replacer.image_replacements = {};
+
+-- support for RealTest
+if( minetest.get_modpath("trees")
+ and minetest.get_modpath("core")
+ and minetest.get_modpath("instruments")
+ and minetest.get_modpath("anvil")
+ and minetest.get_modpath("scribing_table")) then
+ replacer.image_replacements[ "group:planks" ] = "trees:pine_planks";
+ replacer.image_replacements[ "group:plank" ] = "trees:pine_plank";
+ replacer.image_replacements[ "group:wood" ] = "trees:pine_planks";
+ replacer.image_replacements[ "group:tree" ] = "trees:pine_log";
+ replacer.image_replacements[ "group:sapling"] = "trees:pine_sapling";
+ replacer.image_replacements[ "group:leaves" ] = "trees:pine_leaves";
+ replacer.image_replacements[ "default:furnace" ] = "oven:oven";
+ replacer.image_replacements[ "default:furnace_active" ] = "oven:oven_active";
+end
+
+minetest.register_tool( "replacer:inspect",
+{
+ description = "Node inspection tool",
+ groups = {},
+ inventory_image = "replacer_inspect.png",
+ wield_image = "",
+ wield_scale = {x=1,y=1,z=1},
+ liquids_pointable = true, -- it is ok to request information about liquids
+ -- the tool_capabilities are of no intrest here; it is not for digging
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ groupcaps={
+ fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0}
+ }
+ },
+ node_placement_prediction = nil,
+
+ on_use = function(itemstack, user, pointed_thing)
+
+ return replacer.inspect( itemstack, user, pointed_thing, nil, true ); --false );
+ end,
+
+ on_place = function(itemstack, placer, pointed_thing)
+
+ return replacer.inspect( itemstack, placer, pointed_thing, nil, true );
+ end,
+})
+
+
+replacer.inspect = function( itemstack, user, pointed_thing, mode, show_receipe )
+
+ if( user == nil or pointed_thing == nil) then
+ return nil;
+ end
+ local name = user:get_player_name();
+ local keys = user:get_player_control();
+ if( keys["sneak"] ) then
+ show_receipe = true;
+ end
+
+ if( pointed_thing.type == 'object' ) then
+ local text = 'This is ';
+ local ref = pointed_thing.ref;
+ if( not( ref )) then
+ text = text..'a borken object. We have no further information about it. It is located';
+ elseif( ref:is_player()) then
+ text = text..'your fellow player \"'..tostring( ref:get_player_name() )..'\"';
+ else
+ local luaob = ref:get_luaentity();
+ if( luaob ) then
+ text = text..'entity \"'..tostring( luaob.name )..'\"';
+ local sdata = luaob:get_staticdata();
+ if( sdata ) then
+ sdata = minetest.deserialize( sdata );
+ if( sdata.itemstring ) then
+ text = text..' ['..tostring( sdata.itemstring )..']';
+ if( show_receipe ) then
+ -- the fields part is used here to provide additional information about the entity
+ replacer.inspect_show_crafting( name, sdata.itemstring, { pos=pos, luaob=luaob} );
+ end
+ end
+ if( sdata.age ) then
+ text = text..', dropped '..tostring( math.floor( sdata.age/60 ))..' minutes ago';
+ end
+ end
+ else
+ text = text..'object \"'..tostring( ref:get_entity_name() )..'\"';
+ end
+
+ end
+ text = text..' at '..minetest.pos_to_string( ref:getpos() );
+ minetest.chat_send_player( name, text );
+ return nil;
+ elseif( pointed_thing.type ~= 'node' ) then
+ minetest.chat_send_player( name, 'Sorry. This is an unkown something of type \"'..tostring( pointed_thing.type )..'\". No information available.');
+ return nil;
+ end
+
+ local pos = minetest.get_pointed_thing_position( pointed_thing, mode );
+ local node = minetest.get_node_or_nil( pos );
+
+ if( node == nil ) then
+ minetest.chat_send_player( name, "Error: Target node not yet loaded. Please wait a moment for the server to catch up.");
+ return nil;
+ end
+
+ local text = ' ['..tostring( node.name )..'] with param2='..tostring( node.param2 )..' at '..minetest.pos_to_string( pos )..'.';
+ if( not( minetest.registered_nodes[ node.name ] )) then
+ text = 'This node is an UNKOWN block'..text;
+ else
+ text = 'This is a \"'..tostring( minetest.registered_nodes[ node.name ].description or ' - no description provided -')..'\" block'..text;
+ end
+ local protected_info = "";
+ if( minetest.is_protected( pos, name )) then
+ protected_info = 'WARNING: You can\'t dig this node. It is protected.';
+ elseif( minetest.is_protected( pos, '_THIS_NAME_DOES_NOT_EXIST_' )) then
+ protected_info = 'INFO: You can dig this node, but others can\'t.';
+ end
+ text = text..' '..protected_info;
+-- no longer spam the chat; the craft guide is more informative
+-- minetest.chat_send_player( name, text );
+
+ if( show_receipe ) then
+ -- get light of the node at the current time
+ local light = minetest.get_node_light(pos, nil);
+ if( light==0 ) then
+ light = minetest.get_node_light( {x=pos.x,y=pos.y+1,z=pos.z});
+ end
+ -- the fields part is used here to provide additional information about the node
+ replacer.inspect_show_crafting( name, node.name, {pos=pos, param2=node.param2, light=light, protected_info=protected_info} );
+ end
+ return nil; -- no item shall be removed from inventory
+end
+
+-- some common groups
+replacer.group_placeholder = {};
+replacer.group_placeholder[ 'group:wood' ] = 'default:wood';
+replacer.group_placeholder[ 'group:tree' ] = 'default:tree';
+replacer.group_placeholder[ 'group:sapling']= 'default:sapling';
+replacer.group_placeholder[ 'group:stick' ] = 'default:stick';
+replacer.group_placeholder[ 'group:stone' ] = 'default:cobble'; -- 'default:stone'; point people to the cheaper cobble
+replacer.group_placeholder[ 'group:sand' ] = 'default:sand';
+replacer.group_placeholder[ 'group:leaves'] = 'default:leaves';
+replacer.group_placeholder[ 'group:wood_slab'] = 'stairs:slab_wood';
+replacer.group_placeholder[ 'group:wool' ] = 'wool:white';
+
+
+-- handle the standard dye color groups
+if( minetest.get_modpath("dye") and dye and dye.basecolors) then
+ for i,color in ipairs( dye.basecolors ) do
+ local def = minetest.registered_items[ "dye:"..color ];
+ if( def and def.groups ) then
+ for k,v in pairs( def.groups ) do
+ if( k ~= 'dye' ) then
+ replacer.group_placeholder[ 'group:dye,'..k ] = 'dye:'..color;
+ end
+ end
+ replacer.group_placeholder[ 'group:flower,color_'..color ] = 'dye:'..color;
+ end
+ end
+end
+
+replacer.image_button_link = function( stack_string )
+ local group = '';
+ if( replacer.image_replacements[ stack_string ] ) then
+ stack_string = replacer.image_replacements[ stack_string ];
+ end
+ if( replacer.group_placeholder[ stack_string ] ) then
+ stack_string = replacer.group_placeholder[ stack_string ];
+ group = 'G';
+ end
+-- TODO: show information about other groups not handled above
+ local stack = ItemStack( stack_string );
+ local new_node_name = stack_string;
+ if( stack and stack:get_name()) then
+ new_node_name = stack:get_name();
+ end
+ return tostring( stack_string )..';'..tostring( new_node_name )..';'..group;
+end
+
+replacer.add_circular_saw_receipe = function( node_name, receipes )
+ if( not( node_name ) or not( minetest.get_modpath("moreblocks")) or not( circular_saw ) or not( circular_saw.names) or (node_name=='moreblocks:circular_saw')) then
+ return;
+ end
+ local help = node_name:split( ':' );
+ if( not( help ) or #help ~= 2 or help[1]=='stairs') then
+ return;
+ end
+ help2 = help[2]:split('_');
+ if( not( help2 ) or #help2 < 2 or (help2[1]~='micro' and help2[1]~='panel' and help2[1]~='stair' and help2[1]~='slab')) then
+ return;
+ end
+-- for i,v in ipairs( circular_saw.names ) do
+-- modname..":"..v[1].."_"..material..v[2]
+
+-- TODO: write better and more correct method of getting the names of the materials
+-- TODO: make sure only nodes produced by the saw are listed here
+help[1]='default';
+ local basic_node_name = help[1]..':'..help2[2];
+ -- node found that fits into the saw
+ receipes[ #receipes+1 ] = { method = 'saw', type = 'saw', items = { basic_node_name }, output = node_name};
+ return receipes;
+end
+
+replacer.add_colormachine_receipe = function( node_name, receipes )
+ if( not( minetest.get_modpath("colormachine")) or not( colormachine )) then
+ return;
+ end
+ local res = colormachine.get_node_name_painted( node_name, "" );
+
+ if( not( res) or not( res.possible ) or #res.possible < 1 ) then
+ return;
+ end
+ -- paintable node found
+ receipes[ #receipes+1 ] = { method = 'colormachine', type = 'colormachine', items = { res.possible[1] }, output = node_name};
+ return receipes;
+end
+
+
+replacer.inspect_show_crafting = function( name, node_name, fields )
+ if( not( name )) then
+ return;
+ end
+
+ local receipe_nr = 1;
+ if( not( node_name )) then
+ node_name = fields.node_name;
+ receipe_nr = tonumber(fields.receipe_nr);
+ end
+ -- turn it into an item stack so that we can handle dropped stacks etc
+ local stack = ItemStack( node_name );
+ node_name = stack:get_name();
+
+ -- the player may ask for receipes of indigrents to the current receipe
+ if( fields ) then
+ for k,v in pairs( fields ) do
+ if( v and v=="" and (minetest.registered_items[ k ]
+ or minetest.registered_nodes[ k ]
+ or minetest.registered_craftitems[ k ]
+ or minetest.registered_tools[ k ] )) then
+ node_name = k;
+ receipe_nr = 1;
+ end
+ end
+ end
+
+ local res = minetest.get_all_craft_recipes( node_name );
+ if( not( res )) then
+ res = {};
+ end
+ -- add special receipes for nodes created by machines
+ replacer.add_circular_saw_receipe( node_name, res );
+ replacer.add_colormachine_receipe( node_name, res );
+
+ -- offer all alternate creafting receipes thrugh prev/next buttons
+ if( fields and fields.prev_receipe and receipe_nr > 1 ) then
+ receipe_nr = receipe_nr - 1;
+ elseif( fields and fields.next_receipe and receipe_nr < #res ) then
+ receipe_nr = receipe_nr + 1;
+ end
+
+ local desc = nil;
+ if( minetest.registered_nodes[ node_name ] ) then
+ if( minetest.registered_nodes[ node_name ].description
+ and minetest.registered_nodes[ node_name ].description~= "") then
+ desc = "\""..minetest.registered_nodes[ node_name ].description.."\" block";
+ elseif( minetest.registered_nodes[ node_name ].name ) then
+ desc = "\""..minetest.registered_nodes[ node_name ].name.."\" block";
+ else
+ desc = " - no description provided - block";
+ end
+ elseif( minetest.registered_items[ node_name ] ) then
+ if( minetest.registered_items[ node_name ].description
+ and minetest.registered_items[ node_name ].description~= "") then
+ desc = "\""..minetest.registered_items[ node_name ].description.."\" item";
+ elseif( minetest.registered_items[ node_name ].name ) then
+ desc = "\""..minetest.registered_items[ node_name ].name.."\" item";
+ else
+ desc = " - no description provided - item";
+ end
+ end
+ if( not( desc ) or desc=="") then
+ desc = ' - no description provided - ';
+ end
+
+ local formspec = "size[6,6]"..
+ "label[0,5.5;This is a "..minetest.formspec_escape( desc )..".]"..
+ "button_exit[5.0,4.3;1,0.5;quit;Exit]"..
+ "label[0,0;Name:]"..
+ "field[20,20;0.1,0.1;node_name;node_name;"..node_name.."]".. -- invisible field for passing on information
+ "field[21,21;0.1,0.1;receipe_nr;receipe_nr;"..tostring( receipe_nr ).."]".. -- another invisible field
+ "label[1,0;"..tostring( node_name ).."]"..
+ "item_image_button[5,2;1.0,1.0;"..tostring( node_name )..";normal;]";
+
+ -- provide additional information regarding the node in particular that has been inspected
+ if( fields.pos ) then
+ formspec = formspec.."label[0.0,0.3;Located at "..
+ minetest.formspec_escape( minetest.pos_to_string( fields.pos ));
+ if( fields.param2 ) then
+ formspec = formspec.." with param2="..tostring( fields.param2 );
+ end
+ if( fields.light ) then
+ formspec = formspec.." and receiving "..tostring( fields.light ).." light";
+ end
+ formspec = formspec..".]";
+ end
+
+ -- show information about protection
+ if( fields.protected_info and fields.protected_info ~= "" ) then
+ formspec = formspec.."label[0.0,4.5;"..minetest.formspec_escape( fields.protected_info ).."]";
+ end
+
+ if( not( res ) or receipe_nr > #res or receipe_nr < 1 ) then
+ receipe_nr = 1;
+ end
+ if( res and receipe_nr > 1 ) then
+ formspec = formspec.."button[3.8,5;1,0.5;prev_receipe;prev]";
+ end
+ if( res and receipe_nr < #res ) then
+ formspec = formspec.."button[5.0,5.0;1,0.5;next_receipe;next]";
+ end
+ if( not( res ) or #res<1) then
+ formspec = formspec..'label[3,1;No receipes.]';
+ if( minetest.registered_nodes[ node_name ]
+ and minetest.registered_nodes[ node_name ].drop ) then
+ local drop = minetest.registered_nodes[ node_name ].drop;
+ if( drop ) then
+ if( type( drop )=='string' and drop ~= node_name ) then
+ formspec = formspec.."label[2,1.6;Drops on dig:]"..
+ "item_image_button[2,2;1.0,1.0;"..replacer.image_button_link( drop ).."]";
+ elseif( type( drop )=='table' and drop.items ) then
+ local droplist = {};
+ for _,drops in ipairs( drop.items ) do
+ for _,item in ipairs( drops.items ) do
+ -- avoid duplicates; but include the item itshelf
+ droplist[ item ] = 1;
+ end
+ end
+ local i = 1;
+ formspec = formspec.."label[2,1.6;May drop on dig:]";
+ for k,v in pairs( droplist ) do
+ formspec = formspec..
+ "item_image_button["..(((i-1)%3)+1)..","..math.floor(((i-1)/3)+2)..";1.0,1.0;"..replacer.image_button_link( k ).."]";
+ i = i+1;
+ end
+ end
+ end
+ end
+ else
+ formspec = formspec.."label[1,5;Alternate "..tostring( receipe_nr ).."/"..tostring( #res ).."]";
+ -- reverse order; default receipes (and thus the most intresting ones) are usually the oldest
+ local receipe = res[ #res+1-receipe_nr ];
+ if( receipe.type=='normal' and receipe.items) then
+ local width = receipe.width;
+ if( not( width ) or width==0 ) then
+ width = 3;
+ end
+ for i=1,9 do
+ if( receipe.items[i] ) then
+ formspec = formspec.."item_image_button["..(((i-1)%width)+1)..','..(math.floor((i-1)/width)+1)..";1.0,1.0;"..
+ replacer.image_button_link( receipe.items[i] ).."]";
+ end
+ end
+ elseif( receipe.type=='cooking' and receipe.items and #receipe.items==1
+ and receipe.output=="" ) then
+ formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'default:furnace_active' ).."]".. --default_furnace_front.png]"..
+ "item_image_button[2.9,2.7;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]"..
+ "label[1.0,0;"..tostring(receipe.items[1]).."]"..
+ "label[0,0.5;This can be used as a fuel.]";
+ elseif( receipe.type=='cooking' and receipe.items and #receipe.items==1 ) then
+ formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'default:furnace' ).."]".. --default_furnace_front.png]"..
+ "item_image_button[2.9,2.7;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]";
+ elseif( receipe.type=='colormachine' and receipe.items and #receipe.items==1 ) then
+ formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'colormachine:colormachine' ).."]".. --colormachine_front.png]"..
+ "item_image_button[2,2;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]";
+ elseif( receipe.type=='saw' and receipe.items and #receipe.items==1 ) then
+ --formspec = formspec.."item_image[1,1;3.4,3.4;moreblocks:circular_saw]"..
+ formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'moreblocks:circular_saw' ).."]"..
+ "item_image_button[2,0.6;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]";
+ else
+ formspec = formspec..'label[3,1;Error: Unkown receipe.]';
+ end
+ -- show how many of the items the receipe will yield
+ local outstack = ItemStack( receipe.output );
+ if( outstack and outstack:get_count() and outstack:get_count()>1 ) then
+ formspec = formspec..'label[5.5,2.5;'..tostring( outstack:get_count() )..']';
+ end
+ end
+ minetest.show_formspec( name, "replacer:crafting", formspec );
+end
+
+-- translate general formspec calls back to specific calls
+replacer.form_input_handler = function( player, formname, fields)
+ if( formname and formname == "replacer:crafting" and player and not( fields.quit )) then
+ replacer.inspect_show_crafting( player:get_player_name(), nil, fields );
+ return;
+ end
+end
+
+-- establish a callback so that input from the player-specific formspec gets handled
+minetest.register_on_player_receive_fields( replacer.form_input_handler );
+
+
+minetest.register_craft({
+ output = 'replacer:inspect',
+ recipe = {
+ { 'default:torch' },
+ { 'default:stick' },
+ }
+})
diff --git a/replacer/textures/replacer_inspect.png b/replacer/textures/replacer_inspect.png
new file mode 100644
index 0000000..ea47b56
--- /dev/null
+++ b/replacer/textures/replacer_inspect.png
Binary files differ
diff --git a/replacer/textures/replacer_replacer.png b/replacer/textures/replacer_replacer.png
new file mode 100644
index 0000000..0c5a4f8
--- /dev/null
+++ b/replacer/textures/replacer_replacer.png
Binary files differ
diff --git a/signs_lib/_font/hdf_20.png b/signs_lib/_font/hdf_20.png
new file mode 100644
index 0000000..465982d
--- /dev/null
+++ b/signs_lib/_font/hdf_20.png
Binary files differ
diff --git a/signs_lib/_font/hdf_21.png b/signs_lib/_font/hdf_21.png
new file mode 100644
index 0000000..01929d4
--- /dev/null
+++ b/signs_lib/_font/hdf_21.png
Binary files differ
diff --git a/signs_lib/_font/hdf_22.png b/signs_lib/_font/hdf_22.png
new file mode 100644
index 0000000..2acde25
--- /dev/null
+++ b/signs_lib/_font/hdf_22.png
Binary files differ
diff --git a/signs_lib/_font/hdf_23.png b/signs_lib/_font/hdf_23.png
new file mode 100644
index 0000000..ace1437
--- /dev/null
+++ b/signs_lib/_font/hdf_23.png
Binary files differ
diff --git a/signs_lib/_font/hdf_24.png b/signs_lib/_font/hdf_24.png
new file mode 100644
index 0000000..909b015
--- /dev/null
+++ b/signs_lib/_font/hdf_24.png
Binary files differ
diff --git a/signs_lib/_font/hdf_25.png b/signs_lib/_font/hdf_25.png
new file mode 100644
index 0000000..30a7829
--- /dev/null
+++ b/signs_lib/_font/hdf_25.png
Binary files differ
diff --git a/signs_lib/_font/hdf_26.png b/signs_lib/_font/hdf_26.png
new file mode 100644
index 0000000..d29936c
--- /dev/null
+++ b/signs_lib/_font/hdf_26.png
Binary files differ
diff --git a/signs_lib/_font/hdf_27.png b/signs_lib/_font/hdf_27.png
new file mode 100644
index 0000000..9844e92
--- /dev/null
+++ b/signs_lib/_font/hdf_27.png
Binary files differ
diff --git a/signs_lib/_font/hdf_28.png b/signs_lib/_font/hdf_28.png
new file mode 100644
index 0000000..4810d75
--- /dev/null
+++ b/signs_lib/_font/hdf_28.png
Binary files differ
diff --git a/signs_lib/_font/hdf_29.png b/signs_lib/_font/hdf_29.png
new file mode 100644
index 0000000..e5ff2b7
--- /dev/null
+++ b/signs_lib/_font/hdf_29.png
Binary files differ
diff --git a/signs_lib/_font/hdf_2a.png b/signs_lib/_font/hdf_2a.png
new file mode 100644
index 0000000..5408897
--- /dev/null
+++ b/signs_lib/_font/hdf_2a.png
Binary files differ
diff --git a/signs_lib/_font/hdf_2b.png b/signs_lib/_font/hdf_2b.png
new file mode 100644
index 0000000..9ad7d9e
--- /dev/null
+++ b/signs_lib/_font/hdf_2b.png
Binary files differ
diff --git a/signs_lib/_font/hdf_2c.png b/signs_lib/_font/hdf_2c.png
new file mode 100644
index 0000000..cb3eae0
--- /dev/null
+++ b/signs_lib/_font/hdf_2c.png
Binary files differ
diff --git a/signs_lib/_font/hdf_2d.png b/signs_lib/_font/hdf_2d.png
new file mode 100644
index 0000000..c252f37
--- /dev/null
+++ b/signs_lib/_font/hdf_2d.png
Binary files differ
diff --git a/signs_lib/_font/hdf_2e.png b/signs_lib/_font/hdf_2e.png
new file mode 100644
index 0000000..d3aab5b
--- /dev/null
+++ b/signs_lib/_font/hdf_2e.png
Binary files differ
diff --git a/signs_lib/_font/hdf_2f.png b/signs_lib/_font/hdf_2f.png
new file mode 100644
index 0000000..48c25f2
--- /dev/null
+++ b/signs_lib/_font/hdf_2f.png
Binary files differ
diff --git a/signs_lib/_font/hdf_30.png b/signs_lib/_font/hdf_30.png
new file mode 100644
index 0000000..56ec3e7
--- /dev/null
+++ b/signs_lib/_font/hdf_30.png
Binary files differ
diff --git a/signs_lib/_font/hdf_31.png b/signs_lib/_font/hdf_31.png
new file mode 100644
index 0000000..c526e86
--- /dev/null
+++ b/signs_lib/_font/hdf_31.png
Binary files differ
diff --git a/signs_lib/_font/hdf_32.png b/signs_lib/_font/hdf_32.png
new file mode 100644
index 0000000..339d933
--- /dev/null
+++ b/signs_lib/_font/hdf_32.png
Binary files differ
diff --git a/signs_lib/_font/hdf_33.png b/signs_lib/_font/hdf_33.png
new file mode 100644
index 0000000..aba5466
--- /dev/null
+++ b/signs_lib/_font/hdf_33.png
Binary files differ
diff --git a/signs_lib/_font/hdf_34.png b/signs_lib/_font/hdf_34.png
new file mode 100644
index 0000000..9e71d10
--- /dev/null
+++ b/signs_lib/_font/hdf_34.png
Binary files differ
diff --git a/signs_lib/_font/hdf_35.png b/signs_lib/_font/hdf_35.png
new file mode 100644
index 0000000..c12370f
--- /dev/null
+++ b/signs_lib/_font/hdf_35.png
Binary files differ
diff --git a/signs_lib/_font/hdf_36.png b/signs_lib/_font/hdf_36.png
new file mode 100644
index 0000000..bebb32a
--- /dev/null
+++ b/signs_lib/_font/hdf_36.png
Binary files differ
diff --git a/signs_lib/_font/hdf_37.png b/signs_lib/_font/hdf_37.png
new file mode 100644
index 0000000..73d9bb9
--- /dev/null
+++ b/signs_lib/_font/hdf_37.png
Binary files differ
diff --git a/signs_lib/_font/hdf_38.png b/signs_lib/_font/hdf_38.png
new file mode 100644
index 0000000..baf7f6f
--- /dev/null
+++ b/signs_lib/_font/hdf_38.png
Binary files differ
diff --git a/signs_lib/_font/hdf_39.png b/signs_lib/_font/hdf_39.png
new file mode 100644
index 0000000..9572947
--- /dev/null
+++ b/signs_lib/_font/hdf_39.png
Binary files differ
diff --git a/signs_lib/_font/hdf_3a.png b/signs_lib/_font/hdf_3a.png
new file mode 100644
index 0000000..23ba0cd
--- /dev/null
+++ b/signs_lib/_font/hdf_3a.png
Binary files differ
diff --git a/signs_lib/_font/hdf_3b.png b/signs_lib/_font/hdf_3b.png
new file mode 100644
index 0000000..c4b467f
--- /dev/null
+++ b/signs_lib/_font/hdf_3b.png
Binary files differ
diff --git a/signs_lib/_font/hdf_3c.png b/signs_lib/_font/hdf_3c.png
new file mode 100644
index 0000000..566ba49
--- /dev/null
+++ b/signs_lib/_font/hdf_3c.png
Binary files differ
diff --git a/signs_lib/_font/hdf_3d.png b/signs_lib/_font/hdf_3d.png
new file mode 100644
index 0000000..50e6c6f
--- /dev/null
+++ b/signs_lib/_font/hdf_3d.png
Binary files differ
diff --git a/signs_lib/_font/hdf_3e.png b/signs_lib/_font/hdf_3e.png
new file mode 100644
index 0000000..090f8ca
--- /dev/null
+++ b/signs_lib/_font/hdf_3e.png
Binary files differ
diff --git a/signs_lib/_font/hdf_3f.png b/signs_lib/_font/hdf_3f.png
new file mode 100644
index 0000000..dce4727
--- /dev/null
+++ b/signs_lib/_font/hdf_3f.png
Binary files differ
diff --git a/signs_lib/_font/hdf_40.png b/signs_lib/_font/hdf_40.png
new file mode 100644
index 0000000..65533fd
--- /dev/null
+++ b/signs_lib/_font/hdf_40.png
Binary files differ
diff --git a/signs_lib/_font/hdf_41.png b/signs_lib/_font/hdf_41.png
new file mode 100644
index 0000000..e30c27c
--- /dev/null
+++ b/signs_lib/_font/hdf_41.png
Binary files differ
diff --git a/signs_lib/_font/hdf_42.png b/signs_lib/_font/hdf_42.png
new file mode 100644
index 0000000..28d480b
--- /dev/null
+++ b/signs_lib/_font/hdf_42.png
Binary files differ
diff --git a/signs_lib/_font/hdf_43.png b/signs_lib/_font/hdf_43.png
new file mode 100644
index 0000000..db57d8d
--- /dev/null
+++ b/signs_lib/_font/hdf_43.png
Binary files differ
diff --git a/signs_lib/_font/hdf_44.png b/signs_lib/_font/hdf_44.png
new file mode 100644
index 0000000..cca9575
--- /dev/null
+++ b/signs_lib/_font/hdf_44.png
Binary files differ
diff --git a/signs_lib/_font/hdf_45.png b/signs_lib/_font/hdf_45.png
new file mode 100644
index 0000000..07e772b
--- /dev/null
+++ b/signs_lib/_font/hdf_45.png
Binary files differ
diff --git a/signs_lib/_font/hdf_46.png b/signs_lib/_font/hdf_46.png
new file mode 100644
index 0000000..24de187
--- /dev/null
+++ b/signs_lib/_font/hdf_46.png
Binary files differ
diff --git a/signs_lib/_font/hdf_47.png b/signs_lib/_font/hdf_47.png
new file mode 100644
index 0000000..0deef83
--- /dev/null
+++ b/signs_lib/_font/hdf_47.png
Binary files differ
diff --git a/signs_lib/_font/hdf_48.png b/signs_lib/_font/hdf_48.png
new file mode 100644
index 0000000..f85b4ae
--- /dev/null
+++ b/signs_lib/_font/hdf_48.png
Binary files differ
diff --git a/signs_lib/_font/hdf_49.png b/signs_lib/_font/hdf_49.png
new file mode 100644
index 0000000..1f02728
--- /dev/null
+++ b/signs_lib/_font/hdf_49.png
Binary files differ
diff --git a/signs_lib/_font/hdf_4a.png b/signs_lib/_font/hdf_4a.png
new file mode 100644
index 0000000..b2f7bef
--- /dev/null
+++ b/signs_lib/_font/hdf_4a.png
Binary files differ
diff --git a/signs_lib/_font/hdf_4b.png b/signs_lib/_font/hdf_4b.png
new file mode 100644
index 0000000..e8d52d6
--- /dev/null
+++ b/signs_lib/_font/hdf_4b.png
Binary files differ
diff --git a/signs_lib/_font/hdf_4c.png b/signs_lib/_font/hdf_4c.png
new file mode 100644
index 0000000..94d7d48
--- /dev/null
+++ b/signs_lib/_font/hdf_4c.png
Binary files differ
diff --git a/signs_lib/_font/hdf_4d.png b/signs_lib/_font/hdf_4d.png
new file mode 100644
index 0000000..0ee8eb4
--- /dev/null
+++ b/signs_lib/_font/hdf_4d.png
Binary files differ
diff --git a/signs_lib/_font/hdf_4e.png b/signs_lib/_font/hdf_4e.png
new file mode 100644
index 0000000..8ff83d6
--- /dev/null
+++ b/signs_lib/_font/hdf_4e.png
Binary files differ
diff --git a/signs_lib/_font/hdf_4f.png b/signs_lib/_font/hdf_4f.png
new file mode 100644
index 0000000..b278ccc
--- /dev/null
+++ b/signs_lib/_font/hdf_4f.png
Binary files differ
diff --git a/signs_lib/_font/hdf_50.png b/signs_lib/_font/hdf_50.png
new file mode 100644
index 0000000..33b52fd
--- /dev/null
+++ b/signs_lib/_font/hdf_50.png
Binary files differ
diff --git a/signs_lib/_font/hdf_51.png b/signs_lib/_font/hdf_51.png
new file mode 100644
index 0000000..892747c
--- /dev/null
+++ b/signs_lib/_font/hdf_51.png
Binary files differ
diff --git a/signs_lib/_font/hdf_52.png b/signs_lib/_font/hdf_52.png
new file mode 100644
index 0000000..acb395e
--- /dev/null
+++ b/signs_lib/_font/hdf_52.png
Binary files differ
diff --git a/signs_lib/_font/hdf_53.png b/signs_lib/_font/hdf_53.png
new file mode 100644
index 0000000..028f284
--- /dev/null
+++ b/signs_lib/_font/hdf_53.png
Binary files differ
diff --git a/signs_lib/_font/hdf_54.png b/signs_lib/_font/hdf_54.png
new file mode 100644
index 0000000..3bd0a2b
--- /dev/null
+++ b/signs_lib/_font/hdf_54.png
Binary files differ
diff --git a/signs_lib/_font/hdf_55.png b/signs_lib/_font/hdf_55.png
new file mode 100644
index 0000000..81643f9
--- /dev/null
+++ b/signs_lib/_font/hdf_55.png
Binary files differ
diff --git a/signs_lib/_font/hdf_56.png b/signs_lib/_font/hdf_56.png
new file mode 100644
index 0000000..8726f5b
--- /dev/null
+++ b/signs_lib/_font/hdf_56.png
Binary files differ
diff --git a/signs_lib/_font/hdf_57.png b/signs_lib/_font/hdf_57.png
new file mode 100644
index 0000000..5e8d9d0
--- /dev/null
+++ b/signs_lib/_font/hdf_57.png
Binary files differ
diff --git a/signs_lib/_font/hdf_58.png b/signs_lib/_font/hdf_58.png
new file mode 100644
index 0000000..2abbda3
--- /dev/null
+++ b/signs_lib/_font/hdf_58.png
Binary files differ
diff --git a/signs_lib/_font/hdf_59.png b/signs_lib/_font/hdf_59.png
new file mode 100644
index 0000000..ff45093
--- /dev/null
+++ b/signs_lib/_font/hdf_59.png
Binary files differ
diff --git a/signs_lib/_font/hdf_5a.png b/signs_lib/_font/hdf_5a.png
new file mode 100644
index 0000000..5c706ce
--- /dev/null
+++ b/signs_lib/_font/hdf_5a.png
Binary files differ
diff --git a/signs_lib/_font/hdf_5b.png b/signs_lib/_font/hdf_5b.png
new file mode 100644
index 0000000..2592f1f
--- /dev/null
+++ b/signs_lib/_font/hdf_5b.png
Binary files differ
diff --git a/signs_lib/_font/hdf_5c.png b/signs_lib/_font/hdf_5c.png
new file mode 100644
index 0000000..406d634
--- /dev/null
+++ b/signs_lib/_font/hdf_5c.png
Binary files differ
diff --git a/signs_lib/_font/hdf_5d.png b/signs_lib/_font/hdf_5d.png
new file mode 100644
index 0000000..a5efa37
--- /dev/null
+++ b/signs_lib/_font/hdf_5d.png
Binary files differ
diff --git a/signs_lib/_font/hdf_5e.png b/signs_lib/_font/hdf_5e.png
new file mode 100644
index 0000000..7f610d8
--- /dev/null
+++ b/signs_lib/_font/hdf_5e.png
Binary files differ
diff --git a/signs_lib/_font/hdf_5f.png b/signs_lib/_font/hdf_5f.png
new file mode 100644
index 0000000..07cce5a
--- /dev/null
+++ b/signs_lib/_font/hdf_5f.png
Binary files differ
diff --git a/signs_lib/_font/hdf_60.png b/signs_lib/_font/hdf_60.png
new file mode 100644
index 0000000..cd4e0fb
--- /dev/null
+++ b/signs_lib/_font/hdf_60.png
Binary files differ
diff --git a/signs_lib/_font/hdf_61.png b/signs_lib/_font/hdf_61.png
new file mode 100644
index 0000000..dc019ba
--- /dev/null
+++ b/signs_lib/_font/hdf_61.png
Binary files differ
diff --git a/signs_lib/_font/hdf_62.png b/signs_lib/_font/hdf_62.png
new file mode 100644
index 0000000..285d0b2
--- /dev/null
+++ b/signs_lib/_font/hdf_62.png
Binary files differ
diff --git a/signs_lib/_font/hdf_63.png b/signs_lib/_font/hdf_63.png
new file mode 100644
index 0000000..8781b8a
--- /dev/null
+++ b/signs_lib/_font/hdf_63.png
Binary files differ
diff --git a/signs_lib/_font/hdf_64.png b/signs_lib/_font/hdf_64.png
new file mode 100644
index 0000000..16c9a28
--- /dev/null
+++ b/signs_lib/_font/hdf_64.png
Binary files differ
diff --git a/signs_lib/_font/hdf_65.png b/signs_lib/_font/hdf_65.png
new file mode 100644
index 0000000..810d9c9
--- /dev/null
+++ b/signs_lib/_font/hdf_65.png
Binary files differ
diff --git a/signs_lib/_font/hdf_66.png b/signs_lib/_font/hdf_66.png
new file mode 100644
index 0000000..411ca57
--- /dev/null
+++ b/signs_lib/_font/hdf_66.png
Binary files differ
diff --git a/signs_lib/_font/hdf_67.png b/signs_lib/_font/hdf_67.png
new file mode 100644
index 0000000..d8820dd
--- /dev/null
+++ b/signs_lib/_font/hdf_67.png
Binary files differ
diff --git a/signs_lib/_font/hdf_68.png b/signs_lib/_font/hdf_68.png
new file mode 100644
index 0000000..5b51d05
--- /dev/null
+++ b/signs_lib/_font/hdf_68.png
Binary files differ
diff --git a/signs_lib/_font/hdf_69.png b/signs_lib/_font/hdf_69.png
new file mode 100644
index 0000000..55f1a22
--- /dev/null
+++ b/signs_lib/_font/hdf_69.png
Binary files differ
diff --git a/signs_lib/_font/hdf_6a.png b/signs_lib/_font/hdf_6a.png
new file mode 100644
index 0000000..c20e222
--- /dev/null
+++ b/signs_lib/_font/hdf_6a.png
Binary files differ
diff --git a/signs_lib/_font/hdf_6b.png b/signs_lib/_font/hdf_6b.png
new file mode 100644
index 0000000..fc34fc5
--- /dev/null
+++ b/signs_lib/_font/hdf_6b.png
Binary files differ
diff --git a/signs_lib/_font/hdf_6c.png b/signs_lib/_font/hdf_6c.png
new file mode 100644
index 0000000..1f02728
--- /dev/null
+++ b/signs_lib/_font/hdf_6c.png
Binary files differ
diff --git a/signs_lib/_font/hdf_6d.png b/signs_lib/_font/hdf_6d.png
new file mode 100644
index 0000000..6c0ae93
--- /dev/null
+++ b/signs_lib/_font/hdf_6d.png
Binary files differ
diff --git a/signs_lib/_font/hdf_6e.png b/signs_lib/_font/hdf_6e.png
new file mode 100644
index 0000000..4f4dec7
--- /dev/null
+++ b/signs_lib/_font/hdf_6e.png
Binary files differ
diff --git a/signs_lib/_font/hdf_6f.png b/signs_lib/_font/hdf_6f.png
new file mode 100644
index 0000000..921c611
--- /dev/null
+++ b/signs_lib/_font/hdf_6f.png
Binary files differ
diff --git a/signs_lib/_font/hdf_70.png b/signs_lib/_font/hdf_70.png
new file mode 100644
index 0000000..8202199
--- /dev/null
+++ b/signs_lib/_font/hdf_70.png
Binary files differ
diff --git a/signs_lib/_font/hdf_71.png b/signs_lib/_font/hdf_71.png
new file mode 100644
index 0000000..c02171f
--- /dev/null
+++ b/signs_lib/_font/hdf_71.png
Binary files differ
diff --git a/signs_lib/_font/hdf_72.png b/signs_lib/_font/hdf_72.png
new file mode 100644
index 0000000..757b9c8
--- /dev/null
+++ b/signs_lib/_font/hdf_72.png
Binary files differ
diff --git a/signs_lib/_font/hdf_73.png b/signs_lib/_font/hdf_73.png
new file mode 100644
index 0000000..e38497d
--- /dev/null
+++ b/signs_lib/_font/hdf_73.png
Binary files differ
diff --git a/signs_lib/_font/hdf_74.png b/signs_lib/_font/hdf_74.png
new file mode 100644
index 0000000..10f9cfa
--- /dev/null
+++ b/signs_lib/_font/hdf_74.png
Binary files differ
diff --git a/signs_lib/_font/hdf_75.png b/signs_lib/_font/hdf_75.png
new file mode 100644
index 0000000..377416b
--- /dev/null
+++ b/signs_lib/_font/hdf_75.png
Binary files differ
diff --git a/signs_lib/_font/hdf_76.png b/signs_lib/_font/hdf_76.png
new file mode 100644
index 0000000..dc558d3
--- /dev/null
+++ b/signs_lib/_font/hdf_76.png
Binary files differ
diff --git a/signs_lib/_font/hdf_77.png b/signs_lib/_font/hdf_77.png
new file mode 100644
index 0000000..6a14298
--- /dev/null
+++ b/signs_lib/_font/hdf_77.png
Binary files differ
diff --git a/signs_lib/_font/hdf_78.png b/signs_lib/_font/hdf_78.png
new file mode 100644
index 0000000..38b4be0
--- /dev/null
+++ b/signs_lib/_font/hdf_78.png
Binary files differ
diff --git a/signs_lib/_font/hdf_79.png b/signs_lib/_font/hdf_79.png
new file mode 100644
index 0000000..8859fb4
--- /dev/null
+++ b/signs_lib/_font/hdf_79.png
Binary files differ
diff --git a/signs_lib/_font/hdf_7a.png b/signs_lib/_font/hdf_7a.png
new file mode 100644
index 0000000..c42c84a
--- /dev/null
+++ b/signs_lib/_font/hdf_7a.png
Binary files differ
diff --git a/signs_lib/_font/hdf_7b.png b/signs_lib/_font/hdf_7b.png
new file mode 100644
index 0000000..c0ee072
--- /dev/null
+++ b/signs_lib/_font/hdf_7b.png
Binary files differ
diff --git a/signs_lib/_font/hdf_7c.png b/signs_lib/_font/hdf_7c.png
new file mode 100644
index 0000000..6e9949d
--- /dev/null
+++ b/signs_lib/_font/hdf_7c.png
Binary files differ
diff --git a/signs_lib/_font/hdf_7d.png b/signs_lib/_font/hdf_7d.png
new file mode 100644
index 0000000..6162caa
--- /dev/null
+++ b/signs_lib/_font/hdf_7d.png
Binary files differ
diff --git a/signs_lib/_font/hdf_7e.png b/signs_lib/_font/hdf_7e.png
new file mode 100644
index 0000000..ec762d5
--- /dev/null
+++ b/signs_lib/_font/hdf_7e.png
Binary files differ
diff --git a/signs_lib/_font/slc_0.png b/signs_lib/_font/slc_0.png
new file mode 100644
index 0000000..51a185a
--- /dev/null
+++ b/signs_lib/_font/slc_0.png
Binary files differ
diff --git a/signs_lib/_font/slc_1.png b/signs_lib/_font/slc_1.png
new file mode 100644
index 0000000..19abd17
--- /dev/null
+++ b/signs_lib/_font/slc_1.png
Binary files differ
diff --git a/signs_lib/_font/slc_2.png b/signs_lib/_font/slc_2.png
new file mode 100644
index 0000000..eaed359
--- /dev/null
+++ b/signs_lib/_font/slc_2.png
Binary files differ
diff --git a/signs_lib/_font/slc_3.png b/signs_lib/_font/slc_3.png
new file mode 100644
index 0000000..62bee4b
--- /dev/null
+++ b/signs_lib/_font/slc_3.png
Binary files differ
diff --git a/signs_lib/_font/slc_4.png b/signs_lib/_font/slc_4.png
new file mode 100644
index 0000000..22250a4
--- /dev/null
+++ b/signs_lib/_font/slc_4.png
Binary files differ
diff --git a/signs_lib/_font/slc_5.png b/signs_lib/_font/slc_5.png
new file mode 100644
index 0000000..b227c84
--- /dev/null
+++ b/signs_lib/_font/slc_5.png
Binary files differ
diff --git a/signs_lib/_font/slc_6.png b/signs_lib/_font/slc_6.png
new file mode 100644
index 0000000..359d52c
--- /dev/null
+++ b/signs_lib/_font/slc_6.png
Binary files differ
diff --git a/signs_lib/_font/slc_7.png b/signs_lib/_font/slc_7.png
new file mode 100644
index 0000000..115b246
--- /dev/null
+++ b/signs_lib/_font/slc_7.png
Binary files differ
diff --git a/signs_lib/_font/slc_8.png b/signs_lib/_font/slc_8.png
new file mode 100644
index 0000000..bad5177
--- /dev/null
+++ b/signs_lib/_font/slc_8.png
Binary files differ
diff --git a/signs_lib/_font/slc_9.png b/signs_lib/_font/slc_9.png
new file mode 100644
index 0000000..69d41e4
--- /dev/null
+++ b/signs_lib/_font/slc_9.png
Binary files differ
diff --git a/signs_lib/_font/slc_A.png b/signs_lib/_font/slc_A.png
new file mode 100644
index 0000000..3ff5d7e
--- /dev/null
+++ b/signs_lib/_font/slc_A.png
Binary files differ
diff --git a/signs_lib/_font/slc_B.png b/signs_lib/_font/slc_B.png
new file mode 100644
index 0000000..5ee2f1d
--- /dev/null
+++ b/signs_lib/_font/slc_B.png
Binary files differ
diff --git a/signs_lib/_font/slc_C.png b/signs_lib/_font/slc_C.png
new file mode 100644
index 0000000..bd59f28
--- /dev/null
+++ b/signs_lib/_font/slc_C.png
Binary files differ
diff --git a/signs_lib/_font/slc_D.png b/signs_lib/_font/slc_D.png
new file mode 100644
index 0000000..66ac755
--- /dev/null
+++ b/signs_lib/_font/slc_D.png
Binary files differ
diff --git a/signs_lib/_font/slc_E.png b/signs_lib/_font/slc_E.png
new file mode 100644
index 0000000..0e2363c
--- /dev/null
+++ b/signs_lib/_font/slc_E.png
Binary files differ
diff --git a/signs_lib/_font/slc_F.png b/signs_lib/_font/slc_F.png
new file mode 100644
index 0000000..edcd74a
--- /dev/null
+++ b/signs_lib/_font/slc_F.png
Binary files differ
diff --git a/signs_lib/_font/slc_n.png b/signs_lib/_font/slc_n.png
new file mode 100644
index 0000000..733a43a
--- /dev/null
+++ b/signs_lib/_font/slc_n.png
Binary files differ
diff --git a/signs_lib/copyright.txt b/signs_lib/copyright.txt
new file mode 100644
index 0000000..68fa549
--- /dev/null
+++ b/signs_lib/copyright.txt
@@ -0,0 +1,8 @@
+Most code and all textures by Vanessa Ezekowitz.
+
+Some code copied and modified from the game's default mods (especially
+doors) and ironzorg's flowers mod.
+
+Licenses:
+* For the lua code, BSD.
+* For all images and everything else, WTFPL.
diff --git a/signs_lib/depends.txt b/signs_lib/depends.txt
new file mode 100644
index 0000000..abb8bd5
--- /dev/null
+++ b/signs_lib/depends.txt
@@ -0,0 +1,4 @@
+default
+intllib?
+screwdriver?
+keyword_interact?
diff --git a/signs_lib/extra_fonts/10px/hdf_20.png b/signs_lib/extra_fonts/10px/hdf_20.png
new file mode 100644
index 0000000..b904af9
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_20.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_21.png b/signs_lib/extra_fonts/10px/hdf_21.png
new file mode 100644
index 0000000..d7ec314
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_21.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_22.png b/signs_lib/extra_fonts/10px/hdf_22.png
new file mode 100644
index 0000000..452cba5
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_22.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_23.png b/signs_lib/extra_fonts/10px/hdf_23.png
new file mode 100644
index 0000000..5f6d8bd
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_23.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_24.png b/signs_lib/extra_fonts/10px/hdf_24.png
new file mode 100644
index 0000000..d994e14
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_24.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_25.png b/signs_lib/extra_fonts/10px/hdf_25.png
new file mode 100644
index 0000000..8136f8a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_25.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_26.png b/signs_lib/extra_fonts/10px/hdf_26.png
new file mode 100644
index 0000000..50c8e75
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_26.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_27.png b/signs_lib/extra_fonts/10px/hdf_27.png
new file mode 100644
index 0000000..79a02b7
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_27.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_28.png b/signs_lib/extra_fonts/10px/hdf_28.png
new file mode 100644
index 0000000..db5a30c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_28.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_29.png b/signs_lib/extra_fonts/10px/hdf_29.png
new file mode 100644
index 0000000..4c781af
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_29.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_2a.png b/signs_lib/extra_fonts/10px/hdf_2a.png
new file mode 100644
index 0000000..bb1eae9
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_2a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_2b.png b/signs_lib/extra_fonts/10px/hdf_2b.png
new file mode 100644
index 0000000..4269e56
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_2b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_2c.png b/signs_lib/extra_fonts/10px/hdf_2c.png
new file mode 100644
index 0000000..955d975
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_2c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_2d.png b/signs_lib/extra_fonts/10px/hdf_2d.png
new file mode 100644
index 0000000..5a8899b
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_2d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_2e.png b/signs_lib/extra_fonts/10px/hdf_2e.png
new file mode 100644
index 0000000..feb3140
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_2e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_2f.png b/signs_lib/extra_fonts/10px/hdf_2f.png
new file mode 100644
index 0000000..e92eac6
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_2f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_30.png b/signs_lib/extra_fonts/10px/hdf_30.png
new file mode 100644
index 0000000..1519018
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_30.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_31.png b/signs_lib/extra_fonts/10px/hdf_31.png
new file mode 100644
index 0000000..09f0f1a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_31.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_32.png b/signs_lib/extra_fonts/10px/hdf_32.png
new file mode 100644
index 0000000..fb11456
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_32.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_33.png b/signs_lib/extra_fonts/10px/hdf_33.png
new file mode 100644
index 0000000..04921f7
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_33.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_34.png b/signs_lib/extra_fonts/10px/hdf_34.png
new file mode 100644
index 0000000..b927f08
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_34.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_35.png b/signs_lib/extra_fonts/10px/hdf_35.png
new file mode 100644
index 0000000..fbe7265
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_35.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_36.png b/signs_lib/extra_fonts/10px/hdf_36.png
new file mode 100644
index 0000000..56d7b58
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_36.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_37.png b/signs_lib/extra_fonts/10px/hdf_37.png
new file mode 100644
index 0000000..05c1793
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_37.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_38.png b/signs_lib/extra_fonts/10px/hdf_38.png
new file mode 100644
index 0000000..e8a9658
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_38.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_39.png b/signs_lib/extra_fonts/10px/hdf_39.png
new file mode 100644
index 0000000..1e33ac3
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_39.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_3a.png b/signs_lib/extra_fonts/10px/hdf_3a.png
new file mode 100644
index 0000000..ab2a3ce
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_3a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_3b.png b/signs_lib/extra_fonts/10px/hdf_3b.png
new file mode 100644
index 0000000..2ecbcd5
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_3b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_3c.png b/signs_lib/extra_fonts/10px/hdf_3c.png
new file mode 100644
index 0000000..c3712d4
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_3c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_3d.png b/signs_lib/extra_fonts/10px/hdf_3d.png
new file mode 100644
index 0000000..a7fa62c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_3d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_3e.png b/signs_lib/extra_fonts/10px/hdf_3e.png
new file mode 100644
index 0000000..828bb4a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_3e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_3f.png b/signs_lib/extra_fonts/10px/hdf_3f.png
new file mode 100644
index 0000000..9ec78af
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_3f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_40.png b/signs_lib/extra_fonts/10px/hdf_40.png
new file mode 100644
index 0000000..86e81a9
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_40.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_41.png b/signs_lib/extra_fonts/10px/hdf_41.png
new file mode 100644
index 0000000..79b1fa1
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_41.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_42.png b/signs_lib/extra_fonts/10px/hdf_42.png
new file mode 100644
index 0000000..28fdadc
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_42.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_43.png b/signs_lib/extra_fonts/10px/hdf_43.png
new file mode 100644
index 0000000..6dd5b4b
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_43.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_44.png b/signs_lib/extra_fonts/10px/hdf_44.png
new file mode 100644
index 0000000..d0707c6
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_44.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_45.png b/signs_lib/extra_fonts/10px/hdf_45.png
new file mode 100644
index 0000000..e9930a1
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_45.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_46.png b/signs_lib/extra_fonts/10px/hdf_46.png
new file mode 100644
index 0000000..6fb8f1f
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_46.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_47.png b/signs_lib/extra_fonts/10px/hdf_47.png
new file mode 100644
index 0000000..f54783d
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_47.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_48.png b/signs_lib/extra_fonts/10px/hdf_48.png
new file mode 100644
index 0000000..1fc082d
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_48.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_49.png b/signs_lib/extra_fonts/10px/hdf_49.png
new file mode 100644
index 0000000..af588ee
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_49.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_4a.png b/signs_lib/extra_fonts/10px/hdf_4a.png
new file mode 100644
index 0000000..9135cca
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_4a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_4b.png b/signs_lib/extra_fonts/10px/hdf_4b.png
new file mode 100644
index 0000000..7831019
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_4b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_4c.png b/signs_lib/extra_fonts/10px/hdf_4c.png
new file mode 100644
index 0000000..d717030
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_4c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_4d.png b/signs_lib/extra_fonts/10px/hdf_4d.png
new file mode 100644
index 0000000..92fe7d4
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_4d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_4e.png b/signs_lib/extra_fonts/10px/hdf_4e.png
new file mode 100644
index 0000000..cd3a3dd
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_4e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_4f.png b/signs_lib/extra_fonts/10px/hdf_4f.png
new file mode 100644
index 0000000..b73b4d4
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_4f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_50.png b/signs_lib/extra_fonts/10px/hdf_50.png
new file mode 100644
index 0000000..6647606
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_50.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_51.png b/signs_lib/extra_fonts/10px/hdf_51.png
new file mode 100644
index 0000000..c45c64a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_51.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_52.png b/signs_lib/extra_fonts/10px/hdf_52.png
new file mode 100644
index 0000000..78efd10
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_52.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_53.png b/signs_lib/extra_fonts/10px/hdf_53.png
new file mode 100644
index 0000000..e576219
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_53.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_54.png b/signs_lib/extra_fonts/10px/hdf_54.png
new file mode 100644
index 0000000..17b556a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_54.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_55.png b/signs_lib/extra_fonts/10px/hdf_55.png
new file mode 100644
index 0000000..60d9008
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_55.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_56.png b/signs_lib/extra_fonts/10px/hdf_56.png
new file mode 100644
index 0000000..a21378e
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_56.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_57.png b/signs_lib/extra_fonts/10px/hdf_57.png
new file mode 100644
index 0000000..92dedf7
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_57.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_58.png b/signs_lib/extra_fonts/10px/hdf_58.png
new file mode 100644
index 0000000..bce83e3
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_58.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_59.png b/signs_lib/extra_fonts/10px/hdf_59.png
new file mode 100644
index 0000000..248964d
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_59.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_5a.png b/signs_lib/extra_fonts/10px/hdf_5a.png
new file mode 100644
index 0000000..b4183f3
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_5a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_5b.png b/signs_lib/extra_fonts/10px/hdf_5b.png
new file mode 100644
index 0000000..7161fd1
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_5b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_5c.png b/signs_lib/extra_fonts/10px/hdf_5c.png
new file mode 100644
index 0000000..6ff667c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_5c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_5d.png b/signs_lib/extra_fonts/10px/hdf_5d.png
new file mode 100644
index 0000000..58aa3b4
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_5d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_5e.png b/signs_lib/extra_fonts/10px/hdf_5e.png
new file mode 100644
index 0000000..f0b0f07
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_5e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_5f.png b/signs_lib/extra_fonts/10px/hdf_5f.png
new file mode 100644
index 0000000..4765738
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_5f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_60.png b/signs_lib/extra_fonts/10px/hdf_60.png
new file mode 100644
index 0000000..b9d7ef1
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_60.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_61.png b/signs_lib/extra_fonts/10px/hdf_61.png
new file mode 100644
index 0000000..4200cf8
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_61.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_62.png b/signs_lib/extra_fonts/10px/hdf_62.png
new file mode 100644
index 0000000..3665a5e
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_62.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_63.png b/signs_lib/extra_fonts/10px/hdf_63.png
new file mode 100644
index 0000000..d80bfd7
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_63.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_64.png b/signs_lib/extra_fonts/10px/hdf_64.png
new file mode 100644
index 0000000..4194720
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_64.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_65.png b/signs_lib/extra_fonts/10px/hdf_65.png
new file mode 100644
index 0000000..8a02a46
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_65.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_66.png b/signs_lib/extra_fonts/10px/hdf_66.png
new file mode 100644
index 0000000..20ddc9b
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_66.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_67.png b/signs_lib/extra_fonts/10px/hdf_67.png
new file mode 100644
index 0000000..9cd21cc
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_67.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_68.png b/signs_lib/extra_fonts/10px/hdf_68.png
new file mode 100644
index 0000000..be34c84
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_68.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_69.png b/signs_lib/extra_fonts/10px/hdf_69.png
new file mode 100644
index 0000000..b82d55c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_69.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_6a.png b/signs_lib/extra_fonts/10px/hdf_6a.png
new file mode 100644
index 0000000..82d7431
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_6a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_6b.png b/signs_lib/extra_fonts/10px/hdf_6b.png
new file mode 100644
index 0000000..28a0738
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_6b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_6c.png b/signs_lib/extra_fonts/10px/hdf_6c.png
new file mode 100644
index 0000000..af588ee
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_6c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_6d.png b/signs_lib/extra_fonts/10px/hdf_6d.png
new file mode 100644
index 0000000..f2a0f3d
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_6d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_6e.png b/signs_lib/extra_fonts/10px/hdf_6e.png
new file mode 100644
index 0000000..722d89c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_6e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_6f.png b/signs_lib/extra_fonts/10px/hdf_6f.png
new file mode 100644
index 0000000..e9e6998
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_6f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_70.png b/signs_lib/extra_fonts/10px/hdf_70.png
new file mode 100644
index 0000000..99b949c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_70.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_71.png b/signs_lib/extra_fonts/10px/hdf_71.png
new file mode 100644
index 0000000..90076fc
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_71.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_72.png b/signs_lib/extra_fonts/10px/hdf_72.png
new file mode 100644
index 0000000..10a56c2
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_72.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_73.png b/signs_lib/extra_fonts/10px/hdf_73.png
new file mode 100644
index 0000000..9bb1bde
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_73.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_74.png b/signs_lib/extra_fonts/10px/hdf_74.png
new file mode 100644
index 0000000..734c6d4
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_74.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_75.png b/signs_lib/extra_fonts/10px/hdf_75.png
new file mode 100644
index 0000000..ef854b6
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_75.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_76.png b/signs_lib/extra_fonts/10px/hdf_76.png
new file mode 100644
index 0000000..6c11b75
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_76.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_77.png b/signs_lib/extra_fonts/10px/hdf_77.png
new file mode 100644
index 0000000..a4be8af
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_77.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_78.png b/signs_lib/extra_fonts/10px/hdf_78.png
new file mode 100644
index 0000000..74dfaab
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_78.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_79.png b/signs_lib/extra_fonts/10px/hdf_79.png
new file mode 100644
index 0000000..26839bf
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_79.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_7a.png b/signs_lib/extra_fonts/10px/hdf_7a.png
new file mode 100644
index 0000000..630c9ba
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_7a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_7b.png b/signs_lib/extra_fonts/10px/hdf_7b.png
new file mode 100644
index 0000000..578ba74
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_7b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_7c.png b/signs_lib/extra_fonts/10px/hdf_7c.png
new file mode 100644
index 0000000..80baa63
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_7c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_7d.png b/signs_lib/extra_fonts/10px/hdf_7d.png
new file mode 100644
index 0000000..f3d6c1c
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_7d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/hdf_7e.png b/signs_lib/extra_fonts/10px/hdf_7e.png
new file mode 100644
index 0000000..2c22355
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/hdf_7e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_0.png b/signs_lib/extra_fonts/10px/slc_0.png
new file mode 100644
index 0000000..6c3189b
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_0.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_1.png b/signs_lib/extra_fonts/10px/slc_1.png
new file mode 100644
index 0000000..dcb8bee
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_1.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_2.png b/signs_lib/extra_fonts/10px/slc_2.png
new file mode 100644
index 0000000..4104345
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_2.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_3.png b/signs_lib/extra_fonts/10px/slc_3.png
new file mode 100644
index 0000000..c89cdd9
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_3.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_4.png b/signs_lib/extra_fonts/10px/slc_4.png
new file mode 100644
index 0000000..f4fe111
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_4.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_5.png b/signs_lib/extra_fonts/10px/slc_5.png
new file mode 100644
index 0000000..9cd2110
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_5.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_6.png b/signs_lib/extra_fonts/10px/slc_6.png
new file mode 100644
index 0000000..7ec19d8
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_6.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_7.png b/signs_lib/extra_fonts/10px/slc_7.png
new file mode 100644
index 0000000..a72066b
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_7.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_8.png b/signs_lib/extra_fonts/10px/slc_8.png
new file mode 100644
index 0000000..d437f3a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_8.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_9.png b/signs_lib/extra_fonts/10px/slc_9.png
new file mode 100644
index 0000000..12e2096
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_9.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_A.png b/signs_lib/extra_fonts/10px/slc_A.png
new file mode 100644
index 0000000..fb1e652
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_A.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_B.png b/signs_lib/extra_fonts/10px/slc_B.png
new file mode 100644
index 0000000..914d5dd
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_B.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_C.png b/signs_lib/extra_fonts/10px/slc_C.png
new file mode 100644
index 0000000..0b0ee4a
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_C.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_D.png b/signs_lib/extra_fonts/10px/slc_D.png
new file mode 100644
index 0000000..6efe937
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_D.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_E.png b/signs_lib/extra_fonts/10px/slc_E.png
new file mode 100644
index 0000000..7f1c271
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_E.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_F.png b/signs_lib/extra_fonts/10px/slc_F.png
new file mode 100644
index 0000000..c50caa3
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_F.png
Binary files differ
diff --git a/signs_lib/extra_fonts/10px/slc_n.png b/signs_lib/extra_fonts/10px/slc_n.png
new file mode 100644
index 0000000..5f97c4d
--- /dev/null
+++ b/signs_lib/extra_fonts/10px/slc_n.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_20.png b/signs_lib/extra_fonts/15px/hdf_20.png
new file mode 100644
index 0000000..465982d
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_20.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_21.png b/signs_lib/extra_fonts/15px/hdf_21.png
new file mode 100644
index 0000000..01929d4
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_21.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_22.png b/signs_lib/extra_fonts/15px/hdf_22.png
new file mode 100644
index 0000000..2acde25
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_22.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_23.png b/signs_lib/extra_fonts/15px/hdf_23.png
new file mode 100644
index 0000000..ace1437
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_23.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_24.png b/signs_lib/extra_fonts/15px/hdf_24.png
new file mode 100644
index 0000000..909b015
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_24.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_25.png b/signs_lib/extra_fonts/15px/hdf_25.png
new file mode 100644
index 0000000..30a7829
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_25.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_26.png b/signs_lib/extra_fonts/15px/hdf_26.png
new file mode 100644
index 0000000..d29936c
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_26.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_27.png b/signs_lib/extra_fonts/15px/hdf_27.png
new file mode 100644
index 0000000..9844e92
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_27.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_28.png b/signs_lib/extra_fonts/15px/hdf_28.png
new file mode 100644
index 0000000..4810d75
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_28.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_29.png b/signs_lib/extra_fonts/15px/hdf_29.png
new file mode 100644
index 0000000..e5ff2b7
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_29.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_2a.png b/signs_lib/extra_fonts/15px/hdf_2a.png
new file mode 100644
index 0000000..5408897
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_2a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_2b.png b/signs_lib/extra_fonts/15px/hdf_2b.png
new file mode 100644
index 0000000..9ad7d9e
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_2b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_2c.png b/signs_lib/extra_fonts/15px/hdf_2c.png
new file mode 100644
index 0000000..cb3eae0
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_2c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_2d.png b/signs_lib/extra_fonts/15px/hdf_2d.png
new file mode 100644
index 0000000..c252f37
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_2d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_2e.png b/signs_lib/extra_fonts/15px/hdf_2e.png
new file mode 100644
index 0000000..d3aab5b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_2e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_2f.png b/signs_lib/extra_fonts/15px/hdf_2f.png
new file mode 100644
index 0000000..48c25f2
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_2f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_30.png b/signs_lib/extra_fonts/15px/hdf_30.png
new file mode 100644
index 0000000..56ec3e7
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_30.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_31.png b/signs_lib/extra_fonts/15px/hdf_31.png
new file mode 100644
index 0000000..c526e86
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_31.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_32.png b/signs_lib/extra_fonts/15px/hdf_32.png
new file mode 100644
index 0000000..339d933
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_32.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_33.png b/signs_lib/extra_fonts/15px/hdf_33.png
new file mode 100644
index 0000000..aba5466
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_33.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_34.png b/signs_lib/extra_fonts/15px/hdf_34.png
new file mode 100644
index 0000000..9e71d10
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_34.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_35.png b/signs_lib/extra_fonts/15px/hdf_35.png
new file mode 100644
index 0000000..c12370f
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_35.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_36.png b/signs_lib/extra_fonts/15px/hdf_36.png
new file mode 100644
index 0000000..bebb32a
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_36.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_37.png b/signs_lib/extra_fonts/15px/hdf_37.png
new file mode 100644
index 0000000..73d9bb9
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_37.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_38.png b/signs_lib/extra_fonts/15px/hdf_38.png
new file mode 100644
index 0000000..baf7f6f
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_38.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_39.png b/signs_lib/extra_fonts/15px/hdf_39.png
new file mode 100644
index 0000000..9572947
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_39.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_3a.png b/signs_lib/extra_fonts/15px/hdf_3a.png
new file mode 100644
index 0000000..23ba0cd
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_3a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_3b.png b/signs_lib/extra_fonts/15px/hdf_3b.png
new file mode 100644
index 0000000..c4b467f
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_3b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_3c.png b/signs_lib/extra_fonts/15px/hdf_3c.png
new file mode 100644
index 0000000..566ba49
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_3c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_3d.png b/signs_lib/extra_fonts/15px/hdf_3d.png
new file mode 100644
index 0000000..50e6c6f
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_3d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_3e.png b/signs_lib/extra_fonts/15px/hdf_3e.png
new file mode 100644
index 0000000..090f8ca
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_3e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_3f.png b/signs_lib/extra_fonts/15px/hdf_3f.png
new file mode 100644
index 0000000..dce4727
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_3f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_40.png b/signs_lib/extra_fonts/15px/hdf_40.png
new file mode 100644
index 0000000..65533fd
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_40.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_41.png b/signs_lib/extra_fonts/15px/hdf_41.png
new file mode 100644
index 0000000..e30c27c
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_41.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_42.png b/signs_lib/extra_fonts/15px/hdf_42.png
new file mode 100644
index 0000000..28d480b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_42.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_43.png b/signs_lib/extra_fonts/15px/hdf_43.png
new file mode 100644
index 0000000..db57d8d
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_43.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_44.png b/signs_lib/extra_fonts/15px/hdf_44.png
new file mode 100644
index 0000000..cca9575
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_44.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_45.png b/signs_lib/extra_fonts/15px/hdf_45.png
new file mode 100644
index 0000000..07e772b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_45.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_46.png b/signs_lib/extra_fonts/15px/hdf_46.png
new file mode 100644
index 0000000..24de187
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_46.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_47.png b/signs_lib/extra_fonts/15px/hdf_47.png
new file mode 100644
index 0000000..0deef83
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_47.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_48.png b/signs_lib/extra_fonts/15px/hdf_48.png
new file mode 100644
index 0000000..f85b4ae
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_48.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_49.png b/signs_lib/extra_fonts/15px/hdf_49.png
new file mode 100644
index 0000000..1f02728
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_49.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_4a.png b/signs_lib/extra_fonts/15px/hdf_4a.png
new file mode 100644
index 0000000..b2f7bef
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_4a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_4b.png b/signs_lib/extra_fonts/15px/hdf_4b.png
new file mode 100644
index 0000000..e8d52d6
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_4b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_4c.png b/signs_lib/extra_fonts/15px/hdf_4c.png
new file mode 100644
index 0000000..94d7d48
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_4c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_4d.png b/signs_lib/extra_fonts/15px/hdf_4d.png
new file mode 100644
index 0000000..0ee8eb4
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_4d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_4e.png b/signs_lib/extra_fonts/15px/hdf_4e.png
new file mode 100644
index 0000000..8ff83d6
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_4e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_4f.png b/signs_lib/extra_fonts/15px/hdf_4f.png
new file mode 100644
index 0000000..b278ccc
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_4f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_50.png b/signs_lib/extra_fonts/15px/hdf_50.png
new file mode 100644
index 0000000..33b52fd
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_50.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_51.png b/signs_lib/extra_fonts/15px/hdf_51.png
new file mode 100644
index 0000000..892747c
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_51.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_52.png b/signs_lib/extra_fonts/15px/hdf_52.png
new file mode 100644
index 0000000..acb395e
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_52.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_53.png b/signs_lib/extra_fonts/15px/hdf_53.png
new file mode 100644
index 0000000..028f284
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_53.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_54.png b/signs_lib/extra_fonts/15px/hdf_54.png
new file mode 100644
index 0000000..3bd0a2b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_54.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_55.png b/signs_lib/extra_fonts/15px/hdf_55.png
new file mode 100644
index 0000000..81643f9
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_55.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_56.png b/signs_lib/extra_fonts/15px/hdf_56.png
new file mode 100644
index 0000000..8726f5b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_56.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_57.png b/signs_lib/extra_fonts/15px/hdf_57.png
new file mode 100644
index 0000000..5e8d9d0
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_57.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_58.png b/signs_lib/extra_fonts/15px/hdf_58.png
new file mode 100644
index 0000000..2abbda3
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_58.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_59.png b/signs_lib/extra_fonts/15px/hdf_59.png
new file mode 100644
index 0000000..ff45093
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_59.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_5a.png b/signs_lib/extra_fonts/15px/hdf_5a.png
new file mode 100644
index 0000000..5c706ce
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_5a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_5b.png b/signs_lib/extra_fonts/15px/hdf_5b.png
new file mode 100644
index 0000000..2592f1f
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_5b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_5c.png b/signs_lib/extra_fonts/15px/hdf_5c.png
new file mode 100644
index 0000000..406d634
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_5c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_5d.png b/signs_lib/extra_fonts/15px/hdf_5d.png
new file mode 100644
index 0000000..a5efa37
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_5d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_5e.png b/signs_lib/extra_fonts/15px/hdf_5e.png
new file mode 100644
index 0000000..7f610d8
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_5e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_5f.png b/signs_lib/extra_fonts/15px/hdf_5f.png
new file mode 100644
index 0000000..07cce5a
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_5f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_60.png b/signs_lib/extra_fonts/15px/hdf_60.png
new file mode 100644
index 0000000..cd4e0fb
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_60.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_61.png b/signs_lib/extra_fonts/15px/hdf_61.png
new file mode 100644
index 0000000..dc019ba
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_61.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_62.png b/signs_lib/extra_fonts/15px/hdf_62.png
new file mode 100644
index 0000000..285d0b2
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_62.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_63.png b/signs_lib/extra_fonts/15px/hdf_63.png
new file mode 100644
index 0000000..8781b8a
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_63.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_64.png b/signs_lib/extra_fonts/15px/hdf_64.png
new file mode 100644
index 0000000..16c9a28
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_64.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_65.png b/signs_lib/extra_fonts/15px/hdf_65.png
new file mode 100644
index 0000000..810d9c9
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_65.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_66.png b/signs_lib/extra_fonts/15px/hdf_66.png
new file mode 100644
index 0000000..411ca57
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_66.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_67.png b/signs_lib/extra_fonts/15px/hdf_67.png
new file mode 100644
index 0000000..d8820dd
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_67.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_68.png b/signs_lib/extra_fonts/15px/hdf_68.png
new file mode 100644
index 0000000..5b51d05
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_68.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_69.png b/signs_lib/extra_fonts/15px/hdf_69.png
new file mode 100644
index 0000000..55f1a22
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_69.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_6a.png b/signs_lib/extra_fonts/15px/hdf_6a.png
new file mode 100644
index 0000000..c20e222
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_6a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_6b.png b/signs_lib/extra_fonts/15px/hdf_6b.png
new file mode 100644
index 0000000..fc34fc5
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_6b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_6c.png b/signs_lib/extra_fonts/15px/hdf_6c.png
new file mode 100644
index 0000000..1f02728
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_6c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_6d.png b/signs_lib/extra_fonts/15px/hdf_6d.png
new file mode 100644
index 0000000..6c0ae93
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_6d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_6e.png b/signs_lib/extra_fonts/15px/hdf_6e.png
new file mode 100644
index 0000000..4f4dec7
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_6e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_6f.png b/signs_lib/extra_fonts/15px/hdf_6f.png
new file mode 100644
index 0000000..921c611
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_6f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_70.png b/signs_lib/extra_fonts/15px/hdf_70.png
new file mode 100644
index 0000000..8202199
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_70.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_71.png b/signs_lib/extra_fonts/15px/hdf_71.png
new file mode 100644
index 0000000..c02171f
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_71.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_72.png b/signs_lib/extra_fonts/15px/hdf_72.png
new file mode 100644
index 0000000..757b9c8
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_72.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_73.png b/signs_lib/extra_fonts/15px/hdf_73.png
new file mode 100644
index 0000000..e38497d
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_73.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_74.png b/signs_lib/extra_fonts/15px/hdf_74.png
new file mode 100644
index 0000000..10f9cfa
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_74.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_75.png b/signs_lib/extra_fonts/15px/hdf_75.png
new file mode 100644
index 0000000..377416b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_75.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_76.png b/signs_lib/extra_fonts/15px/hdf_76.png
new file mode 100644
index 0000000..dc558d3
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_76.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_77.png b/signs_lib/extra_fonts/15px/hdf_77.png
new file mode 100644
index 0000000..6a14298
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_77.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_78.png b/signs_lib/extra_fonts/15px/hdf_78.png
new file mode 100644
index 0000000..38b4be0
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_78.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_79.png b/signs_lib/extra_fonts/15px/hdf_79.png
new file mode 100644
index 0000000..8859fb4
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_79.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_7a.png b/signs_lib/extra_fonts/15px/hdf_7a.png
new file mode 100644
index 0000000..c42c84a
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_7a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_7b.png b/signs_lib/extra_fonts/15px/hdf_7b.png
new file mode 100644
index 0000000..c0ee072
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_7b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_7c.png b/signs_lib/extra_fonts/15px/hdf_7c.png
new file mode 100644
index 0000000..6e9949d
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_7c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_7d.png b/signs_lib/extra_fonts/15px/hdf_7d.png
new file mode 100644
index 0000000..6162caa
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_7d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/hdf_7e.png b/signs_lib/extra_fonts/15px/hdf_7e.png
new file mode 100644
index 0000000..ec762d5
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/hdf_7e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_0.png b/signs_lib/extra_fonts/15px/slc_0.png
new file mode 100644
index 0000000..17c6631
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_0.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_1.png b/signs_lib/extra_fonts/15px/slc_1.png
new file mode 100644
index 0000000..3cbbbe6
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_1.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_2.png b/signs_lib/extra_fonts/15px/slc_2.png
new file mode 100644
index 0000000..f86ae90
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_2.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_3.png b/signs_lib/extra_fonts/15px/slc_3.png
new file mode 100644
index 0000000..1938911
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_3.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_4.png b/signs_lib/extra_fonts/15px/slc_4.png
new file mode 100644
index 0000000..cdcb302
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_4.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_5.png b/signs_lib/extra_fonts/15px/slc_5.png
new file mode 100644
index 0000000..57ff7b5
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_5.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_6.png b/signs_lib/extra_fonts/15px/slc_6.png
new file mode 100644
index 0000000..de15f52
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_6.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_7.png b/signs_lib/extra_fonts/15px/slc_7.png
new file mode 100644
index 0000000..a38eb42
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_7.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_8.png b/signs_lib/extra_fonts/15px/slc_8.png
new file mode 100644
index 0000000..b0e5941
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_8.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_9.png b/signs_lib/extra_fonts/15px/slc_9.png
new file mode 100644
index 0000000..d2a0974
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_9.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_A.png b/signs_lib/extra_fonts/15px/slc_A.png
new file mode 100644
index 0000000..bed719c
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_A.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_B.png b/signs_lib/extra_fonts/15px/slc_B.png
new file mode 100644
index 0000000..f1f9d26
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_B.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_C.png b/signs_lib/extra_fonts/15px/slc_C.png
new file mode 100644
index 0000000..1822a5d
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_C.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_D.png b/signs_lib/extra_fonts/15px/slc_D.png
new file mode 100644
index 0000000..a9f06c4
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_D.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_E.png b/signs_lib/extra_fonts/15px/slc_E.png
new file mode 100644
index 0000000..d73776b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_E.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_F.png b/signs_lib/extra_fonts/15px/slc_F.png
new file mode 100644
index 0000000..e59813b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_F.png
Binary files differ
diff --git a/signs_lib/extra_fonts/15px/slc_n.png b/signs_lib/extra_fonts/15px/slc_n.png
new file mode 100644
index 0000000..8f59c9b
--- /dev/null
+++ b/signs_lib/extra_fonts/15px/slc_n.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_20.png b/signs_lib/extra_fonts/24px/hdf_20.png
new file mode 100644
index 0000000..d5bcc48
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_20.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_21.png b/signs_lib/extra_fonts/24px/hdf_21.png
new file mode 100644
index 0000000..7c8ec69
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_21.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_22.png b/signs_lib/extra_fonts/24px/hdf_22.png
new file mode 100644
index 0000000..fc86e14
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_22.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_23.png b/signs_lib/extra_fonts/24px/hdf_23.png
new file mode 100644
index 0000000..d3fcfe9
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_23.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_24.png b/signs_lib/extra_fonts/24px/hdf_24.png
new file mode 100644
index 0000000..d1ad143
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_24.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_25.png b/signs_lib/extra_fonts/24px/hdf_25.png
new file mode 100644
index 0000000..de7ed0b
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_25.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_26.png b/signs_lib/extra_fonts/24px/hdf_26.png
new file mode 100644
index 0000000..6352ba9
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_26.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_27.png b/signs_lib/extra_fonts/24px/hdf_27.png
new file mode 100644
index 0000000..60fb3a9
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_27.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_28.png b/signs_lib/extra_fonts/24px/hdf_28.png
new file mode 100644
index 0000000..995aab2
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_28.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_29.png b/signs_lib/extra_fonts/24px/hdf_29.png
new file mode 100644
index 0000000..4abbf25
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_29.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_2a.png b/signs_lib/extra_fonts/24px/hdf_2a.png
new file mode 100644
index 0000000..9735f5a
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_2a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_2b.png b/signs_lib/extra_fonts/24px/hdf_2b.png
new file mode 100644
index 0000000..1b54174
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_2b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_2c.png b/signs_lib/extra_fonts/24px/hdf_2c.png
new file mode 100644
index 0000000..20fca02
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_2c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_2d.png b/signs_lib/extra_fonts/24px/hdf_2d.png
new file mode 100644
index 0000000..4eff010
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_2d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_2e.png b/signs_lib/extra_fonts/24px/hdf_2e.png
new file mode 100644
index 0000000..14a9559
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_2e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_2f.png b/signs_lib/extra_fonts/24px/hdf_2f.png
new file mode 100644
index 0000000..e5bfcd1
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_2f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_30.png b/signs_lib/extra_fonts/24px/hdf_30.png
new file mode 100644
index 0000000..07e0b9c
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_30.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_31.png b/signs_lib/extra_fonts/24px/hdf_31.png
new file mode 100644
index 0000000..e728866
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_31.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_32.png b/signs_lib/extra_fonts/24px/hdf_32.png
new file mode 100644
index 0000000..473a5e7
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_32.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_33.png b/signs_lib/extra_fonts/24px/hdf_33.png
new file mode 100644
index 0000000..5e00f4a
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_33.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_34.png b/signs_lib/extra_fonts/24px/hdf_34.png
new file mode 100644
index 0000000..c457ccb
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_34.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_35.png b/signs_lib/extra_fonts/24px/hdf_35.png
new file mode 100644
index 0000000..d088a10
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_35.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_36.png b/signs_lib/extra_fonts/24px/hdf_36.png
new file mode 100644
index 0000000..f629536
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_36.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_37.png b/signs_lib/extra_fonts/24px/hdf_37.png
new file mode 100644
index 0000000..fe37648
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_37.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_38.png b/signs_lib/extra_fonts/24px/hdf_38.png
new file mode 100644
index 0000000..d5bfdbd
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_38.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_39.png b/signs_lib/extra_fonts/24px/hdf_39.png
new file mode 100644
index 0000000..a1fc0cf
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_39.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_3a.png b/signs_lib/extra_fonts/24px/hdf_3a.png
new file mode 100644
index 0000000..9a51d5f
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_3a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_3b.png b/signs_lib/extra_fonts/24px/hdf_3b.png
new file mode 100644
index 0000000..9b193fa
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_3b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_3c.png b/signs_lib/extra_fonts/24px/hdf_3c.png
new file mode 100644
index 0000000..3a7e93f
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_3c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_3d.png b/signs_lib/extra_fonts/24px/hdf_3d.png
new file mode 100644
index 0000000..08311bb
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_3d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_3e.png b/signs_lib/extra_fonts/24px/hdf_3e.png
new file mode 100644
index 0000000..dfab523
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_3e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_3f.png b/signs_lib/extra_fonts/24px/hdf_3f.png
new file mode 100644
index 0000000..6a080da
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_3f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_40.png b/signs_lib/extra_fonts/24px/hdf_40.png
new file mode 100644
index 0000000..d98ab16
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_40.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_41.png b/signs_lib/extra_fonts/24px/hdf_41.png
new file mode 100644
index 0000000..e486bff
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_41.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_42.png b/signs_lib/extra_fonts/24px/hdf_42.png
new file mode 100644
index 0000000..51b8721
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_42.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_43.png b/signs_lib/extra_fonts/24px/hdf_43.png
new file mode 100644
index 0000000..48d51b2
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_43.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_44.png b/signs_lib/extra_fonts/24px/hdf_44.png
new file mode 100644
index 0000000..3794698
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_44.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_45.png b/signs_lib/extra_fonts/24px/hdf_45.png
new file mode 100644
index 0000000..4b250d0
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_45.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_46.png b/signs_lib/extra_fonts/24px/hdf_46.png
new file mode 100644
index 0000000..10b750e
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_46.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_47.png b/signs_lib/extra_fonts/24px/hdf_47.png
new file mode 100644
index 0000000..90ea6aa
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_47.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_48.png b/signs_lib/extra_fonts/24px/hdf_48.png
new file mode 100644
index 0000000..587f7d5
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_48.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_49.png b/signs_lib/extra_fonts/24px/hdf_49.png
new file mode 100644
index 0000000..421dc2b
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_49.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_4a.png b/signs_lib/extra_fonts/24px/hdf_4a.png
new file mode 100644
index 0000000..12e27b9
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_4a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_4b.png b/signs_lib/extra_fonts/24px/hdf_4b.png
new file mode 100644
index 0000000..81d7359
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_4b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_4c.png b/signs_lib/extra_fonts/24px/hdf_4c.png
new file mode 100644
index 0000000..3825c6e
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_4c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_4d.png b/signs_lib/extra_fonts/24px/hdf_4d.png
new file mode 100644
index 0000000..7b1cad0
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_4d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_4e.png b/signs_lib/extra_fonts/24px/hdf_4e.png
new file mode 100644
index 0000000..1ab03a6
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_4e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_4f.png b/signs_lib/extra_fonts/24px/hdf_4f.png
new file mode 100644
index 0000000..cecc6fe
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_4f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_50.png b/signs_lib/extra_fonts/24px/hdf_50.png
new file mode 100644
index 0000000..2c5734b
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_50.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_51.png b/signs_lib/extra_fonts/24px/hdf_51.png
new file mode 100644
index 0000000..3ec6550
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_51.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_52.png b/signs_lib/extra_fonts/24px/hdf_52.png
new file mode 100644
index 0000000..9052cc7
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_52.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_53.png b/signs_lib/extra_fonts/24px/hdf_53.png
new file mode 100644
index 0000000..42f8e00
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_53.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_54.png b/signs_lib/extra_fonts/24px/hdf_54.png
new file mode 100644
index 0000000..db43559
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_54.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_55.png b/signs_lib/extra_fonts/24px/hdf_55.png
new file mode 100644
index 0000000..bbc0f57
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_55.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_56.png b/signs_lib/extra_fonts/24px/hdf_56.png
new file mode 100644
index 0000000..023fa9a
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_56.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_57.png b/signs_lib/extra_fonts/24px/hdf_57.png
new file mode 100644
index 0000000..af88629
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_57.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_58.png b/signs_lib/extra_fonts/24px/hdf_58.png
new file mode 100644
index 0000000..a786367
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_58.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_59.png b/signs_lib/extra_fonts/24px/hdf_59.png
new file mode 100644
index 0000000..74dc431
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_59.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_5a.png b/signs_lib/extra_fonts/24px/hdf_5a.png
new file mode 100644
index 0000000..107969f
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_5a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_5b.png b/signs_lib/extra_fonts/24px/hdf_5b.png
new file mode 100644
index 0000000..e3d9e9d
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_5b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_5c.png b/signs_lib/extra_fonts/24px/hdf_5c.png
new file mode 100644
index 0000000..328a04c
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_5c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_5d.png b/signs_lib/extra_fonts/24px/hdf_5d.png
new file mode 100644
index 0000000..edd4b0d
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_5d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_5e.png b/signs_lib/extra_fonts/24px/hdf_5e.png
new file mode 100644
index 0000000..ff943f1
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_5e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_5f.png b/signs_lib/extra_fonts/24px/hdf_5f.png
new file mode 100644
index 0000000..fd7afcf
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_5f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_60.png b/signs_lib/extra_fonts/24px/hdf_60.png
new file mode 100644
index 0000000..3eeb984
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_60.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_61.png b/signs_lib/extra_fonts/24px/hdf_61.png
new file mode 100644
index 0000000..95f4561
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_61.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_62.png b/signs_lib/extra_fonts/24px/hdf_62.png
new file mode 100644
index 0000000..4295068
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_62.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_63.png b/signs_lib/extra_fonts/24px/hdf_63.png
new file mode 100644
index 0000000..5c475c6
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_63.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_64.png b/signs_lib/extra_fonts/24px/hdf_64.png
new file mode 100644
index 0000000..b0f8d9f
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_64.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_65.png b/signs_lib/extra_fonts/24px/hdf_65.png
new file mode 100644
index 0000000..6359127
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_65.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_66.png b/signs_lib/extra_fonts/24px/hdf_66.png
new file mode 100644
index 0000000..f2f68b1
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_66.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_67.png b/signs_lib/extra_fonts/24px/hdf_67.png
new file mode 100644
index 0000000..e4c730f
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_67.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_68.png b/signs_lib/extra_fonts/24px/hdf_68.png
new file mode 100644
index 0000000..1345d20
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_68.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_69.png b/signs_lib/extra_fonts/24px/hdf_69.png
new file mode 100644
index 0000000..4c3ae09
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_69.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_6a.png b/signs_lib/extra_fonts/24px/hdf_6a.png
new file mode 100644
index 0000000..9841483
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_6a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_6b.png b/signs_lib/extra_fonts/24px/hdf_6b.png
new file mode 100644
index 0000000..b38f7ec
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_6b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_6c.png b/signs_lib/extra_fonts/24px/hdf_6c.png
new file mode 100644
index 0000000..421dc2b
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_6c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_6d.png b/signs_lib/extra_fonts/24px/hdf_6d.png
new file mode 100644
index 0000000..add3840
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_6d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_6e.png b/signs_lib/extra_fonts/24px/hdf_6e.png
new file mode 100644
index 0000000..a9c5d6c
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_6e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_6f.png b/signs_lib/extra_fonts/24px/hdf_6f.png
new file mode 100644
index 0000000..9b501df
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_6f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_70.png b/signs_lib/extra_fonts/24px/hdf_70.png
new file mode 100644
index 0000000..ac35aab
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_70.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_71.png b/signs_lib/extra_fonts/24px/hdf_71.png
new file mode 100644
index 0000000..8a20c6e
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_71.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_72.png b/signs_lib/extra_fonts/24px/hdf_72.png
new file mode 100644
index 0000000..f1e9993
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_72.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_73.png b/signs_lib/extra_fonts/24px/hdf_73.png
new file mode 100644
index 0000000..dfa98ec
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_73.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_74.png b/signs_lib/extra_fonts/24px/hdf_74.png
new file mode 100644
index 0000000..b8f6eb2
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_74.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_75.png b/signs_lib/extra_fonts/24px/hdf_75.png
new file mode 100644
index 0000000..4fd226b
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_75.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_76.png b/signs_lib/extra_fonts/24px/hdf_76.png
new file mode 100644
index 0000000..9e651e7
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_76.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_77.png b/signs_lib/extra_fonts/24px/hdf_77.png
new file mode 100644
index 0000000..1f85782
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_77.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_78.png b/signs_lib/extra_fonts/24px/hdf_78.png
new file mode 100644
index 0000000..322b871
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_78.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_79.png b/signs_lib/extra_fonts/24px/hdf_79.png
new file mode 100644
index 0000000..91ac78d
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_79.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_7a.png b/signs_lib/extra_fonts/24px/hdf_7a.png
new file mode 100644
index 0000000..65fdb73
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_7a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_7b.png b/signs_lib/extra_fonts/24px/hdf_7b.png
new file mode 100644
index 0000000..96c8eae
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_7b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_7c.png b/signs_lib/extra_fonts/24px/hdf_7c.png
new file mode 100644
index 0000000..aa8cace
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_7c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_7d.png b/signs_lib/extra_fonts/24px/hdf_7d.png
new file mode 100644
index 0000000..c609507
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_7d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/hdf_7e.png b/signs_lib/extra_fonts/24px/hdf_7e.png
new file mode 100644
index 0000000..b741ee0
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/hdf_7e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_0.png b/signs_lib/extra_fonts/24px/slc_0.png
new file mode 100644
index 0000000..6983a26
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_0.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_1.png b/signs_lib/extra_fonts/24px/slc_1.png
new file mode 100644
index 0000000..f53268c
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_1.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_2.png b/signs_lib/extra_fonts/24px/slc_2.png
new file mode 100644
index 0000000..707650d
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_2.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_3.png b/signs_lib/extra_fonts/24px/slc_3.png
new file mode 100644
index 0000000..9d6084c
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_3.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_4.png b/signs_lib/extra_fonts/24px/slc_4.png
new file mode 100644
index 0000000..b045a71
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_4.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_5.png b/signs_lib/extra_fonts/24px/slc_5.png
new file mode 100644
index 0000000..a07474b
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_5.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_6.png b/signs_lib/extra_fonts/24px/slc_6.png
new file mode 100644
index 0000000..e8bf8e7
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_6.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_7.png b/signs_lib/extra_fonts/24px/slc_7.png
new file mode 100644
index 0000000..38228c2
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_7.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_8.png b/signs_lib/extra_fonts/24px/slc_8.png
new file mode 100644
index 0000000..371e1bf
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_8.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_9.png b/signs_lib/extra_fonts/24px/slc_9.png
new file mode 100644
index 0000000..34cde7e
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_9.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_A.png b/signs_lib/extra_fonts/24px/slc_A.png
new file mode 100644
index 0000000..049ae6c
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_A.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_B.png b/signs_lib/extra_fonts/24px/slc_B.png
new file mode 100644
index 0000000..808f683
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_B.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_C.png b/signs_lib/extra_fonts/24px/slc_C.png
new file mode 100644
index 0000000..943faea
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_C.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_D.png b/signs_lib/extra_fonts/24px/slc_D.png
new file mode 100644
index 0000000..efa2066
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_D.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_E.png b/signs_lib/extra_fonts/24px/slc_E.png
new file mode 100644
index 0000000..abecd33
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_E.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_F.png b/signs_lib/extra_fonts/24px/slc_F.png
new file mode 100644
index 0000000..365d98e
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_F.png
Binary files differ
diff --git a/signs_lib/extra_fonts/24px/slc_n.png b/signs_lib/extra_fonts/24px/slc_n.png
new file mode 100644
index 0000000..7b33485
--- /dev/null
+++ b/signs_lib/extra_fonts/24px/slc_n.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_20.png b/signs_lib/extra_fonts/31px/hdf_20.png
new file mode 100644
index 0000000..a83236d
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_20.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_21.png b/signs_lib/extra_fonts/31px/hdf_21.png
new file mode 100644
index 0000000..d3b9f61
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_21.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_22.png b/signs_lib/extra_fonts/31px/hdf_22.png
new file mode 100644
index 0000000..ea354d8
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_22.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_23.png b/signs_lib/extra_fonts/31px/hdf_23.png
new file mode 100644
index 0000000..eded520
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_23.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_24.png b/signs_lib/extra_fonts/31px/hdf_24.png
new file mode 100644
index 0000000..9225f94
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_24.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_25.png b/signs_lib/extra_fonts/31px/hdf_25.png
new file mode 100644
index 0000000..473590f
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_25.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_26.png b/signs_lib/extra_fonts/31px/hdf_26.png
new file mode 100644
index 0000000..b7a9778
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_26.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_27.png b/signs_lib/extra_fonts/31px/hdf_27.png
new file mode 100644
index 0000000..5185d81
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_27.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_28.png b/signs_lib/extra_fonts/31px/hdf_28.png
new file mode 100644
index 0000000..8641fe1
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_28.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_29.png b/signs_lib/extra_fonts/31px/hdf_29.png
new file mode 100644
index 0000000..044366c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_29.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_2a.png b/signs_lib/extra_fonts/31px/hdf_2a.png
new file mode 100644
index 0000000..3da8dc4
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_2a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_2b.png b/signs_lib/extra_fonts/31px/hdf_2b.png
new file mode 100644
index 0000000..1c5be46
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_2b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_2c.png b/signs_lib/extra_fonts/31px/hdf_2c.png
new file mode 100644
index 0000000..dd8de22
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_2c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_2d.png b/signs_lib/extra_fonts/31px/hdf_2d.png
new file mode 100644
index 0000000..3a8f62c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_2d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_2e.png b/signs_lib/extra_fonts/31px/hdf_2e.png
new file mode 100644
index 0000000..860df5d
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_2e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_2f.png b/signs_lib/extra_fonts/31px/hdf_2f.png
new file mode 100644
index 0000000..91b0e1c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_2f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_30.png b/signs_lib/extra_fonts/31px/hdf_30.png
new file mode 100644
index 0000000..c34aaf8
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_30.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_31.png b/signs_lib/extra_fonts/31px/hdf_31.png
new file mode 100644
index 0000000..091e6c9
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_31.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_32.png b/signs_lib/extra_fonts/31px/hdf_32.png
new file mode 100644
index 0000000..e43a58f
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_32.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_33.png b/signs_lib/extra_fonts/31px/hdf_33.png
new file mode 100644
index 0000000..7a873cf
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_33.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_34.png b/signs_lib/extra_fonts/31px/hdf_34.png
new file mode 100644
index 0000000..952d474
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_34.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_35.png b/signs_lib/extra_fonts/31px/hdf_35.png
new file mode 100644
index 0000000..4297837
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_35.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_36.png b/signs_lib/extra_fonts/31px/hdf_36.png
new file mode 100644
index 0000000..71c6e4b
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_36.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_37.png b/signs_lib/extra_fonts/31px/hdf_37.png
new file mode 100644
index 0000000..c73dc10
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_37.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_38.png b/signs_lib/extra_fonts/31px/hdf_38.png
new file mode 100644
index 0000000..4028298
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_38.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_39.png b/signs_lib/extra_fonts/31px/hdf_39.png
new file mode 100644
index 0000000..a240984
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_39.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_3a.png b/signs_lib/extra_fonts/31px/hdf_3a.png
new file mode 100644
index 0000000..a3d967c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_3a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_3b.png b/signs_lib/extra_fonts/31px/hdf_3b.png
new file mode 100644
index 0000000..becc877
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_3b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_3c.png b/signs_lib/extra_fonts/31px/hdf_3c.png
new file mode 100644
index 0000000..0d3d291
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_3c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_3d.png b/signs_lib/extra_fonts/31px/hdf_3d.png
new file mode 100644
index 0000000..952ffca
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_3d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_3e.png b/signs_lib/extra_fonts/31px/hdf_3e.png
new file mode 100644
index 0000000..4367ba0
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_3e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_3f.png b/signs_lib/extra_fonts/31px/hdf_3f.png
new file mode 100644
index 0000000..d1d18fc
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_3f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_40.png b/signs_lib/extra_fonts/31px/hdf_40.png
new file mode 100644
index 0000000..5003e81
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_40.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_41.png b/signs_lib/extra_fonts/31px/hdf_41.png
new file mode 100644
index 0000000..22542bf
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_41.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_42.png b/signs_lib/extra_fonts/31px/hdf_42.png
new file mode 100644
index 0000000..8250ba6
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_42.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_43.png b/signs_lib/extra_fonts/31px/hdf_43.png
new file mode 100644
index 0000000..60df4ce
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_43.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_44.png b/signs_lib/extra_fonts/31px/hdf_44.png
new file mode 100644
index 0000000..3efe851
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_44.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_45.png b/signs_lib/extra_fonts/31px/hdf_45.png
new file mode 100644
index 0000000..edc2321
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_45.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_46.png b/signs_lib/extra_fonts/31px/hdf_46.png
new file mode 100644
index 0000000..a6c1c44
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_46.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_47.png b/signs_lib/extra_fonts/31px/hdf_47.png
new file mode 100644
index 0000000..67772e6
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_47.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_48.png b/signs_lib/extra_fonts/31px/hdf_48.png
new file mode 100644
index 0000000..db78806
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_48.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_49.png b/signs_lib/extra_fonts/31px/hdf_49.png
new file mode 100644
index 0000000..a07c15a
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_49.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_4a.png b/signs_lib/extra_fonts/31px/hdf_4a.png
new file mode 100644
index 0000000..ae61bf1
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_4a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_4b.png b/signs_lib/extra_fonts/31px/hdf_4b.png
new file mode 100644
index 0000000..87d9c78
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_4b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_4c.png b/signs_lib/extra_fonts/31px/hdf_4c.png
new file mode 100644
index 0000000..bafd6d2
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_4c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_4d.png b/signs_lib/extra_fonts/31px/hdf_4d.png
new file mode 100644
index 0000000..efc8814
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_4d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_4e.png b/signs_lib/extra_fonts/31px/hdf_4e.png
new file mode 100644
index 0000000..10b7607
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_4e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_4f.png b/signs_lib/extra_fonts/31px/hdf_4f.png
new file mode 100644
index 0000000..9698926
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_4f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_50.png b/signs_lib/extra_fonts/31px/hdf_50.png
new file mode 100644
index 0000000..67ebc51
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_50.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_51.png b/signs_lib/extra_fonts/31px/hdf_51.png
new file mode 100644
index 0000000..83e28f0
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_51.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_52.png b/signs_lib/extra_fonts/31px/hdf_52.png
new file mode 100644
index 0000000..d651ab2
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_52.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_53.png b/signs_lib/extra_fonts/31px/hdf_53.png
new file mode 100644
index 0000000..896571d
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_53.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_54.png b/signs_lib/extra_fonts/31px/hdf_54.png
new file mode 100644
index 0000000..ad38df3
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_54.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_55.png b/signs_lib/extra_fonts/31px/hdf_55.png
new file mode 100644
index 0000000..80f1ba4
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_55.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_56.png b/signs_lib/extra_fonts/31px/hdf_56.png
new file mode 100644
index 0000000..4db8d12
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_56.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_57.png b/signs_lib/extra_fonts/31px/hdf_57.png
new file mode 100644
index 0000000..7b43529
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_57.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_58.png b/signs_lib/extra_fonts/31px/hdf_58.png
new file mode 100644
index 0000000..8a4e863
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_58.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_59.png b/signs_lib/extra_fonts/31px/hdf_59.png
new file mode 100644
index 0000000..647bdb8
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_59.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_5a.png b/signs_lib/extra_fonts/31px/hdf_5a.png
new file mode 100644
index 0000000..7b3ba63
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_5a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_5b.png b/signs_lib/extra_fonts/31px/hdf_5b.png
new file mode 100644
index 0000000..2ba87b6
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_5b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_5c.png b/signs_lib/extra_fonts/31px/hdf_5c.png
new file mode 100644
index 0000000..6c7e6bf
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_5c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_5d.png b/signs_lib/extra_fonts/31px/hdf_5d.png
new file mode 100644
index 0000000..06575b7
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_5d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_5e.png b/signs_lib/extra_fonts/31px/hdf_5e.png
new file mode 100644
index 0000000..5ac99a6
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_5e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_5f.png b/signs_lib/extra_fonts/31px/hdf_5f.png
new file mode 100644
index 0000000..0841466
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_5f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_60.png b/signs_lib/extra_fonts/31px/hdf_60.png
new file mode 100644
index 0000000..02e0761
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_60.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_61.png b/signs_lib/extra_fonts/31px/hdf_61.png
new file mode 100644
index 0000000..8591054
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_61.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_62.png b/signs_lib/extra_fonts/31px/hdf_62.png
new file mode 100644
index 0000000..63b6c29
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_62.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_63.png b/signs_lib/extra_fonts/31px/hdf_63.png
new file mode 100644
index 0000000..f0d6995
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_63.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_64.png b/signs_lib/extra_fonts/31px/hdf_64.png
new file mode 100644
index 0000000..f73979c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_64.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_65.png b/signs_lib/extra_fonts/31px/hdf_65.png
new file mode 100644
index 0000000..6bbd2ee
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_65.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_66.png b/signs_lib/extra_fonts/31px/hdf_66.png
new file mode 100644
index 0000000..8d23c9c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_66.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_67.png b/signs_lib/extra_fonts/31px/hdf_67.png
new file mode 100644
index 0000000..5bc9e83
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_67.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_68.png b/signs_lib/extra_fonts/31px/hdf_68.png
new file mode 100644
index 0000000..726598b
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_68.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_69.png b/signs_lib/extra_fonts/31px/hdf_69.png
new file mode 100644
index 0000000..b790d77
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_69.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_6a.png b/signs_lib/extra_fonts/31px/hdf_6a.png
new file mode 100644
index 0000000..3e735fe
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_6a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_6b.png b/signs_lib/extra_fonts/31px/hdf_6b.png
new file mode 100644
index 0000000..d03c199
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_6b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_6c.png b/signs_lib/extra_fonts/31px/hdf_6c.png
new file mode 100644
index 0000000..836db1a
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_6c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_6d.png b/signs_lib/extra_fonts/31px/hdf_6d.png
new file mode 100644
index 0000000..96387f1
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_6d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_6e.png b/signs_lib/extra_fonts/31px/hdf_6e.png
new file mode 100644
index 0000000..f8a8dc6
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_6e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_6f.png b/signs_lib/extra_fonts/31px/hdf_6f.png
new file mode 100644
index 0000000..8982e75
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_6f.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_70.png b/signs_lib/extra_fonts/31px/hdf_70.png
new file mode 100644
index 0000000..60caef9
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_70.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_71.png b/signs_lib/extra_fonts/31px/hdf_71.png
new file mode 100644
index 0000000..390d463
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_71.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_72.png b/signs_lib/extra_fonts/31px/hdf_72.png
new file mode 100644
index 0000000..c2a6b4d
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_72.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_73.png b/signs_lib/extra_fonts/31px/hdf_73.png
new file mode 100644
index 0000000..43ec451
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_73.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_74.png b/signs_lib/extra_fonts/31px/hdf_74.png
new file mode 100644
index 0000000..b4f222d
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_74.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_75.png b/signs_lib/extra_fonts/31px/hdf_75.png
new file mode 100644
index 0000000..54696ef
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_75.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_76.png b/signs_lib/extra_fonts/31px/hdf_76.png
new file mode 100644
index 0000000..3cc3dc9
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_76.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_77.png b/signs_lib/extra_fonts/31px/hdf_77.png
new file mode 100644
index 0000000..948ae21
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_77.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_78.png b/signs_lib/extra_fonts/31px/hdf_78.png
new file mode 100644
index 0000000..78a6259
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_78.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_79.png b/signs_lib/extra_fonts/31px/hdf_79.png
new file mode 100644
index 0000000..dbab511
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_79.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_7a.png b/signs_lib/extra_fonts/31px/hdf_7a.png
new file mode 100644
index 0000000..2d12719
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_7a.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_7b.png b/signs_lib/extra_fonts/31px/hdf_7b.png
new file mode 100644
index 0000000..81cb103
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_7b.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_7c.png b/signs_lib/extra_fonts/31px/hdf_7c.png
new file mode 100644
index 0000000..fc6a626
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_7c.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_7d.png b/signs_lib/extra_fonts/31px/hdf_7d.png
new file mode 100644
index 0000000..70e8f75
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_7d.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/hdf_7e.png b/signs_lib/extra_fonts/31px/hdf_7e.png
new file mode 100644
index 0000000..cf63d5d
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/hdf_7e.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_0.png b/signs_lib/extra_fonts/31px/slc_0.png
new file mode 100644
index 0000000..bbda5a9
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_0.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_1.png b/signs_lib/extra_fonts/31px/slc_1.png
new file mode 100644
index 0000000..0431113
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_1.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_2.png b/signs_lib/extra_fonts/31px/slc_2.png
new file mode 100644
index 0000000..1e5d351
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_2.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_3.png b/signs_lib/extra_fonts/31px/slc_3.png
new file mode 100644
index 0000000..49eb91c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_3.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_4.png b/signs_lib/extra_fonts/31px/slc_4.png
new file mode 100644
index 0000000..1578043
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_4.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_5.png b/signs_lib/extra_fonts/31px/slc_5.png
new file mode 100644
index 0000000..ea9bf8c
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_5.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_6.png b/signs_lib/extra_fonts/31px/slc_6.png
new file mode 100644
index 0000000..6a32f66
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_6.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_7.png b/signs_lib/extra_fonts/31px/slc_7.png
new file mode 100644
index 0000000..20a4184
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_7.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_8.png b/signs_lib/extra_fonts/31px/slc_8.png
new file mode 100644
index 0000000..d9767df
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_8.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_9.png b/signs_lib/extra_fonts/31px/slc_9.png
new file mode 100644
index 0000000..e64f7f3
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_9.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_A.png b/signs_lib/extra_fonts/31px/slc_A.png
new file mode 100644
index 0000000..53c7fcc
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_A.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_B.png b/signs_lib/extra_fonts/31px/slc_B.png
new file mode 100644
index 0000000..48318cb
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_B.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_C.png b/signs_lib/extra_fonts/31px/slc_C.png
new file mode 100644
index 0000000..9ad71a4
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_C.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_D.png b/signs_lib/extra_fonts/31px/slc_D.png
new file mode 100644
index 0000000..4b692fb
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_D.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_E.png b/signs_lib/extra_fonts/31px/slc_E.png
new file mode 100644
index 0000000..468c5ab
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_E.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_F.png b/signs_lib/extra_fonts/31px/slc_F.png
new file mode 100644
index 0000000..0fc1caa
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_F.png
Binary files differ
diff --git a/signs_lib/extra_fonts/31px/slc_n.png b/signs_lib/extra_fonts/31px/slc_n.png
new file mode 100644
index 0000000..3d4cf1a
--- /dev/null
+++ b/signs_lib/extra_fonts/31px/slc_n.png
Binary files differ
diff --git a/signs_lib/init.lua b/signs_lib/init.lua
new file mode 100644
index 0000000..ce3e37a
--- /dev/null
+++ b/signs_lib/init.lua
@@ -0,0 +1,1090 @@
+-- This mod provides the visible text on signs library used by Home Decor
+-- and perhaps other mods at some point in the future. Forked from thexyz's/
+-- PilzAdam's original text-on-signs mod and rewritten by Vanessa Ezekowitz
+-- and Diego Martinez
+
+-- textpos = {
+-- { delta = {entity position for 0° yaw}, exact yaw expression }
+-- { delta = {entity position for 180° yaw}, exact yaw expression }
+-- { delta = {entity position for 270° yaw}, exact yaw expression }
+-- { delta = {entity position for 90° yaw}, exact yaw expression }
+-- }
+
+-- CWz's keyword interact mod uses this setting.
+local current_keyword = minetest.setting_get("interact_keyword") or "iaccept"
+
+signs_lib = {}
+screwdriver = screwdriver or {}
+
+signs_lib.wallmounted_rotate = function(pos, node, user, mode, new_param2)
+ if mode ~= screwdriver.ROTATE_AXIS then return false end
+ minetest.swap_node(pos, {name = node.name, param2 = (node.param2 + 1) % 6})
+ for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
+ local e = v:get_luaentity()
+ if e and e.name == "signs:text" then
+ v:remove()
+ end
+ end
+ signs_lib.update_sign(pos)
+ return true
+end
+
+signs_lib.modpath = minetest.get_modpath("signs_lib")
+
+signs_lib.regular_wall_sign_model = {
+ nodebox = {
+ type = "wallmounted",
+ wall_side = { -0.5, -0.25, -0.4375, -0.4375, 0.375, 0.4375 },
+ wall_bottom = { -0.4375, -0.5, -0.25, 0.4375, -0.4375, 0.375 },
+ wall_top = { -0.4375, 0.4375, -0.375, 0.4375, 0.5, 0.25 }
+ },
+ textpos = {
+ nil,
+ nil,
+ {delta = {x = 0.43, y = 0.07, z = 0 }, yaw = math.pi / -2},
+ {delta = {x = -0.43, y = 0.07, z = 0 }, yaw = math.pi / 2},
+ {delta = {x = 0, y = 0.07, z = 0.43 }, yaw = 0},
+ {delta = {x = 0, y = 0.07, z = -0.43 }, yaw = math.pi},
+ }
+}
+
+signs_lib.metal_wall_sign_model = {
+ nodebox = {
+ type = "fixed",
+ fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5}
+ },
+ textpos = {
+ {delta = {x = 0, y = 0.07, z = 0.43 }, yaw = 0},
+ {delta = {x = 0.43, y = 0.07, z = 0 }, yaw = math.pi / -2},
+ {delta = {x = 0, y = 0.07, z = -0.43 }, yaw = math.pi},
+ {delta = {x = -0.43, y = 0.07, z = 0 }, yaw = math.pi / 2},
+ }
+}
+
+signs_lib.yard_sign_model = {
+ nodebox = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.25, -0.0625, 0.4375, 0.375, 0},
+ {-0.0625, -0.5, -0.0625, 0.0625, -0.1875, 0},
+ }
+ },
+ textpos = {
+ {delta = {x = 0, y = 0.07, z = -0.068}, yaw = 0},
+ {delta = {x = -0.068, y = 0.07, z = 0 }, yaw = math.pi / -2},
+ {delta = {x = 0, y = 0.07, z = 0.068}, yaw = math.pi},
+ {delta = {x = 0.068, y = 0.07, z = 0 }, yaw = math.pi / 2},
+ }
+}
+
+signs_lib.hanging_sign_model = {
+ nodebox = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.3125, -0.0625, 0.4375, 0.3125, 0},
+ {-0.4375, 0.25, -0.03125, 0.4375, 0.5, -0.03125},
+ }
+ },
+ textpos = {
+ {delta = {x = 0, y = -0.02, z = -0.063}, yaw = 0},
+ {delta = {x = -0.063, y = -0.02, z = 0 }, yaw = math.pi / -2},
+ {delta = {x = 0, y = -0.02, z = 0.063}, yaw = math.pi},
+ {delta = {x = 0.063, y = -0.02, z = 0 }, yaw = math.pi / 2},
+ }
+}
+
+signs_lib.sign_post_model = {
+ nodebox = {
+ type = "fixed",
+ fixed = {
+ {-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125},
+ {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125},
+ }
+ },
+ textpos = {
+ {delta = {x = 0, y = 0.07, z = -0.188}, yaw = 0},
+ {delta = {x = -0.188, y = 0.07, z = 0 }, yaw = math.pi / -2},
+ {delta = {x = 0, y = 0.07, z = 0.188 }, yaw = math.pi},
+ {delta = {x = 0.188, y = 0.07, z = 0 }, yaw = math.pi / 2},
+ }
+}
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+signs_lib.gettext = S
+
+-- the list of standard sign nodes
+
+signs_lib.sign_node_list = {
+ "default:sign_wall",
+ "signs:sign_yard",
+ "signs:sign_hanging",
+ "signs:sign_wall_green",
+ "signs:sign_wall_yellow",
+ "signs:sign_wall_red",
+ "signs:sign_wall_white_red",
+ "signs:sign_wall_white_black",
+ "signs:sign_wall_orange",
+ "signs:sign_wall_blue",
+ "signs:sign_wall_brown",
+ "locked_sign:sign_wall_locked"
+}
+
+--table copy
+
+function signs_lib.table_copy(t)
+ local nt = { };
+ for k, v in pairs(t) do
+ if type(v) == "table" then
+ nt[k] = signs_lib.table_copy(v)
+ else
+ nt[k] = v
+ end
+ end
+ return nt
+end
+
+-- infinite stacks
+
+if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
+ signs_lib.expect_infinite_stacks = false
+else
+ signs_lib.expect_infinite_stacks = true
+end
+
+-- CONSTANTS
+
+local MP = minetest.get_modpath("signs_lib")
+
+-- Used by `build_char_db' to locate the file.
+local FONT_FMT = "%s/hdf_%02x.png"
+
+-- Simple texture name for building text texture.
+local FONT_FMT_SIMPLE = "hdf_%02x.png"
+
+-- Path to the textures.
+local TP = MP.."/textures"
+
+local TEXT_SCALE = {x=0.8, y=0.5}
+
+-- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza
+
+local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A)
+
+-- Read the image size from a PNG file.
+-- Returns image_w, image_h.
+-- Only the LSB is read from each field!
+local function read_image_size(filename)
+ local f = io.open(filename, "rb")
+ f:seek("set", 0x0)
+ local hdr = f:read(8)
+ if hdr ~= PNG_HDR then
+ f:close()
+ return
+ end
+ f:seek("set", 0x13)
+ local ws = f:read(1)
+ f:seek("set", 0x17)
+ local hs = f:read(1)
+ f:close()
+ return ws:byte(), hs:byte()
+end
+
+-- Set by build_char_db()
+local LINE_HEIGHT
+local SIGN_WIDTH
+local COLORBGW, COLORBGH
+
+-- Size of the canvas, in characters.
+-- Please note that CHARS_PER_LINE is multiplied by the average character
+-- width to get the total width of the canvas, so for proportional fonts,
+-- either more or fewer characters may fit on a line.
+local CHARS_PER_LINE = 30
+local NUMBER_OF_LINES = 6
+
+-- 6 rows, max 80 chars per, plus a bit of fudge to
+-- avoid excess trimming (e.g. due to color codes)
+
+local MAX_INPUT_CHARS = 600
+
+-- This holds the individual character widths.
+-- Indexed by the actual character (e.g. charwidth["A"])
+local charwidth
+
+-- helper functions to trim sign text input/output
+
+local function trim_input(text)
+ return text:sub(1, math.min(MAX_INPUT_CHARS, text:len()))
+end
+
+local function build_char_db()
+
+ charwidth = { }
+
+ -- To calculate average char width.
+ local total_width = 0
+ local char_count = 0
+
+ for c = 32, 126 do
+ local w, h = read_image_size(FONT_FMT:format(TP, c))
+ if w and h then
+ local ch = string.char(c)
+ charwidth[ch] = w
+ total_width = total_width + w
+ char_count = char_count + 1
+ end
+ end
+
+ COLORBGW, COLORBGH = read_image_size(TP.."/slc_n.png")
+ assert(COLORBGW and COLORBGH, "error reading bg dimensions")
+ LINE_HEIGHT = COLORBGH
+
+ -- XXX: Is there a better way to calc this?
+ SIGN_WIDTH = math.floor((total_width / char_count) * CHARS_PER_LINE)
+
+end
+
+local sign_groups = {choppy=2, dig_immediate=2}
+
+local fences_with_sign = { }
+
+-- some local helper functions
+
+local function split_lines_and_words_old(text)
+ local lines = { }
+ local line = { }
+ if not text then return end
+ for word in text:gmatch("%S+") do
+ if word == "|" then
+ table.insert(lines, line)
+ if #lines >= NUMBER_OF_LINES then break end
+ line = { }
+ elseif word == "\\|" then
+ table.insert(line, "|")
+ else
+ table.insert(line, word)
+ end
+ end
+ table.insert(lines, line)
+ return lines
+end
+
+local function split_lines_and_words(text)
+ if not text then return end
+ text = string.gsub(text, "@KEYWORD", current_keyword)
+ local lines = { }
+ for _, line in ipairs(text:split("\n")) do
+ table.insert(lines, line:split(" "))
+ end
+ return lines
+end
+
+local math_max = math.max
+
+local function fill_line(x, y, w, c)
+ c = c or "0"
+ local tex = { }
+ for xx = 0, math.max(0, w), COLORBGW do
+ table.insert(tex, (":%d,%d=slc_%s.png"):format(x + xx, y, c))
+ end
+ return table.concat(tex)
+end
+
+local function make_line_texture(line, lineno)
+
+ local width = 0
+ local maxw = 0
+
+ local words = { }
+
+ local cur_color = 0
+
+ -- We check which chars are available here.
+ for word_i, word in ipairs(line) do
+ local chars = { }
+ local ch_offs = 0
+ local word_l = #word
+ local i = 1
+ while i <= word_l do
+ local c = word:sub(i, i)
+ if c == "#" then
+ local cc = tonumber(word:sub(i+1, i+1), 16)
+ if cc then
+ i = i + 1
+ cur_color = cc
+ end
+ else
+ local w = charwidth[c]
+ if w then
+ width = width + w + 1
+ if width >= (SIGN_WIDTH - charwidth[" "]) then
+ width = 0
+ else
+ maxw = math_max(width, maxw)
+ end
+ if #chars < MAX_INPUT_CHARS then
+ table.insert(chars, {
+ off=ch_offs,
+ tex=FONT_FMT_SIMPLE:format(c:byte()),
+ col=("%X"):format(cur_color),
+ })
+ end
+ ch_offs = ch_offs + w
+ end
+ end
+ i = i + 1
+ end
+ width = width + charwidth[" "] + 1
+ maxw = math_max(width, maxw)
+ table.insert(words, { chars=chars, w=ch_offs })
+ end
+
+ -- Okay, we actually build the "line texture" here.
+
+ local texture = { }
+
+ local start_xpos = math.floor((SIGN_WIDTH - maxw) / 2)
+
+ local xpos = start_xpos
+ local ypos = (LINE_HEIGHT * lineno)
+
+ cur_color = nil
+
+ for word_i, word in ipairs(words) do
+ local xoffs = (xpos - start_xpos)
+ if (xoffs > 0) and ((xoffs + word.w) > maxw) then
+ table.insert(texture, fill_line(xpos, ypos, maxw, "n"))
+ xpos = start_xpos
+ ypos = ypos + LINE_HEIGHT
+ lineno = lineno + 1
+ if lineno >= NUMBER_OF_LINES then break end
+ table.insert(texture, fill_line(xpos, ypos, maxw, cur_color))
+ end
+ for ch_i, ch in ipairs(word.chars) do
+ if ch.col ~= cur_color then
+ cur_color = ch.col
+ table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color))
+ end
+ table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex))
+ end
+ table.insert(texture, (":%d,%d=hdf_20.png"):format(xpos + word.w, ypos))
+ xpos = xpos + word.w + charwidth[" "]
+ if xpos >= (SIGN_WIDTH + charwidth[" "]) then break end
+ end
+
+ table.insert(texture, fill_line(xpos, ypos, maxw, "n"))
+ table.insert(texture, fill_line(start_xpos, ypos + LINE_HEIGHT, maxw, "n"))
+
+ return table.concat(texture), lineno
+end
+
+local function make_sign_texture(lines)
+ local texture = { ("[combine:%dx%d"):format(SIGN_WIDTH, LINE_HEIGHT * NUMBER_OF_LINES) }
+ local lineno = 0
+ for i = 1, #lines do
+ if lineno >= NUMBER_OF_LINES then break end
+ local linetex, ln = make_line_texture(lines[i], lineno)
+ table.insert(texture, linetex)
+ lineno = ln + 1
+ end
+ table.insert(texture, "^[makealpha:0,0,0")
+ return table.concat(texture, "")
+end
+
+local function set_obj_text(obj, text, new)
+ local split = new and split_lines_and_words or split_lines_and_words_old
+ obj:set_properties({
+ textures={make_sign_texture(split(text))},
+ visual_size = TEXT_SCALE,
+ })
+end
+
+signs_lib.construct_sign = function(pos, locked)
+ local meta = minetest.get_meta(pos)
+ meta:set_string(
+ "formspec",
+ "size[6,4]"..
+ "textarea[0,-0.3;6.5,3;text;;${text}]"..
+ "button_exit[2,3.4;2,1;ok;Write]"..
+ "background[-0.5,-0.5;7,5;bg_signs_lib.jpg]")
+ meta:set_string("infotext", "")
+end
+
+signs_lib.destruct_sign = function(pos)
+ local objects = minetest.get_objects_inside_radius(pos, 0.5)
+ for _, v in ipairs(objects) do
+ local e = v:get_luaentity()
+ if e and e.name == "signs:text" then
+ v:remove()
+ end
+ end
+end
+
+local function make_infotext(text)
+ text = trim_input(text)
+ local lines = split_lines_and_words(text) or {}
+ local lines2 = { }
+ for _, line in ipairs(lines) do
+ table.insert(lines2, (table.concat(line, " "):gsub("#[0-9a-fA-F]", ""):gsub("##", "#")))
+ end
+ return table.concat(lines2, "\n")
+end
+
+signs_lib.update_sign = function(pos, fields, owner)
+
+ -- First, check if the interact keyword from CWz's mod is being set,
+ -- or has been changed since the last restart...
+
+ local meta = minetest.get_meta(pos)
+ local stored_text = meta:get_string("text") or ""
+ current_keyword = rawget(_G, "mki_interact_keyword") or current_keyword
+
+ if fields then -- ...we're editing the sign.
+ if fields.text and string.find(dump(fields.text), "@KEYWORD") then
+ meta:set_string("keyword", current_keyword)
+ else
+ meta:set_string("keyword", nil)
+ end
+ elseif string.find(dump(stored_text), "@KEYWORD") then -- we need to check if the password is being set/changed
+
+ local stored_keyword = meta:get_string("keyword")
+ if stored_keyword and stored_keyword ~= "" and stored_keyword ~= current_keyword then
+ signs_lib.destruct_sign(pos)
+ meta:set_string("keyword", current_keyword)
+ local ownstr = ""
+ if owner then ownstr = "Locked sign, owned by "..owner.."\n" end
+ meta:set_string("infotext", ownstr..string.gsub(make_infotext(stored_text), "@KEYWORD", current_keyword).." ")
+ end
+ end
+
+ local new
+
+ if fields then
+
+ fields.text = trim_input(fields.text)
+
+ local ownstr = ""
+ if owner then ownstr = "Locked sign, owned by "..owner.."\n" end
+
+ meta:set_string("infotext", ownstr..string.gsub(make_infotext(fields.text), "@KEYWORD", current_keyword).." ")
+ meta:set_string("text", fields.text)
+
+ meta:set_int("__signslib_new_format", 1)
+ new = true
+ else
+ new = (meta:get_int("__signslib_new_format") ~= 0)
+ end
+ local text = meta:get_string("text")
+ if text == nil then return end
+ local objects = minetest.get_objects_inside_radius(pos, 0.5)
+ local found
+ for _, v in ipairs(objects) do
+ local e = v:get_luaentity()
+ if e and e.name == "signs:text" then
+ if found then
+ v:remove()
+ else
+ set_obj_text(v, text, new)
+ found = true
+ end
+ end
+ end
+ if found then
+ return
+ end
+
+ -- if there is no entity
+ local sign_info
+ local signnode = minetest.get_node(pos)
+ if signnode.name == "signs:sign_yard" then
+ sign_info = signs_lib.yard_sign_model.textpos[minetest.get_node(pos).param2 + 1]
+ elseif signnode.name == "signs:sign_hanging" then
+ sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1]
+ elseif string.find(signnode.name, "sign_wall") then
+ if signnode.name == "default:sign_wall"
+ or signnode.name == "locked_sign:sign_wall_locked" then
+ sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1]
+ else
+ sign_info = signs_lib.metal_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1]
+ end
+ else -- ...it must be a sign on a fence post.
+ sign_info = signs_lib.sign_post_model.textpos[minetest.get_node(pos).param2 + 1]
+ end
+ if sign_info == nil then
+ return
+ end
+ local text = minetest.add_entity({x = pos.x + sign_info.delta.x,
+ y = pos.y + sign_info.delta.y,
+ z = pos.z + sign_info.delta.z}, "signs:text")
+ text:setyaw(sign_info.yaw)
+end
+
+-- What kind of sign do we need to place, anyway?
+
+function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked)
+ local name
+ name = minetest.get_node(pointed_thing.under).name
+ if fences_with_sign[name] then
+ if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then
+ minetest.record_protection_violation(pointed_thing.under,
+ placer:get_player_name())
+ return itemstack
+ end
+ else
+ name = minetest.get_node(pointed_thing.above).name
+ local def = minetest.registered_nodes[name]
+ if not def.buildable_to then
+ return itemstack
+ end
+ if minetest.is_protected(pointed_thing.above, placer:get_player_name()) then
+ minetest.record_protection_violation(pointed_thing.above,
+ placer:get_player_name())
+ return itemstack
+ end
+ end
+
+ local node=minetest.get_node(pointed_thing.under)
+
+ if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
+ return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
+ else
+ local above = pointed_thing.above
+ local under = pointed_thing.under
+ local dir = {x = under.x - above.x,
+ y = under.y - above.y,
+ z = under.z - above.z}
+
+ local wdir = minetest.dir_to_wallmounted(dir)
+
+ local placer_pos = placer:getpos()
+ if placer_pos then
+ dir = {
+ x = above.x - placer_pos.x,
+ y = above.y - placer_pos.y,
+ z = above.z - placer_pos.z
+ }
+ end
+
+ local fdir = minetest.dir_to_facedir(dir)
+
+ local pt_name = minetest.get_node(under).name
+ local signname = itemstack:get_name()
+
+ if fences_with_sign[pt_name] and signname == "default:sign_wall" then
+ minetest.add_node(under, {name = fences_with_sign[pt_name], param2 = fdir})
+ elseif wdir == 0 and signname == "default:sign_wall" then
+ minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir})
+ elseif wdir == 1 and signname == "default:sign_wall" then
+ minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir})
+ elseif signname ~= "default:sign_wall"
+ and signname ~= "locked_sign:sign_wall_locked" then -- it's a metal wall sign.
+ minetest.add_node(above, {name = signname, param2 = fdir})
+ else -- it must be a default or locked wooden wall sign
+ minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here!
+ if locked then
+ local meta = minetest.get_meta(above)
+ local owner = placer:get_player_name()
+ meta:set_string("owner", owner)
+ end
+ end
+
+ if not signs_lib.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ return itemstack
+ end
+end
+
+function signs_lib.receive_fields(pos, formname, fields, sender, lock)
+ if minetest.is_protected(pos, sender:get_player_name()) then
+ minetest.record_protection_violation(pos,
+ sender:get_player_name())
+ return
+ end
+ local lockstr = lock and "locked " or ""
+ if fields and fields.text and fields.ok then
+ minetest.log("action", S("%s wrote \"%s\" to "..lockstr.."sign at %s"):format(
+ (sender:get_player_name() or ""),
+ fields.text,
+ minetest.pos_to_string(pos)
+ ))
+ if lock then
+ signs_lib.update_sign(pos, fields, sender:get_player_name())
+ else
+ signs_lib.update_sign(pos, fields)
+ end
+ end
+end
+
+minetest.register_node(":default:sign_wall", {
+ description = S("Sign"),
+ inventory_image = "default_sign_wall.png",
+ wield_image = "default_sign_wall.png",
+ node_placement_prediction = "",
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ drawtype = "nodebox",
+ node_box = signs_lib.regular_wall_sign_model.nodebox,
+ tiles = {"signs_wall_sign.png"},
+ groups = sign_groups,
+
+ on_place = function(itemstack, placer, pointed_thing)
+ return signs_lib.determine_sign_type(itemstack, placer, pointed_thing)
+ end,
+ on_construct = function(pos)
+ signs_lib.construct_sign(pos)
+ end,
+ on_destruct = function(pos)
+ signs_lib.destruct_sign(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ signs_lib.receive_fields(pos, formname, fields, sender)
+ end,
+ on_punch = function(pos, node, puncher)
+ signs_lib.update_sign(pos)
+ end,
+ on_rotate = signs_lib.wallmounted_rotate
+})
+
+minetest.register_node(":signs:sign_yard", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = signs_lib.yard_sign_model.nodebox,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.4375, -0.5, -0.0625, 0.4375, 0.375, 0}
+ },
+ tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"},
+ groups = {choppy=2, dig_immediate=2},
+ drop = "default:sign_wall",
+
+ on_construct = function(pos)
+ signs_lib.construct_sign(pos)
+ end,
+ on_destruct = function(pos)
+ signs_lib.destruct_sign(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ signs_lib.receive_fields(pos, formname, fields, sender)
+ end,
+ on_punch = function(pos, node, puncher)
+ signs_lib.update_sign(pos)
+ end,
+})
+
+minetest.register_node(":signs:sign_hanging", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = signs_lib.hanging_sign_model.nodebox,
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.45, -0.275, -0.049, 0.45, 0.5, 0.049}
+ },
+ tiles = {
+ "signs_hanging_top.png",
+ "signs_hanging_bottom.png",
+ "signs_hanging_side.png",
+ "signs_hanging_side.png",
+ "signs_hanging_back.png",
+ "signs_hanging_front.png"
+ },
+ groups = {choppy=2, dig_immediate=2},
+ drop = "default:sign_wall",
+
+ on_construct = function(pos)
+ signs_lib.construct_sign(pos)
+ end,
+ on_destruct = function(pos)
+ signs_lib.destruct_sign(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ signs_lib.receive_fields(pos, formname, fields, sender)
+ end,
+ on_punch = function(pos, node, puncher)
+ signs_lib.update_sign(pos)
+ end,
+})
+
+minetest.register_node(":signs:sign_post", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = signs_lib.sign_post_model.nodebox,
+ tiles = {
+ "signs_post_top.png",
+ "signs_post_bottom.png",
+ "signs_post_side.png",
+ "signs_post_side.png",
+ "signs_post_back.png",
+ "signs_post_front.png",
+ },
+ groups = {choppy=2, dig_immediate=2},
+ drop = {
+ max_items = 2,
+ items = {
+ { items = { "default:sign_wall" }},
+ { items = { "default:fence_wood" }},
+ },
+ },
+})
+
+-- Locked wall sign
+
+minetest.register_privilege("sign_editor", "Can edit all locked signs")
+
+minetest.register_node(":locked_sign:sign_wall_locked", {
+ description = S("Sign"),
+ inventory_image = "signs_locked_inv.png",
+ wield_image = "signs_locked_inv.png",
+ node_placement_prediction = "",
+ sunlight_propagates = true,
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ drawtype = "nodebox",
+ node_box = signs_lib.regular_wall_sign_model.nodebox,
+ tiles = { "signs_wall_sign_locked.png" },
+ groups = sign_groups,
+ on_place = function(itemstack, placer, pointed_thing)
+ return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true)
+ end,
+ on_construct = function(pos)
+ signs_lib.construct_sign(pos, true)
+ end,
+ on_destruct = function(pos)
+ signs_lib.destruct_sign(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ local pname = sender:get_player_name() or ""
+ if pname ~= owner and pname ~= minetest.setting_get("name")
+ and not minetest.check_player_privs(pname, {sign_editor=true}) then
+ return
+ end
+ signs_lib.receive_fields(pos, formname, fields, sender, true)
+ end,
+ on_punch = function(pos, node, puncher)
+ signs_lib.update_sign(pos)
+ end,
+ can_dig = function(pos, player)
+ local meta = minetest.get_meta(pos)
+ local owner = meta:get_string("owner")
+ local pname = player:get_player_name()
+ return pname == owner or pname == minetest.setting_get("name")
+ or minetest.check_player_privs(pname, {sign_editor=true})
+ end,
+ on_rotate = signs_lib.wallmounted_rotate
+})
+
+-- metal, colored signs
+
+local sign_colors = { "green", "yellow", "red", "white_red", "white_black", "orange", "blue", "brown" }
+
+for _, color in ipairs(sign_colors) do
+ minetest.register_node(":signs:sign_wall_"..color, {
+ description = S("Sign ("..color..", metal)"),
+ inventory_image = "signs_"..color.."_inv.png",
+ wield_image = "signs_"..color.."_inv.png",
+ node_placement_prediction = "",
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = signs_lib.metal_wall_sign_model.nodebox,
+ tiles = {
+ "signs_metal_tb.png",
+ "signs_metal_tb.png",
+ "signs_metal_sides.png",
+ "signs_metal_sides.png",
+ "signs_metal_back.png",
+ "signs_"..color.."_front.png"
+ },
+ groups = sign_groups,
+ on_place = function(itemstack, placer, pointed_thing)
+ return signs_lib.determine_sign_type(itemstack, placer, pointed_thing)
+ end,
+ on_construct = function(pos)
+ signs_lib.construct_sign(pos)
+ end,
+ on_destruct = function(pos)
+ signs_lib.destruct_sign(pos)
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ signs_lib.receive_fields(pos, formname, fields, sender)
+ end,
+ on_punch = function(pos, node, puncher)
+ signs_lib.update_sign(pos)
+ end,
+ })
+end
+
+local signs_text_on_activate
+
+signs_text_on_activate = function(self)
+ local meta = minetest.get_meta(self.object:getpos())
+ local text = meta:get_string("text")
+ local new = (meta:get_int("__signslib_new_format") ~= 0)
+ if text then
+ text = trim_input(text)
+ set_obj_text(self.object, text, new)
+ end
+end
+
+minetest.register_entity(":signs:text", {
+ collisionbox = { 0, 0, 0, 0, 0, 0 },
+ visual = "upright_sprite",
+ textures = {},
+
+ on_activate = signs_text_on_activate,
+})
+
+-- And the good stuff here! :-)
+
+function signs_lib.register_fence_with_sign(fencename, fencewithsignname)
+ local def = minetest.registered_nodes[fencename]
+ local def_sign = minetest.registered_nodes[fencewithsignname]
+ if not (def and def_sign) then
+ minetest.log("warning", "[signs_lib] Attempt to register unknown node as fence")
+ return
+ end
+ def = signs_lib.table_copy(def)
+ def_sign = signs_lib.table_copy(def_sign)
+ fences_with_sign[fencename] = fencewithsignname
+
+ def_sign.on_place = function(itemstack, placer, pointed_thing, ...)
+ local node_above = minetest.get_node_or_nil(pointed_thing.above)
+ local node_under = minetest.get_node_or_nil(pointed_thing.under)
+ local def_above = node_above and minetest.registered_nodes[node_above.name]
+ local def_under = node_under and minetest.registered_nodes[node_under.name]
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local playername = placer:get_player_name()
+
+ if minetest.is_protected(pointed_thing.under, playername) then
+ minetest.record_protection_violation(pointed_thing.under, playername)
+ return itemstack
+ end
+
+ if minetest.is_protected(pointed_thing.above, playername) then
+ minetest.record_protection_violation(pointed_thing.above, playername)
+ return itemstack
+ end
+
+ if def_under and def_under.on_rightclick then
+ return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack) or itemstack
+ elseif def_under and def_under.buildable_to then
+ minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir})
+ if not signs_lib.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ placer:set_wielded_item(itemstack)
+ elseif def_above and def_above.buildable_to then
+ minetest.add_node(pointed_thing.above, {name = fencename, param2 = fdir})
+ if not signs_lib.expect_infinite_stacks then
+ itemstack:take_item()
+ end
+ placer:set_wielded_item(itemstack)
+ end
+ return itemstack
+ end
+ def_sign.on_construct = function(pos, ...)
+ signs_lib.construct_sign(pos)
+ end
+ def_sign.on_destruct = function(pos, ...)
+ signs_lib.destruct_sign(pos)
+ end
+ def_sign.on_receive_fields = function(pos, formname, fields, sender)
+ signs_lib.receive_fields(pos, formname, fields, sender)
+ end
+ def_sign.on_punch = function(pos, node, puncher, ...)
+ signs_lib.update_sign(pos)
+ end
+ local fencename = fencename
+ def_sign.after_dig_node = function(pos, node, ...)
+ node.name = fencename
+ minetest.add_node(pos, node)
+ end
+ def_sign.drop = "default:sign_wall"
+ minetest.register_node(":"..fencename, def)
+ minetest.register_node(":"..fencewithsignname, def_sign)
+ table.insert(signs_lib.sign_node_list, fencewithsignname)
+ minetest.log("debug", S("Registered %s and %s"):format(fencename, fencewithsignname))
+end
+
+build_char_db()
+
+minetest.register_alias("homedecor:fence_wood_with_sign", "signs:sign_post")
+minetest.register_alias("sign_wall_locked", "locked_sign:sign_wall_locked")
+
+signs_lib.register_fence_with_sign("default:fence_wood", "signs:sign_post")
+
+-- restore signs' text after /clearobjects and the like
+
+minetest.register_abm({
+ nodenames = signs_lib.sign_node_list,
+ interval = 15,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ signs_lib.update_sign(pos)
+ end
+})
+
+-- locked sign
+
+minetest.register_craft({
+ output = "locked_sign:sign_wall_locked",
+ recipe = {
+ {"group:wood", "group:wood", "group:wood"},
+ {"group:wood", "group:wood", "default:steel_ingot"},
+ {"", "group:stick", ""},
+ }
+})
+
+--Alternate recipe.
+
+minetest.register_craft({
+ output = "locked_sign:sign_wall_locked",
+ recipe = {
+ {"default:sign_wall"},
+ {"default:steel_ingot"},
+ },
+})
+
+-- craft recipes for the metal signs
+
+minetest.register_craft( {
+ output = "signs:sign_wall_green 4",
+ recipe = {
+ { "dye:dark_green", "dye:white", "dye:dark_green" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_green 2",
+ recipe = {
+ { "dye:dark_green", "dye:white", "dye:dark_green" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_yellow 4",
+ recipe = {
+ { "dye:yellow", "dye:black", "dye:yellow" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_yellow 2",
+ recipe = {
+ { "dye:yellow", "dye:black", "dye:yellow" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_red 4",
+ recipe = {
+ { "dye:red", "dye:white", "dye:red" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_red 2",
+ recipe = {
+ { "dye:red", "dye:white", "dye:red" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_white_red 4",
+ recipe = {
+ { "dye:white", "dye:red", "dye:white" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_white_red 2",
+ recipe = {
+ { "dye:white", "dye:red", "dye:white" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_white_black 4",
+ recipe = {
+ { "dye:white", "dye:black", "dye:white" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_white_black 2",
+ recipe = {
+ { "dye:white", "dye:black", "dye:white" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_orange 4",
+ recipe = {
+ { "dye:orange", "dye:black", "dye:orange" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_orange 2",
+ recipe = {
+ { "dye:orange", "dye:black", "dye:orange" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_blue 4",
+ recipe = {
+ { "dye:blue", "dye:white", "dye:blue" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_blue 2",
+ recipe = {
+ { "dye:blue", "dye:white", "dye:blue" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_brown 4",
+ recipe = {
+ { "dye:brown", "dye:white", "dye:brown" },
+ { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
+ },
+})
+
+minetest.register_craft( {
+ output = "signs:sign_wall_brown 2",
+ recipe = {
+ { "dye:brown", "dye:white", "dye:brown" },
+ { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
+ },
+})
+
+if minetest.setting_get("log_mods") then
+ minetest.log("action", S("signs loaded"))
+end
diff --git a/signs_lib/locale/de.txt b/signs_lib/locale/de.txt
new file mode 100644
index 0000000..8d43f77
--- /dev/null
+++ b/signs_lib/locale/de.txt
@@ -0,0 +1,9 @@
+# Translation by Xanthin
+
+Reading cached character database. = Lese zwischengespeicherte Buchstabendatenbank.
+Font seems to have changed. Rebuilding cache. = Schriftart scheint sich geaendert zu haben. Wiederaufbau des Zwischenspeichers.
+Could not find font line height in cached DB. Trying brute force. = Konnte die Schriftzeilenhoehe nicht in der zwischengespeicherten DB finden. Versuche Brute-Force.
+Sign = Schild
+%s wrote "%s" to sign at %s = %s schrieb "%s" auf das Schild bei %s
+Registered %s and %s = Registrierte %s und %s
+signs loaded = signs geladen
diff --git a/signs_lib/locale/template.txt b/signs_lib/locale/template.txt
new file mode 100644
index 0000000..c1851a8
--- /dev/null
+++ b/signs_lib/locale/template.txt
@@ -0,0 +1,9 @@
+#Template
+
+Reading cached character database. =
+Font seems to have changed. Rebuilding cache. =
+Could not find font line height in cached DB. Trying brute force. =
+Sign =
+%s wrote "%s" to sign at %s =
+Registered %s and %s =
+signs loaded =
diff --git a/signs_lib/textures/bg_signs_lib.jpg b/signs_lib/textures/bg_signs_lib.jpg
new file mode 100644
index 0000000..4b72268
--- /dev/null
+++ b/signs_lib/textures/bg_signs_lib.jpg
Binary files differ
diff --git a/signs_lib/textures/hdf_20.png b/signs_lib/textures/hdf_20.png
new file mode 100644
index 0000000..465982d
--- /dev/null
+++ b/signs_lib/textures/hdf_20.png
Binary files differ
diff --git a/signs_lib/textures/hdf_21.png b/signs_lib/textures/hdf_21.png
new file mode 100644
index 0000000..01929d4
--- /dev/null
+++ b/signs_lib/textures/hdf_21.png
Binary files differ
diff --git a/signs_lib/textures/hdf_22.png b/signs_lib/textures/hdf_22.png
new file mode 100644
index 0000000..2acde25
--- /dev/null
+++ b/signs_lib/textures/hdf_22.png
Binary files differ
diff --git a/signs_lib/textures/hdf_23.png b/signs_lib/textures/hdf_23.png
new file mode 100644
index 0000000..ace1437
--- /dev/null
+++ b/signs_lib/textures/hdf_23.png
Binary files differ
diff --git a/signs_lib/textures/hdf_24.png b/signs_lib/textures/hdf_24.png
new file mode 100644
index 0000000..909b015
--- /dev/null
+++ b/signs_lib/textures/hdf_24.png
Binary files differ
diff --git a/signs_lib/textures/hdf_25.png b/signs_lib/textures/hdf_25.png
new file mode 100644
index 0000000..30a7829
--- /dev/null
+++ b/signs_lib/textures/hdf_25.png
Binary files differ
diff --git a/signs_lib/textures/hdf_26.png b/signs_lib/textures/hdf_26.png
new file mode 100644
index 0000000..d29936c
--- /dev/null
+++ b/signs_lib/textures/hdf_26.png
Binary files differ
diff --git a/signs_lib/textures/hdf_27.png b/signs_lib/textures/hdf_27.png
new file mode 100644
index 0000000..9844e92
--- /dev/null
+++ b/signs_lib/textures/hdf_27.png
Binary files differ
diff --git a/signs_lib/textures/hdf_28.png b/signs_lib/textures/hdf_28.png
new file mode 100644
index 0000000..4810d75
--- /dev/null
+++ b/signs_lib/textures/hdf_28.png
Binary files differ
diff --git a/signs_lib/textures/hdf_29.png b/signs_lib/textures/hdf_29.png
new file mode 100644
index 0000000..e5ff2b7
--- /dev/null
+++ b/signs_lib/textures/hdf_29.png
Binary files differ
diff --git a/signs_lib/textures/hdf_2a.png b/signs_lib/textures/hdf_2a.png
new file mode 100644
index 0000000..5408897
--- /dev/null
+++ b/signs_lib/textures/hdf_2a.png
Binary files differ
diff --git a/signs_lib/textures/hdf_2b.png b/signs_lib/textures/hdf_2b.png
new file mode 100644
index 0000000..9ad7d9e
--- /dev/null
+++ b/signs_lib/textures/hdf_2b.png
Binary files differ
diff --git a/signs_lib/textures/hdf_2c.png b/signs_lib/textures/hdf_2c.png
new file mode 100644
index 0000000..cb3eae0
--- /dev/null
+++ b/signs_lib/textures/hdf_2c.png
Binary files differ
diff --git a/signs_lib/textures/hdf_2d.png b/signs_lib/textures/hdf_2d.png
new file mode 100644
index 0000000..c252f37
--- /dev/null
+++ b/signs_lib/textures/hdf_2d.png
Binary files differ
diff --git a/signs_lib/textures/hdf_2e.png b/signs_lib/textures/hdf_2e.png
new file mode 100644
index 0000000..d3aab5b
--- /dev/null
+++ b/signs_lib/textures/hdf_2e.png
Binary files differ
diff --git a/signs_lib/textures/hdf_2f.png b/signs_lib/textures/hdf_2f.png
new file mode 100644
index 0000000..48c25f2
--- /dev/null
+++ b/signs_lib/textures/hdf_2f.png
Binary files differ
diff --git a/signs_lib/textures/hdf_30.png b/signs_lib/textures/hdf_30.png
new file mode 100644
index 0000000..56ec3e7
--- /dev/null
+++ b/signs_lib/textures/hdf_30.png
Binary files differ
diff --git a/signs_lib/textures/hdf_31.png b/signs_lib/textures/hdf_31.png
new file mode 100644
index 0000000..c526e86
--- /dev/null
+++ b/signs_lib/textures/hdf_31.png
Binary files differ
diff --git a/signs_lib/textures/hdf_32.png b/signs_lib/textures/hdf_32.png
new file mode 100644
index 0000000..339d933
--- /dev/null
+++ b/signs_lib/textures/hdf_32.png
Binary files differ
diff --git a/signs_lib/textures/hdf_33.png b/signs_lib/textures/hdf_33.png
new file mode 100644
index 0000000..aba5466
--- /dev/null
+++ b/signs_lib/textures/hdf_33.png
Binary files differ
diff --git a/signs_lib/textures/hdf_34.png b/signs_lib/textures/hdf_34.png
new file mode 100644
index 0000000..9e71d10
--- /dev/null
+++ b/signs_lib/textures/hdf_34.png
Binary files differ
diff --git a/signs_lib/textures/hdf_35.png b/signs_lib/textures/hdf_35.png
new file mode 100644
index 0000000..c12370f
--- /dev/null
+++ b/signs_lib/textures/hdf_35.png
Binary files differ
diff --git a/signs_lib/textures/hdf_36.png b/signs_lib/textures/hdf_36.png
new file mode 100644
index 0000000..bebb32a
--- /dev/null
+++ b/signs_lib/textures/hdf_36.png
Binary files differ
diff --git a/signs_lib/textures/hdf_37.png b/signs_lib/textures/hdf_37.png
new file mode 100644
index 0000000..73d9bb9
--- /dev/null
+++ b/signs_lib/textures/hdf_37.png
Binary files differ
diff --git a/signs_lib/textures/hdf_38.png b/signs_lib/textures/hdf_38.png
new file mode 100644
index 0000000..baf7f6f
--- /dev/null
+++ b/signs_lib/textures/hdf_38.png
Binary files differ
diff --git a/signs_lib/textures/hdf_39.png b/signs_lib/textures/hdf_39.png
new file mode 100644
index 0000000..9572947
--- /dev/null
+++ b/signs_lib/textures/hdf_39.png
Binary files differ
diff --git a/signs_lib/textures/hdf_3a.png b/signs_lib/textures/hdf_3a.png
new file mode 100644
index 0000000..23ba0cd
--- /dev/null
+++ b/signs_lib/textures/hdf_3a.png
Binary files differ
diff --git a/signs_lib/textures/hdf_3b.png b/signs_lib/textures/hdf_3b.png
new file mode 100644
index 0000000..c4b467f
--- /dev/null
+++ b/signs_lib/textures/hdf_3b.png
Binary files differ
diff --git a/signs_lib/textures/hdf_3c.png b/signs_lib/textures/hdf_3c.png
new file mode 100644
index 0000000..566ba49
--- /dev/null
+++ b/signs_lib/textures/hdf_3c.png
Binary files differ
diff --git a/signs_lib/textures/hdf_3d.png b/signs_lib/textures/hdf_3d.png
new file mode 100644
index 0000000..50e6c6f
--- /dev/null
+++ b/signs_lib/textures/hdf_3d.png
Binary files differ
diff --git a/signs_lib/textures/hdf_3e.png b/signs_lib/textures/hdf_3e.png
new file mode 100644
index 0000000..090f8ca
--- /dev/null
+++ b/signs_lib/textures/hdf_3e.png
Binary files differ
diff --git a/signs_lib/textures/hdf_3f.png b/signs_lib/textures/hdf_3f.png
new file mode 100644
index 0000000..dce4727
--- /dev/null
+++ b/signs_lib/textures/hdf_3f.png
Binary files differ
diff --git a/signs_lib/textures/hdf_40.png b/signs_lib/textures/hdf_40.png
new file mode 100644
index 0000000..65533fd
--- /dev/null
+++ b/signs_lib/textures/hdf_40.png
Binary files differ
diff --git a/signs_lib/textures/hdf_41.png b/signs_lib/textures/hdf_41.png
new file mode 100644
index 0000000..e30c27c
--- /dev/null
+++ b/signs_lib/textures/hdf_41.png
Binary files differ
diff --git a/signs_lib/textures/hdf_42.png b/signs_lib/textures/hdf_42.png
new file mode 100644
index 0000000..28d480b
--- /dev/null
+++ b/signs_lib/textures/hdf_42.png
Binary files differ
diff --git a/signs_lib/textures/hdf_43.png b/signs_lib/textures/hdf_43.png
new file mode 100644
index 0000000..db57d8d
--- /dev/null
+++ b/signs_lib/textures/hdf_43.png
Binary files differ
diff --git a/signs_lib/textures/hdf_44.png b/signs_lib/textures/hdf_44.png
new file mode 100644
index 0000000..cca9575
--- /dev/null
+++ b/signs_lib/textures/hdf_44.png
Binary files differ
diff --git a/signs_lib/textures/hdf_45.png b/signs_lib/textures/hdf_45.png
new file mode 100644
index 0000000..07e772b
--- /dev/null
+++ b/signs_lib/textures/hdf_45.png
Binary files differ
diff --git a/signs_lib/textures/hdf_46.png b/signs_lib/textures/hdf_46.png
new file mode 100644
index 0000000..24de187
--- /dev/null
+++ b/signs_lib/textures/hdf_46.png
Binary files differ
diff --git a/signs_lib/textures/hdf_47.png b/signs_lib/textures/hdf_47.png
new file mode 100644
index 0000000..0deef83
--- /dev/null
+++ b/signs_lib/textures/hdf_47.png
Binary files differ
diff --git a/signs_lib/textures/hdf_48.png b/signs_lib/textures/hdf_48.png
new file mode 100644
index 0000000..f85b4ae
--- /dev/null
+++ b/signs_lib/textures/hdf_48.png
Binary files differ
diff --git a/signs_lib/textures/hdf_49.png b/signs_lib/textures/hdf_49.png
new file mode 100644
index 0000000..1f02728
--- /dev/null
+++ b/signs_lib/textures/hdf_49.png
Binary files differ
diff --git a/signs_lib/textures/hdf_4a.png b/signs_lib/textures/hdf_4a.png
new file mode 100644
index 0000000..b2f7bef
--- /dev/null
+++ b/signs_lib/textures/hdf_4a.png
Binary files differ
diff --git a/signs_lib/textures/hdf_4b.png b/signs_lib/textures/hdf_4b.png
new file mode 100644
index 0000000..e8d52d6
--- /dev/null
+++ b/signs_lib/textures/hdf_4b.png
Binary files differ
diff --git a/signs_lib/textures/hdf_4c.png b/signs_lib/textures/hdf_4c.png
new file mode 100644
index 0000000..94d7d48
--- /dev/null
+++ b/signs_lib/textures/hdf_4c.png
Binary files differ
diff --git a/signs_lib/textures/hdf_4d.png b/signs_lib/textures/hdf_4d.png
new file mode 100644
index 0000000..0ee8eb4
--- /dev/null
+++ b/signs_lib/textures/hdf_4d.png
Binary files differ
diff --git a/signs_lib/textures/hdf_4e.png b/signs_lib/textures/hdf_4e.png
new file mode 100644
index 0000000..8ff83d6
--- /dev/null
+++ b/signs_lib/textures/hdf_4e.png
Binary files differ
diff --git a/signs_lib/textures/hdf_4f.png b/signs_lib/textures/hdf_4f.png
new file mode 100644
index 0000000..b278ccc
--- /dev/null
+++ b/signs_lib/textures/hdf_4f.png
Binary files differ
diff --git a/signs_lib/textures/hdf_50.png b/signs_lib/textures/hdf_50.png
new file mode 100644
index 0000000..33b52fd
--- /dev/null
+++ b/signs_lib/textures/hdf_50.png
Binary files differ
diff --git a/signs_lib/textures/hdf_51.png b/signs_lib/textures/hdf_51.png
new file mode 100644
index 0000000..892747c
--- /dev/null
+++ b/signs_lib/textures/hdf_51.png
Binary files differ
diff --git a/signs_lib/textures/hdf_52.png b/signs_lib/textures/hdf_52.png
new file mode 100644
index 0000000..acb395e
--- /dev/null
+++ b/signs_lib/textures/hdf_52.png
Binary files differ
diff --git a/signs_lib/textures/hdf_53.png b/signs_lib/textures/hdf_53.png
new file mode 100644
index 0000000..028f284
--- /dev/null
+++ b/signs_lib/textures/hdf_53.png
Binary files differ
diff --git a/signs_lib/textures/hdf_54.png b/signs_lib/textures/hdf_54.png
new file mode 100644
index 0000000..3bd0a2b
--- /dev/null
+++ b/signs_lib/textures/hdf_54.png
Binary files differ
diff --git a/signs_lib/textures/hdf_55.png b/signs_lib/textures/hdf_55.png
new file mode 100644
index 0000000..81643f9
--- /dev/null
+++ b/signs_lib/textures/hdf_55.png
Binary files differ
diff --git a/signs_lib/textures/hdf_56.png b/signs_lib/textures/hdf_56.png
new file mode 100644
index 0000000..8726f5b
--- /dev/null
+++ b/signs_lib/textures/hdf_56.png
Binary files differ
diff --git a/signs_lib/textures/hdf_57.png b/signs_lib/textures/hdf_57.png
new file mode 100644
index 0000000..5e8d9d0
--- /dev/null
+++ b/signs_lib/textures/hdf_57.png
Binary files differ
diff --git a/signs_lib/textures/hdf_58.png b/signs_lib/textures/hdf_58.png
new file mode 100644
index 0000000..2abbda3
--- /dev/null
+++ b/signs_lib/textures/hdf_58.png
Binary files differ
diff --git a/signs_lib/textures/hdf_59.png b/signs_lib/textures/hdf_59.png
new file mode 100644
index 0000000..ff45093
--- /dev/null
+++ b/signs_lib/textures/hdf_59.png
Binary files differ
diff --git a/signs_lib/textures/hdf_5a.png b/signs_lib/textures/hdf_5a.png
new file mode 100644
index 0000000..5c706ce
--- /dev/null
+++ b/signs_lib/textures/hdf_5a.png
Binary files differ
diff --git a/signs_lib/textures/hdf_5b.png b/signs_lib/textures/hdf_5b.png
new file mode 100644
index 0000000..2592f1f
--- /dev/null
+++ b/signs_lib/textures/hdf_5b.png
Binary files differ
diff --git a/signs_lib/textures/hdf_5c.png b/signs_lib/textures/hdf_5c.png
new file mode 100644
index 0000000..406d634
--- /dev/null
+++ b/signs_lib/textures/hdf_5c.png
Binary files differ
diff --git a/signs_lib/textures/hdf_5d.png b/signs_lib/textures/hdf_5d.png
new file mode 100644
index 0000000..a5efa37
--- /dev/null
+++ b/signs_lib/textures/hdf_5d.png
Binary files differ
diff --git a/signs_lib/textures/hdf_5e.png b/signs_lib/textures/hdf_5e.png
new file mode 100644
index 0000000..7f610d8
--- /dev/null
+++ b/signs_lib/textures/hdf_5e.png
Binary files differ
diff --git a/signs_lib/textures/hdf_5f.png b/signs_lib/textures/hdf_5f.png
new file mode 100644
index 0000000..07cce5a
--- /dev/null
+++ b/signs_lib/textures/hdf_5f.png
Binary files differ
diff --git a/signs_lib/textures/hdf_60.png b/signs_lib/textures/hdf_60.png
new file mode 100644
index 0000000..cd4e0fb
--- /dev/null
+++ b/signs_lib/textures/hdf_60.png
Binary files differ
diff --git a/signs_lib/textures/hdf_61.png b/signs_lib/textures/hdf_61.png
new file mode 100644
index 0000000..dc019ba
--- /dev/null
+++ b/signs_lib/textures/hdf_61.png
Binary files differ
diff --git a/signs_lib/textures/hdf_62.png b/signs_lib/textures/hdf_62.png
new file mode 100644
index 0000000..285d0b2
--- /dev/null
+++ b/signs_lib/textures/hdf_62.png
Binary files differ
diff --git a/signs_lib/textures/hdf_63.png b/signs_lib/textures/hdf_63.png
new file mode 100644
index 0000000..8781b8a
--- /dev/null
+++ b/signs_lib/textures/hdf_63.png
Binary files differ
diff --git a/signs_lib/textures/hdf_64.png b/signs_lib/textures/hdf_64.png
new file mode 100644
index 0000000..16c9a28
--- /dev/null
+++ b/signs_lib/textures/hdf_64.png
Binary files differ
diff --git a/signs_lib/textures/hdf_65.png b/signs_lib/textures/hdf_65.png
new file mode 100644
index 0000000..810d9c9
--- /dev/null
+++ b/signs_lib/textures/hdf_65.png
Binary files differ
diff --git a/signs_lib/textures/hdf_66.png b/signs_lib/textures/hdf_66.png
new file mode 100644
index 0000000..411ca57
--- /dev/null
+++ b/signs_lib/textures/hdf_66.png
Binary files differ
diff --git a/signs_lib/textures/hdf_67.png b/signs_lib/textures/hdf_67.png
new file mode 100644
index 0000000..d8820dd
--- /dev/null
+++ b/signs_lib/textures/hdf_67.png
Binary files differ
diff --git a/signs_lib/textures/hdf_68.png b/signs_lib/textures/hdf_68.png
new file mode 100644
index 0000000..5b51d05
--- /dev/null
+++ b/signs_lib/textures/hdf_68.png
Binary files differ
diff --git a/signs_lib/textures/hdf_69.png b/signs_lib/textures/hdf_69.png
new file mode 100644
index 0000000..55f1a22
--- /dev/null
+++ b/signs_lib/textures/hdf_69.png
Binary files differ
diff --git a/signs_lib/textures/hdf_6a.png b/signs_lib/textures/hdf_6a.png
new file mode 100644
index 0000000..c20e222
--- /dev/null
+++ b/signs_lib/textures/hdf_6a.png
Binary files differ
diff --git a/signs_lib/textures/hdf_6b.png b/signs_lib/textures/hdf_6b.png
new file mode 100644
index 0000000..fc34fc5
--- /dev/null
+++ b/signs_lib/textures/hdf_6b.png
Binary files differ
diff --git a/signs_lib/textures/hdf_6c.png b/signs_lib/textures/hdf_6c.png
new file mode 100644
index 0000000..1f02728
--- /dev/null
+++ b/signs_lib/textures/hdf_6c.png
Binary files differ
diff --git a/signs_lib/textures/hdf_6d.png b/signs_lib/textures/hdf_6d.png
new file mode 100644
index 0000000..6c0ae93
--- /dev/null
+++ b/signs_lib/textures/hdf_6d.png
Binary files differ
diff --git a/signs_lib/textures/hdf_6e.png b/signs_lib/textures/hdf_6e.png
new file mode 100644
index 0000000..4f4dec7
--- /dev/null
+++ b/signs_lib/textures/hdf_6e.png
Binary files differ
diff --git a/signs_lib/textures/hdf_6f.png b/signs_lib/textures/hdf_6f.png
new file mode 100644
index 0000000..921c611
--- /dev/null
+++ b/signs_lib/textures/hdf_6f.png
Binary files differ
diff --git a/signs_lib/textures/hdf_70.png b/signs_lib/textures/hdf_70.png
new file mode 100644
index 0000000..8202199
--- /dev/null
+++ b/signs_lib/textures/hdf_70.png
Binary files differ
diff --git a/signs_lib/textures/hdf_71.png b/signs_lib/textures/hdf_71.png
new file mode 100644
index 0000000..c02171f
--- /dev/null
+++ b/signs_lib/textures/hdf_71.png
Binary files differ
diff --git a/signs_lib/textures/hdf_72.png b/signs_lib/textures/hdf_72.png
new file mode 100644
index 0000000..757b9c8
--- /dev/null
+++ b/signs_lib/textures/hdf_72.png
Binary files differ
diff --git a/signs_lib/textures/hdf_73.png b/signs_lib/textures/hdf_73.png
new file mode 100644
index 0000000..e38497d
--- /dev/null
+++ b/signs_lib/textures/hdf_73.png
Binary files differ
diff --git a/signs_lib/textures/hdf_74.png b/signs_lib/textures/hdf_74.png
new file mode 100644
index 0000000..10f9cfa
--- /dev/null
+++ b/signs_lib/textures/hdf_74.png
Binary files differ
diff --git a/signs_lib/textures/hdf_75.png b/signs_lib/textures/hdf_75.png
new file mode 100644
index 0000000..377416b
--- /dev/null
+++ b/signs_lib/textures/hdf_75.png
Binary files differ
diff --git a/signs_lib/textures/hdf_76.png b/signs_lib/textures/hdf_76.png
new file mode 100644
index 0000000..dc558d3
--- /dev/null
+++ b/signs_lib/textures/hdf_76.png
Binary files differ
diff --git a/signs_lib/textures/hdf_77.png b/signs_lib/textures/hdf_77.png
new file mode 100644
index 0000000..6a14298
--- /dev/null
+++ b/signs_lib/textures/hdf_77.png
Binary files differ
diff --git a/signs_lib/textures/hdf_78.png b/signs_lib/textures/hdf_78.png
new file mode 100644
index 0000000..38b4be0
--- /dev/null
+++ b/signs_lib/textures/hdf_78.png
Binary files differ
diff --git a/signs_lib/textures/hdf_79.png b/signs_lib/textures/hdf_79.png
new file mode 100644
index 0000000..8859fb4
--- /dev/null
+++ b/signs_lib/textures/hdf_79.png
Binary files differ
diff --git a/signs_lib/textures/hdf_7a.png b/signs_lib/textures/hdf_7a.png
new file mode 100644
index 0000000..c42c84a
--- /dev/null
+++ b/signs_lib/textures/hdf_7a.png
Binary files differ
diff --git a/signs_lib/textures/hdf_7b.png b/signs_lib/textures/hdf_7b.png
new file mode 100644
index 0000000..c0ee072
--- /dev/null
+++ b/signs_lib/textures/hdf_7b.png
Binary files differ
diff --git a/signs_lib/textures/hdf_7c.png b/signs_lib/textures/hdf_7c.png
new file mode 100644
index 0000000..6e9949d
--- /dev/null
+++ b/signs_lib/textures/hdf_7c.png
Binary files differ
diff --git a/signs_lib/textures/hdf_7d.png b/signs_lib/textures/hdf_7d.png
new file mode 100644
index 0000000..6162caa
--- /dev/null
+++ b/signs_lib/textures/hdf_7d.png
Binary files differ
diff --git a/signs_lib/textures/hdf_7e.png b/signs_lib/textures/hdf_7e.png
new file mode 100644
index 0000000..ec762d5
--- /dev/null
+++ b/signs_lib/textures/hdf_7e.png
Binary files differ
diff --git a/signs_lib/textures/signs_back.png b/signs_lib/textures/signs_back.png
new file mode 100644
index 0000000..db33dee
--- /dev/null
+++ b/signs_lib/textures/signs_back.png
Binary files differ
diff --git a/signs_lib/textures/signs_blue_front.png b/signs_lib/textures/signs_blue_front.png
new file mode 100644
index 0000000..65ed6ea
--- /dev/null
+++ b/signs_lib/textures/signs_blue_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_blue_inv.png b/signs_lib/textures/signs_blue_inv.png
new file mode 100644
index 0000000..3f5a0ce
--- /dev/null
+++ b/signs_lib/textures/signs_blue_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_bottom.png b/signs_lib/textures/signs_bottom.png
new file mode 100644
index 0000000..38961f0
--- /dev/null
+++ b/signs_lib/textures/signs_bottom.png
Binary files differ
diff --git a/signs_lib/textures/signs_brown_front.png b/signs_lib/textures/signs_brown_front.png
new file mode 100644
index 0000000..2ed2640
--- /dev/null
+++ b/signs_lib/textures/signs_brown_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_brown_inv.png b/signs_lib/textures/signs_brown_inv.png
new file mode 100644
index 0000000..5ba9283
--- /dev/null
+++ b/signs_lib/textures/signs_brown_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_front.png b/signs_lib/textures/signs_front.png
new file mode 100644
index 0000000..2e61435
--- /dev/null
+++ b/signs_lib/textures/signs_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_green_front.png b/signs_lib/textures/signs_green_front.png
new file mode 100644
index 0000000..45c6e0f
--- /dev/null
+++ b/signs_lib/textures/signs_green_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_green_inv.png b/signs_lib/textures/signs_green_inv.png
new file mode 100644
index 0000000..24ca5a8
--- /dev/null
+++ b/signs_lib/textures/signs_green_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_hanging_back.png b/signs_lib/textures/signs_hanging_back.png
new file mode 100644
index 0000000..7cf39a2
--- /dev/null
+++ b/signs_lib/textures/signs_hanging_back.png
Binary files differ
diff --git a/signs_lib/textures/signs_hanging_bottom.png b/signs_lib/textures/signs_hanging_bottom.png
new file mode 100644
index 0000000..7b2af4d
--- /dev/null
+++ b/signs_lib/textures/signs_hanging_bottom.png
Binary files differ
diff --git a/signs_lib/textures/signs_hanging_front.png b/signs_lib/textures/signs_hanging_front.png
new file mode 100644
index 0000000..bdc745e
--- /dev/null
+++ b/signs_lib/textures/signs_hanging_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_hanging_side.png b/signs_lib/textures/signs_hanging_side.png
new file mode 100644
index 0000000..8498d67
--- /dev/null
+++ b/signs_lib/textures/signs_hanging_side.png
Binary files differ
diff --git a/signs_lib/textures/signs_hanging_top.png b/signs_lib/textures/signs_hanging_top.png
new file mode 100644
index 0000000..1c08f91
--- /dev/null
+++ b/signs_lib/textures/signs_hanging_top.png
Binary files differ
diff --git a/signs_lib/textures/signs_locked_inv.png b/signs_lib/textures/signs_locked_inv.png
new file mode 100644
index 0000000..3c0554a
--- /dev/null
+++ b/signs_lib/textures/signs_locked_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_metal_back.png b/signs_lib/textures/signs_metal_back.png
new file mode 100644
index 0000000..48420b2
--- /dev/null
+++ b/signs_lib/textures/signs_metal_back.png
Binary files differ
diff --git a/signs_lib/textures/signs_metal_sides.png b/signs_lib/textures/signs_metal_sides.png
new file mode 100644
index 0000000..b7b4526
--- /dev/null
+++ b/signs_lib/textures/signs_metal_sides.png
Binary files differ
diff --git a/signs_lib/textures/signs_metal_tb.png b/signs_lib/textures/signs_metal_tb.png
new file mode 100644
index 0000000..9a264f0
--- /dev/null
+++ b/signs_lib/textures/signs_metal_tb.png
Binary files differ
diff --git a/signs_lib/textures/signs_orange_front.png b/signs_lib/textures/signs_orange_front.png
new file mode 100644
index 0000000..633b19a
--- /dev/null
+++ b/signs_lib/textures/signs_orange_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_orange_inv.png b/signs_lib/textures/signs_orange_inv.png
new file mode 100644
index 0000000..5a813ae
--- /dev/null
+++ b/signs_lib/textures/signs_orange_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_post_back.png b/signs_lib/textures/signs_post_back.png
new file mode 100644
index 0000000..829b844
--- /dev/null
+++ b/signs_lib/textures/signs_post_back.png
Binary files differ
diff --git a/signs_lib/textures/signs_post_bottom.png b/signs_lib/textures/signs_post_bottom.png
new file mode 100644
index 0000000..bea83e3
--- /dev/null
+++ b/signs_lib/textures/signs_post_bottom.png
Binary files differ
diff --git a/signs_lib/textures/signs_post_front.png b/signs_lib/textures/signs_post_front.png
new file mode 100644
index 0000000..02a0e59
--- /dev/null
+++ b/signs_lib/textures/signs_post_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_post_side.png b/signs_lib/textures/signs_post_side.png
new file mode 100644
index 0000000..95d7a69
--- /dev/null
+++ b/signs_lib/textures/signs_post_side.png
Binary files differ
diff --git a/signs_lib/textures/signs_post_top.png b/signs_lib/textures/signs_post_top.png
new file mode 100644
index 0000000..6b251f6
--- /dev/null
+++ b/signs_lib/textures/signs_post_top.png
Binary files differ
diff --git a/signs_lib/textures/signs_red_front.png b/signs_lib/textures/signs_red_front.png
new file mode 100644
index 0000000..7986203
--- /dev/null
+++ b/signs_lib/textures/signs_red_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_red_inv.png b/signs_lib/textures/signs_red_inv.png
new file mode 100644
index 0000000..af4597d
--- /dev/null
+++ b/signs_lib/textures/signs_red_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_side.png b/signs_lib/textures/signs_side.png
new file mode 100644
index 0000000..ab6db9e
--- /dev/null
+++ b/signs_lib/textures/signs_side.png
Binary files differ
diff --git a/signs_lib/textures/signs_top.png b/signs_lib/textures/signs_top.png
new file mode 100644
index 0000000..aa86aa8
--- /dev/null
+++ b/signs_lib/textures/signs_top.png
Binary files differ
diff --git a/signs_lib/textures/signs_wall_sign.png b/signs_lib/textures/signs_wall_sign.png
new file mode 100644
index 0000000..2f1c168
--- /dev/null
+++ b/signs_lib/textures/signs_wall_sign.png
Binary files differ
diff --git a/signs_lib/textures/signs_wall_sign_locked.png b/signs_lib/textures/signs_wall_sign_locked.png
new file mode 100644
index 0000000..7061167
--- /dev/null
+++ b/signs_lib/textures/signs_wall_sign_locked.png
Binary files differ
diff --git a/signs_lib/textures/signs_white_black_front.png b/signs_lib/textures/signs_white_black_front.png
new file mode 100644
index 0000000..f4163f1
--- /dev/null
+++ b/signs_lib/textures/signs_white_black_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_white_black_inv.png b/signs_lib/textures/signs_white_black_inv.png
new file mode 100644
index 0000000..42bb014
--- /dev/null
+++ b/signs_lib/textures/signs_white_black_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_white_red_front.png b/signs_lib/textures/signs_white_red_front.png
new file mode 100644
index 0000000..48216c9
--- /dev/null
+++ b/signs_lib/textures/signs_white_red_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_white_red_inv.png b/signs_lib/textures/signs_white_red_inv.png
new file mode 100644
index 0000000..52ac3c8
--- /dev/null
+++ b/signs_lib/textures/signs_white_red_inv.png
Binary files differ
diff --git a/signs_lib/textures/signs_yellow_front.png b/signs_lib/textures/signs_yellow_front.png
new file mode 100644
index 0000000..4ce9082
--- /dev/null
+++ b/signs_lib/textures/signs_yellow_front.png
Binary files differ
diff --git a/signs_lib/textures/signs_yellow_inv.png b/signs_lib/textures/signs_yellow_inv.png
new file mode 100644
index 0000000..86af53d
--- /dev/null
+++ b/signs_lib/textures/signs_yellow_inv.png
Binary files differ
diff --git a/signs_lib/textures/slc_0.png b/signs_lib/textures/slc_0.png
new file mode 100644
index 0000000..17c6631
--- /dev/null
+++ b/signs_lib/textures/slc_0.png
Binary files differ
diff --git a/signs_lib/textures/slc_1.png b/signs_lib/textures/slc_1.png
new file mode 100644
index 0000000..3cbbbe6
--- /dev/null
+++ b/signs_lib/textures/slc_1.png
Binary files differ
diff --git a/signs_lib/textures/slc_2.png b/signs_lib/textures/slc_2.png
new file mode 100644
index 0000000..f86ae90
--- /dev/null
+++ b/signs_lib/textures/slc_2.png
Binary files differ
diff --git a/signs_lib/textures/slc_3.png b/signs_lib/textures/slc_3.png
new file mode 100644
index 0000000..1938911
--- /dev/null
+++ b/signs_lib/textures/slc_3.png
Binary files differ
diff --git a/signs_lib/textures/slc_4.png b/signs_lib/textures/slc_4.png
new file mode 100644
index 0000000..cdcb302
--- /dev/null
+++ b/signs_lib/textures/slc_4.png
Binary files differ
diff --git a/signs_lib/textures/slc_5.png b/signs_lib/textures/slc_5.png
new file mode 100644
index 0000000..57ff7b5
--- /dev/null
+++ b/signs_lib/textures/slc_5.png
Binary files differ
diff --git a/signs_lib/textures/slc_6.png b/signs_lib/textures/slc_6.png
new file mode 100644
index 0000000..de15f52
--- /dev/null
+++ b/signs_lib/textures/slc_6.png
Binary files differ
diff --git a/signs_lib/textures/slc_7.png b/signs_lib/textures/slc_7.png
new file mode 100644
index 0000000..a38eb42
--- /dev/null
+++ b/signs_lib/textures/slc_7.png
Binary files differ
diff --git a/signs_lib/textures/slc_8.png b/signs_lib/textures/slc_8.png
new file mode 100644
index 0000000..b0e5941
--- /dev/null
+++ b/signs_lib/textures/slc_8.png
Binary files differ
diff --git a/signs_lib/textures/slc_9.png b/signs_lib/textures/slc_9.png
new file mode 100644
index 0000000..d2a0974
--- /dev/null
+++ b/signs_lib/textures/slc_9.png
Binary files differ
diff --git a/signs_lib/textures/slc_A.png b/signs_lib/textures/slc_A.png
new file mode 100644
index 0000000..bed719c
--- /dev/null
+++ b/signs_lib/textures/slc_A.png
Binary files differ
diff --git a/signs_lib/textures/slc_B.png b/signs_lib/textures/slc_B.png
new file mode 100644
index 0000000..f1f9d26
--- /dev/null
+++ b/signs_lib/textures/slc_B.png
Binary files differ
diff --git a/signs_lib/textures/slc_C.png b/signs_lib/textures/slc_C.png
new file mode 100644
index 0000000..1822a5d
--- /dev/null
+++ b/signs_lib/textures/slc_C.png
Binary files differ
diff --git a/signs_lib/textures/slc_D.png b/signs_lib/textures/slc_D.png
new file mode 100644
index 0000000..a9f06c4
--- /dev/null
+++ b/signs_lib/textures/slc_D.png
Binary files differ
diff --git a/signs_lib/textures/slc_E.png b/signs_lib/textures/slc_E.png
new file mode 100644
index 0000000..d73776b
--- /dev/null
+++ b/signs_lib/textures/slc_E.png
Binary files differ
diff --git a/signs_lib/textures/slc_F.png b/signs_lib/textures/slc_F.png
new file mode 100644
index 0000000..e59813b
--- /dev/null
+++ b/signs_lib/textures/slc_F.png
Binary files differ
diff --git a/signs_lib/textures/slc_n.png b/signs_lib/textures/slc_n.png
new file mode 100644
index 0000000..8f59c9b
--- /dev/null
+++ b/signs_lib/textures/slc_n.png
Binary files differ
diff --git a/spawn/init.lua b/spawn/init.lua
new file mode 100644
index 0000000..09eec7b
--- /dev/null
+++ b/spawn/init.lua
@@ -0,0 +1,67 @@
+
+-- Some modified from: Minetest: builtin/static_spawn.lua
+
+local function check_spawnpoint(config_setting)
+ if not minetest.setting_get(config_setting) then
+ minetest.log('error', "The \"" .. config_setting .. "\" setting is not set")
+ return false
+ end
+
+ if not minetest.setting_get_pos(config_setting) then
+ minetest.log('error', "The " .. config_setting .. " setting is invalid: \""..
+ core.setting_get(config_setting).."\"")
+ return false
+ end
+ return true
+end
+
+
+local function put_player_at_spawn(obj)
+
+ local config_setting
+
+ -- players with interact spawn at the location specified by
+ -- "alt_spawnpoint" in the .conf file. Those *without* interact go to
+ -- "static_spawnpoint".
+
+ if not minetest.get_player_privs(obj:get_player_name()).interact then
+ config_setting = "static_spawnpoint"
+ else
+ config_setting = "alt_spawnpoint"
+ end
+
+ if not check_spawnpoint(config_setting) then
+ return false
+ end
+
+ local spawnpoint = minetest.setting_get_pos(config_setting)
+
+ minetest.log('action', "Moving " .. obj:get_player_name() ..
+ " to " .. config_setting .. " at "..
+ minetest.pos_to_string(spawnpoint))
+
+ obj:setpos(spawnpoint)
+
+ return true
+end
+
+
+minetest.register_chatcommand("spawn", {
+ description = "Teleport to the spawn location",
+ func = function(name, _)
+ local ok = put_player_at_spawn(minetest.get_player_by_name(name))
+ if ok then
+ return true, "Teleporting to spawn..."
+ end
+ return false, "Teleport failed"
+ end
+})
+
+
+minetest.register_on_newplayer(function(obj)
+ return put_player_at_spawn(obj)
+end)
+
+minetest.register_on_respawnplayer(function(obj)
+ return put_player_at_spawn(obj)
+end)
diff --git a/stained_glass/LICENSE b/stained_glass/LICENSE
new file mode 100644
index 0000000..e01d231
--- /dev/null
+++ b/stained_glass/LICENSE
@@ -0,0 +1,614 @@
+LICENSING INFORMATION
+
+For everything but the bucket textures, GPL 2.0
+
+-----
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+==============================================================================
+
+For the bucket textures, CC-BY-SA 3.0
+
+-----
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
+SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
+RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS.
+CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND
+DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
+BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE
+CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE
+IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ "Adaptation" means a work based upon the Work, or upon the Work and other
+pre-existing works, such as a translation, adaptation, derivative work,
+arrangement of music or other alterations of a literary or artistic work, or
+phonogram or performance and includes cinematographic adaptations or any other
+form in which the Work may be recast, transformed, or adapted including in any
+form recognizably derived from the original, except that a work that
+constitutes a Collection will not be considered an Adaptation for the purpose
+of this License. For the avoidance of doubt, where the Work is a musical work,
+performance or phonogram, the synchronization of the Work in timed-relation
+with a moving image ("synching") will be considered an Adaptation for the
+purpose of this License.
+ "Collection" means a collection of literary or artistic works, such as
+encyclopedias and anthologies, or performances, phonograms or broadcasts, or
+other works or subject matter other than works listed in Section 1(f) below,
+which, by reason of the selection and arrangement of their contents, constitute
+intellectual creations, in which the Work is included in its entirety in
+unmodified form along with one or more other contributions, each constituting
+separate and independent works in themselves, which together are assembled into
+a collective whole. A work that constitutes a Collection will not be considered
+an Adaptation (as defined below) for the purposes of this License.
+ "Creative Commons Compatible License" means a license that is listed at
+http://creativecommons.org/compatiblelicenses that has been approved by
+Creative Commons as being essentially equivalent to this License, including, at
+a minimum, because that license: (i) contains terms that have the same purpose,
+meaning and effect as the License Elements of this License; and, (ii)
+explicitly permits the relicensing of adaptations of works made available under
+that license under this License or a Creative Commons jurisdiction license with
+the same License Elements as this License.
+ "Distribute" means to make available to the public the original and copies
+of the Work or Adaptation, as appropriate, through sale or other transfer of
+ownership.
+ "License Elements" means the following high-level license attributes as
+selected by Licensor and indicated in the title of this License: Attribution,
+ShareAlike.
+ "Licensor" means the individual, individuals, entity or entities that
+offer(s) the Work under the terms of this License.
+ "Original Author" means, in the case of a literary or artistic work, the
+individual, individuals, entity or entities who created the Work or if no
+individual or entity can be identified, the publisher; and in addition (i) in
+the case of a performance the actors, singers, musicians, dancers, and other
+persons who act, sing, deliver, declaim, play in, interpret or otherwise
+perform literary or artistic works or expressions of folklore; (ii) in the case
+of a phonogram the producer being the person or legal entity who first fixes
+the sounds of a performance or other sounds; and, (iii) in the case of
+broadcasts, the organization that transmits the broadcast.
+ "Work" means the literary and/or artistic work offered under the terms of
+this License including without limitation any production in the literary,
+scientific and artistic domain, whatever may be the mode or form of its
+expression including digital form, such as a book, pamphlet and other writing;
+a lecture, address, sermon or other work of the same nature; a dramatic or
+dramatico-musical work; a choreographic work or entertainment in dumb show; a
+musical composition with or without words; a cinematographic work to which are
+assimilated works expressed by a process analogous to cinematography; a work of
+drawing, painting, architecture, sculpture, engraving or lithography; a
+photographic work to which are assimilated works expressed by a process
+analogous to photography; a work of applied art; an illustration, map, plan,
+sketch or three-dimensional work relative to geography, topography,
+architecture or science; a performance; a broadcast; a phonogram; a compilation
+of data to the extent it is protected as a copyrightable work; or a work
+performed by a variety or circus performer to the extent it is not otherwise
+considered a literary or artistic work.
+ "You" means an individual or entity exercising rights under this License
+who has not previously violated the terms of this License with respect to the
+Work, or who has received express permission from the Licensor to exercise
+rights under this License despite a previous violation.
+ "Publicly Perform" means to perform public recitations of the Work and to
+communicate to the public those public recitations, by any means or process,
+including by wire or wireless means or public digital performances; to make
+available to the public Works in such a way that members of the public may
+access these Works from a place and at a place individually chosen by them; to
+perform the Work to the public by any means or process and the communication to
+the public of the performances of the Work, including by public digital
+performance; to broadcast and rebroadcast the Work by any means including
+signs, sounds or images.
+ "Reproduce" means to make copies of the Work by any means including without
+limitation by sound or visual recordings and the right of fixation and
+reproducing fixations of the Work, including storage of a protected performance
+or phonogram in digital form or other electronic medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit,
+or restrict any uses free from copyright or rights arising from limitations or
+exceptions that are provided for in connection with the copyright protection
+under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor
+hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the
+duration of the applicable copyright) license to exercise the rights in the
+Work as stated below:
+
+ to Reproduce the Work, to incorporate the Work into one or more
+Collections, and to Reproduce the Work as incorporated in the Collections;
+ to create and Reproduce Adaptations provided that any such Adaptation,
+including any translation in any medium, takes reasonable steps to clearly
+label, demarcate or otherwise identify that changes were made to the original
+Work. For example, a translation could be marked "The original work was
+translated from English to Spanish," or a modification could indicate "The
+original work has been modified.";
+ to Distribute and Publicly Perform the Work including as incorporated in
+Collections; and,
+ to Distribute and Publicly Perform Adaptations.
+
+ For the avoidance of doubt:
+ Non-waivable Compulsory License Schemes. In those jurisdictions in
+which the right to collect royalties through any statutory or compulsory
+licensing scheme cannot be waived, the Licensor reserves the exclusive right to
+collect such royalties for any exercise by You of the rights granted under this
+License;
+ Waivable Compulsory License Schemes. In those jurisdictions in which
+the right to collect royalties through any statutory or compulsory licensing
+scheme can be waived, the Licensor waives the exclusive right to collect such
+royalties for any exercise by You of the rights granted under this License;
+and,
+ Voluntary License Schemes. The Licensor waives the right to collect
+royalties, whether individually or, in the event that the Licensor is a member
+of a collecting society that administers voluntary licensing schemes, via that
+society, from any exercise by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now known or
+hereafter devised. The above rights include the right to make such
+modifications as are technically necessary to exercise the rights in other
+media and formats. Subject to Section 8(f), all rights not expressly granted by
+Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ You may Distribute or Publicly Perform the Work only under the terms of
+this License. You must include a copy of, or the Uniform Resource Identifier
+(URI) for, this License with every copy of the Work You Distribute or Publicly
+Perform. You may not offer or impose any terms on the Work that restrict the
+terms of this License or the ability of the recipient of the Work to exercise
+the rights granted to that recipient under the terms of the License. You may
+not sublicense the Work. You must keep intact all notices that refer to this
+License and to the disclaimer of warranties with every copy of the Work You
+Distribute or Publicly Perform. When You Distribute or Publicly Perform the
+Work, You may not impose any effective technological measures on the Work that
+restrict the ability of a recipient of the Work from You to exercise the rights
+granted to that recipient under the terms of the License. This Section 4(a)
+applies to the Work as incorporated in a Collection, but this does not require
+the Collection apart from the Work itself to be made subject to the terms of
+this License. If You create a Collection, upon notice from any Licensor You
+must, to the extent practicable, remove from the Collection any credit as
+required by Section 4(c), as requested. If You create an Adaptation, upon
+notice from any Licensor You must, to the extent practicable, remove from the
+Adaptation any credit as required by Section 4(c), as requested.
+ You may Distribute or Publicly Perform an Adaptation only under the terms
+of: (i) this License; (ii) a later version of this License with the same
+License Elements as this License; (iii) a Creative Commons jurisdiction license
+(either this or a later license version) that contains the same License
+Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a
+Creative Commons Compatible License. If you license the Adaptation under one of
+the licenses mentioned in (iv), you must comply with the terms of that license.
+If you license the Adaptation under the terms of any of the licenses mentioned
+in (i), (ii) or (iii) (the "Applicable License"), you must comply with the
+terms of the Applicable License generally and the following provisions: (I) You
+must include a copy of, or the URI for, the Applicable License with every copy
+of each Adaptation You Distribute or Publicly Perform; (II) You may not offer
+or impose any terms on the Adaptation that restrict the terms of the Applicable
+License or the ability of the recipient of the Adaptation to exercise the
+rights granted to that recipient under the terms of the Applicable License;
+(III) You must keep intact all notices that refer to the Applicable License and
+to the disclaimer of warranties with every copy of the Work as included in the
+Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or
+Publicly Perform the Adaptation, You may not impose any effective technological
+measures on the Adaptation that restrict the ability of a recipient of the
+Adaptation from You to exercise the rights granted to that recipient under the
+terms of the Applicable License. This Section 4(b) applies to the Adaptation as
+incorporated in a Collection, but this does not require the Collection apart
+from the Adaptation itself to be made subject to the terms of the Applicable
+License.
+ If You Distribute, or Publicly Perform the Work or any Adaptations or
+Collections, You must, unless a request has been made pursuant to Section 4(a),
+keep intact all copyright notices for the Work and provide, reasonable to the
+medium or means You are utilizing: (i) the name of the Original Author (or
+pseudonym, if applicable) if supplied, and/or if the Original Author and/or
+Licensor designate another party or parties (e.g., a sponsor institute,
+publishing entity, journal) for attribution ("Attribution Parties") in
+Licensor's copyright notice, terms of service or by other reasonable means, the
+name of such party or parties; (ii) the title of the Work if supplied; (iii) to
+the extent reasonably practicable, the URI, if any, that Licensor specifies to
+be associated with the Work, unless such URI does not refer to the copyright
+notice or licensing information for the Work; and (iv) , consistent with
+Ssection 3(b), in the case of an Adaptation, a credit identifying the use of
+the Work in the Adaptation (e.g., "French translation of the Work by Original
+Author," or "Screenplay based on original Work by Original Author"). The credit
+required by this Section 4(c) may be implemented in any reasonable manner;
+provided, however, that in the case of a Adaptation or Collection, at a minimum
+such credit will appear, if a credit for all contributing authors of the
+Adaptation or Collection appears, then as part of these credits and in a manner
+at least as prominent as the credits for the other contributing authors. For
+the avoidance of doubt, You may only use the credit required by this Section
+for the purpose of attribution in the manner set out above and, by exercising
+Your rights under this License, You may not implicitly or explicitly assert or
+imply any connection with, sponsorship or endorsement by the Original Author,
+Licensor and/or Attribution Parties, as appropriate, of You or Your use of the
+Work, without the separate, express prior written permission of the Original
+Author, Licensor and/or Attribution Parties.
+ Except as otherwise agreed in writing by the Licensor or as may be
+otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly
+Perform the Work either by itself or as part of any Adaptations or Collections,
+You must not distort, mutilate, modify or take other derogatory action in
+relation to the Work which would be prejudicial to the Original Author's honor
+or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in
+which any exercise of the right granted in Section 3(b) of this License (the
+right to make Adaptations) would be deemed to be a distortion, mutilation,
+modification or other derogatory action prejudicial to the Original Author's
+honor and reputation, the Licensor will waive or not assert, as appropriate,
+this Section, to the fullest extent permitted by the applicable national law,
+to enable You to reasonably exercise Your right under Section 3(b) of this
+License (right to make Adaptations) but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
+WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
+PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
+ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
+SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
+EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN
+NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
+INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
+LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ This License and the rights granted hereunder will terminate automatically
+upon any breach by You of the terms of this License. Individuals or entities
+who have received Adaptations or Collections from You under this License,
+however, will not have their licenses terminated provided such individuals or
+entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7,
+and 8 will survive any termination of this License.
+ Subject to the above terms and conditions, the license granted here is
+perpetual (for the duration of the applicable copyright in the Work).
+Notwithstanding the above, Licensor reserves the right to release the Work
+under different license terms or to stop distributing the Work at any time;
+provided, however that any such election will not serve to withdraw this
+License (or any other license that has been, or is required to be, granted
+under the terms of this License), and this License will continue in full force
+and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ Each time You Distribute or Publicly Perform the Work or a Collection, the
+Licensor offers to the recipient a license to the Work on the same terms and
+conditions as the license granted to You under this License.
+ Each time You Distribute or Publicly Perform an Adaptation, Licensor offers
+to the recipient a license to the original Work on the same terms and
+conditions as the license granted to You under this License.
+ If any provision of this License is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this License, and without further action by the
+parties to this agreement, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+ No term or provision of this License shall be deemed waived and no breach
+consented to unless such waiver or consent shall be in writing and signed by
+the party to be charged with such waiver or consent.
+ This License constitutes the entire agreement between the parties with
+respect to the Work licensed here. There are no understandings, agreements or
+representations with respect to the Work not specified here. Licensor shall not
+be bound by any additional provisions that may appear in any communication from
+You. This License may not be modified without the mutual written agreement of
+the Licensor and You.
+ The rights granted under, and the subject matter referenced, in this
+License were drafted utilizing the terminology of the Berne Convention for the
+Protection of Literary and Artistic Works (as amended on September 28, 1979),
+the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO
+Performances and Phonograms Treaty of 1996 and the Universal Copyright
+Convention (as revised on July 24, 1971). These rights and subject matter take
+effect in the relevant jurisdiction in which the License terms are sought to be
+enforced according to the corresponding provisions of the implementation of
+those treaty provisions in the applicable national law. If the standard suite
+of rights granted under applicable copyright law includes additional rights not
+granted under this License, such additional rights are deemed to be included in
+the License; this License is not intended to restrict the license of any rights
+under applicable law.
+
+ Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty
+whatsoever in connection with the Work. Creative Commons will not be liable to
+You or any party on any legal theory for any damages whatsoever, including
+without limitation any general, special, incidental or consequential damages
+arising in connection to this license. Notwithstanding the foregoing two (2)
+sentences, if Creative Commons has expressly identified itself as the Licensor
+hereunder, it shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the Work is
+licensed under the CCPL, Creative Commons does not authorize the use by either
+party of the trademark "Creative Commons" or any related trademark or logo of
+Creative Commons without the prior written consent of Creative Commons. Any
+permitted use will be in compliance with Creative Commons' then-current
+trademark usage guidelines, as may be published on its website or otherwise
+made available upon request from time to time. For the avoidance of doubt, this
+trademark restriction does not form part of the License.
+
+ Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/stained_glass/LICENSE.txt b/stained_glass/LICENSE.txt
new file mode 100644
index 0000000..d270033
--- /dev/null
+++ b/stained_glass/LICENSE.txt
@@ -0,0 +1,13 @@
++---- zlib/libpng license----+
+
+Copyright (c) 2012 Calinou
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution. \ No newline at end of file
diff --git a/stained_glass/README.md b/stained_glass/README.md
new file mode 100644
index 0000000..66c1963
--- /dev/null
+++ b/stained_glass/README.md
@@ -0,0 +1,195 @@
+
+Doyousketch2's Stained Glass mod
+ ver 1.7
+
+Image: http://oi47.tinypic.com/hst6s3.jpg
+
+With alpha enabled: http://oi44.tinypic.com/5vraxf.jpg
+
+==============================================================================
+Originally developed by Eli Innes/Doyousketch2, and distributed
+under GPL v2. Further changes by VanessaE (removing from creative inventory)
+and Jeremy Anderson (fixing craft recipes, renaming blocks)
+
+==============================================================================
+
+Dependencies: VanessaE's Unified Dyes, Calinou's More Blocks
+
+to Install:
+
+Unzip the mod file you just downloaded.
+
+it should be something like: Doyousketch2-stained_glass-1.1.zip
+or stained_glass-master.zip, depending on where you downloaded it from
+
+rename the new folder that looks like:
+Doyousketch2-stained_glass-1.1 -or- stained_glass-master
+to simply read "stained_glass"
+
+then move it into your Minetest mods folder.
+
+Even better, get stained_glass from one of the github pages:
+https://github.com/doyousketch2/stained_glass
+https://github.com/VanessaE/stained_glass
+https://github.com/andersje/stained_glass
+
+-- this will get you the latest version of the code, and you
+can update at any time by doing a git pull
+
+
+
+==============================================================================
+To turn off types of glass, alter settings.txt in the stained_glass directory.
+By default, all six (SIX!) types of stained_glass are enabled: regular (based on super_glow_glass), med_glow (based on glow_glass) and no-glow (Based on default:glass), trap regular (based on trap_super_glow_glass), trap med_glow (based on trap_glow_glass) and trap_noglow (based on trapglass)
+
+stained_glass.full_light = true
+stained_glass.med_light = true
+stained_glass.no_light = true
+stained_glass.trap_full_light = true
+stained_glass.trap_med_light = true
+stained_glass.trap_no_light = true
+
+Setting any of these to false will prevent that type of stained_glass from being loaded. If you set them all to false, you won't get any stained_glass. Mix and match as you choose -- you can turn on only one, if you wish, and it will work just fine.
+
+One of the high points of trap stained glass is that liquids flow through it -- making illuminated waterfalls a possibility.
+
+
+==============================================================================
+
+(use trap super glow glass or trap glow glass or trapglass -- now available in moreblocks -- to make the trap variant of this)
+
+Recipe for standard colors:
+
+image: http://oi50.tinypic.com/1ibs7c.jpg
+
+ dye
+ super glow glass
+ super glow glass
+ super glow glass
+
+
+
+Recipe for pastel colors:
+
+image: http://oi45.tinypic.com/2wbvkti.jpg
+
+ light dye
+ white paint
+ super glow glass
+ super glow glass
+ super glow glass
+
+Recipe for faint colors:
+
+image: http://oi45.tinypic.com/2wbvkti.jpg
+
+ light dye
+ white paint
+ white paint
+ super glow glass
+ super glow glass
+ super glow glass
+
+
+All recipes produce three glowing stained glass blocks.
+
+
+==============================================================================
+
+
+The Palette includes:
+
+ red, orange, yellow, lime, green, aqua
+ cyan, skyblue, blue, violet, magenta, redviolet
+
+Full & half-saturation, medium and dark shades have been included
+as well as light, pastel, and faint tints.
+
+Look at settings.txt to see how you can enable/disable full-glow, half-glow and no-glow blocks -- tested in all combinations. enjoy.
+
+
+==============================================================================
+
+
+Misc. Notes
+-----------
+
+Blocks are now available by name:
+e.g. /giveme stained_glass:orange 3 # get 3 orange sg blocks
+or /giveme stained_glass:light_yellow
+or /giveme stained_glass:pastel_yellow
+or /giveme stained_glass:faint_yellow
+or /giveme stained_glass:yellow
+
+or /giveme stained_glass:lowglow_yellow
+or /giveme stained_glass:noglow_dark_green
+or /giveme stained_glass:trap_noglow_dark_green
+or /giveme stained_glass:trap_lowglow_yellow
+or /giveme stained_glass:trap_medium_aqua
+
+You get the idea.
+
+
+NUMERIC CODES FOR BLOCKS (this is the old way of coding these blocks
+developed by Doyousketch2)
+
+Please don't try to use /give commands, the items are now in numerical format,
+and it would be tough to try to explain it.
+
+If you really want to try, it goes like this:
+
+yellow = 1
+lime = 2
+green = 3
+aqua = 4
+cyan = 5
+skyblue = 6
+blue = 7
+violet = 8
+magenta = 9
+redviolet = 10
+red = 11
+orange = 12
+
+
+however, minetest sees it in the order 10, 11, 12, 1, 2, 3...
+so redviolet actually comes first.
+
+and for whatever reason, minetest doesn't take blank spaces _ into consideration.
+so the attributes just act like the next column of digits.
+
+I had to offset them to keep it all in order.
+
+Brightness:
+
+dark = 3
+medium = 4
+full = 5
+
+Saturation:
+
+50% = 6
+full = 7
+
+so "Red, dark 50%" would be: stained_glass:11_3_6
+"Blue, medium full-saturation" is: stained_glass:7_4_7
+
+then we get to the bright colors.
+
+same hue numbers, 1 - 12
+but the attributes are:
+
+light = 8
+pastel = 9
+faint = 91
+
+so "Violet, light" is: stained_glass:8_8
+and ""Orange, faint" is: stained_glass:12_91
+
+I think this is too much to keep track of, but I hope this explains things in case anybody else is developing code.
+For everyday purposes, let the computer keep track of the registered nodes, and just pick them out with the menu instead.
+
+
+==============================================================================
+
+
diff --git a/stained_glass/changelog.txt b/stained_glass/changelog.txt
new file mode 100644
index 0000000..534868d
--- /dev/null
+++ b/stained_glass/changelog.txt
@@ -0,0 +1,119 @@
+
+Changelog
+
+---------
+ver 1.7
+Sat 1 Sep 2013
+I like trapglass, so _all_ variants of stained_glass are now available as (identical) trapglass variants. also, ability to ditch trapglass blocks via settings.txt added. In fact, you can now pick and choose which variants of stained_glass you wish to enable.
+
+ver 1.6
+Fri 30 Aug 2013
+added configfile settings.txt to allow disabling of full_light (super_glow_glass-based), med_light (glow_glass-based) and no_light (default:glass) blocks. just set the relevant fields to 'false' and they will not be loaded when you start the game.
+
+ver 1.5.1
+Mon 26 Aug 2013
+prompted by VanessaE's initial cleanup, MUCH cleanup of the code. No need to have > 1 file anymore.
+
+ver 1.5
+Sun 25 Aug 2013
+added low-glow (brightness 11) and noglow (brightness 0) stained glass blows, using glow_glass and regular glass accordingly.
+
+ver 1.4
+Thu 22 Aug 2013
+*phew* made aliases for all numeric block names to map to new color-name based scheme
+updated craft recipes to work with new dyes format
+rejiggered whole system of block and craft registration
+set to have all blocks at LIGHT_MAX -- since they were manually specifying '14' as a light level before (which is current max)
+nothing returns buckets anymore, because you don't need buckets to make the dyes to make the blocks.
+
+---------
+
+ver 1.1
+
+Sun 24 Feb 2013 05:26:29 AM EST
+
+Faint was too faint in-game, so I made 'em look more the way I expected.
+
+Fixed recipes for pastel and faint blocks.
+
+Also, made certain the faint blocks return two buckets instead of only one.
+
+---------
+
+
+ver 1.0
+
+Sun 24 Feb 2013 12:13:17 AM EST
+
+
+Think everything's in order.
+
+
+---------
+
+
+ver 0.9
+
+Sat 23 Feb 2013 05:23:17 5M EST
+
+Added light colors.
+Attempted to order colors by hue.
+Turned out to be a lot harder than imagined.
+
+alpha-numeric order is goofy.
+
+I was thinking it was doing: 1, 10, 11, 12, 2, 3, 4...
+but it was doing: 10, 11, 12, 1, 2, 3, 4...
+
+---------
+
+
+ver 0.8
+
+Sat 23 Feb 2013 01:18:24 AM EST
+
+Fixed missing comma in script.
+
+
+---------
+
+
+ver 0.7
+
+Sat 23 Feb 2013 01:01:22 AM EST
+
+Added full saturation Medium and Dark shades.
+
+
+---------
+
+
+ver 0.6
+
+Fri 22 Feb 2013 08:27:53 PM EST
+
+Fixed a bug where I forgot a comma in the script.
+Nothing major, but it wouldn't load unless it was in the right spot.
+
+The blocks light up nice and bright. Quite saturated.
+Perhaps too intense for my purposes.
+
+Will create more subdued colors, much more like actual stained glass.
+Especially pastels, and flesh tones.
+
+Perhaps turn the light intensity down.
+Maybe make some/all of them out of standard glow glass instead.
+
+
+---------
+
+
+ver 0.5
+
+Fri 22 Feb 2013 06:42:24 PM EST
+
+Essentially the first version, but I'm starting at ver 0.5 because I want to check for bugs before it's released.
+
+Has the Full saturation colors included. (except for yellow, as super-glow-glass is already)
+Haven't decided if/when I'll include the other colors.
+Perhaps some/all eventually.
diff --git a/stained_glass/colors.txt b/stained_glass/colors.txt
new file mode 100644
index 0000000..ebf0a29
--- /dev/null
+++ b/stained_glass/colors.txt
@@ -0,0 +1,148 @@
+
+
+Full-saturation colors:
+-----------------------
+
+
+ red 255, 0, 0 stained_glass_red.png
+ orange 255,127, 0 stained_glass_orange.png
+ lime 127,255, 0 stained_glass_lime.png
+ green 0,255, 0 stained_glass_green.png
+ aqua 0,255,127 stained_glass_aqua.png
+ cyan 0,255,255 stained_glass_cyan.png
+ skyblue 0,127,255 stained_glass_skyblue.png
+ blue 0, 0,255 stained_glass_blue.png
+ violet 127, 0,255 stained_glass_violet.png
+ magenta 255, 0,255 stained_glass_magenta.png
+ redviolet 255, 0,127 stained_glass_redviolet.png
+
+
+ medium red 169, 0, 0 stained_glass_medium_red.png
+ medium orange 169, 84, 0 stained_glass_medium_orange.png
+ medium yellow 169,169, 0 stained_glass_medium_yellow.png
+ medium lime 84,169, 0 stained_glass_medium_lime.png
+ medium green 0,169, 0 stained_glass_medium_green.png
+ medium aqua 0,169, 84 stained_glass_medium_aqua.png
+ medium cyan 0,169,169 stained_glass_medium_cyan.png
+ medium skyblue 0, 84,169 stained_glass_medium_skyblue.png
+ medium blue 0, 0,169 stained_glass_medium_blue.png
+ medium violet 84, 0,169 stained_glass_medium_violet.png
+ medium magenta 169, 0,169 stained_glass_medium_magenta.png
+ medium redviolet 169, 0, 84 stained_glass_medium_redviolet.png
+
+
+ dark red 84, 0, 0 stained_glass_dark_red.png
+ dark orange 84, 42, 0 stained_glass_dark_orange.png
+ dark yellow 84, 84, 0 stained_glass_dark_yellow.png
+ dark lime 42, 84, 0 stained_glass_dark_lime.png
+ dark green 0, 84, 0 stained_glass_dark_green.png
+ dark aqua 0, 84, 42 stained_glass_dark_aqua.png
+ dark cyan 0, 84, 84 stained_glass_dark_cyan.png
+ dark skyblue 0, 42, 84 stained_glass_dark_skyblue.png
+ dark blue 0, 0, 84 stained_glass_dark_blue.png
+ dark violet 42, 0, 84 stained_glass_dark_violet.png
+ dark magenta 84, 0, 84 stained_glass_dark_magenta.png
+ dark redviolet 84, 0, 42 stained_glass_dark_redviolet.png
+
+
+
+
+
+Low-saturation colors:
+----------------------
+
+
+ red 50% saturation 191, 65, 65 stained_glass_red_s50.png
+ orange 50% saturation 191,127, 65 stained_glass_orange_s50.png
+ yellow 50% saturation 191,191, 65 stained_glass_yellow_s50.png
+ lime 50% saturation 127,191, 65 stained_glass_lime_s50.png
+ green 50% saturation 65,191, 65 stained_glass_green_s50.png
+ aqua 50% saturation 65,191,127 stained_glass_aqua_s50.png
+ cyan 50% saturation 65,191,191 stained_glass_cyan_s50.png
+ skyblue 50% saturation 65,127,191 stained_glass_skyblue_s50.png
+ blue 50% saturation 65, 65,191 stained_glass_blue_s50.png
+ violet 50% saturation 127, 65,191 stained_glass_violet_s50.png
+ magenta 50% saturation 191, 65,191 stained_glass_magenta_s50.png
+ redviolet 50% saturation 191, 65,127 stained_glass_redviolet_s50.png
+
+
+
+ medium red 50% saturation 126, 42, 42 stained_glass_medium_red_s50.png
+ medium orange 50% saturation 126, 84, 42 stained_glass_medium_orange_s50.png
+ medium yellow 50% saturation 126,126, 42 stained_glass_medium_yellow_s50.png
+ medium lime 50% saturation 86,126, 42 stained_glass_medium_lime_s50.png
+ medium green 50% saturation 42,126, 42 stained_glass_medium_green_s50.png
+ medium aqua 50% saturation 42,126, 84 stained_glass_medium_aqua_s50.png
+ medium cyan 50% saturation 42,126,126 stained_glass_medium_cyan_s50.png
+ medium skyblue 50% saturation 42, 84,126 stained_glass_medium_skyblue_s50.png
+ medium blue 50% saturation 42, 42,126 stained_glass_medium_blue_s50.png
+ medium violet 50% saturation 86, 42,126 stained_glass_medium_violet_s50.png
+ medium magenta 50% saturation 126, 42,126 stained_glass_medium_magenta_s50.png
+ medium redviolet 50% saturation 126, 42, 84 stained_glass_medium_redviolet_s50.png
+
+
+
+ dark red 50% saturation 63, 21, 21 stained_glass_dark_red_s50.png
+ dark orange 50% saturation 63, 42, 21 stained_glass_dark_orange_s50.png
+ dark yellow 50% saturation 63, 63, 21 stained_glass_dark_yellow_s50.png
+ dark lime 50% saturation 42, 63, 21 stained_glass_dark_lime_s50.png
+ dark green 50% saturation 21, 63, 21 stained_glass_dark_green_s50.png
+ dark aqua 50% saturation 21, 63, 42 stained_glass_dark_aqua_s50.png
+ dark cyan 50% saturation 21, 63, 63 stained_glass_dark_cyan_s50.png
+ dark skyblue 50% saturation 21, 42, 63 stained_glass_dark_skyblue_s50.png
+ dark blue 50% saturation 21, 21, 63 stained_glass_dark_blue_s50.png
+ dark violet 50% saturation 42, 21, 63 stained_glass_dark_violet_s50.png
+ dark magenta 50% saturation 63, 21, 63 stained_glass_dark_magenta_s50.png
+ dark redviolet 50% saturation 63, 21, 42 stained_glass_dark_redviolet_s50.png
+
+
+
+
+Light colors:
+----------------------
+
+
+ light red 255,121,121 stained_glass_light_red.png
+ light orange 255,187,121 stained_glass_light_orange.png
+ light yellow 253,255,121 stained_glass_light_yellow.png
+ light lime 187,255,121 stained_glass_light_lime.png
+ light green 121,255,121 stained_glass_light_green.png
+ light aqua 121,255,187 stained_glass_light_aqua.png
+ light cyan 121,253,255 stained_glass_light_cyan.png
+ light skyblue 121,187,255 stained_glass_light_skyblue.png
+ light blue 121,121,255 stained_glass_light_blue.png
+ light violet 187,121,255 stained_glass_light_violet.png
+ light magenta 255,121,253 stained_glass_light_magenta.png
+ light redviolet 255,121,187 stained_glass_light_redviolet.png
+
+
+
+ pastel red 255,187,187 stained_glass_pastel_red.png
+ pastel orange 255,221,187 stained_glass_pastel_orange.png
+ pastel yellow 254,255,187 stained_glass_pastel_yellow.png
+ pastel lime 221,255,187 stained_glass_pastel_lime.png
+ pastel green 187,255,187 stained_glass_pastel_green.png
+ pastel aqua 187,255,221 stained_glass_pastel_aqua.png
+ pastel cyan 187,254,255 stained_glass_pastel_cyan.png
+ pastel skyblue 187,221,255 stained_glass_pastel_skyblue.png
+ pastel blue 187,187,255 stained_glass_pastel_blue.png
+ pastel violet 221,187,255 stained_glass_pastel_violet.png
+ pastel magenta 255,187,254 stained_glass_pastel_magenta.png
+ pastel redviolet 255,187,221 stained_glass_pastel_redviolet.png
+
+
+
+ faint red 255,219,219 stained_glass_faint_red.png
+ faint orange 255,237,219 stained_glass_faint_orange.png
+ faint yellow 254,255,219 stained_glass_faint_yellow.png
+ faint lime 237,255,219 stained_glass_faint_lime.png
+ faint green 219,255,219 stained_glass_faint_green.png
+ faint aqua 219,255,237 stained_glass_faint_aqua.png
+ faint cyan 219,254,255 stained_glass_faint_cyan.png
+ faint skyblue 219,237,255 stained_glass_faint_skyblue.png
+ faint blue 227,227,255 stained_glass_faint_blue.png
+ faint violet 237,219,255 stained_glass_faint_violet.png
+ faint magenta 255,219,254 stained_glass_faint_magenta.png
+ faint redviolet 255,219,237 stained_glass_faint_redviolet.png
+
+
diff --git a/stained_glass/depends.txt b/stained_glass/depends.txt
new file mode 100644
index 0000000..d3cd4e1
--- /dev/null
+++ b/stained_glass/depends.txt
@@ -0,0 +1,3 @@
+default
+moreblocks
+unifieddyes
diff --git a/stained_glass/init.lua b/stained_glass/init.lua
new file mode 100644
index 0000000..be804e9
--- /dev/null
+++ b/stained_glass/init.lua
@@ -0,0 +1,356 @@
+--[[
+
+Stained Glass
+
+This mod provides luminescent stained glass blocks for Minetest 0.4.7+
+
+Depends:
+[moreblocks] by Calinou
+[unifieddyes] by VanessaE
+
+==============================================================================
+Sat 04 May 2013 01:52:35 PM EDT
+
+Copyright (C) 2013, Eli Innis
+Email: doyousketch2 @ yahoo.com
+
+Unified Dyes was released under GNU-GPL 2.0, see LICENSE for info.
+More Blocks was released under zlib/libpng for code and CC BY-SA 3.0 Unported for textures, see LICENSE.txt for info.
+
+Additional changes by VanessaEzekowitz in July 2013 to take all items
+out of creative inventory.
+
+August 2013 -- Jeremy Anderson tries to get this working after the new color
+changes, and to resurrect the craft recipes. Still GPL'd as far as I'm concerned.
+
+August 2013 -- rewritten a bit by VanessaEzekowitz to further condense the code.
+
+==============================================================================
+
+
+Recipe for standard colors:
+
+dye
+super glow glass
+super glow glass
+super glow glass
+
+
+Recipe for pastel colors:
+
+light dye
+white paint
+super glow glass
+super glow glass
+super glow glass
+
+
+Recipe for faint colors:
+
+light dye
+white paint
+white paint
+super glow glass
+super glow glass
+super glow glass
+
+recipe for low-glow-stained-glass:
+as above, but substitute 'glow glass' for super glow glass.
+
+recipe for no-glow-stained-glass:
+as regular stained glass, but substitute plain 'glass' for super glow glass
+
+
+All recipes produce three stained glass blocks.
+
+==============================================================================
+]]--
+
+function makenode(arg)
+ local name=arg.blockname
+ local myglow=arg.glow
+ local myprefix=arg.prefix
+ local imagename=arg.imagename
+ local safe=arg.walkflag
+ local Description
+
+ local function tchelper(first, rest)
+ return first:upper()..rest:lower()
+ end -- from lua-users.org/wiki/StringRecipes
+ -- above function is used to turn red_violet_s50 to 'Red Violet S50'
+
+ --register item attributes
+
+ Description=string.gsub("Stained Glass - " ..myprefix..name, "_", " ")
+ Description=Description:gsub("(%a)([%w_']*)", tchelper)
+
+ minetest.register_node("stained_glass:"..myprefix..name, {
+ description = Description,
+ drawtype = "glasslike",
+ tiles = {"stained_glass_" .. imagename .. ".png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable=safe, -- if not safe, this is trapglass
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults()
+ })
+end
+
+-- maybe someday, I can cleanly combine these two functions.
+
+function stained_trapglass_define(arg)
+ local code=arg.colorcode
+ local name=arg.colorname
+ local rawdyename=arg.recipe
+ local mydye=arg.recipe
+ local myshadename=arg.shade
+ local imagename=name
+
+ local stained_glass_blocktype = { }
+
+ local stained_glass_lightlevel = { }
+
+ if stained_glass.trap_full_light then
+ stained_glass_lightlevel[""] = LIGHT_MAX
+ stained_glass_blocktype[""] = "moreblocks:trap_super_glow_glass"
+ end -- see settings.txt for these settings.
+
+ if stained_glass.trap_med_light then
+ stained_glass_lightlevel["lowglow_"] = LIGHT_MAX-3
+ stained_glass_blocktype["lowglow_"] = "moreblocks:trap_glow_glass"
+ end
+
+ if stained_glass.trap_no_light then
+ stained_glass_lightlevel["noglow_"] = 0
+ stained_glass_blocktype["noglow_"] = "moreblocks:trap_glass"
+ end
+
+ for myprefix,myglow in pairs(stained_glass_lightlevel) do
+ local glasstype = stained_glass_blocktype[myprefix]
+ local name="trap_" .. name
+
+ -- define myrecipe as a table, pass it in.
+
+ local myrecipe = { mydye, glasstype, glasstype, glasstype }
+ -- those four items will ALWAYS be there. For faint and pastel, we
+ -- need to add additional dyes. If you have defined a new shade, then
+ -- you should probably handle it here.
+
+ if myshadename == "pastel_" then
+ myrecipe[5] = "dye:white"
+ end
+
+ if myshadename == "faint_" then
+ myrecipe[5] = "dye:white"
+ myrecipe[6] = "dye:white"
+ end
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "stained_glass:"..myprefix..name.." 3",
+ recipe = myrecipe,
+ })
+
+ makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=imagename, walkflag=false}
+ end
+end
+
+function stained_glass_define(arg)
+ local code=arg.colorcode
+ local name=arg.colorname
+ local rawdyename=arg.recipe
+ local mydye=arg.recipe
+ local myshadename=arg.shade
+ local imagename=name
+
+ local stained_glass_blocktype = { }
+
+ local stained_glass_lightlevel = { }
+
+ if stained_glass.full_light then
+ stained_glass_lightlevel[""] = LIGHT_MAX
+ stained_glass_blocktype[""] = "moreblocks:super_glow_glass"
+ end -- see settings.txt for these settings.
+
+ if stained_glass.med_light then
+ stained_glass_lightlevel["lowglow_"] = LIGHT_MAX-3
+ stained_glass_blocktype["lowglow_"] = "moreblocks:glow_glass"
+ end
+
+ if stained_glass.no_light then
+ stained_glass_lightlevel["noglow_"] = 0
+ stained_glass_blocktype["noglow_"] = "default:glass"
+ end
+
+ for myprefix,myglow in pairs(stained_glass_lightlevel) do
+ local glasstype = stained_glass_blocktype[myprefix]
+
+ -- define myrecipe as a table, pass it in.
+
+ local myrecipe = { mydye, glasstype, glasstype, glasstype }
+ -- those four items will ALWAYS be there. For faint and pastel, we
+ -- need to add additional dyes. If you have defined a new shade, then
+ -- you should probably handle it here.
+
+ if myshadename == "pastel_" then
+ myrecipe[5] = "dye:white"
+ end
+
+ if myshadename == "faint_" then
+ myrecipe[5] = "dye:white"
+ myrecipe[6] = "dye:white"
+ end
+
+ minetest.register_craft({
+ type = "shapeless",
+ output = "stained_glass:"..myprefix..name.." 3",
+ recipe = myrecipe,
+ })
+
+ makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=name, walkflag=true}
+
+ if myprefix == "" then
+ local aliasname
+ minetest.register_alias( "stained_glass:" .. code, "stained_glass:" .. name)
+ if string.match(name,"redviolet") then
+ local oldname=name
+ aliasname=string.gsub(name, "redviolet","red_violet") -- need to support red_violet existence, too.
+ minetest.register_alias( "stained_glass:" .. aliasname, "stained_glass:" .. oldname)
+ end
+ end
+ -- and an alias from the numeric to the named block
+ -- we need to keep the numeric block for all the people that used
+ -- pre-v1.4 blocks in their worlds.
+ -- no aliases for noglow- and lowglow- blocks, because they didn't
+ -- exist until v1.5
+ end
+end
+
+-- true means this color's recipe must use a direct "dye:xxxxx" item name
+-- (perhaps because the related groups overlap two or more distinct colors)
+-- false means the recipe uses "group:dye,unicolor_xxxxx"
+
+stained_glass= {}
+local worldpath=minetest.get_worldpath()
+local modpath=minetest.get_modpath("stained_glass")
+dofile(modpath .. "/settings.txt")
+
+-- the new settings.txt file has a variety of possible settings.
+-- see the file for examples. We'll access those settings where its important, in
+-- the stained glass module, where we'll build up the tables to contain
+-- only what we need.
+
+stained_glass_hues = {
+ { "yellow", true },
+ { "lime", false },
+ { "green", true },
+ { "aqua", false },
+ { "cyan", false },
+ { "skyblue", true },
+ { "blue", false },
+ { "violet", false },
+ { "magenta", true },
+ { "redviolet", true },
+ { "red", true },
+ { "orange", false },
+
+-- please note that these only apply when our shadelevel is ""
+
+}
+
+stained_glass_shades = {
+ {"dark_", 3 },
+ {"medium_", 4 },
+ {"", 5 }, -- full brightness
+ {"light_", 8 },
+ {"pastel_", 9 },
+ {"faint_", 91 }
+
+ -- note that dark_ medium_ and plain also have a half-saturation
+ -- equivalent automatically defined in the code
+}
+
+for i in ipairs(stained_glass_hues) do
+
+ local huename = stained_glass_hues[i][1]
+ local huenumber = i
+
+ for j in ipairs(stained_glass_shades) do
+
+ local shadename = stained_glass_shades[j][1]
+ local shadenumber = stained_glass_shades[j][2]
+
+ local recipevalue = nil
+
+ recipevalue = "group:dye,unicolor_"..shadename..huename
+ if (shadename == "" and stained_glass_hues[i][2]) then
+ -- print(huename .. " is set to true -- substituting dye:huename ")
+ recipevalue = "dye:"..huename
+ elseif (shadename=="pastel_" or shadename=="faint_") then
+ -- force light_dye for pastel and faint colors
+ recipevalue = "group:dye,unicolor_light_"..huename
+ else -- default case
+ recipevalue = "group:dye,unicolor_"..shadename..huename
+ end
+
+ if shadename == "dark_" or shadename == "medium_" or shadename == "" then
+ stained_glass_define({
+ colorcode = huenumber.."_"..shadenumber.."_7",
+ colorname = shadename..huename,
+ recipe = recipevalue,
+ shade = shadename,
+ })
+
+ stained_trapglass_define({
+ colorcode = huenumber.."_"..shadenumber.."_7",
+ colorname = shadename..huename,
+ recipe = recipevalue,
+ shade = shadename,
+ }) -- only defines something if the trap is enabled.
+
+ -- below is the automatic "half saturation" block
+ -- which was mentioned previously
+ -- this is unicolor only, so switch dyename
+ -- back to unicolor...
+ recipevalue="group:dye,unicolor_"..shadename..huename
+ stained_glass_define({
+ colorcode = huenumber.."_"..shadenumber.."_6",
+ colorname = shadename..huename.."_s50",
+ recipe = recipevalue.."_s50",
+ shade = shadename,
+ })
+ stained_trapglass_define({
+ colorcode = huenumber.."_"..shadenumber.."_6",
+ colorname = shadename..huename.."_s50",
+ recipe = recipevalue.."_s50",
+ shade = shadename,
+ }) -- only defines something if the trap is enabled.
+ -- because we define two blocks inside this chunk of
+ -- code, we can't just define the relevant vars and
+ -- move the proc_call after the if-then loop.
+
+ elseif shadename == "light_" or shadename == "pastel_" or shadename == "faint_" then
+ stained_glass_define({
+ colorcode = huenumber.."_"..shadenumber,
+ colorname = shadename..huename,
+ recipe = recipevalue,
+ shade = shadename,
+ })
+ stained_trapglass_define({
+ colorcode = huenumber.."_"..shadenumber,
+ colorname = shadename..huename,
+ recipe = recipevalue,
+ shade = shadename,
+ }) -- only defines something if the trap is enabled.
+
+ end
+
+ end
+end
+
+print("[stained_glass] Loaded!")
+
+
diff --git a/stained_glass/settings.txt b/stained_glass/settings.txt
new file mode 100644
index 0000000..6915cd7
--- /dev/null
+++ b/stained_glass/settings.txt
@@ -0,0 +1,6 @@
+stained_glass.full_light = true
+stained_glass.med_light = true
+stained_glass.no_light = true
+stained_glass.trap_full_light = true
+stained_glass.trap_med_light = true
+stained_glass.trap_no_light = true
diff --git a/stained_glass/textures/stained_glass_aqua.png b/stained_glass/textures/stained_glass_aqua.png
new file mode 100644
index 0000000..1174f4e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_aqua.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_aqua_s50.png b/stained_glass/textures/stained_glass_aqua_s50.png
new file mode 100644
index 0000000..34d77e7
--- /dev/null
+++ b/stained_glass/textures/stained_glass_aqua_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_blue.png b/stained_glass/textures/stained_glass_blue.png
new file mode 100644
index 0000000..96ae7d2
--- /dev/null
+++ b/stained_glass/textures/stained_glass_blue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_blue_s50.png b/stained_glass/textures/stained_glass_blue_s50.png
new file mode 100644
index 0000000..3472288
--- /dev/null
+++ b/stained_glass/textures/stained_glass_blue_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_cyan.png b/stained_glass/textures/stained_glass_cyan.png
new file mode 100644
index 0000000..65bd86f
--- /dev/null
+++ b/stained_glass/textures/stained_glass_cyan.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_cyan_s50.png b/stained_glass/textures/stained_glass_cyan_s50.png
new file mode 100644
index 0000000..a72b1ee
--- /dev/null
+++ b/stained_glass/textures/stained_glass_cyan_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_aqua.png b/stained_glass/textures/stained_glass_dark_aqua.png
new file mode 100644
index 0000000..6f01166
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_aqua.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_aqua_s50.png b/stained_glass/textures/stained_glass_dark_aqua_s50.png
new file mode 100644
index 0000000..48f8d4d
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_aqua_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_blue.png b/stained_glass/textures/stained_glass_dark_blue.png
new file mode 100644
index 0000000..7bb62d0
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_blue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_blue_s50.png b/stained_glass/textures/stained_glass_dark_blue_s50.png
new file mode 100644
index 0000000..c320fbd
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_blue_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_cyan.png b/stained_glass/textures/stained_glass_dark_cyan.png
new file mode 100644
index 0000000..35d1ac1
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_cyan.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_cyan_s50.png b/stained_glass/textures/stained_glass_dark_cyan_s50.png
new file mode 100644
index 0000000..1e80dc3
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_cyan_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_green.png b/stained_glass/textures/stained_glass_dark_green.png
new file mode 100644
index 0000000..9eaf027
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_green.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_green_s50.png b/stained_glass/textures/stained_glass_dark_green_s50.png
new file mode 100644
index 0000000..0df2e40
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_green_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_lime.png b/stained_glass/textures/stained_glass_dark_lime.png
new file mode 100644
index 0000000..8d4eeda
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_lime.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_lime_s50.png b/stained_glass/textures/stained_glass_dark_lime_s50.png
new file mode 100644
index 0000000..fb5173e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_lime_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_magenta.png b/stained_glass/textures/stained_glass_dark_magenta.png
new file mode 100644
index 0000000..b07a4da
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_magenta.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_magenta_s50.png b/stained_glass/textures/stained_glass_dark_magenta_s50.png
new file mode 100644
index 0000000..7d94e32
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_magenta_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_orange.png b/stained_glass/textures/stained_glass_dark_orange.png
new file mode 100644
index 0000000..494ea50
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_orange.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_orange_s50.png b/stained_glass/textures/stained_glass_dark_orange_s50.png
new file mode 100644
index 0000000..29b2c17
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_orange_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_red.png b/stained_glass/textures/stained_glass_dark_red.png
new file mode 100644
index 0000000..6d1f166
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_red.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_red_s50.png b/stained_glass/textures/stained_glass_dark_red_s50.png
new file mode 100644
index 0000000..1986261
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_red_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_redviolet.png b/stained_glass/textures/stained_glass_dark_redviolet.png
new file mode 100644
index 0000000..48f7861
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_redviolet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_redviolet_s50.png b/stained_glass/textures/stained_glass_dark_redviolet_s50.png
new file mode 100644
index 0000000..45d5efa
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_redviolet_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_skyblue.png b/stained_glass/textures/stained_glass_dark_skyblue.png
new file mode 100644
index 0000000..12e2134
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_skyblue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_skyblue_s50.png b/stained_glass/textures/stained_glass_dark_skyblue_s50.png
new file mode 100644
index 0000000..eb20781
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_skyblue_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_violet.png b/stained_glass/textures/stained_glass_dark_violet.png
new file mode 100644
index 0000000..ff6e95c
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_violet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_violet_s50.png b/stained_glass/textures/stained_glass_dark_violet_s50.png
new file mode 100644
index 0000000..c783fca
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_violet_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_yellow.png b/stained_glass/textures/stained_glass_dark_yellow.png
new file mode 100644
index 0000000..3e091ab
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_yellow.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_dark_yellow_s50.png b/stained_glass/textures/stained_glass_dark_yellow_s50.png
new file mode 100644
index 0000000..b21ca45
--- /dev/null
+++ b/stained_glass/textures/stained_glass_dark_yellow_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_aqua.png b/stained_glass/textures/stained_glass_faint_aqua.png
new file mode 100644
index 0000000..5d4f8b2
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_aqua.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_blue.png b/stained_glass/textures/stained_glass_faint_blue.png
new file mode 100644
index 0000000..328dee0
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_blue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_cyan.png b/stained_glass/textures/stained_glass_faint_cyan.png
new file mode 100644
index 0000000..3ad33f9
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_cyan.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_green.png b/stained_glass/textures/stained_glass_faint_green.png
new file mode 100644
index 0000000..d45937e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_green.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_lime.png b/stained_glass/textures/stained_glass_faint_lime.png
new file mode 100644
index 0000000..fbef2e9
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_lime.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_magenta.png b/stained_glass/textures/stained_glass_faint_magenta.png
new file mode 100644
index 0000000..4d1669f
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_magenta.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_orange.png b/stained_glass/textures/stained_glass_faint_orange.png
new file mode 100644
index 0000000..e8af488
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_orange.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_red.png b/stained_glass/textures/stained_glass_faint_red.png
new file mode 100644
index 0000000..996129e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_red.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_redviolet.png b/stained_glass/textures/stained_glass_faint_redviolet.png
new file mode 100644
index 0000000..01c8f85
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_redviolet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_skyblue.png b/stained_glass/textures/stained_glass_faint_skyblue.png
new file mode 100644
index 0000000..ce01c2e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_skyblue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_violet.png b/stained_glass/textures/stained_glass_faint_violet.png
new file mode 100644
index 0000000..4cc866c
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_violet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_yellow.png b/stained_glass/textures/stained_glass_faint_yellow.png
new file mode 100644
index 0000000..3340122
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_yellow.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_green.png b/stained_glass/textures/stained_glass_green.png
new file mode 100644
index 0000000..3d01639
--- /dev/null
+++ b/stained_glass/textures/stained_glass_green.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_green_s50.png b/stained_glass/textures/stained_glass_green_s50.png
new file mode 100644
index 0000000..5217edf
--- /dev/null
+++ b/stained_glass/textures/stained_glass_green_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_aqua.png b/stained_glass/textures/stained_glass_light_aqua.png
new file mode 100644
index 0000000..f908c5a
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_aqua.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_blue.png b/stained_glass/textures/stained_glass_light_blue.png
new file mode 100644
index 0000000..d4b38aa
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_blue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_cyan.png b/stained_glass/textures/stained_glass_light_cyan.png
new file mode 100644
index 0000000..2de626b
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_cyan.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_green.png b/stained_glass/textures/stained_glass_light_green.png
new file mode 100644
index 0000000..a5ad913
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_green.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_lime.png b/stained_glass/textures/stained_glass_light_lime.png
new file mode 100644
index 0000000..fafda54
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_lime.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_magenta.png b/stained_glass/textures/stained_glass_light_magenta.png
new file mode 100644
index 0000000..2e2f4f5
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_magenta.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_orange.png b/stained_glass/textures/stained_glass_light_orange.png
new file mode 100644
index 0000000..36a4dcc
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_orange.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_red.png b/stained_glass/textures/stained_glass_light_red.png
new file mode 100644
index 0000000..31e81f6
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_red.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_redviolet.png b/stained_glass/textures/stained_glass_light_redviolet.png
new file mode 100644
index 0000000..1500ec5
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_redviolet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_skyblue.png b/stained_glass/textures/stained_glass_light_skyblue.png
new file mode 100644
index 0000000..9211d63
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_skyblue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_violet.png b/stained_glass/textures/stained_glass_light_violet.png
new file mode 100644
index 0000000..3bc71dc
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_violet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_light_yellow.png b/stained_glass/textures/stained_glass_light_yellow.png
new file mode 100644
index 0000000..2f592e9
--- /dev/null
+++ b/stained_glass/textures/stained_glass_light_yellow.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_lime.png b/stained_glass/textures/stained_glass_lime.png
new file mode 100644
index 0000000..3990458
--- /dev/null
+++ b/stained_glass/textures/stained_glass_lime.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_lime_s50.png b/stained_glass/textures/stained_glass_lime_s50.png
new file mode 100644
index 0000000..a29e47c
--- /dev/null
+++ b/stained_glass/textures/stained_glass_lime_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_magenta.png b/stained_glass/textures/stained_glass_magenta.png
new file mode 100644
index 0000000..717b26c
--- /dev/null
+++ b/stained_glass/textures/stained_glass_magenta.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_magenta_s50.png b/stained_glass/textures/stained_glass_magenta_s50.png
new file mode 100644
index 0000000..57bbd86
--- /dev/null
+++ b/stained_glass/textures/stained_glass_magenta_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_aqua.png b/stained_glass/textures/stained_glass_medium_aqua.png
new file mode 100644
index 0000000..bd24278
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_aqua.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_aqua_s50.png b/stained_glass/textures/stained_glass_medium_aqua_s50.png
new file mode 100644
index 0000000..83fc532
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_aqua_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_blue.png b/stained_glass/textures/stained_glass_medium_blue.png
new file mode 100644
index 0000000..4f30146
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_blue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_blue_s50.png b/stained_glass/textures/stained_glass_medium_blue_s50.png
new file mode 100644
index 0000000..58c27c4
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_blue_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_cyan.png b/stained_glass/textures/stained_glass_medium_cyan.png
new file mode 100644
index 0000000..c4e7e81
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_cyan.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_cyan_s50.png b/stained_glass/textures/stained_glass_medium_cyan_s50.png
new file mode 100644
index 0000000..cc4eb56
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_cyan_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_green.png b/stained_glass/textures/stained_glass_medium_green.png
new file mode 100644
index 0000000..23e6f74
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_green.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_green_s50.png b/stained_glass/textures/stained_glass_medium_green_s50.png
new file mode 100644
index 0000000..cba45a9
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_green_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_lime.png b/stained_glass/textures/stained_glass_medium_lime.png
new file mode 100644
index 0000000..206af4c
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_lime.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_lime_s50.png b/stained_glass/textures/stained_glass_medium_lime_s50.png
new file mode 100644
index 0000000..aacbdce
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_lime_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_magenta.png b/stained_glass/textures/stained_glass_medium_magenta.png
new file mode 100644
index 0000000..a739981
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_magenta.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_magenta_s50.png b/stained_glass/textures/stained_glass_medium_magenta_s50.png
new file mode 100644
index 0000000..6d26ddb
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_magenta_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_orange.png b/stained_glass/textures/stained_glass_medium_orange.png
new file mode 100644
index 0000000..e35d7ed
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_orange.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_orange_s50.png b/stained_glass/textures/stained_glass_medium_orange_s50.png
new file mode 100644
index 0000000..e414708
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_orange_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_red.png b/stained_glass/textures/stained_glass_medium_red.png
new file mode 100644
index 0000000..9c05709
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_red.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_red_s50.png b/stained_glass/textures/stained_glass_medium_red_s50.png
new file mode 100644
index 0000000..d99419d
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_red_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_redviolet.png b/stained_glass/textures/stained_glass_medium_redviolet.png
new file mode 100644
index 0000000..50c892a
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_redviolet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_redviolet_s50.png b/stained_glass/textures/stained_glass_medium_redviolet_s50.png
new file mode 100644
index 0000000..76b39e5
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_redviolet_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_skyblue.png b/stained_glass/textures/stained_glass_medium_skyblue.png
new file mode 100644
index 0000000..4e97839
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_skyblue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_skyblue_s50.png b/stained_glass/textures/stained_glass_medium_skyblue_s50.png
new file mode 100644
index 0000000..1e75e78
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_skyblue_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_violet.png b/stained_glass/textures/stained_glass_medium_violet.png
new file mode 100644
index 0000000..a051098
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_violet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_violet_s50.png b/stained_glass/textures/stained_glass_medium_violet_s50.png
new file mode 100644
index 0000000..0f8397f
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_violet_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_yellow.png b/stained_glass/textures/stained_glass_medium_yellow.png
new file mode 100644
index 0000000..b6e28eb
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_yellow.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_medium_yellow_s50.png b/stained_glass/textures/stained_glass_medium_yellow_s50.png
new file mode 100644
index 0000000..c9e4af5
--- /dev/null
+++ b/stained_glass/textures/stained_glass_medium_yellow_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_orange.png b/stained_glass/textures/stained_glass_orange.png
new file mode 100644
index 0000000..24a6d3d
--- /dev/null
+++ b/stained_glass/textures/stained_glass_orange.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_orange_s50.png b/stained_glass/textures/stained_glass_orange_s50.png
new file mode 100644
index 0000000..999c9ce
--- /dev/null
+++ b/stained_glass/textures/stained_glass_orange_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_aqua.png b/stained_glass/textures/stained_glass_pastel_aqua.png
new file mode 100644
index 0000000..aa976ee
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_aqua.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_blue.png b/stained_glass/textures/stained_glass_pastel_blue.png
new file mode 100644
index 0000000..63a2b3e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_blue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_cyan.png b/stained_glass/textures/stained_glass_pastel_cyan.png
new file mode 100644
index 0000000..08424a6
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_cyan.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_green.png b/stained_glass/textures/stained_glass_pastel_green.png
new file mode 100644
index 0000000..cf50823
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_green.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_lime.png b/stained_glass/textures/stained_glass_pastel_lime.png
new file mode 100644
index 0000000..c02cf25
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_lime.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_magenta.png b/stained_glass/textures/stained_glass_pastel_magenta.png
new file mode 100644
index 0000000..5223e25
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_magenta.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_orange.png b/stained_glass/textures/stained_glass_pastel_orange.png
new file mode 100644
index 0000000..87a8e20
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_orange.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_red.png b/stained_glass/textures/stained_glass_pastel_red.png
new file mode 100644
index 0000000..a4b897d
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_red.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_redviolet.png b/stained_glass/textures/stained_glass_pastel_redviolet.png
new file mode 100644
index 0000000..b5255cf
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_redviolet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_skyblue.png b/stained_glass/textures/stained_glass_pastel_skyblue.png
new file mode 100644
index 0000000..58ae1fa
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_skyblue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_violet.png b/stained_glass/textures/stained_glass_pastel_violet.png
new file mode 100644
index 0000000..a3b362e
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_violet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastel_yellow.png b/stained_glass/textures/stained_glass_pastel_yellow.png
new file mode 100644
index 0000000..9e336cd
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastel_yellow.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_red.png b/stained_glass/textures/stained_glass_red.png
new file mode 100644
index 0000000..1541cd0
--- /dev/null
+++ b/stained_glass/textures/stained_glass_red.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_red_s50.png b/stained_glass/textures/stained_glass_red_s50.png
new file mode 100644
index 0000000..0579c74
--- /dev/null
+++ b/stained_glass/textures/stained_glass_red_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_redviolet.png b/stained_glass/textures/stained_glass_redviolet.png
new file mode 100644
index 0000000..b03da15
--- /dev/null
+++ b/stained_glass/textures/stained_glass_redviolet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_redviolet_s50.png b/stained_glass/textures/stained_glass_redviolet_s50.png
new file mode 100644
index 0000000..7ef4700
--- /dev/null
+++ b/stained_glass/textures/stained_glass_redviolet_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_skyblue.png b/stained_glass/textures/stained_glass_skyblue.png
new file mode 100644
index 0000000..83ecf0c
--- /dev/null
+++ b/stained_glass/textures/stained_glass_skyblue.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_skyblue_s50.png b/stained_glass/textures/stained_glass_skyblue_s50.png
new file mode 100644
index 0000000..cf718f9
--- /dev/null
+++ b/stained_glass/textures/stained_glass_skyblue_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_violet.png b/stained_glass/textures/stained_glass_violet.png
new file mode 100644
index 0000000..531a2f0
--- /dev/null
+++ b/stained_glass/textures/stained_glass_violet.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_violet_s50.png b/stained_glass/textures/stained_glass_violet_s50.png
new file mode 100644
index 0000000..2814673
--- /dev/null
+++ b/stained_glass/textures/stained_glass_violet_s50.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_yellow.png b/stained_glass/textures/stained_glass_yellow.png
new file mode 100644
index 0000000..b2c5fb4
--- /dev/null
+++ b/stained_glass/textures/stained_glass_yellow.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_yellow_s50.png b/stained_glass/textures/stained_glass_yellow_s50.png
new file mode 100644
index 0000000..6e8cdfe
--- /dev/null
+++ b/stained_glass/textures/stained_glass_yellow_s50.png
Binary files differ
diff --git a/steel/README.txt b/steel/README.txt
new file mode 100644
index 0000000..795b256
--- /dev/null
+++ b/steel/README.txt
@@ -0,0 +1,13 @@
+minetest-steel
+==============
+
+This mod adds a range of steel materials that are recyclable to minetest.
+To recycle, simply craft anything into scrap, and turn the scrap into an iron lump.
+Registered items: plate_hard, plate_soft, plate_rusted, grate_hard, grate_soft, strut, roofing.
+
+Optional dependencies:
+* Homedecor for better roofing.
+* Compatible with streets mod (no duplicates).
+
+License: GPL v2 for code, CC-BY-SA for textures.
+Original mod by minetesting (João Matos), changes by Zeg9.
diff --git a/steel/modpack.txt b/steel/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/steel/modpack.txt
diff --git a/steel/steel/depends.txt b/steel/steel/depends.txt
new file mode 100644
index 0000000..5643dca
--- /dev/null
+++ b/steel/steel/depends.txt
@@ -0,0 +1,5 @@
+default
+streets?
+homedecor?
+protector?
+node_ownership?
diff --git a/steel/steel/init.lua b/steel/steel/init.lua
new file mode 100644
index 0000000..0b1ef0c
--- /dev/null
+++ b/steel/steel/init.lua
@@ -0,0 +1,322 @@
+dofile(minetest.get_modpath("steel").."/rust.lua")
+
+if minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory") then
+ steel_expect_infinite_stacks = true
+else
+ steel_expect_infinite_stacks = false
+end
+
+function steel_node_is_owned(pos, placer)
+ local ownername = false
+ if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
+ if HasOwner(pos, placer) then -- returns true if the node is owned
+ if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
+ if type(getLastOwner) == "function" then -- ...is an old version
+ ownername = getLastOwner(pos)
+ elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
+ ownername = GetNodeOwnerName(pos)
+ else
+ ownername = "someone"
+ end
+ end
+ end
+
+ elseif type(isprotect)=="function" then -- glomie's protection mod
+ if not isprotect(5, pos, placer) then
+ ownername = "someone"
+ end
+ elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
+ if not protector.can_dig(5, pos, placer) then
+ ownername = "someone"
+ end
+ end
+
+ if ownername ~= false then
+ minetest.chat_send_player( placer:get_player_name(), ("Sorry, %s owns that spot."):format(ownername) )
+ return true
+ else
+ return false
+ end
+end
+
+function steel_rotate_and_place(itemstack, placer, pointed_thing)
+
+ local node = minetest.get_node(pointed_thing.under)
+ if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
+ if steel_node_is_owned(pointed_thing.above, placer) then
+ return itemstack
+ end
+ local above = pointed_thing.above
+ local under = pointed_thing.under
+ local pitch = placer:get_look_pitch()
+ local node = minetest.get_node(above)
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local wield_name = itemstack:get_name()
+
+ if node.name ~= "air" then return end
+
+ local iswall = (above.x ~= under.x) or (above.z ~= under.z)
+ local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
+
+ if iswall then
+ local dirs = { 2, 3, 0, 1 }
+ minetest.add_node(above, {name = wield_name.."_wall", param2 = dirs[fdir+1] }) -- place wall variant
+ elseif isceiling then
+ minetest.add_node(above, {name = wield_name.."_wall", param2 = 19 }) -- place wall variant on ceiling
+ else
+ minetest.add_node(above, {name = wield_name }) -- place regular variant
+ end
+
+ if not steel_expect_infinite_stacks then
+ itemstack:take_item()
+ return itemstack
+ end
+ else
+ minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
+ end
+end
+
+minetest.register_node("steel:plate_soft", {
+ description = "Soft steel plate",
+ tiles = {"steelplatesoft.png"},
+ is_ground_content = true,
+ groups = {cracky=2},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("steel:plate_hard", {
+ description = "Hardened steel plate",
+ tiles = {"steelplatehard.png"},
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("steel:plate_rusted", {
+ description = "Rusted steel plate",
+ tiles = {"steel_rusted.png"},
+ is_ground_content = true,
+ groups = {cracky=1,choppy=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+if minetest.registered_nodes["streets:steel_support"] then
+ minetest.register_alias("steel:strut","streets:steel_support")
+else
+ minetest.register_node("steel:strut", {
+ drawtype = "glasslike",
+ description = "Strut",
+ tiles = {"strut.png"},
+ is_ground_content = true,
+ paramtype= "light",
+ groups = {choppy=1,cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+ })
+ minetest.register_alias("streets:steel_support","steel:strut")
+end
+minetest.register_node("steel:grate_soft", {
+ description = "Soft Steel Grate",
+ drawtype = "fencelike",
+ tiles = {"worldgratesoft.png"},
+ inventory_image = "gratesoft.png",
+ wield_image = "gratesoft.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {cracky=2,choppy=2},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("steel:grate_hard", {
+ description = "Hardened Steel Grate",
+ drawtype = "fencelike",
+ tiles = {"worldgratehard.png"},
+ inventory_image = "gratehard.png",
+ wield_image = "gratehard.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {cracky=1,choppy=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node("steel:roofing", {
+ description = "Corrugated steel roofing",
+ drawtype = "raillike",
+ tiles = {"corrugated_steel.png"},
+ inventory_image = "corrugated_steel.png",
+ wield_image = "corrugated_steel.png",
+ paramtype = "light",
+ is_ground_content = true,
+ walkable = true,
+ selection_box = {
+ type = "fixed",
+ -- but how to specify the dimensions for curved and sideways rails?
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
+ },
+ groups = {bendy=2,snappy=1,dig_immediate=2},
+ on_place = function(itemstack, placer, pointed_thing)
+ steel_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end
+})
+
+minetest.register_node("steel:roofing_wall", {
+ description = "Corrugated steel wall",
+ drawtype = "nodebox",
+ tiles = {"corrugated_steel.png"},
+ inventory_image = "corrugated_steel.png",
+ wield_image = "corrugated_steel.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ walkable = true,
+ groups = {bendy=2,snappy=1,dig_immediate=2, not_in_creative_inventory=1},
+ drop = "steel:roofing",
+ on_place = function(itemstack, placer, pointed_thing)
+ steel_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.48, 0.5, 0.5, -0.48 }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -0.4 }
+ },
+})
+
+if homedecor_register_slope and homedecor_register_roof then
+ homedecor_register_slope("steel", "roofing",
+ "steel:roofing",
+ {bendy=2,snappy=1,dig_immediate=2},
+ {"corrugated_steel.png"},
+ "Corrugated steel roofing"
+ )
+ homedecor_register_roof("steel", "roofing",
+ {bendy=2,snappy=1,dig_immediate=2},
+ {"corrugated_steel.png"},
+ "Corrugated steel roofing"
+ )
+end
+
+ --steel scrap are only used to recover ingots
+
+minetest.register_craftitem("steel:scrap", {
+ description = "Steel scraps",
+ inventory_image = "scrap.png",
+})
+
+ --recipes
+
+minetest.register_craft({
+ output = 'steel:plate_soft 2',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot'},
+ }
+})
+
+
+
+minetest.register_craft({
+ type = "cooking",
+ output = "steel:plate_hard",
+ recipe = "steel:plate_soft",
+})
+
+
+minetest.register_craft({
+ output = 'steel:grate_soft 3',
+ recipe = {
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ }
+})
+
+
+minetest.register_craft({
+ type = "cooking",
+ output = "steel:grate_hard",
+ recipe = "steel:grate_soft",
+})
+
+-- only register this craft if streets is not loaded
+if not minetest.registered_nodes["streets:steel_support"] then
+ minetest.register_craft({
+ output = 'steel:strut 5',
+ recipe = {
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'', 'default:steel_ingot', ''},
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = 'steel:roofing 6',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ }
+})
+ --remelting recipes
+
+minetest.register_craft({
+ output = 'steel:scrap 2',
+ recipe = {
+ {'steel:strut'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 2',
+ recipe = {
+ {'steel:grate_soft'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 2',
+ recipe = {
+ {'steel:grate_hard'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap',
+ recipe = {
+ {'steel:roofing'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 4',
+ recipe = {
+ {'steel:plate_soft'},
+ }
+})
+
+minetest.register_craft({
+ output = 'steel:scrap 4',
+ recipe = {
+ {'steel:plate_hard'},
+ }
+})
+
+minetest.register_craft({
+ output = 'default:iron_lump',
+ recipe = {
+ {'steel:scrap', 'steel:scrap'},
+ }
+})
+
+
+
+
diff --git a/steel/steel/recipes.png b/steel/steel/recipes.png
new file mode 100644
index 0000000..7b10124
--- /dev/null
+++ b/steel/steel/recipes.png
Binary files differ
diff --git a/steel/steel/rust.lua b/steel/steel/rust.lua
new file mode 100644
index 0000000..9eea7ca
--- /dev/null
+++ b/steel/steel/rust.lua
@@ -0,0 +1,15 @@
+local function moss(input, output)
+ minetest.register_abm({
+ nodenames = {input},
+ neighbors = {"group:water"},
+ interval = 50,
+ chance = 20,
+ action = function(pos)
+ if not minetest.find_node_near(pos, 3, output) then
+ minetest.add_node(pos, {name=output})
+ end
+ end,
+ })
+end
+
+moss("steel:plate_soft", "steel:plate_rusted")
diff --git a/steel/steel/textures/corrugated_steel.png b/steel/steel/textures/corrugated_steel.png
new file mode 100644
index 0000000..a704a85
--- /dev/null
+++ b/steel/steel/textures/corrugated_steel.png
Binary files differ
diff --git a/steel/steel/textures/gratehard.png b/steel/steel/textures/gratehard.png
new file mode 100644
index 0000000..71b0921
--- /dev/null
+++ b/steel/steel/textures/gratehard.png
Binary files differ
diff --git a/steel/steel/textures/gratesoft.png b/steel/steel/textures/gratesoft.png
new file mode 100644
index 0000000..0ac6a52
--- /dev/null
+++ b/steel/steel/textures/gratesoft.png
Binary files differ
diff --git a/steel/steel/textures/scrap.png b/steel/steel/textures/scrap.png
new file mode 100644
index 0000000..043292a
--- /dev/null
+++ b/steel/steel/textures/scrap.png
Binary files differ
diff --git a/steel/steel/textures/steel_rusted.png b/steel/steel/textures/steel_rusted.png
new file mode 100644
index 0000000..4d7e598
--- /dev/null
+++ b/steel/steel/textures/steel_rusted.png
Binary files differ
diff --git a/steel/steel/textures/steelplatehard.png b/steel/steel/textures/steelplatehard.png
new file mode 100644
index 0000000..75e3bf0
--- /dev/null
+++ b/steel/steel/textures/steelplatehard.png
Binary files differ
diff --git a/steel/steel/textures/steelplatesoft.png b/steel/steel/textures/steelplatesoft.png
new file mode 100644
index 0000000..5891a8b
--- /dev/null
+++ b/steel/steel/textures/steelplatesoft.png
Binary files differ
diff --git a/steel/steel/textures/strut.png b/steel/steel/textures/strut.png
new file mode 100644
index 0000000..faa6b94
--- /dev/null
+++ b/steel/steel/textures/strut.png
Binary files differ
diff --git a/steel/steel/textures/worldgratehard.png b/steel/steel/textures/worldgratehard.png
new file mode 100644
index 0000000..2e53ae7
--- /dev/null
+++ b/steel/steel/textures/worldgratehard.png
Binary files differ
diff --git a/steel/steel/textures/worldgratesoft.png b/steel/steel/textures/worldgratesoft.png
new file mode 100644
index 0000000..b8bf99f
--- /dev/null
+++ b/steel/steel/textures/worldgratesoft.png
Binary files differ
diff --git a/streets/asphalt/depends.txt b/streets/asphalt/depends.txt
new file mode 100644
index 0000000..fef815d
--- /dev/null
+++ b/streets/asphalt/depends.txt
@@ -0,0 +1,3 @@
+default
+streetsmod
+building_blocks? \ No newline at end of file
diff --git a/streets/asphalt/init.lua b/streets/asphalt/init.lua
new file mode 100644
index 0000000..958cfd5
--- /dev/null
+++ b/streets/asphalt/init.lua
@@ -0,0 +1,27 @@
+--[[
+ Streets Mod: All kinds of asphalt
+]]
+minetest.register_node(":streets:asphalt",{
+ description = streets.S("Asphalt"),
+ tiles = {"streets_asphalt.png"},
+ groups = {cracky=3}
+})
+
+if minetest.get_modpath("building_blocks") then
+ minetest.register_craft({
+ type = "shapeless",
+ output = "streets:asphalt 3",
+ recipe = {
+ "default:sand",
+ "default:gravel",
+ "building_blocks:Tar"
+ },
+ })
+else
+ minetest.register_craft({
+ type = "cooking",
+ output = "streets:asphalt",
+ recipe = "default:gravel",
+ cooktime = 2
+ })
+end
diff --git a/streets/asphaltstairs/depends.txt b/streets/asphaltstairs/depends.txt
new file mode 100644
index 0000000..f0c25dc
--- /dev/null
+++ b/streets/asphaltstairs/depends.txt
@@ -0,0 +1,3 @@
+default
+streetsmod
+moreblocks? \ No newline at end of file
diff --git a/streets/asphaltstairs/init.lua b/streets/asphaltstairs/init.lua
new file mode 100644
index 0000000..5ef4759
--- /dev/null
+++ b/streets/asphaltstairs/init.lua
@@ -0,0 +1,244 @@
+--[[
+ StreetsMod: Asphalt stairs
+]]
+if not rawget(_G, "register_stair_slab_panel_micro")
+or type(register_stair_slab_panel_micro) ~= "function" then return end
+
+ -- Asphalt solid line
+ -- Stair
+ minetest.register_node(":streets:asphalt_solid_line_stair",{
+ description = streets.S("Asphalt stair"),
+ tiles = {"streets_asphalt.png^streets_asphalt_solid_line.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_solid_line.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5},
+ {-0.5, 0.0, 0.0, 0.5, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_solid_line_stair 6",
+ recipe = {
+ {"","","streets:asphalt_solid_line"},
+ {"","streets:asphalt_solid_line","streets:asphalt_solid_line"},
+ {"streets:asphalt_solid_line","streets:asphalt_solid_line","streets:asphalt_solid_line"}
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_solid_line_stair 6",
+ recipe = {
+ {"streets:asphalt_solid_line","",""},
+ {"streets:asphalt_solid_line","streets:asphalt_solid_line",""},
+ {"streets:asphalt_solid_line","streets:asphalt_solid_line","streets:asphalt_solid_line"}
+ }
+ })
+ -- Slab
+ minetest.register_node(":streets:asphalt_solid_line_slab",{
+ description = streets.S("Asphalt slab"),
+ tiles = {"streets_asphalt.png^streets_asphalt_solid_line.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_solid_line.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_solid_line_slab 3",
+ recipe = {
+ {"","",""},
+ {"","",""},
+ {"streets:asphalt_solid_line","streets:asphalt_solid_line","streets:asphalt_solid_line"}
+ }
+ })
+ ------------------------------------------------------------
+ -- Asphalt dashed line
+ -- Stair
+ minetest.register_node(":streets:asphalt_dashed_line_stair",{
+ description = streets.S("Asphalt stair"),
+ tiles = {"streets_asphalt.png^streets_asphalt_dashed_line.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_dashed_line.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5},
+ {-0.5, 0.0, 0.0, 0.5, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_dashed_line_stair 6",
+ recipe = {
+ {"","","streets:asphalt_dashed_line"},
+ {"","streets:asphalt_dashed_line","streets:asphalt_dashed_line"},
+ {"streets:asphalt_dashed_line","streets:asphalt_dashed_line","streets:asphalt_dashed_line"}
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_dashed_line_stair 6",
+ recipe = {
+ {"streets:asphalt_dashed_line","",""},
+ {"streets:asphalt_dashed_line","streets:asphalt_dashed_line",""},
+ {"streets:asphalt_dashed_line","streets:asphalt_dashed_line","streets:asphalt_dashed_line"}
+ }
+ })
+ -- Slab
+ minetest.register_node(":streets:asphalt_dashed_line_slab",{
+ description = streets.S("Asphalt slab"),
+ tiles = {"streets_asphalt.png^streets_asphalt_dashed_line.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_dashed_line.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_dashed_line_slab 3",
+ recipe = {
+ {"","",""},
+ {"","",""},
+ {"streets:asphalt_dashed_line","streets:asphalt_dashed_line","streets:asphalt_dashed_line"}
+ }
+ })
+ -- Asphalt outer line
+ minetest.register_node(":streets:asphalt_side_stair_l",{
+ description = streets.S("Asphalt stair"),
+ tiles = {"streets_asphalt.png^streets_asphalt_side.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_side.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5},
+ {-0.5, 0.0, 0.0, 0.5, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_node(":streets:asphalt_side_stair_r",{
+ description = streets.S(streets.S("Asphalt stair")),
+ tiles = {"streets_asphalt.png^streets_asphalt_side_r.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_side_r.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ drop = "streets:asphalt_side_stair_l",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5},
+ {-0.5, 0.0, 0.0, 0.5, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_side_stair_l 6",
+ recipe = {
+ {"","","streets:asphalt_side"},
+ {"","streets:asphalt_side","streets:asphalt_side"},
+ {"streets:asphalt_side","streets:asphalt_side","streets:asphalt_side"}
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_side_stair_l 6",
+ recipe = {
+ {"streets:asphalt_side","",""},
+ {"streets:asphalt_side","streets:asphalt_side",""},
+ {"streets:asphalt_side","streets:asphalt_side","streets:asphalt_side"}
+ }
+ })
+ minetest.register_craft({
+ type = "shapeless",
+ output = "streets:asphalt_side_stair_r",
+ recipe = {"streets:asphalt_side_stair_l"}
+ })
+ minetest.register_craft({
+ type = "shapeless",
+ output = "streets:asphalt_side_stair_l",
+ recipe = {"streets:asphalt_side_stair_r"}
+ })
+ ---------------------------------------------------------------------
+ minetest.register_node(":streets:asphalt_side_slab_l",{
+ description = streets.S(streets.S("Asphalt slab")),
+ tiles = {"streets_asphalt.png^streets_asphalt_side.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_side.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5}
+ }
+ }
+ })
+ minetest.register_node(":streets:asphalt_side_slab_r",{
+ description = streets.S(streets.S("Asphalt slab")),
+ tiles = {"streets_asphalt.png^streets_asphalt_side_r.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_side_r.png"},
+ groups = {cracky = 3,not_in_creative_inventory=1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.0,0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:asphalt_side_slab_l 3",
+ recipe = {
+ {"","",""},
+ {"","",""},
+ {"streets:asphalt_side","streets:asphalt_side","streets:asphalt_side"}
+ }
+ })
+ minetest.register_craft({
+ type = "shapeless",
+ output = "streets:asphalt_side_r",
+ recipe = {"streets:asphalt_side_l"}
+ })
+ minetest.register_craft({
+ type = "shapeless",
+ output = "streets:asphalt_side_l",
+ recipe = {"streets:asphalt_side_r"}
+ })
+
+ -- Asphalt
+ minetest.register_alias("streets:asphalt_stair","stairs:stair_asphalt")
+ minetest.register_alias("streets:asphalt_slab","stairs:slab_asphalt")
+
+ register_stair_slab_panel_micro("streets", "asphalt", "streets:asphalt", {cracky=3}, {"streets_asphalt.png"}, "Asphalt", "asphalt", nil)
+ register_stair_slab_panel_micro("streets", "asphalt_solid_line", "streets:asphalt_solid_line", {cracky=3}, {"streets_asphalt.png^streets_asphalt_solid_line.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_solid_line.png"}, "Asphalt with solid centerline", "asphalt", nil)
+ register_stair_slab_panel_micro("streets", "asphalt_dashed_line", "streets:asphalt_dashed_line", {cracky=3}, {"streets_asphalt.png^streets_asphalt_dashed_line.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_dashed_line.png"}, "Asphalt with dashed centerline", "asphalt", nil)
+ register_stair_slab_panel_micro("streets", "asphalt_side", "streets:asphalt_sideline", {cracky=3}, {"streets_asphalt.png^streets_asphalt_side.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_side.png"}, "Asphalt with solid outer line (left)", "asphalt", nil)
+ register_stair_slab_panel_micro("streets", "asphalt_side_r", "streets:asphalt_side_r", {cracky=3}, {"streets_asphalt.png^streets_asphalt_side_r.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^streets_asphalt_side_r.png"}, "Asphalt with solid outer line (right)", "asphalt", nil)
+ register_stair_slab_panel_micro("streets", "asphalt_outer_edge", "streets:asphalt_outer_edge", {cracky=3}, {"streets_asphalt.png^streets_asphalt_outer_edge.png","streets_asphalt.png"}, "Asphalt with solid outer line (corner/edge)", "asphalt", nil)
+ register_stair_slab_panel_micro("streets", "asphalt_outer_edge_r", "streets:asphalt_outer_edge_r", {cracky=3}, {"streets_asphalt.png^(streets_asphalt_outer_edge.png^[transformR270)","streets_asphalt.png"}, "Asphalt with solid outer line (corner/edge, rotated)", "asphalt", nil)
+
+ table.insert(circular_saw.known_stairs,"streets:asphalt")
+ table.insert(circular_saw.known_stairs,"streets:asphalt_solid_line")
+ table.insert(circular_saw.known_stairs,"streets:asphalt_dashed_line")
+ table.insert(circular_saw.known_stairs,"streets:asphalt_side")
+ table.insert(circular_saw.known_stairs,"streets:asphalt_side_r")
+ table.insert(circular_saw.known_stairs,"streets:asphalt_outer_edge")
+ table.insert(circular_saw.known_stairs,"streets:asphalt_outer_edge_r")
diff --git a/streets/concretestairs/depends.txt b/streets/concretestairs/depends.txt
new file mode 100644
index 0000000..ad569e2
--- /dev/null
+++ b/streets/concretestairs/depends.txt
@@ -0,0 +1,4 @@
+default
+streetsmod
+stairs?
+moreblocks? \ No newline at end of file
diff --git a/streets/concretestairs/init.lua b/streets/concretestairs/init.lua
new file mode 100644
index 0000000..f6400c5
--- /dev/null
+++ b/streets/concretestairs/init.lua
@@ -0,0 +1,12 @@
+--[[
+ StreetsMod: Concrete stairs (compatible to circular saw)
+]]
+if rawget(_G, "register_stair_slab_panel_micro")
+and type(register_stair_slab_panel_micro) == "function" and streets.extendedBy.prefab == false then
+ register_stair_slab_panel_micro("streets", "concrete", "streets:concrete", {cracky=2}, {"streets_concrete.png"}, "Concrete", "concrete", nil)
+ table.insert(circular_saw.known_stairs,"streets:concrete")
+ minetest.register_alias("stairs:stair_concrete","streets:stair_concrete")
+else
+ minetest.register_alias("stairs:stair_concrete","prefab:concrete_stair")
+ minetest.register_alias("stairs:slab_concrete","prefab:concrete_slab")
+end
diff --git a/streets/constructionarea/depends.txt b/streets/constructionarea/depends.txt
new file mode 100644
index 0000000..f17a377
--- /dev/null
+++ b/streets/constructionarea/depends.txt
@@ -0,0 +1,3 @@
+default
+streetsmod
+wool? \ No newline at end of file
diff --git a/streets/constructionarea/init.lua b/streets/constructionarea/init.lua
new file mode 100644
index 0000000..9b1aefe
--- /dev/null
+++ b/streets/constructionarea/init.lua
@@ -0,0 +1,70 @@
+minetest.register_node(":streets:constructionfence_bottom",{
+ description = streets.S("Construction fence"),
+ tiles = {"streets_fence_fromtop.png","streets_fence_fromtop.png","streets_fence_fromtop.png","streets_fence_fromtop.png","streets_fence_bottom.png","streets_fence_bottom.png"},
+ groups = {cracky = 2, disable_jump = 1},
+ paramtype = "light",
+ inventory_image = "streets_fence_inv.png",
+ wield_image = "streets_fence_inv.png",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.1,0.5,0.0,0.1}, -- lower part
+ {-0.2,-0.0,-0.1,0.2,0.5,0.1} -- thing in the middle
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.1,0.5,1.0,0.1}
+ }
+ },
+ after_dig_node = function(pos,node,digger)
+ pos.y = pos.y + 1
+ minetest.remove_node(pos)
+ end,
+ after_place_node = function(pos,placer,itemstack)
+ pos.y = pos.y + 1
+ if minetest.get_node(pos).name == "air" then
+ minetest.add_node(pos,{name = "streets:constructionfence_top", param2 = minetest.dir_to_facedir(placer:get_look_dir())})
+ else
+ minetest.chat_send_player(placer:get_player_name(),"Not enough free space! A construction fence has a height of 2 blocks!")
+ end
+ end
+})
+
+minetest.register_node(":streets:constructionfence_top",{
+ description = streets.S("Construction fence"),
+ tiles = {"streets_fence_fromtop.png","streets_fence_fromtop.png","streets_fence_fromtop.png","streets_fence_fromtop.png","streets_fence_top.png","streets_fence_top.png"},
+ groups = {cracky = 2, not_in_creative_inventory = 1, disable_jump = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ drop = "streets:constructionfence_bottom",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.1,0.5,0.0,0.1} -- upper part
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-1.5,-0.1,0.5,0.0,0.1}
+ }
+ },
+ after_dig_node = function(pos,node,digger)
+ pos.y = pos.y - 1
+ minetest.remove_node(pos)
+ end
+})
+
+minetest.register_craft({
+ output = "streets:constructionfence_bottom 8",
+ recipe = {
+ {"","",""},
+ {"","streets:sign_construction",""},
+ {"wool:red","wool:white","wool:red"}
+ }
+}) \ No newline at end of file
diff --git a/streets/delineator/depends.txt b/streets/delineator/depends.txt
new file mode 100644
index 0000000..48ef5e1
--- /dev/null
+++ b/streets/delineator/depends.txt
@@ -0,0 +1,2 @@
+default
+streetsmod \ No newline at end of file
diff --git a/streets/delineator/init.lua b/streets/delineator/init.lua
new file mode 100644
index 0000000..cf78142
--- /dev/null
+++ b/streets/delineator/init.lua
@@ -0,0 +1,27 @@
+--[[
+ StreetsMod: Delineator
+]]
+minetest.register_node(":streets:delineator", {
+ description = streets.S("Delineator"),
+ tiles = {"streets_delineator_top.png","streets_delineator.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky=3, oddly_breakable_by_hand=2},
+ light_source = 8,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1, -0.5, -0.1, 0.1, 0.5, 0.1},
+ },
+ }
+})
+
+minetest.register_craft({
+ output = "streets:delineator 4",
+ recipe = {
+ {"","",""},
+ {"","default:torch",""},
+ {"","default:fence_wood",""}
+ }
+}) \ No newline at end of file
diff --git a/streets/description.txt b/streets/description.txt
new file mode 100644
index 0000000..57612b0
--- /dev/null
+++ b/streets/description.txt
@@ -0,0 +1 @@
+With the StreetsMod, you can build your own realistic streets with arrows, lines, manholes and many more cool stuff. You don't need any additional mod, but it's recommended to have stairs (default), wool (default) and bucket (default) installed. It's easy for you to enable/disable certain parts of this mod because it's organised as a modpack, which you can configure in Minetest's Main Menu -> Configure. \ No newline at end of file
diff --git a/streets/emergencyphone/depends.txt b/streets/emergencyphone/depends.txt
new file mode 100644
index 0000000..f17a377
--- /dev/null
+++ b/streets/emergencyphone/depends.txt
@@ -0,0 +1,3 @@
+default
+streetsmod
+wool? \ No newline at end of file
diff --git a/streets/emergencyphone/init.lua b/streets/emergencyphone/init.lua
new file mode 100644
index 0000000..8c25c65
--- /dev/null
+++ b/streets/emergencyphone/init.lua
@@ -0,0 +1,25 @@
+--[[
+ StreetsMod: Emergency Phone
+]]
+minetest.register_node(":streets:emergencyphone",{
+ description = streets.S("Emergency Phone"),
+ tiles = {"streets_sos_top.png","streets_sos_bottom.png","streets_sos_side.png","streets_sos_side.png","streets_sos_side.png","streets_sos_front.png"},
+ groups = {cracky = 3},
+ paramtype2 = "facedir",
+ light_source = 5,
+ on_rightclick = function(pos,node,clicker)
+ if clicker:is_player() and clicker:get_hp() < 6 then
+ clicker:set_hp(6)
+ minetest.log("action",clicker:get_player_name() .. " healed by emergency phone at pos " .. minetest.pos_to_string(pos) .. "")
+ end
+ end
+ })
+ minetest.register_alias("streets:emergency_phone","streets:emergencyphone")
+minetest.register_craft({
+ output = "streets:emergencyphone",
+ recipe = {
+ {"wool:orange","default:torch","wool:orange"},
+ {"wool:orange","default:apple","wool:orange"},
+ {"default:steel_ingot","default:diamondblock","default:steel_ingot"}
+ }
+}) \ No newline at end of file
diff --git a/streets/infrastructure/README b/streets/infrastructure/README
new file mode 100644
index 0000000..feb88a1
--- /dev/null
+++ b/streets/infrastructure/README
@@ -0,0 +1,14 @@
+This is my fork of the infrastructure mod. It's essentially aimed at servers running webdesigner97's streetsmod that want stuff from infrastructure too (dreambuilder_game in particular), and is intended to add on to streetsmod instead of replacing it.
+
+Originally based on Streets by webdesigner97
+Modified by Ragnarok/Vibender
+Modified again by cheapie
+
+Depends: default, moreblocks, mesecons, technic, streetsmod
+
+Licenses:
+ Code: WTFPL
+ Line textures: WTFPL
+ Other Textures: CC BY-SA 3.0 Unported, http://creativecommons.org/licenses/by-sa/3.0/
+ Sounds: CC BY-SA 3.0 Unported, http://creativecommons.org/licenses/by-sa/3.0/
+
diff --git a/streets/infrastructure/advanced_aircraft_warning_light.lua b/streets/infrastructure/advanced_aircraft_warning_light.lua
new file mode 100644
index 0000000..1361f7b
--- /dev/null
+++ b/streets/infrastructure/advanced_aircraft_warning_light.lua
@@ -0,0 +1,55 @@
+-- Aircraft warning light
+minetest.register_node("infrastructure:aircraft_warning_light", {
+ description = "Aircraft warning light",
+ tiles = {
+ {name="infrastructure_aircraft_warning_light_top_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=4}},
+ "infrastructure_traffic_lights_side.png",
+ {name="infrastructure_aircraft_warning_light_side_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=4}},
+ {name="infrastructure_aircraft_warning_light_side_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=4}},
+ {name="infrastructure_aircraft_warning_light_side_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=4}},
+ {name="infrastructure_aircraft_warning_light_side_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=4}}
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 1},
+ light_source = AIRCRAFT_WARNING_LIGHT_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/128, 1/4, -1/128, 1/128, 3/8, 1/128},
+
+ {-1/4, -1/8, 0, 1/4, 1/4, 0},
+ {0, -1/8, -1/4, 0, 1/4, 1/4},
+
+ {-1/16, -1/8, -1/16, 1/16, 1/16, 1/16},
+
+ {-1/4, -1/4, -1/8, 1/4, -1/8, 1/8},
+ {-1/8, -1/4, -1/4, 1/8, -1/8, 1/4},
+
+ {-1/8, -3/8, -1/8, 1/8, -1/4, 1/8},
+
+ {-3/16, -1/2, -3/16, 3/16, -3/8, 3/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/128, 1/4, -1/128, 1/128, 3/8, 1/128},
+
+ {-1/4, -1/8, 0, 1/4, 1/4, 0},
+ {0, -1/8, -1/4, 0, 1/4, 1/4},
+
+ {-1/16, -1/8, -1/16, 1/16, 1/16, 1/16},
+
+ {-1/4, -1/4, -1/8, 1/4, -1/8, 1/8},
+ {-1/8, -1/4, -1/4, 1/8, -1/8, 1/4},
+
+ {-1/8, -3/8, -1/8, 1/8, -1/4, 1/8},
+
+ {-3/16, -1/2, -3/16, 3/16, -3/8, 3/16}
+ }
+ }
+})
+
+minetest.register_alias("infrastructure:aircraft_warning_light_bright", "infrastructure:aircraft_warning_light")
+minetest.register_alias("infrastructure:aircraft_warning_light_dark", "infrastructure:aircraft_warning_light")
diff --git a/streets/infrastructure/advanced_automatic_warning_device.lua b/streets/infrastructure/advanced_automatic_warning_device.lua
new file mode 100644
index 0000000..b938c07
--- /dev/null
+++ b/streets/infrastructure/advanced_automatic_warning_device.lua
@@ -0,0 +1,464 @@
+-- Automatic warning device
+
+infrastructure.sound_handles = {}
+
+function infrastructure.play_bell(pos)
+ local pos_hash = minetest.hash_node_position(pos)
+ if not infrastructure.sound_handles[pos_hash] then
+ infrastructure.sound_handles[pos_hash] = minetest.sound_play("infrastructure_ebell",
+ {pos = pos, gain = AUTOMATIC_WARNING_DEVICE_VOLUME, loop = true, max_hear_distance = 30,})
+ end
+end
+
+function infrastructure.stop_bell(pos)
+ local pos_hash = minetest.hash_node_position(pos)
+ local sound_handle = infrastructure.sound_handles[pos_hash]
+ if sound_handle then
+ minetest.sound_stop(sound_handle)
+ infrastructure.sound_handles[pos_hash] = nil
+ end
+end
+function infrastructure.left_light_direction(pos, param2)
+ if param2 == 0 then
+ pos.x = pos.x - 1
+ elseif param2 == 1 then
+ pos.z = pos.z + 1
+ elseif param2 == 2 then
+ pos.x = pos.x + 1
+ elseif param2 == 3 then
+ pos.z = pos.z - 1
+ end
+end
+
+function infrastructure.right_light_direction(pos, param2)
+ if param2 == 0 then
+ pos.x = pos.x + 2
+ elseif param2 == 1 then
+ pos.z = pos.z - 2
+ elseif param2 == 2 then
+ pos.x = pos.x - 2
+ elseif param2 == 3 then
+ pos.z = pos.z + 2
+ end
+end
+
+function infrastructure.lights_enabled(pos)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ minetest.swap_node(pos, {name = "infrastructure:automatic_warning_device_middle_center_on", param2 = node.param2})
+ infrastructure.left_light_direction(pos, param2)
+ minetest.swap_node(pos, {name = "infrastructure:automatic_warning_device_middle_left_on", param2 = node.param2})
+ infrastructure.right_light_direction(pos, param2)
+ minetest.swap_node(pos, {name = "infrastructure:automatic_warning_device_middle_right_on", param2 = node.param2})
+end
+
+function infrastructure.lights_disabled(pos)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ minetest.swap_node(pos, {name = "infrastructure:automatic_warning_device_middle_center_off", param2 = node.param2})
+ infrastructure.left_light_direction(pos, param2)
+ minetest.swap_node(pos, {name = "infrastructure:automatic_warning_device_middle_left_off", param2 = node.param2})
+ infrastructure.right_light_direction(pos, param2)
+ minetest.swap_node(pos, {name = "infrastructure:automatic_warning_device_middle_right_off", param2 = node.param2})
+end
+
+function infrastructure.activate_lights(pos)
+ pos.y = pos.y + 2
+ local node = minetest.get_node(pos)
+ if node.name == "infrastructure:automatic_warning_device_middle_center_off" then
+ infrastructure.play_bell(pos)
+ infrastructure.lights_enabled(pos)
+ elseif (node.name == "infrastructure:automatic_warning_device_middle_center_on") then
+ infrastructure.stop_bell(pos,node)
+ infrastructure.lights_disabled(pos, node)
+ end
+end
+
+minetest.register_node("infrastructure:automatic_warning_device_top", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_top_side.png",
+ "infrastructure_automatic_warning_device_top_side.png",
+ "infrastructure_automatic_warning_device_top_side.png",
+ "infrastructure_automatic_warning_device_top.png"
+ },
+ on_destruct = stop_bell,
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -1/2, -1/16, 1/16, 0, 1/16},
+ {-1/8, 0, -1/8, 1/8, 3/8, 1/8},
+ {-1/4, 1/8, -1/4, 1/4, 1/4, 1/4},
+ {-1/2, -1/2, -1/16, 1/2, 0, -1/16},
+ {-1/8, -1/2, -1/16, 1/8, -1/4, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+minetest.register_node("infrastructure:automatic_warning_device_middle_right_on", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_right_side.png",
+ {name="infrastructure_automatic_warning_device_middle_right_anim.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}}
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = AUTOMATIC_WARNING_DEVICE_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, -1/16, -1/4, 1/2, -1/16},
+ {-1/2, -5/16, -1/16, -7/16, 1/16, 3/16},
+ {-1/2, 1/32, -5/16, -15/32, 3/32, -1/16},
+ {-15/32, -1/8, -3/16, -13/32, 1/32, -1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+minetest.register_node("infrastructure:automatic_warning_device_middle_right_off", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_right_side.png",
+ "infrastructure_automatic_warning_device_middle_right_off.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, -1/16, -1/4, 1/2, -1/16},
+ {-1/2, -5/16, -1/16, -7/16, 1/16, 3/16},
+ {-1/2, 1/32, -5/16, -15/32, 3/32, -1/16},
+ {-15/32, -1/8, -3/16, -13/32, 1/32, -1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+minetest.register_node("infrastructure:automatic_warning_device_middle_left_on", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_left_side.png",
+ {name="infrastructure_automatic_warning_device_middle_left_anim.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}}
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = AUTOMATIC_WARNING_DEVICE_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {1/4, -1/2, -1/16, 1/2, 1/2, -1/16},
+ {7/16, -5/16, -1/16, 1/2, 1/16, 3/16},
+ {15/32, 1/32, -5/16, 1/2, 3/32, -1/16},
+ {13/32, -1/8, -3/16, 15/32, 1/32, -1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+minetest.register_node("infrastructure:automatic_warning_device_middle_left_off", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_left_side.png",
+ "infrastructure_automatic_warning_device_middle_left_off.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {1/4, -1/2, -1/16, 1/2, 1/2, -1/16},
+ {7/16, -5/16, -1/16, 1/2, 1/16, 3/16},
+ {15/32, 1/32, -5/16, 1/2, 3/32, -1/16},
+ {13/32, -1/8, -3/16, 15/32, 1/32, -1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+minetest.register_node("infrastructure:automatic_warning_device_middle_center_on", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_center_side.png",
+ "infrastructure_automatic_warning_device_middle_center_side.png",
+ "infrastructure_automatic_warning_device_middle_center_side.png",
+ {name="infrastructure_automatic_warning_device_middle_center_anim.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}}
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = LIGHT_SOURCE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/2, -1/2, -1/16, 1/2, 1/2, -1/16},
+ {-1/2, -5/16, -1/16, -3/16, 1/16, 3/16},
+ {3/16, -5/16, -1/16, 1/2, 1/16, 3/16},
+ {-3/16, -3/16, -1/16, 3/16, -1/16, 1/8},
+ {-1/2, 1/32, -5/16, -7/32, 3/32, -1/16},
+ {-7/32, -1/8, -3/16, -5/32, 1/32, -1/16},
+ {7/32, 1/32, -5/16, 1/2, 3/32, -1/16},
+ {5/32, -1/8, -3/16, 7/32, 1/32, -1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+
+minetest.register_node("infrastructure:automatic_warning_device_middle_center_off", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_center_side.png",
+ "infrastructure_automatic_warning_device_middle_center_side.png",
+ "infrastructure_automatic_warning_device_middle_center_side.png",
+ "infrastructure_automatic_warning_device_middle_center_off.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ light_source = LIGHT_SOURCE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/2, -1/2, -1/16, 1/2, 1/2, -1/16},
+ {-1/2, -5/16, -1/16, -3/16, 1/16, 3/16},
+ {3/16, -5/16, -1/16, 1/2, 1/16, 3/16},
+ {-3/16, -3/16, -1/16, 3/16, -1/16, 1/8},
+ {-1/2, 1/32, -5/16, -7/32, 3/32, -1/16},
+ {-7/32, -1/8, -3/16, -5/32, 1/32, -1/16},
+ {7/32, 1/32, -5/16, 1/2, 3/32, -1/16},
+ {5/32, -1/8, -3/16, 7/32, 1/32, -1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+
+minetest.register_node("infrastructure:automatic_warning_device_middle", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_middle_side.png",
+ "infrastructure_automatic_warning_device_middle_side.png",
+ "infrastructure_automatic_warning_device_middle_side.png",
+ "infrastructure_automatic_warning_device_middle.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-3/8, -3/8, -1/8, 3/8, 3/8, -1/16},
+ {-1/8, -1/8, -1/16, 1/8, 1/8, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+})
+
+minetest.register_node("infrastructure:automatic_warning_device_bottom", {
+ description = "Automatic warning device",
+ inventory_image = "infrastructure_automatic_warning_device.png",
+ wield_image = "infrastructure_automatic_warning_device.png",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_bottom.png",
+ "infrastructure_automatic_warning_device_bottom.png",
+ "infrastructure_automatic_warning_device_bottom.png",
+ "infrastructure_automatic_warning_device_bottom.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, 0, -1/16, 1/16, 1/2, 1/16},
+ {-1/2, -1/2, -1/4, 1/2, -3/8, 1/4},
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
+ {-1/8, -3/8, -1/8, 1/8, 0, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ -- top
+ {-1/8, 0 + 3, -1/8, 1/8, 3/8 + 3, 1/8},
+ {-1/4, 1/8 + 3, -1/4, 1/4, 1/4 + 3, 1/4},
+ {-1/8, -1/2 + 3, -1/16 + 0.01, 1/8, -1/4 + 3, 1/8},
+ -- middle center, left and right
+ {-9/16, -5/16 + 2, -1/16, -3/16, 1/16 + 2, 3/16},
+ {3/16, -5/16 + 2, -1/16, 9/16, 1/16 + 2, 3/16},
+
+ {-3/16, -3/16 + 2, -1/16 + 0.01, 3/16, -1/16 + 2, 1/8},
+
+ {-1/2, 1/32 + 2, -5/16, -7/32, 3/32 + 2, -1/16 - 0.01},
+ {-7/32, -1/8 + 2, -3/16, -5/32, 1/32 + 2, -1/16 - 0.01},
+ {13/32 - 1, -1/8 + 2, -3/16, 15/32 - 1, 1/32 + 2, -1/16 - 0.01},
+
+ {7/32, 1/32 + 2, -5/16, 1/2, 3/32 + 2, -1/16 - 0.01},
+ {5/32, -1/8 + 2, -3/16, 7/32, 1/32 + 2, -1/16 - 0.01},
+ {-15/32 + 1, -1/8 + 2, -3/16, -13/32 + 1, 1/32 + 2, -1/16 - 0.01},
+ -- middle
+ {-3/8, -3/8 + 1, -1/8, 3/8, 3/8 + 1, -1/16},
+ {-1/8, -1/8 + 1, -1/16, 1/8, 1/8 + 1, 1/8},
+ -- bottom
+ {-1/2, -1/2, -1/4, 1/2, -3/8, 1/4},
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
+ {-1/8, -3/8, -1/8, 1/8, 0, 1/8},
+ -- post
+ {-1/16, 0, -1/16, 1/16, 3, 1/16}
+ }
+ },
+
+ on_construct = function(pos)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+
+ pos.y = pos.y + 1
+ node.name = "infrastructure:automatic_warning_device_middle"
+ minetest.set_node(pos, node)
+
+ pos.y = pos.y + 2
+ node.name = "infrastructure:automatic_warning_device_top"
+ minetest.set_node(pos, node)
+
+ pos.y = pos.y - 1
+ node.name = "infrastructure:automatic_warning_device_middle_center_1"
+ minetest.set_node(pos, node)
+
+ infrastructure.left_light_direction(pos, param2)
+ node.name = "infrastructure:automatic_warning_device_middle_left_1"
+ minetest.set_node(pos, node)
+
+ infrastructure.right_light_direction(pos, param2)
+ node.name = "infrastructure:automatic_warning_device_middle_right_1"
+ minetest.set_node(pos, node)
+ end,
+
+ on_destruct = function(pos)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ pos.y=pos.y+2
+ infrastructure.stop_bell(pos, node)
+ pos.y=pos.y-2
+
+ for i = 1, 3 do
+ pos.y = pos.y + 1
+ minetest.remove_node(pos)
+ end
+
+ pos.y = pos.y - 1
+
+ infrastructure.left_light_direction(pos, param2)
+ minetest.remove_node(pos)
+
+ infrastructure.right_light_direction(pos, param2)
+ minetest.remove_node(pos)
+ end,
+
+ on_punch = function(pos, node)
+ infrastructure.activate_lights(pos, node)
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ local setchan = minetest.get_meta(pos):get_string("channel")
+ if setchan ~= channel then
+ return
+ end
+ if (msg=="bell_on") then
+ infrastructure.play_bell(pos)
+ elseif (msg=="bell_off") then
+ infrastructure.stop_bell(pos)
+ elseif (msg=="lights_on") then
+ pos.y = pos.y+2
+ infrastructure.lights_enabled(pos)
+ elseif (msg=="lights_off") then
+ pos.y = pos.y+2
+ infrastructure.lights_disabled(pos)
+ end
+ end
+ }
+ }
+})
+
+
+
+
+minetest.register_alias("infrastructure:automatic_warning_device", "infrastructure:automatic_warning_device_bottom")
+minetest.register_alias("awd", "infrastructure:automatic_warning_device_bottom")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_left_1","infrastructure:automatic_warning_device_middle_left_off")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_left_2","infrastructure:automatic_warning_device_middle_left_off")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_right_1","infrastructure:automatic_warning_device_middle_right_off")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_right_2","infrastructure:automatic_warning_device_middle_right_off")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_center_1","infrastructure:automatic_warning_device_middle_center_off")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_center_2","infrastructure:automatic_warning_device_middle_center_off")
+minetest.register_alias("infrastructure:automatic_warning_device_middle_center_3","infrastructure:automatic_warning_device_middle_center_off")
diff --git a/streets/infrastructure/advanced_boom_barrier.lua b/streets/infrastructure/advanced_boom_barrier.lua
new file mode 100644
index 0000000..67a9b8b
--- /dev/null
+++ b/streets/infrastructure/advanced_boom_barrier.lua
@@ -0,0 +1,508 @@
+-- Boom barrier
+function move_arm(pos, node)
+ local node = minetest.env:get_node(pos)
+ local param2 = node.param2
+
+ if param2 == 0 then
+ dir = "z-"
+ elseif param2 == 1 then
+ dir = "x-"
+ elseif param2 == 2 then
+ dir = "z+"
+ elseif param2 == 3 then
+ dir = "x+"
+ end
+
+ minetest.sound_play("infrastructure_boom_barrier", {
+ pos = pos,
+ gain = BOOM_BARRIER_VOLUME,
+ max_hear_distance = 50
+ })
+
+ if node.name == "infrastructure:boom_barrier_top_h" then
+ minetest.swap_node(pos, {name = "infrastructure:boom_barrier_top_v", param2 = node.param2})
+
+ if dir == "x+" then
+ for i = 1, 10 do
+ pos.x = pos.x + 1
+ if (string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_lightfirst")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_end")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_darkfirst")) == nil then
+ pos.x = pos.x - 1
+ break
+ end
+ minetest.env:remove_node(pos)
+ node.name = "infrastructure:boom_barrier_arm_v"
+ minetest.env:add_node({x=pos.x-i, y=pos.y+i, z=pos.z}, node)
+ end
+ elseif dir == "x-" then
+ for i = 1, 10 do
+ pos.x = pos.x - 1
+ if (string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_lightfirst")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_end")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_darkfirst")) == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ node.name = "infrastructure:boom_barrier_arm_v"
+ minetest.env:add_node({x=pos.x+i, y=pos.y+i, z=pos.z}, node)
+ end
+ elseif dir == "z+" then
+ for i = 1, 10 do
+ pos.z = pos.z + 1
+ if (string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_lightfirst")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_end")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_darkfirst")) == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ node.name = "infrastructure:boom_barrier_arm_v"
+ minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-i}, node)
+ end
+ elseif dir == "z-" then
+ for i = 1, 10 do
+ pos.z = pos.z - 1
+ if (string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_lightfirst")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_end")
+ or string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_h_darkfirst")) == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ node.name = "infrastructure:boom_barrier_arm_v"
+ minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z+i}, node)
+ end
+ end
+
+ elseif node.name == "infrastructure:boom_barrier_top_v" then
+ minetest.swap_node(pos, {name = "infrastructure:boom_barrier_top_h", param2 = node.param2})
+ if dir == "x+" then
+ for i = 1, 10 do
+ pos.y = pos.y + 1
+ if string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_v") == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ if i % 2 == 1 then
+ node.name = "infrastructure:boom_barrier_arm_h_lightfirst"
+ else
+ node.name = "infrastructure:boom_barrier_arm_h_darkfirst"
+ end
+ if minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name ~= "infrastructure:boom_barrier_arm_v" then
+ node.name = "infrastructure:boom_barrier_arm_h_end"
+ end
+ minetest.env:add_node({x=pos.x+i, y=pos.y-i, z=pos.z}, node)
+ end
+ elseif dir == "x-" then
+ for i = 1, 10 do
+ pos.y = pos.y + 1
+ if string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_v") == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ if i % 2 == 1 then
+ node.name = "infrastructure:boom_barrier_arm_h_lightfirst"
+ else
+ node.name = "infrastructure:boom_barrier_arm_h_darkfirst"
+ end
+ if minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name ~= "infrastructure:boom_barrier_arm_v" then
+ node.name = "infrastructure:boom_barrier_arm_h_end"
+ end
+ minetest.env:add_node({x=pos.x-i, y=pos.y-i, z=pos.z}, node)
+ end
+ elseif dir == "z+" then
+ for i = 1, 10 do
+ pos.y = pos.y + 1
+ if string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_v") == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ if i % 2 == 1 then
+ node.name = "infrastructure:boom_barrier_arm_h_lightfirst"
+ else
+ node.name = "infrastructure:boom_barrier_arm_h_darkfirst"
+ end
+ if minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name ~= "infrastructure:boom_barrier_arm_v" then
+ node.name = "infrastructure:boom_barrier_arm_h_end"
+ end
+ minetest.env:add_node({x=pos.x, y=pos.y-i, z=pos.z+i}, node)
+ end
+ elseif dir == "z-" then
+ for i = 1, 10 do
+ pos.y = pos.y + 1
+ if string.match(minetest.env:get_node(pos).name, "infrastructure:boom_barrier_arm_v") == nil then
+ break
+ end
+ minetest.env:remove_node(pos)
+ if i % 2 == 1 then
+ node.name = "infrastructure:boom_barrier_arm_h_lightfirst"
+ else
+ node.name = "infrastructure:boom_barrier_arm_h_darkfirst"
+ end
+ if minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name ~= "infrastructure:boom_barrier_arm_v" then
+ node.name = "infrastructure:boom_barrier_arm_h_end"
+ end
+ minetest.env:add_node({x=pos.x, y=pos.y-i, z=pos.z-i}, node)
+ end
+ end
+ end
+end
+
+minetest.register_node("infrastructure:boom_barrier_top_h", {
+ description = "Boom barrier mechanism",
+ tiles = {
+ "infrastructure_boom_barrier_h_top.png",
+ "infrastructure_boom_barrier_h_bottom.png",
+ "infrastructure_boom_barrier_h_right.png",
+ "infrastructure_boom_barrier_h_left.png",
+ "infrastructure_boom_barrier_h_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/4, -1/4, 1/4, 1/4, 1/4},
+ {-1/8, -1/2, -1/8, 1/8, -1/4, 1/8},
+
+ {-3/8, -1/2, -1/2, -1/4, -1/4, 1/8},
+ {-3/8, -1/2, -1/8, -1/4, 1/8, 1/8},
+ {-3/8, -1/8, -1/8, -1/4, 1/8, 1/2},
+ {-1/2, -3/16, 1/4, -3/8, 3/16, 1/2},
+ {-1/2, -1/8, 3/16, -3/8, 1/8, 1/2},
+ {-1/2, -1/16, 1/8, -3/8, 1/16, 1/2},
+
+ {1/4, -1/2, -1/2, 3/8, -1/4, 1/8},
+ {1/4, -1/2, -1/8, 3/8, 1/8, 1/8},
+ {1/4, -1/8, -1/8, 3/8, 1/8, 1/2},
+ {3/8, -3/16, 1/4, 1/2, 3/16, 1/2},
+ {3/8, -1/8, 3/16, 1/2, 1/8, 1/2},
+ {3/8, -1/16, 1/8, 1/2, 1/16, 1/2},
+
+ {-3/8, -1/2, -1/2, 3/8, -1/4, -3/8},
+
+ {-7/16, -1/16, -1/16, 7/16, 1/16, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/4, -1/4, 1/4, 1/4, 1/4},
+ {-1/8, -1/2, -1/8, 1/8, -1/4, 1/8},
+
+ {-3/8, -1/2, -1/2, -1/4, -1/4, 1/8},
+ {-3/8, -1/2, -1/8, -1/4, 1/8, 1/8},
+ {-3/8, -1/8, -1/8, -1/4, 1/8, 1/2},
+ {-1/2, -3/16, 1/4, -3/8, 3/16, 1/2},
+ {-1/2, -1/8, 3/16, -3/8, 1/8, 1/2},
+ {-1/2, -1/16, 1/8, -3/8, 1/16, 1/2},
+
+ {1/4, -1/2, -1/2, 3/8, -1/4, 1/8},
+ {1/4, -1/2, -1/8, 3/8, 1/8, 1/8},
+ {1/4, -1/8, -1/8, 3/8, 1/8, 1/2},
+ {3/8, -3/16, 1/4, 1/2, 3/16, 1/2},
+ {3/8, -1/8, 3/16, 1/2, 1/8, 1/2},
+ {3/8, -1/16, 1/8, 1/2, 1/16, 1/2},
+
+ {-3/8, -1/2, -1/2, 3/8, -1/4, -3/8},
+
+ {-7/16, -1/16, -1/16, 7/16, 1/16, 1/16}
+ }
+ },
+
+ after_place_node = function(pos)
+ local node = minetest.env:get_node(pos)
+ node.name = "infrastructure:boom_barrier_bottom"
+ minetest.env:add_node(pos, node)
+ pos.y = pos.y + 1
+ node.name = "infrastructure:boom_barrier_top_h"
+ minetest.env:add_node(pos, node)
+ end,
+
+ after_dig_node = function(pos)
+ pos.y = pos.y - 1
+ minetest.env:remove_node(pos)
+ end,
+
+ on_punch = function(pos, node)
+ move_arm(pos, node)
+ end
+})
+
+minetest.register_node("infrastructure:boom_barrier_top_v", {
+ tiles = {
+ "infrastructure_boom_barrier_h_front_back.png",
+ "infrastructure_boom_barrier_v_bottom.png",
+ "infrastructure_boom_barrier_v_right.png",
+ "infrastructure_boom_barrier_v_left.png",
+ "infrastructure_boom_barrier_v_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ drop = "infrastructure:boom_barrier_top_h",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/4, -1/4, 1/4, 1/4, 1/4},
+ {-1/8, -1/2, -1/8, 1/8, -1/4, 1/8},
+
+ {-3/8, -1/8, -1/2, -1/4, 1/2, -1/4},
+ {-3/8, -1/8, -1/2, -1/4, 1/8, 1/8},
+ {-3/8, -1/2, -1/8, -1/4, 1/8, 1/8},
+ {-1/2, -1/2, -3/16, -3/8, -1/4, 3/16},
+ {-1/2, -1/2, -1/8, -3/8, -3/16, 1/8},
+ {-1/2, -1/2, -1/16, -3/8, -1/8, 1/16},
+
+ {1/4, -1/8, -1/2, 3/8, 1/2, -1/4},
+ {1/4, -1/8, -1/2, 3/8, 1/8, 1/8},
+ {1/4, -1/2, -1/8, 3/8, 1/8, 1/8},
+ {3/8, -1/2, -3/16, 1/2, -1/4, 3/16},
+ {3/8, -1/2, -1/8, 1/2, -3/16, 1/8},
+ {3/8, -1/2, -1/16, 1/2, -1/8, 1/16},
+
+ {-3/8, 3/8, -1/2, 3/8, 1/2, -1/4},
+
+ {-7/16, -1/16, -1/16, 7/16, 1/16, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/4, -1/4, 1/4, 1/4, 1/4},
+ {-1/8, -1/2, -1/8, 1/8, -1/4, 1/8},
+
+ {-3/8, -1/8, -1/2, -1/4, 1/2, -1/4},
+ {-3/8, -1/8, -1/2, -1/4, 1/8, 1/8},
+ {-3/8, -1/2, -1/8, -1/4, 1/8, 1/8},
+ {-1/2, -1/2, -3/16, -3/8, -1/4, 3/16},
+ {-1/2, -1/2, -1/8, -3/8, -3/16, 1/8},
+ {-1/2, -1/2, -1/16, -3/8, -1/8, 1/16},
+
+ {1/4, -1/8, -1/2, 3/8, 1/2, -1/4},
+ {1/4, -1/8, -1/2, 3/8, 1/8, 1/8},
+ {1/4, -1/2, -1/8, 3/8, 1/8, 1/8},
+ {3/8, -1/2, -3/16, 1/2, -1/4, 3/16},
+ {3/8, -1/2, -1/8, 1/2, -3/16, 1/8},
+ {3/8, -1/2, -1/16, 1/2, -1/8, 1/16},
+
+ {-3/8, 3/8, -1/2, 3/8, 1/2, -1/4},
+
+ {-7/16, -1/16, -1/16, 7/16, 1/16, 1/16}
+ }
+ },
+
+ after_dig_node = function(pos)
+ pos.y = pos.y - 1
+ minetest.env:remove_node(pos)
+ end,
+
+ on_punch = function(pos, node)
+ move_arm(pos, node)
+ end
+})
+
+minetest.register_node("infrastructure:boom_barrier_bottom", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_automatic_warning_device_bottom.png",
+ "infrastructure_automatic_warning_device_bottom.png",
+ "infrastructure_automatic_warning_device_bottom.png",
+ "infrastructure_automatic_warning_device_bottom.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ drop = "infrastructure:boom_barrier_top_h",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/2, -1/2, -1/4, 1/2, -3/8, 1/4},
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
+ {-1/8, -1/2, -1/8, 1/8, 0, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/2, -1/2, -1/4, 1/2, -3/8, 1/4},
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
+ {-1/8, -1/2, -1/8, 1/8, 0, 1/8}
+ }
+ },
+
+ after_dig_node = function(pos)
+ pos.y = pos.y + 1
+ minetest.env:remove_node(pos)
+ end,
+
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ local setchan = minetest.get_meta(pos):get_string("channel")
+ if setchan ~= channel then
+ return
+ end
+ pos.y = pos.y + 1
+ local mechnode = minetest.env:get_node(pos)
+ if ((msg == "up" and mechnode.name=="infrastructure:boom_barrier_top_h") or (msg == "down" and mechnode.name=="infrastructure:boom_barrier_top_v")) then
+ move_arm(pos, mechnode)
+ end
+ end
+ }
+ },
+})
+
+minetest.register_node("infrastructure:boom_barrier_arm_h_lightfirst", {
+ description = "Boom barrier arm",
+ tiles = {
+ "infrastructure_boom_barrier_arm_h_top.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ {name="infrastructure_boom_barrier_arm_h_anim_lightfirst.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}},
+ {name="infrastructure_boom_barrier_arm_h_anim_lightfirst.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}},
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ light_source = BOOM_BARRIER_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, -7/16, 1/2},
+ {-1/8, -5/16, -1/2, 1/8, -1/4, 1/2},
+ {-1/8, -1/2, -1/2, -1/16, -1/4, 1/2},
+ {1/16, -1/2, -1/2, 1/8, -1/4, 1/2},
+ {0, -1/4, -1/8, 0, 0, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, -1/4, 1/2}
+ }
+ }
+})
+
+minetest.register_node("infrastructure:boom_barrier_arm_h_darkfirst", {
+ tiles = {
+ "infrastructure_boom_barrier_arm_h_top.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ {name="infrastructure_boom_barrier_arm_h_anim_darkfirst.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}},
+ {name="infrastructure_boom_barrier_arm_h_anim_darkfirst.png",animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5}},
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ drop = "infrastructure:boom_barrier_arm_h_lightfirst",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, -7/16, 1/2},
+ {-1/8, -5/16, -1/2, 1/8, -1/4, 1/2},
+ {-1/8, -1/2, -1/2, -1/16, -1/4, 1/2},
+ {1/16, -1/2, -1/2, 1/8, -1/4, 1/2},
+ {0, -1/4, -1/8, 0, 0, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, -1/4, 1/2}
+ }
+ }
+})
+
+minetest.register_node("infrastructure:boom_barrier_arm_h_end", {
+ tiles = {
+ "infrastructure_boom_barrier_arm_h_top.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ "infrastructure_boom_barrier_arm_h_left_right_bright.png",
+ "infrastructure_boom_barrier_arm_h_left_right_bright.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ drop = "infrastructure:boom_barrier_arm_h_lightfirst",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, -7/16, 1/2},
+ {-1/8, -5/16, -1/2, 1/8, -1/4, 1/2},
+ {-1/8, -1/2, -1/2, -1/16, -1/4, 1/2},
+ {1/16, -1/2, -1/2, 1/8, -1/4, 1/2},
+ {0, -1/4, -1/8, 0, 0, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, -1/4, 1/2}
+ }
+ }
+})
+
+minetest.register_alias("infrastructure:boom_barrier_arm_h_dark","infrastructure:boom_barrier_arm_h_darkfirst")
+minetest.register_alias("infrastructure:boom_barrier_arm_h_bright","infrastructure:boom_barrier_arm_h_lightfirst")
+
+minetest.register_node("infrastructure:boom_barrier_arm_v", {
+ tiles = {
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png",
+ "infrastructure_boom_barrier_arm_v_left.png",
+ "infrastructure_boom_barrier_arm_v_right.png",
+ "infrastructure_boom_barrier_arm_h_top.png",
+ "infrastructure_boom_barrier_arm_h_bottom_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ drop = "infrastructure:boom_barrier_arm_h_lightfirst",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, 1/2, -7/16},
+ {-1/8, -1/2, -5/16, 1/8, 1/2, -1/4},
+ {-1/8, -1/2, -1/2, -1/16, 1/2, -1/4},
+ {1/16, -1/2, -1/2, 1/8, 1/2, -1/4},
+ {0, -1/8, -1/4, 0, 1/8, 0}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/2, 1/8, 1/2, -1/4}
+ }
+ }
+})
+
+minetest.register_alias("infrastructure:boom_barrier_mechanism", "infrastructure:boom_barrier_top_h")
+minetest.register_alias("infrastructure:boom_barrier_arm", "infrastructure:boom_barrier_arm_h_lightfirst")
diff --git a/streets/infrastructure/advanced_crosswalk_lighting.lua b/streets/infrastructure/advanced_crosswalk_lighting.lua
new file mode 100644
index 0000000..4e669c1
--- /dev/null
+++ b/streets/infrastructure/advanced_crosswalk_lighting.lua
@@ -0,0 +1,85 @@
+-- Crosswalk lighting
+ minetest.register_node("infrastructure:crosswalk_lighting_dark", {
+ description = "Crosswalk lighting",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_lighting_bottom.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_lighting_back.png",
+ "infrastructure_crosswalk_lighting_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-3/8, -1/2, -1/4, 3/8, 1/2, -3/16},
+ {-3/8, -1/2, 3/16, 3/8, 1/2, 1/4},
+ {-1/4, 1/4, -3/16, -1/8, 3/8, 3/16},
+ {1/8, 1/4, -3/16, 1/4, 3/8, 3/16},
+ {-1/8, -1/2, -3/16, 1/8, -1/4, 3/16},
+ {-1/2, -1/2, -1/8, 1/2, -3/8, 1/8},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-3/8, -1/2, -1/4, 3/8, 1/2, 1/4}
+ },
+
+ on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:crosswalk_lighting_bright", param2 = node.param2})
+ end,
+
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:crosswalk_lighting_bright", param2 = node.param2})
+ end,
+ }}
+ })
+
+ minetest.register_node("infrastructure:crosswalk_lighting_bright", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_lighting_bottom.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_lighting_back.png",
+ "infrastructure_crosswalk_lighting_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ light_source = CROSSWALK_LIGHTING_LIGHT_RANGE,
+ drop = "infrastructure:crosswalk_lighting_dark",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-3/8, -1/2, -1/4, 3/8, 1/2, -3/16},
+ {-3/8, -1/2, 3/16, 3/8, 1/2, 1/4},
+ {-1/4, 1/4, -3/16, -1/8, 3/8, 3/16},
+ {1/8, 1/4, -3/16, 1/4, 3/8, 3/16},
+ {-1/8, -1/2, -3/16, 1/8, -1/4, 3/16},
+ {-1/2, -1/2, -1/8, 1/2, -3/8, 1/8},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-3/8, -1/2, -1/4, 3/8, 1/2, 1/4}
+ },
+
+ on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:crosswalk_lighting_dark", param2 = node.param2})
+ end,
+
+ mesecons = {effector = {
+ action_off = function (pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:crosswalk_lighting_dark", param2 = node.param2})
+ end,
+ }}
+ })
+
+ minetest.register_alias("infrastructure:crosswalk_lighting", "infrastructure:crosswalk_lighting_dark")
diff --git a/streets/infrastructure/advanced_crosswalk_safety_sign.lua b/streets/infrastructure/advanced_crosswalk_safety_sign.lua
new file mode 100644
index 0000000..6183322
--- /dev/null
+++ b/streets/infrastructure/advanced_crosswalk_safety_sign.lua
@@ -0,0 +1,85 @@
+-- Crosswalk safety sign
+ minetest.register_node("infrastructure:crosswalk_safety_sign_top", {
+ tiles = {
+ "infrastructure_crosswalk_safety_sign_top.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_safety_sign_top_side.png",
+ "infrastructure_crosswalk_safety_sign_top_side.png",
+ "infrastructure_crosswalk_safety_sign_top_front_back.png",
+ "infrastructure_crosswalk_safety_sign_top_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ light_source = CROSSWALK_SAFETY_SIGN_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, -1/16, 1/4, 0, -1/16},
+ {-1/4, -1/2, 1/16, 1/4, 0, 1/16},
+ {-1/16, -1/2, -1/16, 1/16, -1/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+ })
+
+ minetest.register_node("infrastructure:crosswalk_safety_sign_bottom", {
+ description = "Crosswalk safety sign",
+ inventory_image = "infrastructure_crosswalk_safety_sign.png",
+ wield_image = "infrastructure_crosswalk_safety_sign.png",
+ tiles = {
+ "infrastructure_crosswalk_safety_sign_top.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_safety_sign_bottom_side.png",
+ "infrastructure_crosswalk_safety_sign_bottom_side.png",
+ "infrastructure_crosswalk_safety_sign_bottom_front_back.png",
+ "infrastructure_crosswalk_safety_sign_bottom_front_back.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ light_source = CROSSWALK_SAFETY_SIGN_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -7/32, -1/16, 1/4, 1/2, -1/16},
+ {-1/4, -7/32, 1/16, 1/4, 1/2, 1/16},
+ {-1/16, -5/16, -1/16, 1/16, 1/2, 1/16},
+ {-1/8, -3/8, -1/8, 1/8, -5/16, 1/8},
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -7/32, -1/16, 1/4, 1, -1/16},
+ {-1/4, -7/32, 1/16, 1/4, 1, 1/16},
+
+ {-1/16, -5/16, -1/16 + 0.01, 1/16, 3/4, 1/16 - 0.01},
+
+ {-1/8, -3/8, -1/8, 1/8, -5/16, 1/8},
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2}
+ }
+ },
+
+ after_place_node = function(pos)
+ local node = minetest.env:get_node(pos)
+ node.name = "infrastructure:crosswalk_safety_sign_bottom"
+ minetest.env:add_node(pos, node)
+ pos.y = pos.y + 1
+ node.name = "infrastructure:crosswalk_safety_sign_top"
+ minetest.env:add_node(pos, node)
+ end,
+
+ after_dig_node = function(pos)
+ pos.y = pos.y + 1
+ minetest.env:remove_node(pos)
+ end,
+ })
+
+ minetest.register_alias("infrastructure:crosswalk_safety_sign", "infrastructure:crosswalk_safety_sign_bottom")
diff --git a/streets/infrastructure/advanced_crosswalk_warning_light.lua b/streets/infrastructure/advanced_crosswalk_warning_light.lua
new file mode 100644
index 0000000..213223a
--- /dev/null
+++ b/streets/infrastructure/advanced_crosswalk_warning_light.lua
@@ -0,0 +1,124 @@
+-- Crosswalk warning light
+function on_off_light(pos, node)
+ if node.name == "infrastructure:crosswalk_warning_light_off" then
+ minetest.swap_node(pos, {name = "infrastructure:crosswalk_warning_light_on", param2 = node.param2})
+ elseif (node.name == "infrastructure:crosswalk_warning_light_on") then
+ minetest.swap_node(pos, {name = "infrastructure:crosswalk_warning_light_off", param2 = node.param2})
+ end
+end
+
+minetest.register_node("infrastructure:crosswalk_warning_light_off", {
+ description = "Crosswalk warning light",
+ inventory_image = "infrastructure_crosswalk_warning_light_front_bright.png",
+ wield_image = "infrastructure_crosswalk_warning_light_front_bright.png",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_warning_light_back.png",
+ "infrastructure_crosswalk_warning_light_front_dark.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 0},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -5/16, -1/8, 5/16, 3/8, 1/8},
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/8},
+
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -5/16, -1/8, 5/16, 3/8, 1/8},
+
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.01}
+ }
+ },
+
+ on_punch = function(pos, node)
+ on_off_light(pos, node)
+ end,
+
+ mesecons = {effector = {
+ action_on = function(pos, node)
+ on_off_light(pos, node)
+ end,
+ }}
+})
+
+minetest.register_node("infrastructure:crosswalk_warning_light_on", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_crosswalk_warning_light_back.png",
+ {name="infrastructure_crosswalk_warning_light_front_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.5}}
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ drop = "infrastructure:crosswalk_warning_light_off",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -5/16, -1/8, 5/16, 3/8, 1/8},
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/8},
+
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -5/16, -1/8, 5/16, 3/8, 1/8},
+
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.01}
+ }
+ },
+
+ on_punch = function(pos, node)
+ on_off_light(pos, node)
+ end,
+
+ mesecons = {effector = {
+ action_on = function(pos, node)
+ on_off_light(pos, node)
+ end,
+ }}
+})
+
+minetest.register_alias("infrastructure:crosswalk_warning_light", "infrastructure:crosswalk_warning_light_off")
+minetest.register_alias("infrastructure:crosswalk_warning_bright", "infrastructure:crosswalk_warning_light_on")
+minetest.register_alias("infrastructure:crosswalk_warning_dark", "infrastructure:crosswalk_warning_light_on")
diff --git a/streets/infrastructure/advanced_curve_chevron.lua b/streets/infrastructure/advanced_curve_chevron.lua
new file mode 100644
index 0000000..7d3b65d
--- /dev/null
+++ b/streets/infrastructure/advanced_curve_chevron.lua
@@ -0,0 +1,85 @@
+-- Curve chevron
+ minetest.register_node("infrastructure:curve_chevron_dark", {
+ description = "Flashing curve chevron",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_curve_chevron_left_dark.png",
+ "infrastructure_curve_chevron_right_dark.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/16},
+ {-1/2, -1/2, 1/16, 1/2, 1/2, 1/8},
+ {-3/8, 1/4, -1/16, -1/4, 3/8, 1/16},
+ {1/4, 1/4, -1/16, 3/8, 3/8, 1/16},
+ {-3/8, -3/8, -1/16, -1/4, -1/4, 1/16},
+ {1/4, -3/8, -1/16, 3/8, -1/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/8, 1/2, 1/2, 1/8}
+ },
+
+ on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:curve_chevron_bright", param2 = node.param2})
+ end,
+
+ mesecons = {effector = {
+ action_on = function (pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:curve_chevron_bright", param2 = node.param2})
+ end,
+ }}
+ })
+
+ minetest.register_node("infrastructure:curve_chevron_bright", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_curve_chevron_left_bright.png",
+ "infrastructure_curve_chevron_right_bright.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ light_source = CURVE_CHEVRON_LIGHT_RANGE,
+ drop = "infrastructure:curve_chevron_dark",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/16},
+ {-1/2, -1/2, 1/16, 1/2, 1/2, 1/8},
+ {-3/8, 1/4, -1/16, -1/4, 3/8, 1/16},
+ {1/4, 1/4, -1/16, 3/8, 3/8, 1/16},
+ {-3/8, -3/8, -1/16, -1/4, -1/4, 1/16},
+ {1/4, -3/8, -1/16, 3/8, -1/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/8, 1/2, 1/2, 1/8}
+ },
+
+ on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:curve_chevron_dark", param2 = node.param2})
+ end,
+
+ mesecons = {effector = {
+ action_off = function (pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:curve_chevron_dark", param2 = node.param2})
+ end
+ }}
+ })
+
+ minetest.register_alias("infrastructure:curve_chevron", "infrastructure:curve_chevron_dark")
diff --git a/streets/infrastructure/advanced_emergency_phone.lua b/streets/infrastructure/advanced_emergency_phone.lua
new file mode 100644
index 0000000..c511db1
--- /dev/null
+++ b/streets/infrastructure/advanced_emergency_phone.lua
@@ -0,0 +1,107 @@
+-- Emergency phone (only if enabled)
+ if ENABLE_EMERGENCY_PHONE then
+ minetest.register_node("infrastructure:emergency_phone_top", {
+ description = "Emergency phone",
+ tiles = {
+ "infrastructure_emergency_phone_top.png",
+ "infrastructure_emergency_phone_bottom.png",
+ "infrastructure_emergency_phone_side.png",
+ "infrastructure_emergency_phone_side.png",
+ "infrastructure_emergency_phone_side.png",
+ "infrastructure_emergency_phone_front.png"
+ },
+ drawtype = "nodebox",
+ drop = "streets:emergencyphone",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=1,not_in_creative_inventory=1},
+ light_source = EMERGENCY_PHONE_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25},
+ {-0.25, -0.5, -0.3125, -0.1875, 0.5, -0.25},
+ {0.1875, -0.5, -0.3125, 0.25, 0.5, -0.25},
+ {-0.1875, 0.4375, -0.3125, 0.1875, 0.5, -0.25}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25},
+ {-0.25, -0.5, -0.3125, -0.1875, 0.5, -0.25},
+ {0.1875, -0.5, -0.3125, 0.25, 0.5, -0.25},
+ {-0.1875, 0.4375, -0.3125, 0.1875, 0.5, -0.25},
+ }
+ },
+
+ after_dig_node = function(pos)
+ pos.y = pos.y - 1
+ if minetest.get_node(pos).name == "infrastructure:emergency_phone_bottom" then
+ minetest.remove_node(pos)
+ end
+ end,
+
+ on_punch = function(pos, node, puncher)
+ if dial_handler ~= nil then
+ minetest.sound_stop(dial_handler)
+ dial_handler = nil
+ end
+ dial_handler = minetest.sound_play("infrastructure_emergency_phone", {
+ pos = pos,
+ gain = EMERGENCY_PHONE_VOLUME,
+ max_hear_distance = 50
+ })
+ if (puncher:is_player() and puncher:get_hp() < HEALTH_TO_RESTORING and puncher:get_hp() <= HEALTH_TO_TRIGGER) then
+ puncher:set_hp(HEALTH_TO_RESTORING)
+ minetest.chat_send_player(puncher:get_player_name(), "You got healed!")
+ minetest.chat_send_all("Server: -!- "..puncher:get_player_name().." used an emergency phone at "..pos.x..","..pos.y..","..pos.z);
+ end
+ end
+ })
+
+ minetest.register_node("infrastructure:emergency_phone_bottom", {
+ tiles = {"infrastructure_emergency_phone_bottom.png"},
+ drawtype = "nodebox",
+ drop = "streets:emergencyphone",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=1,not_in_creative_inventory=1},
+ node_box = {
+ type = "fixed",
+ fixed = {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}
+ },
+
+ after_dig_node = function(pos)
+ pos.y = pos.y+1
+ if minetest.get_node(pos).name == "infrastructure:emergency_phone_top" then
+ minetest.remove_node(pos)
+ end
+ end,
+ })
+
+ minetest.register_alias("infrastructure:emergency_phone", "infrastructure:emergency_phone_top")
+
+ minetest.register_abm({
+ nodenames = {"streets:emergencyphone"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node)
+ local node = minetest.get_node(pos)
+ local node_above = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
+ if node_above.name == "air" then
+ node.name = "infrastructure:emergency_phone_bottom"
+ minetest.set_node(pos, node)
+ pos.y = pos.y+1
+ end
+ node.name = "infrastructure:emergency_phone_top"
+ minetest.set_node(pos, node)
+ end,
+ })
+ else
+ print("Infrastructure mod: -!- Emergency-Phone is disabled!")
+ end
diff --git a/streets/infrastructure/advanced_lane_control_lights.lua b/streets/infrastructure/advanced_lane_control_lights.lua
new file mode 100644
index 0000000..195f809
--- /dev/null
+++ b/streets/infrastructure/advanced_lane_control_lights.lua
@@ -0,0 +1,91 @@
+-- Lane control lights
+
+for i = 1, 6 do
+ local groups = {}
+ if i == 1 then
+ groups = {cracky = 3}
+ else
+ groups = {cracky = 3, not_in_creative_inventory = 1}
+ end
+
+ minetest.register_node("infrastructure:lane_control_lights_"..tostring(i), {
+ description = "Lane control lights",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_lane_control_lights_"..tostring(i)..".png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ groups = {cracky = 3, not_in_creative_inventory = (i == 1 and 0 or 1)},
+ light_source = TRAFFIC_LIGHTS_LIGHT_RANGE,
+ drop = "infrastructure:lane_control_lights_1",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-7/16, -7/16, -1/8, 7/16, 7/16, 1/8},
+ {-7/16, 0, -1/4, -3/8, 7/16, -1/8},
+ {3/8, 0, -1/4, 7/16, 7/16, -1/8},
+ {-7/16, 3/8, -5/16, 7/16, 7/16, -1/8},
+ {-1/16, -1/4, 0, 1/16, 1/4, 1/2 - 0.001},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.001},
+ {-1/4, -1/16, 0, 1/4, 1/16, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-7/16, -7/16, -1/8, 7/16, 7/16, 1/8},
+ {-7/16, 0, -1/4, -3/8, 7/16, -1/8},
+ {3/8, 0, -1/4, 7/16, 7/16, -1/8},
+ {-7/16, 3/8, -5/16, 7/16, 7/16, -1/8},
+ {-1/16, -1/4, 0, 1/16, 1/4, 1/2 - 0.001},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.001},
+ {-1/4, -1/16, 0, 1/4, 1/16, 1/2 - 0.001}
+ }
+
+ },
+ on_receive_fields = function(pos, formname, fields)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ end
+ end,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ local setchan = minetest.get_meta(pos):get_string("channel")
+ if setchan ~= channel then
+ return
+ end
+ msg = msg:lower()
+ if (msg=="off") then
+ node.name = "infrastructure:lane_control_lights_1"
+ elseif (msg=="green") then
+ node.name = "infrastructure:lane_control_lights_3"
+ elseif (msg=="red") then
+ node.name = "infrastructure:lane_control_lights_2"
+ elseif (msg=="yellowleft") then
+ node.name = "infrastructure:lane_control_lights_5"
+ elseif (msg=="yellowright") then
+ node.name = "infrastructure:lane_control_lights_4"
+ elseif (msg=="yellow") then
+ node.name = "infrastructure:lane_control_lights_6"
+ end
+ minetest.set_node(pos,node)
+ minetest.get_meta(pos):set_string("channel",setchan)
+ end
+ }
+ }
+ })
+end
+
+minetest.register_alias("infrastructure:lane_control_lights", "infrastructure:lane_control_lights_1")
diff --git a/streets/infrastructure/advanced_road_signs.lua b/streets/infrastructure/advanced_road_signs.lua
new file mode 100644
index 0000000..b732bfd
--- /dev/null
+++ b/streets/infrastructure/advanced_road_signs.lua
@@ -0,0 +1,237 @@
+-- Road signs
+ local signs = {"stop", "yield", "right_of_way"}
+
+ for i, sign_name in ipairs(signs) do
+ minetest.register_node("infrastructure:road_sign_"..sign_name, {
+ description = "Road sign "..sign_name,
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_road_sign_"..sign_name.."_back.png",
+ "infrastructure_road_sign_"..sign_name.."_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16},
+ {-3/16, -1/8, 7/16, 3/16, 1/8, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16},
+ {-3/16, -1/8, 7/16 + 0.01, 3/16, 1/8, 1/2 - 0.01}
+ }
+ },
+
+ after_place_node = function(pos, node)
+ local node = minetest.env:get_node(pos)
+ local param2 = node.param2
+ local sign_pos = {x=pos.x, y=pos.y, z=pos.z}
+
+ if param2 == 0 then
+ pos.z = pos.z + 1
+ elseif param2 == 1 then
+ pos.x = pos.x + 1
+ elseif param2 == 2 then
+ pos.z = pos.z - 1
+ elseif param2 == 3 then
+ pos.x = pos.x - 1
+ end
+
+ local node = minetest.env:get_node(pos)
+
+ if minetest.registered_nodes[node.name].drawtype == "fencelike" then
+ minetest.set_node(sign_pos, {name="infrastructure:road_sign_"..sign_name.."_on_post", param2=param2})
+ end
+ end
+ })
+
+ minetest.register_node("infrastructure:road_sign_"..sign_name.."_on_post", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_road_sign_"..sign_name.."_back.png",
+ "infrastructure_road_sign_"..sign_name.."_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ drop = "infrastructure:road_sign_"..sign_name,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8},
+ {-3/16, 1/16, 7/16 + 3/8, 3/16, 1/8, 13/16 + 3/8 - 0.001},
+ {-3/16, -1/8, 7/16 + 3/8, 3/16, -1/16, 13/16 + 3/8 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8},
+ {-3/16, 1/16, 7/16 + 3/8 + 0.01, 3/16, 1/8, 13/16 + 3/8 - 0.01},
+ {-3/16, -1/8, 7/16 + 3/8 + 0.01, 3/16, -1/16, 13/16 + 3/8 - 0.01}
+ }
+ }
+ })
+ end
+
+-- Road sign crosswalk
+ minetest.register_node("infrastructure:road_sign_crosswalk", {
+ description = "Road sign crosswalk",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_road_sign_crosswalk_back.png",
+ "infrastructure_road_sign_crosswalk_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16},
+ {-3/16, -1/8, 7/16, 3/16, 1/8, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16},
+ {-3/16, -1/8, 7/16, 3/16, 1/8, 1/2 - 0.001}
+ }
+ },
+
+ after_place_node = function(pos, node)
+ local node = minetest.env:get_node(pos)
+ local param2 = node.param2
+ local sign_pos = {x=pos.x, y=pos.y, z=pos.z}
+
+ if param2 == 0 then
+ pos.z = pos.z + 1
+ elseif param2 == 1 then
+ pos.x = pos.x + 1
+ elseif param2 == 2 then
+ pos.z = pos.z - 1
+ elseif param2 == 3 then
+ pos.x = pos.x - 1
+ end
+
+ local node = minetest.env:get_node(pos)
+
+ if param2 == 0 then
+ pos.z = pos.z - 2
+ elseif param2 == 1 then
+ pos.x = pos.x - 2
+ elseif param2 == 2 then
+ pos.z = pos.z + 2
+ elseif param2 == 3 then
+ pos.x = pos.x + 2
+ end
+
+ if minetest.registered_nodes[node.name].drawtype == "fencelike" then
+ minetest.set_node(sign_pos, {name="infrastructure:road_sign_crosswalk_on_post", param2=param2})
+ minetest.env:add_node(pos, {name="infrastructure:road_sign_retroreflective_surface_on_post", param2=param2})
+ else
+ minetest.env:add_node(pos, {name="infrastructure:road_sign_retroreflective_surface", param2=param2})
+ end
+ end
+ })
+
+ minetest.register_node("infrastructure:road_sign_crosswalk_on_post", {
+ description = "Road sign crosswalk",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_road_sign_crosswalk_back.png",
+ "infrastructure_road_sign_crosswalk_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ drop = "infrastructure:road_sign_crosswalk",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8},
+ {-3/16, 1/16, 7/16 + 3/8, 3/16, 1/8, 13/16 + 3/8 - 0.001},
+ {-3/16, -1/8, 7/16 + 3/8, 3/16, -1/16, 13/16 + 3/8 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8},
+ {-3/16, 1/16, 7/16 + 3/8 + 0.01, 3/16, 1/8, 13/16 + 3/8 - 0.01},
+ {-3/16, -1/8, 7/16 + 3/8 + 0.01, 3/16, -1/16, 13/16 + 3/8 - 0.01}
+ }
+ }
+ })
+
+ minetest.register_node("infrastructure:road_sign_retroreflective_surface", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_road_sign_retroreflective_surface.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = RETROREFLECTIVE_SURFACE_LIGHT_RANGE,
+ drop = "",
+ node_box = {
+ type = "fixed",
+ fixed = {-3/4, -3/4, 7/16 + 1 + 0.01, 3/4, 3/4, 7/16 + 1 + 0.01}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-3/4, -3/4, 7/16 + 1 + 0.01, 3/4, 3/4, 7/16 + 1 + 0.01}
+ }
+ })
+
+ minetest.register_node("infrastructure:road_sign_retroreflective_surface_on_post", {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_road_sign_retroreflective_surface.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = RETROREFLECTIVE_SURFACE_LIGHT_RANGE,
+ drop = "",
+ node_box = {
+ type = "fixed",
+ fixed = {-3/4, -3/4, 7/16 + 3/8 + 1 + 0.01, 3/4, 3/4, 7/16 + 3/8 + 1 + 0.01}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-3/4, -3/4, 7/16 + 3/8 + 1 + 0.01, 3/4, 3/4, 7/16 + 3/8 + 1 + 0.01}
+ }
+ })
diff --git a/streets/infrastructure/advanced_traffic_lights_pedestrians.lua b/streets/infrastructure/advanced_traffic_lights_pedestrians.lua
new file mode 100644
index 0000000..02da804
--- /dev/null
+++ b/streets/infrastructure/advanced_traffic_lights_pedestrians.lua
@@ -0,0 +1,252 @@
+-- Traffic lights for pedestrians
+ beep_handler = {}
+
+ function semaphores_pedestrians(pos, node)
+ local p = minetest.hash_node_position(pos)
+ if node.name == "infrastructure:traffic_lights_pedestrians_bottom_1" then
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_bottom_2", param2 = node.param2})
+ pos.y = pos.y + 1
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_top_2", param2 = node.param2})
+ elseif node.name == "infrastructure:traffic_lights_pedestrians_bottom_2" then
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_bottom_3", param2 = node.param2})
+ pos.y = pos.y + 1
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_top_3", param2 = node.param2})
+ beep_handler[p] = minetest.sound_play("infrastructure_traffic_lights_1", {
+ loop = true,
+ pos = pos,
+ gain = TRAFFIC_LIGHTS_VOLUME,
+ max_hear_distance = 50
+ })
+ elseif node.name == "infrastructure:traffic_lights_pedestrians_bottom_3" then
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_bottom_4", param2 = node.param2})
+ if beep_handler[p] ~= nil then
+ minetest.sound_stop(beep_handler[p])
+ beep_handler[p] = nil
+ end
+ pos.y = pos.y + 1
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_top_4", param2 = node.param2})
+ beep_handler[p] = minetest.sound_play("infrastructure_traffic_lights_2", {
+ loop = true,
+ pos = pos,
+ gain = TRAFFIC_LIGHTS_VOLUME,
+ max_hear_distance = 50
+ })
+ elseif node.name == "infrastructure:traffic_lights_pedestrians_bottom_4" then
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_bottom_1", param2 = node.param2})
+ pos.y = pos.y + 1
+ minetest.swap_node(pos, {name = "infrastructure:traffic_lights_pedestrians_top_1", param2 = node.param2})
+ if beep_handler[p] ~= nil then
+ minetest.sound_stop(beep_handler[p])
+ beep_handler[p] = nil
+ end
+ end
+ end
+
+ function quiet(pos)
+ local p = minetest.hash_node_position(pos)
+ if beep_handler[p] ~= nil then
+ minetest.sound_stop(beep_handler[p])
+ beep_handler[p] = nil
+ end
+ end
+
+ for i = 1, 4 do
+ minetest.register_node("infrastructure:traffic_lights_pedestrians_top_"..tostring(i), {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_pedestrians_top_back.png",
+ "infrastructure_traffic_lights_pedestrians_top_front_"..tostring(i)..".png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky=3, not_in_creative_inventory = 1},
+ light_source = TRAFFIC_LIGHTS_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -1/2, -1/8, 5/16, 0, 1/8},
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/8},
+
+ {-5/16, -1/8, -5/16, 5/16, -1/16, -1/8},
+ {-5/16, -3/8, -1/4, -1/4, -1/8, -1/8},
+ {1/4, -3/8, -1/4, 5/16, -1/8, -1/8},
+
+ {-1/8, 1/16, -1/8, 1/8, 5/16, 0},
+ {-1/16, 1/8, 0, 1/16, 1/4, 1/8},
+ {-1/16, 0, -1/16, 1/16, 1/8, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0}
+ }
+ })
+
+ minetest.register_node("infrastructure:traffic_lights_pedestrians_bottom_"..tostring(i), {
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_pedestrians_bottom_back.png",
+ "infrastructure_traffic_lights_pedestrians_bottom_front_"..tostring(i)..".png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ light_source = TRAFFIC_LIGHTS_LIGHT_RANGE,
+ drop = "infrastructure:traffic_lights_pedestrians_bottom_1",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -5/16, -1/8, 5/16, 1/2, 1/8},
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/8},
+
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ -- box
+ {-5/16, -5/16, -1/8, 5/16, 1, 1/8},
+ -- top
+ {-5/16, -1/8 + 1, -5/16, 5/16, -1/16 + 1, -1/8},
+ {-5/16, -3/8 + 1, -1/4, -1/4, -1/8 + 1, -1/8},
+ {1/4, -3/8 + 1, -1/4, 5/16, -1/8 + 1, -1/8},
+
+ {-1/8, 1/16 + 1, -1/8, 1/8, 5/16 + 1, 0},
+ {-1/16, 1/8 + 1, 0, 1/16, 1/4 + 1, 1/8},
+ {-1/16, 0 + 1, -1/16, 1/16, 1/4 + 1, 1/16},
+ -- bottom
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.01}
+ }
+ },
+
+ after_place_node = function(pos)
+ local node = minetest.env:get_node(pos)
+ pos.y = pos.y + 1
+ node.name = "infrastructure:traffic_lights_pedestrians_top_"..tostring(i)
+ minetest.env:add_node(pos, node)
+ end,
+
+ after_dig_node = function(pos)
+ local node = minetest.env:get_node(pos)
+ quiet(pos)
+ pos.y = pos.y + 1
+ node.name = "infrastructure:traffic_lights_pedestrians_top_"..tostring(i)
+ minetest.env:remove_node(pos)
+ end,
+
+ on_punch = function(pos, node)
+ semaphores_pedestrians(pos, node)
+ end,
+
+ mesecons = {effector = {
+ action_on = function(pos, node)
+ semaphores_pedestrians(pos, node)
+ end
+ }}
+ })
+ end
+
+ minetest.register_node("infrastructure:traffic_lights_pedestrians_bottom_1", {
+ description = "Traffic lights for pedestrians",
+ inventory_image = "infrastructure_traffic_lights_pedestrians.png",
+ wield_image = "infrastructure_traffic_lights_pedestrians.png",
+ tiles = {
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_side.png",
+ "infrastructure_traffic_lights_pedestrians_bottom_back.png",
+ "infrastructure_traffic_lights_pedestrians_bottom_front_1.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 0},
+ light_source = TRAFFIC_LIGHTS_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -5/16, -1/8, 5/16, 1/2, 1/8},
+ {-1/2, -1/2, -1/8, 1/2, 1/2, -1/8},
+
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.001}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ -- box
+ {-5/16, -5/16, -1/8, 5/16, 1, 1/8},
+ -- top
+ {-5/16, -1/8 + 1, -5/16, 5/16, -1/16 + 1, -1/8},
+ {-5/16, -3/8 + 1, -1/4, -1/4, -1/8 + 1, -1/8},
+ {1/4, -3/8 + 1, -1/4, 5/16, -1/8 + 1, -1/8},
+
+ {-1/8, 1/16 + 1, -1/8, 1/8, 5/16 + 1, 0},
+ {-1/16, 1/8 + 1, 0, 1/16, 1/4 + 1, 1/8},
+ {-1/16, 0 + 1, -1/16, 1/16, 1/8 + 1, 1/16},
+ -- bottom
+ {-5/16, 1/4, -5/16, 5/16, 5/16, -1/8},
+ {-5/16, 0, -1/4, -1/4, 1/4, -1/8},
+ {1/4, 0, -1/4, 5/16, 1/4, -1/8},
+
+ {-1/16, -1/4, 1/8, 1/16, 1/4, 3/8},
+ {-1/4, -1/16, 1/8, 1/4, 1/16, 3/8},
+ {-1/4, -1/4, 3/8, 1/4, 1/4, 1/2 - 0.01}
+ }
+ },
+
+ after_place_node = function(pos)
+ local node = minetest.env:get_node(pos)
+ pos.y = pos.y + 1
+ node.name = "infrastructure:traffic_lights_pedestrians_top_1"
+ minetest.env:add_node(pos, node)
+ end,
+
+ after_dig_node = function(pos)
+ local node = minetest.env:get_node(pos)
+ quiet(pos)
+ pos.y = pos.y + 1
+ node.name = "infrastructure:traffic_lights_pedestrians_top_1"
+ minetest.env:remove_node(pos)
+ end,
+
+ on_punch = function(pos, node)
+ semaphores_pedestrians(pos, node)
+ end,
+
+ mesecons = {effector = {
+ action_on = function(pos, node)
+ semaphores_pedestrians(pos, node)
+ end
+ }}
+ })
+
+ minetest.register_alias("infrastructure:traffic_lights_pedestrians", "infrastructure:traffic_lights_pedestrians_bottom_1")
diff --git a/streets/infrastructure/advanced_warning_light.lua b/streets/infrastructure/advanced_warning_light.lua
new file mode 100644
index 0000000..0ed5b62
--- /dev/null
+++ b/streets/infrastructure/advanced_warning_light.lua
@@ -0,0 +1,47 @@
+-- Warning light
+
+minetest.register_node("infrastructure:warning_light", {
+ description = "Warning light",
+ tiles = {
+ "infrastructure_warning_light_top.png",
+ "infrastructure_warning_light_bottom.png",
+ "infrastructure_warning_light_right.png",
+ "infrastructure_warning_light_left.png",
+ "infrastructure_warning_light_back.png",
+ {name="infrastructure_warning_light_front_anim.png",animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=3}},
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1},
+ light_source = WARNING_LIGHT_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -3/8, 0, 5/16, 0, 0},
+
+ {-1/4, -5/16, 0, 0, -1/16, 1/8},
+
+ {1/16, -1/2, -1/8, 5/16, -1/4, 1/8},
+
+ {-1/16, -1/2, -1/16, 1/16, -3/8, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -3/8, 0, 5/16, 0, 0},
+
+ {-1/4, -5/16, 0 + 0.01, 0, -1/16, 1/8},
+
+ {1/16, -1/2, -1/8, 5/16, -1/4, 1/8},
+
+ {-1/16, -1/2, -1/16, 1/16, -3/8, 1/16}
+ }
+ }
+})
+
+
+
+minetest.register_alias("infrastructure:warning_light_bright", "infrastructure:warning_light")
+minetest.register_alias("infrastructure:warning_light_dark", "infrastructure:warning_light")
diff --git a/streets/infrastructure/crafts.lua b/streets/infrastructure/crafts.lua
new file mode 100644
index 0000000..9897892
--- /dev/null
+++ b/streets/infrastructure/crafts.lua
@@ -0,0 +1,443 @@
+-- **************************************************************************************************** MATERIALS
+
+-- Galvanized steel
+ if minetest.get_modpath("technic") then
+ technic.register_alloy_recipe({input = {"default:steel_ingot 6", "technic:zinc_ingot 1"}, output = "infrastructure:galvanized_steel 6", time = 4})
+ else
+ minetest.register_craft({
+ output = '"infrastructure:galvanized_steel" 6',
+ recipe = {
+ {'', 'default:copper_ingot', ''},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}
+ }
+ })
+ end
+
+-- Galvanized steel fence
+ minetest.register_craft({
+ output = '"infrastructure:fence_galvanized_steel" 6',
+ recipe = {
+ {'infrastructure:galvanized_steel', 'infrastructure:galvanized_steel', 'infrastructure:galvanized_steel'},
+ {'infrastructure:galvanized_steel', 'infrastructure:galvanized_steel', 'infrastructure:galvanized_steel'}
+ }
+ })
+
+-- **************************************************************************************************** PRECAST CONCRETE
+
+-- Concrete seperating wall
+ minetest.register_craft({
+ output = '"infrastructure:precast_concrete_seperating_wall" 5',
+ recipe = {
+ {'', 'infrastructure:concrete', ''},
+ {'', 'infrastructure:concrete', ''},
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'}
+ }
+ })
+
+-- Concrete cylinder
+ minetest.register_craft({
+ output = '"infrastructure:precast_concrete_cylinder" 8',
+ recipe = {
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'},
+ {'infrastructure:concrete', '', 'infrastructure:concrete'},
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'}
+ }
+ })
+
+-- Concrete grid paver
+ minetest.register_craft({
+ output = '"infrastructure:precast_concrete_grid_paver" 5',
+ recipe = {
+ {'infrastructure:concrete', '', 'infrastructure:concrete'},
+ {'', 'infrastructure:concrete', ''},
+ {'infrastructure:concrete', '', 'infrastructure:concrete'}
+ }
+ })
+
+-- **************************************************************************************************** STEEL STRUCTURES
+
+-- Truss
+ minetest.register_craft({
+ output = '"infrastructure:truss" 5',
+ recipe = {
+ {'infrastructure:galvanized_steel', '', 'infrastructure:galvanized_steel'},
+ {'', 'infrastructure:galvanized_steel', ''},
+ {'infrastructure:galvanized_steel', '', 'infrastructure:galvanized_steel'}
+ }
+ })
+
+-- Wire netting
+ minetest.register_craft({
+ output = '"infrastructure:wire_netting" 10',
+ recipe = {
+ {'', 'infrastructure:galvanized_steel', ''},
+ {'infrastructure:galvanized_steel', '', 'infrastructure:galvanized_steel'},
+ {'', 'infrastructure:galvanized_steel', ''}
+ }
+ })
+
+-- Razor wire
+ minetest.register_craft({
+ output = '"infrastructure:razor_wire" 5',
+ recipe = {
+ {'infrastructure:galvanized_steel'},
+ {'default:cactus'},
+ {'infrastructure:galvanized_steel'}
+ }
+ })
+
+-- Drainage channel grating
+ minetest.register_craft({
+ output = '"infrastructure:drainage_channel_grating" 2',
+ recipe = {
+ {'infrastructure:galvanized_steel', '', 'infrastructure:galvanized_steel'}
+ }
+ })
+
+-- Louver
+ minetest.register_craft({
+ output = '"infrastructure:drainage_channel_grating" 2',
+ recipe = {
+ {'infrastructure:galvanized_steel'},
+ {''},
+ {'infrastructure:galvanized_steel'}
+ }
+ })
+
+-- Riffled sheet
+ minetest.register_craft({
+ output = '"infrastructure:riffled_sheet" 4',
+ recipe = {
+ {'infrastructure:galvanized_steel', 'infrastructure:fence_galvanized_steel'},
+ {'infrastructure:fence_galvanized_steel', 'infrastructure:galvanized_steel'}
+ }
+ })
+
+-- Corrugated sheet
+ minetest.register_craft({
+ output = '"infrastructure:corrugated_sheet" 4',
+ recipe = {
+ {"","infrastructure:galvanized_steel",""},
+ {"infrastructure:galvanized_steel","","infrastructure:galvanized_steel"}
+ }
+ })
+
+-- Louvers
+ minetest.register_craft({
+ output = "infrastructure:louver_opened",
+ recipe = {
+ {"infrastructure:fence_galvanized_steel","infrastructure:galvanized_steel","infrastructure:fence_galvanized_steel"},
+ {"","",""},
+ {"infrastructure:fence_galvanized_steel","infrastructure:galvanized_steel","infrastructure:fence_galvanized_steel"}
+ }
+ })
+
+-- **************************************************************************************************** ADVANCED ITEMS
+
+-- Raised pavement marker yellow/yellow
+ minetest.register_craft({
+ output = '"infrastructure:marker_yellow_yellow" 1',
+ recipe = {
+ {'wool:yellow', 'infrastructure:asphalt', 'wool:yellow'},
+ {'infrastructure:asphalt', 'infrastructure:asphalt', 'infrastructure:asphalt'}
+ }
+ })
+
+-- Raised pavement marker red/yellow
+ minetest.register_craft({
+ output = '"infrastructure:marker_red_yellow" 1',
+ recipe = {
+ {'wool:yellow', 'infrastructure:asphalt', 'wool:red'},
+ {'infrastructure:asphalt', 'infrastructure:asphalt', 'infrastructure:asphalt'}
+ }
+ })
+
+-- Retroreflective delineators
+ minetest.register_craft({
+ output = '"infrastructure:delineator" 1',
+ recipe = {
+ {'wool:yellow', 'infrastructure:concrete', 'wool:red'},
+ {'', 'infrastructure:concrete', ''},
+ {'', 'infrastructure:concrete', ''}
+ }
+ })
+
+ minetest.register_craft({
+ output = '"infrastructure:delineator_guardrail" 1',
+ recipe = {
+ {'wool:yellow', 'infrastructure:concrete', 'wool:red'},
+ {'', 'infrastructure:concrete', ''}
+ }
+ })
+
+-- Wire rope safety barrier
+ minetest.register_craft({
+ output = '"infrastructure:wire_rope_safety_barrier" 1',
+ recipe = {
+ {'default:steel_ingot', '', 'default:steel_ingot'},
+ {'', 'default:steel_ingot', ''},
+ {'', 'default:steel_ingot', ''}
+ }
+ })
+
+-- Cable barrier terminal
+ minetest.register_craft({
+ output = '"infrastructure:cable_barrier_terminal" 1',
+ recipe = {
+ {'default:steel_ingot', '', ''},
+ {'', 'default:steel_ingot', ''},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}
+ }
+ })
+
+-- Corrugated guide rail
+ minetest.register_craft({
+ output = '"infrastructure:corrugated_guide_rail" 1',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ {'', 'default:steel_ingot', ''},
+ {'', 'default:steel_ingot', ''}
+ }
+ })
+
+-- Energy absorbing terminal
+ minetest.register_craft({
+ output = '"infrastructure:energy_absorbing_terminal" 1',
+ recipe = {
+ {'', 'default:steel_ingot', ''},
+ {'default:steel_ingot', 'default:steel_ingot', ''},
+ {'', 'default:steel_ingot', ''}
+ }
+ })
+
+ minetest.register_craft({
+ output = '"infrastructure:energy_absorbing_terminal" 1',
+ recipe = {
+ {'infrastructure:energy_absorbing_terminal_inversed'}
+ }
+ })
+
+ minetest.register_craft({
+ output = '"infrastructure:energy_absorbing_terminal_inversed" 1',
+ recipe = {
+ {'infrastructure:energy_absorbing_terminal'}
+ }
+ })
+
+-- Fitch barrel
+ minetest.register_craft({
+ output = '"infrastructure:fitch_barrel" 1',
+ recipe = {
+ {'wool:black', 'wool:black', 'wool:black'},
+ {'wool:yellow', 'default:sand', 'wool:yellow'},
+ {'wool:yellow', 'wool:yellow', 'wool:yellow'}
+ }
+ })
+
+-- Crowd control barricade
+ minetest.register_craft({
+ output = '"infrastructure:crowd_control_barricade" 1',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', '', 'default:steel_ingot'}
+ }
+ })
+
+if ENABLE_EMERGENCY_PHONE then
+-- Emergency phone
+ minetest.register_craft({
+ output = '"infrastructure:emergency_phone" 1',
+ recipe = {
+ {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
+ {'default:mese_crystal', 'default:apple', 'default:mese_crystal'},
+ {'default:mese_crystal', 'default:stick', 'default:mese_crystal'}
+ }
+ })
+ minetest.register_craft({
+ output = '"infrastructure:emergency_phone" 1',
+ recipe = {
+ {'default:mese', 'default:mese', 'default:mese'},
+ {'default:mese', 'default:apple', 'default:mese'},
+ {'default:mese', 'default:stick', 'default:mese'}
+ }
+ })
+end
+
+-- Manhole cover
+ minetest.register_craft({
+ output = '"infrastructure:manhole_cover_closed" 1',
+ recipe = {
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'},
+ {'infrastructure:concrete', 'default:steel_ingot', 'infrastructure:concrete'},
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'}
+ }
+ })
+
+-- Traffic lights for pedestrians
+ minetest.register_craft({
+ output = '"infrastructure:traffic_lights_pedestrians" 1',
+ recipe = {
+ {'', 'default:steel_ingot', ''},
+ {'default:steel_ingot', 'wool:red', 'default:steel_ingot'},
+ {'default:steel_ingot', 'wool:green', 'default:steel_ingot'}
+ }
+ })
+
+-- Crosswalk warning light
+ minetest.register_craft({
+ output = '"infrastructure:crosswalk_warning_light" 1',
+ recipe = {
+ {'', 'default:steel_ingot', ''},
+ {'default:steel_ingot', 'wool:yellow', 'default:steel_ingot'},
+ {'', 'wool:green', ''}
+ }
+ })
+
+-- Curve chevron
+ minetest.register_craft({
+ output = '"infrastructure:curve_chevron" 1',
+ recipe = {
+ {'wool:yellow', 'wool:black', 'wool:yellow'},
+ {'wool:black', 'wool:yellow', 'wool:yellow'},
+ {'wool:yellow', 'wool:black', 'wool:yellow'}
+ }
+ })
+
+-- Crosswalk lighting
+ minetest.register_craft({
+ output = '"infrastructure:crosswalk_lighting" 1',
+ recipe = {
+ {'wool:white', 'wool:white', 'wool:white'},
+ {'', 'mesecons_torch:mesecon_torch_on', ''},
+ {'wool:white', 'wool:white', 'wool:white'}
+ }
+ })
+
+-- Crosswalk safety sign
+ minetest.register_craft({
+ output = '"infrastructure:crosswalk_safety_sign" 1',
+ recipe = {
+ {'', 'wool:green', ''},
+ {'', 'wool:green', ''},
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'}
+ }
+ })
+
+-- Road sign crosswalk
+ minetest.register_craft({
+ output = '"infrastructure:road_sign_crosswalk" 1',
+ recipe = {
+ {'wool:green', 'wool:green', 'wool:green'},
+ {'wool:green', 'wool:blue', 'wool:green'},
+ {'wool:green', 'wool:green', 'wool:green'}
+ }
+ })
+
+-- Road sign right_of_way
+ minetest.register_craft({
+ output = '"infrastructure:road_sign_right_of_way" 1',
+ recipe = {
+ {"", 'wool:white', ""},
+ {'wool:white', 'wool:yellow', 'wool:white'},
+ {"", 'wool:white', ""}
+ }
+ })
+
+-- Road sign stop
+ minetest.register_craft({
+ output = '"infrastructure:road_sign_stop" 1',
+ recipe = {
+ {'wool:red', 'wool:red', 'wool:red'},
+ {'wool:red', 'wool:white', 'wool:red'},
+ {'wool:red', 'wool:red', 'wool:red'}
+ }
+ })
+
+-- Road sign yield
+ minetest.register_craft({
+ output = '"infrastructure:road_sign_yield" 1',
+ recipe = {
+ {'wool:orange', 'wool:orange', 'wool:orange'},
+ {'wool:red', 'wool:orange', 'wool:red'},
+ {'', 'wool:red', ''}
+ }
+ })
+
+-- Automatic warning device
+ minetest.register_craft({
+ output = '"infrastructure:automatic_warning_device" 1',
+ recipe = {
+ {'wool:red', 'default:steel_ingot', 'wool:red'},
+ {'', 'default:steel_ingot', ''},
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'}
+ }
+ })
+
+-- Boom barrier
+ minetest.register_craft({
+ output = '"infrastructure:boom_barrier_mechanism" 1',
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', ''},
+ {'', 'default:steel_ingot', ''},
+ {'infrastructure:concrete', 'infrastructure:concrete', 'infrastructure:concrete'}
+ }
+ })
+
+ minetest.register_craft({
+ output = '"infrastructure:boom_barrier_arm" 1',
+ recipe = {
+ {'', 'wool:red', ''},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}
+ }
+ })
+
+-- Aircraft warning light
+ minetest.register_craft({
+ output = '"infrastructure:aircraft_warning_light" 1',
+ recipe = {
+ {'', 'wool:red', ''},
+ {'wool:red', 'default:torch', 'wool:red'},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}
+ }
+ })
+
+-- Warning light
+ minetest.register_craft({
+ output = '"infrastructure:warning_light" 1',
+ recipe = {
+ {'wool:yellow', 'wool:yellow', ''},
+ {'wool:yellow', 'default:torch', ''},
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}
+ }
+ })
+
+-- Anti-dazzling panel
+ minetest.register_craft({
+ output = '"infrastructure:anti_dazzling_panel" 1',
+ recipe = {
+ {'wool:grey', 'wool:grey'},
+ {'wool:grey', 'wool:yellow'},
+ {'wool:grey', 'wool:grey'}
+ }
+ })
+
+-- Traffic cone
+ minetest.register_craft({
+ output = '"infrastructure:traffic_cone" 1',
+ recipe = {
+ {'', 'wool:orange', ''},
+ {'wool:orange', '', 'wool:orange'},
+ }
+ })
+
+-- Noise barrier
+ minetest.register_craft({
+ output = '"infrastructure:noise_barrier" 1',
+ recipe = {
+ {'default:steel_ingot', 'wool:green', 'default:steel_ingot'},
+ {'wool:green', 'default:steel_ingot', 'wool:green'},
+ {'default:steel_ingot', 'wool:green', 'default:steel_ingot'}
+ }
+ })
diff --git a/streets/infrastructure/depends.txt b/streets/infrastructure/depends.txt
new file mode 100644
index 0000000..af1119b
--- /dev/null
+++ b/streets/infrastructure/depends.txt
@@ -0,0 +1,8 @@
+default
+moreblocks
+mesecons
+wool
+streetsmod
+prefab
+digilines
+technic?
diff --git a/streets/infrastructure/init.lua b/streets/infrastructure/init.lua
new file mode 100644
index 0000000..76d94f3
--- /dev/null
+++ b/streets/infrastructure/init.lua
@@ -0,0 +1,26 @@
+infrastructure = {}
+
+-- Load settings
+dofile(minetest.get_modpath("infrastructure").."/settings.lua")
+
+-- Register nodes
+dofile(minetest.get_modpath("infrastructure").."/nodes.lua")
+-- Register special nodes
+dofile(minetest.get_modpath("infrastructure").."/nodes_extension.lua")
+-- Register advanced devices
+dofile(minetest.get_modpath("infrastructure").."/advanced_road_signs.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_emergency_phone.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_traffic_lights_pedestrians.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_crosswalk_warning_light.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_lane_control_lights.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_curve_chevron.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_crosswalk_lighting.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_crosswalk_safety_sign.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_automatic_warning_device.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_boom_barrier.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_aircraft_warning_light.lua")
+dofile(minetest.get_modpath("infrastructure").."/advanced_warning_light.lua")
+-- Register crafting recipes
+dofile(minetest.get_modpath("infrastructure").."/crafts.lua")
+
+print("Infrastructure mod loaded succesfully!")
diff --git a/streets/infrastructure/nodes.lua b/streets/infrastructure/nodes.lua
new file mode 100644
index 0000000..e0455ee
--- /dev/null
+++ b/streets/infrastructure/nodes.lua
@@ -0,0 +1,1473 @@
+-- **************************************************************************************************** MATERIALS
+
+-- Asphalt block
+ minetest.register_alias("infrastructure:asphalt", "streets:asphalt")
+
+-- Concrete block
+ minetest.register_alias("infrastructure:concrete", "technic:concrete")
+
+-- Concrete fence
+ minetest.register_alias("infrastructure:fence_concrete", "prefab:concrete_fence")
+
+-- Galvanized steel block
+ minetest.register_node("infrastructure:galvanized_steel", {
+ description = "Galvanized steel",
+ tiles = {"infrastructure_galvanized_steel.png"},
+ drawtype = "normal",
+ paramtype = "light",
+ groups = {cracky = 2},
+ })
+ minetest.register_alias("galvanized_steel", "infrastructure:galvanized_steel")
+
+-- Galvanized steel fence
+ minetest.register_node("infrastructure:fence_galvanized_steel", {
+ description = "Galvanized steel fence",
+ drawtype = "fencelike",
+ tiles = {"infrastructure_galvanized_steel.png"},
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
+ },
+ groups = {cracky = 2},
+ })
+
+
+-- **************************************************************************************************** PRECAST CONCRETE
+
+-- Concrete seperating wall
+ minetest.register_node("infrastructure:precast_concrete_seperating_wall", {
+ description = "Precast concrete seperating wall",
+ tiles = {"infrastructure_concrete.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -1/2, -7/16, 5/16, -1/4, 7/16},
+ {-1/16, -1/4, -7/16, 1/16, 1/2, 7/16},
+ {-3/16, -1/2, -5/16, 3/16, 0, -1/4},
+ {-3/16, -1/2, 1/4, 3/16, 0, 5/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-5/16, -1/2, -7/16, 5/16, -1/4, 7/16},
+ {-1/16, -1/4, -7/16, 1/16, 1/2, 7/16},
+ {-3/16, -1/2, -5/16, 3/16, 0, -1/4},
+ {-3/16, -1/2, 1/4, 3/16, 0, 5/16}
+ }
+ }
+ })
+
+-- Concrete cylinder
+ minetest.register_node("infrastructure:precast_concrete_cylinder", {
+ description = "Precast concrete cylinder",
+ tiles = {"infrastructure_concrete.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ walkable = false,
+ climbable = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {3/8, -1/2, -1/2, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, -3/8, 1/2, 1/2},
+ {-1/2, -1/2, 3/8, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 1/2, -3/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {3/8, -1/2, -1/2, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, -3/8, 1/2, 1/2},
+ {-1/2, -1/2, 3/8, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 1/2, -3/8}
+ }
+ }
+ })
+
+-- Concrete grid paver
+ minetest.register_node("infrastructure:precast_concrete_grid_paver", {
+ description = "Precast concrete grid paver",
+ tiles = {
+ "infrastructure_grid_paver_top.png",
+ "infrastructure_grid_paver_bottom.png",
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
+ {-1/2, -1/2 + 1/128, -1/2, 1/2, -1/2 + 1/128, 1/2},
+ {-1/2, -1/2 + 2/128, -1/2, 1/2, -1/2 + 2/128, 1/2},
+ {-1/2, -1/2 + 3/128, -1/2, 1/2, -1/2 + 3/128, 1/2},
+ {-1/2, -1/2 + 4/128, -1/2, 1/2, -1/2 + 4/128, 1/2},
+ {-1/2, -1/2 + 5/128, -1/2, 1/2, -1/2 + 5/128, 1/2},
+ {-1/2, -1/2 + 6/128, -1/2, 1/2, -1/2 + 6/128, 1/2},
+ {-1/2, -1/2 + 7/128, -1/2, 1/2, -1/2 + 7/128, 1/2},
+ {-1/2, -1/2 + 8/128, -1/2, 1/2, -1/2 + 8/128, 1/2},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2 + 8/128, 1/2}
+ },
+
+ after_place_node = function(pos)
+ pos.y = pos.y - 1
+ local node = minetest.get_node(pos)
+ if (node.name == "default:dirt_with_grass") then
+ pos.y = pos.y + 1
+ local node = minetest.get_node(pos)
+ node.name = "infrastructure:precast_concrete_grid_paver_with_grass"
+ minetest.swap_node(pos, node)
+ end
+ end
+ })
+
+ minetest.register_node("infrastructure:precast_concrete_grid_paver_with_grass", {
+ description = "Precast concrete grid paver with grass",
+ tiles = {
+ "infrastructure_grid_paver_top.png",
+ "infrastructure_grid_paver_bottom.png",
+ "infrastructure_grid_paver_grass.png",
+ "infrastructure_grid_paver_grass.png",
+ "infrastructure_grid_paver_grass.png",
+ "infrastructure_grid_paver_grass.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2,not_in_creative_inventory = 1},
+ drop = "infrastructure:precast_concrete_grid_paver",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
+ {-1/2, -1/2 + 1/128, -1/2, 1/2, -1/2 + 1/128, 1/2},
+ {-1/2, -1/2 + 2/128, -1/2, 1/2, -1/2 + 2/128, 1/2},
+ {-1/2, -1/2 + 3/128, -1/2, 1/2, -1/2 + 3/128, 1/2},
+ {-1/2, -1/2 + 4/128, -1/2, 1/2, -1/2 + 4/128, 1/2},
+ {-1/2, -1/2 + 5/128, -1/2, 1/2, -1/2 + 5/128, 1/2},
+ {-1/2, -1/2 + 6/128, -1/2, 1/2, -1/2 + 6/128, 1/2},
+ {-1/2, -1/2 + 7/128, -1/2, 1/2, -1/2 + 7/128, 1/2},
+ {-1/2, -1/2 + 8/128, -1/2, 1/2, -1/2 + 8/128, 1/2},
+
+ {-3/8, -1/2, 1/4, -1/8, 0, 1/4},
+ {1/8, -1/2, 1/4, 3/8, 0, 1/4},
+
+ {-1/8, -1/2, 0, 1/8, 0, 0},
+
+ {-3/8, -1/2, -1/4, -1/8, 0, -1/4},
+ {1/8, -1/2, -1/4, 3/8, 0, -1/4},
+
+ {1/4, -1/2, -3/8, 1/4, 0, -1/8},
+ {1/4, -1/2, 1/8, 1/4, 0, 3/8},
+
+ {0, -1/2, -1/8, 0, 0, 1/8},
+
+ {-1/4, -1/2, -3/8, -1/4, 0, -1/8},
+ {-1/4, -1/2, 1/8, -1/4, 0, 3/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2 + 8/128, 1/2}
+ },
+
+ on_punch = function(pos, node)
+ local node = minetest.get_node(pos)
+ node.name = "infrastructure:precast_concrete_grid_paver"
+ minetest.swap_node(pos, node)
+ end
+ })
+
+-- **************************************************************************************************** STEEL STRUCTURES
+
+-- Truss
+ minetest.register_node("infrastructure:truss", {
+ description = "Truss",
+ tiles = {"infrastructure_truss.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {1/2, -1/2, -1/2, 1/2, 1/2, 1/2},
+ {-1/2, 1/2, -1/2, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, 1/2, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, -1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 1/2, -1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2}
+ }
+ })
+
+-- Wire netting
+ minetest.register_node("infrastructure:wire_netting", {
+ description = "Wire netting",
+ tiles = {"infrastructure_wire_netting.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, 0, 1/2, 1/2, 0}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/8, 1/2, 1/2, 1/8}
+ }
+ })
+
+-- Razor wire
+ minetest.register_node("infrastructure:razor_wire", {
+ description = "Razor wire",
+ tiles = {"infrastructure_razor_wire.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 1/2, -1/2, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
+ {-1/2, -1/2, 1/2, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, -1/2, 1/2, 1/2, -1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2}
+ },
+
+ walkable = false,
+ damage_per_second = 8
+ })
+
+-- Drainage channel grating
+ minetest.register_node("infrastructure:drainage_channel_grating", {
+ description = "Truss",
+ tiles = {
+ "infrastructure_drainage_channel_grating.png",
+ "infrastructure_drainage_channel_grating.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 0, -3/8, 1/2}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 0, -3/8, 1/2}
+ }
+ })
+
+-- Louver
+ minetest.register_node("infrastructure:louver_opened", {
+ description = "Louver",
+ tiles = {"infrastructure_galvanized_steel.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 7/16, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/16, 0, 1/2, 0, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 7/16, 0, 1/2, 1/2, 1/2},
+ {-1/2, -1/16, 0, 1/2, 0, 1/2}
+ }
+ },
+
+ on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:louver_closed", param2 = node.param2})
+ end
+ })
+
+ minetest.register_node("infrastructure:louver_closed", {
+ tiles = {"infrastructure_galvanized_steel.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ drop = "infrastructure:louver_opened",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 1/16, 7/16, 1/2, 1/2, 1/2},
+ {-1/2, -7/16, 7/16, 1/2, 0, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, 1/16, 7/16, 1/2, 1/2, 1/2},
+ {-1/2, -7/16, 7/16, 1/2, 0, 1/2}
+ }
+ },
+
+ on_punch = function(pos, node)
+ minetest.swap_node(pos, {name = "infrastructure:louver_opened", param2 = node.param2})
+ end
+ })
+
+ minetest.register_alias("infrastructure:louver", "infrastructure:louver_opened")
+
+-- Riffled sheet
+ minetest.register_node("infrastructure:riffled_sheet", {
+ description = "Riffled sheet",
+ tiles = {"infrastructure_riffled_sheet.png"},
+ inventory_image = "infrastructure_riffled_sheet.png",
+ wield_image = "infrastructure_riffled_sheet.png",
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 2, oddly_breakable_by_hand = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2 + 0.001, 1/2}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/4, -1/2, 1/2, -1/2 + 0.01, 1/2}
+ }
+ })
+
+-- Corrugated sheet
+ minetest.register_node("infrastructure:corrugated_sheet", {
+ description = "corrugated sheet",
+ tiles = {"infrastructure_corrugated_sheet.png"},
+ inventory_image = "infrastructure_corrugated_sheet.png",
+ wield_image = "infrastructure_corrugated_sheet.png",
+ drawtype = "raillike",
+ paramtype = "light",
+ groups = {cracky = 2, oddly_breakable_by_hand = 1},
+ })
+
+-- **************************************************************************************************** ADVANCED ITEMS
+
+-- Displacement
+ function displacement(pos, placer)
+ local displaced_node = minetest.get_node(pos)
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ pos.y = pos.y - 1
+ local node = minetest.get_node(pos)
+
+ if ((string.find(node.name, "_three_quarter") ~= nil) or (string.find(node.name, "_displacement_1") ~= nil)) then
+ pos.y = pos.y + 1
+ minetest.set_node(pos, {name = displaced_node.name.."_displacement_1", param2 = fdir})
+ elseif (((string.find(node.name, "slab_") ~= nil) and (string.find(node.name, "_quarter") == nil)) or (string.find(node.name, "_displacement_2") ~= nil)) then
+ pos.y = pos.y + 1
+ minetest.set_node(pos, {name = displaced_node.name.."_displacement_2", param2 = fdir})
+ elseif (((string.find(node.name, "_quarter") ~= nil) and (string.find(node.name, "_three_quarter") == nil)) or (string.find(node.name, "_displacement_3") ~= nil)) then
+ pos.y = pos.y + 1
+ minetest.set_node(pos, {name = displaced_node.name.."_displacement_3", param2 = fdir})
+ end
+ end
+
+-- Raised pavement marker yellow/yellow
+ minetest.register_node("infrastructure:marker_yellow_yellow", {
+ description = "Raised pavement marker with yellow & yellow retroreflectors",
+ tiles = {
+ "infrastructure_marker_top_yellow_yellow.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_side_yellow.png",
+ "infrastructure_marker_side_yellow.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ walkable = false,
+ light_source = MARKER_LIGHT_RANGE,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
+ {-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
+ {1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
+ {-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
+ {-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
+ {1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
+ {-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:marker_yellow_yellow_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_marker_top_yellow_yellow.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_side_yellow.png",
+ "infrastructure_marker_side_yellow.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ walkable = false,
+ light_source = MARKER_LIGHT_RANGE,
+ sunlight_propagates = true,
+ drop = "infrastructure:marker_yellow_yellow",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
+ {-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
+ {1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
+ {-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
+ {-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
+ {1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
+ {-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
+ }
+ }
+ })
+ end
+
+-- Raised pavement marker red/yellow
+ minetest.register_node("infrastructure:marker_red_yellow", {
+ description = "Raised pavement marker with red & yellow retroreflectors",
+ tiles = {
+ "infrastructure_marker_top_red_yellow.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_side_yellow.png",
+ "infrastructure_marker_side_red.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ walkable = false,
+ light_source = MARKER_LIGHT_RANGE,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
+ {-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
+ {1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
+ {-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
+ {-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
+ {1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
+ {-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:marker_red_yellow_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_marker_top_red_yellow.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_bottom_side.png",
+ "infrastructure_marker_side_yellow.png",
+ "infrastructure_marker_side_red.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ walkable = false,
+ light_source = MARKER_LIGHT_RANGE,
+ sunlight_propagates = true,
+ drop = "infrastructure:marker_red_yellow",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
+ {-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
+ {1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
+ {-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
+ {-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
+ {1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
+ {-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
+ }
+ }
+ })
+ end
+
+-- Retroreflective delineators
+ minetest.register_node("infrastructure:delineator", {
+ description = "Retroreflective delineator",
+ tiles = {
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png",
+ "infrastructure_delineator_wrapper_right.png",
+ "infrastructure_delineator_wrapper_left.png",
+ "infrastructure_delineator_retroreflector_yellow.png",
+ "infrastructure_delineator_retroreflector_red.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ light_source = DELINEATOR_LIGHT_RANGE,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, 1/8, 1/2, -1/16},
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/8, -1/2, 1/16, 1/8, 1/2, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, 1/8, 1/2, -1/16},
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/8, -1/2, 1/16, 1/8, 1/2, 1/8}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ minetest.register_node("infrastructure:delineator_guardrail", {
+ description = "Retroreflective delineator for guardrail",
+ tiles = {
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png",
+ "infrastructure_delineator_wrapper_right.png",
+ "infrastructure_delineator_wrapper_left.png",
+ "[combine:32x32:0,12=infrastructure_delineator_retroreflector_yellow.png:0,-20=infrastructure_delineator_retroreflector_yellow.png",
+ "[combine:32x32:0,12=infrastructure_delineator_retroreflector_red.png:0,-20=infrastructure_delineator_retroreflector_red.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3},
+ light_source = DELINEATOR_LIGHT_RANGE,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -3/8, -1/32, 1/8, 1/8, 1/32},
+ {1/8, -5/8, -1/16, 3/16, -1/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -3/8, -1/32, 1/8, 1/8, 1/32},
+ {1/8, -5/8, -1/16, 3/16, -1/4, 1/16}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:delineator_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_wrapper_right.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_wrapper_right.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_wrapper_left.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_wrapper_left.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_retroreflector_yellow.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_retroreflector_yellow.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_retroreflector_red.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_retroreflector_red.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ light_source = DELINEATOR_LIGHT_RANGE,
+ sunlight_propagates = true,
+ drop = "infrastructure:delineator",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, -1/16},
+ {-1/16, -1/2 - i/4, -1/16, 1/16, 1/2 - i/4, 1/16},
+ {-1/8, -1/2 - i/4, 1/16, 1/8, 1/2 - i/4, 1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, -1/16},
+ {-1/16, -1/2 - i/4, -1/16, 1/16, 1/2 - i/4, 1/16},
+ {-1/8, -1/2 - i/4, 1/16, 1/8, 1/2 - i/4, 1/8}
+ }
+ }
+ })
+
+ minetest.register_node("infrastructure:delineator_guardrail_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_concrete.png",
+ "infrastructure_concrete.png",
+ "[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_wrapper_right.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_wrapper_right.png",
+ "[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_wrapper_left.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_wrapper_left.png",
+ "[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_retroreflector_yellow.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_retroreflector_yellow.png",
+ "[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_retroreflector_red.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_retroreflector_red.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 3, not_in_creative_inventory = 1},
+ light_source = DELINEATOR_LIGHT_RANGE,
+ sunlight_propagates = true,
+ drop = "infrastructure:delineator_guardrail",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -3/8 - i/4, -1/32, 1/8, 1/8 - i/4, 1/32},
+ {1/8, -5/8 - i/4, -1/16, 3/16, -1/4 - i/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -3/8 - i/4, -1/32, 1/8, 1/8 - i/4, 1/32},
+ {1/8, -5/8 - i/4, -1/16, 3/16, -1/4 - i/4, 1/16}
+ }
+ }
+ })
+ end
+
+-- Wire rope safety barrier
+ minetest.register_node("infrastructure:wire_rope_safety_barrier", {
+ description = "Wire rope safety barrier",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_wire_rope_safety_barrier_back.png",
+ "infrastructure_wire_rope_safety_barrier_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/16, 1/8, -1/4, 1/16},
+ {-1/8, -1/2, -1/16, -1/16, -3/16, 1/16},
+ {1/16, -1/2, -1/16, 1/8, 1/16, 1/16},
+ {-1/8, -1/8, -1/16, 1/8, 0, 1/16},
+ {-1/8, -1/8, -1/16, -1/16, 1/2, 1/16},
+ {-1/8, 1/8, -1/16, 1/8, 1/4, 1/16},
+ {1/16, 1/8, -1/16, 1/8, 1/2, 1/16},
+
+ {-1/32, 1/4, -1/2, 1/32, 5/16, 1/2},
+ {-1/32, 0, -1/2, 1/32, 1/16, 1/2},
+ {-1/32, -1/4, -1/2, 1/32, -3/16, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/16, 1/8, 1/2, 1/16},
+
+ {-1/32, 1/4, -1/2, 1/32, 5/16, 1/2},
+ {-1/32, 0, -1/2, 1/32, 1/16, 1/2},
+ {-1/32, -1/4, -1/2, 1/32, -3/16, 1/2}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:wire_rope_safety_barrier_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_wire_rope_safety_barrier_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_wire_rope_safety_barrier_back.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_wire_rope_safety_barrier_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_wire_rope_safety_barrier_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = 1,
+ drop = "infrastructure:wire_rope_safety_barrier",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/16, 1/8, -1/4 - i/4, 1/16},
+ {-1/8, -1/2 - i/4, -1/16, -1/16, -3/16 - i/4, 1/16},
+ {1/16, -1/2 - i/4, -1/16, 1/8, 1/16 - i/4, 1/16},
+ {-1/8, -1/8 - i/4, -1/16, 1/8, 0 - i/4, 1/16},
+ {-1/8, -1/8 - i/4, -1/16, -1/16, 1/2 - i/4, 1/16},
+ {-1/8, 1/8 - i/4, -1/16, 1/8, 1/4 - i/4, 1/16},
+ {1/16, 1/8 - i/4, -1/16, 1/8, 1/2 - i/4, 1/16},
+
+ {-1/32, 1/4 - i/4, -1/2, 1/32, 5/16 - i/4, 1/2},
+ {-1/32, 0 - i/4, -1/2, 1/32, 1/16 - i/4, 1/2},
+ {-1/32, -1/4 - i/4, -1/2, 1/32, -3/16 - i/4, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/16, 1/8, 1/2 - i/4, 1/16},
+
+ {-1/32, 1/4 - i/4, -1/2, 1/32, 5/16 - i/4, 1/2},
+ {-1/32, 0 - i/4, -1/2, 1/32, 1/16 - i/4, 1/2},
+ {-1/32, -1/4 - i/4, -1/2, 1/32, -3/16 - i/4, 1/2}
+ }
+ }
+ })
+ end
+
+-- Cable barrier terminal
+ minetest.register_node("infrastructure:cable_barrier_terminal", {
+ description = "Cable barrier terminal",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_cable_barrier_terminal_back.png",
+ "infrastructure_cable_barrier_terminal_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
+ {-1/4, -3/8, -1/4, 1/4, 1/2, -1/8},
+ {-1/4, -3/8, -1/8, -3/16, 0, 1/8},
+ {3/16, -3/8, -1/8, 1/4, 0, 1/8},
+
+ {-1/16, 7/32, -3/8, 1/16, 11/32, 1/4},
+ {-1/16, -1/32, -3/8, 1/16, 3/32, 1/4},
+ {-1/16, -9/32, -3/8, 1/16, -5/32, 1/4},
+
+ {-1/32, 1/4, 0, 1/32, 5/16, 1/2},
+ {-1/32, 0, 0, 1/32, 1/16, 1/2},
+ {-1/32, -1/4, 0, 1/32, -3/16, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
+ {-1/4, -3/8, -1/4, 1/4, 1/2, -1/8},
+ {-1/4, -3/8, -1/8, -3/16, 0, 1/8},
+ {3/16, -3/8, -1/8, 1/4, 0, 1/8},
+
+ {-1/16, 7/32, -3/8, 1/16, 11/32, 1/4},
+ {-1/16, -1/32, -3/8, 1/16, 3/32, 1/4},
+ {-1/16, -9/32, -3/8, 1/16, -5/32, 1/4},
+
+ {-1/32, 1/4, 0, 1/32, 5/16, 1/2},
+ {-1/32, 0, 0, 1/32, 1/16, 1/2},
+ {-1/32, -1/4, 0, 1/32, -3/16, 1/2}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:cable_barrier_terminal_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_cable_barrier_terminal_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_cable_barrier_terminal_back.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_cable_barrier_terminal_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_cable_barrier_terminal_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = 1,
+ drop = "infrastructure:cable_barrier_terminal",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2 - i/4, -1/2, 1/4, -3/8 - i/4, 1/2},
+ {-1/4, -3/8 - i/4, -1/4, 1/4, 1/2 - i/4, -1/8},
+ {-1/4, -3/8 - i/4, -1/8, -3/16, 0 - i/4, 1/8},
+ {3/16, -3/8 - i/4, -1/8, 1/4, 0 - i/4, 1/8},
+
+ {-1/16, 7/32 - i/4, -3/8, 1/16, 11/32 - i/4, 1/4},
+ {-1/16, -1/32 - i/4, -3/8, 1/16, 3/32 - i/4, 1/4},
+ {-1/16, -9/32 - i/4, -3/8, 1/16, -5/32 - i/4, 1/4},
+
+ {-1/32, 1/4 - i/4, 0, 1/32, 5/16 - i/4, 1/2},
+ {-1/32, 0 - i/4, 0, 1/32, 1/16 - i/4, 1/2},
+ {-1/32, -1/4 - i/4, 0, 1/32, -3/16 - i/4, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2 - i/4, -1/2, 1/4, -3/8 - i/4, 1/2},
+ {-1/4, -3/8 - i/4, -1/4, 1/4, 1/2 - i/4, -1/8},
+ {-1/4, -3/8 - i/4, -1/8, -3/16, 0 - i/4, 1/8},
+ {3/16, -3/8 - i/4, -1/8, 1/4, 0 - i/4, 1/8},
+
+ {-1/16, 7/32 - i/4, -3/8, 1/16, 11/32 - i/4, 1/4},
+ {-1/16, -1/32 - i/4, -3/8, 1/16, 3/32 - i/4, 1/4},
+ {-1/16, -9/32 - i/4, -3/8, 1/16, -5/32 - i/4, 1/4},
+
+ {-1/32, 1/4 - i/4, 0, 1/32, 5/16 - i/4, 1/2},
+ {-1/32, 0 - i/4, 0, 1/32, 1/16 - i/4, 1/2},
+ {-1/32, -1/4 - i/4, 0, 1/32, -3/16 - i/4, 1/2}
+ }
+ }
+ })
+ end
+
+-- Corrugated guide rail
+ minetest.register_node("infrastructure:corrugated_guide_rail", {
+ description = "Corrugated guide rail",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_corrugated_guide_rail_side.png",
+ "infrastructure_corrugated_guide_rail_side.png",
+ "infrastructure_corrugated_guide_rail_back.png",
+ "infrastructure_corrugated_guide_rail_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, 1/8, 1/2, -1/16},
+ {-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
+ {-1/8, -1/2, 1/16, 1/8, 1/2, 1/8},
+
+ {-1/2, 1/4, -1/4, 1/2, 3/8, -1/8},
+ {-1/2, 1/8, -3/8, 1/2, 1/4, -1/4},
+ {-1/2, 0, -1/4, 1/2, 1/8, -1/8},
+ {-1/2, -1/8, -3/8, 1/2, 0, -1/4},
+ {-1/2, -1/4, -1/4, 1/2, -1/8, -1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
+
+ {-1/2, 1/4, -1/4, 1/2, 3/8, -1/8},
+ {-1/2, 1/8, -3/8, 1/2, 1/4, -1/4},
+ {-1/2, 0, -1/4, 1/2, 1/8, -1/8},
+ {-1/2, -1/8, -3/8, 1/2, 0, -1/4},
+ {-1/2, -1/4, -1/4, 1/2, -1/8, -1/8}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:corrugated_guide_rail_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_back.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = 1,
+ drop = "infrastructure:corrugated_guide_rail",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, -1/16},
+ {-1/16, -1/2 - i/4, -1/16, 1/16, 1/2 - i/4, 1/16},
+ {-1/8, -1/2 - i/4, 1/16, 1/8, 1/2 - i/4, 1/8},
+
+ {-1/2, 1/4 - i/4, -1/4, 1/2, 3/8 - i/4, -1/8},
+ {-1/2, 1/8 - i/4, -3/8, 1/2, 1/4 - i/4, -1/4},
+ {-1/2, 0 - i/4, -1/4, 1/2, 1/8 - i/4, -1/8},
+ {-1/2, -1/8 - i/4, -3/8, 1/2, 0 - i/4, -1/4},
+ {-1/2, -1/4 - i/4, -1/4, 1/2, -1/8 - i/4, -1/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, 1/8},
+
+ {-1/2, 1/4 - i/4, -1/4, 1/2, 3/8 - i/4, -1/8},
+ {-1/2, 1/8 - i/4, -3/8, 1/2, 1/4 - i/4, -1/4},
+ {-1/2, 0 - i/4, -1/4, 1/2, 1/8 - i/4, -1/8},
+ {-1/2, -1/8 - i/4, -3/8, 1/2, 0 - i/4, -1/4},
+ {-1/2, -1/4 - i/4, -1/4, 1/2, -1/8 - i/4, -1/8}
+ }
+ }
+ })
+ end
+
+-- Energy absorbing terminal
+ minetest.register_node("infrastructure:energy_absorbing_terminal", {
+ description = "Energy absorbing terminal",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_energy_absorbing_terminal_back.png",
+ "infrastructure_energy_absorbing_terminal_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4, 1/8, 0, 1/2, 1/4},
+ {-3/8, -1/4, 1/4, -1/8, 3/8, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4, 1/8, 0, 1/2, 1/4},
+ {-3/8, -1/4, 1/4, -1/8, 3/8, 1/2}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ minetest.register_node("infrastructure:energy_absorbing_terminal_inversed", {
+ description = "Energy absorbing terminal inversed",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_energy_absorbing_terminal_back.png",
+ "infrastructure_energy_absorbing_terminal_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0, -1/4, 1/8, 1/2, 1/2, 1/4},
+ {1/8, -1/4, 1/4, 3/8, 3/8, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, -1/4, 1/8, 1/2, 1/2, 1/4},
+ {1/8, -1/4, 1/4, 3/8, 3/8, 1/2}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:energy_absorbing_terminal_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_back.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ drop = "infrastructure:energy_absorbing_terminal",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4 - i/4, 1/8, 0, 1/2 - i/4, 1/4},
+ {-3/8, -1/4 - i/4, 1/4, -1/8, 3/8 - i/4, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4 - i/4, 1/8, 0, 1/2 - i/4, 1/4},
+ {-3/8, -1/4 - i/4, 1/4, -1/8, 3/8 - i/4, 1/2}
+ }
+ }
+ })
+
+ minetest.register_node("infrastructure:energy_absorbing_terminal_inversed_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_back.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ drop = "infrastructure:energy_absorbing_terminal_inversed",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {0, -1/4 - i/4, 1/8, 1/2, 1/2 - i/4, 1/4},
+ {1/8, -1/4 - i/4, 1/4, 3/8, 3/8 - i/4, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, -1/4 - i/4, 1/8, 1/2, 1/2 - i/4, 1/4},
+ {1/8, -1/4 - i/4, 1/4, 3/8, 3/8 - i/4, 1/2}
+ }
+ }
+ })
+ end
+
+-- Fitch barrel
+ minetest.register_node("infrastructure:fitch_barrel", {
+ description = "Fitch barrel",
+ tiles = {
+ "infrastructure_fitch_barrel_top.png",
+ "infrastructure_fitch_barrel_bottom.png",
+ "infrastructure_fitch_barrel_side.png",
+ "infrastructure_fitch_barrel_side.png",
+ "infrastructure_fitch_barrel_side.png",
+ "infrastructure_fitch_barrel_side.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 2},
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {-3/8, -1/2, -3/8, 3/8, 1/2, 3/8}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-3/8, -1/2, -3/8, 3/8, 1/2, 3/8}
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:fitch_barrel_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_fitch_barrel_top.png",
+ "infrastructure_fitch_barrel_bottom.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ drop = "infrastructure:fitch_barrel",
+ node_box = {
+ type = "fixed",
+ fixed = {-3/8, -1/2 - i/4, -3/8, 3/8, 1/2 - i/4, 3/8}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-3/8, -1/2 - i/4, -3/8, 3/8, 1/2 - i/4, 3/8}
+ }
+ })
+ end
+
+-- Crowd control barricade
+ minetest.register_node("infrastructure:crowd_control_barricade", {
+ description = "Crowd control barricade",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_crowd_control_barricade_back.png",
+ "infrastructure_crowd_control_barricade_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4, 0, 1/2, 1/2, 0},
+
+ {-7/16, -1/2, -1/32, -3/8, 1/8, 1/32},
+ {3/8, -1/2, -1/32, 7/16, 1/8, 1/32},
+
+ {-7/16, -1/2, -1/4, -3/8, -7/16, 1/4},
+ {3/8, -1/2, -1/4, 7/16, -7/16, 1/4}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4, 0, 1/2, 1/2, 0},
+
+ {-7/16, -1/2, -1/32, -3/8, 1/8, 1/32},
+ {3/8, -1/2, -1/32, 7/16, 1/8, 1/32},
+
+ {-7/16, -1/2, -1/4, -3/8, -7/16, 1/4},
+ {3/8, -1/2, -1/4, 7/16, -7/16, 1/4}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:crowd_control_barricade_"..tostring(i), {
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_crowd_control_barricade_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_crowd_control_barricade_back.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_crowd_control_barricade_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_crowd_control_barricade_front.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = 1,
+ drop = "infrastructure:crowd_control_barricade",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4 - i/4, 0, 1/2, 1/2 - i/4, 0},
+
+ {-7/16, -1/2 - i/4, -1/32, -3/8, 1/8 - i/4, 1/32},
+ {3/8, -1/2 - i/4, -1/32, 7/16, 1/8 - i/4, 1/32},
+
+ {-7/16, -1/2 - i/4, -1/4, -3/8, -7/16 - i/4, 1/4},
+ {3/8, -1/2 - i/4, -1/4, 7/16, -7/16 - i/4, 1/4}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/4 - i/4, 0, 1/2, 1/2 - i/4, 0},
+
+ {-7/16, -1/2 - i/4, -1/32, -3/8, 1/8 - i/4, 1/32},
+ {3/8, -1/2 - i/4, -1/32, 7/16, 1/8 - i/4, 1/32},
+
+ {-7/16, -1/2 - i/4, -1/4, -3/8, -7/16 - i/4, 1/4},
+ {3/8, -1/2 - i/4, -1/4, 7/16, -7/16 - i/4, 1/4}
+ }
+ }
+ })
+ end
+
+-- Anti-dazzling panel
+ minetest.register_node("infrastructure:anti_dazzling_panel", {
+ description = "Anti-dazzling panel",
+ tiles = {
+ "infrastructure_anti_dazzling_panel_top_bottom.png",
+ "infrastructure_anti_dazzling_panel_top_bottom.png",
+ "infrastructure_anti_dazzling_panel_side.png",
+ "infrastructure_anti_dazzling_panel_side.png",
+ "infrastructure_anti_dazzling_panel_side.png",
+ "infrastructure_anti_dazzling_panel_side.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, 0, 1/4, 1/2, 0},
+ {-1/8, -1/2, -1/16, 1/8, -3/8, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, 0, 1/4, 1/2, 0},
+ {-1/8, -1/2, -1/16, 1/8, -3/8, 1/16}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:anti_dazzling_panel_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_anti_dazzling_panel_top_bottom.png",
+ "infrastructure_anti_dazzling_panel_top_bottom.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ light_source = 1,
+ drop = "infrastructure:anti_dazzling_panel",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2 - i/4, 0, 1/4, 1/2 - i/4, 0},
+ {-1/8, -1/2 - i/4, -1/16, 1/8, -3/8 - i/4, 1/16}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2 - i/4, 0, 1/4, 1/2 - i/4, 0},
+ {-1/8, -1/2 - i/4, -1/16, 1/8, -3/8 - i/4, 1/16}
+ }
+ }
+ })
+ end
+
+-- Traffic cone
+ minetest.register_node("infrastructure:traffic_cone", {
+ description = "Traffic cone",
+ tiles = {
+ "infrastructure_traffic_cone_top.png",
+ "infrastructure_traffic_cone_bottom.png",
+ "infrastructure_traffic_cone_side.png",
+ "infrastructure_traffic_cone_side.png",
+ "infrastructure_traffic_cone_side.png",
+ "infrastructure_traffic_cone_side.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 2},
+ walkable = false,
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, 0, 1/4, 1/4, 0},
+ {0, -1/2, -1/4, 0, 1/4, 1/4},
+
+ {-3/8, -1/2, -1/8, 3/8, -3/8, 1/8},
+ {-1/8, -1/2, -3/8, 1/8, -3/8, 3/8},
+
+ {-3/8, -1/2 + 0.001, -3/8, 3/8, -1/2 + 0.001, 3/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2, 0, 1/4, 1/4, 0},
+ {0, -1/2, -1/4, 0, 1/4, 1/4},
+
+ {-3/8, -1/2, -1/8, 3/8, -3/8, 1/8},
+ {-1/8, -1/2, -3/8, 1/8, -3/8, 3/8},
+
+ {-3/8, -1/2 + 0.001, -3/8, 3/8, -1/2 + 0.001, 3/8}
+ }
+ },
+
+ after_place_node = function(pos, placer)
+ displacement(pos, placer)
+ end
+ })
+
+ for i = 1, 3 do
+ minetest.register_node("infrastructure:traffic_cone_displacement_"..tostring(i), {
+ tiles = {
+ "infrastructure_traffic_cone_top.png",
+ "infrastructure_traffic_cone_bottom.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_traffic_cone_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_traffic_cone_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_traffic_cone_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_traffic_cone_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_traffic_cone_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_traffic_cone_side.png",
+ "[combine:32x32:0,"..tostring(i * 8).."=infrastructure_traffic_cone_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_traffic_cone_side.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {cracky = 2, not_in_creative_inventory = 1},
+ walkable = false,
+ light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
+ drop = "infrastructure:traffic_cone",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2 - i/4, 0, 1/4, 1/4 - i/4, 0},
+ {0, -1/2 - i/4, -1/4, 0, 1/4 - i/4, 1/4},
+
+ {-3/8, -1/2 - i/4, -1/8, 3/8, -3/8 - i/4, 1/8},
+ {-1/8, -1/2 - i/4, -3/8, 1/8, -3/8 - i/4, 3/8},
+
+ {-3/8, -1/2 + 0.001 - i/4, -3/8, 3/8, -1/2 + 0.001 - i/4, 3/8}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/4, -1/2 - i/4, 0, 1/4, 1/4 - i/4, 0},
+ {0, -1/2 - i/4, -1/4, 0, 1/4 - i/4, 1/4},
+
+ {-3/8, -1/2 - i/4, -1/8, 3/8, -3/8 - i/4, 1/8},
+ {-1/8, -1/2 - i/4, -3/8, 1/8, -3/8 - i/4, 3/8},
+
+ {-3/8, -1/2 + 0.001 - i/4, -3/8, 3/8, -1/2 + 0.001 - i/4, 3/8}
+ }
+ }
+ })
+ end
+
+-- Noise barrier
+ minetest.register_node("infrastructure:noise_barrier", {
+ description = "Noise barrier",
+ tiles = {
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_galvanized_steel.png",
+ "infrastructure_noise_barrier.png",
+ "infrastructure_noise_barrier.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 2},
+ light_source = 1,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 5/16, 1/2, 1/2, 7/16},
+
+ {-1/2, -1/2, 1/4, 1/2, -7/16, 1/2},
+ {-1/2, 7/16, 1/4, 1/2, 1/2, 1/2},
+ {-1/2, -1/2, 1/4, -7/16, 1/2, 1/2},
+ {7/16, -1/2, 1/4, 1/2, 1/2, 1/2}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1/2, -1/2, 1/4, 1/2, 1/2, 1/2},
+ }
+ }
+ })
diff --git a/streets/infrastructure/nodes_extension.lua b/streets/infrastructure/nodes_extension.lua
new file mode 100644
index 0000000..8eebdba
--- /dev/null
+++ b/streets/infrastructure/nodes_extension.lua
@@ -0,0 +1,162 @@
+-- **************************************************************************************************** MATERIALS
+
+-- Galvanized steel stair, slab, panel and microblock
+ register_stair_slab_panel_micro("infrastructure", "galvanized_steel", "infrastructure:galvanized_steel",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=2},
+ {"infrastructure_galvanized_steel.png"},
+ "Galvanized steel",
+ "galvanized_steel",
+ 0)
+
+-- **************************************************************************************************** CENTER LINES
+
+-- Asphalt stair, slab, panel and microblock with center solid line
+ register_stair_slab_panel_micro("infrastructure", "asphalt_center_solid_line", "infrastructure:asphalt_center_solid_line",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {
+ "streets_asphalt.png^infrastructure_single_yellow_line.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png"
+ },
+ "Asphalt with center solid line",
+ "asphalt_center_solid_line",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with center solid line on one side
+ register_stair_slab_panel_micro("infrastructure", "asphalt_center_solid_one_side", "infrastructure:asphalt_center_solid_one_side",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {
+ "streets_asphalt.png^infrastructure_solid_yellow_line_one_side.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png"
+ },
+ "Asphalt with center solid line on one side",
+ "asphalt_center_solid_one_side",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with center solid double line
+ register_stair_slab_panel_micro("infrastructure", "asphalt_center_solid_double", "infrastructure:asphalt_center_solid_double",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {
+ "streets_asphalt.png^infrastructure_double_yellow_line.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png"
+ },
+ "Asphalt with center solid double line",
+ "asphalt_center_solid_double",
+ 0)
+
+-- Asphalt block with center corner single line
+ register_stair_slab_panel_micro("infrastructure", "asphalt_center_corner_single", "infrastructure:asphalt_center_corner_single",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {
+ "streets_asphalt.png^infrastructure_single_yellow_line_corner.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png"
+ },
+ "Asphalt with center corner single line",
+ "asphalt_center_corner_single",
+ 0)
+
+-- Asphalt block with center corner double line
+ register_stair_slab_panel_micro("infrastructure", "asphalt_center_corner_double", "infrastructure:asphalt_center_corner_double",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {
+ "streets_asphalt.png^infrastructure_solid_double_yellow_line_corner.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png",
+ "streets_asphalt.png"
+ },
+ "Asphalt with center corner double line",
+ "asphalt_center_corner_double",
+ 0)
+
+-- **************************************************************************************************** TRAFFIC MARKS
+
+-- Asphalt stair, slab, panel and microblock with arrow straight
+ register_stair_slab_panel_micro("infrastructure", "asphalt_arrow_straight", "infrastructure:asphalt_arrow_straight",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {"streets_arrow_straight.png", "infrastructure_asphalt.png"},
+ "Asphalt with arrow straight",
+ "asphalt_arrow_straight",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with arrow straight + left
+ register_stair_slab_panel_micro("infrastructure", "asphalt_arrow_straight_left", "infrastructure:asphalt_arrow_straight_left",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {"streets_asphalt.png^streets_arrow_straight_left.png", "infrastructure_asphalt.png"},
+ "Asphalt with arrow straight + left",
+ "asphalt_arrow_straight_left",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with arrow straight + right
+ register_stair_slab_panel_micro("infrastructure", "asphalt_arrow_straight_right", "infrastructure:asphalt_arrow_straight_right",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {"streets_asphalt.png^streets_arrow_straight_right.png", "infrastructure_asphalt.png"},
+ "Asphalt with arrow straight + right",
+ "asphalt_arrow_straight_right",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with arrow left
+ register_stair_slab_panel_micro("infrastructure", "asphalt_arrow_left", "infrastructure:asphalt_arrow_left",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {"streets_asphalt.png^streets_arrow_left.png", "infrastructure_asphalt.png"},
+ "Asphalt with arrow left",
+ "asphalt_arrow_left",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with arrow right
+ register_stair_slab_panel_micro("infrastructure", "asphalt_arrow_right", "infrastructure:asphalt_arrow_right",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {"streets_asphalt.png^streets_arrow_right.png", "infrastructure_asphalt.png"},
+ "Asphalt with arrow right",
+ "asphalt_arrow_right",
+ 0)
+
+-- Asphalt stair, slab, panel and microblock with "P"-sign
+ register_stair_slab_panel_micro("infrastructure", "asphalt_parking", "infrastructure:asphalt_parking",
+ {not_in_creative_inventory=NOT_IN_CREATIVE_INVENTORY, cracky=1},
+ {"streets_asphalt.png^streets_parking.png", "infrastructure_asphalt.png"},
+ "Asphalt with a parking sign",
+ "asphalt_parking",
+ 0)
+
+-- Register known infrastructure nodes in circular saw if avaiable
+ if circular_saw then
+ for i,v in ipairs({
+-- Materials
+ "asphalt",
+ "concrete",
+ "galvanized_steel",
+-- Center lines
+ "asphalt_center_dashed",
+ "asphalt_center_solid",
+ "asphalt_center_solid_one_side",
+ "asphalt_center_solid_double",
+ "asphalt_center_corner_single",
+ "asphalt_center_corner_double",
+-- Traffic marks
+ "asphalt_arrow_straight",
+ "asphalt_arrow_straight_left",
+ "asphalt_arrow_straight_right",
+ "asphalt_arrow_left",
+ "asphalt_arrow_right",
+ "asphalt_parking"
+ }) do
+ table.insert(circular_saw.known_stairs, "infrastructure:"..v);
+ end
+ end
diff --git a/streets/infrastructure/settings.lua b/streets/infrastructure/settings.lua
new file mode 100644
index 0000000..1433e22
--- /dev/null
+++ b/streets/infrastructure/settings.lua
@@ -0,0 +1,49 @@
+-- This file stores all settings for the "Infrastructure mod"
+
+-- Stairs, slabs, panels and microblocks
+ NOT_IN_CREATIVE_INVENTORY = 1 -- an integer 0 or 1 -> default = 1 | Do you want it to be hide in your creative inventory?
+
+-- Raised pavement marker
+ MARKER_LIGHT_RANGE = 4 -- an integer -> default = 4 | How much light do you want it to give?
+
+-- Retroreflective delineator
+ DELINEATOR_LIGHT_RANGE = 8 -- an integer -> default = 8 | How much light do you want it to give?
+
+-- Energy absorbing terminal
+ ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE = 8 -- an integer -> default = 8 | How much light do you want it to give?
+
+-- Emergency phone
+ ENABLE_EMERGENCY_PHONE = true -- true or false -> default = true | Do you want it to be enabled in your game?
+ HEALTH_TO_TRIGGER = 5 -- an integer -> default = 5 | When will the player be healed? How low must his health be?
+ HEALTH_TO_RESTORING = 10 -- an integer -> default = 10 | To what will the health be set?
+ EMERGENCY_PHONE_LIGHT_RANGE = 12 -- an integer -> default = 12 | How much light do you want it to give?
+ EMERGENCY_PHONE_VOLUME = 0.1 -- a float -> default = 0.1 | How noisy should be the dialing sound?
+
+-- Traffic lights
+ TRAFFIC_LIGHTS_LIGHT_RANGE = 12 -- an integer -> default = 12 | How much light do you want it to give?
+ TRAFFIC_LIGHTS_VOLUME = 0 -- a float -> default = 0.1 | How noisy should be the beep sound?
+
+-- Automatic warning device
+ AUTOMATIC_WARNING_DEVICE_LIGHT_RANGE = 12 -- an integer -> default = 12 | How much light do you want it to give?
+ AUTOMATIC_WARNING_DEVICE_VOLUME = 0.5 -- a float -> default = 0.5 | How noisy should be the bell sound?
+
+-- Boom barrier
+ BOOM_BARRIER_LIGHT_RANGE = 6 -- an integer -> default = 6 | How much light do you want it to give?
+ BOOM_BARRIER_VOLUME = 0.4 -- a float -> default = 0.1 | How noisy should be the mechanism sound?
+
+-- Curve chevron
+ CURVE_CHEVRON_LIGHT_RANGE = 12 -- an integer -> default = 12 | How much light do you want it to give?
+
+-- Crosswalk lighting
+ CROSSWALK_LIGHTING_LIGHT_RANGE = 15 -- an integer -> default = 15 | How much light do you want it to give?
+
+-- Crosswalk safety sign
+ CROSSWALK_SAFETY_SIGN_LIGHT_RANGE = 8 -- an integer -> default = 8 | How much light do you want it to give?
+
+-- Crosswalk safety sign
+ RETROREFLECTIVE_SURFACE_LIGHT_RANGE = 8 -- an integer -> default = 8 | How much light do you want it to give?
+
+-- Aircraft warning light
+ AIRCRAFT_WARNING_LIGHT_LIGHT_RANGE = 15 -- an integer -> default = 15 | How much light do you want it to give?
+-- Warning light
+ WARNING_LIGHT_LIGHT_RANGE = 15 -- an integer -> default = 15 | How much light do you want it to give?
diff --git a/streets/infrastructure/sounds/infrastructure_automatic_warning_device.ogg b/streets/infrastructure/sounds/infrastructure_automatic_warning_device.ogg
new file mode 100644
index 0000000..71d1679
--- /dev/null
+++ b/streets/infrastructure/sounds/infrastructure_automatic_warning_device.ogg
Binary files differ
diff --git a/streets/infrastructure/sounds/infrastructure_boom_barrier.ogg b/streets/infrastructure/sounds/infrastructure_boom_barrier.ogg
new file mode 100644
index 0000000..4106df2
--- /dev/null
+++ b/streets/infrastructure/sounds/infrastructure_boom_barrier.ogg
Binary files differ
diff --git a/streets/infrastructure/sounds/infrastructure_ebell.ogg b/streets/infrastructure/sounds/infrastructure_ebell.ogg
new file mode 100644
index 0000000..d59d1b9
--- /dev/null
+++ b/streets/infrastructure/sounds/infrastructure_ebell.ogg
Binary files differ
diff --git a/streets/infrastructure/sounds/infrastructure_emergency_phone.ogg b/streets/infrastructure/sounds/infrastructure_emergency_phone.ogg
new file mode 100644
index 0000000..7e84eb2
--- /dev/null
+++ b/streets/infrastructure/sounds/infrastructure_emergency_phone.ogg
Binary files differ
diff --git a/streets/infrastructure/sounds/infrastructure_traffic_lights_1.ogg b/streets/infrastructure/sounds/infrastructure_traffic_lights_1.ogg
new file mode 100644
index 0000000..d790e9a
--- /dev/null
+++ b/streets/infrastructure/sounds/infrastructure_traffic_lights_1.ogg
Binary files differ
diff --git a/streets/infrastructure/sounds/infrastructure_traffic_lights_2.ogg b/streets/infrastructure/sounds/infrastructure_traffic_lights_2.ogg
new file mode 100644
index 0000000..8fa7753
--- /dev/null
+++ b/streets/infrastructure/sounds/infrastructure_traffic_lights_2.ogg
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_aircraft_warning_light_side_anim.png b/streets/infrastructure/textures/infrastructure_aircraft_warning_light_side_anim.png
new file mode 100644
index 0000000..40c1558
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_aircraft_warning_light_side_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_aircraft_warning_light_top_anim.png b/streets/infrastructure/textures/infrastructure_aircraft_warning_light_top_anim.png
new file mode 100644
index 0000000..8f223dc
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_aircraft_warning_light_top_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_anti_dazzling_panel_side.png b/streets/infrastructure/textures/infrastructure_anti_dazzling_panel_side.png
new file mode 100644
index 0000000..5965006
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_anti_dazzling_panel_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_anti_dazzling_panel_top_bottom.png b/streets/infrastructure/textures/infrastructure_anti_dazzling_panel_top_bottom.png
new file mode 100644
index 0000000..0f257bd
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_anti_dazzling_panel_top_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_asphalt.png b/streets/infrastructure/textures/infrastructure_asphalt.png
new file mode 100644
index 0000000..2906a0d
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_asphalt.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device.png
new file mode 100644
index 0000000..d5f6c62
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_bottom.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_bottom.png
new file mode 100644
index 0000000..87ddf0c
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle.png
new file mode 100644
index 0000000..5185a29
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_anim.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_anim.png
new file mode 100644
index 0000000..575ebca
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_off.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_off.png
new file mode 100644
index 0000000..ac85b26
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_off.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_side.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_side.png
new file mode 100644
index 0000000..7c50472
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_center_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_anim.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_anim.png
new file mode 100644
index 0000000..6d6851b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_off.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_off.png
new file mode 100644
index 0000000..3acc761
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_off.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_side.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_side.png
new file mode 100644
index 0000000..8d73676
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_left_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_anim.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_anim.png
new file mode 100644
index 0000000..5517f0d
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_off.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_off.png
new file mode 100644
index 0000000..d3e378a
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_off.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_side.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_side.png
new file mode 100644
index 0000000..cb6a9bc
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_right_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_side.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_side.png
new file mode 100644
index 0000000..469addf
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_middle_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_top.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_top.png
new file mode 100644
index 0000000..a9fb96f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_automatic_warning_device_top_side.png b/streets/infrastructure/textures/infrastructure_automatic_warning_device_top_side.png
new file mode 100644
index 0000000..49412ec
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_automatic_warning_device_top_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_darkfirst.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_darkfirst.png
new file mode 100644
index 0000000..70b1cd3
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_darkfirst.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_lightfirst.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_lightfirst.png
new file mode 100644
index 0000000..ea7368e
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_anim_lightfirst.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_bottom_front_back.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_bottom_front_back.png
new file mode 100644
index 0000000..e283612
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_bottom_front_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_left_right_bright.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_left_right_bright.png
new file mode 100644
index 0000000..0e6e50c
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_left_right_bright.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_top.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_top.png
new file mode 100644
index 0000000..5f997a4
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_h_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_left.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_left.png
new file mode 100644
index 0000000..87b3bbb
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_left.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_right.png b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_right.png
new file mode 100644
index 0000000..c777597
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_arm_v_right.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_h_bottom.png b/streets/infrastructure/textures/infrastructure_boom_barrier_h_bottom.png
new file mode 100644
index 0000000..c7fbfea
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_h_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_h_front_back.png b/streets/infrastructure/textures/infrastructure_boom_barrier_h_front_back.png
new file mode 100644
index 0000000..5d019fc
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_h_front_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_h_left.png b/streets/infrastructure/textures/infrastructure_boom_barrier_h_left.png
new file mode 100644
index 0000000..08348fb
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_h_left.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_h_right.png b/streets/infrastructure/textures/infrastructure_boom_barrier_h_right.png
new file mode 100644
index 0000000..5399be8
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_h_right.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_h_top.png b/streets/infrastructure/textures/infrastructure_boom_barrier_h_top.png
new file mode 100644
index 0000000..7796232
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_h_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_v_bottom.png b/streets/infrastructure/textures/infrastructure_boom_barrier_v_bottom.png
new file mode 100644
index 0000000..9ae9ed3
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_v_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_v_front_back.png b/streets/infrastructure/textures/infrastructure_boom_barrier_v_front_back.png
new file mode 100644
index 0000000..d7b7a3b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_v_front_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_v_left.png b/streets/infrastructure/textures/infrastructure_boom_barrier_v_left.png
new file mode 100644
index 0000000..4ddd606
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_v_left.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_boom_barrier_v_right.png b/streets/infrastructure/textures/infrastructure_boom_barrier_v_right.png
new file mode 100644
index 0000000..91c5600
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_boom_barrier_v_right.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_cable_barrier_terminal_back.png b/streets/infrastructure/textures/infrastructure_cable_barrier_terminal_back.png
new file mode 100644
index 0000000..5f90cf2
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_cable_barrier_terminal_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_cable_barrier_terminal_front.png b/streets/infrastructure/textures/infrastructure_cable_barrier_terminal_front.png
new file mode 100644
index 0000000..607f6d9
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_cable_barrier_terminal_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_concrete.png b/streets/infrastructure/textures/infrastructure_concrete.png
new file mode 100644
index 0000000..3be0c52
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_concrete.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_back.png b/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_back.png
new file mode 100644
index 0000000..d7aaf99
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_front.png b/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_front.png
new file mode 100644
index 0000000..c3a7b37
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_side.png b/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_side.png
new file mode 100644
index 0000000..739e6de
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_corrugated_guide_rail_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_corrugated_sheet.png b/streets/infrastructure/textures/infrastructure_corrugated_sheet.png
new file mode 100644
index 0000000..9b6bef4
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_corrugated_sheet.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_lighting_back.png b/streets/infrastructure/textures/infrastructure_crosswalk_lighting_back.png
new file mode 100644
index 0000000..fd73443
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_lighting_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_lighting_bottom.png b/streets/infrastructure/textures/infrastructure_crosswalk_lighting_bottom.png
new file mode 100644
index 0000000..f6f5db9
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_lighting_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_lighting_front.png b/streets/infrastructure/textures/infrastructure_crosswalk_lighting_front.png
new file mode 100644
index 0000000..bf6bf01
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_lighting_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign.png b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign.png
new file mode 100644
index 0000000..b20ca91
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_front_back.png b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_front_back.png
new file mode 100644
index 0000000..2ff6832
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_front_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_side.png b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_side.png
new file mode 100644
index 0000000..9e7c58c
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_bottom_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top.png b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top.png
new file mode 100644
index 0000000..6ba1c7b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_front_back.png b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_front_back.png
new file mode 100644
index 0000000..f115876
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_front_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_side.png b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_side.png
new file mode 100644
index 0000000..9db3518
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_safety_sign_top_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_back.png b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_back.png
new file mode 100644
index 0000000..51d024b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_anim.png b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_anim.png
new file mode 100644
index 0000000..a21529f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_bright.png b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_bright.png
new file mode 100644
index 0000000..3525a3c
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_bright.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_dark.png b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_dark.png
new file mode 100644
index 0000000..357bda3
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crosswalk_warning_light_front_dark.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crowd_control_barricade_back.png b/streets/infrastructure/textures/infrastructure_crowd_control_barricade_back.png
new file mode 100644
index 0000000..0f5c6ea
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crowd_control_barricade_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_crowd_control_barricade_front.png b/streets/infrastructure/textures/infrastructure_crowd_control_barricade_front.png
new file mode 100644
index 0000000..a16c363
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_crowd_control_barricade_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_curve_chevron_left_bright.png b/streets/infrastructure/textures/infrastructure_curve_chevron_left_bright.png
new file mode 100644
index 0000000..199751f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_curve_chevron_left_bright.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_curve_chevron_left_dark.png b/streets/infrastructure/textures/infrastructure_curve_chevron_left_dark.png
new file mode 100644
index 0000000..f7d68f5
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_curve_chevron_left_dark.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_curve_chevron_right_bright.png b/streets/infrastructure/textures/infrastructure_curve_chevron_right_bright.png
new file mode 100644
index 0000000..d1bae78
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_curve_chevron_right_bright.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_curve_chevron_right_dark.png b/streets/infrastructure/textures/infrastructure_curve_chevron_right_dark.png
new file mode 100644
index 0000000..b8f442f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_curve_chevron_right_dark.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_delineator_retroreflector_red.png b/streets/infrastructure/textures/infrastructure_delineator_retroreflector_red.png
new file mode 100644
index 0000000..b2d4336
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_delineator_retroreflector_red.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_delineator_retroreflector_yellow.png b/streets/infrastructure/textures/infrastructure_delineator_retroreflector_yellow.png
new file mode 100644
index 0000000..b6fe651
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_delineator_retroreflector_yellow.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_delineator_wrapper_left.png b/streets/infrastructure/textures/infrastructure_delineator_wrapper_left.png
new file mode 100644
index 0000000..a4d0edd
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_delineator_wrapper_left.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_delineator_wrapper_right.png b/streets/infrastructure/textures/infrastructure_delineator_wrapper_right.png
new file mode 100644
index 0000000..2743183
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_delineator_wrapper_right.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_drainage_channel_grating.png b/streets/infrastructure/textures/infrastructure_drainage_channel_grating.png
new file mode 100644
index 0000000..dc720cd
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_drainage_channel_grating.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_emergency_phone_bottom.png b/streets/infrastructure/textures/infrastructure_emergency_phone_bottom.png
new file mode 100644
index 0000000..8106816
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_emergency_phone_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_emergency_phone_front.png b/streets/infrastructure/textures/infrastructure_emergency_phone_front.png
new file mode 100644
index 0000000..1153717
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_emergency_phone_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_emergency_phone_side.png b/streets/infrastructure/textures/infrastructure_emergency_phone_side.png
new file mode 100644
index 0000000..930437c
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_emergency_phone_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_emergency_phone_top.png b/streets/infrastructure/textures/infrastructure_emergency_phone_top.png
new file mode 100644
index 0000000..2ff4038
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_emergency_phone_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_back.png b/streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_back.png
new file mode 100644
index 0000000..6264bd5
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_front.png b/streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_front.png
new file mode 100644
index 0000000..cd20a40
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_energy_absorbing_terminal_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_fitch_barrel_bottom.png b/streets/infrastructure/textures/infrastructure_fitch_barrel_bottom.png
new file mode 100644
index 0000000..7664b97
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_fitch_barrel_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_fitch_barrel_side.png b/streets/infrastructure/textures/infrastructure_fitch_barrel_side.png
new file mode 100644
index 0000000..7471830
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_fitch_barrel_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_fitch_barrel_top.png b/streets/infrastructure/textures/infrastructure_fitch_barrel_top.png
new file mode 100644
index 0000000..223e119
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_fitch_barrel_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_galvanized_steel.png b/streets/infrastructure/textures/infrastructure_galvanized_steel.png
new file mode 100644
index 0000000..841e68b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_galvanized_steel.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_grid_paver_bottom.png b/streets/infrastructure/textures/infrastructure_grid_paver_bottom.png
new file mode 100644
index 0000000..de051cf
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_grid_paver_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_grid_paver_grass.png b/streets/infrastructure/textures/infrastructure_grid_paver_grass.png
new file mode 100644
index 0000000..87bae79
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_grid_paver_grass.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_grid_paver_top.png b/streets/infrastructure/textures/infrastructure_grid_paver_top.png
new file mode 100644
index 0000000..ea079c3
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_grid_paver_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_lane_control_lights_1.png b/streets/infrastructure/textures/infrastructure_lane_control_lights_1.png
new file mode 100644
index 0000000..e2c5d16
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_lane_control_lights_1.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_lane_control_lights_2.png b/streets/infrastructure/textures/infrastructure_lane_control_lights_2.png
new file mode 100644
index 0000000..913572a
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_lane_control_lights_2.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_lane_control_lights_3.png b/streets/infrastructure/textures/infrastructure_lane_control_lights_3.png
new file mode 100644
index 0000000..ffe4e01
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_lane_control_lights_3.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_lane_control_lights_4.png b/streets/infrastructure/textures/infrastructure_lane_control_lights_4.png
new file mode 100644
index 0000000..6b24780
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_lane_control_lights_4.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_lane_control_lights_5.png b/streets/infrastructure/textures/infrastructure_lane_control_lights_5.png
new file mode 100644
index 0000000..1a8afcb
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_lane_control_lights_5.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_lane_control_lights_6.png b/streets/infrastructure/textures/infrastructure_lane_control_lights_6.png
new file mode 100644
index 0000000..6e149d7
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_lane_control_lights_6.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_manhole_cover_side.png b/streets/infrastructure/textures/infrastructure_manhole_cover_side.png
new file mode 100644
index 0000000..11bf08e
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_manhole_cover_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_manhole_cover_top_bottom.png b/streets/infrastructure/textures/infrastructure_manhole_cover_top_bottom.png
new file mode 100644
index 0000000..4338a82
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_manhole_cover_top_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_marker_bottom_side.png b/streets/infrastructure/textures/infrastructure_marker_bottom_side.png
new file mode 100644
index 0000000..6cf3e60
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_marker_bottom_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_marker_side_red.png b/streets/infrastructure/textures/infrastructure_marker_side_red.png
new file mode 100644
index 0000000..5a5ae22
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_marker_side_red.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_marker_side_yellow.png b/streets/infrastructure/textures/infrastructure_marker_side_yellow.png
new file mode 100644
index 0000000..a3a439d
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_marker_side_yellow.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_marker_top_red_yellow.png b/streets/infrastructure/textures/infrastructure_marker_top_red_yellow.png
new file mode 100644
index 0000000..afebd88
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_marker_top_red_yellow.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_marker_top_yellow_yellow.png b/streets/infrastructure/textures/infrastructure_marker_top_yellow_yellow.png
new file mode 100644
index 0000000..de9d4d6
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_marker_top_yellow_yellow.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_noise_barrier.png b/streets/infrastructure/textures/infrastructure_noise_barrier.png
new file mode 100644
index 0000000..a52a243
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_noise_barrier.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_razor_wire.png b/streets/infrastructure/textures/infrastructure_razor_wire.png
new file mode 100644
index 0000000..150a98f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_razor_wire.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_riffled_sheet.png b/streets/infrastructure/textures/infrastructure_riffled_sheet.png
new file mode 100644
index 0000000..0f83bce
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_riffled_sheet.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_crosswalk_back.png b/streets/infrastructure/textures/infrastructure_road_sign_crosswalk_back.png
new file mode 100644
index 0000000..590e65d
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_crosswalk_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_crosswalk_front.png b/streets/infrastructure/textures/infrastructure_road_sign_crosswalk_front.png
new file mode 100644
index 0000000..78b5dce
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_crosswalk_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_retroreflective_surface.png b/streets/infrastructure/textures/infrastructure_road_sign_retroreflective_surface.png
new file mode 100644
index 0000000..f9c95c1
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_retroreflective_surface.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_right_of_way_back.png b/streets/infrastructure/textures/infrastructure_road_sign_right_of_way_back.png
new file mode 100644
index 0000000..a98467f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_right_of_way_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_right_of_way_front.png b/streets/infrastructure/textures/infrastructure_road_sign_right_of_way_front.png
new file mode 100644
index 0000000..0f52f69
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_right_of_way_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_stop_back.png b/streets/infrastructure/textures/infrastructure_road_sign_stop_back.png
new file mode 100644
index 0000000..d87b178
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_stop_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_stop_front.png b/streets/infrastructure/textures/infrastructure_road_sign_stop_front.png
new file mode 100644
index 0000000..42a099f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_stop_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_yield_back.png b/streets/infrastructure/textures/infrastructure_road_sign_yield_back.png
new file mode 100644
index 0000000..d934905
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_yield_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_road_sign_yield_front.png b/streets/infrastructure/textures/infrastructure_road_sign_yield_front.png
new file mode 100644
index 0000000..caad0cc
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_road_sign_yield_front.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_cone_bottom.png b/streets/infrastructure/textures/infrastructure_traffic_cone_bottom.png
new file mode 100644
index 0000000..c9a5137
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_cone_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_cone_side.png b/streets/infrastructure/textures/infrastructure_traffic_cone_side.png
new file mode 100644
index 0000000..134837f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_cone_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_cone_top.png b/streets/infrastructure/textures/infrastructure_traffic_cone_top.png
new file mode 100644
index 0000000..2dca4ae
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_cone_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians.png
new file mode 100644
index 0000000..9cd1470
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_back.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_back.png
new file mode 100644
index 0000000..357011d
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_1.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_1.png
new file mode 100644
index 0000000..a689dc4
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_1.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_2.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_2.png
new file mode 100644
index 0000000..a689dc4
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_2.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_3.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_3.png
new file mode 100644
index 0000000..7729d96
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_3.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_4.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_4.png
new file mode 100644
index 0000000..7729d96
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_bottom_front_4.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_back.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_back.png
new file mode 100644
index 0000000..708d59b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_1.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_1.png
new file mode 100644
index 0000000..737c426
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_1.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_2.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_2.png
new file mode 100644
index 0000000..737c426
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_2.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_3.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_3.png
new file mode 100644
index 0000000..8d22856
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_3.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_4.png b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_4.png
new file mode 100644
index 0000000..8d22856
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_pedestrians_top_front_4.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_side.png b/streets/infrastructure/textures/infrastructure_traffic_lights_side.png
new file mode 100644
index 0000000..01076e3
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_side.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles.png
new file mode 100644
index 0000000..393422a
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_1.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_1.png
new file mode 100644
index 0000000..4cbb75b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_1.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_2.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_2.png
new file mode 100644
index 0000000..c81f500
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_2.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_3.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_3.png
new file mode 100644
index 0000000..f55108c
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_3.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_4.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_4.png
new file mode 100644
index 0000000..c81f500
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_bottom_4.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_1.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_1.png
new file mode 100644
index 0000000..116ae46
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_1.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_2.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_2.png
new file mode 100644
index 0000000..4a57e89
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_2.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_3.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_3.png
new file mode 100644
index 0000000..9dab2ea
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_3.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_4.png b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_4.png
new file mode 100644
index 0000000..ddc2364
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_traffic_lights_vehicles_top_4.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_truss.png b/streets/infrastructure/textures/infrastructure_truss.png
new file mode 100644
index 0000000..ba628f1
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_truss.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_warning_light_back.png b/streets/infrastructure/textures/infrastructure_warning_light_back.png
new file mode 100644
index 0000000..0301aee
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_warning_light_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_warning_light_bottom.png b/streets/infrastructure/textures/infrastructure_warning_light_bottom.png
new file mode 100644
index 0000000..e7090a0
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_warning_light_bottom.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_warning_light_front_anim.png b/streets/infrastructure/textures/infrastructure_warning_light_front_anim.png
new file mode 100644
index 0000000..601725b
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_warning_light_front_anim.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_warning_light_left.png b/streets/infrastructure/textures/infrastructure_warning_light_left.png
new file mode 100644
index 0000000..e519af4
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_warning_light_left.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_warning_light_right.png b/streets/infrastructure/textures/infrastructure_warning_light_right.png
new file mode 100644
index 0000000..4bd42dc
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_warning_light_right.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_warning_light_top.png b/streets/infrastructure/textures/infrastructure_warning_light_top.png
new file mode 100644
index 0000000..898ed0f
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_warning_light_top.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_wire_netting.png b/streets/infrastructure/textures/infrastructure_wire_netting.png
new file mode 100644
index 0000000..a685e97
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_wire_netting.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_back.png b/streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_back.png
new file mode 100644
index 0000000..31418f3
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_back.png
Binary files differ
diff --git a/streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_front.png b/streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_front.png
new file mode 100644
index 0000000..3e46bd1
--- /dev/null
+++ b/streets/infrastructure/textures/infrastructure_wire_rope_safety_barrier_front.png
Binary files differ
diff --git a/streets/labels/depends.txt b/streets/labels/depends.txt
new file mode 100644
index 0000000..365a8df
--- /dev/null
+++ b/streets/labels/depends.txt
@@ -0,0 +1,4 @@
+default
+streetsmod
+wool?
+moreblocks?
diff --git a/streets/labels/init.lua b/streets/labels/init.lua
new file mode 100644
index 0000000..93dcf37
--- /dev/null
+++ b/streets/labels/init.lua
@@ -0,0 +1,355 @@
+--[[
+ StreetsMod: All kinds of asphalt with labels
+]]
+
+streets.register_label = function(friendlyname,name,tex,craft)
+ minetest.register_node(":streets:mark_"..name,{
+ description = streets.S("Marking Overlay: "..friendlyname),
+ tiles = {tex,"streets_rw_transparent.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {snappy = 3,attached_node = 1,oddly_breakable_by_hand = 1},
+ sunlight_propagates = true,
+ walkable = false,
+ inventory_image = tex,
+ wield_image = tex,
+ after_place_node = function(pos)
+ local node = minetest.get_node(pos)
+ local lower_pos = {x = pos.x, y = pos.y-1, z = pos.z}
+ local lower_node = minetest.get_node(lower_pos)
+ if lower_node.name == "streets:asphalt" then
+ lower_node.name = "streets:mark_"..(node.name:sub(14)).."_on_asphalt"
+ lower_node.param2 = node.param2
+ minetest.set_node(lower_pos,lower_node)
+ minetest.remove_node(pos)
+ end
+ end,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5,-0.5,-0.5,0.5,-0.499,0.5}
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}
+ }
+ })
+
+ minetest.register_node(":streets:mark_"..name.."_on_asphalt",{
+ description = streets.S("Asphalt With Marking: "..friendlyname),
+ groups = {cracky=3},
+ tiles = {"streets_asphalt.png^"..tex,"streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^"..tex.."^[transformR180","streets_asphalt.png^"..tex},
+ paramtype2 = "facedir"
+ })
+
+ minetest.register_craft({
+ output = "streets:mark_"..name.."_on_asphalt",
+ type = "shapeless",
+ recipe = {"streets:asphalt","streets:mark_"..name}
+ })
+
+ minetest.register_craft({
+ output = "streets:mark_"..name.." 6",
+ recipe = craft
+ })
+ if minetest.get_modpath("moreblocks") then
+ stairsplus:register_all("streets", name, "streets:mark_"..name.."_on_asphalt", {
+ description = "Asphalt with Marking: "..friendlyname,
+ tiles = {"streets_asphalt.png^"..tex,"streets_asphalt.png","streets_asphalt.png","streets_asphalt.png","streets_asphalt.png^"..tex.."^[transformR180","streets_asphalt.png^"..tex},
+ groups = {cracky=3}
+ })
+ end
+end
+
+
+--White Markings
+streets.register_label("Solid White Side Line","solid_white_side_line","streets_asphalt_side.png",{
+ {"","",""},
+ {"","",""},
+ {"dye:white","dye:white","dye:white"}
+ })
+
+minetest.register_alias("streets:asphalt_side","streets:mark_solid_white_side_line_on_asphalt")
+minetest.register_alias("streets:asphalt_sideline","streets:mark_solid_white_side_line_on_asphalt")
+
+streets.register_label("Solid White Side Line (rotated)","solid_white_side_line_rotated","streets_asphalt_side.png^[transformR180",{{"streets:mark_solid_white_side_line"}})
+
+minetest.register_alias("streets:asphalt_sideline_r","streets:mark_solid_white_side_line_rotated_on_asphalt")
+
+
+streets.register_label("Solid White Center Line","solid_white_center_line","streets_asphalt_solid_line.png",{
+ {"","dye:white",""},
+ {"","dye:white",""},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_middle","streets:mark_solid_white_center_line_on_asphalt")
+minetest.register_alias("streets:asphalt_solid_line","streets:mark_solid_white_center_line_on_asphalt")
+
+
+streets.register_label("Dashed White Center Line","dashed_white_center_line","streets_asphalt_dashed_line.png",{
+ {"","dye:white",""},
+ {"","",""},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_middle_dashed","streets:mark_dashed_white_center_line_on_asphalt")
+minetest.register_alias("streets:asphalt_dashed_line","streets:mark_dashed_white_center_line_on_asphalt")
+
+
+streets.register_label("Solid White Side Line (corner)","solid_white_side_line_corner","streets_asphalt_outer_edge.png",{
+ {"dye:white","dye:white","dye:white"},
+ {"dye:white","",""},
+ {"dye:white","",""}
+ })
+
+minetest.register_alias("streets:asphalt_outer_edge","streets:mark_solid_white_side_line_corner_on_asphalt")
+
+
+streets.register_label("Solid White Side Line (corner, rotated)","solid_white_side_line_corner_rotated","streets_asphalt_outer_edge.png^[transformR270",{{"streets:mark_solid_white_line_corner"}})
+
+minetest.register_alias("streets:asphalt_outer_edge_r","streets:mark_solid_white_side_line_corner_rotated_on_asphalt")
+
+
+streets.register_label("Parking (white)","white_parking","streets_parking.png",{
+ {"","dye:white","dye:white"},
+ {"","dye:white","dye:white"},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_parking","streets:mark_white_parking_on_asphalt")
+
+
+streets.register_label("White Arrow (straight)","white_arrow_straight","streets_arrow_straight.png",{
+ {"","",""},
+ {"","dye:white",""},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_arrow_straight","streets:mark_white_arrow_straight_on_asphalt")
+
+
+streets.register_label("White Arrow (left)","white_arrow_left","streets_arrow_left.png",{
+ {"","",""},
+ {"dye:white","dye:white",""},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_arrow_left","streets:mark_white_arrow_left_on_asphalt")
+
+
+streets.register_label("White Arrow (right)","white_arrow_right","streets_arrow_right.png",{
+ {"","",""},
+ {"","dye:white","dye:white"},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_arrow_right","streets:mark_white_arrow_right_on_asphalt")
+
+
+streets.register_label("White Arrow (left+straight)","white_arrow_left_straight","streets_arrow_straight_left.png",{
+ {"","dye:white",""},
+ {"dye:white","dye:white",""},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_arrow_straight_left","streets:mark_white_arrow_left_straight_on_asphalt")
+
+
+streets.register_label("White Arrow (straight+right)","white_arrow_straight_right","streets_arrow_straight_right.png",{
+ {"","dye:white",""},
+ {"","dye:white","dye:white"},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_arrow_straight_right","streets:mark_white_arrow_straight_right_on_asphalt")
+
+
+streets.register_label("White Arrow (left+straight+right)","white_arrow_left_straight_right","streets_arrow_alldirs.png",{
+ {"","dye:white",""},
+ {"dye:white","dye:white","dye:white"},
+ {"","dye:white",""}
+ })
+
+minetest.register_alias("streets:asphalt_arrow_alldirs","streets:mark_white_arrow_left_straight_right_on_asphalt")
+
+
+--Yellow streetsmod markings
+
+streets.register_label("Solid Yellow Center Line","solid_yellow_center_line","streets_rw_solid_line.png",{
+ {"","dye:yellow",""},
+ {"","dye:yellow",""},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_asphalt_solid","streets:mark_solid_yellow_center_line")
+
+
+streets.register_label("Dashed Yellow Center Line","dashed_yellow_center_line","streets_rw_dashed_line.png",{
+ {"","dye:yellow",""},
+ {"","",""},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_asphalt_dashed","streets:mark_dashed_yellow_center_line")
+
+
+streets.register_label("Yellow X","yellow_x","streets_rw_cross.png",{
+ {"dye:yellow","","dye:yellow"},
+ {"","dye:yellow",""},
+ {"dye:yellow","","dye:yellow"}
+ })
+
+minetest.register_alias("streets:rw_cross","streets:mark_yellow_x")
+
+
+streets.register_label("Solid Yellow Side Line (corner)","solid_yellow_side_line_corner","streets_rw_outer_edge.png",{
+ {"dye:yellow","dye:yellow","dye:yellow"},
+ {"dye:yellow","",""},
+ {"dye:yellow","",""}
+ })
+
+minetest.register_alias("streets:rw_outer_edge","streets:solid_yellow_side_line_corner")
+
+
+streets.register_label("Solid Yellow Side Line (corner,rotated)","solid_yellow_side_line_corner_rotated","streets_rw_outer_edge.png^[transformR270",{{"streets:mark_solid_yellow_side_line_corner"}})
+
+minetest.register_alias("streets:rw_outer_edge","streets:solid_yellow_side_line_corner")
+
+
+streets.register_label("Parking (yellow)","yellow_parking","streets_rw_parking.png",{
+ {"","dye:yellow","dye:yellow"},
+ {"","dye:yellow","dye:yellow"},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_parking","streets:mark_yellow_parking")
+
+
+streets.register_label("Yellow Arrow (straight)","yellow_arrow_straight","streets_rw_arrow_straight.png",{
+ {"","",""},
+ {"","dye:yellow",""},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_straight","streets:mark_yellow_arrow_straight")
+
+
+streets.register_label("Yellow Arrow (left)","yellow_arrow_left","streets_rw_arrow_left.png",{
+ {"","",""},
+ {"dye:yellow","dye:yellow",""},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_left","streets:mark_yellow_arrow_left")
+
+
+streets.register_label("Yellow Arrow (right)","yellow_arrow_right","streets_rw_arrow_right.png",{
+ {"","",""},
+ {"","dye:yellow","dye:yellow"},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_right","streets:mark_yellow_arrow_right")
+
+
+streets.register_label("Yellow Arrow (left+straight)","yellow_arrow_left_straight","streets_rw_arrow_straight_left.png",{
+ {"","dye:yellow",""},
+ {"dye:yellow","dye:yellow",""},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_straight_left","streets:mark_yellow_arrow_left_straight")
+
+
+streets.register_label("Yellow Arrow (straight+right)","yellow_arrow_straight_right","streets_rw_arrow_straight_right.png",{
+ {"","dye:yellow",""},
+ {"","dye:yellow","dye:yellow"},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_straight_right","streets:mark_yellow_arrow_straight_right")
+
+
+streets.register_label("Yellow Arrow (left+straight+right)","yellow_arrow_left_straight_right","streets_rw_arrow_alldirs.png",{
+ {"","dye:yellow",""},
+ {"dye:yellow","dye:yellow","dye:yellow"},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("streets:rw_alldirs","streets:mark_yellow_arrow_left_straight_right")
+
+streets.register_label("Solid Yellow Side Line","solid_yellow_side_line","streets_rw_asphalt_side.png",{
+ {"dye:yellow","",""},
+ {"dye:yellow","",""},
+ {"dye:yellow","",""}
+ })
+
+minetest.register_alias("streets:rw_sideline","streets:mark_solid_yellow_side_line")
+
+streets.register_label("Solid Yellow Side Line (rotated)","solid_yellow_side_line_rotated","streets_rw_asphalt_side.png^[transformR180",{{"streets:mark_solid_yellow_side_line"}})
+
+
+--Infrastructure markings
+
+streets.register_label("Solid Yellow Center Line (wide)","solid_yellow_center_line_wide","infrastructure_single_yellow_line.png",{
+ {"","",""},
+ {"dye:yellow","dye:yellow","dye:yellow"},
+ {"","",""}
+ })
+
+minetest.register_alias("infrastructure:asphalt_center_solid_line","streets:mark_solid_yellow_center_line_wide_on_asphalt")
+
+
+streets.register_label("Solid Yellow Center Line (wide,offset)","solid_yellow_center_line_wide_offset","infrastructure_solid_yellow_line_one_side.png",{
+ {"","",""},
+ {"","",""},
+ {"dye:yellow","dye:yellow","dye:yellow"}
+ })
+
+minetest.register_alias("infrastructure:asphalt_center_solid_one_side","streets:mark_solid_yellow_center_line_wide_offset_on_asphalt")
+
+
+streets.register_label("Double Yellow Center Line (wide)","double_yellow_center_line_wide","infrastructure_double_yellow_line.png",{
+ {"dye:yellow","dye:yellow","dye:yellow"},
+ {"","",""},
+ {"dye:yellow","dye:yellow","dye:yellow"}
+ })
+
+minetest.register_alias("infrastructure:asphalt_center_solid_double","streets:mark_double_yellow_center_line_wide_on_asphalt")
+
+
+streets.register_label("Solid Yellow Center Line (wide,corner)","solid_yellow_center_line_wide_corner","infrastructure_single_yellow_line_corner.png",{
+ {"","dye:yellow","dye:yellow"},
+ {"","dye:yellow",""},
+ {"","dye:yellow",""}
+ })
+
+minetest.register_alias("infrastructure:asphalt_center_corner_single","streets:mark_solid_yellow_center_line_wide_corner_on_asphalt")
+
+
+streets.register_label("Double Yellow Center Line (wide,corner)","double_yellow_center_line_wide_corner","infrastructure_solid_double_yellow_line_corner.png",{
+ {"dye:yellow","dye:yellow","dye:yellow"},
+ {"dye:yellow","",""},
+ {"dye:yellow","","dye:yellow"}
+ })
+
+minetest.register_alias("infrastructure:asphalt_center_corner_double","streets:mark_double_yellow_center_line_wide_corner_on_asphalt")
+
+
+minetest.register_alias("infrastructure:asphalt_arrow_straight", "streets:asphalt_arrow_straight")
+
+
+minetest.register_alias("infrastructure:asphalt_arrow_straight_left", "streets:asphalt_arrow_straight_left")
+
+
+minetest.register_alias("infrastructure:asphalt_arrow_straight_right", "streets:asphalt_arrow_straight_left")
+
+
+minetest.register_alias("infrastructure:asphalt_arrow_left", "streets:asphalt_arrow_left")
+
+
+minetest.register_alias("infrastructure:asphalt_arrow_right", "streets:asphalt_arrow_right")
+
+
+minetest.register_alias("infrastructure:asphalt_parking", "streets:asphalt_parking")
diff --git a/streets/labels/textures/infrastructure_double_yellow_line.png b/streets/labels/textures/infrastructure_double_yellow_line.png
new file mode 100644
index 0000000..3f21c45
--- /dev/null
+++ b/streets/labels/textures/infrastructure_double_yellow_line.png
Binary files differ
diff --git a/streets/labels/textures/infrastructure_single_yellow_line.png b/streets/labels/textures/infrastructure_single_yellow_line.png
new file mode 100644
index 0000000..a9ca74b
--- /dev/null
+++ b/streets/labels/textures/infrastructure_single_yellow_line.png
Binary files differ
diff --git a/streets/labels/textures/infrastructure_single_yellow_line_corner.png b/streets/labels/textures/infrastructure_single_yellow_line_corner.png
new file mode 100644
index 0000000..a41d06a
--- /dev/null
+++ b/streets/labels/textures/infrastructure_single_yellow_line_corner.png
Binary files differ
diff --git a/streets/labels/textures/infrastructure_solid_double_yellow_line_corner.png b/streets/labels/textures/infrastructure_solid_double_yellow_line_corner.png
new file mode 100644
index 0000000..09a3719
--- /dev/null
+++ b/streets/labels/textures/infrastructure_solid_double_yellow_line_corner.png
Binary files differ
diff --git a/streets/labels/textures/infrastructure_solid_yellow_line_one_side.png b/streets/labels/textures/infrastructure_solid_yellow_line_one_side.png
new file mode 100644
index 0000000..0cff2e9
--- /dev/null
+++ b/streets/labels/textures/infrastructure_solid_yellow_line_one_side.png
Binary files differ
diff --git a/streets/labels/textures/streets_arrow_alldirs.png b/streets/labels/textures/streets_arrow_alldirs.png
new file mode 100644
index 0000000..c31eeaa
--- /dev/null
+++ b/streets/labels/textures/streets_arrow_alldirs.png
Binary files differ
diff --git a/streets/labels/textures/streets_arrow_left.png b/streets/labels/textures/streets_arrow_left.png
new file mode 100644
index 0000000..d33a5eb
--- /dev/null
+++ b/streets/labels/textures/streets_arrow_left.png
Binary files differ
diff --git a/streets/labels/textures/streets_arrow_right.png b/streets/labels/textures/streets_arrow_right.png
new file mode 100644
index 0000000..ae6450d
--- /dev/null
+++ b/streets/labels/textures/streets_arrow_right.png
Binary files differ
diff --git a/streets/labels/textures/streets_arrow_straight.png b/streets/labels/textures/streets_arrow_straight.png
new file mode 100644
index 0000000..d4899b9
--- /dev/null
+++ b/streets/labels/textures/streets_arrow_straight.png
Binary files differ
diff --git a/streets/labels/textures/streets_arrow_straight_left.png b/streets/labels/textures/streets_arrow_straight_left.png
new file mode 100644
index 0000000..2f5ddce
--- /dev/null
+++ b/streets/labels/textures/streets_arrow_straight_left.png
Binary files differ
diff --git a/streets/labels/textures/streets_arrow_straight_right.png b/streets/labels/textures/streets_arrow_straight_right.png
new file mode 100644
index 0000000..661d4bf
--- /dev/null
+++ b/streets/labels/textures/streets_arrow_straight_right.png
Binary files differ
diff --git a/streets/labels/textures/streets_asphalt_dashed_line.png b/streets/labels/textures/streets_asphalt_dashed_line.png
new file mode 100644
index 0000000..5a13fac
--- /dev/null
+++ b/streets/labels/textures/streets_asphalt_dashed_line.png
Binary files differ
diff --git a/streets/labels/textures/streets_asphalt_outer_edge.png b/streets/labels/textures/streets_asphalt_outer_edge.png
new file mode 100644
index 0000000..53c1489
--- /dev/null
+++ b/streets/labels/textures/streets_asphalt_outer_edge.png
Binary files differ
diff --git a/streets/labels/textures/streets_asphalt_side.png b/streets/labels/textures/streets_asphalt_side.png
new file mode 100644
index 0000000..9edce81
--- /dev/null
+++ b/streets/labels/textures/streets_asphalt_side.png
Binary files differ
diff --git a/streets/labels/textures/streets_asphalt_side_r.png b/streets/labels/textures/streets_asphalt_side_r.png
new file mode 100644
index 0000000..a067fda
--- /dev/null
+++ b/streets/labels/textures/streets_asphalt_side_r.png
Binary files differ
diff --git a/streets/labels/textures/streets_asphalt_solid_line.png b/streets/labels/textures/streets_asphalt_solid_line.png
new file mode 100644
index 0000000..0353aed
--- /dev/null
+++ b/streets/labels/textures/streets_asphalt_solid_line.png
Binary files differ
diff --git a/streets/labels/textures/streets_parking.png b/streets/labels/textures/streets_parking.png
new file mode 100644
index 0000000..a091ef5
--- /dev/null
+++ b/streets/labels/textures/streets_parking.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_arrow_left.png b/streets/labels/textures/streets_rw_arrow_left.png
new file mode 100644
index 0000000..6a51a51
--- /dev/null
+++ b/streets/labels/textures/streets_rw_arrow_left.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_arrow_right.png b/streets/labels/textures/streets_rw_arrow_right.png
new file mode 100644
index 0000000..05f503f
--- /dev/null
+++ b/streets/labels/textures/streets_rw_arrow_right.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_arrow_straight.png b/streets/labels/textures/streets_rw_arrow_straight.png
new file mode 100644
index 0000000..0c9e613
--- /dev/null
+++ b/streets/labels/textures/streets_rw_arrow_straight.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_arrow_straight_left.png b/streets/labels/textures/streets_rw_arrow_straight_left.png
new file mode 100644
index 0000000..0429c81
--- /dev/null
+++ b/streets/labels/textures/streets_rw_arrow_straight_left.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_arrow_straight_right.png b/streets/labels/textures/streets_rw_arrow_straight_right.png
new file mode 100644
index 0000000..02367d7
--- /dev/null
+++ b/streets/labels/textures/streets_rw_arrow_straight_right.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_asphalt_side.png b/streets/labels/textures/streets_rw_asphalt_side.png
new file mode 100644
index 0000000..83c8a6e
--- /dev/null
+++ b/streets/labels/textures/streets_rw_asphalt_side.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_cross.png b/streets/labels/textures/streets_rw_cross.png
new file mode 100644
index 0000000..a1f34b0
--- /dev/null
+++ b/streets/labels/textures/streets_rw_cross.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_dashed_line.png b/streets/labels/textures/streets_rw_dashed_line.png
new file mode 100644
index 0000000..4eb211e
--- /dev/null
+++ b/streets/labels/textures/streets_rw_dashed_line.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_dashed_line_crossing.png b/streets/labels/textures/streets_rw_dashed_line_crossing.png
new file mode 100644
index 0000000..bebe4c5
--- /dev/null
+++ b/streets/labels/textures/streets_rw_dashed_line_crossing.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_dashed_line_curve.png b/streets/labels/textures/streets_rw_dashed_line_curve.png
new file mode 100644
index 0000000..4a59805
--- /dev/null
+++ b/streets/labels/textures/streets_rw_dashed_line_curve.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_dashed_line_tjunction.png b/streets/labels/textures/streets_rw_dashed_line_tjunction.png
new file mode 100644
index 0000000..144480b
--- /dev/null
+++ b/streets/labels/textures/streets_rw_dashed_line_tjunction.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_outer_edge.png b/streets/labels/textures/streets_rw_outer_edge.png
new file mode 100644
index 0000000..54f16ea
--- /dev/null
+++ b/streets/labels/textures/streets_rw_outer_edge.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_parking.png b/streets/labels/textures/streets_rw_parking.png
new file mode 100644
index 0000000..aea7fb5
--- /dev/null
+++ b/streets/labels/textures/streets_rw_parking.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_solid_line.png b/streets/labels/textures/streets_rw_solid_line.png
new file mode 100644
index 0000000..3396d63
--- /dev/null
+++ b/streets/labels/textures/streets_rw_solid_line.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_solid_line_crossing.png b/streets/labels/textures/streets_rw_solid_line_crossing.png
new file mode 100644
index 0000000..4f911ed
--- /dev/null
+++ b/streets/labels/textures/streets_rw_solid_line_crossing.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_solid_line_curve.png b/streets/labels/textures/streets_rw_solid_line_curve.png
new file mode 100644
index 0000000..596983c
--- /dev/null
+++ b/streets/labels/textures/streets_rw_solid_line_curve.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_solid_line_tjunction.png b/streets/labels/textures/streets_rw_solid_line_tjunction.png
new file mode 100644
index 0000000..e6d11e7
--- /dev/null
+++ b/streets/labels/textures/streets_rw_solid_line_tjunction.png
Binary files differ
diff --git a/streets/labels/textures/streets_rw_transparent.png b/streets/labels/textures/streets_rw_transparent.png
new file mode 100644
index 0000000..9f466f4
--- /dev/null
+++ b/streets/labels/textures/streets_rw_transparent.png
Binary files differ
diff --git a/streets/license.txt b/streets/license.txt
new file mode 100644
index 0000000..fa53ac9
--- /dev/null
+++ b/streets/license.txt
@@ -0,0 +1,60 @@
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
+ "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.
+ "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.
+ "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
+ "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
+ "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
+ "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
+ "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
+ "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+ "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
+ "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+ to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
+ to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
+ to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
+ to Distribute and Publicly Perform Adaptations.
+
+ For the avoidance of doubt:
+ Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
+ Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
+ Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.
+ You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
+ If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
+ Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+ Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+ If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+ This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+ The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
diff --git a/streets/manholes/depends.txt b/streets/manholes/depends.txt
new file mode 100644
index 0000000..48ef5e1
--- /dev/null
+++ b/streets/manholes/depends.txt
@@ -0,0 +1,2 @@
+default
+streetsmod \ No newline at end of file
diff --git a/streets/manholes/init.lua b/streets/manholes/init.lua
new file mode 100644
index 0000000..b9a2f40
--- /dev/null
+++ b/streets/manholes/init.lua
@@ -0,0 +1,88 @@
+--[[
+ StreetsMod: Manholes in asphalt
+]]
+minetest.register_node(":streets:manhole",{
+ description = streets.S("Simple manhole"),
+ tiles = {"streets_asphalt.png^streets_manhole.png","streets_asphalt.png"},
+ groups = {cracky=3}
+})
+
+minetest.register_node(":streets:manhole_adv_closed",{
+ description = streets.S("Advanced manhole"),
+ tiles = {"streets_asphalt.png^streets_manhole_advanced.png","streets_asphalt.png"},
+ groups = {cracky=3},
+ drawtype = "nodebox",
+ paramtype = "light",
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ --Walls
+ {-0.5,-0.5,-0.5,-0.3,0.5,0.5},
+ {-0.5,-0.5,-0.5,0.5,0.5,-0.3},
+ {0.3,-0.5,-0.5,0.5,0.5,0.5},
+ {-0.5,-0.5,0.3,0.5,0.5,0.5},
+ --Cover
+ {-0.5,0.4,-0.1,0.5,0.5,0.1},
+ {-0.1,0.4,-0.5,0.1,0.5,0.5},
+ {-0.2,0.4,-0.2,0.2,0.5,0.2}
+ }
+ },
+ selection_box = {
+ type = "regular",
+ },
+ on_rightclick = function(pos,node,clicker)
+ minetest.set_node(pos,{name="streets:manhole_adv_open"})
+ end
+})
+minetest.register_node(":streets:manhole_adv_open",{
+ description = streets.S("Advanced manhole"),
+ tiles = {"streets_asphalt.png^streets_manhole_advanced.png","streets_asphalt.png"},
+ groups = {cracky=3,not_in_creative_inventory=1},
+ drawtype = "nodebox",
+ paramtype = "light",
+ drop = "streets:manhole_adv_closed",
+ climbable = true,
+ walkable = false,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ --Walls
+ {-0.5,-0.5,-0.5,-0.3,0.5,0.5},
+ {-0.5,-0.5,-0.5,0.5,0.5,-0.3},
+ {0.3,-0.5,-0.5,0.5,0.5,0.5},
+ {-0.5,-0.5,0.3,0.5,0.5,0.5},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ --Walls
+ {-0.5,-0.5,-0.5,-0.3,0.5,0.5},
+ {-0.5,-0.5,-0.5,0.5,0.5,-0.3},
+ {0.3,-0.5,-0.5,0.5,0.5,0.5},
+ {-0.5,-0.5,0.3,0.5,0.5,0.5},
+ }
+ },
+ on_rightclick = function(pos,node,clicker)
+ minetest.set_node(pos,{name="streets:manhole_adv_closed"})
+ end
+})
+
+minetest.register_craft({
+ output = "streets:manhole_adv_closed 2",
+ recipe = {
+ {"streets:asphalt", "default:steel_ingot", "streets:asphalt"},
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ {"streets:asphalt", "default:steel_ingot", "streets:asphalt"}
+ }
+})
+minetest.register_craft({
+ output = "streets:manhole 3",
+ recipe = {
+ {"streets:asphalt", "streets:asphalt", "streets:asphalt"},
+ {"streets:asphalt", "default:steel_ingot", "streets:asphalt"},
+ {"streets:asphalt", "streets:asphalt", "streets:asphalt"}
+ }
+}) \ No newline at end of file
diff --git a/streets/modpack.txt b/streets/modpack.txt
new file mode 100644
index 0000000..48abf62
--- /dev/null
+++ b/streets/modpack.txt
@@ -0,0 +1 @@
+This file indicates that the current folder is a modpack. Please also read readme.txt for more information. \ No newline at end of file
diff --git a/streets/readme.txt b/streets/readme.txt
new file mode 100644
index 0000000..7d2f32d
--- /dev/null
+++ b/streets/readme.txt
Binary files differ
diff --git a/streets/roadsigns/depends.txt b/streets/roadsigns/depends.txt
new file mode 100644
index 0000000..e088256
--- /dev/null
+++ b/streets/roadsigns/depends.txt
@@ -0,0 +1,2 @@
+default
+streetsmod?
diff --git a/streets/roadsigns/init.lua b/streets/roadsigns/init.lua
new file mode 100644
index 0000000..e44b68a
--- /dev/null
+++ b/streets/roadsigns/init.lua
@@ -0,0 +1,42 @@
+--[[
+ StreetsMod: Poles and signs
+]]
+streets.workshop = {}
+
+streets.workshop.register_sign = function(nodename, desc, img, rrecipe, rtime)
+
+ minetest.register_node(nodename,{
+ description = desc,
+ tiles = {img},
+ inventory_image = img,
+ wield_image = img,
+ groups = {snappy = 1,attached_node = 1},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", desc)
+ end,
+ drawtype = "nodebox",
+ node_box = {
+ type = "wallmounted",
+ fixed = {
+ {-0.4,-0.5,-0.4,0.4,-0.4,0.4}
+ }
+ },
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "wallmounted"
+ },
+ streets = {
+ signworkshop = {
+ recipe = rrecipe,
+ time = rtime
+ }
+ }
+ })
+end
+
+dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/signs.lua")
+dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/workshop.lua")
diff --git a/streets/roadsigns/signs.lua b/streets/roadsigns/signs.lua
new file mode 100644
index 0000000..9b8b129
--- /dev/null
+++ b/streets/roadsigns/signs.lua
@@ -0,0 +1,17 @@
+-- example: streets.workshop.register_sign(nodename, desc, img, recipe, time)
+streets.workshop.register_sign(":streets:sign_blank", streets.S("Empty sign"), "streets_sign_back.png", {"default:steel_ingot","","",""}, 3)
+
+streets.workshop.register_sign(":streets:sign_lava", streets.S("Warning sign (lava)"), "streets_sign_lava.png", {"streets:sign_blank","bucket:bucket_lava","",""}, 5)
+
+streets.workshop.register_sign(":streets:sign_water", streets.S("Warning sign (water)"), "streets_sign_water.png", {"streets:sign_blank","bucket:bucket_water","",""}, 5)
+
+streets.workshop.register_sign(":streets:sign_construction", streets.S("Warning sign (Construction area)"), "streets_sign_construction.png", {"streets:sign_blank","default:dirt","",""}, 5)
+
+
+streets.workshop.register_sign(":streets:sign_mine", streets.S("Notice sign (Public Mine Ahead)"), "streets_sign_mine.png", {"streets:sign_blank","default:dirt","",""}, 5)
+
+streets.workshop.register_sign(":streets:sign_shop", streets.S("Notice sign (Shop/Mall Ahead)"), "streets_sign_shop.png", {"streets:sign_blank","default:dirt","",""}, 5)
+
+streets.workshop.register_sign(":streets:sign_workshop", streets.S("Notice sign (Public Workshop Ahead)"), "streets_sign_workshop.png", {"streets:sign_blank","default:dirt","",""}, 5)
+
+streets.workshop.register_sign(":streets:sign_grasswalk", streets.S("Warning sign (No walking on the grass)"), "streets_sign_grasswalk.png", {"streets:sign_blank","default:dirt","",""}, 5)
diff --git a/streets/roadsigns/workshop.lua b/streets/roadsigns/workshop.lua
new file mode 100644
index 0000000..c11b167
--- /dev/null
+++ b/streets/roadsigns/workshop.lua
@@ -0,0 +1,158 @@
+--[[
+ StreetsMod: Create signs in the signworkshop
+]]
+local forms = {
+ inactive = {
+ "size[12,10]",
+ "label[3.5,0;"..streets.S("Sign workshop - Create signs for your roads!").."]",
+ "label[0,0.5;"..streets.S("Available signs:").."]",
+ "list[context;streets:signworkshop_list;0,1;5,4]",
+ "label[9,0.5;"..streets.S("Needed stuff:").."]",
+ "list[context;streets:signworkshop_recipe;8,1;4,1]",
+ "label[9,2;"..streets.S("Put it here:").."]",
+ "list[context;streets:signworkshop_input;8,3;4,1]",
+ "button[8,4;2,1;streets:signworkshop_send;"..streets.S("Start!").."]",
+ "label[5.8,0.5;"..streets.S("Selected:").."]",
+ "list[context;streets:signworkshop_select;6,1;1,1]",
+ "label[5.8,2.5;"..streets.S("Output:").."]",
+ "list[context;streets:signworkshop_output;6,3;1,1]",
+ "list[current_player;main;2,6;8,1]",
+ "list[current_player;main;2,7.25;8,3;8]",
+ default.gui_bg,
+ default.gui_bg_img,
+ default.gui_slots,
+ default.get_hotbar_bg(2, 6)
+ },
+ active = {
+ "size[12,10]",
+ "label[3.5,0;"..streets.S("Sign workshop - Create signs for your roads!").."]",
+ "label[0,0.5;"..streets.S("Available signs:").."]",
+ "list[context;streets:signworkshop_list;0,1;5,4]",
+ "label[9,0.5;"..streets.S("Needed stuff:").."]",
+ "list[context;streets:signworkshop_recipe;8,1;4,1]",
+ "label[9,2;"..streets.S("Put it here:").."]",
+ "list[context;streets:signworkshop_input;8,3;4,1]",
+ "label[5.8,0.5;"..streets.S("Selected:").."]",
+ "list[context;streets:signworkshop_select;6,1;1,1]",
+ "label[5.8,2.5;"..streets.S("Output:").."]",
+ "list[context;streets:signworkshop_output;6,3;1,1]",
+ "list[current_player;main;2,6;8,1]",
+ "list[current_player;main;2,7.25;8,3;8]",
+ default.gui_bg,
+ default.gui_bg_img,
+ default.gui_slots,
+ default.get_hotbar_bg(2, 6),
+ --
+ }
+}
+
+streets.workshop.signs = {}
+minetest.after(0, function()
+ for k, v in pairs(minetest.registered_nodes) do
+ if v.streets and v.streets.signworkshop then
+ table.insert(streets.workshop.signs, k)
+ end
+ end
+end)
+
+minetest.register_node(":streets:signworkshop",{
+ description = streets.S("Sign workshop"),
+ tiles = {"streets_signworkshop_top.png","streets_signworkshop_bottom.png","streets_signworkshop_side.png","streets_signworkshop_side.png","streets_signworkshop_side.png","streets_signworkshop_front.png"},
+ groups = {cracky = 1, level = 2},
+ paramtype2 = "facedir",
+ after_place_node = function(pos)
+ minetest.get_meta(pos):set_string("formspec",table.concat(forms.inactive))
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ inv:set_size("streets:signworkshop_list",5*4)
+ inv:set_size("streets:signworkshop_recipe",3*2)
+ inv:set_size("streets:signworkshop_input",4*1)
+ inv:set_size("streets:signworkshop_select",1*1)
+ inv:set_size("streets:signworkshop_output",1*1)
+ -- Fill
+ for k, v in pairs(streets.workshop.signs) do
+ inv:add_item("streets:signworkshop_list", v)
+ end
+ -- Meta
+ meta:set_string("infotext",streets.S("Sign workshop idle"))
+ meta:set_string("idle","y")
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ if listname ~= "streets:signworkshop_input" then
+ return 0
+ else
+ return 1
+ end
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ -- Move items inside input slots
+ if to_list == "streets:signworkshop_input" and from_list == "streets:signworkshop_input" then
+ return 1
+ -- List -> selection
+ elseif from_list == "streets:signworkshop_list" and to_list == "streets:signworkshop_select" then
+ local inv = minetest.get_meta(pos):get_inventory()
+ local selected = inv:get_stack("streets:signworkshop_list",from_index):to_table()
+ local need = minetest.registered_nodes[selected.name].streets.signworkshop.recipe
+ inv:set_list("streets:signworkshop_recipe",{need[1],need[2],need[3],need[4]})
+ return 1
+ -- selection -> list
+ elseif from_list == "streets:signworkshop_select" and to_list == "streets:signworkshop_list" then
+ local inv = minetest.get_meta(pos):get_inventory()
+ inv:set_list("streets:signworkshop_recipe",{"","","",""})
+ return 1
+ -- Every other case
+ else
+ return 0
+ end
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ if listname == "streets:signworkshop_input" or listname == "streets:signworkshop_output" then
+ return 99
+ else
+ return 0
+ end
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ --
+ if inv:is_empty("streets:signworkshop_input") ~= true and inv:is_empty("streets:signworkshop_select") ~= true and meta:get_string("idle") == "y" then
+ local selection = inv:get_stack("streets:signworkshop_select",1):get_name()
+ local def = minetest.registered_nodes[selection].streets.signworkshop
+ local need = inv:get_list("streets:signworkshop_recipe")
+ local has = inv:get_list("streets:signworkshop_input")
+ for k, v in pairs(need) do
+ need[k] = need[k]:to_table()
+ if need[k] == nil then need[k] = { name = "" } end
+ end
+ for k, v in pairs(has) do
+ has[k] = has[k]:to_table()
+ if has[k] == nil then has[k] = { name = "" } end
+ end
+ if need[1].name == has[1].name and need[2].name == has[2].name and need[3].name == has[3].name and need[4].name == has[4].name then
+ meta:set_string("infotext",streets.S("Sign workshop working"))
+ meta:set_string("idle","n")
+ meta:set_string("formspec",table.concat(forms.active) .. "label[8,4;"..streets.S("Please wait %s seconds..."):format(def.time).."]")
+ -- Clear input
+ inv:set_list("streets:signworkshop_input",{"","","",""})
+ minetest.after(def.time,function()
+ -- Reset infotext and meta
+ meta:set_string("infotext",streets.S("Sign workshop idle"))
+ meta:set_string("idle","y")
+ meta:set_string("formspec",table.concat(forms.inactive))
+ -- Fill output
+ inv:add_item("streets:signworkshop_output",selection)
+ end)
+ end
+ end
+ end
+})
+
+minetest.register_craft({
+ output = "streets:signworkshop",
+ recipe = {
+ {"default:steel_ingot","default:glass","default:steel_ingot"},
+ {"default:steel_ingot","default:diamond","default:steel_ingot"},
+ {"default:cobble","default:cobble","default:cobble"}
+ }
+})
diff --git a/streets/screenshot.png b/streets/screenshot.png
new file mode 100644
index 0000000..d9bf232
--- /dev/null
+++ b/streets/screenshot.png
Binary files differ
diff --git a/streets/steelsupport/depends.txt b/streets/steelsupport/depends.txt
new file mode 100644
index 0000000..48ef5e1
--- /dev/null
+++ b/streets/steelsupport/depends.txt
@@ -0,0 +1,2 @@
+default
+streetsmod \ No newline at end of file
diff --git a/streets/steelsupport/init.lua b/streets/steelsupport/init.lua
new file mode 100644
index 0000000..56cc084
--- /dev/null
+++ b/streets/steelsupport/init.lua
@@ -0,0 +1,20 @@
+--[[
+ StreetsMod: Steel support for hanging signs on highways etc.
+]]
+minetest.register_node(":streets:steel_support",{
+ description = streets.S("Steel support"),
+ tiles = {"streets_support.png"},
+ groups = {cracky = 1},
+ drawtype = "glasslike_framed",
+ climbable = true,
+ sunlight_propagates = true,
+ paramtype = "light",
+})
+minetest.register_craft({
+ output = "streets:steel_support 5",
+ recipe = {
+ {"default:steel_ingot","","default:steel_ingot"},
+ {"","default:steel_ingot",""},
+ {"default:steel_ingot","","default:steel_ingot"}
+ }
+}) \ No newline at end of file
diff --git a/streets/streetlamps/depends.txt b/streets/streetlamps/depends.txt
new file mode 100644
index 0000000..f507470
--- /dev/null
+++ b/streets/streetlamps/depends.txt
@@ -0,0 +1,3 @@
+default
+streetsmod
+mesecons? \ No newline at end of file
diff --git a/streets/streetlamps/init.lua b/streets/streetlamps/init.lua
new file mode 100644
index 0000000..fa99824
--- /dev/null
+++ b/streets/streetlamps/init.lua
@@ -0,0 +1,128 @@
+--[[
+ StreetsMod: Streetlamps
+]]
+--[[minetest.register_node(":streets:streetlamp_basic_controller",{
+ description = streets.S("Trafficlight"),
+ tiles = {"streets_lampcontroller_top.png","streets_lampcontroller_bottom.png","streets_lampcontroller_sides.png"},
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.5,0.5},
+ {-0.05,0.5,-0.05,0.05,1.6,0.05}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.5,0.5},
+ {-0.3,1.5,-0.3,0.3,4.5,0.3}
+ }
+ },
+ mesecons = {
+ effector = {
+ action_on = function(pos,node)
+ minetest.set_node({x = pos.x, y = pos.y + 4, z = pos.z},{name = "streets:streetlamp_basic_top_on"})
+ end,
+ action_off = function(pos,node)
+ minetest.set_node({x = pos.x, y = pos.y + 4, z = pos.z},{name = "streets:streetlamp_basic_top_off"})
+ end
+ }
+ },
+ after_dig_node = function(pos)
+ minetest.remove_node({x = pos.x, y = pos.y + 2, z = pos.z})
+ minetest.remove_node({x = pos.x, y = pos.y + 3, z = pos.z})
+ minetest.remove_node({x = pos.x, y = pos.y + 4, z = pos.z})
+ minetest.chat_send_all("!!!")
+ end
+})]]
+
+minetest.register_node(":streets:streetlamp_basic_bottom",{
+ drop = "",
+ description = streets.S("Street lamp"),
+ tiles = {"streets_lamps_basic_bottom.png"},
+ inventory_image = "streets_lamps_basi_inv.png",
+ groups = {cracky = 1},
+ paramtype = "light",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.15,-0.5,-0.15,0.15,0.4,0.15},
+ {-0.1,0.4,-0.1,0.1,0.5,0.1}
+ }
+ },
+ pointable = false,
+ after_place_node = function(pos,placer,itemstack)
+ minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "streets:streetlamp_basic_middle"})
+ minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z},{name = "streets:streetlamp_basic_top_on"})
+ -- minetest.set_node({x = pos.x, y = pos.y - 2, z = pos.z},{name = "streets:streetlamp_basic_controller"})
+ end
+})
+minetest.register_node(":streets:streetlamp_basic_middle",{
+ drop = "",
+ description = streets.S("U cheater U"),
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ tiles = {"streets_lamps_basic_middle.png"},
+ paramtype = "light",
+ drawtype = "nodebox",
+ pointable = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1,-0.5,-0.1,0.1,0.5,0.1}
+ }
+ }
+})
+--[[minetest.register_node(":streets:streetlamp_basic_top_off",{
+ drop = "",
+ description = streets.S("U cheater U"),
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ paramtype = "light",
+ drawtype = "nodebox",
+ pointable = false,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1,-0.5,-0.1,0.1,-0.4,0.1},
+ {-0.3,-0.4,-0.3,0.3,0.5,0.3}
+ }
+ }
+})]]
+minetest.register_node(":streets:streetlamp_basic_top_on",{
+ drop = "streets:streetlamp_basic_bottom",
+ description = streets.S("U cheater U"),
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ tiles = {"streets_lamps_basic_top_top.png","streets_lamps_basic_top_top.png","streets_lamps_basic_top.png","streets_lamps_basic_top.png","streets_lamps_basic_top.png","streets_lamps_basic_top.png"},
+ paramtype = "light",
+ drawtype = "nodebox",
+ light_source = 10,
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1,-0.5,-0.1,0.1,-0.4,0.1},
+ {-0.3,-0.4,-0.3,0.3,0.5,0.3}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.3,0.5,-0.3,0.3,-2.5,0.3},
+ }
+ },
+ after_dig_node = function(pos)
+ minetest.remove_node({x = pos.x, y = pos.y - 1, z = pos.z})
+ minetest.remove_node({x = pos.x, y = pos.y - 2, z = pos.z})
+ end
+})
+
+minetest.register_craft({
+ output = "streets:streetlamp_basic_bottom",
+ recipe = {
+ {"default:glass","default:torch","default:glass"},
+ {"","streets:bigpole",""},
+ {"","streets:bigpole",""}
+ }
+})
diff --git a/streets/streetsawards/depends.txt b/streets/streetsawards/depends.txt
new file mode 100644
index 0000000..42d368b
--- /dev/null
+++ b/streets/streetsawards/depends.txt
@@ -0,0 +1,2 @@
+streetsmod
+awards? \ No newline at end of file
diff --git a/streets/streetsawards/init.lua b/streets/streetsawards/init.lua
new file mode 100644
index 0000000..fedc768
--- /dev/null
+++ b/streets/streetsawards/init.lua
@@ -0,0 +1,22 @@
+if streets.extendedBy.awards == true then
+ awards.register_achievement("award_countryroads",{
+ title = "Roadbuilder",
+ description = "You built some quite big roads!",
+ icon = "novicebuilder.png",
+ trigger = {
+ type = "place",
+ node = "streets:asphalt",
+ target = 175,
+ },
+ })
+ awards.register_achievement("award_underworld",{
+ title = "Start your sewers!",
+ description = "You placed your first manhole! Did you know that you can open it with a right-click?",
+ icon = "novicebuilder.png",
+ trigger = {
+ type = "place",
+ node = "streets:manhole_adv_closed",
+ target = 1,
+ },
+ })
+end \ No newline at end of file
diff --git a/streets/streetsconcrete/depends.txt b/streets/streetsconcrete/depends.txt
new file mode 100644
index 0000000..48ef5e1
--- /dev/null
+++ b/streets/streetsconcrete/depends.txt
@@ -0,0 +1,2 @@
+default
+streetsmod \ No newline at end of file
diff --git a/streets/streetsconcrete/init.lua b/streets/streetsconcrete/init.lua
new file mode 100644
index 0000000..cb29ee9
--- /dev/null
+++ b/streets/streetsconcrete/init.lua
@@ -0,0 +1,156 @@
+--[[
+ StreetsMod: Concrete, Concrete wall (flat), Concrete wall (full)
+]]
+if streets.extendedBy.technic == true then
+ minetest.register_alias("streets:concrete","technic:concrete")
+ -- Use technic's concrete block for the seperating wall
+ minetest.register_node(":streets:concrete_wall",{
+ description = streets.S("Concrete wall"),
+ tiles = {"technic_concrete_block.png"},
+ groups = {cracky=2},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4, -0.5, -0.5, 0.4, -0.4, 0.5},
+ {-0.1, -0.4, -0.5, 0.1, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:concrete_wall 3",
+ recipe = {
+ {"","technic:concrete",""},
+ {"","technic:concrete",""},
+ {"technic:concrete","technic:concrete","technic:concrete"}
+ }
+ })
+ minetest.register_node(":streets:concrete_wall_flat",{
+ description = streets.S("Concrete wall"),
+ tiles = {"technic_concrete_block.png"},
+ groups = {cracky=2},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1, -0.5, -0.5, 0.1, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:concrete_wall_flat 3",
+ recipe = {
+ {"","technic:concrete",""},
+ {"","technic:concrete",""},
+ {"","",""}
+ }
+ })
+elseif streets.extendedBy.prefab then
+ minetest.register_alias("streets:concrete","prefab:concrete")
+ minetest.register_node(":streets:concrete_wall",{
+ description = streets.S("Concrete wall"),
+ tiles = {"prefab_concrete.png"},
+ groups = {cracky=2},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4, -0.5, -0.5, 0.4, -0.4, 0.5},
+ {-0.1, -0.4, -0.5, 0.1, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:concrete_wall 3",
+ recipe = {
+ {"","streets:concrete",""},
+ {"","streets:concrete",""},
+ {"streets:concrete","streets:concrete","streets:concrete"}
+ }
+ })
+ minetest.register_node(":streets:concrete_wall_flat",{
+ description = streets.S("Concrete wall"),
+ tiles = {"prefab_concrete.png"},
+ groups = {cracky=2},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1, -0.5, -0.5, 0.1, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:concrete_wall_flat 3",
+ recipe = {
+ {"","streets:concrete",""},
+ {"","streets:concrete",""},
+ {"","",""}
+ }
+ })
+else
+ -- Register concrete block with streets' texture and then the seperating wall
+ minetest.register_node(":streets:concrete",{
+ description = streets.S("Concrete"),
+ tiles = {"streets_concrete.png"},
+ groups = {cracky=2}
+ })
+ minetest.register_node(":streets:concrete_wall",{
+ description = streets.S("Concrete wall"),
+ tiles = {"streets_concrete.png"},
+ groups = {cracky=2},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.4, -0.5, -0.5, 0.4, -0.4, 0.5},
+ {-0.1, -0.4, -0.5, 0.1, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:concrete_wall 3",
+ recipe = {
+ {"","streets:concrete",""},
+ {"","streets:concrete",""},
+ {"streets:concrete","streets:concrete","streets:concrete"}
+ }
+ })
+ minetest.register_node(":streets:concrete_wall_flat",{
+ description = streets.S("Concrete wall"),
+ tiles = {"streets_concrete.png"},
+ groups = {cracky=2},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1, -0.5, -0.5, 0.1, 0.5, 0.5}
+ }
+ }
+ })
+ minetest.register_craft({
+ output = "streets:concrete_wall_flat 3",
+ recipe = {
+ {"","streets:concrete",""},
+ {"","streets:concrete",""},
+ {"","",""}
+ }
+ })
+ minetest.register_craft({
+ type = "shapeless",
+ output = "streets:concrete",
+ recipe = {"default:stone"}
+ })
+end
diff --git a/streets/streetshotfix/depends.txt b/streets/streetshotfix/depends.txt
new file mode 100644
index 0000000..421a27d
--- /dev/null
+++ b/streets/streetshotfix/depends.txt
@@ -0,0 +1 @@
+streetsmod \ No newline at end of file
diff --git a/streets/streetshotfix/init.lua b/streets/streetshotfix/init.lua
new file mode 100644
index 0000000..d9511c2
--- /dev/null
+++ b/streets/streetshotfix/init.lua
@@ -0,0 +1,9 @@
+--[[
+ StreetsMod Hotfixes in order of creation, signed with date
+]]
+-- Hotfix #1; April 14, 2014; https://github.com/webdesigner97/streets/issues/11
+minetest.register_alias("stairs:stair_asphalt","streets:stair_asphalt")
+
+-- Hotfix #2; June 27, 2014; https://github.com/webdesigner97/streets/issues/25
+minetest.register_alias("streets:asphalt_stair","streets:stair_asphalt")
+minetest.register_alias("streets:asphalt_slab","streets:slab_asphalt") \ No newline at end of file
diff --git a/streets/streetsmod/depends.txt b/streets/streetsmod/depends.txt
new file mode 100644
index 0000000..e61e529
--- /dev/null
+++ b/streets/streetsmod/depends.txt
@@ -0,0 +1,3 @@
+default
+intllib?
+smartfs?
diff --git a/streets/streetsmod/forms.lua b/streets/streetsmod/forms.lua
new file mode 100644
index 0000000..c636c85
--- /dev/null
+++ b/streets/streetsmod/forms.lua
@@ -0,0 +1,4 @@
+-- Form for chatcommand /streets
+ streets.forms.chatcmd = smartfs.create("streets:chatcmd", function(state)
+ state:load(streets.modpath .. "/forms/cmd_streets.smartfs")
+ end) \ No newline at end of file
diff --git a/streets/streetsmod/forms/cmd_streets.smartfs b/streets/streetsmod/forms/cmd_streets.smartfs
new file mode 100644
index 0000000..3dbd29c
--- /dev/null
+++ b/streets/streetsmod/forms/cmd_streets.smartfs
@@ -0,0 +1 @@
+return { ["ele"] = { ["streets:chatcmd_version"] = { ["type"] = "label", ["pos"] = { ["y"] = 1, ["x"] = 6.5 }, ["name"] = "streets:chatcmd_version", ["value"] = "Running version: 1.4.4dev" }, ["streets:chatcmd_guibg"] = { ["type"] = "code", ["name"] = "streets:chatcmd_guibg", ["code"] = "bgcolor[#080808BB;true]background[5,5;1,1;gui_formbg.png;true]" }, ["streets:chatcmd_modlist"] = { ["pos"] = { ["y"] = 1, ["x"] = 0 }, ["size"] = { ["h"] = 5, ["w"] = 6 }, ["type"] = "list", ["name"] = "streets:chatcmd_modlist", ["items"] = { "digilines installed: false", "mesecons installed: false", "moreblocks installed: false", "wool installed: true", "technic installed: false", "prefab installed: false", "awards installed: false" } } }, ["size"] = { ["h"] = 6, ["w"] = 10 } } \ No newline at end of file
diff --git a/streets/streetsmod/init.lua b/streets/streetsmod/init.lua
new file mode 100644
index 0000000..c9b78b6
--- /dev/null
+++ b/streets/streetsmod/init.lua
@@ -0,0 +1,89 @@
+--[[
+ StreetsMod 1.5 by webdesigner97:
+ License : CC-BY-SA 3.0 Unported (see license.txt)
+ Readme : see readme.txt
+ Forum : http://bit.ly/12cPMeo
+ Depends : default
+]]
+streets = {}
+
+-- Kaeza intllib
+ -- Boilerplate to support localized strings if intllib mod is installed.
+ if minetest.get_modpath("intllib") then
+ streets.S = intllib.Getter()
+ else
+ streets.S = function(s) return s end
+ end
+
+-- Create variable and tables
+ print("Streets: " .. streets.S("Creating variables and tables..."))
+ streets.version = "1.5"
+ streets.modpath = minetest.get_modpath("streetsmod")
+ streets.extendedBy = {}
+ streets.load = {
+ start = os.clock(),
+ fin = 0
+ }
+ streets.forms = {}
+
+-- rubenwardy: smartfs
+ if not minetest.get_modpath("smartfs") then
+ dofile(streets.modpath .. "/libs/smartfs/smartfs.lua")
+ end
+
+-- Load forms
+ dofile(streets.modpath .. "/forms.lua")
+
+-- Check for mods which change this mod's beahaviour
+ print("Streets: " .. streets.S("Checking installed mods..."))
+ if minetest.get_modpath("wool") then
+ streets.extendedBy.wool = true
+ else
+ streets.extendedBy.wool = false
+ end
+ if minetest.get_modpath("technic") then
+ streets.extendedBy.technic = true
+ else
+ streets.extendedBy.technic = false
+ end
+ if minetest.get_modpath("moreblocks") then
+ streets.extendedBy.moreblocks = true
+ else
+ streets.extendedBy.moreblocks = false
+ end
+ if minetest.get_modpath("mesecons") then
+ streets.extendedBy.mesecons = true
+ else
+ streets.extendedBy.mesecons = false
+ end
+ if minetest.get_modpath("digilines") then
+ streets.extendedBy.digilines = true
+ else
+ streets.extendedBy.digilines = false
+ end
+ if minetest.get_modpath("prefab") then
+ streets.extendedBy.prefab = true
+ else
+ streets.extendedBy.prefab = false
+ end
+ if minetest.get_modpath("awards") then
+ streets.extendedBy.awards = true
+ else
+ streets.extendedBy.awards = false
+ end
+
+-- Streets chatcommand
+ local function round(num, idp)
+ local mult = 10^(idp or 0)
+ return math.floor(num * mult + 0.5) / mult
+ end
+ minetest.register_chatcommand("streets",{
+ description = streets.S("Check version of your installed StreetsMod and find information"),
+ func = function(name,param)
+ streets.forms.chatcmd:show(name);
+ end
+ })
+
+-- Done
+ print("Streets: " .. streets.S("Setup completed, have fun with StreetsMod") .. " " .. streets.version .. "!")
+ streets.load.fin = os.clock()
diff --git a/streets/streetsmod/libs/smartfs/README.md b/streets/streetsmod/libs/smartfs/README.md
new file mode 100644
index 0000000..df0e166
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/README.md
@@ -0,0 +1,88 @@
+smartfs
+=======
+
+This mod provides a 2nd generation way of creating forms - this means that the modder does not need to worry about complex formspec strings
+
+* Expandable: you can register your own elements to use on the form.
+* Easy event handling: use binding to handle events.
+* New elements: Includes a toggle button
+
+License: WTFPL
+To install this library, place the smartfs.lua file in your mod and then include it (dofile).
+There is an init.lua file in the download that shows you how to do this.
+
+#Using Smart Formspec
+Smartfs provides 2nd generation Minetest forms to replace clunky formspec strings. Each smartfs form is a container filled with GUI elements. A number of default elements are included with smartfs, but modders can also define their own custom elements. This document describes the basic usage of the smartfs API.
+
+##Installation
+Smartfs can be used as a library or a mod.
+
+To use smartfs as a library, copy the smartfs.lua file to your mod folder and add
+ dofile(minetest.get\_modpath(minetest.get\_current\_modname()).."/smartfs.lua")
+to the top of any files that use it.
+
+To use smartfs as a mod, add it to your game's mods folder or to the user mods folder and enable it.
+
+## Creating and showing forms
+A form is a rectangular area of the screen upon which all elements are placed. Use the smartfs.create() function to create a new form. This function takes two arguments and returns a form object.
+
+The first argument is a unique string that identifies the form. The second argument is a function that should take a single argument called state which is used to set form properties like size and background color. State also has constructors for all form elements and can be used with state:element_name. Below is a quick example.
+
+ myform = smartfs.create("My Form",function(state)
+ --sets the form's size
+ -- (width, hieght)
+ state:size(5,5)
+
+ --creates a label and places it on the form
+ --(x-pos, y-pos, name, text)
+ state:label(3,3,"label1", "A label!")
+ end)
+
+Forms can be shown to the player by using the show(target) function. The target argument is the name of the player that will see the form.
+
+ myform:show("singleplayer")
+
+Here is a list of steps the library takes.
+* You create a new form using smartfs.create().
+* The form is registered and stored for later use.
+* You show a form to a player using the myform:show()
+* The state is created and stored.
+* The function in smartfs.create runs and creates the elements.
+* The form is displayed to the player.
+
+## Modifying Elements
+Elements have functions of the form element:function(args) where you need to have access to the element object.
+
+You can get the element object by assigning a variable to its creation function like so:
+
+ local button1 = state:button(0,0, 1,4, "btn1", "A button")
+ --button1 is now a table representing the button
+
+You can also get the element by using state:get(name). The example below will retrieve a button with the name "btn1":
+
+ button1 = state:get("btn1")
+ --or
+ state:get("btn1"):onClick(your\_onclick\_function
+
+Both of these methods should be used inside the form creation callback function, the function you pass to smartfs.create, or in event callbacks.
+
+Now that you have located your element you can modify it.
+
+ button1:setPos(4,0)
+
+## Inventory Support
+Smartfs supports adding a button to Inventory+ or Unified Inventory which will open one of your own custom forms. Use the smartfs.add\_to\_inventory(form, icon, title) function where form is the smartfs form linked to by the button, icon is the button image (only for unified inventory), and title is the button text (only for inventory+).
+
+ smartfs.add_to_inventory(form, icon, title)
+
+## Dynamic forms
+Dynamic forms allow you to make a form without having to register it before the game finished loading.
+
+ local state = smartfs.dynamic("smartfs:dyn_form", name)
+ state:load(minetest.get_modpath("smartfs").."/example.smartfs")
+ state:get("btn"):click(function(self,state)
+ print("Button clicked!")
+ end)
+ state:show()
+
+Make sure you call state:show()
diff --git a/streets/streetsmod/libs/smartfs/api.md b/streets/streetsmod/libs/smartfs/api.md
new file mode 100644
index 0000000..69e3f47
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/api.md
@@ -0,0 +1,107 @@
+#Full API
+##Smartfs
+* smartfs( name ) - returns the form regisered with the name 'name'
+* smartfs.create( name,function ) - creates a new form and adds elements to it by running the function. Use before Minetest loads. (like minetest.register_node)
+* smartfs.element( name, data ) - creates a new element type.
+* smartfs.dynamic( formname, playername ) - creates a dynamic form. Returns state. See example.lua for example. Remember to call state:show()
+* smartfs.add\_to\_inventory(form, icon, title) - Adds a form to an installed advanced inventory. Returns true on success.
+* smartfs.inventory_mod() - Returns the name of an installed and supported inventory mod that will be used above, or null.
+* smartfs.override\_load\_checks() - Allows you to use smartfs.create after the game loads. Not recommended!
+
+##Form
+* form:show( playername [, parameters] ) - shows the form to a player. See state.param.
+* form.name - the name of the form.
+
+##State
+
+### Methods
+* state:size( width,height ) - sets the forms width and height.
+* state:get( name ) - gets an element by name.
+* state:show() - reshows the form to the player.
+* state:close() - closes the form (does not work yet, due to no MT api support).
+* state:load( filepath ) - Loads elements from a file.
+* state:save( filepath ) - Saves elements to a file.
+* state:button( x,y,w,h,name,text [, exit_on_click] ) - create a new button at x,y with name and caption (text)
+ * ^ optional: exit_on_click - set to true to exit the form when the button is clicked. ( Also see button.setClose() )
+* state:toggle( x,y,w,h,name,list ) - create a new toggle button at x,y with name and possible list of values
+* state:label( x,y,name,text ) - create a new label at x,y with name and caption (text)
+* state:field( x,y,w,h,name,label ) - create a new field at x,y with label
+ * state:pwdfield( x,y,w,h,name,label ) - create a password field
+ * state:textarea( x,y,w,h,name,label ) - create a new textarea
+* state:image( x,y,w,h,name,imagepath ) - create an image box.
+* state:inventory( x,y,w,h,name ) - create an inventory listing (use 'main' as name for the main player inventory)
+* state:checkbox( x,y,name,label,selected ) - create a check box.
+* state:element( element_type, data ) - Semi-private, create an element with type and data.
+
+### Variables
+* state.player - The name of the player.
+* state.param - The parameters supplied by form:show.
+* state.def - The form definition.
+* state.is_inv - Boolean which is true if this form is being shown as an inventory.
+
+##Button
+* element:setPosition( x,y ) - change the position
+* element:getPosition() - get the current position
+* element:setSize( w,h ) - set the size
+* element:getSize() - get the size
+* element:setText( text ) - set the caption of the button
+* element:getText() - get the caption of the button
+* element:setImage( filename ) - sets the background of the button
+* element:getImage() - get the background filename of the button
+* element:click( func(self,state) ) - specify a function to run when the button is clicked
+
+##Toggle Button
+* element:setPosition( x,y ) - change the position
+* element:getPosition() - get the current position
+* element:setSize( w,h ) - set the size
+* element:getSize() - get the size
+* element:getText() - get the text of the toggle option
+* element:setId( filename ) - sets the selected id
+* element:getId() - get the selected id
+* element:onToggle( func(self,state) ) - specify a function to run when the value if toggled
+
+##Label
+* element:setPosition( x,y ) - change the position
+* element:getPosition() - get the current position
+* element:setText( text ) - set the caption of the label
+* element:getText() - get the caption of the label
+
+##Field and Text Area
+* element:setPosition( x,y ) - change the position
+* element:getPosition() - get the current position
+* element:setSize( w,h ) - set the size
+* element:getSize() - get the size
+* element:setText( text ) - set the caption of the button
+* element:getText() - get the caption of the field
+* element:setImage( filename ) - sets the background of the field
+* element:getImage() - get the background filename of the field
+
+##List box
+* element:onClick( func(self,state,idx) ) - function to run when listbox item idx is clicked
+* element:onDoubleClick( func(self,state,idx) ) - function to run when listbox item idx is double clicked
+* element:setPosition( x,y ) - set the position
+* element:getPosition() - returns {x=x, y=y}
+* element:setSize( w,h ) - set the size
+* element:getSize() - gets the size {w=w, h=h}
+* element:addItem( item ) - appends and item
+* element:removeItem( idx ) - remove item
+* element:popItem() - removes last item and returns
+
+##Inventory listing
+* element:setPosition( x,y ) - set the position
+* element:getPosition() - returns {x=x, y=y}
+* element:setSize( w,h ) - set the size
+* element:getSize() - gets the size {w=w, h=h}
+* element:setLocation( location ) - set a custom inventory location or nil for the default (current_player)
+ * element:usePosition( position ) - use a node metadata attached inventory of the node at the given positon
+ * element:useDetached( name ) - use a detached inventory with the given name
+ * element:usePlayer( name ) - use a player inventory other than the current player
+* element:getLocation() - returns the inventory location (default: current_player)
+* element:setIndex( index ) - set the inventory starting index
+* element:getIndex() - returns the inventory starting index
+
+##Custom Code
+* element:onSubmit( func(self) ) - on form submit
+* element:onBuild( func(self) ) - run every time form is shown. You can set code from here
+* element:setCode( code ) - set the formspec code
+* element:getCode( code ) - get the formspec code
diff --git a/streets/streetsmod/libs/smartfs/depends.txt b/streets/streetsmod/libs/smartfs/depends.txt
new file mode 100644
index 0000000..4893cdc
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/depends.txt
@@ -0,0 +1,2 @@
+unified_inventory?
+inventory_plus?
diff --git a/streets/streetsmod/libs/smartfs/example.lua b/streets/streetsmod/libs/smartfs/example.lua
new file mode 100644
index 0000000..935dd70
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/example.lua
@@ -0,0 +1,66 @@
+dofile(minetest.get_modpath("smartfs").."/smartfs.lua")
+
+s = smartfs.create("smartfs:form",function(state)
+ state:size(10,7)
+ state:label(2,0,"lbl","SmartFS example formspec!")
+ state:field(7,1,3,1,"txt","Textbox")
+ state:image(0,0,2,2,"img","default_stone.png")
+ state:toggle(0,2,3,1,"tg",{"plenty..","of..","custom..","elements"})
+ state:checkbox(2,1,"c","Easy code",true)
+ local res = "smartfs.create(\"smartfs:form\",function(state)\n"
+ res = res .. "\tstate:size(10,7)\n"
+ res = res .. "\tstate:label(2,0,\"lbl\",\"SmartFS example formspec!\")\n"
+ res = res .. "\tstate:field(7,1,3,1,\"txt\",\"Textbox\")\n"
+ res = res .. "\tstate:image(0,0,2,2,\"img\",\"default_stone.png\")\n"
+ res = res .. "\tstate:toggle(0,2,3,1,\"tg\",{\"plenty..\",\"of..\",\"custom..\",\"elements\"})\n"
+ res = res .. "\tstate:checkbox(2,1,\"c\",\"Easy code\",true)\n"
+ res = res .. "end)"
+ state:textarea(1,3.5,9,4,"ta","Code:"):setText(res)
+ return true
+end)
+
+l = smartfs.create("smartfs:load",function(state)
+ state:load(minetest.get_modpath("smartfs").."/example.smartfs")
+ state:get("btn"):click(function(self,state)
+ print("Button clicked!")
+ end)
+ return true
+end)
+
+smartfs.add_to_inventory(l,"icon.png","SmartFS")
+
+minetest.register_chatcommand("sfs_s", {
+ params = "",
+ description = "SmartFS test formspec 1: basics",
+ func = function(name, param)
+ s:show(name)
+ end,
+})
+minetest.register_chatcommand("sfs_l", {
+ params = "",
+ description = "SmartFS test formspec 2: loading",
+ func = function(name, param)
+ l:show(name)
+ end,
+})
+
+minetest.register_chatcommand("sfs_d", {
+ params = "",
+ description = "SmartFS test formspec 3: dynamic",
+ func = function(name, param)
+ local state = smartfs.dynamic("smartfs:dyn_form", name)
+ state:load(minetest.get_modpath("smartfs").."/example.smartfs")
+ state:get("btn"):click(function(self,state)
+ print("Button clicked!")
+ end)
+ state:show()
+ end,
+})
+
+minetest.register_chatcommand("sfs_lc", {
+ params = "",
+ description = "SmartFS test formspec 4: smartfs.create error catching",
+ func = function(name, param)
+ smartfs.create("asdinas",function() end)
+ end
+})
diff --git a/streets/streetsmod/libs/smartfs/example.smartfs b/streets/streetsmod/libs/smartfs/example.smartfs
new file mode 100644
index 0000000..cbbaabf
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/example.smartfs
@@ -0,0 +1 @@
+return { ["ele"] = { ["c"] = { ["pos"] = { ["y"] = 1, ["x"] = 1 }, ["label"] = "Check", ["value"] = true, ["type"] = "checkbox", ["name"] = "c" }, ["btn"] = { ["pos"] = { ["y"] = 2, ["x"] = 1 }, ["size"] = { ["h"] = 1, ["w"] = 1 }, ["value"] = "Button", ["type"] = "button", ["name"] = "btn" } }, ["size"] = { ["h"] = 3, ["w"] = 5 } } \ No newline at end of file
diff --git a/streets/streetsmod/libs/smartfs/init.lua b/streets/streetsmod/libs/smartfs/init.lua
new file mode 100644
index 0000000..b2aaa29
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/init.lua
@@ -0,0 +1,2 @@
+dofile(minetest.get_modpath("smartfs").."/smartfs.lua")
+--dofile(minetest.get_modpath("smartfs").."/example.lua")
diff --git a/streets/streetsmod/libs/smartfs/smartfs.lua b/streets/streetsmod/libs/smartfs/smartfs.lua
new file mode 100644
index 0000000..dfa0819
--- /dev/null
+++ b/streets/streetsmod/libs/smartfs/smartfs.lua
@@ -0,0 +1,760 @@
+---------------------------
+-- SmartFS: Smart Formspecs
+-- by Rubenwardy
+---------------------------
+
+smartfs = {
+ _fdef = {},
+ _edef = {},
+ opened = {},
+ inv = {}
+}
+
+-- the smartfs() function
+function smartfs.__call(self, name)
+ return smartfs._fdef[name]
+end
+
+-- Register forms and elements
+function smartfs.create(name,onload)
+ if smartfs._fdef[name] then
+ error("SmartFS - (Error) Form "..name.." already exists!")
+ end
+ if smartfs.loaded and not smartfs._loaded_override then
+ error("SmartFS - (Error) Forms should be declared while the game loads.")
+ end
+
+ smartfs._fdef[name] = {
+ _reg = onload,
+ name = name,
+ show = smartfs._show_
+ }
+
+ return smartfs._fdef[name]
+end
+function smartfs.override_load_checks()
+ smartfs._loaded_override = true
+end
+
+minetest.after(0, function()
+ smartfs.loaded = true
+end)
+function smartfs.dynamic(name,player)
+ if not smartfs._dynamic_warned then
+ smartfs._dynamic_warned = true
+ print("SmartFS - (Warning) On the fly forms are being used. May cause bad things to happen")
+ end
+ local state = smartfs._makeState_({name=name},player,nil,false)
+ state.show = state._show_
+ smartfs.opened[player] = state
+ return state
+end
+function smartfs.element(name,data)
+ if smartfs._edef[name] then
+ error("SmartFS - (Error) Element type "..name.." already exists!")
+ end
+ smartfs._edef[name] = data
+ return smartfs._edef[name]
+end
+
+function smartfs.inventory_mod()
+ if unified_inventory then
+ return "unified_inventory"
+ elseif inventory_plus then
+ return "inventory_plus"
+ else
+ return nil
+ end
+end
+
+function smartfs.add_to_inventory(form,icon,title)
+ if unified_inventory then
+ unified_inventory.register_button(form.name, {
+ type = "image",
+ image = icon,
+ })
+ unified_inventory.register_page(form.name, {
+ get_formspec = function(player, formspec)
+ local name = player:get_player_name()
+ local opened = smartfs._show_(form, name, nil, true)
+ return {formspec = opened:_getFS_(false)}
+ end
+ })
+ return true
+ elseif inventory_plus then
+ minetest.register_on_joinplayer(function(player)
+ inventory_plus.register_button(player, form.name, title)
+ end)
+ minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname == "" and fields[form.name] then
+ local name = player:get_player_name()
+ local opened = smartfs._show_(form, name, nil, true)
+ inventory_plus.set_inventory_formspec(player, opened:_getFS_(true))
+ end
+ end)
+ return true
+ else
+ return false
+ end
+end
+
+function smartfs._makeState_(form,player,params,is_inv)
+ return {
+ _ele = {},
+ def = form,
+ player = player,
+ param = params,
+ is_inv = is_inv,
+ get = function(self,name)
+ return self._ele[name]
+ end,
+ close = function(self)
+ self.closed = true
+ end,
+ size = function(self,w,h)
+ self._size = {w=w,h=h}
+ end,
+ _getFS_ = function(self,size)
+ local res = ""
+ if self._size and size then
+ res = "size["..self._size.w..","..self._size.h.."]"
+ end
+ for key,val in pairs(self._ele) do
+ res = res .. val:build()
+ end
+ return res
+ end,
+ _show_ = function(self)
+ if self.is_inv then
+ if unified_inventory then
+ unified_inventory.set_inventory_formspec(minetest.get_player_by_name(self.player), self.def.name)
+ elseif inventory_plus then
+ inventory_plus.set_inventory_formspec(minetest.get_player_by_name(self.player), self:_getFS_(true))
+ end
+ else
+ local res = self:_getFS_(true)
+ minetest.show_formspec(player,form.name,res)
+ end
+ end,
+ load = function(self,file)
+ local file = io.open(file, "r")
+ if file then
+ local table = minetest.deserialize(file:read("*all"))
+ if type(table) == "table" then
+ if table.size then
+ self._size = table.size
+ end
+ for key,val in pairs(table.ele) do
+ self:element(val.type,val)
+ end
+ return true
+ end
+ end
+ return false
+ end,
+ save = function(self,file)
+ local res = {ele={}}
+
+ if self._size then
+ res.size = self._size
+ end
+
+ for key,val in pairs(self._ele) do
+ res.ele[key] = val.data
+ end
+
+ local file = io.open(file, "w")
+ if file then
+ file:write(minetest.serialize(res))
+ file:close()
+ return true
+ end
+ return false
+ end,
+ button = function(self,x,y,w,h,name,text,exitf)
+ if exitf == nil then exitf = false end
+ return self:element("button",{pos={x=x,y=y},size={w=w,h=h},name=name,value=text,closes=exitf})
+ end,
+ label = function(self,x,y,name,text)
+ return self:element("label",{pos={x=x,y=y},name=name,value=text})
+ end,
+ toggle = function(self,x,y,w,h,name,list)
+ return self:element("toggle",{pos={x=x,y=y},size={w=w,h=h},name=name,id=1,list=list})
+ end,
+ field = function(self,x,y,w,h,name,label)
+ return self:element("field",{pos={x=x,y=y},size={w=w,h=h},name=name,value="",label=label})
+ end,
+ pwdfield = function(self,x,y,w,h,name,label)
+ local res = self:element("field",{pos={x=x,y=y},size={w=w,h=h},name=name,value="",label=label})
+ res:isPassword(true)
+ return res
+ end,
+ textarea = function(self,x,y,w,h,name,label)
+ local res = self:element("field",{pos={x=x,y=y},size={w=w,h=h},name=name,value="",label=label})
+ res:isMultiline(true)
+ return res
+ end,
+ image = function(self,x,y,w,h,name,img)
+ return self:element("image",{pos={x=x,y=y},size={w=w,h=h},name=name,value=img})
+ end,
+ checkbox = function(self,x,y,name,label,selected)
+ return self:element("checkbox",{pos={x=x,y=y},name=name,value=selected,label=label})
+ end,
+ listbox = function(self,x,y,w,h,name)
+ return self:element("list", { pos={x=x,y=y}, size={w=w,h=h}, name=name })
+ end,
+ inventory = function(self,x,y,w,h,name)
+ return self:element("inventory", { pos={x=x,y=y}, size={w=w,h=h}, name=name })
+ end,
+ element = function(self,typen,data)
+ local type = smartfs._edef[typen]
+
+ if not type then
+ error("Element type "..typen.." does not exist!")
+ end
+
+ if self._ele[data.name] then
+ error("Element "..data.name.." already exists")
+ end
+ data.type = typen
+
+ local ele = {
+ name = data.name,
+ root = self,
+ data = data,
+ remove = function(self)
+ self.root._ele[self.name] = nil
+ end
+ }
+
+ for key,val in pairs(type) do
+ ele[key] = val
+ end
+
+ self._ele[data.name] = ele
+
+ return self._ele[data.name]
+ end
+ }
+end
+
+-- Show a formspec to a user
+function smartfs._show_(form, player, params, is_inv)
+ local state = smartfs._makeState_(form, player, params, is_inv)
+ state.show = state._show_
+ if form._reg(state)~=false then
+ if not is_inv then
+ smartfs.opened[player] = state
+ state:_show_()
+ else
+ smartfs.inv[player] = state
+ end
+ end
+ return state
+end
+
+-- Receive fields from formspec
+local function _sfs_recieve_(state,name,fields)
+ if (fields.quit == "true") then
+ if not state.is_inv then
+ smartfs.opened[name] = nil
+ end
+ return true
+ end
+
+ for key,val in pairs(fields) do
+ if state._ele[key] then
+ state._ele[key].data.value = val
+ end
+ end
+ for key,val in pairs(state._ele) do
+ if val.submit then
+ if (val:submit(fields)==true) then
+ return true
+ end
+ end
+ end
+ if state.closed ~= true then
+ state:_show_()
+ else
+ minetest.show_formspec(name,"","size[5,1]label[0,0;Formspec closing not yet created!]")
+ if not state.is_inv then
+ smartfs.opened[name] = nil
+ end
+ end
+ return true
+end
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local name = player:get_player_name()
+ if smartfs.opened[name] and not smartfs.opened[name].is_inv then
+ if smartfs.opened[name].def.name == formname then
+ local state = smartfs.opened[name]
+ return _sfs_recieve_(state,name,fields)
+ else
+ smartfs.opened[name] = nil
+ end
+ elseif smartfs.inv[name] and smartfs.inv[name].is_inv then
+ local state = smartfs.inv[name]
+ _sfs_recieve_(state,name,fields)
+ end
+ return false
+end)
+
+
+-----------------------------------------------------------------
+------------------------- ELEMENTS ----------------------------
+-----------------------------------------------------------------
+
+smartfs.element("button",{
+ build = function(self)
+ if self.data.img then
+ return "image_button["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.data.img..
+ ";"..
+ self.name..
+ ";"..
+ self.data.value..
+ "]"
+ else
+ if self.data.closes then
+ return "button_exit["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.name..
+ ";"..
+ self.data.value..
+ "]"
+ else
+ return "button["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.name..
+ ";"..
+ self.data.value..
+ "]"
+ end
+ end
+ end,
+ submit = function(self,fields,state)
+ if fields[self.name] and self._click then
+ self:_click(self.root)
+ end
+
+ if self.data.closes then
+ return true
+ end
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ onClick = function(self,func)
+ self._click = func
+ end,
+ click = function(self,func)
+ self._click = func
+ end,
+ setText = function(self,text)
+ self.data.value = text
+ end,
+ getText = function(self)
+ return self.data.value
+ end,
+ setImage = function(self,image)
+ self.data.img = image
+ end,
+ getImage = function(self)
+ return self.data.img
+ end,
+ setClose = function(self,bool)
+ self.data.closes = bool
+ end
+})
+
+smartfs.element("toggle",{
+ build = function(self)
+ return "button["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.name..
+ ";"..
+ self.data.list[self.data.id]..
+ "]"
+ end,
+ submit = function(self,fields)
+ if fields[self.name] then
+ self.data.id = self.data.id + 1
+ if self.data.id > #self.data.list then
+ self.data.id = 1
+ end
+ if self._tog then
+ self:_tog(self.root)
+ end
+ end
+ end,
+ onToggle = function(self,func)
+ self._tog = func
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ setId = function(self,id)
+ self.data.id = id
+ end,
+ getId = function(self)
+ return self.data.id
+ end,
+ getText = function(self)
+ return self.data.list[self.data.id]
+ end
+})
+
+smartfs.element("label",{
+ build = function(self)
+ return "label["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.value..
+ "]"
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setText = function(self,text)
+ self.data.value = text
+ end,
+ getText = function(self)
+ return self.data.value
+ end
+})
+
+smartfs.element("field",{
+ build = function(self)
+ if self.data.ml then
+ return "textarea["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.name..
+ ";"..
+ self.data.label..
+ ";"..
+ self.data.value..
+ "]"
+ elseif self.data.pwd then
+ return "pwdfield["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.name..
+ ";"..
+ self.data.label..
+ "]"
+ else
+ return "field["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.name..
+ ";"..
+ self.data.label..
+ ";"..
+ self.data.value..
+ "]"
+ end
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ setText = function(self,text)
+ self.data.value = text
+ end,
+ getText = function(self)
+ return self.data.value
+ end,
+ isPassword = function(self,bool)
+ self.data.pwd = bool
+ end,
+ isMultiline = function(self,bool)
+ self.data.ml = bool
+ end
+})
+
+smartfs.element("image",{
+ build = function(self)
+ return "image["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.data.value..
+ "]"
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ setImage = function(self,text)
+ self.data.value = text
+ end,
+ getImage = function(self)
+ return self.data.value
+ end
+})
+
+smartfs.element("checkbox",{
+ build = function(self)
+ if self.data.value then
+ return "checkbox["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.name..
+ ";"..
+ self.data.label..
+ ";true]"
+ else
+ return "checkbox["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.name..
+ ";"..
+ self.data.label..
+ ";false]"
+ end
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ setText = function(self,text)
+ self.data.value = text
+ end,
+ getText = function(self)
+ return self.data.value
+ end
+})
+
+smartfs.element("list",{
+ build = function(self)
+ local listformspec = "textlist["..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ self.data.name..
+ ";"
+
+ --loop through the list's items and add them to the formspec
+ if not self.data.items then
+ self.data.items = {" "}
+ end
+ for i,value in ipairs(self.data.items) do
+ listformspec = listformspec..value..","
+ end
+ listformspec = string.sub(listformspec, 0, -2) --removes extra ,
+ --close out the list items section
+ listformspec = listformspec..";"
+
+ --TODO support selected idx and transparency
+
+ --close formspec definition and return formspec
+ listformspec = listformspec.."]"
+ return listformspec
+ end,
+ submit = function(self,fields)
+ if fields[self.name] then
+ local _type = string.sub(fields[self.data.name],1,3)
+ local index = string.sub(fields[self.data.name],5)
+ if _type == "CHG" and self._click then
+ self:_click(self.root, index)
+ elseif _type == "DCL" and self._doubleClick then
+ self:_doubleClick(self.root, index)
+ end
+ end
+ end,
+ onClick = function(self, func)
+ self._click = func
+ end,
+ click = function(self, func)
+ self._click = func
+ end,
+ onDoubleClick = function(self, func)
+ self._doubleClick = func
+ end,
+ doubleclick = function(self, func)
+ self._doubleClick = func
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ addItem = function(self, item)
+ if not self.data.items then
+ self.data.items = {" "}
+ end
+ table.insert(self.data.items, item)
+ end,
+ removeItem = function(self,idx)
+ if not self.data.items then
+ self.data.items = {" "}
+ end
+ table.remove(self.data.items,idx)
+ end,
+ popItem = function(self)
+ if not self.data.items then
+ self.data.items = {" "}
+ end
+ local item = self.data.items[#self.data.items]
+ table.remove(self.data.items)
+ return item
+ end
+})
+
+smartfs.element("inventory",{
+ build = function(self)
+ return "list["..
+ (self.data.location or "current_player") ..
+ ";"..
+ self.name..
+ ";"..
+ self.data.pos.x..","..self.data.pos.y..
+ ";"..
+ self.data.size.w..","..self.data.size.h..
+ ";"..
+ (self.data.index or "") ..
+ "]"
+ end,
+ setPosition = function(self,x,y)
+ self.data.pos = {x=x,y=y}
+ end,
+ getPosition = function(self,x,y)
+ return self.data.pos
+ end,
+ setSize = function(self,w,h)
+ self.data.size = {w=w,h=h}
+ end,
+ getSize = function(self,x,y)
+ return self.data.size
+ end,
+ -- available inventory locations
+ -- "current_player": Player to whom the menu is shown
+ -- "player:<name>": Any player
+ -- "nodemeta:<X>,<Y>,<Z>": Any node metadata
+ -- "detached:<name>": A detached inventory
+ -- "context" does not apply to smartfs, since there is no node-metadata as context available
+ setLocation = function(self,location)
+ self.data.location = location
+ end,
+ getLocation = function(self)
+ return self.data.location or "current_player"
+ end,
+ usePosition = function(self, pos)
+ self.data.location = string.format("nodemeta:%d,%d,%d", pos.x, pos.y, pos.z)
+ end,
+ usePlayer = function(self, name)
+ self.data.location = "player:" .. name
+ end,
+ useDetached = function(self, name)
+ self.data.location = "detached:" .. name
+ end,
+ setIndex = function(self,index)
+ self.data.index = index
+ end,
+ getIndex = function(self)
+ return self.data.index
+ end
+})
+
+smartfs.element("code",{
+ build = function(self)
+ if self._build then
+ self:_build()
+ end
+
+ return self.data.code
+ end,
+ submit = function(self,fields)
+ if self._sub then
+ self:_sub(fields)
+ end
+ end,
+ onSubmit = function(self,func)
+ self._sub = func
+ end,
+ onBuild = function(self,func)
+ self._build = func
+ end,
+ setCode = function(self,code)
+ self.data.code = code
+ end,
+ getCode = function(self)
+ return self.data.code
+ end
+})
diff --git a/streets/streetsmod/locale/de.txt b/streets/streetsmod/locale/de.txt
new file mode 100644
index 0000000..57694d3
--- /dev/null
+++ b/streets/streetsmod/locale/de.txt
@@ -0,0 +1,59 @@
+# Translation file GERMAN
+Setup completed, have fun with StreetsMod=Setup abgeschlossen, viel Spass mit StreetsMod
+Creating variables and tables...=Erstelle Variablen und Tabellen...
+Checking installed mods...=Ueberpruefe installierte Mods...
+Check version of your installed StreetsMod and find information=Ueberpruefe die installierte StreetsMod Version und weitere Infos
+Asphalt=Asphalt
+Asphalt stair=Asphalt Treppe
+Asphalt slab=Asphalt Platte
+Construction fence=Bauzaun
+Delineator=Leitpfosten
+Emergency Phone=Notrufsaeule
+Asphalt with sideline=Asphalt mit Seitenlinie
+Asphalt with solid line=Asphalt mit durchgezogener Linie
+Asphalt with dashed line=Asphalt mit unterbrochener Linie
+Asphalt with sideline (edge)=Asphalt mit Seitenlinie (Ecke)
+Asphalt with parking label=Asphalt mit Parkplatzsymbol
+Asphalt with arrow=Asphalt mit Richtungspfeil
+Simple manhole=Einfacher Gulli
+Advanced manhole=Gulli
+Pole=Stange
+Empty sign=Leeres Schild
+Warning sign (lava)=Gefahrenschild Lava
+Warning sign (water)=Gefahrenschild Wasser
+Warning sign (Construction area)=Gefahrenschild Baustelle
+Warning: Careful of lava=Achtung: Lava
+Warning: Water nearby=Achtung: Wasser
+Warning: Construction area, possible deep excavations=Achtung Baustelle, eventuell tiefe Graeben
+Sign workshop - Create signs for your roads!=Schilderworkshop - Baue Schilder fuer deine Strassen!
+Available signs:=Verfuegbare Schilder
+Needed stuff:=Benoetigt
+Put it here:=Rohstoffe
+Selected:=Ausgewaehlt
+Output:=Ausgabe
+Sign workshop=Schilderworkshop
+Sign workshop idle=Schilderworkshop bereit
+Sign workshop working=Schilderworkshop arbeitet
+Please wait %s seconds... = Bitte warte %s Sekunden...
+Solid line (yellow)=Durchgezogene Linie (gelb)
+Dashed line (yellow)=Unterbrochene Linie (gelb)
+Cross (yellow)=Kreuz (gelb)
+Outer edge (yellow)=Ecklinie (gelb)
+Parking (yellow)=Parkplatzsymbol (gelb)
+Arrow (yellow)=Pfeil (gelb)
+Sideline (yellow)=Seitenlinie (gelb)
+Steel support=Stahlrahmen
+Street lamp=Strassenlampe
+Concrete wall=Betonwand
+Concrete=Beton
+Trafficlight=Ampel
+Running version=Version
+Cheater=Schummler
+Cheater!=Schummler!
+Off=Aus
+Channel=Kanal
+green=Gruen
+red=Rot
+warn=Warnung
+off=Aus
+U cheater U=Du Schummler Du
diff --git a/streets/streetsmod/locale/template.txt.txt b/streets/streetsmod/locale/template.txt.txt
new file mode 100644
index 0000000..179cc7d
--- /dev/null
+++ b/streets/streetsmod/locale/template.txt.txt
@@ -0,0 +1,59 @@
+# Translation file for StreetsMod might not be up-to-date.
+Setup completed, have fun with StreetsMod=
+Creating variables and tables...=
+Checking installed mods...=
+Check version of your installed StreetsMod and find information=
+Asphalt=
+Asphalt stair=
+Asphalt slab=
+Construction fence=
+Delineator=
+Emergency Phone=
+Asphalt with sideline=
+Asphalt with solid line=
+Asphalt with dashed line=
+Asphalt with sideline (edge)=
+Asphalt with parking label=
+Asphalt with arrow=
+Simple manhole=
+Advanced manhole=
+Pole=
+Empty sign=
+Warning sign (lava)=
+Warning sign (water)=
+Warning sign (Construction area)=
+Warning: Careful of lava=
+Warning: Water nearby=
+Warning: Construction area, possible deep excavations=
+Sign workshop - Create signs for your roads!=
+Available signs:=
+Needed stuff:=
+Put it here:=
+Selected:=
+Output:=
+Sign workshop=
+Sign workshop idle=
+Sign workshop working=
+Please wait %s seconds... =
+Solid line (yellow)=
+Dashed line (yellow)=
+Cross (yellow)=
+Outer edge (yellow)=
+Parking (yellow)=
+Arrow (yellow)=
+Sideline (yellow)=
+Steel support=
+Street lamp=
+Concrete wall=
+Concrete=
+Trafficlight=
+Running version=
+Cheater=
+Cheater!=
+Off=
+Channel=
+green=
+red=
+warn=
+off=
+U cheater U=
diff --git a/streets/streetsmod/nodeboxes/trafficlight.nbe b/streets/streetsmod/nodeboxes/trafficlight.nbe
new file mode 100644
index 0000000..189f333
--- /dev/null
+++ b/streets/streetsmod/nodeboxes/trafficlight.nbe
@@ -0,0 +1,19 @@
+MINETEST NODEBOX EDITOR
+PARSER 1
+NAME test
+
+NODE node1
+POSITION 0 0 0
+NODEBOX nodebox1 -0.1875 -0.5 0.5 0.1875 0.5 0.75
+NODEBOX nodebox2 -0.0625 0.375 0.3125 0.0625 0.4375 0.5
+NODEBOX nodebox3 -0.0625 0.0625 0.3125 0.0625 0.125 0.5
+NODEBOX nodebox4 -0.0625 -0.25 0.3125 0.0625 -0.1875 0.5
+NODEBOX nodebox5 0.0625 0.3125 0.3125 0.125 0.38 0.5
+NODEBOX nodebox6 -0.125 0.3125 0.3125 -0.0625 0.375 0.5
+NODEBOX nodebox7 0.0625 0 0.3125 0.125 0.0625 0.5
+NODEBOX nodebox8 -0.125 0 0.3125 -0.0625 0.0625 0.5
+NODEBOX nodebox9 0.0625 -0.3125 0.3125 0.125 -0.25 0.5
+NODEBOX nodebox10 -0.125 -0.3125 0.3125 -0.0625 -0.25 0.5
+NODEBOX NodeBox11 -0.125 -0.125 0.85 0.125 0.125 0.75
+END NODE
+
diff --git a/streets/streetsmod/readme.txt b/streets/streetsmod/readme.txt
new file mode 100644
index 0000000..a2c9172
--- /dev/null
+++ b/streets/streetsmod/readme.txt
@@ -0,0 +1 @@
+This is the first loaded mod in this modpack which prepares tables, variables etc. \ No newline at end of file
diff --git a/streets/streetsmod/textures/streets_asphalt.png b/streets/streetsmod/textures/streets_asphalt.png
new file mode 100644
index 0000000..1841635
--- /dev/null
+++ b/streets/streetsmod/textures/streets_asphalt.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_concrete.png b/streets/streetsmod/textures/streets_concrete.png
new file mode 100644
index 0000000..89c7e78
--- /dev/null
+++ b/streets/streetsmod/textures/streets_concrete.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_delineator.png b/streets/streetsmod/textures/streets_delineator.png
new file mode 100644
index 0000000..ae69f2e
--- /dev/null
+++ b/streets/streetsmod/textures/streets_delineator.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_delineator_top.png b/streets/streetsmod/textures/streets_delineator_top.png
new file mode 100644
index 0000000..3551ffe
--- /dev/null
+++ b/streets/streetsmod/textures/streets_delineator_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_fence_bottom.png b/streets/streetsmod/textures/streets_fence_bottom.png
new file mode 100644
index 0000000..67e572f
--- /dev/null
+++ b/streets/streetsmod/textures/streets_fence_bottom.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_fence_fromtop.png b/streets/streetsmod/textures/streets_fence_fromtop.png
new file mode 100644
index 0000000..f4c0e23
--- /dev/null
+++ b/streets/streetsmod/textures/streets_fence_fromtop.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_fence_inv.png b/streets/streetsmod/textures/streets_fence_inv.png
new file mode 100644
index 0000000..0446f12
--- /dev/null
+++ b/streets/streetsmod/textures/streets_fence_inv.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_fence_top.png b/streets/streetsmod/textures/streets_fence_top.png
new file mode 100644
index 0000000..43a3613
--- /dev/null
+++ b/streets/streetsmod/textures/streets_fence_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lampcontroller_bottom.png b/streets/streetsmod/textures/streets_lampcontroller_bottom.png
new file mode 100644
index 0000000..cdd5b40
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lampcontroller_bottom.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lampcontroller_sides.png b/streets/streetsmod/textures/streets_lampcontroller_sides.png
new file mode 100644
index 0000000..39e9960
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lampcontroller_sides.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lampcontroller_top.png b/streets/streetsmod/textures/streets_lampcontroller_top.png
new file mode 100644
index 0000000..00d2e4c
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lampcontroller_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lamps_basi_inv.png b/streets/streetsmod/textures/streets_lamps_basi_inv.png
new file mode 100644
index 0000000..5c31236
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lamps_basi_inv.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lamps_basic_bottom.png b/streets/streetsmod/textures/streets_lamps_basic_bottom.png
new file mode 100644
index 0000000..07d123f
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lamps_basic_bottom.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lamps_basic_middle.png b/streets/streetsmod/textures/streets_lamps_basic_middle.png
new file mode 100644
index 0000000..1370765
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lamps_basic_middle.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lamps_basic_top.png b/streets/streetsmod/textures/streets_lamps_basic_top.png
new file mode 100644
index 0000000..355f50d
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lamps_basic_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_lamps_basic_top_top.png b/streets/streetsmod/textures/streets_lamps_basic_top_top.png
new file mode 100644
index 0000000..4d6bf22
--- /dev/null
+++ b/streets/streetsmod/textures/streets_lamps_basic_top_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_manhole.png b/streets/streetsmod/textures/streets_manhole.png
new file mode 100644
index 0000000..13dd9ce
--- /dev/null
+++ b/streets/streetsmod/textures/streets_manhole.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_manhole_advanced.png b/streets/streetsmod/textures/streets_manhole_advanced.png
new file mode 100644
index 0000000..a8f876d
--- /dev/null
+++ b/streets/streetsmod/textures/streets_manhole_advanced.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_pole.png b/streets/streetsmod/textures/streets_pole.png
new file mode 100644
index 0000000..af4a378
--- /dev/null
+++ b/streets/streetsmod/textures/streets_pole.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_pole_inv.png b/streets/streetsmod/textures/streets_pole_inv.png
new file mode 100644
index 0000000..fce2292
--- /dev/null
+++ b/streets/streetsmod/textures/streets_pole_inv.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_rw_arrow_alldirs.png b/streets/streetsmod/textures/streets_rw_arrow_alldirs.png
new file mode 100644
index 0000000..532280e
--- /dev/null
+++ b/streets/streetsmod/textures/streets_rw_arrow_alldirs.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_back.png b/streets/streetsmod/textures/streets_sign_back.png
new file mode 100644
index 0000000..77d4210
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_back.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_construction.png b/streets/streetsmod/textures/streets_sign_construction.png
new file mode 100644
index 0000000..f2c2455
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_construction.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_grasswalk.png b/streets/streetsmod/textures/streets_sign_grasswalk.png
new file mode 100644
index 0000000..1a72dff
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_grasswalk.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_lava.png b/streets/streetsmod/textures/streets_sign_lava.png
new file mode 100644
index 0000000..e80f8e2
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_lava.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_mine.png b/streets/streetsmod/textures/streets_sign_mine.png
new file mode 100644
index 0000000..92aaf97
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_mine.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_shop.png b/streets/streetsmod/textures/streets_sign_shop.png
new file mode 100644
index 0000000..b30ea8e
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_shop.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_water.png b/streets/streetsmod/textures/streets_sign_water.png
new file mode 100644
index 0000000..b941817
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_water.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sign_workshop.png b/streets/streetsmod/textures/streets_sign_workshop.png
new file mode 100644
index 0000000..3c399bc
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sign_workshop.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_signworkshop_bottom.png b/streets/streetsmod/textures/streets_signworkshop_bottom.png
new file mode 100644
index 0000000..022bb2c
--- /dev/null
+++ b/streets/streetsmod/textures/streets_signworkshop_bottom.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_signworkshop_front.png b/streets/streetsmod/textures/streets_signworkshop_front.png
new file mode 100644
index 0000000..83317b1
--- /dev/null
+++ b/streets/streetsmod/textures/streets_signworkshop_front.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_signworkshop_side.png b/streets/streetsmod/textures/streets_signworkshop_side.png
new file mode 100644
index 0000000..509a3e3
--- /dev/null
+++ b/streets/streetsmod/textures/streets_signworkshop_side.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_signworkshop_top.png b/streets/streetsmod/textures/streets_signworkshop_top.png
new file mode 100644
index 0000000..07f4f06
--- /dev/null
+++ b/streets/streetsmod/textures/streets_signworkshop_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sos_bottom.png b/streets/streetsmod/textures/streets_sos_bottom.png
new file mode 100644
index 0000000..0437ef1
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sos_bottom.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sos_front.png b/streets/streetsmod/textures/streets_sos_front.png
new file mode 100644
index 0000000..ea524dd
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sos_front.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sos_side.png b/streets/streetsmod/textures/streets_sos_side.png
new file mode 100644
index 0000000..af83757
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sos_side.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_sos_top.png b/streets/streetsmod/textures/streets_sos_top.png
new file mode 100644
index 0000000..4683430
--- /dev/null
+++ b/streets/streetsmod/textures/streets_sos_top.png
Binary files differ
diff --git a/streets/streetsmod/textures/streets_support.png b/streets/streetsmod/textures/streets_support.png
new file mode 100644
index 0000000..610a38a
--- /dev/null
+++ b/streets/streetsmod/textures/streets_support.png
Binary files differ
diff --git a/streets/streetspoles/depends.txt b/streets/streetspoles/depends.txt
new file mode 100644
index 0000000..421a27d
--- /dev/null
+++ b/streets/streetspoles/depends.txt
@@ -0,0 +1 @@
+streetsmod \ No newline at end of file
diff --git a/streets/streetspoles/init.lua b/streets/streetspoles/init.lua
new file mode 100644
index 0000000..fe24bf4
--- /dev/null
+++ b/streets/streetspoles/init.lua
@@ -0,0 +1,191 @@
+--[[
+ StreetsMod: Poles
+]]
+
+-- Simple pole
+minetest.register_node(":streets:pole_bottom",{
+ description = streets.S("Pole"),
+ tiles = {"streets_pole.png"},
+ groups = {cracky=2},
+ inventory_image = "streets_pole_inv.png",
+ wield_image = "streets_pole_inv.png",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1,-0.5,-0.5,0.1,0.5,-0.4},
+ {-0.125,-0.5,-0.525,0.125,-0.3,-0.375}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1,-0.5,-0.5,0.1,0.5,-0.4}
+ }
+ },
+ after_place_node = function(pos,placer,itemstack)
+ pos.y = pos.y +1
+ if minetest.get_node(pos).name == "air" then
+ minetest.add_node(pos,{name = "streets:pole_top", param2 = minetest.dir_to_facedir(placer:get_look_dir())})
+ else
+ minetest.chat_send_player(placer:get_player_name(),"Not enough free space! A pole has a height of 2 blocks!")
+ pos.y = pos.y -1
+ minetest.remove_node(pos)
+ end
+ end,
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ pos.y = pos.y +1
+ if minetest.get_node(pos).name == "streets:pole_top" then
+ minetest.remove_node(pos)
+ end
+ end
+})
+
+minetest.register_node(":streets:pole_top",{
+ description = streets.S("Y u no play minetest without cheating?"),
+ tiles = {"streets_pole.png"},
+ groups = {not_in_creative_inventory=1,cracky=2},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ drop = "",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.1,-0.5,-0.5,0.1,0.5,-0.4}
+ }
+ }
+})
+
+minetest.register_craft({
+ output = "streets:pole_bottom 3",
+ recipe = {
+ {"","default:steel_ingot",""},
+ {"","default:steel_ingot",""},
+ {"","default:steel_ingot",""}
+ }
+})
+
+-- Big pole
+
+minetest.register_node(":streets:bigpole", {
+ description = "Pole",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ tiles = {"streets_pole.png"},
+ sunlight_propagates = true,
+ groups = {cracky = 1, level = 2, bigpole = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}
+ }
+ },
+ on_place = minetest.rotate_node,
+ digiline = {
+ wire = {
+ rules = {
+ {x= 0, y= 0, z=-1},
+ {x= 0, y= 0, z= 1},
+ {x= 1, y= 0, z= 0},
+ {x=-1, y= 0, z= 0},
+ {x= 0, y=-1, z= 0},
+ {x= 0, y= 1, z= 0},
+ {x= 0, y=-2, z= 0}
+ }
+ }
+ }
+})
+minetest.register_node(":streets:bigpole_edge", {
+ description = "Pole",
+ drop = "streets:bigpole",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ tiles = {"streets_pole.png"},
+ sunlight_propagates = true,
+ groups = {cracky = 1, level = 2, bigpole = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.15,-0.5,-0.15,0.15,0.15,0.15},
+ {-0.15,-0.15,-0.15,0.15,0.15,-0.5}
+ }
+ },
+ digiline = {
+ wire = {
+ rules = {
+ {x= 0, y= 0, z=-1},
+ {x= 0, y= 0, z= 1},
+ {x= 1, y= 0, z= 0},
+ {x=-1, y= 0, z= 0},
+ {x= 0, y=-1, z= 0},
+ {x= 0, y= 1, z= 0},
+ }
+ }
+ }
+})
+minetest.register_node(":streets:bigpole_tjunction", {
+ description = "Pole",
+ drop = "streets:bigpole",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ drawtype = "nodebox",
+ tiles = {"streets_pole.png"},
+ sunlight_propagates = true,
+ groups = {cracky = 1, level = 2, bigpole = 1},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.15, -0.5, -0.15, 0.15, 0.15, 0.15},
+ {-0.15, -0.15, -0.5, 0.15, 0.15, 0.5}
+ }
+ },
+ digiline = {
+ wire = {
+ rules = {
+ {x= 0, y= 0, z=-1},
+ {x= 0, y= 0, z= 1},
+ {x= 1, y= 0, z= 0},
+ {x=-1, y= 0, z= 0},
+ {x= 0, y=-1, z= 0},
+ {x= 0, y= 1, z= 0},
+ }
+ }
+ }
+})
+minetest.register_craft({
+ output = "streets:bigpole 3",
+ recipe = {
+ {"","",""},
+ {"","default:steel_ingot",""},
+ {"","default:steel_ingot",""}
+ }
+})
+minetest.register_craft({
+ output = "streets:bigpole_edge 3",
+ recipe = {
+ {"","",""},
+ {"streets:bigpole","streets:bigpole",""},
+ {"streets:bigpole","",""}
+ }
+})
+minetest.register_craft({
+ output = "streets:bigpole_edge 3",
+ recipe = {
+ {"","",""},
+ {"streets:bigpole","streets:bigpole",""},
+ {"","streets:bigpole",""}
+ }
+})
+minetest.register_craft({
+ output = "streets:bigpole_tjunction 2",
+ recipe = {
+ {"","",""},
+ {"streets:bigpole_edge","streets:bigpole",""},
+ {"","",""}
+ }
+})
diff --git a/streets/trafficlight/depends.txt b/streets/trafficlight/depends.txt
new file mode 100644
index 0000000..8d7b8d8
--- /dev/null
+++ b/streets/trafficlight/depends.txt
@@ -0,0 +1,4 @@
+default
+streetsmod
+digilines?
+mesecons? \ No newline at end of file
diff --git a/streets/trafficlight/init.lua b/streets/trafficlight/init.lua
new file mode 100644
index 0000000..38b18c4
--- /dev/null
+++ b/streets/trafficlight/init.lua
@@ -0,0 +1,367 @@
+--[[
+ StreetsMod: inDev Trafficlights
+]]
+dofile(streets.modpath .. "/../trafficlight/old2new.lua")
+
+streets.tlBox = {
+ --[[ Thank you, rubenwardy, for your awesome NodeboxEditor! Not perfect, but still great! ]]
+ {-0.1875,-0.5,0.5,0.1875,0.5,0.75}, --nodebox1
+ {-0.0625,0.375,0.3125,0.0625,0.4375,0.5}, --nodebox2
+ {-0.0625,0.0625,0.3125,0.0625,0.125,0.5}, --nodebox3
+ {-0.0625,-0.25,0.3125,0.0625,-0.1875,0.5}, --nodebox4
+ {0.0625,0.3125,0.3125,0.125,0.38,0.5}, --nodebox5
+ {-0.125,0.3125,0.3125,-0.0625,0.375,0.5}, --nodebox6
+ {0.0625,0,0.3125,0.125,0.0625,0.5}, --nodebox7
+ {-0.125,0,0.3125,-0.0625,0.0625,0.5}, --nodebox8
+ {0.0625,-0.3125,0.3125,0.125,-0.25,0.5}, --nodebox9
+ {-0.125,-0.3125,0.3125,-0.0625,-0.25,0.5}, --nodebox10
+ {-0.125, -0.125, 0.85, 0.125, 0.125, 0.75}, -- NodeBox11
+}
+
+streets.tlRhythm = {
+ toRed = {
+ {name = "streets:trafficlight_top_yellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_red", pauseBefore = 3}
+ },
+ toGreen = {
+ {name = "streets:trafficlight_top_green", pauseBefore = 0}
+ },
+ toOff = {
+ {name = "streets:trafficlight_top_off", pauseBefore = 0}
+ },
+ toWarn = {
+ {name = "streets:trafficlight_top_warn", pauseBefore = 0}
+ },
+ toFlashRed = {
+ {name = "streets:trafficlight_top_flashred", pauseBefore = 0}
+ }
+}
+
+streets.tlRhythm_left = {
+ toRed = {
+ {name = "streets:trafficlight_top_left_yellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_left_red", pauseBefore = 3}
+ },
+ toGreen = {
+ {name = "streets:trafficlight_top_left_green", pauseBefore = 0}
+ },
+ toOff = {
+ {name = "streets:trafficlight_top_left_off", pauseBefore = 0}
+ },
+ toWarn = {
+ {name = "streets:trafficlight_top_left_warn", pauseBefore = 0}
+ },
+ toFlashRed = {
+ {name = "streets:trafficlight_top_left_flashred", pauseBefore = 0}
+ }
+}
+
+streets.tlRhythm_right = {
+ toRed = {
+ {name = "streets:trafficlight_top_right_yellow", pauseBefore = 0},
+ {name = "streets:trafficlight_top_right_red", pauseBefore = 3}
+ },
+ toGreen = {
+ {name = "streets:trafficlight_top_right_green", pauseBefore = 0}
+ },
+ toOff = {
+ {name = "streets:trafficlight_top_right_off", pauseBefore = 0}
+ },
+ toWarn = {
+ {name = "streets:trafficlight_top_right_warn", pauseBefore = 0}
+ },
+ toFlashRed = {
+ {name = "streets:trafficlight_top_right_flashred", pauseBefore = 0}
+ }
+}
+
+streets.tlSwitch = function(def)
+ if not def.pos or not def.to then
+ return
+ end
+ local rhythm = {}
+ local nodename = minetest.get_node(def.pos).name
+ if nodename:find("left") then
+ rhythm = streets.tlRhythm_left
+ elseif nodename:find("right") then
+ rhythm = streets.tlRhythm_right
+ else
+ rhythm = streets.tlRhythm
+ end
+ if not rhythm[def.to] then
+ return
+ end
+ local meta = minetest.get_meta(def.pos)
+ -- Only switch if new state ~= current state
+ if "to" .. meta:get_string("state") == def.to then
+ return
+ end
+ -- Switch the trafficlight
+ for k, v in pairs(rhythm[def.to]) do
+ minetest.get_meta(def.pos):set_string("state", def.to:gsub("to", ""))
+ minetest.after(v.pauseBefore, function()
+ minetest.swap_node(def.pos, {name = v.name, param2 = minetest.get_node(def.pos).param2})
+ end)
+ end
+end
+
+streets.on_digiline_receive = function(pos, node, channel, msg)
+ local setchan = minetest.get_meta(pos):get_string("channel")
+ if setchan ~= channel then
+ return
+ end
+ -- Tl states
+ if msg == "OFF" then
+ streets.tlSwitch({
+ pos = pos,
+ to = "toOff"
+ })
+ elseif msg == "GREEN" then
+ streets.tlSwitch({
+ pos = pos,
+ to = "toGreen"
+ })
+ elseif msg == "RED" then
+ streets.tlSwitch({
+ pos = pos,
+ to = "toRed"
+ })
+ elseif msg == "WARN" then
+ streets.tlSwitch({
+ pos = pos,
+ to = "toWarn"
+ })
+ elseif msg == "FLASHRED" then
+ streets.tlSwitch({
+ pos = pos,
+ to = "toFlashRed"
+ })
+ elseif msg == "GET" then
+ local state = minetest.get_meta(pos):get_string("state")
+ if not state or state == "" then
+ state = "UNDEFINED"
+ end
+ digiline:receptor_send(pos, digiline.rules.default, channel, state)
+ end
+end
+
+minetest.register_node(":streets:digiline_distributor",{
+ description = streets.S("Digiline distributor"),
+ tiles = {"streets_lampcontroller_top.png","streets_lampcontroller_bottom.png","streets_lampcontroller_sides.png"},
+ groups = {cracky = 1},
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5,0.5,0.5,0.5},
+ {-0.05,0.5,-0.05,0.05,1.6,0.05}
+ }
+ },
+ digiline = {
+ wire = {
+ rules = {
+ {x= 0, y= 0, z=-1},
+ {x= 0, y= 0, z= 1},
+ {x= 1, y= 0, z= 0},
+ {x=-1, y= 0, z= 0},
+ {x= 0, y= 2, z=0}
+ }
+ }
+ }
+})
+
+for _,i in pairs({"","_left","_right"}) do
+ minetest.register_node(":streets:trafficlight_top"..i.."_off",{
+ description = streets.S((i == "" and "Traffic Light") or (i == "_left" and "Traffic Light (Left Turn)") or (i == "_right" and "Traffic Light (Right Turn)")),
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2},
+ inventory_image = "streets_trafficlight_inv.png",
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_off.png"},
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+ })
+
+ minetest.register_node(":streets:trafficlight_top"..i.."_red",{
+ drop = "streets:trafficlight_top_off",
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_red.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ light_source = 6,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ })
+
+ minetest.register_node(":streets:trafficlight_top"..i.."_yellow",{
+ drop = "streets:trafficlight_top_off",
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_yellow.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ light_source = 6,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ })
+
+ minetest.register_alias("streets:trafficlight_top"..i.."_redyellow","streets:trafficlight_top"..i.."_green")
+
+ minetest.register_node(":streets:trafficlight_top"..i.."_green",{
+ drop = "streets:trafficlight_top_off",
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_green.png"},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ light_source = 6,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ })
+
+ minetest.register_node(":streets:trafficlight_top"..i.."_warn",{
+ drop = "streets:trafficlight_top_off",
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
+ name="streets_tl"..i.."_warn.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5},
+ }},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ light_source = 6,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ })
+
+ minetest.register_node(":streets:trafficlight_top"..i.."_flashred",{
+ drop = "streets:trafficlight_top_off",
+ groups = {cracky = 1, not_in_creative_inventory = 1},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
+ name="streets_tl"..i.."_flashred.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.5},
+ }},
+ node_box = {
+ type = "fixed",
+ fixed = streets.tlBox
+ },
+ light_source = 6,
+ digiline = {
+ receptor = {},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ })
+end
+
+minetest.register_craft({
+ output = "streets:trafficlight_top_off",
+ recipe = {
+ {"default:steel_ingot", "dye:red", "default:steel_ingot"},
+ {"default:steel_ingot", "dye:yellow", "default:steel_ingot"},
+ {"default:steel_ingot", "dye:green", "default:steel_ingot"}
+ }
+})
+
+minetest.register_craft({
+ output = "streets:trafficlight_top_left_off",
+ recipe = {
+ {"dye:red", "default:steel_ingot", "default:steel_ingot"},
+ {"dye:yellow", "default:steel_ingot", "default:steel_ingot"},
+ {"dye:green", "default:steel_ingot", "default:steel_ingot"}
+ }
+})
+
+minetest.register_craft({
+ output = "streets:trafficlight_top_right_off",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "dye:red"},
+ {"default:steel_ingot", "default:steel_ingot", "dye:yellow"},
+ {"default:steel_ingot", "default:steel_ingot", "dye:green"}
+ }
+})
+
+minetest.register_craft({
+ output = "streets:digiline_distributor",
+ recipe = {
+ {"", "digilines:wire_std_00000000", ""},
+ {"digilines:wire_std_00000000", "mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"},
+ {"", "digilines:wire_std_00000000", ""}
+ }
+})
diff --git a/streets/trafficlight/old2new.lua b/streets/trafficlight/old2new.lua
new file mode 100644
index 0000000..51ba9f3
--- /dev/null
+++ b/streets/trafficlight/old2new.lua
@@ -0,0 +1,58 @@
+--[[
+ StreetsMod: Convert old trafficlights
+]]
+minetest.register_node(":streets:trafficlight_bottom", {
+ diggable = false,
+ pointable = false,
+ drawtype = "airlike",
+ description = "I'm an old node, please drop me",
+ groups = {not_in_creative_inventory = 1}
+})
+minetest.register_abm({
+ nodenames = {"streets:trafficlight_bottom"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node)
+ minetest.log("action", "Converting trafficlight at position " .. minetest.pos_to_string(pos))
+ -- Replace controller with distributor
+ pos.y = pos.y - 2
+ minetest.set_node(pos, {name = "streets:digiline_distributor"})
+ -- Change bottom pole
+ pos.y = pos.y + 2
+ minetest.set_node(pos, {name = "streets:bigpole", param2 = 2})
+ -- Change middle pole
+ pos.y = pos.y + 1
+ minetest.set_node(pos, {name = "streets:bigpole", param2 = 2})
+ -- Change the top
+ pos.y = pos.y + 1
+ local fd = minetest.get_node(pos).param2
+ local ch = minetest.get_meta(pos):get_string("channel")
+ minetest.set_node(pos, {name = "streets:bigpole", param2 = 2})
+ -- Place new top
+ if fd == 1 then
+ minetest.set_node({x = pos.x - 1, y = pos.y, z = pos.z}, {name = "streets:trafficlight_top_warn", param2 = fd})
+ local meta = minetest.get_meta({x = pos.x - 1, y = pos.y, z = pos.z})
+ meta:set_string("channel", ch)
+ meta:set_string("state", "warn")
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ elseif fd == 2 then
+ minetest.set_node({x = pos.x, y = pos.y, z = pos.z + 1}, {name = "streets:trafficlight_top_warn", param2 = fd})
+ local meta = minetest.get_meta({x = pos.x, y = pos.y, z = pos.z + 1})
+ meta:set_string("channel", ch)
+ meta:set_string("state", "warn")
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ elseif fd == 3 then
+ minetest.set_node({x = pos.x + 1, y = pos.y, z = pos.z}, {name = "streets:trafficlight_top_warn", param2 = fd})
+ local meta = minetest.get_meta({x = pos.x + 1, y = pos.y, z = pos.z})
+ meta:set_string("channel", ch)
+ meta:set_string("state", "warn")
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ elseif fd == 0 then
+ minetest.set_node({x = pos.x, y = pos.y, z = pos.z - 1}, {name = "streets:trafficlight_top_warn", param2 = fd})
+ local meta = minetest.get_meta({x = pos.x, y = pos.y, z = pos.z - 1})
+ meta:set_string("channel", ch)
+ meta:set_string("state", "warn")
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end
+ end
+}) \ No newline at end of file
diff --git a/streets/trafficlight/textures/streets_tl_bg.png b/streets/trafficlight/textures/streets_tl_bg.png
new file mode 100644
index 0000000..e4213db
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_bg.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_flashred.png b/streets/trafficlight/textures/streets_tl_flashred.png
new file mode 100644
index 0000000..82c118c
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_flashred.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_green.png b/streets/trafficlight/textures/streets_tl_green.png
new file mode 100644
index 0000000..7d7ba80
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_green.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_left_flashred.png b/streets/trafficlight/textures/streets_tl_left_flashred.png
new file mode 100644
index 0000000..eb1d432
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_left_flashred.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_left_green.png b/streets/trafficlight/textures/streets_tl_left_green.png
new file mode 100644
index 0000000..cd0ae67
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_left_green.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_left_off.png b/streets/trafficlight/textures/streets_tl_left_off.png
new file mode 100644
index 0000000..74c88de
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_left_off.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_left_red.png b/streets/trafficlight/textures/streets_tl_left_red.png
new file mode 100644
index 0000000..db0694c
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_left_red.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_left_warn.png b/streets/trafficlight/textures/streets_tl_left_warn.png
new file mode 100644
index 0000000..e910682
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_left_warn.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_left_yellow.png b/streets/trafficlight/textures/streets_tl_left_yellow.png
new file mode 100644
index 0000000..5eeddbb
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_left_yellow.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_off.png b/streets/trafficlight/textures/streets_tl_off.png
new file mode 100644
index 0000000..fb7dfaa
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_off.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_red.png b/streets/trafficlight/textures/streets_tl_red.png
new file mode 100644
index 0000000..4560199
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_red.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_right_flashred.png b/streets/trafficlight/textures/streets_tl_right_flashred.png
new file mode 100644
index 0000000..14d1e4a
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_right_flashred.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_right_green.png b/streets/trafficlight/textures/streets_tl_right_green.png
new file mode 100644
index 0000000..f51ea81
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_right_green.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_right_off.png b/streets/trafficlight/textures/streets_tl_right_off.png
new file mode 100644
index 0000000..7f5c3e5
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_right_off.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_right_red.png b/streets/trafficlight/textures/streets_tl_right_red.png
new file mode 100644
index 0000000..8c25220
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_right_red.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_right_warn.png b/streets/trafficlight/textures/streets_tl_right_warn.png
new file mode 100644
index 0000000..9d60365
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_right_warn.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_right_yellow.png b/streets/trafficlight/textures/streets_tl_right_yellow.png
new file mode 100644
index 0000000..c92724a
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_right_yellow.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_warn.png b/streets/trafficlight/textures/streets_tl_warn.png
new file mode 100644
index 0000000..349fa84
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_warn.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_tl_yellow.png b/streets/trafficlight/textures/streets_tl_yellow.png
new file mode 100644
index 0000000..42b4803
--- /dev/null
+++ b/streets/trafficlight/textures/streets_tl_yellow.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_trafficlight_inv.png b/streets/trafficlight/textures/streets_trafficlight_inv.png
new file mode 100644
index 0000000..fb76b72
--- /dev/null
+++ b/streets/trafficlight/textures/streets_trafficlight_inv.png
Binary files differ
diff --git a/streets/trafficlight/textures/streets_trafficlight_template.png b/streets/trafficlight/textures/streets_trafficlight_template.png
new file mode 100644
index 0000000..f987c9b
--- /dev/null
+++ b/streets/trafficlight/textures/streets_trafficlight_template.png
Binary files differ
diff --git a/technic/.mailmap b/technic/.mailmap
new file mode 100644
index 0000000..cf45bc3
--- /dev/null
+++ b/technic/.mailmap
@@ -0,0 +1,4 @@
+RealBadAngel <maciej.kasatkin@o2.pl> <mk@realbadangel.pl>
+Vanessa Ezekowitz <vanessaezekowitz@gmail.com>
+Vanessa Ezekowitz <vanessaezekowitz@gmail.com> <vanessa@rainbird.(none)>
+kaeza <kaeza@users.sf.net> Diego Martínez <kaeza@users.sf.net>
diff --git a/technic/README.md b/technic/README.md
new file mode 100644
index 0000000..406deab
--- /dev/null
+++ b/technic/README.md
@@ -0,0 +1,23 @@
+Technic
+=======
+
+Credits for contributing to the project (in alphabetical order):
+ * kpoppel
+ * Nekogloop
+ * Nore/Ekdohibs
+ * ShadowNinja
+ * VanessaE
+ * And many others...
+
+FAQ
+---
+
+1. My technic circuit doesn't work. No power is distrubuted.
+ * A: Make sure you have a switching station connected.
+
+License
+-------
+
+Unless otherwise stated, all components of this modpack are licensed under the
+LGPL, V2 or later. See also the individual mod folders for their
+secondary/alternate licenses, if any.
diff --git a/technic/concrete/depends.txt b/technic/concrete/depends.txt
new file mode 100644
index 0000000..c48fe0d
--- /dev/null
+++ b/technic/concrete/depends.txt
@@ -0,0 +1,3 @@
+default
+intllib?
+
diff --git a/technic/concrete/init.lua b/technic/concrete/init.lua
new file mode 100644
index 0000000..d1fa1aa
--- /dev/null
+++ b/technic/concrete/init.lua
@@ -0,0 +1,274 @@
+--Minetest 0.4.7 mod: concrete
+--(c) 2013 by RealBadAngel <mk@realbadangel.pl>
+
+local technic = rawget(_G, "technic") or {}
+technic.concrete_posts = {}
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+
+minetest.register_alias("technic:concrete_post", "technic:concrete_post0")
+minetest.register_alias("technic:concrete_post32", "technic:concrete_post12")
+minetest.register_alias("technic:concrete_post33", "technic:concrete_post3")
+minetest.register_alias("technic:concrete_post34", "technic:concrete_post28")
+minetest.register_alias("technic:concrete_post35", "technic:concrete_post19")
+
+local steel_ingot
+if minetest.get_modpath("technic_worldgen") then
+ steel_ingot = "technic:carbon_steel_ingot"
+else
+ steel_ingot = "default:steel_ingot"
+end
+
+minetest.register_craft({
+ output = 'technic:rebar 6',
+ recipe = {
+ {'','', steel_ingot},
+ {'',steel_ingot,''},
+ {steel_ingot, '', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:concrete 5',
+ recipe = {
+ {'default:stone','technic:rebar','default:stone'},
+ {'technic:rebar','default:stone','technic:rebar'},
+ {'default:stone','technic:rebar','default:stone'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:concrete_post_platform 6',
+ recipe = {
+ {'technic:concrete','technic:concrete_post0','technic:concrete'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:concrete_post0 12',
+ recipe = {
+ {'default:stone','technic:rebar','default:stone'},
+ {'default:stone','technic:rebar','default:stone'},
+ {'default:stone','technic:rebar','default:stone'},
+}
+})
+
+minetest.register_craft({
+ output = 'technic:blast_resistant_concrete 5',
+ recipe = {
+ {'technic:concrete','technic:composite_plate','technic:concrete'},
+ {'technic:composite_plate','technic:concrete','technic:composite_plate'},
+ {'technic:concrete','technic:composite_plate','technic:concrete'},
+ }
+})
+
+local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5}
+local box_center = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}
+local box_x1 = {0, -0.3, -0.1, 0.5, 0.3, 0.1}
+local box_z1 = {-0.1, -0.3, 0, 0.1, 0.3, 0.5}
+local box_x2 = {0, -0.3, -0.1, -0.5, 0.3, 0.1}
+local box_z2 = {-0.1, -0.3, 0, 0.1, 0.3, -0.5}
+
+minetest.register_craftitem(":technic:rebar", {
+ description = S("Rebar"),
+ inventory_image = "technic_rebar.png",
+})
+
+minetest.register_node(":technic:concrete", {
+ description = S("Concrete Block"),
+ tiles = {"technic_concrete_block.png",},
+ groups = {cracky=1, level=2, concrete=1},
+ sounds = default.node_sound_stone_defaults(),
+ after_place_node = function(pos, placer, itemstack)
+ technic.update_posts(pos, false)
+ end,
+ after_dig_node = function (pos, oldnode, oldmetadata, digger)
+ technic.update_posts(pos, false)
+ end,
+})
+
+minetest.register_node(":technic:blast_resistant_concrete", {
+ description = S("Blast-resistant Concrete Block"),
+ tiles = {"technic_blast_resistant_concrete_block.png",},
+ groups={cracky=1, level=3, concrete=1},
+ sounds = default.node_sound_stone_defaults(),
+ after_place_node = function(pos, player, itemstack)
+ technic.update_posts(pos, false)
+ end,
+ after_dig_node = function (pos, oldnode, oldmetadata, digger)
+ technic.update_posts(pos, false)
+ end,
+})
+
+minetest.register_node(":technic:concrete_post_platform", {
+ description = S("Concrete Post Platform"),
+ tiles = {"technic_concrete_block.png",},
+ groups={cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults(),
+ paramtype = "light",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {box_platform}
+ },
+ on_place = function (itemstack, placer, pointed_thing)
+ local node = minetest.get_node(pointed_thing.under)
+ if not technic.concrete_posts[node.name] then
+ return minetest.item_place_node(itemstack, placer, pointed_thing)
+ end
+ local links = technic.concrete_posts[node.name]
+ if links[6] ~= 0 then -- The post already has a platform
+ return minetest.item_place_node(itemstack, placer, pointed_thing)
+ end
+ local id = technic.get_post_id({links[1], links[2], links[3], links[4], links[5], 1})
+ minetest.set_node(pointed_thing.under, {name="technic:concrete_post"..id})
+ itemstack:take_item()
+ placer:set_wielded_item(itemstack)
+ return itemstack
+ end,
+})
+
+local function gen_post_nodebox(x1, x2, z1, z2, y, platform)
+ local box
+ local xx = x1 + x2
+ local zz = z1 + z2
+ if ((xx == 2 and zz == 0) or (xx == 0 and zz == 2)) and y == 0 then
+ box = {}
+ else
+ box = {box_center}
+ end
+ if x1 ~= 0 then
+ table.insert(box, box_x1)
+ end
+ if x2 ~= 0 then
+ table.insert(box, box_x2)
+ end
+ if z1 ~= 0 then
+ table.insert(box, box_z1)
+ end
+ if z2 ~= 0 then
+ table.insert(box, box_z2)
+ end
+ if platform ~= 0 then
+ table.insert(box, box_platform)
+ end
+ return box
+end
+
+local function dig_post_with_platform(pos, oldnode, oldmetadata)
+ oldnode.name = "technic:concrete_post0"
+ minetest.set_node(pos, oldnode)
+ technic.update_posts(pos, true)
+end
+
+function technic.posts_should_connect(pos)
+ local node = minetest.get_node(pos)
+ if technic.concrete_posts[node.name] then
+ return "post"
+ elseif minetest.get_item_group(node.name, "concrete") ~= 0 then
+ return "block"
+ end
+end
+
+function technic.get_post_id(links)
+ return (links[1] * 1) + (links[2] * 2)
+ + (links[3] * 4) + (links[4] * 8)
+ + (links[5] * 16) + (links[6] * 32)
+end
+
+function technic.update_posts(pos, set, secondrun)
+ local node = minetest.get_node(pos)
+ local link_positions = {
+ {x=pos.x+1, y=pos.y, z=pos.z},
+ {x=pos.x-1, y=pos.y, z=pos.z},
+ {x=pos.x, y=pos.y, z=pos.z+1},
+ {x=pos.x, y=pos.y, z=pos.z-1},
+ {x=pos.x, y=pos.y-1, z=pos.z},
+ {x=pos.x, y=pos.y+1, z=pos.z},
+ }
+
+ local links = {0, 0, 0, 0, 0, 0}
+
+ for i, link_pos in pairs(link_positions) do
+ local connecttype = technic.posts_should_connect(link_pos)
+ if connecttype then
+ links[i] = 1
+ -- Have posts next to us update theirselves,
+ -- but only once. (We don't want to start an
+ -- infinite loop of updates)
+ if not secondrun and connecttype == "post" then
+ technic.update_posts(link_pos, true, true)
+ end
+ end
+ end
+
+ if links[5] == 1 or links[6] == 1 then
+ links[5] = 1
+ links[6] = 0
+ end
+
+ -- We don't want to set ourselves if we have been removed or we are
+ -- updating a concrete node
+ if set then
+ -- Preserve platform
+ local oldlinks = technic.concrete_posts[node.name]
+ if oldlinks then
+ links[6] = oldlinks[6]
+ end
+ minetest.set_node(pos, {name="technic:concrete_post"
+ ..technic.get_post_id(links)})
+ end
+end
+
+for x1 = 0, 1 do
+for x2 = 0, 1 do
+for z1 = 0, 1 do
+for z2 = 0, 1 do
+for y = 0, 1 do
+for platform = 0, 1 do
+ local links = {x1, x2, z1, z2, y, platform}
+ local id = technic.get_post_id(links)
+ technic.concrete_posts["technic:concrete_post"..id] = links
+
+ local groups = {cracky=1, level=2, concrete_post=1}
+ if id ~= 0 then
+ groups.not_in_creative_inventory = 1
+ end
+
+ local drop = "technic:concrete_post0"
+ local after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ technic.update_posts(pos, false)
+ end
+ if platform ~= 0 then
+ drop = "technic:concrete_post_platform"
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ dig_post_with_platform(pos, oldnode, oldmetadata)
+ end
+ end
+
+ minetest.register_node(":technic:concrete_post"..id, {
+ description = S("Concrete Post"),
+ tiles = {"technic_concrete_block.png"},
+ groups = groups,
+ sounds = default.node_sound_stone_defaults(),
+ drop = drop,
+ paramtype = "light",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = gen_post_nodebox(x1, x2, z1, z2, y, platform),
+ },
+ after_place_node = function(pos, placer, itemstack)
+ technic.update_posts(pos, true)
+ end,
+ after_dig_node = after_dig_node,
+ })
+end
+end
+end
+end
+end
+end
+
diff --git a/technic/concrete/locale/de.txt b/technic/concrete/locale/de.txt
new file mode 100644
index 0000000..83fdc19
--- /dev/null
+++ b/technic/concrete/locale/de.txt
@@ -0,0 +1,10 @@
+# German Translation for technic_concrete
+# Deutsche Ãœbersetzung von technic_concrete
+# by Xanthin
+
+Rebar = Bewehrungsstab
+Concrete Block = Betonblock
+Blast-resistant Concrete Block = Explosionsbestaendiger Betonblock
+Concrete Post Platform = Betonpfostenplattform
+Concrete Post = Betonpfosten
+
diff --git a/technic/concrete/locale/template.txt b/technic/concrete/locale/template.txt
new file mode 100644
index 0000000..451adaf
--- /dev/null
+++ b/technic/concrete/locale/template.txt
@@ -0,0 +1,8 @@
+# technic_concrete translation template
+
+Rebar =
+Concrete Block =
+Blast-resistant Concrete Block =
+Concrete Post Platform =
+Concrete Post =
+
diff --git a/technic/concrete/locale/tr.txt b/technic/concrete/locale/tr.txt
new file mode 100644
index 0000000..179d29b
--- /dev/null
+++ b/technic/concrete/locale/tr.txt
@@ -0,0 +1,7 @@
+# turkish translation by mahmutelmas06
+
+Rebar = Beton demiri
+Concrete Block = Beton blok
+Blast-resistant Concrete Block = Patlamaya dayanıklı beton blok
+Concrete Post Platform = Beton direk platformu
+Concrete Post = Beton direk
diff --git a/technic/concrete/textures/technic_blast_resistant_concrete_block.png b/technic/concrete/textures/technic_blast_resistant_concrete_block.png
new file mode 100644
index 0000000..b7d8588
--- /dev/null
+++ b/technic/concrete/textures/technic_blast_resistant_concrete_block.png
Binary files differ
diff --git a/technic/concrete/textures/technic_concrete_block.png b/technic/concrete/textures/technic_concrete_block.png
new file mode 100644
index 0000000..cd94594
--- /dev/null
+++ b/technic/concrete/textures/technic_concrete_block.png
Binary files differ
diff --git a/technic/concrete/textures/technic_rebar.png b/technic/concrete/textures/technic_rebar.png
new file mode 100644
index 0000000..16d1fc5
--- /dev/null
+++ b/technic/concrete/textures/technic_rebar.png
Binary files differ
diff --git a/technic/concrete/textures/x32/technic_concrete_block.png b/technic/concrete/textures/x32/technic_concrete_block.png
new file mode 100644
index 0000000..91364f3
--- /dev/null
+++ b/technic/concrete/textures/x32/technic_concrete_block.png
Binary files differ
diff --git a/technic/concrete/textures/x32/technic_rebar.png b/technic/concrete/textures/x32/technic_rebar.png
new file mode 100644
index 0000000..16d1fc5
--- /dev/null
+++ b/technic/concrete/textures/x32/technic_rebar.png
Binary files differ
diff --git a/technic/extranodes/depends.txt b/technic/extranodes/depends.txt
new file mode 100644
index 0000000..6335bfd
--- /dev/null
+++ b/technic/extranodes/depends.txt
@@ -0,0 +1,5 @@
+default
+technic_worldgen
+concrete
+intllib?
+moreblocks?
diff --git a/technic/extranodes/init.lua b/technic/extranodes/init.lua
new file mode 100644
index 0000000..22a1d9f
--- /dev/null
+++ b/technic/extranodes/init.lua
@@ -0,0 +1,103 @@
+-- Minetest 0.4.6 mod: extranodes
+-- namespace: technic
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+
+if minetest.get_modpath("moreblocks") then
+
+ -- register stairsplus/circular_saw nodes
+ -- we skip blast resistant concrete and uranium intentionally
+ -- chrome seems to be too hard of a metal to be actually sawable
+
+ stairsplus:register_all("technic", "marble", "technic:marble", {
+ description=S("Marble"),
+ groups={cracky=3, not_in_creative_inventory=1},
+ tiles={"technic_marble.png"},
+ })
+
+ stairsplus:register_all("technic", "marble_bricks", "technic:marble_bricks", {
+ description=S("Marble Bricks"),
+ groups={cracky=3, not_in_creative_inventory=1},
+ tiles={"technic_marble_bricks.png"},
+ })
+
+ stairsplus:register_all("technic", "granite", "technic:granite", {
+ description=S("Granite"),
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_granite.png"},
+ })
+
+ stairsplus:register_all("technic", "concrete", "technic:concrete", {
+ description=S("Concrete"),
+ groups={cracky=3, not_in_creative_inventory=1},
+ tiles={"technic_concrete_block.png"},
+ })
+
+ stairsplus:register_all("technic", "zinc_block", "technic:zinc_block", {
+ description=S("Zinc Block"),
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_zinc_block.png"},
+ })
+
+ stairsplus:register_all("technic", "cast_iron_block", "technic:cast_iron_block", {
+ description=S("Cast Iron Block"),
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_cast_iron_block.png"},
+ })
+
+ stairsplus:register_all("technic", "carbon_steel_block", "technic:carbon_steel_block", {
+ description=S("Carbon Steel Block"),
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_carbon_steel_block.png"},
+ })
+
+ stairsplus:register_all("technic", "stainless_steel_block", "technic:stainless_steel_block", {
+ description=S("Stainless Steel Block"),
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_stainless_steel_block.png"},
+ })
+
+ stairsplus:register_all("technic", "brass_block", "technic:brass_block", {
+ description=S("Brass Block"),
+ groups={cracky=1, not_in_creative_inventory=1},
+ tiles={"technic_brass_block.png"},
+ })
+
+ function register_technic_stairs_alias(modname, origname, newmod, newname)
+ minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted")
+ minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall")
+ minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname)
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer")
+ minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted")
+ minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom")
+ minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top")
+ minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
+ minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
+ minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
+ end
+
+ register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete")
+ register_technic_stairs_alias("stairsplus", "marble", "technic", "marble")
+ register_technic_stairs_alias("stairsplus", "granite", "technic", "granite")
+ register_technic_stairs_alias("stairsplus", "marble_bricks", "technic", "marble_bricks")
+
+end
diff --git a/technic/extranodes/locale/de.txt b/technic/extranodes/locale/de.txt
new file mode 100644
index 0000000..f3c017e
--- /dev/null
+++ b/technic/extranodes/locale/de.txt
@@ -0,0 +1,9 @@
+# German Translation for technic_extranodes
+# Deutsche Ãœbersetzung von technic_extranodes
+# by Xanthin
+
+Marble = Marmor
+Marble Bricks = Marmorziegel
+Granite = Granit
+Concrete = Beton
+
diff --git a/technic/extranodes/locale/template.txt b/technic/extranodes/locale/template.txt
new file mode 100644
index 0000000..2ffe498
--- /dev/null
+++ b/technic/extranodes/locale/template.txt
@@ -0,0 +1,7 @@
+# technic_extranodes translation template
+
+Marble =
+Marble Bricks =
+Granite =
+Concrete =
+
diff --git a/technic/extranodes/locale/tr.txt b/technic/extranodes/locale/tr.txt
new file mode 100644
index 0000000..90d8154
--- /dev/null
+++ b/technic/extranodes/locale/tr.txt
@@ -0,0 +1,6 @@
+# turkish translation by mahmutelmas06
+
+Marble = Mermer
+Marble Bricks = Mermer tuÄŸla
+Granite = Granit
+Concrete = Beton
diff --git a/technic/manual.md b/technic/manual.md
new file mode 100644
index 0000000..9031792
--- /dev/null
+++ b/technic/manual.md
@@ -0,0 +1,1488 @@
+Minetest technic modpack user manual
+====================================
+
+The technic modpack extends the Minetest game with many new elements,
+mainly constructable machines and tools. It is a large modpack, and
+tends to dominate gameplay when it is used. This manual describes how
+to use the technic modpack, mainly from a player's perspective.
+
+The technic modpack depends on some other modpacks:
+
+* the basic Minetest game
+* mesecons, which supports the construction of logic systems based on
+ signalling elements
+* pipeworks, which supports the automation of item transport
+* moreores, which provides some additional ore types
+
+This manual doesn't explain how to use these other modpacks, which ought
+to (but actually don't) have their own manuals.
+
+Recipes for constructable items in technic are generally not guessable,
+and are also not specifically documented here. You should use a
+craft guide mod to look up the recipes in-game. For the best possible
+guidance, use the unified\_inventory mod, with which technic registers
+its specialised recipe types.
+
+substances
+----------
+
+### ore ###
+
+The technic mod makes extensive use of not just the default ores but also
+some that are added by mods. You will need to mine for all the ore types
+in the course of the game. Each ore type is found at a specific range of
+elevations, and while the ranges mostly overlap, some have non-overlapping
+ranges, so you will ultimately need to mine at more than one elevation
+to find all the ores. Also, because one of the best elevations to mine
+at is very deep, you will be unable to mine there early in the game.
+
+Elevation is measured in meters, relative to a reference plane that
+is not quite sea level. (The standard sea level is at an elevation
+of about +1.4.) Positive elevations are above the reference plane and
+negative elevations below. Because elevations are always described this
+way round, greater numbers when higher, we avoid the word "depth".
+
+The ores that matter in technic are coal, iron, copper, tin, zinc,
+chromium, uranium, silver, gold, mithril, mese, and diamond.
+
+Coal is part of the basic Minetest game. It is found from elevation
++64 downwards, so is available right on the surface at the start of
+the game, but it is far less abundant above elevation 0 than below.
+It is initially used as a fuel, driving important machines in the early
+part of the game. It becomes less important as a fuel once most of your
+machines are electrically powered, but burning fuel remains a way to
+generate electrical power. Coal is also used, usually in dust form, as
+an ingredient in alloying recipes, wherever elemental carbon is required.
+
+Iron is part of the basic Minetest game. It is found from elevation
++2 downwards, and its abundance increases in stages as one descends,
+reaching its maximum from elevation -64 downwards. It is a common metal,
+used frequently as a structural component. In technic, unlike the basic
+game, iron is used in multiple forms, mainly alloys based on iron and
+including carbon (coal).
+
+Copper is part of the basic Minetest game (having migrated there from
+moreores). It is found from elevation -16 downwards, but is more abundant
+from elevation -64 downwards. It is a common metal, used either on its
+own for its electrical conductivity, or as the base component of alloys.
+Although common, it is very heavily used, and most of the time it will
+be the material that most limits your activity.
+
+Tin is supplied by the moreores mod. It is found from elevation +8
+downwards, with no elevation-dependent variations in abundance beyond
+that point. It is a common metal. Its main use in pure form is as a
+component of electrical batteries. Apart from that its main purpose is
+as the secondary ingredient in bronze (the base being copper), but bronze
+is itself little used. Its abundance is well in excess of its usage,
+so you will usually have a surplus of it.
+
+Zinc is supplied by technic. It is found from elevation +2 downwards,
+with no elevation-dependent variations in abundance beyond that point.
+It is a common metal. Its main use is as the secondary ingredient
+in brass (the base being copper), but brass is itself little used.
+Its abundance is well in excess of its usage, so you will usually have
+a surplus of it.
+
+Chromium is supplied by technic. It is found from elevation -100
+downwards, with no elevation-dependent variations in abundance beyond
+that point. It is a moderately common metal. Its main use is as the
+secondary ingredient in stainless steel (the base being iron).
+
+Uranium is supplied by technic. It is found only from elevation -80 down
+to -300; using it therefore requires one to mine above elevation -300 even
+though deeper mining is otherwise more productive. It is a moderately
+common metal, useful only for reasons related to radioactivity: it forms
+the fuel for nuclear reactors, and is also one of the best radiation
+shielding materials available. It is not difficult to find enough uranium
+ore to satisfy these uses. Beware that the ore is slightly radioactive:
+it will slightly harm you if you stand as close as possible to it.
+It is safe when more than a meter away or when mined.
+
+Silver is supplied by the moreores mod. It is found from elevation -2
+downwards, with no elevation-dependent variations in abundance beyond
+that point. It is a semi-precious metal. It is little used, being most
+notably used in electrical items due to its conductivity, being the best
+conductor of all the pure elements.
+
+Gold is part of the basic Minetest game (having migrated there from
+moreores). It is found from elevation -64 downwards, but is more
+abundant from elevation -256 downwards. It is a precious metal. It is
+little used, being most notably used in electrical items due to its
+combination of good conductivity (third best of all the pure elements)
+and corrosion resistance.
+
+Mithril is supplied by the moreores mod. It is found from elevation
+-512 downwards, the deepest ceiling of any minable substance, with
+no elevation-dependent variations in abundance beyond that point.
+It is a rare precious metal, and unlike all the other metals described
+here it is entirely fictional, being derived from J. R. R. Tolkien's
+Middle-Earth setting. It is little used.
+
+Mese is part of the basic Minetest game. It is found from elevation
+-64 downwards. The ore is more abundant from elevation -256 downwards,
+and from elevation -1024 downwards there are also occasional blocks of
+solid mese (each yielding as much mese as nine blocks of ore). It is a
+precious gemstone, and unlike diamond it is entirely fictional. It is
+used in many recipes, though mainly not in large quantities, wherever
+some magical quality needs to be imparted.
+
+Diamond is part of the basic Minetest game (having migrated there from
+technic). It is found from elevation -128 downwards, but is more abundant
+from elevation -256 downwards. It is a precious gemstone. It is used
+moderately, mainly for reasons connected to its extreme hardness.
+
+### rock ###
+
+In addition to the ores, there are multiple kinds of rock that need to be
+mined in their own right, rather than for minerals. The rock types that
+matter in technic are standard stone, desert stone, marble, and granite.
+
+Standard stone is part of the basic Minetest game. It is extremely
+common. As in the basic game, when dug it yields cobblestone, which can
+be cooked to turn it back into standard stone. Cobblestone is used in
+recipes only for some relatively primitive machines. Standard stone is
+used in a couple of machine recipes. These rock types gain additional
+significance with technic because the grinder can be used to turn them
+into dirt and sand. This, especially when combined with an automated
+cobblestone generator, can be an easier way to acquire sand than
+collecting it where it occurs naturally.
+
+Desert stone is part of the basic Minetest game. It is found specifically
+in desert biomes, and only from elevation +2 upwards. Although it is
+easily accessible, therefore, its quantity is ultimately quite limited.
+It is used in a few recipes.
+
+Marble is supplied by technic. It is found in dense clusters from
+elevation -50 downwards. It has mainly decorative use, but also appears
+in one machine recipe.
+
+Granite is supplied by technic. It is found in dense clusters from
+elevation -150 downwards. It is much harder to dig than standard stone,
+so impedes mining when it is encountered. It has mainly decorative use,
+but also appears in a couple of machine recipes.
+
+### rubber ###
+
+Rubber is a biologically-derived material that has industrial uses due
+to its electrical resistivity and its impermeability. In technic, it
+is used in a few recipes, and it must be acquired by tapping rubber trees.
+
+If you have the moretrees mod installed, the rubber trees you need
+are those defined by that mod. If not, technic supplies a copy of the
+moretrees rubber tree.
+
+Extracting rubber requires a specific tool, a tree tap. Using the tree
+tap (by left-clicking) on a rubber tree trunk block extracts a lump of
+raw latex from the trunk. Each trunk block can be repeatedly tapped for
+latex, at intervals of several minutes; its appearance changes to show
+whether it is currently ripe for tapping. Each tree has several trunk
+blocks, so several latex lumps can be extracted from a tree in one visit.
+
+Raw latex isn't used directly. It must be vulcanized to produce finished
+rubber. This can be performed by alloying the latex with coal dust.
+
+### metal ###
+
+Many of the substances important in technic are metals, and there is
+a common pattern in how metals are handled. Generally, each metal can
+exist in five forms: ore, lump, dust, ingot, and block. With a couple of
+tricky exceptions in mods outside technic, metals are only *used* in dust,
+ingot, and block forms. Metals can be readily converted between these
+three forms, but can't be converted from them back to ore or lump forms.
+
+As in the basic Minetest game, a "lump" of metal is acquired directly by
+digging ore, and will then be processed into some other form for use.
+A lump is thus more akin to ore than to refined metal. (In real life,
+metal ore rarely yields lumps ("nuggets") of pure metal directly.
+More often the desired metal is chemically bound into the rock as an
+oxide or some other compound, and the ore must be chemically processed
+to yield pure metal.)
+
+Not all metals occur directly as ore. Generally, elemental metals (those
+consisting of a single chemical element) occur as ore, and alloys (those
+consisting of a mixture of multiple elements) do not. In fact, if the
+fictional mithril is taken to be elemental, this pattern is currently
+followed perfectly. (It is not clear in the Middle-Earth setting whether
+mithril is elemental or an alloy.) This might change in the future:
+in real life some alloys do occur as ore, and some elemental metals
+rarely occur naturally outside such alloys. Metals that do not occur
+as ore also lack the "lump" form.
+
+The basic Minetest game offers a single way to refine metals: cook a lump
+in a furnace to produce an ingot. With technic this refinement method
+still exists, but is rarely used outside the early part of the game,
+because technic offers a more efficient method once some machines have
+been built. The grinder, available only in electrically-powered forms,
+can grind a metal lump into two piles of metal dust. Each dust pile
+can then be cooked into an ingot, yielding two ingots from one lump.
+This doubling of material value means that you should only cook a lump
+directly when you have no choice, mainly early in the game when you
+haven't yet built a grinder.
+
+An ingot can also be ground back to (one pile of) dust. Thus it is always
+possible to convert metal between ingot and dust forms, at the expense
+of some energy consumption. Nine ingots of a metal can be crafted into
+a block, which can be used for building. The block can also be crafted
+back to nine ingots. Thus it is possible to freely convert metal between
+ingot and block forms, which is convenient to store the metal compactly.
+Every metal has dust, ingot, and block forms.
+
+Alloying recipes in which a metal is the base ingredient, to produce a
+metal alloy, always come in two forms, using the metal either as dust
+or as an ingot. If the secondary ingredient is also a metal, it must
+be supplied in the same form as the base ingredient. The output alloy
+is also returned in the same form. For example, brass can be produced
+by alloying two copper ingots with one zinc ingot to make three brass
+ingots, or by alloying two piles of copper dust with one pile of zinc
+dust to make three piles of brass dust. The two ways of alloying produce
+equivalent results.
+
+### iron and its alloys ###
+
+Iron forms several important alloys. In real-life history, iron was the
+second metal to be used as the base component of deliberately-constructed
+alloys (the first was copper), and it was the first metal whose working
+required processes of any metallurgical sophistication. The game
+mechanics around iron broadly imitate the historical progression of
+processes around it, rather than the less-varied modern processes.
+
+The two-component alloying system of iron with carbon is of huge
+importance, both in the game and in real life. The basic Minetest game
+doesn't distinguish between these pure iron and these alloys at all,
+but technic introduces a distinction based on the carbon content, and
+renames some items of the basic game accordingly.
+
+The iron/carbon spectrum is represented in the game by three metal
+substances: wrought iron, carbon steel, and cast iron. Wrought iron
+has low carbon content (less than 0.25%), resists shattering, and
+is easily welded, but is relatively soft and susceptible to rusting.
+In real-life history it was used for rails, gates, chains, wire, pipes,
+fasteners, and other purposes. Cast iron has high carbon content
+(2.1% to 4%), is especially hard, and resists corrosion, but is
+relatively brittle, and difficult to work. Historically it was used
+to build large structures such as bridges, and for cannons, cookware,
+and engine cylinders. Carbon steel has medium carbon content (0.25%
+to 2.1%), and intermediate properties: moderately hard and also tough,
+somewhat resistant to corrosion. In real life it is now used for most
+of the purposes previously satisfied by wrought iron and many of those
+of cast iron, but has historically been especially important for its
+use in swords, armor, skyscrapers, large bridges, and machines.
+
+In real-life history, the first form of iron to be refined was
+wrought iron, which is nearly pure iron, having low carbon content.
+It was produced from ore by a low-temperature furnace process (the
+"bloomery") in which the ore/iron remains solid and impurities (slag)
+are progressively removed by hammering ("working", hence "wrought").
+This began in the middle East, around 1800 BCE.
+
+Historically, the next forms of iron to be refined were those of high
+carbon content. This was the result of the development of a more
+sophisticated kind of furnace, the blast furnace, capable of reaching
+higher temperatures. The real advantage of the blast furnace is that it
+melts the metal, allowing it to be cast straight into a shape supplied by
+a mould, rather than having to be gradually beaten into the desired shape.
+A side effect of the blast furnace is that carbon from the furnace's fuel
+is unavoidably incorporated into the metal. Normally iron is processed
+twice through the blast furnace: once producing "pig iron", which has
+very high carbon content and lots of impurities but lower melting point,
+casting it into rough ingots, then remelting the pig iron and casting it
+into the final moulds. The result is called "cast iron". Pig iron was
+first produced in China around 1200 BCE, and cast iron later in the 5th
+century BCE. Incidentally, the Chinese did not have the bloomery process,
+so this was their first iron refining process, and, unlike the rest of
+the world, their first wrought iron was made from pig iron rather than
+directly from ore.
+
+Carbon steel, with intermediate carbon content, was developed much later,
+in Europe in the 17th century CE. It required a more sophisticated
+process, because the blast furnace made it extremely difficult to achieve
+a controlled carbon content. Tweaks of the blast furnace would sometimes
+produce an intermediate carbon content by luck, but the first processes to
+reliably produce steel were based on removing almost all the carbon from
+pig iron and then explicitly mixing a controlled amount of carbon back in.
+
+In the game, the bloomery process is represented by ordinary cooking
+or grinding of an iron lump. The lump represents unprocessed ore,
+and is identified only as "iron", not specifically as wrought iron.
+This standard refining process produces dust or an ingot which is
+specifically identified as wrought iron. Thus the standard refining
+process produces the (nearly) pure metal.
+
+Cast iron is trickier. You might expect from the real-life notes above
+that cooking an iron lump (representing ore) would produce pig iron that
+can then be cooked again to produce cast iron. This is kind of the case,
+but not exactly, because as already noted cooking an iron lump produces
+wrought iron. The game doesn't distinguish between low-temperature
+and high-temperature cooking processes: the same furnace is used not
+just to cast all kinds of metal but also to cook food. So there is no
+distinction between cooking processes to produce distinct wrought iron
+and pig iron. But repeated cooking *is* available as a game mechanic,
+and is indeed used to produce cast iron: re-cooking a wrought iron ingot
+produces a cast iron ingot. So pig iron isn't represented in the game as
+a distinct item; instead wrought iron stands in for pig iron in addition
+to its realistic uses as wrought iron.
+
+Carbon steel is produced by a more regular in-game process: alloying
+wrought iron with coal dust (which is essentially carbon). This bears
+a fair resemblance to the historical development of carbon steel.
+This alloying recipe is relatively time-consuming for the amount of
+material processed, when compared against other alloying recipes, and
+carbon steel is heavily used, so it is wise to alloy it in advance,
+when you're not waiting for it.
+
+There are additional recipes that permit all three of these types of iron
+to be converted into each other. Alloying carbon steel again with coal
+dust produces cast iron, with its higher carbon content. Cooking carbon
+steel or cast iron produces wrought iron, in an abbreviated form of the
+bloomery process.
+
+There's one more iron alloy in the game: stainless steel. It is managed
+in a completely regular manner, created by alloying carbon steel with
+chromium.
+
+### uranium enrichment ###
+
+When uranium is to be used to fuel a nuclear reactor, it is not
+sufficient to merely isolate and refine uranium metal. It is necessary
+to control its isotopic composition, because the different isotopes
+behave differently in nuclear processes.
+
+The main isotopes of interest are U-235 and U-238. U-235 is good at
+sustaining a nuclear chain reaction, because when a U-235 nucleus is
+bombarded with a neutron it will usually fission (split) into fragments.
+It is therefore described as "fissile". U-238, on the other hand,
+is not fissile: if bombarded with a neutron it will usually capture it,
+becoming U-239, which is very unstable and quickly decays into semi-stable
+(and fissile) plutonium-239.
+
+Inconveniently, the fissile U-235 makes up only about 0.7% of natural
+uranium, almost all of the other 99.3% being U-238. Natural uranium
+therefore doesn't make a great nuclear fuel. (In real life there are
+a small number of reactor types that can use it, but technic doesn't
+have such a reactor.) Better nuclear fuel needs to contain a higher
+proportion of U-235.
+
+Achieving a higher U-235 content isn't as simple as separating the U-235
+from the U-238 and just using the required amount of U-235. Because
+U-235 and U-238 are both uranium, and therefore chemically identical,
+they cannot be chemically separated, in the way that different elements
+are separated from each other when refining metal. They do differ
+in atomic mass, so they can be separated by centrifuging, but because
+their atomic masses are very close, centrifuging doesn't separate them
+very well. They cannot be separated completely, but it is possible to
+produce uranium that has the isotopes mixed in different proportions.
+Uranium with a significantly larger fissile U-235 fraction than natural
+uranium is called "enriched", and that with a significantly lower fissile
+fraction is called "depleted".
+
+A single pass through a centrifuge produces two output streams, one with
+a fractionally higher fissile proportion than the input, and one with a
+fractionally lower fissile proportion. To alter the fissile proportion
+by a significant amount, these output streams must be centrifuged again,
+repeatedly. The usual arrangement is a "cascade", a linear arrangement
+of many centrifuges. Each centrifuge takes as input uranium with some
+specific fissile proportion, and passes its two output streams to the
+two adjacent centrifuges. Natural uranium is input somewhere in the
+middle of the cascade, and the two ends of the cascade produce properly
+enriched and depleted uranium.
+
+Fuel for technic's nuclear reactor consists of enriched uranium of which
+3.5% is fissile. (This is a typical value for a real-life light water
+reactor, a common type for power generation.) To enrich uranium in the
+game, it must first be in dust form: the centrifuge will not operate
+on ingots. (In real life uranium enrichment is done with the uranium
+in the form of a gas.) It is best to grind uranium lumps directly to
+dust, rather than cook them to ingots first, because this yields twice
+as much metal dust. When uranium is in refined form (dust, ingot, or
+block), the name of the inventory item indicates its fissile proportion.
+Uranium of any available fissile proportion can be put through all the
+usual processes for metal.
+
+A single centrifuge operation takes two uranium dust piles, and produces
+as output one dust pile with a fissile proportion 0.1% higher and one with
+a fissile proportion 0.1% lower. Uranium can be enriched up to the 3.5%
+required for nuclear fuel, and depleted down to 0.0%. Thus a cascade
+covering the full range of fissile fractions requires 34 cascade stages.
+(In real life, enriching to 3.5% uses thousands of cascade stages.
+Also, centrifuging is less effective when the input isotope ratio
+is more skewed, so the steps in fissile proportion are smaller for
+relatively depleted uranium. Zero fissile content is only asymptotically
+approachable, and natural uranium relatively cheap, so uranium is normally
+only depleted to around 0.3%. On the other hand, much higher enrichment
+than 3.5% isn't much more difficult than enriching that far.)
+
+Although centrifuges can be used manually, it is not feasible to perform
+uranium enrichment by hand. It is a practical necessity to set up
+an automated cascade, using pneumatic tubes to transfer uranium dust
+piles between centrifuges. Because both outputs from a centrifuge are
+ejected into the same tube, sorting tubes are needed to send the outputs
+in different directions along the cascade. It is possible to send items
+into the centrifuges through the same tubes that take the outputs, so the
+simplest version of the cascade structure has a line of 34 centrifuges
+linked by a line of 34 sorting tube segments.
+
+Assuming that the cascade depletes uranium all the way to 0.0%,
+producing one unit of 3.5%-fissile uranium requires the input of five
+units of 0.7%-fissile (natural) uranium, takes 490 centrifuge operations,
+and produces four units of 0.0%-fissile (fully depleted) uranium as a
+byproduct. It is possible to reduce the number of required centrifuge
+operations by using more natural uranium input and outputting only
+partially depleted uranium, but (unlike in real life) this isn't usually
+an economical approach. The 490 operations are not spread equally over
+the cascade stages: the busiest stage is the one taking 0.7%-fissile
+uranium, which performs 28 of the 490 operations. The least busy is the
+one taking 3.4%-fissile uranium, which performs 1 of the 490 operations.
+
+A centrifuge cascade will consume quite a lot of energy. It is
+worth putting a battery upgrade in each centrifuge. (Only one can be
+accommodated, because a control logic unit upgrade is also required for
+tube operation.) An MV centrifuge, the only type presently available,
+draws 7 kEU/s in this state, and takes 5 s for each uranium centrifuging
+operation. It thus takes 35 kEU per operation, and the cascade requires
+17.15 MEU to produce each unit of enriched uranium. It takes five units
+of enriched uranium to make each fuel rod, and six rods to fuel a reactor,
+so the enrichment cascade requires 514.5 MEU to process a full set of
+reactor fuel. This is about 0.85% of the 6.048 GEU that the reactor
+will generate from that fuel.
+
+If there is enough power available, and enough natural uranium input,
+to keep the cascade running continuously, and exactly one centrifuge
+at each stage, then the overall speed of the cascade is determined by
+the busiest stage, the 0.7% stage. It can perform its 28 operations
+towards the enrichment of a single uranium unit in 140 s, so that is
+the overall cycle time of the cascade. It thus takes 70 min to enrich
+a full set of reactor fuel. While the cascade is running at this full
+speed, its average power consumption is 122.5 kEU/s. The instantaneous
+power consumption varies from second to second over the 140 s cycle,
+and the maximum possible instantaneous power consumption (with all 34
+centrifuges active simultaneously) is 238 kEU/s. It is recommended to
+have some battery boxes to smooth out these variations.
+
+If the power supplied to the centrifuge cascade averages less than
+122.5 kEU/s, then the cascade can't run continuously. (Also, if the
+power supply is intermittent, such as solar, then continuous operation
+requires more battery boxes to smooth out the supply variations, even if
+the average power is high enough.) Because it's automated and doesn't
+require continuous player attention, having the cascade run at less
+than full speed shouldn't be a major problem. The enrichment work will
+consume the same energy overall regardless of how quickly it's performed,
+and the speed will vary in direct proportion to the average power supply
+(minus any supply lost because battery boxes filled completely).
+
+If there is insufficient power to run both the centrifuge cascade at
+full speed and whatever other machines require power, all machines on
+the same power network as the centrifuge will be forced to run at the
+same fractional speed. This can be inconvenient, especially if use
+of the other machines is less automated than the centrifuge cascade.
+It can be avoided by putting the centrifuge cascade on a separate power
+network from other machines, and limiting the proportion of the generated
+power that goes to it.
+
+If there is sufficient power and it is desired to enrich uranium faster
+than a single cascade can, the process can be speeded up more economically
+than by building an entire second cascade. Because the stages of the
+cascade do different proportions of the work, it is possible to add a
+second and subsequent centrifuges to only the busiest stages, and have
+the less busy stages still keep up with only a single centrifuge each.
+
+Another possible approach to uranium enrichment is to have no fixed
+assignment of fissile proportions to centrifuges, dynamically putting
+whatever uranium is available into whichever centrifuges are available.
+Theoretically all of the centrifuges can be kept almost totally busy all
+the time, making more efficient use of capital resources, and the number
+of centrifuges used can be as little (down to one) or as large as desired.
+The difficult part is that it is not sufficient to put each uranium dust
+pile individually into whatever centrifuge is available: they must be
+input in matched pairs. Any odd dust pile in a centrifuge will not be
+processed and will prevent that centrifuge from accepting any other input.
+
+### concrete ###
+
+Concrete is a synthetic building material. The technic modpack implements
+it in the game.
+
+Two forms of concrete are available as building blocks: ordinary
+"concrete" and more advanced "blast-resistant concrete". Despite its
+name, the latter has no special resistance to explosions or to any other
+means of destruction.
+
+Concrete can also be used to make fences. They act just like wooden
+fences, but aren't flammable. Confusingly, the item that corresponds
+to a wooden "fence" is called "concrete post". Posts placed adjacently
+will implicitly create fence between them. Fencing also appears between
+a post and adjacent concrete block.
+
+industrial processes
+--------------------
+
+### alloying ###
+
+In technic, alloying is a way of combining items to create other items,
+distinct from standard crafting. Alloying always uses inputs of exactly
+two distinct types, and produces a single output. Like cooking, which
+takes a single input, it is performed using a powered machine, known
+generically as an "alloy furnace". An alloy furnace always has two
+input slots, and it doesn't matter which way round the two ingredients
+are placed in the slots. Many alloying recipes require one or both
+slots to contain a stack of more than one of the ingredient item: the
+quantity required of each ingredient is part of the recipe.
+
+As with the furnaces used for cooking, there are multiple kinds of alloy
+furnace, powered in different ways. The most-used alloy furnaces are
+electrically powered. There is also an alloy furnace that is powered
+by directly burning fuel, just like the basic cooking furnace. Building
+almost any electrical machine, including the electrically-powered alloy
+furnaces, requires a machine casing component, one ingredient of which
+is brass, an alloy. It is therefore necessary to use the fuel-fired
+alloy furnace in the early part of the game, on the way to building
+electrical machinery.
+
+Alloying recipes are mainly concerned with metals. These recipes
+combine a base metal with some other element, most often another metal,
+to produce a new metal. This is discussed in the section on metal.
+There are also a few alloying recipes in which the base ingredient is
+non-metallic, such as the recipe for the silicon wafer.
+
+### grinding, extracting, and compressing ###
+
+Grinding, extracting, and compressing are three distinct, but very
+similar, ways of converting one item into another. They are all quite
+similar to the cooking found in the basic Minetest game. Each uses
+an input consisting of a single item type, and produces a single
+output. They are all performed using powered machines, respectively
+known generically as a "grinder", "extractor", and "compressor".
+Some compressing recipes require the input to be a stack of more than
+one of the input item: the quantity required is part of the recipe.
+Grinding and extracting recipes never require such a stacked input.
+
+There are multiple kinds of grinder, extractor, and compressor. Unlike
+cooking furnaces and alloy furnaces, there are none that directly burn
+fuel; they are all electrically powered.
+
+Grinding recipes always produce some kind of dust, loosely speaking,
+as output. The most important grinding recipes are concerned with metals:
+every metal lump or ingot can be ground into metal dust. Coal can also
+be ground into dust, and burning the dust as fuel produces much more
+energy than burning the original coal lump. There are a few other
+grinding recipes that make block types from the basic Minetest game
+more interconvertible: standard stone can be ground to standard sand,
+desert stone to desert sand, cobblestone to gravel, and gravel to dirt.
+
+Extracting is a miscellaneous category, used for a small group
+of processes that just don't fit nicely anywhere else. (Its name is
+notably vaguer than those of the other kinds of processing.) It is used
+for recipes that produce dye, mainly from flowers. (However, for those
+recipes using flowers, the basic Minetest game provides parallel crafting
+recipes that are easier to use and produce more dye, and those recipes
+are not suppressed by technic.) Its main use is to generate rubber from
+raw latex, which it does three times as efficiently as merely cooking
+the latex. Extracting was also formerly used for uranium enrichment for
+use as nuclear fuel, but this use has been superseded by a new enrichment
+system using the centrifuge.
+
+Compressing recipes are mainly used to produce a few relatively advanced
+artificial item types, such as the copper and carbon plates used in
+advanced machine recipes. There are also a couple of compressing recipes
+making natural block types more interconvertible.
+
+### centrifuging ###
+
+Centrifuging is another way of using a machine to convert items.
+Centrifuging takes an input of a single item type, and produces outputs
+of two distinct types. The input may be required to be a stack of
+more than one of the input item: the quantity required is part of
+the recipe. Centrifuging is only performed by a single machine type,
+the MV (electrically-powered) centrifuge.
+
+Currently, centrifuging recipes don't appear in the unified\_inventory
+craft guide, because unified\_inventory can't yet handle recipes with
+multiple outputs.
+
+Generally, centrifuging separates the input item into constituent
+substances, but it can only work when the input is reasonably fluid,
+and in marginal cases it is quite destructive to item structure.
+(In real life, centrifuges require their input to be mainly fluid, that
+is either liquid or gas. Few items in the game are described as liquid
+or gas, so the concept of the centrifuge is stretched a bit to apply to
+finely-divided solids.)
+
+The main use of centrifuging is in uranium enrichment, where it
+separates the isotopes of uranium dust that otherwise appears uniform.
+Enrichment is a necessary process before uranium can be used as nuclear
+fuel, and the radioactivity of uranium blocks is also affected by its
+isotopic composition.
+
+A secondary use of centrifuging is to separate the components of
+metal alloys. This can only be done using the dust form of the alloy.
+It recovers both components of binary metal/metal alloys. It can't
+recover the carbon from steel or cast iron.
+
+chests
+------
+
+The technic mod replaces the basic Minetest game's single type of
+chest with a range of chests that have different sizes and features.
+The chest types are identified by the materials from which they are made;
+the better chests are made from more exotic materials. The chest types
+form a linear sequence, each being (with one exception noted below)
+strictly more powerful than the preceding one. The sequence begins with
+the wooden chest from the basic game, and each later chest type is built
+by upgrading a chest of the preceding type. The chest types are:
+
+1. wooden chest: 8&times;4 (32) slots
+2. iron chest: 9&times;5 (45) slots
+3. copper chest: 12&times;5 (60) slots
+4. silver chest: 12&times;6 (72) slots
+5. gold chest: 15&times;6 (90) slots
+6. mithril chest: 15&times;6 (90) slots
+
+The iron and later chests have the ability to sort their contents,
+when commanded by a button in their interaction forms. Item types are
+sorted in the same order used in the unified\_inventory craft guide.
+The copper and later chests also have an auto-sorting facility that can
+be enabled from the interaction form. An auto-sorting chest automatically
+sorts its contents whenever a player closes the chest. The contents will
+then usually be in a sorted state when the chest is opened, but may not
+be if pneumatic tubes have operated on the chest while it was closed,
+or if two players have the chest open simultaneously.
+
+The silver and gold chests, but not the mithril chest, have a built-in
+sign-like capability. They can be given a textual label, which will
+be visible when hovering over the chest. The gold chest, but again not
+the mithril chest, can be further labelled with a colored patch that is
+visible from a moderate distance.
+
+The mithril chest is currently an exception to the upgrading system.
+It has only as many inventory slots as the preceding (gold) type, and has
+fewer of the features. It has no feature that other chests don't have:
+it is strictly weaker than the gold chest. It is planned that in the
+future it will acquire some unique features, but for now the only reason
+to use it is aesthetic.
+
+The size of the largest chests is dictated by the maximum size
+of interaction form that the game engine can successfully display.
+If in the future the engine becomes capable of handling larger forms,
+by scaling them to fit the screen, the sequence of chest sizes will
+likely be revised.
+
+As with the chest of the basic Minetest game, each chest type comes
+in both locked and unlocked flavors. All of the chests work with the
+pneumatic tubes of the pipeworks mod.
+
+radioactivity
+-------------
+
+The technic mod adds radioactivity to the game, as a hazard that can
+harm player characters. Certain substances in the game are radioactive,
+and when placed as blocks in the game world will damage nearby players.
+Conversely, some substances attenuate radiation, and so can be used
+for shielding. The radioactivity system is based on reality, but is
+not an attempt at serious simulation: like the rest of the game, it has
+many simplifications and deliberate deviations from reality in the name
+of game balance.
+
+In real life radiological hazards can be roughly divided into three
+categories based on the time scale over which they act: prompt radiation
+damage (such as radiation burns) that takes effect immediately; radiation
+poisoning that becomes visible in hours and lasts weeks; and cumulative
+effects such as increased cancer risk that operate over decades.
+The game's version of radioactivity causes only prompt damage, not
+any delayed effects. Damage comes in the abstracted form of removing
+the player's hit points, and is immediately visible to the player.
+As with all other kinds of damage in the game, the player can restore
+the hit points by eating food items. High-nutrition foods, such as the
+pie baskets supplied by the bushes\_classic mod, are a useful tool in
+dealing with radiological hazards.
+
+Only a small range of items in the game are radioactive. From the technic
+mod, the only radioactive items are uranium ore, refined uranium blocks,
+nuclear reactor cores (when operating), and the materials released when
+a nuclear reactor melts down. Other mods can plug into the technic
+system to make their own block types radioactive. Radioactive items
+are harmless when held in inventories. They only cause radiation damage
+when placed as blocks in the game world.
+
+The rate at which damage is caused by a radioactive block depends on the
+distance between the source and the player. Distance matters because the
+damaging radiation is emitted equally in all directions by the source,
+so with distance it spreads out, so less of it will strike a target
+of any specific size. The amount of radiation absorbed by a target
+thus varies in proportion to the inverse square of the distance from
+the source. The game imitates this aspect of real-life radioactivity,
+but with some simplifications. While in real life the inverse square law
+is only really valid for sources and targets that are small relative to
+the distance between them, in the game it is applied even when the source
+and target are large and close together. Specifically, the distance is
+measured from the center of the radioactive block to the abdomen of the
+player character. For extremely close encounters, such as where the
+player swims in a radioactive liquid, there is an enforced lower limit
+on the effective distance.
+
+Different types of radioactive block emit different amounts of radiation.
+The least radioactive of the radioactive block types is uranium ore,
+which causes 0.25 HP/s damage to a player 1 m away. A block of refined
+but unenriched uranium, as an example, is nine times as radioactive,
+and so will cause 2.25 HP/s damage to a player 1 m away. By the inverse
+square law, the damage caused by that uranium block reduces by a factor
+of four at twice the distance, that is to 0.5625 HP/s at a distance of 2
+m, or by a factor of nine at three times the distance, that is to 0.25
+HP/s at a distance of 3 m. Other radioactive block types are far more
+radioactive than these: the most radioactive of all, the result of a
+nuclear reactor melting down, is 1024 times as radioactive as uranium ore.
+
+Uranium blocks are radioactive to varying degrees depending on their
+isotopic composition. An isotope being fissile, and thus good as
+reactor fuel, is essentially uncorrelated with it being radioactive.
+The fissile U-235 is about six times as radioactive than the non-fissile
+U-238 that makes up the bulk of natural uranium, so one might expect that
+enriching from 0.7% fissile to 3.5% fissile (or depleting to 0.0%) would
+only change the radioactivity of uranium by a few percent. But actually
+the radioactivity of enriched uranium is dominated by the non-fissile
+U-234, which makes up only about 50 parts per million of natural uranium
+but is about 19000 times more radioactive than U-238. The radioactivity
+of natural uranium comes just about half from U-238 and half from U-234,
+and the uranium gets enriched in U-234 along with the U-235. This makes
+3.5%-fissile uranium about three times as radioactive as natural uranium,
+and 0.0%-fissile uranium about half as radioactive as natural uranium.
+
+Radiation is attenuated by the shielding effect of material along the
+path between the radioactive block and the player. In general, only
+blocks of homogeneous material contribute to the shielding effect: for
+example, a block of solid metal has a shielding effect, but a machine
+does not, even though the machine's ingredients include a metal case.
+The shielding effect of each block type is based on the real-life
+resistance of the material to ionising radiation, but for game balance
+the effectiveness of shielding is scaled down from real life, more so
+for stronger shield materials than for weaker ones. Also, whereas in
+real life materials have different shielding effects against different
+types of radiation, the game only has one type of damaging radiation,
+and so only one set of shielding values.
+
+Almost any solid or liquid homogeneous material has some shielding value.
+At the low end of the scale, 5 meters of wooden planks nearly halves
+radiation, though in that case the planks probably contribute more
+to safety by forcing the player to stay 5 m further away from the
+source than by actual attenuation. Dirt halves radiation in 2.4 m,
+and stone in 1.7 m. When a shield must be deliberately constructed,
+the preferred materials are metals, the denser the better. Iron and
+steel halve radiation in 1.1 m, copper in 1.0 m, and silver in 0.95 m.
+Lead would halve in 0.69 m if it were in the game, but it's not, which
+poses a bit of a problem due to the drawbacks of the three materials in
+the game that are better shielding than silver. Gold halves radiation
+in 0.53 m (factor of 3.7 per meter), but is a bit scarce to use for
+this purpose. Uranium halves radiation in 0.31 m (factor of 9.4 per
+meter), but is itself radioactive. The very best shielding in the game
+is nyancat material (nyancats and their rainbow blocks), which halves
+radiation in 0.22 m (factor of 24 per meter), but is extremely scarce.
+
+If the theoretical radiation damage from a particular source is
+sufficiently small, due to distance and shielding, then no damage at all
+will actually occur. This means that for any particular radiation source
+and shielding arrangement there is a safe distance to which a player can
+approach without harm. The safe distance is where the radiation damage
+would theoretically be 0.25 HP/s. This damage threshold is applied
+separately for each radiation source, so to be safe in a multi-source
+situation it is only necessary to be safe from each source individually.
+
+The best way to use uranium as shielding is in a two-layer structure,
+of uranium and some non-radioactive material. The uranium layer should
+be nearer to the primary radiation source and the non-radioactive layer
+nearer to the player. The uranium provides a great deal of shielding
+against the primary source, and the other material shields against
+the uranium layer. Due to the damage threshold mechanism, a meter of
+dirt is sufficient to shield fully against a layer of fully-depleted
+(0.0%-fissile) uranium. Obviously this is only worthwhile when the
+primary radiation source is more radioactive than a uranium block.
+
+When constructing permanent radiation shielding, it is necessary to
+pay attention to the geometry of the structure, and particularly to any
+holes that have to be made in the shielding, for example to accommodate
+power cables. Any hole that is aligned with the radiation source makes a
+"shine path" through which a player may be irradiated when also aligned.
+Shine paths can be avoided by using bent paths for cables, passing
+through unaligned holes in multiple shield layers. If the desired
+shielding effect depends on multiple layers, a hole in one layer still
+produces a partial shine path, along which the shielding is reduced,
+so the positioning of holes in each layer must still be considered.
+Tricky shine paths can also be addressed by just keeping players out of
+the dangerous area.
+
+electrical power
+----------------
+
+Most machines in technic are electrically powered. To operate them it is
+necessary to construct an electrical power network. The network links
+together power generators and power-consuming machines, connecting them
+using power cables.
+
+There are three tiers of electrical networking: low voltage (LV),
+medium voltage (MV), and high voltage (HV). Each network must operate
+at a single voltage, and most electrical items are specific to a single
+voltage. Generally, the machines of higher tiers are more powerful,
+but consume more energy and are more expensive to build, than machines
+of lower tiers. It is normal to build networks of all three tiers,
+in ascending order as one progresses through the game, but it is not
+strictly necessary to do this. Building HV equipment requires some parts
+that can only be manufactured using electrical machines, either LV or MV,
+so it is not possible to build an HV network first, but it is possible
+to skip either LV or MV on the way to HV.
+
+Each voltage has its own cable type, with distinctive insulation. Cable
+segments connect to each other and to compatible machines automatically.
+Incompatible electrical items don't connect. All non-cable electrical
+items must be connected via cable: they don't connect directly to each
+other. Most electrical items can connect to cables in any direction,
+but there are a couple of important exceptions noted below.
+
+To be useful, an electrical network must connect at least one power
+generator to at least one power-consuming machine. In addition to these
+items, the network must have a "switching station" in order to operate:
+no energy will flow without one. Unlike most electrical items, the
+switching station is not voltage-specific: the same item will manage
+a network of any tier. However, also unlike most electrical items,
+it is picky about the direction in which it is connected to the cable:
+the cable must be directly below the switching station.
+
+Hovering over a network's switching station will show the aggregate energy
+supply and demand, which is useful for troubleshooting. Electrical energy
+is measured in "EU", and power (energy flow) in EU per second (EU/s).
+Energy is shifted around a network instantaneously once per second.
+
+In a simple network with only generators and consumers, if total
+demand exceeds total supply then no energy will flow, the machines
+will do nothing, and the generators' output will be lost. To handle
+this situation, it is recommended to add a battery box to the network.
+A battery box will store generated energy, and when enough has been
+stored to run the consumers for one second it will deliver it to the
+consumers, letting them run part-time. It also stores spare energy
+when supply exceeds demand, to let consumers run full-time when their
+demand occasionally peaks above the supply. More battery boxes can
+be added to cope with larger periods of mismatched supply and demand,
+such as those resulting from using solar generators (which only produce
+energy in the daytime).
+
+When there are electrical networks of multiple tiers, it can be appealing
+to generate energy on one tier and transfer it to another. The most
+direct way to do this is with the "supply converter", which can be
+directly wired into two networks. It is another tier-independent item,
+and also particular about the direction of cable connections: it must
+have the cable of one network directly above, and the cable of another
+network directly below. The supply converter demands 10000 EU/s from
+the network above, and when this network gives it power it supplies 9000
+EU/s to the network below. Thus it is only 90% efficient, unlike most of
+the electrical system which is 100% efficient in moving energy around.
+To transfer more than 10000 EU/s between networks, connect multiple
+supply converters in parallel.
+
+powered machines
+----------------
+
+### powered machine tiers ###
+
+Each powered machine takes its power in some specific form, being
+either fuel-fired (burning fuel directly) or electrically powered at
+some specific voltage. There is a general progression through the
+game from using fuel-fired machines to electrical machines, and to
+higher electrical voltages. The most important kinds of machine come
+in multiple variants that are powered in different ways, so the earlier
+ones can be superseded. However, some machines are only available for
+a specific power tier, so the tier can't be entirely superseded.
+
+### powered machine upgrades ###
+
+Some machines have inventory slots that are used to upgrade them in
+some way. Generally, machines of MV and HV tiers have two upgrade slots,
+and machines of lower tiers (fuel-fired and LV) do not. Any item can
+be placed in an upgrade slot, but only specific items will have any
+upgrading effect. It is possible to have multiple upgrades of the same
+type, but this can't be achieved by stacking more than one upgrade item
+in one slot: it is necessary to put the same kind of item in more than one
+upgrade slot. The ability to upgrade machines is therefore very limited.
+Two kinds of upgrade are currently possible: an energy upgrade and a
+tube upgrade.
+
+An energy upgrade consists of a battery item, the same kind of battery
+that serves as a mobile energy store. The effect of an energy upgrade
+is to improve in some way the machine's use of electrical energy, most
+often by making it use less energy. The upgrade effect has no relation
+to energy stored in the battery: the battery's charge level is irrelevant
+and will not be affected.
+
+A tube upgrade consists of a control logic unit item. The effect of a
+tube upgrade is to make the machine able, or more able, to eject items
+it has finished with into pneumatic tubes. The machines that can take
+this kind of upgrade are in any case capable of accepting inputs from
+pneumatic tubes. These upgrades are essential in using powered machines
+as components in larger automated systems.
+
+### tubes with powered machines ###
+
+Generally, powered machines of MV and HV tiers can work with pneumatic
+tubes, and those of lower tiers cannot. (As an exception, the fuel-fired
+furnace from the basic Minetest game can accept inputs through tubes,
+but can't output into tubes.)
+
+If a machine can accept inputs through tubes at all, then this
+is a capability of the basic machine, not requiring any upgrade.
+Most item-processing machines take only one kind of input, and in that
+case they will accept that input from any direction. This doesn't match
+how tubes visually connect to the machines: generally tubes will visually
+connect to any face except the front, but an item passing through a tube
+in front of the machine will actually be accepted into the machine.
+
+A minority of machines take more than one kind of input, and in that
+case the input slot into which an arriving item goes is determined by the
+direction from which it arrives. In this case the machine may be picky
+about the direction of arriving items, associating each input type with
+a single face of the machine and not accepting inputs at all through the
+remaining faces. Again, the visual connection of tubes doesn't match:
+generally tubes will still visually connect to any face except the front,
+thus connecting to faces that neither accept inputs nor emit outputs.
+
+Machines do not accept items from tubes into non-input inventory slots:
+the output slots or upgrade slots. Output slots are normally filled
+only by the processing operation of the machine, and upgrade slots must
+be filled manually.
+
+Powered machines generally do not eject outputs into tubes without
+an upgrade. One tube upgrade will make them eject outputs at a slow
+rate; a second tube upgrade will increase the rate. Whether the slower
+rate is adequate depends on how it compares to the rate at which the
+machine produces outputs, and on how the machine is being used as part
+of a larger construct. The machine always ejects its outputs through a
+particular face, usually a side. Due to a bug, the side through which
+outputs are ejected is not consistent: when the machine is rotated one
+way, the direction of ejection is rotated the other way. This will
+probably be fixed some day, but because a straightforward fix would
+break half the machines already in use, the fix may be tied to some
+larger change such as free selection of the direction of ejection.
+
+### battery boxes ###
+
+The primary purpose of battery boxes is to temporarily store electrical
+energy to let an electrical network cope with mismatched supply and
+demand. They have a secondary purpose of charging and discharging
+powered tools. They are thus a mixture of electrical infrastructure,
+powered machine, and generator.
+
+MV and HV battery boxes have upgrade slots. Energy upgrades increase
+the capacity of a battery box, each by 10% of the un-upgraded capacity.
+This increase is far in excess of the capacity of the battery that forms
+the upgrade.
+
+For charging and discharging of power tools, rather than having input and
+output slots, each battery box has a charging slot and a discharging slot.
+A fully charged/discharged item stays in its slot. The rates at which a
+battery box can charge and discharge increase with voltage, so it can
+be worth building a battery box of higher tier before one has other
+infrastructure of that tier, just to get access to faster charging.
+
+MV and HV battery boxes work with pneumatic tubes. An item can be input
+to the charging slot through the bottom of the battery box, or to the
+discharging slot through the top. Items are not accepted through the
+front, back, or sides. With a tube upgrade, fully charged/discharged
+tools (as appropriate for their slot) will be ejected through a side.
+
+### processing machines ###
+
+The furnace, alloy furnace, grinder, extractor, compressor, and centrifuge
+have much in common. Each implements some industrial process that
+transforms items into other items, and they manner in which they present
+these processes as powered machines is essentially identical.
+
+Most of the processing machines operate on inputs of only a single type
+at a time, and correspondingly have only a single input slot. The alloy
+furnace is an exception: it operates on inputs of two distinct types at
+once, and correspondingly has two input slots. It doesn't matter which
+way round the alloy furnace's inputs are placed in the two slots.
+
+The processing machines are mostly available in variants for multiple
+tiers. The furnace and alloy furnace are each available in fuel-fired,
+LV, and MV forms. The grinder, extractor, and compressor are each
+available in LV and MV forms. The centrifuge is the only single-tier
+processing machine, being only available in MV form. The higher-tier
+machines process items faster than the lower-tier ones, but also have
+higher power consumption, usually taking more energy overall to perform
+the same amount of processing. The MV machines have upgrade slots,
+and energy upgrades reduce their energy consumption.
+
+The MV machines can work with pneumatic tubes. They accept inputs via
+tubes from any direction. For most of the machines, having only a single
+input slot, this is perfectly simple behavior. The alloy furnace is more
+complex: it will put an arriving item in either input slot, preferring to
+stack it with existing items of the same type. It doesn't matter which
+slot each of the alloy furnace's inputs is in, so it doesn't matter that
+there's no direct control ovar that, but there is a risk that supplying
+a lot of one item type through tubes will result in both slots containing
+the same type of item, leaving no room for the second input.
+
+The MV machines can be given a tube upgrade to make them automatically
+eject output items into pneumatic tubes. The items are always ejected
+through a side, though which side it is depends on the machine's
+orientation, due to a bug. Output items are always ejected singly.
+For some machines, such as the grinder, the ejection rate with a
+single tube upgrade doesn't keep up with the rate at which items can
+be processed. A second tube upgrade increases the ejection rate.
+
+The LV and fuel-fired machines do not work with pneumatic tubes, except
+that the fuel-fired furnace (actually part of the basic Minetest game)
+can accept inputs from tubes. Items arriving through the bottom of
+the furnace go into the fuel slot, and items arriving from all other
+directions go into the input slot.
+
+### music player ###
+
+The music player is an LV powered machine that plays audio recordings.
+It offers a selection of up to nine tracks. The technic modpack doesn't
+include specific music tracks for this purpose; they have to be installed
+separately.
+
+The music player gives the impression that the music is being played in
+the Minetest world. The music only plays as long as the music player
+is in place and is receiving electrical power, and the choice of music
+is controlled by interaction with the machine. The sound also appears
+to emanate specifically from the music player: the ability to hear it
+depends on the player's distance from the music player. However, the
+game engine doesn't currently support any other positional cues for
+sound, such as attenuation, panning, or HRTF. The impression of the
+sound being located in the Minetest world is also compromised by the
+subjective nature of track choice: the specific music that is played to
+a player depends on what media the player has installed.
+
+### CNC machine ###
+
+The CNC machine is an LV powered machine that cuts building blocks into a
+variety of sub-block shapes that are not covered by the crafting recipes
+of the stairs mod and its variants. Most of the target shapes are not
+rectilinear, involving diagonal or curved surfaces.
+
+Only certain kinds of building material can be processed in the CNC
+machine.
+
+### tool workshop ###
+
+The tool workshop is an MV powered machine that repairs mechanically-worn
+tools, such as pickaxes and the other ordinary digging tools. It has
+a single slot for a tool to be repaired, and gradually repairs the
+tool while it is powered. For any single tool, equal amounts of tool
+wear, resulting from equal amounts of tool use, take equal amounts of
+repair effort. Also, all repairable tools currently take equal effort
+to repair equal percentages of wear. The amount of tool use enabled by
+equal amounts of repair therefore depends on the tool type.
+
+The mechanical wear that the tool workshop repairs is always indicated in
+inventory displays by a colored bar overlaid on the tool image. The bar
+can be seen to fill and change color as the tool workshop operates,
+eventually disappearing when the repair is complete. However, not every
+item that shows such a wear bar is using it to show mechanical wear.
+A wear bar can also be used to indicate charging of a power tool with
+stored electrical energy, or filling of a container, or potentially for
+all sorts of other uses. The tool workshop won't affect items that use
+wear bars to indicate anything other than mechanical wear.
+
+The tool workshop has upgrade slots. Energy upgrades reduce its power
+consumption.
+
+It can work with pneumatic tubes. Tools to be repaired are accepted
+via tubes from any direction. With a tube upgrade, the tool workshop
+will also eject fully-repaired tools via one side, the choice of side
+depending on the machine's orientation, as for processing machines. It is
+safe to put into the tool workshop a tool that is already fully repaired:
+assuming the presence of a tube upgrade, the tool will be quickly ejected.
+Furthermore, any item of unrepairable type will also be ejected as if
+fully repaired. (Due to a historical limitation of the basic Minetest
+game, it is impossible for the tool workshop to distinguish between a
+fully-repaired tool and any item type that never displays a wear bar.)
+
+### quarry ###
+
+The quarry is an HV powered machine that automatically digs out a
+large area. The region that it digs out is a cuboid with a square
+horizontal cross section, located immediately behind the quarry machine.
+The quarry's action is slow and energy-intensive, but requires little
+player effort.
+
+The size of the quarry's horizontal cross section is configurable through
+the machine's interaction form. A setting referred to as "radius"
+is an integer number of meters which can vary from 2 to 8 inclusive.
+The horizontal cross section is a square with side length of twice the
+radius plus one meter, thus varying from 5 to 17 inclusive. Vertically,
+the quarry always digs from 3 m above the machine to 100 m below it,
+inclusive, a total vertical height of 104 m.
+
+Whatever the quarry digs up is ejected through the top of the machine,
+as if from a pneumatic tube. Normally a tube should be placed there
+to convey the material into a sorting system, processing machines, or
+at least chests. A chest may be placed directly above the machine to
+capture the output without sorting, but is liable to overflow.
+
+If the quarry encounters something that cannot be dug, such as a liquid,
+a locked chest, or a protected area, it will skip past that and attempt
+to continue digging. However, anything remaining in the quarry area
+after the machine has attempted to dig there will prevent the machine
+from digging anything directly below it, all the way to the bottom
+of the quarry. An undiggable block therefore casts a shadow of undug
+blocks below it. If liquid is encountered, it is quite likely to flow
+across the entire cross section of the quarry, preventing all digging.
+The depth at which the quarry is currently attempting to dig is reported
+in its interaction form, and can be manually reset to the top of the
+quarry, which is useful to do if an undiggable obstruction has been
+manually removed.
+
+The quarry consumes 10 kEU per block dug, which is quite a lot of energy.
+With most of what is dug being mere stone, it is usually not economically
+favorable to power a quarry from anything other than solar power.
+In particular, one cannot expect to power a quarry by burning the coal
+that it digs up.
+
+Given sufficient power, the quarry digs at a rate of one block per second.
+This is rather tedious to wait for. Unfortunately, leaving the quarry
+unattended normally means that the Minetest server won't keep the machine
+running: it needs a player nearby. This can be resolved by using a world
+anchor. The digging is still quite slow, and independently of whether a
+world anchor is used the digging can be speeded up by placing multiple
+quarry machines with overlapping digging areas. Four can be placed to
+dig identical areas, one on each side of the square cross section.
+
+### forcefield emitter ###
+
+The forcefield emitter is an HV powered machine that generates a
+forcefield remeniscent of those seen in many science-fiction stories.
+
+The emitter can be configured to generate a forcefield of either
+spherical or cubical shape, in either case centered on the emitter.
+The size of the forcefield is configured using a radius parameter that
+is an integer number of meters which can vary from 5 to 20 inclusive.
+For a spherical forcefield this is simply the radius of the forcefield;
+for a cubical forcefield it is the distance from the emitter to the
+center of each square face.
+
+The power drawn by the emitter is proportional to the surface area of
+the forcefield being generated. A spherical forcefield is therefore the
+cheapest way to enclose a specified volume of space with a forcefield,
+if the shape of the space doesn't matter. A cubical forcefield is less
+efficient at enclosing volume, but is cheaper than the larger spherical
+forcefield that would be required if it is necessary to enclose a
+cubical space.
+
+The emitter is normally controlled merely through its interaction form,
+which has an enable/disable toggle. However, it can also (via the form)
+be placed in a mesecon-controlled mode. If mesecon control is enabled,
+the emitter must be receiving a mesecon signal in addition to being
+manually enabled, in order for it to generate the forcefield.
+
+The forcefield itself behaves largely as if solid, despite being
+immaterial: it cannot be traversed, and prevents access to blocks behind
+it. It is transparent, but not totally invisible. It cannot be dug.
+Some effects can pass through it, however, such as the beam of a mining
+laser, and explosions. In fact, explosions as currently implemented by
+the tnt mod actually temporarily destroy the forcefield itself; the tnt
+mod assumes too much about the regularity of node types.
+
+The forcefield occupies space that would otherwise have been air, but does
+not replace or otherwise interfere with materials that are solid, liquid,
+or otherwise not just air. If such an object blocking the forcefield is
+removed, the forcefield will quickly extend into the now-available space,
+but it does not do so instantly: there is a brief moment when the space
+is air and can be traversed.
+
+It is possible to have a doorway in a forcefield, by placing in advance,
+in space that the forcefield would otherwise occupy, some non-air blocks
+that can be walked through. For example, a door suffices, and can be
+opened and closed while the forcefield is in place.
+
+power generators
+----------------
+
+### fuel-fired generators ###
+
+The fiel-fired generators are electrical power generators that generate
+power by the combustion of fuel. Versions of them are available for
+all three voltages (LV, MV, and HV). These are all capable of burning
+any type of combustible fuel, such as coal. They are relatively easy
+to build, and so tend to be the first kind of generator used to power
+electrical machines. In this role they form an intermediate step between
+the directly fuel-fired machines and a more mature electrical network
+powered by means other than fuel combustion. They are also, by virtue of
+simplicity and controllability, a useful fallback or peak load generator
+for electrical networks that normally use more sophisticated generators.
+
+The MV and HV fuel-fired generators can accept fuel via pneumatic tube,
+from any direction.
+
+Keeping a fuel-fired generator fully fuelled is usually wasteful, because
+it will burn fuel as long as it has any, even if there is no demand for
+the electrical power that it generates. This is unlike the directly
+fuel-fired machines, which only burn fuel when they have work to do.
+To satisfy intermittent demand without waste, a fuel-fired generator must
+only be given fuel when there is either demand for the energy or at least
+sufficient battery capacity on the network to soak up the excess energy.
+
+The higher-tier fuel-fired generators get much more energy out of a
+fuel item than the lower-tier ones. The difference is much more than
+is needed to overcome the inefficiency of supply converters, so it is
+worth operating fuel-fired generators at a higher tier than the machines
+being powered.
+
+### solar generators ###
+
+The solar generators are electrical power generators that generate power
+from sunlight. Versions of them are available for all three voltages
+(LV, MV, and HV). There are four types in total, two LV and one each
+of MV and HV, forming a sequence of four tiers. The higher-tier ones
+are each built mainly from three solar generators of the next tier down,
+and their outputs scale in rough accordance, tripling at each tier.
+
+To operate, an arrayed solar generator must be at elevation +1 or above
+and have a transparent block (typically air) immediately above it.
+It will generate power only when the block above is well lit during
+daylight hours. It will generate more power at higher elevation,
+reaching maximum output at elevation +36 or higher when sunlit. The small
+solar generator has similar rules with slightly different thresholds.
+These rules are an attempt to ensure that the generator will only operate
+from sunlight, but it is actually possible to fool them to some extent
+with light sources such as meselamps.
+
+### hydro generator ###
+
+The hydro generator is an LV power generator that generates a small amount
+of power from the natural motion of water. To operate, the generator must
+be horizontally adjacent to water. It doesn't matter whether the water
+consists of source blocks or flowing blocks. Having water adjacent on
+more than one side, up to the full four, increases the generator's output.
+The water itself is unaffected by the generator.
+
+### geothermal generator ###
+
+The geothermal generator is an LV power generator that generates a small
+amount of power from the temperature difference between lava and water.
+To operate, the generator must be horizontally adjacent to both lava
+and water. It doesn't matter whether the liquids consist of source
+blocks or flowing blocks.
+
+Beware that if lava and water blocks are adjacent to each other then the
+lava will be solidified into stone or obsidian. If the lava adjacent to
+the generator is thus destroyed, the generator will stop producing power.
+Currently, in the default Minetest game, lava is destroyed even if
+it is only diagonally adjacent to water. Under these circumstances,
+the only way to operate the geothermal generator is with it adjacent
+to one lava block and one water block, which are on opposite sides of
+the generator. If diagonal adjacency doesn't destroy lava, such as with
+the gloopblocks mod, then it is possible to have more than one lava or
+water block adjacent to the geothermal generator. This increases the
+generator's output, with the maximum output achieved with two adjacent
+blocks of each liquid.
+
+### wind generator ###
+
+The wind generator is an MV power generator that generates a moderate
+amount of energy from wind. To operate, the generator must be placed
+atop a column of at least 20 wind mill frame blocks, and must be at
+an elevation of +30 or higher. It generates more at higher elevation,
+reaching maximum output at elevation +50 or higher. Its surroundings
+don't otherwise matter; it doesn't actually need to be in open air.
+
+### nuclear generator ###
+
+The nuclear generator (nuclear reactor) is an HV power generator that
+generates a large amount of energy from the controlled fission of
+uranium-235. It must be fuelled, with uranium fuel rods, but consumes
+the fuel quite slowly in relation to the rate at which it is likely to
+be mined. The operation of a nuclear reactor poses radiological hazards
+to which some thought must be given. Economically, the use of nuclear
+power requires a high capital investment, and a secure infrastructure,
+but rewards the investment well.
+
+Nuclear fuel is made from uranium. Natural uranium doesn't have a
+sufficiently high proportion of U-235, so it must first be enriched
+via centrifuge. Producing one unit of 3.5%-fissile uranium requires
+the input of five units of 0.7%-fissile (natural) uranium, and produces
+four units of 0.0%-fissile (fully depleted) uranium as a byproduct.
+It takes five ingots of 3.5%-fissile uranium to make each fuel rod, and
+six rods to fuel a reactor. It thus takes the input of the equivalent
+of 150 ingots of natural uranium, which can be obtained from the mining
+of 75 blocks of uranium ore, to make a full set of reactor fuel.
+
+The nuclear reactor is a large multi-block structure. Only one block in
+the structure, the reactor core, is of a type that is truly specific to
+the reactor; the rest of the structure consists of blocks that have mainly
+non-nuclear uses. The reactor core is where all the generator-specific
+action happens: it is where the fuel rods are inserted, and where the
+power cable must connect to draw off the generated power.
+
+The reactor structure consists of concentric layers, each a cubical
+shell, around the core. Immediately around the core is a layer of water,
+representing the reactor coolant; water blocks may be either source blocks
+or flowing blocks. Around that is a layer of stainless steel blocks,
+representing the reactor pressure vessel, and around that a layer of
+blast-resistant concrete blocks, representing a containment structure.
+It is customary, though no longer mandatory, to surround this with a
+layer of ordinary concrete blocks. The mandatory reactor structure
+makes a 7&times;7&times;7 cube, and the full customary structure a
+9&times;9&times;9 cube.
+
+The layers surrounding the core don't have to be absolutely complete.
+Indeed, if they were complete, it would be impossible to cable the core to
+a power network. The cable makes it necessary to have at least one block
+missing from each surrounding layer. The water layer is only permitted
+to have one water block missing of the 26 possible. The steel layer may
+have up to two blocks missing of the 98 possible, and the blast-resistant
+concrete layer may have up to two blocks missing of the 218 possible.
+Thus it is possible to have not only a cable duct, but also a separate
+inspection hole through the solid layers. The separate inspection hole
+is of limited use: the cable duct can serve double duty.
+
+Once running, the reactor core is significantly radioactive. The layers
+of reactor structure provide quite a lot of shielding, but not enough
+to make the reactor safe to be around, in two respects. Firstly, the
+shortest possible path from the core to a player outside the reactor
+is sufficiently short, and has sufficiently little shielding material,
+that it will damage the player. This only affects a player who is
+extremely close to the reactor, and close to a face rather than a vertex.
+The customary additional layer of ordinary concrete around the reactor
+adds sufficient distance and shielding to negate this risk, but it can
+also be addressed by just keeping extra distance (a little over two
+meters of air).
+
+The second radiological hazard of a running reactor arises from shine
+paths; that is, specific paths from the core that lack sufficient
+shielding. The necessary cable duct, if straight, forms a perfect
+shine path, because the cable itself has no radiation shielding effect.
+Any secondary inspection hole also makes a shine path, along which the
+only shielding material is the water of the reactor coolant. The shine
+path aspect of the cable duct can be ameliorated by adding a kink in the
+cable, but this still yields paths with reduced shielding. Ultimately,
+shine paths must be managed either with specific shielding outside the
+mandatory structure, or with additional no-go areas.
+
+The radioactivity of an operating reactor core makes starting up a reactor
+hazardous, and can come as a surprise because the non-operating core
+isn't radioactive at all. The radioactive damage is survivable, but it is
+normally preferable to avoid it by some care around the startup sequence.
+To start up, the reactor must have a full set of fuel inserted, have all
+the mandatory structure around it, and be cabled to a switching station.
+Only the fuel insertion requires direct access to the core, so irradiation
+of the player can be avoided by making one of the other two criteria be
+the last one satisfied. Completing the cabling to a switching station
+is the easiest to do from a safe distance.
+
+Once running, the reactor will generate 100 kEU/s for a week (168 hours,
+604800 seconds), a total of 6.048 GEU from one set of fuel. After the
+week is up, it will stop generating and no longer be radioactive. It can
+then be refuelled to run for another week. It is not really intended
+to be possible to pause a running reactor, but actually disconnecting
+it from a switching station will have the effect of pausing the week.
+This will probably change in the future. A paused reactor is still
+radioactive, just not generating electrical power.
+
+A running reactor can't be safely dismantled, and not only because
+dismantling the reactor implies removing the shielding that makes
+it safe to be close to the core. The mandatory parts of the reactor
+structure are not just mandatory in order to start the reactor; they're
+mandatory in order to keep it intact. If the structure around the core
+gets damaged, and remains damaged, the core will eventually melt down.
+How long there is before meltdown depends on the extent of the damage;
+if only one mandatory block is missing, meltdown will follow in 100
+seconds. While the structure of a running reactor is in a damaged state,
+heading towards meltdown, a siren built into the reactor core will sound.
+If the structure is rectified, the siren will signal all-clear. If the
+siren stops sounding without signalling all-clear, then it was stopped
+by meltdown.
+
+If meltdown is imminent because of damaged reactor structure, digging the
+reactor core is not a way to avert it. Digging the core of a running
+reactor causes instant meltdown. The only way to dismantle a reactor
+without causing meltdown is to start by waiting for it to finish the
+week-long burning of its current set of fuel. Once a reactor is no longer
+operating, it can be dismantled by ordinary means, with no special risks.
+
+Meltdown, if it occurs, destroys the reactor and poses a major
+environmental hazard. The reactor core melts, becoming a hot, highly
+radioactive liquid known as "corium". A single meltdown yields a single
+corium source block, where the core used to be. Corium flows, and the
+flowing corium is very destructive to whatever it comes into contact with.
+Flowing corium also randomly solidifies into a radioactive solid called
+"Chernobylite". The random solidification and random destruction of
+solid blocks means that the flow of corium is constantly changing.
+This combined with the severe radioactivity makes corium much more
+challenging to deal with than lava. If a meltdown is left to its own
+devices, it gets worse over time, as the corium works its way through
+the reactor structure and starts to flow over a variety of paths.
+It is best to tackle a meltdown quickly; the priority is to extinguish
+the corium source block, normally by dropping gravel into it. Only the
+most motivated should attempt to pick up the corium in a bucket.
+
+administrative world anchor
+---------------------------
+
+A world anchor is an object in the Minetest world that causes the server
+to keep surrounding parts of the world running even when no players
+are nearby. It is mainly used to allow machines to run unattended:
+normally machines are suspended when not near a player. The technic
+mod supplies a form of world anchor, as a placable block, but it is not
+straightforwardly available to players. There is no recipe for it, so it
+is only available if explicitly spawned into existence by someone with
+administrative privileges. In a single-player world, the single player
+normally has administrative privileges, and can obtain a world anchor
+by entering the chat command "/give singleplayer technic:admin\_anchor".
+
+The world anchor tries to force a cubical area, centered upon the anchor,
+to stay loaded. The distance from the anchor to the most distant map
+nodes that it will keep loaded is referred to as the "radius", and can be
+set in the world anchor's interaction form. The radius can be set as low
+as 0, meaning that the anchor only tries to keep itself loaded, or as high
+as 255, meaning that it will operate on a 511&times;511&times;511 cube.
+Larger radii are forbidden, to avoid typos causing the server excessive
+work; to keep a larger area loaded, use multiple anchors. Also use
+multiple anchors if the area to be kept loaded is not well approximated
+by a cube.
+
+The world is always kept loaded in units of 16&times;16&times;16 cubes,
+confusingly known as "map blocks". The anchor's configured radius takes
+no account of map block boundaries, but the anchor's effect is actually to
+keep loaded each map block that contains any part of the configured cube.
+The anchor's interaction form includes a status note showing how many map
+blocks this is, and how many of those it is successfully keeping loaded.
+When the anchor is disabled, as it is upon placement, it will always
+show that it is keeping no map blocks loaded; this does not indicate
+any kind of failure.
+
+The world anchor can optionally be locked. When it is locked, only
+the anchor's owner, the player who placed it, can reconfigure it or
+remove it. Only the owner can lock it. Locking an anchor is useful
+if the use of anchors is being tightly controlled by administrators:
+an administrator can set up a locked anchor and be sure that it will
+not be set by ordinary players to an unapproved configuration.
+
+The server limits the ability of world anchors to keep parts of the world
+loaded, to avoid overloading the server. The total number of map blocks
+that can be kept loaded in this way is set by the server configuration
+item "max\_forceloaded\_blocks" (in minetest.conf), which defaults to
+only 16. For comparison, each player normally keeps 125 map blocks loaded
+(a radius of 32). If an enabled world anchor shows that it is failing to
+keep all the map blocks loaded that it would like to, this can be fixed
+by increasing max\_forceloaded\_blocks by the amount of the shortfall.
+
+The tight limit on force-loading is the reason why the world anchor is
+not directly available to players. With the limit so low both by default
+and in common practice, the only feasible way to determine where world
+anchors should be used is for administrators to decide it directly.
+
+subjects missing from this manual
+---------------------------------
+
+This manual needs to be extended with sections on:
+
+* powered tools
+ * tool charging
+ * battery and energy crystals
+ * chainsaw
+ * flashlight
+ * mining lasers
+ * mining drills
+ * prospector
+ * sonic screwdriver
+* liquid cans
+* wrench
+* frames
+* templates
diff --git a/technic/modpack.txt b/technic/modpack.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/technic/modpack.txt
@@ -0,0 +1 @@
+
diff --git a/technic/technic/README.md b/technic/technic/README.md
new file mode 100644
index 0000000..b6aa05f
--- /dev/null
+++ b/technic/technic/README.md
@@ -0,0 +1,27 @@
+Technic
+=======
+
+License
+-------
+
+Copyright (C) 2012-2014 Maciej Kasatkin (RealBadAngel)
+
+Technic chests code is licensed under the GNU LGPLv2+.
+
+Texture licenses:
+
+BlockMen modified by Zefram (CC BY-SA 3.0):
+ * technic_chernobylite_block.png
+ * technic_corium_flowing_animated.png
+ * technic_corium_source_animated.png
+
+celeron55 (Perttu Ahola) modified by Zefram (CC BY-SA 3.0):
+ * technic_bucket_corium.png
+
+sdzen (Elise Staudter) (CC BY-SA 3.0):
+ * most of the older 16x16 textures
+
+RealBadAngel: (WTFPL)
+ * Everything else.
+
+CC BY-SA 3.0: <http://creativecommons.org/licenses/by-sa/3.0/>
diff --git a/technic/technic/config.lua b/technic/technic/config.lua
new file mode 100644
index 0000000..81a2224
--- /dev/null
+++ b/technic/technic/config.lua
@@ -0,0 +1,18 @@
+technic.config = technic.config or Settings(minetest.get_worldpath().."/technic.conf")
+
+local conf_table = technic.config:to_table()
+
+local defaults = {
+ enable_mining_drill = "true",
+ enable_mining_laser = "true",
+ enable_flashlight = "false",
+ enable_wind_mill = "false",
+ enable_frames = "false",
+ enable_corium_griefing = "true",
+}
+
+for k, v in pairs(defaults) do
+ if conf_table[k] == nil then
+ technic.config:set(k, v)
+ end
+end
diff --git a/technic/technic/crafts.lua b/technic/technic/crafts.lua
new file mode 100644
index 0000000..8a8cd37
--- /dev/null
+++ b/technic/technic/crafts.lua
@@ -0,0 +1,193 @@
+-- check if we have the necessary dependencies to allow actually using these materials in the crafts
+local mesecons_materials = minetest.get_modpath("mesecons_materials")
+
+-- tubes crafting recipes
+
+minetest.register_craft({
+ output = 'pipeworks:accelerator_tube_1',
+ recipe = {
+ {'technic:copper_coil', 'pipeworks:tube_1', 'technic:copper_coil'},
+ }
+})
+
+minetest.register_craft({
+ output = 'pipeworks:teleport_tube_1',
+ recipe = {
+ {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
+ {'pipeworks:tube_1', 'technic:control_logic_unit', 'pipeworks:tube_1'},
+ {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:diamond_drill_head',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'},
+ {'default:diamond', '', 'default:diamond'},
+ {'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:green_energy_crystal',
+ recipe = {
+ {'default:gold_ingot', 'technic:battery', 'dye:green'},
+ {'technic:battery', 'technic:red_energy_crystal', 'technic:battery'},
+ {'dye:green', 'technic:battery', 'default:gold_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:blue_energy_crystal',
+ recipe = {
+ {'moreores:mithril_ingot', 'technic:battery', 'dye:blue'},
+ {'technic:battery', 'technic:green_energy_crystal', 'technic:battery'},
+ {'dye:blue', 'technic:battery', 'moreores:mithril_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:red_energy_crystal',
+ recipe = {
+ {'moreores:silver_ingot', 'technic:battery', 'dye:red'},
+ {'technic:battery', 'default:diamondblock', 'technic:battery'},
+ {'dye:red', 'technic:battery', 'moreores:silver_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:fine_copper_wire 2',
+ recipe = {
+ {'', 'default:copper_ingot', ''},
+ {'', 'default:copper_ingot', ''},
+ {'', 'default:copper_ingot', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:fine_gold_wire 2',
+ recipe = {
+ {'', 'default:gold_ingot', ''},
+ {'', 'default:gold_ingot', ''},
+ {'', 'default:gold_ingot', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:fine_silver_wire 2',
+ recipe = {
+ {'', 'moreores:silver_ingot', ''},
+ {'', 'moreores:silver_ingot', ''},
+ {'', 'moreores:silver_ingot', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:copper_coil 1',
+ recipe = {
+ {'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'},
+ {'technic:wrought_iron_ingot', '', 'technic:wrought_iron_ingot'},
+ {'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:motor',
+ recipe = {
+ {'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'},
+ {'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'},
+ {'technic:carbon_steel_ingot', 'default:copper_ingot', 'technic:carbon_steel_ingot'},
+ }
+})
+
+local isolation = mesecons_materials and "mesecons_materials:fiber" or "technic:rubber"
+
+minetest.register_craft({
+ output = 'technic:lv_transformer',
+ recipe = {
+ {isolation, 'technic:wrought_iron_ingot', isolation},
+ {'technic:copper_coil', 'technic:wrought_iron_ingot', 'technic:copper_coil'},
+ {'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:mv_transformer',
+ recipe = {
+ {isolation, 'technic:carbon_steel_ingot', isolation},
+ {'technic:copper_coil', 'technic:carbon_steel_ingot', 'technic:copper_coil'},
+ {'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:hv_transformer',
+ recipe = {
+ {isolation, 'technic:stainless_steel_ingot', isolation},
+ {'technic:copper_coil', 'technic:stainless_steel_ingot', 'technic:copper_coil'},
+ {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:control_logic_unit',
+ recipe = {
+ {'', 'technic:fine_gold_wire', ''},
+ {'default:copper_ingot', 'technic:silicon_wafer', 'default:copper_ingot'},
+ {'', 'technic:chromium_ingot', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:mixed_metal_ingot 9',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
+ {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
+ {'moreores:tin_ingot', 'moreores:tin_ingot', 'moreores:tin_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:carbon_cloth',
+ recipe = {
+ {'technic:graphite', 'technic:graphite', 'technic:graphite'}
+ }
+})
+
+minetest.register_craft({
+ output = "technic:machine_casing",
+ recipe = {
+ { "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" },
+ { "technic:cast_iron_ingot", "technic:brass_ingot", "technic:cast_iron_ingot" },
+ { "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" },
+ },
+})
+
+-- Remove some recipes
+-- Bronze
+minetest.register_craft({
+ type = "shapeless",
+ output = "default:bronze_ingot 0",
+ recipe = {"default:copper_ingot", "default:steel_ingot"}
+})
+
+-- Accelerator tube
+minetest.register_craft({
+ output = "pipeworks:accelerator_tube_1 0",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:mese_crystal_fragment", "default:steel_ingot", "default:mese_crystal_fragment" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+-- Teleport tube
+minetest.register_craft({
+ output = "pipeworks:teleport_tube_1 0",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:desert_stone", "default:mese", "default:desert_stone" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
diff --git a/technic/technic/depends.txt b/technic/technic/depends.txt
new file mode 100644
index 0000000..746fe34
--- /dev/null
+++ b/technic/technic/depends.txt
@@ -0,0 +1,8 @@
+default
+pipeworks
+technic_worldgen
+bucket?
+mesecons_mvps?
+intllib?
+unified_inventory?
+vector_extras?
diff --git a/technic/technic/helpers.lua b/technic/technic/helpers.lua
new file mode 100644
index 0000000..e8efcf3
--- /dev/null
+++ b/technic/technic/helpers.lua
@@ -0,0 +1,67 @@
+--load config
+local sepchar = nil
+do
+ local sepcode = technic.config:get("thousand_separator")
+ --default is SI style
+ sepchar = sepcode and string.char(sepcode) or " "
+ baresepchar = sepchar
+ --handling if sepchar is magic...
+ for magic in string.gmatch("().%+-*?[^$", ".") do
+ if sepchar == magic then sepchar = "%"..sepchar end
+ end
+end
+
+-- Only changes name, keeps other params
+function technic.swap_node(pos, name)
+ local node = minetest.get_node(pos)
+ if node.name ~= name then
+ node.name = name
+ minetest.swap_node(pos, node)
+ end
+ return node.name
+end
+
+-- Fully charge RE chargeable item.
+-- Must be defined early to reference in item definitions.
+function technic.refill_RE_charge(stack)
+ local max_charge = technic.power_tools[stack:get_name()]
+ if not max_charge then return stack end
+ technic.set_RE_wear(stack, max_charge, max_charge)
+ local meta = minetest.deserialize(stack:get_metadata()) or {}
+ meta.charge = max_charge
+ stack:set_metadata(minetest.serialize(meta))
+ return stack
+end
+
+local function resolve_name(function_name)
+ local a = _G
+ for key in string.gmatch(function_name, "([^%.]+)(%.?)") do
+ if a[key] then
+ a = a[key]
+ else
+ return nil
+ end
+ end
+ return a
+end
+
+function technic.function_exists(function_name)
+ return type(resolve_name(function_name)) == 'function'
+end
+
+-- if the node is loaded, returns it. If it isn't loaded, load it and return nil.
+function technic.get_or_load_node(pos)
+ local node_or_nil = minetest.get_node_or_nil(pos)
+ if node_or_nil then return node_or_nil end
+ local vm = VoxelManip()
+ local MinEdge, MaxEdge = vm:read_from_map(pos, pos)
+ return nil
+end
+
+function technic.prettynum(num)
+ local str, k = tostring(num), nil
+ repeat
+ str, k = str:gsub("^(-?%d+)(%d%d%d)", "%1"..sepchar.."%2")
+ until k == 0
+ return str
+end \ No newline at end of file
diff --git a/technic/technic/init.lua b/technic/technic/init.lua
new file mode 100644
index 0000000..25361af
--- /dev/null
+++ b/technic/technic/init.lua
@@ -0,0 +1,54 @@
+-- Minetest 0.4.7 mod: technic
+-- namespace: technic
+-- (c) 2012-2013 by RealBadAngel <mk@realbadangel.pl>
+
+technic = rawget(_G, "technic") or {}
+technic.creative_mode = minetest.setting_getbool("creative_mode")
+
+technic.tube_inject_item = pipeworks.tube_inject_item or function (pos, start_pos, velocity, item)
+ local tubed = pipeworks.tube_item(vector.new(pos), item)
+ tubed:get_luaentity().start_pos = vector.new(start_pos)
+ tubed:setvelocity(velocity)
+ tubed:setacceleration(vector.new(0, 0, 0))
+end
+
+local load_start = os.clock()
+local modpath = minetest.get_modpath("technic")
+technic.modpath = modpath
+
+-- Boilerplate to support intllib
+if minetest.get_modpath("intllib") then
+ technic.getter = intllib.Getter()
+else
+ technic.getter = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end
+end
+local S = technic.getter
+
+-- Read configuration file
+dofile(modpath.."/config.lua")
+
+-- Helper functions
+dofile(modpath.."/helpers.lua")
+
+-- Items
+dofile(modpath.."/items.lua")
+
+-- Craft recipes for items
+dofile(modpath.."/crafts.lua")
+
+-- Register functions
+dofile(modpath.."/register.lua")
+
+-- Machines
+dofile(modpath.."/machines/init.lua")
+
+-- Tools
+dofile(modpath.."/tools/init.lua")
+
+-- Aliases for legacy node/item names
+dofile(modpath.."/legacy.lua")
+
+if minetest.setting_getbool("log_mods") then
+ print(S("[Technic] Loaded in %f seconds"):format(os.clock() - load_start))
+end
+
diff --git a/technic/technic/items.lua b/technic/technic/items.lua
new file mode 100644
index 0000000..27e05e4
--- /dev/null
+++ b/technic/technic/items.lua
@@ -0,0 +1,221 @@
+
+local S = technic.getter
+
+minetest.register_craftitem("technic:silicon_wafer", {
+ description = S("Silicon Wafer"),
+ inventory_image = "technic_silicon_wafer.png",
+})
+
+minetest.register_craftitem( "technic:doped_silicon_wafer", {
+ description = S("Doped Silicon Wafer"),
+ inventory_image = "technic_doped_silicon_wafer.png",
+})
+
+minetest.register_craftitem("technic:uranium_fuel", {
+ description = S("Uranium Fuel"),
+ inventory_image = "technic_uranium_fuel.png",
+})
+
+minetest.register_craftitem( "technic:diamond_drill_head", {
+ description = S("Diamond Drill Head"),
+ inventory_image = "technic_diamond_drill_head.png",
+})
+
+minetest.register_tool("technic:blue_energy_crystal", {
+ description = S("Blue Energy Crystal"),
+ inventory_image = minetest.inventorycube(
+ "technic_diamond_block_blue.png",
+ "technic_diamond_block_blue.png",
+ "technic_diamond_block_blue.png"),
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ tool_capabilities = {
+ max_drop_level = 0,
+ groupcaps = {
+ fleshy = {times={}, uses=10000, maxlevel=0}
+ }
+ }
+})
+
+minetest.register_tool("technic:green_energy_crystal", {
+ description = S("Green Energy Crystal"),
+ inventory_image = minetest.inventorycube(
+ "technic_diamond_block_green.png",
+ "technic_diamond_block_green.png",
+ "technic_diamond_block_green.png"),
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ tool_capabilities = {
+ max_drop_level = 0,
+ groupcaps = {
+ fleshy = {times={}, uses=10000, maxlevel=0}
+ }
+ }
+})
+
+minetest.register_tool("technic:red_energy_crystal", {
+ description = S("Red Energy Crystal"),
+ inventory_image = minetest.inventorycube(
+ "technic_diamond_block_red.png",
+ "technic_diamond_block_red.png",
+ "technic_diamond_block_red.png"),
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ tool_capabilities = {
+ max_drop_level = 0,
+ groupcaps = {
+ fleshy = {times={}, uses=10000, maxlevel=0}
+ }
+ }
+})
+
+
+minetest.register_craftitem("technic:fine_copper_wire", {
+ description = S("Fine Copper Wire"),
+ inventory_image = "technic_fine_copper_wire.png",
+})
+
+minetest.register_craftitem("technic:fine_gold_wire", {
+ description = S("Fine Gold Wire"),
+ inventory_image = "technic_fine_gold_wire.png",
+})
+
+minetest.register_craftitem("technic:fine_silver_wire", {
+ description = S("Fine Silver Wire"),
+ inventory_image = "technic_fine_silver_wire.png",
+})
+
+minetest.register_craftitem("technic:copper_coil", {
+ description = S("Copper Coil"),
+ inventory_image = "technic_copper_coil.png",
+})
+
+minetest.register_craftitem("technic:motor", {
+ description = S("Electric Motor"),
+ inventory_image = "technic_motor.png",
+})
+
+minetest.register_craftitem("technic:lv_transformer", {
+ description = S("Low Voltage Transformer"),
+ inventory_image = "technic_lv_transformer.png",
+})
+
+minetest.register_craftitem("technic:mv_transformer", {
+ description = S("Medium Voltage Transformer"),
+ inventory_image = "technic_mv_transformer.png",
+})
+
+minetest.register_craftitem( "technic:hv_transformer", {
+ description = S("High Voltage Transformer"),
+ inventory_image = "technic_hv_transformer.png",
+})
+
+minetest.register_craftitem( "technic:control_logic_unit", {
+ description = S("Control Logic Unit"),
+ inventory_image = "technic_control_logic_unit.png",
+})
+
+minetest.register_craftitem("technic:mixed_metal_ingot", {
+ description = S("Mixed Metal Ingot"),
+ inventory_image = "technic_mixed_metal_ingot.png",
+})
+
+minetest.register_craftitem("technic:composite_plate", {
+ description = S("Composite Plate"),
+ inventory_image = "technic_composite_plate.png",
+})
+
+minetest.register_craftitem("technic:copper_plate", {
+ description = S("Copper Plate"),
+ inventory_image = "technic_copper_plate.png",
+})
+
+minetest.register_craftitem("technic:carbon_plate", {
+ description = S("Carbon Plate"),
+ inventory_image = "technic_carbon_plate.png",
+})
+
+minetest.register_craftitem("technic:graphite", {
+ description = S("Graphite"),
+ inventory_image = "technic_graphite.png",
+})
+
+minetest.register_craftitem("technic:carbon_cloth", {
+ description = S("Carbon Cloth"),
+ inventory_image = "technic_carbon_cloth.png",
+})
+
+minetest.register_node("technic:machine_casing", {
+ description = S("Machine Casing"),
+ groups = {cracky=2},
+ sunlight_propagates = true,
+ paramtype = "light",
+ drawtype = "allfaces",
+ tiles = {"technic_machine_casing.png"},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+for p = 0, 35 do
+ local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
+ local psuffix = p == 7 and "" or p
+ local ingot = "technic:uranium"..psuffix.."_ingot"
+ local block = "technic:uranium"..psuffix.."_block"
+ local ov = p == 7 and minetest.override_item or nil;
+ (ov or minetest.register_craftitem)(ingot, {
+ description = string.format(S("%.1f%%-Fissile Uranium Ingot"), p/10),
+ inventory_image = "technic_uranium_ingot.png",
+ groups = {uranium_ingot=1, not_in_creative_inventory=nici},
+ });
+ -- Note on radioactivity of blocks:
+ -- Source: <http://www.wise-uranium.org/rup.html>
+ -- The baseline radioactivity of an isotope is not especially
+ -- correlated with whether it's fissile (i.e., suitable as
+ -- reactor fuel). Natural uranium consists mainly of fissile
+ -- U-235 and non-fissile U-238, and both U-235 and U-238 are
+ -- significantly radioactive. U-235's massic activity is
+ -- about 80.0 MBq/kg, and U-238's is about 12.4 MBq/kg, which
+ -- superficially suggests that 3.5%-fissile uranium should have
+ -- only 1.19 times the activity of fully-depleted uranium.
+ -- But a third isotope affects the result hugely: U-234 has
+ -- massic activity of 231 GBq/kg. Natural uranium has massic
+ -- composition of 99.2837% U-238, 0.711% U-235, and 0.0053% U-234,
+ -- so its activity comes roughly 49% each from U-234 and U-238
+ -- and only 2% from U-235. During enrichment via centrifuge,
+ -- the U-234 fraction is concentrated along with the U-235, with
+ -- the U-234:U-235 ratio remaining close to its original value.
+ -- (Actually the U-234 gets separated from U-238 slightly more
+ -- than the U-235 is, so the U-234:U-235 ratio is slightly
+ -- higher in enriched uranium.) A typical massic composition
+ -- for 3.5%-fissile uranium is 96.47116% U-238, 3.5% U-235, and
+ -- 0.02884% U-234. This gives 3.5%-fissile uranium about 6.55
+ -- times the activity of fully-depleted uranium. The values we
+ -- compute here for the "radioactive" group value are based on
+ -- linear interpolation of activity along that scale, rooted at
+ -- a natural (0.7%-fissile) uranium block having the activity of
+ -- 9 uranium ore blocks (due to 9 ingots per block). The group
+ -- value is proportional to the square root of the activity, and
+ -- uranium ore has radioactive=1000. This yields radioactive=2065
+ -- for a fully-depleted uranium block and radioactive=5286 for
+ -- a 3.5%-fissile uranium block.
+ (ov or minetest.register_node)(block, {
+ description = string.format(S("%.1f%%-Fissile Uranium Block"), p/10),
+ tiles = {"technic_uranium_block.png"},
+ is_ground_content = true,
+ groups = {uranium_block=1, not_in_creative_inventory=nici, cracky=1, level=2, radioactive=math.floor(1000*math.sqrt((1+5.55*p/35) * 9 / (1+5.55*7/35)) + 0.5)},
+ sounds = default.node_sound_stone_defaults(),
+ });
+ if not ov then
+ minetest.register_craft({
+ output = block,
+ recipe = {
+ {ingot, ingot, ingot},
+ {ingot, ingot, ingot},
+ {ingot, ingot, ingot},
+ },
+ })
+ minetest.register_craft({
+ output = ingot.." 9",
+ recipe = {{block}},
+ })
+ end
+end
diff --git a/technic/technic/legacy.lua b/technic/technic/legacy.lua
new file mode 100644
index 0000000..8360a71
--- /dev/null
+++ b/technic/technic/legacy.lua
@@ -0,0 +1,38 @@
+
+-- Aliases to convert from legacy node/item names
+
+technic.legacy_nodenames = {
+ ["technic:alloy_furnace"] = "technic:lv_alloy_furnace",
+ ["technic:alloy_furnace_active"] = "technic:lv_alloy_furnace_active",
+ ["technic:battery_box"] = "technic:lv_battery_box0",
+ ["technic:battery_box1"] = "technic:lv_battery_box1",
+ ["technic:battery_box2"] = "technic:lv_battery_box2",
+ ["technic:battery_box3"] = "technic:lv_battery_box3",
+ ["technic:battery_box4"] = "technic:lv_battery_box4",
+ ["technic:battery_box5"] = "technic:lv_battery_box5",
+ ["technic:battery_box6"] = "technic:lv_battery_box6",
+ ["technic:battery_box7"] = "technic:lv_battery_box7",
+ ["technic:battery_box8"] = "technic:lv_battery_box8",
+ ["technic:electric_furnace"] = "technic:lv_electric_furnace",
+ ["technic:electric_furnace_active"] = "technic:lv_electric_furnace_active",
+ ["technic:grinder"] = "technic:lv_grinder",
+ ["technic:grinder_active"] = "technic:lv_grinder_active",
+ ["technic:extractor"] = "technic:lv_extractor",
+ ["technic:extractor_active"] = "technic:lv_extractor_active",
+ ["technic:compressor"] = "technic:lv_compressor",
+ ["technic:compressor_active"] = "technic:lv_compressor_active",
+ ["technic:hv_battery_box"] = "technic:hv_battery_box0",
+ ["technic:hv_cable"] = "technic:hv_cable0",
+ ["technic:lv_cable"] = "technic:lv_cable0",
+ ["technic:mv_cable"] = "technic:mv_cable0",
+ ["technic:mv_battery_box"] = "technic:mv_battery_box0",
+ ["technic:generator"] = "technic:lv_generator",
+ ["technic:generator_active"] = "technic:lv_generator_active",
+ ["technic:iron_dust"] = "technic:wrought_iron_dust",
+ ["technic:enriched_uranium"] = "technic:uranium35_ingot",
+}
+
+for old, new in pairs(technic.legacy_nodenames) do
+ minetest.register_alias(old, new)
+end
+
diff --git a/technic/technic/locale/de.txt b/technic/technic/locale/de.txt
new file mode 100644
index 0000000..855ec5a
--- /dev/null
+++ b/technic/technic/locale/de.txt
@@ -0,0 +1,204 @@
+# German Translation for Technic Mod
+# Deutsche Uebersetzung des Technic Mods
+# by Xanthin
+
+## Misc
+[Technic] Loaded in %f seconds = [Technic] ist in %f Sekunden geladen
+
+## Items
+Silicon Wafer = Siliziumscheibe
+Doped Silicon Wafer = Dotierte Siliziumscheibe
+Enriched Uranium = Angereichertes Uran
+Uranium Fuel = Uranbrennstoff
+Diamond Drill Head = Diamantbohrkopf
+Blue Energy Crystal = Blauer Energiekristall
+Green Energy Crystal = Gruener Energiekristall
+Red Energy Crystal = Roter Energiekristall
+Fine Copper Wire = Feinkupferdraht
+Copper Coil = Kupferspule
+Electric Motor = Elektromotor
+Low Voltage Transformer = Niederspannungstransformator
+Medium Voltage Transformer = Mittelspannungstransformator
+High Voltage Transformer = Hochspannungstransformator
+Control Logic Unit = Steuer- und Regelungseinheit
+Mixed Metal Ingot = Mischmetallbarren
+Composite Plate = Verbundplatte
+Copper Plate = Kupferplatte
+Carbon Plate = Kohlefaserplatte
+Graphite = Graphit
+Carbon Cloth = Kohlefasergewebe
+Raw Latex = Rohlatex
+Rubber Fiber = Gummifaser
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
+
+## Machine misc
+Machine cannot be removed because it is not empty = Die Maschine kann nicht entfernt werden, weil sie noch nicht leer ist.
+Inventory move disallowed due to protection = Das Inventar ist geschuetzt, Zugriff verweigert.
+# $1: Machine name (Includes tier)
+@1 Active (@2 EU) = @1 ist eingeschaltet (@2 EU)
+%s Active = %s ist eingeschaltet
+%s Disabled = %s ist ausgeschaltet
+%s Enabled =
+%s Idle = %s ist bereit
+%s Improperly Placed = %s ist falsch plaziert
+%s Unpowered = %s hat keine Stromversorgung
+%s Out Of Fuel = %s hat keinen Brennstoff
+%s Has Bad Cabling = %s ist falsch verkabelt
+%s Has No Network = %s hat kein Netzwerk
+%s Finished = %s ist fertig
+Enable/Disable = Einschalten/Ausschalten
+Range = Reichweite
+Upgrade Slots = Verbesserungsfaecher
+In: = Rein:
+Out: = Raus:
+Slot %d = Fach %d
+Itemwise = Einzelstuecke
+Stackwise = Ganzer Stapel
+Owner: =
+Unlocked =
+Locked =
+Radius: =
+Enabled =
+Disabled =
+
+## Machine names
+# $1: Tier
+%s Alloy Furnace = %s Legierungsofen
+%s Battery Box = %s Batteriebox
+%s Cable = %s Kabel
+%s CNC Machine = %s CNC-Maschine
+%s Compressor = %s Kompressor
+%s Extractor = %s Extraktor
+%s Forcefield Emitter = %s Kraftfeld-Emitter
+%s Furnace = %s Ofen
+%s Grinder = %s Schleifmaschine
+%s Music Player = %s Musikspieler
+%s Quarry = %s Steinbruch
+%s Tool Workshop = %s Werkzeugwerkstatt
+Arrayed Solar %s Generator = %s Solaranlage
+Fuel-Fired %s Generator = %s Kohle-Generator
+Geothermal %s Generator = %s Geothermie-Generator
+Hydro %s Generator = %s Wassermuehle
+Nuclear %s Generator Core = %s Reaktorkern
+Small Solar %s Generator = %s Solarmodul
+Wind %s Generator = %s Windmuehle
+Self-Contained Injector = Selbstversorger-Injektor
+Constructor Mk%d = Konstruktor Modell %d
+Frame = Rahmen
+Frame Motor = Rahmenmotor
+Template = Schablone
+Template (replacing) = Schablone (ersetzend)
+Template motor = Schablonenmotor
+Template tool = Schablonenwerkzeug
+Battery Box = Batteriebox
+Supply Converter = Stromumwandler
+Switching Station = Schaltanlage
+Fuel-Fired Alloy Furnace = Kohle-Legierungsofen
+Fuel-Fired Furnace = Kohle-Ofen
+Wind Mill Frame = Windmuehlengeruest
+Forcefield = Kraftfeld
+Nuclear Reactor Rod Compartment = Brennstabfaecher
+Administrative World Anchor =
+
+## Machine-specific
+# $1: Pruduced EU
+Charge = Aufladen
+Discharge = Entladen
+Power level = Energiestufe
+# $1: Tier $2: current_charge $3: max_charge
+@1 Battery Box: @2/@3 = @1 Batteriebox: @2/@3
+# $1: Machine name $2: Supply $3: Demand
+@1. Supply: @2 Demand: @3 = @1. Versorgung: @2 Bedarf: @3
+Production at %d%% = Produktion bei %d%%
+Choose Milling Program: = Waehle ein Fraesprogramm:
+Slim Elements half / normal height: = Schmale Elemente von halber / normaler Hoehe:
+Current track %s = Aktueller Titel %s
+Stopped =
+Keeping %d/%d map blocks loaded =
+Digging not started =
+Digging finished =
+Digging %d m above machine =
+Digging %d m below machine =
+
+## CNC
+Cylinder = Zylinder
+Element Cross = Halbes Kreuzelement
+Element Cross Double = Kreuzelement
+Element Edge = Halbes Eckelement
+Element Edge Double = Eckelement
+Element End = Halbes Endelement
+Element End Double = Endelement
+Element Straight = Halbes aufrechtes Element
+Element Straight Double = Aufrechtes Element
+Element T = Halbes T-Element
+Element T Double = T-Element
+Horizontal Cylinder = Liegender Zylinder
+One Curved Edge Block = Block mit einer abgerundeten Kante
+Pyramid = Pyramide
+Slope = Schraege
+Slope Edge = Schraege mit Ecke
+Slope Inner Edge = Schraege mit Innenecke
+Slope Lying = Liegende Schraege
+Slope Upside Down = Umgedrehte Schraege
+Slope Upside Down Edge = Umgedrehte Schraege mit Ecke
+Slope Upside Down Inner Edge = Umgedrehte Schraege mit Innenecke
+Sphere = Kugel
+Spike = Spitze
+Stick = Stange
+Two Curved Edge Block = Block mit zwei abgerundeten Kanten
+Brick = Ziegel:
+Cobble = Pflasterstein:
+Dirt = Erde:
+Leaves = Laub:
+Sandstone = Sandstein:
+Stone = Stein:
+Tree = Baumstamm:
+Wooden = Holz:
+
+## Grinder Recipes
+# $1: Name
+%s Dust = %sstaub
+Akalin = Akalin
+Alatro = Alatro
+Arol = Arol
+Brass = Messing
+Bronze = Bronze
+Carbon Steel = Kohlenstoffstahl
+Cast Iron = Gusseisen
+Chromium = Chrom
+Coal = Kohle
+Copper = Kupfer
+Gold = Gold
+Mithril = Mithril
+Silver = Silber
+Stainless Steel = Edelstahl
+Talinite = Talinite
+Tin = Zinn
+Wrought Iron = Schmiedeeisen
+Zinc = Zink
+%.1f%%-Fissile Uranium =
+
+## Tools
+RE Battery = Akkubatterie
+Water Can = Wasserkanister
+Lava Can = Lavakanister
+Chainsaw = Kettensaege
+Flashlight = Taschenlampe
+3 nodes deep. = 3 Bloecke tief.
+3 nodes tall. = 3 Bloecke hoch.
+3 nodes wide. = 3 Bloecke breit.
+3x3 nodes. = 3x3 Bloecke.
+Use while sneaking to change Mining Drill Mk%d modes. = Halte die Shift-Taste beim Benutzen gedrueckt, um die Funktion des Bergbaubohrers Modell %d zu aendern.
+Mining Drill Mk%d Mode %d = Bergbaubohrer Modell %d Funktion %d
+Mining Drill Mk%d = Bergbaubohrer Modell %d
+Mining Laser Mk%d = Bergbaulaser Modell %d
+Single node. = Einzelblock
+Sonic Screwdriver = Schallschraubendreher
+Tree Tap = Baumzapfhahn
+
+## Craft descriptions
+Alloy cooking =
+Grinding =
+Compressing =
+Extracting =
diff --git a/technic/technic/locale/es.txt b/technic/technic/locale/es.txt
new file mode 100644
index 0000000..7945d65
--- /dev/null
+++ b/technic/technic/locale/es.txt
@@ -0,0 +1,197 @@
+# Spanish Translation for Technic Mod
+# Traduccion al Español del Mod Technic
+# Autor: Diego Martínez <kaeza>
+
+## Misc
+[Technic] Loaded in %f seconds = [Technic] Cargado en %f segundos
+
+## Items
+Silicon Wafer = Oblea de Silicio
+Doped Silicon Wafer = Oblea de Silicio Dopada
+Enriched Uranium = Uranio Enriquecido
+Uranium Fuel = Combustible de Uranio
+Diamond Drill Head = Mecha de Taladro de Diamante
+Blue Energy Crystal = Cristal de Energia Azul
+Green Energy Crystal = Cristal de Energia Verde
+Red Energy Crystal = Cristal de Energia Rojo
+Fine Copper Wire = Cable Fino de Cobre
+Copper Coil = Resorte de Cobre
+Electric Motor = Motor Electrico
+Low Voltage Transformer = Transformador de Bajo Voltaje
+Medium Voltage Transformer = Transformador de Voltaje Medio
+High Voltage Transformer = Transformador de Alto Voltaje
+Control Logic Unit = Unidad Logica de Control
+Mixed Metal Ingot = Lingote de Metal Mezclado
+Composite Plate = Placa de Compuestos
+Copper Plate = Placa de Cobre
+Carbon Plate = Placa de Carbon
+Graphite = Grafito
+Carbon Cloth = Tela de Carbon
+Raw Latex = Latex Crudo
+Rubber Fiber = Fibra de Hule
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
+
+## Machine misc
+Machine cannot be removed because it is not empty = La maquina no puede removerse porque no esta vacia
+Inventory move disallowed due to protection =
+# $1: Machine name (Includes tier)
+@1 Active (@2 EU) = @1 Activo (@2 EU)
+%s Active = %s Activo
+%s Enabled =
+%s Idle = %s Quieto
+%s Unpowered = %s Sin Energia
+%s Out Of Fuel = %s Sin Combustible
+%s Has Bad Cabling = %s Tiene Mal Cableado
+%s Has No Network = %s No Tiene Una Red
+%s Finished = %s Terminado
+%s Disabled = %s Deshabilitado
+%s Improperly Placed = %s No Colocado Apropiadamente
+Range = Alcance
+Enable/Disable = Habilitar/Deshabilitar
+Itemwise =
+Stackwise =
+Owner: =
+Unlocked =
+Locked =
+Radius: =
+Enabled =
+Disabled =
+
+## Machine names
+# $1: Tier
+%s Alloy Furnace = Horno de Aleacion %s
+%s Battery Box = Caja de Bateria %s
+%s Cable = Cable %s
+%s CNC Machine = Maquina CNC %s
+%s Compressor = Compresor %s
+%s Extractor = Extractor %s
+%s Forcefield Emitter = Emisor de Campo de Fuerza %s
+%s Furnace = Horno %s
+%s Grinder = Amoladora %s
+%s Music Player = Reproductor de Musica %s
+%s Quarry = Cantera %s
+%s Tool Workshop = Taller de Herramientas %s
+Arrayed Solar %s Generator = Panel Solar %s
+Fuel-Fired %s Generator = Generador a Carbon %s
+Geothermal %s Generator = Generador Geotermico %s
+Hydro %s Generator = Molino de Agua %s
+Nuclear %s Generator Core = Nucleo de Reactor Nuclear %s
+Small Solar %s Generator = Panel Solar %s
+Wind %s Generator = Molino de Viento %s
+Self-Contained Injector =
+Constructor Mk%d =
+Frame =
+Frame Motor =
+Template =
+Template (replacing) =
+Template Motor =
+Template Tool =
+Supply Converter = Convertidor de Alimentacion
+Switching Station = Estacion de Conmutacion
+Battery Box = Caja de Baterias
+Fuel-Fired Alloy Furnace = Horno de Aleacion a Carbon
+Fuel-Fired Furnace = Horno a Carbon
+Forcefield = Campo de Fuerza
+Nuclear Reactor Rod Compartment = Compartimiento para Vara de Reactor Nuclear
+Wind Mill Frame = Armazon de Molino de Viento
+Administrative World Anchor =
+
+## Machine-specific
+# $1: Pruduced EU
+Charge = Cargar
+Discharge = Descargar
+Power level = Nivel de Poder
+# $1: Tier $2: current_charge $3: max_charge
+@1 Battery Box: @2/@3 = Caja de Bateria @1: @2/@3
+# $1: Machine name $2: Supply $3: Demand
+@1. Supply: @2 Demand: @3 = @1. Alimentacion: @2 Demanda: @3
+# $1: Production percent
+Production at %d%% = Produccion en %d%%
+Stopped =
+Keeping %d/%d map blocks loaded =
+Digging not started =
+Digging finished =
+Digging %d m above machine =
+Digging %d m below machine =
+
+## CNC Machine
+Element Edge = Elemento Borde
+Tree = Arbol
+Element Cross Double = Elemento Cruz Doble
+Spike = Pica
+Element Edge Double = Elemento Borde Doble
+Two Curved Edge Block = Dos Bloques de Borde Curvados
+Pyramid = Piramide
+Slope Upside Down Inner Edge = Borde Interno de Rampa Al Reves
+Slope Upside Down Edge = Borde de Rampa Al Reves
+Element Straight Double = Elemento Doble Recto
+Sphere = Esfera
+Element End Double = Doble Fin de Elemento
+Element Straight = Recta de Elemento
+Horizontal Cylinder = Cilindro Horizontal
+Slope Inner Edge = Borde Interno de Rampa
+One Curved Edge Block = Un Bloque de Borde Curvado
+Element Cross = Cruce de Elementos
+Stick = Varita
+Element End = Fin de Elemento
+Slope Lying = Rampa en Reposo
+Slope Upside Down = Rampa Al Reves
+Slope Edge = Borde de Rampa
+Slope = Rampa
+Element T = Elemento T
+Cylinder = Cilindro
+Cobble = Adoquines
+Stone = Piedra
+Brick = Ladrillo
+Dirt = Tierra
+Sandstone = Arenisca
+Wooden = Madera
+Leaves = Hojas
+
+## Grinder Recipes
+# $1: Name
+%s Dust = Polvo de %s
+Akalin = Akalina
+Alatro = Alatro
+Arol = Arol
+Brass = Laton
+Bronze = Bronce
+Carbon Steel = Acero al Carbono
+Cast Iron = Hierro Fundido
+Chromium = Cromo
+Coal = Carbon
+Copper = Cobre
+Gold = Oro
+Mithril = Mitrilo
+Silver = Plata
+Stainless Steel = Acero Inoxidable
+Talinite = Talinita
+Tin = Estanio
+Wrought Iron = Hierro Forjado
+Zinc = Zinc
+%.1f%%-Fissile Uranium =
+
+## Tools
+RE Battery =
+Water Can = Bidon de Agua
+Lava Can = Bidon de Lava
+Chainsaw = Motosierra
+Flashlight = Linterna
+3 nodes deep. = 3 nodos de profundo.
+3 nodes tall. = 3 nodos de alto.
+3 nodes wide. = 3 nodos de ancho.
+3x3 nodes. = 3x3 nodos.
+Use while sneaking to change Mining Drill Mk%d modes. = Manten pulsado Mayus y Usar para cambiar el modo del Taladro de Mineria Mk%d.
+Mining Drill Mk%d Mode %d = Taladro de Mineria Mk%d Modo %d
+Mining Drill Mk%d = Taladro de Mineria Mk%d
+Mining Laser Mk%d = Laser de Mineria Mk%d
+Single node. = Nodo simple.
+Sonic Screwdriver = Destonillador Sonico
+Tree Tap = Grifo de Arbol
+
+## Craft descriptions
+Alloy cooking =
+Grinding =
+Compressing =
+Extracting =
diff --git a/technic/technic/locale/it.txt b/technic/technic/locale/it.txt
new file mode 100644
index 0000000..59ba7f6
--- /dev/null
+++ b/technic/technic/locale/it.txt
@@ -0,0 +1,201 @@
+
+## Misc
+[Technic] Loaded in %f seconds = [Technic] caricato in %f secondi
+
+## Items
+Silicon Wafer = Wafer di silicone
+Doped Silicon Wafer = Wafer di silicone dopato
+Enriched Uranium = Uranio arricchito
+Uranium Fuel = Uranio Combustibile
+Diamond Drill Head = Trivella diamantata
+Blue Energy Crystal = Cristallo energetico blu
+Green Energy Crystal = Cristallo energetico verde
+Red Energy Crystal = Cristallo energetico rosso
+Fine Copper Wire = Filo di rame fine
+Copper Coil = Bobina di rame
+Electric Motor = Motore elettrico
+Low Voltage Transformer = Trasformatore in bassa tensione
+Medium Voltage Transformer = Trasformatore in media tensione
+High Voltage Transformer = Trasformatore in alta tensione
+Control Logic Unit = Unità di controllo logica
+Mixed Metal Ingot = Lingotto in lega ibrida
+Composite Plate = Lastra composita
+Copper Plate = Lastra di rame
+Carbon Plate = Lastra in carbonio
+Graphite = Lastra in graffite
+Carbon Cloth = Fibra di carbonio
+Raw Latex = Latex grezzo
+Rubber Fiber = Fibra di gomma
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
+
+## Machine misc
+Machine cannot be removed because it is not empty = La macchina non può essere rimossa perchè non è vuota
+Inventory move disallowed due to protection = Impossibile muovere l'inventario a causa della protezione
+# $1: Machine name (Includes tier)
+@1 Active (@2 EU) = @1 Attivo (@2 EU)
+%s Active = %s Attivo
+%s Disabled = %s Disabilitato
+%s Enabled =
+%s Idle = %s Inattivo
+%s Improperly Placed = %s Piazzato impropiamente
+%s Unpowered = %s Non alimentato
+%s Out Of Fuel = %s senza carburante
+%s Has Bad Cabling = %s ha un cablaggio scorretto
+%s Has No Network = %s non è collegata
+%s Finished = %s Finito
+Enable/Disable = Abilita/Disabilita
+Range = Raggio
+Upgrade Slots =
+In: = Ingresso:
+Out: = Uscita:
+Slot %d =
+Itemwise = Singolo elemento
+Stackwise = pila completa
+Owner: =
+Unlocked =
+Locked =
+Radius: =
+Enabled =
+Disabled =
+
+## Machine names
+# $1: Tier
+%s Alloy Furnace = %s Fornace per leghe
+%s Battery Box = %s Box batterie
+%s Cable = Cavo %s
+%s CNC Machine = Tornio CNC %s
+%s Compressor = Compressore %s
+%s Extractor = Estrattore %s
+%s Forcefield Emitter = Emettitore di campo di forza %s
+%s Furnace = %s Fornace
+%s Grinder = %s Tritatutto
+%s Music Player = Music Player %s
+%s Quarry = Cava %s
+%s Tool Workshop = Officina per attrezzi %s
+Arrayed Solar %s Generator = %s Pannello Solare
+Fuel-Fired %s Generator = %s Generatore a carbone
+Geothermal %s Generator = %s Generatore Geotermico
+Hydro %s Generator = Turbina Elettrica %s
+Nuclear %s Generator Core = Reattore nucleare %s
+Small Solar %s Generator = %s Pannello solare
+Wind %s Generator = %s Generatore eolico
+Self-Contained Injector = Ignettore
+Constructor Mk%d = Costruttore Mk%d
+Frame = Cornice
+Frame Motor = Cornice del motore
+Template =
+Template (replacing) = Template (rimpiazzato)
+Template Motor =
+Template Tool =
+Battery Box = Box batterie
+Supply Converter = Trasformatore
+Switching Station = Stazione di controllo
+Fuel-Fired Alloy Furnace = Fornace per leghe a carbone
+Fuel-Fired Furnace = Fornace a carbone
+Wind Mill Frame = Pala eolica
+Forcefield = Campo di forza
+Nuclear Reactor Rod Compartment = Compartimento combustibile nucleare
+Administrative World Anchor =
+
+## Machine-specific
+# $1: Pruduced EU
+Charge = Carica
+Discharge = Scarica
+Power level = Livello di potenza
+# $1: Tier $2: current_charge $3: max_charge
+@1 Battery Box: @2/@3 = @1 Box Batterie: @2/@3
+# $1: Machine name $2: Supply $3: Demand
+@1. Supply: @2 Demand: @3 = @1. Prodotto: @2 Consumato: @3
+Production at %d%% = Produzione a %d%%
+Choose Milling Program: = Scegliere un programma di Fresatura
+Slim Elements half / normal height: = Metà elementi sottili / altezza normale:
+Current track %s = Traccia corrente %s
+Stopped =
+Keeping %d/%d map blocks loaded =
+Digging not started =
+Digging finished =
+Digging %d m above machine =
+Digging %d m below machine =
+
+## CNC
+Cylinder = Cilindro
+Element Cross = Elemento a croce
+Element Cross Double = Elemento a croce doppio
+Element Edge = Elemento bordo
+Element Edge Double = Elemento bordo doppio
+Element End = Elemento finale
+Element End Double = Elemento finale doppio
+Element Straight = Elemento dritto
+Element Straight Double = Elemento dritto doppio
+Element T = Elemento a T
+Element T Double = Elemento a T doppio
+Horizontal Cylinder = Cilindro orizzontale
+One Curved Edge Block = Blocco con bordo curvo
+Pyramid = Piramide
+Slope = Inclinato
+Slope Edge = Bordo inclinato
+Slope Inner Edge = Bordo interno inclinato
+Slope Lying = Pendenza bugiarda
+Slope Upside Down = Pendenza capovolta
+Slope Upside Down Edge = Bordo inclinato capovolto
+Slope Upside Down Inner Edge = Bordo interno inclinato capovolto
+Sphere = Sfera
+Spike = Spuntone
+Stick = Bastone
+Two Curved Edge Block = Blocco con bordo a doppia curva
+Brick = Mattone
+Cobble = Ciottolato
+Dirt = Terra
+Leaves = Foglie
+Sandstone = Arenaria
+Stone = Pietra
+Tree = Albero
+Wooden = Legno
+
+## Grinder Recipes
+# $1: Name
+%s Dust = Polvere di %s
+Akalin = Alcalino
+Alatro = Alatro
+Arol = Arol
+Brass = Ottone
+Bronze = Bronzo
+Carbon Steel = Acciaio al Carbonio
+Cast Iron = Ghisa
+Chromium = Cromo
+Coal = Carbone
+Copper = Rame
+Gold = Oro
+Mithril = Mithril
+Silver = Argento
+Stainless Steel = Acciaio Inossidabile
+Talinite = Talinite
+Tin = Stagno
+Wrought Iron = Ferro Battuto
+Zinc = Zinco
+%.1f%%-Fissile Uranium =
+
+## Tools
+RE Battery =
+Water Can = Serbatoio d'acqua
+Lava Can = Serbatoio di lava
+Chainsaw = Motosega
+Flashlight = Torcia
+3 nodes deep. = 3 nodi in profondità.
+3 nodes tall. = 3 nodi in altezza.
+3 nodes wide. = 3 nodi in larghezza.
+3x3 nodes. = 3x3 nodi.
+Use while sneaking to change Mining Drill Mk%d modes. = Premi shift (freccia grossa) e usa per cambiare modalità nella trivella da miniera Mk%d.
+Mining Drill Mk%d Mode %d = Trivella mk%d in modalità %d
+Mining Drill Mk%d = Trivella da miniera mk%d
+Mining Laser Mk%d = Laser da miniera mk%d
+Single node. = Nodo singolo.
+Sonic Screwdriver = Cacciavite sonico
+Tree Tap = Batti albero
+
+## Craft descriptions
+Alloy cooking = Cottura lege
+Grinding = Macinazione
+Compressing = Compressione
+Extracting = Estrazione
diff --git a/technic/technic/locale/template.txt b/technic/technic/locale/template.txt
new file mode 100644
index 0000000..0464241
--- /dev/null
+++ b/technic/technic/locale/template.txt
@@ -0,0 +1,211 @@
+# template.txt
+# Template for translations of Technic
+
+
+## Misc
+[Technic] Loaded in %f seconds =
+
+## Items
+Silicon Wafer =
+Doped Silicon Wafer =
+Enriched Uranium =
+Uranium Fuel =
+Diamond Drill Head =
+Blue Energy Crystal =
+Green Energy Crystal =
+Red Energy Crystal =
+Fine Copper Wire =
+Copper Coil =
+Electric Motor =
+Low Voltage Transformer =
+Medium Voltage Transformer =
+High Voltage Transformer =
+Control Logic Unit =
+Mixed Metal Ingot =
+Composite Plate =
+Copper Plate =
+Carbon Plate =
+Graphite =
+Carbon Cloth =
+Raw Latex =
+Rubber Fiber =
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
+
+## Machine misc
+Machine cannot be removed because it is not empty =
+Inventory move disallowed due to protection =
+# $1: Machine name (Includes tier)
+@1 Active (@2 EU) =
+%s Active =
+%s Disabled =
+%s Enabled =
+%s Idle =
+%s Improperly Placed =
+%s is empty =
+%s Unpowered =
+%s Out Of Fuel =
+%s Has Bad Cabling =
+%s (Slave) =
+%s Has No Network =
+%s Finished =
+Enable/Disable =
+Range =
+Upgrade Slots =
+In: =
+Out: =
+Slot %d =
+Itemwise =
+Stackwise =
+Ignoring Mesecon Signal =
+Controlled by Mesecon Signal =
+Owner: =
+Unlocked =
+Locked =
+Radius: =
+Enabled =
+Disabled =
+
+## Machine names
+# $1: Tier
+%s Alloy Furnace =
+%s Battery Box =
+%s Cable =
+%s CNC Machine =
+%s Centrifuge =
+%s Compressor =
+%s Extractor =
+%s Forcefield Emitter =
+%s Furnace =
+%s Grinder =
+%s Music Player =
+%s Quarry =
+%s Tool Workshop =
+Arrayed Solar %s Generator =
+Fuel-Fired %s Generator =
+Geothermal %s Generator =
+Hydro %s Generator =
+Nuclear %s Generator Core =
+Small Solar %s Generator =
+Wind %s Generator =
+Self-Contained Injector =
+Constructor Mk%d =
+Frame =
+Frame Motor =
+Template =
+Template (replacing) =
+Template Motor =
+Template Tool =
+Battery Box =
+Supply Converter =
+Switching Station =
+Fuel-Fired Alloy Furnace =
+Fuel-Fired Furnace =
+Wind Mill Frame =
+Forcefield =
+Nuclear Reactor Rod Compartment =
+Administrative World Anchor =
+
+## Machine-specific
+# $1: Pruduced EU
+Charge =
+Discharge =
+Power level =
+# $1: Tier $2: current_charge $3: max_charge
+@1 Battery Box: @2/@3 =
+# $1: Machine name $2: Supply $3: Demand
+@1. Supply: @2 Demand: @3 =
+Production at %d%% =
+Choose Milling Program: =
+Slim Elements half / normal height: =
+Current track %s =
+Stopped =
+Keeping %d/%d map blocks loaded =
+Digging not started =
+Digging finished =
+Digging %d m above machine =
+Digging %d m below machine =
+@1 (@2 @3 -> @4 @5) =
+
+## CNC
+Cylinder =
+Element Cross =
+Element Cross Double =
+Element Edge =
+Element Edge Double =
+Element End =
+Element End Double =
+Element Straight =
+Element Straight Double =
+Element T =
+Element T Double =
+Horizontal Cylinder =
+One Curved Edge Block =
+Pyramid =
+Slope =
+Slope Edge =
+Slope Inner Edge =
+Slope Lying =
+Slope Upside Down =
+Slope Upside Down Edge =
+Slope Upside Down Inner Edge =
+Sphere =
+Spike =
+Stick =
+Two Curved Edge Block =
+Brick =
+Cobble =
+Dirt =
+Leaves =
+Sandstone =
+Stone =
+Tree =
+Wooden =
+
+## Grinder Recipes
+# $1: Name
+%s Dust =
+Akalin =
+Alatro =
+Arol =
+Brass =
+Bronze =
+Carbon Steel =
+Cast Iron =
+Chromium =
+Coal =
+Copper =
+Gold =
+Mithril =
+Silver =
+Stainless Steel =
+Talinite =
+Tin =
+Wrought Iron =
+Zinc =
+%.1f%%-Fissile Uranium =
+
+## Tools
+RE Battery =
+Water Can =
+Lava Can =
+Chainsaw =
+Flashlight =
+3 nodes deep. =
+3 nodes tall. =
+3 nodes wide. =
+3x3 nodes. =
+Use while sneaking to change Mining Drill Mk%d modes. =
+Mining Drill Mk%d Mode %d =
+Mining Drill Mk%d =
+Mining Laser Mk%d =
+Single node. =
+Sonic Screwdriver =
+Tree Tap =
+
+## Craft descriptions
+Alloy cooking =
+Grinding =
+Compressing =
+Extracting =
+Separating =
diff --git a/technic/technic/machines/HV/battery_box.lua b/technic/technic/machines/HV/battery_box.lua
new file mode 100644
index 0000000..1e054ec
--- /dev/null
+++ b/technic/technic/machines/HV/battery_box.lua
@@ -0,0 +1,21 @@
+-- HV battery box
+minetest.register_craft({
+ output = 'technic:hv_battery_box0',
+ recipe = {
+ {'technic:mv_battery_box0', 'technic:mv_battery_box0', 'technic:mv_battery_box0'},
+ {'technic:mv_battery_box0', 'technic:hv_transformer', 'technic:mv_battery_box0'},
+ {'', 'technic:hv_cable0', ''},
+ }
+})
+
+technic.register_battery_box({
+ tier = "HV",
+ max_charge = 1000000,
+ charge_rate = 100000,
+ discharge_rate = 400000,
+ charge_step = 10000,
+ discharge_step = 40000,
+ upgrade = 1,
+ tube = 1,
+})
+
diff --git a/technic/technic/machines/HV/cables.lua b/technic/technic/machines/HV/cables.lua
new file mode 100644
index 0000000..25297c8
--- /dev/null
+++ b/technic/technic/machines/HV/cables.lua
@@ -0,0 +1,12 @@
+
+minetest.register_craft({
+ output = 'technic:hv_cable0 3',
+ recipe = {
+ {'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'},
+ {'technic:mv_cable0', 'technic:mv_cable0', 'technic:mv_cable0'},
+ {'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'},
+ }
+})
+
+technic.register_cable("HV", 3/16)
+
diff --git a/technic/technic/machines/HV/forcefield.lua b/technic/technic/machines/HV/forcefield.lua
new file mode 100644
index 0000000..0f0836d
--- /dev/null
+++ b/technic/technic/machines/HV/forcefield.lua
@@ -0,0 +1,261 @@
+--- Forcefield generator.
+-- @author ShadowNinja
+--
+-- Forcefields are powerful barriers but they consume huge amounts of power.
+-- The forcefield Generator is an HV machine.
+
+-- How expensive is the generator?
+-- Leaves room for upgrades lowering the power drain?
+local forcefield_power_drain = 10
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = "technic:forcefield_emitter_off",
+ recipe = {
+ {"default:mese", "technic:motor", "default:mese" },
+ {"technic:deployer_off", "technic:machine_casing", "technic:deployer_off"},
+ {"default:mese", "technic:hv_cable0", "default:mese" },
+ }
+})
+
+
+local replaceable_cids = {}
+
+minetest.after(0, function()
+ for name, ndef in pairs(minetest.registered_nodes) do
+ if ndef.buildable_to == true and name ~= "ignore" then
+ replaceable_cids[minetest.get_content_id(name)] = true
+ end
+ end
+end)
+
+
+-- Idea: Let forcefields have different colors by upgrade slot.
+-- Idea: Let forcefields add up by detecting if one hits another.
+-- ___ __
+-- / \/ \
+-- | |
+-- \___/\___/
+
+local function update_forcefield(pos, meta, active, first)
+ local shape = meta:get_int("shape")
+ local range = meta:get_int("range")
+ local vm = VoxelManip()
+ local MinEdge, MaxEdge = vm:read_from_map(vector.subtract(pos, range),
+ vector.add(pos, range))
+ local area = VoxelArea:new({MinEdge = MinEdge, MaxEdge = MaxEdge})
+ local data = vm:get_data()
+
+ local c_air = minetest.get_content_id("air")
+ local c_field = minetest.get_content_id("technic:forcefield")
+
+ for z = -range, range do
+ for y = -range, range do
+ local vi = area:index(pos.x + (-range), pos.y + y, pos.z + z)
+ for x = -range, range do
+ local relevant
+ if shape == 0 then
+ local squared = x * x + y * y + z * z
+ relevant =
+ squared <= range * range + range and
+ squared >= (range - 1) * (range - 1) + (range - 1)
+ else
+ relevant =
+ x == -range or x == range or
+ y == -range or y == range or
+ z == -range or z == range
+ end
+ if relevant then
+ local cid = data[vi]
+ if active and replaceable_cids[cid] then
+ data[vi] = c_field
+ elseif not active and cid == c_field then
+ data[vi] = c_air
+ end
+ end
+ vi = vi + 1
+ end
+ end
+ end
+
+ vm:set_data(data)
+ vm:update_liquids()
+ vm:write_to_map()
+ -- update_map is very slow, but if we don't call it we'll
+ -- get phantom blocks on the client.
+ if not active or first then
+ vm:update_map()
+ end
+end
+
+local function set_forcefield_formspec(meta)
+ local formspec = "size[5,2.25]"..
+ "field[0.3,0.5;2,1;range;"..S("Range")..";"..meta:get_int("range").."]"
+ -- The names for these toggle buttons are explicit about which
+ -- state they'll switch to, so that multiple presses (arising
+ -- from the ambiguity between lag and a missed press) only make
+ -- the single change that the user expects.
+ if meta:get_int("shape") == 0 then
+ formspec = formspec.."button[3,0.2;2,1;shape1;"..S("Sphere").."]"
+ else
+ formspec = formspec.."button[3,0.2;2,1;shape0;"..S("Cube").."]"
+ end
+ if meta:get_int("mesecon_mode") == 0 then
+ formspec = formspec.."button[0,1;5,1;mesecon_mode_1;"..S("Ignoring Mesecon Signal").."]"
+ else
+ formspec = formspec.."button[0,1;5,1;mesecon_mode_0;"..S("Controlled by Mesecon Signal").."]"
+ end
+ if meta:get_int("enabled") == 0 then
+ formspec = formspec.."button[0,1.75;5,1;enable;"..S("%s Disabled"):format(S("%s Forcefield Emitter"):format("HV")).."]"
+ else
+ formspec = formspec.."button[0,1.75;5,1;disable;"..S("%s Enabled"):format(S("%s Forcefield Emitter"):format("HV")).."]"
+ end
+ meta:set_string("formspec", formspec)
+end
+
+local forcefield_receive_fields = function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ local range = nil
+ if fields.range then
+ range = tonumber(fields.range) or 0
+ -- Smallest field is 5. Anything less is asking for trouble.
+ -- Largest is 20. It is a matter of pratical node handling.
+ -- At the maximim range updating the forcefield takes about 0.2s
+ range = math.max(range, 5)
+ range = math.min(range, 20)
+ if range == meta:get_int("range") then range = nil end
+ end
+ if fields.shape0 or fields.shape1 or range then
+ update_forcefield(pos, meta, false)
+ end
+ if range then meta:set_int("range", range) end
+ if fields.shape0 then meta:set_int("shape", 0) end
+ if fields.shape1 then meta:set_int("shape", 1) end
+ if fields.enable then meta:set_int("enabled", 1) end
+ if fields.disable then meta:set_int("enabled", 0) end
+ if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end
+ if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end
+ set_forcefield_formspec(meta)
+end
+
+local mesecons = {
+ effector = {
+ action_on = function(pos, node)
+ minetest.get_meta(pos):set_int("mesecon_effect", 1)
+ end,
+ action_off = function(pos, node)
+ minetest.get_meta(pos):set_int("mesecon_effect", 0)
+ end
+ }
+}
+
+local function run(pos, node)
+ local meta = minetest.get_meta(pos)
+ local eu_input = meta:get_int("HV_EU_input")
+ local enabled = meta:get_int("enabled") ~= 0 and (meta:get_int("mesecon_mode") == 0 or meta:get_int("mesecon_effect") ~= 0)
+ local machine_name = S("%s Forcefield Emitter"):format("HV")
+
+ local range = meta:get_int("range")
+ local power_requirement
+ if meta:get_int("shape") == 0 then
+ power_requirement = math.floor(4 * math.pi * range * range)
+ else
+ power_requirement = 24 * range * range
+ end
+ power_requirement = power_requirement * forcefield_power_drain
+
+ if not enabled then
+ if node.name == "technic:forcefield_emitter_on" then
+ update_forcefield(pos, meta, false)
+ technic.swap_node(pos, "technic:forcefield_emitter_off")
+ meta:set_string("infotext", S("%s Disabled"):format(machine_name))
+ end
+ meta:set_int("HV_EU_demand", 0)
+ return
+ end
+ meta:set_int("HV_EU_demand", power_requirement)
+ if eu_input < power_requirement then
+ meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
+ if node.name == "technic:forcefield_emitter_on" then
+ update_forcefield(pos, meta, false)
+ technic.swap_node(pos, "technic:forcefield_emitter_off")
+ end
+ elseif eu_input >= power_requirement then
+ local first = false
+ if node.name == "technic:forcefield_emitter_off" then
+ first = true
+ technic.swap_node(pos, "technic:forcefield_emitter_on")
+ meta:set_string("infotext", S("%s Active"):format(machine_name))
+ end
+ update_forcefield(pos, meta, true, first)
+ end
+end
+
+minetest.register_node("technic:forcefield_emitter_off", {
+ description = S("%s Forcefield Emitter"):format("HV"),
+ tiles = {"technic_forcefield_emitter_off.png"},
+ groups = {cracky = 1, technic_machine = 1},
+ on_receive_fields = forcefield_receive_fields,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("HV_EU_input", 0)
+ meta:set_int("HV_EU_demand", 0)
+ meta:set_int("range", 10)
+ meta:set_int("enabled", 0)
+ meta:set_int("mesecon_mode", 0)
+ meta:set_int("mesecon_effect", 0)
+ meta:set_string("infotext", S("%s Forcefield Emitter"):format("HV"))
+ set_forcefield_formspec(meta)
+ end,
+ mesecons = mesecons,
+ technic_run = run,
+})
+
+minetest.register_node("technic:forcefield_emitter_on", {
+ description = S("%s Forcefield Emitter"):format("HV"),
+ tiles = {"technic_forcefield_emitter_on.png"},
+ groups = {cracky = 1, technic_machine = 1, not_in_creative_inventory=1},
+ drop = "technic:forcefield_emitter_off",
+ on_receive_fields = forcefield_receive_fields,
+ on_destruct = function(pos)
+ local meta = minetest.get_meta(pos)
+ update_forcefield(pos, meta, false)
+ end,
+ mesecons = mesecons,
+ technic_run = run,
+ technic_on_disable = function (pos, node)
+ local meta = minetest.get_meta(pos)
+ update_forcefield(pos, meta, false)
+ technic.swap_node(pos, "technic:forcefield_emitter_off")
+ end,
+})
+
+minetest.register_node("technic:forcefield", {
+ description = S("%s Forcefield"):format("HV"),
+ sunlight_propagates = true,
+ drawtype = "glasslike",
+ groups = {not_in_creative_inventory=1},
+ paramtype = "light",
+ light_source = 15,
+ diggable = false,
+ drop = '',
+ tiles = {{
+ name = "technic_forcefield_animated.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 1.0,
+ },
+ }},
+})
+
+
+if minetest.get_modpath("mesecons_mvps") then
+ mesecon.register_mvps_stopper("technic:forcefield")
+end
+
+technic.register_machine("HV", "technic:forcefield_emitter_on", technic.receiver)
+technic.register_machine("HV", "technic:forcefield_emitter_off", technic.receiver)
+
diff --git a/technic/technic/machines/HV/generator.lua b/technic/technic/machines/HV/generator.lua
new file mode 100644
index 0000000..aa83590
--- /dev/null
+++ b/technic/technic/machines/HV/generator.lua
@@ -0,0 +1,13 @@
+minetest.register_alias("hv_generator", "technic:hv_generator")
+
+minetest.register_craft({
+ output = 'technic:hv_generator',
+ recipe = {
+ {'technic:carbon_plate', 'technic:mv_generator', 'technic:composite_plate'},
+ {'pipeworks:tube_1', 'technic:hv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:hv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+technic.register_generator({tier="HV", tube=1, supply=1200})
+
diff --git a/technic/technic/machines/HV/init.lua b/technic/technic/machines/HV/init.lua
new file mode 100644
index 0000000..d7136b4
--- /dev/null
+++ b/technic/technic/machines/HV/init.lua
@@ -0,0 +1,18 @@
+
+technic.register_tier("HV", "High Voltage")
+
+local path = technic.modpath.."/machines/HV"
+
+-- Wiring stuff
+dofile(path.."/cables.lua")
+dofile(path.."/battery_box.lua")
+
+-- Generators
+dofile(path.."/solar_array.lua")
+dofile(path.."/nuclear_reactor.lua")
+dofile(path.."/generator.lua")
+
+-- Machines
+dofile(path.."/quarry.lua")
+dofile(path.."/forcefield.lua")
+
diff --git a/technic/technic/machines/HV/nuclear_reactor.lua b/technic/technic/machines/HV/nuclear_reactor.lua
new file mode 100644
index 0000000..3aa1ba8
--- /dev/null
+++ b/technic/technic/machines/HV/nuclear_reactor.lua
@@ -0,0 +1,723 @@
+-- The enriched uranium rod driven EU generator.
+-- A very large and advanced machine providing vast amounts of power.
+-- Very efficient but also expensive to run as it needs uranium. (10000EU 86400 ticks (one week))
+-- Provides HV EUs that can be down converted as needed.
+--
+-- The nuclear reactor core needs water and a protective shield to work.
+-- This is checked now and then and if the machine is tampered with... BOOM!
+
+local burn_ticks = 7 * 24 * 60 * 60 -- (seconds).
+local power_supply = 100000 -- EUs
+local fuel_type = "technic:uranium_fuel" -- The reactor burns this stuff
+
+local S = technic.getter
+
+if not vector.length_square then
+ vector.length_square = function (v)
+ return v.x*v.x + v.y*v.y + v.z*v.z
+ end
+end
+
+-- FIXME: recipe must make more sense like a rod recepticle, steam chamber, HV generator?
+minetest.register_craft({
+ output = 'technic:hv_nuclear_reactor_core',
+ recipe = {
+ {'technic:carbon_plate', 'default:obsidian_glass', 'technic:carbon_plate'},
+ {'technic:composite_plate', 'technic:machine_casing', 'technic:composite_plate'},
+ {'technic:stainless_steel_ingot', 'technic:hv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+local generator_formspec =
+ "invsize[8,9;]"..
+ "label[0,0;"..S("Nuclear Reactor Rod Compartment").."]"..
+ "list[current_name;src;2,1;3,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]"
+
+-- "Boxy sphere"
+local nodebox = {
+ { -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box
+ { -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x
+ { -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 },
+ { -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 },
+ { -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 },
+ { -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 },
+ { -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y
+ { -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 },
+ { -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 },
+ { -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 },
+ { -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 },
+ { -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z
+ { -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 },
+ { -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 },
+ { -0.249, -0.249, -0.433, 0.249, 0.249, 0.433 },
+ { -0.303, -0.303, -0.397, 0.303, 0.303, 0.397 },
+}
+
+local reactor_siren = {}
+local function siren_set_state(pos, newstate)
+ local hpos = minetest.hash_node_position(pos)
+ local siren = reactor_siren[hpos]
+ if not siren then
+ if newstate == "off" then return end
+ siren = {state="off"}
+ reactor_siren[hpos] = siren
+ end
+ if newstate == "danger" and siren.state ~= "danger" then
+ if siren.handle then minetest.sound_stop(siren.handle) end
+ siren.handle = minetest.sound_play("technic_hv_nuclear_reactor_siren_danger_loop", {pos=pos, gain=1.5, loop=true, max_hear_distance=48})
+ siren.state = "danger"
+ elseif newstate == "clear" then
+ if siren.handle then minetest.sound_stop(siren.handle) end
+ local clear_handle = minetest.sound_play("technic_hv_nuclear_reactor_siren_clear", {pos=pos, gain=1.5, loop=false, max_hear_distance=48})
+ siren.handle = clear_handle
+ siren.state = "clear"
+ minetest.after(10, function ()
+ if siren.handle == clear_handle then
+ minetest.sound_stop(clear_handle)
+ if reactor_siren[hpos] == siren then
+ reactor_siren[hpos] = nil
+ end
+ end
+ end)
+ elseif newstate == "off" and siren.state ~= "off" then
+ if siren.handle then minetest.sound_stop(siren.handle) end
+ siren.handle = nil
+ reactor_siren[hpos] = nil
+ end
+end
+local function siren_danger(pos, meta)
+ meta:set_int("siren", 1)
+ siren_set_state(pos, "danger")
+end
+local function siren_clear(pos, meta)
+ if meta:get_int("siren") ~= 0 then
+ siren_set_state(pos, "clear")
+ meta:set_int("siren", 0)
+ end
+end
+
+-- The standard reactor structure consists of a 9x9x9 cube. A cross
+-- section through the middle:
+--
+-- CCCC CCCC
+-- CBBB BBBC
+-- CBSS SSBC
+-- CBSWWWSBC
+-- CBSW#WSBC
+-- CBSW|WSBC
+-- CBSS|SSBC
+-- CBBB|BBBC
+-- CCCC|CCCC
+-- C = Concrete, B = Blast-resistant concrete, S = Stainless Steel,
+-- W = water node, # = reactor core, | = HV cable
+--
+-- The man-hole and the HV cable are only in the middle, and the man-hole
+-- is optional.
+--
+-- For the reactor to operate and not melt down, it insists on the inner
+-- 7x7x7 portion (from the core out to the blast-resistant concrete)
+-- being intact. Intactness only depends on the number of nodes of the
+-- right type in each layer. The water layer must have water in all but
+-- at most one node; the steel and blast-resistant concrete layers must
+-- have the right material in all but at most two nodes. The permitted
+-- gaps are meant for the cable and man-hole, but can actually be anywhere
+-- and contain anything. For the reactor to be useful, a cable must
+-- connect to the core, but it can go in any direction.
+--
+-- The outer concrete layer of the standard structure is not required
+-- for the reactor to operate. It is noted here because it used to
+-- be mandatory, and for historical reasons (that it predates the
+-- implementation of radiation) it needs to continue being adequate
+-- shielding of legacy reactors. If it ever ceases to be adequate
+-- shielding for new reactors, legacy ones should be grandfathered.
+local reactor_structure_badness = function(pos)
+ local vm = VoxelManip()
+ local pos1 = vector.subtract(pos, 3)
+ local pos2 = vector.add(pos, 3)
+ local MinEdge, MaxEdge = vm:read_from_map(pos1, pos2)
+ local data = vm:get_data()
+ local area = VoxelArea:new({MinEdge=MinEdge, MaxEdge=MaxEdge})
+
+ local c_blast_concrete = minetest.get_content_id("technic:blast_resistant_concrete")
+ local c_stainless_steel = minetest.get_content_id("technic:stainless_steel_block")
+ local c_water_source = minetest.get_content_id("default:water_source")
+ local c_water_flowing = minetest.get_content_id("default:water_flowing")
+
+ local blastlayer, steellayer, waterlayer = 0, 0, 0
+
+ for z = pos1.z, pos2.z do
+ for y = pos1.y, pos2.y do
+ for x = pos1.x, pos2.x do
+ local cid = data[area:index(x, y, z)]
+ if x == pos1.x or x == pos2.x or
+ y == pos1.y or y == pos2.y or
+ z == pos1.z or z == pos2.z then
+ if cid == c_blast_concrete then
+ blastlayer = blastlayer + 1
+ end
+ elseif x == pos1.x+1 or x == pos2.x-1 or
+ y == pos1.y+1 or y == pos2.y-1 or
+ z == pos1.z+1 or z == pos2.z-1 then
+ if cid == c_stainless_steel then
+ steellayer = steellayer + 1
+ end
+ elseif x == pos1.x+2 or x == pos2.x-2 or
+ y == pos1.y+2 or y == pos2.y-2 or
+ z == pos1.z+2 or z == pos2.z-2 then
+ if cid == c_water_source or cid == c_water_flowing then
+ waterlayer = waterlayer + 1
+ end
+ end
+ end
+ end
+ end
+ if waterlayer > 25 then waterlayer = 25 end
+ if steellayer > 96 then steellayer = 96 end
+ if blastlayer > 216 then blastlayer = 216 end
+ return (25 - waterlayer) + (96 - steellayer) + (216 - blastlayer)
+end
+
+local function meltdown_reactor(pos)
+ print("A reactor melted down at "..minetest.pos_to_string(pos))
+ minetest.set_node(pos, {name="technic:corium_source"})
+end
+
+minetest.register_abm({
+ nodenames = {"technic:hv_nuclear_reactor_core_active"},
+ interval = 1,
+ chance = 1,
+ action = function (pos, node)
+ local meta = minetest.get_meta(pos)
+ local badness = reactor_structure_badness(pos)
+ local accum_badness = meta:get_int("structure_accumulated_badness")
+ if badness == 0 then
+ if accum_badness ~= 0 then
+ meta:set_int("structure_accumulated_badness", accum_badness - 1)
+ siren_clear(pos, meta)
+ end
+ else
+ siren_danger(pos, meta)
+ accum_badness = accum_badness + badness
+ if accum_badness >= 100 then
+ meltdown_reactor(pos)
+ else
+ meta:set_int("structure_accumulated_badness", accum_badness)
+ end
+ end
+ end,
+})
+
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local machine_name = S("Nuclear %s Generator Core"):format("HV")
+ local burn_time = meta:get_int("burn_time") or 0
+
+ if burn_time >= burn_ticks or burn_time == 0 then
+ local inv = meta:get_inventory()
+ if not inv:is_empty("src") then
+ local srclist = inv:get_list("src")
+ local correct_fuel_count = 0
+ for _, srcstack in pairs(srclist) do
+ if srcstack then
+ if srcstack:get_name() == fuel_type then
+ correct_fuel_count = correct_fuel_count + 1
+ end
+ end
+ end
+ -- Check that the reactor is complete as well
+ -- as the correct number of correct fuel
+ if correct_fuel_count == 6 and
+ reactor_structure_badness(pos) == 0 then
+ meta:set_int("burn_time", 1)
+ technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active")
+ meta:set_int("HV_EU_supply", power_supply)
+ for idx, srcstack in pairs(srclist) do
+ srcstack:take_item()
+ inv:set_stack("src", idx, srcstack)
+ end
+ return
+ end
+ end
+ meta:set_int("HV_EU_supply", 0)
+ meta:set_int("burn_time", 0)
+ meta:set_string("infotext", S("%s Idle"):format(machine_name))
+ technic.swap_node(pos, "technic:hv_nuclear_reactor_core")
+ meta:set_int("structure_accumulated_badness", 0)
+ siren_clear(pos, meta)
+ elseif burn_time > 0 then
+ burn_time = burn_time + 1
+ meta:set_int("burn_time", burn_time)
+ local percent = math.floor(burn_time / burn_ticks * 100)
+ meta:set_string("infotext", machine_name.." ("..percent.."%)")
+ meta:set_int("HV_EU_supply", power_supply)
+ end
+end
+
+minetest.register_node("technic:hv_nuclear_reactor_core", {
+ description = S("Nuclear %s Generator Core"):format("HV"),
+ tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
+ "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
+ "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"},
+ groups = {cracky=1, technic_machine=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ drawtype="nodebox",
+ paramtype = "light",
+ stack_max = 1,
+ node_box = {
+ type = "fixed",
+ fixed = nodebox
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Nuclear %s Generator Core"):format("HV"))
+ meta:set_int("HV_EU_supply", 0)
+ -- Signal to the switching station that this device burns some
+ -- sort of fuel and needs special handling
+ meta:set_int("HV_EU_from_fuel", 1)
+ meta:set_int("burn_time", 0)
+ meta:set_string("formspec", generator_formspec)
+ local inv = meta:get_inventory()
+ inv:set_size("src", 6)
+ end,
+ can_dig = technic.machine_can_dig,
+ on_destruct = function(pos) siren_set_state(pos, "off") end,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+})
+
+minetest.register_node("technic:hv_nuclear_reactor_core_active", {
+ tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
+ "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png",
+ "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"},
+ groups = {cracky=1, technic_machine=1, radioactive=11000, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ drop="technic:hv_nuclear_reactor_core",
+ drawtype="nodebox",
+ light_source = 15,
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = nodebox
+ },
+ can_dig = technic.machine_can_dig,
+ after_dig_node = meltdown_reactor,
+ on_destruct = function(pos) siren_set_state(pos, "off") end,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+ technic_on_disable = function(pos, node)
+ local timer = minetest.get_node_timer(pos)
+ timer:start(1)
+ end,
+ on_timer = function(pos, node)
+ local meta = minetest.get_meta(pos)
+
+ -- Connected back?
+ if meta:get_int("HV_EU_timeout") > 0 then return false end
+
+ local burn_time = meta:get_int("burn_time") or 0
+
+ if burn_time >= burn_ticks or burn_time == 0 then
+ meta:set_int("HV_EU_supply", 0)
+ meta:set_int("burn_time", 0)
+ technic.swap_node(pos, "technic:hv_nuclear_reactor_core")
+ meta:set_int("structure_accumulated_badness", 0)
+ siren_clear(pos, meta)
+ return false
+ end
+
+ meta:set_int("burn_time", burn_time + 1)
+ return true
+ end,
+})
+
+technic.register_machine("HV", "technic:hv_nuclear_reactor_core", technic.producer)
+technic.register_machine("HV", "technic:hv_nuclear_reactor_core_active", technic.producer)
+
+-- radioactivity
+
+-- Radiation resistance represents the extent to which a material
+-- attenuates radiation passing through it; i.e., how good a radiation
+-- shield it is. This is identified per node type. For materials that
+-- exist in real life, the radiation resistance value that this system
+-- uses for a node type consisting of a solid cube of that material is the
+-- (approximate) number of halvings of ionising radiation that is achieved
+-- by a metre of the material in real life. This is approximately
+-- proportional to density, which provides a good way to estimate it.
+-- Homogeneous mixtures of materials have radiation resistance computed
+-- by a simple weighted mean. Note that the amount of attenuation that
+-- a material achieves in-game is not required to be (and is not) the
+-- same as the attenuation achieved in real life.
+--
+-- Radiation resistance for a node type may be specified in the node
+-- definition, under the key "radiation_resistance". As an interim
+-- measure, until node definitions widely include this, this code
+-- knows a bunch of values for particular node types in several mods,
+-- and values for groups of node types. The node definition takes
+-- precedence if it specifies a value. Nodes for which no value at
+-- all is known are taken to provide no radiation resistance at all;
+-- this is appropriate for the majority of node types. Only node types
+-- consisting of a fairly homogeneous mass of material should report
+-- non-zero radiation resistance; anything with non-uniform geometry
+-- or complex internal structure should show no radiation resistance.
+-- Fractional resistance values are permitted; two significant figures
+-- is the recommended precision.
+local default_radiation_resistance_per_node = {
+ ["default:brick"] = 13,
+ ["default:bronzeblock"] = 45,
+ ["default:clay"] = 15,
+ ["default:coalblock"] = 9.6,
+ ["default:cobble"] = 15,
+ ["default:copperblock"] = 46,
+ ["default:desert_cobble"] = 15,
+ ["default:desert_sand"] = 10,
+ ["default:desert_stone"] = 17,
+ ["default:desert_stonebrick"] = 17,
+ ["default:diamondblock"] = 24,
+ ["default:dirt"] = 8.2,
+ ["default:dirt_with_grass"] = 8.2,
+ ["default:dirt_with_grass_footsteps"] = 8.2,
+ ["default:dirt_with_snow"] = 8.2,
+ ["default:glass"] = 17,
+ ["default:goldblock"] = 170,
+ ["default:gravel"] = 10,
+ ["default:ice"] = 5.6,
+ ["default:lava_flowing"] = 8.5,
+ ["default:lava_source"] = 17,
+ ["default:mese"] = 21,
+ ["default:mossycobble"] = 15,
+ ["default:nyancat"] = 1000,
+ ["default:nyancat_rainbow"] = 1000,
+ ["default:obsidian"] = 18,
+ ["default:obsidian_glass"] = 18,
+ ["default:sand"] = 10,
+ ["default:sandstone"] = 15,
+ ["default:sandstonebrick"] = 15,
+ ["default:snowblock"] = 1.7,
+ ["default:steelblock"] = 40,
+ ["default:stone"] = 17,
+ ["default:stone_with_coal"] = 16,
+ ["default:stone_with_copper"] = 20,
+ ["default:stone_with_diamond"] = 18,
+ ["default:stone_with_gold"] = 34,
+ ["default:stone_with_iron"] = 20,
+ ["default:stone_with_mese"] = 17,
+ ["default:stonebrick"] = 17,
+ ["default:water_flowing"] = 2.8,
+ ["default:water_source"] = 5.6,
+ ["farming:desert_sand_soil"] = 10,
+ ["farming:desert_sand_soil_wet"] = 10,
+ ["farming:soil"] = 8.2,
+ ["farming:soil_wet"] = 8.2,
+ ["glooptest:akalin_crystal_glass"] = 21,
+ ["glooptest:akalinblock"] = 40,
+ ["glooptest:alatro_crystal_glass"] = 21,
+ ["glooptest:alatroblock"] = 40,
+ ["glooptest:amethystblock"] = 18,
+ ["glooptest:arol_crystal_glass"] = 21,
+ ["glooptest:crystal_glass"] = 21,
+ ["glooptest:emeraldblock"] = 19,
+ ["glooptest:heavy_crystal_glass"] = 21,
+ ["glooptest:mineral_akalin"] = 20,
+ ["glooptest:mineral_alatro"] = 20,
+ ["glooptest:mineral_amethyst"] = 17,
+ ["glooptest:mineral_arol"] = 20,
+ ["glooptest:mineral_desert_coal"] = 16,
+ ["glooptest:mineral_desert_iron"] = 20,
+ ["glooptest:mineral_emerald"] = 17,
+ ["glooptest:mineral_kalite"] = 20,
+ ["glooptest:mineral_ruby"] = 18,
+ ["glooptest:mineral_sapphire"] = 18,
+ ["glooptest:mineral_talinite"] = 20,
+ ["glooptest:mineral_topaz"] = 18,
+ ["glooptest:reinforced_crystal_glass"] = 21,
+ ["glooptest:rubyblock"] = 27,
+ ["glooptest:sapphireblock"] = 27,
+ ["glooptest:talinite_crystal_glass"] = 21,
+ ["glooptest:taliniteblock"] = 40,
+ ["glooptest:topazblock"] = 24,
+ ["mesecons_extrawires:mese_powered"] = 21,
+ ["moreblocks:cactus_brick"] = 13,
+ ["moreblocks:cactus_checker"] = 8.5,
+ ["moreblocks:circle_stone_bricks"] = 17,
+ ["moreblocks:clean_glass"] = 17,
+ ["moreblocks:coal_checker"] = 9.0,
+ ["moreblocks:coal_glass"] = 17,
+ ["moreblocks:coal_stone"] = 17,
+ ["moreblocks:coal_stone_bricks"] = 17,
+ ["moreblocks:glow_glass"] = 17,
+ ["moreblocks:grey_bricks"] = 15,
+ ["moreblocks:iron_checker"] = 11,
+ ["moreblocks:iron_glass"] = 17,
+ ["moreblocks:iron_stone"] = 17,
+ ["moreblocks:iron_stone_bricks"] = 17,
+ ["moreblocks:plankstone"] = 9.3,
+ ["moreblocks:split_stone_tile"] = 15,
+ ["moreblocks:split_stone_tile_alt"] = 15,
+ ["moreblocks:stone_tile"] = 15,
+ ["moreblocks:super_glow_glass"] = 17,
+ ["moreblocks:tar"] = 7.0,
+ ["moreblocks:wood_tile"] = 1.7,
+ ["moreblocks:wood_tile_center"] = 1.7,
+ ["moreblocks:wood_tile_down"] = 1.7,
+ ["moreblocks:wood_tile_flipped"] = 1.7,
+ ["moreblocks:wood_tile_full"] = 1.7,
+ ["moreblocks:wood_tile_left"] = 1.7,
+ ["moreblocks:wood_tile_right"] = 1.7,
+ ["moreblocks:wood_tile_up"] = 1.7,
+ ["moreores:mineral_mithril"] = 18,
+ ["moreores:mineral_silver"] = 21,
+ ["moreores:mineral_tin"] = 19,
+ ["moreores:mithril_block"] = 26,
+ ["moreores:silver_block"] = 53,
+ ["moreores:tin_block"] = 37,
+ ["snow:snow_brick"] = 2.8,
+ ["technic:brass_block"] = 43,
+ ["technic:carbon_steel_block"] = 40,
+ ["technic:cast_iron_block"] = 40,
+ ["technic:chernobylite_block"] = 40,
+ ["technic:chromium_block"] = 37,
+ ["technic:corium_flowing"] = 40,
+ ["technic:corium_source"] = 80,
+ ["technic:granite"] = 18,
+ ["technic:lead_block"] = 80,
+ ["technic:marble"] = 18,
+ ["technic:marble_bricks"] = 18,
+ ["technic:mineral_chromium"] = 19,
+ ["technic:mineral_uranium"] = 71,
+ ["technic:mineral_zinc"] = 19,
+ ["technic:stainless_steel_block"] = 40,
+ ["technic:zinc_block"] = 36,
+ ["tnt:tnt"] = 11,
+ ["tnt:tnt_burning"] = 11,
+}
+local default_radiation_resistance_per_group = {
+ concrete = 16,
+ tree = 3.4,
+ uranium_block = 500,
+ wood = 1.7,
+}
+local cache_radiation_resistance = {}
+local function node_radiation_resistance(nodename)
+ local eff = cache_radiation_resistance[nodename]
+ if eff then return eff end
+ local def = minetest.registered_nodes[nodename] or {groups={}}
+ eff = def.radiation_resistance or default_radiation_resistance_per_node[nodename]
+ if not eff then
+ for g, v in pairs(def.groups) do
+ if v > 0 and default_radiation_resistance_per_group[g] then
+ eff = default_radiation_resistance_per_group[g]
+ break
+ end
+ end
+ end
+ if not eff then eff = 0 end
+ cache_radiation_resistance[nodename] = eff
+ return eff
+end
+
+-- Radioactive nodes cause damage to nearby players. The damage
+-- effect depends on the intrinsic strength of the radiation source,
+-- the distance between the source and the player, and the shielding
+-- effect of the intervening material. These determine a rate of damage;
+-- total damage caused is the integral of this over time.
+--
+-- In the absence of effective shielding, for a specific source the
+-- damage rate varies realistically in inverse proportion to the square
+-- of the distance. (Distance is measured to the player's abdomen,
+-- not to the nominal player position which corresponds to the foot.)
+-- However, if the player is inside a non-walkable (liquid or gaseous)
+-- radioactive node, the nominal distance could go to zero, yielding
+-- infinite damage. In that case, the player's body is displacing the
+-- radioactive material, so the effective distance should remain non-zero.
+-- We therefore apply a lower distance bound of sqrt(0.75) m, which is
+-- the maximum distance one can get from the node centre within the node.
+--
+-- A radioactive node is identified by being in the "radioactive" group,
+-- and the group value signifies the strength of the radiation source.
+-- The group value is the distance in millimetres from a node at which
+-- an unshielded player will be damaged by 0.25 HP/s. Or, equivalently,
+-- it is 2000 times the square root of the damage rate in HP/s that an
+-- unshielded player 1 m away will take.
+--
+-- Shielding is assessed by sampling every 0.25 m along the path
+-- from the source to the player, ignoring the source node itself.
+-- The summed shielding values from the sampled nodes yield a measure
+-- of the total amount of shielding on the path. As in reality,
+-- shielding causes exponential attenuation of radiation. However, the
+-- effect is scaled down relative to real life. A metre of a node with
+-- radiation resistance value R yields attenuation of sqrt(R)*0.1 nepers.
+-- (In real life it would be about R*0.69 nepers, by the definition
+-- of the radiation resistance values.) The sqrt part of this formula
+-- scales down the differences between shielding types, reflecting the
+-- game's simplification of making expensive materials such as gold
+-- readily available in cubic metres. The multiplicative factor in the
+-- formula scales down the difference between shielded and unshielded
+-- safe distances, avoiding the latter becoming impractically large.
+--
+-- Damage is processed at rates down to 0.25 HP/s, which in the absence of
+-- shielding is attained at the distance specified by the "radioactive"
+-- group value. Computed damage rates below 0.25 HP/s result in no
+-- damage at all to the player. This gives the player an opportunity
+-- to be safe, and limits the range at which source/player interactions
+-- need to be considered.
+local assumed_abdomen_offset = vector.new(0, 1, 0)
+local assumed_abdomen_offset_length = vector.length(assumed_abdomen_offset)
+local cache_scaled_shielding = {}
+
+local damage_enabled = minetest.setting_getbool("enable_damage")
+
+if damage_enabled then
+ minetest.register_abm({
+ nodenames = {"group:radioactive"},
+ interval = 1,
+ chance = 1,
+ action = function (pos, node)
+ local strength = minetest.registered_nodes[node.name].groups.radioactive
+ for _, o in ipairs(minetest.get_objects_inside_radius(pos, strength*0.001 + assumed_abdomen_offset_length)) do
+ if o:is_player() then
+ local rel = vector.subtract(vector.add(o:getpos(), assumed_abdomen_offset), pos)
+ local dist_sq = vector.length_square(rel)
+ local dist = math.sqrt(dist_sq)
+ local dirstep = dist == 0 and vector.new(0,0,0) or vector.divide(rel, dist*4)
+ local intpos = pos
+ local shielding = 0
+ for intdist = 0.25, dist, 0.25 do
+ intpos = vector.add(intpos, dirstep)
+ local intnodepos = vector.round(intpos)
+ if not vector.equals(intnodepos, pos) then
+ local sname = minetest.get_node(intnodepos).name
+ local sval = cache_scaled_shielding[sname]
+ if not sval then
+ sval = math.sqrt(node_radiation_resistance(sname)) * -0.025
+ cache_scaled_shielding[sname] = sval
+ end
+ shielding = shielding + sval
+ end
+ end
+ local dmg_rate = 0.25e-6 * strength*strength * math.exp(shielding) / math.max(0.75, dist_sq)
+ if dmg_rate >= 0.25 then
+ local dmg_int = math.floor(dmg_rate)
+ if math.random() < dmg_rate-dmg_int then
+ dmg_int = dmg_int + 1
+ end
+ if dmg_int > 0 then
+ o:set_hp(math.max(o:get_hp() - dmg_int, 0))
+ end
+ end
+ end
+ end
+ end,
+ })
+end
+
+-- radioactive materials that can result from destroying a reactor
+local corium_griefing = 1
+if (not technic.config:get_bool("enable_corium_griefing")) then
+ corium_griefing = 0
+end
+
+for _, state in ipairs({ "flowing", "source" }) do
+ minetest.register_node("technic:corium_"..state, {
+ description = S(state == "source" and "Corium Source" or "Flowing Corium"),
+ drawtype = (state == "source" and "liquid" or "flowingliquid"),
+ [state == "source" and "tiles" or "special_tiles"] = {{
+ name = "technic_corium_"..state.."_animated.png",
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 16,
+ aspect_h = 16,
+ length = 3.0,
+ },
+ }},
+ paramtype = "light",
+ paramtype2 = (state == "flowing" and "flowingliquid" or nil),
+ light_source = (state == "source" and 8 or 5),
+ walkable = false,
+ pointable = false,
+ diggable = false,
+ buildable_to = true,
+ drop = "",
+ drowning = 1,
+ liquidtype = state,
+ liquid_alternative_flowing = "technic:corium_flowing",
+ liquid_alternative_source = "technic:corium_source",
+ liquid_viscosity = LAVA_VISC,
+ liquid_renewable = false,
+ damage_per_second = 6,
+ post_effect_color = { a=192, r=80, g=160, b=80 },
+ groups = {
+ liquid = 2,
+ hot = 3,
+ igniter = corium_griefing,
+ radioactive = (state == "source" and 32000 or 16000),
+ not_in_creative_inventory = (state == "flowing" and 1 or nil),
+ },
+ })
+end
+
+if bucket and bucket.register_liquid then
+ bucket.register_liquid(
+ "technic:corium_source",
+ "technic:corium_flowing",
+ "technic:bucket_corium",
+ "technic_bucket_corium.png",
+ "Corium Bucket"
+ )
+end
+
+minetest.register_node("technic:chernobylite_block", {
+ description = S("Chernobylite Block"),
+ tiles = { "technic_chernobylite_block.png" },
+ is_ground_content = true,
+ groups = { cracky=1, radioactive=5000, level=2 },
+ sounds = default.node_sound_stone_defaults(),
+ light_source = 2,
+
+})
+
+minetest.register_abm({
+ nodenames = {"group:water"},
+ neighbors = {"technic:corium_source"},
+ interval = 1,
+ chance = 1,
+ action = function (pos, node)
+ minetest.remove_node(pos)
+ end,
+})
+
+if (corium_griefing == 1) then
+ minetest.register_abm({
+ nodenames = {"technic:corium_flowing"},
+ interval = 5,
+ chance = 10,
+ action = function (pos, node)
+ minetest.set_node(pos, {name="technic:chernobylite_block"})
+ end,
+ })
+ minetest.register_abm({
+ nodenames = { "technic:corium_source", "technic:corium_flowing" },
+ interval = 4,
+ chance = 4,
+ action = function (pos, node)
+ for _, offset in ipairs({
+ vector.new(1,0,0),
+ vector.new(-1,0,0),
+ vector.new(0,0,1),
+ vector.new(0,0,-1),
+ vector.new(0,-1,0),
+ }) do
+ if math.random(8) == 1 then
+ minetest.dig_node(vector.add(pos, offset))
+ end
+ end
+ end,
+ })
+end
diff --git a/technic/technic/machines/HV/quarry.lua b/technic/technic/machines/HV/quarry.lua
new file mode 100644
index 0000000..60805cc
--- /dev/null
+++ b/technic/technic/machines/HV/quarry.lua
@@ -0,0 +1,251 @@
+
+local S = technic.getter
+
+minetest.register_craft({
+ recipe = {
+ {"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"},
+ {"technic:motor", "technic:machine_casing", "technic:diamond_drill_head"},
+ {"technic:carbon_steel_block", "technic:hv_cable0", "technic:carbon_steel_block"}},
+ output = "technic:quarry",
+})
+
+local quarry_dig_above_nodes = 3 -- How far above the quarry we will dig nodes
+local quarry_max_depth = 100
+local quarry_demand = 10000
+
+local function set_quarry_formspec(meta)
+ local radius = meta:get_int("size")
+ local formspec = "size[6,4.3]"..
+ "list[context;cache;0,1;4,3;]"..
+ "item_image[4.8,0;1,1;technic:quarry]"..
+ "label[0,0.2;"..S("%s Quarry"):format("HV").."]"..
+ "field[4.3,3.5;2,1;size;"..S("Radius:")..";"..radius.."]"
+ if meta:get_int("enabled") == 0 then
+ formspec = formspec.."button[4,1;2,1;enable;"..S("Disabled").."]"
+ else
+ formspec = formspec.."button[4,1;2,1;disable;"..S("Enabled").."]"
+ end
+ local diameter = radius*2 + 1
+ local nd = meta:get_int("dug")
+ local rel_y = quarry_dig_above_nodes - math.floor(nd / (diameter*diameter))
+ formspec = formspec.."label[0,4;"..minetest.formspec_escape(
+ nd == 0 and S("Digging not started") or
+ (rel_y < -quarry_max_depth and S("Digging finished") or
+ (meta:get_int("purge_on") == 1 and S("Purging cache") or
+ S("Digging %d m "..(rel_y > 0 and "above" or "below").." machine")
+ :format(math.abs(rel_y))))
+ ).."]"
+ formspec = formspec.."button[4,2;2,1;restart;"..S("Restart").."]"
+ meta:set_string("formspec", formspec)
+end
+
+local function set_quarry_demand(meta)
+ local radius = meta:get_int("size")
+ local diameter = radius*2 + 1
+ local machine_name = S("%s Quarry"):format("HV")
+ if meta:get_int("enabled") == 0 or meta:get_int("purge_on") == 1 then
+ meta:set_string("infotext", S(meta:get_int("purge_on") == 1 and "%s purging cache" or "%s Disabled"):format(machine_name))
+ meta:set_int("HV_EU_demand", 0)
+ elseif meta:get_int("dug") == diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) then
+ meta:set_string("infotext", S("%s Finished"):format(machine_name))
+ meta:set_int("HV_EU_demand", 0)
+ else
+ meta:set_string("infotext", S(meta:get_int("HV_EU_input") >= quarry_demand and "%s Active" or "%s Unpowered"):format(machine_name))
+ meta:set_int("HV_EU_demand", quarry_demand)
+ end
+end
+
+local function quarry_receive_fields(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ if fields.size and string.find(fields.size, "^[0-9]+$") then
+ local size = tonumber(fields.size)
+ if size >= 2 and size <= 8 and size ~= meta:get_int("size") then
+ meta:set_int("size", size)
+ meta:set_int("dug", 0)
+ end
+ end
+ if fields.enable then meta:set_int("enabled", 1) end
+ if fields.disable then meta:set_int("enabled", 0) end
+ if fields.restart then
+ meta:set_int("dug", 0)
+ meta:set_int("purge_on", 1)
+ end
+ set_quarry_formspec(meta)
+ set_quarry_demand(meta)
+end
+
+local function quarry_handle_purge(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local i = 0
+ for _,stack in ipairs(inv:get_list("cache")) do
+ i = i + 1
+ if stack then
+ local item = stack:to_table()
+ if item then
+ technic.tube_inject_item(pos, pos, vector.new(0, 1, 0), item)
+ stack:clear()
+ inv:set_stack("cache", i, stack)
+ break
+ end
+ end
+ end
+ if inv:is_empty("cache") then
+ meta:set_int("purge_on", 0)
+ end
+end
+
+local function quarry_run(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ -- initialize cache for the case we load an older world
+ inv:set_size("cache", 12)
+ -- toss a coin whether we do an automatic purge. Chance 1:200
+ local purge_rand = math.random()
+ if purge_rand <= 0.005 then
+ meta:set_int("purge_on", 1)
+ end
+
+ if meta:get_int("enabled") and meta:get_int("HV_EU_input") >= quarry_demand and meta:get_int("purge_on") == 0 then
+ local pdir = minetest.facedir_to_dir(node.param2)
+ local qdir = pdir.x == 1 and vector.new(0,0,-1) or
+ (pdir.z == -1 and vector.new(-1,0,0) or
+ (pdir.x == -1 and vector.new(0,0,1) or
+ vector.new(1,0,0)))
+ local radius = meta:get_int("size")
+ local diameter = radius*2 + 1
+ local startpos = vector.add(vector.add(vector.add(pos,
+ vector.new(0, quarry_dig_above_nodes, 0)),
+ pdir),
+ vector.multiply(qdir, -radius))
+ local endpos = vector.add(vector.add(vector.add(startpos,
+ vector.new(0, -quarry_dig_above_nodes-quarry_max_depth, 0)),
+ vector.multiply(pdir, diameter-1)),
+ vector.multiply(qdir, diameter-1))
+ local vm = VoxelManip()
+ local minpos, maxpos = vm:read_from_map(startpos, endpos)
+ local area = VoxelArea:new({MinEdge=minpos, MaxEdge=maxpos})
+ local data = vm:get_data()
+ local c_air = minetest.get_content_id("air")
+ local owner = meta:get_string("owner")
+ local nd = meta:get_int("dug")
+ while nd ~= diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do
+ local ry = math.floor(nd / (diameter*diameter))
+ local ndl = nd % (diameter*diameter)
+ if ry % 2 == 1 then
+ ndl = diameter*diameter - 1 - ndl
+ end
+ local rq = math.floor(ndl / diameter)
+ local rp = ndl % diameter
+ if rq % 2 == 1 then rp = diameter - 1 - rp end
+ local digpos = vector.add(vector.add(vector.add(startpos,
+ vector.new(0, -ry, 0)),
+ vector.multiply(pdir, rp)),
+ vector.multiply(qdir, rq))
+ local can_dig = true
+ if can_dig and minetest.is_protected and minetest.is_protected(digpos, owner) then
+ can_dig = false
+ end
+ local dignode
+ if can_dig then
+ dignode = technic.get_or_load_node(digpos) or minetest.get_node(digpos)
+ local dignodedef = minetest.registered_nodes[dignode.name] or {diggable=false}
+ if not dignodedef.diggable or (dignodedef.can_dig and not dignodedef.can_dig(digpos, nil)) then
+ can_dig = false
+ end
+ end
+
+ if can_dig then
+ for ay = startpos.y, digpos.y+1, -1 do
+ local checkpos = {x=digpos.x, y=ay, z=digpos.z}
+ local checknode = technic.get_or_load_node(checkpos) or minetest.get_node(checkpos)
+ if checknode.name ~= "air" then
+ can_dig = false
+ break
+ end
+ end
+ end
+ nd = nd + 1
+ if can_dig then
+ minetest.remove_node(digpos)
+ local drops = minetest.get_node_drops(dignode.name, "")
+ for _, dropped_item in ipairs(drops) do
+ local left = inv:add_item("cache", dropped_item)
+ while not left:is_empty() do
+ meta:set_int("purge_on", 1)
+ quarry_handle_purge(pos)
+ left = inv:add_item("cache", left)
+ end
+ end
+ break
+ end
+ end
+ if nd == diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) then
+ -- if a quarry is finished, we enable purge mode
+ meta:set_int("purge_on", 1)
+ end
+ meta:set_int("dug", nd)
+ else
+ -- if a quarry is disabled or has no power, we enable purge mode
+ meta:set_int("purge_on", 1)
+ end
+ -- if something triggered a purge, we handle it
+ if meta:get_int("purge_on") == 1 then
+ quarry_handle_purge(pos)
+ end
+ set_quarry_formspec(meta)
+ set_quarry_demand(meta)
+end
+
+local function send_move_error(player)
+ minetest.chat_send_player(player:get_player_name(),
+ S("Manually taking/removing from cache by hand is not possible. "..
+ "If you can't wait, restart or disable the quarry to start automatic purge."))
+ return 0
+end
+
+minetest.register_node("technic:quarry", {
+ description = S("%s Quarry"):format("HV"),
+ tiles = {"technic_carbon_steel_block.png", "technic_carbon_steel_block.png",
+ "technic_carbon_steel_block.png", "technic_carbon_steel_block.png",
+ "technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"},
+ inventory_image = minetest.inventorycube("technic_carbon_steel_block.png",
+ "technic_carbon_steel_block.png^default_tool_mesepick.png",
+ "technic_carbon_steel_block.png"),
+ paramtype2 = "facedir",
+ groups = {cracky=2, tubedevice=1, technic_machine = 1},
+ tube = {
+ connect_sides = {top = 1},
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("%s Quarry"):format("HV"))
+ meta:set_int("size", 4)
+ set_quarry_formspec(meta)
+ set_quarry_demand(meta)
+ end,
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name())
+ pipeworks.scan_for_tube_objects(pos)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("cache")
+ end,
+ after_dig_node = pipeworks.scan_for_tube_objects,
+ on_receive_fields = quarry_receive_fields,
+ technic_run = quarry_run,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ return send_move_error(player)
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ return send_move_error(player)
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ return send_move_error(player)
+ end
+})
+
+technic.register_machine("HV", "technic:quarry", technic.receiver)
diff --git a/technic/technic/machines/HV/solar_array.lua b/technic/technic/machines/HV/solar_array.lua
new file mode 100644
index 0000000..414291a
--- /dev/null
+++ b/technic/technic/machines/HV/solar_array.lua
@@ -0,0 +1,14 @@
+-- The high voltage solar array is an assembly of medium voltage arrays.
+-- Solar arrays are not able to store large amounts of energy.
+
+minetest.register_craft({
+ output = 'technic:solar_array_hv 1',
+ recipe = {
+ {'technic:solar_array_mv', 'technic:solar_array_mv', 'technic:solar_array_mv'},
+ {'technic:carbon_plate', 'technic:hv_transformer', 'technic:composite_plate'},
+ {'', 'technic:hv_cable0', ''},
+ }
+})
+
+technic.register_solar_array({tier="HV", power=100})
+
diff --git a/technic/technic/machines/LV/alloy_furnace.lua b/technic/technic/machines/LV/alloy_furnace.lua
new file mode 100644
index 0000000..bdf2f31
--- /dev/null
+++ b/technic/technic/machines/LV/alloy_furnace.lua
@@ -0,0 +1,14 @@
+-- LV Alloy furnace
+
+-- FIXME: kpoppel: I'd like to introduce an induction heating element here...
+minetest.register_craft({
+ output = 'technic:lv_alloy_furnace',
+ recipe = {
+ {'default:brick', 'default:brick', 'default:brick'},
+ {'default:brick', 'technic:machine_casing', 'default:brick'},
+ {'default:brick', 'technic:lv_cable0', 'default:brick'},
+ }
+})
+
+technic.register_alloy_furnace({tier = "LV", speed = 1, demand = {300}})
+
diff --git a/technic/technic/machines/LV/battery_box.lua b/technic/technic/machines/LV/battery_box.lua
new file mode 100644
index 0000000..429bcd6
--- /dev/null
+++ b/technic/technic/machines/LV/battery_box.lua
@@ -0,0 +1,19 @@
+
+minetest.register_craft({
+ output = 'technic:lv_battery_box0',
+ recipe = {
+ {'group:wood', 'group:wood', 'group:wood'},
+ {'technic:battery', 'technic:machine_casing', 'technic:battery'},
+ {'technic:battery', 'technic:lv_cable0', 'technic:battery'},
+ }
+})
+
+technic.register_battery_box({
+ tier = "LV",
+ max_charge = 40000,
+ charge_rate = 1000,
+ discharge_rate = 4000,
+ charge_step = 500,
+ discharge_step = 800,
+})
+
diff --git a/technic/technic/machines/LV/cables.lua b/technic/technic/machines/LV/cables.lua
new file mode 100644
index 0000000..e18eae1
--- /dev/null
+++ b/technic/technic/machines/LV/cables.lua
@@ -0,0 +1,14 @@
+
+minetest.register_alias("lv_cable", "technic:lv_cable0")
+
+minetest.register_craft({
+ output = 'technic:lv_cable0 6',
+ recipe = {
+ {'default:paper', 'default:paper', 'default:paper'},
+ {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'},
+ {'default:paper', 'default:paper', 'default:paper'},
+ }
+})
+
+technic.register_cable("LV", 2/16)
+
diff --git a/technic/technic/machines/LV/cnc.lua b/technic/technic/machines/LV/cnc.lua
new file mode 100644
index 0000000..dd67e9b
--- /dev/null
+++ b/technic/technic/machines/LV/cnc.lua
@@ -0,0 +1,237 @@
+-- Technic CNC v1.0 by kpoppel
+-- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck
+
+-- Idea:
+-- Somehow have a tabbed/paged panel if the number of shapes should expand
+-- beyond what is available in the panel today.
+-- I could imagine some form of API allowing modders to come with their own node
+-- box definitions and easily stuff it in the this machine for production.
+
+local S = technic.getter
+
+local shape = {}
+local onesize_products = {
+ slope = 2,
+ slope_edge = 1,
+ slope_inner_edge = 1,
+ pyramid = 2,
+ spike = 1,
+ cylinder = 2,
+ oblate_spheroid = 1,
+ sphere = 1,
+ stick = 8,
+ slope_upsdown = 2,
+ slope_edge_upsdown = 1,
+ slope_inner_edge_upsdown = 1,
+ cylinder_horizontal = 2,
+ slope_lying = 2,
+ onecurvededge = 1,
+ twocurvededge = 1,
+}
+local twosize_products = {
+ element_straight = 4,
+ element_end = 2,
+ element_cross = 1,
+ element_t = 1,
+ element_edge = 2,
+}
+
+local cnc_formspec =
+ "invsize[9,11;]"..
+ "label[1,0;"..S("Choose Milling Program:").."]"..
+ "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]"..
+ "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]"..
+ "image_button[3,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]"..
+ "image_button[4,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]"..
+ "image_button[5,0.5;1,1;technic_cnc_spike.png;spike; ]"..
+ "image_button[6,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]"..
+ "image_button[7,0.5;1,1;technic_cnc_oblate_spheroid.png;oblate_spheroid; ]"..
+ "image_button[8,0.5;1,1;technic_cnc_stick.png;stick; ]"..
+
+ "image_button[1,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdown; ]"..
+ "image_button[2,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_edge_upsdown; ]"..
+ "image_button[3,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_inner_edge_upsdown; ]"..
+ "image_button[4,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]"..
+ "image_button[5,1.5;1,1;technic_cnc_sphere.png;sphere; ]"..
+
+ "image_button[1,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]"..
+ "image_button[2,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]"..
+ "image_button[3,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]"..
+
+ "label[1,3.5;"..S("Slim Elements half / normal height:").."]"..
+
+ "image_button[1,4;1,0.5;technic_cnc_full.png;full; ]"..
+ "image_button[1,4.5;1,0.5;technic_cnc_half.png;half; ]"..
+ "image_button[2,4;1,1;technic_cnc_element_straight.png;element_straight; ]"..
+ "image_button[3,4;1,1;technic_cnc_element_end.png;element_end; ]"..
+ "image_button[4,4;1,1;technic_cnc_element_cross.png;element_cross; ]"..
+ "image_button[5,4;1,1;technic_cnc_element_t.png;element_t; ]"..
+ "image_button[6,4;1,1;technic_cnc_element_edge.png;element_edge; ]"..
+
+ "label[0, 5.5;"..S("In:").."]"..
+ "list[current_name;src;0.5,5.5;1,1;]"..
+ "label[4, 5.5;"..S("Out:").."]"..
+ "list[current_name;dst;5,5.5;4,1;]"..
+
+ "list[current_player;main;0,7;8,4;]"..
+ "listring[current_name;dst]"..
+ "listring[current_player;main]"..
+ "listring[current_name;src]"..
+ "listring[current_player;main]"
+
+local size = 1;
+
+-- The form handler is declared here because we need it in both the inactive and active modes
+-- in order to be able to change programs wile it is running.
+local function form_handler(pos, formname, fields, sender)
+ -- REGISTER MILLING PROGRAMS AND OUTPUTS:
+ ------------------------------------------
+ -- Program for half/full size
+ if fields["full"] then
+ size = 1
+ return
+ end
+
+ if fields["half"] then
+ size = 2
+ return
+ end
+
+ -- Resolve the node name and the number of items to make
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local inputstack = inv:get_stack("src", 1)
+ local inputname = inputstack:get_name()
+ local multiplier = 0
+ for k, _ in pairs(fields) do
+ -- Set a multipier for the half/full size capable blocks
+ if twosize_products[k] ~= nil then
+ multiplier = size * twosize_products[k]
+ else
+ multiplier = onesize_products[k]
+ end
+
+ if onesize_products[k] ~= nil or twosize_products[k] ~= nil then
+ meta:set_float( "cnc_multiplier", multiplier)
+ meta:set_string("cnc_user", sender:get_player_name())
+ end
+
+ if onesize_products[k] ~= nil or (twosize_products[k] ~= nil and size==2) then
+ meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k)
+ --print(inputname .. "_technic_cnc_" .. k)
+ break
+ end
+
+ if twosize_products[k] ~= nil and size==1 then
+ meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k .. "_double")
+ --print(inputname .. "_technic_cnc_" .. k .. "_double")
+ break
+ end
+ end
+ return
+end
+
+-- Action code performing the transformation
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local eu_input = meta:get_int("LV_EU_input")
+ local machine_name = S("%s CNC Machine"):format("LV")
+ local machine_node = "technic:cnc"
+ local demand = 450
+
+ local result = meta:get_string("cnc_product")
+ if inv:is_empty("src") or
+ (not minetest.registered_nodes[result]) or
+ (not inv:room_for_item("dst", result)) then
+ technic.swap_node(pos, machine_node)
+ meta:set_string("infotext", S("%s Idle"):format(machine_name))
+ meta:set_string("cnc_product", "")
+ meta:set_int("LV_EU_demand", 0)
+ return
+ end
+
+ if eu_input < demand then
+ technic.swap_node(pos, machine_node)
+ meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
+ elseif eu_input >= demand then
+ technic.swap_node(pos, machine_node.."_active")
+ meta:set_string("infotext", S("%s Active"):format(machine_name))
+ meta:set_int("src_time", meta:get_int("src_time") + 1)
+ if meta:get_int("src_time") >= 3 then -- 3 ticks per output
+ meta:set_int("src_time", 0)
+ srcstack = inv:get_stack("src", 1)
+ srcstack:take_item()
+ inv:set_stack("src", 1, srcstack)
+ inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier"))
+ end
+ end
+ meta:set_int("LV_EU_demand", demand)
+end
+
+-- The actual block inactive state
+minetest.register_node("technic:cnc", {
+ description = S("%s CNC Machine"):format("LV"),
+ tiles = {"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png",
+ "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"},
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ },
+ },
+ groups = {cracky=2, technic_machine=1},
+ legacy_facedir_simple = true,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("%s CNC Machine"):format("LV"))
+ meta:set_float("technic_power_machine", 1)
+ meta:set_string("formspec", cnc_formspec)
+ local inv = meta:get_inventory()
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ on_receive_fields = form_handler,
+ technic_run = run,
+})
+
+-- Active state block
+minetest.register_node("technic:cnc_active", {
+ description = S("%s CNC Machine"):format("LV"),
+ tiles = {"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png",
+ "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"},
+ paramtype2 = "facedir",
+ drop = "technic:cnc",
+ groups = {cracky=2, technic_machine=1, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ on_receive_fields = form_handler,
+ technic_run = run,
+ technic_disabled_machine_name = "technic:cnc",
+})
+
+technic.register_machine("LV", "technic:cnc", technic.receiver)
+technic.register_machine("LV", "technic:cnc_active", technic.receiver)
+
+-------------------------
+-- CNC Machine Recipe
+-------------------------
+minetest.register_craft({
+ output = 'technic:cnc',
+ recipe = {
+ {'default:glass', 'technic:diamond_drill_head', 'default:glass'},
+ {'technic:control_logic_unit', 'technic:machine_casing', 'technic:motor'},
+ {'technic:carbon_steel_ingot', 'technic:lv_cable0', 'technic:carbon_steel_ingot'},
+ },
+})
+
diff --git a/technic/technic/machines/LV/cnc_api.lua b/technic/technic/machines/LV/cnc_api.lua
new file mode 100644
index 0000000..f5aae5c
--- /dev/null
+++ b/technic/technic/machines/LV/cnc_api.lua
@@ -0,0 +1,369 @@
+-- API for the technic CNC machine
+-- Again code is adapted from the NonCubic Blocks MOD v1.4 by yves_de_beck
+
+local S = technic.getter
+
+technic.cnc = {}
+
+-- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES:
+------------------------------------------------------
+
+-- Define slope boxes for the various nodes
+-------------------------------------------
+technic.cnc.programs = {
+ { suffix = "technic_cnc_stick",
+ model = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15},
+ desc = S("Stick")
+ },
+
+ { suffix = "technic_cnc_element_end_double",
+ model = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5},
+ desc = S("Element End Double")
+ },
+
+ { suffix = "technic_cnc_element_cross_double",
+ model = {
+ {0.3, -0.5, -0.3, 0.5, 0.5, 0.3},
+ {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5},
+ {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}},
+ desc = S("Element Cross Double")
+ },
+
+ { suffix = "technic_cnc_element_t_double",
+ model = {
+ {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3},
+ {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3},
+ {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}},
+ desc = S("Element T Double")
+ },
+
+ { suffix = "technic_cnc_element_edge_double",
+ model = {
+ {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3},
+ {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}},
+ desc = S("Element Edge Double")
+ },
+
+ { suffix = "technic_cnc_element_straight_double",
+ model = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5},
+ desc = S("Element Straight Double")
+ },
+
+ { suffix = "technic_cnc_element_end",
+ model = {-0.3, -0.5, -0.3, 0.3, 0, 0.5},
+ desc = S("Element End")
+ },
+
+ { suffix = "technic_cnc_element_cross",
+ model = {
+ {0.3, -0.5, -0.3, 0.5, 0, 0.3},
+ {-0.3, -0.5, -0.5, 0.3, 0, 0.5},
+ {-0.5, -0.5, -0.3, -0.3, 0, 0.3}},
+ desc = S("Element Cross")
+ },
+
+ { suffix = "technic_cnc_element_t",
+ model = {
+ {-0.3, -0.5, -0.5, 0.3, 0, 0.3},
+ {-0.5, -0.5, -0.3, -0.3, 0, 0.3},
+ {0.3, -0.5, -0.3, 0.5, 0, 0.3}},
+ desc = S("Element T")
+ },
+
+ { suffix = "technic_cnc_element_edge",
+ model = {
+ {-0.3, -0.5, -0.5, 0.3, 0, 0.3},
+ {-0.5, -0.5, -0.3, -0.3, 0, 0.3}},
+ desc = S("Element Edge")
+ },
+
+ { suffix = "technic_cnc_element_straight",
+ model = {-0.3, -0.5, -0.5, 0.3, 0, 0.5},
+ desc = S("Element Straight")
+ },
+
+ { suffix = "technic_cnc_oblate_spheroid",
+ model = "technic_oblate_spheroid.obj",
+ desc = S("Oblate spheroid"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -6/16, 4/16, -6/16, 6/16, 8/16, 6/16 },
+ { -8/16, -4/16, -8/16, 8/16, 4/16, 8/16 },
+ { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_sphere",
+ model = "technic_sphere.obj",
+ desc = S("Sphere")
+ },
+
+ { suffix = "technic_cnc_cylinder_horizontal",
+ model = "technic_cylinder_horizontal.obj",
+ desc = S("Horizontal Cylinder")
+ },
+
+ { suffix = "technic_cnc_cylinder",
+ model = "technic_cylinder.obj",
+ desc = S("Cylinder")
+ },
+
+ { suffix = "technic_cnc_twocurvededge",
+ model = "technic_two_curved_edge.obj",
+ desc = S("Two Curved Edge/Corner Block")
+ },
+
+ { suffix = "technic_cnc_onecurvededge",
+ model = "technic_one_curved_edge.obj",
+ desc = S("One Curved Edge Block")
+ },
+
+ { suffix = "technic_cnc_spike",
+ model = "technic_pyramid_spike.obj",
+ desc = S("Spike"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -2/16, 4/16, -2/16, 2/16, 8/16, 2/16 },
+ { -4/16, 0, -4/16, 4/16, 4/16, 4/16 },
+ { -6/16, -4/16, -6/16, 6/16, 0, 6/16 },
+ { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_pyramid",
+ model = "technic_pyramid.obj",
+ desc = S("Pyramid"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -2/16, -2/16, -2/16, 2/16, 0, 2/16 },
+ { -4/16, -4/16, -4/16, 4/16, -2/16, 4/16 },
+ { -6/16, -6/16, -6/16, 6/16, -4/16, 6/16 },
+ { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope_inner_edge_upsdown",
+ model = "technic_innercorner_upsdown.obj",
+ desc = S("Slope Upside Down Inner Edge/Corner"),
+ sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
+ },
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { 0.25, -0.25, -0.5, 0.5, -0.5, 0.5 },
+ { -0.5, -0.25, 0.25, 0.5, -0.5, 0.5 },
+ { 0, 0, -0.5, 0.5, -0.25, 0.5 },
+ { -0.5, 0, 0, 0.5, -0.25, 0.5 },
+ { -0.25, 0.25, -0.5, 0.5, 0, -0.25 },
+ { -0.5, 0.25, -0.25, 0.5, 0, 0.5 },
+ { -0.5, 0.5, -0.5, 0.5, 0.25, 0.5 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope_edge_upsdown",
+ model = "technic_outercorner_upsdown.obj",
+ desc = S("Slope Upside Down Outer Edge/Corner"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 },
+ { -4/16, 4/16, -4/16, 8/16, 0, 8/16 },
+ { 0, 0, 0, 8/16, -4/16, 8/16 },
+ { 4/16, -4/16, 4/16, 8/16, -8/16, 8/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope_inner_edge",
+ model = "technic_innercorner.obj",
+ desc = S("Slope Inner Edge/Corner"),
+ sbox = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
+ },
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 },
+ { -0.5, -0.25, -0.25, 0.5, 0, 0.5 },
+ { -0.25, -0.25, -0.5, 0.5, 0, -0.25 },
+ { -0.5, 0, 0, 0.5, 0.25, 0.5 },
+ { 0, 0, -0.5, 0.5, 0.25, 0.5 },
+ { -0.5, 0.25, 0.25, 0.5, 0.5, 0.5 },
+ { 0.25, 0.25, -0.5, 0.5, 0.5, 0.5 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope_edge",
+ model = "technic_outercorner.obj",
+ desc = S("Slope Outer Edge/Corner"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { 4/16, 4/16, 4/16, 8/16, 8/16, 8/16 },
+ { 0, 0, 0, 8/16, 4/16, 8/16 },
+ { -4/16, -4/16, -4/16, 8/16, 0, 8/16 },
+ { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope_upsdown",
+ model = "technic_slope_upsdown.obj",
+ desc = S("Slope Upside Down"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 },
+ { -8/16, 4/16, -4/16, 8/16, 0, 8/16 },
+ { -8/16, 0, 0, 8/16, -4/16, 8/16 },
+ { -8/16, -4/16, 4/16, 8/16, -8/16, 8/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope_lying",
+ model = "technic_slope_horizontal.obj",
+ desc = S("Slope Lying"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { 4/16, -8/16, 4/16, 8/16, 8/16, 8/16 },
+ { 0, -8/16, 0, 4/16, 8/16, 8/16 },
+ { -4/16, -8/16, -4/16, 0, 8/16, 8/16 },
+ { -8/16, -8/16, -8/16, -4/16, 8/16, 8/16 }
+ }
+ }
+ },
+
+ { suffix = "technic_cnc_slope",
+ model = "technic_slope.obj",
+ desc = S("Slope"),
+ cbox = {
+ type = "fixed",
+ fixed = {
+ { -8/16, 4/16, 4/16, 8/16, 8/16, 8/16 },
+ { -8/16, 0, 0, 8/16, 4/16, 8/16 },
+ { -8/16, -4/16, -4/16, 8/16, 0, 8/16 },
+ { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }
+ }
+ }
+ },
+
+}
+
+-- Allow disabling certain programs for some node. Default is allowing all types for all nodes
+technic.cnc.programs_disable = {
+ -- ["default:brick"] = {"technic_cnc_stick"}, -- Example: Disallow the stick for brick
+ -- ...
+ ["default:dirt"] = {"technic_cnc_oblate_spheroid", "technic_cnc_slope_upsdown", "technic_cnc_edge",
+ "technic_cnc_inner_edge", "technic_cnc_slope_edge_upsdown",
+ "technic_cnc_slope_inner_edge_upsdown", "technic_cnc_stick",
+ "technic_cnc_cylinder_horizontal"}
+}
+
+-- Generic function for registering all the different node types
+function technic.cnc.register_program(recipeitem, suffix, model, groups, images, description, cbox, sbox)
+
+ local dtype
+ local nodeboxdef
+ local meshdef
+
+ if type(model) ~= "string" then -- assume a nodebox if it's a table or function call
+ dtype = "nodebox"
+ nodeboxdef = {
+ type = "fixed",
+ fixed = model
+ }
+ else
+ dtype = "mesh"
+ meshdef = model
+ end
+
+ if cbox and not sbox then sbox = cbox end
+
+ minetest.register_node(":"..recipeitem.."_"..suffix, {
+ description = description,
+ drawtype = dtype,
+ node_box = nodeboxdef,
+ mesh = meshdef,
+ tiles = images,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ groups = groups,
+ selection_box = sbox,
+ collision_box = cbox
+ })
+end
+
+-- function to iterate over all the programs the CNC machine knows
+function technic.cnc.register_all(recipeitem, groups, images, description)
+ for _, data in ipairs(technic.cnc.programs) do
+ -- Disable node creation for disabled node types for some material
+ local do_register = true
+ if technic.cnc.programs_disable[recipeitem] ~= nil then
+ for __, disable in ipairs(technic.cnc.programs_disable[recipeitem]) do
+ if disable == data.suffix then
+ do_register = false
+ end
+ end
+ end
+ -- Create the node if it passes the test
+ if do_register then
+ technic.cnc.register_program(recipeitem, data.suffix, data.model,
+ groups, images, description.." "..data.desc, data.cbox, data.sbox)
+ end
+ end
+end
+
+
+-- REGISTER NEW TECHNIC_CNC_API's PART 2: technic.cnc..register_element_end(subname, recipeitem, groups, images, desc_element_xyz)
+-----------------------------------------------------------------------------------------------------------------------
+function technic.cnc.register_slope_edge_etc(recipeitem, groups, images, desc_slope, desc_slope_lying, desc_slope_upsdown, desc_slope_edge, desc_slope_inner_edge, desc_slope_upsdwn_edge, desc_slope_upsdwn_inner_edge, desc_pyramid, desc_spike, desc_onecurvededge, desc_twocurvededge, desc_cylinder, desc_cylinder_horizontal, desc_spheroid, desc_element_straight, desc_element_edge, desc_element_t, desc_element_cross, desc_element_end)
+
+ technic.cnc.register_slope(recipeitem, groups, images, desc_slope)
+ technic.cnc.register_slope_lying(recipeitem, groups, images, desc_slope_lying)
+ technic.cnc.register_slope_upsdown(recipeitem, groups, images, desc_slope_upsdown)
+ technic.cnc.register_slope_edge(recipeitem, groups, images, desc_slope_edge)
+ technic.cnc.register_slope_inner_edge(recipeitem, groups, images, desc_slope_inner_edge)
+ technic.cnc.register_slope_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_edge)
+ technic.cnc.register_slope_inner_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_inner_edge)
+ technic.cnc.register_pyramid(recipeitem, groups, images, desc_pyramid)
+ technic.cnc.register_spike(recipeitem, groups, images, desc_spike)
+ technic.cnc.register_onecurvededge(recipeitem, groups, images, desc_onecurvededge)
+ technic.cnc.register_twocurvededge(recipeitem, groups, images, desc_twocurvededge)
+ technic.cnc.register_cylinder(recipeitem, groups, images, desc_cylinder)
+ technic.cnc.register_cylinder_horizontal(recipeitem, groups, images, desc_cylinder_horizontal)
+ technic.cnc.register_spheroid(recipeitem, groups, images, desc_spheroid)
+ technic.cnc.register_element_straight(recipeitem, groups, images, desc_element_straight)
+ technic.cnc.register_element_edge(recipeitem, groups, images, desc_element_edge)
+ technic.cnc.register_element_t(recipeitem, groups, images, desc_element_t)
+ technic.cnc.register_element_cross(recipeitem, groups, images, desc_element_cross)
+ technic.cnc.register_element_end(recipeitem, groups, images, desc_element_end)
+end
+
+-- REGISTER STICKS: noncubic.register_xyz(recipeitem, groups, images, desc_element_xyz)
+------------------------------------------------------------------------------------------------------------
+function technic.cnc.register_stick_etc(recipeitem, groups, images, desc_stick)
+ technic.cnc.register_stick(recipeitem, groups, images, desc_stick)
+end
+
+function technic.cnc.register_elements(recipeitem, groups, images, desc_element_straight_double, desc_element_edge_double, desc_element_t_double, desc_element_cross_double, desc_element_end_double)
+ technic.cnc.register_element_straight_double(recipeitem, groups, images, desc_element_straight_double)
+ technic.cnc.register_element_edge_double(recipeitem, groups, images, desc_element_edge_double)
+ technic.cnc.register_element_t_double(recipeitem, groups, images, desc_element_t_double)
+ technic.cnc.register_element_cross_double(recipeitem, groups, images, desc_element_cross_double)
+ technic.cnc.register_element_end_double(recipeitem, groups, images, desc_element_end_double)
+end
+
diff --git a/technic/technic/machines/LV/cnc_nodes.lua b/technic/technic/machines/LV/cnc_nodes.lua
new file mode 100644
index 0000000..05be9af
--- /dev/null
+++ b/technic/technic/machines/LV/cnc_nodes.lua
@@ -0,0 +1,91 @@
+-- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS:
+-----------------------------------------------------------
+
+local S = technic.getter
+
+-- DIRT
+-------
+technic.cnc.register_all("default:dirt",
+ {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ {"default_grass.png", "default_dirt.png", "default_grass.png"},
+ S("Dirt"))
+-- WOOD
+-------
+technic.cnc.register_all("default:wood",
+ {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
+ {"default_wood.png"},
+ S("Wooden"))
+-- STONE
+--------
+technic.cnc.register_all("default:stone",
+ {cracky=3, not_in_creative_inventory=1},
+ {"default_stone.png"},
+ S("Stone"))
+-- COBBLE
+---------
+technic.cnc.register_all("default:cobble",
+ {cracky=3, not_in_creative_inventory=1},
+ {"default_cobble.png"},
+ S("Cobble"))
+-- BRICK
+--------
+technic.cnc.register_all("default:brick",
+ {cracky=3, not_in_creative_inventory=1},
+ {"default_brick.png"},
+ S("Brick"))
+
+-- SANDSTONE
+------------
+technic.cnc.register_all("default:sandstone",
+ {crumbly=2, cracky=3, not_in_creative_inventory=1},
+ {"default_sandstone.png"},
+ S("Sandstone"))
+
+-- LEAVES
+---------
+technic.cnc.register_all("default:leaves",
+ {snappy=2, choppy=2, oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ {"default_leaves.png"},
+ S("Leaves"))
+-- TREE
+-------
+technic.cnc.register_all("default:tree",
+ {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1},
+ {"default_tree.png"},
+ S("Tree"))
+
+-- WROUGHT IRON
+---------------
+technic.cnc.register_all("default:steelblock",
+ {cracky=1, level=2, not_in_creative_inventory=1},
+ {"technic_wrought_iron_block.png"},
+ S("Wrought Iron"))
+
+-- Bronze
+--------
+technic.cnc.register_all("default:bronzeblock",
+ {cracky=1, level=2, not_in_creative_inventory=1},
+ {"default_bronze_block.png"},
+ S("Bronze"))
+
+-- Stainless Steel
+--------
+technic.cnc.register_all("technic:stainless_steel_block",
+ {cracky=1, level=2, not_in_creative_inventory=1},
+ {"technic_stainless_steel_block.png"},
+ S("Stainless Steel"))
+
+-- Marble
+------------
+technic.cnc.register_all("technic:marble",
+ {cracky=3, not_in_creative_inventory=1},
+ {"technic_marble.png"},
+ S("Marble"))
+
+-- Granite
+------------
+technic.cnc.register_all("technic:granite",
+ {cracky=1, not_in_creative_inventory=1},
+ {"technic_granite.png"},
+ S("Granite"))
+
diff --git a/technic/technic/machines/LV/compressor.lua b/technic/technic/machines/LV/compressor.lua
new file mode 100644
index 0000000..e2bde40
--- /dev/null
+++ b/technic/technic/machines/LV/compressor.lua
@@ -0,0 +1,13 @@
+
+minetest.register_alias("compressor", "technic:lv_compressor")
+
+minetest.register_craft({
+ output = 'technic:lv_compressor',
+ recipe = {
+ {'default:stone', 'technic:motor', 'default:stone'},
+ {'mesecons:piston', 'technic:machine_casing', 'mesecons:piston'},
+ {'technic:fine_silver_wire', 'technic:lv_cable0', 'technic:fine_silver_wire'},
+ }
+})
+
+technic.register_compressor({tier = "LV", demand = {300}, speed = 1})
diff --git a/technic/technic/machines/LV/electric_furnace.lua b/technic/technic/machines/LV/electric_furnace.lua
new file mode 100644
index 0000000..cc4daff
--- /dev/null
+++ b/technic/technic/machines/LV/electric_furnace.lua
@@ -0,0 +1,16 @@
+-- LV Electric Furnace
+-- This is a faster version of the stone furnace which runs on EUs
+
+-- FIXME: kpoppel I'd like to introduce an induction heating element here also
+minetest.register_craft({
+ output = 'technic:electric_furnace',
+ recipe = {
+ {'default:cobble', 'default:cobble', 'default:cobble'},
+ {'default:cobble', 'technic:machine_casing', 'default:cobble'},
+ {'default:cobble', 'technic:lv_cable0', 'default:cobble'},
+ }
+})
+
+technic.register_electric_furnace({tier="LV", demand={300}, speed = 2})
+
+
diff --git a/technic/technic/machines/LV/extractor.lua b/technic/technic/machines/LV/extractor.lua
new file mode 100644
index 0000000..363d2e3
--- /dev/null
+++ b/technic/technic/machines/LV/extractor.lua
@@ -0,0 +1,13 @@
+
+minetest.register_alias("extractor", "technic:lv_extractor")
+
+minetest.register_craft({
+ output = 'technic:lv_extractor',
+ recipe = {
+ {'technic:treetap', 'technic:motor', 'technic:treetap'},
+ {'technic:treetap', 'technic:machine_casing', 'technic:treetap'},
+ {'', 'technic:lv_cable0', ''},
+ }
+})
+
+technic.register_extractor({tier = "LV", demand = {300}, speed = 1})
diff --git a/technic/technic/machines/LV/generator.lua b/technic/technic/machines/LV/generator.lua
new file mode 100644
index 0000000..999dbc5
--- /dev/null
+++ b/technic/technic/machines/LV/generator.lua
@@ -0,0 +1,18 @@
+-- The electric generator.
+-- A simple device to get started on the electric machines.
+-- Inefficient and expensive in fuel (200EU per tick)
+-- Also only allows for LV machinery to run.
+
+minetest.register_alias("lv_generator", "technic:lv_generator")
+
+minetest.register_craft({
+ output = 'technic:lv_generator',
+ recipe = {
+ {'default:stone', 'default:furnace', 'default:stone'},
+ {'default:stone', 'technic:machine_casing', 'default:stone'},
+ {'default:stone', 'technic:lv_cable0', 'default:stone'},
+ }
+})
+
+technic.register_generator({tier="LV", supply=200})
+
diff --git a/technic/technic/machines/LV/geothermal.lua b/technic/technic/machines/LV/geothermal.lua
new file mode 100644
index 0000000..e88d3c9
--- /dev/null
+++ b/technic/technic/machines/LV/geothermal.lua
@@ -0,0 +1,111 @@
+-- A geothermal EU generator
+-- Using hot lava and water this device can create energy from steam
+-- The machine is only producing LV EUs and can thus not drive more advanced equipment
+-- The output is a little more than the coal burning generator (max 300EUs)
+
+minetest.register_alias("geothermal", "technic:geothermal")
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = 'technic:geothermal',
+ recipe = {
+ {'technic:granite', 'default:diamond', 'technic:granite'},
+ {'technic:fine_copper_wire', 'technic:machine_casing', 'technic:fine_copper_wire'},
+ {'technic:granite', 'technic:lv_cable0', 'technic:granite'},
+ }
+})
+
+minetest.register_craftitem("technic:geothermal", {
+ description = S("Geothermal %s Generator"):format("LV"),
+})
+
+local check_node_around = function(pos)
+ local node = minetest.get_node(pos)
+ if node.name == "default:water_source" or node.name == "default:water_flowing" then return 1 end
+ if node.name == "default:lava_source" or node.name == "default:lava_flowing" then return 2 end
+ return 0
+end
+
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local water_nodes = 0
+ local lava_nodes = 0
+ local production_level = 0
+ local eu_supply = 0
+
+ -- Correct positioning is water on one side and lava on the other.
+ -- The two cannot be adjacent because the lava the turns into obsidian or rock.
+ -- To get to 100% production stack the water and lava one extra block down as well:
+ -- WGL (W=Water, L=Lava, G=the generator, |=an LV cable)
+ -- W|L
+
+ local positions = {
+ {x=pos.x+1, y=pos.y, z=pos.z},
+ {x=pos.x+1, y=pos.y-1, z=pos.z},
+ {x=pos.x-1, y=pos.y, z=pos.z},
+ {x=pos.x-1, y=pos.y-1, z=pos.z},
+ {x=pos.x, y=pos.y, z=pos.z+1},
+ {x=pos.x, y=pos.y-1, z=pos.z+1},
+ {x=pos.x, y=pos.y, z=pos.z-1},
+ {x=pos.x, y=pos.y-1, z=pos.z-1},
+ }
+ for _, p in pairs(positions) do
+ local check = check_node_around(p)
+ if check == 1 then water_nodes = water_nodes + 1 end
+ if check == 2 then lava_nodes = lava_nodes + 1 end
+ end
+
+ if water_nodes == 1 and lava_nodes == 1 then production_level = 25; eu_supply = 50 end
+ if water_nodes == 2 and lava_nodes == 1 then production_level = 50; eu_supply = 100 end
+ if water_nodes == 1 and lava_nodes == 2 then production_level = 75; eu_supply = 200 end
+ if water_nodes == 2 and lava_nodes == 2 then production_level = 100; eu_supply = 300 end
+
+ if production_level > 0 then
+ meta:set_int("LV_EU_supply", eu_supply)
+ end
+
+ meta:set_string("infotext",
+ S("Geothermal %s Generator"):format("LV").." ("..production_level.."%)")
+
+ if production_level > 0 and minetest.get_node(pos).name == "technic:geothermal" then
+ technic.swap_node (pos, "technic:geothermal_active")
+ return
+ end
+ if production_level == 0 then
+ technic.swap_node(pos, "technic:geothermal")
+ meta:set_int("LV_EU_supply", 0)
+ end
+end
+
+minetest.register_node("technic:geothermal", {
+ description = S("Geothermal %s Generator"):format("LV"),
+ tiles = {"technic_geothermal_top.png", "technic_machine_bottom.png", "technic_geothermal_side.png",
+ "technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"},
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Geothermal %s Generator"):format("LV"))
+ meta:set_int("LV_EU_supply", 0)
+ end,
+ technic_run = run,
+})
+
+minetest.register_node("technic:geothermal_active", {
+ description = S("Geothermal %s Generator"):format("LV"),
+ tiles = {"technic_geothermal_top_active.png", "technic_machine_bottom.png", "technic_geothermal_side.png",
+ "technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"},
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ drop = "technic:geothermal",
+ technic_run = run,
+})
+
+technic.register_machine("LV", "technic:geothermal", technic.producer)
+technic.register_machine("LV", "technic:geothermal_active", technic.producer)
+
diff --git a/technic/technic/machines/LV/grinder.lua b/technic/technic/machines/LV/grinder.lua
new file mode 100644
index 0000000..da9ea29
--- /dev/null
+++ b/technic/technic/machines/LV/grinder.lua
@@ -0,0 +1,13 @@
+
+minetest.register_alias("grinder", "technic:lv_grinder")
+minetest.register_craft({
+ output = 'technic:lv_grinder',
+ recipe = {
+ {'default:desert_stone', 'default:diamond', 'default:desert_stone'},
+ {'default:desert_stone', 'technic:machine_casing', 'default:desert_stone'},
+ {'technic:granite', 'technic:lv_cable0', 'technic:granite'},
+ }
+})
+
+technic.register_grinder({tier="LV", demand={200}, speed=1})
+
diff --git a/technic/technic/machines/LV/init.lua b/technic/technic/machines/LV/init.lua
new file mode 100644
index 0000000..30523c9
--- /dev/null
+++ b/technic/technic/machines/LV/init.lua
@@ -0,0 +1,29 @@
+
+technic.register_tier("LV", "Low Voltage")
+
+local path = technic.modpath.."/machines/LV"
+
+-- Wiring stuff
+dofile(path.."/cables.lua")
+dofile(path.."/battery_box.lua")
+
+-- Generators
+dofile(path.."/solar_panel.lua")
+dofile(path.."/solar_array.lua")
+dofile(path.."/geothermal.lua")
+dofile(path.."/water_mill.lua")
+dofile(path.."/generator.lua")
+
+-- Machines
+dofile(path.."/alloy_furnace.lua")
+dofile(path.."/electric_furnace.lua")
+dofile(path.."/grinder.lua")
+dofile(path.."/extractor.lua")
+dofile(path.."/compressor.lua")
+
+dofile(path.."/music_player.lua")
+
+dofile(path.."/cnc.lua")
+dofile(path.."/cnc_api.lua")
+dofile(path.."/cnc_nodes.lua")
+
diff --git a/technic/technic/machines/LV/music_player.lua b/technic/technic/machines/LV/music_player.lua
new file mode 100644
index 0000000..dc7e2d0
--- /dev/null
+++ b/technic/technic/machines/LV/music_player.lua
@@ -0,0 +1,130 @@
+-- LV Music player.
+-- The player can play music. But it is high ampage!
+
+local S = technic.getter
+
+minetest.register_alias("music_player", "technic:music_player")
+minetest.register_craft({
+ output = 'technic:music_player',
+ recipe = {
+ {'technic:chromium_ingot', 'default:diamond', 'technic:chromium_ingot'},
+ {'default:diamond', 'technic:machine_casing', 'default:diamond'},
+ {'default:mossycobble', 'technic:lv_cable0', 'default:mossycobble'},
+ }
+})
+
+local music_handles = {}
+
+local function play_track(pos, track)
+ return minetest.sound_play("technic_track"..tostring(track),
+ {pos = pos, gain = 1.0, loop = true, max_hear_distance = 72,})
+end
+
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local eu_input = meta:get_int("LV_EU_input")
+ local machine_name = S("%s Music Player"):format("LV")
+ local machine_node = "technic:music_player"
+ local demand = 150
+
+ local current_track = meta:get_int("current_track")
+ local pos_hash = minetest.hash_node_position(pos)
+ local music_handle = music_handles[pos_hash]
+
+ -- Setup meta data if it does not exist.
+ if not eu_input then
+ meta:set_int("LV_EU_demand", demand)
+ meta:set_int("LV_EU_input", 0)
+ return
+ end
+
+ if meta:get_int("active") == 0 then
+ meta:set_string("infotext", S("%s Idle"):format(machine_name))
+ meta:set_int("LV_EU_demand", 0)
+ return
+ end
+
+ if eu_input < demand then
+ meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
+ if music_handle then
+ minetest.sound_stop(music_handle)
+ music_handle = nil
+ end
+ elseif eu_input >= demand then
+ meta:set_string("infotext", S("%s Active"):format(machine_name))
+ if not music_handle then
+ music_handle = play_track(pos, current_track)
+ end
+ end
+ music_handles[pos_hash] = music_handle
+ meta:set_int("LV_EU_demand", demand)
+end
+
+local function stop_player(pos, node)
+ local pos_hash = minetest.hash_node_position(pos)
+ local music_handle = music_handles[pos_hash]
+ if music_handle then
+ minetest.sound_stop(music_handle)
+ music_handles[pos_hash] = nil
+ end
+end
+
+local function set_display(meta)
+ meta:set_string("formspec",
+ "size[4,4.5]"..
+ "item_image[0,0;1,1;technic:music_player]"..
+ "label[1,0;"..S("%s Music Player"):format("LV").."]"..
+ "button[0,1;1,1;track1;1]"..
+ "button[1,1;1,1;track2;2]"..
+ "button[2,1;1,1;track3;3]"..
+ "button[0,2;1,1;track4;4]"..
+ "button[1,2;1,1;track5;5]"..
+ "button[2,2;1,1;track6;6]"..
+ "button[0,3;1,1;track7;7]"..
+ "button[1,3;1,1;track8;8]"..
+ "button[2,3;1,1;track9;9]"..
+ "button[3,1;1,1;stop;Stop]"..
+ "label[0,4;"..minetest.formspec_escape(
+ meta:get_int("active") == 0 and
+ S("Stopped") or
+ S("Current track %s"):format(meta:get_int("current_track"))).."]")
+end
+
+minetest.register_node("technic:music_player", {
+ description = S("%s Music Player"):format("LV"),
+ tiles = {"technic_music_player_top.png", "technic_machine_bottom.png", "technic_music_player_side.png",
+ "technic_music_player_side.png", "technic_music_player_side.png", "technic_music_player_side.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("%s Music Player"):format("LV"))
+ set_display(meta)
+ end,
+ on_receive_fields = function(pos, formanme, fields, sender)
+ local new_track = nil
+ if fields.stop then new_track = 0 end
+ if fields.track1 then new_track = 1 end
+ if fields.track2 then new_track = 2 end
+ if fields.track3 then new_track = 3 end
+ if fields.track4 then new_track = 4 end
+ if fields.track5 then new_track = 5 end
+ if fields.track6 then new_track = 6 end
+ if fields.track7 then new_track = 7 end
+ if fields.track8 then new_track = 8 end
+ if fields.track9 then new_track = 9 end
+ if new_track then
+ stop_player(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("active", new_track == 0 and 0 or 1)
+ meta:set_int("current_track", new_track)
+ set_display(meta)
+ end
+ end,
+ on_destruct = stop_player,
+ technic_run = run,
+ technic_on_disable = stop_player,
+})
+
+technic.register_machine("LV", "technic:music_player", technic.receiver)
+
diff --git a/technic/technic/machines/LV/solar_array.lua b/technic/technic/machines/LV/solar_array.lua
new file mode 100644
index 0000000..4d2c3b3
--- /dev/null
+++ b/technic/technic/machines/LV/solar_array.lua
@@ -0,0 +1,18 @@
+-- The solar array is an assembly of panels into a powerful array
+-- The assembly can deliver more energy than the individual panel because
+-- of the transformer unit which converts the panel output variations into
+-- a stable supply.
+-- Solar arrays are not able to store large amounts of energy.
+-- The LV arrays are used to make medium voltage arrays.
+
+minetest.register_craft({
+ output = 'technic:solar_array_lv 1',
+ recipe = {
+ {'technic:solar_panel', 'technic:solar_panel', 'technic:solar_panel'},
+ {'technic:carbon_steel_ingot', 'technic:lv_transformer', 'technic:carbon_steel_ingot'},
+ {'', 'technic:lv_cable0', ''},
+ }
+})
+
+technic.register_solar_array({tier="LV", power=10})
+
diff --git a/technic/technic/machines/LV/solar_panel.lua b/technic/technic/machines/LV/solar_panel.lua
new file mode 100644
index 0000000..41dff95
--- /dev/null
+++ b/technic/technic/machines/LV/solar_panel.lua
@@ -0,0 +1,67 @@
+-- Solar panels are the building blocks of LV solar arrays
+-- They can however also be used separately but with reduced efficiency due to the missing transformer.
+-- Individual panels are less efficient than when the panels are combined into full arrays.
+
+local S = technic.getter
+
+local run = function(pos, node)
+ -- The action here is to make the solar panel prodice power
+ -- Power is dependent on the light level and the height above ground
+ -- There are many ways to cheat by using other light sources like lamps.
+ -- As there is no way to determine if light is sunlight that is just a shame.
+ -- To take care of some of it solar panels do not work outside daylight hours or if
+ -- built below 0m
+ local pos1 = {x=pos.x, y=pos.y+1, z=pos.z}
+ local machine_name = S("Small Solar %s Generator"):format("LV")
+
+ local light = minetest.get_node_light(pos1, nil)
+ local time_of_day = minetest.get_timeofday()
+ local meta = minetest.get_meta(pos)
+ if light == nil then light = 0 end
+ -- turn on panel only during day time and if sufficient light
+ -- I know this is counter intuitive when cheating by using other light sources underground.
+ if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > -10 then
+ local charge_to_give = math.floor((light + pos1.y) * 3)
+ charge_to_give = math.max(charge_to_give, 0)
+ charge_to_give = math.min(charge_to_give, 200)
+ meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.prettynum(charge_to_give)))
+ meta:set_int("LV_EU_supply", charge_to_give)
+ else
+ meta:set_string("infotext", S("%s Idle"):format(machine_name))
+ meta:set_int("LV_EU_supply", 0)
+ end
+end
+
+minetest.register_node("technic:solar_panel", {
+ tiles = {"technic_solar_panel_top.png", "technic_solar_panel_bottom.png", "technic_solar_panel_side.png",
+ "technic_solar_panel_side.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ sounds = default.node_sound_wood_defaults(),
+ description = S("Small Solar %s Generator"):format("LV"),
+ active = false,
+ drawtype = "nodebox",
+ paramtype = "light",
+ is_ground_content = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("LV_EU_supply", 0)
+ meta:set_string("infotext", S("Small Solar %s Generator"):format("LV"))
+ end,
+ technic_run = run,
+})
+
+minetest.register_craft({
+ output = 'technic:solar_panel',
+ recipe = {
+ {'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer'},
+ {'technic:fine_silver_wire', 'technic:lv_cable0', 'mesecons_materials:glue'},
+
+ }
+})
+
+technic.register_machine("LV", "technic:solar_panel", technic.producer)
+
diff --git a/technic/technic/machines/LV/water_mill.lua b/technic/technic/machines/LV/water_mill.lua
new file mode 100644
index 0000000..9088d1d
--- /dev/null
+++ b/technic/technic/machines/LV/water_mill.lua
@@ -0,0 +1,102 @@
+-- A water mill produces LV EUs by exploiting flowing water across it
+-- It is a LV EU supplyer and fairly low yield (max 120EUs)
+-- It is a little under half as good as the thermal generator.
+
+local S = technic.getter
+
+minetest.register_alias("water_mill", "technic:water_mill")
+
+minetest.register_craft({
+ output = 'technic:water_mill',
+ recipe = {
+ {'technic:marble', 'default:diamond', 'technic:marble'},
+ {'group:wood', 'technic:machine_casing', 'group:wood'},
+ {'technic:marble', 'technic:lv_cable0', 'technic:marble'},
+ }
+})
+
+local function check_node_around_mill(pos)
+ local node = minetest.get_node(pos)
+ if node.name == "default:water_flowing" or
+ node.name == "default:water_source" then
+ return true
+ end
+ return false
+end
+
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local water_nodes = 0
+ local lava_nodes = 0
+ local production_level = 0
+ local eu_supply = 0
+
+ local positions = {
+ {x=pos.x+1, y=pos.y, z=pos.z},
+ {x=pos.x-1, y=pos.y, z=pos.z},
+ {x=pos.x, y=pos.y, z=pos.z+1},
+ {x=pos.x, y=pos.y, z=pos.z-1},
+ }
+
+ for _, p in pairs(positions) do
+ local check = check_node_around_mill(p)
+ if check then
+ water_nodes = water_nodes + 1
+ end
+ end
+
+ production_level = 25 * water_nodes
+ eu_supply = 30 * water_nodes
+
+ if production_level > 0 then
+ meta:set_int("LV_EU_supply", eu_supply)
+ end
+
+ meta:set_string("infotext",
+ S("Hydro %s Generator"):format("LV").." ("..production_level.."%)")
+
+ if production_level > 0 and
+ minetest.get_node(pos).name == "technic:water_mill" then
+ technic.swap_node (pos, "technic:water_mill_active")
+ meta:set_int("LV_EU_supply", 0)
+ return
+ end
+ if production_level == 0 then
+ technic.swap_node(pos, "technic:water_mill")
+ end
+end
+
+minetest.register_node("technic:water_mill", {
+ description = S("Hydro %s Generator"):format("LV"),
+ tiles = {"technic_water_mill_top.png", "technic_machine_bottom.png",
+ "technic_water_mill_side.png", "technic_water_mill_side.png",
+ "technic_water_mill_side.png", "technic_water_mill_side.png"},
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Hydro %s Generator"):format("LV"))
+ meta:set_int("LV_EU_supply", 0)
+ end,
+ technic_run = run,
+})
+
+minetest.register_node("technic:water_mill_active", {
+ description = S("Hydro %s Generator"):format("LV"),
+ tiles = {"technic_water_mill_top_active.png", "technic_machine_bottom.png",
+ "technic_water_mill_side.png", "technic_water_mill_side.png",
+ "technic_water_mill_side.png", "technic_water_mill_side.png"},
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ drop = "technic:water_mill",
+ technic_run = run,
+ technic_disabled_machine_name = "technic:water_mill",
+})
+
+technic.register_machine("LV", "technic:water_mill", technic.producer)
+technic.register_machine("LV", "technic:water_mill_active", technic.producer)
+
diff --git a/technic/technic/machines/MV/alloy_furnace.lua b/technic/technic/machines/MV/alloy_furnace.lua
new file mode 100644
index 0000000..a1918fd
--- /dev/null
+++ b/technic/technic/machines/MV/alloy_furnace.lua
@@ -0,0 +1,14 @@
+-- MV alloy furnace
+
+minetest.register_craft({
+ output = 'technic:mv_alloy_furnace',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:lv_alloy_furnace', 'technic:stainless_steel_ingot'},
+ {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+
+technic.register_alloy_furnace({tier = "MV", speed = 1.5, upgrade = 1, tube = 1, demand = {3000, 2000, 1000}})
+
diff --git a/technic/technic/machines/MV/battery_box.lua b/technic/technic/machines/MV/battery_box.lua
new file mode 100644
index 0000000..45437c1
--- /dev/null
+++ b/technic/technic/machines/MV/battery_box.lua
@@ -0,0 +1,22 @@
+-- MV Battery box
+
+minetest.register_craft({
+ output = 'technic:mv_battery_box0',
+ recipe = {
+ {'technic:lv_battery_box0', 'technic:lv_battery_box0', 'technic:lv_battery_box0'},
+ {'technic:lv_battery_box0', 'technic:mv_transformer', 'technic:lv_battery_box0'},
+ {'', 'technic:mv_cable0', ''},
+ }
+})
+
+technic.register_battery_box({
+ tier = "MV",
+ max_charge = 200000,
+ charge_rate = 20000,
+ discharge_rate = 80000,
+ charge_step = 2000,
+ discharge_step = 8000,
+ upgrade = 1,
+ tube = 1,
+})
+
diff --git a/technic/technic/machines/MV/cables.lua b/technic/technic/machines/MV/cables.lua
new file mode 100644
index 0000000..b1a34c8
--- /dev/null
+++ b/technic/technic/machines/MV/cables.lua
@@ -0,0 +1,14 @@
+
+minetest.register_alias("mv_cable", "technic:mv_cable0")
+
+minetest.register_craft({
+ output = 'technic:mv_cable0 3',
+ recipe ={
+ {'technic:rubber', 'technic:rubber', 'technic:rubber'},
+ {'technic:lv_cable0', 'technic:lv_cable0', 'technic:lv_cable0'},
+ {'technic:rubber', 'technic:rubber', 'technic:rubber'},
+ }
+})
+
+technic.register_cable("MV", 2.5/16)
+
diff --git a/technic/technic/machines/MV/centrifuge.lua b/technic/technic/machines/MV/centrifuge.lua
new file mode 100644
index 0000000..5bf24bf
--- /dev/null
+++ b/technic/technic/machines/MV/centrifuge.lua
@@ -0,0 +1,16 @@
+minetest.register_craft({
+ output = "technic:mv_centrifuge",
+ recipe = {
+ { "technic:motor", "technic:copper_plate", "technic:diamond_drill_head" },
+ { "technic:copper_plate", "technic:machine_casing", "technic:copper_plate" },
+ { "pipeworks:one_way_tube", "technic:mv_cable0", "pipeworks:mese_filter" },
+ }
+})
+
+technic.register_centrifuge({
+ tier = "MV",
+ demand = { 8000, 7000, 6000 },
+ speed = 2,
+ upgrade = 1,
+ tube = 1,
+})
diff --git a/technic/technic/machines/MV/compressor.lua b/technic/technic/machines/MV/compressor.lua
new file mode 100644
index 0000000..5b36cc5
--- /dev/null
+++ b/technic/technic/machines/MV/compressor.lua
@@ -0,0 +1,12 @@
+-- MV compressor
+
+minetest.register_craft({
+ output = 'technic:mv_compressor',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:lv_compressor', 'technic:stainless_steel_ingot'},
+ {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+technic.register_compressor({tier = "MV", demand = {800, 600, 400}, speed = 2, upgrade = 1, tube = 1})
diff --git a/technic/technic/machines/MV/electric_furnace.lua b/technic/technic/machines/MV/electric_furnace.lua
new file mode 100644
index 0000000..1f6b1c2
--- /dev/null
+++ b/technic/technic/machines/MV/electric_furnace.lua
@@ -0,0 +1,18 @@
+-- MV Electric Furnace
+-- This is a faster version of the stone furnace which runs on EUs
+-- In addition to this it can be upgraded with microcontrollers and batteries
+-- This new version uses the batteries to lower the power consumption of the machine
+-- Also in addition this furnace can be attached to the pipe system from the pipeworks mod.
+
+-- FIXME: kpoppel I'd like to introduce an induction heating element here also
+minetest.register_craft({
+ output = 'technic:mv_electric_furnace',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:lv_electric_furnace', 'technic:stainless_steel_ingot'},
+ {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+technic.register_electric_furnace({tier="MV", upgrade=1, tube=1, demand={2000, 1000, 500}, speed=4})
+
diff --git a/technic/technic/machines/MV/extractor.lua b/technic/technic/machines/MV/extractor.lua
new file mode 100644
index 0000000..fdef5b2
--- /dev/null
+++ b/technic/technic/machines/MV/extractor.lua
@@ -0,0 +1,12 @@
+-- MV extractor
+
+minetest.register_craft({
+ output = 'technic:mv_extractor',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:lv_extractor', 'technic:stainless_steel_ingot'},
+ {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+technic.register_extractor({tier = "MV", demand = {800, 600, 400}, speed = 2, upgrade = 1, tube = 1})
diff --git a/technic/technic/machines/MV/generator.lua b/technic/technic/machines/MV/generator.lua
new file mode 100644
index 0000000..4ae24b8
--- /dev/null
+++ b/technic/technic/machines/MV/generator.lua
@@ -0,0 +1,13 @@
+minetest.register_alias("generator_mv", "technic:generator_mv")
+
+minetest.register_craft({
+ output = 'technic:mv_generator',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:lv_generator', 'technic:stainless_steel_ingot'},
+ {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+technic.register_generator({tier="MV", tube=1, supply=600})
+
diff --git a/technic/technic/machines/MV/grinder.lua b/technic/technic/machines/MV/grinder.lua
new file mode 100644
index 0000000..dac536c
--- /dev/null
+++ b/technic/technic/machines/MV/grinder.lua
@@ -0,0 +1,13 @@
+-- MV grinder
+
+minetest.register_craft({
+ output = 'technic:mv_grinder',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:lv_grinder', 'technic:stainless_steel_ingot'},
+ {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'},
+ {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'},
+ }
+})
+
+technic.register_grinder({tier="MV", demand={600, 450, 300}, speed=2, upgrade=1, tube=1})
+
diff --git a/technic/technic/machines/MV/init.lua b/technic/technic/machines/MV/init.lua
new file mode 100644
index 0000000..72a98b6
--- /dev/null
+++ b/technic/technic/machines/MV/init.lua
@@ -0,0 +1,32 @@
+
+technic.register_tier("MV", "Medium Voltage")
+
+local path = technic.modpath.."/machines/MV"
+
+-- Wiring stuff
+dofile(path.."/cables.lua")
+dofile(path.."/battery_box.lua")
+
+-- Generators
+if technic.config:get_bool("enable_wind_mill") then
+ dofile(path.."/wind_mill.lua")
+end
+dofile(path.."/generator.lua")
+dofile(path.."/solar_array.lua")
+
+-- Machines
+dofile(path.."/alloy_furnace.lua")
+dofile(path.."/electric_furnace.lua")
+dofile(path.."/grinder.lua")
+dofile(path.."/extractor.lua")
+dofile(path.."/compressor.lua")
+dofile(path.."/centrifuge.lua")
+
+dofile(path.."/tool_workshop.lua")
+
+-- The power radiator supplies appliances with inductive coupled power:
+-- Lighting and associated textures is taken directly from VanessaE's homedecor and made electric.
+-- This is currently useless, slow, and mostly copied
+--dofile(path.."/power_radiator.lua")
+--dofile(path.."/lighting.lua")
+
diff --git a/technic/technic/machines/MV/lighting.lua b/technic/technic/machines/MV/lighting.lua
new file mode 100644
index 0000000..76fcb20
--- /dev/null
+++ b/technic/technic/machines/MV/lighting.lua
@@ -0,0 +1,590 @@
+-- NOTE: The code is takes directly from VanessaE's homedecor mod.
+-- I just made it the lights into indictive appliances for this mod.
+
+-- This file supplies electric powered glowlights
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if (minetest.get_modpath("intllib")) then
+ dofile(minetest.get_modpath("intllib").."/intllib.lua")
+ S = intllib.Getter(minetest.get_current_modname())
+else
+ S = function (s) return s end
+end
+
+function technic_homedecor_node_is_owned(pos, placer)
+ local ownername = false
+ if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
+ if HasOwner(pos, placer) then
+ if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
+ if type(getLastOwner) == "function" then -- ...is an old version
+ ownername = getLastOwner(pos)
+ elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
+ ownername = GetNodeOwnerName(pos)
+ else
+ ownername = S("someone")
+ end
+ end
+ end
+
+ elseif type(isprotect) == "function" then -- glomie's protection mod
+ if not isprotect(5, pos, placer) then
+ ownername = S("someone")
+ end
+ elseif type(protector) == "table" and type(protector.can_dig) == "function" then -- Zeg9's protection mod
+ if not protector.can_dig(5, pos, placer) then
+ ownername = S("someone")
+ end
+ end
+
+ if ownername ~= false then
+ minetest.chat_send_player(placer:get_player_name(), S("Sorry, %s owns that spot."):format(ownername) )
+ return true
+ else
+ return false
+ end
+end
+
+local dirs1 = {20, 23, 22, 21}
+local dirs2 = {9, 18, 7, 12}
+
+local technic_homedecor_rotate_and_place = function(itemstack, placer, pointed_thing)
+ if not technic_homedecor_node_is_owned(pointed_thing.under, placer)
+ and not technic_homedecor_node_is_owned(pointed_thing.above, placer) then
+ local node = minetest.get_node(pointed_thing.under)
+ if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
+
+ local above = pointed_thing.above
+ local under = pointed_thing.under
+ local pitch = placer:get_look_pitch()
+ local pname = minetest.get_node(under).name
+ local node = minetest.get_node(above)
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir())
+ local wield_name = itemstack:get_name()
+
+ if not minetest.registered_nodes[pname]
+ or not minetest.registered_nodes[pname].on_rightclick then
+
+ local iswall = (above.x ~= under.x) or (above.z ~= under.z)
+ local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
+ local pos1 = above
+
+ if minetest.registered_nodes[pname]["buildable_to"] then
+ pos1 = under
+ iswall = false
+ end
+
+ if not minetest.registered_nodes[minetest.get_node(pos1).name]["buildable_to"] then return end
+
+ if iswall then
+ minetest.add_node(pos1, {name = wield_name, param2 = dirs2[fdir+1] }) -- place wall variant
+ elseif isceiling then
+ minetest.add_node(pos1, {name = wield_name, param2 = 20 }) -- place upside down variant
+ else
+ minetest.add_node(pos1, {name = wield_name, param2 = 0 }) -- place right side up
+ end
+
+ if not homedecor_expect_infinite_stacks then
+ itemstack:take_item()
+ return itemstack
+ end
+ end
+ else
+ minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
+ end
+ end
+end
+
+-- Yellow -- Half node
+minetest.register_node('technic:homedecor_glowlight_half_yellow', {
+ description = S("Yellow Glowlight (thick)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3 },
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thick)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_half_yellow_active")
+ end
+})
+
+minetest.register_node('technic:homedecor_glowlight_half_yellow_active', {
+ description = S("Yellow Glowlight (thick)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png',
+ 'technic_homedecor_glowlight_thick_yellow_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ light_source = LIGHT_MAX,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3, not_in_creative_inventory=1},
+ drop="technic:homedecor_glowlight_half_yellow",
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thick)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_half_yellow")
+ end
+})
+
+-- Yellow -- Quarter node
+minetest.register_node('technic:homedecor_glowlight_quarter_yellow', {
+ description = S("Yellow Glowlight (thin)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3 },
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thin)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_quarter_yellow_active")
+ end
+})
+
+minetest.register_node('technic:homedecor_glowlight_quarter_yellow_active', {
+ description = S("Yellow Glowlight (thin)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_yellow_tb.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png',
+ 'technic_homedecor_glowlight_thin_yellow_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ light_source = LIGHT_MAX-1,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3, not_in_creative_inventory=1},
+ drop="technic:homedecor_glowlight_quarter_yellow",
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thin)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_quarter_yellow")
+ end
+})
+
+
+-- White -- half node
+minetest.register_node('technic:homedecor_glowlight_half_white', {
+ description = S("White Glowlight (thick)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3 },
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "White Glowlight (thick)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_half_white_active")
+ end
+})
+
+minetest.register_node('technic:homedecor_glowlight_half_white_active', {
+ description = S("White Glowlight (thick)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png',
+ 'technic_homedecor_glowlight_thick_white_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ light_source = LIGHT_MAX,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3, not_in_creative_inventory=1},
+ drop="technic:homedecor_glowlight_half_white",
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "White Glowlight (thick)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_half_white")
+ end
+})
+
+-- White -- Quarter node
+minetest.register_node('technic:homedecor_glowlight_quarter_white', {
+ description = S("White Glowlight (thin)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3 },
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "White Glowlight (thin)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_quarter_white_active")
+ end
+})
+
+minetest.register_node('technic:homedecor_glowlight_quarter_white_active', {
+ description = S("White Glowlight (thin)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_white_tb.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png',
+ 'technic_homedecor_glowlight_thin_white_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ light_source = LIGHT_MAX-1,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3, not_in_creative_inventory=1},
+ drop="technic:homedecor_glowlight_quarter_white",
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 100, "White Glowlight (thin)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_quarter_white")
+ end
+})
+
+-- Glowlight "cubes" - yellow
+minetest.register_node('technic:homedecor_glowlight_small_cube_yellow', {
+ description = S("Yellow Glowlight (small cube)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_cube_yellow_tb.png',
+ 'technic_homedecor_glowlight_cube_yellow_tb.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3 },
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 50, "Yellow Glowlight (small cube)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_off(pos, 50, "technic:homedecor_glowlight_small_cube_yellow_active")
+ end
+})
+
+minetest.register_node('technic:homedecor_glowlight_small_cube_yellow_active', {
+ description = S("Yellow Glowlight (small cube)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_cube_yellow_tb.png',
+ 'technic_homedecor_glowlight_cube_yellow_tb.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png',
+ 'technic_homedecor_glowlight_cube_yellow_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ light_source = LIGHT_MAX-1,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3, not_in_creative_inventory=1},
+ drop="technic:homedecor_glowlight_small_cube_yellow",
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 50, "Yellow Glowlight (small cube)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_small_cube_yellow")
+ end
+})
+
+-- Glowlight "cubes" - white
+minetest.register_node('technic:homedecor_glowlight_small_cube_white', {
+ description = S("White Glowlight (small cube)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_cube_white_tb.png',
+ 'technic_homedecor_glowlight_cube_white_tb.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3 },
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 50, "White Glowlight (small cube)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_off(pos, 50, "technic:homedecor_glowlight_small_cube_white_active")
+ end
+})
+
+minetest.register_node('technic:homedecor_glowlight_small_cube_white_active', {
+ description = S("White Glowlight (small cube)"),
+ drawtype = "nodebox",
+ tiles = {
+ 'technic_homedecor_glowlight_cube_white_tb.png',
+ 'technic_homedecor_glowlight_cube_white_tb.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png',
+ 'technic_homedecor_glowlight_cube_white_sides.png'
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+ node_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
+ },
+
+ sunlight_propagates = false,
+ paramtype = "light",
+ paramtype2 = "facedir",
+ walkable = true,
+ light_source = LIGHT_MAX-1,
+ sounds = default.node_sound_wood_defaults(),
+
+ groups = { snappy = 3, not_in_creative_inventory=1},
+ drop="technic:homedecor_glowlight_small_cube_white",
+ on_place = function(itemstack, placer, pointed_thing)
+ technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing)
+ return itemstack
+ end,
+ on_construct = function(pos)
+ technic.inductive_on_construct(pos, 50, "White Glowlight (small cube)")
+ end,
+ on_punch = function(pos, node, puncher)
+ technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_small_cube_white")
+ end
+})
+
+technic.register_inductive_machine("technic:homedecor_glowlight_half_yellow")
+technic.register_inductive_machine("technic:homedecor_glowlight_half_white")
+technic.register_inductive_machine("technic:homedecor_glowlight_quarter_yellow")
+technic.register_inductive_machine("technic:homedecor_glowlight_quarter_white")
+technic.register_inductive_machine("technic:homedecor_glowlight_small_cube_yellow")
+technic.register_inductive_machine("technic:homedecor_glowlight_small_cube_white")
diff --git a/technic/technic/machines/MV/power_radiator.lua b/technic/technic/machines/MV/power_radiator.lua
new file mode 100644
index 0000000..560f8a9
--- /dev/null
+++ b/technic/technic/machines/MV/power_radiator.lua
@@ -0,0 +1,220 @@
+-- The power radiator fuctions like an inductive charger
+-- only better in the game setting.
+-- The purpose is to allow small appliances to receive power
+-- without the overhead of the wiring needed for larger machines.
+--
+-- The power radiator will consume power corresponding to the
+-- sum(power rating of the attached appliances)/0.06
+-- Using inductive power transfer is very inefficient so this is
+-- set to the factor 0.06.
+--
+-- Punching the radiator will toggle the power state of all attached appliances.
+
+local power_radius = 12
+
+------------------------------------------------------------------
+-- API for inductive powered nodes:
+-- Use the functions below to set the corresponding callbacks
+-- Also two nodes are needed: The inactive and the active one. The active must be called <name>_active .
+------------------------------------------------------------------
+-- Register a new appliance using this function
+
+technic.inductive_nodes = {}
+technic.register_inductive_machine = function(name)
+ table.insert(technic.inductive_nodes, name)
+ table.insert(technic.inductive_nodes, name.."_active")
+end
+
+-- Appliances:
+-- has_supply: pos of supply node if the appliance has a power radiator near with sufficient power for the demand else ""
+-- EU_demand: The power demand of the device.
+-- EU_charge: Actual use. set to EU_demand if active==1
+-- active: set to 1 if the device is on
+technic.inductive_on_construct = function(pos, eu_demand, infotext)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", infotext)
+ meta:set_int("technic_inductive_power_machine", 1)
+ meta:set_int("EU_demand", eu_demand) -- The power demand of this appliance
+ meta:set_int("EU_charge", 0) -- The actual power draw of this appliance
+ meta:set_string("has_supply", "") -- Register whether we are powered or not. For use with several radiators.
+ meta:set_int("active", 0) -- If the appliance can be turned on and off by using it use this.
+end
+
+technic.inductive_on_punch_off = function(pos, eu_charge, swapnode)
+ local meta = minetest.get_meta(pos)
+ if meta:get_string("has_supply") ~= "" then
+ technic.swap_node(pos, swapnode)
+ meta:set_int("active", 1)
+ meta:set_int("EU_charge",eu_charge)
+ --print("-----------")
+ --print("Turn on:")
+ --print("EU_charge: "..meta:get_int("EU_charge"))
+ --print("has_supply: "..meta:get_string("has_supply"))
+ --print("<----------->")
+ end
+end
+
+technic.inductive_on_punch_on = function(pos, eu_charge, swapnode)
+ local meta = minetest.get_meta(pos)
+ technic.swap_node(pos, swapnode)
+ meta:set_int("active", 0)
+ meta:set_int("EU_charge",eu_charge)
+ --print("-----------")
+ --print("Turn off:")
+ --print("EU_charge: "..meta:get_int("EU_charge"))
+ --print("has_supply: "..meta:get_string("has_supply"))
+ --print("<---------->")
+end
+
+local shutdown_inductive_appliances = function(pos)
+ -- The supply radius
+ local rad = power_radius
+ -- If the radiator is removed. turn off all appliances in region
+ -- If another radiator is near it will turn on the appliances again
+ local positions = minetest.find_nodes_in_area(
+ {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad},
+ {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad},
+ technic.inductive_nodes)
+ for _, pos1 in pairs(positions) do
+ local meta1 = minetest.get_meta(pos1)
+ -- If the appliance is belonging to this node
+ if meta1:get_string("has_supply") == pos.x..pos.y..pos.z then
+ local nodename = minetest.get_node(pos1).name
+ -- Swap the node and make sure it is off and unpowered
+ if string.sub(nodename, -7) == "_active" then
+ technic.swap_node(pos1, string.sub(nodename, 1, -8))
+ meta1:set_int("active", 0)
+ meta1:set_int("EU_charge", 0)
+ end
+ meta1:set_string("has_supply", "")
+ end
+ end
+end
+
+local toggle_on_off_inductive_appliances = function(pos, node, puncher)
+ if pos == nil then return end
+ -- The supply radius
+ local rad = power_radius
+ local positions = minetest.find_nodes_in_area(
+ {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad},
+ {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad},
+ technic.inductive_nodes)
+ for _, pos1 in pairs(positions) do
+ local meta1 = minetest.get_meta(pos1)
+ if meta1:get_string("has_supply") == pos.x..pos.y..pos.z then
+ minetest.punch_node(pos1)
+ end
+ end
+end
+
+minetest.register_node("technic:power_radiator", {
+ description = "MV Power Radiator",
+ tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png",
+ "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ drawtype = "nodebox",
+ paramtype = "light",
+ is_ground_content = true,
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("MV_EU_demand",1) -- Demand on the primary side when idle
+ meta:set_int("connected_EU_demand",0) -- Potential demand of connected appliances
+ meta:set_string("infotext", "MV Power Radiator")
+ end,
+ on_dig = function(pos, node, digger)
+ shutdown_inductive_appliances(pos)
+ return minetest.node_dig(pos, node, digger)
+ end,
+ on_punch = function(pos, node, puncher)
+ toggle_on_off_inductive_appliances(pos, node, puncher)
+ end
+})
+
+minetest.register_craft({
+ output = 'technic:power_radiator 1',
+ recipe = {
+ {'technic:stainless_steel_ingot', 'technic:mv_transformer', 'technic:stainless_steel_ingot'},
+ {'technic:copper_coil', 'technic:machine_casing', 'technic:copper_coil'},
+ {'technic:rubber', 'technic:mv_cable0', 'technic:rubber'},
+ }
+})
+
+minetest.register_abm({
+ nodenames = {"technic:power_radiator"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ local eu_input = meta:get_int("MV_EU_input")
+ local eu_demand = meta:get_int("MV_EU_demand")
+
+ -- Power off automatically if no longer connected to a switching station
+ technic.switching_station_timeout_count(pos, "MV")
+
+ if eu_input == 0 then
+ -- No power
+ meta:set_string("infotext", "MV Power Radiator is unpowered");
+ -- meta:set_int("active", 1) -- used for setting textures someday maybe
+ shutdown_inductive_appliances(pos)
+ meta:set_int("connected_EU_demand", 0)
+ meta:set_int("MV_EU_demand",1)
+ elseif eu_input == eu_demand then
+ -- Powered and ready
+
+ -- The maximum EU sourcing a single radiator can provide.
+ local max_charge = 30000 -- == the max EU demand of the radiator
+ local connected_EU_demand = meta:get_int("connected_EU_demand")
+
+ -- Efficiency factor
+ local eff_factor = 0.06
+ -- The supply radius
+ local rad = power_radius
+
+ local meta1 = nil
+ local pos1 = {}
+ local used_charge = 0
+
+ -- Index all nodes within supply range
+ local positions = minetest.find_nodes_in_area(
+ {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad},
+ {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad},
+ technic.inductive_nodes)
+ for _, pos1 in pairs(positions) do
+ local meta1 = minetest.get_meta(pos1)
+ -- If not supplied see if this node can handle it.
+ if meta1:get_string("has_supply") == "" then
+ -- if demand surpasses the capacity of this node, don't bother adding it.
+ local app_eu_demand = math.floor(meta1:get_int("EU_demand") / eff_factor)
+ if connected_EU_demand + app_eu_demand <= max_charge then
+ -- We can power the appliance. Register, and spend power if it is on.
+ connected_EU_demand = connected_EU_demand + app_eu_demand
+
+ meta1:set_string("has_supply", pos.x..pos.y..pos.z)
+ --Always 0: used_charge = math.floor(used_charge + meta1:get_int("EU_charge") / eff_factor)
+ end
+ elseif meta1:get_string("has_supply") == pos.x..pos.y..pos.z then
+ -- The appliance has power from this node. Spend power if it is on.
+ used_charge = used_charge + math.floor(meta1:get_int("EU_charge") / eff_factor)
+ end
+ meta:set_string("infotext", "MV Power Radiator is powered ("
+ ..math.floor(used_charge / max_charge * 100)
+ .."% of maximum power)");
+ if used_charge == 0 then
+ meta:set_int("MV_EU_demand", 1) -- Still idle
+ else
+ meta:set_int("MV_EU_demand", used_charge)
+ end
+ end
+ -- Save state
+ meta:set_int("connected_EU_demand", connected_EU_demand)
+ end
+ end,
+})
+
+technic.register_machine("MV", "technic:power_radiator", technic.receiver)
+
diff --git a/technic/technic/machines/MV/solar_array.lua b/technic/technic/machines/MV/solar_array.lua
new file mode 100644
index 0000000..227d8ee
--- /dev/null
+++ b/technic/technic/machines/MV/solar_array.lua
@@ -0,0 +1,14 @@
+
+minetest.register_craft({
+ output = 'technic:solar_array_mv 1',
+ recipe = {
+ {'technic:solar_array_lv', 'technic:solar_array_lv', 'technic:solar_array_lv'},
+ {'technic:carbon_steel_ingot', 'technic:mv_transformer', 'technic:carbon_steel_ingot'},
+ {'', 'technic:mv_cable0', ''},
+ }
+})
+
+technic.register_solar_array({tier="MV", power=30})
+
+-- compatibility alias for upgrading from old versions of technic
+minetest.register_alias("technic:solar_panel_mv", "technic:solar_array_mv")
diff --git a/technic/technic/machines/MV/tool_workshop.lua b/technic/technic/machines/MV/tool_workshop.lua
new file mode 100644
index 0000000..318b1ec
--- /dev/null
+++ b/technic/technic/machines/MV/tool_workshop.lua
@@ -0,0 +1,117 @@
+-- Tool workshop
+-- This machine repairs tools.
+
+minetest.register_alias("tool_workshop", "technic:tool_workshop")
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = 'technic:tool_workshop',
+ recipe = {
+ {'group:wood', 'default:diamond', 'group:wood'},
+ {'mesecons_pistons:piston_sticky_off', 'technic:machine_casing', 'technic:carbon_cloth'},
+ {'default:obsidian', 'technic:mv_cable0', 'default:obsidian'},
+ }
+})
+
+local workshop_demand = {5000, 3500, 2000}
+
+local workshop_formspec =
+ "invsize[8,9;]"..
+ "list[current_name;src;3,1;1,1;]"..
+ "label[0,0;"..S("%s Tool Workshop"):format("MV").."]"..
+ "list[current_name;upgrade1;1,3;1,1;]"..
+ "list[current_name;upgrade2;2,3;1,1;]"..
+ "label[1,4;"..S("Upgrade Slots").."]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[current_player;main]"..
+ "listring[current_name;src]"..
+ "listring[current_player;main]"..
+ "listring[current_name;upgrade1]"..
+ "listring[current_player;main]"..
+ "listring[current_name;upgrade2]"..
+ "listring[current_player;main]"
+
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local eu_input = meta:get_int("MV_EU_input")
+ local machine_name = S("%s Tool Workshop"):format("MV")
+ local machine_node = "technic:tool_workshop"
+
+ -- Setup meta data if it does not exist.
+ if not eu_input then
+ meta:set_int("MV_EU_demand", workshop_demand[1])
+ meta:set_int("MV_EU_input", 0)
+ return
+ end
+
+ local EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta)
+
+ local repairable = false
+ local srcstack = inv:get_stack("src", 1)
+ if not srcstack:is_empty() then
+ local itemdef = minetest.registered_items[srcstack:get_name()]
+ if itemdef and
+ (not itemdef.wear_represents or
+ itemdef.wear_represents == "mechanical_wear") and
+ srcstack:get_wear() ~= 0 then
+ repairable = true
+ end
+ end
+ technic.handle_machine_pipeworks(pos, tube_upgrade, function (pos, x_velocity, z_velocity)
+ if not repairable then
+ technic.send_items(pos, x_velocity, z_velocity, "src")
+ end
+ end)
+ if not repairable then
+ meta:set_string("infotext", S("%s Idle"):format(machine_name))
+ meta:set_int("MV_EU_demand", 0)
+ return
+ end
+
+ if eu_input < workshop_demand[EU_upgrade+1] then
+ meta:set_string("infotext", S("%s Unpowered"):format(machine_name))
+ elseif eu_input >= workshop_demand[EU_upgrade+1] then
+ meta:set_string("infotext", S("%s Active"):format(machine_name))
+ srcstack:add_wear(-1000)
+ inv:set_stack("src", 1, srcstack)
+ end
+ meta:set_int("MV_EU_demand", workshop_demand[EU_upgrade+1])
+end
+
+minetest.register_node("technic:tool_workshop", {
+ description = S("%s Tool Workshop"):format("MV"),
+ paramtype2 = "facedir",
+ tiles = {"technic_workshop_top.png", "technic_machine_bottom.png", "technic_workshop_side.png",
+ "technic_workshop_side.png", "technic_workshop_side.png", "technic_workshop_side.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, tubedevice=1, tubedevice_receiver=1},
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("%s Tool Workshop"):format("MV"))
+ meta:set_string("formspec", workshop_formspec)
+ local inv = meta:get_inventory()
+ inv:set_size("src", 1)
+ inv:set_size("upgrade1", 1)
+ inv:set_size("upgrade2", 1)
+ end,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ tube = {
+ can_insert = function (pos, node, stack, direction)
+ return minetest.get_meta(pos):get_inventory():room_for_item("src", stack)
+ end,
+ insert_object = function (pos, node, stack, direction)
+ return minetest.get_meta(pos):get_inventory():add_item("src", stack)
+ end,
+ connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
+ },
+ technic_run = run,
+ after_place_node = pipeworks.after_place,
+ after_dig_node = technic.machine_after_dig_node
+})
+
+technic.register_machine("MV", "technic:tool_workshop", technic.receiver)
+
diff --git a/technic/technic/machines/MV/wind_mill.lua b/technic/technic/machines/MV/wind_mill.lua
new file mode 100644
index 0000000..c553051
--- /dev/null
+++ b/technic/technic/machines/MV/wind_mill.lua
@@ -0,0 +1,87 @@
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = 'technic:wind_mill_frame 5',
+ recipe = {
+ {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'},
+ {'', 'technic:carbon_steel_ingot', ''},
+ {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:wind_mill',
+ recipe = {
+ {'', 'technic:motor', ''},
+ {'technic:carbon_steel_ingot', 'technic:carbon_steel_block', 'technic:carbon_steel_ingot'},
+ {'', 'technic:mv_cable0', ''},
+ }
+})
+
+minetest.register_node("technic:wind_mill_frame", {
+ description = S("Wind Mill Frame"),
+ drawtype = "glasslike_framed",
+ tiles = {"technic_carbon_steel_block.png", "default_glass.png"},
+ sunlight_propagates = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ paramtype = "light",
+})
+
+local function check_wind_mill(pos)
+ if pos.y < 30 then
+ return false
+ end
+ for i = 1, 20 do
+ local node = minetest.get_node({x=pos.x, y=pos.y-i, z=pos.z})
+ if node.name ~= "technic:wind_mill_frame" then
+ return false
+ end
+ end
+ return true
+end
+
+local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local machine_name = S("Wind %s Generator"):format("MV")
+ local power = math.min(pos.y * 100, 5000)
+
+ if not check_wind_mill(pos) then
+ meta:set_int("MV_EU_supply", 0)
+ meta:set_string("infotext", S("%s Improperly Placed"):format(machine_name))
+ return
+ else
+ meta:set_int("MV_EU_supply", power)
+ end
+
+ meta:set_string("infotext", S("@1 (@2 EU)", machine_name, technic.prettynum(power)))
+end
+
+minetest.register_node("technic:wind_mill", {
+ description = S("Wind %s Generator"):format("MV"),
+ tiles = {"technic_carbon_steel_block.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=1, technic_machine=1},
+ sounds = default.node_sound_stone_defaults(),
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Main box
+ {-0.1, -0.1, -0.5, 0.1, 0.1, -0.6}, -- Shaft
+ {-0.1, -1, -0.6, 0.1, 1, -0.7}, -- Vertical blades
+ {-1, -0.1, -0.6, 1, 0.1, -0.7}, -- Horizontal blades
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Wind %s Generator"):format("MV"))
+ meta:set_int("MV_EU_supply", 0)
+ end,
+ technic_run = run,
+})
+
+technic.register_machine("MV", "technic:wind_mill", technic.producer)
+
diff --git a/technic/technic/machines/init.lua b/technic/technic/machines/init.lua
new file mode 100644
index 0000000..ad79eab
--- /dev/null
+++ b/technic/technic/machines/init.lua
@@ -0,0 +1,14 @@
+local path = technic.modpath.."/machines"
+
+dofile(path.."/register/init.lua")
+
+-- Tiers
+dofile(path.."/LV/init.lua")
+dofile(path.."/MV/init.lua")
+dofile(path.."/HV/init.lua")
+
+dofile(path.."/switching_station.lua")
+dofile(path.."/supply_converter.lua")
+
+dofile(path.."/other/init.lua")
+
diff --git a/technic/technic/machines/other/anchor.lua b/technic/technic/machines/other/anchor.lua
new file mode 100644
index 0000000..1c15bd2
--- /dev/null
+++ b/technic/technic/machines/other/anchor.lua
@@ -0,0 +1,109 @@
+local S = technic.getter
+
+local desc = S("Administrative World Anchor")
+
+local function compute_forceload_positions(pos, meta)
+ local radius = meta:get_int("radius")
+ local minpos = vector.subtract(pos, vector.new(radius, radius, radius))
+ local maxpos = vector.add(pos, vector.new(radius, radius, radius))
+ local minbpos = {}
+ local maxbpos = {}
+ for _, coord in ipairs({"x","y","z"}) do
+ minbpos[coord] = math.floor(minpos[coord] / 16) * 16
+ maxbpos[coord] = math.floor(maxpos[coord] / 16) * 16
+ end
+ local flposes = {}
+ for x = minbpos.x, maxbpos.x, 16 do
+ for y = minbpos.y, maxbpos.y, 16 do
+ for z = minbpos.z, maxbpos.z, 16 do
+ table.insert(flposes, vector.new(x, y, z))
+ end
+ end
+ end
+ return flposes
+end
+
+local function currently_forceloaded_positions(meta)
+ local ser = meta:get_string("forceloaded")
+ return ser == "" and {} or minetest.deserialize(ser)
+end
+
+local function forceload_off(meta)
+ local flposes = currently_forceloaded_positions(meta)
+ meta:set_string("forceloaded", "")
+ for _, p in ipairs(flposes) do
+ minetest.forceload_free_block(p)
+ end
+end
+
+local function forceload_on(pos, meta)
+ local want_flposes = compute_forceload_positions(pos, meta)
+ local have_flposes = {}
+ for _, p in ipairs(want_flposes) do
+ if minetest.forceload_block(p) then
+ table.insert(have_flposes, p)
+ end
+ end
+ meta:set_string("forceloaded", #have_flposes == 0 and "" or minetest.serialize(have_flposes))
+end
+
+local function set_display(pos, meta)
+ meta:set_string("infotext", S(meta:get_int("enabled") ~= 0 and "%s Enabled" or "%s Disabled"):format(desc))
+ meta:set_string("formspec",
+ "size[5,3.5]"..
+ "item_image[0,0;1,1;technic:admin_anchor]"..
+ "label[1,0;"..minetest.formspec_escape(desc).."]"..
+ "label[0,1;"..minetest.formspec_escape(S("Owner:").." "..meta:get_string("owner")).."]"..
+ (meta:get_int("locked") == 0 and
+ "button[3,1;2,1;lock;"..minetest.formspec_escape(S("Unlocked")).."]" or
+ "button[3,1;2,1;unlock;"..minetest.formspec_escape(S("Locked")).."]")..
+ "field[0.25,2.3;1,1;radius;"..minetest.formspec_escape(S("Radius:"))..";"..meta:get_int("radius").."]"..
+ (meta:get_int("enabled") == 0 and
+ "button[3,2;2,1;enable;"..minetest.formspec_escape(S("Disabled")).."]" or
+ "button[3,2;2,1;disable;"..minetest.formspec_escape(S("Enabled")).."]")..
+ "label[0,3;"..minetest.formspec_escape(S("Keeping %d/%d map blocks loaded"):format(#currently_forceloaded_positions(meta), #compute_forceload_positions(pos, meta))).."]")
+end
+
+minetest.register_node("technic:admin_anchor", {
+ description = desc,
+ drawtype = "normal",
+ tiles = {"technic_admin_anchor.png"},
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ after_place_node = function (pos, placer)
+ local meta = minetest.get_meta(pos)
+ if placer and placer:is_player() then
+ meta:set_string("owner", placer:get_player_name())
+ end
+ set_display(pos, meta)
+ end,
+ can_dig = function (pos, player)
+ local meta = minetest.get_meta(pos)
+ return meta:get_int("locked") == 0 or (player and player:is_player() and player:get_player_name() == meta:get_string("owner"))
+ end,
+ on_destruct = function (pos)
+ local meta = minetest.get_meta(pos)
+ forceload_off(meta)
+ end,
+ on_receive_fields = function (pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ if (meta:get_int("locked") ~= 0 or fields.lock) and
+ not (sender and sender:is_player() and
+ sender:get_player_name() == meta:get_string("owner")) then
+ return
+ end
+ if fields.unlock then meta:set_int("locked", 0) end
+ if fields.lock then meta:set_int("locked", 1) end
+ if fields.disable or fields.enable or fields.radius then
+ forceload_off(meta)
+ if fields.disable then meta:set_int("enabled", 0) end
+ if fields.enable then meta:set_int("enabled", 1) end
+ if fields.radius and string.find(fields.radius, "^[0-9]+$") and tonumber(fields.radius) < 256 then meta:set_int("radius", fields.radius) end
+ if meta:get_int("enabled") ~= 0 then
+ forceload_on(pos, meta)
+ end
+ end
+ set_display(pos, meta)
+ end,
+})
diff --git a/technic/technic/machines/other/coal_alloy_furnace.lua b/technic/technic/machines/other/coal_alloy_furnace.lua
new file mode 100644
index 0000000..58af679
--- /dev/null
+++ b/technic/technic/machines/other/coal_alloy_furnace.lua
@@ -0,0 +1,177 @@
+
+-- Fuel driven alloy furnace. This uses no EUs:
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = 'technic:coal_alloy_furnace',
+ recipe = {
+ {'default:brick', 'default:brick', 'default:brick'},
+ {'default:brick', '', 'default:brick'},
+ {'default:brick', 'default:brick', 'default:brick'},
+ }
+})
+
+local machine_name = S("Fuel-Fired Alloy Furnace")
+local formspec =
+ "size[8,9]"..
+ "label[0,0;"..machine_name.."]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;2,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[current_name;dst]"..
+ "listring[current_player;main]"..
+ "listring[current_name;src]"..
+ "listring[current_player;main]"..
+ "listring[current_name;fuel]"..
+ "listring[current_player;main]"
+
+minetest.register_node("technic:coal_alloy_furnace", {
+ description = machine_name,
+ tiles = {"technic_coal_alloy_furnace_top.png", "technic_coal_alloy_furnace_bottom.png",
+ "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png",
+ "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", formspec)
+ meta:set_string("infotext", machine_name)
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 2)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+})
+
+minetest.register_node("technic:coal_alloy_furnace_active", {
+ description = machine_name,
+ tiles = {"technic_coal_alloy_furnace_top.png", "technic_coal_alloy_furnace_bottom.png",
+ "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png",
+ "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front_active.png"},
+ paramtype2 = "facedir",
+ light_source = 8,
+ drop = "technic:coal_alloy_furnace",
+ groups = {cracky=2, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+})
+
+minetest.register_abm({
+ nodenames = {"technic:coal_alloy_furnace", "technic:coal_alloy_furnace_active"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+
+ if inv:get_size("src") == 1 then -- Old furnace -> convert it
+ inv:set_size("src", 2)
+ inv:set_stack("src", 2, inv:get_stack("src2", 1))
+ inv:set_size("src2", 0)
+ end
+
+ local recipe = nil
+
+ for i, name in pairs({
+ "fuel_totaltime",
+ "fuel_time",
+ "src_totaltime",
+ "src_time"}) do
+ if not meta:get_float(name) then
+ meta:set_float(name, 0.0)
+ end
+ end
+
+ -- Get what to cook if anything
+ local result = technic.get_recipe("alloy", inv:get_list("src"))
+
+ local was_active = false
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ was_active = true
+ meta:set_int("fuel_time", meta:get_int("fuel_time") + 1)
+ if result then
+ meta:set_int("src_time", meta:get_int("src_time") + 1)
+ if meta:get_int("src_time") >= result.time then
+ meta:set_int("src_time", 0)
+ local result_stack = ItemStack(result.output)
+ if inv:room_for_item("dst", result_stack) then
+ inv:set_list("src", result.new_input)
+ inv:add_item("dst", result_stack)
+ end
+ end
+ else
+ meta:set_int("src_time", 0)
+ end
+ end
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ local percent = math.floor(meta:get_float("fuel_time") /
+ meta:get_float("fuel_totaltime") * 100)
+ meta:set_string("infotext", S("%s Active"):format(machine_name).." ("..percent.."%)")
+ technic.swap_node(pos, "technic:coal_alloy_furnace_active")
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "label[0,0;"..machine_name.."]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
+ (100 - percent)..":default_furnace_fire_fg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;2,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[current_name;dst]"..
+ "listring[current_player;main]"..
+ "listring[current_name;src]"..
+ "listring[current_player;main]"..
+ "listring[current_name;fuel]"..
+ "listring[current_player;main]")
+ return
+ end
+
+ local recipe = technic.get_recipe("alloy", inv:get_list("src"))
+
+ if not recipe then
+ if was_active then
+ meta:set_string("infotext", S("%s is empty"):format(machine_name))
+ technic.swap_node(pos, "technic:coal_alloy_furnace")
+ meta:set_string("formspec", formspec)
+ end
+ return
+ end
+
+ -- Next take a hard look at the fuel situation
+ local fuel = nil
+ local afterfuel
+ local fuellist = inv:get_list("fuel")
+
+ if fuellist then
+ fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
+ end
+
+ if fuel.time <= 0 then
+ meta:set_string("infotext", S("%s Out Of Fuel"):format(machine_name))
+ technic.swap_node(pos, "technic:coal_alloy_furnace")
+ meta:set_string("formspec", formspec)
+ return
+ end
+
+ meta:set_string("fuel_totaltime", fuel.time)
+ meta:set_string("fuel_time", 0)
+
+ inv:set_stack("fuel", 1, afterfuel.items[1])
+ end,
+})
+
diff --git a/technic/technic/machines/other/coal_furnace.lua b/technic/technic/machines/other/coal_furnace.lua
new file mode 100644
index 0000000..53a0f8b
--- /dev/null
+++ b/technic/technic/machines/other/coal_furnace.lua
@@ -0,0 +1,5 @@
+local S = technic.getter
+
+if minetest.registered_nodes["default:furnace"].description == "Furnace" then
+ minetest.override_item("default:furnace", { description = S("Fuel-Fired Furnace") })
+end
diff --git a/technic/technic/machines/other/constructor.lua b/technic/technic/machines/other/constructor.lua
new file mode 100644
index 0000000..3396ac7
--- /dev/null
+++ b/technic/technic/machines/other/constructor.lua
@@ -0,0 +1,189 @@
+
+local S = technic.getter
+
+local function deploy_node(inv, slot_name, pos, node, machine_node)
+ if node.name ~= "air" then
+ if node.name == "ignore" or
+ node.name == "default:lava_source" or
+ node.name == "default:lava_flowing" or
+ node.name == "default:water_source" or
+ node.name == "default:water_flowing" then
+ return
+ end
+ local drops = minetest.get_node_drops(node.name, "")
+ local remove_to = false
+ for i, item in ipairs(drops) do
+ if not inv:room_for_item(slot_name, item) then
+ remove_to = i - 1
+ break
+ end
+ inv:add_item(slot_name, item)
+ end
+ if remove_to then
+ for i = 1, remove_to do
+ inv:remove_item(drops[i])
+ end
+ else
+ minetest.remove_node(pos)
+ end
+ return
+ end
+ if not inv:is_empty(slot_name) then
+ local stack = inv:get_list(slot_name)[1]
+ local def = stack:get_definition()
+ if def.type == "node" then
+ minetest.set_node(pos, {
+ name = stack:get_name(),
+ param2 = machine_node.param2
+ })
+ stack:take_item()
+ inv:set_stack(slot_name, 1, stack)
+ elseif def.type == "craft" then
+ if def.on_place then
+ -- Use pcall to avoid nil placer errors.
+ -- TODO: Do without pcall.
+ local ok, stk = pcall(def.on_place, stack, nil, {
+ -- Fake pointed_thing
+ type = "node",
+ above = pos,
+ under = {x=pos.x, y=pos.y-1, z=pos.z},
+ })
+ if ok then
+ inv:set_stack(slot_name, 1, stk or stack)
+ return
+ end
+ end
+ minetest.item_place_object(stack, nil, {
+ -- Fake pointed_thing
+ type = "node",
+ above = pos,
+ under = pos,
+ })
+ inv:set_stack(slot_name, 1, nil)
+ end
+ end
+end
+
+minetest.register_craft({
+ type = "shapeless",
+ output = 'technic:constructor_mk1_off 1',
+ recipe = {'technic:nodebreaker_off', 'technic:deployer_off'},
+
+})
+minetest.register_craft({
+ type = "shapeless",
+ output = 'technic:constructor_mk2_off 1',
+ recipe = {'technic:constructor_mk1_off', 'technic:constructor_mk1_off'},
+
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = 'technic:constructor_mk3_off 1',
+ recipe = {'technic:constructor_mk2_off', 'technic:constructor_mk2_off'},
+
+})
+
+local function make_on(mark, length)
+ return function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local dir = vector.new()
+ if node.param2 == 3 then dir.x = 1 end
+ if node.param2 == 2 then dir.z = 1 end
+ if node.param2 == 1 then dir.x = -1 end
+ if node.param2 == 0 then dir.z = -1 end
+
+ local place_pos = vector.new(pos)
+
+ if node.name == "technic:constructor_mk"..mark.."_off" then
+ technic.swap_node(pos, "technic:constructor_mk"..mark.."_on")
+ nodeupdate(pos)
+ for i = 1, length do
+ place_pos = vector.add(place_pos, dir)
+ local place_node = minetest.get_node(place_pos)
+ deploy_node(inv, "slot"..i, place_pos, place_node, node)
+ end
+ end
+ end
+end
+
+local function make_off(mark)
+ return function(pos, node)
+ if node.name == "technic:constructor_mk"..mark.."_on" then
+ technic.swap_node(pos,"technic:constructor_mk"..mark.."_off")
+ nodeupdate(pos)
+ end
+ end
+end
+
+
+local function make_constructor(mark, length)
+ minetest.register_node("technic:constructor_mk"..mark.."_off", {
+ description = S("Constructor Mk%d"):format(mark),
+ tiles = {"technic_constructor_mk"..mark.."_top_off.png",
+ "technic_constructor_mk"..mark.."_bottom_off.png",
+ "technic_constructor_mk"..mark.."_side2_off.png",
+ "technic_constructor_mk"..mark.."_side1_off.png",
+ "technic_constructor_back.png",
+ "technic_constructor_front_off.png"},
+ paramtype2 = "facedir",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, mesecon = 2},
+ mesecons = {effector = {action_on = make_on(mark, length)}},
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local formspec = "size[8,9;]"..
+ "label[0,0;"..S("Constructor Mk%d"):format(mark).."]"..
+ "list[current_player;main;0,5;8,4;]"
+ for i = 1, length do
+ formspec = formspec
+ .."label[5,"..(i - 1)..";"..S("Slot %d"):format(i).."]"
+ .."list[current_name;slot"..i
+ ..";6,"..(i - 1)..";1,1;]"
+ end
+ meta:set_string("formspec", formspec)
+ meta:set_string("infotext", S("Constructor Mk%d"):format(mark))
+ local inv = meta:get_inventory()
+ for i = 1, length do
+ inv:set_size("slot"..i, 1)
+ end
+ end,
+ can_dig = function(pos, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ for i = 1, length do
+ if not inv:is_empty("slot"..i) then
+ return false
+ end
+ end
+ return true
+ end,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ })
+
+ minetest.register_node("technic:constructor_mk"..mark.."_on", {
+ tiles = {"technic_constructor_mk"..mark.."_top_on.png",
+ "technic_constructor_mk"..mark.."_bottom_on.png",
+ "technic_constructor_mk"..mark.."_side2_on.png",
+ "technic_constructor_mk"..mark.."_side1_on.png",
+ "technic_constructor_back.png",
+ "technic_constructor_front_on.png"},
+ paramtype2 = "facedir",
+ drop = "technic:constructor_mk"..mark.."_off",
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
+ mesecon=2, not_in_creative_inventory=1},
+ mesecons= {effector = {action_off = make_off(mark)}},
+ sounds = default.node_sound_stone_defaults(),
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ })
+end
+
+make_constructor(1, 1)
+make_constructor(2, 2)
+make_constructor(3, 4)
+
diff --git a/technic/technic/machines/other/frames.lua b/technic/technic/machines/other/frames.lua
new file mode 100644
index 0000000..b3f39b9
--- /dev/null
+++ b/technic/technic/machines/other/frames.lua
@@ -0,0 +1,928 @@
+
+local S = technic.getter
+
+frames = {}
+
+local infinite_stacks = minetest.setting_getbool("creative_mode") and minetest.get_modpath("unified_inventory") == nil
+
+local frames_pos = {}
+
+-- Helpers
+
+local function get_face(pos,ppos,pvect)
+ -- Raytracer to get which face has been clicked
+ ppos={x=ppos.x-pos.x,y=ppos.y-pos.y+1.5,z=ppos.z-pos.z}
+ if pvect.x>0 then
+ local t=(-0.5-ppos.x)/pvect.x
+ local y_int=ppos.y+t*pvect.y
+ local z_int=ppos.z+t*pvect.z
+ if y_int>-0.45 and y_int<0.45 and z_int>-0.45 and z_int<0.45 then return 1 end
+ elseif pvect.x<0 then
+ local t=(0.5-ppos.x)/pvect.x
+ local y_int=ppos.y+t*pvect.y
+ local z_int=ppos.z+t*pvect.z
+ if y_int>-0.45 and y_int<0.45 and z_int>-0.45 and z_int<0.45 then return 2 end
+ end
+ if pvect.y>0 then
+ local t=(-0.5-ppos.y)/pvect.y
+ local x_int=ppos.x+t*pvect.x
+ local z_int=ppos.z+t*pvect.z
+ if x_int>-0.45 and x_int<0.45 and z_int>-0.45 and z_int<0.45 then return 3 end
+ elseif pvect.y<0 then
+ local t=(0.5-ppos.y)/pvect.y
+ local x_int=ppos.x+t*pvect.x
+ local z_int=ppos.z+t*pvect.z
+ if x_int>-0.45 and x_int<0.45 and z_int>-0.45 and z_int<0.45 then return 4 end
+ end
+ if pvect.z>0 then
+ local t=(-0.5-ppos.z)/pvect.z
+ local x_int=ppos.x+t*pvect.x
+ local y_int=ppos.y+t*pvect.y
+ if x_int>-0.45 and x_int<0.45 and y_int>-0.45 and y_int<0.45 then return 5 end
+ elseif pvect.z<0 then
+ local t=(0.5-ppos.z)/pvect.z
+ local x_int=ppos.x+t*pvect.x
+ local y_int=ppos.y+t*pvect.y
+ if x_int>-0.45 and x_int<0.45 and y_int>-0.45 and y_int<0.45 then return 6 end
+ end
+end
+
+local function lines(str)
+ local t = {}
+ local function helper(line) table.insert(t, line) return "" end
+ helper((str:gsub("(.-)\r?\n", helper)))
+ return t
+end
+
+local function pos_to_string(pos)
+ if pos.x == 0 then pos.x = 0 end -- Fix for signed 0
+ if pos.y == 0 then pos.y = 0 end -- Fix for signed 0
+ if pos.z == 0 then pos.z = 0 end -- Fix for signed 0
+ return tostring(pos.x).."\n"..tostring(pos.y).."\n"..tostring(pos.z)
+end
+
+local function pos_from_string(str)
+ local l = lines(str)
+ return {x = tonumber(l[1]), y = tonumber(l[2]), z = tonumber(l[3])}
+end
+
+local function pos_in_list(l,pos)
+ for _,p in ipairs(l) do
+ if p.x==pos.x and p.y==pos.y and p.z==pos.z then return true end
+ end
+ return false
+end
+
+local function table_empty(table)
+ for _, __ in pairs(table) do
+ return false
+ end
+ return true
+end
+
+local function add_table(table,toadd)
+ local i = 1
+ while true do
+ o = table[i]
+ if o == toadd then return end
+ if o == nil then break end
+ i = i+1
+ end
+ table[i] = toadd
+end
+
+local function move_nodes_vect(poslist,vect,must_not_move,owner)
+ if minetest.is_protected then
+ for _,pos in ipairs(poslist) do
+ local npos=vector.add(pos,vect)
+ if minetest.is_protected(pos, owner) or minetest.is_protected(npos, owner) then
+ return
+ end
+ end
+ end
+ for _,pos in ipairs(poslist) do
+ local npos=vector.add(pos,vect)
+ local name = minetest.get_node(npos).name
+ if ((name~="air" and minetest.registered_nodes[name].liquidtype=="none") or frames_pos[pos_to_string(npos)]) and not(pos_in_list(poslist,npos)) then
+ return
+ end
+ --[[if pos.x==must_not_move.x and pos.y==must_not_move.y and pos.z==must_not_move.z then
+ return
+ end]]
+ end
+ local nodelist = {}
+ for _, pos in ipairs(poslist) do
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos):to_table()
+ nodelist[#(nodelist)+1] = {oldpos = pos, pos = vector.add(pos, vect), node = node, meta = meta}
+ end
+ local objects = {}
+ for _, pos in ipairs(poslist) do
+ for _,object in ipairs(minetest.get_objects_inside_radius(pos, 1)) do
+ local entity = object:get_luaentity()
+ if not entity or not mesecon.is_mvps_unmov(entity.name) then
+ add_table(objects, object)
+ end
+ end
+ end
+ for _, obj in ipairs(objects) do
+ obj:setpos(vector.add(obj:getpos(), vect))
+ end
+ for _,n in ipairs(nodelist) do
+ local npos = n.pos
+ minetest.set_node(npos, n.node)
+ local meta = minetest.get_meta(npos)
+ meta:from_table(n.meta)
+ for __,pos in ipairs(poslist) do
+ if npos.x == pos.x and npos.y == pos.y and npos.z == pos.z then
+ table.remove(poslist, __)
+ break
+ end
+ end
+ end
+ for __, pos in ipairs(poslist) do
+ minetest.remove_node(pos)
+ end
+ for _, callback in ipairs(mesecon.on_mvps_move) do
+ callback(nodelist)
+ end
+end
+
+local function is_supported_node(name)
+ return ((string.find(name, "tube") ~= nil) and (string.find(name, "pipeworks") ~= nil))
+end
+
+
+-- Frames
+for xm=0,1 do
+for xp=0,1 do
+for ym=0,1 do
+for yp=0,1 do
+for zm=0,1 do
+for zp=0,1 do
+
+local a=8/16
+local b=7/16
+local nodeboxes= {
+ { -a, -a, -a, -b, a, -b },
+ { -a, -a, b, -b, a, a },
+ { b, -a, b, a, a, a },
+ { b, -a, -a, a, a, -b },
+
+ { -b, b, -a, b, a, -b },
+ { -b, -a, -a, b, -b, -b },
+
+ { -b, b, b, b, a, a },
+ { -b, -a, b, b, -b, a },
+
+ { b, b, -b, a, a, b },
+ { b, -a, -b, a, -b, b },
+
+ { -a, b, -b, -b, a, b },
+ { -a, -a, -b, -b, -b, b },
+ }
+
+ if yp==0 then
+ table.insert(nodeboxes, {-b,b,-b, b,a,b})
+ end
+ if ym==0 then
+ table.insert(nodeboxes, {-b,-a,-b, b,-b,b})
+ end
+ if xp==0 then
+ table.insert(nodeboxes, {b,b,b,a,-b,-b})
+ end
+ if xm==0 then
+ table.insert(nodeboxes, {-a,-b,-b,-b,b,b})
+ end
+ if zp==0 then
+ table.insert(nodeboxes, {-b,-b,b, b,b,a})
+ end
+ if zm==0 then
+ table.insert(nodeboxes, {-b,-b,-a, b,b,-b})
+ end
+
+ local nameext=tostring(xm)..tostring(xp)..tostring(ym)..tostring(yp)..tostring(zm)..tostring(zp)
+ local groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}
+ if nameext~="111111" then groups.not_in_creative_inventory=1 end
+
+
+ minetest.register_node("technic:frame_"..nameext,{
+ description = S("Frame"),
+ tiles = {"technic_frame.png"},
+ groups=groups,
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed=nodeboxes,
+ },
+ selection_box = {
+ type="fixed",
+ fixed={-0.5,-0.5,-0.5,0.5,0.5,0.5}
+ },
+ paramtype = "light",
+ frame=1,
+ drop="technic:frame_111111",
+ sunlight_propagates = true,
+ frame_connect_all=function(nodename)
+ l2={}
+ l1={{x=-1,y=0,z=0},{x=1,y=0,z=0},{x=0,y=-1,z=0},{x=0,y=1,z=0},{x=0,y=0,z=-1},{x=0,y=0,z=1}}
+ for i,dir in ipairs(l1) do
+ if string.sub(nodename,-7+i,-7+i)=="1" then
+ l2[#(l2)+1]=dir
+ end
+ end
+ return l2
+ end,
+ on_punch=function(pos,node,puncher)
+ local ppos=puncher:getpos()
+ local pvect=puncher:get_look_dir()
+ local pface=get_face(pos,ppos,pvect)
+ if pface==nil then return end
+ local nodename=node.name
+ local newstate=tostring(1-tonumber(string.sub(nodename,-7+pface,-7+pface)))
+ if pface<=5 then
+ nodename=string.sub(nodename,1,-7+pface-1)..newstate..string.sub(nodename,-7+pface+1)
+ else
+ nodename=string.sub(nodename,1,-2)..newstate
+ end
+ node.name=nodename
+ minetest.set_node(pos,node)
+ end,
+ on_place = function(itemstack, placer, pointed_thing)
+ local pos = pointed_thing.above
+ if minetest.is_protected(pos, placer:get_player_name()) then
+ minetest.log("action", placer:get_player_name()
+ .. " tried to place " .. itemstack:get_name()
+ .. " at protected position "
+ .. minetest.pos_to_string(pos))
+ minetest.record_protection_violation(pos, placer:get_player_name())
+ return itemstack
+ end
+ if pos == nil then return end
+ local node = minetest.get_node(pos)
+ if node.name ~= "air" then
+ if is_supported_node(node.name) then
+ obj = minetest.add_entity(pos, "technic:frame_entity")
+ obj:get_luaentity():set_node({name=itemstack:get_name()})
+ end
+ else
+ minetest.set_node(pos, {name = itemstack:get_name()})
+ end
+ if not infinite_stacks then
+ itemstack:take_item()
+ end
+ return itemstack
+ end,
+ on_rightclick = function(pos, node, placer, itemstack, pointed_thing)
+ if is_supported_node(itemstack:get_name()) then
+ if minetest.is_protected(pos, placer:get_player_name()) then
+ minetest.log("action", placer:get_player_name()
+ .. " tried to place " .. itemstack:get_name()
+ .. " at protected position "
+ .. minetest.pos_to_string(pos))
+ minetest.record_protection_violation(pos, placer:get_player_name())
+ return itemstack
+ end
+
+ minetest.set_node(pos, {name = itemstack:get_name()})
+
+ local take_item = true
+ local def = minetest.registered_items[itemstack:get_name()]
+ -- Run callback
+ if def.after_place_node then
+ -- Copy place_to because callback can modify it
+ local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
+ if def.after_place_node(pos_copy, placer, itemstack) then
+ take_item = false
+ end
+ end
+
+ -- Run script hook
+ local _, callback
+ for _, callback in ipairs(minetest.registered_on_placenodes) do
+ -- Copy pos and node because callback can modify them
+ local pos_copy = {x=pos.x, y=pos.y, z=pos.z}
+ local newnode_copy = {name=def.name, param1=0, param2=0}
+ local oldnode_copy = {name="air", param1=0, param2=0}
+ if callback(pos_copy, newnode_copy, placer, oldnode_copy, itemstack) then
+ take_item = false
+ end
+ end
+
+ if take_item then
+ itemstack:take_item()
+ end
+
+ obj = minetest.add_entity(pos, "technic:frame_entity")
+ obj:get_luaentity():set_node({name=node.name})
+
+ return itemstack
+ else
+ --local pointed_thing = {type = "node", under = pos}
+ if pointed_thing then
+ minetest.item_place_node(itemstack, placer, pointed_thing)
+ end
+ end
+ end,
+ })
+
+end
+end
+end
+end
+end
+end
+
+minetest.register_entity("technic:frame_entity", {
+ initial_properties = {
+ physical = true,
+ collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5},
+ visual = "wielditem",
+ textures = {},
+ visual_size = {x=0.667, y=0.667},
+ },
+
+ node = {},
+
+ set_node = function(self, node)
+ self.node = node
+ local pos = self.object:getpos()
+ pos = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)}
+ frames_pos[pos_to_string(pos)] = node.name
+ local stack = ItemStack(node.name)
+ local itemtable = stack:to_table()
+ local itemname = nil
+ if itemtable then
+ itemname = stack:to_table().name
+ end
+ local item_texture = nil
+ local item_type = ""
+ if minetest.registered_items[itemname] then
+ item_texture = minetest.registered_items[itemname].inventory_image
+ item_type = minetest.registered_items[itemname].type
+ end
+ prop = {
+ is_visible = true,
+ textures = {node.name},
+ }
+ self.object:set_properties(prop)
+ end,
+
+ get_staticdata = function(self)
+ return self.node.name
+ end,
+
+ on_activate = function(self, staticdata)
+ self.object:set_armor_groups({immortal=1})
+ self:set_node({name=staticdata})
+ end,
+
+ dig = function(self)
+ minetest.handle_node_drops(self.object:getpos(), {ItemStack("technic:frame_111111")}, self.last_puncher)
+ local pos = self.object:getpos()
+ pos = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)}
+ frames_pos[pos_to_string(pos)] = nil
+ self.object:remove()
+ end,
+
+ on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
+ local pos = self.object:getpos()
+ if self.damage_object == nil then
+ self.damage_object = minetest.add_entity(pos, "technic:damage_entity")
+ self.damage_object:get_luaentity().remaining_time = 0.25
+ self.damage_object:get_luaentity().frame_object = self
+ self.damage_object:get_luaentity().texture_index = 0
+ self.damage_object:get_luaentity().texture_change_time = 0.15
+ else
+ self.damage_object:get_luaentity().remaining_time = 0.25
+ end
+ self.last_puncher = puncher
+ local ppos = puncher:getpos()
+ local pvect = puncher:get_look_dir()
+ local pface = get_face(pos,ppos,pvect)
+ if pface == nil then return end
+ local nodename = self.node.name
+ local newstate = tostring(1-tonumber(string.sub(nodename, -7+pface, -7+pface)))
+ if pface <= 5 then
+ nodename = string.sub(nodename, 1, -7+pface-1)..newstate..string.sub(nodename, -7+pface+1)
+ else
+ nodename = string.sub(nodename, 1, -2)..newstate
+ end
+ self.node.name = nodename
+ self:set_node(self.node)
+ end,
+
+ on_rightclick = function(self, clicker)
+ local pos = self.object:getpos()
+ local ppos = clicker:getpos()
+ local pvect = clicker:get_look_dir()
+ local pface = get_face(pos, ppos, pvect)
+ if pface == nil then return end
+ local pos_under = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)}
+ local pos_above = {x = pos_under.x, y = pos_under.y, z = pos_under.z}
+ local index = ({"x", "y", "z"})[math.floor((pface+1)/2)]
+ pos_above[index] = pos_above[index] + 2*((pface+1)%2) - 1
+ local pointed_thing = {type = "node", under = pos_under, above = pos_above}
+ local itemstack = clicker:get_wielded_item()
+ local itemdef = minetest.registered_items[itemstack:get_name()]
+ if itemdef ~= nil then
+ itemdef.on_place(itemstack, clicker, pointed_thing)
+ end
+ end,
+})
+
+local crack = "crack_anylength.png^[verticalframe:5:0"
+minetest.register_entity("technic:damage_entity", {
+ initial_properties = {
+ visual = "cube",
+ visual_size = {x=1.01, y=1.01},
+ textures = {crack, crack, crack, crack, crack, crack},
+ collisionbox = {0, 0, 0, 0, 0, 0},
+ physical = false,
+ },
+ on_step = function(self, dtime)
+ if self.remaining_time == nil then
+ self.object:remove()
+ self.frame_object.damage_object = nil
+ end
+ self.remaining_time = self.remaining_time - dtime
+ if self.remaining_time < 0 then
+ self.object:remove()
+ self.frame_object.damage_object = nil
+ end
+ self.texture_change_time = self.texture_change_time - dtime
+ if self.texture_change_time < 0 then
+ self.texture_change_time = self.texture_change_time + 0.15
+ self.texture_index = self.texture_index + 1
+ if self.texture_index == 5 then
+ self.object:remove()
+ self.frame_object.damage_object = nil
+ self.frame_object:dig()
+ end
+ local ct = "crack_anylength.png^[verticalframe:5:"..self.texture_index
+ self.object:set_properties({textures = {ct, ct, ct, ct, ct, ct}})
+ end
+ end,
+})
+
+mesecon.register_mvps_unmov("technic:frame_entity")
+mesecon.register_mvps_unmov("technic:damage_entity")
+mesecon.register_on_mvps_move(function(moved_nodes)
+ local to_move = {}
+ for _, n in ipairs(moved_nodes) do
+ if frames_pos[pos_to_string(n.oldpos)] ~= nil then
+ to_move[#to_move+1] = {pos = n.pos, oldpos = n.oldpos, name = frames_pos[pos_to_string(n.oldpos)]}
+ frames_pos[pos_to_string(n.oldpos)] = nil
+ end
+ end
+ if #to_move > 0 then
+ for _, t in ipairs(to_move) do
+ frames_pos[pos_to_string(t.pos)] = t.name
+ local objects = minetest.get_objects_inside_radius(t.oldpos, 0.1)
+ for _, obj in ipairs(objects) do
+ local entity = obj:get_luaentity()
+ if entity and (entity.name == "technic:frame_entity" or entity.name == "technic:damage_entity") then
+ obj:setpos(t.pos)
+ end
+ end
+ end
+ end
+end)
+
+minetest.register_on_dignode(function(pos, node)
+ if frames_pos[pos_to_string(pos)] ~= nil then
+ minetest.set_node(pos, {name = frames_pos[pos_to_string(pos)]})
+ frames_pos[pos_to_string(pos)] = nil
+ local objects = minetest.get_objects_inside_radius(pos, 0.1)
+ for _, obj in ipairs(objects) do
+ local entity = obj:get_luaentity()
+ if entity and (entity.name == "technic:frame_entity" or entity.name == "technic:damage_entity") then
+ obj:remove()
+ end
+ end
+ end
+end)
+
+-- Frame motor
+local function connected(pos,c,adj)
+ for _,vect in ipairs(adj) do
+ local pos1=vector.add(pos,vect)
+ local nodename=minetest.get_node(pos1).name
+ if frames_pos[pos_to_string(pos1)] then
+ nodename = frames_pos[pos_to_string(pos1)]
+ end
+ if not(pos_in_list(c,pos1)) and nodename~="air" and
+ (minetest.registered_nodes[nodename].frames_can_connect==nil or
+ minetest.registered_nodes[nodename].frames_can_connect(pos1,vect)) then
+ c[#(c)+1]=pos1
+ if minetest.registered_nodes[nodename].frame==1 then
+ local adj=minetest.registered_nodes[nodename].frame_connect_all(nodename)
+ connected(pos1,c,adj)
+ end
+ end
+ end
+end
+
+local function get_connected_nodes(pos)
+ c={pos}
+ local nodename=minetest.get_node(pos).name
+ if frames_pos[pos_to_string(pos)] then
+ nodename = frames_pos[pos_to_string(pos)]
+ end
+ connected(pos,c,minetest.registered_nodes[nodename].frame_connect_all(nodename))
+ return c
+end
+
+local function frame_motor_on(pos, node)
+ local dirs = {{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}}
+ local nnodepos = vector.add(pos, dirs[math.floor(node.param2/4)+1])
+ local dir = minetest.facedir_to_dir(node.param2)
+ local nnode=minetest.get_node(nnodepos)
+ if frames_pos[pos_to_string(nnodepos)] then
+ nnode.name = frames_pos[pos_to_string(nnodepos)]
+ end
+ local meta = minetest.get_meta(pos)
+ if meta:get_int("last_moved") == minetest.get_gametime() then
+ return
+ end
+ local owner = meta:get_string("owner")
+ if minetest.registered_nodes[nnode.name].frame==1 then
+ local connected_nodes=get_connected_nodes(nnodepos)
+ move_nodes_vect(connected_nodes,dir,pos,owner)
+ end
+ minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime())
+end
+
+minetest.register_node("technic:frame_motor",{
+ description = S("Frame Motor"),
+ tiles = {"pipeworks_filter_top.png^[transformR90", "technic_lv_cable.png", "technic_lv_cable.png",
+ "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"},
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
+ paramtype2 = "facedir",
+ mesecons={effector={action_on=frame_motor_on}},
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name())
+ end,
+ frames_can_connect=function(pos,dir)
+ local node = minetest.get_node(pos)
+ local dir2 = ({{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}})[math.floor(node.param2/4)+1]
+ return dir2.x~=-dir.x or dir2.y~=-dir.y or dir2.z~=-dir.z
+ end
+})
+
+
+
+-- Templates
+local function template_connected(pos,c,connectors)
+ for _,vect in ipairs({{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}}) do
+ local pos1=vector.add(pos,vect)
+ local nodename=minetest.get_node(pos1).name
+ if not(pos_in_list(c,pos1)) and (nodename=="technic:template" or nodename == "technic:template_connector")then
+ local meta = minetest.get_meta(pos1)
+ if meta:get_string("connected") == "" then
+ c[#(c)+1]=pos1
+ template_connected(pos1,c,connectors)
+ if nodename == "technic:template_connector" then
+ connectors[#connectors+1] = pos1
+ end
+ end
+ end
+ end
+end
+
+local function get_templates(pos)
+ local c = {pos}
+ local connectors
+ if minetest.get_node(pos).name == "technic:template_connector" then
+ connectors = {pos}
+ else
+ connectors = {}
+ end
+ template_connected(pos,c,connectors)
+ return c, connectors
+end
+
+local function swap_template(pos, new)
+ local meta = minetest.get_meta(pos)
+ local saved_node = meta:get_string("saved_node")
+ meta:set_string("saved_node", "")
+ technic.swap_node(pos, new)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("saved_node", saved_node)
+end
+
+local function save_node(pos)
+ local node = minetest.get_node(pos)
+ if node.name == "air" then
+ minetest.set_node(pos, {name="technic:template"})
+ return
+ end
+ if node.name == "technic:template" then
+ swap_template(pos, "technic:template_connector")
+ local meta = minetest.get_meta(pos)
+ meta:set_string("connected", "")
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ local meta0 = meta:to_table()
+ for _, list in pairs(meta0.inventory) do
+ for key, stack in pairs(list) do
+ list[key] = stack:to_string()
+ end
+ end
+ node.meta = meta0
+ minetest.set_node(pos, {name="technic:template"})
+ return node
+end
+
+local function restore_node(pos, node)
+ minetest.set_node(pos, node)
+ local meta = minetest.get_meta(pos)
+ for _, list in pairs(node.meta.inventory) do
+ for key, stack in pairs(list) do
+ list[key] = ItemStack(stack)
+ end
+ end
+ meta:from_table(node.meta)
+end
+
+local function expand_template(pos)
+ local meta = minetest.get_meta(pos)
+ local c = meta:get_string("connected")
+ if c == "" then return end
+ c = minetest.deserialize(c)
+ for _, vect in ipairs(c) do
+ local pos1 = vector.add(pos, vect)
+ local saved_node = save_node(pos1)
+ local meta1 = minetest.get_meta(pos1)
+ if saved_node ~= nil then
+ meta1:set_string("saved_node", minetest.serialize(saved_node))
+ else
+ --meta1:set_string("saved_node", "")
+ end
+ end
+end
+
+local function compress_templates(pos)
+ local templates, connectors = get_templates(pos)
+ if #connectors == 0 then
+ connectors = {pos}
+ end
+ for _, cn in ipairs(connectors) do
+ local meta = minetest.get_meta(cn)
+ local c = {}
+ for _,p in ipairs(templates) do
+ local np = vector.subtract(p, cn)
+ if not pos_in_list(c,np) then
+ c[#c+1] = np
+ end
+ end
+ local cc = {}
+ for _,p in ipairs(connectors) do
+ local np = vector.subtract(p, cn)
+ if (np.x ~= 0 or np.y ~= 0 or np.z ~= 0) then
+ cc[pos_to_string(np)] = true
+ end
+ end
+ swap_template(cn, "technic:template")
+ meta:set_string("connected", minetest.serialize(c))
+ meta:set_string("connectors_connected", minetest.serialize(cc))
+ end
+
+ for _,p in ipairs(templates) do
+ if not pos_in_list(connectors, p) then
+ minetest.set_node(p, {name = "air"})
+ end
+ end
+end
+
+local function template_drops(pos, node, oldmeta, digger)
+ local c = oldmeta.fields.connected
+ local cc = oldmeta.fields.connectors_connected
+ local drops
+ if c == "" or c == nil then
+ drops = {"technic:template 1"}
+ else
+ if cc == "" or cc == nil then
+ drops = {"technic:template 1"}
+ else
+ local dcc = minetest.deserialize(cc)
+ if not table_empty(dcc) then
+ drops = {}
+ for sp, _ in pairs(dcc) do
+ local ssp = pos_from_string(sp)
+ local p = vector.add(ssp, pos)
+ local meta = minetest.get_meta(p)
+ local d = minetest.deserialize(meta:get_string("connectors_connected"))
+ if d ~= nil then
+ d[pos_to_string({x=-ssp.x, y=-ssp.y, z=-ssp.z})] = nil
+ meta:set_string("connectors_connected", minetest.serialize(d))
+ end
+ end
+ else
+ local stack_max = 99
+ local num = #(minetest.deserialize(c))
+ drops = {}
+ while num > stack_max do
+ drops[#drops+1] = "technic:template "..stack_max
+ num = num - stack_max
+ end
+ drops[#drops+1] = "technic:template "..num
+ end
+ end
+ end
+ minetest.handle_node_drops(pos, drops, digger)
+end
+
+local function template_on_destruct(pos, node)
+ local meta = minetest.get_meta(pos)
+ local saved_node = meta:get_string("saved_node")
+ if saved_node ~= "" then
+ local nnode = minetest.deserialize(saved_node)
+ minetest.after(0, restore_node, pos, nnode)
+ end
+end
+
+minetest.register_node("technic:template",{
+ description = S("Template"),
+ tiles = {"technic_mv_cable.png"},
+ drop = "",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ on_destruct = template_on_destruct,
+ after_dig_node = template_drops,
+ on_punch = function(pos,node,puncher)
+ swap_template(pos, "technic:template_disabled")
+ end
+})
+
+minetest.register_node("technic:template_disabled",{
+ description = S("Template"),
+ tiles = {"technic_hv_cable.png"},
+ drop = "",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ on_destruct = template_on_destruct,
+ after_dig_node = template_drops,
+ on_punch = function(pos,node,puncher)
+ local meta = minetest.get_meta(pos)
+ swap_template(pos, "technic:template_connector")
+ end
+})
+
+minetest.register_node("technic:template_connector",{
+ description = S("Template"),
+ tiles = {"technic_lv_cable.png"},
+ drop = "",
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ on_destruct = template_on_destruct,
+ after_dig_node = template_drops,
+ on_punch = function(pos,node,puncher)
+ swap_template(pos, "technic:template")
+ end
+})
+
+minetest.register_craftitem("technic:template_replacer",{
+ description = S("Template (replacing)"),
+ inventory_image = "technic_template_replacer.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ local p = pointed_thing.under
+ if minetest.is_protected and minetest.is_protected(p, placer:get_player_name()) then
+ return nil
+ end
+ local node = minetest.get_node(p)
+ if node.name == "technic:template" then return end
+ local saved_node = save_node(p)
+ itemstack:take_item()
+ if saved_node ~= nil then
+ local meta = minetest.get_meta(p)
+ meta:set_string("saved_node", minetest.serialize(saved_node))
+ end
+ return itemstack
+ end
+})
+
+minetest.register_tool("technic:template_tool",{
+ description = S("Template Tool"),
+ inventory_image = "technic_template_tool.png",
+ on_use = function(itemstack, puncher, pointed_thing)
+ local pos = pointed_thing.under
+ if pos == nil or (minetest.is_protected and minetest.is_protected(pos, puncher:get_player_name())) then
+ return nil
+ end
+ local node = minetest.get_node(pos)
+ if node.name ~= "technic:template" and node.name ~= "technic:template_connector" then return end
+ local meta = minetest.get_meta(pos)
+ local c2 = meta:get_string("connected")
+ if c2 ~= "" then
+ expand_template(pos)
+ else
+ compress_templates(pos)
+ end
+
+ end
+})
+
+
+
+-- Template motor
+local function get_template_nodes(pos)
+ local meta = minetest.get_meta(pos)
+ local connected = meta:get_string("connected")
+ if connected == "" then return {} end
+ local adj = minetest.deserialize(connected)
+ local c = {}
+ for _,vect in ipairs(adj) do
+ local pos1=vector.add(pos,vect)
+ local nodename=minetest.get_node(pos1).name
+ if not(pos_in_list(c,pos1)) and nodename~="air" then
+ c[#(c)+1]=pos1
+ end
+ end
+ return c
+end
+
+local function template_motor_on(pos, node)
+ local dirs = {{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}}
+ local nnodepos = vector.add(pos, dirs[math.floor(node.param2/4)+1])
+ local dir = minetest.facedir_to_dir(node.param2)
+ local nnode=minetest.get_node(nnodepos)
+ local meta = minetest.get_meta(pos)
+ if meta:get_int("last_moved") == minetest.get_gametime() then
+ return
+ end
+ local owner = meta:get_string("owner")
+ if nnode.name == "technic:template" then
+ local connected_nodes=get_template_nodes(nnodepos)
+ move_nodes_vect(connected_nodes,dir,pos,owner)
+ end
+ minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime())
+end
+
+minetest.register_node("technic:template_motor",{
+ description = S("Template Motor"),
+ tiles = {"pipeworks_filter_top.png^[transformR90", "technic_lv_cable.png", "technic_lv_cable.png",
+ "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"},
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2},
+ paramtype2 = "facedir",
+ mesecons={effector={action_on=template_motor_on}},
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name())
+ end,
+})
+
+-- Crafts
+minetest.register_craft({
+ output = 'technic:frame_111111',
+ recipe = {
+ {'', 'default:stick', ''},
+ {'default:stick', 'technic:brass_ingot', 'default:stick'},
+ {'', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:frame_motor',
+ recipe = {
+ {'', 'technic:frame_111111', ''},
+ {'group:mesecon_conductor_craftable', 'technic:motor', 'group:mesecon_conductor_craftable'},
+ {'', 'technic:frame_111111', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:template 10',
+ recipe = {
+ {'', 'technic:brass_ingot', ''},
+ {'technic:brass_ingot', 'default:mese_crystal', 'technic:brass_ingot'},
+ {'', 'technic:brass_ingot', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:template_replacer',
+ recipe = {{'technic:template'}}
+})
+
+minetest.register_craft({
+ output = 'technic:template',
+ recipe = {{'technic:template_replacer'}}
+})
+
+minetest.register_craft({
+ output = 'technic:template_motor',
+ recipe = {
+ {'', 'technic:template', ''},
+ {'group:mesecon_conductor_craftable', 'technic:motor', 'group:mesecon_conductor_craftable'},
+ {'', 'technic:template', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:template_tool',
+ recipe = {
+ {'', 'technic:template', ''},
+ {'default:mese_crystal', 'default:stick', 'default:mese_crystal'},
+ {'', 'default:stick', ''},
+ }
+})
diff --git a/technic/technic/machines/other/init.lua b/technic/technic/machines/other/init.lua
new file mode 100644
index 0000000..f4a82f0
--- /dev/null
+++ b/technic/technic/machines/other/init.lua
@@ -0,0 +1,15 @@
+local path = technic.modpath.."/machines/other"
+
+-- mesecons and tubes related
+dofile(path.."/injector.lua")
+dofile(path.."/constructor.lua")
+
+if technic.config:get_bool("enable_frames") and minetest.get_modpath("mesecons_mvps") ~= nil then
+ dofile(path.."/frames.lua")
+end
+
+-- Coal-powered machines
+dofile(path.."/coal_alloy_furnace.lua")
+dofile(path.."/coal_furnace.lua")
+
+dofile(path.."/anchor.lua")
diff --git a/technic/technic/machines/other/injector.lua b/technic/technic/machines/other/injector.lua
new file mode 100644
index 0000000..ec8966c
--- /dev/null
+++ b/technic/technic/machines/other/injector.lua
@@ -0,0 +1,118 @@
+
+local S = technic.getter
+
+local function inject_items (pos)
+ local meta=minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local mode=meta:get_string("mode")
+ if mode=="single items" then
+ local i=0
+ for _,stack in ipairs(inv:get_list("main")) do
+ i=i+1
+ if stack then
+ local item0=stack:to_table()
+ if item0 then
+ item0["count"] = "1"
+ technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0)
+ stack:take_item(1)
+ inv:set_stack("main", i, stack)
+ return
+ end
+ end
+ end
+ end
+ if mode=="whole stacks" then
+ local i=0
+ for _,stack in ipairs(inv:get_list("main")) do
+ i=i+1
+ if stack then
+ local item0=stack:to_table()
+ if item0 then
+ technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0)
+ stack:clear()
+ inv:set_stack("main", i, stack)
+ return
+ end
+ end
+ end
+ end
+
+end
+
+minetest.register_craft({
+ output = 'technic:injector 1',
+ recipe = {
+ {'', 'technic:control_logic_unit',''},
+ {'', 'default:chest',''},
+ {'', 'pipeworks:tube_1',''},
+ }
+})
+
+local function set_injector_formspec(meta)
+ local is_stack = meta:get_string("mode") == "whole stacks"
+ meta:set_string("formspec",
+ "invsize[8,9;]"..
+ "item_image[0,0;1,1;technic:injector]"..
+ "label[1,0;"..S("Self-Contained Injector").."]"..
+ (is_stack and
+ "button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
+ "button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
+ "list[current_name;main;0,2;8,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]")
+end
+
+minetest.register_node("technic:injector", {
+ description = S("Self-Contained Injector"),
+ tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png",
+ "technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1, tubedevice_receiver=1},
+ tube = {
+ can_insert = function(pos, node, stack, direction)
+ return minetest.get_meta(pos):get_inventory():room_for_item("main",stack)
+ end,
+ insert_object = function(pos, node, stack, direction)
+ return minetest.get_meta(pos):get_inventory():add_item("main",stack)
+ end,
+ connect_sides = {left=1, right=1, front=1, back=1, top=1, bottom=1},
+ },
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Self-Contained Injector"))
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ meta:set_string("mode","single items")
+ set_injector_formspec(meta)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_receive_fields = function(pos, formanme, fields, sender)
+ local meta = minetest.get_meta(pos)
+ if fields.mode_item then meta:set_string("mode", "single items") end
+ if fields.mode_stack then meta:set_string("mode", "whole stacks") end
+ set_injector_formspec(meta)
+ end,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ after_place_node = pipeworks.after_place,
+ after_dig_node = pipeworks.after_dig
+})
+
+minetest.register_abm({
+ nodenames = {"technic:injector"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local pos1 = vector.add(pos, vector.new(0, -1, 0))
+ local node1 = minetest.get_node(pos1)
+ if minetest.get_item_group(node1.name, "tubedevice") > 0 then
+ inject_items(pos)
+ end
+ end,
+})
+
diff --git a/technic/technic/machines/register/alloy_furnace.lua b/technic/technic/machines/register/alloy_furnace.lua
new file mode 100644
index 0000000..879e528
--- /dev/null
+++ b/technic/technic/machines/register/alloy_furnace.lua
@@ -0,0 +1,10 @@
+
+local S = technic.getter
+
+function technic.register_alloy_furnace(data)
+ data.typename = "alloy"
+ data.machine_name = "alloy_furnace"
+ data.machine_desc = S("%s Alloy Furnace")
+ technic.register_base_machine(data)
+end
+
diff --git a/technic/technic/machines/register/alloy_recipes.lua b/technic/technic/machines/register/alloy_recipes.lua
new file mode 100644
index 0000000..bd09bd6
--- /dev/null
+++ b/technic/technic/machines/register/alloy_recipes.lua
@@ -0,0 +1,35 @@
+
+local S = technic.getter
+
+technic.register_recipe_type("alloy", {
+ description = S("Alloying"),
+ input_size = 2,
+})
+
+function technic.register_alloy_recipe(data)
+ data.time = data.time or 6
+ technic.register_recipe("alloy", data)
+end
+
+local recipes = {
+ {"technic:copper_dust 3", "technic:tin_dust", "technic:bronze_dust 4"},
+ {"default:copper_ingot 3", "moreores:tin_ingot", "default:bronze_ingot 4"},
+ {"technic:wrought_iron_dust", "technic:coal_dust", "technic:carbon_steel_dust", 3},
+ {"technic:wrought_iron_ingot", "technic:coal_dust", "technic:carbon_steel_ingot", 3},
+ {"technic:carbon_steel_dust", "technic:coal_dust", "technic:cast_iron_dust", 3},
+ {"technic:carbon_steel_ingot", "technic:coal_dust", "technic:cast_iron_ingot", 3},
+ {"technic:carbon_steel_dust 3", "technic:chromium_dust", "technic:stainless_steel_dust 4"},
+ {"technic:carbon_steel_ingot 3", "technic:chromium_ingot", "technic:stainless_steel_ingot 4"},
+ {"technic:copper_dust 2", "technic:zinc_dust", "technic:brass_dust 3"},
+ {"default:copper_ingot 2", "technic:zinc_ingot", "technic:brass_ingot 3"},
+ {"default:sand 2", "technic:coal_dust 2", "technic:silicon_wafer"},
+ {"technic:silicon_wafer", "technic:gold_dust", "technic:doped_silicon_wafer"},
+ -- from https://en.wikipedia.org/wiki/Carbon_black
+ -- The highest volume use of carbon black is as a reinforcing filler in rubber products, especially tires.
+ -- "[Compounding a] pure gum vulcanizate … with 50% of its weight of carbon black improves its tensile strength and wear resistance …"
+ {"technic:raw_latex 4", "technic:coal_dust 2", "technic:rubber 6", 2},
+}
+
+for _, data in pairs(recipes) do
+ technic.register_alloy_recipe({input = {data[1], data[2]}, output = data[3], time = data[4]})
+end
diff --git a/technic/technic/machines/register/battery_box.lua b/technic/technic/machines/register/battery_box.lua
new file mode 100644
index 0000000..82edca0
--- /dev/null
+++ b/technic/technic/machines/register/battery_box.lua
@@ -0,0 +1,291 @@
+
+local S = technic.getter
+
+technic.register_power_tool("technic:battery", 10000)
+technic.register_power_tool("technic:red_energy_crystal", 50000)
+technic.register_power_tool("technic:green_energy_crystal", 150000)
+technic.register_power_tool("technic:blue_energy_crystal", 450000)
+
+minetest.register_craft({
+ output = 'technic:battery',
+ recipe = {
+ {'group:wood', 'default:copper_ingot', 'group:wood'},
+ {'group:wood', 'moreores:tin_ingot', 'group:wood'},
+ {'group:wood', 'default:copper_ingot', 'group:wood'},
+ }
+})
+
+minetest.register_tool("technic:battery", {
+ description = S("RE Battery"),
+ inventory_image = "technic_battery.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ tool_capabilities = {
+ charge = 0,
+ max_drop_level = 0,
+ groupcaps = {
+ fleshy = {times={}, uses=10000, maxlevel=0}
+ }
+ }
+})
+
+local tube = {
+ insert_object = function(pos, node, stack, direction)
+ if direction.y == 0 then
+ return stack
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y > 0 then
+ return inv:add_item("src", stack)
+ else
+ return inv:add_item("dst", stack)
+ end
+ end,
+ can_insert = function(pos, node, stack, direction)
+ if direction.y == 0 then
+ return false
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if direction.y > 0 then
+ return inv:room_for_item("src", stack)
+ else
+ return inv:room_for_item("dst", stack)
+ end
+ end,
+ connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
+}
+
+function technic.register_battery_box(data)
+ local tier = data.tier
+ local ltier = string.lower(tier)
+
+ local formspec =
+ "invsize[8,9;]"..
+ "image[1,1;1,2;technic_power_meter_bg.png]"..
+ "list[current_name;src;3,1;1,1;]"..
+ "image[4,1;1,1;technic_battery_reload.png]"..
+ "list[current_name;dst;5,1;1,1;]"..
+ "label[0,0;"..S("%s Battery Box"):format(tier).."]"..
+ "label[3,0;"..S("Charge").."]"..
+ "label[5,0;"..S("Discharge").."]"..
+ "label[1,3;"..S("Power level").."]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[current_name;dst]"..
+ "listring[current_player;main]"..
+ "listring[current_name;src]"..
+ "listring[current_player;main]"
+
+ if data.upgrade then
+ formspec = formspec..
+ "list[current_name;upgrade1;3.5,3;1,1;]"..
+ "list[current_name;upgrade2;4.5,3;1,1;]"..
+ "label[3.5,4;"..S("Upgrade Slots").."]"..
+ "listring[current_name;upgrade1]"..
+ "listring[current_player;main]"..
+ "listring[current_name;upgrade2]"..
+ "listring[current_player;main]"
+ end
+
+ local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local eu_input = meta:get_int(tier.."_EU_input")
+ local current_charge = meta:get_int("internal_EU_charge")
+
+ local EU_upgrade, tube_upgrade = 0, 0
+ if data.upgrade then
+ EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta)
+ end
+ local max_charge = data.max_charge * (1 + EU_upgrade / 10)
+
+ -- Charge/discharge the battery with the input EUs
+ if eu_input >= 0 then
+ current_charge = math.min(current_charge + eu_input, max_charge)
+ else
+ current_charge = math.max(current_charge + eu_input, 0)
+ end
+
+ -- Charging/discharging tools here
+ local tool_full, tool_empty
+ current_charge, tool_full = technic.charge_tools(meta,
+ current_charge, data.charge_step)
+ current_charge, tool_empty = technic.discharge_tools(meta,
+ current_charge, data.discharge_step,
+ max_charge)
+
+ if data.tube then
+ local inv = meta:get_inventory()
+ technic.handle_machine_pipeworks(pos, tube_upgrade,
+ function(pos, x_velocity, z_velocity)
+ if tool_full and not inv:is_empty("src") then
+ technic.send_items(pos, x_velocity, z_velocity, "src")
+ elseif tool_empty and not inv:is_empty("dst") then
+ technic.send_items(pos, x_velocity, z_velocity, "dst")
+ end
+ end)
+ end
+
+ -- We allow batteries to charge on less than the demand
+ meta:set_int(tier.."_EU_demand",
+ math.min(data.charge_rate, max_charge - current_charge))
+ meta:set_int(tier.."_EU_supply",
+ math.min(data.discharge_rate, current_charge))
+ meta:set_int("internal_EU_charge", current_charge)
+
+ -- Select node textures
+ local charge_count = math.ceil((current_charge / max_charge) * 8)
+ charge_count = math.min(charge_count, 8)
+ charge_count = math.max(charge_count, 0)
+ local last_count = meta:get_float("last_side_shown")
+ if charge_count ~= last_count then
+ technic.swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count)
+ meta:set_float("last_side_shown", charge_count)
+ end
+
+ local charge_percent = math.floor(current_charge / max_charge * 100)
+ meta:set_string("formspec",
+ formspec..
+ "image[1,1;1,2;technic_power_meter_bg.png"
+ .."^[lowpart:"..charge_percent
+ ..":technic_power_meter_fg.png]")
+
+ local infotext = S("@1 Battery Box: @2/@3", tier,
+ technic.prettynum(current_charge), technic.prettynum(max_charge))
+ if eu_input == 0 then
+ infotext = S("%s Idle"):format(infotext)
+ end
+ meta:set_string("infotext", infotext)
+ end
+
+ for i = 0, 8 do
+ local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}
+ if i ~= 0 then
+ groups.not_in_creative_inventory = 1
+ end
+
+ if data.tube then
+ groups.tubedevice = 1
+ groups.tubedevice_receiver = 1
+ end
+
+ minetest.register_node("technic:"..ltier.."_battery_box"..i, {
+ description = S("%s Battery Box"):format(tier),
+ tiles = {"technic_"..ltier.."_battery_box_top.png",
+ "technic_"..ltier.."_battery_box_bottom.png",
+ "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
+ "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
+ "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png",
+ "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"},
+ groups = groups,
+ tube = data.tube and tube or nil,
+ paramtype2 = "facedir",
+ sounds = default.node_sound_wood_defaults(),
+ drop = "technic:"..ltier.."_battery_box0",
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local node = minetest.get_node(pos)
+
+ meta:set_string("infotext", S("%s Battery Box"):format(tier))
+ meta:set_string("formspec", formspec)
+ meta:set_int(tier.."_EU_demand", 0)
+ meta:set_int(tier.."_EU_supply", 0)
+ meta:set_int(tier.."_EU_input", 0)
+ meta:set_float("internal_EU_charge", 0)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 1)
+ inv:set_size("upgrade1", 1)
+ inv:set_size("upgrade2", 1)
+ end,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+ after_place_node = data.tube and pipeworks.after_place,
+ after_dig_node = technic.machine_after_dig_node
+ })
+ end
+
+ -- Register as a battery type
+ -- Battery type machines function as power reservoirs and can both receive and give back power
+ for i = 0, 8 do
+ technic.register_machine(tier, "technic:"..ltier.."_battery_box"..i, technic.battery)
+ end
+
+end -- End registration
+
+
+function technic.charge_tools(meta, batt_charge, charge_step)
+ local inv = meta:get_inventory()
+ if inv:is_empty("src") then
+ return batt_charge, false
+ end
+ local src_stack = inv:get_stack("src", 1)
+
+ local tool_name = src_stack:get_name()
+ if not technic.power_tools[tool_name] then
+ return batt_charge, false
+ end
+ -- Set meta data for the tool if it didn't do it itself
+ local src_meta = minetest.deserialize(src_stack:get_metadata()) or {}
+ if not src_meta.charge then
+ src_meta.charge = 0
+ end
+ -- Do the charging
+ local item_max_charge = technic.power_tools[tool_name]
+ local tool_charge = src_meta.charge
+ if tool_charge >= item_max_charge then
+ return batt_charge, true
+ elseif batt_charge <= 0 then
+ return batt_charge, false
+ end
+ charge_step = math.min(charge_step, batt_charge)
+ charge_step = math.min(charge_step, item_max_charge - tool_charge)
+ tool_charge = tool_charge + charge_step
+ batt_charge = batt_charge - charge_step
+ technic.set_RE_wear(src_stack, tool_charge, item_max_charge)
+ src_meta.charge = tool_charge
+ src_stack:set_metadata(minetest.serialize(src_meta))
+ inv:set_stack("src", 1, src_stack)
+ return batt_charge, (tool_charge == item_max_charge)
+end
+
+
+function technic.discharge_tools(meta, batt_charge, charge_step, max_charge)
+ local inv = meta:get_inventory()
+ if inv:is_empty("dst") then
+ return batt_charge, false
+ end
+ srcstack = inv:get_stack("dst", 1)
+ local toolname = srcstack:get_name()
+ if technic.power_tools[toolname] == nil then
+ return batt_charge, false
+ end
+ -- Set meta data for the tool if it didn't do it itself :-(
+ local src_meta = minetest.deserialize(srcstack:get_metadata())
+ src_meta = src_meta or {}
+ if not src_meta.charge then
+ src_meta.charge = 0
+ end
+
+ -- Do the discharging
+ local item_max_charge = technic.power_tools[toolname]
+ local tool_charge = src_meta.charge
+ if tool_charge <= 0 then
+ return batt_charge, true
+ elseif batt_charge >= max_charge then
+ return batt_charge, false
+ end
+ charge_step = math.min(charge_step, max_charge - batt_charge)
+ charge_step = math.min(charge_step, tool_charge)
+ tool_charge = tool_charge - charge_step
+ batt_charge = batt_charge + charge_step
+ technic.set_RE_wear(srcstack, tool_charge, item_max_charge)
+ src_meta.charge = tool_charge
+ srcstack:set_metadata(minetest.serialize(src_meta))
+ inv:set_stack("dst", 1, srcstack)
+ return batt_charge, (tool_charge == 0)
+end
+
diff --git a/technic/technic/machines/register/cables.lua b/technic/technic/machines/register/cables.lua
new file mode 100644
index 0000000..a1e7bc8
--- /dev/null
+++ b/technic/technic/machines/register/cables.lua
@@ -0,0 +1,177 @@
+
+local S = technic.getter
+
+local cable_itstr_to_tier = {}
+
+function technic.register_cable(tier, size)
+ local ltier = string.lower(tier)
+
+ for x1 = 0, 1 do
+ for x2 = 0, 1 do
+ for y1 = 0, 1 do
+ for y2 = 0, 1 do
+ for z1 = 0, 1 do
+ for z2 = 0, 1 do
+ local id = technic.get_cable_id({x1, x2, y1, y2, z1, z2})
+
+ cable_itstr_to_tier["technic:"..ltier.."_cable"..id] = tier
+
+ local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2}
+ if id ~= 0 then
+ groups.not_in_creative_inventory = 1
+ end
+
+ minetest.register_node("technic:"..ltier.."_cable"..id, {
+ description = S("%s Cable"):format(tier),
+ tiles = {"technic_"..ltier.."_cable.png"},
+ inventory_image = "technic_"..ltier.."_cable_wield.png",
+ wield_image = "technic_"..ltier.."_cable_wield.png",
+ groups = groups,
+ sounds = default.node_sound_wood_defaults(),
+ drop = "technic:"..ltier.."_cable0",
+ paramtype = "light",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = technic.gen_cable_nodebox(x1, y1, z1, x2, y2, z2, size)
+ },
+ on_construct = function()
+ technic.networks = {}
+ end,
+ on_destruct = function()
+ technic.networks = {}
+ end,
+ after_place_node = function(pos)
+ local node = minetest.get_node(pos)
+ technic.update_cables(pos, technic.get_cable_tier(node.name))
+ end,
+ after_dig_node = function(pos, oldnode)
+ local tier = technic.get_cable_tier(oldnode.name)
+ technic.update_cables(pos, tier, true)
+ end
+ })
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+minetest.register_on_placenode(function(pos, node)
+ for tier, machine_list in pairs(technic.machines) do
+ if machine_list[node.name] ~= nil then
+ technic.update_cables(pos, tier, true)
+ technic.networks = {}
+ end
+ end
+end)
+
+
+minetest.register_on_dignode(function(pos, node)
+ for tier, machine_list in pairs(technic.machines) do
+ if machine_list[node.name] ~= nil then
+ technic.update_cables(pos, tier, true)
+ technic.networks = {}
+ end
+ end
+end)
+
+function technic.get_cable_id(links)
+ return (links[6] * 1) + (links[5] * 2)
+ + (links[4] * 4) + (links[3] * 8)
+ + (links[2] * 16) + (links[1] * 32)
+end
+
+function technic.update_cables(pos, tier, no_set, secondrun)
+ local link_positions = {
+ {x=pos.x+1, y=pos.y, z=pos.z},
+ {x=pos.x-1, y=pos.y, z=pos.z},
+ {x=pos.x, y=pos.y+1, z=pos.z},
+ {x=pos.x, y=pos.y-1, z=pos.z},
+ {x=pos.x, y=pos.y, z=pos.z+1},
+ {x=pos.x, y=pos.y, z=pos.z-1}}
+
+ local links = {0, 0, 0, 0, 0, 0}
+
+ for i, link_pos in pairs(link_positions) do
+ local connect_type = technic.cables_should_connect(pos, link_pos, tier)
+ if connect_type then
+ links[i] = 1
+ -- Have cables next to us update theirselves,
+ -- but only once. (We don't want to update the entire
+ -- network or start an infinite loop of updates)
+ if not secondrun and connect_type == "cable" then
+ technic.update_cables(link_pos, tier, false, true)
+ end
+ end
+ end
+ -- We don't want to set ourselves if we have been removed or we are
+ -- updating a machine
+ if not no_set then
+ minetest.set_node(pos, {name="technic:"..string.lower(tier)
+ .."_cable"..technic.get_cable_id(links)})
+
+ end
+end
+
+
+function technic.is_tier_cable(name, tier)
+ return cable_itstr_to_tier[name] and cable_itstr_to_tier[name] == tier
+end
+
+
+function technic.get_cable_tier(name)
+ return cable_itstr_to_tier[name]
+end
+
+
+function technic.cables_should_connect(pos1, pos2, tier)
+ local name = minetest.get_node(pos2).name
+
+ if name == "technic:switching_station" then
+ return pos2.y == pos1.y + 1 and "machine" or false
+ elseif name == "technic:supply_converter" then
+ return math.abs(pos2.y - pos1.y) == 1 and "machine" or false
+ elseif technic.is_tier_cable(name, tier) then
+ return "cable"
+ elseif technic.machines[tier][name] then
+ return "machine"
+ end
+ return false
+end
+
+
+function technic.gen_cable_nodebox(x1, y1, z1, x2, y2, z2, size)
+ -- Nodeboxes
+ local box_center = {-size, -size, -size, size, size, size}
+ local box_y1 = {-size, -size, -size, size, 0.5, size} -- y+
+ local box_x1 = {-size, -size, -size, 0.5, size, size} -- x+
+ local box_z1 = {-size, -size, size, size, size, 0.5} -- z+
+ local box_z2 = {-size, -size, -0.5, size, size, size} -- z-
+ local box_y2 = {-size, -0.5, -size, size, size, size} -- y-
+ local box_x2 = {-0.5, -size, -size, size, size, size} -- x-
+
+ local box = {box_center}
+ if x1 == 1 then
+ table.insert(box, box_x1)
+ end
+ if y1 == 1 then
+ table.insert(box, box_y1)
+ end
+ if z1 == 1 then
+ table.insert(box, box_z1)
+ end
+ if x2 == 1 then
+ table.insert(box, box_x2)
+ end
+ if y2 == 1 then
+ table.insert(box, box_y2)
+ end
+ if z2 == 1 then
+ table.insert(box, box_z2)
+ end
+ return box
+end
+
diff --git a/technic/technic/machines/register/centrifuge.lua b/technic/technic/machines/register/centrifuge.lua
new file mode 100644
index 0000000..dd05977
--- /dev/null
+++ b/technic/technic/machines/register/centrifuge.lua
@@ -0,0 +1,8 @@
+local S = technic.getter
+
+function technic.register_centrifuge(data)
+ data.typename = "separating"
+ data.machine_name = "centrifuge"
+ data.machine_desc = S("%s Centrifuge")
+ technic.register_base_machine(data)
+end
diff --git a/technic/technic/machines/register/centrifuge_recipes.lua b/technic/technic/machines/register/centrifuge_recipes.lua
new file mode 100644
index 0000000..05642f5
--- /dev/null
+++ b/technic/technic/machines/register/centrifuge_recipes.lua
@@ -0,0 +1,38 @@
+local S = technic.getter
+
+technic.register_recipe_type("separating", {
+ description = S("Separating"),
+ output_size = 2,
+})
+
+function technic.register_separating_recipe(data)
+ data.time = data.time or 10
+ technic.register_recipe("separating", data)
+end
+
+local recipes = {
+ { "technic:bronze_dust 4", "technic:copper_dust 3", "technic:tin_dust" },
+ { "technic:stainless_steel_dust 4", "technic:wrought_iron_dust 3", "technic:chromium_dust" },
+ { "technic:brass_dust 3", "technic:copper_dust 2", "technic:zinc_dust" },
+}
+
+local function uranium_dust(p)
+ return "technic:uranium"..(p == 7 and "" or p).."_dust"
+end
+for p = 1, 34 do
+ table.insert(recipes, { uranium_dust(p).." 2", uranium_dust(p-1), uranium_dust(p+1) })
+end
+
+if minetest.get_modpath("bushes_classic") then
+ for _, berry in ipairs({ "blackberry", "blueberry", "gooseberry", "raspberry", "strawberry" }) do
+ table.insert(recipes, { "bushes:"..berry.."_bush", "default:stick 20", "bushes:"..berry.." 4" })
+ end
+end
+
+if minetest.get_modpath("farming") then
+ table.insert(recipes, { "farming:wheat 4", "farming:seed_wheat 3", "default:dry_shrub 1" })
+end
+
+for _, data in pairs(recipes) do
+ technic.register_separating_recipe({ input = { data[1] }, output = { data[2], data[3] } })
+end
diff --git a/technic/technic/machines/register/common.lua b/technic/technic/machines/register/common.lua
new file mode 100644
index 0000000..ce0eee6
--- /dev/null
+++ b/technic/technic/machines/register/common.lua
@@ -0,0 +1,214 @@
+
+local S = technic.getter
+
+-- handles the machine upgrades every tick
+function technic.handle_machine_upgrades(meta)
+ -- Get the names of the upgrades
+ local inv = meta:get_inventory()
+
+ local srcstack = inv:get_stack("upgrade1", 1)
+ local upg_item1 = srcstack and srcstack:get_name()
+
+ srcstack = inv:get_stack("upgrade2", 1)
+ local upg_item2 = srcstack and srcstack:get_name()
+
+ -- Save some power by installing battery upgrades.
+ -- Tube loading speed can be upgraded using control logic units.
+ local EU_upgrade = 0
+ local tube_upgrade = 0
+
+ if upg_item1 == "technic:control_logic_unit" then
+ tube_upgrade = tube_upgrade + 1
+ elseif upg_item1 == "technic:battery" then
+ EU_upgrade = EU_upgrade + 1
+ end
+
+ if upg_item2 == "technic:control_logic_unit" then
+ tube_upgrade = tube_upgrade + 1
+ elseif upg_item2 == "technic:battery" then
+ EU_upgrade = EU_upgrade + 1
+ end
+
+ return EU_upgrade, tube_upgrade
+end
+
+-- handles the machine upgrades when set or removed
+local function on_machine_upgrade(meta, stack)
+ local stack_name = stack:get_name()
+ if stack_name == "default:chest" then
+ meta:set_int("public", 1)
+ return 1
+ elseif stack_name ~= "technic:control_logic_unit"
+ and stack_name ~= "technic:battery" then
+ return 0
+ end
+ return 1
+end
+
+-- something is about to be removed
+local function on_machine_downgrade(meta, stack, list)
+ if stack:get_name() == "default:chest" then
+ local inv = meta:get_inventory()
+ local upg1, upg2 = inv:get_stack("upgrade1", 1), inv:get_stack("upgrade2", 1)
+
+ -- only set 0 if theres not a nother chest in the other list too
+ if (not upg1 or not upg2 or upg1:get_name() ~= upg2:get_name()) then
+ meta:set_int("public", 0)
+ end
+ end
+ return 1
+end
+
+
+function technic.send_items(pos, x_velocity, z_velocity, output_name)
+ -- Send items on their way in the pipe system.
+ if output_name == nil then
+ output_name = "dst"
+ end
+
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local i = 0
+ for _, stack in ipairs(inv:get_list(output_name)) do
+ i = i + 1
+ if stack then
+ local item0 = stack:to_table()
+ if item0 then
+ item0["count"] = "1"
+ technic.tube_inject_item(pos, pos, vector.new(x_velocity, 0, z_velocity), item0)
+ stack:take_item(1)
+ inv:set_stack(output_name, i, stack)
+ return
+ end
+ end
+ end
+end
+
+
+function technic.smelt_item(meta, result, speed)
+ local inv = meta:get_inventory()
+ meta:set_int("cook_time", meta:get_int("cook_time") + 1)
+ if meta:get_int("cook_time") < result.time / speed then
+ return
+ end
+ local result
+ local afterfuel
+ result, afterfuel = minetest.get_craft_result({method = "cooking", width = 1, items = inv:get_list("src")})
+
+ if result and result.item then
+ meta:set_int("cook_time", 0)
+ -- check if there's room for output in "dst" list
+ if inv:room_for_item("dst", result.item) then
+ inv:set_stack("src", 1, afterfuel.items[1])
+ inv:add_item("dst", result.item)
+ end
+ end
+end
+
+function technic.handle_machine_pipeworks(pos, tube_upgrade, send_function)
+ if send_function == nil then
+ send_function = technic.send_items
+ end
+
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local pos1 = vector.new(pos)
+ local x_velocity = 0
+ local z_velocity = 0
+
+ -- Output is on the left side of the furnace
+ if node.param2 == 3 then pos1.z = pos1.z - 1 z_velocity = -1 end
+ if node.param2 == 2 then pos1.x = pos1.x - 1 x_velocity = -1 end
+ if node.param2 == 1 then pos1.z = pos1.z + 1 z_velocity = 1 end
+ if node.param2 == 0 then pos1.x = pos1.x + 1 x_velocity = 1 end
+
+ local output_tube_connected = false
+ local node1 = minetest.get_node(pos1)
+ if minetest.get_item_group(node1.name, "tubedevice") > 0 then
+ output_tube_connected = true
+ end
+ local tube_time = meta:get_int("tube_time") + tube_upgrade
+ if tube_time >= 2 then
+ tube_time = 0
+ if output_tube_connected then
+ send_function(pos, x_velocity, z_velocity)
+ end
+ end
+ meta:set_int("tube_time", tube_time)
+end
+
+function technic.machine_can_dig(pos, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ if not inv:is_empty("src") or not inv:is_empty("dst") then
+ if player then
+ minetest.chat_send_player(player:get_player_name(),
+ S("Machine cannot be removed because it is not empty"))
+ end
+ return false
+ end
+
+ return true
+end
+
+function technic.machine_after_dig_node(pos, oldnode, oldmetadata, player)
+ if oldmetadata.inventory then
+ if oldmetadata.inventory.upgrade1 and oldmetadata.inventory.upgrade1[1] then
+ local stack = ItemStack(oldmetadata.inventory.upgrade1[1])
+ if not stack:is_empty() then
+ minetest.item_drop(stack, "", pos)
+ end
+ end
+ if oldmetadata.inventory.upgrade2 and oldmetadata.inventory.upgrade2[1] then
+ local stack = ItemStack(oldmetadata.inventory.upgrade2[1])
+ if not stack:is_empty() then
+ minetest.item_drop(stack, "", pos)
+ end
+ end
+ end
+
+ if minetest.registered_nodes[oldnode.name].tube then
+ pipeworks.after_dig(pos, oldnode, oldmetadata, player)
+ end
+end
+
+local function inv_change(pos, player, count, from_list, to_list, stack)
+ local playername = player:get_player_name()
+ local meta = minetest.get_meta(pos);
+ local public = (meta:get_int("public") == 1)
+ local to_upgrade = to_list == "upgrade1" or to_list == "upgrade2"
+ local from_upgrade = from_list == "upgrade1" or from_list == "upgrade2"
+
+ if (not public or to_upgrade or from_upgrade) and minetest.is_protected(pos, playername) then
+ minetest.chat_send_player(playername, S("Inventory move disallowed due to protection"))
+ return 0
+ end
+ if to_upgrade then
+ -- only place a single item into it, if it's empty
+ local empty = meta:get_inventory():is_empty(to_list)
+ if empty then
+ return on_machine_upgrade(meta, stack)
+ end
+ return 0
+ elseif from_upgrade then
+ -- only called on take (not move)
+ on_machine_downgrade(meta, stack, from_list)
+ end
+ return count
+end
+
+function technic.machine_inventory_put(pos, listname, index, stack, player)
+ return inv_change(pos, player, stack:get_count(), nil, listname, stack)
+end
+
+function technic.machine_inventory_take(pos, listname, index, stack, player)
+ return inv_change(pos, player, stack:get_count(), listname, nil, stack)
+end
+
+function technic.machine_inventory_move(pos, from_list, from_index,
+ to_list, to_index, count, player)
+ local stack = minetest.get_meta(pos):get_inventory():get_stack(from_list, from_index)
+ return inv_change(pos, player, count, from_list, to_list, stack)
+end
+
diff --git a/technic/technic/machines/register/compressor.lua b/technic/technic/machines/register/compressor.lua
new file mode 100644
index 0000000..49830d7
--- /dev/null
+++ b/technic/technic/machines/register/compressor.lua
@@ -0,0 +1,9 @@
+
+local S = technic.getter
+
+function technic.register_compressor(data)
+ data.typename = "compressing"
+ data.machine_name = "compressor"
+ data.machine_desc = S("%s Compressor")
+ technic.register_base_machine(data)
+end
diff --git a/technic/technic/machines/register/compressor_recipes.lua b/technic/technic/machines/register/compressor_recipes.lua
new file mode 100644
index 0000000..872be04
--- /dev/null
+++ b/technic/technic/machines/register/compressor_recipes.lua
@@ -0,0 +1,34 @@
+
+local S = technic.getter
+
+technic.register_recipe_type("compressing", { description = S("Compressing") })
+
+function technic.register_compressor_recipe(data)
+ data.time = data.time or 4
+ technic.register_recipe("compressing", data)
+end
+
+local recipes = {
+ {"default:snowblock", "default:ice"},
+ {"default:sand 2", "default:sandstone"},
+ {"default:desert_sand", "default:desert_stone"},
+ {"technic:mixed_metal_ingot", "technic:composite_plate"},
+ {"default:copper_ingot 5", "technic:copper_plate"},
+ {"technic:coal_dust 4", "technic:graphite"},
+ {"technic:carbon_cloth", "technic:carbon_plate"},
+ {"technic:uranium35_ingot 5", "technic:uranium_fuel"},
+}
+
+-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
+minetest.register_craft({
+ output = "default:sand 0",
+ recipe = {
+ {'group:sand', 'group:sand'},
+ {'group:sand', 'group:sand'}
+ },
+})
+
+for _, data in pairs(recipes) do
+ technic.register_compressor_recipe({input = {data[1]}, output = data[2]})
+end
+
diff --git a/technic/technic/machines/register/electric_furnace.lua b/technic/technic/machines/register/electric_furnace.lua
new file mode 100644
index 0000000..44de16c
--- /dev/null
+++ b/technic/technic/machines/register/electric_furnace.lua
@@ -0,0 +1,9 @@
+
+local S = technic.getter
+
+function technic.register_electric_furnace(data)
+ data.typename = "cooking"
+ data.machine_name = "electric_furnace"
+ data.machine_desc = S("%s Furnace")
+ technic.register_base_machine(data)
+end
diff --git a/technic/technic/machines/register/extractor.lua b/technic/technic/machines/register/extractor.lua
new file mode 100644
index 0000000..eeef9ff
--- /dev/null
+++ b/technic/technic/machines/register/extractor.lua
@@ -0,0 +1,9 @@
+
+local S = technic.getter
+
+function technic.register_extractor(data)
+ data.typename = "extracting"
+ data.machine_name = "extractor"
+ data.machine_desc = S("%s Extractor")
+ technic.register_base_machine(data)
+end
diff --git a/technic/technic/machines/register/extractor_recipes.lua b/technic/technic/machines/register/extractor_recipes.lua
new file mode 100644
index 0000000..1de0ba0
--- /dev/null
+++ b/technic/technic/machines/register/extractor_recipes.lua
@@ -0,0 +1,59 @@
+
+local S = technic.getter
+
+technic.register_recipe_type("extracting", { description = S("Extracting") })
+
+function technic.register_extractor_recipe(data)
+ data.time = data.time or 4
+ technic.register_recipe("extracting", data)
+end
+
+if minetest.get_modpath("dye") then
+ -- check if we are using dye or unifieddyes
+ local unifieddyes = minetest.get_modpath("unifieddyes")
+
+ -- register recipes with the same crafting ratios as `dye` provides
+ local dye_recipes = {
+ {"technic:coal_dust", "dye:black 2"},
+ {"default:grass_1", "dye:green 1"},
+ {"default:dry_shrub", "dye:brown 1"},
+ {"default:junglegrass", "dye:green 2"},
+ {"default:cactus", "dye:green 4"},
+ {"flowers:geranium", "dye:blue 4"},
+ {"flowers:dandelion_white", "dye:white 4"},
+ {"flowers:dandelion_yellow", "dye:yellow 4"},
+ {"flowers:tulip", "dye:orange 4"},
+ {"flowers:rose", "dye:red 4"},
+ {"flowers:viola", "dye:violet 4"},
+ {"bushes:blackberry", unifieddyes and "unifieddyes:magenta_s50 4" or "dye:violet 4"},
+ {"bushes:blueberry", unifieddyes and "unifieddyes:magenta_s50 4" or "dye:magenta 4"},
+ }
+
+ for _, data in ipairs(dye_recipes) do
+ technic.register_extractor_recipe({input = {data[1]}, output = data[2]})
+ end
+
+ -- overwrite the existing crafting recipes
+ local dyes = {"white", "red", "yellow", "blue", "violet", "orange"}
+ for _, color in ipairs(dyes) do
+ minetest.register_craft({
+ type = "shapeless",
+ output = "dye:"..color.." 1",
+ recipe = {"group:flower,color_"..color},
+ })
+
+ end
+ minetest.register_craft({
+ type = "shapeless",
+ output = "dye:black 1",
+ recipe = {"group:coal"},
+ })
+
+ if unifieddyes then
+ minetest.register_craft({
+ type = "shapeless",
+ output = "dye:green 1",
+ recipe = {"default:cactus"},
+ })
+ end
+end
diff --git a/technic/technic/machines/register/generator.lua b/technic/technic/machines/register/generator.lua
new file mode 100644
index 0000000..31c1cef
--- /dev/null
+++ b/technic/technic/machines/register/generator.lua
@@ -0,0 +1,173 @@
+local S = technic.getter
+
+local tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item("src", stack)
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("src", stack)
+ end,
+ connect_sides = {left=1, right=1, back=1, top=1, bottom=1},
+}
+
+function technic.register_generator(data)
+ local tier = data.tier
+ local ltier = string.lower(tier)
+
+ local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}
+ local active_groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, not_in_creative_inventory=1}
+ if data.tube then
+ groups.tubedevice = 1
+ groups.tubedevice_receiver = 1
+ active_groups.tubedevice = 1
+ active_groups.tubedevice_receiver = 1
+ end
+
+ local generator_formspec =
+ "invsize[8,9;]"..
+ "label[0,0;"..S("Fuel-Fired %s Generator"):format(tier).."]"..
+ "list[current_name;src;3,1;1,1;]"..
+ "image[4,1;1,1;default_furnace_fire_bg.png]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]"
+
+ local desc = S("Fuel-Fired %s Generator"):format(tier)
+
+ local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local burn_time = meta:get_int("burn_time")
+ local burn_totaltime = meta:get_int("burn_totaltime")
+ -- If more to burn and the energy produced was used: produce some more
+ if burn_time > 0 then
+ meta:set_int(tier.."_EU_supply", data.supply)
+ burn_time = burn_time - 1
+ meta:set_int("burn_time", burn_time)
+ end
+ -- Burn another piece of fuel
+ if burn_time == 0 then
+ local inv = meta:get_inventory()
+ if not inv:is_empty("src") then
+ local fuellist = inv:get_list("src")
+ local fuel
+ local afterfuel
+ fuel, afterfuel = minetest.get_craft_result(
+ {method = "fuel", width = 1,
+ items = fuellist})
+ if not fuel or fuel.time == 0 then
+ meta:set_string("infotext", S("%s Out Of Fuel"):format(desc))
+ technic.swap_node(pos, "technic:"..ltier.."_generator")
+ meta:set_int(tier.."_EU_supply", 0)
+ return
+ end
+ meta:set_int("burn_time", fuel.time)
+ meta:set_int("burn_totaltime", fuel.time)
+ inv:set_stack("src", 1, afterfuel.items[1])
+ technic.swap_node(pos, "technic:"..ltier.."_generator_active")
+ meta:set_int(tier.."_EU_supply", data.supply)
+ else
+ technic.swap_node(pos, "technic:"..ltier.."_generator")
+ meta:set_int(tier.."_EU_supply", 0)
+ end
+ end
+ if burn_totaltime == 0 then burn_totaltime = 1 end
+ local percent = math.floor((burn_time / burn_totaltime) * 100)
+ meta:set_string("infotext", desc.." ("..percent.."%)")
+ meta:set_string("formspec",
+ "size[8, 9]"..
+ "label[0, 0;"..minetest.formspec_escape(desc).."]"..
+ "list[current_name;src;3, 1;1, 1;]"..
+ "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:"..
+ (percent)..":default_furnace_fire_fg.png]"..
+ "list[current_player;main;0, 5;8, 4;]"..
+ "listring[]")
+ end
+
+ minetest.register_node("technic:"..ltier.."_generator", {
+ description = desc,
+ tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png",
+ "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png",
+ "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front.png"},
+ paramtype2 = "facedir",
+ groups = groups,
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ tube = data.tube and tube or nil,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", desc)
+ meta:set_int(data.tier.."_EU_supply", 0)
+ meta:set_int("burn_time", 0)
+ meta:set_int("tube_time", 0)
+ meta:set_string("formspec", generator_formspec)
+ local inv = meta:get_inventory()
+ inv:set_size("src", 1)
+ end,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+ after_place_node = data.tube and pipeworks.after_place,
+ after_dig_node = technic.machine_after_dig_node
+ })
+
+ minetest.register_node("technic:"..ltier.."_generator_active", {
+ description = desc,
+ tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png",
+ "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png",
+ "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front_active.png"},
+ paramtype2 = "facedir",
+ groups = active_groups,
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ tube = data.tube and tube or nil,
+ drop = "technic:"..ltier.."_generator",
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+ technic_on_disable = function(pos, node)
+ local timer = minetest.get_node_timer(pos)
+ timer:start(1)
+ end,
+ on_timer = function(pos, node)
+ local meta = minetest.get_meta(pos)
+
+ -- Connected back?
+ if meta:get_int(tier.."_EU_timeout") > 0 then return false end
+
+ local burn_time = meta:get_int("burn_time") or 0
+
+ if burn_time <= 0 then
+ meta:set_int(tier.."_EU_supply", 0)
+ meta:set_int("burn_time", 0)
+ technic.swap_node(pos, "technic:"..ltier.."_generator")
+ return false
+ end
+
+ local burn_totaltime = meta:get_int("burn_totaltime") or 0
+ if burn_totaltime == 0 then burn_totaltime = 1 end
+ burn_time = burn_time - 1
+ meta:set_int("burn_time", burn_time)
+ local percent = math.floor(burn_time / burn_totaltime * 100)
+ meta:set_string("formspec",
+ "size[8, 9]"..
+ "label[0, 0;"..minetest.formspec_escape(desc).."]"..
+ "list[current_name;src;3, 1;1, 1;]"..
+ "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:"..
+ (percent)..":default_furnace_fire_fg.png]"..
+ "list[current_player;main;0, 5;8, 4;]"..
+ "listring[]")
+ return true
+ end,
+ })
+
+ technic.register_machine(tier, "technic:"..ltier.."_generator", technic.producer)
+ technic.register_machine(tier, "technic:"..ltier.."_generator_active", technic.producer)
+end
+
diff --git a/technic/technic/machines/register/grinder.lua b/technic/technic/machines/register/grinder.lua
new file mode 100644
index 0000000..19ea094
--- /dev/null
+++ b/technic/technic/machines/register/grinder.lua
@@ -0,0 +1,9 @@
+
+local S = technic.getter
+
+function technic.register_grinder(data)
+ data.typename = "grinding"
+ data.machine_name = "grinder"
+ data.machine_desc = S("%s Grinder")
+ technic.register_base_machine(data)
+end
diff --git a/technic/technic/machines/register/grinder_recipes.lua b/technic/technic/machines/register/grinder_recipes.lua
new file mode 100644
index 0000000..87c6ade
--- /dev/null
+++ b/technic/technic/machines/register/grinder_recipes.lua
@@ -0,0 +1,161 @@
+
+local S = technic.getter
+
+technic.register_recipe_type("grinding", { description = S("Grinding") })
+
+function technic.register_grinder_recipe(data)
+ data.time = data.time or 3
+ technic.register_recipe("grinding", data)
+end
+
+local recipes = {
+ -- Dusts
+ {"default:coal_lump", "technic:coal_dust 2"},
+ {"default:copper_lump", "technic:copper_dust 2"},
+ {"default:desert_stone", "default:desert_sand"},
+ {"default:gold_lump", "technic:gold_dust 2"},
+ {"default:iron_lump", "technic:wrought_iron_dust 2"},
+ {"technic:chromium_lump", "technic:chromium_dust 2"},
+ {"technic:uranium_lump", "technic:uranium_dust 2"},
+ {"technic:zinc_lump", "technic:zinc_dust 2"},
+ {"technic:lead_lump", "technic:lead_dust 2"},
+ {"technic:sulfur_lump", "technic:sulfur_dust 2"},
+
+ -- Other
+ {"default:cobble", "default:gravel"},
+ {"default:gravel", "default:dirt"},
+ {"default:stone", "default:sand"},
+ {"default:sandstone", "default:sand 2"}, -- reverse recipe can be found in the compressor
+}
+
+-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe)
+minetest.register_craft({
+ output = "default:sandstone 0",
+ recipe = {
+ {'default:sandstone'}
+ },
+})
+
+if minetest.get_modpath("farming") then
+ table.insert(recipes, {"farming:seed_wheat", "farming:flour 1"})
+end
+
+if minetest.get_modpath("moreores") then
+ table.insert(recipes, {"moreores:mithril_lump", "technic:mithril_dust 2"})
+ table.insert(recipes, {"moreores:silver_lump", "technic:silver_dust 2"})
+ table.insert(recipes, {"moreores:tin_lump", "technic:tin_dust 2"})
+end
+
+if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
+ table.insert(recipes, {"gloopores:alatro_lump", "technic:alatro_dust 2"})
+ table.insert(recipes, {"gloopores:kalite_lump", "technic:kalite_dust 2"})
+ table.insert(recipes, {"gloopores:arol_lump", "technic:arol_dust 2"})
+ table.insert(recipes, {"gloopores:talinite_lump", "technic:talinite_dust 2"})
+ table.insert(recipes, {"gloopores:akalin_lump", "technic:akalin_dust 2"})
+end
+
+if minetest.get_modpath("homedecor") then
+ table.insert(recipes, {"home_decor:brass_ingot", "technic:brass_dust 1"})
+end
+
+for _, data in pairs(recipes) do
+ technic.register_grinder_recipe({input = {data[1]}, output = data[2]})
+end
+
+-- defuse common grinder unfriendly recipes
+if minetest.get_modpath("fake_fire") then -- from homedecor_modpack
+ minetest.register_craft({ output='default:cobble 0', recipe={{'default:cobble'}}})
+ minetest.register_craft({ output='default:gravel 0', recipe={{'default:gravel'}}})
+end
+
+-- dusts
+local function register_dust(name, ingot)
+ local lname = string.lower(name)
+ lname = string.gsub(lname, ' ', '_')
+ minetest.register_craftitem("technic:"..lname.."_dust", {
+ description = S("%s Dust"):format(S(name)),
+ inventory_image = "technic_"..lname.."_dust.png",
+ })
+ if ingot then
+ minetest.register_craft({
+ type = "cooking",
+ recipe = "technic:"..lname.."_dust",
+ output = ingot,
+ })
+ technic.register_grinder_recipe({ input = {ingot}, output = "technic:"..lname.."_dust 1" })
+ end
+end
+
+-- Sorted alphibeticaly
+register_dust("Brass", "technic:brass_ingot")
+register_dust("Bronze", "default:bronze_ingot")
+register_dust("Carbon Steel", "technic:carbon_steel_ingot")
+register_dust("Cast Iron", "technic:cast_iron_ingot")
+register_dust("Chromium", "technic:chromium_ingot")
+register_dust("Coal", nil)
+register_dust("Copper", "default:copper_ingot")
+register_dust("Lead", "technic:lead_ingot")
+register_dust("Gold", "default:gold_ingot")
+register_dust("Mithril", "moreores:mithril_ingot")
+register_dust("Silver", "moreores:silver_ingot")
+register_dust("Stainless Steel", "technic:stainless_steel_ingot")
+register_dust("Sulfur", nil)
+register_dust("Tin", "moreores:tin_ingot")
+register_dust("Wrought Iron", "technic:wrought_iron_ingot")
+register_dust("Zinc", "technic:zinc_ingot")
+if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
+ register_dust("Akalin", "glooptest:akalin_ingot")
+ register_dust("Alatro", "glooptest:alatro_ingot")
+ register_dust("Arol", "glooptest:arol_ingot")
+ register_dust("Kalite", nil)
+ register_dust("Talinite", "glooptest:talinite_ingot")
+end
+
+for p = 0, 35 do
+ local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
+ local psuffix = p == 7 and "" or p
+ local ingot = "technic:uranium"..psuffix.."_ingot"
+ local dust = "technic:uranium"..psuffix.."_dust"
+ minetest.register_craftitem(dust, {
+ description = S("%s Dust"):format(string.format(S("%.1f%%-Fissile Uranium"), p/10)),
+ inventory_image = "technic_uranium_dust.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+ groups = {uranium_dust=1, not_in_creative_inventory=nici},
+ })
+ minetest.register_craft({
+ type = "cooking",
+ recipe = dust,
+ output = ingot,
+ })
+ technic.register_grinder_recipe({ input = {ingot}, output = dust })
+end
+
+local function uranium_dust(p)
+ return "technic:uranium"..(p == 7 and "" or p).."_dust"
+end
+for pa = 0, 34 do
+ for pb = pa+1, 35 do
+ local pc = (pa+pb)/2
+ if pc == math.floor(pc) then
+ minetest.register_craft({
+ type = "shapeless",
+ recipe = { uranium_dust(pa), uranium_dust(pb) },
+ output = uranium_dust(pc).." 2",
+ })
+ end
+ end
+end
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "technic:coal_dust",
+ burntime = 50,
+})
+
+if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "technic:kalite_dust",
+ burntime = 37.5,
+ })
+end
diff --git a/technic/technic/machines/register/grindings.lua b/technic/technic/machines/register/grindings.lua
new file mode 100644
index 0000000..9231166
--- /dev/null
+++ b/technic/technic/machines/register/grindings.lua
@@ -0,0 +1,62 @@
+local S = technic.getter
+local moretrees = minetest.get_modpath("moretrees")
+local mesecons_materials = minetest.get_modpath("mesecons_materials")
+local dye = minetest.get_modpath("dye")
+
+-- sawdust, the finest wood/tree grinding
+local sawdust = "technic:sawdust"
+minetest.register_craftitem(sawdust, {
+ description = S("Sawdust"),
+ inventory_image = "technic_sawdust.png",
+})
+minetest.register_craft({ type = "fuel", recipe = sawdust, burntime = 6 })
+technic.register_compressor_recipe({ input = {sawdust .. " 4"}, output = "default:wood" })
+
+-- tree/wood grindings
+local function register_tree_grinding(name, tree, wood, extract, grinding_color)
+ local lname = string.lower(name)
+ lname = string.gsub(lname, ' ', '_')
+ local grindings_name = "technic:"..lname.."_grindings"
+ local inventory_image = "technic_"..lname.."_grindings.png"
+ if grinding_color then
+ inventory_image = inventory_image .. "^[colorize:" .. grinding_color
+ end
+ minetest.register_craftitem(grindings_name, {
+ description = S("%s Grinding"):format(S(name)),
+ inventory_image = inventory_image,
+ })
+ minetest.register_craft({
+ type = "fuel",
+ recipe = grindings_name,
+ burntime = 8,
+ })
+ technic.register_grinder_recipe({ input = { tree }, output = grindings_name .. " 4" })
+ technic.register_grinder_recipe({ input = { grindings_name }, output = sawdust .. " 4" })
+ if wood then
+ technic.register_grinder_recipe({ input = { wood }, output = grindings_name })
+ end
+ if extract then
+ technic.register_extractor_recipe({ input = { grindings_name .. " 4" }, output = extract})
+ technic.register_separating_recipe({
+ input = { grindings_name .. " 4" },
+ output = { sawdust .. " 4", extract }
+ })
+ end
+end
+
+local rubber_tree_planks = moretrees and "moretrees:rubber_tree_planks"
+local default_extract = dye and "dye:brown 2"
+
+local grinding_recipes = {
+ {"Common Tree", "group:tree", "group:wood", default_extract },
+ {"Rubber Tree", "moretrees:rubber_tree_trunk", rubber_tree_planks, "technic:raw_latex"}
+}
+
+for _, data in pairs(grinding_recipes) do
+ register_tree_grinding(unpack(data))
+end
+
+if moretrees and dye then
+ -- https://en.wikipedia.org/wiki/Catechu ancient brown dye from the wood of acacia trees
+ register_tree_grinding("Acacia", "moretrees:acacia_trunk", "moretrees:acacia_planks", "dye:brown 8")
+end
diff --git a/technic/technic/machines/register/init.lua b/technic/technic/machines/register/init.lua
new file mode 100644
index 0000000..1667d75
--- /dev/null
+++ b/technic/technic/machines/register/init.lua
@@ -0,0 +1,33 @@
+local path = technic.modpath.."/machines/register"
+
+dofile(path.."/common.lua")
+
+-- Wiring stuff
+dofile(path.."/cables.lua")
+dofile(path.."/battery_box.lua")
+
+-- Generators
+dofile(path.."/solar_array.lua")
+dofile(path.."/generator.lua")
+
+-- API for machines
+dofile(path.."/recipes.lua")
+dofile(path.."/machine_base.lua")
+
+-- Recipes
+dofile(path.."/alloy_recipes.lua")
+dofile(path.."/grinder_recipes.lua")
+dofile(path.."/extractor_recipes.lua")
+dofile(path.."/compressor_recipes.lua")
+dofile(path.."/centrifuge_recipes.lua")
+
+-- Multi-Machine Recipes
+dofile(path.."/grindings.lua")
+
+-- Machines
+dofile(path.."/alloy_furnace.lua")
+dofile(path.."/electric_furnace.lua")
+dofile(path.."/grinder.lua")
+dofile(path.."/extractor.lua")
+dofile(path.."/compressor.lua")
+dofile(path.."/centrifuge.lua")
diff --git a/technic/technic/machines/register/machine_base.lua b/technic/technic/machines/register/machine_base.lua
new file mode 100644
index 0000000..0c46261
--- /dev/null
+++ b/technic/technic/machines/register/machine_base.lua
@@ -0,0 +1,197 @@
+
+local S = technic.getter
+
+local tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item("src", stack)
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("src", stack)
+ end,
+ connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1},
+}
+
+local function round(v)
+ return math.floor(v + 0.5)
+end
+
+function technic.register_base_machine(data)
+ local typename = data.typename
+ local input_size = technic.recipes[typename].input_size
+ local machine_name = data.machine_name
+ local machine_desc = data.machine_desc
+ local tier = data.tier
+ local ltier = string.lower(tier)
+
+ local groups = {cracky = 2, technic_machine = 1}
+ local active_groups = {cracky = 2, technic_machine = 1, not_in_creative_inventory = 1}
+ if data.tube then
+ groups.tubedevice = 1
+ groups.tubedevice_receiver = 1
+ active_groups.tubedevice = 1
+ active_groups.tubedevice_receiver = 1
+ end
+
+
+ local formspec =
+ "invsize[8,9;]"..
+ "list[current_name;src;"..(4-input_size)..",1;"..input_size..",1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "label[0,0;"..machine_desc:format(tier).."]"..
+ "listring[current_name;dst]"..
+ "listring[current_player;main]"..
+ "listring[current_name;src]"..
+ "listring[current_player;main]"
+ if data.upgrade then
+ formspec = formspec..
+ "list[current_name;upgrade1;1,3;1,1;]"..
+ "list[current_name;upgrade2;2,3;1,1;]"..
+ "label[1,4;"..S("Upgrade Slots").."]"..
+ "listring[current_name;upgrade1]"..
+ "listring[current_player;main]"..
+ "listring[current_name;upgrade2]"..
+ "listring[current_player;main]"
+ end
+
+ local run = function(pos, node)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local eu_input = meta:get_int(tier.."_EU_input")
+
+ local machine_desc_tier = machine_desc:format(tier)
+ local machine_node = "technic:"..ltier.."_"..machine_name
+ local machine_demand = data.demand
+
+ -- Setup meta data if it does not exist.
+ if not eu_input then
+ meta:set_int(tier.."_EU_demand", machine_demand[1])
+ meta:set_int(tier.."_EU_input", 0)
+ return
+ end
+
+ local EU_upgrade, tube_upgrade = 0, 0
+ if data.upgrade then
+ EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta)
+ end
+ if data.tube then
+ technic.handle_machine_pipeworks(pos, tube_upgrade)
+ end
+
+ local powered = eu_input >= machine_demand[EU_upgrade+1]
+ if powered then
+ meta:set_int("src_time", meta:get_int("src_time") + round(data.speed*10))
+ end
+ while true do
+ local result = technic.get_recipe(typename, inv:get_list("src"))
+ if not result then
+ technic.swap_node(pos, machine_node)
+ meta:set_string("infotext", S("%s Idle"):format(machine_desc_tier))
+ meta:set_int(tier.."_EU_demand", 0)
+ meta:set_int("src_time", 0)
+ return
+ end
+ meta:set_int(tier.."_EU_demand", machine_demand[EU_upgrade+1])
+ technic.swap_node(pos, machine_node.."_active")
+ meta:set_string("infotext", S("%s Active"):format(machine_desc_tier))
+ if meta:get_int("src_time") < round(result.time*10) then
+ if not powered then
+ technic.swap_node(pos, machine_node)
+ meta:set_string("infotext", S("%s Unpowered"):format(machine_desc_tier))
+ end
+ return
+ end
+ local output = result.output
+ if type(output) ~= "table" then output = { output } end
+ local output_stacks = {}
+ for _, o in ipairs(output) do
+ table.insert(output_stacks, ItemStack(o))
+ end
+ local room_for_output = true
+ inv:set_size("dst_tmp", inv:get_size("dst"))
+ inv:set_list("dst_tmp", inv:get_list("dst"))
+ for _, o in ipairs(output_stacks) do
+ if not inv:room_for_item("dst_tmp", o) then
+ room_for_output = false
+ break
+ end
+ inv:add_item("dst_tmp", o)
+ end
+ if not room_for_output then
+ technic.swap_node(pos, machine_node)
+ meta:set_string("infotext", S("%s Idle"):format(machine_desc_tier))
+ meta:set_int(tier.."_EU_demand", 0)
+ meta:set_int("src_time", round(result.time*10))
+ return
+ end
+ meta:set_int("src_time", meta:get_int("src_time") - round(result.time*10))
+ inv:set_list("src", result.new_input)
+ inv:set_list("dst", inv:get_list("dst_tmp"))
+ end
+ end
+
+ minetest.register_node("technic:"..ltier.."_"..machine_name, {
+ description = machine_desc:format(tier),
+ tiles = {"technic_"..ltier.."_"..machine_name.."_top.png",
+ "technic_"..ltier.."_"..machine_name.."_bottom.png",
+ "technic_"..ltier.."_"..machine_name.."_side.png",
+ "technic_"..ltier.."_"..machine_name.."_side.png",
+ "technic_"..ltier.."_"..machine_name.."_side.png",
+ "technic_"..ltier.."_"..machine_name.."_front.png"},
+ paramtype2 = "facedir",
+ groups = groups,
+ tube = data.tube and tube or nil,
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ on_construct = function(pos)
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", machine_desc:format(tier))
+ meta:set_int("tube_time", 0)
+ meta:set_string("formspec", formspec)
+ local inv = meta:get_inventory()
+ inv:set_size("src", input_size)
+ inv:set_size("dst", 4)
+ inv:set_size("upgrade1", 1)
+ inv:set_size("upgrade2", 1)
+ end,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+ after_place_node = data.tube and pipeworks.after_place,
+ after_dig_node = technic.machine_after_dig_node
+ })
+
+ minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{
+ description = machine_desc:format(tier),
+ tiles = {"technic_"..ltier.."_"..machine_name.."_top.png",
+ "technic_"..ltier.."_"..machine_name.."_bottom.png",
+ "technic_"..ltier.."_"..machine_name.."_side.png",
+ "technic_"..ltier.."_"..machine_name.."_side.png",
+ "technic_"..ltier.."_"..machine_name.."_side.png",
+ "technic_"..ltier.."_"..machine_name.."_front_active.png"},
+ paramtype2 = "facedir",
+ drop = "technic:"..ltier.."_"..machine_name,
+ groups = active_groups,
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ tube = data.tube and tube or nil,
+ can_dig = technic.machine_can_dig,
+ allow_metadata_inventory_put = technic.machine_inventory_put,
+ allow_metadata_inventory_take = technic.machine_inventory_take,
+ allow_metadata_inventory_move = technic.machine_inventory_move,
+ technic_run = run,
+ technic_disabled_machine_name = "technic:"..ltier.."_"..machine_name,
+ })
+
+ technic.register_machine(tier, "technic:"..ltier.."_"..machine_name, technic.receiver)
+ technic.register_machine(tier, "technic:"..ltier.."_"..machine_name.."_active", technic.receiver)
+
+end -- End registration
+
diff --git a/technic/technic/machines/register/recipes.lua b/technic/technic/machines/register/recipes.lua
new file mode 100644
index 0000000..d30fd4f
--- /dev/null
+++ b/technic/technic/machines/register/recipes.lua
@@ -0,0 +1,107 @@
+local have_ui = minetest.get_modpath("unified_inventory")
+
+technic.recipes = { cooking = { input_size = 1, output_size = 1 } }
+function technic.register_recipe_type(typename, origdata)
+ local data = {}
+ for k, v in pairs(origdata) do data[k] = v end
+ data.input_size = data.input_size or 1
+ data.output_size = data.output_size or 1
+ if have_ui and unified_inventory.register_craft_type and data.output_size == 1 then
+ unified_inventory.register_craft_type(typename, {
+ description = data.description,
+ width = data.input_size,
+ height = 1,
+ })
+ end
+ data.recipes = {}
+ technic.recipes[typename] = data
+end
+
+local function get_recipe_index(items)
+ if not items or type(items) ~= "table" then return false end
+ local l = {}
+ for i, stack in ipairs(items) do
+ l[i] = ItemStack(stack):get_name()
+ end
+ table.sort(l)
+ return table.concat(l, "/")
+end
+
+local function register_recipe(typename, data)
+ -- Handle aliases
+ for i, stack in ipairs(data.input) do
+ data.input[i] = ItemStack(stack):to_string()
+ end
+ if type(data.output) == "table" then
+ for i, v in ipairs(data.output) do
+ data.output[i] = ItemStack(data.output[i]):to_string()
+ end
+ else
+ data.output = ItemStack(data.output):to_string()
+ end
+
+ local recipe = {time = data.time, input = {}, output = data.output}
+ local index = get_recipe_index(data.input)
+ if not index then
+ print("[Technic] ignored registration of garbage recipe!")
+ return
+ end
+ for _, stack in ipairs(data.input) do
+ recipe.input[ItemStack(stack):get_name()] = ItemStack(stack):get_count()
+ end
+
+ technic.recipes[typename].recipes[index] = recipe
+ if unified_inventory and technic.recipes[typename].output_size == 1 then
+ unified_inventory.register_craft({
+ type = typename,
+ output = data.output,
+ items = data.input,
+ width = 0,
+ })
+ end
+end
+
+function technic.register_recipe(typename, data)
+ minetest.after(0.01, register_recipe, typename, data) -- Handle aliases
+end
+
+function technic.get_recipe(typename, items)
+ if typename == "cooking" then -- Already builtin in Minetest, so use that
+ local result, new_input = minetest.get_craft_result({
+ method = "cooking",
+ width = 1,
+ items = items})
+ -- Compatibility layer
+ if not result or result.time == 0 then
+ return nil
+ else
+ return {time = result.time,
+ new_input = new_input.items,
+ output = result.item}
+ end
+ end
+ local index = get_recipe_index(items)
+ if not index then
+ print("[Technic] ignored registration of garbage recipe!")
+ return
+ end
+ local recipe = technic.recipes[typename].recipes[index]
+ if recipe then
+ local new_input = {}
+ for i, stack in ipairs(items) do
+ if stack:get_count() < recipe.input[stack:get_name()] then
+ return nil
+ else
+ new_input[i] = ItemStack(stack)
+ new_input[i]:take_item(recipe.input[stack:get_name()])
+ end
+ end
+ return {time = recipe.time,
+ new_input = new_input,
+ output = recipe.output}
+ else
+ return nil
+ end
+end
+
+
diff --git a/technic/technic/machines/register/solar_array.lua b/technic/technic/machines/register/solar_array.lua
new file mode 100644
index 0000000..39f50d2
--- /dev/null
+++ b/technic/technic/machines/register/solar_array.lua
@@ -0,0 +1,65 @@
+
+local S = technic.getter
+
+function technic.register_solar_array(data)
+ local tier = data.tier
+ local ltier = string.lower(tier)
+
+ local run = function(pos, node)
+ -- The action here is to make the solar array produce power
+ -- Power is dependent on the light level and the height above ground
+ -- There are many ways to cheat by using other light sources like lamps.
+ -- As there is no way to determine if light is sunlight that is just a shame.
+ -- To take care of some of it solar panels do not work outside daylight hours or if
+ -- built below 0m
+ local pos1 = {}
+ local machine_name = S("Arrayed Solar %s Generator"):format(tier)
+ pos1.y = pos.y + 1
+ pos1.x = pos.x
+ pos1.z = pos.z
+
+ technic.get_or_load_node(pos1)
+ local light = minetest.get_node_light(pos1, nil)
+ local time_of_day = minetest.get_timeofday()
+ local meta = minetest.get_meta(pos)
+ light = light or 0
+
+ -- turn on array only during day time and if sufficient light
+ -- I know this is counter intuitive when cheating by using other light sources.
+ if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > 0 then
+ local charge_to_give = math.floor((light + pos.y) * data.power)
+ charge_to_give = math.max(charge_to_give, 0)
+ charge_to_give = math.min(charge_to_give, data.power * 50)
+ meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.prettynum(charge_to_give)))
+ meta:set_int(tier.."_EU_supply", charge_to_give)
+ else
+ meta:set_string("infotext", S("%s Idle"):format(machine_name))
+ meta:set_int(tier.."_EU_supply", 0)
+ end
+ end
+
+ minetest.register_node("technic:solar_array_"..ltier, {
+ tiles = {"technic_"..ltier.."_solar_array_top.png", "technic_"..ltier.."_solar_array_bottom.png",
+ "technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png",
+ "technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ sounds = default.node_sound_wood_defaults(),
+ description = S("Arrayed Solar %s Generator"):format(tier),
+ active = false,
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ local name = minetest.get_node(pos).name
+ meta:set_int(tier.."_EU_supply", 0)
+ end,
+ technic_run = run,
+ })
+
+ technic.register_machine(tier, "technic:solar_array_"..ltier, technic.producer)
+end
+
diff --git a/technic/technic/machines/supply_converter.lua b/technic/technic/machines/supply_converter.lua
new file mode 100644
index 0000000..ffcd40d
--- /dev/null
+++ b/technic/technic/machines/supply_converter.lua
@@ -0,0 +1,80 @@
+-- The supply converter is a generic device which can convert from
+-- LV to MV and back, and HV to MV and back.
+-- The machine is configured by the wiring below and above it.
+--
+-- It works like this:
+-- The top side is setup as the receiver side, the bottom as the producer side.
+-- Once the receiver side is powered it will deliver power to the other side.
+-- Unused power is wasted just like any other producer!
+
+local S = technic.getter
+
+local run = function(pos, node)
+ local demand = 10000
+ local remain = 0.9
+ -- Machine information
+ local machine_name = S("Supply Converter")
+ local meta = minetest.get_meta(pos)
+
+ local pos_up = {x=pos.x, y=pos.y+1, z=pos.z}
+ local pos_down = {x=pos.x, y=pos.y-1, z=pos.z}
+ local name_up = minetest.get_node(pos_up).name
+ local name_down = minetest.get_node(pos_down).name
+
+ local from = technic.get_cable_tier(name_up)
+ local to = technic.get_cable_tier(name_down)
+
+ if from and to then
+ local input = meta:get_int(from.."_EU_input")
+ meta:set_int(from.."_EU_demand", demand)
+ meta:set_int(from.."_EU_supply", 0)
+ meta:set_int(to.."_EU_demand", 0)
+ meta:set_int(to.."_EU_supply", input * remain)
+ meta:set_string("infotext", S("@1 (@2 @3 -> @4 @5)", machine_name, technic.prettynum(input), from, technic.prettynum(input * remain), to))
+ else
+ meta:set_string("infotext", S("%s Has Bad Cabling"):format(machine_name))
+ if to then
+ meta:set_int(to.."_EU_supply", 0)
+ end
+ if from then
+ meta:set_int(from.."_EU_demand", 0)
+ end
+ return
+ end
+
+end
+
+minetest.register_node("technic:supply_converter", {
+ description = S("Supply Converter"),
+ tiles = {"technic_supply_converter_top.png", "technic_supply_converter_bottom.png",
+ "technic_supply_converter_side.png", "technic_supply_converter_side.png",
+ "technic_supply_converter_side.png", "technic_supply_converter_side.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1},
+ sounds = default.node_sound_wood_defaults(),
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Supply Converter"))
+ meta:set_float("active", false)
+ end,
+ technic_run = run,
+})
+
+minetest.register_craft({
+ output = 'technic:supply_converter 1',
+ recipe = {
+ {'technic:fine_gold_wire', 'technic:rubber', 'technic:doped_silicon_wafer'},
+ {'technic:mv_transformer', 'technic:machine_casing', 'technic:lv_transformer'},
+ {'technic:mv_cable0', 'technic:rubber', 'technic:lv_cable0'},
+ }
+})
+
+for tier, machines in pairs(technic.machines) do
+ technic.register_machine(tier, "technic:supply_converter", technic.producer_receiver)
+end
+
diff --git a/technic/technic/machines/switching_station.lua b/technic/technic/machines/switching_station.lua
new file mode 100644
index 0000000..d6f23a3
--- /dev/null
+++ b/technic/technic/machines/switching_station.lua
@@ -0,0 +1,404 @@
+-- SWITCHING STATION
+-- The switching station is the center of all power distribution on an electric network.
+--
+-- The station collects power from sources (PR), distributes it to sinks (RE),
+-- and uses the excess/shortfall to charge and discharge batteries (BA).
+--
+-- For now, all supply and demand values are expressed in kW.
+--
+-- It works like this:
+-- All PR,BA,RE nodes are indexed and tagged with the switching station.
+-- The tagging is to allow more stations to be built without allowing a cheat
+-- with duplicating power.
+-- All the RE nodes are queried for their current EU demand. Those which are off
+-- would require no or a small standby EU demand, while those which are on would
+-- require more.
+-- If the total demand is less than the available power they are all updated with the
+-- demand number.
+-- If any surplus exists from the PR nodes the batteries will be charged evenly with this.
+-- If the total demand requires draw on the batteries they will be discharged evenly.
+--
+-- If the total demand is more than the available power all RE nodes will be shut down.
+-- We have a brown-out situation.
+--
+-- Hence all the power distribution logic resides in this single node.
+--
+-- Nodes connected to the network will have one or more of these parameters as meta data:
+-- <LV|MV|HV>_EU_supply : Exists for PR and BA node types. This is the EU value supplied by the node. Output
+-- <LV|MV|HV>_EU_demand : Exists for RE and BA node types. This is the EU value the node requires to run. Output
+-- <LV|MV|HV>_EU_input : Exists for RE and BA node types. This is the actual EU value the network can give the node. Input
+--
+-- The reason the LV|MV|HV type is prepended toe meta data is because some machine could require several supplies to work.
+-- This way the supplies are separated per network.
+
+technic.networks = {}
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = "technic:switching_station",
+ recipe = {
+ {"", "technic:lv_transformer", ""},
+ {"default:copper_ingot", "technic:machine_casing", "default:copper_ingot"},
+ {"technic:lv_cable0", "technic:lv_cable0", "technic:lv_cable0"}
+ }
+})
+
+minetest.register_node("technic:switching_station",{
+ description = S("Switching Station"),
+ tiles = {"technic_water_mill_top_active.png", "technic_water_mill_top_active.png",
+ "technic_water_mill_top_active.png", "technic_water_mill_top_active.png",
+ "technic_water_mill_top_active.png", "technic_water_mill_top_active.png"},
+ groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ drawtype = "nodebox",
+ paramtype = "light",
+ node_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("Switching Station"))
+ meta:set_string("active", 1)
+ end,
+})
+
+--------------------------------------------------
+-- Functions to traverse the electrical network
+--------------------------------------------------
+
+-- Add a wire node to the LV/MV/HV network
+local add_new_cable_node = function(nodes, pos)
+ -- Ignore if the node has already been added
+ for i = 1, #nodes do
+ if pos.x == nodes[i].x and
+ pos.y == nodes[i].y and
+ pos.z == nodes[i].z then
+ return false
+ end
+ end
+ table.insert(nodes, {x=pos.x, y=pos.y, z=pos.z, visited=1})
+ return true
+end
+
+-- Generic function to add found connected nodes to the right classification array
+local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos, from_below)
+ technic.get_or_load_node(pos)
+ local meta = minetest.get_meta(pos)
+ local name = minetest.get_node(pos).name
+
+ if technic.is_tier_cable(name, tier) then
+ add_new_cable_node(all_nodes, pos)
+ elseif machines[name] then
+ --dprint(name.." is a "..machines[name])
+ if machines[name] == technic.producer then
+ add_new_cable_node(PR_nodes, pos)
+ elseif machines[name] == technic.receiver then
+ add_new_cable_node(RE_nodes, pos)
+ elseif machines[name] == technic.producer_receiver then
+ add_new_cable_node(PR_nodes, pos)
+ add_new_cable_node(RE_nodes, pos)
+ elseif machines[name] == "SPECIAL" and
+ (pos.x ~= sw_pos.x or pos.y ~= sw_pos.y or pos.z ~= sw_pos.z) and
+ from_below then
+ -- Another switching station -> disable it
+ add_new_cable_node(SP_nodes, pos)
+ meta:set_int("active", 0)
+ meta:set_string("active_pos", minetest.serialize(sw_pos))
+ elseif machines[name] == technic.battery then
+ add_new_cable_node(BA_nodes, pos)
+ end
+
+ meta:set_int(tier.."_EU_timeout", 2) -- Touch node
+ end
+end
+
+-- Traverse a network given a list of machines and a cable type name
+local traverse_network = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, i, machines, tier, sw_pos)
+ local pos = all_nodes[i]
+ local positions = {
+ {x=pos.x+1, y=pos.y, z=pos.z},
+ {x=pos.x-1, y=pos.y, z=pos.z},
+ {x=pos.x, y=pos.y+1, z=pos.z},
+ {x=pos.x, y=pos.y-1, z=pos.z},
+ {x=pos.x, y=pos.y, z=pos.z+1},
+ {x=pos.x, y=pos.y, z=pos.z-1}}
+ --print("ON")
+ for i, cur_pos in pairs(positions) do
+ check_node_subp(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, cur_pos, machines, tier, sw_pos, i == 3)
+ end
+end
+
+local touch_nodes = function(list, tier)
+ for _, pos in ipairs(list) do
+ local meta = minetest.get_meta(pos)
+ meta:set_int(tier.."_EU_timeout", 2) -- Touch node
+ end
+end
+
+local get_network = function(sw_pos, pos1, tier)
+ local cached = technic.networks[minetest.hash_node_position(pos1)]
+ if cached and cached.tier == tier then
+ touch_nodes(cached.PR_nodes, tier)
+ touch_nodes(cached.BA_nodes, tier)
+ touch_nodes(cached.RE_nodes, tier)
+ for _, pos in ipairs(cached.SP_nodes) do
+ local meta = minetest.get_meta(pos)
+ meta:set_int("active", 0)
+ meta:set_string("active_pos", minetest.serialize(sw_pos))
+ end
+ return cached.PR_nodes, cached.BA_nodes, cached.RE_nodes
+ end
+ local i = 1
+ local PR_nodes = {}
+ local BA_nodes = {}
+ local RE_nodes = {}
+ local SP_nodes = {}
+ local all_nodes = {pos1}
+ repeat
+ traverse_network(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes,
+ i, technic.machines[tier], tier, sw_pos)
+ i = i + 1
+ until all_nodes[i] == nil
+ technic.networks[minetest.hash_node_position(pos1)] = {tier = tier, PR_nodes = PR_nodes,
+ RE_nodes = RE_nodes, BA_nodes = BA_nodes, SP_nodes = SP_nodes}
+ return PR_nodes, BA_nodes, RE_nodes
+end
+
+-----------------------------------------------
+-- The action code for the switching station --
+-----------------------------------------------
+minetest.register_abm({
+ nodenames = {"technic:switching_station"},
+ label = "Switching Station", -- allows the mtt profiler to profile this abm individually
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ local meta1 = nil
+ local pos1 = {}
+ local PR_EU = 0 -- EUs from PR nodes
+ local BA_PR_EU = 0 -- EUs from BA nodes (discharching)
+ local BA_RE_EU = 0 -- EUs to BA nodes (charging)
+ local RE_EU = 0 -- EUs to RE nodes
+
+ local tier = ""
+ local PR_nodes
+ local BA_nodes
+ local RE_nodes
+ local machine_name = S("Switching Station")
+
+ if meta:get_int("active") ~= 1 then
+ meta:set_int("active", 1)
+ local active_pos = minetest.deserialize(meta:get_string("active_pos"))
+ if active_pos then
+ local meta1 = minetest.get_meta(active_pos)
+ meta:set_string("infotext", S("%s (Slave)"):format(meta1:get_string("infotext")))
+ end
+ return
+ end
+
+ -- Which kind of network are we on:
+ pos1 = {x=pos.x, y=pos.y-1, z=pos.z}
+
+ local name = minetest.get_node(pos1).name
+ local tier = technic.get_cable_tier(name)
+ if tier then
+ PR_nodes, BA_nodes, RE_nodes = get_network(pos, pos1, tier)
+ else
+ --dprint("Not connected to a network")
+ meta:set_string("infotext", S("%s Has No Network"):format(machine_name))
+ return
+ end
+
+ -- Run all the nodes
+ local function run_nodes(list)
+ for _, pos2 in ipairs(list) do
+ technic.get_or_load_node(pos2)
+ local node2 = minetest.get_node(pos2)
+ local nodedef
+ if node2 and node2.name then
+ nodedef = minetest.registered_nodes[node2.name]
+ end
+ if nodedef and nodedef.technic_run then
+ nodedef.technic_run(pos2, node2)
+ end
+ end
+ end
+
+ run_nodes(PR_nodes)
+ run_nodes(RE_nodes)
+ run_nodes(BA_nodes)
+
+ -- Strings for the meta data
+ local eu_demand_str = tier.."_EU_demand"
+ local eu_input_str = tier.."_EU_input"
+ local eu_supply_str = tier.."_EU_supply"
+
+ -- Distribute charge equally across multiple batteries.
+ local charge_total = 0
+ local battery_count = 0
+
+ for n, pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ local charge = meta1:get_int("internal_EU_charge")
+
+ if (meta1:get_int(eu_demand_str) ~= 0) then
+ charge_total = charge_total + charge
+ battery_count = battery_count + 1
+ end
+ end
+
+ local charge_distributed = math.floor(charge_total / battery_count)
+
+ for n, pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+
+ if (meta1:get_int(eu_demand_str) ~= 0) then
+ meta1:set_int("internal_EU_charge", charge_distributed)
+ end
+ end
+
+ -- Get all the power from the PR nodes
+ local PR_eu_supply = 0 -- Total power
+ for _, pos1 in pairs(PR_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ PR_eu_supply = PR_eu_supply + meta1:get_int(eu_supply_str)
+ end
+ --dprint("Total PR supply:"..PR_eu_supply)
+
+ -- Get all the demand from the RE nodes
+ local RE_eu_demand = 0
+ for _, pos1 in pairs(RE_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ RE_eu_demand = RE_eu_demand + meta1:get_int(eu_demand_str)
+ end
+ --dprint("Total RE demand:"..RE_eu_demand)
+
+ -- Get all the power from the BA nodes
+ local BA_eu_supply = 0
+ for _, pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ BA_eu_supply = BA_eu_supply + meta1:get_int(eu_supply_str)
+ end
+ --dprint("Total BA supply:"..BA_eu_supply)
+
+ -- Get all the demand from the BA nodes
+ local BA_eu_demand = 0
+ for _, pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ BA_eu_demand = BA_eu_demand + meta1:get_int(eu_demand_str)
+ end
+ --dprint("Total BA demand:"..BA_eu_demand)
+
+ meta:set_string("infotext",
+ S("@1. Supply: @2 Demand: @3",
+ machine_name, technic.prettynum(PR_eu_supply), technic.prettynum(RE_eu_demand)))
+
+ -- If the PR supply is enough for the RE demand supply them all
+ if PR_eu_supply >= RE_eu_demand then
+ --dprint("PR_eu_supply"..PR_eu_supply.." >= RE_eu_demand"..RE_eu_demand)
+ for _, pos1 in pairs(RE_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ local eu_demand = meta1:get_int(eu_demand_str)
+ meta1:set_int(eu_input_str, eu_demand)
+ end
+ -- We have a surplus, so distribute the rest equally to the BA nodes
+ -- Let's calculate the factor of the demand
+ PR_eu_supply = PR_eu_supply - RE_eu_demand
+ local charge_factor = 0 -- Assume all batteries fully charged
+ if BA_eu_demand > 0 then
+ charge_factor = PR_eu_supply / BA_eu_demand
+ end
+ for n, pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ local eu_demand = meta1:get_int(eu_demand_str)
+ meta1:set_int(eu_input_str, math.floor(eu_demand * charge_factor))
+ --dprint("Charging battery:"..math.floor(eu_demand*charge_factor))
+ end
+ return
+ end
+
+ -- If the PR supply is not enough for the RE demand we will discharge the batteries too
+ if PR_eu_supply + BA_eu_supply >= RE_eu_demand then
+ --dprint("PR_eu_supply "..PR_eu_supply.."+BA_eu_supply "..BA_eu_supply.." >= RE_eu_demand"..RE_eu_demand)
+ for _, pos1 in pairs(RE_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ local eu_demand = meta1:get_int(eu_demand_str)
+ meta1:set_int(eu_input_str, eu_demand)
+ end
+ -- We have a deficit, so distribute to the BA nodes
+ -- Let's calculate the factor of the supply
+ local charge_factor = 0 -- Assume all batteries depleted
+ if BA_eu_supply > 0 then
+ charge_factor = (PR_eu_supply - RE_eu_demand) / BA_eu_supply
+ end
+ for n,pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ local eu_supply = meta1:get_int(eu_supply_str)
+ meta1:set_int(eu_input_str, math.floor(eu_supply * charge_factor))
+ --dprint("Discharging battery:"..math.floor(eu_supply*charge_factor))
+ end
+ return
+ end
+
+ -- If the PR+BA supply is not enough for the RE demand: Power only the batteries
+ local charge_factor = 0 -- Assume all batteries fully charged
+ if BA_eu_demand > 0 then
+ charge_factor = PR_eu_supply / BA_eu_demand
+ end
+ for n, pos1 in pairs(BA_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ local eu_demand = meta1:get_int(eu_demand_str)
+ meta1:set_int(eu_input_str, math.floor(eu_demand * charge_factor))
+ end
+ for n, pos1 in pairs(RE_nodes) do
+ meta1 = minetest.get_meta(pos1)
+ meta1:set_int(eu_input_str, 0)
+ end
+ end,
+})
+
+-- Timeout ABM
+-- Timeout for a node in case it was disconnected from the network
+-- A node must be touched by the station continuously in order to function
+local function switching_station_timeout_count(pos, tier)
+ local meta = minetest.get_meta(pos)
+ local timeout = meta:get_int(tier.."_EU_timeout")
+ if timeout <= 0 then
+ meta:set_int(tier.."_EU_input", 0) -- Not needed anymore <-- actually, it is for supply converter
+ return true
+ else
+ meta:set_int(tier.."_EU_timeout", timeout - 1)
+ return false
+ end
+end
+minetest.register_abm({
+ nodenames = {"group:technic_machine"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ for tier, machines in pairs(technic.machines) do
+ if machines[node.name] and switching_station_timeout_count(pos, tier) then
+ local nodedef = minetest.registered_nodes[node.name]
+ if nodedef and nodedef.technic_disabled_machine_name then
+ node.name = nodedef.technic_disabled_machine_name
+ minetest.swap_node(pos, node)
+ elseif nodedef and nodedef.technic_on_disable then
+ nodedef.technic_on_disable(pos, node)
+ end
+ if nodedef then
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("%s Has No Network"):format(nodedef.description))
+ end
+ end
+ end
+ end,
+})
+
+for tier, machines in pairs(technic.machines) do
+ -- SPECIAL will not be traversed
+ technic.register_machine(tier, "technic:switching_station", "SPECIAL")
+end
+
diff --git a/technic/technic/models/technic_cylinder.obj b/technic/technic/models/technic_cylinder.obj
new file mode 100644
index 0000000..2622347
--- /dev/null
+++ b/technic/technic/models/technic_cylinder.obj
@@ -0,0 +1,238 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_cylinder_onetexture.blend'
+# www.blender.org
+o Cylinder_Cylinder.001
+v 0.000000 -0.500000 -0.500000
+v 0.000000 0.500000 -0.500000
+v 0.097545 -0.500000 -0.490393
+v 0.097545 0.500000 -0.490393
+v 0.191342 -0.500000 -0.461940
+v 0.191342 0.500000 -0.461940
+v 0.277785 -0.500000 -0.415735
+v 0.277785 0.500000 -0.415735
+v 0.353553 -0.500000 -0.353554
+v 0.353553 0.500000 -0.353554
+v 0.415735 -0.500000 -0.277785
+v 0.415735 0.500000 -0.277785
+v 0.461940 -0.500000 -0.191342
+v 0.461940 0.500000 -0.191342
+v 0.490393 -0.500000 -0.097545
+v 0.490393 0.500000 -0.097545
+v 0.500000 -0.500000 -0.000000
+v 0.500000 0.500000 -0.000000
+v 0.490393 -0.500000 0.097545
+v 0.490393 0.500000 0.097545
+v 0.461940 -0.500000 0.191341
+v 0.461940 0.500000 0.191341
+v 0.415735 -0.500000 0.277785
+v 0.415735 0.500000 0.277785
+v 0.353553 -0.500000 0.353553
+v 0.353553 0.500000 0.353553
+v 0.277785 -0.500000 0.415735
+v 0.277785 0.500000 0.415735
+v 0.191342 -0.500000 0.461940
+v 0.191342 0.500000 0.461940
+v 0.097545 -0.500000 0.490392
+v 0.097545 0.500000 0.490392
+v -0.000000 -0.500000 0.500000
+v -0.000000 0.500000 0.500000
+v -0.097545 -0.500000 0.490392
+v -0.097545 0.500000 0.490392
+v -0.191342 -0.500000 0.461939
+v -0.191342 0.500000 0.461939
+v -0.277785 -0.500000 0.415734
+v -0.277785 0.500000 0.415734
+v -0.353554 -0.500000 0.353553
+v -0.353554 0.500000 0.353553
+v -0.415735 -0.500000 0.277785
+v -0.415735 0.500000 0.277785
+v -0.461940 -0.500000 0.191341
+v -0.461940 0.500000 0.191341
+v -0.490393 -0.500000 0.097545
+v -0.490393 0.500000 0.097545
+v -0.500000 -0.500000 -0.000001
+v -0.500000 0.500000 -0.000001
+v -0.490393 -0.500000 -0.097546
+v -0.490393 0.500000 -0.097546
+v -0.461940 -0.500000 -0.191342
+v -0.461940 0.500000 -0.191342
+v -0.415734 -0.500000 -0.277786
+v -0.415734 0.500000 -0.277786
+v -0.353553 -0.500000 -0.353554
+v -0.353553 0.500000 -0.353554
+v -0.277785 -0.500000 -0.415735
+v -0.277785 0.500000 -0.415735
+v -0.191341 -0.500000 -0.461940
+v -0.191341 0.500000 -0.461940
+v -0.097544 -0.500000 -0.490393
+v -0.097544 0.500000 -0.490393
+vt 0.499996 0.999997
+vt 0.499995 0.000005
+vt 0.562495 0.000004
+vt 0.562496 0.999997
+vt 0.624995 0.000003
+vt 0.624997 0.999997
+vt 0.687496 0.000002
+vt 0.687497 0.999998
+vt 0.749997 0.000001
+vt 0.749997 0.999998
+vt 0.812497 0.000001
+vt 0.812497 0.999998
+vt 0.874997 -0.000000
+vt 0.874997 0.999998
+vt 0.937498 -0.000000
+vt 0.937498 0.999998
+vt 0.999998 -0.000000
+vt 0.999998 0.999998
+vt 0.000005 0.999997
+vt 0.000001 0.000024
+vt 0.062500 0.000023
+vt 0.062505 0.999996
+vt 0.124999 0.000021
+vt 0.125004 0.999996
+vt 0.187498 0.000020
+vt 0.187503 0.999995
+vt 0.249997 0.000018
+vt 0.250003 0.999994
+vt 0.312497 0.000017
+vt 0.312502 0.999994
+vt 0.374997 0.000015
+vt 0.375002 0.999993
+vt 0.437496 0.000014
+vt 0.437501 0.999993
+vt 0.402487 0.009601
+vt 0.597576 0.009614
+vt 0.691371 0.038072
+vt 0.777811 0.084282
+vt 0.853576 0.146469
+vt 0.915753 0.222242
+vt 0.961953 0.308689
+vt 0.990399 0.402487
+vt 1.000000 0.500033
+vt 0.990386 0.597577
+vt 0.961928 0.691370
+vt 0.915717 0.777811
+vt 0.853531 0.853575
+vt 0.777758 0.915753
+vt 0.691312 0.961952
+vt 0.597514 0.990398
+vt 0.402424 0.990386
+vt 0.308630 0.961928
+vt 0.222188 0.915717
+vt 0.146424 0.853531
+vt 0.084248 0.777759
+vt 0.038049 0.691313
+vt 0.009602 0.597515
+vt 0.000000 0.499970
+vt 0.009614 0.402425
+vt 0.038073 0.308630
+vt 0.084283 0.222189
+vt 0.146470 0.146424
+vt 0.222243 0.084248
+vt 0.308689 0.038048
+vt 0.499927 0.999999
+vt 0.084226 0.777725
+vt 0.000000 0.499927
+vt 0.222277 0.084224
+vt 0.500074 0.000000
+vt 0.915777 0.222279
+vt 1.000000 0.500077
+vt 0.777724 0.915775
+vn 0.000000 -0.685700 -0.727900
+vn 0.000000 0.685700 -0.727900
+vn 0.142000 0.685700 -0.713900
+vn 0.142000 -0.685700 -0.713900
+vn 0.278500 0.685700 -0.672500
+vn 0.278500 -0.685700 -0.672500
+vn 0.404400 0.685700 -0.605200
+vn 0.404400 -0.685700 -0.605200
+vn 0.514700 0.685700 -0.514700
+vn 0.514700 -0.685700 -0.514700
+vn 0.605200 0.685700 -0.404400
+vn 0.605200 -0.685700 -0.404400
+vn 0.672500 0.685700 -0.278500
+vn 0.672500 -0.685700 -0.278500
+vn 0.713900 0.685700 -0.142000
+vn 0.713900 -0.685700 -0.142000
+vn 0.727900 0.685700 0.000000
+vn 0.727900 -0.685700 0.000000
+vn 0.713900 0.685700 0.142000
+vn 0.713900 -0.685700 0.142000
+vn 0.672500 0.685700 0.278500
+vn 0.672500 -0.685700 0.278500
+vn 0.605200 0.685700 0.404400
+vn 0.605200 -0.685700 0.404400
+vn 0.514700 0.685700 0.514700
+vn 0.514700 -0.685700 0.514700
+vn 0.404400 0.685700 0.605200
+vn 0.404400 -0.685700 0.605200
+vn 0.278500 0.685700 0.672500
+vn 0.278500 -0.685700 0.672500
+vn 0.142000 0.685700 0.713900
+vn 0.142000 -0.685700 0.713900
+vn 0.000000 0.685700 0.727900
+vn 0.000000 -0.685700 0.727900
+vn -0.142000 0.685700 0.713900
+vn -0.142000 -0.685700 0.713900
+vn -0.278500 0.685700 0.672500
+vn -0.278500 -0.685700 0.672500
+vn -0.404400 0.685700 0.605200
+vn -0.404400 -0.685700 0.605200
+vn -0.514700 0.685700 0.514700
+vn -0.514700 -0.685700 0.514700
+vn -0.605200 0.685700 0.404400
+vn -0.605200 -0.685700 0.404400
+vn -0.672500 0.685700 0.278500
+vn -0.672500 -0.685700 0.278500
+vn -0.713900 0.685700 0.142000
+vn -0.713900 -0.685700 0.142000
+vn -0.727900 0.685700 0.000000
+vn -0.727900 -0.685700 0.000000
+vn -0.713900 0.685700 -0.142000
+vn -0.713900 -0.685700 -0.142000
+vn -0.672500 0.685700 -0.278500
+vn -0.672500 -0.685700 -0.278500
+vn -0.605200 0.685700 -0.404400
+vn -0.605200 -0.685700 -0.404400
+vn -0.514700 0.685700 -0.514700
+vn -0.514700 -0.685700 -0.514700
+vn -0.404400 0.685700 -0.605200
+vn -0.404400 -0.685700 -0.605200
+vn -0.278500 0.685700 -0.672500
+vn -0.278500 -0.685700 -0.672500
+vn -0.142000 0.685700 -0.713900
+vn -0.142000 -0.685700 -0.713900
+s 1
+f 1/1/1 2/2/2 4/3/3 3/4/4
+f 3/4/4 4/3/3 6/5/5 5/6/6
+f 5/6/6 6/5/5 8/7/7 7/8/8
+f 7/8/8 8/7/7 10/9/9 9/10/10
+f 9/10/10 10/9/9 12/11/11 11/12/12
+f 11/12/12 12/11/11 14/13/13 13/14/14
+f 13/14/14 14/13/13 16/15/15 15/16/16
+f 15/16/16 16/15/15 18/17/17 17/18/18
+f 17/19/18 18/20/17 20/21/19 19/22/20
+f 19/22/20 20/21/19 22/23/21 21/24/22
+f 21/24/22 22/23/21 24/25/23 23/26/24
+f 23/26/24 24/25/23 26/27/25 25/28/26
+f 25/28/26 26/27/25 28/29/27 27/30/28
+f 27/30/28 28/29/27 30/31/29 29/32/30
+f 29/32/30 30/31/29 32/33/31 31/34/32
+f 31/34/32 32/33/31 34/2/33 33/1/34
+f 33/1/34 34/2/33 36/3/35 35/4/36
+f 35/4/36 36/3/35 38/5/37 37/6/38
+f 37/6/38 38/5/37 40/7/39 39/8/40
+f 39/8/40 40/7/39 42/9/41 41/10/42
+f 41/10/42 42/9/41 44/11/43 43/12/44
+f 43/12/44 44/11/43 46/13/45 45/14/46
+f 45/14/46 46/13/45 48/15/47 47/16/48
+f 47/16/48 48/15/47 50/17/49 49/18/50
+f 49/19/50 50/20/49 52/21/51 51/22/52
+f 51/22/52 52/21/51 54/23/53 53/24/54
+f 53/24/54 54/23/53 56/25/55 55/26/56
+f 55/26/56 56/25/55 58/27/57 57/28/58
+f 57/28/58 58/27/57 60/29/59 59/30/60
+f 59/30/60 60/29/59 62/31/61 61/32/62
+f 4/35/3 2/2/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/1/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5
+f 63/34/64 64/33/63 2/2/2 1/1/1
+f 61/32/62 62/31/61 64/33/63 63/34/64
+f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64
diff --git a/technic/technic/models/technic_cylinder_horizontal.obj b/technic/technic/models/technic_cylinder_horizontal.obj
new file mode 100644
index 0000000..d00b1d6
--- /dev/null
+++ b/technic/technic/models/technic_cylinder_horizontal.obj
@@ -0,0 +1,238 @@
+# Blender v2.73 (sub 0) OBJ File: 'technic-cylinder-horizontal.blend'
+# www.blender.org
+o Cylinder_Cylinder.001
+v 0.500000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+v 0.500000 0.097545 -0.490393
+v -0.500000 0.097545 -0.490393
+v 0.500000 0.191342 -0.461940
+v -0.500000 0.191342 -0.461940
+v 0.500000 0.277785 -0.415735
+v -0.500000 0.277785 -0.415735
+v 0.500000 0.353553 -0.353553
+v -0.500000 0.353553 -0.353554
+v 0.500000 0.415735 -0.277785
+v -0.500000 0.415735 -0.277785
+v 0.500000 0.461940 -0.191342
+v -0.500000 0.461940 -0.191342
+v 0.500000 0.490393 -0.097545
+v -0.500000 0.490393 -0.097545
+v 0.500000 0.500000 -0.000000
+v -0.500000 0.500000 -0.000000
+v 0.500000 0.490393 0.097545
+v -0.500000 0.490393 0.097545
+v 0.500000 0.461940 0.191342
+v -0.500000 0.461940 0.191341
+v 0.500000 0.415735 0.277785
+v -0.500000 0.415735 0.277785
+v 0.500000 0.353553 0.353553
+v -0.500000 0.353553 0.353553
+v 0.500000 0.277785 0.415735
+v -0.500000 0.277785 0.415735
+v 0.500000 0.191342 0.461940
+v -0.500000 0.191342 0.461940
+v 0.500000 0.097545 0.490393
+v -0.500000 0.097545 0.490392
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.000000 0.500000
+v 0.500000 -0.097546 0.490392
+v -0.500000 -0.097545 0.490392
+v 0.500000 -0.191342 0.461940
+v -0.500000 -0.191342 0.461939
+v 0.500000 -0.277785 0.415734
+v -0.500000 -0.277785 0.415734
+v 0.500000 -0.353554 0.353553
+v -0.500000 -0.353554 0.353553
+v 0.500000 -0.415735 0.277785
+v -0.500000 -0.415735 0.277785
+v 0.500000 -0.461940 0.191341
+v -0.500000 -0.461940 0.191341
+v 0.500000 -0.490393 0.097545
+v -0.500000 -0.490393 0.097544
+v 0.500000 -0.500000 -0.000001
+v -0.500000 -0.500000 -0.000001
+v 0.500000 -0.490393 -0.097546
+v -0.500000 -0.490393 -0.097546
+v 0.500000 -0.461940 -0.191342
+v -0.500000 -0.461940 -0.191343
+v 0.500000 -0.415734 -0.277786
+v -0.500000 -0.415734 -0.277786
+v 0.500000 -0.353553 -0.353554
+v -0.500000 -0.353553 -0.353554
+v 0.500000 -0.277785 -0.415735
+v -0.500000 -0.277784 -0.415735
+v 0.500000 -0.191341 -0.461940
+v -0.500000 -0.191341 -0.461940
+v 0.500000 -0.097544 -0.490393
+v -0.500000 -0.097544 -0.490393
+vt 0.000003 0.499996
+vt 0.999995 0.499995
+vt 0.999996 0.562495
+vt 0.000002 0.562496
+vt 0.999997 0.624995
+vt 0.000003 0.624996
+vt 0.999998 0.687496
+vt 0.000002 0.687496
+vt 0.999999 0.749997
+vt 0.000002 0.749996
+vt 0.999999 0.812497
+vt 0.000002 0.812497
+vt 1.000000 0.874997
+vt 0.000001 0.874997
+vt 1.000000 0.937498
+vt 0.000001 0.937497
+vt 1.000000 0.999998
+vt 0.000001 0.999998
+vt 0.000003 0.000005
+vt 0.999976 0.000001
+vt 0.999977 0.062500
+vt 0.000003 0.062505
+vt 0.999978 0.124999
+vt 0.000004 0.125004
+vt 0.999980 0.187498
+vt 0.000005 0.187503
+vt 0.999982 0.249997
+vt 0.000005 0.250003
+vt 0.999983 0.312497
+vt 0.000006 0.312502
+vt 0.999985 0.374997
+vt 0.000007 0.375001
+vt 0.999986 0.437496
+vt 0.000007 0.437501
+vt 0.009601 0.597512
+vt 0.009614 0.402424
+vt 0.038072 0.308628
+vt 0.084283 0.222189
+vt 0.146469 0.146424
+vt 0.222242 0.084247
+vt 0.308689 0.038047
+vt 0.402487 0.009601
+vt 0.500033 -0.000000
+vt 0.597577 0.009613
+vt 0.691371 0.038072
+vt 0.777811 0.084283
+vt 0.853575 0.146469
+vt 0.915753 0.222242
+vt 0.961952 0.308688
+vt 0.990398 0.402486
+vt 0.990386 0.597576
+vt 0.961928 0.691370
+vt 0.915717 0.777812
+vt 0.853531 0.853576
+vt 0.777759 0.915752
+vt 0.691313 0.961951
+vt 0.597515 0.990398
+vt 0.499970 1.000000
+vt 0.402425 0.990386
+vt 0.308630 0.961927
+vt 0.222189 0.915717
+vt 0.146424 0.853530
+vt 0.084248 0.777757
+vt 0.038048 0.691311
+vt 0.999999 0.500073
+vt 0.777724 0.915774
+vt 0.499927 0.999999
+vt 0.084224 0.777723
+vt 0.000000 0.499925
+vt 0.222279 0.084223
+vt 0.500078 -0.000000
+vt 0.915775 0.222276
+vn 0.685700 0.000000 -0.727900
+vn -0.685700 0.000000 -0.727900
+vn -0.685700 0.142000 -0.713900
+vn 0.685700 0.142000 -0.713900
+vn -0.685700 0.278500 -0.672500
+vn 0.685700 0.278500 -0.672500
+vn -0.685700 0.404400 -0.605200
+vn 0.685700 0.404400 -0.605200
+vn -0.685700 0.514700 -0.514700
+vn 0.685700 0.514700 -0.514700
+vn -0.685700 0.605200 -0.404400
+vn 0.685700 0.605200 -0.404400
+vn -0.685700 0.672500 -0.278500
+vn 0.685700 0.672500 -0.278500
+vn -0.685700 0.713900 -0.142000
+vn 0.685700 0.713900 -0.142000
+vn -0.685700 0.727900 0.000000
+vn 0.685700 0.727900 0.000000
+vn -0.685700 0.713900 0.142000
+vn 0.685700 0.713900 0.142000
+vn -0.685700 0.672500 0.278500
+vn 0.685700 0.672500 0.278500
+vn -0.685700 0.605200 0.404400
+vn 0.685700 0.605200 0.404400
+vn -0.685700 0.514700 0.514700
+vn 0.685700 0.514700 0.514700
+vn -0.685700 0.404400 0.605200
+vn 0.685700 0.404400 0.605200
+vn -0.685700 0.278500 0.672500
+vn 0.685700 0.278500 0.672500
+vn -0.685700 0.142000 0.713900
+vn 0.685700 0.142000 0.713900
+vn -0.685700 0.000000 0.727900
+vn 0.685700 0.000000 0.727900
+vn -0.685700 -0.142000 0.713900
+vn 0.685700 -0.142000 0.713900
+vn -0.685700 -0.278500 0.672500
+vn 0.685700 -0.278500 0.672500
+vn -0.685700 -0.404400 0.605200
+vn 0.685700 -0.404400 0.605200
+vn -0.685700 -0.514700 0.514700
+vn 0.685700 -0.514700 0.514700
+vn -0.685700 -0.605200 0.404400
+vn 0.685700 -0.605200 0.404400
+vn -0.685700 -0.672500 0.278500
+vn 0.685700 -0.672500 0.278500
+vn -0.685700 -0.713900 0.142000
+vn 0.685700 -0.713900 0.142000
+vn -0.685700 -0.727900 0.000000
+vn 0.685700 -0.727900 0.000000
+vn -0.685700 -0.713900 -0.142000
+vn 0.685700 -0.713900 -0.142000
+vn -0.685700 -0.672500 -0.278500
+vn 0.685700 -0.672500 -0.278500
+vn -0.685700 -0.605200 -0.404400
+vn 0.685700 -0.605200 -0.404400
+vn -0.685700 -0.514700 -0.514700
+vn 0.685700 -0.514700 -0.514700
+vn -0.685700 -0.404400 -0.605200
+vn 0.685700 -0.404400 -0.605200
+vn -0.685700 -0.278500 -0.672500
+vn 0.685700 -0.278500 -0.672500
+vn -0.685700 -0.142000 -0.713900
+vn 0.685700 -0.142000 -0.713900
+s 1
+f 1/1/1 2/2/2 4/3/3 3/4/4
+f 3/4/4 4/3/3 6/5/5 5/6/6
+f 5/6/6 6/5/5 8/7/7 7/8/8
+f 7/8/8 8/7/7 10/9/9 9/10/10
+f 9/10/10 10/9/9 12/11/11 11/12/12
+f 11/12/12 12/11/11 14/13/13 13/14/14
+f 13/14/14 14/13/13 16/15/15 15/16/16
+f 15/16/16 16/15/15 18/17/17 17/18/18
+f 17/19/18 18/20/17 20/21/19 19/22/20
+f 19/22/20 20/21/19 22/23/21 21/24/22
+f 21/24/22 22/23/21 24/25/23 23/26/24
+f 23/26/24 24/25/23 26/27/25 25/28/26
+f 25/28/26 26/27/25 28/29/27 27/30/28
+f 27/30/28 28/29/27 30/31/29 29/32/30
+f 29/32/30 30/31/29 32/33/31 31/34/32
+f 31/34/32 32/33/31 34/2/33 33/1/34
+f 33/1/34 34/2/33 36/3/35 35/4/36
+f 35/4/36 36/3/35 38/5/37 37/6/38
+f 37/6/38 38/5/37 40/7/39 39/8/40
+f 39/8/40 40/7/39 42/9/41 41/10/42
+f 41/10/42 42/9/41 44/11/43 43/12/44
+f 43/12/44 44/11/43 46/13/45 45/14/46
+f 45/14/46 46/13/45 48/15/47 47/16/48
+f 47/16/48 48/15/47 50/17/49 49/18/50
+f 49/19/50 50/20/49 52/21/51 51/22/52
+f 51/22/52 52/21/51 54/23/53 53/24/54
+f 53/24/54 54/23/53 56/25/55 55/26/56
+f 55/26/56 56/25/55 58/27/57 57/28/58
+f 57/28/58 58/27/57 60/29/59 59/30/60
+f 59/30/60 60/29/59 62/31/61 61/32/62
+f 4/35/3 2/1/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/2/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5
+f 63/34/64 64/33/63 2/2/2 1/1/1
+f 61/32/62 62/31/61 64/33/63 63/34/64
+f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64
diff --git a/technic/technic/models/technic_innercorner.obj b/technic/technic/models/technic_innercorner.obj
new file mode 100644
index 0000000..c962aeb
--- /dev/null
+++ b/technic/technic/models/technic_innercorner.obj
@@ -0,0 +1,33 @@
+# Blender v2.73 (sub 0) OBJ File: 'technic-icorner.blend'
+# www.blender.org
+o Cube_Cube.000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn -0.000000 -0.000000 -1.000000
+vn 0.707100 0.707100 -0.000000
+vn 1.000000 0.000000 -0.000000
+vn 0.000000 -1.000000 -0.000000
+vn -1.000000 -0.000000 -0.000000
+vn 0.000000 0.707100 -0.707100
+s off
+f 6/1/1 1/2/1 7/3/1 8/4/1
+f 2/1/2 5/3/2 3/4/2
+f 2/1/3 1/2/3 5/4/3
+f 6/2/4 8/3/4 9/4/4
+f 9/1/5 8/2/5 7/3/5 3/4/5
+f 3/3/6 7/4/6 1/1/6 2/2/6
+f 1/1/7 6/2/7 9/3/7
+l 1 4
+l 3 4
diff --git a/technic/technic/models/technic_innercorner_upsdown.obj b/technic/technic/models/technic_innercorner_upsdown.obj
new file mode 100644
index 0000000..68eb560
--- /dev/null
+++ b/technic/technic/models/technic_innercorner_upsdown.obj
@@ -0,0 +1,33 @@
+# Blender v2.73 (sub 0) OBJ File: 'technic-icorner-upsdown.blend'
+# www.blender.org
+o Cube_Cube.000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v 0.500000 0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 -0.000000 0.000000
+vn -0.000000 -0.707100 -0.707100
+vn -0.000000 0.000000 -1.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.707100 -0.707100 -0.000000
+s off
+f 6/1/1 1/2/1 7/3/1 8/4/1
+f 2/1/2 5/3/2 3/4/2
+f 2/1/3 1/2/3 5/4/3
+f 6/2/4 8/3/4 9/4/4
+f 9/1/5 8/2/5 7/3/5 3/4/5
+f 3/3/6 7/4/6 1/1/6 2/2/6
+f 1/1/7 6/2/7 9/3/7
+l 1 4
+l 3 4
diff --git a/technic/technic/models/technic_oblate_spheroid.obj b/technic/technic/models/technic_oblate_spheroid.obj
new file mode 100644
index 0000000..e949f5b
--- /dev/null
+++ b/technic/technic/models/technic_oblate_spheroid.obj
@@ -0,0 +1,300 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_blob_onetexture.blend'
+# www.blender.org
+o Cube
+v 0.213679 -0.450000 -0.213679
+v -0.213679 -0.450000 0.213680
+v 0.213680 -0.450000 0.213680
+v -0.213679 -0.450000 -0.213679
+v 0.213679 0.450000 -0.213679
+v -0.213679 0.450000 -0.213679
+v 0.213679 0.450000 0.213680
+v 0.500000 -0.000003 0.500000
+v 0.277785 -0.415735 0.277785
+v -0.277785 -0.415735 0.277785
+v 0.353553 -0.353554 0.353553
+v -0.353553 -0.353554 0.353553
+v -0.500000 -0.000002 0.500000
+v 0.415735 -0.277786 0.415735
+v -0.277785 0.415735 0.277785
+v 0.277785 0.415735 0.277785
+v -0.415735 -0.277785 0.415735
+v 0.353554 0.353553 0.353554
+v -0.500000 -0.000002 -0.499983
+v 0.461940 -0.191342 0.461940
+v -0.461940 -0.191342 0.461940
+v -0.353553 0.353553 0.353554
+v 0.490393 -0.097546 0.490393
+v 0.500000 -0.000002 -0.500000
+v 0.490393 0.097545 -0.490392
+v 0.490393 0.097545 0.490393
+v -0.490393 -0.097546 0.490393
+v 0.490393 -0.097545 -0.490393
+v 0.461940 0.191341 0.461940
+v -0.461940 0.191341 0.461940
+v 0.461940 0.191342 -0.461940
+v -0.490393 0.097545 0.490393
+v 0.415735 0.277785 0.415735
+v -0.490393 0.097545 -0.490392
+v -0.415735 0.277785 0.415735
+v 0.461940 -0.191341 -0.461940
+v 0.415735 0.277785 -0.415735
+v -0.461940 0.191341 -0.461940
+v -0.415735 0.277785 -0.415735
+v 0.415735 -0.277785 -0.415735
+v -0.490393 -0.097546 -0.490392
+v 0.353553 0.353553 -0.353553
+v -0.213679 0.450000 0.213680
+v -0.353553 0.353553 -0.353553
+v 0.277785 0.415735 -0.277785
+v -0.461940 -0.191342 -0.461939
+v 0.353554 -0.353553 -0.353554
+v -0.277785 0.415735 -0.277785
+v -0.415735 -0.277785 -0.415734
+v 0.277786 -0.415735 -0.277785
+v -0.353553 -0.353554 -0.353553
+v -0.277785 -0.415735 -0.277784
+vt 0.038487 0.679029
+vt 0.010047 0.589789
+vt 0.990397 0.589790
+vt 0.915772 0.767073
+vt 0.084671 0.767071
+vt 0.961957 0.679029
+vt 0.852473 0.146294
+vt 0.914576 0.232749
+vt 0.084146 0.232744
+vt 0.712776 0.000003
+vt 0.221926 0.061588
+vt 0.285951 0.000000
+vt 0.285945 0.999818
+vt 0.221920 0.938229
+vt 0.712771 0.999818
+vt 0.009578 0.589789
+vt 0.989138 0.589792
+vt 0.960721 0.679031
+vt 0.286638 0.000000
+vt 0.777884 0.061589
+vt 0.222561 0.061589
+vt 0.777608 0.938229
+vt 0.222164 0.938229
+vt 0.146413 0.853527
+vt 0.286255 0.999818
+vt 0.713517 0.999818
+vt 0.776800 0.061592
+vt 0.146251 0.146290
+vt 0.000000 0.499907
+vt 0.989139 0.410032
+vt 0.998734 0.499910
+vt 0.853618 0.146291
+vt 0.915772 0.232746
+vt 0.146826 0.146290
+vt 0.961957 0.320789
+vt 0.084672 0.232745
+vt 0.990397 0.410029
+vt 0.038487 0.320789
+vt 0.776796 0.938230
+vt 0.777790 0.938229
+vt 0.146467 0.853526
+vt 0.853556 0.853527
+vt 0.146825 0.853526
+vt 1.000000 0.499907
+vt 0.010047 0.410028
+vt 0.146246 0.853527
+vt 0.222559 0.938228
+vt 0.777882 0.938230
+vt 0.915737 0.767073
+vt 0.084287 0.767072
+vt 0.038083 0.679029
+vt 0.961941 0.679029
+vt 0.037995 0.679029
+vt 0.960723 0.320792
+vt 0.037998 0.320787
+vt 0.009580 0.410028
+vt 0.990167 0.589790
+vt 0.999772 0.499909
+vt 0.961721 0.679029
+vt 0.084246 0.767072
+vt 0.915526 0.767072
+vt 0.853359 0.853527
+vt 0.914573 0.767074
+vt 0.084142 0.767072
+vt 0.852470 0.853528
+vt 0.777609 0.061590
+vt 0.853360 0.146293
+vt 0.222166 0.061589
+vt 0.146414 0.146291
+vt 0.915527 0.232748
+vt 0.084247 0.232746
+vt 0.961721 0.320791
+vt 0.038052 0.320789
+vt 0.990167 0.410031
+vt 0.713686 0.999818
+vt 0.749950 0.250050
+vt 0.749950 0.749950
+vt 0.250050 0.749950
+vt 0.250050 0.250050
+vt 0.713807 0.000000
+vt 0.286258 0.000000
+vt 0.713519 0.000001
+vt 0.250050 0.250050
+vt 0.749950 0.250050
+vt 0.749950 0.749950
+vt 0.286636 0.999817
+vt 0.777791 0.061589
+vt 0.146467 0.146291
+vt 0.084287 0.232745
+vt 0.915737 0.232746
+vt 0.961941 0.320789
+vt 0.000444 0.499907
+vt 0.713687 0.000000
+vt 0.713805 0.999818
+vn -0.620400 0.479600 0.620400
+vn -0.683900 0.254100 0.683900
+vn 0.683900 0.254100 0.683900
+vn 0.531000 0.660300 0.531000
+vn -0.531000 0.660300 0.531000
+vn 0.620400 0.479600 0.620400
+vn -0.429700 -0.794100 0.429700
+vn -0.531000 -0.660300 0.531000
+vn -0.531000 -0.660300 -0.531000
+vn -0.185700 -0.964900 0.185700
+vn -0.325800 -0.887500 -0.325800
+vn -0.185700 -0.964900 -0.185700
+vn -0.185700 0.964900 -0.185700
+vn -0.325800 0.887500 -0.325800
+vn -0.185700 0.964900 0.185700
+vn -0.683900 0.254000 -0.683900
+vn 0.325800 -0.887500 0.325800
+vn -0.325800 -0.887500 0.325800
+vn 0.325800 0.887500 -0.325800
+vn 0.429700 0.794100 -0.429700
+vn 0.185700 0.964900 -0.185700
+vn -0.429700 -0.794100 -0.429700
+vn -0.707100 0.000000 -0.707100
+vn -0.683900 -0.254100 0.683900
+vn -0.707100 0.000000 0.707100
+vn 0.429700 -0.794100 0.429700
+vn 0.531000 -0.660300 0.531000
+vn 0.620400 -0.479600 0.620400
+vn 0.683900 -0.254100 0.683900
+vn -0.620400 -0.479600 0.620400
+vn -0.325800 0.887500 0.325800
+vn 0.185700 0.964900 0.185700
+vn 0.325800 0.887500 0.325800
+vn 0.429700 0.794100 0.429700
+vn -0.429700 0.794100 0.429700
+vn 0.707100 0.000000 0.707100
+vn -0.429700 0.794100 -0.429700
+vn 0.531000 0.660300 -0.531000
+vn 0.683900 0.254100 -0.683900
+vn 0.707100 0.000000 -0.707100
+vn 0.620400 0.479600 -0.620400
+vn -0.620400 0.479600 -0.620400
+vn -0.620400 -0.479600 -0.620400
+vn -0.683900 -0.254000 -0.683900
+vn 0.683900 -0.254100 -0.683900
+vn -0.531000 0.660300 -0.531000
+vn 0.325800 -0.887500 -0.325800
+vn 0.429700 -0.794100 -0.429700
+vn 0.531000 -0.660300 -0.531000
+vn 0.620400 -0.479600 -0.620400
+vn 0.185700 -0.964900 -0.185700
+vn 0.185700 -0.964900 0.185700
+s 1
+f 30/1/1 32/2/2 26/3/3
+f 33/4/4 35/5/5 29/6/6
+f 12/7/7 17/8/8 49/9/9
+f 2/10/10 52/11/11 4/12/12
+f 6/13/13 48/14/14 43/15/15
+f 34/16/16 32/17/2 30/18/1
+f 2/19/10 9/20/17 10/21/18
+f 48/22/14 45/23/19 42/24/20
+f 5/25/21 45/23/19 6/26/13
+f 10/27/18 12/7/7 51/28/22
+f 19/29/23 27/30/24 13/31/25
+f 9/20/17 11/32/26 10/21/18
+f 11/32/26 14/33/27 12/34/7
+f 14/33/27 20/35/28 17/36/8
+f 20/35/28 23/37/29 21/38/30
+f 43/15/15 48/14/14 15/39/31
+f 7/25/32 16/23/33 45/40/19
+f 18/41/34 42/42/20 45/40/19
+f 29/6/6 30/1/1 26/3/3
+f 22/43/35 33/4/4 18/42/34
+f 26/3/3 32/2/2 8/44/36
+f 8/44/36 27/45/24 23/37/29
+f 11/32/26 12/34/7 10/21/18
+f 14/33/27 17/36/8 12/34/7
+f 20/35/28 21/38/30 17/36/8
+f 23/37/29 27/45/24 21/38/30
+f 10/27/18 52/11/11 2/10/10
+f 15/39/31 48/14/14 44/46/37
+f 22/43/35 35/5/5 33/4/4
+f 15/47/31 22/43/35 16/48/33
+f 37/49/38 42/42/20 18/41/34
+f 33/50/4 29/51/6 37/49/38
+f 8/29/36 25/3/39 26/16/3
+f 24/44/40 25/3/39 8/29/36
+f 29/51/6 26/16/3 31/52/41
+f 26/16/3 25/3/39 31/52/41
+f 29/51/6 31/52/41 37/49/38
+f 38/53/42 34/16/16 30/18/1
+f 19/29/23 32/17/2 34/16/16
+f 13/31/25 32/17/2 19/29/23
+f 17/8/8 21/54/30 46/55/43
+f 21/54/30 27/30/24 41/56/44
+f 8/29/36 28/37/45 24/44/40
+f 34/57/16 25/16/39 19/58/23
+f 38/59/42 31/51/41 34/57/16
+f 31/51/41 25/16/39 34/57/16
+f 37/60/38 38/59/42 39/61/46
+f 37/60/38 31/51/41 38/59/42
+f 44/62/37 42/24/20 37/60/38
+f 38/53/42 30/18/1 35/63/5
+f 39/64/46 35/63/5 22/65/35
+f 52/66/11 51/67/22 50/68/47
+f 51/67/22 47/69/48 50/68/47
+f 51/67/22 49/70/9 47/69/48
+f 49/70/9 40/71/49 47/69/48
+f 49/70/9 46/72/43 40/71/49
+f 46/72/43 36/73/50 40/71/49
+f 19/58/23 28/56/45 41/74/44
+f 46/72/43 41/74/44 36/73/50
+f 41/74/44 28/56/45 36/73/50
+f 22/43/35 18/42/34 16/48/33
+f 5/75/21 7/25/32 45/40/19
+f 2/76/10 4/77/12 1/78/51 3/79/52
+f 44/62/37 48/22/14 42/24/20
+f 35/5/5 30/1/1 29/6/6
+f 3/80/52 9/20/17 2/19/10
+f 45/23/19 48/22/14 6/26/13
+f 1/81/51 52/66/11 50/68/47
+f 39/61/46 44/62/37 37/60/38
+f 52/66/11 1/81/51 4/82/12
+f 24/29/40 28/56/45 19/58/23
+f 7/78/32 5/83/21 6/84/13 43/85/15
+f 24/29/40 19/58/23 25/16/39
+f 15/47/31 16/48/33 43/86/15
+f 22/65/35 44/46/37 39/64/46
+f 39/64/46 38/53/42 35/63/5
+f 41/56/44 27/30/24 19/29/23
+f 46/55/43 21/54/30 41/56/44
+f 49/9/9 17/8/8 46/55/43
+f 51/28/22 12/7/7 49/9/9
+f 52/11/11 10/27/18 51/28/22
+f 9/68/17 50/87/47 11/88/26
+f 50/87/47 47/32/48 11/88/26
+f 11/88/26 47/32/48 14/89/27
+f 47/32/48 40/90/49 14/89/27
+f 14/89/27 40/90/49 20/73/28
+f 40/90/49 36/91/50 20/73/28
+f 23/56/29 28/37/45 8/29/36
+f 20/73/28 36/91/50 23/56/29
+f 36/91/50 28/37/45 23/56/29
+f 13/92/25 8/44/36 32/2/2
+f 50/87/47 9/68/17 1/93/51
+f 13/92/25 27/45/24 8/44/36
+f 16/23/33 18/41/34 45/40/19
+f 22/65/35 15/39/31 44/46/37
+f 9/68/17 3/81/52 1/93/51
+f 33/50/4 37/49/38 18/41/34
+f 43/86/15 16/48/33 7/94/32
diff --git a/technic/technic/models/technic_one_curved_edge.obj b/technic/technic/models/technic_one_curved_edge.obj
new file mode 100644
index 0000000..bb82040
--- /dev/null
+++ b/technic/technic/models/technic_one_curved_edge.obj
@@ -0,0 +1,132 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_onetexture.blend'
+# www.blender.org
+o Cylinder
+v -0.500000 0.490393 -0.097545
+v 0.500000 0.490393 -0.097545
+v -0.500000 0.461940 -0.191342
+v 0.500000 0.461940 -0.191342
+v -0.500000 0.415735 -0.277785
+v 0.500000 0.415735 -0.277785
+v -0.500000 0.353553 -0.353553
+v 0.500000 0.353553 -0.353553
+v -0.500000 0.277785 -0.415735
+v 0.500000 0.277785 -0.415735
+v -0.500000 0.191342 -0.461940
+v 0.500000 0.191342 -0.461940
+v -0.500000 0.097545 -0.490393
+v 0.500000 0.097545 -0.490393
+v 0.500000 -0.000000 -0.500000
+v 0.500000 0.490393 -0.097545
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 0.500000 -0.000000
+v 0.500000 0.500000 0.000000
+v -0.500000 0.490393 -0.097545
+v -0.500000 0.461940 -0.191342
+v -0.500000 0.415735 -0.277785
+v -0.500000 0.353553 -0.353553
+v -0.500000 0.277785 -0.415735
+v -0.500000 0.191342 -0.461940
+v -0.500000 0.097545 -0.490393
+v -0.500000 0.000000 0.000000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 0.500000 -0.000000
+v 0.500000 0.461940 -0.191342
+v 0.500000 0.415735 -0.277785
+v 0.500000 0.353553 -0.353553
+v 0.500000 0.277785 -0.415735
+v 0.500000 0.191342 -0.461940
+v 0.500000 0.097545 -0.490393
+v 0.500000 -0.000000 -0.500000
+v 0.500000 -0.000000 -0.000000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.500000 0.000000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v 0.500000 0.500000 0.500000
+vt 1.000000 0.000000
+vt 1.000000 0.500000
+vt 0.500001 0.500000
+vt 0.500001 1.000000
+vt 0.000003 1.000000
+vt 0.000003 0.000000
+vt 0.597546 0.990393
+vt 0.691342 0.961940
+vt 1.000000 1.000000
+vt 0.990393 0.597545
+vt 0.961940 0.691341
+vt 0.777786 0.915735
+vt 0.853554 0.853553
+vt 0.915735 0.777785
+vt 0.146446 0.853552
+vt 0.084265 0.777783
+vt 0.038060 0.691340
+vt 0.308658 0.961938
+vt 0.222214 0.915733
+vt 0.000000 0.499999
+vt 0.402454 0.990391
+vt 0.009607 0.597544
+vt 1.000000 0.375000
+vt 0.000000 0.375000
+vt 0.000000 0.250000
+vt 1.000000 0.250000
+vt 0.000000 0.125000
+vt 1.000000 0.125000
+vt 0.000000 0.875000
+vt 1.000000 0.875000
+vt 0.000000 0.750000
+vt 1.000000 0.750000
+vt 0.000000 0.625000
+vt 1.000000 0.625000
+vn 1.000000 -0.000000 0.000000
+vn -0.000000 0.000000 1.000000
+vn -0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.980800 -0.195100
+vn 0.000000 0.923900 -0.382700
+vn -0.000000 0.831500 -0.555600
+vn -0.000000 0.707100 -0.707100
+vn -0.000000 0.555600 -0.831500
+vn -0.000000 0.382700 -0.923900
+vn -0.000000 0.195100 -0.980800
+vn 0.000000 1.000000 -0.000000
+vn 0.000000 0.998800 -0.049100
+vn -0.000000 0.049100 -0.998800
+vn -0.000000 0.000000 -1.000000
+s off
+f 46/1/1 44/2/1 45/3/1 49/4/1 48/5/1 47/6/1
+f 16/7/1 49/4/1 45/3/1 38/8/1
+f 55/5/2 53/6/2 54/1/2 56/9/2
+f 43/10/1 42/11/1 45/3/1 44/2/1
+f 39/12/1 38/8/1 45/3/1 40/13/1
+f 41/14/1 40/13/1 45/3/1 42/11/1
+f 50/9/3 51/5/3 52/6/3 17/1/3
+f 28/15/4 29/16/4 30/17/4 32/3/4
+f 26/18/4 27/19/4 28/15/4 32/3/4
+f 35/9/4 37/4/4 32/3/4 36/20/4 34/6/4 33/1/4
+f 37/4/4 25/21/4 26/18/4 32/3/4
+f 30/17/4 31/22/4 36/20/4 32/3/4
+s 1
+f 1/23/5 2/24/5 4/25/6 3/26/6
+f 3/26/6 4/25/6 6/27/7 5/28/7
+f 5/28/7 6/27/7 8/6/8 7/1/8
+f 7/9/8 8/5/8 10/29/9 9/30/9
+f 9/30/9 10/29/9 12/31/10 11/32/10
+f 11/32/10 12/31/10 14/33/11 13/34/11
+f 21/5/12 24/20/13 23/2/13 20/9/12
+f 13/34/11 14/33/11 15/20/14 22/2/14
+f 23/2/13 24/20/13 2/24/5 1/23/5
+f 18/1/15 22/2/14 15/20/14 19/6/15
diff --git a/technic/technic/models/technic_outercorner.obj b/technic/technic/models/technic_outercorner.obj
new file mode 100644
index 0000000..60ccae6
--- /dev/null
+++ b/technic/technic/models/technic_outercorner.obj
@@ -0,0 +1,23 @@
+# Blender v2.73 (sub 0) OBJ File: 'technic-ocorner.blend'
+# www.blender.org
+o Cube_Cube.002
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -1.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 -0.000000 0.000000
+vn -0.000000 0.707100 -0.707100
+vn 0.707100 0.707100 -0.000000
+s off
+f 3/1/1 2/2/1 4/3/1 5/4/1
+f 1/2/2 3/3/2 5/4/2
+f 1/1/3 2/3/3 3/4/3
+f 1/1/4 4/3/4 2/4/4
+f 1/2/5 5/3/5 4/4/5
diff --git a/technic/technic/models/technic_outercorner_upsdown.obj b/technic/technic/models/technic_outercorner_upsdown.obj
new file mode 100644
index 0000000..c89de8a
--- /dev/null
+++ b/technic/technic/models/technic_outercorner_upsdown.obj
@@ -0,0 +1,23 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend'
+# www.blender.org
+o Cube_Cube.002
+v -0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v 0.500000 0.500000 -0.500000
+v -0.500000 0.500000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 0.000000 1.000000 -0.000000
+vn -1.000000 0.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.707100 -0.707100 0.000000
+vn -0.000000 -0.707100 -0.707100
+s off
+f 3/1/1 2/2/1 4/3/1 5/4/1
+f 1/2/2 3/3/2 5/4/2
+f 1/1/3 2/3/3 3/4/3
+f 1/1/4 4/3/4 2/4/4
+f 1/2/5 5/3/5 4/4/5
diff --git a/technic/technic/models/technic_pyramid.obj b/technic/technic/models/technic_pyramid.obj
new file mode 100644
index 0000000..a618dcf
--- /dev/null
+++ b/technic/technic/models/technic_pyramid.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_short_onetexture.blend'
+# www.blender.org
+o Cube
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.000000 0.000000 -0.000000
+vt 1.000000 0.500000
+vt 0.000000 0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.500000 0.500000
+vn 0.000000 -1.000000 0.000000
+vn -0.707100 0.707100 -0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.707100 0.707100 0.000000
+vn -0.000000 0.707100 0.707100
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 3/4/2 5/5/2 4/3/2
+f 5/5/3 1/3/3 4/4/3
+f 1/4/4 5/5/4 2/3/4
+f 2/4/5 5/5/5 3/3/5
diff --git a/technic/technic/models/technic_pyramid_spike.obj b/technic/technic/models/technic_pyramid_spike.obj
new file mode 100644
index 0000000..b305af2
--- /dev/null
+++ b/technic/technic/models/technic_pyramid_spike.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend'
+# www.blender.org
+o Cube
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.000000 0.500000 -0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.500000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn -0.894400 0.447200 -0.000000
+vn 0.000000 0.447200 -0.894400
+vn 0.894400 0.447200 0.000000
+vn -0.000000 0.447200 0.894400
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 3/4/2 5/5/2 4/3/2
+f 5/5/3 1/3/3 4/4/3
+f 1/4/4 5/5/4 2/3/4
+f 2/4/5 5/5/5 3/3/5
diff --git a/technic/technic/models/technic_slope.obj b/technic/technic/models/technic_slope.obj
new file mode 100644
index 0000000..f6f4860
--- /dev/null
+++ b/technic/technic/models/technic_slope.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend'
+# www.blender.org
+o Cube_Cube.002
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vn 0.000000 -0.000000 1.000000
+vn 0.000000 -1.000000 -0.000000
+vn -1.000000 0.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.707100 -0.707100
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/3/2 3/4/2 5/1/2 6/2/2
+f 2/1/3 5/3/3 3/4/3
+f 1/2/4 4/3/4 6/4/4
+f 2/1/5 1/2/5 6/3/5 5/4/5
diff --git a/technic/technic/models/technic_slope_horizontal.obj b/technic/technic/models/technic_slope_horizontal.obj
new file mode 100644
index 0000000..4866a92
--- /dev/null
+++ b/technic/technic/models/technic_slope_horizontal.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'technic-slope-horizontal.blend'
+# www.blender.org
+o Cube_Cube.002
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vn 0.000000 -0.000000 1.000000
+vn 1.000000 -0.000000 -0.000000
+vn -0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 -0.000000
+vn -0.707100 0.000000 -0.707100
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/1/2 3/2/2 5/3/2 6/4/2
+f 2/3/3 5/1/3 3/2/3
+f 1/4/4 4/1/4 6/2/4
+f 2/3/5 1/4/5 6/1/5 5/2/5
diff --git a/technic/technic/models/technic_slope_upsdown.obj b/technic/technic/models/technic_slope_upsdown.obj
new file mode 100644
index 0000000..6880595
--- /dev/null
+++ b/technic/technic/models/technic_slope_upsdown.obj
@@ -0,0 +1,24 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend'
+# www.blender.org
+o Cube_Cube.002
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v 0.500000 0.500000 -0.500000
+v -0.500000 0.500000 -0.500000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 1.000000 -0.000000
+vn 1.000000 -0.000000 0.000000
+vn -1.000000 0.000000 -0.000000
+vn -0.000000 -0.707100 -0.707100
+s off
+f 1/1/1 2/2/1 3/3/1 4/4/1
+f 4/3/2 3/4/2 5/1/2 6/2/2
+f 2/1/3 5/3/3 3/4/3
+f 1/2/4 4/3/4 6/4/4
+f 2/1/5 1/2/5 6/3/5 5/4/5
diff --git a/technic/technic/models/technic_sphere.obj b/technic/technic/models/technic_sphere.obj
new file mode 100644
index 0000000..772b570
--- /dev/null
+++ b/technic/technic/models/technic_sphere.obj
@@ -0,0 +1,1927 @@
+# Blender v2.73 (sub 0) OBJ File: 'globe.blend'
+# www.blender.org
+o Sphere
+v -0.097545 0.490393 0.000000
+v -0.191342 0.461940 0.000000
+v -0.277785 0.415735 0.000000
+v -0.353553 0.353553 0.000000
+v -0.415735 0.277785 0.000000
+v -0.461940 0.191342 0.000000
+v -0.490393 0.097545 0.000000
+v -0.500000 0.000000 0.000000
+v -0.490393 -0.097545 0.000000
+v -0.461940 -0.191342 0.000000
+v -0.415735 -0.277785 0.000000
+v -0.353553 -0.353553 0.000000
+v -0.277785 -0.415735 0.000000
+v -0.191342 -0.461940 0.000000
+v -0.097545 -0.490393 0.000000
+v -0.095671 0.490393 -0.019030
+v -0.187665 0.461940 -0.037329
+v -0.272448 0.415735 -0.054193
+v -0.346760 0.353553 -0.068975
+v -0.407747 0.277785 -0.081106
+v -0.453064 0.191342 -0.090120
+v -0.480970 0.097545 -0.095671
+v -0.490393 0.000000 -0.097545
+v -0.480970 -0.097545 -0.095671
+v -0.453064 -0.191342 -0.090120
+v -0.407747 -0.277785 -0.081106
+v -0.346760 -0.353553 -0.068975
+v -0.272448 -0.415735 -0.054193
+v -0.187665 -0.461940 -0.037329
+v -0.095671 -0.490393 -0.019030
+v -0.090120 0.490393 -0.037329
+v -0.176777 0.461940 -0.073223
+v -0.256640 0.415735 -0.106304
+v -0.326641 0.353553 -0.135299
+v -0.384089 0.277785 -0.159095
+v -0.426777 0.191342 -0.176777
+v -0.453064 0.097545 -0.187665
+v -0.461940 0.000000 -0.191342
+v -0.453064 -0.097545 -0.187665
+v -0.426777 -0.191342 -0.176777
+v -0.384089 -0.277785 -0.159095
+v -0.326641 -0.353553 -0.135299
+v -0.256640 -0.415735 -0.106304
+v -0.176777 -0.461940 -0.073223
+v -0.090120 -0.490393 -0.037329
+v -0.081106 0.490393 -0.054193
+v -0.159095 0.461940 -0.106304
+v -0.230970 0.415735 -0.154329
+v -0.293969 0.353553 -0.196424
+v -0.345671 0.277785 -0.230970
+v -0.384089 0.191342 -0.256640
+v -0.407746 0.097545 -0.272448
+v -0.415735 0.000000 -0.277785
+v -0.407746 -0.097545 -0.272448
+v -0.384089 -0.191342 -0.256640
+v -0.345671 -0.277785 -0.230970
+v -0.293969 -0.353553 -0.196424
+v -0.230970 -0.415735 -0.154329
+v -0.159095 -0.461940 -0.106304
+v -0.081106 -0.490393 -0.054193
+v -0.068975 0.490393 -0.068975
+v -0.135299 0.461940 -0.135299
+v -0.196424 0.415735 -0.196424
+v -0.250000 0.353553 -0.250000
+v -0.293969 0.277785 -0.293969
+v -0.326641 0.191342 -0.326641
+v -0.346760 0.097545 -0.346760
+v -0.353553 0.000000 -0.353554
+v -0.346760 -0.097545 -0.346760
+v -0.326641 -0.191342 -0.326641
+v -0.293969 -0.277785 -0.293969
+v -0.250000 -0.353553 -0.250000
+v -0.196424 -0.415735 -0.196424
+v -0.135299 -0.461940 -0.135299
+v -0.068975 -0.490393 -0.068975
+v -0.054193 0.490393 -0.081106
+v -0.106304 0.461940 -0.159095
+v -0.154329 0.415735 -0.230970
+v -0.196424 0.353553 -0.293969
+v -0.230970 0.277785 -0.345671
+v -0.256640 0.191342 -0.384089
+v -0.272447 0.097545 -0.407747
+v -0.277785 0.000000 -0.415735
+v -0.272447 -0.097545 -0.407747
+v -0.256640 -0.191342 -0.384089
+v -0.230970 -0.277785 -0.345671
+v -0.196424 -0.353553 -0.293969
+v -0.154329 -0.415735 -0.230970
+v -0.106304 -0.461940 -0.159095
+v -0.054193 -0.490393 -0.081106
+v -0.037329 0.490393 -0.090120
+v -0.073223 0.461940 -0.176777
+v -0.106304 0.415735 -0.256640
+v -0.135299 0.353553 -0.326641
+v -0.159095 0.277785 -0.384089
+v -0.176777 0.191342 -0.426777
+v -0.187665 0.097545 -0.453064
+v -0.191342 0.000000 -0.461940
+v -0.187665 -0.097545 -0.453064
+v -0.176777 -0.191342 -0.426777
+v -0.159095 -0.277785 -0.384089
+v -0.135299 -0.353553 -0.326641
+v -0.106304 -0.415735 -0.256640
+v -0.073223 -0.461940 -0.176777
+v -0.037329 -0.490393 -0.090120
+v -0.019030 0.490393 -0.095671
+v -0.037329 0.461940 -0.187665
+v -0.054193 0.415735 -0.272448
+v -0.068975 0.353553 -0.346760
+v -0.081106 0.277785 -0.407747
+v -0.090120 0.191342 -0.453064
+v -0.095671 0.097545 -0.480970
+v -0.097545 0.000000 -0.490393
+v -0.095671 -0.097545 -0.480970
+v -0.090120 -0.191342 -0.453064
+v -0.081106 -0.277785 -0.407747
+v -0.068975 -0.353553 -0.346760
+v -0.054193 -0.415735 -0.272448
+v -0.037329 -0.461940 -0.187665
+v -0.019030 -0.490393 -0.095671
+v 0.000000 0.490393 -0.097545
+v 0.000000 0.461940 -0.191342
+v 0.000000 0.415735 -0.277785
+v 0.000000 0.353553 -0.353553
+v 0.000000 0.277785 -0.415735
+v 0.000000 0.191342 -0.461940
+v 0.000000 0.097545 -0.490393
+v 0.000000 0.000000 -0.500000
+v 0.000000 -0.097545 -0.490393
+v 0.000000 -0.191342 -0.461940
+v 0.000000 -0.277785 -0.415735
+v 0.000000 -0.353553 -0.353553
+v 0.000000 -0.415735 -0.277785
+v 0.000000 -0.461940 -0.191342
+v 0.000000 -0.490393 -0.097545
+v 0.019030 0.490393 -0.095671
+v 0.037329 0.461940 -0.187665
+v 0.054193 0.415735 -0.272448
+v 0.068975 0.353553 -0.346760
+v 0.081106 0.277785 -0.407747
+v 0.090120 0.191342 -0.453064
+v 0.095671 0.097545 -0.480970
+v 0.097545 0.000000 -0.490393
+v 0.095671 -0.097545 -0.480970
+v 0.090120 -0.191342 -0.453064
+v 0.081106 -0.277785 -0.407747
+v 0.068975 -0.353553 -0.346760
+v 0.054193 -0.415735 -0.272448
+v 0.037329 -0.461940 -0.187665
+v 0.019030 -0.490393 -0.095671
+v 0.037329 0.490393 -0.090120
+v 0.073224 0.461940 -0.176777
+v 0.106304 0.415735 -0.256640
+v 0.135299 0.353553 -0.326641
+v 0.159095 0.277785 -0.384089
+v 0.176777 0.191342 -0.426777
+v 0.187665 0.097545 -0.453064
+v 0.191342 0.000000 -0.461940
+v 0.187665 -0.097545 -0.453064
+v 0.176777 -0.191342 -0.426777
+v 0.159095 -0.277785 -0.384089
+v 0.135299 -0.353553 -0.326641
+v 0.106304 -0.415735 -0.256640
+v 0.073223 -0.461940 -0.176777
+v 0.037329 -0.490393 -0.090120
+v 0.054193 0.490393 -0.081106
+v 0.106304 0.461940 -0.159095
+v 0.154329 0.415735 -0.230970
+v 0.196424 0.353553 -0.293969
+v 0.230970 0.277785 -0.345671
+v 0.256640 0.191342 -0.384089
+v 0.272448 0.097545 -0.407747
+v 0.277785 0.000000 -0.415735
+v 0.272448 -0.097545 -0.407747
+v 0.256640 -0.191342 -0.384089
+v 0.230970 -0.277785 -0.345671
+v 0.196424 -0.353553 -0.293969
+v 0.154329 -0.415735 -0.230970
+v 0.106304 -0.461940 -0.159095
+v 0.054193 -0.490393 -0.081106
+v 0.068975 0.490393 -0.068975
+v 0.135299 0.461940 -0.135299
+v 0.196424 0.415735 -0.196424
+v 0.250000 0.353553 -0.250000
+v 0.293969 0.277785 -0.293969
+v 0.326641 0.191342 -0.326641
+v 0.346760 0.097545 -0.346760
+v 0.353554 0.000000 -0.353553
+v 0.346760 -0.097545 -0.346760
+v 0.326641 -0.191342 -0.326641
+v 0.293969 -0.277785 -0.293969
+v 0.250000 -0.353553 -0.250000
+v 0.196424 -0.415735 -0.196424
+v 0.135299 -0.461940 -0.135299
+v 0.068975 -0.490393 -0.068975
+v 0.081106 0.490393 -0.054193
+v 0.159095 0.461940 -0.106304
+v 0.230970 0.415735 -0.154329
+v 0.293969 0.353553 -0.196424
+v 0.345671 0.277785 -0.230970
+v 0.384089 0.191342 -0.256640
+v 0.407747 0.097545 -0.272447
+v 0.415735 0.000000 -0.277785
+v 0.407747 -0.097545 -0.272447
+v 0.384089 -0.191342 -0.256640
+v 0.345671 -0.277785 -0.230970
+v 0.293969 -0.353553 -0.196424
+v 0.230970 -0.415735 -0.154329
+v 0.159095 -0.461940 -0.106304
+v 0.081106 -0.490393 -0.054193
+v 0.090120 0.490393 -0.037329
+v 0.176777 0.461940 -0.073223
+v 0.256640 0.415735 -0.106304
+v 0.326641 0.353553 -0.135299
+v 0.384089 0.277785 -0.159095
+v 0.426777 0.191342 -0.176777
+v 0.453064 0.097545 -0.187665
+v 0.461940 0.000000 -0.191342
+v 0.453064 -0.097545 -0.187665
+v 0.426777 -0.191342 -0.176777
+v 0.384089 -0.277785 -0.159095
+v 0.326641 -0.353553 -0.135299
+v 0.256640 -0.415735 -0.106304
+v 0.176777 -0.461940 -0.073223
+v 0.090120 -0.490393 -0.037329
+v 0.095671 0.490393 -0.019030
+v 0.187665 0.461940 -0.037329
+v 0.272448 0.415735 -0.054193
+v 0.346760 0.353553 -0.068975
+v 0.407747 0.277785 -0.081106
+v 0.453064 0.191342 -0.090120
+v 0.480970 0.097545 -0.095671
+v 0.490393 0.000000 -0.097545
+v 0.480970 -0.097545 -0.095671
+v 0.453064 -0.191342 -0.090120
+v 0.407747 -0.277785 -0.081106
+v 0.346760 -0.353553 -0.068975
+v 0.272448 -0.415735 -0.054193
+v 0.187665 -0.461940 -0.037329
+v 0.095671 -0.490393 -0.019030
+v 0.097545 0.490393 0.000000
+v 0.191342 0.461940 -0.000000
+v 0.277785 0.415735 -0.000000
+v 0.353554 0.353553 0.000000
+v 0.415735 0.277785 0.000000
+v 0.461940 0.191342 -0.000000
+v 0.490393 0.097545 0.000000
+v 0.500000 0.000000 0.000000
+v 0.490393 -0.097545 0.000000
+v 0.461940 -0.191342 -0.000000
+v 0.415735 -0.277785 0.000000
+v 0.353554 -0.353553 0.000000
+v 0.277785 -0.415735 0.000000
+v 0.191342 -0.461940 -0.000000
+v 0.097545 -0.490393 -0.000000
+v 0.095671 0.490393 0.019030
+v 0.187665 0.461940 0.037329
+v 0.272448 0.415735 0.054193
+v 0.346760 0.353553 0.068975
+v 0.407747 0.277785 0.081106
+v 0.453064 0.191342 0.090120
+v 0.480970 0.097545 0.095671
+v 0.490393 0.000000 0.097545
+v 0.480970 -0.097545 0.095671
+v 0.453064 -0.191342 0.090120
+v 0.407747 -0.277785 0.081106
+v 0.346760 -0.353553 0.068975
+v 0.272448 -0.415735 0.054193
+v 0.187665 -0.461940 0.037329
+v 0.095671 -0.490393 0.019030
+v 0.090120 0.490393 0.037329
+v 0.176777 0.461940 0.073223
+v 0.256640 0.415735 0.106304
+v 0.326641 0.353553 0.135299
+v 0.384089 0.277785 0.159095
+v 0.426777 0.191342 0.176777
+v 0.453064 0.097545 0.187665
+v 0.461940 0.000000 0.191342
+v 0.453064 -0.097545 0.187665
+v 0.426777 -0.191342 0.176777
+v 0.384089 -0.277785 0.159095
+v 0.326641 -0.353553 0.135299
+v 0.256640 -0.415735 0.106304
+v 0.176777 -0.461940 0.073223
+v 0.090120 -0.490393 0.037329
+v 0.081106 0.490393 0.054193
+v 0.159095 0.461940 0.106304
+v 0.230970 0.415735 0.154329
+v 0.293969 0.353553 0.196424
+v 0.345671 0.277785 0.230970
+v 0.384089 0.191342 0.256640
+v 0.407747 0.097545 0.272448
+v 0.415735 0.000000 0.277785
+v 0.407747 -0.097545 0.272448
+v 0.384089 -0.191342 0.256640
+v 0.345671 -0.277785 0.230970
+v 0.293969 -0.353553 0.196424
+v 0.230970 -0.415735 0.154329
+v 0.159095 -0.461940 0.106304
+v 0.081106 -0.490393 0.054193
+v 0.068975 0.490393 0.068975
+v 0.135299 0.461940 0.135299
+v 0.196424 0.415735 0.196424
+v 0.250000 0.353553 0.250000
+v 0.293969 0.277785 0.293969
+v 0.326641 0.191342 0.326641
+v 0.346760 0.097545 0.346760
+v 0.353553 0.000000 0.353553
+v 0.346760 -0.097545 0.346760
+v 0.326641 -0.191342 0.326641
+v 0.293969 -0.277785 0.293969
+v 0.250000 -0.353553 0.250000
+v 0.196424 -0.415735 0.196424
+v 0.135299 -0.461940 0.135299
+v 0.068975 -0.490393 0.068975
+v 0.054193 0.490393 0.081106
+v 0.106304 0.461940 0.159095
+v 0.154329 0.415735 0.230970
+v 0.196424 0.353553 0.293969
+v 0.230970 0.277785 0.345671
+v 0.256640 0.191342 0.384089
+v 0.272448 0.097545 0.407746
+v 0.277785 0.000000 0.415735
+v 0.272448 -0.097545 0.407746
+v 0.256640 -0.191342 0.384089
+v 0.230970 -0.277785 0.345671
+v 0.196424 -0.353553 0.293969
+v 0.154329 -0.415735 0.230970
+v 0.106304 -0.461940 0.159095
+v 0.054193 -0.490393 0.081106
+v 0.037329 0.490393 0.090120
+v 0.073223 0.461940 0.176777
+v 0.106304 0.415735 0.256640
+v 0.135299 0.353553 0.326641
+v 0.159095 0.277785 0.384089
+v 0.176777 0.191342 0.426777
+v 0.187665 0.097545 0.453064
+v 0.191342 0.000000 0.461940
+v 0.187665 -0.097545 0.453064
+v 0.176777 -0.191342 0.426777
+v 0.159095 -0.277785 0.384089
+v 0.135299 -0.353553 0.326641
+v 0.106304 -0.415735 0.256640
+v 0.073223 -0.461940 0.176777
+v 0.037329 -0.490393 0.090120
+v 0.019030 0.490393 0.095671
+v 0.037329 0.461940 0.187665
+v 0.054193 0.415735 0.272448
+v 0.068975 0.353553 0.346760
+v 0.081106 0.277785 0.407746
+v 0.090120 0.191342 0.453064
+v 0.095671 0.097545 0.480970
+v 0.097545 0.000000 0.490393
+v 0.095671 -0.097545 0.480970
+v 0.090120 -0.191342 0.453064
+v 0.081106 -0.277785 0.407746
+v 0.068975 -0.353553 0.346760
+v 0.054193 -0.415735 0.272447
+v 0.037329 -0.461940 0.187665
+v 0.019030 -0.490393 0.095671
+v 0.000000 0.490393 0.097545
+v 0.000000 0.461940 0.191342
+v 0.000000 0.415735 0.277785
+v 0.000000 0.353553 0.353553
+v 0.000000 0.277785 0.415735
+v 0.000000 0.191342 0.461940
+v 0.000000 0.097545 0.490392
+v 0.000000 0.000000 0.500000
+v 0.000000 -0.097545 0.490392
+v 0.000000 -0.191342 0.461940
+v 0.000000 -0.277785 0.415735
+v 0.000000 -0.353553 0.353553
+v 0.000000 -0.415735 0.277785
+v 0.000000 -0.461940 0.191342
+v 0.000000 -0.490393 0.097545
+v -0.019030 0.490393 0.095671
+v -0.037329 0.461940 0.187665
+v -0.054193 0.415735 0.272448
+v -0.068975 0.353553 0.346760
+v -0.081106 0.277785 0.407746
+v -0.090120 0.191342 0.453064
+v -0.095671 0.097545 0.480970
+v -0.097545 0.000000 0.490393
+v -0.095671 -0.097545 0.480970
+v -0.090120 -0.191342 0.453064
+v -0.081106 -0.277785 0.407746
+v -0.068975 -0.353553 0.346760
+v -0.054193 -0.415735 0.272447
+v -0.037329 -0.461940 0.187665
+v -0.019030 -0.490393 0.095671
+v -0.037329 0.490393 0.090120
+v -0.073223 0.461940 0.176777
+v -0.106304 0.415735 0.256640
+v -0.135299 0.353553 0.326641
+v -0.159095 0.277785 0.384089
+v -0.176777 0.191342 0.426777
+v -0.187665 0.097545 0.453063
+v -0.191342 0.000000 0.461940
+v -0.187665 -0.097545 0.453063
+v -0.176777 -0.191342 0.426777
+v -0.159095 -0.277785 0.384089
+v -0.135299 -0.353553 0.326641
+v -0.106304 -0.415735 0.256640
+v -0.073223 -0.461940 0.176777
+v -0.037329 -0.490393 0.090120
+v -0.054193 0.490393 0.081106
+v -0.106304 0.461940 0.159095
+v -0.154329 0.415735 0.230970
+v -0.196424 0.353553 0.293969
+v -0.230970 0.277785 0.345671
+v -0.256640 0.191342 0.384089
+v -0.272447 0.097545 0.407746
+v -0.277785 0.000000 0.415735
+v -0.272447 -0.097545 0.407746
+v -0.256640 -0.191342 0.384089
+v -0.230970 -0.277785 0.345671
+v -0.196424 -0.353553 0.293969
+v -0.154329 -0.415735 0.230970
+v -0.106304 -0.461940 0.159095
+v -0.054193 -0.490393 0.081106
+v -0.068975 0.490393 0.068975
+v -0.135299 0.461940 0.135299
+v -0.196424 0.415735 0.196424
+v -0.250000 0.353553 0.250000
+v -0.293969 0.277785 0.293969
+v -0.326641 0.191342 0.326641
+v -0.346760 0.097545 0.346760
+v -0.353553 0.000000 0.353553
+v -0.346760 -0.097545 0.346760
+v -0.326641 -0.191342 0.326641
+v -0.293969 -0.277785 0.293969
+v -0.250000 -0.353553 0.250000
+v -0.196424 -0.415735 0.196424
+v -0.135299 -0.461940 0.135299
+v -0.068975 -0.490393 0.068975
+v -0.081106 0.490393 0.054193
+v -0.159095 0.461940 0.106304
+v -0.230970 0.415735 0.154329
+v -0.293969 0.353553 0.196424
+v -0.345671 0.277785 0.230970
+v -0.384089 0.191342 0.256640
+v -0.407746 0.097545 0.272447
+v -0.415735 0.000000 0.277785
+v -0.407746 -0.097545 0.272447
+v -0.384089 -0.191342 0.256640
+v -0.345671 -0.277785 0.230970
+v -0.293969 -0.353553 0.196424
+v -0.230970 -0.415735 0.154329
+v -0.159095 -0.461940 0.106304
+v -0.081106 -0.490393 0.054193
+v -0.090120 0.490393 0.037329
+v -0.176776 0.461940 0.073223
+v -0.256640 0.415735 0.106304
+v -0.326641 0.353553 0.135299
+v -0.384089 0.277785 0.159095
+v -0.426776 0.191342 0.176777
+v -0.453063 0.097545 0.187665
+v -0.461939 0.000000 0.191342
+v -0.453063 -0.097545 0.187665
+v -0.426776 -0.191342 0.176777
+v -0.384089 -0.277785 0.159095
+v -0.326641 -0.353553 0.135299
+v -0.256640 -0.415735 0.106304
+v -0.176776 -0.461940 0.073223
+v -0.090120 -0.490393 0.037329
+v -0.095671 0.490393 0.019030
+v -0.187665 0.461940 0.037329
+v -0.272447 0.415735 0.054193
+v -0.346760 0.353553 0.068975
+v -0.407746 0.277785 0.081106
+v -0.453063 0.191342 0.090120
+v -0.480969 0.097545 0.095671
+v -0.490392 0.000000 0.097545
+v -0.480969 -0.097545 0.095671
+v -0.453063 -0.191342 0.090120
+v -0.407746 -0.277785 0.081106
+v -0.346760 -0.353553 0.068975
+v -0.272447 -0.415735 0.054193
+v -0.187665 -0.461940 0.037329
+v -0.095671 -0.490393 0.019030
+v -0.013167 -0.495196 0.000000
+v -0.005039 0.495196 0.012165
+v -0.013167 0.495196 0.000000
+v -0.012914 0.495196 -0.002569
+v -0.012914 -0.495196 -0.002569
+v -0.012165 0.495196 -0.005039
+v -0.012165 -0.495196 -0.005039
+v -0.010948 0.495196 -0.007315
+v -0.010948 -0.495196 -0.007315
+v -0.009311 0.495196 -0.009311
+v -0.009311 -0.495196 -0.009311
+v -0.007315 0.495196 -0.010948
+v -0.007315 -0.495196 -0.010948
+v -0.005039 0.495196 -0.012165
+v -0.005039 -0.495196 -0.012165
+v -0.002569 0.495196 -0.012914
+v -0.002569 -0.495196 -0.012914
+v 0.000000 0.495196 -0.013167
+v 0.000000 -0.495196 -0.013167
+v 0.002569 0.495196 -0.012914
+v 0.002569 -0.495196 -0.012914
+v 0.005039 0.495196 -0.012165
+v 0.005039 -0.495196 -0.012165
+v 0.007316 0.495196 -0.010948
+v 0.007316 -0.495196 -0.010948
+v 0.009311 0.495196 -0.009311
+v 0.009311 -0.495196 -0.009311
+v 0.010948 0.495196 -0.007315
+v 0.010948 -0.495196 -0.007315
+v 0.012165 0.495196 -0.005039
+v 0.012165 -0.495196 -0.005039
+v 0.012915 0.495196 -0.002569
+v 0.012915 -0.495196 -0.002569
+v 0.013168 0.495196 0.000000
+v 0.013168 -0.495196 0.000000
+v 0.012915 0.495196 0.002569
+v 0.012915 -0.495196 0.002569
+v 0.012165 0.495196 0.005039
+v 0.012165 -0.495196 0.005039
+v 0.010948 0.495196 0.007315
+v 0.010948 -0.495196 0.007315
+v 0.009311 0.495196 0.009311
+v 0.009311 -0.495196 0.009311
+v 0.007316 0.495196 0.010948
+v 0.007316 -0.495196 0.010948
+v 0.005039 0.495196 0.012165
+v 0.005039 -0.495196 0.012165
+v 0.002569 0.495196 0.012914
+v 0.002569 -0.495196 0.012914
+v 0.000000 0.495196 0.013167
+v 0.000000 -0.495196 0.013167
+v -0.002569 0.495196 0.012914
+v -0.002569 -0.495196 0.012914
+v -0.005039 -0.495196 0.012165
+v -0.007315 0.495196 0.010948
+v -0.007315 -0.495196 0.010948
+v -0.009311 0.495196 0.009311
+v -0.009311 -0.495196 0.009311
+v -0.010948 0.495196 0.007315
+v -0.010948 -0.495196 0.007315
+v -0.012165 0.495196 0.005039
+v -0.012165 -0.495196 0.005039
+v -0.012914 0.495196 0.002569
+v -0.012914 -0.495196 0.002569
+vt 0.437500 0.750000
+vt 0.437500 0.812500
+vt 0.375000 0.812500
+vt 0.375000 0.750000
+vt 0.437500 0.062500
+vt 0.437500 0.125000
+vt 0.375000 0.125000
+vt 0.375000 0.062500
+vt 0.437500 0.875000
+vt 0.437500 0.937500
+vt 0.375000 0.937500
+vt 0.375000 0.875000
+vt 0.437500 0.187500
+vt 0.437500 0.250000
+vt 0.375000 0.250000
+vt 0.375000 0.187500
+vt 0.437500 0.312500
+vt 0.437500 0.375000
+vt 0.375000 0.375000
+vt 0.375000 0.312500
+vt 0.437500 0.437500
+vt 0.437500 0.500000
+vt 0.375000 0.500000
+vt 0.375000 0.437500
+vt 0.437500 0.562500
+vt 0.437500 0.625000
+vt 0.375000 0.625000
+vt 0.375000 0.562500
+vt 0.437500 0.687500
+vt 0.375000 0.687500
+vt 0.312500 0.437500
+vt 0.312500 0.375000
+vt 0.312500 0.562500
+vt 0.312500 0.500000
+vt 0.312500 0.687500
+vt 0.312500 0.625000
+vt 0.312500 0.812500
+vt 0.312500 0.750000
+vt 0.312500 0.125000
+vt 0.312500 0.062500
+vt 0.312500 0.937500
+vt 0.312500 0.875000
+vt 0.312500 0.250000
+vt 0.312500 0.187500
+vt 0.312500 0.312500
+vt 0.250000 0.437500
+vt 0.250000 0.375000
+vt 0.250000 0.562500
+vt 0.250000 0.500000
+vt 0.250000 0.687500
+vt 0.250000 0.625000
+vt 0.250000 0.812500
+vt 0.250000 0.750000
+vt 0.250000 0.125000
+vt 0.250000 0.062500
+vt 0.250000 0.937500
+vt 0.250000 0.875000
+vt 0.250000 0.250000
+vt 0.250000 0.187500
+vt 0.250000 0.312500
+vt 0.187500 0.437500
+vt 0.187500 0.375000
+vt 0.187500 0.562500
+vt 0.187500 0.500000
+vt 0.187500 0.687500
+vt 0.187500 0.625000
+vt 0.187500 0.812500
+vt 0.187500 0.750000
+vt 0.187500 0.125000
+vt 0.187500 0.062500
+vt 0.187500 0.937500
+vt 0.187500 0.875000
+vt 0.187500 0.250000
+vt 0.187500 0.187500
+vt 0.187500 0.312500
+vt 0.125000 0.437500
+vt 0.125000 0.375000
+vt 0.125000 0.562500
+vt 0.125000 0.500000
+vt 0.125000 0.687500
+vt 0.125000 0.625000
+vt 0.125000 0.812500
+vt 0.125000 0.750000
+vt 0.125000 0.125000
+vt 0.125000 0.062500
+vt 0.125000 0.937500
+vt 0.125000 0.875000
+vt 0.125000 0.250000
+vt 0.125000 0.187500
+vt 0.125000 0.312500
+vt 0.062500 0.437500
+vt 0.062500 0.375000
+vt 0.062500 0.562500
+vt 0.062500 0.500000
+vt 0.062500 0.687500
+vt 0.062500 0.625000
+vt 0.062500 0.812500
+vt 0.062500 0.750000
+vt 0.062500 0.125000
+vt 0.062500 0.062500
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.062500 0.250000
+vt 0.062500 0.187500
+vt 0.062500 0.312500
+vt 0.000000 0.437500
+vt 0.000000 0.375000
+vt 0.000000 0.562500
+vt 0.000000 0.500000
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.000000 0.125000
+vt 0.000000 0.062500
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+vt 0.000000 0.250000
+vt 0.000000 0.187500
+vt 0.000000 0.312500
+vt 1.000000 0.375000
+vt 1.000000 0.437500
+vt 0.937500 0.437500
+vt 0.937500 0.375000
+vt 1.000000 0.500000
+vt 1.000000 0.562500
+vt 0.937500 0.562500
+vt 0.937500 0.500000
+vt 1.000000 0.625000
+vt 1.000000 0.687500
+vt 0.937500 0.687500
+vt 0.937500 0.625000
+vt 1.000000 0.750000
+vt 1.000000 0.812500
+vt 0.937500 0.812500
+vt 0.937500 0.750000
+vt 1.000000 0.062500
+vt 1.000000 0.125000
+vt 0.937500 0.125000
+vt 0.937500 0.062500
+vt 1.000000 0.875000
+vt 1.000000 0.937500
+vt 0.937500 0.937500
+vt 0.937500 0.875000
+vt 1.000000 0.187500
+vt 1.000000 0.250000
+vt 0.937500 0.250000
+vt 0.937500 0.187500
+vt 1.000000 0.312500
+vt 0.937500 0.312500
+vt 0.875000 0.437500
+vt 0.875000 0.375000
+vt 0.875000 0.562500
+vt 0.875000 0.500000
+vt 0.875000 0.687500
+vt 0.875000 0.625000
+vt 0.875000 0.812500
+vt 0.875000 0.750000
+vt 0.875000 0.125000
+vt 0.875000 0.062500
+vt 0.875000 0.937500
+vt 0.875000 0.875000
+vt 0.875000 0.250000
+vt 0.875000 0.187500
+vt 0.875000 0.312500
+vt 0.812500 0.437500
+vt 0.812500 0.375000
+vt 0.812500 0.562500
+vt 0.812500 0.500000
+vt 0.812500 0.687500
+vt 0.812500 0.625000
+vt 0.812500 0.812500
+vt 0.812500 0.750000
+vt 0.812500 0.125000
+vt 0.812500 0.062500
+vt 0.812500 0.937500
+vt 0.812500 0.875000
+vt 0.812500 0.250000
+vt 0.812500 0.187500
+vt 0.812500 0.312500
+vt 0.750000 0.437500
+vt 0.750000 0.375000
+vt 0.750000 0.562500
+vt 0.750000 0.500000
+vt 0.750000 0.687500
+vt 0.750000 0.625000
+vt 0.750000 0.812500
+vt 0.750000 0.750000
+vt 0.750000 0.125000
+vt 0.750000 0.062500
+vt 0.750000 0.937500
+vt 0.750000 0.875000
+vt 0.750000 0.250000
+vt 0.750000 0.187500
+vt 0.750000 0.312500
+vt 0.687500 0.437500
+vt 0.687500 0.375000
+vt 0.687500 0.562500
+vt 0.687500 0.500000
+vt 0.687500 0.687500
+vt 0.687500 0.625000
+vt 0.687500 0.812500
+vt 0.687500 0.750000
+vt 0.687500 0.125000
+vt 0.687500 0.062500
+vt 0.687500 0.937500
+vt 0.687500 0.875000
+vt 0.687500 0.250000
+vt 0.687500 0.187500
+vt 0.687500 0.312500
+vt 0.625000 0.437500
+vt 0.625000 0.375000
+vt 0.625000 0.562500
+vt 0.625000 0.500000
+vt 0.625000 0.687500
+vt 0.625000 0.625000
+vt 0.625000 0.812500
+vt 0.625000 0.750000
+vt 0.625000 0.125000
+vt 0.625000 0.062500
+vt 0.625000 0.937500
+vt 0.625000 0.875000
+vt 0.625000 0.250000
+vt 0.625000 0.187500
+vt 0.625000 0.312500
+vt 0.562500 0.437500
+vt 0.562500 0.375000
+vt 0.562500 0.562500
+vt 0.562500 0.500000
+vt 0.562500 0.687500
+vt 0.562500 0.625000
+vt 0.562500 0.812500
+vt 0.562500 0.750000
+vt 0.562500 0.125000
+vt 0.562500 0.062500
+vt 0.562500 0.937500
+vt 0.562500 0.875000
+vt 0.562500 0.250000
+vt 0.562500 0.187500
+vt 0.562500 0.312500
+vt 0.500000 0.437500
+vt 0.500000 0.375000
+vt 0.500000 0.562500
+vt 0.500000 0.500000
+vt 0.500000 0.687500
+vt 0.500000 0.625000
+vt 0.500000 0.812500
+vt 0.500000 0.750000
+vt 0.500000 0.125000
+vt 0.500000 0.062500
+vt 0.500000 0.937500
+vt 0.500000 0.875000
+vt 0.500000 0.250000
+vt 0.500000 0.187500
+vt 0.500000 0.312500
+vt 0.437500 0.000000
+vt 0.375000 0.000000
+vt 0.312500 0.000000
+vt 0.250000 0.000000
+vt 0.187500 0.000000
+vt 0.125000 0.000000
+vt 0.062500 0.000000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 0.937500 0.000000
+vt 0.875000 0.000000
+vt 0.812500 0.000000
+vt 0.750000 0.000000
+vt 0.687500 0.000000
+vt 0.625000 0.000000
+vt 0.562500 0.000000
+vt 0.500000 0.000000
+vt 0.500000 1.000000
+vt 0.437500 1.000000
+vt 0.562500 1.000000
+vt 0.625000 1.000000
+vt 0.687500 1.000000
+vt 0.750000 1.000000
+vt 0.812500 1.000000
+vt 0.875000 1.000000
+vt 0.937500 1.000000
+vt 1.000000 1.000000
+vt 0.062500 1.000000
+vt -0.000000 1.000000
+vt 0.125000 1.000000
+vt 0.187500 1.000000
+vt 0.250000 1.000000
+vt 0.312500 1.000000
+vt 0.375000 1.000000
+vt 0.031303 0.999906
+vt 0.037377 0.999307
+vt 0.043218 0.997535
+vt 0.048601 0.994658
+vt 0.053319 0.990786
+vt 0.057192 0.986068
+vt 0.060069 0.980685
+vt 0.061841 0.974844
+vt 0.062439 0.968769
+vt 0.061841 0.962695
+vt 0.060069 0.956854
+vt 0.057192 0.951471
+vt 0.053319 0.946753
+vt 0.048601 0.942881
+vt 0.043218 0.940004
+vt 0.037377 0.938232
+vt 0.031303 0.937633
+vt 0.025229 0.938232
+vt 0.019388 0.940004
+vt 0.014005 0.942881
+vt 0.009286 0.946753
+vt 0.005414 0.951471
+vt 0.002537 0.956854
+vt 0.000765 0.962695
+vt 0.000167 0.968770
+vt 0.000765 0.974844
+vt 0.002537 0.980685
+vt 0.005414 0.986068
+vt 0.009286 0.990786
+vt 0.014005 0.994658
+vt 0.019388 0.997535
+vt 0.025229 0.999307
+vn -0.710100 0.704000 0.000000
+vn -0.559800 0.828600 0.000000
+vn -0.549000 0.828600 -0.109200
+vn -0.696500 0.704000 -0.138500
+vn -0.182000 -0.983300 0.000000
+vn -0.387900 -0.921700 0.000000
+vn -0.380400 -0.921700 -0.075700
+vn -0.178400 -0.983300 -0.035500
+vn -0.387900 0.921700 0.000000
+vn -0.182000 0.983300 0.000000
+vn -0.178400 0.983300 -0.035500
+vn -0.380400 0.921700 -0.075700
+vn -0.559800 -0.828600 0.000000
+vn -0.710100 -0.704000 0.000000
+vn -0.696500 -0.704000 -0.138500
+vn -0.549000 -0.828600 -0.109200
+vn -0.833300 -0.552800 0.000000
+vn -0.924700 -0.380500 0.000000
+vn -0.907000 -0.380500 -0.180400
+vn -0.817300 -0.552800 -0.162600
+vn -0.981000 -0.193900 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.980800 0.000000 -0.195100
+vn -0.962200 -0.193900 -0.191400
+vn -0.981000 0.193900 0.000000
+vn -0.924700 0.380500 0.000000
+vn -0.907000 0.380500 -0.180400
+vn -0.962200 0.193900 -0.191400
+vn -0.833300 0.552800 0.000000
+vn -0.817300 0.552800 -0.162600
+vn -0.906300 -0.193900 -0.375400
+vn -0.854400 -0.380500 -0.353900
+vn -0.906300 0.193900 -0.375400
+vn -0.923900 0.000000 -0.382700
+vn -0.769900 0.552800 -0.318900
+vn -0.854400 0.380500 -0.353900
+vn -0.517100 0.828600 -0.214200
+vn -0.656100 0.704000 -0.271700
+vn -0.358300 -0.921700 -0.148400
+vn -0.168100 -0.983300 -0.069600
+vn -0.168100 0.983300 -0.069600
+vn -0.358300 0.921700 -0.148400
+vn -0.656100 -0.704000 -0.271700
+vn -0.517100 -0.828600 -0.214200
+vn -0.769900 -0.552800 -0.318900
+vn -0.815700 -0.193900 -0.545000
+vn -0.768900 -0.380500 -0.513700
+vn -0.815700 0.193900 -0.545000
+vn -0.831400 0.000000 -0.555600
+vn -0.692900 0.552800 -0.463000
+vn -0.768900 0.380500 -0.513700
+vn -0.465400 0.828600 -0.311000
+vn -0.590400 0.704000 -0.394500
+vn -0.322500 -0.921700 -0.215500
+vn -0.151300 -0.983300 -0.101100
+vn -0.151300 0.983300 -0.101100
+vn -0.322500 0.921700 -0.215500
+vn -0.590400 -0.704000 -0.394500
+vn -0.465400 -0.828600 -0.311000
+vn -0.692900 -0.552800 -0.463000
+vn -0.693700 -0.193900 -0.693700
+vn -0.653900 -0.380500 -0.653900
+vn -0.693700 0.193900 -0.693700
+vn -0.707100 0.000000 -0.707100
+vn -0.589300 0.552800 -0.589300
+vn -0.653900 0.380500 -0.653900
+vn -0.395800 0.828600 -0.395800
+vn -0.502100 0.704000 -0.502100
+vn -0.274300 -0.921700 -0.274300
+vn -0.128600 -0.983300 -0.128600
+vn -0.128600 0.983300 -0.128600
+vn -0.274300 0.921700 -0.274300
+vn -0.502100 -0.704000 -0.502100
+vn -0.395800 -0.828600 -0.395800
+vn -0.589300 -0.552800 -0.589300
+vn -0.545000 -0.193900 -0.815700
+vn -0.513700 -0.380500 -0.768900
+vn -0.545000 0.193900 -0.815700
+vn -0.555600 0.000000 -0.831400
+vn -0.463000 0.552800 -0.692900
+vn -0.513700 0.380500 -0.768900
+vn -0.311000 0.828600 -0.465400
+vn -0.394500 0.704000 -0.590400
+vn -0.215500 -0.921700 -0.322500
+vn -0.101100 -0.983300 -0.151300
+vn -0.101100 0.983300 -0.151300
+vn -0.215500 0.921700 -0.322500
+vn -0.394500 -0.704000 -0.590400
+vn -0.311000 -0.828600 -0.465400
+vn -0.463000 -0.552800 -0.692900
+vn -0.375400 -0.193900 -0.906300
+vn -0.353900 -0.380500 -0.854400
+vn -0.375400 0.193900 -0.906300
+vn -0.382700 0.000000 -0.923900
+vn -0.318900 0.552800 -0.769900
+vn -0.353900 0.380500 -0.854400
+vn -0.214200 0.828600 -0.517100
+vn -0.271700 0.704000 -0.656100
+vn -0.148400 -0.921700 -0.358300
+vn -0.069600 -0.983300 -0.168100
+vn -0.069600 0.983300 -0.168100
+vn -0.148400 0.921700 -0.358300
+vn -0.271700 -0.704000 -0.656100
+vn -0.214200 -0.828600 -0.517100
+vn -0.318900 -0.552800 -0.769900
+vn -0.191400 -0.193900 -0.962200
+vn -0.180400 -0.380500 -0.907000
+vn -0.191400 0.193900 -0.962200
+vn -0.195100 0.000000 -0.980800
+vn -0.162600 0.552800 -0.817300
+vn -0.180400 0.380500 -0.907000
+vn -0.109200 0.828600 -0.549000
+vn -0.138500 0.704000 -0.696500
+vn -0.075700 -0.921700 -0.380400
+vn -0.035500 -0.983300 -0.178400
+vn -0.035500 0.983300 -0.178400
+vn -0.075700 0.921700 -0.380400
+vn -0.138500 -0.704000 -0.696500
+vn -0.109200 -0.828600 -0.549000
+vn -0.162600 -0.552800 -0.817300
+vn 0.000000 -0.193900 -0.981000
+vn 0.000000 -0.380500 -0.924700
+vn 0.000000 0.193900 -0.981000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.552800 -0.833300
+vn 0.000000 0.380500 -0.924700
+vn 0.000000 0.828600 -0.559800
+vn 0.000000 0.704000 -0.710100
+vn 0.000000 -0.921700 -0.387900
+vn 0.000000 -0.983300 -0.182000
+vn 0.000000 0.983300 -0.182000
+vn 0.000000 0.921700 -0.387900
+vn 0.000000 -0.704000 -0.710100
+vn 0.000000 -0.828600 -0.559800
+vn 0.000000 -0.552800 -0.833300
+vn 0.191400 -0.193900 -0.962200
+vn 0.180400 -0.380500 -0.907000
+vn 0.191400 0.193900 -0.962200
+vn 0.195100 0.000000 -0.980800
+vn 0.162600 0.552800 -0.817300
+vn 0.180400 0.380500 -0.907000
+vn 0.109200 0.828600 -0.549000
+vn 0.138500 0.704000 -0.696500
+vn 0.075700 -0.921700 -0.380400
+vn 0.035500 -0.983300 -0.178400
+vn 0.035500 0.983300 -0.178400
+vn 0.075700 0.921700 -0.380400
+vn 0.138500 -0.704000 -0.696500
+vn 0.109200 -0.828600 -0.549000
+vn 0.162600 -0.552800 -0.817300
+vn 0.375400 -0.193900 -0.906300
+vn 0.353900 -0.380500 -0.854400
+vn 0.375400 0.193900 -0.906300
+vn 0.382700 0.000000 -0.923900
+vn 0.318900 0.552800 -0.769900
+vn 0.353900 0.380500 -0.854400
+vn 0.214200 0.828600 -0.517100
+vn 0.271700 0.704000 -0.656100
+vn 0.148400 -0.921700 -0.358300
+vn 0.069600 -0.983300 -0.168100
+vn 0.069600 0.983300 -0.168100
+vn 0.148400 0.921700 -0.358300
+vn 0.271700 -0.704000 -0.656100
+vn 0.214200 -0.828600 -0.517100
+vn 0.318900 -0.552800 -0.769900
+vn 0.545000 -0.193900 -0.815700
+vn 0.513700 -0.380500 -0.768900
+vn 0.545000 0.193900 -0.815700
+vn 0.555600 0.000000 -0.831400
+vn 0.463000 0.552800 -0.692900
+vn 0.513700 0.380500 -0.768900
+vn 0.311000 0.828600 -0.465400
+vn 0.394500 0.704000 -0.590400
+vn 0.215500 -0.921700 -0.322500
+vn 0.101100 -0.983300 -0.151300
+vn 0.101100 0.983300 -0.151300
+vn 0.215500 0.921700 -0.322500
+vn 0.394500 -0.704000 -0.590400
+vn 0.311000 -0.828600 -0.465400
+vn 0.463000 -0.552800 -0.692900
+vn 0.693700 -0.193900 -0.693700
+vn 0.653900 -0.380500 -0.653900
+vn 0.693700 0.193900 -0.693700
+vn 0.707100 0.000000 -0.707100
+vn 0.589300 0.552800 -0.589300
+vn 0.653900 0.380500 -0.653900
+vn 0.395800 0.828600 -0.395800
+vn 0.502100 0.704000 -0.502100
+vn 0.274300 -0.921700 -0.274300
+vn 0.128600 -0.983300 -0.128600
+vn 0.128600 0.983300 -0.128600
+vn 0.274300 0.921700 -0.274300
+vn 0.502100 -0.704000 -0.502100
+vn 0.395800 -0.828600 -0.395800
+vn 0.589300 -0.552800 -0.589300
+vn 0.815700 -0.193900 -0.545000
+vn 0.768900 -0.380500 -0.513700
+vn 0.815700 0.193900 -0.545000
+vn 0.831400 0.000000 -0.555600
+vn 0.692900 0.552800 -0.463000
+vn 0.768900 0.380500 -0.513700
+vn 0.465400 0.828600 -0.311000
+vn 0.590400 0.704000 -0.394500
+vn 0.322500 -0.921700 -0.215500
+vn 0.151300 -0.983300 -0.101100
+vn 0.151300 0.983300 -0.101100
+vn 0.322500 0.921700 -0.215500
+vn 0.590400 -0.704000 -0.394500
+vn 0.465400 -0.828600 -0.311000
+vn 0.692900 -0.552800 -0.463000
+vn 0.906300 -0.193900 -0.375400
+vn 0.854400 -0.380500 -0.353900
+vn 0.906300 0.193900 -0.375400
+vn 0.923900 0.000000 -0.382700
+vn 0.769900 0.552800 -0.318900
+vn 0.854400 0.380500 -0.353900
+vn 0.517100 0.828600 -0.214200
+vn 0.656100 0.704000 -0.271700
+vn 0.358300 -0.921700 -0.148400
+vn 0.168100 -0.983300 -0.069600
+vn 0.168100 0.983300 -0.069600
+vn 0.358300 0.921700 -0.148400
+vn 0.656100 -0.704000 -0.271700
+vn 0.517100 -0.828600 -0.214200
+vn 0.769900 -0.552800 -0.318900
+vn 0.962200 -0.193900 -0.191400
+vn 0.907000 -0.380500 -0.180400
+vn 0.962200 0.193900 -0.191400
+vn 0.980800 0.000000 -0.195100
+vn 0.817300 0.552800 -0.162600
+vn 0.907000 0.380500 -0.180400
+vn 0.549000 0.828600 -0.109200
+vn 0.696500 0.704000 -0.138500
+vn 0.380400 -0.921700 -0.075700
+vn 0.178400 -0.983300 -0.035500
+vn 0.178400 0.983300 -0.035500
+vn 0.380400 0.921700 -0.075700
+vn 0.696500 -0.704000 -0.138500
+vn 0.549000 -0.828600 -0.109200
+vn 0.817300 -0.552800 -0.162600
+vn 0.981000 -0.193900 0.000000
+vn 0.924700 -0.380500 0.000000
+vn 0.981000 0.193900 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.833300 0.552800 0.000000
+vn 0.924700 0.380500 0.000000
+vn 0.559800 0.828600 0.000000
+vn 0.710100 0.704000 0.000000
+vn 0.387900 -0.921700 0.000000
+vn 0.182000 -0.983300 0.000000
+vn 0.182000 0.983300 0.000000
+vn 0.387900 0.921700 0.000000
+vn 0.710100 -0.704000 0.000000
+vn 0.559800 -0.828600 0.000000
+vn 0.833300 -0.552800 0.000000
+vn 0.962200 -0.193900 0.191400
+vn 0.907000 -0.380500 0.180400
+vn 0.962200 0.193900 0.191400
+vn 0.980800 0.000000 0.195100
+vn 0.817300 0.552800 0.162600
+vn 0.907000 0.380500 0.180400
+vn 0.549000 0.828600 0.109200
+vn 0.696500 0.704000 0.138500
+vn 0.380400 -0.921700 0.075700
+vn 0.178400 -0.983300 0.035500
+vn 0.178400 0.983300 0.035500
+vn 0.380400 0.921700 0.075700
+vn 0.696500 -0.704000 0.138500
+vn 0.549000 -0.828600 0.109200
+vn 0.817300 -0.552800 0.162600
+vn 0.906300 -0.193900 0.375400
+vn 0.854400 -0.380500 0.353900
+vn 0.906300 0.193900 0.375400
+vn 0.923900 0.000000 0.382700
+vn 0.769900 0.552800 0.318900
+vn 0.854400 0.380500 0.353900
+vn 0.517100 0.828600 0.214200
+vn 0.656100 0.704000 0.271700
+vn 0.358300 -0.921700 0.148400
+vn 0.168100 -0.983300 0.069600
+vn 0.168100 0.983300 0.069600
+vn 0.358300 0.921700 0.148400
+vn 0.656100 -0.704000 0.271700
+vn 0.517100 -0.828600 0.214200
+vn 0.769900 -0.552800 0.318900
+vn 0.815700 -0.193900 0.545000
+vn 0.768900 -0.380500 0.513700
+vn 0.815700 0.193900 0.545000
+vn 0.831400 0.000000 0.555600
+vn 0.692900 0.552800 0.463000
+vn 0.768900 0.380500 0.513700
+vn 0.465400 0.828600 0.311000
+vn 0.590400 0.704000 0.394500
+vn 0.322500 -0.921700 0.215500
+vn 0.151300 -0.983300 0.101100
+vn 0.151300 0.983300 0.101100
+vn 0.322500 0.921700 0.215500
+vn 0.590400 -0.704000 0.394500
+vn 0.465400 -0.828600 0.311000
+vn 0.692900 -0.552800 0.463000
+vn 0.693700 -0.193900 0.693700
+vn 0.653900 -0.380500 0.653900
+vn 0.693700 0.193900 0.693700
+vn 0.707100 0.000000 0.707100
+vn 0.589300 0.552800 0.589300
+vn 0.653900 0.380500 0.653900
+vn 0.395800 0.828600 0.395800
+vn 0.502100 0.704000 0.502100
+vn 0.274300 -0.921700 0.274300
+vn 0.128600 -0.983300 0.128600
+vn 0.128600 0.983300 0.128600
+vn 0.274300 0.921700 0.274300
+vn 0.502100 -0.704000 0.502100
+vn 0.395800 -0.828600 0.395800
+vn 0.589300 -0.552800 0.589300
+vn 0.545000 -0.193900 0.815700
+vn 0.513700 -0.380500 0.768900
+vn 0.545000 0.193900 0.815700
+vn 0.555600 0.000000 0.831400
+vn 0.463000 0.552800 0.692900
+vn 0.513700 0.380500 0.768900
+vn 0.311000 0.828600 0.465400
+vn 0.394500 0.704000 0.590400
+vn 0.215500 -0.921700 0.322500
+vn 0.101100 -0.983300 0.151300
+vn 0.101100 0.983300 0.151300
+vn 0.215500 0.921700 0.322500
+vn 0.394500 -0.704000 0.590400
+vn 0.311000 -0.828600 0.465400
+vn 0.463000 -0.552800 0.692900
+vn 0.375400 -0.193900 0.906300
+vn 0.353900 -0.380500 0.854400
+vn 0.375400 0.193900 0.906300
+vn 0.382700 0.000000 0.923900
+vn 0.318900 0.552800 0.769900
+vn 0.353900 0.380500 0.854400
+vn 0.214200 0.828600 0.517100
+vn 0.271700 0.704000 0.656100
+vn 0.148400 -0.921700 0.358300
+vn 0.069600 -0.983300 0.168100
+vn 0.069600 0.983300 0.168100
+vn 0.148400 0.921700 0.358300
+vn 0.271700 -0.704000 0.656100
+vn 0.214200 -0.828600 0.517100
+vn 0.318900 -0.552800 0.769900
+vn 0.191400 -0.193900 0.962200
+vn 0.180400 -0.380500 0.907000
+vn 0.191400 0.193900 0.962200
+vn 0.195100 0.000000 0.980800
+vn 0.162600 0.552800 0.817300
+vn 0.180400 0.380500 0.907000
+vn 0.109200 0.828600 0.549000
+vn 0.138500 0.704000 0.696500
+vn 0.075700 -0.921700 0.380400
+vn 0.035500 -0.983300 0.178400
+vn 0.035500 0.983300 0.178400
+vn 0.075700 0.921700 0.380400
+vn 0.138500 -0.704000 0.696500
+vn 0.109200 -0.828600 0.549000
+vn 0.162600 -0.552800 0.817300
+vn 0.000000 -0.193900 0.981000
+vn 0.000000 -0.380500 0.924700
+vn 0.000000 0.193900 0.981000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 0.552800 0.833300
+vn 0.000000 0.380500 0.924700
+vn 0.000000 0.828600 0.559800
+vn 0.000000 0.704000 0.710100
+vn 0.000000 -0.921700 0.387900
+vn 0.000000 -0.983300 0.182000
+vn 0.000000 0.983300 0.182000
+vn 0.000000 0.921700 0.387900
+vn 0.000000 -0.704000 0.710100
+vn 0.000000 -0.828600 0.559800
+vn 0.000000 -0.552800 0.833300
+vn -0.191400 -0.193900 0.962200
+vn -0.180400 -0.380500 0.907000
+vn -0.191400 0.193900 0.962200
+vn -0.195100 0.000000 0.980800
+vn -0.162600 0.552800 0.817300
+vn -0.180400 0.380500 0.907000
+vn -0.109200 0.828600 0.549000
+vn -0.138500 0.704000 0.696500
+vn -0.075700 -0.921700 0.380400
+vn -0.035500 -0.983300 0.178400
+vn -0.035500 0.983300 0.178400
+vn -0.075700 0.921700 0.380400
+vn -0.138500 -0.704000 0.696500
+vn -0.109200 -0.828600 0.549000
+vn -0.162600 -0.552800 0.817300
+vn -0.375400 -0.193900 0.906300
+vn -0.353900 -0.380500 0.854400
+vn -0.375400 0.193900 0.906300
+vn -0.382700 0.000000 0.923900
+vn -0.318900 0.552800 0.769900
+vn -0.353900 0.380500 0.854400
+vn -0.214200 0.828600 0.517100
+vn -0.271700 0.704000 0.656100
+vn -0.148400 -0.921700 0.358300
+vn -0.069600 -0.983300 0.168100
+vn -0.069600 0.983300 0.168100
+vn -0.148400 0.921700 0.358300
+vn -0.271700 -0.704000 0.656100
+vn -0.214200 -0.828600 0.517100
+vn -0.318900 -0.552800 0.769900
+vn -0.545000 -0.193900 0.815700
+vn -0.513700 -0.380500 0.768900
+vn -0.545000 0.193900 0.815700
+vn -0.555600 0.000000 0.831400
+vn -0.463000 0.552800 0.692900
+vn -0.513700 0.380500 0.768900
+vn -0.311000 0.828600 0.465400
+vn -0.394500 0.704000 0.590400
+vn -0.215500 -0.921700 0.322500
+vn -0.101100 -0.983300 0.151300
+vn -0.101100 0.983300 0.151300
+vn -0.215500 0.921700 0.322500
+vn -0.394500 -0.704000 0.590400
+vn -0.311000 -0.828600 0.465400
+vn -0.463000 -0.552800 0.692900
+vn -0.693700 -0.193900 0.693700
+vn -0.653900 -0.380500 0.653900
+vn -0.693700 0.193900 0.693700
+vn -0.707100 0.000000 0.707100
+vn -0.589300 0.552800 0.589300
+vn -0.653900 0.380500 0.653900
+vn -0.395800 0.828600 0.395800
+vn -0.502100 0.704000 0.502100
+vn -0.274300 -0.921700 0.274300
+vn -0.128600 -0.983300 0.128600
+vn -0.128600 0.983300 0.128600
+vn -0.274300 0.921700 0.274300
+vn -0.502100 -0.704000 0.502100
+vn -0.395800 -0.828600 0.395800
+vn -0.589300 -0.552800 0.589300
+vn -0.815700 -0.193900 0.545000
+vn -0.768900 -0.380500 0.513700
+vn -0.815700 0.193900 0.545000
+vn -0.831400 0.000000 0.555600
+vn -0.692900 0.552800 0.463000
+vn -0.768900 0.380500 0.513700
+vn -0.465400 0.828600 0.311000
+vn -0.590400 0.704000 0.394500
+vn -0.322500 -0.921700 0.215500
+vn -0.151300 -0.983300 0.101100
+vn -0.151300 0.983300 0.101100
+vn -0.322500 0.921700 0.215500
+vn -0.590400 -0.704000 0.394500
+vn -0.465400 -0.828600 0.311000
+vn -0.692900 -0.552800 0.463000
+vn -0.906300 -0.193900 0.375400
+vn -0.854400 -0.380500 0.353900
+vn -0.906300 0.193900 0.375400
+vn -0.923900 0.000000 0.382700
+vn -0.769900 0.552800 0.318900
+vn -0.854400 0.380500 0.353900
+vn -0.517100 0.828600 0.214200
+vn -0.656100 0.704000 0.271700
+vn -0.358300 -0.921700 0.148400
+vn -0.168100 -0.983300 0.069600
+vn -0.168100 0.983300 0.069600
+vn -0.358300 0.921700 0.148400
+vn -0.656100 -0.704000 0.271700
+vn -0.517100 -0.828600 0.214200
+vn -0.769900 -0.552800 0.318900
+vn -0.962200 -0.193900 0.191400
+vn -0.907000 -0.380500 0.180400
+vn -0.962200 0.193900 0.191400
+vn -0.980800 0.000000 0.195100
+vn -0.817300 0.552800 0.162600
+vn -0.907000 0.380500 0.180400
+vn -0.549000 0.828600 0.109200
+vn -0.696500 0.704000 0.138500
+vn -0.380400 -0.921700 0.075700
+vn -0.178400 -0.983300 0.035500
+vn -0.178400 0.983300 0.035500
+vn -0.380400 0.921700 0.075700
+vn -0.696500 -0.704000 0.138500
+vn -0.549000 -0.828600 0.109200
+vn -0.817300 -0.552800 0.162600
+vn -0.030200 -0.999500 0.000000
+vn -0.029600 -0.999500 -0.005900
+vn -0.027900 -0.999500 -0.011500
+vn -0.025100 -0.999500 -0.016800
+vn -0.021300 -0.999500 -0.021300
+vn -0.016800 -0.999500 -0.025100
+vn -0.011500 -0.999500 -0.027900
+vn -0.005900 -0.999500 -0.029600
+vn 0.000000 -0.999500 -0.030200
+vn 0.005900 -0.999500 -0.029600
+vn 0.011500 -0.999500 -0.027900
+vn 0.016800 -0.999500 -0.025100
+vn 0.021300 -0.999500 -0.021300
+vn 0.025100 -0.999500 -0.016800
+vn 0.027900 -0.999500 -0.011500
+vn 0.029600 -0.999500 -0.005900
+vn 0.030200 -0.999500 0.000000
+vn 0.029600 -0.999500 0.005900
+vn 0.027900 -0.999500 0.011500
+vn 0.025100 -0.999500 0.016800
+vn 0.021300 -0.999500 0.021300
+vn 0.016800 -0.999500 0.025100
+vn 0.011500 -0.999500 0.027900
+vn 0.005900 -0.999500 0.029600
+vn 0.000000 -0.999500 0.030200
+vn -0.005900 -0.999500 0.029600
+vn -0.011500 -0.999500 0.027900
+vn -0.016800 -0.999500 0.025100
+vn -0.021300 -0.999500 0.021300
+vn -0.025100 -0.999500 0.016800
+vn -0.027900 -0.999500 0.011500
+vn -0.029600 -0.999500 0.005900
+vn -0.029600 0.999500 0.005900
+vn -0.030200 0.999500 0.000000
+vn -0.027900 0.999500 0.011500
+vn -0.025100 0.999500 0.016800
+vn -0.021300 0.999500 0.021300
+vn -0.016800 0.999500 0.025100
+vn -0.011500 0.999500 0.027900
+vn -0.005900 0.999500 0.029600
+vn 0.000000 0.999500 0.030200
+vn 0.005900 0.999500 0.029600
+vn 0.011500 0.999500 0.027900
+vn 0.016800 0.999500 0.025100
+vn 0.021300 0.999500 0.021300
+vn 0.025100 0.999500 0.016800
+vn 0.027900 0.999500 0.011500
+vn 0.029600 0.999500 0.005900
+vn 0.030200 0.999500 0.000000
+vn 0.029600 0.999500 -0.005900
+vn 0.027900 0.999500 -0.011500
+vn 0.025100 0.999500 -0.016800
+vn 0.021300 0.999500 -0.021300
+vn 0.016800 0.999500 -0.025100
+vn 0.011500 0.999500 -0.027900
+vn 0.005900 0.999500 -0.029600
+vn 0.000000 0.999500 -0.030200
+vn -0.005900 0.999500 -0.029600
+vn -0.011500 0.999500 -0.027900
+vn -0.016800 0.999500 -0.025100
+vn -0.021300 0.999500 -0.021300
+vn -0.025100 0.999500 -0.016800
+vn -0.027900 0.999500 -0.011500
+vn -0.029600 0.999500 -0.005900
+s 1
+f 4/1/1 3/2/2 18/3/3 19/4/4
+f 15/5/5 14/6/6 29/7/7 30/8/8
+f 2/9/9 1/10/10 16/11/11 17/12/12
+f 13/13/13 12/14/14 27/15/15 28/16/16
+f 11/17/17 10/18/18 25/19/19 26/20/20
+f 9/21/21 8/22/22 23/23/23 24/24/24
+f 7/25/25 6/26/26 21/27/27 22/28/28
+f 5/29/29 4/1/1 19/4/4 20/30/30
+f 3/2/2 2/9/9 17/12/12 18/3/3
+f 14/6/6 13/13/13 28/16/16 29/7/7
+f 12/14/14 11/17/17 26/20/20 27/15/15
+f 10/18/18 9/21/21 24/24/24 25/19/19
+f 8/22/22 7/25/25 22/28/28 23/23/23
+f 6/26/26 5/29/29 20/30/30 21/27/27
+f 25/19/19 24/24/24 39/31/31 40/32/32
+f 23/23/23 22/28/28 37/33/33 38/34/34
+f 21/27/27 20/30/30 35/35/35 36/36/36
+f 19/4/4 18/3/3 33/37/37 34/38/38
+f 30/8/8 29/7/7 44/39/39 45/40/40
+f 17/12/12 16/11/11 31/41/41 32/42/42
+f 28/16/16 27/15/15 42/43/43 43/44/44
+f 26/20/20 25/19/19 40/32/32 41/45/45
+f 24/24/24 23/23/23 38/34/34 39/31/31
+f 22/28/28 21/27/27 36/36/36 37/33/33
+f 20/30/30 19/4/4 34/38/38 35/35/35
+f 18/3/3 17/12/12 32/42/42 33/37/37
+f 29/7/7 28/16/16 43/44/44 44/39/39
+f 27/15/15 26/20/20 41/45/45 42/43/43
+f 40/32/32 39/31/31 54/46/46 55/47/47
+f 38/34/34 37/33/33 52/48/48 53/49/49
+f 36/36/36 35/35/35 50/50/50 51/51/51
+f 34/38/38 33/37/37 48/52/52 49/53/53
+f 45/40/40 44/39/39 59/54/54 60/55/55
+f 32/42/42 31/41/41 46/56/56 47/57/57
+f 43/44/44 42/43/43 57/58/58 58/59/59
+f 41/45/45 40/32/32 55/47/47 56/60/60
+f 39/31/31 38/34/34 53/49/49 54/46/46
+f 37/33/33 36/36/36 51/51/51 52/48/48
+f 35/35/35 34/38/38 49/53/53 50/50/50
+f 33/37/37 32/42/42 47/57/57 48/52/52
+f 44/39/39 43/44/44 58/59/59 59/54/54
+f 42/43/43 41/45/45 56/60/60 57/58/58
+f 55/47/47 54/46/46 69/61/61 70/62/62
+f 53/49/49 52/48/48 67/63/63 68/64/64
+f 51/51/51 50/50/50 65/65/65 66/66/66
+f 49/53/53 48/52/52 63/67/67 64/68/68
+f 60/55/55 59/54/54 74/69/69 75/70/70
+f 47/57/57 46/56/56 61/71/71 62/72/72
+f 58/59/59 57/58/58 72/73/73 73/74/74
+f 56/60/60 55/47/47 70/62/62 71/75/75
+f 54/46/46 53/49/49 68/64/64 69/61/61
+f 52/48/48 51/51/51 66/66/66 67/63/63
+f 50/50/50 49/53/53 64/68/68 65/65/65
+f 48/52/52 47/57/57 62/72/72 63/67/67
+f 59/54/54 58/59/59 73/74/74 74/69/69
+f 57/58/58 56/60/60 71/75/75 72/73/73
+f 70/62/62 69/61/61 84/76/76 85/77/77
+f 68/64/64 67/63/63 82/78/78 83/79/79
+f 66/66/66 65/65/65 80/80/80 81/81/81
+f 64/68/68 63/67/67 78/82/82 79/83/83
+f 75/70/70 74/69/69 89/84/84 90/85/85
+f 62/72/72 61/71/71 76/86/86 77/87/87
+f 73/74/74 72/73/73 87/88/88 88/89/89
+f 71/75/75 70/62/62 85/77/77 86/90/90
+f 69/61/61 68/64/64 83/79/79 84/76/76
+f 67/63/63 66/66/66 81/81/81 82/78/78
+f 65/65/65 64/68/68 79/83/83 80/80/80
+f 63/67/67 62/72/72 77/87/87 78/82/82
+f 74/69/69 73/74/74 88/89/89 89/84/84
+f 72/73/73 71/75/75 86/90/90 87/88/88
+f 85/77/77 84/76/76 99/91/91 100/92/92
+f 83/79/79 82/78/78 97/93/93 98/94/94
+f 81/81/81 80/80/80 95/95/95 96/96/96
+f 79/83/83 78/82/82 93/97/97 94/98/98
+f 90/85/85 89/84/84 104/99/99 105/100/100
+f 77/87/87 76/86/86 91/101/101 92/102/102
+f 88/89/89 87/88/88 102/103/103 103/104/104
+f 86/90/90 85/77/77 100/92/92 101/105/105
+f 84/76/76 83/79/79 98/94/94 99/91/91
+f 82/78/78 81/81/81 96/96/96 97/93/93
+f 80/80/80 79/83/83 94/98/98 95/95/95
+f 78/82/82 77/87/87 92/102/102 93/97/97
+f 89/84/84 88/89/89 103/104/104 104/99/99
+f 87/88/88 86/90/90 101/105/105 102/103/103
+f 100/92/92 99/91/91 114/106/106 115/107/107
+f 98/94/94 97/93/93 112/108/108 113/109/109
+f 96/96/96 95/95/95 110/110/110 111/111/111
+f 94/98/98 93/97/97 108/112/112 109/113/113
+f 105/100/100 104/99/99 119/114/114 120/115/115
+f 92/102/102 91/101/101 106/116/116 107/117/117
+f 103/104/104 102/103/103 117/118/118 118/119/119
+f 101/105/105 100/92/92 115/107/107 116/120/120
+f 99/91/91 98/94/94 113/109/109 114/106/106
+f 97/93/93 96/96/96 111/111/111 112/108/108
+f 95/95/95 94/98/98 109/113/113 110/110/110
+f 93/97/97 92/102/102 107/117/117 108/112/112
+f 104/99/99 103/104/104 118/119/119 119/114/114
+f 102/103/103 101/105/105 116/120/120 117/118/118
+f 115/121/107 114/122/106 129/123/121 130/124/122
+f 113/125/109 112/126/108 127/127/123 128/128/124
+f 111/129/111 110/130/110 125/131/125 126/132/126
+f 109/133/113 108/134/112 123/135/127 124/136/128
+f 120/137/115 119/138/114 134/139/129 135/140/130
+f 107/141/117 106/142/116 121/143/131 122/144/132
+f 118/145/119 117/146/118 132/147/133 133/148/134
+f 116/149/120 115/121/107 130/124/122 131/150/135
+f 114/122/106 113/125/109 128/128/124 129/123/121
+f 112/126/108 111/129/111 126/132/126 127/127/123
+f 110/130/110 109/133/113 124/136/128 125/131/125
+f 108/134/112 107/141/117 122/144/132 123/135/127
+f 119/138/114 118/145/119 133/148/134 134/139/129
+f 117/146/118 116/149/120 131/150/135 132/147/133
+f 130/124/122 129/123/121 144/151/136 145/152/137
+f 128/128/124 127/127/123 142/153/138 143/154/139
+f 126/132/126 125/131/125 140/155/140 141/156/141
+f 124/136/128 123/135/127 138/157/142 139/158/143
+f 135/140/130 134/139/129 149/159/144 150/160/145
+f 122/144/132 121/143/131 136/161/146 137/162/147
+f 133/148/134 132/147/133 147/163/148 148/164/149
+f 131/150/135 130/124/122 145/152/137 146/165/150
+f 129/123/121 128/128/124 143/154/139 144/151/136
+f 127/127/123 126/132/126 141/156/141 142/153/138
+f 125/131/125 124/136/128 139/158/143 140/155/140
+f 123/135/127 122/144/132 137/162/147 138/157/142
+f 134/139/129 133/148/134 148/164/149 149/159/144
+f 132/147/133 131/150/135 146/165/150 147/163/148
+f 145/152/137 144/151/136 159/166/151 160/167/152
+f 143/154/139 142/153/138 157/168/153 158/169/154
+f 141/156/141 140/155/140 155/170/155 156/171/156
+f 139/158/143 138/157/142 153/172/157 154/173/158
+f 150/160/145 149/159/144 164/174/159 165/175/160
+f 137/162/147 136/161/146 151/176/161 152/177/162
+f 148/164/149 147/163/148 162/178/163 163/179/164
+f 146/165/150 145/152/137 160/167/152 161/180/165
+f 144/151/136 143/154/139 158/169/154 159/166/151
+f 142/153/138 141/156/141 156/171/156 157/168/153
+f 140/155/140 139/158/143 154/173/158 155/170/155
+f 138/157/142 137/162/147 152/177/162 153/172/157
+f 149/159/144 148/164/149 163/179/164 164/174/159
+f 147/163/148 146/165/150 161/180/165 162/178/163
+f 160/167/152 159/166/151 174/181/166 175/182/167
+f 158/169/154 157/168/153 172/183/168 173/184/169
+f 156/171/156 155/170/155 170/185/170 171/186/171
+f 154/173/158 153/172/157 168/187/172 169/188/173
+f 165/175/160 164/174/159 179/189/174 180/190/175
+f 152/177/162 151/176/161 166/191/176 167/192/177
+f 163/179/164 162/178/163 177/193/178 178/194/179
+f 161/180/165 160/167/152 175/182/167 176/195/180
+f 159/166/151 158/169/154 173/184/169 174/181/166
+f 157/168/153 156/171/156 171/186/171 172/183/168
+f 155/170/155 154/173/158 169/188/173 170/185/170
+f 153/172/157 152/177/162 167/192/177 168/187/172
+f 164/174/159 163/179/164 178/194/179 179/189/174
+f 162/178/163 161/180/165 176/195/180 177/193/178
+f 175/182/167 174/181/166 189/196/181 190/197/182
+f 173/184/169 172/183/168 187/198/183 188/199/184
+f 171/186/171 170/185/170 185/200/185 186/201/186
+f 169/188/173 168/187/172 183/202/187 184/203/188
+f 180/190/175 179/189/174 194/204/189 195/205/190
+f 167/192/177 166/191/176 181/206/191 182/207/192
+f 178/194/179 177/193/178 192/208/193 193/209/194
+f 176/195/180 175/182/167 190/197/182 191/210/195
+f 174/181/166 173/184/169 188/199/184 189/196/181
+f 172/183/168 171/186/171 186/201/186 187/198/183
+f 170/185/170 169/188/173 184/203/188 185/200/185
+f 168/187/172 167/192/177 182/207/192 183/202/187
+f 179/189/174 178/194/179 193/209/194 194/204/189
+f 177/193/178 176/195/180 191/210/195 192/208/193
+f 190/197/182 189/196/181 204/211/196 205/212/197
+f 188/199/184 187/198/183 202/213/198 203/214/199
+f 186/201/186 185/200/185 200/215/200 201/216/201
+f 184/203/188 183/202/187 198/217/202 199/218/203
+f 195/205/190 194/204/189 209/219/204 210/220/205
+f 182/207/192 181/206/191 196/221/206 197/222/207
+f 193/209/194 192/208/193 207/223/208 208/224/209
+f 191/210/195 190/197/182 205/212/197 206/225/210
+f 189/196/181 188/199/184 203/214/199 204/211/196
+f 187/198/183 186/201/186 201/216/201 202/213/198
+f 185/200/185 184/203/188 199/218/203 200/215/200
+f 183/202/187 182/207/192 197/222/207 198/217/202
+f 194/204/189 193/209/194 208/224/209 209/219/204
+f 192/208/193 191/210/195 206/225/210 207/223/208
+f 205/212/197 204/211/196 219/226/211 220/227/212
+f 203/214/199 202/213/198 217/228/213 218/229/214
+f 201/216/201 200/215/200 215/230/215 216/231/216
+f 199/218/203 198/217/202 213/232/217 214/233/218
+f 210/220/205 209/219/204 224/234/219 225/235/220
+f 197/222/207 196/221/206 211/236/221 212/237/222
+f 208/224/209 207/223/208 222/238/223 223/239/224
+f 206/225/210 205/212/197 220/227/212 221/240/225
+f 204/211/196 203/214/199 218/229/214 219/226/211
+f 202/213/198 201/216/201 216/231/216 217/228/213
+f 200/215/200 199/218/203 214/233/218 215/230/215
+f 198/217/202 197/222/207 212/237/222 213/232/217
+f 209/219/204 208/224/209 223/239/224 224/234/219
+f 207/223/208 206/225/210 221/240/225 222/238/223
+f 220/227/212 219/226/211 234/241/226 235/242/227
+f 218/229/214 217/228/213 232/243/228 233/244/229
+f 216/231/216 215/230/215 230/245/230 231/246/231
+f 214/233/218 213/232/217 228/247/232 229/248/233
+f 225/235/220 224/234/219 239/249/234 240/250/235
+f 212/237/222 211/236/221 226/251/236 227/252/237
+f 223/239/224 222/238/223 237/253/238 238/254/239
+f 221/240/225 220/227/212 235/242/227 236/255/240
+f 219/226/211 218/229/214 233/244/229 234/241/226
+f 217/228/213 216/231/216 231/246/231 232/243/228
+f 215/230/215 214/233/218 229/248/233 230/245/230
+f 213/232/217 212/237/222 227/252/237 228/247/232
+f 224/234/219 223/239/224 238/254/239 239/249/234
+f 222/238/223 221/240/225 236/255/240 237/253/238
+f 235/242/227 234/241/226 249/21/241 250/18/242
+f 233/244/229 232/243/228 247/25/243 248/22/244
+f 231/246/231 230/245/230 245/29/245 246/26/246
+f 229/248/233 228/247/232 243/2/247 244/1/248
+f 240/250/235 239/249/234 254/6/249 255/5/250
+f 227/252/237 226/251/236 241/10/251 242/9/252
+f 238/254/239 237/253/238 252/14/253 253/13/254
+f 236/255/240 235/242/227 250/18/242 251/17/255
+f 234/241/226 233/244/229 248/22/244 249/21/241
+f 232/243/228 231/246/231 246/26/246 247/25/243
+f 230/245/230 229/248/233 244/1/248 245/29/245
+f 228/247/232 227/252/237 242/9/252 243/2/247
+f 239/249/234 238/254/239 253/13/254 254/6/249
+f 237/253/238 236/255/240 251/17/255 252/14/253
+f 250/18/242 249/21/241 264/24/256 265/19/257
+f 248/22/244 247/25/243 262/28/258 263/23/259
+f 246/26/246 245/29/245 260/30/260 261/27/261
+f 244/1/248 243/2/247 258/3/262 259/4/263
+f 255/5/250 254/6/249 269/7/264 270/8/265
+f 242/9/252 241/10/251 256/11/266 257/12/267
+f 253/13/254 252/14/253 267/15/268 268/16/269
+f 251/17/255 250/18/242 265/19/257 266/20/270
+f 249/21/241 248/22/244 263/23/259 264/24/256
+f 247/25/243 246/26/246 261/27/261 262/28/258
+f 245/29/245 244/1/248 259/4/263 260/30/260
+f 243/2/247 242/9/252 257/12/267 258/3/262
+f 254/6/249 253/13/254 268/16/269 269/7/264
+f 252/14/253 251/17/255 266/20/270 267/15/268
+f 265/19/257 264/24/256 279/31/271 280/32/272
+f 263/23/259 262/28/258 277/33/273 278/34/274
+f 261/27/261 260/30/260 275/35/275 276/36/276
+f 259/4/263 258/3/262 273/37/277 274/38/278
+f 270/8/265 269/7/264 284/39/279 285/40/280
+f 257/12/267 256/11/266 271/41/281 272/42/282
+f 268/16/269 267/15/268 282/43/283 283/44/284
+f 266/20/270 265/19/257 280/32/272 281/45/285
+f 264/24/256 263/23/259 278/34/274 279/31/271
+f 262/28/258 261/27/261 276/36/276 277/33/273
+f 260/30/260 259/4/263 274/38/278 275/35/275
+f 258/3/262 257/12/267 272/42/282 273/37/277
+f 269/7/264 268/16/269 283/44/284 284/39/279
+f 267/15/268 266/20/270 281/45/285 282/43/283
+f 280/32/272 279/31/271 294/46/286 295/47/287
+f 278/34/274 277/33/273 292/48/288 293/49/289
+f 276/36/276 275/35/275 290/50/290 291/51/291
+f 274/38/278 273/37/277 288/52/292 289/53/293
+f 285/40/280 284/39/279 299/54/294 300/55/295
+f 272/42/282 271/41/281 286/56/296 287/57/297
+f 283/44/284 282/43/283 297/58/298 298/59/299
+f 281/45/285 280/32/272 295/47/287 296/60/300
+f 279/31/271 278/34/274 293/49/289 294/46/286
+f 277/33/273 276/36/276 291/51/291 292/48/288
+f 275/35/275 274/38/278 289/53/293 290/50/290
+f 273/37/277 272/42/282 287/57/297 288/52/292
+f 284/39/279 283/44/284 298/59/299 299/54/294
+f 282/43/283 281/45/285 296/60/300 297/58/298
+f 295/47/287 294/46/286 309/61/301 310/62/302
+f 293/49/289 292/48/288 307/63/303 308/64/304
+f 291/51/291 290/50/290 305/65/305 306/66/306
+f 289/53/293 288/52/292 303/67/307 304/68/308
+f 300/55/295 299/54/294 314/69/309 315/70/310
+f 287/57/297 286/56/296 301/71/311 302/72/312
+f 298/59/299 297/58/298 312/73/313 313/74/314
+f 296/60/300 295/47/287 310/62/302 311/75/315
+f 294/46/286 293/49/289 308/64/304 309/61/301
+f 292/48/288 291/51/291 306/66/306 307/63/303
+f 290/50/290 289/53/293 304/68/308 305/65/305
+f 288/52/292 287/57/297 302/72/312 303/67/307
+f 299/54/294 298/59/299 313/74/314 314/69/309
+f 297/58/298 296/60/300 311/75/315 312/73/313
+f 310/62/302 309/61/301 324/76/316 325/77/317
+f 308/64/304 307/63/303 322/78/318 323/79/319
+f 306/66/306 305/65/305 320/80/320 321/81/321
+f 304/68/308 303/67/307 318/82/322 319/83/323
+f 315/70/310 314/69/309 329/84/324 330/85/325
+f 302/72/312 301/71/311 316/86/326 317/87/327
+f 313/74/314 312/73/313 327/88/328 328/89/329
+f 311/75/315 310/62/302 325/77/317 326/90/330
+f 309/61/301 308/64/304 323/79/319 324/76/316
+f 307/63/303 306/66/306 321/81/321 322/78/318
+f 305/65/305 304/68/308 319/83/323 320/80/320
+f 303/67/307 302/72/312 317/87/327 318/82/322
+f 314/69/309 313/74/314 328/89/329 329/84/324
+f 312/73/313 311/75/315 326/90/330 327/88/328
+f 325/77/317 324/76/316 339/91/331 340/92/332
+f 323/79/319 322/78/318 337/93/333 338/94/334
+f 321/81/321 320/80/320 335/95/335 336/96/336
+f 319/83/323 318/82/322 333/97/337 334/98/338
+f 330/85/325 329/84/324 344/99/339 345/100/340
+f 317/87/327 316/86/326 331/101/341 332/102/342
+f 328/89/329 327/88/328 342/103/343 343/104/344
+f 326/90/330 325/77/317 340/92/332 341/105/345
+f 324/76/316 323/79/319 338/94/334 339/91/331
+f 322/78/318 321/81/321 336/96/336 337/93/333
+f 320/80/320 319/83/323 334/98/338 335/95/335
+f 318/82/322 317/87/327 332/102/342 333/97/337
+f 329/84/324 328/89/329 343/104/344 344/99/339
+f 327/88/328 326/90/330 341/105/345 342/103/343
+f 340/92/332 339/91/331 354/106/346 355/107/347
+f 338/94/334 337/93/333 352/108/348 353/109/349
+f 336/96/336 335/95/335 350/110/350 351/111/351
+f 334/98/338 333/97/337 348/112/352 349/113/353
+f 345/100/340 344/99/339 359/114/354 360/115/355
+f 332/102/342 331/101/341 346/116/356 347/117/357
+f 343/104/344 342/103/343 357/118/358 358/119/359
+f 341/105/345 340/92/332 355/107/347 356/120/360
+f 339/91/331 338/94/334 353/109/349 354/106/346
+f 337/93/333 336/96/336 351/111/351 352/108/348
+f 335/95/335 334/98/338 349/113/353 350/110/350
+f 333/97/337 332/102/342 347/117/357 348/112/352
+f 344/99/339 343/104/344 358/119/359 359/114/354
+f 342/103/343 341/105/345 356/120/360 357/118/358
+f 355/121/347 354/122/346 369/123/361 370/124/362
+f 353/125/349 352/126/348 367/127/363 368/128/364
+f 351/129/351 350/130/350 365/131/365 366/132/366
+f 349/133/353 348/134/352 363/135/367 364/136/368
+f 360/137/355 359/138/354 374/139/369 375/140/370
+f 347/141/357 346/142/356 361/143/371 362/144/372
+f 358/145/359 357/146/358 372/147/373 373/148/374
+f 356/149/360 355/121/347 370/124/362 371/150/375
+f 354/122/346 353/125/349 368/128/364 369/123/361
+f 352/126/348 351/129/351 366/132/366 367/127/363
+f 350/130/350 349/133/353 364/136/368 365/131/365
+f 348/134/352 347/141/357 362/144/372 363/135/367
+f 359/138/354 358/145/359 373/148/374 374/139/369
+f 357/146/358 356/149/360 371/150/375 372/147/373
+f 370/124/362 369/123/361 384/151/376 385/152/377
+f 368/128/364 367/127/363 382/153/378 383/154/379
+f 366/132/366 365/131/365 380/155/380 381/156/381
+f 364/136/368 363/135/367 378/157/382 379/158/383
+f 375/140/370 374/139/369 389/159/384 390/160/385
+f 362/144/372 361/143/371 376/161/386 377/162/387
+f 373/148/374 372/147/373 387/163/388 388/164/389
+f 371/150/375 370/124/362 385/152/377 386/165/390
+f 369/123/361 368/128/364 383/154/379 384/151/376
+f 367/127/363 366/132/366 381/156/381 382/153/378
+f 365/131/365 364/136/368 379/158/383 380/155/380
+f 363/135/367 362/144/372 377/162/387 378/157/382
+f 374/139/369 373/148/374 388/164/389 389/159/384
+f 372/147/373 371/150/375 386/165/390 387/163/388
+f 385/152/377 384/151/376 399/166/391 400/167/392
+f 383/154/379 382/153/378 397/168/393 398/169/394
+f 381/156/381 380/155/380 395/170/395 396/171/396
+f 379/158/383 378/157/382 393/172/397 394/173/398
+f 390/160/385 389/159/384 404/174/399 405/175/400
+f 377/162/387 376/161/386 391/176/401 392/177/402
+f 388/164/389 387/163/388 402/178/403 403/179/404
+f 386/165/390 385/152/377 400/167/392 401/180/405
+f 384/151/376 383/154/379 398/169/394 399/166/391
+f 382/153/378 381/156/381 396/171/396 397/168/393
+f 380/155/380 379/158/383 394/173/398 395/170/395
+f 378/157/382 377/162/387 392/177/402 393/172/397
+f 389/159/384 388/164/389 403/179/404 404/174/399
+f 387/163/388 386/165/390 401/180/405 402/178/403
+f 400/167/392 399/166/391 414/181/406 415/182/407
+f 398/169/394 397/168/393 412/183/408 413/184/409
+f 396/171/396 395/170/395 410/185/410 411/186/411
+f 394/173/398 393/172/397 408/187/412 409/188/413
+f 405/175/400 404/174/399 419/189/414 420/190/415
+f 392/177/402 391/176/401 406/191/416 407/192/417
+f 403/179/404 402/178/403 417/193/418 418/194/419
+f 401/180/405 400/167/392 415/182/407 416/195/420
+f 399/166/391 398/169/394 413/184/409 414/181/406
+f 397/168/393 396/171/396 411/186/411 412/183/408
+f 395/170/395 394/173/398 409/188/413 410/185/410
+f 393/172/397 392/177/402 407/192/417 408/187/412
+f 404/174/399 403/179/404 418/194/419 419/189/414
+f 402/178/403 401/180/405 416/195/420 417/193/418
+f 415/182/407 414/181/406 429/196/421 430/197/422
+f 413/184/409 412/183/408 427/198/423 428/199/424
+f 411/186/411 410/185/410 425/200/425 426/201/426
+f 409/188/413 408/187/412 423/202/427 424/203/428
+f 420/190/415 419/189/414 434/204/429 435/205/430
+f 407/192/417 406/191/416 421/206/431 422/207/432
+f 418/194/419 417/193/418 432/208/433 433/209/434
+f 416/195/420 415/182/407 430/197/422 431/210/435
+f 414/181/406 413/184/409 428/199/424 429/196/421
+f 412/183/408 411/186/411 426/201/426 427/198/423
+f 410/185/410 409/188/413 424/203/428 425/200/425
+f 408/187/412 407/192/417 422/207/432 423/202/427
+f 419/189/414 418/194/419 433/209/434 434/204/429
+f 417/193/418 416/195/420 431/210/435 432/208/433
+f 430/197/422 429/196/421 444/211/436 445/212/437
+f 428/199/424 427/198/423 442/213/438 443/214/439
+f 426/201/426 425/200/425 440/215/440 441/216/441
+f 424/203/428 423/202/427 438/217/442 439/218/443
+f 435/205/430 434/204/429 449/219/444 450/220/445
+f 422/207/432 421/206/431 436/221/446 437/222/447
+f 433/209/434 432/208/433 447/223/448 448/224/449
+f 431/210/435 430/197/422 445/212/437 446/225/450
+f 429/196/421 428/199/424 443/214/439 444/211/436
+f 427/198/423 426/201/426 441/216/441 442/213/438
+f 425/200/425 424/203/428 439/218/443 440/215/440
+f 423/202/427 422/207/432 437/222/447 438/217/442
+f 434/204/429 433/209/434 448/224/449 449/219/444
+f 432/208/433 431/210/435 446/225/450 447/223/448
+f 445/212/437 444/211/436 459/226/451 460/227/452
+f 443/214/439 442/213/438 457/228/453 458/229/454
+f 441/216/441 440/215/440 455/230/455 456/231/456
+f 439/218/443 438/217/442 453/232/457 454/233/458
+f 450/220/445 449/219/444 464/234/459 465/235/460
+f 437/222/447 436/221/446 451/236/461 452/237/462
+f 448/224/449 447/223/448 462/238/463 463/239/464
+f 446/225/450 445/212/437 460/227/452 461/240/465
+f 444/211/436 443/214/439 458/229/454 459/226/451
+f 442/213/438 441/216/441 456/231/456 457/228/453
+f 440/215/440 439/218/443 454/233/458 455/230/455
+f 438/217/442 437/222/447 452/237/462 453/232/457
+f 449/219/444 448/224/449 463/239/464 464/234/459
+f 447/223/448 446/225/450 461/240/465 462/238/463
+f 460/227/452 459/226/451 474/241/466 475/242/467
+f 458/229/454 457/228/453 472/243/468 473/244/469
+f 456/231/456 455/230/455 470/245/470 471/246/471
+f 454/233/458 453/232/457 468/247/472 469/248/473
+f 465/235/460 464/234/459 479/249/474 480/250/475
+f 452/237/462 451/236/461 466/251/476 467/252/477
+f 463/239/464 462/238/463 477/253/478 478/254/479
+f 461/240/465 460/227/452 475/242/467 476/255/480
+f 459/226/451 458/229/454 473/244/469 474/241/466
+f 457/228/453 456/231/456 471/246/471 472/243/468
+f 455/230/455 454/233/458 469/248/473 470/245/470
+f 453/232/457 452/237/462 467/252/477 468/247/472
+f 464/234/459 463/239/464 478/254/479 479/249/474
+f 462/238/463 461/240/465 476/255/480 477/253/478
+f 481/256/481 15/5/5 30/8/8 485/257/482
+f 485/257/482 30/8/8 45/40/40 487/258/483
+f 487/258/483 45/40/40 60/55/55 489/259/484
+f 489/259/484 60/55/55 75/70/70 491/260/485
+f 491/260/485 75/70/70 90/85/85 493/261/486
+f 493/261/486 90/85/85 105/100/100 495/262/487
+f 495/262/487 105/100/100 120/115/115 497/263/488
+f 497/264/488 120/137/115 135/140/130 499/265/489
+f 499/265/489 135/140/130 150/160/145 501/266/490
+f 501/266/490 150/160/145 165/175/160 503/267/491
+f 503/267/491 165/175/160 180/190/175 505/268/492
+f 505/268/492 180/190/175 195/205/190 507/269/493
+f 507/269/493 195/205/190 210/220/205 509/270/494
+f 509/270/494 210/220/205 225/235/220 511/271/495
+f 511/271/495 225/235/220 240/250/235 513/272/496
+f 513/272/496 240/250/235 255/5/250 515/256/497
+f 515/256/497 255/5/250 270/8/265 517/257/498
+f 517/257/498 270/8/265 285/40/280 519/258/499
+f 519/258/499 285/40/280 300/55/295 521/259/500
+f 521/259/500 300/55/295 315/70/310 523/260/501
+f 523/260/501 315/70/310 330/85/325 525/261/502
+f 525/261/502 330/85/325 345/100/340 527/262/503
+f 527/262/503 345/100/340 360/115/355 529/263/504
+f 529/264/504 360/137/355 375/140/370 531/265/505
+f 531/265/505 375/140/370 390/160/385 533/266/506
+f 533/266/506 390/160/385 405/175/400 534/267/507
+f 534/267/507 405/175/400 420/190/415 536/268/508
+f 536/268/508 420/190/415 435/205/430 538/269/509
+f 538/269/509 435/205/430 450/220/445 540/270/510
+f 540/270/510 450/220/445 465/235/460 542/271/511
+f 542/271/511 465/235/460 480/250/475 544/272/512
+f 475/242/467 474/241/466 9/21/21 10/18/18
+f 473/244/469 472/243/468 7/25/25 8/22/22
+f 471/246/471 470/245/470 5/29/29 6/26/26
+f 469/248/473 468/247/472 3/2/2 4/1/1
+f 480/250/475 479/249/474 14/6/6 15/5/5
+f 467/252/477 466/251/476 1/10/10 2/9/9
+f 478/254/479 477/253/478 12/14/14 13/13/13
+f 476/255/480 475/242/467 10/18/18 11/17/17
+f 474/241/466 473/244/469 8/22/22 9/21/21
+f 472/243/468 471/246/471 6/26/26 7/25/25
+f 470/245/470 469/248/473 4/1/1 5/29/29
+f 544/272/512 480/250/475 15/5/5 481/256/481
+f 468/247/472 467/252/477 2/9/9 3/2/2
+f 479/249/474 478/254/479 13/13/13 14/6/6
+f 477/253/478 476/255/480 11/17/17 12/14/14
+f 466/251/476 543/273/513 483/274/514 1/10/10
+f 451/236/461 541/275/515 543/273/513 466/251/476
+f 436/221/446 539/276/516 541/275/515 451/236/461
+f 421/206/431 537/277/517 539/276/516 436/221/446
+f 406/191/416 535/278/518 537/277/517 421/206/431
+f 391/176/401 482/279/519 535/278/518 406/191/416
+f 376/161/386 532/280/520 482/279/519 391/176/401
+f 361/143/371 530/281/521 532/280/520 376/161/386
+f 346/142/356 528/282/522 530/281/521 361/143/371
+f 331/101/341 526/283/523 528/284/522 346/116/356
+f 316/86/326 524/285/524 526/283/523 331/101/341
+f 301/71/311 522/286/525 524/285/524 316/86/326
+f 286/56/296 520/287/526 522/286/525 301/71/311
+f 271/41/281 518/288/527 520/287/526 286/56/296
+f 256/11/266 516/289/528 518/288/527 271/41/281
+f 241/10/251 514/274/529 516/289/528 256/11/266
+f 226/251/236 512/273/530 514/274/529 241/10/251
+f 211/236/221 510/275/531 512/273/530 226/251/236
+f 196/221/206 508/276/532 510/275/531 211/236/221
+f 181/206/191 506/277/533 508/276/532 196/221/206
+f 166/191/176 504/278/534 506/277/533 181/206/191
+f 151/176/161 502/279/535 504/278/534 166/191/176
+f 136/161/146 500/280/536 502/279/535 151/176/161
+f 121/143/131 498/281/537 500/280/536 136/161/146
+f 106/142/116 496/282/538 498/281/537 121/143/131
+f 91/101/101 494/283/539 496/284/538 106/116/116
+f 76/86/86 492/285/540 494/283/539 91/101/101
+f 61/71/71 490/286/541 492/285/540 76/86/86
+f 46/56/56 488/287/542 490/286/541 61/71/71
+f 31/41/41 486/288/543 488/287/542 46/56/56
+f 16/11/11 484/289/544 486/288/543 31/41/41
+f 1/10/10 483/274/514 484/289/544 16/11/11
+f 543/290/513 541/291/515 539/292/516 537/293/517 535/294/518 482/295/519 532/296/520 530/297/521 528/298/522 526/299/523 524/300/524 522/301/525 520/302/526 518/303/527 516/304/528 514/305/529 512/306/530 510/307/531 508/308/532 506/309/533 504/310/534 502/311/535 500/312/536 498/313/537 496/314/538 494/315/539 492/316/540 490/317/541 488/318/542 486/319/543 484/320/544 483/321/514
+f 544/290/512 481/291/481 485/292/482 487/293/483 489/294/484 491/295/485 493/296/486 495/297/487 497/298/488 499/299/489 501/300/490 503/301/491 505/302/492 507/303/493 509/304/494 511/305/495 513/306/496 515/307/497 517/308/498 519/309/499 521/310/500 523/311/501 525/312/502 527/313/503 529/314/504 531/315/505 533/316/506 534/317/507 536/318/508 538/319/509 540/320/510 542/321/511
diff --git a/technic/technic/models/technic_two_curved_edge.obj b/technic/technic/models/technic_two_curved_edge.obj
new file mode 100644
index 0000000..a468ddf
--- /dev/null
+++ b/technic/technic/models/technic_two_curved_edge.obj
@@ -0,0 +1,207 @@
+# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_corner_onetexture.blend'
+# www.blender.org
+o corner1_Cylinder
+v 0.415732 0.277783 0.499997
+v 0.461936 0.191340 0.499997
+v 0.415735 0.277783 -0.415732
+v 0.461940 0.191340 -0.461937
+v 0.490389 0.097544 0.499997
+v 0.353551 0.353551 0.499997
+v 0.353555 0.353551 -0.353551
+v 0.499996 -0.000000 0.499997
+v 0.277783 0.415732 0.499997
+v 0.490393 0.097544 -0.490389
+v 0.277787 0.415732 -0.277784
+v 0.191340 0.461936 0.499997
+v 0.191344 0.461937 -0.191341
+v 0.097544 0.490389 0.499997
+v 0.097547 0.490391 -0.097545
+v -0.000000 0.499996 0.499997
+v -0.499997 0.499997 0.499997
+v -0.499997 0.499997 -0.000030
+v -0.499997 0.415735 -0.277785
+v -0.499997 0.461940 -0.191342
+v -0.499997 0.490393 -0.097545
+v -0.500000 -0.500000 -0.500000
+v -0.499997 -0.499997 0.499997
+v 0.000000 0.499998 0.000000
+v -0.499998 0.000014 -0.499999
+v -0.499997 0.353553 -0.353554
+v -0.499998 0.097545 -0.490393
+v -0.499997 0.277785 -0.415735
+v -0.499998 0.191342 -0.461940
+v 0.499997 -0.000000 -0.499996
+v 0.500000 -0.500000 -0.500000
+v 0.499997 -0.499997 0.499997
+v -0.499997 -0.499997 0.499997
+v -0.499997 0.499997 0.499997
+v -0.499997 0.499997 -0.000030
+v -0.499997 0.415735 -0.277785
+v -0.499997 0.461940 -0.191342
+v -0.499997 0.490393 -0.097545
+v -0.500000 -0.500000 -0.500000
+v -0.499998 0.000014 -0.499999
+v -0.499997 0.353553 -0.353554
+v -0.499998 0.097545 -0.490393
+v -0.499997 0.277785 -0.415735
+v -0.499998 0.191342 -0.461940
+v -0.499998 -0.033351 0.033348
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.499997 -0.499997 0.499997
+v 0.415732 0.277783 0.499997
+v 0.461936 0.191340 0.499997
+v 0.490389 0.097544 0.499997
+v 0.353551 0.353551 0.499997
+v 0.499996 -0.000000 0.499997
+v 0.277783 0.415732 0.499997
+v 0.191340 0.461936 0.499997
+v -0.499997 -0.499997 0.499997
+v 0.097544 0.490389 0.499997
+v -0.000000 0.499996 0.499997
+v -0.499997 0.499997 0.499997
+v -0.033351 -0.033351 0.499997
+v 0.499997 -0.499997 0.499997
+vt 1.000000 0.500100
+vt 0.990395 0.597625
+vt 0.466756 0.466756
+vt 1.000000 0.000200
+vt 0.000201 0.000201
+vt 0.597626 0.990394
+vt 0.500101 1.000000
+vt 0.691404 0.961947
+vt 0.777830 0.915751
+vt 0.853583 0.853583
+vt 0.915752 0.777829
+vt 0.000201 1.000000
+vt 0.961948 0.691403
+vt -0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt -0.000000 1.000000
+vt 0.533443 0.466757
+vt 0.000202 0.500115
+vt 0.402575 0.990397
+vt 0.308797 0.961949
+vt 0.222371 0.915753
+vt 0.146617 0.853584
+vt 0.084449 0.777831
+vt 0.038253 0.691405
+vt 0.009806 0.597626
+vt 0.999996 0.125448
+vt 0.222353 0.125462
+vt 0.146597 0.000612
+vt 0.999995 0.000594
+vt 0.000178 0.874582
+vt 0.915751 0.874577
+vt 0.853580 0.999436
+vt 0.000178 0.999439
+vt 0.999808 0.625427
+vt 0.009599 0.625446
+vt -0.000005 0.500594
+vt 0.999807 0.500594
+vt 0.597441 0.374574
+vt 0.499912 0.499435
+vt 0.000000 0.499434
+vt 0.000000 0.374576
+vt 0.999999 0.375154
+vt 1.000000 0.499969
+vt 0.500093 0.500015
+vt 0.402562 0.375164
+vt 0.999812 0.999983
+vt 0.146415 1.000000
+vt 0.084244 0.875149
+vt 0.999811 0.875131
+vt 0.990396 0.624861
+vt 0.961947 0.749719
+vt 0.000178 0.749724
+vt 0.000178 0.624866
+vt 0.777649 0.124857
+vt 0.691221 0.249715
+vt 0.000001 0.249719
+vt 0.000001 0.124861
+vt 0.308782 0.250314
+vt 0.999998 0.250301
+vt 0.853403 -0.000000
+vt 0.038047 0.750298
+vt 0.999809 0.750280
+vt 0.000177 0.500008
+vt 0.000000 0.500000
+vt 0.500000 1.000000
+vt 0.500000 0.500000
+vn 0.000000 -0.000000 1.000000
+vn -0.000000 -1.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.831500 -0.555600
+vn 0.325800 0.887500 -0.325800
+vn 0.429700 0.794100 -0.429700
+vn 0.000000 0.707100 -0.707100
+vn 0.831500 0.555600 0.000000
+vn 0.531000 0.660300 -0.531000
+vn 0.707100 0.707100 0.000000
+vn 0.000000 0.195100 -0.980800
+vn 0.683900 0.254100 -0.683900
+vn 0.705500 0.067100 -0.705500
+vn 0.000000 0.049100 -0.998800
+vn 0.123100 0.984700 -0.123100
+vn 0.036800 0.998600 -0.036800
+vn 0.049100 0.998800 0.000000
+vn 0.195100 0.980800 0.000000
+vn 0.000000 0.980800 -0.195100
+vn 0.000000 0.998800 -0.049100
+vn 0.000000 0.555600 -0.831500
+vn 0.620400 0.479600 -0.620400
+vn 0.923900 0.382700 0.000000
+vn 0.980800 0.195100 0.000000
+vn 0.223300 0.948800 -0.223200
+vn 0.382700 0.923900 0.000000
+vn 0.555600 0.831500 0.000000
+vn 0.000000 0.923900 -0.382700
+vn 0.000000 0.382700 -0.923900
+vn 0.998800 0.049100 0.000000
+vn 0.707100 0.000000 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn -0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+s off
+f 53/1/1 51/2/1 60/3/1
+f 61/4/1 53/1/1 60/3/1 56/5/1
+f 57/6/1 58/7/1 60/3/1
+f 55/8/1 57/6/1 60/3/1
+f 54/9/1 55/8/1 60/3/1
+f 52/10/1 54/9/1 60/3/1
+f 49/11/1 52/10/1 60/3/1
+f 59/12/1 56/5/1 60/3/1 58/7/1
+f 50/13/1 49/11/1 60/3/1
+f 48/14/2 23/15/2 46/16/2 47/17/2
+f 39/5/3 33/4/3 45/18/3 40/19/3
+f 35/7/3 38/20/3 45/18/3
+f 38/20/3 37/21/3 45/18/3
+f 37/21/3 36/22/3 45/18/3
+f 36/22/3 41/23/3 45/18/3
+f 41/23/3 43/24/3 45/18/3
+f 43/24/3 44/25/3 45/18/3
+f 44/25/3 42/26/3 45/18/3
+f 42/26/3 40/19/3 45/18/3
+f 34/16/3 35/7/3 45/18/3 33/4/3
+f 51/2/1 50/13/1 60/3/1
+s 1
+f 19/27/4 11/28/5 7/29/6 26/30/7
+f 1/31/8 3/32/9 7/33/6 6/34/10
+f 27/35/11 10/36/12 30/37/13 25/38/14
+f 15/39/15 24/40/16 16/41/17 14/42/18
+f 21/43/19 18/44/20 24/45/16 15/46/15
+f 26/47/7 7/48/6 3/49/9 28/50/21
+f 10/51/12 4/52/22 2/53/23 5/54/24
+f 11/55/5 13/56/25 12/57/26 9/58/27
+f 21/43/19 15/46/15 13/59/25 20/60/28
+f 20/60/28 13/59/25 11/28/5 19/27/4
+f 9/58/27 6/14/10 7/61/6 11/55/5
+f 4/52/22 3/32/9 1/31/8 2/53/23
+f 3/49/9 4/62/22 29/63/29 28/50/21
+f 10/51/12 5/54/24 8/64/30 30/44/13
+f 29/63/29 4/62/22 10/36/12 27/35/11
+f 25/44/14 30/65/13 31/14/31 22/15/32
+f 16/66/17 24/67/16 18/44/20 17/16/33
+f 8/65/30 32/14/34 31/15/31 30/44/13
+f 12/57/26 13/56/25 15/39/15 14/42/18
diff --git a/technic/technic/register.lua b/technic/technic/register.lua
new file mode 100644
index 0000000..8f75b81
--- /dev/null
+++ b/technic/technic/register.lua
@@ -0,0 +1,58 @@
+-- This file includes the functions and data structures for registering machines and tools for LV, MV, HV types.
+-- We use the technic namespace for these functions and data to avoid eventual conflict.
+
+technic.receiver = "RE"
+technic.producer = "PR"
+technic.producer_receiver = "PR_RE"
+technic.battery = "BA"
+
+technic.machines = {}
+technic.power_tools = {}
+technic.networks = {}
+
+
+function technic.register_tier(tier, description)
+ technic.machines[tier] = {}
+end
+
+function technic.register_machine(tier, nodename, machine_type)
+ if not technic.machines[tier] then
+ return
+ end
+ technic.machines[tier][nodename] = machine_type
+end
+
+function technic.register_power_tool(craftitem, max_charge)
+ technic.power_tools[craftitem] = max_charge
+end
+
+
+-- Utility functions. Not sure exactly what they do.. water.lua uses the two first.
+function technic.get_RE_item_load(load1, max_load)
+ if load1 == 0 then load1 = 65535 end
+ local temp = 65536 - load1
+ temp = temp / 65535 * max_load
+ return math.floor(temp + 0.5)
+end
+
+function technic.set_RE_item_load(load1, max_load)
+ if load1 == 0 then return 65535 end
+ local temp = load1 / max_load * 65535
+ temp = 65536 - temp
+ return math.floor(temp)
+end
+
+-- Wear down a tool depending on the remaining charge.
+function technic.set_RE_wear(itemstack, item_load, max_load)
+ if (minetest.registered_items[itemstack:get_name()].wear_represents or "mechanical_wear") ~= "technic_RE_charge" then return itemstack end
+ local temp
+ if item_load == 0 then
+ temp = 0
+ else
+ temp = 65536 - math.floor(item_load / max_load * 65535)
+ if temp > 65535 then temp = 65535 end
+ if temp < 1 then temp = 1 end
+ end
+ itemstack:set_wear(temp)
+ return itemstack
+end
diff --git a/technic/technic/sounds/chainsaw.ogg b/technic/technic/sounds/chainsaw.ogg
new file mode 100644
index 0000000..5fe7552
--- /dev/null
+++ b/technic/technic/sounds/chainsaw.ogg
Binary files differ
diff --git a/technic/technic/sounds/item_drop_pickup.1.ogg b/technic/technic/sounds/item_drop_pickup.1.ogg
new file mode 100644
index 0000000..2ae432d
--- /dev/null
+++ b/technic/technic/sounds/item_drop_pickup.1.ogg
Binary files differ
diff --git a/technic/technic/sounds/item_drop_pickup.2.ogg b/technic/technic/sounds/item_drop_pickup.2.ogg
new file mode 100644
index 0000000..f58bf08
--- /dev/null
+++ b/technic/technic/sounds/item_drop_pickup.2.ogg
Binary files differ
diff --git a/technic/technic/sounds/item_drop_pickup.3.ogg b/technic/technic/sounds/item_drop_pickup.3.ogg
new file mode 100644
index 0000000..cf57c94
--- /dev/null
+++ b/technic/technic/sounds/item_drop_pickup.3.ogg
Binary files differ
diff --git a/technic/technic/sounds/item_drop_pickup.4.ogg b/technic/technic/sounds/item_drop_pickup.4.ogg
new file mode 100644
index 0000000..bfe99d9
--- /dev/null
+++ b/technic/technic/sounds/item_drop_pickup.4.ogg
Binary files differ
diff --git a/technic/technic/sounds/mining_drill.ogg b/technic/technic/sounds/mining_drill.ogg
new file mode 100644
index 0000000..1493544
--- /dev/null
+++ b/technic/technic/sounds/mining_drill.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg b/technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg
new file mode 100644
index 0000000..3332deb
--- /dev/null
+++ b/technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg b/technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg
new file mode 100644
index 0000000..3d290b0
--- /dev/null
+++ b/technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk1.0.ogg b/technic/technic/sounds/technic_laser_mk1.0.ogg
new file mode 100644
index 0000000..19be080
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk1.0.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk1.1.ogg b/technic/technic/sounds/technic_laser_mk1.1.ogg
new file mode 100644
index 0000000..7792be1
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk1.1.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk2.0.ogg b/technic/technic/sounds/technic_laser_mk2.0.ogg
new file mode 100644
index 0000000..2cf1548
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk2.0.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk2.1.ogg b/technic/technic/sounds/technic_laser_mk2.1.ogg
new file mode 100644
index 0000000..b3f9afb
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk2.1.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk2.2.ogg b/technic/technic/sounds/technic_laser_mk2.2.ogg
new file mode 100644
index 0000000..a4ee091
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk2.2.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk3.1.ogg b/technic/technic/sounds/technic_laser_mk3.1.ogg
new file mode 100644
index 0000000..f948913
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk3.1.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_laser_mk3.2.ogg b/technic/technic/sounds/technic_laser_mk3.2.ogg
new file mode 100644
index 0000000..636c306
--- /dev/null
+++ b/technic/technic/sounds/technic_laser_mk3.2.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_prospector_hit.ogg b/technic/technic/sounds/technic_prospector_hit.ogg
new file mode 100644
index 0000000..3a8ad2d
--- /dev/null
+++ b/technic/technic/sounds/technic_prospector_hit.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_prospector_miss.ogg b/technic/technic/sounds/technic_prospector_miss.ogg
new file mode 100644
index 0000000..0f050d0
--- /dev/null
+++ b/technic/technic/sounds/technic_prospector_miss.ogg
Binary files differ
diff --git a/technic/technic/sounds/technic_sonic_screwdriver.ogg b/technic/technic/sounds/technic_sonic_screwdriver.ogg
new file mode 100644
index 0000000..471bb72
--- /dev/null
+++ b/technic/technic/sounds/technic_sonic_screwdriver.ogg
Binary files differ
diff --git a/technic/technic/sounds/vacuumcleaner.ogg b/technic/technic/sounds/vacuumcleaner.ogg
new file mode 100644
index 0000000..39d72de
--- /dev/null
+++ b/technic/technic/sounds/vacuumcleaner.ogg
Binary files differ
diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png
new file mode 100644
index 0000000..2848f89
--- /dev/null
+++ b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png
Binary files differ
diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png
new file mode 100644
index 0000000..4661177
--- /dev/null
+++ b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png
Binary files differ
diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png
new file mode 100644
index 0000000..5187fab
--- /dev/null
+++ b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png
Binary files differ
diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png
new file mode 100644
index 0000000..3d380da
--- /dev/null
+++ b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png
Binary files differ
diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png
new file mode 100644
index 0000000..ba2bd89
--- /dev/null
+++ b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png
Binary files differ
diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png
new file mode 100644
index 0000000..2fa8f18
--- /dev/null
+++ b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png
Binary files differ
diff --git a/technic/technic/textures/power_meter.png b/technic/technic/textures/power_meter.png
new file mode 100644
index 0000000..9f96cac
--- /dev/null
+++ b/technic/technic/textures/power_meter.png
Binary files differ
diff --git a/technic/technic/textures/technic_acacia_grindings.png b/technic/technic/textures/technic_acacia_grindings.png
new file mode 100644
index 0000000..bcfefc9
--- /dev/null
+++ b/technic/technic/textures/technic_acacia_grindings.png
Binary files differ
diff --git a/technic/technic/textures/technic_admin_anchor.png b/technic/technic/textures/technic_admin_anchor.png
new file mode 100644
index 0000000..7ce9b4c
--- /dev/null
+++ b/technic/technic/textures/technic_admin_anchor.png
Binary files differ
diff --git a/technic/technic/textures/technic_akalin_dust.png b/technic/technic/textures/technic_akalin_dust.png
new file mode 100644
index 0000000..052b0ac
--- /dev/null
+++ b/technic/technic/textures/technic_akalin_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_alatro_dust.png b/technic/technic/textures/technic_alatro_dust.png
new file mode 100644
index 0000000..172af25
--- /dev/null
+++ b/technic/technic/textures/technic_alatro_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_arol_dust.png b/technic/technic/textures/technic_arol_dust.png
new file mode 100644
index 0000000..1a575ed
--- /dev/null
+++ b/technic/technic/textures/technic_arol_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_battery.png b/technic/technic/textures/technic_battery.png
new file mode 100644
index 0000000..ee83b74
--- /dev/null
+++ b/technic/technic/textures/technic_battery.png
Binary files differ
diff --git a/technic/technic/textures/technic_battery_box_side.png b/technic/technic/textures/technic_battery_box_side.png
new file mode 100644
index 0000000..98a22d6
--- /dev/null
+++ b/technic/technic/textures/technic_battery_box_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_battery_box_side8.png b/technic/technic/textures/technic_battery_box_side8.png
new file mode 100644
index 0000000..65806f4
--- /dev/null
+++ b/technic/technic/textures/technic_battery_box_side8.png
Binary files differ
diff --git a/technic/technic/textures/technic_battery_box_side_mv.png b/technic/technic/textures/technic_battery_box_side_mv.png
new file mode 100644
index 0000000..06a4be5
--- /dev/null
+++ b/technic/technic/textures/technic_battery_box_side_mv.png
Binary files differ
diff --git a/technic/technic/textures/technic_battery_meter_fg.png b/technic/technic/textures/technic_battery_meter_fg.png
new file mode 100644
index 0000000..2f19bc7
--- /dev/null
+++ b/technic/technic/textures/technic_battery_meter_fg.png
Binary files differ
diff --git a/technic/technic/textures/technic_battery_reload.png b/technic/technic/textures/technic_battery_reload.png
new file mode 100644
index 0000000..4ce48d8
--- /dev/null
+++ b/technic/technic/textures/technic_battery_reload.png
Binary files differ
diff --git a/technic/technic/textures/technic_bronze_dust.png b/technic/technic/textures/technic_bronze_dust.png
new file mode 100644
index 0000000..a613205
--- /dev/null
+++ b/technic/technic/textures/technic_bronze_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_bucket_corium.png b/technic/technic/textures/technic_bucket_corium.png
new file mode 100644
index 0000000..82da7ca
--- /dev/null
+++ b/technic/technic/textures/technic_bucket_corium.png
Binary files differ
diff --git a/technic/technic/textures/technic_carbon_cloth.png b/technic/technic/textures/technic_carbon_cloth.png
new file mode 100644
index 0000000..65a6dab
--- /dev/null
+++ b/technic/technic/textures/technic_carbon_cloth.png
Binary files differ
diff --git a/technic/technic/textures/technic_carbon_plate.png b/technic/technic/textures/technic_carbon_plate.png
new file mode 100644
index 0000000..5da83b8
--- /dev/null
+++ b/technic/technic/textures/technic_carbon_plate.png
Binary files differ
diff --git a/technic/technic/textures/technic_carbon_steel_dust.png b/technic/technic/textures/technic_carbon_steel_dust.png
new file mode 100644
index 0000000..0fa8a17
--- /dev/null
+++ b/technic/technic/textures/technic_carbon_steel_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_cast_iron_dust.png b/technic/technic/textures/technic_cast_iron_dust.png
new file mode 100644
index 0000000..b5690ac
--- /dev/null
+++ b/technic/technic/textures/technic_cast_iron_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_chainsaw.png b/technic/technic/textures/technic_chainsaw.png
new file mode 100644
index 0000000..1a69893
--- /dev/null
+++ b/technic/technic/textures/technic_chainsaw.png
Binary files differ
diff --git a/technic/technic/textures/technic_chernobylite_block.png b/technic/technic/textures/technic_chernobylite_block.png
new file mode 100644
index 0000000..a837c66
--- /dev/null
+++ b/technic/technic/textures/technic_chernobylite_block.png
Binary files differ
diff --git a/technic/technic/textures/technic_chromium_dust.png b/technic/technic/textures/technic_chromium_dust.png
new file mode 100644
index 0000000..0e48069
--- /dev/null
+++ b/technic/technic/textures/technic_chromium_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_bottom.png b/technic/technic/textures/technic_cnc_bottom.png
new file mode 100644
index 0000000..e600cb1
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_cylinder.png b/technic/technic/textures/technic_cnc_cylinder.png
new file mode 100644
index 0000000..48921bd
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_cylinder.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_cylinder_horizontal.png b/technic/technic/textures/technic_cnc_cylinder_horizontal.png
new file mode 100644
index 0000000..82eb24c
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_cylinder_horizontal.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_element_cross.png b/technic/technic/textures/technic_cnc_element_cross.png
new file mode 100644
index 0000000..cc66571
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_element_cross.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_element_edge.png b/technic/technic/textures/technic_cnc_element_edge.png
new file mode 100644
index 0000000..1245ea7
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_element_edge.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_element_end.png b/technic/technic/textures/technic_cnc_element_end.png
new file mode 100644
index 0000000..562eb2b
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_element_end.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_element_straight.png b/technic/technic/textures/technic_cnc_element_straight.png
new file mode 100644
index 0000000..d42966e
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_element_straight.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_element_t.png b/technic/technic/textures/technic_cnc_element_t.png
new file mode 100644
index 0000000..a462764
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_element_t.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_front.png b/technic/technic/textures/technic_cnc_front.png
new file mode 100644
index 0000000..6cc0490
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_front_active.png b/technic/technic/textures/technic_cnc_front_active.png
new file mode 100644
index 0000000..f7a3c7f
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_full.png b/technic/technic/textures/technic_cnc_full.png
new file mode 100644
index 0000000..60f8a81
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_full.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_half.png b/technic/technic/textures/technic_cnc_half.png
new file mode 100644
index 0000000..2c4d3a8
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_half.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_milling_background.png b/technic/technic/textures/technic_cnc_milling_background.png
new file mode 100644
index 0000000..6a9c2f4
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_milling_background.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_oblate_spheroid.png b/technic/technic/textures/technic_cnc_oblate_spheroid.png
new file mode 100644
index 0000000..b196e7d
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_oblate_spheroid.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_onecurvededge.png b/technic/technic/textures/technic_cnc_onecurvededge.png
new file mode 100644
index 0000000..8325846
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_onecurvededge.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_pyramid.png b/technic/technic/textures/technic_cnc_pyramid.png
new file mode 100644
index 0000000..d8cc713
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_pyramid.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_side.png b/technic/technic/textures/technic_cnc_side.png
new file mode 100644
index 0000000..1ecbbac
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope.png b/technic/technic/textures/technic_cnc_slope.png
new file mode 100644
index 0000000..493d560
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope_edge.png b/technic/technic/textures/technic_cnc_slope_edge.png
new file mode 100644
index 0000000..1b601c4
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope_edge.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope_edge_upsdwn.png b/technic/technic/textures/technic_cnc_slope_edge_upsdwn.png
new file mode 100644
index 0000000..350c22d
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope_edge_upsdwn.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope_inner_edge.png b/technic/technic/textures/technic_cnc_slope_inner_edge.png
new file mode 100644
index 0000000..3f5ab9e
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope_inner_edge.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png b/technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png
new file mode 100644
index 0000000..a1fee78
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope_lying.png b/technic/technic/textures/technic_cnc_slope_lying.png
new file mode 100644
index 0000000..099ed59
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope_lying.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_slope_upsdwn.png b/technic/technic/textures/technic_cnc_slope_upsdwn.png
new file mode 100644
index 0000000..2a34b8b
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_slope_upsdwn.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_sphere.png b/technic/technic/textures/technic_cnc_sphere.png
new file mode 100644
index 0000000..791b32b
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_sphere.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_spike.png b/technic/technic/textures/technic_cnc_spike.png
new file mode 100644
index 0000000..b445b40
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_spike.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_stick.png b/technic/technic/textures/technic_cnc_stick.png
new file mode 100644
index 0000000..acaf1cb
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_stick.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_top.png b/technic/technic/textures/technic_cnc_top.png
new file mode 100644
index 0000000..5123334
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_top_active.png b/technic/technic/textures/technic_cnc_top_active.png
new file mode 100644
index 0000000..2bc9d81
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_top_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_cnc_twocurvededge.png b/technic/technic/textures/technic_cnc_twocurvededge.png
new file mode 100644
index 0000000..b50a257
--- /dev/null
+++ b/technic/technic/textures/technic_cnc_twocurvededge.png
Binary files differ
diff --git a/technic/technic/textures/technic_coal_alloy_furnace_bottom.png b/technic/technic/textures/technic_coal_alloy_furnace_bottom.png
new file mode 100644
index 0000000..077dec5
--- /dev/null
+++ b/technic/technic/textures/technic_coal_alloy_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_coal_alloy_furnace_front.png b/technic/technic/textures/technic_coal_alloy_furnace_front.png
new file mode 100644
index 0000000..d9d93dd
--- /dev/null
+++ b/technic/technic/textures/technic_coal_alloy_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_coal_alloy_furnace_front_active.png b/technic/technic/textures/technic_coal_alloy_furnace_front_active.png
new file mode 100644
index 0000000..ffc4e0a
--- /dev/null
+++ b/technic/technic/textures/technic_coal_alloy_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_coal_alloy_furnace_side.png b/technic/technic/textures/technic_coal_alloy_furnace_side.png
new file mode 100644
index 0000000..d5c7066
--- /dev/null
+++ b/technic/technic/textures/technic_coal_alloy_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_coal_alloy_furnace_top.png b/technic/technic/textures/technic_coal_alloy_furnace_top.png
new file mode 100644
index 0000000..6424fc0
--- /dev/null
+++ b/technic/technic/textures/technic_coal_alloy_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_coal_dust.png b/technic/technic/textures/technic_coal_dust.png
new file mode 100644
index 0000000..a1486c6
--- /dev/null
+++ b/technic/technic/textures/technic_coal_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_common_tree_grindings.png b/technic/technic/textures/technic_common_tree_grindings.png
new file mode 100644
index 0000000..e17bb69
--- /dev/null
+++ b/technic/technic/textures/technic_common_tree_grindings.png
Binary files differ
diff --git a/technic/technic/textures/technic_composite_plate.png b/technic/technic/textures/technic_composite_plate.png
new file mode 100644
index 0000000..79b7b8d
--- /dev/null
+++ b/technic/technic/textures/technic_composite_plate.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_back.png b/technic/technic/textures/technic_constructor_back.png
new file mode 100644
index 0000000..f002363
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_back.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_front_off.png b/technic/technic/textures/technic_constructor_front_off.png
new file mode 100644
index 0000000..f3f7856
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_front_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_front_on.png b/technic/technic/textures/technic_constructor_front_on.png
new file mode 100644
index 0000000..d733765
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_front_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_bottom_off.png b/technic/technic/textures/technic_constructor_mk1_bottom_off.png
new file mode 100644
index 0000000..0c52557
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_bottom_on.png b/technic/technic/textures/technic_constructor_mk1_bottom_on.png
new file mode 100644
index 0000000..0c46c57
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_side1_off.png b/technic/technic/textures/technic_constructor_mk1_side1_off.png
new file mode 100644
index 0000000..e64ddbe
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_side1_on.png b/technic/technic/textures/technic_constructor_mk1_side1_on.png
new file mode 100644
index 0000000..eda98d8
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_side2_off.png b/technic/technic/textures/technic_constructor_mk1_side2_off.png
new file mode 100644
index 0000000..b33fcfb
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_side2_on.png b/technic/technic/textures/technic_constructor_mk1_side2_on.png
new file mode 100644
index 0000000..17e4786
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_top_off.png b/technic/technic/textures/technic_constructor_mk1_top_off.png
new file mode 100644
index 0000000..9f3846c
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk1_top_on.png b/technic/technic/textures/technic_constructor_mk1_top_on.png
new file mode 100644
index 0000000..5c8d6fb
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk1_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_bottom_off.png b/technic/technic/textures/technic_constructor_mk2_bottom_off.png
new file mode 100644
index 0000000..e926dda
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_bottom_on.png b/technic/technic/textures/technic_constructor_mk2_bottom_on.png
new file mode 100644
index 0000000..52d739b
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_side1_off.png b/technic/technic/textures/technic_constructor_mk2_side1_off.png
new file mode 100644
index 0000000..2fd42a2
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_side1_on.png b/technic/technic/textures/technic_constructor_mk2_side1_on.png
new file mode 100644
index 0000000..4c75c83
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_side2_off.png b/technic/technic/textures/technic_constructor_mk2_side2_off.png
new file mode 100644
index 0000000..f6407e7
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_side2_on.png b/technic/technic/textures/technic_constructor_mk2_side2_on.png
new file mode 100644
index 0000000..e40db48
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_top_off.png b/technic/technic/textures/technic_constructor_mk2_top_off.png
new file mode 100644
index 0000000..e5227d1
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk2_top_on.png b/technic/technic/textures/technic_constructor_mk2_top_on.png
new file mode 100644
index 0000000..9762bd6
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk2_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_bottom_off.png b/technic/technic/textures/technic_constructor_mk3_bottom_off.png
new file mode 100644
index 0000000..606d97e
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_bottom_on.png b/technic/technic/textures/technic_constructor_mk3_bottom_on.png
new file mode 100644
index 0000000..878e4ff
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_side1_off.png b/technic/technic/textures/technic_constructor_mk3_side1_off.png
new file mode 100644
index 0000000..84dd7eb
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_side1_on.png b/technic/technic/textures/technic_constructor_mk3_side1_on.png
new file mode 100644
index 0000000..2741d2d
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_side2_off.png b/technic/technic/textures/technic_constructor_mk3_side2_off.png
new file mode 100644
index 0000000..75a5031
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_side2_on.png b/technic/technic/textures/technic_constructor_mk3_side2_on.png
new file mode 100644
index 0000000..0a150ed
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_top_off.png b/technic/technic/textures/technic_constructor_mk3_top_off.png
new file mode 100644
index 0000000..c716752
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_constructor_mk3_top_on.png b/technic/technic/textures/technic_constructor_mk3_top_on.png
new file mode 100644
index 0000000..acbe85b
--- /dev/null
+++ b/technic/technic/textures/technic_constructor_mk3_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_control_logic_unit.png b/technic/technic/textures/technic_control_logic_unit.png
new file mode 100644
index 0000000..c7b4b16
--- /dev/null
+++ b/technic/technic/textures/technic_control_logic_unit.png
Binary files differ
diff --git a/technic/technic/textures/technic_copper_coil.png b/technic/technic/textures/technic_copper_coil.png
new file mode 100644
index 0000000..db6db1a
--- /dev/null
+++ b/technic/technic/textures/technic_copper_coil.png
Binary files differ
diff --git a/technic/technic/textures/technic_copper_dust.png b/technic/technic/textures/technic_copper_dust.png
new file mode 100644
index 0000000..cad33ea
--- /dev/null
+++ b/technic/technic/textures/technic_copper_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_copper_plate.png b/technic/technic/textures/technic_copper_plate.png
new file mode 100644
index 0000000..99a49c8
--- /dev/null
+++ b/technic/technic/textures/technic_copper_plate.png
Binary files differ
diff --git a/technic/technic/textures/technic_corium_flowing_animated.png b/technic/technic/textures/technic_corium_flowing_animated.png
new file mode 100644
index 0000000..1d29f16
--- /dev/null
+++ b/technic/technic/textures/technic_corium_flowing_animated.png
Binary files differ
diff --git a/technic/technic/textures/technic_corium_source_animated.png b/technic/technic/textures/technic_corium_source_animated.png
new file mode 100644
index 0000000..6c3ee56
--- /dev/null
+++ b/technic/technic/textures/technic_corium_source_animated.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_back.png b/technic/technic/textures/technic_deployer_back.png
new file mode 100644
index 0000000..12e5a31
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_back.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_bottom.png b/technic/technic/textures/technic_deployer_bottom.png
new file mode 100644
index 0000000..febbe18
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_front_off.png b/technic/technic/textures/technic_deployer_front_off.png
new file mode 100644
index 0000000..9593112
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_front_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_front_on.png b/technic/technic/textures/technic_deployer_front_on.png
new file mode 100644
index 0000000..f78de4c
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_front_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_side.png b/technic/technic/textures/technic_deployer_side.png
new file mode 100644
index 0000000..73af8f8
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_side1.png b/technic/technic/textures/technic_deployer_side1.png
new file mode 100644
index 0000000..8ef28d3
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_side1.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_side2.png b/technic/technic/textures/technic_deployer_side2.png
new file mode 100644
index 0000000..ccb2cb9
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_side2.png
Binary files differ
diff --git a/technic/technic/textures/technic_deployer_top.png b/technic/technic/textures/technic_deployer_top.png
new file mode 100644
index 0000000..262c9f6
--- /dev/null
+++ b/technic/technic/textures/technic_deployer_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_diamond_block_blue.png b/technic/technic/textures/technic_diamond_block_blue.png
new file mode 100644
index 0000000..9f59fba
--- /dev/null
+++ b/technic/technic/textures/technic_diamond_block_blue.png
Binary files differ
diff --git a/technic/technic/textures/technic_diamond_block_green.png b/technic/technic/textures/technic_diamond_block_green.png
new file mode 100644
index 0000000..585c4b8
--- /dev/null
+++ b/technic/technic/textures/technic_diamond_block_green.png
Binary files differ
diff --git a/technic/technic/textures/technic_diamond_block_red.png b/technic/technic/textures/technic_diamond_block_red.png
new file mode 100644
index 0000000..ed30957
--- /dev/null
+++ b/technic/technic/textures/technic_diamond_block_red.png
Binary files differ
diff --git a/technic/technic/textures/technic_diamond_drill_head.png b/technic/technic/textures/technic_diamond_drill_head.png
new file mode 100644
index 0000000..e3d31e8
--- /dev/null
+++ b/technic/technic/textures/technic_diamond_drill_head.png
Binary files differ
diff --git a/technic/technic/textures/technic_doped_silicon_wafer.png b/technic/technic/textures/technic_doped_silicon_wafer.png
new file mode 100644
index 0000000..6365137
--- /dev/null
+++ b/technic/technic/textures/technic_doped_silicon_wafer.png
Binary files differ
diff --git a/technic/technic/textures/technic_fine_copper_wire.png b/technic/technic/textures/technic_fine_copper_wire.png
new file mode 100644
index 0000000..3e663bb
--- /dev/null
+++ b/technic/technic/textures/technic_fine_copper_wire.png
Binary files differ
diff --git a/technic/technic/textures/technic_fine_gold_wire.png b/technic/technic/textures/technic_fine_gold_wire.png
new file mode 100644
index 0000000..54a7a52
--- /dev/null
+++ b/technic/technic/textures/technic_fine_gold_wire.png
Binary files differ
diff --git a/technic/technic/textures/technic_fine_silver_wire.png b/technic/technic/textures/technic_fine_silver_wire.png
new file mode 100644
index 0000000..f40a52b
--- /dev/null
+++ b/technic/technic/textures/technic_fine_silver_wire.png
Binary files differ
diff --git a/technic/technic/textures/technic_flashlight.png b/technic/technic/textures/technic_flashlight.png
new file mode 100644
index 0000000..8e7b75a
--- /dev/null
+++ b/technic/technic/textures/technic_flashlight.png
Binary files differ
diff --git a/technic/technic/textures/technic_forcefield_animated.png b/technic/technic/textures/technic_forcefield_animated.png
new file mode 100644
index 0000000..7763840
--- /dev/null
+++ b/technic/technic/textures/technic_forcefield_animated.png
Binary files differ
diff --git a/technic/technic/textures/technic_forcefield_emitter_off.png b/technic/technic/textures/technic_forcefield_emitter_off.png
new file mode 100644
index 0000000..4c4582f
--- /dev/null
+++ b/technic/technic/textures/technic_forcefield_emitter_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_forcefield_emitter_on.png b/technic/technic/textures/technic_forcefield_emitter_on.png
new file mode 100644
index 0000000..1f32af6
--- /dev/null
+++ b/technic/technic/textures/technic_forcefield_emitter_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_frame.png b/technic/technic/textures/technic_frame.png
new file mode 100644
index 0000000..4998120
--- /dev/null
+++ b/technic/technic/textures/technic_frame.png
Binary files differ
diff --git a/technic/technic/textures/technic_geothermal_side.png b/technic/technic/textures/technic_geothermal_side.png
new file mode 100644
index 0000000..90fb430
--- /dev/null
+++ b/technic/technic/textures/technic_geothermal_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_geothermal_top.png b/technic/technic/textures/technic_geothermal_top.png
new file mode 100644
index 0000000..601ff15
--- /dev/null
+++ b/technic/technic/textures/technic_geothermal_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_geothermal_top_active.png b/technic/technic/textures/technic_geothermal_top_active.png
new file mode 100644
index 0000000..f02bec6
--- /dev/null
+++ b/technic/technic/textures/technic_geothermal_top_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_gold_dust.png b/technic/technic/textures/technic_gold_dust.png
new file mode 100644
index 0000000..48c24ae
--- /dev/null
+++ b/technic/technic/textures/technic_gold_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_graphite.png b/technic/technic/textures/technic_graphite.png
new file mode 100644
index 0000000..00cd0ee
--- /dev/null
+++ b/technic/technic/textures/technic_graphite.png
Binary files differ
diff --git a/technic/technic/textures/technic_grinder_front.png b/technic/technic/textures/technic_grinder_front.png
new file mode 100644
index 0000000..a28dbc1
--- /dev/null
+++ b/technic/technic/textures/technic_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_grinder_side.png b/technic/technic/textures/technic_grinder_side.png
new file mode 100644
index 0000000..af562f2
--- /dev/null
+++ b/technic/technic/textures/technic_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_grinder_top.png b/technic/technic/textures/technic_grinder_top.png
new file mode 100644
index 0000000..b074e13
--- /dev/null
+++ b/technic/technic/textures/technic_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png b/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png
new file mode 100644
index 0000000..9121999
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png b/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png
new file mode 100644
index 0000000..c8006eb
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png b/technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png
new file mode 100644
index 0000000..b2e355a
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png
new file mode 100644
index 0000000..b79be07
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png
new file mode 100644
index 0000000..a9d397a
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png
new file mode 100644
index 0000000..daf03ab
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png
new file mode 100644
index 0000000..44c2b36
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png
new file mode 100644
index 0000000..937999e
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png
new file mode 100644
index 0000000..769b054
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png
new file mode 100644
index 0000000..57820f1
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png
new file mode 100644
index 0000000..0a337a5
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png
new file mode 100644
index 0000000..0fd3b1e
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png
new file mode 100644
index 0000000..55bb6c0
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png
new file mode 100644
index 0000000..4b28a27
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_white_tb.png b/technic/technic/textures/technic_homedecor_glowlight_white_tb.png
new file mode 100644
index 0000000..fdc8a4d
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_white_tb.png
Binary files differ
diff --git a/technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png b/technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png
new file mode 100644
index 0000000..ffd9c58
--- /dev/null
+++ b/technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_battery_box_bottom.png b/technic/technic/textures/technic_hv_battery_box_bottom.png
new file mode 100644
index 0000000..996b2d4
--- /dev/null
+++ b/technic/technic/textures/technic_hv_battery_box_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_battery_box_side.png b/technic/technic/textures/technic_hv_battery_box_side.png
new file mode 100644
index 0000000..fffd8ea
--- /dev/null
+++ b/technic/technic/textures/technic_hv_battery_box_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_battery_box_top.png b/technic/technic/textures/technic_hv_battery_box_top.png
new file mode 100644
index 0000000..49dee71
--- /dev/null
+++ b/technic/technic/textures/technic_hv_battery_box_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_cable.png b/technic/technic/textures/technic_hv_cable.png
new file mode 100644
index 0000000..7cb368d
--- /dev/null
+++ b/technic/technic/textures/technic_hv_cable.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_cable_wield.png b/technic/technic/textures/technic_hv_cable_wield.png
new file mode 100644
index 0000000..7b9ca58
--- /dev/null
+++ b/technic/technic/textures/technic_hv_cable_wield.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_down_converter_bottom.png b/technic/technic/textures/technic_hv_down_converter_bottom.png
new file mode 100644
index 0000000..996b2d4
--- /dev/null
+++ b/technic/technic/textures/technic_hv_down_converter_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_down_converter_side.png b/technic/technic/textures/technic_hv_down_converter_side.png
new file mode 100644
index 0000000..ab904f1
--- /dev/null
+++ b/technic/technic/textures/technic_hv_down_converter_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_down_converter_top.png b/technic/technic/textures/technic_hv_down_converter_top.png
new file mode 100644
index 0000000..996b2d4
--- /dev/null
+++ b/technic/technic/textures/technic_hv_down_converter_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_generator_front.png b/technic/technic/textures/technic_hv_generator_front.png
new file mode 100644
index 0000000..6a14686
--- /dev/null
+++ b/technic/technic/textures/technic_hv_generator_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_generator_front_active.png b/technic/technic/textures/technic_hv_generator_front_active.png
new file mode 100644
index 0000000..d92c699
--- /dev/null
+++ b/technic/technic/textures/technic_hv_generator_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_generator_side.png b/technic/technic/textures/technic_hv_generator_side.png
new file mode 100644
index 0000000..3073e0f
--- /dev/null
+++ b/technic/technic/textures/technic_hv_generator_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_generator_top.png b/technic/technic/textures/technic_hv_generator_top.png
new file mode 100644
index 0000000..646168c
--- /dev/null
+++ b/technic/technic/textures/technic_hv_generator_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_grinder_bottom.png b/technic/technic/textures/technic_hv_grinder_bottom.png
new file mode 100644
index 0000000..fa2c135
--- /dev/null
+++ b/technic/technic/textures/technic_hv_grinder_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_grinder_front.png b/technic/technic/textures/technic_hv_grinder_front.png
new file mode 100644
index 0000000..a5bca0a
--- /dev/null
+++ b/technic/technic/textures/technic_hv_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_grinder_front_active.png b/technic/technic/textures/technic_hv_grinder_front_active.png
new file mode 100644
index 0000000..4077630
--- /dev/null
+++ b/technic/technic/textures/technic_hv_grinder_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_grinder_side.png b/technic/technic/textures/technic_hv_grinder_side.png
new file mode 100644
index 0000000..c3063c4
--- /dev/null
+++ b/technic/technic/textures/technic_hv_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_grinder_side_tube.png b/technic/technic/textures/technic_hv_grinder_side_tube.png
new file mode 100644
index 0000000..43bcca5
--- /dev/null
+++ b/technic/technic/textures/technic_hv_grinder_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_grinder_top.png b/technic/technic/textures/technic_hv_grinder_top.png
new file mode 100644
index 0000000..e0df36b
--- /dev/null
+++ b/technic/technic/textures/technic_hv_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_nuclear_reactor_core.png b/technic/technic/textures/technic_hv_nuclear_reactor_core.png
new file mode 100644
index 0000000..4661177
--- /dev/null
+++ b/technic/technic/textures/technic_hv_nuclear_reactor_core.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_solar_array_bottom.png b/technic/technic/textures/technic_hv_solar_array_bottom.png
new file mode 100644
index 0000000..596e79a
--- /dev/null
+++ b/technic/technic/textures/technic_hv_solar_array_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_solar_array_side.png b/technic/technic/textures/technic_hv_solar_array_side.png
new file mode 100644
index 0000000..a3aa8c7
--- /dev/null
+++ b/technic/technic/textures/technic_hv_solar_array_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_solar_array_top.png b/technic/technic/textures/technic_hv_solar_array_top.png
new file mode 100644
index 0000000..b7f0b43
--- /dev/null
+++ b/technic/technic/textures/technic_hv_solar_array_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_hv_transformer.png b/technic/technic/textures/technic_hv_transformer.png
new file mode 100644
index 0000000..e1d4c98
--- /dev/null
+++ b/technic/technic/textures/technic_hv_transformer.png
Binary files differ
diff --git a/technic/technic/textures/technic_injector_bottom.png b/technic/technic/textures/technic_injector_bottom.png
new file mode 100644
index 0000000..39916bd
--- /dev/null
+++ b/technic/technic/textures/technic_injector_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_injector_side.png b/technic/technic/textures/technic_injector_side.png
new file mode 100644
index 0000000..a5419a1
--- /dev/null
+++ b/technic/technic/textures/technic_injector_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_injector_top.png b/technic/technic/textures/technic_injector_top.png
new file mode 100644
index 0000000..440649c
--- /dev/null
+++ b/technic/technic/textures/technic_injector_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_kalite_dust.png b/technic/technic/textures/technic_kalite_dust.png
new file mode 100644
index 0000000..3a9e10f
--- /dev/null
+++ b/technic/technic/textures/technic_kalite_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_laser_beam_mk1.png b/technic/technic/textures/technic_laser_beam_mk1.png
new file mode 100644
index 0000000..4cf9b3e
--- /dev/null
+++ b/technic/technic/textures/technic_laser_beam_mk1.png
Binary files differ
diff --git a/technic/technic/textures/technic_laser_beam_mk2.png b/technic/technic/textures/technic_laser_beam_mk2.png
new file mode 100644
index 0000000..9e27a8c
--- /dev/null
+++ b/technic/technic/textures/technic_laser_beam_mk2.png
Binary files differ
diff --git a/technic/technic/textures/technic_laser_beam_mk3.png b/technic/technic/textures/technic_laser_beam_mk3.png
new file mode 100644
index 0000000..5a17e83
--- /dev/null
+++ b/technic/technic/textures/technic_laser_beam_mk3.png
Binary files differ
diff --git a/technic/technic/textures/technic_lava_can.png b/technic/technic/textures/technic_lava_can.png
new file mode 100644
index 0000000..abe1a8c
--- /dev/null
+++ b/technic/technic/textures/technic_lava_can.png
Binary files differ
diff --git a/technic/technic/textures/technic_light.png b/technic/technic/textures/technic_light.png
new file mode 100644
index 0000000..334cb07
--- /dev/null
+++ b/technic/technic/textures/technic_light.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_alloy_furnace_bottom.png b/technic/technic/textures/technic_lv_alloy_furnace_bottom.png
new file mode 100644
index 0000000..2c0aaee
--- /dev/null
+++ b/technic/technic/textures/technic_lv_alloy_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_alloy_furnace_front.png b/technic/technic/textures/technic_lv_alloy_furnace_front.png
new file mode 100644
index 0000000..2d65cda
--- /dev/null
+++ b/technic/technic/textures/technic_lv_alloy_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_alloy_furnace_front_active.png b/technic/technic/textures/technic_lv_alloy_furnace_front_active.png
new file mode 100644
index 0000000..1ced989
--- /dev/null
+++ b/technic/technic/textures/technic_lv_alloy_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_alloy_furnace_side.png b/technic/technic/textures/technic_lv_alloy_furnace_side.png
new file mode 100644
index 0000000..778ad88
--- /dev/null
+++ b/technic/technic/textures/technic_lv_alloy_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_alloy_furnace_top.png b/technic/technic/textures/technic_lv_alloy_furnace_top.png
new file mode 100644
index 0000000..706793b
--- /dev/null
+++ b/technic/technic/textures/technic_lv_alloy_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_battery_box_bottom.png b/technic/technic/textures/technic_lv_battery_box_bottom.png
new file mode 100644
index 0000000..a6124e6
--- /dev/null
+++ b/technic/technic/textures/technic_lv_battery_box_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_battery_box_side.png b/technic/technic/textures/technic_lv_battery_box_side.png
new file mode 100644
index 0000000..24d4e4e
--- /dev/null
+++ b/technic/technic/textures/technic_lv_battery_box_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_battery_box_top.png b/technic/technic/textures/technic_lv_battery_box_top.png
new file mode 100644
index 0000000..b32100f
--- /dev/null
+++ b/technic/technic/textures/technic_lv_battery_box_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_cable.png b/technic/technic/textures/technic_lv_cable.png
new file mode 100644
index 0000000..0071bc9
--- /dev/null
+++ b/technic/technic/textures/technic_lv_cable.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_cable_wield.png b/technic/technic/textures/technic_lv_cable_wield.png
new file mode 100644
index 0000000..bc7704d
--- /dev/null
+++ b/technic/technic/textures/technic_lv_cable_wield.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_compressor_back.png b/technic/technic/textures/technic_lv_compressor_back.png
new file mode 100644
index 0000000..11286e3
--- /dev/null
+++ b/technic/technic/textures/technic_lv_compressor_back.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_compressor_bottom.png b/technic/technic/textures/technic_lv_compressor_bottom.png
new file mode 100644
index 0000000..886f27e
--- /dev/null
+++ b/technic/technic/textures/technic_lv_compressor_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_compressor_front.png b/technic/technic/textures/technic_lv_compressor_front.png
new file mode 100644
index 0000000..007d6de
--- /dev/null
+++ b/technic/technic/textures/technic_lv_compressor_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_compressor_front_active.png b/technic/technic/textures/technic_lv_compressor_front_active.png
new file mode 100644
index 0000000..b3d27c0
--- /dev/null
+++ b/technic/technic/textures/technic_lv_compressor_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_compressor_side.png b/technic/technic/textures/technic_lv_compressor_side.png
new file mode 100644
index 0000000..87acda6
--- /dev/null
+++ b/technic/technic/textures/technic_lv_compressor_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_compressor_top.png b/technic/technic/textures/technic_lv_compressor_top.png
new file mode 100644
index 0000000..786b859
--- /dev/null
+++ b/technic/technic/textures/technic_lv_compressor_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_electric_furnace_bottom.png b/technic/technic/textures/technic_lv_electric_furnace_bottom.png
new file mode 100644
index 0000000..15fa6de
--- /dev/null
+++ b/technic/technic/textures/technic_lv_electric_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_electric_furnace_front.png b/technic/technic/textures/technic_lv_electric_furnace_front.png
new file mode 100644
index 0000000..755aadf
--- /dev/null
+++ b/technic/technic/textures/technic_lv_electric_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_electric_furnace_front_active.png b/technic/technic/textures/technic_lv_electric_furnace_front_active.png
new file mode 100644
index 0000000..de7f1f9
--- /dev/null
+++ b/technic/technic/textures/technic_lv_electric_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_electric_furnace_side.png b/technic/technic/textures/technic_lv_electric_furnace_side.png
new file mode 100644
index 0000000..80cf742
--- /dev/null
+++ b/technic/technic/textures/technic_lv_electric_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_electric_furnace_top.png b/technic/technic/textures/technic_lv_electric_furnace_top.png
new file mode 100644
index 0000000..fbadd9a
--- /dev/null
+++ b/technic/technic/textures/technic_lv_electric_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_extractor_bottom.png b/technic/technic/textures/technic_lv_extractor_bottom.png
new file mode 100644
index 0000000..aecd719
--- /dev/null
+++ b/technic/technic/textures/technic_lv_extractor_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_extractor_front.png b/technic/technic/textures/technic_lv_extractor_front.png
new file mode 100644
index 0000000..1bd7e9a
--- /dev/null
+++ b/technic/technic/textures/technic_lv_extractor_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_extractor_front_active.png b/technic/technic/textures/technic_lv_extractor_front_active.png
new file mode 100644
index 0000000..7f8b30a
--- /dev/null
+++ b/technic/technic/textures/technic_lv_extractor_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_extractor_side.png b/technic/technic/textures/technic_lv_extractor_side.png
new file mode 100644
index 0000000..99d9486
--- /dev/null
+++ b/technic/technic/textures/technic_lv_extractor_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_extractor_top.png b/technic/technic/textures/technic_lv_extractor_top.png
new file mode 100644
index 0000000..e7d9ff9
--- /dev/null
+++ b/technic/technic/textures/technic_lv_extractor_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_generator_front.png b/technic/technic/textures/technic_lv_generator_front.png
new file mode 100644
index 0000000..2d64844
--- /dev/null
+++ b/technic/technic/textures/technic_lv_generator_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_generator_front_active.png b/technic/technic/textures/technic_lv_generator_front_active.png
new file mode 100644
index 0000000..4e57ca0
--- /dev/null
+++ b/technic/technic/textures/technic_lv_generator_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_generator_side.png b/technic/technic/textures/technic_lv_generator_side.png
new file mode 100644
index 0000000..5cbcbef
--- /dev/null
+++ b/technic/technic/textures/technic_lv_generator_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_generator_top.png b/technic/technic/textures/technic_lv_generator_top.png
new file mode 100644
index 0000000..e2f3db3
--- /dev/null
+++ b/technic/technic/textures/technic_lv_generator_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_grinder_bottom.png b/technic/technic/textures/technic_lv_grinder_bottom.png
new file mode 100644
index 0000000..aecd719
--- /dev/null
+++ b/technic/technic/textures/technic_lv_grinder_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_grinder_front.png b/technic/technic/textures/technic_lv_grinder_front.png
new file mode 100644
index 0000000..1bd7e9a
--- /dev/null
+++ b/technic/technic/textures/technic_lv_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_grinder_front_active.png b/technic/technic/textures/technic_lv_grinder_front_active.png
new file mode 100644
index 0000000..7f8b30a
--- /dev/null
+++ b/technic/technic/textures/technic_lv_grinder_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_grinder_side.png b/technic/technic/textures/technic_lv_grinder_side.png
new file mode 100644
index 0000000..99d9486
--- /dev/null
+++ b/technic/technic/textures/technic_lv_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_grinder_top.png b/technic/technic/textures/technic_lv_grinder_top.png
new file mode 100644
index 0000000..e7d9ff9
--- /dev/null
+++ b/technic/technic/textures/technic_lv_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_solar_array_bottom.png b/technic/technic/textures/technic_lv_solar_array_bottom.png
new file mode 100644
index 0000000..9e888e3
--- /dev/null
+++ b/technic/technic/textures/technic_lv_solar_array_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_solar_array_side.png b/technic/technic/textures/technic_lv_solar_array_side.png
new file mode 100644
index 0000000..b22447e
--- /dev/null
+++ b/technic/technic/textures/technic_lv_solar_array_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_solar_array_top.png b/technic/technic/textures/technic_lv_solar_array_top.png
new file mode 100644
index 0000000..cabd315
--- /dev/null
+++ b/technic/technic/textures/technic_lv_solar_array_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_lv_transformer.png b/technic/technic/textures/technic_lv_transformer.png
new file mode 100644
index 0000000..613b196
--- /dev/null
+++ b/technic/technic/textures/technic_lv_transformer.png
Binary files differ
diff --git a/technic/technic/textures/technic_machine_bottom.png b/technic/technic/textures/technic_machine_bottom.png
new file mode 100644
index 0000000..48a47b0
--- /dev/null
+++ b/technic/technic/textures/technic_machine_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_machine_casing.png b/technic/technic/textures/technic_machine_casing.png
new file mode 100644
index 0000000..d596733
--- /dev/null
+++ b/technic/technic/textures/technic_machine_casing.png
Binary files differ
diff --git a/technic/technic/textures/technic_mining_drill.png b/technic/technic/textures/technic_mining_drill.png
new file mode 100644
index 0000000..171888d
--- /dev/null
+++ b/technic/technic/textures/technic_mining_drill.png
Binary files differ
diff --git a/technic/technic/textures/technic_mining_drill_mk2.png b/technic/technic/textures/technic_mining_drill_mk2.png
new file mode 100644
index 0000000..30be719
--- /dev/null
+++ b/technic/technic/textures/technic_mining_drill_mk2.png
Binary files differ
diff --git a/technic/technic/textures/technic_mining_drill_mk3.png b/technic/technic/textures/technic_mining_drill_mk3.png
new file mode 100644
index 0000000..30de896
--- /dev/null
+++ b/technic/technic/textures/technic_mining_drill_mk3.png
Binary files differ
diff --git a/technic/technic/textures/technic_mining_laser_mk1.png b/technic/technic/textures/technic_mining_laser_mk1.png
new file mode 100644
index 0000000..29faeb4
--- /dev/null
+++ b/technic/technic/textures/technic_mining_laser_mk1.png
Binary files differ
diff --git a/technic/technic/textures/technic_mining_laser_mk2.png b/technic/technic/textures/technic_mining_laser_mk2.png
new file mode 100644
index 0000000..2d67c0f
--- /dev/null
+++ b/technic/technic/textures/technic_mining_laser_mk2.png
Binary files differ
diff --git a/technic/technic/textures/technic_mining_laser_mk3.png b/technic/technic/textures/technic_mining_laser_mk3.png
new file mode 100644
index 0000000..db9ee26
--- /dev/null
+++ b/technic/technic/textures/technic_mining_laser_mk3.png
Binary files differ
diff --git a/technic/technic/textures/technic_mithril_dust.png b/technic/technic/textures/technic_mithril_dust.png
new file mode 100644
index 0000000..adfbe6c
--- /dev/null
+++ b/technic/technic/textures/technic_mithril_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_mixed_metal_ingot.png b/technic/technic/textures/technic_mixed_metal_ingot.png
new file mode 100644
index 0000000..8f6847b
--- /dev/null
+++ b/technic/technic/textures/technic_mixed_metal_ingot.png
Binary files differ
diff --git a/technic/technic/textures/technic_motor.png b/technic/technic/textures/technic_motor.png
new file mode 100644
index 0000000..77d4b91
--- /dev/null
+++ b/technic/technic/textures/technic_motor.png
Binary files differ
diff --git a/technic/technic/textures/technic_music_player_bottom.png b/technic/technic/textures/technic_music_player_bottom.png
new file mode 100644
index 0000000..bd8fd55
--- /dev/null
+++ b/technic/technic/textures/technic_music_player_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_music_player_side.png b/technic/technic/textures/technic_music_player_side.png
new file mode 100644
index 0000000..6c34fea
--- /dev/null
+++ b/technic/technic/textures/technic_music_player_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_music_player_top.png b/technic/technic/textures/technic_music_player_top.png
new file mode 100644
index 0000000..0d34563
--- /dev/null
+++ b/technic/technic/textures/technic_music_player_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_alloy_furnace_bottom.png b/technic/technic/textures/technic_mv_alloy_furnace_bottom.png
new file mode 100644
index 0000000..2c0aaee
--- /dev/null
+++ b/technic/technic/textures/technic_mv_alloy_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_alloy_furnace_front.png b/technic/technic/textures/technic_mv_alloy_furnace_front.png
new file mode 100644
index 0000000..a5dac82
--- /dev/null
+++ b/technic/technic/textures/technic_mv_alloy_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_alloy_furnace_front_active.png b/technic/technic/textures/technic_mv_alloy_furnace_front_active.png
new file mode 100644
index 0000000..f6e69a9
--- /dev/null
+++ b/technic/technic/textures/technic_mv_alloy_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_alloy_furnace_side.png b/technic/technic/textures/technic_mv_alloy_furnace_side.png
new file mode 100644
index 0000000..0430479
--- /dev/null
+++ b/technic/technic/textures/technic_mv_alloy_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_alloy_furnace_side_tube.png b/technic/technic/textures/technic_mv_alloy_furnace_side_tube.png
new file mode 100644
index 0000000..1800eed
--- /dev/null
+++ b/technic/technic/textures/technic_mv_alloy_furnace_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_alloy_furnace_top.png b/technic/technic/textures/technic_mv_alloy_furnace_top.png
new file mode 100644
index 0000000..f44e3c0
--- /dev/null
+++ b/technic/technic/textures/technic_mv_alloy_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_battery_box_bottom.png b/technic/technic/textures/technic_mv_battery_box_bottom.png
new file mode 100644
index 0000000..a610660
--- /dev/null
+++ b/technic/technic/textures/technic_mv_battery_box_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_battery_box_side.png b/technic/technic/textures/technic_mv_battery_box_side.png
new file mode 100644
index 0000000..06a4be5
--- /dev/null
+++ b/technic/technic/textures/technic_mv_battery_box_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_battery_box_top.png b/technic/technic/textures/technic_mv_battery_box_top.png
new file mode 100644
index 0000000..b32100f
--- /dev/null
+++ b/technic/technic/textures/technic_mv_battery_box_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_cable.png b/technic/technic/textures/technic_mv_cable.png
new file mode 100644
index 0000000..2819d2b
--- /dev/null
+++ b/technic/technic/textures/technic_mv_cable.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_cable_wield.png b/technic/technic/textures/technic_mv_cable_wield.png
new file mode 100644
index 0000000..2d41e27
--- /dev/null
+++ b/technic/technic/textures/technic_mv_cable_wield.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_centrifuge_bottom.png b/technic/technic/textures/technic_mv_centrifuge_bottom.png
new file mode 100644
index 0000000..6dcd40f
--- /dev/null
+++ b/technic/technic/textures/technic_mv_centrifuge_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_centrifuge_front.png b/technic/technic/textures/technic_mv_centrifuge_front.png
new file mode 100644
index 0000000..e278a33
--- /dev/null
+++ b/technic/technic/textures/technic_mv_centrifuge_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_centrifuge_front_active.png b/technic/technic/textures/technic_mv_centrifuge_front_active.png
new file mode 100644
index 0000000..4cef912
--- /dev/null
+++ b/technic/technic/textures/technic_mv_centrifuge_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_centrifuge_side.png b/technic/technic/textures/technic_mv_centrifuge_side.png
new file mode 100644
index 0000000..eeef44a
--- /dev/null
+++ b/technic/technic/textures/technic_mv_centrifuge_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_centrifuge_top.png b/technic/technic/textures/technic_mv_centrifuge_top.png
new file mode 100644
index 0000000..813bbf8
--- /dev/null
+++ b/technic/technic/textures/technic_mv_centrifuge_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_compressor_back.png b/technic/technic/textures/technic_mv_compressor_back.png
new file mode 100644
index 0000000..11286e3
--- /dev/null
+++ b/technic/technic/textures/technic_mv_compressor_back.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_compressor_bottom.png b/technic/technic/textures/technic_mv_compressor_bottom.png
new file mode 100644
index 0000000..886f27e
--- /dev/null
+++ b/technic/technic/textures/technic_mv_compressor_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_compressor_front.png b/technic/technic/textures/technic_mv_compressor_front.png
new file mode 100644
index 0000000..007d6de
--- /dev/null
+++ b/technic/technic/textures/technic_mv_compressor_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_compressor_front_active.png b/technic/technic/textures/technic_mv_compressor_front_active.png
new file mode 100644
index 0000000..b3d27c0
--- /dev/null
+++ b/technic/technic/textures/technic_mv_compressor_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_compressor_side.png b/technic/technic/textures/technic_mv_compressor_side.png
new file mode 100644
index 0000000..87acda6
--- /dev/null
+++ b/technic/technic/textures/technic_mv_compressor_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_compressor_top.png b/technic/technic/textures/technic_mv_compressor_top.png
new file mode 100644
index 0000000..786b859
--- /dev/null
+++ b/technic/technic/textures/technic_mv_compressor_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_down_converter_bottom.png b/technic/technic/textures/technic_mv_down_converter_bottom.png
new file mode 100644
index 0000000..a610660
--- /dev/null
+++ b/technic/technic/textures/technic_mv_down_converter_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_down_converter_side.png b/technic/technic/textures/technic_mv_down_converter_side.png
new file mode 100644
index 0000000..6492d5c
--- /dev/null
+++ b/technic/technic/textures/technic_mv_down_converter_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_down_converter_top.png b/technic/technic/textures/technic_mv_down_converter_top.png
new file mode 100644
index 0000000..a610660
--- /dev/null
+++ b/technic/technic/textures/technic_mv_down_converter_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_electric_furnace_bottom.png b/technic/technic/textures/technic_mv_electric_furnace_bottom.png
new file mode 100644
index 0000000..e2e445e
--- /dev/null
+++ b/technic/technic/textures/technic_mv_electric_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_electric_furnace_front.png b/technic/technic/textures/technic_mv_electric_furnace_front.png
new file mode 100644
index 0000000..81c33cf
--- /dev/null
+++ b/technic/technic/textures/technic_mv_electric_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_electric_furnace_front_active.png b/technic/technic/textures/technic_mv_electric_furnace_front_active.png
new file mode 100644
index 0000000..2523f0e
--- /dev/null
+++ b/technic/technic/textures/technic_mv_electric_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_electric_furnace_side.png b/technic/technic/textures/technic_mv_electric_furnace_side.png
new file mode 100644
index 0000000..cd22a73
--- /dev/null
+++ b/technic/technic/textures/technic_mv_electric_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_electric_furnace_side_tube.png b/technic/technic/textures/technic_mv_electric_furnace_side_tube.png
new file mode 100644
index 0000000..bfeba18
--- /dev/null
+++ b/technic/technic/textures/technic_mv_electric_furnace_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_electric_furnace_top.png b/technic/technic/textures/technic_mv_electric_furnace_top.png
new file mode 100644
index 0000000..635b6b7
--- /dev/null
+++ b/technic/technic/textures/technic_mv_electric_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_extractor_bottom.png b/technic/technic/textures/technic_mv_extractor_bottom.png
new file mode 100644
index 0000000..70f34ee
--- /dev/null
+++ b/technic/technic/textures/technic_mv_extractor_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_extractor_front.png b/technic/technic/textures/technic_mv_extractor_front.png
new file mode 100644
index 0000000..18648c2
--- /dev/null
+++ b/technic/technic/textures/technic_mv_extractor_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_extractor_front_active.png b/technic/technic/textures/technic_mv_extractor_front_active.png
new file mode 100644
index 0000000..ee86ade
--- /dev/null
+++ b/technic/technic/textures/technic_mv_extractor_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_extractor_side.png b/technic/technic/textures/technic_mv_extractor_side.png
new file mode 100644
index 0000000..cbe3673
--- /dev/null
+++ b/technic/technic/textures/technic_mv_extractor_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_extractor_top.png b/technic/technic/textures/technic_mv_extractor_top.png
new file mode 100644
index 0000000..2259d64
--- /dev/null
+++ b/technic/technic/textures/technic_mv_extractor_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_generator_front.png b/technic/technic/textures/technic_mv_generator_front.png
new file mode 100644
index 0000000..570e0c5
--- /dev/null
+++ b/technic/technic/textures/technic_mv_generator_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_generator_front_active.png b/technic/technic/textures/technic_mv_generator_front_active.png
new file mode 100644
index 0000000..3006a17
--- /dev/null
+++ b/technic/technic/textures/technic_mv_generator_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_generator_side.png b/technic/technic/textures/technic_mv_generator_side.png
new file mode 100644
index 0000000..21c0d41
--- /dev/null
+++ b/technic/technic/textures/technic_mv_generator_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_generator_top.png b/technic/technic/textures/technic_mv_generator_top.png
new file mode 100644
index 0000000..7afa5a1
--- /dev/null
+++ b/technic/technic/textures/technic_mv_generator_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_grinder_bottom.png b/technic/technic/textures/technic_mv_grinder_bottom.png
new file mode 100644
index 0000000..70f34ee
--- /dev/null
+++ b/technic/technic/textures/technic_mv_grinder_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_grinder_front.png b/technic/technic/textures/technic_mv_grinder_front.png
new file mode 100644
index 0000000..18648c2
--- /dev/null
+++ b/technic/technic/textures/technic_mv_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_grinder_front_active.png b/technic/technic/textures/technic_mv_grinder_front_active.png
new file mode 100644
index 0000000..ee86ade
--- /dev/null
+++ b/technic/technic/textures/technic_mv_grinder_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_grinder_side.png b/technic/technic/textures/technic_mv_grinder_side.png
new file mode 100644
index 0000000..cbe3673
--- /dev/null
+++ b/technic/technic/textures/technic_mv_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_grinder_side_tube.png b/technic/technic/textures/technic_mv_grinder_side_tube.png
new file mode 100644
index 0000000..196b7c1
--- /dev/null
+++ b/technic/technic/textures/technic_mv_grinder_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_grinder_top.png b/technic/technic/textures/technic_mv_grinder_top.png
new file mode 100644
index 0000000..2259d64
--- /dev/null
+++ b/technic/technic/textures/technic_mv_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_solar_array_bottom.png b/technic/technic/textures/technic_mv_solar_array_bottom.png
new file mode 100644
index 0000000..596e79a
--- /dev/null
+++ b/technic/technic/textures/technic_mv_solar_array_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_solar_array_side.png b/technic/technic/textures/technic_mv_solar_array_side.png
new file mode 100644
index 0000000..917b9ed
--- /dev/null
+++ b/technic/technic/textures/technic_mv_solar_array_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_solar_array_top.png b/technic/technic/textures/technic_mv_solar_array_top.png
new file mode 100644
index 0000000..cdb7cf7
--- /dev/null
+++ b/technic/technic/textures/technic_mv_solar_array_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_mv_transformer.png b/technic/technic/textures/technic_mv_transformer.png
new file mode 100644
index 0000000..7c4688e
--- /dev/null
+++ b/technic/technic/textures/technic_mv_transformer.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_back.png b/technic/technic/textures/technic_nodebreaker_back.png
new file mode 100644
index 0000000..0af7422
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_back.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_bottom.png b/technic/technic/textures/technic_nodebreaker_bottom.png
new file mode 100644
index 0000000..ff1a2c6
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_bottom_off.png b/technic/technic/textures/technic_nodebreaker_bottom_off.png
new file mode 100644
index 0000000..0f456eb
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_bottom_on.png b/technic/technic/textures/technic_nodebreaker_bottom_on.png
new file mode 100644
index 0000000..6c4811a
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_front_off.png b/technic/technic/textures/technic_nodebreaker_front_off.png
new file mode 100644
index 0000000..488fd0a
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_front_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_front_on.png b/technic/technic/textures/technic_nodebreaker_front_on.png
new file mode 100644
index 0000000..4904e8b
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_front_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side.png b/technic/technic/textures/technic_nodebreaker_side.png
new file mode 100644
index 0000000..aefd7c8
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side1.png b/technic/technic/textures/technic_nodebreaker_side1.png
new file mode 100644
index 0000000..8cb8634
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side1.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side1_off.png b/technic/technic/textures/technic_nodebreaker_side1_off.png
new file mode 100644
index 0000000..857face
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side1_on.png b/technic/technic/textures/technic_nodebreaker_side1_on.png
new file mode 100644
index 0000000..c756f09
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side2.png b/technic/technic/textures/technic_nodebreaker_side2.png
new file mode 100644
index 0000000..c2855d0
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side2.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side2_off.png b/technic/technic/textures/technic_nodebreaker_side2_off.png
new file mode 100644
index 0000000..4c62f98
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_side2_on.png b/technic/technic/textures/technic_nodebreaker_side2_on.png
new file mode 100644
index 0000000..b9e4823
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_top.png b/technic/technic/textures/technic_nodebreaker_top.png
new file mode 100644
index 0000000..941d333
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_top_off.png b/technic/technic/textures/technic_nodebreaker_top_off.png
new file mode 100644
index 0000000..9139afe
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technic_nodebreaker_top_on.png b/technic/technic/textures/technic_nodebreaker_top_on.png
new file mode 100644
index 0000000..4b0a661
--- /dev/null
+++ b/technic/technic/textures/technic_nodebreaker_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter.png b/technic/technic/textures/technic_power_meter.png
new file mode 100644
index 0000000..f1e5120
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter0.png b/technic/technic/textures/technic_power_meter0.png
new file mode 100644
index 0000000..1b1e662
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter0.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter1.png b/technic/technic/textures/technic_power_meter1.png
new file mode 100644
index 0000000..eb6be3b
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter1.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter2.png b/technic/technic/textures/technic_power_meter2.png
new file mode 100644
index 0000000..e3a3772
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter2.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter3.png b/technic/technic/textures/technic_power_meter3.png
new file mode 100644
index 0000000..6333035
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter3.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter4.png b/technic/technic/textures/technic_power_meter4.png
new file mode 100644
index 0000000..6346dbd
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter4.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter5.png b/technic/technic/textures/technic_power_meter5.png
new file mode 100644
index 0000000..80f79c6
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter5.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter6.png b/technic/technic/textures/technic_power_meter6.png
new file mode 100644
index 0000000..fe91bf5
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter6.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter7.png b/technic/technic/textures/technic_power_meter7.png
new file mode 100644
index 0000000..e02dd6d
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter7.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter8.png b/technic/technic/textures/technic_power_meter8.png
new file mode 100644
index 0000000..a12064c
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter8.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter_bg.png b/technic/technic/textures/technic_power_meter_bg.png
new file mode 100644
index 0000000..9667cda
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter_bg.png
Binary files differ
diff --git a/technic/technic/textures/technic_power_meter_fg.png b/technic/technic/textures/technic_power_meter_fg.png
new file mode 100644
index 0000000..7f2dde8
--- /dev/null
+++ b/technic/technic/textures/technic_power_meter_fg.png
Binary files differ
diff --git a/technic/technic/textures/technic_prospector.png b/technic/technic/textures/technic_prospector.png
new file mode 100644
index 0000000..2f9ee6c
--- /dev/null
+++ b/technic/technic/textures/technic_prospector.png
Binary files differ
diff --git a/technic/technic/textures/technic_raw_latex.png b/technic/technic/textures/technic_raw_latex.png
new file mode 100644
index 0000000..49bb11b
--- /dev/null
+++ b/technic/technic/textures/technic_raw_latex.png
Binary files differ
diff --git a/technic/technic/textures/technic_rubber.png b/technic/technic/textures/technic_rubber.png
new file mode 100644
index 0000000..9ed4a9d
--- /dev/null
+++ b/technic/technic/textures/technic_rubber.png
Binary files differ
diff --git a/technic/technic/textures/technic_rubber_leaves.png b/technic/technic/textures/technic_rubber_leaves.png
new file mode 100644
index 0000000..ae013e0
--- /dev/null
+++ b/technic/technic/textures/technic_rubber_leaves.png
Binary files differ
diff --git a/technic/technic/textures/technic_rubber_sapling.png b/technic/technic/textures/technic_rubber_sapling.png
new file mode 100644
index 0000000..e5c9f5d
--- /dev/null
+++ b/technic/technic/textures/technic_rubber_sapling.png
Binary files differ
diff --git a/technic/technic/textures/technic_rubber_tree_empty.png b/technic/technic/textures/technic_rubber_tree_empty.png
new file mode 100644
index 0000000..1792951
--- /dev/null
+++ b/technic/technic/textures/technic_rubber_tree_empty.png
Binary files differ
diff --git a/technic/technic/textures/technic_rubber_tree_full.png b/technic/technic/textures/technic_rubber_tree_full.png
new file mode 100644
index 0000000..08067ef
--- /dev/null
+++ b/technic/technic/textures/technic_rubber_tree_full.png
Binary files differ
diff --git a/technic/technic/textures/technic_rubber_tree_grindings.png b/technic/technic/textures/technic_rubber_tree_grindings.png
new file mode 100644
index 0000000..9f2f5d6
--- /dev/null
+++ b/technic/technic/textures/technic_rubber_tree_grindings.png
Binary files differ
diff --git a/technic/technic/textures/technic_sawdust.png b/technic/technic/textures/technic_sawdust.png
new file mode 100644
index 0000000..976e7f9
--- /dev/null
+++ b/technic/technic/textures/technic_sawdust.png
Binary files differ
diff --git a/technic/technic/textures/technic_screwdriver.png b/technic/technic/textures/technic_screwdriver.png
new file mode 100644
index 0000000..bd2da22
--- /dev/null
+++ b/technic/technic/textures/technic_screwdriver.png
Binary files differ
diff --git a/technic/technic/textures/technic_silicon_wafer.png b/technic/technic/textures/technic_silicon_wafer.png
new file mode 100644
index 0000000..78aef20
--- /dev/null
+++ b/technic/technic/textures/technic_silicon_wafer.png
Binary files differ
diff --git a/technic/technic/textures/technic_silver_dust.png b/technic/technic/textures/technic_silver_dust.png
new file mode 100644
index 0000000..19a5754
--- /dev/null
+++ b/technic/technic/textures/technic_silver_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_solar_panel_bottom.png b/technic/technic/textures/technic_solar_panel_bottom.png
new file mode 100644
index 0000000..9e888e3
--- /dev/null
+++ b/technic/technic/textures/technic_solar_panel_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_solar_panel_side.png b/technic/technic/textures/technic_solar_panel_side.png
new file mode 100644
index 0000000..b22447e
--- /dev/null
+++ b/technic/technic/textures/technic_solar_panel_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_solar_panel_top.png b/technic/technic/textures/technic_solar_panel_top.png
new file mode 100644
index 0000000..492764b
--- /dev/null
+++ b/technic/technic/textures/technic_solar_panel_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_sonic_screwdriver.png b/technic/technic/textures/technic_sonic_screwdriver.png
new file mode 100644
index 0000000..9b26b81
--- /dev/null
+++ b/technic/technic/textures/technic_sonic_screwdriver.png
Binary files differ
diff --git a/technic/technic/textures/technic_stainless_steel_dust.png b/technic/technic/textures/technic_stainless_steel_dust.png
new file mode 100644
index 0000000..6398be8
--- /dev/null
+++ b/technic/technic/textures/technic_stainless_steel_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_stainless_steel_ingot.png b/technic/technic/textures/technic_stainless_steel_ingot.png
new file mode 100644
index 0000000..7ec5e00
--- /dev/null
+++ b/technic/technic/textures/technic_stainless_steel_ingot.png
Binary files differ
diff --git a/technic/technic/textures/technic_supply_converter_bottom.png b/technic/technic/textures/technic_supply_converter_bottom.png
new file mode 100644
index 0000000..a610660
--- /dev/null
+++ b/technic/technic/textures/technic_supply_converter_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_supply_converter_side.png b/technic/technic/textures/technic_supply_converter_side.png
new file mode 100644
index 0000000..6492d5c
--- /dev/null
+++ b/technic/technic/textures/technic_supply_converter_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_supply_converter_top.png b/technic/technic/textures/technic_supply_converter_top.png
new file mode 100644
index 0000000..a610660
--- /dev/null
+++ b/technic/technic/textures/technic_supply_converter_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_talinite_dust.png b/technic/technic/textures/technic_talinite_dust.png
new file mode 100644
index 0000000..f228206
--- /dev/null
+++ b/technic/technic/textures/technic_talinite_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_tin_dust.png b/technic/technic/textures/technic_tin_dust.png
new file mode 100644
index 0000000..98e6f3f
--- /dev/null
+++ b/technic/technic/textures/technic_tin_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode1.png b/technic/technic/textures/technic_tool_mode1.png
new file mode 100644
index 0000000..571dbe5
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode1.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode2.png b/technic/technic/textures/technic_tool_mode2.png
new file mode 100644
index 0000000..891aa82
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode2.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode3.png b/technic/technic/textures/technic_tool_mode3.png
new file mode 100644
index 0000000..cd099a7
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode3.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode4.png b/technic/technic/textures/technic_tool_mode4.png
new file mode 100644
index 0000000..62f50d7
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode4.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode5.png b/technic/technic/textures/technic_tool_mode5.png
new file mode 100644
index 0000000..c918314
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode5.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode6.png b/technic/technic/textures/technic_tool_mode6.png
new file mode 100644
index 0000000..9268f47
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode6.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode7.png b/technic/technic/textures/technic_tool_mode7.png
new file mode 100644
index 0000000..5ba572a
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode7.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode8.png b/technic/technic/textures/technic_tool_mode8.png
new file mode 100644
index 0000000..b2655b6
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode8.png
Binary files differ
diff --git a/technic/technic/textures/technic_tool_mode9.png b/technic/technic/textures/technic_tool_mode9.png
new file mode 100644
index 0000000..2077afb
--- /dev/null
+++ b/technic/technic/textures/technic_tool_mode9.png
Binary files differ
diff --git a/technic/technic/textures/technic_tree_tap.png b/technic/technic/textures/technic_tree_tap.png
new file mode 100644
index 0000000..542f30f
--- /dev/null
+++ b/technic/technic/textures/technic_tree_tap.png
Binary files differ
diff --git a/technic/technic/textures/technic_uranium_dust.png b/technic/technic/textures/technic_uranium_dust.png
new file mode 100644
index 0000000..9c211dc
--- /dev/null
+++ b/technic/technic/textures/technic_uranium_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_uranium_fuel.png b/technic/technic/textures/technic_uranium_fuel.png
new file mode 100644
index 0000000..0a32c62
--- /dev/null
+++ b/technic/technic/textures/technic_uranium_fuel.png
Binary files differ
diff --git a/technic/technic/textures/technic_vacuum.png b/technic/technic/textures/technic_vacuum.png
new file mode 100644
index 0000000..1ef5815
--- /dev/null
+++ b/technic/technic/textures/technic_vacuum.png
Binary files differ
diff --git a/technic/technic/textures/technic_water_can.png b/technic/technic/textures/technic_water_can.png
new file mode 100644
index 0000000..eec75db
--- /dev/null
+++ b/technic/technic/textures/technic_water_can.png
Binary files differ
diff --git a/technic/technic/textures/technic_water_mill_side.png b/technic/technic/textures/technic_water_mill_side.png
new file mode 100644
index 0000000..f4bdb16
--- /dev/null
+++ b/technic/technic/textures/technic_water_mill_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_water_mill_top.png b/technic/technic/textures/technic_water_mill_top.png
new file mode 100644
index 0000000..601ff15
--- /dev/null
+++ b/technic/technic/textures/technic_water_mill_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_water_mill_top_active.png b/technic/technic/textures/technic_water_mill_top_active.png
new file mode 100644
index 0000000..f02bec6
--- /dev/null
+++ b/technic/technic/textures/technic_water_mill_top_active.png
Binary files differ
diff --git a/technic/technic/textures/technic_workshop_bottom.png b/technic/technic/textures/technic_workshop_bottom.png
new file mode 100644
index 0000000..bd8fd55
--- /dev/null
+++ b/technic/technic/textures/technic_workshop_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technic_workshop_side.png b/technic/technic/textures/technic_workshop_side.png
new file mode 100644
index 0000000..9e3e7a7
--- /dev/null
+++ b/technic/technic/textures/technic_workshop_side.png
Binary files differ
diff --git a/technic/technic/textures/technic_workshop_top.png b/technic/technic/textures/technic_workshop_top.png
new file mode 100644
index 0000000..feae141
--- /dev/null
+++ b/technic/technic/textures/technic_workshop_top.png
Binary files differ
diff --git a/technic/technic/textures/technic_wrought_iron_dust.png b/technic/technic/textures/technic_wrought_iron_dust.png
new file mode 100644
index 0000000..ad23c62
--- /dev/null
+++ b/technic/technic/textures/technic_wrought_iron_dust.png
Binary files differ
diff --git a/technic/technic/textures/technic_zinc_dust.png b/technic/technic/textures/technic_zinc_dust.png
new file mode 100644
index 0000000..bbd826c
--- /dev/null
+++ b/technic/technic/textures/technic_zinc_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_akalin_dust.png b/technic/technic/textures/technicx32/technic_akalin_dust.png
new file mode 100644
index 0000000..90f3bac
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_akalin_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_alatro_dust.png b/technic/technic/textures/technicx32/technic_alatro_dust.png
new file mode 100644
index 0000000..1199614
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_alatro_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_front.png b/technic/technic/textures/technicx32/technic_alloy_furnace_front.png
new file mode 100644
index 0000000..9123fb6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_alloy_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png b/technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png
new file mode 100644
index 0000000..4dda2e6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_side.png b/technic/technic/textures/technicx32/technic_alloy_furnace_side.png
new file mode 100644
index 0000000..b5bd428
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_alloy_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_top.png b/technic/technic/textures/technicx32/technic_alloy_furnace_top.png
new file mode 100644
index 0000000..67ef4b7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_alloy_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_arol_dust.png b/technic/technic/textures/technicx32/technic_arol_dust.png
new file mode 100644
index 0000000..f5a392f
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_arol_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_battery.png b/technic/technic/textures/technicx32/technic_battery.png
new file mode 100644
index 0000000..ee83b74
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_battery.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_battery_box_bottom.png b/technic/technic/textures/technicx32/technic_battery_box_bottom.png
new file mode 100644
index 0000000..03c7ccc
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_battery_box_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_battery_box_side0.png b/technic/technic/textures/technicx32/technic_battery_box_side0.png
new file mode 100644
index 0000000..2662ac0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_battery_box_side0.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_battery_box_top.png b/technic/technic/textures/technicx32/technic_battery_box_top.png
new file mode 100644
index 0000000..4953a32
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_battery_box_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_battery_reload.png b/technic/technic/textures/technicx32/technic_battery_reload.png
new file mode 100644
index 0000000..164b4ac
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_battery_reload.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_brass_dust.png b/technic/technic/textures/technicx32/technic_brass_dust.png
new file mode 100644
index 0000000..f86167a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_brass_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_bronze_dust.png b/technic/technic/textures/technicx32/technic_bronze_dust.png
new file mode 100644
index 0000000..0a2401e
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_bronze_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_carbon_steel_dust.png b/technic/technic/textures/technicx32/technic_carbon_steel_dust.png
new file mode 100644
index 0000000..0bf350f
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_carbon_steel_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_cast_iron_dust.png b/technic/technic/textures/technicx32/technic_cast_iron_dust.png
new file mode 100644
index 0000000..f355094
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_cast_iron_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_chainsaw.png b/technic/technic/textures/technicx32/technic_chainsaw.png
new file mode 100644
index 0000000..b7ceee6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_chainsaw.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_chromium_dust.png b/technic/technic/textures/technicx32/technic_chromium_dust.png
new file mode 100644
index 0000000..a33358b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_chromium_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png
new file mode 100644
index 0000000..7a5eed7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png
new file mode 100644
index 0000000..b00bef3
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png
new file mode 100644
index 0000000..b41f619
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png
new file mode 100644
index 0000000..3db8daa
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png
new file mode 100644
index 0000000..c648fe8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_coal_dust.png b/technic/technic/textures/technicx32/technic_coal_dust.png
new file mode 100644
index 0000000..0fe7db7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_coal_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_back.png b/technic/technic/textures/technicx32/technic_constructor_back.png
new file mode 100644
index 0000000..6baf788
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_back.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_front_off.png b/technic/technic/textures/technicx32/technic_constructor_front_off.png
new file mode 100644
index 0000000..f878e55
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_front_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_front_on.png b/technic/technic/textures/technicx32/technic_constructor_front_on.png
new file mode 100644
index 0000000..89189d6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_front_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png
new file mode 100644
index 0000000..205dcc4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png
new file mode 100644
index 0000000..9896c52
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png
new file mode 100644
index 0000000..e8a01ff
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png
new file mode 100644
index 0000000..c897942
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png
new file mode 100644
index 0000000..8da65f6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png
new file mode 100644
index 0000000..da8ed34
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png
new file mode 100644
index 0000000..7d8c7e0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png
new file mode 100644
index 0000000..439caf5
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png
new file mode 100644
index 0000000..83c5b07
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png
new file mode 100644
index 0000000..9ad76f4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png
new file mode 100644
index 0000000..584dfe3
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png
new file mode 100644
index 0000000..fe02042
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png
new file mode 100644
index 0000000..fd9ad74
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png
new file mode 100644
index 0000000..f51411a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png
new file mode 100644
index 0000000..e3e3292
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png
new file mode 100644
index 0000000..83043d4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png
new file mode 100644
index 0000000..5f46154
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png
new file mode 100644
index 0000000..f76f29b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png
new file mode 100644
index 0000000..0ea1fc0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png
new file mode 100644
index 0000000..ba86332
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png
new file mode 100644
index 0000000..8e8dce4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png
new file mode 100644
index 0000000..12dff69
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png
new file mode 100644
index 0000000..705f255
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png
new file mode 100644
index 0000000..cef077e
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_control_logic_unit.png b/technic/technic/textures/technicx32/technic_control_logic_unit.png
new file mode 100644
index 0000000..6ed00eb
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_control_logic_unit.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_copper_coil.png b/technic/technic/textures/technicx32/technic_copper_coil.png
new file mode 100644
index 0000000..db6db1a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_copper_coil.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_copper_dust.png b/technic/technic/textures/technicx32/technic_copper_dust.png
new file mode 100644
index 0000000..68678ed
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_copper_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_back.png b/technic/technic/textures/technicx32/technic_deployer_back.png
new file mode 100644
index 0000000..0bc8df9
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_back.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_bottom.png b/technic/technic/textures/technicx32/technic_deployer_bottom.png
new file mode 100644
index 0000000..ff1a2c6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_front_off.png b/technic/technic/textures/technicx32/technic_deployer_front_off.png
new file mode 100644
index 0000000..d0f6f55
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_front_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_front_on.png b/technic/technic/textures/technicx32/technic_deployer_front_on.png
new file mode 100644
index 0000000..368ce32
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_front_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_side.png b/technic/technic/textures/technicx32/technic_deployer_side.png
new file mode 100644
index 0000000..aefd7c8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_side1.png b/technic/technic/textures/technicx32/technic_deployer_side1.png
new file mode 100644
index 0000000..8cb8634
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_side1.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_side2.png b/technic/technic/textures/technicx32/technic_deployer_side2.png
new file mode 100644
index 0000000..c2855d0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_side2.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_deployer_top.png b/technic/technic/textures/technicx32/technic_deployer_top.png
new file mode 100644
index 0000000..941d333
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_deployer_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_diamond_block_blue.png b/technic/technic/textures/technicx32/technic_diamond_block_blue.png
new file mode 100644
index 0000000..d89bd6e
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_diamond_block_blue.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_diamond_block_green.png b/technic/technic/textures/technicx32/technic_diamond_block_green.png
new file mode 100644
index 0000000..996b254
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_diamond_block_green.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_diamond_block_red.png b/technic/technic/textures/technicx32/technic_diamond_block_red.png
new file mode 100644
index 0000000..52fd893
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_diamond_block_red.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_diamond_drill_head.png b/technic/technic/textures/technicx32/technic_diamond_drill_head.png
new file mode 100644
index 0000000..e3d31e8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_diamond_drill_head.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_doped_silicon_wafer.png b/technic/technic/textures/technicx32/technic_doped_silicon_wafer.png
new file mode 100644
index 0000000..6ff06a6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_doped_silicon_wafer.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_bottom.png b/technic/technic/textures/technicx32/technic_electric_furnace_bottom.png
new file mode 100644
index 0000000..d16ac47
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_electric_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_front.png b/technic/technic/textures/technicx32/technic_electric_furnace_front.png
new file mode 100644
index 0000000..dfee663
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_electric_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_front_active.png b/technic/technic/textures/technicx32/technic_electric_furnace_front_active.png
new file mode 100644
index 0000000..038eec4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_electric_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_side.png b/technic/technic/textures/technicx32/technic_electric_furnace_side.png
new file mode 100644
index 0000000..cf345e7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_electric_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_top.png b/technic/technic/textures/technicx32/technic_electric_furnace_top.png
new file mode 100644
index 0000000..d3309ec
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_electric_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_fine_copper_wire.png b/technic/technic/textures/technicx32/technic_fine_copper_wire.png
new file mode 100644
index 0000000..36e2ed6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_fine_copper_wire.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_fine_gold_wire.png b/technic/technic/textures/technicx32/technic_fine_gold_wire.png
new file mode 100644
index 0000000..be2a38a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_fine_gold_wire.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_fine_silver_wire.png b/technic/technic/textures/technicx32/technic_fine_silver_wire.png
new file mode 100644
index 0000000..d43cb6a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_fine_silver_wire.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_flashlight.png b/technic/technic/textures/technicx32/technic_flashlight.png
new file mode 100644
index 0000000..01afdbb
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_flashlight.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_generator_front.png b/technic/technic/textures/technicx32/technic_generator_front.png
new file mode 100644
index 0000000..2d64844
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_generator_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_generator_front_active.png b/technic/technic/textures/technicx32/technic_generator_front_active.png
new file mode 100644
index 0000000..4e57ca0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_generator_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_generator_side.png b/technic/technic/textures/technicx32/technic_generator_side.png
new file mode 100644
index 0000000..5cbcbef
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_generator_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_generator_top.png b/technic/technic/textures/technicx32/technic_generator_top.png
new file mode 100644
index 0000000..e2f3db3
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_generator_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_geothermal_side.png b/technic/technic/textures/technicx32/technic_geothermal_side.png
new file mode 100644
index 0000000..90fb430
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_geothermal_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_geothermal_top.png b/technic/technic/textures/technicx32/technic_geothermal_top.png
new file mode 100644
index 0000000..601ff15
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_geothermal_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_geothermal_top_active.png b/technic/technic/textures/technicx32/technic_geothermal_top_active.png
new file mode 100644
index 0000000..f02bec6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_geothermal_top_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_gold_dust.png b/technic/technic/textures/technicx32/technic_gold_dust.png
new file mode 100644
index 0000000..e545bb6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_gold_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_grinder_front.png b/technic/technic/textures/technicx32/technic_grinder_front.png
new file mode 100644
index 0000000..a28dbc1
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_grinder_side.png b/technic/technic/textures/technicx32/technic_grinder_side.png
new file mode 100644
index 0000000..af562f2
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_grinder_top.png b/technic/technic/textures/technicx32/technic_grinder_top.png
new file mode 100644
index 0000000..b074e13
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_bottom.png b/technic/technic/textures/technicx32/technic_hv_grinder_bottom.png
new file mode 100644
index 0000000..d854193
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_grinder_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_front.png b/technic/technic/textures/technicx32/technic_hv_grinder_front.png
new file mode 100644
index 0000000..f20cb22
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_front_active.png b/technic/technic/textures/technicx32/technic_hv_grinder_front_active.png
new file mode 100644
index 0000000..d1fa468
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_grinder_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_side.png b/technic/technic/textures/technicx32/technic_hv_grinder_side.png
new file mode 100644
index 0000000..35cf031
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png b/technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png
new file mode 100644
index 0000000..5b5b450
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_top.png b/technic/technic/textures/technicx32/technic_hv_grinder_top.png
new file mode 100644
index 0000000..7869ea8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png b/technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png
new file mode 100644
index 0000000..3d380da
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png b/technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png
new file mode 100644
index 0000000..94c8222
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_solar_array_side.png b/technic/technic/textures/technicx32/technic_hv_solar_array_side.png
new file mode 100644
index 0000000..d39d3d8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_solar_array_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_solar_array_top.png b/technic/technic/textures/technicx32/technic_hv_solar_array_top.png
new file mode 100644
index 0000000..3e1b9e0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_solar_array_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_hv_transformer.png b/technic/technic/textures/technicx32/technic_hv_transformer.png
new file mode 100644
index 0000000..7794644
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_hv_transformer.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_injector_bottom.png b/technic/technic/textures/technicx32/technic_injector_bottom.png
new file mode 100644
index 0000000..39916bd
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_injector_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_injector_side.png b/technic/technic/textures/technicx32/technic_injector_side.png
new file mode 100644
index 0000000..a5419a1
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_injector_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_injector_top.png b/technic/technic/textures/technicx32/technic_injector_top.png
new file mode 100644
index 0000000..440649c
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_injector_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_kalite_dust.png b/technic/technic/textures/technicx32/technic_kalite_dust.png
new file mode 100644
index 0000000..595edb5
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_kalite_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_laser_beam.png b/technic/technic/textures/technicx32/technic_laser_beam.png
new file mode 100644
index 0000000..4814a9b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_laser_beam.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lava_can.png b/technic/technic/textures/technicx32/technic_lava_can.png
new file mode 100644
index 0000000..80d15a6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lava_can.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_light.png b/technic/technic/textures/technicx32/technic_light.png
new file mode 100644
index 0000000..334cb07
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_light.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_bottom.png b/technic/technic/textures/technicx32/technic_lv_grinder_bottom.png
new file mode 100644
index 0000000..816b969
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_grinder_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_front.png b/technic/technic/textures/technicx32/technic_lv_grinder_front.png
new file mode 100644
index 0000000..7451ca9
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_front_active.png b/technic/technic/textures/technicx32/technic_lv_grinder_front_active.png
new file mode 100644
index 0000000..8e17e4d
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_grinder_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_side.png b/technic/technic/textures/technicx32/technic_lv_grinder_side.png
new file mode 100644
index 0000000..908287b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_top.png b/technic/technic/textures/technicx32/technic_lv_grinder_top.png
new file mode 100644
index 0000000..8520baf
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png b/technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png
new file mode 100644
index 0000000..94c8222
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_solar_array_side.png b/technic/technic/textures/technicx32/technic_lv_solar_array_side.png
new file mode 100644
index 0000000..d39d3d8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_solar_array_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_solar_array_top.png b/technic/technic/textures/technicx32/technic_lv_solar_array_top.png
new file mode 100644
index 0000000..3d8c7ab
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_solar_array_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_lv_transformer.png b/technic/technic/textures/technicx32/technic_lv_transformer.png
new file mode 100644
index 0000000..99ac927
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_lv_transformer.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_machine_bottom.png b/technic/technic/textures/technicx32/technic_machine_bottom.png
new file mode 100644
index 0000000..943dae1
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_machine_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mining_drill.png b/technic/technic/textures/technicx32/technic_mining_drill.png
new file mode 100644
index 0000000..171888d
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mining_drill.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mining_laser_mk1.png b/technic/technic/textures/technicx32/technic_mining_laser_mk1.png
new file mode 100644
index 0000000..acde392
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mining_laser_mk1.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mithril_dust.png b/technic/technic/textures/technicx32/technic_mithril_dust.png
new file mode 100644
index 0000000..988e449
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mithril_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_motor.png b/technic/technic/textures/technicx32/technic_motor.png
new file mode 100644
index 0000000..77d4b91
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_motor.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_music_player_bottom.png b/technic/technic/textures/technicx32/technic_music_player_bottom.png
new file mode 100644
index 0000000..bd8fd55
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_music_player_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_music_player_side.png b/technic/technic/textures/technicx32/technic_music_player_side.png
new file mode 100644
index 0000000..6c34fea
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_music_player_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_music_player_top.png b/technic/technic/textures/technicx32/technic_music_player_top.png
new file mode 100644
index 0000000..0d34563
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_music_player_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png
new file mode 100644
index 0000000..3723bb1
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png
new file mode 100644
index 0000000..a5dac82
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png
new file mode 100644
index 0000000..f6e69a9
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png
new file mode 100644
index 0000000..0430479
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png
new file mode 100644
index 0000000..69f89e7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png
new file mode 100644
index 0000000..f44e3c0
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png b/technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png
new file mode 100644
index 0000000..2a9b292
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_battery_box_side0.png b/technic/technic/textures/technicx32/technic_mv_battery_box_side0.png
new file mode 100644
index 0000000..39d8986
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_battery_box_side0.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_battery_box_top.png b/technic/technic/textures/technicx32/technic_mv_battery_box_top.png
new file mode 100644
index 0000000..f7f1ea9
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_battery_box_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_cable_wield.png b/technic/technic/textures/technicx32/technic_mv_cable_wield.png
new file mode 100644
index 0000000..aca9fd4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_cable_wield.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png
new file mode 100644
index 0000000..d16ac47
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png
new file mode 100644
index 0000000..4dfac63
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png
new file mode 100644
index 0000000..e206cd2
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png
new file mode 100644
index 0000000..4aa27b7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png
new file mode 100644
index 0000000..bfeba18
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png
new file mode 100644
index 0000000..635b6b7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_bottom.png b/technic/technic/textures/technicx32/technic_mv_grinder_bottom.png
new file mode 100644
index 0000000..f46cd72
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_grinder_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_front.png b/technic/technic/textures/technicx32/technic_mv_grinder_front.png
new file mode 100644
index 0000000..6445dfe
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_grinder_front.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_front_active.png b/technic/technic/textures/technicx32/technic_mv_grinder_front_active.png
new file mode 100644
index 0000000..428e1dc
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_grinder_front_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_side.png b/technic/technic/textures/technicx32/technic_mv_grinder_side.png
new file mode 100644
index 0000000..c014f08
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_grinder_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png b/technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png
new file mode 100644
index 0000000..69050e4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_top.png b/technic/technic/textures/technicx32/technic_mv_grinder_top.png
new file mode 100644
index 0000000..e0320ef
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_grinder_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png b/technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png
new file mode 100644
index 0000000..94c8222
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_solar_array_side.png b/technic/technic/textures/technicx32/technic_mv_solar_array_side.png
new file mode 100644
index 0000000..d39d3d8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_solar_array_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_solar_array_top.png b/technic/technic/textures/technicx32/technic_mv_solar_array_top.png
new file mode 100644
index 0000000..e4999d5
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_solar_array_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_mv_transformer.png b/technic/technic/textures/technicx32/technic_mv_transformer.png
new file mode 100644
index 0000000..7c4688e
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_mv_transformer.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_back.png b/technic/technic/textures/technicx32/technic_nodebreaker_back.png
new file mode 100644
index 0000000..43ba821
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_back.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_bottom.png b/technic/technic/textures/technicx32/technic_nodebreaker_bottom.png
new file mode 100644
index 0000000..99ff685
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png
new file mode 100644
index 0000000..47cd4e8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png
new file mode 100644
index 0000000..994f787
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_front_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_front_off.png
new file mode 100644
index 0000000..5ece916
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_front_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_front_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_front_on.png
new file mode 100644
index 0000000..a53de2a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_front_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side.png b/technic/technic/textures/technicx32/technic_nodebreaker_side.png
new file mode 100644
index 0000000..c2b401b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side1.png b/technic/technic/textures/technicx32/technic_nodebreaker_side1.png
new file mode 100644
index 0000000..07e74aa
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side1.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png
new file mode 100644
index 0000000..b63f3bb
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png
new file mode 100644
index 0000000..b455f06
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side2.png b/technic/technic/textures/technicx32/technic_nodebreaker_side2.png
new file mode 100644
index 0000000..7f4a0bf
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side2.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png
new file mode 100644
index 0000000..7b60902
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png
new file mode 100644
index 0000000..12985f6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_top.png b/technic/technic/textures/technicx32/technic_nodebreaker_top.png
new file mode 100644
index 0000000..0994c6d
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_top_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_top_off.png
new file mode 100644
index 0000000..f08fc1b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_top_off.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_top_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_top_on.png
new file mode 100644
index 0000000..ec28210
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_nodebreaker_top_on.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter.png b/technic/technic/textures/technicx32/technic_power_meter.png
new file mode 100644
index 0000000..f1e5120
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter1.png b/technic/technic/textures/technicx32/technic_power_meter1.png
new file mode 100644
index 0000000..0542c7b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter1.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter2.png b/technic/technic/textures/technicx32/technic_power_meter2.png
new file mode 100644
index 0000000..bf5703c
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter2.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter3.png b/technic/technic/textures/technicx32/technic_power_meter3.png
new file mode 100644
index 0000000..4204815
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter3.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter4.png b/technic/technic/textures/technicx32/technic_power_meter4.png
new file mode 100644
index 0000000..82a0148
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter4.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter5.png b/technic/technic/textures/technicx32/technic_power_meter5.png
new file mode 100644
index 0000000..af783ca
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter5.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter6.png b/technic/technic/textures/technicx32/technic_power_meter6.png
new file mode 100644
index 0000000..44feff4
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter6.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter7.png b/technic/technic/textures/technicx32/technic_power_meter7.png
new file mode 100644
index 0000000..554baa2
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter7.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter8.png b/technic/technic/textures/technicx32/technic_power_meter8.png
new file mode 100644
index 0000000..8c4f4a8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter8.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter_bg.png b/technic/technic/textures/technicx32/technic_power_meter_bg.png
new file mode 100644
index 0000000..9667cda
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter_bg.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_power_meter_fg.png b/technic/technic/textures/technicx32/technic_power_meter_fg.png
new file mode 100644
index 0000000..7f2dde8
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_power_meter_fg.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_raw_latex.png b/technic/technic/textures/technicx32/technic_raw_latex.png
new file mode 100644
index 0000000..7fbbe64
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_raw_latex.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_rubber.png b/technic/technic/textures/technicx32/technic_rubber.png
new file mode 100644
index 0000000..9ed4a9d
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_rubber.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_rubber_sapling.png b/technic/technic/textures/technicx32/technic_rubber_sapling.png
new file mode 100644
index 0000000..e5c9f5d
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_rubber_sapling.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_rubber_tree_empty.png b/technic/technic/textures/technicx32/technic_rubber_tree_empty.png
new file mode 100644
index 0000000..1792951
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_rubber_tree_empty.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_rubber_tree_full.png b/technic/technic/textures/technicx32/technic_rubber_tree_full.png
new file mode 100644
index 0000000..08067ef
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_rubber_tree_full.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_screwdriver.png b/technic/technic/textures/technicx32/technic_screwdriver.png
new file mode 100644
index 0000000..bd2da22
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_screwdriver.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_silicon_wafer.png b/technic/technic/textures/technicx32/technic_silicon_wafer.png
new file mode 100644
index 0000000..78aef20
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_silicon_wafer.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_silver_dust.png b/technic/technic/textures/technicx32/technic_silver_dust.png
new file mode 100644
index 0000000..9092c90
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_silver_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_solar_panel_bottom.png b/technic/technic/textures/technicx32/technic_solar_panel_bottom.png
new file mode 100644
index 0000000..b0ad82f
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_solar_panel_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_solar_panel_side.png b/technic/technic/textures/technicx32/technic_solar_panel_side.png
new file mode 100644
index 0000000..b22447e
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_solar_panel_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_solar_panel_top.png b/technic/technic/textures/technicx32/technic_solar_panel_top.png
new file mode 100644
index 0000000..492764b
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_solar_panel_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_sonic_screwdriver.png b/technic/technic/textures/technicx32/technic_sonic_screwdriver.png
new file mode 100644
index 0000000..fb61d96
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_sonic_screwdriver.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_stainless_steel_dust.png b/technic/technic/textures/technicx32/technic_stainless_steel_dust.png
new file mode 100644
index 0000000..450e2bb
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_stainless_steel_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_talinite_dust.png b/technic/technic/textures/technicx32/technic_talinite_dust.png
new file mode 100644
index 0000000..39f9330
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_talinite_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_tin_dust.png b/technic/technic/textures/technicx32/technic_tin_dust.png
new file mode 100644
index 0000000..4e94e00
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_tin_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_tree_tap.png b/technic/technic/textures/technicx32/technic_tree_tap.png
new file mode 100644
index 0000000..542f30f
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_tree_tap.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_uranium_dust.png b/technic/technic/textures/technicx32/technic_uranium_dust.png
new file mode 100644
index 0000000..d8095c3
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_uranium_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_water_can.png b/technic/technic/textures/technicx32/technic_water_can.png
new file mode 100644
index 0000000..18e0225
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_water_can.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_water_mill_side.png b/technic/technic/textures/technicx32/technic_water_mill_side.png
new file mode 100644
index 0000000..f4bdb16
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_water_mill_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_water_mill_top.png b/technic/technic/textures/technicx32/technic_water_mill_top.png
new file mode 100644
index 0000000..601ff15
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_water_mill_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_water_mill_top_active.png b/technic/technic/textures/technicx32/technic_water_mill_top_active.png
new file mode 100644
index 0000000..f02bec6
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_water_mill_top_active.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_workshop_bottom.png b/technic/technic/textures/technicx32/technic_workshop_bottom.png
new file mode 100644
index 0000000..bd8fd55
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_workshop_bottom.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_workshop_side.png b/technic/technic/textures/technicx32/technic_workshop_side.png
new file mode 100644
index 0000000..9e3e7a7
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_workshop_side.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_workshop_top.png b/technic/technic/textures/technicx32/technic_workshop_top.png
new file mode 100644
index 0000000..feae141
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_workshop_top.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_wrought_iron_dust.png b/technic/technic/textures/technicx32/technic_wrought_iron_dust.png
new file mode 100644
index 0000000..d890e73
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_wrought_iron_dust.png
Binary files differ
diff --git a/technic/technic/textures/technicx32/technic_zinc_dust.png b/technic/technic/textures/technicx32/technic_zinc_dust.png
new file mode 100644
index 0000000..0d2f75a
--- /dev/null
+++ b/technic/technic/textures/technicx32/technic_zinc_dust.png
Binary files differ
diff --git a/technic/technic/tools/cans.lua b/technic/technic/tools/cans.lua
new file mode 100644
index 0000000..f12ec93
--- /dev/null
+++ b/technic/technic/tools/cans.lua
@@ -0,0 +1,114 @@
+local S = technic.getter
+
+local function set_can_wear(itemstack, level, max_level)
+ local temp
+ if level == 0 then
+ temp = 0
+ else
+ temp = 65536 - math.floor(level / max_level * 65535)
+ if temp > 65535 then temp = 65535 end
+ if temp < 1 then temp = 1 end
+ end
+ itemstack:set_wear(temp)
+end
+
+local function get_can_level(itemstack)
+ if itemstack:get_metadata() == "" then
+ return 0
+ else
+ return tonumber(itemstack:get_metadata())
+ end
+end
+
+function technic.register_can(d)
+ local data = {}
+ for k, v in pairs(d) do data[k] = v end
+ minetest.register_tool(data.can_name, {
+ description = data.can_description,
+ inventory_image = data.can_inventory_image,
+ stack_max = 1,
+ wear_represents = "content_level",
+ liquids_pointable = true,
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "node" then return end
+ local node = minetest.get_node(pointed_thing.under)
+ if node.name ~= data.liquid_source_name then return end
+ local charge = get_can_level(itemstack)
+ if charge == data.can_capacity then return end
+ if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
+ minetest.log("action", user:get_player_name().." tried to take "..node.name.." at protected position "..minetest.pos_to_string(pointed_thing.under).." with a "..data.can_name)
+ return
+ end
+ minetest.remove_node(pointed_thing.under)
+ charge = charge + 1
+ itemstack:set_metadata(tostring(charge))
+ set_can_wear(itemstack, charge, data.can_capacity)
+ return itemstack
+ end,
+ on_place = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "node" then return end
+ local pos = pointed_thing.under
+ local def = minetest.registered_nodes[minetest.get_node(pos).name] or {}
+ if def.on_rightclick and user and not user:get_player_control().sneak then
+ return def.on_rightclick(pos, minetest.get_node(pos), user, itemstack, pointed_thing)
+ end
+ if not def.buildable_to then
+ pos = pointed_thing.above
+ def = minetest.registered_nodes[minetest.get_node(pos).name] or {}
+ if not def.buildable_to then return end
+ end
+ local charge = get_can_level(itemstack)
+ if charge == 0 then return end
+ if minetest.is_protected(pos, user:get_player_name()) then
+ minetest.log("action", user:get_player_name().." tried to place "..data.liquid_source_name.." at protected position "..minetest.pos_to_string(pos).." with a "..data.can_name)
+ return
+ end
+ minetest.set_node(pos, {name=data.liquid_source_name})
+ charge = charge - 1
+ itemstack:set_metadata(tostring(charge))
+ set_can_wear(itemstack, charge, data.can_capacity)
+ return itemstack
+ end,
+ on_refill = function(stack)
+ stack:set_metadata(tostring(data.can_capacity))
+ set_can_wear(stack, data.can_capacity, data.can_capacity)
+ return stack
+ end,
+ })
+end
+
+technic.register_can({
+ can_name = "technic:water_can",
+ can_description = S("Water Can"),
+ can_inventory_image = "technic_water_can.png",
+ can_capacity = 16,
+ liquid_source_name = "default:water_source",
+ liquid_flowing_name = "default:water_flowing",
+})
+
+minetest.register_craft({
+ output = 'technic:water_can 1',
+ recipe = {
+ {'technic:zinc_ingot', 'technic:rubber','technic:zinc_ingot'},
+ {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'},
+ {'technic:zinc_ingot', 'technic:carbon_steel_ingot', 'technic:zinc_ingot'},
+ }
+})
+
+technic.register_can({
+ can_name = "technic:lava_can",
+ can_description = S("Lava Can"),
+ can_inventory_image = "technic_lava_can.png",
+ can_capacity = 8,
+ liquid_source_name = "default:lava_source",
+ liquid_flowing_name = "default:lava_flowing",
+})
+
+minetest.register_craft({
+ output = 'technic:lava_can 1',
+ recipe = {
+ {'technic:zinc_ingot', 'technic:stainless_steel_ingot','technic:zinc_ingot'},
+ {'technic:stainless_steel_ingot', '', 'technic:stainless_steel_ingot'},
+ {'technic:zinc_ingot', 'technic:stainless_steel_ingot', 'technic:zinc_ingot'},
+ }
+})
diff --git a/technic/technic/tools/chainsaw.lua b/technic/technic/tools/chainsaw.lua
new file mode 100644
index 0000000..bf4efff
--- /dev/null
+++ b/technic/technic/tools/chainsaw.lua
@@ -0,0 +1,366 @@
+-- Configuration
+
+local chainsaw_max_charge = 30000 -- Maximum charge of the saw
+-- Gives 2500 nodes on a single charge (about 50 complete normal trees)
+local chainsaw_charge_per_node = 12
+-- Cut down tree leaves. Leaf decay may cause slowness on large trees
+-- if this is disabled.
+local chainsaw_leaves = true
+
+-- The default trees
+local timber_nodenames = {
+ ["default:jungletree"] = true,
+ ["default:papyrus"] = true,
+ ["default:cactus"] = true,
+ ["default:tree"] = true,
+ ["default:apple"] = true,
+ ["default:pinetree"] = true,
+}
+
+if chainsaw_leaves then
+ timber_nodenames["default:leaves"] = true
+ timber_nodenames["default:jungleleaves"] = true
+ timber_nodenames["default:pine_needles"] = true
+end
+
+-- technic_worldgen defines rubber trees if moretrees isn't installed
+if minetest.get_modpath("technic_worldgen") or
+ minetest.get_modpath("moretrees") then
+ timber_nodenames["moretrees:rubber_tree_trunk_empty"] = true
+ timber_nodenames["moretrees:rubber_tree_trunk"] = true
+ if chainsaw_leaves then
+ timber_nodenames["moretrees:rubber_tree_leaves"] = true
+ end
+end
+
+-- Support moretrees if it is there
+if minetest.get_modpath("moretrees") then
+ timber_nodenames["moretrees:acacia_trunk"] = true
+ timber_nodenames["moretrees:apple_tree_trunk"] = true
+ timber_nodenames["moretrees:beech_trunk"] = true
+ timber_nodenames["moretrees:birch_trunk"] = true
+ timber_nodenames["moretrees:fir_trunk"] = true
+ timber_nodenames["moretrees:oak_trunk"] = true
+ timber_nodenames["moretrees:palm_trunk"] = true
+ timber_nodenames["moretrees:pine_trunk"] = true
+ timber_nodenames["moretrees:sequoia_trunk"] = true
+ timber_nodenames["moretrees:spruce_trunk"] = true
+ timber_nodenames["moretrees:willow_trunk"] = true
+ timber_nodenames["moretrees:jungletree_trunk"] = true
+
+ if chainsaw_leaves then
+ timber_nodenames["moretrees:acacia_leaves"] = true
+ timber_nodenames["moretrees:apple_tree_leaves"] = true
+ timber_nodenames["moretrees:oak_leaves"] = true
+ timber_nodenames["moretrees:fir_leaves"] = true
+ timber_nodenames["moretrees:fir_leaves_bright"] = true
+ timber_nodenames["moretrees:sequoia_leaves"] = true
+ timber_nodenames["moretrees:birch_leaves"] = true
+ timber_nodenames["moretrees:birch_leaves"] = true
+ timber_nodenames["moretrees:palm_leaves"] = true
+ timber_nodenames["moretrees:spruce_leaves"] = true
+ timber_nodenames["moretrees:spruce_leaves"] = true
+ timber_nodenames["moretrees:pine_leaves"] = true
+ timber_nodenames["moretrees:willow_leaves"] = true
+ timber_nodenames["moretrees:jungletree_leaves_green"] = true
+ timber_nodenames["moretrees:jungletree_leaves_yellow"] = true
+ timber_nodenames["moretrees:jungletree_leaves_red"] = true
+ timber_nodenames["moretrees:acorn"] = true
+ timber_nodenames["moretrees:coconut"] = true
+ timber_nodenames["moretrees:spruce_cone"] = true
+ timber_nodenames["moretrees:pine_cone"] = true
+ timber_nodenames["moretrees:fir_cone"] = true
+ timber_nodenames["moretrees:apple_blossoms"] = true
+ end
+end
+
+-- Support growing_trees
+if minetest.get_modpath("growing_trees") then
+ timber_nodenames["growing_trees:trunk"] = true
+ timber_nodenames["growing_trees:medium_trunk"] = true
+ timber_nodenames["growing_trees:big_trunk"] = true
+ timber_nodenames["growing_trees:trunk_top"] = true
+ timber_nodenames["growing_trees:trunk_sprout"] = true
+ timber_nodenames["growing_trees:branch_sprout"] = true
+ timber_nodenames["growing_trees:branch"] = true
+ timber_nodenames["growing_trees:branch_xmzm"] = true
+ timber_nodenames["growing_trees:branch_xpzm"] = true
+ timber_nodenames["growing_trees:branch_xmzp"] = true
+ timber_nodenames["growing_trees:branch_xpzp"] = true
+ timber_nodenames["growing_trees:branch_zz"] = true
+ timber_nodenames["growing_trees:branch_xx"] = true
+
+ if chainsaw_leaves then
+ timber_nodenames["growing_trees:leaves"] = true
+ end
+end
+
+-- Support growing_cactus
+if minetest.get_modpath("growing_cactus") then
+ timber_nodenames["growing_cactus:sprout"] = true
+ timber_nodenames["growing_cactus:branch_sprout_vertical"] = true
+ timber_nodenames["growing_cactus:branch_sprout_vertical_fixed"] = true
+ timber_nodenames["growing_cactus:branch_sprout_xp"] = true
+ timber_nodenames["growing_cactus:branch_sprout_xm"] = true
+ timber_nodenames["growing_cactus:branch_sprout_zp"] = true
+ timber_nodenames["growing_cactus:branch_sprout_zm"] = true
+ timber_nodenames["growing_cactus:trunk"] = true
+ timber_nodenames["growing_cactus:branch_trunk"] = true
+ timber_nodenames["growing_cactus:branch"] = true
+ timber_nodenames["growing_cactus:branch_xp"] = true
+ timber_nodenames["growing_cactus:branch_xm"] = true
+ timber_nodenames["growing_cactus:branch_zp"] = true
+ timber_nodenames["growing_cactus:branch_zm"] = true
+ timber_nodenames["growing_cactus:branch_zz"] = true
+ timber_nodenames["growing_cactus:branch_xx"] = true
+end
+
+-- Support farming_plus
+if minetest.get_modpath("farming_plus") then
+ if chainsaw_leaves then
+ timber_nodenames["farming_plus:banana_leaves"] = true
+ timber_nodenames["farming_plus:banana"] = true
+ timber_nodenames["farming_plus:cocoa_leaves"] = true
+ timber_nodenames["farming_plus:cocoa"] = true
+ end
+end
+
+-- Support nature
+if minetest.get_modpath("nature") then
+ if chainsaw_leaves then
+ timber_nodenames["nature:blossom"] = true
+ end
+end
+
+-- Support snow
+if minetest.get_modpath("snow") then
+ if chainsaw_leaves then
+ timber_nodenames["snow:needles"] = true
+ timber_nodenames["snow:needles_decorated"] = true
+ timber_nodenames["snow:star"] = true
+ end
+end
+
+-- Support vines (also generated by moretrees if available)
+if minetest.get_modpath("vines") then
+ if chainsaw_leaves then
+ timber_nodenames["vines:vines"] = true
+ end
+end
+
+if minetest.get_modpath("trunks") then
+ if chainsaw_leaves then
+ timber_nodenames["trunks:moss"] = true
+ timber_nodenames["trunks:moss_fungus"] = true
+ timber_nodenames["trunks:treeroot"] = true
+ end
+end
+
+local S = technic.getter
+
+technic.register_power_tool("technic:chainsaw", chainsaw_max_charge)
+
+-- Table for saving what was sawed down
+local produced = {}
+
+-- Save the items sawed down so that we can drop them in a nice single stack
+local function handle_drops(drops)
+ for _, item in ipairs(drops) do
+ local stack = ItemStack(item)
+ local name = stack:get_name()
+ local p = produced[name]
+ if not p then
+ produced[name] = stack
+ else
+ p:set_count(p:get_count() + stack:get_count())
+ end
+ end
+end
+
+--- Iterator over positions to try to saw around a sawed node.
+-- This returns positions in a 3x1x3 area around the position, plus the
+-- position above it. This does not return the bottom position to prevent
+-- the chainsaw from cutting down nodes below the cutting position.
+-- @param pos Sawing position.
+local function iterSawTries(pos)
+ -- Copy position to prevent mangling it
+ local pos = vector.new(pos)
+ local i = 0
+
+ return function()
+ i = i + 1
+ -- Given a (top view) area like so (where 5 is the starting position):
+ -- X -->
+ -- Z 123
+ -- | 456
+ -- V 789
+ -- This will return positions 1, 4, 7, 2, 8 (skip 5), 3, 6, 9,
+ -- and the position above 5.
+ if i == 1 then
+ -- Move to starting position
+ pos.x = pos.x - 1
+ pos.z = pos.z - 1
+ elseif i == 4 or i == 7 then
+ -- Move to next X and back to start of Z when we reach
+ -- the end of a Z line.
+ pos.x = pos.x + 1
+ pos.z = pos.z - 2
+ elseif i == 5 then
+ -- Skip the middle position (we've already run on it)
+ -- and double-increment the counter.
+ pos.z = pos.z + 2
+ i = i + 1
+ elseif i <= 9 then
+ -- Go to next Z.
+ pos.z = pos.z + 1
+ elseif i == 10 then
+ -- Move back to center and up.
+ -- The Y+ position must be last so that we don't dig
+ -- straight upward and not come down (since the Y-
+ -- position isn't checked).
+ pos.x = pos.x - 1
+ pos.z = pos.z - 1
+ pos.y = pos.y + 1
+ else
+ return nil
+ end
+ return pos
+ end
+end
+
+-- This function does all the hard work. Recursively we dig the node at hand
+-- if it is in the table and then search the surroundings for more stuff to dig.
+local function recursive_dig(pos, remaining_charge)
+ if remaining_charge < chainsaw_charge_per_node then
+ return remaining_charge
+ end
+ local node = minetest.get_node(pos)
+
+ if not timber_nodenames[node.name] then
+ return remaining_charge
+ end
+
+ -- Wood found - cut it
+ handle_drops(minetest.get_node_drops(node.name, ""))
+ minetest.remove_node(pos)
+ remaining_charge = remaining_charge - chainsaw_charge_per_node
+
+ -- Check surroundings and run recursively if any charge left
+ for npos in iterSawTries(pos) do
+ if remaining_charge < chainsaw_charge_per_node then
+ break
+ end
+ if timber_nodenames[minetest.get_node(npos).name] then
+ remaining_charge = recursive_dig(npos, remaining_charge)
+ end
+ end
+ return remaining_charge
+end
+
+-- Function to randomize positions for new node drops
+local function get_drop_pos(pos)
+ local drop_pos = {}
+
+ for i = 0, 8 do
+ -- Randomize position for a new drop
+ drop_pos.x = pos.x + math.random(-3, 3)
+ drop_pos.y = pos.y - 1
+ drop_pos.z = pos.z + math.random(-3, 3)
+
+ -- Move the randomized position upwards until
+ -- the node is air or unloaded.
+ for y = drop_pos.y, drop_pos.y + 5 do
+ drop_pos.y = y
+ local node = minetest.get_node_or_nil(drop_pos)
+
+ if not node then
+ -- If the node is not loaded yet simply drop
+ -- the item at the original digging position.
+ return pos
+ elseif node.name == "air" then
+ -- Add variation to the entity drop position,
+ -- but don't let drops get too close to the edge
+ drop_pos.x = drop_pos.x + (math.random() * 0.8) - 0.5
+ drop_pos.z = drop_pos.z + (math.random() * 0.8) - 0.5
+ return drop_pos
+ end
+ end
+ end
+
+ -- Return the original position if this takes too long
+ return pos
+end
+
+-- Chainsaw entry point
+local function chainsaw_dig(pos, current_charge)
+ -- Start sawing things down
+ local remaining_charge = recursive_dig(pos, current_charge)
+ minetest.sound_play("chainsaw", {pos = pos, gain = 1.0,
+ max_hear_distance = 10})
+
+ -- Now drop items for the player
+ for name, stack in pairs(produced) do
+ -- Drop stacks of stack max or less
+ local count, max = stack:get_count(), stack:get_stack_max()
+ stack:set_count(max)
+ while count > max do
+ minetest.add_item(get_drop_pos(pos), stack)
+ count = count - max
+ end
+ stack:set_count(count)
+ minetest.add_item(get_drop_pos(pos), stack)
+ end
+
+ -- Clean up
+ produced = {}
+
+ return remaining_charge
+end
+
+
+minetest.register_tool("technic:chainsaw", {
+ description = S("Chainsaw"),
+ inventory_image = "technic_chainsaw.png",
+ stack_max = 1,
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return itemstack
+ end
+
+ local meta = minetest.deserialize(itemstack:get_metadata())
+ if not meta or not meta.charge or
+ meta.charge < chainsaw_charge_per_node then
+ return
+ end
+
+ local name = user:get_player_name()
+ if minetest.is_protected(pointed_thing.under, name) then
+ minetest.record_protection_violation(pointed_thing.under, name)
+ return
+ end
+
+ -- Send current charge to digging function so that the
+ -- chainsaw will stop after digging a number of nodes
+ meta.charge = chainsaw_dig(pointed_thing.under, meta.charge)
+ if not technic.creative_mode then
+ technic.set_RE_wear(itemstack, meta.charge, chainsaw_max_charge)
+ itemstack:set_metadata(minetest.serialize(meta))
+ end
+ return itemstack
+ end,
+})
+
+local mesecons_button = minetest.get_modpath("mesecons_button")
+local trigger = mesecons_button and "mesecons_button:button_off" or "default:mese_crystal_fragment"
+
+minetest.register_craft({
+ output = "technic:chainsaw",
+ recipe = {
+ {"technic:stainless_steel_ingot", trigger, "technic:battery"},
+ {"technic:fine_copper_wire", "technic:motor", "technic:battery"},
+ {"", "", "technic:stainless_steel_ingot"},
+ }
+})
+
diff --git a/technic/technic/tools/flashlight.lua b/technic/technic/tools/flashlight.lua
new file mode 100644
index 0000000..252dc8c
--- /dev/null
+++ b/technic/technic/tools/flashlight.lua
@@ -0,0 +1,123 @@
+-- Original code comes from walkin_light mod by Echo
+-- http://minetest.net/forum/viewtopic.php?id=2621
+
+local flashlight_max_charge = 30000
+
+local S = technic.getter
+
+technic.register_power_tool("technic:flashlight", flashlight_max_charge)
+
+minetest.register_alias("technic:light_off", "air")
+
+minetest.register_tool("technic:flashlight", {
+ description = S("Flashlight"),
+ inventory_image = "technic_flashlight.png",
+ stack_max = 1,
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+})
+
+minetest.register_craft({
+ output = "technic:flashlight",
+ recipe = {
+ {"technic:rubber", "default:glass", "technic:rubber"},
+ {"technic:stainless_steel_ingot", "technic:battery", "technic:stainless_steel_ingot"},
+ {"", "technic:battery", ""}
+ }
+})
+
+
+local player_positions = {}
+local was_wielding = {}
+
+local function check_for_flashlight(player)
+ if player == nil then
+ return false
+ end
+ local inv = player:get_inventory()
+ local hotbar = inv:get_list("main")
+ for i = 1, 8 do
+ if hotbar[i]:get_name() == "technic:flashlight" then
+ local meta = minetest.deserialize(hotbar[i]:get_metadata())
+ if meta and meta.charge and meta.charge >= 2 then
+ if not technic.creative_mode then
+ meta.charge = meta.charge - 2;
+ technic.set_RE_wear(hotbar[i], meta.charge, flashlight_max_charge)
+ hotbar[i]:set_metadata(minetest.serialize(meta))
+ inv:set_stack("main", i, hotbar[i])
+ end
+ return true
+ end
+ end
+ end
+ return false
+end
+
+minetest.register_on_joinplayer(function(player)
+ local player_name = player:get_player_name()
+ local pos = player:getpos()
+ local rounded_pos = vector.round(pos)
+ rounded_pos.y = rounded_pos.y + 1
+ player_positions[player_name] = rounded_pos
+ was_wielding[player_name] = true
+end)
+
+
+minetest.register_on_leaveplayer(function(player)
+ local player_name = player:get_player_name()
+ local pos = player_positions[player_name]
+ local nodename = minetest.get_node(pos).name
+ if nodename == "technic:light" then
+ minetest.remove_node(pos)
+ end
+ player_positions[player_name] = nil
+end)
+
+minetest.register_globalstep(function(dtime)
+ for i, player in pairs(minetest.get_connected_players()) do
+ local player_name = player:get_player_name()
+ local flashlight_weared = check_for_flashlight(player)
+ local pos = player:getpos()
+ local rounded_pos = vector.round(pos)
+ rounded_pos.y = rounded_pos.y + 1
+ local old_pos = player_positions[player_name]
+ local player_moved = old_pos and not vector.equals(old_pos, rounded_pos)
+ if not old_pos then
+ old_pos = rounded_pos
+ player_moved = true
+ end
+
+ -- Remove light, flashlight weared out or was removed from hotbar
+ if was_wielding[player_name] and not flashlight_weared then
+ was_wielding[player_name] = false
+ local node = minetest.get_node_or_nil(old_pos)
+ if node and node.name == "technic:light" then
+ minetest.remove_node(old_pos)
+ end
+ elseif (player_moved or not was_wielding[player_name]) and flashlight_weared then
+ local node = minetest.get_node_or_nil(rounded_pos)
+ if node and node.name == "air" then
+ minetest.set_node(rounded_pos, {name="technic:light"})
+ end
+ local node = minetest.get_node_or_nil(old_pos)
+ if node and node.name == "technic:light" then
+ minetest.remove_node(old_pos)
+ end
+ player_positions[player_name] = rounded_pos
+ was_wielding[player_name] = true
+ end
+ end
+end)
+
+minetest.register_node("technic:light", {
+ drawtype = "glasslike",
+ tiles = {"technic_light.png"},
+ paramtype = "light",
+ groups = {not_in_creative_inventory=1},
+ drop = "",
+ walkable = false,
+ buildable_to = true,
+ sunlight_propagates = true,
+ light_source = LIGHT_MAX,
+ pointable = false,
+})
diff --git a/technic/technic/tools/init.lua b/technic/technic/tools/init.lua
new file mode 100644
index 0000000..5e0aa02
--- /dev/null
+++ b/technic/technic/tools/init.lua
@@ -0,0 +1,23 @@
+local path = technic.modpath.."/tools"
+
+if technic.config:get_bool("enable_mining_drill") then
+ dofile(path.."/mining_drill.lua")
+end
+if technic.config:get_bool("enable_mining_laser") then
+ dofile(path.."/mining_lasers.lua")
+end
+if technic.config:get_bool("enable_flashlight") then
+ dofile(path.."/flashlight.lua")
+end
+dofile(path.."/cans.lua")
+dofile(path.."/chainsaw.lua")
+dofile(path.."/tree_tap.lua")
+dofile(path.."/sonic_screwdriver.lua")
+dofile(path.."/prospector.lua")
+dofile(path.."/vacuum.lua")
+
+if minetest.get_modpath("screwdriver") then
+ -- compatibility alias
+ minetest.register_alias("technic:screwdriver", "screwdriver:screwdriver")
+end
+
diff --git a/technic/technic/tools/mining_drill.lua b/technic/technic/tools/mining_drill.lua
new file mode 100644
index 0000000..8a25abe
--- /dev/null
+++ b/technic/technic/tools/mining_drill.lua
@@ -0,0 +1,419 @@
+local max_charge = {50000, 200000, 650000}
+local power_usage_per_node = {200, 500, 800}
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = 'technic:mining_drill',
+ recipe = {
+ {'moreores:tin_ingot', 'technic:diamond_drill_head', 'moreores:tin_ingot'},
+ {'technic:stainless_steel_ingot', 'technic:motor', 'technic:stainless_steel_ingot'},
+ {'', 'technic:red_energy_crystal', 'default:copper_ingot'},
+ }
+})
+minetest.register_craft({
+ output = 'technic:mining_drill_mk2',
+ recipe = {
+ {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'},
+ {'technic:stainless_steel_ingot', 'technic:mining_drill', 'technic:stainless_steel_ingot'},
+ {'', 'technic:green_energy_crystal', ''},
+ }
+})
+minetest.register_craft({
+ output = 'technic:mining_drill_mk3',
+ recipe = {
+ {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'},
+ {'technic:stainless_steel_ingot', 'technic:mining_drill_mk2', 'technic:stainless_steel_ingot'},
+ {'', 'technic:blue_energy_crystal', ''},
+ }
+})
+for i = 1, 4 do
+ minetest.register_craft({
+ output = 'technic:mining_drill_mk3',
+ recipe = {
+ {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'},
+ {'technic:stainless_steel_ingot', 'technic:mining_drill_mk2_'..i, 'technic:stainless_steel_ingot'},
+ {'', 'technic:blue_energy_crystal', ''},
+ }
+ })
+end
+
+local mining_drill_mode_text = {
+ {S("Single node.")},
+ {S("3 nodes deep.")},
+ {S("3 nodes wide.")},
+ {S("3 nodes tall.")},
+ {S("3x3 nodes.")},
+}
+
+local function drill_dig_it0 (pos,player)
+ if minetest.is_protected(pos, player:get_player_name()) then
+ minetest.record_protection_violation(pos, player:get_player_name())
+ return
+ end
+ local node=minetest.get_node(pos)
+ if node.name == "air" or node.name == "ignore" then return end
+ if node.name == "default:lava_source" then return end
+ if node.name == "default:lava_flowing" then return end
+ if node.name == "default:water_source" then minetest.remove_node(pos) return end
+ if node.name == "default:water_flowing" then minetest.remove_node(pos) return end
+ minetest.node_dig(pos,node,player)
+end
+
+local function drill_dig_it1 (player)
+ local dir=player:get_look_dir()
+ if math.abs(dir.x)>math.abs(dir.z) then
+ if dir.x>0 then return 0 end
+ return 1
+ end
+ if dir.z>0 then return 2 end
+ return 3
+end
+
+local function drill_dig_it2 (pos,player)
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z-2
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ pos.y=pos.y+1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z-2
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ pos.y=pos.y-2
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z-2
+ drill_dig_it0 (pos,player)
+end
+
+local function drill_dig_it3 (pos,player)
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ pos.y=pos.y+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ pos.y=pos.y-2
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+end
+
+local function drill_dig_it4 (pos,player)
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ pos.z=pos.z-2
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+end
+
+local function cost_to_use(drill_type, mode)
+ local mult
+ if mode == 1 then
+ mult = 1
+ elseif mode <= 4 then
+ mult = 3
+ else
+ mult = 9
+ end
+ return power_usage_per_node[drill_type] * mult
+end
+
+local function drill_dig_it(pos, player, mode)
+ if mode == 1 then
+ drill_dig_it0(pos, player)
+ end
+
+ if mode == 2 then -- 3 deep
+ dir = drill_dig_it1(player)
+ if dir == 0 then -- x+
+ drill_dig_it0(pos, player)
+ pos.x = pos.x + 1
+ drill_dig_it0(pos, player)
+ pos.x = pos.x + 1
+ drill_dig_it0(pos, player)
+ end
+ if dir == 1 then -- x-
+ drill_dig_it0(pos, player)
+ pos.x=pos.x-1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-1
+ drill_dig_it0 (pos,player)
+ end
+ if dir==2 then -- z+
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ end
+ if dir==3 then -- z-
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z-1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z-1
+ drill_dig_it0 (pos,player)
+ end
+ end
+
+ if mode==3 then -- 3 wide
+ dir=drill_dig_it1(player)
+ if dir==0 or dir==1 then -- x
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z+1
+ drill_dig_it0 (pos,player)
+ pos.z=pos.z-2
+ drill_dig_it0 (pos,player)
+ end
+ if dir==2 or dir==3 then -- z
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x+1
+ drill_dig_it0 (pos,player)
+ pos.x=pos.x-2
+ drill_dig_it0 (pos,player)
+ end
+ end
+
+ if mode==4 then -- 3 tall, selected in the middle
+ drill_dig_it0 (pos,player)
+ pos.y=pos.y-1
+ drill_dig_it0 (pos,player)
+ pos.y=pos.y-1
+ drill_dig_it0 (pos,player)
+ end
+
+ if mode==5 then -- 3 x 3
+ local dir=player:get_look_dir()
+ if math.abs(dir.y)<0.5 then
+ dir=drill_dig_it1(player)
+ if dir==0 or dir==1 then -- x
+ drill_dig_it2(pos,player)
+ end
+ if dir==2 or dir==3 then -- z
+ drill_dig_it3(pos,player)
+ end
+ else
+ drill_dig_it4(pos,player)
+ end
+ end
+
+ minetest.sound_play("mining_drill", {pos = pos, gain = 1.0, max_hear_distance = 10,})
+end
+
+local function pos_is_pointable(pos)
+ local node = minetest.get_node(pos)
+ local nodedef = minetest.registered_nodes[node.name]
+ return nodedef and nodedef.pointable
+end
+
+local function mining_drill_mk2_setmode(user,itemstack)
+ local player_name=user:get_player_name()
+ local item=itemstack:to_table()
+ local meta=minetest.deserialize(item["metadata"])
+ if meta==nil then
+ meta={}
+ mode=0
+ end
+ if meta["mode"]==nil then
+ minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(2))
+ meta["mode"]=0
+ mode=0
+ end
+ mode=(meta["mode"])
+ mode=mode+1
+ if mode>=5 then mode=1 end
+ minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(2, mode)..": "..mining_drill_mode_text[mode][1])
+ item["name"]="technic:mining_drill_mk2_"..mode
+ meta["mode"]=mode
+ item["metadata"]=minetest.serialize(meta)
+ itemstack:replace(item)
+ return itemstack
+end
+
+local function mining_drill_mk3_setmode(user,itemstack)
+ local player_name=user:get_player_name()
+ local item=itemstack:to_table()
+ local meta=minetest.deserialize(item["metadata"])
+ if meta==nil then
+ meta={}
+ mode=0
+ end
+ if meta["mode"]==nil then
+ minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(3))
+ meta["mode"]=0
+ mode=0
+ end
+ mode=(meta["mode"])
+ mode=mode+1
+ if mode>=6 then mode=1 end
+ minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(3, mode)..": "..mining_drill_mode_text[mode][1])
+ item["name"]="technic:mining_drill_mk3_"..mode
+ meta["mode"]=mode
+ item["metadata"]=minetest.serialize(meta)
+ itemstack:replace(item)
+ return itemstack
+end
+
+
+local function mining_drill_mk2_handler(itemstack, user, pointed_thing)
+ local keys = user:get_player_control()
+ local player_name = user:get_player_name()
+ local meta = minetest.deserialize(itemstack:get_metadata())
+ if not meta or not meta.mode or keys.sneak then
+ return mining_drill_mk2_setmode(user, itemstack)
+ end
+ if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then
+ return
+ end
+ local charge_to_take = cost_to_use(2, meta.mode)
+ if meta.charge >= charge_to_take then
+ local pos = minetest.get_pointed_thing_position(pointed_thing, above)
+ drill_dig_it(pos, user, meta.mode)
+ if not technic.creative_mode then
+ meta.charge = meta.charge - charge_to_take
+ itemstack:set_metadata(minetest.serialize(meta))
+ technic.set_RE_wear(itemstack, meta.charge, max_charge[2])
+ end
+ end
+ return itemstack
+end
+
+local function mining_drill_mk3_handler(itemstack, user, pointed_thing)
+ local keys = user:get_player_control()
+ local player_name = user:get_player_name()
+ local meta = minetest.deserialize(itemstack:get_metadata())
+ if not meta or not meta.mode or keys.sneak then
+ return mining_drill_mk3_setmode(user, itemstack)
+ end
+ if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then
+ return
+ end
+ local charge_to_take = cost_to_use(3, meta.mode)
+ if meta.charge >= charge_to_take then
+ local pos = minetest.get_pointed_thing_position(pointed_thing, above)
+ drill_dig_it(pos, user, meta.mode)
+ if not technic.creative_mode then
+ meta.charge = meta.charge - charge_to_take
+ itemstack:set_metadata(minetest.serialize(meta))
+ technic.set_RE_wear(itemstack, meta.charge, max_charge[3])
+ end
+ end
+ return itemstack
+end
+
+technic.register_power_tool("technic:mining_drill", max_charge[1])
+
+minetest.register_tool("technic:mining_drill", {
+ description = S("Mining Drill Mk%d"):format(1),
+ inventory_image = "technic_mining_drill.png",
+ stack_max = 1,
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) then
+ return itemstack
+ end
+ local meta = minetest.deserialize(itemstack:get_metadata())
+ if not meta or not meta.charge then
+ return
+ end
+ local charge_to_take = cost_to_use(1, 1)
+ if meta.charge >= charge_to_take then
+ local pos = minetest.get_pointed_thing_position(pointed_thing, above)
+ drill_dig_it(pos, user, 1)
+ if not technic.creative_mode then
+ meta.charge = meta.charge - charge_to_take
+ itemstack:set_metadata(minetest.serialize(meta))
+ technic.set_RE_wear(itemstack, meta.charge, max_charge[1])
+ end
+ end
+ return itemstack
+ end,
+})
+
+minetest.register_tool("technic:mining_drill_mk2", {
+ description = S("Mining Drill Mk%d"):format(2),
+ inventory_image = "technic_mining_drill_mk2.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user, pointed_thing)
+ mining_drill_mk2_handler(itemstack, user, pointed_thing)
+ return itemstack
+ end,
+})
+
+technic.register_power_tool("technic:mining_drill_mk2", max_charge[2])
+
+for i = 1, 4 do
+ technic.register_power_tool("technic:mining_drill_mk2_"..i, max_charge[2])
+ minetest.register_tool("technic:mining_drill_mk2_"..i, {
+ description = S("Mining Drill Mk%d Mode %d"):format(2, i),
+ inventory_image = "technic_mining_drill_mk2.png^technic_tool_mode"..i..".png",
+ wield_image = "technic_mining_drill_mk2.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ groups = {not_in_creative_inventory=1},
+ on_use = function(itemstack, user, pointed_thing)
+ mining_drill_mk2_handler(itemstack, user, pointed_thing)
+ return itemstack
+ end,
+ })
+end
+
+minetest.register_tool("technic:mining_drill_mk3", {
+ description = S("Mining Drill Mk%d"):format(3),
+ inventory_image = "technic_mining_drill_mk3.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user, pointed_thing)
+ mining_drill_mk3_handler(itemstack,user,pointed_thing)
+ return itemstack
+ end,
+})
+
+technic.register_power_tool("technic:mining_drill_mk3", max_charge[3])
+
+for i=1,5,1 do
+ technic.register_power_tool("technic:mining_drill_mk3_"..i, max_charge[3])
+ minetest.register_tool("technic:mining_drill_mk3_"..i, {
+ description = S("Mining Drill Mk%d Mode %d"):format(3, i),
+ inventory_image = "technic_mining_drill_mk3.png^technic_tool_mode"..i..".png",
+ wield_image = "technic_mining_drill_mk3.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ groups = {not_in_creative_inventory=1},
+ on_use = function(itemstack, user, pointed_thing)
+ mining_drill_mk3_handler(itemstack,user,pointed_thing)
+ return itemstack
+ end,
+ })
+end
diff --git a/technic/technic/tools/mining_lasers.lua b/technic/technic/tools/mining_lasers.lua
new file mode 100644
index 0000000..4c83ae9
--- /dev/null
+++ b/technic/technic/tools/mining_lasers.lua
@@ -0,0 +1,178 @@
+local mining_lasers_list = {
+-- {<num>, <range of the laser shots>, <max_charge>, <charge_per_shot>},
+ {"1", 7, 50000, 1000},
+ {"2", 14, 200000, 2000},
+ {"3", 21, 650000, 3000},
+}
+
+local S = technic.getter
+
+minetest.register_craft({
+ output = 'technic:laser_mk1',
+ recipe = {
+ {'default:diamond', 'technic:brass_ingot', 'default:obsidian_glass'},
+ {'', 'technic:brass_ingot', 'technic:red_energy_crystal'},
+ {'', '', 'default:copper_ingot'},
+ }
+})
+minetest.register_craft({
+ output = 'technic:laser_mk2',
+ recipe = {
+ {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk1'},
+ {'', 'technic:carbon_steel_ingot', 'technic:green_energy_crystal'},
+ {'', '', 'default:copper_ingot'},
+ }
+})
+minetest.register_craft({
+ output = 'technic:laser_mk3',
+ recipe = {
+ {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk2'},
+ {'', 'technic:carbon_steel_ingot', 'technic:blue_energy_crystal'},
+ {'', '', 'default:copper_ingot'},
+ }
+})
+
+-- Based on code by Uberi: https://gist.github.com/Uberi/3125280
+local function rayIter(pos, dir, range)
+ local p = vector.round(pos)
+ local x_step, y_step, z_step = 0, 0, 0
+ local x_component, y_component, z_component = 0, 0, 0
+ local x_intersect, y_intersect, z_intersect = 0, 0, 0
+
+ if dir.x == 0 then
+ x_intersect = math.huge
+ elseif dir.x > 0 then
+ x_step = 1
+ x_component = 1 / dir.x
+ x_intersect = x_component
+ else
+ x_step = -1
+ x_component = 1 / -dir.x
+ end
+ if dir.y == 0 then
+ y_intersect = math.huge
+ elseif dir.y > 0 then
+ y_step = 1
+ y_component = 1 / dir.y
+ y_intersect = y_component
+ else
+ y_step = -1
+ y_component = 1 / -dir.y
+ end
+ if dir.z == 0 then
+ z_intersect = math.huge
+ elseif dir.z > 0 then
+ z_step = 1
+ z_component = 1 / dir.z
+ z_intersect = z_component
+ else
+ z_step = -1
+ z_component = 1 / -dir.z
+ end
+
+ return function()
+ if x_intersect < y_intersect then
+ if x_intersect < z_intersect then
+ p.x = p.x + x_step
+ x_intersect = x_intersect + x_component
+ else
+ p.z = p.z + z_step
+ z_intersect = z_intersect + z_component
+ end
+ elseif y_intersect < z_intersect then
+ p.y = p.y + y_step
+ y_intersect = y_intersect + y_component
+ else
+ p.z = p.z + z_step
+ z_intersect = z_intersect + z_component
+ end
+ if vector.distance(pos, p) > range then
+ return nil
+ end
+ return p
+ end
+end
+
+local function laser_node(pos, node, player)
+ local def = minetest.registered_nodes[node.name]
+ if def and def.liquidtype ~= "none" then
+ minetest.remove_node(pos)
+ minetest.add_particle({
+ pos = pos,
+ vel = {x=0, y=2, z=0},
+ acc = {x=0, y=-1, z=0},
+ expirationtime = 1.5,
+ size = 6 + math.random() * 2,
+ texture = "smoke_puff.png^[transform" .. math.random(0, 7),
+ })
+ return
+ end
+ minetest.node_dig(pos, node, player)
+end
+
+local no_destroy = {
+ ["air"] = true,
+ ["default:lava_source"] = true,
+ ["default:lava_flowing"] = true,
+}
+local function laser_shoot(player, range, particle_texture, sound)
+ local player_pos = player:getpos()
+ local player_name = player:get_player_name()
+ local dir = player:get_look_dir()
+
+ local start_pos = vector.new(player_pos)
+ -- Adjust to head height
+ start_pos.y = start_pos.y + 1.9
+ minetest.add_particle({
+ pos = startpos,
+ vel = dir,
+ acc = vector.multiply(dir, 50),
+ expirationtime = range / 11,
+ size = 1,
+ texture = particle_texture .. "^[transform" .. math.random(0, 7),
+ })
+ minetest.sound_play(sound, {pos = player_pos, max_hear_distance = range})
+ for pos in rayIter(start_pos, dir, range) do
+ if minetest.is_protected(pos, player_name) then
+ minetest.record_protection_violation(pos, player_name)
+ break
+ end
+ local node = minetest.get_node_or_nil(pos)
+ if not node then
+ break
+ end
+ if not no_destroy[node.name] then
+ laser_node(pos, node, player)
+ end
+ end
+end
+
+
+for _, m in pairs(mining_lasers_list) do
+ technic.register_power_tool("technic:laser_mk"..m[1], m[3])
+ minetest.register_tool("technic:laser_mk"..m[1], {
+ description = S("Mining Laser Mk%d"):format(m[1]),
+ inventory_image = "technic_mining_laser_mk"..m[1]..".png",
+ stack_max = 1,
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user)
+ local meta = minetest.deserialize(itemstack:get_metadata())
+ if not meta or not meta.charge then
+ return
+ end
+
+ -- If there's enough charge left, fire the laser
+ if meta.charge >= m[4] then
+ laser_shoot(user, m[2], "technic_laser_beam_mk"..m[1]..".png", "technic_laser_mk"..m[1])
+ if not technic.creative_mode then
+ meta.charge = meta.charge - m[4]
+ technic.set_RE_wear(itemstack, meta.charge, m[3])
+ itemstack:set_metadata(minetest.serialize(meta))
+ end
+ end
+ return itemstack
+ end,
+ })
+end
+
diff --git a/technic/technic/tools/prospector.lua b/technic/technic/tools/prospector.lua
new file mode 100644
index 0000000..b28f1d8
--- /dev/null
+++ b/technic/technic/tools/prospector.lua
@@ -0,0 +1,128 @@
+local S = technic.getter
+
+technic.register_power_tool("technic:prospector", 300000)
+
+local function get_metadata(toolstack)
+ local m = minetest.deserialize(toolstack:get_metadata())
+ if not m then m = {} end
+ if not m.charge then m.charge = 0 end
+ if not m.target then m.target = "" end
+ if not m.look_depth then m.look_depth = 7 end
+ if not m.look_radius then m.look_radius = 1 end
+ return m
+end
+
+minetest.register_tool("technic:prospector", {
+ description = S("Prospector"),
+ inventory_image = "technic_prospector.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(toolstack, user, pointed_thing)
+ if not user or not user:is_player() or user.is_fake_player then return end
+ if pointed_thing.type ~= "node" then return end
+ local toolmeta = get_metadata(toolstack)
+ local look_diameter = toolmeta.look_radius * 2 + 1
+ local charge_to_take = toolmeta.look_depth * (toolmeta.look_depth + 1) * look_diameter * look_diameter
+ if toolmeta.charge < charge_to_take then return end
+ if toolmeta.target == "" then
+ minetest.chat_send_player(user:get_player_name(), "Right-click to set target block type")
+ return
+ end
+ if not technic.creative_mode then
+ toolmeta.charge = toolmeta.charge - charge_to_take
+ toolstack:set_metadata(minetest.serialize(toolmeta))
+ technic.set_RE_wear(toolstack, toolmeta.charge, technic.power_tools[toolstack:get_name()])
+ end
+ local start_pos = pointed_thing.under
+ local forward = minetest.facedir_to_dir(minetest.dir_to_facedir(user:get_look_dir(), true))
+ local right = forward.x ~= 0 and { x=0, y=1, z=0 } or (forward.y ~= 0 and { x=0, y=0, z=1 } or { x=1, y=0, z=0 })
+ local up = forward.x ~= 0 and { x=0, y=0, z=1 } or (forward.y ~= 0 and { x=1, y=0, z=0 } or { x=0, y=1, z=0 })
+ local base_pos = vector.add(start_pos, vector.multiply(vector.add(right, up), - toolmeta.look_radius))
+ local found = false
+ for f = 0, toolmeta.look_depth-1 do
+ for r = 0, look_diameter-1 do
+ for u = 0, look_diameter-1 do
+ if minetest.get_node(vector.add(vector.add(vector.add(base_pos, vector.multiply(forward, f)), vector.multiply(right, r)), vector.multiply(up, u))).name == toolmeta.target then found = true end
+ end
+ end
+ end
+ if math.random() < 0.02 then found = not found end
+ minetest.chat_send_player(user:get_player_name(), minetest.registered_nodes[toolmeta.target].description.." is "..(found and "present" or "absent").." in "..look_diameter.."x"..look_diameter.."x"..toolmeta.look_depth.." region")
+ minetest.sound_play("technic_prospector_"..(found and "hit" or "miss"), { pos = vector.add(user:getpos(), { x = 0, y = 1, z = 0 }), gain = 1.0, max_hear_distance = 10 })
+ return toolstack
+ end,
+ on_place = function(toolstack, user, pointed_thing)
+ if not user or not user:is_player() or user.is_fake_player then return end
+ local toolmeta = get_metadata(toolstack)
+ local pointed
+ if pointed_thing.type == "node" then
+ local pname = minetest.get_node(pointed_thing.under).name
+ local pdef = minetest.registered_nodes[pname]
+ if pdef and (pdef.groups.not_in_creative_inventory or 0) == 0 and pname ~= toolmeta.target then
+ pointed = pname
+ end
+ end
+ local look_diameter = toolmeta.look_radius * 2 + 1
+ minetest.show_formspec(user:get_player_name(), "technic:prospector_control",
+ "size[7,8.5]"..
+ "item_image[0,0;1,1;"..toolstack:get_name().."]"..
+ "label[1,0;"..minetest.formspec_escape(toolstack:get_definition().description).."]"..
+ (toolmeta.target ~= "" and
+ "label[0,1.5;Current target:]"..
+ "label[0,2;"..minetest.formspec_escape(minetest.registered_nodes[toolmeta.target].description).."]"..
+ "item_image[0,2.5;1,1;"..toolmeta.target.."]" or
+ "label[0,1.5;No target set]")..
+ (pointed and
+ "label[3.5,1.5;May set new target:]"..
+ "label[3.5,2;"..minetest.formspec_escape(minetest.registered_nodes[pointed].description).."]"..
+ "item_image[3.5,2.5;1,1;"..pointed.."]"..
+ "button_exit[3.5,3.65;2,0.5;target_"..pointed..";Set target]" or
+ "label[3.5,1.5;No new target available]")..
+ "label[0,4.5;Region cross section:]"..
+ "label[0,5;"..look_diameter.."x"..look_diameter.."]"..
+ "label[3.5,4.5;Set region cross section:]"..
+ "button_exit[3.5,5.15;1,0.5;look_radius_0;1x1]"..
+ "button_exit[4.5,5.15;1,0.5;look_radius_1;3x3]"..
+ "button_exit[5.5,5.15;1,0.5;look_radius_3;7x7]"..
+ "label[0,6;Region depth:]"..
+ "label[0,6.5;"..toolmeta.look_depth.."]"..
+ "label[3.5,6;Set region depth:]"..
+ "button_exit[3.5,6.65;1,0.5;look_depth_7;7]"..
+ "button_exit[4.5,6.65;1,0.5;look_depth_14;14]"..
+ "button_exit[5.5,6.65;1,0.5;look_depth_21;21]"..
+ "label[0,7.5;Accuracy:]"..
+ "label[0,8;98%]")
+ return
+ end,
+})
+
+minetest.register_on_player_receive_fields(function(user, formname, fields)
+ if formname ~= "technic:prospector_control" then return false end
+ if not user or not user:is_player() or user.is_fake_player then return end
+ local toolstack = user:get_wielded_item()
+ if toolstack:get_name() ~= "technic:prospector" then return true end
+ local toolmeta = get_metadata(toolstack)
+ for field, value in pairs(fields) do
+ if field:sub(1, 7) == "target_" then
+ toolmeta.target = field:sub(8)
+ end
+ if field:sub(1, 12) == "look_radius_" then
+ toolmeta.look_radius = field:sub(13)
+ end
+ if field:sub(1, 11) == "look_depth_" then
+ toolmeta.look_depth = field:sub(12)
+ end
+ end
+ toolstack:set_metadata(minetest.serialize(toolmeta))
+ user:set_wielded_item(toolstack)
+ return true
+end)
+
+minetest.register_craft({
+ output = "technic:prospector",
+ recipe = {
+ {"moreores:pick_silver", "moreores:mithril_block", "pipeworks:teleport_tube_1"},
+ {"technic:brass_ingot", "technic:control_logic_unit", "technic:brass_ingot"},
+ {"", "technic:blue_energy_crystal", ""},
+ }
+})
diff --git a/technic/technic/tools/sonic_screwdriver.lua b/technic/technic/tools/sonic_screwdriver.lua
new file mode 100644
index 0000000..300d363
--- /dev/null
+++ b/technic/technic/tools/sonic_screwdriver.lua
@@ -0,0 +1,98 @@
+local sonic_screwdriver_max_charge = 15000
+
+local S = technic.getter
+
+technic.register_power_tool("technic:sonic_screwdriver", sonic_screwdriver_max_charge)
+
+-- screwdriver handler code reused from minetest/minetest_game screwdriver @a9ac480
+local ROTATE_FACE = 1
+local ROTATE_AXIS = 2
+
+local function nextrange(x, max)
+ x = x + 1
+ if x > max then
+ x = 0
+ end
+ return x
+end
+
+-- Handles rotation
+local function screwdriver_handler(itemstack, user, pointed_thing, mode)
+ if pointed_thing.type ~= "node" then
+ return
+ end
+
+ local pos = pointed_thing.under
+
+ if minetest.is_protected(pos, user:get_player_name()) then
+ minetest.record_protection_violation(pos, user:get_player_name())
+ return
+ end
+
+ local node = minetest.get_node(pos)
+ local ndef = minetest.registered_nodes[node.name]
+ if not ndef or not ndef.paramtype2 == "facedir" or
+ (ndef.drawtype == "nodebox" and
+ not ndef.node_box.type == "fixed") or
+ node.param2 == nil then
+ return
+ end
+
+ -- contrary to the default screwdriver, do not check for can_dig, to allow rotating machines with CLU's in them
+ -- this is consistent with the previous sonic screwdriver
+
+ local meta1 = minetest.deserialize(itemstack:get_metadata())
+ if not meta1 or not meta1.charge or meta1.charge < 100 then
+ return
+ end
+
+ minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.3, max_hear_distance = 10})
+
+ -- Set param2
+ local rotationPart = node.param2 % 32 -- get first 4 bits
+ local preservePart = node.param2 - rotationPart
+
+ local axisdir = math.floor(rotationPart / 4)
+ local rotation = rotationPart - axisdir * 4
+ if mode == ROTATE_FACE then
+ rotationPart = axisdir * 4 + nextrange(rotation, 3)
+ elseif mode == ROTATE_AXIS then
+ rotationPart = nextrange(axisdir, 5) * 4
+ end
+
+ node.param2 = preservePart + rotationPart
+ minetest.swap_node(pos, node)
+
+ if not technic.creative_mode then
+ meta1.charge = meta1.charge - 100
+ itemstack:set_metadata(minetest.serialize(meta1))
+ technic.set_RE_wear(itemstack, meta1.charge, sonic_screwdriver_max_charge)
+ end
+
+ return itemstack
+end
+
+minetest.register_tool("technic:sonic_screwdriver", {
+ description = S("Sonic Screwdriver (left-click rotates face, right-click rotates axis)"),
+ inventory_image = "technic_sonic_screwdriver.png",
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user, pointed_thing)
+ screwdriver_handler(itemstack, user, pointed_thing, ROTATE_FACE)
+ return itemstack
+ end,
+ on_place = function(itemstack, user, pointed_thing)
+ screwdriver_handler(itemstack, user, pointed_thing, ROTATE_AXIS)
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = "technic:sonic_screwdriver",
+ recipe = {
+ {"", "default:diamond", ""},
+ {"mesecons_materials:fiber", "technic:battery", "mesecons_materials:fiber"},
+ {"mesecons_materials:fiber", "moreores:mithril_ingot", "mesecons_materials:fiber"}
+ }
+})
+
diff --git a/technic/technic/tools/tree_tap.lua b/technic/technic/tools/tree_tap.lua
new file mode 100644
index 0000000..e84fe33
--- /dev/null
+++ b/technic/technic/tools/tree_tap.lua
@@ -0,0 +1,75 @@
+
+local S = technic.getter
+local mesecons_materials = minetest.get_modpath("mesecons_materials")
+
+minetest.register_tool("technic:treetap", {
+ description = S("Tree Tap"),
+ inventory_image = "technic_tree_tap.png",
+ on_use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return
+ end
+ local pos = pointed_thing.under
+ if minetest.is_protected(pos, user:get_player_name()) then
+ minetest.record_protection_violation(pos, user:get_player_name())
+ return
+ end
+ local node = minetest.get_node(pos)
+ local node_name = node.name
+ if node_name ~= "moretrees:rubber_tree_trunk" then
+ return
+ end
+ node.name = "moretrees:rubber_tree_trunk_empty"
+ minetest.swap_node(pos, node)
+ minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user)
+ if not technic.creative_mode then
+ local item_wear = tonumber(itemstack:get_wear())
+ item_wear = item_wear + 819
+ if item_wear > 65535 then
+ itemstack:clear()
+ return itemstack
+ end
+ itemstack:set_wear(item_wear)
+ end
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = "technic:treetap",
+ recipe = {
+ {"pipeworks:tube_1", "group:wood", "default:stick"},
+ {"", "default:stick", "default:stick"}
+ },
+})
+
+minetest.register_craftitem("technic:raw_latex", {
+ description = S("Raw Latex"),
+ inventory_image = "technic_raw_latex.png",
+})
+
+if mesecons_materials then
+ minetest.register_craft({
+ type = "cooking",
+ recipe = "technic:raw_latex",
+ output = "mesecons_materials:glue",
+ })
+end
+
+minetest.register_craftitem("technic:rubber", {
+ description = S("Rubber Fiber"),
+ inventory_image = "technic_rubber.png",
+})
+
+minetest.register_abm({
+ nodenames = {"moretrees:rubber_tree_trunk_empty"},
+ interval = 60,
+ chance = 15,
+ action = function(pos, node)
+ if minetest.find_node_near(pos, (moretrees and moretrees.leafdecay_radius) or 5, {"moretrees:rubber_tree_leaves"}) then
+ node.name = "moretrees:rubber_tree_trunk"
+ minetest.swap_node(pos, node)
+ end
+ end
+})
+
diff --git a/technic/technic/tools/vacuum.lua b/technic/technic/tools/vacuum.lua
new file mode 100644
index 0000000..f5fac9a
--- /dev/null
+++ b/technic/technic/tools/vacuum.lua
@@ -0,0 +1,61 @@
+-- Configuration
+local vacuum_max_charge = 10000 -- 10000 - Maximum charge of the vacuum cleaner
+local vacuum_charge_per_object = 100 -- 100 - Capable of picking up 50 objects
+local vacuum_range = 8 -- 8 - Area in which to pick up objects
+
+local S = technic.getter
+
+technic.register_power_tool("technic:vacuum", vacuum_max_charge)
+
+minetest.register_tool("technic:vacuum", {
+ description = S("Vacuum Cleaner"),
+ inventory_image = "technic_vacuum.png",
+ stack_max = 1,
+ wear_represents = "technic_RE_charge",
+ on_refill = technic.refill_RE_charge,
+ on_use = function(itemstack, user, pointed_thing)
+ local meta = minetest.deserialize(itemstack:get_metadata())
+ if not meta or not meta.charge then
+ return
+ end
+ if meta.charge > vacuum_charge_per_object then
+ minetest.sound_play("vacuumcleaner", {
+ to_player = user:get_player_name(),
+ gain = 0.4,
+ })
+ end
+ local pos = user:getpos()
+ local inv = user:get_inventory()
+ for _, object in ipairs(minetest.env:get_objects_inside_radius(pos, vacuum_range)) do
+ local luaentity = object:get_luaentity()
+ if not object:is_player() and luaentity and luaentity.name == "__builtin:item" and luaentity.itemstring ~= "" then
+ if inv and inv:room_for_item("main", ItemStack(luaentity.itemstring)) then
+ meta.charge = meta.charge - vacuum_charge_per_object
+ if meta.charge < vacuum_charge_per_object then
+ return
+ end
+ inv:add_item("main", ItemStack(luaentity.itemstring))
+ minetest.sound_play("item_drop_pickup", {
+ to_player = user:get_player_name(),
+ gain = 0.4,
+ })
+ luaentity.itemstring = ""
+ object:remove()
+ end
+ end
+ end
+
+ technic.set_RE_wear(itemstack, meta.charge, vacuum_max_charge)
+ itemstack:set_metadata(minetest.serialize(meta))
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = 'technic:vacuum',
+ recipe = {
+ {'pipeworks:tube_1', 'pipeworks:filter', 'technic:battery'},
+ {'pipeworks:tube_1', 'technic:motor', 'technic:battery'},
+ {'technic:stainless_steel_ingot', '', ''},
+ }
+})
diff --git a/technic/technic_chests/README.md b/technic/technic_chests/README.md
new file mode 100644
index 0000000..a570346
--- /dev/null
+++ b/technic/technic_chests/README.md
@@ -0,0 +1,24 @@
+Technic chests
+==============
+
+License
+-------
+
+Copyright (C) 2012-2014 Maciej Kasatkin (RealBadAngel)
+
+Technic chests code is licensed under the GNU LGPLv2+.
+
+Texture licenses:
+
+VanessaE: (WTFPL)
+ * technic\_pencil\_icon.png
+ * technic\_checkmark\_icon.png
+ * technic\_chest\_overlay\_*.png
+ * technic\_*\_chest\_lock\_overlay.png
+
+sdzen (Elise Staudter) modified by VanessaE (CC BY-SA 3.0):
+ * copper, iron, silver, gold, mithril chest textures 16x16
+
+RealBadAngel: (WTFPL)
+ * Everything else.
+
diff --git a/technic/technic_chests/common.lua b/technic/technic_chests/common.lua
new file mode 100644
index 0000000..47054f5
--- /dev/null
+++ b/technic/technic_chests/common.lua
@@ -0,0 +1,71 @@
+
+technic.chests.groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
+ tubedevice=1, tubedevice_receiver=1}
+technic.chests.groups_noinv = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
+ tubedevice=1, tubedevice_receiver=1, not_in_creative_inventory=1}
+
+technic.chests.tube = {
+ insert_object = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:add_item("main",stack)
+ end,
+ can_insert = function(pos, node, stack, direction)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:room_for_item("main",stack)
+ end,
+ input_inventory = "main",
+ connect_sides = {left=1, right=1, front=1, back=1, top=1, bottom=1},
+}
+
+technic.chests.can_dig = function(pos, player)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+end
+
+local function inv_change(pos, count, player)
+ local meta = minetest.get_meta(pos)
+ if not has_locked_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return count
+end
+
+function technic.chests.inv_move(pos, from_list, from_index, to_list, to_index, count, player)
+ return inv_change(pos, count, player)
+end
+function technic.chests.inv_put(pos, listname, index, stack, player)
+ return inv_change(pos, stack:get_count(), player)
+end
+function technic.chests.inv_take(pos, listname, index, stack, player)
+ return inv_change(pos, stack:get_count(), player)
+end
+
+function technic.chests.on_inv_move(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in chest at "
+ ..minetest.pos_to_string(pos))
+end
+
+function technic.chests.on_inv_put(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " puts stuff in to chest at "
+ ..minetest.pos_to_string(pos))
+end
+
+function technic.chests.on_inv_take(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from chest at "
+ ..minetest.pos_to_string(pos))
+end
+
+function has_locked_chest_privilege(meta, player)
+ return player:get_player_name() == meta:get_string("owner")
+end
+
diff --git a/technic/technic_chests/copper_chest.lua b/technic/technic_chests/copper_chest.lua
new file mode 100644
index 0000000..d40284b
--- /dev/null
+++ b/technic/technic_chests/copper_chest.lua
@@ -0,0 +1,46 @@
+minetest.register_craft({
+ output = 'technic:copper_chest 1',
+ recipe = {
+ {'default:copper_ingot','default:copper_ingot','default:copper_ingot'},
+ {'default:copper_ingot','technic:iron_chest','default:copper_ingot'},
+ {'default:copper_ingot','default:copper_ingot','default:copper_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:copper_locked_chest 1',
+ recipe = {
+ {'default:copper_ingot','default:copper_ingot','default:copper_ingot'},
+ {'default:copper_ingot','technic:iron_locked_chest','default:copper_ingot'},
+ {'default:copper_ingot','default:copper_ingot','default:copper_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:copper_locked_chest 1',
+ recipe = {
+ {'default:steel_ingot'},
+ {'technic:copper_chest'},
+ }
+})
+
+technic.chests:register("Copper", {
+ width = 12,
+ height = 5,
+ sort = true,
+ autosort = true,
+ infotext = false,
+ color = false,
+ locked = false,
+})
+
+technic.chests:register("Copper", {
+ width = 12,
+ height = 5,
+ sort = true,
+ autosort = true,
+ infotext = false,
+ color = false,
+ locked = true,
+})
+
diff --git a/technic/technic_chests/depends.txt b/technic/technic_chests/depends.txt
new file mode 100644
index 0000000..b9ca665
--- /dev/null
+++ b/technic/technic_chests/depends.txt
@@ -0,0 +1,4 @@
+default
+moreores?
+pipeworks?
+intllib?
diff --git a/technic/technic_chests/gold_chest.lua b/technic/technic_chests/gold_chest.lua
new file mode 100644
index 0000000..c66b2f6
--- /dev/null
+++ b/technic/technic_chests/gold_chest.lua
@@ -0,0 +1,57 @@
+
+local material_list
+if minetest.get_modpath("moreores") then
+ material_list = { 'silver' }
+else
+ -- Make the gold chest obtainable for mere mortals (the silver chest is not obtainable)
+ material_list = { 'copper', 'silver' }
+end
+
+for _, material in ipairs(material_list) do
+ minetest.register_craft({
+ output = 'technic:gold_chest',
+ recipe = {
+ {'default:gold_ingot','default:gold_ingot','default:gold_ingot'},
+ {'default:gold_ingot',"technic:"..material.."_chest",'default:gold_ingot'},
+ {'default:gold_ingot','default:gold_ingot','default:gold_ingot'},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'technic:gold_locked_chest',
+ recipe = {
+ {'default:gold_ingot','default:gold_ingot','default:gold_ingot'},
+ {'default:gold_ingot',"technic:"..material.."_locked_chest",'default:gold_ingot'},
+ {'default:gold_ingot','default:gold_ingot','default:gold_ingot'},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = 'technic:gold_locked_chest',
+ recipe = {
+ {'default:steel_ingot'},
+ {'technic:gold_chest'},
+ }
+})
+
+technic.chests:register("Gold", {
+ width = 15,
+ height = 6,
+ sort = true,
+ autosort = true,
+ infotext = true,
+ color = true,
+ locked = false,
+})
+
+technic.chests:register("Gold", {
+ width = 15,
+ height = 6,
+ sort = true,
+ autosort = true,
+ infotext = true,
+ color = true,
+ locked = true,
+})
+
diff --git a/technic/technic_chests/init.lua b/technic/technic_chests/init.lua
new file mode 100644
index 0000000..af9e041
--- /dev/null
+++ b/technic/technic_chests/init.lua
@@ -0,0 +1,18 @@
+-- Minetest 0.4.6 mod: technic_chests
+-- namespace: technic
+-- (c) 2012-2013 by RealBadAngel <mk@realbadangel.pl>
+
+local modpath = minetest.get_modpath("technic_chests")
+
+technic = rawget(_G, "technic") or {}
+technic.chests = {}
+
+dofile(modpath.."/common.lua")
+dofile(modpath.."/register.lua")
+dofile(modpath.."/wooden_chest.lua")
+dofile(modpath.."/iron_chest.lua")
+dofile(modpath.."/copper_chest.lua")
+dofile(modpath.."/silver_chest.lua")
+dofile(modpath.."/gold_chest.lua")
+dofile(modpath.."/mithril_chest.lua")
+
diff --git a/technic/technic_chests/iron_chest.lua b/technic/technic_chests/iron_chest.lua
new file mode 100644
index 0000000..90434bb
--- /dev/null
+++ b/technic/technic_chests/iron_chest.lua
@@ -0,0 +1,53 @@
+local cast_iron_ingot
+if minetest.get_modpath("technic_worldgen") then
+ cast_iron_ingot = "technic:cast_iron_ingot"
+else
+ cast_iron_ingot = "default:steel_ingot"
+end
+
+minetest.register_craft({
+ output = 'technic:iron_chest 1',
+ recipe = {
+ {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot},
+ {cast_iron_ingot,'default:chest',cast_iron_ingot},
+ {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:iron_locked_chest 1',
+ recipe = {
+ {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot},
+ {cast_iron_ingot,'default:chest_locked',cast_iron_ingot},
+ {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot},
+ }
+})
+
+minetest.register_craft({
+ output = 'technic:iron_locked_chest 1',
+ recipe = {
+ {'default:steel_ingot'},
+ {'technic:iron_chest'},
+ }
+})
+
+technic.chests:register("Iron", {
+ width = 9,
+ height = 5,
+ sort = true,
+ autosort = false,
+ infotext = false,
+ color = false,
+ locked = false,
+})
+
+technic.chests:register("Iron", {
+ width = 9,
+ height = 5,
+ sort = true,
+ autosort = false,
+ infotext = false,
+ color = false,
+ locked = true,
+})
+
diff --git a/technic/technic_chests/locale/de.txt b/technic/technic_chests/locale/de.txt
new file mode 100644
index 0000000..e22d2c2
--- /dev/null
+++ b/technic/technic_chests/locale/de.txt
@@ -0,0 +1,41 @@
+# German Translation for technic_chests
+# Deutsche Ãœbersetzung von technic_chests
+# by Xanthin
+
+%s Chest = %struhe
+%s Locked Chest = Verschlossene %struhe
+%s Locked Chest (owned by %s) = Verschlossene %struhe (gehoert %s)
+Color Filter: %s = Farbfilter: %s
+Edit chest description: = Bearbeite die Beschreibung
+
+# Colors
+Black = Schwarz
+Blue = Blau
+Brown = Braun
+Cyan = Tuerkis
+Dark Green = Dunkelgruen
+Dark Grey = Dunkelgrau
+Green = Gruen
+Grey = Grau
+Magenta = Magenta
+Orange = Orange
+Pink = Rosa
+Red = Rot
+Violet = Violett
+White = Weiss
+Yellow = Gelb
+None = Farblos
+
+# Materials
+Copper = Kupfer
+Gold = Gold
+Iron = Eisen
+Mithril = Mithril
+Silver = Silber
+Wooden = Holz
+
+# Sorting
+Sort =
+Auto-sort is %s =
+Off =
+On =
diff --git a/technic/technic_chests/locale/template.txt b/technic/technic_chests/locale/template.txt
new file mode 100644
index 0000000..4d422b2
--- /dev/null
+++ b/technic/technic_chests/locale/template.txt
@@ -0,0 +1,39 @@
+# technic_chests translation template
+
+%s Chest =
+%s Locked Chest =
+%s Locked Chest (owned by %s) =
+Color Filter: %s =
+Edit chest description: =
+
+# Colors
+Black =
+Blue =
+Brown =
+Cyan =
+Dark Green =
+Dark Grey =
+Green =
+Grey =
+Magenta =
+Orange =
+Pink =
+Red =
+Violet =
+White =
+Yellow =
+None =
+
+# Materials
+Copper =
+Gold =
+Iron =
+Mithril =
+Silver =
+Wooden =
+
+# Sorting
+Sort =
+Auto-sort is %s =
+Off =
+On =
diff --git a/technic/technic_chests/locale/tr.txt b/technic/technic_chests/locale/tr.txt
new file mode 100644
index 0000000..6bef5be
--- /dev/null
+++ b/technic/technic_chests/locale/tr.txt
@@ -0,0 +1,41 @@
+# Turkish translation
+# mahmutelmas06@hotmail.com
+# Türkçe çeviri
+
+%s Chest = %s Sandık
+%s Locked Chest = %s Kilitli sandık
+%s Locked Chest (owned by %s) = %s Kilitli sandık (Sahibi %s)
+Color Filter: %s = Renk süzgeci: %s
+Edit chest description: = Sandık bilgilerini düzenle
+
+# Colors - Renkler
+Black = Siyah
+Blue = Mavi
+Brown = Kahverengi
+Cyan = Cam göbeği
+Dark Green = Koyu yeÅŸil
+Dark Grey = Koyu gri
+Green = YeÅŸil
+Grey = Gri
+Magenta = Mor
+Orange = Turuncu
+Pink = Pembe
+Red = Kırmızı
+Violet = Koyu mor
+White = Beyaz
+Yellow = Sarı
+None = Hiç
+
+# Materials - Metaryeller
+Copper = Bakır
+Gold = Altın
+Iron = Demir
+Mithril = Mithril
+Silver = Gümüş
+Wooden = AhÅŸap
+
+# Sorting - Sıralama
+Sort = Sırala
+Auto-sort is %s = Otomatik sıralama %s
+Off = Kapalı
+On = Açık
diff --git a/technic/technic_chests/mithril_chest.lua b/technic/technic_chests/mithril_chest.lua
new file mode 100644
index 0000000..909ff9e
--- /dev/null
+++ b/technic/technic_chests/mithril_chest.lua
@@ -0,0 +1,48 @@
+if minetest.get_modpath("moreores") then
+ minetest.register_craft({
+ output = 'technic:mithril_chest 1',
+ recipe = {
+ {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'},
+ {'moreores:mithril_ingot','technic:gold_chest','moreores:mithril_ingot'},
+ {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'technic:mithril_locked_chest 1',
+ recipe = {
+ {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'},
+ {'moreores:mithril_ingot','technic:gold_locked_chest','moreores:mithril_ingot'},
+ {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = 'technic:mithril_locked_chest 1',
+ recipe = {
+ {'default:steel_ingot'},
+ {'technic:mithril_chest'},
+ }
+})
+
+technic.chests:register("Mithril", {
+ width = 15,
+ height = 6,
+ sort = true,
+ autosort = true,
+ infotext = false,
+ color = false,
+ locked = false,
+})
+
+technic.chests:register("Mithril", {
+ width = 15,
+ height = 6,
+ sort = true,
+ autosort = true,
+ infotext = false,
+ color = false,
+ locked = true,
+})
+
diff --git a/technic/technic_chests/register.lua b/technic/technic_chests/register.lua
new file mode 100644
index 0000000..25e4cde
--- /dev/null
+++ b/technic/technic_chests/register.lua
@@ -0,0 +1,303 @@
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+
+local pipeworks = rawget(_G, "pipeworks")
+if not minetest.get_modpath("pipeworks") then
+ -- Pipeworks is not installed. Simulate using a dummy table...
+ pipeworks = {}
+ local pipeworks_meta = {}
+ setmetatable(pipeworks, pipeworks_meta)
+ local dummy = function()
+ end
+ pipeworks_meta.__index = function(table, key)
+ print("[technic_chests] WARNING: variable or method '"..key.."' not present in dummy pipeworks table - assuming it is a method...")
+ pipeworks[key] = dummy
+ return dummy
+ end
+ pipeworks.after_place = dummy
+ pipeworks.after_dig = dummy
+end
+
+local chest_mark_colors = {
+ {"black", S("Black")},
+ {"blue", S("Blue")},
+ {"brown", S("Brown")},
+ {"cyan", S("Cyan")},
+ {"dark_green", S("Dark Green")},
+ {"dark_grey", S("Dark Grey")},
+ {"green", S("Green")},
+ {"grey", S("Grey")},
+ {"magenta", S("Magenta")},
+ {"orange", S("Orange")},
+ {"pink", S("Pink")},
+ {"red", S("Red")},
+ {"violet", S("Violet")},
+ {"white", S("White")},
+ {"yellow", S("Yellow")},
+}
+
+
+local function colorid_to_postfix(id)
+ return chest_mark_colors[id] and "_"..chest_mark_colors[id][1] or ""
+end
+
+
+local function get_color_buttons(coleft, lotop)
+ local buttons_string = ""
+ for y = 0, 3 do
+ for x = 0, 3 do
+ local file_name = "technic_colorbutton"..(y * 4 + x)..".png"
+ buttons_string = buttons_string.."image_button["
+ ..(coleft + 0.1 + x * 0.7)..","..(lotop + 0.1 + y * 0.7)
+ ..";0.8,0.8;"..file_name..";color_button"
+ ..(y * 4 + x + 1)..";]"
+ end
+ end
+ return buttons_string
+end
+
+
+local function check_color_buttons(pos, meta, chest_name, fields)
+ for i = 1, 16 do
+ if fields["color_button"..i] then
+ local node = minetest.get_node(pos)
+ node.name = chest_name..colorid_to_postfix(i)
+ minetest.swap_node(pos, node)
+ meta:set_string("color", i)
+ return
+ end
+ end
+end
+
+local function set_formspec(pos, data, page)
+ local meta = minetest.get_meta(pos)
+ local node = minetest.get_node(pos)
+ local formspec = data.base_formspec
+ if data.autosort then
+ local status = meta:get_int("autosort")
+ formspec = formspec.."button["..(data.hileft+2)..","..(data.height+1.1)..";3,0.8;autosort_to_"..(1-status)..";"..S("Auto-sort is %s"):format(status == 1 and S("On") or S("Off")).."]"
+ end
+ if data.infotext then
+ local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext"))
+ if page == "main" then
+ formspec = formspec.."image_button["..(data.hileft+2.1)..",0.1;0.8,0.8;"
+ .."technic_pencil_icon.png;edit_infotext;]"
+ .."label["..(data.hileft+3)..",0;"..formspec_infotext.."]"
+ elseif page == "edit_infotext" then
+ formspec = formspec.."image_button["..(data.hileft+2.1)..",0.1;0.8,0.8;"
+ .."technic_checkmark_icon.png;save_infotext;]"
+ .."field["..(data.hileft+3.3)..",0.2;4.8,1;"
+ .."infotext_box;"..S("Edit chest description:")..";"
+ ..formspec_infotext.."]"
+ end
+ end
+ if data.color then
+ local colorID = meta:get_int("color")
+ local colorName
+ if chest_mark_colors[colorID] then
+ colorName = chest_mark_colors[colorID][2]
+ else
+ colorName = S("None")
+ end
+ formspec = formspec.."label["..(data.coleft+0.2)..","..(data.lotop+3)..";"..S("Color Filter: %s"):format(colorName).."]"
+ end
+ meta:set_string("formspec", formspec)
+end
+
+local function sort_inventory(inv)
+ local inlist = inv:get_list("main")
+ local typecnt = {}
+ local typekeys = {}
+ for _, st in ipairs(inlist) do
+ if not st:is_empty() then
+ local n = st:get_name()
+ local w = st:get_wear()
+ local m = st:get_metadata()
+ local k = string.format("%s %05d %s", n, w, m)
+ if not typecnt[k] then
+ typecnt[k] = {
+ name = n,
+ wear = w,
+ metadata = m,
+ stack_max = st:get_stack_max(),
+ count = 0,
+ }
+ table.insert(typekeys, k)
+ end
+ typecnt[k].count = typecnt[k].count + st:get_count()
+ end
+ end
+ table.sort(typekeys)
+ local outlist = {}
+ for _, k in ipairs(typekeys) do
+ local tc = typecnt[k]
+ while tc.count > 0 do
+ local c = math.min(tc.count, tc.stack_max)
+ table.insert(outlist, ItemStack({
+ name = tc.name,
+ wear = tc.wear,
+ metadata = tc.metadata,
+ count = c,
+ }))
+ tc.count = tc.count - c
+ end
+ end
+ if #outlist > #inlist then return end
+ while #outlist < #inlist do
+ table.insert(outlist, ItemStack(nil))
+ end
+ inv:set_list("main", outlist)
+end
+
+local function get_receive_fields(name, data)
+ local lname = name:lower()
+ return function(pos, formname, fields, sender)
+ local meta = minetest.get_meta(pos)
+ local page = "main"
+ if fields.sort or (data.autosort and fields.quit and meta:get_int("autosort") == 1) then
+ sort_inventory(meta:get_inventory())
+ end
+ if fields.edit_infotext then
+ page = "edit_infotext"
+ end
+ if fields.autosort_to_1 then meta:set_int("autosort", 1) end
+ if fields.autosort_to_0 then meta:set_int("autosort", 0) end
+ if fields.infotext_box then
+ meta:set_string("infotext", fields.infotext_box)
+ end
+ if data.color then
+ -- This sets the node
+ local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest"
+ check_color_buttons(pos, meta, nn, fields)
+ end
+ meta:get_inventory():set_size("main", data.width * data.height)
+ set_formspec(pos, data, page)
+ end
+end
+
+
+function technic.chests:definition(name, data)
+ local lname = name:lower()
+ name = S(name)
+ local d = {}
+ for k, v in pairs(data) do d[k] = v end
+ data = d
+
+ data.lowidth = 8
+ data.ovwidth = math.max(data.lowidth, data.width)
+ data.hileft = (data.ovwidth - data.width) / 2
+ data.loleft = (data.ovwidth - data.lowidth) / 2
+ if data.color then
+ if data.lowidth + 3 <= data.ovwidth then
+ data.coleft = data.ovwidth - 3
+ if data.loleft + data.lowidth > data.coleft then
+ data.loleft = data.coleft - data.lowidth
+ end
+ else
+ data.loleft = 0
+ data.coleft = data.lowidth
+ data.ovwidth = data.lowidth + 3
+ end
+ end
+ data.lotop = data.height + 2
+ data.ovheight = data.lotop + 4
+
+ local locked_after_place = nil
+ local front = {"technic_"..lname.."_chest_front.png"}
+ data.base_formspec = "size["..data.ovwidth..","..data.ovheight.."]"..
+ "label[0,0;"..S("%s Chest"):format(name).."]"..
+ "list[context;main;"..data.hileft..",1;"..data.width..","..data.height..";]"..
+ "list[current_player;main;"..data.loleft..","..data.lotop..";8,4;]"..
+ "background[-0.19,-0.25;"..(data.ovwidth+0.4)..","..(data.ovheight+0.75)..";technic_chest_form_bg.png]"..
+ "background["..data.hileft..",1;"..data.width..","..data.height..";technic_"..lname.."_chest_inventory.png]"..
+ "background["..data.loleft..","..data.lotop..";8,4;technic_main_inventory.png]"..
+ "listring[]"
+ if data.sort then
+ data.base_formspec = data.base_formspec.."button["..data.hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]"
+ end
+ if data.color then
+ data.base_formspec = data.base_formspec..get_color_buttons(data.coleft, data.lotop)
+ end
+
+ if data.locked then
+ locked_after_place = function(pos, placer)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name() or "")
+ meta:set_string("infotext",
+ S("%s Locked Chest (owned by %s)")
+ :format(name, meta:get_string("owner")))
+ pipeworks.after_place(pos)
+ end
+ table.insert(front, "technic_"..lname.."_chest_lock_overlay.png")
+ else
+ locked_after_place = pipeworks.after_place
+ end
+
+ local desc
+ if data.locked then
+ desc = S("%s Locked Chest"):format(name)
+ else
+ desc = S("%s Chest"):format(name)
+ end
+
+ local def = {
+ description = desc,
+ tiles = {"technic_"..lname.."_chest_top.png", "technic_"..lname.."_chest_top.png",
+ "technic_"..lname.."_chest_side.png", "technic_"..lname.."_chest_side.png",
+ "technic_"..lname.."_chest_side.png", table.concat(front, "^")},
+ paramtype2 = "facedir",
+ groups = self.groups,
+ tube = self.tube,
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+ after_place_node = locked_after_place,
+ after_dig_node = pipeworks.after_dig,
+
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("infotext", S("%s Chest"):format(name))
+ set_formspec(pos, data, "main")
+ local inv = meta:get_inventory()
+ inv:set_size("main", data.width * data.height)
+ end,
+ can_dig = self.can_dig,
+ on_receive_fields = get_receive_fields(name, data),
+ on_metadata_inventory_move = self.on_inv_move,
+ on_metadata_inventory_put = self.on_inv_put,
+ on_metadata_inventory_take = self.on_inv_take,
+ }
+ if data.locked then
+ def.allow_metadata_inventory_move = self.inv_move
+ def.allow_metadata_inventory_put = self.inv_put
+ def.allow_metadata_inventory_take = self.inv_take
+ end
+ return def
+end
+
+function technic.chests:register(name, data)
+ local def = technic.chests:definition(name, data)
+
+ local nn = "technic:"..name:lower()..(data.locked and "_locked" or "").."_chest"
+ minetest.register_node(":"..nn, def)
+
+ if data.color then
+ local mk_front
+ if string.find(def.tiles[6], "%^") then
+ mk_front = function (overlay) return def.tiles[6]:gsub("%^", "^"..overlay.."^") end
+ else
+ mk_front = function (overlay) return def.tiles[6].."^"..overlay end
+ end
+ for i = 1, 15 do
+ local postfix = colorid_to_postfix(i)
+ local colordef = {}
+ for k, v in pairs(def) do
+ colordef[k] = v
+ end
+ colordef.drop = nn
+ colordef.groups = self.groups_noinv
+ colordef.tiles = { def.tiles[1], def.tiles[2], def.tiles[3], def.tiles[4], def.tiles[5], mk_front("technic_chest_overlay"..postfix..".png") }
+ minetest.register_node(":"..nn..postfix, colordef)
+ end
+ end
+
+end
+
diff --git a/technic/technic_chests/silver_chest.lua b/technic/technic_chests/silver_chest.lua
new file mode 100644
index 0000000..c615304
--- /dev/null
+++ b/technic/technic_chests/silver_chest.lua
@@ -0,0 +1,48 @@
+if minetest.get_modpath("moreores") then
+ minetest.register_craft({
+ output = 'technic:silver_chest',
+ recipe = {
+ {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'},
+ {'moreores:silver_ingot','technic:copper_chest','moreores:silver_ingot'},
+ {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'},
+ }
+ })
+
+ minetest.register_craft({
+ output = 'technic:silver_locked_chest',
+ recipe = {
+ {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'},
+ {'moreores:silver_ingot','technic:copper_locked_chest','moreores:silver_ingot'},
+ {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'},
+ }
+ })
+end
+
+minetest.register_craft({
+ output = 'technic:silver_locked_chest',
+ recipe = {
+ {'default:steel_ingot'},
+ {'technic:silver_chest'},
+ }
+})
+
+technic.chests:register("Silver", {
+ width = 12,
+ height = 6,
+ sort = true,
+ autosort = true,
+ infotext = true,
+ color = false,
+ locked = false,
+})
+
+technic.chests:register("Silver", {
+ width = 12,
+ height = 6,
+ sort = true,
+ autosort = true,
+ infotext = true,
+ color = false,
+ locked = true,
+})
+
diff --git a/technic/technic_chests/textures/technic_checkmark_icon.png b/technic/technic_chests/textures/technic_checkmark_icon.png
new file mode 100644
index 0000000..369d294
--- /dev/null
+++ b/technic/technic_chests/textures/technic_checkmark_icon.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_form_bg.png b/technic/technic_chests/textures/technic_chest_form_bg.png
new file mode 100644
index 0000000..37683f0
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_form_bg.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_black.png b/technic/technic_chests/textures/technic_chest_overlay_black.png
new file mode 100644
index 0000000..fa25304
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_black.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_blue.png b/technic/technic_chests/textures/technic_chest_overlay_blue.png
new file mode 100644
index 0000000..512cd4f
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_blue.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_brown.png b/technic/technic_chests/textures/technic_chest_overlay_brown.png
new file mode 100644
index 0000000..64c1d55
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_brown.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_cyan.png b/technic/technic_chests/textures/technic_chest_overlay_cyan.png
new file mode 100644
index 0000000..46732f4
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_cyan.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_dark_green.png b/technic/technic_chests/textures/technic_chest_overlay_dark_green.png
new file mode 100644
index 0000000..941236b
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_dark_green.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_dark_grey.png b/technic/technic_chests/textures/technic_chest_overlay_dark_grey.png
new file mode 100644
index 0000000..e6b8f77
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_dark_grey.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_green.png b/technic/technic_chests/textures/technic_chest_overlay_green.png
new file mode 100644
index 0000000..4b9543f
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_green.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_grey.png b/technic/technic_chests/textures/technic_chest_overlay_grey.png
new file mode 100644
index 0000000..8a1c9f0
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_grey.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_magenta.png b/technic/technic_chests/textures/technic_chest_overlay_magenta.png
new file mode 100644
index 0000000..75b220d
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_magenta.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_orange.png b/technic/technic_chests/textures/technic_chest_overlay_orange.png
new file mode 100644
index 0000000..02c095d
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_orange.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_pink.png b/technic/technic_chests/textures/technic_chest_overlay_pink.png
new file mode 100644
index 0000000..0b6ccb4
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_pink.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_red.png b/technic/technic_chests/textures/technic_chest_overlay_red.png
new file mode 100644
index 0000000..4b44642
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_red.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_violet.png b/technic/technic_chests/textures/technic_chest_overlay_violet.png
new file mode 100644
index 0000000..89471f9
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_violet.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_white.png b/technic/technic_chests/textures/technic_chest_overlay_white.png
new file mode 100644
index 0000000..b49e253
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_white.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_chest_overlay_yellow.png b/technic/technic_chests/textures/technic_chest_overlay_yellow.png
new file mode 100644
index 0000000..d563257
--- /dev/null
+++ b/technic/technic_chests/textures/technic_chest_overlay_yellow.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton0.png b/technic/technic_chests/textures/technic_colorbutton0.png
new file mode 100644
index 0000000..35b7db2
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton0.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton1.png b/technic/technic_chests/textures/technic_colorbutton1.png
new file mode 100644
index 0000000..cbf095d
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton1.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton10.png b/technic/technic_chests/textures/technic_colorbutton10.png
new file mode 100644
index 0000000..8dfc5f0
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton10.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton11.png b/technic/technic_chests/textures/technic_colorbutton11.png
new file mode 100644
index 0000000..3b279e0
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton11.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton12.png b/technic/technic_chests/textures/technic_colorbutton12.png
new file mode 100644
index 0000000..a387b5f
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton12.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton13.png b/technic/technic_chests/textures/technic_colorbutton13.png
new file mode 100644
index 0000000..b1e7790
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton13.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton14.png b/technic/technic_chests/textures/technic_colorbutton14.png
new file mode 100644
index 0000000..c4ad486
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton14.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton15.png b/technic/technic_chests/textures/technic_colorbutton15.png
new file mode 100644
index 0000000..b7060d6
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton15.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton2.png b/technic/technic_chests/textures/technic_colorbutton2.png
new file mode 100644
index 0000000..caf1fc6
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton2.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton3.png b/technic/technic_chests/textures/technic_colorbutton3.png
new file mode 100644
index 0000000..6ac79a3
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton3.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton4.png b/technic/technic_chests/textures/technic_colorbutton4.png
new file mode 100644
index 0000000..dc43592
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton4.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton5.png b/technic/technic_chests/textures/technic_colorbutton5.png
new file mode 100644
index 0000000..98b8c67
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton5.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton6.png b/technic/technic_chests/textures/technic_colorbutton6.png
new file mode 100644
index 0000000..66478bc
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton6.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton7.png b/technic/technic_chests/textures/technic_colorbutton7.png
new file mode 100644
index 0000000..85f6b93
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton7.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton8.png b/technic/technic_chests/textures/technic_colorbutton8.png
new file mode 100644
index 0000000..868c35d
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton8.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_colorbutton9.png b/technic/technic_chests/textures/technic_colorbutton9.png
new file mode 100644
index 0000000..50eac0b
--- /dev/null
+++ b/technic/technic_chests/textures/technic_colorbutton9.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_copper_chest_front.png b/technic/technic_chests/textures/technic_copper_chest_front.png
new file mode 100644
index 0000000..add51e8
--- /dev/null
+++ b/technic/technic_chests/textures/technic_copper_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_copper_chest_inventory.png b/technic/technic_chests/textures/technic_copper_chest_inventory.png
new file mode 100644
index 0000000..70da510
--- /dev/null
+++ b/technic/technic_chests/textures/technic_copper_chest_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_copper_chest_lock_overlay.png b/technic/technic_chests/textures/technic_copper_chest_lock_overlay.png
new file mode 100644
index 0000000..49f7f2a
--- /dev/null
+++ b/technic/technic_chests/textures/technic_copper_chest_lock_overlay.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_copper_chest_side.png b/technic/technic_chests/textures/technic_copper_chest_side.png
new file mode 100644
index 0000000..2231cce
--- /dev/null
+++ b/technic/technic_chests/textures/technic_copper_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_copper_chest_top.png b/technic/technic_chests/textures/technic_copper_chest_top.png
new file mode 100644
index 0000000..69f1078
--- /dev/null
+++ b/technic/technic_chests/textures/technic_copper_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_form_bg.png b/technic/technic_chests/textures/technic_form_bg.png
new file mode 100644
index 0000000..37683f0
--- /dev/null
+++ b/technic/technic_chests/textures/technic_form_bg.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_gold_chest_front.png b/technic/technic_chests/textures/technic_gold_chest_front.png
new file mode 100644
index 0000000..27036d7
--- /dev/null
+++ b/technic/technic_chests/textures/technic_gold_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_gold_chest_inventory.png b/technic/technic_chests/textures/technic_gold_chest_inventory.png
new file mode 100644
index 0000000..d4aa8b3
--- /dev/null
+++ b/technic/technic_chests/textures/technic_gold_chest_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_gold_chest_lock_overlay.png b/technic/technic_chests/textures/technic_gold_chest_lock_overlay.png
new file mode 100644
index 0000000..51dea71
--- /dev/null
+++ b/technic/technic_chests/textures/technic_gold_chest_lock_overlay.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_gold_chest_side.png b/technic/technic_chests/textures/technic_gold_chest_side.png
new file mode 100644
index 0000000..9a0de39
--- /dev/null
+++ b/technic/technic_chests/textures/technic_gold_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_gold_chest_top.png b/technic/technic_chests/textures/technic_gold_chest_top.png
new file mode 100644
index 0000000..abfc081
--- /dev/null
+++ b/technic/technic_chests/textures/technic_gold_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_iron_chest_front.png b/technic/technic_chests/textures/technic_iron_chest_front.png
new file mode 100644
index 0000000..8c00473
--- /dev/null
+++ b/technic/technic_chests/textures/technic_iron_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_iron_chest_inventory.png b/technic/technic_chests/textures/technic_iron_chest_inventory.png
new file mode 100644
index 0000000..a33967b
--- /dev/null
+++ b/technic/technic_chests/textures/technic_iron_chest_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_iron_chest_lock_overlay.png b/technic/technic_chests/textures/technic_iron_chest_lock_overlay.png
new file mode 100644
index 0000000..1750b82
--- /dev/null
+++ b/technic/technic_chests/textures/technic_iron_chest_lock_overlay.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_iron_chest_side.png b/technic/technic_chests/textures/technic_iron_chest_side.png
new file mode 100644
index 0000000..7233688
--- /dev/null
+++ b/technic/technic_chests/textures/technic_iron_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_iron_chest_top.png b/technic/technic_chests/textures/technic_iron_chest_top.png
new file mode 100644
index 0000000..48d2437
--- /dev/null
+++ b/technic/technic_chests/textures/technic_iron_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_main_inventory.png b/technic/technic_chests/textures/technic_main_inventory.png
new file mode 100644
index 0000000..b65dabb
--- /dev/null
+++ b/technic/technic_chests/textures/technic_main_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_mithril_chest_front.png b/technic/technic_chests/textures/technic_mithril_chest_front.png
new file mode 100644
index 0000000..f0e0c23
--- /dev/null
+++ b/technic/technic_chests/textures/technic_mithril_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_mithril_chest_inventory.png b/technic/technic_chests/textures/technic_mithril_chest_inventory.png
new file mode 100644
index 0000000..d4aa8b3
--- /dev/null
+++ b/technic/technic_chests/textures/technic_mithril_chest_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png b/technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png
new file mode 100644
index 0000000..d227c51
--- /dev/null
+++ b/technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_mithril_chest_side.png b/technic/technic_chests/textures/technic_mithril_chest_side.png
new file mode 100644
index 0000000..1c2c3a7
--- /dev/null
+++ b/technic/technic_chests/textures/technic_mithril_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_mithril_chest_top.png b/technic/technic_chests/textures/technic_mithril_chest_top.png
new file mode 100644
index 0000000..e196baf
--- /dev/null
+++ b/technic/technic_chests/textures/technic_mithril_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_pencil_icon.png b/technic/technic_chests/textures/technic_pencil_icon.png
new file mode 100644
index 0000000..8079ede
--- /dev/null
+++ b/technic/technic_chests/textures/technic_pencil_icon.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_silver_chest_front.png b/technic/technic_chests/textures/technic_silver_chest_front.png
new file mode 100644
index 0000000..5ae5831
--- /dev/null
+++ b/technic/technic_chests/textures/technic_silver_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_silver_chest_inventory.png b/technic/technic_chests/textures/technic_silver_chest_inventory.png
new file mode 100644
index 0000000..b2fe835
--- /dev/null
+++ b/technic/technic_chests/textures/technic_silver_chest_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_silver_chest_lock_overlay.png b/technic/technic_chests/textures/technic_silver_chest_lock_overlay.png
new file mode 100644
index 0000000..cb1bdb0
--- /dev/null
+++ b/technic/technic_chests/textures/technic_silver_chest_lock_overlay.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_silver_chest_side.png b/technic/technic_chests/textures/technic_silver_chest_side.png
new file mode 100644
index 0000000..4b4ce54
--- /dev/null
+++ b/technic/technic_chests/textures/technic_silver_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_silver_chest_top.png b/technic/technic_chests/textures/technic_silver_chest_top.png
new file mode 100644
index 0000000..79196d6
--- /dev/null
+++ b/technic/technic_chests/textures/technic_silver_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/technic_wooden_chest_inventory.png b/technic/technic_chests/textures/technic_wooden_chest_inventory.png
new file mode 100644
index 0000000..5ffbc12
--- /dev/null
+++ b/technic/technic_chests/textures/technic_wooden_chest_inventory.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_copper_chest_front.png b/technic/technic_chests/textures/x32/technic_copper_chest_front.png
new file mode 100644
index 0000000..1769435
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_copper_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_copper_chest_side.png b/technic/technic_chests/textures/x32/technic_copper_chest_side.png
new file mode 100644
index 0000000..2c7943f
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_copper_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_copper_chest_top.png b/technic/technic_chests/textures/x32/technic_copper_chest_top.png
new file mode 100644
index 0000000..2ab8104
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_copper_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_gold_chest_front.png b/technic/technic_chests/textures/x32/technic_gold_chest_front.png
new file mode 100644
index 0000000..9bc9615
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_gold_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_gold_chest_side.png b/technic/technic_chests/textures/x32/technic_gold_chest_side.png
new file mode 100644
index 0000000..5d5ad0f
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_gold_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_gold_chest_top.png b/technic/technic_chests/textures/x32/technic_gold_chest_top.png
new file mode 100644
index 0000000..f9c8fec
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_gold_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_iron_chest_front.png b/technic/technic_chests/textures/x32/technic_iron_chest_front.png
new file mode 100644
index 0000000..79d5b49
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_iron_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_iron_chest_side.png b/technic/technic_chests/textures/x32/technic_iron_chest_side.png
new file mode 100644
index 0000000..e12daa5
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_iron_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_iron_chest_top.png b/technic/technic_chests/textures/x32/technic_iron_chest_top.png
new file mode 100644
index 0000000..da1ab7b
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_iron_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_mithril_chest_front.png b/technic/technic_chests/textures/x32/technic_mithril_chest_front.png
new file mode 100644
index 0000000..9f7ca7e
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_mithril_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_mithril_chest_side.png b/technic/technic_chests/textures/x32/technic_mithril_chest_side.png
new file mode 100644
index 0000000..0763511
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_mithril_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_mithril_chest_top.png b/technic/technic_chests/textures/x32/technic_mithril_chest_top.png
new file mode 100644
index 0000000..2429576
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_mithril_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_silver_chest_front.png b/technic/technic_chests/textures/x32/technic_silver_chest_front.png
new file mode 100644
index 0000000..fe5ce2c
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_silver_chest_front.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_silver_chest_side.png b/technic/technic_chests/textures/x32/technic_silver_chest_side.png
new file mode 100644
index 0000000..3a2ed4a
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_silver_chest_side.png
Binary files differ
diff --git a/technic/technic_chests/textures/x32/technic_silver_chest_top.png b/technic/technic_chests/textures/x32/technic_silver_chest_top.png
new file mode 100644
index 0000000..353a11c
--- /dev/null
+++ b/technic/technic_chests/textures/x32/technic_silver_chest_top.png
Binary files differ
diff --git a/technic/technic_chests/wooden_chest.lua b/technic/technic_chests/wooden_chest.lua
new file mode 100644
index 0000000..0fad12c
--- /dev/null
+++ b/technic/technic_chests/wooden_chest.lua
@@ -0,0 +1,51 @@
+local udef = technic.chests:definition("Wooden", {
+ width = 8,
+ height = 4,
+ sort = false,
+ autosort = false,
+ infotext = false,
+ color = false,
+ locked = false,
+})
+local uudef = {
+ groups = udef.groups,
+ tube = udef.tube,
+ on_construct = udef.on_construct,
+ can_dig = udef.can_dig,
+ on_receive_fields = udef.on_receive_fields,
+ on_metadata_inventory_move = udef.on_metadata_inventory_move,
+ on_metadata_inventory_put = udef.on_metadata_inventory_put,
+ on_metadata_inventory_take = udef.on_metadata_inventory_take,
+}
+if minetest.registered_nodes["default:chest"].description == "Chest" then
+ uudef.description = udef.description
+end
+minetest.override_item("default:chest", uudef)
+
+local ldef = technic.chests:definition("Wooden", {
+ width = 8,
+ height = 4,
+ sort = false,
+ autosort = false,
+ infotext = false,
+ color = false,
+ locked = true,
+})
+local lldef = {
+ groups = ldef.groups,
+ tube = ldef.tube,
+ after_place_node = ldef.after_place_node,
+ on_construct = ldef.on_construct,
+ can_dig = ldef.can_dig,
+ on_receive_fields = ldef.on_receive_fields,
+ allow_metadata_inventory_move = ldef.allow_metadata_inventory_move,
+ allow_metadata_inventory_put = ldef.allow_metadata_inventory_put,
+ allow_metadata_inventory_take = ldef.allow_metadata_inventory_take,
+ on_metadata_inventory_move = ldef.on_metadata_inventory_move,
+ on_metadata_inventory_put = ldef.on_metadata_inventory_put,
+ on_metadata_inventory_take = ldef.on_metadata_inventory_take,
+}
+if minetest.registered_nodes["default:chest_locked"].description == "Locked Chest" then
+ lldef.description = ldef.description
+end
+minetest.override_item("default:chest_locked", lldef)
diff --git a/technic/technic_worldgen/config.lua b/technic/technic_worldgen/config.lua
new file mode 100644
index 0000000..4ac748c
--- /dev/null
+++ b/technic/technic_worldgen/config.lua
@@ -0,0 +1,15 @@
+technic.config = technic.config or Settings(minetest.get_worldpath().."/technic.conf")
+
+local conf_table = technic.config:to_table()
+
+local defaults = {
+ enable_granite_generation = "true",
+ enable_marble_generation = "true",
+ enable_rubber_tree_generation = "true",
+}
+
+for k, v in pairs(defaults) do
+ if conf_table[k] == nil then
+ technic.config:set(k, v)
+ end
+end
diff --git a/technic/technic_worldgen/crafts.lua b/technic/technic_worldgen/crafts.lua
new file mode 100644
index 0000000..fba9df9
--- /dev/null
+++ b/technic/technic_worldgen/crafts.lua
@@ -0,0 +1,198 @@
+
+local S = technic.worldgen.gettext
+
+minetest.register_craftitem(":technic:uranium_lump", {
+ description = S("Uranium Lump"),
+ inventory_image = "technic_uranium_lump.png",
+})
+minetest.register_alias("technic:uranium", "technic:uranium_lump")
+
+minetest.register_craftitem(":technic:uranium_ingot", {
+ description = S("Uranium Ingot"),
+ inventory_image = "technic_uranium_ingot.png",
+ groups = {uranium_ingot=1},
+})
+
+minetest.register_craftitem(":technic:chromium_lump", {
+ description = S("Chromium Lump"),
+ inventory_image = "technic_chromium_lump.png",
+})
+
+minetest.register_craftitem(":technic:chromium_ingot", {
+ description = S("Chromium Ingot"),
+ inventory_image = "technic_chromium_ingot.png",
+})
+
+minetest.register_craftitem(":technic:zinc_lump", {
+ description = S("Zinc Lump"),
+ inventory_image = "technic_zinc_lump.png",
+})
+
+minetest.register_craftitem(":technic:zinc_ingot", {
+ description = S("Zinc Ingot"),
+ inventory_image = "technic_zinc_ingot.png",
+})
+
+minetest.register_craftitem(":technic:lead_lump", {
+ description = S("Lead Lump"),
+ inventory_image = "technic_lead_lump.png",
+})
+
+minetest.register_craftitem(":technic:lead_ingot", {
+ description = S("Lead Ingot"),
+ inventory_image = "technic_lead_ingot.png",
+})
+
+minetest.register_craftitem(":technic:sulfur_lump", {
+ description = S("Sulfur Lump"),
+ inventory_image = "technic_sulfur_lump.png",
+})
+
+minetest.register_craftitem(":technic:brass_ingot", {
+ description = S("Brass Ingot"),
+ inventory_image = "technic_brass_ingot.png",
+})
+
+minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot")
+
+minetest.override_item("default:steel_ingot", {
+ description = S("Wrought Iron Ingot"),
+ inventory_image = "technic_wrought_iron_ingot.png",
+})
+
+minetest.register_craftitem(":technic:cast_iron_ingot", {
+ description = S("Cast Iron Ingot"),
+ inventory_image = "technic_cast_iron_ingot.png",
+})
+
+minetest.register_craftitem(":technic:carbon_steel_ingot", {
+ description = S("Carbon Steel Ingot"),
+ inventory_image = "technic_carbon_steel_ingot.png",
+})
+
+minetest.register_craftitem(":technic:stainless_steel_ingot", {
+ description = S("Stainless Steel Ingot"),
+ inventory_image = "technic_stainless_steel_ingot.png",
+})
+
+local function register_block(block, ingot)
+ minetest.register_craft({
+ output = block,
+ recipe = {
+ {ingot, ingot, ingot},
+ {ingot, ingot, ingot},
+ {ingot, ingot, ingot},
+ }
+ })
+
+ minetest.register_craft({
+ output = ingot.." 9",
+ recipe = {
+ {block}
+ }
+ })
+end
+
+register_block("technic:uranium_block", "technic:uranium_ingot")
+register_block("technic:chromium_block", "technic:chromium_ingot")
+register_block("technic:zinc_block", "technic:zinc_ingot")
+register_block("technic:lead_block", "technic:lead_ingot")
+register_block("technic:brass_block", "technic:brass_ingot")
+register_block("technic:cast_iron_block", "technic:cast_iron_ingot")
+register_block("technic:carbon_steel_block", "technic:carbon_steel_ingot")
+register_block("technic:stainless_steel_block", "technic:stainless_steel_ingot")
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = "technic:zinc_lump",
+ output = "technic:zinc_ingot",
+})
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = "technic:chromium_lump",
+ output = "technic:chromium_ingot",
+})
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = "technic:uranium_lump",
+ output = "technic:uranium_ingot",
+})
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = "technic:lead_lump",
+ output = "technic:lead_ingot",
+})
+
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = minetest.registered_aliases["technic:wrought_iron_ingot"],
+ output = "technic:cast_iron_ingot",
+})
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = "technic:cast_iron_ingot",
+ cooktime = 2,
+ output = "technic:wrought_iron_ingot",
+})
+
+minetest.register_craft({
+ type = 'cooking',
+ recipe = "technic:carbon_steel_ingot",
+ cooktime = 2,
+ output = "technic:wrought_iron_ingot",
+})
+
+local function for_each_registered_item(action)
+ local already_reg = {}
+ for k, _ in pairs(minetest.registered_items) do
+ table.insert(already_reg, k)
+ end
+ local really_register_craftitem = minetest.register_craftitem
+ minetest.register_craftitem = function(name, def)
+ really_register_craftitem(name, def)
+ action(string.gsub(name, "^:", ""))
+ end
+ local really_register_tool = minetest.register_tool
+ minetest.register_tool = function(name, def)
+ really_register_tool(name, def)
+ action(string.gsub(name, "^:", ""))
+ end
+ local really_register_node = minetest.register_node
+ minetest.register_node = function(name, def)
+ really_register_node(name, def)
+ action(string.gsub(name, "^:", ""))
+ end
+ for _, name in ipairs(already_reg) do
+ action(name)
+ end
+end
+
+local steel_to_iron = {}
+for _, i in ipairs({
+ "default:axe_steel",
+ "default:pick_steel",
+ "default:shovel_steel",
+ "default:sword_steel",
+ "doors:door_steel",
+ "farming:hoe_steel",
+ "glooptest:hammer_steel",
+ "glooptest:handsaw_steel",
+ "glooptest:reinforced_crystal_glass",
+ "mesecons_doors:op_door_steel",
+ "mesecons_doors:sig_door_steel",
+ "vessels:steel_bottle",
+}) do
+ steel_to_iron[i] = true
+end
+
+for_each_registered_item(function(item_name)
+ local item_def = minetest.registered_items[item_name]
+ if steel_to_iron[item_name] and string.find(item_def.description, "Steel") then
+ minetest.override_item(item_name, { description = string.gsub(item_def.description, "Steel", S("Iron")) })
+ end
+end)
diff --git a/technic/technic_worldgen/depends.txt b/technic/technic_worldgen/depends.txt
new file mode 100644
index 0000000..ac858d0
--- /dev/null
+++ b/technic/technic_worldgen/depends.txt
@@ -0,0 +1,3 @@
+default
+intllib?
+mg?
diff --git a/technic/technic_worldgen/init.lua b/technic/technic_worldgen/init.lua
new file mode 100644
index 0000000..2f36920
--- /dev/null
+++ b/technic/technic_worldgen/init.lua
@@ -0,0 +1,26 @@
+local modpath = minetest.get_modpath("technic_worldgen")
+
+technic = rawget(_G, "technic") or {}
+technic.worldgen = {
+ gettext = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end,
+}
+
+dofile(modpath.."/config.lua")
+dofile(modpath.."/nodes.lua")
+dofile(modpath.."/oregen.lua")
+dofile(modpath.."/crafts.lua")
+
+-- Rubber trees, moretrees also supplies these
+if not minetest.get_modpath("moretrees") then
+ dofile(modpath.."/rubber.lua")
+else
+ -- older versions of technic provided rubber trees regardless
+ minetest.register_alias("technic:rubber_sapling", "moretrees:rubber_tree_sapling")
+ minetest.register_alias("technic:rubber_tree_empty", "moretrees:rubber_tree_trunk_empty")
+end
+
+-- mg suppport
+if minetest.get_modpath("mg") then
+ dofile(modpath.."/mg.lua")
+end
+
diff --git a/technic/technic_worldgen/locale/de.txt b/technic/technic_worldgen/locale/de.txt
new file mode 100644
index 0000000..401c94c
--- /dev/null
+++ b/technic/technic_worldgen/locale/de.txt
@@ -0,0 +1,39 @@
+# German Translation for technic_worldgen
+# Deutsche Ãœbersetzung von technic_worldgen
+# by Xanthin
+
+## crafts.lua
+Uranium Lump = Uranklumpen
+Uranium Ingot = Uranbarren
+Chromium Lump = Chromklumpen
+Chromium Ingot = Chrombarren
+Zinc Lump = Zinkklumpen
+Zinc Ingot = Zinkbarren
+Brass Ingot = Messingbarren
+Wrought Iron Ingot = Schmiedeeisenbarren
+Cast Iron Ingot = Gusseisenbarren
+Carbon Steel Ingot = Kohlenstoffstahlbarren
+Stainless Steel Ingot = Edelstahlbarren
+Iron = Eisen
+
+## nodes.lua
+Uranium Ore = Uranerz
+Chromium Ore = Chromerz
+Zinc Ore = Zinkerz
+Granite = Granit
+Marble = Marmor
+Marble Bricks = Marmorziegel
+Uranium Block = Uranblock
+Chromium Block = Chromblock
+Zinc Block = Zinkblock
+Wrought Iron Block = Schmiedeeisenblock
+Cast Iron Block = Gusseisenblock
+Carbon Steel Block = Kohlenstoffstahlblock
+Stainless Steel Block = Edelstahlblock
+Brass Block = Messingblock
+Wrought Iron = Schmiedeeisen
+
+## rubber.lua
+Rubber Tree Sapling = Gummibaumsetzling
+Rubber Tree = Gummibaum
+
diff --git a/technic/technic_worldgen/locale/template.txt b/technic/technic_worldgen/locale/template.txt
new file mode 100644
index 0000000..594e0ce
--- /dev/null
+++ b/technic/technic_worldgen/locale/template.txt
@@ -0,0 +1,37 @@
+# template.txt
+# technic_worldgen translation template
+
+###crafts.lua
+Uranium Lump =
+Uranium Ingot =
+Chromium Lump =
+Chromium Ingot =
+Zinc Lump =
+Zinc Ingot =
+Brass Ingot =
+Wrought Iron Ingot =
+Cast Iron Ingot =
+Carbon Steel Ingot =
+Stainless Steel Ingot =
+Iron =
+
+###nodes.lua
+Uranium Ore =
+Chromium Ore =
+Zinc Ore =
+Granite =
+Marble =
+Marble Bricks =
+Uranium Block =
+Chromium Block =
+Zinc Block =
+Wrought Iron Block =
+Cast Iron Block =
+Carbon Steel Block =
+Stainless Steel Block =
+Brass Block =
+Wrought Iron =
+
+###rubber.lua
+Rubber Tree Sapling =
+Rubber Tree =
diff --git a/technic/technic_worldgen/locale/tr.txt b/technic/technic_worldgen/locale/tr.txt
new file mode 100644
index 0000000..a04597f
--- /dev/null
+++ b/technic/technic_worldgen/locale/tr.txt
@@ -0,0 +1,38 @@
+# Turkish translation
+# mahmutelmas06@hotmail.com
+# Türkçe çeviri
+
+###crafts.lua
+Uranium Lump = Uranyum yığını
+Uranium Ingot = Uranyum külçesi
+Chromium Lump = Krom yığını
+Chromium Ingot = Krom külçesi
+Zinc Lump = Çinko yığını
+Zinc Ingot = Çünko külçesi
+Brass Ingot = Pirinç yığını
+Wrought Iron Ingot = İşlenmiş demir yığını
+Cast Iron Ingot = Döküm demir yığını
+Carbon Steel Ingot = Karbon çelik külçe
+Stainless Steel Ingot =Paslanmaz çelik külçe
+Iron = Demir
+
+###nodes.lua
+Uranium Ore = Uranyum madeni
+Chromium Ore = Krom madeni
+Zinc Ore = Çinko madeni
+Granite = Granit
+Marble = Mermer
+Marble Bricks = Mermer tuÄŸla
+Uranium Block = Uranyum blok
+Chromium Block = Karbon blok
+Zinc Block = Çinko blok
+Wrought Iron Block = Ä°ÅŸlenmiÅŸ demir blok
+Cast Iron Block = Döküm demir blok
+Carbon Steel Block = Karbon çelik blok
+Stainless Steel Block = Paslanmaz çelik blok
+Brass Block = Pirinç blok
+Wrought Iron = Ä°ÅŸlenmiÅŸ demir
+
+###rubber.lua
+Rubber Tree Sapling = Kauçuk ağacı fidanı
+Rubber Tree = Kauçuk ağacı
diff --git a/technic/technic_worldgen/mg.lua b/technic/technic_worldgen/mg.lua
new file mode 100644
index 0000000..4025384
--- /dev/null
+++ b/technic/technic_worldgen/mg.lua
@@ -0,0 +1,90 @@
+mg.register_ore({
+ name = "technic:mineral_uranium",
+ wherein = "default:stone",
+ seeddiff = 11,
+ maxvdistance = 10.5,
+ maxheight = -80,
+ minheight = -300,
+ sizen = 20,
+ sizedev = 10,
+ seglenghtn = 3,
+ seglenghtdev = 1,
+ segincln = 0.4,
+ segincldev = 0.6,
+ turnangle = 57,
+ numperblock = 1,
+ fork_chance = 0
+})
+
+mg.register_ore({
+ name = "technic:mineral_chromium",
+ wherein = "default:stone",
+ seeddiff = 12,
+ maxvdistance = 10.5,
+ maxheight = -100,
+ sizen = 50,
+ sizedev = 20,
+ seglenghtn = 8,
+ seglenghtdev = 3,
+ segincln = 0,
+ segincldev = 0.6,
+ turnangle = 57,
+ forkturnangle = 57,
+ numperblock = 2
+})
+
+mg.register_ore({
+ name = "technic:mineral_zinc",
+ wherein = "default:stone",
+ seeddiff = 13,
+ maxvdistance = 10.5,
+ maxheight = 2,
+ seglenghtn = 15,
+ seglenghtdev = 6,
+ segincln = 0,
+ segincldev = 0.6,
+ turnangle = 57,
+ forkturnangle = 57,
+ numperblock = 2
+})
+
+mg.register_ore({
+ name = "technic:mineral_lead",
+ wherein = "default:stone",
+ seeddiff = 13,
+ maxvdistance = 10.5,
+ maxheight = 16,
+ seglenghtn = 15,
+ seglenghtdev = 6,
+ segincln = 0,
+ segincldev = 0.6,
+ turnangle = 57,
+ forkturnangle = 57,
+ numperblock = 3
+})
+
+if technic.config:get_bool("enable_granite_generation") then
+ mg.register_ore_sheet({
+ name = "technic:granite",
+ wherein = "default:stone",
+ height_min = -31000,
+ height_max = -150,
+ tmin = 3,
+ tmax = 6,
+ threshhold = 0.4,
+ noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70}
+ })
+end
+
+if technic.config:get_bool("enable_marble_generation") then
+ mg.register_ore_sheet({
+ name = "technic:marble",
+ wherein = "default:stone",
+ height_min = -31000,
+ height_max = -50,
+ tmin = 3,
+ tmax = 6,
+ threshhold = 0.4,
+ noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=23, octaves=3, persist=0.70}
+ })
+end
diff --git a/technic/technic_worldgen/nodes.lua b/technic/technic_worldgen/nodes.lua
new file mode 100644
index 0000000..a4fe2dd
--- /dev/null
+++ b/technic/technic_worldgen/nodes.lua
@@ -0,0 +1,196 @@
+
+local S = technic.worldgen.gettext
+
+minetest.register_node( ":technic:mineral_uranium", {
+ description = S("Uranium Ore"),
+ tiles = { "default_stone.png^technic_mineral_uranium.png" },
+ is_ground_content = true,
+ groups = {cracky=3, radioactive=1000},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "technic:uranium_lump",
+})
+
+minetest.register_node( ":technic:mineral_chromium", {
+ description = S("Chromium Ore"),
+ tiles = { "default_stone.png^technic_mineral_chromium.png" },
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "technic:chromium_lump",
+})
+
+minetest.register_node( ":technic:mineral_zinc", {
+ description = S("Zinc Ore"),
+ tiles = { "default_stone.png^technic_mineral_zinc.png" },
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "technic:zinc_lump",
+})
+
+minetest.register_node( ":technic:mineral_lead", {
+ description = S("Lead Ore"),
+ tiles = { "default_stone.png^technic_mineral_lead.png" },
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "technic:lead_lump",
+})
+
+minetest.register_node( ":technic:mineral_sulfur", {
+ description = S("Sulfur Ore"),
+ tiles = { "default_stone.png^technic_mineral_sulfur.png" },
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+ drop = "technic:sulfur_lump",
+})
+
+minetest.register_node( ":technic:granite", {
+ description = S("Granite"),
+ tiles = { "technic_granite.png" },
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node( ":technic:marble", {
+ description = S("Marble"),
+ tiles = { "technic_marble.png" },
+ is_ground_content = true,
+ groups = {cracky=3, marble=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node( ":technic:marble_bricks", {
+ description = S("Marble Bricks"),
+ tiles = { "technic_marble_bricks.png" },
+ is_ground_content = true,
+ groups = {cracky=3},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node(":technic:uranium_block", {
+ description = S("Uranium Block"),
+ tiles = { "technic_uranium_block.png" },
+ is_ground_content = true,
+ groups = {uranium_block=1, cracky=1, level=2, radioactive=3000},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:chromium_block", {
+ description = S("Chromium Block"),
+ tiles = { "technic_chromium_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:zinc_block", {
+ description = S("Zinc Block"),
+ tiles = { "technic_zinc_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:lead_block", {
+ description = S("Lead Block"),
+ tiles = { "technic_lead_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_alias("technic:wrought_iron_block", "default:steelblock")
+
+minetest.override_item("default:steelblock", {
+ description = S("Wrought Iron Block"),
+ tiles = { "technic_wrought_iron_block.png" },
+})
+
+minetest.register_node(":technic:cast_iron_block", {
+ description = S("Cast Iron Block"),
+ tiles = { "technic_cast_iron_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:carbon_steel_block", {
+ description = S("Carbon Steel Block"),
+ tiles = { "technic_carbon_steel_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:stainless_steel_block", {
+ description = S("Stainless Steel Block"),
+ tiles = { "technic_stainless_steel_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:brass_block", {
+ description = S("Brass Block"),
+ tiles = { "technic_brass_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1, level=2},
+ sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_craft({
+ output = 'technic:marble_bricks 4',
+ recipe = {
+ {'technic:marble','technic:marble'},
+ {'technic:marble','technic:marble'}
+ }
+})
+
+minetest.register_alias("technic:diamond_block", "default:diamondblock")
+minetest.register_alias("technic:diamond", "default:diamond")
+minetest.register_alias("technic:mineral_diamond", "default:stone_with_diamond")
+
+local function for_each_registered_node(action)
+ local really_register_node = minetest.register_node
+ minetest.register_node = function(name, def)
+ really_register_node(name, def)
+ action(name:gsub("^:", ""), def)
+ end
+ for name, def in pairs(minetest.registered_nodes) do
+ action(name, def)
+ end
+end
+
+for_each_registered_node(function(node_name, node_def)
+ if node_name ~= "default:steelblock" and
+ node_name:find("steelblock", 1, true) and
+ node_def.description:find("Steel", 1, true) then
+ minetest.override_item(node_name, {
+ description = node_def.description:gsub("Steel", S("Wrought Iron")),
+ })
+ end
+ local tiles = node_def.tiles or node_def.tile_images
+ if tiles then
+ local new_tiles = {}
+ local do_override = false
+ if type(tiles) == "string" then
+ tiles = {tiles}
+ end
+ for i, t in ipairs(tiles) do
+ if type(t) == "string" and t == "default_steel_block.png" then
+ do_override = true
+ t = "technic_wrought_iron_block.png"
+ end
+ table.insert(new_tiles, t)
+ end
+ if do_override then
+ minetest.override_item(node_name, {
+ tiles = new_tiles
+ })
+ end
+ end
+end)
+
diff --git a/technic/technic_worldgen/oregen.lua b/technic/technic_worldgen/oregen.lua
new file mode 100644
index 0000000..795f0ec
--- /dev/null
+++ b/technic/technic_worldgen/oregen.lua
@@ -0,0 +1,191 @@
+local uranium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 420, octaves = 3, persist = 0.7}
+local uranium_threshhold = 0.55
+
+local chromium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 421, octaves = 3, persist = 0.7}
+local chromium_threshhold = 0.55
+
+local zinc_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 422, octaves = 3, persist = 0.7}
+local zinc_threshhold = 0.5
+
+local lead_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 423, octaves = 3, persist = 0.7}
+local lead_threshhold = 0.3
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_uranium",
+ wherein = "default:stone",
+ clust_scarcity = 8*8*8,
+ clust_num_ores = 4,
+ clust_size = 3,
+ y_min = -300,
+ y_max = -80,
+ noise_params = uranium_params,
+ noise_threshhold = uranium_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_chromium",
+ wherein = "default:stone",
+ clust_scarcity = 8*8*8,
+ clust_num_ores = 2,
+ clust_size = 3,
+ y_min = -200,
+ y_max = -100,
+ noise_params = chromium_params,
+ noise_threshhold = chromium_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_chromium",
+ wherein = "default:stone",
+ clust_scarcity = 6*6*6,
+ clust_num_ores = 2,
+ clust_size = 3,
+ y_min = -31000,
+ y_max = -200,
+ flags = "absheight",
+ noise_params = chromium_params,
+ noise_threshhold = chromium_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_zinc",
+ wherein = "default:stone",
+ clust_scarcity = 8*8*8,
+ clust_num_ores = 4,
+ clust_size = 3,
+ y_min = -32,
+ y_max = 2,
+ noise_params = zinc_params,
+ noise_threshhold = zinc_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_zinc",
+ wherein = "default:stone",
+ clust_scarcity = 6*6*6,
+ clust_num_ores = 4,
+ clust_size = 3,
+ y_min = -31000,
+ y_max = -32,
+ flags = "absheight",
+ noise_params = zinc_params,
+ noise_threshhold = zinc_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_lead",
+ wherein = "default:stone",
+ clust_scarcity = 9*9*9,
+ clust_num_ores = 5,
+ clust_size = 3,
+ y_min = -16,
+ y_max = 16,
+ noise_params = lead_params,
+ noise_threshhold = lead_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_lead",
+ wherein = "default:stone",
+ clust_scarcity = 8*8*8,
+ clust_num_ores = 5,
+ clust_size = 3,
+ y_min = -128,
+ y_max = -16,
+ noise_params = lead_params,
+ noise_threshhold = lead_threshhold,
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "technic:mineral_lead",
+ wherein = "default:stone",
+ clust_scarcity = 6*6*6,
+ clust_num_ores = 5,
+ clust_size = 3,
+ y_min = -31000,
+ y_max = -128,
+ flags = "absheight",
+ noise_params = lead_params,
+ noise_threshhold = lead_threshhold,
+})
+
+-- Sulfur
+minetest.register_on_generated(function(minp, maxp, seed)
+ local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
+ local a = VoxelArea:new{
+ MinEdge = {x = emin.x, y = emin.y, z = emin.z},
+ MaxEdge = {x = emax.x, y = emax.y, z = emax.z},
+ }
+ local data = vm:get_data()
+ local pr = PseudoRandom(17 * minp.x + 42 * minp.y + 101 * minp.z)
+ local noise = minetest.get_perlin(9876, 3, 0.5, 100)
+
+ local c_lava = minetest.get_content_id("default:lava_source")
+ local c_lava_flowing = minetest.get_content_id("default:lava_flowing")
+ local c_stone = minetest.get_content_id("default:stone")
+ local c_sulfur = minetest.get_content_id("technic:mineral_sulfur")
+
+ local grid_size = 5
+ for x = minp.x + math.floor(grid_size / 2), maxp.x, grid_size do
+ for y = minp.y + math.floor(grid_size / 2), maxp.y, grid_size do
+ for z = minp.z + math.floor(grid_size / 2), maxp.z, grid_size do
+ local c = data[a:index(x, y, z)]
+ if (c == c_lava or c == c_lava_flowing) and noise:get3d({x = x, y = z, z = z}) >= 0.4 then
+ for xx = math.max(minp.x, x - grid_size), math.min(maxp.x, x + grid_size) do
+ for yy = math.max(minp.y, y - grid_size), math.min(maxp.y, y + grid_size) do
+ for zz = math.max(minp.z, z - grid_size), math.min(maxp.z, z + grid_size) do
+ local i = a:index(xx, yy, zz)
+ if data[i] == c_stone and pr:next(1, 10) <= 7 then
+ data[i] = c_sulfur
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
+ vm:set_data(data)
+ vm:write_to_map(data)
+end)
+
+
+if technic.config:get_bool("enable_marble_generation") then
+minetest.register_ore({
+ ore_type = "sheet",
+ ore = "technic:marble",
+ wherein = "default:stone",
+ clust_scarcity = 1,
+ clust_num_ores = 1,
+ clust_size = 3,
+ y_min = -31000,
+ y_max = -50,
+ noise_threshhold = 0.4,
+ noise_params = {offset=0, scale=15, spread={x=150, y=150, z=150}, seed=23, octaves=3, persist=0.70}
+})
+end
+
+if technic.config:get_bool("enable_granite_generation") then
+minetest.register_ore({
+ ore_type = "sheet",
+ ore = "technic:granite",
+ wherein = "default:stone",
+ clust_scarcity = 1,
+ clust_num_ores = 1,
+ clust_size = 4,
+ y_min = -31000,
+ y_max = -150,
+ noise_threshhold = 0.4,
+ noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70}
+})
+end
+
diff --git a/technic/technic_worldgen/rubber.lua b/technic/technic_worldgen/rubber.lua
new file mode 100644
index 0000000..3094fa0
--- /dev/null
+++ b/technic/technic_worldgen/rubber.lua
@@ -0,0 +1,100 @@
+-- Code of rubber tree by PilzAdam
+
+local S = technic.worldgen.gettext
+
+minetest.register_node(":moretrees:rubber_tree_sapling", {
+ description = S("Rubber Tree Sapling"),
+ drawtype = "plantlike",
+ tiles = {"technic_rubber_sapling.png"},
+ inventory_image = "technic_rubber_sapling.png",
+ wield_image = "technic_rubber_sapling.png",
+ paramtype = "light",
+ walkable = false,
+ groups = {dig_immediate=3, flammable=2},
+ sounds = default.node_sound_defaults(),
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "moretrees:rubber_tree_sapling",
+ burntime = 10
+})
+
+minetest.register_node(":moretrees:rubber_tree_trunk", {
+ description = S("Rubber Tree"),
+ tiles = {"default_tree_top.png", "default_tree_top.png",
+ "technic_rubber_tree_full.png"},
+ groups = {tree=1, snappy=1, choppy=2, oddly_breakable_by_hand=1,
+ flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":moretrees:rubber_tree_trunk_empty", {
+ description = S("Rubber Tree"),
+ tiles = {"default_tree_top.png", "default_tree_top.png",
+ "technic_rubber_tree_empty.png"},
+ groups = {tree=1, snappy=1, choppy=2, oddly_breakable_by_hand=1,
+ flammable=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":moretrees:rubber_tree_leaves", {
+ drawtype = "allfaces_optional",
+ description = S("Rubber Tree Leaves"),
+ tiles = {"technic_rubber_leaves.png"},
+ paramtype = "light",
+ groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
+ drop = {
+ max_items = 1,
+ items = {{
+ items = {"moretrees:rubber_tree_sapling"},
+ rarity = 20,
+ },
+ {
+ items = {"moretrees:rubber_tree_leaves"},
+ }
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+})
+
+technic.rubber_tree_model={
+ axiom = "FFFFA",
+ rules_a = "[&FFBFA]////[&BFFFA]////[&FBFFA]",
+ rules_b = "[&FFA]////[&FFA]////[&FFA]",
+ trunk = "moretrees:rubber_tree_trunk",
+ leaves = "moretrees:rubber_tree_leaves",
+ angle = 35,
+ iterations = 3,
+ random_level = 1,
+ trunk_type = "double",
+ thin_branches = true
+}
+
+minetest.register_abm({
+ nodenames = {"moretrees:rubber_tree_sapling"},
+ interval = 60,
+ chance = 20,
+ action = function(pos, node)
+ minetest.remove_node(pos)
+ minetest.spawn_tree(pos, technic.rubber_tree_model)
+ end
+})
+
+if technic.config:get_bool("enable_rubber_tree_generation") then
+ minetest.register_on_generated(function(minp, maxp, blockseed)
+ if math.random(1, 100) > 5 then
+ return
+ end
+ local tmp = {
+ x = (maxp.x - minp.x) / 2 + minp.x,
+ y = (maxp.y - minp.y) / 2 + minp.y,
+ z = (maxp.z - minp.z) / 2 + minp.z}
+ local pos = minetest.find_node_near(tmp, maxp.x - minp.x,
+ {"default:dirt_with_grass"})
+ if pos ~= nil then
+ minetest.spawn_tree({x=pos.x, y=pos.y+1, z=pos.z}, technic.rubber_tree_model)
+ end
+ end)
+end
+
diff --git a/technic/technic_worldgen/textures/technic_brass_block.png b/technic/technic_worldgen/textures/technic_brass_block.png
new file mode 100644
index 0000000..bc6fe78
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_brass_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_brass_dust.png b/technic/technic_worldgen/textures/technic_brass_dust.png
new file mode 100644
index 0000000..63d9ba4
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_brass_dust.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_brass_ingot.png b/technic/technic_worldgen/textures/technic_brass_ingot.png
new file mode 100644
index 0000000..06056e7
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_brass_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_carbon_steel_block.png b/technic/technic_worldgen/textures/technic_carbon_steel_block.png
new file mode 100644
index 0000000..f3cfdc1
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_carbon_steel_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_carbon_steel_ingot.png b/technic/technic_worldgen/textures/technic_carbon_steel_ingot.png
new file mode 100644
index 0000000..c30ec80
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_carbon_steel_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_cast_iron_block.png b/technic/technic_worldgen/textures/technic_cast_iron_block.png
new file mode 100644
index 0000000..2df61e5
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_cast_iron_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_cast_iron_ingot.png b/technic/technic_worldgen/textures/technic_cast_iron_ingot.png
new file mode 100644
index 0000000..5c182ce
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_cast_iron_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_chromium_block.png b/technic/technic_worldgen/textures/technic_chromium_block.png
new file mode 100644
index 0000000..ad173ca
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_chromium_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_chromium_ingot.png b/technic/technic_worldgen/textures/technic_chromium_ingot.png
new file mode 100644
index 0000000..248b0c3
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_chromium_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_chromium_lump.png b/technic/technic_worldgen/textures/technic_chromium_lump.png
new file mode 100644
index 0000000..0fe03a1
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_chromium_lump.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_granite.png b/technic/technic_worldgen/textures/technic_granite.png
new file mode 100644
index 0000000..abb1385
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_granite.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_lead_block.png b/technic/technic_worldgen/textures/technic_lead_block.png
new file mode 100644
index 0000000..11da56a
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_lead_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_lead_dust.png b/technic/technic_worldgen/textures/technic_lead_dust.png
new file mode 100644
index 0000000..af6ee29
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_lead_dust.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_lead_ingot.png b/technic/technic_worldgen/textures/technic_lead_ingot.png
new file mode 100644
index 0000000..fae0cbf
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_lead_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_lead_lump.png b/technic/technic_worldgen/textures/technic_lead_lump.png
new file mode 100644
index 0000000..64584cb
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_lead_lump.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_marble.png b/technic/technic_worldgen/textures/technic_marble.png
new file mode 100644
index 0000000..846a170
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_marble.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_marble_bricks.png b/technic/technic_worldgen/textures/technic_marble_bricks.png
new file mode 100644
index 0000000..2ea1e42
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_marble_bricks.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_mineral_chromium.png b/technic/technic_worldgen/textures/technic_mineral_chromium.png
new file mode 100644
index 0000000..c66f1c5
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_mineral_chromium.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_mineral_lead.png b/technic/technic_worldgen/textures/technic_mineral_lead.png
new file mode 100644
index 0000000..0309cd3
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_mineral_lead.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_mineral_sulfur.png b/technic/technic_worldgen/textures/technic_mineral_sulfur.png
new file mode 100644
index 0000000..26cb19d
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_mineral_sulfur.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_mineral_uranium.png b/technic/technic_worldgen/textures/technic_mineral_uranium.png
new file mode 100644
index 0000000..aad9c07
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_mineral_uranium.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_mineral_zinc.png b/technic/technic_worldgen/textures/technic_mineral_zinc.png
new file mode 100644
index 0000000..598efeb
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_mineral_zinc.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_rubber.png b/technic/technic_worldgen/textures/technic_rubber.png
new file mode 100644
index 0000000..9ed4a9d
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_rubber.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_rubber_leaves.png b/technic/technic_worldgen/textures/technic_rubber_leaves.png
new file mode 100644
index 0000000..ae013e0
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_rubber_leaves.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_rubber_sapling.png b/technic/technic_worldgen/textures/technic_rubber_sapling.png
new file mode 100644
index 0000000..e5c9f5d
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_rubber_sapling.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_rubber_tree_empty.png b/technic/technic_worldgen/textures/technic_rubber_tree_empty.png
new file mode 100644
index 0000000..1792951
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_rubber_tree_empty.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_rubber_tree_full.png b/technic/technic_worldgen/textures/technic_rubber_tree_full.png
new file mode 100644
index 0000000..08067ef
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_rubber_tree_full.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_rubber_tree_grindings.png b/technic/technic_worldgen/textures/technic_rubber_tree_grindings.png
new file mode 100644
index 0000000..9f2f5d6
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_rubber_tree_grindings.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_stainless_steel_block.png b/technic/technic_worldgen/textures/technic_stainless_steel_block.png
new file mode 100644
index 0000000..e451768
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_stainless_steel_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_sulfur_dust.png b/technic/technic_worldgen/textures/technic_sulfur_dust.png
new file mode 100644
index 0000000..04ffee0
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_sulfur_dust.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_sulfur_lump.png b/technic/technic_worldgen/textures/technic_sulfur_lump.png
new file mode 100644
index 0000000..017c8e1
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_sulfur_lump.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_uranium_block.png b/technic/technic_worldgen/textures/technic_uranium_block.png
new file mode 100644
index 0000000..99dd51c
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_uranium_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_uranium_ingot.png b/technic/technic_worldgen/textures/technic_uranium_ingot.png
new file mode 100644
index 0000000..38978f8
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_uranium_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_uranium_lump.png b/technic/technic_worldgen/textures/technic_uranium_lump.png
new file mode 100644
index 0000000..2f5a66c
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_uranium_lump.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_wrought_iron_block.png b/technic/technic_worldgen/textures/technic_wrought_iron_block.png
new file mode 100644
index 0000000..cf6c961
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_wrought_iron_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_wrought_iron_ingot.png b/technic/technic_worldgen/textures/technic_wrought_iron_ingot.png
new file mode 100644
index 0000000..af00ea0
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_wrought_iron_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_zinc_block.png b/technic/technic_worldgen/textures/technic_zinc_block.png
new file mode 100644
index 0000000..5ae7947
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_zinc_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_zinc_ingot.png b/technic/technic_worldgen/textures/technic_zinc_ingot.png
new file mode 100644
index 0000000..a36a11c
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_zinc_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/technic_zinc_lump.png b/technic/technic_worldgen/textures/technic_zinc_lump.png
new file mode 100644
index 0000000..1a620ab
--- /dev/null
+++ b/technic/technic_worldgen/textures/technic_zinc_lump.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_brass_ingot.png b/technic/technic_worldgen/textures/x32/technic_brass_ingot.png
new file mode 100644
index 0000000..2d8b153
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_brass_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_chromium_ingot.png b/technic/technic_worldgen/textures/x32/technic_chromium_ingot.png
new file mode 100644
index 0000000..91d5b20
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_chromium_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_chromium_lump.png b/technic/technic_worldgen/textures/x32/technic_chromium_lump.png
new file mode 100644
index 0000000..1588f92
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_chromium_lump.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_concrete_block.png b/technic/technic_worldgen/textures/x32/technic_concrete_block.png
new file mode 100644
index 0000000..91364f3
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_concrete_block.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_granite.png b/technic/technic_worldgen/textures/x32/technic_granite.png
new file mode 100644
index 0000000..abb1385
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_granite.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_marble.png b/technic/technic_worldgen/textures/x32/technic_marble.png
new file mode 100644
index 0000000..846a170
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_marble.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_marble_bricks.png b/technic/technic_worldgen/textures/x32/technic_marble_bricks.png
new file mode 100644
index 0000000..2ea1e42
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_marble_bricks.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_mineral_chromium.png b/technic/technic_worldgen/textures/x32/technic_mineral_chromium.png
new file mode 100644
index 0000000..c66f1c5
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_mineral_chromium.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_mineral_uranium.png b/technic/technic_worldgen/textures/x32/technic_mineral_uranium.png
new file mode 100644
index 0000000..aad9c07
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_mineral_uranium.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_mineral_zinc.png b/technic/technic_worldgen/textures/x32/technic_mineral_zinc.png
new file mode 100644
index 0000000..598efeb
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_mineral_zinc.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_rebar.png b/technic/technic_worldgen/textures/x32/technic_rebar.png
new file mode 100644
index 0000000..16d1fc5
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_rebar.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png b/technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png
new file mode 100644
index 0000000..46fa296
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_uranium.png b/technic/technic_worldgen/textures/x32/technic_uranium.png
new file mode 100644
index 0000000..54225f8
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_uranium.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_zinc_ingot.png b/technic/technic_worldgen/textures/x32/technic_zinc_ingot.png
new file mode 100644
index 0000000..096ff9c
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_zinc_ingot.png
Binary files differ
diff --git a/technic/technic_worldgen/textures/x32/technic_zinc_lump.png b/technic/technic_worldgen/textures/x32/technic_zinc_lump.png
new file mode 100644
index 0000000..d28a6dc
--- /dev/null
+++ b/technic/technic_worldgen/textures/x32/technic_zinc_lump.png
Binary files differ
diff --git a/technic/wrench/depends.txt b/technic/wrench/depends.txt
new file mode 100644
index 0000000..a681af3
--- /dev/null
+++ b/technic/wrench/depends.txt
@@ -0,0 +1,6 @@
+default
+technic?
+technic_chests?
+technic_worldgen?
+intllib?
+
diff --git a/technic/wrench/init.lua b/technic/wrench/init.lua
new file mode 100644
index 0000000..76605c4
--- /dev/null
+++ b/technic/wrench/init.lua
@@ -0,0 +1,162 @@
+--[[
+Wrench mod
+
+Adds a wrench that allows the player to pickup nodes that contain an inventory
+with items or metadata that needs perserving.
+The wrench has the same tool capability as the normal hand.
+To pickup a node simply right click on it. If the node contains a formspec,
+you will need to shift+right click instead.
+Because it enables arbitrary nesting of chests, and so allows the player
+to carry an unlimited amount of material at once, this wrench is not
+available to survival-mode players.
+--]]
+
+local LATEST_SERIALIZATION_VERSION = 1
+
+wrench = {}
+
+local modpath = minetest.get_modpath(minetest.get_current_modname())
+dofile(modpath.."/support.lua")
+dofile(modpath.."/technic.lua")
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+
+local function get_meta_type(name, metaname)
+ local def = wrench.registered_nodes[name]
+ if not def or not def.metas or not def.metas[metaname] then
+ return nil
+ end
+ return def.metas[metaname]
+end
+
+local function get_pickup_name(name)
+ return "wrench:picked_up_"..(name:gsub(":", "_"))
+end
+
+local function restore(pos, placer, itemstack)
+ local name = itemstack:get_name()
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local data = minetest.deserialize(itemstack:get_metadata())
+ minetest.set_node(pos, {name = data.name, param2 = node.param2})
+ local lists = data.lists
+ for name, value in pairs(data.metas) do
+ local meta_type = get_meta_type(data.name, name)
+ if meta_type == wrench.META_TYPE_INT then
+ meta:set_int(name, value)
+ elseif meta_type == wrench.META_TYPE_FLOAT then
+ meta:set_float(name, value)
+ elseif meta_type == wrench.META_TYPE_STRING then
+ meta:set_string(name, value)
+ end
+ end
+ for listname, list in pairs(lists) do
+ inv:set_list(listname, list)
+ end
+ itemstack:take_item()
+ return itemstack
+end
+
+for name, info in pairs(wrench.registered_nodes) do
+ local olddef = minetest.registered_nodes[name]
+ if olddef then
+ local newdef = {}
+ for key, value in pairs(olddef) do
+ newdef[key] = value
+ end
+ newdef.stack_max = 1
+ newdef.description = S("%s with items"):format(newdef.description)
+ newdef.groups = {}
+ newdef.groups.not_in_creative_inventory = 1
+ newdef.on_construct = nil
+ newdef.on_destruct = nil
+ newdef.after_place_node = restore
+ minetest.register_node(":"..get_pickup_name(name), newdef)
+ end
+end
+
+minetest.register_tool("wrench:wrench", {
+ description = S("Wrench"),
+ inventory_image = "technic_wrench.png",
+ tool_capabilities = {
+ full_punch_interval = 0.9,
+ max_drop_level = 0,
+ groupcaps = {
+ crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1},
+ snappy = {times={[3]=0.40}, uses=0, maxlevel=1},
+ oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40},
+ uses=0, maxlevel=3}
+ },
+ damage_groups = {fleshy=1},
+ },
+ on_place = function(itemstack, placer, pointed_thing)
+ local pos = pointed_thing.under
+ if not placer or not pos then
+ return
+ end
+ if minetest.is_protected(pos, placer:get_player_name()) then
+ minetest.record_protection_violation(pos, placer:get_player_name())
+ return
+ end
+ local name = minetest.get_node(pos).name
+ local def = wrench.registered_nodes[name]
+ if not def then
+ return
+ end
+
+ local stack = ItemStack(get_pickup_name(name))
+ local player_inv = placer:get_inventory()
+ if not player_inv:room_for_item("main", stack) then
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ if def.owned then
+ local owner = meta:get_string("owner")
+ if owner and owner ~= placer:get_player_name() then
+ minetest.log("action", placer:get_player_name()..
+ " tried to pick up a owned node belonging to "..
+ owner.." at "..
+ minetest.pos_to_string(pos))
+ return
+ end
+ end
+
+ local metadata = {}
+ metadata.name = name
+ metadata.version = LATEST_SERIALIZATION_VERSION
+
+ local inv = meta:get_inventory()
+ local lists = {}
+ for _, listname in pairs(def.lists or {}) do
+ if not inv:is_empty(listname) then
+ empty = false
+ end
+ local list = inv:get_list(listname)
+ for i, stack in pairs(list) do
+ list[i] = stack:to_string()
+ end
+ lists[listname] = list
+ end
+ metadata.lists = lists
+
+ local metas = {}
+ for name, meta_type in pairs(def.metas or {}) do
+ if meta_type == wrench.META_TYPE_INT then
+ metas[name] = meta:get_int(name)
+ elseif meta_type == wrench.META_TYPE_FLOAT then
+ metas[name] = meta:get_float(name)
+ elseif meta_type == wrench.META_TYPE_STRING then
+ metas[name] = meta:get_string(name)
+ end
+ end
+ metadata.metas = metas
+
+ stack:set_metadata(minetest.serialize(metadata))
+ minetest.remove_node(pos)
+ itemstack:add_wear(65535 / 20)
+ player_inv:add_item("main", stack)
+ return itemstack
+ end,
+})
diff --git a/technic/wrench/locale/de.txt b/technic/wrench/locale/de.txt
new file mode 100644
index 0000000..b285cd3
--- /dev/null
+++ b/technic/wrench/locale/de.txt
@@ -0,0 +1,7 @@
+# German Translation for technic_wrench
+# Deutsche Ãœbersetzung von technic_wrench
+# by Xanthin
+
+Wrench = Schraubenschluessel
+%s with items = %s mit Gegenstaenden
+
diff --git a/technic/wrench/locale/template.txt b/technic/wrench/locale/template.txt
new file mode 100644
index 0000000..eff2da2
--- /dev/null
+++ b/technic/wrench/locale/template.txt
@@ -0,0 +1,5 @@
+# technic_wrench translation template
+
+Wrench =
+%s with items =
+
diff --git a/technic/wrench/locale/tr.txt b/technic/wrench/locale/tr.txt
new file mode 100644
index 0000000..2050bce
--- /dev/null
+++ b/technic/wrench/locale/tr.txt
@@ -0,0 +1,5 @@
+# Turkish translation by mahmutelmas06
+# mahmutelmas06@hotmail.com
+
+Wrench = İngiliz anahtarı
+%s with items = Araçlarla birlikte %s
diff --git a/technic/wrench/support.lua b/technic/wrench/support.lua
new file mode 100644
index 0000000..1d21811
--- /dev/null
+++ b/technic/wrench/support.lua
@@ -0,0 +1,73 @@
+--[[
+supported_nodes
+This table stores all nodes that are compatible with the wrench mod.
+Syntax:
+ [<node name>] = {
+ lists = {"<inventory list name>"},
+ metas = {["<meta name>"] = STRING,
+ ["<meta name>"] = INT,
+ ["<meta name>"] = FLOAT},
+ owned = true,
+ store_meta_always = true,
+ }
+ owned - nodes that are protected by owner requirements (Ex. locked chests)
+ store_meta_always - when nodes are broken this ensures metadata and
+ inventory is always stored (Ex. active state for machines)
+--]]
+
+wrench.META_TYPE_INT = 0
+wrench.META_TYPE_FLOAT = 1
+wrench.META_TYPE_STRING = 2
+
+local INT, STRING, FLOAT =
+ wrench.META_TYPE_INT,
+ wrench.META_TYPE_STRING,
+ wrench.META_TYPE_FLOAT
+
+wrench.registered_nodes = {
+ ["default:chest"] = {
+ lists = {"main"},
+ },
+ ["default:chest_locked"] = {
+ lists = {"main"},
+ metas = {owner = STRING,
+ infotext = STRING},
+ owned = true,
+ },
+ ["default:furnace"] = {
+ lists = {"fuel", "src", "dst"},
+ metas = {infotext = STRING,
+ fuel_totaltime = FLOAT,
+ fuel_time = FLOAT,
+ src_totaltime = FLOAT,
+ src_time = FLOAT},
+ },
+ ["default:furnace_active"] = {
+ lists = {"fuel", "src", "dst"},
+ metas = {infotext = STRING,
+ fuel_totaltime = FLOAT,
+ fuel_time = FLOAT,
+ src_totaltime = FLOAT,
+ src_time = FLOAT},
+ store_meta_always = true,
+ },
+ ["default:sign_wall"] = {
+ metas = {infotext = STRING,
+ text = STRING},
+ },
+}
+
+function wrench:original_name(name)
+ for key, value in pairs(self.registered_nodes) do
+ if name == value.name then
+ return key
+ end
+ end
+end
+
+function wrench:register_node(name, def)
+ if minetest.registered_nodes[name] then
+ self.registered_nodes[name] = def
+ end
+end
+
diff --git a/technic/wrench/technic.lua b/technic/wrench/technic.lua
new file mode 100644
index 0000000..c404180
--- /dev/null
+++ b/technic/wrench/technic.lua
@@ -0,0 +1,343 @@
+
+local INT, STRING, FLOAT =
+ wrench.META_TYPE_INT,
+ wrench.META_TYPE_STRING,
+ wrench.META_TYPE_FLOAT
+
+wrench:register_node("technic:iron_chest", {
+ lists = {"main"},
+})
+wrench:register_node("technic:iron_locked_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ owner = STRING},
+ owned = true,
+})
+wrench:register_node("technic:copper_chest", {
+ lists = {"main"},
+})
+wrench:register_node("technic:copper_locked_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ owner = STRING},
+ owned = true,
+})
+wrench:register_node("technic:silver_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ formspec = STRING},
+})
+wrench:register_node("technic:silver_locked_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ owner = STRING,
+ formspec = STRING},
+ owned = true,
+})
+wrench:register_node("technic:gold_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ formspec = STRING},
+})
+wrench:register_node("technic:gold_locked_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ owner = STRING,
+ formspec = STRING},
+ owned = true,
+})
+wrench:register_node("technic:mithril_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ formspec = STRING},
+})
+wrench:register_node("technic:mithril_locked_chest", {
+ lists = {"main"},
+ metas = {infotext = STRING,
+ owner = STRING,
+ formspec = STRING},
+ owned = true,
+})
+wrench:register_node("technic:lv_electric_furnace", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:lv_electric_furnace_active", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_electric_furnace", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_electric_furnace_active", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:coal_alloy_furnace", {
+ lists = {"fuel", "src", "dst"},
+ metas = {infotext = STRING,
+ fuel_totaltime = FLOAT,
+ fuel_time = FLOAT,
+ src_totaltime = FLOAT,
+ src_time = FLOAT},
+})
+wrench:register_node("technic:coal_alloy_furnace_active", {
+ lists = {"fuel", "src", "dst"},
+ metas = {infotext = STRING,
+ fuel_totaltime = FLOAT,
+ fuel_time = FLOAT,
+ src_totaltime = FLOAT,
+ src_time = FLOAT},
+})
+wrench:register_node("technic:alloy_furnace", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:alloy_furnace_active", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_alloy_furnace", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_alloy_furnace_active", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:tool_workshop", {
+ lists = {"src", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT},
+})
+wrench:register_node("technic:grinder", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:grinder_active", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_grinder", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_grinder_active", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:extractor", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:extractor_active", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_extractor", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_extractor_active", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:compressor", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:compressor_active", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_compressor", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_compressor_active", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:cnc", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT,
+ cnc_product = STRING},
+})
+wrench:register_node("technic:cnc_active", {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ LV_EU_demand = INT,
+ LV_EU_input = INT,
+ src_time = INT,
+ cnc_product = STRING},
+})
+wrench:register_node("technic:mv_centrifuge", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+wrench:register_node("technic:mv_centrifuge_active", {
+ lists = {"src", "dst", "upgrade1", "upgrade2"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ MV_EU_demand = INT,
+ MV_EU_input = INT,
+ tube_time = INT,
+ src_time = INT},
+})
+
+
+local chest_mark_colors = {
+ '_black',
+ '_blue',
+ '_brown',
+ '_cyan',
+ '_dark_green',
+ '_dark_grey',
+ '_green',
+ '_grey',
+ '_magenta',
+ '_orange',
+ '_pink',
+ '_red',
+ '_violet',
+ '_white',
+ '_yellow',
+ '',
+}
+
+for i = 1, 15 do
+ wrench:register_node("technic:gold_chest"..chest_mark_colors[i], {
+ lists = {"main"},
+ metas = {infotext = STRING,formspec = STRING},
+ })
+ wrench:register_node("technic:gold_locked_chest"..chest_mark_colors[i], {
+ lists = {"main"},
+ metas = {infotext = STRING,owner = STRING,formspec = STRING},
+ owned = true,
+ })
+end
+
+if minetest.get_modpath("technic") then
+ for tier, _ in pairs(technic.machines) do
+ local ltier = tier:lower()
+ for i = 0, 8 do
+ wrench:register_node("technic:"..ltier.."_battery_box"..i, {
+ lists = {"src", "dst"},
+ metas = {infotext = STRING,
+ formspec = STRING,
+ [tier.."_EU_demand"] = INT,
+ [tier.."_EU_supply"] = INT,
+ [tier.."_EU_input"] = INT,
+ internal_EU_charge = INT,
+ last_side_shown = INT},
+ })
+ end
+ end
+end
+
diff --git a/technic/wrench/textures/technic_wrench.png b/technic/wrench/textures/technic_wrench.png
new file mode 100644
index 0000000..471b47e
--- /dev/null
+++ b/technic/wrench/textures/technic_wrench.png
Binary files differ
diff --git a/teleport_request/README.md b/teleport_request/README.md
new file mode 100644
index 0000000..34c8cfb
--- /dev/null
+++ b/teleport_request/README.md
@@ -0,0 +1,2 @@
+This mod is released under WTFPL.
+It adds ability to teleport to other players with their permission by using the /tpr command which requires "interact" privilege and the /tphr command which requires the "interact " privilege.
diff --git a/teleport_request/init.lua b/teleport_request/init.lua
new file mode 100644
index 0000000..3b4b41b
--- /dev/null
+++ b/teleport_request/init.lua
@@ -0,0 +1,169 @@
+-- Original code by Traxie21 and released with the WTFPL license
+-- https://forum.minetest.net/viewtopic.php?id=4457
+
+-- Updates by Zeno and ChaosWormz
+
+local timeout_delay = 60
+
+-- Set to true to register tpr_admin priv
+local regnewpriv = false
+
+local version = "1.1"
+
+local tpr_list = {}
+local tphr_list = {}
+
+--Teleport Request System
+local function tpr_send(sender, receiver)
+ if receiver == "" then
+ minetest.chat_send_player(sender, "Usage: /tpr <Player name>")
+ return
+ end
+
+ --If paremeter is valid, Send teleport message and set the table.
+ if not minetest.get_player_by_name(receiver) then
+ return
+ end
+
+ minetest.chat_send_player(receiver, sender ..' is requesting to teleport to you. /tpy to accept.')
+ minetest.chat_send_player(sender, 'Teleport request sent! It will time out in '.. timeout_delay ..' seconds.')
+
+ --Write name values to list and clear old values.
+ tpr_list[receiver] = sender
+ --Teleport timeout delay
+ minetest.after(timeout_delay, function(name)
+ if tpr_list[name] then
+ tpr_list[name] = nil
+ end
+ end, sender)
+end
+
+local function tphr_send(sender, receiver)
+ if receiver == "" then
+ minetest.chat_send_player(sender, "Usage: /tphr <Player name>")
+ return
+ end
+
+ --If paremeter is valid, Send teleport message and set the table.
+ if not minetest.get_player_by_name(receiver) then
+ return
+ end
+
+ minetest.chat_send_player(receiver, sender ..' is requesting that you teleport to them. /tpy to accept; /tpn to deny')
+ minetest.chat_send_player(sender, 'Teleport request sent! It will time out in '.. timeout_delay ..' seconds.')
+
+ --Write name values to list and clear old values.
+ tphr_list[receiver] = sender
+ --Teleport timeout delay
+ minetest.after(timeout_delay, function(name)
+ if tphr_list[name] then
+ tphr_list[name] = nil
+ end
+ end, sender)
+end
+
+local function tpr_deny(name)
+ if tpr_list[name] then
+ minetest.chat_send_player(tpr_list[name], 'Teleport request denied.')
+ tpr_list[name] = nil
+ end
+ if tphr_list[name] then
+ minetest.chat_send_player(tphr_list[name], 'Teleport request denied.')
+ tphr_list[name] = nil
+ end
+end
+
+-- Copied from Celeron-55's /teleport command. Thanks Celeron!
+local function find_free_position_near(pos)
+ local tries = {
+ {x=1,y=0,z=0},
+ {x=-1,y=0,z=0},
+ {x=0,y=0,z=1},
+ {x=0,y=0,z=-1},
+ }
+ for _,d in pairs(tries) do
+ local p = vector.add(pos, d)
+ if not minetest.registered_nodes[minetest.get_node(p).name].walkable then
+ return p, true
+ end
+ end
+ return pos, false
+end
+
+
+--Teleport Accept Systems
+local function tpr_accept(name, param)
+
+ --Check to prevent constant teleporting.
+ if not tpr_list[name]
+ and not tphr_list[name] then
+ minetest.chat_send_player(name, "Usage: /tpy allows you to accept teleport requests sent to you by other players")
+ return
+ end
+
+ local chatmsg, source, target, name2
+
+ if tpr_list[name] then
+ name2 = tpr_list[name]
+ source = minetest.get_player_by_name(name)
+ target = minetest.get_player_by_name(name2)
+ chatmsg = name2 .. " is teleporting to you."
+ tpr_list[name] = nil
+ elseif tphr_list[name] then
+ name2 = tphr_list[name]
+ source = minetest.get_player_by_name(name2)
+ target = minetest.get_player_by_name(name)
+ chatmsg = "You are teleporting to " .. name2 .. "."
+ tphr_list[name] = nil
+ else
+ return
+ end
+
+ -- Could happen if either player disconnects (or timeout); if so just abort
+ if not source
+ or not target then
+ return
+ end
+
+ minetest.chat_send_player(name2, "Request Accepted!")
+ minetest.chat_send_player(name, chatmsg)
+
+ target:setpos(find_free_position_near(source:getpos()))
+end
+
+--Initalize Permissions.
+
+if regnewpriv then
+ minetest.register_privilege("tpr_admin", {
+ description = "Permission to override teleport to other players. UNFINISHED",
+ give_to_singleplayer = true
+ })
+end
+
+--Initalize Commands.
+
+minetest.register_chatcommand("tpr", {
+ description = "Request teleport to another player",
+ params = "<playername> | leave playername empty to see help message",
+ privs = {interact=true},
+ func = tpr_send
+})
+
+minetest.register_chatcommand("tphr", {
+ description = "Request player to teleport to you",
+ params = "<playername> | leave playername empty to see help message",
+ privs = {interact=true},
+ func = tphr_send
+})
+
+minetest.register_chatcommand("tpy", {
+ description = "Accept teleport requests from another player",
+ func = tpr_accept
+})
+
+minetest.register_chatcommand("tpn", {
+ description = "Deny teleport requests from another player",
+ func = tpr_deny
+})
+
+minetest.log("info", "[Teleport Request] Teleport Request v" .. version .. " Loaded.")
diff --git a/titanium/depends.txt b/titanium/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/titanium/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/titanium/init.lua b/titanium/init.lua
new file mode 100644
index 0000000..28dca95
--- /dev/null
+++ b/titanium/init.lua
@@ -0,0 +1,420 @@
+---
+---Titanium Mod Version 4 By Aqua. Added new Google Glass Titanium. Be nice this is my first mod!!! Subscribe to my YouTube: youtube.com/theshaunzero!
+---
+
+---
+---blocks
+---
+
+local enable_walking_light = minetest.setting_getbool("titanium_walking_light")
+if enable_walking_light ~= false then
+ enable_walking_light = true
+end
+
+minetest.register_node( "titanium:titanium_in_ground", {
+ description = "Titanium Ore",
+ tile_images = { "default_stone.png^titanium_titanium_in_ground.png" },
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+ drop = 'craft "titanium:titanium" 1',
+})
+
+minetest.register_node( "titanium:block", {
+ description = "Titanium Block",
+ tile_images = { "titanium_block.png" },
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node("titanium:glass", {
+ description = "Titanium Glass",
+ drawtype = "glasslike",
+ tile_images = {"titanium_glass.png"},
+ light_propagates = true,
+ paramtype = "light",
+ sunlight_propagates = true,
+ is_ground_content = true,
+ groups = {snappy=1,cracky=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_glass_defaults(),
+})
+
+minetest.register_craftitem( "titanium:titanium", {
+ description = "Titanium",
+ inventory_image = "titanium_titanium.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_craftitem( "titanium:tougher_titanium", {
+ description = "Tougher Titanium",
+ inventory_image = "tougher_titanium.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+})
+
+minetest.register_node( "titanium:titanium_plate", {
+ description = "Titanium Plate",
+ tile_images = {"titanium_plate.png"},
+ inventory_image = "titanium_plate.png",
+ is_ground_content = true,
+ groups = {cracky=1},
+ sounds = default.node_sound_stone_defaults(),
+})
+
+minetest.register_node( "titanium:titanium_tv_1", {
+ description = "Titanium TV",
+ tile_images = { "titanium_tv_1.png" },
+ is_ground_content = true,
+ groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+ drop = 'titanium:screen_1',
+ light_source = 8,
+})
+
+minetest.register_node( "titanium:titanium_tv_2", {
+ description = "Titanium TV",
+ tile_images = { "titanium_tv_2.png" },
+ is_ground_content = true,
+ groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2},
+ drop = 'titanium:screen_1',
+ light_source = 8,
+})
+
+minetest.register_abm(
+ {nodenames = {"titanium:titanium_tv_1", "titanium:titanium_tv_2"},
+ interval = 12,
+ chance = 1,
+ action = function(pos)
+ local i = math.random(1,2)
+
+ if i== 1 then
+ minetest.add_node(pos,{name="titanium:titanium_tv_1"})
+ end
+
+ if i== 2 then
+ minetest.add_node(pos,{name="titanium:titanium_tv_2"})
+ end
+
+ end
+})
+
+---
+---tools
+---
+
+minetest.register_tool("titanium:sword", {
+ description = "Titanium Sword",
+ inventory_image = "titanium_sword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=1,
+ groupcaps={
+ fleshy={times={[1]=2.00, [2]=0.60, [3]=0.20}, uses=100, maxlevel=2},
+ snappy={times={[2]=0.60, [3]=0.20}, uses=100, maxlevel=1},
+ choppy={times={[3]=0.70}, uses=100, maxlevel=0}
+ }
+ }
+})
+
+minetest.register_tool("titanium:axe", {
+ description = "Titanium Axe",
+ inventory_image = "titanium_axe.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ choppy={times={[1]=2.50, [2]=1.50, [3]=1.00}, uses=150, maxlevel=2},
+ fleshy={times={[2]=1.00, [3]=0.50}, uses=120, maxlevel=1}
+ }
+ },
+})
+
+minetest.register_tool("titanium:shovel", {
+ description = "Titanium Shovel",
+ inventory_image = "titanium_shovel.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ crumbly={times={[1]=1.0, [2]=0.50, [3]=0.50}, uses=150, maxlevel=3}
+ }
+ },
+})
+
+ minetest.register_tool("titanium:pick", {
+ description = "Titanium Pickaxe",
+ inventory_image = "titanium_pick.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=3,
+ groupcaps={
+ cracky={times={[1]=2.4, [2]=1.0, [3]=0.6}, uses=160, maxlevel=3},
+ crumbly={times={[1]=2.4, [2]=1.0, [3]=0.6}, uses=160, maxlevel=3},
+ snappy={times={[1]=2.4, [2]=1.0, [3]=0.6}, uses=160, maxlevel=3}
+ }
+ },
+})
+
+---
+---crafting
+---
+
+minetest.register_craft({
+ output = 'titanium:pick',
+ recipe = {
+ {'titanium:titanium', 'titanium:titanium', 'titanium:titanium'},
+ {'', 'default:stick', ''},
+ {'', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:axe',
+ recipe = {
+ {'titanium:titanium', 'titanium:titanium', ''},
+ {'titanium:titanium', 'default:stick', ''},
+ {'', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:shovel',
+ recipe = {
+ {'', 'titanium:titanium', ''},
+ {'', 'default:stick', ''},
+ {'', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:sword',
+ recipe = {
+ {'', 'titanium:titanium', ''},
+ {'', 'titanium:titanium', ''},
+ {'', 'default:stick', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:block',
+ recipe = {
+ {'titanium:titanium', 'titanium:titanium', 'titanium:titanium'},
+ {'titanium:titanium', 'titanium:titanium', 'titanium:titanium'},
+ {'titanium:titanium', 'titanium:titanium', 'titanium:titanium'},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:titanium 9',
+ recipe = {
+ {'', 'titanium:block', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:glass 3',
+ recipe = {
+ {'', 'titanium:titanium', ''},
+ {'titanium:titanium', 'default:glass', 'titanium:titanium'},
+ {'', 'titanium:titanium', ''},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:tougher_titanium',
+ recipe = {
+ {'titanium:titanium', 'titanium:titanium'},
+ {'titanium:titanium', 'titanium:titanium'},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:titanium_tv_1',
+ recipe = {
+ {'default:steel_ingot', 'titanium:tougher_titanium', 'default:steel_ingot'},
+ {'titanium:tougher_titanium', 'default:glass', 'titanium:tougher_titanium'},
+ {'default:steel_ingot', 'titanium:tougher_titanium', 'default:steel_ingot'},
+ }
+})
+
+minetest.register_craft({
+ output = 'titanium:titanium_plate 9',
+ recipe = {
+ {'titanium:titanium', 'titanium:titanium', 'titanium:titanium'},
+ {'titanium:titanium', 'titanium:tougher_titanium', 'titanium:titanium'},
+ {'titanium:titanium', 'titanium:titanium', 'titanium:titanium'},
+ }
+})
+
+minetest.register_ore({
+ ore_type = "scatter",
+ ore = "titanium:titanium_in_ground",
+ wherein = "default:stone",
+ noise_params = {
+ offset = 0,
+ scale = 1,
+ spread = {x=100, y=100, z=100},
+ seed = 21,
+ octaves = 2,
+ persist = 0.70,
+ },
+ clust_scarcity = 8192,
+ clust_num_ores = 5,
+ clust_size = 2,
+ y_min = -31000,
+ y_max = -1500,
+})
+
+if enable_walking_light then
+
+ local players = {}
+ local player_positions = {}
+ local last_wielded = {}
+
+ function round(num)
+ return math.floor(num + 0.5)
+ end
+
+ function check_for_googles (player)
+ if player==nil then return false end
+ local inv = player:get_inventory()
+ local hotbar=inv:get_list("main")
+ for index=1,8,1 do
+ if hotbar[index]:get_name() == "titanium:sam_titanium" then
+ return "titanium:sam_titanium"
+ end
+ end
+ return false
+ end
+
+ minetest.register_on_joinplayer(function(player)
+ local player_name = player:get_player_name()
+ table.insert(players, player_name)
+ last_wielded[player_name] = player:get_wielded_item():get_name()
+ local pos = player:getpos()
+ local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
+ local wielded_item = check_for_googles(player)
+ if wielded_item ~= "titanium:sam_titanium" then
+ minetest.add_node(rounded_pos,{type="node",name="titanium:who_knows"})
+ minetest.add_node(rounded_pos,{type="node",name="air"})
+ end
+ player_positions[player_name] = {}
+ player_positions[player_name]["x"] = rounded_pos.x;
+ player_positions[player_name]["y"] = rounded_pos.y;
+ player_positions[player_name]["z"] = rounded_pos.z;
+ end)
+
+ minetest.register_on_leaveplayer(function(player)
+ local player_name = player:get_player_name()
+ for i,v in ipairs(players) do
+ if v == player_name then
+ table.remove(players, i)
+ last_wielded[player_name] = nil
+ local pos = player:getpos()
+ local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
+ minetest.add_node(rounded_pos,{type="node",name="titanium:who_knows"})
+ minetest.add_node(rounded_pos,{type="node",name="air"})
+ player_positions[player_name]["x"] = nil
+ player_positions[player_name]["y"] = nil
+ player_positions[player_name]["z"] = nil
+ player_positions[player_name]["m"] = nil
+ player_positions[player_name] = nil
+ end
+ end
+ end)
+
+ minetest.register_globalstep(function(dtime)
+ for i,player_name in ipairs(players) do
+ local player = minetest.get_player_by_name(player_name)
+ local wielded_item = check_for_googles(player)
+ if wielded_item == "titanium:sam_titanium" then
+ local pos = player:getpos()
+ local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
+ if (last_wielded[player_name] ~= "titanium:sam_titanium") or (player_positions[player_name]["x"] ~= rounded_pos.x or player_positions[player_name]["y"] ~= rounded_pos.y or player_positions[player_name]["z"] ~= rounded_pos.z) then
+ local is_air = minetest.get_node_or_nil(rounded_pos)
+ if is_air == nil or (is_air ~= nil and (is_air.name == "air" or is_air.name == "titanium:light")) then
+ minetest.add_node(rounded_pos,{type="node",name="titanium:light"})
+ end
+ if (player_positions[player_name]["x"] ~= rounded_pos.x or player_positions[player_name]["y"] ~= rounded_pos.y or player_positions[player_name]["z"] ~= rounded_pos.z) then
+ local old_pos = {x=player_positions[player_name]["x"], y=player_positions[player_name]["y"], z=player_positions[player_name]["z"]}
+ local is_light = minetest.get_node_or_nil(old_pos)
+ if is_light ~= nil and is_light.name == "titanium:light" then
+ minetest.add_node(old_pos,{type="node",name="titanium:who_knows"})
+ minetest.add_node(old_pos,{type="node",name="air"})
+ end
+ end
+ player_positions[player_name]["x"] = rounded_pos.x
+ player_positions[player_name]["y"] = rounded_pos.y
+ player_positions[player_name]["z"] = rounded_pos.z
+ end
+
+ last_wielded[player_name] = wielded_item;
+ elseif last_wielded[player_name] == "titanium:sam_titanium" then
+ local pos = player:getpos()
+ local rounded_pos = {x=round(pos.x),y=round(pos.y)+1,z=round(pos.z)}
+ repeat
+ local is_light = minetest.get_node_or_nil(rounded_pos)
+ if is_light ~= nil and is_light.name == "titanium:light" then
+ minetest.add_node(rounded_pos,{type="node",name="titanium:who_knows"})
+ minetest.add_node(rounded_pos,{type="node",name="air"})
+ end
+ until minetest.get_node_or_nil(rounded_pos) ~= "titanium:light"
+ local old_pos = {x=player_positions[player_name]["x"], y=player_positions[player_name]["y"], z=player_positions[player_name]["z"]}
+ repeat
+ is_light = minetest.get_node_or_nil(old_pos)
+ if is_light ~= nil and is_light.name == "titanium:light" then
+ minetest.add_node(old_pos,{type="node",name="titanium:who_knows"})
+ minetest.add_node(old_pos,{type="node",name="air"})
+ end
+ until minetest.get_node_or_nil(old_pos) ~= "titanium:light"
+ last_wielded[player_name] = wielded_item
+ end
+ end
+ end)
+
+ ------------------------------------------------------
+ -- Version 4------------------------------------------
+
+ minetest.register_node("titanium:light", {
+ drawtype = "glasslike",
+ tile_images = {"titanium.png"},
+ inventory_image = minetest.inventorycube("titanium.png"),
+ paramtype = "light",
+ walkable = false,
+ is_ground_content = true,
+ light_propagates = true,
+ sunlight_propagates = true,
+ light_source = 11,
+ selection_box = {
+ type = "fixed",
+ fixed = {0, 0, 0, 0, 0, 0},
+ },
+ })
+
+ minetest.register_tool("titanium:sam_titanium", {
+ description = "Google Glass Titanium",
+ inventory_image = "sam_titanium.png",
+ wield_image = "sam_titanium.png",
+ tool_capabilities = {
+ max_drop_level=1,
+ groupcaps={
+ cracky={times={[2]=1.20, [3]=0.80}, uses=5, maxlevel=1}
+ }
+ },
+ })
+
+ minetest.register_craft({
+ output = 'titanium:sam_titanium',
+ recipe = {
+ {'titanium:titanium_plate', 'default:torch', 'titanium:titanium_plate'},
+ {'titanium:glass', 'default:mese_crystal', 'titanium:glass'},
+ {'', '', ''},
+ }
+ })
+ --------------------------------------------------------
+ minetest.register_node("titanium:who_knows", {
+ description = "?Who Knows?",
+ tiles = {"titanium.png"},
+ is_ground_content = true,
+ groups = {not_in_creative_inventory=1},
+ })
+end
+
+print("[Titanium Mod] Loaded! By Aqua! Subscribe to my YouTube: youtube.com/theshaunzero!")
diff --git a/titanium/textures/Thumbs.db b/titanium/textures/Thumbs.db
new file mode 100644
index 0000000..d8560e0
--- /dev/null
+++ b/titanium/textures/Thumbs.db
Binary files differ
diff --git a/titanium/textures/sam_titanium.png b/titanium/textures/sam_titanium.png
new file mode 100644
index 0000000..785bf64
--- /dev/null
+++ b/titanium/textures/sam_titanium.png
Binary files differ
diff --git a/titanium/textures/sam_titanium.xcf b/titanium/textures/sam_titanium.xcf
new file mode 100644
index 0000000..11c9163
--- /dev/null
+++ b/titanium/textures/sam_titanium.xcf
Binary files differ
diff --git a/titanium/textures/titanium.png b/titanium/textures/titanium.png
new file mode 100644
index 0000000..334cb07
--- /dev/null
+++ b/titanium/textures/titanium.png
Binary files differ
diff --git a/titanium/textures/titanium_axe.png b/titanium/textures/titanium_axe.png
new file mode 100644
index 0000000..7603838
--- /dev/null
+++ b/titanium/textures/titanium_axe.png
Binary files differ
diff --git a/titanium/textures/titanium_block.png b/titanium/textures/titanium_block.png
new file mode 100644
index 0000000..63626a4
--- /dev/null
+++ b/titanium/textures/titanium_block.png
Binary files differ
diff --git a/titanium/textures/titanium_glass.png b/titanium/textures/titanium_glass.png
new file mode 100644
index 0000000..928a42f
--- /dev/null
+++ b/titanium/textures/titanium_glass.png
Binary files differ
diff --git a/titanium/textures/titanium_pick.png b/titanium/textures/titanium_pick.png
new file mode 100644
index 0000000..bf04975
--- /dev/null
+++ b/titanium/textures/titanium_pick.png
Binary files differ
diff --git a/titanium/textures/titanium_plate.png b/titanium/textures/titanium_plate.png
new file mode 100644
index 0000000..6ba8d8f
--- /dev/null
+++ b/titanium/textures/titanium_plate.png
Binary files differ
diff --git a/titanium/textures/titanium_shovel.png b/titanium/textures/titanium_shovel.png
new file mode 100644
index 0000000..2549f99
--- /dev/null
+++ b/titanium/textures/titanium_shovel.png
Binary files differ
diff --git a/titanium/textures/titanium_sword.png b/titanium/textures/titanium_sword.png
new file mode 100644
index 0000000..238305e
--- /dev/null
+++ b/titanium/textures/titanium_sword.png
Binary files differ
diff --git a/titanium/textures/titanium_titanium.png b/titanium/textures/titanium_titanium.png
new file mode 100644
index 0000000..2821cd5
--- /dev/null
+++ b/titanium/textures/titanium_titanium.png
Binary files differ
diff --git a/titanium/textures/titanium_titanium_in_ground.png b/titanium/textures/titanium_titanium_in_ground.png
new file mode 100644
index 0000000..6f2fb10
--- /dev/null
+++ b/titanium/textures/titanium_titanium_in_ground.png
Binary files differ
diff --git a/titanium/textures/titanium_tv_1.png b/titanium/textures/titanium_tv_1.png
new file mode 100644
index 0000000..496f7f1
--- /dev/null
+++ b/titanium/textures/titanium_tv_1.png
Binary files differ
diff --git a/titanium/textures/titanium_tv_2.png b/titanium/textures/titanium_tv_2.png
new file mode 100644
index 0000000..3d01fb1
--- /dev/null
+++ b/titanium/textures/titanium_tv_2.png
Binary files differ
diff --git a/titanium/textures/tougher_titanium.png b/titanium/textures/tougher_titanium.png
new file mode 100644
index 0000000..aeff651
--- /dev/null
+++ b/titanium/textures/tougher_titanium.png
Binary files differ
diff --git a/travelnet/README.md b/travelnet/README.md
new file mode 100644
index 0000000..d9bd775
--- /dev/null
+++ b/travelnet/README.md
@@ -0,0 +1,11 @@
+
+How this works:
+
+- craft it by filling the right and left row with glass; place in the middle row (from top to bottom): steel, mese, steel
+- place the travelnet box somewhere
+- right-click on it; enter name of the station (e.g. "my house", "center of desert city") and name of the network (e.g. "intresting towns","my buildings")
+- punch it to update the list of stations on that network
+- right-click to use the travelbox
+
+An unconfigured travelnet box can be configured by anyone. If it is misconfigured, just dig it and place it anew.
+All stations that have the same network name set and are owned by the same user connect to the same network.
diff --git a/travelnet/config.lua b/travelnet/config.lua
new file mode 100644
index 0000000..7673833
--- /dev/null
+++ b/travelnet/config.lua
@@ -0,0 +1,67 @@
+
+travelnet.MAX_STATIONS_PER_NETWORK = 24;
+
+-- set this to true if you want a simulated beam effect
+travelnet.travelnet_effect_enabled = false;
+-- set this to true if you want a sound to be played when the travelnet is used
+travelnet.travelnet_sound_enabled = false;
+
+-- if you set this to false, travelnets cannot be created
+-- (this may be useful if you want nothing but the elevators on your server)
+travelnet.travelnet_enabled = true;
+-- if you set travelnet.elevator_enabled to false, you will not be able to
+-- craft, place or use elevators
+travelnet.elevator_enabled = true;
+-- if you set this to false, doors will be disabled
+travelnet.doors_enabled = true;
+
+-- starts an abm which re-adds travelnet stations to networks in case the savefile got lost
+travelnet.abm_enabled = false;
+
+-- change these if you want other receipes for travelnet or elevator
+travelnet.travelnet_recipe = {
+ {"default:glass", "default:steel_ingot", "default:glass", },
+ {"default:glass", "default:mese", "default:glass", },
+ {"default:glass", "default:steel_ingot", "default:glass", }
+}
+travelnet.elevator_recipe = {
+ {"default:steel_ingot", "default:glass", "default:steel_ingot", },
+ {"default:steel_ingot", "", "default:steel_ingot", },
+ {"default:steel_ingot", "default:glass", "default:steel_ingot", }
+}
+
+-- if this function returns true, the player with the name player_name is
+-- allowed to add a box to the network named network_name, which is owned
+-- by the player owner_name;
+-- if you want to allow *everybody* to attach stations to all nets, let the
+-- function always return true;
+-- if the function returns false, players with the travelnet_attach priv
+-- can still add stations to that network
+
+travelnet.allow_attach = function( player_name, owner_name, network_name )
+ return false;
+end
+
+
+-- if this returns true, a player named player_name can remove a travelnet station
+-- from network_name (owned by owner_name) even though he is neither the owner nor
+-- has the travelnet_remove priv
+travelnet.allow_dig = function( player_name, owner_name, network_name )
+ return false;
+end
+
+
+-- if this function returns false, then player player_name will not be allowed to use
+-- the travelnet station_name_start on networ network_name owned by owner_name to travel to
+-- the station station_name_target on the same network;
+-- if this function returns true, the player will be transfered to the target station;
+-- you can use this code to i.e. charge the player money for the transfer or to limit
+-- usage of stations to players in the same fraction on PvP servers
+travelnet.allow_travel = function( player_name, owner_name, network_name, station_name_start, station_name_target )
+
+ --minetest.chat_send_player( player_name, "Player "..tostring( player_name ).." tries to use station "..tostring( station_name_start )..
+ -- " on network "..tostring( network_name ).." owned by "..tostring( owner_name ).." in order to travel to "..
+ -- tostring( station_name_target )..".");
+
+ return true;
+end
diff --git a/travelnet/doors.lua b/travelnet/doors.lua
new file mode 100644
index 0000000..a45a9f6
--- /dev/null
+++ b/travelnet/doors.lua
@@ -0,0 +1,142 @@
+-- Doors that are especially useful for travelnet elevators but can also be used in other situations.
+-- All doors (not only these here) in front of a travelnet or elevator are opened automaticly when a player arrives
+-- and are closed when a player departs from the travelnet or elevator.
+-- Autor: Sokomine
+
+minetest.register_node("travelnet:elevator_door_steel_open", {
+ description = "elevator door (open)",
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"default_stone.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ -- larger than one node but slightly smaller than a half node so that wallmounted torches pose no problem
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.90, -0.5, 0.4, -0.49, 1.5, 0.5},
+ { 0.49, -0.5, 0.4, 0.9, 1.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.9, -0.5, 0.4, 0.9, 1.5, 0.5},
+ },
+ },
+ drop = "travelnet:elevator_door_steel_closed",
+ on_rightclick = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "travelnet:elevator_door_steel_closed", param2 = node.param2})
+ end,
+})
+
+minetest.register_node("travelnet:elevator_door_steel_closed", {
+ description = "elevator door (closed)",
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"default_stone.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, -0.01, 1.5, 0.5},
+ { 0.01, -0.5, 0.4, 0.5, 1.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, 0.5, 1.5, 0.5},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "travelnet:elevator_door_steel_open", param2 = node.param2})
+ end,
+})
+
+
+
+
+minetest.register_node("travelnet:elevator_door_glass_open", {
+ description = "elevator door (open)",
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"travelnet_elevator_door_glass.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ -- larger than one node but slightly smaller than a half node so that wallmounted torches pose no problem
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.99, -0.5, 0.4, -0.49, 1.5, 0.5},
+ { 0.49, -0.5, 0.4, 0.99, 1.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.9, -0.5, 0.4, 0.9, 1.5, 0.5},
+ },
+ },
+ drop = "travelnet:elevator_door_glass_closed",
+ on_rightclick = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "travelnet:elevator_door_glass_closed", param2 = node.param2})
+ end,
+})
+
+minetest.register_node("travelnet:elevator_door_glass_closed", {
+ description = "elevator door (closed)",
+ drawtype = "nodebox",
+ -- top, bottom, side1, side2, inner, outer
+ tiles = {"travelnet_elevator_door_glass.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, -0.01, 1.5, 0.5},
+ { 0.01, -0.5, 0.4, 0.5, 1.5, 0.5},
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.4, 0.5, 1.5, 0.5},
+ },
+ },
+ on_rightclick = function(pos, node, puncher)
+ minetest.add_node(pos, {name = "travelnet:elevator_door_glass_open", param2 = node.param2})
+ end,
+})
+
+minetest.register_craft({
+ output = "travelnet:elevator_door_glass_closed",
+ recipe = {
+ {"default:glass", "", "default:glass", },
+ {"default:glass", "", "default:glass", },
+ {"default:glass", "", "default:glass", }
+ }
+ })
+
+minetest.register_craft({
+ output = "travelnet:elevator_door_steel_closed",
+ recipe = {
+ {"default:steel_ingot", "", "default:steel_ingot", },
+ {"default:steel_ingot", "", "default:steel_ingot", },
+ {"default:steel_ingot", "", "default:steel_ingot", }
+ }
+ })
+-- local old_node = minetest.get_node( pos );
+-- minetest.add_node(pos, {name = "travelnet:elevator_door_glass_closed", param2 = old_node.param2})
+
+
+
diff --git a/travelnet/elevator.lua b/travelnet/elevator.lua
new file mode 100644
index 0000000..a407d33
--- /dev/null
+++ b/travelnet/elevator.lua
@@ -0,0 +1,112 @@
+-- This version of the travelnet box allows to move up or down only.
+-- The network name is determined automaticly from the position (x/z coordinates).
+-- >utor: Sokomine
+
+minetest.register_node("travelnet:elevator", {
+ description = "Elevator",
+ drawtype = "mesh",
+ mesh = "travelnet_elevator.obj",
+ sunlight_propagates = true,
+ paramtype = 'light',
+ paramtype2 = "facedir",
+ wield_scale = {x=0.6, y=0.6, z=0.6},
+
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
+ },
+
+ collision_box = {
+ type = "fixed",
+ fixed = {
+
+ { 0.48, -0.5,-0.5, 0.5, 0.5, 0.5},
+ {-0.5 , -0.5, 0.48, 0.48, 0.5, 0.5},
+ {-0.5, -0.5,-0.5 ,-0.48, 0.5, 0.5},
+
+ --groundplate to stand on
+ { -0.5,-0.5,-0.5,0.5,-0.48, 0.5},
+ },
+ },
+
+ tiles = {
+ "travelnet_elevator_front.png",
+ "travelnet_elevator_inside_controls.png",
+ "travelnet_elevator_sides_outside.png",
+ "travelnet_elevator_inside_ceiling.png",
+ "travelnet_elevator_inside_floor.png",
+ "default_steel_block.png"
+ },
+ inventory_image = "travelnet_elevator_inv.png",
+ groups = {cracky=1,choppy=1,snappy=1},
+
+ light_source = 10,
+
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("infotext", "Elevator (unconfigured)");
+ meta:set_string("station_name", "");
+ meta:set_string("station_network","");
+ meta:set_string("owner", placer:get_player_name() );
+ -- request initinal data
+ meta:set_string("formspec",
+ "size[12,10]"..
+ "field[0.3,5.6;6,0.7;station_name;Name of this station:;]"..
+-- "field[0.3,6.6;6,0.7;station_network;Assign to Network:;]"..
+-- "field[0.3,7.6;6,0.7;owner_name;(optional) owned by:;]"..
+ "button_exit[6.3,6.2;1.7,0.7;station_set;Store]" );
+
+ local p = {x=pos.x, y=pos.y+1, z=pos.z}
+ local p2 = minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.add_node(p, {name="travelnet:elevator_top", paramtype2="facedir", param2=p2})
+ end,
+
+ on_receive_fields = travelnet.on_receive_fields,
+ on_punch = function(pos, node, puncher)
+ travelnet.update_formspec(pos, puncher:get_player_name())
+ end,
+
+ can_dig = function( pos, player )
+ return travelnet.can_dig( pos, player, 'elevator' )
+ end,
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ travelnet.remove_box( pos, oldnode, oldmetadata, digger )
+ end,
+
+ -- taken from VanessaEs homedecor fridge
+ on_place = function(itemstack, placer, pointed_thing)
+ local pos = pointed_thing.above;
+ local node = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z});
+ -- leftover elevator_top nodes can be removed by placing a new elevator underneath
+ if( node ~= nil and node.name ~= "air" and node.name ~= 'travelnet:elevator_top') then
+ minetest.chat_send_player( placer:get_player_name(), 'Not enough vertical space to place the travelnet box!' )
+ return;
+ end
+ return minetest.item_place(itemstack, placer, pointed_thing);
+ end,
+
+ on_destruct = function(pos)
+ local p = {x=pos.x, y=pos.y+1, z=pos.z}
+ minetest.remove_node(p)
+ end
+})
+
+minetest.register_alias("travelnet:elevator_top", "air")
+
+--if( minetest.get_modpath("technic") ~= nil ) then
+-- minetest.register_craft({
+-- output = "travelnet:elevator",
+-- recipe = {
+-- {"default:steel_ingot", "technic:motor", "default:steel_ingot", },
+-- {"default:steel_ingot", "technic:control_logic_unit", "default:steel_ingot", },
+-- {"default:steel_ingot", "moreores:copper_ingot", "default:steel_ingot", }
+-- }
+-- })
+--else
+ minetest.register_craft({
+ output = "travelnet:elevator",
+ recipe = travelnet.elevator_recipe,
+ })
+--end
+
diff --git a/travelnet/init.lua b/travelnet/init.lua
new file mode 100644
index 0000000..3eeb949
--- /dev/null
+++ b/travelnet/init.lua
@@ -0,0 +1,699 @@
+
+
+--[[
+ Teleporter networks that allow players to choose a destination out of a list
+ Copyright (C) 2013 Sokomine
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Version: 2.2 (with optional abm for self-healing)
+
+ Please configure this mod in config.lua
+
+ Changelog:
+ 05.10.14 - Added an optional abm so that the travelnet network can heal itshelf in case of loss of the savefile.
+ If you want to use this, set
+ travelnet.enable_abm = true
+ in config.lua and edit the interval in the abm to suit your needs.
+ 19.11.13 - moved doors and travelnet definition into an extra file
+ - moved configuration to config.lua
+ 05.08.13 - fixed possible crash when the node in front of the travelnet is unknown
+ 26.06.13 - added inventory image for elevator (created by VanessaE)
+ 21.06.13 - bugfix: wielding an elevator while digging a door caused the elevator_top to be placed
+ - leftover floating elevator_top nodes can be removed by placing a new travelnet:elevator underneath them and removing that afterwards
+ - homedecor-doors are now opened and closed correctly as well
+ - removed nodes that are not intended for manual use from creative inventory
+ - improved naming of station levels for the elevator
+ 21.06.13 - elevator stations are sorted by height instead of date of creation as is the case with travelnet boxes
+ - elevator stations are named automaticly
+ 20.06.13 - doors can be opened and closed from inside the travelnet box/elevator
+ - the elevator can only move vertically; the network name is defined by its x and z coordinate
+ 13.06.13 - bugfix
+ - elevator added (written by kpoppel) and placed into extra file
+ - elevator doors added
+ - groups changed to avoid accidental dig/drop on dig of node beneath
+ - added new priv travelnet_remove for digging of boxes owned by other players
+ - only the owner of a box or players with the travelnet_remove priv can now dig it
+ - entering your own name as owner_name does no longer abort setup
+ 22.03.13 - added automatic detection if yaw can be set
+ - beam effect is disabled by default
+ 20.03.13 - added inventory image provided by VanessaE
+ - fixed bug that made it impossible to remove stations from the net
+ - if the station a player beamed to no longer exists, the station will be removed automaticly
+ - with the travelnet_attach priv, you can now attach your box to the nets of other players
+ - in newer versions of Minetest, the players yaw is set so that he/she looks out of the receiving box
+ - target list is now centered if there are less than 9 targets
+--]]
+
+
+minetest.register_privilege("travelnet_attach", { description = "allows to attach travelnet boxes to travelnets of other players", give_to_singleplayer = false});
+minetest.register_privilege("travelnet_remove", { description = "allows to dig travelnet boxes which belog to nets of other players", give_to_singleplayer = false});
+
+travelnet = {};
+
+travelnet.targets = {};
+
+
+-- read the configuration
+dofile(minetest.get_modpath("travelnet").."/config.lua"); -- the normal, default travelnet
+
+
+
+-- TODO: save and restore ought to be library functions and not implemented in each individual mod!
+-- called whenever a station is added or removed
+travelnet.save_data = function()
+
+ local data = minetest.serialize( travelnet.targets );
+ local path = minetest.get_worldpath().."/mod_travelnet.data";
+
+ local file = io.open( path, "w" );
+ if( file ) then
+ file:write( data );
+ file:close();
+ else
+ print("[Mod travelnet] Error: Savefile '"..tostring( path ).."' could not be written.");
+ end
+end
+
+
+travelnet.restore_data = function()
+
+ local path = minetest.get_worldpath().."/mod_travelnet.data";
+
+ local file = io.open( path, "r" );
+ if( file ) then
+ local data = file:read("*all");
+ travelnet.targets = minetest.deserialize( data );
+ file:close();
+ else
+ print("[Mod travelnet] Error: Savefile '"..tostring( path ).."' not found.");
+ end
+end
+
+
+
+
+travelnet.update_formspec = function( pos, puncher_name )
+
+ local meta = minetest.get_meta(pos);
+
+ local this_node = minetest.get_node( pos );
+ local is_elevator = false;
+
+ if( this_node ~= nil and this_node.name == 'travelnet:elevator' ) then
+ is_elevator = true;
+ end
+
+ if( not( meta )) then
+ return;
+ end
+
+ local owner_name = meta:get_string( "owner" );
+ local station_name = meta:get_string( "station_name" );
+ local station_network = meta:get_string( "station_network" );
+
+ if( not( owner_name )
+ or not( station_name ) or station_network == ''
+ or not( station_network )) then
+
+
+ if( is_elevator == true ) then
+ travelnet.add_target( nil, nil, pos, puncher_name, meta, owner_name );
+ return;
+ end
+
+-- minetest.chat_send_player(puncher_name, "DEBUG DATA: owner: "..(owner_name or "?")..
+-- " station_name: "..(station_name or "?")..
+-- " station_network: "..(station_network or "?")..".");
+-- minetest.chat_send_player(puncher_name, "data: "..minetest.serialize( travelnet.targets ));
+
+
+ meta:set_string("infotext", "Travelnet-box (unconfigured)");
+ meta:set_string("station_name", "");
+ meta:set_string("station_network","");
+ meta:set_string("owner", "");
+ -- request initinal data
+ meta:set_string("formspec",
+ "size[12,10]"..
+ "field[0.3,7.6;9,0.9;station_name;Name of this station:;"..(station_name or "?").."]"..
+ "field[0.3,8.6;9,0.9;station_network;Assign to Network:;"..(station_network or "?").."]"..
+ "field[0.3,9.6;9,0.9;owner;Owned by:;"..(owner_name or "?").."]"..
+ "button_exit[6.3,8.2;1.7,0.7;station_set;Store]" );
+
+ minetest.chat_send_player(puncher_name, "Error: Update failed! Resetting this box on the travelnet.");
+ return;
+ end
+
+ -- if the station got lost from the network for some reason (savefile corrupted?) then add it again
+ if( not( travelnet.targets[ owner_name ] )
+ or not( travelnet.targets[ owner_name ][ station_network ] )
+ or not( travelnet.targets[ owner_name ][ station_network ][ station_name ] )) then
+
+ -- first one by this player?
+ if( not( travelnet.targets[ owner_name ] )) then
+ travelnet.targets[ owner_name ] = {};
+ end
+
+ -- first station on this network?
+ if( not( travelnet.targets[ owner_name ][ station_network ] )) then
+ travelnet.targets[ owner_name ][ station_network ] = {};
+ end
+
+
+ local zeit = meta:get_int("timestamp");
+ if( not( zeit) or type(zeit)~="number" or zeit<100000 ) then
+ zeit = os.time();
+ end
+
+ -- add this station
+ travelnet.targets[ owner_name ][ station_network ][ station_name ] = {pos=pos, timestamp=zeit };
+
+ minetest.chat_send_player(owner_name, "Station '"..station_name.."' has been reattached to the network '"..station_network.."'.");
+
+ end
+
+
+ -- add name of station + network + owner + update-button
+ local formspec = "size[12,10]"..
+ "label[3.3,0.0;Travelnet-Box:]".."label[6.3,0.0;Punch box to update target list.]"..
+ "label[0.3,0.4;Name of this station:]".."label[6.3,0.4;"..(station_name or "?").."]"..
+ "label[0.3,0.8;Assigned to Network:]" .."label[6.3,0.8;"..(station_network or "?").."]"..
+ "label[0.3,1.2;Owned by:]" .."label[6.3,1.2;"..(owner_name or "?").."]"..
+ "label[3.3,1.6;Click on target to travel there:]";
+-- "button_exit[5.3,0.3;8,0.8;do_update;Punch box to update destination list. Click on target to travel there.]"..
+ local x = 0;
+ local y = 0;
+ local i = 0;
+
+
+ -- collect all station names in a table
+ local stations = {};
+
+ for k,v in pairs( travelnet.targets[ owner_name ][ station_network ] ) do
+ table.insert( stations, k );
+ end
+ -- minetest.chat_send_player(puncher_name, "stations: "..minetest.serialize( stations ));
+
+ local ground_level = 1;
+ if( is_elevator ) then
+ table.sort( stations, function(a,b) return travelnet.targets[ owner_name ][ station_network ][ a ].pos.y >
+ travelnet.targets[ owner_name ][ station_network ][ b ].pos.y end);
+ -- find ground level
+ local vgl_timestamp = 999999999999;
+ for index,k in ipairs( stations ) do
+ if( not( travelnet.targets[ owner_name ][ station_network ][ k ].timestamp )) then
+ travelnet.targets[ owner_name ][ station_network ][ k ].timestamp = os.time();
+ end
+ if( travelnet.targets[ owner_name ][ station_network ][ k ].timestamp < vgl_timestamp ) then
+ vgl_timestamp = travelnet.targets[ owner_name ][ station_network ][ k ].timestamp;
+ ground_level = index;
+ end
+ end
+ for index,k in ipairs( stations ) do
+ if( index == ground_level ) then
+ travelnet.targets[ owner_name ][ station_network ][ k ].nr = 'G';
+ else
+ travelnet.targets[ owner_name ][ station_network ][ k ].nr = tostring( ground_level - index );
+ end
+ end
+
+ else
+ -- sort the table according to the timestamp (=time the station was configured)
+ table.sort( stations, function(a,b) return travelnet.targets[ owner_name ][ station_network ][ a ].timestamp <
+ travelnet.targets[ owner_name ][ station_network ][ b ].timestamp end);
+ end
+
+ -- if there are only 8 stations (plus this one), center them in the formspec
+ if( #stations < 10 ) then
+ x = 4;
+ end
+
+ for index,k in ipairs( stations ) do
+
+ -- check if there is an elevator door in front that needs to be opened
+ local open_door_cmd = false;
+ if( k==station_name ) then
+ open_door_cmd = true;
+ end
+
+ if( k ~= station_name or open_door_cmd) then
+ i = i+1;
+
+ -- new column
+ if( y==8 ) then
+ x = x+4;
+ y = 0;
+ end
+
+ if( open_door_cmd ) then
+ formspec = formspec .."button_exit["..(x)..","..(y+2.5)..";1,0.5;open_door;<>]"..
+ "label["..(x+0.9)..","..(y+2.35)..";"..tostring( k ).."]";
+ elseif( is_elevator ) then
+ formspec = formspec .."button_exit["..(x)..","..(y+2.5)..";1,0.5;target;"..tostring( travelnet.targets[ owner_name ][ station_network ][ k ].nr ).."]"..
+ "label["..(x+0.9)..","..(y+2.35)..";"..tostring( k ).."]";
+ else
+ formspec = formspec .."button_exit["..(x)..","..(y+2.5)..";4,0.5;target;"..k.."]";
+ end
+
+-- if( is_elevator ) then
+-- formspec = formspec ..' ('..tostring( travelnet.targets[ owner_name ][ station_network ][ k ].pos.y )..'m)';
+-- end
+-- formspec = formspec .. ']';
+
+ y = y+1;
+ --x = x+4;
+ end
+ end
+
+ meta:set_string( "formspec", formspec );
+
+ meta:set_string( "infotext", "Station '"..tostring( station_name ).."' on travelnet '"..tostring( station_network )..
+ "' (owned by "..tostring( owner_name )..") ready for usage. Right-click to travel, punch to update.");
+
+ minetest.chat_send_player(puncher_name, "The target list of this box on the travelnet has been updated.");
+end
+
+
+
+-- add a new target; meta is optional
+travelnet.add_target = function( station_name, network_name, pos, player_name, meta, owner_name )
+
+ -- if it is an elevator, determine the network name through x and z coordinates
+ local this_node = minetest.get_node( pos );
+ local is_elevator = false;
+
+ if( this_node.name == 'travelnet:elevator' ) then
+-- owner_name = '*'; -- the owner name is not relevant here
+ is_elevator = true;
+ network_name = tostring( pos.x )..','..tostring( pos.z );
+ if( not( station_name ) or station_name == '' ) then
+ station_name = 'at '..tostring( pos.y )..'m';
+ end
+ end
+
+ if( station_name == "" or not(station_name )) then
+ minetest.chat_send_player(player_name, "Please provide a name for this station.");
+ return;
+ end
+
+ if( network_name == "" or not( network_name )) then
+ minetest.chat_send_player(player_name, "Please provide the name of the network this station ought to be connected to.");
+ return;
+ end
+
+ if( owner_name == nil or owner_name == '' or owner_name == player_name) then
+ owner_name = player_name;
+
+ elseif( is_elevator ) then -- elevator networks
+ owner_name = player_name;
+
+ elseif( not( travelnet.targets[ owner_name ] )
+ or not( travelnet.targets[ owner_name ][ network_name ] )) then
+
+ minetest.chat_send_player(player_name, "There is no network named "..tostring( network_name ).." owned by "..tostring( owner_name )..". Aborting.");
+ return;
+
+ elseif( not( minetest.check_player_privs(player_name, {travelnet_attach=true}))
+ and not( travelnet.allow_attach( player_name, owner_name, network_name ))) then
+
+ minetest.chat_send_player(player_name, "You do not have the travelnet_attach priv which is required to attach your box to the network of someone else. Aborting.");
+ return;
+ end
+
+ -- first one by this player?
+ if( not( travelnet.targets[ owner_name ] )) then
+ travelnet.targets[ owner_name ] = {};
+ end
+
+ -- first station on this network?
+ if( not( travelnet.targets[ owner_name ][ network_name ] )) then
+ travelnet.targets[ owner_name ][ network_name ] = {};
+ end
+
+ -- lua doesn't allow efficient counting here
+ local anz = 0;
+ for k,v in pairs( travelnet.targets[ owner_name ][ network_name ] ) do
+
+ if( k == station_name ) then
+ minetest.chat_send_player(player_name, "Error: A station named '"..station_name.."' already exists on this network. Please choose a diffrent name!");
+ return;
+ end
+
+ anz = anz + 1;
+ end
+
+ -- we don't want too many stations in the same network because that would get confusing when displaying the targets
+ if( anz+1 > travelnet.MAX_STATIONS_PER_NETWORK ) then
+ minetest.chat_send_player(player_name, "Error: Network '"..network_name.."' already contains the maximum number (="
+ ..(travelnet.MAX_STATIONS_PER_NETWORK)..") of allowed stations per network. Please choose a diffrent/new network name.");
+ return;
+ end
+
+ -- add this station
+ travelnet.targets[ owner_name ][ network_name ][ station_name ] = {pos=pos, timestamp=os.time() };
+
+ -- do we have a new node to set up? (and are not just reading from a safefile?)
+ if( meta ) then
+
+ minetest.chat_send_player(player_name, "Station '"..station_name.."' has been added to the network '"
+ ..network_name.."', which now consists of "..( anz+1 ).." station(s).");
+
+ meta:set_string( "station_name", station_name );
+ meta:set_string( "station_network", network_name );
+ meta:set_string( "owner", owner_name );
+ meta:set_int( "timestamp", travelnet.targets[ owner_name ][ network_name ][ station_name ].timestamp);
+
+ meta:set_string("formspec",
+ "size[12,10]"..
+ "field[0.3,0.6;6,0.7;station_name;Station:;".. meta:get_string("station_name").."]"..
+ "field[0.3,3.6;6,0.7;station_network;Network:;"..meta:get_string("station_network").."]" );
+
+ -- display a list of all stations that can be reached from here
+ travelnet.update_formspec( pos, player_name );
+
+ -- save the updated network data in a savefile over server restart
+ travelnet.save_data();
+ end
+end
+
+
+
+-- allow doors to open
+travelnet.open_close_door = function( pos, player, mode )
+
+ local this_node = minetest.get_node( pos );
+ local pos2 = {x=pos.x,y=pos.y,z=pos.z};
+
+ if( this_node.param2 == 0 ) then pos2 = {x=pos.x,y=pos.y,z=(pos.z-1)};
+ elseif( this_node.param2 == 1 ) then pos2 = {x=(pos.x-1),y=pos.y,z=pos.z};
+ elseif( this_node.param2 == 2 ) then pos2 = {x=pos.x,y=pos.y,z=(pos.z+1)};
+ elseif( this_node.param2 == 3 ) then pos2 = {x=(pos.x+1),y=pos.y,z=pos.z};
+ end
+
+ local door_node = minetest.get_node( pos2 );
+ if( door_node ~= nil and door_node.name ~= 'ignore' and door_node.name ~= 'air' and minetest.registered_nodes[ door_node.name ] ~= nil and minetest.registered_nodes[ door_node.name ].on_rightclick ~= nil) then
+
+ -- at least for homedecor, same facedir would mean "door closed"
+
+ -- do not close the elevator door if it is already closed
+ if( mode==1 and ( door_node.name == 'travelnet:elevator_door_glass_closed'
+ or door_node.name == 'travelnet:elevator_door_steel_closed'
+ -- handle doors that change their facedir
+ or ( door_node.param2 == this_node.param2
+ and door_node.name ~= 'travelnet:elevator_door_glass_open'
+ and door_node.name ~= 'travelnet:elevator_door_steel_open'))) then
+ return;
+ end
+ -- do not open the doors if they are already open (works only on elevator-doors; not on doors in general)
+ if( mode==2 and ( door_node.name == 'travelnet:elevator_door_glass_open'
+ or door_node.name == 'travelnet:elevator_door_steel_open'
+ -- handle doors that change their facedir
+ or ( door_node.param2 ~= this_node.param2
+ and door_node.name ~= 'travelnet:elevator_door_glass_closed'
+ and door_node.name ~= 'travelnet:elevator_door_steel_closed'))) then
+ return;
+ end
+
+ if( mode==2 ) then
+ minetest.after( 1, minetest.registered_nodes[ door_node.name ].on_rightclick, pos2, door_node, player );
+ else
+ minetest.registered_nodes[ door_node.name ].on_rightclick(pos2, door_node, player);
+ end
+ end
+end
+
+
+travelnet.on_receive_fields = function(pos, formname, fields, player)
+ local meta = minetest.get_meta(pos);
+
+ local name = player:get_player_name();
+
+ -- if the box has not been configured yet
+ if( meta:get_string("station_network")=="" ) then
+
+ travelnet.add_target( fields.station_name, fields.station_network, pos, name, meta, fields.owner_name );
+ return;
+ end
+
+ if( fields.open_door ) then
+ travelnet.open_close_door( pos, player, 0 );
+ return;
+ end
+
+
+ if( not( fields.target )) then
+ minetest.chat_send_player(name, "Please click on the target you want to travel to.");
+ return;
+ end
+
+
+ -- if there is something wrong with the data
+ local owner_name = meta:get_string( "owner" );
+ local station_name = meta:get_string( "station_name" );
+ local station_network = meta:get_string( "station_network" );
+
+ if( not( owner_name )
+ or not( station_name )
+ or not( station_network )
+ or not( travelnet.targets[ owner_name ] )
+ or not( travelnet.targets[ owner_name ][ station_network ] )) then
+
+
+ if( owner_name
+ and station_name
+ and station_network ) then
+ travelnet.add_target( station_name, station_network, pos, owner_name, meta, owner_name );
+ else
+ minetest.chat_send_player(name, "Error: There is something wrong with the configuration of this station. "..
+ " DEBUG DATA: owner: "..( owner_name or "?")..
+ " station_name: "..(station_name or "?")..
+ " station_network: "..(station_network or "?")..".");
+ return
+ end
+ end
+
+ if( not( owner_name )
+ or not( station_network )
+ or not( travelnet.targets )
+ or not( travelnet.targets[ owner_name ] )
+ or not( travelnet.targets[ owner_name ][ station_network ] )) then
+ minetest.chat_send_player(name, "Error: This travelnet is lacking data and/or improperly configured.");
+ print( "ERROR: The travelnet at "..minetest.pos_to_string( pos ).." has a problem: "..
+ " DATA: owner: "..( owner_name or "?")..
+ " station_name: "..(station_name or "?")..
+ " station_network: "..(station_network or "?")..".");
+ return;
+ end
+
+ local this_node = minetest.get_node( pos );
+ if( this_node ~= nil and this_node.name == 'travelnet:elevator' ) then
+ for k,v in pairs( travelnet.targets[ owner_name ][ station_network ] ) do
+ if( travelnet.targets[ owner_name ][ station_network ][ k ].nr --..' ('..tostring( travelnet.targets[ owner_name ][ station_network ][ k ].pos.y )..'m)'
+ == fields.target) then
+ fields.target = k;
+ end
+ end
+ end
+
+
+ -- if the target station is gone
+ if( not( travelnet.targets[ owner_name ][ station_network ][ fields.target ] )) then
+
+ minetest.chat_send_player(name, "Station '"..( fields.target or "?").." does not exist (anymore?) on this network.");
+ travelnet.update_formspec( pos, name );
+ return;
+ end
+
+
+ if( not( travelnet.allow_travel( name, owner_name, station_network, station_name, fields.target ))) then
+ return;
+ end
+ minetest.chat_send_player(name, "Initiating transfer to station '"..( fields.target or "?").."'.'");
+
+
+
+ if( travelnet.travelnet_sound_enabled ) then
+ minetest.sound_play("128590_7037-lq.mp3", {pos = pos, gain = 1.0, max_hear_distance = 10,})
+ end
+ if( travelnet.travelnet_effect_enabled ) then
+ minetest.add_entity( {x=pos.x,y=pos.y+0.5,z=pos.z}, "travelnet:effect"); -- it self-destructs after 20 turns
+ end
+
+ -- close the doors at the sending station
+ travelnet.open_close_door( pos, player, 1 );
+
+ -- transport the player to the target location
+ local target_pos = travelnet.targets[ owner_name ][ station_network ][ fields.target ].pos;
+ player:moveto( target_pos, false);
+
+ if( travelnet.travelnet_sound_enabled ) then
+ minetest.sound_play("travelnet_travel.wav", {pos = target_pos, gain = 1.0, max_hear_distance = 10,})
+ end
+ if( travelnet.travelnet_effect_enabled ) then
+ minetest.add_entity( {x=target_pos.x,y=target_pos.y+0.5,z=target_pos.z}, "travelnet:effect"); -- it self-destructs after 20 turns
+ end
+
+
+ -- check if the box has at the other end has been removed.
+ local node2 = minetest.get_node( target_pos );
+ if( node2 ~= nil and node2.name ~= 'ignore' and node2.name ~= 'travelnet:travelnet' and node2.name ~= 'travelnet:elevator') then
+
+ -- provide information necessary to identify the removed box
+ local oldmetadata = { fields = { owner = owner_name,
+ station_name = fields.target,
+ station_network = station_network }};
+
+ travelnet.remove_box( target_pos, nil, oldmetadata, player );
+
+ -- do this only on servers where the function exists
+ elseif( player.set_look_yaw ) then
+
+ -- rotate the player so that he/she can walk straight out of the box
+ local yaw = 0;
+ local param2 = node2.param2;
+ if( param2==0 ) then
+ yaw = 180;
+ elseif( param2==1 ) then
+ yaw = 90;
+ elseif( param2==2 ) then
+ yaw = 0;
+ elseif( param2==3 ) then
+ yaw = 270;
+ end
+
+ player:set_look_yaw( math.rad( yaw )); -- this is only supported in recent versions of MT
+ player:set_look_pitch( math.rad( 0 )); -- this is only supported in recent versions of MT
+ end
+
+ travelnet.open_close_door( target_pos, player, 2 );
+end
+
+
+travelnet.remove_box = function( pos, oldnode, oldmetadata, digger )
+
+ if( not( oldmetadata ) or oldmetadata=="nil" or not(oldmetadata.fields)) then
+ minetest.chat_send_player( digger:get_player_name(), "Error: Could not find information about the station that is to be removed.");
+ return;
+ end
+
+ local owner_name = oldmetadata.fields[ "owner" ];
+ local station_name = oldmetadata.fields[ "station_name" ];
+ local station_network = oldmetadata.fields[ "station_network" ];
+
+ -- station is not known? then just remove it
+ if( not( owner_name )
+ or not( station_name )
+ or not( station_network )
+ or not( travelnet.targets[ owner_name ] )
+ or not( travelnet.targets[ owner_name ][ station_network ] )) then
+
+ minetest.chat_send_player( digger:get_player_name(), "Error: Could not find the station that is to be removed.");
+ return;
+ end
+
+ travelnet.targets[ owner_name ][ station_network ][ station_name ] = nil;
+
+ -- inform the owner
+ minetest.chat_send_player( owner_name, "Station '"..station_name.."' has been REMOVED from the network '"..station_network.."'.");
+ if( digger ~= nil and owner_name ~= digger:get_player_name() ) then
+ minetest.chat_send_player( digger:get_player_name(), "Station '"..station_name.."' has been REMOVED from the network '"..station_network.."'.");
+ end
+
+ -- save the updated network data in a savefile over server restart
+ travelnet.save_data();
+end
+
+
+
+travelnet.can_dig = function( pos, player, description )
+
+ if( not( player )) then
+ return false;
+ end
+ local name = player:get_player_name();
+
+ -- players with that priv can dig regardless of owner
+ if( minetest.check_player_privs(name, {travelnet_remove=true})
+ or travelnet.allow_dig( player_name, owner_name, network_name )) then
+ return true;
+ end
+
+ local meta = minetest.get_meta( pos );
+ local owner = meta:get_string('owner');
+
+ if( not( meta ) or not( owner) or owner=='') then
+ minetest.chat_send_player(name, "This "..description.." has not been configured yet. Please set it up first to claim it. Afterwards you can remove it because you are then the owner.");
+ return false;
+
+ elseif( owner ~= name ) then
+ minetest.chat_send_player(name, "This "..description.." belongs to "..tostring( meta:get_string('owner'))..". You can't remove it.");
+ return false;
+ end
+ return true;
+end
+
+
+
+
+
+if( travelnet.travelnet_effect_enabled ) then
+ minetest.register_entity( 'travelnet:effect', {
+
+ hp_max = 1,
+ physical = false,
+ weight = 5,
+ collisionbox = {-0.4,-0.5,-0.4, 0.4,1.5,0.4},
+ visual = "upright_sprite",
+ visual_size = {x=1, y=2},
+-- mesh = "model",
+ textures = { "travelnet_flash.png" }, -- number of required textures depends on visual
+-- colors = {}, -- number of required colors depends on visual
+ spritediv = {x=1, y=1},
+ initial_sprite_basepos = {x=0, y=0},
+ is_visible = true,
+ makes_footstep_sound = false,
+ automatic_rotate = true,
+
+ anz_rotations = 0,
+
+ on_step = function( self, dtime )
+ -- this is supposed to be more flickering than smooth animation
+ self.object:setyaw( self.object:getyaw()+1);
+ self.anz_rotations = self.anz_rotations + 1;
+ -- eventually self-destruct
+ if( self.anz_rotations > 15 ) then
+ self.object:remove();
+ end
+ end
+ })
+end
+
+
+if( travelnet.travelnet_enabled ) then
+ dofile(minetest.get_modpath("travelnet").."/travelnet.lua"); -- the travelnet node definition
+end
+if( travelnet.elevator_enabled ) then
+ dofile(minetest.get_modpath("travelnet").."/elevator.lua"); -- allows up/down transfers only
+end
+if( travelnet.doors_enabled ) then
+ dofile(minetest.get_modpath("travelnet").."/doors.lua"); -- doors that open and close automaticly when the travelnet or elevator is used
+end
+
+if( travelnet.abm_enabled ) then
+ dofile(minetest.get_modpath("travelnet").."/restore_network_via_abm.lua"); -- restore travelnet data when players pass by broken networks
+end
+
+-- upon server start, read the savefile
+travelnet.restore_data();
+
diff --git a/travelnet/models/travelnet.obj b/travelnet/models/travelnet.obj
new file mode 100644
index 0000000..50e5afd
--- /dev/null
+++ b/travelnet/models/travelnet.obj
@@ -0,0 +1,63 @@
+# Blender v2.73 (sub 0) OBJ File: 'travelnet.blend'
+# www.blender.org
+o Cylinder
+v -0.499016 -0.499034 0.499022
+v -0.499016 -0.499034 -0.498989
+v 0.499035 -0.499034 -0.498989
+v 0.499035 -0.499034 0.499022
+v -0.499016 1.498990 0.499022
+v -0.499016 1.498990 -0.498989
+v 0.499035 1.498990 -0.498989
+v 0.499035 1.498990 0.499022
+v 0.437500 -0.437500 0.437500
+v -0.499016 1.437500 -0.498989
+v 0.499035 1.437500 -0.498989
+v -0.437500 -0.437500 0.437500
+v 0.437500 1.437500 0.437500
+v -0.499016 -0.437500 -0.498989
+v 0.499035 -0.437500 -0.498989
+v -0.437500 1.437500 0.437500
+v -0.437500 -0.437500 -0.498989
+v 0.437500 -0.437500 -0.498989
+v -0.437500 1.437500 -0.498989
+v 0.437500 1.437500 -0.498989
+vt 0.000000 0.968750
+vt 1.000000 0.968750
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.062500 0.031250
+vt 0.062500 0.968750
+vt 0.000000 0.031250
+vt 0.937500 0.031250
+vt 1.000000 0.031250
+vt 0.937500 0.968750
+vt 1.000000 -0.000000
+vt 0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.937500 -0.000000
+vt 0.937500 0.937500
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 1.000000
+g Cylinder_Cylinder_front
+s off
+f 11/1 10/2 6/3 7/4
+f 18/5 20/6 11/1 15/7
+f 17/8 14/9 10/2 19/10
+f 13/6 9/5 12/8 16/10
+f 2/11 14/9 15/7 3/12
+g Cylinder_Cylinder_back
+f 8/4 5/3 1/11 4/12
+g Cylinder_Cylinder_sides
+f 18/7 9/8 13/10 20/1
+f 17/7 19/1 16/10 12/8
+f 8/3 4/11 3/12 7/4
+f 6/4 2/12 1/11 5/3
+g Cylinder_Cylinder_top
+f 5/12 8/11 7/3 6/4
+f 19/13 20/14 13/15 16/16
+g Cylinder_Cylinder_bottom
+f 17/17 12/18 9/19 18/20
+f 2/12 3/11 4/3 1/4
diff --git a/travelnet/models/travelnet_elevator.obj b/travelnet/models/travelnet_elevator.obj
new file mode 100644
index 0000000..cc006e2
--- /dev/null
+++ b/travelnet/models/travelnet_elevator.obj
@@ -0,0 +1,64 @@
+# Blender v2.73 (sub 0) OBJ File: 'travelnet_elevator.blend'
+# www.blender.org
+o Cylinder
+v -0.499016 -0.499034 0.499022
+v -0.499016 -0.499034 -0.498989
+v 0.499035 -0.499034 -0.498989
+v 0.499035 -0.499034 0.499022
+v -0.499016 1.498990 0.499022
+v -0.499016 1.498990 -0.498989
+v 0.499035 1.498990 -0.498989
+v 0.499035 1.498990 0.499022
+v 0.437500 -0.437500 0.437500
+v -0.499016 1.437500 -0.498989
+v 0.499035 1.437500 -0.498989
+v -0.437500 -0.437500 0.437500
+v 0.437500 1.437500 0.437500
+v -0.499016 -0.437500 -0.498989
+v 0.499035 -0.437500 -0.498989
+v -0.437500 1.437500 0.437500
+v -0.437500 -0.437500 -0.498989
+v 0.437500 -0.437500 -0.498989
+v -0.437500 1.437500 -0.498989
+v 0.437500 1.437500 -0.498989
+vt 0.000000 0.968750
+vt 1.000000 0.968750
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.062500 0.031250
+vt 0.062500 0.968750
+vt 0.000000 0.031250
+vt 0.937500 0.031250
+vt 1.000000 0.031250
+vt 0.937500 0.968750
+vt 1.000000 -0.000000
+vt 0.000000 -0.000000
+vt 0.062500 -0.000000
+vt 0.937500 -0.000000
+vt 0.937500 0.937500
+vt 0.062500 0.937500
+vt 0.062500 1.000000
+vt 0.062500 0.062500
+vt 0.937500 0.062500
+vt 0.937500 1.000000
+g Cylinder_Cylinder_front
+s off
+f 11/1 10/2 6/3 7/4
+f 18/5 20/6 11/1 15/7
+f 17/8 14/9 10/2 19/10
+f 13/6 9/5 12/8 16/10
+f 2/11 14/9 15/7 3/12
+f 17/7 19/1 16/10 12/8
+g Cylinder_Cylinder_controls
+f 18/7 9/8 13/10 20/1
+g Cylinder_Cylinder_outside
+f 8/3 4/11 3/12 7/4
+f 6/4 2/12 1/11 5/3
+f 8/4 5/3 1/11 4/12
+g Cylinder_Cylinder_ceiling
+f 19/13 20/14 13/15 16/16
+g Cylinder_Cylinder_floor
+f 17/17 12/18 9/19 18/20
+g Cylinder_Cylinder_top-bottom
+f 5/12 8/11 7/3 6/4
+f 2/12 3/11 4/3 1/4
diff --git a/travelnet/restore_network_via_abm.lua b/travelnet/restore_network_via_abm.lua
new file mode 100644
index 0000000..3bd1dda
--- /dev/null
+++ b/travelnet/restore_network_via_abm.lua
@@ -0,0 +1,24 @@
+
+minetest.register_abm({
+ nodenames = {"travelnet:travelnet"},
+ interval = 20,
+ chance = 1,
+ action = function(pos, node)
+ local meta = minetest.get_meta( pos );
+
+ local owner_name = meta:get_string( "owner" );
+ local station_name = meta:get_string( "station_name" );
+ local station_network = meta:get_string( "station_network" );
+
+ if( owner_name and station_name and station_network
+ and ( not( travelnet.targets )
+ or not( travelnet.targets[ owner_name ] )
+ or not( travelnet.targets[ owner_name ][ station_network ] )
+ or not( travelnet.targets[ owner_name ][ station_network ][ station_name ] ))) then
+
+ travelnet.add_target( station_name, station_network, pos, owner_name, meta, owner_name );
+ print( 'TRAVELNET: re-adding '..tostring( station_name )..' to '..tostring( station_network )..' owned by '..tostring( owner_name ));
+ end
+ end
+})
+
diff --git a/travelnet/textures/travelnet_elevator_door_glass.png b/travelnet/textures/travelnet_elevator_door_glass.png
new file mode 100644
index 0000000..ae775c4
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_door_glass.png
Binary files differ
diff --git a/travelnet/textures/travelnet_elevator_front.png b/travelnet/textures/travelnet_elevator_front.png
new file mode 100644
index 0000000..60ec49e
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_front.png
Binary files differ
diff --git a/travelnet/textures/travelnet_elevator_inside_ceiling.png b/travelnet/textures/travelnet_elevator_inside_ceiling.png
new file mode 100644
index 0000000..f35dd07
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_inside_ceiling.png
Binary files differ
diff --git a/travelnet/textures/travelnet_elevator_inside_controls.png b/travelnet/textures/travelnet_elevator_inside_controls.png
new file mode 100644
index 0000000..725c39b
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_inside_controls.png
Binary files differ
diff --git a/travelnet/textures/travelnet_elevator_inside_floor.png b/travelnet/textures/travelnet_elevator_inside_floor.png
new file mode 100644
index 0000000..7874bac
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_inside_floor.png
Binary files differ
diff --git a/travelnet/textures/travelnet_elevator_inv.png b/travelnet/textures/travelnet_elevator_inv.png
new file mode 100644
index 0000000..a390d75
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_inv.png
Binary files differ
diff --git a/travelnet/textures/travelnet_elevator_sides_outside.png b/travelnet/textures/travelnet_elevator_sides_outside.png
new file mode 100644
index 0000000..82c0a03
--- /dev/null
+++ b/travelnet/textures/travelnet_elevator_sides_outside.png
Binary files differ
diff --git a/travelnet/textures/travelnet_flash.png b/travelnet/textures/travelnet_flash.png
new file mode 100644
index 0000000..47a6365
--- /dev/null
+++ b/travelnet/textures/travelnet_flash.png
Binary files differ
diff --git a/travelnet/textures/travelnet_inv.png b/travelnet/textures/travelnet_inv.png
new file mode 100644
index 0000000..6f7df22
--- /dev/null
+++ b/travelnet/textures/travelnet_inv.png
Binary files differ
diff --git a/travelnet/textures/travelnet_travelnet_back.png b/travelnet/textures/travelnet_travelnet_back.png
new file mode 100644
index 0000000..f08c9eb
--- /dev/null
+++ b/travelnet/textures/travelnet_travelnet_back.png
Binary files differ
diff --git a/travelnet/textures/travelnet_travelnet_front.png b/travelnet/textures/travelnet_travelnet_front.png
new file mode 100644
index 0000000..2b0c3a2
--- /dev/null
+++ b/travelnet/textures/travelnet_travelnet_front.png
Binary files differ
diff --git a/travelnet/textures/travelnet_travelnet_side.png b/travelnet/textures/travelnet_travelnet_side.png
new file mode 100644
index 0000000..bd6092e
--- /dev/null
+++ b/travelnet/textures/travelnet_travelnet_side.png
Binary files differ
diff --git a/travelnet/travelnet.lua b/travelnet/travelnet.lua
new file mode 100644
index 0000000..5d6f284
--- /dev/null
+++ b/travelnet/travelnet.lua
@@ -0,0 +1,99 @@
+-- contains the node definition for a general travelnet that can be used by anyone
+-- further travelnets can only be installed by the owner or by people with the travelnet_attach priv
+-- digging of such a travelnet is limited to the owner and to people with the travelnet_remove priv (useful for admins to clean up)
+-- (this can be overrided in config.lua)
+-- Autor: Sokomine
+minetest.register_node("travelnet:travelnet", {
+
+ description = "Travelnet box",
+
+ drawtype = "mesh",
+ mesh = "travelnet.obj",
+ sunlight_propagates = true,
+ paramtype = 'light',
+ paramtype2 = "facedir",
+ wield_scale = {x=0.6, y=0.6, z=0.6},
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
+ },
+
+ collision_box = {
+ type = "fixed",
+ fixed = {
+
+ { 0.45, -0.5,-0.5, 0.5, 1.45, 0.5},
+ {-0.5 , -0.5, 0.45, 0.45, 1.45, 0.5},
+ {-0.5, -0.5,-0.5 ,-0.45, 1.45, 0.5},
+
+ --groundplate to stand on
+ { -0.5,-0.5,-0.5,0.5,-0.45, 0.5},
+ --roof
+ { -0.5, 1.45,-0.5,0.5, 1.5, 0.5},
+
+ -- control panel
+ -- { -0.2, 0.6, 0.3, 0.2, 1.1, 0.5},
+
+ },
+ },
+
+ tiles = {
+ "travelnet_travelnet_front.png", -- backward view
+ "travelnet_travelnet_back.png", -- front view
+ "travelnet_travelnet_side.png", -- sides :)
+ "default_steel_block.png", -- view from top
+ "default_clay.png", -- view from bottom
+ },
+ inventory_image = "travelnet_inv.png",
+
+ groups = {cracky=1,choppy=1,snappy=1},
+
+ light_source = 10,
+
+ after_place_node = function(pos, placer, itemstack)
+ local meta = minetest.get_meta(pos);
+ meta:set_string("infotext", "Travelnet-box (unconfigured)");
+ meta:set_string("station_name", "");
+ meta:set_string("station_network","");
+ meta:set_string("owner", placer:get_player_name() );
+ -- request initinal data
+ meta:set_string("formspec",
+ "size[12,10]"..
+ "field[0.3,5.6;6,0.7;station_name;Name of this station:;]"..
+ "field[0.3,6.6;6,0.7;station_network;Assign to Network:;]"..
+ "field[0.3,7.6;6,0.7;owner_name;(optional) owned by:;]"..
+ "button_exit[6.3,6.2;1.7,0.7;station_set;Store]" );
+ end,
+
+ on_receive_fields = travelnet.on_receive_fields,
+ on_punch = function(pos, node, puncher)
+ travelnet.update_formspec(pos, puncher:get_player_name())
+ end,
+
+ can_dig = function( pos, player )
+ return travelnet.can_dig( pos, player, 'travelnet box' )
+ end,
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ travelnet.remove_box( pos, oldnode, oldmetadata, digger )
+ end,
+
+ -- taken from VanessaEs homedecor fridge
+ on_place = function(itemstack, placer, pointed_thing)
+
+ local pos = pointed_thing.above;
+ if( minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" ) then
+
+ minetest.chat_send_player( placer:get_player_name(), 'Not enough vertical space to place the travelnet box!' )
+ return;
+ end
+ return minetest.item_place(itemstack, placer, pointed_thing);
+ end,
+
+})
+
+--[
+minetest.register_craft({
+ output = "travelnet:travelnet",
+ recipe = travelnet.travelnet_recipe,
+})
diff --git a/ufos/README.txt b/ufos/README.txt
new file mode 100644
index 0000000..74eb515
--- /dev/null
+++ b/ufos/README.txt
@@ -0,0 +1,8 @@
+minetest-ufos
+=============
+
+UFOs mod for minetest
+License: WTFPL
+Credits:
+ - Zeg9 for code
+ - Melkor for model and texture
diff --git a/ufos/modpack.txt b/ufos/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ufos/modpack.txt
diff --git a/ufos/ufos/depends.txt b/ufos/ufos/depends.txt
new file mode 100644
index 0000000..4ad96d5
--- /dev/null
+++ b/ufos/ufos/depends.txt
@@ -0,0 +1 @@
+default
diff --git a/ufos/ufos/furnace.lua b/ufos/ufos/furnace.lua
new file mode 100644
index 0000000..6e3d2a1
--- /dev/null
+++ b/ufos/ufos/furnace.lua
@@ -0,0 +1,105 @@
+
+ufos.fuel = "default:obsidian_shard"
+ufos.fuel_time = 10
+
+ufos.furnace_inactive_formspec =
+ "size[8,5.5]"..
+ "list[current_name;fuel;3.5,0;1,1;]"..
+ "list[current_player;main;0,1.5;8,4;]"..
+ "label[4.5,0;Fuel needed: "..ufos.fuel.."]"..
+ "label[0,1;Press run (E) inside your UFO.]"..
+ "label[4,1;You need to park it next to this.]"
+
+
+minetest.register_node("ufos:furnace", {
+ description = "UFO charging device",
+ tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png",
+ "default_steel_block.png", "default_steel_block.png", "default_steel_block.png^ufos_furnace_front.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.env:get_meta(pos)
+ meta:set_string("formspec", ufos.furnace_inactive_formspec)
+ meta:set_string("infotext", "UFO charging device")
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ end
+ return true
+ end,
+})
+
+minetest.register_node("ufos:furnace_active", {
+ description = "UFO charging device",
+ tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png",
+ "default_steel_block.png", "default_steel_block.png", "default_steel_block.png^ufos_furnace_front.png^ufos_furnace_front_active.png"},
+ paramtype2 = "facedir",
+ light_source = 8,
+ drop = "ufos:furnace",
+ groups = {cracky=2, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.env:get_meta(pos)
+ meta:set_string("formspec", ufos.furnace_inactive_formspec)
+ meta:set_string("infotext", "UFO charging device")
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.env:get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ end
+ return true
+ end,
+})
+
+function hacky_swap_node(pos,name)
+ local node = minetest.env:get_node(pos)
+ local meta = minetest.env:get_meta(pos)
+ local meta0 = meta:to_table()
+ if node.name == name then
+ return
+ end
+ node.name = name
+ local meta0 = meta:to_table()
+ minetest.env:set_node(pos,node)
+ meta = minetest.env:get_meta(pos)
+ meta:from_table(meta0)
+end
+
+minetest.register_abm({
+ nodenames = {"ufos:furnace","ufos:furnace_active"},
+ interval = .25,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.env:get_meta(pos)
+ local inv = meta:get_inventory()
+ local stack = inv:get_stack("fuel",1)
+ if stack:get_name() == ufos.fuel then
+ inv:remove_item("fuel",ItemStack(ufos.fuel))
+ meta:set_int("charge",meta:get_int("charge")+1)
+ meta:set_string("formspec", ufos.furnace_inactive_formspec
+ .. "label[0,0;Charge: "..meta:get_int("charge"))
+ end
+ end,
+})
+
+minetest.register_craft( {
+ output = 'ufos:furnace',
+ recipe = {
+ { "default:steel_ingot", "default:obsidian", "default:steel_ingot"},
+ { "default:obsidian", "default:furnace", "default:obsidian"},
+ { "default:steel_ingot", "default:obsidian", "default:steel_ingot"},
+ },
+})
+
diff --git a/ufos/ufos/init.lua b/ufos/ufos/init.lua
new file mode 100644
index 0000000..cb68e65
--- /dev/null
+++ b/ufos/ufos/init.lua
@@ -0,0 +1,255 @@
+
+ufos = {}
+
+local floor_pos = function(pos)
+ return {x=math.floor(pos.x),y=math.floor(pos.y),z=math.floor(pos.z)}
+end
+
+local UFO_SPEED = 1
+local UFO_TURN_SPEED = 2
+local UFO_MAX_SPEED = 10
+local UFO_FUEL_USE = .01
+
+ufos.fuel_from_wear = function(wear)
+ local fuel
+ if wear == 0 then
+ fuel = 0
+ else
+ fuel = (65535-(wear-1))*100/65535
+ end
+ return fuel
+end
+
+ufos.wear_from_fuel = function(fuel)
+ local wear = (100-(fuel))*65535/100+1
+ if wear > 65535 then wear = 0 end
+ return wear
+end
+
+ufos.get_fuel = function(self)
+ return self.fuel
+end
+
+ufos.set_fuel = function(self,fuel,object)
+ self.fuel = fuel
+end
+
+ufos.ufo_to_item = function(self)
+ local wear = ufos.wear_from_fuel(ufos.get_fuel(self))
+ return {name="ufos:ufo",wear=wear}
+end
+
+ufos.ufo_from_item = function(itemstack,placer,pointed_thing)
+ -- set owner
+ ufos.next_owner = placer:get_player_name()
+ -- restore the fuel inside the item
+ local wear = itemstack:get_wear()
+ ufos.set_fuel(ufos.ufo,ufos.fuel_from_wear(wear))
+ -- add the entity
+ e = minetest.env:add_entity(pointed_thing.above, "ufos:ufo")
+ -- remove the item
+ itemstack:take_item()
+ -- reset owner for next ufo
+ ufos.next_owner = ""
+end
+
+ufos.check_owner = function(self, clicker)
+ if self.owner_name ~= "" and clicker:get_player_name() ~= self.owner_name then
+ minetest.chat_send_player(clicker:get_player_name(), "This UFO is owned by "..self.owner_name.." !")
+ return false
+ elseif self.owner_name == "" then
+ minetest.chat_send_player(clicker:get_player_name(), "This UFO was not protected, you are now its owner !")
+ self.owner_name = clicker:get_player_name()
+ end
+ return true
+end
+
+
+ufos.next_owner = ""
+ufos.ufo = {
+ physical = true,
+ collisionbox = {-1.5,-.5,-1.5, 1.5,2,1.5},
+ visual = "mesh",
+ mesh = "ufo.x",
+ textures = {"ufo_0.png"},
+
+ driver = nil,
+ owner_name = "",
+ v = 0,
+ fuel = 0,
+ fueli = 0
+}
+function ufos.ufo:on_rightclick (clicker)
+ if not clicker or not clicker:is_player() then
+ return
+ end
+ if self.driver and clicker == self.driver then
+ self.driver = nil
+ clicker:set_detach()
+ elseif not self.driver then
+ if ufos.check_owner(self,clicker) then
+ self.driver = clicker
+ clicker:set_attach(self.object, "", {x=0,y=7.5,z=0}, {x=0,y=0,z=0})
+ end
+ end
+end
+
+function ufos.ufo:on_activate (staticdata, dtime_s)
+ if ufos.next_owner ~= "" then
+ self.owner_name = ufos.next_owner
+ ufos.next_owner = ""
+ else
+ local data = staticdata:split(';')
+ if data and data[1] and data[2] then
+ self.owner_name = data[1]
+ self.fuel = tonumber(data[2])
+ end
+ end
+ self.object:set_armor_groups({immortal=1})
+end
+
+function ufos.ufo:on_punch (puncher, time_from_last_punch, tool_capabilities, direction)
+ if puncher and puncher:is_player() then
+ if ufos.check_owner(self,puncher) then
+ puncher:get_inventory():add_item("main", ufos.ufo_to_item(self))
+ self.object:remove()
+ end
+ end
+end
+
+function ufos.ufo:on_step (dtime)
+ local fuel = ufos.get_fuel(self)
+ if self.driver then
+ local ctrl = self.driver:get_player_control()
+ local vel = self.object:getvelocity()
+ if fuel == nil then fuel = 0 end
+ if fuel > 0 and ctrl.up then
+ vel.x = vel.x + math.cos(self.object:getyaw()+math.pi/2)*UFO_SPEED
+ vel.z = vel.z + math.sin(self.object:getyaw()+math.pi/2)*UFO_SPEED
+ fuel = fuel - UFO_FUEL_USE
+ else
+ vel.x = vel.x*.99
+ vel.z = vel.z*.99
+ end
+ if ctrl.down then
+ vel.x = vel.x*.9
+ vel.z = vel.z*.9
+ end
+ if fuel > 0 and ctrl.jump then
+ vel.y = vel.y+UFO_SPEED
+ fuel = fuel - UFO_FUEL_USE
+ elseif fuel > 0 and ctrl.sneak then
+ vel.y = vel.y-UFO_SPEED
+ fuel = fuel - UFO_FUEL_USE
+ else
+ vel.y = vel.y*.9
+ end
+ if vel.x > UFO_MAX_SPEED then vel.x = UFO_MAX_SPEED end
+ if vel.x < -UFO_MAX_SPEED then vel.x = -UFO_MAX_SPEED end
+ if vel.y > UFO_MAX_SPEED then vel.y = UFO_MAX_SPEED end
+ if vel.y < -UFO_MAX_SPEED then vel.y = -UFO_MAX_SPEED end
+ if vel.z > UFO_MAX_SPEED then vel.z = UFO_MAX_SPEED end
+ if vel.z < -UFO_MAX_SPEED then vel.z = -UFO_MAX_SPEED end
+ self.object:setvelocity(vel)
+ if ctrl.left then
+ self.object:setyaw(self.object:getyaw()+math.pi/120*UFO_TURN_SPEED)
+ end
+ if ctrl.right then
+ self.object:setyaw(self.object:getyaw()-math.pi/120*UFO_TURN_SPEED)
+ end
+ if ctrl.aux1 then
+ local pos = self.object:getpos()
+ local t = {{x=2,z=0},{x=-2,z=0},{x=0,z=2},{x=0,z=-2}}
+ for _, i in ipairs(t) do
+ pos.x = pos.x + i.x; pos.z = pos.z + i.z;
+ if minetest.env:get_node(pos).name == "ufos:furnace" then
+ meta = minetest.env:get_meta(pos)
+ if fuel < 100 and meta:get_int("charge") > 0 then
+ fuel = fuel + 1
+ meta:set_int("charge",meta:get_int("charge")-1)
+ meta:set_string("formspec", ufos.furnace_inactive_formspec
+ .. "label[0,0;Charge: "..meta:get_int("charge"))
+ end
+ end
+ pos.x = pos.x - i.x; pos.z = pos.z - i.z;
+ end
+ end
+ end
+
+ if fuel < 0 then fuel = 0 end
+ if fuel > 100 then fuel = 100 end
+ if self.fueli ~= math.floor(fuel*8/100) then
+ self.fueli = math.floor(fuel*8/100)
+ print(self.fueli)
+ self.textures = {"ufo_"..self.fueli..".png"}
+ self.object:set_properties(self)
+ end
+ ufos.set_fuel(self,fuel)
+end
+
+function ufos.ufo:get_staticdata()
+ return self.owner_name..";"..tostring(self.fuel)
+end
+
+minetest.register_entity("ufos:ufo", ufos.ufo)
+
+
+minetest.register_tool("ufos:ufo", {
+ description = "ufo",
+ inventory_image = "ufos_inventory.png",
+ wield_image = "ufos_inventory.png",
+ tool_capabilities = {load=0,max_drop_level=0, groupcaps={fleshy={times={}, uses=100, maxlevel=0}}},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return
+ end
+
+ -- Call on_rightclick if the pointed node defines it
+ if placer and not placer:get_player_control().sneak then
+ local n = minetest.get_node(pointed_thing.under)
+ local nn = n.name
+ if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
+ return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer, itemstack) or itemstack
+ end
+ end
+
+ ufos.ufo_from_item(itemstack,placer,pointed_thing)
+ return itemstack
+ end,
+})
+
+minetest.register_craft( {
+ output = 'ufos:ufo',
+ recipe = {
+ { "", "default:glass", ""},
+ { "default:mese_crystal_fragment", "", "default:mese_crystal_fragment"},
+ { "default:steelblock", "default:mese", "default:steelblock"},
+ },
+})
+
+
+-- ufos box kept for compatibility only
+minetest.register_node("ufos:box", {
+ description = "UFO BOX (you hacker you!)",
+ tiles = {"ufos_box.png"},
+ groups = {not_in_creative_inventory=1},
+ on_rightclick = function(pos, node, clicker, itemstack)
+ meta = minetest.env:get_meta(pos)
+ if meta:get_string("owner") == clicker:get_player_name() then
+ -- set owner
+ ufos.next_owner = meta:get_string("owner")
+ -- restore the fuel inside the node
+ ufos.set_fuel(ufos.ufo,meta:get_int("fuel"))
+ -- add the entity
+ e = minetest.env:add_entity(pos, "ufos:ufo")
+ -- remove the node
+ minetest.env:remove_node(pos)
+ -- reset owner for next ufo
+ ufos.next_owner = ""
+ end
+ end,
+})
+
+dofile(minetest.get_modpath("ufos").."/furnace.lua")
+
diff --git a/ufos/ufos/models/ufo.blend b/ufos/ufos/models/ufo.blend
new file mode 100644
index 0000000..fe187c3
--- /dev/null
+++ b/ufos/ufos/models/ufo.blend
Binary files differ
diff --git a/ufos/ufos/models/ufo.png b/ufos/ufos/models/ufo.png
new file mode 100644
index 0000000..82689fe
--- /dev/null
+++ b/ufos/ufos/models/ufo.png
Binary files differ
diff --git a/ufos/ufos/models/ufo.x b/ufos/ufos/models/ufo.x
new file mode 100644
index 0000000..e360d91
--- /dev/null
+++ b/ufos/ufos/models/ufo.x
@@ -0,0 +1,2252 @@
+xof 0303txt 0032
+
+Frame Root {
+ FrameTransformMatrix {
+ 1.000000, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 1.000000, 0.000000,
+ 0.000000, 1.000000,-0.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Frame Cube_002 {
+ FrameTransformMatrix {
+ 0.000000,-10.171859, 0.000000, 0.000000,
+ 10.171859, 0.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000,10.171859, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Mesh { //Cube_000 Mesh
+ 632;
+ 1.125000; 0.500000; 0.125000;,
+ 1.125000;-0.500000; 0.125000;,
+ 1.125000;-0.500000; 0.312500;,
+ 1.125000; 0.500000; 0.312500;,
+ 0.500000; 0.500000; 0.125000;,
+ 1.125000; 0.500000; 0.125000;,
+ 1.125000; 0.500000; 0.312500;,
+ 0.500000; 0.500000; 0.312500;,
+ 1.125000; 0.500000; 0.687500;,
+ 1.125000;-0.500000; 0.687500;,
+ 1.125000;-0.500000; 1.000000;,
+ 1.125000; 0.500000; 1.000000;,
+ 1.500000; 0.500000; 0.312500;,
+ 1.500000; 0.500000; 0.687500;,
+ 1.125000; 0.500000; 0.687500;,
+ 1.125000; 0.500000; 0.312500;,
+ 1.500000; 0.500000; 0.312500;,
+ 1.500000;-0.500000; 0.312500;,
+ 1.500000;-0.500000; 0.687500;,
+ 1.500000; 0.500000; 0.687500;,
+ 1.500000; 0.500000; 0.687500;,
+ 1.500000;-0.500000; 0.687500;,
+ 1.125000;-0.500000; 0.687500;,
+ 1.125000; 0.500000; 0.687500;,
+ 1.500000;-0.500000; 0.687500;,
+ 1.500000;-0.500000; 0.312500;,
+ 1.125000;-0.500000; 0.312500;,
+ 1.125000;-0.500000; 0.687500;,
+ 1.500000;-0.500000; 0.312500;,
+ 1.500000; 0.500000; 0.312500;,
+ 1.125000; 0.500000; 0.312500;,
+ 1.125000;-0.500000; 0.312500;,
+ -1.125000;-0.500000; 0.125000;,
+ -1.125000; 0.500000; 0.125000;,
+ -1.125000; 0.500000; 0.312500;,
+ -1.125000;-0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.125000;,
+ -1.125000;-0.500000; 0.125000;,
+ -1.125000;-0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.125000;,
+ -1.125000; 0.500000; 0.125000;,
+ -1.125000;-0.500000; 0.125000;,
+ -1.125000;-0.500000; 0.687500;,
+ -1.125000; 0.500000; 0.687500;,
+ -1.125000; 0.500000; 1.000000;,
+ -1.125000;-0.500000; 1.000000;,
+ -1.500000;-0.500000; 0.312500;,
+ -1.500000;-0.500000; 0.687500;,
+ -1.125000;-0.500000; 0.687500;,
+ -1.125000;-0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.687500;,
+ -1.125000;-0.500000; 0.687500;,
+ -1.125000;-0.500000; 1.000000;,
+ -0.500000;-0.500000; 1.000000;,
+ -1.500000;-0.500000; 0.312500;,
+ -1.500000; 0.500000; 0.312500;,
+ -1.500000; 0.500000; 0.687500;,
+ -1.500000;-0.500000; 0.687500;,
+ -1.500000;-0.500000; 0.687500;,
+ -1.500000; 0.500000; 0.687500;,
+ -1.125000; 0.500000; 0.687500;,
+ -1.125000;-0.500000; 0.687500;,
+ -1.500000; 0.500000; 0.687500;,
+ -1.500000; 0.500000; 0.312500;,
+ -1.125000; 0.500000; 0.312500;,
+ -1.125000; 0.500000; 0.687500;,
+ -1.500000; 0.500000; 0.312500;,
+ -1.500000;-0.500000; 0.312500;,
+ -1.125000;-0.500000; 0.312500;,
+ -1.125000; 0.500000; 0.312500;,
+ 0.500000;-1.125000; 0.125000;,
+ -0.500000;-1.125000; 0.125000;,
+ -0.500000;-1.125000; 0.312500;,
+ 0.500000;-1.125000; 0.312500;,
+ 0.500000;-0.500000; 0.125000;,
+ 0.500000;-1.125000; 0.125000;,
+ 0.500000;-1.125000; 0.312500;,
+ 0.500000;-0.500000; 0.312500;,
+ 0.500000;-1.125000; 0.687500;,
+ -0.500000;-1.125000; 0.687500;,
+ -0.500000;-1.125000; 1.000000;,
+ 0.500000;-1.125000; 1.000000;,
+ 0.500000;-1.500000; 0.312500;,
+ 0.500000;-1.500000; 0.687500;,
+ 0.500000;-1.125000; 0.687500;,
+ 0.500000;-1.125000; 0.312500;,
+ 0.500000;-0.500000; 0.687500;,
+ 0.500000;-1.125000; 0.687500;,
+ 0.500000;-1.125000; 1.000000;,
+ 0.500000;-0.500000; 1.000000;,
+ 0.500000;-1.500000; 0.312500;,
+ -0.500000;-1.500000; 0.312500;,
+ -0.500000;-1.500000; 0.687500;,
+ 0.500000;-1.500000; 0.687500;,
+ 0.500000;-1.500000; 0.687500;,
+ -0.500000;-1.500000; 0.687500;,
+ -0.500000;-1.125000; 0.687500;,
+ 0.500000;-1.125000; 0.687500;,
+ -0.500000;-1.500000; 0.687500;,
+ -0.500000;-1.500000; 0.312500;,
+ -0.500000;-1.125000; 0.312500;,
+ -0.500000;-1.125000; 0.687500;,
+ -0.500000;-1.500000; 0.312500;,
+ 0.500000;-1.500000; 0.312500;,
+ 0.500000;-1.125000; 0.312500;,
+ -0.500000;-1.125000; 0.312500;,
+ -0.500000; 1.125000; 0.125000;,
+ 0.500000; 1.125000; 0.125000;,
+ 0.500000; 1.125000; 0.312500;,
+ -0.500000; 1.125000; 0.312500;,
+ -0.500000; 1.125000; 0.687500;,
+ 0.500000; 1.125000; 0.687500;,
+ 0.500000; 1.125000; 1.000000;,
+ -0.500000; 1.125000; 1.000000;,
+ -0.500000; 1.500000; 0.312500;,
+ -0.500000; 1.500000; 0.687500;,
+ -0.500000; 1.125000; 0.687500;,
+ -0.500000; 1.125000; 0.312500;,
+ -0.500000; 1.500000; 0.312500;,
+ 0.500000; 1.500000; 0.312500;,
+ 0.500000; 1.500000; 0.687500;,
+ -0.500000; 1.500000; 0.687500;,
+ -0.500000; 1.500000; 0.687500;,
+ 0.500000; 1.500000; 0.687500;,
+ 0.500000; 1.125000; 0.687500;,
+ -0.500000; 1.125000; 0.687500;,
+ 0.500000; 1.500000; 0.687500;,
+ 0.500000; 1.500000; 0.312500;,
+ 0.500000; 1.125000; 0.312500;,
+ 0.500000; 1.125000; 0.687500;,
+ 0.500000; 1.500000; 0.312500;,
+ -0.500000; 1.500000; 0.312500;,
+ -0.500000; 1.125000; 0.312500;,
+ 0.500000; 1.125000; 0.312500;,
+ -1.125000;-0.500000; 0.687500;,
+ -1.125000;-1.125000; 0.687500;,
+ -1.125000;-1.125000; 0.312500;,
+ -1.125000;-0.500000; 0.312500;,
+ -1.125000;-1.125000; 0.687500;,
+ -0.500000;-1.125000; 0.687500;,
+ -0.500000;-1.125000; 0.312500;,
+ -1.125000;-1.125000; 0.312500;,
+ -1.125000; 1.125000; 0.312500;,
+ -1.125000; 1.125000; 0.687500;,
+ -1.125000; 0.500000; 0.687500;,
+ -1.125000; 0.500000; 0.312500;,
+ -1.125000; 1.125000; 0.687500;,
+ -1.125000; 1.125000; 0.312500;,
+ -0.500000; 1.125000; 0.312500;,
+ -0.500000; 1.125000; 0.687500;,
+ 1.125000; 1.125000; 0.312500;,
+ 1.125000; 1.125000; 0.687500;,
+ 0.500000; 1.125000; 0.687500;,
+ 0.500000; 1.125000; 0.312500;,
+ 1.125000; 1.125000; 0.687500;,
+ 1.125000; 1.125000; 0.312500;,
+ 1.125000; 0.500000; 0.312500;,
+ 1.125000; 0.500000; 0.687500;,
+ 1.125000;-1.125000; 0.312500;,
+ 1.125000;-1.125000; 0.687500;,
+ 1.125000;-0.500000; 0.687500;,
+ 1.125000;-0.500000; 0.312500;,
+ 0.500000;-1.125000; 0.687500;,
+ 1.125000;-1.125000; 0.687500;,
+ 1.125000;-1.125000; 0.312500;,
+ 0.500000;-1.125000; 0.312500;,
+ 1.125000;-0.500000; 0.125000;,
+ 0.500000;-0.500000; 0.125000;,
+ 0.500000;-0.500000; 0.312500;,
+ 1.125000;-0.500000; 0.312500;,
+ 0.500000;-0.500000; 0.125000;,
+ 0.500000; 0.500000; 0.125000;,
+ 0.500000; 0.500000; 0.312500;,
+ 0.500000;-0.500000; 0.312500;,
+ 0.500000; 0.500000; 0.125000;,
+ 0.500000;-0.500000; 0.125000;,
+ 1.125000;-0.500000; 0.125000;,
+ 1.125000; 0.500000; 0.125000;,
+ 1.125000; 0.500000; 1.000000;,
+ 1.125000;-0.500000; 1.000000;,
+ 0.500000;-0.500000; 1.000000;,
+ 0.500000; 0.500000; 1.000000;,
+ 1.125000;-0.500000; 0.687500;,
+ 0.500000;-0.500000; 0.687500;,
+ 0.500000;-0.500000; 1.000000;,
+ 1.125000;-0.500000; 1.000000;,
+ 0.500000;-0.500000; 0.687500;,
+ 0.500000; 0.500000; 0.687500;,
+ 0.500000; 0.500000; 1.000000;,
+ 0.500000;-0.500000; 1.000000;,
+ 0.500000;-0.500000; 0.312500;,
+ 0.500000; 0.500000; 0.312500;,
+ 0.500000; 0.500000; 0.687500;,
+ 0.500000;-0.500000; 0.687500;,
+ 0.500000; 0.500000; 0.687500;,
+ 1.125000; 0.500000; 0.687500;,
+ 1.125000; 0.500000; 1.000000;,
+ 0.500000; 0.500000; 1.000000;,
+ -1.125000; 0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.312500;,
+ -1.125000; 0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.125000;,
+ -0.500000;-0.500000; 0.125000;,
+ -0.500000;-0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.312500;,
+ -1.125000;-0.500000; 1.000000;,
+ -1.125000; 0.500000; 1.000000;,
+ -0.500000; 0.500000; 1.000000;,
+ -0.500000;-0.500000; 1.000000;,
+ -1.125000; 0.500000; 0.687500;,
+ -0.500000; 0.500000; 0.687500;,
+ -0.500000; 0.500000; 1.000000;,
+ -1.125000; 0.500000; 1.000000;,
+ -0.500000; 0.500000; 0.687500;,
+ -0.500000;-0.500000; 0.687500;,
+ -0.500000;-0.500000; 1.000000;,
+ -0.500000; 0.500000; 1.000000;,
+ -0.500000; 0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.687500;,
+ -0.500000; 0.500000; 0.687500;,
+ -0.500000;-1.125000; 0.125000;,
+ -0.500000;-0.500000; 0.125000;,
+ -0.500000;-0.500000; 0.312500;,
+ -0.500000;-1.125000; 0.312500;,
+ -0.500000;-0.500000; 0.125000;,
+ 0.500000;-0.500000; 0.125000;,
+ 0.500000;-0.500000; 0.312500;,
+ -0.500000;-0.500000; 0.312500;,
+ 0.500000;-0.500000; 0.125000;,
+ -0.500000;-0.500000; 0.125000;,
+ -0.500000;-1.125000; 0.125000;,
+ 0.500000;-1.125000; 0.125000;,
+ 0.500000;-1.125000; 1.000000;,
+ -0.500000;-1.125000; 1.000000;,
+ -0.500000;-0.500000; 1.000000;,
+ 0.500000;-0.500000; 1.000000;,
+ -0.500000;-1.125000; 0.687500;,
+ -0.500000;-0.500000; 0.687500;,
+ -0.500000;-0.500000; 1.000000;,
+ -0.500000;-1.125000; 1.000000;,
+ -0.500000;-0.500000; 0.687500;,
+ 0.500000;-0.500000; 0.687500;,
+ 0.500000;-0.500000; 1.000000;,
+ -0.500000;-0.500000; 1.000000;,
+ -0.500000;-0.500000; 0.312500;,
+ 0.500000;-0.500000; 0.312500;,
+ 0.500000;-0.500000; 0.687500;,
+ -0.500000;-0.500000; 0.687500;,
+ 0.500000; 1.125000; 0.125000;,
+ 0.500000; 0.500000; 0.125000;,
+ 0.500000; 0.500000; 0.312500;,
+ 0.500000; 1.125000; 0.312500;,
+ 0.500000; 0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.312500;,
+ 0.500000; 0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.125000;,
+ -0.500000; 1.125000; 0.125000;,
+ -0.500000; 1.125000; 0.312500;,
+ -0.500000; 0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.125000;,
+ 0.500000; 0.500000; 0.125000;,
+ 0.500000; 1.125000; 0.125000;,
+ -0.500000; 1.125000; 0.125000;,
+ -0.500000; 1.125000; 1.000000;,
+ 0.500000; 1.125000; 1.000000;,
+ 0.500000; 0.500000; 1.000000;,
+ -0.500000; 0.500000; 1.000000;,
+ 0.500000; 1.125000; 0.687500;,
+ 0.500000; 0.500000; 0.687500;,
+ 0.500000; 0.500000; 1.000000;,
+ 0.500000; 1.125000; 1.000000;,
+ 0.500000; 0.500000; 0.687500;,
+ -0.500000; 0.500000; 0.687500;,
+ -0.500000; 0.500000; 1.000000;,
+ 0.500000; 0.500000; 1.000000;,
+ 0.500000; 0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.687500;,
+ 0.500000; 0.500000; 0.687500;,
+ -0.500000; 0.500000; 0.687500;,
+ -0.500000; 1.125000; 0.687500;,
+ -0.500000; 1.125000; 1.000000;,
+ -0.500000; 0.500000; 1.000000;,
+ -1.125000; 0.500000; 0.687500;,
+ -1.125000; 1.125000; 0.687500;,
+ -0.500000; 1.125000; 0.687500;,
+ -0.500000; 0.500000; 0.687500;,
+ -1.125000;-0.500000; 0.687500;,
+ -0.500000;-0.500000; 0.687500;,
+ -0.500000;-1.125000; 0.687500;,
+ -1.125000;-1.125000; 0.687500;,
+ 0.500000;-0.500000; 0.687500;,
+ 1.125000;-0.500000; 0.687500;,
+ 1.125000;-1.125000; 0.687500;,
+ 0.500000;-1.125000; 0.687500;,
+ 0.500000; 1.125000; 0.687500;,
+ 1.125000; 1.125000; 0.687500;,
+ 1.125000; 0.500000; 0.687500;,
+ 0.500000; 0.500000; 0.687500;,
+ 0.500000; 1.125000; 0.312500;,
+ 0.500000; 0.500000; 0.312500;,
+ 1.125000; 0.500000; 0.312500;,
+ 1.125000; 1.125000; 0.312500;,
+ -1.125000; 0.500000; 0.312500;,
+ -0.500000; 0.500000; 0.312500;,
+ -0.500000; 1.125000; 0.312500;,
+ -1.125000; 1.125000; 0.312500;,
+ -0.500000;-1.125000; 0.312500;,
+ -0.500000;-0.500000; 0.312500;,
+ -1.125000;-0.500000; 0.312500;,
+ -1.125000;-1.125000; 0.312500;,
+ 1.125000;-0.500000; 0.312500;,
+ 0.500000;-0.500000; 0.312500;,
+ 0.500000;-1.125000; 0.312500;,
+ 1.125000;-1.125000; 0.312500;,
+ -0.500000;-0.500000; 1.000000;,
+ -0.500000;-0.500000; 1.687500;,
+ 0.500000;-0.500000; 1.687500;,
+ 0.500000;-0.500000; 1.000000;,
+ 0.500000;-0.500000; 1.000000;,
+ 0.500000;-0.500000; 1.687500;,
+ 0.500000; 0.500000; 1.687500;,
+ 0.500000; 0.500000; 1.000000;,
+ -0.500000; 0.500000; 1.000000;,
+ -0.500000; 0.500000; 1.687500;,
+ -0.500000;-0.500000; 1.687500;,
+ -0.500000;-0.500000; 1.000000;,
+ 0.500000; 0.500000; 1.000000;,
+ 0.500000; 0.500000; 1.687500;,
+ -0.500000; 0.500000; 1.687500;,
+ -0.500000; 0.500000; 1.000000;,
+ -0.500000;-0.500000; 1.687500;,
+ -0.375000;-0.375000; 1.687500;,
+ 0.375000;-0.375000; 1.687500;,
+ 0.500000;-0.500000; 1.687500;,
+ 0.500000; 0.500000; 1.687500;,
+ 0.375000; 0.375000; 1.687500;,
+ -0.375000; 0.375000; 1.687500;,
+ -0.500000; 0.500000; 1.687500;,
+ 0.500000;-0.500000; 1.687500;,
+ 0.375000;-0.375000; 1.687500;,
+ 0.375000; 0.375000; 1.687500;,
+ 0.500000; 0.500000; 1.687500;,
+ -0.500000; 0.500000; 1.687500;,
+ -0.375000; 0.375000; 1.687500;,
+ -0.375000;-0.375000; 1.687500;,
+ -0.500000;-0.500000; 1.687500;,
+ -0.375000;-0.375000; 1.687500;,
+ -0.375000;-0.375000; 1.875000;,
+ 0.375000;-0.375000; 1.875000;,
+ 0.375000;-0.375000; 1.687500;,
+ 0.375000; 0.375000; 1.687500;,
+ 0.375000; 0.375000; 1.875000;,
+ -0.375000; 0.375000; 1.875000;,
+ -0.375000; 0.375000; 1.687500;,
+ 0.375000;-0.375000; 1.687500;,
+ 0.375000;-0.375000; 1.875000;,
+ 0.375000; 0.375000; 1.875000;,
+ 0.375000; 0.375000; 1.687500;,
+ -0.375000; 0.375000; 1.687500;,
+ -0.375000; 0.375000; 1.875000;,
+ -0.375000;-0.375000; 1.875000;,
+ -0.375000;-0.375000; 1.687500;,
+ -0.375000; 0.375000; 1.875000;,
+ -0.250000; 0.250000; 1.875000;,
+ -0.250000;-0.250000; 1.875000;,
+ -0.375000;-0.375000; 1.875000;,
+ -0.375000;-0.375000; 1.875000;,
+ -0.250000;-0.250000; 1.875000;,
+ 0.250000;-0.250000; 1.875000;,
+ 0.375000;-0.375000; 1.875000;,
+ 0.375000; 0.375000; 1.875000;,
+ 0.250000; 0.250000; 1.875000;,
+ -0.250000; 0.250000; 1.875000;,
+ -0.375000; 0.375000; 1.875000;,
+ 0.375000;-0.375000; 1.875000;,
+ 0.250000;-0.250000; 1.875000;,
+ 0.250000; 0.250000; 1.875000;,
+ 0.375000; 0.375000; 1.875000;,
+ 0.250000;-0.250000; 1.875000;,
+ 0.250000;-0.250000; 2.000000;,
+ 0.250000; 0.250000; 2.000000;,
+ 0.250000; 0.250000; 1.875000;,
+ -0.250000; 0.250000; 1.875000;,
+ -0.250000; 0.250000; 2.000000;,
+ -0.250000;-0.250000; 2.000000;,
+ -0.250000;-0.250000; 1.875000;,
+ -0.250000;-0.250000; 1.875000;,
+ -0.250000;-0.250000; 2.000000;,
+ 0.250000;-0.250000; 2.000000;,
+ 0.250000;-0.250000; 1.875000;,
+ 0.250000; 0.250000; 1.875000;,
+ 0.250000; 0.250000; 2.000000;,
+ -0.250000; 0.250000; 2.000000;,
+ -0.250000; 0.250000; 1.875000;,
+ -0.250000;-0.250000; 2.000000;,
+ -0.250000; 0.250000; 2.000000;,
+ 0.250000; 0.250000; 2.000000;,
+ 0.250000;-0.250000; 2.000000;,
+ 0.437500;-0.312500; 1.187500;,
+ 0.187500;-0.312500; 1.187500;,
+ 0.187500; 0.312500; 1.187500;,
+ 0.437500; 0.312500; 1.187500;,
+ -0.187500;-0.312500; 0.625000;,
+ -0.187500; 0.312500; 0.625000;,
+ 0.187500; 0.312500; 0.625000;,
+ 0.187500;-0.312500; 0.625000;,
+ 0.187500;-0.312500; 0.625000;,
+ 0.187500; 0.312500; 0.625000;,
+ 0.187500; 0.312500; 1.187500;,
+ 0.187500;-0.312500; 1.187500;,
+ 0.437500;-0.312500; 0.625000;,
+ 0.187500;-0.312500; 0.625000;,
+ 0.187500;-0.312500; 1.187500;,
+ 0.437500;-0.312500; 1.187500;,
+ 0.187500; 0.312500; 0.625000;,
+ 0.437500; 0.312500; 0.625000;,
+ 0.437500; 0.312500; 1.187500;,
+ 0.187500; 0.312500; 1.187500;,
+ 0.437500; 0.312500; 0.625000;,
+ 0.437500;-0.312500; 0.625000;,
+ 0.437500;-0.312500; 1.187500;,
+ 0.437500; 0.312500; 1.187500;,
+ 0.437500;-0.312500; 0.562500;,
+ 0.187500;-0.312500; 0.562500;,
+ 0.187500;-0.312500; 0.625000;,
+ 0.437500;-0.312500; 0.625000;,
+ 0.187500; 0.312500; 0.562500;,
+ 0.437500; 0.312500; 0.562500;,
+ 0.437500; 0.312500; 0.625000;,
+ 0.187500; 0.312500; 0.625000;,
+ -0.187500;-0.312500; 0.562500;,
+ -0.187500; 0.312500; 0.562500;,
+ -0.187500; 0.312500; 0.625000;,
+ -0.187500;-0.312500; 0.625000;,
+ -0.187500; 0.312500; 0.625000;,
+ -0.187500; 0.312500; 0.562500;,
+ 0.187500; 0.312500; 0.562500;,
+ 0.187500; 0.312500; 0.625000;,
+ -0.187500;-0.312500; 0.562500;,
+ -0.187500;-0.312500; 0.625000;,
+ 0.187500;-0.312500; 0.625000;,
+ 0.187500;-0.312500; 0.562500;,
+ -0.312500;-0.312500; 1.062500;,
+ -0.500000;-0.312500; 1.062500;,
+ -0.500000; 0.312500; 1.062500;,
+ -0.312500; 0.312500; 1.062500;,
+ -0.500000;-0.312500; 0.812500;,
+ -0.500000; 0.312500; 0.812500;,
+ -0.500000; 0.312500; 1.062500;,
+ -0.500000;-0.312500; 1.062500;,
+ -0.312500;-0.312500; 0.812500;,
+ -0.500000;-0.312500; 0.812500;,
+ -0.500000;-0.312500; 1.062500;,
+ -0.312500;-0.312500; 1.062500;,
+ -0.500000; 0.312500; 0.812500;,
+ -0.312500; 0.312500; 0.812500;,
+ -0.312500; 0.312500; 1.062500;,
+ -0.500000; 0.312500; 1.062500;,
+ -0.312500; 0.312500; 0.812500;,
+ -0.312500;-0.312500; 0.812500;,
+ -0.312500;-0.312500; 1.062500;,
+ -0.312500; 0.312500; 1.062500;,
+ -0.250000; 0.187500; 1.187500;,
+ -0.312500; 0.187500; 1.187500;,
+ -0.312500; 0.250000; 1.187500;,
+ -0.250000; 0.250000; 1.187500;,
+ -0.312500; 0.187500; 0.812500;,
+ -0.312500; 0.250000; 0.812500;,
+ -0.312500; 0.250000; 1.187500;,
+ -0.312500; 0.187500; 1.187500;,
+ -0.250000; 0.187500; 0.812500;,
+ -0.312500; 0.187500; 0.812500;,
+ -0.312500; 0.187500; 1.187500;,
+ -0.250000; 0.187500; 1.187500;,
+ -0.312500; 0.250000; 0.812500;,
+ -0.250000; 0.250000; 0.812500;,
+ -0.250000; 0.250000; 1.187500;,
+ -0.312500; 0.250000; 1.187500;,
+ -0.250000; 0.250000; 0.812500;,
+ -0.250000; 0.187500; 0.812500;,
+ -0.250000; 0.187500; 1.187500;,
+ -0.250000; 0.250000; 1.187500;,
+ -0.312500; 0.187500; 0.812500;,
+ -0.250000; 0.187500; 0.812500;,
+ -0.250000; 0.250000; 0.812500;,
+ -0.312500; 0.250000; 0.812500;,
+ -0.250000;-0.250000; 1.187500;,
+ -0.312500;-0.250000; 1.187500;,
+ -0.312500;-0.187500; 1.187500;,
+ -0.250000;-0.187500; 1.187500;,
+ -0.312500;-0.250000; 0.812500;,
+ -0.312500;-0.187500; 0.812500;,
+ -0.312500;-0.187500; 1.187500;,
+ -0.312500;-0.250000; 1.187500;,
+ -0.250000;-0.250000; 0.812500;,
+ -0.312500;-0.250000; 0.812500;,
+ -0.312500;-0.250000; 1.187500;,
+ -0.250000;-0.250000; 1.187500;,
+ -0.312500;-0.187500; 0.812500;,
+ -0.250000;-0.187500; 0.812500;,
+ -0.250000;-0.187500; 1.187500;,
+ -0.312500;-0.187500; 1.187500;,
+ -0.250000;-0.187500; 0.812500;,
+ -0.250000;-0.250000; 0.812500;,
+ -0.250000;-0.250000; 1.187500;,
+ -0.250000;-0.187500; 1.187500;,
+ -0.312500;-0.250000; 0.812500;,
+ -0.250000;-0.250000; 0.812500;,
+ -0.250000;-0.187500; 0.812500;,
+ -0.312500;-0.187500; 0.812500;,
+ -0.500000;-0.500000; 0.000000;,
+ -0.500000; 0.500000; 0.000000;,
+ -0.500000; 0.500000; 0.125000;,
+ -0.500000;-0.500000; 0.125000;,
+ 0.937500; 0.687500; 0.312500;,
+ 0.687500; 0.687500; 0.312500;,
+ 0.687500; 0.937500; 0.312500;,
+ 0.937500; 0.937500; 0.312500;,
+ 0.937500;-0.937500; 0.312500;,
+ 0.687500;-0.937500; 0.312500;,
+ 0.687500;-0.687500; 0.312500;,
+ 0.937500;-0.687500; 0.312500;,
+ -0.687500; 0.687500; 0.312500;,
+ -0.937500; 0.687500; 0.312500;,
+ -0.937500; 0.937500; 0.312500;,
+ -0.687500; 0.937500; 0.312500;,
+ -0.687500;-0.937500; 0.312500;,
+ -0.937500;-0.937500; 0.312500;,
+ -0.937500;-0.687500; 0.312500;,
+ -0.687500;-0.687500; 0.312500;,
+ 0.687500; 0.937500; 0.250000;,
+ 0.687500; 0.687500; 0.250000;,
+ 0.937500; 0.687500; 0.250000;,
+ 0.937500; 0.937500; 0.250000;,
+ 0.687500;-0.687500; 0.250000;,
+ 0.687500;-0.937500; 0.250000;,
+ 0.937500;-0.937500; 0.250000;,
+ 0.937500;-0.687500; 0.250000;,
+ -0.937500; 0.937500; 0.250000;,
+ -0.937500; 0.687500; 0.250000;,
+ -0.687500; 0.687500; 0.250000;,
+ -0.687500; 0.937500; 0.250000;,
+ -0.937500;-0.687500; 0.250000;,
+ -0.937500;-0.937500; 0.250000;,
+ -0.687500;-0.937500; 0.250000;,
+ -0.687500;-0.687500; 0.250000;,
+ -0.937500;-0.687500; 0.250000;,
+ -0.687500;-0.687500; 0.250000;,
+ -0.687500;-0.687500; 0.312500;,
+ -0.937500;-0.687500; 0.312500;,
+ 0.687500;-0.937500; 0.250000;,
+ 0.687500;-0.687500; 0.250000;,
+ 0.687500;-0.687500; 0.312500;,
+ 0.687500;-0.937500; 0.312500;,
+ 0.687500; 0.937500; 0.250000;,
+ 0.937500; 0.937500; 0.250000;,
+ 0.937500; 0.937500; 0.312500;,
+ 0.687500; 0.937500; 0.312500;,
+ -0.687500;-0.687500; 0.250000;,
+ -0.687500;-0.937500; 0.250000;,
+ -0.687500;-0.937500; 0.312500;,
+ -0.687500;-0.687500; 0.312500;,
+ -0.687500; 0.687500; 0.250000;,
+ -0.937500; 0.687500; 0.250000;,
+ -0.937500; 0.687500; 0.312500;,
+ -0.687500; 0.687500; 0.312500;,
+ 0.937500; 0.937500; 0.250000;,
+ 0.937500; 0.687500; 0.250000;,
+ 0.937500; 0.687500; 0.312500;,
+ 0.937500; 0.937500; 0.312500;,
+ -0.937500;-0.937500; 0.250000;,
+ -0.937500;-0.687500; 0.250000;,
+ -0.937500;-0.687500; 0.312500;,
+ -0.937500;-0.937500; 0.312500;,
+ -0.937500; 0.937500; 0.250000;,
+ -0.687500; 0.937500; 0.250000;,
+ -0.687500; 0.937500; 0.312500;,
+ -0.937500; 0.937500; 0.312500;,
+ 0.687500; 0.687500; 0.250000;,
+ 0.687500; 0.937500; 0.250000;,
+ 0.687500; 0.937500; 0.312500;,
+ 0.687500; 0.687500; 0.312500;,
+ -0.687500; 0.937500; 0.250000;,
+ -0.687500; 0.687500; 0.250000;,
+ -0.687500; 0.687500; 0.312500;,
+ -0.687500; 0.937500; 0.312500;,
+ 0.937500;-0.937500; 0.250000;,
+ 0.687500;-0.937500; 0.250000;,
+ 0.687500;-0.937500; 0.312500;,
+ 0.937500;-0.937500; 0.312500;,
+ -0.937500; 0.687500; 0.250000;,
+ -0.937500; 0.937500; 0.250000;,
+ -0.937500; 0.937500; 0.312500;,
+ -0.937500; 0.687500; 0.312500;,
+ 0.687500;-0.687500; 0.250000;,
+ 0.937500;-0.687500; 0.250000;,
+ 0.937500;-0.687500; 0.312500;,
+ 0.687500;-0.687500; 0.312500;,
+ -0.687500;-0.937500; 0.250000;,
+ -0.937500;-0.937500; 0.250000;,
+ -0.937500;-0.937500; 0.312500;,
+ -0.687500;-0.937500; 0.312500;,
+ 0.937500;-0.687500; 0.250000;,
+ 0.937500;-0.937500; 0.250000;,
+ 0.937500;-0.937500; 0.312500;,
+ 0.937500;-0.687500; 0.312500;,
+ 0.937500; 0.687500; 0.250000;,
+ 0.687500; 0.687500; 0.250000;,
+ 0.687500; 0.687500; 0.312500;,
+ 0.937500; 0.687500; 0.312500;,
+ -0.500000; 0.500000; 0.000000;,
+ -0.500000;-0.500000; 0.000000;,
+ 0.500000;-0.500000; 0.000000;,
+ 0.500000; 0.500000; 0.000000;,
+ 0.500000;-0.500000; 0.000000;,
+ -0.500000;-0.500000; 0.000000;,
+ -0.500000;-0.500000; 0.125000;,
+ 0.500000;-0.500000; 0.125000;,
+ 0.500000; 0.500000; 0.000000;,
+ 0.500000;-0.500000; 0.000000;,
+ 0.500000;-0.500000; 0.125000;,
+ 0.500000; 0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.000000;,
+ 0.500000; 0.500000; 0.000000;,
+ 0.500000; 0.500000; 0.125000;,
+ -0.500000; 0.500000; 0.125000;;
+ 158;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;,
+ 4;332;333;334;335;,
+ 4;336;337;338;339;,
+ 4;340;341;342;343;,
+ 4;344;345;346;347;,
+ 4;348;349;350;351;,
+ 4;352;353;354;355;,
+ 4;356;357;358;359;,
+ 4;360;361;362;363;,
+ 4;364;365;366;367;,
+ 4;368;369;370;371;,
+ 4;372;373;374;375;,
+ 4;376;377;378;379;,
+ 4;380;381;382;383;,
+ 4;384;385;386;387;,
+ 4;388;389;390;391;,
+ 4;392;393;394;395;,
+ 4;396;397;398;399;,
+ 4;400;401;402;403;,
+ 4;404;405;406;407;,
+ 4;408;409;410;411;,
+ 4;412;413;414;415;,
+ 4;416;417;418;419;,
+ 4;420;421;422;423;,
+ 4;424;425;426;427;,
+ 4;428;429;430;431;,
+ 4;432;433;434;435;,
+ 4;436;437;438;439;,
+ 4;440;441;442;443;,
+ 4;444;445;446;447;,
+ 4;448;449;450;451;,
+ 4;452;453;454;455;,
+ 4;456;457;458;459;,
+ 4;460;461;462;463;,
+ 4;464;465;466;467;,
+ 4;468;469;470;471;,
+ 4;472;473;474;475;,
+ 4;476;477;478;479;,
+ 4;480;481;482;483;,
+ 4;484;485;486;487;,
+ 4;488;489;490;491;,
+ 4;492;493;494;495;,
+ 4;496;497;498;499;,
+ 4;500;501;502;503;,
+ 4;504;505;506;507;,
+ 4;508;509;510;511;,
+ 4;512;513;514;515;,
+ 4;516;517;518;519;,
+ 4;520;521;522;523;,
+ 4;524;525;526;527;,
+ 4;528;529;530;531;,
+ 4;532;533;534;535;,
+ 4;536;537;538;539;,
+ 4;540;541;542;543;,
+ 4;544;545;546;547;,
+ 4;548;549;550;551;,
+ 4;552;553;554;555;,
+ 4;556;557;558;559;,
+ 4;560;561;562;563;,
+ 4;564;565;566;567;,
+ 4;568;569;570;571;,
+ 4;572;573;574;575;,
+ 4;576;577;578;579;,
+ 4;580;581;582;583;,
+ 4;584;585;586;587;,
+ 4;588;589;590;591;,
+ 4;592;593;594;595;,
+ 4;596;597;598;599;,
+ 4;600;601;602;603;,
+ 4;604;605;606;607;,
+ 4;608;609;610;611;,
+ 4;612;613;614;615;,
+ 4;616;617;618;619;,
+ 4;620;621;622;623;,
+ 4;624;625;626;627;,
+ 4;628;629;630;631;;
+ MeshNormals { //Cube_000 Normals
+ 632;
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ -0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-0.000000;-1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -0.000000; 0.000000; 1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ -1.000000;-0.000000; 0.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000;-0.000000; 1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ -1.000000; 0.000000; 0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000; 1.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 1.000000; 0.000000;-0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000; 0.000000;-1.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 0.000000;-1.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ 1.000000; 0.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;,
+ -0.000000; 1.000000; 0.000000;;
+ 158;
+ 4;0;1;2;3;,
+ 4;4;5;6;7;,
+ 4;8;9;10;11;,
+ 4;12;13;14;15;,
+ 4;16;17;18;19;,
+ 4;20;21;22;23;,
+ 4;24;25;26;27;,
+ 4;28;29;30;31;,
+ 4;32;33;34;35;,
+ 4;36;37;38;39;,
+ 4;40;41;42;43;,
+ 4;44;45;46;47;,
+ 4;48;49;50;51;,
+ 4;52;53;54;55;,
+ 4;56;57;58;59;,
+ 4;60;61;62;63;,
+ 4;64;65;66;67;,
+ 4;68;69;70;71;,
+ 4;72;73;74;75;,
+ 4;76;77;78;79;,
+ 4;80;81;82;83;,
+ 4;84;85;86;87;,
+ 4;88;89;90;91;,
+ 4;92;93;94;95;,
+ 4;96;97;98;99;,
+ 4;100;101;102;103;,
+ 4;104;105;106;107;,
+ 4;108;109;110;111;,
+ 4;112;113;114;115;,
+ 4;116;117;118;119;,
+ 4;120;121;122;123;,
+ 4;124;125;126;127;,
+ 4;128;129;130;131;,
+ 4;132;133;134;135;,
+ 4;136;137;138;139;,
+ 4;140;141;142;143;,
+ 4;144;145;146;147;,
+ 4;148;149;150;151;,
+ 4;152;153;154;155;,
+ 4;156;157;158;159;,
+ 4;160;161;162;163;,
+ 4;164;165;166;167;,
+ 4;168;169;170;171;,
+ 4;172;173;174;175;,
+ 4;176;177;178;179;,
+ 4;180;181;182;183;,
+ 4;184;185;186;187;,
+ 4;188;189;190;191;,
+ 4;192;193;194;195;,
+ 4;196;197;198;199;,
+ 4;200;201;202;203;,
+ 4;204;205;206;207;,
+ 4;208;209;210;211;,
+ 4;212;213;214;215;,
+ 4;216;217;218;219;,
+ 4;220;221;222;223;,
+ 4;224;225;226;227;,
+ 4;228;229;230;231;,
+ 4;232;233;234;235;,
+ 4;236;237;238;239;,
+ 4;240;241;242;243;,
+ 4;244;245;246;247;,
+ 4;248;249;250;251;,
+ 4;252;253;254;255;,
+ 4;256;257;258;259;,
+ 4;260;261;262;263;,
+ 4;264;265;266;267;,
+ 4;268;269;270;271;,
+ 4;272;273;274;275;,
+ 4;276;277;278;279;,
+ 4;280;281;282;283;,
+ 4;284;285;286;287;,
+ 4;288;289;290;291;,
+ 4;292;293;294;295;,
+ 4;296;297;298;299;,
+ 4;300;301;302;303;,
+ 4;304;305;306;307;,
+ 4;308;309;310;311;,
+ 4;312;313;314;315;,
+ 4;316;317;318;319;,
+ 4;320;321;322;323;,
+ 4;324;325;326;327;,
+ 4;328;329;330;331;,
+ 4;332;333;334;335;,
+ 4;336;337;338;339;,
+ 4;340;341;342;343;,
+ 4;344;345;346;347;,
+ 4;348;349;350;351;,
+ 4;352;353;354;355;,
+ 4;356;357;358;359;,
+ 4;360;361;362;363;,
+ 4;364;365;366;367;,
+ 4;368;369;370;371;,
+ 4;372;373;374;375;,
+ 4;376;377;378;379;,
+ 4;380;381;382;383;,
+ 4;384;385;386;387;,
+ 4;388;389;390;391;,
+ 4;392;393;394;395;,
+ 4;396;397;398;399;,
+ 4;400;401;402;403;,
+ 4;404;405;406;407;,
+ 4;408;409;410;411;,
+ 4;412;413;414;415;,
+ 4;416;417;418;419;,
+ 4;420;421;422;423;,
+ 4;424;425;426;427;,
+ 4;428;429;430;431;,
+ 4;432;433;434;435;,
+ 4;436;437;438;439;,
+ 4;440;441;442;443;,
+ 4;444;445;446;447;,
+ 4;448;449;450;451;,
+ 4;452;453;454;455;,
+ 4;456;457;458;459;,
+ 4;460;461;462;463;,
+ 4;464;465;466;467;,
+ 4;468;469;470;471;,
+ 4;472;473;474;475;,
+ 4;476;477;478;479;,
+ 4;480;481;482;483;,
+ 4;484;485;486;487;,
+ 4;488;489;490;491;,
+ 4;492;493;494;495;,
+ 4;496;497;498;499;,
+ 4;500;501;502;503;,
+ 4;504;505;506;507;,
+ 4;508;509;510;511;,
+ 4;512;513;514;515;,
+ 4;516;517;518;519;,
+ 4;520;521;522;523;,
+ 4;524;525;526;527;,
+ 4;528;529;530;531;,
+ 4;532;533;534;535;,
+ 4;536;537;538;539;,
+ 4;540;541;542;543;,
+ 4;544;545;546;547;,
+ 4;548;549;550;551;,
+ 4;552;553;554;555;,
+ 4;556;557;558;559;,
+ 4;560;561;562;563;,
+ 4;564;565;566;567;,
+ 4;568;569;570;571;,
+ 4;572;573;574;575;,
+ 4;576;577;578;579;,
+ 4;580;581;582;583;,
+ 4;584;585;586;587;,
+ 4;588;589;590;591;,
+ 4;592;593;594;595;,
+ 4;596;597;598;599;,
+ 4;600;601;602;603;,
+ 4;604;605;606;607;,
+ 4;608;609;610;611;,
+ 4;612;613;614;615;,
+ 4;616;617;618;619;,
+ 4;620;621;622;623;,
+ 4;624;625;626;627;,
+ 4;628;629;630;631;;
+ } //End of Cube_000 Normals
+ MeshMaterialList { //Cube_000 Material List
+ 1;
+ 1;
+ 0;;
+ Material Default_Material {
+ 0.800000; 0.800000; 0.800000; 0.800000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ }
+ } //End of Cube_000 Material List
+ MeshTextureCoords { //Cube_000 UV Coordinates
+ 632;
+ 0.250000; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.968750;,
+ 0.656250; 0.968750;,
+ 0.656250; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.750000; 0.921875;,
+ 0.750000; 0.828125;,
+ 0.656250; 0.828125;,
+ 0.656250; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.000000;,
+ 0.500000; 0.000000;,
+ 0.500000; 0.093750;,
+ 0.250000; 0.093750;,
+ 0.750000; 0.828125;,
+ 0.750000; 0.921875;,
+ 0.656250; 0.921875;,
+ 0.656250; 0.828125;,
+ 0.500000; 0.000000;,
+ 0.250000; 0.000000;,
+ 0.250000; 0.093750;,
+ 0.500000; 0.093750;,
+ 0.500000; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.968750;,
+ 0.093750; 0.968750;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.500000;,
+ 0.250000; 0.500000;,
+ 0.250000; 0.656250;,
+ 0.500000; 0.656250;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.000000; 0.921875;,
+ 0.000000; 0.828125;,
+ 0.093750; 0.828125;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.093750; 0.828125;,
+ 0.093750; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.250000; 0.656250;,
+ 0.500000; 0.656250;,
+ 0.000000; 0.828125;,
+ 0.000000; 0.921875;,
+ 0.093750; 0.921875;,
+ 0.093750; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.500000; 0.656250;,
+ 0.250000; 0.656250;,
+ 0.500000; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.968750;,
+ 0.656250; 0.968750;,
+ 0.656250; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.750000; 0.921875;,
+ 0.750000; 0.828125;,
+ 0.656250; 0.828125;,
+ 0.656250; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.656250; 0.828125;,
+ 0.656250; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.750000; 0.250000;,
+ 0.750000; 0.500000;,
+ 0.656250; 0.500000;,
+ 0.656250; 0.250000;,
+ 0.750000; 0.828125;,
+ 0.750000; 0.921875;,
+ 0.656250; 0.921875;,
+ 0.656250; 0.828125;,
+ 0.750000; 0.500000;,
+ 0.750000; 0.250000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.500000;,
+ 0.250000; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.000000; 0.921875;,
+ 0.000000; 0.828125;,
+ 0.093750; 0.828125;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.000000; 0.500000;,
+ 0.000000; 0.250000;,
+ 0.093750; 0.250000;,
+ 0.093750; 0.500000;,
+ 0.000000; 0.828125;,
+ 0.000000; 0.921875;,
+ 0.093750; 0.921875;,
+ 0.093750; 0.828125;,
+ 0.000000; 0.250000;,
+ 0.000000; 0.500000;,
+ 0.093750; 0.500000;,
+ 0.093750; 0.250000;,
+ 0.500000; 0.828125;,
+ 0.656250; 0.828125;,
+ 0.656250; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.093750; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.921875;,
+ 0.093750; 0.921875;,
+ 0.093750; 0.921875;,
+ 0.093750; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.921875;,
+ 0.093750; 0.828125;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.656250; 0.921875;,
+ 0.656250; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.921875;,
+ 0.093750; 0.828125;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.656250; 0.921875;,
+ 0.656250; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.656250; 0.828125;,
+ 0.656250; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.656250; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.500000; 0.921875;,
+ 0.656250; 0.921875;,
+ 0.500000; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.250000;,
+ 0.500000; 0.250000;,
+ 0.500000; 0.093750;,
+ 0.250000; 0.093750;,
+ 0.250000; 0.093750;,
+ 0.500000; 0.093750;,
+ 0.500000; 0.250000;,
+ 0.250000; 0.250000;,
+ 0.656250; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.656250; 0.750000;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.656250; 0.828125;,
+ 0.656250; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.093750; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 0.921875;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.656250;,
+ 0.250000; 0.656250;,
+ 0.250000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.093750; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.093750; 0.750000;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.656250; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.500000; 0.921875;,
+ 0.656250; 0.921875;,
+ 0.250000; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.250000;,
+ 0.500000; 0.500000;,
+ 0.656250; 0.500000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.250000;,
+ 0.656250; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.656250; 0.750000;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.500000; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.093750; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 0.921875;,
+ 0.093750; 0.921875;,
+ 0.500000; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 0.921875;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.968750;,
+ 0.093750; 0.968750;,
+ 0.093750; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.500000;,
+ 0.250000; 0.250000;,
+ 0.093750; 0.250000;,
+ 0.093750; 0.500000;,
+ 0.093750; 0.500000;,
+ 0.093750; 0.250000;,
+ 0.250000; 0.250000;,
+ 0.250000; 0.500000;,
+ 0.093750; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.093750; 0.750000;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.250000; 0.750000;,
+ 0.500000; 0.750000;,
+ 0.500000; 0.921875;,
+ 0.250000; 0.921875;,
+ 0.250000; 0.828125;,
+ 0.500000; 0.828125;,
+ 0.250000; 0.828125;,
+ 0.093750; 0.828125;,
+ 0.093750; 0.750000;,
+ 0.250000; 0.750000;,
+ 0.250000; 0.656250;,
+ 0.093750; 0.656250;,
+ 0.093750; 0.500000;,
+ 0.250000; 0.500000;,
+ 0.500000; 0.656250;,
+ 0.500000; 0.500000;,
+ 0.656250; 0.500000;,
+ 0.656250; 0.656250;,
+ 0.500000; 0.250000;,
+ 0.500000; 0.093750;,
+ 0.656250; 0.093750;,
+ 0.656250; 0.250000;,
+ 0.093750; 0.250000;,
+ 0.093750; 0.093750;,
+ 0.250000; 0.093750;,
+ 0.250000; 0.250000;,
+ 0.093750; 0.250000;,
+ 0.250000; 0.250000;,
+ 0.250000; 0.093750;,
+ 0.093750; 0.093750;,
+ 0.250000; 0.656250;,
+ 0.250000; 0.500000;,
+ 0.093750; 0.500000;,
+ 0.093750; 0.656250;,
+ 0.656250; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.656250;,
+ 0.656250; 0.656250;,
+ 0.500000; 0.093750;,
+ 0.500000; 0.250000;,
+ 0.656250; 0.250000;,
+ 0.656250; 0.093750;,
+ 0.750000; 0.250000;,
+ 0.750000; 0.078125;,
+ 1.000000; 0.078125;,
+ 1.000000; 0.250000;,
+ 1.000000; 0.250000;,
+ 1.000000; 0.078125;,
+ 0.750000; 0.078125;,
+ 0.750000; 0.250000;,
+ 0.750000; 0.250000;,
+ 0.750000; 0.078125;,
+ 1.000000; 0.078125;,
+ 1.000000; 0.250000;,
+ 1.000000; 0.250000;,
+ 1.000000; 0.078125;,
+ 0.750000; 0.078125;,
+ 0.750000; 0.250000;,
+ 1.000000; 0.500000;,
+ 0.968750; 0.468750;,
+ 0.968750; 0.281250;,
+ 1.000000; 0.250000;,
+ 0.750000; 0.250000;,
+ 0.781250; 0.281250;,
+ 0.781250; 0.468750;,
+ 0.750000; 0.500000;,
+ 1.000000; 0.250000;,
+ 0.968750; 0.281250;,
+ 0.781250; 0.281250;,
+ 0.750000; 0.250000;,
+ 0.750000; 0.500000;,
+ 0.781250; 0.468750;,
+ 0.968750; 0.468750;,
+ 1.000000; 0.500000;,
+ 0.781250; 0.078125;,
+ 0.781250; 0.031250;,
+ 0.968750; 0.031250;,
+ 0.968750; 0.078125;,
+ 0.968750; 0.078125;,
+ 0.968750; 0.031250;,
+ 0.781250; 0.031250;,
+ 0.781250; 0.078125;,
+ 0.968750; 0.078125;,
+ 0.968750; 0.031250;,
+ 0.781250; 0.031250;,
+ 0.781250; 0.078125;,
+ 0.781250; 0.078125;,
+ 0.781250; 0.031250;,
+ 0.968750; 0.031250;,
+ 0.968750; 0.078125;,
+ 0.781250; 0.468750;,
+ 0.812500; 0.437500;,
+ 0.937500; 0.437500;,
+ 0.968750; 0.468750;,
+ 0.968750; 0.468750;,
+ 0.937500; 0.437500;,
+ 0.937500; 0.312500;,
+ 0.968750; 0.281250;,
+ 0.781250; 0.281250;,
+ 0.812500; 0.312500;,
+ 0.812500; 0.437500;,
+ 0.781250; 0.468750;,
+ 0.968750; 0.281250;,
+ 0.937500; 0.312500;,
+ 0.812500; 0.312500;,
+ 0.781250; 0.281250;,
+ 0.937500; 0.031250;,
+ 0.937500; 0.000000;,
+ 0.812500; 0.000000;,
+ 0.812500; 0.031250;,
+ 0.812500; 0.031250;,
+ 0.812500; 0.000000;,
+ 0.937500; 0.000000;,
+ 0.937500; 0.031250;,
+ 0.812500; 0.031250;,
+ 0.812500; 0.000000;,
+ 0.937500; 0.000000;,
+ 0.937500; 0.031250;,
+ 0.937500; 0.031250;,
+ 0.937500; 0.000000;,
+ 0.812500; 0.000000;,
+ 0.812500; 0.031250;,
+ 0.937500; 0.437500;,
+ 0.812500; 0.437500;,
+ 0.812500; 0.312500;,
+ 0.937500; 0.312500;,
+ 1.000000; 0.515625;,
+ 1.000000; 0.578125;,
+ 0.843750; 0.578125;,
+ 0.843750; 0.515625;,
+ 1.000000; 0.671875;,
+ 0.843750; 0.671875;,
+ 0.843750; 0.578125;,
+ 1.000000; 0.578125;,
+ 0.843750; 0.812500;,
+ 0.687500; 0.812500;,
+ 0.687500; 0.671875;,
+ 0.843750; 0.671875;,
+ 1.000000; 0.812500;,
+ 0.937500; 0.812500;,
+ 0.937500; 0.671875;,
+ 1.000000; 0.671875;,
+ 0.937500; 0.812500;,
+ 1.000000; 0.812500;,
+ 1.000000; 0.671875;,
+ 0.937500; 0.671875;,
+ 0.843750; 0.812500;,
+ 0.687500; 0.812500;,
+ 0.687500; 0.671875;,
+ 0.843750; 0.671875;,
+ 1.000000; 0.828125;,
+ 0.937500; 0.828125;,
+ 0.937500; 0.812500;,
+ 1.000000; 0.812500;,
+ 0.937500; 0.828125;,
+ 1.000000; 0.828125;,
+ 1.000000; 0.812500;,
+ 0.937500; 0.812500;,
+ 0.843750; 0.828125;,
+ 0.687500; 0.828125;,
+ 0.687500; 0.812500;,
+ 0.843750; 0.812500;,
+ 0.843750; 0.812500;,
+ 0.843750; 0.828125;,
+ 0.937500; 0.828125;,
+ 0.937500; 0.812500;,
+ 0.843750; 0.828125;,
+ 0.843750; 0.812500;,
+ 0.937500; 0.812500;,
+ 0.937500; 0.828125;,
+ 0.921875; 0.843750;,
+ 0.921875; 0.890625;,
+ 0.765625; 0.890625;,
+ 0.765625; 0.843750;,
+ 0.921875; 0.953125;,
+ 0.765625; 0.953125;,
+ 0.765625; 0.890625;,
+ 0.921875; 0.890625;,
+ 0.921875; 0.890625;,
+ 0.921875; 0.843750;,
+ 0.984375; 0.843750;,
+ 0.984375; 0.890625;,
+ 0.921875; 0.843750;,
+ 0.921875; 0.890625;,
+ 0.984375; 0.890625;,
+ 0.984375; 0.843750;,
+ 0.765625; 0.953125;,
+ 0.921875; 0.953125;,
+ 0.921875; 0.890625;,
+ 0.765625; 0.890625;,
+ 0.875000; 0.968750;,
+ 0.875000; 0.984375;,
+ 0.859375; 0.984375;,
+ 0.859375; 0.968750;,
+ 0.765625; 0.984375;,
+ 0.765625; 0.968750;,
+ 0.859375; 0.968750;,
+ 0.859375; 0.984375;,
+ 0.765625; 0.984375;,
+ 0.765625; 0.968750;,
+ 0.859375; 0.968750;,
+ 0.859375; 0.984375;,
+ 0.765625; 0.968750;,
+ 0.765625; 0.984375;,
+ 0.859375; 0.984375;,
+ 0.859375; 0.968750;,
+ 0.765625; 0.968750;,
+ 0.765625; 0.984375;,
+ 0.859375; 0.984375;,
+ 0.859375; 0.968750;,
+ 0.875000; 0.984375;,
+ 0.875000; 0.968750;,
+ 0.859375; 0.968750;,
+ 0.859375; 0.984375;,
+ 0.875000; 0.968750;,
+ 0.875000; 0.984375;,
+ 0.859375; 0.984375;,
+ 0.859375; 0.968750;,
+ 0.765625; 0.984375;,
+ 0.765625; 0.968750;,
+ 0.859375; 0.968750;,
+ 0.859375; 0.984375;,
+ 0.765625; 0.984375;,
+ 0.765625; 0.968750;,
+ 0.859375; 0.968750;,
+ 0.859375; 0.984375;,
+ 0.765625; 0.968750;,
+ 0.765625; 0.984375;,
+ 0.859375; 0.984375;,
+ 0.859375; 0.968750;,
+ 0.765625; 0.968750;,
+ 0.765625; 0.984375;,
+ 0.859375; 0.984375;,
+ 0.859375; 0.968750;,
+ 0.875000; 0.984375;,
+ 0.875000; 0.968750;,
+ 0.859375; 0.968750;,
+ 0.859375; 0.984375;,
+ 0.500000; 1.000000;,
+ 0.250000; 1.000000;,
+ 0.250000; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.750000; 0.546875;,
+ 0.687500; 0.546875;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.750000; 0.546875;,
+ 0.687500; 0.546875;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.750000; 0.546875;,
+ 0.687500; 0.546875;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.750000; 0.546875;,
+ 0.687500; 0.546875;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.625000;,
+ 0.750000; 0.625000;,
+ 0.750000; 0.609375;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.625000;,
+ 0.687500; 0.625000;,
+ 0.687500; 0.609375;,
+ 0.750000; 0.609375;,
+ 0.250000; 0.500000;,
+ 0.500000; 0.500000;,
+ 0.500000; 0.250000;,
+ 0.250000; 0.250000;,
+ 0.500000; 1.000000;,
+ 0.250000; 1.000000;,
+ 0.250000; 0.968750;,
+ 0.500000; 0.968750;,
+ 0.250000; 1.000000;,
+ 0.500000; 1.000000;,
+ 0.500000; 0.968750;,
+ 0.250000; 0.968750;,
+ 0.250000; 1.000000;,
+ 0.500000; 1.000000;,
+ 0.500000; 0.968750;,
+ 0.250000; 0.968750;;
+ } //End of Cube_000 UV Coordinates
+ } //End of Cube_000 Mesh
+ } //End of Cube_002
+} //End of Root Frame
diff --git a/ufos/ufos/models/ufo_0.png b/ufos/ufos/models/ufo_0.png
new file mode 100644
index 0000000..1c3adc1
--- /dev/null
+++ b/ufos/ufos/models/ufo_0.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_1.png b/ufos/ufos/models/ufo_1.png
new file mode 100644
index 0000000..12fbf48
--- /dev/null
+++ b/ufos/ufos/models/ufo_1.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_2.png b/ufos/ufos/models/ufo_2.png
new file mode 100644
index 0000000..698e76d
--- /dev/null
+++ b/ufos/ufos/models/ufo_2.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_3.png b/ufos/ufos/models/ufo_3.png
new file mode 100644
index 0000000..adc46c7
--- /dev/null
+++ b/ufos/ufos/models/ufo_3.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_4.png b/ufos/ufos/models/ufo_4.png
new file mode 100644
index 0000000..ea9fcb9
--- /dev/null
+++ b/ufos/ufos/models/ufo_4.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_5.png b/ufos/ufos/models/ufo_5.png
new file mode 100644
index 0000000..5d6132f
--- /dev/null
+++ b/ufos/ufos/models/ufo_5.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_6.png b/ufos/ufos/models/ufo_6.png
new file mode 100644
index 0000000..c9d6c17
--- /dev/null
+++ b/ufos/ufos/models/ufo_6.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_7.png b/ufos/ufos/models/ufo_7.png
new file mode 100644
index 0000000..ba0a606
--- /dev/null
+++ b/ufos/ufos/models/ufo_7.png
Binary files differ
diff --git a/ufos/ufos/models/ufo_8.png b/ufos/ufos/models/ufo_8.png
new file mode 100644
index 0000000..747412d
--- /dev/null
+++ b/ufos/ufos/models/ufo_8.png
Binary files differ
diff --git a/ufos/ufos/textures/ufos_box.png b/ufos/ufos/textures/ufos_box.png
new file mode 100644
index 0000000..22390d9
--- /dev/null
+++ b/ufos/ufos/textures/ufos_box.png
Binary files differ
diff --git a/ufos/ufos/textures/ufos_furnace_front.png b/ufos/ufos/textures/ufos_furnace_front.png
new file mode 100644
index 0000000..3c931e3
--- /dev/null
+++ b/ufos/ufos/textures/ufos_furnace_front.png
Binary files differ
diff --git a/ufos/ufos/textures/ufos_furnace_front_active.png b/ufos/ufos/textures/ufos_furnace_front_active.png
new file mode 100644
index 0000000..dd288fb
--- /dev/null
+++ b/ufos/ufos/textures/ufos_furnace_front_active.png
Binary files differ
diff --git a/ufos/ufos/textures/ufos_inventory.png b/ufos/ufos/textures/ufos_inventory.png
new file mode 100644
index 0000000..e7f46bc
--- /dev/null
+++ b/ufos/ufos/textures/ufos_inventory.png
Binary files differ
diff --git a/unified_inventory/README.md b/unified_inventory/README.md
new file mode 100644
index 0000000..6f5e2d4
--- /dev/null
+++ b/unified_inventory/README.md
@@ -0,0 +1,22 @@
+Unified inventory
+=================
+
+Unified Inventory replaces the default survival and creative inventory.
+It adds a nicer interface and a number of features, such as a crafting guide.
+
+License
+=======
+
+Copyright (C) 2012-2014 Maciej Kasatkin (RealBadAngel)
+
+Unified inventory code is licensed under the GNU LGPLv2+.
+
+Licenses for textures:
+
+VanessaE: (WTFPL)
+ * ui\_group.png
+
+RealBadAngel: (WTFPL)
+ * Everything else.
+
+
diff --git a/unified_inventory/api.lua b/unified_inventory/api.lua
new file mode 100644
index 0000000..59296db
--- /dev/null
+++ b/unified_inventory/api.lua
@@ -0,0 +1,226 @@
+local S = unified_inventory.gettext
+
+-- Create detached creative inventory after loading all mods
+minetest.after(0.01, function()
+ local rev_aliases = {}
+ for source, target in pairs(minetest.registered_aliases) do
+ if not rev_aliases[target] then rev_aliases[target] = {} end
+ table.insert(rev_aliases[target], source)
+ end
+ unified_inventory.items_list = {}
+ for name, def in pairs(minetest.registered_items) do
+ if (not def.groups.not_in_creative_inventory or
+ def.groups.not_in_creative_inventory == 0) and
+ def.description and def.description ~= "" then
+ table.insert(unified_inventory.items_list, name)
+ local all_names = rev_aliases[name] or {}
+ table.insert(all_names, name)
+ for _, name in ipairs(all_names) do
+ local recipes = minetest.get_all_craft_recipes(name)
+ if recipes then
+ for _, recipe in ipairs(recipes) do
+
+ local unknowns
+
+ for _,chk in pairs(recipe.items) do
+ local groupchk = string.find(chk, "group:")
+ if (not groupchk and not minetest.registered_items[chk])
+ or (groupchk and not unified_inventory.get_group_item(string.gsub(chk, "group:", "")).item) then
+ unknowns = true
+ end
+ end
+
+ if not unknowns then
+ unified_inventory.register_craft(recipe)
+ end
+ end
+ end
+ end
+ end
+ end
+ table.sort(unified_inventory.items_list)
+ unified_inventory.items_list_size = #unified_inventory.items_list
+ print("Unified Inventory. inventory size: "..unified_inventory.items_list_size)
+ for _, name in ipairs(unified_inventory.items_list) do
+ local def = minetest.registered_items[name]
+ if type(def.drop) == "string" then
+ local dstack = ItemStack(def.drop)
+ if not dstack:is_empty() and dstack:get_name() ~= name then
+ unified_inventory.register_craft({
+ type = "digging",
+ items = {name},
+ output = def.drop,
+ width = 0,
+ })
+
+ end
+ end
+ end
+ for _, recipes in pairs(unified_inventory.crafts_for.recipe) do
+ for _, recipe in ipairs(recipes) do
+ local ingredient_items = {}
+ for _, spec in ipairs(recipe.items) do
+ local matches_spec = unified_inventory.canonical_item_spec_matcher(spec)
+ for _, name in ipairs(unified_inventory.items_list) do
+ if matches_spec(name) then
+ ingredient_items[name] = true
+ end
+ end
+ end
+ for name, _ in pairs(ingredient_items) do
+ if unified_inventory.crafts_for.usage[name] == nil then
+ unified_inventory.crafts_for.usage[name] = {}
+ end
+ table.insert(unified_inventory.crafts_for.usage[name], recipe)
+ end
+ end
+ end
+end)
+
+
+-- load_home
+local function load_home()
+ local input = io.open(unified_inventory.home_filename, "r")
+ if not input then
+ unified_inventory.home_pos = {}
+ return
+ end
+ while true do
+ local x = input:read("*n")
+ if not x then break end
+ local y = input:read("*n")
+ local z = input:read("*n")
+ local name = input:read("*l")
+ unified_inventory.home_pos[name:sub(2)] = {x = x, y = y, z = z}
+ end
+ io.close(input)
+end
+load_home()
+
+function unified_inventory.set_home(player, pos)
+ local player_name = player:get_player_name()
+ unified_inventory.home_pos[player_name] = vector.round(pos)
+ -- save the home data from the table to the file
+ local output = io.open(unified_inventory.home_filename, "w")
+ for k, v in pairs(unified_inventory.home_pos) do
+ output:write(v.x.." "..v.y.." "..v.z.." "..k.."\n")
+ end
+ io.close(output)
+end
+
+function unified_inventory.go_home(player)
+ local pos = unified_inventory.home_pos[player:get_player_name()]
+ if pos then
+ player:setpos(pos)
+ end
+end
+
+-- register_craft
+function unified_inventory.register_craft(options)
+ if not options.output then
+ return
+ end
+ local itemstack = ItemStack(options.output)
+ if itemstack:is_empty() then
+ return
+ end
+ if options.type == "normal" and options.width == 0 then
+ options = { type = "shapeless", items = options.items, output = options.output, width = 0 }
+ end
+ if not unified_inventory.crafts_for.recipe[itemstack:get_name()] then
+ unified_inventory.crafts_for.recipe[itemstack:get_name()] = {}
+ end
+ table.insert(unified_inventory.crafts_for.recipe[itemstack:get_name()],options)
+end
+
+
+local craft_type_defaults = {
+ width = 3,
+ height = 3,
+ uses_crafting_grid = false,
+}
+
+
+function unified_inventory.craft_type_defaults(name, options)
+ if not options.description then
+ options.description = name
+ end
+ setmetatable(options, {__index = craft_type_defaults})
+ return options
+end
+
+
+function unified_inventory.register_craft_type(name, options)
+ unified_inventory.registered_craft_types[name] =
+ unified_inventory.craft_type_defaults(name, options)
+end
+
+
+unified_inventory.register_craft_type("normal", {
+ description = "Crafting",
+ icon = "ui_craftgrid_icon.png",
+ width = 3,
+ height = 3,
+ get_shaped_craft_width = function (craft) return craft.width end,
+ dynamic_display_size = function (craft)
+ local w = craft.width
+ local h = math.ceil(table.maxn(craft.items) / craft.width)
+ local g = w < h and h or w
+ return { width = g, height = g }
+ end,
+ uses_crafting_grid = true,
+})
+
+
+unified_inventory.register_craft_type("shapeless", {
+ description = "Mixing",
+ icon = "ui_craftgrid_icon.png",
+ width = 3,
+ height = 3,
+ dynamic_display_size = function (craft)
+ local maxn = table.maxn(craft.items)
+ local g = 1
+ while g*g < maxn do g = g + 1 end
+ return { width = g, height = g }
+ end,
+ uses_crafting_grid = true,
+})
+
+
+unified_inventory.register_craft_type("cooking", {
+ description = "Cooking",
+ icon = "default_furnace_front.png",
+ width = 1,
+ height = 1,
+})
+
+
+unified_inventory.register_craft_type("digging", {
+ description = "Digging",
+ icon = "default_tool_steelpick.png",
+ width = 1,
+ height = 1,
+})
+
+
+function unified_inventory.register_page(name, def)
+ unified_inventory.pages[name] = def
+end
+
+
+function unified_inventory.register_button(name, def)
+ if not def.action then
+ def.action = function(player)
+ unified_inventory.set_inventory_formspec(player, name)
+ end
+ end
+ def.name = name
+ table.insert(unified_inventory.buttons, def)
+end
+
+
+function unified_inventory.is_creative(playername)
+ return minetest.check_player_privs(playername, {creative=true})
+ or minetest.setting_getbool("creative_mode")
+end
+
diff --git a/unified_inventory/bags.lua b/unified_inventory/bags.lua
new file mode 100644
index 0000000..3b86544
--- /dev/null
+++ b/unified_inventory/bags.lua
@@ -0,0 +1,218 @@
+-- Bags for Minetest
+
+-- Copyright (c) 2012 cornernote, Brett O'Donnell <cornernote@gmail.com>
+-- License: GPLv3
+
+local S = unified_inventory.gettext
+
+unified_inventory.register_page("bags", {
+ get_formspec = function(player)
+ local player_name = player:get_player_name()
+ local formspec = "background[0.06,0.99;7.92,7.52;ui_bags_main_form.png]"
+ formspec = formspec.."label[0,0;"..S("Bags").."]"
+ formspec = formspec.."button[0,2;2,0.5;bag1;Bag 1]"
+ formspec = formspec.."button[2,2;2,0.5;bag2;Bag 2]"
+ formspec = formspec.."button[4,2;2,0.5;bag3;Bag 3]"
+ formspec = formspec.."button[6,2;2,0.5;bag4;Bag 4]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ formspec = formspec.."list[detached:"..minetest.formspec_escape(player_name).."_bags;bag1;0.5,1;1,1;]"
+ formspec = formspec.."list[detached:"..minetest.formspec_escape(player_name).."_bags;bag2;2.5,1;1,1;]"
+ formspec = formspec.."list[detached:"..minetest.formspec_escape(player_name).."_bags;bag3;4.5,1;1,1;]"
+ formspec = formspec.."list[detached:"..minetest.formspec_escape(player_name).."_bags;bag4;6.5,1;1,1;]"
+ return {formspec=formspec}
+ end,
+})
+
+unified_inventory.register_button("bags", {
+ type = "image",
+ image = "ui_bags_icon.png",
+ tooltip = S("Bags"),
+ hide_lite=true
+})
+
+
+ unified_inventory.register_page("bag1", {
+ get_formspec = function(player)
+ local stack = player:get_inventory():get_stack("bag1", 1)
+ local image = stack:get_definition().inventory_image
+ local formspec = "image[7,0;1,1;"..image.."]"
+ formspec = formspec.."label[0,0;Bag 1]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ formspec = formspec.."list[current_player;bag1contents;0,1;8,3;]"
+ formspec = formspec.."listring[current_name;bag1contents]"
+ formspec = formspec.."listring[current_player;main]"
+ local slots = stack:get_definition().groups.bagslots
+ if slots == 8 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_sm_form.png]"
+ elseif slots == 16 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_med_form.png]"
+ elseif slots == 24 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]"
+ end
+ return {formspec=formspec}
+ end,
+ })
+ unified_inventory.register_page("bag2", {
+ get_formspec = function(player)
+ local stack = player:get_inventory():get_stack("bag2", 1)
+ local image = stack:get_definition().inventory_image
+ local formspec = "image[7,0;1,1;"..image.."]"
+ formspec = formspec.."label[0,0;Bag 2]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ formspec = formspec.."list[current_player;bag2contents;0,1;8,3;]"
+ formspec = formspec.."listring[current_name;bag2contents]"
+ formspec = formspec.."listring[current_player;main]"
+ local slots = stack:get_definition().groups.bagslots
+ if slots == 8 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_sm_form.png]"
+ elseif slots == 16 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_med_form.png]"
+ elseif slots == 24 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]"
+ end
+ return {formspec=formspec}
+ end,
+ })
+ unified_inventory.register_page("bag3", {
+ get_formspec = function(player)
+ local stack = player:get_inventory():get_stack("bag3", 1)
+ local image = stack:get_definition().inventory_image
+ local formspec = "image[7,0;1,1;"..image.."]"
+ formspec = formspec.."label[0,0;Bag 3]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ formspec = formspec.."list[current_player;bag3contents;0,1;8,3;]"
+ formspec = formspec.."listring[current_name;bag3contents]"
+ formspec = formspec.."listring[current_player;main]"
+ local slots = stack:get_definition().groups.bagslots
+ if slots == 8 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_sm_form.png]"
+ elseif slots == 16 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_med_form.png]"
+ elseif slots == 24 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]"
+ end
+ return {formspec=formspec}
+ end,
+ })
+ unified_inventory.register_page("bag4", {
+ get_formspec = function(player)
+ local stack = player:get_inventory():get_stack("bag4", 1)
+ local image = stack:get_definition().inventory_image
+ local formspec = "image[7,0;1,1;"..image.."]"
+ formspec = formspec.."label[0,0;Bag 4]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ formspec = formspec.."list[current_player;bag4contents;0,1;8,3;]"
+ formspec = formspec.."listring[current_name;bag4contents]"
+ formspec = formspec.."listring[current_player;main]"
+ local slots = stack:get_definition().groups.bagslots
+ if slots == 8 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_sm_form.png]"
+ elseif slots == 16 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_med_form.png]"
+ elseif slots == 24 then
+ formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]"
+ end
+ return {formspec=formspec}
+ end,
+ })
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname ~= "" then
+ return
+ end
+ for i = 1, 4 do
+ if fields["bag"..i] then
+ local stack = player:get_inventory():get_stack("bag"..i, 1)
+ if not stack:get_definition().groups.bagslots then
+ return
+ end
+ unified_inventory.set_inventory_formspec(player, "bag"..i)
+ return
+ end
+ end
+end)
+
+minetest.register_on_joinplayer(function(player)
+ local player_inv = player:get_inventory()
+ local bags_inv = minetest.create_detached_inventory(player:get_player_name().."_bags",{
+ on_put = function(inv, listname, index, stack, player)
+ player:get_inventory():set_stack(listname, index, stack)
+ player:get_inventory():set_size(listname.."contents",
+ stack:get_definition().groups.bagslots)
+ end,
+ on_take = function(inv, listname, index, stack, player)
+ player:get_inventory():set_stack(listname, index, nil)
+ end,
+ allow_put = function(inv, listname, index, stack, player)
+ if stack:get_definition().groups.bagslots then
+ return 1
+ else
+ return 0
+ end
+ end,
+ allow_take = function(inv, listname, index, stack, player)
+ if player:get_inventory():is_empty(listname.."contents") then
+ return stack:get_count()
+ else
+ return 0
+ end
+ end,
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ return 0
+ end,
+ })
+ for i=1,4 do
+ local bag = "bag"..i
+ player_inv:set_size(bag, 1)
+ bags_inv:set_size(bag, 1)
+ bags_inv:set_stack(bag, 1, player_inv:get_stack(bag, 1))
+ end
+end)
+
+-- register bag tools
+minetest.register_tool("unified_inventory:bag_small", {
+ description = S("Small Bag"),
+ inventory_image = "bags_small.png",
+ groups = {bagslots=8},
+})
+
+minetest.register_tool("unified_inventory:bag_medium", {
+ description = S("Medium Bag"),
+ inventory_image = "bags_medium.png",
+ groups = {bagslots=16},
+})
+
+minetest.register_tool("unified_inventory:bag_large", {
+ description = S("Large Bag"),
+ inventory_image = "bags_large.png",
+ groups = {bagslots=24},
+})
+
+-- register bag crafts
+minetest.register_craft({
+ output = "unified_inventory:bag_small",
+ recipe = {
+ {"", "farming:cotton", ""},
+ {"group:wool", "group:wool", "group:wool"},
+ {"group:wool", "group:wool", "group:wool"},
+ },
+})
+
+minetest.register_craft({
+ output = "unified_inventory:bag_medium",
+ recipe = {
+ {"", "", ""},
+ {"farming:cotton", "unified_inventory:bag_small", "farming:cotton"},
+ {"farming:cotton", "unified_inventory:bag_small", "farming:cotton"},
+ },
+})
+
+minetest.register_craft({
+ output = "unified_inventory:bag_large",
+ recipe = {
+ {"", "", ""},
+ {"farming:cotton", "unified_inventory:bag_medium", "farming:cotton"},
+ {"farming:cotton", "unified_inventory:bag_medium", "farming:cotton"},
+ },
+})
+
diff --git a/unified_inventory/callbacks.lua b/unified_inventory/callbacks.lua
new file mode 100644
index 0000000..392e855
--- /dev/null
+++ b/unified_inventory/callbacks.lua
@@ -0,0 +1,189 @@
+local function default_refill(stack)
+ stack:set_count(stack:get_stack_max())
+ local itemdef = minetest.registered_items[stack:get_name()]
+ if itemdef
+ and (itemdef.wear_represents or "mechanical_wear") == "mechanical_wear"
+ and stack:get_wear() ~= 0 then
+ stack:set_wear(0)
+ end
+ return stack
+end
+
+minetest.register_on_joinplayer(function(player)
+ local player_name = player:get_player_name()
+ unified_inventory.players[player_name] = {}
+ unified_inventory.current_index[player_name] = 1
+ unified_inventory.filtered_items_list[player_name] =
+ unified_inventory.items_list
+ unified_inventory.activefilter[player_name] = ""
+ unified_inventory.active_search_direction[player_name] = "nochange"
+ unified_inventory.apply_filter(player, "", "nochange")
+ unified_inventory.current_searchbox[player_name] = ""
+ unified_inventory.alternate[player_name] = 1
+ unified_inventory.current_item[player_name] = nil
+ unified_inventory.current_craft_direction[player_name] = "recipe"
+ unified_inventory.set_inventory_formspec(player,
+ unified_inventory.default)
+
+ -- Refill slot
+ local refill = minetest.create_detached_inventory(player_name.."refill", {
+ allow_put = function(inv, listname, index, stack, player)
+ local player_name = player:get_player_name()
+ if unified_inventory.is_creative(player_name) then
+ return stack:get_count()
+ else
+ return 0
+ end
+ end,
+ on_put = function(inv, listname, index, stack, player)
+ local player_name = player:get_player_name()
+ local handle_refill = (minetest.registered_items[stack:get_name()] or {}).on_refill or default_refill
+ stack = handle_refill(stack)
+ inv:set_stack(listname, index, stack)
+ minetest.sound_play("electricity",
+ {to_player=player_name, gain = 1.0})
+ end,
+ })
+ refill:set_size("main", 1)
+end)
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local player_name = player:get_player_name()
+
+ local ui_peruser,draw_lite_mode = unified_inventory.get_per_player_formspec(player_name)
+
+ if formname ~= "" then
+ return
+ end
+
+ -- always take new search text, even if not searching on it yet
+ if fields.searchbox
+ and fields.searchbox ~= unified_inventory.current_searchbox[player_name] then
+ unified_inventory.current_searchbox[player_name] = fields.searchbox
+ unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name])
+ end
+
+ for i, def in pairs(unified_inventory.buttons) do
+ if fields[def.name] then
+ def.action(player)
+ minetest.sound_play("click",
+ {to_player=player_name, gain = 0.1})
+ return
+ end
+ end
+
+ -- Inventory page controls
+ local start = math.floor(
+ unified_inventory.current_index[player_name] / ui_peruser.items_per_page + 1)
+ local start_i = start
+ local pagemax = math.floor(
+ (#unified_inventory.filtered_items_list[player_name] - 1)
+ / (ui_peruser.items_per_page) + 1)
+
+ if fields.start_list then
+ start_i = 1
+ end
+ if fields.rewind1 then
+ start_i = start_i - 1
+ end
+ if fields.forward1 then
+ start_i = start_i + 1
+ end
+ if fields.rewind3 then
+ start_i = start_i - 3
+ end
+ if fields.forward3 then
+ start_i = start_i + 3
+ end
+ if fields.end_list then
+ start_i = pagemax
+ end
+ if start_i < 1 then
+ start_i = 1
+ end
+ if start_i > pagemax then
+ start_i = pagemax
+ end
+ if start_i ~= start then
+ minetest.sound_play("paperflip1",
+ {to_player=player_name, gain = 1.0})
+ unified_inventory.current_index[player_name] = (start_i - 1) * ui_peruser.items_per_page + 1
+ unified_inventory.set_inventory_formspec(player,
+ unified_inventory.current_page[player_name])
+ end
+
+ local clicked_item
+ for name, value in pairs(fields) do
+ if string.sub(name, 1, 12) == "item_button_" then
+ local new_dir, mangled_item = string.match(name, "^item_button_([a-z]+)_(.*)$")
+ clicked_item = unified_inventory.demangle_for_formspec(mangled_item)
+ if string.sub(clicked_item, 1, 6) == "group:" then
+ minetest.sound_play("click", {to_player=player_name, gain = 0.1})
+ unified_inventory.apply_filter(player, clicked_item, new_dir)
+ return
+ end
+ if new_dir == "recipe"
+ or new_dir == "usage" then
+ unified_inventory.current_craft_direction[player_name] = new_dir
+ end
+ break
+ end
+ end
+ if clicked_item then
+ minetest.sound_play("click",
+ {to_player=player_name, gain = 0.1})
+ local page = unified_inventory.current_page[player_name]
+ local player_creative = unified_inventory.is_creative(player_name)
+ if not player_creative then
+ page = "craftguide"
+ end
+ if page == "craftguide" then
+ unified_inventory.current_item[player_name] = clicked_item
+ unified_inventory.alternate[player_name] = 1
+ unified_inventory.set_inventory_formspec(player, "craftguide")
+ elseif player_creative then
+ local inv = player:get_inventory()
+ local stack = ItemStack(clicked_item)
+ stack:set_count(stack:get_stack_max())
+ if inv:room_for_item("main", stack) then
+ inv:add_item("main", stack)
+ end
+ end
+ end
+
+ if fields.searchbutton then
+ unified_inventory.apply_filter(player, unified_inventory.current_searchbox[player_name], "nochange")
+ unified_inventory.current_searchbox[player_name] = ""
+ unified_inventory.set_inventory_formspec(player,
+ unified_inventory.current_page[player_name])
+ minetest.sound_play("paperflip2",
+ {to_player=player_name, gain = 1.0})
+ end
+
+ -- alternate button
+ if not fields.alternate then
+ return
+ end
+ minetest.sound_play("click",
+ {to_player=player_name, gain = 0.1})
+ local item_name = unified_inventory.current_item[player_name]
+ if not item_name then
+ return
+ end
+ local crafts = unified_inventory.crafts_for[unified_inventory.current_craft_direction[player_name]][item_name]
+ if not crafts then
+ return
+ end
+ local alternates = #crafts
+ if alternates <= 1 then
+ return
+ end
+ local alternate = unified_inventory.alternate[player_name] + 1
+ if alternate > alternates then
+ alternate = 1
+ end
+ unified_inventory.alternate[player_name] = alternate
+ unified_inventory.set_inventory_formspec(player,
+ unified_inventory.current_page[player_name])
+end)
+
diff --git a/unified_inventory/depends.txt b/unified_inventory/depends.txt
new file mode 100644
index 0000000..a1ea556
--- /dev/null
+++ b/unified_inventory/depends.txt
@@ -0,0 +1,4 @@
+creative?
+intllib?
+datastorage?
+
diff --git a/unified_inventory/group.lua b/unified_inventory/group.lua
new file mode 100644
index 0000000..9bf6895
--- /dev/null
+++ b/unified_inventory/group.lua
@@ -0,0 +1,108 @@
+function unified_inventory.canonical_item_spec_matcher(spec)
+ local specname = ItemStack(spec):get_name()
+ if specname:sub(1, 6) == "group:" then
+ local group_names = specname:sub(7):split(",")
+ return function (itemname)
+ local itemdef = minetest.registered_items[itemname]
+ for _, group_name in ipairs(group_names) do
+ if (itemdef.groups[group_name] or 0) == 0 then
+ return false
+ end
+ end
+ return true
+ end
+ else
+ return function (itemname) return itemname == specname end
+ end
+end
+
+function unified_inventory.item_matches_spec(item, spec)
+ local itemname = ItemStack(item):get_name()
+ return unified_inventory.canonical_item_spec_matcher(spec)(itemname)
+end
+
+unified_inventory.registered_group_items = {
+ mesecon_conductor_craftable = "mesecons:wire_00000000_off",
+ stone = "default:cobble",
+ wool = "wool:white",
+}
+
+function unified_inventory.register_group_item(groupname, itemname)
+ unified_inventory.registered_group_items[groupname] = itemname
+end
+
+
+-- This is used when displaying craft recipes, where an ingredient is
+-- specified by group rather than as a specific item. A single-item group
+-- is represented by that item, with the single-item status signalled
+-- in the "sole" field. If the group contains no items at all, the item
+-- field will be nil.
+--
+-- Within a multiple-item group, we prefer to use an item that has the
+-- same specific name as the group, and if there are more than one of
+-- those items we prefer the one registered for the group by a mod.
+-- Among equally-preferred items, we just pick the one with the
+-- lexicographically earliest name.
+--
+-- The parameter to this function isn't just a single group name.
+-- It may be a comma-separated list of group names. This is really a
+-- "group:..." ingredient specification, minus the "group:" prefix.
+
+local function compute_group_item(group_name_list)
+ local group_names = group_name_list:split(",")
+ local candidate_items = {}
+ for itemname, itemdef in pairs(minetest.registered_items) do
+ if (itemdef.groups.not_in_creative_inventory or 0) == 0 then
+ local all = true
+ for _, group_name in ipairs(group_names) do
+ if (itemdef.groups[group_name] or 0) == 0 then
+ all = false
+ end
+ end
+ if all then table.insert(candidate_items, itemname) end
+ end
+ end
+ local num_candidates = #candidate_items
+ if num_candidates == 0 then
+ return {sole = true}
+ elseif num_candidates == 1 then
+ return {item = candidate_items[1], sole = true}
+ end
+ local is_group = {}
+ local registered_rep = {}
+ for _, group_name in ipairs(group_names) do
+ is_group[group_name] = true
+ local rep = unified_inventory.registered_group_items[group_name]
+ if rep then registered_rep[rep] = true end
+ end
+ local bestitem = ""
+ local bestpref = 0
+ for _, item in ipairs(candidate_items) do
+ local pref
+ if registered_rep[item] then
+ pref = 4
+ elseif string.sub(item, 1, 8) == "default:" and is_group[string.sub(item, 9)] then
+ pref = 3
+ elseif is_group[item:gsub("^[^:]*:", "")] then
+ pref = 2
+ else
+ pref = 1
+ end
+ if pref > bestpref or (pref == bestpref and item < bestitem) then
+ bestitem = item
+ bestpref = pref
+ end
+ end
+ return {item = bestitem, sole = false}
+end
+
+
+local group_item_cache = {}
+
+function unified_inventory.get_group_item(group_name)
+ if not group_item_cache[group_name] then
+ group_item_cache[group_name] = compute_group_item(group_name)
+ end
+ return group_item_cache[group_name]
+end
+
diff --git a/unified_inventory/image_credits.txt b/unified_inventory/image_credits.txt
new file mode 100644
index 0000000..b1489e4
--- /dev/null
+++ b/unified_inventory/image_credits.txt
@@ -0,0 +1,66 @@
+bags_small.png:
+ http://www.clker.com/clipart-moneybag-empty.html
+
+bags_medium.png:
+ http://www.clker.com/clipart-backpack-1.html
+
+bags_large.png / ui_bags_icon.png:
+ http://www.clker.com/clipart-backpack-green-brown.html
+
+ui_craftguide_icon.png / ui_craft_icon.png
+ http://commons.wikimedia.org/wiki/File:Advancedsettings.png
+
+ui_doubleleft_icon.png
+ http://commons.wikimedia.org/wiki/File:Media-seek-backward.svg
+
+ui_doubleright_icon.png
+ http://commons.wikimedia.org/wiki/File:Media-seek-forward.svg
+
+ui_left_icon.png / ui_right_icon.png
+ http://commons.wikimedia.org/wiki/File:Media-playback-start.svg
+
+ui_skip_backward_icon.png
+ http://commons.wikimedia.org/wiki/File:Media-skip-backward.svg
+
+ui_skip_forward_icon.png
+ http://commons.wikimedia.org/wiki/File:Media-skip-forward.svg
+
+ui_gohome_icon.png / ui_home_icon.png / ui_sethome_icon.png
+ http://commons.wikimedia.org/wiki/File:Home_256x256.png
+
+ui_moon_icon.png
+ http://commons.wikimedia.org/wiki/File:FullMoon2010.jpg
+
+ui_sun_icon.png
+ http://commons.wikimedia.org/wiki/File:2012-10-13_15-29-35-sun.jpg
+
+ui_trash_icon.png
+ http://www.clker.com/clipart-29090.html
+ http://www.clker.com/clipart-trash.html
+
+ui_search_icon.png
+ http://www.clker.com/clipart-24887.html
+
+ui_off_icon.png / ui_on_icon.png
+ http://www.clker.com/clipart-on-off-switches.html
+
+ui_waypoints_icon.png
+ http://www.clker.com/clipart-map-pin-red.html
+
+ui_circular_arrows_icon.png
+ http://www.clker.com/clipart-circular-arrow-pattern.html
+
+ui_pencil_icon.pnc
+ http://www.clker.com/clipart-2256.html
+
+ui_waypoint_set_icon.png
+ http://www.clker.com/clipart-larger-flag.html
+
+ui_xyz_off_icon.png
+ http://commons.wikimedia.org/wiki/File:No_sign.svg
+
+ui_ok_icon.png
+ http://commons.wikimedia.org/wiki/File:Yes_check.svg
+
+inventory_plus_worldedit_gui.png
+ http://commons.wikimedia.org/wiki/File:Erioll_world_2.svg
diff --git a/unified_inventory/init.lua b/unified_inventory/init.lua
new file mode 100644
index 0000000..b327ecd
--- /dev/null
+++ b/unified_inventory/init.lua
@@ -0,0 +1,69 @@
+-- Unified Inventory for Minetest 0.4.8+
+
+local modpath = minetest.get_modpath(minetest.get_current_modname())
+local worldpath = minetest.get_worldpath()
+
+-- Data tables definitions
+unified_inventory = {
+ activefilter = {},
+ active_search_direction = {},
+ alternate = {},
+ current_page = {},
+ current_searchbox = {},
+ current_index = {},
+ current_item = {},
+ current_craft_direction = {},
+ registered_craft_types = {},
+ crafts_for = {usage = {}, recipe = {} },
+ players = {},
+ items_list_size = 0,
+ items_list = {},
+ filtered_items_list_size = {},
+ filtered_items_list = {},
+ pages = {},
+ buttons = {},
+
+ -- Homepos stuff
+ home_pos = {},
+ home_filename = worldpath.."/unified_inventory_home.home",
+
+ -- Default inventory page
+ default = "craft",
+
+ -- intllib
+ gettext = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end,
+
+ -- "Lite" mode
+ lite_mode = minetest.setting_getbool("unified_inventory_lite"),
+
+ pagecols = 8,
+ pagerows = 10,
+ page_y = 0,
+ formspec_y = 1,
+ main_button_x = 0,
+ main_button_y = 9,
+ craft_result_x = 0.3,
+ craft_result_y = 0.5,
+ form_header_y = 0
+}
+
+-- Disable default creative inventory
+if rawget(_G, "creative_inventory") then
+ function creative_inventory.set_creative_formspec(player, start_i, pagenum)
+ return
+ end
+end
+
+dofile(modpath.."/group.lua")
+dofile(modpath.."/api.lua")
+dofile(modpath.."/internal.lua")
+dofile(modpath.."/callbacks.lua")
+dofile(modpath.."/register.lua")
+dofile(modpath.."/bags.lua")
+
+dofile(modpath.."/item_names.lua")
+
+if minetest.get_modpath("datastorage") then
+ dofile(modpath.."/waypoints.lua")
+end
+
diff --git a/unified_inventory/internal.lua b/unified_inventory/internal.lua
new file mode 100644
index 0000000..b99cf72
--- /dev/null
+++ b/unified_inventory/internal.lua
@@ -0,0 +1,339 @@
+local S = unified_inventory.gettext
+
+-- This pair of encoding functions is used where variable text must go in
+-- button names, where the text might contain formspec metacharacters.
+-- We can escape button names for the formspec, to avoid screwing up
+-- form structure overall, but they then don't get de-escaped, and so
+-- the input we get back from the button contains the formspec escaping.
+-- This is a game engine bug, and in the anticipation that it might be
+-- fixed some day we don't want to rely on it. So for safety we apply
+-- an encoding that avoids all formspec metacharacters.
+function unified_inventory.mangle_for_formspec(str)
+ return string.gsub(str, "([^A-Za-z0-9])", function (c) return string.format("_%d_", string.byte(c)) end)
+end
+function unified_inventory.demangle_for_formspec(str)
+ return string.gsub(str, "_([0-9]+)_", function (v) return string.char(v) end)
+end
+
+function unified_inventory.get_per_player_formspec(player_name)
+ local lite = unified_inventory.lite_mode and not minetest.check_player_privs(player_name, {ui_full=true})
+
+ local ui = {}
+ ui.pagecols = unified_inventory.pagecols
+ ui.pagerows = unified_inventory.pagerows
+ ui.page_y = unified_inventory.page_y
+ ui.formspec_y = unified_inventory.formspec_y
+ ui.main_button_x = unified_inventory.main_button_x
+ ui.main_button_y = unified_inventory.main_button_y
+ ui.craft_result_x = unified_inventory.craft_result_x
+ ui.craft_result_y = unified_inventory.craft_result_y
+ ui.form_header_y = unified_inventory.form_header_y
+
+ if lite then
+ ui.pagecols = 4
+ ui.pagerows = 6
+ ui.page_y = 0.25
+ ui.formspec_y = 0.47
+ ui.main_button_x = 8.2
+ ui.main_button_y = 6.5
+ ui.craft_result_x = 2.8
+ ui.craft_result_y = 3.4
+ ui.form_header_y = -0.1
+ end
+
+ ui.items_per_page = ui.pagecols * ui.pagerows
+ return ui, lite
+end
+
+function unified_inventory.get_formspec(player, page)
+
+ if not player then
+ return ""
+ end
+
+ local player_name = player:get_player_name()
+ local ui_peruser,draw_lite_mode = unified_inventory.get_per_player_formspec(player_name)
+
+ unified_inventory.current_page[player_name] = page
+ local pagedef = unified_inventory.pages[page]
+
+ local formspec = {
+ "size[14,10]",
+ "background[-0.19,-0.25;14.4,10.75;ui_form_bg.png]" -- Background
+ }
+ local n = 3
+
+ if draw_lite_mode then
+ formspec[1] = "size[11,7.7]"
+ formspec[2] = "background[-0.19,-0.2;11.4,8.4;ui_form_bg.png]"
+ end
+
+ if unified_inventory.is_creative(player_name)
+ and page == "craft" then
+ formspec[n] = "background[0,"..(ui_peruser.formspec_y + 2)..";1,1;ui_single_slot.png]"
+ n = n+1
+ end
+
+ -- Current page
+ if not unified_inventory.pages[page] then
+ return "" -- Invalid page name
+ end
+
+ local perplayer_formspec = unified_inventory.get_per_player_formspec(player_name)
+ local fsdata = pagedef.get_formspec(player, perplayer_formspec)
+
+ formspec[n] = fsdata.formspec
+ n = n+1
+
+ local button_row = 0
+ local button_col = 0
+
+ -- Main buttons
+
+ local filtered_inv_buttons = {}
+
+ for i, def in pairs(unified_inventory.buttons) do
+ if not (draw_lite_mode and def.hide_lite) then
+ table.insert(filtered_inv_buttons, def)
+ end
+ end
+
+ for i, def in pairs(filtered_inv_buttons) do
+
+ if draw_lite_mode and i > 4 then
+ button_row = 1
+ button_col = 1
+ end
+
+ if def.type == "image" then
+ formspec[n] = "image_button["
+ formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (i - 1) - button_col * 0.65 * 4)
+ formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * 0.7)..";0.8,0.8;"
+ formspec[n+3] = minetest.formspec_escape(def.image)..";"
+ formspec[n+4] = minetest.formspec_escape(def.name)..";]"
+ formspec[n+5] = "tooltip["..minetest.formspec_escape(def.name)
+ formspec[n+6] = ";"..(def.tooltip or "").."]"
+ n = n+7
+ end
+ end
+
+ if fsdata.draw_inventory ~= false then
+ -- Player inventory
+ formspec[n] = "listcolors[#00000000;#00000000]"
+ formspec[n+1] = "list[current_player;main;0,"..(ui_peruser.formspec_y + 3.5)..";8,4;]"
+ n = n+2
+ end
+
+ if fsdata.draw_item_list == false then
+ return table.concat(formspec, "")
+ end
+
+ -- Controls to flip items pages
+ local start_x = 9.2
+
+ if not draw_lite_mode then
+ formspec[n] =
+ "image_button[" .. (start_x + 0.6 * 0)
+ .. ",9;.8,.8;ui_skip_backward_icon.png;start_list;]"
+ .. "tooltip[start_list;" .. minetest.formspec_escape(S("First page")) .. "]"
+
+ .. "image_button[" .. (start_x + 0.6 * 1)
+ .. ",9;.8,.8;ui_doubleleft_icon.png;rewind3;]"
+ .. "tooltip[rewind3;" .. minetest.formspec_escape(S("Back three pages")) .. "]"
+ .. "image_button[" .. (start_x + 0.6 * 2)
+ .. ",9;.8,.8;ui_left_icon.png;rewind1;]"
+ .. "tooltip[rewind1;" .. minetest.formspec_escape(S("Back one page")) .. "]"
+
+ .. "image_button[" .. (start_x + 0.6 * 3)
+ .. ",9;.8,.8;ui_right_icon.png;forward1;]"
+ .. "tooltip[forward1;" .. minetest.formspec_escape(S("Forward one page")) .. "]"
+ .. "image_button[" .. (start_x + 0.6 * 4)
+ .. ",9;.8,.8;ui_doubleright_icon.png;forward3;]"
+ .. "tooltip[forward3;" .. minetest.formspec_escape(S("Forward three pages")) .. "]"
+
+ .. "image_button[" .. (start_x + 0.6 * 5)
+ .. ",9;.8,.8;ui_skip_forward_icon.png;end_list;]"
+ .. "tooltip[end_list;" .. minetest.formspec_escape(S("Last page")) .. "]"
+ else
+ formspec[n] =
+ "image_button[" .. (8.2 + 0.65 * 0)
+ .. ",5.8;.8,.8;ui_skip_backward_icon.png;start_list;]"
+ .. "tooltip[start_list;" .. minetest.formspec_escape(S("First page")) .. "]"
+ .. "image_button[" .. (8.2 + 0.65 * 1)
+ .. ",5.8;.8,.8;ui_left_icon.png;rewind1;]"
+ .. "tooltip[rewind1;" .. minetest.formspec_escape(S("Back one page")) .. "]"
+ .. "image_button[" .. (8.2 + 0.65 * 2)
+ .. ",5.8;.8,.8;ui_right_icon.png;forward1;]"
+ .. "tooltip[forward1;" .. minetest.formspec_escape(S("Forward one page")) .. "]"
+ .. "image_button[" .. (8.2 + 0.65 * 3)
+ .. ",5.8;.8,.8;ui_skip_forward_icon.png;end_list;]"
+ .. "tooltip[end_list;" .. minetest.formspec_escape(S("Last page")) .. "]"
+ end
+ n = n+1
+
+ -- Search box
+
+ if not draw_lite_mode then
+ formspec[n] = "field[9.5,8.325;3,1;searchbox;;"
+ .. minetest.formspec_escape(unified_inventory.current_searchbox[player_name]) .. "]"
+ formspec[n+1] = "image_button[12.2,8.1;.8,.8;ui_search_icon.png;searchbutton;]"
+ .. "tooltip[searchbutton;" ..S("Search") .. "]"
+ else
+ formspec[n] = "field[8.5,5.225;2.2,1;searchbox;;"
+ .. minetest.formspec_escape(unified_inventory.current_searchbox[player_name]) .. "]"
+ formspec[n+1] = "image_button[10.3,5;.8,.8;ui_search_icon.png;searchbutton;]"
+ .. "tooltip[searchbutton;" ..S("Search") .. "]"
+ end
+ n = n+2
+
+ local no_matches = "No matching items"
+ if draw_lite_mode then
+ no_matches = "No matches."
+ end
+
+ -- Items list
+ if #unified_inventory.filtered_items_list[player_name] == 0 then
+ formspec[n] = "label[8.2,"..ui_peruser.form_header_y..";" .. S(no_matches) .. "]"
+ else
+ local dir = unified_inventory.active_search_direction[player_name]
+ local list_index = unified_inventory.current_index[player_name]
+ local page = math.floor(list_index / (ui_peruser.items_per_page) + 1)
+ local pagemax = math.floor(
+ (#unified_inventory.filtered_items_list[player_name] - 1)
+ / (ui_peruser.items_per_page) + 1)
+ local item = {}
+ for y = 0, ui_peruser.pagerows - 1 do
+ for x = 0, ui_peruser.pagecols - 1 do
+ local name = unified_inventory.filtered_items_list[player_name][list_index]
+ if minetest.registered_items[name] then
+ formspec[n] = "item_image_button["
+ ..(8.2 + x * 0.7)..","
+ ..(ui_peruser.formspec_y + ui_peruser.page_y + y * 0.7)..";.81,.81;"
+ ..name..";item_button_"..dir.."_"
+ ..unified_inventory.mangle_for_formspec(name)..";]"
+ n = n+1
+ list_index = list_index + 1
+ end
+ end
+ end
+ formspec[n] = "label[8.2,"..ui_peruser.form_header_y..";"..S("Page") .. ": "
+ .. S("%s of %s"):format(page,pagemax).."]"
+ end
+ n= n+1
+
+ if unified_inventory.activefilter[player_name] ~= "" then
+ formspec[n] = "label[8.2,"..(ui_peruser.form_header_y + 0.4)..";" .. S("Filter") .. ":]"
+ formspec[n+1] = "label[9.1,"..(ui_peruser.form_header_y + 0.4)..";"..minetest.formspec_escape(unified_inventory.activefilter[player_name]).."]"
+ end
+ return table.concat(formspec, "")
+end
+
+function unified_inventory.set_inventory_formspec(player, page)
+ if player then
+ player:set_inventory_formspec(unified_inventory.get_formspec(player, page))
+ end
+end
+
+--apply filter to the inventory list (create filtered copy of full one)
+function unified_inventory.apply_filter(player, filter, search_dir)
+ if not player then
+ return false
+ end
+ local player_name = player:get_player_name()
+ local lfilter = string.lower(filter)
+ local ffilter
+ if lfilter:sub(1, 6) == "group:" then
+ local groups = lfilter:sub(7):split(",")
+ ffilter = function(name, def)
+ for _, group in ipairs(groups) do
+ if not def.groups[group]
+ or def.groups[group] <= 0 then
+ return false
+ end
+ end
+ return true
+ end
+ else
+ ffilter = function(name, def)
+ local lname = string.lower(name)
+ local ldesc = string.lower(def.description)
+ return string.find(lname, lfilter, 1, true) or string.find(ldesc, lfilter, 1, true)
+ end
+ end
+ unified_inventory.filtered_items_list[player_name]={}
+ for name, def in pairs(minetest.registered_items) do
+ if (not def.groups.not_in_creative_inventory
+ or def.groups.not_in_creative_inventory == 0)
+ and def.description
+ and def.description ~= ""
+ and ffilter(name, def)
+ and (unified_inventory.is_creative(player_name)
+ or unified_inventory.crafts_for.recipe[def.name]) then
+ table.insert(unified_inventory.filtered_items_list[player_name], name)
+ end
+ end
+ table.sort(unified_inventory.filtered_items_list[player_name])
+ unified_inventory.filtered_items_list_size[player_name] = #unified_inventory.filtered_items_list[player_name]
+ unified_inventory.current_index[player_name] = 1
+ unified_inventory.activefilter[player_name] = filter
+ unified_inventory.active_search_direction[player_name] = search_dir
+ unified_inventory.set_inventory_formspec(player,
+ unified_inventory.current_page[player_name])
+end
+
+function unified_inventory.items_in_group(groups)
+ local items = {}
+ for name, item in pairs(minetest.registered_items) do
+ for _, group in pairs(groups:split(',')) do
+ if item.groups[group] then
+ table.insert(items, name)
+ end
+ end
+ end
+ return items
+end
+
+function unified_inventory.sort_inventory(inv)
+ local inlist = inv:get_list("main")
+ local typecnt = {}
+ local typekeys = {}
+ for _, st in ipairs(inlist) do
+ if not st:is_empty() then
+ local n = st:get_name()
+ local w = st:get_wear()
+ local m = st:get_metadata()
+ local k = string.format("%s %05d %s", n, w, m)
+ if not typecnt[k] then
+ typecnt[k] = {
+ name = n,
+ wear = w,
+ metadata = m,
+ stack_max = st:get_stack_max(),
+ count = 0,
+ }
+ table.insert(typekeys, k)
+ end
+ typecnt[k].count = typecnt[k].count + st:get_count()
+ end
+ end
+ table.sort(typekeys)
+ local outlist = {}
+ for _, k in ipairs(typekeys) do
+ local tc = typecnt[k]
+ while tc.count > 0 do
+ local c = math.min(tc.count, tc.stack_max)
+ table.insert(outlist, ItemStack({
+ name = tc.name,
+ wear = tc.wear,
+ metadata = tc.metadata,
+ count = c,
+ }))
+ tc.count = tc.count - c
+ end
+ end
+ if #outlist > #inlist then return end
+ while #outlist < #inlist do
+ table.insert(outlist, ItemStack(nil))
+ end
+ inv:set_list("main", outlist)
+end
diff --git a/unified_inventory/item_names.lua b/unified_inventory/item_names.lua
new file mode 100644
index 0000000..2c92d65
--- /dev/null
+++ b/unified_inventory/item_names.lua
@@ -0,0 +1,53 @@
+-- Based on 4itemnames mod by 4aiman
+
+local wield = {}
+local huds = {}
+local dtimes = {}
+local dlimit = 3 -- HUD element will be hidden after this many seconds
+local air_hud_mod = minetest.get_modpath("4air")
+local hud_mod = minetest.get_modpath("hud")
+
+local function set_hud(player)
+ local player_name = player:get_player_name()
+ local off = {x=0, y=-70}
+ if air_hud_mod or hud_mod then
+ off.y = off.y - 20
+ end
+ huds[player_name] = player:hud_add({
+ hud_elem_type = "text",
+ position = {x=0.5, y=1},
+ offset = off,
+ alignment = {x=0, y=0},
+ number = 0xFFFFFF ,
+ text = "",
+ })
+end
+
+minetest.register_on_joinplayer(function(player)
+ minetest.after(0, set_hud, player)
+end)
+
+minetest.register_globalstep(function(dtime)
+ for _, player in pairs(minetest.get_connected_players()) do
+ local player_name = player:get_player_name()
+ local wstack = player:get_wielded_item():get_name()
+
+ if dtimes[player_name] and dtimes[player_name] < dlimit then
+ dtimes[player_name] = dtimes[player_name] + dtime
+ if dtimes[player_name] > dlimit and huds[player_name] then
+ player:hud_change(huds[player_name], 'text', "")
+ end
+ end
+
+ if wstack ~= wield[player_name] then
+ wield[player_name] = wstack
+ dtimes[player_name] = 0
+ if huds[player_name] then
+ local def = minetest.registered_items[wstack]
+ local desc = def and def.description or ""
+ player:hud_change(huds[player_name], 'text', desc)
+ end
+ end
+ end
+end)
+
diff --git a/unified_inventory/locale/de.txt b/unified_inventory/locale/de.txt
new file mode 100644
index 0000000..d678b68
--- /dev/null
+++ b/unified_inventory/locale/de.txt
@@ -0,0 +1,71 @@
+# Translation mostly by Xanthin
+
+### bags.lua ###
+Bags = Rucksaecke
+Bag 1 = Rucksack 1
+Bag 2 = Rucksack 2
+Bag 3 = Rucksack 3
+Bag 4 = Rucksack 4
+Small Bag = Rucksack (klein)
+Medium Bag = Rucksack (mittel)
+Large Bag = Rucksack (gross)
+
+### inernal.lua ###
+First page = Erste Seite
+Back three pages = Drei Seiten zurueckblaettern
+Back one page = Eine Seiten zurueckblaettern
+Forward one page = Eine Seiten vorblaettern
+Forward three pages = Drei Seiten vorblaettern
+Last page = Letzte Seite
+No matching items = Keine passenden Gegenstände
+Page = Seite
+%s of %s = %s von %s
+Filter = Suche
+Search = Suchen
+
+### register.lua ###
+Can use the creative inventory = Kann das Kreativinventar nutzen
+Home position set to: %s = Ausgangsposition nach: %s gesetzt
+Time of day set to 6am = Tageszeit auf 6 Uhr morgens geaendert
+You don't have the settime privilege! = Du hast nicht das "settime" Privileg!
+Time of day set to 9pm = Tageszeit auf 9 Uhr abends geaendert
+This button has been disabled outside of creative mode to prevent accidental inventory trashing. Use the trash slot instead. = Diese Funktion ist ausserhalb des Kreativmodus deaktiviert um ein versehentliches Loeschen des ganzen Inventars zu verhindern.\nNutze stattdessen das Muellfeld.
+Inventory Cleared! = Inventar geleert!
+Crafting = Bauen
+Trash: = Muell:
+Refill: = Nachfuellen:
+Crafting Guide = Bauanleitung
+Method: = Methode:
+Result: %s = Ergebnis: %s
+crafting = Bauen
+shapeless crafting = Formloses Bauen
+cooking = Kochen
+alloy cooking = Legierung Kochen
+Copy to craft grid: = Kopiere ins Baufeld:
+All = Alles
+Recipe %s of %s = Rezept %s von %s
+Alternate = Alternative
+Crafting Grid =
+
+### waypoints.lua ###
+White = Weiß
+Yellow = Gelb
+Red = Rot
+Green = Gruen
+Blue = Blau
+Waypoints = Markierungen
+Waypoint active = Markierung aktiv
+Waypoint inactive = Markierung inaktiv
+World position = Welt Position
+Name =
+HUD text color =
+Edit waypoint name = Name der Markierung aendern
+Rename waypoint = Markierung umbenennen
+Change color of waypoint display = Farbe der Darstellung der Markierung aendern
+Set waypoint to current location = Setze Markierung zur derzeitigen Position
+Make waypoint visible = Markierung sichtbar machen
+Make waypoint invisible = Markierung verstecken
+Disable display of waypoint coordinates =
+Enable display of waypoint coordinates =
+Finish editing =
+Select Waypoint #%d =
diff --git a/unified_inventory/locale/es.txt b/unified_inventory/locale/es.txt
new file mode 100644
index 0000000..9382c79
--- /dev/null
+++ b/unified_inventory/locale/es.txt
@@ -0,0 +1,72 @@
+# Translation by Diego Martínez <kaeza>
+
+# Template
+### bags.lua ###
+Bags = Bolsas
+Bag 1 = Bolsa 1
+Bag 2 = Bolsa 2
+Bag 3 = Bolsa 3
+Bag 4 = Bolsa 4
+Small Bag = Bolsa Pequeña
+Medium Bag = Bolsa Mediana
+Large Bag = Bolsa Grande
+
+### inernal.lua ###
+First page =
+Back three pages =
+Back one page =
+Forward one page =
+Forward three pages =
+Last page =
+No matching items =
+Page = Página
+%s of %s = %s de %s
+Filter = Filtro
+Search =
+
+### register.lua ###
+Can use the creative inventory = Puede usar el inventario creativo
+Home position set to: %s = Posición de hogar cambiada a: %s
+Time of day set to 6am = Hora del día cambiada a 6AM
+You don't have the settime priviledge! = ¡No tienes el privilegio `settime'!
+Time of day set to 9pm = Hora del día cambiada a 9PM
+This button has been disabled outside of creative mode to prevent accidental inventory trashing. Use the trash slot instead. = Éste botón ha sido deshabilitado para prevenir la destrucción accidental del inventario.\nUsa la ranura para basura en su lugar.
+Inventory Cleared! = ¡Inventario limpio!
+Crafting = Elaboración
+Trash: = Basura:
+Refill: = Rellenar:
+Crafting Guide = Guía de Elaboración
+Method: = Método:
+Result: %s = Resultado: %s
+crafting = elaboración
+shapeless crafting = elaboración sin forma
+cooking = hornear
+alloy cooking = horneado de aleación
+Copy to craft grid: = Copiar al cuadro de elaboración
+All = Todos
+Recipe %s of %s = Receta %s de %s
+Alternate = Alternar
+Crafting Grid =
+
+### waypoints.lua ###
+White = Blanco
+Yellow = Amarillo
+Red = Rojo
+Green = Verde
+Blue = Azul
+Waypoints = Puntos de paso
+Waypoint active = Punto de paso activo
+Waypoint inactive = Punto de paso inactivo
+World position = Posición en el mundo
+Name = Nombre
+HUD text color = Color del HUD
+Edit waypoint name =
+Rename waypoint =
+Change color of waypoint display =
+Set waypoint to current location =
+Make waypoint visible =
+Make waypoint invisible =
+Disable display of waypoint coordinates =
+Enable display of waypoint coordinates =
+Finish editing =
+Select Waypoint #%d =
diff --git a/unified_inventory/locale/fr.txt b/unified_inventory/locale/fr.txt
new file mode 100644
index 0000000..01e975e
--- /dev/null
+++ b/unified_inventory/locale/fr.txt
@@ -0,0 +1,72 @@
+# Translation by kilbith
+
+# Template
+### bags.lua ###
+Bags = Sacs
+Bag 1 = Sac 1
+Bag 2 = Sac 2
+Bag 3 = Sac 3
+Bag 4 = Sac 4
+Small Bag = Petit sac
+Medium Bag = Sac moyen
+Large Bag = Grand sac
+
+### inernal.lua ###
+First page = 1ère page
+Back three pages = 3 pages en arrière
+Back one page = Page précédente
+Forward one page = Page suivante
+Forward three pages = 3 pages en avant
+Last page = Dernière page
+No matching items = Aucun élément correspondant
+Page = Page
+%s of %s = %s de %s
+Filter = Filtre
+Search = Rechercher
+
+### register.lua ###
+Can use the creative inventory = Vous pouvez utiliser l'inventaire créatif
+Home position set to: %s = Position de votre base fixée à : %s
+Time of day set to 6am = Heure fixée à 6h
+You don't have the settime priviledge! = Vous n'avez pas le privilège 'settime' !
+Time of day set to 9pm = Heure fixée à 21h
+This button has been disabled outside of creative mode to prevent accidental inventory trashing.\nUse the trash slot instead. = Ce bouton a été désactivé en dehors du mode créatif pour éviter des saccages dans l'inventaire.\nUtilisez plutôt la case poubelle.
+Inventory Cleared! = Inventaire vidé !
+Crafting = Création
+Trash: = Poubelle :
+Refill: = Remplir :
+Crafting Guide = Guide de création
+Method: = Méthode :
+Result: %s = Résultat : %s
+crafting = fabrication
+shapeless crafting = fabrication sans forme
+cooking = cuisson
+alloy cooking = cuisson des métaux
+Copy to craft grid: = Copier sur la grille de création
+All = Tout
+Recipe %s of %s = Recette %s de %d
+Alternate = Alternative
+Crafting Grid = Grille de création
+
+### waypoints.lua ###
+White = Blanc
+Yellow = Jaune
+Red = Rouge
+Green = Vert
+Blue = Bleu
+Waypoints = Point de passage
+Waypoint active = Point de passage actif
+Waypoint inactive = Point de passage inactif
+World position = Position dans le monde
+Name = Nom
+HUD text color = Couleur de texte du HUD
+Edit waypoint name = Editer le nom du point de passage
+Rename waypoint = Renommer le point de passage
+Change color of waypoint display = Changer la couleur du point de passage
+Set waypoint to current location = Marquer un point de passage à la position actuelle
+Make waypoint visible = Rendre visible le point de passage
+Make waypoint invisible = Rendre invisible le point de passage
+Disable display of waypoint coordinates = Masquer les coordonnées des points de passages
+Enable display of waypoint coordinates = Montrer les coordonnées des points de passages
+Finish editing = Terminer l'édition
+Select Waypoint #%d = Choisir un point de passage #%d
diff --git a/unified_inventory/locale/pl.txt b/unified_inventory/locale/pl.txt
new file mode 100644
index 0000000..33003d8
--- /dev/null
+++ b/unified_inventory/locale/pl.txt
@@ -0,0 +1,71 @@
+# Translation by RealBadAngel
+
+### bags.lua ###
+Bags = Plecaki
+Bag 1 = Plecak 1
+Bag 2 = Plecak 2
+Bag 3 = Plecak 3
+Bag 4 = Plecak 4
+Small Bag = Maly plecak
+Medium Bag = Sredni plecak
+Large Bag = Duzy plecak
+
+### inernal.lua ###
+First page = Pierwsza strona
+Back three pages = 3 strony w tyl
+Back one page = 1 strona w tyl
+Forward one page = 1 strona do przodu
+Forward three pages = 3 strony do przodu
+Last page = Ostatnia strona
+No matching items = Brak pasujacych przedmiotow
+Page = Strona
+%s of %s = %s z %s
+Filter = Filtr
+Search = Szukaj
+
+### register.lua ###
+Can use the creative inventory =
+Home position set to: %s = Pozycja domowa ustawiona na: %s
+Time of day set to 6am = Czas ustawiony na 6:00
+You don't have the settime priviledge! = Nie masz uprawnien do zmiany czasu (settime)!
+Time of day set to 9pm = Czas ustawiony na 21:00
+This button has been disabled outside of creative mode to prevent accidental inventory trashing.\nUse the trash slot instead. =
+Inventory Cleared! =
+Crafting =
+Trash: = Smietnik:
+Refill: = Uzupelnianie:
+Crafting Guide =
+Method: = Metoda:
+Result: %s = Wynik: %s
+crafting =
+shapeless crafting =
+cooking =
+alloy cooking =
+Copy to craft grid: =
+All = Wszystko
+Recipe %s of %s = Recepta %s z %s
+Alternate = Alternatywa
+Crafting Grid =
+
+### waypoints.lua ###
+White = Bialy
+Yellow = Zolty
+Red = Czerwony
+Green = Zielony
+Blue = Niebieski
+Waypoints = Punkty orientacyjne
+Waypoint active = Punkt wlaczony
+Waypoint inactive = Punkt wylaczony
+World position = Pozycja
+Name = Nazwa
+HUD text color = Kolor tekstu HUD
+Edit waypoint name = Edytuj nazwe punktu
+Rename waypoint = Zmien nazwe punktu
+Change color of waypoint display = Zmien kolor punktu
+Set waypoint to current location = Ustaw punkt orientacyjny na biezacej pozycji
+Make waypoint visible = Pokaz punkt
+Make waypoint invisible = Nie pokazuj punktu
+Disable display of waypoint coordinates = Pokazuj koordynaty punktu
+Enable display of waypoint coordinates = Nie pokazuj koordynatow punktu
+Finish editing = Zakoncz edycje
+Select Waypoint #%d = Wybierz punkt #%d
diff --git a/unified_inventory/locale/ru.txt b/unified_inventory/locale/ru.txt
new file mode 100644
index 0000000..1948155
--- /dev/null
+++ b/unified_inventory/locale/ru.txt
@@ -0,0 +1,76 @@
+# Translation by eternal_sorrow
+
+# Template
+### bags.lua ###
+Bags = Сумки
+Bag 1 = Сумка 1
+Bag 2 = Сумка 2
+Bag 3 = Сумка 3
+Bag 4 = Сумка 4
+Small Bag = ÐœÐ°Ð»Ð°Ñ Ñумка
+Medium Bag = СреднÑÑ Ñумка
+Large Bag = Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñумка
+
+### inernal.lua ###
+First page = ÐŸÐµÑ€Ð²Ð°Ñ Ñтраница
+Back three pages = Ðазад на три Ñтраницы
+Back one page = Ðазад на одну Ñтраницу
+Forward one page = Вперед на одну Ñтраницу
+Forward three pages = Вперед на три Ñтраницы
+Last page = ПоÑледнÑÑ Ñтраница
+No matching items = Совпадений нет
+Page = Страница
+%s of %s = %s из %s
+Filter = Фильтр
+Search = ПоиÑк
+
+### register.lua ###
+Can use the creative inventory = Можно иÑпользовать инвентарь творчеÑкого режима
+Home position set to: %s = Дом теперь раÑположен по коодинатам: %s
+Time of day set to 6am = УÑтановлено Ð²Ñ€ÐµÐ¼Ñ 6 утра
+You don't have the settime priviledge! = Вам не разрешено уÑтанавливать времÑ!
+Time of day set to 9pm = УÑтановлено Ð²Ñ€ÐµÐ¼Ñ 9 вечера
+This button has been disabled outside of creative mode to prevent accidental inventory trashing.\nUse the trash slot instead. = Эта кнопка отключена вне творчеÑкого режима, чтобы предотвратить Ñлучайное уничтожение предметов.\nИÑпользуйте Ñлот корзины вмеÑто нее.
+Inventory Cleared! = Инвентарь очищен!
+Crafting = Крафт
+Trash: = Корзина:
+Refill: = Размножить:
+Crafting Guide = Книга рецептов
+Method: = СпоÑоб:
+Result: %s = Результат: %s
+crafting = крафт
+shapeless crafting = беÑформенный крафт
+cooking = жарка
+alloy cooking = приготовление Ñплавов
+Copy to craft grid: = В решетку крафта:
+All = Ð’Ñе
+Recipe %s of %s = Рецепт %s из %s
+Alternate = Следующий
+Crafting Grid = Решетка крафта
+Go home = ОтправитьÑÑ Ð´Ð¾Ð¼Ð¾Ð¹
+Set time to day = День
+Set time to night = Ðочь
+Clear inventory = ОчиÑтить инвентарь
+
+### waypoints.lua ###
+White = Белый
+Yellow = Желтый
+Red = КраÑный
+Green = Зелёный
+Blue = Синий
+Waypoints = Путевые точки
+Waypoint active = ÐŸÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° активна
+Waypoint inactive = ÐŸÑƒÑ‚ÐµÐ²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° неактивна
+World position = ПозициÑ
+Name = ИмÑ
+HUD text color = Цвет текÑта
+Edit waypoint name = Редактировать Ð¸Ð¼Ñ Ð¿ÑƒÑ‚ÐµÐ²Ð¾Ð¹ точки
+Rename waypoint = Переименовать путевую точку
+Change color of waypoint display = Изменить цвет путевой точки
+Set waypoint to current location = УÑтановить путевую точку в текущем меÑтоположении
+Make waypoint visible = Сделать путевую точку видимой
+Make waypoint invisible = Сделать путевую точку невидимой
+Disable display of waypoint coordinates = Отключить отображение координат путевой точки
+Enable display of waypoint coordinates = Включить отображение координат путевой точки
+Finish editing = Завершить редактирование
+Select Waypoint #%d = Выбрать путевую точку №%d
diff --git a/unified_inventory/locale/template.txt b/unified_inventory/locale/template.txt
new file mode 100644
index 0000000..ae382e3
--- /dev/null
+++ b/unified_inventory/locale/template.txt
@@ -0,0 +1,72 @@
+# Translation by
+
+# Template
+### bags.lua ###
+Bags =
+Bag 1 =
+Bag 2 =
+Bag 3 =
+Bag 4 =
+Small Bag =
+Medium Bag =
+Large Bag =
+
+### inernal.lua ###
+First page =
+Back three pages =
+Back one page =
+Forward one page =
+Forward three pages =
+Last page =
+No matching items =
+Page =
+%s of %s =
+Filter =
+Search =
+
+### register.lua ###
+Can use the creative inventory =
+Home position set to: %s =
+Time of day set to 6am =
+You don't have the settime priviledge! =
+Time of day set to 9pm =
+This button has been disabled outside of creative mode to prevent accidental inventory trashing.\nUse the trash slot instead. =
+Inventory Cleared! =
+Crafting =
+Trash: =
+Refill: =
+Crafting Guide =
+Method: =
+Result: %s =
+crafting =
+shapeless crafting =
+cooking =
+alloy cooking =
+Copy to craft grid: =
+All =
+Recipe %s of %s =
+Alternate =
+Crafting Grid =
+
+### waypoints.lua ###
+White =
+Yellow =
+Red =
+Green =
+Blue =
+Waypoints =
+Waypoint active =
+Waypoint inactive =
+World position =
+Name =
+HUD text color =
+Edit waypoint name =
+Rename waypoint =
+Change color of waypoint display =
+Set waypoint to current location =
+Make waypoint visible =
+Make waypoint invisible =
+Disable display of waypoint coordinates =
+Enable display of waypoint coordinates =
+Finish editing =
+Select Waypoint #%d =
diff --git a/unified_inventory/locale/tr.txt b/unified_inventory/locale/tr.txt
new file mode 100644
index 0000000..c1d3207
--- /dev/null
+++ b/unified_inventory/locale/tr.txt
@@ -0,0 +1,72 @@
+# Translation by Mahmutelmas06@hotmail.com
+
+# Template
+### bags.lua ###
+Bags = Çantalarım
+Bag 1 = 1. Çanta
+Bag 2 = 2. Çanta
+Bag 3 = 3. Çanta
+Bag 4 = 4. Çanta
+Small Bag = Küçük Çanta
+Medium Bag = Çanta
+Large Bag = Büyük Çanta
+
+### inernal.lua ###
+First page = Ä°lk Sayfa
+Back three pages = 3 Sayfa Gerile
+Back one page = Geri
+Forward one page = Ä°leri
+Forward three pages = 3 Sayfa Ä°lerile
+Last page = Son Sayfa
+No matching items = EÅŸleÅŸme yok
+Page = Sayfa
+%s of %s = %s dan %s
+Filter = Süzgeç
+Search = Ara
+
+### register.lua ###
+Can use the creative inventory = Yaratıcı envanteri kullanabilir
+Home position set to: %s = Yeni eviniz: %s
+Time of day set to 6am = Saat 06:00 olarak ayarlandı
+You don't have the settime priviledge = Saati düzenleme yetkiniz yok!
+Time of day set to 9pm = Saat 19:00 olarak ayarlandı
+This button has been disabled outside of creative mode to prevent accidental inventory trashing.\nUse the trash slot instead. = Yaratıcı modu dışında iken bu tuş kullanılamaz.
+Inventory Cleared! = Envanter temizlendi!
+Crafting = Ãœretim
+Trash: = Çöp
+Refill: = Doldur
+Crafting Guide = Kılavuz
+Method: = Yöntem
+Result: %s = Çıktı: %s
+crafting = üretim
+shapeless crafting = şekilsiz üretim
+cooking = piÅŸirme
+alloy cooking = karıştırma
+Copy to craft grid: = Ãœretim tablosuna kopyala
+All = Tümü
+Recipe %s of %s = %s dan %s tarifi
+Alternate = Altarnatif
+Crafting Grid = Ãœretim tablosu
+
+### waypoints.lua ###
+White = Beyaz
+Yellow = Sarı
+Red = Kırmızı
+Green = YeÅŸil
+Blue = Mavi
+Waypoints = Konum Noktaları
+Waypoint active = Konum Etkin
+Waypoint inactive = Konum Devredışı
+World position = Dünya konumu
+Name = Ä°sim
+HUD text color = Metin rengi
+Edit waypoint name = Konum Noktasını Düzenle
+Rename waypoint = Konum Noktasını Adlandır
+Change color of waypoint display = Konum Gösterge Rengi
+Set waypoint to current location = Bulunduğun noktayı işaretle
+Make waypoint visible = Konumlar görünür
+Make waypoint invisible = Konumlar gözükmez
+Disable display of waypoint coordinates = Koordinatları gizle
+Enable display of waypoint coordinates = Koordinatları göster
+Finish editing = Düzenleme bitti
+Select Waypoint #%d = #%d konum noktası seç
diff --git a/unified_inventory/register.lua b/unified_inventory/register.lua
new file mode 100644
index 0000000..b47b1c6
--- /dev/null
+++ b/unified_inventory/register.lua
@@ -0,0 +1,497 @@
+local S = unified_inventory.gettext
+
+minetest.register_privilege("creative", {
+ description = "Can use the creative inventory",
+ give_to_singleplayer = false,
+})
+
+minetest.register_privilege("ui_full", {
+ description = "Forces UI to display in Full mode when Lite mode is configured globally",
+ give_to_singleplayer = false,
+})
+
+
+local trash = minetest.create_detached_inventory("trash", {
+ --allow_put = function(inv, listname, index, stack, player)
+ -- if unified_inventory.is_creative(player:get_player_name()) then
+ -- return stack:get_count()
+ -- else
+ -- return 0
+ -- end
+ --end,
+ on_put = function(inv, listname, index, stack, player)
+ inv:set_stack(listname, index, nil)
+ local player_name = player:get_player_name()
+ minetest.sound_play("trash", {to_player=player_name, gain = 1.0})
+ end,
+})
+trash:set_size("main", 1)
+
+unified_inventory.register_button("craft", {
+ type = "image",
+ image = "ui_craft_icon.png",
+ tooltip = S("Crafting Grid")
+})
+
+unified_inventory.register_button("craftguide", {
+ type = "image",
+ image = "ui_craftguide_icon.png",
+ tooltip = S("Crafting Guide")
+})
+
+unified_inventory.register_button("home_gui_set", {
+ type = "image",
+ image = "ui_sethome_icon.png",
+ tooltip = S("Set home position"),
+ hide_lite=true,
+ action = function(player)
+ local player_name = player:get_player_name()
+ if minetest.check_player_privs(player_name, {home=true}) then
+ unified_inventory.set_home(player, player:getpos())
+ local home = unified_inventory.home_pos[player_name]
+ if home ~= nil then
+ minetest.sound_play("dingdong",
+ {to_player=player_name, gain = 1.0})
+ minetest.chat_send_player(player_name,
+ S("Home position set to: %s"):format(minetest.pos_to_string(home)))
+ end
+ else
+ minetest.chat_send_player(player_name,
+ S("You don't have the \"home\" privilege!"))
+ end
+ end,
+})
+
+unified_inventory.register_button("home_gui_go", {
+ type = "image",
+ image = "ui_gohome_icon.png",
+ tooltip = S("Go home"),
+ hide_lite=true,
+ action = function(player)
+ local player_name = player:get_player_name()
+ if minetest.check_player_privs(player_name, {home=true}) then
+ minetest.sound_play("teleport",
+ {to_player=player:get_player_name(), gain = 1.0})
+ unified_inventory.go_home(player)
+ else
+ minetest.chat_send_player(player_name,
+ S("You don't have the \"home\" privilege!"))
+ end
+ end,
+})
+
+unified_inventory.register_button("misc_set_day", {
+ type = "image",
+ image = "ui_sun_icon.png",
+ tooltip = S("Set time to day"),
+ hide_lite=true,
+ action = function(player)
+ local player_name = player:get_player_name()
+ if minetest.check_player_privs(player_name, {settime=true}) then
+ minetest.sound_play("birds",
+ {to_player=player_name, gain = 1.0})
+ minetest.set_timeofday((6000 % 24000) / 24000)
+ minetest.chat_send_player(player_name,
+ S("Time of day set to 6am"))
+ else
+ minetest.chat_send_player(player_name,
+ S("You don't have the settime privilege!"))
+ end
+ end,
+})
+
+unified_inventory.register_button("misc_set_night", {
+ type = "image",
+ image = "ui_moon_icon.png",
+ tooltip = S("Set time to night"),
+ hide_lite=true,
+ action = function(player)
+ local player_name = player:get_player_name()
+ if minetest.check_player_privs(player_name, {settime=true}) then
+ minetest.sound_play("owl",
+ {to_player=player_name, gain = 1.0})
+ minetest.set_timeofday((21000 % 24000) / 24000)
+ minetest.chat_send_player(player_name,
+ S("Time of day set to 9pm"))
+ else
+ minetest.chat_send_player(player_name,
+ S("You don't have the settime privilege!"))
+ end
+ end,
+})
+
+unified_inventory.register_button("clear_inv", {
+ type = "image",
+ image = "ui_trash_icon.png",
+ tooltip = S("Clear inventory"),
+ action = function(player)
+ local player_name = player:get_player_name()
+ if not unified_inventory.is_creative(player_name) then
+ minetest.chat_send_player(player_name,
+ S("This button has been disabled outside"
+ .." of creative mode to prevent"
+ .." accidental inventory trashing."
+ .."\nUse the trash slot instead."))
+ return
+ end
+ player:get_inventory():set_list("main", {})
+ minetest.chat_send_player(player_name, 'Inventory Cleared!')
+ minetest.sound_play("trash_all",
+ {to_player=player_name, gain = 1.0})
+ end,
+})
+
+unified_inventory.register_page("craft", {
+ get_formspec = function(player, perplayer_formspec)
+
+ local formspecy = perplayer_formspec.formspec_y
+ local formheadery = perplayer_formspec.form_header_y
+
+ local player_name = player:get_player_name()
+ local formspec = "background[2,"..formspecy..";6,3;ui_crafting_form.png]"
+ formspec = formspec.."background[0,"..(formspecy + 3.5)..";8,4;ui_main_inventory.png]"
+ formspec = formspec.."label[0,"..formheadery..";Crafting]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ formspec = formspec.."list[current_player;craftpreview;6,"..formspecy..";1,1;]"
+ formspec = formspec.."list[current_player;craft;2,"..formspecy..";3,3;]"
+ formspec = formspec.."label[7,"..(formspecy + 1.5)..";" .. S("Trash:") .. "]"
+ formspec = formspec.."list[detached:trash;main;7,"..(formspecy + 2)..";1,1;]"
+ formspec = formspec.."listring[current_name;craft]"
+ formspec = formspec.."listring[current_player;main]"
+ if unified_inventory.is_creative(player_name) then
+ formspec = formspec.."label[0,"..(formspecy + 1.5)..";" .. S("Refill:") .. "]"
+ formspec = formspec.."list[detached:"..minetest.formspec_escape(player_name).."refill;main;0,"..(formspecy +2)..";1,1;]"
+ end
+ return {formspec=formspec}
+ end,
+})
+
+-- stack_image_button(): generate a form button displaying a stack of items
+--
+-- Normally a simple item_image_button[] is used. If the stack contains
+-- more than one item, item_image_button[] doesn't have an option to
+-- display an item count in the way that an inventory slot does, so
+-- we have to fake it using the label facility.
+--
+-- The specified item may be a group. In that case, the group will be
+-- represented by some item in the group, along with a flag indicating
+-- that it's a group. If the group contains only one item, it will be
+-- treated as if that item had been specified directly.
+
+local function stack_image_button(x, y, w, h, buttonname_prefix, item)
+ local name = item:get_name()
+ local count = item:get_count()
+ local show_is_group = false
+ local displayitem = name
+ local selectitem = name
+ if name:sub(1, 6) == "group:" then
+ local group_name = name:sub(7)
+ local group_item = unified_inventory.get_group_item(group_name)
+ show_is_group = not group_item.sole
+ displayitem = group_item.item or "unknown"
+ selectitem = group_item.sole and displayitem or name
+ end
+ local label = string.format("\n\n%s%7d", show_is_group and " G\n" or " ", count):gsub(" 1$", " .")
+ if label == "\n\n ." then label = "" end
+ return string.format("item_image_button[%f,%f;%u,%u;%s;%s;%s]",
+ x, y, w, h,
+ minetest.formspec_escape(displayitem),
+ minetest.formspec_escape(buttonname_prefix..unified_inventory.mangle_for_formspec(selectitem)),
+ label)
+end
+
+local recipe_text = {
+ recipe = "Recipe",
+ usage = "Usage",
+}
+local no_recipe_text = {
+ recipe = "No recipes",
+ usage = "No usages",
+}
+local role_text = {
+ recipe = "Result",
+ usage = "Ingredient",
+}
+local other_dir = {
+ recipe = "usage",
+ usage = "recipe",
+}
+
+unified_inventory.register_page("craftguide", {
+ get_formspec = function(player, perplayer_formspec)
+
+ local formspecy = perplayer_formspec.formspec_y
+ local formheadery = perplayer_formspec.form_header_y
+ local craftresultx = perplayer_formspec.craft_result_x
+ local craftresulty = perplayer_formspec.craft_result_y
+
+ local player_name = player:get_player_name()
+ local player_privs = minetest.get_player_privs(player_name)
+ local formspec = ""
+ formspec = formspec.."background[0,"..(formspecy + 3.5)..";8,4;ui_main_inventory.png]"
+ formspec = formspec.."label[0,"..formheadery..";" .. S("Crafting Guide") .. "]"
+ formspec = formspec.."listcolors[#00000000;#00000000]"
+ local item_name = unified_inventory.current_item[player_name]
+ if not item_name then return {formspec=formspec} end
+
+ local dir = unified_inventory.current_craft_direction[player_name]
+ local rdir
+ if dir == "recipe" then rdir = "usage" end
+ if dir == "usage" then rdir = "recipe" end
+ local crafts = unified_inventory.crafts_for[dir][item_name]
+ local alternate = unified_inventory.alternate[player_name]
+ local alternates, craft
+ if crafts ~= nil and #crafts > 0 then
+ alternates = #crafts
+ craft = crafts[alternate]
+ end
+
+ formspec = formspec.."background[0.5,"..(formspecy + 0.2)..";8,3;ui_craftguide_form.png]"
+ formspec = formspec.."textarea["..craftresultx..","..craftresulty
+ ..";10,1;;"..minetest.formspec_escape(role_text[dir]..": "..item_name)..";]"
+ formspec = formspec..stack_image_button(0, formspecy, 1.1, 1.1, "item_button_"
+ .. rdir .. "_", ItemStack(item_name))
+
+ if not craft then
+ formspec = formspec.."label[5.5,"..(formspecy + 2.35)..";"
+ ..minetest.formspec_escape(no_recipe_text[dir]).."]"
+ local no_pos = dir == "recipe" and 4.5 or 6.5
+ local item_pos = dir == "recipe" and 6.5 or 4.5
+ formspec = formspec.."image["..no_pos..","..formspecy..";1.1,1.1;ui_no.png]"
+ formspec = formspec..stack_image_button(item_pos, formspecy, 1.1, 1.1, "item_button_"
+ ..other_dir[dir].."_", ItemStack(item_name))
+ if player_privs.give == true then
+ formspec = formspec.."label[0,"..(formspecy + 2.10)..";" .. S("Give me:") .. "]"
+ .."button[0, "..(formspecy + 2.7)..";0.6,0.5;craftguide_giveme_1;1]"
+ .."button[0.6,"..(formspecy + 2.7)..";0.7,0.5;craftguide_giveme_10;10]"
+ .."button[1.3,"..(formspecy + 2.7)..";0.8,0.5;craftguide_giveme_99;99]"
+ end
+ return {formspec = formspec}
+ end
+
+ local craft_type = unified_inventory.registered_craft_types[craft.type] or
+ unified_inventory.craft_type_defaults(craft.type, {})
+ if craft_type.icon then
+ formspec = formspec..string.format(" image[%f,%f;%f,%f;%s]",5.7,(formspecy + 0.05),0.5,0.5,craft_type.icon)
+ end
+ formspec = formspec.."label[5.5,"..(formspecy + 1)..";" .. minetest.formspec_escape(craft_type.description).."]"
+ formspec = formspec..stack_image_button(6.5, formspecy, 1.1, 1.1, "item_button_usage_", ItemStack(craft.output))
+ local display_size = craft_type.dynamic_display_size and craft_type.dynamic_display_size(craft) or { width = craft_type.width, height = craft_type.height }
+ local craft_width = craft_type.get_shaped_craft_width and craft_type.get_shaped_craft_width(craft) or display_size.width
+
+ -- This keeps recipes aligned to the right,
+ -- so that they're close to the arrow.
+ local xoffset = 1.5 + (3 - display_size.width)
+ for y = 1, display_size.height do
+ for x = 1, display_size.width do
+ local item
+ if craft and x <= craft_width then
+ item = craft.items[(y-1) * craft_width + x]
+ end
+ if item then
+ formspec = formspec..stack_image_button(
+ xoffset + x, formspecy - 1 + y, 1.1, 1.1,
+ "item_button_recipe_",
+ ItemStack(item))
+ else
+ -- Fake buttons just to make grid
+ formspec = formspec.."image_button["
+ ..tostring(xoffset + x)..","..tostring(formspecy - 1 + y)
+ ..";1,1;ui_blank_image.png;;]"
+ end
+ end
+ end
+
+ if craft_type.uses_crafting_grid then
+ formspec = formspec.."label[0,"..(formspecy + 0.9)..";" .. S("To craft grid:") .. "]"
+ .."button[0, "..(formspecy + 1.5)..";0.6,0.5;craftguide_craft_1;1]"
+ .."button[0.6,"..(formspecy + 1.5)..";0.7,0.5;craftguide_craft_10;10]"
+ .."button[1.3,"..(formspecy + 1.5)..";0.8,0.5;craftguide_craft_max;" .. S("All") .. "]"
+ end
+ if player_privs.give then
+ formspec = formspec.."label[0,"..(formspecy + 2.1)..";" .. S("Give me:") .. "]"
+ .."button[0, "..(formspecy + 2.7)..";0.6,0.5;craftguide_giveme_1;1]"
+ .."button[0.6,"..(formspecy + 2.7)..";0.7,0.5;craftguide_giveme_10;10]"
+ .."button[1.3,"..(formspecy + 2.7)..";0.8,0.5;craftguide_giveme_99;99]"
+ end
+
+ if alternates and alternates > 1 then
+ formspec = formspec.."label[5.5,"..(formspecy + 1.6)..";"..recipe_text[dir].." "
+ ..tostring(alternate).." of "
+ ..tostring(alternates).."]"
+ .."button[5.5,"..(formspecy + 2)..";2,1;alternate;" .. S("Alternate") .. "]"
+ end
+ return {formspec = formspec}
+ end,
+})
+
+local function craftguide_giveme(player, formname, fields)
+ local amount
+ for k, v in pairs(fields) do
+ amount = k:match("craftguide_giveme_(.*)")
+ if amount then break end
+ end
+ if not amount then return end
+
+ amount = tonumber(amount)
+ if amount == 0 then return end
+
+ local player_name = player:get_player_name()
+
+ local output = unified_inventory.current_item[player_name]
+ if (not output) or (output == "") then return end
+
+ local player_inv = player:get_inventory()
+
+ player_inv:add_item("main", {name = output, count = amount})
+end
+
+-- tells if an item can be moved and returns an index if so
+local function item_fits(player_inv, craft_item, needed_item)
+ local need_group = string.sub(needed_item, 1, 6) == "group:"
+ if need_group then
+ need_group = string.sub(needed_item, 7)
+ end
+ if craft_item
+ and not craft_item:is_empty() then
+ local ciname = craft_item:get_name()
+
+ -- abort if the item there isn't usable
+ if ciname ~= needed_item
+ and not need_group then
+ return
+ end
+
+ -- abort if no item fits onto it
+ if craft_item:get_count() >= craft_item:get_definition().stack_max then
+ return
+ end
+
+ -- use the item there if it's in the right group and a group item is needed
+ if need_group then
+ if minetest.get_item_group(ciname, need_group) == 0 then
+ return
+ end
+ needed_item = ciname
+ need_group = false
+ end
+ end
+
+ if need_group then
+ -- search an item of the specific group
+ for i,item in pairs(player_inv:get_list("main")) do
+ if not item:is_empty()
+ and minetest.get_item_group(item:get_name(), need_group) > 0 then
+ return i
+ end
+ end
+
+ -- no index found
+ return
+ end
+
+ -- search an item with a the name needed_item
+ for i,item in pairs(player_inv:get_list("main")) do
+ if not item:is_empty()
+ and item:get_name() == needed_item then
+ return i
+ end
+ end
+
+ -- no index found
+end
+
+-- modifies the player inventory and returns the changed craft_item if possible
+local function move_item(player_inv, craft_item, needed_item)
+ local stackid = item_fits(player_inv, craft_item, needed_item)
+ if not stackid then
+ return
+ end
+ local wanted_stack = player_inv:get_stack("main", stackid)
+ local taken_item = wanted_stack:take_item()
+ player_inv:set_stack("main", stackid, wanted_stack)
+
+ if not craft_item
+ or craft_item:is_empty() then
+ return taken_item
+ end
+
+ craft_item:add_item(taken_item)
+ return craft_item
+end
+
+local function craftguide_craft(player, formname, fields)
+ local amount
+ for k, v in pairs(fields) do
+ amount = k:match("craftguide_craft_(.*)")
+ if amount then break end
+ end
+ if not amount then return end
+ local player_name = player:get_player_name()
+
+ local output = unified_inventory.current_item[player_name]
+ if (not output) or (output == "") then return end
+
+ local player_inv = player:get_inventory()
+
+ local crafts = unified_inventory.crafts_for[unified_inventory.current_craft_direction[player_name]][output]
+ if (not crafts) or (#crafts == 0) then return end
+
+ local alternate = unified_inventory.alternate[player_name]
+
+ local craft = crafts[alternate]
+ if craft.width > 3 then return end
+
+ local needed = craft.items
+
+ local craft_list = player_inv:get_list("craft")
+
+ local width = craft.width
+ if width == 0 then
+ -- Shapeless recipe
+ width = 3
+ end
+
+ amount = tonumber(amount) or 99
+ --[[
+ if amount == "max" then
+ amount = 99 -- Arbitrary; need better way to do this.
+ else
+ amount = tonumber(amount)
+ end--]]
+
+ for iter = 1, amount do
+ local index = 1
+ for y = 1, 3 do
+ for x = 1, width do
+ local needed_item = needed[index]
+ if needed_item then
+ local craft_index = ((y - 1) * 3) + x
+ local craft_item = craft_list[craft_index]
+ local newitem = move_item(player_inv, craft_item, needed_item)
+ if newitem then
+ craft_list[craft_index] = newitem
+ end
+ end
+ index = index + 1
+ end
+ end
+ end
+
+ player_inv:set_list("craft", craft_list)
+
+ unified_inventory.set_inventory_formspec(player, "craft")
+end
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ for k, v in pairs(fields) do
+ if k:match("craftguide_craft_") then
+ craftguide_craft(player, formname, fields)
+ return
+ end
+ if k:match("craftguide_giveme_") then
+ craftguide_giveme(player, formname, fields)
+ return
+ end
+ end
+end)
diff --git a/unified_inventory/sounds/birds.ogg b/unified_inventory/sounds/birds.ogg
new file mode 100644
index 0000000..4a93395
--- /dev/null
+++ b/unified_inventory/sounds/birds.ogg
Binary files differ
diff --git a/unified_inventory/sounds/click.ogg b/unified_inventory/sounds/click.ogg
new file mode 100644
index 0000000..3db63a0
--- /dev/null
+++ b/unified_inventory/sounds/click.ogg
Binary files differ
diff --git a/unified_inventory/sounds/dingdong.ogg b/unified_inventory/sounds/dingdong.ogg
new file mode 100644
index 0000000..2c9d7ef
--- /dev/null
+++ b/unified_inventory/sounds/dingdong.ogg
Binary files differ
diff --git a/unified_inventory/sounds/electricity.ogg b/unified_inventory/sounds/electricity.ogg
new file mode 100644
index 0000000..4cd7c84
--- /dev/null
+++ b/unified_inventory/sounds/electricity.ogg
Binary files differ
diff --git a/unified_inventory/sounds/owl.ogg b/unified_inventory/sounds/owl.ogg
new file mode 100644
index 0000000..f30d0b3
--- /dev/null
+++ b/unified_inventory/sounds/owl.ogg
Binary files differ
diff --git a/unified_inventory/sounds/paperflip1.ogg b/unified_inventory/sounds/paperflip1.ogg
new file mode 100644
index 0000000..eaed13f
--- /dev/null
+++ b/unified_inventory/sounds/paperflip1.ogg
Binary files differ
diff --git a/unified_inventory/sounds/paperflip2.ogg b/unified_inventory/sounds/paperflip2.ogg
new file mode 100644
index 0000000..321bc48
--- /dev/null
+++ b/unified_inventory/sounds/paperflip2.ogg
Binary files differ
diff --git a/unified_inventory/sounds/teleport.ogg b/unified_inventory/sounds/teleport.ogg
new file mode 100644
index 0000000..ca32f74
--- /dev/null
+++ b/unified_inventory/sounds/teleport.ogg
Binary files differ
diff --git a/unified_inventory/sounds/trash.ogg b/unified_inventory/sounds/trash.ogg
new file mode 100644
index 0000000..51e4f24
--- /dev/null
+++ b/unified_inventory/sounds/trash.ogg
Binary files differ
diff --git a/unified_inventory/sounds/trash_all.ogg b/unified_inventory/sounds/trash_all.ogg
new file mode 100644
index 0000000..85c3f66
--- /dev/null
+++ b/unified_inventory/sounds/trash_all.ogg
Binary files differ
diff --git a/unified_inventory/textures/bags_large.png b/unified_inventory/textures/bags_large.png
new file mode 100644
index 0000000..38cf6bc
--- /dev/null
+++ b/unified_inventory/textures/bags_large.png
Binary files differ
diff --git a/unified_inventory/textures/bags_medium.png b/unified_inventory/textures/bags_medium.png
new file mode 100644
index 0000000..f048690
--- /dev/null
+++ b/unified_inventory/textures/bags_medium.png
Binary files differ
diff --git a/unified_inventory/textures/bags_small.png b/unified_inventory/textures/bags_small.png
new file mode 100644
index 0000000..bf6fe6a
--- /dev/null
+++ b/unified_inventory/textures/bags_small.png
Binary files differ
diff --git a/unified_inventory/textures/ui_1_icon.png b/unified_inventory/textures/ui_1_icon.png
new file mode 100644
index 0000000..43605e0
--- /dev/null
+++ b/unified_inventory/textures/ui_1_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_2_icon.png b/unified_inventory/textures/ui_2_icon.png
new file mode 100644
index 0000000..dd64510
--- /dev/null
+++ b/unified_inventory/textures/ui_2_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_3_icon.png b/unified_inventory/textures/ui_3_icon.png
new file mode 100644
index 0000000..132dc3a
--- /dev/null
+++ b/unified_inventory/textures/ui_3_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_4_icon.png b/unified_inventory/textures/ui_4_icon.png
new file mode 100644
index 0000000..9b7e430
--- /dev/null
+++ b/unified_inventory/textures/ui_4_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_5_icon.png b/unified_inventory/textures/ui_5_icon.png
new file mode 100644
index 0000000..699e08b
--- /dev/null
+++ b/unified_inventory/textures/ui_5_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_bags_icon.png b/unified_inventory/textures/ui_bags_icon.png
new file mode 100644
index 0000000..38cf6bc
--- /dev/null
+++ b/unified_inventory/textures/ui_bags_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_bags_lg_form.png b/unified_inventory/textures/ui_bags_lg_form.png
new file mode 100644
index 0000000..15f511d
--- /dev/null
+++ b/unified_inventory/textures/ui_bags_lg_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_bags_main_form.png b/unified_inventory/textures/ui_bags_main_form.png
new file mode 100644
index 0000000..26e6938
--- /dev/null
+++ b/unified_inventory/textures/ui_bags_main_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_bags_med_form.png b/unified_inventory/textures/ui_bags_med_form.png
new file mode 100644
index 0000000..f786806
--- /dev/null
+++ b/unified_inventory/textures/ui_bags_med_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_bags_sm_form.png b/unified_inventory/textures/ui_bags_sm_form.png
new file mode 100644
index 0000000..c77ff7c
--- /dev/null
+++ b/unified_inventory/textures/ui_bags_sm_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_blank_image.png b/unified_inventory/textures/ui_blank_image.png
new file mode 100644
index 0000000..f9bcda2
--- /dev/null
+++ b/unified_inventory/textures/ui_blank_image.png
Binary files differ
diff --git a/unified_inventory/textures/ui_blue_icon_background.png b/unified_inventory/textures/ui_blue_icon_background.png
new file mode 100644
index 0000000..b4fa356
--- /dev/null
+++ b/unified_inventory/textures/ui_blue_icon_background.png
Binary files differ
diff --git a/unified_inventory/textures/ui_circular_arrows_icon.png b/unified_inventory/textures/ui_circular_arrows_icon.png
new file mode 100644
index 0000000..968e404
--- /dev/null
+++ b/unified_inventory/textures/ui_circular_arrows_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_craft_icon.png b/unified_inventory/textures/ui_craft_icon.png
new file mode 100644
index 0000000..8884c61
--- /dev/null
+++ b/unified_inventory/textures/ui_craft_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_craftgrid_icon.png b/unified_inventory/textures/ui_craftgrid_icon.png
new file mode 100644
index 0000000..5b8025a
--- /dev/null
+++ b/unified_inventory/textures/ui_craftgrid_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_craftguide_form.png b/unified_inventory/textures/ui_craftguide_form.png
new file mode 100644
index 0000000..72572b5
--- /dev/null
+++ b/unified_inventory/textures/ui_craftguide_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_craftguide_icon.png b/unified_inventory/textures/ui_craftguide_icon.png
new file mode 100644
index 0000000..d5b76d2
--- /dev/null
+++ b/unified_inventory/textures/ui_craftguide_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_crafting_form.png b/unified_inventory/textures/ui_crafting_form.png
new file mode 100644
index 0000000..420323c
--- /dev/null
+++ b/unified_inventory/textures/ui_crafting_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_doubleleft_icon.png b/unified_inventory/textures/ui_doubleleft_icon.png
new file mode 100644
index 0000000..ca1f66f
--- /dev/null
+++ b/unified_inventory/textures/ui_doubleleft_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_doubleright_icon.png b/unified_inventory/textures/ui_doubleright_icon.png
new file mode 100644
index 0000000..995b565
--- /dev/null
+++ b/unified_inventory/textures/ui_doubleright_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_form_bg.png b/unified_inventory/textures/ui_form_bg.png
new file mode 100644
index 0000000..37683f0
--- /dev/null
+++ b/unified_inventory/textures/ui_form_bg.png
Binary files differ
diff --git a/unified_inventory/textures/ui_gohome_icon.png b/unified_inventory/textures/ui_gohome_icon.png
new file mode 100644
index 0000000..1141055
--- /dev/null
+++ b/unified_inventory/textures/ui_gohome_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_green_icon_background.png b/unified_inventory/textures/ui_green_icon_background.png
new file mode 100644
index 0000000..21b4f41
--- /dev/null
+++ b/unified_inventory/textures/ui_green_icon_background.png
Binary files differ
diff --git a/unified_inventory/textures/ui_group.png b/unified_inventory/textures/ui_group.png
new file mode 100644
index 0000000..d7f5dce
--- /dev/null
+++ b/unified_inventory/textures/ui_group.png
Binary files differ
diff --git a/unified_inventory/textures/ui_home_icon.png b/unified_inventory/textures/ui_home_icon.png
new file mode 100644
index 0000000..eeb4e04
--- /dev/null
+++ b/unified_inventory/textures/ui_home_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_left_icon.png b/unified_inventory/textures/ui_left_icon.png
new file mode 100644
index 0000000..14ad064
--- /dev/null
+++ b/unified_inventory/textures/ui_left_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_main_inventory.png b/unified_inventory/textures/ui_main_inventory.png
new file mode 100644
index 0000000..b65dabb
--- /dev/null
+++ b/unified_inventory/textures/ui_main_inventory.png
Binary files differ
diff --git a/unified_inventory/textures/ui_misc_form.png b/unified_inventory/textures/ui_misc_form.png
new file mode 100644
index 0000000..d34d326
--- /dev/null
+++ b/unified_inventory/textures/ui_misc_form.png
Binary files differ
diff --git a/unified_inventory/textures/ui_moon_icon.png b/unified_inventory/textures/ui_moon_icon.png
new file mode 100644
index 0000000..0595a6c
--- /dev/null
+++ b/unified_inventory/textures/ui_moon_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_no.png b/unified_inventory/textures/ui_no.png
new file mode 100644
index 0000000..ad9470b
--- /dev/null
+++ b/unified_inventory/textures/ui_no.png
Binary files differ
diff --git a/unified_inventory/textures/ui_off_icon.png b/unified_inventory/textures/ui_off_icon.png
new file mode 100644
index 0000000..1933742
--- /dev/null
+++ b/unified_inventory/textures/ui_off_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_ok_icon.png b/unified_inventory/textures/ui_ok_icon.png
new file mode 100644
index 0000000..e22b2bc
--- /dev/null
+++ b/unified_inventory/textures/ui_ok_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_on_icon.png b/unified_inventory/textures/ui_on_icon.png
new file mode 100644
index 0000000..bb34ceb
--- /dev/null
+++ b/unified_inventory/textures/ui_on_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_pencil_icon.png b/unified_inventory/textures/ui_pencil_icon.png
new file mode 100644
index 0000000..ab5ed5e
--- /dev/null
+++ b/unified_inventory/textures/ui_pencil_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_red_icon_background.png b/unified_inventory/textures/ui_red_icon_background.png
new file mode 100644
index 0000000..c925689
--- /dev/null
+++ b/unified_inventory/textures/ui_red_icon_background.png
Binary files differ
diff --git a/unified_inventory/textures/ui_right_icon.png b/unified_inventory/textures/ui_right_icon.png
new file mode 100644
index 0000000..ab0195c
--- /dev/null
+++ b/unified_inventory/textures/ui_right_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_search_icon.png b/unified_inventory/textures/ui_search_icon.png
new file mode 100644
index 0000000..c64900e
--- /dev/null
+++ b/unified_inventory/textures/ui_search_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_sethome_icon.png b/unified_inventory/textures/ui_sethome_icon.png
new file mode 100644
index 0000000..b047102
--- /dev/null
+++ b/unified_inventory/textures/ui_sethome_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_single_slot.png b/unified_inventory/textures/ui_single_slot.png
new file mode 100644
index 0000000..ef2a246
--- /dev/null
+++ b/unified_inventory/textures/ui_single_slot.png
Binary files differ
diff --git a/unified_inventory/textures/ui_skip_backward_icon.png b/unified_inventory/textures/ui_skip_backward_icon.png
new file mode 100644
index 0000000..92e9e8c
--- /dev/null
+++ b/unified_inventory/textures/ui_skip_backward_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_skip_forward_icon.png b/unified_inventory/textures/ui_skip_forward_icon.png
new file mode 100644
index 0000000..f046b4f
--- /dev/null
+++ b/unified_inventory/textures/ui_skip_forward_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_sun_icon.png b/unified_inventory/textures/ui_sun_icon.png
new file mode 100644
index 0000000..5bd24fb
--- /dev/null
+++ b/unified_inventory/textures/ui_sun_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_trash_icon.png b/unified_inventory/textures/ui_trash_icon.png
new file mode 100644
index 0000000..412573c
--- /dev/null
+++ b/unified_inventory/textures/ui_trash_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_waypoint_set_icon.png b/unified_inventory/textures/ui_waypoint_set_icon.png
new file mode 100644
index 0000000..ee44c4c
--- /dev/null
+++ b/unified_inventory/textures/ui_waypoint_set_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_waypoints_icon.png b/unified_inventory/textures/ui_waypoints_icon.png
new file mode 100644
index 0000000..e0281af
--- /dev/null
+++ b/unified_inventory/textures/ui_waypoints_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_xyz_icon.png b/unified_inventory/textures/ui_xyz_icon.png
new file mode 100644
index 0000000..dabea81
--- /dev/null
+++ b/unified_inventory/textures/ui_xyz_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_xyz_off_icon.png b/unified_inventory/textures/ui_xyz_off_icon.png
new file mode 100644
index 0000000..8e45946
--- /dev/null
+++ b/unified_inventory/textures/ui_xyz_off_icon.png
Binary files differ
diff --git a/unified_inventory/textures/ui_xyz_on_icon.png b/unified_inventory/textures/ui_xyz_on_icon.png
new file mode 100644
index 0000000..dabea81
--- /dev/null
+++ b/unified_inventory/textures/ui_xyz_on_icon.png
Binary files differ
diff --git a/unified_inventory/waypoints.lua b/unified_inventory/waypoints.lua
new file mode 100644
index 0000000..a8e4762
--- /dev/null
+++ b/unified_inventory/waypoints.lua
@@ -0,0 +1,246 @@
+local S = unified_inventory.gettext
+
+local hud_colors = {
+ {"#FFFFFF", 0xFFFFFF, S("White")},
+ {"#DBBB00", 0xf1d32c, S("Yellow")},
+ {"#DD0000", 0xDD0000, S("Red")},
+ {"#2cf136", 0x2cf136, S("Green")},
+ {"#2c4df1", 0x2c4df1, S("Blue")},
+}
+
+local hud_colors_max = #hud_colors
+
+-- Stores temporary player data (persists until player leaves)
+local waypoints_temp = {}
+
+unified_inventory.register_page("waypoints", {
+ get_formspec = function(player)
+ local player_name = player:get_player_name()
+
+ -- build a "fake" temp entry if the server took too long
+ -- during sign-on and returned an empty entry
+ if not waypoints_temp[player_name] then waypoints_temp[player_name] = {hud = 1} end
+
+ local waypoints = datastorage.get(player_name, "waypoints")
+ local formspec = "background[0,4.5;8,4;ui_main_inventory.png]" ..
+ "image[0,0;1,1;ui_waypoints_icon.png]" ..
+ "label[1,0;" .. S("Waypoints") .. "]"
+
+ -- Tabs buttons:
+ for i = 1, 5, 1 do
+ formspec = formspec ..
+ "image_button[0.0," .. 0.2 + i * 0.7 .. ";.8,.8;" ..
+ (i == waypoints.selected and "ui_blue_icon_background.png^" or "") ..
+ "ui_" .. i .. "_icon.png;" ..
+ "select_waypoint" .. i .. ";]" ..
+ "tooltip[select_waypoint" .. i .. ";"
+ .. minetest.formspec_escape(S("Select Waypoint #%d"):format(i)).."]"
+ end
+
+ local i = waypoints.selected or 1
+ local waypoint = waypoints[i] or {}
+ local temp = waypoints_temp[player_name][i] or {}
+ local default_name = "Waypoint "..i
+
+ -- Main buttons:
+ formspec = formspec ..
+ "image_button[4.5,3.7;.8,.8;"..
+ "ui_waypoint_set_icon.png;"..
+ "set_waypoint"..i..";]"..
+ "tooltip[set_waypoint" .. i .. ";"
+ .. minetest.formspec_escape(S("Set waypoint to current location")).."]"
+
+ formspec = formspec ..
+ "image_button[5.2,3.7;.8,.8;"..
+ (waypoint.active and "ui_on_icon.png" or "ui_off_icon.png")..";"..
+ "toggle_waypoint"..i..";]"..
+ "tooltip[toggle_waypoint" .. i .. ";"
+ .. minetest.formspec_escape(S("Make waypoint "
+ ..(waypoint.active and "invisible" or "visible"))).."]"
+
+ formspec = formspec ..
+ "image_button[5.9,3.7;.8,.8;"..
+ (waypoint.display_pos and "ui_green_icon_background.png" or "ui_red_icon_background.png").."^ui_xyz_icon.png;"..
+ "toggle_display_pos" .. i .. ";]"..
+ "tooltip[toggle_display_pos" .. i .. ";"
+ .. minetest.formspec_escape(S((waypoint.display_pos and "Disable" or "Enable")
+ .." display of waypoint coordinates")).."]"
+
+ formspec = formspec ..
+ "image_button[6.6,3.7;.8,.8;"..
+ "ui_circular_arrows_icon.png;"..
+ "toggle_color"..i..";]"..
+ "tooltip[toggle_color" .. i .. ";"
+ .. minetest.formspec_escape(S("Change color of waypoint display")).."]"
+
+ formspec = formspec ..
+ "image_button[7.3,3.7;.8,.8;"..
+ "ui_pencil_icon.png;"..
+ "rename_waypoint"..i..";]"..
+ "tooltip[rename_waypoint" .. i .. ";"
+ .. minetest.formspec_escape(S("Edit waypoint name")).."]"
+
+ -- Waypoint's info:
+ if waypoint.active then
+ formspec = formspec .. "label[1,0.8;"..S("Waypoint active").."]"
+ else
+ formspec = formspec .. "label[1,0.8;"..S("Waypoint inactive").."]"
+ end
+
+ if temp.edit then
+ formspec = formspec ..
+ "field[1.3,3.2;6,.8;rename_box" .. i .. ";;"
+ ..(waypoint.name or default_name).."]" ..
+ "image_button[7.3,2.9;.8,.8;"..
+ "ui_ok_icon.png;"..
+ "confirm_rename"..i.. ";]"..
+ "tooltip[confirm_rename" .. i .. ";"
+ .. minetest.formspec_escape(S("Finish editing")).."]"
+ end
+
+ formspec = formspec .. "label[1,1.3;"..S("World position")..": " ..
+ minetest.pos_to_string(waypoint.world_pos or vector.new()) .. "]" ..
+ "label[1,1.8;"..S("Name")..": ".. (waypoint.name or default_name) .. "]" ..
+ "label[1,2.3;"..S("HUD text color")..": " ..
+ hud_colors[waypoint.color or 1][3] .. "]"
+
+ return {formspec=formspec}
+ end,
+})
+
+unified_inventory.register_button("waypoints", {
+ type = "image",
+ image = "ui_waypoints_icon.png",
+ tooltip = S("Waypoints"),
+ hide_lite=true
+})
+
+local function update_hud(player, waypoints, temp, i)
+ local waypoint = waypoints[i]
+ if not waypoint then return end
+ temp[i] = temp[i] or {}
+ temp = temp[i]
+ local pos = waypoint.world_pos or vector.new()
+ local name
+ if waypoint.display_pos then
+ name = minetest.pos_to_string(pos)
+ if waypoint.name then
+ name = name..", "..waypoint.name
+ end
+ else
+ name = waypoint.name or "Waypoint "..i
+ end
+ if temp.hud then
+ player:hud_remove(temp.hud)
+ end
+ if waypoint.active then
+ temp.hud = player:hud_add({
+ hud_elem_type = "waypoint",
+ number = hud_colors[waypoint.color or 1][2] ,
+ name = name,
+ text = "m",
+ world_pos = pos
+ })
+ else
+ temp.hud = nil
+ end
+end
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname ~= "" then return end
+
+ local player_name = player:get_player_name()
+ local update_formspec = false
+ local need_update_hud = false
+ local hit = false
+
+ local waypoints = datastorage.get(player_name, "waypoints")
+ local temp = waypoints_temp[player_name]
+ for i = 1, 5, 1 do
+ if fields["select_waypoint"..i] then
+ hit = true
+ waypoints.selected = i
+ update_formspec = true
+ end
+
+ if fields["toggle_waypoint"..i] then
+ hit = true
+ waypoints[i] = waypoints[i] or {}
+ waypoints[i].active = not (waypoints[i].active)
+ need_update_hud = true
+ update_formspec = true
+ end
+
+ if fields["set_waypoint"..i] then
+ hit = true
+ local pos = player:getpos()
+ pos.x = math.floor(pos.x)
+ pos.y = math.floor(pos.y)
+ pos.z = math.floor(pos.z)
+ waypoints[i] = waypoints[i] or {}
+ waypoints[i].world_pos = pos
+ need_update_hud = true
+ update_formspec = true
+ end
+
+ if fields["rename_waypoint"..i] then
+ hit = true
+ temp[i] = temp[i] or {}
+ temp[i].edit = true
+ update_formspec = true
+ end
+
+ if fields["toggle_display_pos"..i] then
+ hit = true
+ waypoints[i] = waypoints[i] or {}
+ waypoints[i].display_pos = not waypoints[i].display_pos
+ need_update_hud = true
+ update_formspec = true
+ end
+
+ if fields["toggle_color"..i] then
+ hit = true
+ waypoints[i] = waypoints[i] or {}
+ local color = waypoints[i].color or 1
+ color = color + 1
+ if color > hud_colors_max then
+ color = 1
+ end
+ waypoints[i].color = color
+ need_update_hud = true
+ update_formspec = true
+ end
+
+ if fields["confirm_rename"..i] then
+ hit = true
+ waypoints[i] = waypoints[i] or {}
+ temp[i].edit = false
+ waypoints[i].name = fields["rename_box"..i]
+ need_update_hud = true
+ update_formspec = true
+ end
+ if need_update_hud then
+ update_hud(player, waypoints, temp, i)
+ end
+ if update_formspec then
+ unified_inventory.set_inventory_formspec(player, "waypoints")
+ end
+ if hit then return end
+ end
+end)
+
+
+minetest.register_on_joinplayer(function(player)
+ local player_name = player:get_player_name()
+ local waypoints = datastorage.get(player_name, "waypoints")
+ local temp = {}
+ waypoints_temp[player_name] = temp
+ for i = 1, 5 do
+ update_hud(player, waypoints, temp, i)
+ end
+end)
+
+minetest.register_on_leaveplayer(function(player)
+ waypoints_temp[player:get_player_name()] = nil
+end)
+
diff --git a/unifiedbricks/README.txt b/unifiedbricks/README.txt
new file mode 100644
index 0000000..8a655a0
--- /dev/null
+++ b/unifiedbricks/README.txt
@@ -0,0 +1,37 @@
+unifiedbricks
+
+Code license: WTFPL
+Texture license: WTFPL
+
+depends: unifieddyes, default
+
+Adds configurable clay blocks, clay lumps, bricks, and brick blocks. Includes
+all of the colors that unifieddyes offers (which amounts to 89 clayblocks, clay
+lumps, bricks, brick blocks, leaving 356 total).
+
+Now returns glass bottles and empty buckets when appropriate.
+
+Settings at the top of init.lua:
+ SETTING_allow_default_coloring = 1
+ When set to 1, default clay + unifieddyes dye = unifiedbricks clay lump
+ SETTING_allow_hues = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
+ Each number represents a hue (red, orange, yellow ...). When a value is
+ set to 0, that hue is disabled.
+ SETTING_allow_types = {1,1,1,1}
+ Same, except these represent clay blocks, clay lumps, etc.
+ SETTING_allow_saturation = {1,1}
+ Represents low saturation and full saturation, respectively.
+ SETTING_allow_darkness = {1,1,1,1}
+ Represents dark, medium, bright, and light colors, respectively.
+
+ Furthermore, a list of names is included below that, from which you can
+ change, for example, "red" to "mahogany".
+
+WARNING: if you remove something important, such as clay lumps, you'll have to
+cheat to get some items.
+
+If you don't like what I did, tell me or use one of github's fancy features or
+do it yourself or whatever. Hint: I would absolutely love to have some better
+looking textures, especially the brick and clay textures.
+
+Used VanessaE's gentextures.sh to change the texture colors.
diff --git a/unifiedbricks/depends.txt b/unifiedbricks/depends.txt
new file mode 100644
index 0000000..db70927
--- /dev/null
+++ b/unifiedbricks/depends.txt
@@ -0,0 +1,4 @@
+default
+
+unifieddyes
+vessels
diff --git a/unifiedbricks/init.lua b/unifiedbricks/init.lua
new file mode 100644
index 0000000..6ece9f3
--- /dev/null
+++ b/unifiedbricks/init.lua
@@ -0,0 +1,915 @@
+--Unified Bricks by Vsevolod Borislav (wowiamdiamonds)
+--
+--License: WTFPL
+--
+--Depends: default, bucket, unifieddyes, vessels
+--
+--Obviously, offers the same colors in unifieddyes.
+--Thanks go to VanessaE for making unifieddyes, gentextures.sh, etc.
+
+minetest.register_alias("unifieddyes:white","unifieddyes:white_paint")
+minetest.register_alias("unifieddyes:lightgrey","unifieddyes:lightgrey_paint")
+minetest.register_alias("unifieddyes:grey","unifieddyes:grey_paint")
+minetest.register_alias("unifieddyes:darkgrey","unifieddyes:darkgrey_paint")
+
+--1 indicates yes, 0 indicates no
+--default:clay_lump + unifieddyes:color = unifiedbricks:color
+SETTING_allow_default_coloring = 1
+--red, orange, yellow, lime, green, aqua, cyan, skyblue, blue, violet, magenta,
+--redviolet, black, darkgrey, mediumgrey, lightgrey, white, respectively (by default)
+SETTING_allow_hues = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
+--clayblock, clay, brick, singlecolor brickblock, multicolor brickblock, respectively (by default)
+SETTING_allow_types = {1,1,1,1,1}
+--half saturation, full saturation, respectively (by default)
+SETTING_allow_saturation = {1,1}
+--dark, medium, bright, light, respectively (by default)
+SETTING_allow_darkness = {1,1,1,1}
+--dark, medium, bright, respectively (by default)
+SETTING_allow_multicolor = {1,1,1}
+
+HUES = {
+ "red",
+ "orange",
+ "yellow",
+ "lime",
+ "green",
+ "aqua",
+ "cyan",
+ "skyblue",
+ "blue",
+ "violet",
+ "magenta",
+ "redviolet",
+ "black",
+ "darkgrey",
+ "grey",
+ "lightgrey",
+ "white"
+}
+TYPES = {
+ "clayblock_",
+ "clay_",
+ "brick_",
+ "brickblock_",
+ "multicolor_"
+}
+SATURATION = {
+ "_s50",
+ ""
+}
+DARKNESS = {
+ "dark_",
+ "medium_",
+ "",
+ "light_"
+}
+--formal versions
+FORMALHUES = {
+ "Red",
+ "Orange",
+ "Yellow",
+ "Lime",
+ "Green",
+ "Aqua",
+ "Cyan",
+ "Sky blue",
+ "Blue",
+ "Violet",
+ "Magenta",
+ "Red violet",
+ "Black",
+ "Dark grey",
+ "Grey",
+ "Light grey",
+ "White"
+}
+FORMALTYPES = {
+ " clay",
+ " clay lump",
+ " brick",
+ " bricks",
+ " multicolor bricks"
+}
+FORMALSATURATION = {
+ " (low saturation)",
+ ""
+}
+FORMALDARKNESS = {
+ "Dark ",
+ "Medium ",
+ "Bright ",
+ "Light "
+}
+
+register_clay_block = function(name,formalname)
+ minetest.register_node("unifiedbricks:" .. TYPES[1] .. name, {
+ description = formalname .. FORMALTYPES[1],
+ tiles = {"unifiedbricks_" .. TYPES[1] .. name .. ".png"},
+ is_ground_content = true,
+ groups = {crumbly=3, not_in_creative_inventory=1},
+ drop = "unifiedbricks:" .. TYPES[2] .. name .. " 4",
+ sounds = default.node_sound_dirt_defaults({
+ footstep = "",
+ }),
+ })
+end
+register_clay_lump = function(name,formalname)
+ minetest.register_craftitem("unifiedbricks:" .. TYPES[2] .. name, {
+ description = formalname .. FORMALTYPES[2],
+ inventory_image = "unifiedbricks_" .. TYPES[2] .. name .. ".png",
+ groups = {not_in_creative_inventory=1}
+ })
+end
+register_brick = function(name,formalname)
+ minetest.register_craftitem("unifiedbricks:" .. TYPES[3] .. name, {
+ description = formalname .. FORMALTYPES[3],
+ inventory_image = "unifiedbricks_" .. TYPES[3] .. name .. ".png",
+ groups = {not_in_creative_inventory=1}
+ })
+end
+register_brick_block = function(name,formalname)
+ minetest.register_node("unifiedbricks:" .. TYPES[4] .. name, {
+ description = formalname .. FORMALTYPES[4],
+ tiles = {"unifiedbricks_" .. TYPES[4] .. name .. ".png"},
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=1},
+ drop = "unifiedbricks:" .. TYPES[3] .. name .." 4",
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+register_multicolor = function(name,formalname,drop_one,drop_two,drop_three)
+ minetest.register_node("unifiedbricks:" .. TYPES[5] .. name, {
+ description = formalname .. FORMALTYPES[5],
+ tiles = {"unifiedbricks_" .. TYPES[5] .. name .. ".png"},
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=1},
+ drop = {max_items = 4,
+ items={
+ {items={"unifiedbricks:" .. TYPES[3] .. drop_one .." 2"}},
+ {items={"unifiedbricks:" .. TYPES[3] .. drop_two}},
+ {items={"unifiedbricks:" .. TYPES[3] .. drop_three}}
+ }},
+ sounds = default.node_sound_stone_defaults(),
+ })
+end
+
+register_clay_craft_default = function(color)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color,
+ recipe = {
+ "default:clay_lump",
+ "unifieddyes:" .. color,
+ },
+ replacements = { { "unifieddyes:"..color, "vessels:glass_bottle"} }
+ })
+end
+
+register_clay_craft_bucketlast = function(color_combo,color_one,color_two)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ },
+ replacements = { { "unifieddyes:" .. color_one, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ },
+ replacements = { { "unifieddyes:"..color_two, "bucket:bucket_empty"} }
+ })
+end
+register_clay_craft_vessellast = function(color_combo,color_one,color_two)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ },
+ replacements = { { "unifieddyes:" .. color_one, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ },
+ replacements = { { "unifieddyes:"..color_two, "vessels:glass_bottle"} }
+ })
+end
+register_clay_craft_three = function(color_combo,color_one,color_two,color_three)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+end
+register_clay_craft_three_reducedfat_blackfirst = function(color_combo,color_one,color_two,color_three)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
+ })
+end
+register_clay_craft_three_reducedfat_whitefirst = function(color_combo,color_one,color_two,color_three)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
+ })
+end
+register_clay_craft_four_reducedfat_blackfirst = function(color_combo,color_one,color_two,color_three,color_four)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 4",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
+ })
+end
+register_clay_craft_four_reducedfat_whitefirst = function(color_combo,color_one,color_two,color_three,color_four)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 4",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 3",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 2",
+ recipe = {
+ "unifiedbricks:clay_" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifiedbricks:clay_" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifiedbricks:clay_" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifieddyes:" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:clay_" .. color_combo .. " 1",
+ recipe = {
+ "unifieddyes:" .. color_one,
+ "unifieddyes:" .. color_two,
+ "unifieddyes:" .. color_three,
+ "unifiedbricks:clay_" .. color_four,
+ },
+ replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ })
+end
+
+register_clay_block_craft = function(color)
+ minetest.register_craft({
+ output = "unifiedbricks:" .. TYPES[1] .. color,
+ recipe = {
+ {"unifiedbricks:" .. TYPES[2] .. color, "unifiedbricks:" .. TYPES[2] .. color},
+ {"unifiedbricks:" .. TYPES[2] .. color, "unifiedbricks:" .. TYPES[2] .. color},
+ }
+ })
+end
+register_brick_cooking = function(color)
+ minetest.register_craft({
+ type = "cooking",
+ output = "unifiedbricks:" .. TYPES[3] .. color,
+ recipe = "unifiedbricks:" .. TYPES[2] .. color,
+ })
+end
+register_brick_block_craft = function(color)
+ minetest.register_craft({
+ output = "unifiedbricks:" .. TYPES[4] .. color,
+ recipe = {
+ {"unifiedbricks:" .. TYPES[3] .. color, "unifiedbricks:" .. TYPES[3] .. color},
+ {"unifiedbricks:" .. TYPES[3] .. color, "unifiedbricks:" .. TYPES[3] .. color},
+ }
+ })
+end
+register_multicolor_craft = function(name,drop_one,drop_two,drop_three)
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifiedbricks:multicolor_" .. name,
+ recipe = {
+ "unifiedbricks:".. TYPES[3] .. drop_one,
+ "unifiedbricks:".. TYPES[3] .. drop_one,
+ "unifiedbricks:".. TYPES[3] .. drop_two,
+ "unifiedbricks:".. TYPES[3] .. drop_three,
+ },
+ })
+end
+
+--REGISTERS ALL NODES AND CRAFTITEMS EXCEPT MULTICOLOR BRICK BLOCKS
+for i = 1,17 do
+ if SETTING_allow_hues[i] == 1 then
+ for j = 1,4 do
+ if SETTING_allow_types[j] == 1 then
+ if i > 12 then
+ formalname = FORMALHUES[i]
+ name = HUES[i]
+ if j == 1 then register_clay_block(name,formalname)
+ elseif j == 2 then register_clay_lump(name,formalname)
+ elseif j == 3 then register_brick(name,formalname)
+ else register_brick_block(name,formalname) end
+ else
+ for k = 1,4 do
+ if SETTING_allow_darkness[k] == 1 then
+ if k == 4 then
+ formalname = FORMALDARKNESS[k] .. FORMALHUES[i]
+ name = DARKNESS[k] .. HUES[i]
+ if j == 1 then register_clay_block(name,formalname)
+ elseif j == 2 then register_clay_lump(name,formalname)
+ elseif j == 3 then register_brick(name,formalname)
+ else register_brick_block(name,formalname) end
+ else
+ for l = 1,2 do
+ if SETTING_allow_saturation[l] == 1 then
+ formalname = FORMALDARKNESS[k] .. FORMALHUES[i] .. FORMALSATURATION[l]
+ name = DARKNESS[k] .. HUES[i] .. SATURATION[l]
+ if j == 1 then register_clay_block(name,formalname)
+ elseif j == 2 then register_clay_lump(name,formalname)
+ elseif j == 3 then register_brick(name,formalname)
+ else register_brick_block(name,formalname) end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+--REGISTERS ALL CLAY BLOCK CRAFTING RECIPES
+if SETTING_allow_types[1] + SETTING_allow_types[2] == 2 then
+ for i = 1,17 do
+ if SETTING_allow_hues[i] == 1 then
+ if i > 12 then
+ register_clay_block_craft(HUES[i])
+ else
+ for k = 1,4 do
+ if SETTING_allow_darkness[k] == 1 then
+ if k == 4 then
+ register_clay_block_craft(DARKNESS[k] .. HUES[i])
+ else
+ for l = 1,2 do
+ if SETTING_allow_saturation[l] == 1 then
+ register_clay_block_craft(DARKNESS[k] .. HUES[i] .. SATURATION[l])
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+--REGISTERS ALL CLAY LUMP CRAFTING RECIPES
+if SETTING_allow_types[2] == 1 then
+ if SETTING_allow_saturation[2] + SETTING_allow_darkness[3] == 2 then
+ if SETTING_allow_hues[2] == 1 then register_clay_craft_vessellast("orange","yellow","red") end
+ if SETTING_allow_hues[4] == 1 then register_clay_craft_vessellast("lime","green","yellow") end
+ if SETTING_allow_hues[5] == 1 then register_clay_craft_vessellast("green","blue","yellow") end
+ if SETTING_allow_hues[6] == 1 then register_clay_craft_vessellast("aqua","green","cyan") end
+ if SETTING_allow_hues[7] == 1 then register_clay_craft_vessellast("cyan","blue","green") end
+ if SETTING_allow_hues[8] == 1 then register_clay_craft_vessellast("skyblue","cyan","blue") end
+ if SETTING_allow_hues[10] == 1 then register_clay_craft_vessellast("violet","magenta","blue") end
+ if SETTING_allow_hues[11] == 1 then register_clay_craft_vessellast("magenta","blue","red") end
+ if SETTING_allow_hues[12] == 1 then register_clay_craft_vessellast("redviolet","magenta","red") end
+
+ if SETTING_allow_hues[14] == 1 then register_clay_craft_three_reducedfat_blackfirst("darkgrey","black","black","white") end
+ if SETTING_allow_hues[15] == 1 then register_clay_craft_bucketlast("grey","black","white") end
+ if SETTING_allow_hues[16] == 1 then register_clay_craft_three_reducedfat_whitefirst("lightgrey","white","white","black") end
+
+ if SETTING_allow_default_coloring == 1 then
+ for i = 13,17 do
+ if SETTING_allow_hues[i] == 1 then register_clay_craft_default(HUES[i]) end
+ end
+ end
+ end
+
+ for i = 1,12 do
+ if SETTING_allow_hues[i] == 1 then
+ if SETTING_allow_darkness[1] + SETTING_allow_saturation[1] == 2 then --dark s50
+ register_clay_craft_bucketlast(DARKNESS[1] .. HUES[i] .. SATURATION[1],HUES[i],"darkgrey")
+ register_clay_craft_four_reducedfat_blackfirst(DARKNESS[1] .. HUES[i] .. SATURATION[1],"black","black","white",HUES[i])
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[1] .. HUES[i] .. SATURATION[1]) end end
+ if SETTING_allow_darkness[1] + SETTING_allow_saturation[2] == 2 then --dark
+ register_clay_craft_three_reducedfat_blackfirst(DARKNESS[1] .. HUES[i] .. SATURATION[2],"black","black",HUES[i])
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[1] .. HUES[i] .. SATURATION[2]) end end
+ if SETTING_allow_darkness[2] + SETTING_allow_saturation[1] == 2 then --medium s50
+ register_clay_craft_bucketlast(DARKNESS[2] .. HUES[i] .. SATURATION[1],HUES[i],"grey")
+ register_clay_craft_three(DARKNESS[2] .. HUES[i] .. SATURATION[1],HUES[i],"black","white")
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[2] .. HUES[i] .. SATURATION[1]) end end
+ if SETTING_allow_darkness[2] + SETTING_allow_saturation[2] == 2 then --medium
+ register_clay_craft_vessellast(DARKNESS[2] .. HUES[i] .. SATURATION[2],HUES[i],"black")
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[2] .. HUES[i] .. SATURATION[2]) end end
+ if SETTING_allow_darkness[3] + SETTING_allow_saturation[1] == 2 then --bright s50
+ register_clay_craft_bucketlast(DARKNESS[3] .. HUES[i] .. SATURATION[1],HUES[i],"lightgrey")
+ register_clay_craft_four_reducedfat_whitefirst(DARKNESS[3] .. HUES[i] .. SATURATION[1],"white","white","black",HUES[i])
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[3] .. HUES[i] .. SATURATION[1]) end end
+ if SETTING_allow_darkness[3] + SETTING_allow_saturation[2] == 2 then --bright
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[3] .. HUES[i] .. SATURATION[2]) end end
+ if SETTING_allow_darkness[4] + SETTING_allow_saturation[2] == 2 then --light
+ register_clay_craft_bucketlast(DARKNESS[4] .. HUES[i] .. SATURATION[2],HUES[i],"white")
+ if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[4] .. HUES[i] .. SATURATION[2]) end end
+ end
+ end
+end
+
+--REGISTERS ALL BRICK COOKING RECIPES
+if SETTING_allow_types[2] + SETTING_allow_types[3] == 2 then
+ for i = 1,17 do
+ if SETTING_allow_hues[i] == 1 then
+ if i > 12 then
+ register_brick_cooking(HUES[i])
+ else
+ for k = 1,4 do
+ if SETTING_allow_darkness[k] == 1 then
+ if k == 4 then
+ register_brick_cooking(DARKNESS[k] .. HUES[i])
+ else
+ for l = 1,2 do
+ if SETTING_allow_saturation[l] == 1 then
+ register_brick_cooking(DARKNESS[k] .. HUES[i] .. SATURATION[l])
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+--REGISTERS ALL BRICK BLOCK CRAFTING RECIPES
+if SETTING_allow_types[3] + SETTING_allow_types[4] == 2 then
+ for i = 1,17 do
+ if SETTING_allow_hues[i] == 1 then
+ if i > 12 then
+ register_brick_block_craft(HUES[i])
+ else
+ for k = 1,4 do
+ if SETTING_allow_darkness[k] == 1 then
+ if k == 4 then
+ register_brick_block_craft(DARKNESS[k] .. HUES[i])
+ else
+ for l = 1,2 do
+ if SETTING_allow_saturation[l] == 1 then
+ register_brick_block_craft(DARKNESS[k] .. HUES[i] .. SATURATION[l])
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+--REGISTERS ALL MULTICOLOR EVERYTHING
+if SETTING_allow_types[5] == 1 then
+ for i = 1,13 do
+ if SETTING_allow_hues[i] == 1 then
+ if i == 13 then
+ if SETTING_allow_multicolor[1] == 1 then
+ name = HUES[14]
+ formalname = FORMALHUES[14]
+ brick_one = HUES[14]
+ brick_two = HUES[15]
+ brick_three = HUES[16]
+ register_multicolor(name,formalname,brick_one,brick_two,brick_three)
+ register_multicolor_craft(name,brick_one,brick_two,brick_three)
+ end
+ if SETTING_allow_multicolor[2] == 1 then
+ name = HUES[15]
+ formalname = FORMALHUES[15]
+ brick_one = HUES[15]
+ brick_two = HUES[14]
+ brick_three = HUES[16]
+ register_multicolor(name,formalname,brick_one,brick_two,brick_three)
+ register_multicolor_craft(name,brick_one,brick_two,brick_three)
+ end
+ if SETTING_allow_multicolor[3] == 1 then
+ name = HUES[16]
+ formalname = FORMALHUES[16]
+ brick_one = HUES[16]
+ brick_two = HUES[14]
+ brick_three = HUES[15]
+ register_multicolor(name,formalname,brick_one,brick_two,brick_three)
+ register_multicolor_craft(name,brick_one,brick_two,brick_three)
+ end
+ else
+ if SETTING_allow_multicolor[1] == 1 then
+ name = DARKNESS[1] .. HUES[i]
+ formalname = FORMALDARKNESS[1] .. FORMALHUES[i]
+ brick_one = DARKNESS[1] .. HUES[i]
+ brick_two = DARKNESS[2] .. HUES[i]
+ brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
+ register_multicolor(name,formalname,brick_one,brick_two,brick_three)
+ register_multicolor_craft(name,brick_one,brick_two,brick_three)
+ end
+ if SETTING_allow_multicolor[2] == 1 then
+ name = DARKNESS[2] .. HUES[i]
+ formalname = FORMALDARKNESS[2] .. FORMALHUES[i]
+ brick_one = DARKNESS[2] .. HUES[i]
+ brick_two = DARKNESS[1] .. HUES[i]
+ brick_three = DARKNESS[3] .. HUES[i] .. SATURATION[1]
+ register_multicolor(name,formalname,brick_one,brick_two,brick_three)
+ register_multicolor_craft(name,brick_one,brick_two,brick_three)
+ end
+ if SETTING_allow_multicolor[3] == 1 then
+ name = DARKNESS[4] .. HUES[i]
+ formalname = FORMALDARKNESS[4] .. FORMALHUES[i]
+ brick_one = DARKNESS[3] .. HUES[i]
+ brick_two = DARKNESS[4] .. HUES[i]
+ brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
+ register_multicolor(name,formalname,brick_one,brick_two,brick_three)
+ register_multicolor_craft(name,brick_one,brick_two,brick_three)
+ end
+ end
+ end
+ end
+end
+
+print("[UnifiedBricks] Loaded!")
diff --git a/unifiedbricks/textures/unifiedbricks_brick_aqua.png b/unifiedbricks/textures/unifiedbricks_brick_aqua.png
new file mode 100644
index 0000000..cfb743a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_brick_aqua_s50.png
new file mode 100644
index 0000000..3f64f88
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_black.png b/unifiedbricks/textures/unifiedbricks_brick_black.png
new file mode 100644
index 0000000..d2f2698
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_black.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_blue.png b/unifiedbricks/textures/unifiedbricks_brick_blue.png
new file mode 100644
index 0000000..0b4d598
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_blue_s50.png b/unifiedbricks/textures/unifiedbricks_brick_blue_s50.png
new file mode 100644
index 0000000..438e364
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_cyan.png b/unifiedbricks/textures/unifiedbricks_brick_cyan.png
new file mode 100644
index 0000000..d3980fd
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_brick_cyan_s50.png
new file mode 100644
index 0000000..f46a955
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_aqua.png b/unifiedbricks/textures/unifiedbricks_brick_dark_aqua.png
new file mode 100644
index 0000000..b5f1ab6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_aqua_s50.png
new file mode 100644
index 0000000..2e2685a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_blue.png b/unifiedbricks/textures/unifiedbricks_brick_dark_blue.png
new file mode 100644
index 0000000..785da6c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_blue_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_blue_s50.png
new file mode 100644
index 0000000..0789432
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_cyan.png b/unifiedbricks/textures/unifiedbricks_brick_dark_cyan.png
new file mode 100644
index 0000000..deae187
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_cyan_s50.png
new file mode 100644
index 0000000..d5a6b64
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_green.png b/unifiedbricks/textures/unifiedbricks_brick_dark_green.png
new file mode 100644
index 0000000..498ca88
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_green_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_green_s50.png
new file mode 100644
index 0000000..6176dce
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_lime.png b/unifiedbricks/textures/unifiedbricks_brick_dark_lime.png
new file mode 100644
index 0000000..4ac49bf
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_lime_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_lime_s50.png
new file mode 100644
index 0000000..76c35dc
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_magenta.png b/unifiedbricks/textures/unifiedbricks_brick_dark_magenta.png
new file mode 100644
index 0000000..dc35c85
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_magenta_s50.png
new file mode 100644
index 0000000..68e18f0
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_orange.png b/unifiedbricks/textures/unifiedbricks_brick_dark_orange.png
new file mode 100644
index 0000000..e44ecdf
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_orange_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_orange_s50.png
new file mode 100644
index 0000000..26901c1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_red.png b/unifiedbricks/textures/unifiedbricks_brick_dark_red.png
new file mode 100644
index 0000000..adcaf3f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_red_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_red_s50.png
new file mode 100644
index 0000000..38ae379
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_redviolet.png b/unifiedbricks/textures/unifiedbricks_brick_dark_redviolet.png
new file mode 100644
index 0000000..e504f05
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_redviolet_s50.png
new file mode 100644
index 0000000..e8d1607
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_skyblue.png b/unifiedbricks/textures/unifiedbricks_brick_dark_skyblue.png
new file mode 100644
index 0000000..0a88d69
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_skyblue_s50.png
new file mode 100644
index 0000000..d65ee41
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_violet.png b/unifiedbricks/textures/unifiedbricks_brick_dark_violet.png
new file mode 100644
index 0000000..14ff28a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_violet_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_violet_s50.png
new file mode 100644
index 0000000..a15aed2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_yellow.png b/unifiedbricks/textures/unifiedbricks_brick_dark_yellow.png
new file mode 100644
index 0000000..a8a6336
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_dark_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_brick_dark_yellow_s50.png
new file mode 100644
index 0000000..2a49c71
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_dark_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_darkgrey.png b/unifiedbricks/textures/unifiedbricks_brick_darkgrey.png
new file mode 100644
index 0000000..e666b2c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_darkgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_green.png b/unifiedbricks/textures/unifiedbricks_brick_green.png
new file mode 100644
index 0000000..5405482
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_green_s50.png b/unifiedbricks/textures/unifiedbricks_brick_green_s50.png
new file mode 100644
index 0000000..0a1ceb7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_grey.png b/unifiedbricks/textures/unifiedbricks_brick_grey.png
new file mode 100644
index 0000000..5207580
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_grey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_aqua.png b/unifiedbricks/textures/unifiedbricks_brick_light_aqua.png
new file mode 100644
index 0000000..c63aced
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_blue.png b/unifiedbricks/textures/unifiedbricks_brick_light_blue.png
new file mode 100644
index 0000000..8564de8
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_cyan.png b/unifiedbricks/textures/unifiedbricks_brick_light_cyan.png
new file mode 100644
index 0000000..1f8b566
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_green.png b/unifiedbricks/textures/unifiedbricks_brick_light_green.png
new file mode 100644
index 0000000..b0cc434
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_lime.png b/unifiedbricks/textures/unifiedbricks_brick_light_lime.png
new file mode 100644
index 0000000..68f681c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_magenta.png b/unifiedbricks/textures/unifiedbricks_brick_light_magenta.png
new file mode 100644
index 0000000..56126c5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_orange.png b/unifiedbricks/textures/unifiedbricks_brick_light_orange.png
new file mode 100644
index 0000000..6d8dcc6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_red.png b/unifiedbricks/textures/unifiedbricks_brick_light_red.png
new file mode 100644
index 0000000..da151dc
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_redviolet.png b/unifiedbricks/textures/unifiedbricks_brick_light_redviolet.png
new file mode 100644
index 0000000..1e6a222
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_skyblue.png b/unifiedbricks/textures/unifiedbricks_brick_light_skyblue.png
new file mode 100644
index 0000000..58a4570
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_violet.png b/unifiedbricks/textures/unifiedbricks_brick_light_violet.png
new file mode 100644
index 0000000..e020707
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_light_yellow.png b/unifiedbricks/textures/unifiedbricks_brick_light_yellow.png
new file mode 100644
index 0000000..2eade86
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_light_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_lightgrey.png b/unifiedbricks/textures/unifiedbricks_brick_lightgrey.png
new file mode 100644
index 0000000..3ebc779
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_lightgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_lime.png b/unifiedbricks/textures/unifiedbricks_brick_lime.png
new file mode 100644
index 0000000..f577782
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_lime_s50.png b/unifiedbricks/textures/unifiedbricks_brick_lime_s50.png
new file mode 100644
index 0000000..9357146
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_magenta.png b/unifiedbricks/textures/unifiedbricks_brick_magenta.png
new file mode 100644
index 0000000..7b6697b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_brick_magenta_s50.png
new file mode 100644
index 0000000..8080df4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_aqua.png b/unifiedbricks/textures/unifiedbricks_brick_medium_aqua.png
new file mode 100644
index 0000000..bdf1bfd
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_aqua_s50.png
new file mode 100644
index 0000000..6c9d715
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_blue.png b/unifiedbricks/textures/unifiedbricks_brick_medium_blue.png
new file mode 100644
index 0000000..7f1a934
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_blue_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_blue_s50.png
new file mode 100644
index 0000000..51a0dc9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_cyan.png b/unifiedbricks/textures/unifiedbricks_brick_medium_cyan.png
new file mode 100644
index 0000000..c7f57be
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_cyan_s50.png
new file mode 100644
index 0000000..6fd5652
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_green.png b/unifiedbricks/textures/unifiedbricks_brick_medium_green.png
new file mode 100644
index 0000000..3ab2e46
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_green_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_green_s50.png
new file mode 100644
index 0000000..67ded34
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_lime.png b/unifiedbricks/textures/unifiedbricks_brick_medium_lime.png
new file mode 100644
index 0000000..853584d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_lime_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_lime_s50.png
new file mode 100644
index 0000000..5864989
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_magenta.png b/unifiedbricks/textures/unifiedbricks_brick_medium_magenta.png
new file mode 100644
index 0000000..96a9558
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_magenta_s50.png
new file mode 100644
index 0000000..0cb8b3f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_orange.png b/unifiedbricks/textures/unifiedbricks_brick_medium_orange.png
new file mode 100644
index 0000000..63667a5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_orange_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_orange_s50.png
new file mode 100644
index 0000000..2e8688a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_red.png b/unifiedbricks/textures/unifiedbricks_brick_medium_red.png
new file mode 100644
index 0000000..dfdb3e8
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_red_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_red_s50.png
new file mode 100644
index 0000000..108fd39
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_redviolet.png b/unifiedbricks/textures/unifiedbricks_brick_medium_redviolet.png
new file mode 100644
index 0000000..e45ffc2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_redviolet_s50.png
new file mode 100644
index 0000000..538dcec
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_skyblue.png b/unifiedbricks/textures/unifiedbricks_brick_medium_skyblue.png
new file mode 100644
index 0000000..46c411b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_skyblue_s50.png
new file mode 100644
index 0000000..557aa4b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_violet.png b/unifiedbricks/textures/unifiedbricks_brick_medium_violet.png
new file mode 100644
index 0000000..2b658b5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_violet_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_violet_s50.png
new file mode 100644
index 0000000..23d7ca7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_yellow.png b/unifiedbricks/textures/unifiedbricks_brick_medium_yellow.png
new file mode 100644
index 0000000..2bf0869
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_medium_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_brick_medium_yellow_s50.png
new file mode 100644
index 0000000..c8d56ce
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_medium_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_orange.png b/unifiedbricks/textures/unifiedbricks_brick_orange.png
new file mode 100644
index 0000000..3ed7c66
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_orange_s50.png b/unifiedbricks/textures/unifiedbricks_brick_orange_s50.png
new file mode 100644
index 0000000..c0c6861
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_red.png b/unifiedbricks/textures/unifiedbricks_brick_red.png
new file mode 100644
index 0000000..75ef86b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_red_s50.png b/unifiedbricks/textures/unifiedbricks_brick_red_s50.png
new file mode 100644
index 0000000..a01d1c1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_redviolet.png b/unifiedbricks/textures/unifiedbricks_brick_redviolet.png
new file mode 100644
index 0000000..fb79305
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_brick_redviolet_s50.png
new file mode 100644
index 0000000..227b7a9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_skyblue.png b/unifiedbricks/textures/unifiedbricks_brick_skyblue.png
new file mode 100644
index 0000000..58d2fd5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_brick_skyblue_s50.png
new file mode 100644
index 0000000..2682406
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_violet.png b/unifiedbricks/textures/unifiedbricks_brick_violet.png
new file mode 100644
index 0000000..69f6f6c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_violet_s50.png b/unifiedbricks/textures/unifiedbricks_brick_violet_s50.png
new file mode 100644
index 0000000..701180b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_white.png b/unifiedbricks/textures/unifiedbricks_brick_white.png
new file mode 100644
index 0000000..1c6827a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_white.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_yellow.png b/unifiedbricks/textures/unifiedbricks_brick_yellow.png
new file mode 100644
index 0000000..696d84c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brick_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_brick_yellow_s50.png
new file mode 100644
index 0000000..9337fec
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brick_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_aqua.png b/unifiedbricks/textures/unifiedbricks_brickblock_aqua.png
new file mode 100644
index 0000000..f819b40
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_aqua_s50.png
new file mode 100644
index 0000000..5a2b972
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_black.png b/unifiedbricks/textures/unifiedbricks_brickblock_black.png
new file mode 100644
index 0000000..98f5bdc
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_black.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_blue.png b/unifiedbricks/textures/unifiedbricks_brickblock_blue.png
new file mode 100644
index 0000000..392b880
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_blue_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_blue_s50.png
new file mode 100644
index 0000000..97e5414
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_cyan.png b/unifiedbricks/textures/unifiedbricks_brickblock_cyan.png
new file mode 100644
index 0000000..c0ed9a4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_cyan_s50.png
new file mode 100644
index 0000000..827541e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua.png
new file mode 100644
index 0000000..633b235
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua_s50.png
new file mode 100644
index 0000000..77889bb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_blue.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_blue.png
new file mode 100644
index 0000000..ce0afe9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_blue_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_blue_s50.png
new file mode 100644
index 0000000..9b2ab86
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan.png
new file mode 100644
index 0000000..4457196
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan_s50.png
new file mode 100644
index 0000000..ebc3bec
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_green.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_green.png
new file mode 100644
index 0000000..5ffad82
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_green_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_green_s50.png
new file mode 100644
index 0000000..4042c59
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_lime.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_lime.png
new file mode 100644
index 0000000..6bab135
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_lime_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_lime_s50.png
new file mode 100644
index 0000000..e3d8e8a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta.png
new file mode 100644
index 0000000..bbffa99
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta_s50.png
new file mode 100644
index 0000000..9e6e6ee
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_orange.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_orange.png
new file mode 100644
index 0000000..d78c6f3
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_orange_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_orange_s50.png
new file mode 100644
index 0000000..6782ae8
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_red.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_red.png
new file mode 100644
index 0000000..4982e49
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_red_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_red_s50.png
new file mode 100644
index 0000000..deed97d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet.png
new file mode 100644
index 0000000..21511f2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet_s50.png
new file mode 100644
index 0000000..3a34fec
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue.png
new file mode 100644
index 0000000..ada8485
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue_s50.png
new file mode 100644
index 0000000..36a9282
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_violet.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_violet.png
new file mode 100644
index 0000000..5626901
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_violet_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_violet_s50.png
new file mode 100644
index 0000000..6978c75
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow.png
new file mode 100644
index 0000000..6070c76
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow_s50.png
new file mode 100644
index 0000000..f6ef303
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_dark_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_darkgrey.png b/unifiedbricks/textures/unifiedbricks_brickblock_darkgrey.png
new file mode 100644
index 0000000..eb2be5e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_darkgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_green.png b/unifiedbricks/textures/unifiedbricks_brickblock_green.png
new file mode 100644
index 0000000..3499d9a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_green_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_green_s50.png
new file mode 100644
index 0000000..3c9ebce
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_grey.png b/unifiedbricks/textures/unifiedbricks_brickblock_grey.png
new file mode 100644
index 0000000..48f4013
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_grey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_aqua.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_aqua.png
new file mode 100644
index 0000000..0ee18cd
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_blue.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_blue.png
new file mode 100644
index 0000000..3530cd8
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_cyan.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_cyan.png
new file mode 100644
index 0000000..8e8d318
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_green.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_green.png
new file mode 100644
index 0000000..5ba6fb7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_lime.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_lime.png
new file mode 100644
index 0000000..d36b3ac
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_magenta.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_magenta.png
new file mode 100644
index 0000000..0d5bdc7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_orange.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_orange.png
new file mode 100644
index 0000000..38041a3
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_red.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_red.png
new file mode 100644
index 0000000..194d5b4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_redviolet.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_redviolet.png
new file mode 100644
index 0000000..1b747fa
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_skyblue.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_skyblue.png
new file mode 100644
index 0000000..c09a8a3
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_violet.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_violet.png
new file mode 100644
index 0000000..1dfb16e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_light_yellow.png b/unifiedbricks/textures/unifiedbricks_brickblock_light_yellow.png
new file mode 100644
index 0000000..8ca9098
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_light_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_lightgrey.png b/unifiedbricks/textures/unifiedbricks_brickblock_lightgrey.png
new file mode 100644
index 0000000..9a61b39
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_lightgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_lime.png b/unifiedbricks/textures/unifiedbricks_brickblock_lime.png
new file mode 100644
index 0000000..b1e70be
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_lime_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_lime_s50.png
new file mode 100644
index 0000000..55d2f62
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_magenta.png b/unifiedbricks/textures/unifiedbricks_brickblock_magenta.png
new file mode 100644
index 0000000..41b7768
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_magenta_s50.png
new file mode 100644
index 0000000..c5c3b5c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua.png
new file mode 100644
index 0000000..56cf21d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua_s50.png
new file mode 100644
index 0000000..bcba793
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_blue.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_blue.png
new file mode 100644
index 0000000..aa9ebc4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_blue_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_blue_s50.png
new file mode 100644
index 0000000..b108a10
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan.png
new file mode 100644
index 0000000..3ddbeb5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan_s50.png
new file mode 100644
index 0000000..6cb740b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_green.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_green.png
new file mode 100644
index 0000000..723621c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_green_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_green_s50.png
new file mode 100644
index 0000000..c2a1626
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_lime.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_lime.png
new file mode 100644
index 0000000..7822419
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_lime_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_lime_s50.png
new file mode 100644
index 0000000..8da0d12
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta.png
new file mode 100644
index 0000000..9dfff7d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta_s50.png
new file mode 100644
index 0000000..b419874
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_orange.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_orange.png
new file mode 100644
index 0000000..23e262a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_orange_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_orange_s50.png
new file mode 100644
index 0000000..dc7c5a0
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_red.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_red.png
new file mode 100644
index 0000000..3562910
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_red_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_red_s50.png
new file mode 100644
index 0000000..3378559
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet.png
new file mode 100644
index 0000000..6645ace
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet_s50.png
new file mode 100644
index 0000000..5871bac
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue.png
new file mode 100644
index 0000000..8f16d57
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue_s50.png
new file mode 100644
index 0000000..cdc184f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_violet.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_violet.png
new file mode 100644
index 0000000..7f2e1ba
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_violet_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_violet_s50.png
new file mode 100644
index 0000000..cdbb474
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow.png
new file mode 100644
index 0000000..71f40d6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow_s50.png
new file mode 100644
index 0000000..94e9c99
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_medium_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_orange.png b/unifiedbricks/textures/unifiedbricks_brickblock_orange.png
new file mode 100644
index 0000000..b37d0cf
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_orange_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_orange_s50.png
new file mode 100644
index 0000000..037ef2c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_red.png b/unifiedbricks/textures/unifiedbricks_brickblock_red.png
new file mode 100644
index 0000000..17b92f8
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_red_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_red_s50.png
new file mode 100644
index 0000000..707abe1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_redviolet.png b/unifiedbricks/textures/unifiedbricks_brickblock_redviolet.png
new file mode 100644
index 0000000..fa2433d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_redviolet_s50.png
new file mode 100644
index 0000000..0396dae
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_skyblue.png b/unifiedbricks/textures/unifiedbricks_brickblock_skyblue.png
new file mode 100644
index 0000000..42c06f1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_skyblue_s50.png
new file mode 100644
index 0000000..03429c4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_violet.png b/unifiedbricks/textures/unifiedbricks_brickblock_violet.png
new file mode 100644
index 0000000..b9fa09c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_violet_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_violet_s50.png
new file mode 100644
index 0000000..48a268c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_white.png b/unifiedbricks/textures/unifiedbricks_brickblock_white.png
new file mode 100644
index 0000000..7525557
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_white.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_yellow.png b/unifiedbricks/textures/unifiedbricks_brickblock_yellow.png
new file mode 100644
index 0000000..d260ffb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_brickblock_yellow_s50.png
new file mode 100644
index 0000000..b36aa7a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_aqua.png b/unifiedbricks/textures/unifiedbricks_clay_aqua.png
new file mode 100644
index 0000000..39ea65e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_clay_aqua_s50.png
new file mode 100644
index 0000000..53ac284
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_black.png b/unifiedbricks/textures/unifiedbricks_clay_black.png
new file mode 100644
index 0000000..1d5125e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_black.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_blue.png b/unifiedbricks/textures/unifiedbricks_clay_blue.png
new file mode 100644
index 0000000..b2c32e0
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_blue_s50.png b/unifiedbricks/textures/unifiedbricks_clay_blue_s50.png
new file mode 100644
index 0000000..98ed54d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_cyan.png b/unifiedbricks/textures/unifiedbricks_clay_cyan.png
new file mode 100644
index 0000000..c18db17
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_clay_cyan_s50.png
new file mode 100644
index 0000000..b7a45fe
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_aqua.png b/unifiedbricks/textures/unifiedbricks_clay_dark_aqua.png
new file mode 100644
index 0000000..132b147
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_aqua_s50.png
new file mode 100644
index 0000000..5028d4b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_blue.png b/unifiedbricks/textures/unifiedbricks_clay_dark_blue.png
new file mode 100644
index 0000000..8b87d79
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_blue_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_blue_s50.png
new file mode 100644
index 0000000..a333379
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_cyan.png b/unifiedbricks/textures/unifiedbricks_clay_dark_cyan.png
new file mode 100644
index 0000000..1457063
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_cyan_s50.png
new file mode 100644
index 0000000..6015cef
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_green.png b/unifiedbricks/textures/unifiedbricks_clay_dark_green.png
new file mode 100644
index 0000000..f4113c6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_green_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_green_s50.png
new file mode 100644
index 0000000..420b7e4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_lime.png b/unifiedbricks/textures/unifiedbricks_clay_dark_lime.png
new file mode 100644
index 0000000..754b1d1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_lime_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_lime_s50.png
new file mode 100644
index 0000000..5133299
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_magenta.png b/unifiedbricks/textures/unifiedbricks_clay_dark_magenta.png
new file mode 100644
index 0000000..aacd2d3
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_magenta_s50.png
new file mode 100644
index 0000000..f2c12bb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_orange.png b/unifiedbricks/textures/unifiedbricks_clay_dark_orange.png
new file mode 100644
index 0000000..03dd289
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_orange_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_orange_s50.png
new file mode 100644
index 0000000..f3aa191
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_red.png b/unifiedbricks/textures/unifiedbricks_clay_dark_red.png
new file mode 100644
index 0000000..a7d5286
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_red_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_red_s50.png
new file mode 100644
index 0000000..419fcd1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_redviolet.png b/unifiedbricks/textures/unifiedbricks_clay_dark_redviolet.png
new file mode 100644
index 0000000..b72489e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_redviolet_s50.png
new file mode 100644
index 0000000..35c8f74
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_skyblue.png b/unifiedbricks/textures/unifiedbricks_clay_dark_skyblue.png
new file mode 100644
index 0000000..256d354
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_skyblue_s50.png
new file mode 100644
index 0000000..37a1fa2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_violet.png b/unifiedbricks/textures/unifiedbricks_clay_dark_violet.png
new file mode 100644
index 0000000..9072560
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_violet_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_violet_s50.png
new file mode 100644
index 0000000..2e26eb2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_yellow.png b/unifiedbricks/textures/unifiedbricks_clay_dark_yellow.png
new file mode 100644
index 0000000..59887ab
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_dark_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_clay_dark_yellow_s50.png
new file mode 100644
index 0000000..4972c18
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_dark_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_darkgrey.png b/unifiedbricks/textures/unifiedbricks_clay_darkgrey.png
new file mode 100644
index 0000000..4ba62b4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_darkgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_green.png b/unifiedbricks/textures/unifiedbricks_clay_green.png
new file mode 100644
index 0000000..0dc9d7c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_green_s50.png b/unifiedbricks/textures/unifiedbricks_clay_green_s50.png
new file mode 100644
index 0000000..770c10c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_grey.png b/unifiedbricks/textures/unifiedbricks_clay_grey.png
new file mode 100644
index 0000000..9bff36e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_grey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_aqua.png b/unifiedbricks/textures/unifiedbricks_clay_light_aqua.png
new file mode 100644
index 0000000..e44fc0c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_blue.png b/unifiedbricks/textures/unifiedbricks_clay_light_blue.png
new file mode 100644
index 0000000..8c116de
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_cyan.png b/unifiedbricks/textures/unifiedbricks_clay_light_cyan.png
new file mode 100644
index 0000000..cf24188
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_green.png b/unifiedbricks/textures/unifiedbricks_clay_light_green.png
new file mode 100644
index 0000000..970c561
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_lime.png b/unifiedbricks/textures/unifiedbricks_clay_light_lime.png
new file mode 100644
index 0000000..a679c52
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_magenta.png b/unifiedbricks/textures/unifiedbricks_clay_light_magenta.png
new file mode 100644
index 0000000..9e4324d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_orange.png b/unifiedbricks/textures/unifiedbricks_clay_light_orange.png
new file mode 100644
index 0000000..66cac0b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_red.png b/unifiedbricks/textures/unifiedbricks_clay_light_red.png
new file mode 100644
index 0000000..0ab612f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_redviolet.png b/unifiedbricks/textures/unifiedbricks_clay_light_redviolet.png
new file mode 100644
index 0000000..8049129
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_skyblue.png b/unifiedbricks/textures/unifiedbricks_clay_light_skyblue.png
new file mode 100644
index 0000000..e0d46ae
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_violet.png b/unifiedbricks/textures/unifiedbricks_clay_light_violet.png
new file mode 100644
index 0000000..c09ba0e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_light_yellow.png b/unifiedbricks/textures/unifiedbricks_clay_light_yellow.png
new file mode 100644
index 0000000..73de5c2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_light_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_lightgrey.png b/unifiedbricks/textures/unifiedbricks_clay_lightgrey.png
new file mode 100644
index 0000000..aca4d6d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_lightgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_lime.png b/unifiedbricks/textures/unifiedbricks_clay_lime.png
new file mode 100644
index 0000000..1e14dec
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_lime_s50.png b/unifiedbricks/textures/unifiedbricks_clay_lime_s50.png
new file mode 100644
index 0000000..51ea4b7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_magenta.png b/unifiedbricks/textures/unifiedbricks_clay_magenta.png
new file mode 100644
index 0000000..fe2312c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_clay_magenta_s50.png
new file mode 100644
index 0000000..8d6d90e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_aqua.png b/unifiedbricks/textures/unifiedbricks_clay_medium_aqua.png
new file mode 100644
index 0000000..2f1d01c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_aqua_s50.png
new file mode 100644
index 0000000..b54cbd9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_blue.png b/unifiedbricks/textures/unifiedbricks_clay_medium_blue.png
new file mode 100644
index 0000000..3c4fd39
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_blue_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_blue_s50.png
new file mode 100644
index 0000000..429bdfb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_cyan.png b/unifiedbricks/textures/unifiedbricks_clay_medium_cyan.png
new file mode 100644
index 0000000..ec57b53
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_cyan_s50.png
new file mode 100644
index 0000000..5c8a69b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_green.png b/unifiedbricks/textures/unifiedbricks_clay_medium_green.png
new file mode 100644
index 0000000..0df0d6d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_green_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_green_s50.png
new file mode 100644
index 0000000..ee1e5e9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_lime.png b/unifiedbricks/textures/unifiedbricks_clay_medium_lime.png
new file mode 100644
index 0000000..2f8a55a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_lime_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_lime_s50.png
new file mode 100644
index 0000000..37e1e75
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_magenta.png b/unifiedbricks/textures/unifiedbricks_clay_medium_magenta.png
new file mode 100644
index 0000000..67486b7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_magenta_s50.png
new file mode 100644
index 0000000..dbc2854
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_orange.png b/unifiedbricks/textures/unifiedbricks_clay_medium_orange.png
new file mode 100644
index 0000000..c5750b6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_orange_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_orange_s50.png
new file mode 100644
index 0000000..cdc7783
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_red.png b/unifiedbricks/textures/unifiedbricks_clay_medium_red.png
new file mode 100644
index 0000000..cd2afad
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_red_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_red_s50.png
new file mode 100644
index 0000000..f9fd93c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_redviolet.png b/unifiedbricks/textures/unifiedbricks_clay_medium_redviolet.png
new file mode 100644
index 0000000..3b456f5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_redviolet_s50.png
new file mode 100644
index 0000000..46daccd
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_skyblue.png b/unifiedbricks/textures/unifiedbricks_clay_medium_skyblue.png
new file mode 100644
index 0000000..227da63
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_skyblue_s50.png
new file mode 100644
index 0000000..0dac5b4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_violet.png b/unifiedbricks/textures/unifiedbricks_clay_medium_violet.png
new file mode 100644
index 0000000..d21c868
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_violet_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_violet_s50.png
new file mode 100644
index 0000000..7c68e35
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_yellow.png b/unifiedbricks/textures/unifiedbricks_clay_medium_yellow.png
new file mode 100644
index 0000000..1e7407e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_medium_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_clay_medium_yellow_s50.png
new file mode 100644
index 0000000..1267022
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_medium_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_orange.png b/unifiedbricks/textures/unifiedbricks_clay_orange.png
new file mode 100644
index 0000000..30975fa
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_orange_s50.png b/unifiedbricks/textures/unifiedbricks_clay_orange_s50.png
new file mode 100644
index 0000000..c6d4fd5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_red.png b/unifiedbricks/textures/unifiedbricks_clay_red.png
new file mode 100644
index 0000000..a2df255
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_red_s50.png b/unifiedbricks/textures/unifiedbricks_clay_red_s50.png
new file mode 100644
index 0000000..7b5fb2f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_redviolet.png b/unifiedbricks/textures/unifiedbricks_clay_redviolet.png
new file mode 100644
index 0000000..9d5f35f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_clay_redviolet_s50.png
new file mode 100644
index 0000000..58167b2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_skyblue.png b/unifiedbricks/textures/unifiedbricks_clay_skyblue.png
new file mode 100644
index 0000000..0f92158
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_clay_skyblue_s50.png
new file mode 100644
index 0000000..e4854b7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_violet.png b/unifiedbricks/textures/unifiedbricks_clay_violet.png
new file mode 100644
index 0000000..0958152
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_violet_s50.png b/unifiedbricks/textures/unifiedbricks_clay_violet_s50.png
new file mode 100644
index 0000000..7e088d2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_white.png b/unifiedbricks/textures/unifiedbricks_clay_white.png
new file mode 100644
index 0000000..932f69b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_white.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_yellow.png b/unifiedbricks/textures/unifiedbricks_clay_yellow.png
new file mode 100644
index 0000000..f9253bd
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clay_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_clay_yellow_s50.png
new file mode 100644
index 0000000..c6f7bba
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clay_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_aqua.png b/unifiedbricks/textures/unifiedbricks_clayblock_aqua.png
new file mode 100644
index 0000000..8aad2f2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_aqua_s50.png
new file mode 100644
index 0000000..d7d3e69
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_black.png b/unifiedbricks/textures/unifiedbricks_clayblock_black.png
new file mode 100644
index 0000000..dca11dc
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_black.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_blue.png b/unifiedbricks/textures/unifiedbricks_clayblock_blue.png
new file mode 100644
index 0000000..59be947
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_blue_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_blue_s50.png
new file mode 100644
index 0000000..5b5067b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_cyan.png b/unifiedbricks/textures/unifiedbricks_clayblock_cyan.png
new file mode 100644
index 0000000..a992eeb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_cyan_s50.png
new file mode 100644
index 0000000..262df0e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua.png
new file mode 100644
index 0000000..a166fc2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua_s50.png
new file mode 100644
index 0000000..ea0b486
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_blue.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_blue.png
new file mode 100644
index 0000000..70d2c2a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_blue_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_blue_s50.png
new file mode 100644
index 0000000..6f18dbb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan.png
new file mode 100644
index 0000000..5e8b6f2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan_s50.png
new file mode 100644
index 0000000..56d2543
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_green.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_green.png
new file mode 100644
index 0000000..0dd72b4
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_green_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_green_s50.png
new file mode 100644
index 0000000..af97e24
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_lime.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_lime.png
new file mode 100644
index 0000000..aea32fa
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_lime_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_lime_s50.png
new file mode 100644
index 0000000..0358218
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta.png
new file mode 100644
index 0000000..13a5b0c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta_s50.png
new file mode 100644
index 0000000..5677930
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_orange.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_orange.png
new file mode 100644
index 0000000..3d4751f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_orange_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_orange_s50.png
new file mode 100644
index 0000000..d7376b7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_red.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_red.png
new file mode 100644
index 0000000..c624423
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_red_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_red_s50.png
new file mode 100644
index 0000000..8b4d185
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet.png
new file mode 100644
index 0000000..9900101
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet_s50.png
new file mode 100644
index 0000000..0baeba7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue.png
new file mode 100644
index 0000000..d92ca99
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue_s50.png
new file mode 100644
index 0000000..8aee844
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_violet.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_violet.png
new file mode 100644
index 0000000..963c961
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_violet_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_violet_s50.png
new file mode 100644
index 0000000..d4e1b67
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow.png
new file mode 100644
index 0000000..b30dd54
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow_s50.png
new file mode 100644
index 0000000..90d9cab
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_dark_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_darkgrey.png b/unifiedbricks/textures/unifiedbricks_clayblock_darkgrey.png
new file mode 100644
index 0000000..c28e891
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_darkgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_green.png b/unifiedbricks/textures/unifiedbricks_clayblock_green.png
new file mode 100644
index 0000000..581368e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_green_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_green_s50.png
new file mode 100644
index 0000000..2bc5ef2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_grey.png b/unifiedbricks/textures/unifiedbricks_clayblock_grey.png
new file mode 100644
index 0000000..09ce791
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_grey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_aqua.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_aqua.png
new file mode 100644
index 0000000..8fce831
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_blue.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_blue.png
new file mode 100644
index 0000000..965c055
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_cyan.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_cyan.png
new file mode 100644
index 0000000..6075bd5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_green.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_green.png
new file mode 100644
index 0000000..a8421f1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_lime.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_lime.png
new file mode 100644
index 0000000..6ad13d7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_magenta.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_magenta.png
new file mode 100644
index 0000000..ab60570
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_orange.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_orange.png
new file mode 100644
index 0000000..fc5b3fa
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_red.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_red.png
new file mode 100644
index 0000000..fe8f55b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_redviolet.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_redviolet.png
new file mode 100644
index 0000000..ed11d71
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_skyblue.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_skyblue.png
new file mode 100644
index 0000000..93ab6a2
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_violet.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_violet.png
new file mode 100644
index 0000000..ccc5e36
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_light_yellow.png b/unifiedbricks/textures/unifiedbricks_clayblock_light_yellow.png
new file mode 100644
index 0000000..b0f577d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_light_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_lightgrey.png b/unifiedbricks/textures/unifiedbricks_clayblock_lightgrey.png
new file mode 100644
index 0000000..a88abca
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_lightgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_lime.png b/unifiedbricks/textures/unifiedbricks_clayblock_lime.png
new file mode 100644
index 0000000..6d813ef
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_lime_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_lime_s50.png
new file mode 100644
index 0000000..b8c6a75
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_magenta.png b/unifiedbricks/textures/unifiedbricks_clayblock_magenta.png
new file mode 100644
index 0000000..6b8f09f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_magenta_s50.png
new file mode 100644
index 0000000..0d61617
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua.png
new file mode 100644
index 0000000..8a77bea
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua_s50.png
new file mode 100644
index 0000000..0679c76
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_aqua_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_blue.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_blue.png
new file mode 100644
index 0000000..668f52a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_blue_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_blue_s50.png
new file mode 100644
index 0000000..7643a2a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_blue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan.png
new file mode 100644
index 0000000..0bf353e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan_s50.png
new file mode 100644
index 0000000..c9ebdd7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_cyan_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_green.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_green.png
new file mode 100644
index 0000000..117e48c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_green_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_green_s50.png
new file mode 100644
index 0000000..344f2be
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_green_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_lime.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_lime.png
new file mode 100644
index 0000000..a1bfd7c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_lime_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_lime_s50.png
new file mode 100644
index 0000000..e31608c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_lime_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta.png
new file mode 100644
index 0000000..c977b98
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta_s50.png
new file mode 100644
index 0000000..59673c0
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_magenta_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_orange.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_orange.png
new file mode 100644
index 0000000..6dd1446
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_orange_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_orange_s50.png
new file mode 100644
index 0000000..b100c46
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_red.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_red.png
new file mode 100644
index 0000000..3d74627
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_red_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_red_s50.png
new file mode 100644
index 0000000..9ba9cd8
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet.png
new file mode 100644
index 0000000..e25218d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet_s50.png
new file mode 100644
index 0000000..2bbbe98
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue.png
new file mode 100644
index 0000000..057cd70
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue_s50.png
new file mode 100644
index 0000000..36e3f13
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_violet.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_violet.png
new file mode 100644
index 0000000..fbdea2d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_violet_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_violet_s50.png
new file mode 100644
index 0000000..f7454f6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow.png
new file mode 100644
index 0000000..ab1c8ff
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow_s50.png
new file mode 100644
index 0000000..2bbe246
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_medium_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_orange.png b/unifiedbricks/textures/unifiedbricks_clayblock_orange.png
new file mode 100644
index 0000000..d7380c9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_orange_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_orange_s50.png
new file mode 100644
index 0000000..1c40d2a
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_orange_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_red.png b/unifiedbricks/textures/unifiedbricks_clayblock_red.png
new file mode 100644
index 0000000..0f2f233
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_red_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_red_s50.png
new file mode 100644
index 0000000..6f05cb5
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_red_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_redviolet.png b/unifiedbricks/textures/unifiedbricks_clayblock_redviolet.png
new file mode 100644
index 0000000..4896427
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_redviolet_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_redviolet_s50.png
new file mode 100644
index 0000000..6cf6135
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_redviolet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_skyblue.png b/unifiedbricks/textures/unifiedbricks_clayblock_skyblue.png
new file mode 100644
index 0000000..78f2150
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_skyblue_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_skyblue_s50.png
new file mode 100644
index 0000000..042a53c
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_skyblue_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_violet.png b/unifiedbricks/textures/unifiedbricks_clayblock_violet.png
new file mode 100644
index 0000000..792d79f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_violet_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_violet_s50.png
new file mode 100644
index 0000000..a30151f
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_violet_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_white.png b/unifiedbricks/textures/unifiedbricks_clayblock_white.png
new file mode 100644
index 0000000..33d0079
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_white.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_yellow.png b/unifiedbricks/textures/unifiedbricks_clayblock_yellow.png
new file mode 100644
index 0000000..dffcfac
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock_yellow_s50.png b/unifiedbricks/textures/unifiedbricks_clayblock_yellow_s50.png
new file mode 100644
index 0000000..b24a552
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock_yellow_s50.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_aqua.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_aqua.png
new file mode 100644
index 0000000..320e697
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_blue.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_blue.png
new file mode 100644
index 0000000..800d842
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_cyan.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_cyan.png
new file mode 100644
index 0000000..16cfe5e
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_green.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_green.png
new file mode 100644
index 0000000..575b1e0
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_lime.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_lime.png
new file mode 100644
index 0000000..0445888
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_magenta.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_magenta.png
new file mode 100644
index 0000000..b52776b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_orange.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_orange.png
new file mode 100644
index 0000000..960d825
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_red.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_red.png
new file mode 100644
index 0000000..b9840d6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_redviolet.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_redviolet.png
new file mode 100644
index 0000000..da707a1
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_skyblue.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_skyblue.png
new file mode 100644
index 0000000..e1da776
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_violet.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_violet.png
new file mode 100644
index 0000000..ee6da6b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_dark_yellow.png b/unifiedbricks/textures/unifiedbricks_multicolor_dark_yellow.png
new file mode 100644
index 0000000..b9fa505
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_dark_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_darkgrey.png b/unifiedbricks/textures/unifiedbricks_multicolor_darkgrey.png
new file mode 100644
index 0000000..1062e7d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_darkgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_grey.png b/unifiedbricks/textures/unifiedbricks_multicolor_grey.png
new file mode 100644
index 0000000..86eb1a0
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_grey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_aqua.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_aqua.png
new file mode 100644
index 0000000..e6d8a90
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_blue.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_blue.png
new file mode 100644
index 0000000..856df52
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_cyan.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_cyan.png
new file mode 100644
index 0000000..1ea1fc6
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_green.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_green.png
new file mode 100644
index 0000000..7409f90
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_lime.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_lime.png
new file mode 100644
index 0000000..a535787
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_magenta.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_magenta.png
new file mode 100644
index 0000000..a1fca27
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_orange.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_orange.png
new file mode 100644
index 0000000..29c5742
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_red.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_red.png
new file mode 100644
index 0000000..c0af221
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_redviolet.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_redviolet.png
new file mode 100644
index 0000000..6f25f67
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_skyblue.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_skyblue.png
new file mode 100644
index 0000000..c233f74
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_violet.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_violet.png
new file mode 100644
index 0000000..daf3320
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_light_yellow.png b/unifiedbricks/textures/unifiedbricks_multicolor_light_yellow.png
new file mode 100644
index 0000000..8b4e5f7
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_light_yellow.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_lightgrey.png b/unifiedbricks/textures/unifiedbricks_multicolor_lightgrey.png
new file mode 100644
index 0000000..fa42be9
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_lightgrey.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_aqua.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_aqua.png
new file mode 100644
index 0000000..d00695b
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_aqua.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_blue.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_blue.png
new file mode 100644
index 0000000..c5b9a37
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_blue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_cyan.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_cyan.png
new file mode 100644
index 0000000..e42fc97
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_cyan.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_green.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_green.png
new file mode 100644
index 0000000..cf3fb53
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_green.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_lime.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_lime.png
new file mode 100644
index 0000000..cbfdeeb
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_lime.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_magenta.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_magenta.png
new file mode 100644
index 0000000..6a57512
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_magenta.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_orange.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_orange.png
new file mode 100644
index 0000000..39a3f93
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_orange.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_red.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_red.png
new file mode 100644
index 0000000..0954675
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_red.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_redviolet.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_redviolet.png
new file mode 100644
index 0000000..23736be
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_redviolet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_skyblue.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_skyblue.png
new file mode 100644
index 0000000..8f93bb3
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_skyblue.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_violet.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_violet.png
new file mode 100644
index 0000000..1f1512d
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_violet.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_multicolor_medium_yellow.png b/unifiedbricks/textures/unifiedbricks_multicolor_medium_yellow.png
new file mode 100644
index 0000000..62731ab
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_multicolor_medium_yellow.png
Binary files differ
diff --git a/unifieddyes/LICENSE b/unifieddyes/LICENSE
new file mode 100644
index 0000000..4eb7598
--- /dev/null
+++ b/unifieddyes/LICENSE
@@ -0,0 +1,282 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/unifieddyes/README b/unifieddyes/README
new file mode 100644
index 0000000..eba6d52
--- /dev/null
+++ b/unifieddyes/README
@@ -0,0 +1,248 @@
+VanessaE's Unified Dyes
+=======================
+
+The purpose of this mod originally was to supply a complete set of colors for
+Minetest mod authors to use in their recipes. Since the default dyes mod that
+is supplied with Minetest "common" is now usable (via flowers, also included in
+"common"), this mod has become more of an extension pack.
+
+Unified Dyes expands the standard dye set from 15 to 90 colors.
+
+IMPORTANT: This mod is not intended to suggest that you should use the entire
+palette. Rather, I was hoping people would just choose maybe the dozen or so
+most useful colors to use in their mods.
+
+Dependencies: default and dye from Minetest "common". This mod will NOT work
+without these. This mod will NOT work without these. The default dye mod is
+normally activated only in the standard "build" and "minetest_game" games, or perhaps if
+someone has a modpack or game that includes them.
+
+Recommends: flowers from common.
+
+License: GPL 2.0 or above
+
+Install: Unzip the distribution file, rename the resultant
+VanessaE-unifieddyes-blahblah folder to just "unifieddyes", and move it into
+Minetest's mods folder.
+
+The Palette:
+
+[ http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/color-swatches.png ]
+[ The official palette, showing 84 colors and 5 greys. ]
+
+In the image above, the "50%" markings on the left next to each shade mean 50%
+saturation for all hues in that shade line. Note that the "light" shades don't
+have (or need) that variant. For the greys, the percentages shown are of
+brightness relative to pure white. There are three special cases: Light red
+has been aliased to default pink dye, and dark green has been aliased to
+default dark greey dye. Brown dye also exists in the default set, it's just
+not shown in the palette above.
+
+
+Usage instructions, technical information
+=========================================
+
+Getting Started
+---------------
+
+First thing's first: you're going to need to harvest some materials to make the
+dyes from. For this, you need one or more of the following: roses (red),
+tulips (orange), yellow dandelions (yellow), cactus (green), geraniums (blue),
+violas (purple), coal (black), or white dandelions (white). Simply wander
+around your world and collect whichever of the above you need to get your
+colors.
+
+[ http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/unifieddyes1.png ]
+[ The 8 base colors directly obtainable from a material in the world. ]
+
+Simply place one of the above materials into the crafting grid to obtain four
+portions of dye in that color From those initial 8 colors, you can directly
+fashion another 11, for a total of 19 standard colors (including the various
+greys):
+
+[ http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/unifieddyes2.png ]
+[ The complete 19-color standard set. ]
+
+The standardized colors and their crafting methods are as follows:
+
+* Red (0°): one rose
+* Orange (30°): one tulip, or put one red dye and one yellow dye into the
+ crafting grid to mix them (yields 2)
+* Yellow (60°): one yellow dandelion
+* Lime (90°): mix yellow + green (yields 2)
+* Green (120°): one cactus, or mix yellow + blue (yields 2)
+* Aqua (150°): mix green + cyan (yields 2)
+* Cyan (180°): mix green + blue (yields 2)
+* Sky blue (210°): mix cyan + blue (yields 2)
+* Blue (240°): one geranium
+* Violet (270°): one viola, or mix blue + magenta (yields 2).
+* Magenta (300°): mix blue + red (yields 2)
+* Red-violet (330°): mix magenta + red (yields 2)
+
+* Black (7.5%): one piece of coal
+* Dark grey (25%): mix one white + two black (yields 3)
+* Medium grey (50%): mix one white and one black (yields 2)
+* Light grey (75%): Mix two white and one black (yields 3)
+* White (95%): one white dandelion.
+
+The degree figures are the colors' hues on a standard HSV color wheel, and are
+what I used in the textures supplied with this mod. For the greys, the figures
+in parenthesis indicate the intended brightness of the shade, relative to
+white. Note that black and white don't go all the way to the bottom/top of the
+scale, as doing so may crush some details in textures made in those shades (see
+below, regarding semi-automatic texture generation).
+
+
+Darker/Lighter colors
+---------------------
+
+To obtain a dark (33%) version of a given color, use two portions of black dye
+along with the base color from the list above, which yields three portions of
+the final color.
+
+To obtain a medium-brightness (66%) version of a given color, mix one portion
+the base color with one portion of black dye (for example, medium lime = lime +
+black). All such mixtures yield two portions of the final color.
+
+To obtain a light (150% over full) version of a given color, mix one portion of
+the base color with one portion of white dye. Yields 2 portions of the final
+color.
+
+
+Low-saturation colors
+---------------------
+
+To get the low saturation (50%) version of one of the base colors, mix one or
+more of white, black, or a shade of grey with the desired base color:
+
+Dark, low saturation: dark grey dye + color (yields 2), or two blacks + 1 white
++ color (yields 4). For example, dark, low-saturation red = red + dark grey,
+or red + two black + one white.
+
+Medium brightness, low saturation: medium grey dye + color (yields 2), or black
++ white + color (yields 3). For example, medium, low-saturation green = green
++ medium grey, or green + black + white.
+
+Full, low saturation: light grey dye + color (yields 2), or 1 black + 2 whites
++ color (yields 4). For example, bright, low-saturation blue = blue + light
+grey, or blue + black + 2 white.
+
+There is no low-saturation version of the "light" colors.
+
+Red + white always returns default pink dye, and black + green always returns
+default dark green dye.
+
+
+RGB values
+----------
+
+All RGB values and filenames for all colors and shades of grey are represented
+in the file "colors.txt" (which was generated with the bash script
+"listcolors.sh"), included in the distribution directory. Note that
+listcolors.sh is an example only and was written for a different set of
+textures than what Unified Dyes includes now.
+
+
+Misc. Notes
+-----------
+
+If you need to use /give commands, the item names for the standard set of 12
+regular "full" colors (plus pink, brown, and dark green) is simply "dye:color",
+e.g. "dye:red", "dye:pink", or "dye:skyblue". Greys have a similar naming
+convention: dye:white, dye:light_grey, dye:grey, dye:dark_grey, or dye:black.
+
+For everything beyond those initial 19 colors, the item names are of the
+following format:
+
+unifieddyes:{"light_" or "medium_" or "dark_"}{color}{nothing or "_s50"}.
+
+For example, low saturation dark yellow is "unifieddyes:dark_yellow_s50", while
+light normal-saturation red-violet would be "unifieddyes:light_redviolet".
+
+See the texture filenames in the textures/ folder for further hints - all of
+the item names follow the same format as the corresponding filenames, save for
+having a colon (:) instead of the first underscore (_).
+
+
+Semi-automatic generation of textures
+=====================================
+
+The texture generator script
+----------------------------
+
+Obviously, in order for this mod or the above template to be useful, you'll
+need textures. If you plan to support the entire range of colors offered by
+Unified Dyes, there is a BASH script included with this mod as well with the
+above template named gentextures.sh, which will, with an appropriately- colored
+and appropriately-named source texture, and possibly an overlay texture,
+generate a complete set of colored and greyscale textures.
+
+The script requires bc (the calculator program) to handle some basic math
+regarding the hue adjustments, and Imagemagick's "convert" program handles all
+of the actual conversions.
+
+First thing's first though - you need source textures. Using your favorite
+image editor, create a single version of your desired texture. Draw it in the
+brightest, deepest shade of RED you can muster without losing any detail, and
+save it out. Ideally, you will want the average color of the texture, when
+taking into account all bright and dark areas, to be as close as possible to
+the hex value #FF0000 (0 degrees, 100% saturation, pure red) without losing any
+appreciable #detail.
+
+Save this source texture out as a PNG image, with a filename of
+"whatever_base.png", where "whatever" is the one-word name of your mod - for
+example, mymod_base.png.
+
+If you want to add an image on top of the colored blocks, such as a frame,
+which you want to be the same color throughout all of the textures, create it
+now. It should consist only of those parts of the textures that you want to
+leave unchanged, with some level of alpha transparency everywhere else,
+depending on how much of the image needs to remain unchanged. Save it out as a
+PNG image, using any filename you want, for example myoverlay.png.
+
+Now, use chmod to make the script executable, if necessary, and run it.
+
+If you don't need the overlay, you just need to supply one command line
+argument: the base name of your mod. The script will use that parameter as the
+basis of its texture filenames. For example:
+
+./gentextures.sh mymod
+
+The script will then look for mymod_base.png and copy and convert it into
+things like mymod_red.png, mymod_dark_blue.png, and so on.
+
+If you want to use an overlay also, skip the above step and run the script with
+the base name as the first parameter, and the complete filename of your overlay
+as the second instead. For example:
+
+./gentextures.sh mymod myoverlay.png
+
+Otherwise, the program will iterate through all of the hues and shades that are
+supported by unifieddyes (though this is done manually, not by reading anything
+from the mod), compositing your overlay image in after the recolor step, if
+you're using that option.
+
+All of the output files will be placed in a new folder, generated-textures/ in
+the current directory. Note that the script looks for the above files in the
+current directory also.
+
+The script has a third mode as well:
+
+./gentextures.sh -t mymod myoverlay.png
+
+In this mode, the script will leave the base texture mymod_base.png unchanged,
+and instead will rotate the colors of the overlay image and then composite that
+onto the base texture. The same color changes will happen with the overlay in
+this mode, so it's a good idea to make the overlay some fairly saturated shade
+of red. Along with that, the base image should be some neutral color; any
+color is fine as long as the result is what you wanted.
+
+The program attempts to verify that the files you've asked it to use will
+actually work, and will exit immediately if the any are invalid, missing, etc.
+
+Use your favorite image browser or file manager to review the results in
+generated-textures/, and if they're right, copy them over to the textures/
+folder in your mod.
+
+Note that this script does not generate brown and pink variations of your base
+texture - you'll have to do those two manually.
diff --git a/unifieddyes/bottle_overlay.png b/unifieddyes/bottle_overlay.png
new file mode 100644
index 0000000..e3341a6
--- /dev/null
+++ b/unifieddyes/bottle_overlay.png
Binary files differ
diff --git a/unifieddyes/changelog.txt b/unifieddyes/changelog.txt
new file mode 100644
index 0000000..f556fb9
--- /dev/null
+++ b/unifieddyes/changelog.txt
@@ -0,0 +1,101 @@
+Changelog
+---------
+
+2013-04-30: Multiple changes
+
+* Refactored the code to use default "common" dyes
+rather than directly from flowers.
+
+* This mod now depends on "default" and "dye" from the Minetest common
+sub-game. Since the default dye mod uses default flowers, this mod no
+longer checks for what version of flowers you're using, or even depends
+on it.
+
+* Bottle-based textures have been replaced with piles of dye powder, based
+on the default red dye texture.
+
+* All dyes are obtained by crafting, not cooking, for consistency with the
+default dye mod.
+
+* The somewhat-complicated method using separate "pigment" powders, glass
+bottles and "liquid dye base" has been done away with. Now it's just
+dry dye powders, as with the default dye mod.
+
+* Also, got rid of the whole paint scheme, in favor of dry powders.
+
+* All old dyes, paints, and Unified Dyes pigment powders have been aliased
+back to the standard dye powders.
+
+2012-07-26: Added a "version" check for the flowers dependency: If the
+flowers mod defines "flowers:flower_geranium" (as is the case with my
+update of 2012-08-01), then those will be used to get blue pigment
+powder, and violas will produce violet powder, both of which can be
+directly used to create their respective liquid dye colors. If it is
+not defined (e.g. the user has an older version of the flowers mod),
+then violas produce blue dye powder. Violet dye can still be formed by
+mixing blue and magenta or blue and red dyes, as before.
+
+2012-07-26: Better bottle textures. Note that these are blended against
+the 50% grey field they normally appear on in the inventory display, so
+they will show artifacts if you try to wield them. Don't do that. :-)
+
+2012-07-26: Split off glass bottles into a separate mod, "Vessels".
+This mod now depends on it.
+
+2012-07-25 (almost immediately after): Fixed a copy&paste error for
+black dye.
+
+2012-07-25: Replaced missing craftitem entries and got rid of some
+redundant code left over from last update. Added group settings for all
+dyes according to recently-published standard. Fixed a few typos in
+item descriptions, and straightened up capitalization.
+
+2012-07-24: Added some extra steps to the dye-making process, added
+recommendation that empty bottles be given back to the player on use.
+Dyes are still easy to make, they just require a more realistic (and
+this, harder) process now.
+
+2012-07-16 (a bit later): fixed a minor error in generation of medium
+grey.
+
+2012-07-16: Added a new set of colors, "light" (brightness of 150%
+versus the 'full' shade), for a total of 89. No 50% saturation version
+of this set. Added a palette image showing the full set of colors.
+
+2012-07-13: Fixed some missing commas.
+
+2012-07-13: Added a script to aid in the generation of new textures for
+mods that depend on unifieddyes. Moved this changelog from the forum
+into the distribution directory. Rewrote the README to contain
+everything from the forum post, and expanded it to document the new
+generation script.
+
+2012-07-12 (a bit later): added groups = {dye=1}, to each
+register_craftitem call, to make it easier for other mods to identify
+the dyes and categorize them.
+
+2012-07-12: moved project to github.
+
+2012-07-11 (continuing): Tweaked the script to remove titanium dioxide
+from the output, since it isn't intended to be directly used as a
+dye/paint (but rather, to make paint that can then be used).
+Regenerated colors.txt.
+
+2012-07-11 (immediately after): The script was reading the wrong pixel
+from the image, resulting in lighter-than-correct colors. Fixed it and
+regenerated the colors.txt file.
+
+2012-07-11: Added a script to list all of the colors and their RGB
+values and texture filenames, and a text file containing the output
+thereof.
+
+2012-07-08 (a bit later): deleted a few unused files (copy&paste error).
+
+2012-07-08: Major boost in the number of available colors - was 8, now
+77. Should cover pretty much the entire spectrum of colors one might
+use in this game.
+
+2012-07-02: Deleted a few redundant files (leftovers from when I wanted
+to merge in flowers and then changed my mind).
+
+2012-06-26: Initial upload.
diff --git a/unifieddyes/colors.txt b/unifieddyes/colors.txt
new file mode 100644
index 0000000..f05b8a4
--- /dev/null
+++ b/unifieddyes/colors.txt
@@ -0,0 +1,90 @@
+
+
+Full-saturation colors:
+-----------------------
+
+dark aqua 0, 84, 42 unifieddyes_dark_aqua.png
+dark blue 0, 0, 84 unifieddyes_dark_blue.png
+dark cyan 0, 84, 83 unifieddyes_dark_cyan.png
+dark green 0, 84, 0 unifieddyes_dark_green.png
+dark lime 43, 84, 0 unifieddyes_dark_lime.png
+dark magenta 84, 0, 83 unifieddyes_dark_magenta.png
+dark orange 84, 42, 0 unifieddyes_dark_orange.png
+dark red 84, 0, 0 unifieddyes_dark_red.png
+dark redviolet 84, 0, 42 unifieddyes_dark_redviolet.png
+dark skyblue 0, 42, 84 unifieddyes_dark_skyblue.png
+dark violet 43, 0, 84 unifieddyes_dark_violet.png
+dark yellow 84, 83, 0 unifieddyes_dark_yellow.png
+medium aqua 0,169, 84 unifieddyes_medium_aqua.png
+medium blue 0, 0,169 unifieddyes_medium_blue.png
+medium cyan 0,169,167 unifieddyes_medium_cyan.png
+medium green 0,169, 0 unifieddyes_medium_green.png
+medium lime 87,169, 0 unifieddyes_medium_lime.png
+medium magenta 169, 0,167 unifieddyes_medium_magenta.png
+medium orange 169, 84, 0 unifieddyes_medium_orange.png
+medium red 168, 0, 0 unifieddyes_medium_red.png
+medium redviolet 169, 0, 84 unifieddyes_medium_redviolet.png
+medium skyblue 0, 84,169 unifieddyes_medium_skyblue.png
+medium violet 87, 0,169 unifieddyes_medium_violet.png
+medium yellow 169,167, 0 unifieddyes_medium_yellow.png
+aqua 1,255,127 unifieddyes_aqua.png
+blue 1, 1,255 unifieddyes_blue.png
+cyan 1,255,252 unifieddyes_cyan.png
+green 1,255, 1 unifieddyes_green.png
+lime 132,255, 1 unifieddyes_lime.png
+magenta 255, 1,252 unifieddyes_magenta.png
+orange 255,127, 1 unifieddyes_orange.png
+red 255, 0, 0 unifieddyes_red.png
+redviolet 255, 1,127 unifieddyes_redviolet.png
+skyblue 1,127,255 unifieddyes_skyblue.png
+violet 132, 1,255 unifieddyes_violet.png
+yellow 255,252, 1 unifieddyes_yellow.png
+
+Low-saturation colors:
+----------------------
+
+dark aqua 50% saturation 21, 63, 42 unifieddyes_dark_aqua_s50.png
+dark blue 50% saturation 21, 21, 63 unifieddyes_dark_blue_s50.png
+dark cyan 50% saturation 21, 63, 63 unifieddyes_dark_cyan_s50.png
+dark green 50% saturation 21, 63, 21 unifieddyes_dark_green_s50.png
+dark lime 50% saturation 43, 63, 21 unifieddyes_dark_lime_s50.png
+dark magenta 50% saturation 63, 21, 63 unifieddyes_dark_magenta_s50.png
+dark orange 50% saturation 63, 42, 21 unifieddyes_dark_orange_s50.png
+dark red 50% saturation 63, 21, 21 unifieddyes_dark_red_s50.png
+dark redviolet 50% saturation 63, 21, 42 unifieddyes_dark_redviolet_s50.png
+dark skyblue 50% saturation 21, 42, 63 unifieddyes_dark_skyblue_s50.png
+dark violet 50% saturation 43, 21, 63 unifieddyes_dark_violet_s50.png
+dark yellow 50% saturation 63, 63, 21 unifieddyes_dark_yellow_s50.png
+medium aqua 50% saturation 42,126, 84 unifieddyes_medium_aqua_s50.png
+medium blue 50% saturation 42, 42,126 unifieddyes_medium_blue_s50.png
+medium cyan 50% saturation 42,126,126 unifieddyes_medium_cyan_s50.png
+medium green 50% saturation 42,126, 42 unifieddyes_medium_green_s50.png
+medium lime 50% saturation 86,126, 42 unifieddyes_medium_lime_s50.png
+medium magenta 50% saturation 126, 42,126 unifieddyes_medium_magenta_s50.png
+medium orange 50% saturation 126, 84, 42 unifieddyes_medium_orange_s50.png
+medium red 50% saturation 127, 42, 42 unifieddyes_medium_red_s50.png
+medium redviolet 50% saturation 126, 42, 84 unifieddyes_medium_redviolet_s50.png
+medium skyblue 50% saturation 42, 84,126 unifieddyes_medium_skyblue_s50.png
+medium violet 50% saturation 86, 42,126 unifieddyes_medium_violet_s50.png
+medium yellow 50% saturation 126,126, 42 unifieddyes_medium_yellow_s50.png
+aqua 50% saturation 65,191,127 unifieddyes_aqua_s50.png
+blue 50% saturation 65, 65,191 unifieddyes_blue_s50.png
+cyan 50% saturation 65,191,190 unifieddyes_cyan_s50.png
+green 50% saturation 65,191, 65 unifieddyes_green_s50.png
+lime 50% saturation 130,191, 65 unifieddyes_lime_s50.png
+magenta 50% saturation 191, 65,190 unifieddyes_magenta_s50.png
+orange 50% saturation 191,127, 65 unifieddyes_orange_s50.png
+red 50% saturation 192, 64, 64 unifieddyes_red_s50.png
+redviolet 50% saturation 191, 65,127 unifieddyes_redviolet_s50.png
+skyblue 50% saturation 65,127,191 unifieddyes_skyblue_s50.png
+violet 50% saturation 130, 65,191 unifieddyes_violet_s50.png
+yellow 50% saturation 191,190, 65 unifieddyes_yellow_s50.png
+
+Greyscale:
+----------
+
+black 0, 0, 0 unifieddyes_black.png
+dark grey 64, 64, 64 unifieddyes_darkgrey_paint.png
+medium grey 128,128,128 unifieddyes_grey_paint.png
+light grey 192,192,192 unifieddyes_lightgrey_paint.png
+white 255,255,255 unifieddyes_white_paint.png
diff --git a/unifieddyes/depends.txt b/unifieddyes/depends.txt
new file mode 100644
index 0000000..b08c42c
--- /dev/null
+++ b/unifieddyes/depends.txt
@@ -0,0 +1,4 @@
+default
+dye
+intllib?
+
diff --git a/unifieddyes/gentextures-jpg.sh b/unifieddyes/gentextures-jpg.sh
new file mode 100644
index 0000000..a7cad60
--- /dev/null
+++ b/unifieddyes/gentextures-jpg.sh
@@ -0,0 +1,183 @@
+#!/bin/bash
+
+# This program auto-generates colorized textures for all 89 of the Unified
+# Dyes colors, based on one or two input files.
+
+# Copyright (C) 2012-2013, Vanessa Ezekowitz
+# Email: vanessaezekowitz@gmail.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+if [ -z "`which convert`" ] ; then {
+ echo "Please install Imagemagick."
+ exit 1
+} fi
+
+if [ -z "`which bc`" ] ; then {
+ echo "Please install GNU bc."
+ exit 1
+} fi
+
+if [ $1 = "-t" ] ; then {
+ TINT_OVERLAY=$1
+ BASE=$2
+ COMPOSITE=$3
+} else {
+ TINT_OVERLAY=""
+ BASE=$1
+ COMPOSITE=$2
+} fi
+
+if [ -z $1 ] || [ $1 == "--help" ] || [ $1 == "-h" ] || [[ $1 == "-t" && -z $3 ]] ; then {
+
+ echo -e "\nUsage:
+\ngentextures.sh basename [overlay_filename]
+gentextures.sh -t basename overlay_filename
+
+\nThis script requires up to three parameters which supply the base
+filename of the textures, an optional .png overlay, and possibly the
+'-t' switch. The 'basename' is the first part of the filename that your
+textures will use when your mod is done, which should almost always be
+the same as the one-word name of your mod. For example, if you supply
+the word 'mymod', this script will produce filenames like mymod_red.jpg
+or 'mymod_dark_blue_s50.jpg'. The texture that this script will read
+and recolor is derived from this parameter, and will be of the form
+'basename_base.jpg', i.e. 'mymod_base.jpg'. \nYou can also supply an
+overlay image filename. This image needs to be a .png or .gif or some
+other alpha-capable format supported by ImageMagick, and will be
+composited onto the output files after they have been colorized, but
+without being modified. This is useful when you have some part of your
+base image that will either get changed undesirably (for example, the
+mortar among several bricks, or the shading detail of a stone pattern).
+Simply draw two images: one containing the whole image to be colored,
+and one containing the parts that should not be changed, with either
+full or partial alpha transparency where the re-colored base image
+should show through. Skilled use of color and alpha on this overlay can
+lead to some interesting effects. \nIf you add '-t' as the first
+parameter, the script will switch to 'tint overlay' mode. For this mode
+to work, you must also supply the base name as usual, and you must
+include an overlay image filename. Rather than re-color the base
+texture, the script will alter the hue/saturation/value of the overlay
+texture file instead, and leave the base texture unchanged. When using
+this mode, the base texture should be drawn in some neutral color, but
+any color is fine if it results in what you wanted.\n"
+
+
+ exit 1
+} fi
+
+if [[ ! -e $BASE"_base.jpg" ]]; then {
+ echo -e "\nThe basename '"$BASE"_base.jpg' was not found."
+ echo -e "\nAborting.\n"
+ exit 1
+} fi
+
+if [[ ! -z $COMPOSITE && ! -e $COMPOSITE ]]; then {
+ echo -e "\nThe requested composite file '"$COMPOSITE"' was not found."
+ echo -e "\nAborting.\n"
+ exit 1
+} fi
+
+convert $BASE"_base.jpg" -modulate 1,2,3 tempfile.jpg 1>/dev/null 2>/dev/null
+
+if (( $? )) ; then {
+ echo -e "\nImagemagick failed while testing the base texture file."
+ echo -e "\nEither the base file '"$BASE"_base.jpg' isn't an image,"
+ echo "or it is broken, or Imagemagick itself just didn't work."
+ echo -e "\nPlease check and correct your base image and try again."
+ echo -e "\nAborting.\n"
+ exit 1
+} fi
+
+if [ ! -z $COMPOSITE ] ; then {
+ convert $BASE"_base.jpg" -modulate 1,2,3 $COMPOSITE -composite tempfile.jpg 1>/dev/null 2>/dev/null
+
+ if (( $? )) ; then {
+ echo -e "\nImagemagick failed while testing the composite file."
+ echo -e "\nEither the composite file '"$COMPOSITE"' isn't an image"
+ echo "or it is broken, or Imagemagick itself just didn't work."
+ echo -e "\nPlease check and correct your composite image and try again."
+ echo -e "\nAborting.\n"
+ exit 1
+ } fi
+} fi
+
+rm tempfile.jpg
+
+base_colors="red orange yellow lime green aqua cyan skyblue blue violet magenta redviolet"
+
+echo -e -n "\nGenerating filenames based on "$BASE"_base.jpg"
+if [ ! -z $COMPOSITE ] ; then {
+ echo ","
+ echo -n "using "$COMPOSITE" as an overlay"
+} fi
+
+if [ ! -z $TINT_OVERLAY ] ; then {
+ echo ","
+ echo -n "and tinting the overlay instead of the base texture"
+} fi
+
+echo -e "...\n"
+
+mkdir -p generated-textures
+
+function generate_texture () {
+ name=$1
+ h=$2
+ s=$3
+ v=$4
+ if [ -z $TINT_OVERLAY ]; then {
+ if [ -z $COMPOSITE ]; then {
+ convert $BASE"_base.jpg" -modulate $v,$s,$h -quality 97 "generated-textures/"$BASE"_"$name".jpg"
+ } else {
+ convert $BASE"_base.jpg" -modulate $v,$s,$h -quality 97 $COMPOSITE -composite "generated-textures/"$BASE"_"$name".jpg"
+ } fi
+ } else {
+ convert $COMPOSITE -modulate $v,$s,$h -quality 97 MIFF:- | composite MIFF:- $BASE"_base.jpg" "generated-textures/"$BASE"_"$name".jpg"
+ } fi
+}
+
+hue=0
+for color_name in $base_colors ; do
+ hue2=`echo "scale=10; ("$hue"*200/360)+100" |bc`
+ echo $color_name "("$hue" degrees)"
+ echo " dark"
+ generate_texture "dark_"$color_name $hue2 100 33
+ echo " medium"
+ generate_texture "medium_"$color_name $hue2 100 66
+ echo " full"
+ generate_texture $color_name $hue2 100 100
+ echo " light"
+ generate_texture "light_"$color_name $hue2 100 150
+ echo " dark, 50% saturation"
+ generate_texture "dark_"$color_name"_s50" $hue2 50 33
+ echo " medium, 50% saturation"
+ generate_texture "medium_"$color_name"_s50" $hue2 50 66
+ echo " full, 50% saturation"
+ generate_texture $color_name"_s50" $hue2 50 100
+ hue=$((hue+30))
+done
+
+echo "greyscales"
+echo " black"
+generate_texture black 0 0 15
+echo " dark grey"
+generate_texture darkgrey 0 0 50
+echo " medium grey"
+generate_texture grey 0 0 100
+echo " light grey"
+generate_texture lightgrey 0 0 150
+echo " white"
+generate_texture white 0 0 190
diff --git a/unifieddyes/gentextures.sh b/unifieddyes/gentextures.sh
new file mode 100644
index 0000000..842817e
--- /dev/null
+++ b/unifieddyes/gentextures.sh
@@ -0,0 +1,177 @@
+#!/bin/bash
+
+# This program auto-generates colorized textures for all 89 of the Unified
+# Dyes colors, based on one or two input files.
+
+# Copyright (C) 2012-2013, Vanessa Ezekowitz
+# Email: vanessaezekowitz@gmail.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+if [ -z "`which convert`" ] ; then {
+ echo "Please install Imagemagick."
+ exit 1
+} fi
+
+if [ -z "`which bc`" ] ; then {
+ echo "Please install GNU bc."
+ exit 1
+} fi
+
+if [ $1 = "-t" ] ; then {
+ TINT_OVERLAY=$1
+ BASE=$2
+ COMPOSITE=$3
+} else {
+ TINT_OVERLAY=""
+ BASE=$1
+ COMPOSITE=$2
+} fi
+
+if [ -z $1 ] || [ $1 == "--help" ] || [ $1 == "-h" ] || [[ $1 == "-t" && -z $3 ]] ; then {
+
+ echo -e "\nUsage:
+\ngentextures.sh basename [overlay_filename]
+gentextures.sh -t basename overlay_filename
+\nThis script requires up to three parameters which supply the base filename
+of the textures, an optional overlay, and possibly the '-t' switch. The
+'basename' is the first part of the filename that your textures will use when
+your mod is done, which should almost always be the same as the one-word name
+of your mod. For example, if you supply the word 'mymod', this script will
+produce filenames like mymod_red.png or 'mymod_dark_blue_s50.png'. The
+texture that this script will read and recolor is derived from this parameter,
+and will be of the form 'basename_base.png', i.e. 'mymod_base.png'.
+\nYou can also supply an optional overlay image filename. This image will be
+composited onto the output files after they have been colorized, but without
+being modified. This is useful when you have some part of your base image
+that will either get changed undesirably (for example, the mortar among
+several bricks, or the shading detail of a stone pattern). Simply draw two
+images: one containing the whole image to be colored, and one containing the
+parts that should not be changed, with either full or partial alpha
+transparency where the re-colored base image should show through. Skilled use
+of color and alpha on this overlay can lead to some interesting effects.
+\nIf you add '-t' as the first parameter, the script will switch to 'tint
+overlay' mode. For this mode to work, you must also supply the base name as
+usual, and you must include an overlay image filename. Rather than re-color
+the base texture, the script will alter the hue/saturation/value of the
+overlay texture file instead, and leave the base texture unchanged. When
+using this mode, the base texture should be drawn in some neutral color, but
+any color is fine if it results in what you wanted.\n"
+ exit 1
+} fi
+
+if [[ ! -e $BASE"_base.png" ]]; then {
+ echo -e "\nThe basename '"$BASE"_base.png' was not found."
+ echo -e "\nAborting.\n"
+ exit 1
+} fi
+
+if [[ ! -z $COMPOSITE && ! -e $COMPOSITE ]]; then {
+ echo -e "\nThe requested composite file '"$COMPOSITE"' was not found."
+ echo -e "\nAborting.\n"
+ exit 1
+} fi
+
+convert $BASE"_base.png" -modulate 1,2,3 tempfile.png 1>/dev/null 2>/dev/null
+
+if (( $? )) ; then {
+ echo -e "\nImagemagick failed while testing the base texture file."
+ echo -e "\nEither the base file '"$BASE"_base.png' isn't an image,"
+ echo "or it is broken, or Imagemagick itself just didn't work."
+ echo -e "\nPlease check and correct your base image and try again."
+ echo -e "\nAborting.\n"
+ exit 1
+} fi
+
+if [ ! -z $COMPOSITE ] ; then {
+ convert $BASE"_base.png" -modulate 1,2,3 $COMPOSITE -composite tempfile.png 1>/dev/null 2>/dev/null
+
+ if (( $? )) ; then {
+ echo -e "\nImagemagick failed while testing the composite file."
+ echo -e "\nEither the composite file '"$COMPOSITE"' isn't an image"
+ echo "or it is broken, or Imagemagick itself just didn't work."
+ echo -e "\nPlease check and correct your composite image and try again."
+ echo -e "\nAborting.\n"
+ exit 1
+ } fi
+} fi
+
+rm tempfile.png
+
+base_colors="red orange yellow lime green aqua cyan skyblue blue violet magenta redviolet"
+
+echo -e -n "\nGenerating filenames based on "$BASE"_base.png"
+if [ ! -z $COMPOSITE ] ; then {
+ echo ","
+ echo -n "using "$COMPOSITE" as an overlay"
+} fi
+
+if [ ! -z $TINT_OVERLAY ] ; then {
+ echo ","
+ echo -n "and tinting the overlay instead of the base texture"
+} fi
+
+echo -e "...\n"
+
+mkdir -p generated-textures
+
+function generate_texture () {
+ name=$1
+ h=$2
+ s=$3
+ v=$4
+ if [ -z $TINT_OVERLAY ]; then {
+ if [ -z $COMPOSITE ]; then {
+ convert $BASE"_base.png" -modulate $v,$s,$h "generated-textures/"$BASE"_"$name".png"
+ } else {
+ convert $BASE"_base.png" -modulate $v,$s,$h $COMPOSITE -composite "generated-textures/"$BASE"_"$name".png"
+ } fi
+ } else {
+ convert $COMPOSITE -modulate $v,$s,$h MIFF:- | composite MIFF:- $BASE"_base.png" "generated-textures/"$BASE"_"$name".png"
+ } fi
+}
+
+hue=0
+for color_name in $base_colors ; do
+ hue2=`echo "scale=10; ("$hue"*200/360)+100" |bc`
+ echo $color_name "("$hue" degrees)"
+ echo " dark"
+ generate_texture "dark_"$color_name $hue2 100 33
+ echo " medium"
+ generate_texture "medium_"$color_name $hue2 100 66
+ echo " full"
+ generate_texture $color_name $hue2 100 100
+ echo " light"
+ generate_texture "light_"$color_name $hue2 100 150
+ echo " dark, 50% saturation"
+ generate_texture "dark_"$color_name"_s50" $hue2 50 33
+ echo " medium, 50% saturation"
+ generate_texture "medium_"$color_name"_s50" $hue2 50 66
+ echo " full, 50% saturation"
+ generate_texture $color_name"_s50" $hue2 50 100
+ hue=$((hue+30))
+done
+
+echo "greyscales"
+echo " black"
+generate_texture black 0 0 15
+echo " dark grey"
+generate_texture darkgrey 0 0 50
+echo " medium grey"
+generate_texture grey 0 0 100
+echo " light grey"
+generate_texture lightgrey 0 0 150
+echo " white"
+generate_texture white 0 0 190
diff --git a/unifieddyes/init.lua b/unifieddyes/init.lua
new file mode 100644
index 0000000..fc36199
--- /dev/null
+++ b/unifieddyes/init.lua
@@ -0,0 +1,375 @@
+--[[
+
+Unified Dyes
+
+This mod provides an extension to the Minetest 0.4.x dye system
+
+==============================================================================
+
+Copyright (C) 2012-2013, Vanessa Ezekowitz
+Email: vanessaezekowitz@gmail.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+==============================================================================
+
+--]]
+
+--=====================================================================
+
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
+else
+ S = function(s) return s end
+end
+
+-- Items/recipes needed to generate the few base colors that are not
+-- provided by the standard dyes mod.
+
+-- Lime
+
+minetest.register_craftitem(":dye:lime", {
+ description = S("Lime Dye"),
+ inventory_image = "unifieddyes_lime.png",
+ groups = { dye=1, excolor_lime=1, unicolor_lime=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:lime 2",
+ recipe = {
+ "dye:yellow",
+ "dye:green",
+ },
+})
+
+-- Aqua
+
+minetest.register_craftitem(":dye:aqua", {
+ description = S("Aqua Dye"),
+ inventory_image = "unifieddyes_aqua.png",
+ groups = { dye=1, excolor_aqua=1, unicolor_aqua=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:aqua 2",
+ recipe = {
+ "dye:cyan",
+ "dye:green",
+ },
+})
+
+-- Sky blue
+
+minetest.register_craftitem(":dye:skyblue", {
+ description = S("Sky-blue Dye"),
+ inventory_image = "unifieddyes_skyblue.png",
+ groups = { dye=1, excolor_sky_blue=1, unicolor_sky_blue=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:skyblue 2",
+ recipe = {
+ "dye:cyan",
+ "dye:blue",
+ },
+})
+
+-- Red-violet
+
+minetest.register_craftitem(":dye:redviolet", {
+ description = S("Red-violet Dye"),
+ inventory_image = "unifieddyes_redviolet.png",
+ groups = { dye=1, excolor_red_violet=1, unicolor_red_violet=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:redviolet 2",
+ recipe = {
+ "dye:red",
+ "dye:magenta",
+ },
+})
+
+
+-- Light grey
+
+minetest.register_craftitem(":dye:light_grey", {
+ description = S("Light Grey Dye"),
+ inventory_image = "unifieddyes_lightgrey.png",
+ groups = { dye=1, excolor_lightgrey=1, unicolor_light_grey=1, not_in_creative_inventory=1 }
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:light_grey 2",
+ recipe = {
+ "dye:grey",
+ "dye:white",
+ },
+})
+
+-- Extra craft for black dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:black 4",
+ recipe = {
+ "default:coal_lump",
+ },
+})
+
+-- Extra craft for dark grey dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:dark_grey 3",
+ recipe = {
+ "dye:black",
+ "dye:black",
+ "dye:white",
+ },
+})
+
+-- Extra craft for light grey dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:light_grey 3",
+ recipe = {
+ "dye:black",
+ "dye:white",
+ "dye:white",
+ },
+})
+
+-- Extra craft for green dye
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:green 4",
+ recipe = {
+ "default:cactus",
+ },
+})
+
+-- =================================================================
+
+-- Generate all of additional variants of hue, saturation, and
+-- brightness.
+
+-- "s50" in a file/item name means "saturation: 50%".
+-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
+-- 100% ("full", but not so-named), and 150% ("light").
+
+local HUES = {
+ "red",
+ "orange",
+ "yellow",
+ "lime",
+ "green",
+ "aqua",
+ "cyan",
+ "skyblue",
+ "blue",
+ "violet",
+ "magenta",
+ "redviolet"
+}
+
+local HUES2 = {
+ "Red",
+ "Orange",
+ "Yellow",
+ "Lime",
+ "Green",
+ "Aqua",
+ "Cyan",
+ "Sky-blue",
+ "Blue",
+ "Violet",
+ "Magenta",
+ "Red-violet"
+}
+
+
+for i = 1, 12 do
+
+ local hue = HUES[i]
+ local hue2 = HUES2[i]
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:dark_" .. hue .. "_s50 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:dark_grey",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:dark_" .. hue .. "_s50 4",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:black",
+ "dye:white"
+ },
+ })
+
+ if hue == "green" then
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "dye:dark_green 3",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:black",
+ },
+ })
+ else
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:dark_" .. hue .. " 3",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:black",
+ },
+ })
+ end
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:medium_" .. hue .. "_s50 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:grey",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:medium_" .. hue .. "_s50 3",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ "dye:white",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:medium_" .. hue .. " 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:black",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:" .. hue .. "_s50 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:grey",
+ "dye:white",
+ },
+ })
+
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:" .. hue .. "_s50 4",
+ recipe = {
+ "dye:" .. hue,
+ "dye:white",
+ "dye:white",
+ "dye:black",
+ },
+ })
+
+ if hue ~= "red" then
+ minetest.register_craft( {
+ type = "shapeless",
+ output = "unifieddyes:light_" .. hue .. " 2",
+ recipe = {
+ "dye:" .. hue,
+ "dye:white",
+ },
+ })
+ end
+
+ minetest.register_craftitem("unifieddyes:dark_" .. hue .. "_s50", {
+ description = S("Dark " .. hue2 .. " Dye (low saturation)"),
+ inventory_image = "unifieddyes_dark_" .. hue .. "_s50.png",
+ groups = { dye=1, ["unicolor_dark_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
+ })
+
+ if hue ~= "green" then
+ minetest.register_craftitem("unifieddyes:dark_" .. hue, {
+ description = S("Dark " .. hue2 .. " Dye"),
+ inventory_image = "unifieddyes_dark_" .. hue .. ".png",
+ groups = { dye=1, ["unicolor_dark_"..hue]=1, not_in_creative_inventory=1 }
+ })
+ end
+
+ minetest.register_craftitem("unifieddyes:medium_" .. hue .. "_s50", {
+ description = S("Medium " .. hue2 .. " Dye (low saturation)"),
+ inventory_image = "unifieddyes_medium_" .. hue .. "_s50.png",
+ groups = { dye=1, ["unicolor_medium_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
+ })
+
+ minetest.register_craftitem("unifieddyes:medium_" .. hue, {
+ description = S("Medium " .. hue2 .. " Dye"),
+ inventory_image = "unifieddyes_medium_" .. hue .. ".png",
+ groups = { dye=1, ["unicolor_medium_"..hue]=1, not_in_creative_inventory=1 }
+ })
+
+ minetest.register_craftitem("unifieddyes:" .. hue .. "_s50", {
+ description = S(hue2 .. " Dye (low saturation)"),
+ inventory_image = "unifieddyes_" .. hue .. "_s50.png",
+ groups = { dye=1, ["unicolor_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
+ })
+
+ if hue ~= "red" then
+ minetest.register_craftitem("unifieddyes:light_" .. hue, {
+ description = S("Light " .. hue2 .. " Dye"),
+ inventory_image = "unifieddyes_light_" .. hue .. ".png",
+ groups = { dye=1, ["unicolor_light_"..hue]=1, not_in_creative_inventory=1 }
+ })
+ end
+ minetest.register_alias("unifieddyes:"..hue, "dye:"..hue)
+ minetest.register_alias("unifieddyes:pigment_"..hue, "dye:"..hue)
+end
+
+minetest.register_alias("unifieddyes:light_red", "dye:pink")
+minetest.register_alias("unifieddyes:dark_green", "dye:dark_green")
+
+minetest.register_alias("unifieddyes:white_paint", "dye:white")
+minetest.register_alias("unifieddyes:titanium_dioxide", "dye:white")
+minetest.register_alias("unifieddyes:lightgrey_paint", "dye:light_grey")
+minetest.register_alias("unifieddyes:grey_paint", "dye:grey")
+minetest.register_alias("unifieddyes:darkgrey_paint", "dye:dark_grey")
+minetest.register_alias("unifieddyes:carbon_black", "dye:black")
+
+print(S("[UnifiedDyes] Loaded!"))
+
diff --git a/unifieddyes/listcolors.sh b/unifieddyes/listcolors.sh
new file mode 100644
index 0000000..53e1806
--- /dev/null
+++ b/unifieddyes/listcolors.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+# This program lists out the RGB triads for the colors used in each of the 89
+# dyes found in the Unified Dyes mod.
+
+# Copyright (C) 2012-2013, Vanessa Ezekowitz
+# Email: vanessaezekowitz@gmail.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+pushd . >/dev/null
+
+cd textures
+
+echo -e "\n\nFull-saturation colors:"
+echo -e "-----------------------\n"
+
+for i in `ls *dark*.png|grep -v _s50|grep -v paint|grep -v black` ; do
+ rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
+ color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
+ printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
+done |sort
+
+for i in `ls *medium*.png|grep -v _s50|grep -v paint|grep -v black` ; do
+ rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
+ color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
+ printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
+done |sort
+
+for i in `ls *.png|grep -v medium |grep -v dark|grep -v _s50|grep -v paint|grep -v black|grep -v titanium` ; do
+ rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
+ color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
+ printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
+done |sort
+
+
+echo -e "\nLow-saturation colors:"
+echo -e "----------------------\n"
+
+for i in `ls *dark*_s50.png|grep -v paint|grep -v black` ; do
+ rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
+ color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
+ printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
+done |sort
+
+for i in `ls *medium*_s50.png|grep -v paint|grep -v black` ; do
+ rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
+ color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
+ printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
+done |sort
+
+for i in `ls *_s50.png|grep -v dark|grep -v medium|grep -v paint|grep -v black` ; do
+ rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
+ color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
+ printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
+done |sort
+
+echo -e "\nGreyscale:"
+echo -e "----------\n"
+
+printf "%-32s %-12s %s\n" "black" " 0, 0, 0" "unifieddyes_black.png"
+printf "%-32s %-12s %s\n" "dark grey" " 64, 64, 64" "unifieddyes_darkgrey_paint.png"
+printf "%-32s %-12s %s\n" "medium grey" "128,128,128" "unifieddyes_grey_paint.png"
+printf "%-32s %-12s %s\n" "light grey" "192,192,192" "unifieddyes_lightgrey_paint.png"
+printf "%-32s %-12s %s\n" "white" "255,255,255" "unifieddyes_white_paint.png"
+
+popd >/dev/null
diff --git a/unifieddyes/locale/de.txt b/unifieddyes/locale/de.txt
new file mode 100644
index 0000000..01d6da4
--- /dev/null
+++ b/unifieddyes/locale/de.txt
@@ -0,0 +1,74 @@
+# Translation by Xanthin
+
+Lime Dye = Gelbgruener Farbstoff (Gelbgruen)
+Aqua Dye = Aqua Farbstoff
+Sky-blue Dye = Himmelblauer Farbstoff
+Red-violet Dye = Rotvioletter Farbstoff
+Light Grey Dye = Hellgrauer Farbstoff
+
+Dark Red Dye (low saturation) = Dunkelroter Farbstoff (geringe Saettigung)
+Dark Orange Dye (low saturation) = Dunkeloranger Farbstoff (geringe Saettigung)
+Dark Yellow Dye (low saturation) = Dunkelgelber Farbstoff (geringe Saettigung)
+Dark Lime Dye (low saturation) = Gelbgruenerlime Farbstoff (geringe Saettigung)
+Dark Green Dye (low saturation) = Dunkelgruener Farbstoff (geringe Saettigung)
+Dark Aqua Dye (low saturation) = Dunkelaqua Farbstoff (geringe Saettigung)
+Dark Cyan Dye (low saturation) = Dunkeltuerkiser Farbstoff (geringe Saettigung)
+Dark Sky-blue Dye (low saturation) = Dunkelhimmelblauer Farbstoff (geringe Saettigung)
+Dark Blue Dye (low saturation) = Dunkelblauer Farbstoff (geringe Saettigung)
+Dark Violet Dye (low saturation) = Dunkelvioletter Farbstoff (geringe Saettigung)
+Dark Magenta Dye (low saturation) = Dunkelmagenta Farbstoff (geringe Saettigung)
+Dark Red-violet Dye (low saturation) = Dunkelrotvioletter Farbstoff (geringe Saettigung)
+
+Dark Red Dye = Dunkelroter Farbstoff
+Dark Orange Dye = Dunkeloranger Farbstoff
+Dark Yellow Dye = Dunkelgelber Farbstoff
+Dark Lime Dye = Dunkelgelbgruener Farbstoff
+Dark Green Dye = Dunkelgruener Farbstoff
+Dark Aqua Dye = Dunkelaqua Farbstoff
+Dark Cyan Dye = Dunkeltuerkiser Farbstoff
+Dark Sky-blue Dye = Dunkelhimmelblauer Farbstoff
+Dark Blue Dye = Dunkelblauer Farbstoff
+Dark Violet Dye = Dunkelvioletter Farbstoff
+Dark Magenta Dye = Dunkelmagenta Farbstoff
+Dark Red-violet Dye = Dunkelrotvioletter Farbstoff
+
+Medium Red Dye (low saturation) = Mittelroter Farbstoff (geringe Saettigung)
+Medium Orange Dye (low saturation) = Mitteloranger Farbstoff (geringe Saettigung)
+Medium Yellow Dye (low saturation) = Mittelgelber Farbstoff (geringe Saettigung)
+Medium Lime Dye (low saturation) = Mittelgelbgruener Farbstoff (geringe Saettigung)
+Medium Green Dye (low saturation) = Mittelgruener Farbstoff (geringe Saettigung)
+Medium Aqua Dye (low saturation) = Mittelaqua Farbstoff (geringe Saettigung)
+Medium Cyan Dye (low saturation) = Mitteltuerkiser Farbstoff (geringe Saettigung)
+Medium Sky-blue Dye (low saturation) = Mittelhimmelblauer Farbstoff (geringe Saettigung)
+Medium Blue Dye (low saturation) = Mittelblauer Farbstoff (geringe Saettigung)
+Medium Violet Dye (low saturation) = Mittelvioletter Farbstoff (geringe Saettigung)
+Medium Magenta Dye (low saturation) = Mittelmagenta Farbstoff (geringe Saettigung)
+Medium Red-violet Dye (low saturation) = Mittelrotvioletter Farbstoff (geringe Saettigung)
+
+Medium Red Dye = Mittelroter Farbstoff
+Medium Orange Dye = Mitteloranger Farbstoff
+Medium Yellow Dye = Mittelgelber Farbstoff
+Medium Lime Dye = Mittelgelbgruener Farbstoff
+Medium Green Dye = Mittelgruener Farbstoff
+Medium Aqua Dye = Mittelaqua Farbstoff
+Medium Cyan Dye = Mitteltuerkiser Farbstoff
+Medium Sky-blue = Mittelhimmelblauer Farbstoff
+Medium Blue Dye = Mittelblauer Farbstoff
+Medium Violet Dye = Mittelvioletter Farbstoff
+Medium Magenta Dye = Mittelmagenta Farbstoff
+Medium Red-violet Dye = Mittelrotvioletter Farbstoff
+
+Red Dye (low saturation) = Roter Farbstoff (geringe Saettigung)
+Orange Dye (low saturation) = Oranger Farbstoff (geringe Saettigung)
+Yellow Dye (low saturation) = Gelber Farbstoff (geringe Saettigung)
+Lime Dye (low saturation) = Gelbgruener Farbstoff (geringe Saettigung)
+Green Dye (low saturation) = Gruener Farbstoff (geringe Saettigung)
+Aqua Dye (low saturation) = Aqua Farbstoff (geringe Saettigung)
+Cyan Dye (low saturation) = Tuerkiser Farbstoff (geringe Saettigung)
+Sky-blue Dye (low saturation) = Himmelblauer Farbstoff (geringe Saettigung)
+Blue Dye (low saturation) = Blauer Farbstoff (geringe Saettigung)
+Violet Dye (low saturation) = Violetter Farbstoff (geringe Saettigung)
+Magenta Dye (low saturation) = Magenta Farbstoff (geringe Saettigung) lila
+Red-violet Dye (low saturation) = Rotvioletter Farbstoff (geringe Saettigung)
+
+[UnifiedDyes] Loaded! = [UnifiedDyes] geladen!
diff --git a/unifieddyes/locale/template.txt b/unifieddyes/locale/template.txt
new file mode 100644
index 0000000..126bef8
--- /dev/null
+++ b/unifieddyes/locale/template.txt
@@ -0,0 +1,87 @@
+# Template
+
+Lime Dye =
+Aqua Dye =
+Sky-blue Dye =
+Red-violet Dye =
+Light Grey Dye =
+
+Dark Red Dye (low saturation) =
+Dark Orange Dye (low saturation) =
+Dark Yellow Dye (low saturation) =
+Dark Lime Dye (low saturation) =
+Dark Green Dye (low saturation) =
+Dark Aqua Dye (low saturation) =
+Dark Cyan Dye (low saturation) =
+Dark Sky-blue Dye (low saturation) =
+Dark Blue Dye (low saturation) =
+Dark Violet Dye (low saturation) =
+Dark Magenta Dye (low saturation) =
+Dark Red-violet Dye (low saturation) =
+
+Dark Red Dye =
+Dark Orange Dye =
+Dark Yellow Dye =
+Dark Lime Dye =
+Dark Green Dye =
+Dark Aqua Dye =
+Dark Cyan Dye =
+Dark Sky-blue Dye =
+Dark Blue Dye =
+Dark Violet Dye =
+Dark Magenta Dye =
+Dark Red-violet Dye =
+
+Medium Red Dye (low saturation) =
+Medium Orange Dye (low saturation) =
+Medium Yellow Dye (low saturation) =
+Medium Lime Dye (low saturation) =
+Medium Green Dye (low saturation) =
+Medium Aqua Dye (low saturation) =
+Medium Cyan Dye (low saturation) =
+Medium Sky-blue Dye (low saturation) =
+Medium Blue Dye (low saturation) =
+Medium Violet Dye (low saturation) =
+Medium Magenta Dye (low saturation) =
+Medium Red-violet Dye (low saturation) =
+
+Medium Red Dye =
+Medium Orange Dye =
+Medium Yellow Dye =
+Medium Lime Dye =
+Medium Green Dye =
+Medium Aqua Dye =
+Medium Cyan Dye =
+Medium Sky-blue =
+Medium Blue Dye =
+Medium Violet Dye =
+Medium Magenta Dye =
+Medium Red-violet Dye =
+
+Red Dye (low saturation) =
+Orange Dye (low saturation) =
+Yellow Dye (low saturation) =
+Lime Dye (low saturation) =
+Green Dye (low saturation) =
+Aqua Dye (low saturation) =
+Cyan Dye (low saturation) =
+Sky-blue Dye (low saturation) =
+Blue Dye (low saturation) =
+Violet Dye (low saturation) =
+Magenta Dye (low saturation) =
+Red-violet Dye (low saturation) =
+
+Red Dye =
+Orange Dye =
+Yellow Dye =
+Lime Dye =
+Green Dye =
+Aqua Dye =
+Cyan Dye =
+Sky-blue Dye =
+Blue Dye =
+Violet Dye =
+Magenta Dye =
+Red-violet Dye =
+
+[UnifiedDyes] Loaded! =
diff --git a/unifieddyes/locale/tr.txt b/unifieddyes/locale/tr.txt
new file mode 100644
index 0000000..6109389
--- /dev/null
+++ b/unifieddyes/locale/tr.txt
@@ -0,0 +1,88 @@
+# TUrkish translation
+# Mahmutelmas06@hotmail.com
+
+Lime Dye = Limon YeÅŸili Boya
+Aqua Dye = Deniz mavisi Boya
+Sky-blue Dye = Gök-Mavi Boya
+Red-violet Dye = Kırmızılı Boya
+Light Grey Dye = Açık Grey Boya
+
+Dark Red Dye (low saturation) = Koyu Kırmızı Boya (düşük doygunluk)
+Dark Orange Dye (low saturation) = Koyu Turuncu Boya (düşük doygunluk)
+Dark Yellow Dye (low saturation) = Koyu Sarı Boya (düşük doygunluk)
+Dark Lime Dye (low saturation) = Koyu Limon Yeşili Boya (düşük doygunluk)
+Dark Green Dye (low saturation) = Koyu Yeşil Boya (düşük doygunluk)
+Dark Aqua Dye (low saturation) = Koyu Deniz mavisi boya (düşük doygunluk)
+Dark Cyan Dye (low saturation) = Koyu Cam göbeği Boya (düşük doygunluk)
+Dark Sky-blue Dye (low saturation) = Koyu Gök-Mavi Boya (düşük doygunluk)
+Dark Blue Dye (low saturation) = Koyu Mavi Boya (düşük doygunluk)
+Dark Violet Dye (low saturation) = Koyu mor Boya (düşük doygunluk)
+Dark Magenta Dye (low saturation) = Koyu Kızılımsı Mor Boya (düşük doygunluk)
+Dark Red-violet Dye (low saturation) = Koyu Kırmızılı Boya (düşük doygunluk)
+
+Dark Red Dye = Koyu Kırmızı Boya
+Dark Orange Dye = Koyu Turuncu Boya
+Dark Yellow Dye = Koyu Sarı Boya
+Dark Lime Dye = Koyu Limon YeÅŸili Boya
+Dark Green Dye = Koyu YeÅŸil Boya
+Dark Aqua Dye = Koyu Deniz mavisi Boya
+Dark Cyan Dye = Koyu Cam göbeği Boya
+Dark Sky-blue Dye = Koyu Gök-Mavi Boya
+Dark Blue Dye = Koyu Mavi Boya
+Dark Violet Dye = Koyu mor Boya
+Dark Magenta Dye = Koyu Kızılımsı Mor Boya
+Dark Red-violet Dye = Koyu Kırmızılı Boya
+
+Medium Red Dye (low saturation) = Kırmızı Boya (düşük doygunluk)
+Medium Orange Dye (low saturation) = Turuncu Boya (düşük doygunluk)
+Medium Yellow Dye (low saturation) = Sarı Boya (düşük doygunluk)
+Medium Lime Dye (low saturation) = Limon Yeşili Boya (düşük doygunluk)
+Medium Green Dye (low saturation) = Yeşil Boya (düşük doygunluk)
+Medium Aqua Dye (low saturation) = Deniz mavisi Boya (düşük doygunluk)
+Medium Cyan Dye (low saturation) = Cam göbeği Boya (düşük doygunluk)
+Medium Sky-blue Dye (low saturation) = Gök-Mavi Boya (düşük doygunluk)
+Medium Blue Dye (low saturation) = Mavi Boya (düşük doygunluk)
+Medium Violet Dye (low saturation) = Koyu mor Boya (düşük doygunluk)
+Medium Magenta Dye (low saturation) = Kızılımsı Mor Boya (düşük doygunluk)
+Medium Red-violet Dye (low saturation) = Kırmızılı Boya (düşük doygunluk)
+
+Medium Red Dye = Kırmızı Boya
+Medium Orange Dye = Turuncu Boya
+Medium Yellow Dye = Sarı Boya
+Medium Lime Dye = Limon YeÅŸili Boya
+Medium Green Dye = YeÅŸil Boya
+Medium Aqua Dye = Deniz mavisi Boya
+Medium Cyan Dye = Cam göbeği Boya
+Medium Sky-blue = Gök-Mavi
+Medium Blue Dye = Mavi Boya
+Medium Violet Dye = Koyu mor Boya
+Medium Magenta Dye = Kızılımsı Mor Boya
+Medium Red-violet Dye = Kırmızılı Boya
+
+Red Dye (low saturation) = Kırmızı Boya (düşük doygunluk)
+Orange Dye (low saturation) = Turuncu Boya (düşük doygunluk)
+Yellow Dye (low saturation) = Sarı Boya (düşük doygunluk)
+Lime Dye (low saturation) = Limon Yeşili Boya (düşük doygunluk)
+Green Dye (low saturation) = Yeşil Boya (düşük doygunluk)
+Aqua Dye (low saturation) = Deniz mavisi Boya (düşük doygunluk)
+Cyan Dye (low saturation) = Cam göbeği Boya (düşük doygunluk)
+Sky-blue Dye (low saturation) = Gök-Mavi Boya (düşük doygunluk)
+Blue Dye (low saturation) = Mavi Boya (düşük doygunluk)
+Violet Dye (low saturation) = Koyu mor Boya (düşük doygunluk)
+Magenta Dye (low saturation) = Kızılımsı Mor Boya (düşük doygunluk)
+Red-violet Dye (low saturation) = Kırmızılı Boya (düşük doygunluk)
+
+Red Dye = Kırmızı Boya
+Orange Dye = Turuncu Boya
+Yellow Dye = Sarı Boya
+Lime Dye = Limon YeÅŸili Boya
+Green Dye = YeÅŸil Boya
+Aqua Dye = Deniz mavisi Boya
+Cyan Dye = Cam göbeği Boya
+Sky-blue Dye = Gök-Mavi Boya
+Blue Dye = Mavi Boya
+Violet Dye = Koyu mor Boya
+Magenta Dye = Kızılımsı Mor Boya
+Red-violet Dye = Kırmızılı Boya
+
+[UnifiedDyes] Loaded! = [UnifiedBoyas] yüklendi!
diff --git a/unifieddyes/textures/unifieddyes_aqua.png b/unifieddyes/textures/unifieddyes_aqua.png
new file mode 100644
index 0000000..da73e21
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_aqua.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_aqua_s50.png b/unifieddyes/textures/unifieddyes_aqua_s50.png
new file mode 100644
index 0000000..d737e67
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_aqua_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_blue_s50.png b/unifieddyes/textures/unifieddyes_blue_s50.png
new file mode 100644
index 0000000..33ab950
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_blue_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_cyan_s50.png b/unifieddyes/textures/unifieddyes_cyan_s50.png
new file mode 100644
index 0000000..7f304b7
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_cyan_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_aqua.png b/unifieddyes/textures/unifieddyes_dark_aqua.png
new file mode 100644
index 0000000..6a146ea
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_aqua.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_aqua_s50.png b/unifieddyes/textures/unifieddyes_dark_aqua_s50.png
new file mode 100644
index 0000000..5dbf4bd
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_aqua_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_blue.png b/unifieddyes/textures/unifieddyes_dark_blue.png
new file mode 100644
index 0000000..2a62a38
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_blue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_blue_s50.png b/unifieddyes/textures/unifieddyes_dark_blue_s50.png
new file mode 100644
index 0000000..4eceeff
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_blue_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_cyan.png b/unifieddyes/textures/unifieddyes_dark_cyan.png
new file mode 100644
index 0000000..4cfbee4
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_cyan.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_cyan_s50.png b/unifieddyes/textures/unifieddyes_dark_cyan_s50.png
new file mode 100644
index 0000000..857c470
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_cyan_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_green.png b/unifieddyes/textures/unifieddyes_dark_green.png
new file mode 100644
index 0000000..19caa48
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_green.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_green_s50.png b/unifieddyes/textures/unifieddyes_dark_green_s50.png
new file mode 100644
index 0000000..686a49e
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_green_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_lime.png b/unifieddyes/textures/unifieddyes_dark_lime.png
new file mode 100644
index 0000000..927ddf8
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_lime.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_lime_s50.png b/unifieddyes/textures/unifieddyes_dark_lime_s50.png
new file mode 100644
index 0000000..f274909
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_lime_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_magenta.png b/unifieddyes/textures/unifieddyes_dark_magenta.png
new file mode 100644
index 0000000..4f622b8
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_magenta.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_magenta_s50.png b/unifieddyes/textures/unifieddyes_dark_magenta_s50.png
new file mode 100644
index 0000000..1c461dc
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_magenta_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_orange.png b/unifieddyes/textures/unifieddyes_dark_orange.png
new file mode 100644
index 0000000..10bfdd2
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_orange.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_orange_s50.png b/unifieddyes/textures/unifieddyes_dark_orange_s50.png
new file mode 100644
index 0000000..2a794de
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_orange_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_red.png b/unifieddyes/textures/unifieddyes_dark_red.png
new file mode 100644
index 0000000..504c359
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_red.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_red_s50.png b/unifieddyes/textures/unifieddyes_dark_red_s50.png
new file mode 100644
index 0000000..4e7f01b
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_red_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_redviolet.png b/unifieddyes/textures/unifieddyes_dark_redviolet.png
new file mode 100644
index 0000000..79f1b15
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_redviolet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_redviolet_s50.png b/unifieddyes/textures/unifieddyes_dark_redviolet_s50.png
new file mode 100644
index 0000000..889329e
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_redviolet_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_skyblue.png b/unifieddyes/textures/unifieddyes_dark_skyblue.png
new file mode 100644
index 0000000..dc6e928
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_skyblue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_skyblue_s50.png b/unifieddyes/textures/unifieddyes_dark_skyblue_s50.png
new file mode 100644
index 0000000..ac32c49
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_skyblue_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_violet.png b/unifieddyes/textures/unifieddyes_dark_violet.png
new file mode 100644
index 0000000..b093fd0
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_violet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_violet_s50.png b/unifieddyes/textures/unifieddyes_dark_violet_s50.png
new file mode 100644
index 0000000..c507491
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_violet_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_yellow.png b/unifieddyes/textures/unifieddyes_dark_yellow.png
new file mode 100644
index 0000000..7bb6225
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_yellow.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_dark_yellow_s50.png b/unifieddyes/textures/unifieddyes_dark_yellow_s50.png
new file mode 100644
index 0000000..c391292
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_dark_yellow_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_darkgrey.png b/unifieddyes/textures/unifieddyes_darkgrey.png
new file mode 100644
index 0000000..61b13d0
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_darkgrey.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_green_s50.png b/unifieddyes/textures/unifieddyes_green_s50.png
new file mode 100644
index 0000000..8f8fb73
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_green_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_aqua.png b/unifieddyes/textures/unifieddyes_light_aqua.png
new file mode 100644
index 0000000..80458e2
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_aqua.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_blue.png b/unifieddyes/textures/unifieddyes_light_blue.png
new file mode 100644
index 0000000..19f001d
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_blue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_cyan.png b/unifieddyes/textures/unifieddyes_light_cyan.png
new file mode 100644
index 0000000..1ff5580
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_cyan.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_green.png b/unifieddyes/textures/unifieddyes_light_green.png
new file mode 100644
index 0000000..e549c6f
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_green.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_lime.png b/unifieddyes/textures/unifieddyes_light_lime.png
new file mode 100644
index 0000000..e5d797e
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_lime.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_magenta.png b/unifieddyes/textures/unifieddyes_light_magenta.png
new file mode 100644
index 0000000..08bed5b
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_magenta.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_orange.png b/unifieddyes/textures/unifieddyes_light_orange.png
new file mode 100644
index 0000000..b92b000
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_orange.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_red.png b/unifieddyes/textures/unifieddyes_light_red.png
new file mode 100644
index 0000000..ecc8bd8
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_red.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_redviolet.png b/unifieddyes/textures/unifieddyes_light_redviolet.png
new file mode 100644
index 0000000..2e01d6f
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_redviolet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_skyblue.png b/unifieddyes/textures/unifieddyes_light_skyblue.png
new file mode 100644
index 0000000..9fc1a44
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_skyblue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_violet.png b/unifieddyes/textures/unifieddyes_light_violet.png
new file mode 100644
index 0000000..41d45fa
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_violet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_light_yellow.png b/unifieddyes/textures/unifieddyes_light_yellow.png
new file mode 100644
index 0000000..ed140d1
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_light_yellow.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_lightgrey.png b/unifieddyes/textures/unifieddyes_lightgrey.png
new file mode 100644
index 0000000..97ab01f
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_lightgrey.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_lime.png b/unifieddyes/textures/unifieddyes_lime.png
new file mode 100644
index 0000000..5e6d5bf
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_lime.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_lime_s50.png b/unifieddyes/textures/unifieddyes_lime_s50.png
new file mode 100644
index 0000000..d02762e
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_lime_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_magenta_s50.png b/unifieddyes/textures/unifieddyes_magenta_s50.png
new file mode 100644
index 0000000..aaf9d51
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_magenta_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_aqua.png b/unifieddyes/textures/unifieddyes_medium_aqua.png
new file mode 100644
index 0000000..3659c18
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_aqua.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_aqua_s50.png b/unifieddyes/textures/unifieddyes_medium_aqua_s50.png
new file mode 100644
index 0000000..fcd8869
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_aqua_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_blue.png b/unifieddyes/textures/unifieddyes_medium_blue.png
new file mode 100644
index 0000000..4da240d
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_blue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_blue_s50.png b/unifieddyes/textures/unifieddyes_medium_blue_s50.png
new file mode 100644
index 0000000..bd6e0f9
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_blue_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_cyan.png b/unifieddyes/textures/unifieddyes_medium_cyan.png
new file mode 100644
index 0000000..e8015f6
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_cyan.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_cyan_s50.png b/unifieddyes/textures/unifieddyes_medium_cyan_s50.png
new file mode 100644
index 0000000..de14506
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_cyan_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_green.png b/unifieddyes/textures/unifieddyes_medium_green.png
new file mode 100644
index 0000000..ecc5f06
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_green.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_green_s50.png b/unifieddyes/textures/unifieddyes_medium_green_s50.png
new file mode 100644
index 0000000..c9681b3
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_green_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_lime.png b/unifieddyes/textures/unifieddyes_medium_lime.png
new file mode 100644
index 0000000..2060bac
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_lime.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_lime_s50.png b/unifieddyes/textures/unifieddyes_medium_lime_s50.png
new file mode 100644
index 0000000..6eadc25
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_lime_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_magenta.png b/unifieddyes/textures/unifieddyes_medium_magenta.png
new file mode 100644
index 0000000..0f6144d
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_magenta.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_magenta_s50.png b/unifieddyes/textures/unifieddyes_medium_magenta_s50.png
new file mode 100644
index 0000000..d5ca0dd
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_magenta_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_orange.png b/unifieddyes/textures/unifieddyes_medium_orange.png
new file mode 100644
index 0000000..d131b9c
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_orange.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_orange_s50.png b/unifieddyes/textures/unifieddyes_medium_orange_s50.png
new file mode 100644
index 0000000..7e08bcf
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_orange_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_red.png b/unifieddyes/textures/unifieddyes_medium_red.png
new file mode 100644
index 0000000..28bc56d
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_red.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_red_s50.png b/unifieddyes/textures/unifieddyes_medium_red_s50.png
new file mode 100644
index 0000000..0eef916
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_red_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_redviolet.png b/unifieddyes/textures/unifieddyes_medium_redviolet.png
new file mode 100644
index 0000000..1143e27
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_redviolet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_redviolet_s50.png b/unifieddyes/textures/unifieddyes_medium_redviolet_s50.png
new file mode 100644
index 0000000..a314935
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_redviolet_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_skyblue.png b/unifieddyes/textures/unifieddyes_medium_skyblue.png
new file mode 100644
index 0000000..f1e935f
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_skyblue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_skyblue_s50.png b/unifieddyes/textures/unifieddyes_medium_skyblue_s50.png
new file mode 100644
index 0000000..bd2423e
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_skyblue_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_violet.png b/unifieddyes/textures/unifieddyes_medium_violet.png
new file mode 100644
index 0000000..dd8b5fa
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_violet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_violet_s50.png b/unifieddyes/textures/unifieddyes_medium_violet_s50.png
new file mode 100644
index 0000000..4b6de6a
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_violet_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_yellow.png b/unifieddyes/textures/unifieddyes_medium_yellow.png
new file mode 100644
index 0000000..578f5b9
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_yellow.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_medium_yellow_s50.png b/unifieddyes/textures/unifieddyes_medium_yellow_s50.png
new file mode 100644
index 0000000..ce141da
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_medium_yellow_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_orange_s50.png b/unifieddyes/textures/unifieddyes_orange_s50.png
new file mode 100644
index 0000000..fe62b73
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_orange_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_red_s50.png b/unifieddyes/textures/unifieddyes_red_s50.png
new file mode 100644
index 0000000..6aef4c6
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_red_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_redviolet.png b/unifieddyes/textures/unifieddyes_redviolet.png
new file mode 100644
index 0000000..2cb0692
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_redviolet.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_redviolet_s50.png b/unifieddyes/textures/unifieddyes_redviolet_s50.png
new file mode 100644
index 0000000..a438d9d
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_redviolet_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_skyblue.png b/unifieddyes/textures/unifieddyes_skyblue.png
new file mode 100644
index 0000000..85aa3c5
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_skyblue.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_skyblue_s50.png b/unifieddyes/textures/unifieddyes_skyblue_s50.png
new file mode 100644
index 0000000..1d6834b
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_skyblue_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_violet_s50.png b/unifieddyes/textures/unifieddyes_violet_s50.png
new file mode 100644
index 0000000..620e42c
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_violet_s50.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_yellow_s50.png b/unifieddyes/textures/unifieddyes_yellow_s50.png
new file mode 100644
index 0000000..a3b5f0b
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_yellow_s50.png
Binary files differ
diff --git a/unifieddyes/unifieddyes_base.png b/unifieddyes/unifieddyes_base.png
new file mode 100644
index 0000000..912cc93
--- /dev/null
+++ b/unifieddyes/unifieddyes_base.png
Binary files differ
diff --git a/usesdirt/README.md b/usesdirt/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/usesdirt/README.md
diff --git a/usesdirt/depends.txt b/usesdirt/depends.txt
new file mode 100644
index 0000000..331d858
--- /dev/null
+++ b/usesdirt/depends.txt
@@ -0,0 +1 @@
+default \ No newline at end of file
diff --git a/usesdirt/init.lua b/usesdirt/init.lua
new file mode 100644
index 0000000..367a183
--- /dev/null
+++ b/usesdirt/init.lua
@@ -0,0 +1,605 @@
+minetest.register_node("usesdirt:dirt_brick", {
+ tiles = {"usesdirt_dirt_brick.png"},
+ description = "Dirt Brick",
+ groups = {snappy=2,choppy=1,oddly_breakable_by_hand=2},
+})
+minetest.register_craft({
+ output = '"usesdirt:dirt_brick" 6',
+ recipe = {
+ {'default:dirt', 'default:dirt', 'default:dirt'},
+ {'default:dirt', 'default:dirt', 'default:dirt'},
+ {'default:dirt', 'default:dirt', 'default:dirt'},
+ }
+})
+--Ladder
+minetest.register_node("usesdirt:dirt_ladder", {
+ description = "Ladder",
+ drawtype = "signlike",
+ tiles ={"usesdirt_dirt_ladder.png"},
+ inventory_image = "usesdirt_dirt_ladder.png",
+ wield_image = "usesdirt_dirt_ladder.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ is_ground_content = true,
+ walkable = false,
+ climbable = true,
+ selection_box = {
+ type = "wallmounted",
+ --wall_top = = <default>
+ --wall_bottom = = <default>
+ --wall_side = = <default>
+ },
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3},
+ legacy_wallmounted = true,
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_ladder 3',
+ recipe = {
+ {'usesdirt:dirt_brick', '', 'usesdirt:dirt_brick'},
+ {'usesdirt:dirt_brick', 'usesdirt:dirt_brick','usesdirt:dirt_brick'},
+ {'usesdirt:dirt_brick','','usesdirt:dirt_brick'},
+ }
+})
+--Fence
+minetest.register_node("usesdirt:dirt_fence", {
+ description = "Dirt Fence",
+ drawtype = "fencelike",
+ tiles ={"usesdirt_dirt_brick.png"},
+ inventory_image = "usesdirt_dirt_fence.png",
+ wield_image = "usesdirt_dirt_fence.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {snappy=2,choppy=1,oddly_breakable_by_hand=3},
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_fence 2',
+ recipe = {
+ {'usesdirt:dirt_brick', 'usesdirt:dirt_brick', 'usesdirt:dirt_brick'},
+ {'usesdirt:dirt_brick', 'usesdirt:dirt_brick', 'usesdirt:dirt_brick'},
+ }
+})
+---------------------------------------------------------------------------------------------------
+minetest.register_node("usesdirt:dirt_cobble_stone", {
+ tiles = {"usesdirt_dirt_cobble_stone.png"},
+ description = "Dirt Cobble Stone",
+ is_ground_content = true,
+ groups = {cracky=3, stone=2},
+})
+minetest.register_craft({
+ output = '"usesdirt:dirt_cobble_stone" 3',
+ recipe = {
+ {'usesdirt:dirt_brick', 'usesdirt:dirt_brick', 'usesdirt:dirt_brick'},
+ {'usesdirt:dirt_brick', 'usesdirt:dirt_brick', 'usesdirt:dirt_brick'},
+ {'usesdirt:dirt_brick', 'usesdirt:dirt_brick', 'usesdirt:dirt_brick'},
+ }
+})
+--Ladder
+minetest.register_node("usesdirt:dirt_cobble_stone_ladder", {
+ description = "Ladder",
+ drawtype = "signlike",
+ tiles ={"usesdirt_dirt_cobble_stone_ladder.png"},
+ inventory_image = "usesdirt_dirt_cobble_stone_ladder.png",
+ wield_image = "usesdirt_dirt_cobble_stone_ladder.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ is_ground_content = true,
+ walkable = false,
+ climbable = true,
+ selection_box = {
+ type = "wallmounted",
+ --wall_top = = <default>
+ --wall_bottom = = <default>
+ --wall_side = = <default>
+ },
+ groups = {cracky=3, stone=2},
+ legacy_wallmounted = true,
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_cobble_stone_ladder 3',
+ recipe = {
+ {'usesdirt:dirt_cobble_stone', '', 'usesdirt:dirt_cobble_stone'},
+ {'usesdirt:dirt_cobble_stone', 'usesdirt:dirt_cobble_stone','usesdirt:dirt_cobble_stone'},
+ {'usesdirt:dirt_cobble_stone','','usesdirt:dirt_cobble_stone'},
+ }
+})
+--Fence
+minetest.register_node("usesdirt:dirt_cobble_stone_fence", {
+ description = "Dirt Cobble Stone Fence",
+ drawtype = "fencelike",
+ tiles ={"usesdirt_dirt_cobble_stone.png"},
+ inventory_image = "usesdirt_dirt_cobble_stone_fence.png",
+ wield_image = "usesdirt_dirt_cobble_stone_fence.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {cracky=3, stone=2},
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_cobble_stone_fence 2',
+ recipe = {
+ {'usesdirt:dirt_cobble_stone', 'usesdirt:dirt_cobble_stone', 'usesdirt:dirt_cobble_stone'},
+ {'usesdirt:dirt_cobble_stone', 'usesdirt:dirt_cobble_stone', 'usesdirt:dirt_cobble_stone'},
+ }
+})
+----------------------------------------------------------------------------------------------------
+minetest.register_node("usesdirt:dirt_stone", {
+ tiles = {"usesdirt_dirt_stone.png"},
+ description = "Dirt Stone",
+ is_ground_content = true,
+ groups = {cracky=3, stone=2},
+})
+--Ladder
+minetest.register_node("usesdirt:dirt_stone_ladder", {
+ description = "Ladder",
+ drawtype = "signlike",
+ tiles ={"usesdirt_dirt_stone_ladder.png"},
+ inventory_image = "usesdirt_dirt_stone_ladder.png",
+ wield_image = "usesdirt_dirt_stone_ladder.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ is_ground_content = true,
+ walkable = false,
+ climbable = true,
+ selection_box = {
+ type = "wallmounted",
+ --wall_top = = <default>
+ --wall_bottom = = <default>
+ --wall_side = = <default>
+ },
+ groups = {cracky=3, stone=2},
+ legacy_wallmounted = true,
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_stone_ladder 3',
+ recipe = {
+ {'usesdirt:dirt_stone', '', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone','usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone','','usesdirt:dirt_stone'},
+ }
+})
+--Fence
+minetest.register_node("usesdirt:dirt_stone_fence", {
+ description = "Dirt Stone Fence",
+ drawtype = "fencelike",
+ tiles ={"usesdirt_dirt_stone.png"},
+ inventory_image = "usesdirt_dirt_stone_fence.png",
+ wield_image = "usesdirt_dirt_stone_fence.png",
+ paramtype = "light",
+ is_ground_content = true,
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ groups = {cracky=3, stone=2},
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_stone_fence 2',
+ recipe = {
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ }
+})
+minetest.register_craft({
+ type = "cooking",
+ output = "usesdirt:dirt_stone",
+ recipe = "usesdirt:dirt_cobble_stone",
+})
+--Furnace
+
+local furnace_inactive_formspec =
+ "size[8,9]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;1,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "background[-0.5,-0.65;9,10.35;bg_furnace.jpg]"
+
+minetest.register_node("usesdirt:dirt_furnace", {
+ description = "Furnace",
+ tiles = {"usesdirt_dirt_furnace_top.png", "usesdirt_dirt_furnace_bottom.png", "usesdirt_dirt_furnace_side.png",
+ "usesdirt_dirt_furnace_side.png", "usesdirt_dirt_furnace_side.png", "usesdirt_dirt_furnace_front.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=2},
+ legacy_facedir_simple = true,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", furnace_inactive_formspec)
+ meta:set_string("infotext", "Furnace")
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ elseif not inv:is_empty("dst") then
+ return false
+ elseif not inv:is_empty("src") then
+ return false
+ end
+ return true
+ end,
+})
+
+minetest.register_node("usesdirt:dirt_furnace_active", {
+ description = "Furnace",
+ tiles = {"usesdirt_dirt_furnace_top.png", "usesdirt_dirt_furnace_bottom.png", "usesdirt_dirt_furnace_side.png",
+ "usesdirt_dirt_furnace_side.png", "usesdirt_dirt_furnace_side.png", "usesdirt_dirt_furnace_front_active.png"},
+ paramtype2 = "facedir",
+ light_source = 8,
+ drop = "usesdirt:dirt_furnace",
+ groups = {cracky=2, not_in_creative_inventory=1},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_stone_defaults(),
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", furnace_inactive_formspec)
+ meta:set_string("infotext", "Furnace");
+ local inv = meta:get_inventory()
+ inv:set_size("fuel", 1)
+ inv:set_size("src", 1)
+ inv:set_size("dst", 4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ if not inv:is_empty("fuel") then
+ return false
+ elseif not inv:is_empty("dst") then
+ return false
+ elseif not inv:is_empty("src") then
+ return false
+ end
+ return true
+ end,
+})
+
+function hacky_swap_node(pos,name)
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local meta0 = meta:to_table()
+ if node.name == name then
+ return
+ end
+ node.name = name
+ local meta0 = meta:to_table()
+ minetest.set_node(pos,node)
+ meta = minetest.get_meta(pos)
+ meta:from_table(meta0)
+end
+
+minetest.register_abm({
+ nodenames = {"usesdirt:dirt_furnace","usesdirt:dirt_furnace_active"},
+ interval = 1.0,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ local meta = minetest.get_meta(pos)
+ for i, name in ipairs({
+ "fuel_totaltime",
+ "fuel_time",
+ "src_totaltime",
+ "src_time"
+ }) do
+ if meta:get_string(name) == "" then
+ meta:set_float(name, 0.0)
+ end
+ end
+
+ local inv = meta:get_inventory()
+
+ local srclist = inv:get_list("src")
+ local cooked = nil
+
+ if srclist then
+ cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+
+ local was_active = false
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ was_active = true
+ meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
+ meta:set_float("src_time", meta:get_float("src_time") + 1)
+ if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
+ -- check if there's room for output in "dst" list
+ if inv:room_for_item("dst",cooked.item) then
+ -- Put result in "dst" list
+ inv:add_item("dst", cooked.item)
+ -- take stuff from "src" list
+ srcstack = inv:get_stack("src", 1)
+ srcstack:take_item()
+ inv:set_stack("src", 1, srcstack)
+ else
+ print("Could not insert '"..cooked.item:to_string().."'")
+ end
+ meta:set_string("src_time", 0)
+ end
+ end
+
+ if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
+ local percent = math.floor(meta:get_float("fuel_time") /
+ meta:get_float("fuel_totaltime") * 100)
+ meta:set_string("infotext","Furnace active: "..percent.."%")
+ hacky_swap_node(pos,"usesdirt:dirt_furnace_active")
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
+ (100-percent)..":default_furnace_fire_fg.png]"..
+ "list[current_name;fuel;2,3;1,1;]"..
+ "list[current_name;src;2,1;1,1;]"..
+ "list[current_name;dst;5,1;2,2;]"..
+ "list[current_player;main;0,5;8,4;]")
+ return
+ end
+
+ local fuel = nil
+ local cooked = nil
+ local fuellist = inv:get_list("fuel")
+ local srclist = inv:get_list("src")
+
+ if srclist then
+ cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
+ end
+ if fuellist then
+ fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
+ end
+
+ if fuel.time <= 0 then
+ meta:set_string("infotext","Furnace out of fuel")
+ hacky_swap_node(pos,"usesdirt:dirt_furnace")
+ meta:set_string("formspec", furnace_inactive_formspec)
+ return
+ end
+
+ if cooked.item:is_empty() then
+ if was_active then
+ meta:set_string("infotext","Furnace is empty")
+ hacky_swap_node(pos,"usesdirt:dirt_furnace")
+ meta:set_string("formspec", furnace_inactive_formspec)
+ end
+ return
+ end
+
+ meta:set_string("fuel_totaltime", fuel.time)
+ meta:set_string("fuel_time", 0)
+
+ local stack = inv:get_stack("fuel", 1)
+ stack:take_item()
+ inv:set_stack("fuel", 1, stack)
+ end,
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_furnace',
+ recipe = {
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'default:dirt','usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone','usesdirt:dirt_stone','usesdirt:dirt_stone'},
+ }
+})
+--Tools
+--axe
+minetest.register_tool("usesdirt:dirt_axe", {
+ description = "Dirt Axe",
+ inventory_image = "usesdirt_dirt_axe.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ choppy={times={[1]=3.00, [2]=1.00, [3]=0.60}, uses=20, maxlevel=1},
+ fleshy={times={[2]=1.30, [3]=0.70}, uses=20, maxlevel=1}
+ }
+ },
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_axe',
+ recipe = {
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'default:stick'},
+ {'', 'default:stick'},
+ }
+})
+--Sword
+minetest.register_tool("usesdirt:dirt_sword", {
+ description = "Dirt Sword",
+ inventory_image = "usesdirt_dirt_sword.png",
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level=0,
+ groupcaps={
+ fleshy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1},
+ snappy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1},
+ choppy={times={[3]=0.90}, uses=20, maxlevel=0}
+ }
+ }
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_sword',
+ recipe = {
+ {'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone'},
+ {'default:stick'},
+ }
+})
+
+--Shovel
+minetest.register_tool("usesdirt:dirt_shovel", {
+ description = "Dirt Shovel",
+ inventory_image = "usesdirt_dirt_shovel.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ crumbly={times={[1]=1.50, [2]=0.50, [3]=0.30}, uses=20, maxlevel=1}
+ }
+ },
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_shovel',
+ recipe = {
+ {'usesdirt:dirt_stone'},
+ {'default:stick'},
+ {'default:stick'},
+ }
+})
+--Pickaxe
+minetest.register_tool("usesdirt:dirt_pick", {
+ description = "Dirt Pickaxe",
+ inventory_image = "usesdirt_dirt_pick.png",
+ tool_capabilities = {
+ max_drop_level=0,
+ groupcaps={
+ cracky={times={[1]=3.00, [2]=1.20, [3]=0.80}, uses=20, maxlevel=1}
+ }
+ },
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_pick',
+ recipe = {
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ {'', 'default:stick', ''},
+ {'', 'default:stick', ''},
+ }
+})
+--Chest
+minetest.register_node("usesdirt:dirt_chest", {
+ description = "Dirt Chest",
+ tiles = {"usesdirt_dirt_chest.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=3, stone=2},
+ legacy_facedir_simple = true,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "list[current_name;main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]")
+ meta:set_string("infotext", "Chest")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from chest at "..minetest.pos_to_string(pos))
+ end,
+})
+
+local function has_locked_chest_privilege(meta, player)
+ if player:get_player_name() ~= meta:get_string("owner") then
+ return false
+ end
+ return true
+end
+
+minetest.register_node("usesdirt:dirt_locked_chest", {
+ description = "Dirt Locked Chest",
+ tiles = {"usesdirt_dirt_locked_chest.png"},
+ paramtype2 = "facedir",
+ groups = {cracky=3, stone=2},
+ legacy_facedir_simple = true,
+ after_place_node = function(pos, placer)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("owner", placer:get_player_name() or "")
+ meta:set_string("infotext", "Locked Chest (owned by "..
+ meta:get_string("owner")..")")
+ end,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "list[current_name;main;0,0;8,4;]"..
+ "list[current_player;main;0,5;8,4;]")
+ meta:set_string("infotext", "Locked Chest")
+ meta:set_string("owner", "")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if not has_locked_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not has_locked_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not has_locked_chest_privilege(meta, player) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a locked chest belonging to "..
+ meta:get_string("owner").." at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in locked chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff to locked chest at "..minetest.pos_to_string(pos))
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from locked chest at "..minetest.pos_to_string(pos))
+ end,
+})
+
+minetest.register_craft({
+ output = 'usesdirt:dirt_locked_chest',
+ recipe = {
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'default:steel_ingot', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ }
+})
+minetest.register_craft({
+ output = 'usesdirt:dirt_chest',
+ recipe = {
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', '', 'usesdirt:dirt_stone'},
+ {'usesdirt:dirt_stone', 'usesdirt:dirt_stone', 'usesdirt:dirt_stone'},
+ }
+})
diff --git a/usesdirt/textures/usesdirt_dirt_axe.png b/usesdirt/textures/usesdirt_dirt_axe.png
new file mode 100644
index 0000000..d09c33e
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_axe.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_brick.png b/usesdirt/textures/usesdirt_dirt_brick.png
new file mode 100644
index 0000000..d2fd6c8
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_brick.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_chest.png b/usesdirt/textures/usesdirt_dirt_chest.png
new file mode 100644
index 0000000..93436a0
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_chest.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_cobble_stone.png b/usesdirt/textures/usesdirt_dirt_cobble_stone.png
new file mode 100644
index 0000000..34d8f67
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_cobble_stone.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_cobble_stone_fence.png b/usesdirt/textures/usesdirt_dirt_cobble_stone_fence.png
new file mode 100644
index 0000000..4aaebc4
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_cobble_stone_fence.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_cobble_stone_ladder.png b/usesdirt/textures/usesdirt_dirt_cobble_stone_ladder.png
new file mode 100644
index 0000000..3160f1c
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_cobble_stone_ladder.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_cup.png b/usesdirt/textures/usesdirt_dirt_cup.png
new file mode 100644
index 0000000..ef367e5
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_cup.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_fence.png b/usesdirt/textures/usesdirt_dirt_fence.png
new file mode 100644
index 0000000..65d5e0e
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_fence.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_furnace_bottom.png b/usesdirt/textures/usesdirt_dirt_furnace_bottom.png
new file mode 100644
index 0000000..dd1d47c
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_furnace_bottom.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_furnace_front.png b/usesdirt/textures/usesdirt_dirt_furnace_front.png
new file mode 100644
index 0000000..17e66c4
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_furnace_front.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_furnace_front_active.png b/usesdirt/textures/usesdirt_dirt_furnace_front_active.png
new file mode 100644
index 0000000..ef00526
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_furnace_front_active.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_furnace_side.png b/usesdirt/textures/usesdirt_dirt_furnace_side.png
new file mode 100644
index 0000000..dd1d47c
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_furnace_side.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_furnace_top.png b/usesdirt/textures/usesdirt_dirt_furnace_top.png
new file mode 100644
index 0000000..dd1d47c
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_furnace_top.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_ladder.png b/usesdirt/textures/usesdirt_dirt_ladder.png
new file mode 100644
index 0000000..32a9899
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_ladder.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_locked_chest.png b/usesdirt/textures/usesdirt_dirt_locked_chest.png
new file mode 100644
index 0000000..28f7554
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_locked_chest.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_pick.png b/usesdirt/textures/usesdirt_dirt_pick.png
new file mode 100644
index 0000000..2eff560
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_pick.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_shovel.png b/usesdirt/textures/usesdirt_dirt_shovel.png
new file mode 100644
index 0000000..6955a88
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_shovel.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_stone.png b/usesdirt/textures/usesdirt_dirt_stone.png
new file mode 100644
index 0000000..a646721
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_stone.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_stone_fence.png b/usesdirt/textures/usesdirt_dirt_stone_fence.png
new file mode 100644
index 0000000..cf89ae0
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_stone_fence.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_stone_ladder.png b/usesdirt/textures/usesdirt_dirt_stone_ladder.png
new file mode 100644
index 0000000..ab5bbd0
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_stone_ladder.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_sword.png b/usesdirt/textures/usesdirt_dirt_sword.png
new file mode 100644
index 0000000..cd4fee0
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_sword.png
Binary files differ
diff --git a/usesdirt/textures/usesdirt_dirt_torch.png b/usesdirt/textures/usesdirt_dirt_torch.png
new file mode 100644
index 0000000..fdb1245
--- /dev/null
+++ b/usesdirt/textures/usesdirt_dirt_torch.png
Binary files differ
diff --git a/windmill/README.md b/windmill/README.md
new file mode 100644
index 0000000..2b9e2ed
--- /dev/null
+++ b/windmill/README.md
@@ -0,0 +1,27 @@
+
+
+This works only with latest git of Minetest (ass of 16.10.13).
+With older versions, you'll only see a one node large rotor.
+
+Crafting: MATERIAL -nothing- MATERIAL
+ stick
+ MATERIAL -nothing- MATERIAL
+
+With MATERIAL beeing
+
+ steel ingot for 4-blade windmill
+ homedecor plastic sheet for 3-blade turbine
+ white wool for historic windmill sails
+ wood for historic windmill without sails (rotates very slowly)
+ stick for us-style farm windmill
+
+Clockwise- and counterclockwise rotating rotors can be crafted into each other.
+
+
+The axis is mostly a decorative node to which you can attach your mill rotors.
+
+Axis: steel_ingot stick steel_ingot
+
+
+Liscences: for code (written by Sokomine): WTFPL (it's really only a demonstration)
+ for textures (created by VanessaE): WTFPL
diff --git a/windmill/init.lua b/windmill/init.lua
new file mode 100644
index 0000000..440712f
--- /dev/null
+++ b/windmill/init.lua
@@ -0,0 +1,125 @@
+
+
+windmill = {}
+
+windmill.register_windmill = function( nodename, descr, animation_png, animation_png_reverse, scale, inventory_image, animation_speed, craft_material, sel_radius )
+
+ minetest.register_node( nodename, {
+ description = descr.." (clockwise)",
+ drawtype = "signlike",
+ visual_scale = scale,
+ tiles = {
+ {name=animation_png, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=animation_speed}},
+ },
+ inventory_image = inventory_image.."^[transformFX",
+ wield_image = inventory_image.."^[transformFX",
+ wield_scale = {x=1, y=1, z=1},
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ light_source = 1, -- reflecting a bit of light might be expected
+ selection_box = {
+ type = "wallmounted",
+ wall_side = {-0.4, -sel_radius, -sel_radius, -0.2, sel_radius, sel_radius},
+ },
+ groups = {choppy=2,dig_immediate=3,attached_node=1},
+ legacy_wallmounted = true,
+
+ })
+
+
+ -- this one rotates in the opposite direction than the first one
+ minetest.register_node( nodename.."_reverse", {
+ description = descr.." (counter-clockwise)",
+ drawtype = "signlike",
+ visual_scale = scale,
+ tiles = {
+ {name=animation_png_reverse, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=animation_speed}},
+ },
+ inventory_image = inventory_image,
+ wield_image = inventory_image,
+ wield_scale = {x=1, y=1, z=1},
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ light_source = 1, -- reflecting a bit of light might be expected
+ selection_box = {
+ type = "wallmounted",
+ wall_side = {-0.4, -sel_radius, -sel_radius, -0.2, sel_radius, sel_radius},
+ },
+ groups = {choppy=2,dig_immediate=3,attached_node=1},
+ legacy_wallmounted = true,
+
+ })
+
+ minetest.register_craft({
+ output = nodename.."_reverse",
+ recipe = {{ nodename }},
+ })
+
+ minetest.register_craft({
+ output = nodename,
+ recipe = {{ nodename.."_reverse" }},
+ })
+
+ minetest.register_craft({
+ output = nodename,
+ recipe = {
+ { craft_material, "", craft_material },
+ { "", "default:stick", "", },
+ { craft_material, "", craft_material },
+ }
+})
+end
+
+
+windmill.register_windmill( "windmill:windmill", "Windmill rotors",
+ "windmill.png", "windmill_reverse.png",
+ 6.0, "windmill_4blade_inv.png", 1.0, "default:steel_ingot", 2.9 );
+
+windmill.register_windmill( "windmill:windmill_modern", "Windmill turbine",
+ "windmill_3blade_cw.png", "windmill_3blade_ccw.png",
+ 6.0, "windmill_3blade_inv.png", 1.0, "homedecor:plastic_sheeting", 2.9 );
+
+windmill.register_windmill( "windmill:windmill_sails", "Windmill sails",
+ "windmill_wooden_cw_with_sails.png", "windmill_wooden_ccw_with_sails.png",
+ 6.0, "windmill_wooden_inv.png", 1.0, "wool:white", 3 );
+
+windmill.register_windmill( "windmill:windmill_idle", "Windmill idle",
+ "windmill_wooden_cw.png", "windmill_wooden_ccw.png",
+ 6.0, "windmill_wooden_no_sails_inv.png", 2.0, "default:wood", 3 );
+
+-- this one is smaller than the other ones
+windmill.register_windmill( "windmill:windmill_farm", "Windmill found on farms",
+ "windmill_farm_cw.png", "windmill_farm_ccw.png",
+ 3.0, "windmill_farm_inv.png", 0.5, "default:stick", 1.5 );
+
+minetest.register_node("windmill:axis", {
+ description = "Axis for mounting windmills",
+ drawtype = "nodebox",
+ tiles = {"default_wood.png"},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ groups = {choppy=2,dig_immediate=3},
+ node_box = {
+ type = "fixed",
+ fixed = {{-0.25, -0.5, -0.25, 0.25, 0.4, 0.25},
+ {-0.1,-0.1,-0.5,0.1,0.1,0.5}},
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {{-0.25, -0.5, -0.25, 0.25, 0.4, 0.25},
+ {-0.1,-0.1,-0.5,0.1,0.1,0.5}},
+ },
+})
+
+
+minetest.register_craft({
+ output = "windmill:axis",
+ recipe = {
+ {"default:steel_ingot", "default:stick", "default:steel_ingot" },
+ }
+})
diff --git a/windmill/textures/windmill.png b/windmill/textures/windmill.png
new file mode 100644
index 0000000..bb02be1
--- /dev/null
+++ b/windmill/textures/windmill.png
Binary files differ
diff --git a/windmill/textures/windmill_3blade_ccw.png b/windmill/textures/windmill_3blade_ccw.png
new file mode 100644
index 0000000..887a366
--- /dev/null
+++ b/windmill/textures/windmill_3blade_ccw.png
Binary files differ
diff --git a/windmill/textures/windmill_3blade_cw.png b/windmill/textures/windmill_3blade_cw.png
new file mode 100644
index 0000000..1048b54
--- /dev/null
+++ b/windmill/textures/windmill_3blade_cw.png
Binary files differ
diff --git a/windmill/textures/windmill_3blade_inv.png b/windmill/textures/windmill_3blade_inv.png
new file mode 100644
index 0000000..222af7f
--- /dev/null
+++ b/windmill/textures/windmill_3blade_inv.png
Binary files differ
diff --git a/windmill/textures/windmill_4blade_inv.png b/windmill/textures/windmill_4blade_inv.png
new file mode 100644
index 0000000..d233076
--- /dev/null
+++ b/windmill/textures/windmill_4blade_inv.png
Binary files differ
diff --git a/windmill/textures/windmill_farm_ccw.png b/windmill/textures/windmill_farm_ccw.png
new file mode 100644
index 0000000..304bf0f
--- /dev/null
+++ b/windmill/textures/windmill_farm_ccw.png
Binary files differ
diff --git a/windmill/textures/windmill_farm_cw.png b/windmill/textures/windmill_farm_cw.png
new file mode 100644
index 0000000..b0463cd
--- /dev/null
+++ b/windmill/textures/windmill_farm_cw.png
Binary files differ
diff --git a/windmill/textures/windmill_farm_inv.png b/windmill/textures/windmill_farm_inv.png
new file mode 100644
index 0000000..8984728
--- /dev/null
+++ b/windmill/textures/windmill_farm_inv.png
Binary files differ
diff --git a/windmill/textures/windmill_inv.png b/windmill/textures/windmill_inv.png
new file mode 100644
index 0000000..a8e7a91
--- /dev/null
+++ b/windmill/textures/windmill_inv.png
Binary files differ
diff --git a/windmill/textures/windmill_reverse.png b/windmill/textures/windmill_reverse.png
new file mode 100644
index 0000000..4c6dd04
--- /dev/null
+++ b/windmill/textures/windmill_reverse.png
Binary files differ
diff --git a/windmill/textures/windmill_wooden_ccw.png b/windmill/textures/windmill_wooden_ccw.png
new file mode 100644
index 0000000..8d711c1
--- /dev/null
+++ b/windmill/textures/windmill_wooden_ccw.png
Binary files differ
diff --git a/windmill/textures/windmill_wooden_ccw_with_sails.png b/windmill/textures/windmill_wooden_ccw_with_sails.png
new file mode 100644
index 0000000..f45c531
--- /dev/null
+++ b/windmill/textures/windmill_wooden_ccw_with_sails.png
Binary files differ
diff --git a/windmill/textures/windmill_wooden_cw.png b/windmill/textures/windmill_wooden_cw.png
new file mode 100644
index 0000000..25a381a
--- /dev/null
+++ b/windmill/textures/windmill_wooden_cw.png
Binary files differ
diff --git a/windmill/textures/windmill_wooden_cw_with_sails.png b/windmill/textures/windmill_wooden_cw_with_sails.png
new file mode 100644
index 0000000..0ef36d2
--- /dev/null
+++ b/windmill/textures/windmill_wooden_cw_with_sails.png
Binary files differ
diff --git a/windmill/textures/windmill_wooden_inv.png b/windmill/textures/windmill_wooden_inv.png
new file mode 100644
index 0000000..419136c
--- /dev/null
+++ b/windmill/textures/windmill_wooden_inv.png
Binary files differ
diff --git a/windmill/textures/windmill_wooden_no_sails_inv.png b/windmill/textures/windmill_wooden_no_sails_inv.png
new file mode 100644
index 0000000..68fbe1a
--- /dev/null
+++ b/windmill/textures/windmill_wooden_no_sails_inv.png
Binary files differ
diff --git a/windmill_large/README.md b/windmill_large/README.md
new file mode 100644
index 0000000..db19b62
--- /dev/null
+++ b/windmill_large/README.md
@@ -0,0 +1,8 @@
+These windmills are a lot larger than the ones in the normal windmill mod.
+
+The disadvantage is that they require larger textures as well - so please do
+not use this on servers! Connection time would be too high.
+
+The textures where done by VanessaE.
+
+Depends on my windmills mod.
diff --git a/windmill_large/depends.txt b/windmill_large/depends.txt
new file mode 100644
index 0000000..c316015
--- /dev/null
+++ b/windmill_large/depends.txt
@@ -0,0 +1 @@
+windmill
diff --git a/windmill_large/init.lua b/windmill_large/init.lua
new file mode 100644
index 0000000..35e4090
--- /dev/null
+++ b/windmill_large/init.lua
@@ -0,0 +1,29 @@
+
+-- Autor: Sokomine
+-- Textures: VanessaE
+-- Version: 2.0
+-- LIscence: GPLv3
+-- Changelog:
+-- 17.12.13 * added the 3- and 4-blade-versions
+
+-- two very large windmills
+windmill.register_windmill( "windmill_large:large_windmill_sails", "Windmill sails (large)",
+ "windmill_wooden_cw_with_sails_304px.png", "windmill_wooden_ccw_with_sails_304px.png",
+ 20.0, "windmill_wooden_inv.png", 1.0, "windmill:windmill_sails", 3 );
+
+windmill.register_windmill( "windmill_large:large_windmill_idle", "Windmill idle (large)",
+ "windmill_wooden_cw_304px.png", "windmill_wooden_ccw_304px.png",
+ 20.0, "windmill_wooden_no_sails_inv.png", 2.0, "windmill:windmill_idle", 3 );
+
+
+
+windmill.register_windmill( "windmill_large:large_windmill", "Windmill rotors (large)",
+ "windmill_4blade_304_cw.png", "windmill_4blade_304_cw.png",
+ 20.0, "windmill_4blade_inv.png", 2.0, "windmill:windmill", 3 );
+
+windmill.register_windmill( "windmill_large:large_windmill_modern", "Windmill turbine (large)",
+ "windmill_3blade_304_cw.png", "windmill_3blade_304_cw.png",
+ 20.0, "windmill_3blade_inv.png", 2.0, "windmill:windmill_modern", 3 );
+
+
+
diff --git a/windmill_large/textures/windmill_3blade_304_ccw.png b/windmill_large/textures/windmill_3blade_304_ccw.png
new file mode 100644
index 0000000..447b38c
--- /dev/null
+++ b/windmill_large/textures/windmill_3blade_304_ccw.png
Binary files differ
diff --git a/windmill_large/textures/windmill_3blade_304_cw.png b/windmill_large/textures/windmill_3blade_304_cw.png
new file mode 100644
index 0000000..64904f9
--- /dev/null
+++ b/windmill_large/textures/windmill_3blade_304_cw.png
Binary files differ
diff --git a/windmill_large/textures/windmill_4blade_304_ccw.png b/windmill_large/textures/windmill_4blade_304_ccw.png
new file mode 100644
index 0000000..735c53f
--- /dev/null
+++ b/windmill_large/textures/windmill_4blade_304_ccw.png
Binary files differ
diff --git a/windmill_large/textures/windmill_4blade_304_cw.png b/windmill_large/textures/windmill_4blade_304_cw.png
new file mode 100644
index 0000000..3a807da
--- /dev/null
+++ b/windmill_large/textures/windmill_4blade_304_cw.png
Binary files differ
diff --git a/windmill_large/textures/windmill_wooden_ccw_304px.png b/windmill_large/textures/windmill_wooden_ccw_304px.png
new file mode 100644
index 0000000..6e93743
--- /dev/null
+++ b/windmill_large/textures/windmill_wooden_ccw_304px.png
Binary files differ
diff --git a/windmill_large/textures/windmill_wooden_ccw_with_sails_304px.png b/windmill_large/textures/windmill_wooden_ccw_with_sails_304px.png
new file mode 100644
index 0000000..ac96fbf
--- /dev/null
+++ b/windmill_large/textures/windmill_wooden_ccw_with_sails_304px.png
Binary files differ
diff --git a/windmill_large/textures/windmill_wooden_cw_304px.png b/windmill_large/textures/windmill_wooden_cw_304px.png
new file mode 100644
index 0000000..5de75c4
--- /dev/null
+++ b/windmill_large/textures/windmill_wooden_cw_304px.png
Binary files differ
diff --git a/windmill_large/textures/windmill_wooden_cw_with_sails_304px.png b/windmill_large/textures/windmill_wooden_cw_with_sails_304px.png
new file mode 100644
index 0000000..d01c4d3
--- /dev/null
+++ b/windmill_large/textures/windmill_wooden_cw_with_sails_304px.png
Binary files differ
diff --git a/worldedit/ChatCommands.md b/worldedit/ChatCommands.md
new file mode 100644
index 0000000..d3ed7db
--- /dev/null
+++ b/worldedit/ChatCommands.md
@@ -0,0 +1,382 @@
+Chat Commands
+-------------
+For more information, see the [README](README.md).
+
+Many commands also have shorter names that can be typed faster. For example, if we wanted to use `//move ? 5`, we could instead type `//m ? 5`. All shortened names are listed below:
+
+| Short Name | Original Name |
+|:-----------|:-------------------|
+| `//i` | `//inspect` |
+| `//rst` | `//reset` |
+| `//mk` | `//mark` |
+| `//umk` | `//unmark` |
+| `//1` | `//pos1` |
+| `//2` | `//pos2` |
+| `//fp` | `//fixedpos` |
+| `//v` | `//volume` |
+| `//s` | `//set` |
+| `//r` | `//replace` |
+| `//ri` | `//replaceinverse` |
+| `//hspr` | `//hollowsphere` |
+| `//spr` | `//sphere` |
+| `//hdo` | `//hollowdome` |
+| `//do` | `//dome` |
+| `//hcyl` | `//hollowcylinder` |
+
+### `//about`
+
+Get information about the mod.
+
+ //about
+
+### `//inspect on/off/1/0/true/false/yes/no/enable/disable/<blank>`
+
+Enable or disable node inspection.
+
+ //inspect on
+ //inspect off
+ //inspect 1
+ //inspect 0
+ //inspect true
+ //inspect false
+ //inspect yes
+ //inspect no
+ //inspect enable
+ //inspect disable
+ //inspect
+
+### `//reset`
+
+Reset the region so that it is empty.
+
+ //reset
+
+### `//mark`
+
+Show markers at the region positions.
+
+ //mark
+
+### `//unmark`
+
+Hide markers if currently shown.
+
+ //unmark
+
+### `//pos1`
+
+Set WorldEdit region position 1 to the player's location.
+
+ //pos1
+
+### `//pos2`
+
+Set WorldEdit region position 2 to the player's location.
+
+ //pos2
+
+### `//p set/set1/set2/get`
+
+Set WorldEdit region, WorldEdit position 1, or WorldEdit position 2 by punching nodes, or display the current WorldEdit region.
+
+ //p set
+ //p set1
+ //p set2
+ //p get
+
+### `//fixedpos set1 x y z`
+
+Set a WorldEdit region position to the position at (`<x>`, `<y>`, `<z>`).
+
+ //fixedpos set1 0 0 0
+ //fixedpos set1 -30 5 28
+ //fixedpos set2 1004 -200 432
+
+### `//volume`
+
+Display the volume of the current WorldEdit region.
+
+ //volume
+
+### `//deleteblocks`
+
+Delete the MapBlocks (16x16x16 units) that contain the selected region. This means that mapgen will be invoked for that area. As only whole MapBlocks get removed, the deleted area is usually larger than the selected one. Also, mapgen can trigger mechanisms like mud reflow or cavegen, which affects nodes (up to 112 nodes away) outside the MapBlock, so dont use this near buildings. Note that active entities are not part of a MapBlock and do not get deleted.
+
+ //deleteblocks
+
+### `//set <node>`
+
+Set the current WorldEdit region to `<node>`.
+
+ //set air
+ //set cactus
+ //set Blue Lightstone
+ //set dirt with grass
+
+### `//mix <node1> ...`
+
+Fill the current WorldEdit region with a random mix of `<node1>`, `...`.
+
+ //mix air
+ //mix cactus stone glass sandstone
+ //mix Bronze
+ //mix default:cobble air
+
+### `//replace <search node> <replace node>`
+
+Replace all instances of `<search node>` with `<replace node>` in the current WorldEdit region.
+
+ //replace Cobblestone air
+ //replace lightstone_blue glass
+ //replace dirt Bronze Block
+ //replace mesecons:wire_00000000_off flowers:flower_tulip
+
+### `//replaceinverse <search node> <replace node>`
+
+Replace all nodes other than `<search node>` with `<replace node>` in the current WorldEdit region.
+
+ //replaceinverse Cobblestone air
+ //replaceinverse flowers:flower_waterlily glass
+ //replaceinverse dirt Bronze Block
+ //replaceinverse mesecons:wire_00000000_off flowers:flower_tulip
+
+### `//hollowsphere <radius> <node>`
+
+Add hollow sphere centered at WorldEdit position 1 with radius `<radius>`, composed of `<node>`.
+
+ //hollowsphere 5 Diamond Block
+ //hollowsphere 12 glass
+ //hollowsphere 17 mesecons:wire_00000000_off
+
+### `//sphere <radius> <node>`
+
+Add sphere centered at WorldEdit position 1 with radius `<radius>`, composed of `<node>`.
+
+ //sphere 5 Diamond Block
+ //sphere 12 glass
+ //sphere 17 mesecons:wire_00000000_off
+
+### `//hollowdome <radius> <node>`
+
+Add hollow dome centered at WorldEdit position 1 with radius `<radius>`, composed of `<node>`.
+
+ //hollowdome 5 Diamond Block
+ //hollowdome -12 glass
+ //hollowdome 17 mesecons:wire_00000000_off
+
+### `//dome <radius> <node>`
+
+Add dome centered at WorldEdit position 1 with radius `<radius>`, composed of `<node>`.
+
+ //dome 5 Diamond Block
+ //dome -12 glass
+ //dome 17 mesecons:wire_00000000_off
+
+### `//hollowcylinder x/y/z/? <length> <radius> <node>`
+
+Add hollow cylinder at WorldEdit position 1 along the x/y/z/? axis with length `<length>` and radius `<radius>`, composed of `<node>`.
+
+ //hollowcylinder x +5 8 Bronze Block
+ //hollowcylinder y 28 10 glass
+ //hollowcylinder z -12 3 mesecons:wire_00000000_off
+ //hollowcylinder ? 2 4 default:stone
+
+### `//cylinder x/y/z/? <length> <radius> <node>`
+
+Add cylinder at WorldEdit position 1 along the x/y/z/? axis with length `<length>` and radius `<radius>`, composed of `<node>`.
+
+ //cylinder x +5 8 Bronze Block
+ //cylinder y 28 10 glass
+ //cylinder z -12 3 mesecons:wire_00000000_off
+ //cylinder ? 2 4 default:stone
+
+### `//pyramid x/y/z? <height> <node>`
+
+Add pyramid centered at WorldEdit position 1 along the x/y/z/? axis with height `<height>`, composed of `<node>`.
+
+ //pyramid x 8 Diamond Block
+ //pyramid y -5 glass
+ //pyramid z 2 mesecons:wire_00000000_off
+ //pyramid ? 12 mesecons:wire_00000000_off
+
+### `//spiral <length> <height> <spacer> <node>`
+
+Add spiral centered at WorldEdit position 1 with side length `<length>`, height `<height>`, space between walls `<spacer>`, composed of `<node>`.
+
+ //spiral 20 5 3 Diamond Block
+ //spiral 5 2 1 glass
+ //spiral 7 1 5 mesecons:wire_00000000_off
+
+### `//copy x/y/z/? <amount>`
+
+Copy the current WorldEdit region along the x/y/z/? axis by `<amount>` nodes.
+
+ //copy x 15
+ //copy y -7
+ //copy z +4
+ //copy ? 8
+
+### `//move x/y/z/? <amount>`
+
+Move the current WorldEdit positions and region along the x/y/z/? axis by `<amount>` nodes.
+
+ //move x 15
+ //move y -7
+ //move z +4
+ //move ? -1
+
+### `//stack x/y/z/? <count>`
+
+Stack the current WorldEdit region along the x/y/z/? axis `<count>` times.
+
+ //stack x 3
+ //stack y -1
+ //stack z +5
+ //stack ? 12
+
+### `//stack2 <count> <x> <y> <z>`
+
+Stack the current WorldEdit region `<count>` times by offset `<x>`, `<y>`, `<z>`.
+
+ //stack2 5 3 8 2
+ //stack2 1 -1 -1 -1
+
+### `//scale <factor>`
+
+Scale the current WorldEdit positions and region by a factor of positive integer `<factor>` with position 1 as the origin.
+
+ //scale 2
+ //scale 1
+ //scale 10
+
+### `//transpose x/y/z/? x/y/z/?`
+
+Transpose the current WorldEdit positions and region along the x/y/z/? and x/y/z/? axes.
+
+ //transpose x y
+ //transpose x z
+ //transpose y z
+ //transpose ? y
+
+### `//flip x/y/z/?`
+
+Flip the current WorldEdit region along the x/y/z/? axis.
+
+ //flip x
+ //flip y
+ //flip z
+ //flip ?
+
+### `//rotate x/y/z/? <angle>`
+
+Rotate the current WorldEdit positions and region along the x/y/z/? axis by angle `<angle>` (90 degree increment).
+
+ //rotate x 90
+ //rotate y 180
+ //rotate z 270
+ //rotate ? -90
+
+### `//orient <angle>`
+
+Rotate oriented nodes in the current WorldEdit region around the Y axis by angle `<angle>` (90 degree increment)
+
+ //orient 90
+ //orient 180
+ //orient 270
+ //orient -90
+
+### `//fixlight`
+
+Fixes the lighting in the current WorldEdit region.
+
+ //fixlight
+
+### `//hide`
+
+Hide all nodes in the current WorldEdit region non-destructively.
+
+ //hide
+
+### `//suppress <node>`
+
+Suppress all <node> in the current WorldEdit region non-destructively.
+
+ //suppress Diamond Block
+ //suppress glass
+ //suppress mesecons:wire_00000000_off
+
+### `//highlight <node>`
+
+Highlight <node> in the current WorldEdit region by hiding everything else non-destructively.
+
+ //highlight Diamond Block
+ //highlight glass
+ //highlight mesecons:wire_00000000_off
+
+### `//restore`
+
+Restores nodes hidden with WorldEdit in the current WorldEdit region.
+
+ //restore
+
+### `//save <file>`
+
+Save the current WorldEdit region to "(world folder)/schems/`<file>`.we".
+
+ //save some random filename
+ //save huge_base
+
+### `//allocate <file>`
+
+Set the region defined by nodes from "(world folder)/schems/`<file>`.we" as the current WorldEdit region.
+
+ //allocate some random filename
+ //allocate huge_base
+
+### `//load <file>`
+
+Load nodes from "(world folder)/schems/`<file>`.we" with position 1 of the current WorldEdit region as the origin.
+
+ //load some random filename
+ //load huge_base
+
+### `//lua <code>`
+
+Executes `<code>` as a Lua chunk in the global namespace.
+
+ //lua worldedit.pos1["singleplayer"] = {x=0, y=0, z=0}
+ //lua worldedit.rotate(worldedit.pos1["singleplayer"], worldedit.pos2["singleplayer"], "y", 90)
+
+### `//luatransform <code>`
+
+Executes `<code>` as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region.
+
+ //luatransform minetest.add_node(pos, {name="default:stone"})
+ //luatransform if minetest.get_node(pos).name == "air" then minetest.add_node(pos, {name="default:water_source"})
+
+### `//mtschemcreate <file>`
+
+Save the current WorldEdit region using the Minetest Schematic format to "(world folder)/schems/`<file>`.mts".
+
+ //mtschemcreate some random filename
+ //mtschemcreate huge_base
+
+### `//mtschemplace <file>`
+
+Load nodes from "(world folder)/schems/`<file>`.mts" with position 1 of the current WorldEdit region as the origin.
+
+ //mtschemplace some random filename
+ //mtschemplace huge_base
+
+### `//mtschemprob start/finish/get`
+
+After using `//mtschemprob start` all nodes punched will bring up a text field where a probablity can be entered.
+This mode can be left with `//mtschemprob finish`. `//mtschemprob get` will display the probabilities saved for the nodes.
+
+ //mtschemprob get
+
+### `//clearobjects`
+
+Clears all objects within the WorldEdit region.
+
+ //clearobjects
diff --git a/worldedit/LICENSE.txt b/worldedit/LICENSE.txt
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/worldedit/LICENSE.txt
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/worldedit/README.md b/worldedit/README.md
new file mode 100644
index 0000000..22dd7c7
--- /dev/null
+++ b/worldedit/README.md
@@ -0,0 +1,160 @@
+WorldEdit v1.1 for Minetest 0.4.8+
+==================================
+The ultimate in-game world editing tool for [Minetest](http://minetest.net/)! Tons of functionality to help with building, fixing, and more.
+
+For more information, see the [forum topic](https://forum.minetest.net/viewtopic.php?id=572) at the Minetest forums.
+
+# New users should see the [tutorial](Tutorial.md).
+
+![Screenshot](http://i.imgur.com/lwhodrv.png)
+
+Installing
+----------
+
+If you are using Windows, consider installing this mod using [MODSTER](https://forum.minetest.net/viewtopic.php?id=6497), a super simple mod installer that will take care of everything for you. If you are using MODSTER, skip directly to step 6 in the instructions below.
+
+There is a nice installation guide over at the [Minetest Wiki](http://wiki.minetest.com/wiki/Installing_mods). Here is a short summary:
+
+1. Download the mod from the [official releases page](https://github.com/Uberi/Minetest-WorldEdit/releases). The download links are labelled "Source Code". If you are using Windows, you will probably want to download the ZIP version.
+2. You should have a file named `SOMETHING.zip` or `SOMETHING.tar.gz`.
+3. Extract this file using your archiver of choice. If you are using Windows, open the ZIP file and move the folder inside to a safe place outside of the ZIP file.
+4. Make sure that you now have a folder with a file named README.md inside it. If you just have another folder inside this folder, use this nested folder instead.
+5. Move this folder into the `MINETEST_FOLDER/mods` folder, where `MINETEST_FOLDER` is the folder Minetest is located in.
+6. Open Minetest to a world selection screen.
+7. Select a world you want to use WorldEdit in by left clicking on it once, and press the **Configure** button.
+8. You should have a mod selection screen. Select the one named something like `Minetest-WorldEdit` by left clicking once and press the **Enable MP** button.
+9. Press the **Save** button. You can now use WorldEdit in that world. Repeat steps 7 to 9 to enable WorldEdit for other worlds too.
+
+If you are having trouble, try asking for help in the [IRC channel](http://webchat.freenode.net/?channels=#minetest) (faster but may not always have helpers online) or ask on the [forum topic](https://forum.minetest.net/viewtopic.php?id=572) (slower but more likely to get help).
+
+Usage
+-----
+WorldEdit works primarily through the WorldEdit GUI and chat commands. Depending on your key bindings, you can invoke chat entry with the "t" key, and open the chat console with the "F10" key.
+
+WorldEdit has a huge potential for abuse by untrusted players. Therefore, users will not be able to use WorldEdit unless they have the `worldedit` privelege. This is available by default in single player, but in multiplayer the permission must be explicitly given by someone with the right credentials, using the follwoing chat command: `/grant <player name> worldedit`. This privelege can later be removed using the following chat command: `/revoke <player name> worldedit`.
+
+Certain functions/commands such as WorldEdit GUI's "Run Lua" function (equivalent to the `//lua` and `//luatransform` chat command) additionally require the `server` privilege. This is because it is extremely dangerous to give access to these commands to untrusted players, since they essentially are able to control the computer the server is running on. Give this privilege only to people you trust with your computer.
+
+For in-game information about these commands, type `/help <command name>` in the chat. For example, to learn more about the `//copy` command, simply type `/help /copy` to display information relevant to copying a region.
+
+Interface
+---------
+WorldEdit is accessed in-game in two main ways.
+
+The GUI adds a screen to each player's inventory that gives access to various WorldEdit functions. The [tutorial](Tutorial.md) and the [Chat Commands Reference](ChatCommands.md) may be helpful in learning to use it.
+
+The chat interface adds many chat commands that perform various WorldEdit powered tasks. It is documented in the [Chat Commands Reference](ChatCommands.md).
+
+Compatibility
+-------------
+This mod supports Minetest versions 0.4.8 and newer. Older versions of WorldEdit may work with older versions of Minetest, but are not recommended or supported.
+
+WorldEdit works quite well with other mods, and does not have any known mod conflicts.
+
+WorldEdit GUI works with [Unified Inventory](https://forum.minetest.net/viewtopic.php?id=3933) and [Inventory++](https://forum.minetest.net/viewtopic.php?id=6204), but these are not required to use the mod.
+
+If you use any other inventory manager mods, note that they may conflict with the WorldEdit GUI. If this is the case, it may be necessary to disable them.
+
+WorldEdit API
+-------------
+WorldEdit exposes all significant functionality in a simple Lua interface. Adding WorldEdit to the file "depends.txt" in your mod gives you access to all of the `worldedit` functions. The API is useful for tasks such as high-performance node manipulation, alternative interfaces, and map creation.
+
+If you don't add WorldEdit to your "depends.txt" file, each file in the WorldEdit mod is also independent. For example, one may import the WorldEdit primitives API using the following code:
+
+ dofile(minetest.get_modpath("worldedit").."/primitives.lua")
+
+AGPLv3 compatible mods may further include WorldEdit files in their own mods. This may be useful if a modder wishes to completely avoid any dependencies on WorldEdit. Note that it is required to give credit to the authors.
+
+This API is documented in the [WorldEdit API Reference](WorldEdit API.md).
+
+Axes
+----
+The coordinate system is the same as that used by Minetest; positive Y is upwards, positive X is rightwards, and positive Z is forwards, if a player is facing North (positive Z axis).
+
+When an axis is specified in a WorldEdit chat command, it is specified as one of the following values: `x`, `y`, `z`, or `?`.
+
+In the GUI, there is a dropdown menu for this purpose. The "Look direction" option has the same effect as `?` does in chat commands.
+
+The value `?` represents the axis the player is currently facing. If the player is facing more than one axis, the axis the player face direction is closest to will be used.
+
+Nodes
+-----
+Node names are required for many types of commands that identify or modify specific types of nodes. They can be specified in a number of ways.
+
+First, by description - the tooltip that appears when hovering over the item in an inventory. This is case insensitive and includes values such as "Cobblestone" and "bronze block". Note that certain commands (namely, `//replace` and `//replaceinverse`) do not support descriptions that contain spaces in the `<searchnode>` field.
+
+Second, by name - the node name that is defined by code, but without the mod name prefix. This is case sensitive and includes values such as "piston_normal_off" and "cactus". Nodes defined in the `default` mod always take precedence over other nodes when searching for the correct one, and if there are multiple possible nodes (such as "a:celery" and "b:celery"), one is chosen in no particular order.
+
+Finally, by full name - the unambiguous identifier of the node, prefixes and all. This is case sensitive and includes values such as "default:stone" and "mesecons:wire_00000000_off".
+
+The node name "air" can be used anywhere a normal node name can, and acts as a blank node. This is useful for clearing or removing nodes. For example, `//set air` would remove all the nodes in the current WorldEdit region. Similarly, `//sphere 10 air`, when WorldEdit position 1 underground, would dig a large sphere out of the ground.
+
+Regions
+-------
+Most WorldEdit commands operate on regions. Regions are a set of two positions that define a 3D cuboid. They are local to each player and chat commands affect only the region for the player giving the commands.
+
+Each positions together define two opposing corners of the cube. With two opposing corners it is possible to determine both the location and dimensions of the region.
+
+Regions are not saved between server restarts. They start off as empty regions, and cannot be used with most WorldEdit commands until they are set to valid values.
+
+Markers
+-------
+Entities are used to mark the location of the WorldEdit regions. They appear as boxes containing the number 1 or 2, and represent position 1 and 2 of the WorldEdit region, respectively.
+
+To remove the entities, simply punch them. This does not reset the positions themselves.
+
+Schematics
+----------
+WorldEdit supports two different types of schematics.
+
+The first is the WorldEdit Schematic format, with the file extension ".we", and in some older versions, ".wem". There have been several previous versions of the WorldEdit Schematic format, but WorldEdit is capable of loading any past versions, and will always support them - there is no need to worry about schematics becoming obselete.
+
+As of version 5, WorldEdit schematics include a header. The header is seperated from the content by a colon (`:`). It contains fields seperated by commas (`,`). Currently only one field is used, which contains the version in ASCII decimal.
+
+The current version of the WorldEdit Schematic format is essentially an array of node data tables in Lua 5.1 table syntax preceded by a header.
+Specifically it looks like this:
+
+ 5:return {
+ {
+ y = <y-axis coordinate>,
+ x = <x-axis coordinate>,
+ z = <z-axis coordinate>,
+ name = <node name>,
+ param1 = <param1 value>,
+ param2 = <param2 value>,
+ meta = <metadata table>,
+ },
+ <...>
+ }
+
+
+The ordering of the values and minor aspects of the syntax, such as trailing commas or newlines, are not guaranteed to stay the same in future versions.
+
+The WorldEdit Schematic format is accessed via the WorldEdit API, or WorldEdit serialization chat commands such as `//serialize` and `//deserialize`.
+
+The second is the Minetest Schematic format (MTS). The details of this format may be found in the Minetest documentation and are out of the scope of this document. Access to this format is done via specialized MTS commands such as `//mtschemcreate` and `//mtschemplace`.
+
+Authors
+-------
+WorldEdit would not be possible without the contributions of many developers and designers. Below, they are listed alphabetically:
+
+ cheapie
+ cornernote
+ cyisfor
+ electricface
+ kaeza
+ khonkhortisan
+ sfan5
+ ShadowNinja
+ spillz
+ Uberi/Temperest
+
+License
+-------
+Copyright 2013 sfan5, Anthony Zhang (Uberi/Temperest), and Brett O'Donnell (cornernote).
+
+This mod is licensed under the [GNU Affero General Public License](http://www.gnu.org/licenses/agpl-3.0.html).
+
+Basically, this means everyone is free to use, modify, and distribute the files, as long as these modifications are also licensed the same way.
+
+Most importantly, the Affero variant of the GPL requires you to publish your modifications in source form, even if the mod is run only on the server, and not distributed.
diff --git a/worldedit/Tutorial.md b/worldedit/Tutorial.md
new file mode 100644
index 0000000..1ed3998
--- /dev/null
+++ b/worldedit/Tutorial.md
@@ -0,0 +1,120 @@
+WorldEdit Tutorial
+==================
+This is a step-by-step tutorial outlining the basic usage of WorldEdit. For more information, see the [README](README.md).
+
+Let's start with a few assumptions:
+
+* You have a compatible version of Minetest working.
+ * See the [README](README.md) for compatibility information.
+* You have WorldEdit installed as a mod.
+ * If using Windows, [MODSTER](https://forum.minetest.net/viewtopic.php?pid=101463) makes installing mods totally painless.
+ * Simply download the file, extract the archive, and move it to the correct mod folder for Minetest.
+ * See the installation instructions in [README](README.md) if you need more details.
+* You are familiar with the basics of the game.
+ * How to walk, jump, and climb.
+ * How to dig, place, and punch blocks.
+ * One of the following:
+ * How to type into the chat and read text from it.
+ * How to open the inventory screen and press buttons on it.
+
+Overview
+--------
+WorldEdit has a "region", which is simply a cuboid area defined by two markers, both of which the player can move around. Every player can have their own region with their own two markers.
+
+WorldEdit GUI buttons and chat commands generally work inside the region selected, or around the first marker.
+
+If you are using the chat commands, follow the steps under **Chat Commands**. If you are using the WorldEdit GUI, follow the steps under **WorldEdit GUI**.
+
+Step 1: Selecting a region
+--------------------------
+### Chat Commands
+
+In the chat prompt, enter `//p set`. In the chat, you are prompted to punch two nodes to set the positions of the two markers.
+
+Punch a nearby node. Be careful of breakable ones such as torches. A black cube reading "1" will appear around the node. This is the marker for WorldEdit position 1.
+
+Walk away from the node you just punched. Now, punch another node. A black cube reading "2" will appear around the node. This is the marker for WorldEdit position 2.
+
+### WorldEdit GUI
+
+Open the main WorldEdit GUI from your inventory screen. The icon looks like a globe with a red dot in the center.
+
+Press the "Get/Set Positions" button. On the new screen, press the "Set Position 1" button. The inventory screen should close.
+
+Punch a nearby node. Be careful of breakable ones such as torches. A black cube reading "1" will appear around the node. This is the marker for WorldEdit position 1.
+
+Walk away from the node you just punched. Open your inventory again. It should be on the same page as it was before.
+
+Press the "Set Position 2" button. The inventory screen should close.
+
+Now, punch another node. A black cube reading "2" will appear around the node. This is the marker for WorldEdit position 2.
+
+Step 2: Region commands
+-----------------------
+### Chat Commands
+
+In the chat prompt, enter `//set mese`. In the chat, you will see a message showing the number of nodes set after a small delay.
+
+Look at the place between the two markers: it is now filled with MESE blocks!
+
+The `//set <node>` command fills the region with whatever node you want. It is a region-oriented command, which means it works inside the WorldEdit region only.
+
+Now, try a few different variations, such as `//set torch`, `//set cobble`, and `//set water`.
+
+### WorldEdit GUI
+
+Open the main WorldEdit GUI from your inventory screen.
+
+Press the "Set Nodes" button. You should see a new screen with various options for setting nodes.
+
+Enter "mese" in the "Name" field. Press Search if you would like to see what the node you just entered looks like.
+
+Press the "Set Nodes" button on this screen. In the chat, you will see a message showing the number of nodes set after a small delay.
+
+Look at the place between the two markers: it is now filled with MESE blocks!
+
+The "Set Nodes" function fills the region with whatever node you want. It is a region-oriented command, which means it works inside the WorldEdit region only.
+
+Now, try a few different variations on the node name, such as "torch", "cobble", and "water".
+
+Step 3: Position commands
+-------------------------
+### Chat Commands
+
+In the chat prompt, enter `//hollowdome 30 glass`. In the chat, you will see a message showing the number of nodes set after a small delay.
+
+Look around marker 1: it is now surrounded by a hollow glass dome!
+
+The `//hollowdome <radius> <node>` command creates a hollow dome centered around marker 1, made of any node you want. It is a position-oriented command, which means it works around marker 1 and can go outside the WorldEdit region.
+
+### WorldEdit GUI
+
+Open the main WorldEdit GUI from your inventory screen.
+
+Press the "Sphere/Dome" button. You should see a new screen with various options for making spheres or domes.
+
+Enter "glass" in the "Name" field. Press Search if you would like to see what the node you just entered looks like.
+
+Enter "30" in the "Radius" field.
+
+Press the "Hollow Dome" button on this screen. In the chat, you will see a message showing the number of nodes added after a small delay.
+
+Look around marker 1: it is now surrounded by a hollow glass dome!
+
+The "Hollow Dome" function creates a hollow dome centered around marker 1, made of any node you want. It is a position-oriented command, which means it works around marker 1 and can go outside the WorldEdit region.
+
+Step 4: Other commands
+----------------------
+### Chat Commands
+
+There are many more commands than what is shown here. See the [Chat Commands Reference](ChatCommands.md) for a detailed list of them, along with descriptions and examples for every single one.
+
+If you're in-game and forgot how a command works, just use the `/help <command name>` command, without the first forward slash. For example, to see some information about the `//set <node>` command mentioned earlier, simply use `/help /set`.
+
+A very useful command to check out is the `//save <schematic>` command, which can save everything inside the WorldEdit region to a file, stored on the computer hosting the server (the player's computer, in single player mode). You can then later use `//load <schematic>` to load the data in a file into a world, even another world on another computer.
+
+### WorldEdit GUI
+
+This only scratches the surface of what WorldEdit is capable of. Most of the functions in the WorldEdit GUI correspond to chat commands, and so the [Chat Commands Reference](ChatCommands.md) may be useful if you get stuck.
+
+It is helpful to explore the various buttons in the interface and check out what they do. Learning the chat command interface is also useful if you use WorldEdit intensively - an experienced chat command user can usually work faster than an experienced WorldEdit GUI user. \ No newline at end of file
diff --git a/worldedit/WorldEdit API.md b/worldedit/WorldEdit API.md
new file mode 100644
index 0000000..7b99c8b
--- /dev/null
+++ b/worldedit/WorldEdit API.md
@@ -0,0 +1,225 @@
+WorldEdit API
+=============
+The WorldEdit API is composed of multiple modules, each of which is independent and can be used without the other. Each module is contained within a single file.
+
+If needed, individual modules such as visualization.lua can be removed without affecting the rest of the program. The only file that cannot be removed is init.lua, which is necessary for the mod to run.
+
+For more information, see the [README](README.md).
+
+General
+-------
+
+### value = worldedit.version
+
+Contains the current version of WorldEdit in a table of the form `{major=MAJOR_INTEGER, minor=MINOR_INTEGER}`, where `MAJOR_INTEGER` is the major version (the number before the period) as an integer, and `MINOR_INTEGER` is the minor version (the number after the period) as an integer. This is intended for version checking purposes.
+
+### value = worldedit.version_string
+
+Contains the current version of WorldEdit in the form of a string `"MAJOR_INTEGER.MINOR_INTEGER"`, where `MAJOR_INTEGER` is the major version (the number before the period) as an integer, and `MINOR_INTEGER` is the minor version (the number after the period) as an integer. This is intended for display purposes.
+
+Manipulations
+-------------
+Contained in manipulations.lua, this module allows several node operations to be applied over a region.
+
+### count = worldedit.set(pos1, pos2, node_name)
+
+Sets a region defined by positions `pos1` and `pos2` to `node_name`. To clear a region, use "air" as the value of `node_name`.
+
+Returns the number of nodes set.
+
+### count = worldedit.replace(pos1, pos2, searchnode, replacenode)
+
+Replaces all instances of `searchnode` with `replacenode` in a region defined by positions `pos1` and `pos2`.
+
+Returns the number of nodes replaced.
+
+### count = worldedit.replaceinverse(pos1, pos2, searchnode, replacenode)
+
+Replaces all nodes other than `searchnode` with `replacenode` in a region defined by positions `pos1` and `pos2`.
+
+Returns the number of nodes replaced.
+
+### count = worldedit.copy(pos1, pos2, axis, amount)
+
+Copies the region defined by positions `pos1` and `pos2` along the `axis` axis ("x" or "y" or "z") by `amount` nodes.
+
+Returns the number of nodes copied.
+
+### count = worldedit.copy2(pos1, pos2, off)
+
+Copies the region defined by positions `pos1` and `pos2` by the offset vector `off`.
+
+Returns the number of nodes copied.
+
+### count = worldedit.move(pos1, pos2, axis, amount)
+
+Moves the region defined by positions `pos1` and `pos2` along the `axis` axis ("x" or "y" or "z") by `amount` nodes.
+
+Returns the number of nodes moved.
+
+### count = worldedit.stack(pos1, pos2, axis, count)
+
+Duplicates the region defined by positions `pos1` and `pos2` along the `axis` axis ("x" or "y" or "z") `count` times.
+
+Returns the number of nodes stacked.
+
+### count = worldedit.stack2(pos1, pos2, direction, amount)
+
+Duplicates the region defined by positions `pos1` and `pos2` `amount` times with offset vector `direction`.
+
+Returns the number of nodes stacked.
+
+### count, newpos1, newpos2 = worldedit.stretch(pos1, pos2, stretchx, stretchy, stretchz)
+
+Stretches the region defined by positions `pos1` and `pos2` by an factor of positive integers `stretchx`, `stretchy`. and `stretchz` along the X, Y, and Z axes, respectively, with `pos1` as the origin.
+
+Returns the number of nodes stretched, the new scaled position 1, and the new scaled position 2.
+
+### count, newpos1, newpos2 = worldedit.transpose(pos1, pos2, axis1, axis2)
+
+Transposes a region defined by the positions `pos1` and `pos2` between the `axis1` and `axis2` axes ("x" or "y" or "z").
+
+Returns the number of nodes transposed, the new transposed position 1, and the new transposed position 2.
+
+### count = worldedit.flip(pos1, pos2, axis)
+
+Flips a region defined by the positions `pos1` and `pos2` along the `axis` axis ("x" or "y" or "z").
+
+Returns the number of nodes flipped.
+
+### count, newpos2, newpos2 = worldedit.rotate(pos1, pos2, angle)
+
+Rotates a region defined by the positions `pos1` and `pos2` by `angle` degrees clockwise around the y axis (supporting 90 degree increments only).
+
+Returns the number of nodes rotated, the new position 1, and the new position 2.
+
+### count = worldedit.orient(pos1, pos2, angle)
+
+Rotates all oriented nodes in a region defined by the positions `pos1` and `pos2` by `angle` degrees clockwise (90 degree increment) around the Y axis.
+
+Returns the number of nodes oriented.
+
+### count = worldedit.fixlight(pos1, pos2)
+
+Fixes the lighting in a region defined by positions `pos1` and `pos2`.
+
+Returns the number of nodes updated.
+
+### count = worldedit.clearobjects(pos1, pos2)
+
+Clears all objects in a region defined by the positions `pos1` and `pos2`.
+
+Returns the number of objects cleared.
+
+Primitives
+----------
+Contained in primitives.lua, this module allows the creation of several geometric primitives.
+
+### count = worldedit.sphere(pos, radius, node_name, hollow)
+
+Adds a sphere centered at `pos` with radius `radius`, composed of `node_name`.
+
+Returns the number of nodes added.
+
+### count = worldedit.dome(pos, radius, node_name, hollow)
+
+Adds a dome centered at `pos` with radius `radius`, composed of `node_name`.
+
+Returns the number of nodes added.
+
+### count = worldedit.cylinder(pos, axis, length, radius, node_name, hollow)
+
+Adds a cylinder at `pos` along the `axis` axis ("x" or "y" or "z") with length `length` and radius `radius`, composed of `node_name`.
+
+Returns the number of nodes added.
+
+### count = worldedit.pyramid(pos, axis, height, node_name)
+
+Adds a pyramid centered at `pos` along the `axis` axis ("x" or "y" or "z") with height `height`.
+
+Returns the number of nodes added.
+
+### count = worldedit.spiral(pos, length, height, spacer, node_name)
+
+Adds a spiral centered at `pos` with side length `length`, height `height`, space between walls `spacer`, composed of `node_name`.
+
+Returns the number of nodes added.
+
+Visualization
+-------------
+Contained in visualization.lua, this module allows nodes to be visualized in different ways.
+
+### volume = worldedit.volume(pos1, pos2)
+
+Determines the volume of the region defined by positions `pos1` and `pos2`.
+
+Returns the volume.
+
+### count = worldedit.hide(pos1, pos2)
+
+Hides all nodes in a region defined by positions `pos1` and `pos2` by non-destructively replacing them with invisible nodes.
+
+Returns the number of nodes hidden.
+
+### count = worldedit.suppress(pos1, pos2, node_name)
+
+Suppresses all instances of `node_name` in a region defined by positions `pos1` and `pos2` by non-destructively replacing them with invisible nodes.
+
+Returns the number of nodes suppressed.
+
+### count = worldedit.highlight(pos1, pos2, node_name)
+
+Highlights all instances of `node_name` in a region defined by positions `pos1` and `pos2` by non-destructively hiding all other nodes.
+
+Returns the number of nodes found.
+
+### count = worldedit.restore(pos1, pos2)
+
+Restores all nodes hidden with WorldEdit functions in a region defined by positions `pos1` and `pos2`.
+
+Returns the number of nodes restored.
+
+Serialization
+-------------
+Contained in serialization.lua, this module allows regions of nodes to be serialized and deserialized to formats suitable for use outside MineTest.
+
+### version, extra_fields, content = worldedit.read_header(value)
+
+Reads the header from serialized data `value`.
+
+Returns the version as a positive integer (nil for unknown versions),
+extra header fields (nil if not supported), and the content after the header.
+
+### data, count = worldedit.serialize(pos1, pos2)
+
+Converts the region defined by positions `pos1` and `pos2` into a single string.
+
+Returns the serialized data and the number of nodes serialized, or nil.
+
+### pos1, pos2, count = worldedit.allocate(origin_pos, value)
+
+Determines the volume the nodes represented by string `value` would occupy if deserialized at `origin_pos`.
+
+Returns the two corner positions and the number of nodes, or nil.
+
+### count = worldedit.deserialize(origin_pos, value)
+
+Loads the nodes represented by string `value` at position `origin_pos`.
+
+Returns the number of nodes deserialized or nil.
+
+Code
+----
+Contained in code.lua, this module allows arbitrary Lua code to be used with WorldEdit.
+
+### error = worldedit.lua(code)
+
+Executes `code` as a Lua chunk in the global namespace.
+
+Returns an error if the code fails or nil otherwise.
+
+### error = worldedit.luatransform(pos1, pos2, code)
+
+Executes `code` as a Lua chunk in the global namespace with the variable `pos` available, for each node in a region defined by positions `pos1` and `pos2`.
+
+Returns an error if the code fails or nil otherwise.
diff --git a/worldedit/config.ld b/worldedit/config.ld
new file mode 100644
index 0000000..69be224
--- /dev/null
+++ b/worldedit/config.ld
@@ -0,0 +1,12 @@
+project = "WorldEdit"
+title = "WorldEdit API Documentation"
+description = "Minetest mod to mass-modify nodes"
+format = "markdown"
+file = {"worldedit"}
+topics = {
+ "README.md",
+ "Tutorial.md",
+ "ChatCommands.md",
+ "LICENSE.txt"
+}
+
diff --git a/worldedit/modpack.txt b/worldedit/modpack.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/worldedit/modpack.txt
diff --git a/worldedit/worldedit/code.lua b/worldedit/worldedit/code.lua
new file mode 100644
index 0000000..a939deb
--- /dev/null
+++ b/worldedit/worldedit/code.lua
@@ -0,0 +1,52 @@
+--- Lua code execution functions.
+-- @module worldedit.code
+
+--- Executes `code` as a Lua chunk in the global namespace.
+-- @return An error message if the code fails, or nil on success.
+function worldedit.lua(code)
+ local func, err = loadstring(code)
+ if not func then -- Syntax error
+ return err
+ end
+ local good, err = pcall(func)
+ if not good then -- Runtime error
+ return err
+ end
+ return nil
+end
+
+
+--- Executes `code` as a Lua chunk in the global namespace with the variable
+-- pos available, for each node in a region defined by positions `pos1` and
+-- `pos2`.
+-- @return An error message if the code fails, or nil on success.
+function worldedit.luatransform(pos1, pos2, code)
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ local factory, err = loadstring("return function(pos) " .. code .. " end")
+ if not factory then -- Syntax error
+ return err
+ end
+ local func = factory()
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local pos = {x=pos1.x, y=0, z=0}
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local good, err = pcall(func, pos)
+ if not good then -- Runtime error
+ return err
+ end
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ return nil
+end
+
diff --git a/worldedit/worldedit/common.lua b/worldedit/worldedit/common.lua
new file mode 100644
index 0000000..be9a2c9
--- /dev/null
+++ b/worldedit/worldedit/common.lua
@@ -0,0 +1,114 @@
+--- Common functions [INTERNAL]. All of these functions are internal!
+-- @module worldedit.common
+
+--- Copies and modifies positions `pos1` and `pos2` so that each component of
+-- `pos1` is less than or equal to the corresponding component of `pos2`.
+-- Returns the new positions.
+function worldedit.sort_pos(pos1, pos2)
+ pos1 = {x=pos1.x, y=pos1.y, z=pos1.z}
+ pos2 = {x=pos2.x, y=pos2.y, z=pos2.z}
+ if pos1.x > pos2.x then
+ pos2.x, pos1.x = pos1.x, pos2.x
+ end
+ if pos1.y > pos2.y then
+ pos2.y, pos1.y = pos1.y, pos2.y
+ end
+ if pos1.z > pos2.z then
+ pos2.z, pos1.z = pos1.z, pos2.z
+ end
+ return pos1, pos2
+end
+
+
+--- Determines the volume of the region defined by positions `pos1` and `pos2`.
+-- @return The volume.
+function worldedit.volume(pos1, pos2)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+ return (pos2.x - pos1.x + 1) *
+ (pos2.y - pos1.y + 1) *
+ (pos2.z - pos1.z + 1)
+end
+
+
+--- Gets other axes given an axis.
+-- @raise Axis must be x, y, or z!
+function worldedit.get_axis_others(axis)
+ if axis == "x" then
+ return "y", "z"
+ elseif axis == "y" then
+ return "x", "z"
+ elseif axis == "z" then
+ return "x", "y"
+ else
+ error("Axis must be x, y, or z!")
+ end
+end
+
+
+function worldedit.keep_loaded(pos1, pos2)
+ local manip = minetest.get_voxel_manip()
+ manip:read_from_map(pos1, pos2)
+end
+
+
+local mh = {}
+worldedit.manip_helpers = mh
+
+
+--- Generates an empty VoxelManip data table for an area.
+-- @return The empty data table.
+function mh.get_empty_data(area)
+ -- Fill emerged area with ignore so that blocks in the area that are
+ -- only partially modified aren't overwriten.
+ local data = {}
+ local c_ignore = minetest.get_content_id("ignore")
+ for i = 1, worldedit.volume(area.MinEdge, area.MaxEdge) do
+ data[i] = c_ignore
+ end
+ return data
+end
+
+
+function mh.init(pos1, pos2)
+ local manip = minetest.get_voxel_manip()
+ local emerged_pos1, emerged_pos2 = manip:read_from_map(pos1, pos2)
+ local area = VoxelArea:new({MinEdge=emerged_pos1, MaxEdge=emerged_pos2})
+ return manip, area
+end
+
+
+function mh.init_radius(pos, radius)
+ local pos1 = vector.subtract(pos, radius)
+ local pos2 = vector.add(pos, radius)
+ return mh.init(pos1, pos2)
+end
+
+
+function mh.init_axis_radius(base_pos, axis, radius)
+ return mh.init_axis_radius_length(base_pos, axis, radius, radius)
+end
+
+
+function mh.init_axis_radius_length(base_pos, axis, radius, length)
+ local other1, other2 = worldedit.get_axis_others(axis)
+ local pos1 = {
+ [axis] = base_pos[axis],
+ [other1] = base_pos[other1] - radius,
+ [other2] = base_pos[other2] - radius
+ }
+ local pos2 = {
+ [axis] = base_pos[axis] + length,
+ [other1] = base_pos[other1] + radius,
+ [other2] = base_pos[other2] + radius
+ }
+ return mh.init(pos1, pos2)
+end
+
+
+function mh.finish(manip, data)
+ -- Update map
+ manip:set_data(data)
+ manip:write_to_map()
+ manip:update_map()
+end
+
diff --git a/worldedit/worldedit/compatibility.lua b/worldedit/worldedit/compatibility.lua
new file mode 100644
index 0000000..c989a05
--- /dev/null
+++ b/worldedit/worldedit/compatibility.lua
@@ -0,0 +1,74 @@
+--- Compatibility functions.
+-- @module worldedit.compatibility
+
+local function deprecated(new_func)
+ local info = debug.getinfo(1, "n")
+ local msg = "worldedit." .. info.name .. "() is deprecated."
+ if new_func then
+ msg = msg .. " Use worldedit." .. new_func .. "() instead."
+ end
+ minetest.log("deprecated", msg)
+end
+
+worldedit.allocate_old = worldedit.allocate
+
+worldedit.deserialize_old = worldedit.deserialize
+
+function worldedit.metasave(pos1, pos2, filename)
+ deprecated("save")
+ local file, err = io.open(filename, "wb")
+ if err then return 0 end
+ local data, count = worldedit.serialize(pos1, pos2)
+ file:write(data)
+ file:close()
+ return count
+end
+
+function worldedit.metaload(originpos, filename)
+ deprecated("load")
+ filename = minetest.get_worldpath() .. "/schems/" .. file .. ".wem"
+ local file, err = io.open(filename, "wb")
+ if err then return 0 end
+ local data = file:read("*a")
+ return worldedit.deserialize(originpos, data)
+end
+
+function worldedit.scale(pos1, pos2, factor)
+ deprecated("stretch")
+ return worldedit.stretch(pos1, pos2, factor, factor, factor)
+end
+
+function worldedit.valueversion(value)
+ deprecated("read_header")
+ local version = worldedit.read_header(value)
+ if not version or version > worldedit.LATEST_SERIALIZATION_VERSION then
+ return 0
+ end
+ return version
+end
+
+function worldedit.replaceinverse(pos1, pos2, search_node, replace_node)
+ deprecated("replace")
+ return worldedit.replace(pos1, pos2, search_node, replace_node, true)
+end
+
+function worldedit.clearobjects(...)
+ deprecated("clear_objects")
+ return worldedit.clear_objects(...)
+end
+
+function worldedit.hollow_sphere(pos, radius, node_name)
+ deprecated("sphere")
+ return worldedit.sphere(pos, radius, node_name, true)
+end
+
+function worldedit.hollow_dome(pos, radius, node_name)
+ deprecated("dome")
+ return worldedit.dome(pos, radius, node_name, true)
+end
+
+function worldedit.hollow_cylinder(pos, axis, length, radius, node_name)
+ deprecated("cylinder")
+ return worldedit.cylinder(pos, axis, length, radius, node_name, true)
+end
+
diff --git a/worldedit/worldedit/init.lua b/worldedit/worldedit/init.lua
new file mode 100644
index 0000000..e193454
--- /dev/null
+++ b/worldedit/worldedit/init.lua
@@ -0,0 +1,44 @@
+--- Worldedit.
+-- @module worldedit
+-- @release 1.1
+-- @copyright 2013 sfan5, Anthony Zhang (Uberi/Temperest), and Brett O'Donnell (cornernote).
+-- @license GNU Affero General Public License version 3 (AGPLv3)
+-- @author sfan5
+-- @author Anthony Zang (Uberi/Temperest)
+-- @author Bret O'Donnel (cornernote)
+-- @author ShadowNinja
+
+worldedit = {}
+worldedit.version = {1, 1, major=1, minor=1}
+worldedit.version_string = table.concat(worldedit.version, ".")
+
+if not minetest.get_voxel_manip then
+ local err_msg = "This version of WorldEdit requires Minetest 0.4.8 or later! You have an old version."
+ minetest.log("error", string.rep("#", 128))
+ minetest.log("error", err_msg)
+ minetest.log("error", string.rep("#", 128))
+ error(err_msg)
+end
+
+local path = minetest.get_modpath(minetest.get_current_modname())
+
+local function load_module(path)
+ local file = io.open(path, "r")
+ if not file then return end
+ file:close()
+ return dofile(path)
+end
+
+dofile(path .. "/common.lua")
+load_module(path .. "/manipulations.lua")
+load_module(path .. "/primitives.lua")
+load_module(path .. "/visualization.lua")
+load_module(path .. "/serialization.lua")
+load_module(path .. "/code.lua")
+load_module(path .. "/compatibility.lua")
+
+
+if minetest.setting_getbool("log_mods") then
+ print("[WorldEdit] Loaded!")
+end
+
diff --git a/worldedit/worldedit/manipulations.lua b/worldedit/worldedit/manipulations.lua
new file mode 100644
index 0000000..cf95517
--- /dev/null
+++ b/worldedit/worldedit/manipulations.lua
@@ -0,0 +1,629 @@
+--- Generic node manipulations.
+-- @module worldedit.manipulations
+
+local mh = worldedit.manip_helpers
+
+
+--- Sets a region to `node_names`.
+-- @param pos1
+-- @param pos2
+-- @param node_names Node name or list of node names.
+-- @return The number of nodes set.
+function worldedit.set(pos1, pos2, node_names)
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ local manip, area = mh.init(pos1, pos2)
+ local data = mh.get_empty_data(area)
+
+ if type(node_names) == "string" then -- Only one type of node
+ local id = minetest.get_content_id(node_names)
+ -- Fill area with node
+ for i in area:iterp(pos1, pos2) do
+ data[i] = id
+ end
+ else -- Several types of nodes specified
+ local node_ids = {}
+ for i, v in ipairs(node_names) do
+ node_ids[i] = minetest.get_content_id(v)
+ end
+ -- Fill area randomly with nodes
+ local id_count, rand = #node_ids, math.random
+ for i in area:iterp(pos1, pos2) do
+ data[i] = node_ids[rand(id_count)]
+ end
+ end
+
+ mh.finish(manip, data)
+
+ return worldedit.volume(pos1, pos2)
+end
+
+
+--- Replaces all instances of `search_node` with `replace_node` in a region.
+-- When `inverse` is `true`, replaces all instances that are NOT `search_node`.
+-- @return The number of nodes replaced.
+function worldedit.replace(pos1, pos2, search_node, replace_node, inverse)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ local manip, area = mh.init(pos1, pos2)
+ local data = manip:get_data()
+
+ local search_id = minetest.get_content_id(search_node)
+ local replace_id = minetest.get_content_id(replace_node)
+
+ local count = 0
+
+ --- TODO: This could be shortened by checking `inverse` in the loop,
+ -- but that would have a speed penalty. Is the penalty big enough
+ -- to matter?
+ if not inverse then
+ for i in area:iterp(pos1, pos2) do
+ if data[i] == search_id then
+ data[i] = replace_id
+ count = count + 1
+ end
+ end
+ else
+ for i in area:iterp(pos1, pos2) do
+ if data[i] ~= search_id then
+ data[i] = replace_id
+ count = count + 1
+ end
+ end
+ end
+
+ mh.finish(manip, data)
+
+ return count
+end
+
+
+--- Duplicates a region `amount` times with offset vector `direction`.
+-- Stacking is spread across server steps, one copy per step.
+-- @return The number of nodes stacked.
+function worldedit.stack2(pos1, pos2, direction, amount, finished)
+ local i = 0
+ local translated = {x=0, y=0, z=0}
+ local function next_one()
+ if i < amount then
+ i = i + 1
+ translated.x = translated.x + direction.x
+ translated.y = translated.y + direction.y
+ translated.z = translated.z + direction.z
+ worldedit.copy2(pos1, pos2, translated)
+ minetest.after(0, next_one)
+ else
+ if finished then
+ finished()
+ end
+ end
+ end
+ next_one()
+ return worldedit.volume(pos1, pos2) * amount
+end
+
+
+--- Copies a region along `axis` by `amount` nodes.
+-- @param pos1
+-- @param pos2
+-- @param axis Axis ("x", "y", or "z")
+-- @param amount
+-- @return The number of nodes copied.
+function worldedit.copy(pos1, pos2, axis, amount)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local get_node, get_meta, set_node = minetest.get_node,
+ minetest.get_meta, minetest.set_node
+ -- Copy things backwards when negative to avoid corruption.
+ -- FIXME: Lots of code duplication here.
+ if amount < 0 then
+ local pos = {}
+ pos.x = pos1.x
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node = get_node(pos) -- Obtain current node
+ local meta = get_meta(pos):to_table() -- Get meta of current node
+ local value = pos[axis] -- Store current position
+ pos[axis] = value + amount -- Move along axis
+ set_node(pos, node) -- Copy node to new position
+ get_meta(pos):from_table(meta) -- Set metadata of new node
+ pos[axis] = value -- Restore old position
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ else
+ local pos = {}
+ pos.x = pos2.x
+ while pos.x >= pos1.x do
+ pos.y = pos2.y
+ while pos.y >= pos1.y do
+ pos.z = pos2.z
+ while pos.z >= pos1.z do
+ local node = get_node(pos) -- Obtain current node
+ local meta = get_meta(pos):to_table() -- Get meta of current node
+ local value = pos[axis] -- Store current position
+ pos[axis] = value + amount -- Move along axis
+ set_node(pos, node) -- Copy node to new position
+ get_meta(pos):from_table(meta) -- Set metadata of new node
+ pos[axis] = value -- Restore old position
+ pos.z = pos.z - 1
+ end
+ pos.y = pos.y - 1
+ end
+ pos.x = pos.x - 1
+ end
+ end
+ return worldedit.volume(pos1, pos2)
+end
+
+--- Copies a region by offset vector `off`.
+-- @param pos1
+-- @param pos2
+-- @param off
+-- @return The number of nodes copied.
+function worldedit.copy2(pos1, pos2, off)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local get_node, get_meta, set_node = minetest.get_node,
+ minetest.get_meta, minetest.set_node
+ local pos = {}
+ pos.x = pos2.x
+ while pos.x >= pos1.x do
+ pos.y = pos2.y
+ while pos.y >= pos1.y do
+ pos.z = pos2.z
+ while pos.z >= pos1.z do
+ local node = get_node(pos) -- Obtain current node
+ local meta = get_meta(pos):to_table() -- Get meta of current node
+ local newpos = vector.add(pos, off) -- Calculate new position
+ set_node(newpos, node) -- Copy node to new position
+ get_meta(newpos):from_table(meta) -- Set metadata of new node
+ pos.z = pos.z - 1
+ end
+ pos.y = pos.y - 1
+ end
+ pos.x = pos.x - 1
+ end
+ return worldedit.volume(pos1, pos2)
+end
+
+--- Moves a region along `axis` by `amount` nodes.
+-- @return The number of nodes moved.
+function worldedit.move(pos1, pos2, axis, amount)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ --- TODO: Move slice by slice using schematic method in the move axis
+ -- and transfer metadata in separate loop (and if the amount is
+ -- greater than the length in the axis, copy whole thing at a time and
+ -- erase original after, using schematic method).
+ local get_node, get_meta, set_node, remove_node = minetest.get_node,
+ minetest.get_meta, minetest.set_node, minetest.remove_node
+ -- Copy things backwards when negative to avoid corruption.
+ --- FIXME: Lots of code duplication here.
+ if amount < 0 then
+ local pos = {}
+ pos.x = pos1.x
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node = get_node(pos) -- Obtain current node
+ local meta = get_meta(pos):to_table() -- Get metadata of current node
+ remove_node(pos) -- Remove current node
+ local value = pos[axis] -- Store current position
+ pos[axis] = value + amount -- Move along axis
+ set_node(pos, node) -- Move node to new position
+ get_meta(pos):from_table(meta) -- Set metadata of new node
+ pos[axis] = value -- Restore old position
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ else
+ local pos = {}
+ pos.x = pos2.x
+ while pos.x >= pos1.x do
+ pos.y = pos2.y
+ while pos.y >= pos1.y do
+ pos.z = pos2.z
+ while pos.z >= pos1.z do
+ local node = get_node(pos) -- Obtain current node
+ local meta = get_meta(pos):to_table() -- Get metadata of current node
+ remove_node(pos) -- Remove current node
+ local value = pos[axis] -- Store current position
+ pos[axis] = value + amount -- Move along axis
+ set_node(pos, node) -- Move node to new position
+ get_meta(pos):from_table(meta) -- Set metadata of new node
+ pos[axis] = value -- Restore old position
+ pos.z = pos.z - 1
+ end
+ pos.y = pos.y - 1
+ end
+ pos.x = pos.x - 1
+ end
+ end
+ return worldedit.volume(pos1, pos2)
+end
+
+
+--- Duplicates a region along `axis` `amount` times.
+-- Stacking is spread across server steps, one copy per step.
+-- @param pos1
+-- @param pos2
+-- @param axis Axis direction, "x", "y", or "z".
+-- @param count
+-- @return The number of nodes stacked.
+function worldedit.stack(pos1, pos2, axis, count)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+ local length = pos2[axis] - pos1[axis] + 1
+ if count < 0 then
+ count = -count
+ length = -length
+ end
+ local amount = 0
+ local copy = worldedit.copy
+ local i = 1
+ function next_one()
+ if i <= count then
+ i = i + 1
+ amount = amount + length
+ copy(pos1, pos2, axis, amount)
+ minetest.after(0, next_one)
+ end
+ end
+ next_one()
+ return worldedit.volume(pos1, pos2) * count
+end
+
+
+--- Stretches a region by a factor of positive integers along the X, Y, and Z
+-- axes, respectively, with `pos1` as the origin.
+-- @param pos1
+-- @param pos2
+-- @param stretch_x Amount to stretch along X axis.
+-- @param stretch_y Amount to stretch along Y axis.
+-- @param stretch_z Amount to stretch along Z axis.
+-- @return The number of nodes scaled.
+-- @return The new scaled position 1.
+-- @return The new scaled position 2.
+function worldedit.stretch(pos1, pos2, stretch_x, stretch_y, stretch_z)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ -- Prepare schematic of large node
+ local get_node, get_meta, place_schematic = minetest.get_node,
+ minetest.get_meta, minetest.place_schematic
+ local placeholder_node = {name="", param1=255, param2=0}
+ local nodes = {}
+ for i = 1, stretch_x * stretch_y * stretch_z do
+ nodes[i] = placeholder_node
+ end
+ local schematic = {size={x=stretch_x, y=stretch_y, z=stretch_z}, data=nodes}
+
+ local size_x, size_y, size_z = stretch_x - 1, stretch_y - 1, stretch_z - 1
+
+ local new_pos2 = {
+ x = pos1.x + (pos2.x - pos1.x) * stretch_x + size_x,
+ y = pos1.y + (pos2.y - pos1.y) * stretch_y + size_y,
+ z = pos1.z + (pos2.z - pos1.z) * stretch_z + size_z,
+ }
+ worldedit.keep_loaded(pos1, new_pos2)
+
+ local pos = {x=pos2.x, y=0, z=0}
+ local big_pos = {x=0, y=0, z=0}
+ while pos.x >= pos1.x do
+ pos.y = pos2.y
+ while pos.y >= pos1.y do
+ pos.z = pos2.z
+ while pos.z >= pos1.z do
+ local node = get_node(pos) -- Get current node
+ local meta = get_meta(pos):to_table() -- Get meta of current node
+
+ -- Calculate far corner of the big node
+ local pos_x = pos1.x + (pos.x - pos1.x) * stretch_x
+ local pos_y = pos1.y + (pos.y - pos1.y) * stretch_y
+ local pos_z = pos1.z + (pos.z - pos1.z) * stretch_z
+
+ -- Create large node
+ placeholder_node.name = node.name
+ placeholder_node.param2 = node.param2
+ big_pos.x, big_pos.y, big_pos.z = pos_x, pos_y, pos_z
+ place_schematic(big_pos, schematic)
+
+ -- Fill in large node meta
+ if next(meta.fields) ~= nil or next(meta.inventory) ~= nil then
+ -- Node has meta fields
+ for x = 0, size_x do
+ for y = 0, size_y do
+ for z = 0, size_z do
+ big_pos.x = pos_x + x
+ big_pos.y = pos_y + y
+ big_pos.z = pos_z + z
+ -- Set metadata of new node
+ get_meta(big_pos):from_table(meta)
+ end
+ end
+ end
+ end
+ pos.z = pos.z - 1
+ end
+ pos.y = pos.y - 1
+ end
+ pos.x = pos.x - 1
+ end
+ return worldedit.volume(pos1, pos2) * stretch_x * stretch_y * stretch_z, pos1, new_pos2
+end
+
+
+--- Transposes a region between two axes.
+-- @return The number of nodes transposed.
+-- @return The new transposed position 1.
+-- @return The new transposed position 2.
+function worldedit.transpose(pos1, pos2, axis1, axis2)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ local compare
+ local extent1, extent2 = pos2[axis1] - pos1[axis1], pos2[axis2] - pos1[axis2]
+
+ if extent1 > extent2 then
+ compare = function(extent1, extent2)
+ return extent1 > extent2
+ end
+ else
+ compare = function(extent1, extent2)
+ return extent1 < extent2
+ end
+ end
+
+ -- Calculate the new position 2 after transposition
+ local new_pos2 = {x=pos2.x, y=pos2.y, z=pos2.z}
+ new_pos2[axis1] = pos1[axis1] + extent2
+ new_pos2[axis2] = pos1[axis2] + extent1
+
+ local upper_bound = {x=pos2.x, y=pos2.y, z=pos2.z}
+ if upper_bound[axis1] < new_pos2[axis1] then upper_bound[axis1] = new_pos2[axis1] end
+ if upper_bound[axis2] < new_pos2[axis2] then upper_bound[axis2] = new_pos2[axis2] end
+ worldedit.keep_loaded(pos1, upper_bound)
+
+ local pos = {x=pos1.x, y=0, z=0}
+ local get_node, get_meta, set_node = minetest.get_node,
+ minetest.get_meta, minetest.set_node
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local extent1, extent2 = pos[axis1] - pos1[axis1], pos[axis2] - pos1[axis2]
+ if compare(extent1, extent2) then -- Transpose only if below the diagonal
+ local node1 = get_node(pos)
+ local meta1 = get_meta(pos):to_table()
+ local value1, value2 = pos[axis1], pos[axis2] -- Save position values
+ pos[axis1], pos[axis2] = pos1[axis1] + extent2, pos1[axis2] + extent1 -- Swap axis extents
+ local node2 = get_node(pos)
+ local meta2 = get_meta(pos):to_table()
+ set_node(pos, node1)
+ get_meta(pos):from_table(meta1)
+ pos[axis1], pos[axis2] = value1, value2 -- Restore position values
+ set_node(pos, node2)
+ get_meta(pos):from_table(meta2)
+ end
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ return worldedit.volume(pos1, pos2), pos1, new_pos2
+end
+
+
+--- Flips a region along `axis`.
+-- @return The number of nodes flipped.
+function worldedit.flip(pos1, pos2, axis)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ --- TODO: Flip the region slice by slice along the flip axis using schematic method.
+ local pos = {x=pos1.x, y=0, z=0}
+ local start = pos1[axis] + pos2[axis]
+ pos2[axis] = pos1[axis] + math.floor((pos2[axis] - pos1[axis]) / 2)
+ local get_node, get_meta, set_node = minetest.get_node,
+ minetest.get_meta, minetest.set_node
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node1 = get_node(pos)
+ local meta1 = get_meta(pos):to_table()
+ local value = pos[axis] -- Save position
+ pos[axis] = start - value -- Shift position
+ local node2 = get_node(pos)
+ local meta2 = get_meta(pos):to_table()
+ set_node(pos, node1)
+ get_meta(pos):from_table(meta1)
+ pos[axis] = value -- Restore position
+ set_node(pos, node2)
+ get_meta(pos):from_table(meta2)
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ return worldedit.volume(pos1, pos2)
+end
+
+
+--- Rotates a region clockwise around an axis.
+-- @param pos1
+-- @param pos2
+-- @param axis Axis ("x", "y", or "z").
+-- @param angle Angle in degrees (90 degree increments only).
+-- @return The number of nodes rotated.
+-- @return The new first position.
+-- @return The new second position.
+function worldedit.rotate(pos1, pos2, axis, angle)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ local other1, other2 = worldedit.get_axis_others(axis)
+ angle = angle % 360
+
+ local count
+ if angle == 90 then
+ worldedit.flip(pos1, pos2, other1)
+ count, pos1, pos2 = worldedit.transpose(pos1, pos2, other1, other2)
+ elseif angle == 180 then
+ worldedit.flip(pos1, pos2, other1)
+ count = worldedit.flip(pos1, pos2, other2)
+ elseif angle == 270 then
+ worldedit.flip(pos1, pos2, other2)
+ count, pos1, pos2 = worldedit.transpose(pos1, pos2, other1, other2)
+ else
+ error("Only 90 degree increments are supported!")
+ end
+ return count, pos1, pos2
+end
+
+
+--- Rotates all oriented nodes in a region clockwise around the Y axis.
+-- @param pos1
+-- @param pos2
+-- @param angle Angle in degrees (90 degree increments only).
+-- @return The number of nodes oriented.
+-- TODO: Support 6D facedir rotation along arbitrary axis.
+function worldedit.orient(pos1, pos2, angle)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+ local registered_nodes = minetest.registered_nodes
+
+ local wallmounted = {
+ [90] = {[0]=0, 1, 5, 4, 2, 3},
+ [180] = {[0]=0, 1, 3, 2, 5, 4},
+ [270] = {[0]=0, 1, 4, 5, 3, 2}
+ }
+ local facedir = {
+ [90] = {[0]=1, 2, 3, 0},
+ [180] = {[0]=2, 3, 0, 1},
+ [270] = {[0]=3, 0, 1, 2}
+ }
+
+ angle = angle % 360
+ if angle == 0 then
+ return 0
+ end
+ if angle % 90 ~= 0 then
+ error("Only 90 degree increments are supported!")
+ end
+ local wallmounted_substitution = wallmounted[angle]
+ local facedir_substitution = facedir[angle]
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local count = 0
+ local set_node, get_node, get_meta, swap_node = minetest.set_node,
+ minetest.get_node, minetest.get_meta, minetest.swap_node
+ local pos = {x=pos1.x, y=0, z=0}
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node = get_node(pos)
+ local def = registered_nodes[node.name]
+ if def then
+ if def.paramtype2 == "wallmounted" then
+ node.param2 = wallmounted_substitution[node.param2]
+ local meta = get_meta(pos):to_table()
+ set_node(pos, node)
+ get_meta(pos):from_table(meta)
+ count = count + 1
+ elseif def.paramtype2 == "facedir" then
+ node.param2 = facedir_substitution[node.param2]
+ local meta = get_meta(pos):to_table()
+ set_node(pos, node)
+ get_meta(pos):from_table(meta)
+ count = count + 1
+ end
+ end
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ return count
+end
+
+
+--- Attempts to fix the lighting in a region.
+-- @return The number of nodes updated.
+function worldedit.fixlight(pos1, pos2)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local nodes = minetest.find_nodes_in_area(pos1, pos2, "air")
+ local dig_node = minetest.dig_node
+ for _, pos in ipairs(nodes) do
+ dig_node(pos)
+ end
+ return #nodes
+end
+
+
+--- Clears all objects in a region.
+-- @return The number of objects cleared.
+function worldedit.clear_objects(pos1, pos2)
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ -- Offset positions to include full nodes (positions are in the center of nodes)
+ local pos1x, pos1y, pos1z = pos1.x - 0.5, pos1.y - 0.5, pos1.z - 0.5
+ local pos2x, pos2y, pos2z = pos2.x + 0.5, pos2.y + 0.5, pos2.z + 0.5
+
+ -- Center of region
+ local center = {
+ x = pos1x + ((pos2x - pos1x) / 2),
+ y = pos1y + ((pos2y - pos1y) / 2),
+ z = pos1z + ((pos2z - pos1z) / 2)
+ }
+ -- Bounding sphere radius
+ local radius = math.sqrt(
+ (center.x - pos1x) ^ 2 +
+ (center.y - pos1y) ^ 2 +
+ (center.z - pos1z) ^ 2)
+ local count = 0
+ for _, obj in pairs(minetest.get_objects_inside_radius(center, radius)) do
+ local entity = obj:get_luaentity()
+ -- Avoid players and WorldEdit entities
+ if not obj:is_player() and (not entity or
+ not entity.name:find("^worldedit:")) then
+ local pos = obj:getpos()
+ if pos.x >= pos1x and pos.x <= pos2x and
+ pos.y >= pos1y and pos.y <= pos2y and
+ pos.z >= pos1z and pos.z <= pos2z then
+ -- Inside region
+ obj:remove()
+ count = count + 1
+ end
+ end
+ end
+ return count
+end
+
diff --git a/worldedit/worldedit/primitives.lua b/worldedit/worldedit/primitives.lua
new file mode 100644
index 0000000..962a02f
--- /dev/null
+++ b/worldedit/worldedit/primitives.lua
@@ -0,0 +1,273 @@
+--- Functions for creating primitive shapes.
+-- @module worldedit.primitives
+
+local mh = worldedit.manip_helpers
+
+
+--- Adds a sphere of `node_name` centered at `pos`.
+-- @param pos Position to center sphere at.
+-- @param radius Sphere radius.
+-- @param node_name Name of node to make shere of.
+-- @param hollow Whether the sphere should be hollow.
+-- @return The number of nodes added.
+function worldedit.sphere(pos, radius, node_name, hollow)
+ local manip, area = mh.init_radius(pos, radius)
+
+ local data = mh.get_empty_data(area)
+
+ -- Fill selected area with node
+ local node_id = minetest.get_content_id(node_name)
+ local min_radius, max_radius = radius * (radius - 1), radius * (radius + 1)
+ local offset_x, offset_y, offset_z = pos.x - area.MinEdge.x, pos.y - area.MinEdge.y, pos.z - area.MinEdge.z
+ local stride_z, stride_y = area.zstride, area.ystride
+ local count = 0
+ for z = -radius, radius do
+ -- Offset contributed by z plus 1 to make it 1-indexed
+ local new_z = (z + offset_z) * stride_z + 1
+ for y = -radius, radius do
+ local new_y = new_z + (y + offset_y) * stride_y
+ for x = -radius, radius do
+ local squared = x * x + y * y + z * z
+ if squared <= max_radius and (not hollow or squared >= min_radius) then
+ -- Position is on surface of sphere
+ local i = new_y + (x + offset_x)
+ data[i] = node_id
+ count = count + 1
+ end
+ end
+ end
+ end
+
+ mh.finish(manip, data)
+
+ return count
+end
+
+
+--- Adds a dome.
+-- @param pos Position to center dome at.
+-- @param radius Dome radius. Negative for concave domes.
+-- @param node_name Name of node to make dome of.
+-- @param hollow Whether the dome should be hollow.
+-- @return The number of nodes added.
+-- TODO: Add axis option.
+function worldedit.dome(pos, radius, node_name, hollow)
+ local min_y, max_y = 0, radius
+ if radius < 0 then
+ radius = -radius
+ min_y, max_y = -radius, 0
+ end
+
+ local manip, area = mh.init_axis_radius(pos, "y", radius)
+ local data = mh.get_empty_data(area)
+
+ -- Add dome
+ local node_id = minetest.get_content_id(node_name)
+ local min_radius, max_radius = radius * (radius - 1), radius * (radius + 1)
+ local offset_x, offset_y, offset_z = pos.x - area.MinEdge.x, pos.y - area.MinEdge.y, pos.z - area.MinEdge.z
+ local stride_z, stride_y = area.zstride, area.ystride
+ local count = 0
+ for z = -radius, radius do
+ local new_z = (z + offset_z) * stride_z + 1 --offset contributed by z plus 1 to make it 1-indexed
+ for y = min_y, max_y do
+ local new_y = new_z + (y + offset_y) * stride_y
+ for x = -radius, radius do
+ local squared = x * x + y * y + z * z
+ if squared <= max_radius and (not hollow or squared >= min_radius) then
+ -- Position is in dome
+ local i = new_y + (x + offset_x)
+ data[i] = node_id
+ count = count + 1
+ end
+ end
+ end
+ end
+
+ mh.finish(manip, data)
+
+ return count
+end
+
+--- Adds a cylinder.
+-- @param pos Position to center base of cylinder at.
+-- @param axis Axis ("x", "y", or "z")
+-- @param length Cylinder length.
+-- @param radius Cylinder radius.
+-- @param node_name Name of node to make cylinder of.
+-- @param hollow Whether the cylinder should be hollow.
+-- @return The number of nodes added.
+function worldedit.cylinder(pos, axis, length, radius, node_name, hollow)
+ local other1, other2 = worldedit.get_axis_others(axis)
+
+ -- Handle negative lengths
+ local current_pos = {x=pos.x, y=pos.y, z=pos.z}
+ if length < 0 then
+ length = -length
+ current_pos[axis] = current_pos[axis] - length
+ end
+
+ -- Set up voxel manipulator
+ local manip, area = mh.init_axis_radius_length(current_pos, axis, radius, length)
+ local data = mh.get_empty_data(area)
+
+ -- Add cylinder
+ local node_id = minetest.get_content_id(node_name)
+ local min_radius, max_radius = radius * (radius - 1), radius * (radius + 1)
+ local stride = {x=1, y=area.ystride, z=area.zstride}
+ local offset = {
+ x = current_pos.x - area.MinEdge.x,
+ y = current_pos.y - area.MinEdge.y,
+ z = current_pos.z - area.MinEdge.z,
+ }
+ local min_slice, max_slice = offset[axis], offset[axis] + length - 1
+ local count = 0
+ for index2 = -radius, radius do
+ -- Offset contributed by other axis 1 plus 1 to make it 1-indexed
+ local new_index2 = (index2 + offset[other1]) * stride[other1] + 1
+ for index3 = -radius, radius do
+ local new_index3 = new_index2 + (index3 + offset[other2]) * stride[other2]
+ local squared = index2 * index2 + index3 * index3
+ if squared <= max_radius and (not hollow or squared >= min_radius) then
+ -- Position is in cylinder
+ -- Add column along axis
+ for index1 = min_slice, max_slice do
+ local vi = new_index3 + index1 * stride[axis]
+ data[vi] = node_id
+ end
+ count = count + length
+ end
+ end
+ end
+
+ mh.finish(manip, data)
+
+ return count
+end
+
+
+--- Adds a pyramid.
+-- @param pos Position to center base of pyramid at.
+-- @param axis Axis ("x", "y", or "z")
+-- @param height Pyramid height.
+-- @param node_name Name of node to make pyramid of.
+-- @return The number of nodes added.
+function worldedit.pyramid(pos, axis, height, node_name)
+ local other1, other2 = worldedit.get_axis_others(axis)
+
+ -- Set up voxel manipulator
+ local manip, area = mh.init_axis_radius(pos, axis,
+ height >= 0 and height or -height)
+ local data = mh.get_empty_data(area)
+
+ -- Handle inverted pyramids
+ local start_axis, end_axis, step
+ if height > 0 then
+ height = height - 1
+ step = 1
+ else
+ height = height + 1
+ step = -1
+ end
+
+ -- Add pyramid
+ local node_id = minetest.get_content_id(node_name)
+ local stride = {x=1, y=area.ystride, z=area.zstride}
+ local offset = {
+ x = pos.x - area.MinEdge.x,
+ y = pos.y - area.MinEdge.y,
+ z = pos.z - area.MinEdge.z,
+ }
+ local size = math.abs(height * step)
+ local count = 0
+ -- For each level of the pyramid
+ for index1 = 0, height, step do
+ -- Offset contributed by axis plus 1 to make it 1-indexed
+ local new_index1 = (index1 + offset[axis]) * stride[axis] + 1
+ for index2 = -size, size do
+ local new_index2 = new_index1 + (index2 + offset[other1]) * stride[other1]
+ for index3 = -size, size do
+ local i = new_index2 + (index3 + offset[other2]) * stride[other2]
+ data[i] = node_id
+ end
+ end
+ count = count + (size * 2 + 1) ^ 2
+ size = size - 1
+ end
+
+ mh.finish(manip, data)
+
+ return count
+end
+
+--- Adds a spiral.
+-- @param pos Position to center spiral at.
+-- @param length Spral length.
+-- @param height Spiral height.
+-- @param spacer Space between walls.
+-- @param node_name Name of node to make spiral of.
+-- @return Number of nodes added.
+-- TODO: Add axis option.
+function worldedit.spiral(pos, length, height, spacer, node_name)
+ local extent = math.ceil(length / 2)
+
+ local manip, area = mh.init_axis_radius_length(pos, "y", extent, height)
+ local data = mh.get_empty_data(area)
+
+ -- Set up variables
+ local node_id = minetest.get_content_id(node_name)
+ local stride = {x=1, y=area.ystride, z=area.zstride}
+ local offset_x, offset_y, offset_z = pos.x - area.MinEdge.x, pos.y - area.MinEdge.y, pos.z - area.MinEdge.z
+ local i = offset_z * stride.z + offset_y * stride.y + offset_x + 1
+
+ -- Add first column
+ local count = height
+ local column = i
+ for y = 1, height do
+ data[column] = node_id
+ column = column + stride.y
+ end
+
+ -- Add spiral segments
+ local stride_axis, stride_other = stride.x, stride.z
+ local sign = -1
+ local segment_length = 0
+ spacer = spacer + 1
+ -- Go through each segment except the last
+ for segment = 1, math.floor(length / spacer) * 2 do
+ -- Change sign and length every other turn starting with the first
+ if segment % 2 == 1 then
+ sign = -sign
+ segment_length = segment_length + spacer
+ end
+ -- Fill segment
+ for index = 1, segment_length do
+ -- Move along the direction of the segment
+ i = i + stride_axis * sign
+ local column = i
+ -- Add column
+ for y = 1, height do
+ data[column] = node_id
+ column = column + stride.y
+ end
+ end
+ count = count + segment_length * height
+ stride_axis, stride_other = stride_other, stride_axis -- Swap axes
+ end
+
+ -- Add shorter final segment
+ sign = -sign
+ for index = 1, segment_length do
+ i = i + stride_axis * sign
+ local column = i
+ -- Add column
+ for y = 1, height do
+ data[column] = node_id
+ column = column + stride.y
+ end
+ end
+ count = count + segment_length * height
+
+ mh.finish(manip, data)
+
+ return count
+end
diff --git a/worldedit/worldedit/serialization.lua b/worldedit/worldedit/serialization.lua
new file mode 100644
index 0000000..00d984d
--- /dev/null
+++ b/worldedit/worldedit/serialization.lua
@@ -0,0 +1,239 @@
+--- Schematic serialization and deserialiation.
+-- @module worldedit.serialization
+
+worldedit.LATEST_SERIALIZATION_VERSION = 5
+local LATEST_SERIALIZATION_HEADER = worldedit.LATEST_SERIALIZATION_VERSION .. ":"
+
+
+--[[
+Serialization version history:
+ 1: Original format. Serialized Lua table with a weird linked format...
+ 2: Position and node seperated into sub-tables in fields `1` and `2`.
+ 3: List of nodes, one per line, with fields seperated by spaces.
+ Format: <X> <Y> <Z> <Name> <Param1> <Param2>
+ 4: Serialized Lua table containing a list of nodes with `x`, `y`, `z`,
+ `name`, `param1`, `param2`, and `meta` fields.
+ 5: Added header and made `param1`, `param2`, and `meta` fields optional.
+ Header format: <Version>,<ExtraHeaderField1>,...:<Content>
+--]]
+
+
+--- Reads the header of serialized data.
+-- @param value Serialized WorldEdit data.
+-- @return The version as a positive natural number, or 0 for unknown versions.
+-- @return Extra header fields as a list of strings, or nil if not supported.
+-- @return Content (data after header).
+function worldedit.read_header(value)
+ if value:find("^[0-9]+[%-:]") then
+ local header_end = value:find(":", 1, true)
+ local header = value:sub(1, header_end - 1):split(",")
+ local version = tonumber(header[1])
+ table.remove(header, 1)
+ local content = value:sub(header_end + 1)
+ return version, header, content
+ end
+ -- Old versions that didn't include a header with a version number
+ if value:find("([+-]?%d+)%s+([+-]?%d+)%s+([+-]?%d+)") and not value:find("%{") then -- List format
+ return 3, nil, value
+ elseif value:find("^[^\"']+%{%d+%}") then
+ if value:find("%[\"meta\"%]") then -- Meta flat table format
+ return 2, nil, value
+ end
+ return 1, nil, value -- Flat table format
+ elseif value:find("%{") then -- Raw nested table format
+ return 4, nil, value
+ end
+ return nil
+end
+
+
+--- Converts the region defined by positions `pos1` and `pos2`
+-- into a single string.
+-- @return The serialized data.
+-- @return The number of nodes serialized.
+function worldedit.serialize(pos1, pos2)
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local pos = {x=pos1.x, y=0, z=0}
+ local count = 0
+ local result = {}
+ local get_node, get_meta = minetest.get_node, minetest.get_meta
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node = get_node(pos)
+ if node.name ~= "air" and node.name ~= "ignore" then
+ count = count + 1
+ local meta = get_meta(pos):to_table()
+
+ local meta_empty = true
+ -- Convert metadata item stacks to item strings
+ for name, inventory in pairs(meta.inventory) do
+ for index, stack in ipairs(inventory) do
+ meta_empty = false
+ inventory[index] = stack.to_string and stack:to_string() or stack
+ end
+ end
+ for k in pairs(meta) do
+ if k ~= "inventory" then
+ meta_empty = false
+ break
+ end
+ end
+
+ result[count] = {
+ x = pos.x - pos1.x,
+ y = pos.y - pos1.y,
+ z = pos.z - pos1.z,
+ name = node.name,
+ param1 = node.param1 ~= 0 and node.param1 or nil,
+ param2 = node.param2 ~= 0 and node.param2 or nil,
+ meta = not meta_empty and meta or nil,
+ }
+ end
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ -- Serialize entries
+ result = minetest.serialize(result)
+ return LATEST_SERIALIZATION_HEADER .. result, count
+end
+
+
+--- Loads the schematic in `value` into a node list in the latest format.
+-- Contains code based on [table.save/table.load](http://lua-users.org/wiki/SaveTableToFile)
+-- by ChillCode, available under the MIT license.
+-- @return A node list in the latest format, or nil on failure.
+local function load_schematic(value)
+ local version, header, content = worldedit.read_header(value)
+ local nodes = {}
+ if version == 1 or version == 2 then -- Original flat table format
+ local tables = minetest.deserialize(content)
+ if not tables then return nil end
+
+ -- Transform the node table into an array of nodes
+ for i = 1, #tables do
+ for j, v in pairs(tables[i]) do
+ if type(v) == "table" then
+ tables[i][j] = tables[v[1]]
+ end
+ end
+ end
+ nodes = tables[1]
+
+ if version == 1 then --original flat table format
+ for i, entry in ipairs(nodes) do
+ local pos = entry[1]
+ entry.x, entry.y, entry.z = pos.x, pos.y, pos.z
+ entry[1] = nil
+ local node = entry[2]
+ entry.name, entry.param1, entry.param2 = node.name, node.param1, node.param2
+ entry[2] = nil
+ end
+ end
+ elseif version == 3 then -- List format
+ for x, y, z, name, param1, param2 in content:gmatch(
+ "([+-]?%d+)%s+([+-]?%d+)%s+([+-]?%d+)%s+" ..
+ "([^%s]+)%s+(%d+)%s+(%d+)[^\r\n]*[\r\n]*") do
+ param1, param2 = tonumber(param1), tonumber(param2)
+ table.insert(nodes, {
+ x = originx + tonumber(x),
+ y = originy + tonumber(y),
+ z = originz + tonumber(z),
+ name = name,
+ param1 = param1 ~= 0 and param1 or nil,
+ param2 = param2 ~= 0 and param2 or nil,
+ })
+ end
+ elseif version == 4 or version == 5 then -- Nested table format
+ if not jit then
+ -- This is broken for larger tables in the current version of LuaJIT
+ nodes = minetest.deserialize(content)
+ else
+ -- XXX: This is a filthy hack that works surprisingly well - in LuaJIT, `minetest.deserialize` will fail due to the register limit
+ nodes = {}
+ content = content:gsub("return%s*{", "", 1):gsub("}%s*$", "", 1) -- remove the starting and ending values to leave only the node data
+ local escaped = content:gsub("\\\\", "@@"):gsub("\\\"", "@@"):gsub("(\"[^\"]*\")", function(s) return string.rep("@", #s) end)
+ local startpos, startpos1, endpos = 1, 1
+ while true do -- go through each individual node entry (except the last)
+ startpos, endpos = escaped:find("},%s*{", startpos)
+ if not startpos then
+ break
+ end
+ local current = content:sub(startpos1, startpos)
+ local entry = minetest.deserialize("return " .. current)
+ table.insert(nodes, entry)
+ startpos, startpos1 = endpos, endpos
+ end
+ local entry = minetest.deserialize("return " .. content:sub(startpos1)) -- process the last entry
+ table.insert(nodes, entry)
+ end
+ else
+ return nil
+ end
+ return nodes
+end
+
+--- Determines the volume the nodes represented by string `value` would occupy
+-- if deserialized at `origin_pos`.
+-- @return Low corner position.
+-- @return High corner position.
+-- @return The number of nodes.
+function worldedit.allocate(origin_pos, value)
+ local nodes = load_schematic(value)
+ if not nodes then return nil end
+ return worldedit.allocate_with_nodes(origin_pos, nodes)
+end
+
+
+-- Internal
+function worldedit.allocate_with_nodes(origin_pos, nodes)
+ local huge = math.huge
+ local pos1x, pos1y, pos1z = huge, huge, huge
+ local pos2x, pos2y, pos2z = -huge, -huge, -huge
+ local origin_x, origin_y, origin_z = origin_pos.x, origin_pos.y, origin_pos.z
+ for i, entry in ipairs(nodes) do
+ local x, y, z = origin_x + entry.x, origin_y + entry.y, origin_z + entry.z
+ if x < pos1x then pos1x = x end
+ if y < pos1y then pos1y = y end
+ if z < pos1z then pos1z = z end
+ if x > pos2x then pos2x = x end
+ if y > pos2y then pos2y = y end
+ if z > pos2z then pos2z = z end
+ end
+ local pos1 = {x=pos1x, y=pos1y, z=pos1z}
+ local pos2 = {x=pos2x, y=pos2y, z=pos2z}
+ return pos1, pos2, #nodes
+end
+
+
+--- Loads the nodes represented by string `value` at position `origin_pos`.
+-- @return The number of nodes deserialized.
+function worldedit.deserialize(origin_pos, value)
+ local nodes = load_schematic(value)
+ if not nodes then return nil end
+
+ local pos1, pos2 = worldedit.allocate_with_nodes(origin_pos, nodes)
+ worldedit.keep_loaded(pos1, pos2)
+
+ local origin_x, origin_y, origin_z = origin_pos.x, origin_pos.y, origin_pos.z
+ local count = 0
+ local add_node, get_meta = minetest.add_node, minetest.get_meta
+ for i, entry in ipairs(nodes) do
+ entry.x, entry.y, entry.z = origin_x + entry.x, origin_y + entry.y, origin_z + entry.z
+ -- Entry acts as both position and node
+ add_node(entry, entry)
+ if entry.meta then
+ get_meta(entry):from_table(entry.meta)
+ end
+ end
+ return #nodes
+end
+
diff --git a/worldedit/worldedit/visualization.lua b/worldedit/worldedit/visualization.lua
new file mode 100644
index 0000000..5ac49f3
--- /dev/null
+++ b/worldedit/worldedit/visualization.lua
@@ -0,0 +1,131 @@
+--- Functions for visibly hiding nodes
+-- @module worldedit.visualization
+
+minetest.register_node("worldedit:placeholder", {
+ drawtype = "airlike",
+ paramtype = "light",
+ sunlight_propagates = true,
+ diggable = false,
+ walkable = false,
+ groups = {not_in_creative_inventory=1},
+})
+
+--- Hides all nodes in a region defined by positions `pos1` and `pos2` by
+-- non-destructively replacing them with invisible nodes.
+-- @return The number of nodes hidden.
+function worldedit.hide(pos1, pos2)
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local pos = {x=pos1.x, y=0, z=0}
+ local get_node, get_meta, swap_node = minetest.get_node,
+ minetest.get_meta, minetest.swap_node
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node = get_node(pos)
+ if node.name ~= "air" and node.name ~= "worldedit:placeholder" then
+ -- Save the node's original name
+ get_meta(pos):set_string("worldedit_placeholder", node.name)
+ -- Swap in placeholder node
+ node.name = "worldedit:placeholder"
+ swap_node(pos, node)
+ end
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ return worldedit.volume(pos1, pos2)
+end
+
+--- Suppresses all instances of `node_name` in a region defined by positions
+-- `pos1` and `pos2` by non-destructively replacing them with invisible nodes.
+-- @return The number of nodes suppressed.
+function worldedit.suppress(pos1, pos2, node_name)
+ -- Ignore placeholder supression
+ if node_name == "worldedit:placeholder" then
+ return 0
+ end
+
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local nodes = minetest.find_nodes_in_area(pos1, pos2, node_name)
+ local get_node, get_meta, swap_node = minetest.get_node,
+ minetest.get_meta, minetest.swap_node
+ for _, pos in ipairs(nodes) do
+ local node = get_node(pos)
+ -- Save the node's original name
+ get_meta(pos):set_string("worldedit_placeholder", node.name)
+ -- Swap in placeholder node
+ node.name = "worldedit:placeholder"
+ swap_node(pos, node)
+ end
+ return #nodes
+end
+
+--- Highlights all instances of `node_name` in a region defined by positions
+-- `pos1` and `pos2` by non-destructively hiding all other nodes.
+-- @return The number of nodes found.
+function worldedit.highlight(pos1, pos2, node_name)
+ pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local pos = {x=pos1.x, y=0, z=0}
+ local get_node, get_meta, swap_node = minetest.get_node,
+ minetest.get_meta, minetest.swap_node
+ local count = 0
+ while pos.x <= pos2.x do
+ pos.y = pos1.y
+ while pos.y <= pos2.y do
+ pos.z = pos1.z
+ while pos.z <= pos2.z do
+ local node = get_node(pos)
+ if node.name == node_name then -- Node found
+ count = count + 1
+ elseif node.name ~= "worldedit:placeholder" then -- Hide other nodes
+ -- Save the node's original name
+ get_meta(pos):set_string("worldedit_placeholder", node.name)
+ -- Swap in placeholder node
+ node.name = "worldedit:placeholder"
+ swap_node(pos, node)
+ end
+ pos.z = pos.z + 1
+ end
+ pos.y = pos.y + 1
+ end
+ pos.x = pos.x + 1
+ end
+ return count
+end
+
+-- Restores all nodes hidden with WorldEdit functions in a region defined
+-- by positions `pos1` and `pos2`.
+-- @return The number of nodes restored.
+function worldedit.restore(pos1, pos2)
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ worldedit.keep_loaded(pos1, pos2)
+
+ local nodes = minetest.find_nodes_in_area(pos1, pos2, "worldedit:placeholder")
+ local get_node, get_meta, swap_node = minetest.get_node,
+ minetest.get_meta, minetest.swap_node
+ for _, pos in ipairs(nodes) do
+ local node = get_node(pos)
+ local meta = get_meta(pos)
+ local data = meta:to_table()
+ node.name = data.fields.worldedit_placeholder
+ data.fields.worldedit_placeholder = nil
+ meta:from_table(data)
+ swap_node(pos, node)
+ end
+ return #nodes
+end
+
diff --git a/worldedit/worldedit_commands/depends.txt b/worldedit/worldedit_commands/depends.txt
new file mode 100644
index 0000000..df8caff
--- /dev/null
+++ b/worldedit/worldedit_commands/depends.txt
@@ -0,0 +1 @@
+worldedit \ No newline at end of file
diff --git a/worldedit/worldedit_commands/init.lua b/worldedit/worldedit_commands/init.lua
new file mode 100644
index 0000000..83a127e
--- /dev/null
+++ b/worldedit/worldedit_commands/init.lua
@@ -0,0 +1,1160 @@
+minetest.register_privilege("worldedit", "Can use WorldEdit commands")
+
+worldedit.set_pos = {}
+worldedit.inspect = {}
+
+worldedit.pos1 = {}
+worldedit.pos2 = {}
+if minetest.place_schematic then
+ worldedit.prob_pos = {}
+ worldedit.prob_list = {}
+end
+
+dofile(minetest.get_modpath("worldedit_commands") .. "/mark.lua")
+local safe_region, check_region = dofile(minetest.get_modpath("worldedit_commands") .. "/safe.lua")
+
+local function get_position(name) --position 1 retrieval function for when not using `safe_region`
+ local pos1 = worldedit.pos1[name]
+ if pos1 == nil then
+ worldedit.player_notify(name, "no position 1 selected")
+ end
+ return pos1
+end
+
+local function get_node(name, nodename)
+ local node = worldedit.normalize_nodename(nodename)
+ if not node then
+ worldedit.player_notify(name, "invalid node name: " .. nodename)
+ return nil
+ end
+ return node
+end
+
+function worldedit.player_notify(name, message)
+ minetest.chat_send_player(name, "WorldEdit -!- " .. message, false)
+end
+
+--determines whether `nodename` is a valid node name, returning a boolean
+worldedit.normalize_nodename = function(nodename)
+ nodename = nodename:gsub("^%s*(.-)%s*$", "%1")
+ if nodename == "" then return nil end
+ local fullname = ItemStack({name=nodename}):get_name() --resolve aliases of node names to full names
+ if minetest.registered_nodes[fullname] or fullname == "air" then --directly found node name or alias of nodename
+ return fullname
+ end
+ for key, value in pairs(minetest.registered_nodes) do
+ if key:find(":" .. nodename, 1, true) then --found in mod
+ return key
+ end
+ end
+ nodename = nodename:lower() --lowercase both for case insensitive comparison
+ for key, value in pairs(minetest.registered_nodes) do
+ if value.description:lower() == nodename then --found in description
+ return key
+ end
+ end
+ return nil
+end
+
+-- Determines the axis in which a player is facing, returning an axis ("x", "y", or "z") and the sign (1 or -1)
+function worldedit.player_axis(name)
+ local dir = minetest.get_player_by_name(name):get_look_dir()
+ local x, y, z = math.abs(dir.x), math.abs(dir.y), math.abs(dir.z)
+ if x > y then
+ if x > z then
+ return "x", dir.x > 0 and 1 or -1
+ end
+ elseif y > z then
+ return "y", dir.y > 0 and 1 or -1
+ end
+ return "z", dir.z > 0 and 1 or -1
+end
+
+local function mkdir(path)
+ if minetest.mkdir then
+ minetest.mkdir(path)
+ else
+ os.execute('mkdir "' .. path .. '"')
+ end
+end
+
+local function check_filename(name)
+ return name:find("^[%w%s%^&'@{}%[%],%$=!%-#%(%)%%%.%+~_]+$") ~= nil
+end
+
+
+minetest.register_chatcommand("/about", {
+ params = "",
+ description = "Get information about the mod",
+ func = function(name, param)
+ worldedit.player_notify(name, "WorldEdit " .. worldedit.version_string .. " is available on this server. Type /help to get a list of commands, or get more information at https://github.com/Uberi/MineTest-WorldEdit/")
+ end,
+})
+
+minetest.register_chatcommand("/inspect", {
+ params = "on/off/1/0/true/false/yes/no/enable/disable/<blank>",
+ description = "Enable or disable node inspection",
+ privs = {worldedit=true},
+ func = function(name, param)
+ if param == "on" or param == "1" or param == "true" or param == "yes" or param == "enable" or param == "" then
+ worldedit.inspect[name] = true
+ local axis, sign = worldedit.player_axis(name)
+ worldedit.player_notify(name, string.format("inspector: inspection enabled for %s, currently facing the %s axis",
+ name, axis .. (sign > 0 and "+" or "-")))
+ elseif param == "off" or param == "0" or param == "false" or param == "no" or param == "disable" then
+ worldedit.inspect[name] = nil
+ worldedit.player_notify(name, "inspector: inspection disabled")
+ else
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ end
+ end,
+})
+
+minetest.register_on_punchnode(function(pos, node, puncher)
+ local name = puncher:get_player_name()
+ if worldedit.inspect[name] then
+ if minetest.check_player_privs(name, {worldedit=true}) then
+ local axis, sign = worldedit.player_axis(name)
+ message = string.format("inspector: %s at %s (param1=%d, param2=%d) punched by %s facing the %s axis",
+ node.name, minetest.pos_to_string(pos), node.param1, node.param2, name, axis .. (sign > 0 and "+" or "-"))
+ else
+ message = "inspector: worldedit privileges required"
+ end
+ worldedit.player_notify(name, message)
+ end
+end)
+
+minetest.register_chatcommand("/reset", {
+ params = "",
+ description = "Reset the region so that it is empty",
+ privs = {worldedit=true},
+ func = function(name, param)
+ worldedit.pos1[name] = nil
+ worldedit.pos2[name] = nil
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+ worldedit.set_pos[name] = nil
+ worldedit.player_notify(name, "region reset")
+ end,
+})
+
+minetest.register_chatcommand("/mark", {
+ params = "",
+ description = "Show markers at the region positions",
+ privs = {worldedit=true},
+ func = function(name, param)
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+ worldedit.player_notify(name, "region marked")
+ end,
+})
+
+minetest.register_chatcommand("/unmark", {
+ params = "",
+ description = "Hide markers if currently shown",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ worldedit.pos1[name] = nil
+ worldedit.pos2[name] = nil
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+ worldedit.pos1[name] = pos1
+ worldedit.pos2[name] = pos2
+ worldedit.player_notify(name, "region unmarked")
+ end,
+})
+
+minetest.register_chatcommand("/pos1", {
+ params = "",
+ description = "Set WorldEdit region position 1 to the player's location",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos = minetest.get_player_by_name(name):getpos()
+ pos.x, pos.y, pos.z = math.floor(pos.x + 0.5), math.floor(pos.y + 0.5), math.floor(pos.z + 0.5)
+ worldedit.pos1[name] = pos
+ worldedit.mark_pos1(name)
+ worldedit.player_notify(name, "position 1 set to " .. minetest.pos_to_string(pos))
+ end,
+})
+
+minetest.register_chatcommand("/pos2", {
+ params = "",
+ description = "Set WorldEdit region position 2 to the player's location",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos = minetest.get_player_by_name(name):getpos()
+ pos.x, pos.y, pos.z = math.floor(pos.x + 0.5), math.floor(pos.y + 0.5), math.floor(pos.z + 0.5)
+ worldedit.pos2[name] = pos
+ worldedit.mark_pos2(name)
+ worldedit.player_notify(name, "position 2 set to " .. minetest.pos_to_string(pos))
+ end,
+})
+
+minetest.register_chatcommand("/p", {
+ params = "set/set1/set2/get",
+ description = "Set WorldEdit region, WorldEdit position 1, or WorldEdit position 2 by punching nodes, or display the current WorldEdit region",
+ privs = {worldedit=true},
+ func = function(name, param)
+ if param == "set" then --set both WorldEdit positions
+ worldedit.set_pos[name] = "pos1"
+ worldedit.player_notify(name, "select positions by punching two nodes")
+ elseif param == "set1" then --set WorldEdit position 1
+ worldedit.set_pos[name] = "pos1only"
+ worldedit.player_notify(name, "select position 1 by punching a node")
+ elseif param == "set2" then --set WorldEdit position 2
+ worldedit.set_pos[name] = "pos2"
+ worldedit.player_notify(name, "select position 2 by punching a node")
+ elseif param == "get" then --display current WorldEdit positions
+ if worldedit.pos1[name] ~= nil then
+ worldedit.player_notify(name, "position 1: " .. minetest.pos_to_string(worldedit.pos1[name]))
+ else
+ worldedit.player_notify(name, "position 1 not set")
+ end
+ if worldedit.pos2[name] ~= nil then
+ worldedit.player_notify(name, "position 2: " .. minetest.pos_to_string(worldedit.pos2[name]))
+ else
+ worldedit.player_notify(name, "position 2 not set")
+ end
+ else
+ worldedit.player_notify(name, "unknown subcommand: " .. param)
+ end
+ end,
+})
+
+minetest.register_chatcommand("/fixedpos", {
+ params = "set1/set2 x y z",
+ description = "Set a WorldEdit region position to the position at (<x>, <y>, <z>)",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local found, _, flag, x, y, z = param:find("^(set[12])%s+([+-]?%d+)%s+([+-]?%d+)%s+([+-]?%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ local pos = {x=tonumber(x), y=tonumber(y), z=tonumber(z)}
+ if flag == "set1" then
+ worldedit.pos1[name] = pos
+ worldedit.mark_pos1(name)
+ worldedit.player_notify(name, "position 1 set to " .. minetest.pos_to_string(pos))
+ else --flag == "set2"
+ worldedit.pos2[name] = pos
+ worldedit.mark_pos2(name)
+ worldedit.player_notify(name, "position 2 set to " .. minetest.pos_to_string(pos))
+ end
+ end,
+})
+
+minetest.register_on_punchnode(function(pos, node, puncher)
+ local name = puncher:get_player_name()
+ if name ~= "" and worldedit.set_pos[name] ~= nil then --currently setting position
+ if worldedit.set_pos[name] == "pos1" then --setting position 1
+ worldedit.pos1[name] = pos
+ worldedit.mark_pos1(name)
+ worldedit.set_pos[name] = "pos2" --set position 2 on the next invocation
+ worldedit.player_notify(name, "position 1 set to " .. minetest.pos_to_string(pos))
+ elseif worldedit.set_pos[name] == "pos1only" then --setting position 1 only
+ worldedit.pos1[name] = pos
+ worldedit.mark_pos1(name)
+ worldedit.set_pos[name] = nil --finished setting positions
+ worldedit.player_notify(name, "position 1 set to " .. minetest.pos_to_string(pos))
+ elseif worldedit.set_pos[name] == "pos2" then --setting position 2
+ worldedit.pos2[name] = pos
+ worldedit.mark_pos2(name)
+ worldedit.set_pos[name] = nil --finished setting positions
+ worldedit.player_notify(name, "position 2 set to " .. minetest.pos_to_string(pos))
+ elseif worldedit.set_pos[name] == "prob" then --setting Minetest schematic node probabilities
+ worldedit.prob_pos[name] = pos
+ minetest.show_formspec(puncher:get_player_name(), "prob_val_enter", "field[text;;]")
+ end
+ end
+end)
+
+minetest.register_chatcommand("/volume", {
+ params = "",
+ description = "Display the volume of the current WorldEdit region",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ if pos1 == nil or pos2 == nil then
+ worldedit.player_notify(name, "no region selected")
+ return nil
+ end
+
+ local volume = worldedit.volume(pos1, pos2)
+ local abs = math.abs
+ worldedit.player_notify(name, "current region has a volume of " .. volume .. " nodes ("
+ .. abs(pos2.x - pos1.x) + 1 .. "*"
+ .. abs(pos2.y - pos1.y) + 1 .. "*"
+ .. abs(pos2.z - pos1.z) + 1 .. ")")
+ end,
+})
+
+minetest.register_chatcommand("/deleteblocks", {
+ params = "",
+ description = "remove all MapBlocks (16x16x16) containing the selected area from the map",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ local success = minetest.delete_area(pos1, pos2)
+ if success then
+ worldedit.player_notify(name, "Area deleted.")
+ else
+ worldedit.player_notify(name, "There was an error during deletion of the area.")
+ end
+ end),
+})
+
+minetest.register_chatcommand("/set", {
+ params = "<node>",
+ description = "Set the current WorldEdit region to <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local node = get_node(name, param)
+ if not node then
+ worldedit.player_notify(name, "Could not identify node \"" .. param .. "\"")
+ return
+ end
+
+ local count = worldedit.set(worldedit.pos1[name], worldedit.pos2[name], node)
+ worldedit.player_notify(name, count .. " nodes set")
+ end, check_region),
+})
+
+minetest.register_chatcommand("/mix", {
+ params = "<node1> ...",
+ description = "Fill the current WorldEdit region with a random mix of <node1>, ...",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local nodes = {}
+ for nodename in param:gmatch("[^%s]+") do
+ local node = get_node(name, nodename)
+ if not node then
+ worldedit.player_notify(name, "Could not identify node \"" .. name .. "\"")
+ return
+ end
+ nodes[#nodes + 1] = node
+ end
+
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ local count = worldedit.set(pos1, pos2, nodes)
+ worldedit.player_notify(name, count .. " nodes set")
+ end, check_region),
+})
+
+local check_replace = function(name, param)
+ local found, _, searchnode, replacenode = param:find("^([^%s]+)%s+(.+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ local newsearchnode = worldedit.normalize_nodename(searchnode)
+ if not newsearchnode then
+ worldedit.player_notify(name, "invalid search node name: " .. searchnode)
+ return nil
+ end
+ local newreplacenode = worldedit.normalize_nodename(replacenode)
+ if not newreplacenode then
+ worldedit.player_notify(name, "invalid replace node name: " .. replacenode)
+ return nil
+ end
+ return check_region(name, param)
+end
+
+minetest.register_chatcommand("/replace", {
+ params = "<search node> <replace node>",
+ description = "Replace all instances of <search node> with <replace node> in the current WorldEdit region",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, search_node, replace_node = param:find("^([^%s]+)%s+(.+)$")
+ local norm_search_node = worldedit.normalize_nodename(search_node)
+ local norm_replace_node = worldedit.normalize_nodename(replace_node)
+ local count = worldedit.replace(worldedit.pos1[name], worldedit.pos2[name],
+ norm_search_node, norm_replace_node)
+ worldedit.player_notify(name, count .. " nodes replaced")
+ end, check_replace),
+})
+
+minetest.register_chatcommand("/replaceinverse", {
+ params = "<search node> <replace node>",
+ description = "Replace all nodes other than <search node> with <replace node> in the current WorldEdit region",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, search_node, replace_node = param:find("^([^%s]+)%s+(.+)$")
+ local norm_search_node = worldedit.normalize_nodename(search_node)
+ local norm_replace_node = worldedit.normalize_nodename(replace_node)
+ local count = worldedit.replace(worldedit.pos1[name], worldedit.pos2[name],
+ norm_search_node, norm_replace_node, true)
+ worldedit.player_notify(name, count .. " nodes replaced")
+ end, check_replace),
+})
+
+local check_sphere = function(name, param)
+ if worldedit.pos1[name] == nil then
+ worldedit.player_notify(name, "no position 1 selected")
+ return nil
+ end
+ local found, _, radius, nodename = param:find("^(%d+)%s+(.+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ local node = get_node(name, nodename)
+ if not node then return nil end
+ return math.ceil((4 * math.pi * (tonumber(radius) ^ 3)) / 3) --volume of sphere
+end
+
+minetest.register_chatcommand("/hollowsphere", {
+ params = "<radius> <node>",
+ description = "Add hollow sphere centered at WorldEdit position 1 with radius <radius>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, radius, nodename = param:find("^(%d+)%s+(.+)$")
+ local node = get_node(name, nodename)
+ local count = worldedit.sphere(worldedit.pos1[name], tonumber(radius), node, true)
+ worldedit.player_notify(name, count .. " nodes added")
+ end, check_sphere),
+})
+
+minetest.register_chatcommand("/sphere", {
+ params = "<radius> <node>",
+ description = "Add sphere centered at WorldEdit position 1 with radius <radius>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, radius, nodename = param:find("^(%d+)%s+(.+)$")
+ local node = get_node(name, nodename)
+ local count = worldedit.sphere(worldedit.pos1[name], tonumber(radius), node)
+ worldedit.player_notify(name, count .. " nodes added")
+ end, check_sphere),
+})
+
+local check_dome = function(name, param)
+ if worldedit.pos1[name] == nil then
+ worldedit.player_notify(name, "no position 1 selected")
+ return nil
+ end
+ local found, _, radius, nodename = param:find("^(%d+)%s+(.+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ local node = get_node(name, nodename)
+ if not node then return nil end
+ return math.ceil((2 * math.pi * (tonumber(radius) ^ 3)) / 3) --volume of dome
+end
+
+minetest.register_chatcommand("/hollowdome", {
+ params = "<radius> <node>",
+ description = "Add hollow dome centered at WorldEdit position 1 with radius <radius>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, radius, nodename = param:find("^(%d+)%s+(.+)$")
+ local node = get_node(name, nodename)
+ local count = worldedit.dome(worldedit.pos1[name], tonumber(radius), node, true)
+ worldedit.player_notify(name, count .. " nodes added")
+ end, check_dome),
+})
+
+minetest.register_chatcommand("/dome", {
+ params = "<radius> <node>",
+ description = "Add dome centered at WorldEdit position 1 with radius <radius>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, radius, nodename = param:find("^(%d+)%s+(.+)$")
+ local node = get_node(name, nodename)
+ local count = worldedit.dome(worldedit.pos1[name], tonumber(radius), node)
+ worldedit.player_notify(name, count .. " nodes added")
+ end, check_dome),
+})
+
+local check_cylinder = function(name, param)
+ if worldedit.pos1[name] == nil then
+ worldedit.player_notify(name, "no position 1 selected")
+ return nil
+ end
+ local found, _, axis, length, radius, nodename = param:find("^([xyz%?])%s+([+-]?%d+)%s+(%d+)%s+(.+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ local node = get_node(name, nodename)
+ if not node then return nil end
+ return math.ceil(math.pi * (tonumber(radius) ^ 2) * tonumber(length))
+end
+
+minetest.register_chatcommand("/hollowcylinder", {
+ params = "x/y/z/? <length> <radius> <node>",
+ description = "Add hollow cylinder at WorldEdit position 1 along the x/y/z/? axis with length <length> and radius <radius>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, axis, length, radius, nodename = param:find("^([xyz%?])%s+([+-]?%d+)%s+(%d+)%s+(.+)$")
+ length = tonumber(length)
+ if axis == "?" then
+ axis, sign = worldedit.player_axis(name)
+ length = length * sign
+ end
+ local node = get_node(name, nodename)
+ local count = worldedit.cylinder(worldedit.pos1[name], axis, length, tonumber(radius), node, true)
+ worldedit.player_notify(name, count .. " nodes added")
+ end, check_cylinder),
+})
+
+minetest.register_chatcommand("/cylinder", {
+ params = "x/y/z/? <length> <radius> <node>",
+ description = "Add cylinder at WorldEdit position 1 along the x/y/z/? axis with length <length> and radius <radius>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, axis, length, radius, nodename = param:find("^([xyz%?])%s+([+-]?%d+)%s+(%d+)%s+(.+)$")
+ length = tonumber(length)
+ if axis == "?" then
+ axis, sign = worldedit.player_axis(name)
+ length = length * sign
+ end
+ local node = get_node(name, nodename)
+ local count = worldedit.cylinder(worldedit.pos1[name], axis, length, tonumber(radius), node)
+ worldedit.player_notify(name, count .. " nodes added")
+ end, check_cylinder),
+})
+
+minetest.register_chatcommand("/pyramid", {
+ params = "x/y/z/? <height> <node>",
+ description = "Add pyramid centered at WorldEdit position 1 along the x/y/z/? axis with height <height>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, axis, height, nodename = param:find("^([xyz%?])%s+([+-]?%d+)%s+(.+)$")
+ height = tonumber(height)
+ if axis == "?" then
+ axis, sign = worldedit.player_axis(name)
+ height = height * sign
+ end
+ local node = get_node(name, nodename)
+ local count = worldedit.pyramid(worldedit.pos1[name], axis, height, node)
+ worldedit.player_notify(name, count .. " nodes added")
+ end,
+ function(name, param)
+ if worldedit.pos1[name] == nil then
+ worldedit.player_notify(name, "no position 1 selected")
+ return nil
+ end
+ local found, _, axis, height, nodename = param:find("^([xyz%?])%s+([+-]?%d+)%s+(.+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ local node = get_node(name, nodename)
+ if not node then return nil end
+ height = tonumber(height)
+ return math.ceil(((height * 2 + 1) ^ 2) * height / 3)
+ end),
+})
+
+minetest.register_chatcommand("/spiral", {
+ params = "<length> <height> <space> <node>",
+ description = "Add spiral centered at WorldEdit position 1 with side length <length>, height <height>, space between walls <space>, composed of <node>",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, length, height, space, nodename = param:find("^(%d+)%s+(%d+)%s+(%d+)%s+(.+)$")
+ local node = get_node(name, nodename)
+ local count = worldedit.spiral(worldedit.pos1[name], tonumber(length), tonumber(height), tonumber(space), node)
+ worldedit.player_notify(name, count .. " nodes added")
+ end,
+ function(name, param)
+ if worldedit.pos1[name] == nil then
+ worldedit.player_notify(name, "no position 1 selected")
+ return nil
+ end
+ local found, _, length, height, space, nodename = param:find("^(%d+)%s+(%d+)%s+(%d+)%s+(.+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ local node = get_node(name, nodename)
+ if not node then return nil end
+ return check_region(name, param)
+ end),
+})
+
+minetest.register_chatcommand("/copy", {
+ params = "x/y/z/? <amount>",
+ description = "Copy the current WorldEdit region along the x/y/z/? axis by <amount> nodes",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, axis, amount = param:find("^([xyz%?])%s+([+-]?%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ amount = tonumber(amount)
+ if axis == "?" then
+ axis, sign = worldedit.player_axis(name)
+ amount = amount * sign
+ end
+
+ local count = worldedit.copy(worldedit.pos1[name], worldedit.pos2[name], axis, amount)
+ worldedit.player_notify(name, count .. " nodes copied")
+ end,
+ function(name, param)
+ local volume = check_region(name, param)
+ return volume and volume * 2 or volume
+ end),
+})
+
+minetest.register_chatcommand("/move", {
+ params = "x/y/z/? <amount>",
+ description = "Move the current WorldEdit region along the x/y/z/? axis by <amount> nodes",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ local found, _, axis, amount = param:find("^([xyz%?])%s+([+-]?%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ amount = tonumber(amount)
+ if axis == "?" then
+ axis, sign = worldedit.player_axis(name)
+ amount = amount * sign
+ end
+
+ local count = worldedit.move(pos1, pos2, axis, amount)
+
+ pos1[axis] = pos1[axis] + amount
+ pos2[axis] = pos2[axis] + amount
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+ worldedit.player_notify(name, count .. " nodes moved")
+ end, check_region),
+})
+
+minetest.register_chatcommand("/stack", {
+ params = "x/y/z/? <count>",
+ description = "Stack the current WorldEdit region along the x/y/z/? axis <count> times",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, axis, repetitions = param:find("^([xyz%?])%s+([+-]?%d+)$")
+ repetitions = tonumber(repetitions)
+ if axis == "?" then
+ axis, sign = worldedit.player_axis(name)
+ repetitions = repetitions * sign
+ end
+ local count = worldedit.stack(worldedit.pos1[name], worldedit.pos2[name], axis, repetitions)
+ worldedit.player_notify(name, count .. " nodes stacked")
+ end,
+ function(name, param)
+ local found, _, axis, repetitions = param:find("^([xyz%?])%s+([+-]?%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ local count = check_region(name, param)
+ if count then return (tonumber(repetitions) + 1) * count end
+ return nil
+ end),
+})
+
+minetest.register_chatcommand("/stack2", {
+ params = "<count> <x> <y> <z>",
+ description = "Stack the current WorldEdit region <count> times by offset <x>, <y>, <z>",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ if pos1 == nil or pos2 == nil then
+ worldedit.player_notify(name, "Select a position first!")
+ return
+ end
+ local repetitions, incs = param:match("(%d+)%s*(.+)")
+ if repetitions == nil then
+ worldedit.player_notify(name, "invalid count: " .. param)
+ return
+ end
+ repetitions = tonumber(repetitions)
+
+ local x, y, z = incs:match("([+-]?%d+) ([+-]?%d+) ([+-]?%d+)")
+ if x == nil then
+ worldedit.player_notify(name, "invalid increments: " .. param)
+ return
+ end
+ x, y, z = tonumber(x), tonumber(y), tonumber(z)
+
+ local count = worldedit.volume(pos1, pos2) * repetitions
+
+ return safe_region(function()
+ worldedit.stack2(pos1, pos2, {x=x, y=y, z=z}, repetitions,
+ function() worldedit.player_notify(name, count .. " nodes stacked") end)
+ end, function()
+ return count
+ end)(name,param) -- more hax --wip: clean this up a little bit
+ end
+})
+
+
+minetest.register_chatcommand("/stretch", {
+ params = "<stretchx> <stretchy> <stretchz>",
+ description = "Scale the current WorldEdit positions and region by a factor of <stretchx>, <stretchy>, <stretchz> along the X, Y, and Z axes, repectively, with position 1 as the origin",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ local found, _, stretchx, stretchy, stretchz = param:find("^(%d+)%s+(%d+)%s+(%d+)$")
+ stretchx, stretchy, stretchz = tonumber(stretchx), tonumber(stretchy), tonumber(stretchz)
+ local count, pos1, pos2 = worldedit.stretch(pos1, pos2, stretchx, stretchy, stretchz)
+
+ --reset markers to scaled positions
+ worldedit.pos1[name] = pos1
+ worldedit.pos2[name] = pos2
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+
+ worldedit.player_notify(name, count .. " nodes stretched")
+ end,
+ function(name, param)
+ local found, _, stretchx, stretchy, stretchz = param:find("^(%d+)%s+(%d+)%s+(%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ stretchx, stretchy, stretchz = tonumber(stretchx), tonumber(stretchy), tonumber(stretchz)
+ if stretchx == 0 or stretchy == 0 or stretchz == 0 then
+ worldedit.player_notify(name, "invalid scaling factors: " .. param)
+ end
+ local count = check_region(name, param)
+ if count then return tonumber(stretchx) * tonumber(stretchy) * tonumber(stretchz) * count end
+ return nil
+ end),
+})
+
+minetest.register_chatcommand("/transpose", {
+ params = "x/y/z/? x/y/z/?",
+ description = "Transpose the current WorldEdit region along the x/y/z/? and x/y/z/? axes",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ local found, _, axis1, axis2 = param:find("^([xyz%?])%s+([xyz%?])$")
+ if axis1 == "?" then axis1 = worldedit.player_axis(name) end
+ if axis2 == "?" then axis2 = worldedit.player_axis(name) end
+ local count, pos1, pos2 = worldedit.transpose(pos1, pos2, axis1, axis2)
+
+ --reset markers to transposed positions
+ worldedit.pos1[name] = pos1
+ worldedit.pos2[name] = pos2
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+
+ worldedit.player_notify(name, count .. " nodes transposed")
+ end,
+ function(name, param)
+ local found, _, axis1, axis2 = param:find("^([xyz%?])%s+([xyz%?])$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ if axis1 == axis2 then
+ worldedit.player_notify(name, "invalid usage: axes must be different")
+ return nil
+ end
+ return check_region(name, param)
+ end),
+})
+
+minetest.register_chatcommand("/flip", {
+ params = "x/y/z/?",
+ description = "Flip the current WorldEdit region along the x/y/z/? axis",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ if param == "?" then param = worldedit.player_axis(name) end
+ local count = worldedit.flip(worldedit.pos1[name], worldedit.pos2[name], param)
+ worldedit.player_notify(name, count .. " nodes flipped")
+ end,
+ function(name, param)
+ if param ~= "x" and param ~= "y" and param ~= "z" and param ~= "?" then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ return check_region(name, param)
+ end),
+})
+
+minetest.register_chatcommand("/rotate", {
+ params = "<axis> <angle>",
+ description = "Rotate the current WorldEdit region around the axis <axis> by angle <angle> (90 degree increment)",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ local found, _, axis, angle = param:find("^([xyz%?])%s+([+-]?%d+)$")
+ if axis == "?" then axis = worldedit.player_axis(name) end
+ local count, pos1, pos2 = worldedit.rotate(pos1, pos2, axis, angle)
+
+ --reset markers to rotated positions
+ worldedit.pos1[name] = pos1
+ worldedit.pos2[name] = pos2
+ worldedit.mark_pos1(name)
+ worldedit.mark_pos2(name)
+
+ worldedit.player_notify(name, count .. " nodes rotated")
+ end,
+ function(name, param)
+ local found, _, axis, angle = param:find("^([xyz%?])%s+([+-]?%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ if angle % 90 ~= 0 then
+ worldedit.player_notify(name, "invalid usage: angle must be multiple of 90")
+ return nil
+ end
+ return check_region(name, param)
+ end),
+})
+
+minetest.register_chatcommand("/orient", {
+ params = "<angle>",
+ description = "Rotate oriented nodes in the current WorldEdit region around the Y axis by angle <angle> (90 degree increment)",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local found, _, angle = param:find("^([+-]?%d+)$")
+ local count = worldedit.orient(worldedit.pos1[name], worldedit.pos2[name], angle)
+ worldedit.player_notify(name, count .. " nodes oriented")
+ end,
+ function(name, param)
+ local found, _, angle = param:find("^([+-]?%d+)$")
+ if found == nil then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return nil
+ end
+ if angle % 90 ~= 0 then
+ worldedit.player_notify(name, "invalid usage: angle must be multiple of 90")
+ return nil
+ end
+ return check_region(name, param)
+ end),
+})
+
+minetest.register_chatcommand("/fixlight", {
+ params = "",
+ description = "Fix the lighting in the current WorldEdit region",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local count = worldedit.fixlight(worldedit.pos1[name], worldedit.pos2[name])
+ worldedit.player_notify(name, count .. " nodes updated")
+ end),
+})
+
+minetest.register_chatcommand("/hide", {
+ params = "",
+ description = "Hide all nodes in the current WorldEdit region non-destructively",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local count = worldedit.hide(worldedit.pos1[name], worldedit.pos2[name])
+ worldedit.player_notify(name, count .. " nodes hidden")
+ end),
+})
+
+minetest.register_chatcommand("/suppress", {
+ params = "<node>",
+ description = "Suppress all <node> in the current WorldEdit region non-destructively",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local node = get_node(name, param)
+ local count = worldedit.suppress(worldedit.pos1[name], worldedit.pos2[name], node)
+ worldedit.player_notify(name, count .. " nodes suppressed")
+ end, check_region),
+})
+
+minetest.register_chatcommand("/highlight", {
+ params = "<node>",
+ description = "Highlight <node> in the current WorldEdit region by hiding everything else non-destructively",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local node = get_node(name, param)
+ local count = worldedit.highlight(worldedit.pos1[name], worldedit.pos2[name], node)
+ worldedit.player_notify(name, count .. " nodes highlighted")
+ end, check_region),
+})
+
+minetest.register_chatcommand("/restore", {
+ params = "",
+ description = "Restores nodes hidden with WorldEdit in the current WorldEdit region",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local count = worldedit.restore(worldedit.pos1[name], worldedit.pos2[name])
+ worldedit.player_notify(name, count .. " nodes restored")
+ end),
+})
+
+minetest.register_chatcommand("/save", {
+ params = "<file>",
+ description = "Save the current WorldEdit region to \"(world folder)/schems/<file>.we\"",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ if param == "" then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ if not check_filename(param) then
+ worldedit.player_notify(name, "Disallowed file name: " .. param)
+ return
+ end
+ local result, count = worldedit.serialize(worldedit.pos1[name],
+ worldedit.pos2[name])
+
+ local path = minetest.get_worldpath() .. "/schems"
+ -- Create directory if it does not already exist
+ mkdir(path)
+
+ local filename = path .. "/" .. param .. ".we"
+ local file, err = io.open(filename, "wb")
+ if err ~= nil then
+ worldedit.player_notify(name, "Could not save file to \"" .. filename .. "\"")
+ return
+ end
+ file:write(result)
+ file:flush()
+ file:close()
+
+ worldedit.player_notify(name, count .. " nodes saved")
+ end),
+})
+
+minetest.register_chatcommand("/allocate", {
+ params = "<file>",
+ description = "Set the region defined by nodes from \"(world folder)/schems/<file>.we\" as the current WorldEdit region",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos = get_position(name)
+ if pos == nil then return end
+
+ if param == "" then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ if not check_filename(param) then
+ worldedit.player_notify(name, "Disallowed file name: " .. param)
+ return
+ end
+
+ local filename = minetest.get_worldpath() .. "/schems/" .. param .. ".we"
+ local file, err = io.open(filename, "rb")
+ if err ~= nil then
+ worldedit.player_notify(name, "could not open file \"" .. filename .. "\"")
+ return
+ end
+ local value = file:read("*a")
+ file:close()
+
+ local version = worldedit.read_header(value)
+ if version == 0 then
+ worldedit.player_notify(name, "File is invalid!")
+ return
+ elseif version > worldedit.LATEST_SERIALIZATION_VERSION then
+ worldedit.player_notify(name, "File was created with newer version of WorldEdit!")
+ end
+ local nodepos1, nodepos2, count = worldedit.allocate(pos, value)
+
+ worldedit.pos1[name] = nodepos1
+ worldedit.mark_pos1(name)
+ worldedit.pos2[name] = nodepos2
+ worldedit.mark_pos2(name)
+
+ worldedit.player_notify(name, count .. " nodes allocated")
+ end,
+})
+
+minetest.register_chatcommand("/load", {
+ params = "<file>",
+ description = "Load nodes from \"(world folder)/schems/<file>[.we[m]]\" with position 1 of the current WorldEdit region as the origin",
+ privs = {worldedit=true},
+ func = function(name, param)
+ local pos = get_position(name)
+ if pos == nil then return end
+
+ if param == "" then
+ worldedit.player_notify(name, "invalid usage: " .. param)
+ return
+ end
+ if not string.find(param, "^[%w \t.,+-_=!@#$%%^&*()%[%]{};'\"]+$") then
+ worldedit.player_notify(name, "invalid file name: " .. param)
+ return
+ end
+
+ --find the file in the world path
+ local testpaths = {
+ minetest.get_worldpath() .. "/schems/" .. param,
+ minetest.get_worldpath() .. "/schems/" .. param .. ".we",
+ minetest.get_worldpath() .. "/schems/" .. param .. ".wem",
+ }
+ local file, err
+ for index, path in ipairs(testpaths) do
+ file, err = io.open(path, "rb")
+ if not err then
+ break
+ end
+ end
+ if err then
+ worldedit.player_notify(name, "could not open file \"" .. param .. "\"")
+ return
+ end
+ local value = file:read("*a")
+ file:close()
+
+ local version = worldedit.read_header(value)
+ if version == 0 then
+ worldedit.player_notify(name, "File is invalid!")
+ return
+ elseif version > worldedit.LATEST_SERIALIZATION_VERSION then
+ worldedit.player_notify(name, "File was created with newer version of WorldEdit!")
+ return
+ end
+
+ local count = worldedit.deserialize(pos, value)
+
+ worldedit.player_notify(name, count .. " nodes loaded")
+ end,
+})
+
+minetest.register_chatcommand("/lua", {
+ params = "<code>",
+ description = "Executes <code> as a Lua chunk in the global namespace",
+ privs = {worldedit=true, server=true},
+ func = function(name, param)
+ local admin = minetest.setting_get("name")
+ if not admin or not name == admin then
+ worldedit.player_notify(name, "this command can only be run by the server administrator")
+ return
+ end
+ local err = worldedit.lua(param)
+ if err then
+ worldedit.player_notify(name, "code error: " .. err)
+ else
+ worldedit.player_notify(name, "code successfully executed", false)
+ end
+ end,
+})
+
+minetest.register_chatcommand("/luatransform", {
+ params = "<code>",
+ description = "Executes <code> as a Lua chunk in the global namespace with the variable pos available, for each node in the current WorldEdit region",
+ privs = {worldedit=true, server=true},
+ func = safe_region(function(name, param)
+ local admin = minetest.setting_get("name")
+ if not admin or not name == admin then
+ worldedit.player_notify(name, "this command can only be run by the server administrator")
+ return
+ end
+
+ local err = worldedit.luatransform(worldedit.pos1[name], worldedit.pos2[name], param)
+ if err then
+ worldedit.player_notify(name, "code error: " .. err, false)
+ else
+ worldedit.player_notify(name, "code successfully executed", false)
+ end
+ end),
+})
+
+minetest.register_chatcommand("/mtschemcreate", {
+ params = "<file>",
+ description = "Save the current WorldEdit region using the Minetest "..
+ "Schematic format to \"(world folder)/schems/<filename>.mts\"",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ if param == nil then
+ worldedit.player_notify(name, "No filename specified")
+ return
+ end
+ if not check_filename(param) then
+ worldedit.player_notify(name, "Disallowed file name: " .. param)
+ return
+ end
+
+ local path = minetest.get_worldpath() .. "/schems"
+ -- Create directory if it does not already exist
+ mkdir(path)
+
+ local filename = path .. "/" .. param .. ".mts"
+ local ret = minetest.create_schematic(worldedit.pos1[name],
+ worldedit.pos2[name], worldedit.prob_list[name],
+ filename)
+ if ret == nil then
+ worldedit.player_notify(name, "Failed to create Minetest schematic", false)
+ else
+ worldedit.player_notify(name, "Saved Minetest schematic to " .. param, false)
+ end
+ worldedit.prob_list[name] = {}
+ end),
+})
+
+minetest.register_chatcommand("/mtschemplace", {
+ params = "<file>",
+ description = "Load nodes from \"(world folder)/schems/<file>.mts\" with position 1 of the current WorldEdit region as the origin",
+ privs = {worldedit=true},
+ func = function(name, param)
+ if param == "" then
+ worldedit.player_notify(name, "no filename specified")
+ return
+ end
+ if not check_filename(param) then
+ worldedit.player_notify(name, "Disallowed file name: " .. param)
+ return
+ end
+
+ local pos = get_position(name)
+ if pos == nil then return end
+
+ local path = minetest.get_worldpath() .. "/schems/" .. param .. ".mts"
+ if minetest.place_schematic(pos, path) == nil then
+ worldedit.player_notify(name, "failed to place Minetest schematic", false)
+ else
+ worldedit.player_notify(name, "placed Minetest schematic " .. param ..
+ " at " .. minetest.pos_to_string(pos), false)
+ end
+ end,
+})
+
+minetest.register_chatcommand("/mtschemprob", {
+ params = "start/finish/get",
+ description = "Begins node probability entry for Minetest schematics, gets the nodes that have probabilities set, or ends node probability entry",
+ privs = {worldedit=true},
+ func = function(name, param)
+ if param == "start" then --start probability setting
+ worldedit.set_pos[name] = "prob"
+ worldedit.prob_list[name] = {}
+ worldedit.player_notify(name, "select Minetest schematic probability values by punching nodes")
+ elseif param == "finish" then --finish probability setting
+ worldedit.set_pos[name] = nil
+ worldedit.player_notify(name, "finished Minetest schematic probability selection")
+ elseif param == "get" then --get all nodes that had probabilities set on them
+ local text = ""
+ local problist = worldedit.prob_list[name]
+ if problist == nil then
+ return
+ end
+ for k,v in pairs(problist) do
+ local prob = math.floor(((v["prob"] / 256) * 100) * 100 + 0.5) / 100
+ text = text .. minetest.pos_to_string(v["pos"]) .. ": " .. prob .. "% | "
+ end
+ worldedit.player_notify(name, "currently set node probabilities:")
+ worldedit.player_notify(name, text)
+ else
+ worldedit.player_notify(name, "unknown subcommand: " .. param)
+ end
+ end,
+})
+
+minetest.register_on_player_receive_fields(
+ function(player, formname, fields)
+ if (formname == "prob_val_enter") and (fields.text ~= "") then
+ local name = player:get_player_name()
+ local prob_entry = {pos=worldedit.prob_pos[name], prob=tonumber(fields.text)}
+ local index = table.getn(worldedit.prob_list[name]) + 1
+ worldedit.prob_list[name][index] = prob_entry
+ end
+ end
+)
+
+minetest.register_chatcommand("/clearobjects", {
+ params = "",
+ description = "Clears all objects within the WorldEdit region",
+ privs = {worldedit=true},
+ func = safe_region(function(name, param)
+ local count = worldedit.clear_objects(worldedit.pos1[name], worldedit.pos2[name])
+ worldedit.player_notify(name, count .. " objects cleared")
+ end),
+})
diff --git a/worldedit/worldedit_commands/mark.lua b/worldedit/worldedit_commands/mark.lua
new file mode 100644
index 0000000..4062cae
--- /dev/null
+++ b/worldedit/worldedit_commands/mark.lua
@@ -0,0 +1,162 @@
+worldedit.marker1 = {}
+worldedit.marker2 = {}
+worldedit.marker_region = {}
+
+--marks worldedit region position 1
+worldedit.mark_pos1 = function(name)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+
+ if pos1 ~= nil then
+ --make area stay loaded
+ local manip = minetest.get_voxel_manip()
+ manip:read_from_map(pos1, pos1)
+ end
+ if worldedit.marker1[name] ~= nil then --marker already exists
+ worldedit.marker1[name]:remove() --remove marker
+ worldedit.marker1[name] = nil
+ end
+ if pos1 ~= nil then
+ --add marker
+ worldedit.marker1[name] = minetest.add_entity(pos1, "worldedit:pos1")
+ if worldedit.marker1[name] ~= nil then
+ worldedit.marker1[name]:get_luaentity().player_name = name
+ end
+ end
+ worldedit.mark_region(name)
+end
+
+--marks worldedit region position 2
+worldedit.mark_pos2 = function(name)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+
+ if pos2 ~= nil then
+ --make area stay loaded
+ local manip = minetest.get_voxel_manip()
+ manip:read_from_map(pos2, pos2)
+ end
+ if worldedit.marker2[name] ~= nil then --marker already exists
+ worldedit.marker2[name]:remove() --remove marker
+ worldedit.marker2[name] = nil
+ end
+ if pos2 ~= nil then
+ --add marker
+ worldedit.marker2[name] = minetest.add_entity(pos2, "worldedit:pos2")
+ if worldedit.marker2[name] ~= nil then
+ worldedit.marker2[name]:get_luaentity().player_name = name
+ end
+ end
+ worldedit.mark_region(name)
+end
+
+worldedit.mark_region = function(name)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+
+ if worldedit.marker_region[name] ~= nil then --marker already exists
+ --wip: make the area stay loaded somehow
+ for _, entity in ipairs(worldedit.marker_region[name]) do
+ entity:remove()
+ end
+ worldedit.marker_region[name] = nil
+ end
+ if pos1 ~= nil and pos2 ~= nil then
+ local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+ local thickness = 0.2
+ local sizex, sizey, sizez = (1 + pos2.x - pos1.x) / 2, (1 + pos2.y - pos1.y) / 2, (1 + pos2.z - pos1.z) / 2
+
+ --make area stay loaded
+ local manip = minetest.get_voxel_manip()
+ manip:read_from_map(pos1, pos2)
+
+ local markers = {}
+
+ --XY plane markers
+ for _, z in ipairs({pos1.z - 0.5, pos2.z + 0.5}) do
+ local marker = minetest.add_entity({x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}, "worldedit:region_cube")
+ marker:set_properties({
+ visual_size={x=sizex * 2, y=sizey * 2},
+ collisionbox = {-sizex, -sizey, -thickness, sizex, sizey, thickness},
+ })
+ marker:get_luaentity().player_name = name
+ table.insert(markers, marker)
+ end
+
+ --YZ plane markers
+ for _, x in ipairs({pos1.x - 0.5, pos2.x + 0.5}) do
+ local marker = minetest.add_entity({x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}, "worldedit:region_cube")
+ marker:set_properties({
+ visual_size={x=sizez * 2, y=sizey * 2},
+ collisionbox = {-thickness, -sizey, -sizez, thickness, sizey, sizez},
+ })
+ marker:setyaw(math.pi / 2)
+ marker:get_luaentity().player_name = name
+ table.insert(markers, marker)
+ end
+
+ worldedit.marker_region[name] = markers
+ end
+end
+
+minetest.register_entity(":worldedit:pos1", {
+ initial_properties = {
+ visual = "cube",
+ visual_size = {x=1.1, y=1.1},
+ textures = {"worldedit_pos1.png", "worldedit_pos1.png",
+ "worldedit_pos1.png", "worldedit_pos1.png",
+ "worldedit_pos1.png", "worldedit_pos1.png"},
+ collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
+ physical = false,
+ },
+ on_step = function(self, dtime)
+ if worldedit.marker1[self.player_name] == nil then
+ self.object:remove()
+ end
+ end,
+ on_punch = function(self, hitter)
+ self.object:remove()
+ worldedit.marker1[self.player_name] = nil
+ end,
+})
+
+minetest.register_entity(":worldedit:pos2", {
+ initial_properties = {
+ visual = "cube",
+ visual_size = {x=1.1, y=1.1},
+ textures = {"worldedit_pos2.png", "worldedit_pos2.png",
+ "worldedit_pos2.png", "worldedit_pos2.png",
+ "worldedit_pos2.png", "worldedit_pos2.png"},
+ collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
+ physical = false,
+ },
+ on_step = function(self, dtime)
+ if worldedit.marker2[self.player_name] == nil then
+ self.object:remove()
+ end
+ end,
+ on_punch = function(self, hitter)
+ self.object:remove()
+ worldedit.marker2[self.player_name] = nil
+ end,
+})
+
+minetest.register_entity(":worldedit:region_cube", {
+ initial_properties = {
+ visual = "upright_sprite",
+ visual_size = {x=1.1, y=1.1},
+ textures = {"worldedit_cube.png"},
+ visual_size = {x=10, y=10},
+ physical = false,
+ },
+ on_step = function(self, dtime)
+ if worldedit.marker_region[self.player_name] == nil then
+ self.object:remove()
+ return
+ end
+ end,
+ on_punch = function(self, hitter)
+ for _, entity in ipairs(worldedit.marker_region[self.player_name]) do
+ entity:remove()
+ end
+ worldedit.marker_region[self.player_name] = nil
+ end,
+})
+
diff --git a/worldedit/worldedit_commands/safe.lua b/worldedit/worldedit_commands/safe.lua
new file mode 100644
index 0000000..e640853
--- /dev/null
+++ b/worldedit/worldedit_commands/safe.lua
@@ -0,0 +1,68 @@
+local safe_region_callback = {}
+local safe_region_param = {}
+
+local function check_region(name, param)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] --obtain positions
+ if pos1 == nil or pos2 == nil then
+ worldedit.player_notify(name, "no region selected")
+ return nil
+ end
+ return worldedit.volume(pos1, pos2)
+end
+
+--`callback` is a callback to run when the user confirms
+--`nodes_needed` is a function accepting `param`, `pos1`, and `pos2` to calculate the number of nodes needed
+local function safe_region(callback, nodes_needed)
+ --default node volume calculation
+ nodes_needed = nodes_needed or check_region
+
+ return function(name, param)
+ --check if the operation applies to a safe number of nodes
+ local count = nodes_needed(name, param)
+ if count == nil then return end --invalid command
+ if count < 10000 then
+ return callback(name, param)
+ end
+
+ --save callback to call later
+ safe_region_callback[name], safe_region_param[name] = callback, param
+ worldedit.player_notify(name, "WARNING: this operation could affect up to " .. count .. " nodes; type //y to continue or //n to cancel")
+ end
+end
+
+minetest.register_chatcommand("/y", {
+ params = "",
+ description = "Confirm a pending operation",
+ func = function(name)
+ local callback, param = safe_region_callback[name], safe_region_param[name]
+ if not callback then
+ worldedit.player_notify(name, "no operation pending")
+ return
+ end
+
+ --obtain positions
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ if pos1 == nil or pos2 == nil then
+ worldedit.player_notify(name, "no region selected")
+ return
+ end
+
+ safe_region_callback[name], safe_region_param[name] = nil, nil --reset pending operation
+ callback(name, param, pos1, pos2)
+ end,
+})
+
+minetest.register_chatcommand("/n", {
+ params = "",
+ description = "Confirm a pending operation",
+ func = function(name)
+ if not safe_region_callback[name] then
+ worldedit.player_notify(name, "no operation pending")
+ return
+ end
+ safe_region_callback[name], safe_region_param[name] = nil, nil
+ end,
+})
+
+return safe_region, check_region
+
diff --git a/worldedit/worldedit_commands/textures/worldedit_cube.png b/worldedit/worldedit_commands/textures/worldedit_cube.png
new file mode 100644
index 0000000..fde36a8
--- /dev/null
+++ b/worldedit/worldedit_commands/textures/worldedit_cube.png
Binary files differ
diff --git a/worldedit/worldedit_commands/textures/worldedit_pos1.png b/worldedit/worldedit_commands/textures/worldedit_pos1.png
new file mode 100644
index 0000000..4c304aa
--- /dev/null
+++ b/worldedit/worldedit_commands/textures/worldedit_pos1.png
Binary files differ
diff --git a/worldedit/worldedit_commands/textures/worldedit_pos2.png b/worldedit/worldedit_commands/textures/worldedit_pos2.png
new file mode 100644
index 0000000..1502f16
--- /dev/null
+++ b/worldedit/worldedit_commands/textures/worldedit_pos2.png
Binary files differ
diff --git a/worldedit/worldedit_gui/depends.txt b/worldedit/worldedit_gui/depends.txt
new file mode 100644
index 0000000..d603ac9
--- /dev/null
+++ b/worldedit/worldedit_gui/depends.txt
@@ -0,0 +1,5 @@
+worldedit
+worldedit_commands
+unified_inventory?
+inventory_plus?
+creative? \ No newline at end of file
diff --git a/worldedit/worldedit_gui/functionality.lua b/worldedit/worldedit_gui/functionality.lua
new file mode 100644
index 0000000..c358a8c
--- /dev/null
+++ b/worldedit/worldedit_gui/functionality.lua
@@ -0,0 +1,707 @@
+--saved state for each player
+local gui_nodename1 = {} --mapping of player names to node names (arbitrary strings may also appear as values)
+local gui_nodename2 = {} --mapping of player names to node names (arbitrary strings may also appear as values)
+local gui_axis1 = {} --mapping of player names to axes (one of 1, 2, 3, or 4, representing the axes in the `axis_indices` table below)
+local gui_axis2 = {} --mapping of player names to axes (one of 1, 2, 3, or 4, representing the axes in the `axis_indices` table below)
+local gui_distance1 = {} --mapping of player names to a distance (arbitrary strings may also appear as values)
+local gui_distance2 = {} --mapping of player names to a distance (arbitrary strings may also appear as values)
+local gui_distance3 = {} --mapping of player names to a distance (arbitrary strings may also appear as values)
+local gui_count1 = {} --mapping of player names to a quantity (arbitrary strings may also appear as values)
+local gui_count2 = {} --mapping of player names to a quantity (arbitrary strings may also appear as values)
+local gui_count3 = {} --mapping of player names to a quantity (arbitrary strings may also appear as values)
+local gui_angle = {} --mapping of player names to an angle (one of 90, 180, 270, representing the angle in degrees clockwise)
+local gui_filename = {} --mapping of player names to file names (arbitrary strings may also appear as values)
+local gui_formspec = {} --mapping of player names to formspecs
+local gui_code = {} --mapping of player names to formspecs
+
+--set default values
+setmetatable(gui_nodename1, {__index = function() return "Cobblestone" end})
+setmetatable(gui_nodename2, {__index = function() return "Stone" end})
+setmetatable(gui_axis1, {__index = function() return 4 end})
+setmetatable(gui_axis2, {__index = function() return 1 end})
+setmetatable(gui_distance1, {__index = function() return "10" end})
+setmetatable(gui_distance2, {__index = function() return "5" end})
+setmetatable(gui_distance3, {__index = function() return "2" end})
+setmetatable(gui_count1, {__index = function() return "3" end})
+setmetatable(gui_count2, {__index = function() return "6" end})
+setmetatable(gui_count3, {__index = function() return "4" end})
+setmetatable(gui_angle, {__index = function() return 90 end})
+setmetatable(gui_filename, {__index = function() return "building" end})
+setmetatable(gui_formspec, {__index = function() return "size[5,5]\nlabel[0,0;Hello, world!]" end})
+setmetatable(gui_code, {__index = function() return "minetest.chat_send_player(\"singleplayer\", \"Hello, world!\")" end})
+
+local axis_indices = {["X axis"]=1, ["Y axis"]=2, ["Z axis"]=3, ["Look direction"]=4}
+local axis_values = {"x", "y", "z", "?"}
+setmetatable(axis_indices, {__index = function () return 4 end})
+setmetatable(axis_values, {__index = function () return "?" end})
+
+local angle_indices = {["90 degrees"]=1, ["180 degrees"]=2, ["270 degrees"]=3}
+local angle_values = {90, 180, 270}
+setmetatable(angle_indices, {__index = function () return 1 end})
+setmetatable(angle_values, {__index = function () return 90 end})
+
+--given multiple sets of privileges, produces a single set of privs that would have the same effect as requiring all of them at the same time
+local combine_privs = function(...)
+ local result = {}
+ for i, privs in ipairs({...}) do
+ for name, value in pairs(privs) do
+ if result[name] ~= nil and result[name] ~= value then --the priv must be both true and false, which can never happen
+ return {__fake_priv_that_nobody_has__=true} --priviledge table that can never be satisfied
+ end
+ result[name] = value
+ end
+ end
+ return result
+end
+
+worldedit.register_gui_function("worldedit_gui_about", {
+ name = "About", privs = minetest.chatcommands["/about"].privs,
+ on_select = function(name)
+ minetest.chatcommands["/about"].func(name, "")
+ end,
+})
+
+worldedit.register_gui_function("worldedit_gui_inspect", {
+ name = "Toggle Inspect", privs = minetest.chatcommands["/inspect"].privs,
+ on_select = function(name)
+ minetest.chatcommands["/inspect"].func(name, worldedit.inspect[name] and "disable" or "enable")
+ end,
+})
+
+worldedit.register_gui_function("worldedit_gui_region", {
+ name = "Get/Set Region", privs = combine_privs(minetest.chatcommands["/p"].privs, minetest.chatcommands["/pos1"].privs, minetest.chatcommands["/pos2"].privs, minetest.chatcommands["/reset"].privs, minetest.chatcommands["/mark"].privs, minetest.chatcommands["/unmark"].privs, minetest.chatcommands["/volume"].privs, minetest.chatcommands["/fixedpos"].privs),
+ get_formspec = function(name)
+ local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
+ return "size[9,7]" .. worldedit.get_formspec_header("worldedit_gui_region") ..
+ "button_exit[0,1;3,0.8;worldedit_gui_p_get;Get Positions]" ..
+ "button_exit[3,1;3,0.8;worldedit_gui_p_set1;Choose Position 1]" ..
+ "button_exit[6,1;3,0.8;worldedit_gui_p_set2;Choose Position 2]" ..
+ "button_exit[0,2;3,0.8;worldedit_gui_pos1;Position 1 Here]" ..
+ "button_exit[3,2;3,0.8;worldedit_gui_pos2;Position 2 Here]" ..
+ "button_exit[6,2;3,0.8;worldedit_gui_reset;Reset Region]" ..
+ "button_exit[0,3;3,0.8;worldedit_gui_mark;Mark Region]" ..
+ "button_exit[3,3;3,0.8;worldedit_gui_unmark;Unmark Region]" ..
+ "button_exit[6,3;3,0.8;worldedit_gui_volume;Region Volume]" ..
+ "label[0,4.7;Position 1]" ..
+ string.format("field[2,5;1.5,0.8;worldedit_gui_fixedpos_pos1x;X ;%s]", pos1 and pos1.x or "") ..
+ string.format("field[3.5,5;1.5,0.8;worldedit_gui_fixedpos_pos1y;Y ;%s]", pos1 and pos1.y or "") ..
+ string.format("field[5,5;1.5,0.8;worldedit_gui_fixedpos_pos1z;Z ;%s]", pos1 and pos1.z or "") ..
+ "button_exit[6.5,4.68;2.5,0.8;worldedit_gui_fixedpos_pos1_submit;Set Position 1]" ..
+ "label[0,6.2;Position 2]" ..
+ string.format("field[2,6.5;1.5,0.8;worldedit_gui_fixedpos_pos2x;X ;%s]", pos2 and pos2.x or "") ..
+ string.format("field[3.5,6.5;1.5,0.8;worldedit_gui_fixedpos_pos2y;Y ;%s]", pos2 and pos2.y or "") ..
+ string.format("field[5,6.5;1.5,0.8;worldedit_gui_fixedpos_pos2z;Z ;%s]", pos2 and pos2.z or "") ..
+ "button_exit[6.5,6.18;2.5,0.8;worldedit_gui_fixedpos_pos2_submit;Set Position 2]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_region", function(name, fields)
+ if fields.worldedit_gui_p_get then
+ minetest.chatcommands["/p"].func(name, "get")
+ return true
+ elseif fields.worldedit_gui_p_set1 then
+ minetest.chatcommands["/p"].func(name, "set1")
+ return true
+ elseif fields.worldedit_gui_p_set2 then
+ minetest.chatcommands["/p"].func(name, "set2")
+ return true
+ elseif fields.worldedit_gui_pos1 then
+ minetest.chatcommands["/pos1"].func(name, "")
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_pos2 then
+ minetest.chatcommands["/pos2"].func(name, "")
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_reset then
+ minetest.chatcommands["/reset"].func(name, "")
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_mark then
+ minetest.chatcommands["/mark"].func(name, "")
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_unmark then
+ minetest.chatcommands["/unmark"].func(name, "")
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_volume then
+ minetest.chatcommands["/volume"].func(name, "")
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_fixedpos_pos1_submit then
+ minetest.chatcommands["/fixedpos"].func(name, string.format("set1 %s %s %s",
+ tostring(fields.worldedit_gui_fixedpos_pos1x),
+ tostring(fields.worldedit_gui_fixedpos_pos1y),
+ tostring(fields.worldedit_gui_fixedpos_pos1z)))
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ elseif fields.worldedit_gui_fixedpos_pos2_submit then
+ minetest.chatcommands["/fixedpos"].func(name, string.format("set2 %s %s %s",
+ tostring(fields.worldedit_gui_fixedpos_pos2x),
+ tostring(fields.worldedit_gui_fixedpos_pos2y),
+ tostring(fields.worldedit_gui_fixedpos_pos2z)))
+ worldedit.show_page(name, "worldedit_gui_region")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_set", {
+ name = "Set Nodes", privs = minetest.chatcommands["/set"].privs,
+ get_formspec = function(name)
+ local node = gui_nodename1[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,3]" .. worldedit.get_formspec_header("worldedit_gui_set") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_set_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_set_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_set_submit;Set Nodes]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_set", function(name, fields)
+ if fields.worldedit_gui_set_search or fields.worldedit_gui_set_submit then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_set_node)
+ worldedit.show_page(name, "worldedit_gui_set")
+ if fields.worldedit_gui_set_submit then
+ minetest.chatcommands["/set"].func(name, gui_nodename1[name])
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_replace", {
+ name = "Replace Nodes", privs = combine_privs(minetest.chatcommands["/replace"].privs, minetest.chatcommands["/replaceinverse"].privs),
+ get_formspec = function(name)
+ local search, replace = gui_nodename1[name], gui_nodename2[name]
+ local search_nodename, replace_nodename = worldedit.normalize_nodename(search), worldedit.normalize_nodename(replace)
+ return "size[6.5,4]" .. worldedit.get_formspec_header("worldedit_gui_replace") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_replace_search;Name;%s]", minetest.formspec_escape(search)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_replace_search_search;Search]" ..
+ (search_nodename and string.format("item_image[5.5,1.1;1,1;%s]", search_nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ string.format("field[0.5,2.5;4,0.8;worldedit_gui_replace_replace;Name;%s]", minetest.formspec_escape(replace)) ..
+ "button[4,2.18;1.5,0.8;worldedit_gui_replace_replace_search;Search]" ..
+ (replace_nodename and string.format("item_image[5.5,2.1;1,1;%s]", replace_nodename)
+ or "image[5.5,2.1;1,1;unknown_node.png]") ..
+ "button_exit[0,3.5;3,0.8;worldedit_gui_replace_submit;Replace Nodes]" ..
+ "button_exit[3.5,3.5;3,0.8;worldedit_gui_replace_submit_inverse;Replace Inverse]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_replace", function(name, fields)
+ if fields.worldedit_gui_replace_search_search or fields.worldedit_gui_replace_replace_search
+ or fields.worldedit_gui_replace_submit or fields.worldedit_gui_replace_submit_inverse then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_replace_search)
+ gui_nodename2[name] = tostring(fields.worldedit_gui_replace_replace)
+ worldedit.show_page(name, "worldedit_gui_replace")
+ if fields.worldedit_gui_replace_submit then
+ minetest.chatcommands["/replace"].func(name, string.format("%s %s", gui_nodename1[name], gui_nodename2[name]))
+ elseif fields.worldedit_gui_replace_submit_inverse then
+ minetest.chatcommands["/replaceinverse"].func(name, string.format("%s %s", gui_nodename1[name], gui_nodename2[name]))
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_sphere_dome", {
+ name = "Sphere/Dome", privs = combine_privs(minetest.chatcommands["/hollowsphere"].privs, minetest.chatcommands["/sphere"].privs, minetest.chatcommands["/hollowdome"].privs, minetest.chatcommands["/dome"].privs),
+ get_formspec = function(name)
+ local node, radius = gui_nodename1[name], gui_distance2[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,5]" .. worldedit.get_formspec_header("worldedit_gui_sphere_dome") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_sphere_dome_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_sphere_dome_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ string.format("field[0.5,2.5;4,0.8;worldedit_gui_sphere_dome_radius;Radius;%s]", minetest.formspec_escape(radius)) ..
+ "button_exit[0,3.5;3,0.8;worldedit_gui_sphere_dome_submit_hollow;Hollow Sphere]" ..
+ "button_exit[3.5,3.5;3,0.8;worldedit_gui_sphere_dome_submit_solid;Solid Sphere]" ..
+ "button_exit[0,4.5;3,0.8;worldedit_gui_sphere_dome_submit_hollow_dome;Hollow Dome]" ..
+ "button_exit[3.5,4.5;3,0.8;worldedit_gui_sphere_dome_submit_solid_dome;Solid Dome]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_sphere_dome", function(name, fields)
+ if fields.worldedit_gui_sphere_dome_search
+ or fields.worldedit_gui_sphere_dome_submit_hollow or fields.worldedit_gui_sphere_dome_submit_solid
+ or fields.worldedit_gui_sphere_dome_submit_hollow_dome or fields.worldedit_gui_sphere_dome_submit_solid_dome then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_sphere_dome_node)
+ gui_distance2[name] = tostring(fields.worldedit_gui_sphere_dome_radius)
+ worldedit.show_page(name, "worldedit_gui_sphere_dome")
+ if fields.worldedit_gui_sphere_dome_submit_hollow then
+ minetest.chatcommands["/hollowsphere"].func(name, string.format("%s %s", gui_distance2[name], gui_nodename1[name]))
+ elseif fields.worldedit_gui_sphere_dome_submit_solid then
+ minetest.chatcommands["/sphere"].func(name, string.format("%s %s", gui_distance2[name], gui_nodename1[name]))
+ elseif fields.worldedit_gui_sphere_dome_submit_hollow_dome then
+ minetest.chatcommands["/hollowdome"].func(name, string.format("%s %s", gui_distance2[name], gui_nodename1[name]))
+ elseif fields.worldedit_gui_sphere_dome_submit_solid_dome then
+ minetest.chatcommands["/dome"].func(name, string.format("%s %s", gui_distance2[name], gui_nodename1[name]))
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_cylinder", {
+ name = "Cylinder", privs = combine_privs(minetest.chatcommands["/hollowcylinder"].privs, minetest.chatcommands["/cylinder"].privs),
+ get_formspec = function(name)
+ local node, axis, length, radius = gui_nodename1[name], gui_axis1[name], gui_distance1[name], gui_distance2[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,5]" .. worldedit.get_formspec_header("worldedit_gui_cylinder") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_cylinder_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_cylinder_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ string.format("field[0.5,2.5;4,0.8;worldedit_gui_cylinder_length;Length;%s]", minetest.formspec_escape(length)) ..
+ string.format("dropdown[4,2.18;2.5;worldedit_gui_cylinder_axis;X axis,Y axis,Z axis,Look direction;%d]", axis) ..
+ string.format("field[0.5,3.5;4,0.8;worldedit_gui_cylinder_radius;Radius;%s]", minetest.formspec_escape(radius)) ..
+ "button_exit[0,4.5;3,0.8;worldedit_gui_cylinder_submit_hollow;Hollow Cylinder]" ..
+ "button_exit[3.5,4.5;3,0.8;worldedit_gui_cylinder_submit_solid;Solid Cylinder]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_cylinder", function(name, fields)
+ if fields.worldedit_gui_cylinder_search
+ or fields.worldedit_gui_cylinder_submit_hollow or fields.worldedit_gui_cylinder_submit_solid then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_cylinder_node)
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_cylinder_axis]
+ gui_distance1[name] = tostring(fields.worldedit_gui_cylinder_length)
+ gui_distance2[name] = tostring(fields.worldedit_gui_cylinder_radius)
+ worldedit.show_page(name, "worldedit_gui_cylinder")
+ if fields.worldedit_gui_cylinder_submit_hollow then
+ minetest.chatcommands["/hollowcylinder"].func(name, string.format("%s %s %s %s", axis_values[gui_axis1[name]], gui_distance1[name], gui_distance2[name], gui_nodename1[name]))
+ elseif fields.worldedit_gui_cylinder_submit_solid then
+ minetest.chatcommands["/cylinder"].func(name, string.format("%s %s %s %s", axis_values[gui_axis1[name]], gui_distance1[name], gui_distance2[name], gui_nodename1[name]))
+ end
+ return true
+ end
+ if fields.worldedit_gui_cylinder_axis then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_cylinder_axis]
+ worldedit.show_page(name, "worldedit_gui_cylinder")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_pyramid", {
+ name = "Pyramid", privs = minetest.chatcommands["/pyramid"].privs,
+ get_formspec = function(name)
+ local node, axis, length = gui_nodename1[name], gui_axis1[name], gui_distance1[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,4]" .. worldedit.get_formspec_header("worldedit_gui_pyramid") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_pyramid_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_pyramid_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ string.format("field[0.5,2.5;4,0.8;worldedit_gui_pyramid_length;Length;%s]", minetest.formspec_escape(length)) ..
+ string.format("dropdown[4,2.18;2.5;worldedit_gui_pyramid_axis;X axis,Y axis,Z axis,Look direction;%d]", axis) ..
+ "button_exit[0,3.5;3,0.8;worldedit_gui_pyramid_submit;Pyramid]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_pyramid", function(name, fields)
+ if fields.worldedit_gui_pyramid_search or fields.worldedit_gui_pyramid_submit then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_pyramid_node)
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_pyramid_axis]
+ gui_distance1[name] = tostring(fields.worldedit_gui_pyramid_length)
+ worldedit.show_page(name, "worldedit_gui_pyramid")
+ if fields.worldedit_gui_pyramid_submit then
+ minetest.chatcommands["/pyramid"].func(name, string.format("%s %s %s", axis_values[gui_axis1[name]], gui_distance1[name], gui_nodename1[name]))
+ end
+ return true
+ end
+ if fields.worldedit_gui_pyramid_axis then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_pyramid_axis]
+ worldedit.show_page(name, "worldedit_gui_pyramid")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_spiral", {
+ name = "Spiral", privs = minetest.chatcommands["/spiral"].privs,
+ get_formspec = function(name)
+ local node, length, height, space = gui_nodename1[name], gui_distance1[name], gui_distance2[name], gui_distance3[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,6]" .. worldedit.get_formspec_header("worldedit_gui_spiral") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_spiral_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_spiral_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ string.format("field[0.5,2.5;4,0.8;worldedit_gui_spiral_length;Side Length;%s]", minetest.formspec_escape(length)) ..
+ string.format("field[0.5,3.5;4,0.8;worldedit_gui_spiral_height;Height;%s]", minetest.formspec_escape(height)) ..
+ string.format("field[0.5,4.5;4,0.8;worldedit_gui_spiral_space;Wall Spacing;%s]", minetest.formspec_escape(space)) ..
+ "button_exit[0,5.5;3,0.8;worldedit_gui_spiral_submit;Spiral]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_spiral", function(name, fields)
+ if fields.worldedit_gui_spiral_search or fields.worldedit_gui_spiral_submit then
+ gui_nodename1[name] = fields.worldedit_gui_spiral_node
+ gui_distance1[name] = tostring(fields.worldedit_gui_spiral_length)
+ gui_distance2[name] = tostring(fields.worldedit_gui_spiral_height)
+ gui_distance3[name] = tostring(fields.worldedit_gui_spiral_space)
+ worldedit.show_page(name, "worldedit_gui_spiral")
+ if fields.worldedit_gui_spiral_submit then
+ minetest.chatcommands["/spiral"].func(name, string.format("%s %s %s %s", gui_distance1[name], gui_distance2[name], gui_distance3[name], gui_nodename1[name]))
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_copy_move", {
+ name = "Copy/Move", privs = combine_privs(minetest.chatcommands["/copy"].privs, minetest.chatcommands["/move"].privs),
+ get_formspec = function(name)
+ local axis = gui_axis1[name] or 4
+ local amount = gui_distance1[name] or "10"
+ return "size[6.5,3]" .. worldedit.get_formspec_header("worldedit_gui_copy_move") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_copy_move_amount;Amount;%s]", minetest.formspec_escape(amount)) ..
+ string.format("dropdown[4,1.18;2.5;worldedit_gui_copy_move_axis;X axis,Y axis,Z axis,Look direction;%d]", axis) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_copy_move_copy;Copy Region]" ..
+ "button_exit[3.5,2.5;3,0.8;worldedit_gui_copy_move_move;Move Region]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_copy_move", function(name, fields)
+ if fields.worldedit_gui_copy_move_copy or fields.worldedit_gui_copy_move_move then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_copy_move_axis] or 4
+ gui_distance1[name] = tostring(fields.worldedit_gui_copy_move_amount)
+ worldedit.show_page(name, "worldedit_gui_copy_move")
+ if fields.worldedit_gui_copy_move_copy then
+ minetest.chatcommands["/copy"].func(name, string.format("%s %s", axis_values[gui_axis1[name]], gui_distance1[name]))
+ else --fields.worldedit_gui_copy_move_move
+ minetest.chatcommands["/move"].func(name, string.format("%s %s", axis_values[gui_axis1[name]], gui_distance1[name]))
+ end
+ return true
+ end
+ if fields.worldedit_gui_copy_move_axis then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_copy_move_axis] or 4
+ worldedit.show_page(name, "worldedit_gui_copy_move")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_stack", {
+ name = "Stack", privs = minetest.chatcommands["/stack"].privs,
+ get_formspec = function(name)
+ local axis, count = gui_axis1[name], gui_count1[name]
+ return "size[6.5,3]" .. worldedit.get_formspec_header("worldedit_gui_stack") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_stack_count;Count;%s]", minetest.formspec_escape(count)) ..
+ string.format("dropdown[4,1.18;2.5;worldedit_gui_stack_axis;X axis,Y axis,Z axis,Look direction;%d]", axis) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_stack_submit;Stack]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_stack", function(name, fields)
+ if fields.worldedit_gui_stack_submit then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_stack_axis]
+ gui_count1[name] = tostring(fields.worldedit_gui_stack_count)
+ worldedit.show_page(name, "worldedit_gui_stack")
+ minetest.chatcommands["/stack"].func(name, string.format("%s %s", axis_values[gui_axis1[name]], gui_count1[name]))
+ return true
+ end
+ if fields.worldedit_gui_stack_axis then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_stack_axis]
+ worldedit.show_page(name, "worldedit_gui_stack")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_stretch", {
+ name = "Stretch", privs = minetest.chatcommands["/stretch"].privs,
+ get_formspec = function(name)
+ local stretchx, stretchy, stretchz = gui_count1[name], gui_count2[name], gui_count3[name]
+ return "size[5,5]" .. worldedit.get_formspec_header("worldedit_gui_stretch") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_stretch_x;Stretch X;%s]", minetest.formspec_escape(stretchx)) ..
+ string.format("field[0.5,2.5;4,0.8;worldedit_gui_stretch_y;Stretch Y;%s]", minetest.formspec_escape(stretchy)) ..
+ string.format("field[0.5,3.5;4,0.8;worldedit_gui_stretch_z;Stretch Z;%s]", minetest.formspec_escape(stretchz)) ..
+ "button_exit[0,4.5;3,0.8;worldedit_gui_stretch_submit;Stretch]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_stretch", function(name, fields)
+ if fields.worldedit_gui_stretch_submit then
+ gui_count1[name] = tostring(fields.worldedit_gui_stretch_x)
+ gui_count2[name] = tostring(fields.worldedit_gui_stretch_y)
+ gui_count3[name] = tostring(fields.worldedit_gui_stretch_z)
+ worldedit.show_page(name, "worldedit_gui_stretch")
+ minetest.chatcommands["/stretch"].func(name, string.format("%s %s %s", gui_count1[name], gui_count2[name], gui_count3[name]))
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_transpose", {
+ name = "Transpose", privs = minetest.chatcommands["/transpose"].privs,
+ get_formspec = function(name)
+ local axis1, axis2 = gui_axis1[name], gui_axis2[name]
+ return "size[5.5,3]" .. worldedit.get_formspec_header("worldedit_gui_transpose") ..
+ string.format("dropdown[0,1;2.5;worldedit_gui_transpose_axis1;X axis,Y axis,Z axis,Look direction;%d]", axis1) ..
+ string.format("dropdown[3,1;2.5;worldedit_gui_transpose_axis2;X axis,Y axis,Z axis,Look direction;%d]", axis2) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_transpose_submit;Transpose]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_transpose", function(name, fields)
+ if fields.worldedit_gui_transpose_submit then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_transpose_axis1]
+ gui_axis2[name] = axis_indices[fields.worldedit_gui_transpose_axis2]
+ worldedit.show_page(name, "worldedit_gui_transpose")
+ minetest.chatcommands["/transpose"].func(name, string.format("%s %s", axis_values[gui_axis1[name]], axis_values[gui_axis2[name]]))
+ return true
+ end
+ if fields.worldedit_gui_transpose_axis1 then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_transpose_axis1]
+ worldedit.show_page(name, "worldedit_gui_transpose")
+ return true
+ end
+ if fields.worldedit_gui_transpose_axis2 then
+ gui_axis2[name] = axis_indices[fields.worldedit_gui_transpose_axis2]
+ worldedit.show_page(name, "worldedit_gui_transpose")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_flip", {
+ name = "Flip", privs = minetest.chatcommands["/flip"].privs,
+ get_formspec = function(name)
+ local axis = gui_axis1[name]
+ return "size[5,3]" .. worldedit.get_formspec_header("worldedit_gui_flip") ..
+ string.format("dropdown[0,1;2.5;worldedit_gui_flip_axis;X axis,Y axis,Z axis,Look direction;%d]", axis) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_flip_submit;Flip]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_flip", function(name, fields)
+ if fields.worldedit_gui_flip_submit then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_flip_axis]
+ worldedit.show_page(name, "worldedit_gui_flip")
+ minetest.chatcommands["/flip"].func(name, axis_values[gui_axis1[name]])
+ return true
+ end
+ if fields.worldedit_gui_flip_axis then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_flip_axis]
+ worldedit.show_page(name, "worldedit_gui_flip")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_rotate", {
+ name = "Rotate", privs = minetest.chatcommands["/rotate"].privs,
+ get_formspec = function(name)
+ local axis, angle = gui_axis1[name], gui_angle[name]
+ return "size[5.5,3]" .. worldedit.get_formspec_header("worldedit_gui_rotate") ..
+ string.format("dropdown[0,1;2.5;worldedit_gui_rotate_angle;90 degrees,180 degrees,270 degrees;%s]", angle) ..
+ string.format("dropdown[3,1;2.5;worldedit_gui_rotate_axis;X axis,Y axis,Z axis,Look direction;%d]", axis) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_rotate_submit;Rotate]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_rotate", function(name, fields)
+ if fields.worldedit_gui_rotate_submit then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_rotate_axis]
+ gui_angle[name] = angle_indices[fields.worldedit_gui_rotate_angle]
+ worldedit.show_page(name, "worldedit_gui_rotate")
+ minetest.chatcommands["/rotate"].func(name, string.format("%s %s", axis_values[gui_axis1[name]], angle_values[gui_angle[name]]))
+ return true
+ end
+ if fields.worldedit_gui_rotate_axis then
+ gui_axis1[name] = axis_indices[fields.worldedit_gui_rotate_axis]
+ worldedit.show_page(name, "worldedit_gui_rotate")
+ return true
+ end
+ if fields.worldedit_gui_rotate_angle then
+ gui_angle[name] = angle_indices[fields.worldedit_gui_rotate_angle]
+ worldedit.show_page(name, "worldedit_gui_rotate")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_orient", {
+ name = "Orient", privs = minetest.chatcommands["/orient"].privs,
+ get_formspec = function(name)
+ local angle = gui_angle[name]
+ return "size[5,3]" .. worldedit.get_formspec_header("worldedit_gui_orient") ..
+ string.format("dropdown[0,1;2.5;worldedit_gui_orient_angle;90 degrees,180 degrees,270 degrees;%s]", angle) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_orient_submit;Orient]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_orient", function(name, fields)
+ if fields.worldedit_gui_orient_submit then
+ gui_angle[name] = angle_indices[fields.worldedit_gui_orient_angle]
+ worldedit.show_page(name, "worldedit_gui_orient")
+ minetest.chatcommands["/orient"].func(name, tostring(angle_values[gui_angle[name]]))
+ return true
+ end
+ if fields.worldedit_gui_orient_angle then
+ gui_angle[name] = angle_indices[fields.worldedit_gui_orient_angle]
+ worldedit.show_page(name, "worldedit_gui_orient")
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_fixlight", {
+ name = "Fix Lighting", privs = minetest.chatcommands["/fixlight"].privs,
+ on_select = function(name)
+ minetest.chatcommands["/fixlight"].func(name, "")
+ end,
+})
+
+worldedit.register_gui_function("worldedit_gui_hide", {
+ name = "Hide Region", privs = minetest.chatcommands["/hide"].privs,
+ on_select = function(name)
+ minetest.chatcommands["/hide"].func(name, "")
+ end,
+})
+
+worldedit.register_gui_function("worldedit_gui_suppress", {
+ name = "Suppress Nodes", privs = minetest.chatcommands["/suppress"].privs,
+ get_formspec = function(name)
+ local node = gui_nodename1[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,3]" .. worldedit.get_formspec_header("worldedit_gui_suppress") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_suppress_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_suppress_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_suppress_submit;Suppress Nodes]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_suppress", function(name, fields)
+ if fields.worldedit_gui_suppress_search or fields.worldedit_gui_suppress_submit then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_suppress_node)
+ worldedit.show_page(name, "worldedit_gui_suppress")
+ if fields.worldedit_gui_suppress_submit then
+ minetest.chatcommands["/suppress"].func(name, gui_nodename1[name])
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_highlight", {
+ name = "Highlight Nodes", privs = minetest.chatcommands["/highlight"].privs,
+ get_formspec = function(name)
+ local node = gui_nodename1[name]
+ local nodename = worldedit.normalize_nodename(node)
+ return "size[6.5,3]" .. worldedit.get_formspec_header("worldedit_gui_highlight") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_highlight_node;Name;%s]", minetest.formspec_escape(node)) ..
+ "button[4,1.18;1.5,0.8;worldedit_gui_highlight_search;Search]" ..
+ (nodename and string.format("item_image[5.5,1.1;1,1;%s]", nodename)
+ or "image[5.5,1.1;1,1;unknown_node.png]") ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_highlight_submit;Highlight Nodes]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_highlight", function(name, fields)
+ if fields.worldedit_gui_highlight_search or fields.worldedit_gui_highlight_submit then
+ gui_nodename1[name] = tostring(fields.worldedit_gui_highlight_node)
+ worldedit.show_page(name, "worldedit_gui_highlight")
+ if fields.worldedit_gui_highlight_submit then
+ minetest.chatcommands["/highlight"].func(name, gui_nodename1[name])
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_restore", {
+ name = "Restore Region", privs = minetest.chatcommands["/restore"].privs,
+ on_select = function(name)
+ minetest.chatcommands["/restore"].func(name, "")
+ end,
+})
+
+worldedit.register_gui_function("worldedit_gui_save_load", {
+ name = "Save/Load", privs = combine_privs(minetest.chatcommands["/save"].privs, minetest.chatcommands["/allocate"].privs, minetest.chatcommands["/load"].privs),
+ get_formspec = function(name)
+ local filename = gui_filename[name]
+ return "size[6,4]" .. worldedit.get_formspec_header("worldedit_gui_save_load") ..
+ string.format("field[0.5,1.5;4,0.8;worldedit_gui_save_filename;Filename;%s]", minetest.formspec_escape(filename)) ..
+ "button_exit[0,2.5;3,0.8;worldedit_gui_save_load_submit_save;Save]" ..
+ "button_exit[3,2.5;3,0.8;worldedit_gui_save_load_submit_allocate;Allocate]" ..
+ "button_exit[0,3.5;3,0.8;worldedit_gui_save_load_submit_load;Load]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_save_load", function(name, fields)
+ if fields.worldedit_gui_save_load_submit_save or fields.worldedit_gui_save_load_submit_allocate or fields.worldedit_gui_save_load_submit_load then
+ gui_filename[name] = tostring(fields.worldedit_gui_save_filename)
+ worldedit.show_page(name, "worldedit_gui_save_load")
+ if fields.worldedit_gui_save_load_submit_save then
+ minetest.chatcommands["/save"].func(name, gui_filename[name])
+ elseif fields.worldedit_gui_save_load_submit_allocate then
+ minetest.chatcommands["/allocate"].func(name, gui_filename[name])
+ else --fields.worldedit_gui_save_load_submit_load
+ minetest.chatcommands["/load"].func(name, gui_filename[name])
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_lua", {
+ name = "Run Lua",
+ get_formspec = function(name)
+ local code = gui_code[name]
+ return "size[8,6.5]" .. worldedit.get_formspec_header("worldedit_gui_lua") ..
+ string.format("textarea[0.5,1;7.5,5.5;worldedit_gui_lua_code;Lua Code;%s]", minetest.formspec_escape(code)) ..
+ "button_exit[0,6;3,0.8;worldedit_gui_lua_run;Run Lua]" ..
+ "button_exit[5,6;3,0.8;worldedit_gui_lua_transform;Lua Transform]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_lua", function(name, fields)
+ if fields.worldedit_gui_lua_run or fields.worldedit_gui_lua_transform then
+ gui_code[name] = fields.worldedit_gui_lua_value
+ worldedit.show_page(name, "worldedit_gui_lua")
+ if fields.worldedit_gui_lua_run then
+ minetest.chatcommands["/lua"].func(name, gui_code[name])
+ else --fields.worldedit_gui_lua_transform
+ minetest.chatcommands["/luatransform"].func(name, gui_code[name])
+ end
+ return true
+ end
+ return false
+end)
+
+worldedit.register_gui_function("worldedit_gui_clearobjects", {
+ name = "Clear Objects", privs = minetest.chatcommands["/clearobjects"].privs,
+ on_select = function(name)
+ minetest.chatcommands["/clearobjects"].func(name, "")
+ end,
+})
+
+worldedit.register_gui_function("worldedit_gui_formspec_tester", {
+ name = "Formspec Tester",
+ get_formspec = function(name)
+ local value = gui_formspec[name]
+ return "size[8,6.5]" .. worldedit.get_formspec_header("worldedit_gui_formspec_tester") ..
+ string.format("textarea[0.5,1;7.5,5.5;worldedit_gui_formspec_tester_value;Formspec Code;%s]", minetest.formspec_escape(value)) ..
+ "button_exit[0,6;3,0.8;worldedit_gui_formspec_tester_show;Show Formspec]"
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui_formspec_tester", function(name, fields)
+ if fields.worldedit_gui_formspec_tester_show then
+ gui_formspec[name] = fields.worldedit_gui_formspec_tester_value or ""
+ worldedit.show_page(name, "worldedit_gui_formspec_tester")
+ minetest.show_formspec(name, "worldedit:formspec_tester", gui_formspec[name])
+ return true
+ end
+ return false
+end)
diff --git a/worldedit/worldedit_gui/init.lua b/worldedit/worldedit_gui/init.lua
new file mode 100644
index 0000000..da54f7b
--- /dev/null
+++ b/worldedit/worldedit_gui/init.lua
@@ -0,0 +1,249 @@
+worldedit = worldedit or {}
+
+--[[
+Example:
+
+ worldedit.register_gui_function("worldedit_gui_hollow_cylinder", {
+ name = "Make Hollow Cylinder",
+ privs = {worldedit=true},
+ get_formspec = function(name) return "some formspec here" end,
+ on_select = function(name) print(name .. " clicked the button!") end,
+ })
+
+Use `nil` for the `options` parameter to unregister the function associated with the given identifier.
+
+Use `nil` for the `get_formspec` field to denote that the function does not have its own screen.
+
+Use `nil` for the `privs` field to denote that no special privileges are required to use the function.
+
+If the identifier is already registered to another function, it will be replaced by the new one.
+
+The `on_select` function must not call `worldedit.show_page`
+]]
+
+worldedit.pages = {} --mapping of identifiers to options
+local identifiers = {} --ordered list of identifiers
+worldedit.register_gui_function = function(identifier, options)
+ worldedit.pages[identifier] = options
+ table.insert(identifiers, identifier)
+end
+
+--[[
+Example:
+
+ worldedit.register_gui_handler("worldedit_gui_hollow_cylinder", function(name, fields)
+ print(minetest.serialize(fields))
+ end)
+]]
+
+worldedit.register_gui_handler = function(identifier, handler)
+ local enabled = true
+ minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if not enabled then return false end
+ enabled = false
+ minetest.after(0.2, function() enabled = true end)
+ local name = player:get_player_name()
+
+ --ensure the player has permission to perform the action
+ local entry = worldedit.pages[identifier]
+ if entry and minetest.check_player_privs(name, entry.privs or {}) then
+ return handler(name, fields)
+ end
+ return false
+ end)
+end
+
+worldedit.get_formspec_header = function(identifier)
+ local entry = worldedit.pages[identifier] or {}
+ return "button[0,0;2,0.5;worldedit_gui;Back]" ..
+ string.format("label[2,0;WorldEdit GUI > %s]", entry.name or "")
+end
+
+local get_formspec = function(name, identifier)
+ if worldedit.pages[identifier] then
+ return worldedit.pages[identifier].get_formspec(name)
+ end
+ return worldedit.pages["worldedit_gui"].get_formspec(name) --default to showing main page if an unknown page is given
+end
+
+--implement worldedit.show_page(name, page) in different ways depending on the available APIs
+if rawget(_G, "unified_inventory") then --unified inventory installed
+ local old_func = worldedit.register_gui_function
+ worldedit.register_gui_function = function(identifier, options)
+ old_func(identifier, options)
+ unified_inventory.register_page(identifier, {get_formspec=function(player) return {formspec=options.get_formspec(player:get_player_name())} end})
+ end
+
+ unified_inventory.register_button("worldedit_gui", {
+ type = "image",
+ image = "inventory_plus_worldedit_gui.png",
+ })
+
+ minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local name = player:get_player_name()
+ if fields.worldedit_gui then --main page
+ worldedit.show_page(name, "worldedit_gui")
+ return true
+ elseif fields.worldedit_gui_exit then --return to original page
+ local player = minetest.get_player_by_name(name)
+ if player then
+ unified_inventory.set_inventory_formspec(player, "craft")
+ end
+ return true
+ end
+ return false
+ end)
+
+ worldedit.show_page = function(name, page)
+ local player = minetest.get_player_by_name(name)
+ if player then
+ player:set_inventory_formspec(get_formspec(name, page))
+ end
+ end
+elseif rawget(_G, "inventory_plus") then --inventory++ installed
+ minetest.register_on_joinplayer(function(player)
+ local can_worldedit = minetest.check_player_privs(player:get_player_name(), {worldedit=true})
+ if can_worldedit then
+ inventory_plus.register_button(player, "worldedit_gui", "WorldEdit")
+ end
+ end)
+
+ --show the form when the button is pressed and hide it when done
+ local gui_player_formspecs = {}
+ minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local name = player:get_player_name()
+ if fields.worldedit_gui then --main page
+ gui_player_formspecs[name] = player:get_inventory_formspec()
+ worldedit.show_page(name, "worldedit_gui")
+ return true
+ elseif fields.worldedit_gui_exit then --return to original page
+ if gui_player_formspecs[name] then
+ inventory_plus.set_inventory_formspec(player, gui_player_formspecs[name])
+ end
+ return true
+ end
+ return false
+ end)
+
+ worldedit.show_page = function(name, page)
+ local player = minetest.get_player_by_name(name)
+ if player then
+ inventory_plus.set_inventory_formspec(player, get_formspec(name, page))
+ end
+ end
+else --fallback button
+ local player_formspecs = {}
+
+ local update_main_formspec = function(name)
+ local formspec = player_formspecs[name]
+ if not formspec then
+ return
+ end
+ local player = minetest.get_player_by_name(name)
+ if not player then --this is in case the player signs off while the media is loading
+ return
+ end
+ if (minetest.check_player_privs(name, {creative=true}) or minetest.setting_getbool("creative_mode")) and creative_inventory then --creative_inventory is active, add button to modified formspec
+ formspec = player:get_inventory_formspec() .. "image_button[6,0;1,1;inventory_plus_worldedit_gui.png;worldedit_gui;]"
+ else
+ formspec = formspec .. "image_button[0,0;1,1;inventory_plus_worldedit_gui.png;worldedit_gui;]"
+ end
+ player:set_inventory_formspec(formspec)
+ end
+
+ minetest.register_on_joinplayer(function(player)
+ local name = player:get_player_name()
+ minetest.after(1, function()
+ if minetest.get_player_by_name(name) then --ensure the player is still signed in
+ player_formspecs[name] = player:get_inventory_formspec()
+ minetest.after(0.01, function()
+ update_main_formspec(name)
+ end)
+ end
+ end)
+ end)
+
+ minetest.register_on_leaveplayer(function(player)
+ player_formspecs[player:get_player_name()] = nil
+ end)
+
+ local gui_player_formspecs = {}
+ minetest.register_on_player_receive_fields(function(player, formname, fields)
+ local name = player:get_player_name()
+ if fields.worldedit_gui then --main page
+ gui_player_formspecs[name] = player:get_inventory_formspec()
+ worldedit.show_page(name, "worldedit_gui")
+ return true
+ elseif fields.worldedit_gui_exit then --return to original page
+ if gui_player_formspecs[name] then
+ player:set_inventory_formspec(gui_player_formspecs[name])
+ end
+ return true
+ else --deal with creative_inventory setting the formspec on every single message
+ minetest.after(0.01,function()
+ update_main_formspec(name)
+ end)
+ return false --continue processing in creative inventory
+ end
+ end)
+
+ worldedit.show_page = function(name, page)
+ local player = minetest.get_player_by_name(name)
+ if player then
+ player:set_inventory_formspec(get_formspec(name, page))
+ end
+ end
+end
+
+worldedit.register_gui_function("worldedit_gui", {
+ name = "WorldEdit GUI",
+ get_formspec = function(name)
+ --create a form with all the buttons arranged in a grid
+ local buttons, x, y, index = {}, 0, 1, 0
+ local width, height = 3, 0.8
+ local columns = 5
+ for i, identifier in pairs(identifiers) do
+ if identifier ~= "worldedit_gui" then
+ local entry = worldedit.pages[identifier]
+ table.insert(buttons, string.format((entry.get_formspec and "button" or "button_exit") ..
+ "[%g,%g;%g,%g;%s;%s]", x, y, width, height, identifier, minetest.formspec_escape(entry.name)))
+
+ index, x = index + 1, x + width
+ if index == columns then --row is full
+ x, y = 0, y + height
+ index = 0
+ end
+ end
+ end
+ if index == 0 then --empty row
+ y = y - height
+ end
+ return string.format("size[%g,%g]", math.max(columns * width, 5), math.max(y + 0.5, 3)) ..
+ "button[0,0;2,0.5;worldedit_gui_exit;Back]" ..
+ "label[2,0;WorldEdit GUI]" ..
+ table.concat(buttons)
+ end,
+})
+
+worldedit.register_gui_handler("worldedit_gui", function(name, fields)
+ for identifier, entry in pairs(worldedit.pages) do --check for WorldEdit GUI main formspec button selection
+ if fields[identifier] and identifier ~= "worldedit_gui" then
+ --ensure player has permission to perform action
+ local has_privs, missing_privs = minetest.check_player_privs(name, entry.privs or {})
+ if not has_privs then
+ worldedit.player_notify(name, "you are not allowed to use this function (missing privileges: " .. table.concat(missing_privs, ", ") .. ")")
+ return false
+ end
+ if entry.on_select then
+ entry.on_select(name)
+ end
+ if entry.get_formspec then
+ worldedit.show_page(name, identifier)
+ end
+ return true
+ end
+ end
+ return false
+end)
+
+dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/functionality.lua")
diff --git a/worldedit/worldedit_gui/textures/inventory_plus_worldedit_gui.png b/worldedit/worldedit_gui/textures/inventory_plus_worldedit_gui.png
new file mode 100644
index 0000000..fbc1abc
--- /dev/null
+++ b/worldedit/worldedit_gui/textures/inventory_plus_worldedit_gui.png
Binary files differ
diff --git a/worldedit/worldedit_infinity/depends.txt b/worldedit/worldedit_infinity/depends.txt
new file mode 100644
index 0000000..c4f6871
--- /dev/null
+++ b/worldedit/worldedit_infinity/depends.txt
@@ -0,0 +1 @@
+worldedit?
diff --git a/worldedit/worldedit_infinity/init.lua b/worldedit/worldedit_infinity/init.lua
new file mode 100644
index 0000000..8bd3a05
--- /dev/null
+++ b/worldedit/worldedit_infinity/init.lua
@@ -0,0 +1,103 @@
+worldedit = rawget(_G, "worldedit") or {}
+local minetest = minetest --local copy of global
+
+local get_pointed = function(pos, nearest, distance)
+ if distance > 100 then
+ return false
+ end
+
+ --check for collision with node
+ local nodename = minetest.get_node(pos).name
+ if nodename ~= "air"
+ and nodename ~= "default:water_source"
+ and nodename ~= "default:water_flowing" then
+ if nodename ~= "ignore" then
+ return nearest
+ end
+ return false
+ end
+end
+
+local use = function(itemstack, user, pointed_thing)
+ if pointed_thing.type == "nothing" then --pointing at nothing
+ local placepos = worldedit.raytrace(user:getpos(), user:get_look_dir(), get_pointed)
+ if placepos then --extended reach
+ pointed_thing.type = "node"
+ pointed_thing.under = nil --wip
+ pointed_thing.above = nil --wip
+ end
+ end
+ return minetest.item_place_node(itemstack, user, pointed_thing)
+end
+--
+
+worldedit.raytrace = function(pos, dir, callback)
+ local base = {x=math.floor(pos.x), y=math.floor(pos.y), z=math.floor(pos.z)}
+ local stepx, stepy, stepz = 0, 0, 0
+ local componentx, componenty, componentz = 0, 0, 0
+ local intersectx, intersecty, intersectz = 0, 0, 0
+
+ if dir.x == 0 then
+ intersectx = math.huge
+ elseif dir.x > 0 then
+ stepx = 1
+ componentx = 1 / dir.x
+ intersectx = ((base.x - pos.x) + 1) * componentx
+ else
+ stepx = -1
+ componentx = 1 / -dir.x
+ intersectx = (pos.x - base.x) * componentx
+ end
+ if dir.y == 0 then
+ intersecty = math.huge
+ elseif dir.y > 0 then
+ stepy = 1
+ componenty = 1 / dir.y
+ intersecty = ((base.y - pos.y) + 1) * componenty
+ else
+ stepy = -1
+ componenty = 1 / -dir.y
+ intersecty = (pos.y - base.y) * componenty
+ end
+ if dir.z == 0 then
+ intersectz = math.huge
+ elseif dir.z > 0 then
+ stepz = 1
+ componentz = 1 / dir.z
+ intersectz = ((base.z - pos.z) + 1) * componentz
+ else
+ stepz = -1
+ componentz = 1 / -dir.z
+ intersectz = (pos.z - base.z) * componentz
+ end
+
+ local distance = 0
+ local nearest = {x=base.x, y=base.y, z=base.z}
+ while true do
+ local values = {callback(base, nearest, distance)}
+ if #values > 0 then
+ return unpack(values)
+ end
+
+ nearest.x, nearest.y, nearest.z = base.x, base.y, base.z
+ if intersectx < intersecty then
+ if intersectx < intersectz then
+ base.x = base.x + stepx
+ distance = intersectx
+ intersectx = intersectx + componentx
+ else
+ base.z = base.z + stepz
+ distance = intersectz
+ intersectz = intersectz + componentz
+ end
+ elseif intersecty < intersectz then
+ base.y = base.y + stepy
+ distance = intersecty
+ intersecty = intersecty + componenty
+ else
+ base.z = base.z + stepz
+ distance = intersectz
+ intersectz = intersectz + componentz
+ end
+ end
+end
diff --git a/worldedit/worldedit_limited/depends.txt b/worldedit/worldedit_limited/depends.txt
new file mode 100644
index 0000000..74054c6
--- /dev/null
+++ b/worldedit/worldedit_limited/depends.txt
@@ -0,0 +1 @@
+worldedit
diff --git a/worldedit/worldedit_limited/init.lua b/worldedit/worldedit_limited/init.lua
new file mode 100644
index 0000000..801e19c
--- /dev/null
+++ b/worldedit/worldedit_limited/init.lua
@@ -0,0 +1,120 @@
+do return end
+do
+ local MAX_VOLUME = 30 * 30 * 30
+
+ local we = worldedit
+ local volume = we.volume
+ local safewrap = function(func)
+ return function(pos1, pos2, ...)
+ if validbox(pos1, pos2) then
+ return func(pos1, pos2, ...)
+ end
+ return 0, pos1, pos2
+ end
+ end
+
+ local validbox = function(pos1, pos2)
+ tpos1, tpos2 = we.sort_pos(pos1, pos2)
+
+ if volume(tpos1, tpos2) > MAX_VOLUME then
+ return false
+ end
+
+ --check for ownership of area if ownership mod is installed
+ if owner_defs then
+ local inside = false
+ for _, def in pairs(owner_defs) do
+ --sort positions
+ local tdef = {x1=def.x1, x2 = def.x2, y1=def.y1, y2=def.y2, z1=def.z1, z2=def.z2}
+ if tdef.x1 > tdef.x2 then
+ tdef.x1, tdef.x2 = tdef.x2, tdef.x1
+ end
+ if tdef.y1 > tdef.y2 then
+ tdef.y1, tdef.y2 = tdef.y2, tdef.y1
+ end
+ if tdef.z1 > tdef.z2 then
+ tdef.z1, tdef.z2 = tdef.z2, tdef.z1
+ end
+
+ --check ownership
+ if tpos1.x >= tdef.x1 and tpos1.x <= tdef.x2
+ and tpos2.x >= tdef.x1 and tpos2.x <= tdef.x2
+ and tpos1.y >= tdef.y1 and tpos1.y <= tdef.y2
+ and tpos2.y >= tdef.y1 and tpos2.y <= tdef.y2
+ and tpos1.z >= tdef.z1 and tpos1.z <= tdef.z2
+ and tpos2.z >= tdef.z1 and tpos2.z <= tdef.z2
+ and name == def.owner then --wip: name isn't available here
+ inside = true
+ break
+ end
+ end
+ if not inside then
+ return false
+ end
+ end
+
+ return true
+ end
+
+ worldedit = {
+ sort_pos = we.sort_pos,
+
+ set = safewrap(we.set),
+ replace = safewrap(we.replace),
+ replaceinverse = safewrap(we.replaceinverse),
+ copy = function(pos1, pos2, axis, amount)
+ tpos1, tpos2 = we.sort_pos(pos1, pos2)
+ tpos1[axis] = tpos1[axis] + amount
+ tpos2[axis] = tpos2[axis] + amount
+ if validbox(pos1, pos2) and validbox(tpos1, tpos2) then
+ we.copy(pos1, pos2, axis, amount)
+ else
+ return 0
+ end
+ end,
+ move = function(pos1, pos2, axis, amount)
+ tpos1, tpos2 = we.sort_pos(pos1, pos2)
+ tpos1[axis] = tpos1[axis] + amount
+ tpos2[axis] = tpos2[axis] + amount
+ if validbox(pos1, pos2) and validbox(tpos1, tpos2) then
+ we.move(pos1, pos2, axis, amount)
+ else
+ return 0
+ end
+ end,
+ stack = function(pos1, pos2, axis, count)
+ tpos1, tpos2 = we.sort_pos(pos1, pos2)
+ local length = (tpos2[axis] - tpos1[axis] + 1) * count
+ if count < 0 then
+ tpos1[axis] = tpos1[axis] + length
+ else
+ tpos2[axis] = tpos2[axis] + length
+ end
+ if validbox(tpos1, tpos2) then
+ we.stack(pos1, pos2, axis, amount)
+ else
+ return 0
+ end
+ end,
+ --wip: add transpose, rotate safely
+ flip = safewrap(we.flip),
+ orient = safewrap(we.orient),
+ fixlight = safewrap(we.fixlight),
+ --wip: add primitives here
+ volume = we.volume,
+ hide = safewrap(we.hide),
+ suppress = safewrap(we.suppress),
+ highlight = safewrap(we.highlight),
+ restore = safewrap(we.restore),
+ serialize = safewrap(we.serialize),
+ allocate = we.allocate,
+ deserialize = function(originpos, value)
+ local tpos1, tpos2 = we.allocate(originpos, value)
+ if validbox(tpos1, tpos2) then
+ we.deserialize(originpos, value)
+ else
+ return 0
+ end
+ end,
+ }
+end \ No newline at end of file
diff --git a/worldedit/worldedit_shortcommands/depends.txt b/worldedit/worldedit_shortcommands/depends.txt
new file mode 100644
index 0000000..de1cb6c
--- /dev/null
+++ b/worldedit/worldedit_shortcommands/depends.txt
@@ -0,0 +1 @@
+worldedit_commands
diff --git a/worldedit/worldedit_shortcommands/init.lua b/worldedit/worldedit_shortcommands/init.lua
new file mode 100644
index 0000000..a3cbb67
--- /dev/null
+++ b/worldedit/worldedit_shortcommands/init.lua
@@ -0,0 +1,50 @@
+--provides shorter names for the commands in `worldedit_commands`
+
+--returns true if command could not be aliased, false otherwise
+worldedit.alias_chatcommand = function(alias, original_command)
+ if not minetest.chatcommands[original_command] then
+ minetest.log("error", "worldedit_shortcommands: original command " .. original_command .. " does not exist")
+ return true
+ end
+ if minetest.chatcommands[alias] then
+ minetest.log("error", "worldedit_shortcommands: alias " .. alias .. " already exists")
+ return true
+ end
+ minetest.register_chatcommand(alias, minetest.chatcommands[original_command])
+ return false
+end
+
+worldedit.alias_chatcommand("/i", "/inspect")
+worldedit.alias_chatcommand("/rst", "/reset")
+worldedit.alias_chatcommand("/mk", "/mark")
+worldedit.alias_chatcommand("/umk", "/unmark")
+worldedit.alias_chatcommand("/1", "/pos1")
+worldedit.alias_chatcommand("/2", "/pos2")
+worldedit.alias_chatcommand("/fp", "/fixedpos")
+worldedit.alias_chatcommand("/v", "/volume")
+worldedit.alias_chatcommand("/s", "/set")
+worldedit.alias_chatcommand("/r", "/replace")
+worldedit.alias_chatcommand("/ri", "/replaceinverse")
+worldedit.alias_chatcommand("/hspr", "/hollowsphere")
+worldedit.alias_chatcommand("/spr", "/sphere")
+worldedit.alias_chatcommand("/hdo", "/hollowdome")
+worldedit.alias_chatcommand("/do", "/dome")
+worldedit.alias_chatcommand("/hcyl", "/hollowcylinder")
+worldedit.alias_chatcommand("/cyl", "/cylinder")
+worldedit.alias_chatcommand("/pyr", "/pyramid")
+worldedit.alias_chatcommand("/spl", "/spiral")
+worldedit.alias_chatcommand("/m", "/move")
+worldedit.alias_chatcommand("/c", "/copy")
+worldedit.alias_chatcommand("/stk", "/stack")
+worldedit.alias_chatcommand("/sch", "/stretch")
+worldedit.alias_chatcommand("/tps", "/transpose")
+worldedit.alias_chatcommand("/fl", "/flip")
+worldedit.alias_chatcommand("/rot", "/rotate")
+worldedit.alias_chatcommand("/ort", "/orient")
+worldedit.alias_chatcommand("/hi", "/hide")
+worldedit.alias_chatcommand("/sup", "/suppress")
+worldedit.alias_chatcommand("/hlt", "/highlight")
+worldedit.alias_chatcommand("/rsr", "/restore")
+worldedit.alias_chatcommand("/l", "/lua")
+worldedit.alias_chatcommand("/lt", "/luatransform")
+worldedit.alias_chatcommand("/clro", "/clearobjects") \ No newline at end of file
diff --git a/xban2/bower.json b/xban2/bower.json
new file mode 100644
index 0000000..1e1576d
--- /dev/null
+++ b/xban2/bower.json
@@ -0,0 +1,15 @@
+{
+ "name": "xban2",
+ "description": "Ban system extension with support for temporary bans.",
+ "keywords": [
+ "ban",
+ "administration",
+ "system",
+ "server"
+ ],
+ "homepage": "http://github.com/kaeza/minetest-xban2.git",
+ "authors": [
+ "Diego Martínez <lkaezadl3@yahoo.com>"
+ ],
+ "license": "BSD 2-Clause"
+}
diff --git a/xban2/dbimport.lua b/xban2/dbimport.lua
new file mode 100644
index 0000000..ec9293d
--- /dev/null
+++ b/xban2/dbimport.lua
@@ -0,0 +1,38 @@
+
+xban.importers = { }
+
+dofile(xban.MP.."/importers/minetest.lua")
+dofile(xban.MP.."/importers/v1.lua")
+dofile(xban.MP.."/importers/v2.lua")
+
+minetest.register_chatcommand("xban_dbi", {
+ description = "Import old databases",
+ params = "<importer>",
+ privs = { server=true },
+ func = function(name, params)
+ if params == "--list" then
+ local names = { }
+ for name in pairs(xban.importers) do
+ table.insert(names, name)
+ end
+ minetest.chat_send_player(name,
+ ("[xban] Known importers: %s"):format(
+ table.concat(names, ", ")))
+ return
+ elseif not xban.importers[params] then
+ minetest.chat_send_player(name,
+ ("[xban] Unknown importer `%s'"):format(params))
+ minetest.chat_send_player(name, "[xban] Try `--list'")
+ return
+ end
+ local f = xban.importers[params]
+ local ok, err = f()
+ if ok then
+ minetest.chat_send_player(name,
+ "[xban] Import successfull")
+ else
+ minetest.chat_send_player(name,
+ ("[xban] Import failed: %s"):format(err))
+ end
+ end,
+})
diff --git a/xban2/doc/API.md b/xban2/doc/API.md
new file mode 100644
index 0000000..bee7c42
--- /dev/null
+++ b/xban2/doc/API.md
@@ -0,0 +1,32 @@
+
+## Extended Ban Mod API
+
+### ban_player
+
+`xban.ban_player(player_or_ip, source, expires, reason)`
+
+Ban a player and all of his/her alternative names and IPs.
+
+#### Arguments:
+
+* `player_or_ip` - Player to search for and ban. See note 1 below.
+* `source` - Source of the ban. See note 2 below.
+* `expires` - Time at which the ban expires. If nil, ban is permanent.
+* `reason` - Reason for ban.
+
+### unban_player
+
+`xban.unban_player(player_or_ip, source)`
+
+Unban a player and all of his/her alternative names and IPs.
+
+#### Arguments:
+
+* `player_or_ip` - Player to search for and unban.
+* `source` - Source of the ban. See note 2 below.
+
+### Notes
+
+* 1: If player is currently online, all his accounts are kicked.
+* 2: Mods using the xban API are advised to use the `"modname:source"`
+format for `source` (for example: `"anticheat:main"`).
diff --git a/xban2/doc/dbformat.txt b/xban2/doc/dbformat.txt
new file mode 100644
index 0000000..71b25a5
--- /dev/null
+++ b/xban2/doc/dbformat.txt
@@ -0,0 +1,45 @@
+
+Database is a regular Lua script that returns a table.
+
+Table has a single named field `timestamp' containing the time_t the
+DB was last saved. It's not used in the mod and is only meant for
+external use (I don't find filesystem timestamps too reliable).
+
+Next is a simple array (number indices) of entries.
+
+Each entry contains following fields:
+
+[1] = {
+ -- Names/IPs associated with this entry
+ names = {
+ ["foo"] = true,
+ ["bar"] = true,
+ ["123.45.67.89"] = true,
+ },
+ banned = true, -- Whether this user is banned
+ -- Other fields do not apply if false
+ time = 12341234, -- Time of last ban (*1)
+ expires = 43214321 -- Time at which ban expires (*2)
+ -- If nil, permanent ban
+ reason = "asdf", -- Reason for ban
+ source = "qwerty", -- Source of ban (*2)
+ record = {
+ [1] = {
+ source = "asdf",
+ reason = "qwerty",
+ time = 12341234,
+ expires = 43214321,
+ },
+ [1] = {
+ source = "asdf",
+ reason = "Unbanned", -- When unbanned
+ time = 12341234,
+ },
+ },
+}
+
+Notes:
+(*1) All times are expressed in whatever unit `os.time()' uses
+ (`time_t' on most (all?) systems).
+(*2) Mods using the xban API are advised to use the "modname:source"
+ format for `source' (for example: "anticheat:main").
diff --git a/xban2/gui.lua b/xban2/gui.lua
new file mode 100644
index 0000000..544f3be
--- /dev/null
+++ b/xban2/gui.lua
@@ -0,0 +1,90 @@
+
+local FORMNAME = "xban2:main"
+
+local states = { }
+
+local table_insert, table_concat =
+ table.insert, table.concat
+
+local ESC = minetest.formspec_escape
+
+local function make_fs(name)
+ local state = states[name]
+ if not state then return end
+ local list, index, filter = state.list, state.index, state.filter
+ if index > #list then
+ index = #list
+ end
+ local fs = {
+ "size[10,8]",
+ "label[0.5,0.6;Filter]",
+ "field[1.5,0.5;6,2;filter;;"..ESC(filter).."]",
+ "button[7.5,0.5;2,1;search;Search]",
+ }
+ table_insert(fs,
+ ("textlist[0.5,2;3,5.5;player;%s;%d;0]"):
+ format(table_concat(list, ","), index))
+ local record_name = list[index]
+ if record_name then
+ local record, err = xban.get_record(record_name)
+ if record then
+ local reclist = { }
+ for _, r in ipairs(record) do
+ table_insert(reclist, ESC(r))
+ end
+ table_insert(fs,
+ ("textlist[4,2;5,5.5;entry;%s;0;0]"):
+ format(table_concat(reclist, ",")))
+ else
+ table_insert(fs,
+ "textlist[4,2;5,5.5;entry;"..ESC(err)..";0]")
+ end
+ end
+ return table_concat(fs)
+end
+
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname ~= FORMNAME then return end
+ local name = player:get_player_name()
+ local state = states[name]
+ if fields.player then
+ local t = minetest.explode_textlist_event(fields.player)
+ if (t.type == "CHG") or (t.type == "DCL") then
+ state.index = t.index
+ minetest.show_formspec(name, FORMNAME, make_fs(name))
+ end
+ return
+ end
+ if fields.search then
+ local filter = fields.filter or ""
+ state.filter = filter
+ local list = { }
+ state.list = list
+ for k in pairs(minetest.auth_table) do
+ if k:find(filter, 1, true) then
+ table_insert(list, k)
+ end
+ end
+ table.sort(list)
+ minetest.show_formspec(name, FORMNAME, make_fs(name))
+ end
+end)
+
+minetest.register_chatcommand("xban_gui", {
+ description = "Show XBan GUI",
+ params = "",
+ func = function(name, params)
+ local state = states[name]
+ if not state then
+ state = { index=1, filter="" }
+ states[name] = state
+ local list = { }
+ state.list = list
+ for k in pairs(minetest.auth_table) do
+ table_insert(list, k)
+ end
+ table.sort(list)
+ end
+ minetest.show_formspec(name, FORMNAME, make_fs(name))
+ end,
+})
diff --git a/xban2/importers/minetest.lua b/xban2/importers/minetest.lua
new file mode 100644
index 0000000..e19c3c6
--- /dev/null
+++ b/xban2/importers/minetest.lua
@@ -0,0 +1,29 @@
+
+function xban.importers.minetest()
+ local f, e = io.open(minetest.get_worldpath().."/ipban.txt")
+ if not f then
+ return false, "Unable to open `ipban.txt': "..e
+ end
+ for line in f:lines() do
+ local ip, name = line:match("([^|]+)%|(.+)")
+ if ip and name then
+ local entry
+ entry = xban.find_entry(ip, true)
+ entry.banned = true
+ entry.reason = "Banned in `ipban.txt'"
+ entry.names[name] = true
+ entry.names[ip] = true
+ entry.time = os.time()
+ entry.expires = nil
+ entry.source = "xban:importer_minetest"
+ table.insert(entry.record, {
+ source = entry.source,
+ reason = entry.reason,
+ time = entry.time,
+ expires = nil,
+ })
+ end
+ end
+ f:close()
+ return true
+end
diff --git a/xban2/importers/v1.lua b/xban2/importers/v1.lua
new file mode 100644
index 0000000..a3722c7
--- /dev/null
+++ b/xban2/importers/v1.lua
@@ -0,0 +1,33 @@
+
+function xban.importers.v1()
+ local f, e = io.open(minetest.get_worldpath().."/players.iplist")
+ if not f then
+ return false, "Unable to open `players.iplist': "..e
+ end
+ for line in f:lines() do
+ local list = line:split("|")
+ if #list >= 2 then
+ local banned = (list[1]:sub(1, 1) == "!")
+ local entry
+ entry = xban.find_entry(list[1], true)
+ entry.banned = banned
+ for _, name in ipairs(list) do
+ entry.names[name] = true
+ end
+ if banned then
+ entry.reason = "Banned in `players.iplist'"
+ entry.time = os.time()
+ entry.expires = nil
+ entry.source = "xban:importer_v1"
+ table.insert(entry.record, {
+ source = entry.source,
+ reason = entry.reason,
+ time = entry.time,
+ expires = nil,
+ })
+ end
+ end
+ end
+ f:close()
+ return true
+end
diff --git a/xban2/importers/v2.lua b/xban2/importers/v2.lua
new file mode 100644
index 0000000..fd29966
--- /dev/null
+++ b/xban2/importers/v2.lua
@@ -0,0 +1,35 @@
+
+function xban.importers.v2()
+ return pcall(function()
+ local f, e = io.open(minetest.get_worldpath().."/players.iplist.v2")
+ if not f then
+ error("Unable to open `players.iplist.v2': "..e)
+ end
+ local text = f:read("*a")
+ f:close()
+ local db = minetest.deserialize(text)
+ for _, e in ipairs(db) do
+ for name in pairs(e.names) do
+ local entry = xban.find_entry(name, true)
+ if entry.source ~= "xban:importer_v2" then
+ for nm in pairs(e.names) do
+ entry.names[nm] = true
+ end
+ if e.banned then
+ entry.banned = true
+ entry.reason = e.banned
+ entry.source = "xban:importer_v2"
+ entry.time = e.time
+ entry.expires = e.expires
+ table.insert(entry.record, {
+ source = entry.source,
+ reason = entry.reason,
+ time = entry.time,
+ expires = entry.expires,
+ })
+ end
+ end
+ end
+ end
+ end)
+end
diff --git a/xban2/init.lua b/xban2/init.lua
new file mode 100644
index 0000000..81818a8
--- /dev/null
+++ b/xban2/init.lua
@@ -0,0 +1,331 @@
+
+xban = { MP = minetest.get_modpath(minetest.get_current_modname()) }
+
+dofile(xban.MP.."/serialize.lua")
+
+local db = { }
+local tempbans = { }
+
+local DEF_SAVE_INTERVAL = 300 -- 5 minutes
+local DEF_DB_FILENAME = minetest.get_worldpath().."/xban.db"
+
+local DB_FILENAME = minetest.setting_get("xban.db_filename")
+local SAVE_INTERVAL = tonumber(
+ minetest.setting_get("xban.db_save_interval")) or DEF_SAVE_INTERVAL
+
+if (not DB_FILENAME) or (DB_FILENAME == "") then
+ DB_FILENAME = DEF_DB_FILENAME
+end
+
+local function make_logger(level)
+ return function(text, ...)
+ minetest.log(level, "[xban] "..text:format(...))
+ end
+end
+
+local ACTION = make_logger("action")
+local INFO = make_logger("info")
+local WARNING = make_logger("warning")
+local ERROR = make_logger("error")
+
+local unit_to_secs = {
+ s = 1, m = 60, h = 3600,
+ D = 86400, W = 604800, M = 2592000, Y = 31104000,
+ [""] = 1,
+}
+
+local function parse_time(t) --> secs
+ local secs = 0
+ for num, unit in t:gmatch("(%d+)([smhDWMY]?)") do
+ secs = secs + (tonumber(num) * (unit_to_secs[unit] or 1))
+ end
+ return secs
+end
+
+function xban.find_entry(player, create) --> entry, index
+ for index, e in ipairs(db) do
+ for name in pairs(e.names) do
+ if name == player then
+ return e, index
+ end
+ end
+ end
+ if create then
+ print(("Created new entry for `%s'"):format(player))
+ local e = {
+ names = { [player]=true },
+ banned = false,
+ record = { },
+ }
+ table.insert(db, e)
+ return e, #db
+ end
+ return nil
+end
+
+function xban.get_info(player) --> ip_name_list, banned, last_record
+ local e = xban.find_entry(player)
+ if not e then
+ return nil, "No such entry"
+ end
+ return e.names, e.banned, e.record[#e.record]
+end
+
+function xban.ban_player(player, source, expires, reason) --> bool, err
+ local e = xban.find_entry(player, true)
+ local rec = {
+ source = source,
+ time = os.time(),
+ expires = expires,
+ reason = reason,
+ }
+ table.insert(e.record, rec)
+ e.names[player] = true
+ local pl = minetest.get_player_by_name(player)
+ if pl then
+ local ip = minetest.get_player_ip(player)
+ if ip then
+ e.names[ip] = true
+ end
+ e.last_pos = pl:getpos()
+ end
+ e.reason = reason
+ e.time = rec.time
+ e.expires = expires
+ e.banned = true
+ local msg
+ local date = (expires and os.date("%c", expires)
+ or "the end of time")
+ if expires then
+ table.insert(tempbans, e)
+ msg = ("Banned: Expires: %s, Reason: %s"):format(date, reason)
+ else
+ msg = ("Banned: Reason: %s"):format(reason)
+ end
+ for nm in pairs(e.names) do
+ minetest.kick_player(nm, msg)
+ end
+ ACTION("%s bans %s until %s for reason: %s", source, player,
+ date, reason)
+ ACTION("Banned Names/IPs: %s", table.concat(e.names, ", "))
+ return true
+end
+
+function xban.unban_player(player, source) --> bool, err
+ local e = xban.find_entry(player)
+ if not e then
+ return nil, "No such entry"
+ end
+ local rec = {
+ source = source,
+ time = os.time(),
+ reason = "Unbanned",
+ }
+ table.insert(e.record, rec)
+ e.banned = false
+ e.reason = nil
+ e.expires = nil
+ e.time = nil
+ ACTION("%s unbans %s", source, player)
+ ACTION("Unbanned Names/IPs: %s", table.concat(e.names, ", "))
+ return true
+end
+
+function xban.get_record(player)
+ local e = xban.find_entry(player)
+ if not e then
+ return nil, ("No entry for `%s'"):format(player)
+ elseif (not e.record) or (#e.record == 0) then
+ return nil, ("`%s' has no ban records"):format(player)
+ end
+ local record = { }
+ for _, rec in ipairs(e.record) do
+ local msg = rec.reason or "No reason given."
+ if rec.expires then
+ msg = msg..(", Expires: %s"):format(os.date("%c", e.expires))
+ end
+ if rec.source then
+ msg = msg..", Source: "..rec.source
+ end
+ table.insert(record, ("[%s]: %s"):format(os.date("%c", e.time), msg))
+ end
+ local last_pos
+ if e.last_pos then
+ last_pos = ("User was last seen at %s"):format(
+ minetest.pos_to_string(e.last_pos))
+ end
+ return record, last_pos
+end
+
+minetest.register_on_prejoinplayer(function(name, ip)
+ local e = xban.find_entry(name) or xban.find_entry(ip)
+ if not e then return end
+ if e.banned then
+ local date = (e.expires and os.date("%c", e.expires)
+ or "the end of time")
+ return ("Banned: Expires: %s, Reason: %s"):format(
+ date, e.reason)
+ end
+end)
+
+minetest.register_on_joinplayer(function(player)
+ local name = player:get_player_name()
+ local e = xban.find_entry(name)
+ local ip = minetest.get_player_ip(name)
+ if not e then
+ if ip then
+ e = xban.find_entry(ip, true)
+ else
+ return
+ end
+ end
+ e.names[name] = true
+ if ip then
+ e.names[ip] = true
+ end
+ e.last_seen = os.time()
+end)
+
+minetest.register_chatcommand("xban", {
+ description = "XBan a player",
+ params = "<player> <reason>",
+ privs = { ban=true },
+ func = function(name, params)
+ local plname, reason = params:match("(%S+)%s+(.+)")
+ if not (plname and reason) then
+ return false, "Usage: /xban <player> <reason>"
+ end
+ xban.ban_player(plname, name, nil, reason)
+ return true, ("Banned %s."):format(plname)
+ end,
+})
+
+minetest.register_chatcommand("xtempban", {
+ description = "XBan a player temporarily",
+ params = "<player> <time> <reason>",
+ privs = { ban=true },
+ func = function(name, params)
+ local plname, time, reason = params:match("(%S+)%s+(%S+)%s+(.+)")
+ if not (plname and time and reason) then
+ return false, "Usage: /xtempban <player> <time> <reason>"
+ end
+ time = parse_time(time)
+ if time < 60 then
+ return false, "You must ban for at least 60 seconds."
+ end
+ local expires = os.time() + time
+ xban.ban_player(plname, name, expires, reason)
+ return true, ("Banned %s until %s."):format(plname, os.date("%c", expires))
+ end,
+})
+
+minetest.register_chatcommand("xunban", {
+ description = "XUnBan a player",
+ params = "<player_or_ip>",
+ privs = { ban=true },
+ func = function(name, params)
+ local plname = params:match("%S+")
+ if not plname then
+ minetest.chat_send_player(name,
+ "Usage: /xunban <player_or_ip>")
+ return
+ end
+ local ok, e = xban.unban_player(plname, name)
+ return ok, ok and ("Unbanned %s."):format(plname) or e
+ end,
+})
+
+minetest.register_chatcommand("xban_record", {
+ description = "Show the ban records of a player",
+ params = "<player_or_ip>",
+ privs = { ban=true },
+ func = function(name, params)
+ local plname = params:match("%S+")
+ if not plname then
+ return false, "Usage: /xban_record <player_or_ip>"
+ end
+ local record, last_pos = xban.get_record(plname)
+ if not record then
+ local err = last_pos
+ minetest.chat_send_player(name, "[xban] "..err)
+ return
+ end
+ for _, e in ipairs(record) do
+ minetest.chat_send_player(name, "[xban] "..e)
+ end
+ if last_pos then
+ minetest.chat_send_player(name, "[xban] "..last_pos)
+ end
+ return true, "Record listed."
+ end,
+})
+
+local function check_temp_bans()
+ minetest.after(60, check_temp_bans)
+ local to_rm = { }
+ local now = os.time()
+ for i, e in ipairs(tempbans) do
+ if e.expires and (e.expires <= now) then
+ table.insert(to_rm, i)
+ e.banned = false
+ e.expires = nil
+ e.reason = nil
+ e.time = nil
+ end
+ end
+ for _, i in ipairs(to_rm) do
+ table.remove(tempbans, i)
+ end
+end
+
+local function save_db()
+ minetest.after(SAVE_INTERVAL, save_db)
+ local f, e = io.open(DB_FILENAME, "wt")
+ db.timestamp = os.time()
+ if f then
+ local ok, err = f:write(xban.serialize(db))
+ if not ok then
+ WARNING("Unable to save database: %s", err)
+ end
+ else
+ WARNING("Unable to save database: %s", e)
+ end
+ if f then f:close() end
+ return
+end
+
+local function load_db()
+ local f, e = io.open(DB_FILENAME, "rt")
+ if not f then
+ WARNING("Unable to load database: %s", e)
+ return
+ end
+ local cont = f:read("*a")
+ if not cont then
+ WARNING("Unable to load database: %s", "Read failed")
+ return
+ end
+ local t = minetest.deserialize(cont)
+ if not t then
+ WARNING("Unable to load database: %s",
+ "Deserialization failed")
+ return
+ end
+ db = t
+ tempbans = { }
+ for _, entry in ipairs(db) do
+ if entry.banned and entry.expires then
+ table.insert(tempbans, entry)
+ end
+ end
+end
+
+minetest.register_on_shutdown(save_db)
+minetest.after(SAVE_INTERVAL, save_db)
+load_db()
+xban.db = db
+
+minetest.after(1, check_temp_bans)
+
+dofile(xban.MP.."/dbimport.lua")
+dofile(xban.MP.."/gui.lua")
diff --git a/xban2/serialize.lua b/xban2/serialize.lua
new file mode 100644
index 0000000..c159141
--- /dev/null
+++ b/xban2/serialize.lua
@@ -0,0 +1,31 @@
+
+local function repr(x)
+ if type(x) == "string" then
+ return ("%q"):format(x)
+ else
+ return tostring(x)
+ end
+end
+
+local function my_serialize_2(t, level)
+ level = level or 0
+ local lines = { }
+ local indent = ("\t"):rep(level)
+ for k, v in pairs(t) do
+ local typ = type(v)
+ if typ == "table" then
+ table.insert(lines,
+ indent..("[%s] = {\n"):format(repr(k))
+ ..my_serialize_2(v, level + 1).."\n"
+ ..indent.."},")
+ else
+ table.insert(lines,
+ indent..("[%s] = %s,"):format(repr(k), repr(v)))
+ end
+ end
+ return table.concat(lines, "\n")
+end
+
+function xban.serialize(t)
+ return "return {\n"..my_serialize_2(t, 1).."\n}"
+end